C -------------------------------------- SUBROUTINE TIMEIN(HOUR,MINUTE,SECOND) C -------------------------------------- C THIS PROGRAM GETS THE TIME FROM TT: C IN RT-11 FORMAT (EITHER HH:MM:SS OR C HH:MM), AND RETURNS THE VALIDATED C INTEGER RESULTS TO THE CALLER. C GREG L. ADAMS (DAASE 2-5-4) C DEPARTMENT OF NATIONAL DEFENCE C ROOM W237, BUILDING 155 C C.F.B. OTTAWA (N) C OTTAWA ONTARIO C (613) 993-9624 C -------------------------------------- C DATA DEFINITION C -------------------------------------- INTEGER*2 I !GENERAL PURPOSE COUNTER. INTEGER*2 HOUR !HOUR (0 TO 23). INTEGER*2 MINUTE !MINUTE (0 TO 59). INTEGER*2 SECOND !SECOND (0 TO 59) INTEGER*2 COLIN1 !POSITION OF 1ST COLIN IN TIME STRING INTEGER*2 COLIN2 !POSITION OF 2ND COLIN IN TIME STRING LOGICAL*1 TIME(09) !CHAR STRING TIME FROM TT: LOGICAL*1 ERROR !GENERAL PURPOSE ERROR FLAG. LOGICAL*1 BADVAL !LIMIT COMPARISON FUNCTION. C -------------------------------------- $PAGE C -------------------------------------- C MAIN PROCEDURE C -------------------------------------- 1 CONTINUE !HERE ON RESTART. GET-THE-TIME-STRING-FROM-TT PAD-THE-TIME-WITH-SECONDS-IF-NOT-INPUT-BY-THE-USER DECODE-THE-TIME-INTO-INTEGER VALIDATE-THE-INTEGER-TIME-VALUES-OBTAINED RETURN !WHEN THE TIME IS VALID TO GET-THE-TIME-STRING-FROM-TT TYPE 100 100 FORMAT(/'$TIME? ') CALL GETSTR(5,TIME,9,ERROR) IF (ERROR) TRY-AGAIN FIN TO PAD-THE-TIME-WITH-SECONDS-IF-NOT-INPUT-BY-THE-USER COLIN1=INDEX(TIME,':') IF (BADVAL(COLIN1,2,3)) TRY-AGAIN REPEAT WHILE (COLIN2.EQ.0) COLIN2=INDEX(TIME,':',COLIN1+1) IF (COLIN2.EQ.0) CALL CONCAT(TIME,':00',TIME,8,ERROR) IF (ERROR) TRY-AGAIN FIN FIN FIN $PAGE TO DECODE-THE-TIME-INTO-INTEGER SELECT (LEN(TIME)) (5) DECODE(5,111,TIME,ERR=1000) HOUR,MINUTE,SECOND (6) SELECT (COLIN1) (2) SELECT (COLIN2) (4) DECODE(6,112,TIME,ERR=1000) HOUR,MINUTE,SECOND (5) DECODE(6,121,TIME,ERR=1000) HOUR,MINUTE,SECOND (OTHERWISE) TRY-AGAIN FIN FIN (3) DECODE(6,211,TIME,ERR=1000) HOUR,MINUTE,SECOND FIN FIN (7) SELECT (COLIN1) (2) DECODE(7,122,TIME,ERR=1000) HOUR,MINUTE,SECOND (3) SELECT (COLIN2) (5) DECODE(7,212,TIME,ERR=1000) HOUR,MINUTE,SECOND (6) DECODE(7,221,TIME,ERR=1000) HOUR,MINUTE,SECOND (OTHERWISE) TRY-AGAIN FIN FIN FIN FIN (8) DECODE(8,222,TIME,ERR=1000) HOUR,MINUTE,SECOND (OTHERWISE) TRY-AGAIN FIN 111 FORMAT(I1,1X,I1,1X,I1) 112 FORMAT(I1,1X,I1,1X,I2) 121 FORMAT(I1,1X,I2,1X,I1) 122 FORMAT(I1,1X,I2,1X,I2) 211 FORMAT(I2,1X,I1,1X,I1) 212 FORMAT(I2,1X,I1,1X,I2) 221 FORMAT(I2,1X,I2,1X,I1) 222 FORMAT(I2,1X,I2,1X,I2) FIN $PAGE TO VALIDATE-THE-INTEGER-TIME-VALUES-OBTAINED IF (BADVAL(SECOND,0,59)) TRY-AGAIN IF (BADVAL(MINUTE,0,59)) TRY-AGAIN IF (BADVAL(HOUR,0,23)) TRY-AGAIN FIN TO TRY-AGAIN 1000 TYPE 1010 1010 FORMAT(' DATIME-I-Bad time data!'/' FORMAT IS "HH:MM:SS"') GO TO 1 FIN END