added CMS folder
This commit is contained in:
232
CMS/BP.CLOCK/CLOCK.EXP.HOLD
Normal file
232
CMS/BP.CLOCK/CLOCK.EXP.HOLD
Normal file
@@ -0,0 +1,232 @@
|
||||
*---------------------------*
|
||||
* CLOCK.CALC
|
||||
* BY D.BELL
|
||||
* 3/22/91
|
||||
*
|
||||
* THIS SUBROUTINE CALCULATES HOURS WORKED BY PASSING AN ARRAY CALLED
|
||||
* ZRAY.
|
||||
* ZRAY<2>=TIMES
|
||||
* ZRAY<3>=PROJECTS
|
||||
*---------------------------*
|
||||
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='/'
|
||||
PROMPT ""
|
||||
HR.TOT=0
|
||||
TOT.HOURS=0
|
||||
ARAY=''
|
||||
WCT=0
|
||||
*
|
||||
OPEN 'CLOCKFILE' TO CLOCKFILE ELSE ABORT
|
||||
OPEN 'DEPT' TO DEPT.FILE ELSE ABORT
|
||||
OPEN 'USER' TO USER.FILE ELSE ABORT
|
||||
OPEN 'CLOCKFILE.WORK' TO WFILE THEN
|
||||
CLEARFILE WFILE
|
||||
END ELSE
|
||||
EXECUTE \CREATE-FILE CLOCKFILE.WORK 1 11\
|
||||
OPEN 'CLOCKFILE.WORK' TO WFILE ELSE ABORT
|
||||
END
|
||||
GOSUB 2000
|
||||
SELECT CLOCKFILE
|
||||
LOOP
|
||||
READNEXT ID ELSE ID='EOF'
|
||||
UNTIL ID='EOF' DO
|
||||
DATE=OCONV(ID,"G1|1")
|
||||
USER=OCONV(ID,"G0|1")
|
||||
LOCATE(DATE,QRAY,1;NDX;'AR') THEN
|
||||
IF QRAY<2,NDX> THEN
|
||||
GOSUB 500
|
||||
END
|
||||
END ELSE
|
||||
IF NDX > 1 THEN NDX=NDX-1
|
||||
IF QRAY<2,NDX> THEN
|
||||
IF DATE >= QRAY<1,NDX> AND DATE <= QRAY<1,NDX>+13 THEN
|
||||
GOSUB 500
|
||||
END
|
||||
END
|
||||
END
|
||||
REPEAT
|
||||
STOP
|
||||
500 *
|
||||
READ ARAY FROM CLOCKFILE,ID THEN
|
||||
GOSUB 1000
|
||||
END
|
||||
RETURN
|
||||
1000 *
|
||||
ACT=DCOUNT(ARAY<1>,VM)
|
||||
FOR A=1 TO ACT
|
||||
TIME=ARAY<1,A>
|
||||
PRJCT=ARAY<2,A>
|
||||
IF REM(A,2) THEN
|
||||
IF PRJCT='OFF' THEN
|
||||
CRT @(0,22):BEEP:"The TIMECARD is in an ambiguous state - Unable to process!":
|
||||
RQM
|
||||
TOT.HOURS=0
|
||||
ONTIME='UNKNOWN'
|
||||
END ELSE
|
||||
OPRJCT=PRJCT
|
||||
ONTIME=TIME
|
||||
END
|
||||
END ELSE
|
||||
IF PRJCT # 'OFF' THEN
|
||||
CRT @(0,22):BEEP:"The TIMECARD is in an ambiguous state - Unable to process!":
|
||||
RQM
|
||||
TOT.HOURS=0
|
||||
OFFTIME='UNKNOWN'
|
||||
END ELSE
|
||||
OFFTIME=TIME
|
||||
END
|
||||
IF OFFTIME='UNKNOWN' OR ONTIME='UNKNOWN' THEN
|
||||
HOURS='?'
|
||||
END ELSE
|
||||
IF ONTIME > OFFTIME THEN
|
||||
OFFTIME=OFFTIME+86400
|
||||
END
|
||||
HOURS=OFFTIME-ONTIME
|
||||
END
|
||||
READV DEPARTMENT FROM USER.FILE,USER,5 ELSE DEPARTMENT='999'
|
||||
WREC=DATE
|
||||
WREC<2>=USER
|
||||
WREC<3>=OPRJCT
|
||||
WREC<4>=ONTIME
|
||||
WREC<5>=OFFTIME
|
||||
WREC<6>=HOURS
|
||||
IF DEPARTMENT=DEPT OR DEPT='ALL' THEN
|
||||
WCT=WCT+1
|
||||
WKEY=DEPARTMENT:'|':WCT
|
||||
CRT @(0,22):WKEY
|
||||
WRITE WREC ON WFILE,WKEY
|
||||
END
|
||||
END
|
||||
NEXT A
|
||||
RETURN
|
||||
*
|
||||
2000 *
|
||||
CRT CS
|
||||
CRT @(0,0):"CLOCK.EXP"
|
||||
CRT @(0,22):CL:"Enter the DEPARTMENT to build analysis for or 'ALL' :":
|
||||
INPUT DEPT
|
||||
IF DEPT='/' THEN STOP
|
||||
IF DEPT='ALL' THEN
|
||||
DEPT.DESC='ALL'
|
||||
END ELSE
|
||||
READ DEPT.DESC FROM DEPT.FILE,DEPT ELSE
|
||||
CRT @(0,22):BEEP:"INVALID DEPARTMENT CODE - TRY AGAIN OR '/' TO ESCAPE"
|
||||
RQM
|
||||
GO 2000
|
||||
END
|
||||
END
|
||||
CRT @(0,2):"This process will build an analysis workfile for the '":DEPT.DESC:"'"
|
||||
CRT @(0,3):"department and for the specified payroll periods."
|
||||
CRT @(0,5):"Select the periods to rebuild from those found below."
|
||||
COL=0
|
||||
POS=5
|
||||
MAXCOL=70
|
||||
MAXPOS=20
|
||||
QRAY=''
|
||||
GOSUB 2200
|
||||
QCT=DCOUNT(QRAY<1>,VM)
|
||||
FOR Q=1 TO QCT
|
||||
IF POS>=MAXPOS THEN COL=COL+20;POS=5
|
||||
POS=POS+1
|
||||
CRT @(COL,POS):" ":OCONV(QRAY<1,Q>,'D2/'):"-":OCONV(QRAY<1,Q>+13,'D2/'):" "
|
||||
NEXT Q
|
||||
CRT @(0,22):"Enter T(tag all), SPACE(toggle selection)":
|
||||
COL=0; POS=5
|
||||
FOR Q=1 TO QCT
|
||||
IF POS>=MAXPOS THEN COL=COL+10;POS=5
|
||||
POS=POS+1
|
||||
CRT @(COL,POS):RV:" ":OCONV(QRAY<1,Q>,'D2/'):"-":OCONV(QRAY<1,Q>+13,'D2/'):" "
|
||||
CRT @(COL,POS):
|
||||
INPUT ANS,1:
|
||||
CRT ERV
|
||||
BEGIN CASE
|
||||
CASE ANS=' '
|
||||
IF QRAY<2,Q> THEN
|
||||
CRT @(COL,POS):" ":OCONV(QRAY<1,Q>,'D2/'):"-":OCONV(QRAY<1,Q>+13,'D2/'):" "
|
||||
QRAY<2,Q>=0
|
||||
END ELSE
|
||||
CRT @(COL,POS):RV:" ":OCONV(QRAY<1,Q>,'D2/'):"-":OCONV(QRAY<1,Q>+13,'D2/'):" ":ERV
|
||||
QRAY<2,Q>=1
|
||||
END
|
||||
CASE ANS='T'
|
||||
COL=0;POS=5
|
||||
FOR Q=1 TO QCT
|
||||
IF POS>=MAXPOS THEN COL=COL+10;POS=5
|
||||
POS=POS+1
|
||||
QRAY<2,Q>=1
|
||||
CRT @(COL,POS):RV:" ":OCONV(QRAY<1,Q>,'D2/'):"-":OCONV(QRAY<1,Q>+13,'D2/'):" ":ERV
|
||||
NEXT Q
|
||||
CASE ANS='/'
|
||||
STOP
|
||||
CASE 1
|
||||
IF QRAY<2,Q>=0 THEN
|
||||
CRT @(COL,POS):" ":OCONV(QRAY<1,Q>,'D2/'):"-":OCONV(QRAY<1,Q>+13,'D2/'):" "
|
||||
END ELSE
|
||||
CRT @(COL,POS):RV:" ":OCONV(QRAY<1,Q>,'D2/'):"-":OCONV(QRAY<1,Q>+13,'D2/'):" ":ERV
|
||||
END
|
||||
END CASE
|
||||
NEXT Q
|
||||
CRT @(0,22):CL:BEEP:"IS THIS CORRECT (Y/N)":
|
||||
INPUT ANS
|
||||
IF ANS='/' THEN STOP
|
||||
IF ANS='Y' ELSE GO 2000
|
||||
FOR Q=1 TO QCT
|
||||
IF QRAY<2,Q> THEN
|
||||
CRT @(0,1):CR
|
||||
CRT @(23,12):RV:"PLEASE WAIT!!!":ERV
|
||||
END
|
||||
NEXT Q
|
||||
GOSUB 2300 ;* CLEAR EXISTING WORKFILE RECORDS FOR THIS DEPT/PERIOD(S)
|
||||
RETURN
|
||||
2200 * CALC DATES
|
||||
EDATE=0; SDATE=0
|
||||
PRDAYS=14; PRDATE=ICONV('12/23/90','D')
|
||||
TODAY="1/1/":OCONV(DATE(),'D2Y')
|
||||
TODAY=ICONV(TODAY,'D')
|
||||
TODAY=TODAY-14
|
||||
LOOP
|
||||
TODAY=TODAY+14
|
||||
SDATE=TODAY-PRDATE
|
||||
IF SDATE <= PRDAYS THEN
|
||||
EDATE=PRDATE
|
||||
END ELSE
|
||||
EDATE=PRDATE+(INT(SDATE/PRDAYS)*PRDAYS)
|
||||
END
|
||||
SDATE=EDATE+PRDAYS
|
||||
ODATE=EDATE
|
||||
QRAY=INSERT(QRAY,1,-1;ODATE)
|
||||
QRAY=INSERT(QRAY,2,-1;'0')
|
||||
UNTIL SDATE > DATE() DO REPEAT
|
||||
RETURN
|
||||
2300 *
|
||||
SELECT WFILE
|
||||
LOOP
|
||||
READNEXT ID ELSE ID='EOF'
|
||||
UNTIL ID='EOF' DO
|
||||
READ WREC FROM WFILE,ID ELSE WREC=''
|
||||
DATE=WREC<1>
|
||||
DEPARTMENT=OCONV(ID,'G0|1')
|
||||
IF DEPARTMENT=DEPT OR DEPT='ALL' ELSE
|
||||
CRT @(10,20):"SKIPPED RECORD ":ID:CL
|
||||
GO 2399
|
||||
END
|
||||
LOCATE(DATE,QRAY,1;NDX;'AR') THEN
|
||||
IF QRAY<2,NDX> THEN
|
||||
GOSUB 2500
|
||||
END
|
||||
END ELSE
|
||||
IF NDX > 1 THEN NDX=NDX-1
|
||||
IF QRAY<2,NDX> THEN
|
||||
IF DATE >= QRAY<1,NDX> AND DATE <= QRAY<1,NDX>+13 THEN
|
||||
GOSUB 2500
|
||||
END
|
||||
END
|
||||
END
|
||||
2399 *
|
||||
REPEAT
|
||||
RETURN
|
||||
2500 *
|
||||
CRT @(0,22):CL:"DELETING WORKFILE RECORD ":ID
|
||||
*DELETE WFILE,ID
|
||||
RETURN
|
||||
Reference in New Issue
Block a user