From J.L.Schonfelder@liverpool.ac.uk Fri Mar 18 11:22:06 1994
Received: from mailhub.liverpool.ac.uk (mail.liv.ac.uk) by dkuug.dk with SMTP id AA04157
  (5.65c8/IDA-1.4.4j for <SC22WG5@dkuug.dk>); Fri, 18 Mar 1994 12:21:52 +0100
Received: from liverpool.ac.uk by mailhub.liverpool.ac.uk with SMTP (PP) 
          id <22552-0@mailhub.liverpool.ac.uk>; Fri, 18 Mar 1994 11:22:07 +0000
From: "Dr.J.L.Schonfelder" <J.L.Schonfelder@liverpool.ac.uk>
Message-Id: <9403181122.AA20960@uxh.liv.ac.uk>
Subject: postscript functions in specification expressions
To: SC22WG5@dkuug.dk (SC22/WG5 members)
Date: Fri, 18 Mar 1994 11:22:06 +0000 (GMT)
X-Mailer: ELM [version 2.4 PL23]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 25467
X-Charset: ASCII
X-Char-Esc: 29

--------------------------------------------------------------------
%-12345X@PJL ENTER LANGUAGE = POSTSCRIPT
%!PS-Adobe
/wpdict	120 dict def
wpdict	begin
/bdef	{bind def} bind def

/bflg	false def
/Bfont	0 def
/bon	false def

/psz	0 def
/_S	/show load def
/_t	{0 rmoveto} bdef

/_pixelsnap
	{transform .25 sub round .25 add
	 exch .25 sub round .25 add exch itransform
	} bdef
/_pixeldsnap
	{ dtransform round exch round exch idtransform } bdef

/_lt	{_pixelsnap lineto} bdef
/_rlt	{_pixeldsnap rlineto} bdef
/_mt	{_pixelsnap moveto} bdef
/_rmt	{_pixeldsnap rmoveto} bdef

/bshow	{gsave psz 30 div 0 _rmt dup show grestore show} bdef

/DUx	0 def
/DUy	0 def
/hscl	0 def

/M	{_mt
	 2 mul -2 2
	 { -2 roll 0 _rmt _S } for
	} bdef

/makeoutl
	{ dup /OutlineFlag known not
	  { dup dup length 2 add dict begin
	    {1 index /FID ne { def }{ pop pop } ifelse } forall
	    /UniqueID known {/UniqueID UniqueID 10000 add def} if
	    /PaintType PaintType 0 eq { 2 }{ PaintType } ifelse def
	    /StrokeWidth 15 def
	    /OutlineFlag true def
	    /OutlineFont currentdict end definefont
	  } if
	} bdef

/nbuff	50 string def
/orntsv	0 def
/plen	0 def
/pwid	0 def
/picstr	1 string def

/WPencoding StandardEncoding 256 array copy def 0
 [ 127/Aacute/Acircumflex/Adieresis/Agrave/Aring/Atilde/Ccedilla
  /Delta/Eacute/Ecircumflex/Edieresis/Egrave/Eth/Gamma/Iacute
  /Icircumflex/Idieresis/Igrave/Lambda/Ntilde/Oacute
  /Ocircumflex/Odieresis/Ograve/Omega/Otilde/Phi/Pi/Psi
  /Scaron/Sigma/TeXtext32/Theta/Thorn
  209/Uacute/Ucircumflex/Udieresis/Ugrave/Upsilon/Xi/Yacute
  /Ydieresis/Zcaron/aacute/acircumflex/adieresis/agrave
  /aring/atilde/brokenbar
  228/ccedilla/copyright/degree/divide
  236/dotlessj/eacute/ecircumflex/edieresis/egrave
  242/eth/ff/ffi
  246/ffl/iacute
  252/icircumflex/idieresis/igrave/logicalnot
  1/minus/mu/multiply/ntilde/oacute/ocircumflex/odieresis
  /ograve/onehalf/onequarter/onesuperior/otilde/plusminus
  /registered/scaron/thorn/threequarters/threesuperior
  /trademark/twosuperior/uacute/ucircumflex/udieresis
  /ugrave/yacute/ydieresis/zcaron
]
{ dup type /nametype eq
  { WPencoding 2 index 2 index put pop 1 add }
  { exch pop } ifelse
} forall pop

/reencode
{ dup FontDirectory exch known
   { findfont }
   {  dup nbuff cvs dup length 1 sub get 82 eq
   {dup nbuff cvs dup length 1 sub 0 exch getinterval
   findfont begin
   currentdict dup length dict begin
{ 1 index /FID ne {def} {pop pop} ifelse } forall
/FontName exch def

/Encoding WPencoding def
currentdict dup end end
/FontName get exch definefont
     }
     { findfont } ifelse
  } ifelse
} bdef

