1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        INTVS:  CTC PAYROLL PROGRAM, PART 33 OF 34
4  REM
5  REM        36213  REV B  6/73
6  REM
7  REM ****  CONTRIBUTED PROGRAM **************************************
9  REM H$=(HU,EOF,CR,^,EOL)
10  DIM A$[30],B$[20],C$[10],D$[10],E$[22],H$[7]
11  DIM F[32]
50  C$="0123456789"
100  FILES E1,E2,EP1,EP2,ETRAN
200  READ E9,E7
210  DATA 2,17
220  N1=2*E9+1
300  IF  END #N1 THEN 350
310  FOR I=1 TO 200
325  READ #N1,I;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
330  READ #N1;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
335  NEXT I
340  PRINT "TRANSACTION FILE FULL--PLEASE EMPTY"
345  STOP 
350  IF  END #N1 THEN 360
352  T2=T3=T4=T5=T6=T7=0
355  GOTO 400
360  PRINT "ERROR--TRAN FILE AT EOF"
365  STOP 
400  PRINT H$[1,2]"ENTER TODAY'S DATE (MDDYY)";
410  INPUT D1
420  IF D1>9999 AND D1<10^6 THEN 435
425  PRINT "INVALID DATE"
430  GOTO 400
435  X=INT(D1/10^4)
440  IF X<1 OR X>12 THEN 425
445  X1=INT((D1-X*10^4)/100)
450  IF X1<1 OR X1>31 THEN 425
455  X2=D1-X*10^4-X1*100
540  T1=4
550  D$="CP"
600  PRINT H$[1,2]"INITIALIZE VACATION OR SICK ACCRUED HOURS (V/S)";
610  INPUT A$
615  T2=11
620  IF A$[1,1]="V" THEN 1000
625  T2=12
630  IF A$[1,1]="S" THEN 1000
635  PRINT '7'7'7"WHAT";
640  GOTO 610
1000  GOSUB 2300
1010  GOTO T2-10 OF 1020,1040
1020  PRINT "OLD ACCRUED VACATION HOURS =";
1030  GOTO 1050
1040  PRINT "OLD ACCRUED SICK HOURS =";
1050  PRINT F[T2]
1055  PRINT "NEW ACCRUED HOURS";
1060  INPUT B$
1070  GOSUB 2200
1080  IF  NOT B1 THEN 1100
1090  PRINT '7'7"INVALID DATA";H$[3,5];
1095  GOTO 1055
1100  T3=F[T2]
1105  T5=F[T2]=X
1110  MAT  PRINT #(N+E9),R1;F
1120  GOSUB 9200
1130  GOTO 1000
2200  B1=0
2205  S6=1
2210  IF B$[1,1]#"-" THEN 2220
2215  S6=-1
2217  B$=B$[2]
2220  L=LEN(B$)
2225  IF L<5 OR L>8 THEN 2280
2230  IF B$[L-3,L-3]#"." THEN 2280
2235  A$=B$[1,L-4]
2240  GOSUB 4200
2245  IF B1 THEN 2270
2250  X=Z
2255  A$=B$[L-2]
2260  GOSUB 4200
2265  X=(X+Z*.001)*S6
2270  RETURN 
2280  B1=1
2290  RETURN 
2300  PRINT 
2305  PRINT "EMPLOYEE NUMBER";
2310  INPUT A$
2320  IF A$="END" THEN 9999
2330  GOSUB 4000
2340  IF B1 THEN 2305
2350  U6=Z
2360  GOSUB 4085
2370  IF B1 THEN 2305
2380  MAT  READ #(N+E9),R1;F
2390  RETURN 
4000  REM *FIND LOGICAL LOCATION AND READ RECORD*
4002  GOSUB 4200
4005  IF  NOT B1 THEN 4015
4010  PRINT '7'7'7'7"INVALID DATA";H$[3,5];
4011  B1=1
4012  RETURN 
4015  IF Z<1001 THEN 4010
4020  R=Z-1000
4050  FOR I=1 TO E9
4055  IF R <= I*200 THEN 4080
4060  NEXT I
4065  PRINT "EMP#>";1000+E9*200;" FILE SPACE LIMIT";H$[3,5];
4070  B1=1
4075  RETURN 
4080  N=I
4081  R1=R-(I-1)*200
4082  RETURN 
4085  B1=0
4090  READ #N,R1;E$,E
4100  IF E#-1 THEN 4120
4110  PRINT "EMPLOYEE NUMBER NOT IN USE";
4115  PRINT H$[3,5];
4116  B1=1
4117  RETURN 
4120  PRINT E$;
4130  INPUT A$
4140  IF A$[1,1]#"N" THEN 4117
4150  PRINT H$[4,4];
4155  GOTO 4115
4200  B1=Z=0
4210  FOR I1=1 TO LEN(A$)
4220  FOR I2=1 TO 10
4225  IF A$[I1,I1]=C$[I2,I2] THEN 4245
4230  NEXT I2
4240  B1=1
4242  RETURN 
4245  Z=Z*10+I2-1
4250  NEXT I1
4255  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 
9200  PRINT #N1;E$[1,22],U6,T1,D$[1,2],T2,T3,T4,T5,T6,D1,T7
9210  IF TYP(-N1)=3 THEN 340
9220  PRINT #N1; END 
9230  RETURN 
9999  END 
