328 lines
10 KiB
Plaintext
328 lines
10 KiB
Plaintext
COMPILE SUBROUTINE Print_Coc( ShipNo, PrintBackPage, ShipRec )
|
|
|
|
DECLARE FUNCTION FieldCount, Msg, Key_Sort, Set_Printer, obj_RDS, obj_Install
|
|
DECLARE SUBROUTINE Btree.Extract,Extract_SI_Keys
|
|
|
|
$insert company_equates
|
|
$insert coc_equ
|
|
$insert email_pENDing_equ
|
|
$insert logical
|
|
$insert lsl_users_equ
|
|
$insert msg_equates
|
|
$insert popup_equates
|
|
$insert rds_equ
|
|
$insert rds_layer_info_equ
|
|
$insert quote_equ
|
|
$insert quote_spec_equ
|
|
$insert oiprint_equates
|
|
$insert schedule_equ
|
|
$insert security_rights_equ
|
|
$insert prod_spec_equ
|
|
$insert srp_coc_results_equ
|
|
|
|
$INSERT RDS_LAYER_EQUATES
|
|
$INSERT RDS_TEST_EQUATES
|
|
|
|
DEBUG
|
|
* Initialize Common Printer parms
|
|
|
|
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
|
|
|
|
* This is the id code number FOR first wafer inspection out of the tw_codes table
|
|
|
|
EQU FirstWaferInspection$ TO 5
|
|
|
|
|
|
IF NOT(ASSIGNED(ShipNo)) THEN RETURN
|
|
IF NOT(ASSIGNED(PrintBackPage)) THEN PrintBackPage = ''
|
|
|
|
IF ShipNo = '' THEN RETURN
|
|
|
|
IF ShipRec = '' THEN
|
|
ShipRec = XLATE('COC',ShipNo,'','X')
|
|
END
|
|
|
|
RDSNos = ShipRec<COC_RDS_NO$>
|
|
|
|
RDSCnt = COUNT(RDSNos,@VM) + (RDSNos NE '')
|
|
|
|
* Initialize Common Printer parms
|
|
|
|
PageInfo = ''
|
|
PageInfo<PI$LEFT> = 0.5 ;* Margins
|
|
PageInfo<PI$TOP> = 1.35
|
|
PageInfo<PI$RIGHT> = 0.25
|
|
PageInfo<PI$BOTTOM> = 0.25
|
|
|
|
PageSetup = '0' ;* Portrait
|
|
PrintSetup = '2' ;* Print Preview
|
|
|
|
stat = Set_Printer("INIT",'Printing','CofC Back',PageInfo,PageSetup,PrintSetup)
|
|
|
|
font = 'Arial' ;* Font basics
|
|
font<2> = 10
|
|
font<4> = 0
|
|
|
|
stat = Set_Printer('FONTHEADFOOT', font)
|
|
|
|
*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 = -.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 * * * *
|
|
|
|
|
|
|
|
font = 'Arial'
|
|
font<2> = '18' ;* Big type
|
|
font<4> = 1 ;* Bold on
|
|
font<5> = 1 ;* Italics
|
|
stat = Set_Printer('TEXTXY','Certificate of Compliance',1.9:@FM:-0.80,font,0)
|
|
|
|
Font = "Courier New,9,L,1"
|
|
convert ',' to @fm in Font
|
|
Stat = set_printer( 'FONT', Font )
|
|
|
|
|
|
TShipQty = xlate( 'RDS', RDSNos, 'WFRS_OUT', 'X' )
|
|
|
|
CocFrontShipQty = sum( TShipQty )
|
|
ThisRdsRec = xlate( 'RDS', RDSNos<1,1>, '', 'X' )
|
|
Dopant = xlate( 'RDS', RDSNos<1,1>, 'DOPANT_L1', 'X' )
|
|
SameLayCnt = fieldcount( ThisRdsRec<rds_layer_info$>, char(248) )
|
|
|
|
Tfont = Font
|
|
Tfont<2> = 12
|
|
Tfont<3> = 'R'
|
|
Tfont<4> = 1
|
|
Tfont<6> = 0
|
|
Void = set_printer( 'FONT', Tfont )
|
|
Void = set_printer( 'TEXT', 'Date: ':oconv( date(), 'D2/' ) )
|
|
Void = set_printer( 'TEXT', '' )
|
|
Void = set_printer( 'TEXT', '' )
|
|
Tfont<2> = 10
|
|
Tfont<3> = 'L'
|
|
Tfont<4> = 1
|
|
Void = set_printer( 'FONT', Tfont )
|
|
Void = set_printer( 'TEXT', 'Customer: ':oconv( ThisRdsRec<rds_cust_no$>, '[XLATE_CONV,COMPANY*CO_NAME]' ) )
|
|
Addr = xlate( 'COMPANY', ThisRdsRec<rds_cust_no$>, company_address$, 'X' )
|
|
Acnt = fieldcount( Addr, @vm )
|
|
Void = set_printer( 'TEXT', 'Address: ':Addr<1,1> )
|
|
for k = 2 to Acnt
|
|
Tvar = fmt( '', 'L#9' ):Addr<1,k>
|
|
Void = set_printer( 'TEXT', Tvar )
|
|
next k
|
|
Void = set_printer( 'TEXT', '' )
|
|
Void = set_printer( 'TEXT', '' )
|
|
Tvar = fmt( 'P.O. Number: ':ThisRdsRec<rds_po$>, 'L#65' ):' Part Number: ':ThisRdsRec<rds_part_num$>
|
|
Void = set_printer( 'TEXT', Tvar )
|
|
|
|
* ADD THE SPECIFICATION INFORMATION FROM THE PSN
|
|
|
|
SpecInfo = ''
|
|
SpecNums = xlate( 'PROD_SPEC', ThisRdsRec<rds_prod_spec_id$>, prod_spec_spec_num$, 'X' )
|
|
convert @vm to ';' in SpecNums
|
|
RevNum = xlate( 'PROD_SPEC', ThisRdsRec<rds_prod_spec_id$>, prod_spec_rev_num$, 'X' )
|
|
RevDate = oconv( xlate( 'PROD_SPEC', ThisRdsRec<rds_prod_spec_id$>, prod_spec_rev_date$, 'X' ), 'D2/' )
|
|
if ( SpecNums <> '' ) then
|
|
SpecInfo:= 'Spec#: ':SpecNums:space(2)
|
|
end
|
|
if ( RevNum <> '' ) then
|
|
SpecInfo:= 'Rev#: ':RevNum:space(2)
|
|
end
|
|
if ( RevDate <> '' ) then
|
|
SpecInfo:= 'Rev Date: ':RevDate:space(2)
|
|
end
|
|
SpecInfo[-2,2] = ''
|
|
*
|
|
Tvar = fmt( SpecInfo, 'L#68' ):' Quantity: ':CocFrontShipQty
|
|
Void = set_printer( 'TEXT', Tvar )
|
|
Void = set_printer( 'TEXT', '' )
|
|
|
|
* lets figure out what layer number to start with
|
|
|
|
StartingLayerNo = 1
|
|
|
|
stat = set_printer( 'LINESTYLE', ps_solid:@fm:0 )
|
|
|
|
* first print base layer
|
|
Tfont<2> = 9
|
|
Tfont<4> = 0
|
|
Tfont<1> = 'MS LineDraw'
|
|
Void = set_printer( 'FONT', Tfont )
|
|
DEBUG
|
|
|
|
SortedLSKeys = XLATE('RDS',RDSNos<1,1>,'RDS_LS_SORTED','X')
|
|
|
|
IF SortedLSKeys NE '' THEN
|
|
LayerCnt = COUNT(SortedLSKeys,@VM) + (SortedLSKeys NE '')
|
|
FOR I = 1 TO LayerCnt
|
|
LSKey = SortedLSKeys<1,I>
|
|
LayerRec = XLATE('RDS_LAYER',LSKey,'','X')
|
|
FirstTestKey = LayerRec<RDS_LAYER_RDS_TEST_KEYS$,1>
|
|
TestRec = XLATE('RDS_TEST',FirstTestKey,'','X')
|
|
|
|
LineOut = ''
|
|
IF I > 1 THEN
|
|
LineOut := FMT( 'Layer ':I, 'L#10' )
|
|
END ELSE
|
|
LineOut := STR(' ',10)
|
|
END
|
|
Dopant = LayerRec<RDS_LAYER_DOPANT$>
|
|
ThickTarget = TestRec<RDS_TEST_SPEC_THICK_TARGET$>
|
|
ThickUnits = TestRec<RDS_TEST_SPEC_THICK_UNITS$>
|
|
ResTarget = TestRec<RDS_TEST_SPEC_RES_TARGET$>
|
|
ResTarget = TestRec<RDS_TEST_SPEC_RES_UNITS$>
|
|
ConTarget = TestRec<RDS_TEST_SPEC_CON_TARGET$>
|
|
ContUnits = TestRec<RDS_TEST_SPEC_CON_UNITS$>
|
|
|
|
LineOut := FMT('Dopant: ':Dopant,'L#30')
|
|
LineOut := FMT('Target Thickness ':OCONV(ThickTarget,'MD2'):ThickUnits,'L#30')
|
|
|
|
IF ResTarget NE '' THEN
|
|
LineOut := FMT('Target Resistivity ':OCONV(ResTarget,'MD3'):ResUnits,'L#30')
|
|
END ELSE
|
|
LineOut := FMT('Target Concentration ':OCONV(ConTarget,'MS21'):ConUnits,'L#30')
|
|
END
|
|
|
|
stat = Set_Printer('TEXT',LineOut)
|
|
|
|
NEXT I
|
|
END ELSE
|
|
LineOut = ''
|
|
if StartingLayerNo > 1 then
|
|
LineOut := fmt( 'Layer ':StartingLayerNo, 'L#10' )
|
|
end
|
|
LineOut:= fmt( 'Dopant: ':Dopant, 'L#30' )
|
|
LineOut:= fmt( 'Target Thickness ':oconv( ThisRdsRec<rds_thick_target$>, 'MD2' ):ThisRdsRec<rds_thick_units$>, 'L#30' )
|
|
if ThisRdsRec<rds_res_target$> then
|
|
LineOut:= fmt( 'Target Resistivity ':oconv( ThisRdsRec<rds_res_target$>, 'MD3' ):ThisRdsRec<rds_res_units$>, 'L#30' )
|
|
end else
|
|
LineOut:= 'Target Concentration ':oconv( ThisRdsRec<rds_con_target$,1>, 'MS21' ):ThisRdsRec<rds_con_units$>
|
|
if ThisRdsRec<rds_con_min$,2> then
|
|
LineOut:= ' - ':oconv( ThisRdsRec<rds_con_target$,2>, 'MS21' ):ThisRdsRec<rds_con_units$>
|
|
end
|
|
end
|
|
Void = set_printer( 'TEXT', LineOut )
|
|
StartingLayerNo += 1
|
|
|
|
for k = 1 to SameLayCnt
|
|
LineOut = ''
|
|
if StartingLayerNo > 1 then
|
|
LineOut:= fmt( 'Layer ':StartingLayerNo, 'L#10' )
|
|
end
|
|
Tl = field( ThisRdsRec<rds_layer_info$>, char(248), k )
|
|
Dopant = xlate( 'RDS', LayerIds<i,1>, 'DOPANT_L':K+1, 'X' )
|
|
LineOut:= fmt( 'Dopant: ':Dopant, 'L#30' )
|
|
LineOut:= fmt( 'Target Thickness ':oconv( Tl<1,RLThickTarget$>, 'MD2' ):Tl<1,RLThickUnits$>, 'L#30' )
|
|
if Tl<1,RLResTarget$> then
|
|
LineOut:= fmt( 'Target Resistivity ':oconv( Tl<1,RLResTarget$>, 'MD3' ):Tl<1,RLResUnits$>, 'L#30' )
|
|
end else
|
|
LineOut:= 'Target Concentration ':oconv( Tl<1,RLConTarget$,1>, 'MS21' ):Tl<1,RLConUnits$>
|
|
if Tl<1,RLConMin$,2> then
|
|
LineOut:= ' - ':oconv( Tl<1,RLConTarget$,2>, 'MS21' ):Tl<1,RLConUnits$>
|
|
end
|
|
end
|
|
Void = set_printer( 'TEXT', LineOut )
|
|
StartingLayerNo += 1
|
|
next k
|
|
END
|
|
|
|
|
|
Tfont = Font
|
|
Tfont<4> = 0
|
|
Tfont<2> = 11
|
|
Void = set_printer( 'FONT', Tfont )
|
|
Void = set_printer( 'TEXT', '' )
|
|
Void = set_printer( 'TEXT', '' )
|
|
TextOut = 'The enclosed material has been manufactured, inspected and/or tested in the'
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
TextOut= 'U.S.A. in accordance with specifications outlined on your purchase order.'
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
Void = set_printer( 'TEXT', '' )
|
|
Tfont<4> = 1
|
|
Void = set_printer( 'FONT', Tfont )
|
|
TextOut = 'This material was processed as Work Order Number: ':quote( ThisRdsRec<rds_wo$> ):' and manufactured under process control recipe ':quote( oconv( ThisRdsRec<rds_recipe_no$>, '[XLATE_CONV,RECIPE*RECIPE_NAME]' ) ):'.'
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
Tfont<4> = 0
|
|
Void = set_printer( 'FONT', Tfont )
|
|
Void = set_printer( 'TEXT', '' )
|
|
TextOut = 'Pertinent test and/or inspection records are on file and available for review'
|
|
if PrintBackPage then
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
TextOut = 'under run numbers specified in the following page(s) of this document.'
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
end else
|
|
TextOut := '.'
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
end
|
|
for k = 1 to 5
|
|
Void = set_printer( 'TEXT', '' )
|
|
next k
|
|
Void = set_printer( 'TEXT', 'Approved by,' )
|
|
for k = 1 to 5
|
|
Void = set_printer( 'TEXT', '' )
|
|
next k
|
|
Tvar = fmt( ' ', 'L#65' )
|
|
Tfont<6> = 1
|
|
Void = set_printer( 'FONT', Tfont )
|
|
Void = set_printer( 'TEXT', Tvar )
|
|
Tfont<6> = 0
|
|
Void = set_printer( 'FONT', Tfont )
|
|
TextOut = fmt( '', 'L#50' ):'Date'
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
Void = set_printer( 'TEXT', '' )
|
|
Void = set_printer( 'TEXT', '' )
|
|
TextOut = 'Document Control'
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
for k = 1 to 7
|
|
Void = set_printer( 'TEXT', '' )
|
|
next k
|
|
Tfont<4> = 1
|
|
Void = set_printer( 'FONT', Tfont )
|
|
TextOut = 'Quality Assurance Registration Number ':quote( ThisRdsRec<rds_wo$> )
|
|
Void = set_printer( 'TEXT', TextOut )
|
|
Tfont<4> = 0
|
|
Void = set_printer( 'FONT', Tfont )
|
|
Void = set_printer( 'PAGEBREAK' )
|
|
|
|
|
|
|
|
stat = Set_Printer('TERM')
|
|
|