COMPILE SUBROUTINE PRINT_WM_IN_LABELS(WO_No , MultiStep ) ***** This appears to be dead JCH $INSERT LOGICAL $INSERT MSG_EQUATES $INSERT OIPRINT_EQUATES $INSERT PROD_SPEC_EQUATES $INSERT QUOTE_SPEC_EQU $INSERT WO_LOG_EQU $INSERT ORDER_DET_EQU $INSERT WM_IN_EQUATES DECLARE FUNCTION Msg, Get_Printer, Set_Printer, Utility, obj_Install, Printer_Select, FieldCount Declare function Direct_Print, Environment_Services DECLARE SUBROUTINE Btree.Extract, ErrMsg * 5/18/2006 - Cloned from Print_Cass_Labels EQU PI$LEFT TO 1 EQU PI$TOP TO 2 EQU PI$RIGHT TO 3 EQU PI$BOTTOM TO 4 EQU PI$WIDTH TO 5 EQU PI$HEIGHT TO 6 EQU PI$SIZE TO 7 IF NOT(ASSIGNED(WONo)) THEN WONo = '' ;* 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 IF WONo = '' THEN RETURN ;* 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 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 = '\\FMSA001\PMSAZ_BR3' ;* Print Server change PrinterID = '\\mesirwfp001\MESZBRPRT002' ;* This is the Zebra 105sl with the test labels loaded 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 OPEN 'DICT.WM_IN' TO DictVar ELSE ErrMsg('Unable to open DICT.WM_IN in PRINT_WM_IN_LABELS for Btree.Extract.') RETURN END SearchString = 'WO_NO':@VM:WONo:@FM Btree.Extract(SearchString,'WM_IN',DictVar,WMInKeys,'',Flag) IF Get_Status(errCode) THEN ErrMsg(errCode) RETURN END IF WMInKeys = '' THEN RETURN debug return Void = utility( 'CURSOR', 'H' ) IdCnt = COUNT( RdsIds, @FM ) + (RdsIds NE '') IF IdCnt > 1 THEN * RdsIds = key_sort( RdsIds, 'RDS', 'WO':@FM:'RUN_ORDER_NUM', 1, '', '' ) END RETURN GOSUB PrintCleanRoomLabels UniqueWOs = '' 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 LOCATE ThisWO IN UniqueWOs USING @VM SETTING FPos ELSE UniqueWOs<1,-1> = ThisWO END NEXT I END ELSE AllWOs = XLATE( 'RDS', RdsIds, rds_wo$, 'X' ) FOR I = 1 TO IdCnt ThisWO = AllWOs LOCATE ThisWO IN UniqueWOs USING @VM SETTING Fpos ELSE UniqueWOs<1,-1> = ThisWO END NEXT I END GOSUB PrintWOLabels * Check to see if they get the monitor wafers based on the psn using the first of RdsIDs IF XLATE( 'PROD_SPEC', XLATE( 'RDS', RdsIds<1>, rds_prod_spec_id$, 'X' ), prod_spec_monitor_wafer_label$, 'X' ) THEN GOSUB PrintMonitorLabels END * Check to see if they get a surfscan label CustNo = XLATE('RDS',RdsIds<1>,rds_cust_no$,'X') IF (CustNo = '6874') OR (CustNo = '6593') ELSE IF ( PreSurfscan ) or ( FirstSurfscan ) or ( PostCleanSurfscan ) THEN GOSUB PrintSurfscanLabels END END Void = UTILITY( 'CURSOR', 'A' ) * * * * * * OIPrint_Error: * * * * * * If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then stat = Set_Printer("TERM") end else stat = Direct_Print('STOP') end RETURN * * * * * * * * * * * *` L o c a l S u b r o u t i n e s * * * * * * * * * * * * * * * * * * * PrintCleanRoomLabels: * * * * * * * CustName = XLATE( 'RDS', RdsIds, 'ABBREV_OR_CO_NAME', 'X' ) WO = XLATE( 'RDS', RdsIds, rds_wo$, 'X' ) ShipBagReq = XLATE( 'RDS', RdsIds, 'SHIP_BAG_REQ', 'X' ) ReqShipDate = OCONV( XLATE( 'WO_LOG', WO, WO_LOG_PROMISE_SHIP_DT$, 'X' ), 'D2/' ) PO = XLATE( 'RDS', RdsIds, rds_po$, 'X' ) PartNum = XLATE( 'RDS', RdsIds, rds_part_num$, 'X' ) ThickTarget = OCONV( XLATE( 'RDS', RdsIds, 'THICK_TARGET_ALL', 'X' ), 'MD2' ) ThickUnit = XLATE( 'RDS', RdsIds, 'THICK_UNITS_ALL', 'X' ) Dopant = XLATE( 'RDS', RdsIds, 'DOPANT_L1', 'X' ) ResTarget = OCONV( XLATE( 'RDS', RdsIds, 'RES_TARGET_ALL', 'X' ), 'MD3' ) ResUnit = XLATE( 'RDS', RdsIds, 'RES_UNITS_ALL', 'X' ) RecipeIDS = XLATE( 'RDS', RdsIds, 'RECIPE_NO', 'X' ) ;* Changed to calculated field 4/14/2006 JCH LotNum = XLATE( 'RDS', RdsIds, rds_lot_num$, 'X' ) RecipeInfo = XLATE( 'RECIPE', RecipeIDS, 'RECIPE_NAME_NO', 'X' ) RONum = XLATE( 'RDS', RdsIds, 'RUN_ORDER_NUM', 'X' ) PSNIds = XLATE( 'RDS', RdsIds, rds_prod_spec_id$, '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' ) StressVar = XLATE( 'PROD_SPEC', PSNIds, 'STRESS_MEASURE', 'X' ) TransVar = XLATE( 'PROD_SPEC', PSNIds, 'TRANS_MEASURE', 'X' ) SpecType = OCONV( XLATE( 'RDS', RdsIds, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' ) SubOxide = OCONV( XLATE( 'PROD_SPEC', PSNIds, 'SUB_OXIDE_STRIP', 'X' ), 'B' ) SubPreClean = XLATE( 'PROD_SPEC', PSNIds, 'SUB_PRE_CLEAN', 'X' ) SubPostClean = XLATE( 'PROD_SPEC', PSNIds, 'SUB_POST_CLEAN', 'X' ) PreAkrionRecipe = XLATE( 'PROD_SPEC', PSNIds, 'PRE_AKRION_RECIPE', 'X' ) PostAkrionRecipe = XLATE( 'PROD_SPEC', PSNIds, 'POST_AKRION_RECIPE', 'X' ) SubPartNum = XLATE( 'RDS', RdsIds, 'SUB_PART_NUM', 'X' ) WOStepKeys = XLATE( 'RDS',RdsIds,RDS_WO_STEP_KEY$,'X' ) ;* 05/21/2005 - JCH - Added for Order Entry/Vision upgrade OrderNos = XLATE( 'RDS',RdsIds,RDS_ORDER_NO$,'X' ) ;* 10/04/2005 - JCH - Added for Order Entry/Vision upgrade OrderItems = XLATE( 'RDS',RdsIds,RDS_ORDER_ITEM$,'X' ) ;* 10/04/2005 - JCH - Added for Order Entry/Vision upgrade OrderDetKeys = '' FOR I = 1 TO COUNT(OrderNos,@FM) + (OrderNos NE '') OrderDetKeys = OrderNos:'*':OrderItems NEXT I CustPNDescs = XLATE( 'ORDER_DET',OrderDetKeys,ORDER_DET_CUST_PN_DESC$,'X') ;* 10/04/2005 - JCH - Added for Order Entry/Vision upgrade PreSurfscan = XLATE( 'PROD_SPEC', PSNIds<1>, prod_spec_pre_surfscan$, 'X' ) FirstSurfscan = XLATE( 'PROD_SPEC', PSNIds<1>, prod_spec_first_surfscan$, 'X' ) PostCleanSurfscan = XLATE( 'PROD_SPEC', PSNIds<1>, prod_spec_post_clean_surfscan$, 'X' ) CleaningReqs = '' SRPFlag = XLATE( 'PROD_SPEC', PSNIds, 'SRP_REQ', 'X' ) Qtys = XLATE( 'RDS', RdsIds, 'WAFERS_SCHEDULED', 'X' ) MultilayVar = XLATE( 'RDS', RdsIds, 'MULTI_LAYER', 'X' ) * Lets break out thick and res and see if it gets measured based on frequency * Thickness ThickPrintVar = '' ResPrintVar = '' SRPPrintVar = '' SRPTypePrintVar = '' FOR I = 1 TO IdCnt ThisThickVar = ThickVar ThisResVar = ResVar ThisConVar = ConVar ThisStressVar = StressVar ThisTransVar = TransVar ThisRunOrdNum = RONum ThisWO = WO ThisWOStepKey = WOStepKeys ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade IF MultiStep > 0 THEN ThisWO = ThisWOStepKey[1,'*'] ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade * ThickTool = field( ThisThickVar, '~', 1 ) ThickType = field( ThisThickVar, '~', 2 ) ThickRecipe = field( ThisThickVar, '~', 3 ) ThickFreq = field( ThisThickVar, '~', 4 ) ThickFirst = field( ThisThickVar, '~', 6 ) ThickLast = field( ThisThickVar, '~', 7 ) * ResTool = field( ThisResVar, '~', 1 ) ResType = field( ThisResVar, '~', 2 ) ResRecipe = field( ThisResVar, '~', 3 ) ResFreq = field( ThisResVar, '~', 4 ) ResFirst = field( ThisResVar, '~', 6 ) ResLast = field( ThisResVar, '~', 7 ) * ConTool = field( ThisConVar, '~', 1 ) ConType = field( ThisConVar, '~', 2 ) ConRecipe = field( ThisConVar, '~', 3 ) ConFreq = field( ThisConVar, '~', 4 ) ConFirst = field( ThisConVar, '~', 6 ) ConLast = field( ThisConVar, '~', 7 ) * StressTool = field( ThisStressVar, '~', 1 ) StressType = field( ThisStressVar, '~', 2 ) StressRecipe = field( ThisStressVar, '~', 3 ) StressFreq = field( ThisStressVar, '~', 4 ) StressFirst = field( ThisStressVar, '~', 6 ) StressLast = field( ThisStressVar, '~', 7 ) * TransTool = field( ThisTransVar, '~', 1 ) TransType = field( ThisTransVar, '~', 2 ) TransRecipe = field( ThisTransVar, '~', 3 ) TransFreq = field( ThisTransVar, '~', 4 ) TransFirst = field( ThisTransVar, '~', 6 ) TransLast = field( ThisTransVar, '~', 7 ) * IF MultiStep > 0 THEN WOBoxCnt = COUNT(XLATE('WO_STEP',ThisWOStepKey,6,'X'),@VM) ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade END ELSE *EXTRACT_SI_KEYS( 'RDS', 'WO', ThisWO, RDSsInWO ) ;* Original Code WOBoxCnt = FIELDCOUNT( RDSsInWO, @VM ) ;* Original Code END * First check thickness PrintThickness = false$ IF ( ThisRunOrdNum = 1 ) AND ( ThickFirst ) THEN PrintThickness = true$ IF ( ThisRunOrdNum = WOBoxCnt ) AND ( ThickLast ) THEN PrintThickness = true$ IF ThickFreq THEN * Need to check run order and see if it needs to be printed IF ThickFreq = 1 THEN PrintThickness = true$ END ELSE * Generate @FM delim of runs that should print RoPrintFlag = str( @FM, WOBoxCnt-1 ) FOR J = 1 TO WOBoxCnt step ThickFreq RoPrintFlag = 1 NEXT J IF ( RoPrintFlag = 1 ) THEN PrintThickness = true$ END END IF PrintThickness THEN PSNRec = XLATE( 'PROD_SPEC', PSNIds, '', 'X' ) SpecSub = PSNRec TOrient = SpecSub<1,QSSubOrientation$> convert '<' TO '' in TOrient convert '>' TO '' in TOrient Orient = TOrient ThickPrintVar = ThickTool:'~':ThickType:'~':Orient:'~':ThickRecipe END ELSE ThickPrintVar = '' END * Now check resistivity PrintResistivity = false$ IF ( ThisRunOrdNum = 1 ) and ( ResFirst ) THEN PrintResistivity = true$ IF ( ThisRunOrdNum = WOBoxCnt ) and ( ResLast ) THEN PrintResistivity = true$ IF ResFreq THEN * NEED TO CHECK RUN ORDER AND SEE IF IT NEEDS TO BE PRINTED IF ResFreq = 1 THEN PrintResistivity = true$ END ELSE * Generate @FM delim of runs that should print RoPrintFlag = str( @FM, WOBoxCnt-1 ) FOR J = 1 TO WOBoxCnt step ResFreq RoPrintFlag = 1 NEXT J IF ( RoPrintFlag = 1 ) THEN PrintResistivity = true$ END END IF PrintResistivity THEN PSNRec = XLATE( 'PROD_SPEC', PSNIds, '', 'X' ) SpecSub = PSNRec TOrient = SpecSub<1,QSSubOrientation$> convert '<' TO '' in TOrient convert '>' TO '' in TOrient Orient = TOrient ResPrintVar = ResTool:'~':ResType:'~':Orient:'~':ResRecipe END ELSE ResPrintVar = '' END PrintSRP = false$ SRPType = '' IF SRPFlag THEN * We know that SRP is one of the tools IF PrintThickness THEN IF ThickTool = 'SRP' THEN PrintSRP = true$ SRPType = ThickType END END IF PrintResistivity THEN IF ResTool = 'SRP' THEN PrintSRP = true$ SRPType = ResType END END IF NOT(PrintSRP) THEN * Now need to check concentration IF ConTool = 'SRP' THEN IF ( ThisRunOrdNum = 1 ) and ( ConFirst ) THEN PrintSRP = true$ IF ( ThisRunOrdNum = WOBoxCnt ) and ( ConLast ) THEN PrintSRP = true$ IF ConFreq THEN * Need to check run order and see if it needs to be printed IF ConFreq = 1 THEN PrintSRP = true$ END ELSE * Generate fm delim of runs that should print RoPrintFlag = str( @FM, WOBoxCnt-1 ) FOR J = 1 TO WOBoxCnt step ConFreq RoPrintFlag = 1 NEXT J IF ( RoPrintFlag = 1 ) THEN PrintSRP = true$ END END END IF PrintSRP THEN SRPType = ConType END IF NOT(PrintSRP) THEN * Now need to check stress IF StressTool = 'SRP' THEN IF ( ThisRunOrdNum = 1 ) AND ( StressFirst ) THEN PrintSRP = true$ IF ( ThisRunOrdNum = WOBoxCnt ) AND ( StressLast ) THEN PrintSRP = true$ IF StressFreq THEN * Need to check run order and see if it needs to be printed IF StressFreq = 1 THEN PrintSRP = true$ END ELSE * Generate @FM delim of runs that should print RoPrintFlag = str( @FM, WOBoxCnt-1 ) FOR J = 1 TO WOBoxCnt step StressFreq RoPrintFlag = 1 NEXT J IF ( RoPrintFlag = 1 ) THEN PrintSRP = true$ END END END IF PrintSRP THEN SRPType = StressType END IF NOT(PrintSRP) THEN * Now need to check transition IF TransTool = 'SRP' THEN IF ( ThisRunOrdNum = 1 ) AND ( TransFirst ) THEN PrintSRP = true$ IF ( ThisRunOrdNum = WOBoxCnt ) AND ( TransLast ) THEN PrintSRP = true$ IF TransFreq THEN * Need to check run order and see if it needs to be printed IF TransFreq = 1 THEN PrintSRP = true$ END ELSE * Generate fm delim of runs that should print RoPrintFlag = str( @FM, WOBoxCnt-1 ) FOR J = 1 TO WOBoxCnt step TransFreq RoPrintFlag = 1 NEXT J IF ( ROPrintFlag = 1 ) THEN PrintSRP = true$ END IF PrintSRP THEN SRPType = TransType END END END IF PrintSRP THEN SRPPrintVar = true$ SRPTypePrintVar = SRPType END ELSE SRPPrintVar = false$ SRPTypePrintVar = '' END END ELSE SRPPrintVar = false$ SRPTypePrintVar = '' END NEXT I * Got all data now we can print FOR I = 1 TO IdCnt PrintCustName = CustName IF MultiStep > 0 THEN WONo = WO:'.':MultiStep ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade WONo = WOStepKeys CONVERT '*' TO '.' IN WONo END ELSE WoNo = WO END PrintWO = WoNo ;* 5/21/2005 - JCH - Changed for Order Entry/Vision upgrade PrintPSNNo = PSNIds ;* 6/10/2005 - JCH - Added per manufacturing manager request PrintLotNum = LotNum PrintRecipeInfo = RecipeInfo PrintSpecType = SpecType PrintRONum = RONum PrintRdsId = RdsIds PrintThickPrintVar = ThickPrintVar PrintResPrintVar = ResPrintVar PrintMultiLayVar = MultiLayVar PrintSRPPrintVar = SRPPrintVar PrintSRPTypePrintVar = SRPTypePrintVar PrintQty = Qtys ThickCnt = FIELDCOUNT( ThickTarget, @VM ) PrintThickTargets = '' FOR J = 1 TO ThickCnt PrintThickTargets<1,J> = ThickTarget:ThickUnit NEXT J ResCnt = FIELDCOUNT( ResTarget, @VM ) PrintResTargets = '' FOR J = 1 TO ResCnt IF ResTarget[1,1] = '.' THEN TargetVal = '0':ResTarget END ELSE TargetVal = ResTarget END PrintResTargets<1,J> = TargetVal:ResUnit NEXT J PrintPO = PO PrintPartNum = PartNum:' ':CustPNDescs PrintSubPartNum = SubPartNum SuppCd = SubPartNum[-1,'B-'] IF LEN(SuppCd) NE '2' THEN SuppCd ='' PrintSuppCd = SuppCd PrintDopant = Dopant PrintShipBagReq = ShipBagReq PrintReqShipDate = ReqShipDate PrintSubOxide = SubOxide PrintSubPreClean = SubPreClean PrintSubPostClean = SubPostClean PrintPreAkrionRecipe = PreAkrionRecipe PrintPostAkrionRecipe = PostAkrionRecipe APreRec = '' APostRec = '' IF ( PreAkrionRecipe <> '' ) THEN APreRec = ' ':PreAkrionRecipe:' ' SubOxide = 'No' ;* IF AKRION THEN NO OXIDE STRIP END IF ( PostAkrionRecipe <> '' ) THEN APostRec = ' ':PostAkrionRecipe END *PrintCleaningReqs = TRIM( 'Strip:':SubOxide:' Pre:':SubPreClean:APreRec:' Post:':SubPostClean:APostRec ) PrintCleaningReqs = TRIM( 'Strip:':SubOxide:' Pre:':SubPreClean:APreRec:' Post:':SubPostClean:APostRec ) 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 '~' 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 GOSUB PrintLabel NEXT I RETURN * * * * * * * PrintLabel: * * * * * * * MakeupBox = XLATE('RDS',PrintRdsId,RDS_MAKEUP_BOX$,'X') 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' * SRP Box and info in Upper Right Corner of label IF PrintSRPPrintVar THEN Str:= '^FO738,15^GB72,60,3,B^FS' Str:= '^FO755,25^A0,25^FDSRP^FS' IF LEN( PrintSRPTypePrintVar ) > 2 THEN Str:= '^FO750,50^A0,,25^FD':PrintSRPTypePrintVar:'^FS':CRLF$ END ELSE Str:= '^FO740,50^A0,,25^FD':PrintSRPTypePrintVar:'^FS':CRLF$ END END ****** First Line Company = 'IFX Epi Services' Str := '^FO30,25^A0,,36^FD':Company:'^FS' Str := '^FO310,25^AC,18^FDWO No:^FS':CRLF$ ;* Label Str := '^FO390,25^A045,36^FD':PrintWO:'^FS':CRLF$ ;* Data IF PrintRONum = 1 THEN Str := '^FO550,20^GB90,40,40,,3^FS':CRLF$ Str := '^FO560,25^AC,18^FR^FDRun:^FS':CRLF$ ;* Label Str := '^FO615,25^A045,36^FR^FD':PrintRONum:'^FS':CRLF$ ;* Data END ELSE Str := '^FO560,25^AC,18^FDRun:^FS':CRLF$ ;* Label Str := '^FO615,25^A045,36^FD':PrintRONum:'^FS':CRLF$ ;* Data END ****** Second Line Str:= '^FO30,70^AC,18^FDRDS:^FS':CRLF$ Str:= '^FO90,70^A050,30^FD':PrintRDSId:'^FS':CRLF$ Str := '^BY2,2.0':CRLF$ Str := '^FO200,70^B3,,23,N^FD':PrintRDSId:'^FS':CRLF$ Str := '^BY2,3.0':CRLF$ Str:= '^FO450,70^AC,18^FDQty:^FS':CRLF$ ;* Label Str:= '^FO510,70^A045,25^FD':PrintQty:'^FS':CRLF$ ;* Data IF MakeupBox THEN Str := '^FO575,65^GB140,35,35,,3^FS':CRLF$ Str := '^FO585,70^A0,,35^FR^FDM/U Box^FS' END ****** Third Line Str:= '^FO30,105^AC,18^FDShip Dt:^FS' ;* Label Str:= '^FO140,105^A0,,25^FD':PrintReqShipDate:'^FS':CRLF$ ;* Data Str:= '^FO250,105^AC,18^FDCust:^FS':CRLF$ ;* Label Str:= '^FO320,105^A045,25^FD':PrintCustName:'^FS':CRLF$ ;* Data Str:= '^FO560,105^AC,18^FDPO:^FS':CRLF$ Str:= '^FO600,105^A045,25^FD':PrintPO:'^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':PrintLotNum:'^FS':CRLF$ Str := '^FO410,135^AC,18^FDPart No:^FS':CRLF$ Str := '^FO510,135^A0,20^FD':PrintPartNum:'^FS':CRLF$ ****** Fifth Line Str := '^FO30,160^AC,18^FDSub PN:^FS':CRLF$ Str := '^FO120,160^A0,20^FD':PrintSubPartNum:'^FS':CRLF$ IF PrintSuppCd NE '' THEN Str := '^FO410,160^AC,18^FDSupp Cd:^FS':CRLF$ ;* Label ;* Added 8/17/2005 JCH - J.C.Henry & Co. Str := '^FO510,160^A0,20^FD':PrintSuppCd:'^FS':CRLF$ ;* Data Str := '^BY2,2.0':CRLF$ Str := '^FO610,160^A040,20^B3,,23,N^FD':PrintSuppCd:'^FS':CRLF$ Str := '^BY2,3.0':CRLF$ END ****** Separator bar Str := '^FO15,183^GB795,1^FS' ****** Sixth Line Str := '^FO30,190^AC,18^FDStrip Oxide:^FS':CRLF$ Str := '^FO180,190^A0,20^FD':PrintSubOxide:'^FS':CRLF$ ****** Seventh Line Str := '^FO30,210^AC,18^FDPre:^FS':CRLF$ Str := '^FO90,210^A0,20^FD':PrintSubPreClean:'^FS':CRLF$ IF PrintPreAkrionRecipe NE '' THEN Str := '^FO210,210^AC,18^FDAkrion:^FS':CRLF$ Str := '^FO300,210^A0,20^FD':PrintPreAkrionRecipe:'^FS':CRLF$ Str := '^BY2,2.0':CRLF$ Str := '^FO450,210^A040,20^B3,,23,N^FD':PrintPreAkrionRecipe:'^FS':CRLF$ Str := '^BY2,3.0':CRLF$ END ****** Eighth Line Str := '^FO30,235^AC,18^FDRecipe:^FS':CRLF$ Str := '^FO120,235^A0,20^FD':PrintRecipeInfo:'^FS':CRLF$ Str := '^FO410,235^AC,18^FDEpi Dopant:^FS':CRLF$ Str := '^FO560,235^A040,20^FD':PrintDopant:'^FS':CRLF$ ****** Ninth Line Str := '^FO30,260^A040,20^FD':PrintThickPrintVar:'^FS':CRLF$ Str := '^FO410,260^A040,20^FD':PrintResPrintVar:'^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 ****** The Line with No Name IF PrintPostAkrionRecipe NE '' THEN Str := '^FO30,350^AC,18^FDPost:^FS':CRLF$ Str := '^FO90,350^A0,20^FD':PrintSubPostClean:'^FS':CRLF$ Str := '^FO210,350^AC,18^FDAkrion:^FS':CRLF$ Str := '^FO300,350^A0,20^FD':PrintPostAkrionRecipe:'^FS':CRLF$ Str := '^BY2,2.0':CRLF$ Str := '^FO450,350^A040,20^B3,,23,N^FD':PrintPostAkrionRecipe:'^FS':CRLF$ Str := '^BY2,3.0':CRLF$ END ELSE Str := '^FO30,350^AC,18^FDPost:^FS':CRLF$ Str := '^FO120,350^A0,20^FD':PrintSubPostClean:'^FS':CRLF$ END ****** Separator bar Str := '^FO15,373^GB795,1^FS' ****** Fourteenth Line Str := '^FO30,385^AC,18^FDProd Spec No:^FS':CRLF$ ;* Label Str := '^FO190,385^A0,25^FD':PrintPSNNo:'^FS':CRLF$ ;* Data IF PrintSpecType = 'Production' THEN PrintSpecType = 'Prod' IF PrintSpecType = 'Pre-Production' THEN PrintSpecType = 'Pre' Str := '^FO275,385^AC,18^FDSpec Type:^FS':CRLF$ ;* Label Str := '^FO400,385^A0,25^FD':PrintSpecType:'^FS':CRLF$ ;* Data Str:= '^FO480,385^AC,18^FDBag:^FS':CRLF$ Str:= '^FO530,385^A0,20^FD':PrintShipBagReq:'^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 * * * * * * * PrintWOLabels: * * * * * * * * Got all data now we can print RDSCnt = COUNT(RdsIds,@VM) + (RdsIds NE '') ShelfCnt = INT(RDSCnt/28) + (MOD(RDSCnt,28) NE 0) ;* Come back TO this later JCH 7/27/2005 NewUniqueWOs = '' UWOCnt = fieldcount( UniqueWOs, @VM ) FOR I = 1 TO UWOCnt NewUniqueWOs<1,-1> = UniqueWOs<1,I>:@VM:UniqueWOs<1,I> NEXT I TRANSFER NewUniqueWOs TO UniqueWOs UWOCnt += UWOCnt * So we print two sets of labels FOR I = 1 TO UWOCnt step 2 PrintUniqueWO = UniqueWOs<1,i> GOSUB PrintWO PrintUniqueWO = UniqueWOs<1,i+1> GOSUB PrintWO NEXT I RETURN * * * * * * * 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:= '^MMT':CRLF$ ;* MEDIA MODE T=TEAR OFF MODE IF MultiStep > 0 THEN Str:= '^FO10,05^A0220,210^FD':PrintUniqueWO:'^FS':CRLF$ ;* 5/21/2005 - JCH - Changed for Order Entry/Vision upgrade END ELSE Str:= '^FO70,05^A0220,210^FD':PrintUniqueWO:'^FS':CRLF$ END * GET CUST ABBREV CustNo = XLATE( 'WO_LOG', PrintUniqueWO[1,'.'], wo_log_cust_no$, 'X' ) CustAbbrevOrName = XLATE( 'COMPANY', CustNo, 'ABBREV_OR_CO_NAME', 'X' ) Str:= '^FO30,185^A110,70^FD':CustAbbrevOrName:'^FS':CRLF$ Str:= '^FO150,255^A080,50^FD':'Commit Date: ':OCONV( XLATE( 'WO_LOG', PrintUniqueWO[1,'.'], 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 IdCnt 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#: ':LotNum:'^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 NEXT I RETURN * * * * * * * PrintSurfscanLabels: * * * * * * * FOR I = 1 TO IdCnt 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 NEXT I RETURN