compile function PRINT_CLEANROOM_LABELS_SMALL( RdsIds ) 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 declare function fieldcount, msg, key_sort, get_printer, set_printer, entid declare function repository, print_wo_labels,Printer_Select declare subroutine extract_si_keys CLOrientation = '' ;* used for printing on cleanroom labels if RdsIds then 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 = '' 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 gosub PrintWOLabels end return 0 *===========================================================================* PrintCleanRoomLabels: CustAbbrev = xlate( 'RDS', RdsIds, 'ABBREV_OR_CO_NAME', 'X' ) WO = xlate( 'RDS', RdsIds, rds_wo$, 'X' ) ThickTarget = oconv( xlate( 'RDS', RdsIds, rds_thick_target$, 'X' ), 'MD2' ) ThickUnit = xlate( 'RDS', RdsIds, rds_thick_units$, 'X' ) ResTarget = oconv( xlate( 'RDS', RdsIds, rds_res_target$, 'X' ), 'MD2' ) ResUnit = xlate( 'RDS', RdsIds, rds_res_units$, '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]' ) 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 ThisResVar = ResVar ThisConVar = ConVar ThisStressVar = StressVar ThisTransVar = TransVar ThisRunOrdNum = RONum ThisWO = WO * 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 ) * extract_si_keys( 'RDS', 'WO', ThisWO, RDSsInWO ) WOBoxCnt = fieldcount( RDSsInWO, @vm ) * 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 = 1 next j if ( RoPrintFlag = 1 ) then PrintThickness = true$ end end end if PrintThickness then PSNRec = xlate( 'PROD_SPEC', PSNIds, '', 'X' ) SpecSub = PSNRec *if ThickType <> 'Prod' then TOrient = SpecSub<1,QSSubOrientation$> convert '<' to '' in TOrient convert '>' to '' in TOrient Orient = TOrient *end else * Orient = '' *end ThickPrintVar = ThickTool:'~':ThickType:'~':Orient:'~':ThickRecipe end else ThickPrintVar = '' 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 = 1 next j if ( RoPrintFlag = 1 ) then PrintResistivity = true$ end end end if PrintResistivity then PSNRec = xlate( 'PROD_SPEC', PSNIds, '', 'X' ) SpecSub = PSNRec *if ResType <> 'Prod' then TOrient = SpecSub<1,QSSubOrientation$> convert '<' to '' in TOrient convert '>' to '' in TOrient Orient = TOrient *end else * Orient = '' *end 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 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 = 1 next j if ( RoPrintFlag = 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 = 1 next j if ( RoPrintFlag = 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 = 1 next j if ( ROPrintFlag = 1 ) then PrintSRP = true$ end end 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 MaxLabels = 14 Pieces = int( IdCnt/MaxLabels ) Rnd = mod( IdCnt, MaxLabels ) Pieces += ( Rnd > 0 ) Text = 'Please place ':Pieces:' sheet(s) of Cleanroom Labels (Label Side Down ) in the top of the tray.':CrLf$:CrLf$:'then click OK' MsgInfo = '' MsgInfo = Text MsgInfo = '!' Void = msg( '', MsgInfo ) PrintPath = Printer_Select('',1) ;* Get default printer path Void = set_printer( 'INIT', '', '', 1.06:@fm:.53:@fm:.81:@fm:.38, 0,'',PrintPath ) Font = "Courier New,10,L,0" convert ',' to @fm in Font Void = set_printer( 'FONT', Font ) LabelPrintCount = 0 LabelRowCnt = 0 CustAbbrev = CustAbbrev:@fm:CustAbbrev WO = WO:@fm:WO LotNum = LotNum:@fm:LotNum RecipeInfo = RecipeInfo:@fm:RecipeInfo SpecType = SpecType:@fm:SpecType RONum = RONum:@fm:RONum RdsIds = RdsIds:@fm:RdsIds ThickPrintVar = ThickPrintVar:@fm:ThickPrintVar ResPrintVar = ResPrintVar:@fm:ResPrintVar MultiLayVar = MultiLayVar:@fm:MultiLayVar SRPPrintVar = SRPPrintVar:@fm:SRPPrintVar SRPTypePrintVar = SRpTypePrintVar:@fm:SRPTypePrintVar Qtys = Qtys:@fm:Qtys ThickTarget = ThickTarget:@fm:ThickTarget ThickUnit = ThickUnit:@fm:ThickUnit ResTarget = ResTarget:@fm:ResTarget ResUnit = ResUnit:@fm:ResUnit IdCnt += IdCnt ;* SO WE PRINT TWO SETS OF LABELS for i = 1 to IdCnt step 2 FirstThickTarget = ThickTarget FirstThickUnit = ThickUnit FirstResTarget = ResTarget FirstResUnit = ResUnit FirstCustAbbrev = CustAbbrev FirstWO = WO FirstLotNum = LotNum FirstRecipeInfo = RecipeInfo FirstSpecType = SpecType FirstRONum = RONum FirstRdsId = RdsIds FirstThickPrintVar = ThickPrintVar FirstResPrintVar = ResPrintVar FirstMultiLayVar = MultiLayVar FirstSRPPrintVar = SRPPrintVar FirstSRPTypePrintVar = SRPTypePrintVar FirstQty = Qtys * SecondThickTarget = ThickTarget SecondThickUnit = ThickUnit SecondResTarget = ResTarget SecondResUnit = ResUnit SecondCustAbbrev = CustAbbrev SecondWO = WO SecondLotNum = LotNum SecondRecipeInfo = RecipeInfo SecondSpecType = SpecType SecondRONum = RONum SecondRdsId = RdsIds SecondThickPrintVar = ThickPrintVar SecondResPrintVar = ResPrintVar SecondMultiLayVar = MultiLayVar SecondSRPPrintVar = SRPPrintVar SecondSRPTypePrintVar = SRPTypePrintVar SecondQty = Qtys if SecondRdsId then SecondWO = 'WO#':SecondWO SecondLotNum = 'Lot#':SecondLotNum SecondRONum = 'RO#':SecondRONum SecondRdsId = 'RDS#':SecondRdsId SecondThickPrintVar = 'Thk:':SecondThickPrintVar SecondResPrintVar = 'Res:':SecondResPrintVar end *LineOut = fmt( 'Qty:':FirstQty, 'L#6' ):fmt( FirstSpecType, 'C#29' ):fmt( '', 'L#8'):fmt( 'Qty:':SecondQty, 'L#6' ):fmt( SecondSpecType, 'C#29' ) Font<1> = 'MS LineDraw' Void = set_printer( 'FONT', Font ) LineOut = fmt( '(':FirstThickTarget:FirstThickUnit:')(':FirstResTarget:FirstResUnit:')', 'L#25' ):fmt( FirstSpecType, 'R#11' ):fmt( '', 'L#8'):fmt( '(':SecondThickTarget:SecondThickUnit:')(':SecondResTarget:SecondResUnit:')', 'L#25' ):fmt( SecondSpecType, 'R#11' ) Void = set_printer( 'TEXT', LineOut ) Font<1> = 'Courier New' Void = set_printer( 'FONT', Font ) if FirstMultiLayVar then LineOut = fmt( 'MULTI-LAYER VIEW-RDS', 'L#21'):' ':fmt( 'Reactor#_____', 'R#13' ):fmt( '', 'L#8' ) end else LineOut = fmt( 'Reactor#_____', 'R#35' ):fmt( '', 'L#8' ) end if SecondMultiLayVar then LineOut := fmt( 'MULTI-LAYER VIEW-RDS', 'L#21'):' ':fmt( 'Reactor#_____', 'R#13' ) end else LineOut := fmt( 'Reactor#_____', 'R#35' ) end Void = set_printer( 'TEXT', LineOut ) LineOut = fmt( FirstCustAbbrev, 'L#28' ):fmt( '', 'L#1'):fmt( 'RO#':FirstRONum, 'R#6' ) LineOut:= fmt( '', 'L#8' ) LineOut:= fmt( SecondCustAbbrev, 'L#28' ):fmt( '', 'L#1'):fmt( SecondRONum, 'R#6' ) Void = set_printer( 'TEXT', LineOut ) *LineOut = fmt( 'Qty:':FirstQty, 'L#6' ):fmt( FirstSpecType, 'C#29' ):fmt( '', 'L#8'):fmt( 'Qty:':SecondQty, 'L#6' ):fmt( SecondSpecType, 'C#29' ) LineOut = fmt( 'WO#':FirstWo, 'L#10' ):fmt( 'Qty:':FirstQty, 'C#14' ):fmt( 'RDS#':FirstRdsId, 'R#11' ) LineOut:= fmt( '', 'L#8' ) LineOut:= fmt( SecondWO, 'L#10' ):fmt( 'Qty:':SecondQty, 'C#14' ):fmt( SecondRdsId, 'R#11' ) Void = set_printer( 'TEXT', LineOut ) LineOut = fmt( 'Lot#':FirstLotNum, 'L#27' ):fmt( '', 'L#16'):fmt( SecondLotNum, 'L#27' ) Void = set_printer( 'TEXT', LineOut ) LineOut = fmt( FirstRecipeInfo, 'L#27' ):fmt( '', 'L#16'):fmt( SecondRecipeInfo, 'L#27' ) Void = set_printer( 'TEXT', LineOut ) LineOut = fmt( 'Thk:':FirstThickPrintVar, 'L#27' ):fmt( '', 'L#16'):fmt( SecondThickPrintVar, 'L#27' ) Void = set_printer( 'TEXT', LineOut ) LineOut = fmt( 'Res:':FirstResPrintVar, 'L#27' ):fmt( '', 'L#16'):fmt( SecondResPrintVar, 'L#27' ) Void = set_printer( 'TEXT', LineOut ) * SET UP PRINT POSITIONS FOR THE SRP FLAG Void = set_printer("LINESTYLE", PS_SOLID:@fm:3) LabelRowCnt += 1 if ( FirstSRPPrintVar ) or ( SecondSRPPrintVar ) then begin case case LabelRowCnt = 1 FirstElipsePos = 2.31:@fm:.63:@fm:2.94:@fm:1.22 FirstSRPPos = 2.41:@fm:.78 FirstTypePos = 2.47:@fm:.97 SecondElipsePos = 5.83:@fm:.63:@fm:6.47:@fm:1.22 SecondSRPPos = 5.91:@fm:.78 SecondTypePos = 5.97:@fm:.97 case LabelRowCnt = 2 FirstElipsePos = 2.31:@fm:2.06:@fm:2.94:@fm:2.66 FirstSRPPos = 2.41:@fm:2.22 FirstTypePos = 2.47:@fm:2.41 SecondElipsePos = 5.83:@fm:2.06:@fm:6.47:@fm:2.66 SecondSRPPos = 5.91:@fm:2.22 SecondTypePos = 5.97:@fm:2.41 case LabelRowCnt = 3 FirstElipsePos = 2.31:@fm:3.56:@fm:2.94:@fm:4.16 FirstSRPPos = 2.41:@fm:3.72 FirstTypePos = 2.47:@fm:3.91 SecondElipsePos = 5.83:@fm:3.56:@fm:6.47:@fm:4.16 SecondSRPPos = 5.91:@fm:3.72 SecondTypePos = 5.97:@fm:3.91 case LabelRowCnt = 4 FirstElipsePos = 2.31:@fm:5.03:@fm:2.94:@fm:5.63 FirstSRPPos = 2.41:@fm:5.19 FirstTypePos = 2.47:@fm:5.38 SecondElipsePos = 5.83:@fm:5.03:@fm:6.47:@fm:5.63 SecondSRPPos = 5.91:@fm:5.19 SecondTypePos = 5.97:@fm:5.38 case LabelRowCnt = 5 FirstElipsePos = 2.31:@fm:6.5:@fm:2.94:@fm:7.06 FirstSRPPos = 2.41:@fm:6.63 FirstTypePos = 2.47:@fm:6.82 SecondElipsePos = 5.83:@fm:6.5:@fm:6.47:@fm:7.06 SecondSRPPos = 5.91:@fm:6.63 SecondTypePos = 5.97:@fm:6.82 case LabelRowCnt = 6 FirstElipsePos = 2.31:@fm:8:@fm:2.94:@fm:8.56 FirstSRPPos = 2.41:@fm:8.13 FirstTypePos = 2.47:@fm:8.32 SecondElipsePos = 5.83:@fm:8:@fm:6.47:@fm:8.56 SecondSRPPos = 5.91:@fm:8.13 SecondTypePos = 5.97:@fm:8.32 case LabelRowCnt = 7 FirstElipsePos = 2.31:@fm:9.44:@fm:2.94:@fm:10 FirstSRPPos = 2.41:@fm:9.56 FirstTypePos = 2.47:@fm:9.75 SecondElipsePos = 5.83:@fm:9.44:@fm:6.47:@fm:10 SecondSRPPos = 5.91:@fm:9.56 SecondTypePos = 5.97:@fm:9.75 end case if FirstSRPPrintVar then stat = set_Printer("ELLIPSE", FirstElipsePos, 0) Font<2> = 18 Void = set_printer( 'FONT', Font ) Void = set_printer( 'TEXTXY', 'SRP', FirstSRPPos, '', 0 ) Font<2> = 10 Void = set_printer( 'FONT', Font ) if len( FirstSRPTypePrintVar ) = 2 then FirstSRPTypePrintVar = fmt( FirstSRPTypePrintVar, 'R#3' ) end Void = set_printer( 'TEXTXY', FirstSRPTypePrintVar, FirstTypePos, '', 0 ) end if SecondSRPPrintVar then stat = set_Printer("ELLIPSE", SecondElipsePos, 0) Font<2> = 18 Void = set_printer( 'FONT', Font ) Void = set_printer( 'TEXTXY', 'SRP', SecondSRPPos, '', 0 ) Font<2> = 10 Void = set_printer( 'FONT', Font ) if len( SecondSRPTypePrintVar ) = 2 then SecondSRPTypePrintVar = fmt( SecondSRPTypePrintVar, 'R#3' ) end Void = set_printer( 'TEXTXY', SecondSRPTypePrintVar, SecondTypePos, '', 0 ) end end LabelPrintCount += 2 if LabelPrintCount = 14 then Void = set_printer( 'PAGEBREAK' ) LabelPrintCount = 0 LabelRowCnt = 0 end else *Font<2> = 8 *Void = set_printer( 'FONT', Font ) for j = 1 to 2 Void = set_printer( 'TEXT' ) next j *Font<2> = 10 *Void = set_printer( 'FONT', Font ) end if LabelRowCnt = 2 then Void = set_printer( 'TEXT', '' ) * Font<2> = 5 * Void = set_printer( 'FONT', Font ) * Void = set_printer( 'TEXT', '' ) * Font<2> = 10 * Void = set_printer( 'FONT', Font ) end next i return *===========================================================================* PrintWOLabels: * GOT ALL DATA NOW WE CAN PRINT Font = "Courier New,52,L,0" convert ',' to @fm in Font Void = set_printer( 'FONT', Font ) Font<2> = 18 Void = set_printer( 'FONT', Font ) Void = set_printer( 'TEXT', '' ) Font<2> = 52 Void = set_printer( 'FONT', Font ) LabelPrintCount = 0 LabelRowCnt = 0 UniqueWOs = UniqueWOs:@vm:UniqueWOs UWOCnt = fieldcount( UniqueWOs, @vm ) for i = 1 to UWOCnt step 2 FirstUniqueWO = UniqueWOs<1,i> SecondUniqueWO = UniqueWOs<1,i+1> LineOut = FirstUniqueWO:fmt( ' ', 'L#2' ):SecondUniqueWO Void = set_printer( 'TEXT', LineOut ) LabelRowCnt += 1 Font<2> = 36 Void = set_printer( 'FONT', Font ) Void = set_printer( 'TEXT', '' ) if ( LabelRowCnt = 3 ) then Font<2> = 18 Void = set_printer( 'FONT', Font ) Void = set_printer( 'TEXT', '' ) end Font<2> = 52 Void = set_printer( 'FONT', Font ) if ( LabelRowCnt = 7 ) then Void = set_printer( 'PAGEBREAK' ) RowsPrinted = 0 end next i Void = set_printer( 'TERM' ) return *===========================================================================*