/WPDLencoding StandardEncoding 256 array copy def 0
[ 127     /SA420000/SD630000/SF010000/SF020000/SF030000
/SF040000/SF050000/SF060000/SF070000/SF080000/SF090000
/SF100000/SF110000/SF140000/SF150000/SF160000/SF190000
/SF200000/SF210000/SF220000/SF230000/SF240000/SF250000/SF260000
/SF270000/SF280000/SF360000/SF370000/SF380000/SF390000/SF400000
/SF410000/SF420000/SF430000
209 /SF440000/SF450000/SF460000/SF470000/SF480000
/SF490000/SF500000/SF510000/SF520000/SF530000/SF540000
/SF570000/SF580000/SF590000/SF600000/SF610000
228 /SM570001/SM590000/SM600000/SM630000
236 /SM680000/SM690000/SM700000/SM750000/SM750002
242 /SM770000/SM790000/SP320000
246 /SS000000/SS010000
252 /SS260000/SS270000/SV040000/apostrophereverse
1/arrowboth/arrowdown/arrowleft/arrowright/arrowup/club
/deutschmark/diamond/diamondopen/exclamdbl/female
/fiveeighths/franc/heart/male/musicalnote/musicalnotedbl
/napostrophe/nsuperior/oneeighths/seveneighths/spade
/threeeights/underscoredbl/SM760000
]
{ dup type /nametype eq
  { WPDLencoding 2 index 2 index put pop 1 add }
  { exch pop } ifelse
} forall pop

/reencodeL
    { dup FontDirectory exch known
      { findfont }
      {  dup nbuff cvs dup length 1 sub get 76 eq
         {    dup nbuff cvs dup length 1 sub 0 exch getinterval
         findfont begin
         currentdict dup length dict begin
         { 1 index /FID ne {def} {pop pop} ifelse } forall
         /FontName exch def
         /Encoding WPDLencoding def
         currentdict dup end end
         /FontName get exch definefont
         }
         { findfont } ifelse
      } ifelse
    } bdef

/ron	false def
/sflg	false def
/slan	0 def
/sp	32 def

/sshow
	{ save exch
	   gsave
	    psz 20 div dup neg _rmt dup show
	   grestore
	   dup
	   save exch
	    Bfont setfont
	    1 setgray show
	   restore
	   currentfont makeoutl setfont show
	   currentpoint 3 -1 roll
	  restore _mt
	} bdef

/Sx	0 def
/Sy	0 def
/Ux	0 def
/Uy	0 def
/W	/widthshow load def

/_B	{/bflg true def
	 sflg not {/_S /bshow load def /bon true def} if
	} bdef
/_b	{/bflg false def
	 bon {/_S /show load def /bon false def} if
	} bdef
/_bd	{save} bdef
/_bp	{save 2 setmiterlimit .06 .06 scale 0 0 _mt} bdef
/_ccprocs
	{/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
	} def
/_clr	{3 {255 div 3 1 roll} repeat
	 ron {6 3 roll pop pop pop} {setrgbcolor} ifelse
	} bdef
/_cp	/closepath load def
/_cw	{stroke initclip _mt 0 2 index
	 _rlt 0 _rlt 0 exch neg
	 _rlt clip newpath
	} bdef
/_d	/setdash load def
/_DU	{currentpoint /DUy exch def /DUx exch def} bdef
/_du	{gsave
	  save
	  8 setlinewidth
      currentpoint -30 add _mt
      DUx DUy -30 add _lt stroke
	  restore
	  8 setlinewidth
	  currentpoint -50 add _mt
	  DUx DUy -50 add _lt stroke
	 grestore
	} bdef
/_ed	{restore} bdef
/_ep	{restore showpage 0 0 _mt} bdef
/_f	/eofill load def
/_ff	{ exch reencode exch
	  3 div dup /psz exch def
	  scalefont dup /Bfont exch def setfont
	} bdef
/_ffs	{ /slan exch 10 div def /hscl exch 1000 div def
	  /psz exch 3 div def
	  [ psz hscl mul 0 slan dup sin exch cos div psz mul psz 0 0 ]
	  exch reencode exch makefont dup /Bfont exch def setfont
	} bdef
/_g	/setgray load def
/_gs	{neg 100 add 100 div setgray} bdef
/_i	{gsave
	  dup /picstr exch 7 add 8 idiv string def
	  3 1 roll translate dup 1 scale
	  dup 1 1 [5 -1 roll 0 0 1 0 0]
	  {currentfile picstr readhexstring pop} image
         grestore
        } bdef
/_is	{save 4 1 roll
	  dup /picstr exch 7 add 8 idiv string def
	  3 1 roll translate dup 1 scale
	  dup 1 1 [5 -1 roll 0 0 1 0 0]
	  {currentfile picstr readhexstring pop} image
	 restore
	} bdef
/_ie	{1 eq { {1 exch sub} currenttransfer _ccprocs settransfer} if
	 /_isx exch def /_isy exch def
	 _isx mul exch _isy mul translate
	 add 2 div /_txc exch def
	 add 2 div /_tyc exch def
	 _txc _isx mul _tyc _isy mul translate
	 360 exch sub rotate
	 1 eq { _isx neg _isy scale }
	 { _isx _isy scale }
	 ifelse _txc neg _tyc neg translate
	} bdef
