Listing of file='BOMS020A' on disk='vmedia/701-2656B.wvd.zip'
# Sector 154, program filename = 'BOMS020A' 0010 REM BOMS020A, RELEASE 2-0, (02/23/79) THIS PROGRAM IS A COPYRIGHT PRODUC T OF WANG LABORATORIES INC. UNAUTHORIZED REPRODUCTION OR USE IS PROHIBITE D 0170 DIM A6$(25)Q0,A7$(25)2,A6(25),A8(25),A8$(25)1,A9(25),A6,K6$W3,K7$4,K8$Q0, C9$Q0,I8,C6,K9$3,D9$8,A7$1,A8$1 : DIM B6$Q0,B7$2,B6,B8,B8$1,B9,P6$3,B9$3 : GOTO 4000 4000 SELECT @PARTS0$ 4020 GOSUB '100("0",HEX(7F),Q0,0,"ENTER ASSEMBLY PRODUCT ID. (OR END)",2) : IF Q6$=HEX(1F)THEN GOSUB '31 : IF Q6$="END"OR Q6$="end"THEN GOSUB '31 : PRINT AT(3,0,); : GOSUB '96(2) : W0$,C9$=Q6$ : GOSUB 7280 : IF Q$=" "THEN 4140 : PRINT AT(3,0,80);HEX(07);"*** PRODUCT ID. NOT ON INVENTORY FILE ***" : GOTO 4020 4140 A8$=H4$ : AND (A8$,80) : IF A8$=HEX(80)THEN 4250 : B6=0 : I9$="N" : W1$="000" : W3$=STR(T4$,1,2) : GOSUB '100("Y,N","YyNnY ",1,1,"DO YOU WISH TO ADD THIS ASSEMBLY (Y OR N) ",2) : IF Q6$=HEX(1F)THEN GOSUB '31 : IF Q6$="N"THEN 4020 : ELSE GOTO 4470 4250 K6$=STR(C9$,,Q0)&"001" : GOSUB 7440 : IF Q$=" "THEN 4310 : DBACKSPACE #2,1S : AND (H4$,7F) : GOSUB '42(2) : PRINT AT(3,0,80);HEX(07);"*** STRUCTURE RECORD MISSING ***" : GOTO 4020 4310 Q6$="C" : B6=0 : GOSUB '100("A,C,D","AaCcDd",1,1,"ENTER TRANS TYPE (A=ADD COMPONENTS C=C HANGE COMPONENTS D=DELETE ASSEMBLY)",3) : IF Q6$=HEX(1F)THEN GOSUB '31 : I9$=Q6$ : IF I9$<>"A"THEN 4470 4370 GOSUB 7710 : IF I8=0THEN 4370 : K6$=STR(C9$,,Q0)&K9$ : GOSUB 7440 : FOR C6=WTO 1STEP -1 : B6=C6 : IF W$(C6)<>" "THEN C6=1 : NEXT C6 : IF B6<WTHEN GOSUB 6860 : ELSE B6=0 4470 Q6$="* "&STR(Q6$) : PRINT AT(5,0);Q6$ : PRINT "ASSEMBLY PRODUCT ID. ";F1$;TAB(40);" DESCRIPTION - ";F2$ : PRINT Q6$ : IF I9$="D"THEN 6430 : PRINT AT(8,0);TAB(6);"COMPONENT";TAB(19);"DESCRIPTION";TAB(42);"QUANTITY EFFECTIVITY DATE SCRAP" : PRINT AT(9,0);TAB(6);"PRODUCT ID.";TAB(55);"CD";TAB(71);"FACTOR" : IF I9$="C"THEN 5180 4560 IF B6=0THEN 4610 : GOSUB 8540 : A6=B6 : GOTO 4660 4610 W1$=DAC HEX(01) : B6=0 : GOSUB 6950 : A6=0 4660 A6=A6+1 : A7$=" " : GOSUB 8060 : IF Q6$<>"END"THEN 4750 : A7$="E" : A6=A6-1 : IF A6=0THEN 4020 : IF B6=0THEN 4810 : IF A6>B6THEN 4810 : ELSE GOTO 4020 4750 FOR I=1TO 3 : ON IGOSUB 8440,8240,8490 : GOSUB 8010 : NEXT I : IF A6<W-1THEN 4660 4810 C7=A6 4820 Q7$="CHANGE" : A6=C7 : GOSUB 7140 : IF A6<>0THEN 4850 : A6=C7 : GOTO 4960 4850 IF A6>B6THEN 4880 : PRINT AT(3,0,80);HEX(07);"RE-ENTER 0 OR VALUE >";B6 : GOTO 4820 4880 GOSUB 7210 : IF Q9=0THEN 4820 : ON Q9GOSUB 8060,8440,8240,8490 : IF Q6$="END"THEN 4820 : GOSUB 7370 : GOSUB 8010 : GOTO 4880 4960 K6$=STR(W0$,,Q0)&W1$ : IF B6=0THEN GOSUB 7570 : ELSE DBACKSPACE #5,1S : FOR C6=B6+1TO A6 : K7$=STR(A7$(C6),1,2)&W3$ : GOSUB 7940 : IF Q$<>"D"THEN 5040 : A6$(C6),A8$(C6)=" " : A7$(C6)=HEX(FF) : A6(C6),A8(C6),A9(C6)=0 5040 NEXT C6 : GOSUB 6760 : GOSUB '150(5) : IF W1$>"001"THEN 5130 : C9$=W0$ : GOSUB 7280 : OR (H4$,80) : DBACKSPACE #2,1S : GOSUB '42(2) 5130 IF A7$="E"THEN 4020 : PRINT AT(11,0,) : GOTO 4610 5180 GOSUB 6860 5190 GOSUB 8540 5200 GOSUB '100("0","5",1,0,"ENTER ACTION: 0=END 1-INSERT 2-CHANGE 3-DELETE 4- NEXT SCREEN 5-PREV. SCREEN",1) : IF Q6$=HEX(1F)THEN GOSUB '31 : ON Q9+1GOTO 5240,5820,5540,5440,5270,5370 5240 GOSUB 7080 : GOTO 4020 5270 GOSUB 7710 : IF I8=0THEN 5180 : PRINT AT(22,15);"*** THE END OF COMPONENTS HAS BEEN REACHED ***" : GOSUB '254 : PRINT AT(22,0,) : STR(K6$,Q0+1,3)="001" : GOSUB 7440 : IF Q$=" "THEN 5180 : GOTO 4020 5370 GOSUB 7850 : IF I8=0THEN 5180 : PRINT AT(22,10);"*** THE BEGINNING OF COMPONENTS HAS BEEN REACHED ***" : GOSUB '254 : PRINT AT(22,0,) : GOTO 5180 5440 Q7$="DELETE" : GOSUB 7130 : IF A6=0THEN 5200 : K7$=STR(A7$(A6),1,2)&W3$ : GOSUB '231(3,1,K7$) : A6$(A6),A7$(A6),A8$(A6)=HEX(20) : A6(A6),A8(A6),A9(A6)=0 : GOSUB 7080 : GOTO 5190 5540 Q7$="CHANGE" : GOSUB 7130 : IF A6=0THEN 5200 : IF A6$(A6)<>HEX(20)THEN 5600 : PRINT AT(3,0,80);HEX(07);"*** NO COMPONENT EXISTS ON THIS LINE NUMBER *** " : GOTO 5540 5600 GOSUB 7210 : ON Q9+1GOTO 5670,5700 : ON Q9-1GOSUB 8440,8240,8490 5630 GOSUB 7370 : GOSUB 8010 : GOTO 5600 5670 GOSUB 7080 : GOTO 5200 5700 K7$=STR(A7$(A6),1,2)&W3$ : GOSUB 8060 : IF Q6$="END"THEN 5200 : GOSUB '231(3,1,K7$) : STR(K7$,1,2)=STR(A7$(A6),1,2) : GOSUB 7940 : IF Q$<>"D"THEN 5630 : A6$(A6)=HEX(20) : A7$(A6)=HEX(FF) : PRINT AT(4,0,80);HEX(07);"*** COMPONENT ALREADY EXISTS ON THIS BILL OF MA TERIAL ***" : A6$(A6)=W$(A6) : A7$(A6)=W0$(A6) : GOTO 5600 5820 Q7$="INSERT" : GOSUB 7130 : IF A6=0THEN 5200 : PRINT HEX(06) : IF A6$(A6)=" "THEN 5950 : FOR C6=WTO A6STEP -1 : GOSUB 6680 : NEXT C6 : A6$(A6),A7$(A6),A8$(A6)=" " : A6(A6),A8(A6),A9(A6)=0 : B6=A6 : GOSUB 8540 : A6=B6 5950 GOSUB 8060 : IF Q6$="END"THEN 5200 : K7$=STR(A7$(A6),1,2)&W3$ : GOSUB 7940 : IF Q$<>"D"THEN 6030 : A6$(A6)=HEX(20) : A7$(A6)=HEX(FF) : PRINT AT(3,0,80);HEX(07);"*** COMPONENT ALREADY EXISTS ON THIS BILL OF MA TERIAL ***" : GOTO 5950 6030 B9$=K9$ : FOR I=1TO 3 : GOSUB 8010 : ON IGOSUB 8440,8240,8490 : NEXT I : GOSUB 8010 6100 GOSUB 7080 : IF A6$(W+1)=HEX(20)THEN 6380 : K7$=STR(A7$(W+1),1,2)&W3$ : GOSUB '231(3,1,K7$) : B6$=A6$(W+1) : B7$=A7$(W+1) : B8$=A8$(W+1) : B6=A6(W+1) : B8=A8(W+1) : B9=A9(W+1) : GOSUB 7710 : IF I8=1THEN 6270 : GOSUB 7940 : GOSUB 6860 : FOR C6=WTO 1STEP -1 : GOSUB 6680 : NEXT C6 : A6$(1)=B6$ : A7$(1)=B7$ : A8$(1)=B8$ : A6(1)=B6 : A8(1)=B8 : A9(1)=B9 : GOTO 6100 6270 GOSUB 6950 : A6$(1)=B6$ : A7$(1)=B7$ : A8$(1)=B8$ : A6(1)=B6 : A8(1)=B8 : A9(1)=B9 : K9$=DAC HEX(01) : STR(K6$,Q0+1,3),W1$=K9$ : W0$=STR(K6$,1,Q0) : GOSUB 7570 : GOSUB 7940 : GOSUB 6760 : GOSUB '150(5) 6380 STR(K6$,Q0+1,3)=B9$ : GOSUB 7440 : GOTO 5180 6430 GOSUB '100("Y,N","YyNn",1,1,"DELETE THIS ASSEMBLY PRODUCT ID. (Y OR N)", 2) : IF Q6$=HEX(1F)THEN GOSUB '31 : IF Q6$="N"THEN 4020 : PRINT AT(10,25);"*** DELETE IN PROGRESS ***" : AND (H4$,7F) : DBACKSPACE #2,1S : GOSUB '42(2) 6500 FOR C6=1TO W : IF W$(C6)=" "THEN 6540 : K7$=STR(W0$(C6),1,2)&W3$ : GOSUB '231(3,1,K7$) 6540 NEXT C6 : GOSUB '231(2,1,K6$) : Q6$="PRODUCT STRUCTURE FILE" : IF Q$<>" "THEN 6990 : GOSUB '160(5) : DBACKSPACE #5,1S : STR(W0$,1,1)=HEX(FF) : GOSUB '150(5) : GOSUB 7710 : IF I8=1THEN 4020 : STR(K6$,Q0+1,3)=W1$ : GOTO 6500 6680 A6$(C6+1)=A6$(C6) : A7$(C6+1)=A7$(C6) : A8$(C6+1)=A8$(C6) : A6(C6+1)=A6(C6) : A8(C6+1)=A8(C6) : A9(C6+1)=A9(C6) : RETURN 6760 W$()=A6$() : W0$()=A7$() : W2$()=A8$() : MAT REDIM A6(W),A8(W),A9(W) : MAT W=A6 : MAT W1=A8 : MAT W2=A9 : MAT REDIM A6(W+1),A8(W+1),A9(W+1) : RETURN 6860 A6$()=W$() : A7$()=W0$() : A8$()=W2$() : MAT A6=W : MAT A8=W1 : MAT A9=W2 : MAT REDIM A6(W+1),A8(W+1),A9(W+1) : RETURN 6950 INIT(20)A6$(),A8$() : INIT(FF)A7$() : MAT A6=ZER : MAT A8=ZER : MAT A9=ZER : RETURN 6990 GOSUB '91 : PRINT AT(3,LEN(J$(J0))+3);HEX(07);"- ";Q6$ : GOSUB '254 7030 DEFFN'31 : PRINT AT(4,0,);"*** END OF PROCESSING ***" : LOAD TM$ 7080 DBACKSPACE #5,1S : GOSUB 6760 : GOSUB '150(5) : RETURN 7130 A6=W 7140 CONVERT A6TO W9$,(##) : CONVERT B6+1TO W8$,(##) : PRINT AT(1,0,80);"ENTER LINE NUMBER TO ";Q7$;" (";W8$;" - ";W9$;", 0=END )" : GOSUB '100("0",W9$,2,0," ",1) : IF Q6$=HEX(1F)THEN GOSUB '31 : A6=Q9 : RETURN 7210 PRINT AT(3,0,80);"FIELD: (1)";TAB(46);"(2)";TAB(57);"(3)";TAB(74);"(4)" : GOSUB '100("0","4",1,0,"ENTER FIELD TO CHANGE (0=END)",1) : IF Q6$=HEX(1F)THEN GOSUB '31 : RETURN 7260 GOSUB '91 : GOSUB '92 7280 GOSUB '232(1,1,C9$) : IF Q$="B"THEN 7260 : IF Q$=" "THEN 7340 : IF Q$="N"THEN RETURN : Q6$="INVENTORY FILE" : GOTO 6990 7340 GOSUB '52(2) : RETURN 7370 DBACKSPACE #2,BEG : DSKIP #2,VAL(A7$(A6),2)S : GOSUB '52(2) : RETURN 7420 GOSUB '91 : GOSUB '92 7440 GOSUB '232(2,1,K6$) : IF Q$="B"THEN 7420 : P6$=T4$ : IF Q$=" "THEN 7510 : IF Q$="N"THEN RETURN : Q6$="PRODUCT STRUCTURE FILE" : GOTO 6990 7510 GOSUB '160(5) : K9$=W1$ : RETURN 7550 GOSUB '91 : GOSUB '92 7570 GOSUB '233(2,1,K6$,0) : P6$=T4$ : IF Q$="B"THEN 7550 : IF Q$=" "THEN RETURN : Q6$="PRODUCT STRUCTURE FILE" : GOTO 6990 7640 GOSUB '232(3,1,K7$) : IF Q$=" "OR Q$="N"THEN RETURN : Q6$="WHERE USED FILE" : GOTO 6990 7690 GOSUB '91 : GOSUB '92 7710 K8$=STR(K6$,1,Q0) : I8=0 : GOSUB '237(2,1) : IF Q$="B"THEN 7690 : IF Q$=" "THEN 7800 : Q6$="PRODUCT STRUCTURE FILE" : IF Q$<>"E"THEN 6990 : I8=1 : RETURN 7800 P6$=T4$ : GOSUB '160(5) : IF K8$=W0$THEN K9$=W1$ : ELSE I8=1 : RETURN 7850 K9$=DSC HEX(01) : I8=0 : IF K9$="000"THEN 7910 : STR(K6$,Q0+1,3)=K9$ : GOSUB 7440 : IF Q$<>"N"THEN RETURN 7910 I8=1 : RETURN 7940 T4$,STR(T5$(3),1,3)=P6$ : GOSUB '234(3,1,K7$,0) : IF Q$=" "OR Q$="D"THEN RETURN : Q6$="WHERE USED FILE" : GOTO 6990 8010 PRINT HEX(06) : PRINT AT(A6+10,0); : PRINTUSING "## ############ ######################### ####.## # ######## ##.##",A6,A6$(A6),F2$,A6(A6),A8$(A6),D9$,A9(A6) : RETURN 8060 PRINT HEX(06) : GOSUB '100("0",HEX(7F),Q0,0,"ENTER COMPONENT PRODUCT ID. (OR END)",2) : IF Q6$=HEX(1F)THEN GOSUB '31 : IF Q6$="end"THEN Q6$="END" : IF Q6$="END"THEN RETURN : GOSUB '96(2) : IF Q6$<>W0$THEN 8150 : PRINT AT(3,0,80);HEX(07);"*** COMPONENT PART SAME AS ASSEMBLY PART NOT AL LOWED ***" : GOTO 8060 8150 FOR I2=A6TO 1STEP -1 : IF Q6$<>A6$(I2)THEN 8156 : PRINT AT(3,0,80);HEX(07);"*** COMPONENT PART ALREADY IN ASSEMBLY PART NOT ALLOWED ***" : I2=1 : NEXT I2 : GOTO 8060 8156 NEXT I2 : C9$=Q6$ : GOSUB 7280 : IF Q$=" "THEN 8200 : PRINT AT(3,0,80);HEX(07);"*** BOM ADD ILLEGAL, COMPONENT PRODUCT ID. NOT ON INVENTORY FILE ***" : GOTO 8060 8200 A6$(A6)=C9$ : A7$(A6)=T4$ : RETURN 8240 Q6$="E" : GOSUB '100("E,T,X","EeTtXx",1,1,"ENTER EFFECTIVITY (E=IN T=OUT X=NO EX PLOSION)",3) : IF Q6$=HEX(1F)THEN GOSUB '31 : A8$(A6)=Q6$ : IF Q6$<>"X"THEN 8310 : IF A8(A6)=0THEN A8(A6)=Q1 : RETURN 8310 Q6$=Q1$ : PRINT HEX(06) : IF A8$(A6)="E"THEN Q7$="EFFECTIVE" : ELSE Q7$="TERMINATED" : PRINT AT(1,0,80);"ENTER ";Q7$;" DATE (MM/DD/YY)" : GOSUB '100(HEX(00),HEX(7F),8,0," ",3) : IF Q6$=HEX(1F)THEN GOSUB '31 : D9$=Q6$ : GOSUB '121(Q6$) : A8(A6)=U9 : IF Q6$<>"E"THEN RETURN : PRINT AT(3,0,80);"Invalid date, Re-enter";HEX(07) : GOTO 8310 : GOTO 8310 8440 GOSUB '100("0",HEX(7F),4,2,"ENTER QUANTITY",1) : IF Q6$=HEX(1F)THEN GOSUB '31 : A6(A6)=Q9 : RETURN 8490 GOSUB '100("0",HEX(7F),2,2,"ENTER SCRAP FACTOR",1) : IF Q6$=HEX(1F)THEN GOSUB '31 : A9(A6)=Q9 : RETURN 8540 PRINT HEX(06) : FOR A6=1TO W : F2$=" " : IF A6$(A6)<>" "THEN 8600 : PRINT AT(A6+10,0,); : PRINTUSING "##",A6 : GOTO 8640 8600 GOSUB 7370 : GOSUB '123(A8(A6)) : D9$=U9$ : GOSUB 8010 8640 NEXT A6 : RETURN 9998 DEFFN'29"Q$=";HEX(22);"BOMS020A";HEX(22);":SCRATCH TQ$:SAVET$()Q$";HEX(0D ) 9999 DEFFN'30"DIM Z$57:IF STR(I0$,,1)=HEX(20)THENI0$=HEX(323135):Z$=";HEX(22); "GBS/MVP - Product Structure File Maintenance.";HEX(22);":SELECT#15<I0$>: $OPEN#15:SELECTLIST<I0$>(132): LIST Z$:LIST Z$#:LIST Z$V:LIST Z$':$CLOSE# 15:SELECTLIST005(80)";HEX(0D)