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

405 lines
9.6 KiB
Plaintext

COMPILE ROUTINE FIX_REACT_ITEM(Dummy)
ROWDEF(CHARSTR)
DECLARE SUBROUTINE Send_Dyn,Send_Info,RList, Btree.Extract
DECLARE FUNCTION Get_Status, Set_Printer, NextKey, obj_React_Item_Hist, obj_Reactor_Log, obj_React_Item
$INSERT REACT_ITEM_EQUATES
$INSERT REACT_ITEM_HIST_EQUATES
$INSERT REACT_ITEMS_EQU
$INSERT RLIST_EQUATES
$INSERT REACTOR_LOG_EQUATES
EQU REACT_SERVS_REACT_ITEM_TYPE$ TO 9
EQU TAB$ TO \09\
OPEN 'TUBE' TO TubeTable ELSE
DEBUG
GOTO Bail
END
OPEN 'REACT_ITEM' TO ReactItemTable ELSE
DEBUG
GOTO Bail
END
OPEN 'REACT_ITEM_HIST' TO ReactItemHistTable ELSE
DEBUG
GOTO Bail
END
OPEN 'REACT_GRAPHITE' TO ReactGraphiteTable ELSE
DEBUG
GOTO Bail
END
OPEN 'REACTOR_LOG' TO ReactLogTable ELSE
DEBUG
GOTO Bail
END
OPEN 'DICT.REACT_ITEM' TO DictReactItem ELSE
DEBUG
GOTO Bail
END
SELECT ReactItemTable
Done = 0
LOOP
READNEXT RINo ELSE Done = 1
UNTIL Done
READ ReactItemRec FROM ReactItemTable,RINo THEN
IF ReactItemRec<REACT_ITEM_RI_TYPE$> = 'T' THEN
SerialNo = ReactItemRec<REACT_ITEM_SERIAL_NO$>
Serial = ReactItemRec<REACT_ITEM_SERIAL$>
IF SerialNo = '' AND Serial NE '' THEN
ReactItemRec<REACT_ITEM_SERIAL_NO$> = Serial
*WRITE ReactItemRec ON ReactITemTable,RINo THEN
Send_Dyn(RINo:' ':ReactItemRec<REACT_ITEM_SERIAL$>:' -> ':ReactItemRec<REACT_ITEM_SERIAL_NO$>)
*END
END
END ;* End of check for Tube records
END ;* End of item read
REPEAT
GOTO Bail
* * * * * * * * * * * * * * *
RITypes = 'A':@FM:'G':@FM:'R':@FM:'RU':@FM:'RL':@FM:'S':@FM:'T':@FM:'W'
DEBUG
FOR I = 1 TO 8
RIType = RITypes<I>
FOR ReactNo = 20 TO 79
HistKeys = obj_React_Item_Hist('GetHistory',ReactNo:@RM:@RM:RIType)
HistCnt = COUNT(HistKeys,@VM) + (HistKeys NE '')
IF HistCnt > 1 THEN
OPEN 'REACT_ITEM_HIST' TO ReactItemHistTable ELSE
ErrorMsg = 'Unable to OPEN "REACT_ITEM_HIST" for updates.'
RETURN
END
FOR N = 2 TO HistCnt
HistKey = HistKeys<1,N>
PrevHistKey = HistKeys<1,N-1>
READ HistRec FROM ReactItemHistTable,HistKey THEN
READ PrevHistRec FROM ReactItemHistTable,PrevHistKey THEN
*IF HistRec<REACT_ITEM_HIST_REM_DTM$> = '' THEN
HistRec<REACT_ITEM_HIST_REM_DTM$> = FIELD(PrevHistKey,'*',3)
HistRec<REACT_ITEM_HIST_REM_RL_ID$> = PrevHistRec<REACT_ITEM_HIST_INST_RL_ID$>
HistRec<REACT_ITEM_HIST_REM_REACT_WFR_CNT$> = PrevHistRec<REACT_ITEM_HIST_INST_REACT_WFR_CNT$>
HistRec<REACT_ITEM_HIST_REM_REACT_HRS$> = PrevHistRec<REACT_ITEM_HIST_INST_REACT_HRS$>
HistRec<REACT_ITEM_HIST_REM_REASON$> = ''
*WRITE HistRec ON ReactItemHistTable,HistKey THEN
NULL
*Send_Dyn('Closed: ':HistKey:' ':HistRec)
*END
*END
END ;* End of Closing History Record
END ;* End of History Record Read
NEXT N ;* End of loop through History keys
END ;* End of check for HistCnt > 1
NEXT ReactNo
NEXT I
GOTO Bail
******* This data from the ReactorLog table *****
SELECT ReactLogTable
Done = 0
RecCnt = 0
FixCnt = 0
SerialNos = ''
RINos = ''
NextRINo = 22090
CutOffDt = ICONV('12/31/2008','D')
DummyKey = 100
LOOP
READNEXT ReactLogNo ELSE Done = 1
UNTIL Done
RecCnt += 1
READ ReactLogRec FROM ReactLogTable,ReactLogNo THEN
IF ReactLogRec<REACTOR_LOG_ENTRY_DATE$> > CutOffDt THEN
ReactNo = ReactLogRec<REACTOR_LOG_REACTOR$>
EndDt = OCONV(ReactLogRec<REACTOR_LOG_END_DATE$>,'D4/')
EndTm = OCONV(ReactLogRec<REACTOR_LOG_END_TIME$>,'MTS')
InstDtm = ICONV(EndDt:' ':EndTm,'DT')
ReactItemIDs = ReactLogRec<REACTOR_LOG_REACT_ITEM_IDS$>
testReactItemIDs = ReactItemIDs
CONVERT @VM TO '' IN testReactItemIDs
IF testReactItemIDs NE '' THEN
siCnt = COUNT(ReactItemIDs,@VM) + (ReactItemIDs NE '')
FOR I = 1 TO siCnt
IF ReactItemIDs<1,I> NE '' THEN
OrgSerialNo = ReactItemIDs<1,I>
SerialNo = OrgSerialNo
IF SerialNo[1,1] = '#' THEN
SWAP '#' WITH 'No.' IN SerialNo
END
SearchString = 'SERIAL':@VM:SerialNo:@FM
Option = ''
Flag = ''
Btree.Extract(SearchString,'REACT_ITEM',DictReactItem,RINo,Option,Flag)
IF INDEX(RINo,@VM,1) THEN
*DEBUG
Send_Dyn(SerialNo -> RINo)
END
IF RINo = '' THEN
/*
ReactItemsRec = XLATE('REACT_ITEMS',OrgSerialNo,'','X')
IF ReactItemsRec = '' THEN
Send_Dyn('RLNo: ':ReactLogNo:' Bad Serial No: ':SerialNo) ;* Junk data in REACTOR_LOG field
END ELSE
Send_Dyn('Serial: ':SerialNo:' -> ':ReactItemsRec)
LOCATE SerialNo IN SerialNos BY 'AR' USING @VM SETTING SPos THEN
* Add History
RINo = RINos<1,SPos>
Send_Dyn(SerialNo:' <-> ':RINo)
END ELSE
SerialNos = INSERT(SerialNos,1,SPos,0,SerialNo)
*RINo = NextRINo ;********************************************************
*NextRINo += 1 ;********************************************************
RINo = NextKey('REACT_ITEM')
RINos = INSERT(RINos,1,SPos,0,RINo)
ItemType = ReactItemsRec<REACT_ITEMS_GRAPHITE_OR_TUBE$>
ReactItemRec = ''
ReactItemRec<REACT_ITEM_SERIAL$> = SerialNo
ReactItemRec<REACT_ITEM_DESC$> = ReactItemsRec<REACT_ITEMS_DESCRIPTION$>
ReactItemRec<REACT_ITEM_ENTER_BY$> = ReactItemsRec<REACT_ITEMS_ENTRY_ID$>
ReactItemRec<REACT_ITEM_ENTER_DTM$> = ICONV(OCONV(ReactItemsRec<REACT_ITEMS_ENTRY_DATE$>,'D4/'):' 00:12:00','DT')
ReactItemRec<REACT_ITEM_RI_TYPE$> = ReactItemsRec<REACT_ITEMS_GRAPHITE_OR_TUBE$>
RetireDt = ReactItemsRec<REACT_ITEMS_INACTIVE_DATE$>
IF RetireDt NE '' THEN
ReactItemRec<REACT_ITEM_RETIRE_BY$> = 'BRYCE_BARB'
END
ReactItemRec<REACT_ITEM_RETIRE_DT$> = RetireDt
WRITE ReactItemRec ON ReactItemTable,RINo THEN
Send_Dyn('Serial: ':SerialNo:' -> ':RINo:' / ':ReactItemRec)
END
END ;* End of check for existing Serial No
END
*/
END ELSE
RIHKey = ReactNo:'*':RINo:'*':InstDTM
READ ReactItemHistRec FROM ReactItemHistTable,RIHKey ELSE
ReactHistRec = ''
ReactHistRec<REACT_ITEM_HIST_INST_RL_ID$> = ReactLogNo
ReactHistRec<REACT_ITEM_HIST_INST_REACT_WFR_CNT$> = ReactLogRec<REACTOR_LOG_REACT_WAFER_CNT$>
ReactHistRec<REACT_ITEM_HIST_INST_REACT_HRS$> = ReactLogRec<REACTOR_LOG_REACTORHOURS$>
FixCnt += 1
WRITE ReactHistRec ON ReactItemHistTable,RIHKey THEN
Send_Dyn(FixCnt:' ':RIHKey)
END
END
END
END
NEXT I
END
END ;* End of check for EntryDate
END ;* End of ReactLogRec Read
Send_Info(RecCnt:" - ":FixCnt)
REPEAT
GOTO Bail
GOTO Bail
* * * *
******************************************************
FOR ReactNo = 20 TO 74
RIType = 'W'
HistKeys = obj_React_Item_Hist('GetHistory',ReactNo:@RM:@RM:RIType)
HistCnt = COUNT(HistKeys,@VM) + (HistKeys NE '')
IF HistCnt > 1 THEN
FOR N = 2 TO HistCnt
HistKey = HistKeys<1,N>
PrevHistKey = HistKeys<1,N-1>
READ HistRec FROM ReactItemHistTable,HistKey THEN
READ PrevHistRec FROM ReactItemHistTable,PrevHistKey THEN
HistRec<REACT_ITEM_HIST_REM_DTM$> = FIELD(PrevHistKey,'*',3)
HistRec<REACT_ITEM_HIST_REM_RL_ID$> = PrevHistRec<REACT_ITEM_HIST_INST_RL_ID$>
HistRec<REACT_ITEM_HIST_REM_REACT_WFR_CNT$> = PrevHistRec<REACT_ITEM_HIST_INST_REACT_WFR_CNT$>
HistRec<REACT_ITEM_HIST_REM_REACT_HRS$> = PrevHistRec<REACT_ITEM_HIST_INST_REACT_HRS$>
HistRec<REACT_ITEM_HIST_REM_REASON$> = ''
*WRITE HistRec ON ReactItemHistTable,HistKey THEN
Send_Dyn(ReactNo:' Closed: ':HistKey:' ':HistRec)
*END
END ;* End of Closing History Record
END ;* End of History Record Read
NEXT N ;* End of loop through History keys
END ;* End of check for HistCnt > 1
NEXT ReactNo
GOTO Bail
GOTO Bail
************************************
SELECT ReactGraphiteTable
Done = 0
RecCnt = 0
LOOP
READNEXT RGKey ELSE Done = 1
UNTIL Done
READ RGRec FROM ReactGraphiteTable,RGKey THEN
ReactNo = RGKey[1,'*']
GRType = RGKey[COL2()+1,'*'] ;* Not used in REACT_HIST_EQUATES
InstDTM = RGKey[COL2()+1,'*']
RINo = RGRec<REACT_GRAPHITE_GR_NO$>
RIHKey = ReactNo:'*':RINo:'*':InstDTM
RIHRec = ''
RIHRec<REACT_ITEM_HIST_INST_RL_ID$> = RGRec<REACT_GRAPHITE_INST_RL_ID$>
RIHRec<REACT_ITEM_HIST_INST_REACT_WFR_CNT$> = RGRec<REACT_GRAPHITE_INST_REACT_WFR_CNT$>
RIHRec<REACT_ITEM_HIST_INST_REACT_HRS$> = RGRec<REACT_GRAPHITE_INST_REACT_HRS$>
RIHRec<REACT_ITEM_HIST_REM_DTM$> = RGRec<REACT_GRAPHITE_REM_DTM$>
RIHRec<REACT_ITEM_HIST_REM_RL_ID$> = RGRec<REACT_GRAPHITE_REM_RL_ID$>
RIHRec<REACT_ITEM_HIST_REM_REACT_WFR_CNT$> = RGRec<REACT_GRAPHITE_REM_REACT_WFR_CNT$>
RIHRec<REACT_ITEM_HIST_REM_REACT_HRS$> = RGRec<REACT_GRAPHITE_REM_REACT_HRS$>
RIHRec<REACT_ITEM_HIST_REM_REASON$> = ''
*WRITE RIHRec ON ReactItemHistTable,RIHKey THEN
RecCnt += 1
Send_Info(RecCnt)
*END
END ;* End of RGRecord read
REPEAT
* * * * * * *
Bail:
* * * * * * *
END