how to increment days according to year & month

Hiii i have a file with data as shown below:
a.dat:

   RAO 1900  2  7  0  0  0.00  10.8000  76.8000  10.0   0  0.00   0  6.00  0.00  0.00   0  0.00  6.00   0   NULL
   LEE 1901  2 15  0  0  0.00  26.0000 100.0000   0.0   0  0.00   0  0.00  0.00  0.00   0  6.00  6.00   0   NULL
   RAO 1901  4 27  0  0  0.00  12.0000  75.0000  10.0   0  0.00   0  5.00  0.00  0.00   0  0.00  5.00   0   NULL
   SSR 1901 12  1  0  0  0.00  37.8000  66.2000  14.0   0  0.00   0  4.60  0.00  0.00   0  0.00  4.60   0   NULL
   SSR 1902  4 17 21 10  0.00  40.0000  71.0000  30.0   0  0.00   0  5.80  0.00  5.90   0  5.70  5.90   0   NULL
   SSR 1902  8 12 17 16  0.00  39.5000  68.5000  35.0   0  0.00   0  6.00  0.00  6.20   0  5.90  6.20   0   NULL
   BDA 1902  8 22  3  0  0.00  40.0000  77.0000  60.0   0  0.00   0  0.00  0.00  0.00   0  8.60  8.60   0   NULL
   SIG 1902  8 22  3  1  0.00  39.8000  76.2000  40.0   0  0.00   0  0.00  0.00  0.00   0  8.10  8.10   1   NULL
   SIG 1902  8 30 21 50  0.00  37.0000  71.0000 200.0   0  0.00   0  0.00  0.00  0.00   0  7.70  7.70   0   NULL
   SSR 1902  9 20  6 32  0.00  38.5000  67.0000  40.0   0  0.00   0  6.20  0.00  6.30   0  6.10  6.30   0   NULL
   SSR 1902 10  6  9 15  0.00  36.5000  70.5000 200.0   0  0.00   0  7.20  0.00  6.50   0  7.10  7.20   0   NULL
   SSR 1902 12  4 22 18  0.00  37.8000  65.5000  20.0   0  0.00   0  4.90  0.00  0.00   0  0.00  4.90   0   NULL
   RAO 1903  1 14  0  0  0.00  24.0000  70.0000  10.0   0  0.00   0  6.00  0.00  0.00   0  0.00  6.00   0   NULL
   SSR 1903  1 20  8 24  0.00  37.0000  71.0000  30.0   0  0.00   0  5.50  0.00  0.00   0  0.00  5.50   0   NULL
   SSR 1903  4 19 13 25  0.00  37.0000  71.0000 160.0   0  0.00   0  6.90  0.00  6.20   0  6.90  6.90   0   NULL
   SSR 1903  5 16  6 18  0.00   5.3600  92.5000  11.0   0  0.00   0  4.50  0.00  0.00   0  0.00  4.50   0   NULL
   RAO 1903  5 17  0  0  0.00  23.0000  80.0000  10.0   0  0.00   0  4.30  0.00  0.00   0  0.00  4.30   0   NULL
   SSR 1903 10 19  3 10  0.00  39.3000  74.5000  25.0   0  0.00   0  6.20  0.00  0.00   0  0.00  6.20   0   NULL
   SSR 1904  2  4 21  0  0.00  40.0000  78.0000  30.0   0  0.00   0  6.10  0.00  5.90   0  6.20  6.20   0   NULL

