umouse

umouse.git
git clone git://git.lenczewski.org/umouse.git
Log | Files | Refs | Submodules | README

A0003.HTM (21650B)


      1 <title>ANS Forth RFI 0003: What's allowed between <a href=dpans6.htm#6.1.1000>CREATE</a> and DOES></title>
      2 
      3 This document is produced by TC X3J14 as its clarification of questions
      4 raised about ANSI X3.215-1994, American National Standard for Information
      5 Systems - Programming Languages - Forth.
      6 
      7 <p>
      8 The questions covered herein were raised by query
      9 
     10 <p>
     11 Q0003, regarding usage rules for defining words centering on various
     12 wordlist actions occurring between <a href=dpans6.htm#6.1.1000>CREATE</a> and <a href=dpans6.htm#6.1.1250>DOES></a>.
     13 
     14 <p>There are four parts in this document:
     15 
     16 <ol>
     17 <li><a href="#query">The original question as received.</a>
     18 <li><a href="#reply">The TC's reply.</a>
     19 <li><a href="#ballot">The Letter Ballot issued by TC Chair.</a>
     20 <li><a href="#results">TC Chair's statement of ballot results.</a>
     21 </ol>
     22 
     23 <h2><a name="query">Q0003 as received</a></h2>
     24 
     25 The following query has been assigned number Q0003 and has been
     26 tentatively assigned to Jack Woehr for drafting a response.
     27 - Greg Bailey, by direction  950509 1900Z
     28 <hr>
     29 
     30 <pre>
     31 Subject: Defining words, search order and wordlists.
     32 To: ANSForth@minerva.com
     33 From: aph@oclc.org (Andrew Houghton)
     34 Date: Tue, 9 May 95 11:09:48 -0400
     35 Message-Id: <9505091520.AA26898@fssun09.dev.oclc.org>
     36 Received: from oclc.org by med3.minerva.com ; Tue,  9 May 1995 08:25 PDT
     37 Content-Type: text
     38 >From aph Tue May  9 11:09:48 0400 1995 remote from oclc.org
     39 Return-Path: <aph@oclc.org>
     40 Received: from next30-06 (next30-06.dev.oclc.org) by fssun09.dev.oclc.org
     41   (4.1/SMI-4.1) id AA26898; Tue, 9 May 95 11:20:56 EDT
     42 Received: by next30-06 (NX5.67d/NX3.0X) id AA00583; Tue, 9 May 95 11:09:48 -0400
     43 Received: by NeXT.Mailer (1.100)
     44 Received: by NeXT Mailer (1.100)
     45 Content-Length: 7015
     46 </pre>
     47 
     48 I'm not sure whether doing the following is legal ANS FORTH so I was
     49 looking for someone to provide an interpretation as to whether it is
     50 legal and if not why not.
     51 
     52 <p>
     53 Here is my problem.  Define the following:
     54 
     55 <pre>
     56   \ Add selx to search order and make new definitions go into selx.
     57 : set-current-wordlist  ( selx -- )
     58   >r get-order 1+ r> swap set-order definitions ;
     59 
     60   \ Fill wordlist with default definitions.
     61 : fill-wordlist  ( n n n -- )
     62   s" constant a" evaluate
     63   s" constant b" evaluate
     64   s" constant c" evaluate ;
     65 
     66   \ Create new wordlist with default definitions.
     67 : create-wordlist  ( -- )
     68   create
     69     wordlist set-current-wordlist
     70     1 2 3 fill-wordlist
     71   does>            ( body -- )
     72     set-current-wordlist ;
     73   
     74 
     75   \ Create new wordlist with default definitions, revised.
     76 : create-wl  ( -- )
     77   wordlist dup set-current-wordlist
     78   1 2 3 fill-wordlist
     79   previous definitions
     80   create
     81     dup , set-current-wordlist
     82   does>      ( body -- )
     83     @ set-current-wordlist ;
     84 </pre>
     85 
     86 I believe that the above words set-current-wordlist and fill-wordlist by
     87 themselves conform to the standard.  My problem lies with the word
     88 create-wordlist.  Create-wordlist tries to create a defining word which
     89 creates a wordlist, adds the newly created wordlist to the search order,
     90 set the current definitions to go into the newly created wordlist, then
     91 fills the wordlist with some common definitions.
     92 
     93 <p>
     94 When the word create-wordlist is executed (ie. create-wordlist abc) it
     95 produces a new (ie. abc) which PFE, an ANS FORTH, is marked in the
     96 dictionary as a variable -- not a defining word and c in the newly
     97 created wordlist is marked in its dictionary as a defining word -- not
     98 a constant!  As far as I can tell from the standard, this could be a
     99 result of does> (section 6.1.1250) replacing the execution semantics of
    100 the most recent definition, ie. abc which was defined by create, and the
    101 fact that fill-wordlist creates new definitions.  It seems that section
    102 "3.4.5 Compilation" of the standard may apply somehow as well.
    103 
    104 <p>
    105 The standard seems unclear to me when it says that: "does> replaces the
    106 execution semantics of the most recent definition."  I would have expected
    107 it to use the term "current definition" from "2.1 Definitions of terms."
    108 But again whether its "recent definition" or "current definition" it really
    109 says to me: "replaces the execution semantics of the most recent/current
    110 definition [in the most recent/current definition's wordlist]".  Note I
    111 added the bracketed item to show what the standard implies to me.  However
    112 it is clear that PFE, an ANS FORTH, implies "in the current wordlist where
    113 definitions are being placed."
    114 
    115 <p>
    116 It's unclear in the standard, to me, which one is correct.  Given the
    117 ambiguity I rewrote the word create-wordlist and it appears as the word
    118 create-wl.  The new word create-wl now creates the wordlist fills it with
    119 the common definitions and restores the previous wordlist.  Then create-wl 
    120 *creates* the defining word.  This seems to work for PFE but may not work
    121 for other ANS implementations.  However, this points out another possible
    122 problem with the definitions of create-wordlist and create-wl.
    123 
    124 <p>
    125 The newly perceived problem is that both words change the search order before
    126 the does> is done.  It seems to me that sections <a href=dpans16.htm#16.3.3>16.3.3</a> and <a href=dpansa16.htm#A.16.3.3>A.16.3.3</a> say that
    127 this produces an ambiguous condition.  Is this correct?  Does <a href=dpans16.htm#16.3.3>16.3.3</a> refer
    128 to when the word create-wordlist is being compiled or the word being defined
    129 by create-wordlist?
    130 
    131 <p>
    132 My final question is: "Is it possible to portably create a defining word
    133 which creates a wordlist, fills that wordlist with definitions and then
    134 switches the search order to that wordlist with the current ANS standard?"
    135 
    136 <hr>
    137 The following sections from the ANS standard, which I thought were
    138 relevant to the problem, are quoted below for your convience:
    139 
    140 <blockquote>
    141 <a href=dpans2.htm#2.1>2.1</a> Definitions of terms 
    142 
    143 <dl>
    144 
    145 <dt>
    146 ambiguous condition: 
    147 
    148 <dd>
    149   A circumstance for which this Standard does not prescribe a specific
    150   behavior for Forth systems and programs. 
    151 
    152 <p>
    153   Ambiguous conditions include such things as the absence of a needed
    154   delimiter while parsing, attempted access to a nonexistent file, or
    155   attempted use of a nonexistent word. An ambiguous condition also exists
    156   when a Standard word is passed values that are improper or out of range. 
    157 
    158 <dt>
    159 current definition: 
    160 
    161 <dd>
    162   The definition whose compilation has been started but not yet ended. 
    163 
    164 <dt>
    165 defining word: 
    166 
    167 <dd>
    168   A Forth word that creates a new definition when executed. 
    169 
    170 <dt>
    171 definition: 
    172 
    173 <dd>
    174   A Forth execution procedure compiled into the dictionary. 
    175 
    176 <dt>
    177 dictionary: 
    178 
    179 <dd>
    180   An extensible structure that contains definitions and associated
    181   data space. 
    182 </dl>
    183 
    184 
    185 <a href=dpans3.htm#3.4.5>3.4.5</a> Compilation 
    186 
    187 <p>
    188 A program shall not attempt to nest compilation of definitions. 
    189 
    190 <p>
    191 During the compilation of the current definition, a program shall
    192 not execute any defining word, <a href=dpans6.htm#6.2.0455>:NONAME</a>, or any definition that
    193 allocates dictionary data space. The compilation of the current
    194 definition may be suspended using <a href=dpans6.htm#6.1.2500>[</a> (left-bracket) and resumed
    195 using <a href=dpans6.htm#6.1.2540>]</a> (right-bracket). While the compilation of the current
    196 definition is suspended, a program shall not execute any defining
    197 word, <a href=dpans6.htm#6.2.0455>:NONAME</a>, or any definition that allocates dictionary data space. 
    198 
    199 <p>
    200 <a href=dpans6.htm#6.1.1250>6.1.1250</a>  <a href=dpans6.htm#6.1.1250>DOES></a> does CORE 
    201 
    202 <p>
    203 Interpretation: Interpretation semantics for this word are undefined. 
    204 
    205 <p>
    206 Compilation: ( C: colon-sys1 -- colon-sys2 ) 
    207 
    208 <p>
    209 Append the run-time semantics below to the current definition. Whether
    210 or not the current definition is rendered findable in the dictionary by
    211 the compilation of <a href=dpans6.htm#6.1.1250>DOES></a> is implementation defined. Consume colon-sys1
    212 and produce colon-sys2. Append the initiation semantics given below to
    213 the current definition. 
    214 
    215 <p>
    216 Run-time: ( -- ) ( R: nest-sys1 -- ) 
    217 
    218 <p>
    219 Replace the execution semantics of the most recent definition, referred
    220 to as name, with the name execution semantics given below. Return control
    221 to the calling definition specified by nest-sys1. An ambiguous condition
    222 exists if name was not defined with <a href=dpans6.htm#6.1.1000>CREATE</a> or a user-defined word that
    223 calls <a href=dpans6.htm#6.1.1000>CREATE</a>. 
    224 
    225 <p>
    226 Initiation: ( i*x -- i*x a-addr ) ( R: -- nest-sys2 ) 
    227 
    228 <p>
    229 Save implementation-dependent information nest-sys2 about the calling
    230 definition. Place name's data field address on the stack. The stack
    231 effects i*x represent arguments to name. 
    232 
    233 <p>
    234 name Execution: ( i*x -- j*x ) 
    235 
    236 <p>
    237 Execute the portion of the definition that begins with the initiation
    238 semantics appended by the <a href=dpans6.htm#6.1.1250>DOES></a> which modified name. The stack effects
    239 i*x and j*x represent arguments to and results from name, respectively. 
    240 
    241 
    242 <p>
    243 <a href=dpans16.htm#16.3.3>16.3.3</a> Finding definition names 
    244 
    245 <p>
    246 An ambiguous condition exists if a program changes the compilation word
    247 list during the compilation of a definition or before modification of the
    248 behavior of the most recently compiled definition with <a href=dpans15.htm#15.6.2.0470>;CODE</a>, <a href=dpans6.htm#6.1.1250>DOES></a>, or
    249 <a href=dpans6.htm#6.1.1710>IMMEDIATE</a>. 
    250 
    251 
    252 <p>
    253 <a href=dpansa16.htm#A.16.3.3>A.16.3.3</a> Finding definition names 
    254 
    255 <p>
    256 In other words, the following is not guaranteed to work: 
    257 
    258 <pre>
    259 <a href=dpans6.htm#6.1.0450>:</a> FOO  ... <a href=dpans6.htm#6.1.2500>[</a> ... <a href=dpans16.htm#16.6.1.2195>SET-CURRENT</a> <a href=dpans6.htm#6.1.2540>]</a> ... <a href=dpans6.htm#6.1.2120>RECURSE</a> ... <a href=dpans6.htm#6.1.0460>;</a>  <a href=dpans6.htm#6.1.1710>IMMEDIATE</a>
    260 </pre>
    261 
    262 <p>
    263 <a href=dpans6.htm#6.1.2120>RECURSE</a>, <a href=dpans6.htm#6.1.0460>;</a> (semicolon), and <a href=dpans6.htm#6.1.1710>IMMEDIATE</a> may or may not need information
    264 stored in the compilation word list. 
    265 
    266 </blockquote>
    267 
    268 <h2><a name="reply">TC Reply to Q0003</a></h2>
    269 <pre>
    270 From: Elizabeth D. Rather
    271 Subject: Q0003R, Wordlists, Official Response
    272 To: X3J14 Technical Committee
    273 Cc: lbarra@itic.nw.dc.us
    274 Date: Wed, 31 May 95 17:03:44 PDT  
    275 Doc#:  X3J14/Q0003R
    276 Reference Doc#:  X3.215.1994 ANS Forth
    277 Date:  May 16, 1995
    278 Title: Response to Request for Interpretation Q0003, Clarification of Wordlists
    279 </pre>
    280 
    281 Abstract: No definition can be added to the dictionary between <a href=dpans6.htm#6.1.1000>CREATE</a> and
    282 <a href=dpans6.htm#6.1.1250>DOES></a>.  Changing compilation wordlist between <a href=dpans6.htm#6.1.1000>CREATE</a> and <a href=dpans6.htm#6.1.1250>DOES></a> is
    283 ambiguous.
    284 
    285 <pre>
    286 X3.215-1994_KEYWORD_LIST:
    287         Core Word Set
    288         <a href=dpans6.htm#6.1.1000>CREATE</a> <a href=dpans6.htm#6.1.1000>6.1.1000</a> <a href=dpans6.htm#6.1.1250>DOES></a> <a href=dpans6.htm#6.1.1250>6.1.1250</a>
    289         Search Order Word Set
    290         <a href=dpans16.htm#16.6.1.1180>DEFINITIONS</a> <a href=dpans16.htm#16.6.1.1180>16.6.1.1180</a> <a href=dpans16.htm#16.6.1.1647>GET-ORDER</a> <a href=dpans16.htm#16.6.1.1647>16.6.1.1647</a> <a href=dpans16.htm#16.6.1.2197>SET-ORDER</a> <a href=dpans16.htm#16.6.1.2197>16.6.1.2197</a>
    291         Terms:
    292                 Ambiguous condition <a href=dpans2.htm#2.1>2.1</a>
    293                 Compilation word list <a href=dpans16.htm#16.6.1.2195>16.6.1.2195</a>
    294 X3.215-1994_KEYWORD_LIST;
    295 Author: Jack Woehr
    296 </pre>
    297 
    298 <i><blockquote>
    299 Here is my problem.  Define the following:
    300 
    301 <pre>
    302   \ Add selx to search order and make new definitions go into selx.
    303 : set-current-wordlist  ( selx -- )
    304   >r get-order 1+ r> swap set-order definitions ;
    305 </pre>
    306 </blockquote></i>
    307 
    308         set-current-wordlist is standard Forth in the given context,
    309 i.e. as a definition commenced while the system is interpretive
    310 mode. Note that it has a dependency on the SEARCH-ORDER Word Set with
    311 Extensions.
    312 
    313 <p>
    314         Incidentally, the Technical Committee encourages the use of
    315 uppercase for Standard words in clarification queries submitted to
    316 X3J14.
    317 
    318 <i><blockquote>
    319 <pre>
    320   \ Fill wordlist with default definitions.
    321 : fill-wordlist  ( n n n -- )
    322   s" constant a" evaluate
    323   s" constant b" evaluate
    324   s" constant c" evaluate ;
    325 </pre>
    326 </blockquote></i>
    327 
    328         fill-wordlist is standard Forth in the given context.
    329 
    330 <i><blockquote>
    331 <pre>
    332   \ Create new wordlist with default definitions.
    333 : create-wordlist  ( -- )
    334   create
    335     wordlist set-current-wordlist
    336     1 2 3 fill-wordlist
    337   does>            ( body -- )
    338     set-current-wordlist ;
    339 </pre>
    340 </blockquote></i>
    341 
    342         This definition of create-wordlist is erroneous as later
    343 noted by its author: the wordlist-id is not preserved so that
    344 the body address returned by words can be dereferenced to
    345 the (should have been) stored wordlist-id for set-current wordlist.
    346 
    347 <p>
    348         But this flaw conceals the definition's intent, to effect
    349 <a href=dpans6.htm#6.1.1000>CREATE</a>, change the compilation wordlist, add definitions, then return
    350 to the original compilation wordlist and effect <a href=dpans6.htm#6.1.1250>DOES></a>. This is not
    351 Standard Forth.
    352 
    353 <p>
    354          Words cannot be added to the dictionary between the action of
    355 <a href=dpans6.htm#6.1.1250>DOES></a> and the most recent action of <a href=dpans6.htm#6.1.1000>CREATE</a>. <a href=dpans6.htm#6.1.1250>DOES></a> modifies a word
    356 created by <a href=dpans6.htm#6.1.1000>CREATE</a>. <a href=dpans6.htm#6.1.1250>DOES></a> modifies the most recent definition. Thus
    357 there can have been no new definition added to the dictionary which
    358 was not created by <a href=dpans6.htm#6.1.1000>CREATE</a> immediately prior to a <a href=dpans6.htm#6.1.1250>DOES></a>. Note that
    359 <a href=dpans6.htm#6.1.1250>DOES></a> is found in the Core word set and never modified later in the
    360 Standard when the concept of multiple compilation wordlists is
    361 introduced.
    362 
    363 <p>
    364         Although the Standard does not preclude implementations using
    365 multiple wordlists from having "most recent" definitions in each
    366 wordset, the definition of <a href=dpans6.htm#6.1.1250>DOES></a> is not extended to provide for
    367 multiple wordlists, and makes no provision for other than a single
    368 "most recent" definition.  The clear intent of the Standard is that
    369 words cannot be added to the dictionary between the action of <a href=dpans6.htm#6.1.1250>DOES></a>
    370 and the most recent action of <a href=dpans6.htm#6.1.1000>CREATE</a>.
    371 
    372 <p>
    373         (Also note that the execution of <a href=dpans16.htm#16.6.1.2460>WORDLIST</a> may consume data
    374 space, altering the address returned by <a href=dpans6.htm#6.1.1650>HERE</a>. The portable program
    375 must avoid executing <a href=dpans16.htm#16.6.1.2460>WORDLIST</a> between <a href=dpans6.htm#6.1.1000>CREATE</a> and the execution of
    376  <a href=dpans6.htm#6.1.0150>,</a> "comma" that saves the wordlist ID in the body of the created
    377 definition. Otherwise, the CREATE'd, DOES>'d entity at runtime will
    378 point at space which subsequently might have been used for the
    379 WORDLIST.)
    380 
    381 <p>
    382         The following was suggested as an improvement the the original
    383 definition of create-wordlist.
    384 
    385 <i><blockquote>
    386 <pre>
    387   \ Create new wordlist with default definitions, revised.
    388 : create-wl  ( name< > -- )
    389   wordlist dup set-current-wordlist
    390   1 2 3 fill-wordlist
    391   previous definitions
    392   create
    393     dup , set-current-wordlist
    394   does>      ( body -- )
    395     @ set-current-wordlist ;
    396 </pre>
    397 </blockquote></i>
    398 
    399 <p>
    400         This definition create-wl at runtime changes the compilation
    401 wordlist [16.6.1.2195] between <a href=dpans6.htm#6.1.1000>CREATE</a> [6.1.1000] and <a href=dpans6.htm#6.1.1250>DOES></a> [6.1.1250].
    402 The Forth Standard, <a href=dpans16.htm#16.3.3>16.3.3</a> para 4:
    403 
    404 <p>
    405 "An ambiguous condition exists if a program changes the compilation
    406 word list during the compilation of a definition or before modi-
    407 fication of the behavior of the most recently compiled definition
    408 with <a href=dpans15.htm#15.6.2.0470>;CODE</a> <a href=dpans6.htm#6.1.1250>DOES></a> or IMMEDIATE."
    409 
    410 <p>
    411         Therefore, while not "non-Standard", the amended definition
    412 create-wl exhibits a platform dependency on the particular resolution
    413 of the ambiguity selected by the hosting Standard System, if create-wl
    414 is to execute deterministically.
    415 
    416 <i><blockquote>
    417 My final question is: "Is it possible to portably create a defining word
    418 which creates a wordlist, fills that wordlist with definitions and then
    419 switches the search order to that wordlist with the current ANS standard?"
    420 </blockquote></i>
    421 
    422         Yes.
    423 
    424 <pre>
    425 <a href=dpans6.htm#6.1.0450>:</a> SET-CURRENT-WORDLIST <a href=dpans6.htm#6.1.0080>(</a> my_wid --) <a href=dpans6.htm#6.2.2535>\</a> as above
    426         <a href=dpans6.htm#6.1.0580>>R</a> <a href=dpans16.htm#16.6.1.1647>GET-ORDER</a> <a href=dpans6.htm#6.1.0290>1+</a> <a href=dpans6.htm#6.1.2060>R></a> <a href=dpans6.htm#6.1.0080>(</a> -- widn wid1 n my_wid)
    427         <a href=dpans6.htm#6.1.2260>SWAP</a> <a href=dpans16.htm#16.6.1.2197>SET-ORDER</a> <a href=dpans16.htm#16.6.1.1180>DEFINITIONS</a> <a href=dpans6.htm#6.1.0080>(</a> --)
    428 <a href=dpans6.htm#6.1.0460>;</a>
    429 
    430 <a href=dpans6.htm#6.1.0450>:</a> 78-VOCABULARY <a href=dpans6.htm#6.1.0080>(</a> "name< >" my_wid --)
    431         <a href=dpans6.htm#6.1.1000>CREATE</a> <a href=dpans6.htm#6.1.0150>,</a>        <a href=dpans6.htm#6.1.0080>(</a> --)
    432         <a href=dpans6.htm#6.1.1250>DOES></a> <a href=dpans6.htm#6.1.0080>(</a> self  --) <a href=dpans6.htm#6.2.2535>\</a> runtime
    433                 <a href=dpans6.htm#6.1.0650>@</a>       <a href=dpans6.htm#6.1.0080>(</a> -- my_wid)
    434                 SET-CURRENT-WORDLIST    <a href=dpans6.htm#6.1.0080>(</a> --)
    435 <a href=dpans6.htm#6.1.0460>;</a>
    436 
    437 <a href=dpans6.htm#6.1.0450>:</a> CREATE-WORDLIST <a href=dpans6.htm#6.1.0080>(</a> "name< >" --)
    438         <a href=dpans16.htm#16.6.1.2460>WORDLIST</a> <a href=dpans6.htm#6.1.1290>DUP</a> 78-VOCABULARY <a href=dpans6.htm#6.1.0080>(</a> -- wid)
    439         SET-CURRENT-WORDLIST <a href=dpans6.htm#6.1.0080>(</a> --)
    440         fill-wordlist <a href=dpans6.htm#6.2.2535>\</a> _vide supra_
    441         <a href=dpans16.htm#16.6.2.2037>PREVIOUS</a> <a href=dpans16.htm#16.6.1.1180>DEFINITIONS</a>
    442 <a href=dpans6.htm#6.1.0460>;</a>
    443 </pre>
    444 
    445 <p>
    446 From the point of view of CREATE-WORDLIST at runtime, 78-VOCABULARY is
    447 atomic. Its work is done before the change in search order occurs for
    448 the first time. Good factoring avoids a grey area of the Standard.
    449 
    450 <p>
    451         Greg Bailey notes that during the mailing list discussion of
    452 this issue, he erroneously posted using <a href=dpans6.htm#6.1.2410>VARIABLE</a> where <a href=dpans6.htm#6.1.1000>CREATE</a> was
    453 intended. Greg regrets any confusion thus caused.
    454 
    455 <pre>
    456 Elizabeth D. Rather             "Forth-based products and
    457 FORTH, Inc.                      Services for real-time
    458 111 N. Sepulveda Blvd. #300      applications since 1973"
    459 Manhattan Beach, CA  90266
    460 (800) 55FORTH or (310) 372-8493
    461 FAX (310) 318-7130
    462 </pre>
    463 
    464 <h2><a name="ballot">Letter Ballot</a></h2>
    465 
    466 <pre>
    467 From: Elizabeth D. Rather
    468 Subject: LB014, RE Q0003, Wordlists
    469 To: X3J14 Technical Committee
    470 Cc: lbarra@itic.nw.dc.us
    471 Date: Wed, 31 May 95 17:03:36 PDT  
    472 X3 Subgroup Letter Ballot
    473 Authorized by X3 Procedures - Distributed by X3 Subgroup X3J14
    474 Project: X3J14, ANS Forth
    475 Doc#:  X3J14/LB014
    476 Reference Doc#s:  X3J14/Q0003R, X3.215.1994 ANS Forth
    477 Date:  May 31, 1995
    478 Title: Response to Request for Interpretation Q0003, Wordlists
    479 Ballot Period:  30 Days
    480 Ballot Closes NOON DATE:  June 30, 1995
    481 Respond to:  greg@minerva.com
    482         or:  Elizabeth D. Rather, Chair
    483              FORTH, Inc.
    484              111 N. Sepulveda Blvd.  Suite 300
    485              Manhattan Beach, CA  90266
    486              (310) 372-8493    FAX (310) 318-7130
    487              erather@forth.com
    488 
    489 Statement:
    490     Document X3J14/Q0003R contains a proposed Response to Request for
    491     Interpretation Q0003.
    492 
    493 Question:
    494     Do you agree that this response represents the intended interpretation of
    495     X3.215.1994 ANS Forth?
    496 
    497 
    498 /------------------------  begin response area----------------------\
    499 |
    500 |  YES____ NO____ ABSTAIN____
    501 |
    502 |  Signature:  [not required for email ballots]
    503 |  Name:
    504 |  Organization:
    505 |
    506 |  Explanation (REQUIRED for NO or ABSTAIN votes):
    507 |    <none>
    508 \------------------------  end response area  ----------------------/
    509 
    510 INSTRUCTIONS:
    511 Please return the entire letter ballot with your response _either_ by email
    512 to greg@minerva.com _or_ by regular mail, fax or email to me at the above
    513 address, before the closing date & time.
    514 
    515    If replying electronically PLEASE edit only within the response area
    516    indicated above, inserting any explanatory text in place of <none>.
    517    Any changes made outside that area will likely be overlooked.
    518 
    519 All TC members must vote.  Failure to vote in two consecutive ballots may
    520 cause you to lose your voting rights in X3J14.
    521 
    522 Thank you for your participation.
    523 
    524 Elizabeth D. Rather, Chair, X3J14
    525 
    526 Elizabeth D. Rather             "Forth-based products and
    527 FORTH, Inc.                      Services for real-time
    528 111 N. Sepulveda Blvd. #300      applications since 1973"
    529 Manhattan Beach, CA  90266
    530 (800) 55FORTH or (310) 372-8493
    531 FAX (310) 318-7130
    532 </pre>
    533 
    534 <h2><a name="results">Results of Letter Ballot</a></h2>
    535 
    536 <pre>
    537 From: Elizabeth D. Rather
    538 Subject: LBs 14 & 15
    539 To: X3J14 Technical Committee
    540 Cc: l.barra@itic.nw.dc.us
    541 Date: Fri, 07 Jul 95 12:05:04 PDT  
    542 Letter ballots 14 [and 15] closed at noon July 1 with the following results:
    543 
    544         Y  N  A NV
    545 LB14:  12, 0, 0, 3
    546 
    547 [...]
    548 
    549 Thank you for your participation.
    550 
    551 Regards,
    552 Elizabeth D. Rather, Chair X3J14
    553 
    554 Elizabeth D. Rather             "Forth-based products and
    555 FORTH, Inc.                      Services for real-time
    556 111 N. Sepulveda Blvd. #300      applications since 1973"
    557 Manhattan Beach, CA  90266
    558 (800) 55FORTH or (310) 372-8493
    559 FAX (310) 318-7130
    560 </pre>