open-insight/LSL2/STPROC/FIX_PROD_SPEC.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

649 lines
16 KiB
Plaintext

COMPILE ROUTINE FIX_PROD_SPEC(Dummy)
ROWDEF(CHARSTR)
DECLARE SUBROUTINE obj_Schedule,Send_Dyn,Send_Info, RList, ErrMsg, obj_Prod_Spec, Btree.Extract, obj_PRS_Stage
DECLARE FUNCTION Get_Status, Set_Printer, obj_Prod_Spec, NextKEy
$INSERT PROD_SPEC_EQUATES
$INSERT QUOTE_SPEC_EQU
$INSERT PART_EQUATES
$INSERT CUST_EPI_PART_EQUATES
$INSERT PRS_STAGE_EQUATES
$INSERT PROD_VER_EQUATES
EQU TAB$ TO \09\:'/'
EQU CRLF$ TO \0D0A\
OPEN 'PROD_SPEC' TO ProdSpecTable ELSE
DEBUG
GOTO Bail
END
OPEN 'DICT.PROD_SPEC' TO DictProdSpec Else
DEBUG
GOTO Bail
END
OPEN 'PRS_STAGE' TO StageTable ELSE
DEBUG
GOTO Bail
END
OPEN 'PART_WORK' TO PartWorkTable ELSE
DEBUG
GOTO Bail
END
OPEN 'CUST_EPI_PART' TO CustEpiTable ELSE
DEBUG
GOTO Bail
END
DEBUG
GOTO Bail
SELECT ProdSpecTable
RList('SELECT PROD_SPEC WITH TRANS_MEAS_TYPE NE "" OR WITH STRESS_MEAS_TYPE NE ""',5)
CleanTools = ''
Done = 0
RecCnt = @RECCOUNT
FixCnt = 0
DEBUG
LOOP
READNEXT PSNo ELSE Done = 1
UNTIL Done
Send_Dyn(PSNo)
obj_Prod_Spec('PushTech',PSNo)
REPEAT
GOTO Bail
*******************************************************************
SELECT ProdSpecTable
RList('SELECT PROD_SPEC BY-DSND SEQ',5)
CleanTools = ''
Done = 0
RecCnt = @RECCOUNT
FixCnt = 0
DEBUG
LOOP
READNEXT PSNo ELSE Done = 1
UNTIL Done
READ ProdSpecRec FROM ProdSpecTable,PSNo THEN
StageKeys = ProdSpecRec<PROD_SPEC_PRS_STAGE_KEY$>
StageCnt = COUNT(StageKeys,@VM) + (StageKeys NE '')
FOR I = 1 TO StageCnt
StageKey = StageKeys<1,I>
READ StageRec FROM StageTable,StageKey THEN
RecCnt += 1
WriteFlag = 0
IF StageRec<PRS_STAGE_CLEAN_TOOL$> NE '' THEN
StageRec<PRS_STAGE_CLEAN_SIG_REQ$> = 1
WriteFlag = 1
END
IF StageRec<PRS_STAGE_BRIGHTLIGHT$> NE '' OR StageRec<PRS_STAGE_MICROSCOPE$> NE '' THEN
StageRec<PRS_STAGE_INSP_SIG_REQ$> = 1
WriteFlag = 1
END
IF StageRec<PRS_STAGE_SURFSCAN_RECIPE$> NE '' THEN
StageRec<PRS_STAGE_SURFSCAN_SIG_REQ$> = 1
WriteFlag = 1
END
IF WriteFlag = 1 THEN
*WRITE StageRec ON StageTable,StageKey THEN
FixCnt += 1
Send_Info(FixCnt:TAB$:RecCnt:TAB$:StageKey)
*END
END ;* End of check for WriteFlag
END
NEXT I
END
REPEAT
GOTO Bail
**********************
ctCnt = COUNT(CleanTools,@FM) + (CleanTools NE '')
DEBUG
FOR I = 1 TO ctCnt
CTool = TRIM(CleanTools<I>)
OrgCTool = CTool
CONVERT @LOWER_CASE TO @UPPER_CASE in CTool
SWAP 'AKRION 1' WITH 'AKRION1' in CTool
IF CTool[1,2] _EQC 'NO' THEN CTool = ''
IF CTool[1,2] _EQC 'IF' THEN CTool = ''
SWAP ' OR ' WITH @VM IN CTool
SWAP 'SC1+SC2' WITH 'CB3' IN CTool
SWAP 'ONLY' WITH '' IN CTool
SWAP 'HF+ SC1' WITH 'CB3' IN CTool
SWAP 'SC1' WITH 'CB3' IN CTool
intCTools = TRIM(CTool)
nCnt = COUNT(intCTools,@VM) + (intCTools NE '')
Fixed = 0
FOR N = 1 TO nCnt
intCTool = intCTools<1,N>
IF IntCTool = 'AKRION' THEN
intCTools<1,N> = 'AKRION1':@VM:'AKRION2'
Fixed = 1
END
UNTIL Fixed
NEXT N
SWAP @VM WITH ', ' IN intCTools
Send_Dyn(OrgCTool:' -> ':intCTools)
NEXT I
GOTO Bail
* * * * * * * *
SELECT ProdSpecTable
RList('SELECT PROD_SPEC BY-DSND SEQ',5)
Done = 0
RecCnt = @RECCOUNT
FixCnt = 0
LOOP
READNEXT PSNo ELSE Done = 1
UNTIL Done
READ PsRec FROM ProdSpecTable,PSNo THEN
* Pre Epi Cleans ***************
PreTool = PSRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPreClean$>
PreToolRecipe = PSRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPreAkrionRecipe$>
IF PreTool[1,2] _EQC 'NO' THEN PreTool = ''
IF PreTool[1,2] _EQC 'IF' THEN PreTool = ''
IF PreToolRecipe[1,2] _EQC 'NO' THEN PreToolRecipe = ''
SWAP 'Akrion1' WITH 'Akrion' IN PreTool
SWAP ' or ' WITH @VM IN PreTool
SWAP 'SC1+SC2' WITH 'CB3' IN PreTool
SWAP 'Only' WITH '' IN PreTool
PreTool = TRIM(PreTool)
PreFlag = 0
IF PreTool OR PreToolRecipe THEN
PreFlag = 1
Send_Dyn(PSNo:' Pre: Cleans ':PreTool:TAB$:PreToolRecipe)
END
* Pre Epi Inspection **
PreBrightlightFlag = PSRec<PROD_SPEC_PRE_BRIGHTLIGHT$>
PreMicroscopeFlag = PSRec<PROD_SPEC_PRE_MICROSCOPE$>
IF PreBrightlightFlag = 1 or PreMicroscopeFlag = 1 THEN
Send_Dyn(PSNo:' Pre: Inspection Brightlight ':PreBrightlightFlag:TAB$:' Microscope ':PreMicroscopeFlag)
END
* Pre Epi SurfScan **
PreSurfscanRecipe = PSRec<PROD_SPEC_PRE_SURFSCAN_RECIPE$>
IF PreSurfscanRecipe THEN
Send_Dyn(PSNo:' Pre: SurfScan ':PreSurfscanFlag:TAB$:PreSurfscanRecipe)
END
* Wafer Inspection ****************
Spec_FWI_LWI = PSRec<PROD_SPEC_POST_FWI_LWI$> ;* FWI OR LWI
IF Spec_FWI_LWI = 'FWI' THEN
FwiBrightLightFlag = PSRec<PROD_SPEC_FIRST_BRIGHTLIGHT$>
FwiMicroscopeFlag = PSRec<PROD_SPEC_FIRST_MICROSCOPE$>
IF FwiBrightLightFlag = 1 OR FwiMicroscopeFlag = 1 THEN
Send_Dyn(PSNo:' FWI Inspection Brightlight ':FwiBrightLightFlag:TAB$:'Microscope ':FwiMicroscopeFlag)
END
FwiSurfscanFlag = PSRec<PROD_SPEC_FIRST_SURFSCAN$>
FwiSurfscanRecipe = PSRec<PROD_SPEC_FIRST_SURFSCAN_RECIPE$>
IF FwiSurfscanFlag = 1 OR FwiSurfscanRecipe THEN
Send_Dyn(PSNo:' FWI Inspection Surfscan Flag ':FwiSurfscanFlag:TAB$:' Recipe ':FwiSurfscanRecipe)
END
END
IF Spec_FWI_LWI = 'LWI' THEN
LwiBrightLightFlag = PSRec<PROD_SPEC_FIRST_BRIGHTLIGHT$>
LwiMicroscopeFlag = PSRec<PROD_SPEC_FIRST_MICROSCOPE$>
IF LwiBrightLightFlag = 1 OR LwiMicroscopeFlag = 1 THEN
Send_Dyn(PSNo:' LWI Inspection Brightlight ':LwiBrightLightFlag:TAB$:'Microscope ':LwiMicroscopeFlag)
END
LwiSurfscanFlag = PSRec<PROD_SPEC_FIRST_SURFSCAN$>
LwiSurfscanRecipe = PSRec<PROD_SPEC_FIRST_SURFSCAN_RECIPE$>
IF LwiSurfscanFlag = 1 OR LwiSurfscanRecipe = 1 THEN
Send_Dyn(PSNo:' LWI Inspection Surfscan Flag ':LwiSurfscanFlag:TAB$:' Recipe ':LwiSurfscanRecipe)
END
END
* Post Epi Cleans ****************
PostTool = PSRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPostClean$>
PostToolRecipe = PSRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPostAkrionRecipe$>
IF PostTool[1,2] _EQC 'NO' THEN PostTool = ''
IF PostToolRecipe[1,2] _EQC 'NO' THEN PostToolRecipe = ''
IF PostTool NE '' OR PostToolRecipe NE '' THEN
Send_Dyn(PSNo:' POST Clean ':PostTool:TAB$:PostToolRecipe)
END
* Post Epi Inspection **
PostBrightLight = PSRec<PROD_SPEC_POST_CLEAN_BRIGHTLIGHT$>
IF PostBrightLight = 1 THEN
Send_Dyn(PSNo:' POST Inspection Brightlight ':PostBrightlight)
END
* PostEpi SurfScan
PostSurfscan = PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN$>
PostSurfscanRecipe = PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN_RECIPE$>
IF PostSurfscan OR PostSurfscanRecipe NE '' THEN
Send_Dyn(PSNo:' POST Surfscan Flag ':PostSurfscan:TAB$:PostSurfscanRecipe)
END
Send_Dyn(' ')
END ;* End of ProdSpecRec read
REPEAT
GOTO Bail
****************************************
RList('SELECT PROD_SPEC BY-DSND SEQ',5)
Done = 0
RecCnt = @RECCOUNT
DEBUG
LOOP
READNEXT PSNo ELSE Done = 1
UNTIL Done
READ ProdSpecRec FROM ProdSpecTable,PSNo THEN
ModeCodes = 'U':@VM:'Q':@VM:'E':@VM:'P'
ProdSpecRec<PROD_SPEC_MODE_CODE$> = ModeCodes
*PROD_SPEC_MODE_SIG$
*PROD_SPEC_MODE_SIG_DTM$
SpecAddtl = ProdSpecRec<PROD_SPEC_SPEC_ADDTL$>
SpecType = ProdSpecRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubSpecType$>
PreQualSig = SpecAddtl<1,QSAddPreQualSig$>
PreQualDate = OCONV(SpecAddtl<1,QSAddPreQualSigDate$>,'D4/')
PreQualTime = OCONV(SpecAddtl<1,QSAddPreQualSigTime$>,'MTS')
IF PreQualSig NE '' THEN
ProdSpecRec<PROD_SPEC_MODE_SIG$,1> = PreQualSig
ProdSpecRec<PROD_SPEC_MODE_SIG_DTM$,1> = ICONV(PreQualDate:' ':PreQualTime,'DT')
END
QualSig = SpecAddtl<1,QSAddQualSig$>
QualDate = OCONV(SpecAddtl<1,QSAddQualSigDate$>,'D4/')
QualTime = OCONV(SpecAddtl<1,QSAddQualSigTime$>,'MTS')
IF QualSig NE '' THEN
ProdSpecRec<PROD_SPEC_MODE_SIG$,2> = QualSig
ProdSpecRec<PROD_SPEC_MODE_SIG_DTM$,2> = ICONV(QualDate:' ':QualTime,'DT')
END
PreProdSig = SpecAddtl<1,QSAddPreProdSig$>
PreProdDate = OCONV(SpecAddtl<1,QSAddPreProdSigDate$>,'D4/')
PreProdTime = OCONV(SpecAddtl<1,QSAddPreProdSigTime$>,'MTS')
IF PreProdSig NE '' THEN
ProdSpecRec<PROD_SPEC_MODE_SIG$,3> = PreProdSig
ProdSpecRec<PROD_SPEC_MODE_SIG_DTM$,3> = ICONV(PreProdDate:' ':PreProdTime,'DT')
END
ProdSig = SpecAddtl<1,QSAddProdSig$>
ProdDate = OCONV(SpecAddtl<1,QSAddProdSigDate$>,'D4/')
ProdTime = OCONV(SpecAddtl<1,QSAddProdSigTime$>,'MTS')
IF PreProdSig NE '' THEN
ProdSpecRec<PROD_SPEC_MODE_SIG$,4> = ProdSig
ProdSpecRec<PROD_SPEC_MODE_SIG_DTM$,4> = ICONV(ProdDate:' ':ProdTime,'DT')
END
Send_Dyn(PSNo:' - ':SpecType:' - ')
Send_Dyn(PSNo:ProdSpecRec<PROD_SPEC_MODE_CODE$,1>:' ':ProdSpecRec<PROD_SPEC_MODE_SIG$,1>:' ':ProdSpecRec<PROD_SPEC_MODE_SIG_DTM$,1>)
Send_Dyn(PSNo:ProdSpecRec<PROD_SPEC_MODE_CODE$,2>:' ':ProdSpecRec<PROD_SPEC_MODE_SIG$,2>:' ':ProdSpecRec<PROD_SPEC_MODE_SIG_DTM$,2>)
Send_Dyn(PSNo:ProdSpecRec<PROD_SPEC_MODE_CODE$,3>:' ':ProdSpecRec<PROD_SPEC_MODE_SIG$,3>:' ':ProdSpecRec<PROD_SPEC_MODE_SIG_DTM$,3>)
Send_Dyn(PSNo:ProdSpecRec<PROD_SPEC_MODE_CODE$,4>:' ':ProdSpecRec<PROD_SPEC_MODE_SIG$,4>:' ':ProdSpecRec<PROD_SPEC_MODE_SIG_DTM$,4>)
Send_Dyn(' ')
WRITE ProdSpecRec ON ProdSpecTable,PSNo THEN
*Send_Dyn(PSNo:' ':ReactType:' ':ProdSpecRec<PROD_SPEC_MET_TEST$>:' ':ProdSpecRec<PROD_SPEC_MET_INTERVAL$>:' ':ProdSpecRec<PROD_SPEC_MET_START$>)
END
END
REPEAT
GOTO Bail
*****************************
*SelectSent = 'REACTOR_TYPE':@VM:'P':@FM
SelectSent = 'STATUS':@VM:'A':@FM
Btree.Extract(SelectSent,'PROD_SPEC',DictProdSpec,EpiProSpecNos,'','')
IF Get_Status(errCode) THEN DEBUG
Done = 0
RecCnt = COUNT(EpiProSpecNos,@VM) + (EpiProSpecNos NE '')
FOR I = 1 TO RecCnt
PSNo = EpiProSpecNos<1,I>
READ ProdSpecRec FROM ProdSpecTable,PSNo THEN
ReactType = XLATE('PROD_SPEC',PSNo,'REACTOR_TYPE','X')
ThickMin = OCONV(XLATE('PROD_SPEC',PSNo,'THICK_MIN_ALL','X')[-1,'B':@VM],'MD2')
ThickMax = OCONV(XLATE('PROD_SPEC',PSNo,'THICK_MAX_ALL','X')[-1,'B':@VM],'MD2')
ResMin = OCONV(XLATE('PROD_SPEC',PSNo,'RES_MIN_ALL','X')[-1,'B':@VM],'MD3')
ResMax = OCONV(XLATE('PROD_SPEC',PSNo,'RES_MAX_ALL','X')[-1,'B':@VM],'MD3')
IF ReactType = 'P' THEN
SubstrateInfo = ProdSpecRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubInstructions$>
TestCnt = 1
IF INDEX(SubstrateInfo,'FLEXUS',1) THEN
ProdSpecRec<PROD_SPEC_MET_TEST$,TestCnt> = 'FLEXUS'
ProdSpecRec<PROD_SPEC_MET_INTERVAL$,TestCnt> = '5'
ProdSpecRec<PROD_SPEC_MET_START$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_SLOT$,TestCnt> = 'A' ;* All Wafers
ProdSpecRec<PROD_SPEC_MET_RUN_STEP$,TestCnt> = 'MO_QA'
TestCnt += 1
END
ProdSpecRec<PROD_SPEC_MET_TEST$,TestCnt> = 'ADE'
ProdSpecRec<PROD_SPEC_MET_MIN$,TestCnt> = ThickMin
ProdSpecRec<PROD_SPEC_MET_MAX$,TestCnt> = ThickMax
ProdSpecRec<PROD_SPEC_MET_INTERVAL$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_START$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_SLOT$,TestCnt> = '2'
ProdSpecRec<PROD_SPEC_MET_RUN_STEP$,TestCnt> = 'MO_QA'
END ELSE
SubstrateInfo = ProdSpecRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubInstructions$>
TestCnt = 1
ProdSpecRec<PROD_SPEC_MET_TEST$,TestCnt> = 'THICK_ONLY'
ProdSpecRec<PROD_SPEC_MET_MIN$,TestCnt> = ThickMin
ProdSpecRec<PROD_SPEC_MET_MAX$,TestCnt> = ThickMax
ProdSpecRec<PROD_SPEC_MET_INTERVAL$,TestCnt> = '2'
ProdSpecRec<PROD_SPEC_MET_START$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_SLOT$,TestCnt> = 'L'
ProdSpecRec<PROD_SPEC_MET_RUN_STEP$,TestCnt> = 'UNLOAD'
TestCnt += 1
IF ProdSpecRec<PROD_SPEC_LW_RHO_MIN$> NE '' OR ProdSpecRec<PROD_SPEC_LW_RHO_MAX$> NE '' THEN
ProdSpecRec<PROD_SPEC_MET_TEST$,TestCnt> = 'LW_RHO'
ProdSpecRec<PROD_SPEC_MET_MIN$,TestCnt> = ResMin
ProdSpecRec<PROD_SPEC_MET_MAX$,TestCnt> = ResMax
ProdSpecRec<PROD_SPEC_MET_INTERVAL$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_START$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_SLOT$,TestCnt> = 'L'
ProdSpecRec<PROD_SPEC_MET_RUN_STEP$,TestCnt> = 'UNLOAD'
TestCnt += 1
END
ProdSpecRec<PROD_SPEC_MET_TEST$,TestCnt> = 'ADE'
ProdSpecRec<PROD_SPEC_MET_MIN$,TestCnt> = ThickMin
ProdSpecRec<PROD_SPEC_MET_MAX$,TestCnt> = ThickMax
ProdSpecRec<PROD_SPEC_MET_INTERVAL$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_START$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_SLOT$,TestCnt> = 'L'
ProdSpecRec<PROD_SPEC_MET_RUN_STEP$,TestCnt> = 'QA'
TestCnt += 1
IF INDEX(SubstrateInfo,'FLEXUS',1) THEN
ProdSpecRec<PROD_SPEC_MET_TEST$,TestCnt> = 'FLEXUS'
ProdSpecRec<PROD_SPEC_MET_INTERVAL$,TestCnt> = '5'
ProdSpecRec<PROD_SPEC_MET_START$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_SLOT$,TestCnt> = 'A' ;* All Wafers
ProdSpecRec<PROD_SPEC_MET_RUN_STEP$,TestCnt> = 'QA'
TestCnt += 1
END
IF ProdSpecRec<PROD_SPEC_LW_RHO_MIN$> NE '' OR ProdSpecRec<PROD_SPEC_LW_RHO_MAX$> NE '' THEN
ProdSpecRec<PROD_SPEC_MET_TEST$,TestCnt> = 'LW_RHO'
ProdSpecRec<PROD_SPEC_MET_MIN$,TestCnt> = ResMin
ProdSpecRec<PROD_SPEC_MET_MAX$,TestCnt> = ResMax
ProdSpecRec<PROD_SPEC_MET_INTERVAL$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_START$,TestCnt> = '1'
ProdSpecRec<PROD_SPEC_MET_SLOT$,TestCnt> = 'L'
ProdSpecRec<PROD_SPEC_MET_RUN_STEP$,TestCnt> = 'QA'
TestCnt += 1
END
END
WRITE ProdSpecRec ON ProdSpecTable,PSNo THEN
Send_Dyn(PSNo:' ':ReactType:' ':ProdSpecRec<PROD_SPEC_MET_TEST$>:' ':ProdSpecRec<PROD_SPEC_MET_INTERVAL$>:' ':ProdSpecRec<PROD_SPEC_MET_START$>)
END
END
NEXT I
GOTO Bail
RList('SELECT PROD_SPEC WITH SUB_SUPPLIED_BY "C" AND WITH BOM_EPI_PART_NO NE "" AND WITH STATUS = "A"',5)
Done = 0
RecCnt = 0
LOOP
READNEXT PSNo ELSE Done = 1
UNTIL Done
READ ProdSpecRec FROM ProdSpecTable,PSNo THEN
SubPartNos = ProdSpecRec<PROD_SPEC_SUB_PART_NUMS$>
SubMfgs = ProdSpecRec<PROD_SPEC_SUB_WAFER_MFG$>
CustNo = ProdSpecRec<PROD_SPEC_CUST_ID$>
BOMEpiPartNos = XLATE('PROD_SPEC',PSNo,'BOM_EPI_PART_NO','X')
EpiPartNo = BOMEpiPartNos<1,1>
IF SubPartNos NE '' AND EpiPartNo NE '' AND CustNo NE '' THEN
READ CustEpiRec FROM CustEpiTable,CustNo:'*':EpiPartNo THEN
CustEpiRec<CUST_EPI_PART_SUBSTRATE_PART_NO$> = SubPartNos
CustEpiRec<CUST_EPI_PART_SUBSTRATE_MFR$> = SubMfgs
WRITE CustEpiRec ON CustEpiTable,CustNo:'*':EpiPartNo THEN
Send_Dyn(CustNo:'*':EpiPartNo)
END
END
END
END
REPEAT
GOTO Bail
/*
RList('SELECT PROD_SPEC WITH BOM_NO NE "" AND WITH EPI_PART_NO = "" ',5)
SelCnt = @RECCOUNT
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT ProdSpecNo ELSE Done = 1
UNTIL Done
READ ProdSpecRec FROM ProdSpecTable,ProdSpecNo THEN
BomNo = ProdSpecRec<PROD_SPEC_BOM_NO$,1>
EpiPartNo = XLATE('BOM',BomNo,BOM_EPI_PART_NO$,'X')
ProdSpecRec<PROD_SPEC_EPI_PART_NO$> = EpiPartNo
FixCnt += 1
*WRITE ProdSpecRec ON ProdSpecTable,ProdSpecNo THEN
Send_Dyn(RecCnt:' - ':FixCnt:' ':ProdSpecNo:' BOM: ':BomNo:' -> ':EpiPartNo)
*END
END ;* End of read
REPEAT
GOTO Bail
*/
RList('SELECT PROD_SPEC WITH STATUS = "A" AND WITH EPI_PART_NO NE "" ',5)
SelCnt = @RECCOUNT
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT ProdSpecNo ELSE Done = 1
UNTIL Done
READ ProdSpecRec FROM ProdSpecTable,ProdSpecNo THEN
obj_Prod_Spec('PushSplit',ProdSpecNo)
FixCnt += 1
Send_Info(RecCnt:' - ':FixCnt)
END ;* End of read
REPEAT
* * * * * * *
Bail:
* * * * * * *
END