SUBROUTINE CVTTIM(ATIM,IHR,IMN,ISC,MODE,ISW) C C C COMPONENT: CVTTIM C C DATE: 28-AUG-79 C C AUTHOR: GR JOHNSON C BATTELLE NORTHWEST C P O BOX 999 C RICHLAND WA 99352 C C SOURCE: FORTRAN IV-PLUS C C CALLER: FORTRAN IV-PLUS C C CALLING SEQUENCE: C C CALL CVTTIM(ATIM,IHR,IMN,ISC,MODE,ISW) C C ATIM = ASCII REPRESENTATION OF THE TIME (HH:MM:SS). C THE STRING MUST BE (WILL BE) TERMINATED BY AN C ASCII NULL CHARACTER. C C IHR,IMN,ISC C C = INTEGER REPRESENTATION OF THE TIME. C C MODE = INTEGER SPECIFYING THE CONVERSION MODE. C C 00 = 'ENCODE' (INTEGER TO ASCII) C 01 = 'DECODE' (ASCII TO INTEGER) C C ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. C C 00 = SUCCESS C -01 = SYNTAX ERROR C C C DESCRIPTION: C C "CVTTIM" CONVERTS AN ASCII REPRESENTATION OF THE SUPPLIED TIME C TO ITS INTEGER EQUIVALENTS, AND VICE-VERSA. THE STRING MUST BE (WILL C BE) TERMINATED BY AN ASCII NULL TERMINATOR. C C C PARAMETERS AND VARIABLES C PARAMETER EOS = 0 ! "END-OF-STRING" C BYTE ATIM(1) ! ASCII TIME INTEGER IHR,IMN,ISC ! INTEGER TIME INTEGER MODE ! CONVERSION MODE INTEGER ISW ! INTEGER STATUS WORD C C C ROUTE TO APPROPRIATE CONVERSION C ISW=0 IF(MODE.EQ.0) GO TO 10 IF(MODE.EQ.1) GO TO 20 GO TO 901 C C C CONVERT INTEGER ITIM TO ASCII ATIM C 10 IF(IHR.LT.0.OR.IHR.GE.24) GO TO 900 CALL ACNVT(IHR,ATIM(1),2,,'0') ATIM(3)=':' C IF(IMN.LT.0.OR.IMN.GE.60) GO TO 900 CALL ACNVT(IMN,ATIM(4),2,,'0') ATIM(6)=':' C IF(ISC.LT.0.OR.ISC.GE.60) GO TO 900 CALL ACNVT(ISC,ATIM(7),2,,'0') ATIM(9)=EOS GO TO 9999 C C C CONVERT ASCII ATIM TO INTEGER ITIM C 20 IPNT=1 ISC=0 C IHR=ICNVT(ATIM(IPNT),NCHR) IPNT=IPNT+NCHR IF(IHR.GE.24) GO TO 901 IF(ATIM(IPNT).NE.':') GO TO 901 IPNT=IPNT+1 C IMN=ICNVT(ATIM(IPNT),NCHR) IPNT=IPNT+NCHR IF(IMN.GE.60) GO TO 901 IF(ATIM(IPNT).EQ.EOS) GO TO 9999 IF(ATIM(IPNT).NE.':') GO TO 901 IPNT=IPNT+1 C ISC=ICNVT(ATIM(IPNT),NCHR) IPNT=IPNT+NCHR IF(ISC.GE.60) GO TO 901 IF(ATIM(IPNT).NE.EOS) GO TO 901 GO TO 9999 C C C PROCESS ERRORS C 900 DO 9001 IPNT=1,8 ATIM(IPNT)=' ' 9001 CONTINUE ATIM(IPNT)=EOS C 901 ISW=-1 C 9999 RETURN END