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

383 lines
9.3 KiB
Plaintext

COMPILE FUNCTION obj_React_Event(Method,Parms)
/*
Methods for REACT_EVENT table
01/10/2007 JCH - Initial Coding
Properties:
Methods:
Find() ;* Lookup Reactor Event key
*/
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, Btree.Extract, ErrMsg
DECLARE SUBROUTINE obj_Notes, Send_Info
$INSERT MSG_EQUATES
$INSERT REACT_EVENT_EQUATES
$INSERT REACT_MODE_EQUATES
$INSERT REACT_ESC_EQUATES
$INSERT REACTOR_LOG_EQUATES
$INSERT REACTOR_EQUATES
$INSERT REACT_READS_EQUATES
EQU CRLF$ TO \0D0A\
EQU TAB$ TO CHAR(9):CHAR(9)
ErrTitle = 'Error in Stored Procedure "obj_React_Event"'
ErrorMsg = ''
ErrCode = ''
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 = 'Find' ; GOSUB Find
CASE Method = 'Create' ; GOSUB Create
CASE Method = 'SetStopDTM' ; GOSUB SetStopDTM
CASE Method = 'EventTypeNote' ; GOSUB EventTypeNote
CASE 1
ErrorMsg = 'Unknown Method ':QUOTE(Method):' passed to routine.'
END CASE
IF ErrorMsg NE '' THEN
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
RETURN ''
END
RETURN Result
* * * * * * *
Find:
* * * * * * *
ReactEventKeys = Dialog_Box( 'DIALOG_REACT_EVENT_QUERY', @WINDOW, '' )
Result = ReactEventKeys
RETURN
* * * * * * *
Create:
* * * * * * *
ReactNo = Parms[1,@RM]
EventDTM = Parms[COL2()+1,@RM]
EventType = Parms[COL2()+1,@RM]
LoggedBy = Parms[COL2()+1,@RM]
Comment = Parms[COL2()+1,@RM]
NewMode = Parms[COL2()+1,@RM]
EventMode = Parms[COL2()+1,@RM]
IF ReactNo = '' THEN ErrorMsg = 'Null parameter "ReactNo" passed to routine. (':Method:')'
IF EventDTM = '' THEN ErrorMsg = 'Null parameter "EventDTM" passed to routine. (':Method:')'
IF EventType = '' THEN ErrorMsg = 'Null parameter "EventType" passed to routine. (':Method:')'
IF LoggedBy = '' THEN LoggedBy = @USER4
thisEventDTM = ICONV(EventDTM,'DT')
IF thisEventDTM = '' THEN
ErrorMsg = 'Ivalid Data ':QUOTE(EventDTM):' passed in "EventDTM" parameter. (':Method:')'
END
IF ErrorMsg NE '' THEN RETURN
ReactEventKey = ReactNo:'*':thisEventDTM
ReactEventRec = XLATE('REACT_EVENT',ReactEventKey,'','X')
EscHrs = XLATE('REACTOR',ReactNo,'ACT_ESC_HRS','X')
WONo = XLATE('CONFIG','WO_DAILY_SCHED':ReactNo,2,'X')
LastRdDTM = XLATE('REACTOR',ReactNo,REACTOR_LAST_READ_WFRS_DTM$,'X')
LastWfrRead = XLATE('REACT_READS',ReactNo:'*':LastRdDTM,REACT_READS_WAFER_CNT$,'X')
WONo = WONo[1,' ']
IF NewMode NE '' THEN
ReactMode = NewMode ;* Mode Change
END ELSE
ReactMode = EventMode ;* Current Mode
END
ReactEventRec<REACT_EVENT_LOGGED_BY$> = LoggedBy
ReactEventRec<REACT_EVENT_EVENT_CD$> = EventType
ReactEventRec<REACT_EVENT_REACT_MODE$> = ReactMode
ReactEventRec<REACT_EVENT_WO_NO$> = WONo
ReactEventRec<REACT_EVENT_REACT_ESC_HRS$> = EscHrs
ReactEventRec<REACT_EVENT_COMMENT$> = Comment
ReactEventRec<REACT_EVENT_AUTO_LOG$> = 1
ReactEventRec<REACT_EVENT_LAST_READ_WFRS_DTM$> = LastRdDTM
ReactEventRec<REACT_EVENT_LAST_READ_WFRS_VAL$> = LastWfrRead
OtParms = 'REACT_EVENT':@RM:ReactEventKey:@RM:@RM:ReactEventRec
obj_Tables('WriteRec',OtParms)
RETURN
* * * * * * *
SetStopDTM:
* * * * * * *
ReactNo = Parms[1,@RM]
EventDTM = Parms[COL2()+1,@RM]
StopDTM = Parms[COL2()+1,@RM]
IF ReactNo = '' THEN ErrorMsg = 'Null parameter "ReactNo" passed to routine. (':Method:')'
IF EventDTM = '' THEN ErrorMsg = 'Null parameter "EventDTM" passed to routine. (':Method:')'
IF StopDTM = '' THEN ErrorMsg = 'Null parameter "StopDTM" passed to routine. (':Method:')'
thisEventDTM = ICONV(EventDTM,'DT')
IF thisEventDTM = '' THEN
ErrorMsg = 'Ivalid Data ':QUOTE(EventDTM):' passed in "EventDTM" parameter. (':Method:')'
END
thisStopDTM = ICONV(StopDTM,'DT')
IF thisStopDTM = '' THEN
ErrorMsg = 'Ivalid Data ':QUOTE(StopDTM):' passed in "StopDTM" parameter. (':Method:')'
END
IF ErrorMsg NE '' THEN RETURN
ReactEventKey = ReactNo:'*':thisEventDTM
OtParms = 'REACT_EVENT':@RM:ReactEventKey
ReactEventRec = obj_Tables('ReadRec',OtParms) ;* Locks and reads record for update
IF Get_Status(errCode) THEN DEBUG
ReactEventRec<REACT_EVENT_STOP_DTM$> = thisStopDTM
*OtParms = FieldStore(OtParms,@RM,4,0,ReactEventRec) ;* Put record in 4th field of OtParms
*obj_Tables('WriteRec',OtParms)
RETURN
* * * * * * *
EventTypeNote:
* * * * * * *
ReactEventKey = Parms[1,@RM]
ReactEventRec = Parms[COL2()+1,@RM]
IF ReactEventKey = '' THEN RETURN
IF ReactEventRec = '' THEN
ReactEventRec = XLATE('REACT_EVENT',ReactEventKey,'','X')
END
IF ReactEventRec = '' THEN RETURN
Types = ''
TypeUsers = ''
TypeNotes = ''
IF ReactEventRec<REACT_EVENT_EVENT_CD$> NE '' THEN
Types = ReactEventRec<REACT_EVENT_EVENT_CD$>
TypeUsers = OCONV(ReactEventRec<REACT_EVENT_LOGGED_BY$>,'[XLATE_CONV,LSL_USERS*FIRST_LAST]')
TypeNotes = ReactEventRec<REACT_EVENT_COMMENT$>
SWAP CRLF$ WITH @TM IN TypeNotes
Result = Types:@FM:TypeNotes:@FM:TypeUsers
RETURN
END
IF ReactEventRec<REACT_EVENT_REACT_MODE_KEY$> NE '' THEN
ModeKey = ReactEventRec<REACT_EVENT_REACT_MODE_KEY$>
ModeRec = XLATE('REACT_MODE',ModeKey,'','X')
Mode = OCONV(ModeRec<REACT_MODE_MODE$ >,'[REACT_MODE_CONV]')
StartNote = ModeRec<REACT_MODE_START_NOTE$>
StartUser = ModeRec<REACT_MODE_START_USER$>
StartUser = OCONV(StartUser,'[XLATE_CONV,LSL_USERS*FIRST_LAST]')
Note = 'Mode: ':Mode:@TM:OCONV(ModeRec<REACT_MODE_START_NOTE$>,'T#100')
IF Types = '' THEN
Types = 'MODE'
TypeUsers = StartUser
TypeNotes = Note
END ELSE
Types = 'COMB'
TypeUsers = StartUser
TypeNotes := @TM:STR('- ',20):@TM:Note
END
END
IF ReactEventRec<REACT_EVENT_REACT_LOG_KEY$> NE '' THEN
LogKey = ReactEventRec<REACT_EVENT_REACT_LOG_KEY$>
LogUser = XLATE('REACTOR_LOG',LogKey,REACTOR_LOG_ENTRY_ID$,'X')
LogUser = OCONV(LogUser,'[XLATE_CONV,LSL_USERS*FIRST_LAST]')
Note = XLATE('REACTOR_LOG',LogKey,REACTOR_LOG_NOTES$,'X')
* Data coming in with CRLF$ delimiters, T# formatting doesn't deal well with this.
* Divide into Items and text format them individually and reassemble it
SWAP CRLF$ WITH @VM IN Note
FormattedNote = ''
ItemCnt = COUNT(Note,@VM) + (Note NE '')
FOR N = 1 TO ItemCnt
Item = Note<1,N>
FormattedNote<1,N> = OCONV(Item,'T#100')
NEXT N
CONVERT @VM TO @TM IN FormattedNote
Note = FormattedNote
IF Types = '' THEN
Types = 'MTC'
TypeUsers = LogUser
TypeNotes = Note
END ELSE
Types = 'COMB'
TypeUsers = LogUser
TypeNotes := @TM:STR('- ',20):@TM:Note
END
END
IF ReactEventRec<REACT_EVENT_REACT_LOG_PD_KEY$> NE '' THEN
LogKey = ReactEventRec<REACT_EVENT_REACT_LOG_PD_KEY$>
LogUser = XLATE('REACTOR_LOG',LogKey,REACTOR_LOG_ENTRY_ID$,'X')
LogUser = OCONV(LogUser,'[XLATE_CONV,LSL_USERS*FIRST_LAST]')
Note = XLATE('REACTOR_LOG',LogKey,REACTOR_LOG_NOTES$,'X')
* Data coming in with CRLF$ delimiters, T# formatting doesn't deal well with this.
* Divide into Items and text format them individually and reassemble it
SWAP CRLF$ WITH @VM IN Note
FormattedNote = ''
ItemCnt = COUNT(Note,@VM) + (Note NE '')
FOR N = 1 TO ItemCnt
Item = Note<1,N>
FormattedNote<1,N> = OCONV(Item,'T#100')
NEXT N
CONVERT @VM TO @TM IN FormattedNote
Note = FormattedNote
IF Types = '' THEN
Types = 'PD'
TypeUsers = LogUser
TypeNotes = Note
END ELSE
Types = 'COMB'
TypeUsers = LogUser
TypeNotes := @TM:STR('- ',20):@TM:Note
END
END
IF ReactEventRec<REACT_EVENT_REACT_ESC_START_KEY$> NE '' THEN
EscKey = ReactEventRec<REACT_EVENT_REACT_ESC_START_KEY$>
EscUser = XLATE('REACT_ESC',EscKey,REACT_ESC_START_USER$,'X')
EscUser = OCONV(EscUser,'[XLATE_CONV,LSL_USERS*FIRST_LAST]')
Note = XLATE('REACT_ESC',EscKey,REACT_ESC_START_REASON$,'X')
SWAP CRLF$ WITH @VM IN Note
FormattedNote = ''
ItemCnt = COUNT(Note,@VM) + (Note NE '')
FOR N = 1 TO ItemCnt
Item = Note<1,N>
FormattedNote<1,N> = OCONV(Item,'T#100')
NEXT N
CONVERT @VM TO @TM IN FormattedNote
Note = FormattedNote
IF Types = '' THEN
Types = 'ESTR'
TypeUsers = EscUser
TypeNotes = Note
END ELSE
Types = 'COMB'
TypeUsers = EscUser
TypeNotes := @TM:STR('- ',20):@TM:Note
END
END
IF ReactEventRec<REACT_EVENT_REACT_ESC_STOP_KEY$> NE '' THEN
EscKey = ReactEventRec<REACT_EVENT_REACT_ESC_STOP_KEY$>
EscUser = XLATE('REACT_ESC',EscKey,REACT_ESC_STOP_USER$,'X')
EscUser = OCONV(EscUser,'[XLATE_CONV,LSL_USERS*FIRST_LAST]')
Note = XLATE('REACT_ESC',EscKey,REACT_ESC_STOP_REASON$,'X')
SWAP CRLF$ WITH @VM IN Note
FormattedNote = ''
ItemCnt = COUNT(Note,@VM) + (Note NE '')
FOR N = 1 TO ItemCnt
Item = Note<1,N>
FormattedNote<1,N> = OCONV(Item,'T#100')
NEXT N
CONVERT @VM TO @TM IN FormattedNote
Note = FormattedNote
IF Types = '' THEN
Types = 'ESTP'
TypeUsers = EscUser
TypeNotes = Note
END ELSE
Types = 'COMB'
TypeUsers = EscUser
TypeNotes := @TM:STR('- ',20):@TM:Note
END
END
Result = Types:@FM:TypeNotes:@FM:TypeUsers
RETURN