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