1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         UPDTG : CTC MANUFACTURING PARTS CONTROL
4  REM
5  REM         36210 REV  B  PART 1 OF 23     2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  H$='29'31'13'26'30
11  REM *MANUFACTURING--UPDATES ANY ITEM OF A PART NUMBER*
12  C$="0123456789"
13  DIM P[13],Q[13],R[13],S[30],L[9]
14  DIM P$[10],Q$[10],R$[10],A$[20],X$[20],C$[10],T$[10]
15  DIM H$[5],B$[20]
40  MAT  READ L
45  DATA 50,200,200,200,200,200,200,50,50
50  DATA "G1","G2","G3","G4","G5","G6","G7","G8","G9"
100  FILES G1,TRANSF
150  GOSUB 9400
180  PRINT H$[1,2]"ENTER TODAY'S DATE (MDDYY)";
182  INPUT A$
184  GOSUB 9500
186  IF G1 THEN 180
200  PRINT H$[1,2]"UPDATE (1) ANY ITEM (2) PARTICULAR ITEM";
210  INPUT L0
215  IF L0=0 THEN 9999
220  GOTO L0 OF 5000,230
222  GOSUB 9565
225  GOTO 200
230  PRINT H$[1,2];H$[2,2]"(1) PART DESCRIPTION"
235  PRINT "(2) STANDARD COST"
240  PRINT "(3) ON ORDER"
245  PRINT "(4) ON HAND"
250  PRINT 
255  PRINT "USAGES"
260  PRINT "(5) 3300/3000";TAB(20)"(6) 2200-350";TAB(40)"(7) 3360-100"
265  PRINT "(8) 3300-200"TAB(20);"(9) 2200-000"TAB(40);"(10) 2200-300"
270  PRINT "(11) 2200-200"TAB(20);"(15) 3360-200"TAB(40);"(16) 3300-300"
275  PRINT "(17) VT06"TAB(20);"(18) 2200-112"TAB(40);"(19) 2200-400"
277  PRINT "(20) 2200-401"TAB(20);"(21) 2200-402"TAB(40);"(22) 2200-420"
278  PRINT "(23) 2200PS";TAB(20)"(24) 2200-404"
280  PRINT 
285  PRINT "(26) LEAD TIME"
290  PRINT "(27) NO CHANGE"
292  PRINT "(28) 2200-000 & 2200-112"
295  PRINT 
300  PRINT "UPDATE#";
305  INPUT Z0
310  IF Z0=27 THEN 9999
320  IF INT(Z0)=Z0 AND Z0>0 AND Z0<29 THEN 340
330  GOSUB 9565
335  GOTO 300
340  REM
5000  REM****UPDATE A PART NUMBER****
5007  T$="UG"
5020  PRINT H$[1,2];H$[2,2];H$[2,2];
5022  PRINT "UPDATE PART NO.";
5025  INPUT X$
5028  IF X$="0" THEN 200
5030  IF LEN(X$)=10 THEN 5036
5032  GOSUB 9565
5034  GOTO 5020
5036  IF X$[3,3]#"-" THEN 5032
5038  IF X$[8,8]#"-" THEN 5032
5040  A$=X$[1,1]
5042  GOSUB 8000
5044  IF G1 OR Z=0 THEN 5032
5046  Q=Z
5048  A$=X$[2,2]
5050  GOSUB 8000
5052  IF G1 THEN 5032
5054  Q1=Z
5056  A$[1,4]=X$[4,7]
5058  A$[5]=X$[9]
5060  GOSUB 8000
5062  IF G1 THEN 5032
5063  Q2=Z
5064  GOSUB 6000
5066  IF G1 THEN 5020
5067  GOSUB 6630
5068  GOTO L0 OF 5070,5167
5070  PRINT "(1) PART DESCRIPTION: ";R$
5072  PRINT "(2) STANDARD COST: $";R[2]
5073  PRINT "(3) ON ORDER:";R[3]
5075  PRINT "(4) ON HAND:";R[4]
5080  PRINT 
5085  PRINT "USAGE"
5090  PRINT "(5) 3300/3000:"S[1];TAB(24)"(6) 2200-350:"S[2];TAB(48);
5095  PRINT "(7) 3360-100:";S[3]
5100  PRINT "(8) 3300-200:"S[4];TAB(24)"(9) 2200-000:";S[5];TAB(48);
5110  PRINT "(10) 2200-300:";S[6]
5120  PRINT "(11) 2200-200:"S[7];TAB(24)"(15) 3360-200:";S[11];TAB(48);
5125  PRINT "(16) 3300-300:"S[12]
5130  PRINT "(17) VT06:";S[13];TAB(24)"(18) 2200-112:";S[14];TAB(48);
5135  PRINT "(19) 2200-400:";S[15]
5137  PRINT "(20) 2200-401:"S[16];TAB(24)"(21) 2200-402:";S[17];TAB(48);
5138  PRINT "(22) 2200-420:";S[18]
5139  PRINT "(23) 2200PS:";S[19];TAB(24)"(24) 2200-404:";S[20]
5140  PRINT 
5145  PRINT "(26) LEAD TIME:";S[22]
5146  PRINT "(27) NO CHANGE"
5147  PRINT 
5150  PRINT "UPDATE#";
5152  INPUT A$
5154  GOSUB 8000
5156  IF  NOT G1 THEN 5164
5158  GOSUB 9565
5160  GOTO 5150
5164  IF Z<1 OR Z>27 THEN 5158
5166  Z0=Z
5167  GOTO Z0 OF 5180,5220,5300,5310,5360,5370,5380,5390,5400,5402
5168  GOTO Z0-10 OF 5404,5600,5600,5600,5410,5420,5430,5440,5450,5452
5170  GOTO Z0-20 OF 5454,5456,5458,5460,5600,5464,5020,5466
5180  GOTO L0 OF 5184,5181
5181  PRINT "OLD DESCRIPTION = ";R$
5182  PRINT "NEW ";
5184  PRINT "DESCRIPTION";
5185  INPUT A$
5190  IF LEN(A$)<11 THEN 5210
5195  GOSUB 9565
5200  GOTO 5180
5210  X$=A$
5211  A$=R$
5212  R$=X$
5213  T=T1=0
5215  GOTO 5520
5220  GOTO L0 OF 5224,5221
5221  PRINT "OLD STD CST $";R[2]
5222  PRINT "NEW ";
5224  PRINT "STD CST $";
5225  INPUT X$
5230  GOSUB 7000
5240  IF B1 THEN 5220
5295  GOTO 5520
5300  B$="ON ORDER"
5305  GOTO 5315
5310  B$="ON HAND"
5315  GOTO L0 OF 5319,5316
5316  PRINT "OLD ";B$;R[Z0]
5317  PRINT "NEW ";
5319  PRINT B$;
5320  INPUT A$
5325  IF LEN(A$)<8 THEN 5340
5330  GOSUB 9565
5335  GOTO 5315
5340  GOSUB 8000
5345  IF G1 THEN 5330
5347  T=R[Z0]
5350  T1=R[Z0]=Z
5355  GOTO 5520
5360  B$="3300/3000"
5365  GOTO 5470
5370  B$="2200-350"
5375  GOTO 5470
5380  B$="3360-100"
5385  GOTO 5470
5390  B$="3300-200"
5395  GOTO 5470
5400  B$="2200-000"
5401  GOTO 5470
5402  B$="2200-300"
5403  GOTO 5470
5404  B$="2200-200"
5405  GOTO 5470
5410  B$="3360-200"
5415  GOTO 5470
5420  B$="3300-300"
5425  GOTO 5470
5430  B$="VT06"
5435  GOTO 5470
5440  B$="2200-112"
5445  GOTO 5470
5450  B$="2200-400"
5451  GOTO 5470
5452  B$="2200-401"
5453  GOTO 5470
5454  B$="2200-402"
5455  GOTO 5470
5456  B$="2200-420"
5457  GOTO 5470
5458  B$="2200PS"
5459  GOTO 5470
5460  B$="2200-404"
5461  GOTO 5470
5464  B$="LEAD TIME"
5465  GOTO 5470
5466  PRINT "OLD 2200/2200-112";S[5];"/";S[14]
5467  B$="2200/2200-112"
5468  GOTO 5472
5470  GOTO L0 OF 5474,5471
5471  PRINT "OLD ";B$;" =";S[Z0-4]
5472  PRINT "NEW ";
5474  PRINT B$;
5475  INPUT A$
5480  IF Z0<15 THEN 5488
5482  IF LEN(A$)<3 THEN 5495
5484  GOSUB 9565
5485  IF Z0=28 THEN 5466
5486  GOTO 5470
5488  IF LEN(A$)>3 THEN 5484
5495  GOSUB 8000
5500  IF G1 THEN 5484
5502  IF Z0#28 THEN 5510
5504  T=S[5]
5506  T1=S[5]=S[14]=Z
5508  GOTO 5520
5510  T=S[Z0-4]
5512  T1=S[Z0-4]=Z
5520  GOSUB 6800
5525  GOSUB 9200
5527  GOTO L0 OF 5530,5540
5530  PRINT H$[4,4];H$[4,4];H$[2,2];H$[2,2];
5535  GOTO 5150
5540  PRINT 
5545  GOTO 5022
5600  PRINT '7'7"MOD# NOT IN USE YET"
5610  GOTO 5530
6000  REM
6005  G1=0
6010  RESTORE 50
6015  FOR I=1 TO Q
6020  READ A$
6025  NEXT I
6030  IF Q#2 THEN 6055
6035  IF Q1=0 AND Q2<35000. THEN 6065
6040  A$[3]="A"
6050  GOTO 6065
6055  IF Q#4 AND Q#7 THEN 6065
6060  IF Q1 >= 2 THEN 6040
6065  ASSIGN A$,1,N1
6070  N1=0
6075  N2=L[Q]
6080  IF N2-N1<2 THEN 6165
6082  R1=N1+INT((N2-N1)/2)
6085  READ #1,R1;P$
6090  MAT  READ #1;P
6095  X=P[1]
6100  GOSUB 6400
6102  P1=X1
6103  P2=X2
6105  READ #1;Q$
6110  MAT  READ #1;Q
6115  X=Q[1]
6120  GOSUB 6400
6125  S1=X1
6130  S2=X2
6135  IF P[1]=0 THEN 6205
6140  IF P1=Q1 AND P2=Q2 THEN 6185
6145  IF P1<Q1 THEN 6155
6150  IF P1>Q1 OR P2>Q2 THEN 6205
6155  IF Q[1]=0 THEN 6165
6160  IF S1=Q1 AND S2=Q2 THEN 6195
6162  IF S1>Q1 THEN 6165
6163  IF S1<Q1 OR S2<Q2 THEN 6215
6165  PRINT '7'7"PART NO NOT ON FILE"
6170  G1=1
6180  RETURN 
6185  F1=1
6187  R$=P$
6188  MAT R=P
6190  RETURN 
6195  F1=2
6197  R$=Q$
6198  MAT R=Q
6200  RETURN 
6205  N2=R1
6210  GOTO 6080
6215  N1=R1
6220  GOTO 6080
6400  X1=INT(ABS(X)/10^6)
6405  X2=ABS(X)-X1*10^6
6410  IF SGN(X)>-1 THEN 6430
6420  X1=X1+8
6430  RETURN 
6630  REM
6680  J=1
6682  FOR I=5 TO 9
6685  S[J]=INT(R[I]/1000)
6690  S[J+1]=R[I]-S[J]*1000
6695  J=J+2
6700  NEXT I
6705  FOR I=10 TO 13
6710  S[J]=INT(R[I]/10^4)
6715  S[J+1]=INT((R[I]-S[J]*10^4)/100)
6720  S[J+2]=R[I]-S[J]*10^4-S[J+1]*100
6725  J=J+3
6730  NEXT I
6735  RETURN 
6800  J=5
6805  FOR I=1 TO 9 STEP 2
6810  R[J]=S[I]*1000+S[I+1]
6815  J=J+1
6820  NEXT I
6825  FOR I=11 TO 20 STEP 3
6830  R[J]=S[I]*10^4+S[I+1]*100+S[I+2]
6835  J=J+1
6840  NEXT I
6845  GOTO F1 OF 6846,6860
6846  P$=R$
6847  MAT P=R
6850  GOTO 6880
6860  Q$=R$
6870  MAT Q=R
6880  PRINT #1,R1;P$
6885  MAT  PRINT #1;P
6890  PRINT #1;Q$
6895  MAT  PRINT #1;Q
6897  RETURN 
7000  B1=0
7010  L=LEN(X$)
7015  IF L>3 AND L<9 THEN 7030
7020  GOSUB 9565
7025  B1=1
7027  RETURN 
7030  IF X$[L-2,L-2]#"." THEN 7020
7035  A$=X$[1,L-3]
7040  GOSUB 8000
7045  IF G1 THEN 7020
7050  X=Z
7055  A$=X$[L-1]
7060  GOSUB 8000
7065  IF G1 THEN 7020
7070  T=R[2]
7075  T1=R[2]=X+Z*.01
7080  A$=X$
7085  RETURN 
8000  G1=Z=0
8010  FOR I1=1 TO LEN(A$)
8020  FOR I2=1 TO 10
8030  IF A$[I1,I1]=C$[I2,I2] THEN 8070
8040  NEXT I2
8050  G1=1
8060  RETURN 
8070  Z=Z*10+I2-1
8080  NEXT I1
8090  RETURN 
9200  IF  END #2 THEN 9240
9210  PRINT #2;Q*10+Q1,Q2,R$,T$,Z0,T,T1,A$,D, END 
9220  RETURN 
9240  PRINT '7'7'7'7'7'7"TRANSACTION FILE FULL--CALL OPERATOR"
9250  PRINT "LAST TRANSACTION NOT RECORDED ON TRANSACTION FILE"
9260  STOP 
9400  REM****READ TRANSFILE TO END ****
9410  IF TYP(2)=3 THEN 9470
9420  IF TYP(2)=2 THEN 9450
9430  READ #2;X
9440  GOTO 9410
9450  READ #2;X$
9460  GOTO 9410
9470  RETURN 
9500  REM****CHECK DATE****
9502  G1=0
9520  GOSUB 8000
9522  IF G1 THEN 9565
9525  M=INT(Z/10^4)
9527  IF M<1 OR M>12 THEN 9565
9530  D=INT((Z-M*10^4)/100)
9532  IF D<1 OR D>31 THEN 9565
9535  Y=Z-M*10^4-D*100
9540  IF Y<72 OR Y>99 THEN 9565
9550  D=M*10^4+D*100+Y
9560  RETURN 
9565  PRINT '7'7'7'7'7'7"DATA OUT OF BOUNDS"'7'7'7'7H$[3,5];
9570  G1=1
9580  RETURN 
9999  END 
