Implemented suggested changes and added extra error checking

This commit is contained in:
Infineon\Ouellette
2025-08-27 11:51:15 -07:00
parent d61ae234c9
commit 2eff7c5a37
4 changed files with 549 additions and 560 deletions

View File

@ -199,89 +199,94 @@ Refresh:
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
If RowExists('RDS', RDSNo) then
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
UnloadSigned = RDSRec<RDS_OPERATOR_OUT$>
ReactorNo = RDSRec<RDS_REACTOR$>
//Unload Extra 1
UnloadExtra1Signature = RDSRec<RDS_OP_OUT_EX1$>
UnloadExtra1UserFirstLast = xlate( 'LSL_USERS', UnloadExtra1Signature, 'FIRST_LAST', 'X' )
UnloadExtra1Date = OConv(RDSRec<RDS_OP_OUT_EX1_DATE$>, 'D')
UnloadExtra1Time = Oconv(RDSRec<RDS_OP_OUT_EX1_TIME$>, 'MT')
//Load Extra 1
LoadExtra1Signature = RDSRec<RDS_OP_IN_EX2$>
LoadExtra1UserFirstLast = xlate( 'LSL_USERS', LoadExtra1Signature, 'FIRST_LAST', 'X' )
LoadExtra1Date = Oconv(RDSRec<RDS_OP_IN_EX2_DATE$>, 'D')
LoadExtra1Time = Oconv(RDSRec<RDS_OP_IN_EX2_TIME$>, 'MT')
LoadExtra1Reactor = RDSRec<RDS_LOAD_EXTRA_1_REACTOR$>
//Unload Extra 2
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
UnloadExtra2UserFirstLast = xlate( 'LSL_USERS', UnloadExtra2Signature, 'FIRST_LAST', 'X' )
UnloadExtra2Date = Oconv(RDSRec<RDS_OP_OUT_EX2_DATE$>, 'D')
UnloadExtra2Time = Oconv(RDSRec<RDS_OP_OUT_EX2_TIME$>, 'MT')
//Load Extra 2
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
LoadExtra2UserFirstLast = xlate( 'LSL_USERS', LoadExtra2Signature, 'FIRST_LAST', 'X' )
LoadExtra2Date = Oconv(RDSRec<RDS_OP_IN_EX3_DATE$>, 'D')
LoadExtra2Time = Oconv(RDSRec<RDS_OP_IN_EX3_TIME$>, 'MT')
LoadExtra2Reactor = RDSRec<RDS_LOAD_EXTRA_2_REACTOR$>
if Error_Services('NoError') then
UnloadSigned = RDSRec<RDS_OPERATOR_OUT$>
ReactorNo = RDSRec<RDS_REACTOR$>
//Unload Extra 1
UnloadExtra1Signature = RDSRec<RDS_OP_OUT_EX1$>
UnloadExtra1UserFirstLast = xlate( 'LSL_USERS', UnloadExtra1Signature, 'FIRST_LAST', 'X' )
UnloadExtra1Date = OConv(RDSRec<RDS_OP_OUT_EX1_DATE$>, 'D')
UnloadExtra1Time = Oconv(RDSRec<RDS_OP_OUT_EX1_TIME$>, 'MT')
//Load Extra 1
LoadExtra1Signature = RDSRec<RDS_OP_IN_EX2$>
LoadExtra1UserFirstLast = xlate( 'LSL_USERS', LoadExtra1Signature, 'FIRST_LAST', 'X' )
LoadExtra1Date = Oconv(RDSRec<RDS_OP_IN_EX2_DATE$>, 'D')
LoadExtra1Time = Oconv(RDSRec<RDS_OP_IN_EX2_TIME$>, 'MT')
LoadExtra1Reactor = RDSRec<RDS_LOAD_EXTRA_1_REACTOR$>
//Unload Extra 2
UnloadExtra2Signature = RDSRec<RDS_OP_OUT_EX2$>
UnloadExtra2UserFirstLast = xlate( 'LSL_USERS', UnloadExtra2Signature, 'FIRST_LAST', 'X' )
UnloadExtra2Date = Oconv(RDSRec<RDS_OP_OUT_EX2_DATE$>, 'D')
UnloadExtra2Time = Oconv(RDSRec<RDS_OP_OUT_EX2_TIME$>, 'MT')
//Load Extra 2
LoadExtra2Signature = RDSRec<RDS_OP_IN_EX3$>
LoadExtra2UserFirstLast = xlate( 'LSL_USERS', LoadExtra2Signature, 'FIRST_LAST', 'X' )
LoadExtra2Date = Oconv(RDSRec<RDS_OP_IN_EX3_DATE$>, 'D')
LoadExtra2Time = Oconv(RDSRec<RDS_OP_IN_EX3_TIME$>, 'MT')
LoadExtra2Reactor = RDSRec<RDS_LOAD_EXTRA_2_REACTOR$>
//Populate text fields
Set_Property(@Window : '.EDL_UNLOAD_EX_1_USER', 'TEXT', UnloadExtra1UserFirstLast)
Set_Property(@Window : '.EDL_UNLOAD_EX_1_DATE', 'TEXT', UnloadExtra1Date)
Set_Property(@Window : '.EDL_UNLOAD_EX_1_TIME', 'TEXT', UnloadExtra1Time)
Set_Property(@Window : '.EDL_LOAD_EX_1_USER', 'TEXT', LoadExtra1UserFirstLast)
Set_Property(@Window : '.EDL_LOAD_EX_1_DATE', 'TEXT', LoadExtra1Date)
Set_Property(@Window : '.EDL_LOAD_EX_1_TIME', 'TEXT', LoadExtra1Time)
Set_Property(@Window : '.EDL_UNLOAD_EX_2_USER', 'TEXT', UnloadExtra2UserFirstLast)
Set_Property(@Window : '.EDL_UNLOAD_EX_2_DATE', 'TEXT', UnloadExtra2Date)
Set_Property(@Window : '.EDL_UNLOAD_EX_2_TIME', 'TEXT', UnloadExtra2Time)
Set_Property(@Window : '.EDL_LOAD_EX_2_USER', 'TEXT', LoadExtra2UserFirstLast)
Set_Property(@Window : '.EDL_LOAD_EX_2_DATE', 'TEXT', LoadExtra2Date)
Set_Property(@Window : '.EDL_LOAD_EX_2_TIME', 'TEXT', LoadExtra2Time)
If LoadExtra1Reactor NE '' then
Set_Property(@Window : '.EDL_REACTOR1', 'TEXT', LoadExtra1Reactor)
end else
Set_Property(@Window : '.EDL_REACTOR1', 'TEXT', ReactorNo)
end
If LoadExtra2Reactor NE '' then
Set_Property(@Window : '.EDL_REACTOR2', 'TEXT', LoadExtra2Reactor)
end else
Set_Property(@Window : '.EDL_REACTOR2', 'TEXT', ReactorNo)
end
If UnloadSigned EQ '' then
Set_Property(@Window : '.EDL_REACTOR1', 'ENABLED', True$)
Set_Property(@Window : '.EDL_REACTOR2', 'ENABLED', True$)
end else
Set_Property(@Window : '.EDL_REACTOR1', 'ENABLED', False$)
Set_Property(@Window : '.EDL_REACTOR2', 'ENABLED', False$)
end
If UnloadExtra1Signature NE '' then
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_1', 'ENABLED', False$)
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_1', 'ENABLED', True$)
end else
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_1', 'ENABLED', True$)
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_1', 'ENABLED', False$)
end
If UnloadExtra2Signature NE '' then
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_2', 'ENABLED', False$)
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_2', 'ENABLED', True$)
end else
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_2', 'ENABLED', True$)
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_2', 'ENABLED', False$)
end
If LoadExtra1Signature NE '' then
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_1', 'ENABLED', False$)
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_1', 'ENABLED', True$)
end else
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_1', 'ENABLED', True$)
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_1', 'ENABLED', False$)
end
If LoadExtra2Signature NE '' then
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_2', 'ENABLED', False$)
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_2', 'ENABLED', True$)
end else
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_2', 'ENABLED', True$)
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_2', 'ENABLED', False$)
end
end else
Msg(@Window, 'Error reading RDS record from database.')
end
//Populate text fields
Set_Property(@Window : '.EDL_UNLOAD_EX_1_USER', 'TEXT', UnloadExtra1UserFirstLast)
Set_Property(@Window : '.EDL_UNLOAD_EX_1_DATE', 'TEXT', UnloadExtra1Date)
Set_Property(@Window : '.EDL_UNLOAD_EX_1_TIME', 'TEXT', UnloadExtra1Time)
Set_Property(@Window : '.EDL_LOAD_EX_1_USER', 'TEXT', LoadExtra1UserFirstLast)
Set_Property(@Window : '.EDL_LOAD_EX_1_DATE', 'TEXT', LoadExtra1Date)
Set_Property(@Window : '.EDL_LOAD_EX_1_TIME', 'TEXT', LoadExtra1Time)
Set_Property(@Window : '.EDL_UNLOAD_EX_2_USER', 'TEXT', UnloadExtra2UserFirstLast)
Set_Property(@Window : '.EDL_UNLOAD_EX_2_DATE', 'TEXT', UnloadExtra2Date)
Set_Property(@Window : '.EDL_UNLOAD_EX_2_TIME', 'TEXT', UnloadExtra2Time)
Set_Property(@Window : '.EDL_LOAD_EX_2_USER', 'TEXT', LoadExtra2UserFirstLast)
Set_Property(@Window : '.EDL_LOAD_EX_2_DATE', 'TEXT', LoadExtra2Date)
Set_Property(@Window : '.EDL_LOAD_EX_2_TIME', 'TEXT', LoadExtra2Time)
If LoadExtra1Reactor NE '' then
Set_Property(@Window : '.EDL_REACTOR1', 'TEXT', LoadExtra1Reactor)
end else
Set_Property(@Window : '.EDL_REACTOR1', 'TEXT', ReactorNo)
end
If LoadExtra2Reactor NE '' then
Set_Property(@Window : '.EDL_REACTOR2', 'TEXT', LoadExtra2Reactor)
end else
Set_Property(@Window : '.EDL_REACTOR2', 'TEXT', ReactorNo)
end
If UnloadSigned EQ '' then
Set_Property(@Window : '.EDL_REACTOR1', 'ENABLED', True$)
Set_Property(@Window : '.EDL_REACTOR2', 'ENABLED', True$)
end else
Set_Property(@Window : '.EDL_REACTOR1', 'ENABLED', False$)
Set_Property(@Window : '.EDL_REACTOR2', 'ENABLED', False$)
end
If UnloadExtra1Signature NE '' then
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_1', 'ENABLED', False$)
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_1', 'ENABLED', True$)
end else
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_1', 'ENABLED', True$)
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_1', 'ENABLED', False$)
end
If UnloadExtra2Signature NE '' then
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_2', 'ENABLED', False$)
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_2', 'ENABLED', True$)
end else
Set_Property(@Window : '.PUB_SIGN_UNLOAD_EX_2', 'ENABLED', True$)
Set_Property(@Window : '.PUB_CLEAR_UNLOAD_EX_2', 'ENABLED', False$)
end
If LoadExtra1Signature NE '' then
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_1', 'ENABLED', False$)
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_1', 'ENABLED', True$)
end else
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_1', 'ENABLED', True$)
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_1', 'ENABLED', False$)
end
If LoadExtra2Signature NE '' then
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_2', 'ENABLED', False$)
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_2', 'ENABLED', True$)
end else
Set_Property(@Window : '.PUB_SIGN_LOAD_EX_2', 'ENABLED', True$)
Set_Property(@Window : '.PUB_CLEAR_LOAD_EX_2', 'ENABLED', False$)
end
end else
ResponseValue = Set_Property(@Window, '@responsevalue', 0)
Post_Event(@Window, 'CLOSE')
@ -289,101 +294,115 @@ Refresh:
return
ReactorChange:
RDSNo = Get_Property(@Window : '.EDL_RDS', 'TEXT')
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
WONo = RDSRec<RDS_WO$>
ReactorNo = ''
LLChosen = ''
ChangePermitted = False$
Begin Case
Case Control EQ 'PUB_SIGN_LOAD_EX_1'
ReactorNo = Get_Property(@Window : '.EDL_REACTOR1', 'TEXT')
ReactorField = RDS_LOAD_EXTRA_1_REACTOR$
Case Control EQ 'PUB_SIGN_LOAD_EX_2'
ReactorNo = Get_Property(@Window : '.EDL_REACTOR2', 'TEXT')
ReactorField = RDS_LOAD_EXTRA_2_REACTOR$
Case Otherwise$
End Case
If ReactorNo NE '' then
PickPlace = Xlate('REACTOR', ReactorNo, 'PICK_PLACE', 'X')
If (Reactor_Services('GetReactorAvailChamberCount', ReactorNo) NE 0) OR (PickPlace EQ False$) then
Query = 'SELECT REACT_STATE WITH SCHED_WO CONTAINING ':WONo
ClearSelect
Set_Status(0)
RList(Query, TARGET_ACTIVELIST$, '', '' '')
SchedReactors = ''
EOF = False$
Loop
ReadNext SchedReactor else EOF = True$
Until EOF
SchedReactors<0, -1> = SchedReactor
Repeat
if Error_Services('NoError') then
WONo = RDSRec<RDS_WO$>
ReactorNo = ''
LLChosen = ''
ChangePermitted = False$
Begin Case
Locate ReactorNo in SchedReactors using @VM setting vPos then
If PickPlace EQ True$ then
LLDisabled = XLATE('REACTOR', ReactorNo, 'ACTIVE_LL_DISABLED', 'X')
IF LLDisabled NE '' then
ReactLLRec = Database_Services('ReadDataRow', 'REACT_LL', LLDisabled)
SideDisabled = ReactLLRec<REACT_LL_DISABLED$>
QualMode = ReactLLRec<REACT_LL_QUAL_MODE$>
Begin Case
Case SideDisabled EQ 'L'
LLChosen = 'R'
Case SideDisabled EQ 'R'
LLChosen = 'L'
End Case
end else
Def = ''
Def<MCAPTION$> = 'Select Load Lock'
Def<MTYPE$> = 'BLeft,Right'
Def<MTEXT$> = 'Please select a load lock.'
Def<MMODAL$> = 'A'
LLResponse = Msg(@Window, Def)
Begin Case
Case LLResponse EQ 1
LLChosen = 'L'
Case LLResponse EQ 2
LLChosen = 'R'
End Case
end
If LLChosen NE '' then
ChangePermitted = True$
Case Control EQ 'PUB_SIGN_LOAD_EX_1'
ReactorNo = Get_Property(@Window : '.EDL_REACTOR1', 'TEXT')
ReactorField = RDS_LOAD_EXTRA_1_REACTOR$
Case Control EQ 'PUB_SIGN_LOAD_EX_2'
ReactorNo = Get_Property(@Window : '.EDL_REACTOR2', 'TEXT')
ReactorField = RDS_LOAD_EXTRA_2_REACTOR$
Case Otherwise$
End Case
If ReactorNo NE '' then
PickPlace = Xlate('REACTOR', ReactorNo, 'PICK_PLACE', 'X')
If (Reactor_Services('GetReactorAvailChamberCount', ReactorNo) NE 0) OR (PickPlace EQ False$) then
Query = 'SELECT REACT_STATE WITH SCHED_WO CONTAINING ':WONo
GoSub ClearCursors
Set_Status(0)
RList(Query, TARGET_ACTIVELIST$, '', '' '')
SchedReactors = ''
EOF = False$
Loop
ReadNext SchedReactor else EOF = True$
Until EOF
SchedReactors<0, -1> = SchedReactor
Repeat
Locate ReactorNo in SchedReactors using @VM setting vPos then
If PickPlace EQ True$ then
LLDisabled = XLATE('REACTOR', ReactorNo, 'ACTIVE_LL_DISABLED', 'X')
IF LLDisabled NE '' then
ReactLLRec = Database_Services('ReadDataRow', 'REACT_LL', LLDisabled)
SideDisabled = ReactLLRec<REACT_LL_DISABLED$>
QualMode = ReactLLRec<REACT_LL_QUAL_MODE$>
Begin Case
Case SideDisabled EQ 'L'
LLChosen = 'R'
Case SideDisabled EQ 'R'
LLChosen = 'L'
End Case
end else
Def = ''
Def<MCAPTION$> = 'Select Load Lock'
Def<MTYPE$> = 'BLeft,Right'
Def<MTEXT$> = 'Please select a load lock.'
Def<MMODAL$> = 'A'
LLResponse = Msg(@Window, Def)
Begin Case
Case LLResponse EQ 1
LLChosen = 'L'
Case LLResponse EQ 2
LLChosen = 'R'
End Case
end
If LLChosen NE '' then
ChangePermitted = True$
end else
Error_Services('Add', 'You must select a load lock for this lot.')
end
end else
Error_Services('Add', 'You must select a load lock for this lot.')
ChangePermitted = True$
end
end else
ChangePermitted = True$
Swap @VM with ',' in SchedReactors
Error_Services('Add', 'Assigned reactor, ':ReactorNo:', does not equal any scheduled reactor(s), ':SchedReactors:'.')
end
end else
Swap @VM with ',' in SchedReactors
Error_Services('Add', 'Assigned reactor, ':ReactorNo:', does not equal any scheduled reactor(s), ':SchedReactors:'.')
Error_Services('Add', ReactorNo: 'does not have the capacity necessary for this lot.')
end
end else
Error_Services('Add', ReactorNo: 'does not have the capacity necessary for this lot.')
Error_Services('Add', 'Invalid Reactor number.')
end
If ChangePermitted then
RDSRec<RDS_REACTOR$> = ReactorNo
RDSRec<ReactorField> = ReactorNo
RDSRec<RDS_LOAD_LOCK_SIDE$> = LLChosen
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
If Error_Services('NoError') then
Msg(@Window, 'Reactor successfully changed!')
end else
Msg(@Window, 'Error changing reactor!')
end
end
end else
Error_Services('Add', 'Invalid Reactor number.')
end
If ChangePermitted then
RDSRec<RDS_REACTOR$> = ReactorNo
RDSRec<ReactorField> = ReactorNo
RDSRec<RDS_LOAD_LOCK_SIDE$> = LLChosen
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, False$)
If Error_Services('NoError') then
Msg(@Window, 'Reactor successfully changed!')
end
Msg(@Window, 'Error reading RDS from database!')
end
return
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ClearCursors:
For counter = 0 to 8
ClearSelect counter
Next counter
return