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

2337 lines
88 KiB
Plaintext

Function Test_Daniel(@Service, @Params)
#pragma precomp SRP_PreCompiler
$Insert SERVICE_SETUP
$Insert REVDOTNETEQUATES
$Insert LOGICAL
$Insert REACT_RUN_EQUATES
$Insert RUN_STAGE_WFR_EQUATES
$Insert SRP_IO_EQUATES
$Insert WO_MAT_EQUATES
$Insert PRS_STAGE_EQUATES
$Insert OIPRINT_EQUATES
$Insert PRINTSETUP_EQUATES
$Insert RLIST_EQUATES
$Insert ROTR_EQUATES
$Insert WO_WFR_EQUATES
$Insert RDS_EQUATES
$Insert PROD_SPEC_EQUATES
$Insert WO_MAT_QA_EQUATES
$Insert SCHED_DET_NG_EQUATES
$Insert MSG_EQUATES
$Insert WM_OUT_EQUATES
$Insert MAKEUP_WAFERS_EQUATES
$Insert CLEAN_INSP_EQUATES
EQU PI$LEFT TO 1 ;* OIPI page parameters
EQU PI$TOP TO 2
EQU PI$RIGHT TO 3
EQU PI$BOTTOM TO 4
EQU PI$WIDTH TO 5
EQU PI$HEIGHT TO 6
EQU PI$SIZE TO 7
Declare function SRPExampleDLL2, Database_Services, obj_WO_Mat, obj_Shipment, DateTime, SRP_Array, Gan_Services
Declare function Signature_Services, Memberof, Security_Services, SRPWinAPI_CreateFile, SRP_IO, Engineering_Services
Declare function Excel_Services, File_Services, QA_Services, Excel_Services_Dev, obj_Location, GetCommandLine
Declare function PrintSetup, Set_Printer, SRPWinAPI_CopyFile, Math_Services, obj_RDS, obj_React_Run, Reactor_Services
Declare subroutine Error_Services, Set_Status, Database_Services, Excel_Services, SRP_IO, File_Services, Set_Property
Declare subroutine SRPWinAPI_CloseHandle, ErrMsg, GetTempPath, GetTempFileName, Btree.Extract, Excel_Services_Dev
Declare subroutine Send_Message.Net, Engineering_Services, Qa_Services, Gan_Services, RList, Delete_Table, Sleepery
Declare subroutine SRP_Stopwatch, Dialog_Box, Schedule_Services, Set_IDXSvr, Set_Bgnd_IX_Time, Signature_Services
Declare subroutine Mona_Services, Msg, Work_Order_Services, Copy_Record_To_SQL, Material_Services, Sql_Services
Declare subroutine SQL_Services_RevDotNet, Memory_Services, Replication_Services, Write_OI_To_Sql, Attach_Table
Declare subroutine Detach_Table
Declare function Repository, Get_Status, Get_Repos_Entities, obj_NCR, RTI_CreateGUID
Declare function Epi_Part_Services, SRP_Math, obj_WM_Out, Error_Services, Signature_Services, obj_WO_Mat_QA
Declare function GetTickCount, Schedule_Services, Msg, SRP_Stopwatch, IConv, OConv, SRP_Get_FileVersion
Declare function GetVersionEx, RTI_Lock_Owner, Sql_Services, SQL_Services_RevDotNet, Replication_Services
Declare function Printer_Select
GoToService else
Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
end
Return Response else ''
Service NCRCount()
Debug
NumNCR = Xlate('RDS', 582818, 'TOT_REJ', 'X')
end service
Service NewScript()
KeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL')
For each WOMatKey in KeyList using @FM setting fPos then
WONo = Field(WOMatKey, '*', 1)
MUBox = False$
ReactType = Xlate('WO_MAT', WOMatKey, 'REACTOR_TYPE', 'X')
If ReactType EQ 'EPP' then
WMOKey = Xlate('WO_MAT', WOMatKey, 'WMO_KEY', 'X')
MUBox = Xlate('WM_OUT', WMOKey, 'MAKEUP_BOX', 'X')
If MUBox then
CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKey)
If CurrWaferCount GT 0 then
// Populate MAKEUP_WAFERS table
// Add/update cassette data to the MAKEUP_WAFERS table
Database_Services('ActivateRecord', 'WM_OUT', WMOKey)
WOMatKey = {WO_MAT_KEY}
MUWfrRec = ''
MUWfrRec<MAKEUP_WAFERS.SAP_BATCH_NO$> = {SAP_BATCH_NO}
MUWfrRec<MAKEUP_WAFERS.PS_NO$> = {PS_NO}
MUWfrRec<MAKEUP_WAFERS.CUST_NO$> = Xlate('WO_LOG', WONo, 'CUST_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.PROD_ORD_NO$> = Xlate('WO_LOG', WONo, 'PROD_ORD_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.WAFER_SIZE$> = Xlate('WO_MAT', WOMatKey, 'WAFER_SIZE', 'X')
MUWfrRec<MAKEUP_WAFERS.EPI_PART_NO$> = {PART_NO}
MUWfrRec<MAKEUP_WAFERS.RDS_NO$> = {RDS}
MUWfrRec<MAKEUP_WAFERS.WM_OUT_NO$> = WMOKey
MUWfrRec<MAKEUP_WAFERS.PROD_VER_NO$> = Xlate('WO_MAT', WOMatKey, 'PROD_VER_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.CUST_PART_NO$> = Xlate('WO_MAT', WOMatKey, 'CUST_PART_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.REACT_TYPE$> = Xlate('WO_LOG', WONo, 'REACT_TYPE', 'X')
MUWfrRec<MAKEUP_WAFERS.CURR_STATUS_STATIC$> = {CURR_STATUS_STATIC}
RDSNos = {RDS}
RDSNos = SRP_Array('Clean', RDSNos, 'TrimAndMakeUnique', @VM)
UnloadDTMs = ''
For each RDSNo in RDSNos using @VM
DateOut = Xlate('RDS', RDSNo, 'DATE_OUT', 'X')
TimeOut = Xlate('RDS', RDSNo, 'TIME_OUT', 'X') / 86400
TimeOut[1, 2] = ''
TimeOut = TimeOut[1, 5]
UnloadDTMs<0, -1> = DateOut:'.':TimeOut
Next RDSNo
UnloadDTMs = SRP_Array('Clean', UnloadDTMs, 'TrimAndMakeUnique', @VM)
UnloadDTMs = SRP_Array('SortSimpleList', UnloadDTMs, 'AscendingNumbers', @VM)
MUWfrRec<MAKEUP_WAFERS.UNLOAD_DTM$> = UnloadDTMs<0, 1>
Database_Services('WriteDataRow', 'MAKEUP_WAFERS', WOMatKey, MUWfrRec, True$, False$, True$)
end else
// Remove cassette data from MAKEUP_WAFERS table if it is present
If RowExists('MAKEUP_WAFERS', WOMatKey) then
Database_Services('DeleteDataRow', 'MAKEUP_WAFERS', WOMatKey, True$, False$)
end
end
end
end else
MUBox = Xlate('WO_MAT', WOMatKey, 'MAKEUP_BOX', 'X')
If MUBox then
CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKey)
If CurrWaferCount GT 0 then
Database_Services('ActivateRecord', 'WO_MAT', WOMatKey)
// Populate MAKEUP_WAFERS table
// Add/update cassette data to the MAKEUP_WAFERS table
MUWfrRec = ''
MUWfrRec<MAKEUP_WAFERS.SAP_BATCH_NO$> = {SAP_BATCH_NO}
MUWfrRec<MAKEUP_WAFERS.PS_NO$> = Xlate('WO_LOG', WONo, 'PS_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.CUST_NO$> = {CUST_NO}
MUWfrRec<MAKEUP_WAFERS.PROD_ORD_NO$> = {PROD_ORD_NO}
MUWfrRec<MAKEUP_WAFERS.WAFER_SIZE$> = {WAFER_SIZE}
MUWfrRec<MAKEUP_WAFERS.EPI_PART_NO$> = {EPI_PART_NO}
MUWfrRec<MAKEUP_WAFERS.RDS_NO$> = {RDS_NO}
MUWfrRec<MAKEUP_WAFERS.WM_OUT_NO$> = '' ; // Only applies to EPP
MUWfrRec<MAKEUP_WAFERS.PROD_VER_NO$> = {PROD_VER_NO}
MUWfrRec<MAKEUP_WAFERS.CUST_PART_NO$> = {CUST_PART_NO}
MUWfrRec<MAKEUP_WAFERS.REACT_TYPE$> = {REACTOR_TYPE}
MUWfrRec<MAKEUP_WAFERS.CURR_STATUS_STATIC$> = {CURR_STATUS_STATIC}
DateOut = Xlate('RDS', {RDS_NO}, 'DATE_OUT', 'X')
TimeOut = Xlate('RDS', {RDS_NO}, 'TIME_OUT', 'X') / 86400
TimeOut[1, 2] = ''
TimeOut = TimeOut[1, 5]
UnloadDTM = DateOut:'.':TimeOut
MUWfrRec<MAKEUP_WAFERS.UNLOAD_DTM$> = UnloadDTM
Database_Services('WriteDataRow', 'MAKEUP_WAFERS', WOMatKey, MUWfrRec, True$, False$, True$)
end else
// Remove cassette data from MAKEUP_WAFERS table if it is present
If RowExists('MAKEUP_WAFERS', WOMatKeyID) then
Database_Services('DeleteDataRow', 'MAKEUP_WAFERS', WOMatKey, True$, False$)
end
end
end
end
* If MUBox then
* CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKey)
* If CurrWaferCount GT 0 then NewKeyList<-1> = WOMatKey
* end
Next Key
* Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL3', NewKeyList)
end service
* Open 'DICT.MAKEUP_WAFERS' to @Dict then
* Open 'MAKEUP_WAFERS' to hMUWfrs then
* Done = False$
* Select hMUWfrs
* Loop
* ReadNext @ID, hMUWfrs else Done = True$
* Until Done
* If {REACT_TYPE} EQ 'EPP' then
* debug
* WMOKey = Field(@ID, '*', 1):'*1*':Field(@ID, '*', 2)
* WMORec = Database_Services('ReadDataRow', 'WM_OUT', WMOKey)
* Database_Services('WriteDataRow', 'WM_OUT', WMOKey, WMORec)
* end else
* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', @ID)
* Database_Services('WriteDataRow', 'WO_MAT', @ID, WOMatRec)
* end
* Repeat
* end
* end
* List = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL')
* For each @ID in List using @FM setting fPos
* UnloadDTM = ''
* MUWfrRec = Database_Services('ReadDataRow', 'MAKEUP_WAFERS', @ID)
* ReactType = Xlate('WO_MAT', @ID, 'REACTOR_TYPE', 'X')
* If ReactType EQ 'EPP' then
* WMOKey = Field(@ID, '*', 1):'*1*':Field(@ID, '*', 2)
* RDSNos = Xlate('WM_OUT', WMOKey, 'RDS', 'X')
* RDSNos = SRP_Array('Clean', RDSNos, 'TrimAndMakeUnique', @VM)
* RDSNos = SRP_Array('Clean', RDSNos, 'TrimAndMakeUnique', @SVM)
* RDSNos = SRP_Array('Clean', RDSNos, 'TrimAndMakeUnique', @TM)
* RDSNos = SRP_Array('Clean', RDSNos, 'TrimAndMakeUnique', @STM)
* If RDSNos NE '' then
* UnloadDTMs = ''
* For each RDSNo in RDSNos using @VM
* DateOut = Xlate('RDS', RDSNo, 'DATE_OUT', 'X')
* TimeOut = Xlate('RDS', RDSNo, 'TIME_OUT', 'X') / 86400
* TimeOut[1, 2] = ''
* TimeOut = TimeOut[1, 5]
* UnloadDTMs<0, -1> = DateOut:'.':TimeOut
* Next RDSNo
* UnloadDTMs = SRP_Array('Clean', UnloadDTMs, 'TrimAndMakeUnique', @VM)
* UnloadDTMs = SRP_Array('SortSimpleList', UnloadDTMs, 'AscendingNumbers', @VM)
* UnloadDTM = UnloadDTMs<0, 1>
* end else
* // Inspect the signature profile
* SigProf = Xlate('WO_MAT', @ID, 'SIG_PROFILE', 'X')
* SigDTMs = Xlate('WO_MAT', @ID, 'SIG_DTM', 'X')
* Locate '1MO_QA' in SigProf using @VM setting vPos then
* UnloadDTM = SigDTMs<0, vPos>
* end
* end
* end else
* RDSNo = Xlate('WO_MAT', @ID, 'RDS_NO', 'X')
* RDSNo = SRP_Array('Clean', RDSNo, 'TrimAndMakeUnique', @VM)
* RDSNo = SRP_Array('Clean', RDSNo, 'TrimAndMakeUnique', @SVM)
* RDSNo = SRP_Array('Clean', RDSNo, 'TrimAndMakeUnique', @TM)
* RDSNo = SRP_Array('Clean', RDSNo, 'TrimAndMakeUnique', @STM)
* If RDSNo NE '' then
* DateOut = Xlate('RDS', RDSNo, 'DATE_OUT', 'X')
* TimeOut = Xlate('RDS', RDSNo, 'TIME_OUT', 'X')
* If DateOut NE '' and TimeOut NE '' and TimeOut GT 0 then
* TimeOut = TimeOut / 86400
* TimeOut[1, 2] = ''
* TimeOut = TimeOut[1, 5]
* UnloadDTM = DateOut:'.':TimeOut
* end
* end else
* // Inspect the signature profile
* SigProf = Xlate('WO_MAT', @ID, 'SIG_PROFILE', 'X')
* SigDTMs = Xlate('WO_MAT', @ID, 'SIG_DTM', 'X')
* Locate '1UNLOAD' in SigProf using @VM setting vPos then
* UnloadDTM = SigDTMs<0, vPos>
* end
* end
* end
* If UnloadDTM NE '' then
* MUWfrRec<MAKEUP_WAFERS.UNLOAD_DTM$> = UnloadDTM
* Database_Services('WriteDataRow', 'MAKEUP_WAFERS', @ID, MUWfrRec, True$, False$, True$)
* end
* Next @ID
Service CleanRepMan()
debug
ErrorList = ''
Application = 'LSL'
Table = 'REPLICATION_QUEUE_WO_WFR'
hQueueTable = Replication_Services('GetReplicationQueueTableHandle', Application, Table)
If hQueueTable then
Select hQueueTable
Done = False$
Loop
Readnext Key else Done = True$
If Index(Key, '*', 1) then
Delete hQueueTable, Key else
ErrorList<-1> = Key
end
end
Repeat
Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL', ErrorList)
end
end service
Service PopulateMUWafers()
* debug
// Non EpiPro
* NonEppList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL')
*
Def = ""
Def<MCAPTION$> = "Populating Non EpiPro Makeup Wafers..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = Dcount(NonEppList, @FM)
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
*
* For each WOMatKey in NonEppList setting fPos
* Database_Services('ActivateRecord', 'WO_MAT', WOMatKey)
* If {MAKEUP_BOX} then
* WONo = Field(WOMatKey, '*', 1, 1)
* CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKey)
* If CurrWaferCount GT 0 then
* // Populate MAKEUP_WAFERS table
* // Add/update cassette data to the MAKEUP_WAFERS table
* MUWfrRec = ''
* MUWfrRec<MAKEUP_WAFERS.SAP_BATCH_NO$> = {SAP_BATCH_NO}
* MUWfrRec<MAKEUP_WAFERS.PS_NO$> = Xlate('WO_LOG', WONo, 'PS_NO', 'X')
* MUWfrRec<MAKEUP_WAFERS.CUST_NO$> = {CUST_NO}
* MUWfrRec<MAKEUP_WAFERS.PROD_ORD_NO$> = {PROD_ORD_NO}
* MUWfrRec<MAKEUP_WAFERS.WAFER_SIZE$> = {WAFER_SIZE}
* MUWfrRec<MAKEUP_WAFERS.EPI_PART_NO$> = {EPI_PART_NO}
* MUWfrRec<MAKEUP_WAFERS.RDS_NO$> = {RDS_NO}
* MUWfrRec<MAKEUP_WAFERS.WM_OUT_NO$> = '' ; // Only applies to EPP
* MUWfrRec<MAKEUP_WAFERS.PROD_VER_NO$> = {PROD_VER_NO}
* MUWfrRec<MAKEUP_WAFERS.CUST_PART_NO$> = {CUST_PART_NO}
* MUWfrRec<MAKEUP_WAFERS.REACT_TYPE$> = {REACTOR_TYPE}
* MUWfrRec<MAKEUP_WAFERS.CURR_STATUS_STATIC$> = {CURR_STATUS}
* Database_Services('WriteDataRow', 'MAKEUP_WAFERS', WOMatKey, MUWfrRec, True$, False$, True$)
* end
* end
* Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message
* Next WOMatKey
* Msg(@WINDOW,MsgUp) ;* Take message down
// EpiPro
EppList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL2')
Def = ""
Def<MCAPTION$> = "Populating EpiPro Makeup Wafers..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = Dcount(EppList, @FM)
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
For each WMOKey in EppList setting fPos
Database_Services('ActivateRecord', 'WM_OUT', WMOKey)
If {MAKEUP_BOX} then
WOMatKey = {WO_MAT_KEY}
WONo = Field(WOMatKey, '*', 1, 1)
CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKey)
If CurrWaferCount GT 0 then
// Populate MAKEUP_WAFERS table
// Add/update cassette data to the MAKEUP_WAFERS table
WOMatKey = {WO_MAT_KEY}
MUWfrRec = ''
MUWfrRec<MAKEUP_WAFERS.SAP_BATCH_NO$> = {SAP_BATCH_NO}
MUWfrRec<MAKEUP_WAFERS.PS_NO$> = {PS_NO}
MUWfrRec<MAKEUP_WAFERS.CUST_NO$> = Xlate('WO_LOG', WONo, 'CUST_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.PROD_ORD_NO$> = Xlate('WO_LOG', WONo, 'PROD_ORD_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.WAFER_SIZE$> = Xlate('WO_MAT', WOMatKey, 'WAFER_SIZE', 'X')
MUWfrRec<MAKEUP_WAFERS.EPI_PART_NO$> = {PART_NO}
MUWfrRec<MAKEUP_WAFERS.RDS_NO$> = {RDS}
MUWfrRec<MAKEUP_WAFERS.WM_OUT_NO$> = WMOKey
MUWfrRec<MAKEUP_WAFERS.PROD_VER_NO$> = Xlate('WO_MAT', WOMatKey, 'PROD_VER_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.CUST_PART_NO$> = Xlate('WO_MAT', WOMatKey, 'CUST_PART_NO', 'X')
MUWfrRec<MAKEUP_WAFERS.REACT_TYPE$> = Xlate('WO_LOG', WONo, 'REACT_TYPE', 'X')
MUWfrRec<MAKEUP_WAFERS.CURR_STATUS_STATIC$> = {CURR_STATUS}
Database_Services('WriteDataRow', 'MAKEUP_WAFERS', WOMatKey, MUWfrRec, True$, False$, True$)
end
end
Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message
Next WMOKey
Msg(@WINDOW,MsgUp) ;* Take message down
end service
Service GetEPP()
EPPRTUMUList = ''
RTUMUList = Database_Services('ReadDataRow', 'SYSLISTS', 'RTU_MU')
For each WONo in RTUMUList using @FM
RType = Xlate('WO_LOG', WONo, 'REACT_TYPE', 'X')
If RType EQ 'EPP' then
EPPRTUMUList<-1> = WONo
end
Next WONo
Database_Services('WriteDataRow', 'SYSLISTS', 'EPP_RTU_MU', EPPRTUMUList)
end service
Service GetMergeClause()
debug
JoinClause = 'RDS_NO = 460155 AND CASS_NO = 2'
Swap ' AND ' with @FM in JoinClause
MergeClause = ''
For each Clause in JoinClause using @FM
MergeClause := Clause : ' = src.':Clause
Next Clause
end service
Service AddTrans()
debug
* File = '2021-07-02 SQL Services Log.csv'
Path = 'D:\apps\LogFiles\SQL_Services\'
* FileList = File
InitDir Path:'*'
FileList = DirList()
NumFiles = DCount(FileList, @FM)
For each File in FileList using @FM setting fPos
OSRead FileData from Path:File then
Def = ""
Def<MCAPTION$> = "Replicating data in file ":File:"..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = Dcount(FileData, CRLF$)
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
For each Line in FileData using CRLF$ setting fPos
TableName = Field(Line, ',', 2, 1)
KeyID = Field(Line, ',', 3, 1)
If TableName NE '' and KeyID NE '' then
TransID = ''
TransID<1> = 'WRITE'
TransID<2> = 'LSL2'
TransID<3> = 'LSL'
TransID<4> = TableName
TransID<5> = KeyID
Write_OI_To_Sql(TransID)
end
Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message
Next Line
end
Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message
Next File
Msg(@WINDOW,MsgUp) ;* Take message down
end service
Service GetDup()
Export = ''
DupList = ''
DupCnt = 0
Queue = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL')
For each Key in Queue using @FM setting fPos
QueueRec = Database_Services('ReadDataRow', 'REPLICATION_QUEUE_LSL2_WO_MAT', Key)
QueueAction = QueueRec<1>
QueueTable = QueueRec<4>
QueueKey = QueueRec<5>
ExportRow = QueueAction:',':QueueTable:',':QueueKey:CRLF$
Export := ExportRow
LookupKeyID = QueueAction:'*':QueueTable:'*':QueueKey
If LookupKeyID NE '' then
Locate LookupKeyID in DupList using @FM setting fPos then
DupCnt += 1
Database_Services('DeleteDataRow', 'REPLICATION_QUEUE_LSL2_WO_MAT', Key, True$, False$)
end else
DupList<-1> = LookupKeyID
end
end
Next Key
OSWrite Export To 'D:\temp\DupList.csv'
Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL2', DupList)
end service
Service TestReactState()
debug
WONo = 170033
For CassNo = 1 to 96
Key = WONo:'*1*':CassNo
Rec = Database_Services('ReadDataRow', 'WM_OUT', Key)
FlatFinderDTM = Rec<WM_OUT_FLATFINDER_DTM$>
Rec<WM_OUT_FLATFINDER_DTM$> = ''
Database_Services('WriteDataRow', 'WM_OUT', Key, Rec, True$, False$, False$)
Rec<WM_OUT_FLATFINDER_DTM$> = FlatFinderDTM
Database_Services('WriteDataRow', 'WM_OUT', Key, Rec, True$, False$, False$)
Next CassNo
end service
Service TestRepMan()
* Memory_Services('SetValue', 'SQL_SERVICES*GetConnectionObject*messv01ec.ec.local\PROD1,53959*objConnection', '')
* Free_Class.NET()
Server = 'messv01ec.ec.local\PROD1,53959'
TableData = SQL_Services('GetTables', '', Server, '', '', False$, True$, True$, True$)
* objConn = Sql_Services('GetConnectionObject', 'messv01ec.ec.local\PROD1,53959')
* ConnString = SQL_Services('GetConnectionString', 'messv01ec.ec.local\PROD1,53959')
* objConn = SQL_Services('GetConnectionObject', 'messv01ec.ec.local\PROD1,53959')
* If objConn then SQL_Services('DestroyConnectionObject', objConn)
* RDSNo = 457493
* RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
* Sql_Services('WriteDataRowToSQL', 'RDS', RDSNo, RDSRec)
* Table = 'WO_MAT'
* WONo = '170178'
* Key = '170213*34'
* For CassNo = 54 to 67
* Key = WONo:'*':CassNo
* Rec = Database_Services('ReadDataRow', Table, Key)
* Sql_Services('WriteDataRowToSQL', Table, Key, Rec)
* If Error_Services('HasError') then
* debug
* end
* Next CassNo
end service
Service TestRevDotNet()
debug
objConn = SQL_Services('GetConnectionObject', 'IQSDMS1')
QueryStatement = "select [Probe_Key] from [G4Wafers_01].[dbo].[Probe3]"
ProbeKey = SQL_Services('ExecuteQuery', objConn, QueryStatement, True$)
NewProbeKey = ProbeKey + 1
QueryStatements = ''
QueryStatements<1> = 'update [G4Wafers_01].[dbo].[Probe3] set [Probe_Key] = ':NewProbeKey:' where [Probe_Key] = ':ProbeKey
ProbeKey = NewProbeKey
NewProbeKey = ProbeKey + 1
QueryStatements<2> = 'update [G4Wafers_01].[dbo].[Probe3] set [Probe_Key] = ':NewProbeKey:' where [Probe_Key] = ':ProbeKey
SQL_Services('ExecuteQueries', objConn, QueryStatements, True$)
If objConn then SQL_Services('DestroyConnectionObject', objConn)
end service
Service Test7()
WOMatList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_WO_MAT_BAD')
For each WOMatKey in WOMatList using @FM setting fPos
Material_Services('PostWOMatUpdateRequest', WOMatKey)
Next WOMatKey
end service
Service Test6()
BadList = ''
WOMatList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_WO_MAT')
NumWOMat = DCount(WOMatList, @FM)
Def = ""
Def<MCAPTION$> = "Verifying WO_MAT CURR_STATUS_STATIC..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = NumWOMat
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
For each WOMatKey in WOMatList using @FM setting fPos
StaticCurrStatus = Xlate('WO_MAT', WOMatKey, 'CURR_STATUS_STATIC', 'X')
CalcCurrStatus = obj_WO_Mat('CurrStatus', WOMatKey)
If StaticCurrStatus NE CalcCurrStatus then
BadList<-1> = WOMatKey
end
Running = Msg(@WINDOW, MsgUp, fPos, MSGINSTUPDATE$) ;* Update message
Next WOMatKey
Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_WO_MAT_BAD', BadList)
Msg(@WINDOW,MsgUp) ;* Take message down
end service
Service Test5()
WOMatKeyList = Xlate('SYSLISTS', 'WO_MAT_100000', '', 'X')
NumWOMat = DCount(WOMatKeyList, @FM)
Def = ""
Def<MCAPTION$> = "Updating WO_MAT CURR_STATUS_STATIC..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = NumWOMat
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
WOMatKeyListIndex = 1
NewWOMatKeyList = WOMatKeyList
Loop
WOMatKey = WOMatKeyList<WOMatKeyListIndex>
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
CurrStatus = Xlate('WO_MAT', WOMatKey, 'CURR_STATUS', 'X')
StaticCurrStatus = WOMatRec<WO_MAT_CURR_STATUS_STATIC$>
If CurrStatus NE StaticCurrStatus then
WOMatRec<WO_MAT_CURR_STATUS_STATIC$> = CurrStatus
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, True$, True$)
If Error_Services('HasError') then
ErrorList = Database_Services('ReadDataRow', 'SYSLISTS', 'WO_MAT_ERROR')
ErrorList<-1> = WOMatKey
Database_Services('WriteDataRow', 'SYSLISTS', 'WO_MAT_ERROR', ErrorList)
end
end
If Error_Services('NoError') then
NewWOMatKeyList = Delete(NewWOMatKeyList, 1, 0, 0)
WOMatKeyListIndex += 1
Database_Services('WriteDataRow', 'SYSLISTS', 'WO_MAT_100000', NewWOMatKeyList)
end
Running = Msg(@WINDOW, MsgUp, WOMatKeyListIndex, MSGINSTUPDATE$) ;* Update message
Until WOMatKeyListIndex GE NumWOMat
Repeat
Msg(@WINDOW,MsgUp) ;* Take message down
end service
Service FabtimePush()
debug
WOMatKeyList = Database_Services('ReadDataRow', 'SYSLISTS', 'WO_MAT_PUSH')
NumWOMatKeys = DCount(WOMatKeyList, @FM)
Def = ""
Def<MCAPTION$> = "Updating WO_MAT..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = NumWOMatKeys
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
Table = 'WO_MAT'
WOMatKeyListIndex = 1
NewWOMatKeyList = WOMatKeyList
Loop
ID = WOMatKeyList<WOMatKeyListIndex>
Copy_Record_To_SQL(Table, ID, 1)
NewWOMatKeyList = Delete(NewWOMatKeyList, 1, 0, 0)
WOMatKeyListIndex += 1
Database_Services('WriteDataRow', 'SYSLISTS', 'WO_MAT_PUSH', NewWOMatKeyList)
Running = Msg(@WINDOW, MsgUp, WOMatKeyListIndex, MSGINSTUPDATE$) ;* Update message
Until WOMatKeyListIndex GE NumWOMatKeys
Repeat
Msg(@WINDOW,MsgUp) ;* Take message down
end service
Service Test2()
debug
WOLogKeyList = Xlate('SYSLISTS', 'TEST_DANIEL', '', 'X')
NumWOLog = DCount(WOLogKeyList, @FM)
Def = ""
Def<MCAPTION$> = "Updating WO_MAT..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = NumWOLog
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
WOLogKeyListIndex = 1
NewWOLogKeyList = WOLogKeyList
Loop
GoSub ClearCursors
Query = 'COUNT WO_STEP_QUEUE'
Rlist(Query, Target_ActiveList$, '', '', '')
If @RecCount LT 25 then
// Don't overwhelm the SQL queue
WONo = WOLogKeyList<WOLogKeyListIndex>
Work_Order_Services('PostWOStepUpdateRequest', WONo)
NewWOLogKeyList = Delete(NewWOLogKeyList, 1, 0, 0)
WOLogKeyListIndex += 1
Database_Services('WriteDataRow', 'SYSLISTS', 'TEST_DANIEL', NewWOLogKeyList)
end else
// Give the queue time to crunch
Sleepery(30000)
end
GoSub ClearCursors
Running = Msg(@WINDOW, MsgUp, WOLogKeyListIndex, MSGINSTUPDATE$) ;* Update message
Until WOLogKeyListIndex GE NumWOLog
Repeat
Msg(@WINDOW,MsgUp) ;* Take message down
end service
Service Script()
debug
WOMatKeyList = Xlate('SYSLISTS', 'SIG_PROF_PUSH', '', 'X')
NumWOMat = DCount(WOMatKeyList, @FM)
Def = ""
Def<MCAPTION$> = "Updating WO_MAT..."
Def<MTYPE$> = "GC"
Def<MEXTENT$> = NumWOMat
Def<MTEXTWIDTH$> = 600
MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
WOMatKeyListIndex = 1
NewWOMatKeyList = WOMatKeyList
Loop
GoSub ClearCursors
Query = 'COUNT SQL_BACKLOG_WO_MAT'
Rlist(Query, Target_ActiveList$, '', '', '')
If @RecCount LT 25 then
// Don't overwhelm the SQL queue
WOMatKey = WOMatKeyList<WOMatKeyListIndex>
SigProf = Signature_Services('GetSigProfile', WOMatKey)
Stages = SigProf<1>
Sigs = SigProf<2>
SigDTMs = SigProf<3>
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
WOMatSigProf = WOMatRec<WO_MAT_SIG_PROFILE$>
For each Stage in Stages using @VM setting sPos
WOMatStage = '1':Stage
Locate WOMatStage in WOMatSigProf using @VM setting vPos then
WOMatRec<WO_MAT_SIGNATURE$, vPos> = Sigs<0, sPos>
WOMatRec<WO_MAT_SIG_DTM$, vPos> = IConv(SigDTMS<0, sPos>, 'DT')
end
Next Stage
Error_Services('Clear')
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
If Error_Services('NoError') then
NewWOMatKeyList = Delete(NewWOMatKeyList, 1, 0, 0)
WOMatKeyListIndex += 1
Database_Services('WriteDataRow', 'SYSLISTS', 'SIG_PROF_PUSH', NewWOMatKeyList)
end
end else
// Give the queue time to crunch
Sleepery(30000)
end
GoSub ClearCursors
Running = Msg(@WINDOW, MsgUp, WOMatKeyListIndex, MSGINSTUPDATE$) ;* Update message
Until WOMatKeyListIndex GE NumWOMat
Repeat
Msg(@WINDOW,MsgUp) ;* Take message down
end service
Service Test()
SRP_Stopwatch('Reset')
SRP_Stopwatch('Start', 'Release')
Sleepery(1000)
SRP_Stopwatch('Stop', 'Release')
SRP_Stopwatch('Start', 'Refresh')
Sleepery(1000)
SRP_Stopwatch('Stop', 'Refresh')
SRP_Stopwatch('Start', 'Refresh')
Sleepery(1000)
SRP_Stopwatch('Stop', 'Refresh')
debug
Data = SRP_Stopwatch('GetAll')
end service
Service RDSFix1()
debug
SuccessList = ''
ErrorList = ''
* RDSList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL')
NextRDSNo = Xlate('DICT.RDS', '%SK%', '', 'X')
LastRDSNo = NextRDSNo - 1
FirstRDSNo = LastRDSNo - 1000
For RDSNo = FirstRDSNo to LastRDSNo Step 1
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
If Error_Services('NoError') then
Database_Services('DeleteDataRow', 'RDS', RDSNo, True$, True$)
If Error_Services('NoError') then
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, True$, True$)
If Error_Services('NoError') then
SuccessList<-1> = RDSNo
end else
ErrorMsg = Error_Services('GetMessage')
ErrorList<-1> = RDSNo : ' ' :ErrorMsg
end
end else
ErrorMsg = Error_Services('GetMessage')
ErrorList<-1> = RDSNo : ' ' :ErrorMsg
end
end else
ErrorMsg = Error_Services('GetMessage')
ErrorList<-1> = RDSNo : ' ' :ErrorMsg
end
Next RDSNo
Database_Services('WriteDataRow', 'SYSLISTS', 'RDS_SUCCESS', SuccessList)
Database_Services('WriteDataRow', 'SYSLISTS', 'RDS_ERROR', ErrorList)
end service
Service RDSFix2()
debug
SuccessList = ''
ErrorList = ''
* RDSList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL3')
RDSList = 441972
* NumRDS = DCount(RDSList, @FM)
*
* Def = ""
* Def<MCAPTION$> = "Updating RDS Indexes..."
* Def<MTYPE$> = "GC"
* Def<MEXTENT$> = NumRDS
* Def<MTEXTWIDTH$> = 600
* MsgUp = Msg(@WINDOW, Def) ;* Start gas guage message
For each RDSNo in RDSList using @FM setting vPos
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
If Error_Services('NoError') then
Database_Services('DeleteDataRow', 'RDS', RDSNo, True$, True$)
If Error_Services('NoError') then
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, True$, True$)
If Error_Services('NoError') then
SuccessList<-1> = RDSNo
end else
ErrorMsg = Error_Services('GetMessage')
ErrorList<-1> = RDSNo : ' ' :ErrorMsg
end
end else
ErrorMsg = Error_Services('GetMessage')
ErrorList<-1> = RDSNo : ' ' :ErrorMsg
end
end else
ErrorMsg = Error_Services('GetMessage')
ErrorList<-1> = RDSNo : ' ' :ErrorMsg
end
* Running = Msg(@WINDOW, MsgUp, vPos, MSGINSTUPDATE$) ;* Update message
Next RDSNo
Database_Services('WriteDataRow', 'SYSLISTS', 'RDS_SUCCESS', SuccessList)
Database_Services('WriteDataRow', 'SYSLISTS', 'RDS_ERROR', ErrorList)
* Msg(@WINDOW,MsgUp) ;* Take message down
end service
If @USER4 EQ 'DANIEL_ST' then
debug
OrigQty = 2400
NewQty = 2000
ModifyQty = NewQty - OrigQty
WONo = 169909
Begin Case
Case ModifyQty GT 0
// Search schedule for most recent event and increase that event quantity by the difference.
Query = 'SELECT SCHED_DET_NG WITH WO_NO EQ ':WONo:' BY-DSND STOP_DTM'
GoSub ClearCursors
Set_Status(0)
RList(Query, TARGET_ACTIVELIST$, '', '', False$)
errCode = ''
If Get_Status(errCode) then
ErrorMsg = 'Error retrieving event list in WO_LOG_Actions. Error code ':errCode:'.'
Error_Services('Add', ErrorMsg)
end else
EOF = False$
ReadNext SchedDetNGKey else EOF = True$
If SchedDetNGKey NE '' then
EventRec = Database_Services('ReadDataRow', 'SCHED_DET_NG', SchedDetNGKey)
ReactNo = EventRec<SCHED_DET_NG.REACT_NO$>
WONo = EventRec<SCHED_DET_NG.WO_NO$>
StartDTM = EventRec<SCHED_DET_NG.START_DTM$>
StopDTM = EventRec<SCHED_DET_NG.STOP_DTM$>
Desc = EventRec<SCHED_DET_NG.DESC$>
EventQty = EventRec<SCHED_DET_NG.EVENT_TOTAL_WFRS$>
NewEventQty = EventQty + ModifyQty
Schedule_Services('ModifySchedEvent', SchedDetNGKey, ReactNo, WONo, StartDTM, StopDTM, Desc, NewEventQty)
end
end
GoSub ClearCursors
Schedule_Services('AdjustScheduleEvents')
Case ModifyQty LT 0
// Search schedule for most recent events and decrease/delete those events as needed.
Query = 'SELECT SCHED_DET_NG WITH WO_NO EQ ':WONo:' BY-DSND STOP_DTM'
GoSub ClearCursors
Set_Status(0)
RList(Query, TARGET_ACTIVELIST$, '', '', False$)
errCode = ''
If Get_Status(errCode) then
ErrorMsg = 'Error retrieving event list in WO_LOG_Actions. Error code ':errCode:'.'
Error_Services('Add', ErrorMsg)
end else
EOF = False$
Done = False$
Loop
ReadNext SchedDetNGKey else EOF = True$
Until EOF EQ True$
If SchedDetNGKey NE '' then
EventRec = Database_Services('ReadDataRow', 'SCHED_DET_NG', SchedDetNGKey)
ReactNo = EventRec<SCHED_DET_NG.REACT_NO$>
WONo = EventRec<SCHED_DET_NG.WO_NO$>
StartDTM = EventRec<SCHED_DET_NG.START_DTM$>
StopDTM = EventRec<SCHED_DET_NG.STOP_DTM$>
Desc = EventRec<SCHED_DET_NG.DESC$>
EventQty = EventRec<SCHED_DET_NG.EVENT_TOTAL_WFRS$>
If EventQty GT Abs(ModifyQty) then
// This event has enough wafers, so just reduce the quantity.
Done = True$
NewEventQty = EventQty + ModifyQty
Schedule_Services('ModifySchedEvent', SchedDetNGKey, ReactNo, WONo, StartDTM, StopDTM, Desc, NewEventQty)
end else
// This event has fewer wafers than are being removed. Delete this event and continue
// onto the next event.
Schedule_Services('CancelScheduleEvent', SchedDetNGKey, True$)
ModifyQty += EventQty
end
end
Until Done EQ True$
Repeat
Schedule_Services('AdjustScheduleEvents')
end
GoSub ClearCursors
Case Otherwise$
Null
End Case
end
return
ClearCursors:
For counter = 0 to 8
ClearSelect counter
Next counter
return
* EOF = False$
* ReactProbCatData = ''
* Filepath = 'D:\FITemp\ReactProbCatList.txt'
* Open 'REACT_PROB_CAT' to RPCTable then
* Select RPCTable
* Loop
* ReadNext @ID else EOF = True$
* Until EOF EQ True$
* Read @Record from RPCTable, @ID then
* Desc = @Record<1>
* Category = Xlate('REACT_PROB_CAT', @ID, 'REACTOR_PROBLEM_CATEGORY_XREF', 'X')
* ReactProbCatData := @ID:',':Desc:',':Category:CRLF$
* end
* Repeat
* end
* OSWrite ReactProbCatData on Filepath
* EOF = False$
* ReactServCatData = ''
* Filepath = 'D:\FITemp\ReactServCatList.txt'
* Open 'REACT_SERV_CAT' to RSCTable then
* Select RSCTable
* Loop
* ReadNext @ID else EOF = True$
* Until EOF EQ True$
* Read @Record from RSCTable, @ID then
* Desc = @Record<1>
* ReactServCatData := @ID:',':Desc:CRLF$
* end
* Repeat
* end
* OSWrite ReactServCatData on Filepath
return
* debug
* Query = 'SELECT SQL_BACKLOG'
* Rlist(Query, Target_ActiveList$, '', '', '')
* QueueCount = @RecCount
* GoSub ClearCursors
* Mona_Services('SendMetric', 'SQL_BACKLOG', 'Test', QueueCount)
*
* Query = 'SELECT SQL_BACKLOG_WO_LOG'
* Rlist(Query, Target_ActiveList$, '', '', '')
* QueueCount = @RecCount
* GoSub ClearCursors
* Mona_Services('SendMetric', 'SQL_BACKLOG', 'Test', QueueCount)
*
* Query = 'SELECT SQL_BACKLOG_WO_MAT'
* Rlist(Query, Target_ActiveList$, '', '', '')
* QueueCount = @RecCount
* GoSub ClearCursors
* Mona_Services('SendMetric', 'SQL_BACKLOG', 'Test', QueueCount)
* return
*
*
* ClearCursors:
* For counter = 0 to 8
* ClearSelect counter
* Next counter
* return
* debug
* 02:30:30PM
* List1 = 10:@VM:11:@VM:12:@VM:13
* For Index = 1 to 4
* List1<0, Index> = List1<0, Index> - 3
* Next Index
* ThickTest = Xlate('RDS', 425385, 'UNLOAD_THICK_TEST', 'X')
* Database_Services('ActivateRecord', 'RDS', 425385)
*
* UnloadThickTest = False$
* Parms = {WO_MAT_KEY}:@RM
* Parms := '':@RM
* Parms := FIELD(@RECORD<256>,'*',2):@RM ;* WOStep
* Parms := 'UNLOAD':@RM
* Parms := WO_MAT_QA_PROFILE$
* QAMetArray = obj_WO_Mat_QA('GetQAMet', Parms)
* For each Row in QAMetArray using @FM setting fPos
* Locate 'THICK_ONLY' in Row using @VM setting vPos then
* UnloadThickTest = True$
* end
* Until UnloadThickTest EQ True$
* Next Row
* ActionFlow = UnloadThickTest
return
ProdSpecKeys = Database_Services('ReadDataRow', 'APP_INFO', 'SS_MODIFY_SET')
For each ProdSpecKey in ProdSpecKeys using @FM
PRSKey = ProdSpecKey:'*LWI'
PRSRec = Database_Services('ReadDataRow', 'PRS_STAGE', PRSKey)
SSQtys = PRSRec<PRS_STAGE_SS_SAMP_QTY$>
SSSODs = PRSRec<PRS_STAGE_SURF_DEFECTS$>
SSHazes = PRSRec<PRS_STAGE_SURF_HAZE$>
Locate 6 in SSQtys using @VM setting vPos then
SOD = SSSODs<0, vPos>
Haze = SSHazes<0, vPos>
Locate 25 in SSQtys using @VM setting sPos then
SSSODs<0, sPos> = SOD
SSHazes<0, sPos> = Haze
PRSRec<PRS_STAGE_SURF_DEFECTS$> = SSSODs
PRSRec<PRS_STAGE_SURF_HAZE$> = SSHazes
Database_Services('WriteDataRow', 'PRS_STAGE', PRSKey, PRSRec, True$, False$, True$)
end
end
Next ProdSpecKey
return
* ErrorList = ''
* ProdSpecKeys = Database_Services('ReadDataRow', 'APP_INFO', 'SS_MODIFY_SET')
* For each ProdSpecKey in ProdSpecKeys using @FM
* LWIPRSKey = ProdSpecKey:'*LWI'
* LWIPRSRec = Database_Services('ReadDataRow', 'PRS_STAGE', LWIPRSKey)
* If Error_Services('NoError') then
* SSRecipes = LWIPRSRec<PRS_STAGE_SURFSCAN_RECIPE$>
* SSQtys = LWIPRSRec<PRS_STAGE_SS_SAMP_QTY$>
* ASFlag = False$
* IFXFlag = False$
* Locate 'AS_IFX_ROTR' in SSRecipes using @VM setting vPos then
* ASFlag = True$
* end else
* Locate 'AS_IFX100_ROTR' in SSRecipes using @VM setting vPos then
* ASFlag = True$
* end else
* Locate '8IN_IFX_ROTR' in SSRecipes using @VM setting vPos then
* IFXFlag = True$
* end else
* Locate 'IFX100_ROTR' in SSRecipes using @VM setting vPos then
* IFXFlag = True$
* end
* end
* end
* end
* Begin Case
* Case ASFlag EQ True$
* SSRecipes<0, -1> = 'AS_IFX25_ROTR'
* SSQtys<0, -1> = 25
* Case IFXFlag EQ True$
* SSRecipes<0, -1> = 'IFX25_ROTR'
* SSQtys<0, -1> = 25
* Case Otherwise$
* ErrorList<-1> = LWIPRSKey
* Error_Services('Add', 'Error finding recipe')
* End Case
*
* If Error_Services('NoError') then
* LWIPRSRec<PRS_STAGE_SURFSCAN_RECIPE$> = SSRecipes
* LWIPRSRec<PRS_STAGE_SS_SAMP_QTY$> = SSQtys
* Database_Services('WriteDataRow', 'PRS_STAGE', LWIPRSKey, LWIPRSRec, True$, False$, True$)
* If Error_Services('HasError') then
* ErrorList<-1> = LWIPRSKey
* end
* end
* end else
* ErrorList<-1> = LWIPRSKey
* end
* Next ProdSpecKey
* Database_Services('WriteDataRow', 'APP_INFO', 'SS_ERROR_SET', ErrorList)
return
* * turn off dedicated indexing
* Set_IDXSvr(0)
* * reset background indexing delay to zero (no indexing)
* Set_Bgnd_IX_Time(0)
*
* * update indexes every 10 seconds
* Set_Bgnd_IX_Time(10)
* * turn on dedicated indexing
* Set_IDXSvr(1)
* return
PSNList = Database_Services('ReadDataRow', 'APP_INFO', 'PCRB_4_TO_8')
ThickList = Database_Services('ReadDataRow', 'APP_INFO', 'PCRB_4_TO_8_THICK')
RESList = Database_Services('ReadDataRow', 'APP_INFO', 'PCRB_4_TO_8_RES')
For each PSNo in PSNList using @FM setting fPos
PSRec = Database_Services('ReadDataRow', 'PROD_SPEC', PSNo)
If Error_Services('NoError') then
SpecEpi = PSRec<PROD_SPEC_SPEC_EPI$>
ThickData = SpecEpi<0, 13>
ResData = SpecEpi<0, 14>
Swap '~' with @SVM in ThickData
Swap '~' with @SVM in ResData
OrigThickQty = ThickData<0, 0, 4>
OrigResQty = ResData<0, 0, 4>
NewThickQty = ThickList<fPos>
NewResQty = ResList<fPos>
ThickData<0, 0, 4> = NewThickQty
ResData<0, 0, 4> = NewResQty
Swap @SVM with '~' in ThickData
Swap @SVM with '~' in ResData
SpecEpi<0, 13> = ThickData
SpecEpi<0, 14> = ResData
PSRec<PROD_SPEC_SPEC_EPI$> = SpecEpi
Database_Services('WriteDataRow', 'PROD_SPEC', PSNo, PSRec, True$, False$, True$)
end
Next PSNo
// Extract new values to verify data
NewThickList = ''
NewResList = ''
For each PSNo in PSNList using @FM setting fPos
PSRec = Database_Services('ReadDataRow', 'PROD_SPEC', PSNo)
If Error_Services('NoError') then
SpecEpi = PSRec<PROD_SPEC_SPEC_EPI$>
ThickData = SpecEpi<0, 13>
ResData = SpecEpi<0, 14>
Swap '~' with @SVM in ThickData
Swap '~' with @SVM in ResData
CurrThickQty = ThickData<0, 0, 4>
CurrResQty = ResData<0, 0, 4>
NewThickList<fPos> = CurrThickQty
NewResList<fPos> = CurrResQty
end
Next PSNo
Database_Services('WriteDataRow', 'APP_INFO', 'PCRB_4_TO_8_THICK_VERIFY', NewThickList)
Database_Services('WriteDataRow', 'APP_INFO', 'PCRB_4_TO_8_RES_VERIFY', NewResList)
return
*
* SigStage = 'LWIS'
* WOMatKey = '169821*5'
* Signature_Services('CheckSigOrder', WOMatKey, SigStage)
* If Error_Services('HasError') then
* ErrMsg(Error_Services('GetMessage'))
* return
* end
*
* return
*
* InspReqList = ''
* RDSNos = Xlate('WO_STEP', '169803*1', 'RDS_KEY', 'X')
* For each RDSNo in RDSNos using @VM
* LWICINo = Xlate('RDS', RDSNo, 'LWI_CI_NO', 'X')
* InspReq = Xlate('CLEAN_INSP', LWICINo, 'INSP_REQ', 'X')
* If InspReq then
* InspReqList<-1> = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
* end
* Next RDSNo
*
* Database_Services('WriteDataRow', 'APP_INFO', 'INSP_INTERVAL_VERIFY', InspReqList)
*
*
* return
* CIKey = 2380297
* InspReq = Xlate('CLEAN_INSP', 2380297, 'INSP_REQ', 'X')
*
* Database_Services('ActivateRecord', 'CLEAN_INSP', CIKey)
* RDSNo = {RDS_NO}
* RunNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
* InspInterval = Xlate('PRS_STAGE', {PS_STAGE_KEY}, 'INSP_INTERVAL', 'X')
* InspReq = (Mod((RunNo + 1), InspInterval) EQ 0)
* ActionFlow = InspReq
* InspReq = Xlate('CLEAN_INSP', 2380298, 'INSP_REQ', 'X')
* Database_Services('ReleaseKeyIDLock', 'PROD_SPEC', 5192)
* If Error_Services('HasError') then
* ErrorMessage = Error_Services('GetMessage')
* end
* SoftBlock = Xlate('SCHED_DET_NG', 'C362B3694D7841F1B7FBE689422C80D1', 'HARD_BLOCK', 'X')
* return
* CSVOutput = 'EpiPart,Reactor Type,Reactor Utilization,MPW,WPD,WPDA'
* EpiPartNos = Xlate('SYSLISTS', 'TEST_DANIEL', '', 'X')
* EpiPartNos = Delete(EpiPartNos, 1, 0, 0)
* ReactorTypes = 'ASM,ASM+,HTR,EpiPro,GaN'
* For each EpiPartNo in EpiPartNos using @FM setting EPIndex
* MPWArray = Xlate('EPI_PART', EpiPartNo, 'MINUTES_PER_WAFER_SCHEDULER', 'X')
* For each ReactorType in ReactorTypes using ',' setting RTIndex
* ReactorUtil = Epi_Part_Services('GetReactorUtilization', ReactorType)
* RowIndex = ((EPIndex - 1) * 5) + RTIndex
* MPW = OConv(MPWArray<0, RTIndex>, 'MD3')
* WPD = Epi_Part_Services('GetIdealWafersPerDayScheduler', EpiPartNo, ReactorType, MPW)
* WPDA = Epi_Part_Services('GetAdjustedWafersPerDayScheduler', EpiPartNo, ReactorType, MPW)
* CSVOutput<RowIndex, 1> = EpiPartNo
* CSVOutput<RowIndex, 2> = ReactorUtil
* CSVOutput<RowIndex, 3> = ReactorType
* CSVOutput<RowIndex, 4> = MPW
* CSVOutput<RowIndex, 5> = WPD
* CSVOutput<RowIndex, 6> = WPDA
* Next ReactorType
* Next EpiPartNo
*
* Swap @VM with ',' in CSVOutput
* Swap @FM with CRLF$ in CSVOutput
* CSVFile = 'C:\Users\StieberD\Desktop\MPW.csv'
* OSWrite CSVOutput to CSVFile
* return
* SchedDetNGRec = Database_Services('ReadDataRow', 'SCHED_DET_NG', '4DCEC176F0774A478CD6A3C06BEBA3A8')
PRSKeys = Database_Services('ReadDataRow', 'APP_INFO', 'SS_REDUCTION_SET')
For each PRSKey in PRSKeys using @FM
PRSRec = Database_Services('ReadDataRow', 'PRS_STAGE', PRSKey)
SSQtys = PRSRec<PRS_STAGE_SS_SAMP_QTY$>
SSSODs = PRSRec<PRS_STAGE_SURF_DEFECTS$>
SSHazes = PRSRec<PRS_STAGE_SURF_HAZE$>
Locate 6 in SSQtys using @VM setting vPos then
SOD = SSSODs<0, vPos>
Haze = SSHazes<0, vPos>
Locate 25 in SSQtys using @VM setting sPos then
SSSODs<0, sPos> = SOD
SSHazes<0, sPos> = Haze
PRSRec<PRS_STAGE_SURF_DEFECTS$> = SSSODs
PRSRec<PRS_STAGE_SURF_HAZE$> = SSHazes
Database_Services('WriteDataRow', 'PRS_STAGE', PRSKey, PRSRec, True$, False$, True$)
end
end
Next PRSKey
* return
* WOStepKey = '169717*1'
* RDSNos = Xlate('WO_STEP', WOStepKey, 'RDS_KEY', 'X')
* For each RDSNo in RDSNos using @VM setting vPos
* RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
* DateOut = RDSRec<RDS_DATE_OUT$>
* TimeOut = RDSRec<RDS_TIME_OUT$>
* RDSRec<RDS_DATE_OUT$> = ''
* RDSRec<RDS_TIME_OUT$> = ''
* Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec)
* RDSRec<RDS_DATE_OUT$> = DateOut
* RDSRec<RDS_TIME_OUT$> = TimeOut
* Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec)
* Next RDSNo
*
* return
* RDSNo = 424161
* WOWfrID = '169697*1*4'
* GaN_Services('CreateRunStageWfr', RDSNo, 'XRD', WOWfrID)
* GaN_Services('CreateRunStageWfr', RDSNo, 'PR', WOWfrID)
* Database_Services('ActivateRecord', 'REACT_RUN', RDSNo)
* ActionFlow = 0
* InWfrIDs = {IN_WFR_ID}
* For each WfrID in InWfrIDs using @VM setting vPos
* ActionFlow += ( Xlate('WO_WFR', WfrID, 'CRITICAL_FAILURE', 'X') EQ True$ )
* Next WfrID
* Testing = Xlate('REACT_RUN', RDSNo, 'NUM_ANKO_CRITICAL_FAIL_WFRS', 'X')
* LayerKeys = ''
* LayerKeys<0, -1> = '422908*L1'
* LayerKeys<0, -1> = '422908*L2'
* LayerKeys<0, -1> = '422908*2'
* MetEntered = XLATE('RDS_LAYER',LayerKeys,'TEST_MET_ENTERED','X')
* Schedule_Services('AddSchedEvent', 22, 169702, 19397, 19404, 'Test', 600)
* For RDSTestKeyID = 400000 to 1 Step -1
*
* If RowExists('RDS_TEST', RDSTestKeyID) then
* Database_Services('DeleteDataRow', 'RDS_TEST', RDSTestKeyID, True$)
* end
*
* Next RDSTestKeyID
*
*
* return
* StartKey = Xlate('DICT.RDS', '%SK%', '', 'X')
* For RDSKey = StartKey to 500000
* If RowExists('RDS', RDSKey) then
* Database_Services('DeleteDataRow', 'RDS', RDSKey, True$, True$)
* end
* Next RDSKey
*
*
* CheckID = '168246.1.20'
* NumDec = Count(CheckID, '.')
* ReactorType = Xlate('WO_MAT', '168246*20', 'REACTOR_TYPE', 'X')
* CassIDSAP = Xlate('WO_MAT', '168246*20', 'CASS_ID_SAP', 'X')
* return
CurrCassNo = ''
DateIn = ''
RDSKeys = Xlate('WO_STEP', '169583*1', 'RDS_KEY', 'X')
NumKeys = DCount(RDSKeys, @VM)
For KeyIndex = NumKeys to 1 Step -1
RDSKey = RDSKeys<0, KeyIndex>
DateIn = Xlate('RDS', RDSKey, 'DATE_IN', 'X')
Until DateIn NE ''
Next KeyIndex
If DateIn NE '' then CurrCassNo = Xlate('RDS', RDSKey, 'CASS_NO', 'X')
return CurrCassNo
* GUID = RTI_CreateGUID()
table = "SCHED_DET_NG"
Open "DICT ":table To @DICT Else
RetVal = Set_FSError()
Return
End
Column = "WO_NO"
QueryParam = 169254
search_criteria = Column:@VM:QueryParam:@FM
keylist = ""
option = ""
flag = ""
Btree.Extract(search_criteria, table, @DICT, keylist, option, flag)
ScheduledQty = 0
For each KeyID in keylist using @VM
ScheduledQty += Xlate('SCHED_DET_NG', KeyID, 'EVENT_TOTAL_WFRS', 'X')
Next KeyID
return ScheduledQty
RejWfrIDs = ''
RejWfrIDs<0, -1> = '168246*23*1'
RejWfrIDs<0, -1> = '168246*23*2'
RejWfrIDs<0, -1> = '168246*23*10'
RejWfrIDs<0, -1> = '168246*23*11'
Debug
WONo = 168246
CassNo = 23
ncrParms = WONo:@RM
ncrParms := '1':@RM
ncrParms := CassNo:@RM ;* Place holder for WO_MAT_CASS_NO
ncrParms := '':@RM ;* Single RDS field
ncrParms := '':@RM ;* Reactor No
ncrParms := '':@RM ;* Loss Stage
ncrParms := RejWfrIDs:@RM ;* WfrIDs ;* CarrWafer IDs
ncrParms := '':@RM ;* CarrSlotIDs ;* GaN PostEpi Carrier Slot ID -> GaN non-characterization wafers
ncrParms := '':@RM ;* CassSlotIDs ;* WOMat Cassette Slot ID -> Rej from cassette
ncrParms := '' ;* RunPocketZone ;* RPZ -> Rej from susceptor
Set_Status(0)
NCRNo = obj_NCR('CreateWfr',ncrParms) ;* Create new NCR for this wafer/group of wafers
errCode = ''
IF Get_Status(errCode) THEN
ErrMsg(errCode)
end else
Dialog_Box('NCR', @Window, NCRNo)
// Add NCRNo to the rejected wafer ID records (WO_WFR table)
For each WfrID in RejWfrIDs using @VM
WOWfrRec = Database_Services('ReadDataRow', 'WO_WFR', WfrID)
WOWfrRec<WO_WFR_WMO_NCR_NO$> = NCRNo
Database_Services('WriteDataRow', 'WO_WFR', WfrID, WOWfrRec, True$, False$, True$)
Next WfrID
end
return
// Requirements for makeup wafer to be considered 'Available'
// 1. Cassette has to be marked as a makeup box.
// 2. RDS has to have FQA signature.
// 3. PSN must be 'Active' (i.e. 'A')
// 4. RDS cannot have a current status of 'MT, VOID, SHIP, REJ, or HOLD'.
* debug
* RDSKeyID = 406141
* LWICINo = Xlate('RDS', RDSKeyID, 'LWI_CI_NO', 'X')
*
WOMatKeyID = '169433*19'
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKeyID)
WfrData = obj_WO_Mat('SlotWaferIDs', WOMatKeyID:@RM:WOMatRec)
debug
* SRP_Stopwatch('Reset')
* SRP_Stopwatch('Start', 'Routine')
* CurrStatus = obj_WO_Mat('CurrStatus', WOMatKeyID)
* SRP_Stopwatch('Stop', 'Routine')
* SRP_Stopwatch('Start', 'Index')
* CurrStatus = Xlate('WO_MAT', WOMatKeyID, 'CURR_STATUS', 'X')
* SRP_Stopwatch('Stop', 'Index')
* SRP_Stopwatch('ShowAll')
* CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKeyID)
return
AppID = @APPID<1> ;* current application
TypeID = "OIWIN" ;* OpenInsight Forms
ClassID = "" ;* Not Applicable
recompile_if_unchanged = 1
cleanup_orphan_entities = ''
creserve_linemarks = ''
entlistt = Get_Repos_Entities(appID, typeID, classID)
For each EntID in entlistt using @FM
Set_Status(0)
result = Repository("COMPILE", entid, recompile_if_unchanged, cleanup_orphan_entities, preserve_linemarks)
If Get_Status(ErrCode) then
call msg(@window, 'Error Message returned: ' : ErrCode)
end
Next EntID
return
LastCIKey = 2361946
For CIKey = 2000000 to LastCIKey Step 1
ROTRReactorStatus = Xlate('CLEAN_INSP', CIKey, 'ROTR_REACTOR_STATUS', 'X')
If ROTRReactorStatus NE '' then
ROTRRec = ''
ROTRRec<ROTR.REACTOR_STATUS$> = ROTRReactorStatus
ROTRRec<ROTR.REACTOR_STATUS_REASON$> = Xlate('CLEAN_INSP', CIKey, 'ROTR_REACTOR_STATUS_REASON', 'X')
ROTRRec<ROTR.REACTOR_NCR_COUNT$> = Xlate('CLEAN_INSP', CIKey, 'ROTR_REACTOR_NCR_COUNT', 'X')
ROTRRec<ROTR.REACTOR_ZERO_NCR_RUN_COUNT$> = Xlate('CLEAN_INSP', CIKey, 'ROTR_REACTOR_ZERO_NCR_RUN_COUNT', 'X')
ROTRRec<ROTR.REACTOR_UCL_EXCEEDED_RUN_COUNT$> = Xlate('CLEAN_INSP', CIKey, 'ROTR_REACTOR_UCL_EXCEEDED_RUN_COUNT', 'X')
Database_Services('WriteDataRow', 'ROTR', CIKey, ROTRRec, True$, False$, True$)
end
Next CIKey
return
TempList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL')
// Chomp info line
TempList = Delete(TempList, 1, 0, 0)
For each KeyID in TempList using @FM
Record = Database_Services('ReadDataRow', 'RUN_STAGE_WFR', KeyID)
Database_Services('WriteDataRow', 'RUN_STAGE_WFR', KeyID, Record, True$, False$, True$)
Next KeyID
return
Sentence = 'SELECT EA_REQUESTS'
Set_Status(0)
RList(Sentence, TARGET_ACTIVELIST$, '', '', '')
EOF = False$
RDSList = ''
Loop
ReadNext RequestKeyID else EOF = True$
If RequestKeyID NE '' then
RDSNo = Field(RequestKeyID, '*', 1)
RDSList<-1> = RDSNo
end
Until EOF EQ True$
Repeat
RDSList = SRP_Array('Clean', RDSList, 'TrimAndMakeUnique', @FM)
For each RDSNo in RDSList using @FM
ClosedFlag = Xlate('REACT_RUN', RDSNo, 'DISP_COMPLETE', 'X')
If ClosedFlag EQ True$ then
Engineering_Services('ClearEARequests', RDSNo)
end
Next RDSNo
return
Stages = 'BV'
Tools = 'BVS01'
For each Stage in Stages using ',' setting sPos
ToolID = Field(Tools, ',', sPos, 1)
RDSNo = 403583
WfrID = '168521*10*7'
GaN_Services('StartWaferStage', RDSNo, WfrID, Stage, ToolID)
GaN_Services('StopWaferStage', RDSNo, WfrID, Stage)
GaN_Services('CompleteWaferStage', RDSNo, WfrID, Stage)
Next Stage
*
* WfrID = '168521*9*25'
* Gan_Services('CharacterizeWafer', RDSNo, WfrID)
*
* For SlotNo = 1 to 6
* WfrID = '168521*10*':SlotNo
* Gan_Services('DispositionWfr', RDSNo, WfrID)
* Next SlotNo
*
* WfrID = '168521*10*7'
* Gan_Services('CharacterizeWafer', RDSNo, WfrID)
return
* If CAN_PST exists or WET_CLEAN comp then
* CAN_PST
* end else
* If WET_CLEAN comp then
* CAN_PST
* end else
* CAN_PRE
* end
*
* end
* Initialize Common Printer parms
* debug
* SourceFilepath = 'C:\Users\ecStieberD\Desktop\Notes\SRP\SRPUtil.ocx':\00\
* DestFilepath = 'C:\Users\ecStieberD\Desktop\SRPUtil.ocx':\00\
* rv = SRPWinAPI_CopyFile(GetPointer(SourceFilepath), GetPointer(DestFilepath), 0)
*
* SourceFilePath = 'C:\Users\ecStieberD\Desktop\Notes\SRP\SRPUtil.ocx'
* DestFilepath = 'C:\Users\ecStieberD\Desktop\SRPUtil.ocx'
* rv = File_Services('CopyFile', SourceFilepath, DestFilepath)
return
For I = 1 to 100
PageInfo = ''
PageInfo<PI$LEFT> = 0.5 ;* Margins
PageInfo<PI$TOP> = 1.35
PageInfo<PI$RIGHT> = 0.5
PageInfo<PI$BOTTOM> = 0.25
PageSetup = '0' ;* Portrait
Models = ''
Printers = ''
Default = ''
PrinterCount = PrintSetup(PRN_GET$, Models, Printers, Default)
FileNameParms = 'Printing PDF Document':@FM: '' :@FM:'':@FM: ''
TitleParms = 'Shipping Documents'
PrintSetup = ''
PrintSetup<1,1> = '2' ;* Preview Normal
PrintSetup<1,2> = '5' ;* Display Print and PDF buttons
PrintSetup<1,3> = '0' ;* Display Printing Window
PrintSetup<1,4> = '0' ;* Normal Start Mode
PrinterParm = ''
PrinterParm<1, 1> = 'Microsoft XPS Document Writer'
PrinterParm<1, 2> = False$ ; // Do not set Windows default printer to this printer
PrinterParm<2> = 'Ne00:' ; // Printer port
PrinterParm<3> = 100 ; // Scale
PrinterParm<4> = '' ; // Bin Number
stat = Set_Printer('INIT', FileNameParms, 'Shipping Documents', PageInfo, PageSetup, PrintSetup, PrinterParm)
If Stat LT 0 then
ErrMsg('Failed to initialize printer! Error code: ':Stat)
end
stat = Set_Printer("TERM")
Next I
return
* PSNList = Database_Services('ReadDataRow', 'SYSLISTS', 'TEST_DANIEL')
* PSNList = Delete(PSNList, 1, 0, 0)
* PSNList = Delete(PSNList, 1, 0, 0)
* For each PSNo in PSNList using @FM
* UVRec = Database_Services('ReadDataRow', 'PRS_STAGE', PSNo:'*UV')
* If Error_Services('NoError') then
* UVRec<PRS_STAGE_PROC_TOOL_CLASS$> = 'G_UV_PRE'
* Database_Services('WriteDataRow', 'PRS_STAGE', PSNo:'*UV_PRE', UVRec)
* Database_Services('DeleteDataRow', 'PRS_STAGE', PSNo:'*UV')
* end
* Next PSNo
*
*
* return
* Test = 25 ** 0.5
* CmdLine = GetCommandLine()
debug
// Run IDs to post again once we add in CAN average
RunIDs = ''
RunIDs<0,-1> = '7104399mvfet'
RunIDs<0,-1> = '7104401mvfet'
RunIDs<0,-1> = '7104403mvfet'
RunIDs<0,-1> = '7104405mvfet'
RunIDs<0,-1> = '7104407mvfet'
RunIDs<0,-1> = '7104409mvfet'
RunIDs<0,-1> = '7104411mvfet'
RunIDs<0,-1> = '7104413mvfet'
RunIDs<0,-1> = '7104415mvfet'
RunIDs<0,-1> = '7104417mvfet'
RunIDs<0,-1> = '7104419mvfet'
RunIDs<0,-1> = '7104421mvfet'
Table = 'REACT_RUN'
Open 'DICT.REACT_RUN' to dReactRun then
For each RunID in RunIDs using @VM
Column = "GAN_RUN_ID"
Query = Column:@VM:RunID:@FM
RDSNo = ""
Option = ""
Flag = ""
Btree.Extract(Query, Table, dReactRun, RDSNo, Option, Flag)
If ( (Flag EQ 0) and (RDSNo NE '') ) then
Engineering_Services('PostEARequest', RDSNo, 'UV_PRE')
end
Next RunID
end
return
RunIDs = ''
RunIDs<0,-1> = '6905517hvfet'
RunIDs<0,-1> = '6905519hvfet'
RunIDs<0,-1> = '6905522hvfet'
RunIDs<0,-1> = '6905525hvfet'
RunIDs<0,-1> = '6905527hvfet'
RunIDs<0,-1> = '6905530hvfet'
RunIDs<0,-1> = '6905534hvfet'
RunIDs<0,-1> = '6905537hvfet'
RunIDs<0,-1> = '6905540hvfet'
RunIDs<0,-1> = '6905543hvfet'
RunIDs<0,-1> = '6905545hvfet'
RunIDs<0,-1> = '6905548hvfet'
RunIDs<0,-1> = '6905550hvfet'
RunIDs<0,-1> = '6905552hvfet'
RunIDs<0,-1> = '6905555hvfet'
RunIDs<0,-1> = '6905557hvfet'
RunIDs<0,-1> = '6905560hvfet'
RunIDs<0,-1> = '6905562hvfet'
RunIDs<0,-1> = '6905564hvfet'
RunIDs<0,-1> = '6905566hvfet'
RunIDs<0,-1> = '6905569hvfet'
RunIDs<0,-1> = '6905571hvfet'
RunIDs<0,-1> = '6905573hvfet'
RunIDs<0,-1> = '6905575hvfet'
RunIDs<0,-1> = '6905577hvfet'
RunIDs<0,-1> = '6905579hvfet'
RunIDs<0,-1> = '6905582hvfet'
RunIDs<0,-1> = '6905585hvfet'
RunIDs<0,-1> = '6905588hvfet'
RunIDs<0,-1> = '6905590hvfet'
RunIDs<0,-1> = '6905593hvfet'
RunIDs<0,-1> = '6905596hvfet'
RunIDs<0,-1> = '6905598hvfet'
RunIDs<0,-1> = '6905601hvfet'
RunIDs<0,-1> = '6905603hvfet'
RunIDs<0,-1> = '6905606hvfet'
RunIDs<0,-1> = '6905609hvfet'
RunIDs<0,-1> = '6905612hvfet'
RunIDs<0,-1> = '6905615hvfet'
RunIDs<0,-1> = '6905618hvfet'
RunIDs<0,-1> = '6905621hvfet'
RunIDs<0,-1> = '6905624hvfet'
Table = 'REACT_RUN'
Open 'DICT.REACT_RUN' to dReactRun then
For each RunID in RunIDs using @VM
Column = "GAN_RUN_ID"
Query = Column:@VM:RunID:@FM
RDSNo = ""
Option = ""
Flag = ""
Btree.Extract(Query, Table, dReactRun, RDSNo, Option, Flag)
If ( (Flag EQ 0) and (RDSNo NE '') ) then
Engineering_Services('PostEARequest', RDSNo, 'PR')
end
Next RunID
end
return
SpreadsheetName = '8-inch New HV Epi Development.xlsx'
WorksheetName = '8inch HELENS'
Password = 'IRMN2714'
Directory = '\\messv02ecc1.ec.local\EC_GaN_Development\R69 EPI DEVELOPMENT\DAILY RUN RECORD\'
Offset = 18
EndCol = 'CC'
DocPath = Directory:'\':SpreadsheetName
DocObj = Excel_Services('GetDocumentObject', DocPath, 'IRMN2714')
CellRangeBegin = 'A16644'
CellRangeEnd = 'CC16661'
CopyToCell = 'A16662'
Excel_Services('CopyCellRange', DocObj, WorksheetName, CellRangeBegin, CellRangeEnd, CopyToCell)
Excel_Services('SaveDocument', DocObj, DocPath, 'IRMN2714')
Excel_Services('CloseDocument', DocObj)
return
* S.WONo = 169154
* KitData = obj_Location('KitLocations',S.WONo)
*
* SWAP CRLF$ WITH @VM IN KitData
*
* S.KitLocation = KitData<1>
* I.KitLocation = S.KitLocation
*
* S.KitQty = OCONV(SUM(KitData<2>) * 25,'MD0,Z')
* I.KitQty = S.KitQty
*
*
*
*
* Open 'DICT.WO_MAT' to DictVar then
* LocVar = 'SR*KTR]'
* WONo = S.WONo
* SearchString = 'WO_NO':@VM:WONo:@FM
* SearchString := 'CURR_LOCATION':@VM:LocVar:@FM
* Flag = ''
* WOMatKeys = ''
* Btree.Extract(SearchString, 'WO_MAT', DictVar, WOMatKeys, '', Flag)
* end
*
* return
*
* If @USER4 EQ 'DANIEL_ST' then debug
* WOMatKey = '169136*22'
* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
* SlotNCRs = WOMatRec<WO_MAT_SLOT_NCR$>
* SlotNCRs<0, 22> = 168779
* SlotNCRs<0, 23> = 168779
* WOMatRec<WO_MAT_SLOT_NCR$> = SlotNCRs
* Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
*
* return
*
*
* RDSList = ''
* RDSList<0, -1> = 397404
* RDSList<0, -1> = 397200
* RDSList<0, -1> = 397181
* RDSList<0, -1> = 396893
* RDSList<0, -1> = 396216
* RDSList<0, -1> = 396143
* RDSList<0, -1> = 396015
* RDSList<0, -1> = 397166
* RDSList<0, -1> = 396468
* RDSList<0, -1> = 397037
* RDSList<0, -1> = 397270
* RDSList<0, -1> = 397310
* RDSList<0, -1> = 397317
* RDSList<0, -1> = 397429
* RDSList<0, -1> = 397526
* RDSList<0, -1> = 397526
* RDSList<0, -1> = 397578
* RDSList<0, -1> = 397695
* RDSList<0, -1> = 397764
* RDSList<0, -1> = 397777
* RDSList<0, -1> = 397792
* RDSList<0, -1> = 397808
* RDSList<0, -1> = 397821
* RDSList<0, -1> = 397821
* RDSList<0, -1> = 397906
* RDSList<0, -1> = 397972
* RDSList<0, -1> = 398063
* RDSList<0, -1> = 398101
* RDSList<0, -1> = 398137
*
* For each RDSNo in RDSList using @VM
* Engineering_Services('PostEARequest', RDSNo, 'XRD')
* Next RDSNo
*
*
*
* return
*
* CIList = ''
* CIList <0, -1> = 1075260
* CIList <0, -1> = 1075263
* CIList <0, -1> = 1075284
* CIList <0, -1> = 1075287
* CIList <0, -1> = 1075296
* CIList <0, -1> = 1075350
* CIList <0, -1> = 1075359
* CIList <0, -1> = 1075374
* CIList <0, -1> = 1075380
* CIList <0, -1> = 1075395
* CIList <0, -1> = 1075404
* CIList <0, -1> = 1075416
* CIList <0, -1> = 1075425
* CIList <0, -1> = 1075428
* CIList <0, -1> = 1075431
* CIList <0, -1> = 1075455
* CIList <0, -1> = 1075458
* CIList <0, -1> = 1075488
* CIList <0, -1> = 1075512
* CIList <0, -1> = 1075521
* CIList <0, -1> = 1075533
* CIList <0, -1> = 1075539
* CIList <0, -1> = 1075548
* CIList <0, -1> = 1075572
* CIList <0, -1> = 1075584
* CIList <0, -1> = 1075587
* CIList <0, -1> = 1075596
* CIList <0, -1> = 1075599
* CIList <0, -1> = 1075602
* CIList <0, -1> = 1075611
* CIList <0, -1> = 1075617
* CIList <0, -1> = 1075632
* CIList <0, -1> = 1075635
* CIList <0, -1> = 1075644
* CIList <0, -1> = 1075656
* CIList <0, -1> = 1075659
* CIList <0, -1> = 1075662
* CIList <0, -1> = 1075665
* CIList <0, -1> = 1075668
* CIList <0, -1> = 1075677
* CIList <0, -1> = 1075683
* CIList <0, -1> = 1075686
* CIList <0, -1> = 1075689
* CIList <0, -1> = 1075695
* CIList <0, -1> = 1075758
* CIList <0, -1> = 1075776
* CIList <0, -1> = 1075803
* CIList <0, -1> = 1075806
* CIList <0, -1> = 1075818
* CIList <0, -1> = 1075821
* CIList <0, -1> = 1075836
* CIList <0, -1> = 1075842
* CIList <0, -1> = 1075857
* CIList <0, -1> = 1075863
* CIList <0, -1> = 1075866
* CIList <0, -1> = 1075881
* CIList <0, -1> = 1075896
* CIList <0, -1> = 1075905
* CIList <0, -1> = 1075908
* CIList <0, -1> = 1075914
* CIList <0, -1> = 1075923
* CIList <0, -1> = 1075947
* CIList <0, -1> = 1075953
* CIList <0, -1> = 1075962
* CIList <0, -1> = 1075968
* CIList <0, -1> = 1075971
* CIList <0, -1> = 1075974
* CIList <0, -1> = 1075980
* CIList <0, -1> = 1075989
* CIList <0, -1> = 1076004
* CIList <0, -1> = 1076010
* CIList <0, -1> = 1076028
* CIList <0, -1> = 1076031
* CIList <0, -1> = 1076034
* CIList <0, -1> = 1076046
* CIList <0, -1> = 1076049
* CIList <0, -1> = 1076068
* CIList <0, -1> = 1076074
* CIList <0, -1> = 1076077
* CIList <0, -1> = 1076080
* CIList <0, -1> = 1076086
* CIList <0, -1> = 1076092
* CIList <0, -1> = 1076095
* CIList <0, -1> = 1076098
* CIList <0, -1> = 1076104
* CIList <0, -1> = 1076107
* CIList <0, -1> = 1076122
* CIList <0, -1> = 1076128
* CIList <0, -1> = 1076131
* CIList <0, -1> = 1076140
* CIList <0, -1> = 1076146
* CIList <0, -1> = 1076153
* CIList <0, -1> = 1076159
* CIList <0, -1> = 1076162
* CIList <0, -1> = 1076168
* CIList <0, -1> = 1076183
* CIList <0, -1> = 1076189
* CIList <0, -1> = 1076192
* CIList <0, -1> = 1076195
* CIList <0, -1> = 1076201
* CIList <0, -1> = 1076207
* CIList <0, -1> = 1076210
* CIList <0, -1> = 1076219
* CIList <0, -1> = 1076225
* CIList <0, -1> = 1076231
* CIList <0, -1> = 1076313
* CIList <0, -1> = 1076322
* CIList <0, -1> = 1076358
* CIList <0, -1> = 1076361
* CIList <0, -1> = 2346304
*
* For each CINo in CIList using @VM
* CIRec = Database_Services('ReadDataRow', 'CLEAN_INSP', CINo)
* DummyKey = 'CLEAN_INSP*':CINo
* Database_Services('WriteDataRow', 'DUMMY', DummyKey, CIRec)
* Database_Services('DeleteDataRow', 'CLEAN_INSP', CINo)
* Next CINo
*
* return
*
*
* RunIDList = ''
* RunIDList<0, -1> = '6905525hvfet'
* RunIDList<0, -1> = '6905527hvfet'
* RunIDList<0, -1> = '6905530hvfet'
* RunIDList<0, -1> = '6905534hvfet'
* RunIDList<0, -1> = '6905537hvfet'
* RunIDList<0, -1> = '6905540hvfet'
* RunIDList<0, -1> = '6905543hvfet'
* RunIDList<0, -1> = '6905545hvfet'
* RunIDList<0, -1> = '6905548hvfet'
* RunIDList<0, -1> = '6905550hvfet'
* RunIDList<0, -1> = '6905552hvfet'
* RunIDList<0, -1> = '6905555hvfet'
* RunIDList<0, -1> = '6905557hvfet'
* RunIDList<0, -1> = '6905560hvfet'
* RunIDList<0, -1> = '6905562hvfet'
* RunIDList<0, -1> = '7103949hvfet'
* RunIDList<0, -1> = '7103959hvfet'
* RunIDList<0, -1> = '7103968hvfet'
* RunIDList<0, -1> = '7103973hvfet'
* RunIDList<0, -1> = '7103993hvfet'
* RunIDList<0, -1> = '7104044hvfet'
* RunIDList<0, -1> = '7104214hvfet'
* RunIDList<0, -1> = '7104221hvfet'
* RunIDList<0, -1> = '7104235hvfet'
* RunIDList<0, -1> = '7104240hvfet'
* RunIDList<0, -1> = '7104243hvfet'
* RunIDList<0, -1> = '7104248hvfet'
* RunIDList<0, -1> = '7104253hvfet'
* RunIDList<0, -1> = '7104257mvfet'
* RunIDList<0, -1> = '7104263mvfet'
* RunIDList<0, -1> = '7104267mvfet'
* RunIDList<0, -1> = '7104269mvfet'
* RunIDList<0, -1> = '7104271mvfet'
* RunIDList<0, -1> = '7104275mvfet'
* RunIDList<0, -1> = '7104277mvfet'
* RunIDList<0, -1> = '7104279mvfet'
* RunIDList<0, -1> = '7104281mvfet'
* RunIDList<0, -1> = '7104283mvfet'
* RunIDList<0, -1> = '7104285mvfet'
* RunIDList<0, -1> = '7104287mvfet'
* RunIDList<0, -1> = '7104289mvfet'
* RunIDList<0, -1> = '7104291mvfet'
* RunIDList<0, -1> = '7104293mvfet'
* RunIDList<0, -1> = '7103937hvfet'
* RunIDList<0, -1> = '7104261hvfet'
*
* Open 'DICT.REACT_RUN' to hDict then
* For each RunID in RunIDList using @VM setting vPos
* Query = 'GAN_RUN_ID' : @VM : RunID : @FM
* RDSNo = ''
* Option = ''
* Flag = ''
* Btree.Extract(Query, 'REACT_RUN', hDict, RDSNo, Option, Flag)
* If RDSNo NE '' then
* Engineering_Services('PostEARequest', RDSNo, 'CHAR')
* end
* Next RunID
* end
*
* return
*
*
* DocumentPath = '\\messv02ecc1.ec.local\EC_GaN_Development\R69 EPI DEVELOPMENT\DAILY RUN RECORD\FITesting.xlsx'
* DocumentPW = 'IRMN2714'
* FileHandle = File_Services('LockFile', DocumentPath, GENERIC_WRITE$, FILE_SHARE_READ$, OPEN_EXISTING$)
* If FileHandle NE FILE_ERROR$ then
* DocObj = Excel_Services('OpenDocument', DocumentPath, DocumentPW)
* WorksheetName = '8inch HELENS'
* CellRangeObj = Excel_Services('GetCellRangeObject', DocObj, WorksheetName, 'A16068', 'CC16085')
* If Error_Services('NoError') then
* rv = Send_Message.Net(CellRangeObj, 'CopyTo', 'A16104', 'System.String', 0)
* If Get_Status(StatusCode) then
* Null
* end else
* Excel_Services('SaveDocument', DocObj, DocumentPath, DocumentPW)
* If Error_Services('HasError') then
* ErrorMessage = Error_Services('GetMessage')
* end
* end
* end else
* ErrorMessage = Error_Services("GetMessage")
* end
* end
* If FileHandle NE FILE_ERROR$ then File_Services('UnlockFile', FileHandle)
* Excel_Services('CloseDocument', DocObj)
*
* return
* hDict = Database_Services('GetTableHandle', 'DICT.EA_REQUESTS')
* If Error_Services('NoError') then
* RequestKeyID = ''
* RDSNo = 394235
* Stage = 'HALL'
* Query = 'RDS_NO' : @VM : RDSNo : @FM : 'STAGE' : @VM : Stage : @FM
* Option = ''
* Flag = ''
* Btree.Extract(Query, 'EA_REQUESTS', hDict, RequestKeyID, Option, Flag)
* If RequestKeyID EQ '' then
* // This is a new request
* Log = 'EA request posted'
* end else
* Log = 'Duplicate EA request found, request ignored.'
* end
* end
*
*
*
* return
*
* Done = False$
* TempFilepath = '\\messv02ecc1.ec.local\EC_GaN_Development\R71 EPI DEVELOPMENT\Daily Run Record\TempBackup.xlsx'
* Filepath = '\\messv02ecc1.ec.local\EC_GaN_Development\R71 EPI DEVELOPMENT\Daily Run Record\Francois.xlsx'
* TempPath = Str(\00\, 1024)
* GetTempPath(Len(TempPath), TempPath)
* Convert \00\ to '' in TempPath
* TempFilename = Str(\00\, 1024)
* GetTempFileName(TempPath, \00\, 0, TempFilename)
*
*
* FileHandle = File_Services('LockFile', Filepath, GENERIC_READ$, FILE_SHARE_READ$, OPEN_EXISTING$)
* If FileHandle NE FILE_ERROR$ then
*
*
* File_Services('CopyFile', Filepath, TempFilepath)
* FileSize = File_Services('GetFileSize', FileHandle)
* DocObj = Excel_Services('OpenDocument', Filepath, 'IRMN2714')
* If Error_Services('NoError') then
* SRP_IO('UnlockFile', FileHandle)
* Excel_Services('SaveDocument', DocObj, Filepath, 'IRMN2714')
* If Error_Services('HasError') then
* ErrMsg(Error_Services('GetMessage'))
* end
* end
* File_Services('UnlockFile', FileHandle)
* OSDelete TempFilepath
* end
*
* return
*
* RDSNo = 393710
* RDSCombStatus = Xlate('RDS', RDSNo, 'COMB_STATUS', 'X')
* RDSCurrStatus = Xlate('RDS', RDSNo, 'CURR_STATUS', 'X')
*
* Database_Services('ActivateRecord', 'RDS', RDSNo)
* WOMatRepStatus = XLATE('WO_MAT',{WO_MAT_KEY},'REP_STATUS','X')
* RunStatus = XLATE('REACT_RUN',@ID,'RUN_STATUS','X')
*
* RunStatus = OCONV(RunStatus,'[RUN_STATUS_CONV]')
*
* BEGIN CASE
* CASE WOMatRepStatus NE '' AND RunStatus NE ''
* Ans = WOMatRepStatus
*
* CASE WOMatRepStatus = '' AND RunStatus NE ''
* Ans = RunStatus
*
* CASE WOMatRepStatus NE '' AND RunStatus = ''
* Ans = WOMatRepStatus
*
* CASE 1
* Ans = ''
* END CASE
*
* WOMatKey = '169056*1'
* SigProfile = Signature_Services('GetSigProfile', WOMatKey)
* WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
* RepStatus = obj_WO_Mat('ReportStatus', WOMatKey:@RM:WOMatRec)
*
* return
*
* TestDir = '\\messv02ecc1.ec.local\EC_GaN_Development\R69 EPI DEVELOPMENT\DAILY RUN RECORD\'
* TestFilename = 'Test.xlsx'
* TestFilepath = TestDir:TestFileName
* FileHandle = SRP_IO('LockFile', TestFilepath, GENERIC_READ$, FILE_SHARE_READ$, OPEN_EXISTING$)
* If FileHandle NE FILE_ERROR$ then
* DocObj = Excel_Services('OpenDocument', TestFilepath, 'IRMN2714')
* Excel_Services('SetCellValue', DocObj, '8inch HELENS', 'A', 15779, 'This is a test')
* SRP_IO('UnlockFile', FileHandle)
* Excel_Services('SaveDocument', DocObj, TestFilepath, 'IRMN2714')
* end else
* ErrCode = SRP_IO('GetLastError')
* end
*
* TestDir = 'D:\FITemp\'
* TestFilename = '8-inch New HV Epi Development.xlsx': \00\
* TestFilepath = TestDir:TestFileName
* lpFileName = TestFilepath ; // File to open
* dwDesiredAccess = GENERIC_WRITE$ ; // File access requested
* dwShareMode = 0 ; // Do not allow file sharing (i.e. block all other access until file handle is closed)
* lpSecurityAttributes = 0 ; // Pointer to security structure - not needed
* dwCreationDisposition = OPEN_EXISTING$ ; // Open the file only if it exists already, otherwise throw an error
* dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL$ ; //
* hTemplateFile = 0 ; // When opening an existing file, CreateFile ignores this parameter.
* FileHandle = SRPWinAPI_CreateFile(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile)
* If Assigned(FileHandle) then SRPWinAPI_CloseHandle(FileHandle)
*
* return
*
* ADUser = 'kirkland'
* LSLUser = Security_Services('GetLSLUser', ADUser)
* Member = MemberOf(LSLUser, 'ENGINEERING')
* Testing = '123'
* TestingTesting = ''
*
* return
* GaNWIPList = Database_Services('ReadDataRow', 'APP_INFO', 'GAN_WIP')
* GaNWIPList = Delete(GaNWIPList, 1, 0, 0)
* GaNWIPList = SRP_Array('Rotate', GaNWIPList, @FM, @VM)
* RDSList = GaNWIPList<2>
* RDSList = SRP_Array('Clean', RDSList, 'TrimAndMakeUnique', @VM)
*
* For each RDSNo in RDSList using @VM
* ReactRunRec = Database_Services('ReadDataRow', 'REACT_RUN', RDSNo)
* WfrIDs = ReactRunRec<REACT_RUN_IN_WFR_ID$>
* WfrStages = ReactRunRec<REACT_RUN_WFR_STAGE$>
* For each WfrID in WfrIDs using @VM
* Convert '*' to '.' in WfrID
* For each WfrStage in WfrStages using @VM
* ToolClasses = Gan_Services('GetToolClassIDs', WfrStage)
* If ToolClasses NE '' then
* InvActions = Gan_Services('GetInvActions', WfrStage)
* RunStageWfrKey = RDSNo:'*':WfrStage:'*':WfrID
* If RowExists('RUN_STAGE_WFR', RunStageWfrKey) then
* RunStageWfrRec = Database_Services('ReadDataRow', 'RUN_STAGE_WFR', RunStageWfrKey)
* OrigRunStageWfrRec = RunStageWfrRec
* If Error_Services('NoError') then
* CurrToolClasses = RunStageWfrRec<RUN_STAGE_WFR_SPEC_TOOL_CLASS$>
* CurrInvActions = RunStageWfrRec<RUN_STAGE_WFR_SPEC_INV_ACTION$>
* If CurrToolClasses NE ToolClasses then
* RunStageWfrRec<RUN_STAGE_WFR_SPEC_TOOL_CLASS$> = ToolClasses
* end
* If CurrInvActions NE InvActions then
* RunStageWfrRec<RUN_STAGE_WFR_SPEC_INV_ACTION$> = InvActions
* end
* If RunStageWfrRec NE OrigRunStageWfrRec then
* Database_Services('WriteDataRow', 'RUN_STAGE_WFR', RunStageWfrKey, RunStageWfrRec, True$, False$, True$)
* end
* end
* end
* end
* Next WfrStage
* Next WfrID
* Next RDSNo
*
* return
*
*
* ShipNo = 155379
* COCRec = Database_Services('ReadDataRow', 'COC', ShipNo)
* Set_Status(0)
* Database_Services('WriteDataRow', 'COC', ShipNo, COCRec)
* If Get_Status(errCode) then
* Null
* end
*
* return
*
* WONos = 168781; ShipNos = 155376
* WONos<-1> = 168801; ShipNos<-1> = 155377
* WONos<-1> = 168802; ShipNos<-1> = 155379
* WONos<-1> = 168685; ShipNos<-1> = 155381
* WONos<-1> = 168829; ShipNos<-1> = 155382
* WONos<-1> = 168684; ShipNos<-1> = 155383
* WONos<-1> = 168852; ShipNos<-1> = 155390
* WONos<-1> = 168817; ShipNos<-1> = 155407
* WONos<-1> = 168756; ShipNos<-1> = 155414
* WONos<-1> = 168854; ShipNos<-1> = 155415
* WONos<-1> = 168803; ShipNos<-1> = 155416
* WONos<-1> = 168701; ShipNos<-1> = 155417
* WONos<-1> = 168665; ShipNos<-1> = 155418
* WONos<-1> = 168671; ShipNos<-1> = 155422
* WONos<-1> = 168720; ShipNos<-1> = 155423
* WONos<-1> = 168490; ShipNos<-1> = 155430
* WONos<-1> = 168837; ShipNos<-1> = 155431
* WONos<-1> = 168691; ShipNos<-1> = 155432
* WONos<-1> = 168651; ShipNos<-1> = 155441
* WONos<-1> = 168760; ShipNos<-1> = 155442
* WONos<-1> = 168827; ShipNos<-1> = 155444
* WONos<-1> = 168780; ShipNos<-1> = 155445
*
* FilePath = 'D:\FITemp\TSV\'
* For each WONo in WONos using @FM setting fPos
* ShipNo = ShipNos<fPos>
* PickDTM = Xlate('COC', ShipNo, 'PICK_DTM', 'X')
* PickDT = OConv(Field(PickDTM, '.', 1, 1), 'D4-')
* Year = Field(PickDT, '-', 3, 1)
* Month = Field(PickDT, '-', 1, 1)
* Day = Field(PickDT, '-', 2, 1)
* PickTM = Fmt(Field(PickDTM, '.', 2, 1), 'L#6')
* Swap ':' with '-' in PickDTM
* TSVFile = ''
* SAPDeliveryNo = Xlate('COC', ShipNo, 'SAP_DEL_NO', 'X')
* ProdOrdNo = Xlate('WO_LOG', WONo, 'PROD_ORD_NO', 'X')
* CassNos = Xlate('COC', ShipNo, 'CASS_NO', 'X')
* For each CassNo in CassNos using @VM setting vPos
* WOMatKey = WONo:'*':CassNo
* SAPBatchNo = Xlate('WO_MAT', WOMatKey, 'SAP_BATCH_NO', 'X')
* TSVFile := SAPDeliveryNo : TAB$ : ProdOrdNo : TAB$ : SAPBatchNo : CRLF$
* Next CassNo
* Counter = Fmt(fPos, 'R(0)#3')
* TSVFileName = 'Delivery_':Year:Month:Day:'-':PickTM:'-':Counter:'.tsv'
* OSWrite TSVFile on FilePath:TSVFileName
* Next WONo
*
* return
*
* Set_Status(0)
* TableKey<-1> = 155430
* Open 'COC' to TableVar then
* rv<-1> = Get_Status(errCode)
* Set_Status(0)
* READ TableRec FROM TableVar;TableKey THEN
* rv<-1> = Get_Status(errCode)
* Set_Status(0)
* WRITE TableRec ON TableVar;TableKey THEN
*
* rv<-1> = Get_Status(errCode)
* END ELSE
* ErrorMsg<-1> = 'Unable to write ':QUOTE(TableKey):' on ':QUOTE(TableName):' table.'
* end
* end
* end
*
*
* return
* InboundPath = 'C:\Users\StieberD\Desktop\FTP_IN_TESTING\'
*
* InitDir InboundPath:'*.tsv'
* FileList<-1> = DirList()
*
* FileNames<-1> = ''
* LOOP
* FileName<-1> = FileList[1;@FM]
* FileList[1;Col2()]<-1> = ""
*
* LOCATE FileName IN FileNames BY 'AR' USING @FM SETTING Pos ELSE
* FileNames<-1> = INSERT(FileNames;Pos;0;0;FileName)
* END
*
* UNTIL FileList<-1> = ""
* REPEAT
*
* IF FileNames[-1;1]<-1> = @FM THEN FileNames[-1;1]<-1> = ''
* Test<-1> = ''
* FileCnt<-1> = COUNT(FileNames;@FM) + (FileNames NE '')
*
* FOR N<-1> = 1 TO FileCnt
*
* FileName<-1> = FileNames<N>
* StartTime<-1> = Time()
* OSREAD FileIn FROM InboundPath:FileName THEN
*
* SWAP TAB$ WITH @VM IN FileIn
* SWAP CRCRLF$ WITH @FM IN FileIn
* SWAP CRLF$ WITH @FM IN FileIn
*
* LOOP
* LastChar<-1> = FileIn[-1;1]
* UNTIL LastChar NE @FM
* FileIn[-1;1]<-1> = ''
* REPEAT
*
* Error_Services('Clear')
* RetVal<-1> = obj_Shipment('SAPCreate';FileIn)
*
* // If RetVal<-1> = 1 then succesful
* END
* NEXT N
*
* return
*
*
*
*
*
*
* WOMatKey<-1> = '168809*1'
* WOMatRec<-1> = Database_Services('ReadDataRow'; 'WO_MAT'; WOMatKey)
* GRProps<-1> = obj_WO_Mat('GetGRProps'; WOMatKey:@RM:WOMatRec)
* GRWfrQty<-1> = GRProps<1>
* ScrapQty<-1> = GRProps<2>
* ProdTWQty<-1> = GRProps<3>
* AvailMUWfrQty<-1> = GRProps<4>
* MUCassIDs<-1> = GRProps<5>
* MUCassQtys<-1> = GRProps<6>
* String<-1> = SRPExampleDLL2()
* DotNetHandle<-1> = StartDotNet(""; "4.0")
* rv <-1> = Set_Property.NET(DotNetHandle; "AssemblyName"; "ActiveDirectory.dll")
* ADApiHandle <-1> = Create_Class.NET(DotNetHandle; "ActiveDirectory.ActiveDirectory"; 0)
*
* Username<-1> = "StieberD"
* Domain <-1> = "Infineon"
* Groups <-1> = Send_Message.NET(ADApiHandle; "GetADGroups"; Username:@FM:Domain; "System.String":@FM:"System.String")
* Convert \0A\ to @FM in Groups
*