Listing of file='@CLOC' on disk='vmedia/731-8009-F.wvd.zip'
# Sector 1014, program filename = '@CLOC' 0010 REM % Prog = @CLOC By DMB (Mod. by SPM) Date = 05/09/86 Rel 2.7 0015 REM %(c) Copr. Wang Laboratories, Inc. 1985, 1986 0020 REM % VARIABLES FOR TIME & DATE : REM U7$() - ENTERED TIME & DATE - MMDDYYHHMMSS : REM U9$() - DISPLAYED TIME & DATE - MMDDYYHHMMSS : REM V1$ - CONTAINS TIME RETURNED FROM O.S. 0030 REM U8$(1) - ENTER TIME - HH.MM.SS : REM U8$(2) - ENTER DATE - MM/DD/YY : REM V2$ - DATE FROM @DATE FILE 0040 DIM U7$(6)2,U9$(6)2,U8$8,V1$6,V2$6,U8$(2)8,I1(6),V3$6 0050 PRINT HEX(03); : V1$=TIME : V2$=" " : DATA LOAD DC OPEN T"@DATE" : ERRORGOTO 80 0060 DATA LOAD DC V2$ : ERRORGOTO 80 0070 DATA SAVE DC CLOSE : ERRORGOTO 80 0080 U9$()=STR(V2$,3,4)&STR(V2$,1,2)&V1$ : U7$()=U9$() : STR(U9$(),7,6)=" " : U8$="SYSTEM" : V3$=DATE : DATE=V3$ PASSWORD "SYSTEM" : ERRORGOTO 100 0090 GOTO 110 0100 REM CALL ENTER PASSWORD SUBROUTINE : GOSUB '200 0110 U8$()="MM/DD/YYHH:MM:SS" : IF V2$<>" " THEN U8$(1)=U9$(1)&"/"&U9$(2)&"/"&U9$(3) 0130 GOSUB '202 : T$=U9$(1)&"/"&U9$(2)&"/"&U9$(3) : GOSUB '75(12) 0140 IF V1$="999999" THEN I8=30 : ELSE I8=4 0150 PRINT AT(22,45);"Press FN or TAB to return to menu"; : PRINT HEX(06);AT(6,I8);"Enter date:"; : LINPUT -U8$(1) : U7$(1)=STR(U8$(1),1,2) : U7$(2)=STR(U8$(1),4,2) : U7$(3)=STR(U8$(1),7,2) 0160 REM % VALIDATE DATE ENTRY : I1=0 : FOR I=1 TO 3 : CONVERT U7$(I) TO I1(I) : ERRORI1=1 : I=3 0170 NEXT I : IF I1=1 THEN 220 0180 IF I1(1)<1 OR I1(1)>12 OR I1(2)<1 OR I1(2)>31 THEN 220 0190 ON I1(1) GOTO 230,200,230,210,230,210,230,230,210,230,210,230 0200 REM PROCESS FEBRUARY : IF I1(2)>29 THEN 220 : IF MOD(I1(3),4)<>0 AND I1(2)=29 THEN 220 : GOTO 230 0210 REM 30 DAY MONTHS : IF I1(2)>30 THEN 220 : GOTO 230 0220 PRINT HEX(07); : GOTO 150 0230 FOR I=1 TO 3 : CONVERT I1(I) TO U7$(I),(##) : NEXT I : STR(U9$(),1,6)=STR(U7$(),1,6) : V2$=U7$(3)&U7$(1)&U7$(2) : U8$(1)=U7$(1)&"/"&U7$(2)&"/"&U7$(3) : DATE=V2$ PASSWORD U8$ 0240 DATA LOAD DC OPEN T"@DATE" : ERRORGOTO 270 0250 DATA SAVE DC V2$ : ERRORGOTO 270 0260 DATA SAVE DC CLOSE : ERRORGOTO 270 0270 T$=U9$(1)&"/"&U9$(2)&"/"&U9$(3) : I8=1 : IF V1$="999999" THEN I8=36 : PRINT AT(2,I8);T$; : GOSUB '75(12) : PRINT AT(23,0,79); 0280 IF V1$="999999" THEN 350 : PRINT HEX(06);AT(6,53);"Enter time:"; : LINPUT -U8$(2) : U7$(4)=STR(U8$(2),1,2) : U7$(5)=STR(U8$(2),4,2) : U7$(6)=STR(U8$(2),7,2) 0290 REM % VALIDATE TIME ENTRY : I1=0 : FOR I=4 TO 6 : CONVERT U7$(I) TO I1(I) : ERRORI1=1 : I=6 0300 NEXT I : IF I1=1 THEN 320 0310 IF I1(4)<0 OR I1(4)>23 OR I1(4)<>FIX(I1(4)) THEN 320 : IF I1(5)<0 OR I1(5)>59 OR I1(5)<>FIX(I1(5)) THEN 320 : IF I1(6)<0 OR I1(6)>59 OR I1(6)<>FIX(I1(6)) THEN 320 : GOTO 330 0320 PRINT HEX(07); : GOTO 280 0330 FOR I=4 TO 6 : CONVERT I1(I) TO U7$(I),(##) : NEXT I : STR(U9$(),7,6)=STR(U7$(),7,6) 0340 V1$=STR(U7$(),7,6) : U8$(2)=U7$(4)&":"&U7$(5)&":"&U7$(6) : TIME=V1$ PASSWORD U8$ 0350 PRINT HEX(06);AT(21,38);"Press FN or TAB to accept date";AT(22,38,42);"Pr ess RETURN to modify date "; 0360 IF V1$<>"999999" THEN PRINT HEX(06);AT(22,66);"& time ";AT(21,69);"& time"; : KEYIN K$,380,390 : IF V1$="999999" THEN 360 : V1$=TIME : STR(U7$(),7,6),STR(U9$(),7,6)=V1$ : U8$(2)=U7$(4)&":"&U7$(5)&":"&U7$(6) : PRINT HEX(06);AT(2,71);U8$(2); 0370 V2$=DATE : U7$(1)=STR(V2$,3,2) : U7$(2)=STR(V2$,5,2) : U7$(3)=STR(V2$,1,2) : STR(U9$(),1,6)=STR(U7$(),1,6) : U8$(1)= U7$(1)&"/"&U7$(2)&"/"&U7$(3) : PRINT HEX(06);AT(2,1);U8$(1) : GOTO 360 0380 IF K$<>HEX(0D) THEN 350 : PRINT HEX(06);AT(21,38,42);AT(22,38,42) : GOTO 140 0390 IF K$<>HEX(7F) AND K$<>HEX(7E) THEN 350 : GOTO 490 0400 DEFFN'200 : REM % ENTER PASSWORD FIELD 0410 GOSUB '202 : U8$=" " 0420 PRINT AT(6,30);"Password:"; : LINPUT -U8$ 0430 REM VALIDATE PASSWORD HERE : V3$=DATE : DATE=V3$ PASSWORD U8$ : ERRORPRINT HEX(07) : GOTO 420 0440 RETURN 0450 DEFFN'202 : PRINT HEX(03); : REM % DISPLAY TIME AND DATE 0460 PRINT AT(22,45);"Press FN or TAB to return to menu"; : IF V1$="999999" THEN PRINT HEX(06020402000E);AT(22,0);"No system clock";H EX(0F); 0470 IF V1$="999999" THEN 480 : PRINT AT(0,25);HEX(0E);"*** Initialize Date & Time ***";HEX(0F);AT(1,21); "(c) Copr. Wang Laboratories, Inc. 1986";AT(2,0);BOX(1,9);AT(2,70);BOX(1, 9);AT(2,1);STR(U9$(1),1);"/";STR(U9$(2),1);"/";U9$(3);AT(2,71);STR(U9$(4) ,1);":";STR(U9$(5),1);":";U9$(6); : RETURN 0480 PRINT AT(0,25);"*** Initialize Date & Time ***";AT(2,35);BOX(1,9);AT(2,36 );STR(U9$(1),1);"/";STR(U9$(2),1);"/";U9$(3); : RETURN 0490 DEFFN'126 0500 DEFFN'127 : COM CLEAR : PRINT HEX(06);AT(21,0,);AT(23,0);HEX(0E);"(Returning to System Menu)";HEX (01) : $PSTAT=" " : LOAD T"@MENU" 0510 DEFFN'75(R) 0520 PRINT HEX(06);AT(I7,I9);BOX(-1,-3);AT(R,0,10*80) : GOSUB 540 : RETURN 0530 RETURN 0540 $UNPACK (D=HEX(002F)) T$ TO M,D,Y : ERROR$UNPACK(D=HEX(002C)) T$ TO M,D,Y : ERRORRETURN 0550 IF M<>INT(M) OR M<1 OR M>12 THEN 530 : IF D<>INT(D) OR D<1 OR D>31 THEN 530 : IF Y<>INT(Y) OR Y<0 THEN 530 : IF Y<100 THEN Y=Y+1900 0560 REM CONVERT TO STANDARD FORM : T$="00/00/0000" : CONVERT M TO STR(T$,1,2),(##) : CONVERT D TO STR(T$,4,2),(##) : CONVERT Y TO STR(T$,7,4),(####) 0570 GOSUB '76(D,M,Y,R,1) : M=MOD(M,12)+1 : IF M=1 THEN Y=Y+1 : GOSUB '76(0,M,Y,R,45) 0580 RETURN 0590 DEFFN'76(I0,I1,I4,R,C) : GOSUB '50(I1) : I3=I4 0600 IF I1>2 THEN 610 : I1=I1+12 : I4=I4-1 0610 REM CALC. DAY OF WEEK MONTH BEGINS ON : T=MOD(2+INT((13*I1+3)/5)+INT(5*I4/4)-INT(I4/100)+INT(I4/400),7)+1 0620 REM DISPLAY MONTH : T=2-T : PRINT AT(R,C,28);AT(R,C+(28-LEN(M$)-5)/2);M$;I3 : PRINT AT(R+1,C);"SUN MON TUE WED THU FRI SAT " : FOR W=1 TO 6 : PRINT AT(R+1+W,C); : FOR I=1 TO 7 : IF T=I0 AND T<>0 THEN 625 : ELSE GOTO 630 0625 PRINT BOX(1,3); : I7=R+1+W : I9=C+(I-1)*4 0630 IF T>0 AND T<=I2 THEN PRINTUSING " ## ";T; : ELSE PRINT " "; : IF T=I0 THEN PRINT HEX(0F0204020F); : T=T+1 : PRINT HEX(0F); : NEXT I,W : RETURN 0640 DEFFN'50(I1) : RESTORE LINE 640,2*I1-1 : READ M$,I2 : IF MOD(Y,4)=0 AND I1=2 THEN I2=I2+1 : RETURN : DATA "JANUARY",31,"FEBRUARY",28,"MARCH",31,"APRIL",30,"MAY",31,"JUNE",30, "JULY",31,"AUGUST",31,"SEPTEMBER",30,"OCTOBER",31,"NOVEMBER",30,"DECEMBER ",31