The output should be as follows
b.dat:

  RAO 1900  2   38  0  0  0.00  10.8000  76.8000  10.0   0  0.00   0  6.00  0.00  0.00   0  0.00  6.00   0   NULL
   LEE 1901  2  411  0  0  0.00  26.0000 100.0000   0.0   0  0.00   0  0.00  0.00  0.00   0  6.00  6.00   0   NULL
   RAO 1901  4  482  0  0  0.00  12.0000  75.0000  10.0   0  0.00   0  5.00  0.00  0.00   0  0.00  5.00   0   NULL
   SSR 1901 12  700   0  0  0.00  37.8000  66.2000  14.0   0  0.00   0  4.60  0.00  0.00   0  0.00  4.60   0   NULL
   SSR 1902  4  837 21 10  0.00  40.0000  71.0000  30.0   0  0.00   0  5.80  0.00  5.90   0  5.70  5.90   0   NULL
   SSR 1902  8  954 17 16  0.00  39.5000  68.5000  35.0   0  0.00   0  6.00  0.00  6.20   0  5.90  6.20   0   NULL
   BDA 1902  8  964  3  0  0.00  40.0000  77.0000  60.0   0  0.00   0  0.00  0.00  0.00   0  8.60  8.60   0   NULL
   SIG 1902  8  964  3  1  0.00  39.8000  76.2000  40.0   0  0.00   0  0.00  0.00  0.00   0  8.10  8.10   1   NULL
   SIG 1902  8  972 21 50  0.00  37.0000  71.0000 200.0   0  0.00   0  0.00  0.00  0.00   0  7.70  7.70   0   NULL
   SSR 1902  9  993  6 32  0.00  38.5000  67.0000  40.0   0  0.00   0  6.20  0.00  6.30   0  6.10  6.30   0   NULL
   SSR 1902 10 1009 6  9 15  0.00  36.5000  70.5000 200.0   0  0.00   0  7.20  0.00  6.50   0  7.10  7.20   0   NULL
   SSR 1902 12 1068 22 18  0.00  37.8000  65.5000  20.0   0  0.00   0  4.90  0.00  0.00   0  0.00  4.90   0   NULL
   RAO 1903  1 1109 0  0  0.00  24.0000  70.0000  10.0   0  0.00   0  6.00  0.00  0.00   0  0.00  6.00   0   NULL
   SSR 1903  1 1115  8 24  0.00  37.0000  71.0000  30.0   0  0.00   0  5.50  0.00  0.00   0  0.00  5.50   0   NULL
   SSR 1903  4 1204 13 25  0.00  37.0000  71.0000 160.0   0  0.00   0  6.90  0.00  6.20   0  6.90  6.90   0   NULL
   SSR 1903  5 1231  6 18  0.00   5.3600  92.5000  11.0   0  0.00   0  4.50  0.00  0.00   0  0.00  4.50   0   NULL
   RAO 1903  5 1232  0  0  0.00  23.0000  80.0000  10.0   0  0.00   0  4.30  0.00  0.00   0  0.00  4.30   0   NULL
   SSR 1903 10 1387  3 10  0.00  39.3000  74.5000  25.0   0  0.00   0  6.20  0.00  0.00   0  0.00  6.20   0   NULL
   SSR 1904  2 1495 21  0  0.00  40.0000  78.0000  30.0   0  0.00   0  6.10  0.00  5.90   0  6.20  6.20   0   NULL

i.e. Based on on year & month date must be incremented. For example: for 1901 it 365+31(january)+15 & so on etc...
Help me out if any idea

Hi Reva,

#!/bin/ksh
let first_year=`head -1 a.dat | awk '{print $2}'`
cat a.dat | while read abc
do
 f_str=`echo $abc | awk '{print $1, $2, $3}'`
 b_str=`echo $abc | awk '{print $5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21}'`
 let year_num=`echo $abc | awk '{print $2}'`
        let month_num=`echo $abc | awk '{print $3}'`
        let month_day=`echo $abc | awk '{print $4}'`
 let diff_year=`echo "$year_num - $first_year" | bc`
 let out_year=`echo "$diff_year * 365" | bc`
        if [ $month_num -eq 1 ]
        then
                let out_month_day=`echo "$month_day + $out_year" | bc`
        elif [ $month_num -eq 2 ]
        then
                let out_month_day=`echo "$out_year + 31 + $month_day" | bc`
        elif [ $month_num -eq 3 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + $month_day" | bc`
        elif [ $month_num -eq 4 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + $month_day" | bc `
        elif [ $month_num -eq 5 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + 30 + $month_day" | bc`
        elif [ $month_num -eq 6 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + 30 + 31 + $month_day" | bc`
        elif [ $month_num -eq 7 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + 30 + 31 + 30 + $month_day" | bc`
        elif [ $month_num -eq 8 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + 30 + 31 + 30 + 31 + $month_day" | bc`
        elif [ $month_num -eq 9 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + $month_day" | bc`
        elif [ $month_num -eq 10 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + $month_day" | bc`
        elif [ $month_num -eq 11 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + $month_day" | bc`
        elif [ $month_num -eq 12 ]
        then
                let out_month_day=`echo "$out_year + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + $month_day" | bc`
        fi
        echo " ${f_str} ${out_month_day} ${b_str}" >> b.dat
 
 
done

Thanks so much its working..Can you please explain me the code ..I understood the logic but the unix code i didnt understand properly.explain with steps..
thank you....

If you want to use perl

my @mon_array = (0,31,28,31,30,31,30,31,31,30,31,30,31);
my $leap = 0; # ==> not a leap year
open my $fh ,'<' , "abc.txt" || die "$!";
while(<$fh>){
        chomp;
        my @cols = split("\t");  # change to the delimiter if needed
        my $year = $cols[1];

        $leap = 1 if ((!($year % 100) && !($year % 400)) || (($year % 100) && !($year % 4)));
        my $num_of_days_from_prev_months = 0;
        for my $i (1 .. ($cols[2]-1)){
                $num_of_days_from_prev_months += ($i ==2 ) ? (($leap == 1) ? 29 : 28) : $mon_array[$i];
        }
        my $final_days = ($year-1900) * 365 + $num_of_days_from_prev_months + $cols[3];
        for(my $i=0;$i<=$#cols;$i++){
                ($i ==3) ? print "$final_days\t" : print "$cols[$i]\t";
        }
        print "\n";
}
close $fh;

HTH,
PL