C C C ************************************** C * * C * SUBROUTINE TO WRITE SHIP'S LOG * C * * C ************************************** C SUBROUTINE SHPLOG(TLOG) COMMON/MISC1/ICAPV(5),M1,M2,DATE,DLN,BEARNG,NCAS(2),CMD,IG2,NPRIS, &IBELL COMMON/MISC2/NPROB,L5,L8,GASP,ITASK,SDATE,AFILE(4),CFILE(4),DTLSTH COMMON/ALPHA/ALPH(30) COMMON/TESTS1/TROM1,TROM2,TDISAB,TDEST,TWON,TLOST,TRESC,TALTOW, &TBOFF,TALERT,TLOOS,TBALEN,TALSD,TINTRD COMMON/TESTS2/TNEW,TTMOUT,TOVER,TSHLD,TBASLO,TSLFDS,TWARN,THELLO, &TBOSS INTEGER DLN,CMD,EDIT,ENTRY,ABORT,CANCEL,STOP,EXIT REAL*8 FDATE,INDATE LOGICAL TROM1,TROM2,TDISAB,TDEST,TWON,TLOST,TRESC,TALTOW,TBOFF, &TALERT,TNEW,TTMOUT,TOVER,TSHLD,TBASLO,TSLFDS,TWARN,THELLO,TLOOS, &TBALEN,TALSD,TINTRD,TEST,TLOG,TBOSS,TINSER,TEST1,TEDIT,TEST2,TFIND LOGICAL*1 ANS(2),ALPH,IMAGE(72),STR,DUMMY(8),BLA,BUFFER(72),DEL DATA BLA/1H /,LIST,EDIT,ENTRY,ABORT,CANCEL,STOP,EXIT/'LI','ED', &'EN','AB','CA','ST','EX'/ C IF(TLOG)GOTO 9 70 TYPE 71 71 FORMAT(/1X,'YOU SPECIFIED THAT NO LOG WAS TO BE KEPT') GOTO 50 9 IF(TDEST .OR. TDISAB)RETURN 10 TYPE 11 11 FORMAT(/1X,'CAPTAIN''S NOTES TO SHIP''S LOG') IF(.NOT.TWON .AND. .NOT.TTMOUT)GOTO 20 170 TYPE 171 171 FORMAT(/1X,'THIS IS YOUR FINAL CHANCE TO MAKE AN ENTRY INTO THE LO &G') 20 TYPE 21 21 FORMAT(/1X,'OPTION? ',$) 30 READ(5,31,ERR=20)IANS 31 FORMAT(A2) ENCODE(2,31,ANS,ERR=20)IANS CALL CAPMSK(ANS,2) DECODE(2,31,ANS,ERR=20)IANS TEDIT=.FALSE. IF(IANS.EQ.ENTRY)GOTO 120 IF(IANS.EQ.LIST)GOTO 1 IF(IANS.EQ.EDIT)GOTO 12 IF(IANS.EQ.ABORT .OR. IANS.EQ.CANCEL .OR. IANS.EQ.STOP)GOTO 50 40 TYPE 41 41 FORMAT(/1X,'OPTIONS AVAILABLE ARE:'/5X,'ABORT, CANCEL or STOP'/5X, &'LIST - To list entries so far'/5X,'ENTRY - To make a new log e &ntry'/5X,'EDIT - To edit or correct your previous entries') GOTO 20 50 TYPE 51 51 FORMAT(/1X,'*** COMMAND CANCELLED ***') RETURN 1 OPEN(UNIT=1,NAME=CFILE,TYPE='UNKNOWN') REWIND 1 60 TYPE 61 61 FORMAT(/1X,'** LISTING OF SHIP''S LOG **'/1X,'TO CONTINUE LISTING &HIT '//) 100 READ(1,91,END=110,ERR=50)IMAGE IF(IMAGE(1).EQ.ALPH(27))GOTO 80 CALL CROP(IMAGE,72) 90 TYPE 91,IMAGE 91 FORMAT(1X,72A1) GOTO 100 110 TYPE 111 111 FORMAT(/1X,'** END OF LOG ENTRIES **') IF(TEDIT)GOTO 16 5 CALL CLOSE(1) GOTO 20 80 READ(5,81,ERR=20)ANS 81 FORMAT(2A1) CALL CAPMSK(ANS,2) IF(ANS(1).EQ.ALPH(1) .OR. ANS(1).EQ.ALPH(3) .OR. ANS(1).EQ.ALPH(19 &))GOTO 5 GOTO 100 120 TYPE 121 121 FORMAT(/1X,'EACH LINE IS ENTERED IN THE LOG WHEN YOU HIT '/1X, &'TO END YOUR ENTRY, HIT TWICE MORE.'/) OPEN(UNIT=1,NAME=CFILE,TYPE='OLD',ACCESS='APPEND') TEST=.FALSE. 130 ENCODE(8,131,DUMMY,ERR=120)DATE 131 FORMAT(F7.1) 1000 WRITE(3,1001)DATE 1001 FORMAT(/1X,'** ENTRY MADE HERE IN CAPTAIN''S LOG - STARDATE:',F8.1 &/) DO 4 I=1,10 IMAGE(I)=BLA IF(I.LE.7)IMAGE(I)=DUMMY(I) 4 CONTINUE NT=0 140 TYPE 141,(IMAGE(I),I=1,10) 141 FORMAT(1X,10A1,$) 150 READ(5,151,ERR=150)(IMAGE(I),I=11,72) 151 FORMAT(62A1) DO 8 I=1,72 IF(IMAGE(I).NE.BLA)GOTO 7 8 CONTINUE NT=NT+1 IF(NT.EQ.1)GOTO 160 IMAGE(1)=ALPH(27) TEST=.TRUE. GOTO 160 7 IF(NT.EQ.1)NT=0 160 WRITE(1,91)IMAGE CALL BLANKS(IMAGE) IF(TEST)GOTO 110 GOTO 140 12 OPEN(UNIT=2,NAME='TEMP.MSG',TYPE='SCRATCH') REWIND 2 180 TYPE 181 181 FORMAT(/1X,'INSTRUCTIONS FOR EDIT MODE:'/1X,'1. CHANGE current lin &e by entering new line after "*".'/1X,'2. DELETE current line by e &ntering "D" after "*".'/1X,'3. INSERT new lines following current &line by entering "I".'/1X,'4. FETCH (FIND) a particular entry by e &ntering "F" followed by the'/4X,'stardate of the entry - eg. "F 60 &34.2"'/1X,'5. EXIT from edit mode by entering "EX" after "*".'/) OPEN(UNIT=1,NAME=CFILE,TYPE='UNKNOWN') TEDIT=.TRUE. TEST1=.TRUE. TFIND=.FALSE. TINSER=.FALSE. 14 CALL BLANKS(IMAGE) 28 CALL BLANKS(BUFFER) IF(TFIND)GOTO 290 IF(.NOT.TINSER)GOTO 190 TYPE 141,(BUFFER(I),I=1,10) GOTO 210 190 READ(1,91,END=110)IMAGE IF(TEST1 .AND. IMAGE(1).EQ.ALPH(27))TEST1=.FALSE. IF(TEST1 .OR. IMAGE(1).EQ.ALPH(27))GOTO 220 290 TYPE 91,IMAGE 200 TYPE 201 201 FORMAT(10X,'*',$) NT=0 TEST2=.FALSE. TFIND=.FALSE. 210 READ(5,211,ERR=200)NCHAR,(BUFFER(I),I=11,72) 211 FORMAT(Q,62A1) DO 17 I=1,10 BUFFER(I)=IMAGE(I) 17 CONTINUE IF(NCHAR.NE.0)GOTO 18 IF(.NOT.TINSER)GOTO 220 NT=NT+1 IF(NT.EQ.1)GOTO 14 TINSER=.FALSE. GOTO 190 18 IF(TINSER)GOTO 19 IF(BUFFER(11).EQ.ALPH(4) .AND. NCHAR.EQ.1)GOTO 190 IF(BUFFER(11).EQ.ALPH(9) .AND. NCHAR.EQ.1)TINSER=.TRUE. IF(NCHAR.EQ.2 .AND. BUFFER(11).EQ.ALPH(5) .AND. BUFFER(12).EQ.ALPH &(24))GOTO 240 IF(TINSER)GOTO 220 IF(BUFFER(11).NE.ALPH(6) .OR. BUFFER(12).NE.BLA .OR. NCHAR.GT.9)GO &TO 22 IF(NCHAR.LE.2)GOTO 270 DO 24 I=1,8 DUMMY(I)=BLA IF((BUFFER(I+12).AND."100).EQ."100)GOTO 280 DUMMY(I)=BUFFER(I+12) 24 CONTINUE DECODE(8,291,DUMMY,ERR=280)FDATE 291 FORMAT(A8) 25 TFIND=.TRUE. N=0 GOTO 240 270 TYPE 271 271 FORMAT(1X,'STARDATE OF ENTRY TO BE FOUND? ',$) READ(5,291,ERR=270)FDATE GOTO 25 280 TYPE 281 281 FORMAT(1X,'*** ILLEGAL STARDATE ***') GOTO 270 19 IF(NT.EQ.1)TEST2=.TRUE. IF(TEST2)GOTO 220 22 IF(NCHAR.GT.62)NCHAR=62 DO 13 I=11,10+NCHAR IF(BUFFER(I).NE.BLA)GOTO 230 13 CONTINUE 220 WRITE(2,91)IMAGE IF(.NOT.TINSER)GOTO 190 IF(.NOT.TEST2)GOTO 14 NT=0 TEST2=.FALSE. GOTO 22 230 WRITE(2,91)BUFFER IF(TINSER)GOTO 14 GOTO 190 240 WRITE(2,91)IMAGE 300 READ(1,91,END=27)IMAGE IF(.NOT.TFIND)GOTO 240 IF(IMAGE(1).EQ.ALPH(27))GOTO 240 IF(IMAGE(1).EQ.BLA .AND. IMAGE(2).EQ.BLA)GOTO 240 DO 26 I=1,8 DUMMY(I)=IMAGE(I+1) 26 CONTINUE DECODE(8,291,DUMMY)INDATE IF(INDATE.EQ.FDATE)GOTO 28 GOTO 240 27 IF(.NOT.TFIND)GOTO 250 N=N+1 IF(N.EQ.1)GOTO 16 TYPE 311 311 FORMAT(1X,'*** UNABLE TO LOCATE SPECIFIED STARDATE ***') TFIND=.FALSE. 250 TYPE 251 251 FORMAT(1X,'[EXIT]') 16 REWIND 1 REWIND 2 IF(TFIND)GOTO 300 260 READ(2,91,END=15)IMAGE WRITE(1,91)IMAGE GOTO 260 15 CALL CLOSE(2) GOTO 5 END