COMPILE SUBROUTINE Print_RDS_Instruction(RDSNo) DECLARE FUNCTION Set_Printer, Get_Printer, Printer_Select, obj_Prod_Spec $INSERT OIPRINT_EQUATES $INSERT MSG_EQUATES $INSERT QUOTE_SPEC_EQU $INSERT PROD_SPEC_EQUATES $INSERT RDS_EQU $INSERT RECIPE_EQU $INSERT RDS_LAYER_EQUATES $INSERT RDS_TEST_EQUATES $INSERT PRS_LAYER_EQU $INSERT APPCOLORS 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 IF RDSNo = '' THEN RETURN RDSRec = XLATE('RDS',RDSNo,'','X') PSNo = RDSRec WONo = RDSRec PSNRec = XLATE( 'PROD_SPEC', PSNo, '', 'X' ) SpecSubInfo = PSNRec SpecialInst = SpecSubInfo<1,QSSubInstructions$> Orientation = SpecSubInfo<1,QSSubOrientation$> ProdType = SpecSubInfo<1,QSSubType$> SpecAddtl = PSNRec ProveinInst = SpecAddtl<1,QSAddProveInInst$> SWAP @TM WITH CRLF$ IN SpecialInst SWAP @TM WITH CRLF$ IN ProveInInst PSNLayerProps = obj_Prod_Spec('GetLayerProp',PSNo) LSIDs = '' Dopants = '' colData = '' FOR I = 1 TO COUNT(PSNLayerProps,@RM) + (PSNLayerProps NE '') LayerSet = FIELD(PSNLayerProps,@RM,I) LSIDs = LayerSet<1> LayerSet = FIELD(LayerSet,@FM,2,99) Dopants<1,I> = LayerSet IF I = 1 THEN RecipeNo = LayerSet RecipeRec = XLATE('RECIPE',RecipeNo,'','X') RecipeName = RecipeRec CapGas = RecipeRec EpiGas = RecipeRec BEGIN CASE CASE EpiGas = 'SiH4' ; EpiGasName = 'Silane' CASE EpiGas = 'SiH2CL2' ; EpiGasName = 'DiChloroSilane (DCS)' CASE EpiGas = 'SiH1HCL3' ; EpiGasName = 'TriChloroSilane (TCS)' CASE 1 ; EpiGasName = '' END CASE BEGIN CASE CASE CapGas = 'SiH4' ; CapGasName = 'Silane' CASE CapGas = 'SiH2CL2' ; CapGasName = 'DiChloroSilane (DCS)' CASE CapGas = 'SiH1HCL3' ; CapGasName = 'TriChloroSilane (TCS)' CASE 1 ; CapGasName = '' END CASE colData = PSNo colData = Recipename colData = EpiGas colData = CapGas colData = Orientation colData = ProdType END LSIDs = RDSNo:'*':LSIDs NEXT I PrinterID = '' PrintPath = Printer_Select(PrinterID,1) ;* Get Default printer path Stat = Set_Printer( 'INIT', '', '', .25:@FM:.75:@FM:.25:@FM:.75, 0 ,'' ,PrintPath) ;* No Preview font = 'Arial' ;* Font basics font<2> = 10 font<4> = 0 stat = Set_Printer('FONTHEADFOOT', font) stat = Set_Printer('FOOTER',"Page 'P'":@VM:'Instructions for WO No. ':WONo:@VM:"'T' 'D'") Font = 'Arial' Font = 18 Font = 'C' Font = 1 ;* Bold Font = 1 ;* Underlline Stat = set_printer( 'FONT', Font ) Void = set_printer( 'TEXT', 'Instructions for WO No. ':WONo ) stat = Set_Printer('TEXT') ;* blank line Font = 'L' Font = 10 Font = 0 colHeader = 'Prod Spec No' ; colFormat = '^2520' colHeader<1,2> = 'Recipe' ; colFormat<1,2> = '^1800' colHeader<1,3> = 'Epi Gas' ; colFormat<1,3> = '^1800' colHeader<1,4> = 'Cap Gas' ; colFormat<1,4> = '^1800' colHeader<1,5> = 'Prod Orientation' ; colFormat<1,5> = '^1800' colHeader<1,6> = 'Prod Type' ; colFormat<1,6> = '^1800' font = 10 ;* 10 point font = 1 ;* Bold stat = Set_Printer('FONT',font) stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_COLUMNS_TOP_BOTTOM) Font = 9 Font = 0 Void = Set_Printer( 'FONT', Font ) stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_COLUMNS_TOP_BOTTOM) stat = Set_Printer('TEXT') colHeader = 'LS':CRLF$:'Id':@VM ; colFormat = '^540':@VM colHeader<1,2> = 'Dopant':@VM ; colFormat<1,2> = '^1260':@VM colHeader<1,3> = 'Measure':@VM ; colFormat<1,3> = '<1440':@VM colHeader<1,4> = 'Minimum':@VM ; colFormat<1,4> = '^1260':@VM colHeader<1,5> = 'Target':@VM ; colFormat<1,5> = '^1260':@VM colHeader<1,6> = 'Maximum':@VM ; colFormat<1,6> = '^1260':@VM colHeader<1,7> = 'Tool':@VM ; colFormat<1,7> = '<720':@VM colHeader<1,8> = 'Monitor Type':@VM ; colFormat<1,8> = '<990':@VM colHeader<1,9> = 'Recipe':@VM ; colFormat<1,9> = '<1260':@VM colHeader<1,10> = 'Frq':@VM ; colFormat<1,10> = '^540':@VM colHeader<1,11> = 'ProveIn Type' ; colFormat<1,11> = '<990' LayerCnt = COUNT(LSIDs,@FM) + (LSIDs NE '') colData = '' FOR I = 1 TO LayerCnt LSKey = LSIDs LayerRec = XLATE('RDS_LAYER',LSKey,'','X') FirstTestKey = LayerRec TestRec = XLATE('RDS_TEST',FirstTestKey,'','X') ThickMin = TestRec ThickTarget = TestRec ThickMax = TestRec ThickUnits = TestRec ThickMTool = TestRec ThickMType = TestRec ThickMPIType = TestRec ThickMRecipe = TestRec ThickMFreq = TestRec ResMin = TestRec ResTarget = TestRec ResMax = TestRec ResUnits = TestRec ResMTool = TestRec ResMType = TestRec ResMPIType = TestRec ResMRecipe = TestRec ResMFreq = TestRec IF I = 1 THEN FirstResUnits = ResUnits ConMin = TestRec ConTarget = TestRec ConMax = TestRec ConUnits = TestRec ConMTool = TestRec ConMType = TestRec ConMPIType = TestRec ConMRecipe = TestRec ConMFreq = TestRec colData = FIELD(LSKey,'*',2):CRLF$ colData = Dopants<1,I>:CRLF$ colData = 'Thickness':CRLF$:'Resistivity' colData = OCONV(ThickMin,'MD2'):ThickUnits:CRLF$:OCONV(ResMin,'MD3'):ResUnits colData = OCONV(ThickTarget,'MD2'):ThickUnits:CRLF$:OCONV(ResTarget,'MD3'):ResUnits colData = OCONV(ThickMax,'MD2'):ThickUnits:CRLF$:OCONV(ResMax,'MD3'):ResUnits colData = ThickMTool:CRLF$:ResMTool colData = ThickMType:CRLF$:ResMType colData = ThickMRecipe:CRLF$:ResMRecipe colData = ThickMFreq:CRLF$:ResMFreq colData = ThickMPIType:CRLF$:ResMPIType IF ConTarget NE '' THEN colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$:'Concentration' colData = colData:CRLF$:OCONV(ConMin,'MS21'):ConUnits colData = colData:CRLF$:OCONV(ConTarget,'MS21'):ConUnits colData = colData:CRLF$:OCONV(ConMax,'MS21'):ConUnits colData = colData:CRLF$:ConMTool colData = colData:CRLF$:ConMType colData = colData:CRLF$:ConMRecipe colData = colData:CRLF$:ConMFreq colData = colData:CRLF$:ConMPIType END ELSE colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ colData = colData:CRLF$ END NEXT I font = 'MS LineDraw' font = 8 ;* 10 point font = 1 ;* Bold stat = Set_Printer('FONT',font) stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_COLUMNS_TOP_BOTTOM) Font = 0 Void = Set_Printer( 'FONT', Font ) stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_COLUMNS_TOP_BOTTOM) stat = Set_Printer('TEXT') font = 0 ;* Bold off stat = Set_Printer('FONT',font) Dopant = XLATE('PROD_SPEC',PSNo,'DOPANT_ALL','X') Font = 'Arial' Font = 14 Font = 'L' Font = 0 Void = set_printer( 'TEXT', '' ) Void = set_printer( 'FONT', Font ) Void = set_printer( 'TEXT', 'Special Instructions:' ) Table = '' Table<-1> = SpecialInst TableColInfo = '<+11520' Font<2> = 12 Font<4> = 0 Void = set_printer( 'FONT', Font ) x = Set_Printer("ADDTABLE", TableColInfo, '', Table, '', '', 0, TB_ALL) Void = set_printer( 'TEXT', '' ) Font<2> = 14 Font<3> = 'L' Font<4> = 1 Font<6> = 0 Void = set_printer( 'TEXT', '' ) Void = set_printer( 'FONT', Font ) Void = set_printer( 'TEXT', 'Prove-In Instructions:' ) Table = '' Table<-1> = ProveinInst TableColInfo = '<+11520' Font<2> = 12 Font<4> = 0 Void = set_printer( 'FONT', Font ) x = Set_Printer("ADDTABLE", TableColInfo, '', Table, '', '', 0, TB_ALL) Void = set_printer( 'TEXT', '' ) Font<2> = 14 Font<3> = 'L' Font<4> = 1 Void = set_printer( 'FONT', Font ) Void = set_printer( 'TEXT', 'Recipe Limits' ) Font<2> = 12 Font<4> = 0 Void = set_printer( 'FONT', Font ) colHeader = 'LS Id' ; colFormat = '^1080' colHeader<1,2> = 'Deposit' ; colFormat<1,2> = '^+1440' colHeader<1,3> = 'Diluent' ; colFormat<1,3> = '^+1440' colHeader<1,4> = 'Dopant Flow' ; colFormat<1,4> = '^+1440' colHeader<1,5> = 'HCL Flow' ; colFormat<1,5> = '^+1440' colHeader<1,6> = 'Bake Time' ; colFormat<1,6> = '^+1440' colData = '' LayerCnt = COUNT(LSIDs,@FM) + (LSIDs NE '') FOR I = 1 TO LayerCnt LSKey = LSIDs colData = FIELD(LSKey,'*',2) colData = XLATE('RDS_LAYER',LSKey,'EPI_TIME_LIMITS','X') colData = XLATE('RDS_LAYER',LSKey,'DILUENT_LIMITS','X') colData = XLATE('RDS_LAYER',LSKey,'DOPANT_FLOW_LIMITS','X') colData = XLATE('RDS_LAYER',LSKey,'HCL_FLOW_LIMITS','X') colData = XLATE('RDS_LAYER',LSKey,'BAKE_TIME_LIMITS','X') NEXT I font = 8 ;* 10 point font = 1 ;* Bold stat = Set_Printer('FONT',font) stat = Set_Printer('CALCTABLE',colFormat:@FM:colData) TableSize = Get_Printer('CALCTABLE') TableHeight = TableSize<2> Test = Get_Printer('POS')<2> IF Get_Printer('POS')<2> + TableHeight > 7.0 THEN stat = Set_Printer('PAGEBREAK') END stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_COLUMNS_TOP_BOTTOM) Font = 8 Font = 0 Void = Set_Printer( 'FONT', Font ) stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_COLUMNS_TOP_BOTTOM) colHeader = 'LS Id' ; colFormat = '^1080' colHeader<1,2> = 'H2 Flow' ; colFormat<1,2> = '^+1440' colHeader<1,3> = 'TCS Flow' ; colFormat<1,3> = '^+1440' colHeader<1,4> = 'DCS Flow' ; colFormat<1,4> = '^+1440' colHeader<1,5> = 'Aux 1 Flow' ; colFormat<1,5> = '^+1440' colHeader<1,6> = 'Aux 2 Flow' ; colFormat<1,6> = '^+1440' colData = '' LayerCnt = COUNT(LSIDs,@FM) + (LSIDs NE '') FOR I = 1 TO LayerCnt LSKey = LSIDs colData = FIELD(LSKey,'*',2) colData = XLATE('RDS_LAYER',LSKey,'EPI_H2_FLOW_LIMITS','X') colData = XLATE('RDS_LAYER',LSKey,'TCS_FLOW_LIMITS','X') colData = XLATE('RDS_LAYER',LSKey,'DCS_FLOW_LIMITS','X') colData = XLATE('RDSLayer',LSKey,'AUX1_LIMITS','X') colData = XLATE('RDSLayer',LSKey,'AUX2_LIMITS','X') NEXT I font = 8 ;* 10 point font = 1 ;* Bold stat = Set_Printer('FONT',font) stat = Set_Printer('CALCTABLE',colFormat:@FM:colData) TableSize = Get_Printer('CALCTABLE') TableHeight = TableSize<2> Test = Get_Printer('POS')<2> IF Get_Printer('POS')<2> + TableHeight > 7.0 THEN stat = Set_Printer('PAGEBREAK') END stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_COLUMNS_TOP_BOTTOM) Font = 8 Font = 0 Void = Set_Printer( 'FONT', Font ) stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_COLUMNS_TOP_BOTTOM) colHeader = 'LS Id' ; colFormat = '^1080' colHeader<1,2> = 'F Offset' ; colFormat<1,2> = '^+1440' colHeader<1,3> = 'S Offset' ; colFormat<1,3> = '^+1440' colHeader<1,4> = 'R Offset' ; colFormat<1,4> = '^+1440' colHeader<1,5> = 'Etch 1' ; colFormat<1,5> = '^+1440' colHeader<1,6> = 'Etch 2' ; colFormat<1,6> = '^+1440' colHeader<1,7> = 'Etch 3' ; colFormat<1,7> = '^+1440' colData = '' LayerCnt = COUNT(LSIDs,@FM) + (LSIDs NE '') FOR I = 1 TO LayerCnt LSKey = LSIDs colData = FIELD(LSKey,'*',2) colData = XLATE('RDSLayer',LSKey,'F_OFFSET_LIMITS','X') colData = XLATE('RDSLayer',LSKey,'S_OFFSET_LIMITS','X') colData = XLATE('RDSLayer',LSKey,'R_OFFSET_LIMITS','X') colData = XLATE('RDSLayer',LSKey,'ETCH1_LIMITS','X') colData = XLATE('RDSLayer',LSKey,'ETCH2_LIMITS','X') colData = XLATE('RDSLayer',LSKey,'ETCH3_LIMITS','X') NEXT I font = 1 ;* Bold stat = Set_Printer('FONT',font) stat = Set_Printer('CALCTABLE',colFormat:@FM:colData) TableSize = Get_Printer('CALCTABLE') TableHeight = TableSize<2> Test = Get_Printer('POS')<2> IF Get_Printer('POS')<2> + TableHeight > 7.0 THEN stat = Set_Printer('PAGEBREAK') END stat = Set_Printer('ADDTABLE', colFormat,colHeader,'',LTGREY$,'',0,TB_COLUMNS_TOP_BOTTOM) Font = 0 Void = Set_Printer( 'FONT', Font ) stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_COLUMNS_TOP_BOTTOM) stat = set_printer( 'TERM' ) RETURN 0