diff --git a/LSL2/OIWIN/NDW_LOG_TEST_WAFER_USAGE.json b/LSL2/OIWIN/NDW_LOG_TEST_WAFER_USAGE.json index 06ab8b1..9a770de 100644 --- a/LSL2/OIWIN/NDW_LOG_TEST_WAFER_USAGE.json +++ b/LSL2/OIWIN/NDW_LOG_TEST_WAFER_USAGE.json @@ -17,11 +17,11 @@ "<1,4>": "", "<1,5>": "0", "<1,6>": "0", - "<1,7>": "-428", + "<1,7>": "-429", "<1,8>": "-377", "<1,9>": "Log Test Wafer Usage", "<1,10>": { - "<1,10,1>": "0x94CF0000", + "<1,10,1>": "0x84CF0000", "<1,10,2>": "0x100" }, "<1,11>": { @@ -65,9 +65,39 @@ "<1,18,1,14>": "", "<1,18,1,15>": "COMMEVT", "<1,18,1,16>": "0" + }, + "<1,18,2>": { + "<1,18,2,1>": "X", + "<1,18,2,2>": "EXECUTE", + "<1,18,2,3>": "@WINDOW_EVENTS", + "<1,18,2,4>": { + "<1,18,2,4,1>": "@SELF", + "<1,18,2,4,2>": "@EVENT", + "<1,18,2,4,3>": "@PARAM1", + "<1,18,2,4,4>": "@PARAM2", + "<1,18,2,4,5>": "@PARAM3", + "<1,18,2,4,6>": "@PARAM4", + "<1,18,2,4,7>": "@PARAM5", + "<1,18,2,4,8>": "@PARAM6" + }, + "<1,18,2,5>": "", + "<1,18,2,6>": "", + "<1,18,2,7>": "", + "<1,18,2,8>": "", + "<1,18,2,9>": "", + "<1,18,2,10>": "", + "<1,18,2,11>": "", + "<1,18,2,12>": "", + "<1,18,2,13>": "", + "<1,18,2,14>": "", + "<1,18,2,15>": "COMMEVT", + "<1,18,2,16>": "0" } }, - "<1,19>": "CREATE", + "<1,19>": { + "<1,19,1>": "CREATE", + "<1,19,2>": "CLOSE" + }, "<1,20>": "", "<1,21>": "", "<1,22>": "", @@ -717,7 +747,7 @@ "<4,10,2>": "0x200" }, "<4,11>": { - "<4,11,1>": "0x60000", + "<4,11,1>": "0x880", "<4,11,2>": "0x80000000" }, "<4,12>": "14", @@ -745,8 +775,36 @@ }, "<4,16>": "", "<4,17>": "", - "<4,18>": "", - "<4,19>": "", + "<4,18>": { + "<4,18,1>": { + "<4,18,1,1>": "X", + "<4,18,1,2>": "EXECUTE", + "<4,18,1,3>": "@WINDOW_EVENTS", + "<4,18,1,4>": { + "<4,18,1,4,1>": "@SELF", + "<4,18,1,4,2>": "@EVENT", + "<4,18,1,4,3>": "@PARAM1", + "<4,18,1,4,4>": "@PARAM2", + "<4,18,1,4,5>": "@PARAM3", + "<4,18,1,4,6>": "@PARAM4", + "<4,18,1,4,7>": "@PARAM5", + "<4,18,1,4,8>": "@PARAM6" + }, + "<4,18,1,5>": "", + "<4,18,1,6>": "", + "<4,18,1,7>": "", + "<4,18,1,8>": "", + "<4,18,1,9>": "", + "<4,18,1,10>": "", + "<4,18,1,11>": "", + "<4,18,1,12>": "", + "<4,18,1,13>": "", + "<4,18,1,14>": "", + "<4,18,1,15>": "COMMEVT", + "<4,18,1,16>": "0" + } + }, + "<4,19>": "ROWSELCHANGED", "<4,20>": "", "<4,21>": "", "<4,22>": "", @@ -786,53 +844,7 @@ "<4,32>": "", "<4,33>": "", "<4,34>": "", - "<4,35>": { - "<4,35,1>": { - "<4,35,1,1>": "", - "<4,35,1,2>": "", - "<4,35,1,3>": "" - }, - "<4,35,2>": { - "<4,35,2,1>": "", - "<4,35,2,2>": "", - "<4,35,2,3>": "" - }, - "<4,35,3>": { - "<4,35,3,1>": "", - "<4,35,3,2>": "", - "<4,35,3,3>": "" - }, - "<4,35,4>": { - "<4,35,4,1>": "", - "<4,35,4,2>": "", - "<4,35,4,3>": "" - }, - "<4,35,5>": { - "<4,35,5,1>": "", - "<4,35,5,2>": "", - "<4,35,5,3>": "" - }, - "<4,35,6>": { - "<4,35,6,1>": "", - "<4,35,6,2>": "", - "<4,35,6,3>": "" - }, - "<4,35,7>": { - "<4,35,7,1>": "", - "<4,35,7,2>": "", - "<4,35,7,3>": "" - }, - "<4,35,8>": { - "<4,35,8,1>": "", - "<4,35,8,2>": "", - "<4,35,8,3>": "" - }, - "<4,35,9>": { - "<4,35,9,1>": "", - "<4,35,9,2>": "", - "<4,35,9,3>": "" - } - }, + "<4,35>": "", "<4,36>": "", "<4,37>": "", "<4,38>": "", @@ -2793,8 +2805,36 @@ }, "<15,16>": "", "<15,17>": "", - "<15,18>": "", - "<15,19>": "", + "<15,18>": { + "<15,18,1>": { + "<15,18,1,1>": "X", + "<15,18,1,2>": "EXECUTE", + "<15,18,1,3>": "@WINDOW_EVENTS", + "<15,18,1,4>": { + "<15,18,1,4,1>": "@SELF", + "<15,18,1,4,2>": "@EVENT", + "<15,18,1,4,3>": "@PARAM1", + "<15,18,1,4,4>": "@PARAM2", + "<15,18,1,4,5>": "@PARAM3", + "<15,18,1,4,6>": "@PARAM4", + "<15,18,1,4,7>": "@PARAM5", + "<15,18,1,4,8>": "@PARAM6" + }, + "<15,18,1,5>": "", + "<15,18,1,6>": "", + "<15,18,1,7>": "", + "<15,18,1,8>": "", + "<15,18,1,9>": "", + "<15,18,1,10>": "", + "<15,18,1,11>": "", + "<15,18,1,12>": "", + "<15,18,1,13>": "", + "<15,18,1,14>": "", + "<15,18,1,15>": "COMMEVT", + "<15,18,1,16>": "0" + } + }, + "<15,19>": "CLICK", "<15,20>": "", "<15,21>": "", "<15,22>": "", diff --git a/LSL2/OIWIN/NDW_VIEW_LOT.json b/LSL2/OIWIN/NDW_VIEW_LOT.json index e3d4245..22f070d 100644 --- a/LSL2/OIWIN/NDW_VIEW_LOT.json +++ b/LSL2/OIWIN/NDW_VIEW_LOT.json @@ -6,7 +6,7 @@ "body": { "record1": { "<1>": "1010", - "<2>": "8", + "<2>": "10", "<3>": "" }, "record2": { @@ -193,24 +193,24 @@ }, "record3": { "<1>": { - "<1,1>": "EDT_LOT_EVENTS", + "<1,1>": "LBL_CURR_WAFER_QTY", "<1,2>": "", - "<1,3>": "EDITTABLE", + "<1,3>": "STATIC", "<1,4>": "NDW_VIEW_LOT", - "<1,5>": "56", - "<1,6>": "332", - "<1,7>": "884", - "<1,8>": "212", - "<1,9>": "", + "<1,5>": "588", + "<1,6>": "96", + "<1,7>": "196", + "<1,8>": "36", + "<1,9>": "Current Wafer Qty", "<1,10>": { - "<1,10,1>": "0x560061D1", - "<1,10,2>": "0x200" + "<1,10,1>": "0x56000800", + "<1,10,2>": "0x0" }, "<1,11>": { - "<1,11,1>": "0x60000", + "<1,11,1>": "0x0", "<1,11,2>": "0x80000000" }, - "<1,12>": "8", + "<1,12>": "10", "<1,13>": { "<1,13,1>": "-2", "<1,13,2>": "-2", @@ -240,188 +240,28 @@ "<1,20>": "", "<1,21>": "", "<1,22>": "", - "<1,23>": { - "<1,23,1>": "", - "<1,23,2>": "", - "<1,23,3>": "", - "<1,23,4>": "", - "<1,23,5>": "" - }, - "<1,24>": { - "<1,24,1>": "", - "<1,24,2>": "", - "<1,24,3>": "", - "<1,24,4>": "", - "<1,24,5>": "" - }, + "<1,23>": "", + "<1,24>": "", "<1,25>": "", "<1,26>": "", "<1,27>": "", - "<1,28>": { - "<1,28,1>": "", - "<1,28,2>": "", - "<1,28,3>": "", - "<1,28,4>": "", - "<1,28,5>": "" - }, - "<1,29>": { - "<1,29,1>": "", - "<1,29,2>": "", - "<1,29,3>": "", - "<1,29,4>": "", - "<1,29,5>": "" - }, - "<1,30>": { - "<1,30,1>": "<>", - "<1,30,2>": "<>", - "<1,30,3>": "<>", - "<1,30,4>": "<>", - "<1,30,5>": "<>" - }, - "<1,31>": { - "<1,31,1>": "0", - "<1,31,2>": "0", - "<1,31,3>": "0", - "<1,31,4>": "0", - "<1,31,5>": "0" - }, + "<1,28>": "", + "<1,29>": "", + "<1,30>": "", + "<1,31>": "", "<1,32>": "", "<1,33>": "", "<1,34>": "", - "<1,35>": { - "<1,35,1>": { - "<1,35,1,1>": "", - "<1,35,1,2>": "", - "<1,35,1,3>": "", - "<1,35,1,4>": "", - "<1,35,1,5>": "" - }, - "<1,35,2>": { - "<1,35,2,1>": "", - "<1,35,2,2>": "", - "<1,35,2,3>": "", - "<1,35,2,4>": "", - "<1,35,2,5>": "" - }, - "<1,35,3>": { - "<1,35,3,1>": "", - "<1,35,3,2>": "", - "<1,35,3,3>": "", - "<1,35,3,4>": "", - "<1,35,3,5>": "" - }, - "<1,35,4>": { - "<1,35,4,1>": "", - "<1,35,4,2>": "", - "<1,35,4,3>": "", - "<1,35,4,4>": "", - "<1,35,4,5>": "" - }, - "<1,35,5>": { - "<1,35,5,1>": "", - "<1,35,5,2>": "", - "<1,35,5,3>": "", - "<1,35,5,4>": "", - "<1,35,5,5>": "" - }, - "<1,35,6>": { - "<1,35,6,1>": "", - "<1,35,6,2>": "", - "<1,35,6,3>": "", - "<1,35,6,4>": "", - "<1,35,6,5>": "" - }, - "<1,35,7>": { - "<1,35,7,1>": "", - "<1,35,7,2>": "", - "<1,35,7,3>": "", - "<1,35,7,4>": "", - "<1,35,7,5>": "" - }, - "<1,35,8>": { - "<1,35,8,1>": "", - "<1,35,8,2>": "", - "<1,35,8,3>": "", - "<1,35,8,4>": "", - "<1,35,8,5>": "" - }, - "<1,35,9>": { - "<1,35,9,1>": "", - "<1,35,9,2>": "", - "<1,35,9,3>": "", - "<1,35,9,4>": "", - "<1,35,9,5>": "" - }, - "<1,35,10>": { - "<1,35,10,1>": "", - "<1,35,10,2>": "", - "<1,35,10,3>": "", - "<1,35,10,4>": "", - "<1,35,10,5>": "" - }, - "<1,35,11>": { - "<1,35,11,1>": "", - "<1,35,11,2>": "", - "<1,35,11,3>": "", - "<1,35,11,4>": "", - "<1,35,11,5>": "" - }, - "<1,35,12>": { - "<1,35,12,1>": "", - "<1,35,12,2>": "", - "<1,35,12,3>": "", - "<1,35,12,4>": "", - "<1,35,12,5>": "" - } - }, + "<1,35>": "", "<1,36>": "", "<1,37>": "", "<1,38>": "", - "<1,39>": { - "<1,39,1>": "80", - "<1,39,2>": "80", - "<1,39,3>": "80", - "<1,39,4>": "80", - "<1,39,5>": "80" - }, - "<1,40>": "5", - "<1,41>": { - "<1,41,1>": "0", - "<1,41,2>": "0", - "<1,41,3>": "0", - "<1,41,4>": "-2", - "<1,41,5>": "-2", - "<1,41,6>": "", - "<1,41,7>": "", - "<1,41,8>": "40", - "<1,41,9>": "113", - "<1,41,10>": "115", - "<1,41,11>": "0", - "<1,41,12>": "-2", - "<1,41,13>": "-1", - "<1,41,14>": "1" - }, - "<1,42>": { - "<1,42,1>": "2147483648", - "<1,42,2>": "2147483648", - "<1,42,3>": "2147483648", - "<1,42,4>": "2147483648", - "<1,42,5>": "2147483648" - }, - "<1,43>": { - "<1,43,1>": "120", - "<1,43,2>": "120", - "<1,43,3>": "120", - "<1,43,4>": "120", - "<1,43,5>": "470" - }, - "<1,44>": { - "<1,44,1>": "Event Datetime", - "<1,44,2>": "Event Type", - "<1,44,3>": "Operator", - "<1,44,4>": "Operation", - "<1,44,5>": "Note" - }, + "<1,39>": "", + "<1,40>": "", + "<1,41>": "", + "<1,42>": "", + "<1,43>": "", + "<1,44>": "", "<1,45>": "", "<1,46>": "", "<1,47>": "", @@ -432,47 +272,30 @@ "<1,52>": "", "<1,53>": "", "<1,54>": "", - "<1,55>": { - "<1,55,1>": "", - "<1,55,2>": "", - "<1,55,3>": "", - "<1,55,4>": "", - "<1,55,5>": "" - }, - "<1,56>": { - "<1,56,1>": "", - "<1,56,2>": "", - "<1,56,3>": "", - "<1,56,4>": "", - "<1,56,5>": "" - }, - "<1,57>": { - "<1,57,1>": "", - "<1,57,2>": "", - "<1,57,3>": "", - "<1,57,4>": "", - "<1,57,5>": "" - }, - "<1,58>": { - "<1,58,1>": "", - "<1,58,2>": "", - "<1,58,3>": "", - "<1,58,4>": "", - "<1,58,5>": "" - }, + "<1,55>": "", + "<1,56>": "", + "<1,57>": "", + "<1,58>": "", "<1,59>": "", - "<1,60>": { - "<1,60,1>": "4178", - "<1,60,2>": "4178", - "<1,60,3>": "4178", - "<1,60,4>": "4178", - "<1,60,5>": "4178" - }, + "<1,60>": "", "<1,61>": "", "<1,62>": "0", - "<1,63>": "", - "<1,64>": "-2", - "<1,65>": "", + "<1,63>": { + "<1,63,1>": "", + "<1,63,2>": "", + "<1,63,3>": "", + "<1,63,4>": "", + "<1,63,5>": "", + "<1,63,6>": "", + "<1,63,7>": "", + "<1,63,8>": "" + }, + "<1,64>": { + "<1,64,1>": "", + "<1,64,2>": "", + "<1,64,3>": "" + }, + "<1,65>": "-2", "<1,66>": "", "<1,67>": "", "<1,68>": "", @@ -497,391 +320,17 @@ "<1,87>": "", "<1,88>": "", "<1,89>": "", - "<1,90>": "", - "<1,91>": "", + "<1,90>": "0", + "<1,91>": "0", "<1,92>": "", "<1,93>": "", - "<1,94>": { - "<1,94,1>": "", - "<1,94,2>": "", - "<1,94,3>": "", - "<1,94,4>": "", - "<1,94,5>": "" - }, - "<1,95>": { - "<1,95,1>": "", - "<1,95,2>": "", - "<1,95,3>": "", - "<1,95,4>": "", - "<1,95,5>": "" - }, - "<1,96>": { - "<1,96,1>": { - "<1,96,1,1>": "", - "<1,96,1,2>": "" - }, - "<1,96,2>": { - "<1,96,2,1>": "", - "<1,96,2,2>": "" - }, - "<1,96,3>": "", - "<1,96,4>": { - "<1,96,4,1>": "", - "<1,96,4,2>": "" - }, - "<1,96,5>": { - "<1,96,5,1>": "", - "<1,96,5,2>": "" - } - }, - "<1,97>": { - "<1,97,1>": { - "<1,97,1,1>": "Segoe UI", - "<1,97,1,2>": "-12", - "<1,97,1,3>": "400", - "<1,97,1,4>": "0", - "<1,97,1,5>": "0", - "<1,97,1,6>": "0", - "<1,97,1,7>": "0", - "<1,97,1,8>": "34", - "<1,97,1,9>": "0", - "<1,97,1,10>": "3", - "<1,97,1,11>": "2", - "<1,97,1,12>": "1" - }, - "<1,97,2>": { - "<1,97,2,1>": "Segoe UI", - "<1,97,2,2>": "-12", - "<1,97,2,3>": "400", - "<1,97,2,4>": "0", - "<1,97,2,5>": "0", - "<1,97,2,6>": "0", - "<1,97,2,7>": "0", - "<1,97,2,8>": "34", - "<1,97,2,9>": "0", - "<1,97,2,10>": "3", - "<1,97,2,11>": "2", - "<1,97,2,12>": "1" - }, - "<1,97,3>": { - "<1,97,3,1>": "Segoe UI", - "<1,97,3,2>": "-12", - "<1,97,3,3>": "400", - "<1,97,3,4>": "0", - "<1,97,3,5>": "0", - "<1,97,3,6>": "0", - "<1,97,3,7>": "0", - "<1,97,3,8>": "34", - "<1,97,3,9>": "0", - "<1,97,3,10>": "3", - "<1,97,3,11>": "2", - "<1,97,3,12>": "1" - }, - "<1,97,4>": { - "<1,97,4,1>": "Segoe UI", - "<1,97,4,2>": "-12", - "<1,97,4,3>": "400", - "<1,97,4,4>": "0", - "<1,97,4,5>": "0", - "<1,97,4,6>": "0", - "<1,97,4,7>": "0", - "<1,97,4,8>": "34", - "<1,97,4,9>": "0", - "<1,97,4,10>": "3", - "<1,97,4,11>": "2", - "<1,97,4,12>": "1" - }, - "<1,97,5>": { - "<1,97,5,1>": "Segoe UI", - "<1,97,5,2>": "-12", - "<1,97,5,3>": "400", - "<1,97,5,4>": "0", - "<1,97,5,5>": "0", - "<1,97,5,6>": "0", - "<1,97,5,7>": "0", - "<1,97,5,8>": "34", - "<1,97,5,9>": "0", - "<1,97,5,10>": "3", - "<1,97,5,11>": "2", - "<1,97,5,12>": "1" - } - }, - "<1,98>": { - "<1,98,1>": { - "<1,98,1,1>": "Segoe UI", - "<1,98,1,2>": "-12", - "<1,98,1,3>": "400", - "<1,98,1,4>": "0", - "<1,98,1,5>": "0", - "<1,98,1,6>": "0", - "<1,98,1,7>": "0", - "<1,98,1,8>": "34", - "<1,98,1,9>": "0", - "<1,98,1,10>": "3", - "<1,98,1,11>": "2", - "<1,98,1,12>": "1" - }, - "<1,98,2>": { - "<1,98,2,1>": "Segoe UI", - "<1,98,2,2>": "-12", - "<1,98,2,3>": "400", - "<1,98,2,4>": "0", - "<1,98,2,5>": "0", - "<1,98,2,6>": "0", - "<1,98,2,7>": "0", - "<1,98,2,8>": "34", - "<1,98,2,9>": "0", - "<1,98,2,10>": "3", - "<1,98,2,11>": "2", - "<1,98,2,12>": "1" - }, - "<1,98,3>": { - "<1,98,3,1>": "Segoe UI", - "<1,98,3,2>": "-12", - "<1,98,3,3>": "400", - "<1,98,3,4>": "0", - "<1,98,3,5>": "0", - "<1,98,3,6>": "0", - "<1,98,3,7>": "0", - "<1,98,3,8>": "34", - "<1,98,3,9>": "0", - "<1,98,3,10>": "3", - "<1,98,3,11>": "2", - "<1,98,3,12>": "1" - }, - "<1,98,4>": { - "<1,98,4,1>": "Segoe UI", - "<1,98,4,2>": "-12", - "<1,98,4,3>": "400", - "<1,98,4,4>": "0", - "<1,98,4,5>": "0", - "<1,98,4,6>": "0", - "<1,98,4,7>": "0", - "<1,98,4,8>": "34", - "<1,98,4,9>": "0", - "<1,98,4,10>": "3", - "<1,98,4,11>": "2", - "<1,98,4,12>": "1" - }, - "<1,98,5>": { - "<1,98,5,1>": "Segoe UI", - "<1,98,5,2>": "-12", - "<1,98,5,3>": "400", - "<1,98,5,4>": "0", - "<1,98,5,5>": "0", - "<1,98,5,6>": "0", - "<1,98,5,7>": "0", - "<1,98,5,8>": "34", - "<1,98,5,9>": "0", - "<1,98,5,10>": "3", - "<1,98,5,11>": "2", - "<1,98,5,12>": "1" - } - }, - "<1,99>": { - "<1,99,1>": { - "<1,99,1,1>": "-2", - "<1,99,1,2>": "-2", - "<1,99,1,3>": "-2", - "<1,99,1,4>": "0", - "<1,99,1,5>": "0", - "<1,99,1,6>": "0", - "<1,99,1,7>": "0" - }, - "<1,99,2>": { - "<1,99,2,1>": "-2", - "<1,99,2,2>": "-2", - "<1,99,2,3>": "-2", - "<1,99,2,4>": "0", - "<1,99,2,5>": "0", - "<1,99,2,6>": "0", - "<1,99,2,7>": "0" - }, - "<1,99,3>": { - "<1,99,3,1>": "-2", - "<1,99,3,2>": "-2", - "<1,99,3,3>": "-2", - "<1,99,3,4>": "0", - "<1,99,3,5>": "0", - "<1,99,3,6>": "0", - "<1,99,3,7>": "0" - }, - "<1,99,4>": { - "<1,99,4,1>": "-2", - "<1,99,4,2>": "-2", - "<1,99,4,3>": "-2", - "<1,99,4,4>": "0", - "<1,99,4,5>": "0", - "<1,99,4,6>": "0", - "<1,99,4,7>": "0" - }, - "<1,99,5>": { - "<1,99,5,1>": "-2", - "<1,99,5,2>": "-2", - "<1,99,5,3>": "-2", - "<1,99,5,4>": "0", - "<1,99,5,5>": "0", - "<1,99,5,6>": "0", - "<1,99,5,7>": "0" - }, - "<1,99,6>": { - "<1,99,6,1>": "-2", - "<1,99,6,2>": "-2", - "<1,99,6,3>": "-2", - "<1,99,6,4>": "0", - "<1,99,6,5>": "0", - "<1,99,6,6>": "0", - "<1,99,6,7>": "0" - }, - "<1,99,7>": { - "<1,99,7,1>": "-2", - "<1,99,7,2>": "-2", - "<1,99,7,3>": "-2", - "<1,99,7,4>": "0", - "<1,99,7,5>": "0", - "<1,99,7,6>": "0", - "<1,99,7,7>": "0" - }, - "<1,99,8>": "", - "<1,99,9>": "", - "<1,99,10>": "", - "<1,99,11>": { - "<1,99,11,1>": "-2", - "<1,99,11,2>": "-2", - "<1,99,11,3>": "-2", - "<1,99,11,4>": "0", - "<1,99,11,5>": "0", - "<1,99,11,6>": "0", - "<1,99,11,7>": "0" - }, - "<1,99,12>": { - "<1,99,12,1>": "-2", - "<1,99,12,2>": "-2", - "<1,99,12,3>": "-2", - "<1,99,12,4>": "0", - "<1,99,12,5>": "0", - "<1,99,12,6>": "0", - "<1,99,12,7>": "0" - }, - "<1,99,13>": { - "<1,99,13,1>": "-2", - "<1,99,13,2>": "-2", - "<1,99,13,3>": "-2", - "<1,99,13,4>": "0", - "<1,99,13,5>": "0", - "<1,99,13,6>": "0", - "<1,99,13,7>": "0" - }, - "<1,99,14>": { - "<1,99,14,1>": "-2", - "<1,99,14,2>": "-2", - "<1,99,14,3>": "-2", - "<1,99,14,4>": "0", - "<1,99,14,5>": "0", - "<1,99,14,6>": "0", - "<1,99,14,7>": "0" - }, - "<1,99,15>": { - "<1,99,15,1>": "-2", - "<1,99,15,2>": "-2", - "<1,99,15,3>": "-2", - "<1,99,15,4>": "0", - "<1,99,15,5>": "0", - "<1,99,15,6>": "0", - "<1,99,15,7>": "0" - }, - "<1,99,16>": { - "<1,99,16,1>": "-2", - "<1,99,16,2>": "-2", - "<1,99,16,3>": "-2", - "<1,99,16,4>": "0", - "<1,99,16,5>": "0", - "<1,99,16,6>": "0", - "<1,99,16,7>": "0" - }, - "<1,99,17>": { - "<1,99,17,1>": "-2", - "<1,99,17,2>": "-2", - "<1,99,17,3>": "-2", - "<1,99,17,4>": "0", - "<1,99,17,5>": "0", - "<1,99,17,6>": "0", - "<1,99,17,7>": "0" - }, - "<1,99,18>": "", - "<1,99,19>": "", - "<1,99,20>": "", - "<1,99,21>": { - "<1,99,21,1>": "-2", - "<1,99,21,2>": "-2", - "<1,99,21,3>": "-2", - "<1,99,21,4>": "0", - "<1,99,21,5>": "0", - "<1,99,21,6>": "0", - "<1,99,21,7>": "0" - }, - "<1,99,22>": { - "<1,99,22,1>": "-2", - "<1,99,22,2>": "-2", - "<1,99,22,3>": "-2", - "<1,99,22,4>": "0", - "<1,99,22,5>": "0", - "<1,99,22,6>": "0", - "<1,99,22,7>": "0" - }, - "<1,99,23>": { - "<1,99,23,1>": "-2", - "<1,99,23,2>": "-2", - "<1,99,23,3>": "-2", - "<1,99,23,4>": "0", - "<1,99,23,5>": "0", - "<1,99,23,6>": "0", - "<1,99,23,7>": "0" - }, - "<1,99,24>": { - "<1,99,24,1>": "-2", - "<1,99,24,2>": "-2", - "<1,99,24,3>": "-2", - "<1,99,24,4>": "0", - "<1,99,24,5>": "0", - "<1,99,24,6>": "0", - "<1,99,24,7>": "0" - }, - "<1,99,25>": { - "<1,99,25,1>": "-2", - "<1,99,25,2>": "-2", - "<1,99,25,3>": "-2", - "<1,99,25,4>": "0", - "<1,99,25,5>": "0", - "<1,99,25,6>": "0", - "<1,99,25,7>": "0" - }, - "<1,99,26>": { - "<1,99,26,1>": "-2", - "<1,99,26,2>": "-2", - "<1,99,26,3>": "-2", - "<1,99,26,4>": "0", - "<1,99,26,5>": "0", - "<1,99,26,6>": "0", - "<1,99,26,7>": "0" - }, - "<1,99,27>": { - "<1,99,27,1>": "-2", - "<1,99,27,2>": "-2", - "<1,99,27,3>": "-2", - "<1,99,27,4>": "0", - "<1,99,27,5>": "0", - "<1,99,27,6>": "0", - "<1,99,27,7>": "0" - } - }, - "<1,100>": { - "<1,100,1>": "", - "<1,100,2>": "", - "<1,100,3>": "", - "<1,100,4>": "", - "<1,100,5>": "" - }, + "<1,94>": "", + "<1,95>": "", + "<1,96>": "", + "<1,97>": "", + "<1,98>": "", + "<1,99>": "", + "<1,100>": "", "<1,101>": "", "<1,102>": "", "<1,103>": "", @@ -892,24 +341,24 @@ "<1,108>": "" }, "<2>": { - "<2,1>": "EDT_LOT_OPERATIONS", + "<2,1>": "EDL_CURR_WAFER_QTY", "<2,2>": "", - "<2,3>": "EDITTABLE", + "<2,3>": "EDITFIELD", "<2,4>": "NDW_VIEW_LOT", - "<2,5>": "56", - "<2,6>": "160", - "<2,7>": "884", - "<2,8>": "140", + "<2,5>": "784", + "<2,6>": "96", + "<2,7>": "140", + "<2,8>": "36", "<2,9>": "", "<2,10>": { - "<2,10,1>": "0x560061D1", + "<2,10,1>": "0x5E000080", "<2,10,2>": "0x200" }, "<2,11>": { - "<2,11,1>": "0x60000", + "<2,11,1>": "0x0", "<2,11,2>": "0x80000000" }, - "<2,12>": "7", + "<2,12>": "9", "<2,13>": { "<2,13,1>": "-2", "<2,13,2>": "-2", @@ -934,201 +383,64 @@ }, "<2,16>": "", "<2,17>": "", - "<2,18>": "", - "<2,19>": "", + "<2,18>": { + "<2,18,1>": { + "<2,18,1,1>": "X", + "<2,18,1,2>": "EXECUTE", + "<2,18,1,3>": "@WINDOW_EVENTS", + "<2,18,1,4>": { + "<2,18,1,4,1>": "@SELF", + "<2,18,1,4,2>": "@EVENT", + "<2,18,1,4,3>": "@PARAM1", + "<2,18,1,4,4>": "@PARAM2", + "<2,18,1,4,5>": "@PARAM3", + "<2,18,1,4,6>": "@PARAM4", + "<2,18,1,4,7>": "@PARAM5", + "<2,18,1,4,8>": "@PARAM6" + }, + "<2,18,1,5>": "", + "<2,18,1,6>": "", + "<2,18,1,7>": "", + "<2,18,1,8>": "", + "<2,18,1,9>": "", + "<2,18,1,10>": "", + "<2,18,1,11>": "", + "<2,18,1,12>": "", + "<2,18,1,13>": "", + "<2,18,1,14>": "", + "<2,18,1,15>": "COMMEVT", + "<2,18,1,16>": "0" + } + }, + "<2,19>": "LOSTFOCUS", "<2,20>": "", "<2,21>": "", "<2,22>": "", - "<2,23>": { - "<2,23,1>": "", - "<2,23,2>": "", - "<2,23,3>": "", - "<2,23,4>": "", - "<2,23,5>": "", - "<2,23,6>": "", - "<2,23,7>": "" - }, - "<2,24>": { - "<2,24,1>": "", - "<2,24,2>": "", - "<2,24,3>": "", - "<2,24,4>": "", - "<2,24,5>": "", - "<2,24,6>": "", - "<2,24,7>": "" - }, + "<2,23>": "", + "<2,24>": "", "<2,25>": "", "<2,26>": "", "<2,27>": "", - "<2,28>": { - "<2,28,1>": "", - "<2,28,2>": "", - "<2,28,3>": "", - "<2,28,4>": "", - "<2,28,5>": "", - "<2,28,6>": "", - "<2,28,7>": "" - }, - "<2,29>": { - "<2,29,1>": "", - "<2,29,2>": "", - "<2,29,3>": "", - "<2,29,4>": "", - "<2,29,5>": "", - "<2,29,6>": "", - "<2,29,7>": "" - }, - "<2,30>": { - "<2,30,1>": "<>", - "<2,30,2>": "<>", - "<2,30,3>": "<>", - "<2,30,4>": "<>", - "<2,30,5>": "<>", - "<2,30,6>": "<>", - "<2,30,7>": "<>" - }, - "<2,31>": { - "<2,31,1>": "0", - "<2,31,2>": "0", - "<2,31,3>": "0", - "<2,31,4>": "0", - "<2,31,5>": "0", - "<2,31,6>": "0", - "<2,31,7>": "0" - }, + "<2,28>": "<>", + "<2,29>": "<>", + "<2,30>": "<>", + "<2,31>": "0", "<2,32>": "", "<2,33>": "", "<2,34>": "", - "<2,35>": { - "<2,35,1>": { - "<2,35,1,1>": "", - "<2,35,1,2>": "", - "<2,35,1,3>": "", - "<2,35,1,4>": "", - "<2,35,1,5>": "", - "<2,35,1,6>": "", - "<2,35,1,7>": "" - }, - "<2,35,2>": { - "<2,35,2,1>": "", - "<2,35,2,2>": "", - "<2,35,2,3>": "", - "<2,35,2,4>": "", - "<2,35,2,5>": "", - "<2,35,2,6>": "", - "<2,35,2,7>": "" - }, - "<2,35,3>": { - "<2,35,3,1>": "", - "<2,35,3,2>": "", - "<2,35,3,3>": "", - "<2,35,3,4>": "", - "<2,35,3,5>": "", - "<2,35,3,6>": "", - "<2,35,3,7>": "" - }, - "<2,35,4>": { - "<2,35,4,1>": "", - "<2,35,4,2>": "", - "<2,35,4,3>": "", - "<2,35,4,4>": "", - "<2,35,4,5>": "", - "<2,35,4,6>": "", - "<2,35,4,7>": "" - }, - "<2,35,5>": { - "<2,35,5,1>": "", - "<2,35,5,2>": "", - "<2,35,5,3>": "", - "<2,35,5,4>": "", - "<2,35,5,5>": "", - "<2,35,5,6>": "", - "<2,35,5,7>": "" - }, - "<2,35,6>": { - "<2,35,6,1>": "", - "<2,35,6,2>": "", - "<2,35,6,3>": "", - "<2,35,6,4>": "", - "<2,35,6,5>": "", - "<2,35,6,6>": "", - "<2,35,6,7>": "" - }, - "<2,35,7>": { - "<2,35,7,1>": "", - "<2,35,7,2>": "", - "<2,35,7,3>": "", - "<2,35,7,4>": "", - "<2,35,7,5>": "", - "<2,35,7,6>": "", - "<2,35,7,7>": "" - }, - "<2,35,8>": { - "<2,35,8,1>": "", - "<2,35,8,2>": "", - "<2,35,8,3>": "", - "<2,35,8,4>": "", - "<2,35,8,5>": "", - "<2,35,8,6>": "", - "<2,35,8,7>": "" - } + "<2,35>": "", + "<2,36>": { + "<2,36,1>": "0", + "<2,36,2>": "0" }, - "<2,36>": "", "<2,37>": "", "<2,38>": "", - "<2,39>": { - "<2,39,1>": "80", - "<2,39,2>": "80", - "<2,39,3>": "80", - "<2,39,4>": "80", - "<2,39,5>": "80", - "<2,39,6>": "80", - "<2,39,7>": "80" - }, - "<2,40>": "7", - "<2,41>": { - "<2,41,1>": "0", - "<2,41,2>": "0", - "<2,41,3>": "0", - "<2,41,4>": "-2", - "<2,41,5>": "-2", - "<2,41,6>": "", - "<2,41,7>": "", - "<2,41,8>": "40", - "<2,41,9>": "113", - "<2,41,10>": "115", - "<2,41,11>": "0", - "<2,41,12>": "-2", - "<2,41,13>": "-1", - "<2,41,14>": "1" - }, - "<2,42>": { - "<2,42,1>": "2147483648", - "<2,42,2>": "2147483648", - "<2,42,3>": "2147483648", - "<2,42,4>": "2147483648", - "<2,42,5>": "2147483648", - "<2,42,6>": "2147483648", - "<2,42,7>": "2147483648" - }, - "<2,43>": { - "<2,43,1>": "120", - "<2,43,2>": "120", - "<2,43,3>": "120", - "<2,43,4>": "120", - "<2,43,5>": "120", - "<2,43,6>": "120", - "<2,43,7>": "120" - }, - "<2,44>": { - "<2,44,1>": "Operation", - "<2,44,2>": "Operator In", - "<2,44,3>": "Datetime In", - "<2,44,4>": "Wafer Qty In", - "<2,44,5>": "Operator Out", - "<2,44,6>": "Datetime Out", - "<2,44,7>": "Wafer Qty Out" - }, + "<2,39>": "", + "<2,40>": "", + "<2,41>": "", + "<2,42>": "", + "<2,43>": "", + "<2,44>": "", "<2,45>": "", "<2,46>": "", "<2,47>": "", @@ -1139,56 +451,16 @@ "<2,52>": "", "<2,53>": "", "<2,54>": "", - "<2,55>": { - "<2,55,1>": "", - "<2,55,2>": "", - "<2,55,3>": "", - "<2,55,4>": "", - "<2,55,5>": "", - "<2,55,6>": "", - "<2,55,7>": "" - }, - "<2,56>": { - "<2,56,1>": "", - "<2,56,2>": "", - "<2,56,3>": "", - "<2,56,4>": "", - "<2,56,5>": "", - "<2,56,6>": "", - "<2,56,7>": "" - }, - "<2,57>": { - "<2,57,1>": "", - "<2,57,2>": "", - "<2,57,3>": "", - "<2,57,4>": "", - "<2,57,5>": "", - "<2,57,6>": "", - "<2,57,7>": "" - }, - "<2,58>": { - "<2,58,1>": "", - "<2,58,2>": "", - "<2,58,3>": "", - "<2,58,4>": "", - "<2,58,5>": "", - "<2,58,6>": "", - "<2,58,7>": "" - }, + "<2,55>": "", + "<2,56>": "", + "<2,57>": "", + "<2,58>": "", "<2,59>": "", - "<2,60>": { - "<2,60,1>": "4178", - "<2,60,2>": "4178", - "<2,60,3>": "4178", - "<2,60,4>": "4178", - "<2,60,5>": "4178", - "<2,60,6>": "4178", - "<2,60,7>": "4178" - }, + "<2,60>": "", "<2,61>": "", "<2,62>": "0", "<2,63>": "", - "<2,64>": "-2", + "<2,64>": "", "<2,65>": "", "<2,66>": "", "<2,67>": "", @@ -1218,445 +490,13 @@ "<2,91>": "", "<2,92>": "", "<2,93>": "", - "<2,94>": { - "<2,94,1>": "", - "<2,94,2>": "", - "<2,94,3>": "", - "<2,94,4>": "", - "<2,94,5>": "", - "<2,94,6>": "", - "<2,94,7>": "" - }, - "<2,95>": { - "<2,95,1>": "", - "<2,95,2>": "", - "<2,95,3>": "", - "<2,95,4>": "", - "<2,95,5>": "", - "<2,95,6>": "", - "<2,95,7>": "" - }, - "<2,96>": { - "<2,96,1>": { - "<2,96,1,1>": "", - "<2,96,1,2>": "" - }, - "<2,96,2>": "", - "<2,96,3>": "", - "<2,96,4>": "", - "<2,96,5>": "", - "<2,96,6>": "", - "<2,96,7>": { - "<2,96,7,1>": "", - "<2,96,7,2>": "" - } - }, - "<2,97>": { - "<2,97,1>": { - "<2,97,1,1>": "Segoe UI", - "<2,97,1,2>": "-12", - "<2,97,1,3>": "400", - "<2,97,1,4>": "0", - "<2,97,1,5>": "0", - "<2,97,1,6>": "0", - "<2,97,1,7>": "0", - "<2,97,1,8>": "34", - "<2,97,1,9>": "0", - "<2,97,1,10>": "3", - "<2,97,1,11>": "2", - "<2,97,1,12>": "1" - }, - "<2,97,2>": { - "<2,97,2,1>": "Segoe UI", - "<2,97,2,2>": "-12", - "<2,97,2,3>": "400", - "<2,97,2,4>": "0", - "<2,97,2,5>": "0", - "<2,97,2,6>": "0", - "<2,97,2,7>": "0", - "<2,97,2,8>": "34", - "<2,97,2,9>": "0", - "<2,97,2,10>": "3", - "<2,97,2,11>": "2", - "<2,97,2,12>": "1" - }, - "<2,97,3>": { - "<2,97,3,1>": "Segoe UI", - "<2,97,3,2>": "-12", - "<2,97,3,3>": "400", - "<2,97,3,4>": "0", - "<2,97,3,5>": "0", - "<2,97,3,6>": "0", - "<2,97,3,7>": "0", - "<2,97,3,8>": "34", - "<2,97,3,9>": "0", - "<2,97,3,10>": "3", - "<2,97,3,11>": "2", - "<2,97,3,12>": "1" - }, - "<2,97,4>": { - "<2,97,4,1>": "Segoe UI", - "<2,97,4,2>": "-12", - "<2,97,4,3>": "400", - "<2,97,4,4>": "0", - "<2,97,4,5>": "0", - "<2,97,4,6>": "0", - "<2,97,4,7>": "0", - "<2,97,4,8>": "34", - "<2,97,4,9>": "0", - "<2,97,4,10>": "3", - "<2,97,4,11>": "2", - "<2,97,4,12>": "1" - }, - "<2,97,5>": { - "<2,97,5,1>": "Segoe UI", - "<2,97,5,2>": "-12", - "<2,97,5,3>": "400", - "<2,97,5,4>": "0", - "<2,97,5,5>": "0", - "<2,97,5,6>": "0", - "<2,97,5,7>": "0", - "<2,97,5,8>": "34", - "<2,97,5,9>": "0", - "<2,97,5,10>": "3", - "<2,97,5,11>": "2", - "<2,97,5,12>": "1" - }, - "<2,97,6>": { - "<2,97,6,1>": "Segoe UI", - "<2,97,6,2>": "-12", - "<2,97,6,3>": "400", - "<2,97,6,4>": "0", - "<2,97,6,5>": "0", - "<2,97,6,6>": "0", - "<2,97,6,7>": "0", - "<2,97,6,8>": "34", - "<2,97,6,9>": "0", - "<2,97,6,10>": "3", - "<2,97,6,11>": "2", - "<2,97,6,12>": "1" - }, - "<2,97,7>": { - "<2,97,7,1>": "Segoe UI", - "<2,97,7,2>": "-12", - "<2,97,7,3>": "400", - "<2,97,7,4>": "0", - "<2,97,7,5>": "0", - "<2,97,7,6>": "0", - "<2,97,7,7>": "0", - "<2,97,7,8>": "34", - "<2,97,7,9>": "0", - "<2,97,7,10>": "3", - "<2,97,7,11>": "2", - "<2,97,7,12>": "1" - } - }, - "<2,98>": { - "<2,98,1>": { - "<2,98,1,1>": "Segoe UI", - "<2,98,1,2>": "-12", - "<2,98,1,3>": "400", - "<2,98,1,4>": "0", - "<2,98,1,5>": "0", - "<2,98,1,6>": "0", - "<2,98,1,7>": "0", - "<2,98,1,8>": "34", - "<2,98,1,9>": "0", - "<2,98,1,10>": "3", - "<2,98,1,11>": "2", - "<2,98,1,12>": "1" - }, - "<2,98,2>": { - "<2,98,2,1>": "Segoe UI", - "<2,98,2,2>": "-12", - "<2,98,2,3>": "400", - "<2,98,2,4>": "0", - "<2,98,2,5>": "0", - "<2,98,2,6>": "0", - "<2,98,2,7>": "0", - "<2,98,2,8>": "34", - "<2,98,2,9>": "0", - "<2,98,2,10>": "3", - "<2,98,2,11>": "2", - "<2,98,2,12>": "1" - }, - "<2,98,3>": { - "<2,98,3,1>": "Segoe UI", - "<2,98,3,2>": "-12", - "<2,98,3,3>": "400", - "<2,98,3,4>": "0", - "<2,98,3,5>": "0", - "<2,98,3,6>": "0", - "<2,98,3,7>": "0", - "<2,98,3,8>": "34", - "<2,98,3,9>": "0", - "<2,98,3,10>": "3", - "<2,98,3,11>": "2", - "<2,98,3,12>": "1" - }, - "<2,98,4>": { - "<2,98,4,1>": "Segoe UI", - "<2,98,4,2>": "-12", - "<2,98,4,3>": "400", - "<2,98,4,4>": "0", - "<2,98,4,5>": "0", - "<2,98,4,6>": "0", - "<2,98,4,7>": "0", - "<2,98,4,8>": "34", - "<2,98,4,9>": "0", - "<2,98,4,10>": "3", - "<2,98,4,11>": "2", - "<2,98,4,12>": "1" - }, - "<2,98,5>": { - "<2,98,5,1>": "Segoe UI", - "<2,98,5,2>": "-12", - "<2,98,5,3>": "400", - "<2,98,5,4>": "0", - "<2,98,5,5>": "0", - "<2,98,5,6>": "0", - "<2,98,5,7>": "0", - "<2,98,5,8>": "34", - "<2,98,5,9>": "0", - "<2,98,5,10>": "3", - "<2,98,5,11>": "2", - "<2,98,5,12>": "1" - }, - "<2,98,6>": { - "<2,98,6,1>": "Segoe UI", - "<2,98,6,2>": "-12", - "<2,98,6,3>": "400", - "<2,98,6,4>": "0", - "<2,98,6,5>": "0", - "<2,98,6,6>": "0", - "<2,98,6,7>": "0", - "<2,98,6,8>": "34", - "<2,98,6,9>": "0", - "<2,98,6,10>": "3", - "<2,98,6,11>": "2", - "<2,98,6,12>": "1" - }, - "<2,98,7>": { - "<2,98,7,1>": "Segoe UI", - "<2,98,7,2>": "-12", - "<2,98,7,3>": "400", - "<2,98,7,4>": "0", - "<2,98,7,5>": "0", - "<2,98,7,6>": "0", - "<2,98,7,7>": "0", - "<2,98,7,8>": "34", - "<2,98,7,9>": "0", - "<2,98,7,10>": "3", - "<2,98,7,11>": "2", - "<2,98,7,12>": "1" - } - }, - "<2,99>": { - "<2,99,1>": { - "<2,99,1,1>": "-2", - "<2,99,1,2>": "-2", - "<2,99,1,3>": "-2", - "<2,99,1,4>": "0", - "<2,99,1,5>": "0", - "<2,99,1,6>": "0", - "<2,99,1,7>": "0" - }, - "<2,99,2>": { - "<2,99,2,1>": "-2", - "<2,99,2,2>": "-2", - "<2,99,2,3>": "-2", - "<2,99,2,4>": "0", - "<2,99,2,5>": "0", - "<2,99,2,6>": "0", - "<2,99,2,7>": "0" - }, - "<2,99,3>": { - "<2,99,3,1>": "-2", - "<2,99,3,2>": "-2", - "<2,99,3,3>": "-2", - "<2,99,3,4>": "0", - "<2,99,3,5>": "0", - "<2,99,3,6>": "0", - "<2,99,3,7>": "0" - }, - "<2,99,4>": { - "<2,99,4,1>": "-2", - "<2,99,4,2>": "-2", - "<2,99,4,3>": "-2", - "<2,99,4,4>": "0", - "<2,99,4,5>": "0", - "<2,99,4,6>": "0", - "<2,99,4,7>": "0" - }, - "<2,99,5>": { - "<2,99,5,1>": "-2", - "<2,99,5,2>": "-2", - "<2,99,5,3>": "-2", - "<2,99,5,4>": "0", - "<2,99,5,5>": "0", - "<2,99,5,6>": "0", - "<2,99,5,7>": "0" - }, - "<2,99,6>": { - "<2,99,6,1>": "-2", - "<2,99,6,2>": "-2", - "<2,99,6,3>": "-2", - "<2,99,6,4>": "0", - "<2,99,6,5>": "0", - "<2,99,6,6>": "0", - "<2,99,6,7>": "0" - }, - "<2,99,7>": { - "<2,99,7,1>": "-2", - "<2,99,7,2>": "-2", - "<2,99,7,3>": "-2", - "<2,99,7,4>": "0", - "<2,99,7,5>": "0", - "<2,99,7,6>": "0", - "<2,99,7,7>": "0" - }, - "<2,99,8>": "", - "<2,99,9>": "", - "<2,99,10>": "", - "<2,99,11>": { - "<2,99,11,1>": "-2", - "<2,99,11,2>": "-2", - "<2,99,11,3>": "-2", - "<2,99,11,4>": "0", - "<2,99,11,5>": "0", - "<2,99,11,6>": "0", - "<2,99,11,7>": "0" - }, - "<2,99,12>": { - "<2,99,12,1>": "-2", - "<2,99,12,2>": "-2", - "<2,99,12,3>": "-2", - "<2,99,12,4>": "0", - "<2,99,12,5>": "0", - "<2,99,12,6>": "0", - "<2,99,12,7>": "0" - }, - "<2,99,13>": { - "<2,99,13,1>": "-2", - "<2,99,13,2>": "-2", - "<2,99,13,3>": "-2", - "<2,99,13,4>": "0", - "<2,99,13,5>": "0", - "<2,99,13,6>": "0", - "<2,99,13,7>": "0" - }, - "<2,99,14>": { - "<2,99,14,1>": "-2", - "<2,99,14,2>": "-2", - "<2,99,14,3>": "-2", - "<2,99,14,4>": "0", - "<2,99,14,5>": "0", - "<2,99,14,6>": "0", - "<2,99,14,7>": "0" - }, - "<2,99,15>": { - "<2,99,15,1>": "-2", - "<2,99,15,2>": "-2", - "<2,99,15,3>": "-2", - "<2,99,15,4>": "0", - "<2,99,15,5>": "0", - "<2,99,15,6>": "0", - "<2,99,15,7>": "0" - }, - "<2,99,16>": { - "<2,99,16,1>": "-2", - "<2,99,16,2>": "-2", - "<2,99,16,3>": "-2", - "<2,99,16,4>": "0", - "<2,99,16,5>": "0", - "<2,99,16,6>": "0", - "<2,99,16,7>": "0" - }, - "<2,99,17>": { - "<2,99,17,1>": "-2", - "<2,99,17,2>": "-2", - "<2,99,17,3>": "-2", - "<2,99,17,4>": "0", - "<2,99,17,5>": "0", - "<2,99,17,6>": "0", - "<2,99,17,7>": "0" - }, - "<2,99,18>": "", - "<2,99,19>": "", - "<2,99,20>": "", - "<2,99,21>": { - "<2,99,21,1>": "-2", - "<2,99,21,2>": "-2", - "<2,99,21,3>": "-2", - "<2,99,21,4>": "0", - "<2,99,21,5>": "0", - "<2,99,21,6>": "0", - "<2,99,21,7>": "0" - }, - "<2,99,22>": { - "<2,99,22,1>": "-2", - "<2,99,22,2>": "-2", - "<2,99,22,3>": "-2", - "<2,99,22,4>": "0", - "<2,99,22,5>": "0", - "<2,99,22,6>": "0", - "<2,99,22,7>": "0" - }, - "<2,99,23>": { - "<2,99,23,1>": "-2", - "<2,99,23,2>": "-2", - "<2,99,23,3>": "-2", - "<2,99,23,4>": "0", - "<2,99,23,5>": "0", - "<2,99,23,6>": "0", - "<2,99,23,7>": "0" - }, - "<2,99,24>": { - "<2,99,24,1>": "-2", - "<2,99,24,2>": "-2", - "<2,99,24,3>": "-2", - "<2,99,24,4>": "0", - "<2,99,24,5>": "0", - "<2,99,24,6>": "0", - "<2,99,24,7>": "0" - }, - "<2,99,25>": { - "<2,99,25,1>": "-2", - "<2,99,25,2>": "-2", - "<2,99,25,3>": "-2", - "<2,99,25,4>": "0", - "<2,99,25,5>": "0", - "<2,99,25,6>": "0", - "<2,99,25,7>": "0" - }, - "<2,99,26>": { - "<2,99,26,1>": "-2", - "<2,99,26,2>": "-2", - "<2,99,26,3>": "-2", - "<2,99,26,4>": "0", - "<2,99,26,5>": "0", - "<2,99,26,6>": "0", - "<2,99,26,7>": "0" - }, - "<2,99,27>": { - "<2,99,27,1>": "-2", - "<2,99,27,2>": "-2", - "<2,99,27,3>": "-2", - "<2,99,27,4>": "0", - "<2,99,27,5>": "0", - "<2,99,27,6>": "0", - "<2,99,27,7>": "0" - } - }, - "<2,100>": { - "<2,100,1>": "", - "<2,100,2>": "", - "<2,100,3>": "", - "<2,100,4>": "", - "<2,100,5>": "", - "<2,100,6>": "", - "<2,100,7>": "" - }, + "<2,94>": "", + "<2,95>": "", + "<2,96>": "", + "<2,97>": "", + "<2,98>": "", + "<2,99>": "", + "<2,100>": "", "<2,101>": "", "<2,102>": "", "<2,103>": "", @@ -1667,24 +507,24 @@ "<2,108>": "" }, "<3>": { - "<3,1>": "LBL_CURR_OPERATION", + "<3,1>": "EDT_LOT_EVENTS", "<3,2>": "", - "<3,3>": "STATIC", + "<3,3>": "EDITTABLE", "<3,4>": "NDW_VIEW_LOT", - "<3,5>": "4", - "<3,6>": "96", - "<3,7>": "196", - "<3,8>": "36", - "<3,9>": "Current Operation", + "<3,5>": "56", + "<3,6>": "332", + "<3,7>": "884", + "<3,8>": "212", + "<3,9>": "", "<3,10>": { - "<3,10,1>": "0x56000800", - "<3,10,2>": "0x0" + "<3,10,1>": "0x560061D1", + "<3,10,2>": "0x200" }, "<3,11>": { - "<3,11,1>": "0x0", + "<3,11,1>": "0x60000", "<3,11,2>": "0x80000000" }, - "<3,12>": "6", + "<3,12>": "8", "<3,13>": { "<3,13,1>": "-2", "<3,13,2>": "-2", @@ -1714,28 +554,188 @@ "<3,20>": "", "<3,21>": "", "<3,22>": "", - "<3,23>": "", - "<3,24>": "", + "<3,23>": { + "<3,23,1>": "", + "<3,23,2>": "", + "<3,23,3>": "", + "<3,23,4>": "", + "<3,23,5>": "" + }, + "<3,24>": { + "<3,24,1>": "", + "<3,24,2>": "", + "<3,24,3>": "", + "<3,24,4>": "", + "<3,24,5>": "" + }, "<3,25>": "", "<3,26>": "", "<3,27>": "", - "<3,28>": "", - "<3,29>": "", - "<3,30>": "", - "<3,31>": "", + "<3,28>": { + "<3,28,1>": "", + "<3,28,2>": "", + "<3,28,3>": "", + "<3,28,4>": "", + "<3,28,5>": "" + }, + "<3,29>": { + "<3,29,1>": "", + "<3,29,2>": "", + "<3,29,3>": "", + "<3,29,4>": "", + "<3,29,5>": "" + }, + "<3,30>": { + "<3,30,1>": "<>", + "<3,30,2>": "<>", + "<3,30,3>": "<>", + "<3,30,4>": "<>", + "<3,30,5>": "<>" + }, + "<3,31>": { + "<3,31,1>": "0", + "<3,31,2>": "0", + "<3,31,3>": "0", + "<3,31,4>": "0", + "<3,31,5>": "0" + }, "<3,32>": "", "<3,33>": "", "<3,34>": "", - "<3,35>": "", + "<3,35>": { + "<3,35,1>": { + "<3,35,1,1>": "", + "<3,35,1,2>": "", + "<3,35,1,3>": "", + "<3,35,1,4>": "", + "<3,35,1,5>": "" + }, + "<3,35,2>": { + "<3,35,2,1>": "", + "<3,35,2,2>": "", + "<3,35,2,3>": "", + "<3,35,2,4>": "", + "<3,35,2,5>": "" + }, + "<3,35,3>": { + "<3,35,3,1>": "", + "<3,35,3,2>": "", + "<3,35,3,3>": "", + "<3,35,3,4>": "", + "<3,35,3,5>": "" + }, + "<3,35,4>": { + "<3,35,4,1>": "", + "<3,35,4,2>": "", + "<3,35,4,3>": "", + "<3,35,4,4>": "", + "<3,35,4,5>": "" + }, + "<3,35,5>": { + "<3,35,5,1>": "", + "<3,35,5,2>": "", + "<3,35,5,3>": "", + "<3,35,5,4>": "", + "<3,35,5,5>": "" + }, + "<3,35,6>": { + "<3,35,6,1>": "", + "<3,35,6,2>": "", + "<3,35,6,3>": "", + "<3,35,6,4>": "", + "<3,35,6,5>": "" + }, + "<3,35,7>": { + "<3,35,7,1>": "", + "<3,35,7,2>": "", + "<3,35,7,3>": "", + "<3,35,7,4>": "", + "<3,35,7,5>": "" + }, + "<3,35,8>": { + "<3,35,8,1>": "", + "<3,35,8,2>": "", + "<3,35,8,3>": "", + "<3,35,8,4>": "", + "<3,35,8,5>": "" + }, + "<3,35,9>": { + "<3,35,9,1>": "", + "<3,35,9,2>": "", + "<3,35,9,3>": "", + "<3,35,9,4>": "", + "<3,35,9,5>": "" + }, + "<3,35,10>": { + "<3,35,10,1>": "", + "<3,35,10,2>": "", + "<3,35,10,3>": "", + "<3,35,10,4>": "", + "<3,35,10,5>": "" + }, + "<3,35,11>": { + "<3,35,11,1>": "", + "<3,35,11,2>": "", + "<3,35,11,3>": "", + "<3,35,11,4>": "", + "<3,35,11,5>": "" + }, + "<3,35,12>": { + "<3,35,12,1>": "", + "<3,35,12,2>": "", + "<3,35,12,3>": "", + "<3,35,12,4>": "", + "<3,35,12,5>": "" + } + }, "<3,36>": "", "<3,37>": "", "<3,38>": "", - "<3,39>": "", - "<3,40>": "", - "<3,41>": "", - "<3,42>": "", - "<3,43>": "", - "<3,44>": "", + "<3,39>": { + "<3,39,1>": "80", + "<3,39,2>": "80", + "<3,39,3>": "80", + "<3,39,4>": "80", + "<3,39,5>": "80" + }, + "<3,40>": "5", + "<3,41>": { + "<3,41,1>": "0", + "<3,41,2>": "0", + "<3,41,3>": "0", + "<3,41,4>": "-2", + "<3,41,5>": "-2", + "<3,41,6>": "", + "<3,41,7>": "", + "<3,41,8>": "40", + "<3,41,9>": "113", + "<3,41,10>": "115", + "<3,41,11>": "0", + "<3,41,12>": "-2", + "<3,41,13>": "-1", + "<3,41,14>": "1" + }, + "<3,42>": { + "<3,42,1>": "2147483648", + "<3,42,2>": "2147483648", + "<3,42,3>": "2147483648", + "<3,42,4>": "2147483648", + "<3,42,5>": "2147483648" + }, + "<3,43>": { + "<3,43,1>": "120", + "<3,43,2>": "120", + "<3,43,3>": "120", + "<3,43,4>": "120", + "<3,43,5>": "470" + }, + "<3,44>": { + "<3,44,1>": "Event Datetime", + "<3,44,2>": "Event Type", + "<3,44,3>": "Operator", + "<3,44,4>": "Operation", + "<3,44,5>": "Note" + }, "<3,45>": "", "<3,46>": "", "<3,47>": "", @@ -1746,30 +746,47 @@ "<3,52>": "", "<3,53>": "", "<3,54>": "", - "<3,55>": "", - "<3,56>": "", - "<3,57>": "", - "<3,58>": "", + "<3,55>": { + "<3,55,1>": "", + "<3,55,2>": "", + "<3,55,3>": "", + "<3,55,4>": "", + "<3,55,5>": "" + }, + "<3,56>": { + "<3,56,1>": "", + "<3,56,2>": "", + "<3,56,3>": "", + "<3,56,4>": "", + "<3,56,5>": "" + }, + "<3,57>": { + "<3,57,1>": "", + "<3,57,2>": "", + "<3,57,3>": "", + "<3,57,4>": "", + "<3,57,5>": "" + }, + "<3,58>": { + "<3,58,1>": "", + "<3,58,2>": "", + "<3,58,3>": "", + "<3,58,4>": "", + "<3,58,5>": "" + }, "<3,59>": "", - "<3,60>": "", + "<3,60>": { + "<3,60,1>": "4178", + "<3,60,2>": "4178", + "<3,60,3>": "4178", + "<3,60,4>": "4178", + "<3,60,5>": "4178" + }, "<3,61>": "", "<3,62>": "0", - "<3,63>": { - "<3,63,1>": "", - "<3,63,2>": "", - "<3,63,3>": "", - "<3,63,4>": "", - "<3,63,5>": "", - "<3,63,6>": "", - "<3,63,7>": "", - "<3,63,8>": "" - }, - "<3,64>": { - "<3,64,1>": "", - "<3,64,2>": "", - "<3,64,3>": "" - }, - "<3,65>": "-2", + "<3,63>": "", + "<3,64>": "-2", + "<3,65>": "", "<3,66>": "", "<3,67>": "", "<3,68>": "", @@ -1794,17 +811,391 @@ "<3,87>": "", "<3,88>": "", "<3,89>": "", - "<3,90>": "0", - "<3,91>": "0", + "<3,90>": "", + "<3,91>": "", "<3,92>": "", "<3,93>": "", - "<3,94>": "", - "<3,95>": "", - "<3,96>": "", - "<3,97>": "", - "<3,98>": "", - "<3,99>": "", - "<3,100>": "", + "<3,94>": { + "<3,94,1>": "", + "<3,94,2>": "", + "<3,94,3>": "", + "<3,94,4>": "", + "<3,94,5>": "" + }, + "<3,95>": { + "<3,95,1>": "", + "<3,95,2>": "", + "<3,95,3>": "", + "<3,95,4>": "", + "<3,95,5>": "" + }, + "<3,96>": { + "<3,96,1>": { + "<3,96,1,1>": "", + "<3,96,1,2>": "" + }, + "<3,96,2>": { + "<3,96,2,1>": "", + "<3,96,2,2>": "" + }, + "<3,96,3>": "", + "<3,96,4>": { + "<3,96,4,1>": "", + "<3,96,4,2>": "" + }, + "<3,96,5>": { + "<3,96,5,1>": "", + "<3,96,5,2>": "" + } + }, + "<3,97>": { + "<3,97,1>": { + "<3,97,1,1>": "Segoe UI", + "<3,97,1,2>": "-12", + "<3,97,1,3>": "400", + "<3,97,1,4>": "0", + "<3,97,1,5>": "0", + "<3,97,1,6>": "0", + "<3,97,1,7>": "0", + "<3,97,1,8>": "34", + "<3,97,1,9>": "0", + "<3,97,1,10>": "3", + "<3,97,1,11>": "2", + "<3,97,1,12>": "1" + }, + "<3,97,2>": { + "<3,97,2,1>": "Segoe UI", + "<3,97,2,2>": "-12", + "<3,97,2,3>": "400", + "<3,97,2,4>": "0", + "<3,97,2,5>": "0", + "<3,97,2,6>": "0", + "<3,97,2,7>": "0", + "<3,97,2,8>": "34", + "<3,97,2,9>": "0", + "<3,97,2,10>": "3", + "<3,97,2,11>": "2", + "<3,97,2,12>": "1" + }, + "<3,97,3>": { + "<3,97,3,1>": "Segoe UI", + "<3,97,3,2>": "-12", + "<3,97,3,3>": "400", + "<3,97,3,4>": "0", + "<3,97,3,5>": "0", + "<3,97,3,6>": "0", + "<3,97,3,7>": "0", + "<3,97,3,8>": "34", + "<3,97,3,9>": "0", + "<3,97,3,10>": "3", + "<3,97,3,11>": "2", + "<3,97,3,12>": "1" + }, + "<3,97,4>": { + "<3,97,4,1>": "Segoe UI", + "<3,97,4,2>": "-12", + "<3,97,4,3>": "400", + "<3,97,4,4>": "0", + "<3,97,4,5>": "0", + "<3,97,4,6>": "0", + "<3,97,4,7>": "0", + "<3,97,4,8>": "34", + "<3,97,4,9>": "0", + "<3,97,4,10>": "3", + "<3,97,4,11>": "2", + "<3,97,4,12>": "1" + }, + "<3,97,5>": { + "<3,97,5,1>": "Segoe UI", + "<3,97,5,2>": "-12", + "<3,97,5,3>": "400", + "<3,97,5,4>": "0", + "<3,97,5,5>": "0", + "<3,97,5,6>": "0", + "<3,97,5,7>": "0", + "<3,97,5,8>": "34", + "<3,97,5,9>": "0", + "<3,97,5,10>": "3", + "<3,97,5,11>": "2", + "<3,97,5,12>": "1" + } + }, + "<3,98>": { + "<3,98,1>": { + "<3,98,1,1>": "Segoe UI", + "<3,98,1,2>": "-12", + "<3,98,1,3>": "400", + "<3,98,1,4>": "0", + "<3,98,1,5>": "0", + "<3,98,1,6>": "0", + "<3,98,1,7>": "0", + "<3,98,1,8>": "34", + "<3,98,1,9>": "0", + "<3,98,1,10>": "3", + "<3,98,1,11>": "2", + "<3,98,1,12>": "1" + }, + "<3,98,2>": { + "<3,98,2,1>": "Segoe UI", + "<3,98,2,2>": "-12", + "<3,98,2,3>": "400", + "<3,98,2,4>": "0", + "<3,98,2,5>": "0", + "<3,98,2,6>": "0", + "<3,98,2,7>": "0", + "<3,98,2,8>": "34", + "<3,98,2,9>": "0", + "<3,98,2,10>": "3", + "<3,98,2,11>": "2", + "<3,98,2,12>": "1" + }, + "<3,98,3>": { + "<3,98,3,1>": "Segoe UI", + "<3,98,3,2>": "-12", + "<3,98,3,3>": "400", + "<3,98,3,4>": "0", + "<3,98,3,5>": "0", + "<3,98,3,6>": "0", + "<3,98,3,7>": "0", + "<3,98,3,8>": "34", + "<3,98,3,9>": "0", + "<3,98,3,10>": "3", + "<3,98,3,11>": "2", + "<3,98,3,12>": "1" + }, + "<3,98,4>": { + "<3,98,4,1>": "Segoe UI", + "<3,98,4,2>": "-12", + "<3,98,4,3>": "400", + "<3,98,4,4>": "0", + "<3,98,4,5>": "0", + "<3,98,4,6>": "0", + "<3,98,4,7>": "0", + "<3,98,4,8>": "34", + "<3,98,4,9>": "0", + "<3,98,4,10>": "3", + "<3,98,4,11>": "2", + "<3,98,4,12>": "1" + }, + "<3,98,5>": { + "<3,98,5,1>": "Segoe UI", + "<3,98,5,2>": "-12", + "<3,98,5,3>": "400", + "<3,98,5,4>": "0", + "<3,98,5,5>": "0", + "<3,98,5,6>": "0", + "<3,98,5,7>": "0", + "<3,98,5,8>": "34", + "<3,98,5,9>": "0", + "<3,98,5,10>": "3", + "<3,98,5,11>": "2", + "<3,98,5,12>": "1" + } + }, + "<3,99>": { + "<3,99,1>": { + "<3,99,1,1>": "-2", + "<3,99,1,2>": "-2", + "<3,99,1,3>": "-2", + "<3,99,1,4>": "0", + "<3,99,1,5>": "0", + "<3,99,1,6>": "0", + "<3,99,1,7>": "0" + }, + "<3,99,2>": { + "<3,99,2,1>": "-2", + "<3,99,2,2>": "-2", + "<3,99,2,3>": "-2", + "<3,99,2,4>": "0", + "<3,99,2,5>": "0", + "<3,99,2,6>": "0", + "<3,99,2,7>": "0" + }, + "<3,99,3>": { + "<3,99,3,1>": "-2", + "<3,99,3,2>": "-2", + "<3,99,3,3>": "-2", + "<3,99,3,4>": "0", + "<3,99,3,5>": "0", + "<3,99,3,6>": "0", + "<3,99,3,7>": "0" + }, + "<3,99,4>": { + "<3,99,4,1>": "-2", + "<3,99,4,2>": "-2", + "<3,99,4,3>": "-2", + "<3,99,4,4>": "0", + "<3,99,4,5>": "0", + "<3,99,4,6>": "0", + "<3,99,4,7>": "0" + }, + "<3,99,5>": { + "<3,99,5,1>": "-2", + "<3,99,5,2>": "-2", + "<3,99,5,3>": "-2", + "<3,99,5,4>": "0", + "<3,99,5,5>": "0", + "<3,99,5,6>": "0", + "<3,99,5,7>": "0" + }, + "<3,99,6>": { + "<3,99,6,1>": "-2", + "<3,99,6,2>": "-2", + "<3,99,6,3>": "-2", + "<3,99,6,4>": "0", + "<3,99,6,5>": "0", + "<3,99,6,6>": "0", + "<3,99,6,7>": "0" + }, + "<3,99,7>": { + "<3,99,7,1>": "-2", + "<3,99,7,2>": "-2", + "<3,99,7,3>": "-2", + "<3,99,7,4>": "0", + "<3,99,7,5>": "0", + "<3,99,7,6>": "0", + "<3,99,7,7>": "0" + }, + "<3,99,8>": "", + "<3,99,9>": "", + "<3,99,10>": "", + "<3,99,11>": { + "<3,99,11,1>": "-2", + "<3,99,11,2>": "-2", + "<3,99,11,3>": "-2", + "<3,99,11,4>": "0", + "<3,99,11,5>": "0", + "<3,99,11,6>": "0", + "<3,99,11,7>": "0" + }, + "<3,99,12>": { + "<3,99,12,1>": "-2", + "<3,99,12,2>": "-2", + "<3,99,12,3>": "-2", + "<3,99,12,4>": "0", + "<3,99,12,5>": "0", + "<3,99,12,6>": "0", + "<3,99,12,7>": "0" + }, + "<3,99,13>": { + "<3,99,13,1>": "-2", + "<3,99,13,2>": "-2", + "<3,99,13,3>": "-2", + "<3,99,13,4>": "0", + "<3,99,13,5>": "0", + "<3,99,13,6>": "0", + "<3,99,13,7>": "0" + }, + "<3,99,14>": { + "<3,99,14,1>": "-2", + "<3,99,14,2>": "-2", + "<3,99,14,3>": "-2", + "<3,99,14,4>": "0", + "<3,99,14,5>": "0", + "<3,99,14,6>": "0", + "<3,99,14,7>": "0" + }, + "<3,99,15>": { + "<3,99,15,1>": "-2", + "<3,99,15,2>": "-2", + "<3,99,15,3>": "-2", + "<3,99,15,4>": "0", + "<3,99,15,5>": "0", + "<3,99,15,6>": "0", + "<3,99,15,7>": "0" + }, + "<3,99,16>": { + "<3,99,16,1>": "-2", + "<3,99,16,2>": "-2", + "<3,99,16,3>": "-2", + "<3,99,16,4>": "0", + "<3,99,16,5>": "0", + "<3,99,16,6>": "0", + "<3,99,16,7>": "0" + }, + "<3,99,17>": { + "<3,99,17,1>": "-2", + "<3,99,17,2>": "-2", + "<3,99,17,3>": "-2", + "<3,99,17,4>": "0", + "<3,99,17,5>": "0", + "<3,99,17,6>": "0", + "<3,99,17,7>": "0" + }, + "<3,99,18>": "", + "<3,99,19>": "", + "<3,99,20>": "", + "<3,99,21>": { + "<3,99,21,1>": "-2", + "<3,99,21,2>": "-2", + "<3,99,21,3>": "-2", + "<3,99,21,4>": "0", + "<3,99,21,5>": "0", + "<3,99,21,6>": "0", + "<3,99,21,7>": "0" + }, + "<3,99,22>": { + "<3,99,22,1>": "-2", + "<3,99,22,2>": "-2", + "<3,99,22,3>": "-2", + "<3,99,22,4>": "0", + "<3,99,22,5>": "0", + "<3,99,22,6>": "0", + "<3,99,22,7>": "0" + }, + "<3,99,23>": { + "<3,99,23,1>": "-2", + "<3,99,23,2>": "-2", + "<3,99,23,3>": "-2", + "<3,99,23,4>": "0", + "<3,99,23,5>": "0", + "<3,99,23,6>": "0", + "<3,99,23,7>": "0" + }, + "<3,99,24>": { + "<3,99,24,1>": "-2", + "<3,99,24,2>": "-2", + "<3,99,24,3>": "-2", + "<3,99,24,4>": "0", + "<3,99,24,5>": "0", + "<3,99,24,6>": "0", + "<3,99,24,7>": "0" + }, + "<3,99,25>": { + "<3,99,25,1>": "-2", + "<3,99,25,2>": "-2", + "<3,99,25,3>": "-2", + "<3,99,25,4>": "0", + "<3,99,25,5>": "0", + "<3,99,25,6>": "0", + "<3,99,25,7>": "0" + }, + "<3,99,26>": { + "<3,99,26,1>": "-2", + "<3,99,26,2>": "-2", + "<3,99,26,3>": "-2", + "<3,99,26,4>": "0", + "<3,99,26,5>": "0", + "<3,99,26,6>": "0", + "<3,99,26,7>": "0" + }, + "<3,99,27>": { + "<3,99,27,1>": "-2", + "<3,99,27,2>": "-2", + "<3,99,27,3>": "-2", + "<3,99,27,4>": "0", + "<3,99,27,5>": "0", + "<3,99,27,6>": "0", + "<3,99,27,7>": "0" + } + }, + "<3,100>": { + "<3,100,1>": "", + "<3,100,2>": "", + "<3,100,3>": "", + "<3,100,4>": "", + "<3,100,5>": "" + }, "<3,101>": "", "<3,102>": "", "<3,103>": "", @@ -1815,28 +1206,28 @@ "<3,108>": "" }, "<4>": { - "<4,1>": "HSP_1", + "<4,1>": "EDT_LOT_OPERATIONS", "<4,2>": "", - "<4,3>": "HSPLITBAR", + "<4,3>": "EDITTABLE", "<4,4>": "NDW_VIEW_LOT", - "<4,5>": "8", - "<4,6>": "72", - "<4,7>": "981", - "<4,8>": "7", + "<4,5>": "56", + "<4,6>": "160", + "<4,7>": "884", + "<4,8>": "140", "<4,9>": "", "<4,10>": { - "<4,10,1>": "0x56000000", - "<4,10,2>": "0x0" + "<4,10,1>": "0x560061D1", + "<4,10,2>": "0x200" }, "<4,11>": { - "<4,11,1>": "0x0", + "<4,11,1>": "0x60000", "<4,11,2>": "0x80000000" }, - "<4,12>": "5", + "<4,12>": "7", "<4,13>": { - "<4,13,1>": "-2130706432", - "<4,13,2>": "-2130706432", - "<4,13,3>": "0" + "<4,13,1>": "-2", + "<4,13,2>": "-2", + "<4,13,3>": "" }, "<4,14>": "-2", "<4,15>": { @@ -1862,28 +1253,196 @@ "<4,20>": "", "<4,21>": "", "<4,22>": "", - "<4,23>": "", - "<4,24>": "", + "<4,23>": { + "<4,23,1>": "", + "<4,23,2>": "", + "<4,23,3>": "", + "<4,23,4>": "", + "<4,23,5>": "", + "<4,23,6>": "", + "<4,23,7>": "" + }, + "<4,24>": { + "<4,24,1>": "", + "<4,24,2>": "", + "<4,24,3>": "", + "<4,24,4>": "", + "<4,24,5>": "", + "<4,24,6>": "", + "<4,24,7>": "" + }, "<4,25>": "", "<4,26>": "", "<4,27>": "", - "<4,28>": "", - "<4,29>": "", - "<4,30>": "", - "<4,31>": "", + "<4,28>": { + "<4,28,1>": "", + "<4,28,2>": "", + "<4,28,3>": "", + "<4,28,4>": "", + "<4,28,5>": "", + "<4,28,6>": "", + "<4,28,7>": "" + }, + "<4,29>": { + "<4,29,1>": "", + "<4,29,2>": "", + "<4,29,3>": "", + "<4,29,4>": "", + "<4,29,5>": "", + "<4,29,6>": "", + "<4,29,7>": "" + }, + "<4,30>": { + "<4,30,1>": "<>", + "<4,30,2>": "<>", + "<4,30,3>": "<>", + "<4,30,4>": "<>", + "<4,30,5>": "<>", + "<4,30,6>": "<>", + "<4,30,7>": "<>" + }, + "<4,31>": { + "<4,31,1>": "0", + "<4,31,2>": "0", + "<4,31,3>": "0", + "<4,31,4>": "0", + "<4,31,5>": "0", + "<4,31,6>": "0", + "<4,31,7>": "0" + }, "<4,32>": "", "<4,33>": "", "<4,34>": "", - "<4,35>": "", + "<4,35>": { + "<4,35,1>": { + "<4,35,1,1>": "", + "<4,35,1,2>": "", + "<4,35,1,3>": "", + "<4,35,1,4>": "", + "<4,35,1,5>": "", + "<4,35,1,6>": "", + "<4,35,1,7>": "" + }, + "<4,35,2>": { + "<4,35,2,1>": "", + "<4,35,2,2>": "", + "<4,35,2,3>": "", + "<4,35,2,4>": "", + "<4,35,2,5>": "", + "<4,35,2,6>": "", + "<4,35,2,7>": "" + }, + "<4,35,3>": { + "<4,35,3,1>": "", + "<4,35,3,2>": "", + "<4,35,3,3>": "", + "<4,35,3,4>": "", + "<4,35,3,5>": "", + "<4,35,3,6>": "", + "<4,35,3,7>": "" + }, + "<4,35,4>": { + "<4,35,4,1>": "", + "<4,35,4,2>": "", + "<4,35,4,3>": "", + "<4,35,4,4>": "", + "<4,35,4,5>": "", + "<4,35,4,6>": "", + "<4,35,4,7>": "" + }, + "<4,35,5>": { + "<4,35,5,1>": "", + "<4,35,5,2>": "", + "<4,35,5,3>": "", + "<4,35,5,4>": "", + "<4,35,5,5>": "", + "<4,35,5,6>": "", + "<4,35,5,7>": "" + }, + "<4,35,6>": { + "<4,35,6,1>": "", + "<4,35,6,2>": "", + "<4,35,6,3>": "", + "<4,35,6,4>": "", + "<4,35,6,5>": "", + "<4,35,6,6>": "", + "<4,35,6,7>": "" + }, + "<4,35,7>": { + "<4,35,7,1>": "", + "<4,35,7,2>": "", + "<4,35,7,3>": "", + "<4,35,7,4>": "", + "<4,35,7,5>": "", + "<4,35,7,6>": "", + "<4,35,7,7>": "" + }, + "<4,35,8>": { + "<4,35,8,1>": "", + "<4,35,8,2>": "", + "<4,35,8,3>": "", + "<4,35,8,4>": "", + "<4,35,8,5>": "", + "<4,35,8,6>": "", + "<4,35,8,7>": "" + } + }, "<4,36>": "", - "<4,37>": "0", + "<4,37>": "", "<4,38>": "", - "<4,39>": "", - "<4,40>": "", - "<4,41>": "", - "<4,42>": "", - "<4,43>": "", - "<4,44>": "", + "<4,39>": { + "<4,39,1>": "80", + "<4,39,2>": "80", + "<4,39,3>": "80", + "<4,39,4>": "80", + "<4,39,5>": "80", + "<4,39,6>": "80", + "<4,39,7>": "80" + }, + "<4,40>": "7", + "<4,41>": { + "<4,41,1>": "0", + "<4,41,2>": "0", + "<4,41,3>": "0", + "<4,41,4>": "-2", + "<4,41,5>": "-2", + "<4,41,6>": "", + "<4,41,7>": "", + "<4,41,8>": "40", + "<4,41,9>": "113", + "<4,41,10>": "115", + "<4,41,11>": "0", + "<4,41,12>": "-2", + "<4,41,13>": "-1", + "<4,41,14>": "1" + }, + "<4,42>": { + "<4,42,1>": "2147483648", + "<4,42,2>": "2147483648", + "<4,42,3>": "2147483648", + "<4,42,4>": "2147483648", + "<4,42,5>": "2147483648", + "<4,42,6>": "2147483648", + "<4,42,7>": "2147483648" + }, + "<4,43>": { + "<4,43,1>": "120", + "<4,43,2>": "120", + "<4,43,3>": "120", + "<4,43,4>": "120", + "<4,43,5>": "120", + "<4,43,6>": "120", + "<4,43,7>": "120" + }, + "<4,44>": { + "<4,44,1>": "Operation", + "<4,44,2>": "Operator In", + "<4,44,3>": "Datetime In", + "<4,44,4>": "Wafer Qty In", + "<4,44,5>": "Operator Out", + "<4,44,6>": "Datetime Out", + "<4,44,7>": "Wafer Qty Out" + }, "<4,45>": "", "<4,46>": "", "<4,47>": "", @@ -1894,30 +1453,57 @@ "<4,52>": "", "<4,53>": "", "<4,54>": "", - "<4,55>": "", - "<4,56>": "", - "<4,57>": "", - "<4,58>": "", + "<4,55>": { + "<4,55,1>": "", + "<4,55,2>": "", + "<4,55,3>": "", + "<4,55,4>": "", + "<4,55,5>": "", + "<4,55,6>": "", + "<4,55,7>": "" + }, + "<4,56>": { + "<4,56,1>": "", + "<4,56,2>": "", + "<4,56,3>": "", + "<4,56,4>": "", + "<4,56,5>": "", + "<4,56,6>": "", + "<4,56,7>": "" + }, + "<4,57>": { + "<4,57,1>": "", + "<4,57,2>": "", + "<4,57,3>": "", + "<4,57,4>": "", + "<4,57,5>": "", + "<4,57,6>": "", + "<4,57,7>": "" + }, + "<4,58>": { + "<4,58,1>": "", + "<4,58,2>": "", + "<4,58,3>": "", + "<4,58,4>": "", + "<4,58,5>": "", + "<4,58,6>": "", + "<4,58,7>": "" + }, "<4,59>": "", - "<4,60>": "", + "<4,60>": { + "<4,60,1>": "4178", + "<4,60,2>": "4178", + "<4,60,3>": "4178", + "<4,60,4>": "4178", + "<4,60,5>": "4178", + "<4,60,6>": "4178", + "<4,60,7>": "4178" + }, "<4,61>": "", "<4,62>": "0", - "<4,63>": { - "<4,63,1>": "", - "<4,63,2>": "", - "<4,63,3>": "", - "<4,63,4>": "", - "<4,63,5>": "", - "<4,63,6>": "", - "<4,63,7>": "", - "<4,63,8>": "" - }, - "<4,64>": { - "<4,64,1>": "", - "<4,64,2>": "", - "<4,64,3>": "" - }, - "<4,65>": "-2", + "<4,63>": "", + "<4,64>": "-2", + "<4,65>": "", "<4,66>": "", "<4,67>": "", "<4,68>": "", @@ -1942,17 +1528,449 @@ "<4,87>": "", "<4,88>": "", "<4,89>": "", - "<4,90>": "0", - "<4,91>": "0", + "<4,90>": "", + "<4,91>": "", "<4,92>": "", "<4,93>": "", - "<4,94>": "", - "<4,95>": "", - "<4,96>": "", - "<4,97>": "", - "<4,98>": "", - "<4,99>": "", - "<4,100>": "", + "<4,94>": { + "<4,94,1>": "", + "<4,94,2>": "", + "<4,94,3>": "", + "<4,94,4>": "", + "<4,94,5>": "", + "<4,94,6>": "", + "<4,94,7>": "" + }, + "<4,95>": { + "<4,95,1>": "", + "<4,95,2>": "", + "<4,95,3>": "", + "<4,95,4>": "", + "<4,95,5>": "", + "<4,95,6>": "", + "<4,95,7>": "" + }, + "<4,96>": { + "<4,96,1>": { + "<4,96,1,1>": "", + "<4,96,1,2>": "" + }, + "<4,96,2>": "", + "<4,96,3>": "", + "<4,96,4>": "", + "<4,96,5>": "", + "<4,96,6>": "", + "<4,96,7>": { + "<4,96,7,1>": "", + "<4,96,7,2>": "" + } + }, + "<4,97>": { + "<4,97,1>": { + "<4,97,1,1>": "Segoe UI", + "<4,97,1,2>": "-12", + "<4,97,1,3>": "400", + "<4,97,1,4>": "0", + "<4,97,1,5>": "0", + "<4,97,1,6>": "0", + "<4,97,1,7>": "0", + "<4,97,1,8>": "34", + "<4,97,1,9>": "0", + "<4,97,1,10>": "3", + "<4,97,1,11>": "2", + "<4,97,1,12>": "1" + }, + "<4,97,2>": { + "<4,97,2,1>": "Segoe UI", + "<4,97,2,2>": "-12", + "<4,97,2,3>": "400", + "<4,97,2,4>": "0", + "<4,97,2,5>": "0", + "<4,97,2,6>": "0", + "<4,97,2,7>": "0", + "<4,97,2,8>": "34", + "<4,97,2,9>": "0", + "<4,97,2,10>": "3", + "<4,97,2,11>": "2", + "<4,97,2,12>": "1" + }, + "<4,97,3>": { + "<4,97,3,1>": "Segoe UI", + "<4,97,3,2>": "-12", + "<4,97,3,3>": "400", + "<4,97,3,4>": "0", + "<4,97,3,5>": "0", + "<4,97,3,6>": "0", + "<4,97,3,7>": "0", + "<4,97,3,8>": "34", + "<4,97,3,9>": "0", + "<4,97,3,10>": "3", + "<4,97,3,11>": "2", + "<4,97,3,12>": "1" + }, + "<4,97,4>": { + "<4,97,4,1>": "Segoe UI", + "<4,97,4,2>": "-12", + "<4,97,4,3>": "400", + "<4,97,4,4>": "0", + "<4,97,4,5>": "0", + "<4,97,4,6>": "0", + "<4,97,4,7>": "0", + "<4,97,4,8>": "34", + "<4,97,4,9>": "0", + "<4,97,4,10>": "3", + "<4,97,4,11>": "2", + "<4,97,4,12>": "1" + }, + "<4,97,5>": { + "<4,97,5,1>": "Segoe UI", + "<4,97,5,2>": "-12", + "<4,97,5,3>": "400", + "<4,97,5,4>": "0", + "<4,97,5,5>": "0", + "<4,97,5,6>": "0", + "<4,97,5,7>": "0", + "<4,97,5,8>": "34", + "<4,97,5,9>": "0", + "<4,97,5,10>": "3", + "<4,97,5,11>": "2", + "<4,97,5,12>": "1" + }, + "<4,97,6>": { + "<4,97,6,1>": "Segoe UI", + "<4,97,6,2>": "-12", + "<4,97,6,3>": "400", + "<4,97,6,4>": "0", + "<4,97,6,5>": "0", + "<4,97,6,6>": "0", + "<4,97,6,7>": "0", + "<4,97,6,8>": "34", + "<4,97,6,9>": "0", + "<4,97,6,10>": "3", + "<4,97,6,11>": "2", + "<4,97,6,12>": "1" + }, + "<4,97,7>": { + "<4,97,7,1>": "Segoe UI", + "<4,97,7,2>": "-12", + "<4,97,7,3>": "400", + "<4,97,7,4>": "0", + "<4,97,7,5>": "0", + "<4,97,7,6>": "0", + "<4,97,7,7>": "0", + "<4,97,7,8>": "34", + "<4,97,7,9>": "0", + "<4,97,7,10>": "3", + "<4,97,7,11>": "2", + "<4,97,7,12>": "1" + } + }, + "<4,98>": { + "<4,98,1>": { + "<4,98,1,1>": "Segoe UI", + "<4,98,1,2>": "-12", + "<4,98,1,3>": "400", + "<4,98,1,4>": "0", + "<4,98,1,5>": "0", + "<4,98,1,6>": "0", + "<4,98,1,7>": "0", + "<4,98,1,8>": "34", + "<4,98,1,9>": "0", + "<4,98,1,10>": "3", + "<4,98,1,11>": "2", + "<4,98,1,12>": "1" + }, + "<4,98,2>": { + "<4,98,2,1>": "Segoe UI", + "<4,98,2,2>": "-12", + "<4,98,2,3>": "400", + "<4,98,2,4>": "0", + "<4,98,2,5>": "0", + "<4,98,2,6>": "0", + "<4,98,2,7>": "0", + "<4,98,2,8>": "34", + "<4,98,2,9>": "0", + "<4,98,2,10>": "3", + "<4,98,2,11>": "2", + "<4,98,2,12>": "1" + }, + "<4,98,3>": { + "<4,98,3,1>": "Segoe UI", + "<4,98,3,2>": "-12", + "<4,98,3,3>": "400", + "<4,98,3,4>": "0", + "<4,98,3,5>": "0", + "<4,98,3,6>": "0", + "<4,98,3,7>": "0", + "<4,98,3,8>": "34", + "<4,98,3,9>": "0", + "<4,98,3,10>": "3", + "<4,98,3,11>": "2", + "<4,98,3,12>": "1" + }, + "<4,98,4>": { + "<4,98,4,1>": "Segoe UI", + "<4,98,4,2>": "-12", + "<4,98,4,3>": "400", + "<4,98,4,4>": "0", + "<4,98,4,5>": "0", + "<4,98,4,6>": "0", + "<4,98,4,7>": "0", + "<4,98,4,8>": "34", + "<4,98,4,9>": "0", + "<4,98,4,10>": "3", + "<4,98,4,11>": "2", + "<4,98,4,12>": "1" + }, + "<4,98,5>": { + "<4,98,5,1>": "Segoe UI", + "<4,98,5,2>": "-12", + "<4,98,5,3>": "400", + "<4,98,5,4>": "0", + "<4,98,5,5>": "0", + "<4,98,5,6>": "0", + "<4,98,5,7>": "0", + "<4,98,5,8>": "34", + "<4,98,5,9>": "0", + "<4,98,5,10>": "3", + "<4,98,5,11>": "2", + "<4,98,5,12>": "1" + }, + "<4,98,6>": { + "<4,98,6,1>": "Segoe UI", + "<4,98,6,2>": "-12", + "<4,98,6,3>": "400", + "<4,98,6,4>": "0", + "<4,98,6,5>": "0", + "<4,98,6,6>": "0", + "<4,98,6,7>": "0", + "<4,98,6,8>": "34", + "<4,98,6,9>": "0", + "<4,98,6,10>": "3", + "<4,98,6,11>": "2", + "<4,98,6,12>": "1" + }, + "<4,98,7>": { + "<4,98,7,1>": "Segoe UI", + "<4,98,7,2>": "-12", + "<4,98,7,3>": "400", + "<4,98,7,4>": "0", + "<4,98,7,5>": "0", + "<4,98,7,6>": "0", + "<4,98,7,7>": "0", + "<4,98,7,8>": "34", + "<4,98,7,9>": "0", + "<4,98,7,10>": "3", + "<4,98,7,11>": "2", + "<4,98,7,12>": "1" + } + }, + "<4,99>": { + "<4,99,1>": { + "<4,99,1,1>": "-2", + "<4,99,1,2>": "-2", + "<4,99,1,3>": "-2", + "<4,99,1,4>": "0", + "<4,99,1,5>": "0", + "<4,99,1,6>": "0", + "<4,99,1,7>": "0" + }, + "<4,99,2>": { + "<4,99,2,1>": "-2", + "<4,99,2,2>": "-2", + "<4,99,2,3>": "-2", + "<4,99,2,4>": "0", + "<4,99,2,5>": "0", + "<4,99,2,6>": "0", + "<4,99,2,7>": "0" + }, + "<4,99,3>": { + "<4,99,3,1>": "-2", + "<4,99,3,2>": "-2", + "<4,99,3,3>": "-2", + "<4,99,3,4>": "0", + "<4,99,3,5>": "0", + "<4,99,3,6>": "0", + "<4,99,3,7>": "0" + }, + "<4,99,4>": { + "<4,99,4,1>": "-2", + "<4,99,4,2>": "-2", + "<4,99,4,3>": "-2", + "<4,99,4,4>": "0", + "<4,99,4,5>": "0", + "<4,99,4,6>": "0", + "<4,99,4,7>": "0" + }, + "<4,99,5>": { + "<4,99,5,1>": "-2", + "<4,99,5,2>": "-2", + "<4,99,5,3>": "-2", + "<4,99,5,4>": "0", + "<4,99,5,5>": "0", + "<4,99,5,6>": "0", + "<4,99,5,7>": "0" + }, + "<4,99,6>": { + "<4,99,6,1>": "-2", + "<4,99,6,2>": "-2", + "<4,99,6,3>": "-2", + "<4,99,6,4>": "0", + "<4,99,6,5>": "0", + "<4,99,6,6>": "0", + "<4,99,6,7>": "0" + }, + "<4,99,7>": { + "<4,99,7,1>": "-2", + "<4,99,7,2>": "-2", + "<4,99,7,3>": "-2", + "<4,99,7,4>": "0", + "<4,99,7,5>": "0", + "<4,99,7,6>": "0", + "<4,99,7,7>": "0" + }, + "<4,99,8>": "", + "<4,99,9>": "", + "<4,99,10>": "", + "<4,99,11>": { + "<4,99,11,1>": "-2", + "<4,99,11,2>": "-2", + "<4,99,11,3>": "-2", + "<4,99,11,4>": "0", + "<4,99,11,5>": "0", + "<4,99,11,6>": "0", + "<4,99,11,7>": "0" + }, + "<4,99,12>": { + "<4,99,12,1>": "-2", + "<4,99,12,2>": "-2", + "<4,99,12,3>": "-2", + "<4,99,12,4>": "0", + "<4,99,12,5>": "0", + "<4,99,12,6>": "0", + "<4,99,12,7>": "0" + }, + "<4,99,13>": { + "<4,99,13,1>": "-2", + "<4,99,13,2>": "-2", + "<4,99,13,3>": "-2", + "<4,99,13,4>": "0", + "<4,99,13,5>": "0", + "<4,99,13,6>": "0", + "<4,99,13,7>": "0" + }, + "<4,99,14>": { + "<4,99,14,1>": "-2", + "<4,99,14,2>": "-2", + "<4,99,14,3>": "-2", + "<4,99,14,4>": "0", + "<4,99,14,5>": "0", + "<4,99,14,6>": "0", + "<4,99,14,7>": "0" + }, + "<4,99,15>": { + "<4,99,15,1>": "-2", + "<4,99,15,2>": "-2", + "<4,99,15,3>": "-2", + "<4,99,15,4>": "0", + "<4,99,15,5>": "0", + "<4,99,15,6>": "0", + "<4,99,15,7>": "0" + }, + "<4,99,16>": { + "<4,99,16,1>": "-2", + "<4,99,16,2>": "-2", + "<4,99,16,3>": "-2", + "<4,99,16,4>": "0", + "<4,99,16,5>": "0", + "<4,99,16,6>": "0", + "<4,99,16,7>": "0" + }, + "<4,99,17>": { + "<4,99,17,1>": "-2", + "<4,99,17,2>": "-2", + "<4,99,17,3>": "-2", + "<4,99,17,4>": "0", + "<4,99,17,5>": "0", + "<4,99,17,6>": "0", + "<4,99,17,7>": "0" + }, + "<4,99,18>": "", + "<4,99,19>": "", + "<4,99,20>": "", + "<4,99,21>": { + "<4,99,21,1>": "-2", + "<4,99,21,2>": "-2", + "<4,99,21,3>": "-2", + "<4,99,21,4>": "0", + "<4,99,21,5>": "0", + "<4,99,21,6>": "0", + "<4,99,21,7>": "0" + }, + "<4,99,22>": { + "<4,99,22,1>": "-2", + "<4,99,22,2>": "-2", + "<4,99,22,3>": "-2", + "<4,99,22,4>": "0", + "<4,99,22,5>": "0", + "<4,99,22,6>": "0", + "<4,99,22,7>": "0" + }, + "<4,99,23>": { + "<4,99,23,1>": "-2", + "<4,99,23,2>": "-2", + "<4,99,23,3>": "-2", + "<4,99,23,4>": "0", + "<4,99,23,5>": "0", + "<4,99,23,6>": "0", + "<4,99,23,7>": "0" + }, + "<4,99,24>": { + "<4,99,24,1>": "-2", + "<4,99,24,2>": "-2", + "<4,99,24,3>": "-2", + "<4,99,24,4>": "0", + "<4,99,24,5>": "0", + "<4,99,24,6>": "0", + "<4,99,24,7>": "0" + }, + "<4,99,25>": { + "<4,99,25,1>": "-2", + "<4,99,25,2>": "-2", + "<4,99,25,3>": "-2", + "<4,99,25,4>": "0", + "<4,99,25,5>": "0", + "<4,99,25,6>": "0", + "<4,99,25,7>": "0" + }, + "<4,99,26>": { + "<4,99,26,1>": "-2", + "<4,99,26,2>": "-2", + "<4,99,26,3>": "-2", + "<4,99,26,4>": "0", + "<4,99,26,5>": "0", + "<4,99,26,6>": "0", + "<4,99,26,7>": "0" + }, + "<4,99,27>": { + "<4,99,27,1>": "-2", + "<4,99,27,2>": "-2", + "<4,99,27,3>": "-2", + "<4,99,27,4>": "0", + "<4,99,27,5>": "0", + "<4,99,27,6>": "0", + "<4,99,27,7>": "0" + } + }, + "<4,100>": { + "<4,100,1>": "", + "<4,100,2>": "", + "<4,100,3>": "", + "<4,100,4>": "", + "<4,100,5>": "", + "<4,100,6>": "", + "<4,100,7>": "" + }, "<4,101>": "", "<4,102>": "", "<4,103>": "", @@ -1963,24 +1981,24 @@ "<4,108>": "" }, "<5>": { - "<5,1>": "EDL_CURR_OPERATION", + "<5,1>": "LBL_CURR_OPERATION", "<5,2>": "", - "<5,3>": "EDITFIELD", + "<5,3>": "STATIC", "<5,4>": "NDW_VIEW_LOT", - "<5,5>": "208", + "<5,5>": "4", "<5,6>": "96", - "<5,7>": "324", + "<5,7>": "196", "<5,8>": "36", - "<5,9>": "", + "<5,9>": "Current Operation", "<5,10>": { - "<5,10,1>": "0x5E000080", - "<5,10,2>": "0x200" + "<5,10,1>": "0x56000800", + "<5,10,2>": "0x0" }, "<5,11>": { "<5,11,1>": "0x0", "<5,11,2>": "0x80000000" }, - "<5,12>": "4", + "<5,12>": "6", "<5,13>": { "<5,13,1>": "-2", "<5,13,2>": "-2", @@ -2005,36 +2023,8 @@ }, "<5,16>": "", "<5,17>": "", - "<5,18>": { - "<5,18,1>": { - "<5,18,1,1>": "X", - "<5,18,1,2>": "EXECUTE", - "<5,18,1,3>": "@WINDOW_EVENTS", - "<5,18,1,4>": { - "<5,18,1,4,1>": "@SELF", - "<5,18,1,4,2>": "@EVENT", - "<5,18,1,4,3>": "@PARAM1", - "<5,18,1,4,4>": "@PARAM2", - "<5,18,1,4,5>": "@PARAM3", - "<5,18,1,4,6>": "@PARAM4", - "<5,18,1,4,7>": "@PARAM5", - "<5,18,1,4,8>": "@PARAM6" - }, - "<5,18,1,5>": "", - "<5,18,1,6>": "", - "<5,18,1,7>": "", - "<5,18,1,8>": "", - "<5,18,1,9>": "", - "<5,18,1,10>": "", - "<5,18,1,11>": "", - "<5,18,1,12>": "", - "<5,18,1,13>": "", - "<5,18,1,14>": "", - "<5,18,1,15>": "COMMEVT", - "<5,18,1,16>": "0" - } - }, - "<5,19>": "LOSTFOCUS", + "<5,18>": "", + "<5,19>": "", "<5,20>": "", "<5,21>": "", "<5,22>": "", @@ -2043,18 +2033,15 @@ "<5,25>": "", "<5,26>": "", "<5,27>": "", - "<5,28>": "<>", - "<5,29>": "<>", - "<5,30>": "<>", - "<5,31>": "0", + "<5,28>": "", + "<5,29>": "", + "<5,30>": "", + "<5,31>": "", "<5,32>": "", "<5,33>": "", "<5,34>": "", "<5,35>": "", - "<5,36>": { - "<5,36,1>": "0", - "<5,36,2>": "0" - }, + "<5,36>": "", "<5,37>": "", "<5,38>": "", "<5,39>": "", @@ -2081,9 +2068,22 @@ "<5,60>": "", "<5,61>": "", "<5,62>": "0", - "<5,63>": "", - "<5,64>": "", - "<5,65>": "", + "<5,63>": { + "<5,63,1>": "", + "<5,63,2>": "", + "<5,63,3>": "", + "<5,63,4>": "", + "<5,63,5>": "", + "<5,63,6>": "", + "<5,63,7>": "", + "<5,63,8>": "" + }, + "<5,64>": { + "<5,64,1>": "", + "<5,64,2>": "", + "<5,64,3>": "" + }, + "<5,65>": "-2", "<5,66>": "", "<5,67>": "", "<5,68>": "", @@ -2108,8 +2108,8 @@ "<5,87>": "", "<5,88>": "", "<5,89>": "", - "<5,90>": "", - "<5,91>": "", + "<5,90>": "0", + "<5,91>": "0", "<5,92>": "", "<5,93>": "", "<5,94>": "", @@ -2129,27 +2129,27 @@ "<5,108>": "" }, "<6>": { - "<6,1>": "PUB_SEARCH_LOT", + "<6,1>": "HSP_1", "<6,2>": "", - "<6,3>": "PUSHBUTTON", + "<6,3>": "HSPLITBAR", "<6,4>": "NDW_VIEW_LOT", - "<6,5>": "580", - "<6,6>": "20", - "<6,7>": "84", - "<6,8>": "36", - "<6,9>": "Search", + "<6,5>": "8", + "<6,6>": "72", + "<6,7>": "981", + "<6,8>": "7", + "<6,9>": "", "<6,10>": { - "<6,10,1>": "0x56002300", + "<6,10,1>": "0x56000000", "<6,10,2>": "0x0" }, "<6,11>": { "<6,11,1>": "0x0", "<6,11,2>": "0x80000000" }, - "<6,12>": "3", + "<6,12>": "5", "<6,13>": { - "<6,13,1>": "-2", - "<6,13,2>": "-2", + "<6,13,1>": "-2130706432", + "<6,13,2>": "-2130706432", "<6,13,3>": "0" }, "<6,14>": "-2", @@ -2190,14 +2190,11 @@ "<6,34>": "", "<6,35>": "", "<6,36>": "", - "<6,37>": "", + "<6,37>": "0", "<6,38>": "", "<6,39>": "", - "<6,40>": "-1", - "<6,41>": { - "<6,41,1>": "", - "<6,41,2>": "-1" - }, + "<6,40>": "", + "<6,41>": "", "<6,42>": "", "<6,43>": "", "<6,44>": "", @@ -2219,11 +2216,20 @@ "<6,60>": "", "<6,61>": "", "<6,62>": "0", - "<6,63>": "", + "<6,63>": { + "<6,63,1>": "", + "<6,63,2>": "", + "<6,63,3>": "", + "<6,63,4>": "", + "<6,63,5>": "", + "<6,63,6>": "", + "<6,63,7>": "", + "<6,63,8>": "" + }, "<6,64>": { - "<6,64,1>": "-2", - "<6,64,2>": "-2", - "<6,64,3>": "0" + "<6,64,1>": "", + "<6,64,2>": "", + "<6,64,3>": "" }, "<6,65>": "-2", "<6,66>": "", @@ -2271,24 +2277,24 @@ "<6,108>": "" }, "<7>": { - "<7,1>": "EDL_LOT_ID", + "<7,1>": "EDL_CURR_OPERATION", "<7,2>": "", "<7,3>": "EDITFIELD", "<7,4>": "NDW_VIEW_LOT", - "<7,5>": "256", - "<7,6>": "20", + "<7,5>": "208", + "<7,6>": "96", "<7,7>": "324", "<7,8>": "36", "<7,9>": "", "<7,10>": { - "<7,10,1>": "0x56000080", + "<7,10,1>": "0x5E000080", "<7,10,2>": "0x200" }, "<7,11>": { "<7,11,1>": "0x0", "<7,11,2>": "0x80000000" }, - "<7,12>": "2", + "<7,12>": "4", "<7,13>": { "<7,13,1>": "-2", "<7,13,2>": "-2", @@ -2437,28 +2443,28 @@ "<7,108>": "" }, "<8>": { - "<8,1>": "LBL_LOT_ID", + "<8,1>": "PUB_SEARCH_LOT", "<8,2>": "", - "<8,3>": "STATIC", + "<8,3>": "PUSHBUTTON", "<8,4>": "NDW_VIEW_LOT", - "<8,5>": "132", + "<8,5>": "580", "<8,6>": "20", - "<8,7>": "124", + "<8,7>": "84", "<8,8>": "36", - "<8,9>": "Lot ID: ", + "<8,9>": "Search", "<8,10>": { - "<8,10,1>": "0x56000800", + "<8,10,1>": "0x56002300", "<8,10,2>": "0x0" }, "<8,11>": { - "<8,11,1>": "0x4", + "<8,11,1>": "0x0", "<8,11,2>": "0x80000000" }, - "<8,12>": "1", + "<8,12>": "3", "<8,13>": { "<8,13,1>": "-2", "<8,13,2>": "-2", - "<8,13,3>": "" + "<8,13,3>": "0" }, "<8,14>": "-2", "<8,15>": { @@ -2501,8 +2507,11 @@ "<8,37>": "", "<8,38>": "", "<8,39>": "", - "<8,40>": "", - "<8,41>": "", + "<8,40>": "-1", + "<8,41>": { + "<8,41,1>": "", + "<8,41,2>": "-1" + }, "<8,42>": "", "<8,43>": "", "<8,44>": "", @@ -2524,20 +2533,11 @@ "<8,60>": "", "<8,61>": "", "<8,62>": "0", - "<8,63>": { - "<8,63,1>": "", - "<8,63,2>": "", - "<8,63,3>": "", - "<8,63,4>": "", - "<8,63,5>": "", - "<8,63,6>": "", - "<8,63,7>": "", - "<8,63,8>": "" - }, + "<8,63>": "", "<8,64>": { - "<8,64,1>": "", - "<8,64,2>": "", - "<8,64,3>": "" + "<8,64,1>": "-2", + "<8,64,2>": "-2", + "<8,64,3>": "0" }, "<8,65>": "-2", "<8,66>": "", @@ -2583,6 +2583,320 @@ "<8,106>": "", "<8,107>": "", "<8,108>": "" + }, + "<9>": { + "<9,1>": "EDL_LOT_ID", + "<9,2>": "", + "<9,3>": "EDITFIELD", + "<9,4>": "NDW_VIEW_LOT", + "<9,5>": "256", + "<9,6>": "20", + "<9,7>": "324", + "<9,8>": "36", + "<9,9>": "", + "<9,10>": { + "<9,10,1>": "0x56000080", + "<9,10,2>": "0x200" + }, + "<9,11>": { + "<9,11,1>": "0x0", + "<9,11,2>": "0x80000000" + }, + "<9,12>": "2", + "<9,13>": { + "<9,13,1>": "-2", + "<9,13,2>": "-2", + "<9,13,3>": "" + }, + "<9,14>": "-2", + "<9,15>": { + "<9,15,1>": { + "<9,15,1,1>": "Segoe UI", + "<9,15,1,2>": "-12", + "<9,15,1,3>": "400", + "<9,15,1,4>": "0", + "<9,15,1,5>": "0", + "<9,15,1,6>": "0", + "<9,15,1,7>": "0", + "<9,15,1,8>": "34", + "<9,15,1,9>": "0", + "<9,15,1,10>": "3", + "<9,15,1,11>": "2", + "<9,15,1,12>": "1" + } + }, + "<9,16>": "", + "<9,17>": "", + "<9,18>": { + "<9,18,1>": { + "<9,18,1,1>": "X", + "<9,18,1,2>": "EXECUTE", + "<9,18,1,3>": "@WINDOW_EVENTS", + "<9,18,1,4>": { + "<9,18,1,4,1>": "@SELF", + "<9,18,1,4,2>": "@EVENT", + "<9,18,1,4,3>": "@PARAM1", + "<9,18,1,4,4>": "@PARAM2", + "<9,18,1,4,5>": "@PARAM3", + "<9,18,1,4,6>": "@PARAM4", + "<9,18,1,4,7>": "@PARAM5", + "<9,18,1,4,8>": "@PARAM6" + }, + "<9,18,1,5>": "", + "<9,18,1,6>": "", + "<9,18,1,7>": "", + "<9,18,1,8>": "", + "<9,18,1,9>": "", + "<9,18,1,10>": "", + "<9,18,1,11>": "", + "<9,18,1,12>": "", + "<9,18,1,13>": "", + "<9,18,1,14>": "", + "<9,18,1,15>": "COMMEVT", + "<9,18,1,16>": "0" + } + }, + "<9,19>": "LOSTFOCUS", + "<9,20>": "", + "<9,21>": "", + "<9,22>": "", + "<9,23>": "", + "<9,24>": "", + "<9,25>": "", + "<9,26>": "", + "<9,27>": "", + "<9,28>": "<>", + "<9,29>": "<>", + "<9,30>": "<>", + "<9,31>": "0", + "<9,32>": "", + "<9,33>": "", + "<9,34>": "", + "<9,35>": "", + "<9,36>": { + "<9,36,1>": "0", + "<9,36,2>": "0" + }, + "<9,37>": "", + "<9,38>": "", + "<9,39>": "", + "<9,40>": "", + "<9,41>": "", + "<9,42>": "", + "<9,43>": "", + "<9,44>": "", + "<9,45>": "", + "<9,46>": "", + "<9,47>": "", + "<9,48>": "", + "<9,49>": "", + "<9,50>": "", + "<9,51>": "", + "<9,52>": "", + "<9,53>": "", + "<9,54>": "", + "<9,55>": "", + "<9,56>": "", + "<9,57>": "", + "<9,58>": "", + "<9,59>": "", + "<9,60>": "", + "<9,61>": "", + "<9,62>": "0", + "<9,63>": "", + "<9,64>": "", + "<9,65>": "", + "<9,66>": "", + "<9,67>": "", + "<9,68>": "", + "<9,69>": "", + "<9,70>": "", + "<9,71>": "", + "<9,72>": "", + "<9,73>": "", + "<9,74>": "", + "<9,75>": "", + "<9,76>": "", + "<9,77>": "", + "<9,78>": "", + "<9,79>": "", + "<9,80>": "", + "<9,81>": "", + "<9,82>": "", + "<9,83>": "", + "<9,84>": "", + "<9,85>": "", + "<9,86>": "", + "<9,87>": "", + "<9,88>": "", + "<9,89>": "", + "<9,90>": "", + "<9,91>": "", + "<9,92>": "", + "<9,93>": "", + "<9,94>": "", + "<9,95>": "", + "<9,96>": "", + "<9,97>": "", + "<9,98>": "", + "<9,99>": "", + "<9,100>": "", + "<9,101>": "", + "<9,102>": "", + "<9,103>": "", + "<9,104>": "", + "<9,105>": "", + "<9,106>": "", + "<9,107>": "", + "<9,108>": "" + }, + "<10>": { + "<10,1>": "LBL_LOT_ID", + "<10,2>": "", + "<10,3>": "STATIC", + "<10,4>": "NDW_VIEW_LOT", + "<10,5>": "132", + "<10,6>": "20", + "<10,7>": "124", + "<10,8>": "36", + "<10,9>": "Lot ID: ", + "<10,10>": { + "<10,10,1>": "0x56000800", + "<10,10,2>": "0x0" + }, + "<10,11>": { + "<10,11,1>": "0x4", + "<10,11,2>": "0x80000000" + }, + "<10,12>": "1", + "<10,13>": { + "<10,13,1>": "-2", + "<10,13,2>": "-2", + "<10,13,3>": "" + }, + "<10,14>": "-2", + "<10,15>": { + "<10,15,1>": { + "<10,15,1,1>": "Segoe UI", + "<10,15,1,2>": "-12", + "<10,15,1,3>": "400", + "<10,15,1,4>": "0", + "<10,15,1,5>": "0", + "<10,15,1,6>": "0", + "<10,15,1,7>": "0", + "<10,15,1,8>": "34", + "<10,15,1,9>": "0", + "<10,15,1,10>": "3", + "<10,15,1,11>": "2", + "<10,15,1,12>": "1" + } + }, + "<10,16>": "", + "<10,17>": "", + "<10,18>": "", + "<10,19>": "", + "<10,20>": "", + "<10,21>": "", + "<10,22>": "", + "<10,23>": "", + "<10,24>": "", + "<10,25>": "", + "<10,26>": "", + "<10,27>": "", + "<10,28>": "", + "<10,29>": "", + "<10,30>": "", + "<10,31>": "", + "<10,32>": "", + "<10,33>": "", + "<10,34>": "", + "<10,35>": "", + "<10,36>": "", + "<10,37>": "", + "<10,38>": "", + "<10,39>": "", + "<10,40>": "", + "<10,41>": "", + "<10,42>": "", + "<10,43>": "", + "<10,44>": "", + "<10,45>": "", + "<10,46>": "", + "<10,47>": "", + "<10,48>": "", + "<10,49>": "", + "<10,50>": "", + "<10,51>": "", + "<10,52>": "", + "<10,53>": "", + "<10,54>": "", + "<10,55>": "", + "<10,56>": "", + "<10,57>": "", + "<10,58>": "", + "<10,59>": "", + "<10,60>": "", + "<10,61>": "", + "<10,62>": "0", + "<10,63>": { + "<10,63,1>": "", + "<10,63,2>": "", + "<10,63,3>": "", + "<10,63,4>": "", + "<10,63,5>": "", + "<10,63,6>": "", + "<10,63,7>": "", + "<10,63,8>": "" + }, + "<10,64>": { + "<10,64,1>": "", + "<10,64,2>": "", + "<10,64,3>": "" + }, + "<10,65>": "-2", + "<10,66>": "", + "<10,67>": "", + "<10,68>": "", + "<10,69>": "", + "<10,70>": "", + "<10,71>": "", + "<10,72>": "", + "<10,73>": "", + "<10,74>": "", + "<10,75>": "", + "<10,76>": "", + "<10,77>": "", + "<10,78>": "", + "<10,79>": "", + "<10,80>": "", + "<10,81>": "", + "<10,82>": "", + "<10,83>": "", + "<10,84>": "", + "<10,85>": "", + "<10,86>": "", + "<10,87>": "", + "<10,88>": "", + "<10,89>": "", + "<10,90>": "0", + "<10,91>": "0", + "<10,92>": "", + "<10,93>": "", + "<10,94>": "", + "<10,95>": "", + "<10,96>": "", + "<10,97>": "", + "<10,98>": "", + "<10,99>": "", + "<10,100>": "", + "<10,101>": "", + "<10,102>": "", + "<10,103>": "", + "<10,104>": "", + "<10,105>": "", + "<10,106>": "", + "<10,107>": "", + "<10,108>": "" } }, "record4": { diff --git a/LSL2/STPROC/LOT_SERVICES.txt b/LSL2/STPROC/LOT_SERVICES.txt index a5df1d6..8c5f15b 100644 --- a/LSL2/STPROC/LOT_SERVICES.txt +++ b/LSL2/STPROC/LOT_SERVICES.txt @@ -28,7 +28,7 @@ LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' L Headers = 'Logging DTM' : @FM : 'Lot Id' : @FM : 'Event Type' : @FM : 'Operator' : @FM : 'Begin Wafer Qty' : @FM : 'End Wafer Qty' : @FM : 'Bonus Wafer Qty' : @FM : 'Reduce Wafer Qty' : @FM : 'Message' objLotEventLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$) -Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION', 'LOAD', 'UNSIGN_LOAD' +Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION', 'LOAD', 'UNSIGN_LOAD', 'TW_USE' Options LOT_TYPES = 'TW', 'RDS', 'WM_OUT', 'WM_IN' GoToService @@ -81,6 +81,7 @@ end service Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, VendorCode, Username, PrinterID, LotId) ; //649491 , 03M6241, 814474, SP + debug CreatedLotNumber = '' ErrorMessage = '' Begin Case @@ -135,9 +136,10 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo If Error_Services('NoError') then //Check in at first operation //Get Curr Operation(Should be first one in sequence) - ThisLotCurrOpId = Lot_Services('GetLotCurrOperation', CreatedLotNumber) + ThisLotCurrOpId = Lot_Services('GetLotCurrOperationId', CreatedLotNumber) If ThisLotCurrOpId NE '' then - Lot_Services('MoveInLot', NewLotId, LotQty, Username) + Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'MOVE_IN', 'Move Lot in.', '', 0, 0, ThisLotCurrOpId, Username) + //Lot_Services('MoveInLot', NewLotId, Username) if Error_Services('NoError') then //Set lot to open Lot_Services('OpenLot', CreatedLotNumber) @@ -149,9 +151,11 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : CreatedLotNumber : ' , ' : Error_Services('GetMessage') end end - Lot_Services('MoveOutLot', NewLotId, LotQty, Username) + Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'MOVE_OUT', 'Move Lot out.', '', 0, 0, '', Username) + //Lot_Services('MoveOutLot', NewLotId, Username) If Error_Services('NoError') then - Lot_Services('MoveInLot', NewLotId, LotQty, Username) + //Lot_Services('MoveInLot', NewLotId, Username) + Lot_Services('CreateLotEvent', CreatedLotNumber, 'TW', Datetime(), 'MOVE_IN', 'Move in out.', '', 0, 0, '', Username) If Error_Services('HasError') then ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') end @@ -249,9 +253,9 @@ Service CreateNewTestWaferLot(LotType, ProdName, LotQty, VendorPartNo, VendorLot If Error_Services('NoError') then //Check in at first operation //Get Curr Operation(Should be first one in sequence) - ThisLotCurrOpId = Lot_Services('GetLotCurrOperation', CreatedLotNumber) + ThisLotCurrOpId = Lot_Services('GetLotCurrOperationId', CreatedLotNumber) If ThisLotCurrOpId NE '' then - Lot_Services('MoveInLot', NewLotId, LotQty, Username) + Lot_Services('MoveInLot', NewLotId, Username) if Error_Services('NoError') then //Set lot to open Lot_Services('OpenLot', CreatedLotNumber) @@ -263,9 +267,9 @@ Service CreateNewTestWaferLot(LotType, ProdName, LotQty, VendorPartNo, VendorLot ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : CreatedLotNumber : ' , ' : Error_Services('GetMessage') end end - Lot_Services('MoveOutLot', NewLotId, LotQty, Username) + Lot_Services('MoveOutLot', NewLotId, Username) If Error_Services('NoError') then - Lot_Services('MoveInLot', NewLotId, LotQty, Username) + Lot_Services('MoveInLot', NewLotId, Username) If Error_Services('HasError') then ErrorMessage = 'Error in Create New Test Wafer Lot Process, lot id: ' : NewLotId : ' , ' : Error_Services('GetMessage') end @@ -454,7 +458,7 @@ Service GetLotEventsInSequence(LotId) Response = LotEventsToReturn end service -Service GetLotCurrOperation(LotId) +Service GetLotCurrOperationId(LotId) CurrOperation = '' If LotID NE '' then //Get them in sequence first @@ -473,13 +477,34 @@ Service GetLotCurrOperation(LotId) Response = CurrOperation end service +Service GetLotCurrOperationName(LotId) + CurrOperationId = '' + CurrOperationName = '' + If LotID NE '' then + //Get them in sequence first + LotOperationsInSequence = Lot_Services('GetLotOperationSequence', LotId) + for each LotOperation in LotOperationsInSequence using @FM + ThisLotOperationStartDTM = Xlate('LOT_OPERATION', LotOperation, LOT_OPERATION_DATETIME_IN$, 'X') + ThisLotOperationEndDTM = Xlate('LOT_OPERATION', LotOperation, LOT_OPERATION_DATETIME_OUT$, 'X') + If ThisLotOperationEndDTM Eq '' then + CurrOperationId = LotOperation + CurrOperationName = Database_Services('ReadDataColumn', 'LOT_OPERATION', CurrOperationId, LOT_OPERATION_OPERATION_ID$, True$, 0, False$) + end + until CurrOperationName + Next LotOperation + end else + //error: lot id was null + end + Response = CurrOperationName +end service + Service AddLotOperationIntoSequence(LotId, NewOperationId, NewSequence, Rework) ErrorMessage = '' If LotId NE '' then If NewSequence NE '' AND Num(NewSequence) then //Get Current Operations in sequence //CurrSequence = Lot_Services('GetLotOperationSequence', LotId) - LotCurrOperation = Lot_Services('GetLotCurrOperation', LotId) + LotCurrOperation = Lot_Services('GetLotCurrOperationId', LotId) CurrOperationSequence = Xlate('LOT_OPERATION', LotCurrOperation, LOT_OPERATION_OPERATION_SEQUENCE$, 'X') If CurrOperationSequence LE NewSequence then //Get Curr Operation Sequence @@ -526,16 +551,30 @@ Service AddLotOperationIntoSequence(LotId, NewOperationId, NewSequence, Rework) end end service -Service MoveInLot(LotID, WaferQty, Operator) +Service IsLotMovedIn(LotId) + Response = '' + If RowExists('LOT', LotId) then + CurrOperId = Lot_Services('GetLotCurrOperationId', LotId) + CurrOperDtmIn = Database_Services('ReadDataColumn', 'LOT_OPERATION', CurrOperId, LOT_OPERATION_DATETIME_IN$, True$, 0, False$) + If CurrOperDtmIn LE Datetime() AND CurrOperDtmIn NE '' then + Response = True$ + end else + Response = False$ + end + end +end service + +Service MoveInLot(LotID, Operator) + debug ErrorMessage = '' ThisLotCurrOperationID = '' If LotId NE '' then - If WaferQty NE '' then If RowExists('LOT', LotId) then ThisLotRec = Database_Services('ReadDataRow', 'LOT', LotId) + WaferQty = ThisLotRec //Possibly Add locking here If Error_Services('NoError') then - ThisLotCurrOperationID = Lot_Services('GetLotCurrOperation', LotId) + ThisLotCurrOperationID = Lot_Services('GetLotCurrOperationId', LotId) If ThisLotCurrOperationID NE '' then ThisLotCurrOperationRec = Database_Services('ReadDataRow', 'LOT_OPERATION', ThisLotCurrOperationID) ThisLotCurrOperationRec = Datetime() @@ -545,7 +584,7 @@ Service MoveInLot(LotID, WaferQty, Operator) If Error_Services('NoError') then LotType = XLATE('LOT', LotId, LOT_TYPE$, 'X') CurrOperation = XLATE('LOT_OPERATION', ThisLotCurrOperationID, LOT_OPERATION_OPERATION_ID$, 'X') - Lot_Services('CreateLotEvent', LotId, LotType, Datetime(), 'MOVE_IN', '', '', 0, 0, CurrOperation, Operator) + //Lot_Services('CreateLotEvent', LotId, LotType, Datetime(), 'MOVE_IN', '', '', 0, 0, CurrOperation, Operator) If Error_Services('HasError') then ErrorMessage = 'Error in Move In process for Lot id ' : LotId : '. ' : Error_Services('GetMessage') end @@ -561,9 +600,6 @@ Service MoveInLot(LotID, WaferQty, Operator) end else ErrorMessage = 'Error in Move In process for Lot id ' : LotId : '. Lot ID not found in LOT table.' end - end else - ErrorMessage = 'Error in Move In process for Lot id ' : LotId : '. Lot Qty was not passed to routine.' - end end else ErrorMessage = 'Error in Move In process. Lot id was not passed to routine.' end @@ -578,27 +614,15 @@ Service MoveInLot(LotID, WaferQty, Operator) end end service -Service MoveOutLot(LotID, WaferQty, Operator) +Service MoveOutLot(LotID, Operator) ErrorMessage = '' ThisLotCurrOperationID = '' If LotId NE '' then - If WaferQty NE '' then If RowExists('LOT', LotId) then ThisLotRec = Database_Services('ReadDataRow', 'LOT', LotId) - CurrLotQty = ThisLotRec - BonusQty = 0 - ReduceQty = 0 - If WaferQty NE CurrLotQty then - Begin Case - Case WaferQty GT CurrLotQty - //Addition of wafers - BonusQty = WaferQty - CurrLotQty - Case WaferQty LT CurrLotQty - ReduceQty = CurrLotQty - WaferQty - End Case - end + WaferQty = ThisLotRec If Error_Services('NoError') then - ThisLotCurrOperationID = Lot_Services('GetLotCurrOperation', LotId) + ThisLotCurrOperationID = Lot_Services('GetLotCurrOperationId', LotId) If ThisLotCurrOperationID NE '' then ThisLotCurrOperationRec = Database_Services('ReadDataRow', 'LOT_OPERATION', ThisLotCurrOperationID) ThisLotCurrOperationRec = Datetime() @@ -608,7 +632,7 @@ Service MoveOutLot(LotID, WaferQty, Operator) If Error_Services('NoError') then LotType = XLATE('LOT', LotId, LOT_TYPE$, 'X') CurrOperation = XLATE('LOT_OPERATION', ThisLotCurrOperationID, LOT_OPERATION_OPERATION_ID$, 'X') - Lot_Services('CreateLotEvent', LotId, LotType, Datetime(), 'MOVE_OUT', '', '', ReduceQty, BonusQty, CurrOperation, Operator) + //Lot_Services('CreateLotEvent', LotId, LotType, Datetime(), 'MOVE_OUT', '', '', ReduceQty, BonusQty, CurrOperation, Operator) If Error_Services('HasError') then ErrorMessage = 'Error in Move In process for Lot id ' : LotId : '. ' : Error_Services('GetMessage') end @@ -624,9 +648,6 @@ Service MoveOutLot(LotID, WaferQty, Operator) end else ErrorMessage = 'Error in Move Out process for Lot id ' : LotId : '. Lot ID not found in LOT table.' end - end else - ErrorMessage = 'Error in Move Out process for Lot id ' : LotId : '. Lot Qty was not passed to routine.' - end end else ErrorMessage = 'Error in Move Out process. Lot id was not passed to routine.' end @@ -650,14 +671,14 @@ Service MoveOutLot(LotID, WaferQty, Operator) end service Service CreateLotEvent(LotId, LotType=LOT_TYPES, EventDatetime, EventType=EVENT_TYPES, EventNote, EventEquipmentId, ReduceWaferQty, BonusWaferQty, OperationId, OperatorId) - - ErrorMessage = '' - BeginWaferQty = '' - EndWaferQty = '' + ErrorMessage = '' + BeginWaferQty = 0 + EndWaferQty = 0 + WaferQtyChange = 0 If LotId NE '' then Begin Case Case LotType EQ 'TW' - If EventType NE '' AND OperatorId NE '' then + If OperatorId NE '' then If RowExists('LOT', LotId) then ValidId = False$ NewEventId = '' @@ -670,40 +691,101 @@ Service CreateLotEvent(LotId, LotType=LOT_TYPES, EventDatetime, EventType=EVENT_ Repeat BeginWaferQty = Xlate('LOT', LotId, LOT_WAFER_QTY$, 'X') If OperationID EQ '' then - OperationID = Lot_Services('GetLotCurrOperation', LotId) - OperationID = XLATE('LOT_OPERATION', OperationID, LOT_OPERATION_OPERATION_ID$, 'X') + OperationID = Lot_Services('GetLotCurrOperationId', LotId) + //CurrOperationName = XLATE('LOT_OPERATION', OperationID, LOT_OPERATION_OPERATION_ID$, 'X') end - //OperationId should be set by now, if not, it is an error. Raise the error and cancel any processing. If OperationID NE '' then - If ReduceWaferQty NE '' then - If Num(ReduceWaferQty) then - EndWaferQty = BeginWaferQty - ReduceWaferQty - end - end - If BonusWaferQty NE '' then - If Num(BonusWaferQty) then - EndWaferQty = BeginWaferQty + BonusWaferQty - end - end - NewEventRec = '' - NewEventRec = LotId - NewEventRec = EventType - NewEventRec = EventDatetime - NewEventRec = EventNote - NewEventRec = EventEquipmentId - NewEventRec = ReduceWaferQty - NewEventRec = BonusWaferQty - NewEventRec = BeginWaferQty - NewEventRec = EndWaferQty - NewEventRec = OperationId - NewEventRec = OperatorId +* - NewEventSequence = Lot_Services('GetLotEventNextSequence', LotId) - NewEventRec = NewEventSequence - Database_Services('WriteDataRow', 'LOT_EVENT', NewEventId, NewEventRec) - if Error_Services('HasError') then - ErrorMessage = 'Error in Create Lot Event routine, Error writing Lot Event record, ' : Error_Services('GetMessage') - end + Begin Case + Case EventType EQ 'MOVE_IN' + Lot_Services('MoveInLot', LotId, OperatorId) + If Error_Services('NoError') then + + end else + ErrorMessage = Error_Services('GetMessage') + end + Case EventType EQ 'MOVE_OUT' + Lot_Services('MoveOutLot', LotId, OperatorId) + If Error_Services('NoError') then + + end else + ErrorMessage = Error_Services('GetMessage') + end + Case EventType EQ 'HOLD_ON' + Lot_Services('HoldLot', LotId, OperatorId) + If Error_Services('NoError') then + + end else + ErrorMessage = Error_Services('GetMessage') + end + Case EventType EQ 'HOLD_OFF' + Lot_Services('UnholdLot', LotId, OperatorId) + If Error_Services('NoError') then + + end else + ErrorMessage = Error_Services('GetMessage') + end + Case EventType EQ 'REDUCE_WAFER_QTY' + Lot_Services('ReduceLotWaferCount', LotId, ReduceWaferQty) + If Error_Services('NoError') then + + end else + ErrorMessage = Error_Services('GetMessage') + end + Case EventType EQ 'BONUS_WAFER_QTY' + Lot_Services('IncreaseLotWaferCount', LotId, BonusWaferQty) + If Error_Services('NoError') then + + end else + ErrorMessage = Error_Services('GetMessage') + end + Case EventType EQ 'COMMENT' + //Do Nothing Extra + Case EventType EQ 'LOCATION' + //Do nothing for now. + Case EventType EQ 'CLOSE' + //Do nothing for now. + Case Otherwise$ + ErrorMessage = 'Error in Create Lot Event routine, event type of ' : EventType : ' passed to routine is not valid for a lot of type TW.' + End Case +* If Error_Services('HasError') then +* ErrorMessage = Error_Services('GetMessage') +* end + If ErrorMessage EQ '' then + EndWaferQty = (BeginWaferQty + BonusWaferQty) - ReduceWaferQty + + NewEventRec = '' + NewEventRec = LotId + NewEventRec = EventType + NewEventRec = EventDatetime + NewEventRec = EventNote + NewEventRec = EventEquipmentId + NewEventRec = ReduceWaferQty + NewEventRec = BonusWaferQty + NewEventRec = BeginWaferQty + NewEventRec = EndWaferQty + NewEventRec = OperationId + NewEventRec = OperatorId + NewEventSequence = Lot_Services('GetLotEventNextSequence', LotId) + NewEventRec = NewEventSequence + Database_Services('WriteDataRow', 'LOT_EVENT', NewEventId, NewEventRec) + if Error_Services('NoError') then + If BeginWaferQty NE EndWaferQty then + //Adjust LOT wafer qty + LotRecord = Database_Services('ReadDataRow', 'LOT', LotId, True$, 0, False$) + If LotRecord NE '' then + LotRecord = EndWaferQty + Database_Services('WriteDataRow', 'LOT', LotId, LotRecord, True$, False$, False$) + If Error_Services('HasError') then + ErrorMessage = 'Error in CreateLotEvent routine, failed attempt to close lot ':LotId:'. Failed to write to LOT record.' + end + end + end + end else + ErrorMessage = 'Error in Create Lot Event routine, Error writing Lot Event record, ' : Error_Services('GetMessage') + end + end end else ErrorMessage = 'Error in Create Lot Event routine, Current Operation for lot id ' : LotId : ' could not be determined.' end @@ -711,7 +793,7 @@ Service CreateLotEvent(LotId, LotType=LOT_TYPES, EventDatetime, EventType=EVENT_ ErrorMessage = 'Error in Create Lot Event routine, Lot Id passed to routine was not found in LOT table.' end end else - ErrorMessage = 'Error in Create Lot Event routine, Missing event type or Operator ID.' + ErrorMessage = 'Error in Create Lot Event routine, Operator ID was null.' end Case LotType EQ 'RDS' If EventType NE '' AND OperatorId NE '' then @@ -854,7 +936,7 @@ Service ConvertLotRecordToJson(LotId, ItemURL, CurrUser, FullObject=BOOLEAN) SRP_JSON(objLot, 'SetValue', 'VendorPartNo', LotRec) SRP_JSON(objLot, 'SetValue', 'VendorLotNo', LotRec) SRP_JSON(objLot, 'SetValue', 'Vendor', LotRec) - CurrOperation = Lot_Services('GetLotCurrOperation', LotId) + CurrOperation = Lot_Services('GetLotCurrOperationId', LotId) CurrOperation = Field(CurrOperation, '*', 2) SRP_JSON(objLot, 'SetValue', 'CurrOperation', CurrOperation) If FullObject then @@ -978,11 +1060,70 @@ Service CloseLot(LotId) end end service -Service HoldLot(LotId) +Service HoldLot(LotId, OperatorId) end service -Service UnholdLot(LotId) +Service UnholdLot(LotId, OperatorId) end service + +Service ReduceLotWaferCount(LotId, ReductionQty) + ErrorMessage = '' + If RowExists('LOT', LotId) then + LotRec = Database_Services('ReadDataRow', 'LOT', LotId, True$, 0, False$) + LotCurrWfrQty = LotRec + LotNewWfrQty = LotCurrWfrQty - ReductionQty + If LotNewWfrQty LE 25 AND LotNewWfrQty GE 0 then + LotRec = LotNewWfrQty + Database_Services('WriteDataRow', 'LOT', LotId, LotRec, True$, False$, False$) + If Error_Services('HasError') then + ErrorMessage = 'Error in Increase Lot Wafer Count service, Error writing Lot Id ' : LotId : ' with new quantity.' + end + end else + Begin Case + Case LotNewWfrQty GT 25 + ErrorMessage = 'Error in Reduce Lot Wafer Count service, Lot Id ' : LotId : ' cannot have a quantity great than 25.' + Case LotNewWfrQty LT 0 + ErrorMessage = 'Error in Reduce Lot Wafer Count service, Lot Id ' : LotId : ' cannot have a quantity less than 0.' + End Case + end + end else + ErrorMessage = 'Error in Reduce Lot Wafer Count service, Lot Id ' : LotId : ' not found in lot table.' + end + if ErrorMessage NE '' then + Error_Services('Add', ErrorMessage) + end +end service + +Service IncreaseLotWaferCount(LotId, IncreaseQty) + ErrorMessage = '' + If RowExists('LOT', LotId) then + LotRec = Database_Services('ReadDataRow', 'LOT', LotId, True$, 0, False$) + LotCurrWfrQty = LotRec + LotNewWfrQty = LotCurrWfrQty + IncreaseQty + If LotNewWfrQty LE 25 AND LotNewWfrQty GT 0 then + LotRec = LotNewWfrQty + Database_Services('WriteDataRow', 'LOT', LotId, LotRec, True$, False$, False$) + If Error_Services('HasError') then + ErrorMessage = 'Error in Increase Lot Wafer Count service, Error writing Lot Id ' : LotId : ' with new quantity.' + end + end else + Begin Case + Case LotNewWfrQty GT 25 + ErrorMessage = 'Error in Increase Lot Wafer Count service, Lot Id ' : LotId : ' cannot have a quantity great than 25.' + Case LotNewWfrQty LT 0 + ErrorMessage = 'Error in Increase Lot Wafer Count service, Lot Id ' : LotId : ' cannot have a quantity less than 0.' + End Case + end + end else + ErrorMessage = 'Error in Increase Lot Wafer Count service, Lot Id ' : LotId : ' not found in lot table.' + end + if ErrorMessage NE '' then + Error_Services('Add', ErrorMessage) + end +end service + + + diff --git a/LSL2/STPROC/NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt b/LSL2/STPROC/NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt index 803ff35..1ded9b5 100644 --- a/LSL2/STPROC/NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt +++ b/LSL2/STPROC/NDW_LOG_TEST_WAFER_USAGE_EVENTS.txt @@ -2,12 +2,15 @@ Compile function NDW_LOG_TEST_WAFER_USAGE_EVENTS(CtrlEntId, Event, @PARAMS) #pragma precomp SRP_PreCompiler #window NDW_LOG_TEST_WAFER_USAGE -Declare function Get_Property, Error_Services, Test_Run_Services, Reactor_Services, Tool_Services -Declare subroutine Set_Property, Error_Services +Declare function Get_Property, Error_Services, Test_Run_Services, Reactor_Services, Tool_Services, Database_Services, Lot_Services +Declare subroutine Set_Property, Error_Services, Msg, End_Dialog, Lot_Services, PlaceDialog -$Insert LOGICAL +$Insert APP_INSERTS $Insert TEST_RUN_EQUATES $Insert RDS_EQUATES +$Insert LOT_EQUATES +$Insert TEST_WAFER_PROD_EQUATES +$Insert LOT_OPERATION_EQUATES GoToEvent Event for CtrlEntId else // Event not implemented @@ -20,8 +23,9 @@ Return EventFlow or 1 //----------------------------------------------------------------------------- Event WINDOW.CREATE(CreateParam) + PlaceDialog(-2, -2) + Set_Property(@Window, 'VISIBLE', 1) GoSub FillFormMasterData - debug PresetRDSNo = '' PresetTestType = '' PresetEquipmentType = '' @@ -69,6 +73,168 @@ Event WINDOW.CREATE(CreateParam) End Event +Event Window.CLOSE(CancelFlag, CloseFlags) + Result = '' + Result<1> = False$ + End_Dialog(@Window, Result) +end event + +Event EDL_LOT_ID.LOSTFOCUS(Flag, FocusID) + LotIdString = Get_Property(@Window : '.EDL_LOT_ID', 'TEXT') + If LotIdString[1, 4] EQ '1TTW' then + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', LotIdString[3, 999]) + end +end event + +Event PUB_ADD_LOT.CLICK() + TWLotUseArray = Get_Property(@Window: '.EDT_TW_USAGE', 'LIST') + LotId = Get_Property(@Window : '.EDL_LOT_ID', 'TEXT') + If LotId NE '' then + Found = False$ + for i = 1 to DCount(TWLotUseArray, @FM) + if LotId EQ TWLotUseArray then + Found = True$ + end + until Found + Next i + If Not(Found) then + If RowExists('LOT', LotId) then + //Check if lot is a test wafer type + LotRec = Database_Services('ReadDataRow', 'LOT', LotId, True$, 0, False$) + if Error_Services('NoError') AND LotRec NE '' then + LotType = LotRec + LotOpen = LotRec + LotOnHold = LotRec + If LotType EQ 'TW' then + If LotOpen then + If Not(LotOnHold) then + LotCurrOperationId = Lot_Services('GetLotCurrOperationId', LotId) + LotCurrOperation = XLATE('LOT_OPERATION', LotCurrOperationId, LOT_OPERATION_OPERATION_ID$, 'X') + If LotCurrOperation EQ 'TW_CREATE' Or LotCurrOperation EQ 'TW_CLOSE' then + Msg(@Window, 'Error: Lot ':LotId:' is currently at ' : LotCurrOperation : '. It cannot be used at this time.') + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + end else + TestWaferProdName = Database_Services('ReadDataColumn', 'TEST_WAFER_PROD', LotRec, TEST_WAFER_PROD_PART_NAME$, True$, 0, False$) + TWLotUseArray<-1> = LotId : @VM : TestWaferProdName : @VM : '' + Set_Property(@Window : '.EDT_TW_USAGE', 'LIST', TWLotUseArray) + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + end + end else + Msg(@Window, 'Error: Lot ':LotId:' is on hold and cannot be used.') + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + end + end else + Msg(@Window, 'Error: Lot ':LotId:' is not in an open status.') + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + end + end else + Msg(@Window, 'Error: Lot ':LotId:' is not a test wafer lot.') + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + end + end else + Msg(@Window, 'Error: Error reading Lot ':LotId:' from LOT table.') + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + end + end else + Msg(@Window, 'Error: Lot not found in LOT table.') + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + end + end else + Msg(@Window, 'Error: Lot ':LotId:' already exists in the list.') + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + end + end +end event + +Event EDT_TW_USAGE.ROWSELCHANGED(SelRow, SelState) + If SelRow NE '' then + Set_Property(@Window: '.PUB_REMOVE_SELECTED', 'ENABLED', True$) + end else + Set_Property(@Window: '.PUB_REMOVE_SELECTED', 'ENABLED', False$) + end +end event + +Event PUB_REMOVE_SELECTED.CLICK() + SelectedRow = Get_Property(@Window : '.EDT_TW_USAGE', 'SELPOS')<2> + TWLotUseArray = Get_Property(@Window: '.EDT_TW_USAGE', 'LIST') + If SelectedRow LE DCount(TWLotUseArray, @FM) then + TWLotUseArray = Delete(TWLotUseArray, SelectedRow , 0, 0) + end + Set_Property(@Window : '.EDT_TW_USAGE', 'LIST', TWLotUseArray) +end event + +Event PUB_CLEAR.CLICK() + GoSub ClearFormData +end event + +Event PUB_SUBMIT.CLICK() + debug + NotReadyReason = '' + //Gather all field information + ReasonForTest = Get_Property(@Window : '.CMB_TEST_TYPE', 'TEXT') + RelatedRDS = Get_Property(@Window : '.EDL_RDS', 'TEXT') + RelatedPSN = Get_Property(@Window : '.EDL_PSN', 'TEXT') + EquipmentType = Get_Property(@Window : '.CMB_EQUIP_TYPE', 'TEXT') + EquipmentID = Get_Property(@Window : '.CMB_EQUIPMENT_ID', 'TEXT') + //Translate selection to IDs. Get Run Type ID + SelRunTypeID = '';*Test Run Obj variable + RunTypeOpts = Get_Property(@Window, '@RUN_TYPE_OPTS') + Locate ReasonForTest in RunTypeOpts<2> using @VM setting rPos then + SelRunTypeID = RunTypeOpts<1, rPos> + end else + NotReadyReason := 'Must select a valid run type reason.' : CRLF$ + end + //Translate Equipment Type. R for Reactor, T for non-reactor + SelEquipType = '';*Test Run Obj variable + Begin Case + Case EquipmentType EQ 'Reactor' + SelEquipType = 'R' + Case EquipmentType EQ 'Non-Reactor' + SelEquipType = 'T' + End Case + //Get Test wafer usage data from table + TWUsageData = Get_Property(@Window: '.EDT_TW_USAGE', 'LIST') + TWLots = '' + TWLotQtys = '' + for each TWRow in TWUsageData using @FM + Quantity = TWRow<1,3> + ProdName = TWRow<1,2> + TWLot = TWRow<1,1> + If Quantity NE '' AND TWLot NE '' then + if Num(Quantity) then + Begin Case + Case Quantity GT 0 AND Quantity LT 25 + TWLots<1, -1> = TWRow<1,1> + TWLotQtys<1, -1> = TWRow<1,3> + Case Quantity GT 25 + NotReadyReason := 'Quantity value for test wafer lot ' : TWLot : ' must be less than 25.' : CRLF$ + Case Quantity LE 0 + NotReadyReason := 'Quantity value for test wafer lot ' : TWLot : ' must be greater than 0.' : CRLF$ + End Case + end else + NotReadyReason := 'Quantity value for test wafer lot ' : TWLot : ' must be a number' : CRLF$ + end + end else + NotReadyReason := 'A quantity of test wafers used is required for test wafer lot ' : TWLot : CRLF$ + end + + Next TWRow + If NotReadyReason EQ '' then + TRWaferKey = Test_Run_Services('CreateTestRunRecord', SelRunTypeID, EquipmentType, EquipmentID, RelatedPSN, RelatedRDS, @User4, TWLots, TWLotQtys) + If Error_Services('NoError') then + Msg(@Window, 'Test Run Created Successfully!') + Result = '' + Result<1> = True$ + End_Dialog(@Window, Result) + end else + ErrorMessage = Error_Services('GetMessage') + Msg(@Window, 'Error! - ' : ErrorMessage) + end + end else + Msg(@Window, NotReadyReason) + end +end event + //----------------------------------------------------------------------------- // Internal GoSubs //----------------------------------------------------------------------------- @@ -87,7 +253,6 @@ FillFormMasterData: //Get Tool and Reactor Identifiers and buffer them in user defined window properties @REACTOR_OPTS and @NON_REACTOR_OPTS //Reactors ReactorOpts = Reactor_Services('GetReactorNumbers') - //Set_Property(@Window : '.EDT_REACTORS', 'TEXT', ReactorOpts) Set_Property(@Window, '@REACTOR_OPTS', ReactorOpts) //Non Reactors @@ -102,3 +267,13 @@ FillFormMasterData: Set_Property(@Window, '@TW_PROD_OPTS', Prods) Return +ClearFormData: + Set_Property(@Window : '.EDL_LOT_ID', 'TEXT', '') + Set_Property(@Window : '.EDL_RDS', 'TEXT', '') + Set_Property(@Window : '.EDL_PSN', 'TEXT', '') + Set_Property(@Window : '.CMB_EQUIPMENT_ID', 'TEXT', '') + Set_Property(@Window : 'CMB_TEST_TYPE', 'TEXT', '') + Set_Property(@Window : '.EDT_TW_USAGE', 'LIST', '') +return + + diff --git a/LSL2/STPROC/NDW_TEST_RUN_EVENTS.txt b/LSL2/STPROC/NDW_TEST_RUN_EVENTS.txt index 6eed030..318b659 100644 --- a/LSL2/STPROC/NDW_TEST_RUN_EVENTS.txt +++ b/LSL2/STPROC/NDW_TEST_RUN_EVENTS.txt @@ -67,7 +67,8 @@ Return EventFlow or 1 //----------------------------------------------------------------------------- Event WINDOW.CREATE(CreateParam) - + PlaceDialog(-2, -2) + Set_Property(@Window, 'VISIBLE', 1) GoSub SetupOLEControls GoSub FillFormMasterData EventFlow = 1 @@ -204,7 +205,7 @@ Event PUB_SUBMIT.CLICK() for each Prod in ProdUsages using @FM setting pPos for i = 1 to Prod<1,2> TWPartID = Prod<1,1> - TRWaferKey = Test_Run_Services('CreateTestRunWaferRecord', NewTWRunKey, TWPartID) + TRWaferKey = Test_Run_Services('CreateTestRunWaferRecord', NewTWRunKey, TWPartID, @USER4) If RowExists('TEST_RUN_WAFER', TRWaferKey) then //Do Nothing for now. end else @@ -352,3 +353,4 @@ SetupOLEControls: return + diff --git a/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt b/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt index a58275e..c94eac0 100644 --- a/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt +++ b/LSL2/STPROC/NDW_VIEW_LOT_EVENTS.txt @@ -5,6 +5,7 @@ Compile function NDW_VIEW_LOT_EVENTS(CtrlEntId, Event, @PARAMS) Declare function Get_Property, Lot_Services, Database_Services Declare subroutine Set_Property +$Insert APP_INSERTS $Insert LOT_EQUATES $Insert LOT_OPERATION_EQUATES $Insert LOT_EVENT_EQUATES @@ -61,8 +62,9 @@ GetLot: If RowExists('LOT', LotIdText) then ThisLotId = LotIdText ThisLotRec = Database_Services('ReadDataRow', 'LOT', ThisLotId) - ThisLotCurrOperationID = Lot_Services('GetLotCurrOperation', ThisLotId) + ThisLotCurrOperationID = Lot_Services('GetLotCurrOperationId', ThisLotId) ThisLotCurrOperationName = Xlate('LOT_OPERATION', ThisLotCurrOperationId, LOT_OPERATION_OPERATION_ID$, 'X') + ThisLotCurrWaferQty = Database_Services('ReadDataColumn', 'LOT', ThisLotId, LOT_WAFER_QTY$, True$, 0, False$) //Lot Operation Status' LotOperationsInSequence = Lot_Services('GetLotOperationSequence', ThisLotId) @@ -87,12 +89,14 @@ GetLot: LotEventTableData<1, ThisEventSequence> = OConv(LotEventRec, 'DT') LotEventTableData<2, ThisEventSequence> = LotEventRec LotEventTableData<3, ThisEventSequence> = LotEventRec - LotEventTableData<4, ThisEventSequence> = LotEventRec + ThisLotEventOperationName = Field(LotEventRec, '*', 2) + LotEventTableData<4, ThisEventSequence> = ThisLotEventOperationName LotEventTableData<5, ThisEventSequence> = LotEventRec Next LotEvent //Fill form Set_Property(@Window : '.EDL_CURR_OPERATION', 'TEXT', ThisLotCurrOperationName) + Set_Property(@Window : '.EDL_CURR_WAFER_QTY', 'TEXT', ThisLotCurrWaferQty) Set_Property(@Window : '.EDT_LOT_OPERATIONS', 'ARRAY', LotOperationTableData) Set_Property(@Window : '.EDT_LOT_EVENTS', 'ARRAY', LotEventTableData) end else @@ -100,3 +104,4 @@ GetLot: end return + diff --git a/LSL2/STPROC/OPERATION_TW_CREATE.txt b/LSL2/STPROC/OPERATION_TW_CREATE.txt index a1c72d9..407e858 100644 --- a/LSL2/STPROC/OPERATION_TW_CREATE.txt +++ b/LSL2/STPROC/OPERATION_TW_CREATE.txt @@ -37,7 +37,7 @@ Return Success MoveIn: debug //Get TW Create Operation ID - ThisOperationID = Lot_Services('GetLotCurrOperation', LotId) + ThisOperationID = Lot_Services('GetLotCurrOperationId', LotId) If Field(ThisOperationId, '*', 1) EQ 'TW_CREATE' then ThisLotCurrOperationRec = Database_Services('ReadDataRow', 'LOT_OPERATION', ThisOperationID) ThisLotCurrOperationRec = Datetime() @@ -56,7 +56,7 @@ MoveIn: return MoveOut: - ThisOperationID = Lot_Services('GetLotCurrOperation', LotId) + ThisOperationID = Lot_Services('GetLotCurrOperationID', LotId) If Field(ThisOperationId, '*', 1) EQ 'TW_CREATE' then ThisLotCurrOperationRec = Database_Services('ReadDataRow', 'LOT_OPERATION', ThisLotCurrOperationID) LotMovedIn = ThisLotCurrOperationRec @@ -105,3 +105,4 @@ return + diff --git a/LSL2/STPROC/RDS_EVENTS.txt b/LSL2/STPROC/RDS_EVENTS.txt index c4e7687..14d5548 100644 --- a/LSL2/STPROC/RDS_EVENTS.txt +++ b/LSL2/STPROC/RDS_EVENTS.txt @@ -349,10 +349,36 @@ Event PUB_SIGN.CLICK() Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, initParams) Valid = Response<1> If (Valid EQ True$) then - QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide) + UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'Log Test Wafer Usage':@FM:'Are any test wafers loaded?') + If UsingTestWafers then + TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor) + If TWLogResult then + QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide) + end else + ContinueLoad = Msg(@Window, '', 'YESNO', '', 'Continue?':@FM:'Test wafer logging was cancelled. Do you wish to continue signing?') + If ContinueLoad then + QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide) + end + end + end else + QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide) + end end end else - QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide) + UsingTestWafers = Msg(@Window, '', 'YESNO', '', 'Log Test Wafer Usage':@FM:'Are any test wafers loaded?') + If UsingTestWafers then + TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : 'STANDARD' : @VM : 'REACTOR' : @VM : Reactor) + If TWLogResult then + QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide) + end else + ContinueLoad = Msg(@Window, '', 'YESNO', '', 'Continue?':@FM:'Test wafer logging was cancelled. Do you wish to continue signing?') + If ContinueLoad then + QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide) + end + end + end else + QA_Services('SignLoadStage', RDSNo, @USER4, WfrQty, LLSide) + end end end If Error_Services('HasError') then @@ -672,3 +698,4 @@ return + diff --git a/LSL2/STPROC/SCAN_SERVICES.txt b/LSL2/STPROC/SCAN_SERVICES.txt index fb9831b..5e43b61 100644 --- a/LSL2/STPROC/SCAN_SERVICES.txt +++ b/LSL2/STPROC/SCAN_SERVICES.txt @@ -38,14 +38,18 @@ $INSERT REACT_LL_EQUATES $insert RLIST_EQUATES $Insert ROTR_OVERRIDE_COMMENT_OPTIONS_EQUATES $Insert SUPPLEMENTS_EQUATES +$Insert Lot_Equates +$Insert Test_Run_Type_Equates Common /ScanServices/ NotAcceptableReasons@, Unused2@, Unused3@, Unused4@, Unused5@, Unused6@, Unused7@, Unused8@ Declare Function Scan_Services, Memory_Services, Database_Services, SRP_JSON, RTI_CreateGUID, Rds_Services, Datetime Declare Function QA_Services, Error_Services, Security_Services, SRP_Array, obj_WO_Mat, Memberof, Override_Log_Services Declare Function Keyboard_Sim_Services, Environment_Services, Logging_Services, Reactor_Services, Supplement_Services +Declare function Test_Run_Services, Lot_Services Declare Subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, QA_Services, Error_Services Declare Subroutine obj_WO_Mat_Log, Tool_Parms_Services, RDS_Services, Logging_Services, Supplement_Services +Declare Subroutine Test_Run_Services Equ CRLF$ to \0D0A\ @@ -268,15 +272,32 @@ Service ProcessScanData(ScanID, ScanJSON) Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 2] EQ '2T') ) // Supplier lot scan. Convert '_' to '-' in ScanData - SupplierLotID = ScanData[3, 999] - If ( RowExists('RDS', SupplierLotID) EQ True$ AND ScanData[1, 2] EQ '1T') then - ScansRow = SupplierLotID - //If ( RowExists('RDS', SupplierLotID) EQ True$ ) then - // Error_Services('Add', 'Not a valid supplier lot') - end else - ScansRow = SupplierLotID - end - + LotID = ScanData[3, 999] + Begin Case + Case ( RowExists('RDS', LotId) EQ True$ AND ScanData[1, 2] EQ '1T') + ScansRow = LotID + Case ScanData[1, 4] EQ '1TTW' + ValidTWLot = False$ + If RowExists('LOT', LotId) then + LotCurrentOperation = Lot_Services('GetLotCurrOperationName', LotId) + If LotCurrentOperation NE 'TW_CREATE' AND LotCurrentOperation NE 'TW_CLOSE' then + LotCurrWfrQty = Database_Services('ReadDataColumn', 'LOT', LotId, LOT_WAFER_QTY$, True$, 0, False$) + If LotCurrWfrQty GT 0 then + ScansRow = LotID + end else + Error_Services('Add', LotID : ' does not have enough wafers to be used.') + end + end else + Error_Services('Add', LotID : ' is not at a valid operation for use.') + end + + end else + Error_Services('Add', LotID : ' is not a valid test wafer lot ID.') + end + + Case Otherwise$ + ScansRow = LotID + End Case Case ScanData[1, 5] EQ 'RESET' ScansRow = 'RESET' @@ -500,6 +521,16 @@ Service ProcessScanData(ScanID, ScanJSON) //Tencor Scan - Note this is only for loading cassette ID into Tencor tool ScansRow = 'TENCOR_LOAD' ScansRow= ScanData[3,99] + Case ScanData[1, 16] EQ 'TWQUANTITYUPDATE' + TWLot = Field(ScanData, '|', 2) + TWLotQuantity = Field(ScanData, '|', 3) + ThisScanTWLots = ScansRow + Locate TWLot in ThisScanTWLots using @VM setting twPOS then + ScansRow = TWLotQuantity + end + Case ScanData[1, 17] EQ 'TESTRUNTYPEUPDATE' + TestRunTypeId = Field(ScanData, '|', 2) + ScansRow = TestRunTypeId Case ScanData EQ '' // Most likely receiving RDS data, so nothing to do here. Null @@ -1009,7 +1040,24 @@ Service ProcessScanData(ScanID, ScanJSON) Error_Services('Add', '(':CassetteID:') Only one cassette can be loaded onto a tool at a time.') end end else - Scan_Services('AddNotAcceptableReason', 'A cassette must be scanned in order to complete a tool scan.') + If ScansRow NE '' then + //Test Wafer Lot Loading + TestWaferLotData = ScansRow + Abort = False$ + for each TWLot in TestWaferLotData using @VM setting twPOS + If ScansRow EQ '' OR ScansRow LE 0 then + Scan_Services('AddNotAcceptableReason', 'Each test wafer lot logged must have a quantity associated with it.') + end else + ThisUser = ScansRow + If Not(RowExists('LSL_USERS', ThisUser)) then + Scan_Services('AddNotAcceptableReason', 'A User ID Scan is required to log test wafer usage.') + end + end + Until False$ + Next TWLot + end else + Scan_Services('AddNotAcceptableReason', 'A cassette must be scanned in order to complete a tool scan.') + end end Case Otherwise$ @@ -1218,68 +1266,87 @@ Service AcceptScan(ScanID, ScanJSON) Case ScanType _EQC 'TOOL' // Check if cassette field is populated. If so, then check the cassette's current status to // determine what the next action will be (i.e. Pre-Epi+Load, Unload, etc.) - CassetteID = CassetteIDs<0, 1> - RDSNo = CassetteID - RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo) - ToolID = ScansRow - Reactor = ToolID[-1, 'BR'] - Username = ScansRow - LLSide = ScansRow - WaferQty = RDSRec - // Check signature fields to determine where the lot is in the RDS process. The service should - // use the signatures in the RDS table, not the WO_MAT table, so that we can support both - // EpiPro and non-EpiPro lots. - CurrStage = Xlate('RDS', RDSNo, 'CURR_STAGE', 'X') - CurrDTM = Datetime() - LogData = '' - LogData<1> = OConv(CurrDTM, 'DT') - LogData<2> = RDSNo - LogData<3> = Username - LogData<4> = CurrStage - LogData<5> = ScanID - Begin Case - Case CurrStage _EQC 'VER' - Action = 'LOAD' - // Check if both the PRE and LOAD stages are ready to sign - PreStageSigned = False$ - LoadStageSigned = False$ - PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1) - If PreStageSigned EQ True$ then - LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1) - end - If ( (PreStageSigned EQ True$) and (LoadStageSigned EQ True$) ) then - Result = '(':CassetteID:') Load stage signed.' - end - LogData<6> = Action - LogData<7> = Result - Logging_Services('AppendLog', objLog, LogData, @RM, @FM) - Case CurrStage _EQC 'LOAD' - Action = 'LOAD' - // Check if LOAD stage is ready to sign - LoadStageSigned = QA_Services('SignLoadStage', RDSNo, Username, WaferQty, LLSide, 1) - If LoadStageSigned EQ True$ then - Result = '(':CassetteID:') Load stage signed.' - end - LogData<6> = Action - LogData<7> = Result - Logging_Services('AppendLog', objLog, LogData, @RM, @FM) - Case CurrStage _EQC 'UNLOAD' - Action = 'UNLOAD' - // Check if UNLOAD stage is ready to sign - UnloadStageSigned = QA_Services('SignUnloadStage', RDSNo, Username, 1) - If UnloadStageSigned EQ True$ then - Result = '(':CassetteID:') Unload stage signed.' - end - LogData<6> = Action - LogData<7> = Result - Logging_Services('AppendLog', objLog, LogData, @RM, @FM) - Case CurrStage _EQC 'COMP' - Action = 'COMP' - Error_Services('Set', '(':CassetteID:") Cassette has already been FQA'd.") - Case Otherwise$ - Action = CurrStage - Error_Services('Set', '(':CassetteID:') The ':CurrStage:' is not currently supported by the barcode application.') - End Case + CassetteID = CassetteIDs<0, 1> + TestWaferLots = ScansRow + Begin Case + Case CassetteID NE '' + //Tool Cassette scan, check for test wafers after everything is signed. + RDSNo = CassetteID + RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo) + ToolID = ScansRow + Reactor = ToolID[-1, 'BR'] + Username = ScansRow + LLSide = ScansRow + WaferQty = RDSRec + // Check signature fields to determine where the lot is in the RDS process. The service should + // use the signatures in the RDS table, not the WO_MAT table, so that we can support both + // EpiPro and non-EpiPro lots. + CurrStage = Xlate('RDS', RDSNo, 'CURR_STAGE', 'X') + CurrDTM = Datetime() + LogData = '' + LogData<1> = OConv(CurrDTM, 'DT') + LogData<2> = RDSNo + LogData<3> = Username + LogData<4> = CurrStage + LogData<5> = ScanID + Begin Case + Case CurrStage _EQC 'VER' + Action = 'LOAD' + // Check if both the PRE and LOAD stages are ready to sign + PreStageSigned = False$ + LoadStageSigned = False$ + PreStageSigned = QA_Services('SignPreEpiStage', RDSNo, Username, WaferQty, Reactor, 1) + If PreStageSigned EQ True$ then + LoadStageSigned = QA_Services('SignLoadStage', RDSNo, USername, WaferQty, LLSide, 1) + end + If ( (PreStageSigned EQ True$) and (LoadStageSigned EQ True$) ) then + Result = '(':CassetteID:') Load stage signed.' + end + LogData<6> = Action + LogData<7> = Result + Logging_Services('AppendLog', objLog, LogData, @RM, @FM) + Case CurrStage _EQC 'LOAD' + Action = 'LOAD' + // Check if LOAD stage is ready to sign + LoadStageSigned = QA_Services('SignLoadStage', RDSNo, Username, WaferQty, LLSide, 1) + If LoadStageSigned EQ True$ then + Result = '(':CassetteID:') Load stage signed.' + end + LogData<6> = Action + LogData<7> = Result + Logging_Services('AppendLog', objLog, LogData, @RM, @FM) + Case CurrStage _EQC 'UNLOAD' + Action = 'UNLOAD' + // Check if UNLOAD stage is ready to sign + UnloadStageSigned = QA_Services('SignUnloadStage', RDSNo, Username, 1) + If UnloadStageSigned EQ True$ then + Result = '(':CassetteID:') Unload stage signed.' + end + LogData<6> = Action + LogData<7> = Result + Logging_Services('AppendLog', objLog, LogData, @RM, @FM) + Case CurrStage _EQC 'COMP' + Action = 'COMP' + Error_Services('Set', '(':CassetteID:") Cassette has already been FQA'd.") + Case Otherwise$ + Action = CurrStage + Error_Services('Set', '(':CassetteID:') The ':CurrStage:' is not currently supported by the barcode application.') + End Case + Case CassetteID EQ '' AND TestWaferLots NE '' + debug + //Tool scan with ONLY test wafers being logged. + ToolID = ScansRow + Reactor = ToolID[-1, 'BR'] + Username = ScansRow + TestWaferLotQtys = ScansRow + NewTestRunId = Test_Run_Services('CreateTestRunRecord', 3, 'REACTOR', Reactor, '', '',Username , TestWaferLots, TestWaferLotQtys) + If Error_Services('HasError') then + ErrorMessage = Error_Services('GetMessage') + Error_Services('Set', ErrorMessage) + end + Case Otherwise$ + //null + End Case End Case end @@ -1336,6 +1403,8 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) SRP_JSON(objScan, 'SetValue', 'ID', @ID, 'String') SRP_JSON(objScan, 'SetValue', 'type', {SCAN_TYPE}, 'String') SRP_JSON(objScan, 'SetValue', 'action', {ACTION}, 'String') + SRP_JSON(objScan, 'SetValue', 'testRunTypeId', {TEST_RUN_TYPE_ID}, 'Integer') + SRP_JSON(objScan, 'SetValue', 'testRunTypeName', XLate('TEST_RUN_TYPE', {TEST_RUN_TYPE_ID}, TEST_RUN_TYPE_RUN_TYPE$, 'X'), 'String') SRP_JSON(objScan, 'SetValue', 'acceptable', {ACCEPTABLE}, 'Boolean') SRP_JSON(objScan, 'SetValue', 'notAcceptableReason', {NOT_ACCEPTABLE_REASON}, 'String') SRP_JSON(objScan, 'SetValue', 'result', {RESULT}, 'String') @@ -1367,6 +1436,43 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) SRP_JSON(objJSONScan, 'Set', 'supplierLot', objSupplierLot) SRP_JSON(objSupplierLot, 'Release') end + // TestWafer Lot Object. + If SRP_JSON(hTWLotArray, 'New', 'Array') then + Abort = False$ + TestWaferLots = {TW_LOT_ID} + for each TestWaferLotId in TestWaferLots using @VM setting twPos + thisTWLotJson = '' + If SRP_JSON(thisTWLotJson, 'New', 'Object') then + SRP_JSON(thisTWLotJson, 'SetValue', 'testWaferLotId', {TW_LOT_ID}<1, twPos>) + SRP_JSON(thisTWLotJson, 'SetValue', 'quantity', {TW_LOT_QTY}<1, twPos>, 'Integer') + SRP_JSON(hTWLotArray, 'Add', thisTWLotJson) + SRP_JSON(thisTWLotJson, 'Release') + end + Next TestWaferLotId + SRP_JSON(objJSONScan, 'Set', 'testWaferLots', hTWLotArray) + SRP_JSON(hTWLotArray, 'Release') + end + SRP_JSON(objScan, 'SetValue', 'testRunTypeId', {TEST_RUN_TYPE_ID}, 'Integer') + // TestRun Type Option Array + TestRunTypeList = Test_Run_Services('GetAllTestRunTypes') + If SRP_JSON(hTestRunTypeArray, 'New', 'Array') then + For each TestRunTypeId in TestRunTypeList<1> using @VM setting fPos + hTestRunTypeObj = '' + If SRP_JSON(hTestRunTypeObj, 'New', 'Object') then + SRP_JSON(hTestRunTypeObj, 'SetValue', 'testRunTypeId', TestRunTypeId, 'Number') + SRP_JSON(hTestRunTypeObj, 'SetValue', 'testRunTypeName', TestRunTypeList<2, fPos>, 'String') + SRP_JSON(hTestRunTypeArray, 'Add', hTestRunTypeObj) + SRP_JSON(hTestRunTypeObj, 'Release') + end else + Abort = True$ + end + Until Abort + Next TestRunTypeId + If Abort EQ False$ then + SRP_JSON(objJSONScan, 'Set', 'testRunTypeOptions', hTestRunTypeArray) + end + SRP_JSON(hTestRunTypeArray, 'Release') + end // Created object. objCreated = '' If SRP_JSON(objCreated, 'New', 'Object') then @@ -2011,14 +2117,3 @@ ClearCursors: Next counter return - - - - - - - - - - - diff --git a/LSL2/STPROC/TESTRUNTYPES_API.txt b/LSL2/STPROC/TESTRUNTYPES_API.txt new file mode 100644 index 0000000..f9344d0 --- /dev/null +++ b/LSL2/STPROC/TESTRUNTYPES_API.txt @@ -0,0 +1,121 @@ +Function Testruntypes_API(@API) +/*********************************************************************************************************************** + + This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written + permission from SRP Computer Solutions, Inc. + + Name : Testruntypes_API + + Description : API logic for the Testruntypes resource. + + Notes : All web APIs should include the API_SETUP insert. This will provide several useful variables: + + HTTPMethod - The HTTP Method (Verb) submitted by the client (e.g., GET, POST, etc.) + APIURL - The URL for the API entry point (e.g., api.mysite.com/v1). + FullEndpointURL - The URL submitted by the client, including query params. + FullEndpointURLNoQuery - The URL submitted by the client, excluding query params. + EndpointSegment - The URL endpoint segment. + ParentURL - The URL path preceeding the current endpoint. + CurrentAPI - The name of this stored procedure. + + Parameters : + API [in] -- Web API to process. Format is [APIPattern].[HTTPMethod]: + - APIPattern must follow this structure Testruntypes[.ID.[]] + - HTTPMethod can be any valid HTTP method, e.g., GET, POST, PUT, DELETE, etc. + Examples: + - Testruntypes.POST + - Testruntypes.ID.PUT + - Testruntypes.ID.firstName.GET + Response [out] -- Response to be sent back to the Controller (HTTP_MCP) or requesting procedure. Web API + services do not rely upon anything being returned in the response. This is what the + various services like SetResponseBody and SetResponseStatus services are for. A response + value is only helpful if the developers want to use it for debug purposes. + + History : (Date, Initials, Notes) + 11/05/24 xxx Original programmer. + +***********************************************************************************************************************/ + +#pragma precomp SRP_PreCompiler + +Declare function OI_Wizard_Services, Test_Run_Services + +$insert APP_INSERTS +$insert API_SETUP +$insert HTTP_INSERTS + +GoToAPI else + // The specific resource endpoint doesn't have a API handler yet. + HTTP_Services('SetResponseStatus', 204, 'This is a valid endpoint but a web API handler has not yet been created.') +end + +Return Response OR '' + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Endpoint Handlers +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +API testruntypes.HEAD +API testruntypes.GET + + OIWizardID = '' + Cookies = HTTP_Services('GetHTTPCookie') + For each Cookie in Cookies using ';' + Key = Field(Cookie, '=', 1) + If Key EQ 'sessionID' then + OIWizardID = Field(Cookie, '=', 2) + end + Next Cookie + If OIWizardID NE '' then + ValidSession = OI_Wizard_Services('ValidateSession', OIWizardID) + end + StatusCode = 201 + Message = 'Success' + GoSub CreateHALCollection + + +end api + +CreateHALCollection: + JSONCollection = '' + Abort = False$ + TestRunTypeList = Test_Run_Services('GetAllTestRunTypes') + hJSONCollection = '' + If SRP_JSON(hJSONCollection, 'New', 'Object') then + hTestRunTypeArray = '' + If SRP_JSON(hTestRunTypeArray, 'New', 'Array') then + For each TestRunTypeId in TestRunTypeList<1> using @VM setting fPos + If SRP_JSON(hTestRunTypeObj, 'New', 'Object') then + SRP_JSON(hTestRunTypeObj, 'SetValue', 'testRunTypeId', TestRunTypeId, 'Number') + SRP_JSON(hTestRunTypeObj, 'SetValue', 'testRunTypeName', TestRunTypeList<2, fPos>, 'String') + SRP_JSON(hTestRunTypeArray, 'Add', hTestRunTypeObj) + SRP_JSON(hTestRunTypeObj, 'Release') + end else + Abort = True$ + end + Until Abort + Next TestRunTypeId + If Abort EQ False$ then + SRP_JSON(hJSONCollection, 'Set', 'TestRunTypes', hTestRunTypeArray) + end + SRP_JSON(hTestRunTypeArray, 'Release') + end + JSONCollection = SRP_JSON(hJSONCollection, 'Stringify', 'Styled') + SRP_JSON(hJSONCollection, 'Release') + end + If Error_Services('NoError') then + HTTP_Services('SetResponseHeaderField', 'Content-Location', FullEndpointURL) + HTTP_Services('SetResponseBody', JSONCollection, False$, 'application/hal+json') + If Assigned(Message) then + HTTP_Services('SetResponseStatus', StatusCode, Message) + end else + HTTP_Services('SetResponseStatus', StatusCode) + end + end else + Message = Error_Services('GetMessage') + HTTP_Services('SetResponseStatus', 500, 'Error in the ' : CurrentAPI : ' API. Message: ': Message) + end +return + diff --git a/LSL2/STPROC/TEST_RUN_SERVICES.txt b/LSL2/STPROC/TEST_RUN_SERVICES.txt index e140941..28ec728 100644 --- a/LSL2/STPROC/TEST_RUN_SERVICES.txt +++ b/LSL2/STPROC/TEST_RUN_SERVICES.txt @@ -7,6 +7,8 @@ $Insert TEST_WAFER_TYPES_DISPO_OPTIONS_EQUATES $Insert TEST_RUN_EQUATES $Insert TEST_RUN_WAFER_EQUATES $Insert TEST_RUN_OBJ_EQUATES +$Insert LOT_EQUATES +$Insert LOT_OPERATION_EQUATES Declare function Nextkey, Error_Services, Environment_Services, OConv, Logging_Services, SRP_Hashtable, Lot_Services Declare function SRP_Datetime, Database_Services, Test_Run_Services, File_Services, Status, delete, Insert, Datetime, SRP_Json @@ -315,7 +317,9 @@ Service GetTestWaferLots(ShowOnlyOpenLots) Response = TestWaferLotKeys end service -Service CreateTestRunRecord(RunTypeID, EqpType, EqpID, PSNo, RDSNo, UserID) +Service CreateTestRunRecord(RunTypeID, EqpType, EqpID, PSNo, RDSNo, UserID, TWLotIds, TWLotQtys) + + TWRunKey = '' Response = '' ErrorMessage = '' If RunTypeID NE '' AND EqpType NE '' AND EqpID NE '' AND UserID NE '' then @@ -331,11 +335,112 @@ Service CreateTestRunRecord(RunTypeID, EqpType, EqpID, PSNo, RDSNo, UserID) TWRunKey = nextkey('TEST_RUN') Database_Services('WriteDataRow', 'TEST_RUN', TWRunKey, TWRunRec) If Error_Services('NoError') then - LogData = '' - LogData<1, 1> = LoggingDTM - LogData<1, 2> = @User4 - LogData<1, 3> = 'Successfully created new TEST_RUN record with ID of ' : TWRunKey - Logging_Services('AppendLog', objLogTR, LogData, @FM, @VM) + If RowExists('TEST_RUN', TWRunKey) then + LogData = '' + LogData<1, 1> = LoggingDTM + LogData<1, 2> = UserID + LogData<1, 3> = 'Successfully created new TEST_RUN record with ID of ' : TWRunKey + Logging_Services('AppendLog', objLogTR, LogData, @FM, @VM) + //Now create the test wafer usages + Success = False$ + If TWLotIds NE '' then + //Supports new logging methods. + for each TWLotId in TWLotIds using @VM setting twlPos + LotRec = Database_Services('ReadDataRow', 'LOT', TWLotId, True$, 0, False$) + IsThisLotOnHold = LotRec + IsThisLotOpen = LotRec + IsThisLotATWLot = LotRec EQ 'TW' + ThisLotCurrQty = LotRec + ThisLotPartId = LotRec + + // + ThisUsageQty = TWLotQtys<1, twlPos> + + If IsThisLotOpen then + If Not(IsThisLotOnHold) then + If IsThisLotATWLot then + InAtTWInUse = False$ + Loop + LotMovedIn = Lot_Services('IsLotMovedIn', TWLotId) + ThisLotCurrOperationId = Lot_Services('GetLotCurrOperationId', TWLotId) + ThisLotCurrOperation = Database_Services('ReadDataColumn', 'LOT_OPERATION', ThisLotCurrOperationId, LOT_OPERATION_OPERATION_ID$, True$, 0, False$) + Begin Case + Case ThisLotCurrOperation EQ 'TW_IN_USE' + + If Not(LotMovedIn) then + Lot_Services('CreateLotEvent', TWLotId, 'TW', Datetime(), 'MOVE_IN', 'Move into TW_IN_USE', '', 0, 0, '', UserID) + If Error_Services('HasError') then + ErrorMessage = Error_Services('GetMessage') + end + end else + InAtTWInUse = True$ + end + + Case ThisLotCurrOperation EQ 'TW_READY_TO_USE' + + If Not(LotMovedIn) then + Lot_Services('CreateLotEvent', TWLotId, 'TW', Datetime(), 'MOVE_IN', 'Move into TW_READY_TO_USE', '', 0, 0, '', UserID) + end else + Lot_Services('CreateLotEvent', TWLotId, 'TW', Datetime(), 'MOVE_OUT', 'Move out of TW_READY_TO_USE', '', 0, 0, '', UserID) + end + If Error_Services('HasError') then + ErrorMessage = Error_Services('GetMessage') + end + Case Otherwise$ + ErrorMessage = 'Error: Lot ':TWLotId:' is currently at ' : ThisLotCurrOperation : '. It cannot be used at this time.' + End Case + Until ErrorMessage NE '' Or InAtTWInUse + Repeat + If InAtTWInUse then + if Num(ThisUsageQty) then + If ThisUsageQty GT 0 then + //Now check that the usage QTY can be consumed from the TW Lot + ThisLotCurrQty = Database_Services('ReadDataColumn', 'LOT', TWLotId, LOT_WAFER_QTY$, True$, 0, False$) + If ThisUsageQty LE ThisLotCurrQty then + Abort = false$ + for i = 1 to ThisUsageQty + Test_Run_Services('CreateTestRunWaferRecord',TWRunKey, ThisLotPartId, RunTypeID, TWLotId, UserID) + If Error_Services('HasError') then + ErrorMessage = Error_Services('GetMessage') + end + until ErrorMessage NE '' + Next i + If ErrorMessage EQ '' then + Lot_Services('CreateLotEvent', TWLotId, 'TW', Datetime(), 'REDUCE_WAFER_QTY', ThisUsageQty : ' wafers consumed from lot.', EqpID, ThisUsageQty, 0, '', UserID) + end + end else + ErrorMessage = 'Error in Create Test Run Record routine, ' : TWLotId : ' does not have enough wafers.' + end + end + end else + ErrorMessage = 'Error in Create Test Run Record routine, Invalid qty for lot ' : TWLotId : ' passed to routine.' + end + end + + end else + //Lot is not classified as a test wafer lot. + end + end else + //Lot is on hold + end + end else + //Lot is not open + end + until ErrorMessage NE '' + Next TWLotId + If ErrorMessage EQ '' then + //commit everything + end else + //commit nothing, there was an error. + end + end else + //Supports legacy TW logging + Response = TWRunKey + end + end else + ErrorMessage = 'Error in Create Test Run Record routine, Generated Test Run Key did not exist in TEST Run table.' + end + Response = TWRunKey end else ErrorMessage = Error_Services('GetMessage') @@ -364,30 +469,32 @@ Service CreateTestRunRecord(RunTypeID, EqpType, EqpID, PSNo, RDSNo, UserID) end end service -Service CreateTestRunWaferRecord(TestRunID, TWPartID, TWUsageTypeID, SourceLotID) +Service CreateTestRunWaferRecord(TestRunID, TWPartID, TWUsageTypeID, SourceLotId, Username) ErrorMessage = '' If TestRunID NE '' AND TWPartID NE '' then If RowExists('TEST_RUN', TestRunID) then - TRWaferRec = '' - TRWaferRec = TestRunID - TRWaferRec = TWPartID - TRWaferRec = TWUsageTypeID - TRWaferRec = SourceLotID - TRWaferKey = Nextkey('TEST_RUN_WAFER') - Database_Services('WriteDataRow', 'TEST_RUN_WAFER', TRWaferKey, TRWaferRec) - - If Error_Services('NoError') AND RowExists('TEST_RUN_WAFER', TRWaferKey) then - LogData = '' - LogData<1, 1> = LoggingDTM - LogData<1, 2> = @User4 - LogData<1, 3> = 'Successfully wrote ' : TRWaferKey : ' to the TEST_RUN_WAFER table.' - Logging_Services('AppendLog', objLogTR, LogData, @FM, @VM) - //Increment Usage in TEST_WAFER_PROD Record - Test_Run_Services('IncrementTWProdUsage', TWPartID) - Response = TRWaferKey - end else - ErrorMessage := 'Error writing TEST_RUN_WAFER record with key of ' : TRWaferKey '. ' - end + //Legacy Code: Pre LOT usage + TRWaferRec = '' + TRWaferRec = TestRunID + TRWaferRec = TWPartID + TRWaferRec = TWUsageTypeID + TRWaferRec = SourceLotID + TRWaferKey = Nextkey('TEST_RUN_WAFER') + Database_Services('WriteDataRow', 'TEST_RUN_WAFER', TRWaferKey, TRWaferRec) + If Error_Services('NoError') AND RowExists('TEST_RUN_WAFER', TRWaferKey) then + LogData = '' + LogData<1, 1> = LoggingDTM + LogData<1, 2> = @User4 + LogData<1, 3> = 'Successfully wrote ' : TRWaferKey : ' to the TEST_RUN_WAFER table.' + Logging_Services('AppendLog', objLogTR, LogData, @FM, @VM) + //Increment Usage in TEST_WAFER_PROD Record + If ErrorMessage = '' then + Test_Run_Services('IncrementTWProdUsage', TWPartID) + Response = TRWaferKey + end + end else + ErrorMessage := 'Error writing TEST_RUN_WAFER record with key of ' : TRWaferKey '. ' + end end else ErrorMessage := 'Unable to find parent TEST_RUN record. ' end @@ -403,10 +510,12 @@ Service CreateTestRunWaferRecord(TestRunID, TWPartID, TWUsageTypeID, SourceLotID LogData = '' LogData<1, 1> = LoggingDTM LogData<1, 2> = @User4 - LogData<1, 3> = 'Error Writing ' : TWRunKey : ' to the TEST_RUN_WAFER table. ' : ErrorMessage + LogData<1, 3> = 'Error Writing to the TEST_RUN_WAFER table. ' : ErrorMessage Logging_Services('AppendLog', objLogTR, LogData, @FM, @VM) + Error_Services('Add', 'Error creating new test run record: ' : ErrorMessage) end end service + Service UseTWFromLot(LotId, UsageQty, Username) ErrorMessage = '' If RowExists('LOT', LotId) then @@ -635,3 +744,4 @@ end service + diff --git a/LSL2/STPROCINS/LOT_OPERATION_EQUATES.txt b/LSL2/STPROCINS/LOT_OPERATION_EQUATES.txt index 11362a5..fa800d8 100644 --- a/LSL2/STPROCINS/LOT_OPERATION_EQUATES.txt +++ b/LSL2/STPROCINS/LOT_OPERATION_EQUATES.txt @@ -22,3 +22,4 @@ compile insert LOT_OPERATION_EQUATES equ LOT_OPERATION_DATETIME_STOP$ to 13 #endif + diff --git a/LSL2/STPROCINS/SCANS_EQUATES.txt b/LSL2/STPROCINS/SCANS_EQUATES.txt index 5c3bdb5..a45950e 100644 --- a/LSL2/STPROCINS/SCANS_EQUATES.txt +++ b/LSL2/STPROCINS/SCANS_EQUATES.txt @@ -1,38 +1,43 @@ compile insert SCANS_EQUATES /*---------------------------------------- - Author : Table Create Insert Routine - Written : 03/09/2018 + Author : Table Create Insert Routine + Written : 18/11/2024 Description : Insert for Table SCANS ----------------------------------------*/ +#ifndef __SCANS_EQUATES__ +#define __SCANS_EQUATES__ + equ SCANS.CREATED_DATE$ to 1 + equ SCANS.CREATED_TIME$ to 2 + equ SCANS.SCAN_TYPE$ to 3 + equ SCANS.EMPLOYEE_ID$ to 4 + equ SCANS.CASSETTE_IDS$ to 5 + equ SCANS.LOCATION_ID$ to 6 + equ SCANS.TOOL_ID$ to 7 + equ SCANS.ACCEPTED$ to 8 + equ SCANS.ACCEPTED_DATE$ to 9 + equ SCANS.ACCEPTED_TIME$ to 10 + equ SCANS.SCANNED_DATES$ to 11 + equ SCANS.SCANNED_TIMES$ to 12 + equ SCANS.SCANNED_DATA$ to 13 + equ SCANS.ACTION$ to 14 + equ SCANS.WAFER_COUNT_CONFIRMED$ to 15 + equ SCANS.BOAT_ID$ to 16 + equ SCANS.PL_NUMBER$ to 17 + equ SCANS.UNLOAD_PL_CONFIRMED$ to 18 + equ SCANS.LOAD_LOCK$ to 19 + equ SCANS.TRANSFER_TOOL_ID$ to 20 + equ SCANS.ACCEPTABLE$ to 21 + equ SCANS.NOT_ACCEPTABLE_REASON$ to 22 + equ SCANS.RESULT$ to 23 + equ SCANS.SUPPLIER_LOT$ to 24 + equ SCANS.ERROR_CASS_IDS$ to 25 + equ SCANS.OVERRIDE_REQD$ to 26 + equ SCANS.OVERRIDE_REASON$ to 27 + equ SCANS.AUTHENTICATED$ to 28 + equ SCANS.OVERRIDE_TYPE$ to 29 + equ SCANS.TW_LOT_ID$ to 30 + equ SCANS.TW_LOT_QTY$ to 31 + equ SCANS.TEST_RUN_TYPE_ID$ to 32 -Equ SCANS.SCAN_ID$ To 0 -Equ SCANS.CREATED_DATE$ To 1 -Equ SCANS.CREATED_TIME$ To 2 -Equ SCANS.SCAN_TYPE$ To 3 -Equ SCANS.EMPLOYEE_ID$ To 4 -Equ SCANS.CASSETTE_IDS$ To 5 -Equ SCANS.LOCATION_ID$ To 6 -Equ SCANS.TOOL_ID$ To 7 -Equ SCANS.ACCEPTED$ To 8 -Equ SCANS.ACCEPTED_DATE$ To 9 -Equ SCANS.ACCEPTED_TIME$ To 10 -Equ SCANS.SCANNED_DATES$ To 11 -Equ SCANS.SCANNED_TIMES$ To 12 -Equ SCANS.SCANNED_DATA$ To 13 -Equ SCANS.ACTION$ To 14 -Equ SCANS.WAFER_COUNT_CONFIRMED$ To 15 -Equ SCANS.BOAT_ID$ To 16 -Equ SCANS.PL_NUMBER$ To 17 -Equ SCANS.UNLOAD_PL_CONFIRMED$ To 18 -Equ SCANS.LOAD_LOCK$ To 19 -Equ SCANS.TRANSFER_TOOL_ID$ To 20 -Equ SCANS.ACCEPTABLE$ To 21 -Equ SCANS.NOT_ACCEPTABLE_REASON$ To 22 -Equ SCANS.RESULT$ To 23 -Equ SCANS.SUPPLIER_LOT$ To 24 -Equ SCANS.ERROR_CASS_IDS$ To 25 -Equ SCANS.OVERRIDE_REQD$ To 26 -Equ SCANS.OVERRIDE_REASON$ To 27 -Equ SCANS.AUTHENTICATED$ To 28 -Equ SCANS.OVERRIDE_TYPE$ To 29 +#endif diff --git a/LSL2/STPROCINS/TEST_WAFER_PROD_EQUATES.txt b/LSL2/STPROCINS/TEST_WAFER_PROD_EQUATES.txt index 0c4cd4c..de8642c 100644 --- a/LSL2/STPROCINS/TEST_WAFER_PROD_EQUATES.txt +++ b/LSL2/STPROCINS/TEST_WAFER_PROD_EQUATES.txt @@ -14,3 +14,4 @@ compile insert TEST_WAFER_PROD_EQUATES equ TEST_WAFER_PROD_PRODUCT_OPERATIONS$ to 5 #endif +