REMARK *******************************************\ * P/R050.BAS PAYROLL TRANSACTION ENTRY *\ * 5/16/79 5:45 PM *\ ******************************************* %INCLUDE CURSOR DIM S(1),T2(8),W$(5),P$(7),R$(5),R2(5),G3(5),G2$(5) DEF FNR(Z1)=INT(Z1*100+.5)/100 REMARK ROUNDING FUNCTION DEF FNEXACT(X0,X1)=X0*100+X1 REMARK KEY LOCATOR FUNCTION %INCLUDE PRNMASK GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO 1020 A4=X1 REMARK ENTER AND REDISPLAY JOB NUMBER ON CRT X2=6 X3=0 X4=999999 GOSUB 345 GOSUB 210 PRINT USING MASK6$;X0 RETURN 1040 K=FNEXACT(T2(6),0) Y2=4 RECORD.COUNT=JOB.RECORDS %INCLUDE PR-SEARCH 5300 IF T2(4)=3 OR T2(4)=0 THEN 5600 REMARK REJECT ENTRY IF PROHIBITED BY WORK TYPE X1=586 GOSUB 1020 REMARK ENTER JOB NUMBER IF X0=0 THEN RETURN T2(6)=X0 K$=STR$(T2(6)) GOSUB 1040 REMARK REMARK LOCATE JOB HEADER IF H = -1 THEN X2$="NOT ON FILE":GOSUB 615 REMARK WARN IF JOB HEADER NOT ON FILE RETURN 5350 IF T2(4)<>2 THEN 5600 REMARK ENTER DEPARTMENT NUMBER IF WORK TYPE CODE=2 X1=654 X2=2 X3=0 X4=10 GOSUB 345 T2(5)=X0 RETURN 5400 IF T2(3)=0 THEN GOTO 5600 REMARK IF PAY TYPES ARE INCONSISTENT, REJECT ENTRY IF T2(3)=2 AND R2(1)=1 THEN GOTO 5600 5405 X1=715:X2=5:X3=0:X4=99.99:GOSUB 345 REMARK ENTER HOURS HOURS=HOURS+X0-T2(7) T2(7)=X0 5408 X1=737 GOSUB 210 PRINT USING MASK2.2$;HOURS REMARK DISPLAY TOTAL HOURS ENTERED SO FAR FOR EMPLOYEE RETURN 5450 IF T2(3)<> 4 THEN 5600 REMARK ENTER QUANTITY FOR PIECEWORK TRANSACTIONS X1=778:X2=6:X3=1:X4=999999:GOSUB 345 N=X0 5460 T2(8)=FNR(N*N1) REMARK CALCULATE AND DISPLAY PIECEWORK AMOUNT X1=905 GOSUB 210 PRINT USING MASK4.2$;T2(8) RETURN 5500 IF T2(3)=4\ REMARK IF PAY TYPE=4, THEN ENTER PIESEWORK RATE THEN\ X1=841:X2=7:X3=0:X4=9999.99:GOSUB 345:\ N1=X0:\ GOTO 5460\ REMARK RE-DISPLAY PIECEWORK AMOUNT ELSE GOTO 5600 5550 IF R2(1)<>1 OR T2(3)<>2 THEN GOTO 5600 REMARK ENTER VACATION PAY AMOUNT FOR HOURLY EMPLOYEES X1=905:X2=7:X3=0:X4=9999.99:GOSUB 345 T2(8)=X0 RETURN 5600 X2$="OUT OF RANGE" REMARK DISPLAY ERROR BULLETIN ON CRT GOSUB 615 RETURN 5650 X1=524 REMARK CLEAR TRANSACTION DATA FROM SCREEN FOR NEXT ENTRY GOSUB 210 PRINT TAB(20) FOR I%=1TO 6 X1=10 GOSUB 215 PRINT " " NEXT I% RETURN 5700 X2$="INCONSISTENT" REMARK FLASH THIS ERROR MESSAGE WHEN TYPE CODES DO NOT\ AGREE WITH EMPLOYEE RECORD OR DATA ENTERED GOSUB 615 RETURN 5750 IF X0=0\ THEN\ PRINT #Y4,TRANSACTION.COUNT%+1;\ REMARK SAVE TRANSACTION RECORD ON DISK IF X0 IS ZERO T2(1),G3(5),T2(3),T2(4),T2(5),T2(6),T2(7),T2(8):\ TRANSACTION.COUNT%=TRANSACTION.COUNT%+1:\ CLOSE Y4:\ OPEN "P/R0F040.DAT" RECL 42 AS Y4:\ X1=524:\ GOSUB 210:\ PRINT "***RECORDED***":\ FOR I=1 TO 60:\ NEXT I:\ GOTO 5760 5755 X2$="CANCEL" REMARK IF CODE ENTERED=99, THEN CANCEL TRANSACTION X9=99 GOSUB 615 IF T2(7)=0 THEN 5760 HOURS=HOURS-T2(7) GOSUB 5408 5760 FOR I%=5 TO 8 REMARK INITIALIZE TRANSACTION RECORD VARIABLES T2(I%)=0 NEXT I% N=0 N1=0 GOSUB 5650 REMARK CLEAR SCREEN OF PREVIOUS TRANSACTION DATA 5767 RETURN 5770 X9=0 X2$="USE ALPHA KEYS TO SET UP NEXT TRANSACTION(D=NO CHANGE;E=EXIT)" X2=1:X3=0:X4=0:X0=0:GOSUB 665 REMARK PROMPT FOR ALPHA KEY ENTRY IF X0$="" OR X0$="D" THEN RETURN REMARK IF NO CHANGES SPECIFIED, RETURN IF X0$<"A" OR X0$>"E"\ REMARK REJECT INVALID ALPHA ENTRIES THEN X2$="OUT OF RANGE":GOSUB 615:GOTO 5770 IF X0$ = "E" THEN GOTO 7300 REMARK END PROGRAM IF 'E' WAS ENTERED F=ASC(X0$)-64 REMARK GET THE DECIMAL VALUE OF THE LETTER KEYED IN X9=T2(1) ON F GOSUB 7200,7400,7350 REMARK CHANGE EMPLOYEE, PAY TYPE OR WORK TYPE BASED ON CODE GOTO 5770 6000 MASK12$="/############/" REMARK START OF MAINLINE MASKA$=" # /############/" Y4=3 Y8=4 Y9=5 OPEN "P/R0F110.DAT" RECL 1150 AS 1 REMARK OPEN EMPLOYEE MASTER FILE OPEN "G/I0F010.DAT" RECL 200 AS Y9 OPEN "P/R0F040.DAT" RECL 42 AS 3 REMARK OPEN TRANSACTION FILE OPEN "JOB0F100.DAT" RECL 160 AS 4,"CRT" RECL 1100 AS 19 REMARK OPEN JOB KEY FILE AND CRT MASK FILE GOSUB 700 REMARK LOAD GENERAL INFORMATION FILE RECS%=0 REMARK SEARCH TRANSACTION FILE FOR EOF IF END #Y4 THEN 6020 FOR F%=10 TO 1 STEP -1 REMARK SEARCH IN A FILE 1024 RECORDS MAXIMUM READ #Y4,(2^F%)+RECS%;LINE X$ RECS%=RECS% + 2^F% 6020 NEXT F% TRANSACTION.COUNT%=RECS% P$(1)="SALARY" REMARK SET UP PAY AND WORK TYPE DESCRIPTIONS P$(2)="HOURLY" P$(3)="VACATION" P$(4)="HOLIDAY" P$(5)="PIECE WORK" P$(6)="OVERTIME" P$(7)="COMP TIME" 6028 W$(1)="N/A" W$(2)="PHASE I" W$(3)="PHASE II" W$(4)="NO JOB NO." W$(5)="JOB NO." X0=5 REMARK LOAD AND DISPLAY CRT MASK NUMBER 5 GOSUB 260 X1=23 REMARK DISPLAY TODAY'S DATE X0=G3(1) GOSUB 680 X1=7 GOSUB 215 PRINT G3(5) REMARK DISPLAY DAY NUMBER GOSUB 7150 REMARK ENTER COMPANY NUMBER AND NAME GOSUB 7400 REMARK PROMPT OPERATOR FOR PAY TYPE GOSUB 7350 REMARK PROMPT OPERATOR FOR WORK TYPE 6140 IF T2(4)=1 OR T2(4)=2 OR T2(4)=4\ REMARK ENTER JOB NUMBER IF PHASE 1,2 OR TYPE=4 THEN GOSUB 5300 IF T2(4)=2 THEN GOSUB 5350 REMARK ENTER DEPARTMENT NUMBER IF PHASE 2 IF T2(3)=1\ REMARK IF PAY TYPE IS 1,3,5 OR 6, REQUEST HOURS OR T2(3)=3\ OR T2(3)=5\ OR T2(3)=6\ THEN\ GOSUB 5400 IF T2(3)=4 THEN\ REMARK ENTER HOURS AND RATE FOR PIECEWORK PAY TYPES GOSUB 5400:\ GOSUB 5450:\ GOSUB 5500 IF T2(3) <> 2 THEN GOTO 6155 IF R2(1)=1 THEN GOSUB 5550\ REMARK ENTER VACATION PAY AMOUNT FOR HOURLY EMPLOYEE ELSE GOSUB 5400 REMARK ENTER VACATION HOURS FOR SALARIED EMPLOYEE 6155 X=0:X2=2:X3=0:X4=99 REMARK PROMPT OPERATOR FOR CHANGES TO ENTERED FIELDS X2$="ENTER FIELD TO CHANGE ('0' = NONE; '99' TO CANCEL)" GOSUB 665 F=X0 IF F>6 AND F < 99\ THEN\ X2$="OUT OF RANGE":GOSUB 615:GOTO 6155 IF F=0 THEN GOTO 6175 IF F=99 THEN GOTO 6180 REMARK IF FIELD TO CHANGE = 99, CANCEL TRANSACTION ON F GOSUB 5300,5350,5400,5450,5500,5550 REMARK CHANGE FIELDS AND RE-PROMPT GOTO 6155 6175 X0=0 REMARK SAVE TRANSACTION RECORD ON FILE 6180 GOSUB 5750 IF T2(4)=0 OR T2(4)=3 THEN GOSUB 7200 ELSE GOTO 6185 IF X0>0 THEN GOTO 6140 REMARK IF NEW EMPLOYEE=0 OR WORK TYPE NOT 0 OR 3, 6185 GOSUB 5770 REMARK ALLOW ALPHA-KEY FIELD CHANGES GOTO 6140 GOSUB 265 REMARK DISPLAY CURRENT TRANSACTION DATA ON CRT X1=23 X0=G3(1) GOSUB 680 REMARK DISPLAY DATE X1=7 GOSUB 215 PRINT G3(5) REMARK DISPLAY DAY NUMBER AND COMPANY NAME GOSUB 7160 X1=12 GOSUB 215 GOSUB 7265 REMARK DISPLAY EMPLOYEE NUMBER AND NAME 7010 X1=12 GOSUB 215 PRINT USING MASKA$;T2(3),P$(T2(3)+1) REMARK DISPLAY PAY TYPE AND DESCRIPTION X1=12 GOSUB 215 PRINT USING MASKA$;T2(4),W$(T2(4)+1) REMARK DISPLAY WORK TYPE AND DESCRIPTION PRINT X1=11 GOSUB 215 PRINT USING MASK6$;T2(6) REMARK DISPLAY JOB NUMBER X1=13 GOSUB 215 PRINT USING MASK2$;T2(5) REMARK DISPLAY DEPARTMENT NUMBER 7070 X1=12 GOSUB 215 PRINT USING MASK2.2$;T2(7); REMARK DISPLAY HOURS X1=18 GOSUB 215 PRINT USING MASK2.2$;HOURS REMARK DISPLAY TOTAL HOURS ENTERED FOR THIS EMPLOYEE X1=11 GOSUB 215 PRINT USING MASK6$;N REMARK DISPLAY PIECEWORK QUANTITY X1=10 GOSUB 215 PRINT USING MASK4.2$;N1 REMARK DISPLAY PIECEWORK RATE X1=10 GOSUB 215 PRINT USING MASK4.2$;T2(8) REMARK DISPLAY TRANSACTION AMOUNT RETURN 7150 GOSUB 7160 REMARK FIRST ENTRY OF EMPLOYEE NUMBER GOSUB 7200 IF X0=0 THEN GOTO 7300 REMARK IF ZERO ENTERED, END PROGRAM RETURN 7160 X1=267 GOSUB 210 PRINT USING" ## /123456890123456789012/";G1,G2$(1) RETURN 7200 REMARK **********PROMPT FOR ENTRY OF EMPLOYEE NUMBER********** X1=332 X2=3 X3=0 X4=999 GOSUB 345 IF X0=0 AND T2(4)=0 THEN RETURN IF X0=0 AND T2(4)=3 THEN RETURN IF X0>MSTR.RECORDS OR X0=0 THEN GOSUB 5600:GOTO 7200 REMARK FLASH ERROR MESSAGE IF EMPLOYEE NUMBER IS INVALID GOSUB 745 REMARK READ EMPLOYEE MASTER RECORD IF S(1)=0 THEN X2$="EMPLOYEE NOT ON FILE":GOSUB 615:GOTO 7200 REMARK IF EMPLOYEE IS INACTIVE OR DELETED, FLASH ERROR IF R2(1)=99 THEN X2$="EMPLOYEE INACTIVE":GOSUB 615:GOTO 7200 7260 HOURS=0 REMARK INITIALIZE TOTAL ENTERED HOURS FOR THIS EMPLOYEE GOSUB 5408 T2(1)=S(1) X1=331 GOSUB 210 7265 PRINT USING MASK4$+" "+MASK.22A$;S(1),R$(1) REMARK DISPLAY EMPLOYEE NUMBER AND NAME IF R2(1)=1 AND T2(3)=0 THEN GOSUB 5700 REMARK FLASH OPERATOR WARNING IF NEEDED RETURN 7300 PRINT CLEAR.SCREEN$;"P/R TRANS. ENTRY LOADING MENU" REMARK TERMINATE PROGRAM AND LOAD MENU HERE CHAIN "P/R000" 7350 X1=462 REMARK CHANGE WORK TYPE SUBROUTINE X2=1 X3=0 X4=4 GOSUB 345 T2(4)=X0 X1=X1+2 GOSUB 210 PRINT USING MASK12$;W$(T2(4)+1); REMARK DISPLAY WORK TYPE AND CORRESPONDING DESCRIPTION RETURN 7400 X1=398 REMARK CHANGE PAY TYPE SUBROUTINE X2=1 X3=0 X4=6 GOSUB 345 T2(3)=X0 X1=X1+2 GOSUB 210 PRINT USING MASK12$;P$(T2(3)+1) IF R2(1)=1 AND T2(3)=0 THEN GOSUB 5700 REMARK FLASH OPERATOR WARNING IF INDICATED RETURN 745 REMARK *************READ MASTER RECORD************** READ #1,X0;R$(1),R$(2),R$(3),R$(4),R1.0,R2.0,R2(1),R2(2),R2(3),R2(4),\ R2(5),R3$,S(1) RETURN