added LSL2 stored procedures
This commit is contained in:
919
LSL2/STPROC/PRINT_CUST_RDS.txt
Normal file
919
LSL2/STPROC/PRINT_CUST_RDS.txt
Normal file
@ -0,0 +1,919 @@
|
||||
COMPILE SUBROUTINE Print_Cust_Rds( RdsIds, WMOutKeys, PrintOnly, PrintPath, PDFFileName, PrinterInitialized, HideUI)
|
||||
|
||||
$INSERT COMPANY_EQU
|
||||
$INSERT COC_EQU
|
||||
$INSERT EMAIL_PENDING_EQU
|
||||
$INSERT LOGICAL
|
||||
$INSERT MSG_EQUATES
|
||||
$INSERT RDS_EQU
|
||||
$INSERT RDS_LAYER_INFO_EQU
|
||||
$INSERT PROD_SPEC_EQUATES
|
||||
$INSERT QUOTE_EQU
|
||||
$INSERT QUOTE_SPEC_EQU
|
||||
$INSERT OIPRINT_EQUATES
|
||||
$INSERT NCR_EQU
|
||||
$INSERT WO_LOG_EQUATES
|
||||
$INSERT CUST_EPI_PART_EQUATES
|
||||
|
||||
$INSERT POPUP_EQUATES
|
||||
$INSERT COA
|
||||
|
||||
$INSERT RDS_TEST_EQUATES
|
||||
$INSERT RDS_LAYER_EQUATES
|
||||
|
||||
$INSERT WO_MAT_EQUATES
|
||||
$INSERT SURFACE_SCAN_EQUATES
|
||||
|
||||
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 LTGREY$ TO 229 + (229*256) + (229*65536)
|
||||
|
||||
DECLARE FUNCTION FieldCount, Msg, Set_Printer, Get_Printer, obj_RDS_Test
|
||||
DECLARE FUNCTION Printer_Select, obj_Install,obj_RDS
|
||||
DECLARE SUBROUTINE extract_si_keys, record_lock, Btree.Extract
|
||||
|
||||
*
|
||||
* IF THE PSN FOR RdsIds<1> SAYS TO PRINT ON CLEANROOM PAPER THEN GIVE A MESSAGE
|
||||
* THE REASON FOR JUST CHECKING THE FIRST RDS-PSN IS THAT THE USER CAN ONLY PERFORM
|
||||
* A SHIPMENT ON ONE WORK ORDER AT A TIME
|
||||
|
||||
|
||||
IF NOT(ASSIGNED(PrintPath)) THEN PrintPath = ''
|
||||
IF NOT(ASSIGNED(PDFFileName)) THEN PDFFileName = ''
|
||||
IF NOT(ASSIGNED(PrinterInitialized)) THEN PrinterInitialized = 0
|
||||
|
||||
If Assigned(HideUI) else HideUI = False$
|
||||
If HideUI NE True$ then HideUI = False$
|
||||
|
||||
RDSCnt = COUNT(RdsIds,@FM) + (RdsIds NE '')
|
||||
|
||||
WONo = XLATE( 'RDS', RdsIds<1>, rds_wo$, 'X' )
|
||||
|
||||
WORec = XLATE('WO_LOG',WONo,'','X')
|
||||
|
||||
CustNo = WORec<WO_LOG_CUST_NO$>
|
||||
EpiPartNO = WORec<WO_LOG_EPI_PART_NO$>
|
||||
|
||||
CustEpiPartRec = XLATE('CUST_EPI_PART',CustNo:'*':EpiPartNo,'','X')
|
||||
|
||||
CleanRoomPaper = CustEpiPartRec<CUST_EPI_PART_CUST_RDS_CLEANROOM_PAPER$>
|
||||
MakeupWaferFlag = CustEpiPartRec<CUST_EPI_PART_MAKEUP_WAFERS$>
|
||||
|
||||
IF CleanRoomPaper THEN
|
||||
MsgInfo = ''
|
||||
Mtext = "This customer's specification requires cleanroom paper RDSs":CrLf$:'Please place ':RDSCnt:' piece(s) of cleanroom paper in the printer and then click OK'
|
||||
MsgInfo<mtext$> = Mtext
|
||||
MsgInfo<micon$> = '!'
|
||||
If HideUI EQ False$ then Void = msg( '', MsgInfo )
|
||||
END
|
||||
|
||||
PSNId = XLATE( 'RDS', RdsIds<1>, rds_prod_spec_id$, 'X' )
|
||||
PSRec = XLATE( 'PROD_SPEC', PSNId, '' , 'X' )
|
||||
|
||||
|
||||
|
||||
|
||||
* * * PRINT SETUP * * *
|
||||
|
||||
|
||||
FileName = 'Print Customer Run Data Sheet'
|
||||
Title = 'Print Customer Run Data Sheet'
|
||||
|
||||
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
|
||||
|
||||
MaxPrintLength = 11 - PageInfo<PI$TOP> - PageInfo<PI$BOTTOM>
|
||||
|
||||
PageSetup = 0 ;* 1 = Landscape mode
|
||||
PrintSetup = 0 ;* 0 = No Preview, 2 = Preview
|
||||
|
||||
FOR RD = 1 TO RDSCnt
|
||||
|
||||
RdsId = RdsIds<RD>
|
||||
RdsRec = XLATE( 'RDS', RdsId, '', 'X' )
|
||||
|
||||
Def = ''
|
||||
Def<MTEXT$> = 'Printing Cust RDS sheet ':RD:' of ':RDSCnt:' ':RdsID
|
||||
Def<MTYPE$> = 'U'
|
||||
|
||||
If HideUI EQ False$ then MsgUp = Msg(@WINDOW, Def)
|
||||
|
||||
CustID = RdsRec<rds_cust_no$>
|
||||
|
||||
IF NOT(PrinterInitialized) THEN
|
||||
|
||||
PrintSetup = ''
|
||||
PrintSetup<1,1> = '2' ;* Specific Location
|
||||
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)
|
||||
END ELSE
|
||||
stat = Set_Printer('PAGEBREAK')
|
||||
END
|
||||
|
||||
GOSUB EpitronicsStandard
|
||||
|
||||
If HideUI EQ False$ then Msg(@WINDOW,MsgUp)
|
||||
|
||||
IF NOT(PrinterInitialized) THEN
|
||||
stat = set_printer( 'TERM' )
|
||||
END
|
||||
NEXT RD
|
||||
|
||||
RETURN
|
||||
|
||||
* * * * * *
|
||||
EpitronicsStandard:
|
||||
* * * * * *
|
||||
|
||||
|
||||
font = 'Arial' ;* Font basics
|
||||
font<2> = 10
|
||||
font<4> = 0
|
||||
|
||||
stat = Set_Printer('FONTHEADFOOT', font)
|
||||
|
||||
font = 'Arial'
|
||||
font<2> = '18' ;* Big type
|
||||
font<4> = 1 ;* Bold on
|
||||
font<5> = 1 ;* Italics
|
||||
|
||||
stat = Set_Printer('TEXTXY','Run Data Sheet',2.65:@FM:-0.80,font,0)
|
||||
|
||||
font<2> = 12 ;* Drop the font size
|
||||
font<5> = 0 ;* Italics off
|
||||
|
||||
IF NOT(PrinterInitialized) THEN
|
||||
stat = Set_Printer('FOOTER',"Page 'P'":@VM:@VM:"'T' 'D'")
|
||||
|
||||
stat = Set_Printer('LINESTYLE', PS_SOLID:@FM:2)
|
||||
stat = Set_Printer('LINE', -0.1:@FM:-1.2:@FM:7.5:@FM:-1.2, 1)
|
||||
stat = Set_Printer('LINE', -0.1:@FM:-0.1:@FM:7.5:@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)
|
||||
|
||||
* * * * 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,5.7:@FM:-1.15,font,1)
|
||||
stat = Set_Printer('TEXTXY',Division,5.7:@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'), 5.7:@fm:-0.775, font,1)
|
||||
stat = Set_Printer('TEXTXY',obj_Install('Get_Prop','CSZC'), 5.7:@fm:-0.625, font,1)
|
||||
stat = Set_Printer('TEXTXY','Tel: ':obj_Install('Get_Prop','Phone'), 5.7:@fm:-0.475, font, 1)
|
||||
stat = Set_Printer('TEXTXY','FAX: ':obj_Install('Get_Prop','FAX'), 5.7:@fm:-0.325, font, 1)
|
||||
|
||||
* * * * End of changes 10/8/2015 JCH * * * *
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
END
|
||||
|
||||
colFormat = '>1080'
|
||||
colFormat<1,2> = '<4320'
|
||||
colFormat<1,3> = '>1440'
|
||||
colFormat<1,4> = '<3600'
|
||||
|
||||
colData = 'Run No:' ; colData<1,2> = RdsRec<rds_reactor$>:'-':RdsId
|
||||
colData<2,1> = 'RDS No:' ; colData<2,2> = RdsId
|
||||
colData<3,1> = 'Date:' ; colData<3,2> = OCONV(RdsRec<rds_date_out$>, 'D4/')
|
||||
colData<4,1> = 'Reactor:' ; colData<4,2> = RdsRec<rds_reactor$>
|
||||
colData<5,1> = 'Customer:' ; colData<5,2> = OCONV( RdsRec<rds_cust_no$>, '[XLATE_CONV,COMPANY*CO_NAME]' )
|
||||
|
||||
colData<1,3> = 'PO No:' ; colData<1,4> = RdsRec<rds_po$>
|
||||
colData<2,3> = 'WO No:' ; colData<2,4> = RdsRec<rds_wo$>
|
||||
colData<3,3> = 'Cust Part No:' ; colData<3,4> = RdsRec<rds_part_num$>
|
||||
colData<4,3> = 'Lot No:' ; colData<4,4> = RdsRec<rds_lot_num$>
|
||||
colData<5,3> = 'Recipe:' ; colData<5,4> = XLATE('RDS',RdsId,'RECIPE_NAME','X')
|
||||
|
||||
font<2> = 10
|
||||
font<4> = 0
|
||||
stat = Set_Printer('FONT',font)
|
||||
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_NONE)
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
ProdSpecID = RdsRec<rds_prod_spec_id$>
|
||||
ProdSpecRec = XLATE('PROD_SPEC',ProdSpecID,'','X')
|
||||
Dopant = ProdSpecRec<prod_spec_spec_epi$,QSEpiDopant$>
|
||||
Type = ''
|
||||
BEGIN CASE
|
||||
CASE INDEX(Dopant,'Ars',1)
|
||||
Dopant = 'Arsine'
|
||||
Type = 'N'
|
||||
|
||||
CASE INDEX(Dopant,'Pho',1)
|
||||
Dopant = 'Phosphine'
|
||||
Type = 'N'
|
||||
|
||||
CASE INDEX(Dopant,'Bor',1)
|
||||
Dopant = 'Boron'
|
||||
Type = 'P'
|
||||
|
||||
END CASE
|
||||
|
||||
|
||||
IF Type NE '' OR Dopant NE '' THEN
|
||||
|
||||
colHeader = 'Epitaxial Specifiation' ; colFormat = '<4320'
|
||||
colHeader<1,2> = 'Spec' ; colFormat<1,2> = '<3240'
|
||||
colHeader<1,3> = 'Supplier Comment' ; colFormat<1,3> = '<3240'
|
||||
|
||||
colData = 'Type' ; colData<1,2> = Type
|
||||
colData<2,1> = 'Dopant' ; colData<2,2> = Dopant
|
||||
|
||||
|
||||
font<2> = 10
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
END
|
||||
|
||||
colHeader = '' ; colFormat = '<4320'
|
||||
colHeader<1,2> = 'Minimum' ; colFormat<1,2> = '^2160'
|
||||
colHeader<1,3> = 'Target' ; colFormat<1,3> = '^2160'
|
||||
colHeader<1,4> = 'Maximum' ; colFormat<1,4> = '^2160'
|
||||
|
||||
colData = ''
|
||||
colData<1,1> = 'Thickness'
|
||||
colData<2,1> = 'Resistivity'
|
||||
colData<3,1> = 'Concentration'
|
||||
|
||||
ThickMin = XLATE('RDS',RDSId,'THICK_MIN','X') ;*RdsRec<rds_thick_min$>
|
||||
ThickTarget = XLATE('RDS',RDSId,'THICK_TARGET','X') ;*RdsRec<rds_thick_target$>
|
||||
ThickMax = XLATE('RDS',RDSId,'THICK_MAX','X') ;*RdsRec<rds_thick_max$>
|
||||
ThickUnits = XLATE('RDS',RDSId,'THICK_UNITS','X') ;*RdsRec<rds_thick_units$>
|
||||
|
||||
ResMin = XLATE('RDS',RDSId,'RES_MIN','X') ;*RdsRec<rds_res_min$>
|
||||
ResTarget = XLATE('RDS',RDSId,'RES_TARGET','X') ;*RdsRec<rds_res_target$>
|
||||
ResMax = XLATE('RDS',RDSId,'RES_MAX','X') ;*RdsRec<rds_res_max$>
|
||||
ResUnits = XLATE('RDS',RDSId,'RES_UNITS','X') ;*RdsRec<rds_res_units$>
|
||||
|
||||
ConMin = XLATE('RDS',RDSId,'CON_MIN','X') ;*RdsRec<rds_con_min$,2>
|
||||
ConTarget = XLATE('RDS',RDSId,'CON_TARGET','X') ;*RdsRec<rds_con_target$,1>
|
||||
ConMax = XLATE('RDS',RDSId,'CON_MAX','X') ;*RdsRec<rds_con_max$,2>
|
||||
ConUnits = XLATE('RDS',RDSId,'CON_UNITS','X') ;*RdsRec<rds_con_units$>
|
||||
|
||||
|
||||
colData<1,2> = OCONV( ThickMin, 'MD3' ):' ':ThickUnits
|
||||
colData<2,2> = OCONV( ResMin, 'MD3' ):' ':ResUnits
|
||||
colData<3,2> = OCONV( ConMin, 'MS21' ):' ':ConUnits
|
||||
|
||||
colData<1,3> = OCONV( ThickTarget, 'MD3' ):' ':ThickUnits
|
||||
colData<2,3> = OCONV( ResTarget, 'MD3' ):' ':ResUnits
|
||||
colData<3,3> = OCONV( ConTarget, 'MS21' ):' ':ConUnits
|
||||
|
||||
colData<1,4> = OCONV( ThickMax, 'MD3' ):' ':ThickUnits
|
||||
colData<2,4> = OCONV( ResMax, 'MD3' ):' ':ResUnits
|
||||
colData<3,4> = OCONV( ConMax, 'MS21' ):' ':ConUnits
|
||||
|
||||
font<2> = 10
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<1> = 'MS LineDraw' ;* This font contains the omega symbol
|
||||
font<2> = 10
|
||||
font<4> = 0 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
font<1> = 'Arial' ;* Reset font to normal
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
colHeader = 'Reactor' ; colFormat = '<2880'
|
||||
colHeader<1,2> = 'Time' ; colFormat<1,2> = '^2160'
|
||||
colHeader<1,3> = 'Operator' ; colFormat<1,3> = '<2880'
|
||||
colHeader<1,4> = 'Wafer Qty' ; colFormat<1,4> = '>1440'
|
||||
|
||||
colData = 'In'
|
||||
colData<2,1> = 'Out'
|
||||
*colData<3,1> = 'Reject'
|
||||
|
||||
colData<1,2> = oconv( RdsRec<rds_time_in$>, 'MTH' )
|
||||
colData<2,2> = oconv( RdsRec<rds_time_out$>, 'MTH' )
|
||||
*colData<3,2> = ''
|
||||
|
||||
colData<1,3> = oconv( RdsRec<rds_operator_in$>, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' )
|
||||
colData<2,3> = oconv( RdsRec<rds_operator_out$>, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' )
|
||||
*colData<3,3> = ''
|
||||
|
||||
colData<1,4> = RdsRec<rds_wafers_in$>
|
||||
colData<2,4> = obj_RDS('WafersOut',RdsId:@RM:RdsRec) ;* JCH 10/20/2004 RdsRec<rds_wafers_out$>
|
||||
|
||||
font<2> = 10
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<2> = 10
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
colHeader = 'Light Point Defects' ; colFormat = '<2160'
|
||||
colHeader<1,2> = 'Preclean' ; colFormat<1,2> = '^2160'
|
||||
colHeader<1,3> = 'Post Preclean' ; colFormat<1,3> = '^2160'
|
||||
colHeader<1,4> = 'First Wafer' ; colFormat<1,4> = '^2160'
|
||||
colHeader<1,5> = 'Postclean' ; colFormat<1,5> = '^2160'
|
||||
|
||||
colData = 'Quantity'
|
||||
colData<1,2> = RdsRec<rds_lpd_preclean$>
|
||||
colData<1,3> = RdsRec<rds_lpd_post_preclean$>
|
||||
colData<1,4> = RdsRec<rds_lpd_firstwafer$>
|
||||
colData<1,5> = RdsRec<rds_lpd_postclean$>
|
||||
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
colHeader = 'First Wafer':CRLF$:'Data Points' ; colFormat = '^1080'
|
||||
colHeader<1,2> = 'Thickness' ; colFormat<1,2> = '^1080'
|
||||
colHeader<1,3> = 'Sheet Rho' ; colFormat<1,3> = '^1080'
|
||||
colHeader<1,4> = 'Resistivity' ; colFormat<1,4> = '^1080'
|
||||
|
||||
DataPoints = '80mm,70mm,60mm,50mm,40mm,30mm,20mm,10mm,Center,10mm,20mm,30mm,40mm,50mm,60mm,70mm,80mm'
|
||||
CONVERT ',' TO @FM IN DataPoints
|
||||
|
||||
colData = DataPoints
|
||||
|
||||
ResReadings = OCONV(XLATE( 'RDS', RdsId, 'RES_READ', 'X' ),'MD4')
|
||||
ThickReadings = OCONV(XLATE( 'RDS', RdsId, 'THICK_READ', 'X'), 'MD2')
|
||||
SheetRhoReadings = OCONV(XLATE( 'RDS', RdsId, 'SHEETRHO_READ', 'X'),'MD3')
|
||||
|
||||
FOR DP = 1 TO 17
|
||||
colData<DP,2> = ThickReadings<1,DP>
|
||||
colData<DP,3> = SheetRhoReadings<1,DP>
|
||||
colData<DP,4> = ResReadings<1,DP>
|
||||
NEXT DP
|
||||
|
||||
ResultsTablePos = Get_Printer('POS')
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
colHeader = 'Statistical Results' ; colFormat = '^2160'
|
||||
colHeader<1,2> = 'Thickness' ; colFormat<1,2> = '^1080'
|
||||
colHeader<1,3> = 'Resistivity' ; colFormat<1,3> = '^1080'
|
||||
|
||||
ThickAvg = OCONV( XLATE( 'RDS', RdsId, 'TTHICK_AVG','X' ), 'MD2' )
|
||||
ThickStdDev = OCONV( XLATE( 'RDS', RdsId, 'TTHICK_STDEV','X' ), 'MD4' )
|
||||
ThickMax = OCONV( XLATE( 'RDS', RdsId, 'TTHICK_MAX','X' ), 'MD2' )
|
||||
ThickMin = OCONV( XLATE( 'RDS', RdsId, 'TTHICK_MIN','X' ), 'MD2' )
|
||||
ThickUnif = OCONV( XLATE( 'RDS', RdsId, 'TTHICK_UNIF','X' ), 'MD2S%Z' )
|
||||
|
||||
ResAvg = XLATE( 'RDS', RdsId, 'TRES_AVG','X' )
|
||||
ResStdDev = OCONV( XLATE( 'RDS', RdsId, 'TRES_STDEV','X' ), 'MD4' )
|
||||
ResMax = XLATE( 'RDS', RdsId, 'TRES_MAX','X' )
|
||||
ResMin = XLATE( 'RDS', RdsId, 'TRES_MIN','X' )
|
||||
ResUnif = OCONV( XLATE( 'RDS', RdsId, 'TRES_UNIF','X' ), 'MD2S%Z' )
|
||||
|
||||
|
||||
colData = ''
|
||||
colData<1,1> = 'Average' ; colData<1,2> = ThickAvg ; colData<1,3> = ResAvg
|
||||
colData<2,1> = 'Standard Deviation' ; colData<2,2> = ThickStdDev ; colData<2,3> = ResStdDev
|
||||
colData<3,1> = 'Maximum' ; colData<3,2> = ThickMax ; colData<3,3> = ResMax
|
||||
colData<4,1> = 'Minimum' ; colData<4,2> = ThickMin ; colData<4,3> = ResMin
|
||||
colData<5,1> = 'Uniformity' ; colData<5,2> = ThickUnif ; colData<5,3> = ResUnif
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
|
||||
LeftTableXPos = ResultsTablePos<1>
|
||||
RightTableXPos = LeftTableXPos + 3.2
|
||||
|
||||
stat = Set_Printer('POS',ResultsTablePos) ;* This moves the vertical to the top of the data point table
|
||||
;* Position stuff is not documented correctly
|
||||
|
||||
VendLotNo = RDSRec<rds_lot_num$>
|
||||
|
||||
IF VendLotNo NE '' THEN
|
||||
OPEN 'DICT.COA' TO DictVar THEN
|
||||
SearchString = 'LOT_NO':@VM:VendLotNo:@FM
|
||||
CoaKey = ''
|
||||
Option = ''
|
||||
Flag = ''
|
||||
Btree.Extract(SearchString, 'COA', DictVar, CoaKey, Option, Flag)
|
||||
IF INDEX(CoaKey,@VM,1) THEN
|
||||
debug
|
||||
END
|
||||
|
||||
END ELSE
|
||||
debug
|
||||
*ErrMsg('Unable to open DICT.COA in Print_Cust_Rds routine.')
|
||||
END
|
||||
|
||||
CoaRec = XLATE('COA',CoaKey,'','X')
|
||||
|
||||
FindList = 'TTV':@FM:'STIR':@FM:'TIR':@FM:'FPD':@FM:'WARP'
|
||||
|
||||
Parms = CoaRec<COA_PARAMETER$>
|
||||
Criteria = ''
|
||||
FOR I = 1 TO COUNT(Parms,@VM) + (Parms NE '')
|
||||
Parm = Parms<1,I>
|
||||
FOR N = 1 TO COUNT(FindList,@FM) + (FindList NE '')
|
||||
FindWord = FindList<N>
|
||||
|
||||
IF Parm[1,LEN(FindWord)] = FindWord THEN
|
||||
Criteria<-1> = Parm:@VM:CoaRec<COA_MEAN$,I>
|
||||
END
|
||||
NEXT N
|
||||
NEXT I
|
||||
|
||||
IF Criteria NE '' THEN
|
||||
|
||||
colHeader = 'Wafer Criteria' ; colFormat = '<2880'
|
||||
colHeader<1,2> = 'Mean Value' ; colFormat<1,2> = '>2160'
|
||||
|
||||
colData = Criteria
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL:@FM:3.2)
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL:@FM:3.2)
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
END
|
||||
END ;* End of check for COA lot number
|
||||
|
||||
* 1st Wafer surface Defects
|
||||
|
||||
|
||||
colHeader = '1st Wafer Surface Defects' ; ColFormat = '<2880'
|
||||
colHeader<1,2> = 'Quantity' ; ColFormat<1,2> = '^2160'
|
||||
|
||||
|
||||
DataPoints = 'Pits,Mounds,BL Defects,Stack Faults,Spikes,Spots,FOV,Scratches,Scratch Length,'
|
||||
DataPoints := 'Bright Light LPD'
|
||||
CONVERT ',' TO @FM IN DataPoints
|
||||
|
||||
colData = DataPoints
|
||||
|
||||
colData<1,2> = RdsRec<rds_post_pits$>
|
||||
colData<2,2> = RdsRec<rds_post_mounds$>
|
||||
colData<3,2> = RdsRec<rds_post_bl_defects$>
|
||||
colData<4,2> = RdsRec<rds_post_stack_faults$>
|
||||
colData<5,2> = RdsRec<rds_post_spikes$>
|
||||
colData<6,2> = RdsRec<rds_post_spots$>
|
||||
colData<7,2> = RdsRec<rds_post_fov$>
|
||||
colData<8,2> = RdsRec<rds_post_scratches$>
|
||||
colData<9,2> = RdsRec<rds_post_scratch_len$>
|
||||
colData<10,2> = RdsRec<rds_lpd_firstwafer$> ;* Use manual inspection results
|
||||
|
||||
|
||||
TotalSurfDefects = 0
|
||||
|
||||
TotalSurfDefects = TotalSurfDefects + RdsRec<rds_post_pits$>
|
||||
TotalSurfDefects = TotalSurfDefects + RdsRec<rds_post_mounds$>
|
||||
TotalSurfDefects = TotalSurfDefects + RdsRec<rds_post_stack_faults$>
|
||||
TotalSurfDefects = TotalSurfDefects + RdsRec<rds_post_spikes$>
|
||||
TotalSurfDefects = TotalSurfDefects + RdsRec<rds_post_spots$>
|
||||
TotalSurfDefects = TotalSurfDefects + RdsRec<rds_post_scratches$>
|
||||
TotalSurfDefects = TotalSurfDefects + RdsRec<rds_lpd_firstwafer$> ;* Use manual inspection results
|
||||
TotalSurfDefects = TotalSurfDefects + RdsRec<rds_post_bl_defects$>
|
||||
|
||||
colData<13,1> = 'Total Surface Defects'
|
||||
colData<13,2> = TotalSurfDefects
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL:@FM:3.2)
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL:@FM:3.2)
|
||||
|
||||
|
||||
* Check for Surfscan results *
|
||||
|
||||
SurfScanKeys = ''
|
||||
|
||||
OPEN 'DICT.SURFACE_SCAN' TO DictVar THEN
|
||||
SearchString = 'RDS_NO':@VM:RdsId:@FM
|
||||
Option = ''
|
||||
Flag = ''
|
||||
Btree.Extract(SearchString, 'SURFACE_SCAN', DictVar, SurfScanKeys, Option, Flag)
|
||||
END ELSE
|
||||
debug
|
||||
*ErrMsg('Unable to open DICT.SURFACE_SCAN in Print_Cust_Rds routine.')
|
||||
END
|
||||
|
||||
IF SurfScanKeys <> '' THEN
|
||||
GOSUB SurfScanResults
|
||||
END
|
||||
|
||||
|
||||
|
||||
* Non-Conformance Reports for this RDS * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
IF NOT(MakeupWaferFlag) THEN
|
||||
|
||||
NCRKeys = XLATE('RDS',RdsId,RDS_NCR_KEYS$,'X') ;* does this work??????
|
||||
NCRKeyCnt = COUNT(NCRKeys,@vm) + (NCRKeys NE '')
|
||||
|
||||
FOR I = 1 TO NCRKeyCnt
|
||||
|
||||
stat = Set_Printer('PAGEBREAK')
|
||||
|
||||
NCRKey = NCRKeys<1,I>
|
||||
|
||||
NCRRec = XLATE('NCR',NCRKey,'','X')
|
||||
LossDesc = XLATE('NCR',NCRKey,'LOSS_DESC','X')
|
||||
|
||||
font<2> = 10
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
RejCnt = XLATE( 'NCR', NCRKey, 'REJ_CNT', 'X' )
|
||||
IF RejCnt = 1 THEN
|
||||
RejText = RejCnt:' Wafer Rejected for ':LossDesc
|
||||
END ELSE
|
||||
RejText = RejCnt:' Wafer(s) Rejected for ':LossDesc
|
||||
END
|
||||
|
||||
ColHeader = RejText ; colFormat = '^11000'
|
||||
|
||||
font<2> = 12
|
||||
font<4> = 0 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
colHeader = 'Reject Wafer':CRLF$:'Data Points' ; colFormat = '^1080'
|
||||
colHeader<1,2> = 'Thickness' ; colFormat<1,2> = '^1080'
|
||||
colHeader<1,3> = 'Sheet Rho' ; colFormat<1,3> = '^1080'
|
||||
colHeader<1,4> = 'Resistivity' ; colFormat<1,4> = '^1080'
|
||||
|
||||
DataPoints = '80mm,70mm,60mm,50mm,40mm,30mm,20mm,10mm,Center,10mm,20mm,30mm,40mm,50mm,60mm,70mm,80mm'
|
||||
CONVERT ',' TO @FM IN DataPoints
|
||||
|
||||
colData = DataPoints
|
||||
|
||||
ResReadings = xlate( 'NCR', NCRKey, 'RES_READ', 'X' )
|
||||
|
||||
Test = ResReadings
|
||||
|
||||
IF Test NE '' THEN
|
||||
|
||||
FOR DP = 1 to 17
|
||||
colData<DP,2> = oconv( NCRRec<ncr_thick_read$,DP>, 'MD2' )
|
||||
colData<DP,3> = oconv( NCRRec<ncr_sheetrho_read$,DP>, 'MD2' )
|
||||
colData<DP,4> = oconv( ResReadings<1,DP>, 'MD3' )
|
||||
NEXT DP
|
||||
|
||||
LeftTablePos = Get_Printer('POS')
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
colHeader = 'Statistical Results' ; colFormat = '^2160'
|
||||
colHeader<1,2> = 'Thickness' ; colFormat<1,2> = '^1080'
|
||||
colHeader<1,3> = 'Resistivity' ; colFormat<1,3> = '^1080'
|
||||
|
||||
colData = ''
|
||||
colData<1,1> = 'Average' ; colData<1,2> = oconv( NCRRec<ncr_tthick_avg$>, 'MD2' )
|
||||
colData<2,1> = 'Standard Deviation' ; colData<2,2> = oconv( NCRRec<ncr_tthick_stdev$>, 'MD3' )
|
||||
colData<3,1> = 'Maximum' ; colData<3,2> = oconv( NCRRec<ncr_tthick_max$>, 'MD2' )
|
||||
colData<4,1> = 'Minimum' ; colData<4,2> = oconv( NCRRec<ncr_tthick_min$>, 'MD2' )
|
||||
colData<5,1> = 'Uniformity' ; colData<5,2> = oconv( NCRRec<ncr_tthick_unif$>, 'MD2S%' )
|
||||
|
||||
colData<1,3> = oconv( NCRRec<ncr_tres_avg$>, 'MD3' )
|
||||
colData<2,3> = oconv( NCRRec<ncr_tres_stdev$>, 'MD3' )
|
||||
colData<3,3> = oconv( NCRRec<ncr_tres_max$>, 'MD3' )
|
||||
colData<4,3> = oconv( NCRRec<ncr_tres_min$>, 'MD3' )
|
||||
colData<5,3> = oconv( NCRRec<ncr_tres_unif$>, 'MD2S%' )
|
||||
|
||||
|
||||
stat = Set_Printer('CALCTABLE',colFormat:@FM:colData)
|
||||
TableSize = Get_Printer('CALCTABLE')
|
||||
TableHeight = TableSize<2>
|
||||
|
||||
IF Get_Printer('POS')<2> + Tableheight > MaxPrintLength THEN
|
||||
stat = Set_Printer('PAGEBREAK')
|
||||
END
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
|
||||
LeftTableXPos = LeftTablePos<1>
|
||||
RightTableXPos = LeftTableXPos + 3.2
|
||||
|
||||
stat = Set_Printer('POS',LeftTablePos) ;* This moves the vertical to the top of the data point table
|
||||
;* Position stuff is not documented correctly
|
||||
|
||||
colHeader = 'Surface Defects' ; ColFormat = '<2160'
|
||||
colHeader<1,2> = 'Quantity' ; ColFormat<1,2> = '^2160'
|
||||
|
||||
|
||||
DataPoints = 'Pits,Mounds,BL Defects,Stack Faults,Spikes,Spots,FOV,Scratches,Scratch Length,Surf Defects,Surf Haze'
|
||||
CONVERT ',' TO @FM IN DataPoints
|
||||
|
||||
colData = DataPoints
|
||||
|
||||
colData<1,2> = OCONV(NCRRec<ncr_pits$>,'MD0')
|
||||
colData<2,2> = OCONV(NCRRec<ncr_mounds$>,'MD0')
|
||||
colData<3,2> = OCONV(NCRRec<ncr_bl_defects$>,'MD0')
|
||||
colData<4,2> = OCONV(NCRRec<ncr_stack_faults$>,'MD0')
|
||||
colData<5,2> = OCONV(NCRRec<ncr_spikes$>,'MD0')
|
||||
colData<6,2> = OCONV(NCRRec<ncr_spots$>,'MD0')
|
||||
colData<7,2> = OCONV(NCRRec<ncr_spot_fov$>,'MD0')
|
||||
colData<8,2> = OCONV(NCRRec<ncr_scratches$>,'MD0')
|
||||
colData<9,2> = OCONV(NCRRec<ncr_scratch_len$>,'MD0')
|
||||
colData<10,2> = OCONV(NCRRec<ncr_surf_defects$>,'MD0')
|
||||
colData<11,2> = OCONV(NCRRec<ncr_surf_haze$>,'MD2S%')
|
||||
|
||||
TotalSurfaceDefects = 0
|
||||
FOR L = 1 TO 10
|
||||
IF L NE 9 THEN
|
||||
TotalSurfaceDefects += colData<L,2>
|
||||
END
|
||||
NEXT L
|
||||
|
||||
colData<13,1> = 'Total Surface Defects'
|
||||
colData<13,2> = TotalSurfaceDefects
|
||||
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL:@FM:3.2)
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL:@FM:3.2)
|
||||
|
||||
END ;* End of check for datapoints
|
||||
|
||||
NEXT I
|
||||
END ;* End of check for Makeup Wafer Flag
|
||||
|
||||
|
||||
IF RDSRec<RDS_IN_CASS_NO$><1,1> NE '' THEN
|
||||
|
||||
Stat = Set_Printer('PAGEBREAK')
|
||||
|
||||
font = 'Arial'
|
||||
font<2> = '18' ;* Big type
|
||||
font<4> = 1 ;* Bold on
|
||||
font<5> = 1 ;* Italics
|
||||
|
||||
stat = Set_Printer('TEXTXY','Run Data Sheet',2.65:@FM:-0.80,font,0)
|
||||
|
||||
font<2> = 12 ;* Drop the font size
|
||||
font<4> = 0 ;* Bold Off
|
||||
font<5> = 0 ;* Italics off
|
||||
|
||||
colHeader = 'Material Out' ; colFormat = '^1440'
|
||||
colHeader<1,2> = 'Reactor' ; colFormat<1,2> = '^2160'
|
||||
colHeader<1,3> = '' ; colFormat<1,3> = '^2880'
|
||||
colHeader<1,4> = '' ; colFormat<1,4> = '^2880'
|
||||
colHeader<1,5> = 'Material In' ; colFormat<1,5> = '^1440'
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
colHeader = 'Cass' ; colFormat = '^720'
|
||||
colHeader<1,2> = 'Slot' ; colFormat<1,2> = '^720'
|
||||
colHeader<1,3> = 'Pocket' ; colFormat<1,3> = '^1080'
|
||||
colHeader<1,4> = 'Zone' ; colFormat<1,4> = '^1080'
|
||||
colHeader<1,5> = 'Lot No' ; colFormat<1,5> = '^2880'
|
||||
colHeader<1,6> = 'Part No' ; colFormat<1,6> = '^2880'
|
||||
|
||||
colHeader<1,7> = 'Cass' ; colFormat<1,7> = '^720'
|
||||
colHeader<1,8> = 'Slot' ; colFormat<1,8> = '^720'
|
||||
|
||||
colData = ''
|
||||
WONo = RdsRec<RDS_WO$>
|
||||
WORec = XLATE('WO_LOG',WONo,'','X')
|
||||
|
||||
ReactPockets = RDSRec<RDS_POCKET$>
|
||||
ReactZones = RDSRec<RDS_ZONE$>
|
||||
InCassNos = RDSRec<RDS_IN_CASS_NO$>
|
||||
InSlotNos = RDSRec<RDS_IN_SLOT_NO$>
|
||||
OutCassNos = RDSRec<RDS_OUT_CASS_NO$>
|
||||
OutSlotNos = RDSRec<RDS_OUT_CASS_SLOT$>
|
||||
|
||||
LineCnt = 1
|
||||
FOR I = 1 TO COUNT(InCassNos,@VM) + (InCassNos NE '')
|
||||
|
||||
InCassNo = InCassNos<1,I>
|
||||
|
||||
WOMatRec = XLATE('WO_MAT',WONo:'*':InCassNo,'','X')
|
||||
|
||||
colData<LineCnt,1> = OutCassNos<1,I>
|
||||
colData<LineCnt,2> = OutSlotNos<1,I>
|
||||
colData<LineCnt,3> = ReactPockets<1,I>
|
||||
colData<LineCnt,4> = ReactZones<1,I>
|
||||
colData<LineCnt,5> = WOMatRec<WO_MAT_LOT_NO$>
|
||||
colData<LineCnt,6> = WOMatRec<WO_MAT_CUST_PART_NO$>
|
||||
colData<LineCnt,7> = InCassNos<1,I>
|
||||
colData<LineCnt,8> = InSlotNos<1,I>
|
||||
LineCnt += 1
|
||||
|
||||
NEXT I
|
||||
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL)
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL)
|
||||
|
||||
END
|
||||
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
|
||||
* * * * * * *
|
||||
SurfScanResults:
|
||||
* * * * * * *
|
||||
|
||||
* We have surface scan results
|
||||
|
||||
colFormat = '<2880'
|
||||
colFormat<1,2> = '>900'
|
||||
colFormat<1,3> = '>900'
|
||||
colFormat<1,4> = '>900'
|
||||
colFormat<1,5> = '>900'
|
||||
|
||||
PSId = RDSRec<rds_prod_spec_id$>
|
||||
PSRec = XLATE('PROD_SPEC',PSId,'','X')
|
||||
|
||||
PreEpiHazeAvgSpec = PSRec<101>
|
||||
FirstWaferHazeAvgSpec = PSRec<103>
|
||||
PostCleanHazeAvgSpec = PSRec<105>
|
||||
|
||||
PreEpiDefectSpec = PSRec<100>
|
||||
FirstWaferDefectSpec = PSRec<102>
|
||||
PostCleanDefectSpec = PSRec<104>
|
||||
|
||||
stat = Set_Printer('TEXT')
|
||||
|
||||
FOR SurfScanNo = 1 TO COUNT(SurfScanKeys,@VM) + (SurfScanKeys NE '')
|
||||
SurfScanKey = SurfScanKeys<1,SurfScanNo>
|
||||
SurfScanRec = XLATE('SURFACE_SCAN',SurfScanKey,'','X')
|
||||
|
||||
Stage = FIELD(SurfScanKey,'*',4)
|
||||
|
||||
PopupData = XLATE('SYSREPOSPOPUPS','LSL2**STAGE',8,'X')
|
||||
StageDesc = ''
|
||||
FOR I = 1 TO COUNT(PopupData,@VM) + (PopupData NE '')
|
||||
PopCode = PopupData<1,I,1>
|
||||
IF PopCode = Stage THEN StageDesc = PopupData<1,I,2>
|
||||
UNTIL PopupData<1,I,1> = Stage
|
||||
NEXT I
|
||||
|
||||
Tool = SurfScanRec<SURFACE_SCAN_SCAN_TOOL$>
|
||||
|
||||
colHeader = StageDesc:' - ':Tool:CRLF$:'Surface Scan Results'
|
||||
colHeader<1,2> = 'Spec'
|
||||
colHeader<1,3> = 'Min'
|
||||
colHeader<1,4> = 'Max'
|
||||
colHeader<1,5> = 'Avg'
|
||||
|
||||
BEGIN CASE
|
||||
CASE Stage = 'PE'
|
||||
HazeSpec = PreEpiHazeAvgSpec
|
||||
DefectSpec = PreEpiDefectSpec
|
||||
|
||||
CASE Stage = 'FW'
|
||||
HazeSpec = FirstWaferHazeAvgSpec
|
||||
DefectSpec = FirstWaferDefectSpec
|
||||
|
||||
CASE Stage = 'PC'
|
||||
HazeSpec = PostCleanHazeAvgSpec
|
||||
DefectSpec = PostCleanDefectSpec
|
||||
|
||||
END CASE
|
||||
|
||||
colData = ''
|
||||
IF RdsRec<rds_cust_no$> = '6872' THEN
|
||||
colData<1,1> = 'Sum of Defects > .02':CHAR(230):'m'
|
||||
END ELSE
|
||||
colData<1,1> = 'Sum of Defects'
|
||||
END
|
||||
colData<1,2> = DefectSpec
|
||||
colData<1,3> = SurfScanRec<SURFACE_SCAN_SUM_OF_DEF_MIN$>
|
||||
colData<1,4> = SurfScanRec<SURFACE_SCAN_SUM_OF_DEF_MAX$>
|
||||
colData<1,5> = OCONV(SurfScanRec<SURFACE_SCAN_SUM_OF_DEF_AVG$>,'MD3')
|
||||
|
||||
colData<2,1> = 'Surface Haze Avg (ppm)'
|
||||
colData<2,2> = HazeSpec
|
||||
colData<2,3> = SurfScanRec<SURFACE_SCAN_HAZE_AVG_MIN$>
|
||||
colData<2,4> = SurfScanRec<SURFACE_SCAN_HAZE_AVG_MAX$>
|
||||
colData<2,5> = OCONV(SurfScanRec<SURFACE_SCAN_HAZE_AVG_AVG$>,'MD3')
|
||||
|
||||
font<2> = 8
|
||||
font<4> = 1 ;* Bold on
|
||||
stat = Set_Printer('FONT',font)
|
||||
stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',LTGREY$,'',0,TB_ALL:@FM:3.2)
|
||||
|
||||
font<1> = 'MS LineDraw' ;* This font contains the omega symbol
|
||||
font<4> = 0 ;* Bold off
|
||||
stat = Set_Printer('FONT',font)
|
||||
|
||||
stat = Set_Printer('ADDTABLE',colFormat,'',colData,LTGREY$,'',1,TB_ALL:@FM:3.2)
|
||||
|
||||
font<1> = 'Arial' ;* Reset font to normal
|
||||
|
||||
stat = Set_Printer('FONT',font)
|
||||
|
||||
NEXT SurfScanNo
|
||||
|
||||
|
||||
RETURN
|
||||
|
||||
|
Reference in New Issue
Block a user