1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         CATPRT : CTC MANUFACTURING PARTS CONTROL 
4  REM
5  P0=0
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  REM * PROG TO PRINT PART AND COST CATALOGUE *
11  DIM P[13]
12  DIM Y$[10],P$[10],X$[20],A$[20]
13  Y$="0123456789"
50  DATA "G1","G2","G3","G4","G5","G6","G7","G8","G9"
100  FILES G1
150  PRINT "ENTER TODAY'S DATE (MDY)";
160  INPUT X
161  D1=INT(X/10^4)
162  IF D1>0 AND D1<13 THEN 165
163  PRINT '7'7"INVALID DATE"
164  GOTO 150
165  D2=INT((X-D1*10^4)/100)
166  IF D2<1 OR D2>31 THEN 163
167  D3=X-D1*10^4-D2*100
168  IF D3<72 OR D3>99 THEN 163
175  PRINT "(1) PT#/DESCRIPTION ONLY (2) STD CST ALSO (3) QTY ON HAND & COST ON HAND";
180  INPUT Q6
185  IF Q6=1 OR Q6=2 OR Q6=3 THEN 200
190  PRINT '7'7"INVALID DATA"
195  GOTO 175
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 B1 OR Z=0 THEN 220
255  Q=Z
260  A$=X$[2,2]
265  GOSUB 4200
270  IF B1 THEN 220
275  Q1=Z
280  A$[1,4]=X$[4,7]
285  A$[5]=X$[9,10]
290  GOSUB 4200
295  IF B1 THEN 220
297  Q2=Z
300  RESTORE 50
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 2100
892  P=66
893  GOSUB 8000
895  GOTO 1030
900  READ A$
905  ASSIGN A$,1,W5
910  Q=1
915  Q3=0
920  IF  END #1 THEN 2100
930  P=66
935  GOSUB 8000
1000  REM
1015  READ #1;P$
1020  MAT  READ #1;P
1025  IF P[1]=0 THEN 2100
1030  GOSUB 3030
1035  GOTO 1000
2100  IF Q3 OR (Q#2 AND Q#4 AND Q#7) THEN 2150
2105  A$[3]="A"
2110  Q3=1
2120  GOTO 2170
2150  Q=Q+1
2155  IF Q>9 THEN 2200
2160  Q3=0
2165  READ A$
2170  ASSIGN A$,1,W5
2180  GOTO 1000
2200  IF Q6#3 THEN 9999
2210  PRINT "TOTAL COST ON HAND";
2220  X1=T1
2230  X2=T2
2240  GOSUB 3300
2250  END 
3030  Z$="##-####-##"
3035  X$="0"
3040  X1=INT(ABS(P[1])/10^6)
3045  Z[2]=INT((ABS(P[1])-X1*10^6)/100)
3050  Z[3]=ABS(P[1])-X1*10^6-Z[2]*100
3055  IF SGN(P[1])>-1 THEN 3070
3060  X1=X1+8
3070  Z[1]=Q*10+X1
3075  GOSUB 7000
3180  PRINT TAB(12);P$;
3182  IF Q6=1 THEN 3280
3183  PRINT TAB(32);
3185  X$=" "
3190  Z$="$#####.##"
3200  Z[1]=P[2]
3210  GOSUB 7000
3212  IF Q6=2 THEN 3280
3215  PRINT TAB(52);
3220  Z$="+######"
3225  Z[1]=P[4]
3230  GOSUB 7000
3235  X=(P[2]*P[4])*100
3240  X1=INT(X/100)
3245  X2=X-X1*100
3250  GOSUB 3300
3255  T1=T1+X1
3260  T2=T2+X2
3265  IF T2<100 THEN 3280
3270  T1=T1+1
3275  T2=T2-100
3280  K=2
3285  GOSUB 9900
3290  P=P+2
3295  IF P<60 THEN 3298
3297  GOSUB 8000
3298  RETURN 
3300  Z$="$#######."
3305  X$=" "
3306  IF X2<99 OR X2-INT(X2)<.5 THEN 3310
3307  X1=X1+1
3308  X2=0
3310  Z[1]=X1
3312  PRINT TAB(68);
3315  GOSUB 7000
3320  Z$="##"
3325  X$="0"
3330  Z[1]=X2
3335  GOSUB 7000
3340  RETURN 
4200  B1=Z=0
4205  FOR I1=1 TO LEN(A$)
4210  FOR I2=1 TO 10
4215  IF A$[I1,I1]=Y$[I2,I2] THEN 4240
4220  NEXT I2
4225  B1=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],Z$[72]
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-P+4
8010  GOSUB 9900
8040  PRINT "DATE: ";
8045  Z$="##/##/##"
8050  X$=" "
8055  Z[1]=D1
8060  Z[2]=D2
8065  Z[3]=D3
8070  GOSUB 7000
8075  PRINT TAB(24)"C O M P U T E R  T E R M I N A L";TAB(71)"PAGE: ";
8080  P0=P0+1
8085  Z$="###"
8090  Z[1]=P0
8095  GOSUB 7000
8097  PRINT 
8100  PRINT TAB(28)"STANDARD PARTS CATALOGUE"
8102  K=2
8105  GOSUB 9900
8110  PRINT "PART NO.";TAB(14)"PART";
8112  IF Q6=1 THEN 8120
8114  PRINT TAB(30)"STANDARD COST";
8116  IF Q6=2 THEN 8120
8117  PRINT TAB(52)"QUANTITY";TAB(68)"COST ON HAND";
8120  PRINT 
8122  PRINT TAB(11)"DESCRIPTION";
8123  IF Q6#3 THEN 8125
8124  PRINT TAB(52)"ON  HAND";
8125  K=3
8130  GOSUB 9900
8135  P=12
8140  RETURN 
9900  REM ***PRINT K LINES****
9910  FOR I=1 TO K
9920  PRINT 
9930  NEXT I
9940  RETURN 
9999  END 
