open-insight/LSL2/STPROC/OBJ_REACTOR.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

270 lines
5.8 KiB
Plaintext

COMPILE FUNCTION obj_Reactor(Method,Parms)
/*
Methods for Reactor table
10/30/2005 JCH - Initial Coding
Properties:
Methods:
SetReadings(Reactor,ReadBy,ReadDTM,ReadHrs,ReadWfrs) ;* Set last readings values
TubeChange(Reactor,Date,ReactLogID) ;* Creates new Line item for Tube Change
CloseOpenModes(Reactor) ;* Closes extraneous open REACT_MODE records
*/
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables
$INSERT REACTOR_EQUATES
$INSERT REACT_MODE_EQUATES
$INSERT REACT_STATE_EQUATES
$INSERT REACT_ITEM_EQUATES
$INSERT MSG_EQUATES
$insert REACTOR_CHILD_KEY_IDS_EQUATES
ErrTitle = 'Error in Stored Procedure "obj_Reactor"'
ErrorMsg = ''
IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine'
IF NOT(ASSIGNED(Parms)) THEN Parms = ''
IF ErrorMsg NE '' THEN
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
RETURN ''
END
Result = ''
BEGIN CASE
CASE Method = 'CurrItem' ; GOSUB CurrItem
CASE Method = 'CurrGraphite' ; GOSUB CurrGraphite
CASE Method = 'SetLastRead' ; GOSUB SetLastRead
CASE Method = 'TubeChange' ; GOSUB TubeChange
CASE Method = 'Unload' ; GOSUB Unload
CASE Method = 'CloseOpenModes' ; GOSUB CloseOpenModes
CASE 1
ErrorMsg = 'Unknown Method ':Method:' passed to object routine.'
END CASE
IF ErrorMsg NE '' THEN
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
END
RETURN Result
* * * * * * *
CurrItem:
* * * * * * *
ReactNo = Parms[1,@RM]
ItemType = Parms[COL2()+1,@RM]
ReactRec = Parms[COL2()+1,@RM]
IF ReactNo = '' THEN RETURN
IF ItemType = '' THEN RETURN
IF ReactRec = '' THEN
ReactRec = XLATE('REACTOR',ReactNo,'','X')
IF ReactRec = '' THEN
RETURN
END
END
CurrInstItems = ReactRec<REACTOR_CURR_INST_ITEMS$>
ciCnt = COUNT(CurrInstItems,@VM) + (CurrInstItems NE '')
RIKeys = ''
FOR I = 1 TO ciCnt
RIKeys<1,I> = FIELD(CurrInstItems<1,I>,'*',2)
NEXT I
CurrInstTypes = XLATE('REACT_ITEM',RIKeys,REACT_ITEM_RI_TYPE$,'X')
LOCATE ItemType IN CurrInstTypes USING @VM SETTING Pos THEN
Result = FIELD(CurrInstItems<1,Pos>,'*',2)
END
RETURN
* * * * * * *
CurrGraphite:
* * * * * * *
ReactNo = Parms[1,@RM]
ReactRec = Parms[COL2()+1,@RM]
IF ReactNo = '' THEN RETURN
IF ReactRec = '' THEN
ReactRec = XLATE('REACTOR',ReactNo,'','X')
IF ReactRec = '' THEN
RETURN
END
END
CurrInstItems = ReactRec<REACTOR_CURR_INST_ITEMS$> ;* These are React_Item_Hist keys
ciCnt = COUNT(CurrInstItems,@VM) + (CurrInstItems NE '')
RIKeys = ''
FOR I = 1 TO ciCnt
RIKeys<1,I> = FIELD(CurrInstItems<1,I>,'*',2)
NEXT I
CurrInstTypes = XLATE('REACT_ITEM',RIKeys,REACT_ITEM_RI_TYPE$,'X')
ciCnt = COUNT(RIKeys,@VM) + (RIKeys NE '')
FOR I = 1 TO ciCnt
CurrInstType = CurrInstTypes<1,I>
IF CurrInstType = 'S' OR CurrInstType[1,1] = 'R' THEN
Result<1,-1> = RIKeys<1,I>
END
NEXT I
RETURN
* * * * * * *
SetLastRead:
* * * * * * *
* This is probably not used anymore JCH 12/11/2013 needs to be checked then chucked
ReactorNo = Parms[1,@RM]
ReadTypes = Parms[COL2()+1,@RM]
ReadDTMs = Parms[COL2()+1,@RM]
IF ReactorNo = '' THEN ErrorMsg = 'Null parameter "ReactorNo" passed to routine. (':Method:')'
IF ReadTypes = '' THEN ErrorMsg = 'Null parameter "ReadType" passed to routine. (':Method:')'
IF ReadDTMs = '' THEN ErrorMsg = 'Null parameter "ReadDTM" passed to routine. (':Method:')'
IF ErrorMsg NE '' THEN RETURN
ValidReadTypes = 'HRS':@VM:'WFRS'
ReadCnt = COUNT(ReadTypes,@VM) + (ReadTypes NE '')
thisReadDTMs = ''
FOR I = 1 TO ReadCnt
ReadDTM = ReadDTMs<1,I>
ReadType = ReadTypes<1,I>
thisReadDTM = ICONV(ReadDTM,'DT')
IF thisReadDTM = '' THEN
ErrorMsg = 'Invalid ReadDTM ':QUOTE(ReadDTM):' passed to routine. (':Method:')'
RETURN
END ELSE
thisReadDTMs<1,I> = thisReadDTM
END
LOCATE ReadType IN ValidReadTypes USING @VM SETTING Pos ELSE
ErrorMsg = 'Invalid parameter "ReadType - "':QUOTE(ReadType):' passed to routine. (':Method:')'
RETURN
END
NEXT I
otParms = 'REACTOR':@RM:ReactorNo
ReactorRec = obj_Tables('ReadRec',otParms)
IF Get_Status(errCode) THEN
RETURN
END
FOR I = 1 TO ReadCnt
ReadType = ReadTypes<1,I>
IF ReadType = 'HRS' THEN ReactorRec<REACTOR_LAST_READ_HRS_DTM$> = thisReadDTMs<1,I>
IF ReadType = 'WFRS' THEN ReactorRec<REACTOR_LAST_READ_WFRS_DTM$> = thisReadDTMs<1,I>
NEXT I
otParms = FieldStore(OtParms,@RM,4,0,ReactorRec) ;* Put record in 4th field of OtParms
obj_Tables('WriteRec',otParms)
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
RETURN
* * * * * *
CloseOpenModes:
* * * * * *
ReactorNo = Parms[1,@RM]
IF ReactorNo = '' THEN RETURN
* OpenModes = XLATE('REACTOR',ReactorNo,REACTOR_CURR_MODE_KEY$,'X')
OpenModes = Xlate('REACTOR_CHILD_KEY_IDS', ReactorNo, REACTOR_CHILD_KEY_IDS_REACT_MODE_KEY_IDS$, 'X')
IF NOT(INDEX(OpenModes,@VM,1)) THEN RETURN
DEBUG
FixCnt = COUNT(OpenModes,@VM) ;* This is 1 less than the actual count!!!
OPEN 'REACT_MODE' TO ReactModeTable THEN
FOR I = 1 TO FixCnt
READ ClosingReactModeRec FROM ReactModeTable,OpenModes<1,I> THEN
READ CloseByReactModeRec FROM ReactModeTable,OpenModes<1,I+1> THEN
StopDTM = FIELD(OpenModes<1,I+1>,'*',2)
StopUser = CloseByReactModeRec<REACT_MODE_START_USER$>
ClosingReactModeRec<REACT_MODE_STOP_DTM$> = StopDTM
ClosingReactModeRec<REACT_MODE_STOP_USER$> = StopUser
WRITE ClosingReactModeRec ON ReactModeTable,OpenModes<1,I> THEN
Send_Dyn('Closing ':OpenModes<1,I>:' with ':OpenModes<1,I+1>)
END
END ;* End of CloseBy Record Record
END ;* End of Closing Record Read
NEXT I
END
RETURN
* * * * * * *
TubeChange:
* * * * * * *
RETURN
* * * * * * *
Unload:
* * * * * * *
RETURN