1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        PAYFIG:  CTC PAYROLL PROGRAM, PART 15 OF 34
4  REM
5  REM        36213  REV B  6/73
6  REM
7  REM ****  CONTRIBUTED PROGRAM **************************************
10  DIM E$[22],D$[5],A$[10]
11  DIM F[32],E[20],C[12],S[15],P[7,6]
100  FILES E1,E2,EP1,EP2,ETRAN,EAUX
200  READ E9,E7
210  DATA 2,17
220  N1=(E9*2+1)
225  GOSUB 9300
227  T1=6
228  D$="P"
229  READ #(N1+1),1;A9,M9
230  MAT  READ #(N1+1),2;C
240  MAT  READ #(N1+1);P
400  PRINT '29'31"ENTER TODAY'S DATE";
410  INPUT D1
420  IF D1<10^6 AND D1>9999 THEN 430
425  PRINT '7'7'7'7'7'7"INVALID DATE"
427  GOTO 400
430  X=INT(D1/10^4)
435  IF X<1 OR X>12 THEN 425
440  X1=INT((D1-X*10^4)/100)
445  IF X1<1 OR X1>31 THEN 425
450  X2=D1-X*10^4-X1*100
455  IF X2<72 THEN 425
460  PRINT "AUTOMATIC 80 HOURS FOR EXEMPT EMPLOYEES";
465  INPUT A$
470  P8=0
475  IF A$[1,1]="Y" THEN 500
480  P8=1
485  IF A$[1,1]="N" THEN 500
490  PRINT '7'7'7"WHAT";
495  GOTO 465
500  I7=0
505  PRINT "ENTER EMP'S WITH EXTRA W/H"
510  PRINT "EMP#";
515  INPUT Z
520  IF Z=0 THEN 550
521  I7=I7+1
522  IF I7<21 THEN 525
523  PRINT "LIMIT OF 20 EMP"
524  STOP 
525  U[I7,1]=Z
530  PRINT "EXTRA W/H";
535  INPUT U[I7,2]
540  PRINT 
545  GOTO 510
550  PRINT "ABOVE CORRECT";
555  INPUT A$
560  IF A$[1,1]#"Y" THEN 500
1100  FOR R=1 TO M9-1000
1103  PRINT R+1000;
1105  GOSUB 4025
1110  GOSUB 4085
1115  IF B1=0 OR S[10] THEN 1170
1120  GOSUB 7100
1122  IF F[8]=0 THEN 1170
1123  H4=0
1124  IF L8 THEN 1140
1125  I=1
1135  GOSUB 7000
1140  F[9]=H4
1145  I=11
1150  GOSUB 7200
1155  F[10]=W
1156  FOR I=1 TO I7
1157  IF R+1000#U[I,1] THEN 1159
1158  F[10]=F[10]+U[I,2]
1159  NEXT I
1160  GOSUB 7300
1162  GOSUB 3000
1165  MAT  PRINT #(E9+N),R1;F
1170  NEXT R
1180  U6=T3=T4=T5=T6=T7=0
1182  T2=P8
1185  E$=""
1190  PRINT #N1;E$[1,22],U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
1195  PRINT #N1; END 
2000  END 
3000  FOR I=5 TO 10
3005  X=F[I]*100
3010  X1=INT(X)
3020  IF X-X1<.5 THEN 3040
3030  X1=X1+1
3040  F[I]=X1*.01
3050  NEXT I
3060  RETURN 
4000  REM * READ E *
4005  B1=0
4010  R=U6-1000
4025  FOR I=1 TO E9
4030  IF R <= I*200 THEN 4050
4035  NEXT I
4040  B1=1
4045  RETURN 
4050  N=I
4055  R1=R-(I-1)*200
4060  RETURN 
4085  B1=0
4090  READ #N,R1;E$
4095  FOR I=1 TO E7
4100  READ #N;E[I]
4103  NEXT I
4105  IF E[1]=-1 THEN 4175
4120  B1=1
4125  S[1]=INT(E[1]/10^4)
4130  S[2]=INT((E[1]-S[1]*10^4)/100)
4132  S[3]=E[1]-S[1]*10^4-S[2]*100
4134  S[4]=INT(E[2]/1000)
4136  X1=5
4140  FOR I=8 TO 13
4145  X=0
4147  X2=5
4150  FOR J=1 TO (I-8)
4153  X=X+S[J+7]*10^X2
4155  X2=X2-1
4160  NEXT J
4165  S[I]=INT((E[4]-X)/10^X1)
4170  X1=X1-1
4172  NEXT I
4173  MAT  READ #(N+E9),R1;F
4174  L8=E[17]-INT(E[17]/10)*10
4175  RETURN 
7000  H4=0
7010  IF F[31] >= C[I] THEN 7065
7012  H7=H1
7015  H5=F[31]+H1
7020  IF H5 <= C[I] THEN 7030
7025  H7=H7-(H5-C[I])
7030  H4=H7*C[I+1]
7032  IF H4=0 THEN 7065
7034  X=H4*100
7036  H4=INT(X)
7038  IF X-H4<.5 THEN 7041
7040  H4=H4+1
7041  H4=H4*.01
7042  IF H5<C[I] THEN 7065
7044  IF I#1 THEN 7050
7046  X=F[23]
7048  GOTO 7052
7050  X=F[26]
7052  X=X+H4
7054  X1=C[I]*C[I+1]
7056  IF X=X1 THEN 7065
7058  H4=H4+(X1-X)
7060  IF SGN(H4)>-1 THEN 7065
7062  H4=0
7065  RETURN 
7100  IF S[8] THEN 7120
7107  IF F[1]#0 OR F[4]#0 THEN 7120
7108  IF P8 THEN 7120
7110  F[1]=80
7120  F[5]=F[1]*E[5]
7125  F[6]=F[2]*3/2*E[5]
7130  F[7]=(F[3]+F[4])*E[5]
7135  F[8]=H1=F[5]+F[6]+F[7]
7150  RETURN 
7200  E4=H1-S[3]*C[I]
7210  IF S[9] THEN 7225
7215  I2=4
7220  GOTO 7230
7225  I2=1
7230  W=0
7235  IF E4 <= P[1,I2] THEN 7260
7240  FOR I1=1 TO 6
7245  IF P[I1,I2]<E4 AND E4 <= P[I1+1,I2] THEN 7255
7250  NEXT I1
7255  W=P[I1,I2+1]+P[I1,I2+2]*(E4-P[I1,I2])
7260  RETURN 
7300  IF S[4]#4 THEN 7380
7310  I=3
7330  GOSUB 7000
7345  E[12]=H4
7350  PRINT #N,R1;E$
7360  FOR I=1 TO E7
7365  PRINT #N;E[I]
7370  NEXT I
7380  RETURN 
9300  IF  END #N1 THEN 9370
9310  FOR I=1 TO 200
9320  READ #N1,I;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
9325  READ #N1;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
9330  NEXT I
9340  PRINT "TRANSACTION FILE FULL--PLEASE EMPTY"
9345  STOP 
9370  IF  END #N1 THEN 9380
9375  RETURN 
9380  PRINT "TRANSACTION FILE AT EOF"
9385  STOP 
9999  END 
