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

1060 lines
34 KiB
Plaintext
Raw Permalink 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 SUBROUTINE Print_Control_Plan_New( PSNo, WONo )
DECLARE SUBROUTINE ErrMsg
DECLARE FUNCTION Set_Printer, Get_printer, Msg,obj_Install,Printer_Select, obj_Prod_Spec
$INSERT OIPRINT_EQUATES
$INSERT PROD_SPEC_EQU
$INSERT QUOTE_SPEC_EQU
$INSERT WO_LOG_EQU
$INSERT ORDER_DET_EQU
$INSERT COMPANY_EQU
$INSERT RECIPE_EQU
$INSERT RDS_LAYER_EQUATES
$INSERT RDS_TEST_EQUATES
$INSERT PRS_LAYER_EQU
$INSERT APPCOLORS
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
EQU FONT_NAME$ TO 1
EQU FONT_SIZE$ TO 2
EQU FONT_JUST$ TO 3
EQU FONT_BOLD$ TO 4
EQU FONT_ITALIC$ TO 5
EQU FONT_UNDERLINE$ TO 6
EQU STEP_STEP$ TO 1
EQU STEP_PROCESS_NAME$ TO 2
EQU STEP_MACHINE$ TO 3
EQU STEP_PSN$ TO 4
EQU STEP_PRODUCT$ TO 5
EQU STEP_PROCESS$ TO 6
EQU STEP_SPEC_TOL$ TO 7
EQU STEP_EVAL_MEAS$ TO 8
EQU STEP_SIZE$ TO 9
EQU STEP_FREQ$ TO 10
EQU STEP_CTRL_METHOD$ TO 11
EQU STEP_REACT_PLAN$ TO 12
IF NOT(ASSIGNED(PSNo)) THEN RETURN
IF NOT(ASSIGNED(WONo)) THEN WONo = ''
* * * PRINT SETUP * * *
FileName = 'Print Control Plan'
Title = 'Print Control Plan'
PageInfo = '' ; * Default is .5 inch margins and 8.5 x 11 paper
PageInfo<PI$LEFT> = 0.5
PageInfo<PI$TOP> = 1.5
PageInfo<PI$RIGHT> = 0.5
PageInfo<PI$BOTTOM> = 0.5
PageInfo<PI$SIZE> = LETTER
PageSetup = 1 ;* 1 = Landscape mode
PrintSetup = ''
PrintSetup<1,1> = '2' ;* Preview Normal
PrintSetup<1,2> = '5' ;* Show Print and PDF, hide Print Setup
PrintSetup<1,3> = '0' ;* Show the printing window
PDFParms = 'Printing PDF Document':@FM: '' :@FM:'':@FM: ''
stat = Set_Printer( 'INIT', PDFParms, 'Run Data Sheet',PageInfo,PageSetup,PrintSetup)
Margins = Get_Printer('MARGIN')
LMargin = Margins<1>
TMargin = Margins<2>
RMargin = Margins<3>
BMargin = Margins<4>
PageSize = Get_Printer('PAGESIZE')
PageWidth = PageSize<1>
PageHeight = PageSize<2>
MaxPrintWidth = PageWidth - LMargin - RMargin
MaxPrintHeight = PageHeight - TMargin - BMargin
font = 'Arial' ;* Font basics
font<2> = 10
font<4> = 0
stat = Set_Printer('FONTHEADFOOT', font)
stat = Set_Printer('LINESTYLE', PS_SOLID:@FM:2)
stat = Set_Printer('LINE', -0.1:@FM:-1.2:@FM:10.0:@FM:-1.2, 1)
stat = Set_Printer('LINE', -0.1:@FM:-0.1:@FM:10.0:@FM:-0.1, 1)
location = -0.15:@FM:-1.150:@FM:1.57:@FM:1
stat = Set_Printer('BMP',obj_Install('Get_Prop','ColorBMP'),location, 0,1)
RSideGraphicX = (1.57 - .15)
RSideTextX = (MaxPrintWidth - 1.75)
HeaderMidX = ((RSideTextX - RSideGraphicX)/2) + RSideGraphicX
* * * * Added 10/8/2015 JCH - Updated 'CONFIG','COMPANY' * * * *
InstDat = obj_Install('Get_Prop','Company':@FM:'Division')
Company = InstDat<1>
Division = InstDat<2>
font = 'Arial'
font<2> = '12' ;* Big type
font<4> = 1 ;* Bold on
font<5> = 0 ;* Italics
stat = Set_Printer('TEXTXY',Company,RSideTextX:@FM:-1.15,font,1)
stat = Set_Printer('TEXTXY',Division,RSideTextX:@FM:-0.970,font,1)
font<2> = 10 ;* 10 point font
font<4> = 0 ;* Bold off
font<5> = 0 ;* Italics Off
stat = Set_Printer('TEXTXY',obj_Install('Get_Prop','Address'), RSideTextX:@fm:-0.775, font,1)
stat = Set_Printer('TEXTXY',obj_Install('Get_Prop','CSZC'), RSideTextX:@fm:-0.625, font,1)
stat = Set_Printer('TEXTXY','Tel: ':obj_Install('Get_Prop','Phone'), RSideTextX:@fm:-0.475, font, 1)
stat = Set_Printer('TEXTXY','FAX: ':obj_Install('Get_Prop','FAX'), RSideTextX:@fm:-0.325, font, 1)
* * * * End of changes 10/8/2015 JCH * * * *
font = 'Arial'
font<2> = '18' ;* Big type
font<4> = 1 ;* Bold on
font<5> = 1 ;* Italics
stat = Set_Printer('FONT',font)
stat = Set_Printer("CALCTEXT", 'Control Plan')
titleSize = Get_Printer("CALCTEXT")
titleWidth = titleSize<1>
titleHeight = titleSize<2>
titleStartX = HeaderMidX - (titleWidth/2)
stat = Set_Printer('TEXTXY','Control Plan',titleStartX:@FM:-1.0,font,1)
font<2> = '16'
font<4> = 0
stat = Set_Printer('FONT',font)
CustName = XLATE('PROD_SPEC',PSNo,'CUST_NAME','X')
stat = Set_Printer("CALCTEXT", 'PSN: ':PSNo:' - ':CustName)
psnSize = Get_Printer("CALCTEXT")
psnWidth = psnSize<1>
psnHeight = psnSize<2>
psnStartX = HeaderMidX - (psnWidth/2)
stat = Set_Printer("CALCTEXT", 'Work Order No: ':WONo)
woSize = Get_Printer("CALCTEXT")
woWidth = woSize<1>
woHeight = woSize<2>
woStartX = HeaderMidX - (woWidth/2)
IF WONo NE '' THEN
stat = Set_Printer('TEXTXY','PSN: ':PSNo:' - ':CustName,psnStartX:@FM:-0.68,font,1)
stat = Set_Printer('TEXTXY','Work Order No: ':WONo,woStartX:@FM:-0.40,font,1)
WORec = XLATE('WO_LOG',WONo,'','X')
Order = WORec<WO_LOG_ORDER_NO$>
OrdItem = WORec<WO_LOG_ORDER_ITEM$>
SubPartNo = XLATE('ORDER_DET',Order:'*':OrdItem,ORDER_DET_SUB_PART_NO$,'X')
END ELSE
stat = Set_Printer('TEXTXY','PSN: ':PSNo:' - ':CustName,psnStartX:@FM:-0.60,font,1)
SubPartNo = ''
END
font<2> = 12 ;* Drop the font size
font<5> = 0 ;* Italics off
stat = Set_Printer('FOOTER',"Page 'P'":@VM:@VM:"'T' 'D'")
* Extract Prod Spec data
WORec = XLATE('WO_LOG',WONo,'','X')
PSNRec = XLATE('PROD_SPEC',PSNo,'','X')
SpecSubInfo = PSNRec<prod_spec_spec_substrate$>
SpecialInst = SpecSubInfo<1,QSSubInstructions$>
Orientation = SpecSubInfo<1,QSSubOrientation$>
ProdType = SpecSubInfo<1,QSSubType$>
SpecAddtl = PSNRec<prod_spec_spec_addtl$>
ProveinInst = SpecAddtl<1,QSAddProveInInst$>
EntryDt = OCONV(PSNRec<PROD_SPEC_ENTRY_DATE$>,'D2/')
RevDt = OCONV(PSNRec<PROD_SPEC_MOD_DATE$>,'D2/')
KeyContact = "Onsite Quality Representative (480) 668-4000"
CoreTeam = 'Executive Director, Quality Manager, Process Engineering Manager, Maintenance Engineering Manager, Manufacturing Manager (480) 668-4000'
*SWAP @TM WITH CRLF$ IN SpecialInst
*SWAP @TM WITH CRLF$ IN ProveInInst
SpecType = PSNrec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubSpecType$>
BEGIN CASE
CASE SpecType = 'U'
Sig = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddPreQualSig$>
SigDt = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddPreQualSigDate$>
CASE SpecType = 'Q'
Sig = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddQualSig$>
SigDt = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddQualSigDate$>
CASE SpecType = 'X'
Sig = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddPreProdSig$>
SigDt = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddPreQualSigDate$>
CASE SpecType = 'P'
Sig = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddProdSig$>
SigDt = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddProdSigDate$>
END CASE
Font = 'Arial'
Font<FONT_JUST$> = 'L'
Font<FONT_SIZE$> = 8
Font<FONT_UNDERLINE$> = 0
Font<FONT_BOLD$> = 0
Void = Set_Printer( 'FONT', Font )
* First line of Specification
colHeader = 'Description' ; colFormat = '^1440'
colHeader<1,2> = 'Type' ; colFormat<1,2> = '^1440'
colHeader<1,3> = 'Signed' ; colFormat<1,3> = '^1080'
colHeader<1,4> = 'Key Contact' ; colFormat<1,4> = '^2520'
colHeader<1,5> = 'Core Team' ; colFormat<1,5> = '^5760'
colHeader<1,6> = 'Original Dt' ; colFormat<1,6> = '^1080'
colHeader<1,7> = 'Last Rev' ; colFormat<1,7> = '^1080'
colData = PSNRec<PROD_SPEC_LAYER_TYPE$>
colData<1,2> = OCONV(SpecType,'[SPEC_TYPE_CONV]')
colData<1,3> = OCONV(SigDt,'D4/')
colData<1,4> = KeyContact
colData<1,5> = CoreTeam
colData<1,6> = EntryDt
colData<1,7> = RevDt
stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
stat = Set_Printer('TEXT')
* Second line of Specification
PSNLayerProps = obj_Prod_Spec('GetLayerProp',PSNo)
LSIDs = ''
Dopants = ''
colData = ''
FOR I = 1 TO COUNT(PSNLayerProps,@RM) + (PSNLayerProps NE '')
LayerSet = FIELD(PSNLayerProps,@RM,I)
LSIDs<I> = LayerSet<1>
LayerSet = FIELD(LayerSet,@FM,2,99)
Dopants<1,I> = LayerSet<PRS_LAYER_DOPANT$>
IF I = 1 THEN
RecipeNo = LayerSet<PRS_LAYER_RECIPE$>
RecipeRec = XLATE('RECIPE',RecipeNo,'','X')
RecipeName = RecipeRec<RECIPE_RECIPE_NAME$>
EpiGas = RecipeRec<RECIPE_EPI_GASES$>
BEGIN CASE
CASE EpiGas = 'SiH4' ; EpiGasName = 'Silane'
CASE EpiGas = 'SiH2CL2' ; EpiGasName = 'DiChloroSilane (DCS)'
CASE EpiGas = 'SiH1HCL3' ; EpiGasName = 'TriChloroSilane (TCS)'
CASE 1 ; EpiGasName = ''
END CASE
CustPartNos = PSNRec<PROD_SPEC_CUST_PART_NO$>
CustPartDescs = PSNRec<PROD_SPEC_PN_DESC$>
SWAP @VM WITH CRLF$ IN CustPartNos
SWAP @VM WITH CRLF$ IN CustPartDescs
colData<I,1> = 'Silcon Epitaxy'
colData<I,2> = PSNo
colData<I,3> = CustPartNos
colData<I,4> = CustPartDescs
colData<I,5> = Recipename
colData<I,6> = EpiGas
colData<I,7> = SubPartNo
colData<I,8> = Orientation
colData<I,9> = ProdType
END
NEXT I
colHeader = 'Product' ; colFormat = '<2160'
colHeader<1,2> = 'Prod Spec' ; colFormat<1,2> = '^1440'
colHeader<1,3> = 'Cust Part No' ; colFormat<1,3> = '^1440'
colHeader<1,4> = 'Part Desc' ; colFormat<1,4> = '<2160'
colHeader<1,5> = 'Recipe' ; colFormat<1,5> = '^1440'
colHeader<1,6> = 'Epi Gas' ; colFormat<1,6> = '^1440'
colHeader<1,7> = 'Prod Sub No' ; colFormat<1,7> = '^1440'
colHeader<1,8> = 'Prod Orientation' ; colFormat<1,8> = '^1440'
colHeader<1,9> = 'Prod Type' ; colFormat<1,9> = '^1440'
stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
colData = ''
stat = Set_Printer('TEXT')
colHeader = 'LS':CRLF$:'Id':@VM ; colFormat = '^540':@VM
colHeader<1,2> = 'Dopant':@VM ; colFormat<1,2> = '^1440':@VM
colHeader<1,3> = 'Measure':@VM ; colFormat<1,3> = '<1440':@VM
colHeader<1,4> = 'Minimum':@VM ; colFormat<1,4> = '^1440':@VM
colHeader<1,5> = 'Target':@VM ; colFormat<1,5> = '^1440':@VM
colHeader<1,6> = 'Maximum':@VM ; colFormat<1,6> = '^1440':@VM
colHeader<1,7> = 'Tool':@VM ; colFormat<1,7> = '<1080':@VM
colHeader<1,8> = 'Monitor Type':@VM ; colFormat<1,8> = '<1440':@VM
colHeader<1,9> = 'Recipe':@VM ; colFormat<1,9> = '<2160':@VM
colHeader<1,10> = 'Frq':@VM ; colFormat<1,10> = '^540':@VM
colHeader<1,11> = 'ProveIn Type' ; colFormat<1,11> = '<1440'
* Build Step Data * * * *
ReactorType = OCONV(PSNRec<PROD_SPEC_REACTOR_TYPE$> ,'[REACT_TYPE_CONV,OPSREF]' )
LayerCnt = COUNT(LSIDs,@FM) + (LSIDs NE '')
SDIndex = 0
StepData = ''
colData = ''
FOR I = 1 TO LayerCnt
LayerSet = LSIDs<I>
LayerSpecs = obj_Prod_Spec('GetLayerProp',PSNo:@RM:LayerSet:@RM:'') ;* Last parameter specifies no output conversion on return data
LayerSpecs = FIELD(LayerSpecs,@FM,2,99) ;* Returns with the layer set ID in the first field of each line
LSID = LSIDs<I>
ThickMin = LayerSpecs<PRS_LAYER_THICK_MIN$>
ThickTarget = LayerSpecs<PRS_LAYER_THICK_TARGET$>
ThickMax = LayerSpecs<PRS_LAYER_THICK_MAX$>
ThickUnits = LayerSpecs<PRS_LAYER_THICK_UNITS$>
ThickMTool = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MTOOL$>
ThickMType = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MTYPE$>
ThickMRecipe = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MRECIPE$>
ThickMFreq = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MFREQ$>
ThickMPIType = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MPROVEIN$>
ThickMFirst = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MFIRST$>
ThickMLast = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MLAST$>
ThickMSPC = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MSPC$>
ThickMOvergrow = LayerSpecs<PRS_LAYER_THICK_MEASUREMENT$,PRS_MOVERGROW$>
ResMin = LayerSpecs<PRS_LAYER_RES_MIN$>
ResTarget = LayerSpecs<PRS_LAYER_RES_TARGET$>
ResMax = LayerSpecs<PRS_LAYER_RES_MAX$>
ResUnits = LayerSpecs<PRS_LAYER_RES_UNITS$>
ResMTool = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MTOOL$>
ResMType = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MTYPE$>
ResMRecipe = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MRECIPE$>
ResMFreq = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MFREQ$>
ResMPIType = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MPROVEIN$>
ResMFirst = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MFIRST$>
ResMLast = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MLAST$>
ResMSPC = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MSPC$>
ResMOvergrow = LayerSpecs<PRS_LAYER_RES_MEASUREMENT$,PRS_MOVERGROW$>
IF I = 1 THEN FirstResUnits = ResUnits
ConMin = LayerSpecs<PRS_LAYER_CONC_MIN$>
ConTarget = LayerSpecs<PRS_LAYER_CONC_TARGET$>
ConMax = LayerSpecs<PRS_LAYER_CONC_MAX$>
ConUnits = LayerSpecs<PRS_LAYER_CONC_UNITS$>
ConMTool = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MTOOL$>
ConMType = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MTYPE$>
ConMRecipe = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MRECIPE$>
ConMFreq = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MFREQ$>
ConMPIType = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MPROVEIN$>
ConMFirst = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MFIRST$>
ConMLast = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MLAST$>
ConMSPC = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MSPC$>
ConMOvergrow = LayerSpecs<PRS_LAYER_CONC_MEASUREMENT$,PRS_MOVERGROW$>
CResMin = LayerSpecs<PRS_LAYER_CRES_MIN$>
CResTarget = LayerSpecs<PRS_LAYER_CRES_TARGET$>
CResMax = LayerSpecs<PRS_LAYER_CRES_MAX$>
CResUnits = LayerSpecs<PRS_LAYER_CRES_UNITS$>
CResMTool = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MTOOL$>
CResMType = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MTYPE$>
CResMRecipe = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MRECIPE$>
CResMFreq = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MFREQ$>
CResMPIType = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MPROVEIN$>
CResMFirst = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MFIRST$>
CResMLast = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MLAST$>
CResMSPC = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MSPC$>
CResMOvergrow = LayerSpecs<PRS_LAYER_CRES_MEASUREMENT$,PRS_MOVERGROW$>
colData<I,1> = LSID
colData<I,2> = Dopants<1,I>
colData<I,3> = 'Thickness'
colData<I,4> = ThickMin:ThickUnits
colData<I,5> = ThickTarget:ThickUnits
colData<I,6> = ThickMax:ThickUnits
colData<I,7> = ThickMTool
colData<I,8> = ThickMType
colData<I,9> = ThickMRecipe
colData<I,10> = ThickMFreq
colData<I,11> = ThickMPIType
IF ResTarget NE '' THEN
colData<I,1> = colData<I,1>:CRLF$
colData<I,2> = colData<I,2>:CRLF$
colData<I,3> = colData<I,3>:CRLF$:'Resistivity'
colData<I,4> = colData<I,4>:CRLF$:ResMin:ResUnits
colData<I,5> = colData<I,5>:CRLF$:ResTarget:ResUnits
colData<I,6> = colData<I,6>:CRLF$:ResMax:ResUnits
colData<I,7> = colData<I,7>:CRLF$:ResMTool
colData<I,8> = colData<I,8>:CRLF$:ResMType
colData<I,9> = colData<I,9>:CRLF$:ResMRecipe
colData<I,10> = colData<I,10>:CRLF$:ResMFreq
colData<I,11> = colData<I,11>:CRLF$:ResMPIType
END
IF ConTarget NE '' THEN
colData<I,1> = colData<I,1>:CRLF$
colData<I,2> = colData<I,2>:CRLF$
colData<I,3> = colData<I,3>:CRLF$:'Concentration'
colData<I,4> = colData<I,4>:CRLF$:ConMin:ConUnits
colData<I,5> = colData<I,5>:CRLF$:ConTarget:ConUnits
colData<I,6> = colData<I,6>:CRLF$:ConMax:ConUnits
colData<I,7> = colData<I,7>:CRLF$:ConMTool
colData<I,8> = colData<I,8>:CRLF$:ConMType
colData<I,9> = colData<I,9>:CRLF$:ConMRecipe
colData<I,10> = colData<I,10>:CRLF$:ConMFreq
colData<I,11> = colData<I,11>:CRLF$:ConMPIType
END
IF CResTarget NE '' THEN
colData<I,1> = colData<I,1>:CRLF$
colData<I,2> = colData<I,2>:CRLF$
colData<I,3> = colData<I,3>:CRLF$:'CRes'
colData<I,4> = colData<I,4>:CRLF$:CResMin:CResUnits
colData<I,5> = colData<I,5>:CRLF$:CResTarget:CResUnits
colData<I,6> = colData<I,6>:CRLF$:CResMax:CResUnits
colData<I,7> = colData<I,7>:CRLF$:CResMTool
colData<I,8> = colData<I,8>:CRLF$:CResMType
colData<I,9> = colData<I,9>:CRLF$:CResMRecipe
colData<I,10> = colData<I,10>:CRLF$:CResMFreq
colData<I,11> = colData<I,11>:CRLF$:CResMPIType
END
colData<I,1> = colData<I,1>:CRLF$
colData<I,2> = colData<I,2>:CRLF$
colData<I,3> = colData<I,3>:CRLF$
colData<I,4> = colData<I,4>:CRLF$
colData<I,5> = colData<I,5>:CRLF$
colData<I,6> = colData<I,6>:CRLF$
colData<I,7> = colData<I,7>:CRLF$
colData<I,8> = colData<I,8>:CRLF$
colData<I,9> = colData<I,9>:CRLF$
colData<I,10> = colData<I,10>:CRLF$
colData<I,11> = colData<I,11>:CRLF$
IF ThickMTool NE '' THEN
SDIndex += 1
SWAP 'æm' WITH 'um' in ThickUnits
SWAP '' WITH 'A' in ThickUnits
Freq = ''
IF ThickMFirst NE '' THEN Freq = 'First, '
IF ThickMFreq NE '' THEN Freq := ThickMFreq:', '
IF ThickMLast NE '' THEN Freq := 'Last'
IF ThickMSPC = '' THEN ThickMSPC = '0'
stepData<SDIndex,STEP_STEP$> = SDIndex
stepData<SDIndex,STEP_PROCESS_NAME$> = 'Epitaxy Layer ':I
stepData<SDIndex,STEP_MACHINE$> = ReactorType
stepData<SDIndex,STEP_PSN$> = PSNo
stepData<SDIndex,STEP_PRODUCT$> = CHAR(185):'Thickness'
stepData<SDIndex,STEP_PROCESS$> = 'Epi Growth'
stepData<SDIndex,STEP_SPEC_TOL$> = ThickMin:' - ':ThickMax:ThickUnits
stepData<SDIndex,STEP_EVAL_MEAS$> = ThickMTool
stepData<SDIndex,STEP_SIZE$> = ThickMType
stepData<SDIndex,STEP_FREQ$> = ThickMFreq
stepData<SDIndex,STEP_CTRL_METHOD$> = OCONV(ThickMSPC, 'BSPC,WI' )
stepData<SDIndex,STEP_REACT_PLAN$> = 'OCAP'
END
IF ResMTool NE '' THEN
SDIndex += 1
SWAP 'ê-cm' WITH 'ohm.cm' in ResUnits
SWAP 'ê/Ü' WITH 'ohm/sq' in ResUnits
IF ResMtype = 'Prod' THEN ResMType = '1 Prod Wafer'
Freq = ''
IF ResMFirst NE '' THEN Freq = 'First, '
IF ResMFreq NE '' THEN Freq := ResMFreq:', '
IF ResMLast NE '' THEN Freq := 'Last'
IF ResMSPC = '' THEN ResMSPC = '0'
stepData<SDIndex,STEP_STEP$> = SDIndex
stepData<SDIndex,STEP_PROCESS_NAME$> = 'Epitaxy Layer ':I
stepData<SDIndex,STEP_MACHINE$> = ReactorType
stepData<SDIndex,STEP_PSN$> = PSNo
stepData<SDIndex,STEP_PRODUCT$> = CHAR(185):'Resistivity'
stepData<SDIndex,STEP_PROCESS$> = 'Epi Growth'
stepData<SDIndex,STEP_SPEC_TOL$> = ResMin:' - ':ResMax:ResUnits
stepData<SDIndex,STEP_EVAL_MEAS$> = ResMTool
stepData<SDIndex,STEP_SIZE$> = ResMType
stepData<SDIndex,STEP_FREQ$> = ResMFreq
stepData<SDIndex,STEP_CTRL_METHOD$> = OCONV(ResMSPC,'BSPC,WI')
stepData<SDIndex,STEP_REACT_PLAN$> = 'OCAP'
END
IF ConMTool NE '' THEN
SDIndex += 1
SWAP 'ê-cm' WITH 'ohm.cm' in ConUnits
SWAP 'ê/Ü' WITH 'ohm/sq' in ConUnits
Freq = ''
IF ConMFirst NE '' THEN Freq = 'First, '
IF ConMFreq NE '' THEN Freq := ConMFreq:', '
IF ConMLast NE '' THEN Freq := 'Last'
IF ConMType = 'Prod' THEN ConMType = '1 Prod Wafer'
IF ConMTool = 'SRP' THEN
SpecTol = 'See Hard Copy Spec'
Product = 'SRP'
Frequency = 'Per Metrology'
END ELSE
SpecTol = ConMin:' - ':ConMax:ConUnits
Product = 'Conductivity'
Frequency = ConMFreq
END
IF ConMSPC = '' THEN ConMSPC = '0'
stepData<SDIndex,STEP_STEP$> = SDIndex
stepData<SDIndex,STEP_PROCESS_NAME$> = 'Epitaxy Layer ':I
stepData<SDIndex,STEP_MACHINE$> = ReactorType
stepData<SDIndex,STEP_PSN$> = PSNo
stepData<SDIndex,STEP_PRODUCT$> = Product
stepData<SDIndex,STEP_PROCESS$> = 'Epi Growth'
stepData<SDIndex,STEP_SPEC_TOL$> = SpecTol
stepData<SDIndex,STEP_EVAL_MEAS$> = ConMTool
stepData<SDIndex,STEP_SIZE$> = ConMType
stepData<SDIndex,STEP_FREQ$> = Frequency
stepData<SDIndex,STEP_CTRL_METHOD$> = OCONV(ConMSPC,'BSPC,WI')
stepData<SDIndex,STEP_REACT_PLAN$> = 'OCAP'
END
IF CResMTool NE '' THEN
SDIndex += 1
SWAP 'ê-cm' WITH 'ohm.cm' in CResUnits
SWAP 'ê/Ü' WITH 'ohm/sq' in CResUnits
IF CresMType = 'Prod' THEN CresMType = '1 Prod Wfr'
Freq = ''
IF CResMFirst NE '' THEN Freq = 'First, '
IF CResMFreq NE '' THEN Freq := CResMFreq:', '
IF CResMLast NE '' THEN Freq := 'Last'
IF CResMSPC = '' THEN CResMSPC = '0'
stepData<SDIndex,STEP_STEP$> = SDIndex
stepData<SDIndex,STEP_PROCESS_NAME$> = 'Epitaxy Layer ':I
stepData<SDIndex,STEP_MACHINE$> = ReactorType
stepData<SDIndex,STEP_PSN$> = PSNo
stepData<SDIndex,STEP_PRODUCT$> = 'CRes'
stepData<SDIndex,STEP_PROCESS$> = 'Epi Growth'
stepData<SDIndex,STEP_SPEC_TOL$> = CResMin:' - ':CResMax:CResUnits
stepData<SDIndex,STEP_EVAL_MEAS$> = CResMTool
stepData<SDIndex,STEP_SIZE$> = CResMType
stepData<SDIndex,STEP_FREQ$> = CResMFreq
stepData<SDIndex,STEP_CTRL_METHOD$> = OCONV(CResMSPC,'BSPC,WI')
stepData<SDIndex,STEP_REACT_PLAN$> = 'OCAP'
END
NEXT I
font<FONT_NAME$> = 'MS LineDraw'
font<FONT_SIZE$> = 8 ;* 10 point
font<FONT_BOLD$> = 0 ;* Bold
stat = Set_Printer('FONT',font)
stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
Font<FONT_BOLD$> = 0
Void = Set_Printer( 'FONT', Font )
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
stat = Set_Printer('TEXT')
Sigs = ''
* Process Steps
colHeader = 'Step':@VM ; colFormat = '^540':@VM
colHeader<1,2> = 'Process Name':@VM ; colFormat<1,2> = '<1440':@VM
colHeader<1,3> = 'Machine':@VM ; colFormat<1,3> = '<1080':@VM
colHeader<1,4> = 'PSN':@VM ; colFormat<1,4> = '^540':@VM
colHeader<1,5> = 'Product':@VM ; colFormat<1,5> = '^1440':@VM
colHeader<1,6> = 'Process':@VM ; colFormat<1,6> = '^1800':@VM
colHeader<1,7> = 'Spec Tolerance':@VM ; colFormat<1,7> = '<2160':@VM
colHeader<1,8> = 'Evaluation Meas':@VM ; colFormat<1,8> = '<1440':@VM
colHeader<1,9> = 'Size':@VM ; colFormat<1,9> = '^1080':@VM
colHeader<1,10> = 'Freq':@VM ; colFormat<1,10> = '^1080':@VM
colHeader<1,11> = 'Control':CRLF$:'Method' ; colFormat<1,11> = '^720'
colHeader<1,12> = 'React Plan' ; colFormat<1,12> = '^1080'
StepNo = 1
colData = ''
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Receiving'
colData<StepNo,STEP_MACHINE$> = 'Paperwork'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = 'Paperwork'
colData<StepNo,STEP_PROCESS$> = 'Manual'
colData<StepNo,STEP_SPEC_TOL$> = 'Consistent Data'
colData<StepNo,STEP_EVAL_MEAS$> = 'Visual'
colData<StepNo,STEP_SIZE$> = 'Shipment'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'Pass/Fail'
* * Pre Epi Cleaning and Inspection * *
SCSubOxide = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubOxide$>
SCAngstroms = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubOxideAngstroms$>
SCTool = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPreClean$>
SCToolRecipe = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPreAkrionRecipe$>
IF SCTool[1,2] _EQC 'NO' THEN SCTool = ''
SBrightLight = PSNRec<PROD_SPEC_PRE_BRIGHTLIGHT$>
SMicroscope = PSNRec<PROD_SPEC_PRE_MICROSCOPE$>
SSurfscan = PSNRec<PROD_SPEC_PRE_SURFSCAN$>
SSurfscanRecipe = PSNRec<PROD_SPEC_PRE_SURFSCAN_RECIPE$>
* Sub Oxide Strip
IF SCSubOxide = 1 THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'HF Strip'
colData<StepNo,STEP_MACHINE$> = 'HF'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = 'SC-1'
colData<StepNo,STEP_PROCESS$> = '20min or Dewet'
colData<StepNo,STEP_SPEC_TOL$> = 'NA'
colData<StepNo,STEP_EVAL_MEAS$> = 'HF'
colData<StepNo,STEP_SIZE$> = '1 Cass'
colData<StepNo,STEP_FREQ$> = 'All'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* Pre Clean - Done ******
IF SCTool NE '' OR SCToolRecipe NE '' THEN
IF SCTool = 'If Necessary' THEN SCTool = 'Akrion'
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Pre-epi Clean'
colData<StepNo,STEP_MACHINE$> = SCTool
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = 'Cleaning'
colData<StepNo,STEP_PROCESS$> = SCToolRecipe
colData<StepNo,STEP_SPEC_TOL$> = 'NA'
colData<StepNo,STEP_EVAL_MEAS$> = 'Visual'
colData<StepNo,STEP_SIZE$> = '1 Cass'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* Pre Brightlight - Done *****
IF SBrightLight = 1 THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Pre-epi Insp'
colData<StepNo,STEP_MACHINE$> = 'Brightlight'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = CHAR(185):"LPD's"
colData<StepNo,STEP_PROCESS$> = 'Visual'
colData<StepNo,STEP_SPEC_TOL$> = '<':PSNRec<PROD_SPEC_PRE_LPD$>
colData<StepNo,STEP_EVAL_MEAS$> = 'Brightlight'
colData<StepNo,STEP_SIZE$> = '1 Prod Wfr'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* Pre Microscope - Done *****
IF SMicroscope = 1 THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Pre-epi Insp'
colData<StepNo,STEP_MACHINE$> = 'Microscope'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = 'Surface Quality'
colData<StepNo,STEP_PROCESS$> = 'Visual'
colData<StepNo,STEP_SPEC_TOL$> = 'PSN:':PSNo:' - Surface Spec'
colData<StepNo,STEP_EVAL_MEAS$> = 'Microscope'
colData<StepNo,STEP_SIZE$> = '1 Prod Wfr'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* Pre Surface Scan - Done *****
IF SSurfscan = 1 OR SSurfscanRecipe NE '' THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Pre-epi Insp'
colData<StepNo,STEP_MACHINE$> = 'SurfScan'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = CHAR(185):"LPD's"
colData<StepNo,STEP_PROCESS$> = SSurfscanRecipe
colData<StepNo,STEP_SPEC_TOL$> = 'See Hard Copy Spec'
colData<StepNo,STEP_EVAL_MEAS$> = 'SurfScan'
colData<StepNo,STEP_SIZE$> = '1 Prod Wfr'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
FOR I = 1 TO SDIndex
StepNo += 1
colData<StepNo> = StepData<I>
colData<StepNo,STEP_STEP$> = StepNo
NEXT I
* * First/Last Wafer Cleaning and Inspection * *
Spec_FWI_LWI = PSNRec<PROD_SPEC_POST_FWI_LWI$> ;* FWI OR LWI
SCTool = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPostClean$>
SCToolRecipe = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPostAkrionRecipe$>
IF SCTool[1,2] _EQC 'NO' THEN SCTool = ''
IF SCToolRecipe[1,2] _EQC 'NO' THEN SCToolRecipe = ''
SBrightLight = PSNRec<PROD_SPEC_FIRST_BRIGHTLIGHT$>
SMicroscope = PSNRec<PROD_SPEC_FIRST_MICROSCOPE$>
SSurfscan = PSNRec<PROD_SPEC_FIRST_SURFSCAN$>
SSurfscanRecipe = PSNRec<PROD_SPEC_FIRST_SURFSCAN_RECIPE$>
* FirstWafer Brightlight - Done *****
IF Spec_FWI_LWI = 'LWI' THEN
ProcessName = 'Last Wafer Insp'
END ELSE
ProcessName = 'First Wafer Insp'
END
IF SBrightLight = 1 THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = ProcessName
colData<StepNo,STEP_MACHINE$> = 'Brightlight'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = CHAR(185):"LPD's"
colData<StepNo,STEP_PROCESS$> = 'Visual'
colData<StepNo,STEP_SPEC_TOL$> = '<':PSNRec<PROD_SPEC_POST_LPD$>
colData<StepNo,STEP_EVAL_MEAS$> = 'Brightlight'
colData<StepNo,STEP_SIZE$> = '1 Prod Wfr'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* FirstWafer Microscope - Done *****
IF SMicroscope = 1 THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = ProcessName
colData<StepNo,STEP_MACHINE$> = 'Microscope'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = 'Surface Quality'
colData<StepNo,STEP_PROCESS$> = 'Visual'
colData<StepNo,STEP_SPEC_TOL$> = 'PSN:':PSNo:' - Surface Spec'
colData<StepNo,STEP_EVAL_MEAS$> = 'Microscope'
colData<StepNo,STEP_SIZE$> = '1 Prod Wfr'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* First SurfScan - Done *****
IF SSurfscan = 1 OR SSurfscanRecipe NE '' THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = ProcessName
colData<StepNo,STEP_MACHINE$> = 'SurfScan'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = CHAR(185):"LPD's"
colData<StepNo,STEP_PROCESS$> = SSurfscanRecipe
colData<StepNo,STEP_SPEC_TOL$> = 'See Hard Copy Spec'
colData<StepNo,STEP_EVAL_MEAS$> = 'Surf Scan'
colData<StepNo,STEP_SIZE$> = '1 Prod Wfr'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* * Post Epi Cleaning and Inspection * *
SBrightLight = PSNRec<PROD_SPEC_POST_CLEAN_BRIGHTLIGHT$>
SSurfscan = PSNRec<PROD_SPEC_POST_CLEAN_SURFSCAN$>
SSurfscanRecipe = PSNRec<PROD_SPEC_POST_CLEAN_SURFSCAN_RECIPE$>
SCTool = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPostClean$>
SCToolRecipe = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubPostAkrionRecipe$>
FirstLPDLimit = PSNRec<PROD_SPEC_POST_LPD$>
* Post Cleaning - Done *****
IF SCTool NE '' OR SCToolRecipe NE '' THEN
IF SCTool = 'If Necessary' THEN Process = 'Akrion'
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Post-epi Clean'
colData<StepNo,STEP_MACHINE$> = SCTool
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = 'Cleaning'
colData<StepNo,STEP_PROCESS$> = SCToolRecipe
colData<StepNo,STEP_SPEC_TOL$> = 'NA'
colData<StepNo,STEP_EVAL_MEAS$> = 'Visual'
colData<StepNo,STEP_SIZE$> = '1 Cass'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* Post Epi Brightlight - Done ****
IF SBrightLight = 1 THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Post-epi Insp'
colData<StepNo,STEP_MACHINE$> = 'Brightlight'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = CHAR(185):"LPD's"
colData<StepNo,STEP_PROCESS$> = 'Visual'
colData<StepNo,STEP_SPEC_TOL$> = '<':FirstLPDLimit
colData<StepNo,STEP_EVAL_MEAS$> = 'Brightlight'
colData<StepNo,STEP_SIZE$> = '1 Prod Wfr'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
* Post Epi SurfScan - Not found below!
IF SSurfscan = 1 OR SSurfscanRecipe NE '' THEN
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Post-epi Insp'
colData<StepNo,STEP_MACHINE$> = 'SurfScan'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = CHAR(185):"LPD's"
colData<StepNo,STEP_PROCESS$> = SSurfscanRecipe
colData<StepNo,STEP_SPEC_TOL$> = 'See Hard Copy Spec'
colData<StepNo,STEP_EVAL_MEAS$> = 'SurfScan'
colData<StepNo,STEP_SIZE$> = PSNRec<PROD_SPEC_POST_CLEAN_SS_SAMP_QTY$>
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'OCAP'
END
StepNo += 1
colData<StepNo,STEP_STEP$> = StepNo
colData<StepNo,STEP_PROCESS_NAME$> = 'Shipping'
colData<StepNo,STEP_MACHINE$> = 'Paperwork'
colData<StepNo,STEP_PSN$> = PSNo
colData<StepNo,STEP_PRODUCT$> = 'Paperwork'
colData<StepNo,STEP_PROCESS$> = 'Manual'
colData<StepNo,STEP_SPEC_TOL$> = 'Consistent Data'
colData<StepNo,STEP_EVAL_MEAS$> = 'Visual'
colData<StepNo,STEP_SIZE$> = 'Shipment'
colData<StepNo,STEP_FREQ$> = 'Per Cass'
colData<StepNo,STEP_CTRL_METHOD$> = 'WI'
colData<StepNo,STEP_REACT_PLAN$> = 'Pass/Fail'
Font = 'Arial'
Font<FONT_JUST$> = 'L'
Font<FONT_SIZE$> = 8
Font<FONT_UNDERLINE$> = 0
Font<FONT_BOLD$> = 0
Void = Set_Printer( 'FONT', Font )
stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
***************************************************
stat = Set_Printer("CALCTEXT",CHAR(185):'Note: Special Characteristics')
noteSize = Get_Printer("CALCTEXT")
noteWidth = noteSize<1>
noteHeight = noteSize<2>
stat = Set_Printer('TEXT')
stat = Set_Printer('TEXT',CHAR(185):'Note: Special Characteristics')
stat = Set_Printer('TEXT')
SpecialInst = PSNRec<PROD_SPEC_SPEC_SUBSTRATE$,QSSubInstructions$>
ProveinInst = PSNRec<PROD_SPEC_SPEC_ADDTL$,QSAddProveInInst$>
SWAP @TM WITH CRLF$ IN SpecialInst
SWAP @TM WITH CRLF$ IN ProveInInst
colHeader = 'Special Instructions'
colFmt = '^14400'
colData = SpecialInst
stat = Set_Printer('CALCTABLE',colFmt:@FM:colData)
TableSize = Get_Printer('CALCTABLE')
TableHeight = TableSize<2>
CurrY = Get_Printer('POS')<2>
IF CurrY + noteHeight + TableHeight > MaxPrintHeight THEN
stat = Set_Printer('PAGEBREAK')
END
Font<2> = 10
Font<4> = 0
Void = Set_Printer( 'FONT', Font )
stat = Set_Printer('ADDTABLE', colFmt,colHeader,'',LTGREY$,'',0,TB_ALL)
colFmt = '<14400'
stat = Set_Printer('ADDTABLE',colFmt,'',colData,LTGREY$,'',1,TB_ALL)
stat = Set_Printer('TEXT')
colHeader = 'Prove-In Instructions'
colFmt = '^14400'
colData = ProveinInst
stat = Set_Printer('CALCTABLE',colFmt:@FM:colData)
TableSize = Get_Printer('CALCTABLE')
TableHeight = TableSize<2>
CurrY = Get_Printer('POS')<2>
IF CurrY + noteHeight + TableHeight > MaxPrintHeight THEN
stat = Set_Printer('PAGEBREAK')
END
Font<2> = 10
Font<4> = 0
Void = Set_Printer( 'FONT', Font )
stat = Set_Printer('ADDTABLE', colFmt,colHeader,'',LTGREY$,colData,0,TB_ALL)
colFmt = '<14400'
stat = Set_Printer('ADDTABLE',colFmt,'',colData,LTGREY$,'',1,TB_ALL)
stat = set_printer( 'TERM' )
RETURN