1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         CUSSRT : CTC INVENTORY CONTROL 
4  REM                  FOR FINISHED PRODUCTS
5  REM         36211 REV  B  PART 17 OF 35   2/73 
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
9  DIM Z$[54]
10  DIM A$[20],Y$[10],S$[54],T$[54],X$[1]
11  DIM E[8],Q[30],P[13],C[4,8],S[16],D[2,2]
20  Y$="0123456789"
100  FILES C1,G10A,G0,S3
150  PRINT "(1) TOP OF FORM OR (2) ABDICK";
160  INPUT P5
200  READ C9,C8,C7,G8
205  Z[1]=3000
210  DATA 13,4,8,3
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  DATA "C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13"
245  DATA "G10A","G10B","G10C"
300  PRINT "CURRENT DATE";
310  INPUT X
330  T$="   "
335  GOSUB 4800
355  D1=X1
360  D2=X2
365  D3=X3
400  PRINT "FIRST CUST# INTERVAL (A1,A2)";
405  INPUT A1,A2
420  PRINT "LAST INTERVAL#";
425  INPUT A3
430  PRINT "TRANSACTION (10=ALL)";
435  INPUT G0
471  PRINT "LSE STAT (10=1&2;11=ALL;12=0,1,&2)";
472  INPUT G1
480  PRINT "FIRST PAGE#";
482  INPUT P4
485  P4=P4-1
500  P9=66
510  N5=1
512  GOSUB 1300
515  S5=0
520  FOR I=1 TO 188 STEP 11
525  PRINT #4,I; END 
530  NEXT I
950  PRINT "0";
1000  IF  END #1 THEN 1060
1010  MAT  READ #1;E
1012  S5=S5+1
1015  IF E[1]=-1 THEN 1010
1020  S[1]=INT(E[1]/10^4)
1021  S[2]=E[1]-S[1]*10^4
1022  S[3]=INT(E[2]/10^5)
1023  S[8]=E[4]-INT(E[4]/10)*10
1024  IF G0=10 THEN 1027
1025  IF S[3]#G0 THEN 1010
1027  IF G1=11 THEN 1035
1028  IF G1=10 THEN 1032
1029  IF G1=12 THEN 1034
1030  IF S[8]=G1 THEN 1035
1031  GOTO 1010
1032  IF S[8]#1 AND S[8]#2 THEN 1010
1033  GOTO 1035
1034  IF S[8]>2 THEN 1010
1035  FOR I=A1 TO A2
1036  IF S[2]=I THEN 1040
1037  NEXT I
1038  GOTO 1010
1040  GOSUB 3000
1050  GOTO 1010
1060  N5=N5+1
1070  IF N5>C9 THEN 1100
1075  GOSUB 1300
1080  GOTO 1000
1100  FOR A0=A1 TO A2
1105  GOSUB 5300
1135  A5=0
1137  S7=A0
1140  GOSUB 3100
1142  F5=0
1145  IF  END #4 THEN 1230
1150  READ #4;S
1155  IF F5 THEN 1160
1156  F5=1
1157  GOSUB 8000
1160  S1=INT(S/10^5)
1165  S2=INT((S-S1*10^5)/10)
1170  GOSUB 2000
1180  GOTO 1150
1230  NEXT A0
1240  A1=A1+18
1245  A2=A2+18
1250  IF A2 <= A3 THEN 510
1260  END 
1300  RESTORE 240
1310  FOR I=1 TO N5
1320  READ A$
1330  NEXT I
1340  ASSIGN A$,1,W5
1350  READ #1,1
1360  RETURN 
2000  C0=S1
2001  GOSUB 3200
2002  R=S2
2003  IF P#5 THEN 2005
2004  R=R-900
2005  IF P=1 THEN 2007
2006  R=R+P[P-1]
2007  GOSUB 4000
2008  IF S1#8 THEN 2035
2010  PRINT "VT06";
2030  GOTO 2090
2035  Z$="####-### "
2040  X$="0"
2045  X=INT(Q[S1]/1000)
2050  Z[2]=Q[S1]-X*1000
2055  GOTO X OF 2060,2065,2070,2075
2060  Z[1]=2200
2062  GOTO 2080
2065  Z[1]=3000
2067  GOTO 2080
2070  Z[1]=3300
2072  GOTO 2080
2075  Z[1]=3360
2080  GOSUB 9000
2090  PRINT TAB(10);
2095  Z$="####    "
2100  X$="0"
2105  Z[1]=S2
2120  GOSUB 9000
2135  K3=3
2140  X$=" "
2145  Z$="#    "
2150  GOSUB 4400
2155  Z$="##/##/##   "
2160  X=S[4]
2165  GOSUB 4800
2170  Z[1]=X2
2175  Z[2]=X3
2180  Z[3]=X1+70
2185  IF X1<8 THEN 2195
2190  Z[3]=X1+60
2195  GOSUB 9000
2200  K3=K3+1
2205  Z$="##    "
2210  GOSUB 4400
2215  Z$="####    "
2220  GOSUB 4400
2225  Z$="#####    "
2230  X$="0"
2235  IF S[K3]#0 THEN 2260
2240  PRINT "         ";
2250  K3=K3+1
2255  GOTO 2265
2260  GOSUB 4400
2265  X$=" "
2270  Z$="##    "
2275  GOSUB 4400
2280  PRINT "  ";
2285  GOSUB 4400
2290  Z$="##M    "
2295  IF S5=1 THEN 2305
2300  Z$="##A    "
2305  GOSUB 4400
2310  Z$="####     "
2315  K3=K3+1
2320  GOSUB 4400
2325  Z$="######    "
2330  Z[1]=C[R2,7]
2335  GOSUB 9000
2340  Z$="$####     "
2345  Z[1]=S6
2350  GOSUB 9000
2355  Z[1]=S[15]
2360  GOSUB 9000
2365  Z$=" #.##%"
2366  Z[1]=S[16]+S[11]*.01
2367  IF S[16]#0 THEN 2370
2368  Z$=" TE - ##"
2369  Z[1]=S[11]
2370  GOSUB 9000
2380  K=1
2385  GOSUB 9900
2390  P9=P9+2
2395  IF P9<60 THEN 2405
2400  GOSUB 8000
2405  RETURN 
3000  S7=S[2]
3002  GOSUB 3100
3005  L1=0
3010  IF  END #4 THEN 3030
3012  READ #4;L
3015  L1=L1+1
3020  GOTO 3012
3030  IF L1<353 THEN 3045
3035  PRINT S[2];"MORE THAN 352 UNITS"
3040  STOP 
3045  C0=S[1]
3047  GOSUB 3200
3050  S6=S5
3055  IF P=1 THEN 3065
3060  S6=S6-P[P-1]
3065  IF S[1]#5 THEN 3075
3070  S6=S6+900
3075  PRINT #4;(S[1]*10^5+S6*10+S[3]), END 
3080  RETURN 
3100  X=INT(S7/18)
3105  S7=S7-X*18
3110  IF S7#0 THEN 3130
3120  S7=18
3130  READ #4,((S7-1)*11+1)
3140  RETURN 
3200  P=C0
3205  IF C0<9 THEN 3290
3210  P=9
3215  IF C0 <= 16 THEN 3290
3220  P=10
3225  IF C0 <= 23 THEN 3290
3230  P=11
3235  IF C0 <= 27 THEN 3290
3240  P=12
3245  IF C0 <= 29 THEN 3290
3250  P=13
3290  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 4058
4054  R1=X1+1
4056  R2=I
4058  FOR N5=1 TO C9
4060  IF R1<201 THEN 4100
4062  R1=R1-200
4065  NEXT N5
4067  PRINT "ERR IN P";
4068  STOP 
4100  B1=0
4101  GOSUB 1300
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 
4400  Z[1]=S[K3]
4405  K3=K3+1
4410  GOSUB 9000
4420  RETURN 
4700  J=1
4705  Z$=""
4710  FOR I=I1 TO LEN(T$)
4715  F2=1
4720  IF T$[I,I]='17 THEN 4780
4725  F2=2
4730  IF T$[I,I]='18 THEN 4780
4735  Z$[J,J]=T$[I,I]
4740  J=J+1
4742  IF B3 THEN 4765
4745  IF T$[I,I]="." THEN 4755
4750  IF T$[I,I]#"," THEN 4765
4755  Z$[J,J]=" "
4760  J=J+1
4765  NEXT I
4770  F2=3
4780  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  X=INT(D[M1,1]/100)
4902  READ #3,4
4905  FOR J1=1 TO 52
4907  READ #3;X1
4910  IF X<X1 THEN 4925
4920  NEXT J1
4925  READ #3,2
4930  FOR J=1 TO J1
4935  READ #3;Z$
4940  NEXT J
4950  RETURN 
5300  B1=0
5305  X=A0
5307  RESTORE 245
5310  FOR M=1 TO G8
5312  READ A$
5315  IF X<401 THEN 5340
5320  X=X-400
5325  NEXT M
5335  GOTO 5397
5340  M0=INT(X/2)
5345  M1=2
5350  IF M0*2=X THEN 5365
5355  M0=M0+1
5360  M1=1
5365  ASSIGN A$,2,W5
5390  READ #2,M0;S$,D[1,1],D[1,2],T$,D[2,1],D[2,2]
5392  IF M1=2 THEN 5397
5395  T$=S$
5397  B3=0
5398  RETURN 
5400  I1=1
5410  GOSUB 4700
5415  GOTO F2 OF 5420,5440,5465
5420  PRINT TAB(59);Z$;
5425  GOSUB 6000
5427  P9=P9+1
5430  I1=I+1
5435  GOTO 5410
5440  PRINT TAB(59);Z$;
5445  IF D[M1,1]=0 THEN 5425
5450  GOSUB 4900
5455  PRINT ", ";Z$;"   ";D[M1,1];
5460  GOTO 5425
5465  IF Z$="" THEN 5490
5470  PRINT TAB(59)"ATTN: ";Z$;
5475  GOSUB 6000
5480  P9=P9+1
5490  B3=1
5495  RETURN 
6000  PRINT 
6010  RETURN 
8000  GOTO P5 OF 8005,8020
8005  PRINT '12'18'18'18'18'18'18'18'18'18'18'18;
8010  GOTO 8030
8020  K=66-P9
8025  GOSUB 9910
8030  K=4
8035  GOSUB 9910
8040  PRINT "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  PRINT "";TAB(30)"PAGE: ";
8150  Z$="###"
8160  P4=P4+1
8165  Z[1]=P4
8170  GOSUB 9000
8172  GOSUB 6000
8185  PRINT TAB(52);
8186  Z$="A####:"
8187  X$="0"
8188  Z[1]=A0
8189  GOSUB 9000
8190  P9=0
8191  GOSUB 5400
8192  K=2
8194  GOSUB 9910
8200  PRINT "PRODUCT  SERIAL 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)"#   ACTION";TAB(33)"LOC. UNIT LOC    #    ";
8217  PRINT "STATUS SER LOC";
8218  PRINT "";TAB(21);
8220  PRINT "#      PRICE     PRICE";
8222  GOSUB 6000
8223  PRINT TAB(16);
8225  IF G0#10 THEN 8230
8227  PRINT "( ALL)";
8228  GOTO 8240
8230  Z[1]=G0
8235  GOSUB 8300
8240  PRINT TAB(54);
8241  A$="(0,1&2)"
8242  IF G1=12 THEN 8252
8245  A$="( 1&2)"
8246  IF G1=10 THEN 8252
8247  A$="( ALL)"
8248  IF G1=11 THEN 8252
8249  Z[1]=G1
8250  GOSUB 8300
8251  GOTO 8255
8252  PRINT A$;
8255  K=2
8260  GOSUB 9900
8265  P9=P9+12
8270  RETURN 
8300  Z$="( ## )"
8305  X$=" "
8310  GOSUB 9000
8320  RETURN 
9000  REM
9003  LET Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
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
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 
9900  GOSUB 6000
9910  FOR I=1 TO K
9915  PRINT 
9930  NEXT I
9940  RETURN 
9950  END 
