REMARK *********************************************\ * P/R06B.BAS TRANSACTION FILE MAINTENANCE *\ * 5/16/79 11:00 AM *\ ********************************************* DIM P$(7),W$(5),T2(8),G3(5),G2$(5) %INCLUDE PRNMASK %INCLUDE CURSOR GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO 780 IF END #Y4 THEN 795 READ #Y4,X0;T2(1),T2(2),T2(3),T2(4),T2(5),T2(6),T2(7),T2(8) REMARK READ TRANSACTION RECORD RETURN 795 R1=99:RETURN 800 PRINT #Y4,X0;T2(1),T2(2),T2(3),T2(4),T2(5),T2(6),T2(7),T2(8) REMARK WRITE TRANSACTION RECORD RETURN REMARK ***** LINE PRINTER ROUTINE ***** 825 A1=59 REMARK SET CARRIAGE WIDTH IF LINE.COUNT% < 55 THEN RETURN REMARK IF SPACE REMAINS ON REPORT PAGE, RETURN PRINT CHR$(12); P=P+1 PRINT PRINT TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; X0=G3(1):GOSUB 680.5 REMARK PRINT TODAY'S DATE PRINT PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE ";P PRINT TAB((A1-6)/2);"DAY";G3(5) PRINT PRINT " LOC. EMP. DAY PT HOURS WT JOB NO. DEPT AMOUNT" PRINT LINE.COUNT%=6 REMARK RESET LINE COUNTER FOR NEW PAGE RETURN 5300 X1=530:X2=1:X3=0:X4=6:GOSUB 345 REMARK CHANGE PAY TYPE T2(3)=X0 X1=530:GOSUB 210 PRINT USING "# /123456789012/";T2(3),P$(T2(3)+1) REMARK DISPLAY PAY TYPE AND CORRESPONDING DESCRIPTION RETURN 5350 X1=594:X2=1:X3=0:X4=4:GOSUB 345 REMARK CHANGE WORK TYPE T2(4)=X0 X1=594:GOSUB 210 PRINT USING "# /123456789012/";T2(4),W$(T2(4)+1) REMARK DISPLAY WORK TYPE AND CORRESPONDING DESCRIPTION RETURN 5400 X1=653:X2=6:X3=0:X4=999999:GOSUB 345 REMARK CHANGE JOB NUMBER T2(6)=X0 RETURN 5450 X1=721:X2=2:X3=0:X4=99 REMARK CHANGE DEPARTMENT NUMBER GOSUB 345 T2(5)=X0 RETURN 5500 X1=782:X2=5:X3=0:X4=99.99:GOSUB 345 REMARK CHANGE HOURS T2(7)=X0 RETURN 5550 X1=844:X2=7:X3=0:X4=9999.99:GOSUB 345 REMARK CHANGE AMOUNT T2(8)=X0 RETURN 6000 MASKA$=" # /13456789012/" REMARK SET UP PRINT MASKS MASKB$="#### /134567890123456789012/" MASKC$=" ## /13456789012345678901234 /" MASKD$="#### #### ## #" %INCLUDE PRNMASK Y4=1:Y9=2 OPEN "P/R0F040.DAT" RECL 42 AS 1 REMARK OPEN PAYROLL TRANSACTION FILE OPEN "G/I0F010.DAT" RECL 200 AS Y9:GOSUB 700 REMARK OPEN AND LOAD GENERAL INFORMATION FILE OPEN "CRT" RECL 1100 AS 19 P$(1)="SALARY" REMARK SET UP PAY TYPE DESCRIPTIONS P$(2)="HOURLY" P$(3)="VACATION" P$(4)="HOLIDAY" P$(5)="PIECE WORK" P$(6)="OVERTIME" P$(7)="COMP TIME" W$(1)="N/A" REMARK SET UP WORK TYPE DESCRIPTIONS W$(2)="PHASE 1" W$(3)="PHASE II" W$(4)="NO JOB NO." W$(5)="JOB NO." X0=6:GOSUB 260 REMARK LOAD TRANSACTION F/M CRT MASK 6020 CONSOLE IF B>0 THEN GOSUB 265 X2=1:X3=0:X4=2 X2$="ENTER OPERATION (1=PRINT; 2=CHANGE OR DELETE; 0=END)" REMARK ENTER OPERATION CODE GOSUB 665 IF X0=0 THEN PRINT CLEAR.SCREEN$;:\ REMARK IF CODE=0, TERMINATE PROGRAM AND LOAD MENU PRINT "P/R TRANSACTION FILE MAINTENANCE LOADING MENU":\ CHAIN "P/R000" OPERATION.CODE=X0 IF OPERATION.CODE=2 THEN GOTO 6300 6100 X1=275:X2=4:X3=0:X4=9999:GOSUB 345 REMARK ENTER START TRANSACTION REFERENCE NUMBER B=X0 IF B=0 THEN 6020 REMARK IF ZERO WAS ENTERED, PROMPT FOR OPERATION CODE X1=286:X2=4:X3=B:X4=9999:GOSUB 345 REMARK ENTER END TRANSACTION NUMBER E=X0 X2=1:X3=0:X4=1:X2$="ENTRY CORRECT":GOSUB 665 REMARK VERIFY ENTRY IF X0 <> 1 THEN 6100 CLOSE Y4 OPEN "P/R0F040.DAT" RECL 42 AS Y4 Z=0:S2=0:R1=0:P=0 REMARK SET EMPLOYEE VARIABLE, EOF FLAG AND PAGE COUNT LINE.COUNT%=60 LPRINTER REMARK SET PRINTER AS OUTPUT DEVICE X4$="PAYROLL TRANSACTION REPORT" FIRST.EMPL=1 6120 X0=B REMARK READ TRANSACTION RECORD FROM FILE GOSUB 780 IF R1=99 OR B>E THEN Z=9000000000:GOTO 6145 REMARK PRINT LAST EMPLOYEE TOTALS IF T2(1)=S2 THEN 6170 REMARK PRINT DETAIL IF EMPLOYEE HAS NOT CHANGED IF FIRST.EMPL=1 THEN FIRST.EMPL=0:GOTO 6167 REMARK IF FIRST RECORD, DON'T BREAK FOR TOTALS IF S1=0 THEN 6155 REMARK DON'T BREAK FOR TOTALS IF ONLY ONE TRANSACTION\ EXISTS FOR THIS EMPLOYEE 6145 GOSUB 825 REMARK CHECK FOR END OF REPORT PAGE PRINT TAB(20);:PRINT USING MASK4.2$;S1 REMARK PRINT EMPLOYEE TOTAL LINE.COUNT%=LINE.COUNT%+1 6155 PRINT REMARK SPACE ONE LINE AND SET EMPLOYEE TOTAL TO ZERO LINE.COUNT%=LINE.COUNT%+1 S1=0 IF Z=9000000000 THEN 6020 REMARK IF END OF RANGE, PROMPT FOR OPERATION CODE 6167 S2=T2(1) 6170 LINE.COUNT%=LINE.COUNT%+1 GOSUB 825 REMARK CHECK FOR END OF PAGE S1=S1+T2(7) REMARK ACCUMULATE HOURS FOR THIS EMPLOYEE'S TRANSACTIONS PRINT USING MASKD$;B,T2(1),T2(2),T2(3); REMARK PRINT EMPLOYEE NUMBER,DAY NUMBER AND PAY TYPE IF T2(7)>0 THEN PRINT " ";:PRINT USING MASK2.2$;T2(7); REMARK PRINT HOURS IF GREATER THAN ZERO PRINT TAB(29); IF T2(4)>0 THEN PRINT T2(4); REMARK PRINT WORK TYPE IF GREATER THAN ZERO PRINT TAB(33); IF T2(6)>0 THEN PRINT USING MASK6$;T2(6); REMARK PRINT JOB NUMBER " "" "" "" "" PRINT TAB(45); IF T2(5)>0 THEN PRINT USING "##";T2(5); REMARK PRINT DEPARTMENT " "" "" "" "" PRINT TAB(49); IF T2(8)>0 THEN PRINT USING MASK4.2$;T2(8); REMARK PRINT TRANS. AMT " "" "" "" "" PRINT B=B+1 REMARK INCREMENT RECORD POINTER AND GET NEXT RECORD GOTO 6120 6300 X1=275:X2=4:X3=0:X4=9999:GOSUB 345 REMARK ENTER REFERENCE NUMBER FOR TRANSACTION TO CHANGE R1=0 IF X0>0 THEN 6310 X2=3:X3=0:X4=999:X2$="ENTER EMPLOYEE NUMBER":GOSUB 665 REMARK IF ZERO WAS ENTERED, SEARCH FOR TRANSACTION RECORD\ BASED ON EMPLOYEE NUMBER IF X0=0 THEN 6020 REMARK IF EMPLOYEE NUMBER=0, PROMPT FOR OPERATION CODE X=X0 X0=0 T2(1)=0 WHILE X > T2(1) REMARK SCAN THE FILE UNTIL KEY IS MATCHED OR SURPASSED X0=X0+1 GOSUB 780 IF R1=99 THEN T2(1)=9999 WEND IF T2(1)=X THEN B=X0:GOTO 6315\ REMARK IF A MATCH WAS FOUND, RETURN;OTHERWISE, ELSE\ REMARK FLASH ERROR BULLETIN AND REQUEST OPERATION CODE X2$="NOT ON FILE":GOSUB 615:GOTO 6020 6310 B=X0 E=0 GOSUB 780 6315 IF R1=99 THEN 6020 GOSUB 7000 REMARK DISPLAY TRANSACTION DATA ON CRT 6320 X2=2:X3=-1:X4=6 X2$="ENTER FIELD TO CHANGE (0=NONE; -1=CHANGE OPERATION)" REMARK REQUEST FIELD TO CHANGE FOR THIS TRANSACTION GOSUB 665 IF X0=0 THEN X0=B:GOSUB 800:GOTO 6330 REMARK IF NO CHANGES, SAVE RECORD & GET NEXT TRANSACTION F=X0 IF F=-1 THEN 6020 REMARK IF -1 ENTERED, REQUEST NEW OPERATION CODE ON F GOSUB 5300,5350,5400,5450,5500,5550 REMARK CHANGE RECORD BASED ON FIELD NUMBER ENTERED GOTO 6320 6330 B=B+1:X0=B REMARK LOCATE NEXT TRANSACTION IN FILE... GOSUB 780 IF R1<>99 THEN GOSUB 7000:GOTO 6320\ REMARK DISPLAY IT IF FOUND;IF NOT, PROMPT OPERATOR ELSE\ REMARK FOR ANOTHER TRANSACTION REFERENCE NUMBER GOTO 6300 7000 X1=274:GOSUB 210 REMARK DISPLAY CURRENT TRANSACTION DATA ON CRT PRINT USING MASKC$;B REMARK DISPLAY TRANSACTION REFERENCE NUMBER PRINT X1=14:GOSUB 215 PRINT USING MASK6$;T2(1) REMARK DISPLAY EMPLOYEE NUMBER X1=16:GOSUB 215 PRINT USING MASKB$;T2(2) REMARK DISPLAY DAY NUMBER X1=16:GOSUB 215 PRINT USING MASKA$;T2(3),P$(T2(3)+1) REMARK DISPLAY PAY TYPE AND CORRESPONDING DESCRIPTION X1=16:GOSUB 215 PRINT USING MASKA$;T2(4),W$(T2(4)+1) REMARK DISPLAY WORK TYPE AND CORRESPONDING DESCRIPTION X1=14 GOSUB 215 PRINT USING MASK6$;T2(6) REMARK DISPLAY JOB NUMBER X1=14:GOSUB 215 PRINT USING MASK6$;T2(5) REMARK DISPLAY DEPARTMENT NUMBER X1=15:GOSUB 215 PRINT USING MASK2.2$;T2(7) REMARK DISPLAY HOURS X1=13:GOSUB 215 PRINT USING MASK4.2$;T2(8) REMARK DISPLAY TRANSACTION AMOUNT RETURN