START ;PAYROLL NET EARNINGS REPORT RECORD PRINTREC,C ;OUTPUT RECO. FOR PRNTR PRINTBUFF, A80 ; ALLOW 80 CHARS. RECORD ,X ;REDEFINE BUFFER ,A2 PLNAME, A12 ;PRINT LINE AREAS FOR ,A1, ',' ; EMPLOYEE NAMES PFNAME, A12 ,A3 PRATE, A5 ; HOURLY WAGE RATE ,A1 PHRS, A7 ; NUMBER OF HOURS ,A3 PGROSS, A9 ; GROSS PAY ,A3 PDEDS, A8 ; DEDUCTIONS AMOUNT ,A2 PNET, A9 ; NET PAY SPACE 1 RECORD NAMFIL,C ;DATA FILE RECORD LNAME, A12 ; LAST NAME FNAME, A12 ; FIRST NAME ,A86 ; OTHER FIELDS RATE, D4 ; RATE XX.XX HRS, D4 ; HOURS XXX.X DEDS, D5 ; DEDCTNS XXX.XX ,A3 SPACE 1 RECORD ,C ;WORK VARIABLES GROSS, D6 ; CALC GROSS XXXX.XX NET, D6 ; CALC NET XXXX.XX THRS, D6 ; TOTAL HRS XXXXX.X TGROSS, D8 ; TOTAL GROSS XXXXXX.XX TDEDS, D7 ; TOTAL DEDS XXXXX.XX TNET, D8 ; TOTAL NET XXXXXX.XX KBD, D3 ;TTY INPUT DELIMITER RECCNT, D3 ;RECORD COUNTER RECORD KBREC,C ;TTY INPUT RECORD KBBUFF, A10 ; TTY INPUT BUFFER SPACE 2 PROC; CALC & TOTAL NET EARNINGS DISPLAY(1,1,1) ;CLEAR SCREEN DISPLAY(5,30,'NET EARNINGS REPORT') ;SHOW PROG. TITLE ON ERROR OPENERR ;HANDLE NO FILE ERROR OPEN, OPEN ('160107NAMFILDT') ;OPEN NAMFIL.DT ON ;RXA1: AS INTERNAL FILE 1 ON ERROR ;CLEAR ERROR LABEL DISPLAY(6,1,2) ;CLEAR ERROR LINE DISPLAY(7,1,2) ; ON SCOPE FORMS(6,2) ;SKIP 2 LINES ON LPT CALL TITLE1 ;SET UP HEADER IN BUFFER XMIT(6,PRINTREC) ; PRINT HEADER FORMS(6,2) ; DOUBLE SPACE CALL TITLE ;SET UP TITLE IN PBUFFER XMIT(6,PRINTREC) ;PRINT TITLE FORMS(6,2) ;DOUBLE SPACE SPACE 2 * ***** MAIN LINE LOOP BEGINS HERE **** READ, ;PARAG LABEL FOR MAIN LOOP INCR RECCNT ;DEMO COUNTER IF (RECCNT.GT.25) GOTO EOF ; STOP AT 25 INSTEAD OF EOF INPUT(01,NAMFIL,EOF) ;READ INTO REC NAMFIL GROSS= (RATE*HRS +5) /10 ;MULT & ROUND FOR GROSS NET = GROSS-DEDS ;SIMPLE SUB FOR NET * ***** BUILD TOTALS NEXT ***** THRS = THRS + HRS TGROSS = TGROSS + GROSS TDEDS = TDEDS + DEDS TNET = TNET + NET SPACE 1 * **** BUILD PRINT BUFFER NEXT PLNAME = LNAME ;LAST NAME PRINTBUFF(15,15) = ',' PFNAME = FNAME ;FIRST NAME PRATE = RATE, 'XXX.XX' ;EDITED RATE PHRS = HRS, 'XXXXX.X' ;EDITED HOURS PGROSS = GROSS, 'XXXXX.XX-' ;EDITED GROSS PDEDS = DEDS, 'XXXX.XX-' ;EDITED DEDUCTIONS PNET = NET, 'XXXXX.XX-' ;EDITED NET * ***** PRINT A LINE *************** XMIT(6,PRINTREC) ;OUTPUT TO LPT ; GOTO READ ;LOOP UNTIL EOF SPACE 3 ***** EOF PROCESSING ************* EOF, FINI(01) ;CLOSE NAMFIL FORMS(6,4) ;SPACE 4 LINES CALL TITLE ;BUILD TITLE LINE PRINTBUFF(7,35) = 'TOTAL' ;CLEAR EMP NAME XMIT(6,PRINTREC) ;WRITE TOTAL TITLE FORMS(6,2) ;DOUBLE SPACE PRINTBUFF = ;CLEAR PRINT BUFFER PHRS = THRS, 'XXXXX.X' ;MOVE TOTALS INTO PGROSS = TGROSS, 'XXXXXX.XX' ; PRINT LINE PDEDS = TDEDS, 'XXXX.XX-' PNET = TNET, 'XXXXX.XX-' XMIT(6,PRINTREC) ;WRITE TOTAL LINE!!!! FORMS(6,0) ;FORM FEED FINI(06) DISPLAY(10,35,'FINISHED') ;SHOW END-OF-JOB DISPLAY(12,1,0) ;RETURN CURSOR STOP ;********** END ************ SPACE 3 OPENERR, DISPLAY(6,10,'FILE NAMFIL.DT NOT FOUND ON RXA1:') DISPLAY(7,10,'PLEASE MOUNT IT AND TYPE ') ACCEPT(KBD,KBBUFF) ;WAIT FOR INPUT GOTO OPEN ;THEN RETURN SPACE 2 TITLE, ;BUILD TITLE LINE PRINTBUFF = ;CLEAR BUFFER PRINTBUFF(7,20) = 'EMPLOYEE NAME' PRATE = 'RATE' ;USE LITERAL CONSTANTS PHRS = ' HOURS' ; FOR TITLES PGROSS = ' GROSS' PDEDS = ' DEDS' PNET(5,7) = 'NET' RETURN TITLE1, PRINTBUFF = ;CLEAR BUFFER PRINTBUFF(27,64)='PAYROLL NET EARNINGS REPORT' RETURN ;SET UP HEADER END