From ebaaaf3c27df07a6b6e93f438392d6dd6e3de34f Mon Sep 17 00:00:00 2001 From: "Infineon\\StieberD" Date: Mon, 25 Mar 2024 14:13:13 -0700 Subject: [PATCH] testing SRP Git for OI 10 --- LSL2/STPROC/ACTIVE_DIRECTORY_SERVICES.txt | 141 + LSL2/STPROC/CHASE_SERVICES.txt | 154 + LSL2/STPROC/JONATHAN_SERVICES.txt | 769 ++++ LSL2/STPROC/TEST_DAKOTA.txt | 171 + LSL2/STPROC/TEST_DANIEL3.txt | 3962 +++++++++++++++++++++ 5 files changed, 5197 insertions(+) create mode 100644 LSL2/STPROC/ACTIVE_DIRECTORY_SERVICES.txt create mode 100644 LSL2/STPROC/CHASE_SERVICES.txt create mode 100644 LSL2/STPROC/JONATHAN_SERVICES.txt create mode 100644 LSL2/STPROC/TEST_DAKOTA.txt create mode 100644 LSL2/STPROC/TEST_DANIEL3.txt diff --git a/LSL2/STPROC/ACTIVE_DIRECTORY_SERVICES.txt b/LSL2/STPROC/ACTIVE_DIRECTORY_SERVICES.txt new file mode 100644 index 0000000..b699798 --- /dev/null +++ b/LSL2/STPROC/ACTIVE_DIRECTORY_SERVICES.txt @@ -0,0 +1,141 @@ +Compile function Active_Directory_Services(@Service, @Params) +/*********************************************************************************************************************** + + This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written + permission from SRP Computer Solutions, Inc. + + Name : Active_Directory_Services + + Description : Handler program for all module related services. + + Notes : The generic parameters should contain all the necessary information to process the services. Often + this will be information like the data Record and Key ID. + + Parameters : + Service [in] -- Name of the service being requested + Param1-10 [in/out] -- Additional request parameter holders + Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure + + History : (Date, Initials, Notes) + 02/17/23 djs Original programmer. + +***********************************************************************************************************************/ + +#pragma precomp SRP_PreCompiler + +$Insert SERVICE_SETUP +$Insert APP_INSERTS +$Insert REVDOTNETEQUATES + +Declare subroutine Set_Property.Net + +GoToService + +Return Response or "" + +//----------------------------------------------------------------------------- +// SERVICES +//----------------------------------------------------------------------------- + + +Service AuthenticateUser(Username, Password, Domain) + + Authenticated = False$ + DotNetHandle = StartDotNet("","4.0") + DotNetDir = CheckDotNet('4.0'):'\' + AccountMgmtDllPath = DotNetDir:'System.DirectoryServices.AccountManagement.dll' + Set_Property.Net(DotNetHandle, "AssemblyName", AccountMgmtDllPath) + If Not(Get_Status(errCode)) then + Params = 'Domain':@FM:Domain + ParamTypes = 'System.DirectoryServices.AccountManagement.ContextType':@FM:'System.String' + objPC = Create_Class.Net(DotNetHandle, "System.DirectoryServices.AccountManagement.PrincipalContext", 0, Params, ParamTypes) + If Not(Get_Status(errCode)) then + Params = Username:@FM:Password + ParamTypes = 'System.String':@FM:'System.String' + Authenticated = Send_Message.Net(objPC, 'ValidateCredentials', Params, ParamTypes, 0) + Swap 'True' with True$ in Authenticated + Swap 'False' with False$ in Authenticated + Free_Class.Net(objPC) + end + end + Response = Authenticated + +end service + + +Service GetADGroups(Username, Domain) + + ADGroups = '' + DotNetHandle = StartDotNet("","4.0") + DotNetDir = CheckDotNet('4.0'):'\' + AccountMgmtDllPath = DotNetDir:'System.DirectoryServices.AccountManagement.dll' + Set_Property.Net(DotNetHandle, "AssemblyName", AccountMgmtDllPath) + If Not(Get_Status(errCode)) then + Params = 'Domain':@FM:'Infineon' + ParamTypes = 'System.DirectoryServices.AccountManagement.ContextType':@FM:'System.String' + objPC = Create_Class.Net(DotNetHandle, "System.DirectoryServices.AccountManagement.PrincipalContext", 0, Params, ParamTypes) + If Not(Get_Status(errCode)) then + objUserPrincipal = Create_Class.Net(DotNetHandle, "System.DirectoryServices.AccountManagement.UserPrincipal", 0, objPC, 'RevDotNet') + If Not(Get_Status(errCode)) then + Set_Property.Net(objUserPrincipal, 'Name', Username) + objPrinSearcher = Create_Class.Net(DotNetHandle, "System.DirectoryServices.AccountManagement.PrincipalSearcher", 0, objUserPrincipal, 'RevDotNet') + If Not(Get_Status(errCode)) then + objPrin = Send_Message.Net(objPrinSearcher, 'FindOne', '', '', 1) + If Not(Get_Status(errCode)) then + Name = Get_Property.Net(objPrin, 'Name', 0) + objPrinSearchResult = Send_Message.Net(objPrin, 'GetGroups', '', '', 1) + If Not(Get_Status(errCode)) then + objEnum = Send_Message.Net(objPrinSearchResult, 'GetEnumerator', '', '', 1) + If Not(Get_Status(errCode)) then + Loop + Done = Send_Message.Net(objEnum, 'MoveNext', '', '', 0) + Until Done EQ 'False' + If Not(Get_Status(errCode)) then + objCurrPrin = Get_Property.Net(objEnum, 'Current', 1) + If Not(Get_Status(errCode)) then + CurrPrinName = Get_Property.Net(objCurrPrin, 'Name', 0) + If CurrPrinName NE 'Domain Users' then ADGroups<-1> = CurrPrinName + Free_Class.Net(objCurrPrin) + end + end + Repeat + Free_Class.Net(objEnum) + end + Free_Class.Net(objPrinSearchResult) + end + Free_Class.Net(objPrin) + end + Free_class.Net(objPrinSearcher) + end + Free_Class.Net(objUserPrincipal) + end + Free_Class.Net(objPC) + end + end + Response = ADGroups + +End Service + + +Service GetComputerDomain() + + Domain = '' + DotNetHandle = StartDotNet("","4.0") + DotNetDir = CheckDotNet('4.0'):'\' + DirDllPath = DotNetDir:'System.DirectoryServices.dll' + Set_Property.Net(DotNetHandle, "AssemblyName", DirDllPath) + If Not(Get_Status(errCode)) then + objDomain = Create_Class.Net(DotNetHandle, "System.DirectoryServices.ActiveDirectory.Domain", 0, '', '') + If Not(Get_status(errCode)) then + ObjCompDomain = Send_Message.Net(objDomain, 'GetComputerDomain', '', '', True$) + If Not(Get_Status(errCode)) then + Domain = Get_Property.Net(objCompDomAin, 'Name', False$) + Free_class.Net(objCompDomain) + end + Free_Class.Net(objDomain) + end + end + Response = Domain + +end service + diff --git a/LSL2/STPROC/CHASE_SERVICES.txt b/LSL2/STPROC/CHASE_SERVICES.txt new file mode 100644 index 0000000..21b8652 --- /dev/null +++ b/LSL2/STPROC/CHASE_SERVICES.txt @@ -0,0 +1,154 @@ +Compile function Chase_Services(@Service, @Params) +#pragma precomp SRP_PreCompiler +$insert LOGICAL + +$Insert RDS_EQUATES +$Insert REACTOR_EQUATES +$Insert PRS_STAGE_EQUATES +$Insert PROD_SPEC_EQUATES + +equ WOCust$ to 2 + +Declare function Rds_Services, Database_Services, Extract_SI_Keys, SRP_Clean_Array +Declare subroutine Database_Services, Clean_Insp_Services, Extract_SI_Keys + +GoToService + +Return Response or "" + +//----------------------------------------------------------------------------- +// SERVICES +//----------------------------------------------------------------------------- + +Service UpdateLoadedPsnWithPostStage() + + activeWOs = '' + + // Get all the WOs from the CONFIG table + reactorStart = 20 + reactorEnd = 79 + For reactorNum = reactorStart to reactorEnd + ReactType = Xlate('REACTOR', reactorNum, REACTOR_REACT_TYPE$, 'X') + If ReactType NE 'EPP' then + ReactorConfigKey = 'WO_DAILY_SCHED':reactorNum + WoNo = Field(Xlate('CONFIG', ReactorConfigKey, WOCust$, 'X'), ' ', 1) + If WoNo NE '' then + activeWos := WoNo + If reactorNum < reactorEnd then activeWos := @FM + end + end + Next reactorNum + + For WoIdx = 1 to Len(activeWOs) + // Get the RDSs for current WO + currentWO = activeWOs + RDSColumns = '' + RDSColumns<0, 1> = 'SEQ' + RdsList = RDS_Services('GetRDSData', currentWO, RDSColumns, False$, '') + // Loop through the RDSs + For rdsIdx = 1 to Len(RdsList) + // If RDS is not FQA, and is in LOAD or UNLOAD run stage, then update the PSN + rdsNum = RdsList + FqaSigned = Rds_Services("GetFinalQAStatus", rdsNum) + RunStatus = Xlate('REACT_RUN', rdsNum, 'RUN_STATUS', 'X') + If (Not(FqaSigned)) and ((RunStatus _EQC 'load') or (RunStatus _EQC 'unload')) then + PsnNo = Xlate('RDS', rdsNum, RDS_PROD_SPEC_ID$, 'X') + specRec = Database_Services('ReadDataRow', 'PROD_SPEC', PsnNo) + currentStages = specRec + Swap @VM with @FM in currentStages + // Determine if a post stage already exists + postIdx = 0 + For stageIdx = 1 to Len(currentStages) + currentStage = currentStages[-4, 4] + If currentStage _EQC 'post' then + postIdx = stageIdx + end + Until postIdx GT 0 + Next stageIdx + postStageRec = '' + stageRecKey = PsnNo:'*':'POST' + // If post stage already exists, get it + If postIdx GT 0 then + postStageRec = Database_Services("ReadDataRow", "PRS_STAGE", stageRecKey) + end else + // otherwise, add the post stage key to the spec + currentStageKeys = specRec + updatedStageKeys = currentStageKeys:@VM:stageRecKey + specRec = updatedStageKeys + Database_Services('WriteDataRow', 'PROD_SPEC', PsnNo, specRec) + end + // Do not override existing specs if post stage already exists + currentSurfSigReq = postStageRec + If currentSurfSigReq EQ '' then postStageRec = False$ + currentSurfRecipe = postStageRec + If currentSurfRecipe EQ '' then + // construct and apply the correct recipe + reactorNum = Xlate('RDS', rdsNum, RDS_REACTOR$, 'X') + waferSize = Xlate('CONFIG', 'WO_DAILY_SCHED':reactorNum, 4, 'X')[1, 1] + surfScanRecipe = waferSize : 'INCLEAN' + postStageRec = surfScanRecipe + end + // copy other surf scan specs from LWI stage + lwiStageRecKey = PsnNo:'*':'LWI' + lwiSurfHaze = Xlate('PRS_STAGE', lwiStageRecKey, PRS_STAGE_SURF_HAZE$, 'X')<1, 1> + currentSurfHaze = postStageRec + If currentSurfHaze EQ '' then postStageRec = lwiSurfHaze + lwiSurfDefects = Xlate('PRS_STAGE', lwiStageRecKey, PRS_STAGE_SURF_DEFECTS$, 'X')<1, 1> + currentSurfDefects = postStageRec + If currentSurfDefects EQ '' then postStageRec = lwiSurfDefects + lwiSampleQty = Xlate('PRS_STAGE', lwiStageRecKey, PRS_STAGE_SS_SAMP_QTY$, 'X')<1, 1> + currentSampleQty = postStageRec + If currentSampleQty EQ '' then postStageRec = lwiSampleQty + Database_Services('WriteDataRow', 'PRS_STAGE', stageRecKey, postStageRec) + + // push out the spec changes + runOrderNum = Xlate('RDS', rdsNum, 'RUN_ORDER_NUM', 'X') + woMatKey = currentWO : '*' : runOrderNum + Clean_Insp_Services('UpdateAllCleanInsp', woMatKey) + end + Next rdsIdx + Next idx + +End Service + + +Service AddAdHocPostCleanToPsnsByCustomerId(custId, cleansRecipe, TencorRecipe, sd, sh) + ProdVerKeys = '' + Extract_SI_Keys('PROD_VER', 'CUST_NO', custId, ProdVerKeys) + If ProdVerKeys NE '' then + PSNs = Xlate('PROD_VER', ProdVerKeys, 'PSN_ID', 'X') + UniquePsns = SRP_Clean_Array(PSNs, @VM, 'UNIQUE') + For each PsnNo in UniquePsns using @VM setting Idx + PsnStatus = Xlate('PROD_SPEC', PsnNo, PROD_SPEC_STATUS$, 'X') + If PsnStatus EQ 'A' then + postStageRecKey = PsnNo:'*':'POST' + postStageRec = Database_Services("ReadDataRow", "PRS_STAGE", postStageRecKey) + debug +* postCleanTool = 'AKRION1' +* currentPostCleanTool = postStageRec +* If currentPostCleanTool EQ '' then postStageRec = postCleanTool + + postCleansRecipe = cleansRecipe + currentPostCleanRecipe = postStageRec + If currentPostCleanRecipe EQ '' then postStageRec = postCleansRecipe + + postSurfScanRecipe = TencorRecipe + currentPostSurfScanRecipe = postStageRec + If currentPostSurfScanRecipe EQ '' then postStageRec = postSurfScanRecipe + + surfHaze = sh + currentPostSurfHaze = postStageRec + If currentPostSurfHaze EQ '' then postStageRec = surfHaze + + surfDefects = sd + currentPostSurfDefects = postStageRec<1, 1> + If currentPostSurfDefects EQ '' then postStageRec = surfDefects + + Database_Services('WriteDataRow', 'PRS_STAGE', postStageRecKey, postStageRec) + end + Next PsnNo + end +end service + + + diff --git a/LSL2/STPROC/JONATHAN_SERVICES.txt b/LSL2/STPROC/JONATHAN_SERVICES.txt new file mode 100644 index 0000000..df66961 --- /dev/null +++ b/LSL2/STPROC/JONATHAN_SERVICES.txt @@ -0,0 +1,769 @@ +Compile function JONATHAN_Services(@Service, @Params) +#pragma precomp SRP_PreCompiler + +Declare function Gan_Services, Obj_Notes_Sent, msg, Check_Notes, Jonathan_Services, Database_Services, SRP_Datetime +Declare function Lsl_Users_Services, SRP_Time, RList, Error_Services, Obj_Wo_Mat, Pm_Services, Date_Services, Test_Run_Services +Declare function Reactor_Services, Reactor_Log_Services +Declare subroutine Start_Window, RList, Set_Status, Database_Services, Obj_Sap, Sap_Services, Btree.Extract +Declare subroutine Reactor_Services + +$insert LOGICAL +$insert NOTE_PTRS_EQU +$insert MSG_EQUATES +$Insert APP_INSERTS +$Insert RLIST_EQUATES +$Insert WO_LOG_EQUATES +$Insert RDS_EQUATES +$Insert WO_STEP_EQUATES +$Insert WO_MAT_QA_EQUATES +$Insert REACT_RUN_EQUATES +$Insert RDS_LAYER_EQUATES +$Insert RDS_TEST_EQUATES +$Insert PM_EQUATES +$Insert PM_SPEC_EQUATES +$Insert WO_MAT_EQUATES +$Insert WM_OUT_EQUATES +/*$Insert TEST_RUN_EQUATES +$Insert TEST_RUN_WAFER_EQUATES +$Insert TEST_WAFER_PROD_EQUATES +$Insert TEST_RUN_TYPE_EQUATES +*/ +$Insert REACTOR_EQUATES + + +GoToService + +Return Response or "" + +//----------------------------------------------------------------------------- +// SERVICES +//----------------------------------------------------------------------------- + +Service GetReactorNumbersByType() + Debug + test = Reactor_Services('GetReactorNumbers', 'ASM') + test := @FM : Reactor_Services('GetReactorNumbers', 'ASM+') +end service + +Service SetReactorMetrics() + Reactors = Reactor_Services('GetReactorNumbers') + table = 'REACTOR_LOG' + for each ReactorNo in Reactors using @FM setting rPos + LatestTubeChangeRLIDASM = '' + LatestTubeChangeASMDTM = '' + LatestSuscChangRLIDASM = '' + LatestArmChangeIDASM = '' + LatestSuscChangRLIDHTR = '' + LatestArmChangeIDHTR = '' + ReactorType = XLATE('REACTOR', ReactorNo, REACTOR_REACT_TYPE$, 'X') + + //Reset all metrics to 0 + ReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + ReactorRec = 0; + ReactorRec = 0; + ReactorRec = 0; + ReactorRec = 0; + ReactorRec = 0; + ReactorRec = 0; + ReactorRec = 0; + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, ReactorRec) + + + Begin Case + Case ReactorType EQ 'ASM' OR ReactorType EQ 'ASM+' + //Susceptor 699 + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '699')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + + CurrTubeBellJarThk = OldReactorRec + CurrTubeBellJarCnt = OldReactorRec + CurrSuscThk = OldReactorRec + CurrSuscWfrCnt = OldReactorRec + CurrLowerQuartzThk = OldReactorRec + CurrLowerQuartzWfr = OldReactorRec + + // Set values to 0 if blank + If CurrTubeBellJarThk = '' then CurrTubeBellJarThk = 0 + If CurrTubeBellJarCnt = '' then CurrTubeBellJarCnt = 0 + If CurrSuscThk = '' then CurrSuscThk = 0 + If CurrSuscWfrCnt = '' then CurrSuscWfrCnt = 0 + If CurrLowerQuartzThk = '' then CurrLowerQuartzThk = 0 + If CurrLowerQuartzWfr = '' then CurrLowerQuartzWfr = 0 + + RDSNo = RDSRow<1,1> + TargetThickness = Xlate('RDS', RDSNo, 'THICK_TARGET_TOT', 'X', '') + TargetThickness = OConv(TargetThickness, 'MD3') + WaferCount = XLATE('RDS', RDSNo, RDS_WAFERS_IN$, 'X') + ThkAddition = WaferCount * TargetThickness + NewReactorRec = OldReactorRec + NewReactorRec = CurrSuscThk + ThkAddition + NewReactorRec = CurrSuscWfrCnt + WaferCount + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + + //TubeChange 240 + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '240')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + + CurrTubeBellJarThk = OldReactorRec + CurrTubeBellJarCnt = OldReactorRec + + // Set values to 0 if blank + If CurrTubeBellJarThk = '' then CurrTubeBellJarThk = 0 + If CurrTubeBellJarCnt = '' then CurrTubeBellJarCnt = 0 + + RDSNo = RDSRow<1,1> + TargetThickness = Xlate('RDS', RDSNo, 'THICK_TARGET_TOT', 'X', '') + TargetThickness = OConv(TargetThickness, 'MD3') + WaferCount = XLATE('RDS', RDSNo, RDS_WAFERS_IN$, 'X') + ThkAddition = WaferCount * TargetThickness + NewReactorRec = OldReactorRec + NewReactorRec = CurrTubeBellJarThk + ThkAddition + NewReactorRec = CurrTubeBellJarCnt + WaferCount + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + //Arms 21 + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '21')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + CurrArmsWfrCnt = OldReactorRec + If CurrArmsWfrCnt = '' then CurrArmsWfrCnt = 0 + RDSNo = RDSRow<1,1> + WaferCount = XLATE('RDS', RDSNo, RDS_WAFERS_IN$, 'X') + NewReactorRec = OldReactorRec + NewReactorRec = CurrArmsWfrCnt + WaferCount + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + Case ReactorType EQ 'HTR' + //Susceptor 699 + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '699')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + + CurrSuscThk = OldReactorRec + CurrSuscWfrCnt = OldReactorRec + + // Set values to 0 if blank + If CurrSuscThk = '' then CurrSuscThk = 0 + If CurrSuscWfrCnt = '' then CurrSuscWfrCnt = 0 + + RDSNo = RDSRow<1,1> + TargetThickness = Xlate('RDS', RDSNo, 'THICK_TARGET_TOT', 'X', '') + TargetThickness = OConv(TargetThickness, 'MD3') + WaferCount = XLATE('RDS', RDSNo, RDS_WAFERS_IN$, 'X') + CntAddition = (WaferCount / 5) + ThkAddition = (WaferCount / 5) * TargetThickness + NewReactorRec = OldReactorRec + NewReactorRec = CurrSuscThk + ThkAddition + NewReactorRec = CurrSuscWfrCnt + CntAddition + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + + //TubeChange 1280 + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '1280')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + + CurrTubeBellJarThk = OldReactorRec + CurrTubeBellJarCnt = OldReactorRec + + // Set values to 0 if blank + If CurrTubeBellJarThk = '' then CurrTubeBellJarThk = 0 + If CurrTubeBellJarCnt = '' then CurrTubeBellJarCnt = 0 + + RDSNo = RDSRow<1,1> + TargetThickness = Xlate('RDS', RDSNo, 'THICK_TARGET_TOT', 'X', '') + TargetThickness = OConv(TargetThickness, 'MD3') + WaferCount = XLATE('RDS', RDSNo, RDS_WAFERS_IN$, 'X') + CntAddition = (WaferCount / 5) + ThkAddition = (WaferCount / 5) * TargetThickness + NewReactorRec = OldReactorRec + NewReactorRec = CurrTubeBellJarThk + ThkAddition + NewReactorRec = CurrTubeBellJarCnt + CntAddition + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + + //Arms 21 + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '21')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + CurrArmsWfrCnt = OldReactorRec + If CurrArmsWfrCnt = '' then CurrArmsWfrCnt = 0 + RDSNo = RDSRow<1,1> + WaferCount = XLATE('RDS', RDSNo, RDS_WAFERS_IN$, 'X') + NewReactorRec = OldReactorRec + NewReactorRec = CurrArmsWfrCnt + WaferCount + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + + Case ReactorType EQ 'EPP' + + //BellJar 1092 + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '1092')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + RDSNo = RDSRow<1,1> + TargetThickness = Xlate('RDS', RDSNo, 'THICK_TARGET_TOT', 'X', '') + TargetThickness = OConv(TargetThickness, 'MD3') + NewReactorRec = OldReactorRec + CurrTubeBellJarThk = OldReactorRec + CurrTubeBellJarCnt = OldReactorRec + + // Set values to 0 if blank + If CurrTubeBellJarThk = '' then CurrTubeBellJarThk = 0 + If CurrTubeBellJarCnt = '' then CurrTubeBellJarCnt = 0 + NewReactorRec = CurrTubeBellJarThk + TargetThickness + NewReactorRec = CurrTubeBellJarCnt + 1 + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + + + //1067 Lower Quartz + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '1067')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + RDSNo = RDSRow<1,1> + TargetThickness = Xlate('RDS', RDSNo, 'THICK_TARGET_TOT', 'X', '') + TargetThickness = OConv(TargetThickness, 'MD3') + NewReactorRec = OldReactorRec + CurrLowerQuartzThk = OldReactorRec + CurrLowerQuartzCnt = OldReactorRec + + // Set values to 0 if blank + If CurrLowerQuartzThk = '' then CurrLowerQuartzThk = 0 + If CurrLowerQuartzCnt = '' then CurrLowerQuartzCnt = 0 + NewReactorRec = CurrLowerQuartzThk + TargetThickness + NewReactorRec = CurrLowerQuartzCnt + 1 + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + + //699 Susceptor + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '699')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + + for each RDSRow in RDSList using @FM + OldReactorRec = Database_Services('ReadDataRow', 'REACTOR', ReactorNo) + RDSNo = RDSRow<1,1> + TargetThickness = Xlate('RDS', RDSNo, 'THICK_TARGET_TOT', 'X', '') + TargetThickness = OConv(TargetThickness, 'MD3') + NewReactorRec = OldReactorRec + CurrSuscThk = OldReactorRec + CurrSuscCnt = OldReactorRec + + // Set values to 0 if blank + If CurrSuscThk = '' then CurrSuscThk = 0 + If CurrSuscCnt = '' then CurrSuscCnt = 0 + NewReactorRec = CurrSuscThk + TargetThickness + NewReactorRec = CurrSuscCnt + 1 + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + Next RDSRow + LatestSusceptorChangeRLID = Reactor_Log_Services('GetLogsByReactorAndServID', ReactorNo, '699')<1,4> + RLDTM = XLATE('REACTOR_LOG', LatestSusceptorChangeRLID, 'END_DTM', 'X') + RDSList = Reactor_Services('GetReactorCassLoadHistoryRange', ReactorNo, RLDTM, SRP_Datetime('Now')) + NewReactorRec = CurrSuscThk + TargetThickness + NewReactorRec = CurrSuscWfrCnt + 1 + Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec) + End Case + Next ReactorNo +end service + +Service LaunchWindow() + Start_Window('NDW_VIEW_TEST_RUN','', '10000001') +end service + +Service GetTestRunObj(TestRunID) + debug + TestRunObj = '' + TestRunRec = Test_Run_Services('GetTestRunById', TestRunID) + //Start getting translated values for object + RunDTM = OConv(TestRunRec, 'DT') + ReasonForTest = Xlate('TEST_RUN_TYPE', TestRunRec, TEST_RUN_TYPE_RUN_TYPE$, 'X') + RelatedRDS = TestRunRec + RelatedPSN = TestRunRec + EqpType = TestRunRec + EqpID = TestRunRec + TWKeys = TestRunRec + TWUsageProds = '' + TWUsageQtys = '' + for each TWKey in TWKeys using @VM setting tPos + TRWRec = Test_Run_Services('GetTestRunWaferByID', TWKey) + TestWaferProdName = XLATE('TEST_WAFER_PROD', TRWRec, TEST_WAFER_PROD_PART_NAME$, 'X') + Locate TestWaferProdName in TWUsageProds setting iPos then + TWUsageProds<1,iPos> = TestWaferProdName + TWUsageQtys<1,iPos> = TWUsageQtys<1,iPos> + 1 + end else + TWUsageProds<1,-1> = TestWaferProdName + TWUsageQtys<1,-1> = 1 + end + Next TWKey +end service + +Service WFR_STATUS(WMOKey) + + Result = '' + WfrStatus = '' + WMOSlots = Xlate('WM_OUT', WMOKey, 'RDS', 'X') + WMOZoneProfile = Xlate('WM_OUT', WMOKey, WM_OUT_ZONE$, 'X') + WMORDSTestKeys = XLATE('WM_OUT', WMOKey, 'CASS_RDS_MET_KEYS', 'X') + for each RDSNo in WMOSlots using @VM setting sPos + + ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo) + SlotZone = Xlate('WM_OUT', WMOKey, WM_OUT_ZONE$, 'X')<1, sPos> + //Get the RDS_Test for this slot. + //Find the right RDS Test Key + ThisSlotRDSTestKeys = '' + for each RDSTestKey in WMORDSTestKeys using @VM + RDSTestRec = Database_Services('ReadDataRow', 'RDS_TEST', RDSTestKey) + If RDSTestRec EQ SlotZone AND RDSTestRec EQ RDSNo then + ThisSlotRDSTestKeys<1, -1> = RDSTestKey + + end + + Next RDSTestKey + RDSTestDataEntered = XLATE('RDS_TEST', ThisSlotRDSTestKeys, 'MET_ENTERED', 'X') + If RDSTestDataEntered NE '' then + Locate False$ in RDSTestDataEntered using @VM setting iPos then Result = 'ULMET' else + MetOutOfSpec = Sum(Xlate('RDS_TEST', ThisSlotRDSTestKeys, 'OUT_OF_SPEC', 'X')) + If MetOutOfSpec then + //Check for an NCR + SlotNcr = Xlate('WM_OUT', WMOKey, 'WM_OUT_SLOT_NCR', 'X')<1, sPos> + If SlotNcr NE '' then + MetOutOfSpec = False$ + end + end + If MetOutOfSpec then + Result = 'SPEC' + end else + Result = 'ULOAD' + end + end + end else + Result = 'ULMET' + end + + WfrStatus = Result + Next RDSNo + debug +end service + +Service Test() + Debug + RDSTestKeys = XLATE('WM_OUT', '172172*1*10', 'CASS_RDS_MET_KEYS', 'X') + TestDataEntered = XLATE('RDS_TEST', RDSTestKeys, 'MET_ENTERED', 'X') + //WMOWafers = XLATE('WM_OUT', '172172*1*10', 'WFR_STATUS', 'X') +end service + +Service TestEquates() + debug + test = WO_MAT_MAKEUP_BOX$ +end service + +Service GetWWInfo() + debug + WWInfo = Date_Services('GetWeekNum', '20345.12345') +end service + +Service PMINformation() + +end service + +Service RGBToInt() + debug + R = 242 + G = 156 + B = 63 + IntegerVal = (B * 65536) + (G * 256) + R +end service + +Service TestPMMFS() + Debug + + PMRec = Database_Services('ReadDataRow', 'PM', '10115') + Late = XLATE('PM', '10115', 'LATE', 'X') + SchedQty = XLATE('PM_SPEC', PMRec, 'LATE_START_QTY', 'X') + CompQty = PMRec + +end service + +Service AddComments() + debug + Response = Dialog_Box('NDW_ADD_COMMENT', @WINDOW) +end service + +Service Get5SPMs() + test = Pm_Services('Get5SPMs', True$) +end service + + +Service GetOnShiftSupervisor() + debug + Response = Lsl_Users_Services('GetShiftByDate', '8/23/2023 06:00') +end service + +Service TriggerCassComp(WOMatKey) + debug + SAP_Services('AddCassCompTransaction', WOMatKey) +end service + +Service TestGRProps(WOMatKey) + *172174 + *1 + debug + WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) + GRProps = obj_WO_Mat('GetGRProps',WOMatKey:@RM:WOMatRec) + +end service + +Service TriggerScrap(WorkOrderNo, CassNo, TransQty) + //172172 + //1 + //2 + obj_SAP('AddTransaction','SCRAP_IN':@RM:WorkOrderNo:@RM:CassNo:@RM:TransQty) +end service + +Service TriggerBatchMove + +end service + +Service TestOEE + keyId = '20259*35*5117*U442' + stopDTM = XLATE('DAILY_PERFORMANCE_REPORT', keyId, 'STOP_DTM', 'X') + OEE = XLATE('DAILY_PERFORMANCE_REPORT', keyId, 'OEE_CALCULATION', 'X') + Response = OEE +end service + +Service TestZero() + debug + ShouldBeZero = 1 - 1 +end service + +Service IsRDSMetOutOfSpec(RDSNo) + debug + *RDSNo = '586181' + RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo) + RDSWaferZones = RDSRec + ReactorType = Xlate('RDS', RDSNo, 'REACTOR_TYPE', 'X') + IsEpiPro = Xlate('RDS', RDSNo, 'REACTOR_TYPE', 'X') EQ 'EPP' + LSKeys = XLATE('REACT_RUN',RDSNo, REACT_RUN_RDS_LAYER_KEYS$, 'X') + for each LayerSpecKey in LSKeys using @VM setting lPos + LSRec = Database_Services('ReadDataRow', 'RDS_LAYER', LayerSpecKey) + IsMetOOS = XLATE('RDS_LAYER',LayerSpecKey,'TEST_OUT_OF_SPEC','X')<1, lPos> + IF IsMetOOS then + If IsEpiPro then + RDSTestKey = LSRec + RDSTestZone = XLate('RDS_TEST', RDSTestKey, RDS_TEST_ZONE$, 'X') + RDSTestLayer = XLate('RDS_TEST', RDSTestKey, RDS_TEST_LS_ID$, 'X') + WafersInZone = '' + + for each WaferZone in RDSWaferZones using @VM setting wPos + If WaferZone EQ RDSTestZone then + WafersInZone<-1> = wPos + end + Next WaferZone + Response = RDSTestLayer : ' Zone ' : RDSTestZone : ' Out of Spec' + end else + Response = 'Out of Spec' + end + end + + Next LayerSpec +* TestOutOfSpec = XLATE('RDS_LAYER',LSKeys,'TEST_OUT_OF_SPEC','X') +* MetOutOfSpec = SUM(XLATE('RDS_LAYER',LSKeys,'TEST_OUT_OF_SPEC','X')) + + + +end service + + +Service TestCOMB_Status() + debug + + + RDSNo = '586181' + RDSWOMatKey = XLATE('RDS', RDSNo, 'WO_MAT_KEY', 'X') + WOMatRepStatus = XLATE('WO_MAT',RDSWOMatKey,'REP_STATUS','X') + RunStatus = XLATE('REACT_RUN',RDSNo,'RUN_STATUS','X') + RunStatus = OCONV(RunStatus,'[RUN_STATUS_CONV]') +Ans = '' +BEGIN CASE + CASE WOMatRepStatus NE '' AND RunStatus NE '' + Ans = WOMatRepStatus + + CASE WOMatRepStatus = '' AND RunStatus NE '' + Ans = RunStatus + + CASE WOMatRepStatus NE '' AND RunStatus = '' + Ans = WOMatRepStatus + + CASE 1 + Ans = '' +END CASE + CombStatus = Xlate('RDS', RDSNo, 'COMB_STATUS', 'X') + Response = CombStatus +end service + +Service TestChatGPT() + Stop +end service + +Service getWOMat() + debug + effectedCassettes = '' + for WONo = 171809 to 172010 + for CassNo = 1 to 99 + WOMatKey = WONo : '*' : CassNo + WOMatQaRec = Database_Services('ReadDataRow', 'WO_MAT_QA', WOMatKey) + Profiles = WOMatQaRec + DataPoints = WOMatQARec + For each Profile in Profiles using @VM setting ProfIndex + If Profile EQ '1THICK_ONLY' then + + List = DataPoints<1, ProfIndex> + IF DCOUNT(List, @SVM) LT 5 AND DCOUNT(List, @SVM) GT 0 then + debug + EffectedCassettes<-1> = WOMatKey : ',' : XLATE('WO_MAT', WOMatKey, 'RDS_NO', 'X') : CRLF$ + end + end + + Next Profile + + + Next CassNo + Next WONo + OSWrite effectedCassettes To 'C:\users\ecouellette\desktop\effectedCassettes.csv' +end service + +Service ChangeCustNoByWO(WONo, NewCustNo, NewProdVerNo, NewPSNo) + // Update WO_LOG record + WOLogRec = Database_Services('ReadDataRow', 'WO_LOG', WONo) + If Error_Services('NoError') then + WOLogRec = NewCustNo + WOLogRec = NewProdVerNo + Database_Services('WriteDataRow', 'WO_LOG', WONo, WOLogRec, True$, False$, True$) + If Error_Services('NoError') then + WOStepKey = WONo:'*1' + // Update WO_STEP record + WOStepRec = Database_Services('ReadDataRow', 'WO_STEP', WOStepKey) + If Error_Services('NoError') then + WOStepRec = NewPSNo + Database_Services('WriteDataRow', 'WO_STEP', WOStepKey, WOStepRec, True$, False$, True$) + If Error_Services('NoError') then + // Update RDS Keys + RDSKeys = Xlate('WO_STEP', WOStepKey, 'RDS_KEY', 'X') + If RDSKeys NE '' then + For each RDSKey in RDSKeys using @VM setting vPos + RDSRec = Database_Services('ReadDataRow', 'RDS', RDSKey) + If Error_Services('NoError') then + RDSRec = NewCustNo + RDSRec = NewPSNo + Database_Services('WriteDataRow', 'RDS', RDSKey, RDSRec, True$, False$, True$) + end + Until Error_Services('HasError') + Next RDSKey + end + end + end + end + end + If Error_Services('HasError') then + Error_Services('DisplayError') + end + +return +end service + +Service GetRDSMovesByDays(Day, FilePath) + + SelectSent = 'SELECT RDS WITH DATE_OUT EQ ':QUOTE(Day) + Set_Status(0) + RList(SelectSent, TARGET_ACTIVELIST$, "", "", "") + + + rdsArray = '' + IF @RecCount then + EoF = 0 + NumKeys = @RecCount + Cnt = 0 + + Loop + ReadNext rds Else EoF = 1 + until EoF + rdsMoves = XLATE('RDS', rds, 'WAFERS_IN', 'X') + rdsArray := rds : ',' : rdsMoves : CRLF$ + Repeat + + end + OSWrite rdsArray to FilePath + ClearSelect TARGET_ACTIVELIST$ +end service + +Service DetermineNearShiftChange + debug + + CurrTime = 64320 + CurrHour = SRP_TIME('Hour', CurrTime) +end service + +Service OutPutSchedule(StartDate, EndDate) + debug + OutputData = '' + StartDateConv = IConv(StartDate, 'D') + EndDateConv = IConv(EndDate, 'D') + + for i = StartDateConv to EndDateConv + //DayStartDTM = i : '.' : 21600 + //NightStartDTM = i : '.' : 64800 + DayStartDTM = SRP_Datetime('AddHours', i, 7) + NightStartDTM = SRP_Datetime('AddHours', i, 18) + + DayShift = Lsl_Users_Services('GetShiftByDate', OCONV(DayStartDTM, 'DT'))<1,1> + NightShift = Lsl_Users_Services('GetShiftByDate', OCONV(NightStartDTM, 'DT'))<1,1> + OutputData := OConv(i, 'D4/H') : ',' : DayShift : ' and ' : NightShift : CRLF$ + Next i + OSWrite OutputData to 'C:\Users\MESOuellette\Desktop\ShiftCalendar.csv' +end service + +Service TestMassDates() + OutputData = '' + ExpectedCalRec = Database_Services('ReadDataRow', 'SYSLISTS', 'CAL_EXPECTED') + for i = 1 to DCOUNT(ExpectedCalRec<1>, @VM) + Dtm = ExpectedCalRec<1, i> + ExpectedShift = ExpectedCalRec<2, i> + ReturnedShift = Lsl_Users_Services('GetShiftByDate', Dtm)<1,1> + Pass = (ExpectedShift EQ ReturnedShift) + + ExpectedCalRec<3,i> = ReturnedShift + ExpectedCalRec<4,i> = Pass + OutputData := Dtm : ',' : ExpectedShift : ',' : ReturnedShift : ',' : Pass : CRLF$ + Next i + OSWrite OutputData to 'C:\Users\MESOuellette\Desktop\CalDataTestResults.csv' +end service + +Service TestShiftCalendar + debug + shiftCalData = '' + for date = 20090 to 20454 + + DayShift = SRP_Datetime('AddHours', date, 12) + NightShift = SRP_Datetime('AddHours', DayShift, 11) + + OnShiftDay = Lsl_Users_Services('GetShiftByDate', OCONV(DayShift, 'DT'), 1) + OnShiftNight = Lsl_Users_Services('GetShiftByDate', OCONV(NightShift, 'DT'), 1) + ShiftCalData := OCONV(DayShift, 'DT') : ',' : OnShiftDay<1,1> : ',' : OnShiftNight : CRLF$ + Next date + + OSWrite shiftCalData to 'C:\Users\MESOuellette\Desktop\CalData.csv' +end service + +Service GetInboundPending + debug + rv = Set_Status(0) + LookBack = 15 /* Days */ + StartDate = OCONV(Date()-LookBack, 'D4/') +* SelectStatement = "SELECT WO_MAT WITH SAP_TX_DT >= ": Quote(StartDate) :" AND WITHOUT SAP_BATCH_NO" + RowCount = 0 + SelectStatement = "SELECT WO_MAT WITH SAP_BATCH_NO EQ ''" + RList(SelectStatement, 5) + If @List_Active EQ 3 then + SelectStatement = "SELECT WO_MAT WITH SAP_TX_DT >= ": Quote(StartDate) + RList(SelectStatement, 5) + If @List_Active EQ 3 then + EOF = False$ + Loop + ReadNext KeyID else EOF = True$ + Until EOF + WOMatRow = Database_Services('ReadDataRow', 'WO_MAT', KeyID) + If WOMatRow<87> EQ '' then RowCount += 1 + Repeat + end + end +end service + +Service CheckForNew() + +Response = True$ + if xlate( 'NOTE_PTRS', @user4, 'NEW_MESSAGES', 'X' ) then + NotePtrRec = xlate( 'NOTE_PTRS', @user4, '', 'X' ) + LOCATE 'Yes' in NotePtrRec using @VM setting mPos then + * the top one is new meaning they got a new one + Response = True$ + end else + Response = False$ + end + end +end service + +Service GetNewNotes() + debug + void = Jonathan_Services('CheckForNew') +end service + +Service TestGit() + debug +end service + +Service TestMessages() + debug + if xlate( 'NOTE_PTRS', @user4, 'NEW_MESSAGES', 'X' ) then + NotePtrRec = xlate( 'NOTE_PTRS', @user4, '', 'X' ) + if NotePtrRec = 'Yes' then + * the top one is new meaning they got a new one + MsgInfo = '' + MsgInfo = '!' + Mtext = 'You have a new message from ':NotePtrRec:'.' + MsgInfo = MText + MsgInfo = -2 + MsgInfo = -2 + Void = msg( '', MsgInfo ) + end + end + + NotesSent = obj_Notes_Sent('GetUserKeys','LEHRICH') + NewMessages = XLATE('NOTE_PTRS','LEHRICH','NEW_MESSAGES','X') + //NotesSent = obj_Notes_Sent('GetUserKeys','JONATHAN_O') + IF NotesSent NE '' OR NewMessages > 0 THEN + Start_Window( 'NOTE_PTRS', @WINDOW, '*CENTER', '', '' ) + END +end service + +Service GetSAPYield + debug + counts = Gan_Services('GetYieldInfo', 223271 , '') +end service + +Service DoSomething() + + Response = "Hello, World!" + +End Service + +Service DoSomethingWithParameters(Input, Ref Output) + + Output = Input:", World!" + +End Service + + + + diff --git a/LSL2/STPROC/TEST_DAKOTA.txt b/LSL2/STPROC/TEST_DAKOTA.txt new file mode 100644 index 0000000..1da543c --- /dev/null +++ b/LSL2/STPROC/TEST_DAKOTA.txt @@ -0,0 +1,171 @@ +Function Test_Dakota(Param1) +#pragma precomp SRP_PreCompiler + +Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services +Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services +Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS +Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services +Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services, +Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Activate_Save_Select, Reduce, FSMsg +Declare subroutine SRP_Stopwatch, Copy_Record_To_SQL, SQL_Services, Material_Services, Messaging_Services +Declare subroutine Reactor_Services, Reactor_Services_Dev, SRP_Stopwatch, Btree.Extract, Set_Env, RDS_React_Run +Declare subroutine obj_Prod_Spec, Security_Services, Make.List, Write_OI_To_SQL, Send_Info, PSN_Services, Free_Class.Net +Declare subroutine Work_Order_Services, Test_Daniel2, obj_RDS_Layer, Report_Services, Pass_To_Sql, SRP_JSON, SRP_Run_Command +Declare subroutine Httpclient_Services, SRP_TcpClient, RTI_Set_Debugger, Sleepery, Set_Env, Extract_SI_Keys, Repository +Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility +Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services +Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg +Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat +Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8 +Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services +Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV +Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format +Declare function DateTime, GaN_Services, SRP_Array, Excel_Services, EpiPro_Services, Repository, RTI_Task_Submit +Declare function RTI_Task_Status, Rds_Services, StartDotNet, Reactor_Services, SRP_Get_FileVersion, Direct_Print +Declare function obj_React_Run, RTI_Lock_Owner, obj_WM_In, Get_Repos_Entities, Get_Printer, Schedule_Services +Declare function Location_Services, Replication_Services, SRP_Logon, List_User_Locks, Start_Window, SRP_JSON +Declare function Httpclient_Services, SRP_TcpClient, GetTickCount, Repository, Select_Into, SQL_services_New, Database_Services + +$INSERT LOGICAL +* $Insert RLIST_EQUATES +* $INSERT ENVIRON_CONSTANTS +* $Insert REVCAPI_EQUATES +* $INSERT MSG_EQUATES +* $INSERT APPCOLORS +* $INSERT WM_IN_EQUATES +* $Insert WM_OUT_EQUATES +* $INSERT WO_LOG_EQU +* $INSERT WO_STEP_EQU +$INSERT WO_MAT_EQUATES +* $INSERT ORDER_EQU +* $INSERT RDS_EQUATES +* $INSERT PROD_SPEC_EQU +* $INSERT NOTIFICATION_EQU +* $INSERT LSL_USERS_EQU +* $INSERT SECURITY_RIGHTS_EQU +* $INSERT POPUP_EQUATES +* $INSERT RTI_LH_INFO_EQUATES +* $INSERT WO_MAT_QA_EQUATES +* $INSERT CUST_EPI_PART_EQUATES +* $INSERT PRS_STAGE_EQUATES +* $Insert RLIST_EQUATES +* $Insert CLEAN_INSP_EQUATES +* $Insert TOOL_PARMS_EQUATES +* $Insert SCHEDULE_EQU +* $Insert SCHED_DET_EQUATES +* $Insert SCHEDULER_EQUATES +* $Insert NCR_EQUATES +* $Insert REACT_RUN_EQUATES +* $Insert TOOL_EQUATES +* $Insert TOOL_LOG_EQUATES +* $Insert PM_EQUATES +* $Insert WO_WFR_EQUATES +* $Insert REVDOTNETEQUATES +* $Insert REACTOR_EQUATES +* $Insert RDS_TEST_EQUATES +* $Insert RUN_STAGE_WFR_EQUATES +* $Insert RTI_DEBUG_COMMON +* $Insert DICT_EQUATES +* $Insert SRPMAIL_INSERTS +* $Insert SCHED_DET_NG_EQUATES +* $Insert RDS_LAYER_EQUATES +* $Insert PROD_VER_EQUATES +* $Insert PM_SPEC_EQUATES +* // 02/22/2023 48312 50112 ; // 5 hours = 14400 seconds +* // Reduce modes (for Select statement) +* Equ NEW_EXIST$ To 0 +* Equ NEXT_CUR$ To 1 +* Equ ADD_EXIST$ To 2 +* +* EQU COL$QA_MET_PHASE_MIN TO 17 +* +Equ Tab$ to \09\ +Equ CRLF$ to \0D0A\ +Equ LF$ to \0A\ +Equ Comma$ to ',' +* +* $INSERT PRINTSETUP_EQUATES +* equ REV_CREATE_ENGINE_NO_UI$ to 0x040 + +Main: + Debug + Locks = Database_Services('GetUserLocks') + Result = Database_Services('UnlockKeyID', 'RDS', '456789') + Debug +return + +* LockList = Database_Services('GetUserLocks') +* debug +* If Error_Services('NoError') then +* ResponseJSON = '' +* If SRP_JSON(objJSON, 'New', 'Object') then +* If SRP_JSON(objReactArray, 'New', 'Array') then +* For each Row in LockList using @FM setting fPos +* If SRP_JSON(objRow, 'New', 'Object') then +* SRP_JSON(objRow, 'SetValue', 'ComputerName', Row<0, 1>) +* SRP_JSON(objRow, 'SetValue', 'Volume', Row<0, 2>) +* SRP_JSON(objRow, 'SetValue', 'Table', Row<0, 3>) +* SRP_JSON(objRow, 'SetValue', 'RecordKey', Row<0, 4>) +* SRP_JSON(objRow, 'SetValue', 'Exclusive', Row<0, 5>) +* SRP_JSON(objRow, 'SetValue', 'OSTableFile', Row<0, 6>) +* SRP_JSON(objReactArray, 'Add', objRow) +* SRP_JSON(objRow, 'Release') +* end +* Next Row +* SRP_JSON(objJSON, 'Set', 'Report', objReactArray) +* SRP_JSON(objReactArray, 'Release') +* end +* LockJSON = SRP_JSON(objJSON, 'Stringify', 'Styled') +* SRP_JSON(objJSON, 'Release') +* end +* +* end +* +* J = 5000 +* NamePrefix = 'DJM' +* Table = 'RDS' +* +* +* For I = 0 to 6000 +* //If I = J then debug +* //debug +* RecName = NamePrefix : I +* NewRec = @FM: 20 :@FM +* Result = Database_Services("WriteDataRow", Table, RecName, NewRec, 1, 0, 1) +* Test = Xlate(Table, RecName, '','X', '') +* If Test = '' then debug +* Next I + +return + + +////////////For Testing memory leak//////////////////////////// +* Free_Class.Net() +* +* J = 2500 +* *J = 500 +* +* For I = 0 to 10000 +* Result = SQL_Services('PostSQLRequest', 'SPC', 'SELECT * FROM RDS') +* If I = J then debug +* Result = '' +* //debug +* +* Result = SQL_Services('GetDataRows', 'SPC', 'SELECT TOP (10) * FROM [LSL2SQL].[dbo].[RDS]', 1) +* ConnString = Environment_Services("GetSQLScrapeConnectionString") +* //Set_Property('CLIPBOARD', 'TEXT', ConnString) +* QueryString = 'SELECT [key],[col1],[col2] FROM [LSL2SQL].[dbo].[OI_TESTING] ' +* QueryString := 'USE [LSL2SQL] GO INSERT INTO [dbo].[OI_TESTING]([key],[col1],[col2])VALUES(,,) GO' +* +* Obj = Sql_Services("GetConnectionObject", "Scrape DB Test", 1, ConnString) +* //SQL_Services('PostSQLStatement', 'Scrape DB Test', QueryString) +* //Res = Sql_Services("PostSQLRequest", "Scrape DB Test", QueryString) +* //Result = SQL_Services("ProcessSQLRequests") +* If Result = '' then debug +* //Free_Class.Net() +* SQL_Services('ExecuteQuery', +* Groups = SRP_Logon('GetADGroups', 'StieberD', 'Infineon') +* +* Next I +* debug +///////////////////////////////////////////////////////////////// diff --git a/LSL2/STPROC/TEST_DANIEL3.txt b/LSL2/STPROC/TEST_DANIEL3.txt new file mode 100644 index 0000000..9771faf --- /dev/null +++ b/LSL2/STPROC/TEST_DANIEL3.txt @@ -0,0 +1,3962 @@ +Function Test_Daniel3(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10) +#pragma precomp SRP_PreCompiler + +Declare subroutine Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Send_Message, Logging_Services +Declare subroutine Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, FTP_Services +Declare subroutine EditCell, obj_NCR, obj_Notes, Post_Event, obj_WO_Mat, obj_WO_Mat_Log, obj_WO_Wfr, obj_Tables, obj_RDS +Declare subroutine Error_Services, RDS_Services, Dialog_Box, Insert, Unlock, QA_Services, Validate, Development_Services +Declare subroutine Update_Index, Database_Services, Obj_WO_Mat_QA, Fmt, Yield, WinYield, Sleepery, Qa_Services, +Declare subroutine Obj_Post_Log, GaN_Services, Excel_Services, obj_WO_React, Activate_Save_Select, Reduce, FSMsg +Declare subroutine SRP_Stopwatch, Copy_Record_To_SQL, SQL_Services, Material_Services, Messaging_Services +Declare subroutine Reactor_Services, Reactor_Services_Dev, SRP_Stopwatch, Btree.Extract, Set_Env, RDS_React_Run +Declare subroutine obj_Prod_Spec, Security_Services, Make.List, Write_OI_To_SQL, Send_Info, PSN_Services, Free_Class.Net +Declare subroutine Work_Order_Services, Test_Daniel2, obj_RDS_Layer, Report_Services, Pass_To_Sql, SRP_JSON, SRP_Run_Command +Declare subroutine Httpclient_Services, SRP_TcpClient, RTI_Set_Debugger, Sleepery, Set_Env, Extract_SI_Keys, Repository +Declare function Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists, Utility +Declare function Dialog_Box, obj_WO_Log, obj_NCR, Check_Notes, obj_MUWafers, obj_WO_Mat, Error_Services, RDS_Services +Declare function MemberOf, obj_Tables, obj_RDS, Environment_Services, Logging_Services, Material_Services, ErrMsg +Declare function Work_Order_Services, RetStack, Min, Max, Obj_Prod_Spec, Insert, SRP_Trim, Xlate, Obj_Wo_Mat +Declare function Security_Services, QA_Services, Database_Services, RowExists, Rti_Lh_Info, UNICODE_ANSI, UNICODE_UTF8 +Declare function index, Httpclient_Services, SRP_Encode, SRP_Decode, DirList, Obj_Rds_Test, Tool_Parms_Services +Declare function SQL_Services, RDS_Services, Obj_WM_out, Schedule_Services, Obj_Tool, SRP_Sort_Array, ICONV +Declare function Development_Services, Obj_WO_Mat_QA, SRP_Join_Arrays, NextKey, Obj_Prod_Spec, FTP_Services, SQL_Format +Declare function DateTime, GaN_Services, SRP_Array, Excel_Services, EpiPro_Services, Repository, RTI_Task_Submit +Declare function RTI_Task_Status, Rds_Services, StartDotNet, Reactor_Services, SRP_Get_FileVersion, Direct_Print +Declare function obj_React_Run, RTI_Lock_Owner, obj_WM_In, Get_Repos_Entities, Get_Printer, Schedule_Services +Declare function Location_Services, Replication_Services, SRP_Logon, List_User_Locks, Start_Window, SRP_JSON +Declare function Httpclient_Services, SRP_TcpClient, GetTickCount, Repository, Select_Into, Active_Directory_Services +Declare function Rti_Ldap_Groups_For_User + +$INSERT LOGICAL +* $Insert RLIST_EQUATES +* $INSERT ENVIRON_CONSTANTS +* $Insert REVCAPI_EQUATES +* $INSERT MSG_EQUATES +* $INSERT APPCOLORS +* $INSERT WM_IN_EQUATES +* $Insert WM_OUT_EQUATES +* $INSERT WO_LOG_EQU +* $INSERT WO_STEP_EQU +$INSERT WO_MAT_EQUATES +* $INSERT ORDER_EQU +* $INSERT RDS_EQUATES +* $INSERT PROD_SPEC_EQU +* $INSERT NOTIFICATION_EQU +* $INSERT LSL_USERS_EQU +* $INSERT SECURITY_RIGHTS_EQU +* $INSERT POPUP_EQUATES +* $INSERT RTI_LH_INFO_EQUATES +* $INSERT WO_MAT_QA_EQUATES +* $INSERT CUST_EPI_PART_EQUATES +* $INSERT PRS_STAGE_EQUATES +* $Insert RLIST_EQUATES +* $Insert CLEAN_INSP_EQUATES +* $Insert TOOL_PARMS_EQUATES +* $Insert SCHEDULE_EQU +* $Insert SCHED_DET_EQUATES +* $Insert SCHEDULER_EQUATES +* $Insert NCR_EQUATES +* $Insert REACT_RUN_EQUATES +* $Insert TOOL_EQUATES +* $Insert TOOL_LOG_EQUATES +* $Insert PM_EQUATES +* $Insert WO_WFR_EQUATES +* $Insert REVDOTNETEQUATES +* $Insert REACTOR_EQUATES +* $Insert RDS_TEST_EQUATES +* $Insert RUN_STAGE_WFR_EQUATES +* $Insert RTI_DEBUG_COMMON +* $Insert DICT_EQUATES +* $Insert SRPMAIL_INSERTS +* $Insert SCHED_DET_NG_EQUATES +* $Insert RDS_LAYER_EQUATES +* $Insert PROD_VER_EQUATES +* $Insert PM_SPEC_EQUATES +* // 02/22/2023 48312 50112 ; // 5 hours = 14400 seconds +* // Reduce modes (for Select statement) +* Equ NEW_EXIST$ To 0 +* Equ NEXT_CUR$ To 1 +* Equ ADD_EXIST$ To 2 +* +* EQU COL$QA_MET_PHASE_MIN TO 17 +* +Equ Tab$ to \09\ +Equ CRLF$ to \0D0A\ +Equ LF$ to \0A\ +Equ Comma$ to ',' +* +* $INSERT PRINTSETUP_EQUATES +* equ REV_CREATE_ENGINE_NO_UI$ to 0x040 + +Main: + Debug + KeyList = '' + Equ new_exist$ To 0 ; * Reduce Mode 0 + Equ next_cur$ To 1 + Equ add_exist$ to 2 + + table_name = "WO_MAT" + + flag = "" + done = False$ + CursorVar = "" + + * Clears all cursors + For counter = 0 To 8 + ClearSelect counter + Next counter + + sort_list = "SAP_TX_DT" + Reduce_Script = "WITH {SAP_BATCH_NO} EQ '' AND WITH {SAP_TX_DT} GT '":OConv(Date() - 16, 'D4/'):"'" + mode = NEXT_CUR$ + + Reduce(reduce_script, sort_list, mode, table_name, Cursorvar, flag) + If flag then + Select table_name By sort_list Using Cursorvar then + Open table_name To file_var then + ctr = 0 + + Loop + ReadNext key Using Cursorvar By AT Else done = TRUE$ + Until done + KeyList<-1> = Key + Repeat + End Else + FsMsg() + End + End Else + FsMsg() + end + End Else + FsMsg() + End + NumKeys = DCount(KeyList, @FM) + +* table = "WO_MAT" +* Open "DICT ":table To @DICT Else +* RetVal = Set_FSError() +* Return +* End +* Column = "SAP_BATCH_NO" +* data1 = "" +* search_criteria = column:@VM:data1:@FM +* keylist = "" +* option = "" +* flag = "" +* Btree.Extract(search_criteria, table, @DICT, keylist1, option, flag) +* Rows = DCount(keylist1, @VM) +* +* Column = "SAP_TX_DT" +* data1 = '>=':Date() - 15 +* search_criteria = column:@VM:data1:@FM +* keylist = "" +* option = "" +* flag = "" +* Btree.Extract(search_criteria, table, @DICT, keylist2, option, flag) + + + KeyList3 = SRP_Array('Join', keylist1, keylist2, 'AND', @VM) +* Httpclient_Services('SetTimeoutDuration', '600') +* Response = Httpclient_Services('SendHTTPRequest', 'GET', 'mestsa008.infineon.com/apidev/oiwizard', '', '', '', '', True$, True$, '') +* Authenticated = False$ +* DotNetHandle = StartDotNet("","4.0") +* DotNetDir = CheckDotNet('4.0'):'\' +* AccountMgmtDllPath = DotNetDir:'System.DirectoryServices.AccountManagement.dll' +* Set_Property.Net(DotNetHandle, "AssemblyName", AccountMgmtDllPath) +* If Not(Get_Status(errCode)) then +* Params = 'Domain':@FM:Domain +* ParamTypes = 'System.DirectoryServices.AccountManagement.ContextType':@FM:'System.String' +* objPC = Create_Class.Net(DotNetHandle, "System.DirectoryServices.AccountManagement.PrincipalContext", 0, Params, ParamTypes) +* If Not(Get_Status(errCode)) then +* Params = Username:@FM:Password +* ParamTypes = 'System.String':@FM:'System.String' +* Authenticated = Send_Message.Net(objPC, 'ValidateCredentials', Params, ParamTypes, 0) +* Swap 'True' with True$ in Authenticated +* Swap 'False' with False$ in Authenticated +* Free_Class.Net(objPC) +* end +* end +* Response = Authenticated + + +* debug +* Groups = Rti_Ldap_Groups_For_User('STIEBERD', 'infineon') +* Groups = Rti_Ldap_Groups_For_User('MURSTIEBERD', 'infineon') +* LoremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' +* LoremIpsum := 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure ' +* LoremIpsum := 'dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non ' +* LoremIpsum := 'proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' +return + +* +* For I = 0 to 1000 +* Result = SQL_Services('PostSQLRequest', 'SPC', 'SELECT * FROM RDS') +* +* Result = SQL_Services('GetDataRows', 'SPC', 'SELECT TOP (10) * FROM [LSL2SQL].[dbo].[RDS]', 1) +* SQL_Services('ExecuteQuery', +* Groups = Active_Directory_Services('GetADGroups', 'StieberD', 'Infineon') +* Groups = SRP_Logon('GetADGroups', 'StieberD', 'Infineon') +* Groups = Rti_Ldap_Groups_For_User('StieberD', 'Infineon') +* +* Next I +* +* +* +* return + +* TransFilePathIn = Environment_Services('GetFTPRootPath') : '\FTP_IN_TEST' +* TransFilePathOut = Environment_Services('GetFTPRootPath') : '\FTP_OUT_TEST' +* FTPScriptPath = Environment_Services('GetFTPRootPath') : '\FTPScript_Test\' +* FTPServerIP = '172.28.150.80' ;* IFX EU FTP Server IP address or URL +* FTPUser = 'qasopeni' +* FTPPassWord = 'sapqasopeni' +* FTPCapturePath = Environment_Services('GetApplicationRootPath') : '\SAP\FTPFiles\' +* +* BaseFromSAPScript = 'open ':FTPServerIP:CRLF$ +* BaseFromSAPScript := 'user':CRLF$ +* BaseFromSAPScript := FTPUser:CRLF$ +* BaseFromSAPScript := FTPPassWord:CRLF$ +* BaseFromSAPScript := 'lcd ':TransFilePathIn:CRLF$ ;* Change local directory to C:\FTP_IN +* +* FromSAPScriptName = FTPScriptPath:'FromSAP.txt' +* +* BaseToSAPScript = 'open ':FTPServerIP:CRLF$ +* BaseToSAPScript := 'user':CRLF$ +* BaseToSAPScript := FTPUser:CRLF$ +* BaseToSAPScript := FTPPassword:CRLF$ +* BaseToSAPScript := 'lcd ':TransFilePathOut:CRLF$ ;* Change local directory to C:\FTP_OUT +* +* ToSAPScriptName = FTPScriptPath:'ToSAP.txt' +* +* OutBoundDir = 'CassComp' +* +* TransFileName = 'TX':FMT(1,"R(0)#6"):'.tsv' +* TempFileName = TransFileName[1, 'F.'] +* TempFileName := '.tmp' +* TempDosTable = TransFilePathOut:'\':TempFileName +* DosTable = TransFilePathOut:'\':TransFileName +* FTPRootPath = Environment_Services('GetFTPRootPath') +* +* ExternalDate = OConv(Date(), 'D') +* Swap ' ' with '_' in ExternalDate +* ExternalTime = OConv(Time(), 'MTS') +* Swap ':' with '_' in ExternalTime +* RepoFileName = ExternalDate:'_':ExternalTime:'_':RepoID:'_':TransFileName +* RepoDir = FTPRootPath : '\FTP_OUT_REPOSITORY\':OutBoundDir:'\':RepoFileName +* OSWrite OutRec ON RepoDir +* OutRec = 'test' +* OSWrite OutRec on DosTable +* OSWrite OutRec on TempDosTable +* +* ToSAPScript = BaseToSAPScript +* ToSAPScript := 'cd ToSAP':CRLF$ +* ToSAPScript := 'cd ':OutBoundDir:CRLF$ +* +* ToSAPScript := 'ls ':CRLF$ +* ToSAPScript := 'bye':CRLF$ +* +* OSwrite ToSAPScript on FTPScriptPath:'ToSAP.txt' +* +* Stat = 'VAR' +* +* SRP_Run_Command('ftp -i -n -s ' : FTPScriptPath, Stat, '', '', 1, '') + + + + +* ToSAPScript := 'put ':TempDosTable:CRLF$ +* // Added on 02/11/19 to save a copy of SAP files that we place on the ftp server for verfication purposes +* ToSAPScript := 'lcd ':FTPRootPath:'\FTP_OUT_VERIFY\':OutBoundDir:CRLF$ +* ToSAPScript := 'get ':TempFileName:' ':RepoFileName:CRLF$ +* // Added on 4/2/19 to work with SAP's tmp filename convention +* ToSAPScript := 'ren ':TempFileName:' ':TransFileName:CRLF$ +* // ------------------------------------------------------------------------------------------------------ +* ToSAPScript := 'bye':CRLF$ +* +* OSWrite ToSAPScript ON ToSAPScriptName +* StartTime = Time() +* DELETE Buffer,TxSeqNo ELSE Null +* Stat = 'VAR' +* +* SRP_Run_Command('ftp -i -n -s:' : ToSAPScriptName, Stat, '', '', '', TransType) + + +* Cmds = 'SELECT CALIB_LIST WITH CL_TYPE EQ "E"' : @FM +* Cmds := 'SELECT CALIB_LIST WITH EQ_LOC NE "Out of Service"' : @FM +* Cmds := 'LIST CALIB_LIST DEPT EQ_DESC JUSTLEN 120 EQ_SN EQ_LOC CAL_INTERVAL CAL_LOC LAST_CAL_DT NEXT_CAL_DT BY NEXT_CAL_DT' +* MyData = Select_Into(Cmds, 'EDT') +* OSWrite MyData on 'C:\Users\MURStieberD\Desktop\MyData.json' +* Free_Class.Net() +* For I = 1 to 1000 +* DotNetHandle = StartDotNet("","4.0") +* ErrCode = '' +* Free_Class.Net(DotNetHandle) +* If Get_Status(ErrCode) then +* debug +* end +* Next I + +* For I = 1 to 1000 +* objConnection = Sql_Services('GetConnectionObject', 'SPC') +* If Error_Services('NoError') then +* Sql_Services('DestroyConnectionObject', objConnection) +* end +* Next I +* +* +* return +* +* debug +* Open 'WO_MAT' to hTable then +* WONo = 172592 +* For CassNo = 1 to 31 +* WriteV True$ on hTable, WONo:'*':CassNo, WO_MAT_CONVERTED_MATERIAL$ else +* debug +* end +* Next CassNo +* end + +* debug +* +* WONo = 171956 +* NewPVNo = 14302 +* WOMatKeys = Xlate('WO_LOG', WONo, 'WO_MAT_KEY', 'X') +* WOMatKeysRot = SRP_Array('Rotate', WOMatKeys, @VM, '*') +* CassNos = WOMatKeysRot<0, 2> +* Swap '*' with @VM in CassNos +* CassNos = Delete(CassNos, 0, 1, 0) +* NewWONo = Material_Services('ConvertMaterial', WONo, CassNos, NewPVNo) +* If Error_Services('HasError') then Error_Services('DisplayError') + +return + +* NextIntProdOrdNo = 10 +* NewIntProdOrdNo = 'IFX' : Fmt(NextIntProdOrdNo, 'R(0)#4') +* +* LSL2Inserts = Get_Repos_Entities('LSL2', 'STPROCINS', '', '') +* FWInserts = Get_Repos_Entities('FRAMEWORKS', 'STPROCINS', '', '') +* SysprogInserts = Get_Repos_Entities('SYSPROG', 'STPROCINS', '', '') +* +* InsertList = SRP_Array('Join', LSL2Inserts, FWInserts, 'OR', @FM) +* InsertList = SRP_Array('Join', InsertList, SysprogInserts, 'OR', @FM) +* +* BadList = '' +* For each InsertKey in InsertList using @Fm setting fPos +* +* App = InsertKey[1, 'F*'] +* Key = InsertKey[-1, 'B*'] +* If App EQ 'SYSPROG' then +* SourceKey = Key +* end else +* SourceKey = Key:'*':App +* end +* Source = Database_Services('ReadDataRow', 'SYSPROCS', SourceKey) +* If IndexC(Source, 'LOGICAL', 1) GT 0 then +* // Contains LOGICAL +* BadList<-1> = InsertKey +* end +* +* Next InsertKey +* +* BadList4 = '' +* Open 'SYSPROCS' to hTable then +* Select hTable +* EOF = False$ +* Loop +* ReadNext KeyID else EOF = True$ +* Until EOF +* Read Source from hTable, KeyID then +* If ( (IndexC(Source, 'POPUP_EQUATES', 1) GT 0) and (IndexC(Source, 'LOGICAL', 1) EQ 0) and ( (IndexC(Source, 'true$', 1) GT 0) or (IndexC(Source, 'false$', 1) GT 0) or (IndexC(Source, 'yes$', 1) GT 0) or (IndexC(Source, 'no$', 1) GT 0) or (IndexC(Source, 'otherwise$', 1) GT 0)) ) then +* // Contains POPUP_EQUATES, but not LOGICAL, and contain true$ or false$ +* BadList4<-1> = KeyID +* end +* end +* Repeat +* end +* +* BadList3 = '' +* Open 'SYSREPOSEVENTS' to hTable then +* Select hTable +* EOF = False$ +* Loop +* ReadNext KeyID else EOF = True$ +* Until EOF +* Read Source from hTable, KeyID then +* If ( (IndexC(Source, 'POPUP_EQUATES', 1) GT 0) and (IndexC(Source, 'LOGICAL', 1) EQ 0) and ( (IndexC(Source, 'true$', 1) GT 0) or (IndexC(Source, 'false$', 1) GT 0) ) ) then +* // Contains POPUP_EQUATES, but not LOGICAL, and contain true$ or false$ +* BadList3<-1> = KeyID +* end +* end +* Repeat +* end +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL', BadList) +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL2', BadList2) +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL3', BadList3) +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL4', BadList4) +* +* +* ErrCode = '' +* InsertStr = @FM:'$INSERT LOGICAL' +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL4') +* For each Key in KeyList using @FM setting fPos +* Stproc = Field(Key, '*', 1) +* App = Field(Key, '*', 2) +* If App EQ 'LSL2' then +* EntID = App:'*STPROC**':Stproc +* EntData = Repository('ACCESS', EntID) +* If Not(Get_Status(errCode)) then +* Loc = IndexC(EntData, 'POPUP_EQUATES', 1) +* If Loc GT 0 then +* EntData[Loc + Len('POPUP_EQUATES'), 0] = InsertStr +* Repository('UPDATE', EntID, EntData) +* If Not(Get_Status(errCode)) then +* Repository('COMPILE', EntID, True$) +* If Get_Status(errCode) then +* Msg(@Window, '', 'OK', '', 'Error':@FM:errCode) +* end +* end +* end +* end +* end +* Next Key +* +* return +* +* Spawn: +* debug +* PSNs = '' +* ProdVerKeys = '' +* Extract_SI_Keys('PROD_VER', 'CUST_NO', 7127, ProdVerKeys) +* If ProdVerKeys NE '' then +* PSNs = Xlate('PROD_VER', ProdVerKeys, 'PSN_ID', 'X') +* end +* +* PSNs = '' +* ProdVerKeys = '' +* Option = '' +* ErrorFlag = '' +* Open 'DICT.PROD_VER' to hDict then +* Query = 'CUST_NO':@VM:7127:@FM +* Btree.Extract(Query, 'PROD_VER', hDict, ProdVerKeys, Option, ErrorFlag) +* If Not(ErrorFlag) then +* PSNs = Xlate('PROD_VER', ProdVerKeys, 'PSN_ID', 'X') +* end +* end +* +* PSNs = '' +* Query = 'SELECT PROD_VER WITH CUST_NO EQ ':7127 +* RList(Query, TARGET_ACTIVELIST$, '', '', '') +* ErrCode = '' +* If Not(Get_Status(ErrCode)) then +* EOF = False$ +* Loop +* ReadNext ProdVerKeyID else EOF = True$ +* Until EOF +* PSNs<0, -1> = Xlate('PROD_VER', ProdVerKeyID, 'PSN_ID', 'X') +* Repeat +* end +* +* return +* +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* For each Key in KeyList using @FM +* Database_Services('DeleteDataRow', 'SCHED_DET_NG', Key, True$, False$) +* Next Key +* +* on_off = 1 +* t_flag = 1 +* set_env(ENV_DEBUGGER_ENABLED$, on_off, t_flag) +* debug +* +* hEngine = '' +* hQueue = '' +* QueueName = '' +* Database = 'LSL2' +* UserName = 'DANIEL_ST' +* Password = 'SRPSUPPORT2020!' +* ServerSpec = '\\':SocketServerIp : ":" : SocketServerPort +* ServerSpec = '\\.\DJS' +* Flags = BitOr(CREATE_ENGINE_CREATE_NEW$, REV_CREATE_ENGINE_NO_UI$) +* Flags = CREATE_ENGINE_CREATE_NEW$ +* Err = CreateEngine(hEngine, ServerSpec, Database, Flags, 1) +* Err = CreateQueue(hQueue, hEngine, QueueName, Database, UserName, Password) +* RetVal = '' +* Err = CallFunction(hQueue, RetVal, 'TEST_DANIEL2', 'Testing OEngineServer') +* Err = CloseQueue(hQueue) +* Err = CloseEngine(hEngine) +* +* return +* +* Testing: +* +* RTI_Set_Debugger(1, '') +* debug +* Sleepery(100) +* OSWrite 'Hello World!' on 'D:\tmp\helloworld.txt' +* Response = 'My second response!' +* +* TickCount = GetTickCount() +* Response = 'Hello World! Ticks: ':TickCount +* OSWrite Response on 'D:\tmp\helloworld.txt' +* OSWrite 'Hello World!' on 'D:\tmp\helloworld.txt' +* Results = 'Hello World!' +* +* return Response +* +* 'HGCV1*20169.2778240741' +* +* 'HGCV1*20169.3674652778' +* +* 'HGCV1*20169.2753472222' +* +* debug +* CurrModeKeys = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* For each CurrModeKey in CurrModeKeys using @FM setting fPos +* Rec = Database_Services('ReadDataRow', 'TOOL_LOG', CurrModeKey) +* Rec<4> = '' +* Rec<5> = '' +* Database_Services('WriteDataRow', 'TOOL_LOG', CurrModeKey, Rec, True$, False$, True$) +* Next CurrModeKey +* +* CurrModeKeys = 'HGCV1*19523.12345':@VM:'HGCV1*19523.23456':@VM:'HGCV1*19524.12345' +* Swap '*' with @VM in CurrModeKeys +* SortedRows = SRP_Array('SortRows', CurrModeKeys, 'DN2', 'LIST', @FM, '*', False$) +* SortedList = SRP_Array('SortSimpleList', CurrModeKeys, 'DescendingText', @VM) +* +* Port = 8088 +* IP = '10.95.176.50' +* Command = \01\ +* TcpClientHandle = 0 +* If SRP_TcpClient(TcpClientHandle, 'CONNECT', IP, Port) then +* SRP_TcpClient(TcpClientHandle, 'SEND', Command) +* SRP_TcpClient(TcpClientHandle, 'CLOSE') +* end +* +* // Testing out small improvement +* +* +* Test = 'test' +* CurrMode = Xlate('TOOL', 'HGCV1':@VM:'HGCV2', 'CURR_MODE', 'X') +* +* debug +* // Get the port from the SRPEngineServer.ini file. +* FilePath = Drive():'\SRPEngineServer.ini' +* OSRead IniFile from FilePath then +* CharIndex = Index(IniFile, 'Port', 1) +* Line = IniFile[CharIndex, 'F':CRLF$] +* Port = Trim(Line[-1, 'B=']) +* end +* return +* +* ToolID = 'HGCV2' +* +* Test = 'test' +* +* +* debug +* // Get the port from the SRPEngineServer.ini file. +* FilePath = Drive():'\SRPEngineServer.ini' +* OSRead IniFile from FilePath then +* CharIndex = Index(IniFile, 'Port', 1) +* Line = IniFile[CharIndex, 'F':CRLF$] +* Port = Trim(Line[-1, 'B=']) +* end +* return +* +* ToolID = 'HGCV1' +* +* ModeKeys = Xlate('TOOL', ToolID, 4, 'X') +* NumKeys = DCount(ModeKeys, @VM) +* Open 'TOOL_LOG' to hToolLog then +* For KeyIndex = NumKeys to 2 Step -1 +* NextModeKey = ModeKeys<0, KeyIndex - 1> +* NextModeStartDTM = Field(NextModeKey, '*', 2) +* ThisModeKey = ModeKeys<0, KeyIndex> +* WriteV NextModeStartDTM to hToolLog, ThisModeKey, 4 else +* debug +* end +* WriteV 'OI_ADMIN' to hToolLog, ThisModeKey, 5 else +* debug +* end +* Next KeyIndex +* end +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,WO_MAT_ACTIONS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_WO_LOG', '', '', '') +* +* return +* +* WONo = 171804 +* WOMatKeys = Xlate('WO_LOG', WONo, 'WO_MAT_KEY', 'X') +* RDSNos = Xlate('WO_MAT', WOMatKeys, 'RDS_NO', 'X') +* YieldQtys = +* ScrapQtys = +* ProdTestQtys = +* +* +* Open 'DAILY_PERFORMANCE' to hTable then +* Select hTable +* EOF = False$ +* Loop +* ReadNext Key else EOF = True$ +* Until EOF +* KeyDate = Field(Key, '*', 1, 1) +* If Not(Num(KeyDate)) then +* Delete hTable, Key else debug +* end +* Repeat +* end +* +* +* +* Httpclient_Services('SetTimeoutDuration', 10) +* URL = 'https://oi-metrology-viewer-prod.mes.infineon.com/api/export/headers' +* Response = Httpclient_Services('SendHTTPRequest', 'GET', URL) +* +* WONo = 171795 +* SapBatchNos = Xlate('WO_LOG', WONo, 'SAP_BATCH_NO', 'X') +* SAPYield = Xlate('WO_LOG', WONo, 'WO_MAT_SAP_YIELD', 'X') +* SAPScrap = Xlate('WO_LOG', WONo, 'WO_MAT_SAP_CONFIRM_SCRAP', 'X') +* DataExport = SapBatchNos:CRLF$:SAPYield:CRLF$:SAPScrap +* Swap @VM with ',' in DataExport +* OSWrite DataExport to 'D:\temp\171795.csv' +* +* return +* +* Procedures = '' +* Procedures<1> = 'PM_SERVICES' +* Procedures<2> = 'COMM_DIALOG_TOOL_STATUS' +* Development_Services('DeployRoutine', Procedures) +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,COMM_DIALOG_TOOL_STATUS', '', '', '') +* +* Copy_Record_To_Sql('TOOL', 'BIORAD2', 1, '') +* +* FileName = '-__2023-28-02 10-48-24.txt' +* ResourceID = Field(FileName, ' ', 1, 1) +* URL = "https://oi-metrology-viewer-prod.mes.infineon.com/api/InfinityQSV3/":ResourceID:"/header" +* TimeoutDuration = HTTPClient_Services('GetTimeoutDuration') +* If TimeoutDuration NE 30 then Httpclient_Services('SetTimeoutDuration', 30) +* Response = Httpclient_Services('SendHTTPRequest', 'GET', URL, '', '', '', '', '', '', '') +* If Response NE '' then +* If SRP_JSON(objJSON, 'Parse', Response) EQ '' then +* SumOOS = SRP_JSON(objJSON, 'GetValue', 'Results[1].iq_sum') +* If SumOOS NE '' then +* +* end else +* ErrorMsg = SRP_JSON(objJSON, 'GetValue', 'message') +* end +* SRP_JSON(objJSON, 'Release') +* end +* end +* +* return +* +* debug +* Query = 'SELECT PM_SPEC with PMS_ID GT 664' +* RList(Query, TARGET_ACTIVELIST$, '', '', '') +* EOF = False$ +* Loop +* Readnext KeyID else EOF = True$ +* Until EOF +* Database_Services('DeleteDataRow', 'PM_SPEC', KeyID) +* Repeat +* +* return +* +* debug +* OSRead File from 'D:\temp\PM_SPEC.csv' then +* Swap CRLF$ with @RM in File +* For each Line in File using @RM +* Temp = Line +* Swap @RM with '' in Temp +* KeyID = Field(Temp, ',', 1, 1) +* Rec = Field(Temp, ',', 2, 18) +* Swap ',' with @FM in Rec +* Database_Services('WriteDataRow', 'PM_SPEC', KeyID, Rec) +* Next Line +* end +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,EPI_PART', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,EPI_PART_SERVICES', '', '', '') +* +* return +* +* debug +* ActiveList = '286,289,292,278,281,282' +* Open 'PM_SPEC' to hTable then +* Select hTable +* EOF = False$ +* Loop +* Readnext KeyID else EOF = True$ +* Until EOF +* Locate KeyID in ActiveList using ',' setting Dummy then +* Archived = False$ +* end else +* Archived = True$ +* end +* WriteV Archived on hTable, KeyID, PM_SPEC_PM_ARCHIVED$ else +* debug +* end +* Repeat +* end +* +* return +* +* debug +* Open 'DUMMY' to hTable then +* Delete hTable, 456789 then +* null +* end else +* null +* end +* end +* debug +* URL = 'http://mestsa05ec.ec.local:50176/login/camellabs/camellabs' +* Response = Httpclient_Services('SendHTTPRequest', 'GET', URL, '', '', '', '', '', '', '') +* If Response NE '' then +* If SRP_JSON(objJSON, 'Parse', Response) EQ '' then +* objData = SRP_JSON(objJSON, 'Get', 'Data') +* If objData then +* FirstName = SRP_JSON(objData, 'GetValue', 'firstname') +* SRP_JSON(objData, 'Release') +* end +* SRP_JSON(objJSON, 'Release') +* end +* end +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,EPI_PART_SERVICES', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,PACKAGING_SERVICES', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_WO_MAT_LOG', '', '', '') +* +* return +* +* debug +* TablesToSkipOld = "ANNUAL_CONTRACTS,DESIG_ERR_GRP,EXPORTS,INVOICE,MFC_LOC,NAMES,ORDER,ORDER_CHANGE,QUOTE,REACT_ESC,SURFACE_SCAN,TW_PRIME_USAGE,TW_USAGE,VISION_LOG,VISION_ORDER" +* TablesToSkip = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_TABLES_TO_SKIP') +* If TablesToSkipOld EQ TablesToSkip then +* Null +* end +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,RDS_ACTIONS', '', '', '') +* debug +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* KeyList = Delete(KeyList, 1, 0, 0) +* For each Key in KeyList using @FM +* Database_Services('DeleteDataRow', 'SQL_PENDING', Key) +* Next Key +* +* return +* +* +* PassToSql: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,PASS_TO_SQL', '', '', '') +* +* return +* +* KeyList = Xlate('SYSLISTS', 'TEST_DANIEL_RDS_OI', '', 'X') +* KeyList = Delete(KeyList, 1, 0 , 0) +* Counter = 0 +* Def = "" +* Def = "Pushing REACT_MODE_NG data..." +* Def = "GC" +* Def = DCount(KeyList, @FM) +* Def = 800 +* MsgUp = Msg(@window, Def) +* +* For each Key in KeyList using @FM +* Counter += 1 +* Msg(@window, MsgUp, Counter, MSGINSTUPDATE$) +* Copy_Record_To_Sql('REACT_MODE_NG', Key, 1) +* Copy_Record_To_Sql('REACT_RUN', Key, 1) +* Copy_Record_To_Sql('RDS', Key, 1) +* WOMatKey = Xlate('RDS', Key, 'WO_MAT_KEY', 'X') +* If WOMatKey NE '' then +* Copy_Record_To_Sql('WO_MAT', WOMatKey, 1) +* end +* RDSLayerKeys = Xlate('RDS', Key, 'RDS_LS_SORTED', 'X') +* If RDSLayerKeys NE '' then +* For each RDSLayerKey in RDSLayerKeys using @VM +* Copy_Record_To_Sql('RDS_LAYER', RDSLayerKey, 1) +* RDSTestKeys = Xlate('RDS_LAYER', RDSLayerKey, 'RDS_TEST_KEYS', 'X') +* If RDSTestKeys NE '' then +* For each RDSTestKey in RDSTestKeys using @VM +* Copy_Record_To_Sql('RDS_TEST', RDSTestKey, 1) +* TWUseKeys = Xlate('RDS_TEST', RDSTestKey, 'TW_USE_ID', 'X') +* If TWUseKeys NE '' then +* For each TWUseKey in TWUseKeys using @VM +* Copy_Record_To_Sql('TW_USE', TWUseKey, 1) +* Next TWUseKey +* end +* Next RDSTestKey +* end +* Next RDSLayerKey +* end +* WMIKeys = Xlate('RDS', Key, 'WM_IN_KEY', 'X') +* If WMIKeys NE '' then +* For each WMIKey in WMIKeys using @VM +* Copy_Record_To_Sql('WM_IN', WMIKey, 1) +* Next WMIKey +* end +* WMOKeys = Xlate('RDS', Key, 'WM_OUT_KEY', 'X') +* If WMOKeys NE '' then +* For each WMOKey in WMOKeys using @VM +* Copy_Record_To_Sql('WM_OUT', WMOKey, 1) +* Next WMOKey +* end +* Next Key +* +* Msg(@window, MsgUp) ;* take down the gauge +* +* For each Key in KeyList using @FM +* Counter += 1 +* Msg(@window, MsgUp, Counter, MSGINSTUPDATE$) +* WOMatKey = Xlate('RDS', Key, 'WO_MAT_KEY', 'X') +* If WOMatKey NE '' then +* Copy_Record_To_Sql('WO_MAT', WOMatKey, 1) +* end +* Next Key +* Msg(@window, MsgUp) ;* take down the gauge +* +* return +* +* +* SQLTest1: +* +* Open 'SCHED_DET_NG' to hTable then +* Select hTable +* EOF = False$ +* Loop +* Readnext KeyID else EOF = True$ +* Copy_Record_To_SQL('SCHED_DET_NG', KeyID, True$) +* Repeat +* end +* +* +* return +* +* objConnection = SQL_Services('GetConnectionObject', 'Metrology', 2) +* If objConnection then +* Query = "SELECT [EVENT_ID] FROM [SCHED_DET_NG]" +* Keys = SQL_Services('ExecuteQuery', objConnection, Query, True$, 2) +* Swap @RM with @FM in Keys +* If Error_Services('NoError') then +* For each Key in Keys using @FM +* If Not(RowExists('SCHED_DET_NG', Key)) then +* debug +* Statement = "DELETE FROM [dbo].[SCHED_DET_NG] WHERE [EVENT_ID] = '":Key:"'" +* SQL_Services('ExecuteQuery', objConnection, Statement, False$, 2) +* If Error_Services('HasError') then Error_Services('DisplayError') +* end +* Next Key +* end else +* Error_Services('DisplayError') +* end +* SQL_Services('DestroyConnectionObject', objConnection) +* end +* +* return +* +* +* UpdateNCR: +* +* debug +* KeyList = Xlate('SYSLISTS', 'TEST_DANIEL', '', 'X') +* +* Counter = 0 +* Def = "" +* Def = "Pushing WO_WFR data..." +* Def = "GC" +* Def = DCount(KeyList, @FM) +* Def = 800 +* MsgUp = Msg(@window, Def) +* +* Table = 'WO_WFR' +* Open 'DICT.':Table to @DICT then +* For each Key in KeyList using @FM +* Counter += 1 +* Msg(@window, MsgUp, Counter, MSGINSTUPDATE$) +* WONo = Xlate('RDS', Key, 'WO', 'X') +* If WONo NE '' then +* Column = 'WO_NO' +* Data = WONo +* SearchCrit = Column:@VM:Data:@FM +* BtreeKeys = '' +* Option = '' +* Flag = '' +* Btree.Extract(SearchCrit, Table, @DICT, BtreeKeys, Option, Flag) +* If BtreeKeys NE '' then +* For each BtreeKey in BtreeKeys using @VM +* Copy_Record_To_Sql('WO_WFR', BtreeKey, 1) +* Next BtreeKey +* end +* end +* * Copy_Record_To_Sql('PROD_SPEC', Key, 1) +* * Copy_Record_To_Sql('RDS', Key, 1) +* * Copy_Record_To_Sql('REACT_RUN', Key, 1) +* * WOMatKey = Xlate('RDS', Key, 'WO_MAT_KEY', 'X') +* * If WOMatKey NE '' then +* * Copy_Record_To_Sql('WO_MAT', WOMatKey, 1) +* * end +* * NCRKeys = Xlate('RDS', Key, 'NCR_NOS', 'X') +* * If NCRKeys NE '' then +* * For each NCRKey in NCRKeys using @VM +* * Copy_Record_To_Sql('NCR', NCRKey, 1) +* * Next NCRKey +* * end +* * CIKeys = Xlate('REACT_RUN', Key, 'CI_NO', 'X') +* * If CIKeys NE '' then +* * For each CIKey in CIKeys using @VM +* * Copy_Record_To_Sql('CLEAN_INSP', CIKey, 1) +* * Next CIKey +* * end +* * RDSTestKeys = Xlate('RDS', Key, 'MET_KEYS', 'X') +* * If RDSTestKeys NE '' then +* * For each RDSTestKey in RDSTestKeys using @VM +* * Copy_Record_To_Sql('RDS_TEST', RDSTestKey, 1) +* * Next RDSTestKey +* * end +* Next Key +* end +* +* Msg(@window, MsgUp) ;* take down the gauge +* Connection = Sql_Services('GetConnectionObject', 'Scrape DB', 2) +* If Error_Services('NoError') then +* objCommand = Send_Message.Net(Connection, 'CreateCommand', '', '', 1) +* If Not(Get_Status(errCode)) then +* Null +* end else +* Free_Class.NET(objCommand) +* end +* Free_Class.NET(Connection) +* end +* Counter = 0 +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* Def = "" +* Def = "Pushing NCR data..." +* Def = "GC" +* Def = DCount(KeyList, @FM) +* Def = 800 +* MsgUp = Msg(@window, Def) +* +* For each Key in KeyList using @FM +* Counter += 1 +* Msg(@window, MsgUp, Counter, MSGINSTUPDATE$) +* Copy_Record_To_SQL('NCR', Key, True$) +* Next Key +* Msg(@window, MsgUp) ;* take down the gauge +* +* return +* +* +* return +* +* CleanBacklog: +* +* Rec = Datetime() +* ID = '4001DEF2679043B595F1F7998D8D04CE' +* Database_Services('WriteDataRow', 'SQL_BACKLOG', 'SCHED_DET_NG':"*":ID:"*DELETE", Rec) +* +* Rec = Datetime() +* ID = '40E884AB716E4857BD6A9FF982AACBFC' +* Database_Services('WriteDataRow', 'SQL_BACKLOG', 'SCHED_DET_NG':"*":ID:"*DELETE", Rec) +* RV = Start_Window('LIST_USER_LOCKS', '', '') +* Dummy1 = '' +* Dummy2 = '' +* Locks = List_User_Locks(Dummy1, Dummy2) +* debug +* Open 'SQL_BACKLOG_WO_MAT' to hTable then +* Select hTable +* EOF = False$ +* Loop +* ReadNext KeyID else EOF = True$ +* Until EOF +* WONo = Field(KeyID, '*', 2) +* If WONo LT 170000 then +* Database_Services('DeleteDataRow', 'SQL_BACKLOG_WO_MAT', KeyID) +* end +* Repeat +* end +* +* return +* +* ReactListFix: +* +* ReactNos = Reactor_Services('GetReactorNumbers') +* For each ReactNo in ReactNos using @FM +* HaveLock = Database_Services('GetKeyIDLock', 'REACT_STATUS', ReactNo) +* If HaveLock then +* OrigReactStatRec = Database_Services('ReadDataRow', 'REACT_STATUS', ReactNo) +* ReactStatRec = OrigReactStatRec +* If Error_Services('NoError') then +* For Col = 1 to 9 +* OrigList = OrigReactStatRec +* If OrigList NE '' then +* CleanList = '' +* For each Val in OrigList using @VM +* If Val NE 1 then CleanList<0, -1> = Val +* Next Val +* ReactStatRec = CleanList +* end +* Next Col +* If OrigReactStatRec NE ReactStatRec then +* Database_Services('WriteDataRow', 'REACT_STATUS', ReactNo, ReactStatRec, True$, False$, False$) +* end else +* Database_Services('ReleaseKeyIDLock', 'REACT_STATUS', ReactNo) +* end +* end +* end +* Next ReactNo +* +* return +* +* +* +* WMIn: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,REACTOR_LOG_EVENTS', '', '', '') +* +* return +* +* +* Sched: +* +* Open 'SCHED_DET_NG' to hTable then +* Select hTable +* EOF = False$ +* Loop +* ReadNext KeyID else EOF = True$ +* Until EOF +* StartDtm = Xlate('SCHED_DET_NG', KeyID, 'START_DTM', 'X') +* If DCount(StartDtm, @VM) GT 1 then debug +* StopDtm = Xlate('SCHED_DET_NG', KeyID, 'STOP_DTM', 'X') +* If DCount(StopDtm, @VM) GT 1 then debug +* Repeat +* end +* +* +* return +* +* PushSched: +* +* Def = "" +* Def = "Pushing data..." +* Def = "GC" +* Def = 114 +* Def = 400 +* MsgUp = Msg(@window, Def) +* +* Counter = 0 +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'ACTIVE_WO') +* For each Key in KeyList using @FM +* Counter += 1 +* Msg(@window, MsgUp, Counter, MSGINSTUPDATE$) +* Copy_Record_To_SQL('WO_LOG', Key, True$) +* Next Key +* Msg(@window, MsgUp) ;* take down the gauge +* Open 'WO_LOG' to hTable then +* Select hTable +* EOF = False$ +* Counter = 0 +* Loop +* Counter += 1 +* Msg(@window, MsgUp, Counter, MSGINSTUPDATE$) +* ReadNext Key else EOF = True$ +* Until EOF +* Copy_Record_To_SQL('WO_LOG', Key, True$) +* Repeat +* Msg(@window, MsgUp) ;* take down the gauge +* end +* +* return +* +* DateFix: +* +* debug +* Keys = Schedule_Services('GetScheduleDetailKeys', Date() - 90, Date(), 35) +* +* return +* +* Reactors: +* +* debug +* table = "RDS" +* Open "DICT ":table To @DICT Else +* RetVal = Set_FSError() +* Return +* End +* Column = "DATE_OUT" +* search_criteria = column:@VM:'01/01/23~01/11/23':@FM +* keylist = "" +* option = "" +* flag = "" +* Btree.Extract(search_criteria, table, @DICT, keylist, option, flag) +* +* return +* +* Testing: +* +* Def = "" +* Def = "Populating performance data..." +* Def = "GC" +* Def = 600 +* EndDate = IConv('12/01/22', 'D') +* StartDate = IConv('01/13/23', 'D') +* Counter = 0 +* Def = StartDate - EndDate +* MsgUp = Msg(@window, Def) +* For ReportDate = StartDate to EndDate Step -1 +* Counter += 1 +* ConvReportDate = OConv(ReportDate, 'D4/') +* Report_Services('CalcDailyPerformanceData', ConvReportDate) +* While Msg(@window, MsgUp, Counter, MSGINSTUPDATE$) +* Next ReportDate +* Msg(@window, MsgUp) ;* take down the gauge +* +* return +* +* +* EmailTest: +* +* debug +* objLog = Logging_Services('NewLog', 'D:\Tmp', 'EmailLogTest.txt', @RM, @FM, '', '', '', False$) +* LogData = 'This is a test' +* Logging_Services('AppendLog', objLog, LogData, @FM, ',', '', 'Stieber.external@infineon.com,Jonathan.Ouellette@infineon.com', LogData) +* +* return +* +* EpiPart: +* +* debug +* +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'PROD_SPEC_6593_INACTIVE_PROD_VER') +* +* For each KeyID in KeyList using @FM +* Rec = Database_Services('ReadDataRow', 'PROD_SPEC', KeyID) +* If Error_Services('NoError') then +* Rec = 'I' +* Database_Services('WriteDataRow', 'PROD_SPEC', KeyID, Rec, True$, False$, True$) +* If Error_Services('HasError') then +* Error_Services('DisplayError') +* end +* end +* Next KeyID +* +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'PROD_VER_6593_INACTIVE') +* +* For each KeyID in KeyList using @FM +* Rec = Database_Services('ReadDataRow', 'PROD_VER', KeyID) +* If Error_Services('NoError') then +* Rec = 'I' +* Database_Services('WriteDataRow', 'PROD_VER', KeyID, Rec, True$, False$, True$) +* If Error_Services('HasError') then +* Error_Services('DisplayError') +* end +* end +* Next KeyID +* +* return +* +* +* FormMetricsReport: +* debug +* ReportList = '' +* List = Get_Repos_Entities('LSL2', 'OIWIN', '', False$) +* For each Row in List using @FM setting fPos +* ReportList = Field(Row, '*', 4) +* Next Row +* +* FormMetrics = Database_Services('ReadDataRow', 'SYSLISTS', 'FORM_METRICS_20221216') +* +* LastLaunch = 0 +* FormCounts = '' +* EOF = False$ +* +* For each Key in FormMetrics using @FM setting fPos +* +* FormName = Field(Key, '*', 1) +* Locate FormName in ReportList using @FM setting fPos then +* FormCounts = FormCounts + 1 +* end +* +* Next Key +* +* NumForms = DCount(ReportList, @FM) +* For FormIndex = 1 to NumForms +* FormCount = FormCounts +* If FormCount EQ '' then FormCount = 0 +* ReportList = FormCount +* Next FormIndex +* +* ReportList = Insert(ReportList, 1, 0, 0, 'Form Name':@VM:'Launch Count') +* Swap @VM with ',' in ReportList +* Swap @FM with CRLF$ in ReportList +* OSWrite ReportList on 'D:\FITemp\FormCounts20221216.csv' +* +* return +* +* RxType: +* debug +* Database_Services('ActivateRecord', 'RDS', 565182) +* IF @RECORD<2> = '' THEN +* @ANS = XLATE('PROD_SPEC',@RECORD<114>, PROD_SPEC_REACTOR_TYPE$, 'X' ) +* END ELSE +* @ANS = XLATE('REACTOR',@RECORD<2>,1,'X') +* END +* return +* +* +* WMQty: +* +* For Cursor = 1 to 8 +* ClearSelect Cursor +* Next Cursor +* +* Open 'MAKEUP_WAFERS' to hTable then +* Select hTable +* EOF = False$ +* Loop +* ReadNext KeyID else EOF = True$ +* Until EOF +* WMOKey = Xlate('MAKEUP_WAFERS', KeyID, 'WM_OUT_NO', 'X') +* If WMOKey NE '' then +* Rec = Database_Services('ReadDataRow', 'WM_OUT', WMOKey) +* Database_Services('WriteDataRow', 'WM_OUT', WMOKey, Rec) +* end else +* Rec = Database_Services('ReadDataRow', 'WO_MAT', KeyID) +* Database_Services('WriteDataRow', 'WO_MAT', KeyID, Rec) +* end +* Repeat +* end +* +* return +* +* CassStatus: +* +* WONo = @ID[1,'*'] +* CassNo = @ID[-1,'B*'] +* WMOStatus = obj_WM_Out('CurrStatus', WONo:'*1*':CassNo) +* RepStatus = obj_WO_Mat('ReportStatus', @ID) +* RepStatus = XLATE('WO_MAT',WONo:'*':CassNo,'REP_STATUS','X')[-1,'B':@VM] +* IF RepStatus = '' OR RepStatus[1,3] NE 'WMO' THEN +* WMOCurrStatus = Xlate('WM_OUT', '171227*1*21', 'CURR_STATUS', 'X') +* @ANS = OCONV(WMOCurrStatus,'[WM_OUT_CURR_STATUS_CONV]') +* END ELSE +* @ANS = RepStatus +* END +* +* +* return +* +* PopulateSAPHoldDTM: +* +* debug +* Open 'SAP_HOLD' to hTable then +* Select hTable +* EOF = False$ +* Loop +* Readnext KeyID else EOF = True$ +* Until EOF +* Read Rec from hTable, KeyID then +* WOMatKey = Rec<2> +* HoldFlag = Rec<4> +* InvActions = Xlate('WO_MAT', WOMatKey, 'INV_ACTION', 'X') +* InvDTMs = Xlate('WO_MAT', WOMatKey, 'INV_DTM', 'X') +* If HoldFlag then +* Locate 'HOLD_ON' in InvActions using @VM setting vPos then +* TransDTM = InvDTMs<0, vPos> +* end +* end else +* Locate 'HOLD_OFF' in InvActions using @VM setting vPos then +* TransDTM = InvDTMs<0, vPos> +* end +* end +* Rec<5> = TransDTM +* Write Rec on hTable, KeyID else +* ErrMsg('Error') +* end +* end +* Repeat +* end +* +* +* return +* +* +* Fix: +* +* debug +* RDSKeys = Xlate('WO_STEP', '171611*1', 'RDS_KEY', 'X') +* NumRDS = DCount(RDSKeys, @VM) +* For RDSIndex = 1 to 8 +* RDSNo = RDSKeys<0, RDSIndex> +* RDSLayerKey = RDSNo:'*L1' +* RDSLayerRec = Database_Services('ReadDataRow', 'RDS_LAYER', RDSLayerKey) +* RDSLayerRec = 930 +* Database_Services('WriteDataRow', 'RDS_LAYER', RDSLayerKey, RDSLayerRec, True$, False$, True$) +* Next RDSIndex +* +* For each RDSNo in RDSKeys using @VM +* RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo) +* RDSRec = 7115 +* RDSRec = 4546 +* Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$) +* Next RDSNo +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,REPORT_SERVICES_DEV5', '', '', '') +* +* return +* +* +* CleanPM: +* +* debug +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* For each Key in KeyList using @FM setting fPos +* Copy_Record_To_Sql('RDS', Key, 0) +* Next Key +* +* +* z +* return +* +* +* +* UpdateRecipe: +* +* debug +* RDSNos = Xlate('WO_STEP', '171626*1', 'RDS_KEY', 'X') +* For each RDSNo in RDSNos using @VM +* LayerKeys = Xlate('RDS', RDSNo, 'RDS_LAYER_KEYS', 'X') +* For each LayerKey in LayerKeys using @VM setting vPos +* LayerRec = Database_Services('ReadDataRow', 'RDS_LAYER', LayerKey) +* LayerRec = 930 +* Database_Services('WriteDataRow', 'RDS_LAYER', LayerKey, LayerRec) +* LSId = Field(LayerKey, '*', 2) +* obj_RDS_Layer('UpdateLimits',RDSNo:@RM:LSId) +* Next LayerKey +* Next RDSNo +* +* +* return +* +* +* TWProd: +* +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* debug +* Def = "" +* Def = "Pushing RDS data to SCRAPE..." +* Def = "GC" +* Def = DCount(KeyList, @FM) +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For each Key in KeyList using @FM setting fPos +* Copy_Record_To_Sql('RDS', Key, 0) +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Next Key +* +* Msg(@WINDOW, MsgUp) +* +* return +* +* CleanSched: +* +* debug +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* For each Key in KeyList using @FM +* Database_Services('DeleteDataRow', 'SCHED_DET_NG', Key) +* Next Key +* +* +* return +* +* Email: +* +* Recipients = 'DANIEL_ST' +* SentFrom = 'OI_ADMIN' +* Subject = 'Auto-Scheduler Error' +* Message = 'Invalid START_DTM and STOP_DTM calculated in AdjustScheduleEvents for event CC4E8D2AAE2F4632BF761320553910D4.' +* AttachWindow = '' +* AttachKey = '' +* SendToGroup = '' +* Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup +* obj_Notes('Create',Parms) +* +* +* return +* +* WFRSOut: +* +* debug +* WfrsOut = Xlate('RDS', 553940, 'WFRS_OUT', 'X') +* WfrsOut := @SVM +* WfrsLen = Len(WfrsOut) +* CleanWfrs = '' +* For CharIndex = 1 to WfrsLen +* If Num(WfrsOut[CharIndex, 1]) then CleanWfrs := WfrsOut[CharIndex, 1] +* Next CharIndex +* +* return +* +* +* +* WafersIn: +* +* +* Copy_Record_To_SQL('REACT_RUN', 550886) +* RDSRec = Database_Services('ReadDataRow', 'RDS', 550886) +* WafersIn = 25:@SVM:'' +* WafersIn = WafersIn<1,1,1> +* +* Array = '' +* Array<1,1> = 1 +* Array<1,2> = 1.1 +* Array<2> = 2 +* +* Test_Daniel2() +* debug +* +* return +* +* WOMatStatus: +* +* CINo = 2175647 +* ErrorMessage = 'The clean & inspect record ':CINo:' has been updated since the form was opened! ' +* ErrorMessage := 'Metrology data has likely been imported since you read the record. ' +* ErrorMessage := 'Please close the form and try again.' +* ErrMsg('Save error!':@SVM:ErrorMessage) +* +* WOMatKey = '171358*54' +* CassetteQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X') +* RejectedWafers = XLATE('WO_MAT', WOMatKey, 'TOT_REJ_WFRS', 'X') +* RejectedMUWafers = XLATE('WO_MAT', WOMatKey, 'TOT_REJ_MU_WFRS', 'X') +* ProdTestWafers = XLATE('WO_MAT', WOMatKey, 'TW_PROD','X') +* CurrWfrCount = XLATE('WO_MAT', WOMatKey, 'CURR_WFR_CNT', 'X') +* +* +* return +* +* +* CleanRepMan: +* debug +* Open 'REPLICATION_QUEUE_LSL2_WM_OUT' to TableHandle then +* Select TableHandle +* EOF = False$ +* Loop +* ReadNext @ID else EOF = True$ +* Until EOF +* TransType = Field(@ID, '*', 1) +* If TransType EQ 'WRITE' or TransType EQ 'DELETE' then +* Delete TableHandle, @ID then Null +* end +* Repeat +* end +* +* return +* +* +* +* +* +* +* +* +* CleanRDS: +* debug +* RDSNo = NextKey('RDS') +* +* // Delete old instance of this RDS if it exists ------------------------------------------------------------------------ +* If RowExists('RDS', RDSNo) then +* Database_Services('DeleteDataRow', 'RDS', RDSNo, True$, False$) +* If Error_Services('NoError') then +* Results = 'RDS ' : RDSNo : ' deleted' +* end else +* Results = 'RDS ' : RDSNo : ' not deleted. Error : ' : Error_Services('GetMessage') +* end +* end +* // --------------------------------------------------------------------------------------------------------------------- +* +* +* // Delete related RDS_LAYER records ------------------------------------------------------------------------------------ +* Layers = 'L1,L2,2' +* For each Layer in Layers using ',' +* RDSLayerKey = RDSNo:'*':Layer +* If RowExists('RDS_LAYER', RDSLayerKey) then +* // Look for related RDS_TEST records and delete them first +* RDSTestKeys = Xlate('RDS_LAYER', RDSLayerKey, 'RDS_TEST_KEYS', 'X') +* If RDSTestKeys NE '' then +* For each RDSTestKey in RDSTestKeys using @VM setting vPos +* // Look for related TW_USE records and delete them first +* TWKeys = Xlate('RDS_TEST', RDSTestKey, 'TW_USE_ID', 'X') +* If TWKeys NE '' then +* For each TWKey in TWKeys using @VM setting vPos +* Database_Services('DeleteDataRow', 'TW_USE', TWKey, True$, True$) +* Next TWKey +* end +* Database_Services('DeleteDataRow', 'RDS_TEST', RDSTestKey, True$, True$) +* Next RDSTestKey +* end +* Database_Services('DeleteDataRow', 'RDS_LAYER', RDSLayerKey, True$, False$) +* If Error_Services('NoError') then +* Results = 'RDS_LAYER ' : RDSLayerKey : ' deleted' +* end else +* Results = 'RDS_LAYER ' : RDSLayerKey : ' not deleted. Error : ' : Error_Services('GetMessage') +* end +* end +* Next Layer +* // --------------------------------------------------------------------------------------------------------------------- +* +* +* // Delete old REACT_RUN record if it exists ---------------------------------------------------------------------------- +* If RowExists('REACT_RUN', RDSNo) then +* // Delete old CLEAN_INSP record(s) if they exist +* CIKeys = Xlate('REACT_RUN', RDSNo, 'CI_NO', 'X') +* For each CIKey in CIKeys using @VM setting vPos +* If RowExists('CLEAN_INSP', CIKey) then +* Database_Services('DeleteDataRow', 'CLEAN_INSP', CIKey, True$, False$) +* If Error_Services('NoError') then +* Results = 'CLEAN_INSP ' : CIKey : ' deleted' +* end else +* Results = 'CLEAN_INSP ' : CIKey : ' not deleted. Error : ' : Error_Services('GetMessage') +* end +* end +* Next CIKey +* Database_Services('DeleteDataRow', 'REACT_RUN', RDSNo, True$, False$) +* If Error_Services('NoError') then +* Results = 'REACT_RUN ' : RDSNo : ' deleted' +* end else +* Results = 'REACT_RUN ' : RDSNo : ' not deleted. Error : ' : Error_Services('GetMessage') +* end +* end +* // --------------------------------------------------------------------------------------------------------------------- +* +* +* +* return +* +* +* RDSKey: +* +* Debug +* +* +* return +* +* +* RDSTest: +* +* DateIn = Xlate('RDS', 456789, 'DATE_IN', 'X') +* +* +* Fields = Xlate('DICT.WO_MAT', '%FIELDS%', 3, 'X') +* For each Field in Fields using @VM setting vPos +* Val = Xlate('WO_MAT', '171151*58', Field, 'X') +* Next Field +* +* +* return +* +* +* RepTest: +* +* Debug +* OITarget = Replication_Services('GetTargetServerPath') +* +* return +* +* +* TestMsg: +* +* Def = "" +* Def = '*' +* Def = 'INFINEON' +* Def = 'Success' +* Def = "Metrology limits update complete!" +* Def = "BO" +* MsgUp = Msg(@window, Def) +* return +* +* +* SAPYield: +* +* debug +* Yield = Xlate('WO_MAT', '171379*1', 'SAP_YIELD', 'X') +* +* +* return +* +* +* Push: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,NDW_RDS_UPDATE_MET_LIMITS_EVENTS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,WORK_ORDER_SERVICES', '', '', '') +* +* return +* +* Verify: +* +* WOList = 171402 +* WOList<-1> = 171396 +* WOList<-1> = 171179 +* WOList<-1> = 171069 +* +* For each WorkOrderNo in WOList using @FM +* If RowExists('WO_LOG', WorkOrderNo) then +* Work_Order_Services('UpdateReleasedQty', WorkOrderNo) +* WORec = Database_Services('ReadDataRow', 'WO_LOG', WorkOrderNo) +* WOQty = WORec +* RXQty = obj_WO_Log('RxQty', WorkOrderNo:@RM:WORec) +* RelQty = obj_WO_Log('RelQty', WorkOrderNo:@RM:WORec) +* If RelQty GT WOQty then +* UnRelQty = 0 +* end else +* UnRelQty = WOQty - RelQty +* end +* ShipQty = obj_WO_Log('ShipQty', WorkOrderNo:@RM:WORec) +* RxQtyStatic = Xlate('WO_LOG', WorkOrderNo, 'RX_QTY_STATIC', 'X') +* RelQtyStatic = Xlate('WO_LOG', WorkOrderNo, 'REL_QTY_STATIC', 'X') +* UnRelQtyStatic = Xlate('WO_LOG', WorkOrderNo, 'UNREL_QTY_STATIC', 'X') +* ShipQtyStatic = Xlate('WO_LOG', WorkOrderNo, 'SHIP_QTY_STATIC', 'X') +* If RxQty NE RxQtyStatic then +* Error<-1> = WorkOrderNo : ' RX_QTY mismatch' +* Work_Order_Services('UpdateReceivedQty', WorkOrderNo) +* end +* If RelQty NE RelQtyStatic or UnRelQty NE UnRelQtyStatic then +* Error<-1> = WorkOrderNo : ' REL_QTY and/or UNREL_QTY mismatch' +* Work_Order_Services('UpdateReleasedQty', WorkOrderNo) +* end +* If ShipQty NE ShipQtyStatic then +* Error<-1> = WorkOrderNo : ' SHIP_QTY mismatch' +* Work_Order_Services('UpdateShippedQty', WorkOrderNo) +* end +* end +* Next WorkOrderNo +* +* return +* +* WOAudit: +* debug +* Error = '' +* +* NextWO = Xlate('DICT.WO_LOG', '%SK%', 1, 'X') +* LastWO = NextWO - 1 +* +* NumWO = LastWO - 171000 +* Def = "" +* Def = "Verifying work order quantities..." +* Def = "GC" +* Def = NumWO +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* Counter = 1 +* For WorkOrderNo = LastWO to 171000 Step -1 +* Running = Msg(@WINDOW, MsgUp, Counter, MSGINSTUPDATE$) ;* Update message +* If RowExists('WO_LOG', WorkOrderNo) then +* WORec = Database_Services('ReadDataRow', 'WO_LOG', WorkOrderNo) +* WOQty = WORec +* RXQty = obj_WO_Log('RxQty', WorkOrderNo:@RM:WORec) +* RelQty = obj_WO_Log('RelQty', WorkOrderNo:@RM:WORec) +* If RelQty GT WOQty then +* UnRelQty = 0 +* end else +* UnRelQty = WOQty - RelQty +* end +* ShipQty = obj_WO_Log('ShipQty', WorkOrderNo:@RM:WORec) +* RxQtyStatic = Xlate('WO_LOG', WorkOrderNo, 'RX_QTY_STATIC', 'X') +* RelQtyStatic = Xlate('WO_LOG', WorkOrderNo, 'REL_QTY_STATIC', 'X') +* UnRelQtyStatic = Xlate('WO_LOG', WorkOrderNo, 'UNREL_QTY_STATIC', 'X') +* ShipQtyStatic = Xlate('WO_LOG', WorkOrderNo, 'SHIP_QTY_STATIC', 'X') +* If RxQty NE RxQtyStatic then +* Error<-1> = WorkOrderNo : ' RX_QTY mismatch' +* Work_Order_Services('UpdateReceivedQty', WorkOrderNo) +* end +* If RelQty NE RelQtyStatic or UnRelQty NE UnRelQtyStatic then +* Error<-1> = WorkOrderNo : ' REL_QTY and/or UNREL_QTY mismatch' +* Work_Order_Services('UpdateReleasedQty', WorkOrderNo) +* end +* If ShipQty NE ShipQtyStatic then +* Error<-1> = WorkOrderNo : ' SHIP_QTY mismatch' +* Work_Order_Services('UpdateShippedQty', WorkOrderNo) +* end +* end +* Counter += 1 +* Next WorkOrderNo +* +* Msg(@WINDOW,MsgUp) +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'WO_QTY_ERROR', Error) +* +* return +* +* +* UpdateWorkOrderQuantities: +* +* debug +* StartDate = Date() - 120 +* EndDate = Date() + 120 +* SchedDetKeyIDs = Schedule_Services('GetScheduleDetailKeys', StartDate, EndDate) +* If SchedDetKeyIDs NE '' then +* NumKeys = DCount(SchedDetKeyIDs, @FM) +* Def = "" +* Def = "Populating work order quantities..." +* Def = "GC" +* Def = NumKeys +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For Each SchedDetKeyID in SchedDetKeyIDs using @FM setting fPos +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* SchedDetRec = Database_Services('ReadDataRow', 'SCHED_DET_NG', SchedDetKeyID) +* WorkOrderNo = SchedDetRec +* Work_Order_Services('UpdateReceivedQty', WorkOrderNo) +* Work_Order_Services('UpdateReleasedQty', WorkOrderNo) +* Work_Order_Services('UpdateShippedQty', WorkOrderNo) +* +* Next SchedDetKeyID +* end +* +* Msg(@WINDOW,MsgUp) +* +* return +* +* SAPAudit: +* +* WONo = 171188 +* WOMatKeys = Xlate('WO_LOG', WONo, 'WO_MAT_KEY', 'X') +* BatchIds = Xlate('WO_LOG', WONo, 'SAP_BATCH_NO', 'X') +* SAPYields = Xlate('WO_LOG', WONo, 'WO_MAT_SAP_YIELD', 'X') +* SAPScrap = Xlate('WO_LOG', WONo, 'WO_MAT_SAP_CONFIRM_SCRAP', 'X') +* +* ReportData = 'WO_MAT Key, SAP Batch Id, SAP Yield, SAP Scrap':CRLF$ +* For each WOMatKey in WOMatKeys using @VM setting vPos +* ReportData := WOMatKey:',':BatchIds<0, vPos>:',':SAPYields<0, vPos>:',':SAPScrap<0, vPos>:CRLF$ +* Next WOMatKey +* +* OSWrite ReportData on 'D:\FITemp\SAPExport.csv' +* +* return +* +* +* PushCode: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_REACT_STATUS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,RDS_UNLOAD_EVENTS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,DBW_RDS_OVERVIEW_NEPP_EVENTS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,SCAN_SERVICES', '', '', '') +* +* return +* +* +* CleanEPP: +* debug +* WONo = 171177 +* CassList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* For each CassNo in CassList using @FM setting fPos +* WMIKey = WONo:'*1*':CassNo +* WMOKey = WONo:'*1*':CassNo +* WOMatKey = WONo:'*':CassNo +* Database_Services('DeleteDataRow', 'WM_IN', WMIKey) +* Database_Services('DeleteDataRow', 'WM_OUT', WMOKey) +* Database_Services('DeleteDataRow', 'WO_MAT', WOMatKey) +* Next CassNo +* +* For CassNo = 39 to 52 Step 1 +* WMOKey = WONo:'*1*':CassNo +* Database_Services('DeleteDataRow', 'WM_OUT', WMOKey) +* Next CassNo +* +* return +* +* +* QAMetUpdate: +* debug +* WONo = 171309 +* +* For CassNo = 8 to 24 +* WOMatQAKey = WONo:'*':CassNo +* //PSN_Services('UpdateQAMetrologyLimits', WOMatQAKey, 'QA', '1ADE', 'L') +* PSN_Services('UpdateAllQAMetrologyLimits', WOMatQAKey) +* If Error_Services('HasError') then ErrMsg(Error_Services('GetMessage')) +* Next CassNo +* debug +* return +* +* +* ReactStatus: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,REPORT_SERVICES_DEV', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_REACT_STATUS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,QA_SERVICES', '', '', '') +* +* return +* +* FormList: +* +* ReportList = '' +* List = Get_Repos_Entities('LSL2', 'OIWIN', '', False$) +* For each Row in List using @FM setting fPos +* ReportList = Field(Row, '*', 4) +* Next Row +* +* LastLaunch = 0 +* FormCounts = '' +* EOF = False$ +* Open 'FORM_METRICS' to hTable then +* Select hTable +* Loop +* Readnext Key else EOF = True$ +* Until EOF +* FormName = Field(Key, '*', 1) +* Locate FormName in ReportList using @FM setting fPos then +* FormCounts = FormCounts + 1 +* end +* Repeat +* end +* +* NumForms = DCount(ReportList, @FM) +* For FormIndex = 1 to NumForms +* FormCount = FormCounts +* If FormCount EQ '' then FormCount = 0 +* ReportList = FormCount +* Next FormIndex +* +* ReportList = Insert(ReportList, 1, 0, 0, 'Form Name':@VM:'Launch Count') +* Swap @VM with ',' in ReportList +* Swap @FM with CRLF$ in ReportList +* OSWrite ReportList on 'D:\FITemp\FormCounts.csv' +* +* return +* +* TestRep: +* debug +* KeyList = 73468 +* For each KeyID in KeyList using @FM setting fPos then +* TableName = 'NOTES' +* +* If TableName NE '' and KeyID NE '' then +* TransID = '' +* TransID<1> = 'WRITE' +* TransID<2> = 'LSL2' +* TransID<3> = 'LSL' +* TransID<4> = TableName +* TransID<5> = KeyID +* Write_OI_To_Sql(TransID) +* end +* +* //Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Next KeyID +* return +* +* +* +* +* +* SendEmail: +* +* ConfigFile = '' +* ConfigFile<1> = SendUsing_Port$ +* ConfigFile<2> = '' +* ConfigFile<3> = 25 ;* Server port +* *ConfigFile<4> = 'appmail.eu.infineon.com' ;* IFX Mail server +* ConfigFile<4> = 'mailrelay-external.infineon.com' +* ConfigFile<5> = Yes$ ;* Authenticate +* ConfigFile<6> = 'oinotify@infineon.com' ;* Username +* ConfigFile<7> = 'oinotify1' ;* Password +* ConfigFile<8> = No$ ;* Use SSL +* +* SentFrom = 'oinotify@infineon.com' +* +* Message = '' +* Message<1> = 'Test' ; * Subject +* Message<2> = SentFrom ; * From (email address) +* Message<3> = 'dstieber@srpcs.com'; * Send to (email address) +* Message<5> = '' ; * Blind Carbon Copy (email address) +* Message<6> = '' ; * Reply To (email address) +* Message<7> = 'TEXT' ; * Content Type (TEXT or HTML) +* Message<8> = 'Testing' ; * Content / Body +* Message<9> = '' ; * Attachment(s) (path to file name(s)) +* +* MsgSent = SRPSendMail(Message, ConfigFile) +* +* return +* +* TestText: +* +* PrintPath = 'ZEBRA01' +* NewPrintPath = Dialog_Box('NDW_EDIT_TEXT', @Window, PrintPath) +* debug +* +* return +* +* +* PushFix: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,REPORT_SERVICES_DEV2', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,PRINTSETUP', '', '', '') +* +* return +* +* +* KeyCheck: +* +* Open 'WO_MAT' to hTable then +* Query = 'SELECT WO_MAT' +* RList(Query, TARGET_ACTIVELIST$, '', '', '') +* KeyID = '' +* EOF = False$ +* Counter = 0 +* Loop +* Counter += 1 +* Readnext KeyID, Value else EOF = True$ +* Until EOF +* If Value then +* !!! Error @VM in key ID +* DEBUG +* end else +* Read Rec from hTable, KeyID else +* !!! Error @FM in key ID +* DEBUG +* end +* end +* Send_Info('Key ':KeyID:' Loop ':Counter:' of ':@RecCount) +* Repeat +* +* +* end +* +* return +* +* +* Location: +* +* +* CurrLoc = Xlate('WO_MAT', '171087*16', 'CURR_LOCATION', 'X') +* +* return +* +* +* TestDebug: +* +* S.WONo = '171087' +* +* CRLocs = '' +* CRLocs<0, -1> = 'CR*BE' +* CRLocs<0, -1> = 'CR*BO' +* CRLocs<0, -1> = 'CR*TUN' +* CRLocs<0, -1> = 'CR*EPR' +* CRLocs<0, -1> = 'CR*FE' +* CRLocs<0, -1> = 'CR*FEH' +* CRLocs<0, -1> = 'CR*FO' +* CRLocs<0, -1> = 'CR*FOH' +* +* LoadedData = '' +* LocQueryList = CRLocs +* +* If @User4 EQ 'DANIEL_ST' and S.WONo EQ '171087' then debug +* LoadedCassList = '' +* ReactType = Xlate('WO_LOG', S.WONo, 'REACT_TYPE', 'X') +* If ReactType NE 'EPP' then +* If LocQueryList NE '' then +* LoadedData = Location_Services('GetLocationCassInfoRList', S.WONo, LocQueryList) +* end +* end +* +* return +* +* +* RejQty: +* +* Debug +* WOMatKeys = '170520*11' ; //'171149*40':@VM:'170804*21' +* For each WOMatKey in WOMatKeys using @VM setting vPos +* WorkOrderNo = Field(WOMatKey, '*', 1) +* ReactorType = XLATE('WO_LOG', WorkOrderNo, 'REACT_TYPE', 'X') +* ReactorType = Field(ReactorType, @VM, 1) +* CassetteQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X') +* RejectedWafers = XLATE('WO_MAT', WOMatKey, 'TOT_REJ_WFRS', 'X') +* RejectedMUWafers = XLATE('WO_MAT', WOMatKey, 'TOT_REJ_MU_WFRS', 'X') +* ProdTestWafers = XLATE('WO_MAT', WOMatKey, 'TW_PROD','X') +* CurrWfrCount = XLATE('WO_MAT', WOMatKey, 'CURR_WFR_CNT', 'X') +* +* IF (RejectedWafers = '') then +* RejectedWafers = 0 +* END +* IF (RejectedMUWafers = '') then +* RejectedMUWafers = 0 +* END +* IF (ProdTestWafers = '') then +* ProdTestWafers = 0 +* END +* +* IF ((ReactorType = 'EPP') OR (ReactorType = 'EpiPro')) THEN +* RejectedQty = RejectedWafers + RejectedMUWafers +* END ELSE +* RejectedQty = RejectedWafers + RejectedMUWafers + ProdTestWafers +* END +* +* If ( (CurrWfrCount EQ 0) and (RejectedQty GE CassetteQty) ) then +* Null ; // Mark cassette as full box reject +* end +* Next WOMatKey +* +* +* RejectedWafers = 0 +* RejectedMUWafers = 0 +* ProdTestWafers = 0 +* +* Set_Status(0) +* CassetteQty = XLATE('WO_MAT', WOMatKey, 'WAFER_QTY', 'X') +* RejectedWafers = Sum(XLATE('WO_MAT', WOMatKey, 'TOT_REJ_WFRS', 'X')) +* RejectedMUWafers = Sum(XLATE('WO_MAT', WOMatKey, 'TOT_REJ_MU_WFRS', 'X')) +* +* IF (RejectedWafers = '') then +* RejectedWafers = 0 +* END +* IF (RejectedMUWafers = '') then +* RejectedMUWafers = 0 +* END +* +* RejectedQty = RejectedWafers + RejectedMUWafers +* +* return +* +* +* Schedule: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,SCHEDULER_DEV_EVENTS', '', '', '') +* +* return +* +* +* Status: +* +* debug +* WOMatKey = '170964*21' +* WMOKey = '170964*1*21' +* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) +* WOMatStatus = obj_WO_Mat('CurrStatus', WOMatKey:@RM:WOMatRec) +* ReportStatus = obj_WO_Mat('ReportStatus', WOMatKey:@RM:WOMatRec) +* WMORec = Database_Services('ReadDataRow', 'WM_OUT', WMOKey) +* WMOStatus = obj_WM_Out('CurrStatus', WMOKey:@RM:WMORec) +* +* +* return +* +* CleanEvents: +* debug +* Events = Get_Repos_Entities('LSL2', 'OIEVENT', '', '', '', '', '') +* For each Event in Events using @FM setting fPos +* Key = 'LSL2*':Field(Event, '*', 3, 1):'*':Field(Event, '*', 4, 1) +* Code = Database_Services('ReadDataRow', 'SYSREPOSEVENTS', Key) +* OrigCode = Code +* Swap '$insert sysprocs, ' with '$insert ' in Code +* Swap '$INSERT SYSPROCS, ' with '$INSERT ' in Code +* If Code NE OrigCode then +* Database_Services('WriteDataRow', 'SYSREPOSEVENTS', Key, Code) +* end +* Next Event +* +* +* // CleanStProcs +* +* StProcs = Get_Repos_Entities('LSL2', 'STPROC', '', '', '', '', '') +* For each StProc in StProcs using @FM setting fPos +* StProcName = Field(StProc, '*', 4, 1) +* If StProcName NE 'TEST_DANIEL3' then +* Key = StProcName:'*LSL2' +* Code = Database_Services('ReadDataRow', 'SYSPROCS', Key) +* OrigCode = Code +* Swap '$insert sysprocs, ' with '$insert ' in Code +* Swap '$INSERT SYSPROCS, ' with '$INSERT ' in Code +* If Code NE OrigCode then +* Database_Services('WriteDataRow', 'SYSPROCS', Key, Code) +* end +* end +* Next StProc +* +* return +* +* +* DeadCodeList: +* +* debug +* DeadList = '' +* STProcList = Get_Repos_Entities('LSL2', 'STPROC', '') +* STProcList = SRP_Array('Rotate', STProcList, @FM, '*') +* STProcList = STProcList<4> +* STProcExeList = Get_Repos_Entities('LSL2', 'STPROCEXE', '') +* STProcExeList = SRP_Array('Rotate', STProcExeList, @FM, '*') +* STProcExeList = STProcExeList<4> +* Swap '*' with @FM in STProcList +* Swap '*' with @FM in STProcExeList +* For each STProc in StProcList using @FM setting fPos +* Locate STProc in STProcExeList using @FM setting dummy else +* DeadList<-1> = STProc +* end +* Next STProc +* Swap @FM with CRLF$ in DeadList +* OSWrite DeadList on 'C:\Users\StieberD\Desktop\DeadList.txt' +* +* return +* +* +* +* PushSchema: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,COMM_RECIPE', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,COPY_RDS_LAYER_RECORD_TO_SQL', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,COPY_RECIPE_RECORD_TO_SQL', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_RDS_LAYER', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,NDW_TOOL_PARMS_EVENTS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_RECIPE', '', '', '') +* +* return +* +* +* +* +* +* ReactMode: +* +* debug +* CurrModeKey = Xlate('REACTOR_CHILD_KEY_IDS_NG', 48, 1, 'X') +* +* +* return +* +* +* GanWIPJSON: +* +* JSON = Gan_Services('GetGaNWIPJSON') +* +* OSWrite JSON on 'C:\Users\StieberD\Documents\GaNWIP.json' +* +* +* return +* +* +* SAPScript: +* +* BadList = '' +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL8') +* Def = "" +* Def = "Scanning old records..." +* Def = "GC" +* Def = DCount(KeyList, @FM) +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For each Key in KeyList setting fPos +* SAPBatchNo = Xlate('WO_MAT', Key, 'SAP_BATCH_NO', 'X') +* SAPTxDTM = Xlate('WO_MAT', Key, 'SAP_TX_DTM', 'X') +* IF SAPBatchNo[-1,1] EQ 'R' and SAPTxDTM EQ '' then +* BadList<-1> = Key +* end +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Next Key +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL9', BadList) +* Msg(@WINDOW,MsgUp) +* +* +* BadList = '' +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL10') +* Def = "" +* Def = "Scanning new records..." +* Def = "GC" +* Def = DCount(KeyList, @FM) +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For each Key in KeyList setting fPos +* SAPBatchNo = Xlate('WO_MAT', Key, 'SAP_BATCH_NO', 'X') +* SAPTxDTM = Xlate('WO_MAT', Key, 'SAP_TX_DTM', 'X') +* IF SAPBatchNo[-1,1] EQ 'R' and SAPTxDTM EQ '' then +* BadList<-1> = Key +* end +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Next Key +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL11', BadList) +* Msg(@WINDOW,MsgUp) +* +* +* +* +* return +* +* +* EPPMetReport: +* +* ReportData = '' +* Headers = Database_Services('ReadDataRow', 'SYSLISTS', 'EPP_METROLOGY_HEADERS') +* Columns = Xlate('EXPORTS', 'EPIPRO_METOROLGY', 'COLUMNS', 'X') +* Swap @FM with @VM in Headers +* ReportData<1> = Headers +* +* RDSFields = Database_Services('ReadDataRow', 'DICT.RDS', '%FIELDS%') +* RDSColumns = RDSFields +* RDSConvs = RDSFields +* +* WMOList = Database_Services('ReadDataRow', 'SYSLISTS', 'WM_OUT_401678F_20210831') +* NumWMO = DCount(WMOList, @FM) +* +* Def = "" +* Def = "Building report..." +* Def = "GC" +* Def = NumWMO +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For each WMOKey in WMOList using @FM setting fPos +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* RowIndex = fPos + 1 +* ThisRDSList = Xlate('WM_OUT', WMOKey, 'RDS', 'X') +* Zones = Xlate('WM_OUT', WMOKey, 'ZONE', 'X') +* Pockets = Xlate('WM_OUT', WMOKey, 'POCKET', 'X') +* SAPBatchNo = Xlate('WM_OUT', WMOKey, 'SAP_BATCH_NO', 'X') +* PrevRDSNo = '' +* For each RDSNo in ThisRDSList using @VM setting SlotNo +* If RDSNo NE PrevRDSNo then Database_Services('ActivateRecord', 'RDS', RDSNo) +* ReportRow = '' +* For each Column in Columns using @VM setting cPos +* Locate Column in RDSColumns using @VM setting ConvPos then +* Conv = RDSConvs<0, ConvPos> +* Begin Case +* Case Column EQ 'WO' +* ReportRow<0, cPos> = Field(WMOKey, '*', 1) +* Case Column EQ 'SEQ' +* ReportRow<0, cPos> = RDSNo +* Case Column EQ 'ZONE' +* ReportRow<0, cPos> = Zones<0, SlotNo> +* Case Column EQ 'POCKET' +* ReportRow<0, cPos> = Pockets<0, SlotNo> +* Case Column EQ 'WM_OUT_KEY' +* ReportRow<0, cPos> = WMOKey +* Case Column EQ 'OUT_CASS_NO' +* ReportRow<0, cPos> = Field(WMOKey, '*', 3) +* Case Column EQ 'OUT_SLOT_NO' +* ReportRow<0, cPos> = SlotNo +* Case Column EQ 'SAP_BATCH_NO' +* ReportRow<0, cPos> = SAPBatchNo +* Case Otherwise$ +* If Conv EQ '' then +* ReportRow<0, cPos> = Calculate(Column) +* end else +* ReportRow<0, cPos> = OConv(Calculate(Column), Conv) +* end +* End Case +* end +* Next Column +* PrevRDSNo = RDSNo +* ReportData<-1> = ReportRow +* Next RDSNo +* +* Next WMOKey +* +* Swap @VM with ',' in ReportData +* Swap @FM with CRLF$ in ReportData +* OSWrite ReportData on 'D:\FITemp\EPPMetReport.csv' +* Msg(@WINDOW,MsgUp) +* +* return +* +* +* SelectEPP: +* +* // DateOut GT 08/31/2021 = 19602 +* RDSList = '' +* WMOList = Database_Services('ReadDataRow', 'SYSLISTS', 'WM_OUT_401678F') +* FilterWMOList = '' +* NumWMO = DCount(WMOList, @FM) +* For WMOIndex = 1 to NumWMO +* Done = False$ +* WMOKey = WMOList +* ThisRDSList = Xlate('WM_OUT', WMOKey, 'RDS', 'X') +* ThisRDSList = SRP_Array('Clean', ThisRDSList, 'TrimAndMakeUnique', @VM) +* For each RDSNo in ThisRDSList using @VM +* DateOut = Xlate('RDS', RDSNo, 'DATE_OUT', 'X') +* If DateOut GT 19602 then +* FilterWMOList<-1> = WMOKey +* Done = True$ +* end +* Until Done +* Next RDSNo +* Next WMOIndex +* Database_Services('WriteDataRow', 'SYSLISTS', 'WM_OUT_401678F_20210831', FilterWMOList) +* +* return +* +* +* WfrCnt: +* +* WOMatKey = '171038*13' +* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) +* debug +* CurrWfrCnt = obj_WO_Mat('CurrWaferCnt', WOMatKey:@RM:WOMatRec) +* +* +* return +* +* +* +* RDSList: +* +* RDSList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL_8') +* For each RDSNo in RDSList using @FM +* Database_Services('ActivateRecord', 'RDS', RDSNo) +* RejCnt1 = SUM(XLATE('NCR', {NCR_KEYS}, 'REJ_CNT', 'X')) +* RejCnt2 = {CUST_TOT_REJ} + {LSL_TOT_REJ} +* If RejCnt1 NE RejCnt2 then +* debug +* end +* +* Next RDSNo +* +* +* return +* +* +* CustScrap: +* +* SearchDir = 'D:\FTP\FTP_IN_REPOSITORY\Batch\2022\03 (March)\' +* InitDir SearchDir:'*' +* FileList = DirList() +* For each Filename in FileList using @FM +* +* OSRead FileData from SearchDir:Filename then +* Swap TAB$ with @FM in FileData +* If (Index(FileData, 'M015833', 1)) then +* debug +* end +* end +* Next Filename +* +* return +* +* YieldReport: +* +* WafersIn = 0 +* WafersOut = 0 +* CustScrap = 0 +* IFXScrap = 0 +* ProdTest = 0 +* SRPTotal = 0 +* +* RDSList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL5') +* For each RDSNo in RDSList using @FM +* WafersIn += Xlate('RDS', RDSNo, 'WAFERS_IN', 'X') +* WafersOut += Xlate('RDS', RDSNo, 'WFRS_OUT', 'X') +* +* // Scrap +* ThisCustScrap = Xlate('RDS', RDSNo, 'CUST_TOT_REJ', 'X') +* ThisIFXScrap = Xlate('RDS', RDSNo, 'LSL_TOT_REJ', 'X') +* CustScrap += ThisCustScrap +* IFXScrap += ThisIFXScrap +* +* // Prod Test +* RDSLayerKeys = Xlate('RDS', RDSNo, 'RDS_LAYER_KEYS', 'X') +* RDSTestKeys = Xlate('RDS_LAYER', RDSLayerKeys, 'RDS_TEST_KEYS', 'X') +* ThisProdTest = obj_RDS_Test('ProdTestCount', RDSTestKeys) +* ProdTest += ThisProdTest +* +* // SRP +* SRPTotal += Xlate('RDS', RDSNo, 'RESEARCH_SRP_BILLABLE', 'X') +* +* Next RDSNo +* +* Debug +* +* return +* +* +* ManRep: +* +* debug +* For SK = 1667 to 1702 +* TransactionID = Database_Services('ReadDataRow', 'REPLICATION_QUEUE_LSL2_WO_MAT', SK) +* Write_OI_To_SQL(TransactionID) +* If Error_Services('NoError') then +* Database_Services('DeleteDataRow', 'REPLICATION_QUEUE_LSL2_WO_MAT', SK) +* end +* Next SK +* +* +* +* return +* +* +* EPPReport: +* +* OSRead Report from 'D:\FITemp\book2.csv' then +* +* Swap CRLF$ with @FM in Report +* Swap ',' with @VM in Report +* NumRows = DCount(Report, @FM) +* +* Def = "" +* Def = "Updating report..." +* Def = "GC" +* Def = NumRows +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* Running = Msg(@WINDOW, MsgUp, 1, MSGINSTUPDATE$) ;* Update message +* +* For RowIndex = 2 to NumRows +* Row = Report +* WONo = Row<0, 10> +* CassNo = Row<0, 16> +* WMOKey = WONo:'*1*':CassNo +* If RowExists('WM_OUT', WMOKey) then +* SAPBatchNo = Xlate('WM_OUT', WMOKey, 'SAP_BATCH_NO', 'X') +* Row<0, 13> = SAPBatchNo +* Report = Row +* end +* Running = Msg(@WINDOW, MsgUp, RowIndex, MSGINSTUPDATE$) ;* Update message +* Next RowIndex +* end +* +* Swap @FM with CRLF$ in Report +* Swap @VM with ',' in Report +* OSWrite Report on 'D:\FITemp\book3.csv' +* Msg(@WINDOW,MsgUp) +* +* return +* +* +* FormList: +* +* ReportList = '' +* List = Get_Repos_Entities('LSL2', 'OIWIN', '', False$) +* For each Row in List using @FM setting fPos +* ReportList = Field(Row, '*', 4) +* Next Row +* +* LastLaunch = 0 +* FormCounts = '' +* EOF = False$ +* Open 'FORM_METRICS' to hTable then +* Select hTable +* Loop +* Readnext Key else EOF = True$ +* Until EOF +* FormName = Field(Key, '*', 1) +* If FormName EQ 'REACT_MODE_CHG' then +* LaunchDTM = Field(Key, '*', 3) +* If LaunchDTM GT LastLaunch then LastLaunch = LaunchDTM +* end +* Locate FormName in ReportList using @FM setting fPos then +* FormCounts = FormCounts + 1 +* end +* Repeat +* end +* +* debug +* LastLaunch = OConv(LastLaunch, 'DT') +* NumForms = DCount(ReportList, @FM) +* For FormIndex = 1 to NumForms +* FormCount = FormCounts +* If FormCount EQ '' then FormCount = 0 +* ReportList = FormCount +* Next FormIndex +* +* ReportList = Insert(ReportList, 1, 0, 0, 'Form Name':@VM:'Launch Count') +* Swap @VM with ',' in ReportList +* Swap @FM with CRLF$ in ReportList +* OSWrite ReportList on 'D:\FITemp\FormCounts.csv' +* +* return +* +* Fix: +* debug +* RDSList = Xlate('SYSLISTS', 'TEST_DANIEL6', '', 'X') +* Open 'RDS' to TableVar then +* Open 'DICT.RDS' to @Dict then +* Make.List(0, RDSList, TableVar, @Dict) +* +* If Get_Status(errCodes) Then +* FSMsg(errCodes) +* end else +* EOF = False$ +* Loop +* Readnext @ID else EOF = True$ +* +* Until EOF +* +* Repeat +* end +* end +* end +* +* return +* +* RDSList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL_BAD') +* +* Def = "" +* Def = "Scanning records..." +* Def = "GC" +* Def = DCount(RDSList, @FM) +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For each RDSNo in RDSList using @FM setting fPos +* RRRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo) +* WfrStages = RRRec +* Locate 'PLATO' in WfrStages using @VM setting PlatoPos then +* Locate 'CAN_PRE' in WfrStages using @VM setting CanPrePos then +* If PlatoPos LT CanPrePos then +* BadList<-1> = RDSNo +* end +* end +* end +* GaNStageRoute = RRRec +* Locate 'PLATO' in GaNStageRoute using @VM setting PlatoPos then +* Locate 'CAN_PRE' in GaNStageRoute using @VM setting CanPrePos then +* If PlatoPos LT CanPrePos then +* Locate RDSNo in BadList using @FM setting bPos else +* BadList<-1> = RDSNo +* end +* end +* end +* end +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Next RDSNo +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL_BAD', BadList) +* Msg(@WINDOW,MsgUp) +* +* return +* +* +* Scan: +* +* debug +* BadList = '' +* RDSList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_GAN') +* +* Def = "" +* Def = "Scanning records..." +* Def = "GC" +* Def = DCount(RDSList, @FM) +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For each RDSNo in RDSList using @FM setting fPos +* RRRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo) +* WfrStages = RRRec +* Locate 'PLATO' in WfrStages using @VM setting PlatoPos then +* Locate 'CAN_PRE' in WfrStages using @VM setting CanPrePos then +* If PlatoPos LT CanPrePos then +* BadList<-1> = RDSNo +* end +* end +* end +* GaNStageRoute = RRRec +* Locate 'PLATO' in GaNStageRoute using @VM setting PlatoPos then +* Locate 'CAN_PRE' in GaNStageRoute using @VM setting CanPrePos then +* If PlatoPos LT CanPrePos then +* Locate RDSNo in BadList using @FM setting bPos else +* BadList<-1> = RDSNo +* end +* end +* end +* end +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Next RDSNo +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL_BAD', BadList) +* Msg(@WINDOW,MsgUp) +* +* return +* +* FormNames = '' +* FormCounts = '' +* EOF = False$ +* Open 'FORM_METRICS' to hTable then +* Select hTable +* Loop +* Readnext Key else EOF = True$ +* Until EOF +* FormName = Field(Key, '*', 1) +* Locate FormName in FormNames using @VM setting vPos then +* FormCounts<0, vPos> = FormCounts<0, vPos> + 1 +* end else +* FormNames<0, -1> = FormName +* FormCounts<0, -1> = 1 +* end +* Repeat +* end +* ReportData = FormNames:@FM:FormCounts +* +* Swap @VM with ',' in ReportData +* Swap @FM with CRLF$ in ReportData +* OSWrite ReportData on 'D:\FITemp\FormCounts.csv' +* +* return +* +* debug +* NCRRec = Database_Services('ReadDataRow', 'NCR', 185742) +* RejQty = obj_NCR('RejQty', 185742:@RM:NCRRec) +* +* StationID = 'MESSA005_7300' +* +* NumLoop = 30 +* LoopIndex = 1 +* Loop +* +* Messaging_Services('SendMessage', 'RefreshSchedule', 'Response', @User4, 'DANIEL_ST', @User4, 'EventHandler', 'SCHEDULER_DEV' : ',OMNIEVENT,@MESSAGE,@ARGUMENTS') +* LoopIndex += 1 +* Sleepery(10000) +* Until LoopIndex EQ NumLoop +* Repeat +* +* end +* +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL4') +* For each Key in KeyList using @FM setting fPos +* CurrStatus = Xlate('WO_MAT', '165242*39', 'CURR_STATUS', 'X') +* Rec = Database_Services('ReadDataRow', 'WO_MAT', Key) +* Database_Services('WriteDataRow', 'WO_MAT', Key, Rec, True$, False$, True$) +* Next Key +* +* +* Start_Window('NDW_FIND_LOCK_OWNER', '', 'RDS':@FM:511791) +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,NCR_ACTIONS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,COMM_DIALOG_TOOL_STATUS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,WO_DAILY_SCHED_ALL_COMM', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,NCR_ACTIONS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,COMM_WO_MAT_WFR', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_WO_MAT', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_RDS2', '', '', '') +* return +* end +* +* debug +* Wfrs = Material_Services('GetAvailableMakeupWafers', 170929) +* Start_Window('NDW_MAKEUP_WAFER_NCR', '', 4723) +* +* return +* +* FormNames = '' +* FormCounts = '' +* EOF = False$ +* Open 'FORM_METRICS' to hTable then +* Select hTable +* Loop +* Readnext Key else EOF = True$ +* Until EOF +* FormName = Field(Key, '*', 1) +* Locate FormName in FormNames using @VM setting vPos then +* FormCounts<0, vPos> = FormCounts<0, vPos> + 1 +* end else +* FormNames<0, -1> = FormName +* FormCounts<0, -1> = 1 +* end +* Repeat +* end +* ReportData = FormNames:@FM:FormCounts +* +* Swap @VM with ',' in ReportData +* Swap @FM with CRLF$ in ReportData +* OSWrite ReportData on 'D:\FITemp\FormCounts.csv' +* +* return +* +* Dialog_Box('NDW_FIND_LOCK_OWNER', '', 'RDS':@FM:508982) +* debug +* WONo = 170877 +* For CassNo = 11 to 32 +* WOMatKey = WONo:'*':CassNo +* WOMatQARec = Database_Services('ReadDataRow', 'WO_MAT_QA', WOMatKey) +* If Error_Services('NoError') then +* Stages = WOMatQARec +* Props = WOMatQARec +* For each Stage in Stages using @VM setting vPos +* Prop = Props<0, vPos> +* If ( (Stage EQ 'UNLOAD' or Stage EQ 'QA') and (Prop EQ 'THICK') ) then +* WOMatQARec = '2.81' +* end +* Next Stage +* Database_Services('WriteDataRow', 'WO_MAT_QA', WOMatKey, WOMatQARec, True$, False$, True$) +* end else +* ErrMsg(Error_Services('GetMessage')) +* end +* Next CassNo +* +* +* +* +* return +* +* debug +* WONo = 170964 +* For CassNo = 1 to 30 +* WMKey = WONo:'*1*':CassNo +* WMRec = Database_Services('ReadDataRow', 'WM_IN', WMKey) +* Database_Services('WriteDataRow', 'WM_IN', WMKey, WMRec) +* WMRec = Database_Services('ReadDataRow', 'WM_OUT', WMKey) +* Database_Services('WriteDataRow', 'WM_OUT', WMKey, WMRec) +* Next CassNo +* return +* Counter = 0 +* Def = "" +* Def = "Updating statuses..." +* Def = "GC" +* Def = 3038 +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* For RDSNo = 506000 to 509038 +* Counter += 1 +* Running = Msg(@WINDOW, MsgUp, Counter, MSGINSTUPDATE$) ;* Update message +* Material_Services('UpdateRDSStatus', RDSNo) +* Next RDSNo +* Msg(@WINDOW,MsgUp) +* List = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL4') +* Def = "" +* Def = "Cleaning queue..." +* Def = "GC" +* Def = DCount(List, @FM) +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* For each Key in List using @FM setting fPos +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Database_Services('DeleteDataRow', 'POST_LOG', Key) +* +* Next Key +* Msg(@WINDOW,MsgUp) +* return +* Authenticated = False$ +* +* If MemberOf(@USER4, 'OI_ADMIN') then +* ParentForm = 'NDW_MAIN' +* end else +* ParentForm = 'LSL_MAIN2' +* end +* Loop +* debug +* Response = Dialog_Box('NDW_VERIFY_USER', @Window, @USER4) +* Authenticated = Response<1> +* If Not(Authenticated) then +* ErrorMessage = 'You must reauthenticate to continue running your old version of OpenInsight.' +* rv = Msg('', '', 'OK', '', 'Authentication Required':@FM:ErrorMessage) +* end +* Until Authenticated +* Repeat +* Security_Services('VerifyUserSessions') +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,OBJ_NCR', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,COMM_NCR', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,RDS_UNLOAD_EVENTS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,NCR_ACTIONS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,WORK_ORDER_SERVICES', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,MATERIAL_SERVICES', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,WO_LOG_ACTIONS', '', '', '') +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,REACT_RUN_ACTIONS', '', '', '') +* +* return +* +* +* BadList = '' +* WOMatKeys = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL4') +* NumKeys = DCount(WOMatKeys, @FM) +* Def = "" +* Def = "Scanning WO_MAT records..." +* Def = "GC" +* Def = NumKeys +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* For each WOMatKey in WOMatKeys using @FM setting fPos +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) +* NCRNos = WOMatRec +* NCRFinalSigs = WOMatRec +* NumClosedNCRs = 0 +* For each NCRNo in NCRNos using @VM setting vPos +* NCRStatus = Xlate('NCR', NCRNo, 'STATUS', 'X') +* If NCRStatus EQ 'C' then NumClosedNCRs += 1 +* Next NCRNo +* NCRNoCnt = COUNT(NCRNos,@VM) + (NCRNos NE '') +* NCRSigCnt = COUNT(NCRFinalSigs,@VM) + (NCRFinalSigs NE '') +* +* If ( (NCRNoCnt NE NCRSigCnt) and (NCRNoCnt EQ NumClosedNCRs) ) then +* BadList<-1> = WOMatKey +* end +* Next WOMatKey +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL4_BAD', BadList) +* Msg(@WINDOW,MsgUp) ;* Take message down +* return +* +* +* Database_Services('ActivateRecord', 'RDS', 477390) +* WOMatKey = {WO_MAT_KEY} +* WOMatRepStatus = obj_WO_Mat('ReportStatus', WOMatKey) +* WOMatCurrStatus = obj_WO_Mat('CurrStatus', WOMatKey) +* WOMatRepStatus = XLATE('WO_MAT',{WO_MAT_KEY},'REP_STATUS','X') +* RunStatus = XLATE('REACT_RUN',@ID,'RUN_STATUS','X') +* +* RunStatus = OCONV(RunStatus,'[RUN_STATUS_CONV]') +* +* BEGIN CASE +* CASE WOMatRepStatus NE '' AND RunStatus NE '' +* Ans = WOMatRepStatus +* +* CASE WOMatRepStatus = '' AND RunStatus NE '' +* Ans = RunStatus +* +* CASE WOMatRepStatus NE '' AND RunStatus = '' +* Ans = WOMatRepStatus +* +* CASE 1 +* Ans = '' +* END CASE +* +* +* +* Material_Services('UpdateRDSStatus', 477390) +* RDSList = Xlate('WO_STEP', '170520*1', 'RDS_KEY', 'X') +* For each RDSNo in RDSList using @VM setting vPos +* Material_Services('UpdateRDSStatus', RDSNo) +* Next RDSNo +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'All', 'RTP27,RDS_ACTIONS', 'Procedure', '', '') +* +* return +* +* WMOList = '' +* WMOList<1> = 19 +* WMOList<2> = 20 +* WMOList<3> = 21 +* WMOList<4> = 22 +* WMOList<5> = 23 +* For each CassNo in WMOList using @FM +* WMOKey = '170820*1*':CassNo +* Material_Services('PostWMOutUpdateRequest', WMOKey) +* Next CassNo +* +* RDSList = '' +* RDSList<1> = 506491 +* RDSList<2> = 506492 +* RDSList<3> = 506499 +* RDSList<4> = 506500 +* RDSList<5> = 506501 +* RDSList<6> = 506502 +* RDSList<7> = 506519 +* RDSList<8> = 506522 +* RDSList<9> = 506530 +* RDSList<10> = 506532 +* RDSList<11> = 506533 +* RDSList<12> = 506537 +* RDSList<13> = 506538 +* For each RDSNo in RDSList using @FM +* Material_Services('UpdateRDSStatus', RDSNo) +* RunStatus = obj_React_Run('RunStatus', RDSNo) +* RDS_React_Run(RDSNo) +* +* +* +* Next RDSNo +* +* return +* +* Counter = 1 +* ReportData = '' +* ReportData<1, 1> = 'RDSNo' +* ReportData<1, 2> = 'COMB_STATUS' +* ReportData<1, 3> = 'COMB_STATUS_STATIC' +* For RDSNo = 505143 to 506143 +* Counter += 1 +* CombStatus = Xlate('RDS', RDSNo, 'COMB_STATUS', 'X') +* CombStatusStatic = Xlate('RDS', RDSNo, 'COMB_STATUS_STATIC', 'X') +* ReportData = RDSNo +* ReportData = CombStatus +* ReportData = CombStatusStatic +* Next RDSNo +* Swap @FM with CRLF$ in ReportData +* Swap @VM with ',' in ReportData +* OSWrite ReportData on 'D:\apps\Temp\COMB_STATUS.csv' +* +* return +* +* +* Process: +* +* debug +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL4') +* KeyList = Delete(KeyList, 1, 0, 0) +* For each Key in KeyList using @FM setting fPos +* Database_Services('DeleteDataRow', 'SQL_BACKLOG', Key) +* Next Key +* +* +* +* return +* debug +* Counter = 0 +* ErrorList = '' +* TableName = 'RDS' +* CursorVar = '' +* Flag = '' +* SortList = '#SEQ' +* ReduceScript = 'WITH {SEQ} LT 400000' +* Mode = 1 ; // Use next cursor available +* EOF = False$ +* +* Reduce(ReduceScript, SortList, Mode, TableName, CursorVar, Flag) +* If Flag then +* Select TableName By SortList Using CursorVar then +* Def = "" +* Def = "Populating RDS COMB_STATUS_STATIC..." +* Def = "GC" +* Def = @RecCount +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* Loop +* Readnext KeyID using CursorVar by AT else EOF = True$ +* Until EOF +* Counter += 1 +* Running = Msg(@WINDOW, MsgUp, Counter, MSGINSTUPDATE$) ;* Update message +* Material_Services('UpdateRDSStatus', KeyID) +* If Error_Services('HasError') then +* ErrorList<-1> = KeyID +* end +* Repeat +* End else +* status = Set_FSError() +* end +* end +* Msg(@WINDOW,MsgUp) ;* Take message down +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL4', ErrorList) +* +* return +* +* +* Script: +* +* Def = "" +* Def = "Posting Requests..." +* Def = "GC" +* Def = 77442 +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* Counter = 0 +* For RDSNo = 428000 to 505442 +* Counter += 1 +* Material_Services('PostRDSUpdateRequest', RDSNo) +* Running = Msg(@WINDOW, MsgUp, Counter, MSGINSTUPDATE$) ;* Update message +* Next RDSNo +* +* Msg(@WINDOW,MsgUp) ;* Take message down +* +* return +* +* +* CompileMessage: +* +* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', 'DANIEL_ST', 'RTP27,NDW_TOOL_STATUS_GAN_EVENTS', 'Procedure', '', '') +* +* return +* +* FormNames = '' +* FormCounts = '' +* EOF = False$ +* Open 'FORM_METRICS' to hTable then +* Select hTable +* Loop +* Readnext Key else EOF = True$ +* Until EOF +* FormName = Field(Key, '*', 1) +* Locate FormName in FormNames using @VM setting vPos then +* FormCounts<0, vPos> = FormCounts<0, vPos> + 1 +* end else +* FormNames<0, -1> = FormName +* FormCounts<0, -1> = 1 +* end +* Repeat +* end +* ReportData = FormNames:@FM:FormCounts +* +* Swap @VM with ',' in ReportData +* Swap @FM with CRLF$ in ReportData +* OSWrite ReportData on 'D:\FITemp\FormCounts.csv' +* +* return +* +* LoopIndex = 0 +* Loop +* LoopIndex += 1 +* Messaging_Services('SendMessage', 'RefreshSchedule', 'Response', @User4, 'MESSA005_15076', @User4, 'EventHandler', 'SCHEDULER_DEV' : ',OMNIEVENT,@MESSAGE,@ARGUMENTS') +* Sleepery(20000) +* Until LoopIndex EQ 10 +* Repeat +* +* +* return +* +* +* Open 'REPLICATION_QUEUE_LSL2_WO_MAT' to TableHandle then +* Select TableHandle +* EOF = False$ +* Loop +* ReadNext @ID else EOF = True$ +* Until EOF +* TransType = Field(@ID, '*', 1) +* If TransType EQ 'WRITE' then +* Delete TableHandle, @ID then Null +* end +* Repeat +* end +* +* +* +* +* +* +* +* return +* +* WONo = 170528 +* CassNo = 29 +* WOMatKey = WONo:'*':CassNo +* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) +* GRProps = obj_WO_Mat('GetGRProps', WOMatKey:@RM:WOMatRec) +* GRWfrQty +* ScrapQty +* ProdTWQty +* AvailMUWfrQty +* MUCassIDs +* MUCassQtys +* +* return +* +* +* 483953 +* BadList = '' +* NextRDSKey = 475000 +* StartRDSKey = 400000 +* StopRDSKey = Xlate('DICT.RDS', '%SK%', '', 'X') - 1 +* NumKeys = StopRDSKey - StartRDSKey +* Counter = 0 +* +* Def = "" +* Def = "Scanning RDS records..." +* Def = "GC" +* Def = NumKeys +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For RDSNo = StartRDSKey to StopRDSKey +* Counter += 1 +* WOMatKey = Xlate('RDS', RDSNo, 'WO_MAT_KEY', 'X') +* MakeupBox = Xlate('WO_MAT', WOMatKey, 'MAKEUP_BOX', 'X') +* If MakeupBox NE True$ then +* InvLocs = Xlate('WO_MAT', WOMatKey, 'INV_LOCATION', 'X') +* InvActions = Xlate('WO_MAT', WOMatKey, 'INV_ACTION', 'X') +* Locate 'PTO' in InvLocs using @VM setting vPos else +* QASig = Xlate('RDS', RDSNo, 'SUP_VER_SIG', 'X') +* If QASig NE '' then +* BadList<-1> = RDSNo +* end +* end +* end +* Running = Msg(@WINDOW, MsgUp, Counter, MSGINSTUPDATE$) ;* Update message +* Next RDSNo +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL5', BadList) +* +* Msg(@WINDOW,MsgUp) ;* Take message down +* +* return +* +* +* Fixit: +* debug +* Timestamp = Datetime() +* ErrorList = '' +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL4') +* NumKeys = DCount(KeyList, @FM) +* +* Def = "" +* Def = "Fixing Material Log Entries..." +* Def = "GC" +* Def = NumKeys +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For each RDSNo in KeyList using @FM setting fPos +* RDSNo = Xlate('WO_MAT', WOMatKey, 'RDS_NO', 'X') +* WOMatKey = Xlate('RDS', RDSNo, 'WO_MAT_KEY', 'X') +* If WOMatKey NE '' then +* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) +* InvActions = WOMatRec +* Locate '1QA' in InvActions using @VM setting vPos else +* Locate 'LBLCHK' in InvActions using @VM setting vPos then +* QASig = Xlate('RDS', RDSNo, 'SUP_VER_SIG', 'X') +* QASigTime = Xlate('RDS', RDSNo, 'SUP_VER_SIG_TIME', 'X') +* QASigDate = Xlate('RDS', RDSNo, 'SUP_VER_SIG_DATE', 'X') +* QASigDTM = QASigDate + (QASigTime/86400) +* WOMatRec = Insert(WOMatRec, 0, vPos, 0, '1QA') +* WOMatRec = Insert(WOMatRec, 0, vPos, 0, 'CR') +* WOMatRec = Insert(WOMatRec, 0, vPos, 0, 'QA') +* WOMatRec = Insert(WOMatRec, 0, vPos, 0, 'OI ADMIN') +* WOMatRec = Insert(WOMatRec, 0, vPos, 0, Timestamp) +* WOMatRec = Insert(WOMatRec, 0, vPos, 0, '') +* WOMatRec = Insert(WOMatRec, 0, vPos, 0, '') +* +* * WOMatRec = 'PLACE' +* * WOMatRec = '1K' +* * WOMatRec = 'PTI' +* * WOMatRec = 'OI_ADMIN' +* * WOMatRec = Timestamp +* * WOMatRec = RDSNo +* * WOMatRec = '' +* +* Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$) +* If Error_Services('HasError') then +* ErrorList<-1> = RDSNo +* end +* end +* end +* end else +* ErrorList<-1> = RDSNo +* end +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Next WOMatKey +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL_ERROR', ErrorList) +* +* Msg(@WINDOW,MsgUp) ;* Take message down +* +* return +* +* debug +* WOMatKey = '170542*30' +* // Write success packaging +* LogFile = 'WO_MAT' +* Action = 'PACK' +* WhCd = 'CR' +* LocCd = 'PACK' +* UserID = @User4 +* Tag = 'Packaging complete' +* ToolID = '' +* +* WONo = Field(WOMatKey, '*', 1, 1) +* CassNo = Field(WOMatKey, '*', 2, 1) +* +* InvDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') +* Set_Status(0) +* aiParms = 'WO_MAT':@RM:WONo:@RM:CassNo:@RM:WhCd:'*':LocCd:@RM:Action:@RM:InvDTM:@RM:UserID:@RM:Tag:@RM:ToolID +* obj_WO_Mat('AddInvTrans', aiParms) +* If Get_Status(errCode) then +* debug +* Null +* end +* +* return +* +* Script: +* +* WOMatKey = '170599*2' +* LogFile = 'WO_MAT' +* Action = 'PLACE' +* WhCd = 'CR' +* LocCd = 'QA' +* UserID = @User4 +* Tag = '170599.2' +* ToolID = '' +* errCode = '' +* WONo = Field(WOMatKey, '*', 1, 1) +* CassNo = Field(WOMatKey, '*', 2, 1) +* InvDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') +* +* WOMLParms = LogFile:@RM +* WOMLParms := InvDTM:@RM +* WOMLParms := Action:@RM +* WOMLParms := WhCd:@RM +* WOMLParms := LocCd:@RM +* WOMLParms := WONo:@RM +* WOMLParms := CassNo:@RM +* WOMLParms := UserID:@RM +* WOMLParms := Tag:@RM +* WOMLParms := ToolID +* +* Set_Status(0) +* obj_WO_Mat_Log('Create',WOMLParms) +* +* aiParms = 'WO_MAT':@RM:WONo:@RM:CassNo:@RM:WhCd:'*':LocCd:@RM:Action:@RM:InvDTM:@RM:UserID:@RM:Tag:@RM:ToolID +* obj_WO_Mat('AddInvTrans', aiParms) +* +* errCode = '' +* +* IF Get_Status(errCode) THEN +* debug +* end +* +* return +* +* Script: +* debug +* BadList = '' +* RDSNos = 482815:@FM ; //Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL_LIST') +* For each RDSNo in RDSNos using @FM setting fPos +* WfrIDs = Xlate('REACT_RUN', RDSNo, 'IN_WFR_ID', 'X') +* For each WfrID in WfrIDs using @VM setting vPos +* GaN_Services('WithdrawWfr', RDSNo, WfrID) +* Next WfrID +* GaN_Services('SplitSelection', RDSNo) +* ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo) +* If Error_Services('NoError') then +* ReactRunRec = '' +* Database_Services('WriteDataRow', 'REACT_RUN', RDSNo, ReactRunRec, True$, False$, True$) +* If Error_Services('HasError') then +* BadList<-1> = RDSNo +* end +* end else +* BadList<-1> = RDSNo +* end +* Next RDSNo +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL_ERROR', BadList) +* +* +* return +* +* +* +* return +* +* OPEN 'SCHED_DET_NG' TO SchedDetTable then +* OPEN 'DICT.SCHED_DET_NG' TO @DICT then +* Today = Datetime() +* SchedDetKeys = '' +* SelectSent = 'SELECT SCHED_DET_NG WITH STOP_DTM GE ':Today:' BY REACT_NO' +* +* RList(SelectSent,TARGET_ACTIVELIST$,'','','') +* IF Get_Status(errCode) THEN +* ErrMsg(errCode) +* RETURN +* END +* +* Done = 0 +* @ID = '' +* LOOP +* PrevSchedDetKey = @ID +* READNEXT @ID ELSE Done = 1 +* UNTIL Done +* SchedDetKeys<-1> = @ID +* REPEAT +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL2', SchedDetKeys) +* end +* end +* +* +* return +* +* WONo = 170326 +* For CassNo = 1 to 76 step 1 +* WOMatKey = WONo:'*':CassNo +* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) +* WOMatRec = WONo:'*1*':CassNo +* WOMatRec = WONo:'*1*':CassNo +* Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$) +* Next CassNo +* +* +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL4') +* For each RDSNo in KeyList using @FM +* +* RDSTestKeys = Xlate('RDS', RDSNo, 'RDS_TEST_KEYS', 'X') +* If RDSTestKeys NE '' then +* For each RDSTestKey in RDSTestKeys using @VM +* RDSTestRec = Database_Services('ReadDataRow', 'RDS_TEST', RDSTestKey) +* RDSTestRec = 'LSL_8IN' +* Database_Services('WriteDataRow', 'RDS_TEST', RDSTestKey, RDSTestRec) +* Next RDSTestKey +* end +* +* Next RDSNo +* +* CtrlVer = 1.2 +* Msg(@Window, '', 'OK', '', 'Control Version':@FM:CtrlVer) +* *Version = SRP_Get_FileVersion("D:\apps\OICurrent\SRPControls.ocx") +* Version = SRP_Get_FileVersion("C:\Program Files (x86)\RevSoft\OIClient\SRPControls.ocx") +* +* return +* +* CutoffDate = Date() - 912 ; // 2.5 years +* RemoveList = '' +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* For each WOMatKey in KeyList using @FM setting fPos +* +* WONo = Field(WOMatKey, '*', 1) +* WOEntryDt = Xlate('WO_LOG', WONo, 'ENTRY_DATE', 'X') +* If WOEntryDt LT CutoffDate then +* RemoveList<-1> = WOMatKey +* end +* +* ReactType = Xlate('WO_MAT', WOMatKey, 'REACTOR_TYPE', 'X') +* If ReactType EQ 'EPP' then +* +* end else +* RDSNo = Xlate('WO_MAT', WOMatKey, 'RDS_NO', 'X') +* DateOut = Xlate('RDS', RDSNo, 'DATE_OUT', 'X') +* CutoffDate = Date() - 730 +* If ( (DateOut LT CutoffDate) or (DateOut EQ '') ) then +* // Old makeup cassette +* end +* end +* +* Next WOMatKey +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL2', RemoveList) +* +* return +* +* +* WOMatKey = '170484*9' +* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) +* debug +* GRProps = obj_WO_Mat('GetGRProps',WOMatKey:@RM:WOMatRec) +* +* WMOKey = '170328*1*62' +* WMORec = Database_Services('ReadDataRow', 'WM_OUT', WMOKey) +* CurrStatus = obj_WM_Out('CurrStatus', WMOKey:@RM:WMORec) +* RepStatus = Xlate('WM_OUT', WMOKey, 'REP_STATUS', 'X') +* +* +* WOMatKey = '170328*62' +* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) +* RepStatus = obj_WO_Mat('ReportStatus', WOMatKey:@RM:WOMatRec) +* +* WOStepKey = '170422*1' +* LoadCount = Sum(Xlate('WO_STEP', WOStepKey, 'ALL_RDS_WFRS_EPI_LOAD', 'X')) +* WONo = 170328 +* EventWfrs = 444 +* WOQty = Xlate('WO_LOG', WONo, 'QTY', 'X') +* FirstWfr = (WOQty - EventWfrs) / 25 +* FirstWfr = FirstWfr[-1, 'B.'] +* FirstWfr = (FirstWfr * .25) + 1 +* +* return +* +* +* StartDate = Date() - 1 +* EndDate = Date() - 1 +* +* For Date = StartDate to EndDate Step 1 +* +* Reactor_Services('ClearWafersExpected', OConv(Date, 'D')) +* Reactor_Services('ClearWafersProcessed', OConv(Date, 'D')) +* Reactor_Services('CreatePerformanceTrackers', OConv(Date, 'D'), True$) +* Reactor_Services('UpdatePerformanceTrackers', OConv(Date, 'D'), True$) +* +* Next Date +* +* +* For Date = StartDate to EndDate Step 1 +* +* Reactor_Services_Dev('ClearWafersExpectedDev', OConv(Date, 'D')) +* Reactor_Services_Dev('ClearWafersProcessedDev', OConv(Date, 'D')) +* Reactor_Services_Dev('CreatePerformanceTrackersDev', OConv(Date, 'D'), True$) +* Reactor_Services_Dev('UpdatePerformanceTrackersDev', OConv(Date, 'D'), True$) +* +* Next Date +* +* ZombieList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* For each EventID in ZombieList using @FM setting fPos +* Database_Services('DeleteDataRow', 'SCHED_DET_NG', EventID, True$, False$) +* Next EventID +* +* +* +* RDSList = '' +* RDSList<-1> = 469318 +* RDSList<-1> = 469320 +* RDSKey = Dialog_Box('NDW_RDS_QUERY', @Window, RDSList) +* Debug +* Messaging_Services('SendMessage', 'RefreshSchedule', 'Response', '', 'All', '', 'EventHandler', 'SCHEDULER_DEV' : ',OMNIEVENT,@MESSAGE,@ARGUMENTS') +* EOF = False$ +* Query = 'SELECT WO_SCHEDULE_NG WITH UNSCHED_QTY EQ 0' +* RList(Query, TARGET_ACTIVELIST$, '', '', '') +* Loop +* Readnext WOLogKeyID else EOF = True$ +* Until EOF = True$ +* Database_Services('DeleteDataRow', 'WO_SCHEDULE_NG', WOLogKeyID) +* Repeat +* +* +* WOMatKey = Xlate('RDS', 469320, 'WO_MAT_KEY', 'X') +* WOMatKey = Xlate('RDS', 469318, 'WO_MAT_KEY', 'X') +* +* RType = Xlate('RDS', 469320, 'REACTOR_TYPE', 'X') +* RType = Xlate('RDS', 469318, 'REACTOR_TYPE', 'X') +* +* RxList = Reactor_Services('GetReactorNumbers') +* For each Reactor in RxList using @FM setting vPos +* +* ReactRec = Database_Services('ReadDataRow', 'REACTOR', Reactor) +* If ReactRec NE '' then +* ReactRec = '' +* Database_Services('WriteDataRow', 'REACTOR', Reactor, ReactRec, True$, False$, True$) +* end +* +* Next Reactor +* +* return +* +* KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL') +* +* Def = "" +* Def = "Populating Test Wafer Data..." +* Def = "GC" +* Def = Dcount(KeyList, @FM) +* Def = 600 +* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* +* For each RDSNo in KeyList using @FM setting fPos +* +* ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo) +* Database_Services('WriteDataRow', 'REACT_RUN', RDSNo, ReactRunRec, True$, False$, True$) +* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message +* Next RDSNo +* +* Msg(@WINDOW,MsgUp) ;* Take message down +* +* return +* +* +* TestRevDotNetCommon: +* +* //Define the dotNet version +* RevDotNetCommon = '' +* DotNetHandle = StartDotNet("", '', RevDotNetCommon) +* +* DotNetDir = CheckDotNet('4.0'):'\' +* SqlClientDLLPath = DotNetDir:'System.Data.dll' +* ConnectionString = 'Password=mesa@1234@IQSDMS1!0987;Persist Security Info=True;User ID=IQSDMS1;Initial Catalog=G4Wafers_01;Data Source=messv01ec.ec.local\PROD1,53959' +* //Specify the DLL +* rv = Set_Property.NET(DotNetHandle, "AssemblyName", SqlClientDLLPath, RevDotNetCommon) +* //Define the classes +* SqlConnectionObj = Create_Class.NET(DotNetHandle, "System.Data.SqlClient.SqlConnection", 0, ConnectionString, 'System.String', RevDotNetCommon) +* IF Get_Status(errCode) THEN +* ErrMsg(errCode) +* END else +* mthds = Get_Info.Net(SqlConnectionObj, REVDOTNET_INFO_METHODS, RevDotNetCommon) +* Set_Status(0) +* rv = Send_Message.Net(SqlConnectionObj, "Open", RevDotNetCommon) +* +* IF Not(Get_Status(errCode)) THEN +* ConnectionState = Get_Property.Net(SqlConnectionObj, "State", RevDotNetCommon) +* +* If ConnectionState EQ 'Open' then +* SQLStatement = "select [Probe_Key] from [G4Wafers_01].[dbo].[Probe3]" +* Params = SQLStatement:@FM:SqlConnectionObj +* ParamTypes = 'System.String':@FM:'RevDotNet' +* Set_Status(0) +* SqlCommandObj = Create_Class.NET(DotNetHandle, "System.Data.SqlClient.SqlCommand", 0, Params, ParamTypes, RevDotNetCommon) +* If Not(Get_Status(errCode)) then +* SqlCommandMethods = Get_Info.Net(SqlCommandObj, REVDOTNET_INFO_METHODS) +* Set_Status(0) +* ProbeKey = Send_Message.Net(SqlCommandObj, "ExecuteScalar", RevDotNetCommon) +* If Not(Get_Status(errCode)) then +* If ( (ProbeKey NE 0) and (ProbeKey NE '') ) then +* NewProbeKey = ProbeKey + 1 +* SQLStatement = 'update [G4Wafers_01].[dbo].[Probe3] set [Probe_Key] = ':NewProbeKey:' where [Probe_Key] = ':ProbeKey +* Set_Status(0) +* rv = Set_Property.NET(SqlCommandObj, "CommandText", SQLStatement, RevDotNetCommon) +* If Not(Get_Status(errCode)) then +* Set_Status(0) +* rv = Send_Message.Net(SqlCommandObj, "ExecuteNonQuery", RevDotNetCommon) +* If Not(Get_Status(errCode)) then +* // Verify Probe Key was updated +* SQLStatement = "select [Probe_Key] from [G4Wafers_01].[dbo].[Probe3]" +* Set_Status(0) +* rv = Set_Property.NET(SqlCommandObj, "CommandText", SQLStatement, RevDotNetCommon) +* If Not(Get_Status(errCode)) then +* Set_Status(0) +* VerifyProbeKey = Send_Message.Net(SqlCommandObj, "ExecuteScalar", RevDotNetCommon) +* If Not(Get_Status(errCode)) then +* If VerifyProbeKey NE NewProbeKey then +* // Log error +* end +* end +* end +* end +* end +* end else +* // Log error +* end +* end +* end +* rv = Send_Message.Net(SqlConnectionObj, 'Close', RevDotNetCommon) +* ConnectionState = Get_Property.Net(SqlConnectionObj, "State", RevDotNetCommon) +* end +* end +* end +* Free_Class.Net('', RevDotNetCommon) +* +* return +* +* +* Main: +* +* +* objConnection = SQL_Services('GetConnectionObject', 'SPC') +* +* If objConnection then +* +* Query = "select [Probe_Key] from [G4Wafers_01].[dbo].[Probe2]" +* SQL_Services('ExecuteQuery', objConnection, Query, True$) +* +* SQL_Services('DestroyConnectionObject', objConnection) +* end +* +* +* +* return +* +* +* +* +* Test5: +* +* ConnString = Database_Services('ReadDataRow', 'SERVERS', 'SPC') +* ConnString = Delete(ConnString, 2, 0, 0) +* ProviderIdx = IndexC(ConnString, 'Provider', 1) +* ConnString = ConnString[(ProviderIdx + 1), 999] +* ProviderEndIdx = Index(ConnString, ';', 1) +* ConnString = ConnString[(ProviderEndIdx + 1), 999] +* CIKey = 2409742 +* InspReq = Xlate('CLEAN_INSP', CIKey, 'SPEC_INSP_REQ', 'X') +* If InspReq EQ '' then InspReq = Xlate('CLEAN_INSP', CIKey, 'INSP_REQ', 'X') +* +* InspFreq = Xlate('CLEAN_INSP', CIKey, 'INSP_INTERVAL', 'X') +* If InspFreq NE '' then +* // Use the stored interval +* RDSNo = Xlate('CLEAN_INSP', CIKey, 'RDS_NO', 'X') +* PSNo = Xlate('CLEAN_INSP', CIKey, 'PS_NO', 'X') +* WONo = Xlate('CLEAN_INSP', CIKey, 'WO_NO', 'X') +* WOQty = Xlate('WO_LOG', WONo, 'QTY', 'X') +* RunNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X') +* StageKey = PSNo:'*LWI' +* InspInterval = Xlate('PRS_STAGE', StageKey, 'INSP_INTERVAL', 'X') +* LastRun = ( (RunNo * 25) EQ WOQty ) +* InspReq = ( (Mod((RunNo - 1), InspInterval) EQ 0) or LastRun ) +* end else +* // Use the current PRS_STAGE interval +* InspReq = Xlate('CLEAN_INSP', CIKey, 'INSP_REQ', 'X') +* end +* +* return +* +* +* Export: +* +* NonEppList = '' +* WOMatList = Database_Services('ReadDataRow', 'SYSLISTS', 'NULL_RDS_NON_EPP') +* +* For each WOMatKey in WOMatList using @FM setting fPos +* +* ReactorType = Xlate('WO_MAT', WOMatKey, 'REACTOR_TYPE', 'X') +* If ReactorType NE 'EPP' and ReactorType NE 'GAN' then +* NonEppList<-1> = WOMatKey +* end +* Next WOMatKey +* +* Database_Services('WriteDataRow', 'SYSLISTS', 'NULL_RDS_NON_EPP', NonEppList) +* +* NonEppList = Database_Services('ReadDataRow', 'SYSLISTS', 'NULL_RDS_NON_EPP') +* Swap @FM with CRLF$ in NonEppList +* OSWrite NonEppList on 'C:\Users\StieberD\Desktop\null-rds-non-epp.csv' +* +* +* +* return +* +* +* +* +* WOMatPush: +* +* * WOMatKeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'FABTIME_PUSH') +* * +* * NumWOMatKeys = DCount(WOMatKeyList, @FM) +* * +* * Def = "" +* * Def = "Updating WO_MAT..." +* * Def = "GC" +* * Def = NumWOMatKeys +* * Def = 600 +* * MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message +* * Table = 'WO_MAT' +* * WOMatKeyListIndex = 1 +* * NewWOMatKeyList = WOMatKeyList +* * Loop +* * ID = WOMatKeyList +* * Copy_Record_To_SQL(Table, ID, 1) +* * NewWOMatKeyList = Delete(NewWOMatKeyList, 1, 0, 0) +* * WOMatKeyListIndex += 1 +* * Database_Services('WriteDataRow', 'SYSLISTS', 'FABTIME_PUSH', NewWOMatKeyList) +* * Running = Msg(@WINDOW, MsgUp, WOMatKeyListIndex, MSGINSTUPDATE$) ;* Update message +* * Until WOMatKeyListIndex GE NumWOMatKeys +* * Repeat +* * +* * Msg(@WINDOW,MsgUp) ;* Take message down +* +* return +* +* +* TaskSubmit: +* +* TaskID = RTI_Task_Submit('', 'TEST_DANIEL', '', '', '', '') +* +* If TaskID NE 0 then +* Done = False$ +* TaskResponse = '' +* Loop +* Status = RTI_Task_Status(TaskID, TaskResponse) +* If (Status EQ 'COMPLETED') OR (Status EQ 'ERROR') then Done = True$ +* Until Done +* Repeat +* end else +* // Track if task id wasn't created at all. +* end +* StatusError = Get_Status(errCode) +* If (Index(errCode, 'SHELLEXECUTE', 1)) NE 0 then StatusError = 0 +* +* +* return +* +* retval = Utility("PRINTSETUP") +* +* IF NOT(ASSIGNED(PrinterID)) THEN PrinterID = '' +* IF NOT(ASSIGNED(RetDefault)) THEN RetDefault = '' +* +* Printers = '' +* Default = '' +* +* //PrintCount = PrintSetupNew(Printers,Default) ;* OI routine returns printer names, driver, port information +* //end else +* PrintCount = PrintSetup(PRN_GET$,'',Printers,Default) ;* OI routine returns printer names, driver, port information +* //end +* +* DefPrinter = Default[1,','] +* DefPort = FIELD(Default,',',3) +* DefLine = DefPrinter:' on ':DefPort +* +* If Default NE 'Microsoft XPS Document Writer,winspool,Ne00:' then +* Null +* PrintSetup(PRN_SET$, 'Microsoft XPS Document Writer,winspool,Ne00:') +* end +* +* return +* +* +* // Import 6 inch Excel spreadsheet +* +* RetainFilepath = 'D:\Apps\Temp\6in-IFEPI GaN Retain Inventory.xlsx' +* RetainFilepath = 'D:\Apps\Temp\8in-IFEpi GaN Retain Inventory.xlsx' +* RetainFilepath = 'D:\Apps\Temp\Sample.xlsx' +* RetainExcelHandle = Excel_Services('OpenDocument', RetainFilepath) +* RetainWorksheet = 'Sheet1' +* NumExcelRows = Excel_Services('GetNumRows', RetainExcelHandle, RetainWorksheet) +* +* Open 'DICT.REACT_RUN' to @DICT then +* For ExcelRow = 2 to NumExcelRows +* +* RunID = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'A', ExcelRow) ) +* Convert @Upper.Case to @Lower.Case in RunID +* RDSNo = '' +* Column = 'GAN_RUN_ID' +* SearchString = Column:@VM:RunID:@FM +* Btree.Extract(SearchString, 'REACT_RUN', @DICT, RDSNo) +* If RDSNo NE '' then +* ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo) +* If Error_Services('NoError') then +* RRRecipe = ReactRunRec +* RRPart = Xlate('REACT_RUN', RDSNo, 'EPI_PART_NO', 'X') +* RRScribes = Xlate('REACT_RUN', RDSNo, 'WFR_SCRIBES', 'X') +* InWfrIDs = ReactRunRec +* +* * Read the data from the Excel retain spreadsheet * +* Recipe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'B', ExcelRow) ) +* Pocket = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'C', ExcelRow) ) +* If Pocket _NEC 'ref' then +* Scribe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'D', ExcelRow) ) +* Grade = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'E', ExcelRow) ) +* Part = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'F', ExcelRow) ) +* WorkOrder = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'G', ExcelRow) ) +* RetainBox = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'H', ExcelRow) ) +* RetainSlot = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'I', ExcelRow) ) +* Operator = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'J', ExcelRow) ) +* RetainDTM = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'K', ExcelRow) ) +* CurrLoc = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'L', ExcelRow) ) +* Status = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'M', ExcelRow) ) +* Comment = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'N', ExcelRow) ) +* +* Begin Case +* Case Operator _EQC 'AH' +* RetainSig = 'ANTHONY_H' +* Case Operator _EQC 'SB' +* RetainSig = 'SYEDA_B' +* Case Operator _EQC 'PM' +* RetainSig = 'PEYTON_M' +* Case Operator _EQC 'JL' +* RetainSig = 'JAVIER_L' +* Case Operator _EQC 'PS' +* RetainSig = 'PRISCILA_S' +* Case Operator _EQC 'NC' +* RetainSig = 'NIKOLAS_C' +* Case Operator _EQC 'HG' +* RetainSig = 'HECTOR_G' +* Case Operator _EQC 'ES' +* RetainSig = 'ESTEBAN_S' +* Case Operator _EQC 'AD' +* RetainSig = 'ALIYAH_D' +* Case Operator _EQC 'LB' +* RetainSig = 'LACEY_B' +* Case Operator _EQC 'IP' +* RetainSig = 'IAN_P' +* Case Operator _EQC 'RC' +* RetainSig = 'RYAN_C' +* Case Operator _EQC 'GR' +* RetainSig = 'GEORGE_R' +* Case Operator _EQC 'AH/JL' +* RetainSig = 'ANTHONY_H' +* Case Operator _EQC 'NC/JL' +* RetainSig = 'NIKOLAS_C' +* Case Operator _EQC 'SW' +* RetainSig = 'STEVEN_W' +* Case Otherwise$ +* RetainSig = '' +* End Case +* +* // Truncate DTM to just the date, then convert to internal format +* RetainDate = RetainDTM[1, 'F '] +* RetainDate = IConv(RetainDate, 'D') +* +* * Clean the data * +* // Format the Recipe +* Convert @Lower.Case to @Upper.Case in Recipe +* // Format the Pocket +* If Pocket[1, 1] NE '0' then Pocket = '0':Pocket +* // Format the Scribe +* Convert @Lower.Case to @Upper.Case in Scribe +* // Format the Grade +* Begin Case +* Case Grade _EQC 'aborted' +* Grade = 'Aborted' +* Case Grade _EQC 'CT' +* Grade = 'CT' +* Case ( (Grade _EQC 'Eng test') or (Grade _EQC 'Eng test') or (Grade _EQC 'Engtest') or (Grade _EQC 'Test') ) +* Grade = 'Eng Test' +* Case Grade _EQC 'Eq Failure' +* Grade = 'EQ Failure' +* Case Grade _EQC 'Mechanical' +* Grade = 'Mechanical' +* Case Grade _EQC 'NA' +* Grade = 'NA' +* Case Grade _EQC 'retain' +* Grade = 'Retain' +* Case Grade _EQC 'scrap' +* Grade = 'Scrap' +* Case Grade _EQC 'Terminated' +* Grade = 'Terminated' +* Case Grade _EQC '' +* Grade = '' +* Case Otherwise$ +* Null +* End Case +* // Format the Part No +* Convert @Lower.Case to @Upper.Case in Part +* // Format the Current Location +* Begin Case +* Case CurrLoc _EQC 'Cleanroom' +* CurrLoc = 'Cleanroom' +* Case ( (CurrLoc _EQC 'Wafer Destroyed') or (CurrLoc _EQC 'Wafers Destroyed') or (CurrLoc _EQC 'Wasfer Destroyed') ) +* CurrLoc = 'Wafer Destroyed' +* Case CurrLoc _EQC 'Warehouse' +* CurrLoc = 'Warehouse' +* End Case +* +* * Write the data to the WO_WFR record * +* WfrIndex = Pocket + 0 ; // Convert string to integer and trim 0 padding +* +* RRScribe = RRScribes<0, WfrIndex> +* WfrID = InWfrIDs<0, WfrIndex> +* WOWfrRec = Database_Services('ReadDataRow', 'WO_WFR', WfrID) +* If Error_Services('NoError') then +* WOWfrRec = Grade +* WOWfrRec = RunID +* WOWfrRec = Pocket +* WOWfrRec = Scribe +* WOWfrRec = RetainBox +* WOWfrRec = RetainSlot +* WOWfrRec = CurrLoc +* WOWfrRec = Comment +* WOWfrRec = Status +* WOWfrRec = RetainSig +* WOWfrRec = RetainDate +* Database_Services('WriteDataRow', 'WO_WFR', WfrID, WOWfrRec, True$, False$, True$) +* end +* end +* end +* end +* Next ExcelRow +* end +* Excel_Services('CloseDocument', RetainExcelHandle) +* +* // Import 8 inch Excel spreadsheet +* +* RetainFilepath = 'D:\Apps\Temp\8in-IFEpi GaN Retain Inventory.xlsx' +* RetainExcelHandle = Excel_Services('OpenDocument', RetainFilepath) +* RetainWorksheet = 'Sheet1' +* NumExcelRows = Excel_Services('GetNumRows', RetainExcelHandle, RetainWorksheet) +* +* Open 'DICT.REACT_RUN' to @DICT then +* For ExcelRow = 2 to NumExcelRows +* +* RunID = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'A', ExcelRow) ) +* Convert @Upper.Case to @Lower.Case in RunID +* RDSNo = '' +* Column = 'GAN_RUN_ID' +* SearchString = Column:@VM:RunID:@FM +* Btree.Extract(SearchString, 'REACT_RUN', @DICT, RDSNo) +* If RDSNo NE '' then +* ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo) +* If Error_Services('NoError') then +* RRRecipe = ReactRunRec +* RRPart = Xlate('REACT_RUN', RDSNo, 'EPI_PART_NO', 'X') +* RRScribes = Xlate('REACT_RUN', RDSNo, 'WFR_SCRIBES', 'X') +* InWfrIDs = ReactRunRec +* +* * Read the data from the Excel retain spreadsheet * +* Recipe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'B', ExcelRow) ) +* Pocket = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'C', ExcelRow) ) +* If Pocket _NEC 'ref' then +* Scribe = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'D', ExcelRow) ) +* Grade = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'E', ExcelRow) ) +* Part = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'F', ExcelRow) ) +* WorkOrder = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'G', ExcelRow) ) +* RetainBox = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'H', ExcelRow) ) +* RetainSlot = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'I', ExcelRow) ) +* Operator = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'J', ExcelRow) ) +* RetainDate = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'K', ExcelRow) ) +* CurrLoc = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'L', ExcelRow) ) +* Status = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'M', ExcelRow) ) +* Comment = Trim( Excel_Services('GetCellValue', RetainExcelHandle, RetainWorksheet, 'N', ExcelRow) ) +* +* Begin Case +* Case Operator _EQC 'AH' +* RetainSig = 'ANTHONY_H' +* Case Operator _EQC 'SB' +* RetainSig = 'SYEDA_B' +* Case Operator _EQC 'PM' +* RetainSig = 'PEYTON_M' +* Case Operator _EQC 'JL' +* RetainSig = 'JAVIER_L' +* Case Operator _EQC 'PS' +* RetainSig = 'PRISCILA_S' +* Case Operator _EQC 'NC' +* RetainSig = 'NIKOLAS_C' +* Case Operator _EQC 'HG' +* RetainSig = 'HECTOR_G' +* Case Operator _EQC 'ES' +* RetainSig = 'ESTEBAN_S' +* Case Operator _EQC 'AD' +* RetainSig = 'ALIYAH_D' +* Case Operator _EQC 'LB' +* RetainSig = 'LACEY_B' +* Case Operator _EQC 'IP' +* RetainSig = 'IAN_P' +* Case Operator _EQC 'RC' +* RetainSig = 'RYAN_C' +* Case Operator _EQC 'GR' +* RetainSig = 'GEORGE_R' +* Case Operator _EQC 'AH/JL' +* RetainSig = 'ANTHONY_H' +* Case Operator _EQC 'NC/JL' +* RetainSig = 'NIKOLAS_C' +* Case Operator _EQC 'SW' +* RetainSig = 'STEVEN_W' +* Case Otherwise$ +* RetainSig = '' +* End Case +* +* // Truncate DTM to just the date, then convert to internal format +* RetainDate = RetainDTM[1, 'F '] +* RetainDate = IConv(RetainDate, 'D') +* +* * Clean the data * +* // Format the Recipe +* Convert @Lower.Case to @Upper.Case in Recipe +* // Format the Pocket +* If Pocket[1, 1] NE '0' then Pocket = '0':Pocket +* // Format the Scribe +* Convert @Lower.Case to @Upper.Case in Scribe +* // Format the Grade +* Begin Case +* Case Grade _EQC 'aborted' +* Grade = 'Aborted' +* Case Grade _EQC 'CT' +* Grade = 'CT' +* Case ( (Grade _EQC 'Eng test') or (Grade _EQC 'Eng test') or (Grade _EQC 'Engtest') or (Grade _EQC 'Test') ) +* Grade = 'Eng Test' +* Case Grade _EQC 'Eq Failure' +* Grade = 'EQ Failure' +* Case Grade _EQC 'Mechanical' +* Grade = 'Mechanical' +* Case Grade _EQC 'NA' +* Grade = 'NA' +* Case Grade _EQC 'retain' +* Grade = 'Retain' +* Case Grade _EQC 'scrap' +* Grade = 'Scrap' +* Case Grade _EQC 'Terminated' +* Grade = 'Terminated' +* Case Grade _EQC '' +* Grade = '' +* Case Otherwise$ +* Null +* End Case +* // Format the Part No +* Convert @Lower.Case to @Upper.Case in Part +* // Format the Current Location +* Begin Case +* Case CurrLoc _EQC 'Cleanroom' +* CurrLoc = 'Cleanroom' +* Case ( (CurrLoc _EQC 'Wafer Destroyed') or (CurrLoc _EQC 'Wafers Destroyed') or (CurrLoc _EQC 'Wasfer Destroyed') ) +* CurrLoc = 'Wafer Destroyed' +* Case CurrLoc _EQC 'Warehouse' +* CurrLoc = 'Warehouse' +* End Case +* +* * Write the data to the WO_WFR record * +* WfrIndex = Pocket + 0 ; // Convert string to integer and trim 0 padding +* +* RRScribe = RRScribes<0, WfrIndex> +* WfrID = InWfrIDs<0, WfrIndex> +* WOWfrRec = Database_Services('ReadDataRow', 'WO_WFR', WfrID) +* If Error_Services('NoError') then +* WOWfrRec = Grade +* WOWfrRec = RunID +* WOWfrRec = Pocket +* WOWfrRec = Scribe +* WOWfrRec = RetainBox +* WOWfrRec = RetainSlot +* WOWfrRec = CurrLoc +* WOWfrRec = Comment +* WOWfrRec = Status +* WOWfrRec = RetainSig +* WOWfrRec = RetainDate +* Database_Services('WriteDataRow', 'WO_WFR', WfrID, WOWfrRec, True$, False$, True$) +* end +* end +* end +* end +* Next ExcelRow +* end +* Excel_Services('CloseDocument', RetainExcelHandle) +* +* return +* + +