909 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			909 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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<PI$LEFT>	= 0.1
 | ||
| PageInfo<PI$TOP>	= 0.1
 | ||
| PageInfo<PI$RIGHT>	= 0.1
 | ||
| PageInfo<PI$BOTTOM>	= 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<REACT_RUN_WO_NO$>
 | ||
| WOStep = FirstRunRec<REACT_RUN_WO_STEP$>
 | ||
| 
 | ||
| WORec		= XLATE('WO_LOG',WONo,'','X')
 | ||
| 
 | ||
| WOCassCnt = COUNT(WORec<WO_LOG_WO_MAT_KEY$>,@VM) + (WORec<WO_LOG_WO_MAT_KEY$> NE '')
 | ||
| 
 | ||
| WOStepKeys = WORec<WO_LOG_WO_STEP_KEY$>
 | ||
| 
 | ||
| IF INDEX(WOStepKeys,@VM,1) THEN
 | ||
| 	PrintWONo = WONo:'.':WOStep
 | ||
| END ELSE
 | ||
| 	PrintWONo = WONo
 | ||
| END
 | ||
| 
 | ||
| WOLogRec = XLATE('WO_LOG',WONo,'','X')
 | ||
| 
 | ||
| CustNo		= WOLogRec<WO_LOG_CUST_NO$>
 | ||
| 
 | ||
| CustName	= XLATE('COMPANY',CustNo,'ABBREV_OR_CO_NAME','X')
 | ||
| Captive		= XLATE('COMPANY',CustNo,'CAPTIVE','X')
 | ||
| 
 | ||
| PONo		= WOLogRec<WO_LOG_CUST_PO_NO$>
 | ||
| EpiPartNo	= WOLogRec<WO_LOG_EPI_PART_NO$>
 | ||
| ReqShipDate	= OCONV(WORec<WO_LOG_PROMISE_SHIP_DT$>,'D2/')
 | ||
| 
 | ||
| WOStepKeys	= WORec<WO_LOG_WO_STEP_KEY$>
 | ||
| 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<PROD_SPEC_SPEC_SUBSTRATE$,QSSubOrientation$>
 | ||
| 
 | ||
| CustEpiPartRec	= XLATE('CUST_EPI_PART',CustNo:'*':EpiPartNo,'','X')
 | ||
| 
 | ||
| ShipBagReq		= CustEpiPartRec<CUST_EPI_PART_SHIP_BAG_REQ$>
 | ||
| ReactType		= OCONV(PSRec<PROD_SPEC_REACTOR_TYPE$>,'[REACT_TYPE_CONV,CODE]')
 | ||
| SpecType		= OCONV( XLATE( 'PROD_SPEC', PSNo, 'SPEC_TYPE', 'X' ), '[SPEC_TYPE_CONV]' )
 | ||
| 
 | ||
| 
 | ||
| CustSpecNo = ''
 | ||
| IF Captive THEN
 | ||
| 	CustSpecNos		= PSRec<PROD_SPEC_SPEC_NUM$>
 | ||
| 	CustSpecDescs	= PSRec<PROD_SPEC_SPEC_DESC$>
 | ||
| 	CustSpecRevNos	= PSRec<PROD_SPEC_REV_NUM$>
 | ||
| 	CustSpecRevDts	= PSRec<PROD_SPEC_REV_DATE$>
 | ||
| 	
 | ||
| 	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<I>
 | ||
| 	
 | ||
| 	ReactRunRec = XLATE('REACT_RUN',RDSNo,'','X')
 | ||
| 	
 | ||
| 	CassNo = ReactRunRec<REACT_RUN_CASS_NO$>
 | ||
| 	WOStep = ReactRunRec<REACT_RUN_WO_STEP$>
 | ||
| 	
 | ||
| 	IF MultiStep THEN
 | ||
| 		PrintWONo = WONo:'.':WOStep
 | ||
| 	END ELSE
 | ||
| 		PrintWONo = WONo
 | ||
| 	END
 | ||
| 	
 | ||
| 	LSKeys = ReactRunRec<REACT_RUN_RDS_LAYER_KEYS$>
 | ||
| 	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<WO_MAT_LOT_NO$>
 | ||
| 	WfrQty		= WOMatRec<WO_MAT_WAFER_QTY$>
 | ||
| 	CustPartNo	= WOMatRec<WO_MAT_CUST_PART_NO$>
 | ||
| 	SubPartNo	= WOMatRec<WO_MAT_SUB_PART_NO$>
 | ||
| 	OrderItem	= WOMatRec<WO_MAT_ORDER_ITEM$>
 | ||
| 	MakeupBox	= WOMatRec<WO_MAT_MAKEUP_BOX$>
 | ||
| 	
 | ||
| 	LOCATE CustPartNo IN CustEpiPartRec<CUST_EPI_PART_CUST_PART_NO$> USING @VM SETTING Pos THEN
 | ||
