1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         ICPRT : CTC INVENTORY CONTROL 
4  REM                  FOR FINISHED PRODUCTS
5  REM         36211 REV  B  PART 2 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],X$[1]
12  DIM C[4,8],S[16],P[13],Q[30]
13  Y$="0123456789"
14  MAT S=ZER
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,1104,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 D
315  IF D<10^6 AND D>9999 THEN 330
320  GOSUB 4250
325  GOTO 300
330  X=D
335  GOSUB 4800
340  IF X1<1 OR X1>12 THEN 320
345  IF X2<1 OR X2>31 THEN 320
350  IF X3<72 THEN 320
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
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$="####  "
2030  X$="0"
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  PRINT "         ";
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=2
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
3020  P1=9
3025  IF C <= 16 THEN 3090
3030  P1=10
3035  IF C <= 23 THEN 3090
3040  P1=11
3045  IF C <= 27 THEN 3090
3050  P1=12
3055  IF C <= 29 THEN 3090
3060  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  DATA "C#","TRA","SL","C#L","LS (10=1&2; 11=0,1,2)","FSL","TM","SM","AG#","TR"
3205  RESTORE 3200
3210  PRINT "LIST BY"
3215  FOR J=1 TO 10
3225  READ B$
3230  PRINT B$;
3232  INPUT A$
3235  IF A$#"ALL" THEN 3250
3240  J[J]=-999
3245  GOTO 3305
3250  X=1
3252  IF J#7 THEN 3290
3255  J[J]=1
3260  IF A$="M" THEN 3305
3265  J[J]=-1
3270  GOTO 3305
3290  GOSUB 4200
3295  IF B1 THEN 3230
3300  J[J]=Z*X
3305  NEXT J
3310  RETURN 
3500  B1=0
3502  J=1
3505  FOR I=2 TO 8 STEP 3
3510  IF J[J]=-999 OR J[J]=S[I] THEN 3525
3512  IF I=8 THEN 3600
3515  B1=1
3520  RETURN 
3525  IF J[J+1]=-999 OR J[J+1]=S[I+1] THEN 3545
3530  GOTO 3515
3545  J=J+2
3550  NEXT I
3560  IF J[7]=-999 OR S5=J[7] THEN 3570
3565  GOTO 3515
3570  IF J[8]=-999 OR J[8]=S[12] THEN 3580
3575  GOTO 3515
3580  IF J[9]=-999 OR J[9]=C[R2,7] THEN 3590
3585  GOTO 3515
3590  IF J[10]=-999 OR J[10]=S[16]*100+S[11] THEN 3520
3595  GOTO 3515
3600  IF J[5]=10 AND (S[8]=1 OR S[8]=2) THEN 3525
3605  IF J[5]=11 AND (S[8] >= 0 AND S[8]<3) THEN 3525
3610  GOTO 3515
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]=Y$[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 
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 
8000  GOTO P5 OF 8005,8010
8005  PRINT '12;
8007  GOTO 8017
8010  K=66-P9
8015  GOSUB 9910
8017  FOR I=1 TO 200
8018  PRINT "";
8019  NEXT I
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";"";TAB(30)"PAGE: ";
8150  Z$="###"
8160  Z[1]=P4=P4+1
8170  GOSUB 9000
8172  PRINT 
8175  PRINT TAB(61)"UNIT FILES"
8178  PRINT TAB(58)"PRODUCT: ";
8179  GOSUB 5000
8180  K=3
8190  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"
8215  PRINT TAB(12)"#";TAB(22)"ACTION";TAB(39)"LOC. UNIT LOC    #    ";
8217  PRINT "STATUS SER LOC";"";TAB(21)"#      PRICE     PRICE"
8225  DATA 15,22,38,46,61,69
8230  RESTORE 8225
8232  X$=" "
8235  FOR I=1 TO 6
8240  READ X
8245  PRINT TAB(X);
8250  IF J[I]=-999 THEN 8285
8255  IF I=5 AND J[5]=10 THEN 8295
8260  IF I=5 AND J[5]=11 THEN 8305
8265  Z$="(####)"
8270  Z[1]=J[I]
8275  GOSUB 9000
8280  GOTO 8310
8285  PRINT "( ALL)";
8290  GOTO 8310
8295  PRINT "( 1&2)";
8300  GOTO 8310
8305  PRINT "(0,1&2)";
8310  NEXT I
8315  Z$="  ( M )  (####)   (######)                        (###)"
8318  X1=0
8320  IF J[7]#-999 THEN 8335
8325  Z$[4,6]="ALL"
8330  GOTO 8350
8335  IF J[7]=1 THEN 8350
8340  Z$[5,5]="A"
8350  IF J[8]#-999 THEN 8365
8355  Z$[11,14]=" ALL"
8360  GOTO 8372
8365  X1=X1+1
8370  Z[X1]=J[8]
8372  IF J[9]#-999 THEN 8380
8374  Z$[20,25]="  ALL "
8376  GOTO 8384
8380  X1=X1+1
8382  Z[X1]=J[9]
8384  IF J[10]#-999 THEN 8390
8386  Z$[52,54]="ALL"
8388  GOTO 8395
8390  X1=X1+1
8392  Z[X1]=J[10]
8395  GOSUB 9000
8400  K=3
8405  GOSUB 9900
8410  P9=14
8415  RETURN 
9000  REM
9040  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9050  DIM V$[72],Y$[10],Z$[72]
9060  Y$="0123456789"
9070  Z0=Z9-1
9080  Z0=Z0+1
9090  IF Z0=LEN(Z$)+1 THEN 9650
9100  IF Z$[Z0,Z0]="#" THEN 9170
9110  IF Z$[Z0,Z0+1]=".#" THEN 9170
9120  IF Z$[Z0,Z0+1]="+#" THEN 9150
9130  V$[V,V]=Z$[Z0,Z0]
9131  V=V+1
9140  GOTO 9080
9150  Z4=0
9160  GOTO 9080
9170  Z=100
9180  Z6=Z[Z2]
9190  Z9=Z0-1
9200  Z9=Z9+1
9210  IF Z$[Z9,Z9]="." THEN 9240
9220  IF Z$[Z9,Z9]="#" THEN 9200
9230  GOTO 9280
9240  IF Z5#1 THEN 9280
9250  Z5=0
9260  Z=Z9
9270  GOTO 9200
9280  IF Z#100 THEN 9300
9290  Z=Z9
9300  IF Z4=1 THEN 9350
9310  IF Z6 >= 0 THEN 9340
9320  V$[V,V]="-"
9321  V=V+1
9330  GOTO 9350
9340  V$[V,V]=" "
9341  V=V+1
9350  IF Z=Z9 THEN 9380
9360  Z6=ABS(Z6)+5*10^(Z-Z9)
9370  GOTO 9390
9380  Z6=ABS(Z6)+.5
9390  Z7=10^(Z-Z0-1)
9400  Z4=10*Z7
9410  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9420  IF Z1#0 THEN 9460
9430  V$[V,V]="."
9431  V=V+1
9440  Z3=0
9450  GOTO 9610
9460  Z8=INT(Z6/Z7)
9470  IF Z6<Z4 THEN 9500
9480  V$[V,V]="#"
9481  V=V+1
9490  GOTO 9600
9500  Z6=Z6-Z8*Z7
9510  IF Z8=0 THEN 9530
9520  Z3=0
9530  IF Z3=0 THEN 9590
9540  IF Z1#1 THEN 9570
9550  V$[V,V]="0"
9551  V=V+1
9560  GOTO 9600
9570  V$[V,V]=X$
9571  V=V+1
9580  GOTO 9600
9590  V$[V,V]=Y$[Z8+1,Z8+1]
9591  V=V+1
9600  Z7=Z7/10
9610  NEXT Z1
9620  Z3=Z4=Z5=Z7=1
9630  Z2=Z2+1
9640  GOTO 9070
9650  PRINT V$;
9660  V$=""
9670  RETURN 
9900  REM
9910  FOR I=1 TO K
9915  PRINT 
9930  NEXT I
9940  RETURN 
9999  END 
