* SUBROUTINE MSD.CLOCK.PROJECT * * 07/01/94 * *---------------------------------------------------------------------* * $INCLUDE GEN.COMMON * *-------------------* * OPEN 'PROJECT.TIME' TO PROJECT.TIME ELSE ABORT 201, 'PROJECT.TIME' * Q-POINTING TO PROJECT ACCOUNT (CMS.SUPPORT.TRANS.FILE) * OPEN 'PERFECT.WORK' TO PERFECT.WORK ELSE ABORT 201, 'PERFECT.WORK' OPEN 'USER' TO USER ELSE ABORT 201, 'USER' * *-------------------* * T=0 EOF=0 TU=0 WT=0 PROGTABLE='' * *-------------------* * CRT @(0,16):CR CRT @(20,16):RV:" CALCULATING RECORDS FOR PROGRAMMING STAFF ":ERV * EXECUTE "SELECT USER WITH DEPT \504\" HH=0 10 * READNEXT KEY ELSE GO 20 READ USER.REC FROM USER,KEY ELSE GO 10 HH=HH+1 PROGTABLE=KEY GO 10 * 20 * EXECUTE "SELECT PROJECT.TIME" CAPTURING OUTPUT OUTPUT=OCONV(OUTPUT<3,1>,'G0 1') * LOOP READNEXT KEY ELSE EOF=1 UNTIL EOF DO TU=TU+1 IF REM(TU,10)=0 THEN CRT @(23,17):CL:'PROJECT RECORDS READ :':TU END READ PREC FROM PROJECT.TIME,KEY ELSE GOTO 1500 ABBCT=DCOUNT(PREC<30>,VM) FOR ABB = 1 TO ABBCT PDATE=PREC<30,ABB> ;* DATE OF WORK PUSER=PREC<33,ABB> ;* PROGRAMMER USER CODE PTIME=PREC<34,ABB> ;* TIME IN MINUTES IF PTIME < 1 THEN GOTO 1400 PGCT=DCOUNT(PROGTABLE,AM) FOR PG = 1 TO PGCT IF PUSER=OCONV(PROGTABLE,'G0|1') THEN LOCATE(PDATE,PROGTABLE,PG;FND;'AR') THEN OLD.TIME='' OLD.TIME=OCONV(PROGTABLE,'G1*1') OLD.DATE='' OLD.DATE=OCONV(PROGTABLE,'G0*1') NEW.TIME='' NEW.TIME=PTIME+OLD.TIME IF FND=1 THEN FND=2 PROGTABLE=INSERT(PROGTABLE,PG,FND;OLD.DATE:"*":NEW.TIME) END ELSE IF FND=1 THEN FND=2 PROGTABLE=INSERT(PROGTABLE,PG,FND;PDATE:'*':PTIME) END END ELSE IF PG=PGCT THEN PROGTABLE=PUSER:'|':PDATE:'*':PTIME END END NEXT PG 1400 * NEXT ABB 1500 * REPEAT * 3000 * PROG.COUNT=DCOUNT(PROGTABLE,AM) FOR PCNT = 1 TO PROG.COUNT WEEK.TIME=0 WEEKREC='' WEEK=1 LAST.DAY=8 PROGRAMMER=OCONV(PROGTABLE,'G0|1') VALCT=DCOUNT(PROGTABLE,VM) FOR VALC = 2 TO VALCT ;* THE FIRST VALUE = USER CODE THIS.DAY='' ; THIS.TIME='' ; THIS.DATE='' THIS.TIME=OCONV(PROGTABLE,'G1*1') THIS.DATE=OCONV(PROGTABLE,'G0*1') THIS.DAY =OCONV(THIS.DATE,'DW') IF THIS.DAY < LAST.DAY THEN NEW.WEEK=1 END ELSE NEW.WEEK=0 END IF VALC > 2 THEN IF NOT(NEW.WEEK) THEN WEEK.TIME=WEEK.TIME + THIS.TIME END ELSE WEEKREC=WEEK.TIME WEEK=WEEK+1 WEEK.TIME=0 WEEK.TIME=THIS.TIME END END ELSE WEEK.TIME=THIS.TIME END LAST.DAY=THIS.DAY NEXT VALC WRITE WEEKREC ON PERFECT.WORK,OCONV(PROGTABLE,'G0|1') NEXT PCNT STOP