| 		CustPartDesc = CustEpiPartRec<CUST_EPI_PART_CUST_PART_DESC$,Pos>
 | ||
| 	END ELSE
 | ||
| 		CustPartDesc = ''
 | ||
| 	END
 | ||
| 	
 | ||
| 	********************************
 | ||
| 	OrderDetKey = WORec<WO_LOG_ORDER_NO$>:'*':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<REACT_RUN_RDS_LAYER_KEYS$>
 | ||
| 	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<RDS_LAYER_RDS_TEST_KEYS$,1>	;* Just 1st one
 | ||
| 		MetRec		= XLATE('RDS_TEST',MetKey,'','X')
 | ||
| 		
 | ||
| 		PrintThickTargets<1,N>	= OCONV(MetRec<RDS_TEST_SPEC_THICK_TARGET$>,'MD2'):MetRec<RDS_TEST_SPEC_THICK_UNITS$>
 | ||
| 		PrintResTargets<1,N>	= OCONV(MetRec<RDS_TEST_SPEC_RES_TARGET$>,'MD3'):MetRec<RDS_TEST_SPEC_RES_UNITS$>
 | ||
| 		PrintConTargets<1,N>	= OCONV(MetRec<RDS_TEST_SPEC_CON_TARGET$>,'MS21'):MetRec<RDS_TEST_SPEC_CON_UNITS$>
 | ||
| 		PrintCResTargets<1,N>	= OCONV(MetRec<RDS_TEST_SPEC_CRES_TARGET$>,'MD3'):MetRec<RDS_TEST_SPEC_CRES_UNITS$>
 | ||
| 		
 | ||
| 		
 | ||
| 		IF N = 1 THEN
 | ||
| 			RecipeNo	= RDSLayerRec<RDS_LAYER_RECIPE_NO$>
 | ||
| 			RecipeInfo	= XLATE( 'RECIPE', RecipeNo, 'RECIPE_NAME_NO', 'X' )
 | ||
| 			
 | ||
| 			Dopant		= RDSLayerRec<RDS_LAYER_DOPANT$>
 | ||
| 		
 | ||
| 			ThickMTool		= MetRec<RDS_TEST_SPEC_THICK_MTOOL$>
 | ||
| 			ThickMType		= MetRec<RDS_TEST_SPEC_THICK_MTYPE$>
 | ||
| 			ThickMRecipe	= MetRec<RDS_TEST_SPEC_THICK_MRECIPE$>
 | ||
| 			ThickMFreq		= MetRec<RDS_TEST_SPEC_THICK_MFREQ$>
 | ||
| 			ThickMPIType	= MetRec<RDS_TEST_SPEC_THICK_MPROVEIN$>
 | ||
| 			ThickMFirst		= MetRec<RDS_TEST_SPEC_THICK_MFIRST$>
 | ||
| 			ThickMLast		= MetRec<RDS_TEST_SPEC_THICK_MLAST$>
 | ||
| 			ThickMSPC		= MetRec<RDS_TEST_SPEC_THICK_MSPC$>
 | ||
| 			ThickMOvergrow	= MetRec<RDS_TEST_SPEC_THICK_MOVERGROW$>
 | ||
| 			
 | ||
| 			ResMTool		= MetRec<RDS_TEST_SPEC_RES_MTOOL$>
 | ||
| 			ResMType		= MetRec<RDS_TEST_SPEC_RES_MTYPE$>
 | ||
| 			ResMRecipe		= MetRec<RDS_TEST_SPEC_RES_MRECIPE$>
 | ||
| 			ResMFreq		= MetRec<RDS_TEST_SPEC_RES_MFREQ$>
 | ||
| 			ResMPIType		= MetRec<RDS_TEST_SPEC_RES_MPROVEIN$>
 | ||
| 			ResMFirst		= MetRec<RDS_TEST_SPEC_RES_MFIRST$>
 | ||
| 			ResMLast		= MetRec<RDS_TEST_SPEC_RES_MLAST$>
 | ||
| 			ResMSPC			= MetRec<RDS_TEST_SPEC_RES_MSPC$>
 | ||
| 			ResMOvergrow	= MetRec<RDS_TEST_SPEC_RES_MOVERGROW$>
 | ||
| 		
 | ||
| 			ConMTool		= MetRec<RDS_TEST_SPEC_CON_MTOOL$>
 | ||
| 			ConMType		= MetRec<RDS_TEST_SPEC_CON_MTYPE$>
 | ||
| 			ConMRecipe		= MetRec<RDS_TEST_SPEC_CON_MRECIPE$>
 | ||
| 			ConMFreq		= MetRec<RDS_TEST_SPEC_CON_MFREQ$>
 | ||
| 			ConMPIType		= MetRec<RDS_TEST_SPEC_CON_MPROVEIN$>
 | ||