/_irms	{save
	  12 1 roll
	  1 eq {{1 exch sub} currenttransfer _ccprocs settransfer} if
	  /picstr exch string def translate
	  2 index 6 index sub 2 div 2 index 6 index sub 2 div neg
	  translate
	  5 index 5 index 2 div neg exch 2 div exch
	  2 copy neg exch neg exch 5 2 roll translate
	  360 exch sub rotate
	  3 index 3 index 7 index div exch 8 index div exch scale
	  translate pop pop 2 index 2 index scale
	  3 index 0 eq
	  { [ 3 index 0 0 5 index neg 0 0 ] }
	  { 3 index 1 eq
      { [ 3 index 0 0 5 index 0 7 index ] }
      { 3 index 128 eq
	  { [ 3 index neg 0 0 5 index neg 7 index 0 ] }
	  { [ 3 index neg 0 0 5 index 7 index 7 index ] } ifelse
	    } ifelse
	  } ifelse
          {currentfile picstr readhexstring pop} image
          pop
	 restore
	} bdef

/_l	{_lt} bdef
/_lr	{_rlt} bdef
/_m	{_mt} bdef
/_O	{currentfont makeoutl setfont} bdef
/_o	{Bfont setfont} bdef
/_ornt	{/pwid exch def /plen exch def
	 orntsv 1 eq {0 pwid translate -90 rotate} if
	 orntsv 2 eq {pwid plen translate 180 rotate} if
	 orntsv 3 eq {plen 0 translate 90 rotate} if
	 dup 1 eq {pwid 0 translate 90 rotate} if
	 dup 2 eq {pwid plen translate 180 rotate} if
	 dup 3 eq {0 plen translate -90 rotate} if
	 /orntsv exch def
	} bdef
/_lod1	{currentpoint orntsv plen pwid 6 -1 roll restore save} bdef
/_lod2	{_bp 7 2 roll _ornt _mt} bdef
/_unlod	{currentpoint orntsv plen pwid 7 -2 roll restore restore
	 _bp 6 1 roll _ornt _mt
	} bdef
/_p	{2 copy _mt 1 0 _rlt _mt} bdef
/_pl	{{_lt} repeat} bdef
/_R      { /ron true def /_S /_rshow load def /_t /_red load def} bdef
/_rshow	 { save exch
	   currentpoint
	   /RSy exch def /RSx exch def
	   ron {
		 sflg
		 {	currentpoint
			/Ry exch def /Rx exch def
			dup stringwidth pop Rx Ry psz 4 div add _mt
			Rx psz 15 add setlinewidth .95 setgray 0 setlinecap
			add Ry psz 4 div add _lt stroke Rx Ry _mt 0 0 0 setrgbcolor
			dup show Rx Ry _mt
			sshow
		 }
		 { _redshow
		 }ifelse
	   }
	   {	 sflg {sshow} if
	   }ifelse
	   currentpoint 3 -1 roll
	   restore _mt
	 } bdef
/_red	{ gsave dup
         currentpoint /Ry exch def /Rx exch def
         Rx Ry psz 4 div add _mt
         Rx psz 15 add setlinewidth .95 setgray 0 setlinecap
         add Ry psz 4 div add _lt stroke
         Rx Ry _mt
         grestore
         0 rmoveto
    }bdef
/_redshow {currentpoint
         /Ry exch def /Rx exch def
         dup stringwidth pop Rx Ry psz 4 div add _mt
         Rx psz 15 add setlinewidth .95 setgray 0 setlinecap
         add Ry psz 4 div add _lt stroke Rx Ry _mt 0 0 0 setrgbcolor
         show currentpoint _mt
    }bdef
/_rmxy	{_rmt} bdef
/_s	/stroke load def
/_SH	bon {/bon false def} if
	{/sflg true def /_S /_rshow load def
	} bdef
/_sh	{ ron 	{/sflg false def bflg {_B} if}
		{/_S /show load def /sflg false def bflg {_B} if}ifelse
	}bdef
/_sp	{ gsave stroke grestore } bdef
/_ST     {currentpoint /Sy exch def /Sx exch def} bdef
/_st     {gsave
          currentpoint
          psz 4 div add _mt
          Sx Sy psz 4 div add _lt
          10 setlinewidth
          stroke
          grestore
          } bdef
/_U	{currentpoint /Uy exch def /Ux exch def} bdef
/_u	{gsave
	  currentpoint
	  -30 add _mt
	  Ux Uy -30 add _lt
	  12 setlinewidth
	  stroke
	 grestore
	} bdef
