open-insight/LSL2/STPROC/MOVE_RDS_DICT.txt
Stieber Daniel (CSC FI SPS MESLEO) 87d79edef8 Merged PR 11670: Fixed min row limit issue causing cells to be colored incorrectly. Fixed shee...
Fixed min row limit issue causing cells to be colored incorrectly. Fixed sheet rho units in rds test modules
2025-02-27 00:22:27 +01:00

511 lines
16 KiB
Plaintext

COMPILE Subroutine MOVE_RDS_DICT(Dummy)
* ROWDEF(CHARSTR)
DECLARE SUBROUTINE obj_Schedule,Send_Dyn,Send_Info, Send_Dyn, obj_WO_Step, Set_Status, RList, obj_RDS_Layer
DECLARE FUNCTION Get_Status, Set_Printer, obj_RDS, NextKey, obj_Prod_Spec, obj_RDS_Test
$INSERT DICT_EQUATES
$INSERT RDS_EQU
$INSERT RDS_LAYER_EQUATES
$INSERT RDS_TEST_EQUATES
$INSERT RDS_LAYER_INFO_EQU
$INSERT PRS_LAYER_EQU
$INSERT RECIPE_EQU
$INSERT RECIPE_LAYER_INFO_EQU
EQU SHEETRHO_SPEC_UNITS$ TO \EA2FDC\
EQU RES_SPEC_UNITS$ TO \EA2D636D\
OPEN 'RDS' TO RDSTable ELSE
DEBUG
GOTO Bail
END
OPEN 'RDS_LAYER' TO RDSLayerTable ELSE
DEBUG
GOTO Bail
END
OPEN 'RDS_TEST' TO RDSTestTable ELSE
DEBUG
GOTO Bail
END
OPEN 'DICT.RDS' TO FileIn ELSE
DEBUG
GOTO Bail
END
OPEN 'DICT.RDS_LAYER' TO FileOut ELSE
DEBUG
GOTO Bail
END
OPEN 'DICT.RDS_TEST' TO DictRDSTest ELSE
DEBUG
GOTO Bail
END
IF Get_Status(errCode) THEN DEBUG
* Now do the fields for the RDS_TEST (metrology table)
SelectSent = 'SELECT RDS WITH WO < 130261'
EQU TARGET_ACTIVELIST$ to 5
RList(SelectSent,TARGET_ACTIVELIST$, "", "", "")
RecCnt = 0
Done = 0
LOOP
READNEXT RDSNo ELSE Done = 1
UNTIL Done
READ RDSRec FROM RDSTable,RDSNo THEN
RecCnt += 1
Send_Info(RecCnt)
RecLen = LEN(RDSRec)
IF RecLen > 261 THEN
PSNId = RDSRec<RDS_PROD_SPEC_ID$>
RDSLayRec = ''
LS_ID = 'L1' ;* Always have at least this layer
obj_RDS_Layer('Create',RDSNo:@RM:LS_ID:@RM:PSNId) ;* Creates record and load recipe limits in it
READ RDSLayerRec FROM RDSLayerTable,RDSNO:'*':LS_ID THEN
RDSLayerRec<RDS_LAYER_RECIPE_NO$> = RDSRec<RDS_RECIPE_NO$>
RDSLayerRec<RDS_LAYER_EPI_TIME$> = RDSRec<RDS_EPI_TIME$>
RDSLayerRec<RDS_LAYER_DILUENT_ADJ_PARAM$> = RDSRec<RDS_DILUENT_ADJ_PARAM$>
RDSLayerRec<RDS_LAYER_DOPANT_FLOW$> = RDSRec<RDS_DOPANT_FLOW$>
RDSLayerRec<RDS_LAYER_HCL_FLOW$> = RDSRec<RDS_HCL_FLOW$>
RDSLayerRec<RDS_LAYER_BAKE_TIME$> = RDSRec<RDS_BAKE_TIME$>
RDSLayerRec<RDS_LAYER_EPI_H2_FLOW$> = RDSRec<RDS_EPI_H2_FLOW$>
RDSLayerRec<RDS_LAYER_TCS_FLOW$> = RDSRec<RDS_TCS_FLOW$>
RDSLayerRec<RDS_LAYER_DCS_FLOW$> = RDSRec<RDS_DCS_FLOW$>
RDSLayerRec<RDS_LAYER_AUX1$> = RDSRec<RDS_AUX1$>
RDSLayerRec<RDS_LAYER_AUX2$> = RDSRec<RDS_AUX2$>
RDSLayerRec<RDS_LAYER_F_OFFSET$> = RDSRec<RDS_F_OFFSET$>
RDSLayerRec<RDS_LAYER_S_OFFSET$> = RDSRec<RDS_S_OFFSET$>
RDSLayerRec<RDS_LAYER_R_OFFSET$> = RDSRec<RDS_R_OFFSET$>
RDSLayerRec<RDS_LAYER_ETCH1$> = RDSRec<RDS_ETCH1$>
RDSLayerRec<RDS_LAYER_ETCH2$> = RDSRec<RDS_ETCH2$>
RDSLayerRec<RDS_LAYER_ETCH3$> = RDSRec<RDS_ETCH3$>
RDSLayerRec<RDS_LAYER_UL_TEMP$> = RDSRec<RDS_UL_TEMP$>
WRITE RDSLayerRec ON RDSLayerTable,RDSNO:'*':LS_ID ELSE NULL
END
WaferSize = XLATE( 'PROD_SPEC', PSNId, 'SUB_WAFER_SIZE', 'X' )
SubOrientation = XLATE('PROD_SPEC',PSNId,'SUB_ORIENTATION','X')
ResUnits = RDSRec<RDS_RES_UNITS$>
RDSTestRec = ''
RDSTestRec<RDS_TEST_RDS_NO$> = RDSNo
RDSTestRec<RDS_TEST_LS_ID$> = 'L1'
RDSTestRec<RDS_TEST_WAFER_SIZE$> = WaferSize
RDSTestRec<RDS_TEST_SUB_ORIENTATION$> = SubOrientation
RDSTestRec<RDS_TEST_SPEC_THICK_MIN$> = RDSRec<RDS_THICK_MIN$>
RDSTestRec<RDS_TEST_SPEC_THICK_TARGET$> = RDSRec<RDS_THICK_TARGET$>
RDSTestRec<RDS_TEST_SPEC_THICK_MAX$> = RDSRec<RDS_THICK_MAX$>
RDSTestRec<RDS_TEST_SPEC_THICK_UNITS$> = RDSRec<RDS_THICK_UNITS$>
RDSTestRec<RDS_TEST_SPEC_RES_MIN$> = RDSRec<RDS_RES_MIN$>
RDSTestRec<RDS_TEST_SPEC_RES_TARGET$> = RDSRec<RDS_RES_TARGET$>
RDSTestRec<RDS_TEST_SPEC_RES_MAX$> = RDSRec<RDS_RES_MAX$>
RDSTestRec<RDS_TEST_SPEC_RES_UNITS$> = RDSRec<RDS_RES_UNITS$>
RDSTestRec<RDS_TEST_SPEC_CON_MIN$> = RDSRec<RDS_CON_MIN$>
RDSTestRec<RDS_TEST_SPEC_CON_TARGET$> = RDSRec<RDS_CON_TARGET$>
RDSTestRec<RDS_TEST_SPEC_CON_MAX$> = RDSRec<RDS_CON_MAX$>
RDSTestRec<RDS_TEST_SPEC_CON_UNITS$> = RDSRec<RDS_CON_UNITS$>
RDSTestRec<RDS_TEST_READ_SHEET_RHO$> = ICONV(OCONV(RDSRec<RDS_SHEETRHO_READ$>,'MD2'),'MD3')
RDSTestRec<RDS_TEST_READ_THICK$> = RDSRec<RDS_THICK_READ$>
RDSTestRec<RDS_TEST_THICK_AVG$> = RDSRec<RDS_TTHICK_AVG$>
RDSTestRec<RDS_TEST_THICK_STDV$> = RDSRec<RDS_TTHICK_STDEV$>
RDSTestRec<RDS_TEST_THICK_UNIF$> = RDSRec<RDS_TTHICK_UNIF$>
RDSTestRec<RDS_TEST_THICK_MIN$> = RDSRec<RDS_TTHICK_MIN$>
RDSTestRec<RDS_TEST_THICK_MAX$> = RDSRec<RDS_TTHICK_MAX$>
IF ResUnits = SHEETRHO_SPEC_UNITS$ THEN
RDSTestRec<RDS_TEST_SHEETRHO_AVG$> = RDSRec<RDS_TRES_AVG$>
RDSTestRec<RDS_TEST_SHEETRHO_STDV$> = RDSRec<RDS_TRES_STDEV$>
RDSTestRec<RDS_TEST_SHEETRHO_UNIF$> = RDSRec<RDS_TRES_UNIF$>
RDSTestRec<RDS_TEST_SHEETRHO_MIN$> = RDSRec<RDS_TRES_MIN$>
RDSTestRec<RDS_TEST_SHEETRHO_MAX$> = RDSRec<RDS_TRES_MAX$>
RDSTestRec<RDS_TEST_RES_AVG$> = ''
RDSTestRec<RDS_TEST_RES_STDV$> = ''
RDSTestRec<RDS_TEST_RES_UNIF$> = ''
RDSTestRec<RDS_TEST_RES_MIN$> = ''
RDSTestRec<RDS_TEST_RES_MAX$> = ''
END ELSE
RDSTestRec<RDS_TEST_SHEETRHO_AVG$> = ''
RDSTestRec<RDS_TEST_SHEETRHO_STDV$> = ''
RDSTestRec<RDS_TEST_SHEETRHO_UNIF$> = ''
RDSTestRec<RDS_TEST_SHEETRHO_MIN$> = ''
RDSTestRec<RDS_TEST_SHEETRHO_MAX$> = ''
RDSTestRec<RDS_TEST_RES_AVG$> = RDSRec<RDS_TRES_AVG$>
RDSTestRec<RDS_TEST_RES_STDV$> = RDSRec<RDS_TRES_STDEV$>
RDSTestRec<RDS_TEST_RES_UNIF$> = RDSRec<RDS_TRES_UNIF$>
RDSTestRec<RDS_TEST_RES_MIN$> = RDSRec<RDS_TRES_MIN$>
RDSTestRec<RDS_TEST_RES_MAX$> = RDSRec<RDS_TRES_MAX$>
END
RDSTestRec<RDS_TEST_THICK_OVERGROW_AVG$> = RDSRec<RDS_THICK_OVR_GROWTH_AVG$>
RDSTestRec<RDS_TEST_SRP_PROFILE_PATH$> = RDSRec<RDS_SRP_PROFILE_PATH$>
* Now load the specification stuff that was not copied in the org system
SpecLayerData = obj_Prod_Spec('GetLayerProp',PSNId:@RM:LS_ID:@RM:1) ;* Gets 1st layer WO/Conversiion
SpecLayerID = SpecLayerData[1,@FM]
SpecLayerData = FIELD(SpecLayerData,@FM,2,999)
RDSTestRec<RDS_TEST_SPEC_DOPANT$> = SpecLayerData<PRS_LAYER_DOPANT$>
RDSTestRec<RDS_TEST_SPEC_RECIPE$> = SpecLayerData<PRS_LAYER_RECIPE$>
RDSTestRec<RDS_TEST_SPEC_RECIPE_NAME$> = SpecLayerData<PRS_LAYER_RECIPE_NAME$>
FOR A = 11 TO 19
RDSTestRec<A> = SpecLayerData<PRS_LAYER_THICK_MEASUREMENT$,A-10>
NEXT A
FOR A = 24 TO 32
RDSTestRec<A> = SpecLayerData<PRS_LAYER_RES_MEASUREMENT$,A-23>
NEXT A
FOR A = 37 TO 45
RDSTestRec<A> = SpecLayerData<PRS_LAYER_CONC_MEASUREMENT$,A-36>
NEXT A
FOR A = 50 to 58
RDSTestRec<A> = SpecLayerData<PRS_LAYER_STRESS_MEASUREMENT$,A-49>
NEXT A
RDSTestRec<RDS_TEST_SPEC_TRANS$> = SpecLayerData<PRS_LAYER_TRANS_SPEC$>
RDSTestRec<RDS_TEST_SPEC_TRANS_MEASUREMENT$> = SpecLayerData<PRS_LAYER_TRANS_MEASUREMENT$>
GOSUB LoadTestWafers
RDSTestRec = obj_RDS_Test('CalcMissing',RDSTestRec)
NextTestKey = NextKey('RDS_TEST')
WRITE RDSTestRec ON RDSTestTable,NextTestKey ELSE NULL
* Check for additional layers shoved down the rabbit hole in field <33>
LayerMess = RDSRec<RDS_LAYER_INFO$>
CONVERT CHAR(248) TO @FM IN LayerMess
LayerCnt = COUNT(LayerMess,@FM) + (LayerMess NE '')
FOR N= 1 TO LayerCnt
LayerNo = N + 1
IF N = LayerCnt THEN
LS_ID = N
END ELSE
LS_ID = 'L':LayerNo
END
RecipeNo = LayerMess<N,RLRecipeNo$>
IF INDEX(LS_ID,'L',1) THEN
obj_RDS_Layer('Create',RDSNo:@RM:LS_ID:@RM:PSNId) ;* Creates record and load recipe limits in it
READ RDSLayerRec FROM RDSLayerTable,RDSNO:'*':LS_ID ELSE NULL
END ELSE
RDSLayerRec = ''
END
RDSLayerRec<RDS_LAYER_RECIPE_NO$> = RecipeNo
IF INDEX(LS_ID,'L',1) THEN
RDSLayerRec<RDS_LAYER_EPI_TIME$> = LayerMess<N,RLEpiTime$>
RDSLayerRec<RDS_LAYER_DOPANT_FLOW$> = LayerMess<N,RLDopantFlow$>
END
WRITE RDSLayerRec ON RDSLayerTable,RDSNO:'*':LS_ID ELSE NULL
PSNLayerData = obj_Prod_Spec('GetLayerProp',PSNId:@RM:LS_ID)
PSNLayerData = FIELD(PSNLayerData,@FM,2,999) ;* Layer ID is returned in the 1st field position
NextTestKey = NextKey('RDS_TEST')
RDSTestRec = ''
RDSTestRec<RDS_TEST_RDS_NO$> = RDSNo
RDSTestRec<RDS_TEST_LS_ID$> = LS_ID
RDSTestRec<RDS_TEST_SPEC_THICK_MIN$> = LayerMess<N,RLThickMin$>
RDSTestRec<RDS_TEST_SPEC_THICK_TARGET$> = LayerMess<N,RLThickTarget$>
RDSTestRec<RDS_TEST_SPEC_THICK_MAX$> = LayerMess<N,RLThickMax$>
RDSTestRec<RDS_TEST_SPEC_THICK_UNITS$> = LayerMess<N,RLThickUnits$>
RDSTestRec<RDS_TEST_SPEC_RES_MIN$> = LayerMess<N,RLResMin$>
RDSTestRec<RDS_TEST_SPEC_RES_TARGET$> = LayerMess<N,RLResTarget$>
RDSTestRec<RDS_TEST_SPEC_RES_MAX$> = LayerMess<N,RLResMax$>
RDSTestRec<RDS_TEST_SPEC_RES_UNITS$> = LayerMess<N,RLResUnits$>
RDSTestRec<RDS_TEST_SPEC_CON_MIN$> = LayerMess<N,RLConMin$>
RDSTestRec<RDS_TEST_SPEC_CON_TARGET$> = LayerMess<N,RLConTarget$>
RDSTestRec<RDS_TEST_SPEC_CON_MAX$> = LayerMess<N,RLConMax$>
RDSTestRec<RDS_TEST_SPEC_CON_UNITS$> = LayerMess<N,RLConUnits$>
RDSTestRec<RDS_TEST_SPEC_STRESS_MIN$> = PSNLayerData<PRS_LAYER_STRESS_MIN$>
RDSTestRec<RDS_TEST_SPEC_STRESS_MAX$> = PSNLayerData<PRS_LAYER_STRESS_MAX$>
RDSTestRec<RDS_TEST_SPEC_TRANS$> = PSNLayerData<PRS_LAYER_TRANS_SPEC$>
RDSTestRec<RDS_TEST_SPEC_TRANS_MEASUREMENT$> = PSNLayerData<PRS_LAYER_TRANS_MEASUREMENT$>
RDSTestRec<RDS_TEST_WAFER_SIZE$> = WaferSize
RDSTestRec<RDS_TEST_SUB_ORIENTATION$> = SubOrientation
SheetRHOReads = LayerMess<N,RLSheetRHORead$>
ThicknessReads = LayerMess<N,RLThickRead$>
CONVERT @SVM TO @VM IN SheetRHOReads
CONVERT @SVM TO @VM IN ThicknessReads
A1 = SheetRHOReads
RDSTestRec<RDS_TEST_READ_SHEET_RHO$> = ICONV(OCONV(SheetRHOReads,'MD2'),'MD3')
RDSTestRec<RDS_TEST_READ_THICK$> = ThicknessReads
RDSTestRec<RDS_TEST_THICK_AVG$> = LayerMess<N,RLTThickAvg$>
RDSTestRec<RDS_TEST_THICK_STDV$> = LayerMess<N,RLTThickStdev$>
RDSTestRec<RDS_TEST_THICK_UNIF$> = LayerMess<N,RLTThickUnif$>
RDSTestRec<RDS_TEST_THICK_MIN$> = LayerMess<N,RLTThickMin$>
RDSTestRec<RDS_TEST_THICK_MAX$> = LayerMess<N,RLTThickMax$>
IF ResUnits = SHEETRHO_SPEC_UNITS$ THEN
RDSTestRec<RDS_TEST_SHEETRHO_AVG$> = LayerMess<N,RLTResAvg$>
RDSTestRec<RDS_TEST_SHEETRHO_STDV$> = LayerMess<N,RLTResStdev$>
RDSTestRec<RDS_TEST_SHEETRHO_UNIF$> = LayerMess<N,RLTResUnif$>
RDSTestRec<RDS_TEST_SHEETRHO_MIN$> = LayerMess<N,RLTResMin$>
RDSTestRec<RDS_TEST_SHEETRHO_MAX$> = LayerMess<N,RLTResMax$>
RDSTestRec<RDS_TEST_RES_AVG$> = ''
RDSTestRec<RDS_TEST_RES_STDV$> = ''
RDSTestRec<RDS_TEST_RES_UNIF$> = ''
RDSTestRec<RDS_TEST_RES_MIN$> = ''
RDSTestRec<RDS_TEST_RES_MAX$> = ''
END ELSE
RDSTestRec<RDS_TEST_SHEETRHO_AVG$> = ''
RDSTestRec<RDS_TEST_SHEETRHO_STDV$> = ''
RDSTestRec<RDS_TEST_SHEETRHO_UNIF$> = ''
RDSTestRec<RDS_TEST_SHEETRHO_MIN$> = ''
RDSTestRec<RDS_TEST_SHEETRHO_MAX$> = ''
RDSTestRec<RDS_TEST_RES_AVG$> = LayerMess<N,RLTResAvg$>
RDSTestRec<RDS_TEST_RES_STDV$> = LayerMess<N,RLTResStdev$>
RDSTestRec<RDS_TEST_RES_UNIF$> = LayerMess<N,RLTResUnif$>
RDSTestRec<RDS_TEST_RES_MIN$> = LayerMess<N,RLTResMin$>
RDSTestRec<RDS_TEST_RES_MAX$> = LayerMess<N,RLTResMax$>
END
FOR A = 11 TO 19
RDSTestRec<A> = PSNLayerData<PRS_LAYER_THICK_MEASUREMENT$,A-10>
NEXT A
FOR A = 24 TO 32
RDSTestRec<A> = PSNLayerData<PRS_LAYER_RES_MEASUREMENT$,A-23>
NEXT A
FOR A = 37 TO 45
RDSTestRec<A> = PSNLayerData<PRS_LAYER_CONC_MEASUREMENT$,A-36>
NEXT A
FOR A = 50 to 58
RDSTestRec<A> = PSNLayerData<PRS_LAYER_STRESS_MEASUREMENT$,A-49>
NEXT A
GOSUB LoadTestWafers
RDSTestRec = obj_RDS_Test('CalcMissing',RDSTestRec)
WRITE RDSTestRec ON RDSTestTable,NextTestKey ELSE NULL
NEXT N
END ;* End of check for Null RDS records
END
REPEAT
* * * * * * *
LoadTestWafers:
* * * * * * *
TWLine = 0
IF RDSRec<RDS_TW_NMINUS_CNT$> NE '' THEN
TWType = 'N-'
FOR T = 1 TO COUNT(RDSRec<RDS_TW_NMINUS_CODE$>,@VM) + (RDSRec<RDS_TW_NMINUS_CODE$> NE '')
TWTool = RDSRec<RDS_TW_NMINUS_TOOL$,T>
TWCode = RDSRec<RDS_TW_NMINUS_CODE$,T>
TWTrans = RDSRec<RDS_TW_NMINUS_TRANS$,T>
TWCnt = RDSRec<RDS_TW_NMINUS_CNT$,T>
TWCon = RDSRec<RDS_TW_NMINUS_CON$,T>
TWRes = RDSRec<RDS_TW_NMINUS_RES$,T>
TWRho = RDSRec<RDS_TW_NMINUS_RHO$,T>
TWStress = RDSRec<RDS_TW_NMINUS_STRESS$,T>
TWThick = RDSRec<RDS_TW_NMINUS_THICK$,T>
GOSUB LoadTWLine
NEXT T
END
IF RDSRec<RDS_TW_NPLUS_CNT$> NE '' THEN
TWType = 'N+'
FOR T = 1 TO COUNT(RDSRec<RDS_TW_NPLUS_CODE$>,@VM) + (RDSRec<RDS_TW_NPLUS_CODE$> NE '')
TWTool = RDSRec<RDS_TW_NPLUS_TOOL$,T>
TWCode = RDSRec<RDS_TW_NPLUS_CODE$,T>
TWTrans = RDSRec<RDS_TW_NPLUS_TRANS$,T>
TWCnt = RDSRec<RDS_TW_NPLUS_CNT$,T>
TWCon = RDSRec<RDS_TW_NPLUS_CON$,T>
TWRes = RDSRec<RDS_TW_NPLUS_RES$,T>
TWRho = RDSRec<RDS_TW_NPLUS_RHO$,T>
TWStress = RDSRec<RDS_TW_NPLUS_STRESS$,T>
TWThick = RDSRec<RDS_TW_NPLUS_THICK$,T>
GOSUB LoadTWLine
NEXT T
END
IF RDSRec<RDS_TW_PMINUS_CNT$> NE '' THEN
TWType = 'P-'
FOR T = 1 TO COUNT(RDSRec<RDS_TW_PMINUS_CODE$>,@VM) + (RDSRec<RDS_TW_PMINUS_CODE$> NE '')
TWTool = RDSRec<RDS_TW_PMINUS_TOOL$,T>
TWCode = RDSRec<RDS_TW_PMINUS_CODE$,T>
TWTrans = RDSRec<RDS_TW_PMINUS_TRANS$,T>
TWCnt = RDSRec<RDS_TW_PMINUS_CNT$,T>
TWCon = RDSRec<RDS_TW_PMINUS_CON$,T>
TWRes = RDSRec<RDS_TW_PMINUS_RES$,T>
TWRho = RDSRec<RDS_TW_PMINUS_RHO$,T>
TWStress = RDSRec<RDS_TW_PMINUS_STRESS$,T>
TWThick = RDSRec<RDS_TW_PMINUS_THICK$,T>
GOSUB LoadTWLine
NEXT T
END
IF RDSRec<RDS_TW_PPLUS_CNT$> NE '' THEN
TWType = 'P+'
FOR T = 1 TO COUNT(RDSRec<RDS_TW_PPLUS_CODE$>,@VM) + (RDSRec<RDS_TW_PPLUS_CODE$> NE '')
TWTool = RDSRec<RDS_TW_PPLUS_TOOL$,T>
TWCode = RDSRec<RDS_TW_PPLUS_CODE$,T>
TWTrans = RDSRec<RDS_TW_PPLUS_TRANS$,T>
TWCnt = RDSRec<RDS_TW_PPLUS_CNT$,T>
TWCon = RDSRec<RDS_TW_PPLUS_CON$,T>
TWRes = RDSRec<RDS_TW_PPLUS_RES$,T>
TWRho = RDSRec<RDS_TW_PPLUS_RHO$,T>
TWStress = RDSRec<RDS_TW_PPLUS_STRESS$,T>
TWThick = RDSRec<RDS_TW_PPLUS_THICK$,T>
GOSUB LoadTWLine
NEXT T
END
IF RDSRec<RDS_TW_PROD_CNT$> NE '' THEN
TWType = 'Prod'
FOR T = 1 TO COUNT(RDSRec<RDS_TW_PROD_CODE$>,@VM) + (RDSRec<RDS_TW_PROD_CODE$> NE '')
TWTool = RDSRec<RDS_TW_PROD_TOOL$,T>
TWCode = RDSRec<RDS_TW_PROD_CODE$,T>
TWTrans = RDSRec<RDS_TW_PROD_TRANS$,T>
TWCnt = RDSRec<RDS_TW_PROD_CNT$,T>
TWCon = RDSRec<RDS_TW_PROD_CON$,T>
TWRes = RDSRec<RDS_TW_PROD_RES$,T>
TWRho = RDSRec<RDS_TW_PROD_RHO$,T>
TWStress = RDSRec<RDS_TW_PROD_STRESS$,T>
TWThick = RDSRec<RDS_TW_PROD_THICK$,T>
GOSUB LoadTWLine
NEXT T
END
IF RDSRec<RDS_TW_RECLAIM_CNT$> NE '' THEN
TWType = 'Reclaim'
FOR T = 1 TO COUNT(RDSRec<RDS_TW_RECLAIM_CODE$>,@VM) + (RDSRec<RDS_TW_RECLAIM_CODE$> NE '')
TWTool = RDSRec<RDS_TW_RECLAIM_TOOL$,T>
TWCode = RDSRec<RDS_TW_RECLAIM_CODE$,T>
TWTrans = RDSRec<RDS_TW_RECLAIM_TRANS$,T>
TWCnt = RDSRec<RDS_TW_RECLAIM_CNT$,T>
TWCon = RDSRec<RDS_TW_RECLAIM_CON$,T>
TWRes = RDSRec<RDS_TW_RECLAIM_RES$,T>
TWRho = RDSRec<RDS_TW_RECLAIM_RHO$,T>
TWStress = RDSRec<RDS_TW_RECLAIM_STRESS$,T>
TWThick = RDSRec<RDS_TW_RECLAIM_THICK$,T>
GOSUB LoadTWLine
NEXT T
END
RETURN
* * * * * * *
LoadTWLine:
* * * * * * *
TWLine += 1
RDSTestRec<RDS_TEST_TW_TYPE$,TWLine> = TWType
RDSTestRec<RDS_TEST_TW_TOOL$,TWLine> = TWTool
RDSTestRec<RDS_TEST_TW_CODE$,TWLine> = TWCode
RDSTestRec<RDS_TEST_TW_TRANS$,TWLine> = TWTrans
RDSTestRec<RDS_TEST_TW_CNT$,TWLine> = TWCnt
RDSTestRec<RDS_TEST_TW_CON$,TWLine> = TWCon
RDSTestRec<RDS_TEST_TW_RES$,TWLine> = TWRes
RDSTestRec<RDS_TEST_TW_RHO$,TWLine> = TWRho
RDSTestRec<RDS_TEST_TW_STRESS$,TWLine> = TWStress
RDSTestRec<RDS_TEST_TW_THICK$,TWLine> = TWThick
RETURN
* * * * * * *
Bail:
* * * * * * *
Return