1  REM * PRINTS THE INVENTORY FILE BY CATEGORY A,B,C*
5  MAT T=ZER
6  P=0
8  DIM P[13],U[30],W[30],T[2,2]
10  DIM C$[10],P$[10],X$[20],A$[20],D$[10]
11  C$="0123456789"
20  READ O,O1,O2,N9
25  DATA 21,7,9,13
50  DATA "G1","G2","G3","G4","G5","G6","G7","G8","G9"
100  FILES G1,G0
105  P9=66
110  FOR I=1 TO O
120  READ #2;W[I]
130  NEXT I
140  READ #2;A1,A2,B1,B2,C1,C2,K5,K6,T1
150  PRINT "ENTER TODAY'S DATE (MDY)";
160  INPUT D
165  D1=INT(D/10^4)
167  IF D1>0 AND D1<13 THEN 175
170  PRINT '7'7'7"INVALID DATE"
172  GOTO 150
175  D2=INT((D-D1*10^4)/100)
177  IF D2<1 OR D2>31 THEN 170
180  D3=D-D1*10^4-D2*100
185  IF D3<72 OR D3>99 THEN 170
186  PRINT "ENTER CATEGORY: 'A', 'B', 'C' OR 'ALL'";
187  INPUT D$
188  D7=1
189  IF D$="A" THEN 200
190  D7=2
191  IF D$="B" THEN 200
192  D7=3
193  IF D$="C" THEN 200
194  D7=1
195  IF D$="ALL" THEN 200
196  PRINT '7'7'7"WHAT";
197  GOTO 187
200  PRINT "WITH WHAT PART NO. DO YOU WISH TO BEGIN";
205  INPUT X$
210  IF X$="0" THEN 900
215  IF LEN(X$)=10 THEN 230
220  PRINT '7'7'7"INVALID DATA"
225  GOTO 200
230  IF X$[3,3]#"-" THEN 220
235  IF X$[8,8]#"-" THEN 220
240  A$=X$[1,1]
245  GOSUB 4200
250  IF G1 OR Z=0 THEN 220
255  Q0=Z
260  A$=X$[2,2]
265  GOSUB 4200
270  IF G1 THEN 220
275  Q1=Z
280  A$[1,4]=X$[4,7]
285  A$[5]=X$[9]
290  GOSUB 4200
295  IF G1 THEN 220
297  Q2=Z
300  RESTORE 50
302  Q=Q0
305  FOR I=1 TO Q
310  READ A$
315  NEXT I
317  Q3=0
320  IF Q#2 THEN 340
325  IF Q1=0 AND Q2<35001. THEN 350
330  A$[3]="A"
332  Q3=1
335  GOTO 350
340  IF Q#4 AND Q#7 THEN 350
345  IF Q1 >= 2 THEN 330
350  ASSIGN A$,1,W5
800  IF  END #1 THEN 820
805  READ #1;P$
810  MAT  READ #1;P
815  IF P[1]#0 THEN 830
820  PRINT '7'7"BEG.PART# NOT ON FILE"
825  GOTO 200
830  X=INT(ABS(P[1])/10^6)
835  X1=ABS(P[1])-X*10^6
840  IF SGN(P[1])#-1 THEN 850
845  X=X+8
850  IF X=Q1 AND X1=Q2 THEN 880
855  IF X<Q1 THEN 805
860  IF X>Q1 THEN 820
865  IF X1<Q2 THEN 805
870  GOTO 820
880  REM
890  IF  END #1 THEN 2600
892  F1=1
893  GOSUB 8000
895  GOTO 1020
900  F1=2
905  RESTORE 50
910  READ A$
915  ASSIGN A$,1,W5
920  Q=1
925  Q3=0
930  IF  END #1 THEN 2600
935  GOSUB 8000
1000  REM
1015  READ #1;P$
1016  MAT  READ #1;P
1017  IF P[1]=0 THEN 2600
1020  REM ****BREAK UP Q INTO U****
1025  GOSUB 9700
1037  REM ****DETERMINE T--TOTAL AVE. WEEKLY $USAGE OF ITEM****
1039  GOSUB 9200
1040  REM****DETERMINE CATEGORY****
1050  GOSUB 9250
1060  IF C8#D7 THEN 1000
1070  H=P[4]*P[2]*100
1080  X1=INT(H/100)
1090  X2=H-X1*100
1100  GOSUB 3100
1110  GOTO C8 OF 1115,1130,1145
1115  Y5=A1
1120  Y6=A2
1125  GOTO 1155
1130  Y5=B1
1135  Y6=B2
1140  GOTO 1155
1145  Y5=C1
1150  Y6=C2
1155  GOSUB 9400
1160  GOTO D7 OF 1165,1175,1185
1165  PRINT TAB(3)"A";
1170  GOTO 2000
1175  PRINT TAB(3)"B";
1180  GOTO 2000
1185  PRINT TAB(3)"C";
2000  PRINT TAB(8);
2010  GOSUB 9800
2020  PRINT TAB(20);P$;TAB(32);
2030  Z$="$#####.## "
2035  X$=" "
2040  Z[1]=P[2]
2045  GOSUB 7000
2050  Z$="#######  "
2052  Z[1]=P[3]
2053  GOSUB 7000
2055  Z[1]=P[4]
2060  GOSUB 7000
2065  Z[1]=M5
2070  GOSUB 7000
2075  Z[1]=M6
2080  GOSUB 7000
2085  GOSUB 3200
2086  IF P[4] >= M6 THEN 2089
2087  PRINT "*";
2088  GOTO 2091
2089  IF P[4] <= M5 THEN 2091
2090  PRINT "***";
2091  K=2
2095  GOSUB 9900
2100  P9=P9+2
2105  IF P9<60 THEN 1000
2110  GOSUB 8000
2120  GOTO 1000
2600  IF Q3 OR (Q#2 AND Q#4 AND Q#7) THEN 2620
2605  A$[3]="A"
2610  Q3=1
2615  GOTO 2640
2620  Q=Q+1
2625  IF Q>9 THEN 2665
2630  Q3=0
2635  READ A$
2640  ASSIGN A$,1,W5
2645  GOTO 1000
2665  PRINT TAB(20)"TOTALS = ";TAB(69)"          ";
2670  X1=T[1,1]
2675  X2=T[1,2]
2680  GOSUB 3210
2681  T[1,1]=T[1,2]=0
2682  PRINT 
2683  P9=P9+1
2685  IF D$#"ALL" THEN 9999
2690  D7=D7+1
2695  IF D7>3 THEN 2710
2700  GOTO F1 OF 300,905
2710  PRINT TAB(15)"GRAND TOTAL = ";TAB(69)"          ";
2715  X1=T[2,1]
2720  X2=T[2,2]
2725  GOSUB 3210
2730  END 
3100  FOR I=1 TO 2
3105  T[I,1]=T[I,1]+X1
3110  T[I,2]=T[I,2]+X2
3115  IF T[I,2]>-100 THEN 3130
3120  T[I,1]=T[I,1]-1
3125  T[I,2]=T[I,2]+100
3130  IF T[I,2]>99 THEN 3150
3132  IF SGN(T[I,1])*SGN(T[I,2]) >= 0 THEN 3180
3135  T[I,1]=T[I,1]-SGN(T[I,1])
3137  T[I,2]=T[I,2]-100*SGN(T[I,2])
3140  GOTO 3180
3150  T[I,1]=T[I,1]+INT(T[I,2]*.01)
3155  T[I,2]=(T[I,2]*.01-INT(T[I,2]*.01))*100
3160  IF T[I,2]-INT(T[I,2])<.9 THEN 3180
3165  T[I,2]=INT(T[I,2])+1
3180  NEXT I
3190  RETURN 
3200  PRINT " ";
3210  X$=" "
3215  Z$="$#######."
3220  Z[1]=X1
3225  GOSUB 7000
3230  X$="0"
3235  Z$="##   "
3240  Z[1]=X2
3245  GOSUB 7000
3260  RETURN 
4200  G1=Z=0
4205  FOR I1=1 TO LEN(A$)
4210  FOR I2=1 TO 10
4215  IF A$[I1,I1]=C$[I2,I2] THEN 4240
4220  NEXT I2
4225  G1=1
4230  RETURN 
4240  Z=Z*10+I2-1
4245  NEXT I1
4250  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 
8000  K=66-P9+4
8010  GOSUB 9900
8015  PRINT TAB(24)"C A T E G O R Y  A N A L Y S I S"
8020  PRINT TAB(36);
8025  Z$="##/##/##"
8030  Z[1]=D1
8035  Z[2]=D2
8040  Z[3]=D3
8045  X$=" "
8050  GOSUB 7000
8055  PRINT TAB(61)"PAGE: ";
8060  Z$="###"
8062  Z[1]=P=P+1
8065  GOSUB 7000
8070  K=3
8075  GOSUB 9900
8080  PRINT "CATE-  PART NUMBER  DESCRIPTION  STANDARD     ON       ";
8085  PRINT "ON     MAX      MIN         COST"
8086  PRINT "GORY";TAB(35)"COST     ORDER     HAND  ON HAND  ON HAND";
8087  PRINT "      ON HAND"
8090  K=2
8095  GOSUB 9900
8097  P9=12
8098  RETURN 
9200  REM ****DETERMINE T--TOTAL AVE. WEEKLY $ USAGE OF ITEM****
9202  T=0
9230  FOR I=1 TO O
9232  IF U[I]=99 THEN 9240
9235  T=T+(P[2]*U[I]*W[I])
9240  NEXT I
9245  RETURN 
9250  REM ****DETERMINE CATEGORY--A,B,OR C****
9260  IF (T/T1)<K5 THEN 9300
9265  IF K5 <= T/T1 AND T/T1<K6 THEN 9290
9270  C8=1
9275  RETURN 
9290  C8=2
9295  RETURN 
9300  C8=3
9320  RETURN 
9400  REM ****DETERMINE MAX AND MIN****
9410  M5=0
9420  M6=0
9430  FOR I=1 TO O
9435  IF U[I]=99 THEN 9460
9440  M5=M5+(Y5*U[I]*W[I])
9450  M6=M6+(Y6*U[I]*W[I])
9460  NEXT I
9470  RETURN 
9700  REM ****BREAD UP Q INTO U****
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
9778  NEXT I
9780  RETURN 
9800  Z$="##-####-##"
9805  X$="0"
9810  X=INT(ABS(P[1])/10^6)
9815  Z[2]=INT((ABS(P[1])-X*10^6)/100)
9820  Z[3]=ABS(P[1])-X*10^6-Z[2]*100
9825  IF SGN(P[1])>-1 THEN 9835
9830  X=X+8
9835  Z[1]=Q*10+X
9840  GOSUB 7000
9850  RETURN 
9900  REM ****SKIP K LINES ON PRINTED OUTPUT****
9910  FOR I=1 TO K
9920  PRINT 
9930  NEXT I
9940  RETURN 
9950  REM ****SKIP K SPACES ON A LINE OF PRINTED OUTPUT****
9960  FOR I=1 TO K
9970  PRINT " ";
9980  NEXT I
9990  RETURN 
9999  END 
