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 'ê/Ü' 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 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 = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec RDSLayerRec = RDSRec 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 RDSTestRec = '' RDSTestRec = RDSNo RDSTestRec = 'L1' RDSTestRec = WaferSize RDSTestRec = SubOrientation RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = ICONV(OCONV(RDSRec,'MD2'),'MD3') RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec IF ResUnits = SHEETRHO_SPEC_UNITS$ THEN RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' END ELSE RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec RDSTestRec = RDSRec END RDSTestRec = RDSRec RDSTestRec = RDSRec * 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 = SpecLayerData RDSTestRec = SpecLayerData RDSTestRec = SpecLayerData FOR A = 11 TO 19 RDSTestRec = SpecLayerData NEXT A FOR A = 24 TO 32 RDSTestRec = SpecLayerData NEXT A FOR A = 37 TO 45 RDSTestRec = SpecLayerData NEXT A FOR A = 50 to 58 RDSTestRec = SpecLayerData NEXT A RDSTestRec = SpecLayerData RDSTestRec = SpecLayerData 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 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 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 = RecipeNo IF INDEX(LS_ID,'L',1) THEN RDSLayerRec = LayerMess RDSLayerRec = LayerMess 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 = RDSNo RDSTestRec = LS_ID RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = PSNLayerData RDSTestRec = PSNLayerData RDSTestRec = PSNLayerData RDSTestRec = PSNLayerData RDSTestRec = WaferSize RDSTestRec = SubOrientation SheetRHOReads = LayerMess ThicknessReads = LayerMess CONVERT @SVM TO @VM IN SheetRHOReads CONVERT @SVM TO @VM IN ThicknessReads A1 = SheetRHOReads RDSTestRec = ICONV(OCONV(SheetRHOReads,'MD2'),'MD3') RDSTestRec = ThicknessReads RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess IF ResUnits = SHEETRHO_SPEC_UNITS$ THEN RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' END ELSE RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = '' RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess RDSTestRec = LayerMess END FOR A = 11 TO 19 RDSTestRec = PSNLayerData NEXT A FOR A = 24 TO 32 RDSTestRec = PSNLayerData NEXT A FOR A = 37 TO 45 RDSTestRec = PSNLayerData NEXT A FOR A = 50 to 58 RDSTestRec = PSNLayerData 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 NE '' THEN TWType = 'N-' FOR T = 1 TO COUNT(RDSRec,@VM) + (RDSRec NE '') TWTool = RDSRec TWCode = RDSRec TWTrans = RDSRec TWCnt = RDSRec TWCon = RDSRec TWRes = RDSRec TWRho = RDSRec TWStress = RDSRec TWThick = RDSRec GOSUB LoadTWLine NEXT T END IF RDSRec NE '' THEN TWType = 'N+' FOR T = 1 TO COUNT(RDSRec,@VM) + (RDSRec NE '') TWTool = RDSRec TWCode = RDSRec TWTrans = RDSRec TWCnt = RDSRec TWCon = RDSRec TWRes = RDSRec TWRho = RDSRec TWStress = RDSRec TWThick = RDSRec GOSUB LoadTWLine NEXT T END IF RDSRec NE '' THEN TWType = 'P-' FOR T = 1 TO COUNT(RDSRec,@VM) + (RDSRec NE '') TWTool = RDSRec TWCode = RDSRec TWTrans = RDSRec TWCnt = RDSRec TWCon = RDSRec TWRes = RDSRec TWRho = RDSRec TWStress = RDSRec TWThick = RDSRec GOSUB LoadTWLine NEXT T END IF RDSRec NE '' THEN TWType = 'P+' FOR T = 1 TO COUNT(RDSRec,@VM) + (RDSRec NE '') TWTool = RDSRec TWCode = RDSRec TWTrans = RDSRec TWCnt = RDSRec TWCon = RDSRec TWRes = RDSRec TWRho = RDSRec TWStress = RDSRec TWThick = RDSRec GOSUB LoadTWLine NEXT T END IF RDSRec NE '' THEN TWType = 'Prod' FOR T = 1 TO COUNT(RDSRec,@VM) + (RDSRec NE '') TWTool = RDSRec TWCode = RDSRec TWTrans = RDSRec TWCnt = RDSRec TWCon = RDSRec TWRes = RDSRec TWRho = RDSRec TWStress = RDSRec TWThick = RDSRec GOSUB LoadTWLine NEXT T END IF RDSRec NE '' THEN TWType = 'Reclaim' FOR T = 1 TO COUNT(RDSRec,@VM) + (RDSRec NE '') TWTool = RDSRec TWCode = RDSRec TWTrans = RDSRec TWCnt = RDSRec TWCon = RDSRec TWRes = RDSRec TWRho = RDSRec TWStress = RDSRec TWThick = RDSRec GOSUB LoadTWLine NEXT T END RETURN * * * * * * * LoadTWLine: * * * * * * * TWLine += 1 RDSTestRec = TWType RDSTestRec = TWTool RDSTestRec = TWCode RDSTestRec = TWTrans RDSTestRec = TWCnt RDSTestRec = TWCon RDSTestRec = TWRes RDSTestRec = TWRho RDSTestRec = TWStress RDSTestRec = TWThick RETURN * * * * * * * Bail: * * * * * * * Return