REMARK **************************************************\ * P/R020.BAS EMPLOYEE MASTER FILE MAINTENANCE *\ * 4/17/79 4:45 PM *\ ************************************************** %INCLUDE CURSOR %INCLUDE PRNMASK DIM S(96),R1(2),T2(8),R$(5),R2(5),G3(5),G2$(5) DEF FNR(A1)=INT(A1 * 100 + .05)/100 REMARK ROUNDING FUNCTION GOTO 6000 %INCLUDE SUBS1 %INCLUDE MSTROUT %INCLUDE MSTRIN %INCLUDE GENINFO 5300 X1=F%* 64 + 199 REMARK CHANGE EMPLOYEE NAME OR ADDRESS LINE X2=22 X3=0 X4=0 GOSUB 345 R$(F%)=X0$ RETURN 5350 X1=303 REMARK CHANGE SOCIAL SECURITY NUMBER GOSUB 210 PRINT " " X1=303 X2=9 X3=0 X4=999999999 GOSUB 345 X1=303 R1(1)=X0 GOSUB 760 PRINT RETURN 5400 IF F%=9 THEN\ REMARK CHANGE EMPLOYEE TYPE CODE X1=652:\ X2=2:\ X3=0:\ X4=99:\ GOSUB 345:\ R2(1)= X0:\ RETURN 5405 IF F%<=8 THEN\ REMARK CHANGE FEDERAL STATE OR ADDITIONAL EXEMPTIONS X1=495:\ X2=1:\ X3=0:\ X4=9:\ GOSUB 345:\ R2(5)= X0:\ RETURN 5410 X1=(F%-10) * 64 + 716 X2=2 X3=0 X4=99 GOSUB 345 R2(F%-9)= X0 RETURN 5450 X1=716 REMARK CHANGE MARITAL STATUS X2=1 X3=0 X4=0 GOSUB 345 R3$= X0$ IF R3$="M" THEN RETURN IF R3$="S" THEN RETURN IF R3$="H" THEN RETURN X2$="M, S OR H ONLY" REMARK IF IMPROPER MARITAL STATUS, RE-PROMPT FOR ENTRY GOSUB 615 GOTO 5450 5500 IF F% <>7 THEN A4=1002 ELSE A4=431 X1=A4:GOSUB 673 REMARK CHANGE DATE OF EMPLOYMENT OR LAST CHECK DATE IF F%=7 THEN S(2)=X0 ELSE S(4)=X0 RETURN 5550 X1=367 REMARK CHANGE EMPLOYEE INSURANCE CLASS X2=2 X3=0 X4=99 GOSUB 345 S(3)= X0 RETURN 5600 X1=940 REMARK CHANGE LAST CHECK NUMBER X2=6 X3=0 X4=999999 GOSUB 345 S(5)= X0 RETURN REMARK CHANGE HEALTH & WELFARE RATE, M-T-D HOURS, PAY 5650 IF F%<15 THEN X1=972 ELSE X1=(F%-14)*64 + 617 REMARK OR VACATION HOURS REMAINING 5655 X2=9 X3=0 X4=9999.9999 GOSUB 345 REMARK ENTER HOURS IF F%=18 THEN S(14)=X0:RETURN REMARK IF VACATION HOURS ENTERED, SAVE AND RETURN IF F% <= 15 THEN S(F%-6)=X0:RETURN 5665 S(F%-10)= X0 RETURN 5670 X1=F%*64 + 217 REMARK REMARK CHANGE SPECIAL INFORMATION FIELDS 1-3 X2=9 X3=0 X4=999999.99 GOSUB 345 IF F%=1 THEN S(10)=X0:RETURN S(F%+13)=X0 RETURN 5700 IF F%>=12 THEN X1=302+64*(F%-11) ELSE X1=272+64*F% REMARK SET ENTRY COORDINATES FOR PROPER FIELD 5705 X2=9 X3=0 X4=999999.99 REMARK ENTER AMOUNT GOSUB 345 Z%=24*(B%-1) + F% IF F%>10 THEN S(Z%+1)=X0:RETURN 5715 S(Z%)=X0 REMARK SAVE ENTERED AMOUNT IN MASTER FILE FIELD RETURN 5720 IF B%=2 THEN Z%=25 REMARK SET POINTER OFFSETS FOR ACCUMULATION IF B%=3 THEN Z%=49 REMARK OF TOTALS FOR EMPLOYEE IF B%=4 THEN Z%=73 S(Z%+10) = S(Z%+1)+S(Z%+3)+S(Z%+5)+S(Z%+6)+S(Z%+8)+S(Z%+9) S(Z%+17) = S(Z%+12)+S(Z%+13)+S(Z%+14)+S(Z%+15)+S(Z%+16) REMARK PAY AND DEDUCTION AMOUNTS ON FILE X1 = 640 GOSUB 210 GOSUB 7105 REMARK DISPLAY TOTAL AMOUNTS ON SCREEN RETURN 6000 OPEN "P/R0F110.DAT" RECL 1150 AS 1,"CRT" RECL 1100 AS 19 REMARK OPEN EMPLOYEE MASTER AND CRT MASK FILES OPEN "G/I0F010.DAT" RECL 200 AS 3:Y9=3 GOSUB 700 REMARK READ GENERAL INFORMATION FILE 6005 X0=3:GOSUB 260 C2%=1 B%=0 X2=1 X3=1 X4=5 X2$="ENTER OPERATION CODE (1=ADD,2=CHANGE,3=POST,4=DELETE,5=EXIT)" GOSUB 665 REMARK REQUEST OPERATION CODE C%=X0 IF C%=5 THEN PRINT CLEAR.SCREEN$;\ REMARK IF PERATION CODE 5 SELECTED, LOAD MENU "P/R MASTER F/M LOADING MENU":CHAIN "P/R000" 6007 X2=3 X3=0 X4=999 X2$="ENTER EMPLOYEE NUMBER" GOSUB 665 REMARK ENTER EMPLOYEE NUMBER IF X0=0 THEN 6005 REMARK IF NONE ENTERED, PROMPT FOR OPERATION CODE IF X0 > MSTR.RECORDS THEN X2$="OUT OF RANGE":GOSUB 615:GOTO 6007 GOSUB 745 REMARK GET MASTER RECORD FROM FILE ON C% GOSUB 6100,6200,6300,6500 REMARK BRANCH BASED ON CURRENT OPERATION CODE GOTO 6005 6100 IF S(1)>0 THEN X2$="ALREADY ON FILE":GOSUB 615:RETURN REMARK ADD EMPLOYEE MASTER RECORD TO FILE DIM S(96),R$(5),R1(2),R2(5) REMARK RE-INITIALIZE EMPLOYEE MASTER FILE FIELDS R3$="" S(1)=X0 6105 B%=1 FOR F%=1 TO 4 GOSUB 5300 REMARK ENTER EMPLOYEE NAME AND ADDRESS NEXT F% GOSUB 5350 REMARK ENTER SOCIAL SECURITY NUMBER GOSUB 5550 REMARK ENTER INSURANCE CLASS CODE F%=7 GOSUB 5500 REMARK ENTER DATE OF EMPLOYMENT FOR F%=8 TO 9 GOSUB 5400 REMARK ENTER EMPLOYEE CLASS AND PAY TYPE NEXT F% GOSUB 5450 REMARK ENTER EMPLOYEE MARITAL STATUS FOR F%=11 TO 13 GOSUB 5400 REMARK ENTER EMPLOYEE CLASS CODE AND EMPLOYEE TYPE NEXT F% FOR F%=14 TO 18 GOSUB 5650 REMARK ENTER HEALTH & WELFARE RATE, M-T-D HOURS,\ M-T-D PAY AND VACATION HOURS REMAINING NEXT F% GOSUB 5600 REMARK ENTER LAST CHECK NUMBER FOR EMPLOYEE F%=20:GOSUB 5500 REMARK ENTER DATE OF LAST CHECK 6110 FOR B%=2 TO 4 GOSUB 7000 REMARK SEQUENTIALLY ENTER CURRENT, Q-T-D AND Y-T-D\ DOLLAR AMOUNTS FOR NEW EMPLOYEE X2=1 X3=0 X4=1 X2$="ENTER REMAINING PERIODS?" GOSUB 665 REMARK ENTER '0' IF DONE WITH ENTRIES; '1' IF NOT IF X0 > 0 THEN\ FOR F%=1 TO 16:\ GOSUB 5700:\ REMARK ENTER ALL AMOUNT FIELDS NEXT F%:\ GOSUB 5720\ REMARK WHEN DONE, RE-DISPLAY ALL AMOUNT ENTRIES ELSE B%=4 REMARK IF '0' WAS ENTERED, TERMINATE THE LOOP NEXT B% 6115 GOSUB 6205 REMARK CHANGE FIELDS IF NEEDED, THEN SAVE RECORD RETURN REMARK **** CHANGE EMPLOYEE MASTER RECORD **** 6200 IF S(1)=0 THEN X2$="NOT ON FILE":GOSUB 615:RETURN REMARK IF RECORD IS LOGICALLY DELETED, EXIT ROUTINE 6205 B%=1 GOSUB 7000 REMARK DISPLAY HEADER PORTION OF RECORD C1%=93 6210 X2=2:X3=0:X4=94:X2$="ENTER FIELD TO CHANGE":GOSUB 665 REMARK PROMPT FOR FIELD TO CHANGE F%=X0 IF F%>=90 THEN B%=F%-89:GOSUB 7000:GOTO 6210 REMARK IF OTHER MASK WAS REQUESTED, DISPLAY IT IF F% > 20 THEN GOTO 6210 REMARK IF FIELD NUMBER WAS INVALID, RE-PROMPT 6215 IF F%=0 THEN X0=S(1):GOSUB 750:RETURN REMARK IF FIELD TO CHANGE = 0, SAVE RECORD AND RETURN IF B%>1 THEN 6250 IF F%<= 4 THEN GOSUB 5300:GOTO 6210 REMARK CHANGE EMPLOYEE NAME/ADDRESS IF F <= 4 IF F%<=5 THEN GOSUB 5350:GOTO 6210 REMARK CHANGE SOCIAL SECURITY NUMBER IF F%=10 THEN GOSUB 5450:GOTO 6210 REMARK CHANGE EMPLOYEE MARITAL STATUS IF F%>=8 AND F%<=13 THEN GOSUB 5400:GOTO 6210 REMARK CHANGE EXEMPTION FIELDS IF F% > 13 AND F% < 19 THEN GOSUB 5650:GOTO 6210 REMARK CHANGE PAY,H&W RATES, M-T-D HRS OR PAY IF F%=19 THEN GOSUB 5600:GOTO 6210 REMARK CHANGE LAST CHECK NUMBER IF F%=20 OR F%=7 THEN GOSUB 5500:GOTO 6210 REMARK CHANGE DATE OF LAST CHECK IF F%=6 THEN GOSUB 5550:GOTO 6210 REMARK CHANGE INSURANCE CLASS CODE 6250 IF B%=5 THEN 6295 IF F%>16 THEN 6210 GOSUB 5700 REMARK ENTER CURRENT, Q-T-D OR Y-T-D AMOUNT GOSUB 5720 REMARK RE-DISPLAY AMOUNT TOTALS GOTO 6210 6295 IF F%<=3 THEN GOSUB 5670 REMARK CHANGE SPECIAL INFORMATION FIELDS 1 TO 3 GOTO 6210 6300 IF S(1)=0 THEN X2$="NOT ON FILE":GOSUB 615:RETURN REMARK ROUTINE TO POST MANUALLY-WRITTEN CHECKS B%=1 GOSUB 7005 REMARK DISPLAY HEADER MASK X2=1 X3=0 X4=1 X2$="ENTER 1 TO POST" GOSUB 665 REMARK ENTER '1' TO START POSTING IF X0=0 THEN RETURN REMARK GO BACK TO EMPLOYEE NUMBER PROMPT IF REPLY=0 GOSUB 5600 REMARK ENTER CHECK DATE GOSUB 5500 REMARK ENTER CHECK NUMBER FOR MANUAL CHECK B%=4 GOSUB 7000 REMARK DISPLAY CURRENT AMOUNT FIELDS FOR F%=1 TO 16 GOSUB 5700 REMARK ENTER EACH CURRENT AMOUNT FIELD MANUALLY NEXT F% GOSUB 5720 REMARK DISPLAY CURRENT AMOUNT TOTALS FOR CHECK C1%=16 GOSUB 6210 REMARK ALLOW OPERATOR CHANGES TO FIELDS 1-16 FOR I%=25 TO 42 S(I%)=S(I%) + S(I% + 48) REMARK ACCUMULATE POSTING TOTALS 6303 A1=(INT(S(4)/10000)-1)/3 IF A1=INT(A1) AND G3(4)=1 THEN S(I%+24)=0 REMARK IF NEW QUARTER, ZERO OUT Q-T-D TOTALS 6305 S(I%+24) = S(I%+24) + S(I%+48) REMARK ACCUMULATE POSTING TOTALS : Q-T-D AND Y-T-D NEXT I% 6307 IF R2(1)<>1 THEN X0=80 ELSE X0=1 REMARK SET WAGE DIVISOR BASED ON EMPLOYEE TYPE 6308 X0=S(76)-FNR(S(8)/X0 * S(75)) REMARK IF OVERTIME HOURS, CALCULATE O/T PAY IF R2(5)<>1 THEN 6310 IF S(7)+S(83)-S(84)-X0 >= 1733 THEN\ REMARK ADD TO INSURANCE-EXCLUDABLE AMOUNT S(10)=S(10)+S(83)-S(84)-X0 ELSE GOTO 6310 IF S(7)<=1733 THEN S(10)=S(10)+S(7)-1733 6310 S(7)=S(7) + S(83)-S(84) REMARK ADD NET CHECK TO M-T-D PAY 6320 S(6)=S(6) + S(73) + S(75) + S(77) + S(80) REMARK ADD TO TOTAL M-T-D HOURS S(10)=S(10) + X0 REMARK ADD TO INSURANCE-EXCLUDABLE AMOUNT X2$="POSTED" GOSUB 615 REMARK FLASH MESSAGE THAT EMPLOYEE RECORD WAS POSTED X0=S(1) GOSUB 750 REMARK RE-SAVE EMPLOYEE RECORD RETURN 6500 IF S(1)=0 THEN X2$="NOT ON FILE":GOSUB 615:RETURN B%=1 GOSUB 745 REMARK READ EMPLOYEE MASTER RECORD GOSUB 7000 REMARK DISPLAY HEADER INFORMATION X2=3 X3=0 X4=0 X2$="ENTER DELETE CODE TO DELETE RECORD" GOSUB 665 IF X0$<>"DEL" THEN RETURN REMARK ENTER DELETE CODE; REJECT INCORRECT CODE X0=S(1) S(1)=0 REMARK RECORD IS DELETED BY SETTING S(1)=0 GOSUB 750 X2$="RECORD DELETED":GOSUB 615 REMARK FLASH RECORD DELETION MESSAGE TO OPERATOR RETURN 7000 IF B%=5 THEN 7110 REMARK DISPLAY APPROPRIATE MASK AND EMPLOYEE DATA X0=SGN(B%-1)+3 GOSUB 260 REMARK READ AND DISPLAY APPROPRAITE CRT MASK IF B%=0 THEN 7030 7005 X1=37 GOSUB 210 PRINT S(1);" " REMARK DISPLAY EMPLOYEE NUMBER PRINT IF B%>1 THEN 7100 PRINT:PRINT FOR I%=1 TO 4 X1=8 GOSUB 215 PRINT R$(I%) REMARK DISPLAY EMPLOYEE NAME AND ADDRESS NEXT I% 7010 PRINT PRINT X1=12 GOSUB 215 PRINT R2(1);" " REMARK DISPLAY EMPLOYEE TYPE CODE X1=13 GOSUB 215 PRINT R3$ REMARK DISPLAY MARITAL STATUS CODE FOR I%=2 TO 4 X1=12 GOSUB 215 PRINT R2(I%) REMARK DISPLAY EMPLOYEE EXEMPTIONS NEXT I% X1=13 GOSUB 215 PRINT USING MASK4.4$;S(8); REMARK DISPLAY EMPLOYEE PAY RATE X1=303 X0=R1(1) GOSUB 760 REMARK DISPLAY SOCIAL SECURITY NUMBER PRINT X1=47 GOSUB 215 PRINT S(3);" " REMARK DISPLAY INSURANCE CLASS CODE X1=48 GOSUB 215 X0=S(2):GOSUB 680.5 REMARK DISPLAY DATE OF EMPLOYMENT PRINT X1=47 GOSUB 215 PRINT R2(5):PRINT:PRINT REMARK DISPLAY EMPLOYEE CLASS CODE X1=42:GOSUB 215 PRINT USING MASK4.4$;S(9) REMARK DISPLAY HEALTH & WELFARE RATE 7020 FOR I%=6 TO 7 X1=42:GOSUB 215 PRINT USING MASK4.4$;S(I%) REMARK DISPLAY MONTHLY HOURS AND PAY NEXT I% X1=42:GOSUB 215 PRINT USING MASK4.4$;S(14) REMARK DISPLAY VACATION HOURS REMAINING X1=45:GOSUB 215 PRINT USING MASK6$;S(5) REMARK DISPLAY LAST CHECK NUMBER X1=43:GOSUB 215 X0=S(4) GOSUB 680.5 REMARK DISPLAY LAST CHECK DATE RETURN 7030 X1=64 GOSUB 210 RETURN 7100 X1=0:GOSUB 210 IF B%=2 THEN PRINT " YTD"; IF B%=3 THEN PRINT " QTD"; IF B%=4 THEN PRINT "CURRENT"; 7103 Z%=25 + 24 * (B%-2) REMARK DISPLAY CURRENT, Q-T-D OR Y-T-D EMPLOYEE TOTALS PRINT:PRINT:PRINT:PRINT:PRINT FOR I%=Z% TO Z% + 9 X1=17 GOSUB 215 PRINT USING MASK6.2$;S(I%) REMARK DISPLAY AMOUNT FIELD NEXT I% X1=17:GOSUB 215 PRINT USING MASK6.2$;S(Z% + 11); REMARK DISPLAY NON-TAXABLE PAY X1=320:GOSUB 210 Z%=37 + 24 * (B%-2) FOR I%=Z% TO Z% + 4 X1=47 GOSUB 215 PRINT USING MASK6.2$;S(I%) REMARK DISPLAY DEDUCTION AMOUNT NEXT I% 7105 Z%=(B%-2)*24 + 35 REMARK DISPLAY CURRENT, Q-T-D OR Y-T-D PAYROLL TOTALS Z1%=Z% + 7 X1=47 GOSUB 215 PRINT USING MASK6.2$;S(Z%) REMARK DISPLAY TOTAL PAY FOR PERIOD X1=47 GOSUB 215 PRINT USING MASK6.2$;S(Z1%) REMARK DISPLAY TOTAL DEDUCTIONS FOR PERIOD X1=47 GOSUB 215 PRINT USING MASK6.2$;S(Z%)-S(Z1%) REMARK DISPLAY TOTAL NET PAY FOR PERIOD RETURN 7110 PRINT CLEAR.SCREEN$;"SPECIAL INFORMATION FOR EMPLOYEE ";S(1) REMARK DISPLAY SPECIAL INFORMATION FOR EMPLOYEE PRINT PRINT PRINT PRINT "1. INSURANCE EXCLUSION";TAB(26); PRINT USING MASK6.2$;S(10) PRINT "2. SPARE";TAB(26); 7115 PRINT USING MASK6.2$;S(15) PRINT "3. SPARE";TAB(26); PRINT USING MASK6.2$;S(16) RETURN