COMPILE SUBROUTINE PRINT_PROD_LABELS(RDSNos) $INSERT LOGICAL $INSERT MSG_EQUATES $INSERT REACT_RUN_EQUATES $INSERT RDS_LAYER_EQUATES $INSERT RDS_TEST_EQUATES $INSERT CLEAN_INSP_EQUATES $INSERT RECIPE_EQU $INSERT OIPRINT_EQUATES $INSERT PROD_SPEC_EQUATES $INSERT QUOTE_SPEC_EQU $INSERT WO_LOG_EQUATES $INSERT WO_STEP_EQU $INSERT WO_MAT_EQUATES $INSERT ORDER_EQU $INSERT ORDER_DET_EQU $INSERT PRS_LAYER_EQU $INSERT CUST_EPI_PART_EQUATES DECLARE SUBROUTINE ErrMsg, DECLARE FUNCTION MSG, Key_Sort, Get_Printer, Set_Printer, Utility, obj_Install, Printer_Select, obj_Prod_Spec Declare function Direct_Print, Environment_Services * 4/1/2010 cloned from PRINT_CASS_LABELS Change from RDS centric to WO_MAT and expand to 4x4 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(RDSNos)) THEN RDSNos = '' ErrorMsg = '' IF RDSNos = '' THEN ErrorMsg = 'Null parameter "RDSNos" passed to routine.' IF ErrorMsg NE '' THEN ErrMsg(ErrorMsg) RETURN END 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 = '\\mesirwfp001\MESZBRPRT002' ;* This is the Zebra 105se PrinterID = '\\mesirwfp002\MESZBRPRT004' ;* This is the 105SL - This is the production 1 ;* New Zebra 4x4" printer after IFX cutover - dkk 7/29/15 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 EQU DosPath$ TO 'C:\WINDOWS\OIZPL.TXT' ;* remove jch CLOrientation = '' ;* used for printing on cleanroom labels * Begin data extraction FirstRunRec = XLATE('REACT_RUN',RDSNos<1,1>,'','X') WONo = FirstRunRec WOStep = FirstRunRec WORec = XLATE('WO_LOG',WONo,'','X') WOCassCnt = COUNT(WORec,@VM) + (WORec NE '') WOStepKeys = WORec IF INDEX(WOStepKeys,@VM,1) THEN PrintWONo = WONo:'.':WOStep END ELSE PrintWONo = WONo END WOLogRec = XLATE('WO_LOG',WONo,'','X') CustNo = WOLogRec CustName = XLATE('COMPANY',CustNo,'ABBREV_OR_CO_NAME','X') Captive = XLATE('COMPANY',CustNo,'CAPTIVE','X') PONo = WOLogRec EpiPartNo = WOLogRec ReqShipDate = OCONV(WORec,'D2/') WOStepKeys = WORec IF Index(WOStepKeys,@VM,1) THEN MultiStep = 1 Else MultiStep = 0 PSNo = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X') PSRec = XLATE('PROD_SPEC',PSNo,'','X') SubOrient = PSRec CustEpiPartRec = XLATE('CUST_EPI_PART',CustNo:'*':EpiPartNo,'','X') ShipBagReq = CustEpiPartRec ReactType = OCONV(PSRec,'[REACT_TYPE_CONV,CODE]') SpecType = OCONV( XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' ) 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 BoxCnt = COUNT(RDSNos,@FM) + (RDSNos NE '') GOSUB PrintCleanRoomLabels * * * * * * 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: * * * * * * * FOR I = 1 TO BoxCnt RDSNo = RDSNos ReactRunRec = XLATE('REACT_RUN',RDSNo,'','X') CassNo = ReactRunRec WOStep = ReactRunRec IF MultiStep THEN PrintWONo = WONo:'.':WOStep END ELSE PrintWONo = WONo END LSKeys = ReactRunRec LSCnt = COUNT(LSKeys,@VM) + (LSKeys NE '') LSIDs = '' FOR N = 1 TO LSCnt LSIDs<1,-1> = FIELD(LSKeys<1,N>,'*',2) NEXT N WOMatKey = WONo:'*':CassNo WOMatRec = XLATE('WO_MAT',WOMatKey,'','X') LotNo = WOMatRec WfrQty = WOMatRec CustPartNo = WOMatRec SubPartNo = WOMatRec OrderItem = WOMatRec MakeupBox = WOMatRec LOCATE CustPartNo IN CustEpiPartRec USING @VM SETTING Pos THEN CustPartDesc = CustEpiPartRec END ELSE CustPartDesc = '' END ******************************** OrderDetKey = WORec:'*':OrderItem PartNoDesc = XLATE( 'ORDER_DET',OrderDetKey,'CUST_PN_DESC','X') ;********** This needs checked SuppCd = SubPartNo[-1,'B-'] IF LEN(SuppCd) NE '2' THEN SuppCd ='' LSKeys = ReactRunRec LSCnt = COUNT(LSKeys,@VM) + (LSKeys NE '') PrintThickTargets = '' PrintResTargets = '' PrintConTargets = '' PrintCResTargets = '' FOR N = 1 TO LSCnt LSID = FIELD(LSKeys<1,N>,'*',2) RDSLayerRec = XLATE('RDS_LAYER',RDSNo:'*':LSID,'','X') MetKey = RDSLayerRec ;* Just 1st one MetRec = XLATE('RDS_TEST',MetKey,'','X') PrintThickTargets<1,N> = OCONV(MetRec,'MD2'):MetRec PrintResTargets<1,N> = OCONV(MetRec,'MD3'):MetRec PrintConTargets<1,N> = OCONV(MetRec,'MS21'):MetRec PrintCResTargets<1,N> = OCONV(MetRec,'MD3'):MetRec IF N = 1 THEN RecipeNo = RDSLayerRec RecipeInfo = XLATE( 'RECIPE', RecipeNo, 'RECIPE_NAME_NO', 'X' ) Dopant = RDSLayerRec ThickMTool = MetRec ThickMType = MetRec ThickMRecipe = MetRec ThickMFreq = MetRec ThickMPIType = MetRec ThickMFirst = MetRec ThickMLast = MetRec ThickMSPC = MetRec ThickMOvergrow = MetRec ResMTool = MetRec ResMType = MetRec ResMRecipe = MetRec ResMFreq = MetRec ResMPIType = MetRec ResMFirst = MetRec ResMLast = MetRec ResMSPC = MetRec ResMOvergrow = MetRec ConMTool = MetRec ConMType = MetRec ConMRecipe = MetRec ConMFreq = MetRec ConMPIType = MetRec ConMFirst = MetRec ConMLast = MetRec ConMSPC = MetRec ConMOvergrow = MetRec CResMTool = MetRec CResMType = MetRec CResMRecipe = MetRec CResMFreq = MetRec CResMPIType = MetRec CResMFirst = MetRec CResMLast = MetRec CResMSPC = MetRec CResMOvergrow = MetRec BEGIN CASE CASE ThickMTool = 'SRP' SRPParm = 'THICK' SRPType = ThickMType SRPFirst = ThickMFirst SRPLast = ThickMLast SRPFreq = ThickMFreq CASE ResMTool = 'SRP' SRPParm = 'RES' SRPType = ResMType SRPFirst = ResMFirst SRPLast = ResMLast SRPFreq = ResMFreq CASE ConMTool = 'SRP' SRPParm = 'CON' SRPType = ConMType SRPFirst = ConMFirst SRPLast = ConMLast SRPFreq = ConMFreq CASE CResMTool = 'SRP' SRPParm = 'CRES' SRPType = CResMType SRPFirst = CResMFirst SRPLast = CResMLast SRPFreq = CResMFreq CASE 1 SRPPrintFlag = '' SRPParm = '' SRPType = '' SRPFirst = '' SRPLast = '' SRPFreq = '' END CASE END ;* End of check for First Layer NEXT N 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 * Thickness print data PrintThickness = '' PrintResistivity = '' BEGIN CASE CASE ThickMFirst AND CassNo = 1 ; PrintThickness = 1 CASE ThickMLast AND CassNo = WOCassCnt ; PrintThickness = 1 CASE 1 IF ThickMFreq = 1 THEN PrintThickness = 1 END ELSE IF MOD(CassNo,ThickMFreq) = 1 THEN PrintThickness = 1 END END END CASE IF PrintThickness THEN CONVERT '<>' TO '' IN SubOrient ThickPrintData = ThickMTool:' ':ThickMType:' ':SubOrient:' ':ThickMRecipe END ELSE ThickPrintData = '' END * Resistivity print data BEGIN CASE CASE ResMFirst AND CassNo = 1 ; PrintResistivity = 1 CASE ResMLast AND CassNo = WOCassCnt ; PrintResistivity = 1 CASE 1 IF ResMFreq = 1 THEN PrintResistivity = 1 END ELSE IF MOD(CassNo,ResMFreq) = 1 THEN PrintResistivity = 1 END END END CASE IF PrintResistivity THEN CONVERT '<>' TO '' IN SubOrient ResPrintData = ResMTool:' ':ResMType:' ':SubOrient:' ':ResMRecipe END ELSE ResPrintData = '' END SRPPrintFlag = '' BEGIN CASE *CASE SRPParm = 'THICK' ; SRPPrintFlag = 1 *CASE SRPParm = 'RES' ; SRPPrintFlag = 1 CASE 1 IF SRPFirst AND CassNo = 1 THEN SRPPrintFlag = 1 IF SRPLast AND CassNo = WOCassCnt THEN SRPPrintFlag = 1 IF SRPFreq = 1 THEN SRPPrintFlag = 1 END ELSE IF MOD(CassNo,SRPFreq) = 1 THEN SRPPrintFlag = 1 END END END CASE PreCINo = ReactRunRec PreCIRec = XLATE('CLEAN_INSP',PreCINo,'','X') SubOxide = OCONV(PreCIRec,'B') PreCleanTool = PreCIRec PreAkrionRecipe = PreCIRec PreSurfscan = PreCIRec WfrCINo = ReactRunRec WfrCIRec = XLATE('CLEAN_INSP',WfrCINo,'','X') FirstSurfscan = WfrCIRec PostCINo = ReactRunRec PostCIRec = XLATE('CLEAN_INSP',PostCINo,'','X') IF PostCINo NE '' THEN PostCleanTool = PostCIRec PostAkrionRecipe = PostCIRec PostCleanSurfScan = PostCIRec PostCleanSSSampleQty = PostCIRec PostCleanSurfscanRecipe = PostCIRec PostCleanSurfDefects = PostCIRec PostCleanSurfHaze = OCONV(PostCIRec,'MD2') END 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:':PreCleanTool:APreRec:' Post:':PostCleanTool:APostRec ) GOSUB PrintLabel *GOSUB PrintLabel NEXT I RETURN * * * * * * * PrintLabel: * * * * * * * Str = '^XA' Str := '^LH0,0' Str := '^PR2' ;* Print speed 2 inches per second Str := '^LL812' ;* 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 = '^XA' ;* Start of label format Str := '^LH20,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 := '^FO15,15^GB795,786,3,B^FS' * SRP Box and info in Upper Right Corner of label IF SRPPrintFlag THEN Str:= '^FO738,15^GB72,60,3,B^FS' Str:= '^FO755,25^A0,25^FDSRP^FS':CRLF$ IF LEN( SRPType ) > 2 THEN Str:= '^FO750,50^A0,N,25,^FD':SRPType:'^FS' END ELSE Str:= '^FO745,50^A0,N,25,^FD':SRPType:'^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':PrintWONo:'^FS':CRLF$ ;* Data IF CassNo = 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':CassNo:'^FS':CRLF$ ;* Data END ELSE Str := '^FO560,25^AC,18^FDRun:^FS':CRLF$ ;* Label Str := '^FO615,25^A045,36^FD':CassNo:'^FS':CRLF$ ;* Data END ****** Second Line Str:= '^FO30,70^AC,18^FDRDS:^FS':CRLF$ Str:= '^FO90,70^A050,30^FD':RDSNo:'^FS':CRLF$ Str := '^BY2,2.0':CRLF$ Str := '^FO200,70^B3,,23,N^FD':RDSNo:'^FS':CRLF$ Str := '^BY2,3.0':CRLF$ Str:= '^FO450,70^AC,18^FDQty:^FS':CRLF$ ;* Label Str:= '^FO510,70^A045,25^FD':WfrQty:'^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':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 Str := '^FO30,':LineY:'^AC,18^FDStrip Oxide:^FS':CRLF$ Str := '^FO180,':LineY:'^A0,20^FD':SubOxide:'^FS':CRLF$ Str := '^FO410,':LineY:'^AC,18^FDReact Type:^FS':CRLF$ Str := '^FO560,':LineY:'^A0,20^FD':ReactType:'^FS':CRLF$ ****** 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 Str := '^FO30,':LineY:'^A040,20^FD':ThickPrintData:'^FS':CRLF$ Str := '^FO410,':LineY:'^A040,20^FD':ResPrintData:'^FS':CRLF$ ****** 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 ****** Line Str := '^FO30,625^AC,18^FDPost:^FS':CRLF$ Str := '^FO120,625^A0,20^FD':PostCleanTool:'^FS':CRLF$ IF PostAkrionRecipe NE '' THEN Str := '^FO30,650^AC,18^FDAkrion:^FS':CRLF$ Str := '^FO120,650^A0,20^FD':PostAkrionRecipe:'^FS':CRLF$ Str := '^BY2,2.0':CRLF$ Str := '^FO400,650^A040,20^B3,,23,N^FD':PostAkrionRecipe:'^FS':CRLF$ Str := '^BY2,3.0':CRLF$ END ****** Line 13 PostCleanSSSampleQty = PostCIRec PostCleanSurfscanRecipe = PostCIRec PostCleanSurfDefects = PostCIRec PostCleanSurfHaze = OCONV(PostCIRec,'MD2') IF PostCleanSurfScanRecipe NE '' THEN LineY = 685 Str := '^FO30,':LineY:'^AC,18^FDSample:^FS':CRLF$ Str := '^FO120,':LineY:'^A0,20^FD':PostCleanSSSampleQty:'^FS':CRLF$ Str := '^FO200,':LineY:'^AC,18^FDSum of Defects:^FS':CRLF$ Str := '^FO390,':LineY:'^A0,20^FD':PostCleanSurfDefects:'^FS':CRLF$ Str := '^FO450,':LineY:'^AC,18^FDHaze Avg:^FS':CRLF$ Str := '^FO570,':LineY:'^A0,20^FD':PostCleanSurfHaze:'^FS':CRLF$ Str := '^FO30,710^AC,18^FDTencor:^FS':CRLF$ Str := '^FO120,710^A0,20^FD':PostCleanSurfScanRecipe:'^FS':CRLF$ Str := '^BY2,2.0':CRLF$ Str := '^FO350,710^A040,20^B3,,23,N^FD':PostCleanSurfScanRecipe:'^FS':CRLF$ Str := '^BY2,3.0':CRLF$ *Str := '^FO30,700^AC,18^FDPost:^FS':CRLF$ *Str := '^FO90,700^A0,20^FD':PostCleanTool:'^FS':CRLF$ END ****** 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:= '^FO30,750^AC,18^FDBag:^FS':CRLF$ Str:= '^FO80,750^A0,20^FD':ShipBagReq:'^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(RDSNos,@VM) + (RDSNos NE '') ShelfCnt = INT(RDSCnt/28) + (MOD(RDSCnt,28) NE 0) ;* Come back TO this later JCH 7/27/2005 * So we print two sets of labels GOSUB PrintWO GOSUB PrintWO 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,30^A0220,210^FD':PrintWONo:'^FS':CRLF$ ;* 5/21/2005 - JCH - Changed for Order Entry/Vision upgrade END ELSE Str:= '^FO70,30^A0220,210^FD':PrintWONo:'^FS':CRLF$ END * Get Cust Abbrev 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:= '^FO150,320^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