diff --git a/LSL2/STPROC/PRINT_SAP_CASS_SHIP_LABEL.txt b/LSL2/STPROC/PRINT_SAP_CASS_SHIP_LABEL.txt index d763628..307cb3f 100644 --- a/LSL2/STPROC/PRINT_SAP_CASS_SHIP_LABEL.txt +++ b/LSL2/STPROC/PRINT_SAP_CASS_SHIP_LABEL.txt @@ -41,521 +41,519 @@ EQU PI$WIDTH TO 5 EQU PI$HEIGHT TO 6 EQU PI$SIZE TO 7 -ErrorMsg = '' +Main: -IF NOT(ASSIGNED(WONo)) THEN ErrorMsg = 'Unassigned parameter "WONo" passed to PRINT_CASS_SHIP_LABEL routine.' -IF NOT(ASSIGNED(WOSteps)) THEN ErrorMsg = 'Unassigned parameter "WOSteps" passed to PRINT_CASS_SHIP_LABEL routine.' -IF NOT(ASSIGNED(CassNos)) THEN ErrorMsg = 'Unassigned parameter "CassNos" passed to PRINT_CASS_SHIP_LABEL routine.' -IF NOT(ASSIGNED(RDSNos)) THEN ErrorMsg = 'Unassigned parameter "RDSNos" passed to PRINT_CASS_SHIP_LABEL routine.' + ErrorMsg = '' -LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Zebra' -LogDate = Oconv(Date(), 'D4/') -LogTime = Oconv(Time(), 'MTS') -LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '.csv' -Headers = 'Logging DTM' : @FM : 'Description' -ColumnWidths = 20 : @FM : 300 -objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$) + IF NOT(ASSIGNED(WONo)) THEN ErrorMsg = 'Unassigned parameter "WONo" passed to PRINT_CASS_SHIP_LABEL routine.' + IF NOT(ASSIGNED(WOSteps)) THEN ErrorMsg = 'Unassigned parameter "WOSteps" passed to PRINT_CASS_SHIP_LABEL routine.' + IF NOT(ASSIGNED(CassNos)) THEN ErrorMsg = 'Unassigned parameter "CassNos" passed to PRINT_CASS_SHIP_LABEL routine.' + IF NOT(ASSIGNED(RDSNos)) THEN ErrorMsg = 'Unassigned parameter "RDSNos" passed to PRINT_CASS_SHIP_LABEL routine.' -LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Spectrum' -LogDate = Oconv(Date(), 'D4/') -LogTime = Oconv(Time(), 'MTS') -LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '.csv' -Headers = 'Logging DTM' : @FM : 'Description' -ColumnWidths = 20 : @FM : 300 -objSpectrumLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$) + LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Zebra' + LogDate = Oconv(Date(), 'D4/') + LogTime = Oconv(Time(), 'MTS') + LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '.csv' + Headers = 'Logging DTM' : @FM : 'Description' + ColumnWidths = 20 : @FM : 300 + objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$) -LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM + LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Spectrum' + LogDate = Oconv(Date(), 'D4/') + LogTime = Oconv(Time(), 'MTS') + LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '.csv' + Headers = 'Logging DTM' : @FM : 'Description' + ColumnWidths = 20 : @FM : 300 + objSpectrumLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$) -IF ErrorMsg NE '' THEN - ErrMsg(ErrorMsg) - RETURN -END + LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM -PrinterID = '' -* PrinterID = 'MESZBRPRT004' ;*default to the shipping printer, which is the only printer with 4x4 label stock + IF ErrorMsg NE '' THEN + ErrMsg(ErrorMsg) + RETURN + END -* Initialize the printer -FileName = "Printing Label" -Title = "Printing Label" ;* Initialize Printing - -PageInfo = '' -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 -PageInfo = 0.1 - -PageSetup = '1' ;* Landscape -PrintSetup = '0' ;* Print to specific location -PrintPath = Printer_Select(PrinterID);* Select printer - Displays popup if PrinterPort not found -PrintPathLog = PrintPath - -Swap @FM with '@FM' in PrintPathLog -Swap @VM with '@VM' in PrintPathLog -Swap @SVM with '@SVM' in PrintPathLog -Swap @TM with '@TM' in PrintPathLog -Swap @STM with '@STM' in PrintPathLog -Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @User4 : ' - PrintPath = ' : PrintPathLog, @RM, @FM) - -IF PrintPath = '' THEN - Def = "" - Def = "TA3" - Def = 'Destination Printer not Selected..' - Def = '' - Def = '*' - Msg(@WINDOW, Def, '') - RETURN -END - -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 GOSUB OIPrint_Err ;* Bail = couldn't initialize the printer - -If Unassigned(RDSType) then RDSType = '' - -IF RDSType EQ '' then - ReactNos = XLATE('REACT_RUN',RDSNos,REACT_RUN_REACTOR$,'X') ;* Added 12/16/2008 - JCH - Adding Reactor Type codes to cassette labels - ReactTypes = OCONV(XLATE('REACTOR',ReactNos,REACTOR_REACT_TYPE$,'X'),'[REACT_TYPE_CONV,OPSREF]') ;* Added 12/16/2008 - JCH - Adding Reactor Type codes to cassette labels -end else - ReactTypes = RDSType -end - -WORec = XLATE('WO_LOG',WONo,'','X') - -WoLogReqShipDt = OCONV( WORec, 'D2/' ) -WoLogDMShipDt = OCONV( WORec, 'DE' ) -WoLogCustPONo = WORec -WoLogEpiPartNo = WORec -WoLogCustNo = WORec - -ProdOrdNo = WORec -ProdVerNo = WORec -ProdVerRec = XLATE('PROD_VER',ProdVerNo,'','X') + PrinterID = '' -CompRec = XLATE('COMPANY',WoLogCustNo,'','X') + * Initialize the printer + FileName = "Printing Label" + Title = "Printing Label" ;* Initialize Printing -Captive = CompRec -VendCd = CompRec -CustName = CompRec + PageInfo = '' + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 + PageInfo = 0.1 -IF ProdOrdNo NE '' THEN - IF WoLogCustPONo = 'NA' OR WoLogCustPONo = '' THEN - PONo = ProdOrdNo - END ELSE - PONo = WoLogCustPONo - END - OrderItems = '' - VisionOrderNo = '' - VisionLineNos = '' -END + PageSetup = '1' ;* Landscape + PrintSetup = '0' ;* Print to specific location + PrintPath = Printer_Select(PrinterID);* Select printer - Displays popup if PrinterPort not found + PrintPathLog = PrintPath -CassCnt = COUNT(CassNos,@VM) + (CassNos NE '') + Swap @FM with '@FM' in PrintPathLog + Swap @VM with '@VM' in PrintPathLog + Swap @SVM with '@SVM' in PrintPathLog + Swap @TM with '@TM' in PrintPathLog + Swap @STM with '@STM' in PrintPathLog + Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @User4 : ' - PrintPath = ' : PrintPathLog, @RM, @FM) -FOR I = 1 TO CassCnt + IF PrintPath = '' THEN + Def = "" + Def = "TA3" + Def = 'Destination Printer not Selected..' + Def = '' + Def = '*' + Msg(@WINDOW, Def, '') + RETURN + END - WOStep = WOSteps<1,I> - ProdSpecID = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') - RevLvl = XLATE('CUST_EPI_PART',WoLogCustNo:'*':WoLogEpiPartNo,CUST_EPI_PART_SPEC_REV$,'X')[-1,'B':@VM] ;* use rev from Cust Epi Part, not PSN - CassNo = CassNos<1,I> - RDSNo = RDSNos<1,I> - ReactType = Xlate('WO_MAT', WONo:'*':CassNo,'REACTOR_TYPE','X') - WOMatRec = XLATE('WO_MAT',WONo:'*':CassNo,'','X') - ReShipCust = WOMatRec - If ReShipCust EQ '' then - CustNo = WoLogCustNo - end else - CustNo = ReShipCust - end - CompRec = XLATE('COMPANY',CustNo,'','X') - Captive = CompRec - VendCd = CompRec - CustName = CompRec - ReShipDate = WOMatRec - If ReShipDate EQ '' then - ReqShipDt = OCONV( WORec, 'D2/' ) - DMShipDt = OCONV( WORec, 'DE' ) - end else - ReqShipDt = OCONV( ReShipDate, 'D2/' ) - DMShipDt = OCONV( ReShipDate, 'DE' ) - end - ReShipCustEpiPartNo = WOMatRec - If ReShipCustEpiPartNo EQ '' then - EpiPartNo = WoLogEpiPartNo - end else - EpiPartNo = ReShipCustEpiPartNo - end - ReShipCustPO = WOMatRec - If ReShipCustPO EQ '' then - CustPONo = WoLogCustPONo - end else - CustPONo = ReShipCustPO - end - IF CustPONo = 'NA' OR CustPONo = '' THEN - PONo = ProdOrdNo - END ELSE - PONo = CustPONo - END - ReShipCustPartNo = WOMatRec - SAPBatchNo = WOMatRec - - SubSupplier = obj_Vendor_Code('SemiToEpi',WOMatRec) - - IF VendCd NE '' THEN SubSupplier = VendCd ;* Override from Company Table. + 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 GOSUB OIPrint_Err ;* Bail = couldn't initialize the printer - Begin Case - Case (RDSNo NE '' AND RDSType EQ 'SIC') OR (RDSNo NE '' AND ReactType<1,I> NE 'EPP' AND ReactType<1,I> NE 'GAN') ;* regular Epi + If Unassigned(RDSType) then RDSType = '' - CassIDLabel = 'RDSNo: ' - CassID = RDSNo - ReactType = ReactTypes<1,I> - - MakeupBox = WOMatRec - PartNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_PART_NO$,'X') - If ReShipCustPartNo NE '' then - PartNo = ReShipCustPartNo - end - LotNo = WOMatRec - SubstrPartNo = WOMatRec - - IF SubstrPartNo[-2,2] _EQC '.S' THEN SubstrPartNo = '' - - CassOrderItem = WOMatRec - - IF ProdVerNo = '' THEN - CustPNDesc = XLATE( 'ORDER_DET',WONo:'*':CassOrderItem,'CUST_PN_DESC','X') - END ELSE - CustPNDesc = XLATE('PROD_VER',ProdVerNo,PROD_VER_CUST_PART_DESC$,'X') - END - - SupVerify = XLATE( 'RDS', RDSNo, 'SUP_VER_SIG_NAME', 'X' ) - SupVerifyDt = OCONV(XLATE('WO_MAT',WONo:'*':CassNo,'SHIP_SUP_VER_SIG_DT','X'),'D2/') - WfrsOut = XLATE( 'RDS', RDSNo, 'WFRS_OUT', 'X' ) - MUWfrsRemQty = XLATE( 'RDS', RDSNo, 'MU_WFRS_REMOVED','X' ) - MUWfrsAddQty = XLATE( 'RDS', RDSNo, 'MU_WFRS_ADDED','X' ) - - ResultThickL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG', 'X' ), 'MD2' ) - ResultThickL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG_L2', 'X' ), 'MD2' ) - ResultThickL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG_L3', 'X' ), 'MD2' ) - - TargetThickL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET', 'X' ), 'MD2' ) - TargetThickL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET_L2', 'X' ), 'MD2' ) - TargetThickL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET_L3', 'X' ), 'MD2' ) - - IF ResultThickL1 = '' THEN ResultThickL1 = TargetThickL1 - IF ResultThickL2 = '' THEN ResultThickL2 = TargetThickL2 - IF ResultThickL3 = '' THEN ResultThickL3 = TargetThickL3 - - ThickUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS', 'X' ) - ThickUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS_L2', 'X' ) - ThickUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS_L3', 'X' ) - - ResultThick = ResultThickL1 - IF ResultThickL2 NE '' THEN ResultThick := '/':ResultThickL2 - IF ResultThickL3 NE '' THEN ResultThick := '/':ResultThickL3 - - IF ResultThick NE '' THEN ResultThick := ThickUnitsL1 - - ResultResL1 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG', 'X' ) - ResultResL2 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG_L2', 'X' ) - ResultResL3 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG_L3', 'X' ) - - TargetResL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET', 'X' ), 'MD3' ) - TargetResL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET_L2', 'X' ), 'MD3' ) - TargetResL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET_L3', 'X' ), 'MD3' ) + IF RDSType EQ '' then + ReactNos = XLATE('REACT_RUN',RDSNos,REACT_RUN_REACTOR$,'X') ;* Added 12/16/2008 - JCH - Adding Reactor Type codes to cassette labels + ReactTypes = OCONV(XLATE('REACTOR',ReactNos,REACTOR_REACT_TYPE$,'X'),'[REACT_TYPE_CONV,OPSREF]') ;* Added 12/16/2008 - JCH - Adding Reactor Type codes to cassette labels + end else + ReactTypes = RDSType + end - IF ResultResL1 = '' THEN ResultResL1 = TargetResL1 - IF ResultResL2 = '' THEN ResultResL2 = TargetResL2 - IF ResultResL3 = '' THEN ResultResL3 = TargetResL3 - - ResUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS', 'X' ) - ResUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS_L2', 'X' ) - ResUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS_L3', 'X' ) - - ResultRes = ResultResL1 - - IF ResultResL2 NE '' THEN ResultRes := '/':ResultResL2 - IF ResultResL3 NE '' THEN ResultRes := '/':ResultResL3 - - IF ResultRes NE '' THEN ResultRes := ResUnitsL1 - - ResultResMin = XLATE( 'REACT_RUN', RDSNo, 'TRES_MIN', 'X' ) - ResultResMax = XLATE( 'REACT_RUN', RDSNo, 'TRES_MAX', 'X' ) - - TargetConL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET', 'X' )<1,1>, 'MS21' ) - TargetConL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET_L2', 'X' ), 'MS21' ) - TargetConL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET_L3', 'X' ), 'MS21' ) + WORec = XLATE('WO_LOG',WONo,'','X') - ConUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS', 'X' ) - ConUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS_L2', 'X' ) - ConUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS_L3', 'X' ) - - ResultCon = TargetConL1 - IF TargetConL2 NE '' THEN ResultCon := '/':TargetConL2 - IF TargetConL3 NE '' THEN ResultCon := '/':TargetConL3 - IF ResultCon NE '' THEN ResultCon := ConUnitsL1 - - Case (ReactType EQ 'EPP') or (ReactType EQ 'P') ; * EpiPro + WoLogReqShipDt = OCONV( WORec, 'D2/' ) + WoLogDMShipDt = OCONV( WORec, 'DE' ) + WoLogCustPONo = WORec + WoLogEpiPartNo = WORec + WoLogCustNo = WORec - WMOutKey = WONo:'*':WOStep:'*':CassNo - WMOutRec = XLATE('WM_OUT',WMOutKey,'','X') - - MakeupBox = WMOutRec - - CassIDLabel = 'WMONo: ' - CassID = WMOutKey - - CONVERT '*' TO '.' IN CassID - - ReactType = 'EpiPro' ;* * * * 12/17/2008 Harded coded reactor type for EpiPro reactors - - SupVerify = WMOutRec - SupVerifyDt = OCONV(XLATE('WO_MAT',WONo:'*':CassNo,'SHIP_SUP_VER_SIG_DT','X'),'D2/') - - InCassNo1 = '' - InSlotNo1 = '' - MUWoNo1 = '' - MUCassNo1 = '' - MUSlotNo1 = '' - - PartNo = '' - LotNo = '' - SubstrPartNo = '' - CassOrderItem = '' - CustPNDesc = '' - - Pointer = 1 - LOOP - IF WMOutRec = '' THEN - InCassNo1 = WMOutRec - InSlotNo1 = WMoutRec - END ELSE - IF MUWoNo1 = '' THEN - MUWoNo1 = WMOutRec - MUCassNo1 = WMOutRec - MUSlotNo1 = WMOutRec - END - END - - UNTIL InCassNo1 NE '' OR Pointer > 25 - - Pointer += 1 - REPEAT - - IF InCassNo1 NE '' THEN - WOMatRec = XLATE('WO_MAT',WONo:'*':InCassNo1,'','X') - PartNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_PART_NO$,'X') - LotNo = WOMatRec - SubstrPartNo = WOMatRec - - END ELSE - IF MUWoNo1 NE '' AND MUCassNo1 NE '' THEN - MUWOMatRec = XLATE('WO_MAT',MUWoNo1:'*':MUCassNo1,'','X') - PartNo = XLATE('WO_LOG',MUWoNo1,WO_LOG_CUST_PART_NO$,'X') - LotNo = MUWOMatRec - SubstrPartNo = MUWOMatRec - - END - END - If ReShipCustPartNo NE '' then - PartNo = ReShipCustPartNo - end - WfrsOut = XLATE('WM_OUT',WMOutKey,'WFRS_OUT','X') - MUWfrsRemQty = '' - MUWfrsAddQty = '' - - Specs = obj_Prod_Spec('GetLayerProp',ProdSpecID) - - ResultThick = '' - ResultRes = '' - ResultResMin = '' - ResultResMax = '' - ResultCon = '' - - LayerCount = COUNT(Specs,@RM) + (Specs NE '') - - FOR Layer = 1 TO LayerCount - - LayerSpecs = FIELD(Specs,@RM,Layer) - LayerSpecs = FIELD(LayerSpecs,@FM,2,99) ;* Pull of the layer set ID - - IF LayerSpecs NE '' THEN - ResultThick := LayerSpecs - END - - IF LayerSpecs NE '' THEN - ResultRes := LayerSpecs - ResultResMin := LayerSpecs - ResultResMax := LayerSpecs - END - - IF LayerSpecs NE '' THEN - ResultCon := LayerSpecs - END - - IF Layer < LayerCount THEN - IF ResultThick NE '' THEN ResultThick := '/' - IF ResultRes NE '' THEN ResultRes := '/' - IF ResultResMin NE '' THEN ResultResMin := '/' - IF ResultResMax NE '' THEN ResultResMax := '/' - IF ResultCon NE '' THEN ResultCon := '/' - END ELSE - IF ResultThick NE '' THEN ResultThick := LayerSpecs - IF ResultRes NE '' THEN ResultRes := LayerSpecs - IF ResultResMin NE '' THEN ResultResMin := LayerSpecs - IF ResultResMax NE '' THEN ResultResMax := LayerSpecs - IF ResultCon NE '' THEN ResultCon := LayerSpecs - END - - NEXT Layer - - Case ReactType EQ 'GAN' - - WOMatKey = WONo:'*':CassNo - MakeupBox = False$ - CassIDLabel = 'WOMatNo: ' - CassID = WOMatKey - MUWfrsAddQty = 0 - - SupVerify = WOMatRec - SupVerifyDt = WOMatRec - - InCassNo1 = '' - InSlotNo1 = '' - MUWoNo1 = '' - MUCassNo1 = '' - MUSlotNo1 = '' - - PartNo = '' - LotNo = '' - SubstrPartNo = '' - CassOrderItem = '' - CustPNDesc = '' - - IF InCassNo1 NE '' THEN - WOMatRec = XLATE('WO_MAT',WONo:'*':InCassNo1,'','X') - PartNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_PART_NO$,'X') - LotNo = WOMatRec - SubstrPartNo = WOMatRec - - END ELSE - IF MUWoNo1 NE '' AND MUCassNo1 NE '' THEN - MUWOMatRec = XLATE('WO_MAT',MUWoNo1:'*':MUCassNo1,'','X') - PartNo = XLATE('WO_LOG',MUWoNo1,WO_LOG_CUST_PART_NO$,'X') - LotNo = MUWOMatRec - SubstrPartNo = MUWOMatRec - - END - END - If ReShipCustPartNo NE '' then - PartNo = ReShipCustPartNo - end - - //WfrsOut = Count(Xlate('WO_MAT_WFR', WOMatKey, 'OUT_WFR_ID', 'X'), @VM) - WfrsOut = obj_WO_Mat('CurrWaferCnt',WOMatKey) - - Specs = obj_Prod_Spec('GetLayerProp',ProdSpecID) - - ResultThick = '' - ResultRes = '' - ResultResMin = '' - ResultResMax = '' - ResultCon = '' - - LayerCount = COUNT(Specs,@RM) + (Specs NE '') - - FOR Layer = 1 TO LayerCount - - LayerSpecs = FIELD(Specs,@RM,Layer) - LayerSpecs = FIELD(LayerSpecs,@FM,2,99) ;* Pull of the layer set ID - - IF LayerSpecs NE '' THEN - ResultThick := LayerSpecs - END - - IF LayerSpecs NE '' THEN - ResultRes := LayerSpecs - ResultResMin := LayerSpecs - ResultResMax := LayerSpecs - END - - IF LayerSpecs NE '' THEN - ResultCon := LayerSpecs - END - - IF Layer < LayerCount THEN - IF ResultThick NE '' THEN ResultThick := '/' - IF ResultRes NE '' THEN ResultRes := '/' - IF ResultResMin NE '' THEN ResultResMin := '/' - IF ResultResMax NE '' THEN ResultResMax := '/' - IF ResultCon NE '' THEN ResultCon := '/' - END ELSE - IF ResultThick NE '' THEN ResultThick := LayerSpecs - IF ResultRes NE '' THEN ResultRes := LayerSpecs - IF ResultResMin NE '' THEN ResultResMin := LayerSpecs - IF ResultResMax NE '' THEN ResultResMax := LayerSpecs - IF ResultCon NE '' THEN ResultCon := LayerSpecs - END - - NEXT Layer - End Case - - IF ProdVerNo NE '' THEN - // The CassIDLabel has already been determined at this point. It can either be "RDSNo:" or "WMONo:". - // However, for some reason, it has always been overridden to be "CassID:". - // Except that QA is now requesting to not override the cassette label string for the NXP (7124) customer. - If (CustNo NE '7124') then - CassIDLabel = 'CassID: ' + ProdOrdNo = WORec + ProdVerNo = WORec + ProdVerRec = XLATE('PROD_VER',ProdVerNo,'','X') + + CompRec = XLATE('COMPANY',WoLogCustNo,'','X') + + Captive = CompRec + VendCd = CompRec + CustName = CompRec + + IF ProdOrdNo NE '' THEN + IF WoLogCustPONo = 'NA' OR WoLogCustPONo = '' THEN + PONo = ProdOrdNo + END ELSE + PONo = WoLogCustPONo + END + OrderItems = '' + VisionOrderNo = '' + VisionLineNos = '' + END + + CassCnt = COUNT(CassNos,@VM) + (CassNos NE '') + + FOR I = 1 TO CassCnt + + WOStep = WOSteps<1,I> + ProdSpecID = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') + RevLvl = XLATE('CUST_EPI_PART',WoLogCustNo:'*':WoLogEpiPartNo,CUST_EPI_PART_SPEC_REV$,'X')[-1,'B':@VM] ;* use rev from Cust Epi Part, not PSN + CassNo = CassNos<1,I> + RDSNo = RDSNos<1,I> + ReactType = Xlate('WO_MAT', WONo:'*':CassNo,'REACTOR_TYPE','X') + WOMatRec = XLATE('WO_MAT',WONo:'*':CassNo,'','X') + ReShipCust = WOMatRec + If ReShipCust EQ '' then + CustNo = WoLogCustNo + end else + CustNo = ReShipCust end - END - - IF PartNo = '' THEN - PartNo = EpiPartNO - END + CompRec = XLATE('COMPANY',CustNo,'','X') + Captive = CompRec + VendCd = CompRec + CustName = CompRec + ReShipDate = WOMatRec + If ReShipDate EQ '' then + ReqShipDt = OCONV( WORec, 'D2/' ) + DMShipDt = OCONV( WORec, 'DE' ) + end else + ReqShipDt = OCONV( ReShipDate, 'D2/' ) + DMShipDt = OCONV( ReShipDate, 'DE' ) + end + ReShipCustEpiPartNo = WOMatRec + If ReShipCustEpiPartNo EQ '' then + EpiPartNo = WoLogEpiPartNo + end else + EpiPartNo = ReShipCustEpiPartNo + end + ReShipCustPO = WOMatRec + If ReShipCustPO EQ '' then + CustPONo = WoLogCustPONo + end else + CustPONo = ReShipCustPO + end + IF CustPONo = 'NA' OR CustPONo = '' THEN + PONo = ProdOrdNo + END ELSE + PONo = CustPONo + END + ReShipEpiPartNo = WOMatRec + SAPBatchNo = WOMatRec + + SubSupplier = obj_Vendor_Code('SemiToEpi',WOMatRec) + + IF VendCd NE '' THEN SubSupplier = VendCd ;* Override from Company Table. - GOSUB PrintLabel - PrintSpectrumLabel = False$ - EpiPartNo = XLATE('WO_LOG', WONo, WO_LOG_EPI_PART_NO$, 'X') - CustReshipPartNo = XLATE('WO_MAT', WONo : '*' : CassNo, WO_MAT_RESHIP_CUST_EPI_PART_NO$, 'X') - If CustReshipPartNo EQ '' then - GenerateSpectrumLabel = XLATE('EPI_PART', EpiPartNo, EPI_PART_GENERATE_SPECTRUM_LABEL$, 'X') - end else - GenerateSpectrumLabel = XLATE('EPI_PART', CustReshipPartNo, EPI_PART_GENERATE_SPECTRUM_LABEL$, 'X') - end - PrintSpectrumLabel = GenerateSpectrumLabel AND (Indexc(PrintPath, 'MESZBRPRT011', 1) OR Indexc(PrintPath, 'MESZBRPRT004', 1)) - If PrintSpectrumLabel then - Sap_Services('PrintSpectrumLabel', WONo, WOStep, CassNo) - If Error_Services('NoError') then - LogData = '' - LogData<1, 1> = LoggingDTM - LogData<1, 2> = 'Successfully sent .sik file to Spectrum file share. WO#' : WONo : ', Cass# ' : CassNo - Logging_Services('AppendLog', objSpectrumLog, LogData, @FM, @VM) - end else - ErrorMessage = Error_Services('GetMessage') - LogData = '' - LogData<1, 1> = LoggingDTM - LogData<1, 2> = 'Failed to send .sik file to Spectrum file share. WO#' : WONo : ', Cass# ' : CassNo :'. ' : ErrorMessage - Logging_Services('AppendLog', objSpectrumLog, LogData, @FM, @VM) - end - end -NEXT I + Begin Case + Case (RDSNo NE '' AND RDSType EQ 'SIC') OR (RDSNo NE '' AND ReactType<1,I> NE 'EPP' AND ReactType<1,I> NE 'GAN') ;* regular Epi + + CassIDLabel = 'RDSNo: ' + CassID = RDSNo + ReactType = ReactTypes<1,I> + + MakeupBox = WOMatRec + PartNo = XLATE('WO_LOG',WONo,WO_LOG_EPI_PART_NO$,'X') + If ReShipEpiPartNo NE '' then + PartNo = ReShipEpiPartNo + end + LotNo = WOMatRec + SubstrPartNo = WOMatRec + + IF SubstrPartNo[-2,2] _EQC '.S' THEN SubstrPartNo = '' + + CassOrderItem = WOMatRec + + IF ProdVerNo = '' THEN + CustPNDesc = XLATE( 'ORDER_DET',WONo:'*':CassOrderItem,'CUST_PN_DESC','X') + END ELSE + CustPNDesc = XLATE('PROD_VER',ProdVerNo,PROD_VER_CUST_PART_DESC$,'X') + END + + SupVerify = XLATE( 'RDS', RDSNo, 'SUP_VER_SIG_NAME', 'X' ) + SupVerifyDt = OCONV(XLATE('WO_MAT',WONo:'*':CassNo,'SHIP_SUP_VER_SIG_DT','X'),'D2/') + WfrsOut = XLATE( 'RDS', RDSNo, 'WFRS_OUT', 'X' ) + MUWfrsRemQty = XLATE( 'RDS', RDSNo, 'MU_WFRS_REMOVED','X' ) + MUWfrsAddQty = XLATE( 'RDS', RDSNo, 'MU_WFRS_ADDED','X' ) + + ResultThickL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG', 'X' ), 'MD2' ) + ResultThickL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG_L2', 'X' ), 'MD2' ) + ResultThickL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG_L3', 'X' ), 'MD2' ) + + TargetThickL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET', 'X' ), 'MD2' ) + TargetThickL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET_L2', 'X' ), 'MD2' ) + TargetThickL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET_L3', 'X' ), 'MD2' ) + + IF ResultThickL1 = '' THEN ResultThickL1 = TargetThickL1 + IF ResultThickL2 = '' THEN ResultThickL2 = TargetThickL2 + IF ResultThickL3 = '' THEN ResultThickL3 = TargetThickL3 + + ThickUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS', 'X' ) + ThickUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS_L2', 'X' ) + ThickUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS_L3', 'X' ) + + ResultThick = ResultThickL1 + IF ResultThickL2 NE '' THEN ResultThick := '/':ResultThickL2 + IF ResultThickL3 NE '' THEN ResultThick := '/':ResultThickL3 + + IF ResultThick NE '' THEN ResultThick := ThickUnitsL1 + + ResultResL1 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG', 'X' ) + ResultResL2 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG_L2', 'X' ) + ResultResL3 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG_L3', 'X' ) + + TargetResL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET', 'X' ), 'MD3' ) + TargetResL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET_L2', 'X' ), 'MD3' ) + TargetResL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET_L3', 'X' ), 'MD3' ) + + IF ResultResL1 = '' THEN ResultResL1 = TargetResL1 + IF ResultResL2 = '' THEN ResultResL2 = TargetResL2 + IF ResultResL3 = '' THEN ResultResL3 = TargetResL3 + + ResUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS', 'X' ) + ResUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS_L2', 'X' ) + ResUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS_L3', 'X' ) + + ResultRes = ResultResL1 + + IF ResultResL2 NE '' THEN ResultRes := '/':ResultResL2 + IF ResultResL3 NE '' THEN ResultRes := '/':ResultResL3 + + IF ResultRes NE '' THEN ResultRes := ResUnitsL1 + + ResultResMin = XLATE( 'REACT_RUN', RDSNo, 'TRES_MIN', 'X' ) + ResultResMax = XLATE( 'REACT_RUN', RDSNo, 'TRES_MAX', 'X' ) + + TargetConL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET', 'X' )<1,1>, 'MS21' ) + TargetConL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET_L2', 'X' ), 'MS21' ) + TargetConL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET_L3', 'X' ), 'MS21' ) + + ConUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS', 'X' ) + ConUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS_L2', 'X' ) + ConUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS_L3', 'X' ) + + ResultCon = TargetConL1 + IF TargetConL2 NE '' THEN ResultCon := '/':TargetConL2 + IF TargetConL3 NE '' THEN ResultCon := '/':TargetConL3 + IF ResultCon NE '' THEN ResultCon := ConUnitsL1 + + Case (ReactType EQ 'EPP') or (ReactType EQ 'P') ; * EpiPro + + WMOutKey = WONo:'*':WOStep:'*':CassNo + WMOutRec = XLATE('WM_OUT',WMOutKey,'','X') + + MakeupBox = WMOutRec + + CassIDLabel = 'WMONo: ' + CassID = WMOutKey + + CONVERT '*' TO '.' IN CassID + + ReactType = 'EpiPro' ;* * * * 12/17/2008 Harded coded reactor type for EpiPro reactors + + SupVerify = WMOutRec + SupVerifyDt = OCONV(XLATE('WO_MAT',WONo:'*':CassNo,'SHIP_SUP_VER_SIG_DT','X'),'D2/') + + InCassNo1 = '' + InSlotNo1 = '' + MUWoNo1 = '' + MUCassNo1 = '' + MUSlotNo1 = '' + + PartNo = '' + LotNo = '' + SubstrPartNo = '' + CassOrderItem = '' + CustPNDesc = '' + + Pointer = 1 + LOOP + IF WMOutRec = '' THEN + InCassNo1 = WMOutRec + InSlotNo1 = WMoutRec + END ELSE + IF MUWoNo1 = '' THEN + MUWoNo1 = WMOutRec + MUCassNo1 = WMOutRec + MUSlotNo1 = WMOutRec + END + END + + UNTIL InCassNo1 NE '' OR Pointer > 25 + + Pointer += 1 + REPEAT + + IF InCassNo1 NE '' THEN + WOMatRec = XLATE('WO_MAT',WONo:'*':InCassNo1,'','X') + PartNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_PART_NO$,'X') + LotNo = WOMatRec + SubstrPartNo = WOMatRec + + END ELSE + IF MUWoNo1 NE '' AND MUCassNo1 NE '' THEN + MUWOMatRec = XLATE('WO_MAT',MUWoNo1:'*':MUCassNo1,'','X') + PartNo = XLATE('WO_LOG',MUWoNo1,WO_LOG_CUST_PART_NO$,'X') + LotNo = MUWOMatRec + SubstrPartNo = MUWOMatRec + + END + END + If ReShipEpiPartNo NE '' then + PartNo = ReShipEpiPartNo + end + WfrsOut = XLATE('WM_OUT',WMOutKey,'WFRS_OUT','X') + MUWfrsRemQty = '' + MUWfrsAddQty = '' + + Specs = obj_Prod_Spec('GetLayerProp',ProdSpecID) + + ResultThick = '' + ResultRes = '' + ResultResMin = '' + ResultResMax = '' + ResultCon = '' + + LayerCount = COUNT(Specs,@RM) + (Specs NE '') + + FOR Layer = 1 TO LayerCount + + LayerSpecs = FIELD(Specs,@RM,Layer) + LayerSpecs = FIELD(LayerSpecs,@FM,2,99) ;* Pull of the layer set ID + + IF LayerSpecs NE '' THEN + ResultThick := LayerSpecs + END + + IF LayerSpecs NE '' THEN + ResultRes := LayerSpecs + ResultResMin := LayerSpecs + ResultResMax := LayerSpecs + END + + IF LayerSpecs NE '' THEN + ResultCon := LayerSpecs + END + + IF Layer < LayerCount THEN + IF ResultThick NE '' THEN ResultThick := '/' + IF ResultRes NE '' THEN ResultRes := '/' + IF ResultResMin NE '' THEN ResultResMin := '/' + IF ResultResMax NE '' THEN ResultResMax := '/' + IF ResultCon NE '' THEN ResultCon := '/' + END ELSE + IF ResultThick NE '' THEN ResultThick := LayerSpecs + IF ResultRes NE '' THEN ResultRes := LayerSpecs + IF ResultResMin NE '' THEN ResultResMin := LayerSpecs + IF ResultResMax NE '' THEN ResultResMax := LayerSpecs + IF ResultCon NE '' THEN ResultCon := LayerSpecs + END + + NEXT Layer + + Case ReactType EQ 'GAN' + + WOMatKey = WONo:'*':CassNo + MakeupBox = False$ + CassIDLabel = 'WOMatNo: ' + CassID = WOMatKey + MUWfrsAddQty = 0 + + SupVerify = WOMatRec + SupVerifyDt = WOMatRec + + InCassNo1 = '' + InSlotNo1 = '' + MUWoNo1 = '' + MUCassNo1 = '' + MUSlotNo1 = '' + + PartNo = '' + LotNo = '' + SubstrPartNo = '' + CassOrderItem = '' + CustPNDesc = '' + + IF InCassNo1 NE '' THEN + WOMatRec = XLATE('WO_MAT',WONo:'*':InCassNo1,'','X') + PartNo = XLATE('WO_LOG',WONo,WO_LOG_EPI_PART_NO$,'X') + LotNo = WOMatRec + SubstrPartNo = WOMatRec + + END ELSE + IF MUWoNo1 NE '' AND MUCassNo1 NE '' THEN + MUWOMatRec = XLATE('WO_MAT',MUWoNo1:'*':MUCassNo1,'','X') + PartNo = XLATE('WO_LOG',MUWoNo1,WO_LOG_EPI_PART_NO$,'X') + LotNo = MUWOMatRec + SubstrPartNo = MUWOMatRec + + END + END + If ReShipEpiPartNo NE '' then + PartNo = ReShipEpiPartNo + end + + //WfrsOut = Count(Xlate('WO_MAT_WFR', WOMatKey, 'OUT_WFR_ID', 'X'), @VM) + WfrsOut = obj_WO_Mat('CurrWaferCnt',WOMatKey) + + Specs = obj_Prod_Spec('GetLayerProp',ProdSpecID) + + ResultThick = '' + ResultRes = '' + ResultResMin = '' + ResultResMax = '' + ResultCon = '' + + LayerCount = COUNT(Specs,@RM) + (Specs NE '') + + FOR Layer = 1 TO LayerCount + + LayerSpecs = FIELD(Specs,@RM,Layer) + LayerSpecs = FIELD(LayerSpecs,@FM,2,99) ;* Pull of the layer set ID + + IF LayerSpecs NE '' THEN + ResultThick := LayerSpecs + END + + IF LayerSpecs NE '' THEN + ResultRes := LayerSpecs + ResultResMin := LayerSpecs + ResultResMax := LayerSpecs + END + + IF LayerSpecs NE '' THEN + ResultCon := LayerSpecs + END + + IF Layer < LayerCount THEN + IF ResultThick NE '' THEN ResultThick := '/' + IF ResultRes NE '' THEN ResultRes := '/' + IF ResultResMin NE '' THEN ResultResMin := '/' + IF ResultResMax NE '' THEN ResultResMax := '/' + IF ResultCon NE '' THEN ResultCon := '/' + END ELSE + IF ResultThick NE '' THEN ResultThick := LayerSpecs + IF ResultRes NE '' THEN ResultRes := LayerSpecs + IF ResultResMin NE '' THEN ResultResMin := LayerSpecs + IF ResultResMax NE '' THEN ResultResMax := LayerSpecs + IF ResultCon NE '' THEN ResultCon := LayerSpecs + END + + NEXT Layer + End Case + + IF ProdVerNo NE '' THEN + // The CassIDLabel has already been determined at this point. It can either be "RDSNo:" or "WMONo:". + // However, for some reason, it has always been overridden to be "CassID:". + // Except that QA is now requesting to not override the cassette label string for the NXP (7124) customer. + If (CustNo NE '7124') then + CassIDLabel = 'CassID: ' + end + END + + IF PartNo = '' THEN + PartNo = EpiPartNO + END + + GOSUB PrintLabel + PrintSpectrumLabel = False$ + EpiPartNo = XLATE('WO_LOG', WONo, WO_LOG_EPI_PART_NO$, 'X') + CustReshipPartNo = XLATE('WO_MAT', WONo : '*' : CassNo, WO_MAT_RESHIP_CUST_EPI_PART_NO$, 'X') + If CustReshipPartNo EQ '' then + GenerateSpectrumLabel = XLATE('EPI_PART', EpiPartNo, EPI_PART_GENERATE_SPECTRUM_LABEL$, 'X') + end else + GenerateSpectrumLabel = XLATE('EPI_PART', CustReshipPartNo, EPI_PART_GENERATE_SPECTRUM_LABEL$, 'X') + end + PrintSpectrumLabel = GenerateSpectrumLabel AND (Indexc(PrintPath, 'MESZBRPRT011', 1) OR Indexc(PrintPath, 'MESZBRPRT004', 1)) + If PrintSpectrumLabel then + Sap_Services('PrintSpectrumLabel', WONo, WOStep, CassNo) + If Error_Services('NoError') then + LogData = '' + LogData<1, 1> = LoggingDTM + LogData<1, 2> = 'Successfully sent .sik file to Spectrum file share. WO#' : WONo : ', Cass# ' : CassNo + Logging_Services('AppendLog', objSpectrumLog, LogData, @FM, @VM) + end else + ErrorMessage = Error_Services('GetMessage') + LogData = '' + LogData<1, 1> = LoggingDTM + LogData<1, 2> = 'Failed to send .sik file to Spectrum file share. WO#' : WONo : ', Cass# ' : CassNo :'. ' : ErrorMessage + Logging_Services('AppendLog', objSpectrumLog, LogData, @FM, @VM) + end + end + + NEXT I * * * * * * * OIPrint_Err: * * * * * * * -* Local method to kill the OIPI engine - -*IF stat < 0 THEN DEBUG ;********* - -If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer("TERM") -end else - stat = Direct_Print('STOP') -end - + * Local method to kill the OIPI engine + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer("TERM") + end else + stat = Direct_Print('STOP') + end RETURN @@ -564,181 +562,176 @@ RETURN PrintLabel: * * * * * * * * -Convert '*' to '.' in CassID + Convert '*' to '.' in CassID -MULabel = '' -IF MakeupBox = 1 THEN MULabel = '** Makeup Box **' -IF MUWfrsAddQty > 0 THEN MULabel = 'Merged Lot' - -SuppCd = SubSupplier -ErrorMsg = '' + MULabel = '' + IF MakeupBox = 1 THEN MULabel = '** Makeup Box **' + IF MUWfrsAddQty > 0 THEN MULabel = 'Merged Lot' + + SuppCd = SubSupplier + ErrorMsg = '' -IF LEN(PartNo) > 18 THEN ErrorMsg = 'CustPartNo parameter exceeds 18 characters.' -IF LEN(RevLvl) > 3 THEN ErrorMsg = 'RevLvl parameter exceeds 3 characters.' -IF LEN(WfrsOut) > 6 THEN ErrorMsg = 'PartQty parameter exceeds 6 characters.' -IF NOT(NUM(WfrsOut)) THEN ErrorMsg = 'PartQty parameter is not a number.' + IF LEN(PartNo) > 18 THEN ErrorMsg = 'CustPartNo parameter exceeds 18 characters.' + IF LEN(RevLvl) > 3 THEN ErrorMsg = 'RevLvl parameter exceeds 3 characters.' + IF LEN(WfrsOut) > 6 THEN ErrorMsg = 'PartQty parameter exceeds 6 characters.' + IF NOT(NUM(WfrsOut)) THEN ErrorMsg = 'PartQty parameter is not a number.' -IF ErrorMsg THEN - ErrMsg(ErrorMsg) -END ELSE - * Good to go on the label print - If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',ImageData) ;* Download bitmap image to the printer - end else - stat = Direct_Print('PRINT', ImageData) - end - * Label is 812 x 608 dots at 8dots/mm (203 dots/inch) - * Leave periodic spaces in Label String - OIPrint interface wraps text on spaces and will cut off - * the LabelString if there aren't any spaces. Printer Width needs to be set to 132 or greater - - LabelString = '^XA' ;* Start of label format - LabelString := '^LH15,50' ;* Label home offset (needed to get onto the label medium) - LabelString := '^BY3' ;* Set narrow Bar Code line width to 3 dots - LabelString := '^PR2' ;* Print speed = 2 IPS - - LabelString := '^FO0,156^GB809,0,3,B^FS':@FM ;* 'Top' of 4x3 Label - LabelString := '^FO0,308^GB809,0,3,B^FS':@FM ;* 1st 'horizontal' line (bottom of 1st cell) - LabelString := '^FO0,460^GB809,0,3,B^FS':@FM ;* 2nd 'horizontal' line (bottom of 2nd cell) - - * Block 1 Left (Cust Part) - LabelString := '^FO0,10^A0,25^FDCust Part (P):^FS':CRLF$ ;* Label Line 1 - LabelString := '^FO15,45^A0,50,40^FD':PartNo:'^FS':CRLF$ ;* Readable - LabelString := '^FO15,95^BY2^BC,60,N^FDP':PartNo:'^FS':CRLF$ ;* Code 128 - LabelString := '^BY3,3.0':CRLF$ - - * Block 1 Right (Rev Lvl) - LabelString := '^FO508,0^BY2^B3,,60,N^FD2P':RevLvl:'^FS':CRLF$ ;* Code 39 - LabelString := '^BY3,3.0':CRLF$ - LabelString := '^FO508,70^A0,25^FDRev.Level (2P):^FS':CRLF$ ;* Label Line 1 - LabelString := '^FO680,70^A0,50,48^FD':RevLvl:'^FS':CRLF$ ;* Readable - - * Block 2 Left (Quantity) - LabelString := '^FO0,165^A0,25^FDQuantity (Q):^FS':CRLF$ ;* Label Line 1 - LabelString := '^FO15,195^A0,50,40^FD':WfrsOut:'^FS':CRLF$ ;* Readable - LabelString := '^FO15,245^BY2^B3,,60,N^FDQ':WfrsOut:'^FS':CRLF$ ;* Code 39 - LabelString := '^BY3,3.0':CRLF$ - - LabelString := '^FO250,275^A0,25^FDReact Type:^FS':CRLF$ - LabelString := '^FO380,275^A0,25^FD':ReactType:'^FS':CRLF$ - - LabelString := '^FO500,123^A0,25^FDReq Ship Dt:^FS':CRLF$ - LabelString := '^FO635,123^A0,36^FD':ReqShipDt:'^FS':CRLF$ - - //Data Matrix Barcode Content - IF CustNo = '7053' THEN - * Tower Specific - //DPC - 2/10/20 - added '1B' prefix and SAPBatchNo per Matt T. request - //DPC - 3/11/20 - replaced 1T LotNo with SAPBatchNo per Matt T. request - BCContent = 'P' : PartNo :';' ;* Cust Part No - BCContent := '2T' : CassID :';' ;* CassID (Epi Lot Number) - BCContent := '1B' : SAPBatchNo :';' ;* SAP Batch ID - BCContent := '1R' : ResultResMin :';' ;* Res Min - BCContent := '2R' : ResultResMax :';' ;* Res Max - BCContent := 'Q' : WfrsOut :';' ;* Qty - BCContent := '1V' : 'IR' :';' ;* Vendor Code - BCContent := '6D' : DMShipDt :';' ;* Req Ship Date - BCContent := '32T' : EpiPartNo ;* EpiPartNo + IF ErrorMsg THEN + ErrMsg(ErrorMsg) END ELSE - * All other customers - BCContent = 'P' : PartNo :';' ;* Cust Part No - BCContent := '2T' : RevLvl :';' ;* Rev Level - BCContent := '1T' : CassID :';' ;* Cass ID (Lot Number) - BCContent := '1R' : ResultThick :';' ;* Thk Avg - BCContent := '2R' : ResultRes :';' ;* Res Avg - BCContent := '3R' : ResultCon :';' ;* Conc - BCContent := 'Q' : WfrsOut :';' ;* Qty - BCContent := '1V' : SuppCD :';' ;* Vendor Code - BCContent := '6D' : DMShipDt :';' ;* Req Ship Date - BCContent := '32T' : CustName ;* Customer Name - END - - LabelString := '^FO600,178^BXN,3,200^FD':BCContent:'^FS' ;* Test Data Matrix bar code - - * Block 3 Left (Customer Lot) - LabelString := '^FO0,315^A0,25^FDCustomer Lot :^FS':CRLF$ ;* Label Line 1 - LabelString := '^FO15,350^A0,50,40^FD':LotNo:'^FS':CRLF$ ;* Readable - LabelString := '^FO15,400^BY2^B3,,60,N^FD':LotNo:'^FS':CRLF$ ;* Code 39 - LabelString := '^BY3,3.0':CRLF$ + * Good to go on the label print + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',ImageData) ;* Download bitmap image to the printer + end else + stat = Direct_Print('PRINT', ImageData) + end + * Label is 812 x 608 dots at 8dots/mm (203 dots/inch) + * Leave periodic spaces in Label String - OIPrint interface wraps text on spaces and will cut off + * the LabelString if there aren't any spaces. Printer Width needs to be set to 132 or greater - * Block 3 Right (Supplier) - LabelString := '^FO510,320^A0,,40^FDIFX Epi Services^FS':CRLF$ ;* Added Text for 'IFX Epi Services * * * * * * * * * * - - IF SuppCd NE '' THEN - - LabelString := '^FO590,430^A0,25^FDSupp Cd (1V):^FS':CRLF$ ;* Label Line - Added 8/17/2005 JCH Supplier Code Info - LabelString := '^FO740,430^A0,36,40^FD':SuppCd:'^FS':CRLF$ ;* Readable - - LabelString := '^FO590,370^BY2^B3,,50,N^FD1V':SuppCd:'^FS':CRLF$ ;* Code 39 Supplier Code - This bar code is in line 1 ;*Changed ^FD' to ^FD1V' - dkk 7/27/15 + LabelString = '^XA' ;* Start of label format + LabelString := '^LH15,50' ;* Label home offset (needed to get onto the label medium) + LabelString := '^BY3' ;* Set narrow Bar Code line width to 3 dots + LabelString := '^PR2' ;* Print speed = 2 IPS + + LabelString := '^FO0,156^GB809,0,3,B^FS':@FM ;* 'Top' of 4x3 Label + LabelString := '^FO0,308^GB809,0,3,B^FS':@FM ;* 1st 'horizontal' line (bottom of 1st cell) + LabelString := '^FO0,460^GB809,0,3,B^FS':@FM ;* 2nd 'horizontal' line (bottom of 2nd cell) + + * Block 1 Left (Cust Part) + LabelString := '^FO0,10^A0,25^FDCust Part (P):^FS':CRLF$ ;* Label Line 1 + LabelString := '^FO15,45^A0,50,40^FD':PartNo:'^FS':CRLF$ ;* Readable + LabelString := '^FO15,95^BY2^BC,60,N^FDP':PartNo:'^FS':CRLF$ ;* Code 128 LabelString := '^BY3,3.0':CRLF$ - END - - * Block 4 1st Line Left - LabelString := '^FO0,470^A0,25^FDCustomer:^FS':CRLF$ ;* Label Line - LabelString := '^FO120,470^A0,45,25^FD':CustName:'^FS':CRLF$ ;* Readable - - * Block 4 1st Line Right - IF MULabel NE '' THEN - LabelString := '^FO550,470^A0,40^FD':MULabel:'^FS':CRLF$ - END - - * Block 4 2nd Line - If CustNo EQ '6874' then ;* for Newport, include the 1T prefix - LabelString := '^FO0,515^A0,25^FD':'(1T)':CassIDLabel :'^FS':CRLF$ ;* Label Line - LabelString := '^FO130,515^A0,36,40^FD':CassID:'^FS':CRLF$ - LabelString := '^FO340,515^BY2^B3,,40,N^FD':'1T':CassID:'^FS':CRLF$ - end else - LabelString := '^FO0,515^A0,25^FD':CassIDLabel :'^FS':CRLF$ ;* Label Line - LabelString := '^FO130,515^A0,36,40^FD':CassID:'^FS':CRLF$ ;* Readable - LabelString := '^FO340,515^BY2^B3,,40,N^FD':CassID:'^FS':CRLF$ ;* Code 39 (This is the Cass ID) ;*Changed ^FD' to ^FD1T' - dkk 7/30/15 - end - - LabelString := '^BY3,3.0':CRLF$ - - * Block 4 3rd Line - IF ProdVerNo NE '' THEN - * SAP - LabelString := '^FO0,570^A0,25^FDBatch:^FS':CRLF$ ;* Label Line - LabelString := '^FO130,570^A0,36^FD':SAPBatchNo:'^FS':CRLF$ ;* Readable * SAP Batch No * - LabelString := '^FO340,570^BY2^B3,,40,N^FD':SAPBatchNo:'^FS':CRLF$ ;* Code 39 (This is the Cass ID) + + * Block 1 Right (Rev Lvl) + LabelString := '^FO508,0^BY2^B3,,60,N^FD2P':RevLvl:'^FS':CRLF$ ;* Code 39 + LabelString := '^BY3,3.0':CRLF$ + LabelString := '^FO508,70^A0,25^FDRev.Level (2P):^FS':CRLF$ ;* Label Line 1 + LabelString := '^FO680,70^A0,50,48^FD':RevLvl:'^FS':CRLF$ ;* Readable + + * Block 2 Left (Quantity) + LabelString := '^FO0,165^A0,25^FDQuantity (Q):^FS':CRLF$ ;* Label Line 1 + LabelString := '^FO15,195^A0,50,40^FD':WfrsOut:'^FS':CRLF$ ;* Readable + LabelString := '^FO15,245^BY2^B3,,60,N^FDQ':WfrsOut:'^FS':CRLF$ ;* Code 39 + LabelString := '^BY3,3.0':CRLF$ + + LabelString := '^FO250,275^A0,25^FDReact Type:^FS':CRLF$ + LabelString := '^FO380,275^A0,25^FD':ReactType:'^FS':CRLF$ + + LabelString := '^FO500,123^A0,25^FDReq Ship Dt:^FS':CRLF$ + LabelString := '^FO635,123^A0,36^FD':ReqShipDt:'^FS':CRLF$ + + //Data Matrix Barcode Content + IF CustNo = '7053' THEN + * Tower Specific + //DPC - 2/10/20 - added '1B' prefix and SAPBatchNo per Matt T. request + //DPC - 3/11/20 - replaced 1T LotNo with SAPBatchNo per Matt T. request + BCContent = 'P' : PartNo :';' ;* Cust Part No + BCContent := '2T' : CassID :';' ;* CassID (Epi Lot Number) + BCContent := '1B' : SAPBatchNo :';' ;* SAP Batch ID + BCContent := '1R' : ResultResMin :';' ;* Res Min + BCContent := '2R' : ResultResMax :';' ;* Res Max + BCContent := 'Q' : WfrsOut :';' ;* Qty + BCContent := '1V' : 'IR' :';' ;* Vendor Code + BCContent := '6D' : DMShipDt :';' ;* Req Ship Date + BCContent := '32T' : EpiPartNo ;* EpiPartNo + END ELSE + * All other customers + BCContent = 'P' : PartNo :';' ;* Cust Part No + BCContent := '2T' : RevLvl :';' ;* Rev Level + BCContent := '1T' : CassID :';' ;* Cass ID (Lot Number) + BCContent := '1R' : ResultThick :';' ;* Thk Avg + BCContent := '2R' : ResultRes :';' ;* Res Avg + BCContent := '3R' : ResultCon :';' ;* Conc + BCContent := 'Q' : WfrsOut :';' ;* Qty + BCContent := '1V' : SuppCD :';' ;* Vendor Code + BCContent := '6D' : DMShipDt :';' ;* Req Ship Date + BCContent := '32T' : CustName ;* Customer Name + END + + LabelString := '^FO600,178^BXN,3,200^FD':BCContent:'^FS' ;* Test Data Matrix bar code + + * Block 3 Left (Customer Lot) + LabelString := '^FO0,315^A0,25^FDCustomer Lot :^FS':CRLF$ ;* Label Line 1 + LabelString := '^FO15,350^A0,50,40^FD':LotNo:'^FS':CRLF$ ;* Readable + LabelString := '^FO15,400^BY2^B3,,60,N^FD':LotNo:'^FS':CRLF$ ;* Code 39 + LabelString := '^BY3,3.0':CRLF$ + + * Block 3 Right (Supplier) + LabelString := '^FO510,320^A0,,40^FDIFX Epi Services^FS':CRLF$ ;* Added Text for 'IFX Epi Services * * * * * * * * * * + + IF SuppCd NE '' THEN + + LabelString := '^FO590,430^A0,25^FDSupp Cd (1V):^FS':CRLF$ ;* Label Line - Added 8/17/2005 JCH Supplier Code Info + LabelString := '^FO740,430^A0,36,40^FD':SuppCd:'^FS':CRLF$ ;* Readable + + LabelString := '^FO590,370^BY2^B3,,50,N^FD1V':SuppCd:'^FS':CRLF$ ;* Code 39 Supplier Code - This bar code is in line 1 ;*Changed ^FD' to ^FD1V' - dkk 7/27/15 + LabelString := '^BY3,3.0':CRLF$ + END + + * Block 4 1st Line Left + LabelString := '^FO0,470^A0,25^FDCustomer:^FS':CRLF$ ;* Label Line + LabelString := '^FO120,470^A0,45,25^FD':CustName:'^FS':CRLF$ ;* Readable + + * Block 4 1st Line Right + IF MULabel NE '' THEN + LabelString := '^FO550,470^A0,40^FD':MULabel:'^FS':CRLF$ + END + + * Block 4 2nd Line + If CustNo EQ '6874' then ;* for Newport, include the 1T prefix + LabelString := '^FO0,515^A0,25^FD':'(1T)':CassIDLabel :'^FS':CRLF$ ;* Label Line + LabelString := '^FO130,515^A0,36,40^FD':CassID:'^FS':CRLF$ + LabelString := '^FO340,515^BY2^B3,,40,N^FD':'1T':CassID:'^FS':CRLF$ + end else + LabelString := '^FO0,515^A0,25^FD':CassIDLabel :'^FS':CRLF$ ;* Label Line + LabelString := '^FO130,515^A0,36,40^FD':CassID:'^FS':CRLF$ ;* Readable + LabelString := '^FO340,515^BY2^B3,,40,N^FD':CassID:'^FS':CRLF$ ;* Code 39 (This is the Cass ID) ;*Changed ^FD' to ^FD1T' - dkk 7/30/15 + end + LabelString := '^BY3,3.0':CRLF$ - END - - * Block 4 5th Line - LabelString := '^FO0,620^A0,25^FDPO No:^FS':CRLF$ ;* Label Line - - IF LEN(PONo) > 11 THEN - LabelString := '^FO80,620^A0,25,20^FD':PONo:'^FS':CRLF$ ;* Readable * Production Order * Squeezed - END ELSE - LabelString := '^FO80,620^A0,25,40^FD':PONo:'^FS':CRLF$ ;* Readable * Production Order * - END - - LabelString := '^FO300,620^A0,25^FDWO No:^FS':CRLF$ ;* Label Line - LabelString := '^FO380,620^A0,25^FD':WONo:'^FS':CRLF$ ;* Readable - LabelString := '^FO490,620^A0,25^FDEPI Part:^FS':CRLF$ ;* Label Line - LabelString := '^FO590,620^A0,25^FD':EpiPartNo:'^FS':CRLF$ - - * Block 4 - IF SAPBatchNo = '' THEN - ConcLabelString = FMT(EpiPartNo,"L#15"):FMT(CassID,"L#12"):FMT(WfrsOut,"R#6") - END ELSE - ConcLabelString = EpiPartNo:' ':SAPBatchNo:' ':WfrsOut - END - - LabelString := '^FO0,650^BY2^BC,90,N^FD':ConcLabelString:'^FS':CRLF$ ;* Code 128 - original - LabelString := '^XZ' + * Block 4 3rd Line + IF ProdVerNo NE '' THEN + * SAP + LabelString := '^FO0,570^A0,25^FDBatch:^FS':CRLF$ ;* Label Line + LabelString := '^FO130,570^A0,36^FD':SAPBatchNo:'^FS':CRLF$ ;* Readable * SAP Batch No * + LabelString := '^FO340,570^BY2^B3,,40,N^FD':SAPBatchNo:'^FS':CRLF$ ;* Code 39 (This is the Cass ID) + LabelString := '^BY3,3.0':CRLF$ + + END - If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then - stat = Set_Printer('TEXT',LabelString) - end else - stat = Direct_Print('PRINT', LabelString) - end -END ;* End of Check for good label data + * Block 4 5th Line + LabelString := '^FO0,620^A0,25^FDPO No:^FS':CRLF$ ;* Label Line + + IF LEN(PONo) > 11 THEN + LabelString := '^FO80,620^A0,25,20^FD':PONo:'^FS':CRLF$ ;* Readable * Production Order * Squeezed + END ELSE + LabelString := '^FO80,620^A0,25,40^FD':PONo:'^FS':CRLF$ ;* Readable * Production Order * + END + LabelString := '^FO300,620^A0,25^FDWO No:^FS':CRLF$ ;* Label Line + LabelString := '^FO380,620^A0,25^FD':WONo:'^FS':CRLF$ ;* Readable + LabelString := '^FO490,620^A0,25^FDEPI Part:^FS':CRLF$ ;* Label Line + LabelString := '^FO590,620^A0,25^FD':EpiPartNo:'^FS':CRLF$ + + * Block 4 + IF SAPBatchNo = '' THEN + ConcLabelString = FMT(EpiPartNo,"L#15"):FMT(CassID,"L#12"):FMT(WfrsOut,"R#6") + END ELSE + ConcLabelString = EpiPartNo:' ':SAPBatchNo:' ':WfrsOut + END + + LabelString := '^FO0,650^BY2^BC,90,N^FD':ConcLabelString:'^FS':CRLF$ ;* Code 128 - original + LabelString := '^XZ' + + If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then + stat = Set_Printer('TEXT',LabelString) + end else + stat = Direct_Print('PRINT', LabelString) + end + END ;* End of Check for good label data RETURN - - - - diff --git a/LSL2/STPROC/QA_SERVICES.txt b/LSL2/STPROC/QA_SERVICES.txt index e54af46..2ad08ce 100644 --- a/LSL2/STPROC/QA_SERVICES.txt +++ b/LSL2/STPROC/QA_SERVICES.txt @@ -146,13 +146,14 @@ Declare subroutine Set_Status, Sleepery, Winyield, Yield, SRP_COM, QA_Services, Declare subroutine Validate, obj_WO_Mat, obj_WO_Mat_Log, obj_React_Status, Record_Lock, obj_React_State, obj_Post_Log Declare subroutine RDS_Services, obj_WO_React, RDS_React_Run, Signature_Services, SQL_Services, SRP_Stopwatch Declare subroutine Override_Services, Reactor_Services, Lot_Services, Obj_Notes, Mona_Services, Service_Services -Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services, Wafer_Counter_Services +Declare subroutine Transaction_Services +Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services Declare function Min, Max, SRPSendMail, Btree.Extract, GetTickCount, HTTPClient_Services, Obj_RDS, SQL_Services Declare function SRP_Encode, SRP_Decode, SRP_COM, QA_Services, RDS_Services, Obj_NCR, Logging_Services, Obj_Reactor Declare function Get_Status, Set_Status, obj_WO_Mat, NextKey, MemberOf, FieldCount, obj_React_Status, Obj_Clean_Insp Declare function Schedule_Services, Signature_Services, Date, Time, Datetime, Date_Services, SRP_Array, Math_Services -Declare function Supplement_Services, Reactor_Services, Lot_Services +Declare function Supplement_Services, Reactor_Services, Lot_Services, Wafer_Counter_Services LogDate = Oconv(Date(), 'D4/') LogTime = Oconv(Time(), 'MTS') @@ -3169,12 +3170,10 @@ Service UpdateFailedWafers(WOMatKey) AllFailedWafers<0, WfrIndex> = (PreFailedWafers<0, WfrIndex> OR FWIFailedWafers<0, WfrIndex> OR LWIFailedWafers<0, WfrIndex> OR PostFailedWafers<0, WfrIndex>) Next WfrIndex end - WOMatRec = AllFailedWafers - Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$) + Transaction_Services('PostWriteFieldTransaction', 'WO_MAT', WOMatKey, WO_MAT_FAILED_WAFERS$, AllFailedWafers) end else Error_Services('Add', 'Error in ':Service:' service. RDSNo is null') end - End Case end else Error_Services('Add', 'Error in ':Service:' service. ReactorType is null') @@ -3183,7 +3182,6 @@ Service UpdateFailedWafers(WOMatKey) Error_Services('Add', 'Error in ':Service:' service. PSNo is null') end - end service diff --git a/LSL2/STPROCINS/WO_MAT_EQUATES.txt b/LSL2/STPROCINS/WO_MAT_EQUATES.txt index 5b0603b..1b8755a 100644 --- a/LSL2/STPROCINS/WO_MAT_EQUATES.txt +++ b/LSL2/STPROCINS/WO_MAT_EQUATES.txt @@ -6,155 +6,155 @@ compile insert WO_MAT_EQUATES ----------------------------------------*/ -Equ WO_MAT_CASS_NO$ To 0 -Equ WO_MAT_WO_NO$ To 0 -Equ WO_MAT_LOT_NO$ To 1 -Equ WO_MAT_WAFER_QTY$ To 2 -Equ WO_MAT_CUST_PART_NO$ To 3 -Equ WO_MAT_SUB_PART_NO$ To 4 -Equ WO_MAT_ORDER_ITEM$ To 5 -Equ WO_MAT_INV_WH$ To 6 -Equ WO_MAT_INV_LOCATION$ To 7 -Equ WO_MAT_INV_ACTION$ To 8 -Equ WO_MAT_INV_DTM$ To 9 -Equ WO_MAT_INV_USER$ To 10 -Equ WO_MAT_SUB_SUPPL_BY$ To 11 -Equ WO_MAT_RDS_NO$ To 12 -Equ WO_MAT_SHIP_NO$ To 13 -Equ WO_MAT_SLOT_NO$ To 14 -Equ WO_MAT_SLOT_NCR$ To 15 -Equ WO_MAT_SLOT_MET_NO$ To 16 -Equ WO_MAT_SLOT_MOVED_TO$ To 17 -Equ WO_MAT_SLOT_REP_WAFER_ID$ To 18 -Equ WO_MAT_SLOT_RUN_ID$ To 19 -Equ WO_MAT_SLOT_REP_BY$ To 20 -Equ WO_MAT_SLOT_REP_WAFER_THICK$ To 21 -Equ WO_MAT_BOM_NO$ To 22 -Equ WO_MAT_PART_NO$ To 22 -Equ WO_MAT_PROD_VER_NO$ To 22 -Equ WO_MAT_MAKEUP_BOX$ To 23 -Equ WO_MAT_HOT_LOT$ To 24 -Equ WO_MAT_RX_DTM$ To 25 -Equ WO_MAT_RX_BY$ To 26 -Equ WO_MAT_REL_DTM$ To 27 -Equ WO_MAT_REL_BY$ To 28 -Equ WO_MAT_ORG_COMMIT_DT$ To 29 -Equ WO_MAT_NCR_KEYS$ To 30 -Equ WO_MAT_INV_TAG$ To 31 -Equ WO_MAT_WMI_KEY$ To 32 -Equ WO_MAT_WMO_KEY$ To 33 -Equ WO_MAT_HOLD$ To 34 -Equ WO_MAT_HOLD_START_DTM$ To 35 -Equ WO_MAT_HOLD_START_USER$ To 36 -Equ WO_MAT_HOLD_START_REASON$ To 37 -Equ WO_MAT_HOLD_STOP_DTM$ To 38 -Equ WO_MAT_HOLD_STOP_USER$ To 39 -Equ WO_MAT_HOLD_STOP_REASON$ To 40 -Equ WO_MAT_HOLD_ENTITY$ To 41 -Equ WO_MAT_HOLD_ENTITY_ID$ To 42 -Equ WO_MAT_CASS_FINAL_SIG$ To 43 -Equ WO_MAT_RDS_FINAL_SIG_ORG$ To 43 -Equ WO_MAT_CASS_FINAL_SIG_DTM$ To 44 -Equ WO_MAT_RDS_FINAL_SIG_DTM_ORG$ To 44 -Equ WO_MAT_NCR_FINAL_SIG$ To 45 -Equ WO_MAT_NCR_FINAL_SIG_DTM$ To 46 -Equ WO_MAT_MU_WAFER_FLAG$ To 47 -Equ WO_MAT_WMI_CURR_STATUS$ To 48 -Equ WO_MAT_WMO_CURR_STATUS$ To 49 -Equ WO_MAT_VOID$ To 50 -Equ WO_MAT_CANCELLED$ To 51 -Equ WO_MAT_EPO_MAKEUP_BOX$ To 52 -Equ WO_MAT_RET_REJECTS$ To 53 -Equ WO_MAT_SIG_PROFILE$ To 54 -Equ WO_MAT_SIGNATURE$ To 55 -Equ WO_MAT_SIG_DTM$ To 56 -Equ WO_MAT_REPROCESSED_MAT$ To 57 -Equ WO_MAT_CASS_SHIP_QTY$ To 58 -Equ WO_MAT_SHIP_SHORT$ To 59 -Equ WO_MAT_CLEAN_INSP_KEY$ To 60 -Equ WO_MAT_EPO_SLOT$ To 61 -Equ WO_MAT_EPOS_WFR_IN$ To 62 -Equ WO_MAT_EPOS_RUN_ID$ To 63 -Equ WO_MAT_EPOS_NCR$ To 64 -Equ WO_MAT_EPOS_MET_NO$ To 65 -Equ WO_MAT_EPOS_MOVED_TO$ To 66 -Equ WO_MAT_EPOS_REP_WAFER_ID$ To 67 -Equ WO_MAT_EPOS_CLEAN_INSP_KEY$ To 68 -Equ WO_MAT_EPI_PRO$ To 69 -Equ WO_MAT_EPI_CI_NO$ To 70 -Equ WO_MAT_EPO_CI_NO$ To 71 -Equ WO_MAT_EPO_SHIP_HOLD$ To 72 -Equ WO_MAT_EPOS_REP_BY$ To 73 -Equ WO_MAT_SHIP_HOLD$ To 80 -Equ WO_MAT_SHIP_HOLD_START_DTM$ To 81 -Equ WO_MAT_SHIP_HOLD_START_USER$ To 82 -Equ WO_MAT_SHIP_HOLD_START_REASON$ To 83 -Equ WO_MAT_SHIP_HOLD_STOP_DTM$ To 84 -Equ WO_MAT_SHIP_HOLD_STOP_USER$ To 85 -Equ WO_MAT_SHIP_HOLD_STOP_REASON$ To 86 -Equ WO_MAT_SAP_BATCH_NO$ To 87 -Equ WO_MAT_CUST_PART_REV_FUT$ To 88 -Equ WO_MAT_SUB_VEND_CD$ To 89 -Equ WO_MAT_SAP_TX_DTM$ To 90 -Equ WO_MAT_ORG_SAP_BATCH_NO$ To 91 -Equ WO_MAT_SLOT_WFR_ID$ To 92 -Equ WO_MAT_MET_PROFILE$ To 93 -Equ WO_MAT_MET_RUN_STEP$ To 94 -Equ WO_MAT_MET_MIN$ To 95 -Equ WO_MAT_MET_MAX$ To 96 -Equ WO_MAT_MET_RESULT$ To 97 -Equ WO_MAT_MET_SLOT$ To 98 -Equ WO_MAT_MET_SIG$ To 99 -Equ WO_MAT_MET_SIG_DTM$ To 100 -Equ WO_MAT_WMO_LOAD_DTM$ To 101 -Equ WO_MAT_MET_SLOT_TEST$ To 102 -Equ WO_MAT_INV_TOOL_ID$ To 103 -Equ WO_MAT_REC_VER$ To 104 -Equ WO_MAT_SIG_VER$ To 105 -Equ WO_MAT_WIP_START_DTM$ To 106 -Equ WO_MAT_WIP_STOP_DTM$ To 107 -Equ WO_MAT_MET_STD_MAX$ To 108 -Equ WO_MAT_MET_STD_RESULT$ To 109 -Equ WO_MAT_PRIORITY$ To 110 -Equ WO_MAT_SLOT_MOVED_FROM$ To 111 -Equ WO_MAT_HOLD_EXTENDED$ To 112 -Equ WO_MAT_SHIP_HOLD_EXTENDED$ To 113 -Equ WO_MAT_RESHIP_CUST_PO$ To 114 -Equ WO_MAT_RESHIP_DT$ To 115 -Equ WO_MAT_RESHIP_REASON$ To 116 -Equ WO_MAT_RESHIP_CUST_NO$ To 117 -Equ WO_MAT_RESHIP_CUST_PART_NO$ To 118 -Equ WO_MAT_RESHIP_CUST_EPI_PART_NO$ To 119 -Equ WO_MAT_MET_RECIPE$ To 120 -Equ WO_MAT_MET_RECIPE_PATTERN$ To 121 -Equ WO_MAT_MET_PROP$ To 122 -Equ WO_MAT_MET_TOOL_CLASS$ To 123 -Equ WO_MAT_MET_REACT_SCHED$ To 124 -Equ WO_MAT_MET_WFR_QTY$ To 125 -Equ WO_MAT_MET_WFR_TYPE$ To 126 -Equ WO_MAT_GAN_RUN_ID$ To 127 -Equ WO_MAT_WFR_SIG_PROFILE$ To 128 -Equ WO_MAT_WFR_SIG_TOOL_CLASS$ To 129 -Equ WO_MAT_WFR_SIG_INV_ACTION$ To 130 -Equ WO_MAT_TEST_SHIP_BIN_NO$ To 131 -Equ WO_MAT_MU_WAFER_THK_RESULT$ To 132 -Equ WO_MAT_MIN_CASS_SHIP_QTY$ To 133 -Equ WO_MAT_MU_WAFER_ADDED_DTM$ To 134 -Equ WO_MAT_MU_WAFER_REMOVED_DTM$ To 135 -Equ WO_MAT_LOC_DTM$ To 136 -Equ WO_MAT_LOC_BY$ To 137 -Equ WO_MAT_LOC_EVENT$ To 138 -Equ WO_MAT_INV_LOC$ To 139 -Equ WO_MAT_FQA_DT$ To 140 -Equ WO_MAT_FQA_DTM$ To 141 -Equ WO_MAT_INV_SCAN_ENTRY$ To 142 -Equ WO_MAT_CURR_STATUS_STATIC$ To 143 -Equ WO_MAT_FAILED_WAFERS$ To 144 -Equ WO_MAT_LOCKED_BY$ To 145 -Equ WO_MAT_CONVERTED_MATERIAL$ To 146 +Equ WO_MAT_CASS_NO$ To 0 +Equ WO_MAT_WO_NO$ To 0 +Equ WO_MAT_LOT_NO$ To 1 +Equ WO_MAT_WAFER_QTY$ To 2 +Equ WO_MAT_CUST_PART_NO$ To 3 +Equ WO_MAT_SUB_PART_NO$ To 4 +Equ WO_MAT_ORDER_ITEM$ To 5 +Equ WO_MAT_INV_WH$ To 6 +Equ WO_MAT_INV_LOCATION$ To 7 +Equ WO_MAT_INV_ACTION$ To 8 +Equ WO_MAT_INV_DTM$ To 9 +Equ WO_MAT_INV_USER$ To 10 +Equ WO_MAT_SUB_SUPPL_BY$ To 11 +Equ WO_MAT_RDS_NO$ To 12 +Equ WO_MAT_SHIP_NO$ To 13 +Equ WO_MAT_SLOT_NO$ To 14 +Equ WO_MAT_SLOT_NCR$ To 15 +Equ WO_MAT_SLOT_MET_NO$ To 16 +Equ WO_MAT_SLOT_MOVED_TO$ To 17 +Equ WO_MAT_SLOT_REP_WAFER_ID$ To 18 +Equ WO_MAT_SLOT_RUN_ID$ To 19 +Equ WO_MAT_SLOT_REP_BY$ To 20 +Equ WO_MAT_SLOT_REP_WAFER_THICK$ To 21 +Equ WO_MAT_BOM_NO$ To 22 +Equ WO_MAT_PART_NO$ To 22 +Equ WO_MAT_PROD_VER_NO$ To 22 +Equ WO_MAT_MAKEUP_BOX$ To 23 +Equ WO_MAT_HOT_LOT$ To 24 +Equ WO_MAT_RX_DTM$ To 25 +Equ WO_MAT_RX_BY$ To 26 +Equ WO_MAT_REL_DTM$ To 27 +Equ WO_MAT_REL_BY$ To 28 +Equ WO_MAT_ORG_COMMIT_DT$ To 29 +Equ WO_MAT_NCR_KEYS$ To 30 +Equ WO_MAT_INV_TAG$ To 31 +Equ WO_MAT_WMI_KEY$ To 32 +Equ WO_MAT_WMO_KEY$ To 33 +Equ WO_MAT_HOLD$ To 34 +Equ WO_MAT_HOLD_START_DTM$ To 35 +Equ WO_MAT_HOLD_START_USER$ To 36 +Equ WO_MAT_HOLD_START_REASON$ To 37 +Equ WO_MAT_HOLD_STOP_DTM$ To 38 +Equ WO_MAT_HOLD_STOP_USER$ To 39 +Equ WO_MAT_HOLD_STOP_REASON$ To 40 +Equ WO_MAT_HOLD_ENTITY$ To 41 +Equ WO_MAT_HOLD_ENTITY_ID$ To 42 +Equ WO_MAT_CASS_FINAL_SIG$ To 43 +Equ WO_MAT_RDS_FINAL_SIG_ORG$ To 43 +Equ WO_MAT_CASS_FINAL_SIG_DTM$ To 44 +Equ WO_MAT_RDS_FINAL_SIG_DTM_ORG$ To 44 +Equ WO_MAT_NCR_FINAL_SIG$ To 45 +Equ WO_MAT_NCR_FINAL_SIG_DTM$ To 46 +Equ WO_MAT_MU_WAFER_FLAG$ To 47 +Equ WO_MAT_WMI_CURR_STATUS$ To 48 +Equ WO_MAT_WMO_CURR_STATUS$ To 49 +Equ WO_MAT_VOID$ To 50 +Equ WO_MAT_CANCELLED$ To 51 +Equ WO_MAT_EPO_MAKEUP_BOX$ To 52 +Equ WO_MAT_RET_REJECTS$ To 53 +Equ WO_MAT_SIG_PROFILE$ To 54 +Equ WO_MAT_SIGNATURE$ To 55 +Equ WO_MAT_SIG_DTM$ To 56 +Equ WO_MAT_REPROCESSED_MAT$ To 57 +Equ WO_MAT_CASS_SHIP_QTY$ To 58 +Equ WO_MAT_SHIP_SHORT$ To 59 +Equ WO_MAT_CLEAN_INSP_KEY$ To 60 +Equ WO_MAT_EPO_SLOT$ To 61 +Equ WO_MAT_EPOS_WFR_IN$ To 62 +Equ WO_MAT_EPOS_RUN_ID$ To 63 +Equ WO_MAT_EPOS_NCR$ To 64 +Equ WO_MAT_EPOS_MET_NO$ To 65 +Equ WO_MAT_EPOS_MOVED_TO$ To 66 +Equ WO_MAT_EPOS_REP_WAFER_ID$ To 67 +Equ WO_MAT_EPOS_CLEAN_INSP_KEY$ To 68 +Equ WO_MAT_EPI_PRO$ To 69 +Equ WO_MAT_EPI_CI_NO$ To 70 +Equ WO_MAT_EPO_CI_NO$ To 71 +Equ WO_MAT_EPO_SHIP_HOLD$ To 72 +Equ WO_MAT_EPOS_REP_BY$ To 73 +Equ WO_MAT_SHIP_HOLD$ To 80 +Equ WO_MAT_SHIP_HOLD_START_DTM$ To 81 +Equ WO_MAT_SHIP_HOLD_START_USER$ To 82 +Equ WO_MAT_SHIP_HOLD_START_REASON$ To 83 +Equ WO_MAT_SHIP_HOLD_STOP_DTM$ To 84 +Equ WO_MAT_SHIP_HOLD_STOP_USER$ To 85 +Equ WO_MAT_SHIP_HOLD_STOP_REASON$ To 86 +Equ WO_MAT_SAP_BATCH_NO$ To 87 +Equ WO_MAT_CUST_PART_REV_FUT$ To 88 +Equ WO_MAT_SUB_VEND_CD$ To 89 +Equ WO_MAT_SAP_TX_DTM$ To 90 +Equ WO_MAT_ORG_SAP_BATCH_NO$ To 91 +Equ WO_MAT_SLOT_WFR_ID$ To 92 +Equ WO_MAT_MET_PROFILE$ To 93 +Equ WO_MAT_MET_RUN_STEP$ To 94 +Equ WO_MAT_MET_MIN$ To 95 +Equ WO_MAT_MET_MAX$ To 96 +Equ WO_MAT_MET_RESULT$ To 97 +Equ WO_MAT_MET_SLOT$ To 98 +Equ WO_MAT_MET_SIG$ To 99 +Equ WO_MAT_MET_SIG_DTM$ To 100 +Equ WO_MAT_WMO_LOAD_DTM$ To 101 +Equ WO_MAT_MET_SLOT_TEST$ To 102 +Equ WO_MAT_INV_TOOL_ID$ To 103 +Equ WO_MAT_REC_VER$ To 104 +Equ WO_MAT_SIG_VER$ To 105 +Equ WO_MAT_WIP_START_DTM$ To 106 +Equ WO_MAT_WIP_STOP_DTM$ To 107 +Equ WO_MAT_MET_STD_MAX$ To 108 +Equ WO_MAT_MET_STD_RESULT$ To 109 +Equ WO_MAT_PRIORITY$ To 110 +Equ WO_MAT_SLOT_MOVED_FROM$ To 111 +Equ WO_MAT_HOLD_EXTENDED$ To 112 +Equ WO_MAT_SHIP_HOLD_EXTENDED$ To 113 +Equ WO_MAT_RESHIP_CUST_PO$ To 114 +Equ WO_MAT_RESHIP_DT$ To 115 +Equ WO_MAT_RESHIP_REASON$ To 116 +Equ WO_MAT_RESHIP_CUST_NO$ To 117 +Equ WO_MAT_RESHIP_CUST_PART_NO$ To 118 +Equ WO_MAT_RESHIP_CUST_EPI_PART_NO$ To 119 +Equ WO_MAT_MET_RECIPE$ To 120 +Equ WO_MAT_MET_RECIPE_PATTERN$ To 121 +Equ WO_MAT_MET_PROP$ To 122 +Equ WO_MAT_MET_TOOL_CLASS$ To 123 +Equ WO_MAT_MET_REACT_SCHED$ To 124 +Equ WO_MAT_MET_WFR_QTY$ To 125 +Equ WO_MAT_MET_WFR_TYPE$ To 126 +Equ WO_MAT_GAN_RUN_ID$ To 127 +Equ WO_MAT_WFR_SIG_PROFILE$ To 128 +Equ WO_MAT_WFR_SIG_TOOL_CLASS$ To 129 +Equ WO_MAT_WFR_SIG_INV_ACTION$ To 130 +Equ WO_MAT_TEST_SHIP_BIN_NO$ To 131 +Equ WO_MAT_MU_WAFER_THK_RESULT$ To 132 +Equ WO_MAT_MIN_CASS_SHIP_QTY$ To 133 +Equ WO_MAT_MU_WAFER_ADDED_DTM$ To 134 +Equ WO_MAT_MU_WAFER_REMOVED_DTM$ To 135 +Equ WO_MAT_LOC_DTM$ To 136 +Equ WO_MAT_LOC_BY$ To 137 +Equ WO_MAT_LOC_EVENT$ To 138 +Equ WO_MAT_INV_LOC$ To 139 +Equ WO_MAT_FQA_DT$ To 140 +Equ WO_MAT_FQA_DTM$ To 141 +Equ WO_MAT_INV_SCAN_ENTRY$ To 142 +Equ WO_MAT_CURR_STATUS_STATIC$ To 143 +Equ WO_MAT_FAILED_WAFERS$ To 144 +Equ WO_MAT_LOCKED_BY$ To 145 +Equ WO_MAT_CONVERTED_MATERIAL$ To 146 Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACK_REQ$ To 147 -Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$ To 148 -Equ WO_MAT_HOLD_STAGE$ To 149 -Equ WO_MAT_HOLD_INTERRUPTED$ To 150 -Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$ To 151 +Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_ACKED$ To 148 +Equ WO_MAT_HOLD_STAGE$ To 149 +Equ WO_MAT_HOLD_INTERRUPTED$ To 150 +Equ WO_MAT_LAST_CASSETTE_TEST_WAFER_RAN$ To 151