C***************************************************************************** C C Test of Timer Support Syslib Routines. C Importable Functions C C----------------------------------------------------------------------------- C C Program : TimerSupport/ Timer.For C Author : John Malcolmson C Date : June 1986 C Language : Fortran 77 C Note : Uses subroutines imported from both syslib and RTNS C libraries. C C***************************************************************************** C***************************************************************************** C C List of functions: C CVTTIM, GTIM, ICMKT, ISCHED, ISDTTM, ISLEEP, ITIMER, ITWAIT C IUNTIL, JTIME, MRKT, SECNDS, TIMASC, TIME, JJCVT, DATE C IDATE, DATE4Y, IWEEKD, IDCOMP (last five to added later) C C***************************************************************************** C-------------------------------- CVTTIM ------------------------------------- Function TstCvttim Integer*4 TstCvttim Integer*4 time Integer*2 hh,mm,ss,tt Call CenterString( '--- Testing CVTTIM ---\' ) Call WriteLn Call CenterString( 'Convert 2-word internal format to HH:MM:SS:TT\' ) Call WriteLn TstCvttim = 0 Time = -181141456 Call Cvttim( time, hh,mm,ss,tt ) IF (hh .ne. 14) THEN Call MtFail( 'HHtime', 1 ) Call Write2Int( 0, 10 ) Call Write2Int( hh, 10 ) Call WriteLn TstCvttim = TstCvttim + 2**1 END IF IF (mm .ne. 51) THEN Call MtFail( 'MMtime', 2 ) Call Write2Int( 0, 10 ) Call Write2Int( mm, 10 ) Call WriteLn TstCvttim = TstCvttim + 2**2 END IF IF (ss .ne. 15) THEN Call MtFail( 'SStime\', 3 ) Call Write2Int( 0, 10 ) Call Write2Int( ss, 10 ) Call WriteLn TstCvttim = TstCvttim + 2**3 END IF IF (tt .ne. 0) THEN Call MtFail( 'TTtime\', 4 ) Call Write2Int( 0, 10 ) Call Write2Int( tt, 10 ) Call WriteLn TstCvttim = TstCvttim + 2**4 END IF Time = 780140595 Call Cvttim( time, hh,mm,ss,tt ) IF (hh .ne. 15) THEN Call MtFail( 'HHtime', 5 ) Call Write2Int( 0, 10 ) Call Write2Int( hh, 10 ) Call WriteLn TstCvttim = TstCvttim + 2**5 END IF IF (mm .ne. 31) THEN Call MtFail( 'MMtime', 6 ) Call Write2Int( 0, 10 ) Call Write2Int( mm, 10 ) Call WriteLn TstCvttim = TstCvttim + 2**6 END IF IF (ss .ne. 44) THEN Call MtFail( 'SStime\', 7 ) Call Write2Int( 0, 10 ) Call Write2Int( ss, 10 ) Call WriteLn TstCvttim = TstCvttim + 2**7 END IF IF (tt .ne. 0) THEN Call MtFail( 'TTtime\', 8 ) Call Write2Int( 0, 10 ) Call Write2Int( tt, 10 ) Call WriteLn TstCvttim = TstCvttim + 2**8 END IF Call TestFail( TstCvttim ) Call CenterString( '--- Testing CVTTIM completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C----------------------------------- GTIM ------------------------------------ Function TstGtim Integer*4 TstGtim Integer*4 Time Integer*2 hh,mm,ss,tt Call CenterString( '--- Testing GTIM ---\' ) Call WriteLn Call CenterString( 'Gets internal format time of day\') Call WriteLn TstGtim = 0 Call Gtim( time ) Call Cvttim( time, hh,mm,ss,tt ) IF ((hh .gt. 23).or.(hh .lt. 0)) THEN Call MtFail( 'HHtime', 1 ) Call WriteString( '0-23\', 6, 4 ) Call Write2Int( hh, 10 ) Call WriteLn TstGtim = TstGtim + 2**1 END IF IF ((mm .gt. 59).or.(mm .lt. 0)) THEN Call MtFail( 'MMtime', 2 ) Call WriteString( '0-59\', 6, 4 ) Call Write2Int( mm, 10 ) Call WriteLn TstGtim = TstGtim + 2**2 END IF IF ((ss .gt. 59).or.(ss .lt. 0)) THEN Call MtFail( 'SStime\', 3 ) Call WriteString( '0-59\', 6, 4 ) Call Write2Int( ss, 10 ) Call WriteLn TstGtim = TstGtim + 2**3 END IF IF ((tt .gt. 59).or.(tt .lt. 0)) THEN Call MtFail( 'TTtime\', 5 ) Call WriteString( '0-59\', 6, 4 ) Call Write2Int( tt, 10 ) Call WriteLn TstGtim = TstGtim + 2**5 END IF Call TestFail( TstGtim ) Call CenterString( '--- Testing GTIM completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C------------------------------------ ICMKT ---------------------------------- Function TstIcmkt Integer*4 TstIcmkt Integer*2 Area1(4), Area2(4), time(2),Icmkt,hh,mm,ss,tt Integer*2 res External rtntest, testrtn Call CenterString( '--- Testing ICMKT ---\' ) Call WriteLn Call CenterString( 'Cancels an unexpired mark time request\' ) Call WriteLn TstIcmkt = 0 Call Itimer(1,0,0,0,area1,07,rtntest) Call Itimer(0,1,0,0,area2,18,testrtn) Call Isleep(0,0,2,0) res = Icmkt(4,time) IF (res .ne. 1) THEN Call Rsltfail( 1 ) Call Write2Int( 1, 10 ) Call Write2Int( res, 10 ) Call WriteLn TstIcmkt = Tsticmkt + 2**1 END IF res = Icmkt(18,time) IF (res .ne. 0) THEN Call MtFail( 'abort\', 2 ) Call Write2Int( 0, 10 ) Call Write2Int( res, 10 ) Call WriteLn TstIcmkt = TstIcmkt + 2**2 END IF Call Cvttim( time, hh, mm, ss, tt ) res = Ispy( '372'O ) / 2**3 IF (res .eq. (res/2)*2) THEN IF ((ss .lt. 50).or.(mm .ne. 0)) THEN Call IMtFail( 'timlft\', 3 ) Call Write2Int( mm, 06 ) Call Write2Int( 58, 10 ) Call Write2Int( ss, 10 ) Call WriteLn TstIcmkt = TstIcmkt + 2**3 END IF ELSE Call CenterString('Time-left not supported under RTEM-11\') Call WriteLn END IF res = Icmkt(0,time) IF (res .ne. 0) THEN Call MtFail( 'abort\', 4 ) Call Write2Int( 0, 10 ) Call Write2Int( res, 10 ) Call WriteLn TstIcmkt = TstIcmkt + 2**4 END IF res = Icmkt(07,time) IF (res .ne. 1) THEN Call MtFail( 'Nabort\', 5 ) Call Write2Int( 1, 10 ) Call Write2Int( res, 10 ) Call WriteLn TstIcmkt = TstIcmkt + 2**5 END IF Call TestFail( TstIcmkt ) Call CenterString( '--- Testing ICMKT completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C----------------------------------- ISCHED ---------------------------------- Function TstIsched Integer*4 TstIsched Integer*2 Time(2), area1(4), area2(4), hh, mm, ss, tt External TestRtn, RtnTest Call CenterString( '--- Testing ISCHED ---\' ) Call WriteLn Call CenterString( 'Specifies a Fortran completion routine\') Call WriteLn TstIsched = 0 Call Iqset(2) Call Gtim( Time ) Call Cvttim( time, hh, mm, ss, tt ) IF ( ss+2 .gt. 59 ) THEN ss = ss+2-60 mm = mm + 1 ELSE ss = ss + 2 END IF TstIsched = TstIsched + 2**Isched(hh,mm,ss,tt,area1,07,testrtn)-1 Call Isleep(0,0,05,0) Call CenterString( 'Past the completion routine 1\') Call WriteLn Call Gtim( Time ) Call Cvttim( Time, hh, mm, ss, tt ) IF ( ss+15 .gt. 59 ) THEN ss = ss+15-60 mm = mm + 1 ELSE ss = ss + 15 END IF TstIsched = TstIsched + 2**Isched(hh,mm,ss,tt,area2,18,rtntest)-1 Call Isleep(0,0,20,0) Call CenterString( 'Past the completion routine 2\') Call Writeln Call TestFail( TstIsched ) Call CenterString( '--- Testing ISCHED completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C----------------------------------- ISDTTM ---------------------------------- Function TstIsdttm Integer*4 TstIsdttm Integer*2 qdate, tim1(2), i, j, k Integer*2 tim2(2), mn, dd, yy, tt, res Integer*2 hh, hh2, mm, mm2, ss, ss2 Character*9 tqs Character*10 dqs Call CenterString( '--- Testing ISDTTM ---\' ) Call WriteLn Call CenterString( 'Changes the system date and time\') Call WriteLn TstIsdttm = 0 res = Ispy( '372'O ) / 2**3 IF (res .ne. (res/2)*2) THEN Call CenterString( '-- Not Supported Under RTEM --\' ) Call WriteLn Goto 999 END IF qdate = 12*1024+25*32+(1985-1972) Call Idate( mn, dd, yy ) Call Gtim( Tim1 ) Call Isdttm( qdate, -1, -1 ) Call Gtim( Tim2 ) Call Idate( i, j, k ) Call Date( dqs ) dqs(10:10) = '\' IF ((i.ne.12).or.(j.ne.25).or.(k.ne.85)) THEN Call MtFail( 'SdateO\', 1 ) Call WriteString( '25-DEC-85\', 0, 10 ) Call WriteString( dqs, 1, 09 ) Call WriteLn TstIsdttm = TstIsdttm + 2**1 END IF Call Cvttim( tim1, hh, mm, ss, tt ) Call Cvttim( tim2, hh2, mm2, ss2, tt ) Call Timasc( tim2, tqs ) tqs(9:9) = '\' IF ((hh .ne. hh2).or.((mm2-mm) .gt. 1)) THEN Call MtFail( 'Chktim\', 2 ) Call WriteString( 'Same time\', 0, 10 ) Call WriteString( tqs, 2, 08 ) Call WriteLn TstIsdttm = TstIsdttm + 2**2 END IF Call Gtim( tim1 ) Call Isdttm( -1, Tim1(1), Tim1(2) ) Call Gtim( tim2 ) Call Cvttim( tim1, hh, mm, ss, tt ) Call Cvttim( tim2, hh2, mm2, ss2, tt ) Call Timasc( tim2, tqs ) tqs(9:9) = '\' IF ((hh .ne. hh2).or.((mm2-mm) .gt. 1)) THEN Call MtFail( 'Stime\', 3 ) Call WriteString( 'Same time\', 0, 10 ) Call WriteString( tqs, 2, 08 ) Call WriteLn TstIsdttm = TstIsdttm + 2**3 END IF Call Idate( i,j,k ) Call Date( dqs ) dqs(10:10) = '\' IF ((i.ne.12).or.(j.ne.25).or.(k.ne.85)) THEN Call MtFail( 'chkdat\', 4 ) Call WriteString( '25-DEC-85\', 0, 10 ) Call WriteString( dqs, 1, 09 ) Call WriteLn TstIsdttm = TstIsdttm + 2**4 END IF Call Gtim( tim1 ) Call Isdttm( qdate, Tim1(1), Tim1(2) ) Call Gtim( tim2 ) Call Cvttim( tim1, hh, mm, ss, tt ) Call Cvttim( tim2, hh2, mm2, ss2, tt ) Call Timasc( tim2, tqs ) tqs(9:9) = '\' IF ((hh .ne. hh2).or.((mm2-mm) .gt. 1)) THEN Call MtFail( 'Chktim', 5 ) Call WriteString( 'Same time\', 0, 10 ) Call WriteString( tqs, 2, 08 ) Call WriteLn TstIsdttm = TstIsdttm + 2**5 END IF Call Idate( i,j,k ) Call Date( dqs ) dqs(10:10) = '\' IF ((i.ne.12).or.(j.ne.25).or.(k.ne.85)) THEN Call MtFail( 'chkdat\', 6 ) Call WriteString( '25-DEC-85\', 0, 10 ) Call WriteString( dqs, 1, 09 ) Call WriteLn TstIsdttm = TstIsdttm + 2**6 END IF qdate = mn*1024+dd*32+(1900+yy-1972) Call Isdttm( qdate, -1, -1 ) 999 Call TestFail( TstIsdttm ) Call CenterString( '--- Testing ISDTTM completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C----------------------------------- ISLEEP ---------------------------------- Function TstIsleep Integer*4 TstIsleep Integer*2 res, Isleep Real*4 time Call CenterString( '--- Testing ISLEEP ---\' ) Call WriteLn Call CenterString( 'Suspends execution for a period of time\') Call WriteLn TstIsleep = 0 Call Iqset( 10 ) res = Isleep( 0,0,10,0 ) IF ((res .gt. 1).or.(res .lt. 0)) THEN Call RsltFail( 1 ) Call Write2Int( 0, 10 ) Call Write2Int( res, 10 ) Call WriteLn TstIsleep = TstIsleep + 2**1 END IF Time = Secnds(0) Call Isleep(0,0,10,0) Time = Secnds( time ) IF (time .gt. 11) THEN Call MtFail( 'Dtime\', 2 ) Call WriteReal( 15.0, 10, 2 ) Call WriteReal( time, 10, 2 ) Call WriteLn TstIsleep = TstIsleep + 2**2 END IF Call TestFail( TstIsleep ) Call CenterString( '--- Testing ISLEEP completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C---------------------------------- ITIMER ----------------------------------- Function TstItimer Integer*4 TstItimer Integer*2 area1(4), Area2(4) External testrtn, rtntest Call CenterString( '--- Testing ITIMER ---\' ) Call WriteLn Call CenterString( 'Schedules a fortran completion routine\') Call WriteLn TstItimer = 0 Call Iqset( 20 ) TstItimer = TstItimer + 2**Itimer(0,0,0,20,area1,07,testrtn)-1 Call Isleep( 0, 0, 01, 0 ) Call CenterString( 'Past completion routine 1\') Call WriteLn Call Isleep( 0, 0, 05, 0 ) TstItimer = TstItimer + 2**Itimer(0,0,15,0,area2,18,rtntest)-1 Call Isleep( 0, 0, 25, 0 ) Call CenterString( 'Past completion routine 2\') Call Writeln Call TestFail( TstItimer ) Call CenterString( '--- Testing ITIMER completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C==================================== TestRtn ================================ Subroutine TestRtn( idn ) Integer*2 idn, qrs qrs = idn IF (qrs .ne. 7) THEN Call MtFail( 'bad-id', 1 ) Call Write2Int( 7, 10 ) Call Write2Int( qrs, 10 ) Call WriteLn END IF Call CenterString('Completion routine 1 entered successfully\') Call WriteLn RETURN END C============================================================================= C==================================== RtnTest ================================ Subroutine RtnTest( idn ) Integer*2 qrs, idn qrs = idn IF (qrs .ne. 18 )THEN Call MtFail( 'bad-id', 2 ) Call Write2Int( 18, 10 ) Call Write2Int( qrs, 10 ) Call WriteLn END IF Call CenterString('Completion routine 2 entered successfully\') Call WriteLn RETURN END C============================================================================= C---------------------------------- ITWAIT ----------------------------------- Function TstItwait Integer*4 TstItwait Integer*2 time(2), res, Itwait Real*4 t1 Call CenterString( '--- Testing ITWAIT ---\' ) Call WriteLn Call CenterString( 'Suspends the running job for a period of time\') Call WriteLn TstItwait = 0 Call Jtime(0,0,15,0,time) res = Itwait(time) IF ((res .gt. 1).or.(res .lt. 0)) THEN Call RsltFail( 1 ) Call Write2Int( 0, 10 ) Call Write2Int( res, 10 ) Call WriteLn TstItwait = TstItwait + 2**1 END IF C Call Iqset( 1 ) T1 = Secnds(0) Call Itwait(time) T1 = Secnds( t1 ) IF (t1 .gt. 16) THEN Call MtFail( 'Dtime\', 2 ) Call WriteReal( 15.0, 10, 2 ) Call WriteReal( t1, 10, 2 ) Call WriteLn TstItwait = TstItwait + 2**2 END IF Call TestFail( TstItwait ) Call CenterString( '--- Testing ITWAIT completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C---------------------------------- IUNTIL ----------------------------------- Function TstIuntil Integer*4 TstIuntil Integer*2 res, Iuntil, hh,mm,ss,tt Integer*2 time(2) Real*4 t1 Call CenterString( '--- Testing IUNTIL ---\' ) Call WriteLn Call CenterString( 'Suspends the main process until a time of day\') Call WriteLn TstIuntil = 0 Call Gtim( time ) Call Cvttim( time, hh, mm, ss, tt ) IF ( ss+15 .gt. 59 ) THEN ss = ss - 45 mm = mm + 1 ELSE ss = ss + 15 END IF res = Iuntil(hh,mm,ss,tt) IF ((res .gt. 1).or.(res .lt. 0)) THEN Call RsltFail( 1 ) Call Write2Int( 0, 10 ) Call Write2Int( res, 10 ) Call WriteLn TstIuntil = TstIuntil + 2**1 END IF Call Gtim( time ) Call Cvttim( time, hh, mm, ss, tt ) IF ( ss+15 .gt. 59 ) THEN ss = ss - 45 mm = mm + 1 ELSE ss = ss + 15 END IF C Call Iqset( 1 ) T1 = Secnds(0) Call Iuntil(hh,mm,ss,tt) T1 = Secnds( t1 ) IF (t1 .gt. 16) THEN Call MtFail( 'Dtime\', 2 ) Call WriteReal( 15.0, 10, 2 ) Call WriteReal( t1, 10, 2 ) Call WriteLn TstIuntil = TstIuntil + 2**2 END IF Call TestFail( TstIuntil ) Call CenterString( '--- Testing IUNTIL completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C---------------------------------- JTIME ------------------------------------ Function TstJtime Integer*4 TstJtime Integer*4 time Call CenterString( '--- Testing JTIME ---\' ) Call WriteLn Call CenterString( 'Converts HH:MM:SS:TT into internal format\') Call WriteLn TstJtime = 0 Call Jtime( 15, 31, 44, 0, time ) IF (time .ne. 780140595) THEN Call Mtfail( 'convrt', 1 ) Call WriteInt( 780140595, 10 ) Call WriteInt( time, 10 ) Call WriteLn TstJtime = TstJtime + 2**1 END IF Call Jtime( 14, 51, 15, 00, time ) IF (time .ne. -181141456) THEN Call Mtfail( 'convrt', 2 ) Call WriteInt( -181141456, 10 ) Call WriteInt( time, 10 ) Call WriteLn TstJtime = TstJtime + 2**2 END IF Call Jtime( 00, 00, 00, 00, time ) IF (time .ne. 0) THEN Call Mtfail( 'convrt', 3 ) Call WriteInt( 0, 10 ) Call WriteInt( time, 10 ) Call WriteLn TstJtime = TstJtime + 2**3 END IF Call TestFail( TstJtime ) Call CenterString( '--- Testing JTIME completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C------------------------------------ MRKT ----------------------------------- Function TstMrkt Integer*4 TstMrkt Integer*2 time(2), Mrkt, tpi External Crtn1, Crtn2 Call CenterString( '--- Testing MRKT ---\' ) Call WriteLn Call CenterString( 'Scheds an assembly routine after a unit of time\') Call WriteLn TstMrkt = 0 C Call Iqset(2) Call Jtime( 00, 00, 02, 00, time ) tpi = Mrkt( 07, crtn1, time ) Call Isleep( 00, 00, 05, 00 ) IF ((tpi .gt. 1).or.(tpi .lt. 0)) THEN Call RsltFail( 1 ) Call Write2Int( 0, 10 ) Call Write2Int( tpi, 10 ) Call WriteLn TstMrkt = TstMrkt + 2**1 ELSE IF (tpi .eq. 1) THEN Call MtFail( 'quesiz\', 2 ) Call Write2Int( 0, 10 ) Call Write2Int( tpi, 10 ) Call WriteLn TstMrkt = TstMrkt + 2**2 END IF Call CenterString( 'Past completion routine 1\' ) Call WriteLn Call Isleep( 00, 00, 02, 00 ) Call Jtime( 00, 00, 15, 00, time ) tpi = Mrkt( 18, crtn2, time ) Call Isleep( 00, 00, 25, 00 ) IF ((tpi.gt.1).or.(tpi.lt.0)) THEN Call RsltFail( 3 ) Call Write2Int( 0, 10 ) Call Write2Int( tpi, 10 ) Call WriteLn TstMrkt = TstMrkt + 2**3 ELSE IF (tpi .eq. 1) THEN Call MtFail( 'quesiz\', 4 ) Call Write2Int( 0, 10 ) Call Write2Int( tpi, 10 ) Call WriteLn TstMrkt = TstMrkt + 2**4 END IF Call CenterString( 'Past completion routine 2\' ) Call Writeln Call TestFail( TstMrkt ) Call CenterString( '--- Testing MRKT completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C---------------------------------- SECNDS ----------------------------------- Function TstSecnds Integer*4 TstSecnds Real*4 Secnds, t1, t2, AJFLT, t3 Integer*4 time Integer*2 hh,mm,ss,tt Call CenterString( '--- Testing SECNDS ---\' ) Call WriteLn Call CenterString( 'Return time in seconds after midnight.\') Call WriteLn TstSecnds = 0 T1 = Secnds( 0.0 ) Call Gtim( time ) Call Cvttim( time, hh, mm, ss, tt ) time = hh*3600 + mm*60 + ss t2 = AJFLT( time ) t3 = t2 - t1 IF (t3 .gt. 2.0) THEN Call MtFail( 'secnds', 1 ) Call WriteReal( 0.0, 10, 2 ) Call WriteReal( t3, 10, 2 ) Call WriteLn TstSecnds = TstSecnds + 2**1 END IF T2 = Secnds(0) T1 = Secnds(t2) IF (t1 .gt. 2.0) THEN Call MtFail( 'secnds', 2 ) Call WriteReal( 0.0, 10, 2 ) Call WriteReal( t1, 10, 2 ) Call WriteLn TstSecnds = TstSecnds + 2**2 END IF T2 = Secnds(0) T1 = Secnds(-t2) IF (t1 .lt. 2.0*t2-1) THEN Call MtFail( 'secnds', 3 ) Call WriteReal( 2*t2, 10, 2 ) Call WriteReal( t1, 10, 2 ) Call WriteLn TstSecnds = TstSecnds + 2**3 END IF 999 Call TestFail( TstSecnds ) Call CenterString( '--- Testing SECNDS completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C----------------------------------- TIMASC ---------------------------------- Function TstTimasc Integer*4 TstTimasc Integer*4 time Character*8 st Call CenterString( '--- Testing TIMASC ---\' ) Call WriteLn Call CenterString( 'Converts internal time into a string\') Call WriteLn TstTimasc = 0 time = 780140595 Call Timasc( time, st ) IF (st .ne. '15:31:44') THEN Call MtFail( 'convrt', 1 ) Call WriteString( '15:31:44\', 0, 10 ) Call WriteString( st, 0, 10 ) Call WriteLn TstTimasc = TstTimasc + 2**1 END IF time = -754515637 Call Timasc( time, st ) IF (st .ne. ':0:40:40') THEN Call MtFail( 'convrt', 2 ) Call WriteString( ':0:40:40\', 0, 10 ) Call WriteString( st, 0, 10 ) Call WriteLn TstTimasc = TstTimasc + 2**2 END IF time = 0 Call Timasc( time, st ) IF (st .ne. '00:00:00') THEN Call MtFail( 'convrt', 3 ) Call WriteString( '00:00:00\', 0, 10 ) Call WriteString( st, 0, 10 ) Call WriteLn TstTimasc = TstTimasc + 2**3 END IF time = -181141456 Call Timasc( time, st ) IF (st .ne. '14:51:15') THEN Call MtFail( 'convrt', 4 ) Call WriteString( '14:51:15\', 0, 10 ) Call WriteString( st, 0, 10 ) Call WriteLn TstTimasc = TstTimasc + 2**4 END IF Call TestFail( TstTimasc ) Call CenterString( '--- Testing TIMASC completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C----------------------------------- TIME ------------------------------------ Function Tstime Integer*4 Tstime, k Character*8 st Integer*2 hh,mm,ss Call CenterString( '--- Testing TIME ---\' ) Call WriteLn Call CenterString( 'Returns a string of the time\') Call WriteLn Tstime = 0 DO 20 K=1,9,4 Call Time( st ) IF ((st(3:3) .ne. ':').or.(st(6:6) .ne. ':')) THEN Call Mtfail( 'colon\', k ) Call WriteString( ':\', 0, 10 ) Call WriteString( st(3:3), 0, 10 ) Call WriteLn Tstime = Tstime + 2**k END IF hh = (Ichar( st(1:1) ) - Ichar( '0' )) * 10 hh = hh + Ichar( st(2:2) ) - Ichar( '0' ) mm = (Ichar( st(4:4) ) - Ichar( '0' )) * 10 mm = mm + Ichar( st(5:5) ) - Ichar( '0' ) ss = (Ichar( st(7:7) ) - Ichar( '0' )) * 10 ss = ss + Ichar( st(8:8) ) - Ichar( '0' ) IF ((hh.gt.23).or.(hh.lt.0))THEN Call MtFail( 'range\', k+1 ) Call WriteString( '0-23\', 6, 04 ) Call Write2Int( hh, 10 ) Call WriteLn Tstime = Tstime + 2**(k+1) END IF IF ((mm.gt.59).or.(mm.lt.0)) THEN Call MtFail( 'range\', k+2 ) Call WriteString( '0-59\', 6, 04 ) Call Write2Int( mm, 10 ) Call WriteLn Tstime = Tstime + 2**(k+2) END IF IF ((ss.gt.59).or.(ss.lt.0)) THEN Call MtFail( 'range\', k+3 ) Call WriteString( '0-59\', 6, 04 ) Call Write2Int( ss, 10 ) Call WriteLn Tstime = Tstime + 2**(k+3) END IF 20 Continue Call TestFail( Tstime ) Call CenterString( '--- Testing TIME completed ---\' ) Call WriteLn Call WriteLn END C----------------------------------------------------------------------------- C---------------------------------- JJCVT ------------------------------------ Function TstJJcvt Integer*4 TstJJcvt Integer*4 Time, i Call CenterString( '--- Testing JJCVT ---\' ) Call WriteLn Call CenterString( 'Converts internal time to Integer*4\') Call WriteLn Tstjjcvt = 0 DO 10 i = 1, 10 Call Gtim( time ) time1 = time Call Jjcvt( time1 ) Call Jjcvt( time1 ) IF (time1 .ne. time) THEN Call Mtfail( 'wrdswp', 2 ) Call WriteInt( time, 10 ) Call WriteInt( time1, 10 ) Call WriteLn TstJJcvt = TstJJcvt + 2**i END IF 10 Continue Call TestFail( TstJjcvt ) Call CenterString( '--- Testing JJCVT completed ---\' ) Call WriteLn Call WriteLn END C-----------------------------------------------------------------------------