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>