added LSL2 stored procedures
This commit is contained in:
374
LSL2/STPROC/DIALOG_SPLIT_WAFER.txt
Normal file
374
LSL2/STPROC/DIALOG_SPLIT_WAFER.txt
Normal file
@ -0,0 +1,374 @@
|
||||
COMPILE FUNCTION Dialog_Split_Wafer(EntID,Event,Parm1,Parm2,Parm3,Parm4,Parm5)
|
||||
|
||||
/*
|
||||
Commuter module for Dialog_Split_Wafer window.- Cloned from DIALOG_LOAD_SUSCEPTOR
|
||||
|
||||
06/5/2016 - John C. Henry, J.C. Henry & Co., Inc.
|
||||
*/
|
||||
|
||||
DECLARE SUBROUTINE Set_Property, End_Dialog, Set_Status, ErrMsg, obj_RDS2, Send_Event, RDS_React_Run, Send_Info, obj_React_Run, obj_WO_Wfr, obj_Run_Stage
|
||||
DECLARE SUBROUTINE obj_Appwindow, Start_Window, Msg, End_Dialog, Send_Message, obj_MAT_INBOUND, obj_WM_Wfrs, obj_React_Status, obj_WO_Wfr_WIP, obj_Run_Stage_Wfr
|
||||
DECLARE FUNCTION Get_Property, Get_Status, Dialog_Box, Popup, obj_WM_In, Send_Message, obj_NCR, obj_WM_Wfrs, Set_Property, obj_WO_Mat_Wfr, obj_WO_Wfr_WIP
|
||||
DECLARE FUNCTION obj_Prod_Spec, obj_WO_Wfr
|
||||
|
||||
EQU CRLF$ TO \0D0A\
|
||||
|
||||
|
||||
$INSERT REACT_RUN_EQUATES
|
||||
$INSERT REACTOR_EQUATES
|
||||
$INSERT RDS_TEST_EQUATES
|
||||
$INSERT TOOL_EQUATES
|
||||
$INSERT TOOL_CLASS_EQUATES
|
||||
$INSERT PRS_STAGE_EQUATES
|
||||
$INSERT WO_LOG_EQUATES
|
||||
$INSERT WO_STEP_EQUATES
|
||||
$INSERT WO_MAT_EQUATES
|
||||
$INSERT APPCOLORS
|
||||
$INSERT WO_WFR_EQUATES
|
||||
|
||||
EQU COL$WFR_ID TO 1
|
||||
EQU COL$SCRIBE TO 2
|
||||
|
||||
|
||||
EQU EDITABLE$ TO 4
|
||||
EQU PROTECTED$ TO 8 ;* Protected - Edittable COLSTYLE constants
|
||||
EQU MULTILINE_STYLE$ TO 512 ;* MultiLine Select
|
||||
EQU LOCKED$ TO 8192
|
||||
EQU DROPDOWN_STYLE$ TO 131072
|
||||
|
||||
|
||||
ErrTitle = 'Error in Dialog_Split_Wafer commuter module'
|
||||
ErrorMsg = ''
|
||||
ErrCode = ''
|
||||
|
||||
Result = ''
|
||||
|
||||
|
||||
BEGIN CASE
|
||||
|
||||
CASE EntID = @WINDOW
|
||||
BEGIN CASE
|
||||
CASE Event = 'CREATE' ; GOSUB Create
|
||||
CASE Event = 'CLOSE' ; GOSUB Close ;* This needs to be a PRECLOSE event!
|
||||
|
||||
CASE Event[1,3] = 'QBF' ; GOSUB Refresh
|
||||
END CASE
|
||||
|
||||
CASE EntID = @WINDOW:'.SPLIT_BUTTON' AND Event = 'CLICK' ; GOSUB SplitWfr
|
||||
CASE EntID = @WINDOW:'.CANCEL_BUTTON' AND Event = 'CLICK' ; GOSUB Cancel
|
||||
|
||||
|
||||
CASE EntID = @WINDOW:'.REACTOR_TABLE' AND Event = 'INSERTROW' ; GOSUB ReactIR
|
||||
CASE EntID = @WINDOW:'.REACTOR_TABLE' AND Event = 'DELETEROW' ; GOSUB ReactIR
|
||||
|
||||
|
||||
|
||||
CASE 1
|
||||
ErrorMsg = 'Unknown Parameters ':EntID:' - ':Event:' passed to commuter'
|
||||
ErrMsg(ErrorMsg)
|
||||
|
||||
END CASE
|
||||
|
||||
IF ErrorMsg NE '' THEN
|
||||
ErrMsg(ErrTitle:@SVM:ErrorMsg)
|
||||
END
|
||||
|
||||
|
||||
|
||||
RETURN Result
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
Create:
|
||||
* * * * * * *
|
||||
|
||||
obj_AppWindow('Create')
|
||||
|
||||
|
||||
RDSNo = FIELD(Parm1,@FM,1)
|
||||
Stage = FIELD(Parm1,@FM,2)
|
||||
ToolID = FIELD(Parm1,@FM,3)
|
||||
|
||||
|
||||
IF RDSNo = '' THEN
|
||||
ErrMsg('Null RDS No passed to Dialog Box...')
|
||||
End_Dialog(@WINDOW,'')
|
||||
END
|
||||
|
||||
RRunRec = XLATE('REACT_RUN',RDSNo,'','X')
|
||||
|
||||
WONo = RRunRec<REACT_RUN_WO_NO$>
|
||||
WOStep = RRunRec<REACT_RUN_WO_STEP$>
|
||||
GanRun = RRunRec<REACT_RUN_GAN_RUN_ID$>
|
||||
|
||||
|
||||
Ctrls = @WINDOW:'.RDS_NO':@RM ; Props = 'DEFPROP':@RM ; Vals = RDSNo:@RM
|
||||
Ctrls := @WINDOW:'.GAN_RUN':@RM ; Props := 'DEFPROP':@RM ; Vals := GanRun:@RM
|
||||
Ctrls := @WINDOW:'.STAGE':@RM ; Props := 'DEFPROP':@RM ; Vals := Stage:@RM
|
||||
Ctrls := @WINDOW:'.TOOL_ID':@RM ; Props := 'DEFPROP':@RM ; Vals := ToolID:@RM
|
||||
Ctrls := @WINDOW:'.WO_NO':@RM ; Props := 'DEFPROP':@RM ; Vals := WONo:@RM
|
||||
Ctrls := @WINDOW:'.WO_STEP' ; Props := 'DEFPROP' ; Vals := WOStep
|
||||
|
||||
Set_Property(Ctrls,Props,Vals)
|
||||
|
||||
LoadCnt = 0
|
||||
OpenCnt = 0
|
||||
|
||||
RCtrl = @WINDOW:'.CARRIER'
|
||||
|
||||
CarrWfrIDs = RRunRec<REACT_RUN_CARR_WFR_ID$>
|
||||
CarrScribes = XLATE('WO_WFR',CarrWfrIDs,WO_WFR_SCRIBE$,'X')
|
||||
|
||||
Set_Property(RCtrl,'DEFPROP',CarrWfrIDs:@FM:CarrScribes)
|
||||
|
||||
clCnt = COUNT(CarrWfrIDs,@VM) + (CarrWfrIDs NE '')
|
||||
|
||||
|
||||
IF clCnt NE 0 THEN
|
||||
|
||||
* Loaded
|
||||
|
||||
BriefTxt = '{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}'
|
||||
BriefTxt := '{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\b\f0\fs20 Split Wafer from Cassette\par'
|
||||
BriefTxt := '\b0\par'
|
||||
BriefTxt := ' 1.) Split Wafer from Run for Characterization\b\par'
|
||||
BriefTxt := '\b0\par'
|
||||
BriefTxt := '}'
|
||||
|
||||
|
||||
|
||||
Set_Property(@WINDOW:'.BRIEF_EDITBOX','RTFTEXT',BriefTxt)
|
||||
END ELSE
|
||||
ErrMsg('Wafers must be unloaded from the reactor prior to splitting for characterizaton.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
WOStepKey = WONo:'*':WOStep
|
||||
|
||||
GOSUB Refresh
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
SplitWfr:
|
||||
* * * * * * *
|
||||
|
||||
RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP')
|
||||
Stage = Get_Property(@WINDOW:'.STAGE','DEFPROP')
|
||||
|
||||
ReactNo = XLATE('REACT_RUN',RDSNo,REACT_RUN_REACTOR$,'X')
|
||||
|
||||
IF ReactNo = '' THEN
|
||||
ErrMsg('Reactor is not yet assigned to this Reactor Run.')
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
CtrlEntID = @WINDOW:'.CARRIER'
|
||||
|
||||
CurrPos = Get_Property(CtrlEntID,'SELPOS')
|
||||
CurrCol = CurrPos<1>
|
||||
CurrRow = CurrPos<2>
|
||||
|
||||
SplitComplete = 1
|
||||
|
||||
|
||||
WfrIDArray = Get_Property(CtrlEntID,'DEFPROP')<1>
|
||||
|
||||
WfrID = WfrIDArray<1,CurrRow>
|
||||
|
||||
IF WfrID = '' THEN
|
||||
ErrMsg('No Wafer ID Selected for Split')
|
||||
RETURN
|
||||
END
|
||||
|
||||
* Check for selected WfrID already in the CharWfrID(s)
|
||||
|
||||
CharWfrIDs = XLATE('REACT_RUN',RDSNo,REACT_RUN_CHAR_WFR_ID$,'X')
|
||||
|
||||
LOCATE WfrID IN CharWfrIDs USING @VM SETTING Pos THEN
|
||||
ErrMsg('Wafer ':WfrID:' is already in the Characterization Wafer List')
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
CONVERT @VM TO ' ' IN WfrIDArray
|
||||
|
||||
WfrIDArray = TRIM(WfrIDArray)
|
||||
|
||||
CONVERT ' ' TO @VM IN WfrIDArray
|
||||
|
||||
LOCATE WfrID IN WfrIDArray USING @VM SETTING Pos THEN
|
||||
WfrIDArray = DELETE(WfrIDArray,1,Pos,0)
|
||||
END
|
||||
|
||||
|
||||
PSNo = XLATE('REACT_RUN',RDSNo,'PS_NO','X')
|
||||
|
||||
WONo =WfrID[1,'*']
|
||||
WOMatKey = FIELD(WfrID,'*',1,2)
|
||||
|
||||
SigProfile = XLATE('REACT_RUN',RDSNo,REACT_RUN_WFR_STAGE$,'X')
|
||||
|
||||
spCnt = COUNT(SigProfile,@VM) + (SigProfile NE '')
|
||||
|
||||
FOR I = 1 TO spCnt
|
||||
SigStage = SigProfile<1,I>
|
||||
|
||||
obj_Run_Stage_Wfr('Create',RDSNo:@RM:SigStage:@RM:WfrID:@RM:PSNo) ;* 6/24/2016 JCH
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(ErrCode)
|
||||
|
||||
END
|
||||
NEXT I
|
||||
|
||||
FirstStage = SigProfile<1,1>
|
||||
|
||||
ToolClass = XLATE('PRS_STAGE' , PSNo:'*':FirstStage , PRS_STAGE_PROC_TOOL_CLASS$ , 'X' )
|
||||
|
||||
ToolClassRec = XLATE('TOOL_CLASS',ToolClass,'','X')
|
||||
|
||||
QInWH = ToolClassRec<TOOL_CLASS_QIN_WH$>
|
||||
QInLoc = ToolClassRec<TOOL_CLASS_QIN_LOC$>
|
||||
|
||||
CurrLocs = obj_WO_Wfr('CurrLoc',WfrID:@RM:'') ;* Added 9/27/2016 JCH
|
||||
|
||||
CurrSlotID = CurrLocs<1,2> ;* Added 9/27/2016 JCH
|
||||
CurrTool = CurrLocs<1,3> ;* Added 9/27/2016 JCH
|
||||
CurrInvLoc = CurrLocs<1,4> ;* Added 9/27/2016 JCH
|
||||
|
||||
|
||||
CurrDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS')
|
||||
|
||||
owwParms = WfrID:@RM ;* WfrIDs - mv
|
||||
owwParms := CurrDTM:@RM ;* EventDtm
|
||||
owwParms := @USER4:@RM ;* EventBy
|
||||
owwParms := 'SPLIT':@RM ;* Event
|
||||
owwParms := '':@RM ;* New Slot IDs - mv
|
||||
owwParms := '':@RM ;* RPZs(RDSNo*Pocket*Zone)s - mv
|
||||
owwParms := '':@RM ;* NCRNo
|
||||
owwParms := '':@RM ;* TWUse ID
|
||||
owwParms := '':@RM ;* Current Slot ID - mv
|
||||
owwParms := '':@RM ;* New ToolID
|
||||
owwParms := CurrTool:@RM ;* Curr Tool ID ;* This should never happen unless there is missing/incomplete data in the WO_WFR record
|
||||
owwParms := QInWH:'*':QInLoc:@RM ;* NewInvLoc
|
||||
owwParms := CurrInvLoc:@RM ;* CurrInvLoc
|
||||
owwParms := 'O':@RM ;* Wfr Side
|
||||
owwParms := '':@RM ;* NewCarrLoc
|
||||
owwParms := '' ;* CurrCarrLoc ;* Not currently used
|
||||
|
||||
obj_WO_Wfr('AddEvent',owwParms) ;* Takes Carrier Loc off and Adds QIn for first Char step
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(errCode)
|
||||
SplitComplete = 0
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
obj_React_Run('SplitWfr',RDSNo:@RM:WfrID) ;* Takes WfrID out of Carr_WfrID, Adds WfrID to Carr_Prev...., Adds WfrID to CHAR_WFRS
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(errCode)
|
||||
SplitComplete = 0
|
||||
END
|
||||
|
||||
|
||||
obj_Run_Stage('SetIASig',RDSNo:@RM:'SPLIT':@RM:'SPLIT') ;* Set Inv Action Signature for Action
|
||||
|
||||
|
||||
End_Dialog(@WINDOW,SplitComplete)
|
||||
|
||||
IF Stage NE '' THEN
|
||||
obj_Appwindow('LoadFormKeys','RUN_STAGE':@RM:RDSNo:'*':Stage)
|
||||
END
|
||||
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
Close:
|
||||
* * * * * * *
|
||||
|
||||
|
||||
* * * * * * *
|
||||
Cancel:
|
||||
* * * * * * *
|
||||
|
||||
RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP')
|
||||
Stage = Get_Property(@WINDOW:'.STAGE','DEFPROP')
|
||||
WMILocks = Get_Property(@WINDOW,'@LOCKED_WFRS')
|
||||
|
||||
IF WMILocks NE '' THEN
|
||||
obj_WM_Wfrs('UnlockSet','WMI_WFRS':@RM:WMILocks) ; * Remove locks on the wafer slots
|
||||
END
|
||||
|
||||
Set_Property(@WINDOW,'@LOCKED_WFRS','')
|
||||
|
||||
End_Dialog(@WINDOW,'')
|
||||
|
||||
IF Stage NE '' THEN
|
||||
obj_Appwindow('LoadFormKeys','RUN_STAGE':@RM:RDSNo:'*':Stage)
|
||||
END
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
Refresh:
|
||||
* * * * * * *
|
||||
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
ReactIR:
|
||||
* * * * * * *
|
||||
|
||||
RowIndex = Parm1
|
||||
|
||||
IF RowIndex = '' THEN RETURN
|
||||
|
||||
CtrlID = @WINDOW:'.REACTOR_TABLE'
|
||||
|
||||
Dummy = Send_Message(CtrlID,'DELETE',RowIndex)
|
||||
|
||||
GOSUB Refresh
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
ReactDR:
|
||||
* * * * * * *
|
||||
|
||||
RowIndex = Parm1
|
||||
RowData = Parm2
|
||||
|
||||
IF RowIndex = '' THEN RETURN
|
||||
|
||||
CtrlID = @WINDOW:'.REACTOR_TABLE'
|
||||
|
||||
Dummy = Send_Message(CtrlID, "INSERT", RowIndex, RowData)
|
||||
|
||||
GOSUB Refresh
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user