added LSL2 stored procedures
This commit is contained in:
327
LSL2/STPROC/OBJ_WO_REACT.txt
Normal file
327
LSL2/STPROC/OBJ_WO_REACT.txt
Normal file
@ -0,0 +1,327 @@
|
||||
COMPILE FUNCTION obj_WO_React(Method,Parms)
|
||||
/*
|
||||
Methods for the WO_React table
|
||||
|
||||
03/31/2015 JCH - Initial Coding
|
||||
|
||||
Properties:
|
||||
|
||||
Methods:
|
||||
|
||||
AddRDSNo
|
||||
RemRDSNo
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, NextKey, obj_Prod_Spec, obj_WO_Mat_QA
|
||||
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, RList, ErrMsg, Btree.Extract, obj_WO_Mat_QA
|
||||
|
||||
$INSERT MSG_EQUATES
|
||||
$INSERT WO_REACT_EQUATES
|
||||
$INSERT PRS_STAGE_EQUATES
|
||||
$INSERT WO_MAT_EQUATES
|
||||
$INSERT RDS_EQUATES
|
||||
$INSERT QA_MET_EQUATES ;* Used in GetQAMet data structure return variable
|
||||
|
||||
|
||||
ErrTitle = 'Error in Stored Procedure "obj_PRS_Prop"'
|
||||
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 = ''
|
||||
Log = ''
|
||||
|
||||
BEGIN CASE
|
||||
CASE Method = 'AddRdsNo' ; GOSUB AddRdsNo
|
||||
CASE Method = 'RemRdsNo' ; GOSUB RemRdsNo
|
||||
|
||||
CASE 1
|
||||
ErrorMsg = 'Unknown Method ':QUOTE(Method):' passed to object.'
|
||||
|
||||
END CASE
|
||||
|
||||
IF ErrorMsg NE '' THEN
|
||||
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
||||
RETURN ''
|
||||
END
|
||||
|
||||
RETURN Result
|
||||
|
||||
|
||||
* * * * * * *
|
||||
AddRdsNo:
|
||||
* * * * * * *
|
||||
|
||||
WONo = Parms[1,@RM]
|
||||
StepNo = Parms[COL2()+1,@RM]
|
||||
ReactNo = Parms[COL2()+1,@RM]
|
||||
RdsNo = Parms[COL2()+1,@RM]
|
||||
CassNo = Parms[COL2()+1,@RM]
|
||||
|
||||
IF WONo = '' THEN RETURN
|
||||
IF StepNo = '' THEN RETURN
|
||||
IF ReactNo = '' THEN RETURN
|
||||
IF RdsNo = '' THEN RETURN
|
||||
IF CassNo = '' THEN RETURN
|
||||
|
||||
WOReactKey = WONo:'*':StepNo:'*':ReactNo
|
||||
|
||||
otParms = 'WO_REACT':@RM:WOReactKey
|
||||
|
||||
WOReactRec = obj_Tables('ReadOnlyRec',otParms)
|
||||
|
||||
RDSNos = WOReactRec<WO_REACT_RDS_NO$>
|
||||
CassNos = WOReactRec<WO_REACT_CASS_NO$>
|
||||
|
||||
PSNos = XLATE('WO_LOG',WoNo,'PROD_VER_STEP_PSN','X')
|
||||
PSNo = PSNos<1,StepNo>
|
||||
|
||||
QAMetData = obj_Prod_Spec('GetQAMet',PSNo:@RM:@RM:1) ;* * * Get Reactor Scheduled QA Metrology * * *
|
||||
|
||||
IF QAMetData = '' THEN RETURN ;* No reactor scheduled QA_MET specified
|
||||
|
||||
Start = QAMetData<COL$QA_MET_START>
|
||||
Interval = QAMetData<COL$QA_MET_INTERVAL>
|
||||
Stage = QAMetData<COL$QA_MET_STAGE>
|
||||
MetPropCd = QAMetData<COL$QA_MET_PROP>
|
||||
|
||||
GOSUB BuildAllTestPos ;* Set RDSNos, Start and Interval -> returns AllTestPos
|
||||
|
||||
|
||||
* * * Find where the the RDS being added will be in the list. * * *
|
||||
|
||||
LOCATE RDSNo IN WOReactRec<WO_REACT_RDS_NO$> BY 'AR' USING @VM SETTING InsPos THEN
|
||||
|
||||
otParms = 'WO_REACT':@RM:WOReactKey
|
||||
WOReactRec = obj_Tables('UnlockRec',otParms)
|
||||
|
||||
RETURN ;* RDSNo already in this list -> nothing to do.
|
||||
|
||||
END ELSE
|
||||
|
||||
LOCATE InsPos IN AllTestPos BY 'AR' USING @VM SETTING TrimPos ELSE Null
|
||||
|
||||
ChangePosList = FIELD(AllTestPos,@VM,TrimPos,SeqCnt)
|
||||
|
||||
GOSUB RemSchedQA ;* Removes unsigned QAMet from cassettes scheduled past the box being removed
|
||||
|
||||
END
|
||||
|
||||
WOReactRec = INSERT(WOReactRec,WO_REACT_RDS_NO$,InsPos,0,RDSNo)
|
||||
WOReactRec = INSERT(WOReactRec,WO_REACT_CASS_NO$,InsPos,0,CassNo) ;* Inserts the passed in RDSNo & associated cassette number from the data fields
|
||||
|
||||
RDSNos = WOReactRec<WO_REACT_RDS_NO$> ;* List after insert
|
||||
CassNos = WOReactRec<WO_REACT_CASS_NO$> ;* List after insert
|
||||
|
||||
* * * Now build list for cassette
|
||||
|
||||
GOSUB BuildAllTestPos
|
||||
|
||||
ChangePosList = FIELD(AllTestPos,@VM,TrimPos,SeqCnt)
|
||||
|
||||
GOSUB AddSchedQA ;* Add QAMet spec data to cassettes now associated with the test positions after removing the RDS & Cassno from the lists
|
||||
|
||||
otParms = FIELDSTORE(otParms,@RM,4,0,WOReactRec)
|
||||
obj_Tables('WriteOnlyRec',otParms) ;* Done with updates to the WO_REACT record
|
||||
|
||||
Result = Log
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
RemRDSNo:
|
||||
* * * * * * *
|
||||
|
||||
WONo = Parms[1,@RM]
|
||||
StepNo = Parms[COL2()+1,@RM]
|
||||
ReactNo = Parms[COL2()+1,@RM]
|
||||
RdsNo = Parms[COL2()+1,@RM]
|
||||
CassNo = Parms[COL2()+1,@RM]
|
||||
|
||||
IF WONo = '' THEN RETURN
|
||||
IF StepNo = '' THEN RETURN
|
||||
IF ReactNo = '' THEN RETURN
|
||||
IF RdsNo = '' THEN RETURN
|
||||
IF CassNo = '' THEN RETURN
|
||||
|
||||
WOReactKey = WONo:'*':StepNo:'*':ReactNo
|
||||
|
||||
otParms = 'WO_REACT':@RM:WOReactKey
|
||||
// 10/12/18 Changed to ReadOnlyRec as per Francois' instructions. - djs
|
||||
WOReactRec = obj_Tables('ReadOnlyRec',otParms)
|
||||
|
||||
RDSNos = WOReactRec<WO_REACT_RDS_NO$>
|
||||
CassNos = WOReactRec<WO_REACT_CASS_NO$>
|
||||
|
||||
PSNos = XLATE('WO_LOG',WoNo,'PROD_VER_STEP_PSN','X')
|
||||
PSNo = PSNos<1,StepNo>
|
||||
|
||||
QAMetData = obj_Prod_Spec('GetQAMet',PSNo:@RM:@RM:1) ;* * * Get Reactor Scheduled QA Metrology * * *
|
||||
|
||||
Start = QAMetData<COL$QA_MET_START>
|
||||
Interval = QAMetData<COL$QA_MET_INTERVAL>
|
||||
Stage = QAMetData<COL$QA_MET_STAGE>
|
||||
MetPropCd = QAMetData<COL$QA_MET_PROP>
|
||||
|
||||
GOSUB BuildAllTestPos ;* Set RDSNos, Start and Interval -> returns AllTestPos
|
||||
|
||||
|
||||
IF AllTestPos NE '' THEN
|
||||
|
||||
* * * Find where the the RDS being removed is in the list. * * *
|
||||
|
||||
LOCATE RDSNo IN WOReactRec<WO_REACT_RDS_NO$> USING @VM SETTING RemPos THEN
|
||||
|
||||
LOCATE RemPos IN AllTestPos BY 'AR' USING @VM SETTING TrimPos ELSE Null
|
||||
|
||||
ChangePosList = FIELD(AllTestPos,@VM,TrimPos,SeqCnt)
|
||||
|
||||
GOSUB RemSchedQA ;* Removes unsigned QAMet from cassettes scheduled past the box being removed
|
||||
|
||||
END ELSE
|
||||
|
||||
otParms = 'WO_REACT':@RM:WOReactKey
|
||||
WOReactRec = obj_Tables('UnlockRec',otParms)
|
||||
|
||||
RETURN ;* RDSNo is not in this list -> nothing to do.
|
||||
END
|
||||
END ;* End of check for AllTestPos null
|
||||
|
||||
WOReactRec = DELETE(WOReactRec,WO_REACT_RDS_NO$,RemPos,0)
|
||||
WOReactRec = DELETE(WOReactRec,WO_REACT_CASS_NO$,RemPos,0) ;* Removes the passed in RDSNo & associated cassette number from the data fields
|
||||
|
||||
RDSNos = WOReactRec<WO_REACT_RDS_NO$> ;* List after removal
|
||||
CassNos = WOReactRec<WO_REACT_CASS_NO$> ;* List after removal
|
||||
|
||||
* * * Now build list for cassette
|
||||
|
||||
GOSUB BuildAllTestPos
|
||||
|
||||
ChangePosList = FIELD(AllTestPos,@VM,TrimPos,SeqCnt)
|
||||
|
||||
GOSUB AddSchedQA ;* Add QAMet spec data to cassettes now associated with the test positions after removing the RDS & Cassno from the lists
|
||||
|
||||
otParms = FIELDSTORE(otParms,@RM,4,0,WOReactRec)
|
||||
// 10/12/18 Changed to WriteOnlyRec as per Francois' instructions. - djs
|
||||
obj_Tables('WriteOnlyRec',otParms) ;* Done with updates to the WO_REACT record
|
||||
|
||||
Result = Log
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
************** Internal Methods *************
|
||||
|
||||
* * * * * * *
|
||||
BuildAllTestPos:
|
||||
* * * * * * *
|
||||
|
||||
AllTestPos = ''
|
||||
|
||||
RDSCnt = COUNT(RDSNos,@VM) + (RDSNos NE '')
|
||||
SeqCnt = 0
|
||||
|
||||
|
||||
FOR TestSeq = 1 TO RDSCnt
|
||||
IF REM((TestSeq - Start),Interval) = 0 THEN
|
||||
AllTestPos<1,-1> = TestSeq ;* Build list of list positions to have QAMet scheduled
|
||||
SeqCnt += 1
|
||||
END
|
||||
NEXT TestSeq
|
||||
|
||||
Log := 'AllTestPos: ':AllTestPos:@FM
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
RemSchedQA:
|
||||
* * * * * * *
|
||||
|
||||
chgCnt = COUNT(ChangePosList,@VM) + (ChangePosList NE '')
|
||||
|
||||
FOR I = 1 TO chgCnt
|
||||
RemCassNo = CassNos<1,ChangePoslist<1,I>>
|
||||
Log:= 'RemSched on CassNo: ':RemCassNo:@FM
|
||||
|
||||
owmParms = WONo:@RM:StepNo:@RM:RemCassNo:@RM:Stage:@RM:MetPropCd
|
||||
|
||||
obj_WO_Mat_QA('RemQAMet',owmParms) ;* Unschedule test boxes before list change
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(errCode)
|
||||
END
|
||||
|
||||
|
||||
*obj_WO_Mat('RemQAMet',owmParms) ;* Dead 6/5/2015 JCH - Remove after a few days
|
||||
|
||||
*IF Get_Status(errCode) THEN
|
||||
* ErrMsg(errCode)
|
||||
*END
|
||||
NEXT I
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
* * * * * * *
|
||||
AddSchedQA:
|
||||
* * * * * * *
|
||||
|
||||
chgCnt = COUNT(ChangePosList,@VM) + (ChangePosList NE '')
|
||||
|
||||
FOR I = 1 TO chgCnt
|
||||
AddCassNo = CassNos<1,ChangePoslist<1,I>>
|
||||
|
||||
Log:= 'AddSched on CassNo: ':AddCassNo:@FM
|
||||
|
||||
owmParms = WONo:@RM
|
||||
owmParms := StepNo:@RM
|
||||
owmParms := AddCassNo:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_STAGE>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_TEST>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_PROP>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_TOOL_CLASS>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_MIN>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_MAX>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_SLOT>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_RECIPE>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_RECIPE_PATTERN>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_WFR_QTY>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_WFR_TYPE>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_REACT_SCHED>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_SHIP_DOC>:@RM
|
||||
owmParms := QAMetData<COL$QA_MET_PHASE_MIN> ; // 10/15/18 - djs - Added Phase Min Spec for HgCV
|
||||
|
||||
|
||||
obj_WO_Mat_QA('AddQAMet', owmParms) ;* Schedule test boxes after list change
|
||||
|
||||
IF Get_Status(errCode) THEN
|
||||
ErrMsg(errCode)
|
||||
END
|
||||
|
||||
*obj_WO_Mat('AddQAMet',owmParms) ;* Dead 6/5/2015 JCH - remove after a few days
|
||||
|
||||
*IF Get_Status(errCode) THEN
|
||||
* ErrMsg(errCode)
|
||||
*END
|
||||
|
||||
|
||||
|
||||
NEXT I
|
||||
|
||||
RETURN
|
Reference in New Issue
Block a user