1260 lines
40 KiB
Plaintext
1260 lines
40 KiB
Plaintext
COMPILE Subroutine FIX_RDS(Dummy)
|
|
* ROWDEF(CHARSTR)
|
|
#pragma precomp SRP_PreCompiler
|
|
|
|
DECLARE SUBROUTINE obj_Schedule,Send_Dyn,Send_Info, Send_Dyn, obj_WO_Step, Set_Status, Btree.Extract, obj_RDS, RList, ErrMsg, Sleepery
|
|
DECLARE SUBROUTINE Make.List, obj_RDS_Test, obj_RDS_Layer, REACT_RUN_RDS, obj_Tables, Msg, Yield, SRP_Stopwatch, Schedule_Services, Error_Services, Database_Services, Epi_Part_Services, Activate_Save_Select
|
|
DECLARE FUNCTION Get_Status, Set_Printer, obj_RDS, ErrMsg, obj_Prod_Spec, obj_React_Item_Hist,ICONV, Schedule_Services, Error_Services, Database_Services, Epi_Part_Services, SRP_Math
|
|
Declare function SRP_COM, Memory_Services, SRP_Array, Date_Services, SRP_Math, MemberOf, Environment_Services, Get_Property, RTI_Task_Submit, obj_Tables, RTI_Task_Status
|
|
Declare subroutine SRP_COM, Memory_Services
|
|
|
|
$INSERT LOGICAL
|
|
$INSERT RDS_EQUATES
|
|
$INSERT WO_LOG_EQUATES
|
|
$INSERT WO_MAT_EQUATES
|
|
$INSERT WO_STEP_EQUATES
|
|
$INSERT RDS_LAYER_EQUATES
|
|
$INSERT PROD_SPEC_EQU
|
|
$INSERT SURFACE_SCAN_EQUATES
|
|
$INSERT PRS_LAYER_EQU
|
|
$INSERT REACT_ITEM_EQUATES
|
|
$INSERT WO_WFR_EQUATES
|
|
$insert FILE.SYSTEM.EQUATES
|
|
$Insert SCHED_DET_EQUATES
|
|
$insert REVDOTNETEQUATES
|
|
|
|
Equ MIDNIGHT_PM$ to 86400 ; // Midnight represented as the end of the day.
|
|
|
|
|
|
// <1> Transaction type out
|
|
// <2> Number of transactions per type
|
|
// <3> Number of transactions out
|
|
// <2,1> Transaction type in
|
|
// <2,2> Number of transactions in per type
|
|
// <2,3> Number of transactions in
|
|
|
|
// CASS_COMP,
|
|
// SAP_COMM_LOG Fields
|
|
// Log DTM
|
|
// Trans Type (Rx, Tx)
|
|
// DOS Path
|
|
// Filename
|
|
// DOS Filename
|
|
// SAP Trans Type
|
|
|
|
Equ Tab$ to \09\
|
|
Equ LF$ to \0A\
|
|
Equ Comma$ to ','
|
|
Equ CRLF$ to \0D0A\
|
|
|
|
//COC Fix when default printer isn't set, run this for each missed SAP Shipment
|
|
ShipNo = 152037
|
|
cocParms = 'COC':@RM:ShipNo
|
|
ShipRec = obj_Tables('ReadRec',cocParms)
|
|
TaskID = RTI_Task_Submit('', 'PRINT_SHIPMENT_DEV', ShipNo, ShipRec, 1, True$)
|
|
If TaskID NE 0 then
|
|
Done = False$
|
|
Loop
|
|
Status = RTI_Task_Status(TaskID, TaskResponse)
|
|
If (Status EQ 'COMPLETED') OR (Status EQ 'ERROR') then Done = True$
|
|
Until Done
|
|
Repeat
|
|
end
|
|
|
|
Return
|
|
Debug
|
|
|
|
SapStartDTM = 18630.27152777778
|
|
SapStopDTM = 18631.0708333333333333
|
|
OutStatsArray = ''
|
|
InStatsArray = ''
|
|
LotHoldInfo = ''
|
|
OutFilename = 'SAPStatsOut.txt'
|
|
InFilename = 'SAPStatsIn.txt'
|
|
HoldFilename = 'SAPHoldInfo.txt'
|
|
OutDir = 'C:\Users\ecStieberD\Desktop\'
|
|
Open 'SAP_COMM_LOG' to SAPCommHandle then
|
|
StartKey = 194900
|
|
CurrKey = StartKey
|
|
Done = False$
|
|
Loop
|
|
Read SAPCommRec from SAPCommHandle, CurrKey then
|
|
LogDTM = SAPCommRec<1>
|
|
If LogDTM LT SAPStopDTM then
|
|
If LogDTM GT SAPStartDTM then
|
|
TransType = SAPCommRec<2>
|
|
DOSPath = SAPCommRec<3>
|
|
SAPTransType = SAPCommRec<6>
|
|
If TransType EQ 'TX' then
|
|
ArrayTransTypes = OutStatsArray<1>
|
|
Locate SAPTransType in ArrayTransTypes using @VM setting vPos then
|
|
OutTransTypeCount = OutStatsArray<2,vPos>
|
|
OutStatsArray<2,vPos> = OutTransTypeCount + 1
|
|
OutTransCount = OutStatsArray<3>
|
|
OutStatsArray<3> = OutTransCount + 1
|
|
end else
|
|
OutStatsArray<1,-1> = SAPTransType
|
|
OutStatsArray<2,-1> = 1
|
|
OutTransCount = OutStatsArray<3>
|
|
OutStatsArray<3> = OutTransCount + 1
|
|
end
|
|
If SAPTransType EQ 'WO_MAT_HOLD' then
|
|
DOSFilename = SAPCommRec<5>
|
|
LotHoldInfo<-1> = DOSFilename
|
|
end
|
|
end else
|
|
ArrayTransTypes = InStatsArray<1>
|
|
Locate SAPTransType in ArrayTransTypes using @VM setting vPos then
|
|
InTransTypeCount = InStatsArray<2,vPos>
|
|
InStatsArray<2,vPos> = InTransTypeCount + 1
|
|
InTransCount = InStatsArray<3>
|
|
InStatsArray<3> = InTransCount + 1
|
|
end else
|
|
InStatsArray<1,-1> = SAPTransType
|
|
InStatsArray<2,-1> = 1
|
|
InTransCount = InStatsArray<3>
|
|
InStatsArray<3> = InTransCount + 1
|
|
end
|
|
end
|
|
end
|
|
end else
|
|
Done = True$
|
|
end
|
|
end
|
|
CurrKey += 1
|
|
Until Done EQ True$
|
|
Repeat
|
|
end
|
|
|
|
Convert @VM to ',' in OutStatsArray
|
|
Convert @FM to LF$ in OutStatsArray
|
|
Convert @VM to ',' in InStatsArray
|
|
Convert @FM to LF$ in InStatsArray
|
|
Convert @FM to ',' in LotHoldInfo
|
|
|
|
* OSWrite OutStatsArray to OutDir:OutFilename
|
|
* OSWrite InStatsArray to OutDir:InFilename
|
|
OSWrite LotHoldInfo to OutDir:HoldFilename
|
|
|
|
Return
|
|
|
|
Debug
|
|
HazeAvg = 'NA'
|
|
HazeAvg = Iconv(HazeAvg, 'MD3')
|
|
|
|
Return
|
|
|
|
|
|
ShipNo = 1234
|
|
DosTable1 = 'C:\OIReports\W':ShipNo:'.TSV'
|
|
DosTable2 = Environment_Services('GetReportsRootPath') : '\W':ShipNo:'.TSV'
|
|
DosTable = Environment_Services('GetReportsRootPath') : '\T':ShipNo:'.csv'
|
|
DataOut = 'Hello World'
|
|
OSOPEN DosTable TO DOSFile THEN
|
|
OSWrite DataOut ON DosTable ;* Clear file it was already there
|
|
END ELSE
|
|
OSWrite DataOut ON DosTable ;* Create the file if it wasn't
|
|
OSOPEN DosTable TO DOSFile ELSE
|
|
ErrorMsg = "Unable to open ":QUOTE(DosTable):" in Export_TSV routine."
|
|
RETURN
|
|
END
|
|
END
|
|
|
|
Return
|
|
|
|
|
|
Debug
|
|
|
|
hTable = Database_Services('GetTableHandle', 'SCHED_DET')
|
|
Activate_Save_Select('SRP')
|
|
EOF = False$
|
|
IDList = ''
|
|
IDCount = 0
|
|
* Select hTable
|
|
Loop
|
|
Readnext ID else EOF = True$
|
|
Until EOF
|
|
Delete hTable, ID then
|
|
IDCount += 1
|
|
Send_Info('Deleted ' : IDCount)
|
|
end else
|
|
Debug
|
|
end
|
|
* Row = Database_Services('ReadDataRow', 'SCHED_DET', ID)
|
|
* Database_Services('DeleteDataRow', 'SCHED_DET', ID, True$)
|
|
* If Error_Services('HasError') then
|
|
* Message = Error_Services('GetMessage')
|
|
* end
|
|
Repeat
|
|
|
|
Debug
|
|
|
|
Return
|
|
|
|
Open 'DICT.WO_MAT' to @Dict else Null
|
|
WO = 164826
|
|
Cassette = 38
|
|
@ID = WO : '*' : Cassette
|
|
@RECORD = Database_Services('ReadDataRow', 'WO_MAT', @ID)
|
|
Debug
|
|
WOLogRow = Database_Services('ReadDataRow', 'WO_LOG', {WO_NO})
|
|
ReactType = WOLogRow<WO_LOG_REACT_TYPE$>
|
|
If ReactType _EQC 'EPP' OR ReactType _EQC 'EpiPro' then
|
|
WOStepKeyID = WOLogRow<WO_LOG_WO_STEP_KEY$>
|
|
WOStepRow = Database_Services('ReadDataRow', 'WO_STEP', WOStepKeyID)
|
|
RDSNo = WOStepRow<WO_STEP_RDS_KEY$, Cassette>
|
|
ActionFlow = Xlate('REACT_RUN', RDSNo, 'LOAD_WFR_CNT', 'X')
|
|
end else
|
|
ActionFlow = ''
|
|
end
|
|
|
|
Return
|
|
|
|
Debug
|
|
TOTAL_WAFERS_EXPECTED = 79.83
|
|
Round = SRP_Math('ROUND', (TOTAL_WAFERS_EXPECTED / 25), '', 0)
|
|
ActionFlow = Round * 25
|
|
|
|
Return
|
|
|
|
Debug
|
|
Activate_Save_Select('SRP')
|
|
* RList('SELECT REACTOR_PERFORMANCE WITH SCHEDULE_DATE FROM "11/01/2017" TO "11/02/2017"', 5, '', '', '')
|
|
EOF = False$
|
|
Loop
|
|
Readnext PerfKeyID else EOF = True$
|
|
Until EOF
|
|
PerfRow = Database_Services('ReadDataRow', 'REACTOR_PERFORMANCE', PerfKeyID, True$, 0)
|
|
PerfRow<2> = 0
|
|
Database_Services('WriteDataRow', 'REACTOR_PERFORMANCE', PerfKeyID, PerfRow, True$, False$, True$)
|
|
Repeat
|
|
|
|
Return
|
|
|
|
EQU TARGET_ACTIVELIST$ TO 5
|
|
Debug
|
|
Open 'REACT_MODE' to hReactMode then
|
|
Activate_Save_Select('SRP')
|
|
EOF = False$
|
|
PrevReactNo = ''
|
|
Loop
|
|
Readnext KeyID else EOF = True$
|
|
Until EOF
|
|
Read Row from hReactMode, KeyID then
|
|
* Write Row to hReactModeBack, KeyID else Debug
|
|
ReactNo = KeyID[1, '*']
|
|
StartDTM = KeyID[Col2() + 1, '*']
|
|
If (PrevReactNo NE ReactNo) then
|
|
// This is the first REACT_MODE row for the current reactor. Do not update anything but read its data for
|
|
// the following REACT_MODE row.
|
|
end else
|
|
// Take the "start" data fields from the previous (i.e., newer) row and put it in the "stop" data fields
|
|
// in the current row.
|
|
PrevReactNo = PrevKeyID[1, '*']
|
|
PrevStartDTM = PrevKeyID[Col2() + 1, '*']
|
|
Row<6> = PrevStartDTM ; // Stop DTM
|
|
Row<7> = PrevRow<1> ; // Stop User
|
|
Row<8> = PrevRow<2> ; // Stop Note
|
|
Row<9> = PrevRow<3> ; // Stop REACT_UTIL Key ID
|
|
Row<10> = PrevRow<4> ; // Stop REACTOR_LOG Key ID
|
|
Write Row to hReactMode, KeyID else Debug
|
|
end
|
|
end
|
|
PrevReactNo = ReactNo
|
|
PrevKeyID = KeyID
|
|
PrevRow = Row
|
|
Repeat
|
|
end
|
|
|
|
|
|
|
|
Return
|
|
Debug
|
|
|
|
OtherEvents = 1 : @VM : 'A' : @FM : 2 : @VM : 'A' : @FM : 3 : @VM : 'A' : @FM : 4 : @VM : 'A' : @FM
|
|
WorkOrderEvents = 1 : @VM : 'A' : @FM : 2 : @VM : 'A' : @FM : 3 : @VM : 'A'
|
|
OtherEvents = SRP_Array('Join', OtherEvents, WorkOrderEvents, 'NOT', @FM)
|
|
|
|
|
|
Return
|
|
|
|
Debug
|
|
Open 'SCHED_DET' to hSchedDet then
|
|
Select hSchedDet
|
|
EOF = 0
|
|
Loop
|
|
Readnext ID else EOF = 1
|
|
Until EOF
|
|
Read Row from hSchedDet, ID then
|
|
DayLengthCode = Row<SCHED_DET_DAY_LENGTH_CODE$>
|
|
If DayLengthCode = '' then DayLengthCode = 4
|
|
Row<SCHED_DET_START_TIME$> = 0
|
|
Row<SCHED_DET_END_TIME$> = 86400 * (DayLengthCode * .25)
|
|
Write Row to hSchedDet, ID else Debug
|
|
end
|
|
Repeat
|
|
end
|
|
|
|
Return
|
|
|
|
WafersRemainings = '0,2,4,6,8,10,12,14,15,17,19,20,24,28,31,38,42,55,100'
|
|
WafersPerDay = 10
|
|
For Each WafersRemaining in WafersRemainings using ','
|
|
DaysNeeded1 = SRP_Math('ROUND', (WafersRemaining / WafersPerDay) * 4, '', 0) / 4
|
|
DaysNeeded2 = SRP_Math('NONE', (WafersRemaining / WafersPerDay) * 4, '', 0) / 4
|
|
Next NumberOfDays
|
|
|
|
Debug
|
|
|
|
Return
|
|
|
|
Open 'SCHED_DET' to hSchedDet then
|
|
Open 'APP_INFO' to hAppInfo then
|
|
RLIST('SELECT APP_INFO WITH @ID STARTING 59', 5, '', '', '')
|
|
eof = 0
|
|
Loop
|
|
Readnext ID else eof = 1
|
|
Until EOF
|
|
If Field(ID, '*', 2) LT 18094 then
|
|
Read Rec from hAppInfo, ID then
|
|
Write Rec to hSchedDet, ID else Debug
|
|
end
|
|
end
|
|
Repeat
|
|
end
|
|
end
|
|
|
|
Debug
|
|
Complete = '17.70833333333'
|
|
Complete = Oconv(Iconv(Complete, 'MD2'), 'MD2')
|
|
|
|
Return
|
|
|
|
|
|
KeyID = '31*18172*1'
|
|
Row = '164299'
|
|
Row<8> = 'OrangeRed'
|
|
* Debug
|
|
Open 'SCHED_DET' to hSchedDet then
|
|
* hSchedDet = Delete(hSchedDet, 1, 1, 1)
|
|
SRP_Stopwatch('Reset')
|
|
For Loop = 1 to 50
|
|
SRP_Stopwatch('Start', 'Write')
|
|
Write Row to hSchedDet, KeyID else Debug
|
|
SRP_Stopwatch('Stop', 'Write')
|
|
* SRP_Stopwatch('Start', 'Read')
|
|
Read Row from hSchedDet, KeyID else Null
|
|
* SRP_Stopwatch('Stop', 'Read')
|
|
SRP_Stopwatch('Start', 'Delete')
|
|
Delete hSchedDet, KeyID else Null
|
|
SRP_Stopwatch('Stop', 'Delete')
|
|
Next Loop
|
|
SRP_Stopwatch('ShowAll')
|
|
end
|
|
|
|
Return
|
|
|
|
|
|
Debug
|
|
NumberOfEvents = SRP_Math('NONE', 0.00 + .49, '', 0)
|
|
NumberOfEvents = SRP_Math('NONE', 0.25 + .49, '', 0)
|
|
NumberOfEvents = SRP_Math('NONE', 0.50 + .49, '', 0)
|
|
NumberOfEvents = SRP_Math('NONE', 0.75 + .49, '', 0)
|
|
NumberOfEvents = SRP_Math('NONE', 1.00 + .49, '', 0)
|
|
NumberOfEvents = SRP_Math('NONE', 1.25 + .49, '', 0)
|
|
NumberOfEvents = SRP_Math('NONE', 1.50 + .49, '', 0)
|
|
NumberOfEvents = SRP_Math('NONE', 1.75 + .49, '', 0)
|
|
|
|
Return
|
|
|
|
|
|
* Debug
|
|
SchedKeys = Schedule_Services('GetScheduleDetailKeys', 18108, '', '52', '', True$)
|
|
Schedule_Services('DeleteScheduleDetail', SchedKeys)
|
|
|
|
Return
|
|
|
|
|
|
Debug
|
|
call Activate_Save_Select('FIX_RDS')
|
|
Open 'SCHED_DET' to hSchedDet then
|
|
EOF = 0
|
|
Loop
|
|
Readnext ID else EOF = 1
|
|
Until EOF
|
|
Read Rec from hSchedDet, ID then
|
|
Delete hSchedDet, ID else Null
|
|
end
|
|
Repeat
|
|
end
|
|
|
|
Return ''
|
|
|
|
|
|
call Detach_Table('SCHED_DET')
|
|
call Alias_Table('APPDATA', 'LSL2', 'SCHED_DET_TEST', 'SCHED_DET')
|
|
call Memory_Services('ReleaseHashTable')
|
|
|
|
Return ''
|
|
|
|
|
|
Debug
|
|
|
|
* OSRead MPWArray from 'E:\apps\Temp\OpenInsight (Parts) v12.txt' then
|
|
*
|
|
* Convert \09\ to @VM in MPWArray
|
|
* Swap \0D0A\ with @FM in MPWArray
|
|
* ReactorTypes = 'ASM,ASM+,HTR,EPIPRO'
|
|
*
|
|
* Open 'EPI_PART' to hEpiPart then
|
|
* For Each MPWRow in MPWArray using @FM
|
|
* EpiPartNo = MPWRow<0, 1>
|
|
* For TypeCnt = 1 to 4
|
|
* MPWVal = MPWRow<0, TypeCnt + 1>
|
|
* If MPWVal NE '' then
|
|
* ReactorType = Field(ReactorTypes, ',', TypeCnt)
|
|
* Epi_Part_Services('SetMinutesPerWaferScheduler', EpiPartNo, ReactorType, MPWVal)
|
|
* end
|
|
* Next TypeCnt
|
|
* Next MPWRow
|
|
* end
|
|
*
|
|
* end
|
|
*
|
|
* Return
|
|
* Debug
|
|
* ReactorTypes = 'ASM,ASM+,HTR,EPIPRO'
|
|
* Call Activate_Save_Select('EPI_PARTS')
|
|
* MPWArray = ''
|
|
* Open 'EPI_PART' to hEpiPart then
|
|
* EOF = False$
|
|
* Loop
|
|
* Readnext EpiPartNo else EOF = True$
|
|
* If EpiPartNo EQ '567930' then Debug
|
|
* Until EOF
|
|
* MPWArray := EpiPartNo : \09\
|
|
* For Each ReactorType in ReactorTypes using ','
|
|
* MPW = Epi_Part_Services('GetMinutesPerWaferScheduler', EpiPartNo, ReactorType)
|
|
* MPWArray := MPW : \09\
|
|
* Next Each
|
|
* MPWArray[-1, 1] = \0D0A\
|
|
* Repeat
|
|
* MPWArray[-2, 2] = ''
|
|
* end
|
|
*
|
|
* OSWrite MPWArray to 'E:\apps\Temp\OpenInsight (Parts) 3.txt'
|
|
*
|
|
* Return
|
|
|
|
call Epi_Part_Services('SetReactorUtilization', 'ASM', 53)
|
|
call Epi_Part_Services('SetReactorUtilization', 'ASM+', 58)
|
|
call Epi_Part_Services('SetReactorUtilization', 'HTR', 58)
|
|
call Epi_Part_Services('SetReactorUtilization', 'EpiPro', 52)
|
|
|
|
|
|
Return
|
|
|
|
|
|
Call Activate_Save_Select('TEST2')
|
|
Open 'RDS_TEST' to hRDSTest then
|
|
EOF = False$
|
|
Loop
|
|
Readnext ID else EOF = True$
|
|
Until EOF
|
|
Read Record from hRDSTest, ID then
|
|
* If Record<132> NE '' then Debug
|
|
Record<130> = Record<130>[-1, 'B' : @VM]
|
|
Record<131> = Record<131>[-1, 'B' : @VM]
|
|
Record<132> = Record<132>[-1, 'B' : @VM]
|
|
Record<134> = Record<134>[-1, 'B' : @VM]
|
|
Write Record to hRDSTest, ID else Debug
|
|
end
|
|
Repeat
|
|
end
|
|
|
|
Return
|
|
|
|
|
|
|
|
|
|
|
|
******************************************
|
|
* Update the new WO_LOG Sched Det Fields
|
|
******************************************
|
|
OPEN 'SCHED_DET' TO SchedDetTable THEN
|
|
Done = 0
|
|
* RLIST('SELECT WO_MAT WITH WO_NO > 138176',TARGET_ACTIVELIST$,'','','')
|
|
RLIST('SELECT SCHED_DET BY @ID',TARGET_ACTIVELIST$,'','','')
|
|
NumRowsUpdated = 0
|
|
LOOP
|
|
Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield()
|
|
Sleepery(500)
|
|
READNEXT SchedDetKeyID ELSE Done = 1
|
|
UNTIL Done
|
|
READ SchedDetRec FROM SchedDetTable,SchedDetKeyID THEN
|
|
WOLogKeyID = SchedDetRec<SCHED_DET_WO_NO$>
|
|
if (WOLogKeyID) then
|
|
If Database_Services('GetKeyIDLock', 'WO_LOG', WOLogKeyID, True$) then
|
|
WOLogRow = Database_Services('ReadDataRow', 'WO_LOG', WOLogKeyID)
|
|
If Error_Services('NoError') then
|
|
Locate SchedDetKeyID in WOLogRow<WO_LOG_SCHED_DET_KEYIDS$> using @VM setting vPos else
|
|
WOLogRow = Insert(WOLogRow, WO_LOG_SCHED_DET_KEYIDS$, vPos, 0, SchedDetKeyID)
|
|
Database_Services('WriteDataRow', 'WO_LOG', WOLogKeyID, WOLogRow, True$, True$)
|
|
end
|
|
end
|
|
Database_Services('ReleaseKeyIDLock', 'WO_LOG', WOLogKeyID)
|
|
end
|
|
end
|
|
END
|
|
NumRowsUpdated+= 1
|
|
REPEAT
|
|
END
|
|
return
|
|
|
|
* SchedDetKeys = '59*18055*2' : @FM
|
|
* SchedDetKeys := '59*18056*1' : @FM
|
|
* SchedDetKeys := '60*18057*2' : @FM
|
|
* SchedDetKeys := '60*18058*2' : @FM
|
|
* SchedDetKeys := '60*18059*2' : @FM
|
|
* SchedDetKeys := '60*18060*2' : @FM
|
|
* SchedDetKeys := '60*18061*2' : @FM
|
|
* SchedDetKeys := '60*18062*2' : @FM
|
|
* SchedDetKeys := '60*18063*2' : @FM
|
|
* SchedDetKeys := '60*18064*2'
|
|
*
|
|
SchedDetKeys = '100*18055*2' : @FM
|
|
SchedDetKeys := '100*18056*1' : @FM
|
|
SchedDetKeys := '101*18057*2' : @FM
|
|
SchedDetKeys := '101*18058*2' : @FM
|
|
SchedDetKeys := '101*18059*2' : @FM
|
|
SchedDetKeys := '101*18060*2' : @FM
|
|
SchedDetKeys := '101*18061*2' : @FM
|
|
SchedDetKeys := '101*18062*2' : @FM
|
|
SchedDetKeys := '101*18063*2' : @FM
|
|
SchedDetKeys := '101*18064*2'
|
|
Debug
|
|
For Each SchedDetKey in SchedDetKeys using @FM
|
|
SchedDetRow = Schedule_Services('GetScheduleDetail', SchedDetKey)
|
|
If Error_Services('NoError') then
|
|
ReactorNo = SchedDetKey[1, '*']
|
|
StartDate = SchedDetKey[Col2() + 1, '*']
|
|
SeqNo = SchedDetKey[Col2() + 1, '*']
|
|
If ReactorNo EQ 59 then NewReactorNo = 100
|
|
If ReactorNo EQ 100 then NewReactorNo = 59
|
|
If ReactorNo EQ 60 then NewReactorNo = 101
|
|
If ReactorNo EQ 101 then NewReactorNo = 60
|
|
NewSchedDetKey = NewReactorNo : '*' : StartDate : '*' : SeqNo
|
|
Schedule_Services('SetScheduleDetail', NewSchedDetKey, SchedDetRow)
|
|
If Error_Services('NoError') then
|
|
Schedule_Services('DeleteScheduleDetail', SchedDetKey)
|
|
If Error_Services('HasError') then
|
|
Error_Services('DisplayError')
|
|
end
|
|
end else
|
|
Error_Services('DisplayError')
|
|
end
|
|
end else
|
|
Error_Services('DisplayError')
|
|
end
|
|
Next SchedDetKey
|
|
|
|
Return
|
|
|
|
|
|
SRP_Stopwatch('Reset')
|
|
SRP_Stopwatch('Start', 'Write')
|
|
StartDate = Date()
|
|
Open 'SCHED_DET' to hSchedDet then
|
|
SchedDetRow = '999999' : @FM : @FM : @FM
|
|
|
|
For RowCnt = 1 to 5
|
|
SchedDetKey = 100 : '*' : StartDate + RowCnt : '*' : 1
|
|
call Database_Services('WriteDataRow', 'SCHED_DET', SchedDetKey, SchedDetRow, True$)
|
|
* call Database_Services('DeleteDataRow', 'SCHED_DET', SchedDetKey, True$)
|
|
Next RowCnt
|
|
|
|
SchedDetRow = '888888' : @FM : @FM : @FM
|
|
|
|
For RowCnt = 1 to 5
|
|
SchedDetKey = 101 : '*' : StartDate + RowCnt : '*' : 1
|
|
call Database_Services('WriteDataRow', 'SCHED_DET', SchedDetKey, SchedDetRow, True$)
|
|
* call Database_Services('DeleteDataRow', 'SCHED_DET', SchedDetKey, True$)
|
|
Next RowCnt
|
|
end
|
|
SRP_Stopwatch('Stop', 'Write')
|
|
SRP_Stopwatch('ShowAll')
|
|
|
|
Return
|
|
|
|
|
|
*****************************************
|
|
* Find old Metrology Records not in use *
|
|
*****************************************
|
|
SmallestMetKey = 1000000
|
|
Counter = 0
|
|
OPEN 'WO_MAT' TO WOMatTable THEN
|
|
Done = 0
|
|
RLIST('SELECT WO_MAT WITH WO_NO > 138176',TARGET_ACTIVELIST$,'','','')
|
|
LOOP
|
|
Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield()
|
|
READNEXT WOMatKey ELSE Done = 1
|
|
UNTIL Done
|
|
Counter = Counter + 1
|
|
MetKeys = XLATE('WO_MAT', WOMatKey, 'CASS_RDS_MET_KEYS', 'X')
|
|
If (MetKeys NE '') then
|
|
MetKeysCnt = DCount(MetKeys, @VM)
|
|
FOR MetKeysIndex = 1 TO MetKeysCnt
|
|
MetKey = TRIM(MetKeys<1, MetKeysIndex>)
|
|
if (MetKey NE '') AND (MetKey < SmallestMetKey) then
|
|
SmallestMetKey = MetKey
|
|
end
|
|
NEXT MetKeysIndex
|
|
end
|
|
* If Counter > 5000 then
|
|
* Errmsg("WO_MAT = ": WOMatKey : " - " : SmallestMetKey)
|
|
* Counter = 0
|
|
* Debug
|
|
* end
|
|
REPEAT
|
|
Errmsg("WO_MAT = ": WOMatKey : " - " : SmallestMetKey)
|
|
END
|
|
return
|
|
|
|
******************************************
|
|
* Update the new WO_LOG Hot Lot data field
|
|
******************************************
|
|
OPEN 'WO_MAT' TO WOMatTable THEN
|
|
Done = 0
|
|
* RLIST('SELECT WO_MAT WITH WO_NO > 138176',TARGET_ACTIVELIST$,'','','')
|
|
RLIST('SELECT WO_MAT WITH WO_NO > 162069',TARGET_ACTIVELIST$,'','','')
|
|
LOOP
|
|
Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield(); Yield()
|
|
READNEXT WOMatKey ELSE Done = 1
|
|
UNTIL Done
|
|
READ WOMatRec FROM WOMatTable,WOMatKey THEN
|
|
HotLot = WOMatRec<WO_MAT_HOT_LOT$>
|
|
if (HotLot) then
|
|
WOMatRec<WO_MAT_HOT_LOT$> = 0
|
|
obj_Tables('WriteRec','WO_MAT':@RM:WOMatKey:@RM:@RM:WOMatRec)
|
|
WOMatRec<WO_MAT_HOT_LOT$> = 1
|
|
obj_Tables('WriteRec','WO_MAT':@RM:WOMatKey:@RM:@RM:WOMatRec)
|
|
end
|
|
END
|
|
REPEAT
|
|
END
|
|
return
|
|
|
|
* NextFS = 'RTP57'
|
|
* NewFSList = 'RTP57'
|
|
* Open 'RDS_TEST' to Handle then
|
|
* Handle = Handle<1, 2, 1>[-1, 'B' : \0D\]
|
|
* Handle = \0D\ : Handle[1, 27]
|
|
* Name = '1000141'
|
|
* OrigRecord = ''
|
|
* ActionStatus = 1
|
|
* Call @NextFS(READO.RECORD, NewFSList, Handle, Name, FMC, OrigRecord, ActionStatus)
|
|
* end
|
|
|
|
Open 'EPI_PART' to hHandle then
|
|
Name = '892593'
|
|
hHandle = hHandle<1, 2, 1>[-1, 'B' : \0D\]
|
|
hHandle = \0D\ : hHandle[1, 27]
|
|
* Status
|
|
Call RTP57(1, 'RTP57', hHandle, Name, FMC, Record, Status)
|
|
end
|
|
|
|
Debug
|
|
Return
|
|
|
|
|
|
Goto FixRDSRecords
|
|
|
|
OPEN 'DICT.RDS' TO DictVar ELSE
|
|
debug
|
|
GOTO Bail
|
|
END
|
|
|
|
OPEN 'RDS' TO RDSTable ELSE
|
|
debug
|
|
GOTO Bail
|
|
END
|
|
|
|
OPEN 'WO_WFR' TO WfrTable ELSE
|
|
debug
|
|
GOTO Bail
|
|
END
|
|
|
|
**************
|
|
FixRDSRecords:
|
|
**************
|
|
|
|
********************
|
|
* Input Parameters *
|
|
********************
|
|
WONo = '163710'
|
|
RONos = '1'
|
|
NewPONo = 'NA'
|
|
NewCustNo = '6874'
|
|
NewPSNNo = '3524'
|
|
NewPartNo = 'WEP860778IRE'
|
|
NewEpiPartNo = 'WEP860778IRE'
|
|
NewShipDate = '04/18/2017'
|
|
|
|
CONVERT ',' TO @VM IN RONos
|
|
|
|
**********************
|
|
* Fix WO_MAT Records *
|
|
**********************
|
|
OPEN 'WO_MAT' TO WOMatTable THEN
|
|
CassettesCount = COUNT(RONos,@VM) + (RONos NE '')
|
|
FOR CassettesLoopIndex = 1 TO CassettesCount
|
|
WOMatKey = WONo:'*':RONos<1,CassettesLoopIndex>
|
|
READ WOMatRec FROM WOMatTable,WOMatKey THEN
|
|
Msg(WOMatKey : ' Replace ' : WOMatRec<WO_MAT_CUST_PART_NO$> : ' with ' : NewPartNo)
|
|
WOMatRec<WO_MAT_CUST_PART_NO$> = NewPartNo /* Line #003 */
|
|
obj_Tables('WriteRec','WO_MAT':@RM:WOMatKey:@RM:@RM:WOMatRec)
|
|
END
|
|
NEXT CassettesLoopIndex
|
|
END
|
|
|
|
***********************
|
|
* Fix WO_STEP Records *
|
|
***********************
|
|
OPEN 'WO_STEP' TO WOStepTable THEN
|
|
WOStepKey = WONo:'*1'
|
|
READ WOStepRec FROM WOStepTable,WOStepKey THEN
|
|
Msg(WOStepKey : ' Replace ' : WOStepRec<WO_STEP_PROD_SPEC_ID$> : ' with ' : NewPSNNo)
|
|
WOStepRec<WO_STEP_PROD_SPEC_ID$> = NewPSNNo /* Line #001 */
|
|
obj_Tables('WriteRec','WO_STEP':@RM:WOStepKey:@RM:@RM:WOStepRec)
|
|
END
|
|
END
|
|
|
|
*******************
|
|
* Fix RDS Records *
|
|
*******************
|
|
OPEN 'RDS' TO RDSTable THEN
|
|
Done = 0
|
|
RLIST('SELECT REACT_RUN WITH WO_NO = ':QUOTE(WONo):' ',TARGET_ACTIVELIST$,'','','')
|
|
LOOP
|
|
READNEXT RDSNo ELSE Done = 1
|
|
UNTIL Done
|
|
READ RDSRec FROM RDSTable,RDSNo THEN
|
|
PONo = RDSRec<RDS_PO$>
|
|
RONo = XLATE('RDS',RDSNo,'RUN_ORDER_NUM','X')
|
|
LOCATE RONo IN RONos USING @VM SETTING Pos THEN
|
|
Msg('WONo: ' : WONo : ' / RDSNo: ' : RDSNo : ' / RONo: ' : RONo : ' Replace ' : RDSRec<RDS_PROD_SPEC_ID$> : ' with ' : NewPSNNo)
|
|
RDSRec<RDS_PO$> = NewPONo /* Line #008 */
|
|
RDSRec<RDS_CUST_NO$> = NewCustNo /* Line #009 */
|
|
RDSRec<RDS_PROD_SPEC_ID$> = NewPSNNo /* Line #010 */
|
|
RDSRec<RDS_PART_NUM$> = NewPartNo /* Line #114 */
|
|
obj_Tables('WriteRec','RDS':@RM:RDSNo:@RM:@RM:RDSRec)
|
|
END
|
|
END
|
|
REPEAT
|
|
END
|
|
|
|
**********************
|
|
* Fix WO_LOG Records *
|
|
**********************
|
|
OPEN 'WO_LOG' TO WOLogTable THEN
|
|
WOLogKey = WONo
|
|
READ WOLogRec FROM WOLogTable,WOLogKey THEN
|
|
Msg('WOLogKey: ':WOLogKey:' Replace ' : WOLogRec<WO_LOG_CUST_NO$> : ' with ' : NewCustNo)
|
|
WOLogRec<WO_LOG_CUST_NO$> = NewCustNo /* Line #003 */
|
|
WOLogRec<WO_LOG_COMMIT_DATE$> = ICONV(NewShipDate,'D4/') /* Line #014 */
|
|
WOLogRec<WO_LOG_EPI_PART_NO$> = NewEpiPartNo /* Line #048 */
|
|
WOLogRec<WO_LOG_CUST_PO_NO$> = NewPONo /* Line #051 */
|
|
WOLogRec<WO_LOG_CUST_PART_NO$> = NewPartNo /* Line #054 */
|
|
obj_Tables('WriteRec','WO_LOG':@RM:WOLogKey:@RM:@RM:WOLogRec)
|
|
END
|
|
END
|
|
|
|
Debug
|
|
|
|
GoTo Bail
|
|
|
|
|
|
*********************************
|
|
|
|
DEBUG
|
|
|
|
SELECT RDSTable
|
|
|
|
Done = 0
|
|
RecCnt = 0
|
|
LOOP
|
|
READNEXT RDSNo ELSE Done = 1
|
|
UNTIL Done
|
|
RecCnt += 1
|
|
|
|
ReactType = XLATE('RDS',RDSNo,'REACTOR_TYPE','X')
|
|
|
|
IF ReactType = 'EPP' THEN
|
|
|
|
READ RDSRec FROM RDSTable,RDSNo THEN
|
|
|
|
|
|
WONo = RDSRec<RDS_WO$>
|
|
|
|
pktCnt = COUNT(RDSRec<RDS_POCKET$>,@VM) + (RDSRec<RDS_POCKET$> NE '')
|
|
|
|
FOR I = 1 TO pktCnt
|
|
|
|
InCassNo = RDSRec<RDS_IN_CASS_NO$,I>
|
|
InSlotNo = RDSRec<RDS_IN_SLOT_NO$,I>
|
|
|
|
WfrKey = WONo:'*':InCassNo:'*':InSlotNo
|
|
|
|
READ WfrRec FROM WfrTable,WfrKey ELSE WfrRec = ''
|
|
|
|
WfrRec<WO_WFR_OUT_CASS_NO$> = RDSRec<RDS_OUT_CASS_NO$,I>
|
|
WfrRec<WO_WFR_OUT_SLOT_NO$> = RDSRec<RDS_OUT_SLOT_NO$,I>
|
|
WfrRec<WO_WFR_POCKET$> = RDSRec<RDS_POCKET$,I>
|
|
WfrRec<WO_WFR_POCKET_CHAR$> = RDSRec<RDS_POCKET_CHAR$,I>
|
|
WfrRec<WO_WFR_ZONE$> = RDSRec<RDS_ZONE$,I>
|
|
|
|
*WRITE WfrRec ON WfrTable,WfrKey THEN
|
|
Send_Info(RecCnt)
|
|
*END
|
|
|
|
|
|
NEXT I
|
|
END ;* End of RDS Record read
|
|
END
|
|
REPEAT
|
|
|
|
|
|
|
|
GOTO Bail
|
|
|
|
OPEN 'WO_MAT' TO WOMatTable ELSE
|
|
debug
|
|
GOTO Bail
|
|
END
|
|
|
|
RLIST('SELECT WO_MAT WITH WO_NO = "161511" ',5,'','','')
|
|
|
|
|
|
Done = 0
|
|
RecCnt = 0
|
|
LOOP
|
|
READNEXT WOMatKey ELSE Done = 1
|
|
UNTIL Done
|
|
RecCnt += 1
|
|
|
|
READ WOMatRec FROM WOMatTable,WOMatKey THEN
|
|
|
|
WOMatRec<WO_MAT_CUST_PART_NO$> = CustPartNo
|
|
WRITE WOMatRec ON WOMatTable,WOMatKey THEN
|
|
Send_Dyn('WO_Mat Key: ':WOMatKey:' updated.')
|
|
END
|
|
END
|
|
|
|
|
|
|
|
REPEAT
|
|
|
|
|
|
|
|
GOTO Bail
|
|
|
|
|
|
RLIST('SELECT REACT_RUN WITH WO_NO = "161511" ',5,'','','')
|
|
|
|
Done = 0
|
|
RecCnt = 0
|
|
LOOP
|
|
READNEXT RDSNo ELSE Done = 1
|
|
UNTIL Done
|
|
RecCnt += 1
|
|
Send_Info(RecCnt)
|
|
WONo = XLATE('REACT_RUN',RDSNo,'WO_NO','X')
|
|
|
|
*React_Run_RDS(RDSNo) ;* Recreates basic RDS records from REACT_RUN records
|
|
|
|
******************************************************
|
|
|
|
PS_No = '3223'
|
|
|
|
|
|
|
|
PSRec = XLATE('PROD_SPEC',PS_No,'','X')
|
|
|
|
ReactorType = PSRec<PROD_SPEC_REACTOR_TYPE$> ;* This isn't used anwhere in the program 8/27/2014 JCH
|
|
*RDSRec<RDS_SPECIAL_INST$> = PSRec<PROD_SPEC_SPEC_INST$> ;* 3/25/2013 jch
|
|
*RDSRec<RDS_SPEC_TYPE_ORIG$> = XLATE('PROD_SPEC',PS_No,'SPEC_TYPE','X')
|
|
|
|
Send_Info('Retrieving PSN Layer Properties...')
|
|
|
|
LayerSpecs = obj_Prod_Spec('GetLayerProp',PS_No:@RM:@RM:1) ;* Returns specs for all layers in internal format
|
|
|
|
|
|
* LayerSpecs is @RM between layers, @FM between fields, LayerSet ID is in the first Field and needs to peeled off
|
|
* before the equates match up correctly
|
|
|
|
* Prod_Spec table has layer specs all in one field
|
|
* RDS has First layer stuff in individual fields and then has 2 and 3 shoved into Field 33 (Layer Info)
|
|
|
|
LayerSpec = FIELD(LayerSpecs,@RM,1) ;* Take the first Layer
|
|
LayerSet = FIELD(LayerSpec,@FM,1) ;* Not used here but shown for clarity
|
|
LayerSpec = FIELD(LayerSpec,@FM,2,99) ;* LayerSpec without the LayerSet
|
|
|
|
RecipeNo = LayerSpec<PRS_LAYER_RECIPE$>
|
|
RecipeRec = XLATE('RECIPE',RecipeNo,'','X') ;* This used in 2nd and 3rd layer stuff (in error it appears)
|
|
|
|
*RDSRec<RDS_OVERGROW_REQ$> = LayerSpec<PRS_LAYER_RES_MEASUREMENT$,9> ;* JCH 2/27/2006
|
|
|
|
|
|
*IF QXJFlag THEN
|
|
*RDSRec<RDS_QXJ_POST$> = 0 ;* And here a couple of minor cluster operations
|
|
*END
|
|
|
|
*IF CustNo = '621' AND CassNo = 1 THEN
|
|
*RDSRec<RDS_QXJ_POST$> = 0
|
|
*END
|
|
|
|
DEBUG
|
|
|
|
FOR I = 1 TO COUNT(LayerSpecs,@RM) + (LayerSpecs NE '')
|
|
LayerSpec = FIELD(LayerSpecs,@RM,I) ;* Take the Ith Layer
|
|
LayerSet = FIELD(LayerSpec,@FM,1)
|
|
LayerSpec = FIELD(LayerSpec,@FM,2,99) ;* LayerSpec without the LayerSet
|
|
|
|
IF LayerSet = I THEN NoCombinedLayerFlag = 1 ELSE NoCombinedLayerFlag = 0
|
|
|
|
Send_Info('Creating RDS Layer ':LayerSet:'...')
|
|
|
|
obj_RDS_Layer('Create',RDSNo:@RM:LayerSet:@RM:PS_No:@RM:NoCombinedLayerFlag)
|
|
|
|
*RDSRec<RDS_RDS_LAYER_KEYS$,I> = RDSNo:'*':LayerSet ;* Added 4/17/2006 JCH
|
|
|
|
Send_Info('Creating Metrology for Layer Set ':LayerSet:'...')
|
|
|
|
obj_RDS_Test('Create',RDSNo:@RM:LayerSet:@RM:PS_No)
|
|
|
|
NEXT I
|
|
|
|
*Send_Info('Saving RDS record...')
|
|
|
|
*obj_Tables('WriteRec','RDS':@RM:RDSNo:@RM:@RM:RDSRec)
|
|
|
|
|
|
REPEAT
|
|
|
|
GOTO Bail
|
|
|
|
|
|
* * * * * * * * * * * * * *
|
|
|
|
|
|
Result = ''
|
|
|
|
RLIST('SELECT RDS WITH DATE_OUT >= "20 FEB 2014" BY SEQ ',5,'','','')
|
|
|
|
Done = 0
|
|
RecCnt = 0
|
|
LOOP
|
|
READNEXT RDSNo ELSE Done = 1
|
|
UNTIL Done
|
|
RecCnt += 1
|
|
Send_Info(RecCnt)
|
|
READ RDSRec FROM FileIn,RDSNo THEN
|
|
|
|
DateOut = RDSRec<RDS_DATE_OUT$>
|
|
ReactNo = RDSRec<RDS_REACTOR$>
|
|
TubeID = RDSRec<RDS_TUBE_ID$>
|
|
TubeGrade = RDSRec<RDS_TUBE_GRADE$>
|
|
SuscID = RDSRec<RDS_SUSCEPTOR_ID$>
|
|
|
|
/*
|
|
HistoryKeys = obj_React_Item_Hist('GetHistory',ReactNo:@RM:@RM:'T')
|
|
|
|
LOOP
|
|
HistKey = HistoryKeys<1,1>
|
|
RINo = FIELD(HistKey,'*',2)
|
|
InstDt = FIELD(HistKey,'*',3)[1,'.']
|
|
|
|
UNTIL DateOut >= InstDt OR HistoryKeys = ''
|
|
HistoryKeys = DELETE(HistoryKeys,1,1,0)
|
|
REPEAT
|
|
|
|
RITubeGrade = XLATE('REACT_ITEM',RINo,REACT_ITEM_TUBE_GRADE$,'X')
|
|
|
|
*Send_Dyn(ReactNo:' ':OCONV(DateOut,'D4/'):' ':OCONV(InstDt,'D4/'):' Tube No: ':RINo:' Grade: ':TubeGrade:'/':RITubeGrade)
|
|
|
|
RDSRec<RDS_TUBE_ID$> = RINo
|
|
RDSRec<RDS_TUBE_GRADE$> = RITubeGrade
|
|
*/
|
|
|
|
HistoryKeys = obj_React_Item_Hist('GetHistory',ReactNo:@RM:@RM:'S')
|
|
|
|
LOOP
|
|
HistKey = HistoryKeys<1,1>
|
|
RINo = FIELD(HistKey,'*',2)
|
|
InstDt = FIELD(HistKey,'*',3)[1,'.']
|
|
|
|
UNTIL DateOut >= InstDt OR HistoryKeys = ''
|
|
HistoryKeys = DELETE(HistoryKeys,1,1,0)
|
|
REPEAT
|
|
|
|
RDSRec<RDS_SUSCEPTOR_ID$> = RINo
|
|
|
|
*Send_Dyn(ReactNo:' ':OCONV(DateOut,'D4/'):' ':OCONV(InstDt,'D4/'):' Susc No: ':RINo:' Susc ID: ':SuscID)
|
|
*Send_Dyn(' ')
|
|
|
|
WRITE RDSRec ON FileIn,RDSNo THEN
|
|
NULL
|
|
END
|
|
|
|
END
|
|
REPEAT
|
|
|
|
GOTO Bail
|
|
|
|
**********************************
|
|
|
|
*RLIST('SELECT RDS WITH WO = "" ',5,'','','')
|
|
|
|
|
|
RLIST('SELECT RDS WITH WO <= "128597" ',5,'','','')
|
|
|
|
Done = 0
|
|
RecCnt = 0
|
|
LOOP
|
|
READNEXT RDSNo ELSE Done = 1
|
|
UNTIL Done
|
|
RecCnt += 1
|
|
Send_Info(RecCnt)
|
|
READ RDSRec FROM FileIn,RDSNo THEN
|
|
|
|
LSKeys = RDSRec<RDS_RDS_LAYER_KEYS$>
|
|
NCRKeys = RDSRec<RDS_NCR_KEYS$>
|
|
SurfScanKeys = RDSRec<RDS_SURFSCAN_KEYS$>
|
|
|
|
MetKeys = XLATE('RDS_LAYER',LSKeys,RDS_LAYER_RDS_TEST_KEYS$,'X')
|
|
|
|
|
|
IF NCRKeys NE '' THEN
|
|
OPEN 'NCR' TO NCRFile THEN
|
|
NCRCnt = COUNT(NCRKeys,@VM)
|
|
FOR NCR = 1 TO NCRCnt
|
|
DELETE NCRFile,NCRKeys<1,NCR> THEN
|
|
Send_Dyn(' NCR ':NCRKeys<1,NCR>:' deleted')
|
|
END
|
|
NEXT NCR
|
|
END
|
|
END ;* End of NCR section
|
|
|
|
IF SurfScanKeys NE '' THEN
|
|
OPEN 'SURFACE_SCAN' TO SurfScanTable THEN
|
|
ScanCnt = COUNT(SurfScanKeys,@VM) + (SurfScanKeys NE '')
|
|
FOR Scan = 1 TO ScanCnt
|
|
DELETE SurfScanTable,SurfScanKeys<1,Scan> THEN
|
|
Send_Dyn(' SURFACE_SCAN ':SurfScanKeys<1,Scan>:' deleted')
|
|
END
|
|
NEXT Scan
|
|
END ;* End of SURFACE_SCAN open
|
|
END ;* End of SurfScan sectioin
|
|
|
|
IF MetKeys NE '' THEN
|
|
CONVERT @VM TO ',' IN MetKeys
|
|
Send_Dyn(' Met Keys ':MetKeys:' deleted')
|
|
|
|
obj_RDS_Test('Delete',MetKeys)
|
|
|
|
END ;* End of check for MetKeys
|
|
|
|
IF LSKeys NE '' THEN
|
|
|
|
CONVERT @VM TO ',' IN LSKeys
|
|
Send_Dyn(' Layer Set Keys ':LSKeys:' deleted')
|
|
|
|
obj_RDS_Layer('Delete',LSKeys)
|
|
|
|
END ;* End of check for LSKeys
|
|
|
|
DELETE FileIn,RDSNo THEN
|
|
Send_Dyn('RDS ':RDSNo:' deleted')
|
|
END
|
|
END
|
|
|
|
|
|
REPEAT
|
|
|
|
|
|
GOTO Bail
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEBUG
|
|
Set_Status(0)
|
|
|
|
SELECT FileIn
|
|
|
|
RecCnt = 0
|
|
Done = 0
|
|
LOOP
|
|
READNEXT RDSKey ELSE Done = 1
|
|
UNTIL Done OR RecCnt > 5000
|
|
READ RDSRec FROM FileIn,RDSKey THEN
|
|
RecCnt += 1
|
|
Send_Info(RecCnt)
|
|
|
|
|
|
SCTool = RDSRec<RDS_SUB_PRE_CLEAN$>
|
|
|
|
IF SCTool[1,2] _EQC 'NO' THEN SCTool = ''
|
|
|
|
PreEpiSigs = RDSRec<RDS_PRE_EPI_SIG$>
|
|
|
|
IF RDSKey = 466635 THEN DEBUG
|
|
|
|
IF INDEX(PreEpiSigs,@VM, 1) THEN
|
|
|
|
PreCodes = RDSRec<RDS_PRE_CODE$>
|
|
PreEpiSigDates = RDSRec<RDS_PRE_EPI_SIG_DATE$>
|
|
PreEpiSigTimes = RDSRec<RDS_PRE_EPI_SIG_TIME$>
|
|
|
|
SigCnt = COUNT(PreEpiSigs,@VM) + (PreEpiSigs NE '')
|
|
|
|
PreSig = ''
|
|
PreSigDTM = ''
|
|
VerSig = ''
|
|
VerSigDTM = ''
|
|
|
|
FOR I = 1 TO SigCnt
|
|
IF I = 1 THEN
|
|
VerSig = RDSRec<RDS_PRE_EPI_SIG$,I>
|
|
VerSigDTM = ICONV(OCONV(RDSRec<RDS_PRE_EPI_SIG_DATE$,I>,'D4/'):' ':OCONV(RDSRec<RDS_PRE_EPI_SIG_TIME$,I>,'MTS'),'DT')
|
|
END ELSE
|
|
PreSig = RDSRec<RDS_PRE_EPI_SIG$,I>
|
|
PreSigDTM = ICONV(OCONV(RDSRec<RDS_PRE_EPI_SIG_DATE$,I>,'D4/'):' ':OCONV(RDSRec<RDS_PRE_EPI_SIG_TIME$,I>,'MTS'),'DT')
|
|
END
|
|
NEXT I
|
|
IF PreSig = '' THEN PreSig = VerSig
|
|
IF PreSigDTM = '' THEN PreSigDTM = VerSigDTM
|
|
|
|
Send_Dyn(RDSKey:'VerSig: ':VerSig:' ':VerSigDTM:' PreSig: ':PreSig:' ':PreSigDTM)
|
|
|
|
END ELSE
|
|
VerSig = RDSRec<RDS_PRE_EPI_SIG$>
|
|
VerSigDTM = ICONV(OCONV(RDSRec<RDS_PRE_EPI_SIG_DATE$>,'D4/'):' ':OCONV(RDSRec<RDS_PRE_EPI_SIG_TIME$>,'MTS'),'DT')
|
|
|
|
END
|
|
|
|
|
|
END
|
|
REPEAT
|
|
|
|
|
|
|
|
GOTO Bail
|
|
|
|
***********************8
|
|
|
|
RDSCnt = COUNT(RDSNos,@VM) + (RDSNos NE '')
|
|
|
|
FOR I = 1 TO RDSCnt
|
|
RDSNo = RDSNos<1,I>
|
|
READ RDSRec FROM FileIn,RDSNo THEN
|
|
RDSRec<RDS_STATUS$> = 'I'
|
|
RDSRec<RDS_POST_EPI_SIG$> = ''
|
|
RDSRec<RDS_POST_EPI_SIG_DATE$> = ''
|
|
RDSRec<RDS_POST_EPI_SIG_TIME$> = ''
|
|
RDSRec<RDS_SUP_VER_SIG$> = ''
|
|
RDSRec<RDS_SUP_VER_SIG_DATE$> = ''
|
|
RDSRec<RDS_SUP_VER_SIG_TIME$> = ''
|
|
|
|
WRITE RDSRec ON FileIn,RDSNo THEN
|
|
Send_Dyn(RDSNo:' -> Fixed')
|
|
END
|
|
END
|
|
NEXT I
|
|
|
|
|
|
|
|
GOTO Bail
|
|
|
|
|
|
|
|
|
|
RLIST('SELECT RDS WITH WO "146221"',5,'','','')
|
|
|
|
Done = 0
|
|
RecCnt = 0
|
|
LOOP
|
|
READNEXT RDSNo ELSE Done = 1
|
|
UNTIL Done
|
|
RecCnt += 1
|
|
Send_Info(RecCnt)
|
|
READ RDSRec FROM FileIn,RDSNo THEN
|
|
|
|
LotNo = RDSRec<RDS_LOT_NUM$>
|
|
|
|
NewLotNo = LotNo
|
|
|
|
CONVERT "'" TO "" IN NewLotNo
|
|
|
|
WRITE RDSRec ON FileIn,RDSNo THEN
|
|
Send_Dyn(RDSNo:' -> ':LotNo:' -> ':NewLotNo)
|
|
END
|
|
END
|
|
|
|
REPEAT
|
|
|
|
|
|
GOTO Bail
|
|
|
|
|
|
|
|
|
|
RDSNos = '380294':@VM
|
|
RDSNos := '380297':@VM
|
|
RDSNos := '380300':@VM
|
|
RDSNos := '380303':@VM
|
|
RDSNos := '380304':@VM
|
|
RDSNos := '380308':@VM
|
|
RDSNos := '380309':@VM
|
|
RDSNos := '380311':@VM
|
|
RDSNos := '380317':@VM
|
|
RDSNos := '380331'
|
|
|
|
RDSCnt = COUNT(RDSNos,@VM) + 1
|
|
|
|
FOR I = 1 TO RDSCnt
|
|
RDSNo = RDSNos<1,I>
|
|
READ RDSRec FROM FileIn,RDSNo THEN
|
|
IF RDSRec<RDS_PROD_SPEC_ID$> = '3029' THEN
|
|
IF RDSRec<RDS_QUOTE_NO$> = '6035' THEN
|
|
IF RDSRec<RDS_CUST_NO$> = '6593' THEN
|
|
RDSRec<RDS_PROD_SPEC_ID$> = '3062'
|
|
RDSRec<RDS_QUOTE_NO$> = '6068'
|
|
RDSRec<RDS_CUST_NO$> = '7034'
|
|
debug
|
|
DELETE FileIn,I THEN
|
|
WRITE RDSRec ON FileIn,RDSNo THEN
|
|
Send_Dyn(RDSNo)
|
|
END
|
|
END
|
|
END
|
|
END
|
|
END
|
|
END
|
|
|
|
NEXT I
|
|
|
|
|
|
|
|
GOTO Bail
|
|
|
|
|
|
|
|
|
|
*****
|
|
Bail:
|
|
*****
|
|
END
|