c c job to convert the column format used for this web page into c 10 column TASK-2000 format for those people who may prefer it. c the data values are put into channel 6 of the TASK file. c CHARACTER FILEIN*80,FILEOUT*80,CH80*80 C WRITE(6,*) WRITE(6,*) ' ENTER INPUT FILE NAME' READ(5,901) FILEIN 901 FORMAT(A) WRITE(6,*) WRITE(6,*) ' ENTER OUTPUT FILE NAME' READ(5,901) FILEOUT C OPEN(1,FILE=FILEIN,FORM='FORMATTED',STATUS='OLD',IOSTAT=ISTAT) IF(ISTAT.NE.0) WRITE(6,*) ' ERROR OPENING INPUT FILE 1' IF(ISTAT.NE.0) STOP C OPEN(2,FILE=FILEOUT,FORM='FORMATTED',STATUS='UNKNOWN', & IOSTAT=ISTAT) IF(ISTAT.NE.0) WRITE(6,*) ' ERROR OPENING OUTPUT FILE 2' IF(ISTAT.NE.0) STOP C C SKIP 14 HEADER LINES FROM INPUT FILE C DO 2 I=1,14 READ(1,901) CH80 2 CONTINUE C C WRITE 20 HEADER LINES TO TASK FILE C CH80=' ' DO 3 I=1,20 WRITE(2,905) CH80 905 FORMAT(A80) 3 CONTINUE C WRITE(6,*) 'ENTER FACTOR TO SCALE THE INPUT DATA' WRITE(6,*) 'E.G. IF INPUT IS IN METRES SUGGEST SCALE' WRITE(6,*) 'BY 100 TO CM' READ(5,*) FACTOR C IDUM1=0 1 READ(1,911,END=9) & IYEAR,IMON,IDAYM,IHOUR,IMIN,ISEC,VAL,IFLAG 911 FORMAT(I4,1X,I2,1X,I2,1X,I2,1X,I2,1X,I2,F12.3,I2) C C IFLAG WILL BE 1 FOR GOOD DATA AND 9 FOR MISSING DATA C IF(IFLAG.NE.1.AND.IFLAG.NE.9) THEN WRITE(6,*) 'BAD IFLAG = ',IFLAG STOP ENDIF C C CONVERT MONTH AND DAY-IN-MONTH TO JULIAN DAY C CALL DAYYEAR(IYEAR,IMON,IDAYM,IDAY) HOUR=FLOAT(IHOUR) + FLOAT(IMIN)/60. + FLOAT(ISEC)/3600. VAL=VAL*FACTOR C IDUM1=IDUM1+1 IDUM2=0 IF(IFLAG.NE.1) IDUM2=1 ZERO=0.0 WRITE(2,902) IDUM1,IDUM2, & IYEAR,IDAY,HOUR,VAL,ZERO,ZERO,ZERO,ZERO 902 FORMAT(I6,I2,I5,I4,F7.3,F8.2,F8.2,F8.2,F8.2,F8.2) C GOTO 1 C 9 CONTINUE C WRITE(6,*) 'NUMBER OF RECORDS ON OUTPUT FILE = ',IDUM1 C CLOSE(1) CLOSE(2) C STOP END subroutine dayyear(iyear,imon,idaym,iday) c save c dimension month(12) data month/31,28,31,30,31,30,31,31,30,31,30,31/ c if(iyear.le.1800) then write(6,*) 's/r dayyear invalid year =',iyear stop endif c month(2)=28 if(mod(iyear,4).eq.0) month(2) = 29 c 1900 was not a leap year if(iyear.eq.1900) month(2) = 28 c if(imon.lt.1.or.imon.gt.12) then write(6,*) 's/r dayyear invalid month =',imon stop endif if(idaym.lt.1.or.idaym.gt.month(imon)) then write(6,*) 's/r dayyear idaym and imon incompatible:', & idaym,imon stop endif c iday = idaym if(imon.eq.1) goto 1 c imon1 = imon - 1 do 2 i=1,imon1 iday = iday + month(i) 2 continue c 1 continue return end