759 lines
18 KiB
Plaintext
759 lines
18 KiB
Plaintext
COMPILE FUNCTION Comm_RDS2(Instruction, Parm1,Parm2)
|
|
#pragma precomp SRP_PreCompiler
|
|
|
|
/*
|
|
Commuter module for RDS2 (Run Data Sheet) window
|
|
|
|
05/12/2005 - John C. Henry, J.C. Henry & Co., Inc.
|
|
*/
|
|
|
|
DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, obj_Notes, obj_RDS_Test
|
|
DECLARE SUBROUTINE Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, Database_Services
|
|
|
|
DECLARE FUNCTION Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Dialog_Box, RowExists
|
|
DECLARE FUNCTION obj_Schedule, Dialog_Box, obj_WO_Log, obj_RDS2, obj_RDS_Audit, Create_Dialog, Database_Services
|
|
|
|
|
|
$INSERT POPUP_EQUATES
|
|
$INSERT LOGICAL
|
|
$INSERT MSG_EQUATES
|
|
$INSERT APPCOLORS
|
|
$INSERT RDS_EQU
|
|
$INSERT RDS_LAYER_EQUATES
|
|
$INSERT RDS_TEST_EQUATES
|
|
$INSERT WO_STEP_EQU
|
|
$INSERT ORDER_EQU
|
|
$INSERT LSL_USERS_EQU
|
|
$INSERT SECURITY_RIGHTS_EQU
|
|
$INSERT RDS_EPILOAD ;* Equates for data coming back from the EpiPRO Load/Unload dialog boxes
|
|
|
|
EQU COL$LSID TO 1
|
|
EQU COL$RECIPE TO 2
|
|
EQU COL$RECIPE_NAME TO 3
|
|
EQU COL$PARAMS TO 4
|
|
EQU COL$PARMS_OUT TO 5
|
|
EQU COL$BLANK_COL TO 6
|
|
EQU COL$MET_NO TO 7
|
|
EQU COL$THICK_AVG TO 8
|
|
EQU COL$RRHO_AVG TO 9
|
|
EQU COL$MET_NO_Z1 TO 10
|
|
EQU COL$THICK_AVG_Z1 TO 11
|
|
EQU COL$RRHO_AVG_Z1 TO 12
|
|
EQU COL$MET_NO_Z2 TO 13
|
|
EQU COL$THICK_AVG_Z2 TO 14
|
|
EQU COL$RRHO_AVG_Z2 TO 15
|
|
EQU COL$MET_OUT TO 16
|
|
EQU COL$MET_OUT_Z1 TO 17
|
|
EQU COL$MET_OUT_Z2 TO 18
|
|
|
|
EQU COL$POCKET TO 1
|
|
EQU COL$USE TO 2
|
|
EQU COL$ZONE TO 3
|
|
EQU COL$IN_CASS TO 4
|
|
EQU COL$IN_SLOT TO 5
|
|
EQU COL$CHAR TO 6
|
|
EQU COL$OUT_CASS TO 7
|
|
EQU COL$OUT_SLOT TO 8
|
|
EQU COL$NCR TO 9 ;* Dead?
|
|
|
|
EQU CRLF$ TO \0D0A\
|
|
|
|
ErrTitle = 'Error in Comm_RDS2'
|
|
ErrorMsg = ''
|
|
|
|
Result = ''
|
|
|
|
BEGIN CASE
|
|
CASE Instruction = 'Create' ; GOSUB Create
|
|
CASE Instruction = 'Refresh' ; GOSUB Refresh
|
|
CASE Instruction = 'Page' ; GOSUB Page
|
|
CASE Instruction = 'Read' ; GOSUB Read
|
|
CASE Instruction = 'Write' ; GOSUB Write
|
|
CASE Instruction = 'Clear' ; GOSUB Clear
|
|
CASE Instruction = 'Delete' ; GOSUB Delete
|
|
CASE Instruction = 'Close' ; GOSUB Close
|
|
CASE Instruction = 'LURdsNo' ; GOSUB LURdsNo
|
|
CASE Instruction = 'ViewProdSpec' ; GOSUB ViewProdSpec
|
|
CASE Instruction = 'CopyMetrology' ; GOSUB CopyMetrology
|
|
CASE Instruction = 'CopyRecipeParameters' ; GOSUB CopyRecipeParameters
|
|
CASE Instruction = 'ViewAudit' ; GOSUB ViewAudit
|
|
CASE Instruction = 'LSIdDC' ; GOSUB LSIdDC
|
|
CASE Instruction = 'LoadEpiPro' ; GOSUB LoadEpiPro
|
|
CASE Instruction = 'UnloadEpiPro' ; GOSUB UnloadEpiPro
|
|
CASE Instruction = 'AddZoneMet' ; GOSUB AddZoneMet
|
|
CASE Instruction = 'MoveMetToZone' ; GOSUB MoveMetToZone
|
|
CASE Instruction = 'ViewWOMat' ; GOSUB ViewWOMat
|
|
CASE Instruction = 'WMInKeyDC' ; GOSUB WMInKeyDC
|
|
CASE Instruction = 'WMOutKeyDC' ; GOSUB WMOutKeyDC
|
|
|
|
CASE 1
|
|
ErrorMsg = 'Unknown Instruction passed to routine'
|
|
END CASE
|
|
|
|
RETURN Result
|
|
|
|
|
|
* * * * * * *
|
|
Create:
|
|
* * * * * * *
|
|
|
|
IF NOT(Security_Check('RDS',READ$)) THEN
|
|
Security_Err_Msg('RDS',READ$)
|
|
End_Window(@WINDOW)
|
|
RETURN
|
|
END
|
|
|
|
|
|
obj_Appwindow('Create',@WINDOW)
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Read:
|
|
* * * * * * *
|
|
|
|
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO_FIX','TEXT')
|
|
|
|
IF RowExists('RDS',RDSNo) THEN
|
|
IF NOT(Security_Check('RDS',READ$)) THEN
|
|
Send_Event(@WINDOW,'CLEAR')
|
|
Security_Err_Msg('RDS',READ$)
|
|
RETURN
|
|
END
|
|
END ELSE
|
|
ErrMsg('RDS entries may only be created from the Work Order window.')
|
|
Send_Event(@WINDOW,'CLEAR')
|
|
RETURN
|
|
END
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Write:
|
|
* * * * * * *
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Clear:
|
|
* * * * * * *
|
|
|
|
*Send_Event(@WINDOW,'PAGE',1)
|
|
|
|
GOTO Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Delete:
|
|
* * * * * * *
|
|
|
|
IF NOT(Security_Check('RDS',DELETE$)) THEN
|
|
Security_Err_Msg('RDS',DELETE$)
|
|
RETURN
|
|
END
|
|
|
|
Result = 0 ;* OK to proceed with the delete
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
* * * * * * *
|
|
Page:
|
|
* * * * * * *
|
|
|
|
obj_Appwindow('Page')
|
|
|
|
GOSUB Refresh
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
* * * * * * *
|
|
Close:
|
|
* * * * * * *
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Refresh:
|
|
* * * * * * *
|
|
|
|
|
|
* QBF buttons
|
|
|
|
Ctrls = @WINDOW:'.QBF_FIRST_FIX':@RM ; Props = 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_PREV_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_ABS_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_NEXT_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_LAST_FIX':@RM ; Props := 'ENABLED':@RM
|
|
Ctrls := @WINDOW:'.QBF_STOP_FIX' ; Props := 'ENABLED'
|
|
|
|
IF Get_Property(@WINDOW,'QBFLIST') = '' THEN
|
|
Vals = 0:@RM:0:@RM:0:@RM:0:@RM:0:@RM:0
|
|
END ELSE
|
|
Vals = 1:@RM:1:@RM:1:@RM:1:@RM:1:@RM:1
|
|
END
|
|
|
|
Set_Property(Ctrls,Props,Vals)
|
|
|
|
* Turn edit table symbolic column backgrounds to green
|
|
|
|
ETSymbolics = Get_Property(@WINDOW,'@ET_SYMBOLICS') ;* Loaded during 'Create' in obj_Appwindow
|
|
|
|
ETCtrls = ETSymbolics<1>
|
|
ETCols = ETSymbolics<2>
|
|
|
|
FOR I = 1 TO COUNT(ETCtrls,@VM) + (ETCtrls NE '')
|
|
ETCtrl = ETCtrls<1,I>
|
|
IF ETCtrl NE @WINDOW:'.CASSETTES' THEN
|
|
ETList = Get_Property(ETCtrl,'LIST')
|
|
FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '')
|
|
IF ETList<Line,1> NE '' THEN
|
|
FOR N = 1 TO COUNT(ETCols<1,I>,@SVM) + (ETCols<1,I> NE '')
|
|
stat = Send_Message(ETCtrl,'COLOR_BY_POS',ETCols<1,I,N>,Line,GREEN$)
|
|
NEXT N
|
|
END
|
|
NEXT Line
|
|
END
|
|
NEXT I
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LURdsNo:
|
|
* * * * * * *
|
|
|
|
Set_Status(0)
|
|
|
|
RDSKeys = obj_RDS2('Find')
|
|
ErrCode = ''
|
|
IF Get_Status(errCode) THEN ErrMsg(ErrCode)
|
|
|
|
CONVERT @FM TO @VM IN RDSKeys
|
|
|
|
IF RDSKeys NE '' THEN
|
|
|
|
WONo = Get_Property(@Window:'.WO', 'TEXT')
|
|
RDSKeys = Dialog_Box('NDW_RDS_QUERY', @Window, WONo)
|
|
IF RDSKeys NE '' THEN obj_Appwindow('ViewRelated',@WINDOW:@RM:RDSKeys) ;* Loads form key or QBFList as required
|
|
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
ViewQuote:
|
|
* * * * * * *
|
|
|
|
QuoteNo = Get_Property(@WINDOW:'.QUOTE_NO_FIX','TEXT')
|
|
|
|
IF QuoteNo = '' THEN RETURN
|
|
|
|
obj_AppWindow('ViewRelated','QUOTE':@RM:QuoteNo)
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
ViewProdSpec:
|
|
* * * * * * *
|
|
|
|
PSNo = Get_Property(@WINDOW:'.PS_NO_FIX','TEXT')
|
|
|
|
IF PSNo = '' THEN RETURN
|
|
|
|
obj_AppWindow('ViewRelated','PROD_SPEC':@RM:PSNo)
|
|
|
|
Send_Event(@WINDOW:'.PS_NO_FIX','LOSTFOCUS') ;* Kicks the symbolics
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
CopyMetrology:
|
|
* * * * * * *
|
|
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO','DEFPROP')
|
|
WONo = Get_Property(@Window:'.WO', 'TEXT')
|
|
DestRDSNos = Dialog_Box('NDW_RDS_QUERY', @Window, WONo)
|
|
SourceMetKeys = obj_RDS2('GetMetKeys',RDSNo)
|
|
RDSCnt = COUNT(DestRDSNos,@VM) + (DestRDSNos NE '')
|
|
|
|
FOR I = 1 TO RDSCnt
|
|
Copy = 1 ;* Set flag
|
|
DestRDSNo = DestRDSNos<1,I>
|
|
|
|
DestQASig = XLATE('RDS',DestRDSNo,RDS_SUP_VER_SIG$,'X')
|
|
|
|
IF DestQASig NE '' THEN
|
|
|
|
ErrMsg("Destination RDS ":DestRDSNo:" has been final QA'd. Metrology NOT copied.")
|
|
|
|
END ELSE
|
|
|
|
MetEntered = XLATE('RDS',DestRDSNo,'LS_MET_ENTERED','X') ;* @VM list of binary values by layer
|
|
|
|
IF MetEntered[1,1] = 1 THEN
|
|
MsgInfo = ''
|
|
MsgInfo<MTEXT$> = 'RDS ':DestRDSNo:' already has Metrology Results. Do you wish to overwrite them?'
|
|
MsgInfo<MICON$> = '?'
|
|
MsgInfo<MTYPE$> = 'BNY'
|
|
MsgInfo<MDEFBTN$> = '2' ;* This sets the default to the No button
|
|
Copy = Msg(@WINDOW,MsgInfo)
|
|
END
|
|
|
|
IF Copy THEN
|
|
|
|
DestMetKeys = obj_RDS2('GetMetKeys',DestRDSNo)
|
|
IF SourceMetKeys<1> = DestMetKeys<1> THEN
|
|
Set_Status(0)
|
|
obj_RDS_Test('CopyStats',SourceMetKeys<2>:@RM:DestMetKeys<2>)
|
|
IF Get_Status(errCode) THEN
|
|
ErrMsg(errCode)
|
|
END
|
|
|
|
Send_Event(@WINDOW:'.RDS_LS_ID','LOSTFOCUS')
|
|
|
|
END ELSE
|
|
ErrMsg('SourceMetKeys not equal DestMetKeys: Contact FI')
|
|
END
|
|
|
|
END ;* End of check for Copy flag
|
|
END ;* End of check for Existing Final QA signature
|
|
NEXT I
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
CopyRecipeParameters:
|
|
|
|
RDSRow = Get_Property(@Window, 'ATRECORD')
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO', 'DEFPROP')
|
|
WONo = Get_Property(@Window:'.WO', 'TEXT')
|
|
DestRDSNos = Dialog_Box('NDW_RDS_QUERY', @Window, WONo : @FM : 'quick')
|
|
|
|
If DestRDSNos NE '' then
|
|
RDSLayerKeyIDs = RDSRow<RDS_RDS_LAYER_KEYS$>
|
|
If RDSLayerKeyIDs NE '' then
|
|
For Each RDSLayerKeyID in RDSLayerKeyIDs using @VM
|
|
RDSLayerRow = Database_Services('ReadDataRow', 'RDS_LAYER', RDSLayerKeyID)
|
|
Layer = RDSLayerKeyID[-1, 'B*']
|
|
For Each DestRDSNo in DestRDSNos using @VM
|
|
DestRDSLayerKeyID = DestRDSNo : '*' : Layer
|
|
DestRDSLayerRow = Database_Services('ReadDataRow', 'RDS_LAYER', DestRDSLayerKeyID)
|
|
DestRDSLayerRow<RDS_LAYER_EPI_TIME$> = RDSLayerRow<RDS_LAYER_EPI_TIME$>
|
|
DestRDSLayerRow<RDS_LAYER_DILUENT_ADJ_PARAM$> = RDSLayerRow<RDS_LAYER_DILUENT_ADJ_PARAM$>
|
|
DestRDSLayerRow<RDS_LAYER_DOPANT_FLOW$> = RDSLayerRow<RDS_LAYER_DOPANT_FLOW$>
|
|
DestRDSLayerRow<RDS_LAYER_HCL_FLOW$> = RDSLayerRow<RDS_LAYER_HCL_FLOW$>
|
|
DestRDSLayerRow<RDS_LAYER_BAKE_TIME$> = RDSLayerRow<RDS_LAYER_BAKE_TIME$>
|
|
DestRDSLayerRow<RDS_LAYER_EPI_H2_FLOW$> = RDSLayerRow<RDS_LAYER_EPI_H2_FLOW$>
|
|
DestRDSLayerRow<RDS_LAYER_TCS_FLOW$> = RDSLayerRow<RDS_LAYER_TCS_FLOW$>
|
|
DestRDSLayerRow<RDS_LAYER_DCS_FLOW$> = RDSLayerRow<RDS_LAYER_DCS_FLOW$>
|
|
DestRDSLayerRow<RDS_LAYER_AUX1$> = RDSLayerRow<RDS_LAYER_AUX1$>
|
|
DestRDSLayerRow<RDS_LAYER_AUX2$> = RDSLayerRow<RDS_LAYER_AUX2$>
|
|
DestRDSLayerRow<RDS_LAYER_F_OFFSET$> = RDSLayerRow<RDS_LAYER_F_OFFSET$>
|
|
DestRDSLayerRow<RDS_LAYER_S_OFFSET$> = RDSLayerRow<RDS_LAYER_S_OFFSET$>
|
|
DestRDSLayerRow<RDS_LAYER_R_OFFSET$> = RDSLayerRow<RDS_LAYER_R_OFFSET$>
|
|
DestRDSLayerRow<RDS_LAYER_ETCH1$> = RDSLayerRow<RDS_LAYER_ETCH1$>
|
|
DestRDSLayerRow<RDS_LAYER_ETCH2$> = RDSLayerRow<RDS_LAYER_ETCH2$>
|
|
DestRDSLayerRow<RDS_LAYER_ETCH3$> = RDSLayerRow<RDS_LAYER_ETCH3$>
|
|
DestRDSLayerRow<RDS_LAYER_SUSC_ETCH$> = RDSLayerRow<RDS_LAYER_SUSC_ETCH$>
|
|
DestRDSLayerRow<RDS_LAYER_UL_TEMP$> = RDSLayerRow<RDS_LAYER_UL_TEMP$>
|
|
Database_Services('WriteDataRow', 'RDS_LAYER', DestRDSLayerKeyID, DestRDSLayerRow, True$, False$, True$)
|
|
Send_Event(@Window : '.RDS_LS_ID' , 'LOSTFOCUS')
|
|
Next DestRDSNo
|
|
Next RDSLayerKeyID
|
|
end
|
|
end
|
|
|
|
return
|
|
|
|
|
|
* * * * * * *
|
|
ViewAudit:
|
|
* * * * * * *
|
|
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO_FIX','DEFPROP')
|
|
|
|
IF RDSNo = '' THEN RETURN
|
|
|
|
AuditData = obj_RDS_Audit('Display',RDSNo:@RM:@WINDOW) ;* Returns all audit columns for this window
|
|
|
|
DispText = AuditData[1,@RM]
|
|
UserNames = AuditData[COL2()+1,@RM]
|
|
LastDTMS = AuditData[COL2()+1,@RM]
|
|
Windows = AuditData[COL2()+1,@RM]
|
|
|
|
PopupDisplay = ''
|
|
|
|
FOR I = 1 TO COUNT(DispText,@FM) + (DispText NE '')
|
|
PopupDisplay<1,I> = DispText<I>:@TM:OCONV(UserNames<I>,'[XLATE_CONV,LSL_USERS*FIRST_LAST]' ):@TM:LastDTMs<I>:@TM:Windows<I>
|
|
NEXT I
|
|
|
|
OverRide = ''
|
|
OverRide<PDISPLAY$> = PopupDisplay
|
|
|
|
void = PopUp(@WINDOW, OverRide, 'RDS_MOD_HIST_VIEW' )
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LSIdDC:
|
|
* * * * * * *
|
|
|
|
CtrlEntID = @WINDOW:'.RDS_LS_ID_FIX'
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO_FIX','DEFPROP')
|
|
|
|
IF Get_Property(@WINDOW,'SAVEWARN') THEN
|
|
Set_Property(@WINDOW,'@SKIP_SAVEWARN',0)
|
|
END ELSE
|
|
Set_Property(@WINDOW,'@SKIP_SAVEWARN',1)
|
|
END
|
|
|
|
CurrPos = Get_Property(CtrlEntID,'SELPOS')
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
|
|
IF CurrCol LT COL$MET_NO THEN
|
|
LSId = Get_Property(CtrlEntID,'CELLPOS',COL$LSID:@FM:CurrRow)
|
|
|
|
IF RDSNo NE '' AND LSId NE '' THEN
|
|
|
|
Send_Event('RDS','WRITE')
|
|
|
|
RdsLSID = RDSNo:'*':LSId
|
|
|
|
DetWindow = 'RDS_LAYER'
|
|
DetKeys = RdsLSID
|
|
DefaultRec = ''
|
|
RetKey = RDSNo
|
|
RetWin = @WINDOW
|
|
RetPage = 1
|
|
RetCtrl = CtrlEntID
|
|
RetPos = CurrPos
|
|
|
|
obj_Appwindow('ViewNewDetail',DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos)
|
|
|
|
END
|
|
END
|
|
|
|
IF CurrCol = COL$MET_NO OR CurrCol = COL$MET_NO_Z1 OR CurrCol = COL$MET_NO_Z2 THEN
|
|
MetNo = Get_Property(CtrlEntID,'CELLPOS',CurrCol:@FM:CurrRow)
|
|
|
|
IF MetNo NE '' THEN
|
|
|
|
Send_Event('RDS','WRITE')
|
|
|
|
DetWindow = 'RDS_TEST'
|
|
DetKeys = MetNo
|
|
DefaultRec = ''
|
|
RetKey = RDSNo
|
|
RetWin = 'RDS'
|
|
RetPage = 1
|
|
RetCtrl = CtrlEntID
|
|
RetPos = CurrPos
|
|
|
|
obj_Appwindow('ViewNewDetail',DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos)
|
|
|
|
END
|
|
END
|
|
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
LoadEpiPro:
|
|
* * * * * * *
|
|
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO_FIX','DEFPROP')
|
|
CurrentLoad = Get_Property(@WINDOW:'.POCKET','DEFPROP')
|
|
|
|
IF RDSNo = '' THEN RETURN
|
|
|
|
OutCassettes = CurrentLoad<COL$OUT_CASS>
|
|
|
|
CONVERT @VM TO '' IN OutCassettes
|
|
|
|
IF OutCassettes NE '' THEN
|
|
ErrMsg('Wafers have already been unloaded from the reactor.')
|
|
RETURN
|
|
END
|
|
|
|
/*
|
|
IF Security_Check( 'RDS', Print$ ) ELSE
|
|
Security_Err_Msg( 'RDS', Print$ )
|
|
RETURN
|
|
END
|
|
*/
|
|
|
|
Reactor = Get_Property(@WINDOW:'.REACTOR','TEXT')
|
|
|
|
ReactorType = XLATE('REACTOR',Reactor,1,'X')
|
|
|
|
IF ReactorType NE 'EPP' THEN
|
|
ErrMsg('Reactor ':Reactor:' is not an EpiPro tool.')
|
|
RETURN
|
|
END
|
|
|
|
Send_Event(@WINDOW,'WRITE')
|
|
|
|
|
|
MatlLoadInfo = Create_Dialog('DIALOG_LOAD_EPI_PRO', @WINDOW, 0, RDSNo:@FM:CurrentLoad)
|
|
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
UnloadEpiPro:
|
|
* * * * * * *
|
|
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO_FIX','DEFPROP')
|
|
CurrentLoad = Get_Property(@WINDOW:'.POCKET','DEFPROP')
|
|
|
|
IF RDSNo = '' THEN RETURN
|
|
|
|
/*
|
|
IF Security_Check( 'RDS', Print$ ) ELSE
|
|
Security_Err_Msg( 'RDS', Print$ )
|
|
RETURN
|
|
END
|
|
*/
|
|
|
|
Reactor = Get_Property(@WINDOW:'.REACTOR','TEXT')
|
|
|
|
ReactorType = XLATE('REACTOR',Reactor,1,'X')
|
|
|
|
IF ReactorType NE 'EPP' THEN
|
|
ErrMsg('Reactor ':Reactor:' is not an EpiPro tool.')
|
|
RETURN
|
|
END
|
|
|
|
Send_Event(@WINDOW,'WRITE')
|
|
|
|
MatlUnloadInfo = Create_Dialog('DIALOG_UNLOAD_EPI_PRO', @WINDOW, 0, RDSNo:@FM:CurrentLoad)
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
* * * * * * *
|
|
AddZoneMet:
|
|
* * * * * * *
|
|
|
|
CtrlEntID = @WINDOW:'.RDS_LS_ID_FIX'
|
|
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO_FIX','DEFPROP')
|
|
PSNo = Get_Property(@WINDOW:'.PS_NO_FIX','DEFPROP')
|
|
LSArray = Get_Property(CtrlEntID,'DEFPROP')
|
|
|
|
LSIDs = LSArray<COL$LSID>
|
|
MetNos = LSArray<COL$MET_NO>
|
|
MetNosZ1 = LSArray<COL$MET_NO_Z1>
|
|
MetNosZ2 = LSArray<COL$MET_NO_Z2>
|
|
|
|
MetTest = MetNos
|
|
Z1Test = MetNosZ1
|
|
Z2Test = MetNosZ2
|
|
|
|
CONVERT @VM TO '' IN MetTest
|
|
CONVERT @VM TO '' IN Z1Test
|
|
CONVERT @VM TO '' IN Z2Test
|
|
|
|
IF MetTest = '' THEN
|
|
BEGIN CASE
|
|
CASE Z1Test = '' AND Z2Test = ''
|
|
* Ask for z1 or z2
|
|
TypeOver = ''
|
|
TypeOver<MTYPE$> = 'B&1,&2,&Cancel'
|
|
TypeOver<MCAPTION$> = 'Add Reactor Zone Metrology'
|
|
TypeOver<MICON$> = '?'
|
|
TypeOver<MDEFBTN$> = '3'
|
|
TypeOver<MTEXT$> = 'Add Metrology for Zone:'
|
|
|
|
NewZone = Msg(@WINDOW,TypeOver,'')
|
|
|
|
IF NewZone = 3 THEN RETURN
|
|
|
|
|
|
CASE Z1Test = '' AND Z2Test NE ''
|
|
NewZone = 1
|
|
|
|
CASE Z1Test NE '' AND Z2Test = ''
|
|
NewZone = 2
|
|
|
|
CASE 1
|
|
ErrMsg('No open Zone to move to.')
|
|
RETURN
|
|
|
|
END CASE
|
|
|
|
Send_Event(@WINDOW,'WRITE')
|
|
|
|
FOR I = 1 TO COUNT(LSIDs,@VM) + (LSIDs NE '')
|
|
IF LSIDs<1,I> NE '' THEN
|
|
LSID = LSIDs<1,I>
|
|
|
|
oRTParms = RDSNo:@RM
|
|
oRTParms := LSID:@RM
|
|
oRTParms := PSNo:@RM
|
|
oRTParms := NewZone
|
|
|
|
obj_RDS_Test('Create',oRTPARms)
|
|
END
|
|
NEXT I
|
|
|
|
Set_Property(@WINDOW:'.RDS_NO','DEFPROP',RDSNo)
|
|
Send_Event(@WINDOW,'READ')
|
|
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
MoveMetToZone:
|
|
* * * * * * *
|
|
|
|
CtrlEntID = @WINDOW:'.RDS_LS_ID_FIX'
|
|
RDSNo = Get_Property(@WINDOW:'.RDS_NO_FIX','DEFPROP')
|
|
|
|
LSArray = Get_Property(CtrlEntID,'DEFPROP')
|
|
|
|
MetNos = LSArray<COL$MET_NO>
|
|
MetNosZ1 = LSArray<COL$MET_NO_Z1>
|
|
MetNosZ2 = LSArray<COL$MET_NO_Z2>
|
|
|
|
MetTest = MetNos
|
|
Z1Test = MetNosZ1
|
|
Z2Test = MetNosZ2
|
|
|
|
CONVERT @VM TO '' IN MetTest
|
|
CONVERT @VM TO '' IN Z1Test
|
|
CONVERT @VM TO '' IN Z2Test
|
|
|
|
IF MetTest NE '' THEN
|
|
BEGIN CASE
|
|
CASE Z1Test = '' AND Z2Test = ''
|
|
* Ask for z1 or z2
|
|
TypeOver = ''
|
|
TypeOver<MTYPE$> = 'B&1,&2,&Cancel'
|
|
TypeOver<MCAPTION$> = 'Move Metrology to Reactor Zone'
|
|
TypeOver<MICON$> = '?'
|
|
TypeOver<MDEFBTN$> = '3'
|
|
TypeOver<MTEXT$> = 'Move Metrology to Zone:'
|
|
|
|
DestZone = Msg(@WINDOW,TypeOver,'')
|
|
|
|
IF DestZone = 3 THEN RETURN
|
|
|
|
|
|
CASE Z1Test = '' AND Z2Test NE ''
|
|
DestZone = 1
|
|
|
|
CASE Z1Test NE '' AND Z2Test = ''
|
|
DestZone = 2
|
|
|
|
CASE 1
|
|
ErrMsg('No open Zone to move to.')
|
|
RETURN
|
|
|
|
END CASE
|
|
|
|
Send_Event(@WINDOW,'WRITE')
|
|
|
|
FOR I = 1 TO COUNT(MetNos,@VM) + (MetNos NE '')
|
|
IF MetNos<1,I> NE '' THEN
|
|
MetNo = MetNos<1,I>
|
|
|
|
oRTParms = MetNo:@RM
|
|
oRTParms := DestZone
|
|
|
|
obj_RDS_Test('SetZone',oRTPARms)
|
|
END
|
|
NEXT I
|
|
|
|
Set_Property(@WINDOW:'.RDS_NO','DEFPROP',RDSNo)
|
|
Send_Event(@WINDOW,'READ')
|
|
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
ViewWOMat:
|
|
* * * * * * *
|
|
|
|
WONo = Get_Property(@WINDOW:'.WO_NO_FIX','DEFPROP')
|
|
CassNo = Get_Property(@WINDOW:'.CASS_NO_FIX','DEFPROP')
|
|
|
|
IF WONo NE '' AND CassNo NE '' THEN
|
|
obj_AppWindow('ViewRelated','WO_MAT':@RM:WONo:'*':CassNo)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
WMInKeyDC:
|
|
* * * * * * *
|
|
|
|
CtrlEntID = @WINDOW:'.WM_IN_KEY_FIX'
|
|
|
|
CurrPos = Get_Property(CtrlEntID,'SELPOS')
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
WMInKey = Get_Property(CtrlEntID,'CELLPOS',1:@FM:CurrRow)
|
|
|
|
IF WMInKey NE '' THEN
|
|
obj_Appwindow('ViewRelated', 'WM_IN':@RM:WMInKey)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
WMOutKeyDC:
|
|
* * * * * * *
|
|
|
|
CtrlEntID = @WINDOW:'.WM_OUT_KEY_FIX'
|
|
|
|
CurrPos = Get_Property(CtrlEntID,'SELPOS')
|
|
CurrCol = CurrPos<1>
|
|
CurrRow = CurrPos<2>
|
|
|
|
WMOutKey = Get_Property(CtrlEntID,'CELLPOS',1:@FM:CurrRow)
|
|
|
|
IF WMOutKey NE '' THEN
|
|
obj_Appwindow('ViewRelated', 'WM_OUT':@RM:WMOutKey)
|
|
END
|
|
|
|
RETURN
|
|
|
|
|
|
|