1  REM  ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM        PAYPRF:  CTC PAYROLL PROGRAM, PART 9 OF 34
4  REM
5  REM        36213  REV B  6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ***********************************
8  REM
9  REM
10  DIM E$[22],A$[25],B$[20],D$[10],C$[30]
11  DIM E[17],F[32],T[30],I[16]
50  MAT T=ZER
100  FILES E1,E2,EP1,EP2,ETRAN,EAUX
150  PRINT "WHICH PRINTER: (1) ACCOUNTING (2) ABDICK";
155  INPUT P5
160  IF P5=1 OR P5=2 THEN 200
165  PRINT '7'7'7'7'7"WHAT";
170  GOTO 155
200  READ E9,E7
210  DATA 2,17
220  READ #(2*E9+2),1;A9,M9
400  PRINT "ENTER TODAY'S DATE";
410  INPUT D$
420  L=LEN(D$)
430  IF L>4 AND L<7 THEN 440
435  PRINT '7'7'7'7"INVALID DATA";
437  GOTO 400
440  REM
1000  PRINT " ";
1001  PRINT '18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18;
1002  K=4
1005  GOSUB 9910
1010  PRINT TAB(28)"P A Y R O L L  H O U R S  P R O O F";
1015  K=1
1017  GOSUB 9900
1020  K=42
1030  GOSUB 9100
1040  P8=7
1050  GOSUB 8000
1060  PRINT "NON-EXEMPT";
1070  GOSUB 5000
1160  GOSUB 6100
1240  GOSUB 8210
1245  PRINT "EXEMPT";
1250  T3=T4=T5=T6=0
1252  MAT T=ZER
1260  D$="R"
1270  FOR I1=1001 TO M9
1275  U6=I1
1277  GOSUB 4000
1280  IF  NOT B1 THEN 1295
1285  PRINT '7'7'7'7'7'7"ERROR IN A9"
1290  STOP 
1295  GOSUB 4085
1300  IF  NOT B1 THEN 1330
1302  IF S9 OR S8 THEN 1330
1305  IF F[1]#0 THEN 1312
1307  T2=80
1310  GOTO 1314
1312  T2=F[1]
1314  T3=F[2]
1316  T4=F[3]
1320  T5=F[4]
1325  GOSUB 1406
1330  NEXT I1
1340  GOSUB 6100
1350  PRINT 
1355  PRINT 
1360  PRINT "DO YOU WANT THE TRANSACTION FILE CLEARED";
1365  INPUT A$
1370  IF A$[1,1]="N" THEN 1380
1375  PRINT #N1,1; END 
1380  END 
1400  REM
1401  IF D$#"R" THEN 1545
1406  PRINT TAB(14);
1407  X$=" "
1410  Z$="####  "
1415  Z[1]=U6
1417  GOSUB 9000
1420  T[1]=T[1]+U6
1425  PRINT E$;TAB(44);
1430  Z$="+###.##   "
1435  Z[1]=T2
1440  GOSUB 9000
1445  T[2]=T[2]+T2
1455  CHAIN Z[1]=T3
1460  GOSUB 9000
1465  T[3]=T[3]+T3
1480  Z[1]=T4
1485  GOSUB 9000
1490  T[4]=T[4]+T4
1505  Z[1]=T5
1510  GOSUB 9000
1515  T[5]=T[5]+T5
1532  K=1
1533  GOSUB 9900
1535  P9=P9+2
1540  GOSUB 8200
1545  RETURN 
4000  B1=0
4010  IF U6<1001 THEN 4070
4015  R=U6-1000
4020  FOR I=1 TO E9
4025  IF R <= I*200 THEN 4080
4030  NEXT I
4035  PRINT "EMP#>";E9*200;" FILE SPACE LIMIT"'13;
4070  B1=1
4075  RETURN 
4080  N=I
4081  R1=R-(I-1)*200
4082  RETURN 
4085  B1=0
4090  READ #N,R1;E$
4095  MAT  READ #N;E
4100  IF E[1]=-1 THEN 4120
4110  B1=1
4112  S8=INT(E[4]/10^5)
4114  S9=INT((E[4]-INT(E[4]/10^4)*10^4)/1000)
4116  MAT  READ #(E9+N),R1;F
4120  RETURN 
5000  N1=2*E9+1
5010  IF  END #N1 THEN 5120
5020  FOR I1=1 TO 200
5030  READ #N1,I1;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
5040  IF T1#2 THEN 5060
5050  GOSUB 1400
5060  READ #N1;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
5070  IF T1#2 THEN 5090
5080  GOSUB 1400
5090  NEXT I1
5120  RETURN 
6000  GOTO P5 OF 6010,6030
6010  PRINT '13;
6020  RETURN 
6030  PRINT 
6040  RETURN 
6100  PRINT "    TOTALS"TAB(12);
6110  Z$="######"
6120  Z[1]=T[1]
6130  GOSUB 9000
6135  PRINT TAB(42);
6140  Z$="+#####.## "
6145  FOR I=2 TO 5
6150  Z[1]=T[I]
6155  GOSUB 9000
6160  NEXT I
6210  GOSUB 6000
6215  P9=P9+1
6220  RETURN 
8000  K=4
8010  GOSUB 9910
8020  PRINT TAB(12)"EMP NO  EMPLOYEE NAME";TAB(44);
8030  PRINT "REGULAR     OV/TM      SICK  VACATION";
8040  K=2
8045  GOSUB 9900
8050  P9=7+P8
8060  P8=0
8070  RETURN 
8200  IF P9<60 THEN 8240
8210  GOTO P5 OF 8215,8225
8215  PRINT " ";
8216  PRINT '18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18;
8220  GOTO 8235
8225  K=66-P9
8230  GOSUB 9910
8235  GOSUB 8000
8240  RETURN 
9000  REM
9003  LET Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9004  DIM Y$[10],Z$[72]
9005  LET Y$="0123456789"
9006  LET Z0=Z9-1
9007  LET Z0=Z0+1
9008  IF Z0=LEN(Z$)+1 THEN 9059
9009  IF Z$[Z0,Z0]="#" THEN 9016
9010  IF Z$[Z0,Z0+1]=".#" THEN 9016
9011  IF Z$[Z0,Z0+1]="+#" THEN 9014
9012  PRINT Z$[Z0,Z0];
9013  GOTO 9007
9014  LET Z4=0
9015  GOTO 9007
9016  LET Z=100
9017  LET Z6=Z[Z2]
9018  LET Z9=Z0-1
9019  LET Z9=Z9+1
9020  IF Z$[Z9,Z9]="." THEN 9023
9021  IF Z$[Z9,Z9]="#" THEN 9019
9022  GOTO 9027
9023  IF Z5#1 THEN 9027
9024  LET Z5=0
9025  LET Z=Z9
9026  GOTO 9019
9027  IF Z#100 THEN 9029
9028  LET Z=Z9
9029  IF Z4=1 THEN 9034
9030  IF Z6 >= 0 THEN 9033
9031  PRINT "-";
9032  GOTO 9034
9033  PRINT " ";
9034  LET Z6=ABS(Z6)+10^(Z-Z9-1)
9035  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9036  IF Z$[Z-Z1,Z-Z1]#"." THEN 9041
9037  PRINT ".";
9038  LET Z3=0
9039  LET Z7=2
9040  GOTO 9055
9041  LET Z8=INT(Z6/(10^(Z1+Z7-2)))
9042  IF Z6<10^(Z-Z0) THEN 9045
9043  PRINT "#";
9044  GOTO 9055
9045  LET Z6=Z6-Z8*10^(Z1+Z7-2)
9046  IF Y$[Z8+1,Z8+1]="0" THEN 9048
9047  LET Z3=0
9048  IF Z3=0 THEN 9054
9049  IF Z1#1 THEN 9052
9050  PRINT "0";
9051  GOTO 9055
9052  PRINT X$;
9053  GOTO 9055
9054  PRINT Y$[Z8+1,Z8+1];
9055  NEXT Z1
9056  LET Z3=Z4=Z5=Z7=1
9057  LET Z2=Z2+1
9058  GOTO 9006
9059  RETURN 
9100  PRINT TAB(K);
9110  IF L=6 THEN 9140
9120  PRINT D$[1,1]"/";D$[2,3]"/";D$[4,5];
9130  GOTO 9145
9140  PRINT D$[1,2]"/";D$[3,4]"/";D$[5,6];
9145  GOSUB 6000
9150  RETURN 
9900  GOSUB 6000
9910  FOR I=1 TO K
9920  PRINT "       ";
9930  GOSUB 6000
9940  NEXT I
9945  RETURN 
9950  FOR I=1 TO K
9955  PRINT " ";
9960  NEXT I
9970  RETURN 
9999  END 
