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

1982 lines
42 KiB
Plaintext

COMPILE ROUTINE FIX_WO_MAT(Dummy)
ROWDEF(CHARSTR)
DECLARE SUBROUTINE obj_Schedule,Send_Dyn,Send_Info, obj_WO_Log, Set_Status, obj_WO_Step, RList, obj_WO_Mat, Send_Info
DECLARE SUBROUTINE ErrMsg, RDS_React_Run, obj_Post_Log, obj_WO_Mat, obj_RDS2, Btree.Extract, obj_WM_IN, obj_WM_Out, Send_Dyn
DECLARE FUNCTION Get_Status, Set_Printer, obj_WO_Mat, WO_Mat_Purge, obj_Clean_Insp
$INSERT WO_MAT_EQUATES
$INSERT WO_LOG_EQUATES
$INSERT WO_STEP_EQUATES
$INSERT NCR_EQU
$INSERT RDS_EQUATES
$INSERT REACT_RUN_EQUATES
$INSERT RDS_TEST_EQUATES
$INSERT RDS_LAYER_EQUATES
$INSERT PROD_SPEC_EQUATES
$INSERT QUOTE_SPEC_EQU
$INSERT WM_OUT_EQUATES
$INSERT SURFACE_SCAN_EQUATES
$INSERT CLEAN_INSP_EQUATES
$INSERT ORDER_DET_EQU
$INSERT ORDER_EQU
$INSERT TOOL_EQUATES
$INSERT RLIST_EQUATES
$INSERT PRS_STAGE_EQUATES
$INSERT PROD_VER_EQUATES
EQU CRLF$ TO \0D0A\
OPEN 'WO_MAT' TO WOMatTable ELSE
DEBUG
GOTO Bail
END
OPEN 'WM_OUT' TO WMOutTable ELSE
DEBUG
GOTO Bail
END
OPEN 'WO_LOG' TO WOLogTable ELSE
DEBUG
GOTO Bail
END
OPEN 'RDS' TO RDSTable ELSE
DEBUG
GOTO Bail
END
OPEN 'DICT.RDS' TO DictVar ELSE
DEBUG
GOTO Bail
END
OPEN 'NCR' TO NCRTable ELSE
DEBUG
GOTO Bail
END
OPEN 'CLEAN_INSP' TO CITable ELSE
DEBUG
GOTO Bail
End
RList('SELECT WO_MAT WITH PS_REACTOR_TYPE = "GAN" ',TARGET_ACTIVELIST$)
DEBUG
Done = 0
RecNo = 0
LOOP
READNEXT WOMKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMKey THEN
RecNo += 1
*IF WOMatRec<WO_MAT_SIG_PROFILE$> = '' THEN
SigProfile = obj_WO_Mat('CassSigProfile',WOMKey)
WOMatRec<WO_MAT_SIG_PROFILE$> = SigProfile
WOMatRec<WO_MAT_WFR_SIG_PROFILE$> = ''
*Write WOMatRec On WOMatTable,WOMKey Then
Send_Dyn (RecNo:' ':WOMKey:' ':WOMatRec<WO_MAT_SIG_PROFILE$>:' / ':WOMatRec<WO_MAT_WFR_SIG_PROFILE$>)
*End
*END
End ;* End of record read
Repeat
Goto Bail
* * * * * * * * * * * * * * * * * * * * * * * * * * *
/*
RList('SELECT WO_MAT WITH WO_NO > 141548 AND WITH REACTOR_TYPE = "EPP" ',TARGET_ACTIVELIST$) ;* Change to desired WO_NO
Done = 0
RecNo = 0
RecCnt = @RECCOUNT
Pointer = 1
WMArray = ''
RDSArray = ''
DEBUG
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
RecNo += 1
WONo = WOMatKey[1,'*']
CassNo = WOMatKey[COL2()+1,'*']
/*
SlotNos = WOMatRec<WO_MAT_SLOT_NO$>
IF SlotNos = '' THEN
WaferQty = WOMatRec<WO_MAT_WAFER_QTY$>
FOR I = 1 TO WaferQty
SlotNos<1,I> = I
NEXT
WOMatRec<WO_MAT_SLOT_NO$> = SlotNos
*WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Info(RecNo:' - ':WOMatKey)
*END
END ;* End of check for null slotNo
EPOSlotNos = WOMatRec<WO_MAT_EPO_SLOT$>
IF EPOSlotNos = '' THEN
EPOWfrQty = XLATE('WO_LOG',WONo,WO_LOG_OUT_CASS_LOAD_QTY$,'X')
IF EPOWfrQty > 0 THEN
FOR I = 1 TO EPOWfrQty
EPOSlotNos<1,I> = I
NEXT
WOMatRec<WO_MAT_EPO_SLOT$> = EPOSlotNos
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Info(RecNo:' - ':WOMatKey)
END
END
END
REPEAT
*/
GOTO Bail
* * * * * * * Fix INV... fields with SR*VER location and 'PLACE' as Action * * * * * * * * * * *
RList('SELECT WO_MAT WITH WO_NO > 161000',TARGET_ACTIVELIST$) ;* Change to desired WO_NO
DEBUG
Done = 0
RecNo = 0
RecCnt = @RECCOUNT
Pointer = 1
WMArray = ''
RDSArray = ''
EpiProPSNo = '4168'
EpiProPSRec = XLATE('PROD_SPEC',EpiProPSNo,'','X')
DEBUG
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
WONo = WOMatKey[1,'*']
CassNo = WOMatKey[COL2()+1,'*']
InvCnt = COUNT(WOMatRec<WO_MAT_INV_DTM$>,@VM) + (WOMatRec<WO_MAT_INV_DTM$> NE '')
WriteFlag = 0
FOR I = 1 TO InvCnt
WH = WOMatRec<WO_MAT_INV_WH$,I>
Loc = WOMatRec<WO_MAT_INV_LOCATION$,I>
Action = WOMatRec<WO_MAT_INV_ACTION$,I>
IF WH = 'SR' AND Loc = 'VER' AND Action = 'PLACE' THEN
WriteFlag = 1
WOMatRec<WO_MAT_INV_ACTION$,I> = 'PSVER'
END
NEXT I
IF WriteFlag THEN
RecNo += 1
*WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey:' ':RecNo:' of ':RecCnt)
*END
END ;* End of check for Write Flag
END ;*End of read
REPEAT
GOTO Bail
*****************************************************************
* Fix missing Post Clean specifications on WO 158124 and 158125 *
*****************************************************************
RList('SELECT WO_MAT WITH WO_NO 160043 160044 BY WO_NO',TARGET_ACTIVELIST$) ;* Change to desired WO_NO
DEBUG
PostCINo = ''
Done = 0
Pointer = 1
WMArray = ''
RDSArray = ''
EpiProPSNo = '4168'
EpiProPSRec = XLATE('PROD_SPEC',EpiProPSNo,'','X')
DEBUG
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
WONo = WOMatKey[1,'*']
CassNo = WOMatKey[COL2()+1,'*']
IF WOMatRec<WO_MAT_EPO_CI_NO$> = '' THEN
IF RowExists('PRS_STAGE',EpiProPSNo:'*POST') THEN
ociParms = WONo:@RM ;* WONo
ociParms := 1:@RM ;* WOStep
ociParms := CassNo:@RM ;* CassNo
ociParms := 'POST':@RM ;* Stage
ociParms := '':@RM ;* RDSNo
ociParms := EpiProPSNo:@RM ;* PSNo
ociParms := EpiProPSRec ;* PSRec
PostCINo = 'Test'
*PostCINo = obj_Clean_Insp('Create',ociParms)
WOMatRec<WO_MAT_EPO_CI_NO$> = PostCINo
*WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey:' ':PostCINo)
*END
END ;* End of Check for Post C&I spec
END
END ;* End of WOMatRecord read
REPEAT
GOTO Bail
***********************************************************************************
****************************************
* Fixes missing Cass No & Missing EPO_CI_NO problems
***************************************
DEBUG
RList('SELECT CLEAN_INSP WITH WO_NO 159958 BY CI_NO',TARGET_ACTIVELIST$) ;* Change to desired WO_NO
Done = 0
RecCnt = 1
LOOP
READNEXT CINo ELSE Done = 1
UNTIL Done
READ CIRec FROM CITable,CINo THEN
IF CIRec<CLEAN_INSP_RDS_NO$> NE '' THEN
CIRec<CLEAN_INSP_RDS_NO$> = ''
*WRITE CIRec ON CITable,CINo THEN
Send_Dyn('POST -> ':CINo)
*END
END ;* End of WOMatRec read
END ;* End of CIRec read
REPEAT
GOTO Bail
**********************************************************************************************************************
* Trash records fixit
BadKeys = '155039*45':@VM
bkCnt = COUNT( BadKeys , @VM ) + ( BadKeys NE '' )
Total = 0
FOR I = 1 TO bkCnt
BadKey = BadKeys<1,I>
READ BadRecord FROM WOMatTable,BadKey THEN
Len1 = LEN(BadRecord)
invCnt = COUNT(BadRecord<WO_MAT_INV_WH$>,@VM) + (BadRecord<WO_MAT_INV_WH$> NE '')
BadRecord<WO_MAT_INV_DTM$> = FIELD(BadRecord<WO_MAT_INV_DTM$>,@VM,1,invCnt)
BadRecord<WO_MAT_INV_USER$> = FIELD(BadRecord<WO_MAT_INV_USER$>,@VM,1,invCnt)
Len2 = LEN(BadRecord)
Delta = Len1 - Len2
Total += Delta
WRITE BadRecord ON WOMatTable,BadKey THEN
Send_Dyn(BadKey:' ':Len1:' ':Len2:' ':OCONV(Total,'MD0,'))
END
END
NEXT I
GOTO Bail
******************************************************************************************************************
*************************
* Fix Cassette Ship Qty *
*************************
RList('SELECT WO_MAT WITH WO_NO "157869"',TARGET_ACTIVELIST$) ;* Change to desired WO_NO
Done = 0
Pointer = 1
WMArray = ''
RDSArray = ''
DEBUG
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
WONo = WOMatKey[1,'*']
CassNo = WOMatKey[COL2()+1,'*']
*IF WONo < 128680 THEN RETURN ;* This is the first WO No on 7/29/2005 - The day we cut over to the new system.
OrgShipQty = WOMatRec<WO_MAT_CASS_SHIP_QTY$> ;* Change dict item as desired - no multi-value fields.
IF OrgShipQty NE 25 THEN
WOMatRec<WO_MAT_CASS_SHIP_QTY$> = 25 ;* New desired value
*WRITE WOMatRec ON WOMatTable,WOMatKEy THEN ;* Remove the * to run 'hot' - add again and compile before closing procedure - adds protection.
Send_Dyn(WOMatKey:' - ':OrgShipQty:' -> ':WOMatRec<WO_MAT_CASS_SHIP_QTY$>)
*END ;* Remove the * to run 'hot' - add again and compile before closing procedure - adds protection.
END
END
REPEAT
GOTO Bail
RList('SELECT WO_MAT WITH CURR_LOCATION "1K*PTI" BY WO_NO BY CASS_NO',5)
Done = 0
RecCnt = 0
DEBUG
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
WMIKey = WOMatRec<WO_MAT_WMI_KEY$>
WMOKey = WOMatRec<WO_MAT_WMO_KEY$>
WMIStat = ''
WMOStat = ''
IF WMIKey NE '' THEN
WMIStat = XLATE('WM_IN',WMIKey,'CURR_STATUS','X')
Send_Dyn(WMIKey:' In ':WMIStat)
END
IF WMOKey NE '' THEN
WMOStat = XLATE('WM_OUT',WMOKey,'CURR_STATUS','X')
Send_Dyn(WMOKey:' Out':WMOStat)
END
IF WMIStat = 'MT' THEN
IF WMOStat = '' OR WMOStat = 'MT' OR WMOStat = 'VOID' OR WMOStat = 'RTB' THEN
Send_Dyn('WOMat ':WOMatKey:' Set Location to CR*EPR')
Send_Dyn(' ')
END
END
END ;* End of WO_MAT record read
REPEAT
GOTO Bail
RList('SELECT WO_MAT WITH WO_NO > 153800 ',5)
Done = 0
RecCnt = 0
DEBUG
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
SpecSigProfile = obj_WO_Mat('CassSigProfile',WOMatKey)
SpecSignatures = ''
SpecDTMs = ''
SpecVers = ''
SigProfile = WOMatRec<WO_MAT_SIG_PROFILE$>
Signatures = WOMatRec<WO_MAT_SIGNATURE$>
SigDTMS = WOMatRec<WO_MAT_SIG_DTM$>
SigVers = WOMatRec<WO_MAT_SIG_VER$>
SpecCnt = COUNT(SpecSigProfile,@VM) + (SpecSigProfile NE '')
FOR I = 1 TO SpecCnt
SpecProfItem = SpecSigProfile<1,I>
* Look for new PItem in Existing Profile
LOCATE SpecProfItem IN SigProfile USING @VM SETTING Pos THEN
SpecSignatures<1,I> = Signatures<1,Pos>
SpecDTMs<1,I> = SigDTMs<1,Pos>
SpecVers<1,I> = SigVers<1,Pos>
SigProfile = DELETE(SigProfile,1,Pos,0)
Signatures = DELETE(Signatures,1,Pos,0)
SigDTMs = DELETE(SigDTMs,1,Pos,0)
SigVers = DELETE(SigVers,1,Pos,0)
END ELSE
* Check for FWI or LWI newer profile being stored as old 'WFR'
IF SpecProfItem[2,3] = 'FWI' OR SpecProfItem[2,3] = 'LWI' THEN
WfrString = SpecProfItem[2,3] ;* LWI or FWI
SWAP WfrString WITH 'WFR' IN SpecProfItem ;* Update WfrString
LOCATE SpecProfItem IN SigProfile USING @VM SETTING Pos THEN
SpecSignatures<1,I> = Signatures<1,Pos>
SpecDTMs<1,I> = SigDTMs<1,Pos>
SpecVers<1,I> = SigVers<1,Pos>
END
END ELSE
* New item in Spec Sig -> won't be signed
END
END
NEXT I
WOMatRec<WO_MAT_SIG_PROFILE$> = SpecSigProfile
WOMatRec<WO_MAT_SIGNATURE$> = SpecSignatures
WOMatRec<WO_MAT_SIG_DTM$> = SpecDTMs
WOMatRec<WO_MAT_SIG_VER$> = SpecVers
*WRITE WOMatRec ON WOMatTable,WOMatKEy THEN
Send_Dyn(RecCnt:' ':WOMatKey:' ':WOMatRec<WO_MAT_SIG_PROFILE$>:' ':SpecSignatures)
Send_Dyn(SigProfile:' ':Signatures:' ':SigDTMs:' ':SigVers)
Send_Dyn(' ')
*END
END
REPEAT
*Send_Dyn(RecCnt:' - ':WOMatKey)
GOTO Bail
* * * * * * *
DeleteRec:
* * * * * * *
Send_Info('Deleting ':TableName:' ':RecKey)
DELETE TableVar,RecKey THEN
Log<-1> = TableName:' ':RecKey:' purged.'
Gone = 1
END ELSE
Log<-1> = '*** Unable to purge ':TableName:' ':RecKey:' ***'
Gone = 0
END
RETURN
GOTO Bail
* * * * * * *
FixPartNos:
* * * * * * *
WONos = 153204
DEBUG
LineCnt = COUNT(WONos,@VM) + (WONos NE '')
FOR I = 1 TO LineCnt
WONo = WONos<1,I>
READ WOLogRec FROM WOLogTable,WONO THEN
CustPartNo = WOLogRec<WO_LOG_CUST_PART_NO$>
WOMatKeys = WOLogRec<WO_LOG_WO_MAT_KEY$>
CassCnt = COUNT(WOMatKeys,@VM) + (WOMatKeys NE '')
FOR Box = 1 TO CassCnt
WOMatKey = WOMatKeys<1,Box>
READ WOMatRec FROM WOMatTable,WOMatKey THEN
IF WOMatRec<WO_MAT_CUST_PART_NO$> NE CustPartNo THEN
WOMatRec<WO_MAT_CUST_PART_NO$> = CustPartNo
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey)
END
END
END
NEXT Box
SearchString = 'WO':@VM:WONo:@FM
Option = ''
Flag = ''
Btree.Extract(SearchString,'RDS',DictVar, RDSNos, Option, Flag)
IF Get_Status(errCode) THEN
DEBUG
GOTO Bail
END
IF RDSNos NE '' THEN
Send_Dyn(RdsNos)
obj_RDS2('SetPartNo',RDSNos:@RM:CustPartNo)
END
END
NEXT I
GOTO Bail
RList('SELECT WO_MAT WITH WO_NO "153138"',5)
Done = 0
Pointer = 1
WMArray = ''
RDSArray = ''
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
LOCATE '1PSTS' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec = DELETE(WOMatRec,WO_MAT_SIG_PROFILE$,Pos,0)
WOMatRec = DELETE(WOMatRec,WO_MAT_SIGNATURE$,Pos,0)
WOMatRec = DELETE(WOMatRec,WO_MAT_SIG_DTM$,Pos,0)
END
WRITE WOMatRec ON WOMatTable,WOMatKEy THEN
Send_Dyn(WMOKey)
END
END
REPEAT
GOTO Bail
*GOTO FixPartNos
RList('SELECT WO_MAT WITH WO_NO "152912" ',5)
Done = 0
Pointer = 1
WMArray = ''
RDSArray = ''
DEBUG
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
WONo = WOMatKey[1,'*']
CassNo = WOMatKey[COL2()+1,'*']
IF WONo < 128680 THEN RETURN ;* This is the first WO No on 7/29/2005 - The day we cut over to the new system.
WOStepKeys = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X')
StepCnt = COUNT(WOStepKeys,@VM) + (WOStepKeys NE '')
MetLine = 1
FOR I = 1 TO StepCnt
PSNo = XLATE('WO_STEP',WOStepKeys<1,I>,WO_STEP_PROD_SPEC_ID$,'X')
PSRec = XLATE('PROD_SPEC',PSNo,'','X')
MetCnt = COUNT(PSRec<PROD_SPEC_MET_TEST$>,@VM) + (PSRec<PROD_SPEC_MET_TEST$> NE '')
FOR N = 1 TO MetCnt
Interval = PSRec<PROD_SPEC_MET_INTERVAL$,N>
Start = PSRec<PROD_SPEC_MET_START$,N>
TestFlag = 0
IF Interval NE '' AND Start NE '' THEN
IF Interval = Start THEN
IF REM(CassNo,Interval) = 0 THEN TestFlag = 1
END ELSE
IF ABS((Start + INT(CassNo/Interval)*Interval) - CassNo) = 0 THEN TestFlag = 1
END
IF TestFlag THEN
WOMatRec<WO_MAT_MET_PROFILE$,MetLine> = I:PSRec<PROD_SPEC_MET_TEST$,N>
WOMatRec<WO_MAT_MET_RUN_STEP$,MetLine> = PSRec<PROD_SPEC_MET_RUN_STEP$,N>
WOMatRec<WO_MAT_MET_MIN$,MetLine> = PSRec<PROD_SPEC_MET_MIN$,N>
WOMatRec<WO_MAT_MET_MAX$,MetLine> = PSRec<PROD_SPEC_MET_MAX$,N>
WOMatRec<WO_MAT_MET_SLOT$,MetLine> = PSRec<PROD_SPEC_MET_SLOT$,N>
WOMatRec<WO_MAT_MET_SIG$,MetLine> = ''
WOMatRec<WO_MAT_MET_SIG_DTM$,MetLine> = ''
MetLine += 1
END
END
NEXT N
NEXT I
IF MetLine > 1 THEN
WRITE WOMatRec ON WOMatTable,WOMatKEy THEN
Send_Dyn(WOMatKey)
END
END
END
REPEAT
debug
GOTO Bail
OSREAD KeyList FROM 'C:\VOIDNOS.TXT' ELSE
DEBUG
RETURN
END
CONVERT CHAR(9) TO @FM IN KeyList
CONVERT ' ' TO '' IN KeyList
SWAP CRLF$ WITH '' IN Keylist
IF KeyList<-1> = @FM THEN KeyList<-1> = ''
KeyList = '132470*26'
KeyList<-1> = '132844*24'
KeyList<-1> = '133191*17'
KeyList<-1> = '133353*38'
KeyList<-1> = '133577*56'
KeyList<-1> = '133607*71'
KeyList<-1> = '141447*2'
KeyList<-1> = '141448*2'
KeyList<-1> = '142138*6'
KeyList<-1> = '145299*1'
KeyList<-1> = '147696*13'
KeyList<-1> = '147805*5'
KeyCnt = COUNT(KeyList,@FM) + (KeyList NE '')
DEBUG
FOR I = 1 TO KeyCnt
Key = KeyList<I>
IF NUM(Key) THEN
RDSNo = Key
RDSRec = XLATE('RDS',RDSNo,'','X')
WONo = RDSRec<RDS_WO$>
CassNo = RDSRec<RDS_CASS_NO$>
Key = WONo:'*':CassNo
END ELSE
RDSNo = ''
END
READ WOMatRec FROM WOMatTable,Key THEN
WOMatRec<WO_MAT_VOID$> = '1'
WRITE WOMatRec ON WOMatTable,Key THEN
Send_Dyn(Key:'(':RDSNo:') Voided')
END
END
NEXT I
GOTO Bail
LotNos = '6A0AAA0631'
LotNos<2> = '6A0AAA0631'
LotNos<3> = '6A0AAA1298'
LotNos<4> = '6A0AAA1298'
LotNos<5> = '6A0AAA0631'
LotNos<6> = '6A0AAA0631'
LotNos<7> = '6A0AAA1298'
LotNos<8> = '6A0AAA1298'
LotNos<9> = '6A0A9A1277'
LotNos<10> = '6A0A9A1277'
LotNos<11> = '6A0A9A0902'
LotNos<12> = '6A0AAA8F48'
LotNos<13> = '6A0AAA0631'
LotNos<14> = '6A0AAA1298'
LotNos<15> = '6A0AAA0631'
LotNos<16> = '6A0AAA1298'
LotNos<17> = '6A0AAA0631'
LotNos<18> = '6A0AAA0631'
LotNos<19> = '6A0AAA1298'
LotNos<20> = '6A0A9A0902'
DEBUG
FOR I = 1 TO 20
LotNo = LotNos<I>
WOMatKey = '150900*':I
READ WOMatRec FROM WOMatTable,WOMatKey THEN
RDSNo = WOMatRec<WO_MAT_RDS_NO$>
READ RDSRec FROM RDSTable,RDSNo THEN
RDSRec<RDS_LOT_NUM$> = LotNo
WRITE RDSRec ON RDSTable,RDSNo THEN
Send_Dyn('RDS ':RDSNo:' -> ':LotNo)
END
END
WOMatRec<WO_MAT_LOT_NO$> = LotNo
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn('WO_MAT ':WOMatKey:' -> ':LotNo)
END
END
NEXT I
GOTO Bail
RList('SELECT WO_MAT WITH WO_NO "150876" AND WITH CASS_NO > 84',5)
Done = 0
Pointer = 1
WMArray = ''
RDSArray = ''
DEBUG
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
READ WOMatRec FROM WOMatTable,WOMatKey THEN
Set_Status(0)
CONVERT '*' TO @RM IN WOMatKey
obj_WO_Mat('Delete',WOMatKey)
IF Get_Status(errCode) THEN
DEBUG
END
Send_Dyn(WOMatKey)
END
REPEAT
DEBUG
GOTO Bail
RList('SELECT WO_MAT WITH WO_NO "149993" BY WO_NO BY CASS_NO',5)
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
RecDTM = WOMatRec<WO_MAT_RX_DTM$>
NewRXDt = ICONV('3/30/2010','D')
CONVERT '.' TO @VM IN RecDTM
OrgRXDt = RecDTM<1,1>
RecDTM<1,1> = NewRXDt
CONVERT @VM TO '.' IN RecDTM
WOMatRec<WO_MAT_RX_DTM$> = RecDTM
*WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey:' ':OCONV(WOMatRec<WO_MAT_RX_DTM$>,'DT/^HS'):' -> ':OCONV(RecDTM,'DT/^HS'))
*END
END ;* End of record read
REPEAT
GOTO Bail
OrgLotNo = '6A0ABA1818'
NewLotNo = '6A0ACA0522'
WOMatKeys = '149690*19':@VM:'149690*20'
FOR I = 1 TO 2
WOMatKey = WOMatKeys<1,I>
WOMatRec = XLATE('WO_MAT',WOMatKey,'','X')
IF WOMatRec<WO_MAT_LOT_NO$> = OrgLotNo THEN
RDSNos = WOMatRec<WO_MAT_RDS_NO$>
RDSCnt = COUNT(RDSNos,@VM) + (RDSNos NE '')
FOR N = 1 TO RDSCnt
oPLParms = 'RDS':@RM
oPLParms := RDSNos<1,N>:@RM
oPLParms := RDS_LOT_NUM$:@RM
oPLParms := NewLotNo
obj_Post_Log('Create',oPLParms)
NEXT N
oPLParms = 'WO_MAT':@RM
oPLParms := WOMatKey:@RM
oPLParms := WO_MAT_LOT_NO$:@RM
oPLParms := NewLotNo
obj_Post_Log('Create',oPLParms)
END
NEXT I
GOTO Bail
WONo = 149655
FOR I = 13 TO 25
WOMatKey = WONo:'*':I
RDSNo = XLATE('WO_MAT',WOMatKey,WO_MAT_RDS_NO$,'X')
RDSRec = ''
RDSRec<RDS_WO$> = WONo
RDSRec<RDS_CASS_NO$> = I
WRITE RDSRec ON RDSTable,RDSNo THEN
DELETE RDSTable,RDSNo THEN NULL
END
NEXT I
FOR I = 13 to 25
WOMatKey = WONo:'*':I
DELETE WOMatTable,WOMatKey ELSE NULL
NEXT I
GOTO Bail
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
LOCATE WOMatKey IN WOMatKeys USING @VM SETTING Pos ELSE
DELETE WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey:' Deleted')
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey:' Written')
END
END
END
END ;* End of record read
REPEAT
GOTO Bail
RList('SELECT WO_MAT WITH WO_NO > 129000 BY-DSND WO_NO',5)
SelCnt = @RECCOUNT
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
WONo = WOMatKey[1,'*']
OrdNo = XLATE('WO_LOG',WONo,WO_LOG_ORDER_NO$,'X')
OrdItem = WOMatRec<WO_MAT_ORDER_ITEM$>
CustPN = XLATE('ORDER_DET',OrdNo:'*':OrdItem,ORDER_DET_CUST_PN$,'X')
IF WOMatRec<WO_MAT_CUST_PART_NO$> NE CustPN THEN
obj_WO_Mat('SetPartNo',WOMatKey:@RM:CustPN)
Send_Dyn(WOMatKey:' Written')
END
END ;* End of record read
Send_Info(RecCnt:'/':SelCnt)
REPEAT
GOTO Bail
RList('SELECT WO_MAT WITH WO_NO "148736" BY WO_NO BY CASS_NO',5)
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
SigProfs = WOMatRec<WO_MAT_SIG_PROFILE$>
Signatures = WOMatRec<WO_MAT_SIGNATURE$>
SigDTMs = WOMatRec<WO_MAT_SIG_DTM$>
aSigProf = SigProfs
aSignature = Signatures
aSigDTM = SigDTMs
LOCATE '1PREI' IN SigProfs USING @VM SETTING Pos THEN
IF Signatures<1,Pos> = '' THEN
SigProfs = DELETE(SigProfs,1,Pos,0)
Signatures = DELETE(Signatures,1,Pos,0)
SigDTMs = DELETE(SigDTMs,1,Pos,0)
END
Send_Dyn(WOMatKey:' - ':aSigProf:' - ':aSignature:' - ':aSigDTM)
Send_Dyn(WOMatKey:' - ':SigProfs:' - ':Signatures:' - ':SigDTMS)
Send_Dyn(' ')
END
WOMatRec<WO_MAT_SIG_PROFILE$> = SigProfs
WOMatRec<WO_MAT_SIGNATURE$> = Signatures
WOMatRec<WO_MAT_SIG_DTM$> = SigDTMs
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
*Send_Dyn(WOMatKey:' ':aSigProf:' ':aSignature:' ':aSigDTM)
*Send_Dyn(WOMatKey:' ':SigProfs:' ':Signatures:' ':SigDTMS)
END
END ;* End of record read
REPEAT
GOTO Bail ;***************************************************
WOMatKey = '148634*16'
READ WOMatRec FROM WOMatTable,WOMatKey THEN
DELETE WOMatTable,WOMatKey THEN
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
END
END
END
GOTO Bail
RList('SELECT WO_MAT WITH WO_NO "148362" ',5)
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
RecCnt += 1
WONo = WOMatKey[1,'*']
WOLogRec = XLATE('WO_LOG',WONo,'','X')
OrderNo = WOLogRec<WO_LOG_ORDER_NO$>
OrdItemNo = WOMatRec<WO_MAT_ORDER_ITEM$>
SubPartNo = TRIM(XLATE('ORDER_DET',OrderNo:'*':OrdItemNo,ORDER_DET_SUB_PART_NO$,'X'))
CurrSubPartNo = WOMatRec<WO_MAT_SUB_PART_NO$>
IF SubPartNo NE CurrSubPartNo THEN
WOMatRec<WO_MAT_SUB_PART_NO$> = SubPartNo
Send_Dyn(RecCnt:' ':FixCnt:' ':WOMatKey:' ':QUOTE(CurrSubPartNo):' -> ':QUOTE(SubPartNo))
RDSNos = WOMatRec<WO_MAT_RDS_NO$>
RDSCnt = COUNT(RDSNos,@VM) + (RDSNos NE '')
FOR I = 1 TO RDSCnt
TableName = 'RDS'
TableKey = RDSNos<1,I>
FieldNo = RDS_SUB_PART_NO$
FieldData = SubPartNo
*obj_Post_Log('Create',TableName:@RM:TableKey:@RM:FieldNo:@RM:FieldData)
Send_Dyn(TableName:' ':TableKey:' ':FieldNo:' ':FieldData)
NEXT I
FixCnt += 1
*WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Null
*END
END
END ;* End of record read
REPEAT
GOTO Bail ;***************************************************
RList('SELECT WO_MAT WITH WO_NO "144637"',5)
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
LOCATE '1PREI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
IF WOMatRec<WO_MAT_SIGNATURE$,Pos> = '' THEN
WOMatRec = DELETE(WOMatRec,WO_MAT_SIGNATURE$,Pos,0)
WOMatRec = DELETE(WOMatRec,WO_MAT_SIG_PROFILE$,Pos,0)
WOMatRec = DELETE(WOMatRec,WO_MAT_SIG_DTM$,Pos,0)
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Info(WOMatKey)
END
END ;* End of check for no PREI signature
END ;* End of check FOR PREI
END ;* End of record read
REPEAT
GOTO Bail
*********************************************
RList('SELECT WO_MAT WITH WO_NO "144656"',5)
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
WOMatRec<WO_MAT_CASS_SHIP_QTY$> = 24
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey)
END
END ;* End of record read
REPEAT
GOTO Bail ;***************************************************
WONo = '144556'
RList('SELECT WO_MAT WITH WO_NO ':QUOTE(WONo),'1',5)
PSNo = XLATE('WO_STEP',WONo:'*1',1,'X')
RawSigProfile = XLATE('PROD_SPEC',PSNo,'SIG_PROFILE','X')
RSCnt = COUNT(RawSigProfile,@VM) + (RawSigProfile NE '')
SigProfile = ''
FOR I = 1 TO RSCnt
SigProfile<1,I> = '1':RawSigProfile<1,I>
NEXT I
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
RDSNo = WOMatRec<WO_MAT_RDS_NO$>
RDSRec = XLATE('RDS',RDSNo,'','X')
VerSig = RDSRec<RDS_PRE_EPI_SIG$>
LoadSig = RDSRec<RDS_OPERATOR_IN$>
FWSig = RDSRec<RDS_FIRST_WAF_SIG$>
UnLoadSig = RDSRec<RDS_OPERATOR_OUT$>
PstCleanSig = RDSRec<RDS_POST_EPI_SIG$>
QASig = RDSRec<RDS_SUP_VER_SIG$>
VerSigDTM = ICONV(OCONV(RDSRec<RDS_PRE_EPI_SIG_DATE$>,'D4/'):' ':OCONV(RDSRec<RDS_PRE_EPI_SIG_TIME$>,'MTS'),'DT')
LoadSigDTM = ICONV(OCONV(RDSRec<RDS_DATE_IN$>,'D4/'):' ':OCONV(RDSRec<RDS_TIME_IN$>,'MTS'),'DT')
FWSigDTM = ICONV(OCONV(RDSRec<RDS_FIRST_WAF_SIG_DATE$>,'D4/'):' ':OCONV(RDSRec<RDS_FIRST_WAF_SIG_TIME$>,'MTS'),'DT')
UnLoadSigDTM = ICONV(OCONV(RDSRec<RDS_DATE_OUT$>,'D4/'):' ':OCONV(RDSRec<RDS_TIME_OUT$>,'MTS'),'DT')
PstCleanSigDTM = ICONV(OCONV(RDSRec<RDS_POST_EPI_SIG_DATE$>,'D4/'):' ':OCONV(RDSRec<RDS_POST_EPI_SIG_TIME$>,'MTS'),'DT')
QASigDTM = ICONV(OCONV(RDSRec<RDS_SUP_VER_SIG_DATE$>,'D4/'):' ':OCONV(RDSRec<RDS_SUP_VER_SIG_TIME$>,'MTS'),'DT')
WOMatRec<WO_MAT_SIG_PROFILE$> = SigProfile
WOMatRec<WO_MAT_SIGNATURE$> = ''
WOMatRec<WO_MAT_SIG_DTM$> = ''
IF VerSig NE '' THEN
LOCATE '1VER' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = VerSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = VerSigDTM
END
LOCATE '1PREC' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = VerSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = VerSigDTM
END
LOCATE '1PREI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = VerSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = VerSigDTM
END
LOCATE '1PRES' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = VerSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = VerSigDTM
END
END
IF LoadSig NE '' THEN
LOCATE '1LOAD' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = LoadSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = LoadSigDTM
END
END
IF FWSig NE '' THEN
LOCATE '1WFRI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = FWSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = FWSigDTM
END
END
IF UnLoadSig NE '' THEN
LOCATE '1UNLOAD' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = UnLoadSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = UnLoadSigDTM
END
END
IF PstCleanSigDTM NE '' THEN
LOCATE '1PSTC' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PstCleanSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PstCleanSigDTM
END
LOCATE '1PSTI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PstCleanSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PstCleanSigDTM
END
LOCATE '1PSTS' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PstCleanSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PstCleanSigDTM
END
END
IF QASig NE '' THEN
LOCATE '1QA' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = QASig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = QASigDTM
END
END
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey)
END
END ;* End of record read
REPEAT
GOTO Bail ;**********************************************
*/
DEBUG
READ WOMatRec FROM WOMatTable,'144556*11' THEN
RDSNo = WOMatRec<WO_MAT_RDS_NO$>
RDSRec = XLATE('REACT_RUN',RDSNo,'','X')
PostCIKey = RDSRec<REACT_RUN_POST_CI_NO$>
PostCIRec = XLATE('POST_CLEAN',PostCIKey,'','X')
PostCleanSig = PostCIRec<CLEAN_INSP_CLEAN_SIG$>
PostCleanSigDTM = PostCIRec<CLEAN_INSP_CLEAN_SIG_DTM$>
LOCATE '1PSTC' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = 'ROXANNE_S'
WOMatRec<WO_MAT_SIG_DTM$,Pos> = ICONV('12/15/09 10:49AM','DT')
END
LOCATE '1PSTI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = 'ROXANNE_S'
WOMatRec<WO_MAT_SIG_DTM$,Pos> = ICONV('12/15/09 11:25AM','DT')
END
LOCATE '1PSTS' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = 'ROXANNE_S'
WOMatRec<WO_MAT_SIG_DTM$,Pos> = ICONV('12/15/09 11:25AM','DT')
END
LOCATE '1QA' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = 'DICHAN_S'
WOMatRec<WO_MAT_SIG_DTM$,Pos> = ICONV('12/15/09 11:27AM','DT')
END
WRITE WOMatRec ON WOMatTable,'144556*16' THEN NULL
END
GOTO Bail
*************************
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
LOCATE '1PREI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
IF WOMatRec<WO_MAT_SIGNATURE$,Pos> = '' THEN
WOMatRec = DELETE(WOMatRec,WO_MAT_SIGNATURE$,Pos,0)
WOMatRec = DELETE(WOMatRec,WO_MAT_SIG_PROFILE$,Pos,0)
WOMatRec = DELETE(WOMatRec,WO_MAT_SIG_DTM$,Pos,0)
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Info(WOMatKey)
END
END ;* End of check for no PREI signature
END ;* End of check FOR PREI
END ;* End of record read
REPEAT
GOTO Bail
RList('SELECT WO_MAT WITH WO_NO "143484" ',5)
RDSKeys = ''
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
GoodRec = XLATE('ORG_WO_MAT',WOMatKey,'','X')
WOMatRec<WO_MAT_REL_DTM$> = GoodRec<WO_MAT_REL_DTM$>
WOMatRec<WO_MAT_REL_BY$> = GoodRec<WO_MAT_REL_BY$>
WOMatRec<WO_MAT_ORG_COMMIT_DT$> = GoodRec<WO_MAT_ORG_COMMIT_DT$>
RDSKeys<1,-1> = GoodRec<WO_MAT_RDS_NO$>
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Dyn(WOMatKey:' - ':GoodRec<WO_MAT_RDS_NO$>)
END
END ;* End of record read
REPEAT
RDSCnt = COUNT(RDSKeys,@VM) + (RDSKeys NE '')
DEBUG
FOR I = 1 TO RDSCnt
RDSKey = RDSKeys<1,I>
GoodRDS = XLATE('ORG_RDS',RDSKey,'','X')
LSKeys = GoodRDS<RDS_RDS_LAYER_KEYS$>
LSCnt = COUNT(LSKeys,@VM) + (LSKeys NE '')
FOR J = 1 TO LSCnt
LSKey = LSKeys<1,J>
GoodLayer = XLATE('ORG_RDS_LAYER',LSKey,'','X')
MetKeys = GoodLayer<RDS_LAYER_RDS_TEST_KEYS$>
MetCnt = COUNT(MetKeys,@VM) + (MetKeys NE '')
FOR K = 1 TO MetCnt
MetKey = MetKeys<1,K>
GoodMet = XLATE('ORG_RDS_TEST',MetKey,'','X')
WRITE GoodMet ON RDSTestTable,MetKey THEN
Send_Dyn(MetKey)
END
NEXT K
WRITE GoodLayer ON RDSLayerTable,LSKey THEN
Send_Dyn(LSKey)
END
NEXT J
WRITE GoodRDS ON RDSTable,RDSKey THEN
Send_Dyn('RDS ':RDSKey)
End
NEXT I
GOTO Bail ; ****************
RList('SELECT WO_MAT WITH WO_NO "143566" ',5)
DEBUG
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
LOCATE '1PREI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
IF WOMatRec<WO_MAT_SIGNATURE$,Pos> = '' THEN
WOMatRec = DELETE(WOMatRec,WO_MAT_SIGNATURE$,Pos,0)
WOMatRec = DELETE(WOMatRec,WO_MAT_SIG_PROFILE$,Pos,0)
WOMatRec = DELETE(WOMatRec,WO_MAT_SIG_DTM$,Pos,0)
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
Send_Info(WOMatKey)
END
END ;* End of check for no PREI signature
END ;* End of check FOR PREI
END ;* End of record read
REPEAT
GOTO Bail
/*
*RList('SELECT WO_MAT WITH WO_NO > 128680 ',5)
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done OR Fix_Cnt > 100
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
WMOutKey = WOMatRec<WO_MAT_WMO_KEY$>
IF WMOutKey NE '' THEN
WMOutRec = XLATE('WM_OUT',WMOutKey,'','X')
WONo = WMOutKey[1,'*']
WOStepNo = WMOutKey[COL2()+1,'*']
CassNo = WMOutKey[COL2()+1,'*']
WOStepKey = FIELD(WMOutKey,'*',1,2)
PSNo = XLATE('WO_STEP',WOStepKey,1,'X')
PSRec = XLATE('PROD_SPEC',PSNo,'','X')
SpecSubPostClean = PSRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPostClean$>
SpecPostCleanSurfscan = PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN$>
SpecPostCleanBrightlight = PSRec<PROD_SPEC_POST_CLEAN_BRIGHTLIGHT$>
SpecPostCleanSurfscanRecipe = PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN_RECIPE$>
IF SpecSubPostClean NE '' THEN
IF WMOutRec<WM_OUT_POST_CODE$> NE '' OR WMOutRec<WM_OUT_POST_BOAT_ID$> OR WMOutRec<WM_OUT_POST_SRD_NO$> NE '' THEN
LOCATE WOStepNo:'MO_PSTC' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = WMOutRec<WM_OUT_POST_EPI_SIG$>
WOMatRec<WO_MAT_SIG_DTM$,Pos> = WMOutRec<WM_OUT_POST_EPI_SIG_DTM$>
END
END
END
IF SpecPostCleanSurfscan = 1 THEN
SurfScanKey = WMOutKey:'*PC'
SurfScanRec = XLATE('SURFACE_SCAN',SurfScanKey,'','X')
ScanSig = SurfScanRec<SURFACE_SCAN_SCAN_USER$>
ScanSigDTM = SurfScanRec<SURFACE_SCAN_SCAN_DTM$>
IF ScanSig NE '' THEN
LOCATE WOStepNo:'MO_PSTS' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = ScanSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = ScanSigDTM
END
END
END
IF SpecPostCleanBrightlight = 1 THEN
IF WMOutRec<WM_OUT_LPD_POSTCLEAN$> NE '' AND WMOutRec<WM_OUT_LPD_POSTCLEAN$> NE '' THEN
LOCATE WOStepNo:'MO_PSTI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = WMOutRec<WM_OUT_SUP_VER_SIG$>
WOMatRec<WO_MAT_SIG_DTM$,Pos> = WMOutRec<WM_OUT_SUP_VER_SIG_DTM$>
END
END
END
IF WMOutRec<WM_OUT_SUP_VER_SIG$> NE '' THEN
LOCATE WOStepNo:'MO_QA' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = WMOutRec<WM_OUT_SUP_VER_SIG$>
WOMatRec<WO_MAT_SIG_DTM$,Pos> = WMOutRec<WM_OUT_SUP_VER_SIG_DTM$>
END
END
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
FixCnt += 1
Send_Dyn(WOMatKey)
END
END ;* End of check for WMOKey
END ;* End of WOMatRec read
Send_Info(RecCnt:' ':FixCnt)
REPEAT
GOTO Bail
*/
* 128680
DEBUG
RList('SELECT WO_MAT WITH WO_NO "143386" ',5)
Done = 0
RecCnt = 0
FixCnt = 0
LOOP
READNEXT WOMatKey ELSE Done = 1
UNTIL Done
RecCnt += 1
READ WOMatRec FROM WOMatTable,WOMatKey THEN
SigProfile = WOMatRec<WO_MAT_SIG_PROFILE$>
Signatures = WOMatRec<WO_MAT_SIGNATURE$>
TestString = Signatures
CONVERT @VM TO '' IN TestString
IF TestString = '' THEN GOTO SkipRecord
Update = 0
ProfCnt = COUNT(SigProfile,@VM) + (SigProfile NE '')
FOR N = 1 TO ProfCnt
IF Signatures<1,N> = '' THEN Update = 1
UNTIL Update
NEXT N
*IF NOT(Update) THEN GOTO SkipRecord
WOMatRec<WO_MAT_SIGNATURE$> = ''
WOMatRec<WO_MAT_SIG_DTM$> = ''
RDSNos = WOMatRec<WO_MAT_RDS_NO$>
RdsCnt = COUNT(RDSNos,@VM) + (RDSNos NE '')
FOR I = 1 TO RdsCnt
RDSNo = RDSNos<1,I>
RDSRec = XLATE('RDS',RDSNo,'','X')
WOStepKey = RDSRec<RDS_WO_STEP_KEY$>
WOStepNo = WOStepKey[-1,'B*']
IF WOStepNo NE I THEN
Send_Dyn('WOStep NE "I" in ':QUOTE(WOStepKey))
GOTO SkipRecord
END
PSNo = XLATE('WO_STEP',WOStepKey,WO_STEP_PROD_SPEC_ID$,'X')
PSRec = XLATE('PROD_SPEC',PSNo,'','X')
ReactorType = PSRec<PROD_SPEC_REACTOR_TYPE$>
* * Verify
PreEpiSig = RDSRec<RDS_PRE_EPI_SIG$,1>
PreEpiSigDTM = ICONV(OCONV(RDSRec<RDS_PRE_EPI_SIG_DATE$,1>,'D4/'):' ':OCONV(RDSRec<RDS_PRE_EPI_SIG_TIME$,1>,'MTS'),'DT')
IF PreEpiSig NE '' THEN
LOCATE WOStepNo:'VER' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PreEpiSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PreEpiSigDTM
END
END
* * Pre C & I
PreClean = PSRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPreClean$>
IF PreClean[1,5] = 'If Ne' THEN PreCleanFlag = 1 ELSE PreCleanFlag = ''
PreCodes = RDSRec<RDS_PRE_CODE$>
PreBoats = RDSRec<RDS_PRE_BOAT_ID$>
PreSRDs = RDSRec<RDS_PRE_SRD_NUM$>
CONVERT @VM TO '' IN PreCodes
CONVERT @VM TO '' IN PreBoats
CONVERT @VM TO '' IN PreSRDs
IF PreCodes NE '' OR PreBoats NE '' OR PreSRDs NE '' OR PreClean[1,5] = 'If Ne' THEN
PreCleanFlag = 1
LOCATE WOStepNo:'PREC' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PreEpiSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PreEpiSigDTM
END
END
IF PSRec<PROD_SPEC_PRE_BRIGHTLIGHT$> = 1 OR PSRec<PROD_SPEC_PRE_MICROSCOPE$> = 1 THEN
LOCATE WOStepNo:'PREI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PreEpiSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PreEpiSigDTM
END
END
IF PSRec<PROD_SPEC_PRE_SURFSCAN$> = 1 OR PSRec<PROD_SPEC_PRE_SURFSCAN_RECIPE$> NE '' THEN
LOCATE WOStepNo:'PRES' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PreEpiSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PreEpiSigDTM
END
END
* * Load
LoadSig = RDSRec<RDS_OPERATOR_IN$>
LoadSigDTM = ICONV(OCONV(RDSRec<RDS_DATE_IN$>,'D4/'):' ':OCONV(RDSRec<RDS_TIME_IN$>,'MTS'),'DT')
LOCATE WOStepNo:'LOAD' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = LoadSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = LoadSigDTM
END
* * Wafer Insp & Scan
WfrSig = RDSRec<RDS_FIRST_WAF_SIG$>
WfrSigDTM = ICONV(OCONV(RDSRec<RDS_FIRST_WAF_SIG_DATE$>,'D4/'):' ':OCONV(RDSRec<RDS_FIRST_WAF_SIG_TIME$>,'MTS'),'DT')
IF PSRec<PROD_SPEC_FIRST_BRIGHTLIGHT$> = 1 OR PSRec<PROD_SPEC_FIRST_MICROSCOPE$> = 1 THEN
LOCATE WOStepNo:'WFRI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = WfrSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = WfrSigDTM
END
END
IF PSRec<PROD_SPEC_FIRST_SURFSCAN$> = 1 OR PSRec<PROD_SPEC_FIRST_SURFSCAN_RECIPE$> NE '' THEN
LOCATE WOStepNo:'WFRS' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = WfrSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = WfrSigDTM
END
END
* * Unload
UnloadSig = RDSRec<RDS_OPERATOR_OUT$>
UnloadSigDTM = ICONV(OCONV(RDSRec<RDS_DATE_OUT$>,'D4/'):' ':OCONV(RDSRec<RDS_TIME_OUT$>,'MTS'),'DT')
LOCATE WOStepNo:'UNLOAD' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = UnloadSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = UnloadSigDTM
END
* * Post Epi Insp
PostSig = RDSRec<RDS_POST_EPI_SIG$>
PostSigDTM = ICONV(OCONV(RDSRec<RDS_POST_EPI_SIG_DATE$>,'D4/'):' ':OCONV(RDSRec<RDS_POST_EPI_SIG_TIME$>,'MTS'),'DT')
IF RDSRec<RDS_POST_CODE$> NE '' OR RDSRec<RDS_POST_BOAT_ID$> NE '' OR RDSRec<RDS_POST_SRD_NUM$> NE '' THEN
LOCATE WOStepNo:'PSTC' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PostSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PostSigDTM
END
END
IF PSRec<PROD_SPEC_POST_CLEAN_BRIGHTLIGHT$> = 1 THEN
LOCATE WOStepNo:'PSTI' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PostSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PostSigDTM
END
END
IF PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN$> = 1 OR PSRec<PROD_SPEC_POST_CLEAN_SURFSCAN_RECIPE$> NE '' THEN
LOCATE WOStepNo:'PSTS' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = PostSig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = PostSigDTM
END
END
QASig = RDSRec<RDS_SUP_VER_SIG$>
QASigDTM = ICONV(OCONV(RDSRec<RDS_SUP_VER_SIG_DATE$>,'D4/'):' ':OCONV(RDSRec<RDS_SUP_VER_SIG_TIME$>,'MTS'),'DT')
LOCATE WOStepNo:'QA' IN WOMatRec<WO_MAT_SIG_PROFILE$> USING @VM SETTING Pos THEN
WOMatRec<WO_MAT_SIGNATURE$,Pos> = QASig
WOMatRec<WO_MAT_SIG_DTM$,Pos> = QASigDTM
END
NEXT I
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
FixCnt += 1
Send_Dyn(WOMatKey)
END
* * * * * * *
SkipRecord:
* * * * * * *
END ;* End of WOMat record read
Send_Info(RecCnt:' ':FixCnt)
REPEAT
GOTO Bail
* * * * * * *
Bail:
* * * * * * *
END