1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        ACCPRT:  CTC PAYROLL PROGRAM, PART 18 OF 34
4  REM
5  REM        36213  REV B  6/73
6  REM
7  REM ****  CONTRIBUTED PROGRAM **************************************
10  DIM E$[22],A$[20]
11  DIM F[32]
100  FILES E1,E2,EP1,EP2,EAUX
200  READ E9,E7
210  DATA 2,17
215  READ #(E9*2+1),1;A9,M9
220  PRINT "WHICH PRINTER: (1) ACCOUNTING (2) ABDICK";
230  INPUT P5
240  IF P5=1 OR P5=2 THEN 300
250  PRINT '7'7'7'7'7'7"WHAT";
260  GOTO 230
300  PRINT "ENTER TODAY'S DATE (MDDYY)";
310  INPUT D
320  IF D<10^6 AND D>9999 THEN 330
325  PRINT '7'7'7'7'7"INVALID DATE"
327  GOTO 300
330  Z[1]=INT(D/10^4)
340  IF Z[1]<1 OR Z[1]>12 THEN 325
345  Z[2]=INT((D-Z[1]*10^4)/100)
350  IF Z[2]<1 OR Z[2]>31 THEN 325
355  Z[3]=D-Z[1]*10^4-Z[2]*100
360  IF Z[3]<72 THEN 325
400  PRINT "BEGINNING EMP#";
401  INPUT U7
402  IF U7>1000 AND U7 <= M9 THEN 410
403  PRINT '7'7'7"INVALID EMP#"
404  GOTO 400
410  PRINT " ";
415  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;
420  K=4
425  GOSUB 9910
430  PRINT TAB(40)"E M P L O Y E E  A C C U M U L A T E D  T O T A L S";
435  K=1
440  GOSUB 9900
445  X$=" "
450  Z$="##/##/##"
455  PRINT TAB(61);
460  GOSUB 9000
462  GOSUB 6000
465  P8=7
470  GOSUB 8000
1000  FOR U6=U7 TO M9
1005  R=U6-1000
1010  FOR I=1 TO E9
1020  IF R <= I*200 THEN 1045
1030  NEXT I
1035  PRINT "ERROR IN M9";M9
1040  STOP 
1045  N=I
1050  R1=R-(I-1)*200
1055  READ #N,R1;E$,E
1060  IF E=-1 THEN 1160
1065  MAT  READ #(N+E9),R1;F
1067  GOSUB 1200
1070  A$="QTD"
1075  J=13
1080  GOSUB 2000
1085  A$="YTD"
1090  J=23
1095  GOSUB 2000
1100  K=1
1110  GOSUB 9910
1120  P9=P9+4
1125  IF P9<58 THEN 1160
1130  GOTO P5 OF 1135,1145
1135  PRINT " ";
1137  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;
1140  GOTO 1155
1145  K=66-P9
1150  GOSUB 9910
1155  GOSUB 8000
1160  NEXT U6
1165  END 
1200  PRINT TAB(10);
1210  Z[1]=U6
1220  Z$="####  "
1230  X$="0"
1240  GOSUB 9000
1250  PRINT E$;
1260  GOSUB 6000
1270  RETURN 
2000  PRINT A$"  ";
2005  T=0
2010  FOR J1=J TO J+8
2015  X=F[J1]
2020  GOSUB 2100
2025  IF J1=J+8 THEN 2035
2030  T=T+F[J1]
2035  NEXT J1
2040  X=F[J+8]-T
2045  GOSUB 2100
2050  X=F[J+9]
2055  GOSUB 2100
2065  GOSUB 6000
2070  RETURN 
2100  S=SGN(X)
2105  X=ABS(X)*100
2110  Z$="+#####."
2115  X$=" "
2120  Z[1]=S*INT(X/100)
2125  GOSUB 9000
2160  Z[1]=X-INT(X/100)*100
2165  Z$="##  "
2170  X$="0"
2175  GOSUB 9000
2180  RETURN 
6000  GOTO P5 OF 6005,6030
6005  PRINT '13;
6010  RETURN 
6030  PRINT 
6040  RETURN 
8000  K=4
8010  GOSUB 9910
8020  PRINT TAB(10)"EMP#  EMPLOYEE NAME";
8030  GOSUB 6000
8040  PRINT TAB(6)"F.I.C.A.    FEDERAL      STATE   ST DISAB       CITY";
8045  PRINT "    ADVANCE       AUTO       INS.      GROSS    NET PAY";
8046  PRINT "   SICK PAY";
8050  K=2
8060  GOSUB 9900
8070  P9=8+P8
8080  P8=0
8090  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 
9900  GOSUB 6000
9910  FOR I=1 TO K
9920  PRINT "       ";
9930  GOSUB 6000
9940  NEXT I
9945  RETURN 
9999  END 
