1  REM  ****  HP BASIC PROGRAM LIBRARY  ********************************3  REM        LABDIS:  CTC PAYROLL PROGRAM, PART 26 OF 34
3  REM       LABDIS:    CTC PAYROLL PROGRAM   
4  REM
5  REM        36213  REV B  6/73
6  REM
7  REM ****  CONTRIBUTED PROGRAM **************************************
9  H$='29'31'13'26'30
10  DIM A$[20],E$[22],H$[5]
11  DIM E[17],F[32],T[3,2],D[3],Z[3],R[2,2],I[16]
100  FILES E1,E2,EP1,EP2,E0,AJ
200  READ E9,E7
210  DATA 2,17
220  N1=E9*2+1
300  PRINT H$[1,2]"WHICH PRINTER: (1) ACCOUNTING (2) ABDICK";
310  INPUT P5
320  IF P5=1 OR P5=2 THEN 400
330  PRINT '7'7'7'7"INVALID DATA";H$[3,5];
340  GOTO 300
400  PRINT "ENTER TODAY'S DATE (MDDYY)";
410  INPUT D1
420  IF D1<10^6 AND D1>9999 THEN 440
425  PRINT '7'7'7"INVALID DATE";H$[3,5];
430  GOTO 400
440  D[1]=INT(D1/10^4)
450  IF D[1]<1 OR D[1]>12 THEN 425
460  D[2]=INT((D1-D[1]*10^4)/100)
470  IF D[2]<1 OR D[2]>31 THEN 425
480  D[3]=D1-D[1]*10^4-D[2]*100
490  IF D[3]<71 THEN 425
500  P=R7=0
502  MAT R=ZER
505  P9=66
510  GOSUB 8000
520  READ #N1;G2
530  IF SGN(G2)=-1 THEN 560
540  PRINT '7'7'7"ERROR IN STATE/DEPT FILE"
550  STOP 
560  READ #N1,1
1000  FOR I1=0 TO 99
1005  MAT T=ZER
1006  R6=0
1010  IF  END #N1 THEN 1160
1020  READ #N1;G2
1030  IF G2>99 THEN 1020
1035  IF SGN(G2)#-1 THEN 1040
1037  G2=ABS(G2)-INT(ABS(G2)/100)*100
1040  IF G2#I1 THEN 1020
1050  READ #N1;U6
1060  IF U6>1000 THEN 1070
1065  G2=U6
1067  GOTO 1035
1070  GOSUB 4000
1080  IF B1 THEN 1050
1090  GOSUB 4085
1100  IF  NOT B1 THEN 1050
1102  GOSUB 2500
1106  IF F[8]=0 THEN 1050
1110  T[1,1]=T[1,1]+F[1]+F[3]+F[4]
1120  T[2,1]=T[2,1]+F[2]
1130  T[1,2]=T[1,2]+F[5]+F[7]
1140  T[2,2]=T[2,2]+F[6]
1150  GOTO 1050
1160  READ #N1,1
1170  FOR J=1 TO 2
1180  FOR I=1 TO 2
1190  T[3,J]=T[3,J]+T[I,J]
1200  NEXT I
1210  NEXT J
1215  R7=R7+R6
1220  GOSUB 2000
1230  NEXT I1
1240  PRINT TAB(18)"REPORT TOTAL";TAB(34);
1242  Z$="+#####.##"
1243  X$=" "
1244  Z[1]=R7
1246  GOSUB 9000
1248  PRINT TAB(46);
1250  FOR I=1 TO 2
1255  Z$="######."
1260  X$=" "
1265  Z[1]=R[I,1]
1270  GOSUB 9000
1275  Z$="## **   "
1280  X$="0"
1285  Z[1]=R[I,2]
1290  GOSUB 9000
1295  NEXT I
1455  END 
2000  IF T[3,1]=0 AND T[3,2]=0 AND R6=0 THEN 2490
2005  F5=0
2010  IF I1#71 THEN 2030
2015  F5=1
2020  S3=5115
2025  GOTO 2105
2030  S3=5113
2035  IF I1#55 AND I1#56 THEN 2105
2040  S3=5111
2105  Z$="##"
2110  X$=" "
2120  Z[1]=I1
2130  PRINT TAB(11);
2140  GOSUB 9000
2150  FOR I=1 TO 3
2155  PRINT TAB(24);
2156  IF  NOT F5 THEN 2160
2157  GOTO I OF 2170,2350,2240
2160  GOTO I OF 2170,2190,2240
2170  Z[1]=S3
2180  GOTO 2200
2190  Z[1]=S3+1
2200  Z$="  ####"
2205  X$=" "
2220  GOSUB 9000
2221  IF I#1 THEN 2250
2222  Z$="+#####.##"
2223  Z[1]=R6
2224  PRINT TAB(34);
2225  GOSUB 9000
2230  GOTO 2250
2240  PRINT " TOTAL";
2242  PRINT TAB(34);
2244  Z$="+#####.##"
2245  X$=" "
2246  Z[1]=R6
2248  GOSUB 9000
2250  PRINT TAB(47);
2260  FOR J=1 TO 2
2270  Z$="#####."
2275  X$=" "
2280  X=T[I,J]*100
2285  Z[1]=INT(X/100)
2290  GOSUB 9000
2295  Z$="##"
2300  X$="0"
2305  IF I#3 THEN 2310
2307  Z$[3,4]=" *"
2310  Z[1]=INT(X-INT(X/100)*100)
2315  GOSUB 9000
2320  PRINT TAB(62);
2330  NEXT J
2340  GOSUB 6000
2350  NEXT I
2360  FOR K=1 TO 2
2365  X=T[3,K]*100
2370  GOSUB 3000
2375  NEXT K
2440  K=1
2450  GOSUB 9910
2455  P9=P9+3
2457  IF F5 THEN 2470
2460  P9=P9+1
2470  IF P9<58 THEN 2490
2480  GOSUB 8000
2490  RETURN 
2500  READ #(N1+1),1
2510  IF  END #(N1+1) THEN 2560
2520  MAT  READ #(N1+1);I
2530  IF I[1]#U6 THEN 2520
2535  GOTO I[13] OF 2540,2545
2540  R6=R6+I[2]
2542  GOTO 2520
2545  T[1,2]=T[1,2]+I[2]
2550  GOTO 2520
2560  RETURN 
3000  X1=INT(X/100)
3005  X2=X-X1*100
3015  R[K,1]=R[K,1]+X1
3020  R[K,2]=R[K,2]+X2
3025  IF R[K,2]<100 THEN 3040
3030  R[K,1]=R[K,1]+1
3035  R[K,2]=R[K,2]-100
3040  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
4042  PRINT "EMP#>";E9*200+1000;"FILE SPACE LIMIT";U6;
4043  GOSUB 6000
4044  P9=P9+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
4130  MAT  READ #(N+E9),R1;F
4140  RETURN 
4175  PRINT "EMP# ON ST/DPT FILE BUT NOT ON PAYROLL FILES";U6;
4180  GOSUB 6000
4185  P9=P9+1
4190  RETURN 
6000  GOTO P5 OF 6010,6030
6010  PRINT '13;
6020  RETURN 
6030  PRINT 
6040  RETURN 
8000  GOTO P5 OF 8010,8030
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'18'18'18'18'18'18'18'18'18'18;
8020  GOTO 8050
8030  K=66-P9
8040  GOSUB 9910
8050  K=4
8060  GOSUB 9910
8070  MAT Z=D
8080  Z$="##/##/##"
8090  X$=" "
8100  PRINT "DATE:";
8110  GOSUB 9000
8120  PRINT TAB(21)"COMPUTER TERMINAL - LABOR DISTRIBUTION";TAB(71);
8130  PRINT "PAGE: ";
8135  P=P+1
8140  Z$="###"
8150  Z[1]=P
8160  GOSUB 9000
8170  K=1
8180  GOSUB 9900
8182  PRINT TAB(38)"ADJ.";TAB(55)"CURRENT";
8184  GOSUB 6000
8190  PRINT TAB(10)"DEPT      DISTRIBUTION";TAB(36)"DOLLARS";TAB(50);
8200  PRINT "HOURS";TAB(63);"DOLLARS";
8210  K=2
8220  GOSUB 9900
8230  P9=10
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 
9900  GOSUB 6000
9910  FOR I=1 TO K
9920  PRINT "      ";
9930  GOSUB 6000
9940  NEXT I
9945  RETURN 
9999  END 
