1 REM **** HP BASIC PROGRAM LIBRARY ******************************* 2 REM 3 REM INSTLS : CTC INVENTORY CONTROL 4 REM FOR FINISHED PRODUCTS 5 REM 36211 REV B PART 23 OF 35 2/73 6 REM 7 REM **** CONTRIBUTED PROGRAM ************************************ 10 H$='29'31'13'26'30 11 DIM A$[20],H$[5],B$[30],C$[10],X$[1] 12 DIM C[4,8],S[16],P[13],Q[30] 13 C$="0123456789" 100 FILES C1 150 PRINT H$[1,2]"(1) TOP OF FORM OR (2) ABDICK"; 160 INPUT P5 200 READ C9,C8,C7,P9 210 DATA 13,4,8,13 220 MAT READ P 230 DATA 1000,3800,4300,4900,6500,7500,7560,7760,8760,9760,9870,10350,10400 235 MAT READ Q 236 DATA 2100,3101,3300,3200,3400,4100,4200,0,1102,114,1106,1108,1114,1118,1122 237 DATA 1126,1400,1401,1402,1403,1404,1405,1420,1300,1301,1302,1303,1200,1201,3120 240 P4=0 260 DATA "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13" 300 PRINT H$[1,2]"CURRENT DATE"; 310 INPUT X 320 GOSUB 4900 330 IF B1 THEN 300 355 D1=X1 360 D2=X2 365 D3=X3 370 GOSUB 3200 400 PRINT "FIRST PRD#"; 405 INPUT P2 410 IF P2>0 AND P2<31 THEN 425 415 GOSUB 4250 420 GOTO 400 425 PRINT "LAST PRD#"; 430 INPUT P3 435 IF P3>0 AND P3<31 AND P3 >= P2 THEN 450 440 GOSUB 4250 445 GOTO 425 450 PRINT "FIRST SER#"; 455 INPUT X2 460 X1=P2 465 GOSUB 3100 470 IF B1 THEN 450 472 C2=X2 475 PRINT "LAST SER#"; 480 INPUT X2 485 X1=P3 490 GOSUB 3100 492 IF B1 THEN 475 495 C4=X2 496 IF P2#P3 THEN 500 497 IF C4 >= C2 THEN 500 498 GOSUB 3120 499 GOTO 475 500 REM 510 P9=66 1000 FOR Q1=P2 TO P3 1001 GOSUB 8000 1002 C=Q1 1003 GOSUB 3000 1005 C3=C4 1007 IF Q1=P3 THEN 1040 1010 C3=P[P1] 1020 IF P1=1 THEN 1040 1030 C3=C3-P[P1-1] 1040 FOR C1=C2 TO C3 1045 R=C1 1050 IF P1=1 THEN 1060 1055 R=R+P[P1-1] 1060 GOSUB 4000 1065 GOSUB 4100 1070 IF NOT B1 OR S[1]#Q1 THEN 1080 1072 GOSUB 3500 1073 IF B1 THEN 1080 1075 GOSUB 2000 1080 NEXT C1 1085 C2=1 1090 NEXT Q1 1170 END 2000 REM 2010 PRINT TAB(10); 2020 Z$="#### " 2040 Z[1]=C1 2042 IF S[1]#5 THEN 2050 2044 Z[1]=Z[1]+900 2050 GOSUB 9000 2055 Z$="A#### " 2060 K3=2 2070 GOSUB 4400 2080 X$="" 2085 Z$="# " 2090 GOSUB 4400 2095 Z$="##/##/## " 2100 X=S[4] 2105 GOSUB 4800 2110 Z[1]=X2 2112 Z[2]=X3 2115 Z[3]=X1+70 2117 IF X1<8 THEN 2120 2118 Z[3]=X1+60 2120 GOSUB 9000 2125 K3=K3+1 2127 Z$="## " 2130 GOSUB 4400 2137 Z$="#### " 2140 GOSUB 4400 2145 Z$="##### " 2146 X$="0" 2147 IF S[K3]#0 THEN 2152 2148 K=9 2149 GOSUB 9950 2150 K3=K3+1 2151 GOTO 2155 2152 GOSUB 4400 2155 X$=" " 2157 Z$="## " 2160 GOSUB 4400 2165 PRINT " "; 2167 GOSUB 4400 2172 Z$="##M " 2173 IF S5=1 THEN 2175 2174 Z$="##A " 2175 GOSUB 4400 2180 Z$="#### " 2182 K3=K3+1 2185 GOSUB 4400 2190 Z$="###### " 2195 Z[1]=C[R2,7] 2200 GOSUB 9000 2205 Z$="$#### " 2210 Z[1]=S6 2220 GOSUB 9000 2223 Z[1]=S[15] 2224 GOSUB 9000 2225 Z$=" #.##%" 2226 Z[1]=S[16]+S[11]*.01 2227 IF S[16]#0 THEN 2230 2228 Z$=" TE - ##" 2229 Z[1]=S[11] 2230 GOSUB 9000 2232 K=1 2235 GOSUB 9900 2240 P9=P9+2 2245 IF P9<60 THEN 2260 2250 GOSUB 8000 2260 RETURN 3000 P1=C 3005 IF C<9 THEN 3090 3010 P1=9 3015 IF C <= 16 THEN 3090 3020 P1=10 3025 IF C <= 23 THEN 3090 3030 P1=11 3035 IF C <= 27 THEN 3090 3040 P1=12 3045 IF C <= 29 THEN 3090 3050 P1=13 3090 RETURN 3100 B1=0 3105 C=X1 3110 GOSUB 3000 3115 IF P1#5 THEN 3125 3120 X2=X2-900 3125 X=P[P1] 3130 IF P1=1 THEN 3140 3135 X=X-P[P1-1] 3140 IF X2>0 AND X2 <= X THEN 3155 3145 PRINT '7"BAD SER#";H$[3,5]; 3150 B1=1 3155 RETURN 3200 PRINT "BEGINNING DATE"; 3205 INPUT X 3210 GOSUB 4900 3215 IF B1 THEN 3200 3220 D4=X3*10^4+X1*100+X2 3225 PRINT "ENDING DATE"; 3230 INPUT X 3235 GOSUB 4900 3240 IF B1 THEN 3225 3245 D5=X3*10^4+X1*100+X2 3250 PRINT "LEASE STATUS"; 3255 INPUT D6 3260 IF D6 >= 0 AND D6<10 THEN 3270 3265 GOSUB 4250 3267 GOTO 3250 3270 RETURN 3500 B1=0 3505 IF S[3]#6 OR S[8]#D6 THEN 3540 3510 X=S[4] 3515 IF X>79999. THEN 3530 3520 X=7*10^5+X 3525 GOTO 3535 3530 X=6*10^5+X 3535 IF X >= D4 AND X <= D5 THEN 3550 3540 B1=1 3550 RETURN 4000 REM 4036 X=R/C8 4038 X1=INT(X) 4040 X2=INT((X-X1)*100) 4042 FOR I=1 TO (C8-1) 4044 IF X2=I*25 THEN 4054 4046 NEXT I 4048 R1=X1 4050 R2=C8 4052 GOTO 4057 4054 R1=X1+1 4056 R2=I 4057 RESTORE 260 4058 FOR N=1 TO C9 4060 READ A$ 4062 IF R1<201 THEN 4070 4063 R1=R1-200 4065 NEXT N 4067 PRINT "ERR IN P"; 4068 STOP 4070 ASSIGN A$,1,W5 4080 RETURN 4100 B1=0 4102 MAT READ #1,R1;C 4105 IF C[R2,1]=-1 THEN 4195 4107 B1=1 4110 J=1 4111 FOR I=1 TO 9 STEP 4 4112 S5=SGN(C[R2,J]) 4113 C[R2,J]=ABS(C[R2,J]) 4114 S[I]=INT(C[R2,J]/10^4) 4115 S[I+1]=C[R2,J]-S[I]*10^4 4116 IF I#9 THEN 4119 4117 S[I+1]=INT(S[I+1]/100) 4118 S[I+2]=C[R2,J]-S[I]*10^4-S[I+1]*100 4119 J=J+2 4120 NEXT I 4122 S[3]=INT(C[R2,2]/10^5) 4125 S[4]=C[R2,2]-S[3]*10^5 4145 S[7]=INT(C[R2,4]/10) 4150 S[8]=C[R2,4]-S[7]*10 4170 S[12]=INT(C[R2,6]/100) 4175 S[13]=C[R2,6]-S[12]*100 4180 S[14]=INT(C[R2,8]/10^5) 4185 S[15]=INT((C[R2,8]-S[14]*10^5)/10) 4187 S[16]=C[R2,8]-S[14]*10^5-S[15]*10 4190 S6=S[13]*10+S[14] 4195 RETURN 4200 B1=Z=0 4210 FOR I1=1 TO LEN(A$) 4220 FOR I2=1 TO 10 4230 IF A$[I1,I1]=C$[I2,I2] THEN 4260 4240 NEXT I2 4250 PRINT '7'7"INVALID DATA";H$[3,5]; 4255 B1=1 4257 RETURN 4260 Z=Z*10+I2-1 4270 NEXT I1 4280 RETURN 4400 Z[1]=S[K3] 4405 K3=K3+1 4410 GOSUB 9000 4420 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 4900 B1=0 4905 GOSUB 4800 4910 IF X1>0 AND X1<13 THEN 4925 4915 GOSUB 4250 4920 RETURN 4925 IF X2<0 OR X2>31 THEN 4915 4930 IF X3>99 THEN 4915 4940 RETURN 5000 IF Q1#8 THEN 5050 5040 PRINT "VT06"; 5045 RETURN 5050 Z$="####-###" 5055 X$="0" 5060 X=INT(Q[Q1]/1000) 5065 GOTO X OF 5070,5075,5080,5085 5070 Z[1]=2200 5072 GOTO 5100 5075 Z[1]=3000 5077 GOTO 5100 5080 Z[1]=3300 5082 GOTO 5100 5085 Z[1]=3360 5100 Z[2]=Q[Q1]-X*1000 5105 GOSUB 9000 5110 RETURN 6000 PRINT 6040 RETURN 8000 GOTO P5 OF 8005,8010 8005 PRINT '12'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; 8007 GOTO 8020 8010 K=66-P9 8015 GOSUB 9910 8020 K=4 8030 GOSUB 9910 8040 PRINT TAB(16)"DATE: "; 8050 Z$="##/##/##" 8060 X$=" " 8070 Z[1]=D1 8080 Z[2]=D2 8090 Z[3]=D3 8100 GOSUB 9000 8110 PRINT TAB(50)"I N V E N T O R Y C O N T R O L"; 8120 K=30 8130 GOSUB 9950 8140 PRINT "PAGE: "; 8150 Z$="###" 8160 P4=P4+1 8165 Z[1]=P4 8170 GOSUB 9000 8172 GOSUB 6000 8175 PRINT TAB(42)"LEASED UNITS INSTALLED FROM "; 8176 Z$="##/##/##" 8177 X=D4 8178 GOSUB 4800 8179 Z[1]=X2 8180 Z[2]=X3 8181 Z[3]=X1 8182 GOSUB 9000 8183 PRINT " TO "; 8184 X=D5 8185 GOSUB 4800 8186 Z[1]=X2 8187 Z[2]=X3 8188 Z[3]=X1 8189 GOSUB 9000 8190 PRINT 8191 PRINT TAB(58)"PRODUCT: "; 8192 GOSUB 5000 8193 K=2 8195 GOSUB 9900 8200 PRINT " SERIAL CUST# TRANS- DATE SALES CUST# "; 8205 PRINT "INVOICE LEASE FIELD TERMS SALESMAN AGREEMENT MAINT. "; 8210 PRINT "EQ.RENTAL TAX RATE"; 8212 GOSUB 6000 8215 PRINT TAB(12)"#";TAB(22)"ACTION";TAB(39)"LOC. UNIT LOC # "; 8217 PRINT "STATUS SER LOC"; 8218 K=21 8219 GOSUB 9950 8220 PRINT "# PRICE PRICE"; 8330 K=2 8335 GOSUB 9900 8340 P9=13 8350 RETURN 9000 REM 9002 V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1 9004 DIM V$[72],Y$[10],Z$[72] 9006 Y$="0123456789" 9008 Z0=Z9-1 9010 Z0=Z0+1 9012 IF Z0=LEN(Z$)+1 THEN 9140 9014 IF Z$[Z0,Z0]="#" THEN 9030 9016 IF Z$[Z0,Z0+1]=".#" THEN 9030 9018 IF Z$[Z0,Z0+1]="+#" THEN 9026 9020 V$[V,V]=Z$[Z0,Z0] 9022 V=V+1 9024 GOTO 9010 9026 Z4=0 9028 GOTO 9010 9030 Z=100 9032 Z6=Z[Z2] 9034 Z9=Z0-1 9036 Z9=Z9+1 9038 IF Z$[Z9,Z9]="." THEN 9044 9040 IF Z$[Z9,Z9]="#" THEN 9036 9042 GOTO 9052 9044 IF Z5#1 THEN 9052 9046 Z5=0 9048 Z=Z9 9050 GOTO 9036 9052 IF Z#100 THEN 9056 9054 Z=Z9 9056 IF Z4=1 THEN 9070 9058 IF Z6 >= 0 THEN 9066 9060 V$[V,V]="-" 9062 V=V+1 9064 GOTO 9070 9066 V$[V,V]=" " 9068 V=V+1 9070 IF Z=Z9 THEN 9076 9072 Z6=ABS(Z6)+5*10^(Z-Z9) 9074 GOTO 9078 9076 Z6=ABS(Z6)+.5 9078 Z7=10^(Z-Z0-1) 9080 Z4=10*Z7 9082 FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1 9084 IF Z1#0 THEN 9094 9086 V$[V,V]="." 9088 V=V+1 9090 Z3=0 9092 GOTO 9132 9094 Z8=INT(Z6/Z7) 9096 IF Z6