open-insight/LSL2/STPROC/PRINT_CLEANROOM_LABELS_THERMAL.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

844 lines
30 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

compile function PRINT_CLEANROOM_LABELS_THERMAL( RdsIds , MultiStep )
begin condition
pre:
post:
end condition
$insert logical
$insert msg_equates
$insert rds_equ
$insert rds_layer_info_equ
$insert oiprint_equates
$insert prod_spec_equ
$insert quote_spec_equ
$insert wo_log_equ
declare function fieldcount, msg, key_sort, get_printer, set_printer, entid, choose_zebra_port
declare function repository, print_wo_labels, utility,obj_Install
declare subroutine extract_si_keys
declare function Printer_Select,Set_Printer, Direct_Print, Environment_Services
* * * * * *
* added 9/10/2003 - J.C. Henry, changed printdriver to generic
* eliminated port capture to print, changed printing OI Print Interface
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(RdsIds)) THEN RdsIds = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
IF NOT(ASSIGNED(MultiStep)) THEN MultiStep = '' ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
IF RdsIds = '' THEN RETURN 0 ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
IF MultiStep = '' THEN MultiStep = 0 ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
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 = '\\FMSA001\PMSAZBR1' ;* This is the Zebra 105se
PrinterID = '\\FMSA001\PMSAZBR5' ;* This is the Zebra 105se
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
if RdsIds then
Void = utility( 'CURSOR', 'H' )
IdCnt = fieldcount( RdsIds, @fm )
* sort by run order number
if IdCnt > 1 then
RdsIds = key_sort( RdsIds, 'RDS', 'WO':@fm:'RUN_ORDER_NUM', 1, '', '' )
end
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<I>
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<i>
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' )
end
* * * * * *
OIPrint_Error:
* * * * * *
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
stat = Set_Printer("TERM")
end else
stat = Direct_Print('STOP')
end
return 0
*===========================================================================*
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' )
LotNum = xlate( 'RDS', RdsIds, rds_lot_num$, 'X' )
RecipeIDS = xlate( 'RDS', RdsIds, rds_recipe_no$, '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' ) ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
PsnCRLabelInst = XLATE( 'PROD_SPEC', PSNIds, PROD_SPEC_CR_LABEL_INST$, 'X' )
*****************
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 = ''
*convert @lower_case to @upper_case in SpecType
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<i>
ThisResVar = ResVar<i>
ThisConVar = ConVar<i>
ThisStressVar = StressVar<i>
ThisTransVar = TransVar<i>
ThisRunOrdNum = RONum<i>
ThisWO = WO<i>
ThisWOStepKey = WOStepKeys<i> ;* 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$
end
if ( ThisRunOrdNum = WOBoxCnt ) and ( ThickLast ) then
PrintThickness = true$
end
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<j> = 1
next j
if ( RoPrintFlag<ThisRunOrdNum> = 1 ) then
PrintThickness = true$
end
end
end
if PrintThickness then
PSNRec = xlate( 'PROD_SPEC', PSNIds<i>, '', 'X' )
SpecSub = PSNRec<prod_spec_spec_substrate$>
*if ThickType <> 'Prod' then
TOrient = SpecSub<1,QSSubOrientation$>
convert '<' to '' in TOrient
convert '>' to '' in TOrient
Orient = TOrient
*end else
* Orient = ''
*end
ThickPrintVar<i> = ThickTool:'~':ThickType:'~':Orient:'~':ThickRecipe
end else
ThickPrintVar<i> = ''
end
* NOW CHECK RESISTIVITY
PrintResistivity = false$
if ( ThisRunOrdNum = 1 ) and ( ResFirst ) then
PrintResistivity = true$
end
if ( ThisRunOrdNum = WOBoxCnt ) and ( ResLast ) then
PrintResistivity = true$
end
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<j> = 1
next j
if ( RoPrintFlag<ThisRunOrdNum> = 1 ) then
PrintResistivity = true$
end
end
end
if PrintResistivity then
PSNRec = xlate( 'PROD_SPEC', PSNIds<i>, '', 'X' )
SpecSub = PSNRec<prod_spec_spec_substrate$>
*if ResType <> 'Prod' then
TOrient = SpecSub<1,QSSubOrientation$>
convert '<' to '' in TOrient
convert '>' to '' in TOrient
Orient = TOrient
*end else
* Orient = ''
*end
ResPrintVar<i> = ResTool:'~':ResType:'~':Orient:'~':ResRecipe
end else
ResPrintVar<i> = ''
end
PrintSRP = false$
SRPType = ''
if SRPFlag<i> 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 PrintSRP then
* WE ARE ALREADY PRINTING IT SO NO NEED TO CHECK OTHER METROLOGY
end else
* NOW NEED TO CHECK CONCENTRATION
if ConTool = 'SRP' then
if ( ThisRunOrdNum = 1 ) and ( ConFirst ) then
PrintSRP = true$
end
if ( ThisRunOrdNum = WOBoxCnt ) and ( ConLast ) then
PrintSRP = true$
end
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<j> = 1
next j
if ( RoPrintFlag<ThisRunOrdNum> = 1 ) then
PrintSRP = true$
end
end
end
end
if PrintSRP then
SRPType = ConType
end
end
if PrintSRP then
* WE ARE ALREADY PRINTING IT SO NO NEED TO CHECK OTHER METROLOGY
end else
* NOW NEED TO CHECK STRESS
if StressTool = 'SRP' then
if ( ThisRunOrdNum = 1 ) and ( StressFirst ) then
PrintSRP = true$
end
if ( ThisRunOrdNum = WOBoxCnt ) and ( StressLast ) then
PrintSRP = true$
end
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<j> = 1
next j
if ( RoPrintFlag<ThisRunOrdNum> = 1 ) then
PrintSRP = true$
end
end
end
end
if PrintSRP then
SRPType = StressType
end
end
if PrintSRP then
* WE ARE ALREADY PRINTING IT SO NO NEED TO CHECK OTHER METROLOGY
end else
* NOW NEED TO CHECK TRANSITION
if TransTool = 'SRP' then
if ( ThisRunOrdNum = 1 ) and ( TransFirst ) then
PrintSRP = true$
end
if ( ThisRunOrdNum = WOBoxCnt ) and ( TransLast ) then
PrintSRP = true$
end
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<j> = 1
next j
if ( ROPrintFlag<ThisRunOrdNum> = 1 ) then
PrintSRP = true$
end
end
end
if PrintSRP then
SRPType = TransType
end
end
end
if PrintSRP then
SRPPrintVar<i> = true$
SRPTypePrintVar<i> = SRPType
end else
SRPPrintVar<i> = false$
SRPTypePrintVar<i> = ''
end
end else
SRPPrintVar<i> = false$
SRPTypePrintVar<i> = ''
end
next i
* GOT ALL DATA NOW WE CAN PRINT
NewCustName = ''; NewWO = '';NewCustName = '';NewLotNum = ''; NewCustName = ''
NewRecipeInfo = ''; NewSpecType = ''; NewRONum = ''; NewRdsIds = ''
NewThickPrintVar = ''; NewResPrintVar = ''; NewMultiLayVar = ''; NewSRPPrintVar = ''
NewSRPTypePrintVar = ''; NewQtys = ''; NewThickTarget = ''
NewResTarget = ''; NewPO = ''; NewPartNum = ''; NewDopant = ''
NewShipBagReq = ''; NewReqShipDate = ''; NewCleaningReqs = ''
NewPSNNo = ''
for i = 1 to IdCnt
NewCustName<-1> = CustName<i>:@fm:CustName<i>
IF MultiStep > 0 THEN
WONo = WO<i>:'.':MultiStep ;* 5/21/2005 - JCH - Added for Order Entry/Vision upgrade
WONo = WOStepKeys<i>
CONVERT '*' TO '.' IN WONo
END ELSE
WoNo = WO<i>
END
NewWO<-1> = WoNo:@fm:WoNo ;* 5/21/2005 - JCH - Changed for Order Entry/Vision upgrade
NewPSNNo<-1> = PSNIds<i>:@FM:PSNIds<i> ;* 6/10/2005 - JCH - Added per manufacturing manager request
NewLotNum<-1> = LotNum<i>:@fm:LotNum<i>
NewRecipeInfo<-1> = RecipeInfo<i>:@fm:RecipeInfo<i>
NewSpecType<-1> = SpecType<i>:@fm:SpecType<i>
NewRONum<-1> = RONum<i>:@fm:RONum<i>
NewRdsIds<-1> = RdsIds<i>:@fm:RdsIds<i>
NewThickPrintVar<-1> = ThickPrintVar<i>:@fm:ThickPrintVar<i>
NewResPrintVar<-1> = ResPrintVar<i>:@fm:ResPrintVar<i>
NewMultiLayVar<-1> = MultiLayVar<i>:@fm:MultiLayVar<i>
NewSRPPrintVar<-1> = SRPPrintVar<i>:@fm:SRPPrintVar<i>
NewSRPTypePrintVar<-1> = SRpTypePrintVar<i>:@fm:SRPTypePrintVar<i>
NewQtys<-1> = Qtys<i>:@fm:Qtys<i>
ThickCnt = fieldcount( ThickTarget<i>, @vm )
ThickTargetString = ''
for j = 1 to ThickCnt
ThickTargetString:= ThickTarget<i,j>:ThickUnit<i,j>:';'
next j
ThickTargetString[-1,1] = ''
NewThickTarget<-1> = ThickTargetString:@fm:ThickTargetString
ResCnt = fieldcount( ResTarget<i>, @vm )
ResTargetString = ''
for j = 1 to ResCnt
ResTargetString:= ResTarget<i,j>:ResUnit<i,j>:';'
next j
ResTargetString[-1,1] = ''
NewResTarget<-1> = ResTargetString:@fm:ResTargetString
NewPO<-1> = PO<i>:@fm:PO<i>
NewPartNum<-1> = PartNum<i>:'Sub Part# ':SubPartNum<i>:@fm:PartNum<i>:'Sub Part# ':SubPartNum<i>
NewDopant<-1> = Dopant<i>:@fm:Dopant<i>
NewShipBagReq<-1> = ShipBagReq<i>:@fm:ShipBagReq<i>
NewReqShipDate<-1> = ReqShipDate<i>:@fm:ReqShipDate<i>
APreRec = ''
APostRec = ''
if ( PreAkrionRecipe<i> <> '' ) then
APreRec = ' ':PreAkrionRecipe<i>:' '
SubOxide<i> = 'No' ;* IF AKRION THEN NO OXIDE STRIP
end
if ( PostAkrionRecipe<i> <> '' ) then
APostRec = ' ':PostAkrionRecipe<i>
end
Tvar = trim( 'Strip:':SubOxide<i>:' Pre:':SubPreClean<i>:APreRec:' Post:':SubPostClean<i>:APostRec )
Tvar := @fm:Tvar
NewCleaningReqs<-1> = Tvar
next i
transfer NewCustName to CustName
transfer NewWO to WO
transfer NewPSNNo to PSNNo
transfer NewLotNum to LotNum
transfer NewRecipeInfo to RecipeInfo
transfer NewSpecType to SpecType
transfer NewRONum to RONum
transfer NewRdsIds to RdsIds
transfer NewThickPrintVar to ThickPrintVar
transfer NewResPrintVar to ResPrintVar
transfer NewMultiLayVar to MultiLayVar
transfer NewSRPPrintVar to SRPPrintVar
transfer NewSRPTypePrintVar to SRpTypePrintVar
transfer NewQtys to Qtys
transfer NewThickTarget to ThickTarget
transfer NewResTarget to ResTarget
transfer NewPO to PO
transfer NewPartNum to PartNum
transfer NewDopant to Dopant
transfer NewShipBagReq to ShipBagReq
transfer NewReqShipDate to ReqShipDate
transfer NewCleaningReqs to CleaningReqs
IdCnt += IdCnt ;* SO WE PRINT TWO SETS OF LABELS
for i = 1 to IdCnt step 2
PrintThickTarget = ThickTarget<i>
PrintResTarget = ResTarget<i>
PrintCustName = CustName<i>
PrintWO = WO<i>
PrintPSNNo = PSNNo<i>
PrintPO = PO<i>
PrintDopant = Dopant<i>
PrintPartNum = PartNum<i>
PrintLotNum = LotNum<i>
PrintRecipeInfo = RecipeInfo<i>
PrintSpecType = SpecType<i>
PrintRONum = RONum<i>
PrintRdsId = RdsIds<i>
PrintThickPrintVar = ThickPrintVar<i>
PrintResPrintVar = ResPrintVar<i>
PrintMultiLayVar = MultiLayVar<i>
PrintSRPPrintVar = SRPPrintVar<i>
PrintSRPTypePrintVar = SRPTypePrintVar<i>
PrintQty = Qtys<i>
PrintShipBagReq = ShipBagReq<i>
PrintReqShipDate = ReqShipDate<i>
PrintCleaningReqs = CleaningReqs<i>
gosub PrintLabel
*
PrintThickTarget = ThickTarget<i+1>
PrintResTarget = ResTarget<i+1>
PrintCustName = CustName<i+1>
PrintWO = WO<i+1>
PrintPSNNo = PSNNo<i+1>
PrintPO = PO<i+1>
PrintDopant = Dopant<i+1>
PrintPartNum = PartNum<i+1>
PrintLotNum = LotNum<i+1>
PrintRecipeInfo = RecipeInfo<i+1>
PrintSpecType = SpecType<i+1>
PrintRONum = RONum<i+1>
PrintRdsId = RdsIds<i+1>
PrintThickPrintVar = ThickPrintVar<i+1>
PrintResPrintVar = ResPrintVar<i+1>
PrintMultiLayVar = MultiLayVar<i+1>
PrintSRPPrintVar = SRPPrintVar<i+1>
PrintSRPTypePrintVar = SRPTypePrintVar<i+1>
PrintQty = Qtys<i+1>
PrintShipBagReq = ShipBagReq<i+1>
PrintReqShipDate = ReqShipDate<i+1>
PrintCleaningReqs = CleaningReqs<i+1>
gosub PrintLabel
next i
return
*===========================================================================*
PrintLabel:
MakeupBox = XLATE('RDS',PrintRdsId,RDS_MAKEUP_BOX$,'X') ;* I give up on this mess
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 := CRLF$
Str := '^FO15,20^GB800,318,5,B^FS':CRLF$
* SRP Box and info in Upper Right Corner of label
if PrintSrpPrintVar then
Str:= '^FO742,20^GB72,60,3,B^FS':CRLF$
Str:= '^FO755,30^A045,25^FDSRP^FS':CRLF$
if len( PrintSRPTypePrintVar ) > 2 then
Str:= '^FO755,55^A045,25^FD':PrintSRPTypePrintVar:'^FS':CRLF$
end else
Str:= '^FO765,55^A045,25^FD':PrintSRPTypePrintVar:'^FS':CRLF$
end
end
IF PrintRONum = 1 THEN
* Box bagging reqs, rds and run order num as a flag for first box
Str:= '^FO420,130^GB375,95,3,B^FS':CRLF$
Str:= '^FO700,200^A045,25^FDFirst Box^FS':CRLF$
END
* First Line
Str:= '^FO30,30^A050,35^FD':obj_Install('Get_Prop','Company'):'^FS':CRLF$
Str:= '^FO470,30^A050,35^FD':quote(PrintSpecType):'^FS':CRLF$
* Second Line
Str:= '^FO30,65^A045,25^FDRequested Ship Date:^FS':CRLF$ ;* Label
Str:= '^FO265,65^A045,25^FD':PrintReqShipDate:'^FS':CRLF$ ;* Data
IF MakeupBox THEN
Str := '^FO380,60^A050,35^FD* * M a k e u p B o x * *^FS':CRLF$
END
* Third Line
Str:= '^FO30,90^A045,25^FDWork Order No:^FS':CRLF$ ;* Label
Str:= '^FO190,90^A045,25^FD':PrintWO:'^FS':CRLF$ ;* Data
Str:= '^FO320,90^A045,25^FDQty:^FS':CRLF$ ;* Label
Str:= '^FO370,90^A045,25^FD':PrintQty:'^FS':CRLF$ ;* Data
Str:= '^FO430,90^A045,25^FDCustomer:^FS':CRLF$ ;* Label
Str:= '^FO550,90^A045,25^FD':PrintCustName:'^FS':CRLF$ ;* Data
* Last Line
Str:= '^FO30,305^A045,25^FDProd Spec No:^FS':CRLF$ ;* Label
Str:= '^FO200,305^A045,25^FD':PrintPSNNo:'^FS':CRLF$ ;* Data
* Original mess from here on
Str:= '^FO30,140^A040,20^FDLot No:^FS':CRLF$
Str:= '^FO30,170^A040,20^FDPurchase Order No:^FS':CRLF$
Str:= '^FO30,200^A040,20^FDPart#^FS':CRLF$
Str:= '^FO30,230^A040,20^FDRecipe:^FS':CRLF$
Str:= '^FO30,280^A040,20^FDThk Spec:^FS':CRLF$
* RIGHT COLUMNS
Str:= '^FO430,140^A040,20^FDBagging:^FS':CRLF$
Str:= '^FO430,170^A040,20^FDRun No:^FS':CRLF$
Str:= '^FO430,200^A040,20^FDRDS No:^FS':CRLF$
Str:= '^FO430,230^A040,20^FDEpi Dopant:^FS':CRLF$
Str:= '^FO430,280^A040,20^FDRes Spec:^FS':CRLF$
* LEFT DATA
if PrintMultiLayVar then
PrintMultiLayVar = 'MULTI-LAYER VIEW-RDS'
end else
PrintMultiLayVar = ''
end
swap '~' with fmt( ' ', 'L#2' ) in PrintThickPrintVar
swap 'æm' with 'um' in PrintThickTarget
swap 'ê-cm' with 'ohm.cm' in PrintThickTarget
swap 'ê/Ü' with 'ohm/sq' in PrintThickTarget
swap '' with 'A' in PrintThickTarget
Str:= '^FO30,115^A040,20^FD':PrintCleaningReqs:'^FS':CRLF$
Str:= '^FO560,115^A045,20^FD':PrintMultiLayVar:'^FS':CRLF$
Str:= '^FO98,140^A040,20^FD':PrintLotNum:'^FS':CRLF$
Str:= '^FO200,170^A040,20^FD':PrintPO:'^FS':CRLF$
Str:= '^FO80,200^A040,20^FD':PrintPartNum:'^FS':CRLF$
Str:= '^FO100,230^A040,20^FD':PrintRecipeInfo:'^FS':CRLF$
Str:= '^FO30,255^A040,20^FD':PrintThickPrintVar:'^FS':CRLF$
Str:= '^FO118,280^A040,20^FD':PrintThickTarget:'^FS':CRLF$
* RIGHT DATA
swap '~' with fmt( ' ', 'L#2' ) in PrintResPrintVar
swap 'æm' with 'um' in PrintResTarget
swap 'ê-cm' with 'ohm.cm' in PrintResTarget
swap 'ê/Ü' with 'ohm/sq' in PrintResTarget
swap '' with 'A' in PrintResTarget
*convert @vm to ',' in PrintShipBagReq
Str:= '^FO525,140^A040,20^FD':PrintShipBagReq:'^FS':CRLF$
Str:= '^FO500,170^A040,20^FD':PrintRONum:'^FS':CRLF$
Str := '^BY2,2.0':CRLF$
Str := '^FO550,167^A040,20^B3,,23,N^FD':PrintRDSId:'^FS':CRLF$
Str := '^BY2,3.0':CRLF$
Str:= '^FO550,195^A050,30^FD':PrintRDSId:'^FS':CRLF$
Str:= '^FO530,230^A040,20^FD':PrintDopant:'^FS':CRLF$
Str:= '^FO430,255^A040,20^FD':PrintResPrintVar:'^FS':CRLF$
Str:= '^FO520,280^A040,20^FD':PrintResTarget:'^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 0
*===========================================================================*
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,30^A0220,210^FD':PrintUniqueWO:'^FS':CRLF$ ;* 5/21/2005 - JCH - Changed for Order Entry/Vision upgrade
END ELSE
Str:= '^FO70,30^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,210^A110,70^FD':CustAbbrevOrName:'^FS':CRLF$
Str:= '^FO150,280^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
*oswrite Str on DosPath$ ;* remove JCH
*Var1 = DosPath$ ;* remove JCH
*Void = Utility("COPYFILE", Var1, Var2) ;* remove JCH
return
*===========================================================================*
PrintMonitorLabels:
for i = 1 to IdCnt step 2
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
*oswrite Str on DosPath$ ;* remove JCH
*Var1 = DosPath$ ;* remove JCH
*Void = Utility("COPYFILE", Var1, Var2) ;* remove JCH
next i
return
*===========================================================================*
PrintSurfscanLabels:
for i = 1 to IdCnt step 2
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
*oswrite Str on DosPath$ ;* remove JCH
*Var1 = DosPath$ ;* remove JCH
*Void = Utility("COPYFILE", Var1, Var2) ;* remove JCH
next i
*===========================================================================*