1  REM  ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM        VACSIC:  CTC PAYROLL PROGRAM, PART 31 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],S[16]
11  DIM A$[20],E$[22],H$[7],D$[10]
100  FILES E1,E2,EP1,EP2,ETRAN,EAUX
110  PRINT "WHICH PRINTER: (1) ACC. (2) ABDICK";
115  INPUT P5
120  IF P5=1 OR P5=2 THEN 200
130  PRINT '7'7"WHAT";
135  GOTO 115
200  READ E9,E7
205  DATA 2,17
210  N1=E9*2+1
220  GOSUB 9200
225  READ #(N1+1),1;A9,M9
230  PRINT H$[1,2]"CURRENT DATE (MDDYY)";
235  INPUT X
240  GOSUB 4800
245  IF X1>0 AND X1<13 THEN 260
250  PRINT '7'7"INVALID DATE"
255  GOTO 230
260  IF X2<1 OR X2>31 THEN 250
265  IF X3<71 OR X3>99 THEN 250
270  D1=X
275  D2=X1
280  D3=X2
285  D4=X3
400  PRINT "ADD MONTHLY ACCRUED HOURS OR DEDUCT SICK & VAC HOURS (A/D)";
405  INPUT A$
410  IF A$="END" THEN 9999
415  IF A$[1,1]#"A" THEN 500
417  L0=1
420  PRINT "ADD MONTHLY VACATION HOURS, SICK HOURS OR BOTH (V/S/B)";
425  INPUT A$
430  IF A$[1,1]#"V" THEN 440
431  D$="AV"
432  L1=6.667
434  L2=0
435  GOTO 1000
440  IF A$[1,1]#"S" THEN 450
442  D$="AS"
445  L1=0
447  L2=4
448  GOTO 1000
450  IF A$[1,1]#"B" THEN 460
451  D$="AB"
452  L1=6.667
455  L2=4
457  GOTO 1000
460  PRINT '7'7"WHAT";
465  GOTO 425
500  IF A$="D" THEN 520
505  PRINT '7'7"WHAT";
510  GOTO 405
520  REM
522  L0=2
523  D$="D"
600  REM
1000  FOR U6=1001 TO M9
1005  PRINT U6;
1010  GOSUB 4000
1020  IF B1 THEN 1090
1025  GOSUB 4085
1030  IF  NOT B1 OR S[10] THEN 1090
1035  GOTO L0 OF 1040,1050
1040  X=E[8]
1042  GOSUB 4800
1044  IF X1#D3 OR X2#D1 THEN 1070
1045  IF D2<16 THEN 1070
1047  PRINT "EMP# HIRED AFTER 15TH";
1048  GOTO 1090
1050  L1=-F[4]
1052  L2=-F[3]
1070  F[11]=F[11]+L1
1075  IF  NOT S[8] AND S[1]#15 AND S[1]#35 AND S[1]#11 AND S[1]#31 THEN 1085
1080  F[12]=F[12]+L2
1085  MAT  PRINT #(N+E9),R1;F
1090  GOSUB 6000
1100  NEXT U6
1110  E$=""
1120  PRINT #N1;E$[1,22],0,4,D$[1,2],0,0,0,0,0,D1,0
1125  PRINT #N1; END 
1130  END 
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  S[1]=INT(E[1]/10^4)
4140  S[8]=INT(E[4]/10^5)
4150  X=INT(E[4]/10^4)
4160  S[10]=INT((E[4]-X*10^4)/10^3)
4173  MAT  READ #(N+E9),R1;F
4174  RETURN 
4175  PRINT "(EMP# NOT IN USE)";
4180  RETURN 
4800  X1=INT(X/10^4)
4810  X2=INT((X-X1*10^4)/100)
4820  X3=X-X1*10^4-X2*100
4830  RETURN 
6000  GOTO P5 OF 6010,6020
6010  PRINT '13;
6015  RETURN 
6020  PRINT 
6030  RETURN 
9200  IF  END #N1 THEN 9270
9210  FOR I=1 TO 200
9220  READ #N1,I;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
9230  READ #N1;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
9240  NEXT I
9250  PRINT "TRANSACTION FULL--PLEASE EMPTY"
9260  STOP 
9270  IF  END #N1 THEN 9280
9275  RETURN 
9280  PRINT "TRANS AT EOF"
9290  STOP 
9999  END 
