From b2c9e500f8230c06fd9560133bbaf04d58100c4a Mon Sep 17 00:00:00 2001 From: "Infineon\\Mitchem" Date: Wed, 28 May 2025 12:58:56 -0700 Subject: [PATCH] Modified WM_IN ZPL label generation to include a 2D datamatrix barcode. Implemented 2D barcode verification in PTI and FQA Label Check Operations. Bug fixes Changed WMI 2D barcode to have 8 fields to keep code base simpler minor changes to error message verbiage Refactored code to use post log. Refactored code to not use multiple returns. Modfield input form fields to force upper case only. changed LSL password verification to be case insensitive to avoid barcode scanning issues when caps lock is on temporary change to allow 1D WMI scans at PTI while we exhaust current supply --- LSL2/OIWIN/NDW_FQA_MAT_SCAN.json | 1133 ++++++++++-- LSL2/OIWIN/NDW_PACKAGING.json | 1823 ++++++++++++++++---- LSL2/OIWIN/NDW_PTI_MAT_SCAN.json | 1294 +++++++++++--- LSL2/OIWIN/NDW_PTO_MAT_SCAN.json | 4 +- LSL2/POPUP/PRINT_WMI_LABELS.json | 18 +- LSL2/POPUP/PRINT_WM_LABELS.json | 18 +- LSL2/POPUP/WO_LOG_RTS.json | 19 +- LSL2/STPROC/MATERIAL_MOVEMENT_SERVICES.txt | 840 +++++---- LSL2/STPROC/NDW_FQA_MAT_SCAN_EVENTS.txt | 313 ++-- LSL2/STPROC/NDW_PTI_MAT_SCAN_EVENTS.txt | 20 +- LSL2/STPROC/PRINT_CASS_LABELS.txt | 372 ++-- LSL2/STPROC/PRINT_WMI_LABELS.txt | 1523 ++++++++-------- LSL2/STPROC/PRINT_WMO_LABELS.txt | 792 ++++----- LSL2/STPROC/SECURITY_SERVICES.txt | 67 +- LSL2/STPROC/WORK_ORDER_SERVICES.txt | 11 +- LSL2/STPROCINS/UNIT_EQUATES.txt | 13 + 16 files changed, 5621 insertions(+), 2639 deletions(-) create mode 100644 LSL2/STPROCINS/UNIT_EQUATES.txt diff --git a/LSL2/OIWIN/NDW_FQA_MAT_SCAN.json b/LSL2/OIWIN/NDW_FQA_MAT_SCAN.json index ad41e25..4d6876b 100644 --- a/LSL2/OIWIN/NDW_FQA_MAT_SCAN.json +++ b/LSL2/OIWIN/NDW_FQA_MAT_SCAN.json @@ -21,16 +21,20 @@ "<1,8>": "-448", "<1,9>": "FQA Material Scan", "<1,10>": { - "<1,10,1>": "0x82CF0000", - "<1,10,2>": "0x0" + "<1,10,1>": "0x82CE0000", + "<1,10,2>": "0x100" }, "<1,11>": { - "<1,11,1>": "0x0", + "<1,11,1>": "0x8000", "<1,11,2>": "0x80000000" }, - "<1,12>": "0", - "<1,13>": "-2", - "<1,14>": "0", + "<1,12>": "", + "<1,13>": { + "<1,13,1>": "-2", + "<1,13,2>": "-2", + "<1,13,3>": "" + }, + "<1,14>": "", "<1,15>": "", "<1,16>": "", "<1,17>": "", @@ -50,51 +54,61 @@ "<1,18,1,4,8>": "@PARAM6" }, "<1,18,1,5>": "", - "<1,18,1,6>": "" - }, - "<1,18,2>": "" - }, - "<1,19>": { - "<1,19,1>": "CREATE", - "<1,19,2>": "" + "<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>": "STPROC" + } }, + "<1,19>": "CREATE", "<1,20>": "", "<1,21>": "", "<1,22>": "", "<1,23>": "", "<1,24>": { - "<1,24,1>": "0", + "<1,24,1>": "", "<1,24,2>": "0", "<1,24,3>": "0", "<1,24,4>": "0", - "<1,24,5>": "0", - "<1,24,6>": "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>": "0", - "<1,26>": "0", + "<1,25>": "", + "<1,26>": "", "<1,27>": "", "<1,28>": "", "<1,29>": "", "<1,30>": "", "<1,31>": "", - "<1,32>": { - "<1,32,1>": "0x7FFFE", - "<1,32,2>": "0xF001E808" - }, + "<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,38,1>": "1", - "<1,38,2>": "1" + "<1,37,1>": "0X10001", + "<1,37,2>": "0X10001" }, + "<1,38>": "", "<1,39>": "", - "<1,40>": "0", + "<1,40>": "", "<1,41>": "", "<1,42>": "", "<1,43>": "", @@ -106,7 +120,74 @@ "<1,49>": "", "<1,50>": "", "<1,51>": "", - "<1,52>": "" + "<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>": "0", + "<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": { @@ -121,7 +202,7 @@ "<1,8>": "28", "<1,9>": "", "<1,10>": { - "<1,10,1>": "0x5E000080", + "<1,10,1>": "0x5E000088", "<1,10,2>": "0x200" }, "<1,11>": { @@ -129,7 +210,11 @@ "<1,11,2>": "0x80000000" }, "<1,12>": "1", - "<1,13>": "-2", + "<1,13>": { + "<1,13,1>": "-2", + "<1,13,2>": "-2", + "<1,13,3>": "" + }, "<1,14>": "0", "<1,15>": { "<1,15,1>": { @@ -167,34 +252,39 @@ "<1,18,1,4,8>": "@PARAM6" }, "<1,18,1,5>": "", - "<1,18,1,6>": "" - }, - "<1,18,2>": "" - }, - "<1,19>": { - "<1,19,1>": "LOSTFOCUS", - "<1,19,2>": "" + "<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>": "STPROC" + } }, + "<1,19>": "LOSTFOCUS", "<1,20>": "", "<1,21>": "", "<1,22>": "", "<1,23>": "", "<1,24>": "", - "<1,25>": "0", - "<1,26>": "0", + "<1,25>": "", + "<1,26>": "", "<1,27>": "", "<1,28>": "<>", "<1,29>": "<>", "<1,30>": "<>", "<1,31>": "0", - "<1,32>": { - "<1,32,1>": "0x7fffe", - "<1,32,2>": "0xf0016008" - }, + "<1,32>": "", "<1,33>": "", "<1,34>": "", "<1,35>": "", - "<1,36>": "", + "<1,36>": { + "<1,36,1>": "0", + "<1,36,2>": "0" + }, "<1,37>": "", "<1,38>": "", "<1,39>": "", @@ -210,7 +300,63 @@ "<1,49>": "", "<1,50>": "", "<1,51>": "", - "<1,52>": "" + "<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>": "EDL_CASSETTE2_SCAN", @@ -223,7 +369,7 @@ "<2,8>": "28", "<2,9>": "", "<2,10>": { - "<2,10,1>": "0x5E000080", + "<2,10,1>": "0x5E000088", "<2,10,2>": "0x200" }, "<2,11>": { @@ -231,7 +377,11 @@ "<2,11,2>": "0x80000000" }, "<2,12>": "2", - "<2,13>": "-2", + "<2,13>": { + "<2,13,1>": "-2", + "<2,13,2>": "-2", + "<2,13,3>": "" + }, "<2,14>": "0", "<2,15>": { "<2,15,1>": { @@ -269,34 +419,39 @@ "<2,18,1,4,8>": "@PARAM6" }, "<2,18,1,5>": "", - "<2,18,1,6>": "" - }, - "<2,18,2>": "" - }, - "<2,19>": { - "<2,19,1>": "LOSTFOCUS", - "<2,19,2>": "" + "<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>": "STPROC" + } }, + "<2,19>": "LOSTFOCUS", "<2,20>": "", "<2,21>": "", "<2,22>": "", "<2,23>": "", "<2,24>": "", - "<2,25>": "0", - "<2,26>": "0", + "<2,25>": "", + "<2,26>": "", "<2,27>": "", "<2,28>": "<>", "<2,29>": "<>", "<2,30>": "<>", "<2,31>": "0", - "<2,32>": { - "<2,32,1>": "0x7fffe", - "<2,32,2>": "0xf0016008" - }, + "<2,32>": "", "<2,33>": "", "<2,34>": "", "<2,35>": "", - "<2,36>": "", + "<2,36>": { + "<2,36,1>": "0", + "<2,36,2>": "0" + }, "<2,37>": "", "<2,38>": "", "<2,39>": "", @@ -312,7 +467,63 @@ "<2,49>": "", "<2,50>": "", "<2,51>": "", - "<2,52>": "" + "<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,65>": "", + "<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>": "", + "<2,91>": "", + "<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>": "EDL_SUPPLIER_SCAN", @@ -325,7 +536,7 @@ "<3,8>": "28", "<3,9>": "", "<3,10>": { - "<3,10,1>": "0x5E000080", + "<3,10,1>": "0x5E000088", "<3,10,2>": "0x200" }, "<3,11>": { @@ -333,7 +544,11 @@ "<3,11,2>": "0x80000000" }, "<3,12>": "3", - "<3,13>": "-2", + "<3,13>": { + "<3,13,1>": "-2", + "<3,13,2>": "-2", + "<3,13,3>": "" + }, "<3,14>": "0", "<3,15>": { "<3,15,1>": { @@ -371,34 +586,39 @@ "<3,18,1,4,8>": "@PARAM6" }, "<3,18,1,5>": "", - "<3,18,1,6>": "" - }, - "<3,18,2>": "" - }, - "<3,19>": { - "<3,19,1>": "LOSTFOCUS", - "<3,19,2>": "" + "<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>": "STPROC" + } }, + "<3,19>": "LOSTFOCUS", "<3,20>": "", "<3,21>": "", "<3,22>": "", "<3,23>": "", "<3,24>": "", - "<3,25>": "0", - "<3,26>": "0", + "<3,25>": "", + "<3,26>": "", "<3,27>": "", "<3,28>": "<>", "<3,29>": "<>", "<3,30>": "<>", "<3,31>": "0", - "<3,32>": { - "<3,32,1>": "0x7fffe", - "<3,32,2>": "0xf0016008" - }, + "<3,32>": "", "<3,33>": "", "<3,34>": "", "<3,35>": "", - "<3,36>": "", + "<3,36>": { + "<3,36,1>": "0", + "<3,36,2>": "0" + }, "<3,37>": "", "<3,38>": "", "<3,39>": "", @@ -414,7 +634,63 @@ "<3,49>": "", "<3,50>": "", "<3,51>": "", - "<3,52>": "" + "<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,65>": "", + "<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>": "", + "<3,91>": "", + "<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>": "" }, "<4>": { "<4,1>": "WINDOW_LABEL", @@ -427,7 +703,7 @@ "<4,8>": "30", "<4,9>": "FQA Material Scan", "<4,10>": { - "<4,10,1>": "0x56000001", + "<4,10,1>": "0x56000020", "<4,10,2>": "0x0" }, "<4,11>": { @@ -435,7 +711,11 @@ "<4,11,2>": "0x80000000" }, "<4,12>": "4", - "<4,13>": "-1", + "<4,13>": { + "<4,13,1>": "-1", + "<4,13,2>": "-1", + "<4,13,3>": "" + }, "<4,14>": "8388608", "<4,15>": { "<4,15,1>": { @@ -464,17 +744,14 @@ "<4,22>": "", "<4,23>": "", "<4,24>": "", - "<4,25>": "0", - "<4,26>": "0", + "<4,25>": "", + "<4,26>": "", "<4,27>": "", - "<4,28>": "<>", - "<4,29>": "<>", - "<4,30>": "<>", - "<4,31>": "0", - "<4,32>": { - "<4,32,1>": "0x7fffe", - "<4,32,2>": "0xf0012808" - }, + "<4,28>": "", + "<4,29>": "", + "<4,30>": "", + "<4,31>": "", + "<4,32>": "", "<4,33>": "", "<4,34>": "", "<4,35>": "", @@ -494,7 +771,76 @@ "<4,49>": "", "<4,50>": "", "<4,51>": "", - "<4,52>": "" + "<4,52>": "", + "<4,53>": "", + "<4,54>": "", + "<4,55>": "", + "<4,56>": "", + "<4,57>": "", + "<4,58>": "", + "<4,59>": "", + "<4,60>": "", + "<4,61>": "", + "<4,62>": "0", + "<4,63>": { + "<4,63,1>": "", + "<4,63,2>": "", + "<4,63,3>": "", + "<4,63,4>": "", + "<4,63,5>": "", + "<4,63,6>": "", + "<4,63,7>": "", + "<4,63,8>": "" + }, + "<4,64>": { + "<4,64,1>": "", + "<4,64,2>": "", + "<4,64,3>": "" + }, + "<4,65>": "-2", + "<4,66>": "", + "<4,67>": "", + "<4,68>": "", + "<4,69>": "", + "<4,70>": "", + "<4,71>": "", + "<4,72>": "", + "<4,73>": "", + "<4,74>": "", + "<4,75>": "", + "<4,76>": "", + "<4,77>": "", + "<4,78>": "", + "<4,79>": "", + "<4,80>": "", + "<4,81>": "", + "<4,82>": "", + "<4,83>": "", + "<4,84>": "", + "<4,85>": "", + "<4,86>": "", + "<4,87>": "", + "<4,88>": "", + "<4,89>": "", + "<4,90>": "0", + "<4,91>": "0", + "<4,92>": "", + "<4,93>": "", + "<4,94>": "", + "<4,95>": "", + "<4,96>": "", + "<4,97>": "", + "<4,98>": "", + "<4,99>": "", + "<4,100>": "", + "<4,101>": "", + "<4,102>": "", + "<4,103>": "", + "<4,104>": "", + "<4,105>": "", + "<4,106>": "", + "<4,107>": "", + "<4,108>": "" }, "<5>": { "<5,1>": "TXT_TOPLABEL", @@ -507,7 +853,7 @@ "<5,8>": "28", "<5,9>": "Top Label:", "<5,10>": { - "<5,10,1>": "0x56000002", + "<5,10,1>": "0x56000800", "<5,10,2>": "0x0" }, "<5,11>": { @@ -515,7 +861,11 @@ "<5,11,2>": "0x80000000" }, "<5,12>": "5", - "<5,13>": "-1", + "<5,13>": { + "<5,13,1>": "-1", + "<5,13,2>": "-1", + "<5,13,3>": "" + }, "<5,14>": "0", "<5,15>": { "<5,15,1>": { @@ -544,17 +894,14 @@ "<5,22>": "", "<5,23>": "", "<5,24>": "", - "<5,25>": "0", - "<5,26>": "0", + "<5,25>": "", + "<5,26>": "", "<5,27>": "", - "<5,28>": "<>", - "<5,29>": "<>", - "<5,30>": "<>", - "<5,31>": "0", - "<5,32>": { - "<5,32,1>": "0x7fffe", - "<5,32,2>": "0xf0016808" - }, + "<5,28>": "", + "<5,29>": "", + "<5,30>": "", + "<5,31>": "", + "<5,32>": "", "<5,33>": "", "<5,34>": "", "<5,35>": "", @@ -574,7 +921,76 @@ "<5,49>": "", "<5,50>": "", "<5,51>": "", - "<5,52>": "" + "<5,52>": "", + "<5,53>": "", + "<5,54>": "", + "<5,55>": "", + "<5,56>": "", + "<5,57>": "", + "<5,58>": "", + "<5,59>": "", + "<5,60>": "", + "<5,61>": "", + "<5,62>": "0", + "<5,63>": { + "<5,63,1>": "", + "<5,63,2>": "", + "<5,63,3>": "", + "<5,63,4>": "", + "<5,63,5>": "", + "<5,63,6>": "", + "<5,63,7>": "", + "<5,63,8>": "" + }, + "<5,64>": { + "<5,64,1>": "", + "<5,64,2>": "", + "<5,64,3>": "" + }, + "<5,65>": "-2", + "<5,66>": "", + "<5,67>": "", + "<5,68>": "", + "<5,69>": "", + "<5,70>": "", + "<5,71>": "", + "<5,72>": "", + "<5,73>": "", + "<5,74>": "", + "<5,75>": "", + "<5,76>": "", + "<5,77>": "", + "<5,78>": "", + "<5,79>": "", + "<5,80>": "", + "<5,81>": "", + "<5,82>": "", + "<5,83>": "", + "<5,84>": "", + "<5,85>": "", + "<5,86>": "", + "<5,87>": "", + "<5,88>": "", + "<5,89>": "", + "<5,90>": "0", + "<5,91>": "0", + "<5,92>": "", + "<5,93>": "", + "<5,94>": "", + "<5,95>": "", + "<5,96>": "", + "<5,97>": "", + "<5,98>": "", + "<5,99>": "", + "<5,100>": "", + "<5,101>": "", + "<5,102>": "", + "<5,103>": "", + "<5,104>": "", + "<5,105>": "", + "<5,106>": "", + "<5,107>": "", + "<5,108>": "" }, "<6>": { "<6,1>": "TXT_BOTTOMLABEL", @@ -587,7 +1003,7 @@ "<6,8>": "28", "<6,9>": "Bottom Label:", "<6,10>": { - "<6,10,1>": "0x56000002", + "<6,10,1>": "0x56000800", "<6,10,2>": "0x0" }, "<6,11>": { @@ -595,7 +1011,11 @@ "<6,11,2>": "0x80000000" }, "<6,12>": "6", - "<6,13>": "-1", + "<6,13>": { + "<6,13,1>": "-1", + "<6,13,2>": "-1", + "<6,13,3>": "" + }, "<6,14>": "0", "<6,15>": { "<6,15,1>": { @@ -624,17 +1044,14 @@ "<6,22>": "", "<6,23>": "", "<6,24>": "", - "<6,25>": "0", - "<6,26>": "0", + "<6,25>": "", + "<6,26>": "", "<6,27>": "", - "<6,28>": "<>", - "<6,29>": "<>", - "<6,30>": "<>", - "<6,31>": "0", - "<6,32>": { - "<6,32,1>": "0x7fffe", - "<6,32,2>": "0xf0016808" - }, + "<6,28>": "", + "<6,29>": "", + "<6,30>": "", + "<6,31>": "", + "<6,32>": "", "<6,33>": "", "<6,34>": "", "<6,35>": "", @@ -654,7 +1071,76 @@ "<6,49>": "", "<6,50>": "", "<6,51>": "", - "<6,52>": "" + "<6,52>": "", + "<6,53>": "", + "<6,54>": "", + "<6,55>": "", + "<6,56>": "", + "<6,57>": "", + "<6,58>": "", + "<6,59>": "", + "<6,60>": "", + "<6,61>": "", + "<6,62>": "0", + "<6,63>": { + "<6,63,1>": "", + "<6,63,2>": "", + "<6,63,3>": "", + "<6,63,4>": "", + "<6,63,5>": "", + "<6,63,6>": "", + "<6,63,7>": "", + "<6,63,8>": "" + }, + "<6,64>": { + "<6,64,1>": "", + "<6,64,2>": "", + "<6,64,3>": "" + }, + "<6,65>": "-2", + "<6,66>": "", + "<6,67>": "", + "<6,68>": "", + "<6,69>": "", + "<6,70>": "", + "<6,71>": "", + "<6,72>": "", + "<6,73>": "", + "<6,74>": "", + "<6,75>": "", + "<6,76>": "", + "<6,77>": "", + "<6,78>": "", + "<6,79>": "", + "<6,80>": "", + "<6,81>": "", + "<6,82>": "", + "<6,83>": "", + "<6,84>": "", + "<6,85>": "", + "<6,86>": "", + "<6,87>": "", + "<6,88>": "", + "<6,89>": "", + "<6,90>": "0", + "<6,91>": "0", + "<6,92>": "", + "<6,93>": "", + "<6,94>": "", + "<6,95>": "", + "<6,96>": "", + "<6,97>": "", + "<6,98>": "", + "<6,99>": "", + "<6,100>": "", + "<6,101>": "", + "<6,102>": "", + "<6,103>": "", + "<6,104>": "", + "<6,105>": "", + "<6,106>": "", + "<6,107>": "", + "<6,108>": "" }, "<7>": { "<7,1>": "TXT_SUBLOT", @@ -667,7 +1153,7 @@ "<7,8>": "28", "<7,9>": "Sub Lot:", "<7,10>": { - "<7,10,1>": "0x56000002", + "<7,10,1>": "0x56000800", "<7,10,2>": "0x0" }, "<7,11>": { @@ -675,7 +1161,11 @@ "<7,11,2>": "0x80000000" }, "<7,12>": "7", - "<7,13>": "-1", + "<7,13>": { + "<7,13,1>": "-1", + "<7,13,2>": "-1", + "<7,13,3>": "" + }, "<7,14>": "0", "<7,15>": { "<7,15,1>": { @@ -704,17 +1194,14 @@ "<7,22>": "", "<7,23>": "", "<7,24>": "", - "<7,25>": "0", - "<7,26>": "0", + "<7,25>": "", + "<7,26>": "", "<7,27>": "", - "<7,28>": "<>", - "<7,29>": "<>", - "<7,30>": "<>", - "<7,31>": "0", - "<7,32>": { - "<7,32,1>": "0x7fffe", - "<7,32,2>": "0xf0016808" - }, + "<7,28>": "", + "<7,29>": "", + "<7,30>": "", + "<7,31>": "", + "<7,32>": "", "<7,33>": "", "<7,34>": "", "<7,35>": "", @@ -734,7 +1221,76 @@ "<7,49>": "", "<7,50>": "", "<7,51>": "", - "<7,52>": "" + "<7,52>": "", + "<7,53>": "", + "<7,54>": "", + "<7,55>": "", + "<7,56>": "", + "<7,57>": "", + "<7,58>": "", + "<7,59>": "", + "<7,60>": "", + "<7,61>": "", + "<7,62>": "0", + "<7,63>": { + "<7,63,1>": "", + "<7,63,2>": "", + "<7,63,3>": "", + "<7,63,4>": "", + "<7,63,5>": "", + "<7,63,6>": "", + "<7,63,7>": "", + "<7,63,8>": "" + }, + "<7,64>": { + "<7,64,1>": "", + "<7,64,2>": "", + "<7,64,3>": "" + }, + "<7,65>": "-2", + "<7,66>": "", + "<7,67>": "", + "<7,68>": "", + "<7,69>": "", + "<7,70>": "", + "<7,71>": "", + "<7,72>": "", + "<7,73>": "", + "<7,74>": "", + "<7,75>": "", + "<7,76>": "", + "<7,77>": "", + "<7,78>": "", + "<7,79>": "", + "<7,80>": "", + "<7,81>": "", + "<7,82>": "", + "<7,83>": "", + "<7,84>": "", + "<7,85>": "", + "<7,86>": "", + "<7,87>": "", + "<7,88>": "", + "<7,89>": "", + "<7,90>": "0", + "<7,91>": "0", + "<7,92>": "", + "<7,93>": "", + "<7,94>": "", + "<7,95>": "", + "<7,96>": "", + "<7,97>": "", + "<7,98>": "", + "<7,99>": "", + "<7,100>": "", + "<7,101>": "", + "<7,102>": "", + "<7,103>": "", + "<7,104>": "", + "<7,105>": "", + "<7,106>": "", + "<7,107>": "", + "<7,108>": "" }, "<8>": { "<8,1>": "OLE_BTN_CLEAR", @@ -747,7 +1303,7 @@ "<8,8>": "27", "<8,9>": "SRP.Button.1", "<8,10>": { - "<8,10,1>": "0x56800000", + "<8,10,1>": "0x56000000", "<8,10,2>": "0x0" }, "<8,11>": { @@ -755,7 +1311,11 @@ "<8,11,2>": "0x80000000" }, "<8,12>": "8", - "<8,13>": "-2", + "<8,13>": { + "<8,13,1>": "-2", + "<8,13,2>": "-2", + "<8,13,3>": "" + }, "<8,14>": "0", "<8,15>": { "<8,15,1>": { @@ -793,35 +1353,148 @@ "<8,18,1,4,8>": "@PARAM6" }, "<8,18,1,5>": "@SELF", - "<8,18,1,6>": "" - }, - "<8,18,2>": "" - }, - "<8,19>": { - "<8,19,1>": "OLE", - "<8,19,2>": "" + "<8,18,1,6>": "", + "<8,18,1,7>": "", + "<8,18,1,8>": "", + "<8,18,1,9>": "", + "<8,18,1,10>": "", + "<8,18,1,11>": "", + "<8,18,1,12>": "", + "<8,18,1,13>": "", + "<8,18,1,14>": "", + "<8,18,1,15>": "STPROC" + } }, + "<8,19>": "OLE", "<8,20>": "", "<8,21>": "", "<8,22>": "", "<8,23>": "", "<8,24>": "", - "<8,25>": "0", - "<8,26>": "0", + "<8,25>": "", + "<8,26>": "", "<8,27>": "", - "<8,28>": "<>", - "<8,29>": "<>", - "<8,30>": "<>", - "<8,31>": "0", - "<8,32>": { - "<8,32,1>": "0x7fffe", - "<8,32,2>": "0xf0016000" - }, + "<8,28>": "", + "<8,29>": "", + "<8,30>": "", + "<8,31>": "", + "<8,32>": "", "<8,33>": "", "<8,34>": "", "<8,35>": "", - "<8,36>": "0300000000000000FFFEFF064E006F0072006D0061006C0000000000FFFEFF0B260043006C006500610072002000470072006900640000000000FFFEFF225300650067006F006500200055004900FCF02D0031003300FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000FFFEFF02FEF0310000000000FFFEFF00FFFEFF105300740061006E006400610072006400200054006F006F006C00620061007200FFFEFF21520065006D006F00760065007300200061006C006C0020007200650063006F007200640073002000660072006F006D00200074006800650020006700720069006400FFFEFF044100750074006F00000000000000000000000000", - "<8,37>": "" + "<8,36>": "0300000000000000FFFEFF064E006F0072006D0061006C0000000000FFFEFF0B260043006C006500610072002000470072006900640000000000FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000FFFEFF02FEF0310000000000FFFEFF00FFFEFF105300740061006E006400610072006400200054006F006F006C00620061007200FFFEFF21520065006D006F00760065007300200061006C006C0020007200650063006F007200640073002000660072006F006D00200074006800650020006700720069006400FFFEFF044100750074006F00000000000000000000000000", + "<8,37>": "", + "<8,38>": "", + "<8,39>": "", + "<8,40>": "", + "<8,41>": "", + "<8,42>": "", + "<8,43>": "", + "<8,44>": "", + "<8,45>": "", + "<8,46>": "", + "<8,47>": "", + "<8,48>": "", + "<8,49>": "", + "<8,50>": "", + "<8,51>": "", + "<8,52>": "", + "<8,53>": "", + "<8,54>": "", + "<8,55>": { + "<8,55,1>": "OLE.ButtonType", + "<8,55,2>": "OLE.Cancel", + "<8,55,3>": "OLE.Caption", + "<8,55,4>": "OLE.Default", + "<8,55,5>": "OLE.FontBold", + "<8,55,6>": "OLE.FontItalic", + "<8,55,7>": "OLE.FontName", + "<8,55,8>": "OLE.FontSize", + "<8,55,9>": "OLE.FontUnderlined", + "<8,55,10>": "OLE.IconFrameCount", + "<8,55,11>": "OLE.IconHeight", + "<8,55,12>": "OLE.IconPath", + "<8,55,13>": "OLE.IconSizeToFit", + "<8,55,14>": "OLE.IconWidth", + "<8,55,15>": "OLE.State", + "<8,55,16>": "OLE.StatusBarText", + "<8,55,17>": "OLE.Style", + "<8,55,18>": "OLE.ToolTip", + "<8,55,19>": "OLE.TransparentColor" + }, + "<8,56>": { + "<8,56,1>": "Normal", + "<8,56,2>": "0", + "<8,56,3>": "&Clear Grid", + "<8,56,4>": "0", + "<8,56,5>": "0", + "<8,56,6>": "0", + "<8,56,7>": "Segoe UI", + "<8,56,8>": "8", + "<8,56,9>": "0", + "<8,56,10>": "1", + "<8,56,11>": "0", + "<8,56,12>": "", + "<8,56,13>": "0", + "<8,56,14>": "0", + "<8,56,15>": "0", + "<8,56,16>": "", + "<8,56,17>": "Standard Toolbar", + "<8,56,18>": "Removes all records from the grid", + "<8,56,19>": "Auto" + }, + "<8,57>": "", + "<8,58>": "", + "<8,59>": "", + "<8,60>": "", + "<8,61>": "", + "<8,62>": "", + "<8,63>": "", + "<8,64>": "", + "<8,65>": "", + "<8,66>": "", + "<8,67>": "", + "<8,68>": "", + "<8,69>": "", + "<8,70>": "", + "<8,71>": "", + "<8,72>": "", + "<8,73>": "", + "<8,74>": "", + "<8,75>": "", + "<8,76>": "", + "<8,77>": "", + "<8,78>": "", + "<8,79>": "", + "<8,80>": "", + "<8,81>": "", + "<8,82>": "", + "<8,83>": "", + "<8,84>": "", + "<8,85>": "", + "<8,86>": "", + "<8,87>": "", + "<8,88>": "", + "<8,89>": "", + "<8,90>": "", + "<8,91>": "", + "<8,92>": "", + "<8,93>": "", + "<8,94>": "", + "<8,95>": "", + "<8,96>": "", + "<8,97>": "", + "<8,98>": "", + "<8,99>": "", + "<8,100>": "", + "<8,101>": "", + "<8,102>": "", + "<8,103>": "", + "<8,104>": "", + "<8,105>": "", + "<8,106>": "", + "<8,107>": "", + "<8,108>": "" }, "<9>": { "<9,1>": "OLE_EDT_SCANDATA", @@ -842,7 +1515,11 @@ "<9,11,2>": "0x80000000" }, "<9,12>": "9", - "<9,13>": "-2", + "<9,13>": { + "<9,13,1>": "-2", + "<9,13,2>": "-2", + "<9,13,3>": "" + }, "<9,14>": "0", "<9,15>": { "<9,15,1>": { @@ -880,46 +1557,138 @@ "<9,18,1,4,8>": "@PARAM6" }, "<9,18,1,5>": "@SELF", - "<9,18,1,6>": "" - }, - "<9,18,2>": "" - }, - "<9,19>": { - "<9,19,1>": "OLE", - "<9,19,2>": "" + "<9,18,1,6>": "", + "<9,18,1,7>": "", + "<9,18,1,8>": "", + "<9,18,1,9>": "", + "<9,18,1,10>": "", + "<9,18,1,11>": "", + "<9,18,1,12>": "", + "<9,18,1,13>": "", + "<9,18,1,14>": "", + "<9,18,1,15>": "STPROC" + } }, + "<9,19>": "OLE", "<9,20>": "", "<9,21>": "", "<9,22>": "", "<9,23>": "", "<9,24>": "", - "<9,25>": "0", - "<9,26>": "0", + "<9,25>": "", + "<9,26>": "", "<9,27>": "", - "<9,28>": "<>", - "<9,29>": "<>", - "<9,30>": "<>", - "<9,31>": "0", - "<9,32>": { - "<9,32,1>": "0x7fffe", - "<9,32,2>": "0xf0016800" - }, + "<9,28>": "", + "<9,29>": "", + "<9,30>": "", + "<9,31>": "", + "<9,32>": "", "<9,33>": "", "<9,34>": "", "<9,35>": "", "<9,36>": "0000000000000000", - "<9,37>": "" - }, - "<10>": "" + "<9,37>": "", + "<9,38>": "", + "<9,39>": "", + "<9,40>": "", + "<9,41>": "", + "<9,42>": "", + "<9,43>": "", + "<9,44>": "", + "<9,45>": "", + "<9,46>": "", + "<9,47>": "", + "<9,48>": "", + "<9,49>": "", + "<9,50>": "", + "<9,51>": "", + "<9,52>": "", + "<9,53>": "", + "<9,54>": "", + "<9,55>": { + "<9,55,1>": "OLE.AllowXPTheme", + "<9,55,2>": "OLE.ComboDropDown", + "<9,55,3>": "OLE.DblClickToEdit", + "<9,55,4>": "OLE.EditContextMenu", + "<9,55,5>": "OLE.EditText", + "<9,55,6>": "OLE.Focus", + "<9,55,7>": "OLE.HeaderRowCount", + "<9,55,8>": "OLE.Modified", + "<9,55,9>": "OLE.PassEnterKey", + "<9,55,10>": "OLE.ScrollBarsVisible", + "<9,55,11>": "OLE.SingleEscape", + "<9,55,12>": "OLE.TextRenderStyle" + }, + "<9,56>": { + "<9,56,1>": "0", + "<9,56,2>": "0", + "<9,56,3>": "1", + "<9,56,4>": "1", + "<9,56,5>": "", + "<9,56,6>": "0", + "<9,56,7>": "1", + "<9,56,8>": "0", + "<9,56,9>": "0", + "<9,56,10>": "Auto|Auto", + "<9,56,11>": "0", + "<9,56,12>": "EditField|Ellipses" + }, + "<9,57>": "", + "<9,58>": "", + "<9,59>": "", + "<9,60>": "", + "<9,61>": "", + "<9,62>": "", + "<9,63>": "", + "<9,64>": "", + "<9,65>": "", + "<9,66>": "", + "<9,67>": "", + "<9,68>": "", + "<9,69>": "", + "<9,70>": "", + "<9,71>": "", + "<9,72>": "", + "<9,73>": "", + "<9,74>": "", + "<9,75>": "", + "<9,76>": "", + "<9,77>": "", + "<9,78>": "", + "<9,79>": "", + "<9,80>": "", + "<9,81>": "", + "<9,82>": "", + "<9,83>": "", + "<9,84>": "", + "<9,85>": "", + "<9,86>": "", + "<9,87>": "", + "<9,88>": "", + "<9,89>": "", + "<9,90>": "", + "<9,91>": "", + "<9,92>": "", + "<9,93>": "", + "<9,94>": "", + "<9,95>": "", + "<9,96>": "", + "<9,97>": "", + "<9,98>": "", + "<9,99>": "", + "<9,100>": "", + "<9,101>": "", + "<9,102>": "", + "<9,103>": "", + "<9,104>": "", + "<9,105>": "", + "<9,106>": "", + "<9,107>": "", + "<9,108>": "" + } }, "record4": { - "<1>": "", - "<2>": { - "<2,1>": "", - "<2,2>": "", - "<2,3>": "", - "<2,4>": "0" - } + "<1>": "" } } } \ No newline at end of file diff --git a/LSL2/OIWIN/NDW_PACKAGING.json b/LSL2/OIWIN/NDW_PACKAGING.json index bbb5cd2..416aae9 100644 --- a/LSL2/OIWIN/NDW_PACKAGING.json +++ b/LSL2/OIWIN/NDW_PACKAGING.json @@ -22,15 +22,19 @@ "<1,9>": "Packaging", "<1,10>": { "<1,10,1>": "0x94CE0000", - "<1,10,2>": "0x0" + "<1,10,2>": "0x100" }, "<1,11>": { - "<1,11,1>": "0x0", + "<1,11,1>": "0x8000", "<1,11,2>": "0x80000000" }, - "<1,12>": "0", - "<1,13>": "-2", - "<1,14>": "0", + "<1,12>": "", + "<1,13>": { + "<1,13,1>": "-2", + "<1,13,2>": "-2", + "<1,13,3>": "" + }, + "<1,14>": "", "<1,15>": "", "<1,16>": "", "<1,17>": "", @@ -50,51 +54,61 @@ "<1,18,1,4,8>": "@PARAM6" }, "<1,18,1,5>": "", - "<1,18,1,6>": "" - }, - "<1,18,2>": "" - }, - "<1,19>": { - "<1,19,1>": "CREATE", - "<1,19,2>": "" + "<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>": "STPROC" + } }, + "<1,19>": "CREATE", "<1,20>": "", "<1,21>": "", "<1,22>": "", "<1,23>": "", "<1,24>": { - "<1,24,1>": "0", + "<1,24,1>": "", "<1,24,2>": "0", "<1,24,3>": "0", "<1,24,4>": "0", - "<1,24,5>": "0", - "<1,24,6>": "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>": "0", - "<1,26>": "0", + "<1,25>": "", + "<1,26>": "", "<1,27>": "", "<1,28>": "", "<1,29>": "", "<1,30>": "", "<1,31>": "", - "<1,32>": { - "<1,32,1>": "0x7FFFE", - "<1,32,2>": "0xF001E808" - }, + "<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,38,1>": "1", - "<1,38,2>": "1" + "<1,37,1>": "0X10001", + "<1,37,2>": "0X10001" }, + "<1,38>": "", "<1,39>": "", - "<1,40>": "0", + "<1,40>": "", "<1,41>": "", "<1,42>": "", "<1,43>": "", @@ -106,7 +120,74 @@ "<1,49>": "", "<1,50>": "", "<1,51>": "", - "<1,52>": "" + "<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>": "0", + "<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": { @@ -121,15 +202,19 @@ "<1,8>": "50", "<1,9>": "User ID Scan", "<1,10>": { - "<1,10,1>": "0x56000002", + "<1,10,1>": "0x56000800", "<1,10,2>": "0x0" }, "<1,11>": { - "<1,11,1>": "0x0", + "<1,11,1>": "0x4", "<1,11,2>": "0x80000000" }, "<1,12>": "1", - "<1,13>": "-1", + "<1,13>": { + "<1,13,1>": "-1", + "<1,13,2>": "-1", + "<1,13,3>": "" + }, "<1,14>": "0", "<1,15>": { "<1,15,1>": { @@ -158,17 +243,14 @@ "<1,22>": "", "<1,23>": "", "<1,24>": "", - "<1,25>": "0", - "<1,26>": "0", + "<1,25>": "", + "<1,26>": "", "<1,27>": "", - "<1,28>": "<>", - "<1,29>": "<>", - "<1,30>": "<>", - "<1,31>": "0", - "<1,32>": { - "<1,32,1>": "0x7fffe", - "<1,32,2>": "0xf0016808" - }, + "<1,28>": "", + "<1,29>": "", + "<1,30>": "", + "<1,31>": "", + "<1,32>": "", "<1,33>": "", "<1,34>": "", "<1,35>": "", @@ -188,7 +270,76 @@ "<1,49>": "", "<1,50>": "", "<1,51>": "", - "<1,52>": "" + "<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,63,1>": "", + "<1,63,2>": "", + "<1,63,3>": "", + "<1,63,4>": "", + "<1,63,5>": "", + "<1,63,6>": "", + "<1,63,7>": "", + "<1,63,8>": "" + }, + "<1,64>": { + "<1,64,1>": "", + "<1,64,2>": "", + "<1,64,3>": "" + }, + "<1,65>": "-2", + "<1,66>": "", + "<1,67>": "", + "<1,68>": "", + "<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>": "0", + "<1,91>": "0", + "<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>": "EDL_USER_ID_SCAN", @@ -201,15 +352,19 @@ "<2,8>": "51", "<2,9>": "", "<2,10>": { - "<2,10,1>": "0x56000080", + "<2,10,1>": "0x56000088", "<2,10,2>": "0x200" }, "<2,11>": { - "<2,11,1>": "0x4", + "<2,11,1>": "0x0", "<2,11,2>": "0x80000000" }, "<2,12>": "2", - "<2,13>": "-2", + "<2,13>": { + "<2,13,1>": "-2", + "<2,13,2>": "-2", + "<2,13,3>": "" + }, "<2,14>": "0", "<2,15>": { "<2,15,1>": { @@ -247,34 +402,39 @@ "<2,18,1,4,8>": "@PARAM6" }, "<2,18,1,5>": "", - "<2,18,1,6>": "" - }, - "<2,18,2>": "" - }, - "<2,19>": { - "<2,19,1>": "LOSTFOCUS", - "<2,19,2>": "" + "<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>": "STPROC" + } }, + "<2,19>": "LOSTFOCUS", "<2,20>": "", "<2,21>": "", "<2,22>": "", "<2,23>": "", "<2,24>": "", - "<2,25>": "0", - "<2,26>": "0", + "<2,25>": "", + "<2,26>": "", "<2,27>": "", "<2,28>": "<>", "<2,29>": "<>", "<2,30>": "<>", "<2,31>": "0", - "<2,32>": { - "<2,32,1>": "0x7fffe", - "<2,32,2>": "0xf0016008" - }, + "<2,32>": "", "<2,33>": "", "<2,34>": "", "<2,35>": "", - "<2,36>": "", + "<2,36>": { + "<2,36,1>": "0", + "<2,36,2>": "0" + }, "<2,37>": "", "<2,38>": "", "<2,39>": "", @@ -290,7 +450,63 @@ "<2,49>": "", "<2,50>": "", "<2,51>": "", - "<2,52>": "" + "<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,65>": "", + "<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>": "", + "<2,91>": "", + "<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>": "TXT_CASS_SCAN_1", @@ -303,7 +519,7 @@ "<3,8>": "50", "<3,9>": "RDS Scan #1", "<3,10>": { - "<3,10,1>": "0x56000002", + "<3,10,1>": "0x56000800", "<3,10,2>": "0x0" }, "<3,11>": { @@ -311,7 +527,11 @@ "<3,11,2>": "0x80000000" }, "<3,12>": "3", - "<3,13>": "-1", + "<3,13>": { + "<3,13,1>": "-1", + "<3,13,2>": "-1", + "<3,13,3>": "" + }, "<3,14>": "0", "<3,15>": { "<3,15,1>": { @@ -340,17 +560,14 @@ "<3,22>": "", "<3,23>": "", "<3,24>": "", - "<3,25>": "0", - "<3,26>": "0", + "<3,25>": "", + "<3,26>": "", "<3,27>": "", - "<3,28>": "<>", - "<3,29>": "<>", - "<3,30>": "<>", - "<3,31>": "0", - "<3,32>": { - "<3,32,1>": "0x7fffe", - "<3,32,2>": "0xf0016808" - }, + "<3,28>": "", + "<3,29>": "", + "<3,30>": "", + "<3,31>": "", + "<3,32>": "", "<3,33>": "", "<3,34>": "", "<3,35>": "", @@ -370,7 +587,76 @@ "<3,49>": "", "<3,50>": "", "<3,51>": "", - "<3,52>": "" + "<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,63,1>": "", + "<3,63,2>": "", + "<3,63,3>": "", + "<3,63,4>": "", + "<3,63,5>": "", + "<3,63,6>": "", + "<3,63,7>": "", + "<3,63,8>": "" + }, + "<3,64>": { + "<3,64,1>": "", + "<3,64,2>": "", + "<3,64,3>": "" + }, + "<3,65>": "-2", + "<3,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>": "" }, "<4>": { "<4,1>": "EDL_CASS_SCAN_1", @@ -383,7 +669,7 @@ "<4,8>": "51", "<4,9>": "", "<4,10>": { - "<4,10,1>": "0x5E000080", + "<4,10,1>": "0x5E000088", "<4,10,2>": "0x200" }, "<4,11>": { @@ -391,7 +677,11 @@ "<4,11,2>": "0x80000000" }, "<4,12>": "4", - "<4,13>": "-2", + "<4,13>": { + "<4,13,1>": "-2", + "<4,13,2>": "-2", + "<4,13,3>": "" + }, "<4,14>": "0", "<4,15>": { "<4,15,1>": { @@ -429,34 +719,39 @@ "<4,18,1,4,8>": "@PARAM6" }, "<4,18,1,5>": "", - "<4,18,1,6>": "" - }, - "<4,18,2>": "" - }, - "<4,19>": { - "<4,19,1>": "LOSTFOCUS", - "<4,19,2>": "" + "<4,18,1,6>": "", + "<4,18,1,7>": "", + "<4,18,1,8>": "", + "<4,18,1,9>": "", + "<4,18,1,10>": "", + "<4,18,1,11>": "", + "<4,18,1,12>": "", + "<4,18,1,13>": "", + "<4,18,1,14>": "", + "<4,18,1,15>": "STPROC" + } }, + "<4,19>": "LOSTFOCUS", "<4,20>": "", "<4,21>": "", "<4,22>": "", "<4,23>": "", "<4,24>": "", - "<4,25>": "0", - "<4,26>": "0", + "<4,25>": "", + "<4,26>": "", "<4,27>": "", "<4,28>": "<>", "<4,29>": "<>", "<4,30>": "<>", "<4,31>": "0", - "<4,32>": { - "<4,32,1>": "0x7fffe", - "<4,32,2>": "0xf0016008" - }, + "<4,32>": "", "<4,33>": "", "<4,34>": "", "<4,35>": "", - "<4,36>": "", + "<4,36>": { + "<4,36,1>": "0", + "<4,36,2>": "0" + }, "<4,37>": "", "<4,38>": "", "<4,39>": "", @@ -472,7 +767,63 @@ "<4,49>": "", "<4,50>": "", "<4,51>": "", - "<4,52>": "" + "<4,52>": "", + "<4,53>": "", + "<4,54>": "", + "<4,55>": "", + "<4,56>": "", + "<4,57>": "", + "<4,58>": "", + "<4,59>": "", + "<4,60>": "", + "<4,61>": "", + "<4,62>": "0", + "<4,63>": "", + "<4,64>": "", + "<4,65>": "", + "<4,66>": "", + "<4,67>": "", + "<4,68>": "", + "<4,69>": "", + "<4,70>": "", + "<4,71>": "", + "<4,72>": "", + "<4,73>": "", + "<4,74>": "", + "<4,75>": "", + "<4,76>": "", + "<4,77>": "", + "<4,78>": "", + "<4,79>": "", + "<4,80>": "", + "<4,81>": "", + "<4,82>": "", + "<4,83>": "", + "<4,84>": "", + "<4,85>": "", + "<4,86>": "", + "<4,87>": "", + "<4,88>": "", + "<4,89>": "", + "<4,90>": "", + "<4,91>": "", + "<4,92>": "", + "<4,93>": "", + "<4,94>": "", + "<4,95>": "", + "<4,96>": "", + "<4,97>": "", + "<4,98>": "", + "<4,99>": "", + "<4,100>": "", + "<4,101>": "", + "<4,102>": "", + "<4,103>": "", + "<4,104>": "", + "<4,105>": "", + "<4,106>": "", + "<4,107>": "", + "<4,108>": "" }, "<5>": { "<5,1>": "TXT_CASS_SCAN_2", @@ -485,7 +836,7 @@ "<5,8>": "50", "<5,9>": "RDS Scan #2", "<5,10>": { - "<5,10,1>": "0x56000002", + "<5,10,1>": "0x56000800", "<5,10,2>": "0x0" }, "<5,11>": { @@ -493,7 +844,11 @@ "<5,11,2>": "0x80000000" }, "<5,12>": "5", - "<5,13>": "-1", + "<5,13>": { + "<5,13,1>": "-1", + "<5,13,2>": "-1", + "<5,13,3>": "" + }, "<5,14>": "0", "<5,15>": { "<5,15,1>": { @@ -522,17 +877,14 @@ "<5,22>": "", "<5,23>": "", "<5,24>": "", - "<5,25>": "0", - "<5,26>": "0", + "<5,25>": "", + "<5,26>": "", "<5,27>": "", - "<5,28>": "<>", - "<5,29>": "<>", - "<5,30>": "<>", - "<5,31>": "0", - "<5,32>": { - "<5,32,1>": "0x7fffe", - "<5,32,2>": "0xf0016808" - }, + "<5,28>": "", + "<5,29>": "", + "<5,30>": "", + "<5,31>": "", + "<5,32>": "", "<5,33>": "", "<5,34>": "", "<5,35>": "", @@ -552,7 +904,76 @@ "<5,49>": "", "<5,50>": "", "<5,51>": "", - "<5,52>": "" + "<5,52>": "", + "<5,53>": "", + "<5,54>": "", + "<5,55>": "", + "<5,56>": "", + "<5,57>": "", + "<5,58>": "", + "<5,59>": "", + "<5,60>": "", + "<5,61>": "", + "<5,62>": "0", + "<5,63>": { + "<5,63,1>": "", + "<5,63,2>": "", + "<5,63,3>": "", + "<5,63,4>": "", + "<5,63,5>": "", + "<5,63,6>": "", + "<5,63,7>": "", + "<5,63,8>": "" + }, + "<5,64>": { + "<5,64,1>": "", + "<5,64,2>": "", + "<5,64,3>": "" + }, + "<5,65>": "-2", + "<5,66>": "", + "<5,67>": "", + "<5,68>": "", + "<5,69>": "", + "<5,70>": "", + "<5,71>": "", + "<5,72>": "", + "<5,73>": "", + "<5,74>": "", + "<5,75>": "", + "<5,76>": "", + "<5,77>": "", + "<5,78>": "", + "<5,79>": "", + "<5,80>": "", + "<5,81>": "", + "<5,82>": "", + "<5,83>": "", + "<5,84>": "", + "<5,85>": "", + "<5,86>": "", + "<5,87>": "", + "<5,88>": "", + "<5,89>": "", + "<5,90>": "0", + "<5,91>": "0", + "<5,92>": "", + "<5,93>": "", + "<5,94>": "", + "<5,95>": "", + "<5,96>": "", + "<5,97>": "", + "<5,98>": "", + "<5,99>": "", + "<5,100>": "", + "<5,101>": "", + "<5,102>": "", + "<5,103>": "", + "<5,104>": "", + "<5,105>": "", + "<5,106>": "", + "<5,107>": "", + "<5,108>": "" }, "<6>": { "<6,1>": "EDL_CASS_SCAN_2", @@ -565,7 +986,7 @@ "<6,8>": "51", "<6,9>": "", "<6,10>": { - "<6,10,1>": "0x5E000080", + "<6,10,1>": "0x5E000088", "<6,10,2>": "0x200" }, "<6,11>": { @@ -573,7 +994,11 @@ "<6,11,2>": "0x80000000" }, "<6,12>": "6", - "<6,13>": "-2", + "<6,13>": { + "<6,13,1>": "-2", + "<6,13,2>": "-2", + "<6,13,3>": "" + }, "<6,14>": "0", "<6,15>": { "<6,15,1>": { @@ -611,34 +1036,39 @@ "<6,18,1,4,8>": "@PARAM6" }, "<6,18,1,5>": "", - "<6,18,1,6>": "" - }, - "<6,18,2>": "" - }, - "<6,19>": { - "<6,19,1>": "LOSTFOCUS", - "<6,19,2>": "" + "<6,18,1,6>": "", + "<6,18,1,7>": "", + "<6,18,1,8>": "", + "<6,18,1,9>": "", + "<6,18,1,10>": "", + "<6,18,1,11>": "", + "<6,18,1,12>": "", + "<6,18,1,13>": "", + "<6,18,1,14>": "", + "<6,18,1,15>": "STPROC" + } }, + "<6,19>": "LOSTFOCUS", "<6,20>": "", "<6,21>": "", "<6,22>": "", "<6,23>": "", "<6,24>": "", - "<6,25>": "0", - "<6,26>": "0", + "<6,25>": "", + "<6,26>": "", "<6,27>": "", "<6,28>": "<>", "<6,29>": "<>", "<6,30>": "<>", "<6,31>": "0", - "<6,32>": { - "<6,32,1>": "0x7fffe", - "<6,32,2>": "0xf0016008" - }, + "<6,32>": "", "<6,33>": "", "<6,34>": "", "<6,35>": "", - "<6,36>": "", + "<6,36>": { + "<6,36,1>": "0", + "<6,36,2>": "0" + }, "<6,37>": "", "<6,38>": "", "<6,39>": "", @@ -654,7 +1084,63 @@ "<6,49>": "", "<6,50>": "", "<6,51>": "", - "<6,52>": "" + "<6,52>": "", + "<6,53>": "", + "<6,54>": "", + "<6,55>": "", + "<6,56>": "", + "<6,57>": "", + "<6,58>": "", + "<6,59>": "", + "<6,60>": "", + "<6,61>": "", + "<6,62>": "0", + "<6,63>": "", + "<6,64>": "", + "<6,65>": "", + "<6,66>": "", + "<6,67>": "", + "<6,68>": "", + "<6,69>": "", + "<6,70>": "", + "<6,71>": "", + "<6,72>": "", + "<6,73>": "", + "<6,74>": "", + "<6,75>": "", + "<6,76>": "", + "<6,77>": "", + "<6,78>": "", + "<6,79>": "", + "<6,80>": "", + "<6,81>": "", + "<6,82>": "", + "<6,83>": "", + "<6,84>": "", + "<6,85>": "", + "<6,86>": "", + "<6,87>": "", + "<6,88>": "", + "<6,89>": "", + "<6,90>": "", + "<6,91>": "", + "<6,92>": "", + "<6,93>": "", + "<6,94>": "", + "<6,95>": "", + "<6,96>": "", + "<6,97>": "", + "<6,98>": "", + "<6,99>": "", + "<6,100>": "", + "<6,101>": "", + "<6,102>": "", + "<6,103>": "", + "<6,104>": "", + "<6,105>": "", + "<6,106>": "", + "<6,107>": "", + "<6,108>": "" }, "<7>": { "<7,1>": "TXT_POLY_SCAN", @@ -667,7 +1153,7 @@ "<7,8>": "50", "<7,9>": "Poly Scan", "<7,10>": { - "<7,10,1>": "0x56000002", + "<7,10,1>": "0x56000800", "<7,10,2>": "0x0" }, "<7,11>": { @@ -675,7 +1161,11 @@ "<7,11,2>": "0x80000000" }, "<7,12>": "7", - "<7,13>": "-1", + "<7,13>": { + "<7,13,1>": "-1", + "<7,13,2>": "-1", + "<7,13,3>": "" + }, "<7,14>": "0", "<7,15>": { "<7,15,1>": { @@ -704,17 +1194,14 @@ "<7,22>": "", "<7,23>": "", "<7,24>": "", - "<7,25>": "0", - "<7,26>": "0", + "<7,25>": "", + "<7,26>": "", "<7,27>": "", - "<7,28>": "<>", - "<7,29>": "<>", - "<7,30>": "<>", - "<7,31>": "0", - "<7,32>": { - "<7,32,1>": "0x7fffe", - "<7,32,2>": "0xf0016808" - }, + "<7,28>": "", + "<7,29>": "", + "<7,30>": "", + "<7,31>": "", + "<7,32>": "", "<7,33>": "", "<7,34>": "", "<7,35>": "", @@ -734,7 +1221,76 @@ "<7,49>": "", "<7,50>": "", "<7,51>": "", - "<7,52>": "" + "<7,52>": "", + "<7,53>": "", + "<7,54>": "", + "<7,55>": "", + "<7,56>": "", + "<7,57>": "", + "<7,58>": "", + "<7,59>": "", + "<7,60>": "", + "<7,61>": "", + "<7,62>": "0", + "<7,63>": { + "<7,63,1>": "", + "<7,63,2>": "", + "<7,63,3>": "", + "<7,63,4>": "", + "<7,63,5>": "", + "<7,63,6>": "", + "<7,63,7>": "", + "<7,63,8>": "" + }, + "<7,64>": { + "<7,64,1>": "", + "<7,64,2>": "", + "<7,64,3>": "" + }, + "<7,65>": "-2", + "<7,66>": "", + "<7,67>": "", + "<7,68>": "", + "<7,69>": "", + "<7,70>": "", + "<7,71>": "", + "<7,72>": "", + "<7,73>": "", + "<7,74>": "", + "<7,75>": "", + "<7,76>": "", + "<7,77>": "", + "<7,78>": "", + "<7,79>": "", + "<7,80>": "", + "<7,81>": "", + "<7,82>": "", + "<7,83>": "", + "<7,84>": "", + "<7,85>": "", + "<7,86>": "", + "<7,87>": "", + "<7,88>": "", + "<7,89>": "", + "<7,90>": "0", + "<7,91>": "0", + "<7,92>": "", + "<7,93>": "", + "<7,94>": "", + "<7,95>": "", + "<7,96>": "", + "<7,97>": "", + "<7,98>": "", + "<7,99>": "", + "<7,100>": "", + "<7,101>": "", + "<7,102>": "", + "<7,103>": "", + "<7,104>": "", + "<7,105>": "", + "<7,106>": "", + "<7,107>": "", + "<7,108>": "" }, "<8>": { "<8,1>": "EDL_POLY_SCAN", @@ -747,7 +1303,7 @@ "<8,8>": "51", "<8,9>": "", "<8,10>": { - "<8,10,1>": "0x5E000080", + "<8,10,1>": "0x5E000088", "<8,10,2>": "0x200" }, "<8,11>": { @@ -755,7 +1311,11 @@ "<8,11,2>": "0x80000000" }, "<8,12>": "8", - "<8,13>": "-2", + "<8,13>": { + "<8,13,1>": "-2", + "<8,13,2>": "-2", + "<8,13,3>": "" + }, "<8,14>": "0", "<8,15>": { "<8,15,1>": { @@ -793,34 +1353,39 @@ "<8,18,1,4,8>": "@PARAM6" }, "<8,18,1,5>": "", - "<8,18,1,6>": "" - }, - "<8,18,2>": "" - }, - "<8,19>": { - "<8,19,1>": "LOSTFOCUS", - "<8,19,2>": "" + "<8,18,1,6>": "", + "<8,18,1,7>": "", + "<8,18,1,8>": "", + "<8,18,1,9>": "", + "<8,18,1,10>": "", + "<8,18,1,11>": "", + "<8,18,1,12>": "", + "<8,18,1,13>": "", + "<8,18,1,14>": "", + "<8,18,1,15>": "STPROC" + } }, + "<8,19>": "LOSTFOCUS", "<8,20>": "", "<8,21>": "", "<8,22>": "", "<8,23>": "", "<8,24>": "", - "<8,25>": "0", - "<8,26>": "0", + "<8,25>": "", + "<8,26>": "", "<8,27>": "", "<8,28>": "<>", "<8,29>": "<>", "<8,30>": "<>", "<8,31>": "0", - "<8,32>": { - "<8,32,1>": "0x7fffe", - "<8,32,2>": "0xf0016008" - }, + "<8,32>": "", "<8,33>": "", "<8,34>": "", "<8,35>": "", - "<8,36>": "", + "<8,36>": { + "<8,36,1>": "0", + "<8,36,2>": "0" + }, "<8,37>": "", "<8,38>": "", "<8,39>": "", @@ -836,7 +1401,63 @@ "<8,49>": "", "<8,50>": "", "<8,51>": "", - "<8,52>": "" + "<8,52>": "", + "<8,53>": "", + "<8,54>": "", + "<8,55>": "", + "<8,56>": "", + "<8,57>": "", + "<8,58>": "", + "<8,59>": "", + "<8,60>": "", + "<8,61>": "", + "<8,62>": "0", + "<8,63>": "", + "<8,64>": "", + "<8,65>": "", + "<8,66>": "", + "<8,67>": "", + "<8,68>": "", + "<8,69>": "", + "<8,70>": "", + "<8,71>": "", + "<8,72>": "", + "<8,73>": "", + "<8,74>": "", + "<8,75>": "", + "<8,76>": "", + "<8,77>": "", + "<8,78>": "", + "<8,79>": "", + "<8,80>": "", + "<8,81>": "", + "<8,82>": "", + "<8,83>": "", + "<8,84>": "", + "<8,85>": "", + "<8,86>": "", + "<8,87>": "", + "<8,88>": "", + "<8,89>": "", + "<8,90>": "", + "<8,91>": "", + "<8,92>": "", + "<8,93>": "", + "<8,94>": "", + "<8,95>": "", + "<8,96>": "", + "<8,97>": "", + "<8,98>": "", + "<8,99>": "", + "<8,100>": "", + "<8,101>": "", + "<8,102>": "", + "<8,103>": "", + "<8,104>": "", + "<8,105>": "", + "<8,106>": "", + "<8,107>": "", + "<8,108>": "" }, "<9>": { "<9,1>": "TXT_TRILAM_SCAN", @@ -849,7 +1470,7 @@ "<9,8>": "50", "<9,9>": "Trilam Scan", "<9,10>": { - "<9,10,1>": "0x56000002", + "<9,10,1>": "0x56000800", "<9,10,2>": "0x0" }, "<9,11>": { @@ -857,7 +1478,11 @@ "<9,11,2>": "0x80000000" }, "<9,12>": "9", - "<9,13>": "-1", + "<9,13>": { + "<9,13,1>": "-1", + "<9,13,2>": "-1", + "<9,13,3>": "" + }, "<9,14>": "0", "<9,15>": { "<9,15,1>": { @@ -886,17 +1511,14 @@ "<9,22>": "", "<9,23>": "", "<9,24>": "", - "<9,25>": "0", - "<9,26>": "0", + "<9,25>": "", + "<9,26>": "", "<9,27>": "", - "<9,28>": "<>", - "<9,29>": "<>", - "<9,30>": "<>", - "<9,31>": "0", - "<9,32>": { - "<9,32,1>": "0x7fffe", - "<9,32,2>": "0xf0016808" - }, + "<9,28>": "", + "<9,29>": "", + "<9,30>": "", + "<9,31>": "", + "<9,32>": "", "<9,33>": "", "<9,34>": "", "<9,35>": "", @@ -916,7 +1538,76 @@ "<9,49>": "", "<9,50>": "", "<9,51>": "", - "<9,52>": "" + "<9,52>": "", + "<9,53>": "", + "<9,54>": "", + "<9,55>": "", + "<9,56>": "", + "<9,57>": "", + "<9,58>": "", + "<9,59>": "", + "<9,60>": "", + "<9,61>": "", + "<9,62>": "0", + "<9,63>": { + "<9,63,1>": "", + "<9,63,2>": "", + "<9,63,3>": "", + "<9,63,4>": "", + "<9,63,5>": "", + "<9,63,6>": "", + "<9,63,7>": "", + "<9,63,8>": "" + }, + "<9,64>": { + "<9,64,1>": "", + "<9,64,2>": "", + "<9,64,3>": "" + }, + "<9,65>": "-2", + "<9,66>": "", + "<9,67>": "", + "<9,68>": "", + "<9,69>": "", + "<9,70>": "", + "<9,71>": "", + "<9,72>": "", + "<9,73>": "", + "<9,74>": "", + "<9,75>": "", + "<9,76>": "", + "<9,77>": "", + "<9,78>": "", + "<9,79>": "", + "<9,80>": "", + "<9,81>": "", + "<9,82>": "", + "<9,83>": "", + "<9,84>": "", + "<9,85>": "", + "<9,86>": "", + "<9,87>": "", + "<9,88>": "", + "<9,89>": "", + "<9,90>": "0", + "<9,91>": "0", + "<9,92>": "", + "<9,93>": "", + "<9,94>": "", + "<9,95>": "", + "<9,96>": "", + "<9,97>": "", + "<9,98>": "", + "<9,99>": "", + "<9,100>": "", + "<9,101>": "", + "<9,102>": "", + "<9,103>": "", + "<9,104>": "", + "<9,105>": "", + "<9,106>": "", + "<9,107>": "", + "<9,108>": "" }, "<10>": { "<10,1>": "EDL_TRILAM_SCAN", @@ -929,7 +1620,7 @@ "<10,8>": "51", "<10,9>": "", "<10,10>": { - "<10,10,1>": "0x5E000080", + "<10,10,1>": "0x5E000088", "<10,10,2>": "0x200" }, "<10,11>": { @@ -937,7 +1628,11 @@ "<10,11,2>": "0x80000000" }, "<10,12>": "10", - "<10,13>": "-2", + "<10,13>": { + "<10,13,1>": "-2", + "<10,13,2>": "-2", + "<10,13,3>": "" + }, "<10,14>": "0", "<10,15>": { "<10,15,1>": { @@ -975,34 +1670,39 @@ "<10,18,1,4,8>": "@PARAM6" }, "<10,18,1,5>": "", - "<10,18,1,6>": "" - }, - "<10,18,2>": "" - }, - "<10,19>": { - "<10,19,1>": "LOSTFOCUS", - "<10,19,2>": "" + "<10,18,1,6>": "", + "<10,18,1,7>": "", + "<10,18,1,8>": "", + "<10,18,1,9>": "", + "<10,18,1,10>": "", + "<10,18,1,11>": "", + "<10,18,1,12>": "", + "<10,18,1,13>": "", + "<10,18,1,14>": "", + "<10,18,1,15>": "STPROC" + } }, + "<10,19>": "LOSTFOCUS", "<10,20>": "", "<10,21>": "", "<10,22>": "", "<10,23>": "", "<10,24>": "", - "<10,25>": "0", - "<10,26>": "0", + "<10,25>": "", + "<10,26>": "", "<10,27>": "", "<10,28>": "<>", "<10,29>": "<>", "<10,30>": "<>", "<10,31>": "0", - "<10,32>": { - "<10,32,1>": "0x7fffe", - "<10,32,2>": "0xf0016008" - }, + "<10,32>": "", "<10,33>": "", "<10,34>": "", "<10,35>": "", - "<10,36>": "", + "<10,36>": { + "<10,36,1>": "0", + "<10,36,2>": "0" + }, "<10,37>": "", "<10,38>": "", "<10,39>": "", @@ -1018,7 +1718,63 @@ "<10,49>": "", "<10,50>": "", "<10,51>": "", - "<10,52>": "" + "<10,52>": "", + "<10,53>": "", + "<10,54>": "", + "<10,55>": "", + "<10,56>": "", + "<10,57>": "", + "<10,58>": "", + "<10,59>": "", + "<10,60>": "", + "<10,61>": "", + "<10,62>": "0", + "<10,63>": "", + "<10,64>": "", + "<10,65>": "", + "<10,66>": "", + "<10,67>": "", + "<10,68>": "", + "<10,69>": "", + "<10,70>": "", + "<10,71>": "", + "<10,72>": "", + "<10,73>": "", + "<10,74>": "", + "<10,75>": "", + "<10,76>": "", + "<10,77>": "", + "<10,78>": "", + "<10,79>": "", + "<10,80>": "", + "<10,81>": "", + "<10,82>": "", + "<10,83>": "", + "<10,84>": "", + "<10,85>": "", + "<10,86>": "", + "<10,87>": "", + "<10,88>": "", + "<10,89>": "", + "<10,90>": "", + "<10,91>": "", + "<10,92>": "", + "<10,93>": "", + "<10,94>": "", + "<10,95>": "", + "<10,96>": "", + "<10,97>": "", + "<10,98>": "", + "<10,99>": "", + "<10,100>": "", + "<10,101>": "", + "<10,102>": "", + "<10,103>": "", + "<10,104>": "", + "<10,105>": "", + "<10,106>": "", + "<10,107>": "", + "<10,108>": "" }, "<11>": { "<11,1>": "TXT_PASSWORD_SCAN", @@ -1031,7 +1787,7 @@ "<11,8>": "50", "<11,9>": "Password Scan", "<11,10>": { - "<11,10,1>": "0x56000002", + "<11,10,1>": "0x56000800", "<11,10,2>": "0x0" }, "<11,11>": { @@ -1039,7 +1795,11 @@ "<11,11,2>": "0x80000000" }, "<11,12>": "11", - "<11,13>": "-1", + "<11,13>": { + "<11,13,1>": "-1", + "<11,13,2>": "-1", + "<11,13,3>": "" + }, "<11,14>": "0", "<11,15>": { "<11,15,1>": { @@ -1068,17 +1828,14 @@ "<11,22>": "", "<11,23>": "", "<11,24>": "", - "<11,25>": "0", - "<11,26>": "0", + "<11,25>": "", + "<11,26>": "", "<11,27>": "", - "<11,28>": "<>", - "<11,29>": "<>", - "<11,30>": "<>", - "<11,31>": "0", - "<11,32>": { - "<11,32,1>": "0x7fffe", - "<11,32,2>": "0xf0016808" - }, + "<11,28>": "", + "<11,29>": "", + "<11,30>": "", + "<11,31>": "", + "<11,32>": "", "<11,33>": "", "<11,34>": "", "<11,35>": "", @@ -1098,7 +1855,76 @@ "<11,49>": "", "<11,50>": "", "<11,51>": "", - "<11,52>": "" + "<11,52>": "", + "<11,53>": "", + "<11,54>": "", + "<11,55>": "", + "<11,56>": "", + "<11,57>": "", + "<11,58>": "", + "<11,59>": "", + "<11,60>": "", + "<11,61>": "", + "<11,62>": "0", + "<11,63>": { + "<11,63,1>": "", + "<11,63,2>": "", + "<11,63,3>": "", + "<11,63,4>": "", + "<11,63,5>": "", + "<11,63,6>": "", + "<11,63,7>": "", + "<11,63,8>": "" + }, + "<11,64>": { + "<11,64,1>": "", + "<11,64,2>": "", + "<11,64,3>": "" + }, + "<11,65>": "-2", + "<11,66>": "", + "<11,67>": "", + "<11,68>": "", + "<11,69>": "", + "<11,70>": "", + "<11,71>": "", + "<11,72>": "", + "<11,73>": "", + "<11,74>": "", + "<11,75>": "", + "<11,76>": "", + "<11,77>": "", + "<11,78>": "", + "<11,79>": "", + "<11,80>": "", + "<11,81>": "", + "<11,82>": "", + "<11,83>": "", + "<11,84>": "", + "<11,85>": "", + "<11,86>": "", + "<11,87>": "", + "<11,88>": "", + "<11,89>": "", + "<11,90>": "0", + "<11,91>": "0", + "<11,92>": "", + "<11,93>": "", + "<11,94>": "", + "<11,95>": "", + "<11,96>": "", + "<11,97>": "", + "<11,98>": "", + "<11,99>": "", + "<11,100>": "", + "<11,101>": "", + "<11,102>": "", + "<11,103>": "", + "<11,104>": "", + "<11,105>": "", + "<11,106>": "", + "<11,107>": "", + "<11,108>": "" }, "<12>": { "<12,1>": "EDL_PASSWORD_SCAN", @@ -1111,7 +1937,7 @@ "<12,8>": "51", "<12,9>": "", "<12,10>": { - "<12,10,1>": "0x5E000080", + "<12,10,1>": "0x5E000088", "<12,10,2>": "0x200" }, "<12,11>": { @@ -1119,7 +1945,11 @@ "<12,11,2>": "0x80000100" }, "<12,12>": "12", - "<12,13>": "-2", + "<12,13>": { + "<12,13,1>": "-2", + "<12,13,2>": "-2", + "<12,13,3>": "" + }, "<12,14>": "0", "<12,15>": { "<12,15,1>": { @@ -1157,34 +1987,39 @@ "<12,18,1,4,8>": "@PARAM6" }, "<12,18,1,5>": "", - "<12,18,1,6>": "" - }, - "<12,18,2>": "" - }, - "<12,19>": { - "<12,19,1>": "LOSTFOCUS", - "<12,19,2>": "" + "<12,18,1,6>": "", + "<12,18,1,7>": "", + "<12,18,1,8>": "", + "<12,18,1,9>": "", + "<12,18,1,10>": "", + "<12,18,1,11>": "", + "<12,18,1,12>": "", + "<12,18,1,13>": "", + "<12,18,1,14>": "", + "<12,18,1,15>": "STPROC" + } }, + "<12,19>": "LOSTFOCUS", "<12,20>": "", "<12,21>": "", "<12,22>": "", "<12,23>": "", "<12,24>": "", - "<12,25>": "0", - "<12,26>": "0", + "<12,25>": "", + "<12,26>": "", "<12,27>": "", "<12,28>": "<>", "<12,29>": "<>", "<12,30>": "<>", "<12,31>": "0", - "<12,32>": { - "<12,32,1>": "0x7fffe", - "<12,32,2>": "0xf0016008" - }, + "<12,32>": "", "<12,33>": "", "<12,34>": "", "<12,35>": "", - "<12,36>": "", + "<12,36>": { + "<12,36,1>": "-1", + "<12,36,2>": "0" + }, "<12,37>": "", "<12,38>": "", "<12,39>": "", @@ -1200,7 +2035,63 @@ "<12,49>": "", "<12,50>": "", "<12,51>": "", - "<12,52>": "" + "<12,52>": "", + "<12,53>": "", + "<12,54>": "", + "<12,55>": "", + "<12,56>": "", + "<12,57>": "", + "<12,58>": "", + "<12,59>": "", + "<12,60>": "", + "<12,61>": "", + "<12,62>": "0", + "<12,63>": "", + "<12,64>": "", + "<12,65>": "", + "<12,66>": "", + "<12,67>": "", + "<12,68>": "", + "<12,69>": "", + "<12,70>": "", + "<12,71>": "", + "<12,72>": "", + "<12,73>": "", + "<12,74>": "", + "<12,75>": "", + "<12,76>": "", + "<12,77>": "", + "<12,78>": "", + "<12,79>": "", + "<12,80>": "", + "<12,81>": "", + "<12,82>": "", + "<12,83>": "", + "<12,84>": "", + "<12,85>": "", + "<12,86>": "", + "<12,87>": "", + "<12,88>": "", + "<12,89>": "", + "<12,90>": "", + "<12,91>": "", + "<12,92>": "", + "<12,93>": "", + "<12,94>": "", + "<12,95>": "", + "<12,96>": "", + "<12,97>": "", + "<12,98>": "", + "<12,99>": "", + "<12,100>": "", + "<12,101>": "", + "<12,102>": "", + "<12,103>": "", + "<12,104>": "", + "<12,105>": "", + "<12,106>": "", + "<12,107>": "", + "<12,108>": "" }, "<13>": { "<13,1>": "OLE_SUBCLASS", @@ -1221,7 +2112,11 @@ "<13,11,2>": "0x80000000" }, "<13,12>": "13", - "<13,13>": "-2", + "<13,13>": { + "<13,13,1>": "-2", + "<13,13,2>": "-2", + "<13,13,3>": "" + }, "<13,14>": "0", "<13,15>": { "<13,15,1>": { @@ -1250,22 +2145,90 @@ "<13,22>": "", "<13,23>": "", "<13,24>": "", - "<13,25>": "0", - "<13,26>": "0", + "<13,25>": "", + "<13,26>": "", "<13,27>": "", - "<13,28>": "<>", - "<13,29>": "<>", - "<13,30>": "<>", - "<13,31>": "0", - "<13,32>": { - "<13,32,1>": "0x7fffe", - "<13,32,2>": "0xf0016800" - }, + "<13,28>": "", + "<13,29>": "", + "<13,30>": "", + "<13,31>": "", + "<13,32>": "", "<13,33>": "", "<13,34>": "", "<13,35>": "", "<13,36>": "", - "<13,37>": "" + "<13,37>": "", + "<13,38>": "", + "<13,39>": "", + "<13,40>": "", + "<13,41>": "", + "<13,42>": "", + "<13,43>": "", + "<13,44>": "", + "<13,45>": "", + "<13,46>": "", + "<13,47>": "", + "<13,48>": "", + "<13,49>": "", + "<13,50>": "", + "<13,51>": "", + "<13,52>": "", + "<13,53>": "", + "<13,54>": "", + "<13,55>": "OLE.Border", + "<13,56>": "None", + "<13,57>": "", + "<13,58>": "", + "<13,59>": "", + "<13,60>": "", + "<13,61>": "", + "<13,62>": "", + "<13,63>": "", + "<13,64>": "", + "<13,65>": "", + "<13,66>": "", + "<13,67>": "", + "<13,68>": "", + "<13,69>": "", + "<13,70>": "", + "<13,71>": "", + "<13,72>": "", + "<13,73>": "", + "<13,74>": "", + "<13,75>": "", + "<13,76>": "", + "<13,77>": "", + "<13,78>": "", + "<13,79>": "", + "<13,80>": "", + "<13,81>": "", + "<13,82>": "", + "<13,83>": "", + "<13,84>": "", + "<13,85>": "", + "<13,86>": "", + "<13,87>": "", + "<13,88>": "", + "<13,89>": "", + "<13,90>": "", + "<13,91>": "", + "<13,92>": "", + "<13,93>": "", + "<13,94>": "", + "<13,95>": "", + "<13,96>": "", + "<13,97>": "", + "<13,98>": "", + "<13,99>": "", + "<13,100>": "", + "<13,101>": "", + "<13,102>": "", + "<13,103>": "", + "<13,104>": "", + "<13,105>": "", + "<13,106>": "", + "<13,107>": "", + "<13,108>": "" }, "<14>": { "<14,1>": "OLE_POPUP", @@ -1286,7 +2249,11 @@ "<14,11,2>": "0x80000000" }, "<14,12>": "14", - "<14,13>": "-2", + "<14,13>": { + "<14,13,1>": "-2", + "<14,13,2>": "-2", + "<14,13,3>": "" + }, "<14,14>": "0", "<14,15>": { "<14,15,1>": { @@ -1315,22 +2282,90 @@ "<14,22>": "", "<14,23>": "", "<14,24>": "", - "<14,25>": "0", - "<14,26>": "0", + "<14,25>": "", + "<14,26>": "", "<14,27>": "", - "<14,28>": "<>", - "<14,29>": "<>", - "<14,30>": "<>", - "<14,31>": "0", - "<14,32>": { - "<14,32,1>": "0x7fffe", - "<14,32,2>": "0xf0016800" - }, + "<14,28>": "", + "<14,29>": "", + "<14,30>": "", + "<14,31>": "", + "<14,32>": "", "<14,33>": "", "<14,34>": "", "<14,35>": "", "<14,36>": "", - "<14,37>": "" + "<14,37>": "", + "<14,38>": "", + "<14,39>": "", + "<14,40>": "", + "<14,41>": "", + "<14,42>": "", + "<14,43>": "", + "<14,44>": "", + "<14,45>": "", + "<14,46>": "", + "<14,47>": "", + "<14,48>": "", + "<14,49>": "", + "<14,50>": "", + "<14,51>": "", + "<14,52>": "", + "<14,53>": "", + "<14,54>": "", + "<14,55>": "OLE.Border", + "<14,56>": "None", + "<14,57>": "", + "<14,58>": "", + "<14,59>": "", + "<14,60>": "", + "<14,61>": "", + "<14,62>": "", + "<14,63>": "", + "<14,64>": "", + "<14,65>": "", + "<14,66>": "", + "<14,67>": "", + "<14,68>": "", + "<14,69>": "", + "<14,70>": "", + "<14,71>": "", + "<14,72>": "", + "<14,73>": "", + "<14,74>": "", + "<14,75>": "", + "<14,76>": "", + "<14,77>": "", + "<14,78>": "", + "<14,79>": "", + "<14,80>": "", + "<14,81>": "", + "<14,82>": "", + "<14,83>": "", + "<14,84>": "", + "<14,85>": "", + "<14,86>": "", + "<14,87>": "", + "<14,88>": "", + "<14,89>": "", + "<14,90>": "", + "<14,91>": "", + "<14,92>": "", + "<14,93>": "", + "<14,94>": "", + "<14,95>": "", + "<14,96>": "", + "<14,97>": "", + "<14,98>": "", + "<14,99>": "", + "<14,100>": "", + "<14,101>": "", + "<14,102>": "", + "<14,103>": "", + "<14,104>": "", + "<14,105>": "", + "<14,106>": "", + "<14,107>": "", + "<14,108>": "" }, "<15>": { "<15,1>": "LBL_PACKAGING", @@ -1343,7 +2378,7 @@ "<15,8>": "65", "<15,9>": "Packaging", "<15,10>": { - "<15,10,1>": "0x56000001", + "<15,10,1>": "0x56000020", "<15,10,2>": "0x0" }, "<15,11>": { @@ -1351,7 +2386,11 @@ "<15,11,2>": "0x80000000" }, "<15,12>": "15", - "<15,13>": "-1", + "<15,13>": { + "<15,13,1>": "-1", + "<15,13,2>": "-1", + "<15,13,3>": "" + }, "<15,14>": "8388608", "<15,15>": { "<15,15,1>": { @@ -1380,17 +2419,14 @@ "<15,22>": "", "<15,23>": "", "<15,24>": "", - "<15,25>": "0", - "<15,26>": "0", + "<15,25>": "", + "<15,26>": "", "<15,27>": "", - "<15,28>": "<>", - "<15,29>": "<>", - "<15,30>": "<>", - "<15,31>": "0", - "<15,32>": { - "<15,32,1>": "0x7fffe", - "<15,32,2>": "0xf0012808" - }, + "<15,28>": "", + "<15,29>": "", + "<15,30>": "", + "<15,31>": "", + "<15,32>": "", "<15,33>": "", "<15,34>": "", "<15,35>": "", @@ -1410,7 +2446,76 @@ "<15,49>": "", "<15,50>": "", "<15,51>": "", - "<15,52>": "" + "<15,52>": "", + "<15,53>": "", + "<15,54>": "", + "<15,55>": "", + "<15,56>": "", + "<15,57>": "", + "<15,58>": "", + "<15,59>": "", + "<15,60>": "", + "<15,61>": "", + "<15,62>": "0", + "<15,63>": { + "<15,63,1>": "", + "<15,63,2>": "", + "<15,63,3>": "", + "<15,63,4>": "", + "<15,63,5>": "", + "<15,63,6>": "", + "<15,63,7>": "", + "<15,63,8>": "" + }, + "<15,64>": { + "<15,64,1>": "", + "<15,64,2>": "", + "<15,64,3>": "" + }, + "<15,65>": "-2", + "<15,66>": "", + "<15,67>": "", + "<15,68>": "", + "<15,69>": "", + "<15,70>": "", + "<15,71>": "", + "<15,72>": "", + "<15,73>": "", + "<15,74>": "", + "<15,75>": "", + "<15,76>": "", + "<15,77>": "", + "<15,78>": "", + "<15,79>": "", + "<15,80>": "", + "<15,81>": "", + "<15,82>": "", + "<15,83>": "", + "<15,84>": "", + "<15,85>": "", + "<15,86>": "", + "<15,87>": "", + "<15,88>": "", + "<15,89>": "", + "<15,90>": "0", + "<15,91>": "0", + "<15,92>": "", + "<15,93>": "", + "<15,94>": "", + "<15,95>": "", + "<15,96>": "", + "<15,97>": "", + "<15,98>": "", + "<15,99>": "", + "<15,100>": "", + "<15,101>": "", + "<15,102>": "", + "<15,103>": "", + "<15,104>": "", + "<15,105>": "", + "<15,106>": "", + "<15,107>": "", + "<15,108>": "" }, "<16>": { "<16,1>": "PUB_CLEAR_FORM", @@ -1423,15 +2528,19 @@ "<16,8>": "1", "<16,9>": "Clear Form", "<16,10>": { - "<16,10,1>": "0x56002000", + "<16,10,1>": "0x56002300", "<16,10,2>": "0x0" }, "<16,11>": { - "<16,11,1>": "0x100", + "<16,11,1>": "0x0", "<16,11,2>": "0x80000000" }, "<16,12>": "16", - "<16,13>": "-2", + "<16,13>": { + "<16,13,1>": "-2", + "<16,13,2>": "-2", + "<16,13,3>": "0" + }, "<16,14>": "-2", "<16,15>": { "<16,15,1>": { @@ -1469,30 +2578,32 @@ "<16,18,1,4,8>": "@PARAM6" }, "<16,18,1,5>": "", - "<16,18,1,6>": "" - }, - "<16,18,2>": "" - }, - "<16,19>": { - "<16,19,1>": "CLICK", - "<16,19,2>": "" + "<16,18,1,6>": "", + "<16,18,1,7>": "", + "<16,18,1,8>": "", + "<16,18,1,9>": "", + "<16,18,1,10>": "", + "<16,18,1,11>": "", + "<16,18,1,12>": "", + "<16,18,1,13>": "", + "<16,18,1,14>": "", + "<16,18,1,15>": "STPROC" + } }, + "<16,19>": "CLICK", "<16,20>": "", "<16,21>": "", "<16,22>": "", "<16,23>": "", "<16,24>": "", - "<16,25>": "0", - "<16,26>": "0", + "<16,25>": "", + "<16,26>": "", "<16,27>": "", - "<16,28>": "<>", - "<16,29>": "<>", - "<16,30>": "<>", - "<16,31>": "0", - "<16,32>": { - "<16,32,1>": "0x7fffe", - "<16,32,2>": "0xf0012008" - }, + "<16,28>": "", + "<16,29>": "", + "<16,30>": "", + "<16,31>": "", + "<16,32>": "", "<16,33>": "", "<16,34>": "", "<16,35>": "", @@ -1501,7 +2612,10 @@ "<16,38>": "", "<16,39>": "", "<16,40>": "1", - "<16,41>": "", + "<16,41>": { + "<16,41,1>": "", + "<16,41,2>": "-1" + }, "<16,42>": "", "<16,43>": "", "<16,44>": "", @@ -1511,7 +2625,68 @@ "<16,48>": "", "<16,49>": "", "<16,50>": "", - "<16,51>": "" + "<16,51>": "", + "<16,52>": "", + "<16,53>": "", + "<16,54>": "", + "<16,55>": "", + "<16,56>": "", + "<16,57>": "", + "<16,58>": "", + "<16,59>": "", + "<16,60>": "", + "<16,61>": "", + "<16,62>": "0", + "<16,63>": "", + "<16,64>": { + "<16,64,1>": "-2", + "<16,64,2>": "-2", + "<16,64,3>": "0" + }, + "<16,65>": "-2", + "<16,66>": "", + "<16,67>": "", + "<16,68>": "", + "<16,69>": "", + "<16,70>": "", + "<16,71>": "", + "<16,72>": "", + "<16,73>": "", + "<16,74>": "", + "<16,75>": "", + "<16,76>": "", + "<16,77>": "", + "<16,78>": "", + "<16,79>": "", + "<16,80>": "", + "<16,81>": "", + "<16,82>": "", + "<16,83>": "", + "<16,84>": "", + "<16,85>": "", + "<16,86>": "", + "<16,87>": "", + "<16,88>": "", + "<16,89>": "", + "<16,90>": "0", + "<16,91>": "0", + "<16,92>": "", + "<16,93>": "", + "<16,94>": "", + "<16,95>": "", + "<16,96>": "", + "<16,97>": "", + "<16,98>": "", + "<16,99>": "", + "<16,100>": "", + "<16,101>": "", + "<16,102>": "", + "<16,103>": "", + "<16,104>": "", + "<16,105>": "", + "<16,106>": "", + "<16,107>": "", + "<16,108>": "" }, "<17>": { "<17,1>": "EDL_SEQUENCE1", @@ -1532,7 +2707,11 @@ "<17,11,2>": "0x80000000" }, "<17,12>": "17", - "<17,13>": "-2", + "<17,13>": { + "<17,13,1>": "-2", + "<17,13,2>": "-2", + "<17,13,3>": "" + }, "<17,14>": "0", "<17,15>": { "<17,15,1>": { @@ -1570,34 +2749,39 @@ "<17,18,1,4,8>": "@PARAM6" }, "<17,18,1,5>": "", - "<17,18,1,6>": "" - }, - "<17,18,2>": "" - }, - "<17,19>": { - "<17,19,1>": "LOSTFOCUS", - "<17,19,2>": "" + "<17,18,1,6>": "", + "<17,18,1,7>": "", + "<17,18,1,8>": "", + "<17,18,1,9>": "", + "<17,18,1,10>": "", + "<17,18,1,11>": "", + "<17,18,1,12>": "", + "<17,18,1,13>": "", + "<17,18,1,14>": "", + "<17,18,1,15>": "STPROC" + } }, + "<17,19>": "LOSTFOCUS", "<17,20>": "", "<17,21>": "", "<17,22>": "", "<17,23>": "", "<17,24>": "", - "<17,25>": "0", - "<17,26>": "0", + "<17,25>": "", + "<17,26>": "", "<17,27>": "", "<17,28>": "<>", "<17,29>": "<>", "<17,30>": "<>", "<17,31>": "0", - "<17,32>": { - "<17,32,1>": "0x7fffe", - "<17,32,2>": "0xf0016008" - }, + "<17,32>": "", "<17,33>": "", "<17,34>": "", "<17,35>": "", - "<17,36>": "", + "<17,36>": { + "<17,36,1>": "0", + "<17,36,2>": "0" + }, "<17,37>": "", "<17,38>": "", "<17,39>": "", @@ -1613,18 +2797,67 @@ "<17,49>": "", "<17,50>": "", "<17,51>": "", - "<17,52>": "" - }, - "<18>": "" + "<17,52>": "", + "<17,53>": "", + "<17,54>": "", + "<17,55>": "", + "<17,56>": "", + "<17,57>": "", + "<17,58>": "", + "<17,59>": "", + "<17,60>": "", + "<17,61>": "", + "<17,62>": "0", + "<17,63>": "", + "<17,64>": "", + "<17,65>": "", + "<17,66>": "", + "<17,67>": "", + "<17,68>": "", + "<17,69>": "", + "<17,70>": "", + "<17,71>": "", + "<17,72>": "", + "<17,73>": "", + "<17,74>": "", + "<17,75>": "", + "<17,76>": "", + "<17,77>": "", + "<17,78>": "", + "<17,79>": "", + "<17,80>": "", + "<17,81>": "", + "<17,82>": "", + "<17,83>": "", + "<17,84>": "", + "<17,85>": "", + "<17,86>": "", + "<17,87>": "", + "<17,88>": "", + "<17,89>": "", + "<17,90>": "", + "<17,91>": "", + "<17,92>": "", + "<17,93>": "", + "<17,94>": "", + "<17,95>": "", + "<17,96>": "", + "<17,97>": "", + "<17,98>": "", + "<17,99>": "", + "<17,100>": "", + "<17,101>": "", + "<17,102>": "", + "<17,103>": "", + "<17,104>": "", + "<17,105>": "", + "<17,106>": "", + "<17,107>": "", + "<17,108>": "" + } }, "record4": { - "<1>": "", - "<2>": { - "<2,1>": "", - "<2,2>": "", - "<2,3>": "", - "<2,4>": "0" - } + "<1>": "" } } } \ No newline at end of file diff --git a/LSL2/OIWIN/NDW_PTI_MAT_SCAN.json b/LSL2/OIWIN/NDW_PTI_MAT_SCAN.json index 5fd535b..1366cc1 100644 --- a/LSL2/OIWIN/NDW_PTI_MAT_SCAN.json +++ b/LSL2/OIWIN/NDW_PTI_MAT_SCAN.json @@ -21,16 +21,20 @@ "<1,8>": "-764", "<1,9>": "PTI Material Scan", "<1,10>": { - "<1,10,1>": "0x82CF0000", - "<1,10,2>": "0x0" + "<1,10,1>": "0x82CE0000", + "<1,10,2>": "0x100" }, "<1,11>": { - "<1,11,1>": "0x0", + "<1,11,1>": "0x8000", "<1,11,2>": "0x80000000" }, - "<1,12>": "0", - "<1,13>": "-2", - "<1,14>": "0", + "<1,12>": "", + "<1,13>": { + "<1,13,1>": "-2", + "<1,13,2>": "-2", + "<1,13,3>": "" + }, + "<1,14>": "", "<1,15>": "", "<1,16>": "", "<1,17>": "", @@ -50,51 +54,61 @@ "<1,18,1,4,8>": "@PARAM6" }, "<1,18,1,5>": "", - "<1,18,1,6>": "" - }, - "<1,18,2>": "" - }, - "<1,19>": { - "<1,19,1>": "CREATE", - "<1,19,2>": "" + "<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>": "STPROC" + } }, + "<1,19>": "CREATE", "<1,20>": "", "<1,21>": "", "<1,22>": "", "<1,23>": "", "<1,24>": { - "<1,24,1>": "0", + "<1,24,1>": "", "<1,24,2>": "0", "<1,24,3>": "0", "<1,24,4>": "0", - "<1,24,5>": "0", - "<1,24,6>": "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>": "0", - "<1,26>": "0", + "<1,25>": "", + "<1,26>": "", "<1,27>": "", "<1,28>": "", "<1,29>": "", "<1,30>": "", "<1,31>": "", - "<1,32>": { - "<1,32,1>": "0x7FFFE", - "<1,32,2>": "0xF001E808" - }, + "<1,32>": "", "<1,33>": "", - "<1,34>": "", + "<1,34>": "LSL2*IMAGE*ICO*INFINEON", "<1,35>": "", "<1,36>": "", "<1,37>": { - "<1,37,1>": "0x10001", - "<1,37,2>": "0x10001" - }, - "<1,38>": { - "<1,38,1>": "1", - "<1,38,2>": "1" + "<1,37,1>": "0X10001", + "<1,37,2>": "0X10001" }, + "<1,38>": "", "<1,39>": "", - "<1,40>": "0", + "<1,40>": "", "<1,41>": "", "<1,42>": "", "<1,43>": "", @@ -106,7 +120,74 @@ "<1,49>": "", "<1,50>": "", "<1,51>": "", - "<1,52>": "" + "<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>": "0", + "<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": { @@ -121,7 +202,7 @@ "<1,8>": "28", "<1,9>": "", "<1,10>": { - "<1,10,1>": "0x5E000080", + "<1,10,1>": "0x5E000088", "<1,10,2>": "0x200" }, "<1,11>": { @@ -129,7 +210,11 @@ "<1,11,2>": "0x80000000" }, "<1,12>": "1", - "<1,13>": "-2", + "<1,13>": { + "<1,13,1>": "-2", + "<1,13,2>": "-2", + "<1,13,3>": "" + }, "<1,14>": "0", "<1,15>": { "<1,15,1>": { @@ -167,34 +252,39 @@ "<1,18,1,4,8>": "@PARAM6" }, "<1,18,1,5>": "", - "<1,18,1,6>": "" - }, - "<1,18,2>": "" - }, - "<1,19>": { - "<1,19,1>": "LOSTFOCUS", - "<1,19,2>": "" + "<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>": "STPROC" + } }, + "<1,19>": "LOSTFOCUS", "<1,20>": "", "<1,21>": "", "<1,22>": "", "<1,23>": "", "<1,24>": "", - "<1,25>": "0", - "<1,26>": "0", + "<1,25>": "", + "<1,26>": "", "<1,27>": "", "<1,28>": "<>", "<1,29>": "<>", "<1,30>": "<>", "<1,31>": "0", - "<1,32>": { - "<1,32,1>": "0x7fffe", - "<1,32,2>": "0xf0016008" - }, + "<1,32>": "", "<1,33>": "", "<1,34>": "", "<1,35>": "", - "<1,36>": "", + "<1,36>": { + "<1,36,1>": "0", + "<1,36,2>": "0" + }, "<1,37>": "", "<1,38>": "", "<1,39>": "", @@ -210,7 +300,63 @@ "<1,49>": "", "<1,50>": "", "<1,51>": "", - "<1,52>": "" + "<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>": "EDL_CASSETTE2_SCAN", @@ -223,7 +369,7 @@ "<2,8>": "28", "<2,9>": "", "<2,10>": { - "<2,10,1>": "0x5E000080", + "<2,10,1>": "0x5E000088", "<2,10,2>": "0x200" }, "<2,11>": { @@ -231,7 +377,11 @@ "<2,11,2>": "0x80000000" }, "<2,12>": "2", - "<2,13>": "-2", + "<2,13>": { + "<2,13,1>": "-2", + "<2,13,2>": "-2", + "<2,13,3>": "" + }, "<2,14>": "0", "<2,15>": { "<2,15,1>": { @@ -269,34 +419,39 @@ "<2,18,1,4,8>": "@PARAM6" }, "<2,18,1,5>": "", - "<2,18,1,6>": "" - }, - "<2,18,2>": "" - }, - "<2,19>": { - "<2,19,1>": "LOSTFOCUS", - "<2,19,2>": "" + "<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>": "STPROC" + } }, + "<2,19>": "LOSTFOCUS", "<2,20>": "", "<2,21>": "", "<2,22>": "", "<2,23>": "", "<2,24>": "", - "<2,25>": "0", - "<2,26>": "0", + "<2,25>": "", + "<2,26>": "", "<2,27>": "", "<2,28>": "<>", "<2,29>": "<>", "<2,30>": "<>", "<2,31>": "0", - "<2,32>": { - "<2,32,1>": "0x7fffe", - "<2,32,2>": "0xf0016008" - }, + "<2,32>": "", "<2,33>": "", "<2,34>": "", "<2,35>": "", - "<2,36>": "", + "<2,36>": { + "<2,36,1>": "0", + "<2,36,2>": "0" + }, "<2,37>": "", "<2,38>": "", "<2,39>": "", @@ -312,7 +467,63 @@ "<2,49>": "", "<2,50>": "", "<2,51>": "", - "<2,52>": "" + "<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,65>": "", + "<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>": "", + "<2,91>": "", + "<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>": "EDL_SUPPLIER_SCAN", @@ -325,7 +536,7 @@ "<3,8>": "28", "<3,9>": "", "<3,10>": { - "<3,10,1>": "0x5E000080", + "<3,10,1>": "0x5E000088", "<3,10,2>": "0x200" }, "<3,11>": { @@ -333,7 +544,11 @@ "<3,11,2>": "0x80000000" }, "<3,12>": "3", - "<3,13>": "-2", + "<3,13>": { + "<3,13,1>": "-2", + "<3,13,2>": "-2", + "<3,13,3>": "" + }, "<3,14>": "0", "<3,15>": { "<3,15,1>": { @@ -371,34 +586,39 @@ "<3,18,1,4,8>": "@PARAM6" }, "<3,18,1,5>": "", - "<3,18,1,6>": "" - }, - "<3,18,2>": "" - }, - "<3,19>": { - "<3,19,1>": "LOSTFOCUS", - "<3,19,2>": "" + "<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>": "STPROC" + } }, + "<3,19>": "LOSTFOCUS", "<3,20>": "", "<3,21>": "", "<3,22>": "", "<3,23>": "", "<3,24>": "", - "<3,25>": "0", - "<3,26>": "0", + "<3,25>": "", + "<3,26>": "", "<3,27>": "", "<3,28>": "<>", "<3,29>": "<>", "<3,30>": "<>", "<3,31>": "0", - "<3,32>": { - "<3,32,1>": "0x7fffe", - "<3,32,2>": "0xf0016008" - }, + "<3,32>": "", "<3,33>": "", "<3,34>": "", "<3,35>": "", - "<3,36>": "", + "<3,36>": { + "<3,36,1>": "0", + "<3,36,2>": "0" + }, "<3,37>": "", "<3,38>": "", "<3,39>": "", @@ -414,7 +634,63 @@ "<3,49>": "", "<3,50>": "", "<3,51>": "", - "<3,52>": "" + "<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,65>": "", + "<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>": "", + "<3,91>": "", + "<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>": "" }, "<4>": { "<4,1>": "WINDOW_LABEL", @@ -427,7 +703,7 @@ "<4,8>": "30", "<4,9>": "PTI Material Scan", "<4,10>": { - "<4,10,1>": "0x56000001", + "<4,10,1>": "0x56000020", "<4,10,2>": "0x0" }, "<4,11>": { @@ -435,7 +711,11 @@ "<4,11,2>": "0x80000000" }, "<4,12>": "4", - "<4,13>": "-1", + "<4,13>": { + "<4,13,1>": "-1", + "<4,13,2>": "-1", + "<4,13,3>": "" + }, "<4,14>": "8388608", "<4,15>": { "<4,15,1>": { @@ -464,17 +744,14 @@ "<4,22>": "", "<4,23>": "", "<4,24>": "", - "<4,25>": "0", - "<4,26>": "0", + "<4,25>": "", + "<4,26>": "", "<4,27>": "", - "<4,28>": "<>", - "<4,29>": "<>", - "<4,30>": "<>", - "<4,31>": "0", - "<4,32>": { - "<4,32,1>": "0x7fffe", - "<4,32,2>": "0xf0012808" - }, + "<4,28>": "", + "<4,29>": "", + "<4,30>": "", + "<4,31>": "", + "<4,32>": "", "<4,33>": "", "<4,34>": "", "<4,35>": "", @@ -494,7 +771,76 @@ "<4,49>": "", "<4,50>": "", "<4,51>": "", - "<4,52>": "" + "<4,52>": "", + "<4,53>": "", + "<4,54>": "", + "<4,55>": "", + "<4,56>": "", + "<4,57>": "", + "<4,58>": "", + "<4,59>": "", + "<4,60>": "", + "<4,61>": "", + "<4,62>": "0", + "<4,63>": { + "<4,63,1>": "", + "<4,63,2>": "", + "<4,63,3>": "", + "<4,63,4>": "", + "<4,63,5>": "", + "<4,63,6>": "", + "<4,63,7>": "", + "<4,63,8>": "" + }, + "<4,64>": { + "<4,64,1>": "", + "<4,64,2>": "", + "<4,64,3>": "" + }, + "<4,65>": "-2", + "<4,66>": "", + "<4,67>": "", + "<4,68>": "", + "<4,69>": "", + "<4,70>": "", + "<4,71>": "", + "<4,72>": "", + "<4,73>": "", + "<4,74>": "", + "<4,75>": "", + "<4,76>": "", + "<4,77>": "", + "<4,78>": "", + "<4,79>": "", + "<4,80>": "", + "<4,81>": "", + "<4,82>": "", + "<4,83>": "", + "<4,84>": "", + "<4,85>": "", + "<4,86>": "", + "<4,87>": "", + "<4,88>": "", + "<4,89>": "", + "<4,90>": "0", + "<4,91>": "0", + "<4,92>": "", + "<4,93>": "", + "<4,94>": "", + "<4,95>": "", + "<4,96>": "", + "<4,97>": "", + "<4,98>": "", + "<4,99>": "", + "<4,100>": "", + "<4,101>": "", + "<4,102>": "", + "<4,103>": "", + "<4,104>": "", + "<4,105>": "", + "<4,106>": "", + "<4,107>": "", + "<4,108>": "" }, "<5>": { "<5,1>": "TXT_TOPLABEL", @@ -507,7 +853,7 @@ "<5,8>": "28", "<5,9>": "Top Label:", "<5,10>": { - "<5,10,1>": "0x56000002", + "<5,10,1>": "0x56000800", "<5,10,2>": "0x0" }, "<5,11>": { @@ -515,7 +861,11 @@ "<5,11,2>": "0x80000000" }, "<5,12>": "5", - "<5,13>": "-1", + "<5,13>": { + "<5,13,1>": "-1", + "<5,13,2>": "-1", + "<5,13,3>": "" + }, "<5,14>": "0", "<5,15>": { "<5,15,1>": { @@ -544,17 +894,14 @@ "<5,22>": "", "<5,23>": "", "<5,24>": "", - "<5,25>": "0", - "<5,26>": "0", + "<5,25>": "", + "<5,26>": "", "<5,27>": "", - "<5,28>": "<>", - "<5,29>": "<>", - "<5,30>": "<>", - "<5,31>": "0", - "<5,32>": { - "<5,32,1>": "0x7fffe", - "<5,32,2>": "0xf0016808" - }, + "<5,28>": "", + "<5,29>": "", + "<5,30>": "", + "<5,31>": "", + "<5,32>": "", "<5,33>": "", "<5,34>": "", "<5,35>": "", @@ -574,7 +921,76 @@ "<5,49>": "", "<5,50>": "", "<5,51>": "", - "<5,52>": "" + "<5,52>": "", + "<5,53>": "", + "<5,54>": "", + "<5,55>": "", + "<5,56>": "", + "<5,57>": "", + "<5,58>": "", + "<5,59>": "", + "<5,60>": "", + "<5,61>": "", + "<5,62>": "0", + "<5,63>": { + "<5,63,1>": "", + "<5,63,2>": "", + "<5,63,3>": "", + "<5,63,4>": "", + "<5,63,5>": "", + "<5,63,6>": "", + "<5,63,7>": "", + "<5,63,8>": "" + }, + "<5,64>": { + "<5,64,1>": "", + "<5,64,2>": "", + "<5,64,3>": "" + }, + "<5,65>": "-2", + "<5,66>": "", + "<5,67>": "", + "<5,68>": "", + "<5,69>": "", + "<5,70>": "", + "<5,71>": "", + "<5,72>": "", + "<5,73>": "", + "<5,74>": "", + "<5,75>": "", + "<5,76>": "", + "<5,77>": "", + "<5,78>": "", + "<5,79>": "", + "<5,80>": "", + "<5,81>": "", + "<5,82>": "", + "<5,83>": "", + "<5,84>": "", + "<5,85>": "", + "<5,86>": "", + "<5,87>": "", + "<5,88>": "", + "<5,89>": "", + "<5,90>": "0", + "<5,91>": "0", + "<5,92>": "", + "<5,93>": "", + "<5,94>": "", + "<5,95>": "", + "<5,96>": "", + "<5,97>": "", + "<5,98>": "", + "<5,99>": "", + "<5,100>": "", + "<5,101>": "", + "<5,102>": "", + "<5,103>": "", + "<5,104>": "", + "<5,105>": "", + "<5,106>": "", + "<5,107>": "", + "<5,108>": "" }, "<6>": { "<6,1>": "TXT_BOTTOMLABEL", @@ -587,7 +1003,7 @@ "<6,8>": "28", "<6,9>": "Bottom Label:", "<6,10>": { - "<6,10,1>": "0x56000002", + "<6,10,1>": "0x56000800", "<6,10,2>": "0x0" }, "<6,11>": { @@ -595,7 +1011,11 @@ "<6,11,2>": "0x80000000" }, "<6,12>": "6", - "<6,13>": "-1", + "<6,13>": { + "<6,13,1>": "-1", + "<6,13,2>": "-1", + "<6,13,3>": "" + }, "<6,14>": "0", "<6,15>": { "<6,15,1>": { @@ -624,17 +1044,14 @@ "<6,22>": "", "<6,23>": "", "<6,24>": "", - "<6,25>": "0", - "<6,26>": "0", + "<6,25>": "", + "<6,26>": "", "<6,27>": "", - "<6,28>": "<>", - "<6,29>": "<>", - "<6,30>": "<>", - "<6,31>": "0", - "<6,32>": { - "<6,32,1>": "0x7fffe", - "<6,32,2>": "0xf0016808" - }, + "<6,28>": "", + "<6,29>": "", + "<6,30>": "", + "<6,31>": "", + "<6,32>": "", "<6,33>": "", "<6,34>": "", "<6,35>": "", @@ -654,7 +1071,76 @@ "<6,49>": "", "<6,50>": "", "<6,51>": "", - "<6,52>": "" + "<6,52>": "", + "<6,53>": "", + "<6,54>": "", + "<6,55>": "", + "<6,56>": "", + "<6,57>": "", + "<6,58>": "", + "<6,59>": "", + "<6,60>": "", + "<6,61>": "", + "<6,62>": "0", + "<6,63>": { + "<6,63,1>": "", + "<6,63,2>": "", + "<6,63,3>": "", + "<6,63,4>": "", + "<6,63,5>": "", + "<6,63,6>": "", + "<6,63,7>": "", + "<6,63,8>": "" + }, + "<6,64>": { + "<6,64,1>": "", + "<6,64,2>": "", + "<6,64,3>": "" + }, + "<6,65>": "-2", + "<6,66>": "", + "<6,67>": "", + "<6,68>": "", + "<6,69>": "", + "<6,70>": "", + "<6,71>": "", + "<6,72>": "", + "<6,73>": "", + "<6,74>": "", + "<6,75>": "", + "<6,76>": "", + "<6,77>": "", + "<6,78>": "", + "<6,79>": "", + "<6,80>": "", + "<6,81>": "", + "<6,82>": "", + "<6,83>": "", + "<6,84>": "", + "<6,85>": "", + "<6,86>": "", + "<6,87>": "", + "<6,88>": "", + "<6,89>": "", + "<6,90>": "0", + "<6,91>": "0", + "<6,92>": "", + "<6,93>": "", + "<6,94>": "", + "<6,95>": "", + "<6,96>": "", + "<6,97>": "", + "<6,98>": "", + "<6,99>": "", + "<6,100>": "", + "<6,101>": "", + "<6,102>": "", + "<6,103>": "", + "<6,104>": "", + "<6,105>": "", + "<6,106>": "", + "<6,107>": "", + "<6,108>": "" }, "<7>": { "<7,1>": "TXT_SUBLOT", @@ -667,7 +1153,7 @@ "<7,8>": "28", "<7,9>": "Sub Lot:", "<7,10>": { - "<7,10,1>": "0x56000002", + "<7,10,1>": "0x56000800", "<7,10,2>": "0x0" }, "<7,11>": { @@ -675,7 +1161,11 @@ "<7,11,2>": "0x80000000" }, "<7,12>": "7", - "<7,13>": "-1", + "<7,13>": { + "<7,13,1>": "-1", + "<7,13,2>": "-1", + "<7,13,3>": "" + }, "<7,14>": "0", "<7,15>": { "<7,15,1>": { @@ -704,17 +1194,14 @@ "<7,22>": "", "<7,23>": "", "<7,24>": "", - "<7,25>": "0", - "<7,26>": "0", + "<7,25>": "", + "<7,26>": "", "<7,27>": "", - "<7,28>": "<>", - "<7,29>": "<>", - "<7,30>": "<>", - "<7,31>": "0", - "<7,32>": { - "<7,32,1>": "0x7fffe", - "<7,32,2>": "0xf0016808" - }, + "<7,28>": "", + "<7,29>": "", + "<7,30>": "", + "<7,31>": "", + "<7,32>": "", "<7,33>": "", "<7,34>": "", "<7,35>": "", @@ -734,7 +1221,76 @@ "<7,49>": "", "<7,50>": "", "<7,51>": "", - "<7,52>": "" + "<7,52>": "", + "<7,53>": "", + "<7,54>": "", + "<7,55>": "", + "<7,56>": "", + "<7,57>": "", + "<7,58>": "", + "<7,59>": "", + "<7,60>": "", + "<7,61>": "", + "<7,62>": "0", + "<7,63>": { + "<7,63,1>": "", + "<7,63,2>": "", + "<7,63,3>": "", + "<7,63,4>": "", + "<7,63,5>": "", + "<7,63,6>": "", + "<7,63,7>": "", + "<7,63,8>": "" + }, + "<7,64>": { + "<7,64,1>": "", + "<7,64,2>": "", + "<7,64,3>": "" + }, + "<7,65>": "-2", + "<7,66>": "", + "<7,67>": "", + "<7,68>": "", + "<7,69>": "", + "<7,70>": "", + "<7,71>": "", + "<7,72>": "", + "<7,73>": "", + "<7,74>": "", + "<7,75>": "", + "<7,76>": "", + "<7,77>": "", + "<7,78>": "", + "<7,79>": "", + "<7,80>": "", + "<7,81>": "", + "<7,82>": "", + "<7,83>": "", + "<7,84>": "", + "<7,85>": "", + "<7,86>": "", + "<7,87>": "", + "<7,88>": "", + "<7,89>": "", + "<7,90>": "0", + "<7,91>": "0", + "<7,92>": "", + "<7,93>": "", + "<7,94>": "", + "<7,95>": "", + "<7,96>": "", + "<7,97>": "", + "<7,98>": "", + "<7,99>": "", + "<7,100>": "", + "<7,101>": "", + "<7,102>": "", + "<7,103>": "", + "<7,104>": "", + "<7,105>": "", + "<7,106>": "", + "<7,107>": "", + "<7,108>": "" }, "<8>": { "<8,1>": "OLE_BTN_SAVE", @@ -747,7 +1303,7 @@ "<8,8>": "29", "<8,9>": "SRP.Button.1", "<8,10>": { - "<8,10,1>": "0x56800000", + "<8,10,1>": "0x56000000", "<8,10,2>": "0x0" }, "<8,11>": { @@ -755,7 +1311,11 @@ "<8,11,2>": "0x80000000" }, "<8,12>": "8", - "<8,13>": "-2", + "<8,13>": { + "<8,13,1>": "-2", + "<8,13,2>": "-2", + "<8,13,3>": "" + }, "<8,14>": "0", "<8,15>": { "<8,15,1>": { @@ -793,35 +1353,148 @@ "<8,18,1,4,8>": "@PARAM6" }, "<8,18,1,5>": "", - "<8,18,1,6>": "" - }, - "<8,18,2>": "" - }, - "<8,19>": { - "<8,19,1>": "OLE", - "<8,19,2>": "" + "<8,18,1,6>": "", + "<8,18,1,7>": "", + "<8,18,1,8>": "", + "<8,18,1,9>": "", + "<8,18,1,10>": "", + "<8,18,1,11>": "", + "<8,18,1,12>": "", + "<8,18,1,13>": "", + "<8,18,1,14>": "", + "<8,18,1,15>": "STPROC" + } }, + "<8,19>": "OLE", "<8,20>": "", "<8,21>": "", "<8,22>": "", "<8,23>": "", "<8,24>": "", - "<8,25>": "0", - "<8,26>": "0", + "<8,25>": "", + "<8,26>": "", "<8,27>": "", - "<8,28>": "<>", - "<8,29>": "<>", - "<8,30>": "<>", - "<8,31>": "0", - "<8,32>": { - "<8,32,1>": "0x7fffe", - "<8,32,2>": "0xf0016000" - }, + "<8,28>": "", + "<8,29>": "", + "<8,30>": "", + "<8,31>": "", + "<8,32>": "", "<8,33>": "", "<8,34>": "", "<8,35>": "", - "<8,36>": "0300000000000000FFFEFF064E006F0072006D0061006C0000000000FFFEFF052600530061007600650000000000FFFEFF225300650067006F006500200055004900FCF02D0031003300FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000FFFEFF02FEF0310000000000FFFEFF00FFFEFF105300740061006E006400610072006400200054006F006F006C00620061007200FFFEFF2B53006100760065007300200061006E0064002000700072006F00630065007300730065007300200061006C006C0020007200650063006F00720064007300200069006E00200074006800650020006700720069006400FFFEFF044100750074006F00000000000000000000000000", - "<8,37>": "" + "<8,36>": "0300000000000000FFFEFF064E006F0072006D0061006C0000000000FFFEFF052600530061007600650000000000FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000FFFEFF02FEF0310000000000FFFEFF00FFFEFF105300740061006E006400610072006400200054006F006F006C00620061007200FFFEFF2B53006100760065007300200061006E0064002000700072006F00630065007300730065007300200061006C006C0020007200650063006F00720064007300200069006E00200074006800650020006700720069006400FFFEFF044100750074006F00000000000000000000000000", + "<8,37>": "", + "<8,38>": "", + "<8,39>": "", + "<8,40>": "", + "<8,41>": "", + "<8,42>": "", + "<8,43>": "", + "<8,44>": "", + "<8,45>": "", + "<8,46>": "", + "<8,47>": "", + "<8,48>": "", + "<8,49>": "", + "<8,50>": "", + "<8,51>": "", + "<8,52>": "", + "<8,53>": "", + "<8,54>": "", + "<8,55>": { + "<8,55,1>": "OLE.ButtonType", + "<8,55,2>": "OLE.Cancel", + "<8,55,3>": "OLE.Caption", + "<8,55,4>": "OLE.Default", + "<8,55,5>": "OLE.FontBold", + "<8,55,6>": "OLE.FontItalic", + "<8,55,7>": "OLE.FontName", + "<8,55,8>": "OLE.FontSize", + "<8,55,9>": "OLE.FontUnderlined", + "<8,55,10>": "OLE.IconFrameCount", + "<8,55,11>": "OLE.IconHeight", + "<8,55,12>": "OLE.IconPath", + "<8,55,13>": "OLE.IconSizeToFit", + "<8,55,14>": "OLE.IconWidth", + "<8,55,15>": "OLE.State", + "<8,55,16>": "OLE.StatusBarText", + "<8,55,17>": "OLE.Style", + "<8,55,18>": "OLE.ToolTip", + "<8,55,19>": "OLE.TransparentColor" + }, + "<8,56>": { + "<8,56,1>": "Normal", + "<8,56,2>": "0", + "<8,56,3>": "&Save", + "<8,56,4>": "0", + "<8,56,5>": "0", + "<8,56,6>": "0", + "<8,56,7>": "Segoe UI", + "<8,56,8>": "8", + "<8,56,9>": "0", + "<8,56,10>": "1", + "<8,56,11>": "0", + "<8,56,12>": "", + "<8,56,13>": "0", + "<8,56,14>": "0", + "<8,56,15>": "0", + "<8,56,16>": "", + "<8,56,17>": "Standard Toolbar", + "<8,56,18>": "Saves and processes all records in the grid", + "<8,56,19>": "Auto" + }, + "<8,57>": "", + "<8,58>": "", + "<8,59>": "", + "<8,60>": "", + "<8,61>": "", + "<8,62>": "", + "<8,63>": "", + "<8,64>": "", + "<8,65>": "", + "<8,66>": "", + "<8,67>": "", + "<8,68>": "", + "<8,69>": "", + "<8,70>": "", + "<8,71>": "", + "<8,72>": "", + "<8,73>": "", + "<8,74>": "", + "<8,75>": "", + "<8,76>": "", + "<8,77>": "", + "<8,78>": "", + "<8,79>": "", + "<8,80>": "", + "<8,81>": "", + "<8,82>": "", + "<8,83>": "", + "<8,84>": "", + "<8,85>": "", + "<8,86>": "", + "<8,87>": "", + "<8,88>": "", + "<8,89>": "", + "<8,90>": "", + "<8,91>": "", + "<8,92>": "", + "<8,93>": "", + "<8,94>": "", + "<8,95>": "", + "<8,96>": "", + "<8,97>": "", + "<8,98>": "", + "<8,99>": "", + "<8,100>": "", + "<8,101>": "", + "<8,102>": "", + "<8,103>": "", + "<8,104>": "", + "<8,105>": "", + "<8,106>": "", + "<8,107>": "", + "<8,108>": "" }, "<9>": { "<9,1>": "OLE_BTN_CLEAR", @@ -834,7 +1507,7 @@ "<9,8>": "27", "<9,9>": "SRP.Button.1", "<9,10>": { - "<9,10,1>": "0x56800000", + "<9,10,1>": "0x56000000", "<9,10,2>": "0x0" }, "<9,11>": { @@ -842,7 +1515,11 @@ "<9,11,2>": "0x80000000" }, "<9,12>": "9", - "<9,13>": "-2", + "<9,13>": { + "<9,13,1>": "-2", + "<9,13,2>": "-2", + "<9,13,3>": "" + }, "<9,14>": "0", "<9,15>": { "<9,15,1>": { @@ -880,35 +1557,148 @@ "<9,18,1,4,8>": "@PARAM6" }, "<9,18,1,5>": "@SELF", - "<9,18,1,6>": "" - }, - "<9,18,2>": "" - }, - "<9,19>": { - "<9,19,1>": "OLE", - "<9,19,2>": "" + "<9,18,1,6>": "", + "<9,18,1,7>": "", + "<9,18,1,8>": "", + "<9,18,1,9>": "", + "<9,18,1,10>": "", + "<9,18,1,11>": "", + "<9,18,1,12>": "", + "<9,18,1,13>": "", + "<9,18,1,14>": "", + "<9,18,1,15>": "STPROC" + } }, + "<9,19>": "OLE", "<9,20>": "", "<9,21>": "", "<9,22>": "", "<9,23>": "", "<9,24>": "", - "<9,25>": "0", - "<9,26>": "0", + "<9,25>": "", + "<9,26>": "", "<9,27>": "", - "<9,28>": "<>", - "<9,29>": "<>", - "<9,30>": "<>", - "<9,31>": "0", - "<9,32>": { - "<9,32,1>": "0x7fffe", - "<9,32,2>": "0xf0016000" - }, + "<9,28>": "", + "<9,29>": "", + "<9,30>": "", + "<9,31>": "", + "<9,32>": "", "<9,33>": "", "<9,34>": "", "<9,35>": "", - "<9,36>": "0300000000000000FFFEFF064E006F0072006D0061006C0000000000FFFEFF0B260043006C006500610072002000470072006900640000000000FFFEFF225300650067006F006500200055004900FCF02D0031003300FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000FFFEFF02FEF0310000000000FFFEFF00FFFEFF105300740061006E006400610072006400200054006F006F006C00620061007200FFFEFF21520065006D006F00760065007300200061006C006C0020007200650063006F007200640073002000660072006F006D00200074006800650020006700720069006400FFFEFF044100750074006F00000000000000000000000000", - "<9,37>": "" + "<9,36>": "0300000000000000FFFEFF064E006F0072006D0061006C0000000000FFFEFF0B260043006C006500610072002000470072006900640000000000FFFEFF225300650067006F006500200055004900FCF02D0031003100FCF0340030003000FCF03000FCF03000FCF03000FCF03100FCF03000FCF03000FCF03000FCF03000FCF03000FFFEFF02FEF0310000000000FFFEFF00FFFEFF105300740061006E006400610072006400200054006F006F006C00620061007200FFFEFF21520065006D006F00760065007300200061006C006C0020007200650063006F007200640073002000660072006F006D00200074006800650020006700720069006400FFFEFF044100750074006F00000000000000000000000000", + "<9,37>": "", + "<9,38>": "", + "<9,39>": "", + "<9,40>": "", + "<9,41>": "", + "<9,42>": "", + "<9,43>": "", + "<9,44>": "", + "<9,45>": "", + "<9,46>": "", + "<9,47>": "", + "<9,48>": "", + "<9,49>": "", + "<9,50>": "", + "<9,51>": "", + "<9,52>": "", + "<9,53>": "", + "<9,54>": "", + "<9,55>": { + "<9,55,1>": "OLE.ButtonType", + "<9,55,2>": "OLE.Cancel", + "<9,55,3>": "OLE.Caption", + "<9,55,4>": "OLE.Default", + "<9,55,5>": "OLE.FontBold", + "<9,55,6>": "OLE.FontItalic", + "<9,55,7>": "OLE.FontName", + "<9,55,8>": "OLE.FontSize", + "<9,55,9>": "OLE.FontUnderlined", + "<9,55,10>": "OLE.IconFrameCount", + "<9,55,11>": "OLE.IconHeight", + "<9,55,12>": "OLE.IconPath", + "<9,55,13>": "OLE.IconSizeToFit", + "<9,55,14>": "OLE.IconWidth", + "<9,55,15>": "OLE.State", + "<9,55,16>": "OLE.StatusBarText", + "<9,55,17>": "OLE.Style", + "<9,55,18>": "OLE.ToolTip", + "<9,55,19>": "OLE.TransparentColor" + }, + "<9,56>": { + "<9,56,1>": "Normal", + "<9,56,2>": "0", + "<9,56,3>": "&Clear Grid", + "<9,56,4>": "0", + "<9,56,5>": "0", + "<9,56,6>": "0", + "<9,56,7>": "Segoe UI", + "<9,56,8>": "8", + "<9,56,9>": "0", + "<9,56,10>": "1", + "<9,56,11>": "0", + "<9,56,12>": "", + "<9,56,13>": "0", + "<9,56,14>": "0", + "<9,56,15>": "0", + "<9,56,16>": "", + "<9,56,17>": "Standard Toolbar", + "<9,56,18>": "Removes all records from the grid", + "<9,56,19>": "Auto" + }, + "<9,57>": "", + "<9,58>": "", + "<9,59>": "", + "<9,60>": "", + "<9,61>": "", + "<9,62>": "", + "<9,63>": "", + "<9,64>": "", + "<9,65>": "", + "<9,66>": "", + "<9,67>": "", + "<9,68>": "", + "<9,69>": "", + "<9,70>": "", + "<9,71>": "", + "<9,72>": "", + "<9,73>": "", + "<9,74>": "", + "<9,75>": "", + "<9,76>": "", + "<9,77>": "", + "<9,78>": "", + "<9,79>": "", + "<9,80>": "", + "<9,81>": "", + "<9,82>": "", + "<9,83>": "", + "<9,84>": "", + "<9,85>": "", + "<9,86>": "", + "<9,87>": "", + "<9,88>": "", + "<9,89>": "", + "<9,90>": "", + "<9,91>": "", + "<9,92>": "", + "<9,93>": "", + "<9,94>": "", + "<9,95>": "", + "<9,96>": "", + "<9,97>": "", + "<9,98>": "", + "<9,99>": "", + "<9,100>": "", + "<9,101>": "", + "<9,102>": "", + "<9,103>": "", + "<9,104>": "", + "<9,105>": "", + "<9,106>": "", + "<9,107>": "", + "<9,108>": "" }, "<10>": { "<10,1>": "OLE_EDT_SCANDATA", @@ -929,7 +1719,11 @@ "<10,11,2>": "0x80000000" }, "<10,12>": "10", - "<10,13>": "-2", + "<10,13>": { + "<10,13,1>": "-2", + "<10,13,2>": "-2", + "<10,13,3>": "" + }, "<10,14>": "0", "<10,15>": { "<10,15,1>": { @@ -967,46 +1761,138 @@ "<10,18,1,4,8>": "@PARAM6" }, "<10,18,1,5>": "@SELF", - "<10,18,1,6>": "" - }, - "<10,18,2>": "" - }, - "<10,19>": { - "<10,19,1>": "OLE", - "<10,19,2>": "" + "<10,18,1,6>": "", + "<10,18,1,7>": "", + "<10,18,1,8>": "", + "<10,18,1,9>": "", + "<10,18,1,10>": "", + "<10,18,1,11>": "", + "<10,18,1,12>": "", + "<10,18,1,13>": "", + "<10,18,1,14>": "", + "<10,18,1,15>": "STPROC" + } }, + "<10,19>": "OLE", "<10,20>": "", "<10,21>": "", "<10,22>": "", "<10,23>": "", "<10,24>": "", - "<10,25>": "0", - "<10,26>": "0", + "<10,25>": "", + "<10,26>": "", "<10,27>": "", - "<10,28>": "<>", - "<10,29>": "<>", - "<10,30>": "<>", - "<10,31>": "0", - "<10,32>": { - "<10,32,1>": "0x7fffe", - "<10,32,2>": "0xf0016c00" - }, + "<10,28>": "", + "<10,29>": "", + "<10,30>": "", + "<10,31>": "", + "<10,32>": "", "<10,33>": "", "<10,34>": "", "<10,35>": "", "<10,36>": "0000000000000000", - "<10,37>": "" - }, - "<11>": "" + "<10,37>": "", + "<10,38>": "", + "<10,39>": "", + "<10,40>": "", + "<10,41>": "", + "<10,42>": "", + "<10,43>": "", + "<10,44>": "", + "<10,45>": "", + "<10,46>": "", + "<10,47>": "", + "<10,48>": "", + "<10,49>": "", + "<10,50>": "", + "<10,51>": "", + "<10,52>": "", + "<10,53>": "", + "<10,54>": "", + "<10,55>": { + "<10,55,1>": "OLE.AllowXPTheme", + "<10,55,2>": "OLE.ComboDropDown", + "<10,55,3>": "OLE.DblClickToEdit", + "<10,55,4>": "OLE.EditContextMenu", + "<10,55,5>": "OLE.EditText", + "<10,55,6>": "OLE.Focus", + "<10,55,7>": "OLE.HeaderRowCount", + "<10,55,8>": "OLE.Modified", + "<10,55,9>": "OLE.PassEnterKey", + "<10,55,10>": "OLE.ScrollBarsVisible", + "<10,55,11>": "OLE.SingleEscape", + "<10,55,12>": "OLE.TextRenderStyle" + }, + "<10,56>": { + "<10,56,1>": "0", + "<10,56,2>": "0", + "<10,56,3>": "1", + "<10,56,4>": "1", + "<10,56,5>": "", + "<10,56,6>": "0", + "<10,56,7>": "1", + "<10,56,8>": "0", + "<10,56,9>": "0", + "<10,56,10>": "Auto|Auto", + "<10,56,11>": "0", + "<10,56,12>": "EditField|Ellipses" + }, + "<10,57>": "", + "<10,58>": "", + "<10,59>": "", + "<10,60>": "", + "<10,61>": "", + "<10,62>": "", + "<10,63>": "", + "<10,64>": "", + "<10,65>": "", + "<10,66>": "", + "<10,67>": "", + "<10,68>": "", + "<10,69>": "", + "<10,70>": "", + "<10,71>": "", + "<10,72>": "", + "<10,73>": "", + "<10,74>": "", + "<10,75>": "", + "<10,76>": "", + "<10,77>": "", + "<10,78>": "", + "<10,79>": "", + "<10,80>": "", + "<10,81>": "", + "<10,82>": "", + "<10,83>": "", + "<10,84>": "", + "<10,85>": "", + "<10,86>": "", + "<10,87>": "", + "<10,88>": "", + "<10,89>": "", + "<10,90>": "", + "<10,91>": "", + "<10,92>": "", + "<10,93>": "", + "<10,94>": "", + "<10,95>": "", + "<10,96>": "", + "<10,97>": "", + "<10,98>": "", + "<10,99>": "", + "<10,100>": "", + "<10,101>": "", + "<10,102>": "", + "<10,103>": "", + "<10,104>": "", + "<10,105>": "", + "<10,106>": "", + "<10,107>": "", + "<10,108>": "" + } }, "record4": { - "<1>": "", - "<2>": { - "<2,1>": "", - "<2,2>": "", - "<2,3>": "", - "<2,4>": "0" - } + "<1>": "" } } } \ No newline at end of file diff --git a/LSL2/OIWIN/NDW_PTO_MAT_SCAN.json b/LSL2/OIWIN/NDW_PTO_MAT_SCAN.json index ce2a7c6..431c1ad 100644 --- a/LSL2/OIWIN/NDW_PTO_MAT_SCAN.json +++ b/LSL2/OIWIN/NDW_PTO_MAT_SCAN.json @@ -572,7 +572,7 @@ "<3,8>": "28", "<3,9>": "", "<3,10>": { - "<3,10,1>": "0x5E000080", + "<3,10,1>": "0x5E000088", "<3,10,2>": "0x200" }, "<3,11>": { @@ -739,7 +739,7 @@ "<4,8>": "28", "<4,9>": "", "<4,10>": { - "<4,10,1>": "0x5E000080", + "<4,10,1>": "0x5E000088", "<4,10,2>": "0x200" }, "<4,11>": { diff --git a/LSL2/POPUP/PRINT_WMI_LABELS.json b/LSL2/POPUP/PRINT_WMI_LABELS.json index 72c4ea2..ff12aa5 100644 --- a/LSL2/POPUP/PRINT_WMI_LABELS.json +++ b/LSL2/POPUP/PRINT_WMI_LABELS.json @@ -9,7 +9,7 @@ "<2>": "-2", "<3>": "-1", "<4>": "-1", - "<5>": "16777215", + "<5>": "-2", "<6>": { "<6,1>": { "<6,1,1>": "Tahoma", @@ -76,11 +76,21 @@ "<28>": "", "<29>": "0", "<30>": "0", - "<31>": "0", + "<31>": "1", "<32>": "0", "<33>": "0", - "<34>": "16777215", - "<35>": "16777215" + "<34>": "-2", + "<35>": "-2", + "<36>": "", + "<37>": "", + "<38>": "", + "<39>": "", + "<40>": "-2", + "<41>": "1000", + "<42>": "", + "<43>": "", + "<44>": "", + "<45>": "" } } } \ No newline at end of file diff --git a/LSL2/POPUP/PRINT_WM_LABELS.json b/LSL2/POPUP/PRINT_WM_LABELS.json index 500ba56..a1f14a4 100644 --- a/LSL2/POPUP/PRINT_WM_LABELS.json +++ b/LSL2/POPUP/PRINT_WM_LABELS.json @@ -9,7 +9,7 @@ "<2>": "-2", "<3>": "-1", "<4>": "-1", - "<5>": "16777215", + "<5>": "-2", "<6>": { "<6,1>": { "<6,1,1>": "Tahoma", @@ -84,11 +84,21 @@ "<28>": "", "<29>": "0", "<30>": "0", - "<31>": "0", + "<31>": "1", "<32>": "0", "<33>": "0", - "<34>": "16777215", - "<35>": "16777215" + "<34>": "-2", + "<35>": "-2", + "<36>": "", + "<37>": "", + "<38>": "", + "<39>": "", + "<40>": "-2", + "<41>": "1000", + "<42>": "", + "<43>": "", + "<44>": "", + "<45>": "" } } } \ No newline at end of file diff --git a/LSL2/POPUP/WO_LOG_RTS.json b/LSL2/POPUP/WO_LOG_RTS.json index d22f798..c30dbf2 100644 --- a/LSL2/POPUP/WO_LOG_RTS.json +++ b/LSL2/POPUP/WO_LOG_RTS.json @@ -9,7 +9,7 @@ "<2>": "-2", "<3>": "-1", "<4>": "-1", - "<5>": "16777215", + "<5>": "-2", "<6>": { "<6,1>": { "<6,1,1>": "MS Sans Serif", @@ -93,8 +93,21 @@ "<28>": "", "<29>": "0", "<30>": "0", - "<31>": "0", - "<32>": "0" + "<31>": "1", + "<32>": "0", + "<33>": "0", + "<34>": "-2", + "<35>": "-2", + "<36>": "", + "<37>": "", + "<38>": "", + "<39>": "", + "<40>": "-2", + "<41>": "1000", + "<42>": "", + "<43>": "", + "<44>": "", + "<45>": "" } } } \ No newline at end of file diff --git a/LSL2/STPROC/MATERIAL_MOVEMENT_SERVICES.txt b/LSL2/STPROC/MATERIAL_MOVEMENT_SERVICES.txt index 79f1854..8ef0bc5 100644 --- a/LSL2/STPROC/MATERIAL_MOVEMENT_SERVICES.txt +++ b/LSL2/STPROC/MATERIAL_MOVEMENT_SERVICES.txt @@ -62,117 +62,161 @@ Options SCAN_TYPES_PTO = 'LABEL1', 'LABEL2' //---------------------------------------------------------------------------------------------------------------------- Service ProcessFQAScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3) + ErrorMsg = '' If (ScanData NE '') then - // Code 3of9 encodes the asterisk and underscore characters. These need to be decoded. - //ScanData = Scan_Services('DecodeScanData', ScanData) - - If Error_Services('NoError') then - ColumnIndex = '' - ColumnValue = '' - - // Identify the scan data based on the data identifier prefix (if any). Otherwise, assume this is a - // type of cassette ID (i.e., RDS or WMO). - - Begin Case - - Case ScanType EQ 'SUPPLIER' - ValidLot = False$ - If ScanData[1, 2] EQ '2T' OR ScanData[1,2] EQ '1T' then ScanData[1, 2] = '' - ScanSubLot = ScanData - - CassetteID = Param1 - If INDEX(CassetteID,'.',2) then - RDSType = 'EPP' - end else - RDSType = 'SIC' - end - - ValidLot = Rds_Services('IsValidSubLot', CassetteID, RDSType, ScanSubLot) - If ValidLot NE True$ then - // Add error to error stack - ErrorMessage = 'Invalid Supplier Lot: ':ScanData - Error_Services('Add', ErrorMessage) - end - - If Error_Services('NoError') then - Response = ScanSubLot - end - - Case ScanType EQ 'CASSETTE1' - - // Assume this is intended to be a Cassette ID scan (either WMO or RDS). Only if this is a - // non-existent carrier will the scan data be considered invalid. - // Strip '1T', 'I', and 'O' prefixes. - If ScanData[1, 2] EQ '1T' then - ScanData[1, 2] = '' - end else If ScanData[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then - ScanData[1,1] = '' - end - CassetteID = ScanData - - If INDEX(CassetteID,'.',2) then - RDSType = 'EPP' - WOMatKey = Field(CassetteID, '.', 1):'*':Field(CassetteID, '.', 3) - end else - RDSType = 'SIC' - WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X') - end - - ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now. - ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType ) - - If RDSType EQ 'EPP' then - LotDesc = 'EPP Lot ' - end else - LotDesc = 'RDS Number ' + ColumnIndex = '' + ColumnValue = '' + + // Identify the scan data based on the data identifier prefix (if any). Otherwise, assume this is a + // type of cassette ID (i.e., RDS or WMO). + + Begin Case + + Case ScanType EQ 'SUPPLIER' + ValidLot = False$ + If ScanData[1, 2] EQ '2T' OR ScanData[1,2] EQ '1T' then ScanData[1, 2] = '' + ScanSubLot = ScanData + + CassetteID = Param1 + If INDEX(CassetteID,'.',2) then + RDSType = 'EPP' + end else + RDSType = 'SIC' + end + + ValidLot = Rds_Services('IsValidSubLot', CassetteID, RDSType, ScanSubLot) + If ValidLot NE True$ then + // Add error to error stack + ErrorMsg = 'Invalid Supplier Lot: ':ScanData + end + + If ErrorMsg EQ '' then Response = ScanSubLot + + Case ScanType EQ 'CASSETTE1' + + DelimCount = DCount(ScanData, '|') + Begin Case + Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 1] EQ 'O') ) + ErrorMsg = '1D Lot Label Scanned. 2D Lot Label Required.' + Case (DelimCount NE 8) + ErrorMsg = 'Invalid Lot Label Scan.' + Case Otherwise$ + CassetteID = Field(ScanData, '|', 3) + SeqNo = Field(ScanData, '|', 8) + End Case + + If ErrorMsg EQ '' then + + If CassetteID[1, 2] EQ '1T' then + CassetteID[1, 2] = '' + end else If CassetteID[1,1] EQ 'I' OR CassetteID[1,1] EQ 'O' then + CassetteID[1,1] = '' end - + + If INDEX(CassetteID,'.',2) then + RDSType = 'EPP' + WOMatKey = Field(CassetteID, '.', 1):'*':Field(CassetteID, '.', 3) + end else + RDSType = 'SIC' + WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X') + end + + ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType ) + If ValidCassetteID EQ True$ then - If Param1 NE '' AND ScanData NE Param1 then ;*Cassette2 Scan - Error_Services('Add', LotDesc:'Mismatch: ':CassetteID: ' does not match ': Param1) - end - - // Check if FQA is signed - FQASigned = '' - WorkOrdNo = Field(WOMatKey, '*', 1) - ReactorType = XLATE('WO_LOG', WorkOrdNo, 'REACT_TYPE', 'X') - QAStage = '' - - Begin Case - Case RDSType EQ 'EPP' - QAStage = 'MO_QA' - Case Otherwise$ - QAStage = 'QA' - End Case + If Param1 NE '' AND ScanData NE Param1 then ;*Cassette2 Scan + ErrorMsg = 'Lot Label Mismatch: ':CassetteID: ' does not match ': Param1 + end + + If ErrorMsg EQ '' then + // Check if FQA is signed + FQASigned = '' + WorkOrdNo = Field(WOMatKey, '*', 1) + ReactorType = XLATE('WO_LOG', WorkOrdNo, 'REACT_TYPE', 'X') + QAStage = '' + + Begin Case + Case RDSType EQ 'EPP' + QAStage = 'MO_QA' + Case Otherwise$ + QAStage = 'QA' + End Case - FQASigned = Signature_Services('CheckSignature', WOMatKey, QAStage) - - IF NOT(FQASigned) THEN - Error_Services('Add', 'FQA not signed for ':LotDesc:CassetteID: '!') - END - - end else - Error_Services('Add', 'Invalid ':LotDesc:CassetteID) - end - - If Error_Services('NoError') then - Response = CassetteID - end - - Case ScanType EQ 'CASSETTE2' - Response = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE1', Param1) - Response = ScanData - - End Case - - end + FQASigned = Signature_Services('CheckSignature', WOMatKey, QAStage) + + If NOT(FQASigned) then ErrorMsg = 'FQA not signed for ':CassetteID:'!' + end + + end else + ErrorMsg = 'Invalid Lot ID ':CassetteID + end + + If ErrorMsg EQ '' then + Response = '' + Response<1> = CassetteID + Response<2> = SeqNo + end + end + + Case ScanType EQ 'CASSETTE2' + // Assume this is intended to be a Cassette ID scan (either WMO or RDS). Only if this is a + // non-existent carrier will the scan data be considered invalid. + // Strip '1T', 'I', and 'O' prefixes. + + ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now. + Cassette1ID = Param1 + Seq1No = Param2 + DelimCount = DCount(ScanData, '|') + Begin Case + Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 1] EQ 'O') ) + ErrorMsg = '1D Lot Label Scanned. 2D Lot Label Required.' + Case (DelimCount NE 8) + ErrorMsg = 'Invalid Lot Label Scan.' + Case Otherwise$ + CassetteID = Field(ScanData, '|', 3) + Seq2No = Field(ScanData, '|', 8) + End Case + + If ErrorMsg EQ '' then + + If CassetteID[1, 2] EQ '1T' then + CassetteID[1, 2] = '' + end else If CassetteID[1,1] EQ 'I' OR CassetteID[1,1] EQ 'O' then + CassetteID[1,1] = '' + end + + If INDEX(CassetteID,'.',2) then + RDSType = 'EPP' + end else + RDSType = 'SIC' + end + + ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType ) + If ValidCassetteID EQ True$ then + If Cassette1ID NE '' AND (CassetteID NE Cassette1ID) then ;*Cassette2 Scan + ErrorMsg = 'Lot Label Mismatch: ':CassetteID: ' does not match ': Cassette1ID + end + If Seq1No EQ Seq2No then + ErrorMsg = 'FQA Label verification failed due':CRLF$:'to operator double-scanning barcode.' + end + end else + ErrorMsg = 'Invalid RDS Number: ':CassetteID + end + + If ErrorMsg EQ '' then Response = CassetteID + end + + End Case end else - Error_Services('Add', 'ScanData argument was missing in the ' : Service : ' service.') + ErrorMsg = 'ScanData argument was missing in the ' : Service : ' service.' end + If ErrorMsg NE '' then Error_Services('Add', ErrorMsg) + end service + //---------------------------------------------------------------------------------------------------------------------- // ProcessPTIScanData // @@ -183,92 +227,148 @@ end service //---------------------------------------------------------------------------------------------------------------------- Service ProcessPTIScanData(ScanData, ScanType = SCAN_TYPES, Param1, Param2, Param3) + ErrorMsg = '' If (ScanData NE '') then - // Code 3of9 encodes the asterisk and underscore characters. These need to be decoded. - //ScanData = Scan_Services('DecodeScanData', ScanData) - - If Error_Services('NoError') then + + ColumnIndex = '' + ColumnValue = '' + + // Identify the scan data based on the data identifier prefix (if any). Otherwise, assume this is a + // type of cassette ID (i.e., RDS or WMO). + + Begin Case + + Case ScanType EQ 'SUPPLIER' + + ValidLot = False$ + If ScanData[1, 2] EQ '2T' OR ScanData[1,2] EQ '1T' then ScanData[1, 2] = '' + ScanSubLot = ScanData + CassetteID = Param1 + If INDEX(CassetteID,'.',2) then + RDSType = 'EPP' + end else + RDSType = 'SIC' + end + ValidLot = Rds_Services('IsValidSubLot', CassetteID, RDSType, ScanSubLot) + If ValidLot NE True$ then ErrorMsg = 'Invalid Supplier Lot: ':ScanData + If ErrorMsg EQ '' then Response = ScanSubLot + + Case ScanType EQ 'CASSETTE1' + debug + // Assume this is intended to be a Cassette ID scan (either WMO or RDS). Only if this is a + // non-existent carrier will the scan data be considered invalid. + // Strip '1T', 'I', and 'O' prefixes. + ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now. + DelimCount = DCount(ScanData, '|') + Begin Case + Case (ScanData[1, 1] EQ 'I') + ! Temporary exception while we exhaust current WMI inventory on KIT racks that + ! do not have a 2D barcode. + CassetteID = ScanData + SeqNo = 'SEQ1' + Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 1] EQ 'O') ) + ErrorMsg = '1D Lot Label Scanned. 2D Lot Label Required.' + Case (DelimCount NE 8) + ErrorMsg = 'Invalid Lot Label Scan.' + Case Otherwise$ + CassetteID = Field(ScanData, '|', 3) + SeqNo = Field(ScanData, '|', 8) + End Case + + If ErrorMsg EQ '' then + If CassetteID[1, 2] EQ '1T' then + CassetteID[1, 2] = '' + end else If CassetteID[1,1] EQ 'I' OR CassetteID[1,1] EQ 'O' then + CassetteID[1,1] = '' + end + + If INDEX(CassetteID,'.',2) then + RDSType = 'EPP' + end else + RDSType = 'SIC' + end + + ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType) + If ValidCassetteID EQ True$ then + If Param1 NE '' AND (ScanData NE Param1) then ;*Cassette2 Scan + ErrorMsg = 'Lot Label Mismatch: ':CassetteID: ' does not match ': Param1 + end + end else + ErrorMsg = 'Invalid Cassette Number: ':CassetteID + end + + If ErrorMsg EQ '' then + Response = '' + Response<1> = CassetteID + Response<2> = SeqNo + end + end + + Case ScanType EQ 'CASSETTE2' + // Assume this is intended to be a Cassette ID scan (either WMO or RDS). Only if this is a + // non-existent carrier will the scan data be considered invalid. + // Strip '1T', 'I', and 'O' prefixes. + + ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now. + Cassette1ID = Param1 + Seq1No = Param2 + + DelimCount = DCount(ScanData, '|') + Begin Case + Case (ScanData[1, 1] EQ 'I') + ! Temporary exception while we exhaust current WMI inventory on KIT racks that + ! do not have a 2D barcode. + CassetteID = ScanData + Seq2No = 'SEQ2' + Case ( (ScanData[1, 2] EQ '1T') or (ScanData[1, 1] EQ 'O') ) + ErrorMsg = '1D Lot Label Scanned. 2D Lot Label Required.' + Case (DelimCount NE 8) + ErrorMsg = 'Invalid Lot Label Scan.' + Case Otherwise$ + CassetteID = Field(ScanData, '|', 3) + Seq2No = Field(ScanData, '|', 8) + End Case + + If ErrorMsg EQ '' then + + If CassetteID[1, 2] EQ '1T' then + CassetteID[1, 2] = '' + end else If CassetteID[1,1] EQ 'I' OR CassetteID[1,1] EQ 'O' then + CassetteID[1,1] = '' + end + + If INDEX(CassetteID,'.',2) then + RDSType = 'EPP' + end else + RDSType = 'SIC' + end + + ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType) + If ValidCassetteID EQ True$ then + If Cassette1ID NE '' AND (CassetteID NE Cassette1ID) then ;*Cassette2 Scan + ErrorMsg = 'Lot Label Mismatch: ':CassetteID: ' does not match ': Cassette1ID + end + If Seq1No EQ Seq2No then + ErrorMsg = 'PTI Label verification failed due':CRLF$:'to operator double-scanning barcode.' + end + end else + ErrorMsg = 'Invalid Cassette Number: ':CassetteID + end + + If ErrorMsg EQ '' then Response = CassetteID + end + + End Case - ColumnIndex = '' - ColumnValue = '' - - // Identify the scan data based on the data identifier prefix (if any). Otherwise, assume this is a - // type of cassette ID (i.e., RDS or WMO). - - Begin Case - - Case ScanType EQ 'SUPPLIER' - ValidLot = False$ - If ScanData[1, 2] EQ '2T' OR ScanData[1,2] EQ '1T' then ScanData[1, 2] = '' - ScanSubLot = ScanData - - CassetteID = Param1 - If INDEX(CassetteID,'.',2) then - RDSType = 'EPP' - end else - RDSType = 'SIC' - end - - ValidLot = Rds_Services('IsValidSubLot', CassetteID, RDSType, ScanSubLot) - If ValidLot NE True$ then - // Add error to error stack - ErrorMessage = 'Invalid Supplier Lot: ':ScanData - Error_Services('Add', ErrorMessage) - end - - If Error_Services('NoError') then - Response = ScanSubLot - end - - Case ScanType EQ 'CASSETTE1' - - // Assume this is intended to be a Cassette ID scan (either WMO or RDS). Only if this is a - // non-existent carrier will the scan data be considered invalid. - // Strip '1T', 'I', and 'O' prefixes. - If ScanData[1, 2] EQ '1T' then - ScanData[1, 2] = '' - end else If ScanData[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then - ScanData[1,1] = '' - end - CassetteID = ScanData - - If INDEX(CassetteID,'.',2) then - RDSType = 'EPP' - end else - RDSType = 'SIC' - end - - ValidCassetteID = False$ ; // Assume Cassette ID is not valid for now. - ValidCassetteID = Rds_Services('IsValidRDS', CassetteID, RDSType ) - If ValidCassetteID EQ True$ then - If Param1 NE '' AND ScanData NE Param1 then ;*Cassette2 Scan - Error_Services('Add', 'RDS Mismatch: ':CassetteID: ' does not match ': Param1) - end - end else - Error_Services('Add', 'Invalid RDS Number: ':CassetteID) - end - - If Error_Services('NoError') then - Response = CassetteID - end - - Case ScanType EQ 'CASSETTE2' - Response = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE1', Param1) - Response = ScanData - - End Case - - end end else - Error_Services('Add', 'ScanData argument was missing in the ' : Service : ' service.') + ErrorMsg = 'ScanData argument was missing in the ' : Service : ' service.' end + If ErrorMsg NE '' then Error_Services('Add', ErrorMsg) + end service -//to do before release of ProcessPTOScanData -//1. prerequisite - waiting on newly printed (on/after 10/18/21) labels to make their way through warehouse, though not critical -//2. showstopper - need barcode scanners to be able to scan 2D barcodes - currently only 1 such scanner (purchased for shipping but not deployed, given to Cheryl) -//3. fix prod print routine to use SRP GetPrinter methods similar to what the Test_Print_SAP_Cass_Ship_Label does + //---------------------------------------------------------------------------------------------------------------------- // ProcessPTOScanData // @@ -282,174 +382,165 @@ end service //---------------------------------------------------------------------------------------------------------------------- Service ProcessPTOScanData(ScanData, ScanType = SCAN_TYPES_PTO, Param1, Param2) + ErrorMsg = '' Location = 'PTO Mat' If (ScanData NE '') then - If Error_Services('NoError') then - - ColumnIndex = '' - ColumnValue = '' - Cassette1 = '' - Cassette2 = '' - - Begin Case - - Case ScanType EQ 'LABEL1' - //determine whether regular NEPP or EPP label scan - //NEPP should be data matrix scan and have 7 parts, RDS_No is the 3rd - //EPP is 1D scan and will have the WMO number (e.g. 170369*1*48) - // This should be a multi-part 2D datamatrix scan, so there should be a long string separated by pipe symbols. - // Validate the 1. it is multi-part string and 2. that the RDS number from the string is a) valid RDS number - // and b) is currently is the proper state to do PTO transaction. - // Strip any standardized prefixes (e.g. '1T', '2T', etc.) as necessary - - // data from Label1 should have 8 parts (no matter type - Si or EPP), we're looking for the 3rd - cnt = DCount(ScanData, '|') - if cnt NE 8 then - Cassette1 = 0 - Error_Services('Add', 'Invalid Lot Label Scan.') - return - end else - //RDS should be 3rd position - Cassette1 = Field(ScanData, '|', 3) - end - - //strip the prefix encoding - If Cassette1[1, 2] EQ '1T' OR Cassette1[1, 2] EQ '2T' then - Cassette1[1, 2] = '' - end else If Cassette1[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then - Cassette1[1,1] = '' - end - - WOMatKey = '' - RdsRec = '' - WONo = '' - CassNo = '' + ColumnIndex = '' + ColumnValue = '' + Cassette1 = '' + Cassette2 = '' + + Begin Case + + Case ScanType EQ 'LABEL1' + // Determine whether regular NEPP or EPP label scan + // NEPP should be data matrix scan and have 7 parts, RDS_No is the 3rd + // EPP is 1D scan and will have the WMO number (e.g. 170369*1*48) + // This should be a multi-part 2D datamatrix scan, so there should be a long string separated by pipe symbols. + // Validate the 1. it is multi-part string and 2. that the RDS number from the string is a) valid RDS number + // and b) is currently is the proper state to do PTO transaction. + // Strip any standardized prefixes (e.g. '1T', '2T', etc.) as necessary + + // Data from Label1 should have 8 parts (no matter type - Si or EPP), we're looking for the 3rd + cnt = DCount(ScanData, '|') + if cnt NE 8 then + ErrorMsg = 'Invalid Lot Label Scan.' + end else + Cassette1 = Field(ScanData, '|', 3) + end + + If ErrorMsg EQ '' then + // Strip the prefix encoding + If Cassette1[1, 2] EQ '1T' OR Cassette1[1, 2] EQ '2T' then + Cassette1[1, 2] = '' + end else If Cassette1[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then + Cassette1[1,1] = '' + end + + WOMatKey = '' + RdsRec = '' + WONo = '' + CassNo = '' - If INDEX(Cassette1,'.',2) then - RDSType = 'EPP' - WMOKey = Cassette1 + If INDEX(Cassette1,'.',2) then + RDSType = 'EPP' + WMOKey = Cassette1 Convert '.' to '*' in WMOKey - If RowExists('WM_OUT', WMOKey) then + If RowExists('WM_OUT', WMOKey) then WONo = Field(WMOKey, '*', 1, 1) CassNo = Field(WMOKey, '*', 3, 1) WOMatKey = WONo:'*':CassNo end - end else - RDSType = 'SIC' - WOMatKey = XLATE('RDS', Cassette1, 'WO_MAT_KEY', 'X') - RdsRec = Database_Services('ReadDataRow','RDS', Cassette1) - WONo = RdsRec - CassNo = RdsRec - end + end else + RDSType = 'SIC' + WOMatKey = XLATE('RDS', Cassette1, 'WO_MAT_KEY', 'X') + RdsRec = Database_Services('ReadDataRow','RDS', Cassette1) + WONo = RdsRec + CassNo = RdsRec + end - ValidCassette1 = False$ ; // Assume Cassette ID is not valid for now. - testCass1 = Cassette1 + ValidCassette1 = False$ ; // Assume Cassette ID is not valid for now. + testCass1 = Cassette1 - Convert '*' to '.' in testCass1 - If Rds_Services('IsValidRDS', Cassette1, RDSType) then - If Rds_Services('GetHoldStatus', Cassette1, RDSType) EQ False$ then - If Rds_Services('IsPackaged', Cassette1, RDSType) EQ True$ then - ValidCassette1 = True$ - end else - Error_Services('Add', RDSType: ' RDS ':testCass1: ' has not completed packaging.') - return - end - end else - Error_Services('Add', RDSType: ' RDS ':testCass1: ' is currently on hold.') - return - end - end else - Error_Services('Add', RDSType: ' RDS ' : testCass1 : ' is an invalid RDS number.') - return - end + Convert '*' to '.' in testCass1 + If Rds_Services('IsValidRDS', Cassette1, RDSType) then + If Rds_Services('GetHoldStatus', Cassette1, RDSType) EQ False$ then + If Rds_Services('IsPackaged', Cassette1, RDSType) EQ True$ then + ValidCassette1 = True$ + end else + ErrorMsg = RDSType: ' RDS ':testCass1: ' has not completed packaging.' + end + end else + ErrorMsg = RDSType: ' RDS ':testCass1: ' is currently on hold.' + end + end else + ErrorMsg = RDSType: ' RDS ' : testCass1 : ' is an invalid RDS number.' + end - LastPTO = obj_WO_Mat('OutofPTO',WOMatKey) - StepNo = 1 - IF LastPTO THEN - MsgHead = 'Cassette previously scanned through PTO' - MsgText = 'Scanned at ':LastPTO<2>:' by ':LastPTO<1>:CRLF$ - MsgText := 'Are you sure you wish to rescan and reprint the shipping label?' + If ErrorMsg EQ '' then + LastPTO = obj_WO_Mat('OutofPTO',WOMatKey) + StepNo = 1 + IF LastPTO THEN + MsgHead = 'Cassette previously scanned through PTO' + MsgText = 'Scanned at ':LastPTO<2>:' by ':LastPTO<1>:CRLF$ + MsgText := 'Are you sure you wish to rescan and reprint the shipping label?' - OK = Msg(@WINDOW, '','YESNO','',MsgHead:@FM:MsgText) + OK = Msg(@WINDOW, '','YESNO','',MsgHead:@FM:MsgText) - IF NOT(OK) THEN - Error_Services('Add', 'Scan Cancelled') - RETURN - END else - Print_SAP_Cass_Ship_Label(WONo,StepNo,CassNo,Cassette1, RDSType) - end - end else - Print_SAP_Cass_Ship_Label(WONo,StepNo,CassNo,Cassette1, RDSType) - END - - If ValidCassette1 EQ True$ then - If Param1 NE '' AND ScanData NE Param1 then ;*Cassette2 Scan - Error_Services('Add', 'RDS Mismatch: ':Cassette1: ' does not match ': Param1) - return - end - end else - Error_Services('Add', 'Invalid RDS Number: ':Cassette1) - return - end - - If Error_Services('NoError') then - Response = Cassette1 - end - - Case ScanType EQ 'LABEL2' - cnt = DCount(ScanData, ';') - if cnt EQ 9 then - //Tower is customer and RDS should be 2nd position - Cassette2 = Field(ScanData, ';', 2) - end else if cnt EQ 10 then - //all other customers and RDS should be 3rd position - Cassette2 = Field(ScanData, ';', 3) - end else - Error_Services('Add', 'Invalid Shipping Label Scan.') - return - end - - //strip the prefix encoding - If Cassette2[1, 2] EQ '1T' OR Cassette2[1, 2] EQ '2T' then - Cassette2[1, 2] = '' - end else If Cassette2[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then - Cassette2[1,1] = '' - end - testCass1 = Param3 - testCass2 = Cassette2 - convert '*' to '.' in testCass1 - convert '*' to '.' in testCass2 - - If testCass1 NE testCass2 then - ErrorMsg = 'Scan Mismatch - RDS values do not match. Both cassettes placed on hold - Supervisor, Lead, or Engineering disposition required.':CRLF$ | + IF NOT(OK) THEN + ErrorMsg = 'Scan Cancelled' + END else + Print_SAP_Cass_Ship_Label(WONo,StepNo,CassNo,Cassette1, RDSType) + end + end else + Print_SAP_Cass_Ship_Label(WONo,StepNo,CassNo,Cassette1, RDSType) + end + + If ErrorMsg EQ '' then + If ValidCassette1 EQ True$ then + If Param1 NE '' AND ScanData NE Param1 then ;*Cassette2 Scan + ErrorMsg = 'RDS Mismatch: ':Cassette1: ' does not match ': Param1 + end + end else + ErrorMsg = 'Invalid RDS Number: ':Cassette1 + end + + If ErrorMsg EQ '' then Response = Cassette1 + end + end + end + + Case ScanType EQ 'LABEL2' + cnt = DCount(ScanData, ';') + if cnt EQ 9 then + // Tower is customer and RDS should be 2nd position + Cassette2 = Field(ScanData, ';', 2) + end else if cnt EQ 10 then + // All other customers and RDS should be 3rd position + Cassette2 = Field(ScanData, ';', 3) + end else + ErrorMsg = 'Invalid Shipping Label Scan.' + end + + If ErrorMsg EQ '' then + + // Strip the prefix encoding + If Cassette2[1, 2] EQ '1T' OR Cassette2[1, 2] EQ '2T' then + Cassette2[1, 2] = '' + end else If Cassette2[1,1] EQ 'I' OR ScanData[1,1] EQ 'O' then + Cassette2[1,1] = '' + end + testCass1 = Param3 + testCass2 = Cassette2 + convert '*' to '.' in testCass1 + convert '*' to '.' in testCass2 + + If testCass1 NE testCass2 then + ErrorMsg = 'Scan Mismatch - RDS values do not match. Both cassettes placed on hold - Supervisor, Lead, or Engineering disposition required.':CRLF$ | : 'RDS Label #1: ':testCass1:CRLF$ | : 'RDS Label #2: ':testCass2:CRLF$ - ScanMismatch = True$ - gosub ToggleLotHold - Error_Services('Add', ErrorMsg) - return - end - - If Error_Services('NoError') then - Response = Cassette2 - end - - End Case - - end + ScanMismatch = True$ + GoSub ToggleLotHold + end + + If ErrorMsg EQ '' then Response = Cassette2 + end + End Case + end else - Error_Services('Add', 'ScanData argument was missing in the ' : Service : ' service.') + ErrorMsg = 'ScanData argument was missing in the ' : Service : ' service.' end + If ErrorMsg NE '' then Error_Services('Add', ErrorMsg) + end service Service SaveRecord(CassetteID, Warehouse, Location, OperatorID) - * Write success record in Material Log - + // Write success record in Material Log RDSKey = CassetteID WMOKey = CassetteID Convert '.' to '*' in WMOKey @@ -504,20 +595,12 @@ Service SaveRecord(CassetteID, Warehouse, Location, OperatorID) errCode = '' obj_WO_Mat_Log('Create',WOMLParms) -* aiParms = 'WO_MAT':@RM:WONo:@RM:CassNo:@RM:WhCd:'*':LocCd:@RM:Action:@RM:InvDTM:@RM:UserID:@RM:Tag:@RM:ToolID -* obj_WO_Mat('AddInvTrans', aiParms) - - - - IF Get_Status(errCode) THEN - swap @SVM with CRLF$ in errCode - ErrorMsg = 'Errors calling obj_WO_Mat_Log("Create"). Error code: ':errCode:', Len(errCode)=':Len(errCode):'. FI has been notified.' + If Get_Status(errCode) then + Swap @SVM with CRLF$ in errCode + ErrorMsg = 'Errors calling obj_WO_Mat_Log("Create"). Error code: ':errCode Error_Services('Add', ErrorMsg) - if LEN(errCode) > 5 then - Gosub SendErrorNotification - end + Gosub SendErrorNotification end - end end service @@ -525,19 +608,20 @@ end service SendErrorNotification: - Recipients = XLATE('NOTIFICATION','FI_SUPPORT',NOTIFICATION_USER_ID$,'X') - SentFrom = 'MATERIAL_MOVEMENT_SERVICES' - Subject = 'ERROR CALLING OBJ_WO_MAT ' - Message = 'Error occured while attempting to write WO_MAT_LOG at ':Location:' Scan':CRLF$:ErrorMsg - AttachKey = WoMatKey - AttachWindow = '' - SendToGroup = '' + Recipients = '' + SentFrom = 'MATERIAL_MOVEMENT_SERVICES' + Subject = 'ERROR CALLING OBJ_WO_MAT ' + Message = 'Error occured while attempting to write WO_MAT_LOG at ':Location:' Scan':CRLF$:ErrorMsg + AttachKey = WoMatKey + AttachWindow = '' + SendToGroup = 'FI_SUPPORT' Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup obj_Notes('Create',Parms) return + ToggleLotHold: If ScanMismatch EQ True$ then @@ -578,22 +662,26 @@ ToggleLotHold: // To do: Throw Error End Case Convert '*' to '.' in Cassette1 - HoldEntityID = Cassette1 - - // Manually add work order material log entry - WOMatKey = WONo:'*':CassNo - WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) - NumTimestamps = Dcount(WOMatRec, @VM) - NewEntryPos = NumTimestamps + 1 - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_WH$, NewEntryPos, 0, WhCd) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_LOCATION$, NewEntryPos, 0, LocCd) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_ACTION$, NewEntryPos, 0, Action) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_DTM$, NewEntryPos, 0, LogDTM) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_USER$, NewEntryPos, 0, UserID) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_TAG$, NewEntryPos, 0, Tags) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_TOOL_ID$, NewEntryPos, 0, ToolID) - Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$) + + WOMLParms = LogFile:@RM + WOMLParms := LogDTM:@RM + WOMLParms := Action:@RM + WOMLParms := WhCd:@RM + WOMLParms := LocCd:@RM + WOMLParms := WONo:@RM + WOMLParms := CassNo:@RM + WOMLParms := UserID:@RM + WOMLParms := Tags:@RM + WOMLParms := ToolID + Set_Status(0) + errCode = '' + obj_WO_Mat_Log('Create',WOMLParms) + If Get_Status(errCode) then + Swap @SVM with CRLF$ in errCode + ErrorMsg = 'Error calling obj_WO_Mat_Log("Create"). Error code: ':errCode + Gosub SendErrorNotification + end // Place first cassette on hold WOMatKey = WONo:'*':CassNo @@ -637,24 +725,26 @@ ToggleLotHold: ToolID = '' HoldEntityID = Cassette2 - // Manually add work order material log entry - - WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey) - NumTimestamps = Dcount(WOMatRec, @VM) - NewEntryPos = NumTimestamps + 1 - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_WH$, NewEntryPos, 0, WhCd) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_LOCATION$, NewEntryPos, 0, LocCd) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_ACTION$, NewEntryPos, 0, Action) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_DTM$, NewEntryPos, 0, LogDTM) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_USER$, NewEntryPos, 0, UserID) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_TAG$, NewEntryPos, 0, Tags) - WOMatRec = INSERT(WOMatRec, WO_MAT_INV_TOOL_ID$, NewEntryPos, 0, ToolID) - Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$) + WOMLParms = LogFile:@RM + WOMLParms := LogDTM:@RM + WOMLParms := Action:@RM + WOMLParms := WhCd:@RM + WOMLParms := LocCd:@RM + WOMLParms := WONo:@RM + WOMLParms := CassNo:@RM + WOMLParms := UserID:@RM + WOMLParms := Tags:@RM + WOMLParms := ToolID + Set_Status(0) + errCode = '' + obj_WO_Mat_Log('Create',WOMLParms) + If Get_Status(errCode) then + Swap @SVM with CRLF$ in errCode + ErrorMsg = 'Error calling obj_WO_Mat_Log("Create"). Error code: ':errCode + Gosub SendErrorNotification + end - //pause before putting second cassette on hold - // Place second cassette on hold - WOMatKey = WONo:'*':CassNo CtrlEntID = False$ ;* Control checked/unchecked OriginFlag = 'PTO' ;* Flag to indicate a hold initiated from the packaging form @@ -662,7 +752,8 @@ ToggleLotHold: Hold_Services('ToggleHold', WOMatKey, HoldEntity, HoldEntityID, CtrlEntID, OriginFlag, '', OperatorID) end - gosub SendPTOMismatchNotification + GoSub SendPTOMismatchNotification + errCode = '' IF Get_Status(errCode) THEN Error_Services('Add', 'Error code ':errCode:' in ':Service:' service.') Error_Services('Add', 'Cassette scans did not match! Both cassettes placed on hold - Supervisor, Lead, or Engineering disposition required.') @@ -671,6 +762,7 @@ ToggleLotHold: return + SendPTOMismatchNotification: // Send scan mismatch notification diff --git a/LSL2/STPROC/NDW_FQA_MAT_SCAN_EVENTS.txt b/LSL2/STPROC/NDW_FQA_MAT_SCAN_EVENTS.txt index 64bb303..d31247b 100644 --- a/LSL2/STPROC/NDW_FQA_MAT_SCAN_EVENTS.txt +++ b/LSL2/STPROC/NDW_FQA_MAT_SCAN_EVENTS.txt @@ -36,40 +36,37 @@ $insert WO_MAT_EQUATES $insert APPCOLORS $insert MESSAGE_BOX_EQUATES -Equ CRLF$ to \0D0A\ +Equ CRLF$ to \0D0A\ Equ MSG_WIDTH$ to 600 Equ EditTable$ to @Window:'.OLE_EDT_SCANDATA' Equ Cassette1$ to @Window:'.EDL_CASSETTE1_SCAN' Equ Cassette2$ to @Window:'.EDL_CASSETTE2_SCAN' -Equ Supplier$ to @Window:'.EDL_SUPPLIER_SCAN' +Equ Supplier$ to @Window:'.EDL_SUPPLIER_SCAN' Declare subroutine Set_Property, Send_Event, Post_Event, Send_Message, SendMessage, Error_Services Declare subroutine Obj_Wo_Mat_Log, Errmsg, Utility, SRP_Show_Window, Material_Movement_Services, Set_Status Declare function Get_Property, Send_Message, SendMessage, Material_Movement_Services, Error_Services, Declare function Popup, obj_WO_Mat, Database_Services, Utility, Rds_Services, Message_Box -*Subclass = @Window : '.OLE_SUBCLASS' - // 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 + 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 + // Event not implemented end Return EventFlow or 1 -*global ScanField = '' //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -77,33 +74,24 @@ ScanField = '' //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Event WINDOW.CREATE(CreateParam) - -* CurrVer = Xlate('APP_INFO', 'LSL2_VERSION', '', 'X') -* UserVer = Xlate('LSL_USERS', @User4, 'LSL2_VERSION', 'X') -* If UserVer NE CurrVer then -* // Error message and close form -* ErrMsg = 'OpenInsight Version Error':@FM:'You are running an outdated version of OpenInsight and cannot release material until you restart your session.' -* Msg(@Window, '', 'OK', '', ErrMsg) -* Post_Event(@Window, 'CLOSE') -* end else - GoSub SetupOLEControls - GoSub ResetForm - SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize) - MsgStruct = '' - MsgStruct = MSG_WIDTH$ -* end - + + GoSub SetupOLEControls + GoSub ResetForm + SRP_Show_Window(@Window, '', 'C', 'C', 1, '', False$, False$, FormSize) + MsgStruct = '' + MsgStruct = MSG_WIDTH$ + end event Event OLE_BTN_CLEAR.OnClick(Point, Button, Shift, Ctrl) + *get count of unprocessed records - allCompleted = True$ resp = '' Data = Get_Property(EditTable$, "OLE.ARRAY") cnt = count(Data<1>, @VM) + (Data<1># '') - + for i = 1 to cnt while allCompleted EQ True$ cntProc = 0 status = Data<4,i> @@ -120,105 +108,117 @@ Event OLE_BTN_CLEAR.OnClick(Point, Button, Shift, Ctrl) GoSub ResetForm end end + end event Event OLE_BTN_SAVE.OnClick(Point, Button, Shift, Ctrl) + *check for unfinished scan F1 = Get_Property(Cassette1$, 'TEXT') F2 = Get_Property(Cassette2$, 'TEXT') F3 = Get_Property(Supplier$, 'TEXT') resp = True$ - If F1 NE '' OR F2 NE '' OR F3 NE '' then + If F1 NE '' OR F2 NE '' OR F3 NE '' then resp = Message_Box(@Window, 'You have an unfinished scan (not in grid) - continue?', 'Confirm Save', MSG_BTN_OKCAN$ + MSG_DEFAULT2$) - end - if resp EQ True$ Then + end + if resp EQ True$ Then Warehouse = '1K' Location = 'PTI' Gosub SaveRecords end + end event Event EDL_CASSETTE1_SCAN.LOSTFOCUS(Flag, FocusID) + ScanField = 'Cassette1' - If Flag EQ 1 then - ScanData = Get_Property(CtrlEntID, 'TEXT') - If ScanData NE '' then - ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'CASSETTE1') - If Error_Services('NoError') then - Set_Property(CtrlEntID, 'TEXT', ScanData) - Set_Property(Cassette2$, 'ENABLED', True$) - Set_Property(Cassette2$, 'FOCUS', True$) - Set_Property(CtrlEntID, 'ENABLED', False$) - Gosub ValidateGrid - end else - GoSub ResetForm - ErrorMessage = Error_Services('GetMessage') - Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) - end - end - end + If Flag EQ 1 then + ScanData = Get_Property(CtrlEntID, 'TEXT') + If ScanData NE '' then + ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'CASSETTE1') + If Error_Services('NoError') then + RDSNo = ScanData<1> + SeqNo = ScanData<2> + Set_Property(Cassette1$, '@SEQNO', SeqNo) + Set_Property(CtrlEntID, 'TEXT', RDSNo) + Set_Property(Cassette2$, 'ENABLED', True$) + Set_Property(Cassette2$, 'FOCUS', True$) + Set_Property(CtrlEntID, 'ENABLED', False$) + Gosub ValidateGrid + end else + GoSub ResetForm + ErrorMessage = Error_Services('GetMessage') + Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) + end + end + end + end event Event EDL_CASSETTE2_SCAN.LOSTFOCUS(Flag, FocusID) + ScanField = 'Cassette2' - If Flag EQ 1 then - ScanData = Get_Property(CtrlEntID, 'TEXT') - Cass1 = Get_Property(Cassette1$, 'TEXT') - retVal = Set_Property(@window, '@IsEpp', False$) - If ScanData[1,1] = 'O' OR ScanData[1,3] = '1TO' then - retVal = Set_Property(@window, '@IsEpp', True$) - end - If ScanData NE '' then - ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'CASSETTE2', Cass1) - If Error_Services('NoError') then - * IF EPP, prepopulate lot and just validate - - If Get_Property(@window, '@IsEpp') EQ True$ then - Set_Property(CtrlEntID, 'TEXT', ScanData) - Set_Property(Supplier$, 'TEXT', 'EpiPRO') + If Flag EQ 1 then + ScanData = Get_Property(CtrlEntID, 'TEXT') + Cass1 = Get_Property(Cassette1$, 'TEXT') + Seq1No = Get_Property(Cassette1$, '@SEQNO') + retVal = Set_Property(@window, '@IsEpp', False$) + If Index(ScanData, '.', 1) then + retVal = Set_Property(@window, '@IsEpp', True$) + end + If ScanData NE '' then + ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'CASSETTE2', Cass1, Seq1No) + If Error_Services('NoError') then + * IF EPP, prepopulate lot and just validate + If Get_Property(@window, '@IsEpp') EQ True$ then + Set_Property(CtrlEntID, 'TEXT', ScanData) + Set_Property(Supplier$, 'TEXT', 'EpiPRO') Gosub ValidateGrid Set_Property(Supplier$, 'ENABLED', False$) Set_Property(Cassette1$, 'FOCUS', True$) Gosub ValidateGrid - end else + end else Set_Property(CtrlEntID, 'TEXT', ScanData) Gosub ValidateGrid Set_Property(Supplier$, 'ENABLED', True$) Set_Property(Supplier$, 'FOCUS', True$) Set_Property(CtrlEntID, 'ENABLED', False$) Gosub ValidateGrid - end - end else - GoSub ResetForm - ErrorMessage = Error_Services('GetMessage') - Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) - end - end - end + end + end else + GoSub ResetForm + ErrorMessage = Error_Services('GetMessage') + Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) + end + end + end + end event Event EDL_SUPPLIER_SCAN.LOSTFOCUS(Flag, FocusID) + ScanField = 'Lot' - If Flag EQ 1 then - Cassette1 = Get_Property(Cassette1$, 'TEXT') - ScanData = Get_Property(CtrlEntID, 'TEXT') - If ScanData NE '' then - ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'SUPPLIER', Cassette1) - If Error_Services('NoError') then - Set_Property(CtrlEntID, 'TEXT', ScanData) - Set_Property(CtrlEntID, 'ENABLED', False$) - Gosub ValidateGrid - end else - GoSub ResetForm - ErrorMessage = Error_Services('GetMessage') - Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) - end - end - end + If Flag EQ 1 then + Cassette1 = Get_Property(Cassette1$, 'TEXT') + ScanData = Get_Property(CtrlEntID, 'TEXT') + If ScanData NE '' then + ScanData = Material_Movement_Services('ProcessFQAScanData', ScanData, 'SUPPLIER', Cassette1) + If Error_Services('NoError') then + Set_Property(CtrlEntID, 'TEXT', ScanData) + Set_Property(CtrlEntID, 'ENABLED', False$) + Gosub ValidateGrid + end else + GoSub ResetForm + ErrorMessage = Error_Services('GetMessage') + Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) + end + end + end + end event @@ -227,6 +227,7 @@ end event //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SaveRecords: + *iterate thround all records in the grid, saving them and updating the status and location Data = Get_Property(EditTable$, "OLE.ARRAY") cnt = count(Data<1>, @VM) + (Data<1># '') @@ -243,12 +244,12 @@ SaveRecords: Loc = '1K*PTI' Set_Property(EditTable$, 'OLE.CellColors[ALL;':i:']', 'Auto':@FM:'Auto') cntProc += 1 - end else - Status = 'Error' + end else + Status = 'Error' Set_Property(EditTable$, 'OLE.CellColors[ALL;':i:']', 'Auto':@FM:'Red') - end - - Set_Property(EditTable$, 'OLE.CELLTEXT[4;':i:']', Status) + end + + Set_Property(EditTable$, 'OLE.CELLTEXT[4;':i:']', Status) Set_Property(EditTable$, 'OLE.CELLTEXT[5;':i:']', Loc) end Next i @@ -269,11 +270,12 @@ SaveRecords: end Gosub DisableFormControls - + return ValidateGrid: + F1 = Get_Property(Cassette1$, 'TEXT') F2 = Get_Property(Cassette2$, 'TEXT') F3 = Get_Property(Supplier$, 'TEXT') @@ -285,11 +287,6 @@ ValidateGrid: result = 1 end end -* if ScanField = 'Lot' then ; * do not look for duplicates -* result = 0 -* end else -* result = InList(Data, ScanData, @VM) OR InList(Data, ScanData, @FM) -* end If INDEX(F1,'.',2) then RDSType = 'EPP' @@ -308,76 +305,78 @@ ValidateGrid: Case RDSType EQ 'EPP' WOMatKey = FIELD(F1,'*',1):'*':FIELD(F1,'*',3) Location = XLATE('WO_MAT', WOMatKey, 'CURR_LOCATION', '', '') - + End Case - + if result EQ 1 then ErrorMessage = 'Value already exists in grid: ':ScanData - Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) + Msg(@Window, MsgStruct, 'PROCESS_ERROR', '', ErrorMessage) Gosub ResetForm end else if F1 NE '' AND F2 NE '' AND F3 NE '' then - - // Add Material Log Entry - CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS') - UserID = @USER4 - - LogFile = 'WO_MAT' ;* Changed so all scans are logged in the WO_MAT table 12/3/2006 - Action = 'LBLCHK' ;* Final label check for same top and bottom and correct Lot Number on WO_MAT record - WHCd = 'CR' ;* Clean room @ final QA - LocCd = 'PKO' ;* QA wants this to "place" the cassette into the outbound passthrough - WONo = Field(WOMatKey, '*', 1) - CassNo = Field(WOMatKey, '*', 2) - Set_Status(0) - obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONo:@RM:CassNo:@RM:UserID:@RM:'Match') - - IF Get_Status(errCode) THEN - Errmsg(errCode) - END else - // Insert row into OLE edit table to provide user feedback. - Data = '' - Data<1> = F1:@VM:F2:@VM:F3:@VM:'Completed':@VM:Location:@VM - Send_Message(EditTable$, 'OLE.INSERT', 1, Data) - GoSub ResetForm - end - + + // Add Material Log Entry + CurrDTM = OCONV(Date(),'D2/'):' ':OCONV(Time(),'MTS') + UserID = @USER4 + + LogFile = 'WO_MAT' ;* Changed so all scans are logged in the WO_MAT table 12/3/2006 + Action = 'LBLCHK' ;* Final label check for same top and bottom and correct Lot Number on WO_MAT record + WHCd = 'CR' ;* Clean room @ final QA + LocCd = 'PKO' ;* QA wants this to "place" the cassette into the outbound passthrough + WONo = Field(WOMatKey, '*', 1) + CassNo = Field(WOMatKey, '*', 2) + Set_Status(0) + obj_WO_Mat_Log('Create',LogFile:@RM:CurrDTM:@RM:Action:@RM:WhCd:@RM:LocCd:@RM:WONo:@RM:CassNo:@RM:UserID:@RM:'Match') + + IF Get_Status(errCode) THEN + Errmsg(errCode) + END else + // Insert row into OLE edit table to provide user feedback. + Data = '' + Data<1> = F1:@VM:F2:@VM:F3:@VM:'Completed':@VM:Location:@VM + Send_Message(EditTable$, 'OLE.INSERT', 1, Data) + GoSub ResetForm + end + end return DisableFormControls: + Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'TEXT', '') Set_Property(@Window:'.EDL_CASSETTE2_SCAN', 'TEXT', '') Set_Property(@Window:'.EDL_SUPPLIER_SCAN', 'TEXT', '') Set_Property(@Window:'.EDL_CASSETTE1_SCAN', 'ENABLED', False$) Set_Property(@Window:'.EDL_CASSETTE2_SCAN', 'ENABLED', False$) Set_Property(@Window:'.EDL_SUPPLIER_SCAN', 'ENABLED', False$) + return SetupOLEControls: - - // Qualify OLE events that we want to intercept - Qualifier = '' - Qualifier<1> = 1 - Qualifier<3> = '' - Qualifier<4> = 0 ; * process synchronously - NumCols = 4 - NumRows = 150 - - Ctrl = @Window:'.OLE_BTN_CLEAR' - Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier) - Ctrl = @Window:'.OLE_BTN_SAVE' - Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier) - - DimensionArray = NumCols:@FM:NumRows - Set_Property(EditTable$, "OLE.Dimension", DimensionArray) - Titles = "Top Label":@VM:"Bottom Label":@VM:"Sub Lot":@VM:"Scan Status" - Set_Property(EditTable$, "OLE.TitleList", Titles) - - Set_Property(EditTable$, "OLE.DataColumn[1-2]", '85') - Set_Property(EditTable$, "OLE.DataColumn[3]", '80') - Set_Property(EditTable$, "OLE.DataColumn[4]", '90') + + // Qualify OLE events that we want to intercept + Qualifier = '' + Qualifier<1> = 1 + Qualifier<3> = '' + Qualifier<4> = 0 ; * process synchronously + NumCols = 4 + NumRows = 150 + + Ctrl = @Window:'.OLE_BTN_CLEAR' + Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier) + Ctrl = @Window:'.OLE_BTN_SAVE' + Send_Message(Ctrl, 'QUALIFY_EVENT', 'OLE.OnClick', Qualifier) + + DimensionArray = NumCols:@FM:NumRows + Set_Property(EditTable$, "OLE.Dimension", DimensionArray) + Titles = "Top Label":@VM:"Bottom Label":@VM:"Sub Lot":@VM:"Scan Status" + Set_Property(EditTable$, "OLE.TitleList", Titles) + + Set_Property(EditTable$, "OLE.DataColumn[1-2]", '85') + Set_Property(EditTable$, "OLE.DataColumn[3]", '80') + Set_Property(EditTable$, "OLE.DataColumn[4]", '90') AlignArray = 'C':@FM:'C':@FM:'L' Set_Property(EditTable$, "OLE.CellAlignment[All; All]", AlignArray) @@ -391,11 +390,13 @@ SetupOLEControls: AutoNumArray<1, 1> = 'I' ; // Integers AutoNumArray<1, 2> = 1 ; // Starting integer Set_Property(EditTable$, "OLE.AutoNumbers", AutoNumArray) - + Set_Property(EditTable$, "OLE.CellProtection[All; All]", 'SEL') SelStyleArray = 'Black' : @VM : OI_HOT_BLUE$ : ' L=70' : @FM : 'Black' : @VM : OI_HOT_BLUE$ Set_Property(EditTable$, 'OLE.SelectionStyle', SelStyleArray) ; // Automatically highlight the current row with one color and highlight the current row with another color. - + + Set_Property(@Window:'.OLE_BTN_CLEAR', 'OLE.Style', 'STD') + return @@ -414,5 +415,7 @@ ResetForm: cnt = count(Data<1>, @VM) + (Data<1># '') Set_Property(@Window:'.OLE_BTN_SAVE', 'ENABLED', cnt GE 1) Set_Property(EditTable$, 'OLE.CellColors[ALL;All]', 'Auto':@FM:'Auto') + Set_Property(Cassette1$, '@SEQNO', '') + return diff --git a/LSL2/STPROC/NDW_PTI_MAT_SCAN_EVENTS.txt b/LSL2/STPROC/NDW_PTI_MAT_SCAN_EVENTS.txt index 24d17a0..ae68d85 100644 --- a/LSL2/STPROC/NDW_PTI_MAT_SCAN_EVENTS.txt +++ b/LSL2/STPROC/NDW_PTI_MAT_SCAN_EVENTS.txt @@ -36,20 +36,18 @@ $insert WO_MAT_EQUATES $insert APPCOLORS $insert MESSAGE_BOX_EQUATES -Equ CRLF$ to \0D0A\ +Equ CRLF$ to \0D0A\ Equ MSG_WIDTH$ to 600 Equ EditTable$ to @Window:'.OLE_EDT_SCANDATA' Equ Cassette1$ to @Window:'.EDL_CASSETTE1_SCAN' Equ Cassette2$ to @Window:'.EDL_CASSETTE2_SCAN' -Equ Supplier$ to @Window:'.EDL_SUPPLIER_SCAN' +Equ Supplier$ to @Window:'.EDL_SUPPLIER_SCAN' Declare subroutine Set_Property, Send_Event, Post_Event, Send_Message, SendMessage, Error_Services Declare subroutine Obj_Wo_Mat_Log, Errmsg, Utility, SRP_Show_Window, Material_Movement_Services, PlaceDialog Declare function Get_Property, Send_Message, SendMessage, Material_Movement_Services, Error_Services, Declare function Popup, obj_WO_Mat, Database_Services, Utility, Rds_Services, Message_Box -*Subclass = @Window : '.OLE_SUBCLASS' - // 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 @@ -69,7 +67,6 @@ end Return EventFlow or 1 -*global ScanField = '' //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -151,7 +148,10 @@ Event EDL_CASSETTE1_SCAN.LOSTFOCUS(Flag, FocusID) If ScanData NE '' then ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE1') If Error_Services('NoError') then - Set_Property(CtrlEntID, 'TEXT', ScanData) + RDSNo = ScanData<1> + SeqNo = ScanData<2> + Set_Property(Cassette1$, '@SEQNO', SeqNo) + Set_Property(CtrlEntID, 'TEXT', RDSNo) Set_Property(Cassette2$, 'ENABLED', True$) Set_Property(Cassette2$, 'FOCUS', True$) Set_Property(CtrlEntID, 'ENABLED', False$) @@ -171,11 +171,12 @@ end event Event EDL_CASSETTE2_SCAN.LOSTFOCUS(Flag, FocusID) ScanField = 'Cassette2' - If Flag EQ 1 then + If Flag EQ 1 then ScanData = Get_Property(CtrlEntID, 'TEXT') Cass1 = Get_Property(Cassette1$, 'TEXT') + Seq1No = Get_Property(Cassette1$, '@SEQNO') If ScanData NE '' then - ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE2', Cass1) + ScanData = Material_Movement_Services('ProcessPTIScanData', ScanData, 'CASSETTE2', Cass1, Seq1No) If Error_Services('NoError') then Set_Property(CtrlEntID, 'TEXT', ScanData) Gosub ValidateGrid @@ -379,6 +380,9 @@ SetupOLEControls: SelStyleArray = 'Black' : @VM : OI_HOT_BLUE$ : ' L=70' : @FM : 'Black' : @VM : OI_HOT_BLUE$ Set_Property(EditTable$, 'OLE.SelectionStyle', SelStyleArray) ; // Automatically highlight the current row with one color and highlight the current row with another color. + Set_Property(@Window:'.OLE_BTN_CLEAR', 'OLE.Style', 'STD') + Set_Property(@Window:'.OLE_BTN_SAVE', 'OLE.Style', 'STD') + return diff --git a/LSL2/STPROC/PRINT_CASS_LABELS.txt b/LSL2/STPROC/PRINT_CASS_LABELS.txt index 539c41e..5cbc1af 100644 --- a/LSL2/STPROC/PRINT_CASS_LABELS.txt +++ b/LSL2/STPROC/PRINT_CASS_LABELS.txt @@ -15,6 +15,7 @@ $INSERT EPI_PART_EQUATES $INSERT COMPANY_EQUATES $INSERT CUST_EPI_PART_EQUATES $INSERT PRS_STAGE_EQUATES +$INSERT UNIT_EQUATES DECLARE FUNCTION FIELDCOUNT, MSG, Key_Sort, Get_Printer, SRP_Math, Set_Printer, Utility, obj_Install, Printer_Select, obj_Vendor_Code, Direct_Print, Environment_Services DECLARE SUBROUTINE Extract_Si_Keys, Update_Index, ErrMsg @@ -48,129 +49,139 @@ EQU PS$RECIPE TO 3 EQU PS$FREQ TO 4 EQU PS$PATTERN TO 11 -IF NOT(ASSIGNED(RdsIds)) THEN RdsIds = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade -IF NOT(ASSIGNED(MultiStep)) THEN MultiStep = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade +Main: -IF RdsIds = '' THEN RETURN 0 ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade -IF MultiStep = '' THEN MultiStep = 0 ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade + IF NOT(ASSIGNED(RdsIds)) THEN RdsIds = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade + IF NOT(ASSIGNED(MultiStep)) THEN MultiStep = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade -FileName = "Printing Label" -Title = "Printing Label" + IF RdsIds = '' THEN RETURN 0 ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade + IF MultiStep = '' THEN MultiStep = 0 ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade -PageInfo = '' -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 + FileName = "Printing Label" + Title = "Printing Label" -PageSetup = '1' ;* Landscape -PrintSetup = '' ;* Preview + PageInfo = '' + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 -PrinterID = '' -PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed + PageSetup = '1' ;* Landscape + PrintSetup = '' ;* Preview -If PrintPath NE '' then - - If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath) - end else - stat = Direct_Print('START', PrintPath<1>, '', '') - end - - IF stat < 0 THEN GOTO OIPrint_Error - - EQU DosPath$ TO 'C:\WINDOWS\OIZPL.TXT' ;* remove jch - - CLOrientation = '' ;* used for printing on cleanroom labels - - IF RdsIds THEN - Update_Index ("RDS", "WO", "") - Void = utility( 'CURSOR', 'H' ) - IdCnt = fieldcount( RdsIds, @FM ) - * sort by run order number - IF IdCnt > 1 THEN - RdsIds = key_sort( RdsIds, 'RDS', 'WO':@FM:'RUN_ORDER_NUM', 1, '', '' ) - END + PrinterID = '' + PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed + + If PrintPath NE '' then - // To work around the design flaws in the label printing logic regarding multiple RDS Key IDs - // while still preserving the variable names, the RdsIds values will be transferred to AllRdsIds - // and then each RDS Key ID will be parsed in a loop and passed into the RdsIds variable. - Transfer RdsIds to AllRdsIds - For Each RdsIds in AllRdsIds using @FM - IdCnt = fieldcount( RdsIds, @FM ) - GOSUB PrintCleanRoomLabels - Next RdsIds + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath) + end else + stat = Direct_Print('START', PrintPath<1>, '', '') + end - // Restore RdsIds variable for other processes that need it to be intact. - Transfer AllRdsIds to RdsIds + IF stat GE 0 THEN - UniqueWOs = '' - CustNos = '' - CompositeKeys = '' - IdCnt = fieldcount( RdsIds, @FM ) - - IF MultiStep > 0 THEN + EQU DosPath$ TO 'C:\WINDOWS\OIZPL.TXT' ;* remove jch - WOStepKeys = XLATE('RDS',RdsIds,RDS_WO_STEP_KEY$,'X') ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade - FOR I = 1 TO IdCnt - ThisWO = WOStepKeys - CONVERT '*' TO '.' IN ThisWO - CassNo = XLATE('RDS',RdsIds,'CASS_NO','X') - WOMatRec = XLATE('WO_MAT',ThisWO:'*':CassNo,'','X') - ReShipCustNo = WOMatRec - If ReShipCustNo EQ '' then - CustNo = XLATE( 'WO_LOG', ThisWO, wo_log_cust_no$, 'X' ) - end else - CustNo = ReShipCustNo - end - LOCATE ThisWO : '*' : CustNo IN CompositeKeys USING @VM SETTING FPos ELSE - UniqueWOs<1,-1> = ThisWO - CustNos<1,-1> = CustNo - CompositeKeys<1,-1> = ThisWO : '*' : CustNo + CLOrientation = '' ;* used for printing on cleanroom labels + + IF RdsIds THEN + Update_Index ("RDS", "WO", "") + Void = utility( 'CURSOR', 'H' ) + IdCnt = fieldcount( RdsIds, @FM ) + * sort by run order number + IF IdCnt > 1 THEN + RdsIds = key_sort( RdsIds, 'RDS', 'WO':@FM:'RUN_ORDER_NUM', 1, '', '' ) END - NEXT I - - END ELSE - - AllWOs = XLATE( 'RDS', RdsIds, rds_wo$, 'X' ) - FOR I = 1 TO IdCnt - ThisWO = AllWOs - CassNo = XLATE('RDS',RdsIds,'CASS_NO','X') - WOMatRec = XLATE('WO_MAT',ThisWO:'*':CassNo,'','X') - ReShipCustNo = WOMatRec - If ReShipCustNo EQ '' then - CustNo = XLATE( 'WO_LOG', ThisWO, wo_log_cust_no$, 'X' ) - end else - CustNo = ReShipCustNo - end - LOCATE ThisWO : '*' : CustNo IN CompositeKeys USING @VM SETTING Fpos ELSE - UniqueWOs<1,-1> = ThisWO - CustNos<1,-1> = CustNo - CompositeKeys<1,-1> = ThisWO : '*' : CustNo - END - NEXT I - - END + + // To work around the design flaws in the label printing logic regarding multiple RDS Key IDs + // while still preserving the variable names, the RdsIds values will be transferred to AllRdsIds + // and then each RDS Key ID will be parsed in a loop and passed into the RdsIds variable. + Transfer RdsIds to AllRdsIds + For Each RdsIds in AllRdsIds using @FM + IdCnt = fieldcount( RdsIds, @FM ) + GOSUB PrintCleanRoomLabels + Next RdsIds + + // Restore RdsIds variable for other processes that need it to be intact. + Transfer AllRdsIds to RdsIds + + UniqueWOs = '' + CustNos = '' + CompositeKeys = '' + IdCnt = fieldcount( RdsIds, @FM ) + + IF MultiStep > 0 THEN + + WOStepKeys = XLATE('RDS',RdsIds,RDS_WO_STEP_KEY$,'X') ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade + FOR I = 1 TO IdCnt + ThisWO = WOStepKeys + CONVERT '*' TO '.' IN ThisWO + CassNo = XLATE('RDS',RdsIds,'CASS_NO','X') + WOMatRec = XLATE('WO_MAT',ThisWO:'*':CassNo,'','X') + ReShipCustNo = WOMatRec + If ReShipCustNo EQ '' then + CustNo = XLATE( 'WO_LOG', ThisWO, wo_log_cust_no$, 'X' ) + end else + CustNo = ReShipCustNo + end + LOCATE ThisWO : '*' : CustNo IN CompositeKeys USING @VM SETTING FPos ELSE + UniqueWOs<1,-1> = ThisWO + CustNos<1,-1> = CustNo + CompositeKeys<1,-1> = ThisWO : '*' : CustNo + END + NEXT I + + END ELSE + + AllWOs = XLATE( 'RDS', RdsIds, rds_wo$, 'X' ) + FOR I = 1 TO IdCnt + ThisWO = AllWOs + CassNo = XLATE('RDS',RdsIds,'CASS_NO','X') + WOMatRec = XLATE('WO_MAT',ThisWO:'*':CassNo,'','X') + ReShipCustNo = WOMatRec + If ReShipCustNo EQ '' then + CustNo = XLATE( 'WO_LOG', ThisWO, wo_log_cust_no$, 'X' ) + end else + CustNo = ReShipCustNo + end + LOCATE ThisWO : '*' : CustNo IN CompositeKeys USING @VM SETTING Fpos ELSE + UniqueWOs<1,-1> = ThisWO + CustNos<1,-1> = CustNo + CompositeKeys<1,-1> = ThisWO : '*' : CustNo + END + NEXT I + + END + + GOSUB PrintWOLabels ;* Activated WO label printing again -dkk 12/3/14 + + WONo = XLATE('RDS',RdsIds<1>,RDS_WO$,'X') + CustNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_NO$,'X') + Void = UTILITY( 'CURSOR', 'A' ) + END + end - GOSUB PrintWOLabels ;* Activated WO label printing again -dkk 12/3/14 + GoSub EndPrint - WONo = XLATE('RDS',RdsIds<1>,RDS_WO$,'X') - CustNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_NO$,'X') - Void = UTILITY( 'CURSOR', 'A' ) - END - - * * * * * * - OIPrint_Error: - * * * * * * - + end + +RETURN + + +* * * * * * +EndPrint: +* * * * * * + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then stat = Set_Printer("TERM") end else stat = Direct_Print('STOP') end -end -RETURN +return + * * * * * * * * * * * * Local Subroutines * * * * * * * * * * * * @@ -246,9 +257,7 @@ PrintCleanRoomLabels: PSNIds = XLATE( 'RDS', RdsIds, rds_prod_spec_id$, 'X' ) SpecType = OCONV( XLATE( 'RDS', RdsIds, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' ) SubPartNum = XLATE( 'RDS', RdsIds, 'SUB_PART_NUM', 'X' ) - RecipeInfo = XLATE( 'RECIPE', RecipeIDS, 'RECIPE_NAME_NO', 'X' ) - ThickVar = XLATE( 'PROD_SPEC', PSNIds, 'THICK_MEASURE_L1', 'X' ) ResVar = XLATE( 'PROD_SPEC', PSNIds, 'RES_MEASURE_L1', 'X' ) ConVar = XLATE( 'PROD_SPEC', PSNIds, 'CON_MEASURE_L1', 'X' ) @@ -618,16 +627,16 @@ PrintCleanRoomLabels: END swap '~' with fmt( ' ', 'L#2' ) in PrintThickPrintVar - swap 'æm' with 'um' in PrintThickTargets - swap 'ê-cm' with 'ohm.cm' in PrintThickTargets - swap 'ê/Ü' with 'ohm/sq' in PrintThickTargets - swap '' with 'A' in PrintThickTargets + swap UNIT_MICROMETER$ with 'um' in PrintThickTargets + swap UNIT_OHM_CM$ with 'ohm.cm' in PrintThickTargets + swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintThickTargets + swap UNIT_A$ with 'A' in PrintThickTargets swap '~' with fmt( ' ', 'L#2' ) in PrintResPrintVar - swap 'æm' with 'um' in PrintResTargets - swap 'ê-cm' with 'ohm.cm' in PrintResTargets - swap 'ê/Ü' with 'ohm/sq' in PrintResTargets - swap '' with 'A' in PrintResTargets + swap UNIT_MICROMETER$ with 'um' in PrintResTargets + swap UNIT_OHM_CM$ with 'ohm.cm' in PrintResTargets + swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintResTargets + swap UNIT_A$ with 'A' in PrintResTargets //only print cheat sheet label on cassette #1 IF CassNo EQ 1 then @@ -644,6 +653,7 @@ RETURN * * * * * * * PrintLabel: * * * * * * * + * Standard RDS Label print method IF PrintSpecType EQ 'Production' THEN PrintSpecType = 'Prod' IF PrintSpecType EQ 'Pre-Production' THEN PrintSpecType = 'Pre' @@ -659,71 +669,71 @@ PrintLabel: PrintQARecipe = FIELD(PrintRecipe, @VM, 1) PrintCompany = PrintCompany[1,32] -//looping instead of using ^PQ2 since I have to set sequential key in 2D barcode + // Looping instead of using ^PQ2 since I have to set sequential key in 2D barcode Str = '' -For cnt = 1 to 2 - Str := '^XA' - Str := '^LH0,0' - Str := '^PR1' ;* Print speed 2 inches per second - Str := '^LL406' ;* Label length @203 dpi - Str := '^PW900' - Str := '^MD0' ;* Media darkness - Str := '^MMT' ;* Media mode t=tear off mode - *Str := '^PQ2' ;* Print 2 labels for each pass through here + For cnt = 1 to 2 + Str := '^XA' + Str := '^LH0,0' + Str := '^PR1' ;* Print speed 2 inches per second + Str := '^LL406' ;* Label length @203 dpi + Str := '^PW900' + Str := '^MD5' ;* Media darkness + Str := '^MMT' ;* Media mode t=tear off mode + *Str := '^PQ2' ;* Print 2 labels for each pass through here + + ****** First Line, Cust, WO and RO + Str := '^FO25,25^AC,18^FDCust: ^FS':CRLF$ + Str := '^FO95,14^A045,35^FD':PrintCompany:'^FS':CRLF$ + Str := '^FO570,25^AC18^FDWO: ^FS':CRLF$ + Str := '^FO610,14^A045,35^FD':PrintWO:'^FS':CRLF$ + Str := '^FO730,25^AC18^FDRO: ^FS':CRLF$ + Str := '^FO770,14^A045,35^FD':PrintRONum:'^FS':CRLF$ + + ****** Second Line, Cust Spec, PSN and Type + Str := '^FO25,75^AC18^FD(P)Cust Spec: ^FS':CRLF$ + Str := '^FO185,65^A045,35^FD':CustEpiPartSpecNo:'^FS':CRLF$ + Str := '^FO25,95^BY2,2.0^B3,,50,N^FDP':CustEpiPartSpecNo:'^FS':CRLF$ + Str := '^FO640,75^AC18^FDPSN:^FS':CRLF$ + Str := '^FO690,65^A045,35^FD':PrintPSN:'^FS':CRLF$ + Str := '^FO630,125^AC18^FDType:^FS':CRLF$ + Str := '^FO690,115^A045,30^FD':PrintSpecType:'^FS':CRLF$ + + ****** Third Line, Sub Lot, Qty and RDS + Str := '^FO25,175^AC18^FD(2T)Sub Lot:^FS':CRLF$ + Str := '^FO175,165^A045,35^FD':PrintLotNum:'^FS':CRLF$ + Str := '^FO25,195^BY1,3.0^B3,,50,N^FD2T':PrintLotNum:'^FS':CRLF$ + Str := '^FO400,175^AC18^FD(Q)Qty:^FS':CRLF$ + Str := '^FO500,165^A045,35^FD':PrintQty:'^FS':CRLF$ + Str := '^FO400,195^B3,,50,N^FDQ':PrintQty:'^FS':CRLF$ + Str := '^FO590,175^AC18^FD(1T)RDS: ^FS':CRLF$ + Str := '^FO690,165^A045,35^FD':PrintRDSId:'^FS':CRLF$ + Str := '^FO630,195^B3,,50,N^FD1T':PrintRDSId:'^FS':CRLF$ + + ****** Fourth Line, SubPN, Vendor and QA Metrology recipe + Str := '^FO25,275^AC18^FD(S)Sub PN:^FS':CRLF$ + Str := '^FO145,265^A045,35^FD':PrintSubPartNum:'^FS':CRLF$ + Str := '^FO25,295^B3,,50,N^FDS':PrintSubPartNum:'^FS':CRLF$ + Str := '^FO400,275^AC18^FD(1V)Vend:^FS':CRLF$ + Str := '^FO510,265^A045,35^FD':PrintSuppCd:'^FS':CRLF$ + Str := '^FO400,295^B3,,50,N^FD1V':PrintSuppCd:'^FS':CRLF$ + Str := '^FO590,275^AC18^FD':PrintQARecipe:'^FS':CRLF$ + + ****** Fifth Line, Motto and Data Matrix barcode + Str := '^FO25,370^A045,28':CRLF$ + Str := "^FDWe do what we promise. That's quality made by Infineon.^FS":CRLF$ + Str := '^FO725,320^CI28':CRLF$ + Str := '^BXN,2,200^FDP':CustEpiPartSpecNo:'|S':PrintSubPartNum:'|1T':PrintRDSId:'|2T':PrintLotNum:'|':PrintPSN:'|Q':PrintQty:'|1V':PrintSuppCd:'|SEQ':cnt:'^FS':CRLF$ + + ****** End the print job (ZPL script) + Str:= '^XZ' + Next - ****** First Line, Cust, WO and RO - Str := '^FO25,25^AC,18^FDCust: ^FS':CRLF$ - Str := '^FO95,14^A045,35^FD':PrintCompany:'^FS':CRLF$ - Str := '^FO570,25^AC18^FDWO: ^FS':CRLF$ - Str := '^FO610,14^A045,35^FD':PrintWO:'^FS':CRLF$ - Str := '^FO730,25^AC18^FDRO: ^FS':CRLF$ - Str := '^FO770,14^A045,35^FD':PrintRONum:'^FS':CRLF$ - - ****** Second Line, Cust Spec, PSN and Type - Str := '^FO25,75^AC18^FD(P)Cust Spec: ^FS':CRLF$ - Str := '^FO185,65^A045,35^FD':CustEpiPartSpecNo:'^FS':CRLF$ - Str := '^FO25,95^BY2,2.0^B3,,50,N^FDP':CustEpiPartSpecNo:'^FS':CRLF$ - Str := '^FO640,75^AC18^FDPSN:^FS':CRLF$ - Str := '^FO690,65^A045,35^FD':PrintPSN:'^FS':CRLF$ - Str := '^FO630,125^AC18^FDType:^FS':CRLF$ - Str := '^FO690,115^A045,30^FD':PrintSpecType:'^FS':CRLF$ - - ****** Third Line, Sub Lot, Qty and RDS - Str := '^FO25,175^AC18^FD(2T)Sub Lot:^FS':CRLF$ - Str := '^FO175,165^A045,35^FD':PrintLotNum:'^FS':CRLF$ - Str := '^FO25,195^BY1,3.0^B3,,50,N^FD2T':PrintLotNum:'^FS':CRLF$ - Str := '^FO400,175^AC18^FD(Q)Qty:^FS':CRLF$ - Str := '^FO500,165^A045,35^FD':PrintQty:'^FS':CRLF$ - Str := '^FO400,195^B3,,50,N^FDQ':PrintQty:'^FS':CRLF$ - Str := '^FO590,175^AC18^FD(1T)RDS: ^FS':CRLF$ - Str := '^FO690,165^A045,35^FD':PrintRDSId:'^FS':CRLF$ - Str := '^FO630,195^B3,,50,N^FD1T':PrintRDSId:'^FS':CRLF$ - - ****** Fourth Line, SubPN, Vendor and QA Metrology recipe - Str := '^FO25,275^AC18^FD(S)Sub PN:^FS':CRLF$ - Str := '^FO145,265^A045,35^FD':PrintSubPartNum:'^FS':CRLF$ - Str := '^FO25,295^B3,,50,N^FDS':PrintSubPartNum:'^FS':CRLF$ - Str := '^FO400,275^AC18^FD(1V)Vend:^FS':CRLF$ - Str := '^FO510,265^A045,35^FD':PrintSuppCd:'^FS':CRLF$ - Str := '^FO400,295^B3,,50,N^FD1V':PrintSuppCd:'^FS':CRLF$ - Str := '^FO590,275^AC18^FD':PrintQARecipe:'^FS':CRLF$ - - ****** Fifth Line, Motto and Data Matrix barcode - Str := '^FO25,370^A045,28':CRLF$ - Str := "^FDWe do what we promise. That's quality made by Infineon.^FS":CRLF$ - Str := '^FO725,320^CI28':CRLF$ - Str := '^BXN,2,200^FDP':CustEpiPartSpecNo:'|S':PrintSubPartNum:'|1T':PrintRDSId:'|2T':PrintLotNum:'|':PrintPSN:'|Q':PrintQty:'|1V':PrintSuppCd:'|SEQ':cnt:'^FS':CRLF$ - - ****** End the print job (ZPL script) - Str:= '^XZ' -Next - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',Str) -end else - stat = Direct_Print('PRINT', Str) -end + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end RETURN @@ -783,7 +793,6 @@ PrintWOLabel: END ELSE Str:= '^FO70,30^A0220,210^FD':PrintUniqueWO:'^FS':CRLF$ - END CustName = XLATE( 'COMPANY', CustNo, 'ABBREV_OR_CO_NAME', 'X' ) @@ -801,6 +810,7 @@ PrintWOLabel: end else stat = Direct_Print('PRINT', Str) end + RETURN @@ -826,10 +836,10 @@ PrintCheatSheetLabel: WaferSize = XLATE('EPI_PART', CustPart, EPI_PART_SUB_WAFER_SIZE$, 'X') *Field(SpecSub, @VM, QSSubWafersize$) -convert char(248) to @fm in SpecEpi ;* char(248) is used to separate layers -layerCount = fieldcount( SpecEpi, @fm ) -layerInfo = SpecEpi -//if this is just 1 layer, we're returning that info, if 3 layers, we're returning layer 3 (combo) + convert char(248) to @fm in SpecEpi ;* char(248) is used to separate layers + layerCount = fieldcount( SpecEpi, @fm ) + layerInfo = SpecEpi + //if this is just 1 layer, we're returning that info, if 3 layers, we're returning layer 3 (combo) ThkData = Field(layerInfo, @VM, QSEpiThickMeasure$) ResData = Field(layerInfo, @VM, QSEpiResMeasure$) diff --git a/LSL2/STPROC/PRINT_WMI_LABELS.txt b/LSL2/STPROC/PRINT_WMI_LABELS.txt index 63835a9..f62af44 100644 --- a/LSL2/STPROC/PRINT_WMI_LABELS.txt +++ b/LSL2/STPROC/PRINT_WMI_LABELS.txt @@ -14,10 +14,11 @@ $INSERT ORDER_EQU $INSERT ORDER_DET_EQU $INSERT WM_IN_EQUATES $INSERT CUST_EPI_PART_EQUATES +$insert UNIT_EQUATES DECLARE FUNCTION Msg, Get_Printer, Set_Printer, Utility, obj_Install, Printer_Select, FieldCount, Popup DECLARE FUNCTION MemberOF, Direct_Print, Environment_Services -DECLARE SUBROUTINE Btree.Extract, ErrMsg +DECLARE SUBROUTINE Btree.Extract, ErrMsg, SRP_Set_Clipboard * 5/18/2006 - Cloned from Print_Cass_Labels @@ -35,262 +36,255 @@ EQU PS$RECIPE TO 3 EQU PS$FREQ TO 4 EQU PS$PATTERN TO 11 -IF NOT(ASSIGNED(WONo)) THEN RETURN -IF WONo = '' THEN RETURN +Main: -IF NOT(ASSIGNED(WOStep)) THEN WOStep = 1 + IF NOT(ASSIGNED(WONo)) THEN RETURN + IF WONo = '' THEN RETURN -FileName = "Printing Label" -Title = "Printing Label" + IF NOT(ASSIGNED(WOStep)) THEN WOStep = 1 -PageInfo = '' -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 + FileName = "Printing Label" + Title = "Printing Label" -PageSetup = '1' ;* Landscape -PrintSetup = '' ;* Preview -PrinterID = '' + PageInfo = '' + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 -PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed + PageSetup = '1' ;* Landscape + PrintSetup = '' ;* Preview + PrinterID = '' -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath) -end else - stat = Direct_Print('START', PrintPath<1>, '', '') -end + PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed -IF stat < 0 THEN GOTO OIPrint_Error + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath) + end else + stat = Direct_Print('START', PrintPath<1>, '', '') + end -CLOrientation = '' ;* used for printing on cleanroom labels + IF stat GE 0 THEN -OPEN 'DICT.WM_IN' TO DictVar ELSE - ErrMsg('Unable to open DICT.WM_IN in PRINT_WMI_LABELS for Btree.Extract.') - RETURN -END + CLOrientation = '' ;* used for printing on cleanroom labels -WMInKeys = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_WM_IN_KEYS$,'X') - -IF WMInKeys = '' THEN RETURN - -TypeOver = '' -TypeOver = WMInKeys -TypeOver = 'WM_IN - Inbound Cassettes' - -WMInKeys = Popup(@WINDOW,TypeOver,'PRINT_WMI_LABELS') -CONVERT '.' TO '*' IN WMInKeys - -IF WMInKeys = '' THEN RETURN - -Void = Utility( 'CURSOR', 'H' ) - -WOStepKeys = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X') - -IF INDEX(WOStepKeys,@VM,1) THEN - PrintWONo = WONo:'.':WOStep -END ELSE - PrintWONo = WONo -END - -WORec = XLATE('WO_LOG',WONo,'','X') - -ReqShipDate = OCONV(WORec,'D2/') - -CustNo = WORec -CustName = XLATE('COMPANY',CustNo,'ABBREV_OR_CO_NAME','X') -Captive = XLATE('COMPANY',CustNo,'CAPTIVE','X') -PONo = WORec - -PSNo = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') -PSRec = XLATE('PROD_SPEC',PSNo,'','X') - -CustSpecNo = '' -IF Captive THEN - CustSpecNos = PSRec - CustSpecDescs = PSRec - CustSpecRevNos = PSRec - CustSpecRevDts = PSRec - - SpecCnt = COUNT(CustSpecNos,@VM) + (CustSpecNos NE '') - - FOR I = 1 TO SpecCnt - IF CustSpecDescs<1,I> _EQC 'GENERAL' THEN - CustSpecNo = CustSpecNos<1,I> - CustSpecDesc = CustSpecDescS<1,I> - CustSpecRevNo = CustSpecRevNos<1,I> - CustSpecRevDt = OCONV(CustSpecRevDts<1,I>,'D4/') + OPEN 'DICT.WM_IN' TO DictVar ELSE + ErrMsg('Unable to open DICT.WM_IN in PRINT_WMI_LABELS for Btree.Extract.') + RETURN END - UNTIL CustSpecNo NE '' + + WMInKeys = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_WM_IN_KEYS$,'X') + + IF WMInKeys = '' THEN RETURN + + TypeOver = '' + TypeOver = WMInKeys + TypeOver = 'WM_IN - Inbound Cassettes' + TypeOver = True$ + + WMInKeys = Popup(@WINDOW,TypeOver,'PRINT_WMI_LABELS') + CONVERT '.' TO '*' IN WMInKeys + + IF WMInKeys = '' THEN RETURN + + Void = Utility( 'CURSOR', 'H' ) + + WOStepKeys = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X') + + IF INDEX(WOStepKeys,@VM,1) THEN + PrintWONo = WONo:'.':WOStep + END ELSE + PrintWONo = WONo + END + + WORec = XLATE('WO_LOG',WONo,'','X') + + ReqShipDate = OCONV(WORec,'D2/') + + CustNo = WORec + CustName = XLATE('COMPANY',CustNo,'ABBREV_OR_CO_NAME','X') + Captive = XLATE('COMPANY',CustNo,'CAPTIVE','X') + PONo = WORec + + PSNo = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') + PSRec = XLATE('PROD_SPEC',PSNo,'','X') + + CustSpecNo = '' + IF Captive THEN + CustSpecNos = PSRec + CustSpecDescs = PSRec + CustSpecRevNos = PSRec + CustSpecRevDts = PSRec + + SpecCnt = COUNT(CustSpecNos,@VM) + (CustSpecNos NE '') + + FOR I = 1 TO SpecCnt + IF CustSpecDescs<1,I> _EQC 'GENERAL' THEN + CustSpecNo = CustSpecNos<1,I> + CustSpecDesc = CustSpecDescS<1,I> + CustSpecRevNo = CustSpecRevNos<1,I> + CustSpecRevDt = OCONV(CustSpecRevDts<1,I>,'D4/') + END + UNTIL CustSpecNo NE '' + + NEXT I + END + + EpiPartNo = WORec + CustEpiPartRec = XLATE('CUST_EPI_PART',CustNo:'*':EpiPartNo,'','X') + ShipBagReq = CustEpiPartRec + PreSurfscan = PSRec + FirstSurfscan = PSRec + PostCleanSurfScan = PSRec + SubPreClean = XLATE( 'PROD_SPEC', PSNo, 'SUB_PRE_CLEAN', 'X' ) + SubPostClean = XLATE( 'PROD_SPEC', PSNo, 'SUB_POST_CLEAN', 'X' ) + PreCleanTool = SubPreClean ;* Temporary for 2x4 -> 4x4 conversion + PostCleanTool = SubPostClean + PreAkrionRecipe = XLATE( 'PROD_SPEC', PSNo, 'PRE_AKRION_RECIPE', 'X' ) + PostAkrionRecipe = XLATE( 'PROD_SPEC', PSNo, 'POST_AKRION_RECIPE', 'X' ) + RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO_L1', 'X' ) + RecipeName = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NAME_L1', 'X' ) + SpecType = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' ) + SubOxide = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SUB_OXIDE_STRIP', 'X' ), 'B' ) + ThickTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'THICK_TARGET_ALL', 'X' ), 'MD3' ) + ResTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'RES_TARGET_ALL', 'X' ), 'MD3' ) + ThickUnit = XLATE( 'PROD_SPEC', PSNo, 'THICK_UNITS_ALL', 'X' ) + ResUnit = XLATE( 'PROD_SPEC', PSNo , 'RES_UNITS_ALL', 'X' ) + Dopant = XLATE( 'PROD_SPEC', PSNo, 'DOPANT_L1', 'X' ) + RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO', 'X' ) + RecipeInfo = XLATE( 'RECIPE', RecipeNo, 'RECIPE_NAME_NO', 'X' ) + CleaningReqs = '' + ThickCnt = FIELDCOUNT( ThickTarget<1>, @VM ) + PrintThickTargets = '' + FOR J = 1 TO ThickCnt + PrintThickTargets<1,J> = ThickTarget<1,J>:ThickUnit<1,J> + NEXT J + + ResCnt = FIELDCOUNT( ResTarget<1>, @VM ) + PrintResTargets = '' + FOR J = 1 TO ResCnt + IF ResTarget<1,J>[1,1] = '.' THEN + TargetVal = '0':ResTarget<1,J> + END ELSE + TargetVal = ResTarget<1,J> + END + PrintResTargets<1,J> = TargetVal:ResUnit<1,J> + NEXT J + + APreRec = '' + APostRec = '' + IF ( PreAkrionRecipe<1> <> '' ) THEN + APreRec = ' ':PreAkrionRecipe:' ' + SubOxide = 'No' ;* If Akrion then no oxide strip + END + + IF ( PostAkrionRecipe<1> <> '' ) THEN + APostRec = ' ':PostAkrionRecipe + END + + PrintCleaningReqs = TRIM( 'Strip:':SubOxide:' Pre:':SubPreClean:APreRec:' Post:':SubPostClean:APostRec ) + + swap UNIT_MICROMETER$ with 'um' in PrintThickTargets + swap UNIT_OHM_CM$ with 'ohm.cm' in PrintThickTargets + swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintThickTargets + swap UNIT_A$ with 'A' in PrintThickTargets + + swap UNIT_MICROMETER$ with 'um' in PrintResTargets + swap UNIT_OHM_CM$ with 'ohm.cm' in PrintResTargets + swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintResTargets + swap UNIT_A$ with 'A' in PrintResTargets + + WMIBoxCnt = COUNT( WMInKeys, @VM ) + (WMInKeys NE '') + + GOSUB PrintCleanRoomLabels + + GOSUB PrintWOLabels ;* Activated WO label printing again -dkk 12/3/14 + + * Check to see if they get the monitor wafers based on the PSN + + MonitorWafer = CustEpiPartRec + + IF MonitorWafer THEN + GOSUB PrintMonitorLabels + END + + * Check to see if they get a surfscan label + + IF (CustNo = '6874') OR (CustNo = '6593') ELSE + IF ( PreSurfscan ) or ( FirstSurfscan ) or ( PostCleanSurfscan ) THEN + *GOSUB PrintSurfscanLabels + END + END + Void = UTILITY( 'CURSOR', 'A' ) + + end - NEXT I -END + GoSub EndPrint + +Return -EpiPartNo = WORec -CustEpiPartRec = XLATE('CUST_EPI_PART',CustNo:'*':EpiPartNo,'','X') - -ShipBagReq = CustEpiPartRec - -PreSurfscan = PSRec -FirstSurfscan = PSRec -PostCleanSurfScan = PSRec - -SubPreClean = XLATE( 'PROD_SPEC', PSNo, 'SUB_PRE_CLEAN', 'X' ) -SubPostClean = XLATE( 'PROD_SPEC', PSNo, 'SUB_POST_CLEAN', 'X' ) - -PreCleanTool = SubPreClean ;* Temporary for 2x4 -> 4x4 conversion -PostCleanTool = SubPostClean - -PreAkrionRecipe = XLATE( 'PROD_SPEC', PSNo, 'PRE_AKRION_RECIPE', 'X' ) -PostAkrionRecipe = XLATE( 'PROD_SPEC', PSNo, 'POST_AKRION_RECIPE', 'X' ) - -RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO_L1', 'X' ) -RecipeName = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NAME_L1', 'X' ) - -SpecType = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' ) -SubOxide = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SUB_OXIDE_STRIP', 'X' ), 'B' ) -ThickTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'THICK_TARGET_ALL', 'X' ), 'MD3' ) -ResTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'RES_TARGET_ALL', 'X' ), 'MD3' ) - -ThickUnit = XLATE( 'PROD_SPEC', PSNo, 'THICK_UNITS_ALL', 'X' ) -ResUnit = XLATE( 'PROD_SPEC', PSNo , 'RES_UNITS_ALL', 'X' ) - -Dopant = XLATE( 'PROD_SPEC', PSNo, 'DOPANT_L1', 'X' ) -RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO', 'X' ) -RecipeInfo = XLATE( 'RECIPE', RecipeNo, 'RECIPE_NAME_NO', 'X' ) - -CleaningReqs = '' - -ThickCnt = FIELDCOUNT( ThickTarget<1>, @VM ) -PrintThickTargets = '' -FOR J = 1 TO ThickCnt - PrintThickTargets<1,J> = ThickTarget<1,J>:ThickUnit<1,J> -NEXT J - -ResCnt = FIELDCOUNT( ResTarget<1>, @VM ) -PrintResTargets = '' -FOR J = 1 TO ResCnt - IF ResTarget<1,J>[1,1] = '.' THEN - TargetVal = '0':ResTarget<1,J> - END ELSE - TargetVal = ResTarget<1,J> - END - PrintResTargets<1,J> = TargetVal:ResUnit<1,J> -NEXT J - -APreRec = '' -APostRec = '' -IF ( PreAkrionRecipe<1> <> '' ) THEN - APreRec = ' ':PreAkrionRecipe:' ' - SubOxide = 'No' ;* If Akrion then no oxide strip -END - -IF ( PostAkrionRecipe<1> <> '' ) THEN - APostRec = ' ':PostAkrionRecipe -END - -PrintCleaningReqs = TRIM( 'Strip:':SubOxide:' Pre:':SubPreClean:APreRec:' Post:':SubPostClean:APostRec ) - -swap 'æm' with 'um' in PrintThickTargets -swap 'ê-cm' with 'ohm.cm' in PrintThickTargets -swap 'ê/Ü' with 'ohm/sq' in PrintThickTargets -swap '' with 'A' in PrintThickTargets - -swap 'æm' with 'um' in PrintResTargets -swap 'ê-cm' with 'ohm.cm' in PrintResTargets -swap 'ê/Ü' with 'ohm/sq' in PrintResTargets -swap '' with 'A' in PrintResTargets - - -WMIBoxCnt = COUNT( WMInKeys, @VM ) + (WMInKeys NE '') - -GOSUB PrintCleanRoomLabels - -GOSUB PrintWOLabels ;* Activated WO label printing again -dkk 12/3/14 - - -* Check to see if they get the monitor wafers based on the PSN - -MonitorWafer = CustEpiPartRec - -IF MonitorWafer THEN - GOSUB PrintMonitorLabels -END - - -* Check to see if they get a surfscan label - - -IF (CustNo = '6874') OR (CustNo = '6593') ELSE - IF ( PreSurfscan ) or ( FirstSurfscan ) or ( PostCleanSurfscan ) THEN - *GOSUB PrintSurfscanLabels - END -END -Void = UTILITY( 'CURSOR', 'A' ) +* * * * * * * * * * * * L o c a l S u b r o u t i n e s * * * * * * * * * * * * * * * * * * -OIPrint_Error: +EndPrint: * * * * * * -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer("TERM") -end else - stat = Direct_Print('STOP') -end + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer("TERM") + end else + stat = Direct_Print('STOP') + end -RETURN +return -* * * * * * * * * * * *` L o c a l S u b r o u t i n e s * * * * * * * * * * * * - * * * * * * * PrintCleanRoomLabels: * * * * * * * - - -FOR I = 1 TO WMIBoxCnt - - WMInKey = WMInKeys<1,I> - PrintWMInKey = WMInKey - CONVERT '*' TO '.' IN PrintWMInKey + FOR I = 1 TO WMIBoxCnt + + WMInKey = WMInKeys<1,I> + PrintWMInKey = WMInKey + CONVERT '*' TO '.' IN PrintWMInKey + + CassNo = FIELD(WMInKey,'*',3) + + WOMatKey = WONo:'*':CassNo + WOMatRec = XLATE('WO_MAT',WOMatKey,'','X') + + LotNo = WOMatRec + WfrQty = WOMatRec + CustPartNo = WOMatRec + SubPartNo = WOMatRec + OrderItem = WOMatRec + Vendor = WOMatRec + + OrderDetKey = WORec:'*':OrderItem + + LOCATE CustPartNo IN CustEpiPartRec USING @VM SETTING Pos THEN + CustPartDesc = CustEpiPartRec + END ELSE + CustPartDesc = '' + END + + PartNo = CustPartNo ;* Temporary for 4x2 to 4x4 conversion + PartDesc = CustPartDesc ;* Temporary for 4x2 to 4x4 conversion + + SuppCd = TRIM(SubPartNo[-1,'B-']) + IF LEN(SuppCd) NE '2' THEN SuppCd ='' + + If CassNo EQ 1 then + GOSUB PrintCheatSheetLabel + end + + GOSUB PrintLabel + + + NEXT I - CassNo = FIELD(WMInKey,'*',3) - - WOMatKey = WONo:'*':CassNo - WOMatRec = XLATE('WO_MAT',WOMatKey,'','X') - - LotNo = WOMatRec - WfrQty = WOMatRec - CustPartNo = WOMatRec - SubPartNo = WOMatRec - OrderItem = WOMatRec - - OrderDetKey = WORec:'*':OrderItem - - LOCATE CustPartNo IN CustEpiPartRec USING @VM SETTING Pos THEN - CustPartDesc = CustEpiPartRec - END ELSE - CustPartDesc = '' - END - - PartNo = CustPartNo ;* Temporary for 4x2 to 4x4 conversion - PartDesc = CustPartDesc ;* Temporary for 4x2 to 4x4 conversion - - SuppCd = TRIM(SubPartNo[-1,'B-']) - IF LEN(SuppCd) NE '2' THEN SuppCd ='' - - If CassNo EQ 1 then - GOSUB PrintCheatSheetLabel - end - - GOSUB PrintLabel - - -NEXT I - RETURN @@ -298,133 +292,141 @@ RETURN PrintLabel: * * * * * * * - -Str = '^XA' -Str := '^LH0,0' -Str := '^PR2' ;* Print speed 2 inches per second -Str := '^LL406' ;* Label length @203 dpi -Str := '^PW900' -Str := '^MD15' ;* Media darkness -Str := '^MMT' ;* Media mode t=tear off mode -Str := '^PQ2' ;* Print 2 labels for each pass through here - -Str := '^FO15,15^GB795,398,3,B^FS' ;* Border - -*Str:= '^FO670,25^A0,36^FDWM Out^FS' -Str:= '^FO680,25^A0,36^FDWM In^FS' - -****** First Line -Company = 'IFX Epi Services' -Str := '^FO30,25^A0,,36^FD':Company:'^FS' -Str := '^FO290,25^AC,18^FDWO No:^FS':CRLF$ -Str := '^FO370,25^A045,36^FD':PrintWONo:'^FS':CRLF$ - -IF CassNo = 1 THEN - Str := '^FO535,20^GB120,40,40,,3^FS':CRLF$ - Str := '^FO540,25^AC,18^FR^FDCass:^FS':CRLF$ - Str := '^FO600,25^A045,36^FR^FD':CassNo:'^FS':CRLF$ -END ELSE - Str := '^FO540,25^AC,18^FDCass:^FS':CRLF$ - Str := '^FO600,25^A045,36^FD':CassNo:'^FS':CRLF$ -END - -****** Second Line -Str:= '^FO30,70^AC,18^FDWM In:^FS':CRLF$ -Str:= '^FO120,70^A050,30^FD':PrintWMInKey:'^FS':CRLF$ -Str := '^BY2,2.0':CRLF$ -Str := '^FO300,60^B3,,37,N^FD':'I':PrintWMInKey:'^FS':CRLF$ -Str := '^BY2,3.0':CRLF$ -Str:= '^FO700,70^AC,18^FDQty:^FS':CRLF$ -Str:= '^FO760,70^A045,25^FD':WfrQty:'^FS':CRLF$ - -****** Third Line -Str:= '^FO30,105^AC,18^FDShip Dt:^FS' -Str:= '^FO140,105^A0,,25^FD':ReqShipDate:'^FS':CRLF$ -Str:= '^FO250,105^AC,18^FDCust:^FS':CRLF$ -Str:= '^FO320,105^A045,25^FD':CustName:'^FS':CRLF$ -Str:= '^FO560,105^AC,18^FDPO:^FS':CRLF$ -Str:= '^FO600,105^A045,25^FD':PONo:'^FS':CRLF$ - -****** Separator bar -Str:= '^FO15,128^GB795,1^FS' - -****** Fourth Line -Str := '^FO30,135^AC,18^FDLot No:^FS':CRLF$ -Str := '^FO120,135^A0,20^FD':LotNo:'^FS':CRLF$ -Str := '^FO410,135^AC,18^FDPart No:^FS':CRLF$ -Str := '^FO510,135^A0,20^FD':PartNo:'^FS':CRLF$ - -****** Fifth Line -Str := '^FO30,160^AC,18^FDSub PN:^FS':CRLF$ -Str := '^FO120,160^A0,20^FD':SubPartNo:'^FS':CRLF$ - -IF SuppCd NE '' THEN - Str := '^FO410,160^AC,18^FDSupp Cd:^FS':CRLF$ - Str := '^FO510,160^A0,20^FD':SuppCd:'^FS':CRLF$ - Str := '^BY2,2.0':CRLF$ - Str := '^FO610,160^A040,20^B3,,23,N^FD':SuppCd:'^FS':CRLF$ - Str := '^BY2,3.0':CRLF$ -END - -****** Separator bar -Str := '^FO15,183^GB795,1^FS' - -****** Seventh Line -Str := '^FO30,210^AC,18^FDPre:^FS':CRLF$ -Str := '^FO90,210^A0,20^FD':SubPreClean:'^FS':CRLF$ - -IF PreAkrionRecipe NE '' THEN - Str := '^FO210,210^AC,18^FDAkrion:^FS':CRLF$ - Str := '^FO300,210^A0,20^FD':PreAkrionRecipe:'^FS':CRLF$ - Str := '^BY2,2.0':CRLF$ - Str := '^FO450,210^A040,20^B3,,23,N^FD':PreAkrionRecipe:'^FS':CRLF$ - Str := '^BY2,3.0':CRLF$ -END - -****** Eighth Line -Str := '^FO30,235^AC,18^FDRecipe:^FS':CRLF$ -Str := '^FO120,235^A0,20^FD':RecipeInfo:'^FS':CRLF$ -Str := '^FO410,235^AC,18^FDEpi Dopant:^FS':CRLF$ -Str := '^FO560,235^A040,20^FD':Dopant:'^FS':CRLF$ - -****** Tenth, Eleventh and Twelfth Lines -Str := '^FO30,285^AC,18^FDThk Spec:^FS':CRLF$ - -FOR M = 1 TO COUNT(PrintThickTargets,@VM) + (PrintThickTargets NE '') - BaseLine = 285 + (M-1)*20 - Str := '^FO140,':BaseLine:'^A040,20^FD':PrintThickTargets<1,M>:'^FS':CRLF$ -NEXT M - -Str := '^FO410,285^AC,18^FDRes Spec:^FS':CRLF$ - -FOR M = 1 TO COUNT(PrintResTargets,@VM) + (PrintResTargets NE '') - BaseLine = 285 + (M-1)*20 - Str := '^FO520,':BaseLine:'^A040,20^FD':PrintResTargets<1,M>:'^FS':CRLF$ -NEXT M - -****** Separator bar -Str := '^FO15,373^GB795,1^FS' - -****** Fourteenth Line -Str := '^FO30,385^AC,18^FDProd Spec No:^FS':CRLF$ -Str := '^FO190,385^A0,25^FD':PSNo:'^FS':CRLF$ - -IF SpecType = 'Production' THEN - SpecType = 'Prod' -end else IF SpecType = 'Pre-Production' THEN - SpecType = 'Pre' -end - -Str := '^FO275,385^AC,18^FDSpec Type:^FS':CRLF$ -Str := '^FO400,385^A0,25^FD':SpecType:'^FS':CRLF$ - -Str:= '^XZ' - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',Str) -end else - stat = Direct_Print('PRINT', Str) -end + Str = '' + For cnt = 1 to 2 + + Str := '^XA' + Str := '^LH0,0' + Str := '^PR2' ;* Print speed 2 inches per second + Str := '^LL406' ;* Label length @203 dpi + Str := '^PW900' + Str := '^MD8' ;* Media darkness + Str := '^MMT' ;* Media mode t=tear off mode + + Str := '^FO15,15^GB795,398,3,B^FS' ;* Border + + *Str:= '^FO670,25^A0,36^FDWM Out^FS' + Str:= '^FO680,25^A0,36^FDWM In^FS' + + ****** First Line + Company = 'IFX Epi Services' + Str := '^FO30,25^A0,,36^FD':Company:'^FS' + Str := '^FO290,25^AC,18^FDWO No:^FS':CRLF$ + Str := '^FO370,25^A045,36^FD':PrintWONo:'^FS':CRLF$ + + IF CassNo = 1 THEN + Str := '^FO535,20^GB120,40,40,,3^FS':CRLF$ + Str := '^FO540,25^AC,18^FR^FDCass:^FS':CRLF$ + Str := '^FO600,25^A045,36^FR^FD':CassNo:'^FS':CRLF$ + END ELSE + Str := '^FO540,25^AC,18^FDCass:^FS':CRLF$ + Str := '^FO600,25^A045,36^FD':CassNo:'^FS':CRLF$ + END + + ****** Second Line + Str:= '^FO30,70^AC,18^FDWM In:^FS':CRLF$ + Str:= '^FO120,70^A050,30^FD':PrintWMInKey:'^FS':CRLF$ + Str := '^BY2,2.0':CRLF$ + Str := '^FO300,60^B3,,37,N^FD':'I':PrintWMInKey:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + Str:= '^FO700,70^AC,18^FDQty:^FS':CRLF$ + Str:= '^FO760,70^A045,25^FD':WfrQty:'^FS':CRLF$ + + ****** Third Line + Str:= '^FO30,105^AC,18^FDShip Dt:^FS' + Str:= '^FO140,105^A0,,25^FD':ReqShipDate:'^FS':CRLF$ + Str:= '^FO250,105^AC,18^FDCust:^FS':CRLF$ + Str:= '^FO320,105^A045,25^FD':CustName:'^FS':CRLF$ + Str:= '^FO560,105^AC,18^FDPO:^FS':CRLF$ + Str:= '^FO600,105^A045,25^FD':PONo:'^FS':CRLF$ + + ****** Separator bar + Str:= '^FO15,128^GB795,1^FS' + + ****** Fourth Line + Str := '^FO30,135^AC,18^FDLot No:^FS':CRLF$ + Str := '^FO120,135^A0,20^FD':LotNo:'^FS':CRLF$ + Str := '^FO410,135^AC,18^FDPart No:^FS':CRLF$ + Str := '^FO510,135^A0,20^FD':PartNo:'^FS':CRLF$ + + ****** Fifth Line + Str := '^FO30,160^AC,18^FDSub PN:^FS':CRLF$ + Str := '^FO120,160^A0,20^FD':SubPartNo:'^FS':CRLF$ + + IF SuppCd NE '' THEN + Str := '^FO410,160^AC,18^FDSupp Cd:^FS':CRLF$ + Str := '^FO510,160^A0,20^FD':SuppCd:'^FS':CRLF$ + Str := '^BY2,2.0':CRLF$ + Str := '^FO610,160^A040,20^B3,,23,N^FD':SuppCd:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + END + + ****** Separator bar + Str := '^FO15,183^GB795,1^FS' + + ****** Seventh Line + Str := '^FO30,210^AC,18^FDPre:^FS':CRLF$ + Str := '^FO90,210^A0,20^FD':SubPreClean:'^FS':CRLF$ + + IF PreAkrionRecipe NE '' THEN + Str := '^FO210,210^AC,18^FDAkrion:^FS':CRLF$ + Str := '^FO300,210^A0,20^FD':PreAkrionRecipe:'^FS':CRLF$ + Str := '^BY2,2.0':CRLF$ + Str := '^FO450,210^A040,20^B3,,23,N^FD':PreAkrionRecipe:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + END + + ****** Eighth Line + Str := '^FO30,235^AC,18^FDRecipe:^FS':CRLF$ + Str := '^FO120,235^A0,20^FD':RecipeInfo:'^FS':CRLF$ + Str := '^FO410,235^AC,18^FDEpi Dopant:^FS':CRLF$ + Str := '^FO560,235^A040,20^FD':Dopant:'^FS':CRLF$ + + ****** Tenth, Eleventh and Twelfth Lines + Str := '^FO30,285^AC,18^FDThk Spec:^FS':CRLF$ + + FOR M = 1 TO COUNT(PrintThickTargets,@VM) + (PrintThickTargets NE '') + BaseLine = 285 + (M-1)*20 + Str := '^FO140,':BaseLine:'^A040,20^FD':PrintThickTargets<1,M>:'^FS':CRLF$ + NEXT M + + Str := '^FO410,285^AC,18^FDRes Spec:^FS':CRLF$ + + FOR M = 1 TO COUNT(PrintResTargets,@VM) + (PrintResTargets NE '') + BaseLine = 285 + (M-1)*20 + Str := '^FO520,':BaseLine:'^A040,20^FD':PrintResTargets<1,M>:'^FS':CRLF$ + NEXT M + + ****** Separator bar + Str := '^FO15,373^GB795,1^FS' + + + ****** Fourteenth Line + Str := '^FO30,385^AC,18^FDProd Spec No:^FS':CRLF$ + Str := '^FO190,385^A0,25^FD':PSNo:'^FS':CRLF$ + + IF SpecType = 'Production' THEN + SpecType = 'Prod' + end else IF SpecType = 'Pre-Production' THEN + SpecType = 'Pre' + end + + Str := '^FO275,385^AC,18^FDSpec Type:^FS':CRLF$ + Str := '^FO400,385^A0,25^FD':SpecType:'^FS':CRLF$ + + ****** Data Matrix barcode + Str := '^FO720,280^CI28':CRLF$ + Str := '^BXN,2,200^FDP':PartNo:'|S':SubPartNo:'|1T':PrintWMInKey:'|2T':LotNo:'|':PSNo:'|Q':WfrQty:'|1V':Vendor:'|SEQ':Cnt:'^FS':CRLF$ + + Str:= '^XZ' + + Next + + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end RETURN @@ -432,10 +434,10 @@ RETURN * * * * * PrintCheatSheetLabel: * * * * * - + //DPC 9/1/2020 - label printed with WO labels (first cassette) gives //operators ability to see specs on label that doesn't leave FAB -* PsnRec = XLATE('PROD_SPEC', PSNIDs, '', 'X') + * PsnRec = XLATE('PROD_SPEC', PSNIDs, '', 'X') SpecEpi = PSRec SpecSub = PSRec @@ -448,61 +450,61 @@ PrintCheatSheetLabel: SSRecipe = XLATE('PRS_STAGE', PSNo:'*LWI', 5, 'X') PCRecipe = XLATE('PRS_STAGE', PSNo, 'POST_CLEAN_SURFSCAN_RECIPE', 'X') WaferSize = Field(SpecSub, @VM, QSSubWafersize$) - -convert char(248) to @fm in SpecEpi ;* char(248) is used to separate layers -layerCount = fieldcount( SpecEpi, @fm ) -layerInfo = SpecEpi -//if this is just 1 layer, we're returning that info, if 3 layers, we're returning layer 3 (combo) - - ThkData = Field(layerInfo, @VM, QSEpiThickMeasure$) + + convert char(248) to @fm in SpecEpi ;* char(248) is used to separate layers + layerCount = fieldcount( SpecEpi, @fm ) + layerInfo = SpecEpi + //if this is just 1 layer, we're returning that info, if 3 layers, we're returning layer 3 (combo) + + ThkData = Field(layerInfo, @VM, QSEpiThickMeasure$) ResData = Field(layerInfo, @VM, QSEpiResMeasure$) ConData = Field(layerInfo, @VM, QSEpiConcMeasure$) CResData = Field(layerInfo, @VM, QSEpiCresMeasure$) - ThkMin = OCONV(Field(layerInfo, @VM, QSEpiMinThick$), 'MD3') - ThkMax = OCONV(Field(layerInfo, @VM, QSEpiMaxThick$), 'MD3') - ThkTarg = '' - If ThkMin NE '' Then ThkTarg = oConv(iconv((ThkMin+ThkMax)/2, 'MD3'), 'MD3') - - ResMin = OCONV(Field(layerInfo, @VM, QSEpiResMinThick$), 'MD3') - ResMax = OCONV(Field(layerInfo, @VM, QSEpiResMaxThick$), 'MD3') - ResTarg = '' - If ResMin NE '' Then ResTarg = oConv(iconv((ResMin+ResMax)/2, 'MD3'), 'MD3') - - ConMin = OCONV(Field(layerInfo, @VM, QSEpiConcMinThick$), 'MD3') - ConMax = OCONV(Field(layerInfo, @VM, QSEpiConcMaxThick$), 'MD3') - ConTarg = '' - If ConMin NE '' Then ConTarg = oConv(iconv((ConMin+ConMax)/2, 'MD3'), 'MD3') - - CResMin = OCONV(Field(layerInfo, @VM, QSEpiCresMin$), 'MD3') - CResMax = OCONV(Field(layerInfo, @VM, QSEpiCresMax$), 'MD3') - CResTarg = '' - If CResMin NE '' Then CResTarg = oConv(iconv((CResMin+CResMax)/2, 'MD3'), 'MD3') - + ThkMin = OCONV(Field(layerInfo, @VM, QSEpiMinThick$), 'MD3') + ThkMax = OCONV(Field(layerInfo, @VM, QSEpiMaxThick$), 'MD3') + ThkTarg = '' + If ThkMin NE '' Then ThkTarg = oConv(iconv((ThkMin+ThkMax)/2, 'MD3'), 'MD3') + + ResMin = OCONV(Field(layerInfo, @VM, QSEpiResMinThick$), 'MD3') + ResMax = OCONV(Field(layerInfo, @VM, QSEpiResMaxThick$), 'MD3') + ResTarg = '' + If ResMin NE '' Then ResTarg = oConv(iconv((ResMin+ResMax)/2, 'MD3'), 'MD3') + + ConMin = OCONV(Field(layerInfo, @VM, QSEpiConcMinThick$), 'MD3') + ConMax = OCONV(Field(layerInfo, @VM, QSEpiConcMaxThick$), 'MD3') + ConTarg = '' + If ConMin NE '' Then ConTarg = oConv(iconv((ConMin+ConMax)/2, 'MD3'), 'MD3') + + CResMin = OCONV(Field(layerInfo, @VM, QSEpiCresMin$), 'MD3') + CResMax = OCONV(Field(layerInfo, @VM, QSEpiCresMax$), 'MD3') + CResTarg = '' + If CResMin NE '' Then CResTarg = oConv(iconv((CResMin+CResMax)/2, 'MD3'), 'MD3') + ThkTool = Field(ThkData, '~', PS$TOOL) ThkType = Field(ThkData, '~', PS$TYPE) ThkRecipe = Field(ThkData, '~', PS$RECIPE) ThkFreq = Field(ThkData, '~', PS$FREQ) ThkPattern = Field(ThkData, '~', PS$PATTERN) - - ResTool = Field(ResData, '~', PS$TOOL) + + ResTool = Field(ResData, '~', PS$TOOL) ResType = Field(ResData, '~', PS$TYPE) ResRecipe = Field(ResData, '~', PS$RECIPE) ResFreq = Field(ResData, '~', PS$FREQ) ResPattern = Field(ResData, '~', PS$PATTERN) - ConTool = Field(ConData, '~', PS$TOOL) + ConTool = Field(ConData, '~', PS$TOOL) ConType = Field(ConData, '~', PS$TYPE) ConRecipe = Field(ConData, '~', PS$RECIPE) ConFreq = Field(ConData, '~', PS$FREQ) ConPattern = Field(ConData, '~', PS$PATTERN) - - CResTool = Field(CResData, '~', PS$TOOL) + + CResTool = Field(CResData, '~', PS$TOOL) CResType = Field(CResData, '~', PS$TYPE) CResRecipe = Field(CResData, '~', PS$RECIPE) CResFreq = Field(CResData, '~', PS$FREQ) CResPattern = Field(CResData, '~', PS$PATTERN) - + IF ThkMin EQ '' THEN ThkMin = '--' IF ThkMax EQ '' THEN ThkMax = '--' IF ThkTarg EQ '' THEN ThkTarg = '--' @@ -511,7 +513,7 @@ layerInfo = SpecEpi IF ThkRecipe EQ '' THEN ThkRecipe = '--' IF ThkPattern EQ '' THEN ThkPattern = '--' IF ThkFreq EQ '' THEN ThkFreq = '--' - + IF ResMin EQ '' THEN ResMin = '--' IF ResMax EQ '' THEN ResMax = '--' IF ResTarg EQ '' THEN ResTarg = '--' @@ -520,7 +522,7 @@ layerInfo = SpecEpi IF ResRecipe EQ '' THEN ResRecipe = '--' IF ResPattern EQ '' THEN ResPattern = '--' IF ResFreq EQ '' THEN ResFreq = '--' - + IF ConMin EQ '' THEN ConMin = '--' IF ConMax EQ '' THEN ConMax = '--' IF ConTarg EQ '' THEN ConTarg = '--' @@ -529,7 +531,7 @@ layerInfo = SpecEpi IF ConRecipe EQ '' THEN ConRecipe = '--' IF ConPattern EQ '' THEN ConPattern = '--' IF ConFreq EQ '' THEN ConFreq = '--' - + IF CResMin EQ '' THEN CResMin = '--' IF CResMax EQ '' THEN CResMax = '--' IF CResTarg EQ '' THEN CResTarg = '--' @@ -538,11 +540,11 @@ layerInfo = SpecEpi IF CResRecipe EQ '' THEN CResRecipe = '--' IF CResPattern EQ '' THEN CResPattern = '--' IF CResFreq EQ '' THEN CResFreq = '--' - - Swap @VM with ' / ' in SSRecipe - IF PCRecipe EQ '' Then PCRecipe = '--' - - If ThkSmile EQ '' OR ThkSmile EQ '0' then + + Swap @VM with ' / ' in SSRecipe + IF PCRecipe EQ '' Then PCRecipe = '--' + + If ThkSmile EQ '' OR ThkSmile EQ '0' then ThkSmile = 'N' end else ThkSmile = 'Y' @@ -559,7 +561,7 @@ layerInfo = SpecEpi end else ResShift = 'Y' end - + if Len(ThkMin) > 6 then ThkMin = ThkMin[1,6] end @@ -601,22 +603,22 @@ layerInfo = SpecEpi CResTarg = CResTarg[1,6] end - ****** Begin ZPL - Str = '^XA' - Str := '^LH10,0' - Str := '^PR2' ;* Print speed 2 inches per second - Str := '^LL406' ;* Label length @203 dpi - Str := '^PW900' - Str := '^MD0' ;* Media darkness - Str := '^MMT' ;* Media mode t=tear off mode - - ****** 1st/2nd Line - Str := '^FO30,20^A0,,40^FDWO ':WONo:'^FS' + ****** Begin ZPL + Str = '^XA' + Str := '^LH10,0' + Str := '^PR2' ;* Print speed 2 inches per second + Str := '^LL406' ;* Label length @203 dpi + Str := '^PW900' + Str := '^MD0' ;* Media darkness + Str := '^MMT' ;* Media mode t=tear off mode + + ****** 1st/2nd Line + Str := '^FO30,20^A0,,40^FDWO ':WONo:'^FS' Str := '^FO590,10^A050,30^FDPSN ':PSNo:'^FS' Str := '^FO555,40^A050,30^FDDopant ':Dopant:'^FS' - - ****** 3rd Line - headers - Str := '^FO85,100^A050,23^FDMin^FS' + + ****** 3rd Line - headers + Str := '^FO85,100^A050,23^FDMin^FS' Str := '^FO145,100^A050,23^FDTarg^FS' Str := '^FO210,100^A050,23^FDMax^FS' Str := '^FO280,100^A050,23^FDTool^FS' @@ -624,68 +626,68 @@ layerInfo = SpecEpi Str := '^FO470,100^A050,23^FDRecipe^FS' Str := '^FO600,100^A050,23^FDPattern^FS' Str := '^FO740,100^A050,23^FDFreq^FS' - + ****** 4th Line - Thickness (Thk) - Str := '^FO70,130^GB720,0,3^FS' + Str := '^FO70,130^GB720,0,3^FS' Str := '^FO70,130^GB0,160,3^FS' - Str := '^FO10,140^A050,23^FDThk:^FS' - Str := '^FO80,140^A050,23^FD':ThkMin:'^FS' - Str := '^FO145,140^A050,23^FD':ThkTarg:'^FS' - Str := '^FO210,140^A050,23^FD':ThkMax:'^FS' - Str := '^FO280,140^A050,23^FD':ThkTool[1,5]:'^FS' - Str := '^FO330,140^A050,23^FD':ThkType[1,11]:'^FS' - Str := '^FO470,140^A050,23^FD':ThkRecipe[1,11]:'^FS' - Str := '^FO600,140^A050,23^FD':ThkPattern[1,11]:'^FS' - Str := '^FO750,140^A050,23^FD':ThkFreq:'^FS' - + Str := '^FO10,140^A050,23^FDThk:^FS' + Str := '^FO80,140^A050,23^FD':ThkMin:'^FS' + Str := '^FO145,140^A050,23^FD':ThkTarg:'^FS' + Str := '^FO210,140^A050,23^FD':ThkMax:'^FS' + Str := '^FO280,140^A050,23^FD':ThkTool[1,5]:'^FS' + Str := '^FO330,140^A050,23^FD':ThkType[1,11]:'^FS' + Str := '^FO470,140^A050,23^FD':ThkRecipe[1,11]:'^FS' + Str := '^FO600,140^A050,23^FD':ThkPattern[1,11]:'^FS' + Str := '^FO750,140^A050,23^FD':ThkFreq:'^FS' + ****** 5th Line - Resistivity (Res) - Str := '^FO10,170^GB780,0,3^FS' - Str := '^FO10,180^A050,23^FDRes:^FS' - Str := '^FO80,180^A050,23^FD':ResMin:'^FS' - Str := '^FO145,180^A050,23^FD':ResTarg:'^FS' - Str := '^FO210,180^A050,23^FD':ResMax:'^FS' - Str := '^FO280,180^A050,23^FD':ResTool[1,5]:'^FS' - Str := '^FO330,180^A050,23^FD':ResType[1,11]:'^FS' - Str := '^FO470,180^A050,23^FD':ResRecipe[1,11]:'^FS' - Str := '^FO600,180^A050,23^FD':ResPattern[1,11]:'^FS' - Str := '^FO750,180^A050,23^FD':ResFreq:'^FS' - - ****** 6th Line - Contact (Con) - Str := '^FX***LINE 4' - Str := '^FO10,210^GB780,0,3^FS' - Str := '^FO10,220^A050,23^FDCon:^FS' - Str := '^FO80,220^A050,23^FD':ConMin:'^FS' - Str := '^FO145,220^A050,23^FD':ConTarg:'^FS' - Str := '^FO210,220^A050,23^FD':ConMax:'^FS' - Str := '^FO280,220^A050,23^FD':ConTool[1,5]:'^FS' - Str := '^FO330,220^A050,23^FD':ConType[1,11]:'^FS' - Str := '^FO470,220^A050,23^FD':ConRecipe[1,11]:'^FS' - Str := '^FO600,220^A050,23^FD':ConPattern[1,11]:'^FS' - Str := '^FO750,220^A050,23^FD':ConFreq:'^FS' - - ****** 7th Line - Contact Resistance (CRes) - Str := '^FO10,250^GB780,0,3^FS' - Str := '^FO10,260^A050,23^FDCRes:^FS' - Str := '^FO80,260^A050,23^FD':CResMin:'^FS' - Str := '^FO145,260^A050,23^FD':CResTarg:'^FS' - Str := '^FO210,260^A050,23^FD':CResMax:'^FS' - Str := '^FO280,260^A050,23^FD':CResTool[1,5]:'^FS' - Str := '^FO330,260^A050,23^FD':CResType[1,11]:'^FS' - Str := '^FO470,260^A050,23^FD':CResRecipe[1,11]:'^FS' - Str := '^FO600,260^A050,23^FD':CResPattern[1,11]:'^FS' - Str := '^FO750,260^A050,23^FD':CResFreq:'^FS' - - Str := '^FO10,290^GB780,0,3^FS' - - ****** 8th Line - Special Instructions + Str := '^FO10,170^GB780,0,3^FS' + Str := '^FO10,180^A050,23^FDRes:^FS' + Str := '^FO80,180^A050,23^FD':ResMin:'^FS' + Str := '^FO145,180^A050,23^FD':ResTarg:'^FS' + Str := '^FO210,180^A050,23^FD':ResMax:'^FS' + Str := '^FO280,180^A050,23^FD':ResTool[1,5]:'^FS' + Str := '^FO330,180^A050,23^FD':ResType[1,11]:'^FS' + Str := '^FO470,180^A050,23^FD':ResRecipe[1,11]:'^FS' + Str := '^FO600,180^A050,23^FD':ResPattern[1,11]:'^FS' + Str := '^FO750,180^A050,23^FD':ResFreq:'^FS' + + ****** 6th Line - Contact (Con) + Str := '^FX***LINE 4' + Str := '^FO10,210^GB780,0,3^FS' + Str := '^FO10,220^A050,23^FDCon:^FS' + Str := '^FO80,220^A050,23^FD':ConMin:'^FS' + Str := '^FO145,220^A050,23^FD':ConTarg:'^FS' + Str := '^FO210,220^A050,23^FD':ConMax:'^FS' + Str := '^FO280,220^A050,23^FD':ConTool[1,5]:'^FS' + Str := '^FO330,220^A050,23^FD':ConType[1,11]:'^FS' + Str := '^FO470,220^A050,23^FD':ConRecipe[1,11]:'^FS' + Str := '^FO600,220^A050,23^FD':ConPattern[1,11]:'^FS' + Str := '^FO750,220^A050,23^FD':ConFreq:'^FS' + + ****** 7th Line - Contact Resistance (CRes) + Str := '^FO10,250^GB780,0,3^FS' + Str := '^FO10,260^A050,23^FDCRes:^FS' + Str := '^FO80,260^A050,23^FD':CResMin:'^FS' + Str := '^FO145,260^A050,23^FD':CResTarg:'^FS' + Str := '^FO210,260^A050,23^FD':CResMax:'^FS' + Str := '^FO280,260^A050,23^FD':CResTool[1,5]:'^FS' + Str := '^FO330,260^A050,23^FD':CResType[1,11]:'^FS' + Str := '^FO470,260^A050,23^FD':CResRecipe[1,11]:'^FS' + Str := '^FO600,260^A050,23^FD':CResPattern[1,11]:'^FS' + Str := '^FO750,260^A050,23^FD':CResFreq:'^FS' + + Str := '^FO10,290^GB780,0,3^FS' + + ****** 8th Line - Special Instructions Str := '^FO10,310^A050,23^FDSurfScan: ':SSRecipe:'^FS' Str := '^FO10,340^A050,23^FDPostClean: ':PCRecipe:'^FS' Str := '^FO10,370^A050,23^FDWafer Size: ':WaferSize:'^FS' Str := '^FO500,310^A050,23^FDSmile Required: ':ThkSmile:'^FS' Str := '^FO500,340^A050,23^FDSPC Thk Shift: ':ThkShift:'^FS' Str := '^FO500,370^A050,23^FDSPC Res Shift: ':ResShift:'^FS' - - Str:= '^XZ' + + Str:= '^XZ' ****** End ZPL If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then @@ -693,7 +695,7 @@ layerInfo = SpecEpi end else stat = Direct_Print('PRINT', Str) end - + return @@ -701,329 +703,320 @@ return * * * * * * * PrintBigLabel: * * * * * * * - -Str = '^XA' ;* Start of label format -Str := '^LH22,70' ;* Label home offset (needed to get onto the label medium) -Str := '^BY3' ;* Set narrow Bar Code line width to 3 dots -Str := '^PR2' ;* Print speed = 2 IPS -Str := '^PQ2' - - -Str := '^FO15,15^GB795,786,3,B^FS' ;* Border -Str := '^FO680,25^A0,36^FDWM In^FS' - -****** First Line - -Str := '^FO30,25^A0,,36^FD':obj_Install('Get_Prop','Company'):'^FS' - - -Str := '^FO290,25^AC,18^FDWO No:^FS':CRLF$ ;* Label -Str := '^FO370,25^A045,36^FD':PrintWONo:'^FS':CRLF$ ;* Data - -IF CassNo = 1 THEN - Str := '^FO535,20^GB120,40,40,,3^FS':CRLF$ - Str := '^FO540,25^AC,18^FR^FDCass:^FS':CRLF$ ;* Label - Str := '^FO600,25^A045,36^FR^FD':CassNo:'^FS':CRLF$ ;* Data -END ELSE - Str := '^FO540,25^AC,18^FDCass:^FS':CRLF$ ;* Label - Str := '^FO600,25^A045,36^FD':CassNo:'^FS':CRLF$ ;* Data -END - - -****** Second Line - -Str:= '^FO30,70^AC,18^FDWM In:^FS':CRLF$ -Str:= '^FO120,70^A050,30^FD':PrintWMInKey:'^FS':CRLF$ - -Str := '^BY2,2.0':CRLF$ -Str := '^FO300,70^B3,,23,N^FD':'I':PrintWMInKey:'^FS':CRLF$ -Str := '^BY2,3.0':CRLF$ - -Str:= '^FO700,70^AC,18^FDQty:^FS':CRLF$ ;* Label -Str:= '^FO760,70^A045,25^FD':WfrQty:'^FS':CRLF$ ;* Data - -****** Third Line - -Str:= '^FO30,105^AC,18^FDShip Dt:^FS' ;* Label -Str:= '^FO140,105^A0,,25^FD':ReqShipDate:'^FS':CRLF$ ;* Data - -Str:= '^FO250,105^AC,18^FDCust:^FS':CRLF$ ;* Label -Str:= '^FO320,105^A045,25^FD':CustName:'^FS':CRLF$ ;* Data - -Str:= '^FO560,105^AC,18^FDPO:^FS':CRLF$ -Str:= '^FO600,105^A045,25^FD':PONo:'^FS':CRLF$ - - -****** Separator bar - -Str:= '^FO15,128^GB795,1^FS' - - -****** Fourth Line - -LineY = 135 - -Str := '^FO30,':LineY:'^AC,18^FDLot No:^FS':CRLF$ -Str := '^FO120,':LineY:'^A0,20^FD':LotNo:'^FS':CRLF$ - -****** Fifth Line - -LineY += 25 - -Str := '^FO30,':LineY:'^AC,18^FDSub PN:^FS':CRLF$ -Str := '^FO120,':LineY:'^A0,20^FD':SubPartNo:'^FS':CRLF$ - -IF SuppCd NE '' THEN - - Str := '^FO410,':LineY:'^AC,18^FDSupp Cd:^FS':CRLF$ ;* Label ;* Added 8/17/2005 JCH - J.C.Henry & Co. - Str := '^FO510,':LineY:'^A0,20^FD':SuppCd:'^FS':CRLF$ ;* Data + + Str = '^XA' ;* Start of label format + Str := '^LH22,70' ;* Label home offset (needed to get onto the label medium) + Str := '^BY3' ;* Set narrow Bar Code line width to 3 dots + Str := '^PR2' ;* Print speed = 2 IPS + Str := '^PQ2' + + + Str := '^FO15,15^GB795,786,3,B^FS' ;* Border + Str := '^FO680,25^A0,36^FDWM In^FS' + + ****** First Line + + Str := '^FO30,25^A0,,36^FD':obj_Install('Get_Prop','Company'):'^FS' + + + Str := '^FO290,25^AC,18^FDWO No:^FS':CRLF$ ;* Label + Str := '^FO370,25^A045,36^FD':PrintWONo:'^FS':CRLF$ ;* Data + + IF CassNo = 1 THEN + Str := '^FO535,20^GB120,40,40,,3^FS':CRLF$ + Str := '^FO540,25^AC,18^FR^FDCass:^FS':CRLF$ ;* Label + Str := '^FO600,25^A045,36^FR^FD':CassNo:'^FS':CRLF$ ;* Data + END ELSE + Str := '^FO540,25^AC,18^FDCass:^FS':CRLF$ ;* Label + Str := '^FO600,25^A045,36^FD':CassNo:'^FS':CRLF$ ;* Data + END + + + ****** Second Line + + Str:= '^FO30,70^AC,18^FDWM In:^FS':CRLF$ + Str:= '^FO120,70^A050,30^FD':PrintWMInKey:'^FS':CRLF$ Str := '^BY2,2.0':CRLF$ - Str := '^FO610,':LineY:'^A040,20^B3,,23,N^FD':SuppCd:'^FS':CRLF$ + Str := '^FO300,70^B3,,23,N^FD':'I':PrintWMInKey:'^FS':CRLF$ Str := '^BY2,3.0':CRLF$ -END - -****** New Part Number line - -LineY += 25 - -Str := '^FO30,':LineY:'^AC,18^FDCust Part No:^FS':CRLF$ -Str := '^FO200,':LineY:'^A0,20^FD':CustPartNo:' ':CustPartDesc:'^FS':CRLF$ - - -****** Customer Spec Line - -LineY += 25 - -IF CustSpecNo NE '' THEN - - Str := '^FO30,':LineY:'^AC,18^FDCust Spec No:^FS':CRLF$ - Str := '^FO200,':LineY:'^A0,20^FD':CustSpecNo:' ':CustSpecDesc:'^FS':CRLF$ - - Str := '^FO475,':LineY:'^AC,18^FDRev:^FS':CRLF$ - Str := '^FO525,':LineY:'^A0,20^FD':CustSpecRevNo:'^FS':CRLF$ - - Str := '^FO615,':LineY:'^AC,18^FDRev Dt:^FS':CRLF$ - Str := '^FO700,':LineY:'^A0,20^FD':CustSpecRevDt:'^FS':CRLF$ - -END - - -****** Separator bar - -LineY += 23 - -Str := '^FO15,':LineY:'^GB795,1^FS' - - -****** Sixth Line - -LineY += 7 - - -****** Seventh Line - -LineY += 25 - -Str := '^FO30,':LineY:'^AC,18^FDPre:^FS':CRLF$ -Str := '^FO90,':LineY:'^A0,20^FD':PreCleanTool:'^FS':CRLF$ - -LineY += 25 - -IF PreAkrionRecipe NE '' THEN - Str := '^FO30,':LineY:'^AC,18^FDAkrion:^FS':CRLF$ - Str := '^FO120,':LineY:'^A0,20^FD':PreAkrionRecipe:'^FS':CRLF$ - - Str := '^BY2,2.0':CRLF$ - Str := '^FO400,':LineY:'^A040,20^B3,,23,N^FD':PreAkrionRecipe:'^FS':CRLF$ - Str := '^BY2,3.0':CRLF$ -END - -****** Eighth Line - -LineY += 35 - -Str := '^FO30,':LineY:'^AC,18^FDRecipe:^FS':CRLF$ -Str := '^FO120,':LineY:'^A0,20^FD':RecipeInfo:'^FS':CRLF$ - -Str := '^FO410,':LineY:'^AC,18^FDEpi Dopant:^FS':CRLF$ -Str := '^FO560,':LineY:'^A040,20^FD':Dopant:'^FS':CRLF$ - - -****** Ninth Line - -LineY += 25 - -****** Tenth, Eleventh and Twelfth Lines - -LineY += 25 - -Str := '^FO30,':LineY:'^AC,18^FDThk Spec:^FS':CRLF$ - -FOR M = 1 TO COUNT(PrintThickTargets,@VM) + (PrintThickTargets NE '') - BaseLine = LineY + (M-1)*20 - Str := '^FO140,':BaseLine:'^A040,20^FD':PrintThickTargets<1,M>:'^FS':CRLF$ -NEXT M - - -Str := '^FO410,':LineY:'^AC,18^FDRes Spec:^FS':CRLF$ - -FOR M = 1 TO COUNT(PrintResTargets,@VM) + (PrintResTargets NE '') - BaseLine = LineY + (M-1)*20 - Str := '^FO520,':BaseLine:'^A040,20^FD':PrintResTargets<1,M>:'^FS':CRLF$ -NEXT M - -LineY = 625 - -****** Separator bar - -Str := '^FO15,738^GB795,1^FS' - - -****** Lines 15 and 16 - -Str := '^FO30,775^AC,18^FDProd Spec No:^FS':CRLF$ ;* Label -Str := '^FO190,775^A0,25^FD':PSNo:'^FS':CRLF$ ;* Data - -IF SpecType = 'Production' THEN SpecType = 'Prod' -IF SpecType = 'Pre-Production' THEN SpecType = 'Pre' - -Str := '^FO275,775^AC,18^FDSpec Type:^FS':CRLF$ ;* Label -Str := '^FO400,775^A0,25^FD':SpecType:'^FS':CRLF$ ;* Data - -Str:= '^XZ' - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',Str) -end else - stat = Direct_Print('PRINT', Str) -end - + + Str:= '^FO700,70^AC,18^FDQty:^FS':CRLF$ ;* Label + Str:= '^FO760,70^A045,25^FD':WfrQty:'^FS':CRLF$ ;* Data + + ****** Third Line + + Str:= '^FO30,105^AC,18^FDShip Dt:^FS' ;* Label + Str:= '^FO140,105^A0,,25^FD':ReqShipDate:'^FS':CRLF$ ;* Data + + Str:= '^FO250,105^AC,18^FDCust:^FS':CRLF$ ;* Label + Str:= '^FO320,105^A045,25^FD':CustName:'^FS':CRLF$ ;* Data + + Str:= '^FO560,105^AC,18^FDPO:^FS':CRLF$ + Str:= '^FO600,105^A045,25^FD':PONo:'^FS':CRLF$ + + + ****** Separator bar + + Str:= '^FO15,128^GB795,1^FS' + + + ****** Fourth Line + + LineY = 135 + + Str := '^FO30,':LineY:'^AC,18^FDLot No:^FS':CRLF$ + Str := '^FO120,':LineY:'^A0,20^FD':LotNo:'^FS':CRLF$ + + ****** Fifth Line + + LineY += 25 + + Str := '^FO30,':LineY:'^AC,18^FDSub PN:^FS':CRLF$ + Str := '^FO120,':LineY:'^A0,20^FD':SubPartNo:'^FS':CRLF$ + + IF SuppCd NE '' THEN + + Str := '^FO410,':LineY:'^AC,18^FDSupp Cd:^FS':CRLF$ ;* Label ;* Added 8/17/2005 JCH - J.C.Henry & Co. + Str := '^FO510,':LineY:'^A0,20^FD':SuppCd:'^FS':CRLF$ ;* Data + + Str := '^BY2,2.0':CRLF$ + Str := '^FO610,':LineY:'^A040,20^B3,,23,N^FD':SuppCd:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + END + + ****** New Part Number line + + LineY += 25 + + Str := '^FO30,':LineY:'^AC,18^FDCust Part No:^FS':CRLF$ + Str := '^FO200,':LineY:'^A0,20^FD':CustPartNo:' ':CustPartDesc:'^FS':CRLF$ + + + ****** Customer Spec Line + + LineY += 25 + + IF CustSpecNo NE '' THEN + + Str := '^FO30,':LineY:'^AC,18^FDCust Spec No:^FS':CRLF$ + Str := '^FO200,':LineY:'^A0,20^FD':CustSpecNo:' ':CustSpecDesc:'^FS':CRLF$ + + Str := '^FO475,':LineY:'^AC,18^FDRev:^FS':CRLF$ + Str := '^FO525,':LineY:'^A0,20^FD':CustSpecRevNo:'^FS':CRLF$ + + Str := '^FO615,':LineY:'^AC,18^FDRev Dt:^FS':CRLF$ + Str := '^FO700,':LineY:'^A0,20^FD':CustSpecRevDt:'^FS':CRLF$ + + END + + + ****** Separator bar + + LineY += 23 + + Str := '^FO15,':LineY:'^GB795,1^FS' + + + ****** Sixth Line + + LineY += 7 + + + ****** Seventh Line + + LineY += 25 + + Str := '^FO30,':LineY:'^AC,18^FDPre:^FS':CRLF$ + Str := '^FO90,':LineY:'^A0,20^FD':PreCleanTool:'^FS':CRLF$ + + LineY += 25 + + IF PreAkrionRecipe NE '' THEN + Str := '^FO30,':LineY:'^AC,18^FDAkrion:^FS':CRLF$ + Str := '^FO120,':LineY:'^A0,20^FD':PreAkrionRecipe:'^FS':CRLF$ + + Str := '^BY2,2.0':CRLF$ + Str := '^FO400,':LineY:'^A040,20^B3,,23,N^FD':PreAkrionRecipe:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + END + + ****** Eighth Line + + LineY += 35 + + Str := '^FO30,':LineY:'^AC,18^FDRecipe:^FS':CRLF$ + Str := '^FO120,':LineY:'^A0,20^FD':RecipeInfo:'^FS':CRLF$ + + Str := '^FO410,':LineY:'^AC,18^FDEpi Dopant:^FS':CRLF$ + Str := '^FO560,':LineY:'^A040,20^FD':Dopant:'^FS':CRLF$ + + + ****** Ninth Line + + LineY += 25 + + ****** Tenth, Eleventh and Twelfth Lines + + LineY += 25 + + Str := '^FO30,':LineY:'^AC,18^FDThk Spec:^FS':CRLF$ + + FOR M = 1 TO COUNT(PrintThickTargets,@VM) + (PrintThickTargets NE '') + BaseLine = LineY + (M-1)*20 + Str := '^FO140,':BaseLine:'^A040,20^FD':PrintThickTargets<1,M>:'^FS':CRLF$ + NEXT M + + + Str := '^FO410,':LineY:'^AC,18^FDRes Spec:^FS':CRLF$ + + FOR M = 1 TO COUNT(PrintResTargets,@VM) + (PrintResTargets NE '') + BaseLine = LineY + (M-1)*20 + Str := '^FO520,':BaseLine:'^A040,20^FD':PrintResTargets<1,M>:'^FS':CRLF$ + NEXT M + + LineY = 625 + + ****** Separator bar + + Str := '^FO15,738^GB795,1^FS' + + + ****** Lines 15 and 16 + + Str := '^FO30,775^AC,18^FDProd Spec No:^FS':CRLF$ ;* Label + Str := '^FO190,775^A0,25^FD':PSNo:'^FS':CRLF$ ;* Data + + IF SpecType = 'Production' THEN SpecType = 'Prod' + IF SpecType = 'Pre-Production' THEN SpecType = 'Pre' + + Str := '^FO275,775^AC,18^FDSpec Type:^FS':CRLF$ ;* Label + Str := '^FO400,775^A0,25^FD':SpecType:'^FS':CRLF$ ;* Data + + Str:= '^XZ' + + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end + RETURN -*************************************************** - * * * * * * * PrintWOLabels: * * * * * * * - + * * * * * * * PrintWO: * * * * * * * - -Str = '^XA^CFD' -Str := '^LH0,0' -Str := '^PR2' ;* Print speed 2 inches per second -Str := '^LL325' ;* Label length in dots -Str := '^MD15' ;* Media darkness -Str := '^PQ2' ;* Print 2 labels for each pass through here -STR := '^MMT':CRLF$ ;* Media mode t=tear off mode - - -IF INDEX(PrintWONo,'.',1) THEN - Str:= '^FO10,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$ -END ELSE - Str:= '^FO70,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$ -END - -CharCnt = LEN(CustName) -NameLength = CharCnt*72 -WhiteSpace = INT(((2103 - NameLength)/2103) * 806) -StartingXPos = INT(WhiteSpace/2) - -Str:= '^FO':StartingXPos:',230^A0,75,72^FD':CustName:'^FS':CRLF$ - -Str:= '^FO160,320^A080,50^FD':'Commit Date: ':OCONV( XLATE( 'WO_LOG', WONo, WO_LOG_COMMIT_DATE$, 'X' ), 'D2/' ):'^FS':CRLF$ -Str:= '^XZ' - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',Str) -end else - stat = Direct_Print('PRINT', Str) -end - + + Str = '^XA^CFD' + Str := '^LH0,0' + Str := '^PR2' ;* Print speed 2 inches per second + Str := '^LL325' ;* Label length in dots + Str := '^MD15' ;* Media darkness + Str := '^PQ2' ;* Print 2 labels for each pass through here + STR := '^MMT':CRLF$ ;* Media mode t=tear off mode + + + IF INDEX(PrintWONo,'.',1) THEN + Str:= '^FO10,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$ + END ELSE + Str:= '^FO70,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$ + END + + CharCnt = LEN(CustName) + NameLength = CharCnt*72 + WhiteSpace = INT(((2103 - NameLength)/2103) * 806) + StartingXPos = INT(WhiteSpace/2) + + Str:= '^FO':StartingXPos:',230^A0,75,72^FD':CustName:'^FS':CRLF$ + + Str:= '^FO160,320^A080,50^FD':'Commit Date: ':OCONV( XLATE( 'WO_LOG', WONo, WO_LOG_COMMIT_DATE$, 'X' ), 'D2/' ):'^FS':CRLF$ + Str:= '^XZ' + + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end + RETURN * * * * * * * PrintMonitorLabels: * * * * * * * - -FOR I = 1 TO WMIBoxCnt - - Str = '^XA^CFD' - Str:= '^LH0,0' - Str:= '^PR2' ;* Print speed 2 inches per second - Str:= '^LL325' ;* Label length in dots - Str:= '^MD15' ;* Media darkness - Str:= '^MMT':CRLF$ ;* Media mode t=tear off mode - Str:= '^FO30,30^A060,40^FDMonitor Wafer^FS':CRLF$ - Str:= '^FO550,30^A060,40^FDReactor#_____^FS':CRLF$ - Str:= '^FO30,70^A060,40^FDDate_____________^FS':CRLF$ - Str:= '^FO30,130^A060,40^FDCustomer Name: ':CustName:'^FS':CRLF$ - Str:= '^FO30,190^A060,40^FDRDS#: ':RDSIds:'^FS':CRLF$ - Str:= '^FO400,190^A060,40^FDLot#: ':LotNo:'^FS':CRLF$ - Str:= '^FO30,250^A060,40^FDThick Avg__________^FS':CRLF$ - Str:= '^FO400,250^A060,40^FDWafer Type__________^FS':CRLF$ - Str:= '^FO30,280^A060,40^FDRes Avg____________^FS':CRLF$ - Str:= '^FO400,280^A060,40^FDWafer Type__________^FS':CRLF$ - Str:= '^XZ' - If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',Str) - end else - stat = Direct_Print('PRINT', Str) - end + FOR I = 1 TO WMIBoxCnt + RDSIds = '' + Str = '^XA^CFD' + Str := '^LH0,0' + Str := '^PR2' ;* Print speed 2 inches per second + Str := '^LL325' ;* Label length in dots + Str := '^MD15' ;* Media darkness + Str := '^MMT':CRLF$ ;* Media mode t=tear off mode + Str := '^FO30,30^A060,40^FDMonitor Wafer^FS':CRLF$ + Str := '^FO550,30^A060,40^FDReactor#_____^FS':CRLF$ + Str := '^FO30,70^A060,40^FDDate_____________^FS':CRLF$ + Str := '^FO30,130^A060,40^FDCustomer Name: ':CustName:'^FS':CRLF$ + Str := '^FO30,190^A060,40^FDRDS#: ':RDSIds:'^FS':CRLF$ + Str := '^FO400,190^A060,40^FDLot#: ':LotNo:'^FS':CRLF$ + Str := '^FO30,250^A060,40^FDThick Avg__________^FS':CRLF$ + Str := '^FO400,250^A060,40^FDWafer Type__________^FS':CRLF$ + Str := '^FO30,280^A060,40^FDRes Avg____________^FS':CRLF$ + Str := '^FO400,280^A060,40^FDWafer Type__________^FS':CRLF$ + Str := '^XZ' -NEXT I - + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end + + NEXT I + RETURN * * * * * * * PrintSurfscanLabels: * * * * * * * - -FOR I = 1 TO WMIBoxCnt - Str = '^XA^CFD' - Str:= '^LH0,0' - Str:= '^PR2' ;* Print speed 2 inches per second - Str:= '^LL325' ;* Label length in dots - Str:= '^MD15' ;* Media darkness - Str:= '^MMT' ;* Media mode t=tear off mode - Str:= '^FO30,30^A060,40^FDSurfscan Required^FS' - *Str:= '^FO550,30^A060,40^FDRDS#':RDSIds:'^FS' - IF PreSurfscan THEN - Str:= '^FO30,130^A060,40^FDPre Epi:^FS' - Str:= '^FO250,130^A060,40^FDDefects________^FS' - Str:= '^FO500,130^A060,40^FDHaze________^FS' - END - IF FirstSurfscan THEN - Str:= '^FO30,190^A060,40^FDFirst Wafer^FS' - Str:= '^FO250,190^A060,40^FDDefects________^FS' - Str:= '^FO500,190^A060,40^FDHaze________^FS' - END - IF PostCleanSurfscan THEN - Str:= '^FO30,250^A060,40^FDPost Epi:^FS' - Str:= '^FO250,250^A060,40^FDDefects________^FS' - Str:= '^FO500,250^A060,40^FDHaze________^FS' - END - Str:= '^XZ' - If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',Str) - end else - stat = Direct_Print('PRINT', Str) - end + FOR I = 1 TO WMIBoxCnt + Str = '^XA^CFD' + Str:= '^LH0,0' + Str:= '^PR2' ;* Print speed 2 inches per second + Str:= '^LL325' ;* Label length in dots + Str:= '^MD15' ;* Media darkness + Str:= '^MMT' ;* Media mode t=tear off mode + Str:= '^FO30,30^A060,40^FDSurfscan Required^FS' + IF PreSurfscan THEN + Str:= '^FO30,130^A060,40^FDPre Epi:^FS' + Str:= '^FO250,130^A060,40^FDDefects________^FS' + Str:= '^FO500,130^A060,40^FDHaze________^FS' + END + IF FirstSurfscan THEN + Str:= '^FO30,190^A060,40^FDFirst Wafer^FS' + Str:= '^FO250,190^A060,40^FDDefects________^FS' + Str:= '^FO500,190^A060,40^FDHaze________^FS' + END + IF PostCleanSurfscan THEN + Str:= '^FO30,250^A060,40^FDPost Epi:^FS' + Str:= '^FO250,250^A060,40^FDDefects________^FS' + Str:= '^FO500,250^A060,40^FDHaze________^FS' + END + Str:= '^XZ' + + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end + + NEXT I - -NEXT I - - RETURN - - - - diff --git a/LSL2/STPROC/PRINT_WMO_LABELS.txt b/LSL2/STPROC/PRINT_WMO_LABELS.txt index 5cbbeb2..ce8249a 100644 --- a/LSL2/STPROC/PRINT_WMO_LABELS.txt +++ b/LSL2/STPROC/PRINT_WMO_LABELS.txt @@ -28,6 +28,7 @@ $INSERT WM_OUT_EQUATES $INSERT EPI_PART_EQUATES $INSERT CUST_EPI_PART_EQUATES $INSERT PRS_STAGE_EQUATES +$insert UNIT_EQUATES DECLARE FUNCTION Msg, Get_Printer, Set_Printer, Utility, obj_Install, Printer_Select, FieldCount, Popup DECLARE FUNCTION MemberOf, Direct_Print, Environment_Services @@ -41,192 +42,200 @@ EQU PI$WIDTH TO 5 EQU PI$HEIGHT TO 6 EQU PI$SIZE TO 7 -IF NOT(ASSIGNED(WONo)) THEN RETURN -IF WONo = '' THEN RETURN - -IF NOT(ASSIGNED(WOStep)) THEN WOStep = 1 - -FileName = "Printing Label" -Title = "Printing Label" - -PageInfo = '' -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 - - -PageSetup = '1' ;* Landscape -PrintSetup = '' ;* Preview -PrinterID = '' -PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath) -end else - stat = Direct_Print('START', PrintPath<1>, '', '') -end - -IF stat < 0 THEN GOTO OIPrint_Error - -CLOrientation = '' ;* used for printing on cleanroom labels - - -WMOutKeys = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_WM_OUT_KEYS$,'X') - -TypeOver = '' -TypeOver = WMOutKeys -TypeOver = 'WM_OUT - Outbound Cassettes' - -WMoutKeys = Popup(@WINDOW,TypeOver,'PRINT_WM_LABELS') -CONVERT '.' TO '*' IN WMOutKeys - -IF WMOutKeys = '' THEN RETURN - -Void = Utility( 'CURSOR', 'H' ) - -WOStepKeys = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X') - -IF INDEX(WOStepKeys,@VM,1) THEN - PrintWONo = WONo:'.':WOStep -END ELSE - PrintWONo = WONo -END - -WORec = XLATE('WO_LOG',WONo,'','X') - -ReqShipDate = OCONV(WORec,'D2/') - -CustNo = WORec -CustName = XLATE('COMPANY',CustNo,'ABBREV_OR_CO_NAME','X') -Captive = XLATE('COMPANY',CustNo,'CAPTIVE','X') -PONo = WORec - -PSNo = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') -PSRec = XLATE('PROD_SPEC',PSNo,'','X') - -CustSpecNo = '' -IF Captive THEN - CustSpecNos = PSRec - CustSpecDescs = PSRec - CustSpecRevNos = PSRec - CustSpecRevDts = PSRec +Main: - SpecCnt = COUNT(CustSpecNos,@VM) + (CustSpecNos NE '') - - FOR I = 1 TO SpecCnt - IF CustSpecDescs<1,I> _EQC 'GENERAL' THEN - CustSpecNo = CustSpecNos<1,I> - CustSpecDesc = CustSpecDescS<1,I> - CustSpecRevNo = CustSpecRevNos<1,I> - CustSpecRevDt = OCONV(CustSpecRevDts<1,I>,'D4/') + IF NOT(ASSIGNED(WONo)) THEN RETURN + IF WONo = '' THEN RETURN + + IF NOT(ASSIGNED(WOStep)) THEN WOStep = 1 + + FileName = "Printing Label" + Title = "Printing Label" + + PageInfo = '' + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 + + + PageSetup = '1' ;* Landscape + PrintSetup = '' ;* Preview + PrinterID = '' + PrintPath = Printer_Select(PrinterID) ;* Popup is skipped IF Printer ID is passed + + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath) + end else + stat = Direct_Print('START', PrintPath<1>, '', '') + end + + IF stat GE 0 THEN + + CLOrientation = '' ;* used for printing on cleanroom labels + WMOutKeys = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_WM_OUT_KEYS$,'X') + + TypeOver = '' + TypeOver = WMOutKeys + TypeOver = 'WM_OUT - Outbound Cassettes' + TypeOver = True$ + + WMoutKeys = Popup(@WINDOW,TypeOver,'PRINT_WM_LABELS') + CONVERT '.' TO '*' IN WMOutKeys + + IF WMOutKeys = '' THEN RETURN + + Void = Utility( 'CURSOR', 'H' ) + + WOStepKeys = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X') + + IF INDEX(WOStepKeys,@VM,1) THEN + PrintWONo = WONo:'.':WOStep + END ELSE + PrintWONo = WONo END - UNTIL CustSpecNo NE '' + + WORec = XLATE('WO_LOG',WONo,'','X') + + ReqShipDate = OCONV(WORec,'D2/') + + CustNo = WORec + CustName = XLATE('COMPANY',CustNo,'ABBREV_OR_CO_NAME','X') + Captive = XLATE('COMPANY',CustNo,'CAPTIVE','X') + PONo = WORec + + PSNo = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') + PSRec = XLATE('PROD_SPEC',PSNo,'','X') + + CustSpecNo = '' + IF Captive THEN + CustSpecNos = PSRec + CustSpecDescs = PSRec + CustSpecRevNos = PSRec + CustSpecRevDts = PSRec + + SpecCnt = COUNT(CustSpecNos,@VM) + (CustSpecNos NE '') + + FOR I = 1 TO SpecCnt + IF CustSpecDescs<1,I> _EQC 'GENERAL' THEN + CustSpecNo = CustSpecNos<1,I> + CustSpecDesc = CustSpecDescS<1,I> + CustSpecRevNo = CustSpecRevNos<1,I> + CustSpecRevDt = OCONV(CustSpecRevDts<1,I>,'D4/') + END + UNTIL CustSpecNo NE '' + + NEXT I + END + + EpiPartNo = WORec + CustEpiPartRec = XLATE('CUST_EPI_PART',CustNo:'*':EpiPartNo,'','X') + + ShipBagReq = CustEpiPartRec + + PreSurfscan = XLATE('PRS_STAGE',PSNo:'*PRE',PRS_STAGE_SURFSCAN_SIG_REQ$,'X') + FirstSurfscan = XLATE('PRS_STAGE',PSNo:'*WFR',PRS_STAGE_SURFSCAN_SIG_REQ$,'X') + PostCleanSurfScan = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SURFSCAN_SIG_REQ$,'X') + + PostCleanSSSampleQty = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SS_SAMP_QTY$, 'X' ) + PostCleanSurfscanRecipe = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SURFSCAN_RECIPE$,'X') + PostCleanSurfDefects = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SURF_DEFECTS$,'X') + PostCleanSurfHaze = OCONV(XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SURF_HAZE$,'X'),'MD2') + + SubPreClean = XLATE('PRS_STAGE',PSNo:'*PRE','TOOL_DISPLAY','X') + SubPostClean = XLATE('PRS_STAGE',PSNo:'*POST','TOOL_DISPLAY','X') + + PreCleanTool = XLATE('PRS_STAGE',PSNo:'*PRE','TOOL_DISPLAY','X') + PostCleanTool = XLATE('PRS_STAGE',PSNo:'*POST','TOOL_DISPLAY','X') + + PreAkrionRecipe = XLATE('PRS_STAGE',PSNo:'*PRE',PRS_STAGE_CLEAN_RECIPE$,'X') + PostAkrionRecipe = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_CLEAN_RECIPE$,'X') + + + * * * * * * * * Following needs update to point to the PRS_LAYER & PRS_STAGE tables as required. + * * * * * * * * It's the required part that needs sorted out JCH 1/28/2014 + + RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO_L1', 'X' ) + RecipeName = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NAME_L1', 'X' ) + + SpecType = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' ) + SubOxide = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SUB_OXIDE_STRIP', 'X' ), 'B' ) + ThickTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'THICK_TARGET_ALL', 'X' ), 'MD3' ) + ResTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'RES_TARGET_ALL', 'X' ), 'MD3' ) + + ThickUnit = XLATE( 'PROD_SPEC', PSNo, 'THICK_UNITS_ALL', 'X' ) + ResUnit = XLATE( 'PROD_SPEC', PSNo , 'RES_UNITS_ALL', 'X' ) + + Dopant = XLATE( 'PROD_SPEC', PSNo, 'DOPANT_L1', 'X' ) + RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO', 'X' ) + RecipeInfo = XLATE( 'RECIPE', RecipeNo, 'RECIPE_NAME_NO', 'X' ) + + CleaningReqs = '' + + ThickCnt = FIELDCOUNT( ThickTarget<1>, @VM ) + PrintThickTargets = '' + FOR J = 1 TO ThickCnt + PrintThickTargets<1,J> = ThickTarget<1,J>:ThickUnit<1,J> + NEXT J + + ResCnt = FIELDCOUNT( ResTarget<1>, @VM ) + PrintResTargets = '' + FOR J = 1 TO ResCnt + IF ResTarget<1,J>[1,1] = '.' THEN + TargetVal = '0':ResTarget<1,J> + END ELSE + TargetVal = ResTarget<1,J> + END + PrintResTargets<1,J> = TargetVal:ResUnit<1,J> + NEXT J + + APreRec = '' + APostRec = '' + IF ( PreAkrionRecipe<1> <> '' ) THEN + APreRec = ' ':PreAkrionRecipe:' ' + SubOxide = 'No' ;* If Akrion then no oxide strip + END + + IF ( PostAkrionRecipe<1> <> '' ) THEN + APostRec = ' ':PostAkrionRecipe + END + + PrintCleaningReqs = TRIM( 'Strip:':SubOxide:' Pre:':SubPreClean:APreRec:' Post:':SubPostClean:APostRec ) + + swap UNIT_MICROMETER$ with 'um' in PrintThickTargets + swap UNIT_OHM_CM$ with 'ohm.cm' in PrintThickTargets + swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintThickTargets + swap UNIT_A$ with 'A' in PrintThickTargets + + swap UNIT_MICROMETER$ with 'um' in PrintResTargets + swap UNIT_OHM_CM$ with 'ohm.cm' in PrintResTargets + swap UNIT_OHM_PER_SQ$ with 'ohm/sq' in PrintResTargets + swap UNIT_A$ with 'A' in PrintResTargets + + WMOBoxCnt = COUNT( WMOutKeys, @VM ) + (WMOutKeys NE '') + + GOSUB PrintCleanRoomLabels + GOSUB PrintWOLabels ;* Activated WO label printing again -dkk 12/3/14 + + Void = UTILITY( 'CURSOR', 'A' ) + + end - NEXT I -END + GoSub EndPrint -EpiPartNo = WORec -CustEpiPartRec = XLATE('CUST_EPI_PART',CustNo:'*':EpiPartNo,'','X') +return -ShipBagReq = CustEpiPartRec - -PreSurfscan = XLATE('PRS_STAGE',PSNo:'*PRE',PRS_STAGE_SURFSCAN_SIG_REQ$,'X') -FirstSurfscan = XLATE('PRS_STAGE',PSNo:'*WFR',PRS_STAGE_SURFSCAN_SIG_REQ$,'X') -PostCleanSurfScan = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SURFSCAN_SIG_REQ$,'X') - -PostCleanSSSampleQty = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SS_SAMP_QTY$, 'X' ) -PostCleanSurfscanRecipe = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SURFSCAN_RECIPE$,'X') -PostCleanSurfDefects = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SURF_DEFECTS$,'X') -PostCleanSurfHaze = OCONV(XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_SURF_HAZE$,'X'),'MD2') - -SubPreClean = XLATE('PRS_STAGE',PSNo:'*PRE','TOOL_DISPLAY','X') -SubPostClean = XLATE('PRS_STAGE',PSNo:'*POST','TOOL_DISPLAY','X') - -PreCleanTool = XLATE('PRS_STAGE',PSNo:'*PRE','TOOL_DISPLAY','X') -PostCleanTool = XLATE('PRS_STAGE',PSNo:'*POST','TOOL_DISPLAY','X') - -PreAkrionRecipe = XLATE('PRS_STAGE',PSNo:'*PRE',PRS_STAGE_CLEAN_RECIPE$,'X') -PostAkrionRecipe = XLATE('PRS_STAGE',PSNo:'*POST',PRS_STAGE_CLEAN_RECIPE$,'X') - - -* * * * * * * * Following needs update to point to the PRS_LAYER & PRS_STAGE tables as required. -* * * * * * * * It's the required part that needs sorted out JCH 1/28/2014 - -RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO_L1', 'X' ) -RecipeName = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NAME_L1', 'X' ) - -SpecType = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' ) -SubOxide = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SUB_OXIDE_STRIP', 'X' ), 'B' ) -ThickTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'THICK_TARGET_ALL', 'X' ), 'MD3' ) -ResTarget = OCONV( XLATE( 'PROD_SPEC', PSNo, 'RES_TARGET_ALL', 'X' ), 'MD3' ) - -ThickUnit = XLATE( 'PROD_SPEC', PSNo, 'THICK_UNITS_ALL', 'X' ) -ResUnit = XLATE( 'PROD_SPEC', PSNo , 'RES_UNITS_ALL', 'X' ) - -Dopant = XLATE( 'PROD_SPEC', PSNo, 'DOPANT_L1', 'X' ) -RecipeNo = XLATE( 'PROD_SPEC', PSNo, 'RECIPE_NO', 'X' ) -RecipeInfo = XLATE( 'RECIPE', RecipeNo, 'RECIPE_NAME_NO', 'X' ) - -CleaningReqs = '' - -ThickCnt = FIELDCOUNT( ThickTarget<1>, @VM ) -PrintThickTargets = '' -FOR J = 1 TO ThickCnt - PrintThickTargets<1,J> = ThickTarget<1,J>:ThickUnit<1,J> -NEXT J - -ResCnt = FIELDCOUNT( ResTarget<1>, @VM ) -PrintResTargets = '' -FOR J = 1 TO ResCnt - IF ResTarget<1,J>[1,1] = '.' THEN - TargetVal = '0':ResTarget<1,J> - END ELSE - TargetVal = ResTarget<1,J> - END - PrintResTargets<1,J> = TargetVal:ResUnit<1,J> -NEXT J - -APreRec = '' -APostRec = '' -IF ( PreAkrionRecipe<1> <> '' ) THEN - APreRec = ' ':PreAkrionRecipe:' ' - SubOxide = 'No' ;* If Akrion then no oxide strip -END - -IF ( PostAkrionRecipe<1> <> '' ) THEN - APostRec = ' ':PostAkrionRecipe -END - -PrintCleaningReqs = TRIM( 'Strip:':SubOxide:' Pre:':SubPreClean:APreRec:' Post:':SubPostClean:APostRec ) - -swap 'æm' with 'um' in PrintThickTargets -swap 'ê-cm' with 'ohm.cm' in PrintThickTargets -swap 'ê/Ü' with 'ohm/sq' in PrintThickTargets -swap '' with 'A' in PrintThickTargets - -swap 'æm' with 'um' in PrintResTargets -swap 'ê-cm' with 'ohm.cm' in PrintResTargets -swap 'ê/Ü' with 'ohm/sq' in PrintResTargets -swap '' with 'A' in PrintResTargets - -WMOBoxCnt = COUNT( WMOutKeys, @VM ) + (WMOutKeys NE '') - -GOSUB PrintCleanRoomLabels -GOSUB PrintWOLabels ;* Activated WO label printing again -dkk 12/3/14 - -Void = UTILITY( 'CURSOR', 'A' ) * * * * * * -OIPrint_Error: +EndPrint: * * * * * * - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer("TERM") -end else - stat = Direct_Print('STOP') -end - + + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer("TERM") + end else + stat = Direct_Print('STOP') + end + RETURN @@ -235,237 +244,238 @@ RETURN * * * * * * * PrintCleanRoomLabels: * * * * * * * - -FOR I = 1 TO WMOBoxCnt - - WMOutKey = WMOutKeys<1,I> - MakeupBox = XLATE('WM_OUT',WMOutKey,WM_OUT_MAKEUP_BOX$ ,'X') - - PrintWMOutKey = WMOutKey - CONVERT '*' TO '.' IN PrintWMOutKey - - CassNo = FIELD(WMOutKey,'*',3) - - LotNo = 'Multiple' - WfrQty = XLATE('WM_OUT',WMOutKey,'WFRS_SCHED','X') - - SubPartNo = WORec - CustPartNo = WORec - EpiPartNo = WORec - CustPartDesc = XLATE('EPI_PART',EpiPartNo,EPI_PART_EPI_PART_DESC$,'X') - PartNo = CustPartNo ;* Temporary for 4x2 to 4x4 conversion - PartDesc = CustPartDesc ;* Temporary for 4x2 to 4x4 conversion - SubVendCode = WORec - Vendor = XLATE('SEMI_VEND_CODE', SubVendCode, 'EPI_VEND_CD', 'X') + FOR I = 1 TO WMOBoxCnt - SuppCd = TRIM(SubPartNo[-1,'B-']) - IF LEN(SuppCd) NE '2' THEN SuppCd ='' + WMOutKey = WMOutKeys<1,I> + + MakeupBox = XLATE('WM_OUT',WMOutKey,WM_OUT_MAKEUP_BOX$ ,'X') + + PrintWMOutKey = WMOutKey + CONVERT '*' TO '.' IN PrintWMOutKey + + CassNo = FIELD(WMOutKey,'*',3) + + LotNo = 'Multiple' + WfrQty = XLATE('WM_OUT',WMOutKey,'WFRS_SCHED','X') + + SubPartNo = WORec + CustPartNo = WORec + EpiPartNo = WORec + CustPartDesc = XLATE('EPI_PART',EpiPartNo,EPI_PART_EPI_PART_DESC$,'X') + PartNo = CustPartNo ;* Temporary for 4x2 to 4x4 conversion + PartDesc = CustPartDesc ;* Temporary for 4x2 to 4x4 conversion + SubVendCode = WORec + Vendor = XLATE('SEMI_VEND_CODE', SubVendCode, 'EPI_VEND_CD', 'X') + + SuppCd = TRIM(SubPartNo[-1,'B-']) + IF LEN(SuppCd) NE '2' THEN SuppCd ='' + + GOSUB PrintLabel + + NEXT I - GOSUB PrintLabel - -NEXT I - RETURN * * * * * * * PrintLabel: * * * * * * * -Str = '' -For cnt = 1 to 2 - ***** Start of label ZPL - Str := '^XA' - - ***** Label setup - Str := '^LH0,0' - Str := '^PR2' ;* Print speed 2 inches per second - Str := '^LL406' ;* Label length 203 dpi - Str := '^PW900' ;* Print width 900 dpi - Str := '^MD2' ;* Media darkness - Str := '^MMT':CRLF$ ;* Media mode t=tear off mode - //Str := '^PQ2' ;* Print 2 labels for each pass through here - - ***** Border - Str := '^FO10,5^GB795,398,3,B^FS':CRLF$ - - ****** First Line - Company = 'IFX Epi Services' - Str := '^FO30,20^A0,45,36^FD':Company:'^FS':CRLF$ - Str := '^FO290,25^AC,18^FDWO No:^FS':CRLF$ - Str := '^FO370,20^A045,36^FD':PrintWONo:'^FS':CRLF$ + Str = '' + For cnt = 1 to 2 + ***** Start of label ZPL + Str := '^XA' + + ***** Label setup + Str := '^LH0,0' + Str := '^PR2' ;* Print speed 2 inches per second + Str := '^LL406' ;* Label length 203 dpi + Str := '^PW900' ;* Print width 900 dpi + Str := '^MD2' ;* Media darkness + Str := '^MMT':CRLF$ ;* Media mode t=tear off mode + //Str := '^PQ2' ;* Print 2 labels for each pass through here + + ***** Border + Str := '^FO10,5^GB795,398,3,B^FS':CRLF$ + + ****** First Line + Company = 'IFX Epi Services' + Str := '^FO30,20^A0,45,36^FD':Company:'^FS':CRLF$ + Str := '^FO290,25^AC,18^FDWO No:^FS':CRLF$ + Str := '^FO370,20^A045,36^FD':PrintWONo:'^FS':CRLF$ + + IF CassNo = 1 THEN + Str := '^FO535,15^GB120,40,40,,3^FS':CRLF$ + Str := '^FO540,25^AC,18^FR^FDCass:^FS':CRLF$ + Str := '^FO600,20^A045,36^FR^FD':CassNo:'^FS':CRLF$ + END ELSE + Str := '^FO540,25^AC,18^FDCass:^FS':CRLF$ + Str := '^FO600,20^A045,36^FD':CassNo:'^FS':CRLF$ + END + Str:= '^FO665,20^A045,36^FDWM Out^FS':CRLF$ + + ****** Second Line + Str:= '^FO30,70^AC,18^FDWM Out:^FS':CRLF$ + Str:= '^FO120,65^A050,30^FD':PrintWMOutKey:'^FS':CRLF$ + Str := '^BY2,2.0':CRLF$ + Str := '^FO300,58^B3,,37,N^FD':'O':PrintWMOutKey:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + Str:= '^FO700,60^AC,18^FDQty:^FS':CRLF$ + Str:= '^FO760,60^A045,25^FD':WfrQty:'^FS':CRLF$ + + ****** Third Line + Str:= '^FO30,100^AC,18^FDShip Dt:^FS':CRLF$ + Str:= '^FO140,100^A0,,25^FD':ReqShipDate:'^FS':CRLF$ + Str:= '^FO250,100^AC,18^FDCust:^FS':CRLF$ + Str:= '^FO320,100^A045,25^FD':CustName:'^FS':CRLF$ + Str:= '^FO560,100^AC,18^FDPO:^FS':CRLF$ + Str:= '^FO600,100^A045,25^FD':PONo:'^FS':CRLF$ + + ****** Separator bar + Str:= '^FO15,125^GB790,1^FS':CRLF$ + + ****** Fourth Line + Str := '^FO30,130^AC,18^FDLot No:^FS':CRLF$ + Str := '^FO120,130^A0,20^FD':LotNo:'^FS':CRLF$ + Str := '^FO410,130^AC,18^FDPart No:^FS':CRLF$ + Str := '^FO510,130^A0,20^FD':PartNo:'^FS':CRLF$ + + ****** Fifth Line + Str := '^FO30,155^AC,18^FDSub PN:^FS':CRLF$ + Str := '^FO120,155^A0,20^FD':SubPartNo:'^FS':CRLF$ + + IF SuppCd NE '' THEN + Str := '^FO410,155^AC,18^FDSupp Cd:^FS':CRLF$ + Str := '^FO510,155^A0,20^FD':SuppCd:'^FS':CRLF$ + Str := '^BY2,2.0':CRLF$ + Str := '^FO610,155^A040,20^B3,,23,N^FD':SuppCd:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + END + + ****** Separator bar + Str := '^FO15,180^GB790,1^FS':CRLF$ + + IF MakeupBox THEN + Str := '^FO410,190^A050,30^FD* * * M a k e u p B o x * * *^FS':CRLF$ + END ELSE + Str := '^FO410,190^AC,18^FDReact Type:^FS':CRLF$ + Str := '^FO560,190^A0,20^FDEpiPro^FS':CRLF$ + END + + ****** Seventh Line + Str := '^FO30,190^AC,18^FDPre:^FS':CRLF$ + Str := '^FO90,190^A0,20^FD':SubPreClean:'^FS':CRLF$ + + IF PreAkrionRecipe NE '' THEN + Str := '^FO210,190^AC,18^FDAkrion:^FS':CRLF$ + Str := '^FO300,190^A0,20^FD':PreAkrionRecipe:'^FS':CRLF$ + Str := '^BY2,2.0':CRLF$ + Str := '^FO450,190^A040,20^B3,,23,N^FD':PreAkrionRecipe:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + END + + ****** Eighth Line + Str := '^FO30,225^AC,18^FDRecipe:^FS':CRLF$ + Str := '^FO120,225^A0,20^FD':RecipeInfo:'^FS':CRLF$ + Str := '^FO410,225^AC,18^FDEpi Dopant:^FS':CRLF$ + Str := '^FO560,225^A040,20^FD':Dopant:'^FS':CRLF$ + + + ****** Ninth, Tenth and Eleventh Lines + Str := '^FO30,260^AC,18^FDThk Spec:^FS':CRLF$ + FOR M = 1 TO COUNT(PrintThickTargets,@VM) + (PrintThickTargets NE '') + BaseLine = 260 + (M-1)*20 + Str := '^FO140,':BaseLine:'^A040,20^FD':PrintThickTargets<1,M>:'^FS':CRLF$ + NEXT M + + Str := '^FO410,260^AC,18^FDRes Spec:^FS':CRLF$ + FOR M = 1 TO COUNT(PrintResTargets,@VM) + (PrintResTargets NE '') + BaseLine = 260 + (M-1)*20 + Str := '^FO520,':BaseLine:'^A040,20^FD':PrintResTargets<1,M>:'^FS':CRLF$ + NEXT M + + IF PostAkrionRecipe NE '' THEN + Str := '^FO30,335^AC,18^FDPost:^FS':CRLF$ + Str := '^FO90,335^A0,20^FD':SubPostClean:'^FS':CRLF$ + Str := '^FO210,335^AC,18^FDAkrion:^FS':CRLF$ + Str := '^FO300,335^A0,20^FD':PostAkrionRecipe:'^FS':CRLF$ + Str := '^BY2,2.0':CRLF$ + Str := '^FO450,335^A040,20^B3,,23,N^FD':PostAkrionRecipe:'^FS':CRLF$ + Str := '^BY2,3.0':CRLF$ + END ELSE + Str := '^FO30,335^AC,18^FDPost:^FS':CRLF$ + Str := '^FO120,335^A0,20^FD':SubPostClean:'^FS':CRLF$ + END + + ****** Separator bar + Str := '^FO15,365^GB790,1^FS':CRLF$ + + ****** Data Matrix barcode + Str := '^FO720,280^CI28':CRLF$ + Str := '^BXN,2,200^FDP':PartNo:'|S':SubPartNo:'|1T':PrintWMOutKey:'|2T':LotNo:'|':PSNo:'|Q':WfrQty:'|1V':Vendor:'|SEQ':Cnt:'^FS':CRLF$ + + ****** Fourteenth Line + Str := '^FO30,375^AC,18^FDProd Spec No:^FS':CRLF$ + Str := '^FO190,375^A0,25^FD':PSNo:'^FS':CRLF$ + + IF SpecType = 'Production' THEN SpecType = 'Prod' + IF SpecType = 'Pre-Production' THEN SpecType = 'Pre' + + Str := '^FO275,375^AC,18^FDSpec Type:^FS':CRLF$ + Str := '^FO400,375^A0,25^FD':SpecType:'^FS':CRLF$ + Str:= '^FO480,375^AC,18^FDBag:^FS':CRLF$ + Str:= '^FO530,375^A0,20^FD':ShipBagReq:'^FS':CRLF$ + + ***** End of Label + Str:= '^XZ' + Next - IF CassNo = 1 THEN - Str := '^FO535,15^GB120,40,40,,3^FS':CRLF$ - Str := '^FO540,25^AC,18^FR^FDCass:^FS':CRLF$ - Str := '^FO600,20^A045,36^FR^FD':CassNo:'^FS':CRLF$ - END ELSE - Str := '^FO540,25^AC,18^FDCass:^FS':CRLF$ - Str := '^FO600,20^A045,36^FD':CassNo:'^FS':CRLF$ - END - Str:= '^FO665,20^A045,36^FDWM Out^FS':CRLF$ - - ****** Second Line - Str:= '^FO30,70^AC,18^FDWM Out:^FS':CRLF$ - Str:= '^FO120,65^A050,30^FD':PrintWMOutKey:'^FS':CRLF$ - Str := '^BY2,2.0':CRLF$ - Str := '^FO300,58^B3,,37,N^FD':'O':PrintWMOutKey:'^FS':CRLF$ - Str := '^BY2,3.0':CRLF$ - Str:= '^FO700,60^AC,18^FDQty:^FS':CRLF$ - Str:= '^FO760,60^A045,25^FD':WfrQty:'^FS':CRLF$ - - ****** Third Line - Str:= '^FO30,100^AC,18^FDShip Dt:^FS':CRLF$ - Str:= '^FO140,100^A0,,25^FD':ReqShipDate:'^FS':CRLF$ - Str:= '^FO250,100^AC,18^FDCust:^FS':CRLF$ - Str:= '^FO320,100^A045,25^FD':CustName:'^FS':CRLF$ - Str:= '^FO560,100^AC,18^FDPO:^FS':CRLF$ - Str:= '^FO600,100^A045,25^FD':PONo:'^FS':CRLF$ - - ****** Separator bar - Str:= '^FO15,125^GB790,1^FS':CRLF$ - - ****** Fourth Line - Str := '^FO30,130^AC,18^FDLot No:^FS':CRLF$ - Str := '^FO120,130^A0,20^FD':LotNo:'^FS':CRLF$ - Str := '^FO410,130^AC,18^FDPart No:^FS':CRLF$ - Str := '^FO510,130^A0,20^FD':PartNo:'^FS':CRLF$ - - ****** Fifth Line - Str := '^FO30,155^AC,18^FDSub PN:^FS':CRLF$ - Str := '^FO120,155^A0,20^FD':SubPartNo:'^FS':CRLF$ - - IF SuppCd NE '' THEN - Str := '^FO410,155^AC,18^FDSupp Cd:^FS':CRLF$ - Str := '^FO510,155^A0,20^FD':SuppCd:'^FS':CRLF$ - Str := '^BY2,2.0':CRLF$ - Str := '^FO610,155^A040,20^B3,,23,N^FD':SuppCd:'^FS':CRLF$ - Str := '^BY2,3.0':CRLF$ - END - - ****** Separator bar - Str := '^FO15,180^GB790,1^FS':CRLF$ + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end - IF MakeupBox THEN - Str := '^FO410,190^A050,30^FD* * * M a k e u p B o x * * *^FS':CRLF$ - END ELSE - Str := '^FO410,190^AC,18^FDReact Type:^FS':CRLF$ - Str := '^FO560,190^A0,20^FDEpiPro^FS':CRLF$ - END - - ****** Seventh Line - Str := '^FO30,190^AC,18^FDPre:^FS':CRLF$ - Str := '^FO90,190^A0,20^FD':SubPreClean:'^FS':CRLF$ - - IF PreAkrionRecipe NE '' THEN - Str := '^FO210,190^AC,18^FDAkrion:^FS':CRLF$ - Str := '^FO300,190^A0,20^FD':PreAkrionRecipe:'^FS':CRLF$ - Str := '^BY2,2.0':CRLF$ - Str := '^FO450,190^A040,20^B3,,23,N^FD':PreAkrionRecipe:'^FS':CRLF$ - Str := '^BY2,3.0':CRLF$ - END - - ****** Eighth Line - Str := '^FO30,225^AC,18^FDRecipe:^FS':CRLF$ - Str := '^FO120,225^A0,20^FD':RecipeInfo:'^FS':CRLF$ - Str := '^FO410,225^AC,18^FDEpi Dopant:^FS':CRLF$ - Str := '^FO560,225^A040,20^FD':Dopant:'^FS':CRLF$ - - - ****** Ninth, Tenth and Eleventh Lines - Str := '^FO30,260^AC,18^FDThk Spec:^FS':CRLF$ - FOR M = 1 TO COUNT(PrintThickTargets,@VM) + (PrintThickTargets NE '') - BaseLine = 260 + (M-1)*20 - Str := '^FO140,':BaseLine:'^A040,20^FD':PrintThickTargets<1,M>:'^FS':CRLF$ - NEXT M - - Str := '^FO410,260^AC,18^FDRes Spec:^FS':CRLF$ - FOR M = 1 TO COUNT(PrintResTargets,@VM) + (PrintResTargets NE '') - BaseLine = 260 + (M-1)*20 - Str := '^FO520,':BaseLine:'^A040,20^FD':PrintResTargets<1,M>:'^FS':CRLF$ - NEXT M - - IF PostAkrionRecipe NE '' THEN - Str := '^FO30,335^AC,18^FDPost:^FS':CRLF$ - Str := '^FO90,335^A0,20^FD':SubPostClean:'^FS':CRLF$ - Str := '^FO210,335^AC,18^FDAkrion:^FS':CRLF$ - Str := '^FO300,335^A0,20^FD':PostAkrionRecipe:'^FS':CRLF$ - Str := '^BY2,2.0':CRLF$ - Str := '^FO450,335^A040,20^B3,,23,N^FD':PostAkrionRecipe:'^FS':CRLF$ - Str := '^BY2,3.0':CRLF$ - END ELSE - Str := '^FO30,335^AC,18^FDPost:^FS':CRLF$ - Str := '^FO120,335^A0,20^FD':SubPostClean:'^FS':CRLF$ - END - - ****** Separator bar - Str := '^FO15,365^GB790,1^FS':CRLF$ - - ****** Data Matrix barcode - Str := '^FO720,280^CI28':CRLF$ - Str := '^BXN,2,200^FDP':PartNo:'|S':SubPartNo:'|1T':PrintWMOutKey:'|2T':LotNo:'|':PSNo:'|Q':WfrQty:'|1V':Vendor:'|SEQ':Cnt:'^FS':CRLF$ - - ****** Fourteenth Line - Str := '^FO30,375^AC,18^FDProd Spec No:^FS':CRLF$ - Str := '^FO190,375^A0,25^FD':PSNo:'^FS':CRLF$ - - IF SpecType = 'Production' THEN SpecType = 'Prod' - IF SpecType = 'Pre-Production' THEN SpecType = 'Pre' - - Str := '^FO275,375^AC,18^FDSpec Type:^FS':CRLF$ - Str := '^FO400,375^A0,25^FD':SpecType:'^FS':CRLF$ - Str:= '^FO480,375^AC,18^FDBag:^FS':CRLF$ - Str:= '^FO530,375^A0,20^FD':ShipBagReq:'^FS':CRLF$ - - ***** End of Label - Str:= '^XZ' -Next - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',Str) -end else - stat = Direct_Print('PRINT', Str) -end - RETURN * * * * * * * PrintWOLabels: * * * * * * * - + * * * * * * PrintWO: * * * * * * - -Str = '^XA^CFD' -Str := '^LH0,0' -Str := '^PR2' ;* Print speed 2 inches per second -Str := '^LL325' ;* Label length in dots -Str := '^MD2' ;* Media darkness -Str := '^PQ2' ;* Print 2 labels for each pass through here -STR := '^MMT':CRLF$ ;* Media mode t=tear off mode - -IF INDEX(PrintWONo,'.',1) THEN - Str:= '^FO10,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$ -END ELSE - Str:= '^FO70,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$ -END - -CharCnt = LEN(CustName) -NameLength = CharCnt*72 -WhiteSpace = INT(((2103 - NameLength)/2103) * 806) -StartingXPos = INT(WhiteSpace/2) - -Str:= '^FO':StartingXPos:',230^A0,75,72^FD':CustName:'^FS':CRLF$ - -Str:= '^FO160,320^A080,50^FD':'Commit Date: ':OCONV( XLATE( 'WO_LOG', WONo, WO_LOG_COMMIT_DATE$, 'X' ), 'D2/' ):'^FS':CRLF$ -Str:= '^XZ' - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',Str) -end else - stat = Direct_Print('PRINT', Str) -end - + + Str = '^XA^CFD' + Str := '^LH0,0' + Str := '^PR2' ;* Print speed 2 inches per second + Str := '^LL325' ;* Label length in dots + Str := '^MD2' ;* Media darkness + Str := '^PQ2' ;* Print 2 labels for each pass through here + STR := '^MMT':CRLF$ ;* Media mode t=tear off mode + + IF INDEX(PrintWONo,'.',1) THEN + Str:= '^FO10,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$ + END ELSE + Str:= '^FO70,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$ + END + + CharCnt = LEN(CustName) + NameLength = CharCnt*72 + WhiteSpace = INT(((2103 - NameLength)/2103) * 806) + StartingXPos = INT(WhiteSpace/2) + + Str:= '^FO':StartingXPos:',230^A0,75,72^FD':CustName:'^FS':CRLF$ + + Str:= '^FO160,320^A080,50^FD':'Commit Date: ':OCONV( XLATE( 'WO_LOG', WONo, WO_LOG_COMMIT_DATE$, 'X' ), 'D2/' ):'^FS':CRLF$ + Str:= '^XZ' + + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',Str) + end else + stat = Direct_Print('PRINT', Str) + end + RETURN + diff --git a/LSL2/STPROC/SECURITY_SERVICES.txt b/LSL2/STPROC/SECURITY_SERVICES.txt index 63703f2..e7bc62b 100644 --- a/LSL2/STPROC/SECURITY_SERVICES.txt +++ b/LSL2/STPROC/SECURITY_SERVICES.txt @@ -62,7 +62,8 @@ Service AuthenticateLSLCredentials(LSLUsername, LSLPassword) Response = False$ If ( (LSLUsername NE '') and (LSLPassword NE '') ) then - Convert @Lower_Case to @Upper.Case in LSLUsername + Convert @Lower_Case to @Upper_Case in LSLUsername + Convert @Lower_Case to @Upper_Case in LSLPassword If RowExists('LSL_USERS', LSLUsername) then Password = Xlate('LSL_USERS', LSLUsername, 'PASSWORD', 'X') If LSLPassword EQ Password then @@ -313,67 +314,3 @@ Service GetLSLUser(Username) end service - -//---------------------------------------------------------------------------------------------------------------------- -// VerifyUserSessions -// -// -//---------------------------------------------------------------------------------------------------------------------- -Service VerifyUserSessions() - - // Use MESSENGER as the recipient. It will process callback procedures. - Messaging_Services('SendMessage', 'GetLoggedInUsers', 'Request', 'MESSENGER', 'All', '', 'Procedure', 'Security_Services,UserSessionsListener,@MESSAGE,@ARGUMENTS') - -end service - - -Service UserSessionsListener() - - // Process message - // If user is running an old version of LSL, then send them a popup asking them to restart their session. - Transfer Param2 to SessionInfo - Station = SessionInfo<1, 2> - OIUserName = SessionInfo<2, 2> - SSOUserName = SessionInfo<3, 2> - ProcessID = SessionInfo<4, 2> - LSL2Version = SessionInfo<5, 2> - OCXVersion = SessionInfo<6, 2> - - CurrLSL2Version = Database_Services('ReadDataRow', 'APP_INFO', 'LSL2_VERSION') - If ((LSL2Version NE '') and (LSL2Version NE CurrLSL2Version)) then - // Send a message to the user - Message = 'You are running an outdated version of LSL. Restart your application ASAP to pickup the latest code.' - Messaging_Services('SendMessage', 'SetPopupMessage', 'Request', '', Station, Message) -* If OIUserName EQ 'DANIEL_ST' then -* Messaging_Services('SendMessage', 'RunProcedure', 'Request', '', Station, 'SECURITY_SERVICES,REQUIREREAUTHENTICATION', '', '', '') -* end - end - -end service - - -Service RequireReauthentication() - - Authenticated = False$ - - If MemberOf(@USER4, 'OI_ADMIN') then - ParentForm = 'NDW_MAIN' - end else - ParentForm = 'LSL_MAIN2' - end - Loop - - Response = Dialog_Box('NDW_VERIFY_USER', ParentForm, @USER4) - Authenticated = Response<1> - If Not(Authenticated) then - ErrorMessage = 'You must reauthenticate to continue running your old version of OpenInsight.' - rv = Msg('', '', 'OK', '', 'Authentication Required':@FM:ErrorMessage) - end - Until Authenticated - Repeat - -end service - - - - diff --git a/LSL2/STPROC/WORK_ORDER_SERVICES.txt b/LSL2/STPROC/WORK_ORDER_SERVICES.txt index 086f907..f986b2e 100644 --- a/LSL2/STPROC/WORK_ORDER_SERVICES.txt +++ b/LSL2/STPROC/WORK_ORDER_SERVICES.txt @@ -792,10 +792,11 @@ Service PrintLabels(WONo) end If INDEX(RDSNos,@VM,1) then - TypeOver = '' - TypeOver = RDSNos - TypeOver = 2 - TypeOver = 'K' + TypeOver = '' + TypeOver = RDSNos + TypeOver = 2 + TypeOver = 'K' + TypeOver = True$ RDSKeys = Popup(@WINDOW,TypeOver,'WO_LOG_RTS') @@ -1565,5 +1566,3 @@ ClearCursors: return - - diff --git a/LSL2/STPROCINS/UNIT_EQUATES.txt b/LSL2/STPROCINS/UNIT_EQUATES.txt new file mode 100644 index 0000000..ac9f24f --- /dev/null +++ b/LSL2/STPROCINS/UNIT_EQUATES.txt @@ -0,0 +1,13 @@ +compile insert UNIT_EQUATES +/*---------------------------------------- + Author : DJM + Written : 11/6/2025 + Description : Insert for unit-hex conversion. +----------------------------------------*/ + +Equ UNIT_MICROMETER$ To \E66D\ +Equ UNIT_OHM_CM$ To \EA2D636D\ +Equ UNIT_OHM_PER_SQ$ To \EA2FDC\ +Equ UNIT_A$ To '' + +