1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM         MULFIL : CTC MANUFACTURING PARTS CONTROL 
4  REM
5  REM         36210  REV  B  PART 3 OF 23   2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
10  REM * MANUFACTURING *
11  REM *PUTS ON FILE CMP.PTS AND QUANTITY TO PULL FOR PLAY MULT PULL*
12  H$='29'31'13'26'30
13  DIM X$[20],C$[10],A$[20],H$[5]
14  DIM L[16,2],N[100,3]
15  MAT L=ZER
20  C$="0123456789"
100  FILES FS1,FS2,MFILE1,MFILE2
200  FOR I=1 TO 50
210  MAT  PRINT #3,I;L
215  MAT  PRINT #4,I;L
220  NEXT I
300  PRINT H$[1,2];
400  K5=0
1000  PRINT 
1005  PRINT "SUBASSEMBLY PART#";
1010  INPUT X$
1015  IF X$="0" THEN 1300
1020  IF LEN(X$)=10 THEN 1060
1025  GOSUB 8050
1030  GOTO 1005
1060  IF X$[3,3]#"-" THEN 1025
1065  IF X$[8,8]#"-" THEN 1025
1070  A$=X$[1,2]
1075  GOSUB 8000
1080  IF B1 THEN 1005
1085  IF Z<10 OR Z>19 THEN 1025
1090  Q1=Z
1095  A$[1,4]=X$[4,7]
1100  A$[5]=X$[9]
1105  GOSUB 8000
1110  IF B1 THEN 1005
1115  K5=K5+1
1117  N[K5,1]=Q1
1118  N[K5,2]=Z
1120  PRINT "QUANTITY";
1125  INPUT A$
1130  GOSUB 8000
1135  IF B1 THEN 1120
1140  N[K5,3]=Z
1145  IF K5<100 THEN 1000
1300  FOR K4=1 TO K5
1310  PRINT N[K4,1];"-";INT(N[K4,2]/100);"-";N[K4,2]-INT(N[K4,2]/100)*100
2000  S=1
2002  READ #1,1
2004  READ #2,1
2030  IF  END #S THEN 2180
2035  S1=1
2040  READ #S;B
2050  IF SGN(B)>-1 THEN 2040
2060  S1=2
2065  READ #S;B1
2070  IF B1=N[K4,1] AND -B=N[K4,2] THEN 2090
2075  IF N[K4,1]<B1 THEN 2200
2080  IF N[K4,1]>B1 OR N[K4,2]>-B THEN 2035
2085  GOTO 2200
2090  IF  END #S THEN 2220
2095  S1=1
2100  READ #S;B
2102  IF SGN(B)=-1 THEN 2140
2105  S1=2
2110  READ #S;B1
2115  X=INT(B1/100)
2120  B1=B1-X*100
2125  Q=N[K4,3]*X
2130  GOSUB 2300
2135  GOTO 2095
2140  NEXT K4
2150  END 
2180  S=S+1
2182  IF S>2 THEN 2200
2185  IF  END #S THEN 2180
2190  GOTO S1 OF 2040,2065
2200  PRINT '7'7"SUBASSEMBLY NOT ON SUB-COMP FILE";N[K4,1];N[K4,2];N[K4,3]
2210  GOTO 2140
2220  S=S+1
2222  IF S>2 THEN 2140
2225  IF  END #S THEN 2220
2230  GOTO S1 OF 2100,2110
2300  S1=3
2305  FOR I1=1 TO 50
2310  MAT  READ #S1,I1;L
2320  GOSUB 3000
2325  IF  NOT G1 THEN 2355
2330  NEXT I1
2335  S1=S1+1
2340  IF S1<5 THEN 2305
2345  PRINT '7'7"PART-PULL FILE FULL--OVER 1600 PARTS"
2350  STOP 
2355  RETURN 
3000  G1=0
3005  FOR J1=1 TO 16
3007  IF L[J1,1]=0 AND L[J1,2]=0 THEN 3040
3010  N1=INT(L[J1,2]/100)
3015  N2=L[J1,2]-N1*100
3020  IF N2=B1 AND L[J1,1]=B THEN 3050
3025  NEXT J1
3030  G1=1
3035  RETURN 
3040  N2=B1
3045  L[J1,1]=B
3047  N1=0
3050  Q=N1+Q
3055  IF Q>9999 THEN 3100
3060  L[J1,2]=Q*100+N2
3065  MAT  PRINT #S1,I1;L
3070  RETURN 
3100  PRINT '7'7"PART#";B1;B;" QUANTITY >9999;Q=";Q
3110  RETURN 
8000  B1=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  B1=1
8055  PRINT '7'7"INVALID DATA";H$[3,5];
8060  RETURN 
8070  Z=Z*10+I2-1
8080  NEXT I1
8090  RETURN 
9999  END 
