Compile function GaNMetrics(ReactRunNo) #pragma precomp SRP_PreCompiler $Insert REACT_RUN_EQUATES $Insert RUN_STAGE_WFR_EQUATES $Insert GAN_CYCLE_TIME_EQUATES $Insert WO_LOG_EQUATES $Insert PROD_VER_EQUATES Declare Subroutine Obj_Tables //ReactRunNo = 345711 Recs = '' RecToWrite = '' //Add in SQL checks for exist. If exists we'll goto update, otherwise we'll write a new record. ReactRunRec = Xlate('REACT_RUN',ReactRunNo, '', 'X') Carr_wfr_ids = ReactRunRec //Wfr_stgs = ReactRunRec Wfr_stgs = ReactRunRec<107> SubPartNo = XLATE('WO_MAT', ReactRunRec, 4, 'X') waferFlags = ReactRunRec<109> WO_NO = ReactRunRec PartNo = XLATE('WO_LOG', WO_NO,WO_LOG_WAFER_TRACK_PART$,'X') ProdVerNo = XLATE('WO_LOG', WO_NO, WO_LOG_PROD_VER_NO$,'X') PSNno = Xlate('PROD_VER',ProdVerNo,PROD_VER_PROC_STEP_PSN$,'X') //Epi Deposition Step RecToWrite = WO_NO RecToWrite = ReactRunRec RecToWrite = ReactRunNo RecToWrite = ReactRunRec RecToWrite = PartNo RecToWrite = PSNno RecToWrite = 'Epi_Deposition' RecToWrite = 'Reactor' RecToWrite = ReactRunRec RecToWrite = OCONV(ReactRunRec,'DT4/^HS') RecToWrite = OCONV(ReactRunRec,'DT4/^HS') RecToWrite = ReactRunRec RecToWrite = ReactRunRec //Recs<1,14> = wfrIDfmt //Recs<1,14> = ReactRunRec<71,a> RecKey = RecToWrite : '-' : RecToWrite: '-' : ReactRunRec Obj_Tables('WriteRec', 'GAN_CYCLE_TIME':@RM:RecKey:@RM:@RM:RecToWrite) i=1 a=1 b=1;// c=Count(Wfr_stgs,@VM) wfrIDfmt = '' //b to c: Ensures we group tools into a group. Makes it easier for parsing. b is the index, c is the amount of different tools For b=1 To c //For each wafer For Each Carr_wfr_id in Carr_wfr_ids using @VM //For each wafer at each stage For Each Wfr_stg in Wfr_stgs using @VM wfrIDfmt = Carr_wfr_id swap '*' with '.' in wfrIDfmt Wfr_stg_rec_key = ReactRunNo:'*':Wfr_stg:'*':wfrIDfmt Wfr_stg_rec = XLATE('RUN_STAGE_WFR',Wfr_stg_rec_key, '', 'X') StopCompare = OConv(Wfr_stg_rec,'DT4/^HS') //Makes sure that the Wafer Stages are grouped together AND that we don't add an entry for the same tool //That also has the same Stop timestamp IF Wfr_stg EQ Wfr_stgs<1,b> AND StopCompare NE Recs then Dtms = Wfr_stg_rec Operators = Wfr_stg_rec InvActions = Wfr_stg_rec Stg_Start = OCONV(Dtms<1,1>, 'DT4/^HS') Stg_Stop = OCONV(Dtms<1,2>, 'DT4/^HS') Stg_Start_Op = Operators<1,1> Stg_Stop_Op = Operators<1,2> //Add to list to track IF Stg_Start NE '' Then Recs = WO_NO Recs = ReactRunRec Recs = ReactRunNo Recs = '' Recs = PartNo Recs = PSNno Recs = Wfr_stg Recs = Wfr_stg_rec Recs = Wfr_stg_rec Recs = Stg_Start Recs = Stg_Stop Recs = Stg_Start_Op Recs = Stg_Stop_Op Recs = ReactRunRec<71,a> RecToWrite = '' RecToWrite = WO_NO RecToWrite = ReactRunRec RecToWrite = ReactRunNo RecToWrite = '' RecToWrite = PartNo RecToWrite = PSNno RecToWrite = Wfr_stg RecToWrite = Wfr_stg_rec RecToWrite = Wfr_stg_rec RecToWrite = Stg_Start RecToWrite = Stg_Stop RecToWrite = Stg_Start_Op RecToWrite = Stg_Stop_Op RecToWrite<14> = ReactRunRec<71> RecKey = RecToWrite : '-' : RecToWrite: '-' : Dtms<1,2> Obj_Tables('WriteRec', 'GAN_CYCLE_TIME':@RM:RecKey:@RM:@RM:RecToWrite) i = i + 1 end end Next Wfr_stg a = a + 1 Next Carr_wfr_id Next b