%! %%BoundingBox: (atend) %%Pages: (atend) %%DocumentFonts: (atend) %%EndComments % % FrameMaker PostScript Prolog 3.0, for use with FrameMaker 3.0 % Copyright (c) 1986,87,89,90,91 by Frame Technology Corporation. % All rights reserved. % % Known Problems: % Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1 /FMversion (3.0) def % Set up Color vs. Black-and-White /FMPrintInColor systemdict /colorimage known systemdict /currentcolortransfer known or def % Uncomment this line to force b&w on color printer % /FMPrintInColor false def /FrameDict 195 dict def systemdict /errordict known not {/errordict 10 dict def errordict /rangecheck {stop} put} if % The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk FrameDict /tmprangecheck errordict /rangecheck get put errordict /rangecheck {FrameDict /bug true put} put FrameDict /bug false put mark % Some PS machines read past the CR, so keep the following 3 lines together! currentfile 5 string readline 00 0000000000 cleartomark errordict /rangecheck FrameDict /tmprangecheck get put FrameDict /bug get { /readline { /gstring exch def /gfile exch def /gindex 0 def { gfile read pop dup 10 eq {exit} if dup 13 eq {exit} if gstring exch gindex exch put /gindex gindex 1 add def } loop pop gstring 0 gindex getinterval true } def } if /FMVERSION { FMversion ne { /Times-Roman findfont 18 scalefont setfont 100 100 moveto (FrameMaker version does not match postscript_prolog!) dup = show showpage } if } def /FMLOCAL { FrameDict begin 0 def end } def /gstring FMLOCAL /gfile FMLOCAL /gindex FMLOCAL /orgxfer FMLOCAL /orgproc FMLOCAL /organgle FMLOCAL /orgfreq FMLOCAL /yscale FMLOCAL /xscale FMLOCAL /manualfeed FMLOCAL /paperheight FMLOCAL /paperwidth FMLOCAL /FMDOCUMENT { array /FMfonts exch def /#copies exch def FrameDict begin 0 ne dup {setmanualfeed} if /manualfeed exch def /paperheight exch def /paperwidth exch def /yscale exch def /xscale exch def currenttransfer cvlit /orgxfer exch def currentscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def setpapername manualfeed {true} {papersize} ifelse {manualpapersize} {false} ifelse {desperatepapersize} if end } def /pagesave FMLOCAL /orgmatrix FMLOCAL /landscape FMLOCAL /FMBEGINPAGE { FrameDict begin /pagesave save def 3.86 setmiterlimit /landscape exch 0 ne def landscape { 90 rotate 0 exch neg translate pop } {pop pop} ifelse xscale yscale scale /orgmatrix matrix def gsave } def /FMENDPAGE { grestore pagesave restore end showpage } def /FMFONTDEFINE { FrameDict begin findfont ReEncode 1 index exch definefont FMfonts 3 1 roll put end } def /FMFILLS { FrameDict begin array /fillvals exch def end } def /FMFILL { FrameDict begin fillvals 3 1 roll put end } def /FMNORMALIZEGRAPHICS { newpath 0.0 0.0 moveto 1 setlinewidth 0 setlinecap 0 0 0 sethsbcolor 0 setgray } bind def /fx FMLOCAL /fy FMLOCAL /fh FMLOCAL /fw FMLOCAL /llx FMLOCAL /lly FMLOCAL /urx FMLOCAL /ury FMLOCAL /FMBEGINEPSF { end /FMEPSF save def /showpage {} def FMNORMALIZEGRAPHICS [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall fx fy translate rotate fw urx llx sub div fh ury lly sub div scale llx neg lly neg translate } bind def /FMENDEPSF { FMEPSF restore FrameDict begin } bind def FrameDict begin /setmanualfeed { %%BeginFeature *ManualFeed True statusdict /manualfeed true put %%EndFeature } def /max {2 copy lt {exch} if pop} bind def /min {2 copy gt {exch} if pop} bind def /inch {72 mul} def /pagedimen { paperheight sub abs 16 lt exch paperwidth sub abs 16 lt and {/papername exch def} {pop} ifelse } def /papersizedict FMLOCAL /setpapername { /papersizedict 14 dict def papersizedict begin /papername /unknown def /Letter 8.5 inch 11.0 inch pagedimen /LetterSmall 7.68 inch 10.16 inch pagedimen /Tabloid 11.0 inch 17.0 inch pagedimen /Ledger 17.0 inch 11.0 inch pagedimen /Legal 8.5 inch 14.0 inch pagedimen /Statement 5.5 inch 8.5 inch pagedimen /Executive 7.5 inch 10.0 inch pagedimen /A3 11.69 inch 16.5 inch pagedimen /A4 8.26 inch 11.69 inch pagedimen /A4Small 7.47 inch 10.85 inch pagedimen /B4 10.125 inch 14.33 inch pagedimen /B5 7.16 inch 10.125 inch pagedimen end } def /papersize { papersizedict begin /Letter {lettertray letter} def /LetterSmall {lettertray lettersmall} def /Tabloid {11x17tray 11x17} def /Ledger {ledgertray ledger} def /Legal {legaltray legal} def /Statement {statementtray statement} def /Executive {executivetray executive} def /A3 {a3tray a3} def /A4 {a4tray a4} def /A4Small {a4tray a4small} def /B4 {b4tray b4} def /B5 {b5tray b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end /FMdicttop countdictstack 1 add def statusdict begin stopped end countdictstack -1 FMdicttop {pop end} for } def /manualpapersize { papersizedict begin /Letter {letter} def /LetterSmall {lettersmall} def /Tabloid {11x17} def /Ledger {ledger} def /Legal {legal} def /Statement {statement} def /Executive {executive} def /A3 {a3} def /A4 {a4} def /A4Small {a4small} def /B4 {b4} def /B5 {b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end stopped } def /desperatepapersize { statusdict /setpageparams known { paperwidth paperheight 0 1 statusdict begin {setpageparams} stopped pop end } if } def /savematrix { orgmatrix currentmatrix pop } bind def /restorematrix { orgmatrix setmatrix } bind def /dmatrix matrix def /dpi 72 0 dmatrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def /sangle 1 0 dmatrix defaultmatrix dtransform exch atan def /DiacriticEncoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis /dagger /.notdef /cent /sterling /section /bullet /paragraph /germandbls /registered /copyright /trademark /acute /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron ] def /ReEncode { dup length dict begin { 1 index /FID ne {def} {pop pop} ifelse } forall 0 eq {/Encoding DiacriticEncoding def} if currentdict end } bind def /graymode true def /bwidth FMLOCAL /bpside FMLOCAL /bstring FMLOCAL /onbits FMLOCAL /offbits FMLOCAL /xindex FMLOCAL /yindex FMLOCAL /x FMLOCAL /y FMLOCAL /setpattern { /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def freq sangle landscape {90 add} if {/y exch def /x exch def /xindex x 1 add 2 div bpside mul cvi def /yindex y 1 add 2 div bpside mul cvi def bstring yindex bwidth mul xindex 8 idiv add get 1 7 xindex 8 mod sub bitshift and 0 ne {/onbits onbits 1 add def 1} {/offbits offbits 1 add def 0} ifelse } setscreen {} settransfer offbits offbits onbits add div FMsetgray /graymode false def } bind def /grayness { FMsetgray graymode not { /graymode true def orgxfer cvx settransfer orgfreq organgle orgproc cvx setscreen } if } bind def /HUE FMLOCAL /SAT FMLOCAL /BRIGHT FMLOCAL /Colors FMLOCAL FMPrintInColor { /HUE 0 def /SAT 0 def /BRIGHT 0 def % array of arrays Hue and Sat values for the separations [HUE BRIGHT] /Colors [[0 0 ] % black [0 0 ] % white [0.00 1.0] % red [0.37 1.0] % green [0.60 1.0] % blue [0.50 1.0] % cyan [0.83 1.0] % magenta [0.16 1.0] % comment / yellow ] def /BEGINBITMAPCOLOR { BITMAPCOLOR} def /BEGINBITMAPCOLORc { BITMAPCOLORc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUECOLOR } def /BEGINBITMAPTRUECOLORc { BITMAPTRUECOLORc } def /K { Colors exch get dup 0 get /HUE exch store 1 get /BRIGHT exch store HUE 0 eq BRIGHT 0 eq and {1.0 SAT sub setgray} {HUE SAT BRIGHT sethsbcolor} ifelse } def /FMsetgray { /SAT exch 1.0 exch sub store HUE 0 eq BRIGHT 0 eq and {1.0 SAT sub setgray} {HUE SAT BRIGHT sethsbcolor} ifelse } bind def } { /BEGINBITMAPCOLOR { BITMAPGRAY} def /BEGINBITMAPCOLORc { BITMAPGRAYc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUEGRAY } def /BEGINBITMAPTRUECOLORc { BITMAPTRUEGRAYc } def /FMsetgray {setgray} bind def /K { pop } def } ifelse /normalize { transform round exch round exch itransform } bind def /dnormalize { dtransform round exch round exch idtransform } bind def /lnormalize { 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop } bind def /H { lnormalize setlinewidth } bind def /Z { setlinecap } bind def /fillvals FMLOCAL /X { fillvals exch get dup type /stringtype eq {8 1 setpattern} {grayness} ifelse } bind def /V { gsave eofill grestore } bind def /N { stroke } bind def /M {newpath moveto} bind def /E {lineto} bind def /D {curveto} bind def /O {closepath} bind def /n FMLOCAL /L { /n exch def newpath normalize moveto 2 1 n {pop normalize lineto} for } bind def /Y { L closepath } bind def /x1 FMLOCAL /x2 FMLOCAL /y1 FMLOCAL /y2 FMLOCAL /rad FMLOCAL /R { /y2 exch def /x2 exch def /y1 exch def /x1 exch def x1 y1 x2 y1 x2 y2 x1 y2 4 Y } bind def /RR { /rad exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def newpath x1 y1 rad add moveto x1 y2 x2 y2 rad arcto x2 y2 x2 y1 rad arcto x2 y1 x1 y1 rad arcto x1 y1 x1 y2 rad arcto closepath 16 {pop} repeat } bind def /C { grestore gsave R clip } bind def /FMpointsize FMLOCAL /F { FMfonts exch get FMpointsize scalefont setfont } bind def /Q { /FMpointsize exch def F } bind def /T { moveto show } bind def /RF { rotate 0 ne {-1 1 scale} if } bind def /TF { gsave moveto RF show grestore } bind def /P { moveto 0 32 3 2 roll widthshow } bind def /PF { gsave moveto RF 0 32 3 2 roll widthshow grestore } bind def /S { moveto 0 exch ashow } bind def /SF { gsave moveto RF 0 exch ashow grestore } bind def /B { moveto 0 32 4 2 roll 0 exch awidthshow } bind def /BF { gsave moveto RF 0 32 4 2 roll 0 exch awidthshow grestore } bind def /G { gsave newpath normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath fill grestore } bind def /A { gsave savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch normalize 2 index 2 div sub exch 3 index 2 div add exch translate scale 0.0 0.0 1.0 5 3 roll arc restorematrix stroke grestore } bind def /x FMLOCAL /y FMLOCAL /w FMLOCAL /h FMLOCAL /xx FMLOCAL /yy FMLOCAL /ww FMLOCAL /hh FMLOCAL /FMsaveobject FMLOCAL /FMoptop FMLOCAL /FMdicttop FMLOCAL /BEGINPRINTCODE { /FMdicttop countdictstack 1 add def /FMoptop count 4 sub def /FMsaveobject save def userdict begin /showpage {} def FMNORMALIZEGRAPHICS 3 index neg 3 index neg translate } bind def /ENDPRINTCODE { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMsaveobject restore } bind def /gn { 0 { 46 mul cf read pop 32 sub dup 46 lt {exit} if 46 sub add } loop add } bind def /str FMLOCAL /cfs { /str sl string def 0 1 sl 1 sub {str exch val put} for str def } bind def /ic [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} ] def /sl FMLOCAL /val FMLOCAL /ws FMLOCAL /im FMLOCAL /bs FMLOCAL /cs FMLOCAL /len FMLOCAL /pos FMLOCAL /ms { /sl exch def /val 255 def /ws cfs /im cfs /val 0 def /bs cfs /cs cfs } bind def 400 ms /ip { is 0 cf cs readline pop { ic exch get exec add } forall pop } bind def /wh { /len exch def /pos exch def ws 0 len getinterval im pos len getinterval copy pop pos len } bind def /bl { /len exch def /pos exch def bs 0 len getinterval im pos len getinterval copy pop pos len } bind def /s1 1 string def /fl { /len exch def /pos exch def /val cf s1 readhexstring pop 0 get def pos 1 pos len add 1 sub {im exch val put} for pos len } bind def /hx { 3 copy getinterval cf exch readhexstring pop pop } bind def /h FMLOCAL /w FMLOCAL /d FMLOCAL /lb FMLOCAL /bitmapsave FMLOCAL /is FMLOCAL /cf FMLOCAL /wbytes { dup 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } bind def /BEGINBITMAPBWc { 1 {} COMMONBITMAPc } bind def /BEGINBITMAPGRAYc { 8 {} COMMONBITMAPc } bind def /BEGINBITMAP2BITc { 2 {} COMMONBITMAPc } bind def /COMMONBITMAPc { /r exch def /d exch def gsave translate rotate scale /h exch def /w exch def /lb w d wbytes def sl lb lt {lb ms} if /bitmapsave save def r /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def w h d [w 0 0 h neg 0 h] {ip} image bitmapsave restore grestore } bind def /BEGINBITMAPBW { 1 {} COMMONBITMAP } bind def /BEGINBITMAPGRAY { 8 {} COMMONBITMAP } bind def /BEGINBITMAP2BIT { 2 {} COMMONBITMAP } bind def /COMMONBITMAP { /r exch def /d exch def gsave translate rotate scale /h exch def /w exch def /bitmapsave save def r /is w d wbytes string def /cf currentfile def w h d [w 0 0 h neg 0 h] {cf is readhexstring pop} image bitmapsave restore grestore } bind def /proc1 FMLOCAL /proc2 FMLOCAL /newproc FMLOCAL /Fmcc { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx } bind def /ngrayt 256 array def /nredt 256 array def /nbluet 256 array def /ngreent 256 array def /gryt FMLOCAL /blut FMLOCAL /grnt FMLOCAL /redt FMLOCAL /indx FMLOCAL /cynu FMLOCAL /magu FMLOCAL /yelu FMLOCAL /k FMLOCAL /u FMLOCAL /colorsetup { currentcolortransfer /gryt exch def /blut exch def /grnt exch def /redt exch def 0 1 255 { /indx exch def /cynu 1 red indx get 255 div sub def /magu 1 green indx get 255 div sub def /yelu 1 blue indx get 255 div sub def /k cynu magu min yelu min def /u k currentundercolorremoval exec def nredt indx 1 0 cynu u sub max sub redt exec put ngreent indx 1 0 magu u sub max sub grnt exec put nbluet indx 1 0 yelu u sub max sub blut exec put ngrayt indx 1 k currentblackgeneration exec sub gryt exec put } for {255 mul cvi nredt exch get} {255 mul cvi ngreent exch get} {255 mul cvi nbluet exch get} {255 mul cvi ngrayt exch get} setcolortransfer {pop 0} setundercolorremoval {} setblackgeneration } bind def /tran FMLOCAL /fakecolorsetup { /tran 256 string def 0 1 255 {/indx exch def tran indx red indx get 77 mul green indx get 151 mul blue indx get 28 mul add add 256 idiv put} for currenttransfer {255 mul cvi tran exch get 255.0 div} exch Fmcc settransfer } bind def /BITMAPCOLOR { /d 8 def gsave translate rotate scale /h exch def /w exch def /bitmapsave save def colorsetup /is w d wbytes string def /cf currentfile def w h d [w 0 0 h neg 0 h] {cf is readhexstring pop} {is} {is} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCOLORc { /d 8 def gsave translate rotate scale /h exch def /w exch def /lb w d wbytes def sl lb lt {lb ms} if /bitmapsave save def colorsetup /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def w h d [w 0 0 h neg 0 h] {ip} {is} {is} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPTRUECOLORc { gsave translate rotate scale /h exch def /w exch def /bitmapsave save def /is w string def ws 0 w getinterval is copy pop /cf currentfile def w h 8 [w 0 0 h neg 0 h] {ip} {gip} {bip} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPTRUECOLOR { gsave translate rotate scale /h exch def /w exch def /bitmapsave save def /is w string def /gis w string def /bis w string def /cf currentfile def w h 8 [w 0 0 h neg 0 h] { cf is readhexstring pop } { cf gis readhexstring pop } { cf bis readhexstring pop } true 3 colorimage bitmapsave restore grestore } bind def /BITMAPTRUEGRAYc { gsave translate rotate scale /h exch def /w exch def /bitmapsave save def /is w string def ws 0 w getinterval is copy pop /cf currentfile def w h 8 [w 0 0 h neg 0 h] {ip gip bip w gray} image bitmapsave restore grestore } bind def /ww FMLOCAL /r FMLOCAL /g FMLOCAL /b FMLOCAL /i FMLOCAL /gray { /ww exch def /b exch def /g exch def /r exch def 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul b i get .114 mul add add r i 3 -1 roll floor cvi put } for r } bind def /BITMAPTRUEGRAY { gsave translate rotate scale /h exch def /w exch def /bitmapsave save def /is w string def /gis w string def /bis w string def /cf currentfile def w h 8 [w 0 0 h neg 0 h] { cf is readhexstring pop cf gis readhexstring pop cf bis readhexstring pop w gray} image bitmapsave restore grestore } bind def /BITMAPGRAY { 8 {fakecolorsetup} COMMONBITMAP } bind def /BITMAPGRAYc { 8 {fakecolorsetup} COMMONBITMAPc } bind def /ENDBITMAP { } bind def end /ALDsave FMLOCAL /ALDmatrix matrix def ALDmatrix currentmatrix pop /StartALD { /ALDsave save def savematrix ALDmatrix setmatrix } bind def /InALD { restorematrix } bind def /DoneALD { ALDsave restore } bind def %%EndProlog %%BeginSetup (3.0) FMVERSION 1 1 612 792 0 1 12 FMDOCUMENT 0 0 /Times-Bold FMFONTDEFINE 1 0 /Times-BoldItalic FMFONTDEFINE 2 0 /Times-Roman FMFONTDEFINE 3 0 /Times-Italic FMFONTDEFINE 4 0 /Courier FMFONTDEFINE 32 FMFILLS 0 0 FMFILL 1 0.1 FMFILL 2 0.3 FMFILL 3 0.5 FMFILL 4 0.7 FMFILL 5 0.9 FMFILL 6 0.97 FMFILL 7 1 FMFILL 8 <0f1e3c78f0e1c387> FMFILL 9 <0f87c3e1f0783c1e> FMFILL 10 FMFILL 11 FMFILL 12 <8142241818244281> FMFILL 13 <03060c183060c081> FMFILL 14 <8040201008040201> FMFILL 16 1 FMFILL 17 0.9 FMFILL 18 0.7 FMFILL 19 0.5 FMFILL 20 0.3 FMFILL 21 0.1 FMFILL 22 0.03 FMFILL 23 0 FMFILL 24 FMFILL 25 FMFILL 26 <3333333333333333> FMFILL 27 <0000ffff0000ffff> FMFILL 28 <7ebddbe7e7dbbd7e> FMFILL 29 FMFILL 30 <7fbfdfeff7fbfdfe> FMFILL %%EndSetup %%Page: "1" 1 %%BeginPaperSize: Letter %%EndPaperSize 612 792 0 FMBEGINPAGE 108 81 540 81 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 747 540 747 2 L 7 X V 3 H 0 Z 0 X N 108 46.88 342 63 R 7 X V 0 10 Q 0 X (7/12/93 12:53 pm macrakis@osf.org) 108 56.33 T 360 46.88 540 63 R 7 X V 0 X (1 of 10) 511.69 56.33 T 108 90 540 711 R 7 X V 1 24 Q 0 X -1.2 (Overview of) 197.71 695 S 1 19 Q -0.95 (ANDF) 307.2 695 S 1 24 Q -1.2 ( V) 356.17 695 S -1.2 (alidation) 373.11 695 S 0 12 Q (Stavr) 278.97 601 T (os Macrakis) 306.73 601 T (Open Softwar) 254.47 585 T (e Foundation) 325.88 585 T 0 14 Q (Applications distributed with) 180 495.67 T 2 11 Q (ANDF) 358.43 495.67 T 0 14 Q ( must have) 388.33 495.67 T (consistent semantics acr) 180 479.67 T (oss platforms. OSF and) 323.53 479.67 T (its partners ar) 180 463.67 T (e developing validation methods) 265.24 463.67 T (and tools which will give a high level of) 180 447.67 T (con\336dence to application vendors and users.) 180 431.67 T 108 371.98 540 375 C 90 373.49 558 373.49 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (1. Introduction) 108 380.33 T 2 14 Q -0.36 (An) 108 348.64 P 2 11 Q -0.28 (ANDF) 128.24 348.64 P 2 14 Q -0.36 ( producer translates programs from a source language to) 158.14 348.64 P 2 11 Q -0.28 (ANDF) 473.12 348.64 P 2 14 Q -0.36 ( form,) 503.03 348.64 P (and an) 108 332.64 T 2 11 Q (ANDF) 148.41 332.64 T 2 14 Q ( installer translates from) 178.32 332.64 T 2 11 Q (ANDF) 317.44 332.64 T 2 14 Q ( form to a machine language. The) 347.35 332.64 T 2 11 Q (ANDF) 108 316.64 T 2 14 Q ( form itself is architecture-neutral, and is de\336ned independently of any) 137.9 316.64 T (particular language or machine by a speci\336cation [TDF92] [Macr93a]. The) 108 300.64 T (producer depends on an abstract speci\336cation of an API \050platform-) 108 284.64 T (independent header \336le\051, and the installer on its instantiation on the platform) 108 268.64 T (\050platform-dependent token de\336nition library\051.) 108 252.64 T 2 11 Q (1) 363.71 258.24 T 2 14 Q (OSF and its partners are involved in several ef) 108 224.64 T (forts to assure that all steps in) 367.33 224.64 T (this process conform to their speci\336cations, and that the speci\336cations) 108 208.64 T (themselves are well-de\336ned. These ef) 108 192.64 T (forts should lead to more precise) 318.74 192.64 T (speci\336cations, and tools for checking conformance to speci\336cations.) 108 176.64 T (A precise speci\336cation and ef) 108 148.64 T (fective testing tools will increase con\336dence) 273.28 148.64 T (that applications distributed in) 108 132.64 T 2 11 Q (ANDF) 281.35 132.64 T 2 14 Q ( will execute correctly upon installation.) 311.26 132.64 T 108 105 540 125.09 C 108 112.99 239.98 112.99 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 2 11 Q 0 X 0 K (1. See [Macr92a], [Macr93b].) 108 97.67 T FMENDPAGE %%EndPage: "1" 2 %%Page: "2" 2 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (The importance of validation to ANDF) 108 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (2 of 10) 511.69 54.45 T 108 90 540 720 R 7 X V 108 700.98 540 704 C 90 702.49 558 702.49 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (2. The importance of validation to) 108 709.33 T 2 11 Q (ANDF) 335.89 709.33 T 2 14 Q (V) 108 677.64 T (alidation is an important kind of quality control for software. It is) 116.55 677.64 T (particularly important for software which interoperates with other software) 108 661.64 T (written to the same speci\336cation.) 108 645.64 T 2 11 Q (ANDF) 296.1 645.64 T 2 14 Q ( tools, like \050for instance\051 network) 326 645.64 T (protocol implementations, must work correctly with all other) 108 629.64 T 2 11 Q (ANDF) 452.73 629.64 T 2 14 Q ( tools,) 482.63 629.64 T (regardless of their provenance.) 108 613.64 T -0.22 (OSF is thus engaged in a variety of validation activities for) 108 585.64 P 2 11 Q -0.17 (ANDF) 439.42 585.64 P 2 14 Q -0.22 (. The goal is) 468.2 585.64 P (to demonstrate that the technology correctly implements application) 108 569.64 T (programs regardless of the combination of producer) 108 553.64 T (, installer) 398.1 553.64 T (, and header) 449.62 553.64 T (\336les used.) 108 537.64 T 108 477.95 540 480.98 C 90 479.46 558 479.46 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (3. End-to-end testing: language tests and sample applications) 108 486.31 T 2 14 Q (The \336rst kind of validation testing we undertook was compiling and running) 108 454.62 T (C language validation suites such as Plum-Hall under the) 108 438.62 T 2 11 Q (ANDF) 431.74 438.62 T 2 14 Q ( technology) 461.64 438.62 T (.) 526.41 438.62 T (These discovered some minor errors, and gave us con\336dence that the) 108 422.62 T (technology covered the full C language to \336rst approximation.) 108 406.62 T (W) 108 378.62 T (e then proceeded to port a variety of applications to) 120.09 378.62 T 2 11 Q (ANDF) 411.54 378.62 T 2 14 Q ( [Macr93a] and) 441.44 378.62 T (run them through the compilation chain on a variety of machines. In) 108 362.62 T (particular) 108 346.62 T (, we successfully ported major applications such as Informix\325) 161.06 346.62 T (s) 504.21 346.62 T (W) 108 330.62 T (ingz [John92] and Gnu Emacs [John91]. W) 120.65 330.62 T (ork on Oracle is ongoing) 362.41 330.62 T ([W) 108 314.62 T (att93a] Other experiments have been performed with Postgres [W) 124.75 314.62 T (att92],) 492.01 314.62 T (Ghostscript [Ford92], and Cscope [Macr92].) 108 298.62 T -0.05 (This work has contributed to our understanding of portability issues, and has) 108 270.62 P (found surprisingly few bugs in the technology itself.) 108 254.62 T (Although such informal testing does \336nd real bugs, and measures the) 108 226.62 T -0.29 (robustness of the technology when confronted with full-size software, it does) 108 210.62 P (not provide systematic coverage.) 108 194.62 T 108 134.93 540 137.95 C 90 136.44 558 136.44 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (4. Correctness and completeness of the) 108 143.29 T 2 11 Q (ANDF) 367.86 143.29 T 1 16 Q ( speci\336cation) 397.76 143.29 T 2 14 Q (The) 108 111.6 T 2 11 Q (ANDF) 133.26 111.6 T 2 14 Q ( speci\336cation itself must be correct and unambiguous, since any) 163.16 111.6 T (other validation depends on this.) 108 95.6 T FMENDPAGE %%EndPage: "2" 3 %%Page: "3" 3 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (Corr) 108 736.84 T (ectness and completeness of the ANDF speci\336cation) 124.73 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (3 of 10) 511.69 54.45 T 108 90 540 720 R 7 X V 2 11 Q 0 X (ANDF) 108 710.67 T 2 14 Q ( is currently de\336ned by an English-language speci\336cation written by) 137.9 710.67 T (DRA. There are several ways that OSF and its partners are working to) 108 694.67 T (improve it: independent implementations, formal speci\336cation, and test) 108 678.67 T (writing.) 108 662.67 T 3 F (\321 Implementation) 108 610.67 T 2 F (Independent implementations of producers and installers are a good test of) 108 581.67 T (the speci\336cation. The Gandf project is an example, which has pointed out) 108 565.67 T (some dif) 108 549.67 T (\336cult areas. [Ford93]) 156.33 549.67 T 3 F (\321 Formal speci\336cation) 108 497.67 T 2 F -0.03 (As part of the Esprit project G) 108 468.67 P 2 11 Q -0.03 (LUE) 277.24 468.67 P 2 14 Q -0.03 (, DDC-I \050L) 298.6 468.67 P -0.03 (yngby) 360.33 468.67 P -0.03 (, Denmark\051 is developing) 394.4 468.67 P (a formal speci\336cation of the) 108 452.67 T 2 11 Q (ANDF) 268.49 452.67 T 2 14 Q ( language using RSL in an Action) 298.4 452.67 T (Semantics style. [Hans92] [T) 108 436.67 T (oft93]) 270.24 436.67 T (W) 108 408.67 T (e expect that, besides the intrinsic value of having a formal speci\336cation,) 120.09 408.67 T -0.35 (the process of creating it will bring up questions which need to be resolved in) 108 392.67 P (the informal speci\336cation.) 108 376.67 T 3 F (\321 T) 108 324.67 T (est writing) 130.43 324.67 T 2 F (The producer and installer validation ef) 108 295.67 T (forts at OSF Research Institute) 328.86 295.67 T (\050Grenoble\051 and its G) 108 279.67 T 2 11 Q (LUE) 223.41 279.67 T 2 14 Q ( partners should also produce feedback on the) 244.77 279.67 T (speci\336cation.) 108 263.67 T 0 F (Impr) 108 211.67 T (oved) 138.84 211.67 T 2 11 Q (ANDF) 170.32 211.67 T 0 14 Q ( speci\336cation) 200.23 211.67 T 2 F (At the end of the Esprit project, the) 108 182.67 T 2 11 Q (ANDF) 308.92 182.67 T 2 14 Q ( speci\336cation will have received) 338.82 182.67 T -0.05 (comments from producer writers, installer writers, formal speci\336ers, and test) 108 166.67 P (writers. The informal speci\336cation, formal speci\336cation, and tests should) 108 150.67 T (re\337ect precisely the same semantics. The cross-checking possible among the) 108 134.67 T -0.35 (three forms should increase con\336dence in each one. Moreover) 108 118.67 P -0.35 (, a side product) 452.41 118.67 P FMENDPAGE %%EndPage: "3" 4 %%Page: "4" 4 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (Independent validation of pr) 108 736.84 T (oducers and installers) 205.82 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (4 of 10) 511.69 54.45 T 108 90 540 720 R 7 X V 2 14 Q 0 X (of these speci\336cation and test writing ef) 108 710.67 T (forts will be an implementor) 330.81 710.67 T (\325) 490.68 710.67 T (s guide) 494.57 710.67 T (which points out tricky or surprising aspects of the language.) 108 694.67 T 108 634.98 540 638 C 90 636.49 558 636.49 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (5. Independent validation of producers and installers) 108 643.33 T 2 14 Q (End-to-end tests as described in section 3. on page 2 cannot show that) 108 611.64 T (producers are producing correct) 108 595.64 T 2 11 Q (ANDF) 289.83 595.64 T 2 14 Q (, nor that installers are interpreting) 318.61 595.64 T 2 11 Q (ANDF) 108 579.64 T 2 14 Q ( correctly) 137.9 579.64 T (. There are several kinds of problems that might remain) 190.22 579.64 T (undetected:) 108 563.64 T (\245) 118.8 539.64 T (Incomplete coverage in installers;) 129.6 539.64 T (\245) 118.8 515.64 T (Erroneous usage in producers;) 129.6 515.64 T (\245) 118.8 491.64 T (T) 129.6 491.64 T (ar) 137.17 491.64 T (get-dependent semantics.) 147.79 491.64 T (The validation project addresses them through an installer test suite, a) 108 463.64 T (producer test suite, and a generalized) 108 447.64 T 2 11 Q (ANDF) 318.99 447.64 T 2 14 Q ( interpreter) 348.89 447.64 T (. This work is being) 409.9 447.64 T (done at the OSF Research Institute \050Grenoble\051 [Brou93] and its partners in) 108 431.64 T (the Esprit G) 108 415.64 T 2 11 Q (LUE) 175.62 415.64 T 2 14 Q ( project.) 196.98 415.64 T 108 355.95 540 358.98 C 90 357.46 558 357.46 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (6. Installer testing) 108 364.31 T 2 14 Q -0.63 (Installer testing checks that installers correctly implement the) 108 332.62 P 2 11 Q -0.5 (ANDF) 450.36 332.62 P 2 14 Q -0.63 ( language.) 480.26 332.62 P (It is essentially the same problem as a classic language validation suite such) 108 316.62 T (as the Ada validation capability [Good86].) 108 300.62 T 0 F (End-to-end tests miss many things) 108 248.62 T 2 F (Separate installer testing is necessary because end-to-end tests miss many) 108 219.62 T -0.25 (things. This is because installers used as part of a producer/installer chain are) 108 203.62 P (only exposed to that) 108 187.62 T 2 11 Q (ANDF) 224.6 187.62 T 2 14 Q ( which the producer produces.) 254.5 187.62 T (Currently) 108 159.62 T (, there is only one operational producer of) 160.72 159.62 T 2 11 Q (ANDF) 398.93 159.62 T 2 14 Q (, the DRA C) 427.71 159.62 T (producer) 108 143.62 T (. This producer may not use all the capabilities of the) 156.96 143.62 T 2 11 Q (ANDF) 457.75 143.62 T 2 14 Q -0.53 (language; indeed, the) 108 127.62 P 2 11 Q -0.41 (ANDF) 229.21 127.62 P 2 14 Q -0.53 ( language has capabilities which are unlikely to be) 259.12 127.62 P -0.13 (necessary for any C producer) 108 111.62 P -0.13 (. Thus,) 270.69 111.62 P 2 11 Q -0.1 (ANDF) 312.41 111.62 P 2 14 Q -0.13 ( generated by the DRA C producer) 342.32 111.62 P (cannot exercise the whole of the installer) 108 95.62 T (.) 336.49 95.62 T FMENDPAGE %%EndPage: "4" 5 %%Page: "5" 5 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (The Generalized ANDF interpr) 108 736.84 T (eter for pr) 215.12 736.84 T (oducer testing) 250.49 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (5 of 10) 511.69 54.45 T 108 90 540 720 R 7 X V 2 14 Q 0 X (There may be combinations of constructs which will not be used by any one) 108 710.67 T (existing language. Nonetheless, these combinations must be installed) 108 694.67 T (correctly) 108 678.67 T (, because future languages may require them, or hand-written) 156.82 678.67 T 2 11 Q (ANDF) 503.81 678.67 T 2 14 Q (may use them. For that matter) 108 662.67 T (, in-line inclusion of) 275.33 662.67 T 2 11 Q (ANDF) 392.32 662.67 T 2 14 Q ( generated from one) 422.23 662.67 T (language into) 108 646.67 T 2 11 Q (ANDF) 187.28 646.67 T 2 14 Q ( generated from another language is a legal and useful) 217.18 646.67 T (optimization.) 108 630.67 T (Finally) 108 602.67 T (, all current producers and installers are partially or wholly based on) 146.74 602.67 T -0.16 (DRA engineering. This means that there may be implicit assumptions shared) 108 586.67 P (by producers and installers, which are not documented in the) 108 570.67 T 2 11 Q (ANDF) 451.92 570.67 T 2 14 Q (speci\336cation.) 108 554.67 T 0 F (The) 108 502.67 T 2 11 Q (ANDF) 134.82 502.67 T 0 14 Q ( validation suite offers systematic coverage) 164.73 502.67 T 2 F (Unlike a producer) 108 473.67 T (, the validation suite is or) 208.46 473.67 T (ganized around the list of) 349.69 473.67 T 2 11 Q (ANDF) 495.42 473.67 T 2 14 Q (constructions. Each construction is tested in its normal and extreme cases.) 108 457.67 T (Already) 108 441.67 T (, preliminary testing has shown undocumented limitations in the) 152.16 441.67 T (DRA installers which were not detected using producer) 108 425.67 T (-generated) 418.21 425.67 T 2 11 Q (ANDF) 480.76 425.67 T 2 14 Q (.) 509.54 425.67 T (Some tests are inspired by particular machine architectures\325 limitations.) 108 397.67 T (Others are inspired by peculiar combinations of) 108 369.67 T 2 11 Q (ANDF) 378.08 369.67 T 2 14 Q ( features which seem) 407.98 369.67 T (unlikely to be used by producers. Although these cases may appear) 108 353.67 T (pathological, they are typical of the cases which arise in certain applications) 108 337.67 T (such as the output of program generation systems or inlining of code written) 108 321.67 T (in one language into code written in another) 108 305.67 T (.) 354 305.67 T (Others are inspired by common optimizer errors.) 108 277.67 T 108 217.98 540 221 C 90 219.49 558 219.49 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (7. The Generalized) 108 226.33 T 2 11 Q (ANDF) 236.81 226.33 T 1 16 Q ( interpreter for producer testing) 266.71 226.33 T 2 14 Q -0.43 (Producers are harder to test independently than installers. The problem is that) 108 194.64 P (their output is) 108 178.64 T 2 11 Q (ANDF) 189.24 178.64 T 2 14 Q (, and some way is needed of checking whether it is the) 218.02 178.64 T (correct) 108 162.64 T 2 11 Q (ANDF) 150.34 162.64 T 2 14 Q ( without depending on a particular installer) 180.25 162.64 T (. Of course,) 420.42 162.64 T (executing C validation suites compiled with a given producer on multiple) 108 146.64 T (installers is a good \336rst step.) 108 130.64 T FMENDPAGE %%EndPage: "5" 6 %%Page: "6" 6 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (API testing) 108 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (6 of 10) 511.69 54.45 T 108 90 540 720 R 7 X V 2 14 Q 0 X (The solution that has been adopted is a generalized) 108 710.67 T 2 11 Q (ANDF) 396.73 710.67 T 2 14 Q ( interpreter \050GAI\051.) 426.64 710.67 T -0.39 (Unlike all existing installers, it will have no dependence on DRA technology) 108 694.67 P -0.39 (.) 533.4 694.67 P (As an independent implementation, it is expected not to share implicit) 108 678.67 T (assumptions with the DRA technology) 108 662.67 T (. Moreover) 323.97 662.67 T (, it will have extensive) 385.58 662.67 T (debugging facilities.) 108 646.67 T (But its greatest value will be that it can create a particular execution) 108 618.67 T (environment which might not exist on any current installer) 108 602.67 T (. For instance, it) 436.02 602.67 T (might emulate a very lar) 108 586.67 T (ge word length \050128 bits\051, or a word length which is) 244.54 586.67 T (not a power of two \05040 bits\051. Its) 108 570.67 T 4 F -0.7 (long) 288.71 570.67 S 2 F (\325) 319.49 570.67 T (s might be just one bit wider than its) 323.38 570.67 T 4 F -0.7 (int) 108 554.67 S 2 F (\325) 131.09 554.67 T (s. Its address space may have only the minimal structure de\336ned by the) 134.98 554.67 T 2 11 Q (ANDF) 108 538.67 T 2 14 Q ( speci\336cation, rather than being linear or segmented.) 137.9 538.67 T (The GAI will also attempt to provide \322perverse\323 but legal interpretations of) 108 510.67 T (programs. For instance \050depending on the \336nal form of the speci\336cation\051, it) 108 494.67 T (may return random results for over\337ow calculations rather than the expected) 108 478.67 T (modular result.) 108 462.67 T (The GAI is also expected to support all legal permutations of the order of) 108 434.67 T -0.54 (evaluation. In ef) 108 418.67 P -0.54 (fect,) 197.98 418.67 P 2 11 Q -0.42 (ANDF) 225.42 418.67 P 2 14 Q -0.54 ( is quite liberal in permitting reordering and indeed) 255.32 418.67 P (interleaving of expression evaluation. The GAI will take maximum) 108 402.67 T (advantage of this to detect dependence on evaluation order) 108 386.67 T (.) 435.97 386.67 T (The GAI will be used in conjunction with C test programs and validation) 108 358.67 T (suites to detect incorrect assumptions made by) 108 342.67 T 2 11 Q (ANDF) 371.88 342.67 T 2 14 Q ( producers.) 401.79 342.67 T 108 282.98 540 286 C 90 284.49 558 284.49 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (8. API testing) 108 291.33 T 2 14 Q (The platform-independent abstract header \336les and the platform-dependent) 108 259.64 T (concrete header \336les used with the) 108 243.64 T 2 11 Q (ANDF) 304.62 243.64 T 2 14 Q ( technology must correspond to the) 334.52 243.64 T (API they implement. T) 108 227.64 T (o check this conformance, OSF has run the VSX test) 236.06 227.64 T (suite for XPG/3 on the) 108 211.64 T 2 11 Q (ANDF) 238.2 211.64 T 2 14 Q ( technology) 268.1 211.64 T (, and also the gcc technology \050as a) 332.87 211.64 T (baseline\051. [W) 108 195.64 T (att93b]) 182.26 195.64 T (Several classes of errors have appeared:) 108 167.64 T FMENDPAGE %%EndPage: "6" 7 %%Page: "7" 7 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (API testing) 108 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (7 of 10) 511.69 54.45 T 108 90 540 720 R 7 X V 2 14 Q 0 X (Speci\336cation inconsistencies and errors) 129.6 710.67 T (The XPG/3 speci\336cation contains some internal) 216 694.67 T -1.23 (inconsistencies and non-) 216 678.67 P 2 11 Q -0.97 (ANSI) 351.11 678.67 P 2 14 Q -1.23 ( C requirements. These errors) 376.74 678.67 P -0.09 (were detected by tcc, where ordinary compilers could not) 216 662.67 P (check them \050since they depend on concrete, not abstract,) 216 646.67 T (interface speci\336cations\051. For instance, the) 216 630.67 T 4 F -0.7 (nl_catd) 452.65 630.67 S 2 F ( type) 506.52 630.67 T (is left unspeci\336ed, yet it is assumed that) 216 614.67 T 4 F -0.7 (-1) 442.59 614.67 S 2 F ( can be) 457.98 614.67 T (converted to it to designate an error) 216 598.67 T (.) 414.19 598.67 T (T) 129.6 574.67 T (est suite errors) 137.17 574.67 T (The VSX test suite contains several non-) 216 558.67 T 2 11 Q (ANSI) 444.51 558.67 T 2 14 Q ( C) 470.14 558.67 T (constructions.) 216 542.67 T (Abstract header errors) 129.6 518.67 T (W) 216 502.67 T (e have found two missing interfaces in the) 228.09 502.67 T 2 11 Q (ANDF) 468.25 502.67 T 2 14 Q (headers.) 216 486.67 T (Producer errors) 129.6 462.67 T (The macro and function namespaces are not completely) 216 446.67 T (separate.) 216 430.67 T 2 11 Q (ANDF) 129.6 406.67 T 2 14 Q ( language errors) 159.51 406.67 T (W) 216 390.67 T (e have not detected any errors in the speci\336cation of) 228.09 390.67 T 2 11 Q (ANDF) 216 374.67 T 2 14 Q (.) 244.79 374.67 T (Installer errors) 129.6 350.67 T (Several) 216 334.67 T 2 11 Q (CISC) 261.46 334.67 T 2 14 Q ( installers commit least-signi\336cant digit) 285.88 334.67 T (rounding errors on \337oating-point constants.) 216 318.67 T (Concrete header errors) 129.6 294.67 T (W) 216 278.67 T (e have not detected any concrete header \050platform-) 228.09 278.67 T (dependent token library\051 errors.) 216 262.67 T -0.23 (In several cases, we have not yet determined in which category an error falls.) 108 234.67 P (However) 108 218.67 T (, it currently appears that there are more errors in the XPG/3) 158.72 218.67 T (speci\336cation and the VSX tests than in the) 108 202.67 T 2 11 Q (ANDF) 348.96 202.67 T 2 14 Q ( technology) 378.87 202.67 T (. Many of these) 443.64 202.67 T (errors were not reported by previous compilers.) 108 186.67 T FMENDPAGE %%EndPage: "7" 8 %%Page: "8" 8 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (Conclusion) 108 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (8 of 10) 511.69 54.45 T 108 90 540 720 R 7 X V 108 700.98 540 704 C 90 702.49 558 702.49 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (9. Conclusion) 108 709.33 T 2 14 Q -0.12 (OSF and its partners are taking multiple approaches to increasing con\336dence) 108 677.64 P (in the) 108 661.64 T 2 11 Q (ANDF) 142.98 661.64 T 2 14 Q ( technology) 172.89 661.64 T (.) 237.66 661.64 T (The) 108 633.64 T 2 11 Q (ANDF) 133.26 633.64 T 2 14 Q ( speci\336cation itself, producers, installers, and header \336les are all) 163.16 633.64 T (being strengthened by the work in Cambridge, in Grenoble, and at Esprit) 108 617.64 T (partners\325 sites.) 108 601.64 T FMENDPAGE %%EndPage: "8" 9 %%Page: "9" 9 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (Conclusion) 108 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (9 of 10) 511.69 54.45 T 108 90 540 720 R 7 X V 108 700.98 540 704 C 90 702.49 558 702.49 2 L 0.25 H 2 Z 0 X 0 K N 0 0 612 792 C 1 16 Q 0 X 0 K (10. Bibliography) 108 709.33 T 2 14 Q ([Brou93]) 108 677.64 T (Fr\216deric Broustaut, Christian Fabre, Fran\215ois de) 216 677.64 T (Ferri\217re, Eric Ivanov) 216 661.64 T (,) 332.04 661.64 T 2 11 Q (ANDF) 339.03 661.64 T 3 14 Q ( V) 368.94 661.64 T (alidation Suites) 379.43 661.64 T (Speci\336cation.) 216 645.64 T 2 F ( OSF Research Institute, Grenoble, March) 291.78 645.64 T (1993.) 216 629.64 T ([Ford92]) 108 601.64 T (Richard Ford, OSF RI internal report.) 216 601.64 T ([Ford93]) 108 573.64 T (\321,) 216 573.64 T 2 11 Q (GANDF) 236.99 573.64 T 2 14 Q (:) 274.83 573.64 T 3 F (Status and Design) 282.21 573.64 T 2 F (, OSF Research Institute,) 384.05 573.64 T (April 1993.) 216 557.64 T ([Good86]) 108 529.64 T (John Goodenough,) 216 529.64 T 3 F (The Ada compiler validation) 325.21 529.64 T (capability) 216 513.64 T 2 F (. Softech, Inc., December 1986.) 271.06 513.64 T ([Hans92]) 108 485.64 T (Bo Stig Hansen, J\277r) 216 485.64 T (gen Bundgaard,) 327.69 485.64 T 3 F (The Role of the) 419.78 485.64 T 2 11 Q (ANDF) 216 469.64 T 3 14 Q ( Formal Speci\336cation) 245.9 469.64 T 2 F (. DDC International A/S,) 367.16 469.64 T (Document code 202104/RPT/5, December 1992.) 216 453.64 T ([John91]) 108 425.64 T (Andrew Johnson, OSF RI internal report.) 216 425.64 T ([John92]) 108 397.64 T (\321, OSF RI internal report.) 216 397.64 T ([Macr92a]) 108 369.64 T (Stavros Macrakis,) 216 369.64 T 3 F (The Structur) 320.54 369.64 T (e of) 390.37 369.64 T 2 11 Q (ANDF) 414.47 369.64 T 2 14 Q (. OSF Research) 443.25 369.64 T (Institute, October 1992.) 216 353.64 T ([Macr92b]) 108 325.64 T (\321, OSF RI internal report.) 216 325.64 T ([Macr93a]) 108 297.64 T (\321,) 216 297.64 T 3 F (Porting to) 236.99 297.64 T 2 11 Q (ANDF) 297.63 297.64 T 2 14 Q (. OSF Research Institute, January) 326.42 297.64 T (1993.) 216 281.64 T ([Macr93b]) 108 253.64 T (\321,) 216 253.64 T 3 F (Building Applications using) 236.99 253.64 T 2 11 Q (ANDF) 396.75 253.64 T 2 14 Q (. OSF Research) 425.54 253.64 T (Institute, February 1993.) 216 237.64 T ([TDF92]) 108 209.64 T 3 F (TDF Speci\336cation) 216 209.64 T 2 F ( \050December) 318.21 209.64 T (, 1992\051. Defence Research) 383.31 209.64 T (Agency) 216 193.64 T (, Malvern, U.K.) 258.61 193.64 T ([T) 108 165.64 T (oft93]) 120.23 165.64 T (Jens Ulrik T) 216 165.64 T (oft,) 284.2 165.64 T 3 F (Feasibility of Using RSL as the) 306.74 165.64 T (Speci\336cation Language for the) 216 149.64 T 2 11 Q (ANDF) 391.67 149.64 T 3 14 Q ( Formal) 421.58 149.64 T (Speci\336cation) 216 133.64 T 2 F (. DDC International A/S, Document code) 288.28 133.64 T (202104/RPT/8, January 1993.) 216 117.64 T FMENDPAGE %%EndPage: "9" 10 %%Page: "10" 10 612 792 0 FMBEGINPAGE 108 74.02 540 74.02 2 L 7 X 0 K V 0.25 H 2 Z 0 X N 108 750.02 540 750.02 2 L 7 X V 0 Z 0 X N 108 46.88 324 63 R 7 X V 0 10 Q 0 X (Overview of ANDF Validation) 108 56.33 T 108 726.98 540 742.18 R 7 X V 0 8 Q 0 X (Conclusion) 108 736.84 T 351 45 540 61.12 R 7 X V 0 10 Q 0 X (10 of 10) 506.69 54.45 T 108 90 540 720 R 7 X V 2 14 Q 0 X ([W) 108 710.67 T (att92]) 124.75 710.67 T (Thomas J. W) 216 710.67 T (att,) 289.11 710.67 T 3 F (Pr) 310.1 710.67 T (eliminary Report of Experience) 323.57 710.67 T (Porting Postgr) 216 694.67 T (es with the Resear) 299.06 694.67 T (ch Pr) 400.75 694.67 T (ototype ANDF) 430.94 694.67 T (T) 216 678.67 T (echnology) 222.49 678.67 T 2 F (, OSF Research Institute, August, 1992.) 279.09 678.67 T ([W) 108 650.67 T (att93a]) 124.75 650.67 T (\321,) 216 650.67 T 3 F (Porting Oracle with the ANDF Compiler) 236.99 650.67 T (T) 216 634.67 T (echnology\321A Pr) 222.49 634.67 T (ogr) 317.96 634.67 T (ess Report,) 336.88 634.67 T 2 F ( OSF Research Institute,) 399.06 634.67 T (March 1993.) 216 618.67 T ([W) 108 590.67 T (att93b]) 124.75 590.67 T (\321,) 216 590.67 T 3 F (A Conformance Comparison between) 236.99 590.67 T 2 11 Q (ANDF) 450.75 590.67 T 3 14 Q ( and) 480.65 590.67 T (GCC for X/Open V) 216 574.67 T (eri\336cation of an OSF/1) 321.33 574.67 T 2 11 Q (MK SS) 450.76 574.67 T 3 14 Q (Platform,) 216 558.67 T 2 F ( OSF Research Institute, March 1993.) 269.26 558.67 T 108 90 540 720 C 108 90 540 216 C 108 90 540 207 R 7 X 0 K V 2 10 Q 0 X (Copyright 1993 by Open Software Foundation, Inc.) 108 200.33 T (All Rights Reserved) 108 178.33 T -0.19 (Permission to reproduce this document without fee is hereby granted, provided that the copyright notice and) 108 154.33 P -0.08 (this permission notice appear in all copies or derivative works. OSF MAKES NO W) 108 142.33 P -0.08 (ARRRANTY OF ANY) 443.36 142.33 P (KIND WITH REGARD T) 108 130.33 T (O THIS MA) 213.57 130.33 T (TERIAL, INCLUDING, BUT NOT LIMITED T) 262.98 130.33 T (O, THE IMPLIED) 459.05 130.33 T -0.04 (W) 108 118.33 P -0.04 (ARRANTIES OF MERCHANT) 116.32 118.33 P -0.04 (ABILITY AND FITNESS FOR A P) 245.37 118.33 P -0.04 (AR) 390 118.33 P -0.04 (TICULAR PURPOSE. OSF shall) 403.28 118.33 P (not be liable for errors contained herein or for any direct or indirect, incidental, special or consequential) 108 106.33 T (damages in connection with the furnishing, performance, or use of this material.) 108 94.33 T 108 90 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "10" 11 %%Trailer %%BoundingBox: 0 0 612 792 %%Pages: 10 1 %%DocumentFonts: Times-Bold %%+ Times-BoldItalic %%+ Times-Roman %%+ Times-Italic %%+ Courier