1  REM  ****  HP BASIC PROGRAM LIBRARY  ***************************
2  REM
3  REM        MODAJ:  CTC PAYROLL PROGRAM, PART 13 OF 34
4  REM
5  REM        36213  REV B  6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ********************************
8  H$='29'31'13'26'30
10  DIM I[16],J[16],K[16],E[17]
11  DIM B$[20],A$[20],X$[20],H$[5],C$[10]
12  DIM E$[22],D$[10]
100  FILES E1,E2,ETRAN,AJ
115  GOSUB 4200
200  READ E9,E7
210  DATA 2,17
220  C$="0123456789"
230  GOSUB 9300
240  T1=5
300  PRINT H$[1,2]"ENTER TODAY'S DATE";
310  INPUT D1
320  IF D1<10^6 AND D1>9999 THEN 330
325  PRINT '7'7'7'7'7'7'7"INVALID DATE"
327  GOTO 300
330  X=INT(D1/10^4)
335  IF X<1 OR X>12 THEN 325
340  X1=INT((D1-X*10^4)/100)
345  IF X1<1 OR X1>31 THEN 325
350  X2=D1-X*10^4-X1*100
355  IF X2<72 THEN 325
1000  PRINT H$[1,2]"MODIFY COMMISSION OR ADJUSTMENT (C/A)";
1005  INPUT D$
1007  IF D$="END" THEN 9999
1010  IF D$[1,1]="C" THEN 1040
1020  IF D$[1,1]="A" THEN 1060
1025  PRINT '7'7'7"WHAT";
1030  GOTO 1005
1040  T0=2
1045  GOTO 1100
1060  T0=1
1100  GOSUB 2300
1105  PRINT "CHECK#";
1110  INPUT A$
1115  GOSUB 4200
1120  IF  NOT B1 THEN 1130
1125  PRINT '7'7'7"INVALID DATA"
1127  GOTO 1105
1130  K=12
1132  X=Z
1135  GOSUB 2000
1140  IF  NOT F1 THEN 1100
1150  GOSUB 2400
1155  GOTO 1100
2000  REM
2005  R2=0
2010  R2=R2+1
2012  IF  END #(E9+2) THEN 2075
2015  MAT  READ #(E9+2),R2;I
2020  IF  END #(E9+2) THEN 2065
2025  MAT  READ #(E9+2);J
2030  IF I[1]=U6 AND I[K]=X AND I[13]=T0 THEN 2045
2035  IF J[1]=U6 AND J[K]=X AND J[13]=T0 THEN 2055
2040  GOTO 2010
2045  F1=1
2047  MAT K=I
2050  RETURN 
2055  F1=2
2057  MAT K=J
2060  RETURN 
2065  F1=3
2070  IF I[1]=U6 AND I[K]=X AND I[13]=T0 THEN 2047
2075  F1=0
2080  PRINT '7'7'7'7'7'7'7"COMMISSION/ADJUSTMENT NOT ON FILE"
2085  RETURN 
2200  B1=0
2201  S=1
2202  IF B$[1,1]#"-" THEN 2205
2203  S=-1
2204  B$=B$[2]
2205  L=LEN(B$)
2210  IF L<4 OR L>8 THEN 2280
2215  IF B$[L-2,L-2]#"." THEN 2280
2220  A$=B$[1,L-3]
2225  GOSUB 4200
2230  IF B1 THEN 2270
2235  X=Z
2240  A$=B$[L-1]
2245  GOSUB 4200
2250  IF B1 THEN 2270
2260  X=(X+Z*.01)*S
2270  RETURN 
2280  B1=1
2290  RETURN 
2300  PRINT H$[1,2]"EMPLOYEE NUMBER";
2310  INPUT A$
2320  IF A$="END" THEN 9999
2330  GOSUB 4000
2340  IF B1 THEN 2300
2350  U6=Z
2360  GOSUB 4085
2370  IF B1 THEN 2300
2375  PRINT E$;
2377  INPUT A$
2380  IF A$[1,1]="N" THEN 2300
2390  RETURN 
2400  FOR I=1 TO 12
2405  GOTO I OF 2415,2425,2435,2445,2455,2465,2475,2485,2495,2505
2410  GOTO I-10 OF 2515,2517
2415  X$=" 1) EMPLOYEE#:"
2420  GOTO 2520
2425  IF K[13]=1 THEN 2433
2427  X$=" 2) COMMISSION AMT:"
2430  GOTO 2520
2433  X$=" 2) GROSS:"
2434  GOTO 2520
2435  X$=" 3) F.I.C.A:"
2440  GOTO 2520
2445  X$=" 4) FEDERAL:"
2450  GOTO 2520
2455  X$=" 5) STATE: "
2460  GOTO 2520
2465  X$=" 6) DISABILITY:"
2470  GOTO 2520
2475  X$=" 7) CITY:"
2480  GOTO 2520
2485  X$=" 8) ADVANCE:"
2490  GOTO 2520
2495  X$=" 9) AUTO:"
2500  GOTO 2520
2505  X$="10) INSURANCE:"
2510  GOTO 2520
2515  X$="11) NET PAY:"
2516  GOTO 2520
2517  X$="12) CHECK#:"
2520  PRINT X$;TAB(20);K[I]
2525  NEXT I
2530  PRINT "13) NO CHANGE"
2535  PRINT 
2540  PRINT "MODIFY#";
2545  INPUT A$
2550  GOSUB 4200
2552  IF Z=13 THEN 2710
2555  IF Z>0 AND Z<13 THEN 2575
2565  PRINT '7'7'7'7'7'7'7"ILLEGAL DATA";H$[3,5];
2567  GOTO 2540
2575  T2=Z
2577  J1=16-T2
2580  FOR I=1 TO J1
2582  PRINT H$[4,4];
2585  NEXT I
2587  FOR I=1 TO 20
2592  NEXT I
2595  INPUT B$
2600  PRINT H$[3,3];
2605  FOR I=1 TO J1-1
2610  PRINT ""
2615  NEXT I
2620  IF T2#12 AND T2#1 THEN 2645
2625  A$=B$
2630  GOSUB 4200
2631  IF B1 THEN 2565
2632  X=Z
2633  IF T2#1 THEN 2650
2635  GOSUB 3000
2640  IF B2 THEN 2540
2642  GOTO 2650
2645  GOSUB 2200
2647  IF B1 THEN 2565
2650  T3=K[T2]
2652  K[T2]=T5=X
2655  GOTO F1 OF 2660,2670,2660
2660  MAT I=K
2665  GOTO 2675
2670  MAT J=K
2675  MAT  PRINT #(E9+2),R2;I
2680  IF F1#3 THEN 2695
2685  PRINT #(E9+2); END 
2690  GOTO 2700
2695  MAT  PRINT #(E9+2);J
2700  GOSUB 9200
2705  GOTO 2540
2710  RETURN 
3000  B2=0
3005  E[17]=(L7-1)*10+L8
3010  GOSUB 3200
3020  GOSUB 4015
3035  IF B1 THEN 3100
3040  GOSUB 4085
3045  IF B1 THEN 3100
3050  E[17]=(L7+1)*10+L8
3052  GOSUB 3200
3055  RETURN 
3100  Z=U6
3105  GOSUB 4020
3110  GOSUB 4085
3115  E[17]=(L7+1)*10+L8
3120  GOSUB 3200
3125  B2=1
3130  RETURN 
3200  PRINT #N,R1;E$
3210  MAT  PRINT #N;E
3220  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$
4095  MAT  READ #N;E
4100  IF E[1]#-1 THEN 4120
4110  PRINT '7'7'7'7"EMPLOYEE# NOT IN USE";H$[3,5];
4115  B1=1
4117  RETURN 
4120  L7=INT(E[17]/10)
4125  L8=E[17]-L7*10
4130  RETURN 
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 
9200  PRINT #(E9+1);E$[1,22],U6,T1,D$[1,1],T2,T3,T4,T5,T6,D1,T7
9205  IF TYP(-(E9+1))=3 THEN 9220
9210  PRINT #(E9+1); END 
9212  PRINT H$[3,5];
9215  RETURN 
9220  PRINT "TRANSACTION FILE FULL--PLEASE EMPTY"
9225  STOP 
9230  PRINT "TRANSACTION FILE AT EOF"
9235  STOP 
9300  IF  END #(E9+1) THEN 9350
9305  FOR I=1 TO 200
9307  READ #(E9+1),I;E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
9310  READ #(E9+1);E$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
9315  NEXT I
9350  IF  END #(E9+1) THEN 9230
9355  RETURN 
9999  END 