/_w	/setlinewidth load def
end
/#copies 1 def /wpdict2 100 dict def
wpdict begin wpdict2 begin
_bd
/_rhs{readhexstring}bdef/_tr{translate}bdef
/_ix{index}bdef/_mx{matrix}bdef
/ife{ifelse}bdef/_x{exch}bdef
/_is{save 4 1 roll
dup/picstr _x 7 add 8 idiv string def
3 1 roll _tr dup 1 scale
dup 1 1[5 -1 roll 0 0 1 0 0]
{currentfile picstr _rhs pop}image restore}bdef
/_epsi{1 eq{{1 _x sub}currenttransfer _ccprocs settransfer}if
/yp _x def/xp _x def/dhgt _x def/dwid _x def
4 copy sub/swid _x def
sub/shgt _x def
add 2 div/icx _x def add 2 div/icy _x def
xp dwid 2 div add icx sub yp dhgt 2 div sub
icy sub _tr icx icy _tr
360 _x sub rotate
dwid swid div/xsc _x def _x
dhgt shgt div/ysc _x def _x
dup 1 eq{xsc neg/xsc _x def pop}
{dup 2 eq{ysc neg /ysc _x def pop}
{3 eq{ysc neg/ysc _x def xsc neg/xsc _x def}
{}ife}ife}ife
xsc ysc scale
100 div _x 100 div _x scale
icx neg icy neg _tr}bdef
/_c{3{255 div 3 1 roll}repeat setrgbcolor}bdef
/eq3{3 copy 2 _ix eq{eq{true}{false}ife}{pop
pop false}ife}bdef
/g{255 div setgray}bdef
/_clr{ron{6 3 roll pop pop pop}{eq3{pop
pop g}{_c}ife}ife}bdef
/_r{/ron false def eq3{1 sub neg g pop
pop}{setrgbcolor}ife}bdef
/_ircms{save 15 1 roll
1 eq{{1 exch sub}currenttransfer _ccprocs settransfer}if
/pstr _x string def _tr
/Cli _x def/USy _x def/USx _x def/Rot _x def/HTd _x def
/WDd _x def/Bdep _x def/HTs _x def/WDs _x def/MIR _x def
USx 100 div USy 100 div scale
WDd WDs sub 2 div HTd HTs sub 2 div neg _tr
WDs HTs 2 div neg _x 2 div _x _tr
Rot 360 _x sub rotate WDd HTd HTs div _x WDs div _x scale
WDs 2 div neg HTs 2 div _tr
WDs HTs scale WDs HTs Bdep MIR 0
eq{[WDs 0 0 HTs neg 0 0]}{MIR 1 eq{[WDs 0 0 HTs 0 HTs]}
{MIR 128 eq{[WDs neg 0 0 HTs neg WDs 0]}
{[WDs neg 0 0 HTs WDs HTs]}ife}ife}ife
{currentfile pstr _rhs pop}Cli
0 eq{image}{false 3 colorimage}ife
restore}bdef
/_bp{save 2 setlinecap 2 setmiterlimit
.06 .06 scale 0 0 moveto}bdef
/tctm _mx def/trot _mx def/tscale _mx def/rmtx _mx def
/fr{72 0 rmtx defaultmatrix dtransform
/yres _x def/xres _x def
xres dup mul yres dup mul add sqrt}bdef
/sus{/spotf _x def/sang _x def/csz _x def
/m tctm currentmatrix def/rm sang trot rotate def
/sm csz dup tscale scale def
sm rm m m concatmatrix m concatmatrix pop
1 0 m dtransform /y1 _x def/x1 _x def
/veclength x1 dup mul y1 dup mul add sqrt def
/frcy fr veclength div def /nsang y1 x1 atan def
frcy nsang/spotf load setscreen}bdef
/bitis{/ybit _x def /xbit _x def
/bval bstring ybit bwidth mul xbit 8 idiv add get def
/mask 1 7 xbit 8 mod sub bitshift def
bval mask and 0 ne}bdef
/bps{/y _x def /x _x def
/xndx x 1 add 2 div bpside mul cvi def
/yndx y 1 add 2 div bpside mul cvi def
xndx yndx bitis
{/onb onb 1 add def 1}{/ofb ofb 1 add def 0}ife}bdef
/stpatt{/csz _x def /angle _x def /bwidth _x def
/bpside _x def /bstring _x def
/onb 0 def /ofb 0 def
csz angle /bps load
sus{}settransfer
ofb ofb onb add div _g}bdef
/_fp{8 1 0 cpi stpatt}bdef
/_pf{gsave eofill grestore}bdef
/_np{newpath}bdef/_lc{setlinecap}bdef
/_sr{/cpi _x def}bdef
/nbuff 50 string def
/_ieq	{gsave
	dup /picstr exch 7 add 8 idiv string def
	3 1 roll translate dup 1 scale
	dup 1 false [5 -1 roll 0 0 1 0 0]
	{currentfile picstr readhexstring pop} imagemask
	grestore} bdef
_bp 0 14032 9922 _ornt /Times-RomanR 600 _ff
0 14032 9922 _ornt 
/_r      { sflg {/_t {0 rmoveto}bdef /ron false def}
         { /_S /show load def /_t {0 rmoveto}bdef /ron false def}ifelse
     }bdef
