1 REM THIS PROGRAM APPEARS AT PAGE 137 OF THE ITALIAN VERSION OF
2 REM "PROGRAMMING IN BASIC" 1ST EDITION, BY BYRON S. GOTTFRIED 
5 REM NOTE: EMPLOYEE NAME IS NOT ASKED, BECAUSE DIB LACKS STRING VARS
10  REM COMPUTATION OF A MONTHLY PAYROLL
15  OPTION BASE 1
20  DIM C(6,2),R(6,2),T(6,2)
30  FOR J=1 TO 2
40	FOR I=1 TO 6
50		READ C(I,J)
60	NEXT I
70  NEXT J
80  FOR J=1 TO 2
90	FOR I=1 TO 6
100		READ R(I,J)
110	NEXT I
120 NEXT J
130 FOR J=1 TO 2
140	FOR I=1 TO 6
150		READ T(I,J)
160	NEXT I
170 NEXT J
180 PRINT,"MONTHLY PAYROLL"
190 PRINT
200 REM PRINT "EMPLOYEE CODE";
210 REM INPUT N1
220 REM IF N1=0 THEN 800
230 PRINT "EMPLOYEE NUMBER";
240 INPUT N
245 IF N = 0 THEN 800
250 PRINT "GROSS SALARY";
260 INPUT P1
270 PRINT "MARITAL STATUS (MARRIED=1, SINGLE=0)";
280 INPUT M
290 PRINT "NUMBER OF EXEMPTIONS";
300 INPUT E
310 GOSUB 400
320 LET P3=P1-(T1+T2+T3)
330 PRINT "FEDERAL TAX=$";T3,"STATE TAX=$";T1,"LOCAL TAX=$";T2
340 PRINT "NET SALARY=$";P3
350 GO TO 190
360 DATA 88,133,217,433,583,917,88,183,333,708,1167,1667
370 DATA .14,.17,.20,.18,.21,.24,.14,.17,.16,.19,.21,.25
380 DATA 0,6.3,20.58,63.78,90.78,160.92,0,13.3,38.8,98.8,186.01,291.01
390
400 REM COMPUTATION OF STATE TAX, LOCAL TAX AND ADJUSTED GROSS SALARY
410
420 IF P1>2000 THEN 480
430 IF P1>600 THEN 460
440 LET T1=.01*P1
450 GO TO 490
460 LET T1=6+.015*(P1-600)
470 GO TO 490
480 LET T1=27+.02*(P1-2000)
490 IF P1 > 800 THEN 520
500 LET T2=.01*P1
510 GO TO 530
520 LET T2=8
530 LET P2=P1-54.20*E
540 IF P2>0 THEN 570
550 LET T3=0
560 RETURN
570 GOSUB 600
580 RETURN
590
600 REM COMPUTATION OF FEDERAL TAX
610
620 LET J=2
630 IF M=1 THEN 650
640 LET J=1
650 LET T3=0
660 FOR I=1 TO 6
670	IF P2>C(I,J) THEN 710
680 	IF I=1 THEN 730
690	LET T3=T(I-1,J)+R(I-1,J)*(P2-C(I-1,J))
700	GO TO 730
710 NEXT I
720 LET T3=T(I,J)+R(I,J)*(P2-C(I,J))
730 RETURN
800 END
