*--------------------------* * TABLE * GENERIC TABLE MAINTENANCE PROGRAM TO UPDATE CLOCK TABLES. *--------------------------* CS=@(-1) ; CR=@(-3) ; CL=@(-4) ; RV=@(-13) ; ERV=@(-14) VM=CHAR(253) ; SVM=CHAR(252) ; AM=CHAR(254) ; BEEP=CHAR(7) PF1='<' ; PF2='P' ; PF3='/' FF=CHAR(12) LF=CHAR(10):CHAR(13) PROMPT "" HD=''; LN=''; LNCT=0 COL=0; POS=0; MAX=20 LAYOUT='' GOSUB 10000 ;* SETUP LAYOUT ARRAY * FILENAME='STATUS.WORKORDER' OPEN FILENAME TO OFILE ELSE ABORT EXECUTE \SSELECT \:FILENAME BRAY='' LOOP READNEXT KEY ELSE KEY='EOF' UNTIL KEY='EOF' DO BRAY=INSERT(BRAY,1,-1;KEY) REPEAT * GOSUB 2100 BCT=DCOUNT(BRAY<1>,VM) B=0 LOOP B=B+1 KEY=BRAY<1,B> UNTIL B > BCT DO READ IREC FROM OFILE,KEY THEN OREC=IREC IREC=INSERT(IREC,1;KEY) GOSUB 2000; * DISPLAY RECORD END REPEAT CRT @(0,22):CL STOP * 2000 * DISPLAY DATA FOR A=1 TO 7 ISTR=IREC IF LAYOUT<5,A>#'' THEN ISTR=OCONV(ISTR,LAYOUT<5,A>) END ILEN=LAYOUT<4,A> IF A=7 THEN OLEN=LEN(ISTR) IF OLEN > ILEN THEN GOSUB 2600 LN=LN:OSTR END ELSE GOSUB 2700 ;* JUST ADD ISTR TO THE PRINT LINE LN=LN:OSTR END END ELSE GOSUB 2500 LN=LN:OSTR END NEXT A GOSUB 2100 RETURN 2100 * PRINT LINE LOGIC IF LNCT=0 THEN IF MODE THEN GOSUB 132 LN=FF:HD END ELSE LN=FF:HD[1,80] END END ELSE IF MODE THEN GOSUB 132 END ELSE LN=LN[1,80] END END IF LNCT > MAX THEN LNHOLD=LN LNCT=0 GOSUB 2100 LN=LNHOLD END PRINT LN LN='' LNCT=LNCT+1 RETURN 2500 * CONSTRUCT ELEMENTS FOR OUTPUT LINE OLEN=INT(ILEN/2)-INT(LEN(ISTR)/2) OSTR=SPACE(OLEN):ISTR MASK="L#":ILEN OSTR=OSTR MASK RETURN 2600 * DONE=0 X=1; Y=ILEN; Z=0 LOOP Z=Z+1 UNTIL DONE DO IF Z > 1 THEN X=Z*Y-Y+1 OSTR=OSTR:LF:SPACE(75):ISTR[X,Y] LNCT=LNCT+1 IF X+Y > OLEN THEN DONE=1 END ELSE OSTR=ISTR[X,Y] END REPEAT RETURN 2700 * MASK="L#":ILEN OSTR=OSTR MASK RETURN * 80 * A=CHAR(27):"`:":CHAR(12) PRINT A RETURN 132 * A=CHAR(27):"`;":CHAR(12) PRINT A RETURN * 10000 * SETUP LAYOUT ARRAY FOR A=1 TO 7 LAYOUT<1,A>=A NEXT A LAYOUT<2,1>='WORK ORDER' LAYOUT<3,1>='Enter the WORK ORDER #' LAYOUT<4,1>=10 * LAYOUT<2,2>='WO DATE' LAYOUT<3,2>='Enter the DATE the Work Order was Submitted' LAYOUT<4,2>=10 LAYOUT<5,2>='D2/' * LAYOUT<2,3>='DUE DATE' LAYOUT<3,3>='Enter the DATE the Work Order is DUE' LAYOUT<4,3>=10 LAYOUT<5,3>='D2/' * LAYOUT<2,4>='DESCRIPTION' LAYOUT<3,4>='Enter a brief DESCRIPTION of this Work Order' LAYOUT<4,4>=30 * LAYOUT<2,5>='PRGMR' LAYOUT<3,5>='Enter PROGRAMMER assigned to the task' LAYOUT<4,5>=5 * LAYOUT<2,6>='COMPLETED' LAYOUT<3,6>='Enter the DATE this project was COMPLETED' LAYOUT<4,6>=10 LAYOUT<5,6>='D2/' * LAYOUT<2,7>='POST COMPLETION NOTES' LAYOUT<3,7>='Enter NOTES (ie, counts, outstanding issues, etc.)' LAYOUT<4,7>=50 * MODE=0 * ACT=DCOUNT(LAYOUT<1>,VM) FOR A=1 TO ACT ISTR=LAYOUT<2,A> ILEN=LAYOUT<4,A> GOSUB 2500 HD=HD:OSTR NEXT A * RETURN