PROGRAM TOLADD IMPLICIT DOUBLE PRECISION (A-H,K-Z) LOGICAL TEST1,TEST2 CHARACTER*30 INFIL,OUTFIL CHARACTER*80 CARDR CHARACTER*1 YN CHARACTER*2 AD1,AM1,AM2 CHARACTER*3 AD2 CHARACTER*7 AS1,AS2 INTEGER*4 LD,LM,LND,LNM TEST1=.FALSE. TEST2=.FALSE. 5 PRINT *, ' NAME OF THE INPUT BLUE BOOK DECK ' PRINT *, ' WITH *80* RECORDS WHICH THE SHIFTS ' PRINT *, ' WILL BE ADDED TOO. ' PRINT *, ' TYPE NAME : ' READ(5,10) INFIL 10 FORMAT(A30) OPEN(2,STATUS='OLD',FILE=INFIL,ERR=900) GO TO 100 900 PRINT *, ' FILE DOES NOT EXIST, DO YOU WANT TO ' PRINT *, ' TRY AGAIN (Y/N) ' PRINT *, ' TYPE ANSWER : ' READ(5,15) YN 15 FORMAT(A1) IF((YN.EQ.'Y').OR.(YN.EQ.'y')) THEN GO TO 5 ELSE GO TO 9000 ENDIF 100 PRINT *, ' NAME OF THE OUTPUT BLUE BOOK FILE ' PRINT *, ' TYPE NAME : ' READ(5,10) OUTFIL OPEN(3,STATUS='NEW',FILE=OUTFIL,ERR=901) GO TO 200 901 PRINT *, ' FILE ALREADY EXIST, DO YOU WANT TO ' PRINT *, ' TO WRITE OVER IT (Y/N) ' PRINT *, ' TYPE ANSWER : ' READ(5,15) YN IF((YN.EQ.'Y').OR.(YN.EQ.'y')) THEN OPEN(3,STATUS='UNKNOWN',FILE=OUTFIL) ELSE GO TO 100 ENDIF 200 PRINT *, ' ENTER THE THE SHIFT IN SECONDS FOR THE ' PRINT *, ' LATITUDE IE: 52.22222 OR -52.22222 ' PRINT *, ' TYPE SHIFT : ' 202 READ(5,20) LATSH 20 FORMAT(F9.5) IF(DABS(LATSH).GE.60.D0) THEN PRINT *, ' THE VALUE OF THE SHIFT IS GREATER THAN ' PRINT *, ' 60 SECONDS ' PRINT *, ' PLEASE RE-ENTER THE SHIFT VALUE ' GO TO 202 ENDIF PRINT *, ' ENTER THE SHIFT IN SECONDS FOR THE ' PRINT *, ' LONGITUDE IE: 52.22222 OR -52.22222 ' PRINT *, ' TYPE SHIFT : ' 205 READ(5,20) LONSH IF(DABS(LONSH).GE.60.D0) THEN PRINT *, ' THE VALUE OF THE SHIFT IS GREATER THAN ' PRINT *, ' 60 SECONDS ' PRINT *, ' PLEASE RE-ENTER THE SHIFT VALUE ' GO TO 205 ENDIF PRINT *, ' PROGRAM IS NOW EXECUTING ' PRINT *, ' ' PRINT *, ' ' IF(LATSH.LT.0.D0) THEN TEST1=.TRUE. ENDIF IF(LONSH.LT.0.D0) THEN TEST2=.TRUE. ENDIF *** DO THE COMPUTATIONS ******** 300 READ(2,40,END=600) CARDR 40 FORMAT(A80) IF(CARDR(7:10).NE.'*80*') THEN WRITE(3,40) CARDR GO TO 300 ENDIF READ(CARDR,45) LD,LM,LSEC,LND,LNM,LNSEC 45 FORMAT(T45,I2,I2,F7.5,T57,I3,I2,F7.5) *** ADD SHIFT TO LATITUDE ***** IF(TEST1) THEN LSEC=LSEC+60.D0 LSEC=LSEC-DABS(LATSH) IF(LM.EQ.0) THEN LD=LD-1 LM=LM+59 ELSE LM=LM-1 ENDIF ELSE LSEC=LSEC + LATSH ENDIF IF(LSEC.GE.60.D0) THEN LSEC=LSEC - 60.D0 LM= LM + 1 ENDIF IF(LM.GE.60) THEN LM=LM - 60 LD=LD + 1 ENDIF *** ADD SHIFT TO LONGITUDE ******* IF(TEST2) THEN LNSEC=LNSEC+60.D0 LNSEC=LNSEC-DABS(LONSH) IF(LNM.EQ.0) THEN LND=LND-1 LNM=LNM+59 ELSE LNM=LNM-1 ENDIF ELSE LNSEC=LNSEC + LONSH ENDIF IF(LNSEC.GE.60.D0) THEN LNSEC=LNSEC - 60.D0 LNM=LNM + 1 ENDIF IF(LNM.GE.60) THEN LNM=LNM - 60 LND=LND + 1 ENDIF *** WRITE THE VALUES TO THE OUTPUT FILE ILS1=LSEC*100000.D0 + 0.499999 ILNS1=LNSEC*100000.D0 + 0.499999 WRITE(AD1,4) LD WRITE(AM1,4) LM WRITE(AS1,2) ILS1 WRITE(AD2,3) LND WRITE(AM2,4) LNM WRITE(AS2,2) ILNS1 4 FORMAT(I2.2) 2 FORMAT(I7.7) 3 FORMAT(I3.3) CARDR(45:46)=AD1 CARDR(47:48)=AM1 CARDR(49:55)=AS1 CARDR(57:59)=AD2 CARDR(60:61)=AM2 CARDR(62:68)=AS2 WRITE(3,40) CARDR GO TO 300 9000 CONTINUE 600 CLOSE(UNIT=2,STATUS='KEEP') CLOSE(UNIT=3,STATUS='KEEP') PRINT *, ' END OF PROGRAM - ALOHA ' RETURN END