Compile Function Comm_Reactor(Instruction, Parm1, Parm2) /*********************************************************************************************************************** Name : Comm_Reactor History : (Date, Initials, Notes) 04/20/21 djs Updated Refresh GoSub to use PickPlace instead of Dedicated and Non-Dedicated reactor assignments for form color purposes. ***********************************************************************************************************************/ DECLARE SUBROUTINE Set_Property, Set_Status, ErrMsg, Set_Property, obj_AppWindow, Set_List_Box_Data DECLARE SUBROUTINE Btree.Extract, Send_Event, Security_Err_Msg, Forward_Event, End_Window, Start_Window, RList DECLARE SUBROUTINE Send_Message, obj_React_Esc, Msg, Print_ReactModeLog, Create_Dialog, Print_React_mode_log_services DECLARE FUNCTION Get_Property, Get_Status, Popup, Send_Message, Msg, Security_Check, Create_Dialog, RowExists DECLARE FUNCTION Dialog_Box, obj_WO_Log, MemberOf, obj_NCR, Send_Message, MemberOf, obj_Popup, Get_Status, Msg DECLARE FUNCTION obj_Reactor_PM, MemberOf, Start_Window, RTI_Task_Submit $INSERT POPUP_EQUATES $INSERT MSG_EQUATES $INSERT APPCOLORS $INSERT REACTOR_EQUATES $INSERT REACT_UTIL_EQU $INSERT LSL_USERS_EQU $INSERT SECURITY_RIGHTS_EQU $INSERT WAREHOUSE_EQUATES $INSERT TOOL_CLASS_EQUATES EQU CRLF$ TO \0D0A\ EQU COL$MFC_CODE TO 1 EQU COL$MFC_FUNCTION TO 2 EQU COL$MFC_PART_NO TO 3 EQU COL$MFC_SERIAL_NO TO 4 EQU COL$MFC_ASM_PN TO 5 EQU COL$MFC_RANGE TO 6 EQU COL$MFC_FLOW TO 7 EQU COL$MFC_INLET TO 8 EQU COL$MFC_OUTLET TO 9 EQU COL$RI_TYPE TO 1 EQU COL$RI_INST_DTM TO 2 EQU COL$RI_NO TO 3 EQU COL$RI_SERIAL TO 4 EQU COL$RI_RL_ID TO 5 EQU TARGET_ACTIVELIST$ TO 5 ErrTitle = 'Error in Comm_Reactor' ErrorMsg = '' Result = '' errCode = '' Transition = '' BEGIN CASE CASE Instruction = 'Create' ; GOSUB Create CASE Instruction = 'Refresh' ; GOSUB Refresh 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 = 'Page' ; GOSUB Page CASE Instruction = 'VScroll' ; GOSUB VScroll CASE Instruction = 'LUReactor' ; GOSUB LUReactor CASE Instruction = 'LUReactType' ; GOSUB LUReactType CASE Instruction = 'LUTempType' ; GOSUB LUTempType CASE Instruction = 'LUInjType' ; GOSUB LUInjType CASE Instruction = 'LUArmType' ; GOSUB LUArmType CASE Instruction = 'LUAssignment' ; GOSUB LUAssignment CASE Instruction = 'LULocation' ; GOSUB LULocation CASE Instruction = 'WaferSizeLF' ; GOSUB WaferSizeLF CASE Instruction = 'MFC_DC' ; GOSUB MFC_DC CASE Instruction = 'ReactItemHist' ; GOSUB ReactItemHist CASE Instruction = 'GasesDC' ; GOSUB GasesDC CASE Instruction = 'CurrItemDC' ; GOSUB CurrItemDC CASE Instruction = 'EscClick' ; GOSUB EscClick CASE Instruction = 'EscHistClick' ; GOSUB EscHistClick CASE Instruction = 'ModeHistClick' ; GOSUB ModeHistClick CASE Instruction = 'AdminModeHistClick' ; GOSUB AdminModeHistClick CASE Instruction = 'TubeHistClick' ; GOSUB TubeHistClick CASE Instruction = 'ReactorConfigClick' ; GOSUB ReactorConfigClick CASE Instruction = 'ReactLLClick' ; GOSUB ReactLLClick CASE Instruction = 'LUToolID' ; GOSUB LUToolID CASE Instruction = 'LUSuscPockets' ; GOSUB LUSuscPockets CASE Instruction = 'ViewTool' ; GOSUB ViewTool CASE Instruction = 'InjectorHistory' ; GOSUB InjectorHistory CASE Instruction = 'LUSuscConfigID' ; GOSUB LUSuscConfigID CASE Instruction = 'ReactState' ; GOSUB ReactState Case Instruction = 'ReactLLHistory' ; GOSUB ReactLLHistory Case Instruction = 'ReactServHist' ; GOSUB ReactServHist CASE 1 ErrorMsg = 'Unknown Instruction passed to routine' END CASE IF ErrorMsg NE '' THEN ErrMsg(ErrTitle:@SVM:ErrorMsg) END RETURN Result * * * * * * * Create: * * * * * * * obj_Appwindow("Create", @WINDOW) If Not(Security_Check("Reactor", READ$)) then Security_Err_Msg("Reactor", READ$) End_Window(@WINDOW) Return end If MemberOf(@USER4, 'SCHEDULER_ADMIN') OR MemberOf(@USER4, 'SCHEDULER_MASTER') OR MemberOf(@USER4, 'OI_ADMIN') then Set_Property(@Window : '.SECOND_CHAMBER', 'ENABLED', 1) Set_Property(@Window : '.SECOND_CHAMBER', 'BACKCOLOR', WHITE$) end IF MemberOf(@USER4, 'OI_SUPERUSER') THEN Set_Property(@WINDOW:'.CONFIG_GROUP','ENABLED',1) END ELSE Set_Property(@WINDOW:'.CONFIG_GROUP','ENABLED',0) END If MemberOf(@USER4, 'OI_SUPERUSER') then Set_Property(@WINDOW:'.PUB_ADMIN_MODE_CHANGE_HIST', 'ENABLED', 1) end else Set_Property(@WINDOW:'.PUB_ADMIN_MODE_CHANGE_HIST', 'ENABLED', 0) end IF Num(Parm1) THEN PassedKeys = Field(Parm1, "*", 1) obj_Appwindow("LoadFormKeys", @Window:@RM:PassedKeys) END WaferSizes = XLATE( 'LISTBOX_CONFIG','WAFERSIZE', 1, 'X' ) CONVERT @VM TO @FM IN WaferSizes Set_Property(@WINDOW:'.WAFER_SIZE','LIST',WaferSizes) ;* This is temporary until graphite (susceptors) get added to configurations Set_Property(@WINDOW:'.SUSC_POCKET_SIZE','LIST',WaferSizes) ;* So is this one GoSub Refresh RETURN * * * * * * * Read: * * * * * * * ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') ServID = '' ReactPMHist = obj_Reactor_PM('ReactServHist',ReactNo:@RM:ServID:@RM) ;* Open + 3 year history Set_Property(@WINDOW:'.PM_HISTORY','LIST',ReactPMHist) GOSUB Refresh RETURN * * * * * * * Write: * * * * * * * IF @WINDOW = 'REACTOR_RO' THEN ErrMsg('Changes will not be saved...') Focus = Get_Property( 'REACTOR_RO', "FOCUS" ) Send_Event( Focus, "LOSTFOCUS" ) Set_Property(@WINDOW,'SAVEWARN',0) Result = 0 END ELSE Result = 1 END RETURN * * * * * * * Clear: * * * * * * * Send_Event(@WINDOW,'PAGE',1) IF @WINDOW = 'REACTOR_RO' THEN Focus = Get_Property( 'REACTOR_RO', "FOCUS" ) Send_Event( Focus, "LOSTFOCUS" ) Set_Property(@WINDOW,'SAVEWARN',0) Result = 1 END GOSUB Refresh RETURN * * * * * * * Delete: * * * * * * * ErrMsg('Reactors may not be deleted.') Result = 0 ;* NOT OK to proceed with the delete RETURN * * * * * * * Close: * * * * * * * IF @WINDOW = 'REACTOR_RO' THEN Focus = Get_Property( 'REACTOR_RO', "FOCUS" ) Send_Event( Focus, "LOSTFOCUS" ) Set_Property(@WINDOW,'SAVEWARN',0) Result = 1 END ELSE obj_Appwindow('DetailReturn') END RETURN * * * * * * * Page: * * * * * * * Page = Get_Property(@WINDOW:'.TABCONTROL', 'VALUE') Set_Property(@WINDOW,'VPOSITION', Page) RETURN * * * * * * * VScroll: * * * * * * * Page = Parm1 Set_Property(@WINDOW:'.TABCONTROL','VALUE', Page) RETURN * * * * * * * Refresh: * * * * * * * CurrAssign = Get_Property(@WINDOW:'.REACT_ASSIGN','TEXT') EscStartDTM = Get_Property(@WINDOW:'.ESC_START_DTM','TEXT') ActEscalation = Get_Property(@WINDOW:'.ACT_ESC','LIST') EscStartDTM = ActEscalation<1,1> IF EscStartDTM NE '' THEN Set_Property(@WINDOW:'.ESC_BUTTON','TEXT','De-Escalate') Set_Property(@WINDOW:'.ESC_LABEL','VISIBLE',1) END ELSE Set_Property(@WINDOW:'.ESC_BUTTON','TEXT','Escalate') Set_Property(@WINDOW:'.ESC_LABEL','VISIBLE',0) END IF MemberOf(@USER4, 'OI_SUPERUSER') THEN Set_Property(@WINDOW:'.REACT_ASSIGN','ENABLED',1) Set_Property(@WINDOW:'.REACT_TYPE','ENABLED',1) END ELSE Set_Property(@WINDOW:'.REACT_ASSIGN','ENABLED',0) Set_Property(@WINDOW:'.REACT_TYPE','ENABLED',0) END PickPlace = Get_Property(@WINDOW:'.PICK_PLACE','CHECK') RAssign = Get_Property(@WINDOW:'.REACT_ASSIGN','DEFPROP') ReactType = Get_Property(@WINDOW:'.REACT_TYPE','TEXT') NotRepairable = Get_Property(@WINDOW:'.NOT_REPAIRABLE','CHECK') EpiPro = (ReactType EQ 'EPP') * BEGIN CASE * * CASE RAssign = 'O' * BackColor = GREY$ * * CASE Not(NotRepairable) BackColor = GREEN$ * * CASE NotRepairable * BackColor = LTORANGE$ * * CASE 1 * BackColor = GREY$ * * END CASE Set_Property(@WINDOW:'.REACT_ASSIGN_DESC','BACKCOLOR',BackColor) IF PickPlace THEN Set_Property(@WINDOW:'.LL_DISABLED_GROUP','ENABLED',1) END ELSE Set_Property(@WINDOW:'.LL_DISABLED_GROUP','ENABLED',0) END * 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 'REACTOR.LL_DISABLED_DTM' THEN ETList = Get_Property(ETCtrl,'LIST') FOR Line = 1 TO COUNT(ETList,@FM) + (ETList NE '') IF ETList 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 ;* End of check for special background color NEXT I RETURN * * * * * * * LUReactor: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 Set_Status(0) ReactorNo = Popup(@WINDOW,'','REACTORS') IF ReactorNo = '' THEN RETURN IF INDEX(ReactorNo,@VM,1) THEN CONVERT @VM TO @FM IN ReactorNo Send_Event(@WINDOW,'CLEAR') Set_Property(@WINDOW,'QBFLIST',ReactorNo) Send_Event(@WINDOW,'QBFFIRST') GOSUB Refresh END ELSE obj_Appwindow('LoadFormKeys',@WINDOW:@RM:ReactorNo) END RETURN * * * * * * * LUReactType: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 ReactType = Popup(@WINDOW,TypeOver,'REACTOR_TYPE') IF ReactType NE '' THEN obj_Appwindow('LUValReturn',ReactType:@RM:FocusControl:@RM:FocusPos) END RETURN * * * * * * * LUTempType: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 Result = Popup(@WINDOW,TypeOver,'REACTOR_TEMP_TYPE') IF Result NE '' THEN obj_Appwindow('LUValReturn',Result:@RM:FocusControl:@RM:FocusPos) END RETURN * * * * * * * LUInjType: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 Result = Popup(@WINDOW,TypeOver,'REACT_INJ_TYPE') IF Result NE '' THEN obj_Appwindow('LUValReturn',Result:@RM:FocusControl:@RM:FocusPos) END RETURN * * * * * * * LUArmType: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 Result = Popup(@WINDOW,TypeOver,'REACTOR_ARM_TYPE') IF Result NE '' THEN obj_Appwindow('LUValReturn',Result:@RM:FocusControl:@RM:FocusPos) END RETURN * * * * * * * LUAssignment: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 Assignment = Popup(@WINDOW,TypeOver,'REACT_ASSIGNMENT') IF Assignment NE '' THEN Set_Property(@WINDOW:'.REACT_ASSIGN','DEFPROP',Assignment) Send_Event(@WINDOW:'.REACT_ASSIGN','LOSTFOCUS') END RETURN * * * * * * * LULocation: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 Assignment = Popup(@WINDOW,TypeOver,'REACT_LOCATIONS') IF Assignment NE '' THEN Set_Property(@WINDOW:'.LOCATION','DEFPROP',Assignment) Send_Event(@WINDOW:'.LOCATION','LOSTFOCUS') END RETURN * * * * * * * WaferSizeLF: * * * * * * * WaferSize = Get_Property(@WINDOW:'.WAFER_SIZE','DEFPROP') IF WaferSize NE '' THEN ValidWaferSizes = Get_Property(@WINDOW:'.WAFER_SIZE','LIST') LOCATE WaferSize IN ValidWaferSizes USING @FM SETTING Pos ELSE ErrMsg('Invalid Wafer size entered. Choose from list.') Set_Property(@WINDOW:'.WAFER_SIZE','DEFPROP','') Set_Property('SYSTEM','FOCUS',@WINDOW:'.WAFER_SIZE') RETURN END END RETURN * * * * * * * MFC_DC: * * * * * * * ReactorNo = Get_Property(@WINDOW:'.REACT_NO','TEXT') CtrlEntID = @WINDOW:'.MFC_FUNC' CurrPos = Get_Property(CtrlEntID,'SELPOS') CurrCol = CurrPos<1> CurrRow = CurrPos<2> TableList = Get_Property(CtrlEntID,'LIST') IF CurrCol = COL$MFC_CODE THEN CurrMfcCodes = Get_Property(CtrlEntID,'ARRAY') ;* Existing MFC codes in edit table CurrMfcCodesTrimmed = '' FOR I = 1 TO COUNT(CurrMfcCodes,@VM) + (CurrMfcCodes NE '') IF CurrMfcCodes<1,I> NE '' THEN CurrMfcCodesTrimmed<1,I> = CurrMfcCodes<1,I> END NEXT I CurrMfcCodes = CurrMfcCodesTrimmed CurrMfcCodePositions = obj_Popup('CodePosition','REACT_MFC_FUNC':@RM:CurrMfcCodes) MfcCodes = Popup(@WINDOW,'','MFC_LOC') IF MfcCodes = '' THEN RETURN NewMfcCodePositions = obj_Popup('CodePosition','REACT_MFC_FUNC':@RM:MfcCodes) FOR I = 1 TO COUNT(NewMfcCodePositions,@VM) + (NewMfcCodePositions NE '') NewMFcCodePosition = NewMfcCodePositions<1,I> MfcCode = MfcCodes<1,I> LOCATE NewMfcCodePosition IN CurrMfcCodePositions BY 'AR' USING @VM SETTING POS ELSE CurrMfcCodePositions = INSERT(CurrMfcCodePositions,1,POS,0,NewMfcCodePosition) Send_Message(CtrlEntID,'INSERT',POS,MfcCode:@VM:@VM) END NEXT I Send_Event(@WINDOW:'.MFC_FUNC','CALCULATE',COL$MFC_FUNCTION) GOSUB Refresh END ;* End of MfcCode column IF CurrCol = COL$MFC_PART_NO THEN MFCPartNo = TableList MFCCode = TableList IF MFCCode NE '' THEN Retval = Popup(@WINDOW,TypeOver,'ASM_MFC') IF RetVal = '' THEN RETURN obj_AppWindow('LUValReturn',RetVal:@RM:CtrlEntID:@RM:CurrPos) END END IF CurrCol = COL$MFC_SERIAL_NO THEN MFCSerial = TableList MFCCode = TableList MFCPartNo = TableList IF MFCCode NE '' THEN IF MFCSerial = '' THEN IF MFCPartNo = '' THEN Gases = XLATE('MFC_LOC',MFCCode,2,'X') SearchString = 'GAS':@VM:Gases:@FM END ELSE SearchString = 'ASM_PN':@VM:MFCPartNo:@FM END Table = 'MFC' Option = '' Flag = '' MFCKeys = '' OPEN 'DICT.MFC' TO DictVar THEN Btree.Extract(SearchString, Table, DictVar, MFCKeys, Option, Flag) IF Get_Status(errCode) THEN ErrMsg(errCode) RETURN END END ELSE ErrMsg('Unable to open DICT.MFC for Btree.Extract routine.') RETURN END IF MFCKeys = '' THEN RETURN TypeOver = '' TypeOver = 'K' TypeOver = MFCKeys MFCKey = Popup(@WINDOW,TypeOver,'MASS_FLOW_CONTROLLERS') IF Get_Status(errCode) THEN ErrMsg(errCode) RETURN END IF MFCKey NE '' THEN obj_AppWindow('LUValReturn',MFCKey:@RM:CtrlEntID:@RM:CurrPos) END END ELSE IF Get_Property(@WINDOW,'QBFLIST') = '' THEN Send_Event(@WINDOW,'WRITE') END DetWindow = 'MFC' DetKeys = MFCSerial DefaultRec = '' RetKey = ReactorNo RetPage = 2 RetCtrl = CtrlEntID RetPos = CurrPos oAParms = DetWindow:@RM:DetKeys:@RM:DefaultRec:@RM:RetKey:@RM:RetPage:@RM:RetCtrl:@RM:RetPos obj_AppWindow('ViewNewDetail',oAParms) IF Get_Status(errCode) THEN ErrMsg(errCode) END END END END ;* End of QuoteNo column RETURN * * * * * * * GasesDC: * * * * * * * ReactorNo = Get_Property(@WINDOW:'.REACT_NO','TEXT') CtrlEntID = @WINDOW:'.GASES' CurrPos = Get_Property(CtrlEntID,'SELPOS') CurrCol = CurrPos<1> CurrRow = CurrPos<2> CurrGases = Get_Property(CtrlEntID,'ARRAY') ;* Existing MFC codes in edit table CurrGasesTrimmed = '' FOR I = 1 TO COUNT(CurrGases,@VM) + (CurrGases NE '') IF CurrGases<1,I> NE '' THEN CurrGasesTrimmed<1,I> = CurrGases<1,I> END NEXT I CurrGases = CurrGasesTrimmed CurrGasesPositions = obj_Popup('CodePosition','REACTOR_GASES':@RM:CurrGases) Gases = Popup(@WINDOW,'','REACTOR_GASES') IF Gases = '' THEN RETURN NewGasesPositions = obj_Popup('CodePosition','REACTOR_GASES':@RM:Gases) FOR I = 1 TO COUNT(NewGasesPositions,@VM) + (NewGasesPositions NE '') NewGasesPosition = NewGasesPositions<1,I> Gas = Gases<1,I> LOCATE NewGasesPosition IN CurrGasesPositions BY 'AR' USING @VM SETTING POS ELSE CurrGasesPositions = INSERT(CurrGasesPositions,1,POS,0,NewGasesPosition) Send_Message(CtrlEntID,'INSERT',POS,Gas) END NEXT I *Send_Event(@WINDOW:'.MFC_FUNC','CALCULATE',COL$MFC_FUNCTION) GOSUB Refresh RETURN * * * * * * * CurrItemDC: * * * * * * * ReactorNo = Get_Property(@WINDOW:'.REACT_NO','TEXT') CtrlEntID = @WINDOW:'.CURR_RI_TYPE' CurrPos = Get_Property(CtrlEntID,'SELPOS') CurrCol = CurrPos<1> CurrRow = CurrPos<2> TableList = Get_Property(CtrlEntID,'LIST') IF CurrCol = COL$RI_NO THEN RINo = TableList IF RINo NE '' THEN obj_Appwindow('ViewRelated','REACT_ITEM':@RM:RINo) END END IF CurrCol = COL$RI_RL_ID THEN RLId = TableList IF RLId NE '' THEN obj_Appwindow('ViewRelated','REACTOR_LOG':@RM:RLId) END END RETURN * * * * * * * ReactItemHist: * * * * * * * ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') AtRecord = Get_Property(@WINDOW,'ATRECORD') CurrItemKeys = AtRecord void = Create_Dialog('DIALOG_REACT_ITEM_HIST', @WINDOW, 0, '') Send_Event(@WINDOW,'READ') RETURN * * * * * * * ReactServHist: * * * * * * * ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') void = Create_Dialog('DIALOG_SERVICE_HISTORY', @WINDOW, 0, ReactNo) Send_Event(@WINDOW,'READ') RETURN * * * * * * * InjectorHistory: * * * * * * * ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') IF ReactNo NE '' THEN TypeOver = '' TypeOver = 'WITH REACTOR_NO = ':ReactNo:' BY-DSND INJ_SET_DTM' void = Popup(@WINDOW,TypeOver,'REACT_INJ_SETTINGS') END RETURN * * * * * * * EscClick: * * * * * * * Ctrls = @WINDOW:'.REACT_NO':@RM:@WINDOW:'.ACT_ESC' Props = 'TEXT':@RM:'LIST' Vals = Get_Property(Ctrls,Props) ReactNo = Vals[1,@RM] ActEscString = Vals[COL2()+1,@RM] IF ReactNo = '' THEN RETURN StartDTM = ActEscString<1,1> IF StartDTM = '' THEN Transition = 'ESC' ELSE Transition = 'D-ESC' EscData = Dialog_Box('DIALOG_HOLD',@WINDOW,Transition:@FM:'Reactor') IF EscData = 'Cancel' THEN RETURN Send_Event(@WINDOW,'WRITE') UserID = EscData<1> Reason = EscData<2> CurrDate = OCONV(Date(),'D4/') CurrTime = OCONV(Time(),'MTH') CurrDTM = CurrDate:' ':CurrTime SelectSent = 'SELECT REACT_UTIL WITH REACTOR = ':QUOTE(ReactNo):' AND WITH MODE = "P" BY-DSND END_DATE BY-DSND END_TIME' Set_Status(0) Def = "" Def = "Finding Last Production Mode Change..." Def = "U" MsgUp = Msg(@WINDOW, Def) ;* display the processing message Set_Status(0) RList(SelectSent, TARGET_ACTIVELIST$, '', '', '') IF Get_Status(errCode) THEN Msg(@WINDOW, MsgUp) ErrMsg(errCode) RETURN END OutOfProdDTM = '' OPEN 'REACT_UTIL' TO ReactUtilTable THEN Done = 0 LOOP READNEXT ReactUtilKey ELSE Done = 1 UNTIL Done OR OutOfProdDTM NE '' READ ReactUtilRec FROM ReactUtilTable,ReactUtilKey THEN EndDt = ReactUtilRec EndTm = ReactUtilRec OutOfProdDTM = OCONV(EndDt,'D4/'):' ':OCONV(EndTm,'MTS') END REPEAT END Msg(@WINDOW, MsgUp) IF StartDTM = '' THEN * Place Reactor into Escalation obj_React_Esc('Create',ReactNo:@RM:CurrDTM:@RM:UserID:@RM:Reason:@RM:OutOfProdDTM) END ELSE * Take Reactor out of Escalation obj_React_Esc('Close',ReactNo:@RM:StartDTM:@RM:CurrDTM:@RM:UserID:@RM:Reason) END obj_AppWindow('LoadFormKeys',@WINDOW:@RM:ReactNo) RETURN * * * * * * * EscHistClick: * * * * * * * IF @WINDOW = 'WO_DAILY_SCHED_SINGLE' THEN ReactNo = Get_Property(@WINDOW,'@REACTOR') END ELSE ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') END IF ReactNo NE '' THEN OPEN 'DICT.REACT_ESC' TO DictVar THEN SearchString = 'REACT_NO':@VM:ReactNo:@FM Option = '' Flag = '' BTREE.EXTRACT(SearchString,'REACT_ESC',DictVar,REKeys,Option,Flag) IF Get_Status(errCode) THEN ErrMsg(errCode) RETURN END IF REKeys = '' THEN ErrMsg('No Escalation History on file for this reactor.!') RETURN END TypeOver = '' TypeOver = REKeys TypeOver = 2 EscKeys = Popup(@WINDOW,TypeOVer,'REACT_ESC_HISTORY') obj_AppWindow('ViewRelated','REACT_ESC':@RM:EscKeys) END END RETURN * * * * * * * ModeHistClick: * * * * * * * //Added new Reactor Mode Report 6/23/2022 IF @WINDOW = 'WO_DAILY_SCHED_SINGLE' THEN ReactNo = Get_Property(@WINDOW,'@REACTOR') StopDt = Date() - 60 END ELSE ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') StopDt = '' END IF ReactNo = '' THEN RETURN DaysToReport = Msg(@WINDOW,TypeOver,'REPORT_DAYS') If Num(DaysToReport) then Start_Window('REACTOR_MODE_HISTORY','', ReactNo:char(244):DaysToReport) end RETURN * * * * * * * * * * AdminModeHistClick: * * * * * * * * * * ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') Create_Dialog('NDW_EDIT_MODE_CHANGE_HIST', @Window, '', ReactNo) RETURN * * * * * * * TubeHistClick: * * * * * * * ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') IF ReactNo NE '' THEN obj_Appwindow('ViewRelated','REACT_TUBE':@RM:ReactNo) END RETURN * * * * * * * ReactorConfigClick: * * * * * * * IF @WINDOW = 'WO_DAILY_SCHED_SINGLE' THEN ReactNo = Get_Property(@WINDOW,'@REACTOR') END ELSE ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') END obj_AppWindow('ViewRelated','REACTOR_RO':@RM:ReactNo) RETURN * * * * * * * ReactLLClick: * * * * * * * IF @WINDOW = 'WO_DAILY_SCHED_SINGLE' THEN ReactNo = Get_Property(@WINDOW,'@REACTOR') ReactLLDisabled = Dialog_Box('DIALOG_REACT_LL', @WINDOW, ReactNo) BEGIN CASE CASE ReactLLDisabled = '' ReactLLText = '' CASE ReactLLDisabled = 'R' ReactLLText = 'Right Load Lock Disabled' CASE ReactLLDisabled = 'L' ReactLLText = 'Left Load Lock Disabled' CASE 1 ReactLLText = '' END CASE Set_Property(@WINDOW:'.REACT_LL_STATUS','TEXT',ReactLLText) END ELSE ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') ReactLLDisabled = Dialog_Box('DIALOG_REACT_LL', @WINDOW, ReactNo) END RETURN * * * * * * * LUToolID: * * * * * * * ReactorTools = XLATE('TOOL_CLASS','REACTOR',TOOL_CLASS_TOOL$,'X') TypeOver = '' TypeOver = 'K' TypeOver = ReactorTools ToolID = Popup(@WINDOW,TypeOver,'TOOLS') IF Get_Status(errCode) THEN ErrMsg(errCode) IF ToolID NE '' AND ToolID NE CHAR(27) THEN obj_AppWindow('LUValReturn',ToolID:@RM:@WINDOW:'.TOOL_ID') END RETURN * * * * * * * ViewTool: * * * * * * * ToolID = Get_Property(@WINDOW:'.TOOL_ID','DEFPROP') IF ToolID NE '' THEN obj_Appwindow('ViewRelated','TOOL':@RM:ToolID) END RETURN * * * * * * * LUSuscPockets: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 ReactType = Popup(@WINDOW,'','SUSCEPTOR_POCKETS') IF ReactType NE '' THEN obj_Appwindow('LUValReturn',ReactType:@RM:FocusControl:@RM:FocusPos) END RETURN * * * * * * * LUSuscConfigID: * * * * * * * IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1 IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2 EpiSuscID = Popup(@WINDOW,'','EPI_SUSCEPTOR') IF Get_Status(errCode) THEN ErrMsg(errCode) END IF EpiSuscID NE '' THEN obj_Appwindow('LUValReturn',EpiSuscID:@RM:FocusControl:@RM:FocusPos) END RETURN * * * * * * * ReactState: * * * * * * * IF @WINDOW = 'WO_DAILY_SCHED_SINGLE' THEN ReactNo = Get_Property(@WINDOW,'@REACTOR') END ELSE ReactNo = Get_Property(@WINDOW:'.REACT_NO','DEFPROP') END IF ReactNo NE '' THEN obj_AppWindow('ViewRelated','REACT_STATE':@RM:ReactNo) END RETURN * * * * * * * * * ReactLLHistory: * * * * * * * * * //IF @USER4 EQ 'JONATHAN_O' then debug IF @WINDOW = 'WO_DAILY_SCHED_SINGLE' THEN ReactNo = Get_Property(@WINDOW,'@REACTOR') END LLHistoryWindow = Start_Window('REACT_LL_HISTORY', @Window, ReactNo, '', '') return