1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        VSPRT:  CTC PAYROLL PROGRAM, PART 32 OF 34
4  REM
5  REM        36213  REV B  6/73
6  REM
7  REM ****  CONTRIBUTED PROGRAM **************************************
9  H$='29'31'13'26'30
10  DIM E[17],F[32],T[2,4]
11  DIM E$[22],A$[20],H$[5]
100  FILES E1,E2,EP1,EP2,E0
110  PRINT "WHICH PRINTER (1) ACC (2) ABDICK";
120  INPUT P5
125  IF P5=1 OR P5=2 THEN 200
130  PRINT '7'7"WHAT";
140  GOTO 120
200  READ E9,E7
210  DATA 2,17
220  N1=E9*2+1
230  PRINT H$[1,2]"CURRENT DATE (MDDYY)";
240  INPUT D
245  D1=INT(D/10^4)
250  IF D1>0 AND D1<13 THEN 260
255  PRINT '7'7"INVALID DATE"
257  GOTO 230
260  D2=INT((D-D1*10^4)/100)
265  IF D2<1 OR D2>31 THEN 255
270  D3=D-D1*10^4-D2*100
275  IF D3<72 OR D3>99 THEN 255
280  MAT T=ZER
300  PRINT "BEGINNING STATE#";
310  INPUT U7
315  IF INT(U7)=U7 AND U7 >= -1 AND U7<100 THEN 330
320  PRINT '7'7"INVALID STATE#";H$[3,5];
325  GOTO 300
330  PRINT "BEGINNING PAGE#";
335  INPUT P
340  P=P-1
350  L1=0
360  P9=66
1000  IF  END #N1 THEN 1090
1002  READ #N1;G
1005  IF SGN(G)=-1 THEN 1020
1010  PRINT '7'7"ERROR IN ST/DPT FILE"
1015  STOP 
1020  G1=INT(ABS(G)/100)
1025  IF L1 THEN 1045
1030  IF U7=-1 THEN 1040
1035  IF U7#G1 THEN 1050
1040  L1=1
1045  GOSUB 8000
1050  READ #N1;G
1055  IF SGN(G)=-1 THEN 1080
1060  IF G<1001 THEN 1050
1065  U6=G
1070  GOSUB 2000
1075  GOTO 1050
1080  F1=1
1085  GOTO 1095
1090  IF  NOT L1 THEN 1155
1092  F1=2
1095  A$="STATE TOTALS"
1100  I=1
1110  GOSUB 1160
1120  GOTO F1 OF 1020,1130
1130  A$="COMPANY TOTALS"
1135  I=2
1140  GOSUB 1160
1150  END 
1155  PRINT '7'7"BEGINNING STATE# NOT ON FILE"
1157  STOP 
1160  IF  NOT L1 THEN 1165
1162  PRINT TAB(10);A$;TAB(42);
1165  FOR J=1 TO 3 STEP 2
1167  IF  NOT L1 THEN 1207
1170  Z$="    +######."
1175  X$=" "
1180  Z[1]=T[I,J]
1185  GOSUB 9000
1190  Z$="###"
1195  Z[1]=T[I,J+1]
1200  X$="0"
1205  GOSUB 9000
1207  T[I,J]=T[I,J+1]=0
1210  NEXT J
1212  IF  NOT L1 THEN 1220
1215  GOSUB 6000
1217  P9=P9+1
1220  RETURN 
2000  GOSUB 4000
2005  IF B1 THEN 9999
2010  GOSUB 4085
2015  IF  NOT B1 THEN 2210
2020  REM
2022  IF  NOT L1 THEN 2067
2025  PRINT TAB(11);
2030  Z$="##   "
2035  X$=" "
2040  Z[1]=S2
2045  GOSUB 9000
2050  Z$="####  "
2055  Z[1]=U6
2060  GOSUB 9000
2065  PRINT E$;TAB(48);
2067  J1=1
2070  FOR J=11 TO 12
2075  X=F[J]*1000
2080  X1=INT(X/1000)
2085  X2=X-X1*1000
2086  IF  NOT L1 THEN 2140
2087  IF F[J]#0 THEN 2090
2088  PRINT "         ";
2089  GOTO 2135
2090  Z$="+####."
2095  X$=" "
2100  Z[1]=X1
2105  GOSUB 9000
2115  Z$="###"
2120  X$="0"
2125  Z[1]=X2
2130  GOSUB 9000
2135  PRINT TAB(63);
2140  FOR I=1 TO 2
2145  T[I,J1]=T[I,J1]+X1
2150  T[I,J1+1]=T[I,J1+1]+X2
2155  IF T[I,J1+1]<1000 THEN 2170
2160  T[I,J1]=T[I,J1]+1
2165  T[I,J1+1]=T[I,J1+1]-1000
2170  NEXT I
2175  J1=J1+2
2177  NEXT J
2178  IF  NOT L1 THEN 2210
2180  K=1
2185  GOSUB 9900
2190  P9=P9+2
2195  IF P9<60 THEN 2210
2200  GOSUB 8000
2210  RETURN 
4000  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
4042  PRINT "(EMP#>";E9*200+1000;")";
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
4130  X=INT(E[1]/10^4)
4140  S2=INT((E[1]-X*10^4)/100)
4173  MAT  READ #(N+E9),R1;F
4175  RETURN 
6000  GOTO P5 OF 6010,6020
6010  PRINT '13;
6015  RETURN 
6020  PRINT 
6030  RETURN 
8000  GOTO P5 OF 8010,8020
8010  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;
8015  GOTO 8030
8020  K=66-P9
8025  GOSUB 9910
8030  K=4
8035  GOSUB 9910
8040  PRINT "STATE: ";
8045  Z$="##"
8050  X$=" "
8055  Z[1]=G1
8060  GOSUB 9000
8065  PRINT TAB(28)"A C C R U E D  H O U R S";TAB(71)"PAGE: ";
8070  P=P+1
8075  Z$="###"
8080  Z[1]=P
8085  GOSUB 9000
8090  GOSUB 6000
8095  PRINT TAB(36);
8100  Z$="##/##/##"
8105  Z[1]=D1
8110  Z[2]=D2
8115  Z[3]=D3
8120  GOSUB 9000
8125  K=2
8130  GOSUB 9900
8135  PRINT TAB(10)"DEPT  EMP#  EMPLOYEE NAME";TAB(46)"VACATION HOURS";
8140  PRINT "  SICK HOURS";
8145  K=2
8150  GOSUB 9900
8160  P9=11
8170  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 "      ";
9925  GOSUB 6000
9930  NEXT I
9940  RETURN 
9999  END 
