Compare commits

...

21 Commits

Author SHA1 Message Date
Infineon\StieberD
e5f0e9b7f1 modified passdown commuter module to clear form on successful entry post 2025-06-05 13:07:21 -07:00
Infineon\StieberD
869787e0f3 Added logging to proc queue processing. Refactored code to delete request on failures. Restored MCP call in Service_Manager_Events to avoid issues calling certain procedures. 2025-06-04 17:05:06 -07:00
Infineon\StieberD
38fc89dac6 Updated service manager debugger intercept to also send notes (emails). Refactored Service_Manager_Events so that the call stack is not hidden behind MCP.
updated debugger intercept distribution group
2025-06-04 11:21:30 -07:00
Ouellette Jonathan (CSC FI SPS MESLEO)
614da8ad3b Merged PR 18112: Changed faulty call to LotEventServices -> CreateLotEvent to correct call
Changed faulty call to LotEventServices -> CreateLotEvent to correct call
2025-06-04 18:22:08 +02:00
Infineon\StieberD
dcb61e220c added production supervisors to MET DEPT popup so that calibration reminders are sent to them 2025-06-03 13:03:40 -07:00
Ouellette Jonathan (CSC FI SPS MESLEO)
117e5c8b4b Merged PR 18016: Added a new notification group and added group to get notifications on return...
Added a new notification group and added group to get notifications on return to fab
2025-06-02 21:00:34 +02:00
Infineon\StieberD
25c608c9a6 added a check for status of VOID within WO_MAT_ACTIONS to prevent creating MAKEUP_WAFERS record if lot is voided 2025-06-02 09:35:26 -07:00
Infineon\StieberD
31632e28aa fixed typo preventing location of calibration from being inserted into reminder email 2025-05-28 12:04:08 -07:00
Infineon\StieberD
03b0c8f606 re-enabling code temporarily turned off to populate REACT_ITEM<CURR_STATUS_STATIC> 2025-05-28 10:37:06 -07:00
Infineon\StieberD
6cfb6e521e Added new metric to track for reactor maintenance. Fixed a bug in DecrementWfrMetrics service.
added in equate changes
2025-05-28 01:29:32 +02:00
Infineon\StieberD
481f083804 added JFUENTE1 to MET DEPT so that MET type calibration notifications are also sent to her 2025-05-27 16:18:10 -07:00
Infineon\StieberD
18919090d8 updated wo_daily_sched_comm2 to pull the run order number from RUN_ORDER_NUM column in the RDS table 2025-05-27 11:30:13 -07:00
Infineon\StieberD
550f376a0b ready for deployment 2025-05-27 18:38:30 +02:00
Chase Tucker
6aad8036e5 Require TW logging at HTR last cassette unload 2025-05-27 08:54:38 -07:00
Chase Tucker
4fc7eb189b Add isAuthorizedToOverrideROTR flag 2025-05-27 17:30:21 +02:00
Infineon\StieberD
5e917e65ac added prod spec special instruction message for WMO makeup additions if flag set in PSN
added checkbox on prod spec form to set or unset show special instruction on backfill operation
2025-05-23 16:55:33 -07:00
Stieber Daniel (CSC FI SPS MESLEO)
97f3c3fce2 Merged PR 17496: updated CancelNicaOrder service to adapt to an update in the NICAIntegrationS...
updated CancelNicaOrder service to adapt to an update in the NICAIntegrationService
2025-05-23 20:36:18 +02:00
Stieber Daniel (CSC FI SPS MESLEO)
27d55d83a1 Merged PR 17495: fixed WM_OUT form Special Instruction source
fixed WM_OUT form Special Instruction source
2025-05-23 19:41:15 +02:00
Ouellette Jonathan (CSC FI SPS MESLEO)
4e213ff253 Merged PR 17284: Added call to CreateLotEvent routine on successful
Added call to CreateLotEvent routine on successful
completion of a lot qty adjustment to mark it as
as manual adjustment.
2025-05-21 23:53:18 +02:00
292bc4646b Merged PR 17058: Start sending 10 point thickness runs to InfinityQS
Start sending 10 point thickness runs to InfinityQS by copying the logic of the 14 point

