SUBROUTINE MSD.USER.MAINT * * *-------------------------------------------------------------------* * $INCLUDE GEN.COMMON $INCLUDE USER * *-------------------------------------------------------------------* * OPEN 'USER' TO USER.FILE ELSE ABORT 201, 'USER' OPEN 'PROJECT' TO PROJECT ELSE ABORT 201, 'PROJECT' OPEN 'INFO.ACCRUAL' TO INFO.ACCRUAL ELSE ABORT 201, 'INFO.ACCRUAL' OPEN 'PT' TO PT.FILE ELSE ABORT 201, 'PT' OPEN 'CLOCKFILE' TO CLOCKFILE ELSE ABORT 201, 'CLOCKFILE' OPEN 'CLOCK.GEN.KEYS' TO CLOCK.GEN.KEYS ELSE ABORT 201, 'CLOCK.GEN.KEYS' OPEN 'CM' TO CM ELSE ABORT 201, 'CM' OPEN 'HP.CONTROL' TO HP.CONTROL ELSE ABORT 201, 'HP.CONTROL' OPEN 'INFO.HIST' TO INFO.HIST ELSE ABORT 201, 'INFO.HIST' * *-------------------------------------------------------------------* * USER.ADD='' ; USER.REC='' ; TODAY=DATE() * *-------------------------------------------------------------------* 5 * 10 * CRT CS HDG='UPDATE USER HOURS' HDL=(80 - LEN(HDG)) / 2 CRT @(0,0):CL:RV:STR(' ',80):ERV CRT @(HDL,0):RV:HDG:ERV: * 5000 *--- update manager/user records ------------------------* * EOF=0 ; T=0 ;WT=0 EXECUTE "GET-LIST SCOTT.JAN" * LOOP READNEXT ID ELSE EOF=1 UNTIL EOF DO READ USER.REC FROM INFO.HIST,ID THEN CRT @(0,1):CR: CRT @(5,3):CL:RV:" 1. USER CODE :":ERV CRT @(5,4):CL:RV:" 2. LAST NAME :":ERV CRT @(5,5):CL:RV:" 3. FIRST NAME :":ERV CRT @(5,6):CL:RV:" 4. DEPARTMENT :":ERV CRT @(25,3):OCONV(ID,'G0*1') CRT @(25,4):USER.REC CRT @(25,5):USER.REC CRT @(25,6):USER.REC CRT @(5,8):"Last Period Regular Hours : ":USER.REC'R26' HOLD.REG=USER.REC ; DIFFER=0 GOSUB 8000 CRT @(5,10):"Last Period Overtime Hours : ":USER.REC'R26' GOSUB 9000 GOSUB 10000 CRT @(0,22):CL:RV:" Enter 'E' to end, 'Q'uit, else '/' to escape :":ERV: INPUT BANS,9 IF BANS='Q' THEN STOP IF BANS='E' THEN GOSUB 7000 END REPEAT * 7000 *---write changes to disk ----------------------------------* WRITE USER.REC ON INFO.HIST,ID CRT @(0,22):CL:RV:" RECORDS HAVE BEEN UPDATED! :":ERV: INPUT ANY,2 RETURN * 8000 * CRT @(0,22):CL:RV:" ENTER THE TIME (In Quarter-hour increments, Ex. 14.25) ":ERV: ONE.NUM='' ; TWO.NUM='' ; HOLD='' ; COLN='' ; REG.HRS='' CRT @(5,9):"CORRECTED REGULAR HOURS :":ERV: INPUT REG.HRS,7 IF REG.HRS='/' THEN STOP COLN=INDEX(REG.HRS,":",1) IF COLN > 0 THEN GO 8000 END ELSE ONE.NUM=OCONV(REG.HRS,'G0.1') TWO.NUM=OCONV(REG.HRS,'G1.1') REG.HRS=ONE.NUM'R%2':TWO.NUM'L%2' END USER.REC=REG.HRS CRT @(5,9):"CORRECTED REGULAR HOURS :":ERV:" ":REG.HRS'R26' RETURN * 9000 * CRT @(0,22):CL:RV:" ENTER THE TIME (In Quarter-hour increments, Ex. 14.25) ":ERV: ONE.NUM='' ; TWO.NUM='' ; HOLD='' ; COLN='' ; REG.HRS='' CRT @(5,11):"CORRECTED OVERTIME HOURS :":ERV: INPUT REG.HRS,7 IF REG.HRS='/' THEN STOP COLN=INDEX(REG.HRS,":",1) IF COLN > 0 THEN GO 9000 END ELSE ONE.NUM=OCONV(REG.HRS,'G0.1') TWO.NUM=OCONV(REG.HRS,'G1.1') REG.HRS=ONE.NUM'R%2':TWO.NUM'L%2' END USER.REC=REG.HRS CRT @(5,11):"CORRECTED OVERTIME HOURS :":ERV:" ":REG.HRS'R26' RETURN * 10000 * DIFFER=USER.REC-HOLD.REG IF DIFFER > 0 THEN *--- calculate vaction accrual ---------------* VCALC=USER.REC VAC.ACCRUAL=DIFFER*VCALC VAC.ONE=OCONV(VAC.ACCRUAL,'G0.1') VAC.TWO=OCONV(VAC.ACCRUAL,'G1.1')'L%2' VAC.ACCRUAL=VAC.ONE:VAC.TWO[1,2] CRT @(5,13):"OLD VACATION AVAIL :":USER.REC'R26' CRT @(5,14):"ADDITIONAL HOURS :":DIFFER'R26' CRT @(5,15):"CALC FACTOR :":VCALC VAC.ACCRUAL=VAC.ACCRUAL/100 CRT @(5,16):"ADDITIONAL VAC :":VAC.ACCRUAL'R26' TOTAL=USER.REC+VAC.ACCRUAL USER.REC=TOTAL CRT @(5,17):"----------------------------" CRT @(5,18):"NEW TOTAL :":USER.REC'R26' * *--- calculate personal accrual ---------------* VCALC='.011538' VAC.ACCRUAL=DIFFER*VCALC VAC.ONE=OCONV(VAC.ACCRUAL,'G0.1') VAC.TWO=OCONV(VAC.ACCRUAL,'G1.1')'L%2' VAC.ACCRUAL=VAC.ONE:VAC.TWO[1,2] CRT @(42,13):"OLD PERSONAL AVAIL :":USER.REC'R26' CRT @(42,14):"ADDITIONAL HOURS :":DIFFER'R26' CRT @(42,15):"CALC FACTOR :":VCALC VAC.ACCRUAL=VAC.ACCRUAL/100 CRT @(42,16):"ADDITIONAL PER :":VAC.ACCRUAL'R26' TOTAL=USER.REC+VAC.ACCRUAL USER.REC=TOTAL CRT @(42,17):"----------------------------" CRT @(42,18):"NEW TOTAL :":USER.REC'R26' END RETURN