Works out an employee’s wages for a pay period. The menu has three ways to handle overtime: hours entered separately (8-hour overtime), hours over 40 in the week counted as overtime, and a monthly or twice-monthly period with overtime entered separately. The program asks for the employee’s name, hourly rate, hours and deductions, then prints a pay statement with overtime at time and a half. Pressing Z copies the statement to the ZX printer.
Program Analysis
Program Structure
Lines 100–360 draw a frame with PLOT and show the three-item menu. Each option has a block for its inputs (1000, 2000 and 3000). Option 2 splits any hours above 40 into overtime at lines 2500–2540. All three continue into the shared deductions, date and statement code from line 1110. The data-entry screen is cleared by calling SCROLL 22 times, and the statement is then printed from the top.
Potential Issues
- The labels for net and gross pay are swapped: “NET PAY” (line 1290) shows the total before deductions, and “GROSS PAY” (line 1310) shows it after deductions.
- Options 1 and 3 do exactly the same calculation and differ only in their prompts.
Source Code
100 FAST
110 CLS
120 FOR N=0 TO 63
130 PLOT N,43
140 PLOT N,0
150 IF N<43 THEN PLOT 0,N
160 IF N<43 THEN PLOT 63,N
170 NEXT N
200 PRINT AT 2,7;"█[Q][U][I][C][K]█[P][A][Y][R][O][L][L]█"
210 PRINT AT 4,4;"8 HOUR OVERTIME";TAB 26;"█[1]█"
220 PRINT AT 6,4;"40 HOUR OVERTIME";TAB 26;"█[2]█"
230 PRINT AT 8,4;"MONTHLY OR BI-MONTHLY";AT 9,4;"WITH 8 HOUR OVERTIME";TAB 26;"█[3]█"
250 SLOW
300 PRINT AT 19,6;"█[E][N][T][E][R]█[O][N][E]█[O][F]█[A][B][O][V][E]█";AT 19,6;" ENTER ONE OF ABOVE "
310 LET A$=INKEY$
320 IF CODE A$<29 OR CODE A$>31 THEN GOTO 300
330 FAST
340 CLS
350 SLOW
360 GOTO VAL A$*1000
1000 PRINT "WHAT IS THE EMPLOYEE NAME?"
1010 INPUT N$
1020 PRINT N$
1030 PRINT ,,"WHAT IS THE HOURLY WAGE?"
1040 INPUT HW
1050 PRINT "HOURLY WAGE IS $";HW
1060 PRINT ,,"TOTAL WEEKS REGULAR HOURS?"
1070 INPUT RH
1080 PRINT RH;" REGULAR HOURS"
1090 PRINT ,,"TOTAL WEEKS OVERTIME HOURS?"
1095 INPUT OT
1100 PRINT OT;" OVERTIME HOURS"
1110 PRINT ,,"TOTAL DEDUCTIONS = ";
1120 INPUT TD
1130 PRINT "$";TD
1170 PRINT ,,"WHAT IS THE DATE ENDING THE PAY PERIOD?"
1180 INPUT D$
1190 PRINT "DATE: ";D$
1200 FOR N=1 TO 22
1210 SCROLL
1220 NEXT N
1230 PRINT AT 0,0;"WAGE FOR PERIOD ENDING ";D$
1240 PRINT "EMPLOYEE - ";N$
1250 PRINT ,,RH;" REGULAR HOURS AT ";HW;"/HR"
1260 PRINT "= $";RH*HW
1270 PRINT ,,OT;" OVERTIME HOURS AT ";1.5*HW;"/HR"
1280 PRINT "= $";OT*HW*1.5
1290 PRINT ,,"NET PAY = $";RH*HW+OT*HW*1.5
1300 PRINT "TOTAL DEDUCTIONS = ";TD
1310 PRINT ,,"GROSS PAY = $";RH*HW+OT*HW*1.5-TD
1500 PAUSE 40000
1510 IF INKEY$ ="Z" THEN COPY
1520 FAST
1530 RUN
2000 PRINT "WHAT IS THE EMPLOYEE NAME?"
2010 INPUT N$
2020 PRINT N$
2030 PRINT ,,"WHAT IS THE HOURLY WAGE?"
2040 INPUT HW
2050 PRINT "HOURLY WAGE IS $";HW
2060 PRINT ,,"TOTAL WEEKS HOURS WORKED?"
2070 INPUT RH
2200 IF RH>40 THEN GOTO 2500
2210 PRINT RH;" REGULAR HOURS"
2220 LET OT=0
2230 GOTO 1110
2500 LET OT=RH-40
2510 LET RH=40
2520 PRINT RH;" REGULAR HOURS"
2530 PRINT OT;" OVERTIME HOURS"
2540 GOTO 1110
3000 PRINT "WHAT IS THE EMPLOYEE NAME?"
3010 INPUT N$
3020 PRINT N$
3030 PRINT ,,"WHAT IS THE HOURLY WAGE?"
3040 INPUT HW
3050 PRINT "HOURLY WAGE IS $";HW
3060 PRINT ,,"TOTAL HOURS WORKED IN PERIOD?"
3070 INPUT RH
3080 PRINT RH;" REGULAR HOURS"
3090 PRINT ,,"TOTAL PERIOD OVERTIME HOURS?"
3100 INPUT OT
3110 PRINT OT;" OVERTIME HOURS"
3120 GOTO 1110
9998 SAVE "QUICK-PA[Y]"
9999 RUNNote: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.
