1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         CSTANL : CTC MANUFACTURING PARTS CONTROL 
4  REM
5  REM         36210 REV  B  PART 7  OF 23   2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  REM *MANUFACTURING--GIVES THE TOTAL COST OF INVEN. ON HAND*
11  DIM P[13],P$[24],T[6,4],U[22],W[25],S[12,2]
12  DIM A$[20],X$[1]
50  PRINT "CURRENT DATE (MDDYY)";
51  INPUT D
52  IF D<10^6 AND D>9999 THEN 60
53  PRINT '7'7'7"WHAT";
54  GOTO 51
60  D1=INT(D/10^4)
61  IF D1<1 OR D1>12 THEN 53
62  D2=INT((D-D1*10^4)/100)
63  IF D2<1 OR D2>31 THEN 53
64  D3=D-D1*10^4-D2*100
65  IF D3<72 THEN 53
100  FILES G1,G0
150  PRINT '29'31"W A I T !"'13;
155  MAT S=ZER
160  MAT T=ZER
162  READ N9,O
164  DATA 13,21
165  FOR I=1 TO O
170  READ #2;W[I]
175  NEXT I
180  READ #2;A1,A2,B1,B2,C1,C2,K5,K6,T1
190  DATA "G1","G2","G3","G4","G5","G6","G7","G8","G9"
1000  Q=1
1005  Q3=0
1010  READ A$
1015  ASSIGN A$,1,W5
1020  IF  END #1 THEN 1050
1025  READ #1;P$
1030  MAT  READ #1;P
1035  IF P[1]=0 THEN 1050
1040  GOSUB 3000
1045  GOTO 1025
1050  IF Q3 OR (Q#2 AND Q#4 AND Q#7) THEN 1065
1055  A$[3]="A"
1057  Q3=1
1060  GOTO 1015
1065  Q=Q+1
1067  PRINT Q
1070  IF Q<10 THEN 1005
2012  K=4
2014  GOSUB 9900
2018  PRINT TAB(17)"I N V E N T O R Y  P A R T S  A N A L Y S I S"
2020  PRINT TAB(33);
2025  Z$="##/##/##"
2030  X$=" "
2035  Z[1]=D1
2040  Z[2]=D2
2045  Z[3]=D3
2050  GOSUB 7000
2055  K=3
2060  GOSUB 9900
2065  PRINT TAB(37)"ON HAND";TAB(60)"ON ORDER"
2070  PRINT 
2075  FOR I=1 TO 4
2080  GOTO I OF 2085,2095,2105,2115
2085  A$="TOTAL COST"
2090  GOTO 2120
2095  A$="  A  ITEMS"
2100  GOTO 2120
2105  A$="  B  ITEMS"
2110  GOTO 2120
2115  A$="  C  ITEMS"
2120  PRINT TAB(12);A$;TAB(31);
2125  FOR J=1 TO 3 STEP 2
2127  X1=T[I,J]
2128  X2=T[I,J+1]
2130  GOSUB 4000
2135  PRINT TAB(55);
2140  NEXT J
2145  K=2
2150  GOSUB 9900
2155  NEXT I
2160  PRINT TAB(12)"TOTAL MAX COST";TAB(31);
2165  X1=T[5,1]
2170  X2=T[5,2]
2175  GOSUB 4000
2180  K=2
2185  GOSUB 9900
2195  PRINT TAB(12)"TOTAL MIN COST";TAB(31);
2200  X1=T[6,1]
2205  X2=T[6,2]
2210  GOSUB 4000
2220  PRINT 
2225  PRINT TAB(12);
2230  FOR I=1 TO 56
2235  PRINT "-";
2240  NEXT I
2245  K=2
2250  GOSUB 9900
2255  PRINT TAB(12)"TOTAL WEEKLY $ USAGE = ";
2260  X=T1*100
2265  X1=INT(X/100)
2270  X2=X-X1*100
2275  GOSUB 4000
2277  PRINT 
2280  I=1
2285  A$="A  ITEMS"
2290  GOSUB 2900
2295  A$="B  ITEMS"
2300  GOSUB 2900
2305  A$="C  ITEMS"
2310  GOSUB 2900
2315  PRINT 
2320  A$="PARTS-10"
2325  GOSUB 2900
2330  A$="PARTS-20"
2335  GOSUB 2900
2340  A$="PARTS-30"
2345  GOSUB 2900
2350  A$="PARTS-40"
2355  GOSUB 2900
2360  A$="PARTS-50"
2365  GOSUB 2900
2370  A$="PARTS-60"
2375  GOSUB 2900
2380  A$="PARTS-70"
2385  GOSUB 2900
2390  A$="PARTS-80"
2395  GOSUB 2900
2400  A$="PARTS-90"
2405  GOSUB 2900
2410  END 
2900  PRINT TAB(24);A$"   ";
2910  X1=S[I,1]
2915  X2=S[I,2]
2920  GOSUB 4000
2925  PRINT 
2930  I=I+1
2935  RETURN 
3000  REM
3005  T7=P[2]*P[4]
3006  T8=P[2]*P[3]
3007  T9=T7
3008  I=J=1
3009  GOSUB 3300
3010  T9=T8
3012  J=3
3014  GOSUB 3300
3030  GOSUB 9700
3035  GOSUB 9200
3037  GOSUB 9250
3040  I=L+1
3042  J=1
3043  T9=T7
3044  GOSUB 3300
3046  J=3
3047  T9=T8
3048  GOSUB 3300
3050  GOTO L OF 3070,3090,3110
3070  Y5=A1
3075  Y6=A2
3080  GOTO 3120
3090  Y5=B1
3095  Y6=B2
3100  GOTO 3120
3110  Y5=C1
3115  Y6=C2
3120  GOSUB 9400
3125  I=5
3130  J=1
3135  T9=M5
3140  GOSUB 3300
3145  I=6
3150  T9=M6
3155  GOSUB 3300
3160  T9=T
3165  I=L
3170  GOSUB 3400
3175  I=Q+3
3180  GOSUB 3400
3190  RETURN 
3200  IF B>-100 THEN 3230
3210  A=A-1
3220  B=B+100
3230  IF B>99 THEN 3260
3235  IF SGN(A)*SGN(B) >= 0 THEN 3280
3240  A=A-SGN(A)
3245  B=B-100*SGN(B)
3250  GOTO 3280
3260  A=A+INT(B*.01)
3265  B=(B*.01-INT(B*.01))*100
3267  IF B-INT(B)<.9 THEN 3280
3270  B=INT(B)+1
3280  RETURN 
3300  X=T9*100
3305  X1=INT(X/100)
3310  X2=X-X1*100
3315  A=T[I,J]+X1
3320  B=T[I,J+1]+X2
3325  GOSUB 3200
3330  T[I,J]=A
3335  T[I,J+1]=B
3340  RETURN 
3400  X=T9*100
3405  X1=INT(X/100)
3410  X2=X-X1*100
3415  A=S[I,1]+X1
3420  B=S[I,2]+X2
3425  GOSUB 3200
3430  S[I,1]=A
3435  S[I,2]=B
3440  RETURN 
4000  REM
4010  Z$="$+########."
4020  Z[1]=X1
4030  GOSUB 7000
4040  X$="0"
4045  Z$="##"
4050  Z[1]=X2
4060  GOSUB 7000
4080  RETURN 
7000  REM
7005  V=Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
7010  DIM V$[72],Y$[10],Z$[72]
7015  Y$="0123456789"
7020  Z0=Z9-1
7025  Z0=Z0+1
7030  IF Z0=LEN(Z$)+1 THEN 7350
7035  IF Z$[Z0,Z0]="#" THEN 7075
7040  IF Z$[Z0,Z0+1]=".#" THEN 7075
7045  IF Z$[Z0,Z0+1]="+#" THEN 7065
7050  V$[V,V]=Z$[Z0,Z0]
7055  V=V+1
7060  GOTO 7025
7065  Z4=0
7070  GOTO 7025
7075  Z=100
7080  Z6=Z[Z2]
7085  Z9=Z0-1
7090  Z9=Z9+1
7095  IF Z$[Z9,Z9]="." THEN 7110
7100  IF Z$[Z9,Z9]="#" THEN 7090
7105  GOTO 7130
7110  IF Z5#1 THEN 7130
7115  Z5=0
7120  Z=Z9
7125  GOTO 7090
7130  IF Z#100 THEN 7140
7135  Z=Z9
7140  IF Z4=1 THEN 7175
7145  IF Z6 >= 0 THEN 7165
7150  V$[V,V]="-"
7155  V=V+1
7160  GOTO 7175
7165  V$[V,V]=" "
7170  V=V+1
7175  IF Z=Z9 THEN 7190
7180  Z6=ABS(Z6)+5*10^(Z-Z9)
7185  GOTO 7195
7190  Z6=ABS(Z6)+.5
7195  Z7=10^(Z-Z0-1)
7200  Z4=10*Z7
7205  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
7210  IF Z1#0 THEN 7235
7215  V$[V,V]="."
7220  V=V+1
7225  Z3=0
7230  GOTO 7330
7235  Z8=INT(Z6/Z7)
7240  IF Z6<Z4 THEN 7260
7245  V$[V,V]="#"
7250  V=V+1
7255  GOTO 7325
7260  Z6=Z6-Z8*Z7
7265  IF Z8=0 THEN 7275
7270  Z3=0
7275  IF Z3=0 THEN 7315
7280  IF Z1#1 THEN 7300
7285  V$[V,V]="0"
7290  V=V+1
7295  GOTO 7325
7300  V$[V,V]=X$
7305  V=V+1
7310  GOTO 7325
7315  V$[V,V]=Y$[Z8+1,Z8+1]
7320  V=V+1
7325  Z7=Z7/10
7330  NEXT Z1
7335  Z3=Z4=Z5=Z7=1
7340  Z2=Z2+1
7345  GOTO 7020
7350  PRINT V$;
7355  V$=""
7360  RETURN 
9200  REM
9210  T=0
9220  FOR I=1 TO O
9230  IF U[I]=99 THEN 9245
9240  T=T+(P[2]*U[I]*W[I])
9245  NEXT I
9247  RETURN 
9250  REM
9260  IF (T/T1)<K5 THEN 9300
9265  IF K5 <= T/T1 AND T/T1<K6 THEN 9290
9270  L=1
9275  RETURN 
9290  L=2
9295  RETURN 
9300  L=3
9310  RETURN 
9400  REM
9410  M5=M6=0
9430  FOR I=1 TO O
9440  IF U[I]=99 THEN 9460
9445  M5=M5+(Y5*U[I]*W[I])
9447  M6=M6+(Y6*U[I]*W[I])
9460  NEXT I
9465  M5=M5*P[2]
9467  M6=M6*P[2]
9470  RETURN 
9700  REM
9710  J=1
9720  FOR I=5 TO 9
9730  U[J]=INT(P[I]/1000)
9740  U[J+1]=P[I]-U[J]*1000
9750  J=J+2
9760  NEXT I
9765  FOR I=10 TO N9
9770  U[J]=INT(P[I]/10^4)
9772  U[J+1]=INT((P[I]-U[J]*10^4)/100)
9774  U[J+2]=P[I]-U[J]*10^4-U[J+1]*100
9776  J=J+3
9780  NEXT I
9785  RETURN 
9900  FOR K0=1 TO K
9910  PRINT 
9920  NEXT K0
9930  RETURN 
9999  END 