currentpoint 0 -832 _tr _m 1417 12470 _m
(To:)_S 67 _t
(X3J3)_S 67 _t
(and)_S 67 _t
(WG5)_S 67 _t
(\(15)_S 67 _t
(March)_S 67 _t
(1994\))_S 1417 12237 _m
(From:)_S 67 _t
(Lawrie)_S 67 _t
(Schonfelder)_S 67 _t
1417 12004 _m
67 _t
2111 11698 _m
/Times-BoldR 900 _ff
(User)_S 100 _t
(Functions)_S 100 _t
(in)_S 100 _t
(Specification)_S 100 _t
(Expressions)_S /Times-RomanR 600 _ff
1417 11175 _m
/Times-BoldR 720 _ff
(1)_S 80 _t
(Introduction)_S /Times-RomanR 600 _ff
1417 10932 _m
(This)_S 52 _t
(paper)_S 52 _t
(is)_S 52 _t
(in)_S 52 _t
(response)_S 52 _t
(to)_S 52 _t
(votes)_S 52 _t
(taken)_S 52 _t
(on)_S 52 _t
(the)_S 52 _t
(above)_S 52 _t
(topic)_S 52 _t
(at)_S 52 _t
(meeting)_S 52 _t
(128)_S 52 _t
(of)_S 51 _t
(X3J3.)_S 52 _t
(This)_S 1417 10699 _m
(meeting)_S 60 _t
(favoured)_S 60 _t
(allowing)_S 61 _t
(user)_S 60 _t
(defined)_S 60 _t
(PURE)_S 60 _t
(functions)_S 60 _t
(accessed)_S 61 _t
(from)_S 60 _t
(a)_S 60 _t
(module)_S 61 _t
(to)_S 60 _t
(be)_S 1417 10466 _m
(used)_S 62 _t
(in)_S 62 _t
(specification)_S 62 _t
(expressions.)_S 62 _t
(Although)_S 62 _t
(it)_S 62 _t
(is)_S 62 _t
(believed)_S 62 _t
(that)_S 62 _t
(there)_S 62 _t
(are)_S 62 _t
(as)_S 62 _t
(yet)_S 62 _t
(unsolved)_S 1417 10233 _m
(problems)_S 60 _t
(with)_S 60 _t
(allowing)_S 60 _t
(user)_S 60 _t
(functions)_S 60 _t
(in)_S 60 _t
(general)_S 61 _t
(in)_S 60 _t
(specification)_S 60 _t
(expressions,)_S 60 _t
(there)_S 60 _t
(are)_S 1417 10000 _m
(no)_S 67 _t
(significant)_S 67 _t
(problems)_S 67 _t
(with)_S 67 _t
(this)_S 67 _t
(restricted)_S 67 _t
(class)_S 67 _t
(of)_S 67 _t
(functions.)_S 1417 9504 _m
/Times-BoldR 720 _ff
(2)_S 80 _t
(Technical)_S 80 _t
(Description)_S /Times-RomanR 600 _ff
1417 9261 _m
(The)_S 103 _t
(restrictions)_S 102 _t
(that)_S 103 _t
(are)_S 102 _t
(to)_S 102 _t
(apply)_S 103 _t
(to)_S 102 _t
(functions)_S 102 _t
(that)_S 103 _t
(will)_S 102 _t
(be)_S 102 _t
(permitted)_S 103 _t
(to)_S 102 _t
(appear)_S 102 _t
(in)_S 1417 9028 _m
(specification)_S 67 _t
(expressions)_S 67 _t
(are:)_S 1417 8795 _m
(\267)_S 1889 8795 _m
(the)_S 67 _t
(functions)_S 67 _t
(must)_S 67 _t
(be)_S 67 _t
(declared)_S 67 _t
(with)_S 67 _t
(the)_S 67 _t
(PURE)_S 67 _t
(prefix,)_S 1417 8562 _m
(\267)_S 1889 8562 _m
(the)_S 108 _t
(functions)_S 107 _t
(must)_S 108 _t
(be)_S 108 _t
(directly)_S 108 _t
(accessed)_S 108 _t
(by)_S 108 _t
(use)_S 108 _t
(association)_S 108 _t
(or)_S 108 _t
(they)_S 108 _t
(must)_S 108 _t
(be)_S 1889 8329 _m
(accessed)_S 67 _t
(by)_S 67 _t
(host)_S 67 _t
(association)_S 67 _t
(from)_S 67 _t
(a)_S 67 _t
(host)_S 67 _t
(that)_S 67 _t
(gained)_S 67 _t
(access)_S 67 _t
(via)_S 67 _t
(use)_S 67 _t
(association.)_S 1417 8096 _m
(\267)_S 1889 8096 _m
(the)_S 64 _t
(arguments)_S 63 _t
(of)_S 64 _t
(such)_S 63 _t
(functions)_S 63 _t
(when)_S 64 _t
(used)_S 63 _t
(in)_S 63 _t
(a)_S 64 _t
(specification)_S 63 _t
(expression)_S 64 _t
(must)_S 63 _t
(be)_S 1889 7863 _m
(restricted)_S 67 _t
(expressions,)_S 1417 7630 _m
(\267)_S 1889 7630 _m
(the)_S 139 _t
(functions)_S 139 _t
(must)_S 139 _t
(not)_S 139 _t
(appear)_S 139 _t
(in)_S 138 _t
(any)_S 139 _t
(context)_S 139 _t
(which)_S 139 _t
(requires)_S 139 _t
(a)_S 139 _t
(constant)_S 1889 7397 _m
(specification)_S 53 _t
(expression,)_S 53 _t
(e.g.)_S 52 _t
(any)_S 53 _t
(specification)_S 52 _t
(not)_S 53 _t
(in)_S 53 _t
(a)_S 52 _t
(subprogram)_S 53 _t
(or)_S 52 _t
(an)_S 53 _t
(interface)_S 1889 7164 _m
(body,)_S 82 _t
(in)_S 81 _t
(a)_S 81 _t
(common)_S 81 _t
(or)_S 81 _t
(equivalence)_S 81 _t
(specification,)_S 82 _t
(or)_S 81 _t
(a)_S 81 _t
(component)_S 81 _t
(specification,)_S 1889 6931 _m
(and,)_S 1417 6698 _m
(\267)_S 1889 6698 _m
(any)_S 60 _t
(object)_S 61 _t
(whose)_S 60 _t
(specification)_S 61 _t
(depends)_S 61 _t
(on)_S 60 _t
(such)_S 61 _t
(a)_S 61 _t
(function)_S 60 _t
(is)_S 61 _t
(an)_S 61 _t
(automatic)_S 61 _t
(object)_S 1889 6465 _m
(and)_S 67 _t
(hence)_S 67 _t
(cannot)_S 67 _t
(be)_S 67 _t
(saved)_S 67 _t
(or)_S 67 _t
(initialised.)_S 1417 5969 _m
/Times-BoldR 720 _ff
(3)_S 80 _t
(Suggested)_S 80 _t
(Edits)_S /Times-RomanR 600 _ff
1417 5726 _m
(The)_S 49 _t
(following)_S 50 _t
(are)_S 49 _t
(suggested)_S 49 _t
(edits)_S 49 _t
(to)_S 49 _t
(implement)_S 49 _t
(this)_S 50 _t
(change.)_S 49 _t
(They)_S 49 _t
(are)_S 49 _t
(written)_S 49 _t
(against)_S 49 _t
(the)_S 1417 5493 _m
(current)_S 73 _t
(standard.)_S 73 _t
(However,)_S 73 _t
(this)_S 73 _t
(area)_S 73 _t
(of)_S 73 _t
(the)_S 74 _t
(text)_S 73 _t
(is)_S 73 _t
(very)_S 73 _t
(complex)_S 73 _t
(and)_S 73 _t
(subject)_S 73 _t
(to)_S 73 _t
(major)_S 1417 5260 _m
(redrafting.)_S 67 _t
(These)_S 67 _t
(edits)_S 67 _t
(therefore)_S 67 _t
(may)_S 67 _t
(well)_S 67 _t
(need)_S 67 _t
(to)_S 67 _t
(be)_S 67 _t
(fairly)_S 67 _t
(comprehensively)_S 67 _t
(recast.)_S 1417 4794 _m
/Times-BoldR 600 _ff
(3.1)_S 67 _t
(Rationale)_S /Times-RomanR 600 _ff
1417 4561 _m
(A)_S 62 _t
(significant)_S 62 _t
(number)_S 63 _t
(of)_S 62 _t
(useful)_S 63 _t
(applications)_S 62 _t
(will)_S 62 _t
(be)_S 63 _t
(facilitated)_S 62 _t
(by)_S 63 _t
(the)_S 62 _t
(ability)_S 62 _t
(to)_S 63 _t
(perform)_S 1417 4328 _m
(more)_S 87 _t
(complicated)_S 86 _t
(calculations)_S 87 _t
(when)_S 87 _t
(specifying)_S 86 _t
(data)_S 87 _t
(objects)_S 87 _t
(than)_S 87 _t
(are)_S 86 _t
(permitted)_S 87 _t
(with)_S 1417 4095 _m
(Fortran)_S 79 _t
(90.)_S 79 _t
(This)_S 79 _t
(will)_S 79 _t
(be)_S 79 _t
(very)_S 79 _t
(substantially)_S 79 _t
(achieved)_S 79 _t
(by)_S 79 _t
(allowing)_S 79 _t
(a)_S 79 _t
(restricted)_S 79 _t
(class)_S 80 _t
(of)_S 1417 3862 _m
(non-intrinsic)_S 67 _t
(functions)_S 67 _t
(in)_S 67 _t
(specification)_S 67 _t
(expressions.)_S 1417 3396 _m
/Times-BoldR 600 _ff
(3.2)_S 67 _t
/Times-RomanR 600 _ff
(5.1)_S 2361 3396 _m
([40/41])_S 1889 2930 _m
(Before)_S 67 _t
("If")_S 67 _t
(add)_S 67 _t
(the)_S 67 _t
(sentence)_S 1417 2697 _m
(A)_S 61 _t
(specification)_S 61 _t
(expression)_S 61 _t
(is)_S 60 _t
(considered)_S 61 _t
(to)_S 61 _t
(be)_S 60 _t
(non-constant)_S 61 _t
(if)_S 61 _t
(it)_S 61 _t
(involves)_S 60 _t
(a)_S 61 _t
(reference)_S 60 _t
(to)_S 1417 2464 _m
(a)_S 67 _t
(specification)_S 67 _t
(function)_S 67 _t
(\(7.1.6.2\).)_S 1417 2229 _m
/Times-ItalicR 600 _ff
({{{)_S 67 _t
1889 2229 _m
(I)_S 53 _t
(think)_S 54 _t
(this)_S 54 _t
(edit)_S 54 _t
(is)_S 54 _t
(sufficient)_S 54 _t
(to)_S 53 _t
(make)_S 54 _t
(any)_S 54 _t
(object)_S 54 _t
(declared)_S 54 _t
(with)_S 54 _t
(a)_S 54 _t
(specification)_S 1889 1996 _m
(involving)_S 90 _t
(such)_S 90 _t
(a)_S 91 _t
(function)_S 90 _t
(an)_S 91 _t
(automatic)_S 90 _t
(object.)_S 90 _t
(It)_S 91 _t
(depends)_S 90 _t
(on)_S 91 _t
(text)_S 90 _t
(which)_S 8385 1480 _m
/CourierR 600 _ff
(1)_S /Times-RomanR 600 _ff
_ep
_bp /Times-RomanR 600 _ff
0 14032 9922 _ornt 
/_r      { sflg {/_t {0 rmoveto}bdef /ron false def}
         { /_S /show load def /_t {0 rmoveto}bdef /ron false def}ifelse
     }bdef
currentpoint 0 -832 _tr _m 1889 12468 _m
/Times-ItalicR 600 _ff
(defines)_S 77 _t
(an)_S 78 _t
(automatic)_S 78 _t
(object)_S 78 _t
(as)_S 77 _t
(one)_S 78 _t
(that)_S 78 _t
(is)_S 78 _t
(declared)_S 77 _t
(with)_S 78 _t
(an)_S 78 _t
(attribute)_S 78 _t
(that)_S 1889 12235 _m
(depends)_S 67 _t
(on)_S 67 _t
(a)_S 67 _t
(non-constant)_S 67 _t
(specification)_S 67 _t
(expression.)_S 134 _t
8265 12235 _m
(}}})_S /Times-RomanR 600 _ff
1417 11771 _m
/Times-BoldR 600 _ff
(3.3)_S 67 _t
/Times-RomanR 600 _ff
(7.1.6.2)_S 2361 11771 _m
([78/37+])_S 1889 11538 _m
(Add)_S 67 _t
(paragraph)_S 1417 11305 _m
(A)_S 61 _t
(function)_S 61 _t
(is)_S 62 _t
(a)_S 61 _t
/Times-BoldR 600 _ff
(specification)_S 61 _t
(function)_S /Times-RomanR 600 _ff
61 _t
(if)_S 61 _t
(it)_S 61 _t
(is)_S 61 _t
(a)_S 61 _t
(function)_S 61 _t
(defined)_S 61 _t
(with)_S 61 _t
(the)_S 61 _t
(PURE)_S 61 _t
(prefix,)_S 1417 11072 _m
(is)_S 63 _t
(accessible)_S 63 _t
(via)_S 63 _t
(use)_S 63 _t
(association)_S 63 _t
(or)_S 63 _t
(via)_S 63 _t
(host)_S 63 _t
(association)_S 63 _t
(from)_S 63 _t
(a)_S 63 _t
(host)_S 63 _t
(that)_S 63 _t
(accessed)_S 63 _t
(it)_S 63 _t
(via)_S 1417 10839 _m
(use)_S 67 _t
(association)_S 67 _t
1417 10604 _m
/Times-ItalicR 600 _ff
({{{)_S 67 _t
1889 10604 _m
(This)_S 147 _t
(definition)_S 147 _t
(allows)_S 147 _t
(external)_S 147 _t
(procedures)_S 147 _t
(that)_S 148 _t
(are)_S 147 _t
(defined)_S 147 _t
(entirely)_S 1889 10371 _m
(independently)_S 61 _t
(and)_S 60 _t
(accessed)_S 61 _t
(via)_S 60 _t
(an)_S 61 _t
(interface)_S 61 _t
(block)_S 60 _t
(declaration)_S 61 _t
(in)_S 60 _t
(a)_S 61 _t
(module.)_S 1889 10138 _m
(This)_S 74 _t
(is)_S 74 _t
(slightly)_S 74 _t
(wider)_S 73 _t
(than)_S 74 _t
(was)_S 74 _t
(discussed)_S 74 _t
(at)_S 73 _t
(meeting)_S 74 _t
(128)_S 74 _t
(but)_S 74 _t
(I)_S 73 _t
(can)_S 74 _t
(see)_S 74 _t
(no)_S 1889 9905 _m
(additional)_S 88 _t
(problem)_S 89 _t
(caused)_S 89 _t
(by)_S 89 _t
(this)_S 88 _t
(and)_S 89 _t
(no)_S 89 _t
(reason)_S 89 _t
(for)_S 89 _t
(adopting)_S 89 _t
(the)_S 89 _t
(more)_S 1889 9672 _m
(restricted)_S 60 _t
(definition)_S 59 _t
(which)_S 59 _t
(confines)_S 59 _t
(the)_S 59 _t
(specification)_S 60 _t
(functions)_S 59 _t
(to)_S 59 _t
(be)_S 59 _t
(module)_S 1889 9439 _m
(procedures.)_S 64 _t
(Nevertheless)_S 64 _t
(this)_S 64 _t
(definition)_S 64 _t
(ensures)_S 64 _t
(that)_S 64 _t
(there)_S 63 _t
(can)_S 64 _t
(be)_S 64 _t
(no)_S 64 _t
(direct)_S 1889 9206 _m
(or)_S 88 _t
(indirect)_S 88 _t
(interaction)_S 87 _t
(between)_S 88 _t
(the)_S 88 _t
(data)_S 87 _t
(environment)_S 88 _t
(of)_S 87 _t
(the)_S 88 _t
(specification)_S 1889 8973 _m
(function)_S 157 _t
(and)_S 157 _t
(the)_S 156 _t
(environment)_S 157 _t
(established)_S 157 _t
(by)_S 157 _t
(an)_S 156 _t
(invocation)_S 157 _t
(of)_S 157 _t
(the)_S 1889 8740 _m
(specification)_S 67 _t
(expression.)_S 67 _t
8265 8740 _m
(}}})_S /Times-RomanR 600 _ff
1417 8276 _m
/Times-BoldR 600 _ff
(3.4)_S 67 _t
/Times-RomanR 600 _ff
(7.1.6.2)_S 2361 8276 _m
([79/16+])_S 1889 8043 _m
(Add)_S 67 _t
(item)_S 1889 7810 _m
(\(11\))_S 2361 7810 _m
(A)_S 68 _t
(reference)_S 68 _t
(to)_S 68 _t
(a)_S 67 _t
(specification)_S 68 _t
(function)_S 68 _t
(where)_S 68 _t
(each)_S 68 _t
(argument)_S 67 _t
(is)_S 68 _t
(a)_S 68 _t
(restricted)_S 2361 7577 _m
(expression.)_S 1417 7109 _m
/Times-ItalicR 600 _ff
({{{)_S 67 _t
1889 7109 _m
(I)_S 63 _t
(believe)_S 64 _t
(these)_S 64 _t
(edits)_S 63 _t
(to)_S 64 _t
(be)_S 64 _t
(sufficient,)_S 64 _t
(in)_S 64 _t
(spite)_S 63 _t
(of)_S 64 _t
(how)_S 64 _t
(few)_S 64 _t
(they)_S 63 _t
(seem.)_S 64 _t
(Most)_S 64 _t
(of)_S 1889 6876 _m
(the)_S 67 _t
(essential)_S 67 _t
(semantics)_S 67 _t
(are)_S 67 _t
(already)_S 67 _t
(covered)_S 67 _t
(in)_S 67 _t
(the)_S 67 _t
(text)_S 67 _t
(on)_S 67 _t
(pages)_S 67 _t
(78-79.)_S 67 _t
1889 6643 _m
(However,)_S 140 _t
(it)_S 140 _t
(should)_S 140 _t
(be)_S 140 _t
(noted)_S 141 _t
(that)_S 140 _t
(as)_S 140 _t
(currently)_S 140 _t
(defined)_S 140 _t
(specification)_S 1889 6410 _m
(expressions)_S 68 _t
(are)_S 67 _t
(excessively)_S 67 _t
(constrained.)_S 68 _t
(The)_S 67 _t
(really)_S 67 _t
(important)_S 68 _t
(restriction)_S 67 _t
(is)_S 1889 6177 _m
(that)_S 78 _t
(which)_S 78 _t
(distinguishes)_S 78 _t
(between)_S 77 _t
(what)_S 78 _t
(can)_S 77 _t
(appear)_S 78 _t
(in)_S 78 _t
(a)_S 78 _t
(constant)_S 77 _t
(compile-)_S 1889 5944 _m
(time)_S 70 _t
(specification)_S 71 _t
(and)_S 70 _t
(those)_S 70 _t
(that)_S 71 _t
(can)_S 70 _t
(occur)_S 70 _t
(in)_S 71 _t
(a)_S 70 _t
(specification)_S 71 _t
(that)_S 70 _t
(must)_S 70 _t
(be)_S 1889 5711 _m
(evaluated)_S 53 _t
(at)_S 53 _t
(run-time.)_S 53 _t
(It)_S 54 _t
(might)_S 53 _t
(be)_S 53 _t
(desirable)_S 54 _t
(to)_S 53 _t
(work)_S 53 _t
(through)_S 53 _t
(this)_S 54 _t
(whole)_S 53 _t
(area)_S 1889 5478 _m
(of)_S 93 _t
(expression)_S 93 _t
(classification)_S 93 _t
(making)_S 93 _t
(the)_S 93 _t
(essential)_S 93 _t
(restrictions)_S 93 _t
(clearer)_S 93 _t
(and)_S 1889 5245 _m
(relaxing)_S 67 _t
(the)_S 67 _t
(inessential.)_S 67 _t
8265 5245 _m
(}}})_S /Times-RomanR 600 _ff
1417 1480 _m
/CourierR 600 _ff
(2)_S /Times-RomanR 600 _ff
_ep
_ed end end
%-12345X
---------------------------------------------------------------
-- 
Dr.J.L.Schonfelder
Director, Computing Services Dept.
University of Liverpool, UK
Phone: +44(51)794 3716
FAX  : +44(51)794 3759
email: jls@liv.ac.uk   