| 			ConMFirst		= MetRec<RDS_TEST_SPEC_CON_MFIRST$>
 | ||
| 			ConMLast		= MetRec<RDS_TEST_SPEC_CON_MLAST$>
 | ||
| 			ConMSPC			= MetRec<RDS_TEST_SPEC_CON_MSPC$>
 | ||
| 			ConMOvergrow	= MetRec<RDS_TEST_SPEC_CON_MOVERGROW$>
 | ||
| 			
 | ||
| 			CResMTool		= MetRec<RDS_TEST_SPEC_CRES_MTOOL$>
 | ||
| 			CResMType		= MetRec<RDS_TEST_SPEC_CRES_MTYPE$>
 | ||
| 			CResMRecipe		= MetRec<RDS_TEST_SPEC_CRES_MRECIPE$>
 | ||
| 			CResMFreq		= MetRec<RDS_TEST_SPEC_CRES_MFREQ$>
 | ||
| 			CResMPIType		= MetRec<RDS_TEST_SPEC_CRES_MPROVEIN$>
 | ||
| 			CResMFirst		= MetRec<RDS_TEST_SPEC_CRES_MFIRST$>
 | ||
| 			CResMLast		= MetRec<RDS_TEST_SPEC_CRES_MLAST$>
 | ||
| 			CResMSPC		= MetRec<RDS_TEST_SPEC_CRES_MSPC$>
 | ||
| 			CResMOvergrow	= MetRec<RDS_TEST_SPEC_CRES_MOVERGROW$>
 | ||
| 			
 | ||
| 			
 | ||
| 			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<REACT_RUN_PRE_CI_NO$>
 | ||
| 	PreCIRec = XLATE('CLEAN_INSP',PreCINo,'','X')
 | ||
| 	
 | ||
| 	SubOxide			= OCONV(PreCIRec<CLEAN_INSP_SPEC_CLEAN_SUBOXIDE$>,'B')
 | ||
| 	PreCleanTool		= PreCIRec<CLEAN_INSP_SPEC_CLEAN_TOOL$>
 | ||
| 	PreAkrionRecipe		= PreCIRec<CLEAN_INSP_SPEC_CLEAN_AKRION_RECIPE$>
 | ||
| 	PreSurfscan			= PreCIRec<CLEAN_INSP_SPEC_SURFSCAN$>
 | ||
| 	
 | ||
| 	
 | ||
| 	WfrCINo = ReactRunRec<REACT_RUN_WFR_CI_NO$>
 | ||
| 	WfrCIRec = XLATE('CLEAN_INSP',WfrCINo,'','X')
 | ||
| 	
 | ||
| 	FirstSurfscan		= WfrCIRec<CLEAN_INSP_SPEC_SURFSCAN$>
 | ||
| 	
 | ||
| 	PostCINo = ReactRunRec<REACT_RUN_POST_CI_NO$>
 | ||
| 	PostCIRec = XLATE('CLEAN_INSP',PostCINo,'','X')
 | ||
| 	
 | ||
| 	IF PostCINo NE '' THEN
 | ||
| 		PostCleanTool			= PostCIRec<CLEAN_INSP_SPEC_CLEAN_TOOL$>
 | ||
| 		PostAkrionRecipe		= PostCIRec<CLEAN_INSP_SPEC_CLEAN_AKRION_RECIPE$>
 | ||
| 		
 | ||
| 		PostCleanSurfScan		= PostCIRec<CLEAN_INSP_SPEC_SURFSCAN$>
 | ||
| 		PostCleanSSSampleQty	= PostCIRec<CLEAN_INSP_SPEC_SS_SAMP_QTY$>
 | ||
| 		PostCleanSurfscanRecipe	= PostCIRec<CLEAN_INSP_SPEC_SURFSCAN_RECIPE$>
 | ||
| 		PostCleanSurfDefects	= PostCIRec<CLEAN_INSP_SPEC_SURF_DEFECTS$>
 | ||
| 		PostCleanSurfHaze		= OCONV(PostCIRec<CLEAN_INSP_SPEC_SURF_HAZE$>,'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<CLEAN_INSP_SPEC_SS_SAMP_QTY$>
 | ||
| PostCleanSurfscanRecipe	= PostCIRec<CLEAN_INSP_SPEC_SURFSCAN_RECIPE$>
 | ||
| PostCleanSurfDefects	= PostCIRec<CLEAN_INSP_SPEC_SURF_DEFECTS$>
 | ||
| PostCleanSurfHaze		= OCONV(PostCIRec<CLEAN_INSP_SPEC_SURF_HAZE$>,'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<I>:'^FS':CRLF$
 | ||
| 	Str:= '^FO30,190^A060,40^FDRDS#: ':RDSIds<I>:'^FS':CRLF$
 | ||
| 	Str:= '^FO400,190^A060,40^FDLot#: ':LotNum<I>:'^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<I>:'^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
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| 
 |