Related work items: #255371, #255376
2025-05-21 21:34:30 +02:00
Mitchem Dakota (CSC FI SPS MESLEO External)
ab55269f87 Merged PR 17280: Add backside parameters for virgin wafers. 2025-05-21 18:42:45 +02:00
47 changed files with 19261 additions and 10279 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,675 @@
{
"header": {
"version": 1,
"type": "record"
},
"body": {
"record1": {
"<1>": "1010",
"<2>": "3",
"<3>": ""
},
"record2": {
"<1>": {
"<1,1>": "NDW_ACKNOWLEDGE_MESSAGE",
"<1,2>": "",
"<1,3>": "WINDOW",
"<1,4>": "",
"<1,5>": "137",
"<1,6>": "173",
"<1,7>": "-765",
"<1,8>": "-539",
"<1,9>": "Process Message",
"<1,10>": {
"<1,10,1>": "0x84C80000",
"<1,10,2>": "0x101"
},
"<1,11>": {
"<1,11,1>": "0x8000",
"<1,11,2>": "0x80000000"
},
"<1,12>": "",
"<1,13>": {
"<1,13,1>": "-2",
"<1,13,2>": "-2",
"<1,13,3>": "0"
},
"<1,14>": "",
"<1,15>": "",
"<1,16>": "",
"<1,17>": "",
"<1,18>": {
"<1,18,1>": {
"<1,18,1,1>": "X",
"<1,18,1,2>": "EXECUTE",
"<1,18,1,3>": "@WINDOW_EVENTS",
"<1,18,1,4>": {
"<1,18,1,4,1>": "@SELF",
"<1,18,1,4,2>": "@EVENT",
"<1,18,1,4,3>": "@PARAM1",
"<1,18,1,4,4>": "@PARAM2",
"<1,18,1,4,5>": "@PARAM3",
"<1,18,1,4,6>": "@PARAM4",
"<1,18,1,4,7>": "@PARAM5",
"<1,18,1,4,8>": "@PARAM6"
},
"<1,18,1,5>": "",
"<1,18,1,6>": "",
"<1,18,1,7>": "",
"<1,18,1,8>": "",
"<1,18,1,9>": "",
"<1,18,1,10>": "",
"<1,18,1,11>": "",
"<1,18,1,12>": "",
"<1,18,1,13>": "",
"<1,18,1,14>": "",
"<1,18,1,15>": "COMMEVT",
"<1,18,1,16>": "0"
}
},
"<1,19>": "CREATE",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": {
"<1,24,1>": "",
"<1,24,2>": "0",
"<1,24,3>": "0",
"<1,24,4>": "0",
"<1,24,5>": "",
"<1,24,6>": "0",
"<1,24,7>": "",
"<1,24,8>": "",
"<1,24,9>": "",
"<1,24,10>": "0",
"<1,24,11>": "0",
"<1,24,12>": "0",
"<1,24,13>": "0",
"<1,24,14>": "0",
"<1,24,15>": "0",
"<1,24,16>": "0",
"<1,24,17>": "0"
},
"<1,25>": "",
"<1,26>": "",
"<1,27>": "",
"<1,28>": "",
"<1,29>": "",
"<1,30>": "",
"<1,31>": "",
"<1,32>": "",
"<1,33>": "",
"<1,34>": "LSL2*IMAGE*ICO*INFINEON",
"<1,35>": "",
"<1,36>": "",
"<1,37>": {
"<1,37,1>": "0X10001",
"<1,37,2>": "0X10001"
},
"<1,38>": "",
"<1,39>": "",
"<1,40>": "",
"<1,41>": "",
"<1,42>": "",
"<1,43>": "",
"<1,44>": "",
"<1,45>": "",
"<1,46>": "",
"<1,47>": "",
"<1,48>": "",
"<1,49>": "",
"<1,50>": "",
"<1,51>": "",
"<1,52>": "",
"<1,53>": "",
"<1,54>": "",
"<1,55>": "",
"<1,56>": "",
"<1,57>": "",
"<1,58>": "",
"<1,59>": "",
"<1,60>": "",
"<1,61>": "",
"<1,62>": {
"<1,62,1>": "0",
"<1,62,2>": "",
"<1,62,3>": "",
"<1,62,4>": "2",
"<1,62,5>": "0",
"<1,62,6>": "0",
"<1,62,7>": "",
"<1,62,8>": "0.50",
"<1,62,9>": "5.00",
"<1,62,10>": "0.00"
},
"<1,63>": "",
"<1,64>": "",
"<1,65>": "",
"<1,66>": "",
"<1,67>": "",
"<1,68>": "",
"<1,69>": "",
"<1,70>": "",
"<1,71>": "",
"<1,72>": "",
"<1,73>": "",
"<1,74>": "",
"<1,75>": "",
"<1,76>": "",
"<1,77>": "",
"<1,78>": "",
"<1,79>": "",
"<1,80>": "",
"<1,81>": "",
"<1,82>": "",
"<1,83>": "",
"<1,84>": "",
"<1,85>": "",
"<1,86>": "",
"<1,87>": "",
"<1,88>": "",
"<1,89>": "",
"<1,90>": "",
"<1,91>": "",
"<1,92>": "",
"<1,93>": "",
"<1,94>": "",
"<1,95>": "",
"<1,96>": "",
"<1,97>": "",
"<1,98>": "",
"<1,99>": "",
"<1,100>": "",
"<1,101>": "",
"<1,102>": "",
"<1,103>": "",
"<1,104>": "",
"<1,105>": "",
"<1,106>": "0",
"<1,107>": "",
"<1,108>": ""
}
},
"record3": {
"<1>": {
"<1,1>": "EDB_DATA",
"<1,2>": "",
"<1,3>": "EDITBOX",
"<1,4>": "NDW_ACKNOWLEDGE_MESSAGE",
"<1,5>": "16",
"<1,6>": "12",
"<1,7>": "-17",
"<1,8>": "-48",
"<1,9>": "",
"<1,10>": {
"<1,10,1>": "0x56200840",
"<1,10,2>": "0x200"
},
"<1,11>": {
"<1,11,1>": "0xC400",
"<1,11,2>": "0x80000000"
},
"<1,12>": "3",
"<1,13>": {
"<1,13,1>": "-2",
"<1,13,2>": "-2",
"<1,13,3>": ""
},
"<1,14>": "-2",
"<1,15>": {
"<1,15,1>": {
"<1,15,1,1>": "Segoe UI",
"<1,15,1,2>": "-15",
"<1,15,1,3>": "400",
"<1,15,1,4>": "0",
"<1,15,1,5>": "0",
"<1,15,1,6>": "0",
"<1,15,1,7>": "0",
"<1,15,1,8>": "34",
"<1,15,1,9>": "0",
"<1,15,1,10>": "3",
"<1,15,1,11>": "2",
"<1,15,1,12>": "1"
}
},
"<1,16>": "",
"<1,17>": "",
"<1,18>": "",
"<1,19>": "",
"<1,20>": "",
"<1,21>": "",
"<1,22>": "",
"<1,23>": "",
"<1,24>": "",
"<1,25>": "",
"<1,26>": "",
"<1,27>": "",
"<1,28>": "<<None>>",
"<1,29>": "<<None>>",
"<1,30>": "",
"<1,31>": "0",
"<1,32>": "",
"<1,33>": "",
"<1,34>": "",
"<1,35>": "",
"<1,36>": "",
"<1,37>": "",
"<1,38>": "",
"<1,39>": "",
"<1,40>": "",
"<1,41>": "",
"<1,42>": "",
"<1,43>": "",
"<1,44>": "",
"<1,45>": "",
"<1,46>": "",
"<1,47>": "",
"<1,48>": "",
"<1,49>": "",
"<1,50>": "",
"<1,51>": "",
"<1,52>": "",
"<1,53>": "",
"<1,54>": "",
"<1,55>": "",
"<1,56>": "",
"<1,57>": "",
"<1,58>": "",
"<1,59>": "",
"<1,60>": "",
"<1,61>": "",
"<1,62>": "0",
"<1,63>": "",
"<1,64>": "",
"<1,65>": "",
"<1,66>": "",
"<1,67>": "",
"<1,68>": "",
"<1,69>": "",
"<1,70>": "",
"<1,71>": "",
"<1,72>": "",
"<1,73>": "",
"<1,74>": "",
"<1,75>": "",
"<1,76>": "",
"<1,77>": "",
"<1,78>": "",
"<1,79>": "",
"<1,80>": "",
"<1,81>": "",
"<1,82>": "",
"<1,83>": "",
"<1,84>": "",
"<1,85>": "",
"<1,86>": "",
"<1,87>": "",
"<1,88>": "",
"<1,89>": "",
"<1,90>": "",
"<1,91>": "",
"<1,92>": "",
"<1,93>": "",
"<1,94>": "",
"<1,95>": "",
"<1,96>": "",
"<1,97>": "",
"<1,98>": "",
"<1,99>": "",
"<1,100>": "",
"<1,101>": "",
"<1,102>": "",
"<1,103>": "",
"<1,104>": "",
"<1,105>": "",
"<1,106>": "",
"<1,107>": "",
"<1,108>": ""
},
"<2>": {
"<2,1>": "PUB_OK",
"<2,2>": "",
"<2,3>": "PUSHBUTTON",
"<2,4>": "NDW_ACKNOWLEDGE_MESSAGE",
"<2,5>": "-184",
"<2,6>": "-37",
"<2,7>": "80",
"<2,8>": "24",
"<2,9>": "&OK",
"<2,10>": {
"<2,10,1>": "0x56000300",
"<2,10,2>": "0x0"
},
"<2,11>": {
"<2,11,1>": "0x3005",
"<2,11,2>": "0x80000000"
},
"<2,12>": "1",
"<2,13>": {
"<2,13,1>": "-2",
"<2,13,2>": "-2",
"<2,13,3>": "0"
},
"<2,14>": "-2",
"<2,15>": {
"<2,15,1>": {
"<2,15,1,1>": "Segoe UI",
"<2,15,1,2>": "-12",
"<2,15,1,3>": "400",
"<2,15,1,4>": "0",
"<2,15,1,5>": "0",
"<2,15,1,6>": "0",
"<2,15,1,7>": "1",
"<2,15,1,8>": "0",
"<2,15,1,9>": "0",
"<2,15,1,10>": "0",
"<2,15,1,11>": "0",
"<2,15,1,12>": "0"
}
},
"<2,16>": "",
"<2,17>": "",
"<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>": "CLICK",
"<2,20>": "",
"<2,21>": "",
"<2,22>": "",
"<2,23>": "",
"<2,24>": "",
"<2,25>": "",
"<2,26>": "",
"<2,27>": "",
"<2,28>": "",
"<2,29>": "",
"<2,30>": "",
"<2,31>": "",
"<2,32>": "",
"<2,33>": "",
"<2,34>": "",
"<2,35>": "",
"<2,36>": "",
"<2,37>": "",
"<2,38>": "",
"<2,39>": "",
"<2,40>": "-1",
"<2,41>": {
"<2,41,1>": "",
"<2,41,2>": "-1"
},
"<2,42>": "",
"<2,43>": "",
"<2,44>": "",
"<2,45>": "",
"<2,46>": "",
"<2,47>": "",
"<2,48>": "",
"<2,49>": "",
"<2,50>": "",
"<2,51>": "",
"<2,52>": "",
"<2,53>": "",
"<2,54>": "",
"<2,55>": "",
"<2,56>": "",
"<2,57>": "",
"<2,58>": "",
"<2,59>": "",
"<2,60>": "",
"<2,61>": "",
"<2,62>": "0",
"<2,63>": "",
"<2,64>": {
"<2,64,1>": "-2",
"<2,64,2>": "-2",
"<2,64,3>": "0"
},
"<2,65>": "-2",
"<2,66>": "",
"<2,67>": "",
"<2,68>": "",
"<2,69>": "",
"<2,70>": "",
"<2,71>": "",
"<2,72>": "",
"<2,73>": "",
"<2,74>": "",
"<2,75>": "",
"<2,76>": "",
"<2,77>": "",
"<2,78>": "",
"<2,79>": "",
"<2,80>": "",
"<2,81>": "",
"<2,82>": "",
"<2,83>": "",
"<2,84>": "",
"<2,85>": "",
"<2,86>": "",
"<2,87>": "",
"<2,88>": "",
"<2,89>": "",
"<2,90>": "0",
"<2,91>": "0",
"<2,92>": "",
"<2,93>": "",
"<2,94>": "",
"<2,95>": "",
"<2,96>": "",
"<2,97>": "",
"<2,98>": "",
"<2,99>": "",
"<2,100>": "",
"<2,101>": "",
"<2,102>": "",
"<2,103>": "",
"<2,104>": "",
"<2,105>": "",
"<2,106>": "",
"<2,107>": "",
"<2,108>": ""
},
"<3>": {
"<3,1>": "PUB_CANCEL",
"<3,2>": "",
"<3,3>": "PUSHBUTTON",
"<3,4>": "NDW_ACKNOWLEDGE_MESSAGE",
"<3,5>": "-97",
"<3,6>": "-37",
"<3,7>": "80",
"<3,8>": "24",
"<3,9>": "&Cancel",
"<3,10>": {
"<3,10,1>": "0x56000300",
"<3,10,2>": "0x0"
},
"<3,11>": {
"<3,11,1>": "0x3002",
"<3,11,2>": "0x80000000"
},
"<3,12>": "2",
"<3,13>": {
"<3,13,1>": "-2",
"<3,13,2>": "-2",
"<3,13,3>": "0"
},
"<3,14>": "-2",
"<3,15>": {
"<3,15,1>": {
"<3,15,1,1>": "Segoe UI",
"<3,15,1,2>": "-12",
"<3,15,1,3>": "400",
"<3,15,1,4>": "0",
"<3,15,1,5>": "0",
"<3,15,1,6>": "0",
"<3,15,1,7>": "1",
"<3,15,1,8>": "0",
"<3,15,1,9>": "0",
"<3,15,1,10>": "0",
"<3,15,1,11>": "0",
"<3,15,1,12>": "0"
}
},
"<3,16>": "",
"<3,17>": "",
"<3,18>": {
"<3,18,1>": {
"<3,18,1,1>": "X",
"<3,18,1,2>": "EXECUTE",
"<3,18,1,3>": "@WINDOW_EVENTS",
"<3,18,1,4>": {
"<3,18,1,4,1>": "@SELF",
"<3,18,1,4,2>": "@EVENT",
"<3,18,1,4,3>": "@PARAM1",
"<3,18,1,4,4>": "@PARAM2",
"<3,18,1,4,5>": "@PARAM3",
"<3,18,1,4,6>": "@PARAM4",
"<3,18,1,4,7>": "@PARAM5",
"<3,18,1,4,8>": "@PARAM6"
},
"<3,18,1,5>": "",
"<3,18,1,6>": "",
"<3,18,1,7>": "",
"<3,18,1,8>": "",
"<3,18,1,9>": "",
"<3,18,1,10>": "",
"<3,18,1,11>": "",
"<3,18,1,12>": "",
"<3,18,1,13>": "",
"<3,18,1,14>": "",
"<3,18,1,15>": "COMMEVT",
"<3,18,1,16>": "0"
}
},
"<3,19>": "CLICK",
"<3,20>": "",
"<3,21>": "",
"<3,22>": "",
"<3,23>": "",
"<3,24>": "",
"<3,25>": "",
"<3,26>": "",
"<3,27>": "",
"<3,28>": "",
"<3,29>": "",
"<3,30>": "",
"<3,31>": "",
"<3,32>": "",
"<3,33>": "",
"<3,34>": "",
"<3,35>": "",
"<3,36>": "",
"<3,37>": "",
"<3,38>": "",
"<3,39>": "",
"<3,40>": "-1",
"<3,41>": {
"<3,41,1>": "",
"<3,41,2>": "-1"
},
"<3,42>": "",
"<3,43>": "",
"<3,44>": "",
"<3,45>": "",
"<3,46>": "",
"<3,47>": "",
"<3,48>": "",
"<3,49>": "",
"<3,50>": "",
"<3,51>": "",
"<3,52>": "",
"<3,53>": "",
"<3,54>": "",
"<3,55>": "",
"<3,56>": "",
"<3,57>": "",
"<3,58>": "",
"<3,59>": "",
"<3,60>": "",
"<3,61>": "",
"<3,62>": "0",
"<3,63>": "",
"<3,64>": {
"<3,64,1>": "-2",
"<3,64,2>": "-2",
"<3,64,3>": "0"
},
"<3,65>": "-2",
"<3,66>": "",
"<3,67>": "",
"<3,68>": "",
"<3,69>": "",
"<3,70>": "",
"<3,71>": "",
"<3,72>": "",
"<3,73>": "",
"<3,74>": "",
"<3,75>": "",
"<3,76>": "",
"<3,77>": "",
"<3,78>": "",
"<3,79>": "",
"<3,80>": "",
"<3,81>": "",
"<3,82>": "",
"<3,83>": "",
"<3,84>": "",
"<3,85>": "",
"<3,86>": "",
"<3,87>": "",
"<3,88>": "",
"<3,89>": "",
"<3,90>": "0",
"<3,91>": "0",
"<3,92>": "",
"<3,93>": "",
"<3,94>": "",
"<3,95>": "",
"<3,96>": "",
"<3,97>": "",
"<3,98>": "",
"<3,99>": "",
"<3,100>": "",
"<3,101>": "",
"<3,102>": "",
"<3,103>": "",
"<3,104>": "",
"<3,105>": "",
"<3,106>": "",
"<3,107>": "",
"<3,108>": ""
}
},
"record4": {
"<1>": ""
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -2738,7 +2738,7 @@
"<1,1,6>": "",
"<1,1,7>": "",
"<1,1,8>": "",
"<1,1,9>": "273"
"<1,1,9>": "274"
},
"<1,2>": {
"<1,2,1>": "POPUP",
@ -7802,7 +7802,7 @@
},
"<1,232>": {
"<1,232,1>": "POPUP",
"<1,232,2>": "8",
"<1,232,2>": "9",
"<1,232,3>": "ADM.TOOLS",
"<1,232,4>": "Tools",
"<1,232,5>": "0",
@ -7999,15 +7999,15 @@
"<1,240,20>": ""
},
"<1,241>": {
"<1,241,1>": "POPUP",
"<1,241,2>": "3",
"<1,241,3>": "ADM.WAREHOUSE",
"<1,241,4>": "Warehouse",
"<1,241,1>": "ITEM",
"<1,241,2>": "",
"<1,241,3>": "ADM.TOOLS.PRS_STAGE_DEFAULTS",
"<1,241,4>": "PRS Stage Defaults",
"<1,241,5>": "0",
"<1,241,6>": "0",
"<1,241,7>": "0",
"<1,241,8>": "0",
"<1,241,9>": "Warehouse and Location Setup",
"<1,241,9>": "",
"<1,241,10>": "",
"<1,241,11>": "0",
"<1,241,12>": "",
@ -8017,19 +8017,18 @@
"<1,241,16>": "",
"<1,241,17>": "",
"<1,241,18>": "",
"<1,241,19>": "",
"<1,241,20>": ""
"<1,241,19>": ""
},
"<1,242>": {
"<1,242,1>": "ITEM",
"<1,242,2>": "",
"<1,242,3>": "ADM.WH.LOCATION",
"<1,242,4>": "Location",
"<1,242,1>": "POPUP",
"<1,242,2>": "3",
"<1,242,3>": "ADM.WAREHOUSE",
"<1,242,4>": "Warehouse",
"<1,242,5>": "0",
"<1,242,6>": "0",
"<1,242,7>": "0",
"<1,242,8>": "0",
"<1,242,9>": "Inventory Locations",
"<1,242,9>": "Warehouse and Location Setup",
"<1,242,10>": "",
"<1,242,11>": "0",
"<1,242,12>": "",
@ -8045,13 +8044,13 @@
"<1,243>": {
"<1,243,1>": "ITEM",
"<1,243,2>": "",
"<1,243,3>": "ADM.WH.WAREHOUSE",
"<1,243,4>": "Warehouse",
"<1,243,3>": "ADM.WH.LOCATION",
"<1,243,4>": "Location",
"<1,243,5>": "0",
"<1,243,6>": "0",
"<1,243,7>": "0",
"<1,243,8>": "0",
"<1,243,9>": "Warehouse Information",
"<1,243,9>": "Inventory Locations",
"<1,243,10>": "",
"<1,243,11>": "0",
"<1,243,12>": "",
@ -8067,13 +8066,13 @@
"<1,244>": {
"<1,244,1>": "ITEM",
"<1,244,2>": "",
"<1,244,3>": "ADM.WH.GENERIC_BAR_CODE_LABEL",
"<1,244,4>": "Generic Bar Code Label",
"<1,244,3>": "ADM.WH.WAREHOUSE",
"<1,244,4>": "Warehouse",
"<1,244,5>": "0",
"<1,244,6>": "0",
"<1,244,7>": "0",
"<1,244,8>": "0",
"<1,244,9>": "Print Generic Bar Code Label",
"<1,244,9>": "Warehouse Information",
"<1,244,10>": "",
"<1,244,11>": "0",
"<1,244,12>": "",
@ -8089,13 +8088,13 @@
"<1,245>": {
"<1,245,1>": "ITEM",
"<1,245,2>": "",
"<1,245,3>": "ADM.NIGHTLY_PROCESS_SETUP",
"<1,245,4>": "&Nightly Process Setup",
"<1,245,3>": "ADM.WH.GENERIC_BAR_CODE_LABEL",
"<1,245,4>": "Generic Bar Code Label",
"<1,245,5>": "0",
"<1,245,6>": "0",
"<1,245,7>": "1",
"<1,245,7>": "0",
"<1,245,8>": "0",
"<1,245,9>": "",
"<1,245,9>": "Print Generic Bar Code Label",
"<1,245,10>": "",
"<1,245,11>": "0",
"<1,245,12>": "",
@ -8111,8 +8110,8 @@
"<1,246>": {
"<1,246,1>": "ITEM",
"<1,246,2>": "",
"<1,246,3>": "ADM.RUN_NIGHTLY_PROCESS",
"<1,246,4>": "&Run Nightly Process",
"<1,246,3>": "ADM.NIGHTLY_PROCESS_SETUP",
"<1,246,4>": "&Nightly Process Setup",
"<1,246,5>": "0",
"<1,246,6>": "0",
"<1,246,7>": "1",
@ -8133,13 +8132,13 @@
"<1,247>": {
"<1,247,1>": "ITEM",
"<1,247,2>": "",
"<1,247,3>": "ADMI.CUST_PROD_TEST_WAFER",
"<1,247,4>": "Customer Prod Test Wafer",
"<1,247,3>": "ADM.RUN_NIGHTLY_PROCESS",
"<1,247,4>": "&Run Nightly Process",
"<1,247,5>": "0",
"<1,247,6>": "0",
"<1,247,7>": "1",
"<1,247,8>": "0",
"<1,247,9>": "Enter or Update Customer Product Test Wafer Part Numbers",
"<1,247,9>": "",
"<1,247,10>": "",
"<1,247,11>": "0",
"<1,247,12>": "",
@ -8153,15 +8152,15 @@
"<1,247,20>": ""
},
"<1,248>": {
"<1,248,1>": "POPUP",
"<1,248,2>": "2",
"<1,248,3>": "ADM.THRUPUT_TARGETS",
"<1,248,4>": "&ThruPut Targets",
"<1,248,1>": "ITEM",
"<1,248,2>": "",
"<1,248,3>": "ADMI.CUST_PROD_TEST_WAFER",
"<1,248,4>": "Customer Prod Test Wafer",
"<1,248,5>": "0",
"<1,248,6>": "0",
"<1,248,7>": "0",
"<1,248,7>": "1",
"<1,248,8>": "0",
"<1,248,9>": "ThruPut Target Config",
"<1,248,9>": "Enter or Update Customer Product Test Wafer Part Numbers",
"<1,248,10>": "",
"<1,248,11>": "0",
"<1,248,12>": "",
@ -8175,15 +8174,15 @@
"<1,248,20>": ""
},
"<1,249>": {
"<1,249,1>": "ITEM",
"<1,249,2>": "",
"<1,249,3>": "ADM.THRUPUT_TARGETS.FISCAL_YEAR",
"<1,249,4>": "Fiscal Year",
"<1,249,1>": "POPUP",
"<1,249,2>": "2",
"<1,249,3>": "ADM.THRUPUT_TARGETS",
"<1,249,4>": "&ThruPut Targets",
"<1,249,5>": "0",
"<1,249,6>": "0",
"<1,249,7>": "0",
"<1,249,8>": "0",
"<1,249,9>": "Enter Fiscal Year Dates",
"<1,249,9>": "ThruPut Target Config",
"<1,249,10>": "",
"<1,249,11>": "0",
"<1,249,12>": "",
@ -8199,13 +8198,13 @@
"<1,250>": {
"<1,250,1>": "ITEM",
"<1,250,2>": "",
"<1,250,3>": "ADM.THRUPUT_TARGETS.FISCAL_QUARTER",
"<1,250,4>": "Fiscal Quarter",
"<1,250,3>": "ADM.THRUPUT_TARGETS.FISCAL_YEAR",
"<1,250,4>": "Fiscal Year",
"<1,250,5>": "0",
"<1,250,6>": "0",
"<1,250,7>": "0",
"<1,250,8>": "0",
"<1,250,9>": "Enter Fiscal Quarter Targets",
"<1,250,9>": "Enter Fiscal Year Dates",
"<1,250,10>": "",
"<1,250,11>": "0",
"<1,250,12>": "",
@ -8219,15 +8218,15 @@
"<1,250,20>": ""
},
"<1,251>": {
"<1,251,1>": "POPUP",
"<1,251,2>": "4",
"<1,251,3>": "ADM.RAS",
"<1,251,4>": "NCR Setup",
"<1,251,1>": "ITEM",
"<1,251,2>": "",
"<1,251,3>": "ADM.THRUPUT_TARGETS.FISCAL_QUARTER",
"<1,251,4>": "Fiscal Quarter",
"<1,251,5>": "0",
"<1,251,6>": "0",
"<1,251,7>": "0",
"<1,251,8>": "0",
"<1,251,9>": "Rejected Wafer Setup ",
"<1,251,9>": "Enter Fiscal Quarter Targets",
"<1,251,10>": "",
"<1,251,11>": "0",
"<1,251,12>": "",
@ -8241,15 +8240,15 @@
"<1,251,20>": ""
},
"<1,252>": {
"<1,252,1>": "ITEM",
"<1,252,2>": "",
"<1,252,3>": "ADM.RAS.AC",
"<1,252,4>": "&Assignable Causes",
"<1,252,1>": "POPUP",
"<1,252,2>": "4",
"<1,252,3>": "ADM.RAS",
"<1,252,4>": "NCR Setup",
"<1,252,5>": "0",
"<1,252,6>": "0",
"<1,252,7>": "0",
"<1,252,8>": "0",
"<1,252,9>": "Assignable Cause Setup",
"<1,252,9>": "Rejected Wafer Setup ",
"<1,252,10>": "",
"<1,252,11>": "0",
"<1,252,12>": "",
@ -8265,13 +8264,13 @@
"<1,253>": {
"<1,253,1>": "ITEM",
"<1,253,2>": "",
"<1,253,3>": "ADM.RAS.DE_GROUPS",
"<1,253,4>": "&Designation Error Groups",
"<1,253,3>": "ADM.RAS.AC",
"<1,253,4>": "&Assignable Causes",
"<1,253,5>": "0",
"<1,253,6>": "0",
"<1,253,7>": "0",
"<1,253,8>": "0",
"<1,253,9>": "Error Group Setup",
"<1,253,9>": "Assignable Cause Setup",
"<1,253,10>": "",
"<1,253,11>": "0",
"<1,253,12>": "",
@ -8287,13 +8286,13 @@
"<1,254>": {
"<1,254,1>": "ITEM",
"<1,254,2>": "",
"<1,254,3>": "ADM.RAS.LOSS_CODES",
"<1,254,4>": "&Loss Codes",
"<1,254,3>": "ADM.RAS.DE_GROUPS",
"<1,254,4>": "&Designation Error Groups",
"<1,254,5>": "0",
"<1,254,6>": "0",
"<1,254,7>": "0",
"<1,254,8>": "0",
"<1,254,9>": "Loss Code Setup",
"<1,254,9>": "Error Group Setup",
"<1,254,10>": "",
"<1,254,11>": "0",
"<1,254,12>": "",
@ -8309,13 +8308,13 @@
"<1,255>": {
"<1,255,1>": "ITEM",
"<1,255,2>": "",
"<1,255,3>": "ADM.TEST_WFR_USE_CD",
"<1,255,4>": "&Test Wafer Usage Codes",
"<1,255,3>": "ADM.RAS.LOSS_CODES",
"<1,255,4>": "&Loss Codes",
"<1,255,5>": "0",
"<1,255,6>": "0",
"<1,255,7>": "1",
"<1,255,7>": "0",
"<1,255,8>": "0",
"<1,255,9>": "",
"<1,255,9>": "Loss Code Setup",
"<1,255,10>": "",
"<1,255,11>": "0",
"<1,255,12>": "",
@ -8329,15 +8328,15 @@
"<1,255,20>": ""
},
"<1,256>": {
"<1,256,1>": "POPUP",
"<1,256,2>": "11",
"<1,256,3>": "ADM.DEVELOPER",
"<1,256,4>": "Developer",
"<1,256,1>": "ITEM",
"<1,256,2>": "",
"<1,256,3>": "ADM.TEST_WFR_USE_CD",
"<1,256,4>": "&Test Wafer Usage Codes",
"<1,256,5>": "0",
"<1,256,6>": "0",
"<1,256,7>": "0",
"<1,256,7>": "1",
"<1,256,8>": "0",
"<1,256,9>": "Developer and System Support Menu",
"<1,256,9>": "",
"<1,256,10>": "",
"<1,256,11>": "0",
"<1,256,12>": "",
@ -8351,15 +8350,15 @@
"<1,256,20>": ""
},
"<1,257>": {
"<1,257,1>": "ITEM",
"<1,257,2>": "",
"<1,257,3>": "ADM.DEV.KEEP_ALIVES",
"<1,257,4>": "Keep Alives",
"<1,257,1>": "POPUP",
"<1,257,2>": "11",
"<1,257,3>": "ADM.DEVELOPER",
"<1,257,4>": "Developer",
"<1,257,5>": "0",
"<1,257,6>": "0",
"<1,257,7>": "0",
"<1,257,8>": "0",
"<1,257,9>": "",
"<1,257,9>": "Developer and System Support Menu",
"<1,257,10>": "",
"<1,257,11>": "0",
"<1,257,12>": "",
@ -8375,13 +8374,13 @@
"<1,258>": {
"<1,258,1>": "ITEM",
"<1,258,2>": "",
"<1,258,3>": "ADMIN.DEVELOPER.MES_TASK",
"<1,258,4>": "MES Task",
"<1,258,3>": "ADM.DEV.KEEP_ALIVES",
"<1,258,4>": "Keep Alives",
"<1,258,5>": "0",
"<1,258,6>": "0",
"<1,258,7>": "0",
"<1,258,8>": "0",
"<1,258,9>": "Window for MES Task maintenenace.",
"<1,258,9>": "",
"<1,258,10>": "",
"<1,258,11>": "0",
"<1,258,12>": "",
@ -8397,13 +8396,13 @@
"<1,259>": {
"<1,259,1>": "ITEM",
"<1,259,2>": "",
"<1,259,3>": "ADMIN.DEVELOPER.SRP_UTILITY",
"<1,259,4>": "SRP Utility\tCtrl+Shift+S",
"<1,259,3>": "ADMIN.DEVELOPER.MES_TASK",
"<1,259,4>": "MES Task",
"<1,259,5>": "0",
"<1,259,6>": "0",
"<1,259,7>": "1",
"<1,259,8>": "851",
"<1,259,9>": "",
"<1,259,7>": "0",
"<1,259,8>": "0",
"<1,259,9>": "Window for MES Task maintenenace.",
"<1,259,10>": "",
"<1,259,11>": "0",
"<1,259,12>": "",
@ -8419,12 +8418,12 @@
"<1,260>": {
"<1,260,1>": "ITEM",
"<1,260,2>": "",
"<1,260,3>": "ADMIN.DEVELOPER.DICTIONARY_LISTINGS",
"<1,260,4>": "Dictionary Listings",
"<1,260,3>": "ADMIN.DEVELOPER.SRP_UTILITY",
"<1,260,4>": "SRP Utility\tCtrl+Shift+S",
"<1,260,5>": "0",
"<1,260,6>": "0",
"<1,260,7>": "0",
"<1,260,8>": "0",
"<1,260,7>": "1",
"<1,260,8>": "851",
"<1,260,9>": "",
"<1,260,10>": "",
"<1,260,11>": "0",
@ -8441,8 +8440,8 @@
"<1,261>": {
"<1,261,1>": "ITEM",
"<1,261,2>": "",
"<1,261,3>": "ADM.DEVELOPER.INTERFACE_DICT_EXPORT",
"<1,261,4>": "Interface Dict Export",
"<1,261,3>": "ADMIN.DEVELOPER.DICTIONARY_LISTINGS",
"<1,261,4>": "Dictionary Listings",
"<1,261,5>": "0",
"<1,261,6>": "0",
"<1,261,7>": "0",
@ -8463,8 +8462,8 @@
"<1,262>": {
"<1,262,1>": "ITEM",
"<1,262,2>": "",
"<1,262,3>": "ADMIN.DEVELOPER.THRUPUT_TEST",
"<1,262,4>": "Thruput Test",
"<1,262,3>": "ADM.DEVELOPER.INTERFACE_DICT_EXPORT",
"<1,262,4>": "Interface Dict Export",
"<1,262,5>": "0",
"<1,262,6>": "0",
"<1,262,7>": "0",
@ -8485,8 +8484,8 @@
"<1,263>": {
"<1,263,1>": "ITEM",
"<1,263,2>": "",
"<1,263,3>": "ADMIN.DEVELOPER.AD_TEST",
"<1,263,4>": "AD Test",
"<1,263,3>": "ADMIN.DEVELOPER.THRUPUT_TEST",
"<1,263,4>": "Thruput Test",
"<1,263,5>": "0",
"<1,263,6>": "0",
"<1,263,7>": "0",
@ -8507,8 +8506,8 @@
"<1,264>": {
"<1,264,1>": "ITEM",
"<1,264,2>": "",
"<1,264,3>": "ADMIN.DEVELOPER.SESSION_MANAGER",
"<1,264,4>": "Session Manager...",
"<1,264,3>": "ADMIN.DEVELOPER.AD_TEST",
"<1,264,4>": "AD Test",
"<1,264,5>": "0",
"<1,264,6>": "0",
"<1,264,7>": "0",
@ -8529,8 +8528,8 @@
"<1,265>": {
"<1,265,1>": "ITEM",
"<1,265,2>": "",
"<1,265,3>": "ADMIN.DEVELOPER.WEBTEST",
"<1,265,4>": "WebTest",
"<1,265,3>": "ADMIN.DEVELOPER.SESSION_MANAGER",
"<1,265,4>": "Session Manager...",
"<1,265,5>": "0",
"<1,265,6>": "0",
"<1,265,7>": "0",
@ -8551,8 +8550,8 @@
"<1,266>": {
"<1,266,1>": "ITEM",
"<1,266,2>": "",
"<1,266,3>": "ADMIN.DEVELOPER.ALL_REACTOR_MODES",
"<1,266,4>": "All Reactor Modes",
"<1,266,3>": "ADMIN.DEVELOPER.WEBTEST",
"<1,266,4>": "WebTest",
"<1,266,5>": "0",
"<1,266,6>": "0",
"<1,266,7>": "0",
@ -8571,15 +8570,15 @@
"<1,266,20>": ""
},
"<1,267>": {
"<1,267,1>": "POPUP",
"<1,267,2>": "2",
"<1,267,3>": "ADMIN.DEV.ARCHIVE",
"<1,267,4>": "Archive",
"<1,267,1>": "ITEM",
"<1,267,2>": "",
"<1,267,3>": "ADMIN.DEVELOPER.ALL_REACTOR_MODES",
"<1,267,4>": "All Reactor Modes",
"<1,267,5>": "0",
"<1,267,6>": "0",
"<1,267,7>": "0",
"<1,267,8>": "0",
"<1,267,9>": "Archived Records",
"<1,267,9>": "",
"<1,267,10>": "",
"<1,267,11>": "0",
"<1,267,12>": "",
@ -8593,15 +8592,15 @@
"<1,267,20>": ""
},
"<1,268>": {
"<1,268,1>": "ITEM",
"<1,268,2>": "",
"<1,268,3>": "ADM.DEV.ARCHIVE.AUDIT_TRAIL",
"<1,268,4>": "Audit Trail",
"<1,268,1>": "POPUP",
"<1,268,2>": "2",
"<1,268,3>": "ADMIN.DEV.ARCHIVE",
"<1,268,4>": "Archive",
"<1,268,5>": "0",
"<1,268,6>": "0",
"<1,268,7>": "0",
"<1,268,8>": "0",
"<1,268,9>": "Audit Manager Reporting",
"<1,268,9>": "Archived Records",
"<1,268,10>": "",
"<1,268,11>": "0",
"<1,268,12>": "",
@ -8617,13 +8616,13 @@
"<1,269>": {
"<1,269,1>": "ITEM",
"<1,269,2>": "",
"<1,269,3>": "ADM.DEV.ARCHIVE.AUDIT_MANAGER",
"<1,269,4>": "Audit Manager",
"<1,269,3>": "ADM.DEV.ARCHIVE.AUDIT_TRAIL",
"<1,269,4>": "Audit Trail",
"<1,269,5>": "0",
"<1,269,6>": "0",
"<1,269,7>": "0",
"<1,269,8>": "0",
"<1,269,9>": "Audit Manager Setup",
"<1,269,9>": "Audit Manager Reporting",
"<1,269,10>": "",
"<1,269,11>": "0",
"<1,269,12>": "",
@ -8637,15 +8636,15 @@
"<1,269,20>": ""
},
"<1,270>": {
"<1,270,1>": "SEPARATOR",
"<1,270,1>": "ITEM",
"<1,270,2>": "",
"<1,270,3>": "ADMIN.SEP114",
"<1,270,4>": "SEP114",
"<1,270,3>": "ADM.DEV.ARCHIVE.AUDIT_MANAGER",
"<1,270,4>": "Audit Manager",
"<1,270,5>": "0",
"<1,270,6>": "0",
"<1,270,7>": "0",
"<1,270,8>": "0",
"<1,270,9>": "",
"<1,270,9>": "Audit Manager Setup",
"<1,270,10>": "",
"<1,270,11>": "0",
"<1,270,12>": "",
@ -8659,10 +8658,10 @@
"<1,270,20>": ""
},
"<1,271>": {
"<1,271,1>": "ITEM",
"<1,271,1>": "SEPARATOR",
"<1,271,2>": "",
"<1,271,3>": "ADMIN.MASS_TOOL_MODE_CHANGE",
"<1,271,4>": "Mass Tool Mode Change",
"<1,271,3>": "ADMIN.SEP114",
"<1,271,4>": "SEP114",
"<1,271,5>": "0",
"<1,271,6>": "0",
"<1,271,7>": "0",
@ -8683,8 +8682,8 @@
"<1,272>": {
"<1,272,1>": "ITEM",
"<1,272,2>": "",
"<1,272,3>": "ADMIN.MASS_REACTOR_MODE_CHANGE",
"<1,272,4>": "Mass Reactor Mode Change",
"<1,272,3>": "ADMIN.MASS_TOOL_MODE_CHANGE",
"<1,272,4>": "Mass Tool Mode Change",
"<1,272,5>": "0",
"<1,272,6>": "0",
"<1,272,7>": "0",
@ -8705,8 +8704,8 @@
"<1,273>": {
"<1,273,1>": "ITEM",
"<1,273,2>": "",
"<1,273,3>": "ADMIN.TOOLS_EVAC",
"<1,273,4>": "Tools Evac",
"<1,273,3>": "ADMIN.MASS_REACTOR_MODE_CHANGE",
"<1,273,4>": "Mass Reactor Mode Change",
"<1,273,5>": "0",
"<1,273,6>": "0",
"<1,273,7>": "0",
@ -8723,6 +8722,28 @@
"<1,273,18>": "",
"<1,273,19>": "",
"<1,273,20>": ""
},
"<1,274>": {
"<1,274,1>": "ITEM",
"<1,274,2>": "",
"<1,274,3>": "ADMIN.TOOLS_EVAC",
"<1,274,4>": "Tools Evac",
"<1,274,5>": "0",
"<1,274,6>": "0",
"<1,274,7>": "0",
"<1,274,8>": "0",
"<1,274,9>": "",
"<1,274,10>": "",
"<1,274,11>": "0",
"<1,274,12>": "",
"<1,274,13>": "",
"<1,274,14>": "",
"<1,274,15>": "",
"<1,274,16>": "",
"<1,274,17>": "",
"<1,274,18>": "",
"<1,274,19>": "",
"<1,274,20>": ""
}
},
"<2>": {
@ -10964,7 +10985,17 @@
"<2,2,178,4,2>": "@WINDOW"
},
"<2,2,178,5>": "",
"<2,2,178,6>": ""
"<2,2,178,6>": "",
"<2,2,178,7>": "",
"<2,2,178,8>": "",
"<2,2,178,9>": "",
"<2,2,178,10>": "",
"<2,2,178,11>": "",
"<2,2,178,12>": "",
"<2,2,178,13>": "",
"<2,2,178,14>": "",
"<2,2,178,15>": "STARTWIN",
"<2,2,178,16>": "0"
},
"<2,2,179>": {
"<2,2,179,1>": "R",
@ -11032,25 +11063,45 @@
"<2,2,185,3>": "LSL2*STPROCEXE**PRINT_AKRION_TEST",
"<2,2,185,4>": "",
"<2,2,185,5>": "",
"<2,2,185,6>": ""
"<2,2,185,6>": "",
"<2,2,185,7>": "",
"<2,2,185,8>": "",
"<2,2,185,9>": "",
"<2,2,185,10>": "",
"<2,2,185,11>": "",
"<2,2,185,12>": "",
"<2,2,185,13>": "",
"<2,2,185,14>": "",
"<2,2,185,15>": "STPROC",
"<2,2,185,16>": "0"
},
"<2,2,186>": {
"<2,2,186,1>": "R",
"<2,2,186,2>": "EXECUTE",
"<2,2,186,3>": "LSL2*OIWINEXE**LOCATION",
"<2,2,186,3>": "LSL2*OIWINEXE**PRS_STAGE_DEFECT_DEFAULTS",
"<2,2,186,4>": {
"<2,2,186,4,1>": "CreateParam",
"<2,2,186,4,2>": "@WINDOW"
},
"<2,2,186,5>": "",
"<2,2,186,6>": ""
"<2,2,186,6>": "",
"<2,2,186,7>": "",
"<2,2,186,8>": "",
"<2,2,186,9>": "",
"<2,2,186,10>": "",
"<2,2,186,11>": "",
"<2,2,186,12>": "",
"<2,2,186,13>": "",
"<2,2,186,14>": "",
"<2,2,186,15>": "STARTWIN",
"<2,2,186,16>": "0"
},
"<2,2,187>": {
"<2,2,187,1>": "R",
"<2,2,187,2>": "EXECUTE",
"<2,2,187,3>": "LSL2*OIWINEXE**WAREHOUSE",
"<2,2,187,3>": "LSL2*OIWINEXE**LOCATION",
"<2,2,187,4>": {
"<2,2,187,4,1>": "",
"<2,2,187,4,1>": "CreateParam",
"<2,2,187,4,2>": "@WINDOW"
},
"<2,2,187,5>": "",
@ -11059,9 +11110,9 @@
"<2,2,188>": {
"<2,2,188,1>": "R",
"<2,2,188,2>": "EXECUTE",
"<2,2,188,3>": "LSL2*OIWINEXE**PRINT_GENERIC_BARCODE",
"<2,2,188,3>": "LSL2*OIWINEXE**WAREHOUSE",
"<2,2,188,4>": {
"<2,2,188,4,1>": "CreateParam",
"<2,2,188,4,1>": "",
"<2,2,188,4,2>": "@WINDOW"
},
"<2,2,188,5>": "",
@ -11070,9 +11121,9 @@
"<2,2,189>": {
"<2,2,189,1>": "R",
"<2,2,189,2>": "EXECUTE",
"<2,2,189,3>": "LSL2*OIWINEXE**NIGHTLY_PROCESS",
"<2,2,189,3>": "LSL2*OIWINEXE**PRINT_GENERIC_BARCODE",
"<2,2,189,4>": {
"<2,2,189,4,1>": "*CENTER",
"<2,2,189,4,1>": "CreateParam",
"<2,2,189,4,2>": "@WINDOW"
},
"<2,2,189,5>": "",
@ -11081,7 +11132,7 @@
"<2,2,190>": {
"<2,2,190,1>": "R",
"<2,2,190,2>": "EXECUTE",
"<2,2,190,3>": "LSL2*OIWINEXE**RUN_NIGHTLY_PROCESS",
"<2,2,190,3>": "LSL2*OIWINEXE**NIGHTLY_PROCESS",
"<2,2,190,4>": {
"<2,2,190,4,1>": "*CENTER",
"<2,2,190,4,2>": "@WINDOW"
@ -11092,9 +11143,9 @@
"<2,2,191>": {
"<2,2,191,1>": "R",
"<2,2,191,2>": "EXECUTE",
"<2,2,191,3>": "LSL2*OIWINEXE**CUST_TW_PART",
"<2,2,191,3>": "LSL2*OIWINEXE**RUN_NIGHTLY_PROCESS",
"<2,2,191,4>": {
"<2,2,191,4,1>": "CreateParam",
"<2,2,191,4,1>": "*CENTER",
"<2,2,191,4,2>": "@WINDOW"
},
"<2,2,191,5>": "",
@ -11103,7 +11154,7 @@
"<2,2,192>": {
"<2,2,192,1>": "R",
"<2,2,192,2>": "EXECUTE",
"<2,2,192,3>": "LSL2*OIWINEXE**FISCAL_YR",
"<2,2,192,3>": "LSL2*OIWINEXE**CUST_TW_PART",
"<2,2,192,4>": {
"<2,2,192,4,1>": "CreateParam",
"<2,2,192,4,2>": "@WINDOW"
@ -11114,7 +11165,7 @@
"<2,2,193>": {
"<2,2,193,1>": "R",
"<2,2,193,2>": "EXECUTE",
"<2,2,193,3>": "LSL2*OIWINEXE**FISCAL_QTR",
"<2,2,193,3>": "LSL2*OIWINEXE**FISCAL_YR",
"<2,2,193,4>": {
"<2,2,193,4,1>": "CreateParam",
"<2,2,193,4,2>": "@WINDOW"
@ -11125,9 +11176,9 @@
"<2,2,194>": {
"<2,2,194,1>": "R",
"<2,2,194,2>": "EXECUTE",
"<2,2,194,3>": "LSL2*OIWINEXE**ASSIGN_CAUSE",
"<2,2,194,3>": "LSL2*OIWINEXE**FISCAL_QTR",
"<2,2,194,4>": {
"<2,2,194,4,1>": "*CENTER",
"<2,2,194,4,1>": "CreateParam",
"<2,2,194,4,2>": "@WINDOW"
},
"<2,2,194,5>": "",
@ -11136,7 +11187,7 @@
"<2,2,195>": {
"<2,2,195,1>": "R",
"<2,2,195,2>": "EXECUTE",
"<2,2,195,3>": "LSL2*OIWINEXE**DESIG_ERR_GRP",
"<2,2,195,3>": "LSL2*OIWINEXE**ASSIGN_CAUSE",
"<2,2,195,4>": {
"<2,2,195,4,1>": "*CENTER",
"<2,2,195,4,2>": "@WINDOW"
@ -11147,7 +11198,7 @@
"<2,2,196>": {
"<2,2,196,1>": "R",
"<2,2,196,2>": "EXECUTE",
"<2,2,196,3>": "LSL2*OIWINEXE**LOSS_CODES",
"<2,2,196,3>": "LSL2*OIWINEXE**DESIG_ERR_GRP",
"<2,2,196,4>": {
"<2,2,196,4,1>": "*CENTER",
"<2,2,196,4,2>": "@WINDOW"
@ -11158,7 +11209,7 @@
"<2,2,197>": {
"<2,2,197,1>": "R",
"<2,2,197,2>": "EXECUTE",
"<2,2,197,3>": "LSL2*OIWINEXE**TW_CODES",
"<2,2,197,3>": "LSL2*OIWINEXE**LOSS_CODES",
"<2,2,197,4>": {
"<2,2,197,4,1>": "*CENTER",
"<2,2,197,4,2>": "@WINDOW"
@ -11169,81 +11220,85 @@
"<2,2,198>": {
"<2,2,198,1>": "R",
"<2,2,198,2>": "EXECUTE",
"<2,2,198,3>": "LSL2*POPUP**KEEP_ALIVES",
"<2,2,198,4>": "@WINDOW",
"<2,2,198,3>": "LSL2*OIWINEXE**TW_CODES",
"<2,2,198,4>": {
"<2,2,198,4,1>": "*CENTER",
"<2,2,198,4,2>": "@WINDOW"
},
"<2,2,198,5>": "",
"<2,2,198,6>": ""
},
"<2,2,199>": {
"<2,2,199,1>": "R",
"<2,2,199,2>": "EXECUTE",
"<2,2,199,3>": "LSL2*OIWINEXE**MES_TASK",
"<2,2,199,4>": {
"<2,2,199,4,1>": "CreateParam",
"<2,2,199,4,2>": "@WINDOW"
},
"<2,2,199,3>": "LSL2*POPUP**KEEP_ALIVES",
"<2,2,199,4>": "@WINDOW",
"<2,2,199,5>": "",
"<2,2,199,6>": ""
},
"<2,2,200>": {
"<2,2,200,1>": "R",
"<2,2,200,2>": "EXECUTE",
"<2,2,200,3>": "LSL2*STPROCEXE**SRP_UTILITY",
"<2,2,200,4>": "",
"<2,2,200,3>": "LSL2*OIWINEXE**MES_TASK",
"<2,2,200,4>": {
"<2,2,200,4,1>": "CreateParam",
"<2,2,200,4,2>": "@WINDOW"
},
"<2,2,200,5>": "",
"<2,2,200,6>": ""
},
"<2,2,201>": {
"<2,2,201,1>": "R",
"<2,2,201,2>": "EXECUTE",
"<2,2,201,3>": "SYSPROG*OIWINEXE**JCH_INDEX",
"<2,2,201,4>": {
"<2,2,201,4,1>": "CreateParam",
"<2,2,201,4,2>": "@WINDOW"
},
"<2,2,201,3>": "LSL2*STPROCEXE**SRP_UTILITY",
"<2,2,201,4>": "",
"<2,2,201,5>": "",
"<2,2,201,6>": ""
},
"<2,2,202>": {
"<2,2,202,1>": "R",
"<2,2,202,2>": "EXECUTE",
"<2,2,202,3>": "LSL2*STPROCEXE**EXPORT_INTERFACE_DICTS",
"<2,2,202,4>": "",
"<2,2,202,3>": "SYSPROG*OIWINEXE**JCH_INDEX",
"<2,2,202,4>": {
"<2,2,202,4,1>": "CreateParam",
"<2,2,202,4,2>": "@WINDOW"
},
"<2,2,202,5>": "",
"<2,2,202,6>": ""
},
"<2,2,203>": {
"<2,2,203,1>": "R",
"<2,2,203,2>": "EXECUTE",
"<2,2,203,3>": "LSL2*STPROCEXE**THRUPUT_REPORT_NEW",
"<2,2,203,3>": "LSL2*STPROCEXE**EXPORT_INTERFACE_DICTS",
"<2,2,203,4>": "",
"<2,2,203,5>": "",
"<2,2,203,6>": ""
"<2,2,203,6>": "",
"<2,2,203,7>": "",
"<2,2,203,8>": "",
"<2,2,203,9>": "",
"<2,2,203,10>": "",
"<2,2,203,11>": "",
"<2,2,203,12>": "",
"<2,2,203,13>": "",
"<2,2,203,14>": "",
"<2,2,203,15>": "STPROC",
"<2,2,203,16>": "0"
},
"<2,2,204>": {
"<2,2,204,1>": "R",
"<2,2,204,2>": "EXECUTE",
"<2,2,204,3>": "LSL2*OIWINEXE**AD_TEST",
"<2,2,204,4>": {
"<2,2,204,4,1>": "CreateParam",
"<2,2,204,4,2>": "@WINDOW"
},
"<2,2,204,3>": "LSL2*STPROCEXE**THRUPUT_REPORT_NEW",
"<2,2,204,4>": "",
"<2,2,204,5>": "",
"<2,2,204,6>": ""
},
"<2,2,205>": {
"<2,2,205,1>": "R",
"<2,2,205,2>": "EXECUTE",
"<2,2,205,3>": "SYSPROG*STPROCEXE**OBJ_CALL_EVENT",
"<2,2,205,3>": "LSL2*OIWINEXE**AD_TEST",
"<2,2,205,4>": {
"<2,2,205,4,1>": "@SELF",
"<2,2,205,4,2>": "@EVENT",
"<2,2,205,4,3>": "@PARAM1",
"<2,2,205,4,4>": "@PARAM2",
"<2,2,205,4,5>": "@PARAM3",
"<2,2,205,4,6>": "@PARAM4",
"<2,2,205,4,7>": "@PARAM5",
"<2,2,205,4,8>": "@PARAM6"
"<2,2,205,4,1>": "CreateParam",
"<2,2,205,4,2>": "@WINDOW"
},
"<2,2,205,5>": "",
"<2,2,205,6>": ""
@ -11251,34 +11306,40 @@
"<2,2,206>": {
"<2,2,206,1>": "R",
"<2,2,206,2>": "EXECUTE",
"<2,2,206,3>": "LSL2*STPROCEXE**JONATHAN_TEST",
"<2,2,206,4>": "",
"<2,2,206,3>": "SYSPROG*STPROCEXE**OBJ_CALL_EVENT",
"<2,2,206,4>": {
"<2,2,206,4,1>": "@SELF",
"<2,2,206,4,2>": "@EVENT",
"<2,2,206,4,3>": "@PARAM1",
"<2,2,206,4,4>": "@PARAM2",
"<2,2,206,4,5>": "@PARAM3",
"<2,2,206,4,6>": "@PARAM4",
"<2,2,206,4,7>": "@PARAM5",
"<2,2,206,4,8>": "@PARAM6"
},
"<2,2,206,5>": "",
"<2,2,206,6>": ""
},
"<2,2,207>": {
"<2,2,207,1>": "R",
"<2,2,207,2>": "EXECUTE",
"<2,2,207,3>": "LSL2*STPROCEXE**PRINT_REACT_MODE_LOG_SERVICES",
"<2,2,207,4>": "RunAllReport",
"<2,2,207,3>": "LSL2*STPROCEXE**JONATHAN_TEST",
"<2,2,207,4>": "",
"<2,2,207,5>": "",
"<2,2,207,6>": ""
},
"<2,2,208>": {
"<2,2,208,1>": "R",
"<2,2,208,2>": "EXECUTE",
"<2,2,208,3>": "LSL2*OIWINEXE**NDW_AUDIT_TRAIL",
"<2,2,208,4>": {
"<2,2,208,4,1>": "CreateParam",
"<2,2,208,4,2>": "@WINDOW"
},
"<2,2,208,3>": "LSL2*STPROCEXE**PRINT_REACT_MODE_LOG_SERVICES",
"<2,2,208,4>": "RunAllReport",
"<2,2,208,5>": "",
"<2,2,208,6>": ""
},
"<2,2,209>": {
"<2,2,209,1>": "R",
"<2,2,209,2>": "EXECUTE",
"<2,2,209,3>": "LSL2*OIWINEXE**DBW_AUDIT_MANAGER",
"<2,2,209,3>": "LSL2*OIWINEXE**NDW_AUDIT_TRAIL",
"<2,2,209,4>": {
"<2,2,209,4,1>": "CreateParam",
"<2,2,209,4,2>": "@WINDOW"
@ -11289,7 +11350,7 @@
"<2,2,210>": {
"<2,2,210,1>": "R",
"<2,2,210,2>": "EXECUTE",
"<2,2,210,3>": "LSL2*OIWINEXE**NDW_TOOLS_MODE_CHG",
"<2,2,210,3>": "LSL2*OIWINEXE**DBW_AUDIT_MANAGER",
"<2,2,210,4>": {
"<2,2,210,4,1>": "CreateParam",
"<2,2,210,4,2>": "@WINDOW"
@ -11300,7 +11361,7 @@
"<2,2,211>": {
"<2,2,211,1>": "R",
"<2,2,211,2>": "EXECUTE",
"<2,2,211,3>": "LSL2*OIWINEXE**NDW_REACTORS_MODE_CHG",
"<2,2,211,3>": "LSL2*OIWINEXE**NDW_TOOLS_MODE_CHG",
"<2,2,211,4>": {
"<2,2,211,4,1>": "CreateParam",
"<2,2,211,4,2>": "@WINDOW"
@ -11318,6 +11379,17 @@
},
"<2,2,212,5>": "",
"<2,2,212,6>": ""
},
"<2,2,213>": {
"<2,2,213,1>": "R",
"<2,2,213,2>": "EXECUTE",
"<2,2,213,3>": "LSL2*OIWINEXE**NDW_REACTORS_MODE_CHG",
"<2,2,213,4>": {
"<2,2,213,4,1>": "CreateParam",
"<2,2,213,4,2>": "@WINDOW"
},
"<2,2,213,5>": "",
"<2,2,213,6>": ""
}
},
"<2,3>": {
@ -11506,33 +11578,34 @@
"<2,3,183>": "ADM.EPI_SUSCEPTOR",
"<2,3,184>": "ADM.TEST_POINT_MAP",
"<2,3,185>": "ADM.PRINT_AKRION_TEST",
"<2,3,186>": "ADM.WH.LOCATION",
"<2,3,187>": "ADM.WH.WAREHOUSE",
"<2,3,188>": "ADM.WH.GENERIC_BAR_CODE_LABEL",
"<2,3,189>": "ADM.NIGHTLY_PROCESS_SETUP",
"<2,3,190>": "ADM.RUN_NIGHTLY_PROCESS",
"<2,3,191>": "ADMI.CUST_PROD_TEST_WAFER",
"<2,3,192>": "ADM.THRUPUT_TARGETS.FISCAL_YEAR",
"<2,3,193>": "ADM.THRUPUT_TARGETS.FISCAL_QUARTER",
"<2,3,194>": "ADM.RAS.AC",
"<2,3,195>": "ADM.RAS.DE_GROUPS",
"<2,3,196>": "ADM.RAS.LOSS_CODES",
"<2,3,197>": "ADM.TEST_WFR_USE_CD",
"<2,3,198>": "ADM.DEV.KEEP_ALIVES",
"<2,3,199>": "ADMIN.DEVELOPER.MES_TASK",
"<2,3,200>": "ADMIN.DEVELOPER.SRP_UTILITY",
"<2,3,201>": "ADMIN.DEVELOPER.DICTIONARY_LISTINGS",
"<2,3,202>": "ADM.DEVELOPER.INTERFACE_DICT_EXPORT",
"<2,3,203>": "ADMIN.DEVELOPER.THRUPUT_TEST",
"<2,3,204>": "ADMIN.DEVELOPER.AD_TEST",
"<2,3,205>": "ADMIN.DEVELOPER.SESSION_MANAGER",
"<2,3,206>": "ADMIN.DEVELOPER.WEBTEST",
"<2,3,207>": "ADMIN.DEVELOPER.ALL_REACTOR_MODES",
"<2,3,208>": "ADM.DEV.ARCHIVE.AUDIT_TRAIL",
"<2,3,209>": "ADM.DEV.ARCHIVE.AUDIT_MANAGER",
"<2,3,210>": "ADMIN.MASS_TOOL_MODE_CHANGE",
"<2,3,211>": "ADMIN.MASS_REACTOR_MODE_CHANGE",
"<2,3,212>": "ADMIN.TOOLS_EVAC"
"<2,3,186>": "ADM.TOOLS.PRS_STAGE_DEFAULTS",
"<2,3,187>": "ADM.WH.LOCATION",
"<2,3,188>": "ADM.WH.WAREHOUSE",
"<2,3,189>": "ADM.WH.GENERIC_BAR_CODE_LABEL",
"<2,3,190>": "ADM.NIGHTLY_PROCESS_SETUP",
"<2,3,191>": "ADM.RUN_NIGHTLY_PROCESS",
"<2,3,192>": "ADMI.CUST_PROD_TEST_WAFER",
"<2,3,193>": "ADM.THRUPUT_TARGETS.FISCAL_YEAR",
"<2,3,194>": "ADM.THRUPUT_TARGETS.FISCAL_QUARTER",
"<2,3,195>": "ADM.RAS.AC",
"<2,3,196>": "ADM.RAS.DE_GROUPS",
"<2,3,197>": "ADM.RAS.LOSS_CODES",
"<2,3,198>": "ADM.TEST_WFR_USE_CD",
"<2,3,199>": "ADM.DEV.KEEP_ALIVES",
"<2,3,200>": "ADMIN.DEVELOPER.MES_TASK",
"<2,3,201>": "ADMIN.DEVELOPER.SRP_UTILITY",
"<2,3,202>": "ADMIN.DEVELOPER.DICTIONARY_LISTINGS",
"<2,3,203>": "ADM.DEVELOPER.INTERFACE_DICT_EXPORT",
"<2,3,204>": "ADMIN.DEVELOPER.THRUPUT_TEST",
"<2,3,205>": "ADMIN.DEVELOPER.AD_TEST",
"<2,3,206>": "ADMIN.DEVELOPER.SESSION_MANAGER",
"<2,3,207>": "ADMIN.DEVELOPER.WEBTEST",
"<2,3,208>": "ADMIN.DEVELOPER.ALL_REACTOR_MODES",
"<2,3,209>": "ADM.DEV.ARCHIVE.AUDIT_TRAIL",
"<2,3,210>": "ADM.DEV.ARCHIVE.AUDIT_MANAGER",
"<2,3,211>": "ADMIN.MASS_TOOL_MODE_CHANGE",
"<2,3,212>": "ADMIN.MASS_REACTOR_MODE_CHANGE",
"<2,3,213>": "ADMIN.TOOLS_EVAC"
},
"<2,4>": "0"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -423,7 +423,7 @@
"<1,31>": "",
"<1,32>": "",
"<1,33>": "",
"<1,34>": "",
"<1,34>": "LSL2*IMAGE*ICO*INFINEON",
"<1,35>": "",
"<1,36>": "",
"<1,37>": {

View File

@ -6655,13 +6655,6 @@
"<41,35,3,3>": "",
"<41,35,3,4>": "",
"<41,35,3,5>": ""
},
"<41,35,4>": {
"<41,35,4,1>": "",
"<41,35,4,2>": "",
"<41,35,4,3>": "",
"<41,35,4,4>": "",
"<41,35,4,5>": ""
}
},
"<41,36>": "",
@ -7886,7 +7879,7 @@
"<45,10,2>": "0x200"
},
"<45,11>": {
"<45,11,1>": "0x0",
"<45,11,1>": "0x80000",
"<45,11,2>": "0x80000000"
},
"<45,12>": "45",
@ -7922,7 +7915,7 @@
"<45,21>": "",
"<45,22>": "",
"<45,23>": "WM_OUT",
"<45,24>": "SPECIAL_INST",
"<45,24>": "SPEC_INST",
"<45,25>": "",
"<45,26>": "",
"<45,27>": "",

View File

@ -40,7 +40,7 @@
"<8,2>": {
"<8,2,1>": "MET",
"<8,2,2>": "Metrology",
"<8,2,3>": "TODD_C, JEANNE_M"
"<8,2,3>": "TODD_C, JEANNE_M, JFUENTE1, JUSTIN_H, JONATHON_S, MARROQUINBRA, TIFFANY_M"
},
"<8,3>": {
"<8,3,1>": "MTC",

View File

@ -9,7 +9,7 @@
"<2>": "-1",
"<3>": "-1",
"<4>": "-1",
"<5>": "16777215",
"<5>": "-2",
"<6>": {
"<6,1>": {
"<6,1,1>": "Tahoma",
@ -31,7 +31,7 @@
}
},
"<7>": "REACT_ITEM",
"<8>": "BY @ID",
"<8>": "BY-DSND ENTER_DTM",
"<9>": {
"<9,1>": {
"<9,1,1>": "RI_NO",
@ -120,6 +120,22 @@
"<9,11,4>": "C",
"<9,11,5>": "D4/",
"<9,11,6>": "Retire Dt"
},
"<9,12>": {
"<9,12,1>": "ENTER_DTM",
"<9,12,2>": "14",
"<9,12,3>": "L",
"<9,12,4>": "C",
"<9,12,5>": "DT2/^H",
"<9,12,6>": "Enter Dtm"
},
"<9,13>": {
"<9,13,1>": "CURR_STATUS",
"<9,13,2>": "5",
"<9,13,3>": "L",
"<9,13,4>": "C",
"<9,13,5>": "[CONV_ITEM_CURR_STATUS]",
"<9,13,6>": "Curr Status"
}
},
"<10>": "T",
@ -147,7 +163,17 @@
"<32>": "0",
"<33>": "1",
"<34>": "16777215",
"<35>": "16777215"
"<35>": "16766894",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
}
}
}

View File

@ -9,7 +9,7 @@
"<2>": "-1",
"<3>": "-1",
"<4>": "-1",
"<5>": "16777215",
"<5>": "-2",
"<6>": {
"<6,1>": {
"<6,1,1>": "MS Sans Serif",
@ -91,7 +91,17 @@
"<32>": "0",
"<33>": "1",
"<34>": "16777215",
"<35>": "16777215"
"<35>": "16777215",
"<36>": "",
"<37>": "",
"<38>": "",
"<39>": "",
"<40>": "-2",
"<41>": "1000",
"<42>": "",
"<43>": "",
"<44>": "",
"<45>": ""
}
}
}

View File

@ -235,7 +235,7 @@ Service SendReminders()
IF CLType = 'E' THEN
Desc = CLRec<CALIB_LIST_EQ_DESC$>
SN = CLRec<CALIB_LIST_EQ_SN$>
Loc = CLRec<CALIB_LIST_EQ_LOC$
Loc = CLRec<CALIB_LIST_EQ_LOC$>
NewLine = Desc:' (S/N: ':SN:') located in the ':Loc:' is due for calibration on ':NextCalDt:CRLF$
END
IF CLType = 'S' THEN

View File

@ -50,109 +50,112 @@ RETURN Result
* * * * * * *
Create:
* * * * * * *
obj_AppWindow('Create')
Set_Property(@WINDOW,'STATUSLINE',@WINDOW:'.STATUSLINE_FIX')
GOSUB Refresh
obj_AppWindow('Create')
Set_Property(@WINDOW,'STATUSLINE',@WINDOW:'.STATUSLINE_FIX')
GOSUB Refresh
RETURN
* * * * * * *
Refresh:
* * * * * * *
RETURN
* * * * * * *
ReactNoGF:
* * * * * * *
* Don't add a return here
* * * * * * *
LUReactor:
* * * * * * *
IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1
IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2
Set_Status(0)
TypeOver = ''
TypeOver<PSELECT$> = '2' ;* Multiple Select
TypeOver<PTYPE$> = 'E' ;* Return entire row
ReactData = Popup(@WINDOW,TypeOver,'REACTORS')
IF ReactData = '' THEN RETURN
Set_Property(@WINDOW:'.REACT_NO','LIST',ReactData)
LineCnt = COUNT(ReactData,@FM) + (ReactData NE '')
ColCnt = 7
FOR Line = 1 TO LineCnt
FOR Column = 2 TO ColCnt
stat = Send_Message(@WINDOW:'.REACT_NO','COLOR_BY_POS',Column,Line,GREEN$)
NEXT Column
NEXT Line
IF NOT(ASSIGNED(Parm1)) THEN FocusControl = '' ELSE FocusControl = Parm1
IF NOT(ASSIGNED(Parm2)) THEN FocusPos = '' ELSE FocusPos = Parm2
Set_Status(0)
TypeOver = ''
TypeOver<PSELECT$> = '2' ;* Multiple Select
TypeOver<PTYPE$> = 'E' ;* Return entire row
ReactData = Popup(@WINDOW,TypeOver,'REACTORS')
IF ReactData = '' THEN RETURN
Set_Property(@WINDOW:'.REACT_NO','LIST',ReactData)
LineCnt = COUNT(ReactData,@FM) + (ReactData NE '')
ColCnt = 7
FOR Line = 1 TO LineCnt
FOR Column = 2 TO ColCnt
stat = Send_Message(@WINDOW:'.REACT_NO','COLOR_BY_POS',Column,Line,GREEN$)
NEXT Column
NEXT Line
RETURN
* * * * * * *
Cancel:
* * * * * * *
End_Dialog(@WINDOW,'')
End_Dialog(@WINDOW,'')
RETURN
* * * * * * *
PostEntries:
* * * * * * *
ReactNos = Get_Property(@WINDOW:'.REACT_NO','ARRAY')<COL$REACT_NO>
Comment = Get_Property(@WINDOW:'.COMMENT','DEFPROP')
LOOP
TestChar = ReactNos[-1,1]
UNTIL TestChar NE @VM OR ReactNos = ''
ReactNos[-1,1] = ''
REPEAT
EventKeys = '' ;* Keys to return to the REACT_EVENT window for a browse of the newly created records
IF ReactNos NE '' AND Comment NE '' THEN
EventDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') ;* Same DTM for all new records
EventType = 'PD' ;* Passdown
LoggedBy = @USER4
ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '')
ReactNos = Get_Property(@WINDOW:'.REACT_NO','ARRAY')<COL$REACT_NO>
Comment = Get_Property(@WINDOW:'.COMMENT','DEFPROP')
FOR I = 1 TO ReactCnt
ReactNo = ReactNos<1,I>
CurrMode = XLATE('REACTOR',ReactNo,'CURR_MODE','X')
LOOP
TestChar = ReactNos[-1,1]
UNTIL TestChar NE @VM OR ReactNos = ''
ReactNos[-1,1] = ''
REPEAT
EventKeys = '' ;* Keys to return to the REACT_EVENT window for a browse of the newly created records
IF ReactNos NE '' AND Comment NE '' THEN
obj_React_Event('Create',ReactNo:@RM:EventDTM:@RM:EventType:@RM:LoggedBy:@RM:Comment:@RM:@RM:CurrMode)
EventKeys<I> = ReactNo:'*':ICONV(EventDTM,'DT')
NEXT I
END
End_Dialog(@WINDOW,EventKeys)
EventDTM = OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS') ;* Same DTM for all new records
EventType = 'PD' ;* Passdown
LoggedBy = @USER4
ReactCnt = COUNT(ReactNos,@VM) + (ReactNos NE '')
FOR I = 1 TO ReactCnt
ReactNo = ReactNos<1,I>
CurrMode = XLATE('REACTOR',ReactNo,'CURR_MODE','X')
obj_React_Event('Create',ReactNo:@RM:EventDTM:@RM:EventType:@RM:LoggedBy:@RM:Comment:@RM:@RM:CurrMode)
ErrCode = ''
If Get_Status(ErrCode) then
Msg(@Window, '', 'OK', '', 'Process Error':@FM:'Error posting entries. ':ErrCode)
end else
Set_Property(@Window:'.REACT_NO', 'LIST', '')
Set_Property(@Window:'.COMMENT', 'TEXT', '')
end
EventKeys<I> = ReactNo:'*':ICONV(EventDTM,'DT')
NEXT I
END else
Msg(@Window, '', 'OK', '', 'Process Error':@FM:'React No(s) and Comment must not be null!')
end
RETURN

View File

@ -22,6 +22,7 @@ $INSERT TOOL_CLASS_EQUATES
$INSERT SECURITY_RIGHTS_EQU
$INSERT RTI_STYLE_EQUATES
$INSERT PROD_SPEC_EQUATES
$Insert PRS_STAGE_DEFECT_DEFAULTS_EQUATES
EQU CRLF$ TO \0D0A\
@ -54,6 +55,11 @@ EQU COL$SPOTS TO 8
EQU COL$FOV TO 9
EQU COL$BL_DEFECTS TO 10
EQU COL$BACK_SCRATCHES TO 1
EQU COL$BACK_SCRATCH_LEN TO 2
EQU COL$BACK_NODULES TO 3
EQU COL$BACK_SPIKES TO 4
EQU COL$MET_TEST TO 1
EQU COL$MET_PROP TO 2
@ -511,67 +517,29 @@ SurfscanDefaults:
Stage = Get_Property(@WINDOW:'.STAGE','DEFPROP')
IF Stage = 'FWI' OR Stage = 'LWI' THEN Stage = 'WFR'
BEGIN CASE
CASE Stage = 'PRE' AND EntID = @WINDOW:'.VIRGIN_DEFAULTS'
Vals = ''
Vals<COL$LPD> = '10'
Vals<COL$SCRATCHES> = '1'
Vals<COL$SCRATCH_LEN> = '1'
Vals<COL$PITS> = '1'
Vals<COL$MOUNDS> = '1'
Vals<COL$STACK_FAULTS> = ''
Vals<COL$SPIKES> = ''
Vals<COL$SPOTS> = '1'
Vals<COL$FOV> = '1'
Vals<COL$BL_DEFECTS > = '1'
DefValRec = Xlate('PRS_STAGE_DEFECT_DEFAULTS', 'PRE-VIRGIN', '', 'X')
CheckVals = '0':@RM:'1'
CASE Stage = 'PRE' AND EntID = @WINDOW:'.BL_DEFAULTS'
Vals = ''
Vals<COL$LPD> = '10'
Vals<COL$SCRATCHES> = '1'
Vals<COL$SCRATCH_LEN> = '1'
Vals<COL$PITS> = '10'
Vals<COL$MOUNDS> = '10'
Vals<COL$STACK_FAULTS> = ''
Vals<COL$SPIKES> = ''
Vals<COL$SPOTS> = '5'
Vals<COL$FOV> = '2'
Vals<COL$BL_DEFECTS > = '10'
DefValRec = Xlate('PRS_STAGE_DEFECT_DEFAULTS', 'PRE-BURIED', '', 'X')
CheckVals = '1':@RM:'1'
CASE Stage = 'WFR' AND EntID = @WINDOW:'.VIRGIN_DEFAULTS'
Vals = ''
Vals<COL$LPD> = '20'
Vals<COL$SCRATCHES> = '1'
Vals<COL$SCRATCH_LEN> = '1'
Vals<COL$PITS> = '1'
Vals<COL$MOUNDS> = '1'
Vals<COL$STACK_FAULTS> = '10'
Vals<COL$SPIKES> = '5'
Vals<COL$SPOTS> = '1'
Vals<COL$FOV> = '1'
Vals<COL$BL_DEFECTS > = '1'
CASE Stage = 'FWI' AND EntID = @WINDOW:'.VIRGIN_DEFAULTS'
DefValRec = Xlate('PRS_STAGE_DEFECT_DEFAULTS', 'FWI-VIRGIN', '', 'X')
CheckVals = '1':@RM:'1'
CASE Stage = 'WFR' AND EntID = @WINDOW:'.BL_DEFAULTS'
Vals = ''
Vals<COL$LPD> = '20'
Vals<COL$SCRATCHES> = '1'
Vals<COL$SCRATCH_LEN> = '10'
Vals<COL$PITS> = '20'
Vals<COL$MOUNDS> = '20'
Vals<COL$STACK_FAULTS> = '20'
Vals<COL$SPIKES> = '5'
Vals<COL$SPOTS> = '1'
Vals<COL$FOV> = '1'
Vals<COL$BL_DEFECTS > = '20'
CASE Stage = 'FWI' AND EntID = @WINDOW:'.BL_DEFAULTS'
DefValRec = Xlate('PRS_STAGE_DEFECT_DEFAULTS', 'FWI-BURIED', '', 'X')
CheckVals = '1':@RM:'1'
CASE Stage = 'LWI' AND EntID = @WINDOW:'.VIRGIN_DEFAULTS'
DefValRec = Xlate('PRS_STAGE_DEFECT_DEFAULTS', 'LWI-VIRGIN', '', 'X')
CheckVals = '1':@RM:'1'
CASE Stage = 'LWI' AND EntID = @WINDOW:'.BL_DEFAULTS'
DefValRec = Xlate('PRS_STAGE_DEFECT_DEFAULTS', 'LWI-BURIED', '', 'X')
CheckVals = '1':@RM:'1'
CASE 1
@ -579,6 +547,23 @@ BEGIN CASE
END CASE
Vals = ''
Vals<COL$LPD> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_LPD$>
Vals<COL$SCRATCHES> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_SCRATCHES$>
Vals<COL$SCRATCH_LEN> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_SCRATCH_LEN$>
Vals<COL$PITS> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_PITS$>
Vals<COL$MOUNDS> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_MOUNDS$>
Vals<COL$STACK_FAULTS> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_STACK_FAULTS$>
Vals<COL$SPIKES> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_SPIKES$>
Vals<COL$SPOTS> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_SPOTS$>
Vals<COL$FOV> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_FOV$>
Vals<COL$BL_DEFECTS> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_FRONT_BL_DEFECTS$>
BackVals = ''
BackVals<COL$BACK_SCRATCHES> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_BACK_SCRATCHES$>
BackVals<COL$BACK_SCRATCH_LEN> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_BACK_SCRATCH_LEN$>
BackVals<COL$BACK_NODULES> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_BACK_NODULES$>
BackVals<COL$BACK_SPIKES> = DefValRec<PRS_STAGE_DEFECT_DEFAULTS_BACK_SPIKES$>
CurrVals = Get_Property(@WINDOW:'.VISUAL_PARMS','LIST')<1>
CONVERT @VM TO '' IN CurrVals
@ -608,6 +593,13 @@ IF Response THEN
Set_Property(@WINDOW:'.VISUAL_PARMS','LIST',vpList)
vpList = ''
FOR I = 1 TO 4
vpList<1,I> = BackVals<I>
NEXT I
Set_Property(@WINDOW:'.BSIDE_PARMS','LIST',vpList)
END
RETURN
@ -1235,3 +1227,5 @@ return

View File

@ -20,7 +20,7 @@ Declare Function Get_Property, Get_Status, Dialog_Box, Utility, Popup, Collect.I
Declare Function Send_Message, Msg, Security_Check, obj_React_Item, Select_Into, MemberOf, Create_Dialog, obj_Calendar
Declare Function GetAsyncKeyState, obj_Tables, MemberOf, Environment_Services, Database_Services, Rds_Services
Declare Function Reactor_Services, Error_Services, React_Servs_Services, Reactor_Log_Services, Send_Event, SRP_List
Declare Function Nica_Orders_Services
Declare Function Nica_Orders_Services, SRP_Date, React_Item_Services, SRP_Datetime, Datetime
$Insert MSG_EQUATES
$Insert APPCOLORS
@ -1229,64 +1229,51 @@ SvcsOptions:
If ItemType NE '' then
RetVal = ''
ItemType = ICONV(ItemType,'[CONV_CODE_DESC,REACT_ITEM_TYPE]')
ItemType = ICONV(ItemType,'[CONV_CODE_DESC,REACT_ITEM_TYPE]')
RIKeys = React_Item_Services('GetReactItems', ItemType, 'N,U')
OPEN 'DICT.REACT_ITEM' to DictReactItem else
ErrMsg('Unable to open DICT.REACT_ITEM')
return
end
SearchString = 'RI_TYPE':@VM:ItemType:@FM
SearchString := 'CURR_STATUS':@VM:'N':@VM:'U':@FM
RIKeys = ''
Option = ''
Flag = ''
Btree.Extract(SearchString,'REACT_ITEM',DictReactItem,RIKeys,Option,Flag)
If Get_Status(errCode) then
ErrMsg(errCode)
return
end
TypeOver = ''
TypeOVer<PMODE$> = 'K'
TypeOver<PDISPLAY$> = RIKeys
RetVal = Popup(@Window,TypeOver,'REACT_ITEM')
If RetVal NE '' then
obj_AppWindow('LUValReturn',RetVal:@RM:@Window:'.SERV_INFO':@RM:SelPos)
RIRec = XLATE('REACT_ITEM',RetVal,'','X')
If RIRec<REACT_ITEM_RI_TYPE$> = 'T' then
CardWindow = 'REACT_ITEM'
CardKey = RetVal
DefaultRec = ''
NewCardCtrl = ''
RecalcCtrl = @Window:'.SERV_INFO'
RecalcPos = SelPos
RetCtrl = @Window:'.SERV_INFO'
RetPos = SelPos
oAParms = CardWindow:@RM:CardKey:@RM:DefaultRec:@RM:NewCardCtrl:@RM:RecalcCtrl:@RM:RecalcPos:@RM:RetCtrl:@RM:RetPos
obj_AppWindow('ViewNewCard',oAParms)
Set_Property('REACT_ITEM.TUBE_GRADE','FOCUS',1)
If Get_Status(errCode) then
ErrMsg(errCode)
end
end
GoSub Refresh
If Error_Services('NoError') then
TypeOver = ''
TypeOVer<PMODE$> = 'K'
TypeOver<PDISPLAY$> = RIKeys
RetVal = Popup(@Window,TypeOver,'REACT_ITEM')
If RetVal NE '' then
obj_AppWindow('LUValReturn',RetVal:@RM:@Window:'.SERV_INFO':@RM:SelPos)
RIRec = XLATE('REACT_ITEM',RetVal,'','X')
If RIRec<REACT_ITEM_RI_TYPE$> = 'T' then
CardWindow = 'REACT_ITEM'
CardKey = RetVal
DefaultRec = ''
NewCardCtrl = ''
RecalcCtrl = @Window:'.SERV_INFO'
RecalcPos = SelPos
RetCtrl = @Window:'.SERV_INFO'
RetPos = SelPos
oAParms = CardWindow:@RM:CardKey:@RM:DefaultRec:@RM:NewCardCtrl:@RM:RecalcCtrl:@RM:RecalcPos:@RM:RetCtrl:@RM:RetPos
obj_AppWindow('ViewNewCard',oAParms)
Set_Property('REACT_ITEM.TUBE_GRADE','FOCUS',1)
If Get_Status(errCode) then
ErrMsg(errCode)
end
end
GoSub Refresh
end
end else
Error_Services('DisplayError')
end
end ;* End of check for null SNReq
End Case
GoSub Refresh
@ -1877,4 +1864,3 @@ ColorRemRiTable:
return

View File

@ -1099,7 +1099,7 @@ SignSupVer:
************************************************************************
WMOKey = Get_Property(@WINDOW,'ID')
PSNo = Get_Property(@WINDOW:'.PS_NO)','TEXT')
VerInst = XLATE('PRS_STAGE',PSNo:'*QA',PRS_STAGE_INST$,'X')
VerInst = XLATE('PRS_STAGE',PSNo:'*MO_QA',PRS_STAGE_INST$,'X')
IF (VerInst NE '') THEN
Yes = Dialog_Box( 'RDS_VER', @WINDOW, VerInst )
IF NOT(Yes) THEN
@ -1711,129 +1711,142 @@ AddMakeup:
END
NEXT I
Response = Dialog_Box('NDW_MAKEUP_WAFERS', @Window, WOMatKey)
Continue = True$
ShowSpecInst = Xlate('PROD_SPEC', PSNo, PROD_SPEC_SHOW_SPEC_INST_ON_MU_ADD$, 'X')
If ShowSpecInst then
SpecInst = Xlate('PROD_SPEC', PSNo, PROD_SPEC_SPEC_INST$, 'X')
If SpecInst NE '' then
Continue = Dialog_Box('NDW_ACKNOWLEDGE_MESSAGE', @Window, SpecInst)
If Not(Continue) then
Msg(@Window, '', 'OK', '', 'Process Error':@FM:'This PSN requires you to acknowledge special instructions to add makeup wafers.')
end
end
end
Begin Case
Case Response EQ True$
// User requested to convert the current cassette into a makeup box.
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
If Error_Services('NoError') then
SAPBatchNo = WOMatRec<WO_MAT_SAP_BATCH_NO$>
SAPTXDtm = WOMatRec<WO_MAT_SAP_TX_DTM$>
AwaitingBatchNo = ( (SAPTXDtm NE '') and (SAPBatchNo EQ '') )
HasBatchNo = (SAPBatchNo NE '')
FullBoxReject = (SAPBatchNo[-1, 1] = 'R')
Begin Case
Case AwaitingBatchNo
InvalidRequest = True$
ErrMsg('WARNING: Cassette ineligible to be converted as it is awaiting a batch number from SAP.')
Return
Case FullBoxReject
InvalidRequest = True$
ErrMsg('WARNING: Cassette is ineligible to be converted as it is a full box reject.')
Return
Case HasBatchNo
// Operation limited to LEAD and SUPERVISOR groups
OverrideMsg = "Cassette has a batch number. SUPERVISOR or LEAD must override."
Response = Msg(@Window, '', 'OVERRIDE', '', OverrideMsg)
Begin Case
Case Response EQ 1
Response = True$ ; // User Clicked Override
Case Response EQ 2
Response = False$ ; // User Clicked Cancel
Case Response EQ char(27)
Response = False$ ; // User Pressed Escape Key
End Case
If Response EQ True$ then
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:'LEAD':@VM:'SUPERVISOR')
Authorized = Response<1>
end else
Authorized = False$
end
If Not(Authorized) then Return
Case Otherwise$
Null
End Case
AvailMU_WMOKeys = ''
UserResp = Response
MakeupBox = ''
If Continue then
Response = Dialog_Box('NDW_MAKEUP_WAFERS', @Window, WOMatKey)
Begin Case
Case Response EQ True$
// User requested to convert the current cassette into a makeup box.
// Verify the quantity before proceeding.
If WMOutKey NE '' then
Parms = ''
Parms<1> = WMOutKey ; // Cassette to verify wafer count of.
Parms<2> = 0 ; // Wafer count adjustment - 0 because converting box.
Parms<3> = 'MU' ; // Wafer counter tool location
Proceed = Dialog_Box('NDW_WAFER_COUNTER', @Window, Parms)
If Proceed NE True$ then Return
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
If Error_Services('NoError') then
SAPBatchNo = WOMatRec<WO_MAT_SAP_BATCH_NO$>
SAPTXDtm = WOMatRec<WO_MAT_SAP_TX_DTM$>
AwaitingBatchNo = ( (SAPTXDtm NE '') and (SAPBatchNo EQ '') )
HasBatchNo = (SAPBatchNo NE '')
FullBoxReject = (SAPBatchNo[-1, 1] = 'R')
Begin Case
Case AwaitingBatchNo
InvalidRequest = True$
ErrMsg('WARNING: Cassette ineligible to be converted as it is awaiting a batch number from SAP.')
Return
Case FullBoxReject
InvalidRequest = True$
ErrMsg('WARNING: Cassette is ineligible to be converted as it is a full box reject.')
Return
Case HasBatchNo
// Operation limited to LEAD and SUPERVISOR groups
OverrideMsg = "Cassette has a batch number. SUPERVISOR or LEAD must override."
Response = Msg(@Window, '', 'OVERRIDE', '', OverrideMsg)
Begin Case
Case Response EQ 1
Response = True$ ; // User Clicked Override
Case Response EQ 2
Response = False$ ; // User Clicked Cancel
Case Response EQ char(27)
Response = False$ ; // User Pressed Escape Key
End Case
If Response EQ True$ then
Response = Dialog_Box('NDW_VERIFY_USER', @WINDOW, @USER4:@FM:'LEAD':@VM:'SUPERVISOR')
Authorized = Response<1>
end else
Authorized = False$
end
If Not(Authorized) then Return
Case Otherwise$
Null
End Case
AvailMU_WMOKeys = ''
UserResp = Response
MakeupBox = ''
// User requested to convert the current cassette into a makeup box.
// Verify the quantity before proceeding.
If WMOutKey NE '' then
Parms = ''
Parms<1> = WMOutKey ; // Cassette to verify wafer count of.
Parms<2> = 0 ; // Wafer count adjustment - 0 because converting box.
Parms<3> = 'MU' ; // Wafer counter tool location
Proceed = Dialog_Box('NDW_WAFER_COUNTER', @Window, Parms)
If Proceed NE True$ then Return
end else
ErrMsg('Error starting wafer counter check. WM_OUT key is missing.')
end
CheckValue = 1
FieldNo = WO_MAT_EPO_MAKEUP_BOX$
obj_WO_Mat('ChangeFlag',WOMatKey:@RM:FieldNo:@RM:CheckValue) ;* Set WMO_MAKEUP flag on WM_OUT
IF Get_Status(errCode) THEN ErrMsg(errCode)
Set_Property(@WINDOW:'.MAKEUP_BOX','DEFPROP',CheckValue) ;* Make this the makeup box
Send_Event(@WINDOW,'WRITE') ;* Write the record
WMOKey = WONo:'*':ProcStepNo:'*':CassNo
obj_AppWindow('LoadFormKeys',@WINDOW:@RM:WMOKey) ;* Reread the updated record
Return
end else
ErrMsg('Error starting wafer counter check. WM_OUT key is missing.')
ErrMsg('WARNING: Error reading WO_MAT record.')
Return
end
Case Response EQ ''
// User has cancelled this process.
Return
Case Otherwise$
// User has selected a makeup box to use and backfill.
AvailMU_WMOKeys = Response
MakeupBox = Response
MuWfrsNeeded = SelCnt
If AvailMU_WMOKeys NE '' then
// Wafer counter check - Account for the possibility of selecting more than one makeup box.
For each MuWmoKey in AvailMU_WMOKeys using @FM
MuWoMatKey = Field(MuWmoKey, '*', 1):'*':Field(MuWmoKey, '*', 3)
QtyAdj = MuWfrsNeeded
CurrMuWfrCnt = obj_WO_Mat('CurrWaferCnt', MuWoMatKey)
If MuWfrsNeeded GT CurrMuWfrCnt then
QtyAdj = CurrMuWfrCnt
MuWfrsNeeded -= CurrMuWfrCnt
end
Parms = ''
Parms<1> = MuWmoKey ; // Cassette to verify wafer count of.
Parms<2> = QtyAdj ; // Wafer count adjustment - 0 because converting box.
Parms<3> = 'MU' ; // Wafer counter tool location
Proceed = Dialog_Box('NDW_WAFER_COUNTER', @Window, Parms)
If Proceed NE True$ then Return
Next MuWmoKey
end
CheckValue = 1
* Signature block added 10/6/2010 JCH *
Valid = Dialog_Box('NDW_VERIFY_USER', @Window, @User4)
FieldNo = WO_MAT_EPO_MAKEUP_BOX$
obj_WO_Mat('ChangeFlag',WOMatKey:@RM:FieldNo:@RM:CheckValue) ;* Set WMO_MAKEUP flag on WM_OUT
IF Get_Status(errCode) THEN ErrMsg(errCode)
IF NOT(Valid) THEN RETURN ;* User is not worthy or can't type
Set_Property(@WINDOW:'.MAKEUP_BOX','DEFPROP',CheckValue) ;* Make this the makeup box
Send_Event(@WINDOW,'WRITE') ;* Write the record
Send_Event(@WINDOW,'WRITE')
WMOKey = WONo:'*':ProcStepNo:'*':CassNo
obj_AppWindow('LoadFormKeys',@WINDOW:@RM:WMOKey) ;* Reread the updated record
obj_WM_Out('AddMakeupWafers',WMOutKey:@RM:EmptySlots:@RM:MakeupBox)
//Remove the signatures for the WO_MAT_QA record because they are changing its results.
WOMatQaKey = Field(WMOutKey, '*', 1) : '*' : Field(WMOutKey, '*', 3)
Wo_Mat_Qa_Services('ClearSignatureByStage', WOMatQaKey, 'MO_QA')
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:WMOutKey)
Return
end else
ErrMsg('WARNING: Error reading WO_MAT record.')
Return
end
Case Response EQ ''
// User has cancelled this process.
Return
Case Otherwise$
// User has selected a makeup box to use and backfill.
AvailMU_WMOKeys = Response
MakeupBox = Response
MuWfrsNeeded = SelCnt
If AvailMU_WMOKeys NE '' then
// Wafer counter check - Account for the possibility of selecting more than one makeup box.
For each MuWmoKey in AvailMU_WMOKeys using @FM
MuWoMatKey = Field(MuWmoKey, '*', 1):'*':Field(MuWmoKey, '*', 3)
QtyAdj = MuWfrsNeeded
CurrMuWfrCnt = obj_WO_Mat('CurrWaferCnt', MuWoMatKey)
If MuWfrsNeeded GT CurrMuWfrCnt then
QtyAdj = CurrMuWfrCnt
MuWfrsNeeded -= CurrMuWfrCnt
end
Parms = ''
Parms<1> = MuWmoKey ; // Cassette to verify wafer count of.
Parms<2> = QtyAdj ; // Wafer count adjustment - 0 because converting box.
Parms<3> = 'MU' ; // Wafer counter tool location
Proceed = Dialog_Box('NDW_WAFER_COUNTER', @Window, Parms)
If Proceed NE True$ then Return
Next MuWmoKey
end
* Signature block added 10/6/2010 JCH *
Valid = Dialog_Box('NDW_VERIFY_USER', @Window, @User4)
IF NOT(Valid) THEN RETURN ;* User is not worthy or can't type
Send_Event(@WINDOW,'WRITE')
obj_WM_Out('AddMakeupWafers',WMOutKey:@RM:EmptySlots:@RM:MakeupBox)
//Remove the signatures for the WO_MAT_QA record because they are changing its results.
WOMatQaKey = Field(WMOutKey, '*', 1) : '*' : Field(WMOutKey, '*', 3)
Wo_Mat_Qa_Services('ClearSignatureByStage', WOMatQaKey, 'MO_QA')
obj_Appwindow('LoadFormKeys',@WINDOW:@RM:WMOutKey)
RETURN
End Case
RETURN
End Case
end
end else
// Cassette is on hold so makeup wafers cannot be added.
ErrorMessage = 'Add MU Wafer Denied!. The cassette must be taken off hold before adding makeup wafers.'

View File

@ -440,7 +440,7 @@ END
IF CurrStatus NE '' THEN
SWAP @VM WITH '" "' IN CurrStatus
IF SelectSent NE '' THEN SelectSent := ' AND'
SelectSent := ' WITH CURR_STATUS ':QUOTE(CurrStatus)
SelectSent := ' WITH CURR_STATUS_STATIC ':QUOTE(CurrStatus)
END
IF PartTypes NE '' THEN
@ -471,7 +471,7 @@ SelectSent = 'SELECT REACT_ITEM ':SelectSent
Def = ""
Def<MTEXT$> = "Selecting Reactor Events..."
Def<MTEXT$> = "Selecting Reactor Items..."
Def<MTYPE$> = "U"
* display the processing message and do the processing
@ -502,6 +502,3 @@ End_Dialog(@WINDOW,RINos)
RETURN

View File

@ -1177,3 +1177,4 @@ end service

View File

@ -1059,6 +1059,10 @@ Service ImportBioRadData(RunData, FileName)
objSPC = Logging_Services('NewLog', LogPath, OConv(Datetime(), 'DT_^1_HS_'):'_Thickness_9Points.txt', CRLF$, Comma$, '', '', False$, True$)
NotesLog = Logging_Services('NewLog', LogPath2, 'Thickness_9Points.txt', CRLF$, Comma$, '', '', False$, False$)
SendToSPC = True$
Case NumDataPoints EQ 10
objSPC = Logging_Services('NewLog', LogPath, OConv(Datetime(), 'DT_^1_HS_'):'_Thickness_10Points.txt', CRLF$, Comma$, '', '', False$, True$)
NotesLog = Logging_Services('NewLog', LogPath2, 'Thickness_10Points.txt', CRLF$, Comma$, '', '', False$, False$)
SendToSPC = True$
Case NumDataPoints EQ 14
objSPC = Logging_Services('NewLog', LogPath, OConv(Datetime(), 'DT_^1_HS_'):'_Thickness_14Points.txt', CRLF$, Comma$, '', '', False$, True$)
NotesLog = Logging_Services('NewLog', LogPath2, 'Thickness_14Points.txt', CRLF$, Comma$, '', '', False$, False$)

View File

@ -0,0 +1,99 @@
Compile function NDW_ACKNOWLEDGE_MESSAGE_EVENTS(CtrlEntId, Event, @PARAMS)
/***********************************************************************************************************************
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 Infineon.
Name : NDW_ACKNOWLEDGE_MESSAGE_EVENTS
Description : This function acts as a commuter module for all events related to this window.
Notes : Commuter Modules are automatically called from the Promoted_Events function which is called by the
application-specific promoted event handler. This makes it possible to add QuickEvents that need to
execute Basic+ logic without having use the Form Designer to make the association, although this is
limited to the events which are currently promoted.
If the form needs to call the commuter module directly then the QuickEvent parameters should be
formatted like this:
'@SELF','@EVENT',['@PARAM1','@PARAMx']
Parameters :
CtrlEntId [in] -- The fully qualified name of the control calling the promoted event
Event [in] -- The event being executed. See the Notes section regarding "PRE" events
Param1-15 [in] -- Additional event parameter holders
EventFlow [out] -- Set to 1 or 0 so the calling event knows whether or not to chain forward. See comments in
EVENT_SETUP insert
History : (Date, Initials, Notes)
05/23/25 djs Created initial commuter module.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
#window NDW_ACKNOWLEDGE_MESSAGE
$Insert APP_INSERTS
$Insert EVENT_SETUP
Declare subroutine PlaceDialog
SubclassInfo = Form_Services('FindSubclassControl')
Subclass = SubclassInfo<1>
// Update the arguments so that the OpenInsight OLE event will treate the ActiveX event as a native event handler.
If Event EQ 'OLE' then
Transfer Event to OIEvent
Transfer Param1 to Event
Transfer Param2 to Param1
Transfer Param3 to Param2
Transfer Param4 to Param3
Transfer Param5 to Param4
Transfer Param6 to Param5
Transfer Param7 to Param6
Transfer Param8 to Param7
end
GoToEvent Event for CtrlEntId else
// Event not implemented
end
Return EventFlow or 1
//-----------------------------------------------------------------------------
// EVENT HANDLERS
//-----------------------------------------------------------------------------
Event WINDOW.CREATE(CreateParam)
TextToAcknowledge = CreateParam
If TextToAcknowledge NE '' then
Swap @TM with CRLF$ in TextToAcknowledge
Set_Property(@Window:'.EDB_DATA', 'TEXT', TextToAcknowledge)
PlaceDialog(-2, -2)
end else
Post_Event(@Window, 'CLOSE')
end
End Event
Event WINDOW.CLOSE(CancelFlag, CloseFlags)
End_Dialog(@Window, False$)
end event
Event PUB_OK.CLICK()
End_Dialog(@Window, True$)
end event
Event PUB_CANCEL.CLICK()
End_Dialog(@Window, False$)
end event

View File

@ -3,7 +3,7 @@ Compile function NDW_ADJUST_LOT_QTY_EVENTS(CtrlEntId, Event, @PARAMS)
#window NDW_ADJUST_LOT_QTY
Declare function MemberOf, Database_Services, Error_Services, Datetime
Declare subroutine PlaceDialog, Database_Services, Lot_Services
Declare subroutine PlaceDialog, Database_Services, Lot_Services, Lot_Event_Services
$Insert App_Inserts
$Insert Lot_Equates
@ -125,10 +125,16 @@ Event PUB_SUBMIT.CLICK()
Begin Case
Case NewWfrQty LT CurrWfrQty
AmountToDecrease = CurrWfrQty - NewWfrQty
Lot_Services('ReduceLotWaferCount', LotId, AmountToDecrease, @User4)
Lot_Services('ReduceLotWaferCount', LotId, AmountToDecrease, @User4)
If Error_Services('NoError') then
Lot_Event_Services('CreateLotEvent', LotId, Datetime(), 'COMMENT', 'Manual Lot Qty decrease performed.', '', @User4, '' , '')
end
Case NewWfrQty GT CurrWfrQty
AmountToIncrease = NewWfrQty - CurrWfrQty
Lot_Services('IncreaseLotWaferCount', LotId, AmountToIncrease, @User4)
If Error_Services('NoError') then
Lot_Event_Services('CreateLotEvent', LotId, Datetime(), 'COMMENT', 'Manual Lot Qty increase performed.', '', @User4, '' , '')
end
End Case
If Error_Services('NoError') then
msg(@Window, 'Wafer quantity adjusted successfully!')
@ -176,3 +182,4 @@ return

View File

@ -244,8 +244,10 @@ Event WINDOW.CREATE(CreateParam)
IF MemberOf(@USER4, 'SPEC_CHANGE') OR MemberOf(@USER4, 'OI_ADMIN') THEN
Set_Property(@WINDOW:'.MENU.ENGINEERING.TOOL_CLASS_-_RECIPES__PATTERNS','VISIBLE',1)
Set_Property(@WINDOW:'.MENU.ADM.TOOLS.PRS_STAGE_DEFAULTS','VISIBLE',1)
END ELSE
Set_Property(@WINDOW:'.MENU.ENGINEERING.TOOL_CLASS_-_RECIPES__PATTERNS','VISIBLE',0)
Set_Property(@WINDOW:'.MENU.ADM.TOOLS.PRS_STAGE_DEFAULTS','VISIBLE',0)
END
Ctrls = @WINDOW:'.MENU.ADMIN.FABTIME_SUPPORT':@RM ; Props = 'ENABLED':@RM
@ -850,3 +852,4 @@ FixFont:
return

View File

@ -3,25 +3,27 @@ Compile function NDW_WAFER_COUNTS_EVENTS(CtrlEntId, Event, @PARAMS)
#window NDW_WAFER_COUNTS
Declare function Reactor_Services, Database_Services, Get_Property, Error_Services, Environment_Services
Declare function SRP_Array, Logging_Services
Declare subroutine Set_Property, Logging_Services
Declare subroutine Set_Property, Logging_Services, PlaceDialog
$Insert EVENT_SETUP
$Insert APP_INSERTS
$Insert REACTOR_EQUATES
EQU DATA_ASM_REACT_ID$ to 1
EQU DATA_ASM_SUSC_CNT$ to 2
EQU DATA_ASM_SUSC_THK$ to 3
EQU DATA_ASM_TUBE_CNT$ to 4
EQU DATA_ASM_TUBE_THK$ to 5
EQU DATA_ASM_ARM_CNT$ to 6
EQU DATA_ASM_REACT_ID$ to 1
EQU DATA_ASM_SUSC_CNT$ to 2
EQU DATA_ASM_SUSC_THK$ to 3
EQU DATA_ASM_TUBE_CNT$ to 4
EQU DATA_ASM_TUBE_THK$ to 5
EQU DATA_ASM_ARM_CNT$ to 6
EQU DATA_ASM_EXHAUST_THK$ to 7
EQU DATA_HTR_REACT_ID$ to 1
EQU DATA_HTR_SUSC_CNT$ TO 2
EQU DATA_HTR_SUSC_THK$ TO 3
EQU DATA_HTR_TUBE_CNT$ TO 4
EQU DATA_HTR_TUBE_THK$ TO 5
EQU DATA_HTR_ARM_CNT$ TO 6
EQU DATA_HTR_REACT_ID$ to 1
EQU DATA_HTR_SUSC_CNT$ TO 2
EQU DATA_HTR_SUSC_THK$ TO 3
EQU DATA_HTR_TUBE_CNT$ TO 4
EQU DATA_HTR_TUBE_THK$ TO 5
EQU DATA_HTR_ARM_CNT$ TO 6
EQU DATA_HTR_EXHAUST_THK$ TO 7
EQU DATA_EPP_REACT_ID$ to 1
EQU DATA_EPP_SUSC_CNT$ TO 2
@ -30,6 +32,7 @@ EQU DATA_EPP_BELL_JAR_CNT$ TO 4
EQU DATA_EPP_BELL_JAR_THK$ TO 5
EQU DATA_EPP_LOWER_QUARTZ_CNT$ TO 6
EQU DATA_EPP_LOWER_QUARTZ_THK$ TO 7
EQU DATA_EPP_EXHAUST_THK$ TO 8
ASMDataTable = @Window : '.OLE_DATA_ASM'
HTRDataTable = @Window : '.OLE_DATA_HTR'
@ -49,11 +52,11 @@ If Event EQ 'OLE' then
Transfer Param1 to Event
Transfer Param2 to Param1
Transfer Param3 to Param2
* Transfer Param4 to Param3
* Transfer Param5 to Param4
* Transfer Param6 to Param5
* Transfer Param7 to Param6
* Transfer Param8 to Param7
Transfer Param4 to Param3
Transfer Param5 to Param4
Transfer Param6 to Param5
Transfer Param7 to Param6
Transfer Param8 to Param7
end
GoToEvent Event for CtrlEntId else
@ -67,17 +70,25 @@ Return EventFlow or 1
//-----------------------------------------------------------------------------
Event WINDOW.CREATE(CreateParam)
GoSub SetupOLEControls
GoSub GetReactorMetrics
End Event
Event TABCONTROL_1.CLICK()
Page = Get_Property(@Window : '.TABCONTROL_1', 'VALUE')
Set_Property(@WINDOW,'VPOSITION', Page)
end event
Event PUB_REFRESH_DATA.CLICK()
GoSub GetReactorMetrics
end event
//-----------------------------------------------------------------------------
@ -85,6 +96,7 @@ end event
//-----------------------------------------------------------------------------
GetReactorMetrics:
ReactorRec = ''
ASMData = ''
HTRData = ''
@ -105,12 +117,13 @@ GetReactorMetrics:
for each Reactor in ASMList using @FM setting rPos
MetricData = Reactor_Services('GetWaferCntMetricsByReactorID', Reactor)
if Error_Services('NoError') then
ASMData<rPos, DATA_ASM_REACT_ID$> = MetricData<1, DATA_ASM_REACT_ID$>
ASMData<rPos, DATA_ASM_SUSC_CNT$> = MetricData<1, DATA_ASM_SUSC_CNT$>
ASMData<rPos, DATA_ASM_SUSC_THK$> = MetricData<1, DATA_ASM_SUSC_THK$>
ASMData<rPos, DATA_ASM_TUBE_CNT$> = MetricData<1, DATA_ASM_TUBE_CNT$>
ASMData<rPos, DATA_ASM_TUBE_THK$> = MetricData<1, DATA_ASM_TUBE_THK$>
ASMData<rPos, DATA_ASM_ARM_CNT$> = MetricData<1, DATA_ASM_ARM_CNT$>
ASMData<rPos, DATA_ASM_REACT_ID$> = MetricData<1, DATA_ASM_REACT_ID$>
ASMData<rPos, DATA_ASM_SUSC_CNT$> = MetricData<1, DATA_ASM_SUSC_CNT$>
ASMData<rPos, DATA_ASM_SUSC_THK$> = MetricData<1, DATA_ASM_SUSC_THK$>
ASMData<rPos, DATA_ASM_TUBE_CNT$> = MetricData<1, DATA_ASM_TUBE_CNT$>
ASMData<rPos, DATA_ASM_TUBE_THK$> = MetricData<1, DATA_ASM_TUBE_THK$>
ASMData<rPos, DATA_ASM_ARM_CNT$> = MetricData<1, DATA_ASM_ARM_CNT$>
ASMData<rPos, DATA_ASM_EXHAUST_THK$> = MetricData<1, DATA_ASM_EXHAUST_THK$>
end else
ErrorMessage = Error_Services('GetMessage')
LogData = LoggingDTM : @FM : ErrorMessage
@ -123,12 +136,13 @@ GetReactorMetrics:
for each Reactor in HTRList using @FM setting rPos
MetricData = Reactor_Services('GetWaferCntMetricsByReactorID', Reactor)
if Error_Services('NoError') then
HTRData<rPos, DATA_HTR_REACT_ID$> = MetricData <1, DATA_HTR_REACT_ID$>
HTRData<rPos, DATA_HTR_SUSC_CNT$> = MetricData<1, DATA_HTR_SUSC_CNT$>
HTRData<rPos, DATA_HTR_SUSC_THK$> = MetricData<1, DATA_HTR_SUSC_THK$>
HTRData<rPos, DATA_HTR_TUBE_CNT$> = MetricData<1, DATA_HTR_TUBE_CNT$>
HTRData<rPos, DATA_HTR_TUBE_THK$> = MetricData<1, DATA_HTR_TUBE_THK$>
HTRData<rPos, DATA_HTR_ARM_CNT$> = MetricData<1, DATA_HTR_ARM_CNT$>
HTRData<rPos, DATA_HTR_REACT_ID$> = MetricData <1, DATA_HTR_REACT_ID$>
HTRData<rPos, DATA_HTR_SUSC_CNT$> = MetricData<1, DATA_HTR_SUSC_CNT$>
HTRData<rPos, DATA_HTR_SUSC_THK$> = MetricData<1, DATA_HTR_SUSC_THK$>
HTRData<rPos, DATA_HTR_TUBE_CNT$> = MetricData<1, DATA_HTR_TUBE_CNT$>
HTRData<rPos, DATA_HTR_TUBE_THK$> = MetricData<1, DATA_HTR_TUBE_THK$>
HTRData<rPos, DATA_HTR_ARM_CNT$> = MetricData<1, DATA_HTR_ARM_CNT$>
HTRData<rPos, DATA_HTR_EXHAUST_THK$> = MetricData<1, DATA_HTR_EXHAUST_THK$>
end else
ErrorMessage = Error_Services('GetMessage')
LogData = LoggingDTM : @FM : ErrorMessage
@ -149,6 +163,7 @@ GetReactorMetrics:
EPPData<rPos, DATA_EPP_BELL_JAR_THK$> = MetricData<1, DATA_EPP_BELL_JAR_THK$>
EPPData<rPos, DATA_EPP_LOWER_QUARTZ_CNT$> = MetricData<1, DATA_EPP_LOWER_QUARTZ_CNT$>
EPPData<rPos, DATA_EPP_LOWER_QUARTZ_THK$> = MetricData<1, DATA_EPP_LOWER_QUARTZ_THK$>
EPPData<rPos, DATA_EPP_EXHAUST_THK$> = MetricData<1, DATA_EPP_EXHAUST_THK$>
end else
ErrorMessage = Error_Services('GetMessage')
LogData = LoggingDTM : @FM : ErrorMessage
@ -159,36 +174,55 @@ GetReactorMetrics:
return
SetupOLEControls:
//Set Row Headers to invisible
// Set Row Headers to invisible
Set_Property(ASMDataTable, "OLE.HeaderColumn[1]", '':@FM:False$)
Set_Property(HTRDataTable, "OLE.HeaderColumn[1]", '':@FM:False$)
Set_Property(EPPDataTable, "OLE.HeaderColumn[1]", '':@FM:False$)
//Set Number of columns for each table
Set_Property(ASMDataTable, "OLE.Dimension", 6);*6 columns for ASM Data Table
Set_Property(HTRDataTable, "OLE.Dimension", 6);*6 columns for HTR Data Table
Set_Property(EPPDataTable, "OLE.Dimension", 7);*7 columns for EPP Data Table
// Set Number of columns for each table
Set_Property(ASMDataTable, "OLE.Dimension", 7);*6 columns for ASM Data Table
Set_Property(HTRDataTable, "OLE.Dimension", 7);*6 columns for HTR Data Table
Set_Property(EPPDataTable, "OLE.Dimension", 8);*7 columns for EPP Data Table
//Set size of columns
// Set size of all columns
ColSizeArray = ''
ColSizeArray<1> = 100
ColSizeArray<1> = 115
Set_Property(ASMDataTable, "OLE.DataColumn[All]", ColSizeArray)
Set_Property(HTRDataTable, "OLE.DataColumn[All]", ColSizeArray)
Set_Property(EPPDataTable, "OLE.DataColumn[All]", ColSizeArray)
// Shrink size of column 1
ColSizeArray<1> = 60
Set_Property(ASMDataTable, "OLE.DataColumn[1]", ColSizeArray)
Set_Property(HTRDataTable, "OLE.DataColumn[1]", ColSizeArray)
Set_Property(EPPDataTable, "OLE.DataColumn[1]", ColSizeArray)
// Set size of all columns
ColSizeArray = ''
ColSizeArray<1> = 125
Set_Property(EPPDataTable, "OLE.DataColumn[6]", ColSizeArray)
// Set autosize last column to true to fill out table width
ColSizeArray<1> = 125
ColSizeArray<4> = True$
Set_Property(ASMDataTable, "OLE.DataColumn[7]", ColSizeArray)
Set_Property(HTRDataTable, "OLE.DataColumn[7]", ColSizeArray)
Set_Property(EPPDataTable, "OLE.DataColumn[8]", ColSizeArray)
//Set ASM Table Col. Headers
HeaderTitles = 'Reactor#':@VM:'Susc. Wfr. Cnt.':@VM:'Susc. Thk':@VM:'Tube Wfr. Cnt.':@VM:'Tube Wfr. Thk':@VM:'Arm Wfr. Cnt.'
HeaderTitles = 'Reactor#':@VM:'Susc. Wfr. Cnt.':@VM:'Susc. Thk':@VM:'Tube Wfr. Cnt.':@VM:'Tube Wfr. Thk':@VM:'Arm Wfr. Cnt.':@VM:'Exhaust Chamber Thk.'
Set_Property(ASMDataTable, "OLE.TitleList", HeaderTitles)
//Set HTR Table Col. Headers
HeaderTitles = 'Reactor#':@VM:'Susc. Run Cnt.':@VM:'Susc. Thk':@VM:'Tube Run Cnt.':@VM:'Tube Thk':@VM:'Arm Wfr. Cnt.'
HeaderTitles = 'Reactor#':@VM:'Susc. Run Cnt.':@VM:'Susc. Thk':@VM:'Tube Run Cnt.':@VM:'Tube Thk':@VM:'Arm Wfr. Cnt.':@VM:'Exhaust Chamber Thk.'
Set_Property(HTRDataTable, "OLE.TitleList", HeaderTitles)
//Set EPP Table Col. Headers
HeaderTitles = 'Reactor#':@VM:'Susc. Run Cnt.':@VM:'Susc. Thk':@VM:'Bell Jar Run Cnt.':@VM:'Bell Jar Thk':@VM:'Lower Quartz Run Cnt.':@VM:'Lower Quartz thk.'
HeaderTitles = 'Reactor#':@VM:'Susc. Run Cnt.':@VM:'Susc. Thk':@VM:'Bell Jar Run Cnt.':@VM:'Bell Jar Thk':@VM:'Lower Quartz Run Cnt.':@VM:'Lower Quartz thk.':@VM:'Exhaust Chamber Thk.'
Set_Property(EPPDataTable, "OLE.TitleList", HeaderTitles)
return

View File

@ -535,9 +535,9 @@ Service CancelOrder(OrderId)
If HttpResponseJson NE '' then
ObjResponseJson = ''
If SRP_JSON(ObjResponseJson, 'Parse', HttpResponseJson) EQ '' then
IsComplete = SRP_JSON(ObjResponseJson, 'GetValue', 'pendingUpdate')
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = SRP_JSON(ObjResponseJson, 'GetValue', 'state')
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
IsComplete = SRP_JSON(ObjResponseJson, 'GetValue', 'isComplete')
NicaOrderRec<NICA_ORDERS.ORDER_STATUS$> = 'cancelled'
NicaOrderRec<NICA_ORDERS.IS_COMPLETE$> = IsComplete
CloseDtm = Datetime()
NicaOrderRec<NICA_ORDERS.CLOSED_DTM$> = CloseDtm
If IsComplete EQ False$ then
@ -904,4 +904,3 @@ end service
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -18,7 +18,7 @@ COMPILE FUNCTION obj_Reactor_Log(Method,Parms)
*/
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg, Btree.Extract, obj_React_Item_Hist, Update_Index, obj_Post_Log
Declare subroutine Error_Services, Database_Services
Declare subroutine Error_Services, Database_Services, React_Item_Services
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, obj_React_Item, obj_Calendar, Database_Services
@ -195,18 +195,16 @@ PostReactItems:
ReactorLogRec<REACTOR_LOG_RI_POST_DTM$> = PostDTM
otParms = FIELDSTORE(otParms,@RM,4,0,ReactorLogRec)
//obj_Tables('WriteRec',otParms)
Database_Services('WriteDataRow', 'REACTOR_LOG', RLNo, ReactorLogRec, 1, 0, 1)
Update_Index('REACT_ITEM_HIST', 'INST_RL_ID', False$, True$) ;* Don't wait for indexer - flush pending indexes now
Update_Index('REACT_ITEM_HIST', 'REM_RL_ID', False$, True$)
end else
Error_Services('Add', ValidationFailureReason)
end
RETURN
@ -386,10 +384,3 @@ RemHistKeys:
RETURN

View File

@ -18,11 +18,12 @@ COMPILE FUNCTION obj_React_Item_Hist(Method,Parms)
*/
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Send_Dyn, obj_Popup
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn
DECLARE SUBROUTINE ErrMsg, Btree.Extract
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Send_Dyn, obj_Popup
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg, Btree.Extract, React_Item_Services
$Insert LOGICAL
$INSERT REACT_ITEM_HIST_EQUATES
$INSERT RLIST_EQUATES
EQU CRLF$ TO \0D0A\
EQU TAB$ TO CHAR(9)
@ -62,26 +63,26 @@ RETURN Result
Install:
* * * * * * *
RIHKey = Parms[1,@RM]
RL_Id = Parms[COL2()+1,@RM]
ReactWfrCnt = Parms[COL2()+1,@RM]
ReactHrs = Parms[COL2()+1,@RM]
RIHKey = Parms[1,@RM]
RL_Id = Parms[COL2()+1,@RM]
ReactWfrCnt = Parms[COL2()+1,@RM]
ReactHrs = Parms[COL2()+1,@RM]
IF RIHKey = '' THEN ErrorMsg = 'Null Parameter "RIHKey" passed to routine. (':Method:')'
IF RL_Id = '' THEN ErrorMsg = 'Null Parameter "RL_Id" passed to routine. (':Method:')'
*IF ReactWfrCnt = '' THEN ErrorMsg = 'Null Parameter "ReactWfrCnt" passed to routine. (':Method:')' ;* Optional
*IF ReactHrs = '' THEN ErrorMsg = 'Null Parameter "ReactHrs" passed to routine. (':Method:')' ;* Optional
IF RIHKey = '' THEN ErrorMsg = 'Null Parameter "RIHKey" passed to routine. (':Method:')'
IF RL_Id = '' THEN ErrorMsg = 'Null Parameter "RL_Id" passed to routine. (':Method:')'
IF ErrorMsg NE '' THEN RETURN
IF ErrorMsg NE '' THEN RETURN
RIHRec = ''
RIHRec<REACT_ITEM_HIST_INST_RL_ID$> = RL_ID
RIHRec<REACT_ITEM_HIST_INST_REACT_WFR_CNT$> = ReactWfrCnt
RIHRec<REACT_ITEM_HIST_INST_REACT_HRS$> = ReactHrs
RIHRec = ''
RIHRec<REACT_ITEM_HIST_INST_RL_ID$> = RL_ID
RIHRec<REACT_ITEM_HIST_INST_REACT_WFR_CNT$> = ReactWfrCnt
RIHRec<REACT_ITEM_HIST_INST_REACT_HRS$> = ReactHrs
otParms = 'REACT_ITEM_HIST':@RM:RIHKey:@RM:@RM:RIHRec
otParms = 'REACT_ITEM_HIST':@RM:RIHKey:@RM:@RM:RIHRec
obj_Tables('WriteRec',otParms)
obj_Tables('WriteRec',otParms)
RINo = Field(RIHKey, '*', 2, 1)
React_Item_Services('UpdateReactItemStatus', RINo)
RETURN
@ -90,38 +91,36 @@ RETURN
Remove:
* * * * * * *
RIHKey = Parms[1,@RM]
RemoveDTM = Parms[COL2()+1,@RM] ;* Internal format *
RL_Id = Parms[COL2()+1,@RM]
ReactWfrCnt = Parms[COL2()+1,@RM]
ReactHrs = Parms[COL2()+1,@RM]
RIHKey = Parms[1,@RM]
RemoveDTM = Parms[COL2()+1,@RM] ;* Internal format *
RL_Id = Parms[COL2()+1,@RM]
ReactWfrCnt = Parms[COL2()+1,@RM]
ReactHrs = Parms[COL2()+1,@RM]
IF RIHKey = '' THEN ErrorMsg = 'Null Parameter "RIHKey" passed to routine. (':Method:')'
IF RemoveDTM = '' THEN ErrorMsg = 'Null Parameter "RemoveDTM" passed to routine. (':Method:')'
IF RL_Id = '' THEN ErrorMsg = 'Null Parameter "RL_Id" passed to routine. (':Method:')'
*IF ReactWfrCnt = '' THEN ErrorMsg = 'Null Parameter "ReactWfrCnt" passed to routine. (':Method:')' ;* Optional
*IF ReactHrs = '' THEN ErrorMsg = 'Null Parameter "ReactHrs" passed to routine. (':Method:')' ;* Optional
IF RIHKey = '' THEN ErrorMsg = 'Null Parameter "RIHKey" passed to routine. (':Method:')'
IF RemoveDTM = '' THEN ErrorMsg = 'Null Parameter "RemoveDTM" passed to routine. (':Method:')'
IF RL_Id = '' THEN ErrorMsg = 'Null Parameter "RL_Id" passed to routine. (':Method:')'
IF ErrorMsg NE '' THEN RETURN
IF ErrorMsg NE '' THEN RETURN
* Read and update record *
otParms = 'REACT_ITEM_HIST':@RM:RIHKey
otParms = 'REACT_ITEM_HIST':@RM:RIHKey
RIHRec = obj_Tables('ReadRec',otParms)
RIHRec = obj_Tables('ReadRec',otParms)
IF Get_Status(errCode) THEN
Set_Status(0)
RIHRec = ''
END
IF Get_Status(errCode) THEN
Set_Status(0)
RIHRec = ''
END
RIHRec<REACT_ITEM_HIST_REM_DTM$> = RemoveDTM
RIHRec<REACT_ITEM_HIST_REM_RL_ID$> = RL_Id
RIHRec<REACT_ITEM_HIST_REM_REACT_WFR_CNT$> = ReactWfrCnt
RIHRec<REACT_ITEM_HIST_REM_REACT_HRS$> = ReactHrs
RIHRec<REACT_ITEM_HIST_REM_DTM$> = RemoveDTM
RIHRec<REACT_ITEM_HIST_REM_RL_ID$> = RL_Id
RIHRec<REACT_ITEM_HIST_REM_REACT_WFR_CNT$> = ReactWfrCnt
RIHRec<REACT_ITEM_HIST_REM_REACT_HRS$> = ReactHrs
otParms = FIELDSTORE(otParms,@RM,4,0,RIHRec)
obj_Tables('WriteRec',otParms)
otParms = FIELDSTORE(otParms,@RM,4,0,RIHRec)
obj_Tables('WriteRec',otParms)
RINo = Field(RIHKey, '*', 2, 1)
React_Item_Services('UpdateReactItemStatus', RINo)
RETURN
@ -130,24 +129,21 @@ RETURN
ClearRemove:
* * * * * * *
RIHKey = Parms[1,@RM]
RIHKey = Parms[1,@RM]
IF RIHKey = '' THEN RETURN
IF RIHKey = '' THEN RETURN
otParms = 'REACT_ITEM_HIST':@RM:RIHKey
* Read and update record *
RIHRec = obj_Tables('ReadRec',otParms)
otParms = 'REACT_ITEM_HIST':@RM:RIHKey
RIHRec<REACT_ITEM_HIST_REM_DTM$> = ''
RIHRec<REACT_ITEM_HIST_REM_RL_ID$> = ''
RIHRec<REACT_ITEM_HIST_REM_REACT_WFR_CNT$> = ''
RIHRec<REACT_ITEM_HIST_REM_REACT_HRS$> = ''
RIHRec = obj_Tables('ReadRec',otParms)
RIHRec<REACT_ITEM_HIST_REM_DTM$> = ''
RIHRec<REACT_ITEM_HIST_REM_RL_ID$> = ''
RIHRec<REACT_ITEM_HIST_REM_REACT_WFR_CNT$> = ''
RIHRec<REACT_ITEM_HIST_REM_REACT_HRS$> = ''
otParms = FIELDSTORE(otParms,@RM,4,0,RIHRec)
obj_Tables('WriteRec',otParms)
otParms = FIELDSTORE(otParms,@RM,4,0,RIHRec)
obj_Tables('WriteRec',otParms)
RETURN
@ -156,49 +152,50 @@ RETURN
GetHistory:
* * * * * * *
ReactNo = Parms[1,@RM]
RINo = Parms[COL2()+1,@RM]
RIType = Parms[COL2()+1,@RM]
ReactNo = Parms[1,@RM]
RINo = Parms[COL2()+1,@RM]
RIType = Parms[COL2()+1,@RM]
IF ReactNo = '' AND RINo = '' AND RIType = '' THEN RETURN
IF ReactNo = '' AND RINo = '' AND RIType = '' THEN RETURN
OPEN 'DICT.REACT_ITEM_HIST' TO DictVar ELSE
ErrorMsg = 'Unable to open DICT.REACT_ITEM_HIST for index lookup'
RETURN
END
OPEN 'DICT.REACT_ITEM_HIST' TO DictVar ELSE
ErrorMsg = 'Unable to open DICT.REACT_ITEM_HIST for index lookup'
RETURN
END
Search = ''
Search = ''
IF ReactNo NE '' THEN Search := 'REACT_NO':@VM:ReactNo:@FM
IF RINo NE '' THEN Search := 'RI_NO':@VM:RINo:@FM
IF RIType NE '' THEN Search := 'RI_TYPE':@VM:RIType:@FM
IF ReactNo NE '' THEN Search := 'REACT_NO':@VM:ReactNo:@FM
IF RINo NE '' THEN Search := 'RI_NO':@VM:RINo:@FM
IF RIType NE '' THEN Search := 'RI_TYPE':@VM:RIType:@FM
Option = ''
Flag = ''
Option = ''
Flag = ''
Btree.Extract(Search, 'REACT_ITEM_HIST', DictVar, RIKeys, Option, Flag) ;* Get unsorted keys based on Search parameters
Btree.Extract(Search, 'REACT_ITEM_HIST', DictVar, RIKeys, Option, Flag) ;* Get unsorted keys based on Search parameters
* Put sort data in first column (Install DTM)
// Put sort data in first column (Install DTM)
WorkList = ''
riCnt = COUNT(RIKeys,@VM) + (RIKeys NE '')
FOR I = 1 TO riCnt
RIKey = RIKeys<1,I>
WorkList<I> = FIELD(RIKey,'*',3):@VM:RIKey
NEXT I
WorkList = ''
riCnt = COUNT(RIKeys,@VM) + (RIKeys NE '')
FOR I = 1 TO riCnt
RIKey = RIKeys<1,I>
WorkList<I> = FIELD(RIKey,'*',3):@VM:RIKey
NEXT I
WorkList := @RM
WorkList := @RM
CONVERT @FM:@VM TO @RM:@FM IN WorkList ;* push delimiters higher for V119
CONVERT @FM:@VM TO @RM:@FM IN WorkList ;* push delimiters higher for V119
CALL V119('S','','D','L',WorkList,'') ;* Descending Left justified sort
CALL V119('S','','D','L',WorkList,'') ;* Descending Left justified sort
CONVERT @FM:@RM TO @VM:@FM IN WorkList ;* pull delimiters lower
CONVERT @FM:@RM TO @VM:@FM IN WorkList ;* pull delimiters lower
WorkList[-1,1] = '' ;* Trim trailing delimiter
WorkList[-1,1] = '' ;* Trim trailing delimiter
FOR I = 1 TO riCnt
Result<1,I> = WorkList<I,2> ;* Strip Sort column(s)
NEXT I
FOR I = 1 TO riCnt
Result<1,I> = WorkList<I,2> ;* Strip Sort column(s)
NEXT I
RETURN

View File

@ -84,6 +84,7 @@ $Insert NOTIFICATION_EQUATES
$Insert DICT_EQUATES
$Insert COMPANY_EQUATES
$Insert RETURN_TO_FAB_LOTS_EQUATES
$Insert TEST_RUN_EQUATES
EQU COL$LSID TO 1
EQU COL$RECIPE TO 2
@ -848,6 +849,27 @@ Service IsTWLoggingReqd(RDSNo)
Response = IsTWReqd
end service
Service TestWaferRanAfterLoad(RDSNo)
TestWaferRanAfterLoad = False$
TestWaferKeys = Test_Run_Services('GetTestRunKeysByRDS', RDSNo)
for each Key in TestWaferKeys using @VM
TestWaferDtm = Xlate('TEST_RUN', Key, TEST_RUN_RUN_DTM$, 'X')
TestWaferDate = SRP_DateTime('Date', TestWaferDtm)
TestWaferTime = SRP_DateTime('Time', TestWaferDtm)
RdsDateIn = Xlate('RDS', RDSNo, RDS_DATE_IN$, 'X')
RdsTimeIn = Xlate('RDS', RDSNo, RDS_TIME_IN$, 'X')
TestWaferRanAfterLoad = TestWaferDate > RdsDateIn
If TestWaferRanAfterLoad EQ False$ then
TestWaferRanAfterLoad = (TestWaferDate EQ RdsDateIn) and TestWaferTime GT RdsTimeIn
end
Until TestWaferRanAfterLoad EQ True$
Next Key
Response = TestWaferRanAfterLoad
end service
//----------------------------------------------------------------------------------------------------------------------
// VerifyEPPMetrology
//
@ -1805,3 +1827,4 @@ return

View File

@ -277,6 +277,7 @@ Event PUB_SIGN.CLICK()
end
If (Valid EQ True$) then
ReactorType = XLATE('RDS',RDSNo,'REACTOR_TYPE','X')
ErrMsg = ''
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
WoMatKey = WONo:'*':CassNo
IsLastCassetteInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
@ -298,26 +299,44 @@ Event PUB_SIGN.CLICK()
WoMatRecord = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = True$
Message = ''
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
Message = 'No material scheduled. Test wafer required.'
end else if NextEventHasSamePsn EQ False$ then
Message = 'Next work order is a NEW PSN number. Test wafer required.'
TestWaferRanSinceLoad = WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$>
If TestWaferRanSinceLoad NE True$ then
TestWaferRanSinceLoad = Rds_Services('TestWaferRanAfterLoad', RDSNo)
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> = TestWaferRanSinceLoad
If TestWaferRanSinceLoad NE True$ then
Message = ''
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
Message = 'No material scheduled. Test wafer required.'
end else if NextEventHasSamePsn EQ False$ then
Message = 'Next work order is a NEW PSN number. Test wafer required.'
end
Message_Box(@Window, Message, "Test Wafer Required", MSG_BTN_OK$ + MSG_ICON_EXCLAM$)
TWLogResult = Dialog_Box('NDW_LOG_TEST_WAFER_USAGE', @Window, RDSNo : @VM : '' : @VM : 'REACTOR' : @VM : Reactor)
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> = TWLogResult
If TWLogResult NE True$ then
ErrMsg = 'Unload blocked! You must run a test wafer before signing the unload'
end
end
end
MesageAcked = Message_Box(@Window, Message, "Test Wafer Required", MSG_BTN_OK$ + MSG_ICON_EXCLAM$)
WoMatRecord<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = True$
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
ConfirmNote = 'Test wafer requirement acknowledged. [RDS:' : RDSNo : '], [WO:' : WONo : '], [Cassette:' : CassNo : ']'
Reactor_Log_Services('AddComment', Reactor, ConfirmNote, @User4)
end
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRecord, True$, False$, False$)
end
end
end
QA_Services('SignUnloadStage', RDSNo, @User4)
If ErrMsg NE '' then
Error_Services('Add', ErrMsg)
end
If Error_Services('NoError') then
QA_Services('SignUnloadStage', RDSNo, @User4)
end
end
end
If Error_Services('HasError') then
@ -446,3 +465,4 @@ return

View File

@ -62,24 +62,80 @@ API reactItems.HEAD
API reactItems.GET
QueryFields = HTTP_Services('GetHTTPGetString')
If Index(QueryFields, 'riType', 1) then
RIType = HTTP_Services('GetQueryField', 'riType')
If IndexC(QueryFields, 'includeNullRetireDt', 1) then
IncludeNullRetireDt = HTTP_Services('GetQueryField', 'includeNullRetireDt')
Begin Case
Case ( (IncludeNullRetireDt EQ 1) or (IncludeNullRetireDt EQ 0) )
Null
Case ( (IncludeNullRetireDt _EQC 'true') or (IncludeNullRetireDt _EQC 'yes') )
IncludeNullRetireDt = True$
Case ( (IncludeNullRetireDt _EQC 'false') or (IncludeNullRetireDt _EQC 'no') )
IncludeNullRetireDt = False$
Case Otherwise$
Error_Services('Add', 'Error in ':CurrentAPI:' API. Invalid value "':IncludeNullRetireDt:'" passed in for includeNullRetireDt.')
End Case
end else
RIType = ''
IncludeNullRetireDt = ''
end
If Error_Services('NoError') then
If IndexC(QueryFields, 'showAllDetails', 1) then
ShowAllDetails = HTTP_Services('GetQueryField', 'showAllDetails')
Begin Case
Case ( (ShowAllDetails EQ 1) or (ShowAllDetails EQ 0) )
Null
Case ( (ShowAllDetails _EQC 'true') or (ShowAllDetails _EQC 'yes') )
ShowAllDetails = True$
Case ( (ShowAllDetails _EQC 'false') or (ShowAllDetails _EQC 'no') )
ShowAllDetails = False$
Case Otherwise$
Error_Services('Add', 'Error in ':CurrentAPI:' API. Invalid value "':ShowAllDetails:'" passed in for showAllDetails.')
End Case
end else
ShowAllDetails = False$
end
If Error_Services('NoError') then
If IndexC(QueryFields, 'currStatus', 1) then
CurrStatus = HTTP_Services('GetQueryField', 'currStatus')
end else
CurrStatus = ''
end
If IndexC(QueryFields, 'riType', 1) then
RIType = HTTP_Services('GetQueryField', 'riType')
end else
RIType = ''
end
If IndexC(QueryFields, 'entryDtStart', 1) then
EntryDtStart = HTTP_Services('GetQueryField', 'entryDtStart')
end else
EntryDtStart = ''
end
If IndexC(QueryFields, 'entryDtEnd', 1) then
EntryDtEnd = HTTP_Services('GetQueryField', 'entryDtEnd')
end else
EntryDtEnd = ''
end
If IndexC(QueryFields, 'retireDtStart', 1) then
RetireDtStart = HTTP_Services('GetQueryField', 'retireDtStart')
end else
RetireDtStart = ''
end
If IndexC(QueryFields, 'retireDtEnd', 1) then
RetireDtEnd = HTTP_Services('GetQueryField', 'retireDtEnd')
end else
RetireDtEnd = ''
end
StatusCode = 200
GoSub CreateHALCollection
end else
HTTP_Services('SetResponseStatus', 400, Error_Services("GetMessage"))
end
end else
HTTP_Services('SetResponseStatus', 400, Error_Services("GetMessage"))
end
If Index(QueryFields, 'currStatus', 1 ) then
CurrStatus = Http_Services('GetQueryField', 'currStatus')
end else
CurrStatus = ''
end
If Index(QueryFields, 'showAllDetails', 1 ) then
ShowAllDetails = Http_Services('GetQueryField', 'showAllDetails')
end else
ShowAllDetails = False$
end
StatusCode = 200
GoSub CreateHALCollection
end api
@ -254,11 +310,7 @@ CreateHALCollection:
JSONCollection = ''
Abort = False$
If RIType NE '' OR CurrStatus NE '' then
ReactItems = React_Item_Services('GetReactItems', RIType, CurrStatus)
end else
ReactItems = React_Item_Services('GetAllReactItemKeys')
end
ReactItems = React_Item_Services('GetReactItems', RIType, CurrStatus, EntryDtStart, EntryDtEnd, RetireDtStart, RetireDtEnd, IncludeNullRetireDt)
If ReactItems NE '' then
If SRP_JSON(hJSONCollection, 'New', 'Object') then
@ -304,3 +356,4 @@ CreateHALCollection:
end
return

File diff suppressed because it is too large Load Diff

View File

@ -101,7 +101,7 @@ Return Response else ''
// Service Parameter Options
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Options BOOLEAN = True$, False$
Options REACTORMETRIC = 'TUBE_BELL_JAR_THK', 'TUBE_BELL_JAR_WFR_CNT', 'SUSC_THK', 'SUSC_WFR_CNT', 'LOWER_QUARTZ_THK', 'LOWER_QUARTZ_WFR', 'ARMS_WFR_CNT'
Options REACTORMETRIC = 'TUBE_BELL_JAR_THK', 'TUBE_BELL_JAR_WFR_CNT', 'SUSC_THK', 'SUSC_WFR_CNT', 'LOWER_QUARTZ_THK', 'LOWER_QUARTZ_WFR', 'ARMS_WFR_CNT', 'EXHAUST_CHAMBER_THK'
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Services
@ -136,6 +136,7 @@ Service IncrementWfrMetrics(RDSNo)
CurrSuscWfrCnt = OldReactorRec<REACTOR_SUSC_WFR_CNT$>
CurrLowerQuartzThk = OldReactorRec<REACTOR_LOWER_QUARTZ_THK$>
CurrLowerQuartzWfr = OldReactorRec<REACTOR_LOWER_QUARTZ_WFR$>
CurrExhaustThk = OldReactorRec<REACTOR_EXHAUST_CHAMBER_THK$>
// Arms are not used for EPP
If ReactorType NE 'EPP' then
@ -150,6 +151,7 @@ Service IncrementWfrMetrics(RDSNo)
If CurrSuscWfrCnt = '' then CurrSuscWfrCnt = 0
If CurrLowerQuartzThk = '' then CurrLowerQuartzThk = 0
If CurrLowerQuartzWfr = '' then CurrLowerQuartzWfr = 0
If CurrExhaustThk = '' then CurrExhaustThk = 0
Begin Case
@ -161,6 +163,7 @@ Service IncrementWfrMetrics(RDSNo)
NewReactorRec<REACTOR_SUSC_WFR_CNT$> = CurrSuscWfrCnt + 1
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk + TargetThickness
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr + 1
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk + TargetThickness
Case ReactorType = 'HTR'
@ -176,6 +179,7 @@ Service IncrementWfrMetrics(RDSNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk + ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr + CntAddition
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt + WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk + ThkAddition
Case SusceptorSize = 8
// Round up
@ -192,6 +196,7 @@ Service IncrementWfrMetrics(RDSNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk + ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr + CntAddition
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt + WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk + ThkAddition
End Case
@ -206,6 +211,7 @@ Service IncrementWfrMetrics(RDSNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk + ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr + WaferCount
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt + WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk + ThkAddition
End Case
@ -229,6 +235,7 @@ Service GetWaferCntMetricsByReactorID(ReactorID)
ResponseData<1, 4> = ReactorRec<REACTOR_TUBE_BELL_JAR_WFR_CNT$>
ResponseData<1, 5> = ReactorRec<REACTOR_TUBE_BELL_JAR_THK$>
ResponseData<1, 6> = ReactorRec<REACTOR_ARMS_WFR_CNT$>
ResponseData<1, 7> = ReactorRec<REACTOR_EXHAUST_CHAMBER_THK$>
//These are the column titles to help us with API Responses
ResponseData<2, 1> = 'ReactorID'
ResponseData<2, 2> = 'SusceptorWaferCount'
@ -236,6 +243,7 @@ Service GetWaferCntMetricsByReactorID(ReactorID)
ResponseData<2, 4> = 'TubeWaferCount'
ResponseData<2, 5> = 'TubeThickness'
ResponseData<2, 6> = 'ArmsWaferCount'
ResponseData<2, 7> = 'ExhuastChamberThickness'
Case ReactorType EQ 'HTR'
ResponseData<1, 1> = ReactorID
ResponseData<1, 2> = ReactorRec<REACTOR_SUSC_WFR_CNT$>
@ -243,6 +251,7 @@ Service GetWaferCntMetricsByReactorID(ReactorID)
ResponseData<1, 4> = ReactorRec<REACTOR_TUBE_BELL_JAR_WFR_CNT$>
ResponseData<1, 5> = ReactorRec<REACTOR_TUBE_BELL_JAR_THK$>
ResponseData<1, 6> = ReactorRec<REACTOR_ARMS_WFR_CNT$>
ResponseData<1, 7> = ReactorRec<REACTOR_EXHAUST_CHAMBER_THK$>
//These are the column titles to help us with API Responses
ResponseData<2, 1> = 'ReactorID'
ResponseData<2, 2> = 'SusceptorWaferCount'
@ -250,6 +259,7 @@ Service GetWaferCntMetricsByReactorID(ReactorID)
ResponseData<2, 4> = 'TubeWaferCount'
ResponseData<2, 5> = 'TubeThickness'
ResponseData<2, 6> = 'ArmsWaferCount'
ResponseData<2, 7> = 'ExhuastChamberThickness'
Case ReactorType EQ 'EPP'
ResponseData<1, 1> = ReactorID
ResponseData<1, 2> = ReactorRec<REACTOR_SUSC_WFR_CNT$>
@ -258,6 +268,7 @@ Service GetWaferCntMetricsByReactorID(ReactorID)
ResponseData<1, 5> = ReactorRec<REACTOR_TUBE_BELL_JAR_THK$>
ResponseData<1, 6> = ReactorRec<REACTOR_LOWER_QUARTZ_WFR$>
ResponseData<1, 7> = ReactorRec<REACTOR_LOWER_QUARTZ_THK$>
ResponseData<1, 8> = ReactorRec<REACTOR_EXHAUST_CHAMBER_THK$>
//These are the column titles to help us with API Responses
ResponseData<2, 1> = 'ReactorID'
ResponseData<2, 2> = 'SusceptorWaferCount'
@ -266,6 +277,7 @@ Service GetWaferCntMetricsByReactorID(ReactorID)
ResponseData<2, 5> = 'BellJarThickness'
ResponseData<2, 6> = 'LowerQuartzWaferCount'
ResponseData<2, 7> = 'LowerQuartzThickness'
ResponseData<2, 8> = 'ExhuastChamberThickness'
End Case
Response = ResponseData
end else
@ -307,6 +319,7 @@ Service DecrementWfrMetrics(RDSNo)
CurrSuscWfrCnt = OldReactorRec<REACTOR_SUSC_WFR_CNT$>
CurrLowerQuartzThk = OldReactorRec<REACTOR_LOWER_QUARTZ_THK$>
CurrLowerQuartzWfr = OldReactorRec<REACTOR_LOWER_QUARTZ_WFR$>
CurrExhaustThk = OldReactorRec<REACTOR_EXHAUST_CHAMBER_THK$>
// Arms are not used for EPP
If ReactorType NE 'EPP' then
@ -321,6 +334,7 @@ Service DecrementWfrMetrics(RDSNo)
If CurrSuscWfrCnt = '' then CurrSuscWfrCnt = 0
If CurrLowerQuartzThk = '' then CurrLowerQuartzThk = 0
If CurrLowerQuartzWfr = '' then CurrLowerQuartzWfr = 0
If CurrExhaustThk = '' then CurrExhaustThk = 0
Begin Case
@ -332,6 +346,7 @@ Service DecrementWfrMetrics(RDSNo)
NewReactorRec<REACTOR_SUSC_WFR_CNT$> = CurrSuscWfrCnt - 1
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk - TargetThickness
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr - 1
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk - TargetThickness
Case ReactorType = 'HTR'
@ -342,11 +357,12 @@ Service DecrementWfrMetrics(RDSNo)
ThkAddition = (WaferCount / 5) * TargetThickness
NewReactorRec<REACTOR_TUBE_BELL_JAR_THK$> = CurrTubeBellJarThk - ThkAddition
NewReactorRec<REACTOR_TUBE_BELL_JAR_WFR_CNT$> = CurrTubeBellJarCnt - CntAddition
NewReactorRec<REACTOR_SUSC_THK$> = CurrSuscThk + ThkAddition
NewReactorRec<REACTOR_SUSC_THK$> = CurrSuscThk - ThkAddition
NewReactorRec<REACTOR_SUSC_WFR_CNT$> = CurrSuscWfrCnt - CntAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk - ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr - CntAddition
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt - WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk - ThkAddition
Case SusceptorSize = 8
// Round up
@ -363,6 +379,7 @@ Service DecrementWfrMetrics(RDSNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk - ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr - CntAddition
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt - WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk - ThkAddition
End Case
@ -377,6 +394,7 @@ Service DecrementWfrMetrics(RDSNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk - ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr - WaferCount
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt - WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk - ThkAddition
End Case
@ -410,6 +428,7 @@ Service IncrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
CurrSuscWfrCnt = OldReactorRec<REACTOR_SUSC_WFR_CNT$>
CurrLowerQuartzThk = OldReactorRec<REACTOR_LOWER_QUARTZ_THK$>
CurrLowerQuartzWfr = OldReactorRec<REACTOR_LOWER_QUARTZ_WFR$>
CurrExhaustThk = OldReactorRec<REACTOR_EXHAUST_CHAMBER_THK$>
// Arms are not used for EPP
If ReactorType NE 'EPP' then
@ -435,6 +454,7 @@ Service IncrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
NewReactorRec<REACTOR_SUSC_WFR_CNT$> = CurrSuscWfrCnt + 1
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk + TargetThickness
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr + 1
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk + TargetThickness
Case ReactorType = 'HTR'
@ -450,6 +470,7 @@ Service IncrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk + ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr + CntAddition
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt + WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk + ThkAddition
Case SusceptorSize = 8
// Round up
@ -466,6 +487,7 @@ Service IncrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk + ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr + CntAddition
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt + WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk + ThkAddition
End Case
@ -480,6 +502,7 @@ Service IncrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk + ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr + WaferCount
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt + WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk + ThkAddition
End Case
@ -513,6 +536,7 @@ Service DecrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
CurrSuscWfrCnt = OldReactorRec<REACTOR_SUSC_WFR_CNT$>
CurrLowerQuartzThk = OldReactorRec<REACTOR_LOWER_QUARTZ_THK$>
CurrLowerQuartzWfr = OldReactorRec<REACTOR_LOWER_QUARTZ_WFR$>
CurrExhaustThk = OldReactorRec<REACTOR_EXHAUST_CHAMBER_THK$>
// Arms are not used for EPP
If ReactorType NE 'EPP' then
@ -527,6 +551,7 @@ Service DecrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
If CurrSuscWfrCnt = '' then CurrSuscWfrCnt = 0
If CurrLowerQuartzThk = '' then CurrLowerQuartzThk = 0
If CurrLowerQuartzWfr = '' then CurrLowerQuartzWfr = 0
If CurrExhaustThk = '' then CurrExhaustThk = 0
Begin Case
@ -538,6 +563,7 @@ Service DecrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
NewReactorRec<REACTOR_SUSC_WFR_CNT$> = CurrSuscWfrCnt - 1
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk - TargetThickness
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr - 1
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk - TargetThickness
Case ReactorType = 'HTR'
@ -548,11 +574,12 @@ Service DecrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
ThkAddition = (WaferCount / 5) * TargetThickness
NewReactorRec<REACTOR_TUBE_BELL_JAR_THK$> = CurrTubeBellJarThk - ThkAddition
NewReactorRec<REACTOR_TUBE_BELL_JAR_WFR_CNT$> = CurrTubeBellJarCnt - CntAddition
NewReactorRec<REACTOR_SUSC_THK$> = CurrSuscThk + ThkAddition
NewReactorRec<REACTOR_SUSC_THK$> = CurrSuscThk - ThkAddition
NewReactorRec<REACTOR_SUSC_WFR_CNT$> = CurrSuscWfrCnt - CntAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk - ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr - CntAddition
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt - WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk - ThkAddition
Case SusceptorSize = 8
// Round up
@ -569,6 +596,7 @@ Service DecrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk - ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr - CntAddition
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt - WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk - ThkAddition
End Case
@ -583,6 +611,7 @@ Service DecrementTestWfrMetrics(TargetThickness, WaferCount, ReactorNo)
NewReactorRec<REACTOR_LOWER_QUARTZ_THK$> = CurrLowerQuartzThk - ThkAddition
NewReactorRec<REACTOR_LOWER_QUARTZ_WFR$> = CurrLowerQuartzWfr - WaferCount
NewReactorRec<REACTOR_ARMS_WFR_CNT$> = CurrArmsWfrCnt - WaferCount
NewReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = CurrExhaustThk - ThkAddition
End Case
@ -596,7 +625,7 @@ end service
// ResetWfrMetric
//
// RDSNo. - [Required]
// MetricType - [Required]('TUBE_BELL_JAR_THK', 'TUBE_BELL_JAR_WFR_CNT', 'SUSC_THK', 'SUSC_WFR_CNT', 'LOWER_QUARTZ_THK', 'LOWER_QUARTZ_WFR', 'ARMS_WFR_CNT')
// MetricType - [Required]('TUBE_BELL_JAR_THK', 'TUBE_BELL_JAR_WFR_CNT', 'SUSC_THK', 'SUSC_WFR_CNT', 'LOWER_QUARTZ_THK', 'LOWER_QUARTZ_WFR', 'ARMS_WFR_CNT', EXHAUST_CHAMBER_THK)
//
// Reset a specified REACTOR metric to 0.
//
@ -628,6 +657,9 @@ Service ResetWfrMetric(ReactorNo, MetricType = REACTORMETRIC)
Case MetricType = 'ARMS_WFR_CNT'
ReactorRec<REACTOR_ARMS_WFR_CNT$> = 0
Case MetricType = 'EXHAUST_CHAMBER_THK'
ReactorRec<REACTOR_EXHAUST_CHAMBER_THK$> = 0
End Case
Database_Services('WriteDataRow', 'REACTOR', ReactorNo, ReactorRec, 1, 0, 0)

View File

@ -1,254 +1,235 @@
Function REACT_ITEM_Actions(Action, CalcColName, FSList, Handle, Name, FMC, Record, Status, OrigRecord, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10)
/***********************************************************************************************************************
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 Infineon.
Name : RDS_Actions
Description : Handles calculated columns and MFS calls for the current table.
Notes : This function uses @ID, @RECORD, and @DICT to make sure {ColumnName} references work correctly.
If called from outside of a calculated column these will need to be set and restored.
Parameters :
Action [in] -- Name of the action to be taken
CalcColName [in] -- Name of the calculated column that needs to be processed. Normally this should only be
populated when the CalcField action is being used.
FSList [in] -- The list of MFSs and the BFS name for the current file or volume. This is an @SVM
delimited array, with the current MFS name as the first value in the array, and the BFS
name as the last value. Normally set by a calling MFS.
Handle [in] -- The file handle of the file or media map being accessed. Note, this does contain the
entire handle structure that the Basic+ Open statement would provide. Normally set by a
calling MFS.
Name [in] -- The name (key) of the record or file being accessed. Normally set by a calling MFS.
FMC [in] -- Various functions. Normally set by a calling MFS.
Record [in] -- The entire record (for record-oriented functions) or a newly-created handle (for
"get handle" functions). Normally set by a calling MFS.
Status [in/out] -- Indicator of the success or failure of an action. Normally set by the calling MFS but
for some actions can be set by the action handler to indicate failure.
OrigRecord [in] -- Original content of the record being processed by the current action. This is
automatically being assigned by the WRITE_RECORD and DELETE_RECORD actions within
BASE_MFS.
Param1-10 [in/out] -- Additional request parameter holders
ActionFlow [out] -- Used to control the action chain (see the ACTION_SETUP insert for more information.)
Can also be used to return a special value, such as the results of the CalcField
method.
History : (Date, Initials, Notes)
04/10/18 dmb Original programmer.
10/04/18 djs Added a trigger within the WRITE_RECORD event, which fires when the reactor number has
changed. When this occurs the related RDS_LAYER records for this RDS record are populated
with the most recent associated TOOL_PARMS record. (related by PSN and Reactor)
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$Insert FILE.SYSTEM.EQUATES
$Insert ACTION_SETUP
$Insert RDS_EQUATES
$Insert CLEAN_INSP_EQUATES
$Insert COMPANY_EQUATES
$Insert RDS_LAYER_EQUATES
$Insert TOOL_PARMS_EQUATES
$Insert RLIST_EQUATES
$Insert APP_INSERTS
$Insert QA_MET_EQUATES
$Insert PRS_STAGE_EQUATES
$Insert WO_MAT_EQUATES
$Insert WO_MAT_QA_EQUATES
Equ COMMA$ to ','
Declare function Error_Services, Database_Services, obj_RDS_Test, Logging_Services, Environment_Services, SRP_Math
Declare function Tool_Parms_Services, Signature_Services, obj_WO_Mat_QA, Datetime, Override_Services, obj_WO_Mat
Declare subroutine Error_Services, Database_Services, Logging_Services, Set_Status, Schedule_Services_Dev
Declare subroutine Work_Order_Services, Material_Services, Set_FSError
If KeyID then GoSub Initialize_System_Variables
Begin Case
Case Action _EQC 'CalculateColumn' ; GoSub CalculateColumn
Case Action _EQC 'READ_RECORD_PRE' ; GoSub READ_RECORD_PRE
Case Action _EQC 'READ_RECORD' ; GoSub READ_RECORD
Case Action _EQC 'READONLY_RECORD_PRE' ; GoSub READONLY_RECORD_PRE
Case Action _EQC 'READONLY_RECORD' ; GoSub READONLY_RECORD
Case Action _EQC 'WRITE_RECORD_PRE' ; GoSub WRITE_RECORD_PRE
Case Action _EQC 'WRITE_RECORD' ; GoSub WRITE_RECORD
Case Action _EQC 'DELETE_RECORD_PRE' ; GoSub DELETE_RECORD_PRE
Case Action _EQC 'DELETE_RECORD' ; GoSub DELETE_RECORD
Case Otherwise$ ; Status = 'Invalid Action'
End Case
If KeyID then GoSub Restore_System_Variables
If Assigned(ActionFlow) else ActionFlow = ACTION_CONTINUE$
Return ActionFlow
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Calculated Columns
//
// The typical structure of a calculated column will look like this:
//
// Declare function Database_Services
//
// @ANS = Database_Services('CalculateColumn')
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CalculateColumn:
// Make sure the ActionFlow return variable is cleared in case nothing is calculated.
ActionFlow = ''
return
// ----- MFS calls -----------------------------------------------------------------------------------------------------
READ_RECORD_PRE:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
// ActionFlow = ACTION_STOP$
return
READ_RECORD:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
return
READONLY_RECORD_PRE:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
// ActionFlow = ACTION_STOP$
return
READONLY_RECORD:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
return
WRITE_RECORD_PRE:
ErrMsg = ''
//Req'd parameter checks
ItemType = {RI_TYPE}
If ItemType EQ '' then
ErrMsg := 'Item Type was not specified. '
end
If ErrMsg NE '' then
Error_Services('Add', 'Error Saving Reactor Item: ' : ErrMsg)
OrigFileError = 104:': Error Saving Reactor Item: ' : ErrMsg
Status = 0
Record = ''
ActionFlow = ACTION_STOP$
end
return
WRITE_RECORD:
return
DELETE_RECORD_PRE:
return
DELETE_RECORD:
return
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ClearCursors:
For counter = 0 to 8
ClearSelect counter
Next counter
return
Initialize_System_Variables:
// Save these for restoration later
SaveDict = @DICT
SaveID = @ID
SaveRecord = @RECORD
OrigFileError = @FILE.ERROR
// Now make sure @DICT, ID, and @RECORD are populated
CurrentDictName = ''
If @DICT then
DictHandle = @DICT<1, 2>
Locate DictHandle in @TABLES(5) Using @FM Setting fPos then
CurrentDictName = Field(@TABLES(0), @FM, fPos, 1)
end
end
If CurrentDictName NE DictName then
Open DictName to @DICT else Status = 'Unable to initialize @DICT'
end
@ID = KeyID
If Record else
// Record might not have been passed in. Read the record from the database table just to make sure.
@FILE.ERROR = ''
Open TableName to hTable then
FullFSList = hTable[1, 'F' : @VM]
BFS = FullFSList[-1, 'B' : @SVM]
LastHandle = hTable[-1, 'B' : \0D\]
FileHandle = \0D\ : LastHandle[1, @VM]
Call @BFS(READO.RECORD, BFS, FileHandle, KeyID, FMC, Record, ReadOStatus)
end
end
@RECORD = Record
return
Restore_System_Variables:
Transfer SaveDict to @DICT
Transfer SaveID to @ID
Transfer SaveRecord to @RECORD
@FILE.ERROR = OrigFileError
return
Function REACT_ITEM_ACTIONS(Action, CalcColName, FSList, Handle, Name, FMC, Record, Status, OrigRecord, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10)
/***********************************************************************************************************************
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 Infineon.
Name : React_Item_Actions
Description : Handles calculated columns and MFS calls for the current table.
Notes : This function uses @ID, @RECORD, and @DICT to make sure {ColumnName} references work correctly.
If called from outside of a calculated column these will need to be set and restored.
Parameters :
Action [in] -- Name of the action to be taken
CalcColName [in] -- Name of the calculated column that needs to be processed. Normally this should only be
populated when the CalcField action is being used.
FSList [in] -- The list of MFSs and the BFS name for the current file or volume. This is an @SVM
delimited array, with the current MFS name as the first value in the array, and the BFS
name as the last value. Normally set by a calling MFS.
Handle [in] -- The file handle of the file or media map being accessed. Note, this does contain the
entire handle structure that the Basic+ Open statement would provide. Normally set by a
calling MFS.
Name [in] -- The name (key) of the record or file being accessed. Normally set by a calling MFS.
FMC [in] -- Various functions. Normally set by a calling MFS.
Record [in] -- The entire record (for record-oriented functions) or a newly-created handle (for
"get handle" functions). Normally set by a calling MFS.
Status [in/out] -- Indicator of the success or failure of an action. Normally set by the calling MFS but
for some actions can be set by the action handler to indicate failure.
OrigRecord [in] -- Original content of the record being processed by the current action. This is
automatically being assigned by the WRITE_RECORD and DELETE_RECORD actions within
BASE_MFS.
Param1-10 [in/out] -- Additional request parameter holders
ActionFlow [out] -- Used to control the action chain (see the ACTION_SETUP insert for more information.)
Can also be used to return a special value, such as the results of the CalcField
method.
History : (Date, Initials, Notes)
05/12/25 djs Updated WRITE_PRE action to update the CURR_STATUS_STATIC field if the retire date changes.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$Insert ACTION_SETUP
$Insert APP_INSERTS
$Insert FILE.SYSTEM.EQUATES
$Insert REACT_ITEM_EQUATES
Declare function obj_React_Item
Declare subroutine Error_Services
If KeyID then GoSub Initialize_System_Variables
Begin Case
Case Action _EQC 'CalculateColumn' ; GoSub CalculateColumn
Case Action _EQC 'READ_RECORD_PRE' ; GoSub READ_RECORD_PRE
Case Action _EQC 'READ_RECORD' ; GoSub READ_RECORD
Case Action _EQC 'READONLY_RECORD_PRE' ; GoSub READONLY_RECORD_PRE
Case Action _EQC 'READONLY_RECORD' ; GoSub READONLY_RECORD
Case Action _EQC 'WRITE_RECORD_PRE' ; GoSub WRITE_RECORD_PRE
Case Action _EQC 'WRITE_RECORD' ; GoSub WRITE_RECORD
Case Action _EQC 'DELETE_RECORD_PRE' ; GoSub DELETE_RECORD_PRE
Case Action _EQC 'DELETE_RECORD' ; GoSub DELETE_RECORD
Case Otherwise$ ; Status = 'Invalid Action'
End Case
If KeyID then GoSub Restore_System_Variables
If Assigned(ActionFlow) else ActionFlow = ACTION_CONTINUE$
Return ActionFlow
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Calculated Columns
//
// The typical structure of a calculated column will look like this:
//
// Declare function Database_Services
//
// @ANS = Database_Services('CalculateColumn')
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CalculateColumn:
// Make sure the ActionFlow return variable is cleared in case nothing is calculated.
ActionFlow = ''
return
// ----- MFS calls -----------------------------------------------------------------------------------------------------
READ_RECORD_PRE:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
// ActionFlow = ACTION_STOP$
return
READ_RECORD:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
return
READONLY_RECORD_PRE:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
// ActionFlow = ACTION_STOP$
return
READONLY_RECORD:
// In order to stop a record from being read in this action these lines of code must be used:
//
// OrigFileError = 100 : @FM : KeyID
// Status = 0
// Record = ''
return
WRITE_RECORD_PRE:
ErrMsg = ''
// Req'd parameter checks
ItemType = {RI_TYPE}
If ItemType EQ '' then ErrMsg := 'Item Type was not specified. '
If ErrMsg NE '' then
Error_Services('Add', 'Error Saving Reactor Item: ' : ErrMsg)
OrigFileError = 104:': Error Saving Reactor Item: ' : ErrMsg
Status = 0
Record = ''
ActionFlow = ACTION_STOP$
end else
OrigRetireDt = OrigRecord<REACT_ITEM_RETIRE_DT$>
NewRetireDt = Record<REACT_ITEM_RETIRE_DT$>
OrigNotes = OrigRecord<REACT_ITEM_NOTES$>
NewNotes = Record<REACT_ITEM_NOTES$>
If ( (OrigRetireDt NE NewRetireDt) or (OrigNotes NE NewNotes) ) then
CurrStatus = obj_React_Item('CurrStatus', Name:@RM:Record)
Record<REACT_ITEM_CURR_STATUS_STATIC$> = CurrStatus
SaveRecord = Record
end
end
return
WRITE_RECORD:
return
DELETE_RECORD_PRE:
return
DELETE_RECORD:
return
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ClearCursors:
For counter = 0 to 8
ClearSelect counter
Next counter
return
Initialize_System_Variables:
// Save these for restoration later
SaveDict = @DICT
SaveID = @ID
SaveRecord = @RECORD
OrigFileError = @FILE.ERROR
// Now make sure @DICT, ID, and @RECORD are populated
CurrentDictName = ''
If @DICT then
DictHandle = @DICT<1, 2>
Locate DictHandle in @TABLES(5) Using @FM Setting fPos then
CurrentDictName = Field(@TABLES(0), @FM, fPos, 1)
end
end
If CurrentDictName NE DictName then
Open DictName to @DICT else Status = 'Unable to initialize @DICT'
end
@ID = KeyID
If Record else
// Record might not have been passed in. Read the record from the database table just to make sure.
@FILE.ERROR = ''
Open TableName to hTable then
FullFSList = hTable[1, 'F' : @VM]
BFS = FullFSList[-1, 'B' : @SVM]
LastHandle = hTable[-1, 'B' : \0D\]
FileHandle = \0D\ : LastHandle[1, @VM]
Call @BFS(READO.RECORD, BFS, FileHandle, KeyID, FMC, Record, ReadOStatus)
end
end
@RECORD = Record
return
Restore_System_Variables:
Transfer SaveDict to @DICT
Transfer SaveID to @ID
Transfer SaveRecord to @RECORD
@FILE.ERROR = OrigFileError
return

View File

@ -20,62 +20,110 @@ Compile function React_Item_Services(@Service, @Params)
08/02/22 djs Original programmer.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$Insert LOGICAL
$Insert APP_INSERTS
$Insert SERVICE_SETUP
$Insert RLIST_EQUATES
$Insert REACT_ITEM_EQUATES
Declare function Database_Services, Error_Services, SRP_JSON, NextKey
Declare subroutine SRP_JSON, Error_Services, Btree.Extract, Database_Services
GoToService
Declare function Database_Services, Error_Services, SRP_JSON, NextKey, SRP_Date, obj_React_Item, SRP_Array
Declare subroutine SRP_JSON, Error_Services, Btree.Extract, Database_Services, Update_Index
Return Response or ""
GoToService else
Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
end
//-----------------------------------------------------------------------------
// SERVICES
//-----------------------------------------------------------------------------
Return Response else ''
Service GetAllReactItemKeys()
AllKeys = ''
RList('SELECT REACT_ITEM', TARGET_ACTIVELIST$, '', '', '')
Done = False$
Reactors = ''
Loop
Readnext keyId else Done = True$
Until Done
AllKeys<1,-1> = keyId
Repeat
Response = AllKeys
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Service Parameter Options
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Options BOOLEAN = True$, False$
Service GetReactItems(RIType, CurrStatus)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Services
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Service GetReactItems(RIType, CurrStatus, EntryDtStart, EntryDtEnd, RetireDtStart, RetireDtEnd, IncludeNullRetireDt=BOOLEAN)
ErrorMsg = ''
Response = ''
Swap ',' with @VM in RIType
Swap ',' with @VM in CurrStatus
Open 'DICT.REACT_ITEM' to DictReactItem then
SearchString = ''
If RIType NE '' then SearchString := 'RI_TYPE':@VM:RIType:@FM
If CurrStatus NE '' then SearchString := 'CURR_STATUS':@VM:CurrStatus:@FM
RIKeys = ''
Btree.Extract(SearchString, 'REACT_ITEM', DictReactItem, RIKeys, '', '')
ErrCode = ''
IF Get_Status(ErrCode) then
ErrorMsg = 'Error in ':Service:' service. Error calling Btree.Extract. Error code ':ErrCode:'.'
If ( (RIType NE '') or (CurrStatus NE '') or (EntryDtStart NE '') or (EntryDtEnd NE '') or (RetireDtStart NE '') or (RetireDtEnd NE '') or (IncludeNullRetireDt NE '') ) then
If EntryDtStart NE '' and Not(Num(EntryDtStart)) then EntryDtStart = IConv(EntryDtStart, 'D')
If EntryDtEnd NE '' and Not(Num(EntryDtEnd)) then EntryDtEnd = IConv(EntryDtEnd, 'D')
If RetireDtStart NE '' and Not(Num(RetireDtStart)) then RetireDtStart = IConv(RetireDtStart, 'D')
If RetireDtEnd NE '' and Not(Num(RetireDtEnd)) then RetireDtEnd = IConv(RetireDtEnd, 'D')
Open 'DICT.REACT_ITEM' to DictReactItem then
SearchString = ''
If RIType NE '' then
Swap ',' with @VM in RIType
SearchString := 'RI_TYPE':@VM:RIType:@FM
end
Begin Case
Case ( (EntryDtStart NE '') and (EntryDtEnd NE '') )
EntryDtStart = OConv(EntryDtStart - 1, 'D4/')
EntryDtEnd = OConv(EntryDtEnd + 1, 'D4/')
SearchString := 'ENTER_DT':@VM:EntryDtStart:'~':EntryDtEnd:@FM
Case (EntryDtStart NE '')
EntryDtStart = OConv(EntryDtStart, 'D4/')
SearchString := 'ENTER_DT':@VM:'>=':EntryDtStart:@FM
Case (EntryDtEnd NE '')
SearchString := 'ENTER_DT':@VM:'<=':EntryDtEnd:@FM
Case Otherwise$
Null
End Case
Begin Case
Case ( (RetireDtStart NE '') and (RetireDtEnd NE '') )
RetireDtStart = OConv(RetireDtStart - 1, 'D4/')
RetireDtEnd = OConv(RetireDtEnd + 1, 'D4/')
SearchString := 'RETIRE_DT':@VM:RetireDtStart:'~':RetireDtEnd
If IncludeNullRetireDt then SearchString := @VM:''
SearchString := @FM
Case (RetireDtStart NE '')
RetireDtStart = OConv(RetireDtStart, 'D4/')
SearchString := 'RETIRE_DT':@VM:'>=':RetireDtStart
If IncludeNullRetireDt then SearchString := @VM:''
SearchString := @FM
Case (RetireDtEnd NE '')
SearchString := 'RETIRE_DT':@VM:'<=':RetireDtEnd
If IncludeNullRetireDt then SearchString := @VM:''
SearchString := @FM
Case IncludeNullRetireDt
SearchString := 'RETIRE_DT':@VM:'':@FM
Case Otherwise$
Null
End Case
If CurrStatus NE '' then
Swap ',' with @VM in CurrStatus
SearchString := 'CURR_STATUS_STATIC':@VM:CurrStatus:@FM
end
Flag = ''
RIKeys = ''
Btree.Extract(SearchString, 'REACT_ITEM', DictReactItem, RIKeys, 'E', Flag)
If Flag EQ 0 then
EnterDtms = Xlate('REACT_ITEM', RIKeys, 'ENTER_DTM', 'X')
Array = RIKeys:@FM:EnterDtms
Array = SRP_Array('SortRows', Array, 'DN2', 'ARRAY', @FM, @VM)
Response = Array<1>
end else
ErrorMsg = 'Error in ':Service:' service. Error calling Btree.Extract.'
end
end else
Response = RIKeys
ErrorMsg = 'Error in ':Service:' service. Error opening REACT_ITEM dictionary.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Error opening REACT_ITEM dictionary.'
AllKeys = ''
RList('SELECT REACT_ITEM', TARGET_ACTIVELIST$, '', '', '')
Done = False$
Loop
Readnext KeyId else Done = True$
Until Done
AllKeys<1, -1> = KeyId
Repeat
Response = AllKeys
end
If ErrorMsg NE '' then
Error_Services('Add', ErrorMsg)
end
@ -155,7 +203,6 @@ Service ConvertRecordToJSON(KeyID, Record, ItemURL)
Response = jsonRecord
end service
@ -326,11 +373,11 @@ Service GetReactItemTemplateJSON()
Response = jsonRecord
end service
Service CreateReactItem(Record)
ErrMsg = ''
KeyID = ''
If Record NE '' then
@ -355,6 +402,7 @@ Service CreateReactItem(Record)
end service
Service ConvertRecordToJSONQuick(KeyID, Record, ItemURL)
jsonRecord = ''
@ -407,6 +455,32 @@ Service ConvertRecordToJSONQuick(KeyID, Record, ItemURL)
Response = jsonRecord
end service
Service UpdateReactItemStatus(RINo)
If RINo NE '' then
If RowExists('REACT_ITEM', RINo) then
RIRec = Database_Services('ReadDataRow', 'REACT_ITEM', RINo)
If Error_Services('NoError') then
Update_Index('REACT_ITEM_HIST', 'RI_NO', False$, True$)
ReactItemCurrStatus = obj_React_Item('CurrStatus', RINo:@RM:RIRec)
ReactItemCurrStatusStatic = RIRec<REACT_ITEM_CURR_STATUS_STATIC$>
If ReactItemCurrStatus NE ReactItemCurrStatusStatic then
Open 'REACT_ITEM' to hTable then
WriteV ReactItemCurrStatus on hTable, RINo, REACT_ITEM_CURR_STATUS_STATIC$ else
Error_Services('Add', 'Error in ':Service:' service. Error writing CURR_STATUS_STATIC, ':ReactItemCurrStatus:', for REACT_ITEM ':RINo:'.')
end
end else
Error_Services('Add', 'Error in ':Service:' service. Error opening REACT_ITEM table for status update.')
end
end
end
end
end
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -419,6 +493,3 @@ ClearCursors:
return

View File

@ -79,6 +79,7 @@ Service CreateReturnToFabRecord(CassId, UserId)
Recipients = XLATE('NOTIFICATION','SHIPPING',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_ENG',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_MANUF',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_GENERAL',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = UserId
SentFrom = 'OI_ADMIN'
Subject = 'Return To Fab Form Created'
@ -475,6 +476,7 @@ Service SetBinToBin(RTFId, MHUserId)
Recipients = XLATE('NOTIFICATION','SHIPPING',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_ENG',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_MANUF',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_GENERAL',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = RTFOrigUser
SentFrom = 'OI_ADMIN'
Subject = 'Return To Fab Form Updated'
@ -549,6 +551,7 @@ Service SetRTFCompleted(RTFId, CompleteUserId)
Recipients = XLATE('NOTIFICATION','SHIPPING',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_ENG',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_MANUF',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_GENERAL',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = RTFRecord<RETURN_TO_FAB_LOTS_REQUESTOR_USER_ID$>
SentFrom = 'OI_ADMIN'
Subject = 'Return To Fab Form Completed'
@ -623,6 +626,7 @@ Service SetEvalInfo(RTFId, EvalUserId, ResultId)
Recipients = XLATE('NOTIFICATION','SHIPPING',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_ENG',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_MANUF',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = XLATE('NOTIFICATION','RETURN_TO_FAB_GENERAL',NOTIFICATION_USER_ID$,'X')
Recipients<1, -1> = RTFRecord<RETURN_TO_FAB_LOTS_REQUESTOR_USER_ID$>
SentFrom = 'OI_ADMIN'
Subject = 'Return To Fab Form Updated'
@ -822,3 +826,4 @@ end service

View File

@ -335,6 +335,18 @@ Service ProcessScanData(ScanID, ScanJSON)
Error_Services('Add', 'Inactive employee.')
Case Otherwise$
ScansRow<SCANS.EMPLOYEE_ID$> = {EMPLOYEE_ID}
Username = {EMPLOYEE_ID}
Member = False$
Groups = 'LEAD':@VM:'SUPERVISOR':@VM:'ENGINEER':@VM:'ENG_TECH':@VM:'ROTR_OVERRIDE'
For each Group in Groups using @VM
Member = MemberOf(Username, Group)
Until Member EQ True$
Next Group
ScansRow<SCANS.IS_AUTHORIZED_TO_OVERRIDE_ROTR$> = Member
End Case
Case ScanData[1, 3] EQ '10S'
@ -520,6 +532,9 @@ Service ProcessScanData(ScanID, ScanJSON)
Database_Services('WriteDataRow', 'REACTOR', Reactor, ReactorRec, True$, False$, True$)
Database_Services('WriteDataRow', 'RDS', RDSNo, RDSRec, True$, False$, True$)
ScansRow<SCANS.OVERRIDE_REQD$> = 0
ScansRow<SCANS.OVERRIDE_TYPE$> = ''
ScansRow<SCANS.OVERRIDE_REASON$> = ''
ScansRow<SCANS.EMPLOYEE_ID$>= ''
Result = 'Override Performed successfully'
end
@ -652,6 +667,7 @@ Service ProcessScanData(ScanID, ScanJSON)
If (CassetteIDs NE '') then
TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$>
Abort = False$
TestWaferLotIsValid = False$
If TestWaferLotData NE '' then
ThisTestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$>
If ThisTestRunType NE '' then
@ -667,6 +683,8 @@ Service ProcessScanData(ScanID, ScanJSON)
If Not(TWLotCurrOpen) then
Abort = True$
Scan_Services('AddNotAcceptableReason', 'Lot ':TWLot:' is closed and cannot be used at this time.')
end else
TestWaferLotIsValid = True$
end
end else
Abort = True$
@ -1090,6 +1108,60 @@ Service ProcessScanData(ScanID, ScanJSON)
Case Otherwise$
// Keep error on Error_Services stack and return 400 level error.
End Case
end else
ReactorNo = Xlate('RDS', RDSNo, RDS_REACTOR$, 'X')
ReactorType = Xlate('REACTOR', ReactorNo, REACTOR_REACT_TYPE$, 'X')
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
WO = Xlate('RDS', RDSNo, RDS_WO$, 'X')
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
WoMatKey = WO:'*':CassNo
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
LastCassInWoTestWaferAckReq = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$>
LastCassInWoTestWaferAcked = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$>
LastCassInWoTestWaferReqMsg = ''
If LastCassInWoTestWaferAcked EQ False$ or LastCassInWoTestWaferAcked EQ '' then
LastCassInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
If LastCassInWo then
NextEventScheduled = False$
NextEventHasSamePsn = True$
NextEventIsBlock = False$
NextScheduledEvent = Schedule_Services('GetNextEvent', ReactorNo)
If Error_Services('NoError') then
NextEventScheduled = True$
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', ReactorNo)
NextEventIsBlock = Schedule_Services('NextEventIsBlock', ReactorNo)
end
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
LastCassInWoTestWaferAckReq = True$
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = LastCassInWoTestWaferAckReq
TestWaferRanSinceLoad = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> or TestWaferLotIsValid EQ True$
If TestWaferLotIsValid NE True$ and TestWaferRanSinceLoad NE True$ then
TestWaferRanSinceLoad = Rds_Services('TestWaferRanAfterLoad', RDSNo)
If TestWaferRanSinceLoad NE True$ then
LastCassInWoTestWaferReqMsg = ''
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
LastCassInWoTestWaferReqMsg = 'No material scheduled. Test wafer required.'
end else If NextEventHasSamePsn EQ False$ then
LastCassInWoTestWaferReqMsg = 'Next work order is a NEW PSN number. Test wafer required.'
end
Scan_Services('AddNotAcceptableReason', LastCassInWoTestWaferReqMsg)
end
end
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$> = TestWaferRanSinceLoad
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRec, True$, False$, False$)
end
end
end
end
end
end else
ScanMsg = 'The POST stage engineering instructions must be acknowledged before the load operation can be signed.'
@ -1403,6 +1475,7 @@ Service AcceptScan(ScanID, ScanJSON)
LogData<3> = Username
LogData<4> = CurrStage
LogData<5> = ScanID
Begin Case
Case CurrStage _EQC 'VER'
Action = 'LOAD'
@ -1493,14 +1566,32 @@ Service AcceptScan(ScanID, ScanJSON)
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.'
Continue = True$
If TestWaferLots NE '' then
ToolID = ScansRow<SCANS.TOOL_ID$>
Reactor = ToolID[-1, 'BR']
Username = ScansRow<SCANS.EMPLOYEE_ID$>
TestWaferLotQtys = ScansRow<SCANS.TW_LOT_QTY$>
TestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$>
PSNo = Xlate('RDS', RDSNo, RDS_PROD_SPEC_ID$, True$, 'X')
NewTestRunId = Test_Run_Services('CreateTestRunRecord', TestRunType, 'R', Reactor, PSNo, RDSNo,Username , TestWaferLots, TestWaferLotQtys)
If Error_Services('HasError') then
ErrorMessage = Error_Services('GetMessage')
Error_Services('Set', ErrorMessage)
Continue = False$
end
end
If Continue EQ True$ then
// 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)
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.")
@ -1674,6 +1765,7 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL)
SRP_JSON(objEmployee, 'SetValue', 'authorized', {EMPLOYEE_AUTHORIZED}, 'Boolean')
SRP_JSON(objEmployee, 'SetValue', 'notAuthorizedReason', {EMPLOYEE_NOT_AUTHORIZED_REASON}, 'String')
SRP_JSON(objEmployee, 'SetValue', 'authenticated' , @Record<SCANS.AUTHENTICATED$> , 'Boolean');//JRO Change
SRP_JSON(objEmployee, 'SetValue', 'isAuthorizedToOverrideROTR', @Record<SCANS.IS_AUTHORIZED_TO_OVERRIDE_ROTR$>, 'Boolean')
SRP_JSON(objJSONScan, 'Set', 'employee', objEmployee)
SRP_JSON(objEmployee, 'Release')
@ -1787,52 +1879,6 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL)
end else
SupplUnloadInstAckReq = False$
end
ReactorNo = Xlate('RDS', RDSNo, RDS_REACTOR$, 'X')
ReactorType = Xlate('REACTOR', ReactorNo, REACTOR_REACT_TYPE$, 'X')
If Len(ReactorType) GE 3 and ReactorType[1, 3] _EQC 'HTR' then
WO = Xlate('RDS', RDSNo, RDS_WO$, 'X')
CassNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X')
WoMatKey = WO:'*':CassNo
WoMatRec = Database_Services('ReadDataRow', 'WO_MAT', WoMatKey)
LastCassInWoTestWaferAckReq = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$>
LastCassInWoTestWaferAcked = WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$>
LastCassInWoTestWaferReqMsg = ''
If LastCassInWoTestWaferAcked EQ False$ or LastCassInWoTestWaferAcked EQ '' then
LastCassInWo = WO_MAT_Services('CassetteIsLastInWo', WoMatKey)
If LastCassInWo then
NextEventScheduled = False$
NextEventHasSamePsn = True$
NextEventIsBlock = False$
NextScheduledEvent = Schedule_Services('GetNextEvent', ReactorNo)
If Error_Services('NoError') then
NextEventScheduled = True$
NextEventHasSamePsn = Schedule_Services('NextEventIsSamePsn', ReactorNo)
NextEventIsBlock = Schedule_Services('NextEventIsBlock', ReactorNo)
end
If NextEventScheduled EQ False$ or NextEventHasSamePsn EQ False$ or NextEventIsBlock EQ True$ then
LastCassInWoTestWaferAckReq = True$
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$> = LastCassInWoTestWaferAckReq
WoMatRec<WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$> = LastCassInWoTestWaferAcked
Database_Services('WriteDataRow', 'WO_MAT', WoMatKey, WoMatRec, True$, False$, False$)
LastCassInWoTestWaferReqMsg = ''
If NextEventScheduled EQ False$ or NextEventIsBlock EQ True$ then
LastCassInWoTestWaferReqMsg = 'No material scheduled. Test wafer required.'
end else If NextEventHasSamePsn EQ False$ then
LastCassInWoTestWaferReqMsg = 'Next work order is a NEW PSN number. Test wafer required.'
end
end
end
end
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAckReq', LastCassInWoTestWaferAckReq, 'Boolean')
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAcked', LastCassInWoTestWaferAcked, 'Boolean')
SRP_JSON(objRDS, 'SetValue', 'lastCassInWoTestWaferAckReqMsg', LastCassInWoTestWaferReqMsg, 'String')
end
end else
SupplUnloadInstAckReq = False$
end
@ -2355,3 +2401,4 @@ return

View File

@ -16,7 +16,8 @@ Subroutine Service_Manager_Debugger_Intercept(Void)
Metadata :
History : (Date, Initials, Notes)
07/25/23 djs Original programmer.
07/25/23 djs Original programmer.
06/04/25 djs Added LSL note creation (and email forwarding) to notify OI_ADMIN users when invoked.
***********************************************************************************************************************/
@ -24,24 +25,58 @@ Subroutine Service_Manager_Debugger_Intercept(Void)
$insert APP_INSERTS
$insert RTI_DEBUG_COMMON
$insert ENVIRON_CONSTANTS
Declare function Environment_Services, Logging_Services
Declare subroutine Logging_Services
Declare function Environment_Services, Logging_Services, Environment_Services, GetCommandLine, Datetime
Declare subroutine Logging_Services, obj_Notes, Set_Env
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\ServiceManager'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' OEngine Log.csv'
Headers = 'Stored Proc Status' : @FM : 'Stored Proc Status Code' : @FM : 'Current Program' : @FM : 'Call Depth' : @FM : 'Line No' : @FM : 'Call Stack'
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
LogData = ''
LogData<1> = SPStatus@
LogData<2> = SPStatCode@
LogData<3> = Curr_Program@
LogData<4> = CallDepth@
LogData<5> = LineNo@
LogData<6> = CallStack@
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, '', '', '')
Main:
// Log event in .\LogFiles\ServiceManager\<Date> OEngine Log.csv
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\ServiceManager'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' OEngine Log.csv'
Headers = 'Stored Proc Status' : @FM : 'Stored Proc Status Code' : @FM : 'Current Program' : @FM
Headers := 'Call Depth' : @FM : 'Line No' : @FM : 'Call Stack'
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$)
LogData = ''
LogData<1> = spStatus@
LogData<2> = spStatCode@
LogData<3> = curr_Program@
LogData<4> = callDepth@
LogData<5> = lineNo@
LogData<6> = callStack@
Logging_Services('AppendLog', objLog, LogData, @RM, @FM, '', '', '')
// Send an LSL message to FI admins to alert them. This is forward to their email address if configured in
// their LSL_USERS record.
CmdLine = GetCommandLine()
EngIndex = Index(CmdLine, '/S=', 1)
EngNo = CmdLine[EngIndex + 3, 'F ']
Server = Environment_Services('GetServer')
Recipients = ''
SentFrom = 'SYSTEM'
Subject = 'Service Manager Debugger Intercept Invoked'
Message = OConv(Datetime(), 'DT2/^H')
Message<2> = 'RevEngineHost (OEngine) ':EngNo:' encountered a runtime error on server ':Server
Message<3> = 'Stored Procedure Status: ':spStatus@
StatCodes = spStatCode@
Swap Char(0) with ',' in StatCodes
Swap Char(23) with '' in StatCodes
Message<4> = 'Stored Procedure Status Code: ':StatCodes
Message<5> = 'Current Program: ':curr_Program@
Message<6> = 'Call Depth: ':callDepth@
Message<7> = 'Line No: ':lineNo@
Message<8> = 'Call Stack: ':\0D0A\:callStack@
Swap @FM with \0D0A\ in Message
Swap @VM with ',' in Message
AttachWindow = ''
AttachKey = ''
SendToGroup = 'OI_SYSADMIN'
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
Return

View File

@ -27,19 +27,29 @@ Function Service_Services(@Service, @Params)
#pragma precomp SRP_PreCompiler
$insert LOGICAL
$insert APP_INSERTS
$insert SERVICE_SETUP
$insert SERVICES_EQUATES
$insert RLIST_EQUATES
$insert SQL_REQUESTS_EQUATES
$Insert PROC_QUEUE_EQUATES
Equ Comma$ to ','
Common /ServiceServices/ Unused1@, Unused2@, Unused3@, Unused4@, Unused5@, Unused6@, Unused7@, Unused8@, Unused9@, Unused10@
Declare function Service_Services, Memory_Services, SRP_List, SRP_FastArray, SRP_Array, Database_Services, Datetime
Declare Function GetTickCount, SRP_Decode, RTI_CREATEGUID
Declare function GetTickCount, SRP_Decode, RTI_CreateGuid, UCase, Environment_services, Logging_Services
Declare subroutine Service_Services, Memory_Services, SRP_List, SRP_FastArray, RList, Set_Status, Database_Services
Declare Subroutine Yield, WinYield, Sleepery, Btree.Extract
Declare Subroutine Yield, WinYield, Sleepery, Btree.Extract, Logging_Services, obj_Notes
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\ProcQueue'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Procedure Queue Log.csv'
Headers = 'Logging DTM' : @FM : 'Machine' : @FM : 'RequestKeyId' : @FM : 'Procedure' : @FM : 'Params' : @FM : 'Result' : @FM : 'Error Message'
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
GoToService else
Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
@ -165,18 +175,21 @@ Service ProcessProcedureQueue()
ReadNext RequestKeyID else EOF = True$
Until EOF or Done
Lock hProcQueue, RequestKeyID then
Server = Environment_Services('GetServer')
Done = True$
Database_Services('GetKeyIDLock', 'PROC_QUEUE', RequestKeyId)
RequestRow = Database_Services('ReadDataRow', 'PROC_QUEUE', RequestKeyID)
If RequestRow NE '' then
Procedure = RequestRow<PROC_QUEUE.PROC_NAME$>
Procedure = UCase(Procedure)
Params = RequestRow<PROC_QUEUE.PARAMS$>
If Procedure NE '' then
Dim ProcParams(11)
Dim ProcParams(12)
For each Param in Params using @VM setting pPos
ProcParams(pPos) = Param
Next Param
NumArguments = DCount(Params, @VM)
Begin Case
Case NumArguments EQ 0 ; Call @Procedure()
Case NumArguments EQ 1 ; Call @Procedure(ProcParams(1))
@ -194,17 +207,40 @@ Service ProcessProcedureQueue()
Error_Services('Add', 'Error in ':Service:' service. More than 11 arguments are not currently supported.')
End Case
end
If Error_Services('NoError') then
Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) ; // This call will release the lock
Swap @VM with ',' in Params
LogData = LoggingDTM
LogData<2> = Server
LogData<3> = RequestKeyId
LogData<4> = Procedure
LogData<5> = Params
ErrCode = ''
If ( Get_Status(ErrCode) or Error_Services('HasError') ) then
ErrorMessage = Error_Services('GetMessage')
Recipients = ''
SentFrom = 'SYSTEM'
Subject = 'Background Procedure Queue Error'
Message = OConv(Datetime(), 'DT2/^H')
Message<2> = 'Error on server ':Server
Message<3> = 'Stored Procedure: ':Procedure
StatCodes = 'Parameters: ':Params
Message<4> = 'Error_Services error message: ':ErrorMessage
Message<5> = 'Get_Status error code: ':ErrCode
Swap @FM with \0D0A\ in Message
AttachWindow = ''
AttachKey = ''
SendToGroup = 'OI_SYSADMIN'
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
obj_Notes('Create',Parms)
LogData<6> = 'Failed'
LogData<7> = 'Error_Services error message: ':ErrorMessage:' Get_Status error code: ':ErrCode
end else
RequestRow<PROC_QUEUE.LAST_ATTEMPT_DTM$> = DateTime()
RequestRow<PROC_QUEUE.ERROR$> = Error_Services('GetMessage')
Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, False$) ; // This call will release the lock
LogData<6> = 'Success'
end
end else
// Empty request, so delete it from the queue
Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) ; // This call will release the lock
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
end
Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) ; // This call should release the lock
Unlock hProcQueue, RequestKeyID else Null
end
Repeat
end
@ -258,4 +294,3 @@ return
/// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -1231,19 +1231,23 @@ Service SignVoidNonEpp(WOMatKey, Username)
Service_Services('PostProcedure', 'RDS_SERVICES', 'DetachRDSFromWO':@vm:RDSNo)
If Error_Services('NoError') then
LotEventParams = ''
LotEventParams<1,1> = 'CreateLotEvent'
LotEventParams<1,4> = DateTime()
LotEventParams<1,5> = 'VOID'
LotEventParams<1,6> = 'Lot voided by ' : Username
LotEventParams<1,11> = Username
LotEventParams<1,1> = 'CreateLotEvent' ; //Service Module
LotEventParams<1,2> = ''; //Legacy Lot Id, set below
LotEventParams<1,3> = DateTime(); //Datetime
LotEventParams<1,4> = 'VOID'; //Event Type
LotEventParams<1,5> = 'Lot voided by ' : Username; //Event Note
LotEventParams<1,6> = ''; //Equipment id
LotEventParams<1,7> = Username ;//User Id
LotEventParams<1,8> = True$; //IsLegacyLotId
LotEventParams<1,9> = ''; //Legacy Lot Type, set below
If RDSNo NE '' then
LotEventParams<1,2> = RDSNo
LotEventParams<1,3> = 'RDS'
Service_Services('PostProcedure', 'LOT_SERVICES', LotEventParams)
LotEventParams<1,9> = 'RDS'; //Legacy Lot Type
Service_Services('PostProcedure', 'LOT_EVENT_SERVICES', LotEventParams)
end else
LotEventParams<1,2> = WoMatKey
LotEventParams<1,3> = 'WO_MAT'
Service_Services('PostProcedure', 'LOT_SERVICES', LotEventParams)
LotEventParams<1,9> = 'WO_MAT'
Service_Services('PostProcedure', 'LOT_EVENT_SERVICES', LotEventParams)
end
If Error_Services('NoError') then
//Add inventory transaction
@ -1311,13 +1315,15 @@ Service SignVoidWMI(WMInKey, Username)
If Error_Services('NoError') then
LotEventParams = ''
LotEventParams<1,1> = 'CreateLotEvent'
LotEventParams<1,4> = DateTime()
LotEventParams<1,5> = 'VOID'
LotEventParams<1,6> = 'Lot voided by ' : Username
LotEventParams<1,11> = Username
LotEventParams<1,2> = WMInKey
LotEventParams<1,3> = 'WM_IN'
Service_Services('PostProcedure', 'LOT_SERVICES', LotEventParams)
LotEventParams<1,3> = DateTime()
LotEventParams<1,4> = 'VOID'
LotEventParams<1,5> = 'Lot voided by ' : Username
LotEventParams<1,6> = ''
LotEventParams<1,7> = Username
LotEventParams<1,8> = True$
LotEventParams<1,9> = 'WM_IN'
Service_Services('PostProcedure', 'LOT_EVENT_SERVICES', LotEventParams)
If Error_Services('NoError') then
//Check if WMO is also voided. If it is, remove it from the WO_MAT_KEY field in WO_LOG, and void the WO_MAT record
WMOKey = WMInKey; //the paired WMO key is the same as the WMIKey
@ -1386,13 +1392,15 @@ Service SignVoidWMO(WMOutKey, Username)
If Error_Services('NoError') then
LotEventParams = ''
LotEventParams<1,1> = 'CreateLotEvent'
LotEventParams<1,4> = DateTime()
LotEventParams<1,5> = 'VOID'
LotEventParams<1,6> = 'Lot voided by ' : Username
LotEventParams<1,11> = Username
LotEventParams<1,2> = WMOutKey
LotEventParams<1,3> = 'WM_OUT'
Service_Services('PostProcedure', 'LOT_SERVICES', LotEventParams)
LotEventParams<1,3> = DateTime()
LotEventParams<1,4> = 'VOID'
LotEventParams<1,5> = 'Lot voided by ' : Username
LotEventParams<1,6> = ''
LotEventParams<1,7> = Username
LotEventParams<1,8> = True$
LotEventParams<1,9> = 'WM_OUT'
Service_Services('PostProcedure', 'LOT_EVENT_SERVICES', LotEventParams)
If Error_Services('NoError') then
//Check if WMI is also voided. If it is, remove it from the WO_MAT_KEY field in WO_LOG, and void the WO_MAT record
WMIKey = WMOutKey; //the paired WMO key is the same as the WMIKey
@ -1558,3 +1566,4 @@ ClearCursors:
return

View File

@ -181,14 +181,7 @@ DoRead:
Reactor = get_property( @window, '@Reactor' )
LoadedRDS = Xlate('REACT_STATUS', Reactor, 'LOAD_RDS', 'X')
LoadedRuns = ''
If LoadedRDS NE '' then
For each RDS in LoadedRDS using @VM setting vPos
Locate RDS in AllRDS using @VM setting rPos then
LoadedRuns<0, -1> = rPos
end
Next RDS
end
LoadedRuns = Xlate('RDS', LoadedRDS, 'RUN_ORDER_NUM', 'X')
LoadedData = ''
For each RDSNo in LoadedRDS using @VM setting vPos
@ -507,5 +500,3 @@ REACT_MODE:
END
RETURN

View File

@ -573,15 +573,16 @@ return
WRITE_RECORD:
WONo = Field(Name, '*', 1)
CassNo = Field(Name, '*', 2)
WOMatKeyID = Name
WONo = Field(Name, '*', 1)
CassNo = Field(Name, '*', 2)
WOMatKeyID = Name
If {REACTOR_TYPE} NE 'EPP' then
If {MAKEUP_BOX} then
CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKeyID)
If CurrWaferCount GT 0 then
CurrWaferCount = obj_WO_Mat('CurrWaferCnt', WOMatKeyID)
CurrStatus = {CURR_STATUS}
If ( (CurrWaferCount GT 0) and (CurrStatus NE 'VOID') ) then
// Populate MAKEUP_WAFERS table
// Add/update cassette data to the MAKEUP_WAFERS table
If RowExists('MAKEUP_WAFERS', WOMatKeyID) then
@ -600,7 +601,7 @@ WRITE_RECORD:
MUWfrRec<MAKEUP_WAFERS.PROD_VER_NO$> = {PROD_VER_NO}
MUWfrRec<MAKEUP_WAFERS.CUST_PART_NO$> = {CUST_PART_NO}
MUWfrRec<MAKEUP_WAFERS.REACT_TYPE$> = {REACTOR_TYPE}
MUWfrRec<MAKEUP_WAFERS.CURR_STATUS_STATIC$> = {CURR_STATUS}
MUWfrRec<MAKEUP_WAFERS.CURR_STATUS_STATIC$> = CurrStatus
MUWfrRec<MAKEUP_WAFERS.WFR_QTY$> = CurrWaferCount
DateOut = Xlate('RDS', {RDS_NO}, 'DATE_OUT', 'X')
TimeOut = Xlate('RDS', {RDS_NO}, 'TIME_OUT', 'X') / 86400

View File

@ -179,3 +179,4 @@ Equ PROD_SPEC_ANKO_MET_POCKETS$ To 166
Equ PROD_SPEC_ANKO_FULL_CHAR_POCKET$ To 167
Equ PROD_SPEC_ANKO_WAFER_SELECTION$ To 168
Equ PROD_SPEC_LOCKED_BY$ To 169
Equ PROD_SPEC_SHOW_SPEC_INST_ON_MU_ADD$ To 170

View File

@ -0,0 +1,25 @@
compile insert PRS_STAGE_DEFECT_DEFAULTS_EQUATES
/*----------------------------------------
Author : Table Create Insert Routine
Written : 08/05/2025
Description : Insert for Table PRS_STAGE_DEFECT_DEFAULTS
----------------------------------------*/
#ifndef __PRS_STAGE_DEFECT_DEFAULTS_EQUATES__
#define __PRS_STAGE_DEFECT_DEFAULTS_EQUATES__
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_LPD$ to 1
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_SCRATCHES$ to 2
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_SCRATCH_LEN$ to 3
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_PITS$ to 4
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_MOUNDS$ to 5
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_STACK_FAULTS$ to 6
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_SPIKES$ to 7
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_SPOTS$ to 8
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_FOV$ to 9
equ PRS_STAGE_DEFECT_DEFAULTS_FRONT_BL_DEFECTS$ to 10
equ PRS_STAGE_DEFECT_DEFAULTS_BACK_SCRATCHES$ to 11
equ PRS_STAGE_DEFECT_DEFAULTS_BACK_SCRATCH_LEN$ to 12
equ PRS_STAGE_DEFECT_DEFAULTS_BACK_NODULES$ to 13
equ PRS_STAGE_DEFECT_DEFAULTS_BACK_SPIKES$ to 14
#endif

View File

@ -83,4 +83,5 @@ Equ REACTOR_HGCV_CHECKLIST_ACTIVE$ To 71
Equ REACTOR_INTRUSIVE_MAINT_CHECKLIST_ACTIVE$ To 72
Equ REACTOR_ABORT_ALARM_CHECKLIST_ACTIVE$ To 73
Equ REACTOR_ABORT_ALARM_COMPLETE$ To 74
Equ REACTOR_EXHAUST_CHAMBER_THK$ To 75

View File

@ -6,25 +6,27 @@ compile insert REACT_ITEM_EQUATES
----------------------------------------*/
Equ REACT_ITEM_RI_NO$ To 0
Equ REACT_ITEM_DESC$ To 1
Equ REACT_ITEM_ENTER_BY$ To 2
Equ REACT_ITEM_ENTER_DTM$ To 3
Equ REACT_ITEM_RETIRE_BY$ To 4
Equ REACT_ITEM_RETIRE_DT$ To 5
Equ REACT_ITEM_PART_TYPE$ To 6
Equ REACT_ITEM_MFR_CD$ To 7
Equ REACT_ITEM_MFR_PART_NO$ To 8
Equ REACT_ITEM_MFR_PART_NO_REV$ To 9
Equ REACT_ITEM_SERIAL_NO$ To 10
Equ REACT_ITEM_RI_TYPE$ To 11
Equ REACT_ITEM_SUSC_SIZE$ To 12
Equ REACT_ITEM_PKT_QTY$ To 13
Equ REACT_ITEM_PKT_SIZE$ To 14
Equ REACT_ITEM_NOTES$ To 15
Equ REACT_ITEM_PPLUS_RDS_NO$ To 16
Equ REACT_ITEM_SERIAL$ To 17
Equ REACT_ITEM_TUBE_GRADE$ To 18
Equ REACT_ITEM_TUBE_PRESS$ To 19
Equ REACT_ITEM_TUBE_STYLE$ To 20
Equ REACT_ITEM_NEW_OR_REFURB$ To 21
Equ REACT_ITEM_RI_NO$ To 0
Equ REACT_ITEM_DESC$ To 1
Equ REACT_ITEM_ENTER_BY$ To 2
Equ REACT_ITEM_ENTER_DTM$ To 3
Equ REACT_ITEM_RETIRE_BY$ To 4
Equ REACT_ITEM_RETIRE_DT$ To 5
Equ REACT_ITEM_PART_TYPE$ To 6
Equ REACT_ITEM_MFR_CD$ To 7
Equ REACT_ITEM_MFR_PART_NO$ To 8
Equ REACT_ITEM_MFR_PART_NO_REV$ To 9
Equ REACT_ITEM_SERIAL_NO$ To 10
Equ REACT_ITEM_RI_TYPE$ To 11
Equ REACT_ITEM_SUSC_SIZE$ To 12
Equ REACT_ITEM_PKT_QTY$ To 13
Equ REACT_ITEM_PKT_SIZE$ To 14
Equ REACT_ITEM_NOTES$ To 15
Equ REACT_ITEM_PPLUS_RDS_NO$ To 16
Equ REACT_ITEM_SERIAL$ To 17
Equ REACT_ITEM_TUBE_GRADE$ To 18
Equ REACT_ITEM_TUBE_PRESS$ To 19
Equ REACT_ITEM_TUBE_STYLE$ To 20
Equ REACT_ITEM_NEW_OR_REFURB$ To 21
Equ REACT_ITEM_CURR_STATUS_STATIC$ To 22

View File

@ -40,6 +40,9 @@ compile insert SCANS_EQUATES
equ SCANS.TW_LOT_QTY$ to 31
equ SCANS.TEST_RUN_TYPE_ID$ to 32
equ SCANS.TEST_RUN_TYPE_NAME$ to 33
equ SCANS.IS_AUTHORIZED_TO_OVERRIDE_ROTR$ to 34
#endif

View File

@ -156,4 +156,5 @@ Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$ To 147
Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$ To 148
Equ WO_MAT_HOLD_STAGE$ To 149
Equ WO_MAT_HOLD_INTERRUPTED$ To 150
Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$ To 151