15_Pascal_News_Sep79 15 Pascal News Sep79
15_Pascal_News_Sep79 15_Pascal_News_Sep79
User Manual: 15_Pascal_News_Sep79
Open the PDF directly: View PDF .
Page Count: 126
Download | |
Open PDF In Browser | View PDF |
PASCAL USER'S GROUP Pascal News NUMBER 15 " COMMUNICATIONS ABOUT THE PROGRAMMING LANGUAGE PASCAL BY PASCALERS SEPTEi-1BER" 1979 Front Cover Guardian of Rational Programming 0 POLICY: Pascal News 1 Thanks for not giving up hope ... 2 EDITOR1S CONTRIBUTION 3 HERE AND THERE WITH Pascal Tidbits 3 Pascal in the News 5 P. U. G. Pascal and Teaching (postponed until #17) 7 Ada (000-1) 7 Books and Articles (mostly postponed) 8 Conferences and Seminars 9 PUG Finances 13 Roster Increment 13 27 APPLICATI ONS Introduction and News 27 Software Tools 28 Programs 55 Algorithms 56 60 ARTICLES IIA Contribution to Minimal Subranges ll - Laurence ll Atkinson 60 IIA Note on Scope, One-Pass Compilers, and Pascal - Arthur Sale 62 IIPasca1-1 - Interactive, Conversational Pascal-S" - Richard Ciche11i 63 IITracing the Heapll - Steve Schach 67 IIWhy use Structured Formatting?1I - John Crider 68 71 OPEN FORUM Future of Pascal News - Save the PUG 71 General 77 Pascal Standards 90 Validation Suite 99 ~ IMPLEMENTATION NOTES 100 Portable Pascals 100 Pascal Variants 1977 , Australia 100 1977, Europe 1976, U. S. A. Hardware Notes 104 Feature Implementation Notes 104 Checklist 106 Machine-Dependent Implementations 107 125 POLICY: Pascal User1s Group Back Cover University of Minnesota Equal-Opportunity Statement .... - - - - -- - - POLICY: PASCAL NEWS (79/09/01) * Pascal News is the official but informal publication of the User's Group. Pascal News contains all we (the editors) know about Pascal; we use it as the vehicle to answer all inquiries because our physical energy and resources for answering individual requests are finite. As PUG grows, we unfortunately succumb to the reality of (1) having to insist that people who need to know "about Pascal" join PUG and read Pascal News - that is why we spend time to produce it! and (2) refusing to return phone calls or answer letters full of questions - we will pass the questions on to the readership of Pascal News. Please understand what the collective effect of individual inquiries has at the "concentrators" (our phones and mailboxes). We are trying honestly to say: "we cannot promise more than we can do." * An attempt is made to produce Pascal News 3 or 4 times during an academic year from July 1 to June 30; usually September, November, February, and May. * ALL THE NEWS THAT FITS, WE PRINT. Please send material (brevity is a virtue) for Pascal News single-spaced and camera-ready (use dark ribbon and 18.5 cm lines!). * Remember: ALL LETTERS TO US WILL BE PRINTED UNLESS THEY CONTAIN A REQUEST TO THE CONTRARY. * Pascal News is divided into flexible sections: POLICY - tries to explain the way we do things (ALL-PURPOSE COUPON, etc.). EDITOR'S CONTRIBUTION - passes along the opinion and point of view of the editor together with changes in the mechanics of PUG operation, etc. HERE AND THERE WITH PASCAL - presents news from people, conference announcements and reports. new books and articles (including reviews), notices of Pascal in the news, history, membership rosters, etc. APPLICATIONS - presents and documents source programs written in Pascal for various algorithms, and software tools for a Pascal environment; news of significant applications programs. Also critiques regarding program/algorithm certification, performance, standards conformance, style, output convenience, and general design. ARTICLES - contains formal, submitted contributions (such as Pascal philosophy, use of Pascal as a teaching tool, use of Pascal at different computer installa~ions, how to promote Pascal, etc.) OPEN FORUM FOR MEMBERS - contains short, informal correspondence among members which is of interest to the readership of Pascal News. IMPLEMENTATION NOTES ~ reports news of Pascal implementations: contacts for maintainers, implementors, distributors, and documentors of various implementations as well as where to send bug reports. Qualitative and quantitative descriptions and comparisons of various implementations are p~blicized. Sections contain information about Portable Pascals, Pascal Variants, Feature-Implementation Notes, and Machine-Dependent Implementations. * Volunteer editors for this issue (#15) were: Rick Marcus, Andy Mickel, Jim Miner, Arthur Sale, and Rick Shaw. (Rick Shaw and Arthur dropped into Minneapolis to save the day!) PASCAL NEWS #15 SEPTEMBER, 1979 Thanks for not giving up hope PAGE 1 ••• Pascal News is alive and well , • Well, everyone, it's been a real struggle to get this issue done in spite of the delays over the last 6 months. Unfortunately we've caused some confusion. Please note: I THIS ISSUE (#15) AND NEXT ISSUE (#16) STILL APPLY TO 78-79 SUBSCRIPTIONS!!! In other words, if your mailing label says "RENEW JUNE 79", your subscription has not expired yet. Further, our policy states that if you join PUG anytime during an academic year ending June 30, we will send you all 4 issues for that year. Well now, I'd like to point out that we are still in the 78-79 academic year (!), and that all new subscriptions are being forced to that period. Why? I expect you new members want the latest information that's available (such as this issue), and this is a 78-79 issue. Therefore whereas we say in the policy that we attempt to publish September, November, February, and May issues, for 78-79 subscriptions we will have had December, January, September, and October issues. 79-80 subscriptions will start with a November issue (#17). Weill get back on tra~k eventually (I hope!). I'm sorry for the confusion. Now let me try to explain what happened: Volunteers do the work on Pascal News. As anyone in computing these days knows, talent (or even mere bodies) are hard to find. With Jim Miner absorbed in standards activities and everyone else hard at work at regular jobs, it's been just Rick Marcus and myself holding things down. In fact from 79/01/22 to 79/04/15, mail piled up unopened, and we were still delinquent in sending out some backissues ordered since 78/11/08! So if you are a new member who joined during this period (nearly 800 of you!), you were the victims of unacceptably bad service. I apologize. By 79/05/15 we had processed the mail and mailed out backissues, which in some cases took 1 more month (79/06/15) to arr i ve. However, the next urgent task was to tidy up the PUG files (about 10000 ALL-PURPOSE COUPONS) and update the accounting since we let things go back in May, 1978. It was actually back then that our troubles began, because one article publ icizing Pascal and PUG in ComputerWorld generated 500 new members in one month (or a 25% increase in membership in one single month!) We have only recently fully recovered. This summer Rick and I spent one month completely straightening the files. Straightened files (very important) allows us to process new memberships and renewals faster, because we can eliminate duplicates and follow up questions about membership status, lost and uncashed checks, etc. Finally on 79/08/28, I processed all subscriptions (approximately 450) from 79/05/16 onward and mailed backissues. Only then did we begin looking at Pascal News #15 seriously. Thanks a lot for your faith and patience--miraculously we've received zero requests for refunds, and only 10 requests regarding what is happening. When I said in #13 that I was quitting effective anytime after July 1, 1979, I was intending to do the 2 issues remaining for 78-79, and #15 and #16 represent the followthrough on that commi tment. Some people thought that #13 was my "swansong." _ ~ Editor's Contribution ~!lQ~Ubj~=Jm~ As I said on the previous page, it's been a real struggle to get this issue of Pascal News produced. It was a hard task to face, too! Foremost is the fact that we were behind in process i ng the ever- i ncreas i ng volumes of rna i 1 with fewer and fewer volunteers. Next, event surrounding standards activities effectively sapped all our energy (or so it seems!). ·Also with the uncertain future of Pascal News and PUG, lots of time was spent discussing "solutions." I found it really depressing to continue to have to cooperate with certain people and performing certain activities (e.g. someone suggesting some grand future for PUG such as a constitution and then requiring me to do all the transition work to implement it) that I don't like nor believe in. I still have my regular job to do here at the comp center Anyway, good news! Hith the help of Rick ~1arcus, and in the last week the air-borne reinforcements of Arthur Sale, Rick Shaw, and a work-liberated Jim Miner, we were able to deal #15 a knockout blow. The next issue (#16) will be a special one on the Validation Suite (see below) and my last one as editor. #16 should appear very shortly after this issue and wrap up the 73-79 academic year. Ig~=~~t~~~=gt=~g~~gl=~~~~=gQ~=~~~ (*Pl ease see related correspondence in the Open Forum sect i on. *) When we last left you, I had written an editorial and an open letter in #13 saying that I was quitting the editorship of Pascal News and my work informally coordinating Pascal User's Group, and that bas i ca lly there were 4 a 1terna t i ve futures for cons i derat i on. One of these was a proposed con~itution provided by Richard Cichelli which included a ballot to be returned by April 15, 1979. I claimed then that the constitution was probably the best alternative, and that the least 1i ke ly a lternat i ve was to keep PUG the same, but to decentra 1i ze the work. I guess I was really wrong! Rick Shaw (to whom ballots were to be sent) tabulated 56 votes in favor, 22 votes agains and 2712 abstentions of the 2790 active members. 5 of the yes votes dissented on the by-laws. Some comments written-in included: the constitution effectively shuts ~ut international members; affiliation with IEEE or ACM SIGPLAN was the best alternatlve. More than a dozen of the "no" votes were in favor of di sband i ng PUG altogether. In spite of their promises Steve Zilles (SIGPLAN Chairman) and Bruce Ravenel (on behalf of IEEE) did. not send us letters to print for our consideration proposing how we might affil iat with them, much less inviting us to do so. So much for ACM and IEEE. I happened to go with Jim Miner to my first IEEE pno / ANSI X3J9 Joint Pascal Standards meeting in Boulder the last week in April, and met many people with whom I discussed PUG's future (besides explaining our terrible workload, etc.!). The feeling by-and-large was that they wanted to see a good thing like an independent PUG continued, and that they had voted for the constitution because they way no other real choice, but ideally they would like to see PUG continued as it is now. There followed one of those smoke-filled-room meetings in one of the hotel rooms among Jim Miner, Scott Jameson, Rick Shaw, Rich Cichelli, and others (but not myself!) in which a heated (and smoky!) argument raged for over 4 hours. The result was the expansion of David Barron's idea by Jim Miner: the realization that the only important activity of PUG is the publication of Pascal News. Several people responded to Jim's init~ative (s~e Open Forum), and the best news was that Rick Shaw volunteered to take over as edltor and lnformal coordinator of Pascal User's Group for 2 years. Rick is a capable administrator (whereas I am not good at delegating responsibility), and he has the luck of being in a nice work environment at DEC's Atlanta Regional Office with ready access to clerical facilities, etc. We then realized that PUG could continue informally without a constitution and other politic baggage. The constitution vote could then be thrown safely out--after all, 97% of the membE did not vote! The last step was to actively decentralize the work so that Rick could avoid drowning quickly. We then started to recruit more section editors for Pascal News. The li, of new volunteers now looks 1ike this: Rick Shaw - editor; Bob Dietrich and Greg Marshall Implementation Notes editors; John Eisenberg - Here and There editor; Rich Stevens - Books and Articles editor; Andy Mickel and Rich Cichelli - Applications editors; and Tony Addyman and Jim Miner - Standards editors. Rick will simply forward material to them which they in turn will convert to camera-ready copy and return to Rick for paste-up. Meanwhile part of the subscription money to Pascal News will go to pay for clerical work (under Rick) for the mailing-label data base, word-processing tasks, printing, mailing, etc. Atlanta is the home of Georgia Tech and Georgia State University with whom Rick has close ties. We even got offers from the following people and organizations who have expressed the ability to help Pascal News in some material way: John Knight at NASA Langley, Rusty Whitney at Oregon Software, Marius Troost at Sperry Univac Minicomputer Operations, and Don Peckham at Pertec. So the future is bright. Frankly, at the present time it appears that Pascal News can be viable for only 2 or 3 more years. With the explosion in Pascal interest, the phrase "lingua franca" is often heard in reference to Pascal. The obvious impl ications of 1ingua franca are that events surrounding Pascal will be covered thoroughly by every other computing journal and so will take over the role of Pascal News. In summary, we saved Pascal News and PUG from the near political demise foisted on us in 1978 when the constitution idea was born. We'll have an informal PUG with no constitution by golly, or we'll have a constitution with no PUG! We've just altered the policy pages in Pascal News to protect oursel ves from constitutions and pol itics in the future. rn ~mjQ~~ Pascal Standards The BSI/ISO standard's progress,with productive and valuable American cooperation, has been remarkable and encouraging, proving those who have claimed such an effort would take at least 5 years dead wrong. See Standards in the Open Forum section. Pascal Validation Suite A new feather in Pascal's cap is the existence of a professionally produced Validation Suite of test programs to verify the standards-conformance, etc. of a gi ven Pasca 1 compil er. The co 11 ect i on of 300+ programs can be used by imp 1ementors and users alike to help enforce standards. See Standards in the Open Forum section. Pascal News #16 will be entirely devoted to the Validations Suite. Defective copies of Pascal News #14 At least one person has reported that his issue of Pascal News is missing pages 6-14 and has pages 15-22 duplicated. If you are suffering from the same problem, let us know and we'll help. (/) rn -0 -; rn Eurocheques David Barron sent along this note to European subscribers: "From time to time we are asked why we wi 11 not accept "Eurocheques", i.e. sterl ing cheques drawn on the subscriber's local bank. The answer is simple. A Eurocheque for (4 yields less than {3 to the PUG bank account. The difference, more than 25%, is the charge made by our bank for processing the Eurocheque. So please ask your bank for a draft drawn on a U.K. or Irish bank, or pay by direct transfer into our Post Giro account (23 5134000)." Pascal on Micros A large number of people have been complaining to us over the last year ~ about our blind praise and support for Ken Bowles and his group's widespread Pascal interpreter uo for various micros popularly known as UCSD Pascal. They are expressing reservations about the lack of reliability and speed and the presence of non-standard features in UCSD Pascal. I'd like to make it clear that we don't blindly support Ken or anyone else even though we've printed some highly favorable items about UCSD Pascal in some past issues. (For some contrast see the checklist for UCSD Pascal in Pascal News #13 under DEC LSI-ll.) Ken Bowles was one of the people who helped in the middle stages of Pascal's acceptance in this country. I might add that increasingly there is a trend among serious users of Pascal on micros to move away from UCSD Pascal to more standard, reliable, and faster implementations. An example is Andrew Tanenbaum's Pascal-E (see Implementation Notes), a highly portable Pascal implementation initially developed on PDP-II's. It produces an optimal Pascal intermediate code called EM-I; the EM-l optimizer on the 11 produces a full compiler in 20K bytes! Other examples are Boston Systems Office Pascal and 2 "native code" compilers for the Z-30 (from Indiana University and Zilog). According to Michael Rooney at BSO, their Pascal is a set of optimizing cross-compilers for use in burning ROM's. George Cohn at Indiana University has a compiler which can now compile itself (see Implementation Notes #13); Zilog seems to have a compiler as well (see Implementation Notes, this issue). Also be sure to watch Motorola's rn Pasca 1 on the 68000 and National Semi conductor's Pascal on thei r 2903 and 2910. _~_ UNIVERSITY OF MINNESOTA University Computer Center TWIN CITIES 227 Experimental Engineering Building Minneapolis, Minnesota 55455 Peter C. Akwai, SchifferstraBe 88 6000 Frankfurt/M. 70, GERMANY: "Yes, we now have a Northwest Microcomputer Systems 8S/P. This is an 8085-based micro with 56k bytes of user-accessible memory, builtin screen and keyboard, and 2 8-inch floppy drives. It is distributed with UCSD Pascal 1.4 (a bone of contention and disappointment to us since from the Bowles book Microcomputer Problem Solving Using Pascal we were led to expect the II.3 release with graphics)." (*79/1/11*) Gerald P. Allredge, Dept. of Physics, Univ. of Missouri-Rolla, 103 Physics, Rolla, MO 65401: "Wilhelm Burger recommended that I contact you concerning Pascal implementations for IBM Systems 370 facilities a (1 am particularly interested in getting his Pascal-based parser generator BOBSW running on the University of Missouri Computer Network, which is based on a S/370 168-158 couple.) We presently have the University of Manitoba Version 1 compiler, but Wilhelm thought that the Tobias and Cox version of Pascal 8000 would likely be substantially better. Can you give me an opinion on this? (If you are aware of any better S/370 version, I'd like to know about it alsoa" (*78/7/14*) James A. Anderson, Dept. of Psychology, Brown University, Providence, RI 02912: "I am trying to find a Pascal program which can find the eigenvectors and eigenvalues of a real, symmetric matrix. An implementation of the Jacobi method is fine, or any alternate way of doing it. This is a very standard type of numerical task, so 1 suspect somebody must have done it. I would also be interested in finding out about programs for more general eigenvector and eigenvalue calculations if there are any around. I am doing some computer simulations of neural networks." (*79/,8/1*) Floyd o. Arntz, 44 Grove Hill Ave., Newtonville, MA 02160 "I am particularly interested in Pascal implementations available on soon-to-be be available on commercial time sharing services. Also I am considering PDP-II or CY18(CDC) mini applications." (*78/12/1*) Arnold Bob, Digitron, 500 Fifth Ave., New York, NY 10036 : lIWe were wondering if anyb ody has UCSD Pascal based software for sale. We're especially interested in business and graphiCS programs, however we're also interested in other applications programs." (*79/1/26*) Edward W. Bolton, 4253 Moore Sta, L. A., CA 90066: "My interest is in implementing subset of Pascal on an 8080 based system (SOL) in less than 44K(bytes)." (*78/10/11*) Charles Da Foley, Knollwood Lane, Cold Spring, NY 10516: request, I would like availability information on compilers 10J •.• " (*79/2/26*) "To get to the meat of the for [IBM System/3 Model rn Till Geiger, Falkensteinweg 8, D-7910 Neu Ulm, Germany: "I am just a fan of Pascal. My knowledge of Pascal is rather limited. Last spring I started to do some Pascal programming for about 3 months at New Ulm (Minnesota) High School. The inspiration to use Pascal came from a Pascal News copy a friend lent me. Compared to BASIC, it seemed to offer a totally new field. Those three months I worked with Pascal I got little done, because there were no books or other aids around. But I started to like Pascal and would prefer it over BASIC. In May I left for Germany. And MECC (Minnesota Educational Computing Consortium] is unachieved here. The school I am going has a PDP-II but only with BASIC. Other schools don't even have computers in their school. So I have to stick with BASIC. Maybe in the near future I will find some system with Pascal in the Ulm area." (*79/4/23*) Richard Brandt, University of Utah, Dept. of Physics, 201 N. Physics Building, Salt Lake City, UT 84112: "I have been running UCSD Pascal on my Terak's since last December. Although it is not a "pure" Pascal, computer science students who have used it have preferred it to the other two Pascal's on campus, specifically the ones on the Burroughs 1700 and DECsystem 20 ••• Our primary emphasis has been in the development of CAl material using both graphics and animation. We have developed the following: (1) a graphics editor; (2) a screen editor; (3) a CAl compiler; (4) a CAl interpreter; and (5) an algebraic answer analyzer. 1I (*78/11/15*) Robert Cole, GTE Automatic Electric Labs, 11226 N 23rd Ave., Phoenix, AZ 85029, (602) 995-690~ent a letter on 78/10/30 soliciting help in finding a commercially produced PDP-II to Intermediate code to Intel 8086 optimizing compiler written in Pascal. Lorne Cannel, University of Waterloo, Dept. of Computer Science, Waterloo, Ontario, Canada N21 3~We would like to obtain the SLAC Pascal compiler so that we may compare its performance and usablity to other Pascal compilers we have tried. Could you please direct us to someone in this regard. II (*79/4/10*) (/) Tony Gerber, etc., Basser Dept. of Computer Science, Madsen H08, University of Sydney, N.S.W., 2006 Australia: "Our department has finally switched to teaching Pascal, thus joining every other major Australian university in this regard. II (*79/7/18*) George W. Gerrity, University of New South Wales, Dept. of Mathematics, Australia: "At the moment, we have several PDP-II machines running RSX-11, RT-11 (and UNIX part-time) and are looking desperately for a Pascal and/or Concurrent Pascal compiler or interpreter which will run under RSX-11D." (*78/7/17*) J. Daniel Gersten, General Electric Co., Syracuse, NY 13201: "I am running the Swedish Pascal on a PDP-11/60 RSX-11M system. I have succeeded in compiling the compiler on the PDP-II for version 4 and am presently working on the same for version 5." (*78/11/17*) (/) rn -0 -l Jim Gilbert, Systems Structuring Technology, 30436 N. Hampton Rd., Laguna Niguel, CA 92677: "Get some cooperative soul to donate original copies of issues 1-8 for reproduction at exorbitant rates for the faithful who must have them." (*78/9/30*) a Father Mick Burns, St Katherine's Episcopal Church, Martin, SD 57551: "I operate a 24K Heath H8 system and am hot on the trail of a grant to upgrade to a 56K RAM and Heath DOS. As you probably know Heath will shortly make Pascal available to H8 and H11 usersa ••• Particular interest is in CAl (Christian education)." (78/9/11*) Here and There With Pascal Paul F. Fitts, INNOVATEK MICRO SYSTEMS INC., Smithfield Rd., Millerton, NY 12546: "We have an immediate application for preparing an extensive software package and wish to consider Pascal as the program language... We are interested in locating Pascal software, such as compilers and applica tions programs." (*78/10/12*) Pete Goodeve, 3012 Deakin St. flD, Berkeley, Lancaster (P4) Pascal as the basis of a you can guess, this needed some extensions assembly language interface via external we like)." (*78/11/27*) CA 94705: "We are using the University of real-time experiment control installation. As to the system! (mainly conSisting of an procedures, from which we can hang any kludges Geoffry R. Grinton, Herman Research Laboratory, Howard St., Richmond, VA: "we are at present using OMSI Pasca1-1 under RT-l1 ou a PDP-11/34 and several LSI-II systems and AAEC Pascal 8000 on an IBM 370" (*79/4/24*) James Hargreaves, POB 14734, Cincinnati, OH 45214: "I plan to use Pascal on 990/4 and 990/10 TI computers as well as 9900 and 770 line equipment manufactured by TI that is compatible with the 990/4 and 990/10 cpu's. If you know of anyone in the USA who has converted the DEC based Pascal and Concurrent Pascal software on the TI 990 or 980 or 960 cpu's, I would like to get in touch with them." (*78/12/4*) J. Nie1 Haynie, North Ridge Data, 971 E. Commercial Blvd., Fort Lauderdale. FL 33334: "We at North Ridge Data have recently committed ourselves to a major software development effort in the Pascal language. Specifically, we will use a micro computer implementation .of UCSD Pascal in a real-time, interactive application •••• One of ,our primary concerns is the standardization of Pascal. We hope that the problems with Basic and its 50-odd versions does not befall Pascal. This would truly limit the expansion of Pascal into its deserved position as the "Lingua Franca" of computing." (*79/3/16*) Ed Johnston, 715 6th St., Rochester, M:N 55901: "As an IBM employee, am attempting to generate some interest in Pascal within the company. Few people seem to have heard of it." (*78/12/12*) rn Here and There With Pascal Robert S. Kirk, American Microsytems Inc_, 3800 Homestead Rd., Santa Clara, CA 95051: "American-mcrosystems, Inc. currently has Pascal running on our 6800 MDC's. We have a compiler on order from the University of Tasmania for our large Burroughs B7700 computer, and we are looking for a Pascal compiler for the PRIME 400 computer. Hopefully, your Users Group can aid us in locating Pascal compilers and in making this relatively Kitchen, Comp. Sci. etr., Oniv. of Maryland, College Park, MD 20742: "Very pleased to see draft standard in #14 especially type-equivalence defining occurrence Greg Morris, 297 Turnpike Rd_, Westboro, MA 01581: "Much to my surprise, I quickly find a job working with Pascal." (*79/3/28*) was able to = young language a standard programming tool at American Microsystems, Inc." (*79/1/11*) Les called CAMIL. The machine coded generater for the CAMIL language is written in Pascal. Camil; while intended primarily for CAI/GMI applications, also happens to be a very good general purpose language but can be run only in the interactive time sharing environment. Until a batch version of CAMIL can be developed, we are also using Pascal as our batch language. It has been used primarily to create batch versions of CAMIL programs because of the similarities between Pascal and CAMIL." (*78/10/12*) & for-loop Maurice R. Munsie, Network Computer Services, 69 Clarence St., Sydney, Australia, 2000: I1We are distibuting in Australia OMSI Pascal-I. A number of sales have been already made and plans are being made for the OMSI implementors to hold workshops in Australia later this year." (*78/7/27*) semantics." (*79/3/15*) David A. Kohler, 1452 Portobelo Dr., San Jose, CA 95118: the format a little disconcerting and difficult to read. and David Nedland-Slater, 1, Buckland Close, Farnborough, Hants. GU14 8DH, United Kingdom: "I am interested in Pascal for micro work as a real alternative to assembler. I hope Pascal keeps us away from nasty bit twiddling." (*78/10/3) De Niel Overton, Computer Systems & Services Inc., Box 31407, Dallas, TX 75231: I1Wanted- an accounting pack.age in Pascal. Wish to convert to target machine: TI DS990-Z." (*79/9/5*) "1 love the PN idea, but find Keep up the fine effort emphasize those algorithms and software tools" (*78/12/28*) Pierre J. Lavelle, Rua Pompeu Loureiro, N 120 APT. 602, 22061-Copacobana, Janeiro-Brazil: "Traveling PUG members welcome!" (*78/11/17*) Rio G. Dick Richard Linton, 3027 N. Shepard Ave., Milwaukee, WI 53211: "Here at the U. W. -Milwaukee we are using both the Navy's and U. W. -Madison Pascals and we are currently running evaluations between the two." (*79/3/3*) Paul C. Lustgarten, Computer Sciences Dept., U of Wisconsin, 1210 W. 'Dayton St., Madison, WI 53706: "I am a third year grad. student and teaching assistant at Univ. of Wisc. Madison, and have been eager to use Pascal to teach introductory programming since I first used it. Although most of our (non-numeric) courses use Pascal whenever possible, almost all of our introductory courses use FORTRAN, COBOL, or BASIC! The only exception to this is the version of the intra. course for potential Computer Science majors, which uses Pascal... Also--my wife is a programmer for a company that produces data base systems on Data General Novas. Apparently, they view the execution speed of their systems as being of primary importance (over such other things as software reliability, cost/time of development, maintenance, etc.), and don't believe that ..§!!!Y. high-level language could possibly compete in this regard with the several dialects of assembly language they currently use (their comparison is with DG FORTRAN). Does anyone have any statistics or convincing arguments?11 (*79/1/9*) David Matthews, Process Computer Systems, 750 N. Maple Rd., Saline, MI 48176: "Printing actual programs (PUG News 1112) was a great help in learning better (easier to read) style." (*78/8/21*) Jim McCord, 330 Verada Leyenda, Goleta, CA 93017: "I'm a hobbyist using UCSD Pascal. Main interests are graphics, teaching-type programs and sophisticated games ( a la Adventure ). How many other hobby-Pascal' ers are there?" (*78/11/14*) Monte Jay Meldman, M. D., 555 Wilson Lane, Des Plaines, IL 60016: "I am interested in knowing about word processers and accounts receivable and things like that on Pascal and would appreciate any information you can give me about applications that have been written for the PDP-11/40, RSTS/E. It really sounds like Pascal is interesting. 1I (*78/11/15*) Paul Miller, Avera Technology, 1643 Wright Ave., Sunnyvale, CA 94087: "My company has recently determined to use Pascal as the primary implementation language for a new product development. Our current plan is to do program development on a PDP-II system under RSX-IIM and then cross-compile for the microprocessor in our product. Any information you could send me about... DEC Pascal, or available help in starting up a Pascal product would also be appreciated." (*79/5/7*) Anne Montgomery, POB 30204, Lowry AFB, CO 80230: "McDonnell Douglas has developed a CMI/CAI system here on Lowry Air Force Base called the Advanced Instructionial System(AIS) •••• This system is basically an extension of the CDC Scope 3.4.3(1evel 439) operating system. For the development of AIS we have developed a Pascal-like language Rakhorst, Manudax Nederland B. V., 5473 ZG Heeswijk(NB), Holland, PB 25, Meerstra~ "As a distributor of Motorola Semiconductors Division in Holland we will introduce within one month a Dutch-written Pascal compiler for the Motorola MC 6800 microprocessor and also will Motorola introduce a Pascal compiler soon for the new MC 6809 and the 16 Bits MC 68000." (*78/11/27*) F. Eric Roberts, Perkin Elmer Co., Mail Station 284, Main Ave., Norwalk, CT 06856: "I'm introducing the virtues of Pascal to a Fortran, PL/I and assembler community, for 1I applications and small systems work. Full marks for fantastic Pascal News. (*78/10/5*) Robert E. Rogers, Jr., 18625 Azalea Dr., Derwood, lID 20855: "I have received a copy of the University of Bratislava Pascal-b compiler for CDC 3500 Machines. We have been using it for only a short time and are attempting to compile a list of differences between this implementation and the UCSD Pascal. Hopefully by early spring we'll have something ready." (*79/1/1*) Antti Salava, Munkkiniemen Puistotie 17A 13, SF-00330 Helsinki 33, Finland: " ••• University of HelsinkI, where I was implementing Pascal-HB compiler on Burroughs B6 700. It's been running now a couple of years without any fatal crashes." (*78/8/28*) John M. Smart, Smart Communications, Inc., 866 United Nations Plaza, New York, NY 10017: ''WANTED conversion program or part time programmer, capable of converting programs in Burroughs extended ALGOL for B6700 into Pascal for PDP-II or other systems, including B6700." (*79/8/1*) Edward R. ~, EDN, Cahners Publishing Compaq.y Inc., 221 Columbus Ave., Boston, MA 02116: "EDN is preparing to write an article dealing with the current interest in Pascal. Our intention is to look at both the historical and contemporary aspects of the situation; we want to put the situation into its proper perspective." (*78/12/15*) M. Thornbury, Totalisator Agency Board, P. O. Box 3645, Wellington, New Zealand: "The N.Z. TAB are presently designing a large-scale wagering system utilising INTERDATA computers. We originally decided to use the RATFOR preprocessor as a front end to the FORTRAN compiler, but feel that FORTRAN VII does not have a sufficient instruction set to perform certain functions efficientlye We would therefore like to write our software in Pascal if we can locate a compiler presently running on an INTERDATA 8/32." (*79/3/13*) Bob Wallace, Hicrosoft, 10800 NE 8th, 11819, Bellevue, WA 98004: a microcomputer Pascal compiler." (*79/1/18*) "Microsoft is developing Marie Walter, Scientific-Technical Book and Copy Center, 17801 Main St., Suite-H, Irvine, CA 92714: " ••• 1 am also enclosing our current bibliography on Pascal which has proved very popular. CIT has been distributing it with their literature on the Microengine and I get calls from allover the country from people just getting into Pascal. Item 3: I (/) I'l --0 -l I'l thought you might be interested in our Pascal tee shirts which we just started turning out. 'lb.ey come small, medium, lar~e and can be on any background. $4.95 per. 1I (*79/3/23*) ~~TECH~ • BOOK CENTER ., Business Week (industrial edition), April 23, 1979, pg 46: "Computers Rush to Talk to Pascal" covers the growing use of Pascal by major manufacturers. "Pascal is now the odds-on favorite to become the dominant language for microprocessors" says the article along with many other reasons for making the switch to Pascal. Byte, September 1978, pg.71: An ad for Northwest Microcomputer Systems NMS 85 Series which uses a likeness of Blaise Pascal as its drawing point. Needless to say, Pascal is offered with the machine. 17801 MAIN STREET IRVINE. CALIFORNIA 92714 Byte, October 1978, pg.129: An ad for a new book entitled "A Concurrent Pascal Compiler For Microcomputers", by Alfred C. Hartmann. (714) 557-8324 \ * letters on blocks can be clear, red. yellow, or blue *) prices subject to cbange by publishers Byte, November 1978, pg.142: A letter entitled "READER Cs PASCAL ALTERNATIVE", Which is one reader's comparison of C and Pascal. in California add 6% sales tax Byte, December 1978, pg.178: An ad for eyber-Score Inc, Pontiac, Michigan, offering Pascal softwore, mainly business-oriented. mail orders add $1.50 postage ~, February 1979, pg.185: A HELP WANTED ad for Fischer and Porter, Warminster, PA, for software engineers with among other qualifications, a knowledge of Pascal. Allen A. Watson, The Record, 150 River St., Hackensack, NJ 07602: "The Record (a newspaper) is not currently using Pascal on our 370/138s, but we are considering doing so in view of a possible move in the near future to other mainframes. So what we are looking for is general information about Pascal, advantages vs. other languages--that kind of thing." (*79/3/2*) Robert Williams, MicroMouse Enterprises, Box 69, Hollywood, CA 90028: "I am building two minicomputers; the first of which was up-n-running earlier this year: a DEC LSI-11 with 20 kwords RAM and two floppy drives. The second is equally powerful (or maybe more so); it is the Alpha Microsystems AM-100. Pascal is to be the'main software link between them. I have not yet obtained any code, altho I have the AlphPascal Programming System users reference manual which is a bargain at $7.50. I believe the source was from UC San Diego." (*78/10/6*) D. J. Yates, Botany Dept., University of Queensland, St. Lucia, Qld, Australia 4067: "I am running two North Star Horizons. Don't yet have Pascal-but it is on order. Very pleased with the Horizons." (*79/3/14*) Earl M. Yarner, 195 Varick Rd., Newton, MA 02168: II • • • Hewlett-Packard presently supports FORTRAN and assembler but I hear rumours that they are working on adding Pascal. I am afraid that they will take a long time to get ready, so I would like to put Pascal 'on-line' myself, hopefully within the next year. Any advice or assistance that you or any other member of the group can give me would be appreciated. 1I (*79/3/19*) ~, March 1979: A letter critiquing the article IICreating a Chess Player" in the October 1978 issue, which was part of a series of articles on a chess program written in Pascal. Also an ad for a Pascal Engine, from Cutting Edge of Technology, pg.78. pg.107: A short note: IIMore companies jumping on the Pascal bandwagon l l • pg.59: an ad for another implementation of Pascal, on Control Systems, Inc. UDS 470. It says that Pascal has been used on their machines to control grain elevator operations. pg.237: An ad for Oregon Software's OMSI Pascal, and how to get it. Byte, April, 1979, pg.239: "Pascal versus BaSic ••• ", an article comparing Pascal to BASIC. if) rn ~, May, 1979, pg.20: An ad for Western Digital's 16-bit Pascal Microengine. pg.57: An ad announcing Pascal for the North Star Horizon. pg.118: A note that Microsoft plans to announce a Pascal Package plus a note about the U. S. Joint Pascal Standards Commi ttee ~ pg.224: A letter which opposes the bundled packaging of Pascal on microcomputers, with UCSD Pascal as its target. --0 -I rn ~, June 1979, pg.130: 2 short notes, one about Pascal for the 6800 and another about the DOD's Pascal-like language, ADA. pg.194: An article which mentions an APL interpreter written in Pascal. pg.202: An ad for 'Tiny Pascal' for TRS-80 and North Star from: Supersoft, POB 1628, Champaign, IL 61820. ~, Pascal In the News ACAnS Newsletter (The Association for Computer Aided Design Limited, in Australia), No. 19, December 1978: IIPASCAL-Everybody's Language? II A short note on the growing popularity of Pascal, the availabilty of compilers, and how to get the Australian Atomic Energy Commission IBM OS/ compatible compiler. AEDS MONITOR, Apr/May/June 1979: "Basic Thoughts on BASIC", on the use of BASIC as a teaching language. The author sees BASIC as a bad choice, sees hope with possibly Pascal, and would like to see the fundamentally important things involved in teaching programming be brought out. Australian, July 24, 1979: "Pascal Program" announcing the release of Validation Suite by Professor Arthur Sale at the University of Tasmania. the Pascal July 1979: In the section NYBBLES, an article about the "TINY Pascal Compiler", which has now been rewritten in 8080 assembly language. The compiler is based on the one published in earlier issues of ~. pg.146: An ad for Technology System South's (Loris, SC) Pascal Microengine. pg.169: An ad for TRS-80 Pascal (a version of UCSD Pascal), available from the FMG Corporation, POB 16020, Fort Worth, TX 76133. pg.239: An ad for a Pascal compiler for the Zilog ZSO. The claim is that it "is often twenty times as fast as UCSD's implementation". Available from: Ithaca Audio, POB 91, Ithaca, NY 14850. pg.240: An announcement for M6800 Pascal from Central Systems (Williamsburg, VA). Central Scientific Computing Facility Computer Newsletter(Brookhaven), Volume 18,no. 7, pg.110: A note mentioning a 7600 version of Pascal installed on MFZ, which is essentialy the same as Pascal version 1 on the 6600. Computer Design, October 1978, pg.188: "CPU Interfaces Processor to S-100 Bus, Providing 16-Bit Minicomputer Power and PascalI!, an announcement that there is available to the user of Marinchip Systems M9900 CPU board, which utilizes Texas Instruments TMS9900 processor, both concurrent and sequential Pascal. Both compilers are converted from those developed by Per Brinch Hansen. Marinchip Systems is located at: 16 Saint Jude Rd., Mill Valley, CA 94941. 'To Computer Design, March, 1979, pg.179: "-Pascal Adaptation to Development Center Will Speed Programming", American Microsystems will support Pascal on its MDC-100 product line. use with the Tektronix, Inc. 8002 Microprocessor Development Laboratory, by the Pascal Development Co., Suite 205, 10381 S. DeAnza Blvd., Cupertino, CA, 95014. Computer Weekly, November 9, 1978, pg.7: "Now National Opts for Pascal, the People's Language", an article about National Semiconductors decision to support Pascal and what National considers to be the advantages of Pascal. Computerworld, August 20, 1979: "Pascal Runs on DG Units", announcing the first in a series of five implementations of Pascal for use on Data General Minicomputers, developed Computer Weekly, May 24, 1979: "Data General Offers PascalI! Data General's Micron, an operating system for their 16-bit MicroNova, which comes with a Pascal compiler. Computerworld (Australian), August 3, 1979: Announcement of the availability of the Validation Suite for Pascal, developed in Australia and England. "Validation Suite for Pascal" • by Rational Data Systems, 245 W. 55th St, NY, NY 10019. Computer Weekly, May 31, 1979: IIDEC Pascal for VAX" about a soon-to-be-released native mode Pascal compiler for the VAX-11/780 by DEC and the University of Washington, plus the fact that the University of Adelaide, Australia, ordered 3 VAX machines partly because of the availability of the compiler. Computing News (Computing Services, Northern Illinois University), December 1978: An announcement of the installation of the University of Manitoba Pascal compiler for the Computer Weekly, (Pacific) August 10-16, 1979: Letter by Arthur Sale in response to a quote from Cobol pioneer Grace Hopper, 'Cobol has knocked PL1 dead and it will do the same to Pascal'. Professor Sale asserts' that Pascal is not a "fad'''. Computing Europe, April 5, 1979, pg.1: "Pascal Draft Breaks US Language Gripll, describes the British Standards Institutions leadership under Tony Addyman for an International Standard Pascal. Computerworld: (Many issues) ads for Oregon Software (OMSI) PDP-II Pascal. Computing Europe, March 29, 1979: "Pascal is Top of the Class", concerning the use of Pascal for trainee programmers. The results of a study have shown Pascal to be a justified choice for a language to learn programming. Computerworld, February 12, 1979: An ad for Sperry-Univac, Minicomputer Systems, introducing SUMMIT. Pascal is the headlined language that goes with the system although there are other languages available. Computerworld, February 26, 1979: "Seminar to Consider Pascal Programming l l announcing a seminar "Pascal Programming for Mini- and Microcomputers" to be held April 23-27, 1979. z en IBM 360/370. Computing Europe, April 19, 1979: "Floreat Pascal" a letter from C. A. G. Webster referencing the previous article 'Pascal is top of the class', and after 6 years and 500 students agrees wholeheartedly. Computing Europe, May 3, 1979: An article on the rapid acceptance of Pascal in Australia. Computerworld, March 12, 1979, pg.99: A want-ad for programmers at Sperry-Univac which mentions of Pascal as parts of the qualifications. ComputerW'orld, March 19, 1979: "Pascal Now on Level 6 Mini" about the availability of an extended Pascal compiler for the Honeywell, Inc. Level 6 minicomputers. The Pascal has shown programming time reduced by a factor of three on small to medium sized programs and up to 10 times for large programs compared to FORTRAN, COBOL, or assembly language. Computerworld, March 26, 1979: "Academic-Industrial Union Ends in VAX Pascal" about the University of Washington and DEC's cooperative effort to produce a Pascal compiler for the VAX-ll/780. pg.51: "Pascal Ready for Eclipses under AOS", about the availability of a Pascal compiler from Gamma Technology Inc. ,for use on large scale Data General Corp. Eclipse minicomputers running under AOS. Also, on the same page "Package Backs PDP=ll Transaction Processing", about Cytrol's (Eciina, MN) CSS-l1 package for PDP-II's providing transaction, database and communication proceSSing allowing applications programs written in Pascal. Computerworld, May 14, 1979: "DOD Stops Work on 'Red' Gives Go Ahead to 'Green''', about the progress of the DOD's study of the 'Red' and 'Green' languages. Green was chosen and is to be called ADA, after Lady Ada Lovelace, who assisted Charles Babbage. Computerworld, May 28, 1979: "Languages, Operating System Available for DG Micronovas" , about Data General Pascal for the MicroNovas, plus a want ad for programmers at Control Data in St. Paul, MN who must know Pascal among other qualifications. Computing Europe, May 24, 1979: "DG Offers 'Fast Pascal' on two Major Systems",announcement about an across the range compiler for Micronovas to Eclipses, which is according to a spokesman ' •.• not much of a gamble. If you look at high level programming languages available on mini-based machines, there is not much choice'. (f) en v -I Computing Europe, August 6, 1979: "Australia Loves Pascal", a short note about the rise in the use of Pascal in Australia. Data Communications, March 1979, pg.16: "High-level language attracting new commercial users"An article concerned with using Pascal for data communications, with Sperry Univac's Summit operating system used as an example. en 3: tx:J en ;;0 Datamation, July 1979: "Pascal Power", a collection of 4 articles on Pascal, dealing with Pascal's future, its use by the DOD, Pascal's structure, and its uses with micros and minis. Datamation, August 1979, pp.166-172: Announcements for Apple II Pascal option, Zilog's new Z80 Pascal compiler, and Digicomp Research's new Pascal 100 system. Diebold Research Program Document .Number T23-VbJl1.: Titled 1fTrends in Systems Software: 1985, 1990, 1995", on page 30 has a short shot at Pascal. The document is marked "Confidential-For Client Use Only", so I did not take the liberty of copying it. (John K. McCandliss) Dr. Dobb's Journal gJ.. Computer Calisthenics and Orthodontia, February 1979, no.32, pg.29: Computerworld, July 16, 1979, pg. 41: "Lawsuit Could Set Dangerous Precedent", an editorial which mentions the use of Pascal over FORTRAN. Computerworld, July 23, 1979: "Apple Offers Users Plug-In Pascal Option", about the "Language System" on Apple computers, a plug in option for the Apple-II that allows users to develop software in Pascal. The package is available at your Apple dealer. A fairly complete Pascal bibliography by Mike Gabrielson. Electronic Engineering Times, May 28, 1979, pg.10: An article about Pascal being used on 3 major minicomputers by DEC, Data General, and Texas Instruments. Pascal for Zilog Z80 sytems, available from Zilog at 10340 Bubb Road, Cupertino CA 95014. Electronic Engineering Times, June 25, 1979, pg.30: "Pascal Touted by Engineers As Help For High Software-Development Costs, But Not Seen As Panacea", which discusses the advantages of Pascal to engineers, and also discusses the flaws of Pascal implementations at this point. Computerworld, August 13, 1979: "Pascal/8002 Development Package Debuts", an announcement of the Pascal/S002 Universal Program Development Package, a software product designed for Electronic Engineering Times, Aug 20, 1979: "Plethora of PASCAL Possibilities Provided for Data General Users", gives information on how to obtain Pascal for Data General's Computerworld, August 6, 1979: "Pascal Now Available for Zilog Z80 Systems", announcing 00 advanced operating system, developed by Rational "Data Systems. Electronics, December 21, 1978, pg.6: "Obeisance to Pascal Inventor", Niklaus Wirth, explaining his choice of the name Pascal for the language. a letter from Electronics, June 7, 1979: The cover article "Putting Pascal to Work", is about the adaptation of Pascal to Texas Instruments machines. Part 2 of this article covers the microprocessor version of TI Pascal. Electronics, Pascal. August 16, 1979, pg.33: A notice that Softech has acquired control of UCSD Florida State UniverSity Computer Center Newsletter: A note that release 2.3 of the E.T.H. Pascal compiler is going up on June 11, 1979. ICCC (Imperial College, London Computer Center Newsletter), March 1979: "Programming Notes-Pascal", a short note about the increased use of Pascal at ULCC, followed by a few references to Pascal. Silicon Gulch Gazette, March 28, 1979, pg.25: "Pascal: An Aggrressive Young Language the Way Up"~o~s for Pascal presentations at the Fourth Annual West Coast Computer Faire in San Francisco, May, 1979: Tom Pittman, a user of Western Digital's Pascal Microengine, Jack Sharp for Varian Research, and Marie Walter on the Midwifing of a Pascal Standard. Small Systems World, August, 1979, pg.32: by P.S. Inc, Fargo, ND. An announcement for Pascal accounting software rn UMD Computer Center Newsletter (U of Minnesota, Duluth), February, 1979, announcement that Pascal-6000 Release 3 has been installed on their Cyber 171. pg.5: An Ul WSU CCN(Washington State University Computer Center Newsletter), April 3, 1979, pg.4: "Pascal Under the Batch Monitor", a notice that Pascal 8000 is now available on the Amdahl 470. Paacal and Teaching Intelligent Machines Journal, February 28, 1979: "New Micro Offers Pascal in ROM for OEM's", another announcement for CSI Microsystem's (Kansas City, KS) UDS 470 computer wi th Pascal. We've received good response to this new section; unfortunately, in spite of 3 good contributions for this issue, we decided to postpone them to issue #17 so that we can save space here. Sorry. Intelligent Machines Journal, April 18, 1979, pg.8: IIPascal Advancement Society of California", an announcment of a group for the exchange of information about Pascal. It should be noted that this group is not PUG California style, but rather a local group' that hopes to have its members cooperate -to obtain Pascal systems and programs. For information contact Mark Gang, 2262 Fairvalley Ct., San Jose, CA 95125. Ada Interface ~, June 1979: The first in a series of articles entitled "The Pascal Notebook", the others following in July and August. The article is a tutorial on Pascal and may be of interest to those just learning programming, in particular Pascal, and especially to students who are for the first time learning to program in Pascal. MACC NEWS 113(University of Wisconsin, Madison Academic Computer center) January announcement of a new UW-Pascal release for the Univac 1108. MICC Digit, (Middle Illinois Computer Cooperative Newsletter) January answer to the question "How do I format output from a PASCAL program?" 1979, 1979: An pg.3: An Minicomputer News, November 9, 1978, pg.24: "LSI Chip Set Directly Executes 16-Bit Pascal Application Code", another announcement about Western Digital's Pascal Microengine. Minicomputer News, February 1, 1979, pg.20, pg.30: "Sperry Opens V77 Minis to Pascal lt , and IIMicro Offers Pascal in Prom lt , another CSI minicomputer announcement. Mini-Micro Systems, November 1978, pg.10: "Jumping on the Pascal Bandwagon!!, an article what many companies are doing with Pascal, in this case all manufacturers of micros. Mini-Micro Systems, March 1979: "Pentagon to Debut ADA; Commercial Vendors Wary", commercial vendor reaction to ADA. about Mini-Micro Systems, May 1979, pg.l0: A letter entitled IIDisenchanted with Pascal", in reaction to the above mentioned article "Jumping on the Pascal Bandwagon lt , which claims that Computer Automation has a better language (ALAMO) than Pascal, and that Pascal is obsolete. The OEM Computer Newspaper, November 7, the success of Pascal. 1978: "Pascal Takes Off", a short article about Sandia Computing Newsletter, No.05/1979, May 1, 1979: "Pascal on NOS II , that Pascal-6000 is available on NOS for for the CDC 6600. ScientifJ-~_ an announcement America'C!., August 1979: Two ads, one for Oregon Software (OMSI) and their use of Pascal, the other an ad for the Apple Computer, which mentions that Pascal is available to users of the Apple. (ALIAS DoD-I) (ALIAS Green) Many Pascal Users are asking about Ada. How good is it? Is it just like Pascal only better? When will we see it? Well, back in the heart of Pascal country we have analysed Ada, and we regret to say that its resemblance to Pascal is so slight that we may not devote any more space in Pascal News to it after this. Ada is a very large and complex language, which should be illustrated by the following statistics. There does not exist as yet any compiler for it, and what such an implementation would look like is not certain. It has the declaration-before-use feature of Pascal which was intended to allow one-pass compilation, but rumour has it that seven passes through the symbol-table may be necessary to resolve potential ambiguities of the overloading. The resolution of overloading ambiguity is too complex to document, so probably programmers will have to leave that to the compiler to resolve. Who wants to go back to languages that can't be understood? To quote Charles Bass, general manager of Zilog's ~-1icrocomputer Systems Division: "Ada will become a millstone around our necks" (Mini-Micro Systems, March 1979). Edsger Dijkstra prophetically said that he hoped that Pascal was not better than successors. He may have been right to worry. Size of Defining Document 190 pages (Pascal J&W = 35 pages, ISO draft standard 43 pages) Number of Reserved Words 62 (Pascal = 35) "Features" of Ada Generic procedures, overloading of identifiers and operators, confUSing abstraction and representation for real types, much syntactic sugar, too many ways to do the same thing. No sets! No files or sequences in the Pascal sense. Yet another bizarre set of operator precedence rules. Optional omission of actual parameters (coupled with two sets of parameter association syntax and default values). Ability to freely specify representation of abstract notions without separation of concerns. all its Ul rn "0 -i rn Purpose of Ada Acceptance by DoD as a uniform programming language for real-time and other applications. So far only the US Army have shown interest, even though the very complexity of Ada should appeal to the military mind. Perhaps the biggest shame is that a beautiful name like Ada, and a woman like Lady Lovelace, should be associated with s~ch an insensitive creation. Letter to the Editor, Australian Computer Bulletin. 27th August, 1979 Programming Language Ada Keen watchers of the U.S. Department of Defence will have been observing the progress of the High Order Language Commonality program. Starting in 1975 and progressing through a series of specifications known as Ironm~J Steelman, etc, the U.S. DoD has now arrived at a draft of a new programming language called Ada after Ada Augusta, Lady Lovelace, the first programmer. A copy of the specification, for those interested, is available from Association for Computing Machinery, Inc., P.O. Box 12015, Church Street Station, New York, NY 10249 (US $ 22.00) as Volume 14, Number 6, June 1979, Parts A &B of SIGPLAN Notices. Ada is stated as being heavily influenced by Pascal. I must say, however, that I found this heavy influence rather hard to detect on reading the documents: to me it seems to clearly and definitely belong to the Algol 68, PLfI or C class of languages in size, features, and basic principles. Apart from a few concepts, the resemblance to Pascal is more like a parody. The Department of Defence have, of course, solicited comments on the draft. Since it would be very improbable that they would change it substantially, it seems likely that a slightly modified Ada will become a Defence standard in 1980. This means that it will be important in the U.S.: I now have considerable doubts that its influence will be as widespread elsewhere (or in industry) as some people have predicted. However I may be wrong - there is no limit to the extent to which we i.gnore flaws .. and Fortran 77 stands as mute witness to that fact. Arthur Sale, Professor of Information Science. Book. and Artlcl •• {Unfortunately I did not collect, forward, or organize materials in time for Rich Stevens to have the slightest chance to produce his regular section. ~ook for a burgeoning section in #17.} Publishing success story The Pascal User Manua 1 and Report by Jensen & Wi rth has now sold more than 60,000 copies. We understand that this includes a bulk purchase of 10,000 copies by Apple Computer Inc, and a similarly large quantity by National Semi conductor. Also in the big selling stakes is Programming in Pascal by Grogono, which has sold over 35,000 copies, with a single order of 10,000 copies going to Motorola. Book Reviews We understand that Jan Hext, Basser Department of Computer Science, University of Sydney, New South Wales 2006, Australia, has written a comprehensive review of all the Pascal textbooks now available which is to appear in a special issue of an Australian journal called Microsystems. We hope to get permission to reprint Jan's article in Pascal News, but in the meantime we can only extract the citation and one column of a table of comparisons. Introductory books: Bowles, K.L., MicJtocDmputeJL PJtobLem SoLving lL6ing P,Uc.aL, Springer-Verlag, New "ark, 1977, 563 pages, $A 11.45 Conway, R.W., Gries, D. and Zimmerman, E.C., A pJUmeJL an PMC.aL, Winthrop Publishers Inc., Cambridge, Mass., 1976, 433 pages, $A 14.75 Grogono, P., PltOgJtamming in PMC.aL, Addison-Wesley Publishing Inc., 1978, 359 pages, $A9.95 Jensen, K. and Wirth, N., PMC.aL U~eJL ManuaL and RepoJU:, Springer-Verlag, Berlin, 1974, 170 pages, $A 8.70 Kieburtz, R.B., SbtucXwted PJtogJtamming and PJtobLem-SoLving with PMcaL, Prentice-Hall Inc., Englewood Cliffs, 1978, 365 pages, $A 14.75 Rohl, J.S. and Barrett, H.J., PltOgJtamming vJ.a PMC.aL, Cambridge University Press, in press, about 250 pages. Schneider, G.M., Weingart, S.W. and Perlman, D.M., An Il1tJtoduc-uon :to PJtogJumJrning and PJtobtem-Sotving with PMC.aL, Wiley & Sons Inc., New York, 394 pages, $A 21.25 (hard-cover), $A 13.15 (soft cover). Webster, C.A.G., Il1tJtoduc-uon:to PMcaL, Heyden, 1976, 129 pages, $A 13.75 Welsh, J. and Elder, J., Il1tJtoduc-uon:to PMC.aL, Prentice-Hall Inc., Englewood Cliffs, in press, about 220 pages, $A 13.95 Wilson, J.P. and Addyman, A.M., A pJtaC-Uc.aL Il1tJtoduc-uon:to PMC.aL, MacMillan Press Ltd., London, 1978, 148 pages, $A 9.95 Advanced books: Alagic, S. and Arbib, M.A., The VC-6ign 06 We.U-S:tJwcXwted and COJUtec.t PJtogJtam-6, Springer-Verlag, New York, 1978, 292 pages, $A 13.60 Coleman, D., A Sbtuc.tUfLed PltOgJtamming ApptLoach:to Vata, MacMillan Press Ltd, London, 1978, 222 pages, $A 13.75 . Wirth, N., Sy-6:tematic PJtogJtamming: An Il1tJtoduc-uon, Prentice-Hall Inc., Englewood Cliffs, 1973, 169 pages, $A 23.75 Wirth, N., Atgo!U.-thm-6 + Va.ta S:tJwcXwtv.. = PJtogJtam~, Prentice-Hall Inc., Englewood Cliffs, 1976, 366 pages, $A 26.95 Coverage of books , taken f rom reVlew First author Coverage of Pascal Bowles Conway Findlay Grogono Jensen Ki eburtz Rohl Schnei der Welsh Wi lson fair poor good very good good poor good fair very good good Alagic Coleman Wirth(l973) Wirth(l976) fair poor fair good en U) U) en -0 -l en November 14-16, 1979 Conference. and Seminar. I apologize for the negative impact that tardiness has on this section. John Knight, for example has now been stale-dated twice regarding his PUG-ACM SIGPLAN conference session announcements. Below we have reports from the PUG/SIGPLAN meeting at ACM '78, the DECUS New Orleans meeting, the Australian Computer Science Conference. Next time I'll have the summaries from the French AFCET sub-group meetings on Pascal (belatedly - sorry). First, though we have news of seminars presented to teach Pascal primarily to professionals in the iodustry, followed by a list of upcoming conferences. A semina r /workshop enti tl ed "Advanc"d Frog rarrur.ing Techniques Using Pascal". Taught by Richard J. eich,,11i and Martha J. Cichelli. Requires a baSic kno>iledgc, of the Pascal language. 1'his class '1<.111 refine th" ski lIs of Pascal prograrruners 3.nd teach them ho .. to build a comprehensive and effective Pascal-based sc·ftware cievelopment environment. The emphasis will be or. sjgnlftcant prograrr~ing ex~rclses blended with group and individual im;'CructioD. Class size is limited. Three days. Fer mere inforn!3.ti0n contact Software Consulting Service", 901 j,hittl4/ .~!tIt Ma rtha J. Cl che 11.1 Australian Seminars Arthur Sale.told us.of tw~ seminars in Australia that he had been involved with. One was a flVe-day lntenslVe seminar held by his Department at the University of Ta~manla, and the oth~r was a two-day professional development seminar organlzed.by the Australlan Computer Society in Melbourne, Victoria. Pascal News acqulred about 60 new members from these seminars, and even more people were exposed to Pascal's elegance. Integrated Computer Systems, Inc. has a "learning tree" (TM) 4-day course on "Pascal: Programming in the Structured Language". The course dates are: October 9-12 in San Diego, October 16-19 in Washington, DC, November 6-9 in New York City, November 13-16 in Boston, and December 4-7 in Los Angeles. A related set of courses are being taught on "Structured Programming - Scientific and Engineering Applications" The Pascal course is $795. To enroll write to: Integrated Computer Systems, Inc., 3304 Pico Blvd. P.O. Box 5339, Santa Monica, CA 90405. Phone: (213) 450-2060 or to 300 N. Washington St. Suite 103, Alexandria, VA 22314. Phone: (703) 548-1333. Ken Bowles is the course instructor. Arthur also said that he had given part of an evening seminar with Michael ~ooney of. the Boston Systems Of~i ce. whi c~ was attended by around 450 engi neers lnvolved.l~ mlcroprocessor appllcatlons ln Australia. The interest in Pascal was .sufflclently great that the University of Tasmania was planning another seml na r add res sed to profes s i ona 1 programmers for February 1980. Software Consulting Services is also offering seminars by Richard and Martha Cichelli: Upcomi ng Conferences Software Consulting Services 901 Whittier Drive Allentown. Pa. 18103 [2151797-9690 July 12, 1979 Dear Andy: We have planned the following seminars which may be cf interest to your readers_ October 17-19, 1979 A seminar/workshop entitled ".';n Introductlon to Pa.sc::11 Progranuning". Taught by Fichard J. Ciche 11i and :".a rth"l J. Cichel1i. Includes hands-or. Pascal prl)gr,':dnffi,j ng wcr1{.=hc;r; sessions as well as group and _:ndlvi·'iual instruc'::;ion. The c lass wi 11 emphasize lea rning the basi CB of geod p r()gr~-c!lI"in£ in Pascal and learning them right! Clas~ size ':'3 Limi ~pd. l"hree days. For mOre information contact :'~oftware C0r13ultirHt Services, 901 Whittier Drive, P.llentClwn, fA 103103 (;)15) '!'T(-§69'~. IFIP in 1980 will be held one week in Tokyo and the next week in Melbourne Australia. We don't know of any attempts at a Pascal "interest group" session, but we're spontaneously occur. sure one will The F~ll DEC~S meeting should be held in San Diego, and John Barr expects that issues such as compl er .per ormance, Pascal standards, impl ementati on techni ques and Modul a/Concurrent Pascal wlll be dlscussed. Below is the announcement for ACM '79. though you will be reading this late. Dear Andy: If you have a talk, contact John Knight anyway even An informal evening session devoted to PASCAL will be held at the 1979 ACM conference which will take place October 29-31, 1979, in Detroit, Michigan. The session will b~ ~ponsored jointly by SIGPLAN and the PASCAL Users Group, and will be very slmllar to the session held at the 1978 ACM National Conference", The purpose of this session is to allow all conference attendees who are interested in PASCAL to get together and interact. This is not a technical session in the usual sense. However, in order to convey the most information, it will consist, at least in part, of a series of short presentations (i.e., approximately 10 minutes) on PASCAL related topics.. A presentation can address just about anything related to the language and its software; e,.g .. , experience with PASCAL, tools for PASCAL programing, implementation, etc. Anybody who is planning to attend ACM • 79 and who is interested in making a presentation should send a short descrip- tion of what they will discuss by September 1 to: = John C. Knight Mail Stop l25A NASA Langley Research Center Hampton, Virginia 23665 Report on the DECUS (Die;l tal Equiplllenc Corporation Users Society) Pascal SIG (Spec!.?1._Ii'.~_r8st ~ro'!£l _________________ _ by Richard J. Clche i l l Presenters will be informed of their selection by September 15. The purpose of requesting descriptions is ll21 to perform any refereeing or technical judgment, but merely to allow a balanced program to be prepared for the limited time available. John C. Knight Programing Techniques Branch Analysis and Computation Division This is a second hand report of the activities of tne Pascal SIG meetine; at the Fall, 19"[8 DECUS symposium. It is oased or, conversatioLs with John lobst (also of ANPA/RI) who attended as PUG liaison and cha.ired a standards workshop. NI\SI\ John Barr (Department of Computer Science, University of Montana, Missoula, Montana :,9i:l12) is chairman of the 1200 member Pascal SIG. National Aeronautics and Space Administration The SIG's stanclards subconunlttee reviewed many suggested "enhancements". to Pascal. The commendably short report of the subconunittee Is presented here in full. Langley Research Center Hampton, Virginia PROPOSE_Q]ASc;.~_STANDA}~g 23665 Conference Reports We propose that the DECUS Sta"da!·d for the language PASCAL be as follows: PASCAL is that language defined in the "PASCAL USER MANUAL AND REPORT", with the followin" two modifications: The Second Annual Australian Computer Science Conference was held in Hobart, February 1-2, at the University of Tasmania. Pascal was a recurrent theme in several papers. - Jeff Tobias gave a talk "A Malleable Multiprocessor" about extending Modula for driving 3 Intel 8086 micros. - Jim Welsh gave a talk on "Pascal Plus" about extending Pascal for current processes. - Marshall Harris gave a talk on "A Structured Programming Interpretable Instruction Language - or - Against Patriarchal Programming Languages" about SIPSIL, an 1) the addition of the reserved word "forward", to allow two or more procedures or functions on the same level to call each other. 2) a method of specifying the parameter list for procedure or f'unction parameters which are passed by name. This will allow the full type checking of parameters at compile time for all procedures and functions which are used as parameters. Alternative to Pascal. Jeff Rohl gave a talk'Orl Sets in Programming" about appl ications with Pascal sets. - A. M. Lister qave a talk on "Constructive Proofs of Monitors" providing experience with Pascal-Plus. The text of the invited papers (4) to this conference appeared as Volume 1 11umber 1 of a new Australian computer science journal called the Australian Computer Science Communications. Also included were the prepared texts of the Panel Discussion by Arthur Sale, Jeff Rohl, and John Bennett on "What is Computer Science?". A report was included on computer science in China, This conference demonstrated the vitality of computer science research in Australia and will definitely become a respected institution. - Andy Mickel The SIGPLAN Compiler Construction Conference was held in Boulder on August 8-10 and papers were presented on some Pascal topi cs: - Gilbert J. Hansen, Gerald A. Shoults, and Joe Cointment of Texas Instruments gave a talk on "Construction of a Transportable, Multipass Compiler for Extended Pascal" - Richard J. LeBlanc of Georgia Tech and Charles N. Fischer of the University of Wisconsin gave a talk "On Implementing Separate Compilation in Block-Structured Languages" which gives examples using the Pascal 1100 compiler. - Richard L. Sites and Daniel R. Perkins of UC San Diego gave a talk on "MachineIndependent Pascal Code Optimization". - Philip A. Nelson of Lawrence Livermore Labs gave a talk on "A Comparison of Pascal Intermediate Languages" The proceedings of this conference appeared as SIGPLAN Notices Vol 14 No 8, August, 1979. Another rich conference was held in Sydney during September 10-11 being a Symposium on Language Design and Programming Methodology sponsored by the Austral ian Atomic Energy Commission and the University of New South Wales. The conference was organized by Jeff Tobias and papers covered the whole range of topics from algorithms to data structures, practice and experience. Invited speakers were Niklaus Wirth and Dennis Ritchie. In addition to these modif'ications to the definition of PASCAL, the following additional conventionalized extensions are sU66ested: 1) a means of' defining "flexible" arrays. The method of cnoice is that which was presented by Ch. Jacobi in the Septemuer 1976 Pascal Newsletter. 2) the "otherwise" construct 1n the case statement. 3) a method of' relative record I/O. It will be either a predefined set of procedure(s) and/or function(s) or an extension of the array mechanism, possibly usine; the ke~· word "slow ll • 4) the addition of the reserved word "external". This will allow a standard llleans of acceSSing separately compiled subprograms and libraries. :,) the expansion of the concept of' constant denotation to include the def'inition of structured constants. This requires a lllodif'ication to the syntax of' PASCAL so that constants may oe def'ined after types are def'ined. The cyclic naturE: 01" chis modif'ication may lead to undefined identifiers. It is suggested that each of the constant, type and var groups be self-consistent to control the problem. 6) the predefined procedures of reset and rewrite to associate system f'ile names with the PASCAL f'ile variable. ...... o We also suggest the continued discussion of: 1) the problem of functions being able to return only simple type results. 2) the comparison of structured types other than alfa (packed array of char) on at least the equality/inequality level. We also suggest that the following not be considered as part of the language PASCAL: 1) strings 2) module type encapsulation 3) concurrency 4) additional standard types (other than complex) 5) real time process control within DECUS, with its access to users of a very popular processor via a relatively inexpensive process. Compare the costs 00 DECUS members for access to the PASCAL SIG's newsletters with the costs of the (non-DECUS) PASCAL USERS GROUP. Of course Pascal is the only popular high level language which runs with any compatability or reasonable efficiency on PDP c's, II's, 10's, and 20's. Possibly the fact that it also runs well on PDP 11 UNIX systems and other non-DEC software environments makes DEC somewhat wary of the Pascal SIG. (It is the fascest growing SIG and it is the third largest.) Whatever the reasons for DEC's failure to wnoleheartedly support Pascal, the proposal by DEC's representative on ANSI X3J9 that there be a five year delay in Pascal standardization was firmly rejected. Certainly Pascal users on DEC equipment will welcome the earliest standard possible. = rr1 A Report on Pascal Activities at the New Orl eans 1979 Spring DECUS Symposium The following excerpt from the DECUS U.S. Board Meeting Report which 'quotes Mark Lewis, DECUS U.S. Special Users Group Coordinator, shows some of the political problems within DEC and DECUS regarding Pascal. SIGs By Any Other Name It appears that DECUS U.S. has SIGs of two very dist'inctive types: (A) The Sig that organizes into a somewhat powerful force users of a particular subset of Digital products, and (B) the SIG that attempts to service users with common interests that are not represented by a particular subset of Digital products. Among the former are the traditional product-based SIGs such as the l2-BIT, RSTS, RSX-ll/IAS, RT-ll and SIG 18. (The DECs~stem-lO/20 Group is properly speaking a member of this first group). Among the latter are such diverse groups as BIOMEDICAL, PASCAL, TECO, and many others. Only a few SIGs represent the special case where the group attempts to serve areas that represent a glooal interest and a product interest. (The DBMS SIG 1s an excellent example of a failure to fit the dichotomized pattern since it attempts to service those users who use some sort of DBMS and also attempts to serve as a representative for the users of DBMS-ll). The SIGs of the first type generally have a more powerful influence on DECUS, since they represent the largest users of DECUS resources (in terms of Symposium space/time apd newsletter pages), and they are the groups to which Digital must maintain formal liaison. In fact it is the need for formal liaisons between Digital and the SIG that discriminates between the two types. Thus, DBMS clearly belongs to the first group because Digital must provide (a) formal counterpart(s) to the SIG while PASCAL clearly belongs to the second group since no purpose'is served by having a formal Digital Counterpart to the SIG. In general this Board has been very liberal in recognizing new SIGs without regard for the potential demands that SIGs might make on DECUS resources. I now believe it is time we recognized formally that not all SlGs are created equal and that the best method of distributing resources must favor those SIGs in which Digital has an investment. The SIGs in the second group are really camp followers that would never have been organized had not DECUS become a convenient way of reaching a large number of users. Thus, to use my favorite example, the PASCAL SIG has no rationale for coming into existence Bill Heidebrecht TRW DSSG One Space Park Redondo Beac h, CA 90278 The 1979 Spring Digital Equipment Computer Users Society (DECUS) U.S. Mini/Midi Symposium was held in New Orleans on April 17-20. Following the trend set two years ago when John Barr (Pascal SIG chairman) resurrected the Pascal SIG, we had a number of interesting and very well attended Pascal seSSions, including an excellent paper given by Kathleen Jensen. co rr1 The fi rst Pascal sess i on wa s held on Tuesday, April 17th, and cons i s ted of Digital's Education Computer Systems Group product announcement of VAX-ll Pascal. This product is the University of Washington Pascal compiler, developed under the leadership of Dr. Helmut Golde. The speakers at the meeting included Dr. Golde, Dr. Marvin Solomon (U. of Wisconsin, test site for the compiler), Leslie Miller (Digital Central Engineering), and several Digital managers. The compiler, which was bootstrapped from the CDC Pascal compiler, will probably be available in late 1979. Execution time of compiled Pascal programs is roughly 1.6 times longer than Fortran programs using Digital's optimizing Fortran compiler. While the VAX Pascal compiler h~s a number of extensions, Leslie Miller mentioned her desire to remain compatible wlth the standard. This compiler represents Digital's entry into commercial support of Pascal. = Tuesday evening, Barry Smith of Oregon Software gave an introductory tutorial on Pascal. Several hundred people attended this very popular session. On Wednesday morning there was a session on Pascal standards, led by Justin Walker (Interactive Systems), Leslie Miller, and Barry Smith. (Justin was the convener of the first ANSI X3J9 meeting in December 1978, and Leslie and Barry are both members of X3J9.) The speakers expressed their support of the proposed BSIIISO standard, and stated their expectation that it would succeed as the international standard. Some of the details of the draft were discussed, and there were many questions and comments from the audience. Wednesday afternoon Leslie Miller gave a more detailed presentation on the UniverSity of Washington VAX Pascal compiler. The responsibilities for the project are as follows: f-> f-> • • • Digital - project management, documentation, and technical assistance. U. of Washington - compiler development. U. of Wisconsin - testing. The emphasis has been on educational use, and keeping down the cost of runnin~ the compiler. Leslie also discussed some of the extensions (such a~ double and slngle precision reals exponentiation operator, dynamic arrays, descrlptor parameters, otherwise in th~ case statement, etc.) The extensions can be flagged as such through the use of a compiler option. A presentation by James Spann, Gordon Smi th and Roger Anderson of Lawrence Livermore Labs was schedul ed on "LSI-11 Writeabl e Control Store Enhancements to UCSD Pascal". Unfortunately, I was unable to attend this interesting session because of a session conflict. The next Pascal session on Wednesday afternoon was Kathleen Jensen's paper, "Why Pascal?", which I though was the highlight of the entire symposium. Kathleen worked for three years with Niklaus Wirth at ETH in the early 1970's as a research and teaching assistant. She also taught Pascal, worked on some of the compiler implementation details, and of course is the coauthor of the Pascal User Manual and Report. Kathleen spoke about the development of Pascal, its motivation and influences, and gave examples of its use. She discussed the advantages of using Pascal, from both a programmer's as well as a project leader's viewpoint. About 400-500 people attended this session, and Kathleen received a rousing applause at the end of her talk. Kathleen has been employed at Digital since leaving ETH. Thursday morning the Pascal sessions began with an applications panel discussion led by Linda Carlock .of Hughes Aircraft. John Collins of 3M described an "include" preprocessor and a text file inspection program he wrote. Thomas Mathieu of Battelle spoke. about an 8086 cross assembler and associated software, all written in Pascal. And I spoke briefly about the Pascal SIG 1ibrary. After the Applications Panel, David Miller of GTE Sylvania gave a paper entitled "Why We Had to Change Pascal". David described some fairly extensive changes GTE made to a PDP-ll implementation of Pascal for a realtime application. A Pascal Implementation Workshop has held on Thursday afternoon. John Barr, Justin Walker and Brian Nelson (University of Toledo) spoke about status of the SIG's implementation of NBS Pascal under UNIX, RSTS, RSX-ll and RT-ll. NBS Pascal was written by Brian Lucas and Justin Walker, (both) previously of the National Bureau of Standards. The compiler is usable now for some programs, but it does not yet implement all of standard Pascal. We are working on finishing a few details and implementi-ng it on the above systems, as well as on the VAX-ll. Also Thursday afternoon, Don Baccus of Oregon Software gave an interesting presentation on code optimization in Pascal compilers. Much of his talk was based on techniques used in the OMSI Pascal-2 compiler for the PDP-ll. Don discussed code improvement techniques such as constant folding, subscript optimization, common subexpression elimination, short circuit boolean evaluation, and machine specific improvements. Thursday evening Roger Vossler of TRW gave an informal presentation on our (TRW) implementation of Concurrent Pascal on the VAX. We are using Concurrent Pascal on our VAX and four PDP-ll's for research in distributed processing. The last Pascal session was held on Friday. This was the Pascal SIG Business Meeting, in which we started plans for the Fall DECUS Symposium, to be held in San Diego in December 79. One of the other topics discussed was the Pascal SIG· library tape copy operation. At the previous symposium we made about 80 copies of the library tape, while at New Orleans we made over 150 copies. We hope to work out better methods of distributing the tape in the future, as we cannot keep up with this growth rate using our present di stri bution methods. As the current DECUS Pascal SIG librarian. I have discussed with Rich Cichelli (PN Appl ications Editor) methods of sharing software between the DECUS Pascal SIG and PUG libraries. Unfortunately, there are a number of problems to consider, such as copyright laws, tape format and character set differences, nonstandard Pascal implementations, cost and method of distribution, etc. For the present we can at least exchange software on a program by program basis between the two libraries. The New Orleans Pascal SIG tape contains two Pascal compilers for the PDP-11 (Torstendahl's "Swedish" Pascal for RSX 11M, and interim versions of NBS Pascal for RSX 11 and RSTS), and a number of utility programs. Pascal News readers who are interested in obtaining a copy of the DECUS Pascal SIG tape should consult recent editions of the DECUS Pascal SIG Newsletter, or contact an RSX or RSTS Local Users Group. All in all, I think the New Orleans DECUS Symposium was a success as far as Pascal is concerned. Roughly 25% of the people who preregistered indicated an interest 1n Pascal. When you consider the size of the Pascal SIG membership (over 1,000), its phenomenal growth rate, and the fact that most of the other DECUS SIGs are organized around Digital products (such as RSX, RSTS, VAX/VMS, etc.) you get some idea of the popul a ri ty of Pascal withi n DECUS. Pascal Session at ACM '7d by Richard J. Cichelli on An inrormal evening session devoted to Pascal was held at ACM '78. This excellent meeting was convened by John C. Knight or SIGPLAN and NASA. This was the rirst Joint SIGPLAN and PUG technical session and its success is attributable to the excellent organizational work or John Knight. There were more than 75 attendees (we completely rilled the meeting room.) rrI -0 -l rrI td rrI At John's request, I began the session with a report on the state or PUG and its membership, standards activity, Pascal sortware tools and Pascal6000 Release #3. The inrormation given has since appeared in PN #13. The agenda or the session is listed below. l. 2. 3. 4. 5. 6. 7. 8. Comments on the state or the Pascal world by R. Cichelli Brier announcement by a representative or Computer Science Press about their new text - PASCAL An Introduction to Methodical Pr~ramming, W. Findlay and D. A. Watt. "An Interactive Incremental PASCAL Compiler", Bengt Nordstrom, Goteborg, Sweden "PASCAL-I", R. Cichelli, ANPA-R! "Veririable PASCAL", S. Saib, General Research Corp. "A Parser Generator", Wilhelm Burl!:er, Univ. or Texas "Use or PASCAL in Undergraduate Computer Science Education", R. Leblanc, Georgia Institute or Technology "PASCAL and Structure Charts", H. Cunningham, Tektronix A few personal comments on the topics: #3 is a description or a planned system. #4 is an existing #3 with 25 installations. #6 is a generator similar to UNIX's YACC. Generated parse tables ror Pascal conrigured for micro's are about 2K bytes! #8 is an interactive graphic editing system which manipulates Nassi-Shneiderman diagrams. Post processing turns the N-S structure charts into Pascal code. I hope we will soon see articles rrom the session speakers in PN. truly rine technical session. A :;:0 Roster Increment PUG Finance. n PUG(UK) Summary of Accounts: Income: I.. 450.00 180 Subscriptions @f2.50 Excess expenditure =,,447.07 $ 935.24 Notes: No. 9/10 was the last of the discount printings, hence the very low price. Had the money for all 350 copi es been collected, our income wou 1d have been £. 875, which would have left the books approximately in balance. ---------------------------------------------~--------------~-------------------------------- An attempt to assess the financial health of PUG: Given that PUG(USA) covers the balance of PUG(UK) then: $ 158.63 193.52 2696.35 petty cash bank account computer center account 196.53 334.94 875·.96 858.34 77-78 surpl us 76-77 surplus backissues not yet sold Liquid assets 2265.77 theoretical assets Future obligations (subscriptions 935.24 rebate to PUG(UK) for 78-79-80-81-82) $ 1330.53 total theoretical assets 812.50 Tota 1 assets + 1550 backi ssues on hand - Andy Mickel 79/06/30. 3048.50 2236.00 (7 9 I 0 5 I 14) :z rn ~ (/) ~ \Jl Expenses: $ 145.00 PUG Australasian rebate for money already collected 20.00 people who still owe us money (5 @ $4)! 39.00 postage for 300 renewal reminders (@ $0.13) 1325.14 postage costs for all issues including return postage 2180.79 printing 9/10 - 2000 copies - 2000 copies 2112.78 printing 11 - 2500 copies 1676.83 printing 12 875.96 reprinting 9/10 - 750 copies - 750 copies 858.34 reprinting 11 18.62 miscellaneous photocopying, titles, and production costs 420.00 PUG(UK) rebate for 76-77 deficit Excess income = $ 196.53 9672.46 Total expenditure. copies copies copies etc. NCR E MEN T f-' $ 9868.99 Total income. printing 9/10 - 350 printing 11 - 350 printing 12 - 350 postage, envelopes, Total expenditure. ROSTER Following is a 1ist of PUG members who either joined or changed address or phone number since the last roster increment was printed dated 78/10/31 in Pascal News #13. PUG(USA) Summary of Accounts: Income: 7.29 Interest on money in Bank Account 55.70 Contributions 1198.00 Sale of 599 backissues @ $2 8608.00 2152 subscriptions @ $4 (2396 total - 180 UK - 64 AUS) 115.60 327.60 227.50 226.37 -( 897.07 , J> Here are the details for our finances for the 77-78 academic year by both PUG(USA) and PUG(UK). PUG(AUS) has decided to do independent accounting and will report in the future. We therefore will rebate no more money to them in the future. 78-79 finances will be reported in either issue #17 or #18 after we complete the academic year with the appearance of #16. f. J> (/) PUG FINANCES 1977-1978 Expenses: -0 01002 01002 01003 01060 01063 01450 01451 01532 01545 01581 01581 01609 01720 01730 01730 01730 01730 01740 01742 01754 01754 01754 01754 01775 01776 01776 01776 01824 01842 01851 01854 01862 01862 01876 01876 01876 01880 01880 01886 01890 01905 01908 02062 02090 02110 02114 02115 02116 02138 02139 02139 02139 02139 02154 02154 02154 02154 02154 02155 02158 02160 02162 02168 02169 02172 DUANE w. BAILEY/ DEPT. OF MATHEMATICS! Al-IHERST COLLEGe; AlfHERST }jA 01002/ (413) 542-2377 EARL BILLINGSLEY! uNIVERSITY COHPUTING CENTER/ G.R.C.! UNIV. OF MASSACHUSETTS/ AMHERST !-fA 01002/ (413) 545-2690 JEFF BONAR! COHPUTER AND INFO SCI DEPT./ UNIV. OF MASSACHUSETTS/ At'1HERST MA 01003/ (413) 545-2744 EDWARD JUDGE/ 73 BRIDGE ST. !tlO/ NORTI-lAl1PTON MA 01060 BERT HENDELSON/ COMPUTER CENTER/ 215 NCCONNELL HALL/ SI1ITH COLLEGE/ NORTHAMPTON HA 01063/ (413) 584-2700 X566 PETER D. HARTIN/ TOWNSEND RD. RFO 112/ GROTON HA 01450/ (617) 448-5395 RALPH S. GOODELL/ HILLCREST DRIVE/ HARVAlill MA 01451/ (6ll) 455-8090 JANICE ANN KELSO/ 64 VALENTINE lUl./ NORTHBORO liA 01532/ (617) 393-8015 (HONE)/ (617) 493-3272 (WORK) RICliAl{j) J. 6 TANGLEWOoD DRIVE/ SHREWSBURY HA 01545/ (617) 845-1432 GREG 297 T\..'Rt.{PIKE RD 1t120W/ WESTBORO HA 01581/ (617) 366-9815 A. LThIAN CHAPIN/ SOFTh'ARE DEVELOPNENT/ HS A-60/ DATA GENERAL CORP/ 15 TURNPIKE ROAD/ WESTBOROUGH I1A 01581/ (617) 366-8'111 X)O~6 STEPHEN R. ALPERT/ COHP. SCI. DEPT./ WORCESTER POLYTECHNIC INSTITUTE/ WORCESTER HA 01609/ (617) 753-1411 X416 LEESON J. I. \.JINTER/ 490 GREAT RD. APT. 1R/ ACTON HA 01720/ (617) 263-4786 TERRENCE R. CULLEN/ 12 ASHBY ROAD/ BEDFORD HA 01730/ (617) 727-9500 RICHAlill DEIWSIER/ LINOLEX SYSTEHS 3H/ 10 CROSBY DRIVE/ BEDFORD MA 01730/ (617) 275-1420 KEN TAKAHASHI/ PRODUCT 3H-LlNOLEX SYSTENS/ 10 CROSBY DRIVE/ BEDFORD MA 01730 H. WILLi'lAN/ GRA-Il/ RAYTHEON HARTWELL RD/ HEDFORD I1A 01730/ (617) 274-7100 x4632 JMJES K. SKILLING/ ACOUSTICS VIBRATION AND ANALYSIS/ MS ,150/ GE'-'<'RAD/ ROUTE 117/ BOLTON HA 01740/ (617) 779-281l KEVIN T. HAHONEY/ STOP 6/ GENRAD INC./ 300 BAKER AVENUE/ CONCOI.{D HA 01742/ (617) 369-4400 X317 WILLIAM BARABASU/ ML3-5/E82/ DIGITAL EQUIPHENT CORP./ 146 HAIN ST./ HAY NARD HA 01754 RICHARD KIHBALL/ 145 WALTHAM ST./ ltAYNARl) NA 01754/ (617) 897-9004 JOHN A. MORSE/ MLJ-2/E41/ DIGITAL EQUIP. CORP./ 146 MAIN ST./ MAYNAR.D MA 01754/ (617) 493-5801 ISAAC R. NASSI/ 1113-5/E82/ DIGITAL EQUIPMENT CORP./ 146 MAIN STREET/ MAYNARD MA 01754/ (617) 493-4487 JOHN R. GOTTHARDT/ 91 OLD BOLTON ROAD/ STOW 01775 WILLIAM GARD/ GRAPHICS SYSTEMS/ RAYTHEON 528 BOSTON POST ROAD/ SUDBURY HA 01776/ (617) 443-9521 RICHARD HOLHES/ INC./ ELECTRONICS FOR MEDICINE/56 UNION AVE.! SUDBURY HA 01776 DAVIU PETERSON/ SPERRY RESEARCH/ 100 NORTH RD/ SUDBURY Nil. 01776/ (617) 369-4000 X250 WALTER J. RATAJ/ ACCUTEST CORP./ 25 INDUSTRIAL AVE./ CHELMSFORD MA 01824/ (617) 256-8124 R. A. FREEDHAN/ P.O. BOX 1136/ LAWRENCE MA 01842 ODD W. RYDEN/ CONT1l.0L EQUIPHENT CORP./ 171 LINCOLN STREET/ LOWELL MA 01851/ (617) 459-0573 CHAI{LES A. STEELE JR./ MATHEt1ATICS DEPT/ UNIV. OF LOWELL/ LOWELL HA 01854/ (617) 452-5000 X2512 LES SLATER/ TRANTI SYSTEHS INC./ 1 CHEUISFORD RB/ N. BIL~EiUCA HA 01862/ (617) 667-8321 THOHAS NUCLEAR CORP./ 601 TREBLE COVE RD./ N.BILLERICA MA 01862 BERT EQUIPHENT CORP./ 1925 ANDOVER ST./ TEWKSBURY I1A 01876/ (617) 851-5071 X2088 REID L. DIGITAL EQUIPMENT CORP./ 1925 ANDOVER STREET/ TEWKSBURY MA 01876/ (617) 851-5071 X2686 BILL DIGITAL EQUIPMENT CORP./ 1925 ANDOVER ST./ TEWXSBURY HA 01876/ (617) 851-5071 DAVID L. PRESSBERG/ MASS. COMPUTER ASSOC. INC./ 26 PRINCESS STREET/ WAKEFIELD HA 01880/ (617) 245-9540 ROBERT VINCENT/ ANALOGIC CORP./ AUDUBON ROAD/ WAKEFIELD 11A 01880/ (617) 246-0300 STEVEN O. HOBBS/ 87 DEPOT ST./ WESTFORD MA 01886 JOHN w. JORDAN/ 5 THORNTON ROAD/ wINCHESTER MA 01890/ (617) 729-8397 THOMAS J. SOUCY/ MICROCOMPUTER SERVICES/ 13 MILDRED STREET/ LYNN MA 01905/ (617) 599-8014 JOSEPH AYERS/ MARlt."E SCIENCE INSTITUTE/ NORTHEASTERN UNIV./ EAST POINT/ NANA1'1T riA 01908/ (617) 581-7370 ALAN STRELZOFF/ UNION CARBIDE IMAGING SYSTEMS/ 333 PROVIDENCE HWY./ NORWOOD ~tA 02062/ (617) 769-5400 X464 ALAN ROClilil:-:RGrORTHO INSTRUHENTS/ 410 UNIVERSITY AVE./ WES'rnOOD MA 02090 JOSEPH J. GAL/ HELU1AN GAL & CO. INC./ ONE FEDERAL STREET/ BOSTON HA 02110/ (617) 482-7735 ROY A. WILSKER/ COHPUTER HEm-ORK/ MASS. STATE COLLEGE/ 150 CAUSEWAY STKEET/ BOSTON MA 02114/ (617) 727-9500 ROBERT J. LECHNER/ DEPT. OF LE./ 401 DA/ NORTHEASTERN UNIV./ BOSTON HA 02115/ (617) 437-3046 BARTLEY C. JOHNSON/ 92 BOTOLPH STREET/ BOSTON HA 02116/ (617) 266-8128 NORTON GREENFELD/ BOLT BERANEK AND NEWMAN INC./ 50 HOULTON STREET/ CAHBRIDGE MA 02138/ (617) 491-1850 ERIK T. MUELLER/ 410 MF.lIORIAL DRIVE/ CAl-IBRIDGE HA 02139/ (617) 253-1000 X5-8153 JUI PERCHIK/ 295 HARVARD ST. APT 607/ CMBRIDGE HA Q2139/ (617) 354-1993 ALLEN SPRINGER/ SCIENTIFIC CENTER/ IBM/ 545 TECHNOLOGY SQUARE/ CA."iBRIDGE HA 02139/ (617) 421-9228 COYT C. TILLHAN JR./ IBH CAHBRIDGE SCIENTIFIC CEiHER/ 545 TECliNOLOGY SQUARE/ CAMBRIDGE lfA 02139/ (617) 421-9250 TERRY HARRIS/ SM 00/ DEPT 3920/ RAYTHEON CO. / SECOlm AVE./ WALTHAl1 MA 02154 ALAN LILLICH/ INC./ 460 TOTTEN POND ROAD/ WALTHAM I1A 02154/ (617) 890-6900/ (617) 926-0768 HICHAEL STEARNS HILL RD./ WALTHAM HA 02154/ (617) 894-9713 HICHAEL BOSTON SYSTEHS INC./ 469 HOODY ST./ WALTHAll HA 02154/ (617) 894-7800 HICHAEL T. 486 TOTTEN POND ROAD/ WALTHAt'1liA 02154/ (617) 890-8802 BENJAMIN Ul-iIVERSITY/ HEUFORD K<\. 02155/ (617) 628-5000 X6650 DONALD D. PKOFESSIONAL S*/ ONE GATEWAY CENTER/ NEWTON ~1A 02158/ (617) 964-1412 FLOYD O. NEWTONVILLE HA 02160 PkESCOTT PRIHE COHFUTER 3 NEWTON EXECUTIVE PAKK/ NEWTON HA 02162/ (617) 964-1730 EARL H. 195 VARICK RD/ NEWTON ~!A 02168 GEORGE C. COHPUTING CENTER/ BOSTON COLLEGE/ CHESTNUT HILL HA 02169/ (617) 969-0100 X3400 TTMOTHY KI"YD,J,TA r.ORP./ lOR \o,TATER STRHT! WATt:R'in(m ~!A O?ln'/ (1'>17) Z17-1'>910 PASCAL NE\~S 0217':1 02173 02173 02173 02173 02173 02178 02178 02181 02194 #15 SEPTU1BER,1979 PAGE 14 DOUG CHAMBERLIN/ APPLIED DECISION SYST~MSI 33 HAYDEN AVE,I LEXINGTON HA 02173/ (617) 861-7580 GEORGE S. GORDON JR./ 7 COACH RD./ LEXINGTON MA 02173/ (617) 861-0470 }'RANK SCHWARTZI SO:t"I'WARE ASSISTANCE INC.! 18 HARBELL ST./ LEXINGTON MA 02173/ (617) 862-0581 GEORGE N. SHANNON!, LINCOLN LABI J-148C/ H.LT./ 244 WOOD STREETI LHXINGTON MA 02173/ (617) 862-5500 X5719 l1AUREEN J. STILLMA.."l/ LINCOLN LABI M,I.T.I LEXINGTON MA 02173/ (617) 862-5500 Ii. YOSHIDAI NC:C 5Y5TEHS LABORATORY/ FIVE MILITIA DRIVE/ LEXINGTON HA 02173/ (617) 862-6415 ATTN: LIBRARY/ DIALOG SYSTEMS INC./ 32 LOCUST STREET/ BELMONT 14A 02178/ (617) 489-2830 JANES E. SliITH/ 87 BEECH ST. 3R.D FL./ BELMONT MA 02178 JANES M. HUDSON/ CULLINANE CORP./ 20 WILLIAMS ST./ WELLESLEY MA 02181/ (617) 237-6600 ALAN EPSTEIN/ IM1AC CORP/ 150 A ST./ NEEDHAM MA 02194/ (617) 449-4600 ~~~ii ~~~~~. B~~Hi~~l~~U;~~~~~~~G~~;T~~V~~;~~/ U~~V!i~~T~Y~~O~8~~7P!=;~I~~~~E B~~ ~~~~2~O~!~i~U~~3~;6~~871/ (401) 847-8000 X2746 03031 H. R. ~x)RSE/ FREY ASSOCIATES/ CHESTNUT HILL RD/ AMHERST NH 03031/ (603) 472-5185 03051 LESLIE J. HILLER/ RFD #3/ 18 WQODCREST AVE./ HUDSON NH 03051/ (603) 889-7226 (HOME)/ 851-5071 X2653 (WORK) 03053 JAMES A. CURTIS/ 10 HUNTER BLVD. / P.O. BOX 498/ LONDONDERRY NH 03053 03060 STEFAN 11. SILVEE.STON/ 23 DEERHAVEN DR./ NASHUA NH 03060/ (603).883-3882 03242 J. P. MACCALLUM! BOX 349/ HENNIKER NH 03242/ (603) 428-7275 03801 JAMES NICHOLS/ 375 OCEAN RD/ PORTSMOUTH NH 03801/ (603) 436-4084 03857 HARK KLEIN/ INFORHATION ENGINEERING/ BOX 198 / 8 BAY ROAD/ NEWMARKET NH 03857/ (603) 659-5891 04469 THOMAS E. BYTHER/ COMPUTING CENTEtl./ UNIV. OF MAINE/ ORONO ME 04469/ (207) 581-2614 04469 RONALO A. ROHRER/ ELECTRICAL ENGINEERING/ BORROWS HALL/ UNIV. OF MAINE - ORONO/ ORONO HE 04469 06095 JEFFREY KATZ/ DEPT 9488 -4BB/ COHBIJSTION ENGINEERING INC./ 1000 PROSPECT HILL ROAD/ WINDSOR CT 06095/ (203) 688-1911 X2600 06103 R. REU8ERT ARANDA! MANAGb:NENT ·SYSTEHS/ f{ARTFORD BOARD OF EDUCATION/ 249 HIGH STREET/ HARTFORD CT 06103/ (203) 566-6506 06468 RICHARD L. ROTH/ TSA SOFTW'ARE INC/ 39 WILLIAl1S DR./ MONROE CT 06468/ (203) 261-7963 06484 MICHAEL BEETNER/ 22 COBBLESTONE DRIVE/ HUNTINGTON CT 06484/ (203) 929-1035 06484 BRUCE HIBBARD/ 60 SAGINAW TRAIL/ SHELTON CT 06484/ (203) 929-8792 06492 KEN M. MA/ COROJ:-IET1UCS MEDICAL SYSTEHS INC./ 61 BARNES PARK ROAD NORTH/ WALLINGFORD CT 06492/ (203) 265-5631 06520 ARTHUR PERLO/ Dg£T. OF MOLECULAR BIOPHYSICS/ YALE UNIV./ BOX 1937 YALE STATION/ NEW HAVEN CT 06520/ (203) 436-4826 06520 ROBJ::RT W. TUTTLg/ COMPUTER SCIENCE DEPT./ YALE UNIVERSITY/ 10 HILLHOUSE AVE. - DUNHAM LAB./ NEW HAVEN CT 06520/ (203) 436-8160 06602 ATTN: SPCC LIBRARY 24EE/ GENERAL ELECTRIC CO./ 1285 BOSTON AVE./ BRIDGEPORT CT 06602/ (203) 334-1012 06608 'CHARLES E. REED/ 3200 PARK AVE./ BRIDGEPORT CT 06608 06787 JOHN v. VILKAITIS/ P.O. BOX 26/ THOMASTON CT 06787/ (203) 283-4232 06810 RODNEY BLACK/ BLDG #2/ 8URROUGHS CORP./ 105 NEWTON ROAD/ DANBURY CT 06810/ (203) 792-6000 06856 :F. ERIC ROBERTS/ CCF SOFTWARE ENGINEERING/ MS 284/ PERKIN ELMER CORP./ MAIN AVENUE/ NORWALK CT 06856/ (203) 762-1797 06880 MlClL\EL BEHAR/ 75 COMPO RD. NORTH/ WESTPORT CT 06880 06896 NICHOLAS R. GETII 241 ROUTE 107/ W. REDDING CT 06896/ (203) 544-8109 06897 D. KONIGSBACH/ NATIONAL CSS/ 187 DANBURY ROAD/ WILTON CT 06897/ (203) 762-2511 X559 06902 JAHES ~IOLONEY/ ITT-TTC/ 1351 WASHINGTON BLVD./ STAMFORD CT 06902/ (203) 357-8000 07044 LAWRENCE E. BAKST/ 100 PARK AVE./ VERONA NJ 07044/ (201) 239-3518 07110 STEVEN R. RAKITIN/ SOFTECII INC./ 492 RIVER RD./ NUTLEY NJ 07110/ (201) 284-3291 07430 JOHN RYZLAK/ WESTERN UNION TELEGRAPH CO./ 90 MCKEE DR./ HAHAWAH NJ 07430/ (201) 529-6472 07602 ALLEN A. WATSON/ PRODUCTION SYSTEI1S/ THE RECORD/ISO RIVER STREET/ HACKENSACK NJ 07602/ (201) 646-4000 07666 RICHARD D. SPILLANE/ DEPT OF 11ATH/COMPUTER SCIENCE/ FAIRLEIGH DICKINSON UNIV./ TEANECK NJ 07666/ (201) 836-6300 X.427 07730 ROBERT HALLORAN/ 21 KERRY DR./ HAZLET NJ 07730/ (lO1) 264-3162 07733 P. E. RUTTER/ HO lE-408/ BELL LABORATORIES/ HOLMDEL NJ 07733 07753 J. F. DICKSON/ 100 LAKr;WOOD RIJ./ NEPTUNE NJ 07753 07801 MARTIN NICHOLS/laO GUY STREET/ DOVER NJ 07801/ (201) 628-9000 x777 (WORK)/ (201) 361-7180 (HOME) 07821 BEN SCHWARTZi 495 CROWS NEST ROAD / FOREST LAJlli.s/ ANDOVER NJ 07821/ (201) 786-5897 07846 RANDOLPH 8ENTSON/ BOX 476/ JOHNSONBURG NJ 07846/ (201) 852-6935 07876 ROBERT KAST/ 11 CENTER LANE/ SUCCASUNNA NJ 07876/ (201) 584-4119 07922 DENNIS K. THORSON/ 243 HCMANE AVE/ BERKELEY HTS NJ 07922/ (201) 464-9534 07960 L. RIANHARD/ 103 SHADY LANE/ MORRISTOWN NJ 07960/ (201) 533-3021 WORK 08034 LEON S. LEVY/ 102.1 MT. PLEASANT WAY/ CHERRY HILL NJ 08034 08536 JOSEPH CUSACK/ 21-01 DEER CREEK DRIVE/ PLAINSBORO NJ 08536/ (609) 799-3088 08540 A. CHARLES BUCKLEY/ ADR SERVICES INC./ ROUTE 206 CENTER! PRINCETON NJ 08540/ (609) 921-8550 X396\ 08540 D. CARAGAPPA/ DAVID SARNOFF RESEARCH CENTER/ RCA CORP./ P.O. BOX 432/ PRINCETON NJ 08540 08540 JAMES c. EMERY/ INTERUNIVERSITY COllMUNICATIONS COUNCIL/ EDUCOM/ P.O. BOX 364/ PRINCETON NJ 08540/ (609) 921-7575 08540 DAVID RIPLEY/ SARNOFF RESEARCH CENTER/ RCA CORP./ P.O. BOX 432/ PRINCETON NJ 08540/ (202) 08540 HENRY WOOD/ 259 MT. LUCAS ROAD/ PRINCETON NJ 08540 08541 JOHN c. LOCKHART/ D233/ EDUCATIONAL TESTING SERVICE/ ROSEDALE RD./ PRINCETON NJ 08541/ (609) 921-9000 X3562 08854 ATTN: comlllTER REFERENCE CENTER/ CCIS/ RUTGERS UNIV./ P.O. HOX 879/ PISCATAWAY NJ 08854/ (201) 932-2296 08854 ATTN: DON T. HO/ TECHNICAL INFORMATION LIBRARY/ PY 1G114A/ BELL LABS/ 6 CORPORATE PLACE/ PISCATAWAY NJ 08854/ (201) 981-6500 08854 NARAIN GEHANI/ lE-134/ BELL LABS/ 6 CORP. PLACE/ PISCATAWAY NJ 08854/ (201) 981-]269 08854 RUSSELL J. PEPE/ 142 MOUNTAIN AVE/ PISCATAWAY NJ 08854/ (201) 527-6869 08873 ROBERT BOYLAN! P.O. BOX 2'3/ EAST HlLT.STONl': N.T 08873/ (201) fl74-5449 10003 STEVEN L. 'MIT-;HELL/ 5 ST. MARKS PLACE APT 3/ NEW YORK NY 10003/ (212) 228-5/90 10006 DAVID EISEN8ERG! 19TH FLOOR/ CUTTIN'G EDGE OF TECKNOLOl>Y INC./ 61 BROADWAY/ NEW YORK NY 10006/ (,212) 480-0480 10010 TAIWAN CHANG/ 18V/ METROPOLITAN LIFE/ 1 ~1ADISON AVE./ NEW YORK NY 10010/ (212) 578-2258 10010 LUTHER SI'EKBERG/ EH1'lJ{E STATE REPORT/ 17 LEXINGTON AVE./ NEW YORK NY 10010/ (212) 725-3313 10013 BILL LIPSKY/ 310 GREENWICH ST 381!:/ NEW YORK NY 10013 10016 JUAN RADULOVIC/ SAllEUH NEW YORK INC./ 2 PARK AVENUE/ NEW YORK NY 10016/ (212) 750-2462 10016 RANON TAN/ 305 E. 40TH ST. APT. 12W/ NI!."W YORK NY 10016/ (2I2) 754-6464 10017 ROBIN KASCKOW/ DECISION STRATEGY CORP./ 708 3RD AVE/ NEW YORK NY 10017/ (212) 687-2660 10020 mCHAEL ROSENBERG/ NBC - 1401W/ 30 ROCKEFELLER PLAZA! NEW YORK NY 10020/ (212) 664-4444 X5087 10022 LARRY ARONSON/16TH FLOOR! BOEING COHPUTER SERVICES/ 825 THIRD AVE./ NEW YORK NY 10022/ (212) 486-7275 10025 JOHN I. FREDERICK! 306 W. 100TH ST. APT 81/ NEW YORK NY 10025 10028 MICHAEL OLFE/ 226 E. 83RD ST. APT. 44/ NI':W YORK NY 10028/ (212) 794-0178 10028 CHRISTOPHER YORK/ THE SPENCE SCHOOL/ 22 EAST 91 STREET/ NEW YORK NY 10028/ (212) 289-5940 10029 NORMAN R. KASHDAN/ INST. OF COMPo SCL/ MT. SINAI SCHOOL OF MEJ)ICINE/ FIFTH AVE. AT 100TH ST./ NEW YORK NY 10029/ (2I2) 650-7253 10031 HIDEHIKO TANAKA/ DEPT. OF ELECTRICAL ENGR./ CITY COLLECE OF NEW YORK/ CONVENT AVE. @ 140TI{ ST/ NEW YORK NY 10031/ (212) 690-6621 10304 JOHN D. OWENS/ 147 NORWOOll AVE./ STATEN ISLAND NY 10304/ (212) 448-6283 10516 CHARLES D. FOLEY 111/ 4 KNOLLWOOI) LANE/ COLDSPRING NY 10516/ (914) 265-9602 10549 DANIEL R. MCGLYNN/ 71 N. HOGER AVE./ MT. KISCO NY 10549/ (914) 666-4665 10550 CHARLES PRINDLE/ l-lAGNETlC ANALYSIS CORP./ 535 SOUTH 4TH AVE./ MT. VERNON NY 10550/ (914) 699-9450 10577 JOSEPH F. SCHAUB JR./ INFORMATION SYSTE~fS DEPT./ PEPSI-COLA COMPANY/ PURCHASE NY 10577 10591 GORDON UBER/ 410 BENEDICT AVE APT 3-D/ TARRYTOWN NY 10591 10598 VICTOR s. MILLER/ THOS J. WATSON RESEARCH CENTER/ IBM! P.O. BOX 218/ YORKTOWN HGTS NY 10598 10598 MARK SEIDEN/ IBH RESEARCH/ PO BOX 218/ YORKTOWN HGTS NY 10598/ (914) 945-2992 10804 GLEN R. J. IIDLES/ 263 BEECHMONT DRIVE/ NEW ROCHELLE NY 10804/ (914) 235-7323 10901 J. SCOTT DIXON/ 35 PARK AVE. APT 5K/ SUFFERN NY 10901/ (914) 357-1256 10954 JON BANGS/ 3-2 NORl1ANDY VILLAGE/ NANUg! NY 10954/ (914) 623-1222 10964 NORNAN H. EVENSEN/ LAMONT-DOHERTY GEOLOGICAL OBSERVATORY/ PALISADES NY 10964/ (914) 359-2900 X302 10965 ROBERT NORRIS/ LAWLER MATUSKY & SKELLY/ ONE BLUE HILL PLAZA! PEARL RIVER NY 10965/ (914) 735-8300 10996 ROBEl{I L. LEECH/ DEPT. OF ELEC. ENGR./ U.S. MILITARY ACADFJ1Y/ WEST POINT NY 10996/ (914) 938-3071 11020 ROBERT LEVINE/ l-IAIL STA :F5/ SPERRY SYSTEMS MANAGEMENT/ GREAT NECK NY 11020 11020 WARREN K. MELHAnO/ MAIL STATION H-3/ SPERRY SYSTEHS MCMT./ GREAT NECK NY 11020/ (516) 574-3407 11040 TOH SCALLY/ P.O. BOX 864/ NEW HYDE PARK NY 11040 11415 GILl:l~RT KAPLAN/ 83-52 TALBOT ST./ KEW GARDENS NY 11415 11716 JAI·IES A. COLE/ MEGADATA CORP.! 35 ORVILLE DRIVE/ BOHI!.'MIA NY 11716/ (516) 589-6800 11725 :FRED ROH1W/ 7 FRlJI'IWOOD LANE/ COHMACK NY 11725/ (516) 575-5723 11725 ASHOK SHENOLIKAR/ 22 GREENE DRIVE/ COMMACK NY 11725/ (516) 499-9166 11727 DONALD R. COSCIA/ SUFf'OLK c. c. COLLEGE/ 11 FAIRWOOD LN./ CORAM NY 11727/ (516) 233-5291 11767 RICHARD J. LA"W/ 75 MlDWOOD AVE/ NESCONSET NY 11767 11772 GEORGI': A. CACIOPPO JR./ 238 MARTHA AVENUE/ EAST PATCHOGUE NY 11772/ (516) 286-8475 11776 IHLLIE S. GOLllSTEIN/ UNIVERSITY GARDENS - APT. 2D/ 460 OLD TOWN ROAD/ PT JEFFERSON" NY 11776/ (516) 928-3291 11973 ARTHUR L. Y. LAU/ DEPT OF BIOLOGY/ BROOKHAVEII NATIONAL LABORATORY/ UPTON NY 11973/ (518) 345-)394 11973 FRANK LEPERA/ APPLIED MATH. D~PT./ BLDG 515/ BROOKHAVEN NATIONAL LABORATORY/ UPTON NY 11973/ (516) 345-4112 12206 ALLEN BROWN/ HlKROS SYSTEMS CORP/ 845 CENTRAL AVE./ ALBANY NY 12206/ (518) 489-2561 12305 HONOR REYNOLDS/ 33 :FERRY ST./ SCHNECTADY NY 12305/ (518) 385-8489 (WORK.) 12308 JOHN D. COATES/ COMPUTER CENTER/ UNION COLLEGE/ SCHENECTADY NY 12308/ (518) 370-6293 12309 FRANCIS FEDERIGKI/ 2109 BAKER AVE/ SCHENECTADY NY 12309/ (518) 457-3998 12401 G. KaEMBS/ DEPT 66A / BLDG 003/ IBM CORPORATION/ NEIGHJlORHOOD ROAD/ KINGSTON NY 12401/ (914) 383-0123 12546 PAUL F. FITTS/ SYSTEMS DEVELOPMENT/ INNOVATEK MICROSYSTEMS INC./ SMITHFIELD ROAD/ HILLERTON NY 12546/ (914) 373-9003 13069 ROBERT NARAD/ 407 S. 3RD ST./ FULTON NY 13069/ (315) 598-1550 13206 JOliN C. WYMAN/ 263 ROXBURY RD./ SYRACUSE NY 13206/ (315) 423-4320 13440 ATTENTION: H. SPAANENBURG/ MEASUREHENT CONCEPT CORPORATION/ 1333 E. DOMINICK STREET/ ROME NY 13440/ (315) 337-1000 13502 THEO RA11AKERS/ ICL INC/ COSBY MANOR RD/ UTICA NY 13502/ (315) 797-5750 14215 ALLAN MOORE/ 69 EASTON/ BUF:FALO NY 14215/ (716) 897-2041 14226 MIKE MANTHEY/ C.S. DEPT. 1 SUNY - BUFFALO/ 4226 RIDGE LEA ROAD/ AMHERST NY 14226/ '(716) 831-1351 14527 DAN DORROUGH/ 1103 E. BLU~'F DR./ PENN YAN NY 14527 14580 RICHARD ALRUTZ/ 241 W128/ XEROX CORP./ 800 PHILLIPS RD./ WEBSTER NY 14580/ (716) 422-5154 14580 WERNtR SCHENK/ TECHNICAL PROGRMIHING SERv.1 XEROX CORP./ 800 PHILLIPS ROAD W128/ WEBSTER NY 14580/ (716) 422-5301 14601 LEOB KOPF/ TAYLOR INSTRUHENT CO./ 95 AMES ST./ ROCHESTER NY 14601/ (716) 235-5000 14609 LOUIS 8. JAHE~/ SOFTWARE ENGINEERING/ COMPUTER CONSOLES INC./ 97 HUMBOLT STREET/ ROCHESTER NY 14609/ (716) 482-5000 14619 DANIEL A. EHMANN/ 165 WINBOURNE ROAD/ ROCH}O;STER NY 14619/ (716) 436-2271 14620 LARRY GERTZOG/ COHPUTING CENTER/ UNIV. OF ROCHESTER/"727 ELMWOOD AVE/ ROCHESTER NY 14620/ (716) 275-4181 14627 RICHARD D. mSAK/ DEPT. OF MATHEMATICS/ HATH SCII':NC1':S BLDG/ UNIV. OF ROCHESTER/ ROCHESTER NY 14627 14650 ATTN: MSTMAN KODAK CO./ 525 ENGINEERING LIBRARY/ KODAK PARK I>IV 8LDG 23/ ROCHESTKR NY 14650 14850 ALISON A. BROWN/ OFFICE OF l:OHPUTER SERVICES/ G-24 mus HALL/ CORNI':LL UNIV./ lTHACA NY 14850/ (607) 256-7341 14R'l(} llAVlll .T. l.F:\.JTS/ MATH1':MATH~S lH:PT./ ITHACA COl,l.gCF./ ITllACA NY lilH,)!)/ (607) 274-:H07 PASCAL NUS #15 15146 15213 15213 15213 15213 15213 15213 15213 15229 16802 17055 17257 18015 18042 18104 18936 18976 19002 19002 19085 19090 19101 19102 19104 19104 19104 19104 19144 19147 19422 19454 19518 19713 20003 20012 20014 20015 20015 20018 20024 20034 20036 20052 20229 20590 20601 20755 20760 20770 20771 20776 20795 20852 20854 20854 20901 21031 21031 21040 21044 21045 21202 21204 21234 21793 22003 22030 22043 22090 22090 22091 22101 22102 22206 22209 22302 22304 22312 22801 22980 23185 23666 24501 27101 27605 28704 30060 30303 30306 30313 30327 30328 30332 30332 30332 30341 32308 32901 32905 33143 33319 33334 33432 33601 33620 35773 35805 35805 36582 37076 40506 43201 43201 43402 44022 44092 44103 44107 44115 44124 44139 44141 44202 45214 45219 45324 45387 45429 45433 SEPTEfHER,1979 PAGE 15 HENRY J. BOWLDEN/ WESTINGHOUSE R&D CENTER! 1310 BEULAH ROAD! PITTSBURGH PA 15146/ (412) 256-3375 CHUCK AUGUSTINC:/ CQ!1PUTATION CENTER/ CAlilil::GTE MELLON UNlV./ SCHENLEY PARK/ PITTSBUl{GH PA 15213/ (412) 578-2649 ANDY HISGh:N/ CmIPUTER SCIENCE DEPT.I CARNEGIE-HELLQN UNIV.I!:RSITYI PITTSBURGH FA 15213/ (412) 578-3053 CHAIU.ES Y. HORROwl CQHPUTER ENGR. DIV.I CARNEGIE-MELLON INST. m" RESEARCHI 4616 HENRY ST.I pI't'rSBURGH PA 15213/ (412) 578-3361 BRIAN KOSEN/ THREE RIVERS' COMPUTER CORP.! BOX 235 SCHENLEY PARK! PITTSBURGH PA 1521)/ (412) 621-6250 JAllliS B. SAXEI COI·IPUTER SCIBNeE DEPT./ CAKNEGIE-~1ELLON UNIVJ::RSITY! PITTSBURGH PA 15213/ (412) 518-3073 RICHAIID SNOl.J(;RASS/ DEPT. OF COMPUTER SCIENCE/ CARNEGIE-MELLON UNIV./ PITTSBURGH PA 15213/ (412) 578-3044 lQ;VIN WIHLEIt/ SCHOOL OF URBAN AND PUBLIC AFFAIRS/ INSTITUTE OF PH'{SICAL PLANNING/ CARNBGIE MELLON UNlV/ SCHENLEY PARK/ PITTSBUHt;H FA 15213 (412) 578-2177 CAROL SLEDGE/ ON-LIHE SYSTEMS INC/liS EVERGREEN HEIGHTS DRIVE/ PITTSBURGH'PA 15229/ (412) 931-7600 S. BROOKS HCLANE/. DEPT OF PHYSICS/ 104 DAVEY LABS/ PENN STAn~ UNIV./ UNIVERSITY PK FA 16802/ (814) E. R. BEAUREGARD/ CODE: 9442T/ NAVY FLEET MATERIAL SUPPORT O~'FICE/ MECHANICSBURG PA 17055/ (717) 790-4130/ (717) 766-1446 (HOME) CHARLES E. HILLER/ RD 5 - CRESCENT DRIV!::/ SHIPPENSBURG PA 17257/ (717) 532-5169 (HOMB)/ (717) 532-1540 (WOKK) KAYIlOND G. UOHETZ JR./ 1102 SENECA STREET/ BETIILEHEI1 PA 18015/ (215) 948-7900 X377/ (215) 691-6902 (!lotIE) PETER A. APGAR/ 401 FROST HOLLOW ROAD/ EASTON PA 18042/ (215) 252-2176 THOMAS H. t-IOKRISETTE/ 2219 GREENLEAF ST./ ALLENTOWN PA 18104/ (215) 434-2993 LAWTHER O. SHITI!! GAS SPRING COHF./ 17 COMHEKCE DRIVE/ MONTGOMERYVL PA 18936/ (215) 368-7105 FRANCIS W. Yl::UNG/ P.O. BOX 489/ WARRINGTON PA 18976/ (215) 343-4758 IRA KllBEN/ 2104 LINCOLN DRIVE EAST/ AHBLER PA 19002/ (215) 542-2174 NEIL R. BAlmAN/ HEALTHCOM/ AXE WOOD WEST/ BROADAXE PA 19002/ (215) 043-7330 JANES SOLDERITSCH/ DEPT OF MATHEH.ATICS/ VILLANOVA UNIV./ VILLANOVA PA 19085/ (215) 527-2100 X669 WILLIAl4 L. HAIRD/ 36 WOODHILL DRIV!!:/ WILLOW GROVE PA 19090/ (215) 659-4929 ROBERT A. EPPING/ E~"VIRONHENTAL SYSTEHS/126ml/ GENERAL ELECTRIC CO./ 3198 CHESTNUT ST./ PHILADELPHIA FA 19101/ (215) 823-3242 H. R. WRIGHT/13TH FLOOR! BELL OF PENNSYLVANIA! 1 PARKWAY/ PHILADELPHIA PA 19102/ (215) 466-3478 ATTN: SERIALS DEPT./ DREXEL UNIV. LIBRARIES/ 32ND & CHESTNUT STREETS/ PHILADELPHIA PA 19104 JOlIN F. LUBIN/ THE WHARTON SCHOOL/ DE-Ill CC/ UNIV. OF PENNSYLVANIA! PHILADELPHIA PA 19104/ (215) 243-7601 JOSEPH O'ROURKE/ 4103 CHESTNUT ST./ PHILADELPHIA PA 19104 STJ::PHEN M. PLATT/ 4060 IRVING ST./ PHILADELPHIA PA 19104/ (215) 222-6432 WARREN G. 'POWELL/ PHILADELPHIA COLLEGE TEXTILES AND SCI*/ SCHOOL HOUSE LANE & HENRY AVE./ PHILADELPHIA PA 19144/ (215) 843-9700 DI::NIS KALTHOFER/ 613 SOUTH STREET/ PHILADELPHIA PA 19147/ (215) 923-7850 RICHARD D. LADSEN/ MS A-l/ SPERRY UNIVAC/ P.O. BOX 500/ BLUE BELL PA 19422/ (215) 542-4011 KUKT ~1EYLE/ lID 11148/ LEEDS & NORTHRUP/ DICKERSON RlJ./ NORTH WALES PA 19454/ (215) 643-2000 x3033 RICHARD A. JOKIEL/ P.O. BOX 136/ DOUGLASVILLE PA 19518/ (215) 385-6324/ (215) 948-7900 ROBERT F. BASHl"ORD/ 704 MANFIELD RD./ NEWARK DE 19713 VANESSA AXELROD/ EDS FEDERAL COlU!./ 229 PENNSYLVANIA AVE./ WASHINGTON DC 20003/ (202) 546-8700 RICK THOMAS/ 408 DOI1ER AVENUE/ TAKOMA PARK MD 20012/ (301) 565-2678 (HOME)/ (301) 454-2946 (WORK) JOHN M. SHAW/ BLDG 36 / ROOM 2A29/ NATIONAL INSTITUTES OF HEALTH/ BETHESDA MD 20014/ (301) 496-3204 W. G. BLASDEL/ 4513 CUMBERLAND AVE./ CHEVY CHASE MD 20015 ROBERT L. MCGHEE/ 4417 BRADLEY LANE/ CHEVY CHASE MD 20015 LARRY LANGDON/ 3132 APPLE RD. N.E./ WASHINGTON DC 20018 GARY A. KUOIS/ 3224/ CONSAT GENERAL CORP./ 950 L'ENFANT PLAZA SW/ WASHINGTON DC 20024/ (202) 554-6438 ROY MADDUX/ FEDERAL SYSTEMS DIV./ IBI4/ 10215 FERNWOOD RO./ BETHESDA MD 20034/ (301) 897-3345 N. RAHACKANDRAN/ LEXIca ENTERPRISES/ 1333 NEW HAMPSHIRE AVE. NW - SUITE 510/ WASHINGTON DC 20036/ (202) 457-0320 ATTN: TECHNICAL ASSISTANCE/ UNIVERSITY COMPUTER CENrt!:R/ GEORGE WASHINGTON UNIVt!:RSIT':l/ 2013 G STREET N.W. 11201/ WASHINGTON DC 20052/ (202) 676-6140 STEVE O'KEEFE/ 7328/ U.S. CUSTOMS DATA CENTER/ 1301 CONSTITUTION AVE. N.W./ WASHINGTON DC 20229/ (202) 566-2974 ATTN: COMUANDANT (G-DOE-3/TP54)/ U.S. COAST GUARD/ 2100 2ND ST. SW/ WASHINGTON DC 20590 DONALD H. RINGLER/ MICROWAVE SPACE RESEARCH FACILITY/ NAVAL RESEARCH LABORATORY/ RFD NO.2 BOX 126A/ WALUORF MD 20601 A'ITN: S86/ III PIG/ NATIONAL SECURITY AGENCY/ FT. GEO. HEADE MD 20755/ (301) 688-6015 PEGGY DUNN/ OLD DOMINION SYSTEl1S/ 4 PROFESSIONAL DRIVE - SUITE 119/ GAITHERSBURG MD 20760/ (301) 948-5200 ),EO R. DAVIS/ 40 LAKESIDE DRIVE/ GREENBELT t-ID 20770/ (301) 474-9125 ADOLPH GOODSON/ GODDARD SPACE FLIGHT CENTER/ CODE 5331/ NASAl GREENBELT MD 20771 BETTY A. COLHOUN/ IVY NECK/ HARWOOD PO MD 20776/ (301) 867-2348 KENNETH R. JACOBS/ 10112 ASHWOOD DR./ KENSINGTON MD 20795/ (301) 946-4769 ALLEN E. BENDER/ 5003 MACON ROAD/ ROCKVILLE MD 20852 LOUIS V. RUFFINO/ FEDERAL SYSTEMS DIVISION/ IBM! 18100 FREDERICK PIKE/ GAITHERSBURG MD 20854/ (301) 840-7978 ATTN: APPLIED BUSINESS COMPUTER SYSTE*/ 12913 MISSIONWOOD WAY/ POTOMAC Mil 20854/ (301) 340-8708 DAVID P. WALSH/ 319 HILU100R DRIVE/ SILVER SPRING lID 20901 AITN: GENERAL INsnmmNT CORPORATION/ C/O TECHNICAL LIBRARY/ 11126 MCCORMICK ROAD/ HUNT VALLEY Me 21031/ (301) 666-8700 X333 WALTER J. KLOS/ DISPLAY DATA CORP./ EXECUTIVE PLAZA IV/ HUNT VALLEY MD 21031/ (301) 667-9211 LAWRENCE W. BAIN JR./ 804 FISHERMAN LANE/ EDGEWOOD MD 21040/ (301) 676-4791 RON GRAVES/ GENERAL PHYSICS CORP./ 1000 CENTURY PLAZA/ COLOHBIA MD 21044/ (301) 730-4055 RICHARD LLEWELLYN/ 5355 RED LAn/ COLUMBIA 110 21045/ (301) 997-4079 WAYNE N. OVERMAN/ OFFICE OF THE PUBLIC DEFENDER/ 800 EQUITABLE BLDG./ BALTIMORE MD 21202/ (301) 383-7743 EDWARD W. KNUDSEN/ G/157/ AAI CORP./ P.O. BOX 6767/ BALTUlORE HD 21204/ (301) 666-1400 KEVTN A. PARKS/ 1806 DALHflUfHF. C"'. APT B2/ BALTIMOR.E MD 21214/ (301) 668-2067 PAUL c. BERGMAN/ DIGITAL SYSTEMS CORP./ 3 NORTH MAIN ST./ WALKERSVILLE MD 21793/ t301) !:S4~-4141 PATRICIA TIMPANARO/ 4504 COMMONS DRIVE 11102/ ANNANDALE VA 22003/ (202) 223-5676 WILLIAM F. AMON III/ 13312 PENNYPACKER LANE/ FAIRFAX VA 22030/ (703) 790-8620 ROBERT ROSE/ 2205 GRAYSON PLACE/ FALLS CUURCH VA 22043/ (703) 534-1984 GEORGE W. CHERRY/ 1542 GOLDENRAIN CT./ RESTON VA 22090/ (703) 437-4450 STEPHEN GERKE/ 1646 PARKCREST CIR. 1/301/ RESTON VA 22090/ (703) 437-4319 RICHARD STADTMILLER/ 1454 GREEMONT CT./ RESTON VA 22091 J. J. LOGAN/ INFODYNAHICS/ 6636 HAZEL LANE/ MCLEAN VA 22101/ (703) 893-5436 DAVID A. GOMBERG/ W-615/ MITRE CORP./ 1820 DOLLE)!' MADISON BLVD./ MCLEAN VA 22102/ (703) 827-7036 PHILIP R. ~1YLET/ 3373 S. STAFFORD ST./ ARLINGTON VA 22206/ (202) 692-3585 ARTHUR E. SALWIN/ SUITE 711/ RIVERSIDE RESEARCH INSTITUTE/ 1701 N. FT HYER DR/ ARLINGTON VA 22209/ (703) 522-2310 CRAIG E. JACKSON/ 3778 GUNSTON ROAD/ ALEXANDRIA VA 22302/ (703) 998-8262 THOMAS E. SHIELDS/ 300 SOUTH VAN DORN STREET APT IR113/ ALEXANDRIA VA 22304 MICHAEl- D. HURLEY/ 437 N. ARMISTEAD ST. APT 115/ ALEXANDRIA VA 22312 JOSEPH W. MAST/ EASTERN MENNONITE COLLEGE/ HARRISONBURG VA 22801/ (703) 433-2771 ATTN: W. H. GENTRY/ DCPBD I.IBRARY/ GENERAL ELECTRIC/ WAYNESBORO VA 22980 KATHLEEN S. UlCKEN/ DRAWER EE/ WILLIAUSBURG VA 23185/ (804) 564-9350 ATTN: HAMPTON TECHNICAL CENTER/ C/O DOVI-KURTZE/ KENTON INTERNATIONAL INC./ 3221 NORTH ARMISTEAD AVE./ HAMPTON VA 23666 MARK FURTNEY/ 1427 TUNBRIUGE RD/ LYNCHBURG VA 24501/ (804) 384-5799 A. J. SUTTON/ 1135 WEST FuURTH STREET/ WINSTON-SALEM NC 27101/ (919) 723-4735 LENNY HEATH! MICRONICS INC! P.O. BOX 12545/ RALEIGH NC 27605 CARROLL B. ROBBINS JR./ APT 32/ ARDEN ARMS MTS./ ARDEN NC 28704/ (919) 684-0168/ (704) 684-8111 (WORK) FRANK. BONACO/ 679 LOWELL DRIVE/ MARIETTA GA 30060/ (404) 424-1460 E. G. SWARTZMEYER/ INFORMATION SYSTEMS DEPT/ GEORGE STATE UNIVERSITY/ UNIVERSITY PLAZA! ATLANTA GA 30303/ (404) 658-3883 PAUL D. FIELD/ ATLANTA COHPUTER SYSTEMS/ 1019 ROSEDALE ROAD N.E./ ATLANTA GA 30306/ (404) 872-9968 AL SHEPPARD/ SIR-ATLANTA INC./ 331 LUCKIE STREET NW/ ATLANTA GA 30313/ (404) 522-6317 JOHN P. WEST/ DIGITAL SYSTEMS DESIGN GROUP/ 4559 DUDLEY LANE NW/ ATLANTA GA 30327/ (404) 894-2264 M. L. MCGRAW/ 655 SPALDING DR./ ATLANTA GA 30328/ (404) 394-2017 KOZAI KATSUTOSHI/ GEORGIA TECH! P.O. BOX 33843/ ATLANTA GA 30332/ (404) 874-7881 JOHN PEATMAN/ SCHOOL OF EE/ GEORGIA TECH! ATLANTA GA 30332/ (404) 894-2901 JERRY W. SEGERS/ OFFICE OF CQ}1PUTING SERVICES/ GEORGIA INSTITUTE OF TECHNOLOGY/ ATLANTA GA 30332/ (404) 894-4676 MIKE HAYES/ 4122 ADUlRAL DRIVE/ CHAMBLEE GA 30341/ (404) 451-1176 C. EDWARD REID/ P.O. BOX 12578/ TALLAHASSEE FL 32308/ (904) 488-2451 CRAIG NELSON/ 635 AUBURN AVEN1.JE./ MELBOURNE FL 32901/ (305) 727-3207 STEPHEN E. WOODBRIDGE/ 642 STEARNS AVE./ PALM RAY FL 32905/ (305) 727-5202 S. M. MINTON/ 6562 S.W. 76 TERRACE/ SOUTH MIAMI FL 33143 A. I. STOCKS/ 3730 INVERRARY DRIVE ill-W/ LAUDERDALE FL 33319 J. NIEL HAYNIE/ NORTH RIDGE DATA INC./ 971 E. COMMERCIAL BLVD./ FT. LAUDERDALE FL 33334/ (305) 771-6344 ROBERT K. STEVENS/ 601 GOLDEN HARBOUR DRIVE/ BOCA RATON FL 33432/ (305) 391-6213 JOHN L. HALL JR./ DC 156/ GTE DATA SERVICES INC./ P.O. BOX 1548/ TAMPA FL 33601/ (813) 224-3286 DAVID B. CAMERON/ COMPUTER RESEARCH CENTER./ INSTRUCTION AND RESEARCH SYSTEMS/ UNIV. OF SOUTH FLORIDA! TAMPA FL 33620/ (813) 974-2585 MALCOLM GILLISI J.-:lEGA CORP./ 1001 REYNOLDS RD./ TONEY AL 35773/ (205) 828-0922/ (205) 453-1455 JERKY R. BROOKSHIRE/ 3402 WILKS PL SW/ HUNTSVILLE AL 35805/ (205) 881-9539 MIKE D. PESSONEY/ ANALYSTS INtERNATIONAL CORP./ 2317 BOB WALLACE AVE SW/ HUNTSVILLE AI. 35805/ (205) 533-4220 ROY KEELEY JR/ RT. 3 BOX 316/ THEOUORE AL 36582/ (205) 973-2516 LARRY D. BOLES/ 649 DENVER DRIVE/ HERMITAGE TN 37076/ (615) 885-1942 LAVINE THRAILKILL/ COMPUTING CENTER/ 72 MCVEY HALL/ U OF KENTUCKY/ LEXINGTON KY 40506/ (606) 258-2916 ATTN: Cm1PUTER CENTER LIBRARY/ BATTELLE MEMORIAL INSTITUTE/50S KING AVE./ COLUMBUS OH 43201/ (614) 424-7329 KEVIN CADMUS/ BATTELLE COLUMBUS LABS/50S KING AVENUE/ COLUMBUS OH 43201/ (614) 424-7331 REX KLOPFENSTEIN JR/ 400 NAPOLEON RD APT 332/ BOWLING GREEN OH 43402/ (413) 353-5311 TOM ZWI'£TER/ 17991 MILLSTONE RD./ CHAGRIN FALLS OH 44022/ (216) 543-5405 EDWARD S. MALLINAK JR./ BAILEY CONTROLS CO./ 29801 EUCLID AVE. 2F8/ WICKLIFFE OR 44092/ (216) 943-5500 X2821 DALE BRAINARD/ SOFTWARE ENGR. - TURNING MACHINE DIV./ WARNER & SWASEY COMPANY/ 5701 CARNEGIE AVENUE/ CLEVELAND OH 44103/ (216) 368-5000 STEVEN B. HALL/ 1599 ORCHARD GROVE/ LAKEWOOD OR 44107/ (216) 521-4178 KARL J. CASPER/ DEPT. OF PHYSICS/ CLEVELAND STATE UNIV./ CLEVELAND OR 44115/ (216) 687-2432 SnJART W. ROWLAND/ 1436 GOLDENGATE BLVD. HG4/ MAYFIELD HTS OH 44124/ (216) 473-0347 ROBERT STRADER/ WARNER & SWASEY RESEARCH DIV./ 28999 AURORA RD./ SOLON OR 44139/ (216) 368-6178 DONALD E. WHILE/ RESEARCH AND DEVELOPMENT/ B.F.GOODRICH/ 9921 BRECKSVILLE ROAD/ BRECKSVILLE OR 44141/ (216) 526-4311 AUSTIN CHANEY/ 738-2 CLARIDGE LANE/ AURORA OH 44202/ (216) 562-7289 JAMES HARGKEAVES/ P.O. BOX 14734/ CINCINNATI OH 45214/ (513) 385-7048 LARRY BEITCH/ 458 LLOYD PLACE/ CINCINNATI OH 45219/ (513) 621-8275 RICHARD L. TUCKER! 8007 PHILADELPHIA DR./ FAIRBORN OH 45324 JOHN s. WADDELL/ 113 EAST NORTH COLLEGE STREET/ YELLOW SPRINGS OH 45387/ (513) 767-9157 BOB MYERS/ 4941 ACKERMAN BLVD./ KETTERING OR 45429/ (513) 434-9548 STI';VF.N ROG},:RS/ 1011 i'lIDllY DR./ WPAFB OR 45433/ (513) 253-5860 S E PTE ;'1 B E R) 1 9 7 9 PAS CAL NEW S # 1 5 PAGE 16 OF CHl:.1HSTRY/ OHIO UNIVERSITY/ ATHENS OH 45701 1823 PARK ST./ FINDLAY OH 45840/ (419) 422-8908 MARINA DRIVE! INDIANAPOLIS IN 462401 (317) 253-1085 INC./ 1718 W. MISHAWAKA RD.! ELKHART IN 46514/ (219) 2~4-5571 HICROcu",'un:. INC./ 1051 COHHERCE DRIVE/ SOUTH BEND IN 46628/ (219) 233-9171 KING-SEELEY THERJ10S CO./ KENDALLVILLE IN 46755 DIv.1 MAGNAVOX/ 1313 PRODUCTION ROAD/ FORT WAYNE IN 46808/ (219) 482-4411 CONFUTING SERVICES/ INDIANA UNlV. - SOUTHEAST! 4201 GRANTLINE ROAD/ NEW ALBANY IN 47150/ (812) 945-2731 X287 COHPLJTER CENTER/ 12 HEM01UAL! INDIANA UNlV./ BLOomNGTON IN 47401/ (812) 337-9255 COl1PUTER CENTER/ 78 Hl'ER BLDG/ INDIANA UNlV./ BLOOlHNGTON IN 474011 (812) 337-19ll SCIENCE DEPT./ 101 LINDLEY HALL/ INDIANA 0/ BLOOMINGTON IN 47401/ (812) 337-4866 LAr'AYJ::TTE IN 47905 HILL DR./ SOUTHFIELD MI 48076/ (313) 559-6781 GREAT LAKES SOFTWARE SYSTEMS LTD./ 5 RESEARCH DRIVE/ ANN ARBOR HI 48103/ 013) 663-6533 542 LINDEN LANE/ ANN ARBOR HI 48103/ (313) 994-3500 X489 (WORK)/ (313) 663-7053 (HOtIE) TECHNOLOGY INC./ 120 I£NTERPRISE DRIVE/ ANN ARJ:)OR MI 48103/ (313) 769-2100 CO!1SHARE INC./ 3001 S. STATE ST./ ANN ARBOR NI 48104/ (313) 994-4800 41:1104 W. J. INC./ 5YCOR/ 100 PHOENIX DRIVE/ ANN ARBOR HI 48104/ (313) 995-1234 48104 DAVID LIPPINCOTT/ ANN ARBOR CONFUTER CORP./ 3211 PACKARD RD/ ANN ARBOR HI 48104/ (313) 971-3740 48105 JAHES BLYTHE/ GREAT LAKES SOFTWARE SYSTEI1S LTD./ 5 RESEARCH DR./ ANN ARBOR NI 48105/ (313) 663-6533 48105 WILLIAl1 E. BULLEY/ 314 ANN ARBOR HI 48105/ (313) 995-2188 48105 NARK HERSEY/ 1114 MAIDEN LANE APT. 112/ ANN ARBOR MI 48105/ (313) 994-3934/ (517) 355-1764 (O:FFICE) 48106 RICHARD C. VILE JR./ NORTHERN TELECOM/ ItO PHOENIX DR. - 4 W.T./ ANN ARBOR HI 48106/ (313) 973-6851 48130 HARK WOLCOTT/ 5U51 MAST ROAD/ DEXTEl{ HI 48130/ (313) 426-2034 HOME/ (313) 668-4313 WORK 48176 'LARRY ENGELHARDT/ P,C,S'/ 750 N. 11APLE ROAD/ SALINE MI 48176/ (313) 429-4971 48176 DAVID HATTHEWS/ PlWCESS COHPUTER SYSTl::MS/ 750 N. I>IAPLE RD./ SALINE MI 48176/ (313) 429-4971 48176 JOHN VAN ROEKEL/ P1WCESS COHPUTER SYSTEMS/ 750 N. HAPLE RD./ SALINE MI 48176/ (313) 429-4971 48197 ROBERT M. OTTOSEN/ 4444 SWISS STONE LANE E. i!3C/ YASIlANTl 111 48197/ (313) 434-4969 48197 RICHARD L. MAHN/ 2473 DRAPER/ YPSILANTI MI 48197/ (313) 761-3050 48239 ATTN: RCS DATA SYSTENS/ 26032 FIVE HILE ROAD/ DETROIT HI 48239/ (313) 532-0554 48640 bOB NETZGEII./ COHPUTER TECHNOLOGY DEV./ DOW CHEHICAL CO./ 2040 DOW CENTER/ HIDLAND MI 48640/ (517) 636-1352 48804 GEORGE SARGENT/ 4961 SIOUX WAY/ OKEMOS HI 48804/ (517) 353-3187 48823 THOMAS W. SKELTON/ 315 WEST SAGINAW STREET/ EAST LANSING MI 48823/ (517) 332-4368/ (517) 351-2530 49007 ATTN: COVELL & HARWOOD CONSULTANTS/ 714 ISS BLDG./ KALM1AZOO HI 49007/ (616) 382-6665 49007 MARK T. O'BRYAN/ PRESTIGE APARmENT E/ 421 STANWOOD DRIVE/ KALAMAZOO HI 49007 49008 JACK J{. HEAGHER/ COMPUTER SCIENCE AND MATHEMATICS/ WESTERN MICHIGAN UNIV./ KALAHAZOO HI 49008/ (616) 383-0095 49269 ROGER KLOEPFER/ 7774 BROWN ROAD/ PARl1A MI 49269 49503 HEL PRUIS/ DATA PROCESSING CENTER/ GRAND RAPIDS PUBLIC SCHOOLS/ 143 BOSTWICK N.E./ GRAND RAPIDS MI 49503 49855 R. BHARATH/ 1330 NORWOOD ST. APT 6/ MARQUETTE HI 49855/ (906) 227-2605 50158 DAVID HICKOK/ R.A. ENGEL TECH. CENTER/ FISHER CONTROLS CO./ P.O. BOX 11/ MARSHALLTOWN IA 50158/ (515) 754-3923 52240 HAROLD HARTHAN/ 1912 F ST/ IOWA CITY IA 52240/ (319) 338-7092 52240 JOHN JOHNSON/ 2906 WAYNE AVENUE/ IOWA CITY IA 52240/ (319) 354-1303 52240 CHARLES LARSON/ RR 1'2/ IOWA CITY IA 52240/ (319) 351-5997 52242 DONALD 1. EPLEY/ DEPT. OF COMPUTER SCIENCE/ UNIV. OF IOWA! IOWA CITY IA 52242/ (319) 353-5605 52333 BOB WERNER/ ROUTE 3 BOX 237A/ SOLON LA 52333/ (319) 644-2657 53012 }lARK J. SEBERN/ SEBERN ENGINEERING INC/ w55 N815 CEDAR RIDGE DRIVE/ CEDARSBURG WI 53012/ (414) 375-2200 53092 W. JANSSEN/ 11541 SHORECLIFF LA./ MEQUON WI 53092/ (414) 241-5768 53115 BILL NORTON/ BORG INSTRUl1ENTS DIV./ BUNKER RAMO CORP./ 902 WISCONSIN STREET/ DELAVAN WI 53115/ (414) 728-5531 X265 53126 THOHAS L. BECK/ UNICO INC./ 3725 NICHOLSON RD/ FRANKSVILLE WI 53126/ (414) 632-6121 53141 D. T. PIELE/ UNIV. OF WISCONSIN - PARKS IDE/ KENOSHA WI 53141/ (414) 553-2231 53151 JOHN J. HJ::o:RTZ/ WISCONSIN ELECTRICAL MFG CO INC/ BOX 148/ NEW BERLIN WI 53151/ (414) 782-2340 53210 ROBERT F. JAKOB/ 2445 N. 50TB ST./ HILWAUKEE WI 53210/ (414) 445-4800 (BOHE)/ (414) 276-9200 (WORK) 53211 W. A. HINTON/ 3469 N. CRAMER ST./ MILWAUKEE WI 53211/ (414) 964-2671 (HONE)/ (414) 963-4005 (OFFICE) 53211 RICHARD LINTON/ 3027 NORTH SHEPARD AVE./ NILWAUKEE WI 53211/ (414) 332-0070 53211 BROOKS DAVID SMITH/ 4473 N. NEWHALL ST./ SHOREWOOD WI 53211/ (414) 963-6413 53214 EDWARD E. KIRKHAH/ ELECTRONIC PRODUCTS DIV./ KEARNEY & TRECRER CORP./ 11000 THEODORE TRECKER WAY/ MILWAUKEE WI 53214/ (414) 476-8300 53280 BABAK CHUBAK/ 168/ WISCONSIN TELEPHONE/ 345 N. 35TH ST./ MILWAUKEE WI 53280/ (414) 456-3000 53706 F'RED M. JACOBSON/ ACADEmC COHPUTING CENTER/ UNIV. OF WISCONSIN - MADISON/ 1210 WEST DAYTON STREET/ MADISON WI 53706/ (608) 262-~:>53 53706 PAUL C. CONPUTER DEPT./ UNIV. OF WISCONSIN/ 1210 W. DAYTON ST./ WIDISON WI 53706/ (608) 262-7784 53715 WILLIAI-1 WI 53715/ (608) 256-6789 54601 JOliN A. Cmlf'UTER UNIV. OF WISCONSIN - LA CROSSE/ LA CROSS WI 54601/ (608) 785-8029 55016 DANIEL DASSOW/ 8745 GREEN!!: AVE. SO./ COTTAGE GROVE HN 55016/ (612) 459-3293 55057 CLAYTON HAN'ALA/ CARLETON NOKTl-lFIELD MN 55057/ (507) 645-4431 X3(,Y 55101 DANIEL ETHIER/ 507 E. NEVADA I-IN 55101/ (612) 771-3281 5'il0t C][AIJ flANSI".N/ TH1\~SIlAK[N(; JH CENTlm/ ST. PAUL HN S510I! (612) 736-1384 55101 KUI CITY so 57709/ (605) 348-1090 58107 ATTN: P.S. INC./ BOX 2017/ FARGO NIl .,)8101 58501 JEFF HARLOW/ 1002 N. 4TH STREET - APT fl2/ BISMARCK NO 58501 59812 JOUN R. MARR/ COI1P. SCI. Dl:":PT./ UNIV. OF MONTANA/ MISSOULA HT 59812/ (406) 243-2883 60004 R. D. STINAJ.o'F/ 324 W. BRAESIDE DR./ ARLINGTON HTS IL 60004/ (312) 394-4000 x663 60016 MONTE JAY ItELI.lMAN/ 555 WILSON LANE/ DES PLAINES IL 60016/ (312) 635-4123 60016 !-IONTE J. MELDMAN/ 555 WILSON LANE/ D~S PLAINES IL 60016/ (312) 635-4122 60104 klCHAlID VILMUR/ 418 FREDRICK AVE./ BELLWOOD IL 60104 60137 EDWARD N. DEKKER III/ 22101 615 ELMWOOD DRIVE/ GLEN l!:LLYN IL 60137/ (312) 858-5302 60164 REGIS B. SNYDER JR/ DEPT. 470/ TUBE A2/ GTE AUTaHATIC ELECTRIC LABS/ 400 NORTH WOLF ROAD - Max 2317/ NURTHLAKb: lL 60164/ (312) 681-7100 x4327 60164 PRAKASH THATTE/ GTE AUTOMATIC ELECTRIC LABS/ P.O. BOX 2317/ NORTHLAKl!: IL 60164/ (312) 681-7090 60174 KEITH GARLAND/ AkTHUR ANDERSEN & CO./ 1405 N. FIFTH AV/ ST. CHARLES IL 60174 60196 G. w. GAUGHRAN/ NUCLEAR DATA INC./ GOLF AND MEACHAM ROADS/ SCHAUMBERG IL 60196/ (312) 884-3600 60196 DAVID R. HOPPt:/ NUCLEAR DATA/ GOLF & MEACHAM RDS/ SCHAUMBURG IL 60196/ (312) 884-3654 60201 RICHARD A. KARHUSE/ COMPUTER SCI. RESEARCH LAB./ TECH B626/ NORTHWESTERN UNIV./ 2145 SHERIDAN ROAD/ EVANSTON IL b0201/ (312) 492-5241:1 60439 RICHARD D. GEORGE/ RAS 208/ ARGONNE NATIONAL LABONATORY/ 9700 S. CASS AVENUE/ ARGONNE LL 60439 60540 EDWARD R. BYRNE/ 464 TICONDEROGA LANE/ NAPERVILLE IL 60540 60540 DAVID J. RY"PKA/ 28-401F/ BELL LABORTORIES/ NAPERVILLE IL 60540/ (312) 690-3766 60542 JOHN R. JACKSON/ 834 SHAGBARK LANE #303/ NOJ:(TH AURORA IL 60542/ (312) 840-3522 60601 MIKE COLLIGAN/ DEDICATED SYSTEHS INC./ 180 N. MICHIGAN AVE./ CHICAGO IL 60601/ (312) 372-4222 60618 THOMAS P. HOVEKE/ 3223 W. BERTEAU AVE./ CHICAGO IL 60618/ (312) 661-8017 (WORK)/ (312) 539-8747 (HOME) 60680 DAVID ~I. WEIBLE/ 203 GRANT HALL/ UNIVERSITY OF ILLINOIS AT CHICAGO CIR*/ BOX 4348/ CHICAGO IL 60680/ (312) 996-8836 61008 FRANK D. DOUGHt:RTY/ BLACKHAWK BIT SURNERS CLUB/ 325 BEACON DRIVE/ BELVIDERE IL 61008/ (til 5) 544-5206 61107 STANTON D. ERICSON/ 1816 COUNCIL CREST DR./ ROCKFORD IL 61107/ (815) 399-2943 61625 MARIAN FRQBISli! COMl'UTl!:R CENTER/ BIlADLEY UNIV./ PEORIA IL 61625/ (309) 676-7611 X468 61701 DAVID C. BRAUGHT! ILLINOIS WESLEYAN UNIVERSITY/ BLOOlHNGTON IL 61701/ (309) 556-3146 61742 LENN S. HUNT/ BOX 302/ GOODFIELD IL 61742/ (309) 965-2617 61752 JACK KOCHER/ RR Ill/ LEROY IL 61752/ (309) 962-6891 61801 DICK NORTON/ 291 COORDINATED SCIENCE LAB/ UNIV. OF ILLINOIS/ URBANA IL 61801/ (217) 333-8252 61832 SCOTT HERR/ 3819 N. VERlllLION/ DANVILLE IL 61832/ (217) 446-2319 62025 WALT PARRILL/ MID. ILLINOIS CONPUTER CO-OP/ COTTONWOOD ROAD/ EDWARDSVILLE IL 62025/ (618) 288-7268 62563 J. R. WEISTART/ 513 E. MAIN Sragt:T/ ROCHgSTER IL 62563 62906 JOE B. MONTGOMERY/ P.O. BOX 462/ ANNA IL 62906/ (618) 833-6013 63045 LARRY MUSBAl.'U/ WESTERN ELECTRIC/ 502 EARTH CITY PLAZA! EARTH CITY MO 63045 63045 CHARLES NEUMANN/ SOFTWARE ENGINEERING/ AUTOCONTROL INC./ 4284A RIVERLINE DRIVE/ EARTH CITY MO 63045/ (314) 291-8150 63110 MICHAEL w. VANNIER./ HALLINCKRODT INSTITUTE/ 510 SOUTH KINGS HWY/ ST. LOUIS MO 63110/ (314) 454-2291 63166 PETER R. ATHERTON/ DEPT. 112A/ 132 BLDG 2 - LEVEL 1/ MCDONNELL AIRCRAFT CO./ P.o. BOX 516/ ST. LOUIS MO 63166/ (314) 232-0232 63188 SUt: D. BURKLUND/ ATTN: DRXAL-TC/ ALMSA/ P.O. BOX 1578/ ST. LOUIS NO 63H~I:I/ (314) 26!S-5271 63701 LARRY LOOS/ COMPUTER SCIENCE DEPT./ SOUTHEAST MISSOURI STATE: UNIV./ CAP!!. GlRARDIl:AU 110 63701/ (314) 651-2244 64108 ATTN: DOCUHENTATION CENTER/ UNITED COMPUTING SYSTEI.fS INC./ 2525 WASHINGTON/ KANSAS CITY MO 64108/ (816) 221-9700 64468 GARY HCDONALD/ DIV. OF MATH / CS/ NORTHWEST MISSOURI STAT!!. mnv,'/ MARYVILLE MO 64468/ (816) 582-7141 65211 ATTN: ARJUN REDDY - LIBRARIAN/ HEALTH CARE TECHNOLOGY CENTER/ 137 CLARK HALL/ UNIV. OF MISSOURI! COJ.UMHIA MO 65211 65211 DAN SMlTH/ CAMPUS COI1PUTING CENTIi:R/ 103 LEFEVRE HALL/ UNIV. OF HlSSOURI-COLUMBIA/ COLUMBIA MO 65211/ (314) 882-7876 65401 GERALD P. ALLDREDGE/ PHYSICS DEPARTMENT/ UNIV. OF MISSOURI - ROLLA/ ROLLA 1'10 65401/ (314) 341-4372 66102 DAVID M. ALLEN/ 1317 CENTRAL AVE./ KANSAS CITY KS 66102/ (913) 371-&136 (WORK)/ (913) 3Bl-5588 (HOME) 66216 RUDOLF F. WROBEL/ 12725 W. 55TH TERRACE/ SHAWNEE KS 66216/ (913) 631-5131 66506 WILLIAM J. HANKLEY/ DEPT. OF COMPo SCI./ KANSAS STATE UNIV./ MANHATTAN KS 66506/ (913) 532-6352 66506 BRYAN D. HAROLD/ COMPUTING CENTER! CARDWELL HALL/ KANSAS STATE UNIV./ MANHATTAN K.S 66506/ (913) 532-5311 66506 MIKE MILLER/ COMPUTING CENTER/ CARDWJ::LL HALL/ KANSAS STATE UNIV./ MANHATTAN KS 66506/ (913) 532-6311 67203 JEFF PAUIER/ 2303 w. 1ST/ WICHITA KS 67203/ (316) 942-1988 67226 DAN c. RICHARD/ M.S. 19/ NCR! 3718 NORTH ROCK RD./ WICHITA KS 67226/ (316) 687-5228 (WORK)/ (316) 688-5074 (HO~lE) 68005 KEN RItelliE/ 1013 BLUFF ST./ BELLEVUE NE 68005/ (402) 291-7224 (HmtE)/ (402) 291-5400 (WORK) 68025 PAT SNYDER/ 1941 EAST 16TH ST./ FREMONT Nil: 68025 68134 CURT HILL/ 7535 SHERMAN DR./ mlAltA NE 68134/ (402) 471-3701 BUS./ (402) 392-2138 HOME 68503 S. RAY HUTTON/ 1714 N 31ST ST./ LINCOLN Nt: 68503/ (402) 466-0212 68588 GEOH(:F. NAr.Y./ nF.:pi. OF mup. sct.1 110 FERGUSON HALL/ II OF NEIlI~ASKA/ 1,lNCOLN NE 68')88/ (402) 472-32001 (402) 472-2402 68701 ATTN: DIRECTOR OF COMPUTER SERVICES/ NORTHEAST TECHNICAL COMMUNITY COLLEGE/ 801 E. BENJAMIN/ NORFOLK NE 6tHOl 69341 GARY J. BOOS/ 2350 CHATl:::AU WAY/ GERING NE 69341/ (308) 436-4687 70005 JOHN R. SOUVESTRE/ 211 ATHERTON DR./ METAIRIE LA 70005/ (504) 837-1882 70118 ERVING S. PFMJ/ COHPUTER LABORATORY/ TULANE UNIVERSITY! 6823 ST. CHARLES AVE./ NEW ORLEANS LA 70118/ (504) 865-5631 70808 JAN R. WILSON/ 3132 EUGENI.': ST./ BATON ROUGE LA 70808/ (504) 383-1371 73190 MINEO YAMAKAWA/ PHYSIOLOGY AND BIOPHYSICS H. s. C./ UNIV. OF OKLAHOMA! BOX 26901/ OKLAHOMA CITY OK 73190/ (405) 271-2226 13505 FRANCIS B. HAJEK! MATH !JEPT./ CANERON UNIVERSITY/ LAWTON OK 73505/ (405) 248-2200 x49 74004 J. B. KLAHN/ APPLIED AUTOMATIC INC./ 206 KB2 PRC/ BARTLESVILLE OK 74004 74102 KENNETH R. DRIESSEL/ AHOCO RESEARCH/ P.O. BOX 591/ TULSA OK 74102/ (418) 644-3551 74128 NED N. MAYRATH/ 10909 E. 3RD. ST./ TULSA OK 74128/ (918) 437-6720 74128 NED N. MAYRATH! 10909 E. 3RD ST./ TULSA OK 74128/ (918) 437-6720 74171 JACQUES LAFRANCE/' DEPT. OF MATHEMATICAL SCIENCE/ ORAL ROBERTS UNIV./ TULSA OK 74171/ (918) 492-6161 X2722 74601 MIKE BURGHER/ CONTINENTAL OIL COMPANY/ 378c N PARK/ PONKA CITY OK 74601/ (405) 762-3456 X2752 75006 RONALD DAWES/ 2211 GREEN VALLEY/ CARROLLTON TX 75006/ (214) 234-7653/ (214) 245-3200 75006 TOM EKBERG/ MS 503/ HOSTIf.K/ 1215 WEST CROSBY ROAD/ CARROLLTON IX 75006 75006 JOliN P. JENKINSON/ 2006 PETERS COLONY/ CARKQLLTON TX 75006/ (214) 245-1206 75075 GERALD PFEIFFER/ 3100 WINCHESTER/ PLANO TX 75075/ (214) 423-0597 75075 LEO PUTCHINSKI/ 3313 REGENT DR./ PLANO TX 75075/ (214) 234-7685 75080 MARVIN ELDER/ ELDER COMPUTING CORP./ 801 BUSINESS PARKWAY/ RICHARDSON IX 75080/ (214) 231-9142 75080 ASHOK D. INGLE/ P.O. BOX 2902/ RICHARDSON IX 75080/ (214) 996-2273 75080 D. W. MCCAHMISH/ 908 REDWOOD/ RICHARDSON IX 75080/ (214) 234-8432 75223 WILLIAM LYNN/ BOX 11245/ DALLAS IX 75223 75229 PHILLIP R. CALDWELL/ 3239 DOTHAM LANE/ ~LLAS TIt. 75229 75235 ATTN: LIBRARY/ HEALTH SCIENCE CENTER/ UNIV. OF TEXAS - DALLAS/ 5601 MEDICAL cra. DR./ DALLAS TX 75235/ (214) 688-2383 75235 ARNOLD H. MUECKE/ MCRC/ UNIV. OF TEXAS HgALTH SCIENCE CENTER/ 5323 HARRY HINES/ DALLAS TX 75235/ (214) 688-3936 75240 ROB SPRAY/ ARTHUR A. COLLINS INC/ 13601 PRESTON RD/ DALLAS TX 75240/ (214) 661-2928 75240 BRADLEY M. TATE/ DATA COMMUNICATIONS DIV./ HARRIS CORP./ P.O. BOX 400010/ DALLAS IX 75240/ (214) 386-2236 75401 PAUL D. HELVIeK/ 1910 LOOP 315 E. APT 248/ GREENVILLE IX 75401/ (214) 454-1226 . 76101 P. L. HUTCHISON/ PLANT MZ 2811/ GENERAL DYNAMICS/ P.O. BOX 748/ FORT WORTH TX 76101/ (817) 732-4811 X3267 77005 SCOTT K. WARREN/ ROSETTA ALGORITHMS/ 5925 KIRBY 1i215/ HOUSTON IX 77005/ (713) 528-8350 77024 WILLIAM A. MITCHELL/ 365 N. POST OAK LANE/ HOUSTON TX 77024/ (213) 686-3383 77025 JAYASHREE RAMANATHAN/ 3834 GRENNOCH LANE/ HOUSTON IX 77025/ (713) 749-3104 77036 R. L. IRWIN/ SEISCOU/ BOX 36928/ HOUSTON IX 77036/ (713) 789-6020 77036 PETE ZIEHELMAN/ HS 6404/ TEXAS INSTRUMENTS/' 8600 COUMERCE PARK DRIVE/ HOUSTON IX 77036/ (713) 776-6589 77042 WESTON W. HASKELL/ 22 BRIAR HILL DRIVE/ HOUSTON IX 77042/ (713) 789-7678 77043 ATTN: MICROPROCESSOR LABORATORIES INC./ 10690 SHADOW WOOD 1110/ HOUSTON IX 77043/ (713) 465-7559 77056 VERNON J. MALLU/ 5366 MCCULLOCH CIRCLE/ HOUSTON TX 77056/ (713) 840-7099 77058 CHARLES W. MCKAY/ UNIV. OF HOUSTON - CLEAR LAKE CITY/ 2700 BAY AREA BLVD - PO BOX 446/ HOUSTON TX 77058/ (713) 488-9386 77072 THOMAS BABJlARA/ 6512 S. BRIAR BAYOU DR./ HOUSTON IX 77072/ (713) 933-9701 77074 GARY L. BECHTOLD/ DATA 100 CO~./ 6776 SW FREEWAY #400/ HOUSTON IX 77074/ (713) 977-8833 77092 PAUL L. KELLY/ THE ANALYSTS / SCHLUMBERGERi 4120 D DIRECTOR'S ROW/ HOUSTON IX 77092/ (713) 686-5516 77092 STANLEY M. SUTTON/ RESOURCE DEVELOPt!ENT & ENGINEERING/ INTER COMP/ 1201 DAIRY ASHFORD RD.I HOUSTON TX 77092/ (713) 497-8400 WORK 77546 AnN: INTERMETRICS INC./ 4815 FM 2351 - SUITE 103/ FRIENDSWOOD IX 77546/ (713) 482-4411 77843 STANLEY M. SWANSON/ DEPT OF BIOCHEMISTRY/ TEXAS A&M UNIV./ COLLEGE STA. IX 77843/ (713) 845-1744 78209 FRANCIS A. BROGEN/ 115 RIDGEHAVEN/ SAN ANTONIO IX. 78209/ (512) 822-0230 78220 GORDON B. ALL£Y/ DIGITAL SYSTEMS/ AUTOMATIC CONTROL ELECTRONICS CO./ P.O. BOX 20264/ SAN ANTONIO TX 782201 (512) 661-4111 78291 DELL ANTONIA/ HARTE-HAWKS COMMUNICATIONS INC./ P.O. BOX 269/ SAN ANTONIO TX 78291 78704 ROBERT L. BYRNE IIlI 1114 E. OLTORF #207/ AUSTIN IX 78704/ (512) 471-3032 78704 FRANK DUNN/ 3622 MANCHACA APT 222/ AUSTIN TX 78704/ (214) 231-3423 78704 JAY· TROW/ 2200 DE VERNE/ AUSTIN TX 78704/ (512) 444-5045 78712 STEPHEN P. HUFNAGEL/ APPLIED RESEARCH LAB/ ACOUSTICAL MEASUREMENTS DIV./ UNIV. OF TEXAS/ P.O. BOX 8029/ AUSTIN TX 78712/ (512) 8)&-1351 78112 L. KIRK WEBB/ ASTRONOMY DEPT./ UNIV. OF TEXAS - AUSTIN/ AUSTIN IX 78712 78731 S. VAN ERP/ TCC CORP./ 3429 EXECUTIVE CENTER DR./ AUSTIN IX. 78731/ (512) 345-5700 78746 ROBERT PIERCE/ 3806B ISLAND WAY/ AUSTIN TX 78146/ (512) 327-3313 78751 THORNTON KEEL/ 917 E. 40TH STREET/ AUSTIN IX 18751/ (512) 452-8746 78153 JOHN ENGLAND/ 11606 OAK TRAIL/ AUSTIN IX 78753/ (512) 471-5854 WORK/ (512) 836-0375 HOME 78766 BOB ORR/ BOX 9948/ AUSTIN IX 78766/ (512) 454-4797 X426 79409 JOHN JENSEN/ DEPT. OF MATHEHATICS/ TEXAS TECH UNIVERSITY/ LUBBOCK IX 79409/ (806) 742-2571 79604 JOHN L. WEAVER/ HERALD OF TRUTH! BUSINESS DEPT./ CH~RCH OF CHRIST/ P.O. BOX 2439/ ABILENE IX 79604/ (915) 698-4370 80004 CHARLES P. HOWERTON/ 6740 YOUNGFIELD COURT/ ARVADA CO 80004/ (303) 422-6197 80004 J. RICHARD PEARSON/ 5910 FLOWER ST./ ARVADA CO 80004 80020 JIM TURLEY/ 2315 RIDGE CIRCLE/ BROOMFIELD CO 80020/ (303) 469-4778/ (303) 571-6742 80027 PAULA BARRETT/ STORAGE TECHNOLOGY CORP./ 2270 S. 88TH STREET/ LOUISVILLE co 80027/ (303) 497-7443 80123 H. JAMES SCHNELKER/ 7932 s. LAMAR COURT/ LITrLETON CO 80123/ (303) 979-8284 80202 ATtN: COMPUTING CENTER! 2211 UNIVERSITY OF COLORADO - DENVERl 1100 14TH ST./ DENY.E;R co 80202/ (303) 629-2583 PASCAL NEWS #15 80202 80221 80222 80222 80230 80302 80302 80302 80302 80302 80303 80303 80307 80401 81212 81501 82071 83401 83705 83814 84102 84112 84115 84116 84147 84601 85012 85019 85019 85019 85019 85019 85019 85019 85019 85021 85028 85201 85202 85253 85254 85257 85281 85704 85715 87002 87106 87108 87112 87115 87185 87185 87544 87545 87701 90010 90023 90024 90025 90036 90045 90045 90046 90049 9004~ SEPTEr-1BER,1979 PAGE 18 DAVID HORNBAKER/ 1020 15TH ST. IllITK/ DENVER co 80202/ (303) 573-6717/ (303) 629-2678 DENNIS SIMMS! REGIS HIGH SCHOOL/ 3539 W 50TH STREET! DENVER CO 80221/ (303) 433-8471 ARTHUR W. GOTTMANI BIOMEDICAL & HOSPITAL SYSTEMS LTD./ 2137 S. BIRCH/ DENVER CO 80222/ (303) 758-0517 R. KENT LEONARDI 3071 S. RESTER WAY! DENVER CO 80222/ (303) 499-1000 X6811/X6388 (DAY)I (303) 629-2895 OR 756-4229 (NITE) ANNE HONTGONERY/ P.O. BOX 30204/ LOWRY AFB CO 80230/ (303) 394-2904 ATTN: PASCAL DISTRIBUTIONI COHPUTING CENTER LIBRARY/ UNIVERSITY OF COLORADO! 3645 MARINE STREET/ BOULDER CO 80302/ (303) 492-8131 DONALD HALFORD! 1492 COLUHBINE AVE./ BOULDER CO 80302 JAY SCHUHACHER/ 1322 ARAPAHOE/ BOULDER CO 80302 TERRY L. SPEAR! 419 22ND STREET! BOULDER CO 80302! (303) 442-)273 PHILIP R. ZIMMERMAN JR.! 1842 CANYON BLVD. #105! BOULDER CO 80302! (303) 447-8591 ATTN: NATIONAL CENTER FOR ATItOSPHERIC*! P.O. BOX 3000! BOULDER CO 80303 PAUL H. HALENDA/ °4917 THUNDERBIRD 00. 1133! BOULDER CO 80303! (303) 499-1468 BRUCE K. RAY! POLYMORPHIC COHPUtER SYSTEMS! 1'.0. BOX 3581! BOULDER CO 80307! (303) 530-2210 L. S. HENSHAW! 2003 BEECH COURT! GOLDEN CO 80401! (303) 238-9804 PAUL LEBRETON! PSITl{ONICS GROUP SYSTEMS LAB! 502 ALLISON AVENUE! CANON CITY CO 81212 BURT E. HARTHANN! HARTMANN ENGINEERING INC.! P.O. BOX 1238! GRAND JUNCTION CO 81501! (303) 243-0776 HENRY R. BAUER IU! COMPUTER SCIENCE DEPT.! UNIVERSITY OF WYOMING! BOX 3682! LARAHIE WY 82071! (307) 766-5134 B. H. ANDERSON! E.G. & G. IDAHO INC.! P.O. BOX 1625! IDAHO FALLS ID 83401! (208) 526-1183 LAURENCE R. LANGDON! 2710 AUGUSTA ST.! BOISE ID 83705 JACK STEVE! NORTH IDAHO COLLEGE! 1000 WEST GARDEN AVE./ COEUR D'ALENE ID 83814! (208) 667-7422 DAVID L. IRVINE! MICROPOINT CORP.! 363 SOUTH 5TH EAST/ SALT LAKE CITY UT 84102! (801) 322-4065 RICH.ARD C. BRANDT! PHYSICS DEPT! UNlV. OF UTAH! SALT LAKE CITY UT 84112! (801) 581-6076 MARK 11ICHELSON! BECTON DICKINSON IMMUNOo'lAGNOSTICS! 180 WEST 2950 SOUTH! SALT LA.K.E CITY UT 84115! (801) 487-8773 RICHARD G. LYMAN! MS U7-2! SPERRY UNIVAC! 322 NORTH 2200 WEST! SALT LAKE CITY UT 84116! (80l) 539-5192 DON B. HALES! RESEARCH CENTER! KENNECOTT COPPER CORP.! P.O. BOX 11299! SALT LAKE CITY UT 84147! (801) 322-1533 FARREL OSTLER! 987 E. 2620 N.! PROVO UT 84601! (801) 375-3668 DENNIS K. BOSWELL! IBM CORP.! 4502 N. CENTRAL AVE.! PHOENIX AZ 85012! (602) 263-2005 C. R. CORLES! PMSD-P! f.ID 530! HONEYWELL! 2222 W. PEORIA AVE.! PHOENIX AZ 85019! (602) 997-3000 R. H. DOUGLAS! PMSD-P! tID 530! HONEYWELL! 2222 W. PEORIA AVE.! PHOENIX AZ 85019/ (602) 997-3000 K. A. HENZEL! PM::lD-P! MD 530! HONEYWELL! 2222 W. PEORIA AVE.! PHOENIX AZ 85019! (602) 997-3000 J. C. HUNTINGTON! Pt1SD-P! MD 530! HONEYWELL! 2222 W. PEORIA AVE! PHOENIX AZ 85019! (602) 997-3000 D. P. METZGER! PMSD-P! MD 530! HONEYWELL! 2222 W. PEORIA AVE! PHOENIX AZ 85019! (602) 997-3000 T. L. PHINNEY! FMSD-P! tID 530! HONEYWELL! 2222 W. PEORIA AVE! PHOENIX AZ 85019! (602) 997-3000 E. H. RACHLIN! PNSD-P! MD 530! HONEYWELL! 222 W. PEORIA AVE! PHOENIX AZ 85019! (602) 997-3000 w. VAUGHN! PMSD-P! MD 530! HONEYWELL! 2222 W. PEORIA AVE! PHOENIX" AZ 85019! (602) 997-3000 DAVID R. WALLACE! GTE AUTOUATIC ELECTRIC LA.BS! 11226 N. 23RD. AVE,! PHOENIX AZ 85021! (602) 995-6930 AUTHOR R. JETER! 3946 EAST ALTADENA! PHOENIX AZ 85028! (602) 996-6921 DENNIS GRAY! 1543 N. SPRUCE CIRCLE! UESA AZ 85201! (602) 833-8830 DOUGLAS w. HAWKINS! HOTOROLA HICROSYSTEHS/ 2200 W. BROADWAY (M318)! MESA AZ 85202/ (602) 962-5256 LARRY DI LULLO! DI LULLO CONSTRUCTION COMPANY! 8724 NORTH 67TH STREET! PARADISE VLY AZ 85253! (602) 991-4556 IAN LEMAIR! 5030 E. POINSETTIA! SCOTTSI)ALE AZ 85254! (602) 996-5458 JAJIlliS HENDRICKSON! 7301 E. PIERCE ST.! SCOTTSDALE AZ 85257 JANES E. HOLBROOK! ITT COURIER TERMINAL SYSTENS! 1515 WEST 14TH STREEt! TEMPE AZ 85281! (602) 275-7555 DON 11. WRATHALL! 0945 N. VISTA PLAC!::! TUCSON AZ 85704! (602) 538-3582 G. A. KOH.N! 6801 OPATAS STREET! TUCSON AZ 85715! (602) 298-7054 TOB SANDERSON! KURAL ROUTE 1 ! BOX 459! BELEN NM 87002 DENNIS S. DUNCAN! 2948 SANTA CRUZ SEt ALBUQUERQUE NM 87106! (50S) 266-0126! (505) 217-5536 ATTN: LOVELACE CENTER FOR THE HEALTH *! 5200-5400 GIBSON BLVD SEt ALBUQUERQUE NM 87108 DAVID T. SCOTTI SCOTT SYSTENS! 10701 LOMAS N.E. SUITE 114! ALBUQUERQUE Rtf 87112! (505) 293-2757 BRUCE LINK! DIVISION 1716! SANDIA LABORATORIES! ALBUQUERQUE NM 87115! (505) 264-1281 B. C. CASKEY! DIVISION 4716! SANDIA LABORATORIES! ALBUQUERQUE NM 87185 RONDALL E. JONES! DIVISION 2642! SANDIA LABORATORIES! P.O. BOX 5800! ALBUQUERQUE NM 87185! (505) 264-7462 ALBJ<:RT F. MCGIRT! 115 GLENVIEW D8...! LOS ALlU10S NM 87544! (505) 667-7750 SUE JOHNSON/ HS-540 Q-l! LOS ALAMOS SCIENTIFIC LABt LOS ALAMOS NH 87545! (505) 667-6515 KIM A. KIRKPATRICK! P.O. BOX 2790! LAS VEGAS ~"'M 87701 SANDRA DIRKS! PAWLUK ADVERTISING INC.! 3660 WILSHIRE BLVD.! LOS ANGELES CA 90010! (213) 386-1164 GEORGE A. MARTINEZ JR./ 654 1!2 S. SOTO ST.! LOS ANGELES CA 90023! (213) 262-9827 BRAJ)LEY N. YEARWOOD! TRANSACTION TECHNOLOGY INC.! 10880 WILSHIRE BLVD.! LOS ANGELES CA"90024! (213) 879-1212 CALVIN W. JACKSON! ABACUS PROGRAHMING CORP.! 12301 WILSHIRE BLVD! LOS ANGELES CA 90025! (213) 820-6955 PENNY CRANE! INSTRUCTIONAL SUPPORT GROUP! CALIFORNIA STATE UNIVERSITY! 5670 WILSHIRE BOULEVARD! LOS ANGELES CA ~0036! (213) 852-5789 ATTN: K. MICHAEL - LIBRARIAN/ LOS ANGELES SCIENTIFIC CENTER/ IBIV 9045 LINCOLN BLVD.! LOS ANGELES CA 90045! (?13) 670-8350 DAVID P. NARTIN! 9619 BELFORD AVE. #3! LOS ANGELES CA 90045 KEN SIBERZ! 1720 N. VISTA STREET! HOLLYWOOD CA 90046! (213) 874-7224 JOHN BELEW! JOHN BELEW ASSOCIATES! 11621 CHENAULT! LOS ANGELES CA 90049! (213) 476-4078 PAUL R. tGGERT! 1151 AMHEKST AV Ifl! LOS ANGELES CA 90049! (213) 826-5397 90065 90066 90067 90068 90230 90245 90266 90266 90272 90274 90274 90274 90274 90278 90291 90291 LYNN BLICKENSTAFF! SELF-REALIZATION FELLOWSHIP! 3880 SAN RAFAEL AVE.! LOS ANGELeS CA 90065! (213) 225-2471 EDWARD w. "BOLTON! 4253 MOORE STREET! LOS ANGELES CA 90066! (213) 391-9998 MICHAEL HADJIOANNOLL! SUITE 862! TICOM SYSTEMS INC.! 10100 SANTA MONICA .BLVD.! LOS ANGELES CA 90067! (213) 552-5328 MUSHA CORNFELD! 6712 HILLPARK DRIVE - 11408! LOS ANGELES CA 90068! (213) 876-6270 NORl"1 WHEELER! 11175 WOOLFORD STREET! CULVER CITY CA 90230 BOH ROOSTH! TEXAS INSTRUMENTS/ 831 SOUTH DOUGL"AS! EL SEGUNDO CA 90245! (213) 973-2571 GENE DREHER! 128-16TH PLACE! MANHATTAN BCH CA 90266! (213) 648-2345 CAROLYN A. ROSENBERG! FORTH INC.! 815 MANHATTAN AVE.! MANHATTAN BCH CA 90266! (213) 372-8493 AL&){ J. BASKIN/ 18008 SANDY CAPE OR.! PACIFIC PALSDS CA 90272! (213) 454-4960 DAVID J. GRIEP! 2204 CHELSEA RrJ! PALOS VERDES E CA 90274! (213) 648-7246 LOUIS BARNETT! 28203 RIDGEFERN CT.! RANCHO PALOS V CA 90274 JOSEPH A. O'BRIEN! 29319 .GOLDEN ~lliADOW DRIVE! RANCHO PALOS V CA 90274! (213) 377-8657 MARK L. ROBERTS! RYAN MCFARLAND CORPORATION! 609 DEEP VALLEY DRIVE! ROLL.H.ESTATES CA 90274! (213) 377-0491 TIM LOWERY! 1926 GATES AVE #2/ REDONDO BEACH CA 90278 PATRICK D. GARVEY! 0 3047! 7742 REDLANDS ST! PLAYA DEL REY CA 90291! (213) 821-5663 BARRY A. COLE! 540 RIALTO AVE.! VENICE CA 90291! (213) 396-9376 90403 90404 90503 90604 90631 90731 90746 90801 90803 90813 91011 91103 91103 91103 91107 91107 91107 91107 91125 91301 91303 91303 91311 91320 91320 91320 91326 91330 91342 91364 91367 91405 91602 91604 91724 91761 91775 91792 92021 92024 92037 92037 92037 92037 92041 92067 92093 CARROLL R. LINDHOLM/ P.O. BOX 3007! SANTA MONICA CA 90403 LLOYD RICE! CONPUTALKER CONSULTANTS! 1730 21ST STREET! SANTA MONICA CA 90404! (213) 392-5230 JACK MCDONNELL! COMPUTER cm1MUNICATIONS INC! 2610 COLUMBIA ST.! TORRANCE CA 90503! (213) 320-9101 LEE L. c. SORENSEN! 10226 VICTORIA AVE! WHITTIER CA 90604! (213) 941-3609 THEODORE C. bERGSTROM! CHEVRON OIL FIELD RESEARCH co.! BOX 446/ LA HABRA CA 90631/ (213) 694-7301 WILLIAM C. COX! 552C OLD DOCK ST.! TERMINAL IS. CA 90731/ (213) 547-4772 D. M. WILBORN! PACIFIC DATASYSTEMS! 1007 E. DOMINGUEZ ST. SUITE F! CARSON CA 90746! (213) 538-3982 RAY WEISS! CO!1PUTER CAREERS INC.! P.O. BOX 2531! LONG BEACH CA 90801! (213) 435-5651 J. F. NIEBLA/ INFOTEC DEVELOPNENT INC.! 5855 NAPLES PLAZA - SUITE 210! LONG BEACH CA 90803! (213) 433-5224 M. F. DOOK.!!:/ 1015 E 10TH ST.! LONG HEACH CA 90813 GA~ETr PAINE! P.O. BOX 895/ LA CANADA CA 91011! (213) 354-4047 (WORK)! (213) 790-3390 (HOME) JULIAN GOMEZ! 125-241! JET PROPULSION LABORATORY/ 4800 OAK GROVE DRIVE! PASADENA CA 91103! (213) 354-2112 E. N. ~rlYA! MS 125-241! JET PROPULSION LAB.! 4800 OAK GROVE DRIVE! PASADENA CA 91103! (213) 354-3251 SAMUEL M. REYNOLDS! 238 ! 601! 4800 OAK GROVE! PASADENA CA 91103! (213) 354-5311 ATTN: MICROSYSTEMS ING.! 2500 E. FOOTHILL BLVD. SUITE 102! PASADENA. CA 91107/ (213) 577-1471 G. DENNIS BARNES! BLDG lOa! M.S. 241! XEROX! 300 N. HALSTEAD! PASADENA CA 91107! (213) 351-2351 BARRY SMITH! 3343 FAIRPOINT ST.! PASADENA CA 91107! (213) 798-7246 TOM WOLFE! 2330 E. DEL f.1AR BLVD. APT 11213! PASADENA CA 91107! (213) 354-6662 (WORK)! (213) 793-4046 (HOME) LARRY SEILER! 256-80! CALIFOltNIA INST. OF TECHNOLOGY! PASADENA CA 91125! (213) 795-6811 X1879 BRUCE D. WALsH! 5904 LAKE LINDEltO DRIVE! AGOURA CA 91301! (213) 889-0529 ARI OLIVEIRA! SYSTEMS COHPUTING INTOL! 6919 ETON AVE.! CANOGA PARK CA 91303! (213) 884-6655 GARY A. RICHARDSON! BLDG 21 MS 6! LITTON AERO PRODUCTS! 6700 ETON AVENUE! CANOGA PARK CA 91303! (213) 887-2596 TOM SANDERSON! mCROSYSTEMS DIVISION! MAIL STOP 63-021 PERTEC COMPUTER CORP.! 20630 NORDHOFF! CHATSWORTH CA 91311! (213) 998-1800 X256 ATTN: TECHNICAL INFORMATION Cl."'NTER/ VENTURA DIVISION! NORTHKUP CORP.! 1515 RANCHO CONEJO BLVD.! NEWBURY PARK CA 91320! (805) 498-3131 X1050 c. HENNICK! 127 DEVIA DR.! NEWBURY PARK CA 91320 MARTIN LIPELES! AUTOLOGIC INC.! 1050 RANCHO CONEJO BLVD.! NEWBURY PARK CA 91320! (805) 498-9611 Xl73 CHARLES RIDER/ 19100 KILLOCH WAY! NORTHRIDGE CA 91326! (213) 360-3254 ALOIS GLANC! DEPT. OF OJNP. SCI.! CALIFORNIA STATE UNlV.! NORTHRIDGE CA 91330 CHARLES A. WOLFE! 13376 DRONFIELD AVE.! SYLMAR CA 91342/ (213) 367-6798 JOHN SPIKER! 5515 PENFIELD - #125! WOODLAND HILLS CA 91364! (213) 346-9108 GENE MURROW! SUITE E! 6300 VARIEL AVE! WOODLAND HILLS CA 91367! (213) 992-4425 L."F. MELLINGEK/ 13622 HART ST.! VAN NUYS CA 91405/""(213) 354-2:505 FRED WILSON! 10519 VALLEY SPRING LANE! N. HOLLYWOOD CA 91602! (213) 762-2808 STEVEN J. GREENFIELD! 4311 COLFAX AVE #226! SWDIO CITY CA 91604! (213Y 762-6560 RICHAKD DIEVENDORFF! 1040 DARFIELD AVENUE! CORVINA CA 91724 N.OBEKT L. RHODES! DEPT 1-373! LOCKHEED AIRCRAFT SERVICE co.1 P.O. BOX 33! ONTARIO CA 91761 WILLIAM Y. FUJIMOTO! SUNNY SOUNDS! 927-B E. LAS TUNAS DR.! SAN GABRIEL CA 91775! (213) 287-1811 DAN L. EISNElt/ 2801 E. VALLEY VI¥.W! WEST COVINA CA 917921 (213) 965-8865 V. L. WBERG! 1127 FLAMINGO AVE! EL CAJON CA 92021! (714) 444-5910 ROGER A. COLLINS! 1653 OillEDA ST.! ENCINITAS CA 92024! (714) 437-5586 W. H. AUSON! 7425 CAMINITO RIALTO! LA JOLLA CA 92037/ (715) 294-5944 BON.DEN COVEL II! CONTROL DATA CORP./ 4455 EASTGATE HALL! LA JOLLA CA 92037/ (714) 542-6312 K. J. HARRIS! BOX 4455! LA JOLLA CA 92037! (714) 452-9252 DENNIS NICKOLAI! CONTROL DATA CORPORATION! 4455 EASTGATE MALL! LA JOLLA CA 92037/ (714) 452-6000 KENNETH C. BONINE! 7985 ANDERS CIRCLE! LA MESA CA 92041! (714) 277-8900 X2589 LANCE A. LEVENTIlAL! EHULATIVE SYSTEMS co.! P.O. BOX 1258/ RANCHO SANTAFE CA 92067/ (714) 452-0101 J. A. LEVIN! COMMUNICATIONS DEPT.! D-003! UNIV. OF CALIFORNIA - SAN DIEGol LA JOLLA CA 92093/ (714) 452-4410 ~g~g; ~~~~~ ~E~~~~~~R'.~~H~~~N3~4~Js~~~rE~N~~! ~~S~0:~~/HS~~U~~2':~i~~WQOD CA 90302! (213) 678-3222 (WORK)! (213) 765-1146 (HOME) PASCAL IHWS #15 S E PTE 11 B E R, 1 9 7 g PAGE 19 92093 92106 92110 92110 92110 92111 TERRENCE C. ~IILLER/ C-014 A.P.I.S. Dt:PT./ UNIV. OF CALIF - SAN DIEGOI LA JOLLA CA 'Ji.U'J~1 (714) 452-3889 KENNETH o. LELANDI 3922 LIGGETI' DRIVE/ SAN DIEGO CA 92106/ (714) 225-2176 DWIGHT R. BEAN/ ACADEMIC COHPUTING COORDINATORI UNIV. OF SAN DIEGOI SAN DIEGO CA 92110/ (7111) 291-0480 X4417 OR X4201 ROBERT CALDWELLI ENIllRONHENTAL MANAGEMENT SYSTEUS/ 3045 ROSECRANS STREeT SUITE 112/ SAN otEGO CA 9211U/ (714) 223-5551 G. G. GUSTAFSONI COMPUUR SCIENCES CORP.I 2251 SAN DIEGO AVE.I SAN DIEGO CA 92110 GUY KELLY/ CUBIC WESTERN DATAl 5650 KEARNEY MESA ROAD/ SAN DIEGO CA 92111 92117 n122 92123 92127 92128 92521 92625 92626 92626 92627 92634 92634 92663 92663 92663 92663 92667 92677 92680 92680 92683 92636 92686 92691 92705 92707 92708 92713 92713 92713 92714 92714 92714 92714 92715 92805 92806 92807 93017 93017 93017 93017 93017 93021 93106 93111 93277 93407 93407 93555 94010 94019 94025 94025 94035 94043 94043 94043 94062 94086 94086 94086 94086 94086 94086 94086 94086 94087 94087 94087 94087 94087 94088 94088 94104 94104 94109 94114 94122 94131 94132 94133 94301 94301 94303 94303 94303 94303 94304 94304 94304 94305 94305 94305 94306 94510 94536 94545 94550 94596 94598 94608 94609 94611 94611 94703 94704 94705 94707 94707 94708 94720 94903 94903 94941 94941 94960 95008 95008 95014 95014 95014 95014 95030 STENE HARRISON/ 5161 COLE ST./ SAN DIEGO CA 92117/ (714) 273-5242 DAVID KUHLMAN! 6885 ROBBINS CT./ SAN DIEGO CA 92122/ (714) 453-3436 CNU. F. NmLSEN/ ALEXANDER ENGHlEl!:IUNG CO./ !H61 CHESAP~AKE DR./ SAN DIEGO CA 92123/ (714) 292-7418 F. IEMPEREAU/ BURROUGHS CORF./ 16701 W. BERNARJ.)O DR./ SAN DH:CO CA 92127 NEAL A. HJ::NDERSON/ 12561 CRESTA PLACE/ SAN DIEGO CA 92128/ (715) 487-6309 ATTN: DEPT. OF MATHEMATICS/ UNIVERSITY OF CALIFORNIA - RIVERSIDE! RIVERSIDE CA 92521 PAUL MICHAI!:L REA/ 701-1/2 BEGONIA/ CORONA DEL MAR CA 92625/ (714) 675-1977 H. W. HOOkE/ 315U LIMERICK LANE/ COSTA MESA CA 92626/ (714) 545-3011:1 WILLIAM H. SEAVER/ GLUBAL COMPUTER SYSTENS/ 3176 PULLMAN STREET #104/ COSTA MESA CA 92626! (714) 754-0292 SHAWN ~l. FANNING/ 2650 KARLA AVE #121/ COSTA MESA CA 92627/ (714) 545-5148 THOMAS M. NEAL/ BECKMAN INSTRUNENTS/ 2500 N. HARBOR l:lLVD./ FULLERTUN CA 92634/ (714) 871-4848 x 3259 VINCENT VIGUS/ FULLERTON COLLEGE/ 321 EAST CHAPMAN AVE./ FULLERTON CA 92634/ (714) 871-8000 DALE BROWN/ 164 CENTRAL SEltVICES/ FORD AEROSPACE/ EOJ:U) ROAD/ NEWPORT BEACH CA 92663/ (714) 759-5030 JOE DEVITA/ WESTERN UIGITAL COKP./ P.O. BOX 218U/ NEWPORT BEACH CA 92663/ (714) 557-3550 B08 HUTCHINS/ WESTERN DIGITAL CORJJ./ P.O. BOX 2180/ NEWPORT BEACH CA 92663/ (714) 557-3550 X335 LAlUty A. LOTITO! WESTERN DIGITAL CORPORATION/ P.O. BOX 2180/ NEWPORT BEACH CA 92663! (714) 557-3550 W. S. DORSEY/ BOX 5118/ ORANGE CA 92667 JHI GILBERT/ SYSTEMS STRUCTURING TECHNOLOGY/ 30436 NORTH HAMPTON RD./ LAGUNA NIGUEL CA 92677/ (714) 640-5222 WURK/ (114) 495-6039 BOME. DAVID S. BAKIN/ HD H151/ BASIC FOUR CORP./ 14101 MYFORD ROAD/ TUSTIN CA 92680/ (714) 731-5100 GHORGE HOMER/ 13271 NIXON CIRCLE/ TUSTIN CA 92680 MIKE CANADAY/ 15271 QUEENS.BOROUGH ST./ WES'IMINSTER CA 92683/ (714) 839-4122 FRANK BURGER/ 6750 CHAMPAGNE CIRCLE/ YORBA LINDA CA 92686/ (714) 970-0143 HARRY N. CAMPBELL/ 5721 PLACERVILLE PLACE! YORBA LINDA CA 92686/ (714) 970-7315 JOliN FRENCH/ 26712 VALPARISO DRIVE/ IHSSION VIEJO CA 92691/ (714) 768-3411 C. V. GAYLORD/ GARRETT COlU'UTER ASSOCIATES/ 18702 ERVIN LANE/ SANTA ANA CA 92705/ (714) 557-1037 JAMES F. SULLIVAN/ 1330 S. ROSEWOOD/ SANTA ANA CA 92707 W. BRYAN UENNWGTON/ 9770 LA ZAPATILLA CIR./ FOUNTAIN VLY CA 92708/ (714) 963-2368 (HOliE)! (714) 632-4079 GREGORY L. HOPWOOD/ mNICOUPUTER OPERATIONS/ SPERRY UNIVAC/ P.O. BOX C-195U4/ IRVINE CA 92713/ (714) 833-2400 OSCAR RTOS/ DEPT. 11-0775/ COHPUTER AUTOMATION/ 18651 VON KARMAN/ IRVINE CA 92713/ (714) 833-8830 X295 HARIUS TROOST/ MINICOMPUTER OPERATIONS/ SPERRY UNIVAC/ P.O. BOX C-19504/ IRVINE CA 92713/ (714) 833-2400 XIl3 LON ATKINS! 17112 ARlISTRONG AVE./ IRVINE CA 92714/ (714) 540-8340 X543 JIM KHALAF/ 17112 ARMSTRONG AVE! IRVINE CA 92714/ (714) 540-8340 RICK RAGER/ 17112 AlmSTRONG AVE./ IRVINE CA 92714/ (714) 540-8340 MARIE WALT&R/ SCIENTIFIC-TECHNICAL BOOK CENTER/ 17801 MAIN ST./ IRVINE CA 92714/ (714) 557-8324 PAUL HOLBROOK/ 103B CAMINO - MESA COURT/UCI! IRVINE CA 92715/ (714) 752-2172 JAHES YORK/ GENERAL AUTOMATION/lOSS SOUTH EAST STREET/ ANAHEIM CA 92805/ (714) 778-4800 X443 DON LEWIS/ 2880 E. HEMPSTEAD RD./ ANAHElH CA 92806 WILLIAM F. PHILLIPS/ 482 S. PASEO SERBNA/ ANAHEIM CA 92807/ (714) 998-7496 ATTENTION: DAN LAPORTE/ M.S. 72/ SANTA BARBARA RESEA.RCH CENTER/ 75 COROMAR DRIVE/ GOLETA CA 93017/ (805) 968-3511 THOHAS M. BURGER! 8URROUGHS CORF./ 6300 HOLLISTER AVE./ GOLETA CA 93017/ (805) 964-6881 x456 lWN JE}"FRIES/ 651 ARDI10RE/ GOLETA CA 93017/ (805) 964-8964 STEVE LASSNAN/ U1AGI!: PROCESSING SOFTWARE/ 5773 DAWSON/ GOLETA CA 93017/ (805) 964-4741 RAY L. ANDERSON/ CONCEPT SYSTEMS/ 6885 TRIGO rID./ ISLA VISTA CA 93017/ (805) 968-6995 P. L. SHINER-ROWE/ 218 !lARKY STRE}!;'r/ HOUN.PARK CA 93021 ATTN: USER SERVICES GROUP/ COI1PUTER CENTER/ UNIV OF CALIF - SANTA BARHARA/ SANTA BARBARA CA 93106 JIli WINSALLER/ P.O. BOX 6679/ SANTA BARBARA CA 93111/ (805) 685-1626 K. B. HOWARD/ DEPT. OF COMPo SCI./ COLLEGE OF THE SEQUOIAS! VISALIA CA 93277 R. H. DOURSON/ C.S.C. & STAT. DEPT./ CAL POLY STATE UNIV./ SAN LUIS oaIS'" CA 93407! (805) 546-1255 NEIL W. WEBRE/ DEPT. OF COl1P. SCI. AND STAT./ CALIF. POLY. STATE UNIV./ SAN LUIS OBIS. CA 93407/ (80S) 481-2969 L. w. LUCAS/ CODE 3132/ NAVAL WEAPONS CENTER/ CHINA LAKE CA 93555/ (714) 939-2836 WILLIAH E. BLUM/ SPCOMMUNICATIONS/ 1 ADRIAN COURT - P.O. :SOX 974/ BURLINGAME CA 94010/ (415) 692-560U X444 PAUL BARINA/ 404 KEHOE AVE./ HALF MOON BAY CA 94019 ARTHUR W. DANA JR./ 1670 EL CMIINO REAL/ MENLO PARK CA 94025 C. ROADS/ CO~lPUTER MUSIC JOURNAL/ 80X E/ MENLO PARK CA 94025/ (415) 323-3111 CHUCK JACKSON! MS 210-9/ NASA MillS RESEARCH CENTER/ MUfFETT l<"lELD CA 94035/ (415) 96S-6081 JEANE ABITBOUL/ SCANCOH CORP./ 19578 OLD MIDDLEFIELD WY./ MOUNTAIN VIEW CA 94043/ (415) 967-4211 D. DONAHUE/ JUHN JfLUKE M!<'G. co. INC./ 630 CLYDE AV'C./ MTN. VIEW CA 94043 CARY KORNHLD/ 1758 VILlA ST #15/ MTN. VIEW CA 94043/ (415) 966-3731 (WORK)/ (415) 967-7004 (HOHE) MICHAEL K. STAUFFER/ 3660 ALTAHONT WAY/ REDUOOD CITY CA 94062/ (408) 732-2400 (WORK)! (415) 367·-8135 (BOHE) DENNIS S. ANDREWS/ AMDAHL CORP./ 1250 E. ARQUES AVE/ SUNNYVALE CA 94086/ (408) 746-6301 MICHAEL C. ARYA! SIGNETICS/ 811 EAST ARQUES AVE/ SUNNYVALE CA 94086/ (408) 739-7700 PETER H. HAAS/ MS 203/ AMl)AHL CORP.! P.O. BOX 5070/ SUNNYVALE CA 94086/ (408) 746-7340 RAY HOLT/ SYNERTEK SYSTEMS/ISO S. WOLFE RD./ SUNNYVALE CA 94086/ (408) 988-5691 MASAHIRO HONDA/ PJ-IDAHL CORP./ 1250 E. ARQUES AVE./ SUNNYVALE CA 94086/ (408) 746-6688 PETER KOOLISH! 02-996! Al·IDAHL CORP./ 1250 EAST ARQUES/ SUNNYVALE CA 94086/ (408) 746-6364 (WOKK)/ 446-3156 (HOME) GEORGE LEWIS/ R&D/ BTl COHPUTER SYSTEHS/ 870 WEST MAUDE AVENUE/ SUNNYVALE CA 94086/ (408) 733-1122 JEFFRY L. PARKER/ 1091 CLEMATIS DRIVE/ SUNNYVALE CA 94086/ (408) 247-0814 THOMAS W. CROSLEY/ SOFTWEST/ 1675 NEW BRUNSWICK AVE./ SUNt~YVALE CA 94087/ (408) 737-1927 ALLAN B. DELFINO/ 1504 FANTAIL COURT/ SUNNYVALE CA 94087/ (408) 735-1534 PAUL MILLER/ ENGINEERING/ AV~RA TECHNOLOGY/ 1643 WRIGHT AVE./ SUNNYVALE CA 94087/ (408) 732-8218 CRAIG W. REYNOLDS/ 400 E. RKMINGTON AVE. - APT C-223/ SUNNYVALE CA 94087/ (408) 245-8106 SAMUEL SOLON/ 575 E. RElUNGTON DRIVE dUB/ SUNNYVALE CA 94087/ (408) 739-8950 ROSS It. w. PARLETTE/ CHEMICAL SYSTEHS/ P.O. BOX 358/ SUNNYVALE CA 94088/ (408) 739-4880 X2149 JEFFRY G. SHAW/ P.O. BOX 60457! SUNNYVALE CA 94088/ (408) 257-7676 (EV+WKE) R08ERT J. RAKER/ PACIFIC GAS & ELECTRIC CO./ 1 POST ST. - NO. 2200/ SAN FRANCISCO CA 94104/ (415) 781-4211 X1296 IRA SLOOODIEN/ AUTOMATED DATA EXCHANGE/ 582 MARKET STREET/ SAN FRANCISCO CA 94104/ (415) 421-8824 ERUCE W. RAVENEL/ LANGUAGE RESOURCES/ 1311 LOHBARD ST./ SAN FRANCISCO CA 94109/ (415) 928-8086 LAURA L. KING/ 330 EUREKA STREET/ SAN FHANCISCO CA 94114/ (415) 285-9804 DANIEL CARROLL/ 1709 17TH AVE./ SAN FRANCISCO CA 94122 JOHN PEMBERTON/ 3955 ARMY STREET/ SAN FRANCISCO CA 94131/ (415) 282-1387 MARK SCOTT JOHNSON/ DEPT. OF MATHEMATICS/ SAN FRANCISCO STATE UNIV./ 1600 HOLLOWAY AVE./ SAN FRANCISCO CA 94132! (415) 469-1104 MARCUS L. BYRUCK/ 448 VALLEJO ST./ SAN FRANCISCO CA 94133J (415) 956-6272 COLIN MCMASTER/ 202 RAMONA STREET HC/ PALO ALTO CA 94301 ATTN: JEANNE L. TOULOUSE - LIBRARIAN/ 02-558/ AMDAHL COPJJ./ 1250 EAST ARQUES AVENUE! SUNNYVALE CA 94301/ (408) 746-6654 MICHAEL H. GROSS/ D-317/ VARIAN ASSOCIATES/ 611 HANSEN WAY! PALO ALTO CA 94303/ (415) 493-4000 X3568 KIM R. HARRIS/lOSS OREGON AVE./ PALO ALTO CA 94303/ (415) 324-1069 HANK S. MAGNUSKI/ GAMMA TECHNOLOGY INC./ 2452 EMBARCADERO WAY/ PALO ALTO CA 94303/ (415) 856-7421 JOS.BPH c. SHARP/ K122/ VARIAN CORPORATE RESEARCH/ 611 HANSEN WAY/ PALO ALTO CA 94303/ (415) 493-4000 X4145 J. P. MARKS/ TELESENSORY SYSTEMS INC./ P.O. BOX 10099/ PALO ALTO CA 94304/ (415) 493-2626 B.. K. SUMBIT/ PALO ALTO RESEARCH LAB/ 0/5208 E/Z01/ LOCKHEI!:D! 3251 HANOVER STREET/ PALO ALTO CA 94304 LEN WEISBERG/ SYSTEMS PROGRAMMING/ BLDG 3L! HEWLETT-PACKARD COl 1501 PAGE HILL RD/ PALO ALTO CA 94304/ (415) 856-2495 ATTN: LIBRARY / SERIALS/ BIN 82/ STANFORD LINEAR ACCELERATOR CENTEa/ P.O. BOX 4349/ STANFOKU CA 9430S JOHN HENNESSY/ COMPUTER SYSTEMS LAB./ STANFORD UNIV./ STAN}"ORD CA 94305/ (415) 497-1835 M. SHAllID MUJTABA/ ARTIFICIAL INTELLIGENCE LAB/ STANFORD UNIV./ STANFORD CA 94305/ (415) 325-6359 ROY HARRINGTON/ 450 OLIVE AVE/ PALO ALTO CA 94306/ (415) 328-2709/ (415) 964-7400 X43 (WORK) STANLEY J. HUBER/ 318 STEVEN CT./ BENICIA CA 94510/ (707) 745-8089 CLEVE HART/ 546 ALTURA PL/ FREt10NT CA 94536/ (415) 792-2516 DICK VAN LEER/ 22634 FOOTHILL BLVD./ HAYWARD CA 94545/ (408) 371-6057 ATTN: LIBRARY L-53 (COPY B)/ LAWRENCE LIVERMORE LIBRARY/ P.O. :SOX 5500/ LIVERMORE CA 94550/ (415) 447-1100 GENE POWERS/ VIRTUAL SYSTEt-lS INC.! 1500 NEWELL AVE SUITE 11406/ WALNUT CREEK CA 94596/ (415) 935-4944 DAVE WALLACE/ CHROMATOGRAPHY DATA SYSTEMS/ 2700 MITCHELL DR./ WALt-'UT CREEK CA 94598/ (415) 939-2400 DAVID BATES/ 4 CAPTAIN DRIVE #301/ EMERYVILLE CA 94608/ (415) 658-2422 PETER E. DOLEMAN/ 6515 TELEGRAPH AVE. 11-22/ OAKLAND CA 94609/ (415) 654-1949 PHILIP F. MEADS JR./ 7053 SHIRLEY DRIVE/ OAKLAND CA 94611/ (415) 531-8172 DENNIS NEWTON/I KELTON CT. APT 7-G/ OAKLAND CA 94611/. (415) 655-1057 EIP:C I1ARTINOT/ 2206B JEFFERSON/ BERKELEY CA 94703/ (415) 849-2663 JOSEPH FALE'l"I'l/ 1!14') BERKELEY.WAY ,au/ BERKELEY CA 94704/ (415) 548-1192 PETE GOODEVE/ 3012 DEAKIN ST lu/ BEltKELEY CA 94705/ (415) 642-6440 WALT FRENCtl/ 820 ARLINGTON #1621/ BERKELEY CA 94707/ (415) 788-5454 DAYS/ (415) 526-3551 DANA WHEELER/ 1858 TACOMA AVENUE/ BERKELEY CA 94707/ (415) 869-4646 BLAND EWING/ 221 LAKE DRIVE/ KENSINGTON CA 94708/ (415) 525-5888 LAWRENCE A. ROWE/ DEPT. OF EE AND CS - TEOI/ EVANS HALL/ U OF CALIFORNIA/ BEltKELEY CA 94720/ (415) 642-5117 JOHN c. FKANZINI/ 65 MBRIAM DR./ SAN RAFAEL CA 94903 BILL STACKHOUSE/ 436 MILLER CREEl{ ROAD/ SAN RAFAEL CA 94903 ATTN: AYERS LOCKSHITHINC/ 227 SHORELINE HWY./ MILL VALLEY CA 94941/ (415) 383-1415 ALEXANDBR YUILL-THORNTON Il/ P.O. BOX 182/ MILL VALLtY' CA 94941/ (415) 383-7806 JUNE B. HOORE/ 32 SALINAS AVE/ SAN ANSELMO CA 94960/ (415) 472-3100 X236/ (415) 456-5889 TIM BLUM/ 768 INWOOD DRIVE/ CAMPBELL CA 95008/ (408) 988-7777 X245 HERBERT H. HOY/ 4868 ROUNDTREE DRIVE/ CAMPBELL CA 95008/ (408) 378-7191 WENDY DUBOIS/ ZILOG CORPORATION/ 10460 BUBB RD./ CUPERTINO CA 95014/ (408) 446-4666 DOUG FORSTER/ 10290 PALO VISTA RD./ CUPERTINO CA 95014 LINDA SIENER! HEWLETT PACKARD DATA SYSTEMS/ 11000 WOLFE ROAD/ CUPERTINO CA 95014 RICHARD TABOR/ ZILOG/ 10460 BUBB ROAD/ CUPERTINO CA 95014/ (408) 446-4666 KEVIN CONRY/ 23449 SUNSET DRIVE/ LOS GATOS CA 95030/ (408) 353-2748 PAS CAL NEW S # 1 5 SEPTEMBER,1979 95030 STEPHEN N. ZILLES/ KS2/282/ IBM RESEARCH! 5600 COTTLE kD/ SAN 95050 CHR1STINE t1ORlUS/ GENERAL SYSTEMS DIV./ HEWLETT-PACKARD! 5303 95051 ATTN: AMI INFORMATION CENTER/ 800 HOMESTEAD ROAUI SANTA CLARA 95051 JOHN BENITOI INTEL MAGNETICS/ 3000 OAKMEAD VILLAGE RD./ SANTA PAGE 2Q JOSE CA 95030/ (408) 256-7559 STEVENS CREEK BLVD.! SANTA CLARA CA 95050/ (408) 249-7020 CA 95051/ (408) 246-0330 CLARA CA 95051/ (403) 987-7700 95051 KAREN CAVILEl':R/ OHEX/ 2323 OWEN STREET/ SANTA CLARA CA 95051/ (408) 249-580f 95051 AL HARTl1ANN/ INTEL CORPORATION/ 3065 BOWERS AVENUE/ SANTA CLARA CA 95051/ (408) 987-8080 95051 NIKI JORDANI GRANGER ASSOCIATES! 3101 SCOTT BLVD.! SANTA CLARA CA 95051/ (408) 985-7000 95051 ROBERT S. KIRK! SOFTWARE DEVELOPNENT SECTION/ 778 BLDG. 700/ AMERICAN MICROSYSTEMS INC./ 3800 HOHESTEAD RD./ SANTA CLARA CA 95051/ (408) 246-0330 95051 DUFF KURLAND/ INFORMATION SYSTEMS DESIGN INC./ 3205 CORONADO DRIVE/ SANTA CLARA CA 95051/ (408) 249-8100 95051 JOHN NAGLE/ 3665, BENTON ST. #60/ SANTA CLARA CA 95051/ (408) 244-6675 95051 CONRAD SCHNEIKER/ ME 690/ NATIONAL SEHICONDUCTOR/ 2900 SEHICONDUCTOR DRIVE/ SANTA CLARA CA 95051/ (408) 737-5067 95051 TAZQYKI TSUNEZUW:/ TERHINAL DIVISION/ FUJITSU LTD/ 2945 OAKHEAD VILLAGE CT./ SANTA CLARA CA 95051/ (408) 727-2670 95051 FRED ZEIS!::/ DATA SYSTfJIS DESIGN/ 3130 CORONADO DRIVE/ SANTA CLARA CA 95051/ (408) 249-9353 95064 ALEC DARA-AURAHS/ DEPT. OF INFO. SCI./ APPLIED SCIENCES BLDG./ UNIV. OF CALIF. - SANTA CKUZ/ SANTA CRUZ CA 95064/ (408) 42Y-2565 95070 J. E. DOLL/ 19145 B1WOKVIEW DIl./ SARATOGA CA 95070 95112 DONALD C. DELONG/ TECHNICAL SERVICES/ INTEL CORP./ 1766 JUNCTION AVE./ SAN JOSE CA 95112/ (408) 987-8080 95118 DAVID A. KOHLER/ 1452 POJ.{TOHELO DR./ SAN JOSE CA 95118/ (408) 395-2160 X211 95123 NURUAN R. BARKER/ 5835 INDIAN AVE./ SAN JOSE CA 95123/ (408) 225-1737 95129 CHOI UISIK/ 6562 IVY LANE/ SAN JOSE CA 95129/ (408) 257-5818 95132 ANDREW HAltiUS ZIlIHERNAI'I;[/ 3422 DUTCHESS COURT/ SAN JOSE CA 95132 95133 RUNALD NAK/ 2363 BRUSHGLEN WAY/ SAN JOSE CA 95133/ (408) 259-8205 95193 JACK POWERS/ A50/029/ IBI1 CORl'./ 5600 COTTLE RD./ SAN JOSE CA 95193/ (408) 997-4110 95211 WILLIAM H. FORD/ D:t:;PT. OF HATHEHATICS/ lJNIV. OF THE PACIFIC/ STOCKTON CA 95211/ (209) 946-2347 95410 B. C. HACDONALD/ P.O. BOX 69/ ALBION CA 95410/ (707) 937-4352 95442 THo/1AS TOLLE]:o'SEN/ 4470 LAKESIDE DR./ GLEN ELLEN CA 95442/ (707) 996-5753 95452 JOE WEISttAN/ 2040 LAWNDALE RD./ KENIWOD CA 95452/ (707) 833-6477 95466 PAUL MEILLEUR/ BOX 365/ PHILO CA 95466 95476 COLEtlAN YOUNGDAHL/ 844 OAK LANE/ SONONA CA 95476/ (707) 938-4643 95540 JIM THOI·ISON/ BOX 794/ FORTUNA CA 95540/ (707) 725-4817 95662 WILLIAN A. HEITNAN/ 5262 NISSISSIPPI BAR DR./ ORANGEVALE CA 95662/ (916) 988-5262 95817 DAN EBBERTS/ 2006 57TH ST./ SACRANENTO CA 95817/ (916) 456-4689 95818 GENE GARBUTT/ 2025 28TH ST. {111L1 SACRA.'1ENTO CA 95818/ (916) 451-267l4 95826 ROBERT RESS/ 9248 VANCOUVER DR./ SACl:WIENTO CA 95826/ (916) 362-5712 95926 DAN & ROJHN BARNES/ 279 RlO LINDO AVE. NO. 7/ CHICO CA 95926/ (916) 891-1232 95926 GLENN A. BOOKOUT/ CENTRAL VALLEY 11ANAGEMENT/ 585 HANZANITA - SUITE 7/ CHICO CA 95926/ (916) 895-8321 96274 DAVID A. ROSSER/ DET 5 - 1ST Willi. WG./ PSC 115 - BOX 10977/ APO CA 96274 96821 SCOTT PLUN!(1:;TT/ 1025 KAIHOKU PLACE/ HONOLULU HI 96821 96822 LESLIE M. HIND/ NANAGEMENT SYSTENS OFFICE/ UNIVERSITY OF HAWAII/ 2425 CAl'lPUS ROAD - SL RM 10-V/ HONOLULU HI 96822/ (808) 948-8919 96827 GEORGE W. HARVEY/ PANPAC LABS/ P.O. BOX 27785/ HONOLULU HI 96827/ (808) 524-5755 96910 SAN E. l{HOADS/ FACULTY OF MATHEHATICS/ UNIV. OF GUAM/ P.O. BOX EK/ AGANA Gl1 96910 97005 JIM ENGILES/ TECHNICAL INFOR11ATION CENTER/ INTEL CORPORATION/ 3585 SW 198TH AVE/ ALOHA OR 97005/ (503) 642-6598 97005 JOlIN E. RIEBER/ 7780 SW WILSON AVE/ BEAVERTON OR 97005/ (503) 641-5806 97005 DONALD A. ZOCCHI/ 2605 S.W. 203RD AVE./ PORTLAND OR 97005/ (503) 649-9262 97034 C. R. SKUTT/ 1694 FIKCRE::;T/ LAKE OSWEGO OR 97034/ (503) 636-0901 97077 PAT CAUDILL/ HS 92-525/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (503) 645-6464 X1753 97077 GLEN FULLMER/ MS 58/126/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (503) 644-0161 X5833 Y7077 JUDY GOODl1AN/ 11S 43-042/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (5U3) 644-0161 X6091 97077 CHARLIE HONTGOMERY/ MS 58-126/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077 97077 PAULA OCHS/ US 92-801/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077 97106 JOHN L. RUIlS/ RT 2 BOX 7H/ BANKS OR 97106 97201 A. C. BROWN/ DEPT. UF PHYSIOLOGY/ SD 414/ UNIV. OF OREGON/ 611 SW CAMPUS DRIVE/ PORTLANlJ OR 97201/ (503) 225-8958 97201 DAVID ROWLAND/ 734 SW WESTWOOD DR./ PORTLAND OR 97201 97203 KOBERT LUCAS/ 6941 N. OLIN AVENUE/ POKTLAND OR 97203/ (503) 289-3457 97206 SCOTT R. TRAPPE/ 2825 S.E. 68TH/ PORTLAND OR 97206/ (503) 775-9292 97216 HARK M. HILLAlUl/ 8415 S.E. STEPHENS/ PORTLAND OR 97216/ (503) 253-4545 97223 ALAN ROSENFELD/ FLOATING POINT SYSTEMS INC./ P.O. BOX 23489/ PORTLAND OR 97223/ (503) 641-3151 97225 CHUCK FORSBERG/ R&D/ SIDEREAL CORP./ 9600 SW BARNES RD./ PORTLAND OR 97225/ (503) 227-0111 97225 PAUL HOEFLING/ 8665 S.\J. CANYON LANE {122/ PORTLAND OR 97225 97229 JERRY SEWELL JR./ SOFTWARE ENGINEERING/ ELECTRO SCIENTIFIC INDUSTRIES/ 13900 NW SCIENCE PARK DRIVE/ PORTLAND OR 97229/ (503) 641-4141 97301 SHELLEY GILES/ COMPUTEK CENTEK/ I-IILL&'<1£TTE UNIV./ 900 STATE STREET/ SALEM OR 97301/ (503) 370-6439 97330 OLE L. ANDERSON/ 4210 NW CRESCENT VALLEY DRIVE/ CORVALLIS OR 97330/ (503) 757-9878 97330 ATTN: CmlPUTER SOLUTIONS INC./ 4600 NW SULPHER SPRINGS ROM/ CORVALLIS OR 97330/ (503) 745-5769 97403 BOE DONAHUE/ FOLLOWTHlWUGH/ l1NIV. OF OREGON/ EUGENE OR 97403/ (503) 686-3555 97404 ATTN: NORTHI.J"EST HICKOCmlPUTER SYSTEHS*/ 749 RIVER AVE./ EUGENE OR 97404/ (503) 688-6874 97405 STEVEN HARTLEY/ 650 W. 27TH AVE./ EUGENE OR 97405/ (503) 344-1809 97701 JOHN & BARBARA HUSEBY/ P.O. BOX 5991/ BEND OR 97701 98007 BOB WALLACE/ NICROSOFT/ 10800 NE 8TH "819/ BELLEVUE WA 98007/ (206) 455-8080 Y8031 RICHARD W. HERMANSON/ 26625 DOVER CT./ KENT WA 98031 98033 PAUL SANSON/ TELTONE CORP./ 10801 120TH AVE NE/ KIRKLAND WA 98033/ (206) 827-9626 98055 ROBERT N. ADAMSON/ PACIFIC TECHNOLOGY INC./ 235 AIRPORT WAY/ RENTON WA 98055/ (206) 623-9080 98055 STEPHEN F. MERSHON/ 1151 OLYMPIA AVE. N.E. APT. 21/ RENTON WA 98055/ (206) 226-3891 98055 RICHARD N. TAYLOR/ 17002 159TH PL S.E./ RENTON WA 98055/ (206) 255-5856 98107 JEAN DARSIE/ DEL-D / CMO/ HONEYWELL INC./ 5303 SHILSHOLE AVE. N.W./ SEATTLE WA 98107/ (206) 789-2000 98107 DANIEL EDGAR! HONEYWELL'1NC./ 5303 SHILSHOLE AVE NW/ SEATTLE WA 98107/ (206) 789-2000 98115 ATTN: PAT 11CCLAIN/ ENGINEERING STUDIES GROUP/ NOAA! 7600 SAND PT. WAY NE / HANGER 32/ SEATTLE WA 98115 98115 PETER CARTWRIGHT/ 7340 23RD AVE NE/ SEATTLE WA 98115/ (206) 525-2756 98115 DAVID C. JENNER/ 3153 NE 84TH STREET/ SEATTLE WA 98115/ (206) 527-2018 98124 ATTN: KENT TECHNICAL LIBRARY - B/ tiS 8K-38/ THE BOEING COMPANY/ P.O. BOX 3707/ SEATTLE WA 98124 98124 ATTN: KENT TECliNICAL LIBRARY - C/ liS 8K - 38/ THE BOEING COl1PANY/ P.O. BOX 3707/ SEATTLE WA 98124 98133 RALEIGH ROAKK/ METRODATA CORP./ 2150 N. 107TH ST. SUITE 120/ SEATTLE WA 98133/ (206) 367-2100 98133 DWIGHT VANDENBERGHE/ 17541 STONE AVE. N./ SEATTLE WA 98133/ (206) 542-8370 98144 JEAN W. BUTLER! 714 LAKESIDE S. n07/ SEATTLE WA 98144/ (206) 773-0976 98146 JAMES A. lo'ORGEY/ CONFUTER RENTAL & SERVICE/ 10203 47TH AVE SW 1I10B/ SEATTLE WA 98146/ (206) 246-9330 98178 CHAl{LES A. DAl'HELS/ 10215 62ND AVE. S./ SEATTLE WA 98178/ (206) 723-2525 98195 JOHN c. CHAN/ DEPT. OF CONPUTER SCIENCE/ FR-35/ UNIV. OF WASHINGTON/ SEATTLE WA 98195/ (206) 543-2697 91:l199 BRADLEY K. GJERDING/ 2806 22ND AVENUE WEST/ SEATTLE WA 9819Y/ (206) 285-7266 98199 THONAS J. PALl-I( 2529 34TH AVE. W./ SEATTLE WA 98199/ (206) 282-2083 98225 MELVIN DAVIDSON/ COHPUTER CENTEK/ 334 BOND HALL/ WESTERN WASHINGTON UNIV./ BELLINGHAM WA 98225 98225 KENDALL STANBAUGH/ 5009 GUIDE NERIDIAN/ BELLINGHAM WA 98225/ (206) 734-9424 98370 GARY B. STEBtiINS/ VIKING TERRACE APTS. IIC/ 289 HWY. 3/ POULSBO WA 98370/ (206) 779-4174 98632 RICHAIill W. HAlULTON/ P.O. BOX 1609/ LONGVIEW WA 98632 98662 C. T. KROUSE/ 7817 NE 6YTH STREET/ VANCOUVER WA 98662 98846 ROBERT E. SANDEKSON/ DATASYST/ P.O. BOX 373/ PATEttOS WA 98846 99123 11AI\K STEPHENS/ BOX 57/ ELECTRIC CITY WA 99123/ (509) 633-1360 x491 99163 ALAN DEEHR/ NE 545 KA1lIAKEN/ PULLHAN WA 99163/ (SOY) 332-2225 99163 PAUL J. GILLIAM! P.O. BOX 2202 cst PULLMAN WA 99163/ (509) 335-6611 (WORK) 99163 ROBEItT E LORD/ COMPUTING CENTER/ WASHINGTON STATE UNIV./ l'ULI.MA."l' WA 99163/ (509) 335-6611 99164 ATTN: WASHINGTON STATE UNIV./ 3960 NUCLEAR RADIATION/ PULLMAN WA 99164 99164 J. DENBIGH STARKEY/ COMPUTER SCIENCE DEPT. / WASHINGTON STATE UNIV./ PULLMAN WA 99164/ (509) 335-4254 99164 MASAYUKI TOHIHURO/ OFFICE OF INTERNATIONAL PROGRAMS/ 108 BRYAN HALL/ WASHINGTON STATE UNIV./ PULLMAN WA 99164/ (208) 335-1773 99206 WILLIAN G. HAMl1ER/ NORTH 107 FARR ROAD/ SPOKANE WA 99206/ (509) 924-9872 99352 ATTN: COLUMBIA 11ICRO-C0l1PUTER SYSTEHS""/ P.O. BOK 725/ RICHLAND WA 99352/ (509) 94b~4509 99352 TOll HATHIEU/ BATTELLE PACIFIC N.W. LABS/ BATTELLE BOULEVARD/ RICHLAND WA 99352/ (509) 946-3711 99352 ALAN OYAMA/ AZURDATA INC./ P.O. BOX 926/ RICHLAND WA 99352/ (SOY) 946-1683 99501 DAVID CRAWFOlUJ/ CENTER FOR DISEASE CONTROL/ 225 EAGLE- STREET/ ANCHORAGE AK 99501/ (90n 271-4011 99701 TOI1 HEAD/ DEPT. OF MATH/ UNIV. OF ALASKA/ FAIRBANKS AK 99701 RA-1069 ARGENTINA JORGE LINSKENS/ LOGYCON S.A./ CHACABUCO 380 5P/ BUENOS AIRES RA-I069/ 33-6513 RA-1425 ARGENTINA ADRIAN VILLANUSTRE/ BERUT! 3429 - 14B/ BUENOS AIRES RA-1425 AUSTRALIA GEOFFREY R. GRINTON/ STATE ELECTRICITY COMMISSION OF VIC./ HOWARD STREET/ RICHMOND VICTORIA! (03) 429 1511 2000 AUSTRALIA D. A. FEIGLlN/ AUSTN.ALIA SQUARE/ P.O. BOX H143/ SYDNEY N.S.W. 2000 2000 AUSTRALIA MAURICE R. ~ruNSIE/ NETWORK COMPUTER SCIENCES Pili 69 CLARENCE STREET/ SYDNEY N.S.W. 2000/ (02) 290-3677 2001 AUSTRALIA W. J. 11ATHER/ G.P.O. BOX 3198/ SYDNEY N.S.W. 2001 2006 AUSTRALIA ATTN: BASSER DEPT. OF COMPUTER SCIENCE/ SCHOOL OF PHYSICS/ UNIVERSITY OF SYDNEY/ SYDNEY N.S.W. 2006 JURGEN HENRICHS/ DEPT OF COMPUTER SCIENCE/ UNI OF SYDNEY/ SYDNEY N.S.W. 2006 2006 AUSTRALIA IAN ROBERTS/ 403 SAMPLE SURVEY CENTRE/ SYDNEY UNIVERSITY/ SYDNEY N.S.W. 2006 2006 AUSTRALIA 2007 AUSTRALIA ATTN: DIRECTOR/ C01·lPUTER CENTRE/ NSW INSTITUTE OF TECHNOLOGY/ P.O. BOX 123/ BROADWAY N.S.W. 2007/ (02) 218 9438 2010 AUSTRALIA IAN SHANNON/ 39 STANLEY ST/ DARLINGHURST N.S.W. 2010/ (02) 31 3875 2042 AUSTRALIA ROONEY PARKIN/ 16 WATKIN STREET/ NEWTOWN N.S.W. 2042/ 692-3216 2064 AUSTRALIA BRUCE TAYLOR/ 703/4 BROUGHTON RD/ ARTAI:U10N N.S.W. 2064 2067 AUSTRALIA R. D. GUYON/ IP COHPUTER CONSULTANTS/ 7 RAILWAY STREET/ CHAl'WOOD N.S.W. 2067/ (02) 411-3522 2070 AUSTRALIA R. A. BROWNELL/ HOUSLEY COMPUTER COMMUNICATIONS PTY L*/ 358 PACIFIC HIGHWAY/ LINDFIELD N.S.W. 2070/ (02) 467 2791 2072 AUSTRALIA CARROLL HORGAN/ ASCOl1P PTY LTD/ 870 PACIFIC HWY/ GORDON N.S.W. 2072/ (02) 498-7835 2073 AUSTRALIA W. L. DENISON/ SEPP'L SOFTWARE/ P.O. BOX 199/ PYMBLB N.S.W. 2073 2098 AUSTRALIA PETER BLADWELL/ 78 ROSE AVE./ WHEELER HTS. N.S.W. 2098 2113 AUSTRALIA C.N.S. JJilMPNEyj SCHOOL OF MATHS & PHYSICS/ MACQUARIE UNIVERSITY/ NORTH RYOE N.S.W. 2113 ERNST LOOSER/ 21 KARRIL AVE./ BEECROFT N.S.W. 2119 2119 AUSTRALIA 2120 AUSTRALIA DAVID HATCH/IS HYLAND AVENUE/ W PENNANT HILL N.S.W. 2120/ 816 2211 (BUS.)/ 871 7845 (HOME) 2232 AUSTRALIA JEFFREY TOBIAS/ APPLIED MATHS AND COMPUTING DIV./ AUST. ATOMIC F.NERGY COMH. RES. EST./ PRIVATE MAIL BAG/ SjJTHERLAND N.S.W. 2232 531-0111 2')00 AlJS1'RALTA F.. 1-1. RTGlwl RTI":RV f.t ASSOC. PIT. un./ JO RF.r.F.Nr '?,'f'./ WOT,LONGONO N.S.W. 2')00 PAS CAL NEW S # 1 5 2580 AUSTRALIA 2600 AUSTRALIA 2600 AUSTRALIA 2600 26UO 1.600 2601 2601 AUSTRALIA AUSTMLIA AUSTU.ALIA AUSTRALIA AUSTRALIA 2601 AUSTKJ\LIA 2602 2602 2607 2902 3UUO 3042 3052 3052 AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTftALlA AUSTKALIA AUSTRALIA AUSTRALIA 3053 AUSTRALIA 3068 3122 3127 3131 3131 AUSTRALIA AUSTRALIA AUSTRALIA AUSTKALIA AUSTltALIA 3145 AUSTRALIA 3161 AUSTKALIA 3168 AUSTRALIA 3168 AUSTRALIA 3168 AUSTHALIA 3168 AUSTI\ALIA 316B AUSTRALIA 3168 AUSTRALIA 3168 AUSTKALIA 3173 AUSTH.ALlA 3180 AUSTRALIA 3181 3185 3191 4001 4067 4069 4350 AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA 4700 5000 5001 5001 5001 5064 5109 6000 7UOU AUSTRALIA AUSTKALIA AUSTRAL!A AUSTRALIA 7001 7001 7005 7005 7007 70ll A-lOOO A-lOlO A-2340 A-4020 B-I050 B-1160 8-1I7U B-1761 B-3030 22061 22453 B2 Y E3B G5L HEH HIG HZZ mc IDC IDe H3C H4T H9R H9R J8X J9H KOA KOA KOA KIA Kl V Kl V K2E K2H K2H K2K K2P KlL KlL KlL K8A 12S L6T L7P 188 L8S }IlJ MIR MJA mc IDH M4S NON N2C N2G N2J N2L N2L N2L N9B R3C RJE S4P S4P S7N T2V T6G TbH V3C V3N 4A2 5A3 3Al 2Ji) 3S5 lA4 3J7 3J7 3J7 3P8 INl IGI 1T9 IG6 6K2 lAO 2WO 3GO OR6 6N3 9J 1 6T7 aR6 8s9 INS oe2 3N6 3N6 3N6 3C5 3Al 3Y3 11-19 4Kl 4Kl 2Tl SA6 1M3 IH7 5s9 lJ7 IJO 2EO 4E5 4G5 3G 1 3Gl 3Gl 3P4 IP7 OW3 2H8 2H8 owa OH5 2J8 3Xl 185 4N8 AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRALIA AUSTRIA AUSTRIA AUSTRIA AUSTRIA BELGIUM BELGIUM RELGIU!! BJ:::LGIUH BELGIUM BRAZIL BRAZIL CANADA CANADA CANADA CANADA CANADA CANAUA CANADA CANADA CANADA CANADA CANADA CANADA CANAlJA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CAl~ADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA CANADA SEPTEr1BER,1979 PAGE 21 1. PIRIE/ GOULBURN C.A.E./ NCDERHOTT DRIVe/ GOULBURN N.S.W. 2580 R. BRENT/ COUPUTING RESeARCH GROUP/ AUSTRALIAN NATIONAL UNIVERSIT'f/ P.O. 4/ CANBERRA A.C.T. 2600 HALCOLM c. NEWEY/ GOHPUTER SCIENCE DEPT./ AUSTRALIAN NATIONAL UNIV./ P.O. 4/ CANBERRA A.C.T. 2600/ 81-6176 / 49-4216 G. W. GERRITY/ DEPT OF HATHE!1ATICS/ UNIV. m' NEW SOUTH WALES/ DUNTROON A.C.T. 260U/ CANBERRA 663526 N. G. SNITH/ COMPUTER CENTRE/ UNL OF NEW SOUTH WALES/ lwe/ DUNTJWON A.C.T. 2600 P. KELLEY/ AD!' SECTLON/ AUSTRALIAN TAXATION OFFICE/ LANGTON STl,Er:T/ PAKKES A.C.T. 2600 N. CORBOULU/ BRUCE HALL/ AUSTRALIAN NATIONAL UNIVERSITY/ P.O. BOX 827/ CANBERRA A.C.T. 2601 CHARLES LAYTON/ BI ELMONT VICTURIA 3127/ (05:1.) 26 3313 ATTN: SIIATTOCK & ASSOCIATES/ 79 HAHONEYS ROAU/ FOREST HILL VLCTOR[A 3131 L. P. WHITEHEAD/ AlJSTRAL"IAN ROAD RESEARCfl BOARD/ P.o. BOX 156 (BAG 4)/ NIJNAWAOING VICTulUA ]131/ 233 1211 JOHN CARPENTER/ 29 WESTGARTH ST/ EAST MALVERN VICTORIA 3145/ 50') 4909 (lIOUE) ATTN: HINI-COBPUTER SYSTEMS/ FIRST FLOOR/lOS HAl/THORN i{OAIJ/ N. CAULFIELD VICTOKIA J161 ATTN: PROGRAl-lllING MANAGER/ SWITCHING AND SIGNALLING !:IRANCli/ TELECUM AUSTRALIA RESEARCfl LA US/ 770 BLACKrlUKN iWAD CLAYTON VICTORIA 3168/ 03-5416-373 P. COUNTY/ COUP. SCI. USPT./ MONASH UNIV£l.{SITY/ CLAYTON VICTORIA 3168 W. JACKSON/ AUP CENTKAl. ADMINISTRATION/ HONASH UNIVERSITY/ CLAYTON VICTOKIA 3168 J. ROSENB£RG/ COMPo SCI. DEPT./ tlONASH UNIVERSITY/ CLAYTON VICTORIA 3168 .1'. J. TYElI.S/ CUllPUTER APPLICATION [, TECllNll~UES/ TELECU~I AUS'f. RESEARCH LAB./ 770 BLACKbURN ROAD/ CLAYTUN VICTOKIA )L68 C. s. WALLACE/ DEPT. OF COBP. SCI./ NONASIl UNIVERSITY/ CLAYTON VICTORIA 3168 C. BILLINGTON/ CSIRO/ BOX 160/ CLAYTON VICTORIA 3168/ 544-0633 LEONARD SPYKER/ 6 CABARITA COURT/ KEYSBOROUCH VICTOl.{IA 3173 ATTENTION: W. WATTS/ INFORMATION & GRAPHIC SYSTEMS/ 23 PARKHURST DRIVE/ KNOXFIELD VICTORIA 3180 HEATHER A. MACKAY/ 27 THE AVENUE/ WINDSOR VICTORIA 3'181 L. BORRETT/ 8/34 ELIZABETH STREET/ ELSTERNWICK VICTORIA 3185 IAN J. CASEY/ 274 BLUFF ROAD/ SANDRINCHAM VICTORIA 3191 ATTN: COMPUTERACC/ P.O. BOX 184/ NORTH BRISBANE QUEENSLAND 4001 D. J. YATES/ BOTANY DEPT./ UNlV. OF QUEENSLAND/ ST. LUCIA QUEENSLAND 4067/ (07) 377-2070 R. J. LONG/ 19 CEDARLEIGH ROAD/ KEmlORE QUEENSLAND 4069 F. L. IRVINE/ COHPUTER SERVICES UNIT/ DARLING DOWNS INSTITUTE OF A. E./ 1:'.0. DARLINC HEIGHTS/ TOOWOOMBA QUEENSLAND 4350 G. FARR/ DErTS. OF aATH AND COMPUTJ:;l.{ SCHNCE/ MS76/ C.1.A.E./ ROCKHAMPTON QUEENSLAND 4700 ATTN: THE 11ANAGER/ ADP SERVICES BRANCH/ PUBLIC BUILDINGS DEPT./ 15TH FLOOR S.A.C. VICTulUA SQ./ ADELAIDE S.A. 500U ATTN: THE IJlRECTOR/ WEAPONS RESEARCH ESTAllLISHHENT/ BOX 2151 GPO/ ADELAIDI:: S.A. 5001 J. B. SOUTHCOTT/ DEPT. OF COH?o SCL/ UNIV. OF ADELAIDE/ GPO BOX 498/ ADELAIDE S.A. 5001 KELVIL~ [I. NICOLLE/ DEPT. OF COMPUTING SCIENCE/ UNIV. OF ADELAIDE/ G.P.O. llOX 4913/ IJELAID£ S.A. 5001/ (08) 223-4)]J A. C. BERESFORD/ 46 CROSS IWAD/ MYRTLE I:!ANK S.A. 5064 PETER G. PERRY/ SALISBURY C.A.E./ SHITH ROAD/ SALISBURY S.A. 5109 ATTN: STATE eNERGY COMMISSION/ 365 WELLINGTON STREET/ PERTH W.A. 6000 ATTN: ELIZABETH CONFUTER CENTRE/ 256-274 ELIZABETH STREET/ HOBART TASHANIA 7000 ATTN: EDUCATION DEPT./ G.P.O BOX 169B/ HOBART TASI1Al~IA 7001 ATTN: PROGIW1l'1ERS/ COHPUTING CENTRE/ UNIV. OF TASMANIA/ GPO BOX 252C/ TASI1ANIA 7001/ 23 0561 X660 ATTN: INFORMATION SCIENCE CLUB/ DEPT. OF INFO. SCI./ UNIVERSITY OF SANDY BAY TASMANIA 7005 JOHN PARRY/ 10 B1WADWATERS PDE./ SANDY BAY TASHANIA 7005/ 25 2':133 NIGEL WILLIAMS/56 RIALANNAH RD/ MOUNT NELSON TASHANIA 7007 A. J. W. HARRISON/ FAIRHAVEN/ AUSTINS FERRY/ HOBART TASMANIA 7011 MICHAEL ISTINGER/ SCHALT£RLAGERND 54/ WHN A-I000 WALTER BOLTZ/ DIE ERSiE OSTERREICHISCHE/ SPARKASSE (AST. INFORHATIK)/ NEUTORGASSE 4/ WIEN A-I0lD/ 0222/66 Ib 37/290 HEINZ STEGBAUER/ HTL/ TECHNIKERSTR. 1-5/ MODLING A-2340 KARL PRAGERSTORFER/ GES. F. AUT. SYSTEME/ RAINERSTRASSE 23A/4/ LINZ A-4020 PIERRE VAN NYPELSTEER/ UNIVERSITE LIBRE DE AVENUE ROOSEVELT 50-CPI81/ BRUXELLES B-1050 ATTN: GERBER SCIENTIFIC EUROPE S.A./ RUE E. STEENO BRUXELLES B-1160 ALAIN PIROTTE/ MBLE/RESEAKCH LABORATORY/ AVENUE VAN 2/ BRUXELLES B-1170/ 673.41.90/ 67].41.99 RONALD J. FAIDH:I{Y/ KLEISTRAAT 31/ BORCHTLOMBEEK B-1761 P. VERBAETEN/ TOEGEPASTE WISKUNDE EN PROGRAHMATIE/ KATHOLIEKE muv. LEUVEN/ CELESTIJNENLAAN 200-A/ HEVEKLEE -LEUVeN \)-303U PIERRE J. LAVELLE/ RUA POMPEU LOUREIRO NO 120 APT 602/ RIO or: JANEIRO COPACABANA 22061/ :1.36.41.81 GASTON H. GONNET/ DEPTO DE INFORi>1ATICA P.U.C./ RUA H. DE SAO VIC£NTE 209/ RIO DE PETER GROGONO/ 73 ROXTON CRESCENT/ HONTREAL WEST QUEBEC/ (514) 879-4251 (DAY) STUART LYNNE/ 315A EV£RGREEN DR./ PORT MOODY B.C./ (604) 939-2757 JACK DODDS/ 341/ BEDFORD INSTITUTE OF UCEANOGRAPHY/ P.O. BOX 1006/ DARTI10UTH N.SCOTIA BlY 4A2 D. G. BURNLEY/ COIWTROLLERS - I.U.C./ ROO:1 001/ UNIV. O}' NEW !lRUNSWICK/ E)B 5A3 JEAN BOISVERT/ SERVICE INFORMATIQUE/ UNIVEKSITE DU QUEBEC A RHlOUSKI/ 300 I{Vl0USIKI QUEBt:C G5L 3A1/ (418) 724-1454 WERNER }'EKCH/ 2300 ST. MATHIEU 111401/ MOlnREAL QUEBEC HEH 2J8/ (514) 932-0256 U. MICHEL COURCHESNE/ ll47 VALADE/ HONTREAL QUEBEC lUG 3S5/ (514) 324-5694/ (514) 281-8362 BICHEL LourS-SEIZE/ HYDRO-QUEBEC/ 7S OUEST DORCHESTER/ MONTREAL QUEBEC H2Z lA4/ (514) 285-1711 X8827 H3C 3J7/ (14) 343-76b2 PIERRE DESJA!UHNS/ INFOIU1ATIQUE/ UNIVERSITE DE MONTREAL/ C.P. 6128 SUCC "An/ HONTREAL GUY LAPAUiE/ DEPT. D'INFORMATIllUE/ UNIVERSITE DE MONTREAL/ C.P. 6128 / SUCC "A"/ QUEBEC H3C 3J7/ (514) 341-7302 LUC LAVOIE/ DEPT. I. R. 0./ UNIVERSITI<: DE JlONTREAL/ C.P. 6128 SUCCURSALE A/ nONTKEAL QUEI:lEC lIJC 3J7/ (514) 7J7-370U YVES MENMUJ/ INFORi>1ATIQUE/ UNIVERSITE DU A MONTKEAL/ B.P. 8888/ MONTREAL QUEBEC H3C 3P8/ (514) 2l)i::!~4948 lL.\RY SUTTON/ A.E.S. DATA LTD.! 570 RUE 110NUEAL QUEBEC H4T liH/ (514) J41-54JO x301 GEORGE ~1ACK/ ENGI:-lEERING DEPT./ CENTRAL DYNAMICS LTD./ 147 HY~1US BLVD./ POINTE CLAIKE QUl':lIEC 1I9R IGl! (514) 697-0810 PETER ROWLEY/ 178 BRAEBROOK AVE/ POINTE CLAIRE QUEBEC H9R IT9/ (514) 697-1898 R. H. YOUNG/ GAATS 2 PROJECT OFFICE/ ATC SIl1ULATION CENTRE/ TRANSPORT CANADA/ 45 SACRE COEUR BLVD./ HULL QUEBEC J8X lC6 (819) 997-38813 GENE MYLES/ 248 BOURGEAU CR. 5./ AYLNER QUEBEC J9H 6K2/ (819) 684-8651 G. X. AMEY/ WGI CORP./ RR 2/ AIJIONTE ONTARIO KOA lAO/ (613) 256-1338 ROBERT L. FILLMORE/ R.R. 2/ OSGOODE ONTARIO KOA 21010/ (613) 821-2216 KENNETH G. SlllTH/ BOX 193 - 115 PINE STREET/ STITTSVILLE ONTARIO KOA 3GO/ (61]) 596-5217 DAVID WARD/ DEPT OF EE - COHPUTER GRAPHICS/ BLDG 50/ NATIONAL RESEARCH COUNCIL/ OTTAWA ONTARIO KiA Ol.{6 W. BRUCE FOULKES/ 2719 NORBERRY CR./ OTTAWA ONTARIO KIV 6N3/ (613) 746-4353 DAVID J. HARRISON/ HARRISON WILLIAHS AND ASSOCIATES/ 1085 CAHILL DR. W/ OTTAWA ONTARIO KIV 9Jl/ (613) 521-61:112 ATTENTION: DONALD LINDSAY/ DYNALQGIC CORPORATION LIMITED/ 141 BENTLEY AVENUE/ OTTAWA ONTARIO K2E 6T7/ (613) 226-1)133 R. T. M:lORE/ PRIOR DATA S£RVICES/ 16 CREDIT UNION WAY - SurTE 301/ NEPEAN ONTARIO K2H 8L{6/ (613) 820-7235 LUCIEN POTVIN/ CANADIAN MARCONI COMPANY/ 1150 MORRISON DRIVE/ OTTAWA ONTARIO K2H 8S9/ (613) 820-9760 A. SEWARDS/ 34 SELWYN CRES./ KANATA ONTARIO K2K INS/ (613) 592-5512 KEN LEESE/ MOBIUS SOFTWARE LIMITED/ 251 COOPER STREET/ OTTAWA ONTARIO K2P OG2/ (613) 238-4727 ATTN: REFERENGE ROUM/ COMPUTING AND IN:!!'. SCI. / QU£EN'S UNIVERSITY/ KINGSTON ONTARIO K7L 3N6 ROGER RATRBUN/ COHPUTING CENTRE/ QUEEN' 5 UNIV./ KINGSTON ONTARIO KlL 3N6/ (613) 547-327 3 R. D. TENNENT/ DEPT. OF COJWtlTING AND INFORHATION SC*/ QU£EN'S UNIVERSITY/ KINGSTON ONTARIO KlL 3N6/ (613) 547-2645 THOHAS MACKENZIE/ 270A ESTHER ST./ pENBROKE ONTARIO K8A 3C5 F. R. SKILTON/ COJ1PUTING CENTRE/ BROCK UNIVERSITY/ ST. CATHERINES ONTARIO L2S 3Al/ (41&) 688-2533 ROBEKT WILSON/ COMSHARE LTD/ 2 INDELL LANE/ BRAMALEA ONTARIO L6T 3Y3/ (416) 791-2525 H. RISTITS/ ALLIED ELECTRONICS CO./ 2121 FARNAH PLACE/ BURLINGTON ONTAKIO L7P 11019/ (416) 335-28Ul ALLAN LEECHAN/ ACADEMIC COJ1PUTING SERVICES/ tlCMASTER UNIVERSITY/ HAMILTON ONTARIO L8S 4Kl/ (416) 525-9140 X470L N. SOLNTSEFF/ DEPT. OF APPLIED HATH./ MC11ASTI!:R UNIVERSITY/ HAMILTON ONTARIO L8S 4Kl/ (416) 525-9140 X46H9 J. W. BAKER} 73 SHIER DR./ SCARBOROUGH ONTARIO MlJ 2T1/ (416) 446-4751 HIKE WARDALE/ HUNTEC ('70) LTD./ 25 HOWDEN ROAD/ SCARI>OROUGH ONTARIO MlR 5A6/ (416) 751-8055 C. J. WILLIA1IS/ INl"OPRO LTD/ 9 CLINTWOOD PLACE/ DON MILLS ONTARIO M3A IM3/ (416) 449-1510 BRUCE DAVIDSON/ IJEPT. 806/ IBM CANADA LABORATORY/ 1150 EGLINTON AVE. EAST/ IJON HILLS ONTARIO 113C 1H7/ (416) 443-3162 PEDRO BARROS/ QVAAC8 INTERNATIONAL INC/ 4800 IJUFFERIN ST/ DOWNSVIEW ONTARIO N3H 5S9/ (416) 661-5088/ (416) 661-886\) CHARLES A. ROYNTON/ 18 MILLWOOD RD APT 3/ TORONTO ONTARIO M4S lJ7/ (416) 487-7091 ROBERT J. ENNS/ BOX 808/ FOREST ONTARIO NON lJO/ (519) 873-2529 RON NORMAN/ 109 HARCOURT CR./ KITCHNER ONTARIO N2C 2EO PAUL J. HOTZ/ KITCHENER-WATERLOO l{ECORD/ 225 FAIRWAY ROAD/ KITCHENER ONTARIO N2G 4E5/ (519) 579-2231 F. A. CELLINI/ NCR CANADA LTD./ 580 WEBSTER ST. N/ WATERLOO ONTARIO N2J 4G5/ (519) 884-1710 X196 F. D. BOSWELL/ CONPUTER SYSTEMS GROUP/ UNIV. OF WATERLOO/ WATERLOO ONTARIO N2L 3Gl/ (519) 885-1211 K. HARRISON/ DEPT. OF COMPUTING SERVICES/ UNIV. OF WATERLOO/ WATERLOO ONTARIO N2L 3Gl/ (519) 885-1211 JAMES A. SMITH/ DEPT. OF COMPUTEK SCIENCE/ UNIV. OF WATERLOO/ WATERLOO ONTARIO N2L 3Gl/ (519) 8135-1211 X2681 DAVID R. BROWN/ CANTERBURY COLLEGE/ CRANMER HOUSE/ UN IV • OF WINDSOR/ WINDSOR ONTARIO N9B 3P4/ (519) 256-81366 NORMAN DIHOCK/ 10 EDMONTON ST. SUITE 409/ WINNIPEG MANITOBA R3C IP7 RICHARD GORDON/ COMPUTER MEDICINE S108/ UNIV. OF MANITOBA! 753 MCDERMOT AVE./ WINNIPEG MANITOBA R3E 01013 DAVID L. COLE/ 2161 SCARTH ST./ REGINA SASK. S4P 2H8/ (306) 565-3949 ROBERT D. NELL/ RESEARCH & PLANNING/ SASK CONF/ 2161 SCARTH ST./ REGINA SASK. s4p 2H8/ (J06) 565-3951 ROBEI{T N. KAVANAGH/ UNIV. OF SASKATCHEWAN/ SASKATOON SASK. S7N OWO/ (J06) 343-2638 CARL RICHARDS/ 403-635 57TH AVE SW/ CALGARY ALBERTA T2V OH5/ (403) 253-4057 ATTN: LIBRARY/ PERIODICALS SECTION/ UNIVERSITY OF ALBERTA/ EDMONTON ALBERTA T6G 2J8 BASIL- HEDDINGS/ 6508-127TH STREE;r/ EDMONTON ALBERTA TbH 3Xl/ (403) 434-36/8 ATTN: BETA SYSTEMS LTO./ 1760 KINGSWAY AVE./ PORT GOQUITLAH B.C. V3C IS5/ (604) 687-1142 KIM WTU.IAMS/ Sl!TTP. 101/ VALLEY SOfo'n~ARF, TNC.I 7R1R (,1'1-' ~T.! Fnn~~'~R.V ll,r, I"W 1,".'1I i"nr,i ~?!c_{171,1 PASCAL NE\~S VSA lA6 CANAIJA V5A 156 V6E IPS V6H lK8 V6? 552 V6T 1WS V6T lWS V]R 4L6 V8W 2Y2 95112 CANADA CANAllA CAN"ADA CANAllA CANADA CANADA CANADA CANADA CANADA COLOlllIIA DK-1606 DE[\I11AlliC DK-2000 DENllAHK DK-2500 DENHARK OK-2800 DEl't1-1AlUC DK-3600 DK-800D OK-8000 DENHARK DK-8200 SF-00250 SF-00400 r'INLAND SF-20SUO fINLMD SF-3350lJ FINLAND SF-3372a FINLAND SF-339QO F-181S0 F-781S0 F-91710 F-9L410 FINLAND FRANCE FRANCE FRANCE FRANCE 1)-1000 GE1ZHANY 1)-1000 GERHANY D-I000 GERHANY 0-2000 GEilllANY D-2000 GERMANY D-280Q GEH.M.A.L~Y 0-3000 GERHfu\lY D-4790 D-4790 D-5000 D-5100 D-6236 GERMANY GERMANY GERMAJ.'lY GERNANY GERHANY 1.>-6450 GERNANY 1)-7000 G£RHANY 1)-7000 GERllANY D-7000 GERMANY 1)-7406 GERHANY 1>-7500 GERllA.tH 0-8000 GERMANY D-8000 GERMANY 0-8000 GERMANY 0-8000 GERMANY D-8000 GERNANY D-ci012 ))-8046 ))-8520 411 001 560 003 560 012 560 020 49512 1-2OCJOO 1-20010 1-20133 1-50100 177 244 361 560 730 812 04-01 N-2007 N-3290 N-3600 N-7034 SEPTU1BER,1979 #15 v3T lY8 CANADA GERlIANY P AGE 2 2 BARRY DASHER/ DYNAMIC CONTROL SYSTEMS LTD./ 13662 104A AVENUE SUITE 204/ SURREY B.C. V3T lY8/ (604) 585-0655 DAVE STEVENS/ 1080 SHERLOCK AVE./ BURNABY B.C. V5A 1A6/ (604) 298-9255 ROGER TOREN/ COHPUTING CENTRE/ SIMON FRASER UNlV./ BURNABY B.C. V5A 156/ (604) 291-4632 DAVID GI,EER/ 108-1270 BURNABY ST./ VANCOUVER B.C. V6E IP5/ (604) 68t!-3993 DAVID HARRIS/ 1396 W. 11TH AVE. fl7/ VANCOUVER B.C. v6H lK8 CHAB.LES TH.OHPSON/ 7339 W. BOULEVARD/ VANCOUVER B.C. V6P 5S2/ (604) 261-6702 BRUCE JOLLIFFE/ CONPUTING CENTRE/ UNIV. OF lllUTISH COLUMBIA/ VANCOUVER B.C. V6T 1W5/ (604) 228-3938 VINCENT MANIS/ DEPT. OF CQHP. SCI./ UNIV. OF ilRITISH COLUHBIA! VANCOUVER B.C. v6T lW5/ (604) 228-6537 D. E. SHAW/ 4371 PATTERDALE DRIVE/ N.VANCOUVER B.C. V7R 4L6/ (604) 988-2181 h.l\'NK UNIV. OF VICTORIA/ P.O. BOX 1700/ VICTORIA B.C. V8W 2Y2/ (604) 477-6911 CALUl1ET SAN JOSE CA 95112/ (408) 297-9334 EHPAQUeS/ 1189/ HEDELLIN/ 770355 NIELSEN/ BC NOl\.DISKBROWNBOVERI AlS/ VESTER FARIMAGSGADE 7/ COPENHAGEN V UK-1606/ 45 1 156210 X374 TISCHER/ INFOTEKNIK/ SDR. FASANVEJ 49/ CuPENHAGEN :F DK-2000 JAN LAUGESEN/ I/S DATACENTRALEN AF 1959/ RETORTVEJ 6/ VALBY DK-2500/ (01) 46 81 22 PER GOEBEL/ RAEVEHOJVEJ 36-1204/ LYNGBY DK-2800 MOHENS GLAD/ STRANDHOJEN 25/ FREDERIKSSUND DK-3600/ 03-313959 ATTN: RECAU COPY 1/ NY HUNKEGADE/ AARHUS C DK-BUOO/ 06-128355 ATTN: RECAU COPY 2/ NY MUNKEGADE/ AARHUS C. DK-8000/ 06-12 83 55 PEDER NEDEBOL NIELSEN/ LABORATORIET FOR GEOFYSIK/ FINLANDSGADE 6-8/ AARHUS N DK-8200 ATTN: Dl:':PT. OF CONPUTER SCIENCE/ UNIVERSITY OF HELSINKI/ TUKHOUlMKATU 2/ HELSINKI 25 SF-00250 HEIKKI SANTAVVORENTIE IB 18/ HELSINKI SF-OQ400/ 358 0 644306 CtNT&E/ UNIVERSITY OF TURKU/ TURKU 50 SF-20500/ 912-335599 X2BO ILMARINKATU 42 A 15/ TRE 50 SF-33500 Rl:':IJQ OPISKELIJANK. 4 E 2'75/ TRE 72 SF-337Z0 ~~:L~~:~~~~~:~;~ N~. 5~0;~~R~H:~N!~-;~j~~50 32 BIBLWIllE!)UEI BP 105/ LE CHESNAY F-78150 SNPE/ BP NO 2/ VERT-LE-PETIT F-91710 GERALD HASPERD/ 5 DES CLOSEAUX/ VILLE F-92410 ALBKECHT BIEDL/ INSTITOT FUR SOFTWARE/ l.lV-GRUNDAUSBILDUNG/ TECHNISCHE UNIVERSITAT BERLIN / VSH 5/ OTTO-SUHR-ALLEE 18/20 BERLIN 10 D-1000/ (030) 314-4891 MICHAEL TEPPER/ LIMASTR. 1/ BERLIN 37 D-1000/ (030) 801 21 52. LOTHAR HAl1MERL/ HORNSTR 12/ BERLIN 61 0-1000/ 0]0 786 2235 MANUEL MALL/ BISMARCKSTR. 44/ HAHBURG 19 D-2000 ROLF SCHlJ}1ACHER/ SCS GMBH/ OEHLECKERRING 40/ HAMBURG 62 D-2000 JAN KEISER/ EISLEBENER STR. 37/ BREMEN 41 D-2800/ 0421 / 538 2834 (WORK) 91 D-3000 AUruTH FISCHER/ REGIONALES RECHENZENTRUM/ WUNSTORFER STR. MICHAEL KALICINSKY/ BIBLIOTHEK ES/ NIXDORF AG/ PADERJ:lOH.l'l D-4790/ 05251-200439 ERNST WALTER AASCHNER/ EE2/ ENTWICKLUNG FUERSTENALLEE D-4790 DIETRICH KREKEL/ RECHEN ZENTRUH/ UNIVERSITAT ZU KOLN/ ROBERT KOCH KOLN 41 D-5000/ 0221/478/5587 W. J. GRODDE/ PDV 1M IRT/ RWTH - AACHEN/ SOMHERFELD STR. 54 - BLOCK 54/ AACHEN D-5100/ (0241) 80 7490 GERHARD BLANKE/ POSTBOX 5107/ 'ESCHBORN D-6236/ (06198) 32448 VOLKER ASSHUS! INST. FUER WIRTSCHAFTSINFORl1ATIK/ TH-FONTANE-STRASSE 20/ UANAU 1 D-6450 ATTN: BIBLIOTHEK/ INSTITUT FUER IN"FORMATIK/ UNIVERSITAET STUTTGART/ AZENBERGSTRASSE 12/ STUTTGART 1 WALTER WEHINGER! LANGUAGES AND PROCESSORS GROUP/ RECHENZENTRUM/ UNIVERSITAT STUTTGART/ PFAFFEN\\'ALDRING 0711-784 2507 GERHARD RECHEL/ RECHENZENTRUM/ UNIVERSITAET STUTTGART/ PFAF~'ENWALDRING 64/ STUTTGART-80 D-7000 ATTN: BIBLIOTHEK/ ZEt;TRUH FUR DATAGAVERARBEITUNG/ UNIVERSITAT TUBINGEN/ TUBINGEN 1 D-7406 LUCIEN FEIEREISEN/ HAID-&-NEU-STR. 16 / W 81/ KARLSRUHE 1 D-7500 ATTN: GESELLSHAFT FUER SOFTW'ARE-ENGIN*/ KARESTR. 60/1/ HUENCHEN 2 D-8000/ (089) 555 234 ERWIN ZEDNIK/ ZIEBLANDSTR. 13/ MUENCHEN 40 D-8000/ 289961 NATIONAL SElUCONDUCTOR GMBH/ 808 FUERSTI£NFELOBRUCK! HUNCHEN n-8000 .CAlJH!'CCKSTKA"" 10/ I-NNICH 71 D-8000/ (081) 755-3647 DEPARTMENT D AP GE/ SIEMENS AG/ OTTOHAHN RING 6/ HUNICH 83 D-8000/ 089-722-61276 INDUSTRIEANLAGEN-BETRIEBSGESELLSCHAFT*/ EINSTEINSTRASSE/ OTTOBRUN ))-8012/ 089/60082363 G:-GOERz/"Riic/ u;,ivi'RS:[TAiiTP~~~~~~:~~'Ni~~g'I~R~;~~~~'. O~;-~ii1~~~N INDIA INDIA INDIA INDIA ISRAEL ISJ.tAEL ITALY ITALY ITALY ITALY JAPAN JAPAN JAPAN JAPAN JAPAN JAPAN MALAYSIA HEXICO MEXICO MEXICO NEW ZEALAND NEW ZEALAND NEW ZEALAND NEW ZEALIu'W NEW ZEALAND NEW ZEALAND NEW ZEALAND NEW ZEALAND NEW ZEALAND NEW ZEALAND NORWAY NORWAY NORWAY NORWAY NORWAY NORWAY PERU 00901 POLA~D SOUTH AFRICA SOUTH AFRICA 0001 SOUTH AFRICA 0001 SOUTH AFRICA 1500 SOUTH AFRICA 1610 SOUTH AFRICA 2000 SOUTH AFRICA 2000 SOUTH AFRICA 2000 SOUTH AFRICA 2001 SOUTH AFRICA 2092 SOUTH AFRICA 2104 SOUTH AFRICA 2146 SOUTH AFRICA 2192 SOUTH AFRICA 2193 SOUTH AFRICA 2195 SOUTH AFRICA 4001 SOUTH AFRICA 4001 SOUTH AFRICA 60UO SOUTH AFRICA 7600 SOUTH AFRICA S-100 00 SWEDEN S-100 44 SWEDEN 5-126 11 SWEDEN S-126 12 SWEDEN S-163 00 SWEDEN S-I71 21 SWEDEN 5-175 86 SWEDEN S-195 00 SWEDEN S-402 20 SWEDEN S-411 35 SWEDEN S-440 74 SWEDEN S-442 00 SWEDEN S-581 83 SWEDEN S-603 78 SWEDEN ))-8520/ 09131/85 7410 SYSTEMS RESEARCH INSTITUTE/ 6 PARVATI VILLA ROAD/ PUNE 411 001 DEVI PARK EXTN./ BANGALORE 560 u03/ 31011 CENTRE FOR THEORETICAL STUDIES/ INDIAN INSTITUTE OF SCIENCE/ .8ANGALORE 560 012/ 34411 X266 & X268 SUBIW!ANY:AMS:WA}!Y TEMPLE STREET/ KIMAR PARK WEST - NO.6 II FLOOR/ BANGALORE 20 BANGALOJ{E 560 020 HEBREW UNIVERSITY OF JERUSALEM/ JERUSALEM/ 02-32011/280 P.O. BOX 22/ PETACH-TIKVA 49512/ 53054 DI CIBERNETICA/ VIA VIOTTI 5/ MILANO 1-20000 ANTONIO CICU/ HONEYWELL INFORMATION SYSTEMS ~ ITALY/ PREGNANA }1ILANBSE/ MlL.A.NO 1-2001.01 02/ Y3UY4 11 SIANLUIGI CASTELLI/ INSTITUTO DI CIBERNETICA/ VIA VIOTTI 5/ MILANO 1-20133 ATTN: INSTITUTO NAZIONALE D1 OTTICA! FIRENZE 1-50100 TOSHINORI MAENO/ 1-43 SEKI-HACHI/ NERIMA-KU TOKYO 177/ (03) 726-111 X3298 s. TAKAGI/ HIRADO-CHO 1 - TOTSUKA-KU/ KANAGAWA 244 TOSHIHIKO FUJIWARA/ NIPPON HINI-COl1PUTER 2165 MOCH1DA/ GYODA CITY SAITAHA 361/ 0485-54-716l NOBUKI TOKURA/ DEPT. OF INFORMATION AND SCI*/ OSAKA UNIVERSITY/ 1-1 MACHlKANEY'AMAi TOKONAKA 560/ 06 (856) 1151 X3245 A. E. TADASHI/ FAC. OF ENGINEERING (2 HIROSHIMA UNIVERSITY! SENDA-MACHI 3-8-2/ HIROSHIMA 730 KAZUO USHDUIA/ DEPT OF COHP. SCI. AND ENGR./ KYUSHU UNIVERSITY/ 36 HAKOZAKI/ HIGASHI-KU FUKUOKA 812/ 092-641-1101 X3185 LAURIE DAVIES VALLENTINE/ JALAN PARRY/ 10 FLOOR ORIENTAL PLAZA/ KUALA LUMPUR 04-01 JOSE I. KAZA/ DEPARTAHENTO DE SISTEHAS/ UNIV. AUTONOMA HETROPOLIT~A/ P.O. BOX 16-306/ MEXICO D.F./ 382-5000 X215 ATTN: IIMAS BIBLIOTECA/ UNIVERSIDAD NACIONAL AUTONAMA DE HEXl*/ APDO. POSTAL 20-276/ MEXICO 20 D.F./ (905) 548-5465 JOSE R. ZUBIETA/ UNIDAD DE COMPUTO/ EL COLEGIO DE MEXICO/ CAMINO AL AJUSCO 1120/ MEXICO 20 f).F./ 5-68-60-33 X393 JOHN 11EDICAL LABORATORY/ P.O. BOX 4120/ AUCKLAND/ 778-339 x49 ATTN: NEW ZEALAND ~UCROCOMPUTER CLUB/ C/O SECRETARY/ P.O. BOX 6210/ AUCKLAND 1 ATTN: PROCESSOR ENTERPRISES LTD./ P.O. BOX 31-261/ AUCKLAND 9 ATTN: THE DIRECTOR/ Cm1PUTER CENTRE/ UNIVERSITY OF CANTERBURY/ PRIVATE BAG/ CHRISTCHURCH R. B. ALEXANDER/ COHPUTING CENTRE/ UNI. OF OTAGO/ BOX 56/ DUNEDIN ATTN: JOHN G. CLEARY/ SYSTEMS & PROGRAMS LTD./ P.O. BOX 30-606/ LOWER HUTT W. J. MALTHUS/ 29B HAIG STREET/ LOWER HUTT N. H. VERHAART/ 25 CORNWALL STREET/ MASTER TON/ 4805 ATTN: DOCUMEl>liATION OFFICER/ COMPUTER CENTRE/ MASSEY UNIVERSITYI PALMERSTON NORTH C. R. BOSHELL/ COI1PUTING SERVICES CENTRE/ VICTORIA ONIV. OF W'ELLINGTON/ PRIVATE BAG/ WELLINGTON/ 721-000 X703 FINN-MOGENS S. HAUGI/ ANATOMISK INSTITUTT/ UNIVERSITY OF OSLO/ KARL JOHANSGT. 47/ OSLO 1 IVAR LA.8ERG/ COMPUTER DEPARTMENT/ UNIVERSITY HOSPITAL OSLO/ RIKSHOSPITALET/ OSLO 1/ (471) 20 10 50 EGIL HEISTAD/ NORWEGIAN DEFENCE RESEARCH ESTABLI.SHM*/ BOX 25/ KJELLER N-2007 l·tORTEN MOEN/ SKYTTERUN 19A/ STAVERN N-3290/ 034-98167 COLIN R. BLANCHARD/ KONGSBERG INGENIORHOGSKOLE/ KONGS.8ERG N-3600/ 732330 FRODE SANDVIK/ ELAB/ TlWNDHEIM-NTH N-7034/ (047) 75-92669 GUSTAVO HUNG/ LOS GERlINIOS 296/ LIMA 14 MICHAL IGLEWSKI/ INSTITUTE OF COMPUTER SCIENCE/ POLISH ACADEMY OF SCIENCES/ P.O. BOX 22/ WARSZAWA PKIN 009u1/ 200211 X2225 I. A. MOULTRIE/ BOX 68882! BYRANSTON TRANSVAAL/ 706-4053 E. M. EHLERS/ PU FOR CHE/ BOX 536/ POTCHEFSTROOM ATTN: KENTRON (PTY) LTD/ PRIVATE BAG X336/ PRETORIA 0001/ 74 6041 C. H. HOOGENCIOORN/ NATIONAL INST FOR AERO AND SYSTEHS TE*/ P.O. BOX 395/ PRETORIA 0001/ 74 9111 X21.l05 ATTENTION: TONY CASTLEMAN/ PRO-DATA (PTY) LTD./ P.O. BOX 150/ BENONI 1500/ 826-5111/2/3 A. M. DINKELACKER/ 11 N'GANJ:: DIAZ AVE./ EDENVALE 1610/ 609-5582 (HQ}1E) F. G. BOTHA/ ARTHUR ANDERSON & CO./ P.O. BOX 3652/ JOHANNESBURG 2000/ 21 1381 J. A. LEWIS/ BROWN BOVERI S.A. (PTY) LTD/ P.O. BOX 1500/ JOHANNESBURG 2000/ 836-5791 G. PEREZ/ P.O. BOX 3714/ JOHANNESBURG 2000/ 28 2600 ATTN: PERIODICALS LIBRARY (MATRS)/ UNIV. OF THE WITWATERSRAND/ JOHANNESBURG 2001/ 39-4011 ATTN: SOFTWARE MANAGER/ ASSOCIATED HOUSE/ HESSINA ELECTRONIC DEVELOPNENT/ 150 CAROLINE STREET/ BRIXTON 2092 EDI~ARD BRITTAIN/ P.O. BOX 44210/ LINDEN 2104/ (011) 467180 B. STRONG/ CONTROL DATA! P.O. BOX 78105/ SANDTON 2146/ 783-5225 JEREI1Y HCLUCKI£/ 10 HELLESPONT COURT/ 1 BIRT STREET/ SYDENHAH 2192! 845-1804 BRIAN T. STACEY/ B301 COUNTRY LANE/ 71 DORSET ROAD/ PARKWOOD 2193/ (OIl) 47-2440 NEIL SARNAK/ 3 KOHATIE ROAD / EHMARENTIA/ JOHANNESBURG 2195/ 46 8432 J. B. RADUE/ COMPUTER SCIENCE DEPT./ UNlv'. OF NATAL/ DURBAN 4001/ 352461 c. G. URMSON/ 100 SAN LEANDRO! 80 CURRY ROAD/ DURBAN 4001/ 21-5972 PETER WENTWORTH/ CO~lPUTER SCIENCE DEPT./ THE UNIVERSITY/ PORT ELIZABETH 6000/ 529911 REG DODDS/ DEPT. OF COMPUTER SCIENCE/ THE UNIVERSITY/ STELLENBOSCH 7600 JOHN TIMOTHY F~KLIN/ KRUKMAKERGATTAN #6/ STOCKHOLM S-100 UO CARL CRAFOORD/ INST. FOR METALLOGRAFI/ KTB/ FACK/ STOCKHOLM S-100 44/ (08) 787-8350 ATTENTION: K. 1. LARSSON/ HILITARY ELECTRONICS DIVISION/ SATT ELEKTRONIK AKTIEBOLAG/ BOX 32006/ STOCKHOLM S-126 11 BJORN GIMLE/ CONTROL DATA SWEDEN AB/ BOX 42107/ STOCKHOLM 42 5-126 12/ 08 - 840200 FOLKE ANDERSSON/ FACK/ SN. RADIO AB/ SPANGA S-163 00/ (08) 752-1474 ATTH: DATEMA fIB/ BOX 1056/ SOLNA S-I71 21 NEIL T. KEANE/ SYSTEM DEVELOPMENT/ DATASAAJ3/ VEDDESTAVAAGEN 13/ JAARFAALLA s-175 86/ 08/36 28 00 HANS NORDSTROM/ TINGVALLAVAGEN 7F/ MARSTA S-195 00 AKE WIKSTROM/ DEPT. OF COMPUTER SCIENCES/ CHALMERS UNIV. OF TECHNOLOGY/ FACK/ GOTEBORG 5 S-402 20 GUNNAR KARLSSON/ CHALMERSSATAN 27A F-4/ GOTEBORG S-411 35 LARS Y. SVENSSON/ GNEJSVAGEN 3/ HJALTEBY S-440 74! 031-671193 ENGELBERT STORK/ AB DATAKONVERTERING/ TRAl(TORGATAN 16/ KUNGALV S-442 00 ARNE BORTEMARK/ DEPT OF COMPUTER SCIENCE/ LINKOPING UNIVERSITY/ FACK/ LINKOPING S-581 83/ 013/ 11 17 00 STEN LJUNGKVIST/ AXEL SWARTLINGS GATA 10/ NORRKOPING S-603 78/ 011 - 10 80 00 (OFFICE)/ 011 - 17 02 10 (HOHE) SEPTErlBER,1979 PASCAL NEWS #15 ATTN: CONFUTING CENTREI UPPSALA UNIVERSITYI BOX 2103/ UPPSALA 5-751 02/ OUj-IlI DU 5-752 51 5-9111 01 eH-I007 CH-1204 CH-1211 CH-IZ16 CH-2000 CH-2560 CH-!;I092 CH-8304 CLAES HOJENBERG/ AGRODATA AB! GALBO B 53/ UPPSALA 5-752 51/ 018-302853 CH1tISTElt JllREN/ KIRUNA GEOPHYSICAL INST./ KIRUNA 1 5-981 01/ 0980 12240 CHARLES RAPIN/ CIIAIRE INFORMATIQUE APPLIQUEE DUA EPFL/ 61 AVENUE DE COURI LAUSANNE eH-IOOl/ (021) 27 31 05 RAYMOND MORELl COLLEGE CALVIN/ 2-4 RUIl: TH.-DE-BEZE! GENEVA CH-1204 HERVE TIREFORD/ MOTUROLA INC./ 16 CHEMIN DE LA VOlE-CREUSEI GENEVA 20 eH-1211/ 33-56-07 MAUIUCE CALVEH.T! lATA/ P.o. BOX 160 I COINTRIN/ GENEVI',; CH-1216 PIElUtE-JEAN ERARD/ CENTRE DE CALCUL UNlVERSITAIRE/ CHANTEMERLE 20/ NEUCIlATEL CII-2000 JEAN LOUIS DECOSTER/ LYSS. STR. 21/ NICLAU CH-2560 ~WEND ERIK KNUDSEN/ INSTITUT FUER INFORHATIK/ ETll - ZENTRUN/ ZUERICH CH-8092/ (01) 32 62 11 X2217 RAFAEL E. EGLOn'/ SPITZACKERSTRASSE 2/ WALLISELLEN CH-8304 D. SWIEKSTRA/ TECHNlSCHE HOGESCHOOL TWENTE/ P.O. BOX 217/ ENSCHEUE/ 31-53-894441 G. J. STAALNAN/ C/O CONPUT ING CENTRE/ WAGENINGEN UNlV./ HOLLANOSEWEG 1 WAGENINGEN ATTN: LIBRARY/ CONTROL DATA B.V.! J. C. VAN MARK.l::NLAAN 5! RIJSWIJK! 070-949344 ANDREW S. TANENBAUH! WISKUNDIG SEMINARIUU! VRIJE UNIVERSITIHT! POSTBUS 7161! AMSTERDAM 1007 MC/ OlO 548 24 10 ATTN: BIBLlOTHEEK/ INSTITUUT KERNPHYSISCH-ONDERZOEK! POSTBUS 4395! AHSTb:RUAM 100Y AJ! (020) 930951 KWEE TJOE LIONG! INSTITUUT ATW! SPUISTR 21O! AMSTEROAN 1012 VT/ (020) 525-31::162 OR 31::164 DICK VAN DEN BURG! GETSCO! PROF E. H. 11EYERSLAAN 1/ AMSTELVEEN 1183 AV/ 020-473l31 H.J.J. DE GIEtt/ PROCESSING AND STATISTICS! INST. TNO FOil. MATHEMATICS IN~'ORMATlON/ P.O. BOX 297! THE HAGUE 2501 BD P. J. VAN DEll. HOFF/ PIJPERSTRAAT 5! BERKEL EN 1l.0DENRIJS 265l VN NICO ROLLEBEEK! GEERTRUIEDE HOEVE 19/ GOUDA 2804 HS ATIN: RIJKS CmIPUTEKCENTRUM! FAUSTSTRAAT I! APELDOORN 7323 BA C. BRON/ DEPT. OF ELECTR'rCAL ENGINEERING/ TECHNISCHE HOGESCROOL !WENTE! POSTBUS 217/ ENSCHEDE 7500 AE/ (U31) ~3 89MI51 HARM PAAS/ DEPT. OF SPACE RESEARCH! UNIV. OF GRONINGEN! P.O. BOX 800! GiWNINGEN 9700 AV/ 050-116662 W. L. BLUNDELL/ AYLESBURY COLLEGE OF F.E.! OXFORD ROAD/ AYLESBURY BUCKS. ROBERT NEELY/ 27 CHILTERN ROAD/ HITCHIN HERTS ROGER I. TURNER! 13 FIRST CROSS ROAD / TWICKENHAM! MIDDLESEX ENGLAND! 01-894 3243 T. BAYUS/ MERTON TECHNICAL COLLEGE/ NORDEN PARK - LONDON ROAD/ MORDEN SURREY J. R. DOUGLAS! OXFORD UNIV. COMPUTING SERVICE/ 13 DANBURY ROAD/ OXFORD ENGLAND RICHARD J.D. KIRKMAN! lJEPT. OF ATMOSPHERIC PHYSICS! CLARENlJON LABORATORY! PARKS ROAlJ! OXIo'ORD ENGLAND ALAN BLANNIN! EUROPEAN SOFTWARE ENGINEERING! DIGITAL EQUIPI1C:NT co.! FOUNTAIN HUUSE ! BUTTS CEN'fIU:! READING I~N(;LANIJ D. J. ALLERTON! MARCONI SPACE & DE~'ENCE SYSTBMS! WARREN LANE/ STANNORB HIDDLESEX/ 01! 954-2311 X23 JEREMY KENAGHAN/ R.A.D.C./ INTERNATIONAL COMPUTr.:RS LTD./ FAIRVIEW ROAD! STEVENAGE Hr.:RTS! STr.:Vr.:NAGI::: 56111 X252 RICHARD ROSS-LANGLEY/ 1 FRANCIS AVJ::NUE/ ST ALBANS AL3 6BL ATTN: THE INFOlU!ATION OFFICIi:R! SWORCC! UNIVERSITY OF BATH! CLAVERTON DOWN BATH HA2 7AY ATTN: COl-IPUTER CENTRE/ BRIGHTON POLYTECHNIC/ BRIGHTON ENGLAND BNl 2GS P. COOKE! SCHOOL OF ENGR AND APPL. SCIENCE! UNIV. OF SUSSEX! BRIGHTON ENGLANIJ BNl 9PT ATTN: COMPUTING CENTRE/ UNIVERSITY OF SUSSEX/ FIDlER! BRIGHTON SUSSEX BNI 9QH MAURICE 0' FLAHERTY/ 3 RICHMOND PARK EAST! GLENGORHLEY/ NEWTOWNABBEY N. IRI:::LAND BT36 8LF KATHY LANG/ THE COMPUTER CENTRE/ UNIV. OF BIRMINGHAM! ELMS ROAD! PO BOX 363/ BIRNINGHAM ENGLANtJ B15 2TT! Oll-472-1301 X12J3 H H ACKROYD! ELEC EtlGK DEPT! SmlPNER BUILDING! ASTON UNIVERSITY! 19 COLES HILL STRIi:ET! BIRMINGHMI ENGLANlJ B4 71'13/ ll21-J5':J-Jbll XSS9 PETER ROIHNSON/ CmlPUTER LABOKATORY! CAHJ3RIDGIi: UNIVERSITY! CORN EXCHANGE STKr.:ET! CAl'U:lRlDGE ENGLANU CB2 3QG C. A. LANG! SHAPE DATA LIMITED! 5 JESUS LANE! CAMBRIDGE ENGLAND CBS 8aA STEVE nOLES! STANDARD TELECOHHUNICATION LABS./ LONDON ROAD/ HARLOW ESSEX CMI7 9NA/ (0279) 29531 X345 KEITH TIZZARD/ DBJ?T. OF M.S.O.R.! UNIV. OF EX£TER! STREATltAM COURT! EXI-:IER ENGLAND EX4 4PU J. A. CANPBELL/ CmlPUTER SCIENCE DEPT.! EXETER UNIV./ STOCKER ROAD/ EXETER ENGLAND Ex4 4QL DAVID NEDLANo-SLATER/ 1 BUCKLAND CLOSE/ FARHBOROUGH HANTS GU14 80H! 0252-43743 NIGEL STEPHENS! HODGSONITES/ CHARTERHOUSE/ GODALMING SURREY GU7 2DP/ (04868) 6393 J. E. JEACOCKI!;! DEPT. OF COMPUTING SCIENCE! THE UNIVERSITY/ GLASGOW SCOTLAND G12 8QQ/ (041) 339-8855 X7458 D. SPRIDGEON/ COMPUTER CENTRE! THE UNIVERSITY/ HULL ENGLAND HU6 7RX B. CANTWELL/ DEPT RIB.I.1! P.O. RESEARCH STATION/ MARTLESHAM HEATH/ IPSWICH ENGLAND IPS 7RE/ 0473-642 581 D. E. LAW/ COHPUTER UNIT/ KINGSTON PULYTECHNIC/ PENRHYN ROAD! KINGSTON-UP-TH ENGLAND KTl 2EE BRIAN A. E. MEIo:KINGS! DEPT. OF COMPUTER STUDIES! UNIVERSITY OF LANCASTER! BAlLRIGG! LANCASTER ENGLAND LA1 4YN! (0524) b52Ul K. M. JINKS/ C0l1PUTER SERVICES DEPARTMENT! UNIV. OF LANCASTEK/ LANCASTI!:K ENGLAND LAl 4yw H. J. ROWE/ COMPUTER LABORATORY/ LEICESTER UNIVERSITY'/ LEICESTER ENGLAND LEI 7RH! LEIC. 50000 s. TAYLOR-REED! AUTOMATIONS DEPT! VIKING GAS TERMINAL! CONoeo LTD! MABLETUORPE LINCS LN12 1NQ NARTIN D. BEER! CotIPUTER LABORATORY/ UNIVERSITY OF LIVERPOOL! P.O. BOX 147/ LIVERPOOL ENGLAND L69 3BX C. G. WHITAKER/ CRANHELD CmLPUTER CENTER/ CRANFIELD INSTITUTE OF TECH./ CRANFIELD BEDFORD MK43 OAL r-I. A. BRAMER! MATHEMATICS FACULTY! THE OPEN UNIVERSITY! MILTON KEYNES ENGLAND l-IK7 6AA J. TURNBULL/ NATIONAL COMPUTING CENTRE! OXFORD ROAD/ MANCHESTER ENGLAND Ml 7ED! 061 228 6333 S. s. THAKKAR! DEPT. OF COMPo SCI.! UNIVERSITY OF MANCHESTER! OXFORD ROAD! MANCHESTEJ{ ENGLAND M13 9PL D. L. GRAY! 2 CHURCHFIELD/ 8 EDGE lANE! CHORLTON-C-HAR.DY/ HANCHESTER ENGLANU 1121 1JF K. HALEY! 24 AXBRIDGE GARDBNS ! BENWELL! NEWCASTLE-U-ty ENGLAND NE4 8EB A. D. HEYES! DEPT. OF PSYCHOLOGY! UNIV. OF NOTTINGHAM! NOTTINGHAM ENGLAND NG7 2RD !HLV.IA ..SUS;iJ'1}.N! 5 MANOR WALK! NgTHER HEYF'OKD/ NORTlIANTS ENGLAND NN7 3LJ/ WEEDON 40465 ATTN: W. J. TAYLOR/ GWENT HOUSE/ FERRANTI CDt-IPUTER SYS'fEt-lS LTD.! GWENT SQUARB - CWM.BRAN! GWENT ENGLANU 1\1.1'4'0 li~"" WENDY MILNE/ SCHOOL OF COMPUTING STUDIES/ UNIV. OF EAST ANGLIA/ NURWICH ENGLAND NK4 7TJ ALAIN D. D. WILLIAMS! 801 FINCHLEY ROAD/ LONDON ENGLAND NW11 8DP C. CURRAN! COMPUTING LABORATORY! OXFORD UNIVERSITY! 13 BANBURY ROAD! OXFORD ENGLAND OX2 6PE T. S. loK}RAN! 20 MASEFIELO AVENUE! EATON FORD! ST. NEOTS CAMBS PE19 3LS PATRICIA HEATH/ COMPUTER CENTRE/ PLYl10UTH POLYTECHNIC! DRAKE CIRCUS! PLYMOUTH ENGLANlJ PL4 8AA FRASER G. DINGWALL/ SOUTHLEIGH PARK HOUSE! PLESSEY ELECTROlUCS RESEARCH! EASTLEIGH ROAD/ HAVANT HANTS P09 2PE R. J. LOADER/ COMPUTER SCI. DEPT./ UNIV. OF READING/ WHITEKNIGHTS/ READING ENGLANI) RG6 2AX J. D. ROBERTS/ DEPT. OF COMPUTER SCIENCE/ UNIV. OF READING/ WHITEKNIGHTS PARK/ Rt:AilING ENGLAND RG6 2AX E. b. AWUAH/ BRIDCES HALL/ WHITEK1UGHTS ROAD! READING BERKS RG6 2BG ATTN: Tllli SECRETARY/ DEPT. OF COMPo SCI.! UNIVERSITY COLLEGE UF SWANSEA! SWANSEA SAl 8PP H. w. NEWLAND! IC!32! SHELL INTERNATIONAL PETJ:l..OLEUM CO. LTD./ SHELL CENTRE/ LONDON ENGLAND Sh;l 7NA P. Io'. HEWITT! DORSET HOUSE/ COMPUTER WEEKLY/ STAMFORD STREET! LONDON ENGLAND SEl 9LU M. J.J. COSTELLO! C011PUTER CENTRE! THAUES POLYTECHNIC! LONOON ENGLANU SE18 6FF DAVID BURNS/ SOFTWARE SCIENCES LTD/ LONDON & MANCHESTER HOUSE / PARK STRr.:*/ MACCLESfo'IELD ENGLAND SKll 6SR J. R. DORE! 5 NESTON WAY! HANDFORTH! WlLMSLOW ENGLAND SK9 3BX D. J. CALVERT! PARK HOUSE! COMPUTER ASSOCIATES/ PARK STREET/ MAIDENHEAD BEltKS SL6 ISL P. B. ORCHARD/ 25 SUNNYDOWN ROAD / OLIVER'S BATTEltY! WINCHESTER HANTS S022 4LD ATTN: 2900 PASCAL PROJECT/ COMPUTING SERVICE/ UNIV. OF SOUTHAMPTON! SOUTIWIPTON ENGLAND S09 5NH! 0703 559 122 V. L. EVANS/ COMPUTING SERVICE! UNIV. OF SOUTHAMPTON! SOUTHANPTON ENGLAND S09 5NH! 0703 559 122 KEN ROBINSON! COMPUTER STUDIES GROUP! U!UV. OF SOUTHAMPTON/ SOUTkWlPTON ENGLAND 509 5NH! 0703 559122 N. WHITE/ DEPT. OF COMPUTER SCIENCE! UNIV. OF KEELE! KEELE STAFFS ST5 5BG/ STOKE-ON-TRENT 621111 :<.410 DENIS LENIHAN! BATTERSEA LABORATORY/ BRITISH STEEL CORPORATION! 140 BATTEIl.SEA PARK ROAD! LONDON ENGLAND SWl1! 01-622-5511 X6 SruART J. MCRAE! DEPT OF COMPUTING & CONTROL/ IMPERIAL COLLEGE! 180 QUEENSGATE/ LONDON ENGLAND sw7 2AZ/ OI-58Y-51ll X2733 DAVID BROWN! COMPUTER CENTRE/ IHPERIAL COLLEGE! SOUTH KENSINGTON! LONDON ENGLAND SW7 2BX P. WHITEHEAD/ COMPUTER CENTRE/ IMPERIAL COLLEGE/ SOUTH JQ;NSINGTON/ LONDON ENGLAND SW7 2RX CHRIS W. MARTIN/ COMPUTING SERVICES/ 2 HOUNSFlELD ROAD/ SUEH'IELD ENGLAND SIO 2TN/ (0742) 78555 X263 ATTN: THE LIBRARY! TEESIDE POLYTECHNIC/ BOROUGH ROAD - MlDDLESBROUGH! CLEVELAND ENGLAND TS1 3BA/ 0642-44176 D. JONES/ COMPUTING UNIT! BRUNEL UNIVERSITY/ UXBRIDGE UB8 3PH v. RYBACKI/ CENTRAL COMPUTING SERVICES! BIRBECK COLLEGE/ MALET STREET/ LONDON ENGLAND WCI ANTHONY B. WELLER! COl-IPUTER CENTRE! UNIVERSIT'i COLLEGE LONDON/ 19 GORDON STREET/ LONDON ENGLAND WC1R OAB I. D. GRAHAM! INSTITUTE OF ARCHAEOLOGY/ 31-34 GORDONSQUARE! LONDON ENGLAND WCIH OPY A. RARKER/ COMPUTER UNIT! L. S. E.! HOUGHTON ST.! LONDON ENGLAND WC2! 01-405-7686 X876 A. J. JONES! U.C.S.L./ P.O. BOX. 110! WATFORD HERTS IID1 lSA HIKE BOUORY/ 42 lJEWHURST ROAD/ LONDON ENGLAND W14 OES! 01 - 603 0816 STJEPAN JAKNJAK/ 13 PKOLET. BKlG. 247/ ZAGREB YU-41000/ (041) 513-822/767 (OHICE) ROBERT REINHARDT! INSTITUT JOZEF STEFAN! UNIV. V LJUBLJANI! JAMOVA 39/ LJUBLJANA YU-61001/ 63-261 SUAD ALAGIC! ELEKTROTEHNICKI FAKULTET! SARAJEVO I.t!KAVJCA Yl'-7lPl)O 1007 1009 1012 1183 2501 2651 2804 7323 7500 9700 AL3 BAl BNl BN1 BN1 BT36 B15 B4 CB2 CBS GM17 Ex4 EX4 GU14 GU7 G12 HU6 IPS KT1 LA1 LAl LEI LN12 L69 MK43 MK7 M1 M13 M21 NE4 NG7 MC AJ VT AV BD VN HS BA AE AV 6BL 7AY 2GS 9PT 9QH 8LF 2TT 7PB 3QG 8BA 9NA 4PU 4QL 80U 2DP 8QQ 7RX 7RE 2EE 4YN 4YW 7RH 1NQ 3BX OAL 6M 7ED 9PL lJF 8EB 2RD NN7 3.LJ NP44 NR4 NWll OX2 PB19 PL4 P09 RG6 RG6 RG6 SAl SE1 SEI SE18 SKll SK9 SL6 5022 S09 S09 509 ST5 INX 7TJ 80P 6PE 3LS 8AA 2PE 2AX 2AX 2BG 8PP 7NA 9LU 6PF 6SR 3BX lSL 4LD 5NH 5NH 5NH 5BG SWll SW7 2AZ sw7 2BX sw7 2ax S10 2TN TS1 3BA UB8 3PH WCl WCIR OAB weIR on WC2 WDI 1SA WI4 OES YU-41000 YU-61001 YU-71000 SWEDEN SWEDEN SWITZERLAND SWITZERLAND SWLTZEH.LAND SWITZEIU.ANIl SWITZERLAND SWITZERLANU SWITZERLAND SWITZERLANU THE NETHERLANDS THE NETHERLANDS THE NETU.l::RLANDS THl:: NETHERLANDS TUE NETHERLANDS THE NETtlliKLANlJS THE NETHERLANDS THE NETHERLANDS THE NETHERLANDS THE NETHERLANOS THE NETHI!.RLANDS THE NETHERLANDS THE NETHERLANDS UNITED KINGDOH UNITED KINGDOM UNITED KINGDON UNITED KINGDOn UNITED KINGDOM UNITED KINGDOM UNITED KINGOOH UNITED KINGDOM UNITEO KINGDOM UNITED KINGDOM utUTEJ) KINGDOM UNITED KINGDOM UNITED KINGDOM UNITED KINGDOM UNITED KINGDOH UNITED KINGDOM UNITED KINGlJOM UNITED KINGDOH UNITli.D KINGDOH UNITED KINGDOI1 UNITED KINGDOM UNITED KING!)OM UNITED KINGDOM UNITED KINGDOH UNITED KINGDOM UNITED KINGD0I1 UNITE.D KINGDOM UNITED KINGDotl UNITED KINGDOM UNITED KmGUOIf UNITElJ KINGDOM UNITED KINGDOM UNITE.D KINGDON UNITED KINGDOM UNITED KINGDOn UNITED KINGD0l1 UNITED KINGDOH UNITED KINGDOM UNITED K1NGD0l1 UNITED KINGDOM UNrrgO KINGJ)UU UNITED KINGDOH UNITED KINGDOM UNITED KINGDON UNITt:D KINGDOM UNIIIW KINGDOH UNIT.Io;D KINGDOl1 UNITED KINGDOH UNITED KINGDOM UNITED KINGlJot-l UNITED KINGDOH UNITED KINGDOM UNITED KINGDOM UNIUD KINGDOM UNITED KINGDOH UNITED KlNGD0I1 UNITED KINGDOU UNITED KINGDOM UNITED KINGDOM UNITED KINGOOM UNITED KINGDOM UNITED KINGlJOH UNITED KINGDOM UNITED KINGDOM UNITED KINGOOH UNITED KINGDOM UNITED KINGDot1 UNITED KINGDOM UNITED KINGDOM UNITED KINGDOM UNITED KINGlJOM UNITED KINGIXHI UNITED KINGDOM UNITED KINGDOM UNITED KINGDOM UNITED KINGDOM YUGOSLAVIA YUGOSLAVIA YUGOSLAVIA s. JEANE ABITBOUL 94043 M H ACKROYD B4 7PB UNITED· KINGDOM ROBERT N. ADAMSON 98055 JOHN F. AGNEW 2602 AUSTRALIA H. AKESON 92037 SUAD ALAGIC yu-llOOO YUGOSLAVIA R. B. ALEXANDER NEW ZEALAND GERALll P. ALLDREDGE 65401 DAVID M. ALLEN 66102 TlliOTHY ALLEN 02172 D. J. ALLERTON UNITED KINGDOM GORDON B. ALLEY 78220 STEPHEN R. ALPERT 01609 RICHARD ALRUTZ 14580 G. X. AtlEY KOA lAO CANADA WILLIAM F. At-ION III 22030 B. H. ANDERSON 83401 OLE L. ANDERSON 97330 RAY L. ANDERSON 93017 FOLKE ANDEttSSON S-163 00 SWEDEN DENNIS S. ANDREWS 94086 w. PAGE 23 5-751 02 SWEDEN GIOVANNI DEGLI ANTONI 1-20000 DELL ANTONIA 78291 PETER A. APGAR 18042 R. REMBERT ARANDA 06103 J. C. ARANGO FLOYD O. ARNTZ 02160 LARRY ARONSON 10022 MICHAEL C. ARYA 94086 VOLKER ASSMUS 0-6450 PETER R. ATHERTON 63166 LON ATKINS 92714 ATTENTION: DAN LAPORTE 93017 ATTENTION: DONALD LINDSAY K2E 6T7 ATTENTION: H. SPAANENBURG 13440 ATTENTION: K. I. LARSSON S-126 11 ATTENTION: TONY CASTLEMAN 1500 ATTENTION: W. WATTS 3180 ATTN: AMI INFORMATION CENTER 95051 ATI'N: APPLIED BUSINESS COMPUTER SYSTEHS 20854 ATTN: ARJUN REDDY - LIBRARIAN 65211 ATI'N: AYERS LOCKSMITHING 94941 ATTN: BASSER DEPT. OF CmIPUTt:R SCIENCE 2006 AUSTRALIA ATTN: BETA SYSTEHS LID. V3C 1 S 5 CANADA ATTN: BIBLlOTHEEK 1009 AJ TH.E NETHERLANDS D-7406 GERMANY ATTN: BIBLIOTH.b:K ATTN: BIBLIOTHEK 0-7000 GEID-WIY COLOHBIA TN: COLUMBIA MICRO-COMPUTER SYSTEMS INC"" 99352 ATTN: COUMANDANT (G-DOE-3/TP54) 20590 ATTN: COHPUTER CENTER LIBRARY 43201 AnN: CONPUTER CENTRE BNl 2GS UNITED KINGDOM GERMANY ATTN: COMPUTER REFERENCE CENTER 08854 ATTN: COMPUTER SOLUTIONS INC. 97330 ATTN: COMPUTERACC 4001 AUSTRALIA ATTN: CotlPUTING CENTER 80202 CANADA ATTN: COHPUTING CENTRE BN1 9QH UNITED KINGDOM ATTN: COMPUTING CENTRE S-751 02 SWEDEN SWEDEN ATTN: COVELL & HARWOOD CONSULTANTS 49007 SOUTH AFRICA ATTN: DATEMA AB 5-171 21 SWEDEN AUSTRALIA ATTN: DEPT. OF CONPUTER SCIENCE SF-00250 FINLAND ATTN: DEPT. OF MATHEHATICS 92521 ATTN: DIRECTOR Z007 AUSTRALIA ATTN: DIRECTOR OF COMPUTER SERVICES 6i:1701 ATTN: DOCU!!ENTATION CENTI-:!I, 64108 ITALY PASCAL NE\~S SEPTEr-IEER,1979 #15 ATTN: DOCUHENTATION OFFICKR ATTN: DON T. HO ATTN: EASTMAN KODAK CO. ATTN: EDUCATION DEPT. ATTN: ELIZABETH COHPUTEK CENTRE ATTN: GENERAL INSTRUIIENT CORPORATION ATTN: GEN.BER SCIENTIFIC EUROPE S.A. ESELLSHAFT FUEK SOFNARE-ENGINEERING ME* ATTN: HANPTON Ti'.>CIlNICAL CENTER ATTN: IIMAS IHBLIOTECA ATTN: INFORMATION SCIENCE CLUB ATTN: INSTITUTO NAZ!ONALE IH OTTICA ATTN: INTERI:1ETRICS INC. ATTN: IRIA BIBLIOTHEQUE ATTN: lRIA I BIBLIOTKEQUE ATTN: JEANNE L. TOULOUSE - LIBRARIAN ATTN: JOHN G. CLEARY N~W 08854 14650 7001 7000 21031 B-1160 0-8000 23666 7005 1-50100 77546 F-78150 F-78150 94301 ZEALAND AUSTRALIA AUSTRALIA BELGIUM GERl1ANY MEXICO AUSTRALIA ITALY FRANCE FRANCE NEW ZEALAND 98124 98124 A'TIN: KENTKON (PTY) LTD 0001 SOUTH AFRICA ATTN: K. MICUAEL - LIBRARIAN 90045 ATTN: LIBRARY T6G 2J8 ,cANADA ATTN: LIBRARY THE NETIlERLANDS AITN: LIBRARY 02178 ATTN: LIBRARY 75235 ATTN: LIBRARY L-53 (COpy B) 94550 ATTN: LIBRARY / SERIALS 94305 LOVELACE CENTER FOR THE HEALTH SCIENCE* 87108 ATTN: 11ICROPROCESSOR LABORATORIES INC. 77043 ATIN: NICROSYSTE11S INC. 91107 ATTN: MINI-CotlPUTER SYSTeMS 3161 AUSTRALIA NATIONAL CENT~R FOR ATHOSPHERIC RESEARC* 80303 ATTN: NEW ZBALAND mCROCOMPUTER CLUB NEW ZEALAND TN: NORTHWEST MICROCOMPUTER SYSTEUS INC* 97404 ATTN: PASCAL DISTRIBUTION 80302 ATTN: PAT MCCLAIN 98115 ATTN: PERIODICALS LIBRARY (MATHS) 2001 SOUTH AFRICA ATTN: PROCESSOR ENTERPRISES LTD. NEW ZEALAND ATTN: PROGRAMUERS 7001 AUSTRALIA ATTN: PROGRAMUING t-tANAGER 3168 AUSTRALIA ATTN: P.S. INC. 58107 ATTN: RCS DATA SYSTEMS 48239 ATTN: RECAU COPY 2 DK'-8000 DENMARK ATTN: RECAU COPY 1 DK-8000 DENMARK ATTN: REFERENCE ROOM K7L 3N6 CANADA ATTN: RIJKS COMPUTERCENTRUM 7323 BA THE NETHERLANDS ATTN: SERIALS DEPT. 19104 ATIN: SHATTOCK & ASSOCIATES 3131 AUSTRALIA ATTN: SOFTWARE MANAGER 2092 SOUTH AFRICA ATTN: SPCC LIBRARY 24EE 06602 A'ITN: SSRFC LIBRARY 55455 ATTN: STATE ENERGY COl1MISS1'oN 6000 AUSTRALIA A'ITN: 586 20755 ATTN: TECHNICAL ASSISTANCE 20052 ATTN: TECHNICAL INFORMATION CENTER 91320 ATTN: THE DIRECTOR NEW ZEALAND ATTN: THE DIRECTOR 5001 AUSTRALIA A'ITN: THE INFORMATION OFFICER BAl 7AY UNITED KINGDOM ATTN: THE LIBRARY TSI 3BA UNITED KINGDOM ATIN: THE MANAGER 5000 AUSTRALIA ATTN: T1lli SECRETARY SA2 8PP UNITED KINGDOM A'ITN: USER SERVICES GROUP 93106 ATIN: WASHINGTON STATE UNIV. 99164 ATTN: W. H. GENTRY 22980 ATTN: W. J. TAYLOR-NP44 INX UNITED KINGDOM ATTN: 2900 PASCAL PROJECT S09 5NH UNITED KINGDOM CHUCK AUGUSTINE 15213 E. B. AWUAH RG6 2»G UNITED KINGDOM VANESSA AXELROD 20003 JOSEPH AYERS 01908 OTTO BAADE 55406 DUANE W. BAILEY 01002 LAWRENCE W. BAIN JR. 21040 WILLIA11 L. BAIRD 19090 J. W. BAKER M1J 2T1 CANADA THOMAS BAKER 01862 DAVID S. BAKIN 92680 LAWRENCE E. BAKST 07044 A. S. BALASUBRAMANYAM. 560 020 INDIA JON BANGS· 10954 WILLIAM BARABASH 01754 THOMAS BARBARA 77072 PAUL BARINA 94019 WC2 UNITED KINGDOM A. BARKER NORMAN R. BARKER 95123 DAN & ROBIN BARNES 95926 G. DENNIS BARNES 91107 90274 LOUIS BARNETT 59812 JOHN R. BARR PAULA BARRETT 80027 PEDRO BARROS M3H 559 CANADA ROBERT F. BASHFORD 19713 ALEX J. BASKIN 90272 94608 DAVID BATES HENRY R. BAUER I I I 82071 JONATHAN BAUER 48104 NEIL R. MUHAN 19002 UNITED KINGDOM T. BAYUS DWIGHT R. BEAN 92110 BERT BEANDER 01876 E. R. BEAUREGARD 17055 77074 GARY L. BECHTOLD THOMAS L. BECK 53126 MARTIN D. BEER 1.69 3BX UNITED KINGDOM 06484 MICHAEL BEETNER MICHAEL BEHAR 06880 LARRY BEITCH 45219 D-8012 GERMANY BERNHARD H. BEITINGEfl JOHN BELEW 90049 56464 KEITH BELLA1RS LEE A. BENBROOKS 90403 ALLEN E. BENDER 20852 JOHN BENITO 95051 46755 WILLIAM G. BENTLEY RANDOLPH BENTSON 07846 5064 AUSTRALIA A. C. BERESFORD PAUL C. BERGMAN 21793 THEODORE C. BERGSTROM 90631 R. BHARATII 49855 D-lOOO GERMAm ALBRECHT BIEDL EARL BILLINGSLEY 01002 C. BILLINGTON 3168 AUSTRALIA RODNEY BLACK 06810 PETER BLADWELL 2098 AUSTRALIA COLIN R. BLANCHARD N-3600 NORWAY GERHARD BLANKE 0-6236 GERMANY ALAN BLAt-lNIN UNITED KINGDOM w. G. BLASDEL 20015 ATTN: KENT TECHNICAL LIBRARY - B ATTN: KENT TECHNICAL LIBRARY - C LYNN BLICKENSTAFF 90065 TUt BLUM 95008 WILLIAM E. BLUM 94010 w. L. BLUNDELL UNITED KINGDOM JAMES BLYTHE 1+8103 JAMES BLYTHE 48105 JEAN BOISVERT G5L 3A1 CANADA LARRY D. BOLES 37076 EDWARD W. BOLTON 90066 WALTER BOLTZ A-101O AUSTRIA JEFF BONAR 01003 KENNETH C. BONINE 92041 RICUARD J. BONNEAU 01545 GLENN A. BOOKOUT 95926 GARY J. BOOS 69341 L. BORRETT 3185 AUSTRALIA ARNE BORTEMARK S-581 83 SWEDEN C. R. BOSWELL NEW ZEALAND DENNIS K. BOSWELL 85012 F. D. BOSWELL N2L 3G1 CANADA F. G. BOTHA 2000 SOUTH AFRICA HIKE BOUDRY W1'4 OES UNITED KINGDOH HENRY J. BOWLDEN 15146 emus BOYLAN 55455 ROBERT BOYLAN 08873 DALE BRAINARD 44103 M. A. BRAlo1ER MK7 6AA UNITED KINGDOH RICHARD C. BRANDT 84112 DAVID C. BRAUGHT 61701 R. BRENT 2600 AUSTRALIA EDWARD BRITTAIN 2104 SOUTH AFRICA 78209 FRANCIS A. BROGEN HENRY C. BROH 55303 C. BRON 7500 AE THE NETHERLANDS GEORGE BROOKE D-8000 GERMANY JERRY R. BROOKSHIRE 35805 ALISON A. BROWN 14850 ALLEN BROWN 12206 A. C. BROWN 97201 DALE BKOWN 92663 DAVID »ROWN SW7 2BX UNITED KINGDOM DAVID R. BROWN N9B 3P4 CANADA REID L. BROWN 01876 R. A. BROWNELL 2070 AUSTRALIA STEVE BRUELL 55455 A. CHARLES BUCKLEY 08540 WILLIAM E. BULLEY 48105 FRANK BURGER 92686 THOMAS U. BURGER 93017 MIKE BURGHER 74601 SUE D. BURKLUND 63188 D. G. BURNLBY E3B 5A3 CANADA DAVID BURNS SKll 6SR UNITED KINGDOM DAN BURROW~ 55812 JEAN W. BUTLEN. 98144 EDWARD R. ~YRNE 60540 RO.BERT L. BYRNE I I I 78704 MARCUS L. BYRUCK 94133 THOHAS E. RYTHER 04469 GEORGE A. CACIOPPO JR. 11772 KEVIN CADMUS 43201 W. J. CAELLI 2902 AUSTRALIA PHILLIP R. CALDWELL 75229 ROBERT CALDWELL 92110 D. J. CALVERT SL6 1SL UNITED KINGDOM MAURICE CALVERT CH-1216 SWITZERLAND DAVID B. CAMERON 33620 HARRY N. C~lPBELL 92686 J. A. CANPBELL Ex4 4QL UNITED KINGDOM MIKE CANADAY 92683 B. CANTW.ELL IPS 7RE UNITED KINGDOM D. CARACAPPA 08540 JOHN CARPENTER 3145 AUSTRALIA DANIEL CARROLL 94122 PETE\.{ CARTWRIGHT 98115 IAN J. CASEY 3191 AUSTRALIA B. C. CASKEY 87185 KARL J. CASPER 44115 SIANLUIGI CASTELLI 1-20133 ITALY PAT CAUDILL 97077 KAREN CAVILEER 95051 F. A. CELLINI N2J 4G5 CANADA JOSE R. CEN ZUBIETA MEXICO DOUG CHAM.HERLIN 02173 JOHN C. CHAN 98195 AUS TIN CHANEY .dt4202 TAIWAN CHANG 10010 A. LYMAN CHAPIN 01581 w. B. CHAPIN 55112 GEORGE W. CHERRY 22090 BARAK CHUBAK 53280 ANTONIO CICU 1-20010 ITALY 0-8000 GERMANY COLIN CLIFFORD JOHN D. COATES 12308 BARRY A. COLE 90291 DAVID L. COLE S4p 2H3 CANADA JAHES A. COLE 11716 DAVID E. COLGLAZIER 55410 BETTY A. COLKOUN 20776 MIKE COLLIGAN 60601 ROGER A. COLLINS 92024 KEVIN CONRY 95030 P. COOKE BN1 9PT UNITED KINGDOM M. CORBOULD 2601 AUSTRALIA C. R. CORLES 85019 MOSHA CORNFELD 90068 DONALD R. COSCIA 11727 M. J.J. COSTELLO SE18 6PF UNITED KINGDOM P. COUNTY 3168 AUSTRALIA M. MICHEL COURCHESNE H1G 3S5 CANADA BORDEN COVEL I I 92037 CARLIN R. COVEY 55409 WILLIAM C. COX 90731 CARL CRAFOORD 5-100 44 SWEDEN PENNY CRANE 90036 DAVID CRAWFORD 99501 THCI1.AS W. CROSLEY 94087 R. J. CROUZILLES F-91710 FRANCE TERRENCE R. CULLEt.! M. CULLINAN C. CURRAN JAMES A. GURTIS JOSEPH CUSACK C.N.S. DAMPNEY ARTHUR W. DANA JR. CHARLES A. DANIELS ALEC DARA-ABRAl1S JEAN DARSIE Oll..1U 3068 AUSTRALIA OX2 6P& UNITED KINGDOM 03053 08536 2113 AUSTRALIA 94025 98178 95064 98107 PAGE 24 BARRY DASHER DANIEL DASSOW BRUCE DAVIDSON MELVIN DAVIDSON CHARLES DAVIS LEO R. DAVIS RONALD DAWES PAUL E. DAWSON DAVID J. DE F ANTI H.J.J. DE GIER JEAN LOUIS DECOSTER ALAN DEEHR EDWARD N. DEKKER I I I DAVE DELAUTER ALLAN B. DELFINO DONALD C. DELONG P. L. DEMPSEY W. L. DENISON RICHARD DEROS IER PIERRE DESJARDINS JOE DEVITA LAliRY DI LULLO J. F. DICKSON RICHARD DIEVENDO~FF NORMAN DIMOCK FRASER G. DINGWALL A. M. DINKELACKER SANDRA DIRKS J. SCOTT DIXON JACK DODDS REG DODDS PETER E. DOLEMAN J. E. DOLL BOB DONAHUE D. DONAHUE M. F. DOORE J. R. DORE DAN DORROUGH W. S. DORSEY FRANK D. DOUGHERTY J. R. DOUGLAS R. H. DOUGLAS R. H. DOUR SON GENE DREHER KENNETH R. DRIESSEL WENDY DUBOIS DENNIS S. DUNCAN FRANK DUNN PEGGY DUNN DAN EBBERTS DANIEL EDGAR PAUL R. EGGERT RAFAEL E. EGLOFF E. M. EHLERS DANIEL A. EHHANN DAVID EISENBERG DAN L. EISNER TOM EKBERG MARVIN ELDER BILL ELLIOTT JAMES C. EMERY LARRY ENGELHARDT JIH ENGlLES JOHN ENGLAlm ROBERT J. ENNS DONALD L. EPLEY ROBERT A. EPPING ALAN EPSTEIN PIERRE-JEAN ERARD STANTON D. ERICSON DANIEL ETHIER V. L. EVANS NORMAN M. EVENSEN BYRON G. EVERETT BLAND EWING JOSEPH FALETTI SHAWN M. FANNING RONALD J. FAIDIERY G. FARR FRANCIS FEDERIGHI LUCIEN FEIEREISEN D. A. FEIGLIN WERNER FERCH PAUL D. FIELD ROBERT L. FILLHORE ALMOTH FISCHER DAVID FISH LANCE K. FISHER PAUL F. FITTS CHARLES D. FOLEY I I I WILLIAM FOLZ WILLIAM U. FORD JAMES A. FORGEY CHUCK FORSBERG DOUG FORSTER W. BRUCE FOULKES JOHN TIMOTHY FRANKLIN K. FRANKOWSKI JOHN C. FRANZINI JOHN I. FREDERICK R. A. FREED}tAN DONALD D. FRENCH JOHN FRENCH WALT FRENCH MARIAN FROBISH WILLIAM Y. FUJIMOTO TOSHIHIKO FUJIWARA. GLEN FULLMJ:o:R MARK FURTNEY JOSEPH J. GAL GENE GARBUTT WILLIAn GARD KEITH GARLAND D. C. GARRATT PATRICK D. GARVEY G. w. GAUGHRAN DALE GAUMER C. V. GAYLORD NARAIN CEHANI RICHARD D. GEORGE STEPHEN GERKE G. W. GERRIT'i LARRY GERTZOG NICHOLAS R. GETI JIM GILBERT SHELLEY GILES PAUL J. GILLIAM MALCOLM GILLIS V3T 1 Y8 55016 M3C 1H7 98225 46628 20770 75006 47401 02871 2501 BD CH-2560 99163 60137 47401 94087 95112 3122 2073 01730 H3C 3J7 92663 85253 07753 91724 R3C 1P7 P09 2PE 1610 90010 10901 B2Y 4A2 7600 94609 95070 97403 94043 90813 SK9 3BX 14527 92667 61008 CANADA CANADA THE NETHERLANDS SWITZERLAND AUSTRALIA AUSTRALIA CANADA CANADA UNITED KINGDOM SOUTH AFRICA CANADA SOUTH AFRICA UNITED KINGDOM UNITED KINGDOM 85019 93407 90266 74102 95014 87106 78704 20760 95817 98107 90049 CH-8304 SWITZERLAND SOUTH AFRICA 14619 10006 91792 75006 75080 46240 08540 48176 97005 78753 NON lJO CANADA 52242 19101 02194 CH-2000 SWITZERLAND 61107 55101 S09 5NB UNITED KINGDOM 10964 57701 94708 94704 92627 B-1761 BELGIUM 4700 AUSTRALIA 12309 D-7500 GERMANY 2000 AUSTRALIA HEH 2J8 CANADA 30306 KOA 2WO CANADA is-3000 GERMANY 95112 CANADA 55317 12546 10516 53715 95211 98146 97225 95014 K1V 6N3 CANADA S-100 00 SWEDEN 55455 94903 10025 01842 02158 92691 94707 61625 91775 361 JAPAN 97077 24501 02110 95818 01776 60174 2602 AUSTRALIA 90291 60196 46808 92705 08854 60439 22090 2600 AUSTRALIA 14620 06896 92677 97301 99163 35773 PASCAL NUIS #15 BJORN GIMLE 5-126 12 BRADLEY K. GJERDING 98199 MOBENS GLAD DK-3600 AlDIS CLANC 91330 PER GOEBEL OK-2aao G. GOERZ 0-8520 BILLIE S. GOLDSTEIN SEPTEr1BER,1979 SWEDEN DENMARK DENMARK GERMANY 11776 DAVID A. GONBERG JULIAN GOMEZ 22102 91103 GASTON H. GONNET 22453 RRAZIL KALPH S. GOODELL PETE GOODEVE JUDY GOOllttAN ADOLPH GOOUSON G. W. GOlUlON 01451 94705 97077 20771 2607 AUSTRALIA RICHARD GORDON GEORGE S. GORDON JR. JOHN R. GOTTHARDT R3E OW) CANAllA 02173 0177 5 ARTHUR W. GOTTMAN 80222 I. D. GRAHAM WCIH QPY UNITED KINGDOM RON GRAVES DENNIS GRAY D. L. GRAY NORTON GREENFELD STEVEN J. GREENFIELD DAVID GREER DAVID J. GRIEP GEOFFREY R. CRrNTON W. J. GROIlOE PETER GROGONO MICHAEL H. GKOSS G. C. GUSTAFSON R. D. GUYON CLAYTON HAAPALA 21044 85201 M21 IJF UNITt':D KINGDOM 02138 91604 V6E IPS CANADA 90274 AUSTRALIA 0-5100 GERMANY CANADA 94303 92110 2067 AUSTRALIA 55057 94086 90067 73505 80303 84147 NE4 8EB UNITED KINGOOM 80302 33601 44107 07730 98632 99206 0-1000 GERMANY 66506 55101 48104 55440 45214 58501 66506 943U6 V6H lK8 CANADA 94303 92037 02154 7011 AUSTRALIA K1V 9Jl CANADA N2L 3G1 CANADA 92117 94536 PETER H. HAAS MICHAEL HADJlOANNOLL FRANCIS B. HAJEK PAUL H. HALENDA DON B. HALES K. HALEY DONALD HALFORD JOHN L. HALL JR. STEVEN B. HALL ROBERT HALLORAN RICHARD W. HAMILTON WILLIAM G. HIOOIER LOTHAR HANMERL WILLIAM J. HANKL8Y CHAD HANSEN W. J. HANSEN JON HANSON JAMES HARGREAVES JEFF HARLOW BRYAN D. HAROLD ROY HARRINGTON DAVID HARRIS KIH R. HARRIS K. J. HARRIS TERRY HARRIS A. J. W. HARRISON DAVID J. HARRISON K. HARRISON STEVE HARRISON CLEVE HART STEVEN HARTLEY 9/4U::' HAROLD HARTMAN 52240 AL HARTIiANN 95051 BURT E. HARTMANN 81501 GEORGE W. HARVEY 96827 WESTON W. HASKELL 77042 DAVID RATCH 2120 AUSTRALIA FINN-MOGENS S. HAUGI NORWAY DOUGLAS W. HAWKINS 85202 MIKE HAYES 30341 J. NIEL HAYNIE 33334 TOM HEAD 99701 LENNY HEATH 27605 PATRICIA HEATH PL4 8AA UNITED KINGDOM EGIL HEISTAD N-2007 NORWAY WILLIAM A. HEITMAN 95662 PAUL D. HELVICK 75401 NEAL A. HENDERSON 92128 JAMES HENDRICKSON 85257 JOHN HENNESSY 94305 C. HENNICK 91320 W. BRYAN HENNINGTON 1192708 JURGEN HENRICHS 2006 AUSTRALIA L. S. HENSHAW 80401 R. A. HENZEL 85019 RICHARD W. HERMANSON 98031 SCOTT HERR 61832 MARK HERSEY 48105 GEORGE C. HETRICK 02169 P. F. HEWITT SEI 9LU UNITED KINGDOM A. D. HEYES NG7 2RD UNITED KINGDOM BRUCE HIBBARD 06484 DAVID HICKOK 50158 CURT H.ILL 68134 LESLIE M. HINO 96822 W. A. HINTON 53211 ANDY RISGEN 15213 STEVEN O. ROBBS 01886 ALAN HOClffiERG 02090 PAUL HOEFLING 97225 CLAES HOJENBERG S-752 51 SWEDEN JAMES E. HOLBROOK 85281 PAUL HOLBROOK 92715 NICO HOLLEBEEK 2804 HS THE NETHERLANDS RICHARD HOLMES 01776 RAY HOLT 94086 GEORGE HOt-lER 92680 MASAHIRO HONDA 94086 C. H. HOOGENCIOORN 0001 SOUTH AFRICA DAVID R. HOPPE 60196 GREGORY L. HOPWOOD 92713 PETER HORAN 3127 AUSTRALIA DAVID HORNBAKER 80202 THOMAS P. HOVEKE 60618 K. B. HOWARD 93277 ' CHARLES P. HOWERTON 80004 HERBERT H. HOY 95008 STANLEY J. HUBER 94510 JAMES M. HUDSON 02181 STEPHEN P. HUFNAGEL 78712 MIKE HUGHES 57709 GUSTAVO HUNG PERU LENN S. HUNT 61742 J. C. HUNTINGTON 85019 MICHAEL D. HURLEY 22312 JOHN & BAKBARA HUSEBY 97701 BOB HUTCHINS 92663 P. L. IIUTCHISON 76101 S. RAY HUTTON 68503 MICHAL IGLEWSKI 00901 POLAND ASIIOK D. INGL~ 75080 DAVID L. IRVINE 84102 F. L. IRVINE 4350 AUSTRALIA R. L. IRWIN 77036 MICHAEL ISTINGER A-lOUD AUSTRIA 90025 CALVIN W. JACKSON CHUCK JACKSON 94035 CRAIe E. JACKSON 22302 JOHN R. JACKSON 60542 W. JACKSON 3168 AUSTRALIA KENNETH R. JACOBS 20795 PREll N. JACOHSON 5]/06 ROBERT F. JAKOB 53210 LOUIS B. JAMES 14609 JUHANI JAllIA SF-33500 FINLAND W. JANSSI::N 53092 STJEPAN JARNJAK YU-41000 YUGOSLAVIA J. E. JEACOGKE G12 8QQ UNITED KINGDOM RON JE~'FRIES 93017 JOHN P. JENKINSON 75006 DAVID C. JENNER 98115 JOHN JENSEN 79409 AUTHOR R. JETER 85028 K. ~I. JINKS LAl 4i'W UNITED KINGDOM BARTLEY C. JOHNSON 02116 JOHN JOHNSON 52240 MARK SCOTT JOHNSON 94132 SUE JOHNSON 87545 VICTOR A. JOHNSON 55404 ED JOHNSTON 55901 RICHARD A. JOKIEL 19518 BRUCE JOLLIFFE V6T 1W5 CANADA A. J. JONES WDI 1SA UNITED KINGDOM D. JONES UB8 3PH UNITED KINGDOM RONDALL E. JONES 87185 JOHN W. JORDAN 01890 NIKI JORDAN 95051 EDWARD JU])GE 01060 CHRISTER JUREN 5-981 01 SWEDEN MICHAEL KALICINSKY 0-4790 GERMANY DENIS KALTHOFER 19147 GILBERT KAPLAN 11415 RICHARD A. KARHUSE 60201 GUNNAR KAlU.SSON S-411 35 SWEDEN ROBIN KASCKOW 10017 NORMAN R. KASHIlAN 10029 HEIKKI KASKELMA SF-00400 FINLAND ROBERT KAST 07876 KOZAl KATSUTOSHI 30332 ED KATZ 55112 JEFFREY KATZ 06095 ROBERT N. KAVANAGH S7N OWO CANADA JOSE I. KAZA HEXICO NEIL T. KEANE 5-175 86 SWEDEN THORNTON KEEL 78751 ROY KEELEY JR 36582 RUSSELL B. KEGLEY 55112 JAN KEISER 0-2800 GERMANY P. KELLEY 2600 AUSTRALIA GUY KELLY 92111 PAUL L. KELLY 77092 JANICE ANN KELSO 01532 JEREMY KENAGHAN UNITED KINGDOM JIM KHALAF 92714 RICHARD KIMBALL 01754 LAURA L. KING 94114 ROBERT S. KIRK 95051 EDWARD E. KIRKHAM 53214 RICHARD J.D. KIRKl-1AN UNITED KINGDOM KHI A. KIRKPATRICK 87701 NED J. KISER 46514 J. H. KLAHN 74004 MARK KLEIN 03857 ROGER KLOEPFER 49269 REX KLOPFENS TEIN JR 43402 WALTER J. KLOS 21031 EDWARD W. KNUDSEN 21204 SVEND ERIK KNUDS EN CH-8092 SWITZERLAND JACK KOCHER 61752 DAVID A. KOHLER ~5118 D. KONIGSBACH 06891' PETER KOOLISH 94086 LEOB KOPF 14601 G. A. KORN 85715 CARY KORNFELD 94043 DIETRICH KREKEL 0-5000 GERMANY G. KREMBS 12401 J. G. KRISHNAYA 411 001 INDIA C. T. KROUSE 98662 RICHAIID KUllAT 55414 GARY A. KUOIS 20024 DAV ID KUllLMAN 92122 JAMl:':S W. KUIPER 48103 BENJAMIN KUIPERS 02155 DUio'F KURLAND 95051 IVAR LABERG NORWAY RICHARD D. LAnSEN 19422 JACQUES LAFRANCE 74171 DAN M. LALIBERTE 55812 C. A. ~G CBS 8BA UNITED KINGDOM KATHY LANG B15 2TT UNITED KINGDOM LARRY LANGDON 20018 LAURENCE R. LANGDON 83705 GUY LAPALME IDC 3J7 CANADA CHARLES LARSON 52240 STEVE LASSMAN 93017 ROBERT LATHE 0-8046 GEBl-1ANY ARTHUR L. Y. LAU 11973 JAN LAUGESEN DK-2500 DENMARK PIERRE J. LAVELLE 22061 BRAZIL LUC LAVOIE H3C 3J7 CANADA D. E. LAW KTI 2EE UNITED KINGOOM RICHARD J. LAW 11767 CHARLES LAYTON 2601 AUSTRALIA PAUL LEBRETON 81212 ROBERT J. LECHNER 02115 ROBERT L. LEECH 10996 ALLAN LEECII.AN L8S 4Kl CANADA KEN LEESE K2P OG2 CANADA KENNETH O. LELAND 92106 IAN LEMAlR 85254 DENIS LENIHAN SWll UNITED KINGDOM PAGE 25 R. KENT LEONARD 80222 FRANK LEPERA 11973 LANCE A. LEVENTHAL 92067 J. A. LEVIN 92093 ROBERT LEVINE 11020 LEON S. LEVY 080]4 DAVID J. LEWIS 14850 DON Lt<:WIS 92806 GEORGE LEWIS 94086 J. A. LEWIS 2000 SOUTH AFRICA SAH LInAI 49512 ISRAEL ALAN LILLICH 02154 CARROLL R. LINDUOL.'1 90403 BKUCE LWK 87115 JORGE LINSKENS RA-I069 ARGENTINA RICHARD LINTON 53211 KWI::E TJOE LIONG 1012 VT THE NETHERLANDS ~IARTIN LIPELES 91320 DAVID LIPPINCOTT 48104 BILL LIPSKY 10013 STEN WUNGKVIST S-603 78 SWEDEN RICHARD LLEWELLYN 21045 R. J. LOADER RG6 2AX UNITED KINGDOM JOHN C. LOCKIIART 08541 J. J. LOGAN 22101 R. J. LONG 4069 AUSTRALIA LARRY LOOS 63701 ERNST LOOSER 2119 AUSTRALlA ROBERT E LORD 99163 LARRY A. LOTITO 92663 MICHEL LOUIS-SEIZE H2Z 1A4 CANADA TIn LOWERY 90278 JOHN F. LUBIN 19104 L. W. LUCAS 93555 ROBERT LUCAS 97203 PAUL C. LUSTGARTEN 53706 RICHARD G. LYMAN 84116 WILLIAM LYNN 75223 STUART LYNNE CANADA KEN H. HA 06492 J. P. HAC CALLUM 03242 B. C. MACDONALD 95410 DAVE HAGIl.ART 55901 GEORGE MACK H9R IGI CANADA HEATHER A. MACKAY 3181 AUSTRALIA THOHAS HACKEN:.t.IE K8A 3C5 CANADA ROY MADDUX 20034 TOSHINORI MAENO 177 JAPAN HANK S. MAGNUSKI 94303 RICHARD L. MAHN 48197 KEVIN T. MAHONEY 01742 RONALD MAK 95133 MANUEL HALL D-2000 GERMANY EDWARD S. MALLINAJ< JR. 44092 VERNON J. BALLU 77056 W. J. UALTHUS NEW ZEALAND VINCENT llANIS V6T lW5 CANADA MIKE MANTHeY 14226 RICK L. MARCUS 55455 J. P. NARKS 94304 CHRIS W. MARTIN S10 2TN UNITED KINGDOM DAVID P. MARTIN 90045 PETER D. MARTIN 01450 GEORGE A. HARTl NEZ JR. 90023 ERIC MARTINOT !:f4/U3 GENE HARTINSON 55440 GERALD HASPERO F-92410 FRANCE JOSEPH W. HAST 22801 PRABHAKER HATETI 3052 AUSTRALIA W. J. MATHER 2001 AUSTRALIA TOU ~lATHIEU 99352 DAVID MATTllliWS 48176 NED N. NAYRATH 74128 NED N. MAYHATH 74128 D. W. MCCAMMISH 75080 B. HCCRAE 3053 AUSTRALIA GARY MCDONALD 64468 JACK HCDONNELL 90503 ROBERT L. HCGHEE 2U015 ALBERT F. ~ICGIRT 87544 DANIEL R. MCGLYNN 10549 STEPHEN S. MCGRANE 55117 M. L. MCGRAW 30na CHARLES W. HCKAY 77058 MICHAEL MCKENNA 02154 S. BROOKS MCLANE ,16802 JEREMY MCLUCKIE 2192 SOUTH AFRICA 94301 COLIN MCMASUR S\l'ART J. HCRAE SW7 2AZ UNITED KINGDOM PHILIP F. MEADS JR. 94611 JACK R. Mb:AGHER 49008 BASIL HEDDINGS T6H 3Xl CANADA BRIAN A. E. HEEKINGS LAl 4YN UNITED KINGDOM PAUL MEILLEUR 95466 MICHAEL ROBERT MEISSNER 55455 HAROLD MELAMED 55116 MONTE JAY MELmtAN 60016 ttONTE J. ~rgLDMAN 60016 WARR~ K. tlELHADO 11020 L. F. MELLINGER 91405 YVES HENARD H3C 3P8 CANADA BERT MENDELSON 01063 STEPHEN F. MERSHON 98055 JOHN J. MERTZ 53151 BOB METZCER 48640 D. P. HETZCER 85019 KURT HE'iLE 19454 MARK MICHELSON 84115 KATHLEEN S. HICKEN 23185 N.EUO MIEMINEN SF-33720 FINLAND NARK M. HILLARD 97216 CHARLES E. MILLER 17257 LESLIE J. MILLER 03051 MIKE MILLER 66506 EAUl. e. illl.T.~R Qt.OR7 ROGt:R .i'lIL~ER 55112 TERRENCE MILLER 92093 VICTOR S. MILLER 10598 RICHARD B. MILLWARD 02912 WENDY UILNE NR4 7TJ UNITED KINGDOM PAUL MINKIN 55426 S. M. MINTON 33143 STEVEN L. MITCHELL 10003 WILLIAM A. MITCHELL 77024 E. N. MIYA 91103 V. L. HOBERG 92021 MORTEN MOEN N-3290 NORWAY STEVE MOLES CM17 9NA. UNITED KINGDOn 'c: SEPTU1BER,1979 PASCAL NEWS #15 JAMES HOLONEY FRANK MONACO ANNE MONTGOMERY 06902 30060 80230 CHARLIE MQNTGOllER'i JOE B. ~k)NTGOMERY ALLAN }lOORE 97077 62906 14215 11. W. MOORE 92626 JUNE B. MOORE 94960 R. T. mORE K2H SRb T. S. HORAN PE19 3L5 RAYMOND HOREt CH-IZ04 RAYMOND G. MORETZ JR. 18015 CARROLL HORGAN 2072 CHRISTINE HORRIS GREG HORRIS 95050 01581 THCMAS M. MORRISETTE CHARLES Y. MORROW 18104 15213 R. R. H:)RSE 03031 01754 14627 JOHN A. MORSE RICHARD D. HQSAK PAUL J. HOIZ I. A. t()ULTRIE T. MOWCHANUK ARNOLD H. I1UECKE ERIK T. MUELLER GEORGE H. MUELLER U. SHAHID J>IUJTABA GLEN R. J. HULES MAURICE R. MUNSlE GENE MURROW LARRY MUSBACH BOB MYERS GENE MYLES PHILIP R. HYLET JOHN NAGLE GEORGE NAGY ROBERT NARAD ISAAC R. NASSI DAVE NAUlIAN JOHN NAUMAN THOMAS M. NEAL DAVID NEDLAND-SLATER ROBERT NEELY ROBERT D. NELL CRAIG NELSON BRUCE NERASE CHARLES NEUMANN MALCOLM C. NEWEY H. W. NEWLAND DENNIS NEWTON JAMES NICHOLS JEREMY S. NICHOLS MARTIN NICHOLS DEN!IlIS NICKOLAI KELVIN B. NICOLLE J. F. NIEBLA CARL F. NIELSEN JAN HOJLUND NIELSEN PEDER NEDEBOL NIELSEN JOliN A. NIERENGARTBN MARY NOBRENBERG HANS NORDSTROM RON NORl·1AN ROJ\]1.HT NORRIS CANADA UNITED KINGDO}1 SWITZERLAND AUSTRALIA N2G 4E5 CANADA SOUTH AFRICA 3042 AUSTRALIA 75235 . 02139 55435 94305 10804 2000 AUSTRALIA 91367 63045 45429 J9H 6K2 CANADA 22206 95051 68588 13069 01754 55455 55455 92634 GU14 80H UNITED KINGDOM UNITED KINGDOM S4P 2H8 CANADA 32901 55104 63045 2600 AUSTRALIA SE1 7NA UNITED KINGDOli 94611 03801 55440 07801 92037 5001 AUSTRALIA 90303 92123 DK-H06 DENMARK DK-8200 DENMA£K 54601 55409 5-195 00 SWEDEN N2C 2EO CANADA 10965 BILL NORTON 53115 DICK NORTON 61801 PAULA OCIIS 97077 MICHAEL OU'E 10028 ARI OLIVE IRA 91303 MARK L. OLSON 45701 P. B. ORCHARD 5022 4LD UNITED KINGDOM BOB ORl{ 78766 FARREL OSTLI:::R 84601 ROBERT H. OTTOSEN 48197 HUGH OUELLETTE 55987 WAYNE N. OVERMAN 212U2 JOHN D. OWENS 10304 ALAN OYAMA 99352 STEVEN OYANAGI 55455 JOSEPH A. 0' BRll:o:N 90274 MARK T. O'llltYAN 49007 MAURICE 0' FLAHERTY BT36 8LF UNITED KINGDOM STEVE O'KEEFE 20229 JOSEPH O'ROURKE 19104 HARM PAM 9700 AV THE NETHERLANDS BILL PAGE 01876 GARRETT PAINE 91011 THOMAS J. PAUl 98199 JEFF PALMER 67203 KURT PAPKE. 55101 JEFFRY L. PARKER 94086 KODNEY PARKIN 2042 AUSTRALIA KEVIN A. PARKS 21234 ROSS R. W. PARLETTE 94088 WALT PARRILL 62025 JOHN PARRY 7005 AUSTRALIA J. RICHARD PEARSON 80004 JOHN PEATI1AN 30332 JOHN PEMBERTON 94131 RUSSELL J. PEPE 08854 JII1 PERCHIK 02139 G. PEREZ 2000 SOUTH AFRICA DAVID PERwAN 55-427 ARTHUR PERLO 06520 PETER C. PERRY 5109 AUSTRALIA HIKE D. PESSONEY 35805 DAVID PETERSON 01776 ERVING S. P·:FAU 70118 75075 GERALD PFEIFFt:R WILLIAM F. PHILLIPS 92807 85019 T. L. PHINNEY D. T. PIELE 53141 ROBERT PIEKC!;; 78746 llOUG PIHL 55440 2580 AUSTRALIA 1. PIRIE B-1l70 BKLGIUM ALAIN P IROITE 19104 STEPHEN M. PLATT SCOTT PLUNK-ETr 96821 55414 JEFF L. POMEROY 3052 AUSTRALIA P. C. POOLE T. D. POPPENDIECK 55104 LUCIEN POTVIN K2H 8S9 CANADA WARREN G. POWELL 19144 94596 GENE POWERS JACK POWEJ{S 95193 A-4020 AUSTRIA KARL PRAGERSTORfER 018l:10 DAVID L. PRESSIHmG ')')4'),) MICHAEl, PRl ETU1.A CHARLES PRINDLE 10550 MEL PRUIS 49503 LEO PUTCHINSKI 75075 DOUGLAS H. QUEfiBEMAN 47150 E. H. RACHLIN 85019 J. E. RAOUE 4001 SOUTH AFRICA JUAN RADULOvrC 10016 JOHN RAE NEW ZEALAND RICK RACER 92714 SUNDAR RAJARATNAM 560 012 INDIA ROBERT J. RAK.I!:R 94104 STEVEN R. RAKITIN 07110 N. WtACHANDRAN 20036 THEO RAMAKERS 13502 JAYASHREE RAMANATHAN 77025 PETER M. RAllS TAD 55113 LAURENCE L. RAPER 48076 CHARLES RAPIN CH-I007 SWITZERLAND ERNST WALTER RASCHNER 0-4790 GERMANY WALTER J. RATAl 01824 ROGER RATHBUN KlL 3N6 CANADA BRUCE w. RAVENEL 94109 BRUCE K. RAY 80307 LINDA LEA RAY PAUL IHCHAEL REA 92625 GERHARD RECREL 0-7000 GERMANY CHARLES E. REED 06608 C. EDWAl{]) RElO 32308 ROBERT REINHARDT YU-61001 YUGOSLAVIA ROBERT RESS 95826 CRAIG W. REYNOLDS 94087 HONOR REYNOLDS 12305 SAMUEL M. REYNOLUS 91103 SAM E. RHOADS 96910 ROBERT L. RHODES 91761 L. RIANHARD 07960 LLOYD RICE 90404 DAN C. RICHARD 67226 CARL RICHARDS T2V DU5 CANADA GARY A. RICHARDSON 91303 CHARLES RIDER 91326 JOHN E. RIEBER 97005 E. H. RIGBY 2500 AUSTRALIA DONALD H. RINGLER 20601 DAVID RIPLEY 08540 H. RISTITS L7P 1W9 CANADA KEN RITCHIE 68005 94025 C. ROADS RALEIGH ROARK 98133 CARROLL B. ROBBINS JR. 28704 F. ERIC ROBERTS 06856 IAN ROBERTS 2006 AUSTRALIA J. D. ROBERTS RG6 2AX UNITED KINGDOM 90274 MARK L. ROBERTS KEN ROBINSON S09 5NH UNITED KINGDOM PETER ROBINSON CB2 3QG UNITED KINGDOM 45433 STEVEN ROGERS RONALD A. ROHRER 04469 11725 FRED Rmmo MICHAEL ROONEY 02154 90245 BOB ROOSTH 22043 ROBERT ROSE 15213 BRIAN ROSEN .f. F\I'N Rn~;'~N 554'i5 CAROLYN A. ROSENBERG J. ROSENBERG HICHAEL ROSENBERG ALAN ROSENFELD DAVID A. ROSSER RICHARD ROSS-LANGLEY RICHARD L. ROTH H. J. ROWE LAWRENCE A. ROWE DAVID ROWLAND STIlART W. ROWLAND PETER ROWLEY CHARLES A. ROYNTON OSCAR RTOS IRA RUBEN LOUIS V. RUF FINO FRANK KUSKEY JOHN L. RUIlS P. E. RUTTER V. RYBACKI ODD W. RYDEN DAVID J. RYPKA JOHN RYZLAK. D. E. SMULA TIM J. SALO ARTHUR E. SALWIN WILLIAM SAMAYOA PAUL SAMSON ROBERT E. SANDERSON TOH SANUERSON TOM SANDERSON WAYNE A. SANI)ERSON FRODE SANDVIK GEORGE SARGENT NEIL SARNAK JAMES B. SAXE TOM SCALLY JOSEPH F. SCHAUB JR. WERNER SCHENK DONALD E. SCHLUTER G. MICHAEL SCHNEIDER CONRAD SCHNEIKER H. JAMES SCHNELKER RICHARD SCHROEI)EL KENT SCIiROEDER JAY SCHUMACHER ROLF SCHU!1ACHER BEN SCHWARTZ FRANK SCHWARTZ DAVID T. SCOTT WILLIAM H. SEAVER DUANE W. SEBEH MARK J. SEBERN JERRY W. SEGERS MARK SEIDEN LARRY SEILER HARK SENN A. SJ:.'WARDS JERRY SEWELL JR. GEORGE M. SHANNON IAN SHANNON JOSEPH "c. SHARP R. J. SHARPE D. E. SHAW 90266 3168 AUSTRALIA 10020 97223 96274 AL3 6BL UNITED KINGDOM 06468 LEI 7RH UNITED KINGDOM 94720 97201 44124 R9R 1T9 CANADA f-14s lJ7 CANADA 92713 19002 20854 V8W 2Y2 CANADA 97106 07733 WCI UNITED KINGDOM 01851 1)0540 07430 55424 55455 22209 55901 98033 98846 91311 87002 55112 N-7034 NORWAY 48804 2195 SOUTH AFRICA 15213 11040 10577 14580 90302 55455 95051 80123 55427 55435 80302 0-2000 GERMANY 07821 02173 87112 92&26 55372 53012 30332 10598 91125 47905 K2K 1N8 CANADA 97229 02173 2010 AUSTRALIA 94303 2601 AUSTRALIA V7R 4L6 CANADA PAGE 26 JEFFRY G. SHAW JOHN U. SHAW ASHOK SH&N()LIKAR AL SHEPPARLl THOMAS E. SllIELDS P. L. SHIMt:R-ROWE KERRY SIIORE KEN SIBERZ LINDA SIENER STEFAN M. SILVERSTON BILL SIMMONS DENNIS SIHMS THONAS W. SKELTON JAMES K. SKILLING F. R. SKILTON C. R. SKUTT LES SLATER CAROL SLEDGE IRA SLODODIEN BARRY SmTH BROOKS DAVID SHITH DAN SMITH JAMES A. SMITH J A:t-IES E. SMITH KENNl':TH G. SMITH LAWTHER O. SHITH M. G. SMITH RICHARD SNODGRASS PAT SNYDER REGIS B. SNYDER JR JA:t-IES SOLDEIUTSCH N. SOLNTSEFF SAMUEL SOLON MANFRED SOMMER LEE L. C. SORENSEN THOliAS J. SOUCY J. B. SOUTUCOl"r JOliN R. SOUVESTN.E TERRY L. SPEAR RICHARD SPELLE1tB~RG LUTHER SPERBERG JOHN SPIKER RICHARD D. SF ILLANE ROB SPRAY D. SPRIDGEON ALLEN SPRINGER LEONARD SPYKER M. A. SRIDHAR G. J. STAALMAN BRIAN T. STACEY BILL STACKHOUSE RICHARD STADTMILLER KENDALL STAMBAUGH J. DENBIGH STARKEY MICHAEL K. STAUFFER GARY B. STt~BBINS E. L. STECHMANN CHARLES A. STEELE JK. GREG STEELE HEINZ STEGBAUER MARK STEPHENS NIGEL STEPHENS JACK STEVE DAVE STF.:VENS ROBERT K. STEVENS }1AUREEN J. STILLMAN R. D. STINAFF A. 1. STOCKS JERRY STODDARD RICHARD A. STONE ENGELBERT STORK ROBERT STRADER ALAN STRELZOFF B. STRONG JANES F. SULLIVAN R. K. SUMHIT MARKKU SUNI SILVIA SUSSMAN A. J. SUTTON MARY SUTTON STANLEY M. SUTTON EDGAR N. SVENDSEN LARS Y. SVENSSON STANLEY M. SWANSON E. G. SWARTZ/tEYER S. D. SWIERSTllA RICHARD TAWR A. E. TADASHI S. TAKAGI KEN TAKAHASHI RAMON TAN HIDEHIKO TANAKA ANDREW S. TANENBAUM BRADLEY M. TATE BRUCE TAYLOR DAVID K. TAYLOR RICHARD N. TAYLOR S. TAYLOR-REED F. TEMPEKEAU R. D. TENNENT ·MICHAEL TEPPER S. S. THAKKAR PRAKASH THATn: RICK THOMAS RON THOMAS CHARLES THOMPSON LADONNA THOMPSON PAUL THOMPSON JIM -THOMSON DENNIS K. THORSON LAVINE THRAILKILL COYT C. TILLMAN JR. PATRICIA TIMPANARO HERVE TIREFORD ROBERT TISCHER KEITH TIZZARD JEFFltEY TOBIAS NOBUKI TOKURA THOMAS TOLLEFSEN MASAYUKI TOMIMURO ROGER TOREN SCOTT R. TRAPPE HAlUUS TROOST JAY TROW TAZUYKI TSUNEZUHI RICHARD L. TUCKER JIM TUKLU J. TUltN1WLL 94Udts 20014 1172.5 30313 22304 93021 55107 90046 95014 03060 55440 80221 48823 01740 L25 3Al 97034 01862 15229 94104 91107 53211 65211 N2L 3G1 02178 KOA 3GO 18936 2600 15213 68025 60164 19085 L8S 4Kl 94087 D-8000 90604 01905 5001 70005 80302 55440 10010 91364 CANADA CANADA CANADA AUSTRALIA CANADA GERMANY AUSTRALIA 07666 75240 HU6 7RX UNITED KINGDOM 02139 3173 AUSTRALIA 560 003 INDIA THE NETHERLANDS 2193 SOUTH AFRICA 94903 22091 98225 99164 94062 98370 55112 01854 55435 A-2340 AUSTRIA 99123 GU7 2DP UNITED KINGDOM 83814 V5A 1A6 CANADA 33432 02173 60004 33319 55440 55435 S-442 00 SWEDEN 44139 02062 2146 SOUTH AFRICA 92707 94304 SF-20500 FINLAND NN7 3LJ UNITED KINGDOM 27101 H4T INI CANADA 77092 45840 S-440 74 SWEDEN 77843 30303 THE NETHERLANDS 95014 730 JAPAN 244 JAPAN 01730 10016 10031 1007 MC THE NETIiERLANDS 75240 2064 AUSTRALIA 55812 98055 LN12 INQ 92127 K7L 3N6 0-1000 M13 9PL 60164 20012 55435 V6P 5S2 55424 55441 95540 07922 40506 02139 22003 CH-12l! UK-2000 EX4 4PU 2232 560 95442 99164 V5A Is6 97206 92713 78704 95051 45324 80020 M1 lEI) UNITED KINGDOM CANADA GERMANY UNITED KINGDOM CANADA SWITZERLAND DENMARK UNITED KINGDOM AUSTRALIA JAPAN CANADA UNITED KINGDOM 02162 PRESCOTT TURNER UN lTED KINGDOM ROGER 1. TURNER 06520 ROBERT W. TUTTLE 3168 AUSTRALIA P. J. TYERS GORDON UBER 10591 95129 CHOI UISIK 4001 SOUTH AFRICA j::. G. URI-ISDN TOM URSIN 55440 812 JAPAN KAZUO USHIJlMA 04-01 MALAYSIA LAURIE DAVIES VALLENTlNE DICK VAN DEN BURG 1183 AV THE NETHERLANDS P. J. VAN DER HOFF 2651 VN THE NETHERLANlJS 78731 S. VAN ERP 94545 DICK VAN LEER B-I050 BELGIUM PIERRE VAN NYPELSTEER 48176 JOHN VAN ROEKEL 98133 DWIGHT VANDENBERGHE 63110 MICHAEL W. VANNIER 85019 W. VAUGHN 55440 JAMES A. VELLENGA B-3030 BELGIUM P. VERBAETEN NEW ZEALAND M. H. VERHAART 55440 JIM VERNON 92634 VINCENT VIGUS 48106 RICHARD C. VILE JR. 06787 JOHN V. VILKAITIS ADRIAN VILLANUS TRE RA-1425 ARGENTINA 60104 RICHARD VILHUR 01880 ROBERT VINCENT JOHN S. WADDELL 45387 55455 C. J. WADDINGTON BOB WALLACE 98007 C. S. WALLACE 3168 AUSTRALIA DAVE WALLACE 94598 DAVID R. WALLACE 85021 BRUCE D. WALSH 91301 DAVID P. WALSH 20901 MARIE WALTER 92714 DAVID WARD KIA OR6 CANADA MIKE WARDALE M1R 5A6 CANADA SCOTT K. WARREN 77005 ALLEN A. WATSON 07602 JOHN L. WEAVER 79604 L. KIRK WEBB 78712 NEIL W. WEBRE 93407 WALTER WEHINGER D-7000 GERMANY DAVID M. WEIBLE 60680 KEVIN WEILER 15213 RUTH WEINl:>ERG ISRAEL LEN WEISBERG 94304 JOE wJnsr~ 95452 RAY WEISS 90801 J. R. WE1START 62563 TOM WEISZ 48103 ANTHONY B. WELLER weIR OAH UNITED KINGDOM PETER WENTWORTH 6000 SOUTH AFRICA BOB WEKNER 52333 JOHN P. WEST 30327 DANA WHEELER 94707 NOKM WHEELER 90230 DONALD E. WHILE 44141 C. G. WHITAKEH. MK43 OAL UNITED KINGDOM N. WHITE SIS 5BG UNITED KINGDOM L. P. WH1TEHEAIl 3131 AUSTRALIA P. WHITEHEAD SW7 2EX UNITED KINGDOM AKE WIKSTROU s-402 20 SWEDEN D. M. WILBORN 90746 ALAIN D. D. WILLIAMS NWll 8DP UNITED KINGDOM C. J. WILLIAMS M3A 1N3 CANADA KIM WILLIAHS v3N 4N8 CANADA NIGEL WILLIAHS 7007 AUSTRALIA H. WILLHAN ,JI730 ROY A. WILSKER 02114 FRED WILSON 91602 JAN R. WILSON 70808 ROBERT WILSON L6T 3Y3 CANADA JIM WINSALLER 93111 LEESON J. 1. WINTER 01720 DAVID S. WISE 47401 MARK WOLCOTT 48130 CHARLES A. WOLFE 91342 TON WOLFE 91107 HENRY WOOD 08540 STEPHEN E. WOODBRIDGE 32905 ANDREW S. WOYAK 55405 DON M. WRATHALL 85704 H. R. WRIGHT 19102 TO}! WRIGHT 55420 66216 RUDOLF F. WRO})EL JOHN C. WYl1AN 13206 02154 MICHAEL T. WYMAN HlNEO YAMAl(AWA 73190 02168 EARL M. YAKNER 4067 AUSTRALIA D. J. YAnS 90024 BRADLEY N. YEARWOOD KIET T. YEN 55455 FRANCIS W. YEU~G 18976 PERTTI YLlNEN SF-33900 FINLAND CHRISTOPHER yo:.:u:. 10028 JAHES YORK 92805 H. YOSHIDA 02173 R. M. YOUNG J8X 1C6 CANADA 95476 COLEMAN YOUNGDAHL 94941 ALEXANDER YUILL-THORNTON I I 55455 PETER H. ZECIDiEISTER 3000 AUSTRALIA R. ZECTZER 0-8000 GERHANY ERWIN ZEONIK 95051 FRED ZEISE 77036 PETE ZIEBELHAN 95030 STEPHEN N. ZILLES 95132 ANDREW HARJUS ZIMMEREAN 80302 PHILIP R. ZD-1HERHA.,"I JR. 97005 DONALD A. ZOCCHI 44022 TCM ZWITTER ***************** Introduction New. Business Packages available Cyber-Score Inc, Software Dept, Suite 406 - The Riker Building, 35 West Huron Street, Pontiac, Michigan 48058 (313-338-6317) have advertised Pascal-written software that includes Depreciation, Interest, Checking, Metric, Base2816, Sortl, Sort2, Forml040, Stocks, Handicap, Calculator, Decision, and Vol 2 for Business soon to be released. NorthWest Microcomputer Systems, 121 East Eleventh Street, Eugene, Oregon 97401 (503-485-0626) have vintage turnkey business systems, including Accounts Receivable, Word Processing, Client Information Management, General Ledger, Fuel Dispensing & Accounting. = rn I-' VI P.S.Inc, Fargo, North Dakota have Pascal business accounting packages including a general ledger, accounts payable, accounts receivable, inventory control, order entry. All seem to be linked together into a single comprehensive system. Interactive Technology Inc, 14350 NW Science Park Drive, Portland, Oregon 97229 (503-644-0111) are "simply ecstatic over recent articles and the general enthusiasm that is growing for Pascal. 1I In a recent letter, they gave us a lot of information on their plans (see Open Forum). This happily matches up with the requests from James A. Anderson, Arnold Bob, Ken Leese, Monte Jay Meldman and Nield Overton, who are all looking for business-applications software. (See Here and There (Tidbits) Section except for Ken.) Data-Base Management Systems (/J rn Wilhelm Burger in Texas is working on a DBMS system in Pascal. Its seems he is working with the AAEC IBM 360/370 Pascal, and has a Parser Generator, but is now working on the Da ta Base Manager. -u -l rn Boeing Computer Services in Seattle, Washington is developing a sophisticated data base management system in Pascal. Interpreters An APL interpreter written in Pascal won the first prize in the IIGreat APL Contest" of Byte Magazine. The authors were Alan Kaniss, Vincent DiChristofaro &. .John .s8.ni: lni of 1327 McKinley Street, Philadelphia PA 19111. The program is described in Byte, June 1979, for those interested. A portable LISP interpreter has been developed under Contract W-7405-ENG-48 for the US Department of Energy by T..A.Cox '.r::l'i W.P.Taylor. The Report is available from NTIS as Order Number ifUCRL-52417 at $4.00 per paper copy. The title is "A Portable LISP Interpreter lt , and the complete interpreter (in Pasc.al) is given. Cox & Taylor worked for UC Lawrence Livermore Laboratory, Livermore, CA. Inter-language translators The application notes introduced a few issues ago continue to flourish. However we do have some problems at PN headquarters in checking the quality of programs submitted, and therefore we welcome any comment or certification of correctness by readers. This section has elicited much favourable comment. Our thanks to those members who wrote in to let us know what they thought, and especially to those who submitted programs. Applications Roy Freak at the University of Tasmania has written a Fortran to Pascal translator which has successfully translated over 170 Fortran programs into Pascal, including some difficult examples from Ed Yourdon's books and some Fortran test programs that found their way into the Pascal Validation Suite (for testing the accuracy of sin, cos, etc). The translator makes an extensive analysis of the Fortran text, and is about the size of a large compiler. It is designed both to preserve equivalence in its transformations and to produce as good Pascal as can be achieved. It analyses expressions to see where Pascal's precedence rules require extra parentheses, analyses the control flow structure to try to produce whiles, ifs, cases, etc from Fortran's constructs, and analyses the call structure -u J> c, rn N '-' Software Tools Applications Changes to S-l "Compare" so that it can nest procedure subprograms as deeply as their usage allows. It also handles COMMON and EQUIVALENCE by making some assumptions about Pascal representation mapping. These extensive analyses make the translation a relatively slow process for some of those very large complicated Fortran programs one sees sometimes, but most programs or subprograms are translatable in a reasonable time (limited by lexical analysis and other factors). The translator does not handle Fortran I/O (because it needs run-time information to do a complete job, or knowledge of intent), nor does it handle adjustable arrays completely (because the facility is not in Pascal). Outside these restrictions however, the translated Pascal version should be ready to compile, or to be massaged by hand should the user have to cope with non-standard Fortran or wish to improve the program. Unfortunately the translator runs only on Burroughs B6700 computers (and compatible machines) because it is written in Burroughs Algol and uses random-access disk files to store its program blocks. Bits & Pieces Glad you liked the LLL Lisp system. It looks like a very clean and extendable syst~. "2. It appears that the Kernighan & Plauger "Software Tools" may soon be available in Pascal. See the writeup from the Ratfor Newsletter - "Rat Informant". Names like PUG and RAT are so bad they give me MUMPS! "3. Newman & Sproull "Principles of Interactive Computer Graphics" Second Edition McGraw-Hill 1979 uses Pascal to "publish" graphics algorithms. Unfortunately, they merely left out the hidden line program listings, rather than be bothered to translate them from SAIL to Pascal. So the new edition is streamlined, but less complete. "4. I would like to use the programs published in the PN, but I can't use any of them. They all use Standard Pascal or extension features not available in the P4 subset, which is all that I have at my disposal." { P4 is neither a subset of Pascal, nor an acceptable standard. to implement all of Pascal. } We encourage PUG members The extract from Rat Informant reads: "Several people have attempted translations from Ratfor to other languages including Pascal, C, Algol, BCPL, and Basic (yes, even Basic ••• )." This may not mean what Bill thinks, but it is intriguing to speculate on what might happen if all the Software Tools were to be pascalized, perhaps by the Fortran to Pascal translator. } Donald Knuth has developed a system called TEX (Tau Epsilon Xi -- rhymes with "Tech") for producing beautiful typography for programs and programmers (including mathematicians as a subset of the above). See the article "Mathematical Typography" in the Bulletin of the American Mathematical Society, Vol 1 No 2 March 1979 (New Series). We understand that the original program, written in SAIL (or MAINSAIL, we're not too sure) is being translated into Pascal and this version will be the eventually published one. All Pascalers will applaud using Pascal to bootstrap more elegance lnto our 'systems. Rich eichelli reports that ANPA/RI are close to having an enhanced version of the North American Philips conformity checker for Pascal. He says it is a priority project at ANPA!RI. Willett Kempton has certified use of Compare (Software Tool 8-1), and sent in some corrections to fix up a bug and improve the product. We are publishing the comparison output of Compare run on itself and on its enhanced brother below together with the letter. Readers will undoubtedly note that the version of Compare used to produce the listing has a few (no doubt machine-dependent) features not in the standard-conforming version. The letters "a" and "b" at the left margin indicate the source of the lines and the marks the line changes where these are minor. We have heard of many other piaces where Compare has been used successfully. = rn ::;:: C/) UNIVERSITY OF CALIFORNIA, BERKELEY BEIlKELEY • DAVIS' IF\VINE • LOS A?> \ ()!jA:-,TITATIVE A:-,TIIHOPOLOGY DEI'ART:\1.El'\T OF' A:\'THROPOLOGY William G Hutchison wins our "PUG Friend of the Month" award. With all the interesting information received, a virtual Captain Pascal Magic Ring is on its way. Bill writes: "1. (See PN1I12, June 1978, page 20.) SANTA BARBARA' SANTA CRUZ 2220 PIEDMONT AVE:>\UE BERKELEY, CALlFORl\'IA fl4720 Dear Jim, Your compare program replaced a more primitive one written here and has been very helpful. It ran without modification on both our PDP 11 (UNIX) and CDC 6400 systems, and with minor modifications now runs on our DG ECLIPSE AOS (P4 Pascal) system. C/) I enclose two mods which I believe are worthmaking to the distribution version; these 1) plug a hole, and 2) make it more useful for data files. More specifically: rn --0 --I rn 1) If the original version says "no differences", you cannot count on the files being the same. They may contain lines _longer than Linelength and lines are not checked past that point. A check and warning are added in ~ the enclosed version. 2) The original output display was fine for program source files but very poor for fixed format data files (which presumably abound in a So~ial Science Research Facilities Center). The modified version pairs mismatched line~ and points out differences with an arrow. It only does this if the mismatching sect10ns are the same number of lines (usually one) on each file. The output was also made a little more compact, despite the fact that it now contains more information. THis may seem like a frill if you haven't had to work with lo~g data files, but it saves considerable time and keeps our coders from going b11nd. It does not seem particularly useful for source program files, and can be turned off by setting a constant FALSE •. .To facilitate inspection of these mods, I enclose our complete modified vers1on, and output COMPAREing the version published in PASCAL NEWS (file a) with our version (file b). To see its use on data files, I also enclose output from one of our applications. Together, these mods increase the length of the source program about 15%, and seem to have no appreciable effect on execution time. Thank you for making this software available to the Pascal user conrrnunity. I hope you find the enclosed material of use. N co cOllpare. version 1 .. 3 .ateh criterion =3 b (7 Nov 78) b b lines. extra text: b b ************************************ b b b b b b b b b 4~ 5J 51 52 53 54 55 .is~atch: • b on fileb, between lines 46 and 47 of filea b b Another program parameter (constant), "MarkuneqJalcolu~~s", specifies that when unequal lines are found I each line fr~~ FiLea is printej next to its c~rre5p'njing line from Fileb, and unequal colJmns are marked. This option is oarticularl v useful for fixej-form~t data files. Notes: Line pairi~g is' not attempted if the mismatching sections are n~t the same number of lines on each file .. It is not currently very smart abo~t ASCII control c~aracters lik~ ta~ .. (~ .. Ke~~tonl ~ov 75) 47 48 b b b b b b b b b ************************************ filea l line 63 version '1.2p ver-sion = '1.3 63 72 not equal to b b fileb, line 72: b b b (78/03/01)'; c7 Nov 78)'; ************************************ extra text: b b extra b on fileb l between lines 56 and 67 of filea IF markunequalcolumns = true; 75 77 on fileb l between lines 78 and 79 LINES IlE T3 3E OAIR,D, } COLU~NS MARKED } UNE~UAL mismatch: • ~f b filea extra text: on fileb l between lines ~8 and ~9 mismatch: of filea ( FLAG IF SOME LINES NOT COMPLETELy 309 318 311 312 313 CH~((Et ************************************ extra text: on fileb, between lines 151 and 152 of filea if not eoln(filex) then li~estoolong:= ************************************ mismatch: b b b b b b D b b D b b b b b 305 351 filea l lines 285 thru 2y2 on fileb, between lines 297 anj of filea 2~~ procedure writepairs( pa, ob : line~ointer; la, lb : int~aer); { THIS ~RITES FROM THE HEAD TO THE CURSO~, LIKE PR)CEDURE ~RJT~T~YT { UNIL pbA .. tength . • !hen maxcol := pa- .. length else ~axcol := :lo-.leng~h; ~~;t~~l ~1:~ ~!!!o~~~~es used for- file name anj line n~nb~r :! if tempa(colJ ;; tempbCcolJ then write(1 writeln; writeln; pa := oa-.nextline; l:s : = la + 1· pb := pb- .next line; to : = lb + 1; until (oa = a.cursor) or (oa ;: nil); end; I) else write('·'); {~qITEPAIRS} ************************************ filea, line 305 not equal to fileb, line 351: else writeCls II f:1, - to '1 l:1); else write('s I , f:1, • t~~~_:! ... ~:!!! (/) rn linestoolong : boolean; 111 165 322 323 324 325 325 327 323 329 33J 331 532 333 334 335 336 337 333 33, 340 341 342 343 name : char; 9J ************************************ b UNEQU~L ~ND ************************************ te~t: writeonelineC ~ .. na~el lineno, 0); p := pA.nextli~e; lineno := lineno + 1; ************************************ filea: compare .. orlQln fileb: compare.new extra t,xt: 314 315 316 not equal to 314 315 31S 317 318 319 true; fileb, tines 299 thr:.J 316: 285 286 287 283 289 290 n1 292 procedure writetext(PI q : linepointer); begin { WRITETEXT } wri te In; while (~ <> nil) a ... d (0 <> q) do begin writeP * I ) ; if p-.length = 0 then writeln else writeln(p".irnag! p"'Ae~~th); p:= p- .. ne~tli:'le 299 30J 301 302 303 304 305 305 307 303 309 311 311 312 313 procedure writeoneli ... e(name char; integer; begin {'lITEONELIN'} write(1 ., name, l:5,' I ) ; if p .... length = 0 the~ writeln else writeln(p ..... image : p .... length); end; {WRITEONELINE } procedure writetextCvar x : stre3~~; { WRITE FROM X.HEAD TO ONE LINE BEFORE X.CURSOR var PI Q : linepointer; lineno: integer; begin { WRITE TEXT } p:=x .. head; q:=x.cJrsor; lineno:=x.headlineno; While Cp <> nil) and (p <> q) do begin b b b b b b b b p : linepointt'r); b b b b 355 356 357 358 filea, lines 309 thru 319 not eQual to l ; ne s 355 thru 3;'::,,';: -l rn procedure printextratextevar x stream; xname char; v:s r y stream; yname : char); begin ( PRINTEXTRATEXT ) wr~te(~ extra text on file', xname, I , I) ; wntel1nenoCx); writetn; if y.head =- ni l then writeln(1 before eof on file t l yname) else writelnC' betwee ... lines ., y .. heajlineno-l:1 1 ' a~j . y .. headlineno:1 1 • of file', yname); wrltetext(x.head l x.cursor) procedure printextratextCv:sr x, y : stream); begin ( PRINTEXTRATEXT write(1 extra text: on file', x .. name l 360 361 -, '); 362 363 364 365 35S if y.head = nil then writeln(' before eof on file', y .. name) else writeln(1 betwee~ lines ., y.headlineno-1:1, y.headlineno:1 1 • of file', y.na~e); writeln; writetext(x) ************************************ b fi leb l 35~ mismatch: • -0 ************************************ 323 370 filea l line 323 not equ3 l to 327 and ' fi leb, line 37Q: writeln(' ************************************1); writeln(' ::!:!_:*****************************::~:~:::~~ ************************************ mismatch: , filea, lines 327 thru 335 if emptya then not eq~al printextrat~xtCb, to Ib l , fileb, lines 374 tnru a, ta') 30~: N l.D else printextrate~t{a, 'a', b, Ib l ) else begin writetn(' mismatch: I>; "riteln; 328 32~ 33) 331 ,32 333 334 335 writelnC ' : ' ); writeln(I:I); University of Lancaster writetext(b.head, b.cursor) Department of Computer Studies Bailrigg, Lancaster Telephone Lancaster 6520I (STD 0524) e~otya then printextratext(o, a) if 374 375 376 377 b b b b b b b b b b b b b ~ritelineno(a); IIIritetext(a.nead, a.:::ursor); write(' fileb, I>; IIIriteLineno(b); write(' filea, '): else printextratextCa, b) else begin write(' mismatch: write(1 filea, I>; H3 37] 380 381 382 3B3 384 Professor Bryan Higman, B.Sc., M.A. I); IIIriteline'1o(a); "WritelinenoCb); write(' fileb, I ) ; if markunequalcolumns and «a.cursorlineno ~ a.headlineno) write(' not equal t,~ writeln(':'); writetn; = (b.cursorlineno - ~_h~5dlin~'1n» begin writetext(a); writet!xt(~) end ************************************ on fileb, between lines 374 and 375 of filea extra text: 425 a.name:= 'a'; b.nane:= 'b'; linestoolong::: false; 427 ************************************ on fileb, betw~en lines 393 and 394 of filea extra text: b b b 447 .448 b 45) b 451 b 452 441 if linestoolong then begin writeln; writeln(' WARNING: vriteln(' end; S-2 "Augment" and "Analyze" some lines were longer than " linele'1gth:1, I charact:!rs.'); they were not compared past that ~cint.'): (See PN#12, June 1978, page 23.) Sam Hills, Crescent City Computer Club, New Orleans, has prepared a machine-dependent version of Augment and Analyze for the Zurich dialect of the Dec-10 Pascal, and is working on a similar modification to accept a new dialect from the University of Texas. The program is available presumably, with documentation, from Sam Hills, 3514 Louisiana Avenue Parkway, New Orleans, LA 70125 (79 Apr 16). { Note that this version is ONLY useful to DEC-lO users; statements as input and has various "chaining" features. } S-3 "Prettyprint" it accepts This problem came to light when a few enthusiastic colleagues and myself decided to punch up and use the Formatter, and our output did not look as we were led to expect! Nonetheless, we were very pleased to have the text ~the Formatter published and you have our thanks for this. Maybe someone who has more time to produce a 'mend' will write to Pascal News - I hope so. Best Wishes, YoulS sincerely, non-standard (See PN#13, December 1978, page 34.) Unfortunately, we've misplaced a letter from an eagle-eyed reader which complained about a conflict in the documentation for PRETTY. Indentation Rule 3 clearly states the style for IF-THEN-ELSE. However, lines 336-356 of the source program clearly show that Prettyprint processing itself can produce different results. The reason is that General Pretty printing rule 1 overrides all other rules. In a sense, then, blank lines and blanks are directives to the pretty printer. S-4 "Format" Dear Andy, Wi th respect to program FORMATTER (Pascal News It 13), with which you claim some acquaintance, there is a credibility problem. I do not believe that the program published was used to produce the version that was published. My reason for saying this concerns the treatment of the compound symbol " used to denote sub ranges . That part of the body of procedure readsymbol which attempts to recognise a number (lines 661 680 in the program in Pascal News It 13) cannot possibly have inserted a space following the sub range symbol and preceding the B in, for example, lines 59, 60, 63. The spaces must be inserted between the B and the U in each of the three cases cited. (The same would also be true had these identifiers started with E rather than B, for reasons which should be obvious). One solution is to modify readsymbol by 'borrowing' an appropriate piece of logic from the Pascal compiler, though there may be neater ways. I do not yet have an alternative solution to offer. writepairs(a.head, b.head, a.headlineno, b.heajline,o} e ls e 3B~ 25th April 1979. I); then 335 :z en (See PN#13, December 1978, page 45.) We received many reports (unfortunately) of bugs in Format. For example, George Gonzales has sent a corrected though heavily modified version, fixing more than a dozen problems. We plan to print a list of corrections as soon as we can find the time. Bob Berry sent the nice letter below: TRUE CONFESSIONS I (Andy) shamefacedly admit to having edited the " •• " symbol in several places. What happened was this: as I was preparing the source of Format for publication I noticed ~ev~ral botherso~e rough places. One of these was no blank preceding some occurrences of ••• Because th~s appeared in both the source and the result of Format run on itself I edited the result not thinking that this was an ingrained symptom of Format b~ing cont~n~a~IY"run across itself (wel~ before I received it). Another rough spot I confess to f~x~ng was the ugly break~ng upon wraparound of several expressions in assignment statements. I'm very sorry. (/) en -0 -i en S-5 ID2lD Receding a Pascal Program Using ID2ID How to Use ID2ID Andy Mickel University Computer Center University of Minnesota Minneapolis, MN 55455 USA ID2ID is available as an operating-system control statement on CDC 6000/Cyber 70,170 computer systems. The general form of the control statement is: Assuming SOURCE TARGET and REPORT. ID2ID is a program designed to quickly and accurately edit the text of a Pascal program by substituting new identifiers for existing ones. A typical use might be to identifiers to enhance the IDPAIRS are local files, ID2ID will produce results on files PROGRAM EXAMPLE (OUTPUT) ; VAR VARA, VARX, VARY: INTEGER; BEGIN VARX :~ 24; VARY :~ 80; VARA :~ VARX VARY; WRITELN (' CHARACTERS VARA) END. program's text editors are not necessarily good to use for this purpose because each identifier substitution requires one pass through the entire text of the source and For example: Suppose SOURCE is: readability. Ordinary ::E ID2ID (SOURCE , TARGET, IDPAIRS,REPORT) What lD2lD Does descriptive rn (/) Copyright (c) 1979. recode a program with longer, more = * program. Also many text editors do not easily provide the means to distinguish whole identifiers from those identifiers which happen to contain other identifiers (for example, "int" versus "integer"). and IDPAIRS is: How ID2ID Works ID2ID accepts two input files: "SOURCE", a text file consisting of a Pascal source program, and "IDPAIRS" a text file consisting of pairs of identifiers in the form: OLDID, NEWID one pair to a line. VARA,CHARACTERS VARX,LINES VARY,CHARSPERLINE Several situations can pose problems to the process of identifier substitution: 1. An "oldid" may appear more than once in the IDPAIRS file. This prevents unique substitution, and IDZID halts and displa~s the message: .. "DUPLICATE OLDID: a Z. A warning message is issued in the case of duplicate " newid's". This is just to let you know that you may not have intended to rename two "oldid's" to the same "newid". 3. A warning message is issued if IDZID encounters a program "sourceid" which is the same as a "newid". You may not have realized that you picked a "newid" which already existed as an identifier in the source program. Of course an "oldid" in one "oldid,newid" pair may "newid" in a different "oldid,newid" pair. have the same spelling as a In scanning the source program, ID2ID recognizes all identifiers including Pascal reserved words. Of course, identifiers within comments and strings are unchanged. The "E" used to specify exponents in real numbers is distinguished from an ordinary identifier spelled "E". rn -0 then the TARGET produced by IDZID is: --l rn PROGRAM EXAMPLE (OUTPUT) ; VAR CHARACTERS, LINES, CHARSPERLINE: INTEGER; BEGIN LINES :~ 24; CHARSPERLINE : ~ 80; CHARACTERS :~ LINES CHARSPERLINE; WRITELN('CHARACTERS ~ " CHARACTERS) END. An identifier in a Pascal program consists of a letter followed by zero or more letters or digits. ID2ID imposes a practical maximum length of 25 characters for any identifier. This means that ID2ID will not distinguish between two identifiers which do not differ in their first 25 characters. ID2ID reads the file of identifier pairs and builds a search tree which is then used to look up identifiers during the scanning of the source program. Two output files are generated: "TARGET", a text file consisting of the edited source of the Pascal program with new identifiers and "REPORT", a text file consisting of warning and error messages accumulated during editing. (/) * ID2ID uses an AVL-balanced binary tree of identifiers, so it is not affected order in which the identifier pairs are presented on the IDPAIRS file. The above was processed in 0.043 seconds by ID2ID on a Cyber 172 computer using Pascal-6000 3. A program consisting of 891 identifiers on 400 lines was processed with ID2ID pairs of identifier substitutions in 1.6Z4 seconds on a 172 using Release 3. by the program Release with 58 History IDZID was originally designed and written by John T. Easton and James F. Miner at the Social Science Research Facilities Center in 1976 to provide a reliable means of transforming poorly coded Pascal programs into tolerable ones. Subsequent refinements were added by Andy Mickel and Rick L. Marcus at the University Computer Center in 1978 to improve its ease of use and its error processing. ID2ID was redesigned in 1979 by James F. Miner and Andy Mickel to incorporate a better identifier table and secure error processing. This necessitated a complete rewrite of the program. IDZID has now joined a long list of other Pascal sof'twarewriting tools. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 {* * ID2ID - Rename Identifiers In a Pascal Program_ * * * * * * * * * * * 79/06/01. Social Science Research FaciIi ties Center. Andy Mickel 79/06/28. University Computer Center James F. Miner * University of Minnesota Minneapolis, MN 55455 USA Copyright (c) 1979. (Based on an earlier version by John T. Easton and James F. Miner, 76/11/29, as modified by Andy Mickel and Rick L. Marcus, 78/12/0B) THE NAMES AND ORGANIZATIONS GIVEN HERE MUST NOT BE DELETED IN ANY USE OF THIS PROGRAM. * * * * * 67 68 69 70 71 72 73 74 75 76 77 7B 79 BO Bl 82 See the PTOOLS writeup for external documentation. ** * * * ID2ID - Internal documentation. ID2lD reads a file of IDPAIRS and builds an AVL-balanced * binary tree of identifiers while checking for duplicates. It then reads the SOURCE program and edits it to a TARGET file by substituting identifiers found in the tree. A final check is * made for new identifiers which were already seen in the * SOURCE, and a REPORT may be generated. * program ID2ID(Source, Target, IdPairs, Report); label 13 { FOR FATAL ERRORS }; const MaxLength Blanks 25; ~ { MUST BE MaxLength LONG }; CharSet = set of Char; IdLength = ~.&xLength; IdType = record ~me: packed array [IdLengthJ of Char; Length: IdLength end; Balance = (HigherLeft, Even, HigherRight); NodePtr = i Node; Node = record !d: IdType; Left, Righ t: NodePtr; Bal: Balance; IdlsNew: Boolean; case --IdIsOld: Boolean of True: (NewPtr: NodePtr); False: (SeenlnSource: Boolean) IdTable: NodePtr { SYMBOL TABLE }; IdPalrs, Source, 83 B4 85 86 87 8B 89 90 91 92 93 94 95 96 97 9B 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 Target, Report: Text; Letters, Digits, LettersAndDigits: Char Set ; = en procedure Initialize; :..£: begin Rewri te (Report) ; Letters := ['A', 'B', 'C', 'D' , 'E', ' F' , 'N', '0", "p', 'Q' , 'R' , 'S', a , 'b', c , 'd', e , 'f', 'n','o", p, 'q' , "r', "s", D:Lgits := ['0' •• '9'J; LettersAndDigits := Letters + Digits; end { Initialize }; procedure Readld(var In"File: Te.!{t~ ~ 'G', ' tI' , 'I', 'J', 'K', 'L', 'M' , "T' , 'U", 'V' , 'W' , 'X' , 'Y', 'Z', 'g' , 'h' , 1 , ' j ' ' l ' , m, "t', 'u", v, w , x , 'y', ' z'] ; :k' , Ident: IdType); var ChCount: 0 .. MaxLength; begin Ident.Name := Blanks; ChCount := 0; repeat ChCount := ChCount + 1; Ident.Name[ChCount]:= luFiIei; Get(InFile) until not (InFilei in LettersAndDigits) or (ChCount = MaxLength); Ident .Length := ChCount end { ReadId }; (/) en -0 -l ,." procedure ReadldPairsAndCreateSymbolTable; 3: t;j en ~ IdK:Lnd (OldK:Lnd, NewKind); OldId, NewId: Link: LineNum: IncrHgt: IdType; NodePtr Integer; Boolean; 0"0 f--' LD REMEMBER NewId POINTER }; procedure Error; begin WriteLn(Report, on line number': 29, LineNum: 1, , of the "IdPairs" file.'); end { Error }; procedure Enter(var Identifier: IdType; Kind: IdKind; var P: NodePtr; ~ IncreasedHeight: Boolean); Enter USES AN AVL-BALANCED TREE SEARCH ALGORITHM BY NIKLAUS WIRTH. (SEE SECTION 4.4 IN "ALGORITHMS + DATA STRUCTURES = PROGRAMS" PRENTICE HALL, 1976, PP. 215-222.) var -PI, P2: NodePtr; " LD 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 begin i f P = nil then -begin{Id NOT POUND IN TREE; INSERT IT. } New(P); IncreasedHeight:= True; with pj do begin Id := Identifier; IdIsNew ,= Kind = NewKind; IdIsOld ,= Kind = OldKind; Left := nil; Right:= nil; Bal:= Even; .!!. IdIsNew then begin Li~::: P; SeenlnSource!= False end else NewPtr : == Link end else ~ Identifier.Name < Pj.Id.Name then -begin Enter(Identifier, Kind, pt.Left, IncreasedHeight); IncreasedHeight then { LEFT BRANCH HAS GROWN HIGHER case Pj. Bal of 1i. ~gherRight: begin pi .Bal : = Even; IncreasedHeight: = False end; Even: Pj.Bal ,= HigherLeft; HigherLeft' begin { REBALANCE } PI ,= Pj.Left; i f Plj .Bal = HigherLeft then begin { SINGLE LL ROTATION } pt.Left ,= Plj.Right; Plj.Right ,= P; Pj.Bal ,= Even; P ,= PI 164 else begin { DOUBLE LR ROTATION } P2 ,= Plj.Right; Plj.Right ,= P2t.Left; P2t.Left ,= PI; pt.Left ,= P2t.Right; P2t·Right ,= P; i f P2t.Bal = HigherLeft then pt.Bal ,= HigherRight else Pj.Bal := Even; i f P2t.Bal = HigherRight then pt.Bal ,= HigherLeft else Pit .Bal := Even; P ,= P2 173 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 165 166 167 168 169 170 171 172 174 175 176 177 178 179 199 200 201 202 203 end· 231 232 233 234 235 236 237 238 239 240 end" 241 242 243 end {CASE} 244 pi .Bai := Even; IncreasedHeight := False; else if Identifier.Name > Pj.ld.Name then -begin Enter (Identifier, Kind, Pj.Right, IncreasedHeight); i f IncreasedHeight then { RIGHT BRANCH HAS GROWN HIGHER case pt. Bal of HigherLeft' begin Pj.Bal != Even; IncreasedHeight:= False end; Even: pj.Bal ,= HigherRight; HigherRight, begin { REBALANCE } PI ,= pj .Right; i f Pit .Bal = HigherRight then begin { SINGLE RR ROTATION } Pt.Right ,= Plt.Left; Plj.Left ,= p. pj.Bal ,= Even; P ,= PI end else 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 begin { DOUBLE RL ROTATION } P2 ,= Plt.Left; Plj.Left:= P2t.Right; P2t.Right ,= PI; Pt.Right ,= P2j.Left; P2t·Left ,= P; i f P2t.Bal = HigherRight then pt.Bal ,= HigherLeft else pt.Bal := Even; -i f P2t.Bal = HigherLeft then Plt.Bal ,= HigherRight else P1t.Bal := Even; P ,= P2 end; pt.Bal ,= Even; IncreasedHeight : = False end; end { CASE} else begin { Identifier IS ALREADY IN TREE } IncreasedHeight := False; with pt do begin i f IdIsOld then i f Kind = Old Kind then { DUPLICATE OldId' S } begin WriteLn(Report, '*** Duplicate OldId"s encountered: ' Identifier.Name) ; Error; goto 13 end Link ,= P end else begin Id IsNew : = True j else ~ Kind = NewKind then -begin -WriteLn(Report, '--- WARNING: ,Identifier.Name, , has also appeared as another Newld'); Error; Link ,= P end else begin IdIsOld : = True; NewPtr := Link end end end { Enter }; procedure Truncation(var Ident: IdType); begin WriteLn(Report, '--- WARNING: Truncation for identifier, " Ident.Name); WriteLn(Report, 'Extra characters ignored.': 39); Error; repeat Get(IdPairs) until not (IdPairst in LettersAndDigits); end { Truncation }; begin { ReadIdPairsAndCreateSymbolTable } IdTable := nil; Reset(IdPairs)j LineNum:= 1IncrHgt:= False; while not EOF (IdPairs) do begin while (IdPairst = ' ') and not EOLn(IdPairs) do Get(IdPairs); if IdPairst in Letters then-begin -ReadId(IdPairs, OldId); if IdPairst in LettersAndDigits then Truncation(Oldld); while (IdPair;t in [' " ','1) and not EOLn(IdPairs) do Get(IdPairs); if IdPairst in Letters then begin ReadId (IdPairs, NewId); if IdPairst in LettersAndDigits then Truncation(Newld); Enter(Newld,NewKind, IdTable, Incrlfgt); Enter(OldId, Old Kind , IdTable, IncrHgt); end i-' Vl (/) rrl -0 -I rrl 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 else begin WriteLn(Report, '--- WARNING: Malformed IdPair'); else begin WriteLn(Report, ' - - WAR;NING: Malformed IdPair'); ReadLn(IdPairs); LineNum:= LineNum + 1 end end {ReadIdPairsAndCreateSymbolTable }; Error end Error end; procedure EditSourceToTarget; Sourceld: IdType; DigitsE, ImportantChars: CharSet-; procedure Substitute(var Identifier: IdType; P: NodePtr); procedure WriteSourceld; begin with Sourceld do Write (Target , Name: Length); while Sourcer in LettersAndDigi ts do begin Write(Target, Sourcei); Get(Source) end end { WriteSourceId }; begin { Substitute } if P ~ nil then { Identifier NOT IN TREE, ECHO } WriteSourceId else i f Identifier.Name < pi.Id.Name then Substitute(ldentifier, pi·Left) else Identifier.Name > pi.Id.Name then Substitute (Identifier , Pi·Right) else { FODND } with Pi do if IdIsOld then -begin with NewPtrj.ld do Write(Target, Name: Length); while Sourcei inLettersAndDigits do Get(Source) end else begin SeenlnSource := True; WriteSourceld end end { Substitute }; ---u- begin { EditSourceToTarget } Reset(Source); Rewrite(Target); ImportantChars : = LettersAndDigits DigitsE := Digits + ['E', 'e']; while not EOF(Source) do begin while not EOLn(Source) do ~Sourcei in ImportantChars -case Sourcet of ~', 'B', 'C', 'D', 'E', , J' 'K' 'L' 'M', 'N', + [' (' , ""] ; then 'F', 'G', 'H', ' I ' , '0', 'p', 'Q' , 'R' , 'S': 'T': 'U': 'V', 'W', 'X', 'y', 'Z', 'a', 'b', c , 'd', 'e', 'f', 'g', 'h' , ' i ' , , q' , 'r' 'k', '1', 'm', 'n', 0 , s , , t', u, 'v', w, x, y, 'z': begin Readld(Source, Sourceld); Substitute(Sourceld, IdTable) :p:, :j:, end; '0' '1' '2' '3' '4' r;peat' Writ~(Tar~et, '5' '6' ~ourc~i); '7', '8', '9': , Get(Source) 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 until not (Sourcei in DigitsE); "" : begin repeat Write(Target, Sourcej); Get (Source) until (Sourcej = "") or EOLn(Source); if EOLn(Source) then --WriteLn(Report~- WARNING: Unclosed string found' , in source program_'); Write (Target, Sourcej); Get (Source) end' , ('"":' :z rn en begin Write (Target , Sourcej); Get(Source); if Sourcej = '*' then { COMMENT } begin repeat Write(Target, Sourcei); Get (Source) ; while Sourcej <> '*' do begin i f EOLn(Source) then WriteLn(Target) else Write(Targe~ourcel); Get(Source) end' Write(Target, Sourcej); Get(Source) until Sourcej = ')'; Write(Target, Sourcer); Get(Source) end end' , {....,-' { STDCOMMENT begin repeat i f EOLn(Source) then WriteLn(Target) else Write(Targe~ourcet); Get (Source) until Sourcei = '}'; Write (Target, Sourcej); Get(Source) end end {CASE} el;;;-{ OTHER CHARACTERS } begin Write (Target , Sourcej); Get (Source) end; ReadLn(Source); WriteLn(Target) end end {EditSourceToTarget }; en rn -0 -l rn ::;;: to rn ;:0 I-' <.D " 1.O procedure CheckSeenlnSource(P: NodePtr); begin if p <> nil then begin CheckSeenlnSource(Pj .Left); with pi do if IdlsNew and not IdIsOld then if Seen InSource then -begin -WriteLn(Report, '--- WARNING: ,Id.Name: Id.Length, , was specified as a new identifier '); WriteLn(Report, 'and was also seen in the source': 46, 'program unchanged.'); end; 397 Initialize; CheckSeenInSource(pi .Right) 398 ReadIdPairsAndCreateSymbol Table; end 399 Edi tSourceToTarget; end { CheckSeenInSource }; 400 CheckSeenInSource(IdTable); begin { IDZlD } 401 13: 402 end { IDZlD }. SErTU1BER,1979 PASCAL NEIJS #15 5-6 PAGE 35 Prose Disclaimer: The editors are not completely happy with the portability of this program, and several problems were noted in preparing it for publication. In particular, there is insufficient information about the Control Data conventions to help people to convert it to other systems. The pecularities of the 76B character escape and the segmented files are examples. Nevertheless, there is considerable demand for Prose to be released, and it is better than the other text-formatters we have seen. i?rose Instruction Manual 01 Jan 79 Prose Instruction Manual JOhn P. Strait University Computer Center University of Minnesota Copydgnt 1978 Preparation and £>diting of i?rose (such as computer ori€'nt~a documentation) is a tedious procl"Ss. 'rnis procpss can oe madp somewnat easier tnrough the use of computerized tpxt processing tools sucn as text editors and formatters. Tnis writeup aescrines a text formatting program named Prose. Prose and this instruction manual are oripnted toward toe preparation of computer oriented documentation, and so tois writeup assumE'S oasic knowledgp of computer-related text process ing tools. Prose's philosophy is tnat tne user snould not be overwhpl,ned oy a large numb!"r of complicated directives. Toat tn@ syntax of ~"n@ direc'::ives snould bp consis~.ent. Tha~. tn@ text should stand au"., not the directives. Bpcause of this dpsirp for sLnplicity, Prosp mayor may not be tne tool for a given application. The following two taoles Should aid in decioing whptner or not to use Prose. ~ ... d. f. g. 1. tlistorical Notes Philosopny, Goals, and Anilities Prose and Cons Basic Units of Text A General Look at Directives Controlling tne Formatting Environment Short Directive Taole Descriptions of tne Directives: ,. 9 11 14 15 19 2. 21 22 23 24 25 6r eak, Comme nt, Coun t Form Indent, Input Inx, Literal, Margin Option Output Pagl" Paragraph Reset Select, Skip Sortindex, SUbtitle, ritle, Undent Weos Hardware and Operating System Dependant Infor,nation: 26 • CDC KRONOS and NOS Control statement call Coaracter set Prose wr i teup Prosp nas a small nUmOE'r of co,nmancis, wnicn providE' a learnaole set of oasic formatting aoilities. Prose can do unoerlining and discret.ionary nfpnenation. Prose can rememDer and restore tne text processinSj environmE'nt. Prose can prOduce mixed-case or uP2er-case-only output from eithE'r mixE'o-casE" or upper-ca3e-only input. Prose can accu,nulate and produce a sorteo index, referring to page numbprs. Prose can print splE'cted pages on request. Prose can format text in pages with neadf'rs, footers, and other frills. Prose can fill and Justify tE'xt to specified margins. Prose is an extremply portaole program, written ~n s':..andard Pascal, and it uses ASCII as its internal cnaracter code. It is writtE'n to encourage transportation oetwppn compU'::ers witn different hardware and different operating systems. a. b. c. d. Pros@ cannot control photo-typese'::ting macnines. Prose cannot do graphics. Pros@ does not nave multi-column aoili':y. Prose dOf'S not have macros, variaoles, or otner pr o';3r amming languag@-like features. Prose does not nave tnt" ability to store text and re':rieve it later, wito the E'xception of toe special purpose indexing ability. f. Pr ose does not nave taos. 9.,. Prose dops not have oirectivE'S to do everything you always wantE'd to. Somp of tne oasic units of natut:al languagp are the word, tne pnrase, the sentl?ncp, and ':ne l?aragrapn. In tex~. formatting, tnp word, tne line, ana ""De paragraph arp t.hE" oasic units. A word ~s defined as any non-olank string of characters, with a olank on p~ther side. Thus, for ':np purposes of formatting, a punctuation cnaracter is oart of tCle word it is nf>X~. to. By oE'fault, Brose refor,nats its input oy filling woros into lines, adding '7lanks to Justify tnp lin@s to left and rign': margins, and print~ng lines togptner to make paragraens. ~n filling lines, Prosp does not flay attention to tne origInal pos~tions of toe words, out instead f~lls as many wordS as possiole into the output linps, preserving tne original order . . Tne following example illustrates this procE'ss of filling and JustifYIng. Input to ProsE': Tne text E'xamples in this manual have been extracted from Alice's Adventurps i..!:! Wonderland oy Lewis Carroll. rli3tor ical ,~otps Most of tne tE'xt formatting programs available today descend from onE> of s("vE'ral original programs. Among tnese is RUNOFF wnico was developed on the Dartmouth Tim@-Snaring Sys':..em in tne 196".1s. Later, tne Call-a-Computer system providE>d a RUNOFF version called EDIT RLll'lOFf as a text editor command. In 1972, />!icnael tluck, working on toe university of Minnesota's MERI'rss system (a CDC 64~0 running tl1e KRONOS operating system), began to develop a version of E.DIT RU,~OfF that he callpd TYPI:::.3ET. T'tP£SET went tnrough many aevelopmental cnanges, and stabilized somewoat in early 1977 at version 5.~, wnicn is written in CDC COMPASS asse,noly language. Prose is written in the programming language Pascal, and was developed over a year's time starting in the spring of 1977. Tne design of J:lrose was influencea heavily oy TYPESET and so Prose is one of toe many descendants of RUdOFf. pnilosopny, Goals, and Abilities Prose is intended primarily for the preparation of macnine retrievable dOcumentation, and this has influenced tne cnoice of its repertoire of abilities. TYPESET was intended as a "versatile text information processor commonly used to typeset theme papers, term papers, essays, letters, reports, external documentation ••. , and almost any other typewritten text" ['rypeset hl Information, Copyright 1977 oy Michael Huck]. In spite of these aspirations, no program can oe all things to all people, and so it is with Prose. It was intpnded tnat Prose be able to do most of the tnings that are needed to prOduce nign quality computerized text. Tne design of Prose was influenced ~y several goals. First, it snould be possible to produce hiSih quality results, with a mini,num number of directives. Prose snould nave aoout 90% of tne aoilities that you think are useful, and tne ltl% it ooesn't nave snould De tne ones tnat are so esoteric tnat tney are non-essential. Some text formatters taKe tne approach of providing a minimum set of Quilt-in aoilities, along with a "general and powerful" featurE' suen as macros. Tne idea is that you can accompl isn anytning you want (no matter now much effort it will take) oy defining appropriate macros. Tne proolpm with tois approacn is that the user is forced to learn a complica'::ed feature io order to produce any but the most trivial results. "when we were little," the MOcK rurtle went on at last, more calmly, tnougn st.ill soobing a little now and tnpn, "we went to scnool in thE' spa. The master was an 010 Turtle--we used to call nim Tortoise--" "wny dio you call nim Tortoise, if hp wasn't one?" Alice askeo. "We calleo him Tortoise becaUSe ne taugh":. us," said '.:.np Mock Turtle angrily. "Really you are very dull!" "You ougnt to be asnampo of yourself for askin~ such a simple qupstion," added '.:.ne Grypnoni and then tney botn sat silent and lookpd at AlicE'/ whO felt ready to sink into the earth. Output from Prose: "wnen we were little," tne Mock Turtle went on at last, more calmly, ':oougn still soooing a littlp now and tnen, "wp wE'nt to school in the sea. The master was an old Turtle--we used to call nim 'rortoise-- n "WhY aid YOLl call him Tortoise, if he wasn't onp?" Alice asked. "we called nim Tortoise oecause nE' taught. us," saia tne Mock Turtle angrily. "Really you are very dull!" "You ougnt to De ashamed of yourself for aSKing sucn a si,nfl1e qupstion," added tne Grypnon; and tnen they Doth sat silent and looked at Alice, who felt reaay to sink into tne ear tn. Most of text for,natting is filling and -Iustifying. In ~ne aosence of special instructions to Prose (called direct.~ves), it w~ll fill all of toe input words into out.put. linps, and JU3tify all of tnosp 1 ines. Tne distinction Detween one j,lara-:rrapn and tne next is deiinPd oy a Justification~, wnicn causes Pros,: to stop filling the ~urren': output line, and print it without Justify~ng. Slnce tne orpak ~s one of tne most frequent.ly used instructions (as ''''ell as onp of tne si,nplest), it can oe indicated in many ways. Para-jrapns can oe separated (oroken) by one or more blanK lines, ny leading olanKs ty?ed on an input line (a paragraph indpn~.ation), or oy tne Pr03e ".BREAt<" oirectivf'. Thp following E'xample demonstrates tnese ':nree ITIPt.nods. Input to Prose At last the Gryphon said to tnp Mock Turtie "Drive on, old fellow! Don't be all day aoout it!" and he went on in tnf'se words :-- ouffer. There are ten keep Duffers (numcere-d lit thr.au.;n 9) associated witn each of t:npse directives. A Keep parameter may be used to specify wnich buffer to use, out if not specifieo, tne values are saved in tne numerically next buffer • ·Yes, we went to school in the sea, tnougn you mayn't Del iE"ve i t--" • BREAK "! never said I didn't!" PAGE 36 SEPTU1BEL 1979 PASCAL NEWS #15 interrupted Alice • • BREAK ·You did," said the Mock Turtle. "Hala your tonguEd" added the Gryphon, before Alice could speak again. Old values may be recalled by using tne following form: .directivename numoer For example: Output from Prose: .MARGHl 5 At last the GrYPhon said to the Mock Turtle "Drive on, old fellow! Don't 1:Ie all day about itl" and ne went on in tnese sets tne margins to the values that were stored in Keep ouffer 5a W'oras :-- ·Yes, we went to scnool in the se-a, tnougn you mayo' t believe i t--" "I never said I didn't!" interrupted Alice. "You did," said the Mock Turtle. "tiald your tongue!" adaed tne Gryphon, oefore Alice COUld speak again. If no parameter is specifiPd, tne values are set to those stored in the numerically prl?vious keep ouffer. Since the numDer is automatically incremented when the parentnesis form is and automatically decremented wnen no parameter is given, tne buffers can be used as a stack. that Keep used keep .MARGIN( Lit R7tJ } rinen you use one of these methods to create a paragrapn, Prose only dops a Justification break. That is, ProsE'! will not Skip lines or indent unless olank lines or indentations explicitly appear on the input file. There is a way to do fancier things oy using the ".PARAGRAPH" directive, but tnat will be introduced later. .MARGIN ( Llll:1 R611t ) .MARGIN A General Look II Directives In its default mode, erose automaticall,r fills and justifies output lines, and formats the output in pages. DU"ectives are nee-deo to instruct Prosl? to do anything more fancy. Tnere are directives to cnange tne margins, to control options, and to aefine the type of output device you intend to use. A line of directives is indicated by typing tne directive escape character in tne first column of an input linp.. The period was cnosen as tne default directive escape character (although you can Change it if you wisn) cecause it seems very unlikely that anyone would want to type a period in the first column of a line of text. The entire line is scanned for directives. Several directives can oe typed on the same line, provided that they are separated oy tne directive escapl? cnaracter. Eor example: .BREAi{'SKIP 2.MARGIJ:oj( L5 R65 ) Some directives, however, take the remainder of the line as their paramptet, and so no other directives can follow tnese. Long uitectives may extend to several lines. Continuation lines ate inaicated by a plus sign ( + ) typed in column one. The continuation mat be made anywnere that a blank is allowed. For example: .FORM( + III L58 II 173 • PAGE , [ III L58 II 'PAGE' ( Pili] Pili] In tne previous example, the last MARGl1"1 directive resets tne margins to the.it previous values; left It and right 711:1. Directive BREAK COMMEJ.\l'r COUNT FORM Il~DENT ItliPUT I.X LITERAL MARGIN OPT IOl'.j OUTPLlT PAGE PARAGRAPh REBET SELEC'!' SKIP SORTI~DEX SOB'rITLE TITLE UtWeNT wEOS ] Altnough the examples in this writeup will usually snow directives typed entirely in uppet case, upper and lower case letters may be intermixea. Every directive 'begins witn tne name of tne command, for inst':lnce "MARGII.'i". Tne name can always be aboreviated to tnree letters, and in fact, only till?! first tnree letters are examined oy Prose. The name may De followed oy a parameter, out in the aosence of a parameter, default values are used. There are four forms for the parameter: Tne absence of any parameter. A single numeric value. 'ihe remainder of the directive line. A specification enclosed in patentheses, whicn consists of descriptors dt'"fined by tne ditective itsel/. When a numeric valup. is tequir ....d (for a paramE'ter or as part of a descriptor), an explicit positive integet may De given. In many directives, a relative value may be used. Tnis is indicatea at a plus or minus sign before the integer, and indicates tnat tne old valuE' snould be incremented or decremented oy a cE'rtain amount. In the following example, tne left margin is set to 10 and tne rignt margin to 7!it. Tnen, tne margins ate squeezed togetnet by 5 cnaracters on botn sides. Tne formatting environment is def ined to be all the options and specifications that direct Prose as it produces formatted output from unformatted input. Tne concepts that make ufl the formatting environment can be loosely grouped into six areas, and tnete are ditectives to control each one: 1) I1'IPOT controls tne meaning and treatment of cnaracters tne input file. 2) OUTPUT describes the type of output device for which the formatted result is intended. 3) FOM specifies the format of the page into whiCh tne running text will be inserted. This includes wh .... re to pcint titles, footets, and the like. 4) MARGI.i sets the ll?ft and right matgins. 5) eARAGRAPH descrioes special actions for tne beginning of ~acn paragraph. 6) OPTION controls the rest of tne miscellaneous options tnat affect the text formatting process. controlled by these directives, ], numer ic or ( ( ( numer ic numer ic ( ) remainder of 1 ine remaindet of 1 ine nwner ic -none- Ptose treats the remainder of the directive line as a comment, i.e. it is ignored. The COMMENT directive allows you to inclUde in tne source of YOUt document infotmation that will not be printea on tne formatted copy a Sets the page countl?r. Tne numeric parametet can be relative. For example, II .COUN'r +1" increments the page number oy one. In tne absence of a parameter the defaul t is to set tne page number to one. FORM ( parametets ) FORM C D • Ln pf S 'r a ( ( ( or numer ic of line of line or numeric ) 017 numeric ] ) Causp.s a Justification brl?ak. the .directivename( parameters a ) ( ••• ) indicates that the parameter is enclosed in parentneses ana is desctibed in detail along with the description of the ditective itself • key cnar of ( Defines the page format, inclUding titles, foot.l?rs, date/tilue, and the top and bottom of the page. The argument consists' of patampters, followed oy (if appropriatl?) an optional field widtn. For example "T:30" prints the title in a field of 30 cnaracters. Text lines ate ouilt by the FORM directive from left to right, starting in tne first printable column, although tne taobing specificatioh may oe usea to al ter that. The following taDle aescr ioes tne FORM specifications tnat are available. Of tnese six groups, tne INPUT, MARGIl~, OPT IOL'l, and PAaAGRAPd settings are likely to be Changed. often throughout the text. There will probaoly be a small numoer of different sE'ttings, and it will be convenient to be aole to tesume old settings. 'ro accomoaate these needs, a simJ?le device is available fat these four directives. where the paraml?ters consist settings. For instance: ... ... remaindet remainder ... ( numer ic COUNT number COUNT Controlling tne Formatting Environment WOnen setting the options following syntax is usee: Parametet typFl -noneremaindet of 1 ine nwner ic The directives marked witn an asterisk ( * ) cause a Justification break before tney are processed, since they affect the filling and Justifying environment. 1) 2) 3) 4) .MARGIN ( LIe R7~ .I'1ARGIL'l ( L+5 R-5 -.- Break Mp.aninq (action) oreaK Justification no action set page count aefine page format indent following line set input patameters store inuex entty print literal text set margins set options set output parameters eject to top of page set paragraphing params teset airective defaul ts * select pages to pr int sKip output 1 ines sor t and pr int index set the suoti tIe set the main title uncent following line write end of section key letter followed by option MARG 11'1 ( L5 R68 ) sets tnl? left margin to 5 and toe right to 61t. Eacn tiiue one of these four directivl?s is processed, Prose saves tne new values in a ~ meanihg ae£aul t field widtn 24 hOUt clock as hh.mmass (15.37.58) 8 raw date as yy/mm/dd (78/!cl2/13) 8 nice date as dd "'rom yy (13 FeD 78) 9 fill 1n n lines of running text current page number, f selects the form 3 ~ or n arabic numerals (default) [the Hela L upper case lE!t ter width will 1 lower case letter be expanded R upper case roman humerals if neede"J r lower case roman numerals sUDtitle its length main title its len'3th wall clock as hhunm AM (3:37 PM) 8 or nn:mm PM tao forward or backward to absolute column n print literal text print litera! text pr int an end of line print -n- ends of 1 ines nf'E'un't oe so proud as all toa":." "with extras?" aSr(ea tne ,'lock Turtle, a lit~.le anxiously. "Yes," said Alice: "Wf' learned Frf'nc:1 and lT1usic." "And wasning?" said ':Ilf' Mock TurtIf' . "CE'rta1nly not" saia Alice, indi~nantly. "An Tnen yours wasn't a rE'ally gOOd scnool," said tne MOCK 'rurtle in a tone of -jrpat rE'liE'f. "NOW, at OURS, tnE'Y nad, at tOE' end of toe oill, 'FrE'nco, music, AND wASrlIL~G-- !:"xtra.'" define top of page define bo~'::om of page aefault form: • FORM{ [ II T #62 E III L56 II #33 '- , Pl~:l I -' /// J ) 'rnE' !:'uRM directive is processE'd interprE'tivplj. Tois means tnat. toe forlna'::. is re-scannea as each pagE" of OU'::flut is proouced, so changing onE' of the title buffers witn '::ne TITLt.: or SUBTITL£ direct.ives will cnange toP title or suotitle- on ':.he hf'xt page. At first glance, the stutteriny- ffif'tnod may seem clumsy, eu': E'xperience snows that it is reasonably easy "::.0 gpt USE'd to. '1'0 pntf'r words tnat alrE'ady havE' a douele le':.t€'r at tnl:" beginning (liKE> llama and oops), mE'rply precpde tne wora wito two casp snift characters, causing a snift-up/snift-down ( .... LLAl>lA and .... 00PS). KE'e? in mind that ~ne casE' snift cnaractf'r doE'S not nf'E'd ':0 be used unlE'ss you want to creatE' mixed-caSE> outpu'-. from uppE>r-case-only input. It is recommpnded that if poss101e, you usp mixed-cas€' input to create mixed-casl:" output. 'rop top of page definition is usea for sE'veral tnlngs. By usin.;! you can requpst ProsE" to seond a pag'" eject to outpu~. df>vicf> wnen it reaches '::.ne top of a page. You can also the OUTPUT dirE'ctivf>, toe requf>st PrOSf> to pause at the top of eacn pagl:" '::0 allow you '::0 chaoSjI? paper. At the end of the dOCUffil?nt, ProsE' does one last page eJPct, in>:erpreting top FORM specifica'::ion until it r~acnes toe top of pa~f'. 'fop oottom of page stlPcifica~ion is woere Prose incre,nE'n~.s page numbf'r, so if you pr int tne page numoe: both oefore and aftpr oottom of J?age dE>fini':.ion, you will get two different nUffioers. ~ne ~.ne It is easy (once you undprstand the PORM dirpctivE') to prOduCE' fancy page formats. Par exalT1plp, you can desiyn a PORM toat will pr int the page numoer at the rignt of odd numopreo pagps, and at tnp left of even pagps. Tnis is done witn a fOR,,,! toat defines two pagps with ':.10'0 "[liS ana two "J"s: .PORM( PI\GE 37 SEPTEr-1EER,1079 PAS CAL NEW S # 1 5 The dirpctive escape Character is th@ cnaracter you type in first column of an input line to flag it as a ditective linf'. D: top H: The hypnenation cnaracter is USE>d to define oypnenation !?oints wi".nin worCiS. 50met~mes a long woru will causp lUany olanKs to bE' insertE'd to Justify the preceding line. f'rosp will nypnenate suco a word if you have defined thp syllable oounCiries witnin tnat word. Of course, not all tne syllable Doundries nE'E'O OE' specified, only tnose wnere you want PrOSE> to DE' aole to split a word. For example, if toe hypnenation cnatactf'r is set to thE' slaso ( / ), you might typf' "syncopation" as "syn/co/pa/tion". Prose will insf'rt a nypnen ( - ) only wnen tnf' characters on ootn siCies of tne nypnpnation point arf' letters. You mi'3ht type "nyper-activE''' as "nyper-/active", anCi Prosf' will split toP word, if necessary, witnout adding a supE>rfIuous hypnen. If prose is forcpd to insert more blanks tnan a certain thresnold (SE>t witn tOE' <..lP'rIO,~ directiv@), it will issue a mE"ssage sugg@sting tnat you inser"::. hypn@nation characters. [ II T #62 E III L56 II #63 'PAGE' P 11/ I II T i62 E III L56 II 'PAGE' Pili In the absencp of a parameter, special page formatting is done. This is similar to a PORM consisting of a singlE' L specification defining an infinite numoer of lines pE'r page. In tnis mode, tne PAGt; dirE'ctive acts as thougn there are 5 lines lE'ft on ttl{' page. K: Tnp ~ parameter explicitly specifif's wnich kpf'p buffet snould o@ INDENT nurnoer uspd ":0 store ":ne new input numf'rically nf'xt ouffpt". Il~DE1~T InClE'nts tne following line oy a Cf'rtain numoer of spaces. aosence of a parameter, the defaul t is 5. In toe U: opt~ons. Tt'!l:" df'faul t is to use tOE' Text SllrrOUnClE'd oy tne und@rl1ne cnaracter will OE> underlinE'o. 8lanks are not underlined, out f'xpIici:' olanks are. Tne input W1dth is USE'd to specify now many chatacters will De reaa from eacn input line. If your 1nput linE'S naVE> spquencinyo information at the rignt of each linE', you will nE'eu to set toe wia':.n ":0 ao appropriatl:" value. INf'UT ( parameters INJ?UT "number I l'iPU1' The INPllT directive is used to define tnp inpu"::. environ!T1en~, ~na"::. is, tne interpretation of cnaracters on the inpu': file. Tne para,neters can be given in any order, and consist of a key le"::.ter followeLl by a value. The following taole summarizes toe parameters. key If'tter B mpaninq E'xpl ic it olank char acter casE' shift cnat:acter directive escape cnarac':.er nypnenation cnarac':.er keep underlinE' cnaractpr input wiJ"::.n ~ charac"::.er cnaracter character charac"::.pr number character dl?faul t ~ relative nul Enters the U'mainoE>r of thp linE> togE>~ner witn tnE' current pagE> number as an inopx I:"nt-ry. This mpans tnat as tOE' forma':.tE'd tpx": mi]rates from pagf' to pa':)e, tOE' resulting indpx will always Of' correct. nul next nul 15' If a specification is not given, its value is not cnan'3f'd. Toe default value is the one tnat will OP set if tne KE'y letter is ~iven oy itself, ana is also tnp value toat is assignPd When Prose oe'3ins procpss ing. 8: Tne ex?l ici"::. clank cnaracter indicates a blank that Prose Should not tampf'r wi":n. rnus, if tne cross natcn ( 'If) is sppcif~o?a as ':h@ explicit blank: LI'fERAL text I?rints toe remaindpr of tne linE> on tne output file. Tne special processing for upper/lower casE', unaerlining, and literal olanKS is pecfOrinf'd on the text of th@ paraffi@ter, and tnen it is printed as a single output linf'. Tnls output l~ne is J?rintf'd in~el?pr:aentli of filling and Justifying and page formatt1ng processps; 1t 1S transparent to toe usual Prosf' formatting and is not counted as an output line. Tne LITJ:;RAL directivE' is useful for prOducing special ;?rinte: control cnaracters. Por example, .LITE:AAL T • II~PUT ( d# ) sets a print density of B lines per inch on some CDC linp printers. tnen two words that are separated ey an explicit olank: [olr. tSmi th will never oe split from one line to the next, ·and Prose will fill blanks in between the words to Justify a line. MARGII~ MARGIl~ ( parampters numopr MARGI,~ C: The case snift cnaracter ,nust De used to create mixed-case output from------upp~se-only 1nput. When a case snift coarac"::.er ~s specified, Prose automa':ically shifts all upper case le"::.ters to lower case. To specify an upper case letter, one of twa metoods may oe used. Tne first metnod is to surround letters with tne case snift cnaracters, causing a Shift-up and shift-down. Since most upper case letters are at the beginning of a word (fallowing a blank), the second method, called stuttering, is to douDle thE> first charac"::.er of tne word. The following example demons:'rates thE> prOduction of mixed-cas!:" output from upper-case-only input. Toe margin directive is USE'd to set toe left and rignt maqins fot filling ana Justifying. The 18ft margin is toe numoer of l~adin':l spacE's oefore tnE' first printed cnaracter, and tne rignt .1lar-Jin 1S tOf' column numoer of tnp last printed cnaracter. Thus suotracting tOE' l@it margin tram the rignt ,T1c;.rgin givE'S tne numoer of printed colu,TIns. Tne parameters may bE' given 1n any order, and consist of a key letter followeCl oy a valUE>. 'I'np following taole lists tile paramE'':.ers. k,Py letter Input to Prose: • INPUT ( C .. TTliE M/'JOCK TTURTLE WENT ON. .. "w" E HAD TdE BEST OF EDUCATIONS--IN PACT, WE I'IEL~T TO SCHOOL EVERY DAY--" -"I'VE" dEEN TO A DAY-SCHOOL, TUG," SAID AALICE. .. .. :(·ou l'lEEDI>l'T BE SO PROUD AS ALL THAT." .... w"'ITt:! ExTRAS?" ASKED THE I1MOCJ< TTURTLt;, A LIT'fL£ AL~XIGUSLY. ""y'" ES," .sAID AALICE: "Wi. LEARNED Pr'RE,'iCrl MID t1USIC. 11 .... A"1'l'D WASHING?" SAID TriE NMOCK TTURTL£. ""C"ERTAINLY NOT" SAID AALICE, INDIGt~A<'.jTLY. ""A"t:! TTtiEN YOURS I'IASN"r A REALLY GOOD SCrlOOL," SAID TrlE MNOCI< T'fUR'rLE Il~ A TONE OF GREAT RELIE,F. ""N"'0w, Ar "OURS", THEY hAD, AT TtiE END OF THE BILL, '''P''RENCti, MUSIC, "A!'lD WA3IiIl~G--" EXTRA.'" !ll@aning Keep lef':: margin r ign t marg in ~ numbet number dE>faul t ~ , " rE>lativp allowed no yes yf'S If a sJ?E'cification is no"::. givpn, its valUE> is no": cnan':lf'o. Tne aefault value is tnf' onE> tnat will DE' SE'~ if ":OE> r..ey lE'":tf'r is givf'n by ~tself, ana is also t.oe value that is assicjnpo W(ll:"n Prose Deglns process ing. Tne ~ paramet!:"r explicitly specifies woicn o<;eep buffer snoul;J be used to store tne new marg1ns. Tne (Jeiaul':. is to usp ':.oe numerically next Duffer. OP'rIOl~ ( parameters ~ numoer OJ?TIOl~ Output from Prose: Tne MOCK 'rurtle went on. "We nad tOE' oest ·of educations--in fac:', we went to scnool every day--" "I'VE Oeen to a day-scnool, too," said Alice. "You All tne miscellaneous options tnat affE'ct. ":o@ text forma':~in':l process arE' gatnered togetnE'r in the OPTluCll aitectHe. Tnpse op":lons are summarizeCi in the following tao1e. For swi":cn op":ions, "+" is on and "_" is off. PAGE 38 SEPTEr1BER,1979 PASCAL NEI1S #15 "Of course it was," said tne MOCK Turtle. key letter ~ ffiE'aning J pr int error messages fill output lines Justification limit K keel? L left Justify mul tiple olanks 2 blanks after periods r i9nt justify spacing shift to upper: £ F M P R S u' switch swi ten oe-fault --++ "And now did you manage on the twelftn?" Alice went on eager ly. 3 nUIDl?'ric numeric swi ten swi teh swi ten switch relativE! allowed no next "Tna"::.' s enougn about lessons," the GrYPhon interrupted in a very decided tone. "Tell her sometning aoou"::. tne games now." + + nurner 1c aWL ten 1 no If a specification is not given, its value is not cnanged. 'fne default value is the one tnat will oe Se>t if tne key letter is given by itself, and is also tne value that is assighPo woen Prose begins processing. £: Error messages are printed on the main output file, the formatted text. tne .e: option to It E-". intersperseo in Tnese may l:Ie entirely suppressed by setting F: Output lines are automatically filled and Justified as descrioed in the section "Basic units of Text". If tne fill s .... itcn is turnea off, Prose will print thp input linE'S as-Sey are, witnout reformatting to fill up the output linp.s. In effect, a justification oreak is done> after eacn input line. J: In Justifying the left and rignt margins of an output line, Prose nas to insert olanks that are not explicitly on tne input file. The justification li-uit controls the point at whicn Prose will attempt to hYPhenate a word. If, for instance, the justification limit is three, then tne hYPhenation process will oe inVOKed when Prose inserts enough olanks to bring the numoer oetween any adJacent words to three. If oyphenation is not possiole, or Prose is not aole to bring the numoer of inserted blanks below tne limit, an error mp.ssage is printed. .i<: Thp. ~ parameter explicitly sppcifies which keep Duffer should De used to store the new options. 'rne defaul t is to use tne numerically next buffer. L, R: The left and right Justify switches work together to dPtermine wha"::. kind of Justification is dam'!. If oath switches are on, output linps are justified to both the left and rign"::. lnargins. If boto switcnes are off, lines are cen"::.erea oetween tne two margins. If one is on and one is off, the result is one strai9"ht margin (eitner le-ft or rignt) and one ragged margin. The following demonstrates tnese four options. • OJ?TIO~( L+ R+ ) : "You couldn't have wanted it much," said at the oottom of the sea." "I couldn't witn a sigh. Alice; M: If "::.oe multiple blaOKs switcn is on, multiple blanks on the input filFi are considerea "::.0 be significant. Tnat is, if there are several olanks between two woras on the input file, there will be at least that many on tne output file, but Pr:os,:, may add more blanks during the Justification process. If the sWltch is off, multiple Dlanks will De Changed into a single olank. P: If tne 2 blanks after periods option is selected, tnen Prose will Inake sure-that eacn periOd wnlch is already followed by at leas"::. one blank will be followed oy at least two blanKS. Prose will not add blanks before justifying if there are already two. This ~akes it easy to have sentences separa"::.ed by two blanks without requiring you to be extremely careful aDout typing the original text. s: By setting the spacing option, you Can easily proauce single, dOUDle, or triple spaced outpu"::.. Simply set the spacing option to 1, 2, or 3. U: Since some output devices are not aole to handle mixed-case files, you can cause Prose to shift all lower case letters to upper case by selecting the shift 1.Q. ~ ~ option. This is of particular interest to CDC users for whom lower case letters are interpreted as two cbaracters wnen sent to cer"::.ain output devices. Tnis option is also nandy for prin"::.ing large sections, such as sample programs, all in upper case. 0UTPu'r ( terminal-type parampters The OUTPUT directive defines important aspects of tne output device tnat is the destination of tne format"::.ed text. The OUTPUT airective may oe used only once, and must 'appear Defore any lines are pr inted on toe output device or immediately following tne directive " . RESET ( OUTPUT )". Terminal-type may De one of the following; the default is ASC: ASC ASCII terminal, using carr iage return for overpr inting and form feed for page eJect. A teletype is called an ASC terminal al though the form feed will not cause a page eject. This is not a proolem 1£ the eJect option (see oelow) is not selected • LPT Line pr inter, using "+" for overpr inting and "l" for page eJect. Carriage control is supplied automatically oy Prose, and so like any other terminal, column 1 is tne first printing column. AJ Anderson/JacObson terminal, using 1/60th of inch increments for Justification. ASC may be specified for an AJ terminal, Dut the resul t will not have as nigo quality. I f AJ is selected, however, tne output will oe printed more Slowly. For this reason, it is recommended that ASC be used for drafts, and AJ only for the final version. The AJ may be followed oy a numoer specifying the desired pitch (in Characters per inCh), e.g. "AJ 1111". "living afford to learn it," saia the Mock Turtle "I only took the regular course." "wnat was that"?" inquire-d Alice. "RPeling and Writhing, of course, to begin with," the Nock Turtle re-plied; "and then the different branches of Aritnmetic--Amoition, Distraction, Uglification, and Derision. " "I never heard of 'Uglification,'" Alice ventured to say. "What is it?" 'l'ne GrYPhon lifted up oath its paws in surprise. "Never near a of uglifyingJ" it exclailned. "You know wnat to beautify is, I suppose?" 'fne parameters define further characteristics of the output device, and several global output options. The parameters may be given in any order, and are selected from tne following taole. key let"::.er .OPTlul~ ( L- R- ) E "Yes," said Alice douotfully: lIit means--to--make--any"::.ning--prettier. " "well, then, n tne GrYPhon went on, "if you don't know what to uglify is, you ~ a silnpleton." Alice did not feel e-ncouraged to ask any more questions aoout it: so she turnea to tne Mock Turtle, and said "What else nad you to learn?n "wel~, tnere was Mystery," tne Mock Turtle replied, off the sub~ects on his flappers--"Mystery, anClent and modern, wlth Seaograpny: then Drawling--tne Drawling-master was an old conger-eel, tnat used to come once a week: ~ taught us Drawling, Stretching, ana Fainting in Coils." co~ntlng .QPTION ( L+ R- ) : "What was that like?" said Alice. "Well, I ca'n't show it you, myself,1I tne Mock Turtle said "I'm too stiff. And the GrYPhon never learnt it." "Hadn't time," said tne Grypnon: "I went to tne Classical master, though. He was an old crab, ~ was." "I never went to him," the Mock Turtle said with a sign "He taught Laughing and Grief, they used to say." • "So he did, so he did," said the Gryphon, signing in turn: and both creatures hid tneir faces in their paws. "And now many hours a day did you do lessons?" said Alice, in a hurry to change the suoJect. .0PTIOtl( L- R+ "Ten nours the first day," said the Mock Turtle: "nine the next, and so on." "Wnat a curious planl ~ exclaimed Alice. "Tnat's the reason they're called lessons," the Gryphon remarked: "because tney lessen from day "::.0 cay." This was quite a new idea to Alice, and she thought it over a l i ttle Defore she made her next remark. "Then the eleventn day must have been a holiday?" meaning page eJect at top of page ( .. [" in FORM. description) pause at top of page shift output lines to the right underlining is available ~ swi tch swi tch numeric swi tch ~ + E: If tne ~ e] ec"::. option is selected, a form feed "1" will De printed every time tne "[" is encountered in tne FORM specification. P: I f the pause option is selected, every time the "{" is encountered in tne FORM specification, Prose will stop printing and wait for some operator aCknowledgement. On an ASC or AJ terminal, Prose will sound the Dell, and wait for a carriage return to oe entered. For an LPT terminal, tne processing is dependent on the operating system. This option is handy- for using an AJ terminal with non-fan-fold paper, allowing you to roll paper in for each page. For "::.ne CDC version, any single character (not just carriage return) will cause Prose to resume printing on an ABC or AJ terminal. For a CDC 1FT terminal, Prose will print a PM message containing the Prose control statement. s: All ou"::.put tnat Prose produces can oe shifted t.2 the right by any numoer of spaces up to 513. Tnis makes it easy to center the output on a wide printer page. U: If the destination terminal does not have underlining ability and your input does underlining, the underlining availaole option snould be turned off to prevent Prose from trying to generate overprinted underlines. PAGE number PAGE Causes a page eject 1£ there are fewer than the specified number of lines remaining on tne current page. If no parameter is given, PAGE does an unconditional page eject. SELECT ( paramp':ers ) PARAGRAPti ( parameters PARAGRAf'n number PAi{AGRAf'H Paragraphs can De indicated by any of toe methods introduc@d in toe section "Basic Units of Text". Thp PARAGRAPH directiv<=' proviaes a ve::satile method of creating paragraphs. The PARAGRAPH directive sp@cifies wha':. is doo@ W,len a new parilgrapo is signalled oy typing a special cnarac':.er (called tOR paragrapn flag character) in the first column of an inpu4: line. An automa':.:.ic indent or undent can De selected, an automatic skip and/or automatic page eJect can be spE>cified, and you can even haVE> Pros>? automa':.ically number the paragraphs. key le':ter meaning paragrapn Character automatic indent ~ defaul t relative next no no , , ,, ~ character numoer keep numner generator automatic page eJ ect automatic skip automatic undent number number I, U: The au'::.omatic indpnt Ot automatic undent is applied to tne firs':: line of tne paragraph (see top description of I1IJDENT and UNDc!'-IT). If the number gf"nprator is USE'Q, the indent or undent is applit=>d after the numb""r is generated. If tne numbAr generator is specified, a new numopr (or letter) will Of' genf'rated fot eacn occur ranee of the paragraph flag cnarac':.er. Toe numoer generator is initialized to 1 eacO time n@w PARAGRAf'ti se'.:tings go into effect, but resuming an old se':ting will also reSUll1e ':np old numoering. Toe numopr replaces tne !?aragrapn fla:j' cnaracter wnen tne linp is formatteo. The numoer genf"ra::'or paramp::'er has tne form: Nfn f selpcts the numer ic for.n: -olanK.- no number ing N or n araoic numprals upper Ipttl?t L lower case letter 1 upper case romao lower case roman ~ ~ 3 5 10:15 213:+5 ) is used to prints olank lines. Skips a cprtain number of output lines, Le. so to Skip SKIP will never print olank lin@s at the top of a pa.,Jp, at Ipast onE ac':.ual .:olank line mus':. lines at tne top of a page, In the absence of a parampter, 5 lines precede thE'" SKIP directive, are skipped. SORTIVlDEX ( parameters SORTIND£X Tne index entri!:"s that arF' accu.nulateo by I,IJX directives can Of'! sor':ed eitner alt?haoetically or oy 9a9f> numoer, and toen printpd in a fairly flexiole mannl'r. TOf> SORTINOEX directive allows you to spE'cify What column is to be considpreo ':ne firs'!:: significant column for alpnaoetical sorting, oow many lpading blanks to print at tne left of eacn index line, where to inser':. tnp page numapr in eacn linp, and now to format tne page number. Tne pa:a,r,eters may oe given in any order, and are splectf'!d from toe following. key letter defaul':: meanin9 L - - 2 - left WlotO of pagp numoer (field widtn for numoer) M 0 margin (left margin before index lin@) P 0 column (in index en':.ry) to insert page nUffiOer R 2 r igot wid':.h of page numopr {blanks pr inted after} 1 sorting option. if tnis is numeric, it is tnf" first significant colUmn for alphabe':ical sorting. if it is the le':':.er "P", it selects sorting by page number. In tne absence of parameters, tne defaul ':.s are used. SUBTITLE tex': n is the field width, whicn will oe expanded if needed. dire~ .SELECT( Toe de~faul t is to select all pagf"S to be pr inted. SKIP number ,s: a certain num.:JAr of spacps. Tne undent is some':.imE"s known by ':.OF.' na.T\p "ou':dent" or "hanging indent". tn@ printpr page, and so a large numb@r is aOJusted to a small!?:r valuF'. In toe aospnce of a paramE''':.er, ~he defaul b is to undpnt to tne leftmos': prin':aole column. A line can npver be und@ntpd past ti1e lef':most column of RESET RESE1' '( parameters) i\t:SET ( EXCEPT parameters) TOe RESET directive is used to set directives to their aefault values. If you nave changed the values of many directiVes (sucn as FORM, MARGI,~, or OPTION), the sill1ple cOlnmand • RESET resets tne values of all directives to their defaults. be reset selectively by using the second form of tne example, Directives may command. For wri'::.e an end-of-sec':ion on the output file. This directivp is useful for creating multiple section wri'::.eups under systpms witn u':.ili::..ies tnat o1lanipula":.e multiple section files. In the CDC version of Prose, WEOS writes a CDC end-of-record mark. Specifically, tnis dirE'c':ive is used to create indexed writeups at tne University of Minnesota. .RESET( MARGIN OPTION) only resets '.:he MARGIl'l and OPTION directives. excluded selectively. For example, Directives may also oe PROSE ters. • RESET ( EXCEPT FORM OUTPUT ) At toe Universi':y of Minneso":.a, Prose is availaole tnr:ough tnp control sta':.emen':., wnicn nas tnree order-dependant filp parameThe prototype call (WhiCh includes tne default file names) is: resets all direc':.ives with the excei?tion of FORM and OUTPUT. PROSE (I,IJF ILE, OUT PUT, INPUT) Parameters for RESET are selected directive COUNT MARGIN PARAGRAPH FORM OPTIOL~ SELECT INPUT OUTPUT SUBTITLE from the following list of I!IJX PAGE TITLE Tne values of parametf'!rs for most directives are set to their defaults (whicn are listed witn tne description of each directive) with toP exception of toe ~ parameters which are set to "KI3". For the COUNT, Il'IX, and PAGE directives, howE"ver, the action is different. Rpsetting COUNT sets the page counter to 1, resetting INX deletes all index entr ies '.:hat have been accumUlated, and resetting PA(;E causes a page eJect. In addition, since resetting FORM or OUTPUT directly affects tOe printed result, resetting either of these directives also causes a page eJect. INFILE - file containing tf'xt in Prose for,n. OUTPUT - file to receive tne format"::.ed result. INPUT - file used for the pause option of tne OUTPUT directive. Tne following control statement will format a file named DOC ano wri':e the result to OUTPUT: PROSE (DOC) and to format tne PROSt: (DOC, LIST) file but write tne result ':.0 LIST: III 2 PROSE - A TEXT FORMATTING TOOL. J. P. STRAIT. 77/06/05. COPYRIGHT (C) 1977, 1979. AU. RIGHTS RESERVED. 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 PROSE IS A FORMATTING PROGRAM, DESIGNED FOR DOCUMENT PREPARATION. IT IS WRITTEN IN PASCAL AND IS IMPLEMENTED IN SUCH A WAY AS TO ENCOURAGE TRANSPORTATION BETWEEN DIFFERENT HARDWARE AND DIFFERENT OPERATING SYStEMS. PROSE WAS DEVELOPED IN THE SPRING OF 1977, AND DRAWS VERY HEAVILY FROM TYPESET, A FORMATTING PROGRAM WRITTEN BY MICHAEL HUCK. TYPESET, WRITTEN IN COMPASS (THE CDC 6000/CYBER SERIES ASSEMBLY LANGUAGE), WAS IN TURN BASED ON EDIT-RUNOFF. THUS PROSE IS ONE OF THE MANY DESCENDANTS OF RUNOFF. 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 IN STRIVING FOR PORTABILITY, THE DECISION WAS MADE TO REPRESENT TEXT INTERNALLY IN ASCII. THIS MEANS THAT TO TRANSPORT THIS PROGRAH, ONE INPUT ROUTINE AND ONE OUTPUT ROUTINE MUST BE REWRITTEN TO TRANSLATE BETWEEN THE HOST CHARACTER SET AND ASCII. OTHER SYSTEM DEPENDANT DETAILS SUCH AS THE DATE AND CLOCK FUNCTIONS MUST BE CONSIDERED FOR TRANSPORTATION OF THIS PROGRAM. ALL AREAS WHICH NEED ATTENTION WHEN CONVERTING THIS PROGRAM FROM THE CDC 6000 VERSION ARE MARKED WITH NULL COMMENTS IN COLUMNS 69-72. THIS VERSION OF PROSE READS AND WRITES THE CDC ASCII 63 CHARACTER SET. IF YOU RUN SOME OTHER CHARACTER SET. YOU MAY WISH TO CONVERT THE INPUT/OUTPUT ROUTINES TO PROCESS THAT CHARACTER SET. program prose (infile ,output+ 7input/); 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 li51 152 55 56 57 58 59 60 61 62 63 64 65 infinity maint.itle maxinxlength maxiwidth maxkeep maxmargin maxnumberwidth maxowidth maxpage maxshift maxskip maxsplit maxstringlength min subtitle = LARGEST NUMBER + 1 } TITLE INDICATOR } MAX LENGTH OF INDEX ENTRIES MAXIMUN INPUT WIDTH } MAXIMUM KEEP VALUE ) LARGEST RIGHT MARGIN } MAX NUMBER OF DIGITS IN A NUMBER MAXIMUM OUTPUT WIDTH } MAXIMUM PAGE NUMBER } MAX OUTPUT SHIFT } MAXIMUM SKIP COUNT } MAXIMUM NUMBER OF SPLIT POINTS MAX LENGTH OF TEXT LINES } GENERAL REASONABLE MIMlMUM SUBTITLE INDICATOR } 60; - 200; = 9; "" 200; "" 20; = 200; - 999; 50; .., 100; .. 20; ... 222; so = 10i "" false; 166 167 168 169 170 176 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 liB 205 119 120 121 122 123 124 125 126 127 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 THE ASCII CHARACTER SET: 72 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 nul "" soh ". stx etx a eot so enq· aek ... bel ;a bs ht • If • vt ff - s1 dIe del de2 de3 de4 nak eyn etb can .. "" ... ... ... .. ... sub ... esc .. fs • gs - rs - 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17 ; 18 ; 19; 20; 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; blank exclaim dquote hash dollar percent ampersand squote lparen rparen star plus .. ... ... "" "" "" "" "" "" ... "" '" minus period slash zero one two three four five six seven eight nine colon semicolon less equal greater question "" ... "" ... .. .. '" at • 33; 34; b • 35; 36; 37; e - 38; 39; 40; 41; 42; 43; 44; 106 107 108 109 110 32; ascii ... 0 •• 127; m "" ... ... "" ... .. ... ... ... ... f • 64; 65; 66; 67; 68; 69; 70; g • 71; c • d - h • 1 j k· 1 • 77; 45; 46; 47; 48; 49; 50; 51 ; 52 ; 53; 54; 55; 56; 57; 58; 59; 60; 61 ; 62; 63; 72; 73; 74; 75; 76; p • q - r - s t - v - 78; 79; 80; 81 ; 82; 83; 84; 85; 86; 87; 88; y • lbracket "" backs lash '"' rbracket "" caret ... underscore ... 89; 90; 91 ; 92; 93; 94; 95; grav ..,. smalla '" smallb ... smallc ... smalld ... smalle ~ smallf ... smallg "" smallh ... smalli "" smallj "" smallk "" smalll so smallm .. amalin ... smallo ... smallp ... smaIlq ... smallr ... smalls ... smallt ... smallu :. smallv .. smallw ... smallx ... smally = smallz ... Ibrace .,. verticalbar .. rbrace ... tilde ... del ... : : : : : : : : : : inputchar letter marginchar numform optionchar outputchar paragraphch plusorminus quote sortinxchar end; { EXTERNAL CHARACTER } IF A 74 ESCAPE IS REQUIRED IF A 76 ESCAPE IS REQUIRED ch3 "" packed array[l •• 3] direct = 2f com, cou, frm, ind, inp, { lit, mar, opt, out, pag, par, res, sel. ski, sor, sbt7 ttl, und, weo, exc, ill, { } } asciix; { { { { { { { { { { { { { { { { { 1rue, BREAK COMMENT COUNT } FORM } INDENT } INPUT } INX } LITERAL } MARGIN } OPTION } OUTPUT } PAGE } PARAGRAPH RESET } SELECT } SKIP } SORTINDEX } SUBTITLE } TITLE } UNDENT } WEOS } EXCEPT (USED BY RESET) ILLEGAL } THE FOLLOWING ARE NOT DIRECTIVES, BUT IT IS CONVENIENT TO INCLUDE THEM IN THIS TABLE. ASCII TERMINAL } LINE PRINTER } ANDERSON/JACOBSON TERMINAL ILLEGAL } ast, lpt, ajt, ilt} ; dirset "" set 2.f direct; input settings - packed ~ defined : boolean; b,c,d.h,u ascii; : O•• infinity pinxentry .. iinxentry; inxentry "" record x : packed array[l •• maxinxlength] 2i asciix; xl integer; { LENGTH OF ENTRY xp integer; { PAGE NUMBER } next : pinxentry end; marginsettings .. packed defined: boolean; l,r : O•• infinity } } } { .Qf asciix; { { { { { (bre, { { ZERO .. NINE } C, D, E, L, P, S 7T 7W, HASH, LBRACKET7RBRACKET 7 SLASH,DQUOTE?SQUOTE,RPAREN,BLANK } B,C 7D,H7K,U,W7BLANK } A •• Z7 SMALLA •• SMALLZ } K,L7R~BLANK } N, SMALLN 7L, SMALLL ,R, SMALLR,BLANK E,F7J7K,L,M7P,R7S7U7BLANK } E,P,S,U,W7BLANK } C, I,K 7N,P 7U7BLANK PLUS ,MINUS } DQUOTE, SQUOTE } L 7M,P ,R, S ,BLANK boolean; boolean; boolean; boolean; boolean; boolean; boolean; boolean; boolean; boolean; chl0 "" packed array[l •• 101 174 <= MAXSTRINGLENGTH - 2 < INFINITY > (REASONABLE) INDICATES THAT C IS UNDERLINED. 200B charclass "" packed ~ digi t : boolean; formchar : boolean; 172 173 >= MAXIWIDTH + MAXNUMBERWIDTH + 2 + ~; 171 175 MAXSTRINGLENGTH MAXMARGIN (EVERYTHING) (EVERYTHING) 67 68 69 70 73 74 75 76 C 154 155 156 157 158 159 160 161 162 163 164 165 CERTAIN CONSTRAINTS ARE APPLIED TO THE MIN/MAX VALUES 7 TO ELIMINATE ARRAY OVERFLOW CHECKS AND OTHER ERROR CHECKS: 66 71 • 1000; ". true; THE TYPE ASCII IS EXTENDED FOR INTERNAL USE IN THE FOLLOWING MANNER: ascii2host .. packed record c : char; chr74 : boolean; chr76 : boolean 153 44 45 46 47 48 49 50 51 52 53 54 asciix ... 0 •• 255; 131 COMPLETE EXTERNAL DOCUMENTATION IS AVAILABLE,. AND IT IS MAINTAINED IN PROSE FORM. REFER TO THAT FOR AN OVERVIEW OF PROSE. 33 34 35 36 37 38 39 40 41 42 43 PAGE 40 SEPTEr1BER,1979 PASCAL NEWS #15 ~ ~; numberform '" (numeric, upperalpha 71oweralpha, upperroman, lowerroman, nonumbering) ; optionsettings '"" packed ~ defined : boolean; e,f,1,m,P7r7u boolean; j tS : O•• infinity ~; paragraphset tings "" packed ~ defined: boolean; O•• infinity; ascii; -ioUni ty •• inf ini ty; numberform; O•• infinity; O•• infinity; O• • infinity remember • O•• maxkeep; split point - packed ~ point O•• infinity; { POSITION OF SPLIT POINT WITHIN WORD inpot : O•• infinity; { POSITION OF SPLIT POINT WITHIN INLINE { bypnt : boolean SPLIT POINT REPRESENTS POSSIBLE HYPHEN 331 332 333 334 335 .!!!!!; patring • packed array [1. omaxstringlength] ..9! asciix; string - array [1 .• maxstringlengtb].9i ( STa[1].C ALWAYS - ' packed record CHARACTER } e asciix; IF C-" ", NUMBER OF BLANKS, ELSE CHARWIDTH nbi : O•. infinity 336 337 338 339 340 341 342 , 343 344 345 346 232 233 234 235 236 237 ••c : array [char] asc74 : array [char] 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 ase76 : array [char} badjustlfy blankcount blankllne : integer; : integer; : boolean; 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 } 347 2f ascii; CONVERT 76 ESCAPE CODE TO ASCII J OPTION } { { { { dirch directline directs eject endofinput ensure2 errarnl errorn2 errors errorsmail errorl errorlO : : : : : : : : : : : : boolean; boolean; boolean; integer; integer; boolean; boolean; asciix; : chlO; DIRECTIVE NAMES { { { { { { { { E OUTPUT } INTERNAL EOF INDICATOR P OPTION } ERROR IN NUMBER } ERROR IN NUMBER } ERRORS IN THIS PROSE RUN NUMBER IS TOO SHALL } ERROR TEXT } {ERROR TEXT hyphen 1nebar incolumn infile inlength 1nline inwidth Inxbase inxlast : ascii; { { : asciix; integer; { { : text; : integer; { { : string; : integer; { : pinxentry;{ : pinxentry;{ integer; { : integer; { : integer; { : integer; { : boolean; { ; integer; { : integer; { : integer; { : boolean; { : integer; { : boolean; { : boolean; { : •• ray[I .. 121 { moreonleft multipleblanks ublanks nchars newinline newoutline newparagraph ngaps nicedate nsplits nwords nuabering numbe rwid th outlength outline outwidtb pagenumber parachar paracount parapage paraskip pause printerrors ravclock rawdate .ightjustify rightmargin saveinp : : : : : : : : boolean; boolean; integer; integer; boolean; boolean; boolean; integer; : chlO; { { { { { { { { { : integer; { : integer; { : numberform.; integer; integer i string; integer; integer; ascii; integer; integer; integer; : boolean; : boolean; 371 372 373 : chlO; : chlO; N PARAGRAPH } LENGTH OF OUTPUT LINE {OUTPUT LINE } { W OUTPUT } { CURRENT PAGE NUMBER { F PARAGRAPH } { PARAGRAPH COUNTER { { { { P PARAGRAPH S PARAGRAPH P OUTPUT } E OPTION } } {CLOCK TIME AS HH:MlI:SS {DATE AS YY/HM/DD } : boolean; { R OPTION } : integer; { R MARGIN } : array[remember] .Qf inputsettings; : array[remember] PARAGRAPH STACK } 2f boolean; { { SELECT DIRECTIVE SETTING { SPLIT POINTS WITHIN IIORD shift shiftup space splits : : : : integer i S OUTPUT } boolean; { U OPTION } integer; { S OPTION } array [I • •maxsplit] .Q.f splitpoint; terminaltype text textindex textlength title : : : : direct; { OUTPUT TERMINAL TYPE } string; { FOR BUILDING FORM SPECIFICATIONS integer; { CURRENT TEXT POSITION } integer; { LENGTH OF TEXT } array[boolean} .2!. pstring; titlelength : array {boolean] underavall underchar unde rlining underdir wallclock word vordlength : : : : { boolean; ascii; boolean; boolean; chlO; string; : integer; TITLE AND SUBTITLE BUFFERS .2!.. integer; . { TITLE AND SUBTITLE LENGTHS { { { { { U OUTPUT } U INPUT } UNDERLINING FLAG } UNDERLINING FLAG IN DIRECTIVES CLOCK TIME AS HH:MlI AM } { { CURRENT WORD } LENGTH OF WORD } 377 378 379 380 { 381 382 383 384 }, 385 { } 388 389 390 ASCIICBAR - CONVERT LITERAL HOST CHARACTER TO ASCII. 391 392 393 394 395 397 398 function asciichar( ch : char ) : ascii; begin { ASCIlCHAR } asciichar :"" asc [chI .!!M { ASCIICBAR }; 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 } GENERAL UTILITY ~~~ 396 } procedure errore n : integer); forward; procedure validate ( .y!!. num : integer; min,max,err : integer); forward; procedure reinitialize( which: dirset ); forward; UPPER - CONVERT ALPlWlETIC CHARACTERS TO UPPER CASE. upper( eh : asciix ) : asciilt; bedn { UPPER } if class [eh] .letter -"then if ch >- smalla then--;pper :- eh - 32 ~ upper :- ch else upper ; - ch ~ { UPPER }; ~ 414 415 416 LOWER - CONVERT TO LOWER CASE IF ALPlWlETIC. 417 418 419 420 422 423 424 425 426 427 428 429 430 function lower( ch : asciix ) : asc11x; begin { LOl/ER } .ll. class [ch] .letter then !!. ch ( c z then lower :- ch else lower :- ch e~lower :- ch end { LOWER. }; 431 432 + 32 NUHFORK - DETERMINE THE NUMERIC FORK. 433 } INPUT STACK { 374 375 376 421 { { aavemar 369 370 BEGIN OUTPUT LINE INDICATOR BEGIN PARAGRAPH INDICATOR } NUMBER OF WORD GAPS } DATE AS YY HMM DD } NUMBER OF SPLIT POINTS IN IIORD NUMBER OF \lORDS IN OUTPUT LINE { : packed array[Oa .maxpage] } 2f paragraphsettings; 366 367 368 MONTH NAMES } INDICATOR FOR JUSTIFYING M OPTION } BLANK COUNT ON INPUT } WIDTH OF OUTPUT LINE } } selection OPTION STACK 363 364 365 .2f ch3; N PARAGRAPH : array(remember] 362 CURRENT MARGIN KEEP BUFFER } CURRENT OPTION KEEP BUFFER } CURRENT PARAGRAPH KEEP BUFFER L OPTION } L MARGIN } OUTPUT LINE COUNT (IiITHIN PAGE) } INPUT LINE COUNT (FOR ERROR MESSES) LINE NUMBERS EXIST ON INPUT FILE } IIU PARAGRAPH } FOR UPPER TO LOWER CASE CONVERSION LOWERCASE FLAG IN DIRECTIVES } { : array[remember] savepar 361 CONVERT ASCII TO DISPLAY CODE H OPTION } CURRENT INPUT CHARACTER } CURRENT INPUT COLUMN } PROSE SOURCE INPUT FILE } LENGTH OF CURRENT INPUT LINE CURRENT INPUT LINE } W INPUT } BASE OF INDEX ENTRY LIST } LAST INDEX ENTRY} BEGIN INPUT LINE INDICATOR .2i optionsettings; saveopt { } 360 } CURRENT INPUT KEEP BUFFER MARGIN STACK 359 } PO INTERS TO WORD GAPS { lowercase lowerdir months } boolean; { INTERNAL EOLN INDICATOR ascii; { B INPUT } boolean; { F OPTION } boolean; { FIRST ERROR ON THIS LINE pstring; { FORM BUFFER. } integer; { CURRENT FORM POSITION integer; { FORM LENGTH } pst ring ; { FORM FOR NEXT PAGE } integer; { LENGTH OF FORMNEXT } array [0 •• maxstringlength] .Qf 1 •• maxstringlength; { { 358 } : array [ascii] .Qf ascii2host; keepopt keeppar leftjustify leftmargin linecount linenumber l1nenums lockeddent 356 357 { host keepinp keepmar } CiiARACTER CLASSIFICATIONS gaps formnext formnlength 353 } 354 355 integer; { CHAR WIDTH IN PRINTER UNITS ascii; { D INPUT } boolean; { INPUT LINE IS A DIRECTIVE array[direct] 2f ch3; : : : : : : : : : : eol explici tblank fill firsterror form formindex formlength 348 349 350 351 } 352 ACCUMULATED BLANK OUTPUT LINE COUNTER BLANK OUTPUT LINE INDICATOR } {FOR LINE PRINTER OUTPUT carriagecontrol : •• c11; : ascii; {C INPUT } caseeh class : array [ascii] of char class ; charwidth } } } } ascii; CONVERT 74 ESCAPE CODE TO ASCII { 329 330 ascii; CONVERT DISPLAY CODE TO ASCII II { 299 300 .2i { 238 PJl,GE 41 SEPTEt1BER) 1979 PASCAL tlE'~S #15 221 222 223 224 225 226 227 228 229 230 231 } 2f marginsettings; PARAH 434 435 CH .. N, SMALLN, L, SMALLL, R, SMALLR. ERR - ERROR IF BAD NUMERIC FORK. 436 437 438 439 440 function numform( ch : ascii; err: integer) : numberform; begin { NUMFORK } class {eb] _numform. !!. PAS CAL NEW S # 1 5 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 . 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 SEPTU1BER,1979 P AGE 4 2 nbl :"" eharwidth 551 end 552 end 553 numform := numeric;" e~ for x2 := 1 to xl .Q.Q. 554 numform := upperalpha; 1 begin len := len+ 1; 555 small! numform := loweralpha; with str [lenJ do 556 numform := upperroman; begin II form--=- lowerroman 557 smallr numform lowerroman; then c := digit[x2] + 32 558 blank numform : = nonumbering else c := digit[x2]; 559 end nb17.. charwidth 560 else begin errorl := chi error(err); numform := numeric end end 561 end { NUMFORM }; 562 e~ end { GONVERTNUMBER }; 563 564 565 566 CONVERTNUMBER - CONVERT NUMBER FROM BINARY TO TEXT. 567 SRIFTSTRING - CONVERT STRING TO UPPER/LOWER CASE, 568 PARAM STR - OUTPUT STRING. CONSIDERING STUTTERING AND CASE SHIFT. 569 LEN - LENGTH OF OUTPUT STRING. 570 NUM - NUMBER TO CONVERT. 571 FW - FIELD WIDTH OF NUMBER. procedure shiftstring( .y!!. str : string; .y!!. len: integer; 572 FORM- FORM OF CONVERSION. .Y2:!. les : boolean ); 573 var 574 INTERNAL CHARACTER : ascii; intch 575 PREVlOU S INTERNAL CHARACTER procedure convertnumber( ~ str : string; var len: integer; : ascii; oldch 576 PREVIOUS PREVIOUS CHARACTER num,fw : integer; form : numberform ); : ascii; oldoldeh 577 LOOP INDICES } var xl,x2 : integer; 578 digit : array[l •• maxnumberwidthl 2i ascii; begin { SHIFTSTRING } 579 { DIGIT ARRAY } oldch := blank; 580 integer; { FOR DECOMPOSITION nextnum oldoldch : = blank; 581 : integer; { LOOP INnECES } xl,x2 xl := 0; 582 x2 := 1; 583 if len >= 1 584 then if str[l].c "" parachar 585 thenbegin xl := 1; x2 := 2 end; 586 SENDl - SEND ONE DIGIT. for x2 := x2 to len do 587 begin intch ~ lower(str[x2] .c); 588 PARAH DIG - DIGIT TO SEND. II intch '" casech 589 then lcs := not les 590 else i f intch "" oldch 591 th';nlf (oldoldch ;;; blank) and c.lass[intch] .letter proce.d~ sendl ( dig : ascii); 592 thenbegin str[xl].c := upper(intch); !>~ { SEND I } 593 if xl < maxnumberwidth les := true 594 then begin xl : = xl + 1; end 595 digit[xl] := dig else begin xl :"" xl + 1; 596 end i f les 597 end { SEND 1 }; then str [xl].e :::z 1ntch 598 else str[xll.e := upper(inteh) 599 e~ 600 else begin xl := xl + 1; 601 i f lcs 602 begin { CONVERTNUMBER } then str [xl].e := intch 603 xl := 0; else str [xl].c := upper(intch) 604 ~ form.Qf end; 605 numeric : repea t nextnum : = num di v 10; oldoldch : = oldch; 606 sendl(num - 10 * nextnum + zero); oldch :'"' intch 607 nUID !'"" nextnum end; 608 !!!!lil num >= 0; len :- xl 609 loweralpha, ~ { SHIFTSTRING }; 610 upper alpha : rapeat num != nUIll - 1; 611 nextnum != num div 26; 612 sendl (num - 26 ~extnum + a); 613 num :"" nextnum 614 UNDERSTRING - SET UNDERLINED CHARACTERS IN STRING, until Dum 0; 615 CONSIDERING UNDERLINE CHARACTER. lowerroman, 616 THIS IS ALSO DONE IN READPSTRING. upper roman : begin while num >.. 1000 i2. 617 begin sendl(m); num := num - 1000 end; 618 ! i num >.. 900 619 procedure understring( yg str : string; ~ len: integer; then begin sendl(d); sendl(m); Dum := num - 900 ~ 620 ~ uln : boolean ); else if Dum >= 500 621 622 thenbegin sendl(d); num :"" num - 500.!:.ill!. var { INTERNAL CHARACTER : ascii; intch else i f num >= 400 623 : integer; { LOO P IND ICES } xl,x2 thenbedn sendl(c); sendl(d); num :- num - 400 ~; 624 UNOERSTRING } begin { 625 while num >"" 100 do begin sendl (c); ~m != Dum - 100 end; xl : .. 0; 626 i f num >= 90 for x2 :'"" 1 to len do 627 begin intch-;-. str(;21.c; then begin send 1 (x); send I (c); num : ... num - 90 ~ 628 else i f num >= 50 i f intch "" underchar 629 thenbegin sendl (1); Dum != num - 50 end then uln :- not uln 630 else if num >= 40 else begin x"'i"":- xl + 1; 631 thenbegin sendl(x); sendl(l); num :- num - 40~; i f (intch <> blank) and uln 632 then str[xll.c : .. intch + 128 whi1e_ num >= 10 .!!Q. 633 else str(xl].c :- intch begin sendl(x); num := num - 10 end; 634 1f Dum >= 9 e~ 635 then begin sendl(1); sendl(x); Dum :'"' num - 9 end end; 636 len :- xl 637 else if num >'" 5 end { UNDERSTRING }; 638 thenbegin sendl(v); num : .. num - 5 end 639 else i t Dum >= 4 640 ~ begin sendl(i); sendl(v); num :- num - 4 end; 641 while num >= 1 do 642 begin sendl(i);num := num - 1 end JUSTIFY - LEFT JUSTIFY, RIGHT JUSTIFY, AND/OR CENTER 64:! end; AN OUTPUT LINE. nonumbering: 644 end; 645 llien + fw > maxstringlength then fw :- maxstringlength - len; 646 procedure justify; for x2 : .. xl+l to fw do 647 canst begin len != l;n + fi648 MAXES TRUNC DO FLOOR } ~r - 0.0; with str [len] do 649 MAKES TRUNC DO CIELING eieling - 0.9999; 650 begin c : "" blMk; var 651 nbl : '" charwid th TO SELECT FLOOR OR CIELING real; To 652 end INSERT BLANKS } integer; ib 653 end; NUMBER BLANKS (TOTAL) } integer; nb 654 llien + xl > maxstringlength then xl :"" maxstringlength - len; NUMBER GAPS (ACTUAL) } integer; ng 655 II form..!.!!. [numerie.loweralpha.upperalpha] begin { JUSTIFY } 656 then for x2 := xl downto 1 do ng :- ngaps - 1; 657 begin len := len + t ; nb :- (rightmargin - nehars) .. charwidth; 658 with str [len] do begin ! l form-: loweralpha i f leftjustify 659 then c := digit(x21 + 32 then begin .li. r1ghtjustify 660 else c :"" digit[x2J; n, smalin ,z %> then begin !i moreonleft !llim. fc :- floor else fc :- eleling; ill ng :- ng ~ 1 .!!2. begin ib : .. truncCfc + nb log); with outline[gaps(ng]] do obI :- Db! + ib; 661 662 663 664 665 666 "iib":. 667 668 nb - ib - end 670 end eT;; with outline [gaps [0]] do 671 672 673 674 675 rightjustify then nb! :- ubI + nb ;I;; Dbl :"" Db! + trunc(nb moreonleft: .. not moreonleft 676 end ( .!i 2) i JUSTIFY); 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 771 - - _ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WRITEI - WRITE ONE CHARACTER, DO CONVERSION FROM ASCII TO THE HOST CHARACTER SET. PARAH CH - CHARACTER TO WRITE. 811 begin ( 812 813 814 815 816 817 818 819 820 821 822 823 824 825 WRITE 1 ) 128] do - 705 then write (ehr ( 60» 706 707 708 else if chr76 """'t'h;n-;rite(chr( 62»; write(c) end end ( WRITE 1 ); 711 712 713 714 715 ENDLINE - TERMINATE AND COUNT AN OUTPUT LINE. procedure endline; begin ( ENDLINE ) 720 721 722 723 724 .!!. select!on[pagenumber] 725 726 end ( then 1f blankline ~nblank.count :- blankcaunt + 1 else writeln; !!. linecount <> infinity then linecount : ... linecount - 1 ENDLINE ); 727 728 729 WRITEBLANKLINES - WRITE ACCllMULATED BLANK LINES. 730 731 732 736 737 738 739 740 741 742 743 744 745 746 747 748 749 procedure writeblanklines; begin ( WRITEBLANKLINES m( ~ WRlTEBLANKLINES ); WRlTESTRING - WRITE A STRING TO THE OUTPUT FILE. { • PARAH STR. STRING TO WRITE. LEN • LENGTH OF STR. 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 procedure writestring( .!!!. str : string; len: integer); 869 .!!!. 870 871 xl,x2,x3 understr lunderchar : integer; : string; : ascii; 764 begin ( 765 766 767 768 769 II selection [pagenumberJ 770 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 ) blankline :- false; terminal type .. lpt ~ while blankcount >... 2 .4.Q. begin.ll selection[pagenumber] ~ write('O'); blankcount :- blankcount - 2; if line count <> infinity then linecount : a linecount + 1; ~dline -end; while blankcount > 0 do begin blankcount : - hlankcount - l; !!.. linecount <> infinity then linecount :- linecount + 1; end line !!.. 750 751 752 753 754 755 756 757 758 759 760 761 762 763 (:~; if <> 0) and underavail then begin l~erehar : .. tmderehar; underchar :;:0 nul; writestring(understr,x2) ; underchar := lunderchar; ~ terminaltype .£!. ajt, ast : writel(er); Ipt : begin writeln; carriagecontrol :"" plus WRITESTRING GENERAL INDEX VARIABLES ) UNDERLINING FOR THIS STRING LOCAL UNDERCHAR ) ) end; str[l) .nbl :- str[l) .nbi + shift; terminaltype '" Ipt ~ write1(carrlagecontrol); explici tblank <> nul then for xl : ... 1 to len do with str [xl] do .ll.. c--=-explicitblank - - ~ begin e :- blank; nbl :"" charwidth £!!!!; .!!. shiftup then for xl :- 1 to len do --;t"r[rlf.e :- upper(str(xl) .e); .!!. terminaltype "" ajt !.!!!.!!. begin x2 :- 0; for xl :- 1 to len do with str[xll"""'i2. if c <> blank then begin !i. x2 <> 0 ..;m begin x3 := x2 fu charwidth; !i. (x2 mod charwidth = 0) and (x3 < 5) ~~ x3 := III x3 J!2. write 1 (blank) ~ begin write1(esc); writel(x); writel(x2 div 100 + zero); write1(x2 div 10 mod 10 + zero); write I (x2 mod 10 hero) end end; x2 : ... 0; writel(e) begin ~ (str[len].c .. blank) and (len> 1) S2. len :- len - 1; if str [len].c - blank then len :- 0; blankline :- (len - 0) and (carriagecontrol .. blank). .!f ~ blankline ~ .!i .!t end ~ x2 := x2 + obl end else ill xl := 1 !.2. len ~ with 8tr (xl) do U-c ... blankthen for x2 :- 1 I I nbl .!!2. --wrtte 1 (blank) else write1(e); carriagecontrol := blank; str[l] .ubl :- str[l] .nbl - shift end end e'lSe blankline := false end ( WRITESTRING ); ADVANCEFOBM - ADVANCE FOBM TO NEXT L SPECIFICATION. procedure advance form.; var Ch formch fw : : : : : t1 which xl ascii; asciix; integer; integer; boolean; integer; KEY CHARACTER ) CURRENT FOBM CHARACTER FIELD I1IDTH OF CURRENT ITEM LOCAL TITLE LENGTH ) WHICH TITLE (MAIN, SUB) GENERAL INDEX ) NEITCH - ADVANCE TO NEXT FOBM CHARACTER. procedure nextch; begin ( NEXTCH ) formindex :"" (formindex mod formlength) formch :- form[formindex] .!.M { NBXTeR + I; }; NUMBER - READ A NUMBER FROM THE FOBM. PAI!AM DEF & DEFAULT NUMBER • 872 873 874 875 876 877 878 879 '880 £rut end end 797 798 799 800 801 802 803 804 805 806 807 808 809 810 with host reh mod begin !f chr74 733 734 735 end else begin understr [x1].c :"'" blank; understr [xl) .nbl P" ubl 796 OUTPUT .!!2. add(e di;;- 1 2 8 ) - - - then begin understr(xl].c :- underscore; understr[x11.nbl : ... charwidth; c :- e - 128; x2 : .... xl 785 786 787 788 789 790 791 792 793 794 795 procedure write1( ch : asciix ); 716 717 718 719 .!!. 784 703 704 709 710 begin writeblanklines; if underchar <> nul then begin x2 :"" 0; for xl :- 1 to len do with str[xl1 777 702 701 !h!m 772 773 774 775 776 778 779 780 781 782 783 end 669 PAGE 43 SEPTU1BER,1979 PAS C A h NEW S # 1 5 function Dumber( def : integer) : integer; num begin ( !!. : integer; NUMBER { NUMBER BEGIN BUILT ) class [formch] .digit begin num :- 0; repeat num :- num * 10 + formch - zero; .!i Dum >... infinity ~ num : .... infinity-I; ~ 881 882 883 884 885 886 887 888 889 890 end else number := def end { NUMBER ); FIELDWIDTH - READ OPTIONAL FIELD WIDTH SPECIFICATION. PARAH DEF == DEFAULT FIELD WIDTH. MIN .. MINIMUM FIELD WIDTH. procedure fieldw!dth( def ,min: integer); begin { FIELDWIDTH } fw:= deft .!!. formch z: colon then begin nextch; fw : == number (def) end; i f fw < min then fw : "" min ~d { FIELDWIDTH }; 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 J nextch until not class [formch] .digit; number : .. num 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 SENDI - SEND ONE CHARACTER TO THE TEXT LINE. PARAM CH' CHARACTER TO BE SENT. procedure sendl( ch : asciix }; begin { SEND1 } textindex::: textiodex + 1; i f textindex + shift> maxowidth then begin textindex := 1; error(-l) end; text [textindexl.c := chi text [textindex] .ub! := charwidth; ..!i textiodex > text length then textlength := textindex end { SENDI }; 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 SENOIa - SEND UP TO 10 CHARACTERS TO THE TEXT LINE, DETERMINING FIELD WIDTH. PARAM CH "" 1a CHARACTERS. DEF '" DEFAULT FIELD WIDTH. MIN = MINIMUM FIELD WIDTH. procedure sendlO( ch : chlO; def,min : integer); var : integer; INDEX INTO CH } begin { SEND10 } fieldwidth(def .min); if fw < def then { SEND RIGHTMOST FW CHARACTERS for xl := def-fw+l 12. def &2. sendl(ch[xl]) else { SEND LEADING BLANKS AND ALL DEF CHARACTERS begin for xl := 1 .!..2. fw-def .£Q. sendl(blank); for xl := 1!.Q. def.£.Q. sendl(ch[xll) end end { SENDlO }; 71 WRITETEXT - WRITE TEXT BUFFER. procedure writetext; begin { WRITETEXT } wri test ring (text, textlength) ; endline; textlength: = 1; textindex:'" 1 end { WRITETEXT }; 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 IIAIT - IIAIT FOR OPERATOR ACENOIILEDGEMENT. HEAVILY SYSTEM DEPENDANT. procedure wait; chBO "" packed array[l, .80J .Qf char; cs : ch80: {CURRENT CONTROL STATEMENT ~ .Y!£ procedure csimage( ~ cs : ch80 ); extern; begin ( IIAIT ) 1!.. terminal type .. lpt then begin csimage(cs); writeln('PM ... cs) end else begin write 1 (bel); writeln(chdO),chr( 11»; writeln(chr(O),chr( 6),chr(O),chr( readln end end { WAIT }; PAGE 44 S EPTE MBER 1 979 'P AseA L NEW S # 15 1»; { { { { { { { { { { { { { { { { 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 begin { ADVANCEFORM } ch := upper(form[formindex]); not class [ch] .quote then nextch; i f class [chJ .formchar then ~ ch £! : sendlO(rawclock,8,O); : sendlO(rawdate,8,O); : sendlO(nicedate,9,0); : begin!i text length > 1 then writetext; linecount : = number (1) end; p : begin !i (formch "" colon) .2.!. (fonnch "" blank) then ch != n else begin ch := formch; nextch end; fieldwidth(3,O) j convertnumber(text. textindex,pagenumher ,fw,numform(ch,-4»; i f textindex > textlength ~ textlength := text index end; s, t ! begin which :"" (ch = t) .2.!. (ch '" smallt); t1 :z titlelength{which]; fieldwidth(tl ,0) i if fw < tl then { SEND LAST FW CHARACTERS } i l l xl :== tl-fw+l !..Q. tl £.Q. sendl(title[which] [xl]) else { SEND I,.EADING BLANKS AND ALL TL CHARACTERS } begin for xl := 1 !..Q. fw-tl .9.2. sendl (blank); for xl := I1£. tl £Q. sendl(title[whichl [xl]) end end; w : sendlO(wallclock.8,O); hash: begin xl := number(l); ~ textindex < xl £Q. sendl(blank); textindex ;= xl end' lbracke~ : begin!i text length > 1 then writetext; .!!.. selection{pagenumberl then begin 1f. eject then begin blankcount := 0; .!!.. terminaltype = lpt then carriagecontrol := one else writel(ff) end else 11. terminal type <> Ipt then writehlanklines; :!f. pause then wait end; .ll.. formnlength > 0 then begin form := formnext; formlength ::. formnlength; formindex != OJ repeat nextch until formch '" lbracket; nextch; formnlength : "" 0 end encr:rbracke~ : begin II textlength > 1 ~ write text ; pagenumber : = pagenumber + 1; validate(pagenumber, 0, inHn! ty-l,-3) end' slash:' for xl := 1 !.Q. number(l) £Q. writetext; dquote, squote : repeat nextch; while formch <> ch do begin sendl(formch)'; nextch 1!.. ~; nextch; formch ch ~ sendl(ch) until formch <> chj blank: end else begin error! := chi error(-2) end .!ill! { ADVANCEFORM } ; ..!!. !If BEGINLINE - BEGIN OUTPUT LINE, ADVANCE FORM AS NECESSARY. procedure beginline; ~ fix : integer; LOCAL COPY OF FORMINDEX } fnl : integer; LOCAL COPY OF FORMNLENGTH begin { BEGINLINE } !i linecount <- 0 then { MAKE LINECOUNT > 0 begin fix : *' formindex; fnl :- formnlength; repeat .ll. fnl <> formnlength then begin fix : - formindex; fnl :- formnlength end; advanceform until (linecount > 0) ..Q!. «fix - formindex) .!ru! (fnl ,.. 0»; i f linecount <- 0 then { BAD FORM } begin error(-5); line count :- infinity end end; blankline :- true end { BEGINLINE }; 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 WRITENULL - WRITE A NULL LINE. procedure writenull; begin ( WRITENULL SKIP - SKIP OUTPUT LINES. procedure skip( n : integer); xl : integer; begin ( SKIP ) > linecQuut ll. n llin. n : ... linecouut; for xl : ... 1 to n do writenull end { SKIP}; - WRITELINE - WRITE THE OUTPUT LINE. procedure writeline; begin ( WRITELINE ) beginline; writestring(outline.outlength) i endline; .!! space <> 0 then skip(space); outlength := 1; outline[ll.nbl != leftmargin * charwidth; nehars :- leftmargin; nwords :- 0; ngaps :- 0; gaps [0] :- 1; newoutline : .. true end { WRITELINE } j PAGE - CONOITIONALLY PRODUCE A PAGE EJECT. procedure page( n : integer ); begin ( PAGE ) if linecount < n then repeat while linecount > 0.£2 writenull; while (form[formindex1 <> Ibrack.et) and (linecount <= 0) .QQ. advancef orm until form[formindexl = lbracket .!!.!!. !i linecount - infinity then .ll. S < n then skip(S) ~ { PAGE 1~5 12ll end 1212 else intch :- asc[extch] 1213 else intch :- asc [extch] ; inline[xl].c := iatch 1214 1215 1216 :- blank; for x2 :- I to xl+l do inline[x2] .nbl :- charwidth; 1217 1218 :!i inline[l]:C - dirCh 1219 then begin directline :- true; lowerdlr :- true end else directline :- directline and (inline[l].c -Plus); 1220 1221 if casech <> nul 1222 then !i directline then shlftstring (inline,xl ,lowerdir) 1223 else shiftstring(inline,xl.lowercase); 1224 1225 if xl > 1 then while (inline{xl].c - blank) and (xl> 1) .!!f!. 1226 xl :- xl - 1; 1227 1228 if xl - 1 then if Inline[x1].c = blank 1229 thenxl :- 0; 1230 1231 Inlength : = xl; readlnUnfile) ; 1232 firsterror :- true; 1233 1234 end { READLINE } i 1235 1236 1237 1238 begin ( NEXTCHAR ) 1239 1240 incolumn :-= incolumn + 1; 1241 !!.. incolumn > inlength then if eol 1242 1243 then!!. eof(infile) then endofinput : .. true 1244 else begin readline; 1245 1246 incolumn : - 1; !! linenums 1247 then begin if class (inline(l] .e] .digit 1248 then begin linenumber := 0; 1249 1250 repeat linenumber := linenumber '* 10 + inline(incolumn].e - zero; 1251 1252 incolumn := incolumn + 1 until not class [inline [incolumn] .c] .digit 1253 end; 1254 1255 incolumn :- incolumn + 1 1256 £M. else linenumber : .. linenumber + 1; 1257 1258 eol :"" incolumn > inlength; 1259 !i eol 1260 then inchar :- blank 1261 ~ incbar := inline[incolumn].c 1262 end else begin eol :- true; 1263 1264 inchar :- blank end 1265 eise-lnchar :- inline[incolumnl.c 1266 end { NEXTCHAR }; 1267 1268 1269 1270 1271 1272 NEXTLINE - ADVANCE TO BEGINNING OF NEXT INPUT LINE. 1273 1274 1275 procedure nextline; 1276 begin ( NEXTLINE ) 1277 incolumn : - inlength + 1; 1278 l:~:!e[xl+l].c ) beg1nline; writestring(outl1ne, 1); endline £ru! ( WRITENULL ); .y!!. PAGE SEPTEr1BER,1979 PASCAL NEHS #15 }; } INPUT ~~~ ~ 1281 } 1282 } 1283 eol :- true; nextcbar end { NEXTLINE }; }g:~ NEllTCIIAR - ADVANCE TO THE NEXT INPUT CHARACTER, AND CONVERT FROM HOST CHARACTER SET TO ASCII. procedure nextchar; READLINE - READ AN INPUT LINE, CONVERT INTO ASCII, CONSIDERING CASE SHIFT AND UNDERLINING. procedure readline; :!!!. extch : char; intch : ascii; xl.x.2 : integer; begin ( READLINE EXTERNAL CHARACTER } INTERNAL CHARACTER } GENERAL INDEX VARIASLES ) oew1n1ine :- true; xl :- 0; eoln(1nfile) .!rut (xl < inwtdth) JI!:!. begin readUnfile.extch); xl :- xl + 1; !!. ~ eoln(1nfile) ~!!. ord(extch) 60 !.h!!!. begin intch :- asc74 [iufiletl ; ~ ~ get(infile) end else!! ord(extch) - 62 then begin Intch :- 8sc76 [lnflletJ ; get(infile} 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 } 13ll } 1312 } 1313 } 1314 } 1315 } 1316 } 1317 } 1318 } 1319 } 1320 --------------------------------DIRECTIVE PROCESSING ---------------~----------------- BREAK - CAUSE A BREAK IN JUSTIFICATION. procedure break; begin ( BREAK ) If not newoutline then begin !i not (leftjustify ~ rightjustify) then justify; writeline end; underlining :- false; newparagraph :"" true end { BREAK }; INUNDENT - SCHEDULE AN INDENT OR UNDENT. PAl!AII INON > < 0 FOR INDENT, 0 lOR UNDENT. PAS CAL NEW S # 1 5 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 procedure inundent ( inun : integer ); begin { lNUNDENT } break; Dehars : '" leftmargin + inuD; if Dehars < 0 then Dehars := 0; ~tline[11.nbl~nchars * charwidth end { lNUNDENT }; INPSAVE - SAVE INPUT SETTINGS procedure inpsave; begin { INPSA VE } validate (keepinp, O.maxkeep ,1151); with saveinp [keepinp] E.Q. begin defined :." true; b := explicitblank; c ::c casech; d := dirch; h := hyphen; u := underchar; w := inwidth end end { INPSAVE }; INPRESTORE - RESTORE PREVIOUS INPUT SETTINGS. procedure inprestore; begin { INPRESTORE } validate (keepinp. o,maxkeep , 1151); with saveinp [keepinp] i2. if defined then begin explicitblank := h; if casech <> c then begin casech : = c; lowercase : '" casech <> nul end; dirch := d; hyphen := h; underchar := u; inwidth := w end else error(l105) end{" INPRESTORE }; MARSAVE - SAVE MARGIN SETTINGS. procedure marsave; begin { MARSAVE } validate (keepmar ,0 ,maxkeep , 151); with savemar[keepmar] do begin defined := true; 1 := leftmargin; r : "" rightmargin end end { MARSAVE }; MARRESTORE - RESTORE PREVIOUS MARGIN SETI'INGS. procedure marrestore; begin { MARRESTORE } validate(keepmar, O,maxkeep ,151); with savemar [keepmar] 4£ if defined then begin leftmargin :-= 1; rightmargin := r end else error(105) en"d"""T'MARRESTORE }; OPTSAVE - SAVE OPTION SETTINGS. procedure optsave; begin { OPTSAVE } validate(keepopt, O,maxkeep, 251); ~ saveopt [keepopt] 4£ begin defined := true; e := printerrors; f :- fill; j := badjustify; 1 := leftjustify; m := multipleblanks; p :- ensure2; r ::0: rightjustify; s :z: space; u :'" shiftup end end { OPTSAVE }; S EPTE MBER, 1 979 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 154Q P AGE 4 6 OPTRESTORE - RESTORE PREVIOUS OPTION SETTINGS. procedure optrestore; begin { OPTRESTORE } validate (keepopt, O,maxkeep, 251); ~ saveopt [keepoptJ .4Q. if defined then begin printerrors := e; fill := £; badj ustify : = j; leftjustify := 1; multipleblanks : = m; ensure2 : = p; rightjustify :"" r; space := s; shiftup :'" u end else error(205) end { OPTRES TORE }; PARSAVE - SAVE PARAGRAPH SETTINGS. procedure parsave; begin { PARSAVE } validate(keeppar, O,maxkeep,35I); wi th savepar [keep par ] .!!Q. begin defined := true; c := 0; { IT WOULD SEEM THAT THIS IS SUPERFLUOUS f : .. parachar; i :'" lockeddent; n := numbering; p := parapage; s := paraskip; w :"" numberwidth } end end { PARSAVE }; PARRESTORE - RESTORE PREVIOUS PARAGRAPH SETTINGS. procedure parrestore; begin { PARRESTORE } validate(keeppar, O,maxkeep, 351); ~ savepar [keepparj ££ if defined then begin paracount := c; parachar := f; lockeddent := i; numbering : '" n; parapage := p; paras kip : "" S; numberwidth := w end els'; error(305) end{ PARRESTORE }; DIRECTIVE - PROCESS ONE DIRECTIVE procedure directive; var direct; ful1word chIO; word ch3; wordlength integer; xl,x2 integer; dtr CURRENT DIRECTIVE } CURRENT DIRECTIVE WORD } 3 LETTERS OF CURRENT DIRECTIVE WORD LENGTH OF CURRENT DIRECTIVE WORD GENERAL INDEX VARIABLES } NEXTCH - ADVANCE TO NEXTCHAR, CONSIDERING CONTINUATIONS. procedure nextch; begin { NEXTCH } nextchar; .!i eol ~ (infHer .. '+') ~ begin next char ; inchar : .. blank end end { NEXTCH }; SWITCH - DETERMINE A SWITCH OPTION. CONSIDERING THE DEFAULT. PARAM DEF - DEFAULT. function switch( def : boolean) : boolean; beg! n { .!!. SWITCH } class [inchsrj.plusorminus begin switch : .. inchar - plus; !.h£!l } 1541 1542 1.543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 162; 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 nextch end else awi tch : "" def end { SWITCH }; CHARACTER - DETERMINE A CHARACTER OPTION. CONSIDERING THE DEFAULT a PARAM DEF' DEFAULT. function character{ def : ascii ascii; begin { CHARACTER } M. lochar <> blank then begin character :"" iochar; nextch end else character :- def end { CHARACTER }; NUMBER. - DETERMINE A NUMERIC OPTION, CONSIDERING THE DEFAULT AND THE PREVIOUS VALUE. PARAM DEF .. DEFAULT. LAST,., PREVIOUS VALUE. IF < 0 THEN RELATIVE FORM IS NOT RECOGNIZED. HIN .... MINIMUM ALLOWED VALUE. MAX .. MAXIMUM ALLOWED VALUE. ERR • ERROR NUMBER (IF OUT OF RANGE). function number( def,last,min,max,err : integer) : integer; num sign begin { integer; ascii; { NUMBER BEING BUILT {PLUS OR MINUS SIGN NUMBER !.!.. class [iochar] oplusorminus and (last >= 0) then begin sign := inchar; nextch end else begin sign := plus; last := 0 end; .!i class [inchar].digit then begin num : == 0; repeat num := num 10 + inchar - zero; Jl.. num >= infinity then num := infinity - 1; nextch until not class (incharJ .digit end else num : '"" def; i t sign == plus then num : = last + num else num := last - num; .!i num < 0 then num :'" 0; validate(num.min,max,err) ; number :"" num end { NUMBER } ; * READWORD - READ THE NEXT DIRECTIVE WORD. procedure readword; var 71 : integer; { LOOP INDEX begin { RFADWORD } wordlength := 0; while class [incharl.letter do begin wordlength := wordle;gth + 1; .it wordlength <= 10 ~ begin fullword[wordlength] :"" inchar; !!. wordlengtb <= 3 !hm word [word length] : "" upper(inchar) end; nextch end' for ~1 : .. wordlength + 1 .!.Q. 10.i2. fullword[x1] := blank; for xl : = word length + 1 to 3 do word [x11 :;; blank end { READWORD }; -- READPSTRING - READ A PSTRING UNTIL A TERMINATOR CHARACTER. PARAH STR "" PSTRING TO BE READ. LEN ... LENGTH OF PREDEFINED PORTION OF TO NEW LENGTH. ENDC - TERMINATOR CHARACTER. procedure readpstring( .!!!!.. str : pstring; .y!!. len endc : ascii ); begin { READPSTRING } underdir : - false; while (incbar <> endc) and not eol do begin II inchar '"" underchar then underdir :"" not underdir else llien (" maxstringlength then begin len : ... len + 1; !! underdir then str [len] :- inchar + 128 else str [len] : ... inchar .!.rui; nextch ~ P AGE 4 7 SEPTU1BER) 1979 PASCAL NE\~S #15 STR~ UPDATED integer; 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 end { READPSTRING }; LOOKUP - LOOK UP THE DIRECTIVE WORD. PARAH FIRST = FIRST ACCEPTABLE DIRECTIVE WORD. ILLEGAL ... LAST+l ACCEPTABLE DIRECTIVE WORD. function lookup( first,illegal : direct) : direct; ~ d direct; { LOOKUP LOOP INDEX begin { LOOKUP } directs [illegal] := word; d := first; while (directs(d] [1] <> word(l]) or - - (directs [d] [2] <> word [2]) ~ (directs [dl [3] <> word [3]) d : .. succ(d); lookup := d ~ { LOOKUP }; } :42 INPUT - PROCESS INPUT DIRECTIVE. procedure inputd; var ----;:b : ascii; {KEY CHARACTER } begin { INPUTD } inchar "" lparen then begin nextch; keepinp : = keepinp + 1; while (inchar <> rparen) and not eol .!!Q. begin ch := upper(inchar); n~t~; • 11. class [ch] .inputchar then case ch of ~ explicithlank := character (nul) ; c : begin ch := character(nul); if ch <> casech thea begin casech := ch; lowercase := casech <> nul end end; d : dirch := character (period); h : hyphen := character(nul); k: keepinp :;; number(O,-1,O,maxkeep.llS1); : underchar := character(nul); w : inwidth := number(1S0.-1.min,maxiwidth.11S4); blank: end else begin error! :- chi error(llOl) ~ !f ~; 11. inchar "" rparen nextch else error(l102); inpsave ~ ~ begin ..!i class [incharJ .digit ~ keepinp :"" number(O,-1,O,maxkeep,11Sl) else keepinp : "" keepinp - 1; inprestore end end { INPUTD }; ~ LITERAL - PROCESS LITERAL DIRECTIVE. procedure I i teral; ~ ch asciix; LITERAL CHARACTER } i : integer; LOOP INDEX } litlength : integer; LENGTH OF LITSTRING } litstring : pstring; ARGUMENT OF LITERAL DIRECTIVE begin { LITERAL } litlength :m 0; " readpstring(litstring,li tlerigth.nul); for i : .. 1 !£. litlength do begin ch := litstring[iJ; ! i ch "" explicitblank ~ write 1 (blank) else write1 (ch) end; writeln ~ { LITERAL }; MARGIN - PROCESS MARGIN DIRECTIVE. procedure margin; var 7h : ascii; {KEY CHARACTER begin { MARGIN } inchar "" lparen then begin nextch; keepmar :"" keepmar + 1; !!hili {inchar <> rparen) and not eol do begin ch :- upper(inchar); nextchi 11. } .!i class [chJ .marginchar then case ch of k:" keepmar -;: number(O,-1,O,maxkeep,151); 1 : leftmargin := numher(O,leftmargin.O,infinity,O); r : rightmargin := number(70,rightmargin,O,infinity,O); blank: else begin error! := ch; error(lOl) end ~; iochar = rparen then nextch else error(102); val!date(rightmargin,min,maxmargin, 152); validate(leftmargin, 0, rightmargin, 153); marsave .!i. end else begin .if class [incharJ . digit then keepmar := number(O,-1,O,maxkeep,151) else keepmar : '" keepmar - 1; marrestore end; nehars :"" leftmargin; outline[lj .obl := nehars * charwidth ~ ( MARGIN ); OPTION - PROCESS OPTION DIRECTIVE. procedure option; var -ch : begin ( OPTION ascii; {KEY CHARACTER } ) .!i inchar = Iparen then begin nextch; keep opt : = keepop t + 1; ~ (inchar <> rparen) ~ not eo1 .£.Q. begin ch := upper(inchar); nexteh; .!!. class [ch] .optionehar then ~ ch..Qf printerrors := switeh(true); fiE := switeh(true); badjustify := number(3,-1,3,infinity,265) - 2. keepopt := number(O,-l ,O,maxkeep, 251); 1eftjustify := switch(true). multip1eblanks := switch(true); p : ensure2 := switch(true) j rightjustify := switch(true); space ;= number(l.-L,l,3,266) - 1; u shiftup:= switeh(fa1se); blank: else begin error! := eh; error(201) end ~lllI..; .!i inchar ::: rparen ~ nexteh ~ error(202)j optsave end else begin !i class [inchar].digit ~ keepopt !"" number(O,-1,O,maxkeep,251) else keepopt :"" keepopt - 1; opt restore end end { OPTION }; OUTPUT - PROCESS OUTPUT DIRECTIVE. procedure outputd; var ~ : ascii; {KEY CHARACTER begin { OUTPUTD } 11 lineeount < 0 then begin .!i inchar ;; Iparen ~ begin repeat nextch l!!!.lli (inehar <> blank) .2.!. eol; readwordj g wordlength <'" 3 then terminaltype := lookup{ast,ilt) else terminal type :"" iIt; II terminal type "" ilt then begin error(l009); terminal type :- ast ~; ~ terminal type of ast : ; 1pt : carriagecontro1 != one; ajt : ~...&!.!!..!!h!.k inehar '" blank do nextch; charwidth := number(lO,-l,O-;i"nfinity, 1013); !f not (charwidth l.!!. [10,12]) ~ begin error(1013); charwidth :"" LO end; charwidth := 60 div eharwidth; outline[l] .nbl :"" leftmargin * charwidth ~ w~~~! PAGE 48 SEPTEr1BER,1979 PAS CAL NEW S # 1 5 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 (inchar <> rparen) and not eol do begin ch :"" upper (incharV nextch; .!.f class [eh] .outputchar then case ch of - - eject :"-;Witch(false) j p : pause P" switeh(false) j shift :- number(O,-l,O,maxshift,1064)j underavail : .. switch(truc) i 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 w : outwidth :"'" number(maxowidth,-l,O,maxowidth,1054); blank: end else begin errorl := chi error(lOOI) end; !f inchar "" rparen then nextch else error(1002); shift := shift * charwidth; 1inecount : == 0 ~ end end else error(lOIO) end { OUTPUTD }; PARAGRAPH - PROCESS PARAGRAPH DIRECTIVE. procedure paragraph; var : ascii; Ch begin ( PARAGRAPH {KEY CHARACTER ) savepar[keeppar].c := paracount; .!!. inehar :; lparen then begin nexteh; keep par : == keeppar + 1; paracount := 0; while (inchar <> rparen) and not eol do begin ch : .. upper(inchar"')'"; nextch; .!!. class [ch] .paragraphchar then case ch of - c - paracount:= number(O,-I,O,infinity,O); f : parachar ::::: character(nul) j i : lockeddent := number(5,-I,O,rightmargin-min,355); k : keeppar := number{O,-1,O,maxkeep,351); n : begin !f not class [incharl .digit then numbering := numform{charaeter{blank) ,307) else numbering := numeric; numberwidth := number(3,-l,O,maxnumberwidth,356) ~; p : parapage := number(O,-l,O,infinity,O); s : paraskip :== number(O,paraskip, O,maxskip. 357); u : lockeddent := -number{O,-l,O,infinity,O); blank: else begin error! ;= ch; error(301) end ~; 11 lnchar "" rparen then nextch else error(302); parsave end 11. class Cinchar] .digi t begin keeppar := number{O,-L.O,maxkeep.351); pa rres tore; paracount : - 0 else ~ end else begin keeppar :""' keeppar - 1; parrestore end T end PARAGRAPH }; READFORM - READ THE FORM SPECIFICATION TO THE FORM BUFFER. procedure read form; var nobracket : boolean; quote : ascii; IF NO LBRACKET IN THE FORM ) OUTER QUOTE CHARACTER FOR A STRING ADDCH - ADD A CHARACTER TO THE FORM. PARAH CH - CHARACTER TO ADD. procedure addch ( ch : ascii ); begin ( ADDCH ) formnlength := formnlength + 1; formnext [formnlength] : - ch end { ADDeH } ; begin { READFORM formnlength :- 0; nobracket :- true; !i in char - Iparen lli.!!. begin nextch; while (inchar <> rparen) and not eol do begin addch(inchar); nob racket :- nobracket and (inchar <> Ibracket); 11 class [incharl .quote then begin quote : - inchar; nexteh i readpstring (formnext .formnlength,quote); 11 inchar - quote then nextch ~ error(403); addch{quote) 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 end else nextc:h end; i f inchar .. rparen then nextch error(402) j if-~bracket then addch(lbracket) ;rae end -- else linecount :"" infinity end { READ FORM }; READINX - READ AN INDEX ENTRY. procedure readinx; var : pstring; index : integer; indexlength : pinxentry;{ p xl : integer; { begin { READINDEX INDEX BUFFER } LENGTH OF INDEX } POINTER TO N£W INDEX ENTRY GENERAL INDEX VARIABLE } } Indexlength :z 0; readps t ring (index ~ indexleng th. nul) ; new(p); i f indexlength > maxirutlength then indexlength :"" maxinxlength; ;t"th pi do begin xl:" indexlength; xp : .. pagenumber; for xl : .. 1 to indexlength do x[xl] :- index[xl]; for xl := indexlength+l1.2. ;;axinxlength.s!£. x[xl] := nul end; i f inxbase = nil then inxbase:- p else inxlastj.next :- p; inxlast : '"' P end { READINX }; RESET - PROCESS RESET DIRECTIVE. procedure reset; var d RESET DIRECTIVE NAME } direct; EXCEPT KEYWORD IS PRES ENT : boolean; except FIRST DIRECTIVE NAME } : boolean; first WHICH DIRECTIVES TO RESET which : dirset; begin { RESET } if inchar "" lparen then begin first :- true; except :- false; which :- []; nextch; while inchar <> rparen do .!i inchar - blank then nextch ;I;; if class [inchar] .letter thenbegin readword j d :'" lookup(bre,ill); if d in (cou,frm.inp,inx.mar,opt.out,pag,par,sel,sbt,ttll thenwhich :- which + [d] else II d ... exc then if first thenexeept : .. true else error(l21l) else begin errorlO :"" fullword; i f d • ill then error(l206) else error(l212) e~ fir;t;. false end .!i else begin error! :- inehar; error(l201); nextch.!n!!; except ~ which :- [hre •• i1l] - which end e!;; which :- [bre •• 111]; w~ not eol do nexteh; i f (out:Pag,fr;] 11 which <> [J then begin page(infinlty); if l1neeount < infinity .!!:!!.!l advaneeform re:~~~ialize (which) end { RESET }; SELECT - PROCESS SELECT DIRECTIVE. procedure select; var rl,x2 : integer; { GENERAL INDEX VARIABLES begin { SELECT } i f inchar .. lparen then begin nextch; for xl :- 0 to ma.xpage &2.. seleetion[xl] : .. false; while (lnchar<> rparen) and ~ eol .!!2. ~lass [incharl·digit then begin xl :- number(O,-1,0,maxpage,504); i f inchar - colon then begin nextch; ~ xl :- xl to number(xl,xl,xl,maxpage,504) seleetion[xl]:- true end P AGE 4 9 S EPTE MBER, 1 9 7 9 PAS CAL NEW S # 1 5 .22. } 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 ~ selection [xl] : .. true end else begin if inehar <:> blank then ~ error! := inchar; error(50l) next char end; if inchar .. rparen then nexteh else error(502) e~ else for xl := 0 !£. maxpage 4£ seleetion[xl] end { SELECT }; ~; true SORTINX - SORT AND PRINT INDEX ENTRIES. procedure sortinx; .Y§!!. pinxentry;{ pinxentry j { integer; { integer; { integer; { integer; { integer; { firstinx last1nx leftwidth margin pagecol rightwidth sorteol FIRST ENTRY FOR SORTING } LAST ENTRY FOR SORTING } L SPECIFICATION } M SPECIFICATION } P SPECIFICATION } R SPECIFICATION } S SPECIFICATION } PARSE - PARSE THE SORTINDEX DIRECTIVE. proeedur~ parse; .Y.!.!:. eh ascii; {KEY CHARACTER } begin { PARSE } leftwidth :"" 2; margin : "" 0; pagecol := 0; rightwidth := 2; sorteol := 1; i f inchar '" lparen then begin nextch; while (inchar <> rparen) and !!.2.!. eol do begin ch := upper (inchar) ; nextch; i f class [ch] .sortinxchar then case eh of -1- leftwidth:= number(2.-I,-O,30,658); : margin := number(O,-l,O,30,659); p : pagecol :'" number(O,-l ,O,maxinxlength+min,660); r : rightwidth := number(2.-l,O.30,66l); s : .li. (inchar "" p) ..QE. (inchar - smallp) then begin sorteol := -1; nexteh end else sorteol : .. number(1,-1,1,tnaxinxlength-min,662); blank-:- end else begin error! := chi error(60l) end end; .!f inchar "" rparen then nextch else error (602) end end { PARSE }; SORT - SORT THE INDEX ENTRIES. procedure sort; ~ pinxentry;{ FOR TRAVERSING THE INDEX LIST sl,s2 pinxentry;{ TEMPS FOR SORTING } xl : integer j { GENERAL INDEX VARIABLE } begin ( SORT } new(firstinx) ; new(lastinx} ; with firstinxi do begin xl := 0;next :- lastinxj for xl :z I !£. maxinxlength .42. x [xl] :- nul P w~~~\astinxi do begin xl :next :"" nil; for xl :~ to maxinxlength do x[xl] :- del end; if sorteol < 0 then begin inxlasti.next :'"" lastinx; firstinxt.next := inxbase; inxbase :"" nil end else begin p :- inxbase; inxlasti.next :"" nil; while p <> nil d o begin inxb;;; --;-:: pt .next; s2 :z: firstinx; repeat sl :"" 82; 82 :- slt.next; xl : - sorteol; while (xl < maxinxlength) and - - (upper(pj.x[xl]) - upper(s2j.x[xl])} xl :- xl + I until upper(pi.x [xl]) < upper(s2T.x [xl]); , sIt .next :- p; 0; 2.2. 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 pi.next :'" 92; 2314 p := inxbase 2315 end 2316 end 2317 end { SORT }; 2318 2319 2320 2321 2322 PRINT - PRINT THE INDEX ENTRIES. 2323 2324 2325 procedure print; 2326 2327 pinxentry j { FOR TRAVERSING THE INDEX LIST P 2328 : integer; { GENERAL INDEX VARIABLE ) xl 2329 2330 2331 2332 2333 SEND! - SEND ONE CHARACTER TO THE OUTPUT LINE. 2334 2335 PARAH eH - CHARACTER TO SEND. 2336 2337 2338 procedure send! ( ch : asciix ); 2339 begin { SEND 1 } 2340 outlength := out length + 1; 2341 with outline [outlength] E.2. 2342 begin c := chi 2343 ubI := charwidth 2344 end 2345 end { SENDl }; 2346 2347 2348 2349 2350 begin { PRINT } 2351 P := firstinxi·next; 2352 while p <> lastinx do 2353 with pi do 2354 begin f~ xl : "'" 1 !.Q. margin £9.. sendl (blank); 2355 for xl : .. 1 to page col do 2356 !f xl> xl 2357 ~ sendl(blank) 2358 else sendl(x[xl}); 2359 co;:vertnumber (outline ,outlength,xp .1eftwidth. numeric) ; 2360 for xl :::: 1 to rightwidth do send! (blank); 2361 for xl := pa8ecol+l .!.Q. xl sendl (x[xll) j 2362 writeline; 2363 dispose (firstinx); 2364 firstinx := p; 2365 p := firstinxi·next 2366 end; 2367 dispose(lastinx) 2368 ~ { PRINT }; 2369 2370 2371 2372 2373 begin { SORTINX ) 2374 parse; 2375 sort; 2376 print 2377 end { SORTINX }; 2378 2379 2380 2381 2382 begin { DIRECTIVE } 2383 repeat nextch; 2384 readword; 2385 dir := lookup(bre,ill); 2386 ~ (inchar '" blank) and.!!.Q.t eol Q.Q. nextch; .ll dir..!.n. [bre,frm,ind,mar,opc,pag,res,ski,sor,und,we01 then break; 2387 ~dir..Qf -2388 2389 bre : ; 2390 com : while not eol do nextch; 2391 cou: pagenumber := ;;:;mber(l,pagenumber,O,maxpage,759); 2392 fnn readform.; 2393 ind inundent(number(5,-1,O, rightmargin, 856»; 2394 inp inputdj 2395 iox readinx; 2396 lit literal; 2397 mar : margin; 2398 opt option; 2399 outputd; out 2400 page (number (iufini ty, -1, 0, infinity, 0»; pag 2401 par paragraph; 2402 res reset; 2403 sel select; 2404 skip (number (5,-1 ,O,maxskip, 957}); ski 2405 sor sortinx; 2406 sbt : begin titlelength[subtitle] :- 0; 2407 readpstring(title (subtitle] ,titlelength [subtitle) ,nul) 2408 end; 2409 ttl : begin titlelength[maintitle] :- 0; 2410 readpstring(title lmaintit1e] , titlelength [maintitle] ,nul) 2411 2412 uod (-number (infinity,-l ,0, infinity ,0»; {} 2413 putseg(output) ; 2414 exc, 2415 i l l : begin errorlO :"" fullword; error(006) ~ 2416 end; 2417 while (incha:r <> dirch) and not eol do 2418 begin .!l. inchar <> blank 2419 ~ begin error! : .. inchar; error(l) ~; 2420 nextch 12: -- --- end }; - - - - - - - -- - - - - - - - - - -- - - -- - - -- TEXT FORMATTING --------------------------------- NEXTWORD - READ THE NEXT INPUT WORD, PROCESS DIRECTIVES WHEN APPROPRIATE. procedure nextword; var : integer; -xl begin ( NEXTWORD { LOOP INDEX } ) wordlength :"" 0; newinline := false; while eol and not endofinput do begin nextcha~ if eol and not endofinput then begin break; writenull end else if inchar '" dirch the"ndirective else if inchar "'" parachar thenbegin break; 11.. paraskip > 0 then skip (paras kip); if parapage > a then page(parapage); inundent(lockeddent) ; !i numbering <> nonumbering then begin paracount := paracount + 1; convertnumber (word ,word length, paracount, numberwid th, numbering) end; next char end; if not endofinput then begin nblanks := 0; .li. wordlength = 0 then while inchar = blank do begin nblanks :m nblanks +1; nextchar end; if newinl1ne then begin .ll. (nblanks > 0) .2£ not fill then break; 11 underchar <> nul ~ begin understring(inline,inlength,underlining); incolumn :"'" incolumn - 1; nextchar end end not multipleblanks and (nblanks > 1)!.illm. nblanks := 1; nsplits := 0; while inchar <> blank do begin ..it inchar ~ 128 = hyphen then begin .!i nsplits < maxsplit then begin nsplits := nsplits + Ij with spli t8 [nsplits] Q.Q. begin point : "" wordlength; if incolumn > 1 ~ hypnt := class {inline [incolumn-1] .c mod 128] .letter and class [inline [incolumn+l].c mod 128] .letter else hypnt : "" false; inpnt : "" incolumn ~ll. end end end else begin wordlength := wordlength + 1; .!.!!h word [wordlength] .Q..Q. begin c :- inchar; nbl :"" charwidth end £llii; - nextchar end end NEXTWORD eod ( ); PACKWORD - PACK A WORD INTO THE OUTPUT LINE. procedure packword; var integer; integer; Db ~~~~dent until eol end { DIRECTIVE P AGE 5 0 S EPTE MBER. 197 9 PAS CAL NEW S # 1 5 NUMBER BLANKS (PRECEDING WORD) NCHARS PREDICTED AFTER ADDING WORD ADDWORD - ADD THE wdRD TO THE OUTPUT LINE. procedure addword; var ~ : integer; begin { llih. ADDWORD { GENERAL INDEX VARIABLE ) outline [outlength] S2. nbi :- nb! + nb * } charwidth; S E PTE MB E R. 1 9 7 9 PASCAL NEWS #15 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 ·2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 for xl :. 1 !.2. word length .!!9. begin outlength :. outlength + 1; out11ne[out1e.ngthl :- word (xl] end· oill;ngth : .. outlength + 1; with outline [out length] .4.2. begin c :- blanki nb! :- 0.!m!i Dehars : - nCi if Dehars >- leftmargin then begin ngaps : .. ngaps + 1; gaps [ngaps] :'"' out length end else gaps [0] :- outlength !!!!!. ( ADDI/ORD ); SETUP - SETUP FOR PACKl/ORD. procedure setup; var 71 integer; begin ( SETUP ) if newparagrapb then nb : .. nblanks else II newoutllne { LOOP INDEX } then nb :- 0 else begin !f. newinl1ne then nb :.. nblanks + 1 else nb : "" nblanks i lfeiisure2 and (outlIne (outlength-l] .c mod 128 = period) ~ (nblanks < 2) and (nchars >- leftmargln) then Db :- 2 end; DC :"" Dehars + nb + wordlength; !!. DC > right margin then!!. rightmargin - nehars > badjustify * Cngaps - 1) then ( GOING TO INSERT TOO MANY BLANKS ) begin if nspllts > 0 then begin xl := nspl1ts; while xl > 0 .!!Q. xllh splits (xl] .!iQ. begin ne :- nehars + nb + point + ordChypnt); if nc <= right margin then begin xl :- 0; EXIT LOOP } incolumn :- inpnt; {RESET INPUT STREAM eol := false; nextchar; wordlength :- point + ordChypnt); !!. hypnt fu!! word [wordlengthJ .c :- minus end else xl : - xl - 1 ~n~ lle::. > rightmargin end; newoutline : - false; newparagraph :- false end { SETUP }; !h!B. errorC008) :~5C"PAGENUMBER begin ( PACKlIORD ) setup; if nc <- rightmargin then addword; nc >- rightmargin - then ( DON-T CALL PACKlIORD, TO PREVENT UNENDING RECURSION IN - - ( TIlE CASE OF A WORD THAT DOESN-T FIT BETWEEN TIlE MARGINS begin justify; writeline. !i nc. > rightmargin .!h!!! begin setup; addword; .!f nc >- rightmargin !!l!!!. begin justify; writeline .!!!! end if end end ( PACKlIORD ); ! -r: .!rlO("MARG~N ERROR PROCESSING w:~g~, ERROR - ISSUE AN ERROR MESSAGE. PAlIAH N - ERROR NUMBER. IS NEGATIVE FOR ERRORS DETECTED DORING FORM PROCESSING TO PREVENT UNENDING RECURSION. FOR POSITIVE N, TIlE FOLLOI/ING CONVENTION IS USED: N DIV 100 INDICATES l/IIICH DIRECTIVE THE REFERS TO. II MOD 100 SELECTS A PARTICULAR ERROR MESSAGE. N IIOD 100 IS >- 50 FOR NUMERIC ERRORS. GlDBAL VARIABLES ERRORIO, ERRORl, ERRORNI, ERRORN2, AlID ERRORSMALL ARE USED FOR PRINTING SPECIFIC I( * * PAGE 51 VALUES WHICH ARE IN ER'tWR. 2531 2532 2533 procedure error{ N : INTEGER }; 2534 2535 !:m. 2536 hostS - packed array[l •• 5] .Qf char; - packed array(l .. lO] .Qf char; 2537 hostlO bost20 - packed array[I •• 20] .Qf char; 2538 var 2539 le; LENGTH OF STR } integer; 2540 FOR PRINTING INLINE } 2541 str string; GENERAL LOOP INDEX } 2542 xl,x2 integer; 2543 2544 2545 2546 WR.S,WRIO,WR,20 - WRITE HOST CHARACTERS TO STR. 2547 2548 2549 procedure wr5C cs : hostS; ne : integer); 2550 2551 ~ xl : integer; begin ( \/R5 ) 2552 2553 ill xl : .. 1 !2. nc .!!f!. 2554 begin len :'"' len + I. with str[len] .!!Q. begin c :'" ascileharCcs[xl]); nb! :- charwidth.!!!.!! 2555 end 2556 end { was }; 2557 2558 2559 2560 procedure wrlOC cs : hostlO; nc integer); var xl : integer; 2561 begin ( \/RIO ) 2562 2563 for xl := I to ne do begin len ::-len +1; 2564 with str [len] .!!Q. begin c ;- asciichar (cs [xl]); nbl :- eharwldth end 2565 end 2566 end { WRIO ); 2567 2568 2569 procedure wr20C cs : host20; integer); 2570 2571 var xl : integer; 2572 begin { \/R20 } 2573 for xl : .. I to nc do begin len :=-len +1; 2574 2575 with str (len1 .!!9.. begin c := asciicharCcs [xl]); nb! :- eharwidth end 2576 end end { WR20 }; 2577 2578 2579 2580 2581 2582 begin ( ERROR ) II printerrors 2583 2584 then begin errors := true; str{l].c :- blank; str[l].nbl ;= 0; 2585 len :- 1; 2586 2587 wrSC" - - - ",5); 2588 if n < 0 2589 then begin wr20C"FORM ERROR: ",12); 2590 ~n .2i 2591 -I ; wr20C"LINE TOO LONG " ,13) ; -2 : begin len :- len + I. 2592 2593 .!!!!h. str[lenJ .!!2. begin c :'"" errorl; nbl :- charwidth end 2594 2595 -3 : TOO LARGE" ,20); -4 : wr20C"BAD NUMERIC FORM ",16); 2596 2597 -5: wr20C"NO "L" FOUND ",12). 2598 !!!.4.; 2599 writestringCstr ,len); 2600 endline 2601 !rut 2602 .!!!£. begin II firsterror { FIRST ERROR ON THIS LINE } 2603 .!h!!!. begin convertnumberCstr,len,linenumber, 4,numeric); vr5{". ",2); 2604 2605 ill xl :- III inlength .!!f!. str[len+xl] :- lnline[xl]; 2606 len : - len + inlength; 2607 writestringCstr ,len); 2608 endline. 2609 first error ;- false; str[l] .nbl :-= 0; 2610 2611 len :- 6 2612 d 2613 ea:: d1v 100 of 2614 ' ,6); 2615 2 : wrlOC'OPTION ',6); 2616 3: wrIOC"PARAGRAPH ",9); 2617 4 : wr5C"FORM ",4); 2618 5 : wrlOC'SELECT ' ,6); 2619 2620 6 : wrlO{"SORTINDEX ",9) i 2621 7 : wr5C"COUNT" ,5); 2622 8 : wrIO("INDENT ",6); 2623 9 .: wr5C"SKIP ",4); 10 : wrlOC"OUTPUT ",6); 2624 2625 11 : wr5("INPUT" ,5). 2626 12 : wrSC"RESET" ,5); 2627 ERROR: " ,8); 2628 2629 n :- n 1IlOd 100; 2630 ifn nil do 2812 begin ip : "" inxbase;inxbase ;"" inxbasej.next; 2813 dispose(ip) 2814 2815 end; 2816 inxlast : - nil end { INITINX }; 2817 2818 2819 2820 2821 INITMAR - INITIALIZE MARGIN SETTINGS. 2822 2823 2824 2825 procedure ini tmar; 2826 var 2827 71 : integer; { LOOP INDEX } 2828 begin ( INITMAR ) 2829 keepmar :~ 0; 2830 leftmargin :- 0; 2831 rightmargin : - 70; 2832 for xl :- 0 !2. maxkeep ~ savemar [xl] .defined :- false; 2833 nchars : ... 0; outline[l] .nbI :- 0; 2834 marsave 2835 2836 end { INITMAR }; 2837 2838 2839 2840 2841 INITOPT - INITIALIZE OPTION SETTINGS. 2842 2843 procedure initopt; 2844 2845 var 2846 71 : integer; { LOOP INDEX } begin { INITOPT } 2847 keepopt ;- 0; 2848 2849 printerrors :- true; 2850 fill ; - true j 2851 badjustify :- 1; leftjustify :- true; 2852 2853 multipleblanks :- true; ensure2 : true; 2854 rightjustify :- true; 2855 iP }; NUMBER TO TEST. MINIMUM ALLOWED VALUE. MAXIMUM ALLOWED VALUE. ERROR NUMBER IF NOT IN RANGE. VAR NUM : INTEGER; MIN,MAX,ERR INTEGER. ) errornl ;= num; errorsma11 :"" num < min; if errorsmall then begin num := min; errorn2 :""" num; error(err) end else if num > max thenbegin num := max; errorn2 :"" num; error(err) end £lli! { VALIDATE }; SECONDARY INITIALIZATION REINITIALIZE - RE-INITIALIZE GLOBAL VARIABLES. }; PAGE 52 : K SEPTEf1BER,1979 PASCAL NEl'IS #15 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 space :- 0; shiftup : - false; for xl :- 0 .!Q. maxk.eep .!!.Q. saveopt [xlI_defined :- false; optsave end ( INITOPT }; INITOUT - INITIALIZE OUTPUT SETTINGS. procedure initout; begin ( INITOUT } blankcount :- 0; blankHne :. false; carriagecontrol :- blank; 111lecount := -1; terminaltype :- astt charwldth :- 1; eject :- false; pause :- false; shift :- 0; underavail : ... true; outwidth :- maxowidth { INITOUT }; ~ INITPAR - INITIALIZE PARAGRAPH SETTINGS. procedure inltpar; var : integer; begin ( INITPAR --xI ( LOOP INDEX ) keeppar :.. 0; paracount :- 0; parachar := nul; lockeddent :e: OJ numbering :- nonumberlng; parapage := 0; paraskip :- 0; numberWidth :- 3; for xl :- 0 II maxkeep .2Q. savepar [xl].defined : .. false; parsave £!!!! { INITPAR }; begin ( REINITIALIZE } for d := bre .!Q,ill .4.Q. :!!. d .i.e. which then case d of bre";-; - com: ; cou : pagenumber :- 1; frm : inl tform.; ind inp inx . initinp; initinx; lit mar opt out pag par initmar; initopt; initout; . initpar; res sel : for xl :- 0 II maxpage ski: .!!2. selection[xl} :- true; sor sbt ttl titlelength[subtitle}:- 0; titlelength[maintitle]:- 0; und weo _xc ill: end _nd{ REINITIALIZE }; PRIMARY INITIALIZATION INITIALIZE - INITIALIZE GLOBAL VARIABLES. procedure initialize; INITASC - INITIALIZE HOST TO ASCII CONVERSION TABLES. 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 }3056 }3057 }3058 }3059 }3060 }3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 PAGE 53 procedure ini tasc; ~ extch : char; EXTERNAL CHARACTER intch : ascii; INTERNAL CHARACTER begin ( INITASC } asc[chrC O)} :- colon; intch := a; for extch :- ·A· to ·Z· do begin asc[extch]:- intCh; intch :- intch + 1 end; iatch : - zero; for extch :- ·0· to ·9· do begin asc[extch]:- int-;;b; intch :- intch + 1 !!!!!; asc[·+·] :- plus; asc[·_·] :- minus; asci· r] :- slash; ase[·.·] :- star; asc[·C·] :- Iparen; asc[·)·] :- rparen; asc[·$·1 :- dollar; ase[·_·] :- equal; ascI· .] :- blank; ascr· •• ] :- comma; asci· •• ] :- period; asc[·'·] :- hash; aac(· [.] :- Ibrack.et; asc[·]·] :- rbracket; asct·:·] :- colon; asc[·"·] :- dquote; asct· .] :- underscore; asc[·T·] := exclaim; ase[·'·] :- ampersand; asc[ .. ··] :- squote; asc[·?·] :- question; asc[·<·] :- less; aac[·>·] := greater; asc[chrC 60)] :- nul; ase[·'·] :- backslash; asc[chrC 62)] : ... nul; ascr·;·] :- semicolon; for extch :- chrC 0) to chrC 63) ..!!.Q. asc74 [extch] :- nul; ~74[chrC 1)] := a~;asc74 [chrC 2)] := caret; asc74 [chr( 4)1 := percenq asc74 [chrC 7)] :"" grav; asc76[chr( 0)] :m nul; intch : - smalla; for extch := ·A· to ·Z· do begin asc76[extcb] := i-;rtch; intch :- lntch + 1 end; asc76[chr( 27)J :"" Ibrace; asc76[chrC 28)] :- verticalbar; ase76[chrC 29)] ; .. rbrace; asc76[chr( 30)] :- tilde; asc76[chr( 31)] :m del; iutch :"" nul; for extch : .. chrC 32) Ml. chrC 63) ..!!Q. begin asc76{extchl :"'" iutch; intch :- intch + 1 end £!!!! { IN ITASC }; INITCLASS - INITIALIZE THE CLASSIFICATION TABLE. procedure inltclass; var : ascii; empty : charclass;{ begin ( IN ITCLASS } Ch ~empty INDEX VARIABLE } ALL FIELDS ARE FALSE ..!!.Q. begin letter :- false; digit :- false; formchar :- false; optionchar :- false; marginchar :- false; paragraphch ; .. false; sortinxchar :- false; plusorminus : - false; quote : ... false; numfonn := false; £!!!!; for ch :- nulll del..!!Q. class [ch] :- empty; for ch :- a l l z..!!.Q. class[ch].letter :- true; for ch :- smalla l2. smaltz ..!!.Q. class [chI .letter :- true; for ch :- zero !..Q. nine .!!2. class [ch] .digit :c true; classIc] .formchar :- true; class [d] • formchar : = true; class[e] .formchar :- true; class{1] .formchar :'"" true; class[p] .formchar :- true; class[s] .formchar :- true; clase[t] .formchar :'"" true; class {wI .formchar := true; class [hash] .foIlllChar : ... true; class [lbracketl .formchar :"" true; class [rbracketJ .formehar :- true; class [slash] • formchar : .. true; class [dquote] .formchar :- true; class [squote] .formchar :- true; class [blank] .formchar :'" true; class(b] .inputchar : ... true; class [c] • input char : - true; class[d] .inputchar :- true; class[h] .inputchar :- true; class Ik] . input char : - true; class{u] .inputchar :- true; class [wI .inputchar :- true; class [blank] .inputchar :- true; class [kl.marginchsr :"" trut-!; ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( } } } } } } } } } } } } } } } } } } ( } ( ( ( ( ( ( } } } } } } ( } } ( ( } ( } ( ( } } ( } ( ( } ( } } } ( } ( ( ( } } ( ( ( ( ( ( } } } } } ( ( } } } ( ( } } ( } ( } ( ( } ( } } ( } ( ( } } PASCAL NEWS #15 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 SEPTEr'lBER,1979 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 class[l] .marginchai: :- true; class{r] .marginchar :- true; class [blank] .marginchar :- true; class [el ooptionchar ;- true; class [fl .optionchar :"" true; class(j] .optionchar :- true; class [kl.optionchar :- true; c1as8[1] .optionchar :.., true; class em] ooptionchar :- true; class[p] ooptionchar :- true; class [r] .optionchar :- true; class [a] ooptionchar := true; class[u1·optionchar := true; class[blankl.optionchar ;- true; class(e] ooutputchar := true; class[p1.outputchar :- true; class [a] ooutputchar :- true; class [u] ooutputchar := true; class [w1 ooutputchar : .. true; class [blankl.outputchar := true; class [cl.paragraphch :- true; class [f] .paragraphch := true; c1ass[i] .paragraphch :- true; class [k] .paragraphch :- true; c1ass[n] .paragraphch :- true; class [p] .paragraphch := true; class [sl.paragraphch :- true; c1ass[u1.paragraphch :- true; class [b1ankl .paragraphch :- true; class [1] .sortiruc:char := true; class [m] .sortinxchar := true; class {p] .sortiruc:char :- true; c1ass[rl.sortinxchar :- true; class (s] .sortinxchar := true; class [blank] .sortinxchar :"" true; class [plus] .p1usorminus :- true; class [udnus].p1usorminus :- true; class [dquote].quote := true; class [squote] .quote :- true; class en] .numform := true; class [sma11nJ .numform :- true; c1ass{1] .numform := true; class [smalll] .numform. :- true; class [r] .numform := true; class [sma11r] .numform :- true; class [blank] .numform := true; end { INITCLASS }; 3204 INITCLOCKS - INITIAlIZE RAWCLOCK AND WALLCLOCK. procedure initc1ocks; { } var { } ascii; TENS DIGIT OF WALLCLOCK } c2 ascii; ONES DIGIT OF WALLCLOCK } c3 ascii; AORPFORAMORPM} sys temc lock al£a; SYSTEM CLOCK AS ' HH.MM.SS.' xl integer; GENERAL LOOP INDEX } begin { INITCLOCKS } { IF NO SYSTEM CLOCK: { RAWCLOCK[ IJ :a N; { RAWCLOCK[ 2J := 0; { RAWCLOCK[ 3J := BLANK; { RAWCLOCK[ 4J :- C; { RAWCLOCK[ 5J := L; { EAWCLOCK[ 6J :- 0; { RAWCLOCK[ 7] :- C; { RAWCLOCK[ 8J := K; { RAWCLOCK[ 9J :- BLANK; { RAWCLOCK[10J := BLANK; ( WALLCLOCK: - RAWCLOCK; time(systemc1ock) ; ill. xl :- I !Q. 8 M rawc1ock[xl] :"" asc[systemclock[xl+l)); rawc1ock[91 :- blank; rawe1ock[10] :- blank; cl :- rawc1ock[1]; c2 :- rawc1oek[2]; c3 :- a; s.!.!.£. cl .2!. zero : if e2 - zero then begin cl :- one; e2 :- two end .tl!!. c1 : - blank; : if e2 - two then c3 :- p else !f e2 > two ~ begin e1 :- blank; e2 :- c2 - 2; e3 :- p.!m!; two : begin !f c2 <,.. one ~ begin cl :- blank; c2 :- e2 - 2 ~ else begin e1 :- one; c2 :"" c2 + 2 end; c3 :- p end { } { { { } "CT W:~~!loek[ 1] :- el; wa1lclock[ 2] :- e2; wallc10ck [ 3] :- colon; wal1eloek[ 4] :- rawc1ock[4]; wallc1ock[ 5] : .. rawclock{5]; wallcloek[ 6] :- blank; walleloek[ 7] :- e3; wallc1oek[ 8] := m; wa1lclock[ 9] :- blank; wallelock[10] :- blank end { INITCLOCKS }; { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { { } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 PAGE 54 INITDATES - INITIALIZE RAWDATE AND NICEDATE. procedure initdates; .!@!. month : eh3; CURRENT MONTH NAME } sys temdate : alfa; SYSTEM DATE AS • YY/MM/DD.· xl : integer; GENERAL LOOP INDEX } begin { IN ITDATES } { IF NO SYSTEM DATE: { RAWDATE[ IJ := N; { RAWDATE [ 2J := 0; { RAWDATE [ 3J :- BLANK; { RAWDATE[ 4J :- D; { EAWDATE[ 5J :- A; { EAWDATE [ 6J := T; { RAWDATE [ 7J :- E; { RAWDATE [ 8J : - BLANK; { RAWDATE[ 9J := BLANK; { RAWDATE[IOJ :- BLANK; ( NICEDATE: - RAWDATE; date(systemdate) ; for xl :'"" 1!Q. 8.2£. rawdate[x11 :- asc [systemdate [x1+111; rawdate[9] :- blank; rawdate[101 := blank; month :- months [(rawdate[4] - zero) * 10 + rawdate[5] - zero]; { nicedate[ 1] := rawdate[1]; { nicedate( 2] :- rawdate[8]; { nieedate{ 31 := blank; { nicedate[ 4] := month [1] ; { nicedate[ 5] :- month [2] ; { nicedate[ 6] :- month[3]; { nicedate[ 1] := blank; { nieedate [ 8] :- rawdate [1]; ( nicedate[ 9] :- rawdate[2]; { nlcedate[10] :- blank { ~ { INITDATES }; ( INITDIRECTS - INITIALIZE THE DIRECTS TABLE. procedure initdirects; ONEDIRECT - INITIALIZE ONE DIRECT ENTRY. PARAH DIR = DIRECTIVE. A,B,C - 3 CHARACTERS OF DIRECTIVE NAME. procedure onedlrect( dir : direct; a,b,c : begin { ONEDIRECT ) directs [dir] [1] :"" a; direets{dir] [2] := b; directs [dir] [31 :- c end { ONEDIRECT }; aR~tt ); begin ( INITDIRECTS onedirect(bre,b,r,e) ; onedirect(com,c,o,m) ; onedirect(cou,e,o,u) ; onedirect(frm,f,o,r) ; onedirect(ind,i,n,d) ; onedirect(inp,l,n,p) ; onedlrect(inx,i,n,x) ; onedireet(lit,l,i,t) ; onedirect(mar,m,8,r) ; onedirect(opt ,o,p, t); onedirect(out,o,u,t) ; onedlrect(pag,p,a,g) ; onedlrect(par,p,a, r); onedirect(res,r ,e,s); onedirect(se1,s ,e,l); onedirect(ski,s,k,l) ; onedlrect(sor,s,o,r) ; onedirect(sbt ,s,u,b); onedireet(ttl, t ,i,t); onedireet(und,u,n,d) ; onedirect(weo,w,e,o) ; oaedirect(exe,e,x,c) ; onedirect(ast,a,s,e) ; onedireet(lpt,l,p,t) ; onedirect (ajt,a,j ,blank) .!M { lNITDIRECTS }; INITHOST - INITIALIZE ASCII TO HOST CONVERSION TABLE. procedure lni thost; var -;;tch : char; latch : ascii; begin { INImOST } l!!!h. hos t [nul] M begin ehr74 :- false; chr76 :- true; c :- chr{ 45) .!!Uti for intch :- Bucc(nul) EXTFllNAL CHARACTER INTERNAL CHARACTER .!.2 del M { { { { ( { { { ( { { } } } } } } } } } } } PAS CAL NEW S # 1 5 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 ( { ( { { ) } ) } } then begin chr74 :"" false; chr76 : '" false i c :- extch end ( ( ) ) { { else begin extch :"" chr(O); while (asc74 [extch] <> intch) and (exteh < chr( 63» extch := succ(extch); i f asc74 [extchl z: lntch { } } } E.£ .42. then begin chr74 !'" true; chr76 := false; c :- extch end else begin extch := chr(O) j while (asc 76 [extch] <> lntch) and {extch < chr ( 63» extch : '" suce( extch) ; if ase 76 [extch] = lntch then begin chr74 :"" false; chr76 := true; c :"" extch end else writeln(" OOPS: .. ,intch:3, 'B') end end end; host [colonl.c :"" ":" end { INITROST { { ( ( { { ( ( -do } { } { { { } } } ) } } } } } } } { { { { { { { }; procedure inl tmonths; ONEMONTH - INITIALIZE ONE MONTH NAME. MON: MONTH NUMBER. A,B,C : THREE LETTERS OF MONTH NAME. procedure onemonth( mon : integer; a,b,c : ascii); begin { ONEMONTH } months [mon] [1] := a; months[monl [2] := b j months [mon] [3] := c end { ONEMONTH }; begin { INITMONTHS } onemonth( l,j ,smalla,smalln); onemonth( 2,f ,smalle,smal1b); onemonth( 3,m,smalla,smallr); onemonth( 4,a,srnallp,smallr); onemonth( 5,m,smalla,smally); onemonth( 6,j ,smallu, smalln); ooemonth( 7,j,smallu,smalll); onemonth( 8,a,smallu,smallg); onemonth( 9,s,smalle,smallp); onemonth( 10,0 ,smallc, smallt); onemonth( 11, n,sm.allo,smallv); onemon th (12, d, smalle. smallc) ~..!!!! { INITMONTHS }; } } ) ) } } ) ) { ( INITMONTHS - INITIALIZE THE MONTHS TABLR. PARAM P AGE 5 5 SEPTEflBER,1979 with host [intch] do begin extch : '" chr' (0) ; while (asc [extchJ <> intch) and (extch < chr( 63» extch : .. succ{extch); ..li. asc (extchl .. intch 3369 3370 3371 3372 3373 begin { INITIALIZE } 3374 reset(infile) ; 3375 rewrite(output) ; 3376 linelimit(output,maxint); { UNLIMITED OUTPUT 3377 initmonths; {BEFORE INITDATES } 3378 3379 initasc; 3380 initc1ass; 3381 initclocks; 3382 initdates; initdirects; 3383 3384 ini thost; directline := false; 3385 endofinput :"" false; 3386 eo1 := true; 3387 3388 errors : "" false; gaps[O] := 1; 3389 3390 inchar :'" blank; incolumn ::: 150; 3391 inlength :- 0; 3392 inxbase : z oil; 3393 lnxlast := nil; 3394 3395 linenumber := 0; linenums := iuHler !!!. ['0' •• '9']; 3396 3397 m.oreonleft :'" false; 3398 nblanks : "" 0; nchars := 0; 3399 3400 newinline := true; newoutline := true; 3401 newparagraph : = true; 3402 ngaps := 0; 3403 3404 nwords : "" 0; outlength ::c 1; 3405 outline(l].c :- blank; 3406 outline[l] .nbl := 0; 3407 reinitialize( [bre •• ill]) 3408 end { INITIALIZE }; 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 PROSE 3421 3422 3423 3424 3425 3426 3427 3428 begin { pROSE } 3429 initialize; 3430 nextword; 3431 while not endofinput ..QQ begin packword; nextword end; 3432 3433 break; 3434 !!. linecount < infinity 3435 then begin page (infinity) ; 3436 selection(pagenurnberl := true; advanceform 3437 3438 3439 1£ then halt(' PROSE ERRORS DETECTED.') 3440 ~d { PRO~}. e:~;ors Program. We have received a short version of the Printme program (P-l) from Japan. The program is printed here as a mental exercise for the interested readers who want to clean the rust off their reasoning mechanisms. The only clue we feel we ought to give you is that CHR(48) is meant to be the apostrophe character. The fun things are around the edges ••• INFORMATION ENGINEERING COURSE DIVISION OF ENGINEERING UNIVERSITY OF TOKYO GRADUATE SCHOOL (lLmkyoku, Tokyo 113 Japan, Telephone: (OJ) 812-2111 Dear Mr. Mickel: November 15, 1978 Program Printme (Pascal News #12, P.32) made me write my own version. My Printme is as follows. Sincerely yours, ?-i uJ~ Eiiti wada { } PROGRAM PRINTME(OUTPUT);VAR I:INTEGER; PROCEDURE P(I:INTEGER);BEGIN CASE I OF O:WRITE(':WRITE('); l:WRITE('PROGRAM PRINTME(OUTPUT);VAR I:INTEGER;'); 2:WRITE('PROCBDURE P(I:INTEGER);BEGIN CASE I OF'); 3:WRITE('END END;BEGIN P(1);WRITELN;P(2);WRITELN;FOR 1:=0'); 4:WRITE('TO 7 DO BEGIN WRITE(I:l);P(0);WRITE(CHR(48»;'); 5:WRITE('P(I);WRITE(CHR(48»;P(7);WRITELN END;FOR 1:=3 TO'); 6:WRITE('6 DO BEGIN P(I);WRITELN END END.'); 7: WR I TE (' ) ; , ) ; END END;BEGIN P(1);WRITELN;P(2);WRITELN;FOR 1:=0 TO 7 DO BEGIN WRITE(I:l);P(0);WRITE(CHR(48»; P(I);WRITE(CHR(48»;P(7);WRITELN END;FOR 1:=3 TO 6 DO BEGIN P(I);WRITELN END END. Algorithm. A Perfect Hashing Function A-3 Title: Author: Address: A Class of Easily Computed, Machine Independent, Minimal Perfect Hash Functions for Static Sets Richard J. Cichelli Software Consulting Services, 901 Whittier Drive, Allentown, Pa. 18103 Abstract: ---A-method is presented for computing machine independent minimal perfect hash functions of the form: hash value ' - key length + the associated value of the key's first character + the associated value of the key's last character. Such functions allow single probe retrieval from minimally sized tables of identifier lists. Application areas include table look-up for reserved words in compilers and filtering high frequency wot"ds in natural language processing. Functions for Pascal's reserved words, Pascal's predefined identifiers, frequently occurring English words, and month abbreviations are presented as examples. Key ,lords and Phrases: Hashing, hashing methods, hash coding, direct addressing, dictionary lookup, information retrieval, lexical analysis, identifier-to-address transformations, perfect hashing functions, perfect hash coding, scatter storage, searching, Pascal, Pascal reserved words, backtracking CR Categories: --3-:-7~4, 4.34, 5.25, 5.39 In several recent articles [1), [2) it has been asserted that in general computing minimal perfect hash functions for identifier lists (keys) is difficult. Here, several examples of such functions are shown and an efficient method for computing them is described. The form of my hash function is: Hash value"- key length + associated value of the key's first character + associated value of the key's last character. Example #1: Pascal's Reserved Words For Pascal's 36 reserved words, the following list defines the associated value for each 1etter. A=II, B=I5, C=I, D=O, E=O, F=15, G=3, H=15, 1=13, J=O, K=O, L=15, M=15, N=I3, 0=0, P=15, Q=O, R=14, S=6, T=6, U=I4, V=10, W=6, X=O, Y=I3, Z=O. (For lookup routines these values are stored in an integer array indexed by the letters. Note: associated values need not be unique.) The corresponding hash table with hash values running from 2 through 37 is as follows: DO, END, ELSE, CASE, DO,[NTO, GOTO, TO, OTHERWISE, TYPE, WHILE, CaNST, DIV, AND, SET, OR, OF, MOD, FILE, RECORD, PACKED. NOT, THEN, PROCEDURE, WITH, REPEAT, VAR, IN, ARRAY, IF, NIL, FOR, BEGIN, UNTIL, LABEL, FUNCTION, PROGRAM. As an example, consider the computation for "CASE": (l<--"C") + (O~-"E") + (4 <;-length("CASE")) = The advantage of hash functions of the above form is that they are simple, efficient, and machine (i.e. character representation) independent. It is also likely that any lexical scanning process will have, as a by-product of its identifier sca~ning logic, the identifier length and the values of the' first and last characters. T~lo d1sadvantages of functions of this form are I) that it requires that no two keys share length and first and last characters and 2) for lists with more than about 45 items segmentation into sublists may be necessary. (This is a result of the limited range of hash values that the functions produce.) . The associated values for each of the letters are computed by the follow1ng procedure: 1) Order the identifier list, and 2) Search, by backtracking, for a solution. The ordering process is twofold. First, order the keys ~y the s~m of the frequencies of the occurrences of each key's first and last letter 1n the llSt. ~or example: "E" occurs 9 times as a first or last letter in the Pascal reserved word llSt. It 1S the most frequent letter and thus, "ELSE" is the first word in the search list. 1'0" is the next most frequent letter, and thus "END" is second. After the word~ have been put in order by character occurrence frequencies, modify the order of the llSt such that any \'Iord whose hash value is determined by assigning the assoc1ated character values already determined by previous words is placed next. :hus, after "OTHERWISE"l has bee~ " placed as the third element of the frequency ordered.l1st, the hash value of the word DO is determined and so it is placed fourth. (I.e. dur1ng search, after the placement of the word "END" a value will be associated with "0", and after the placement of the word "OTHERWISE" a value will be associated with "0".) The ordering process causes hash value conflicts during search to occur as early as possible thus pruning the search tree and speeding the computation. . The completely ordered search list for Pascal's reserved words 1S: ELSE, END, OTHERWISE, DO, DOWN TO , TYPE, TO, FILE, OF, THEN, NOT, FUNCTION, RECORD, REPEAT, OR, FOR, PROCEDURE, PACKED, WHILE, CASE, CONST, DIV, VAR, AND, MOD, PROGRAM, NIL, LABEL, SET, IN, IF, GOTO, BEGIN, UNTIL, ARRAY, WITH. The backtracking search procedure then attempts to find a set of associated values "hich "ill permit the unique referencing of all the members of the key word list. It does this by trying the words one at a time in orde~. T~e,backtracking procedur~ is as follows: If both the first and last letter of the 1dent1f1er already have assoc1ated values, try the word. If either the first or last letter has an associated value, vary the associated value of the unassigned character from zero to the maximum allowed associated value, trying each occurrence. If both letters are as yet unassociated, vary the f'irst and then the second, trying each possible combination. (An exception test is reQuired to catch situations where the first and last letters are the same.) Each "try" tests whethel' the given hash value is already assigned and, if not, .reserves the.value and assigns the letters. If all identifiers have been selected, pr1nt the Solut10n and halt. Otherwise, invoke the search procedure recursively to place the next word. If the "try" fails, the word is removed in backtracking. . .. The search time for computing such funct10ns 1S related to the number of 1dent1f1ers to be placed, the maximum value which is allowed to be associated with ~ charac!e~, and the density of the resultant hash table. If the table dens1ty 1S one (l.e. a m1n1mal perfect hash) and the maximum associated value is allowed to be the count of distinct first and last letter occurrences (21 for Pascal's reserved wordS), then the above procedure finds a solution for Pascal's reserved words in about seven seconds on a DEC PDP-ll/45 using a straightforward implementation of the algorithm in Pascal. (vlithout the second ordering, the search required 5y, hours.) If the maximum associated value is limited to 15, as in the above list, the search requires about 40 minutes. (There is no solution with 14 as a maximum value.) Incorporation of the above hash function into a Pascal cross reference program yielded a IO~ reduction in total run time for processing large programs. The method replaced a well coded binary search which was used to exclude reserved words from cross referencing. en rn -u --I rn -u :t> Inclusion of the \~ord "OTHERWISE" in Pascal's reserved word list anticipates the acceptance by the Pascal Users Group of the recommendatio~ for a revised CASE construct submitted by its International Working Group for Extens10ns. = rn Vl O"l Example #2 The second example is for the list of Pascal's predefined identifiers. A=15, B=9, C=11, 0=19, E=5, F=3, G=O, H=O, 1=3, J=O, K=16, L=13, M=1~ N=19, 0=0, P=18, Q=O, R=O, S=15, T=O, U=17, V=O, W=10, X=O, Y=O, Z=O. GET, TEXT, RESET, OUTPUT, MAXINT, INPUT, TRUE, INTEGER, EOF, REWRITE, FALSE, CHR, CHAR, TRUNC, REAL; SQR; SQRT, WRITE, PUT, ORO, READ, ROUND, REAOLN, EXP, PAGE, EOLN, COS, SUCC, DISPOSE, NE~ABS, LN, BOOLEAN, WRITELN, SIN, PACK, UNPACK, ARCTAN, PRED. Computation of this function required about seven minutes. Note: since the predefined identifier "ODD" conflicts with "ORO", it was not included in the list. Exam le #3: Fre uentl Occurrin En lish Words This example uses the word list of 1,3 Search time was less than one second. A=3, 8=15, C=O, 0=7, E=O, F=15, G=O, H=lO, 1=0, J=O, K=O, L=O, M=12, N=13, 0=7, P=O, Q=O, R=12, S=6, T=O, U=15, V=O, W=14, X=O, ~O, Z=O. ~it) aS~he_, I, the that, at, are, a, is, to, this, and, have, in., not, be, but, his, had, or, on, was, of, her, by, you, with, which, for, from. Example #4: Month Abbreviations This example is from C21. The function's form was modified slightly to: Hash value~-.associated value of the key's second character + associated value of the key's third character. A=4, B=5, C=2, 0=0, E=O, F=O, G=3, H=O, 1=0, J=O, K=O, L=6, M=O, N=O, 0=5, P=l, Q=O, R=6, S=O, T=6, U=O, V=6, W=O, X=O, Y=5, Z=O. JUN, SEP, DEC, AUG, JAN, FEB, JUL, APR, OCT, MAY, MAR, NOV. This form avoids the conflict between "JAN" and "JUN" and takes into account the constant key length. Search time was again well less than one second. Note: the method presented here is applicable to sets up to four times as large as those said to be feasible by the methods descri bed in (2) r~oral : --This article does not have a conclusion, but it does have a moral. In the words of the renowned chess programmer, Jim Gillogly, author of the Technology chess program which "as the prototype of the current generation of highly successful chess programs, "When all else fails, try brute force." References: (IJ Sheil, B. A. Median Split Trees: A Fast Lookup Technique for Frequently Occurring Keys. Comm. ACM 21, 11 (Nov. 1978), 947-958. [2] Sprugnoli, Renzo. Perfect Hashing Functions: A Single·Probe Retrieving Method for Static Sets. Comm. ACM 20, 11 (Nov. 1977), 841-850. [3J Knuth, D.E. Sorting and Searching, Vol 3, The Art of Computer Programming, 506. program perfect(tty) R.J.CICHELLI 2-FEB-79 }; { COMPUTE A PERFECT HASH TABLE FOR PASCAL RESERVED WORDS const debug = false; startsolmax = 1; startwordmax = .36; maxwordsize = 10; maxhashvalue = 50; maxreservedwords 50 { 10 11 12 13 14 15 16 17 18 19 20 21 22 0 .. N-l }; 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 ~ letter = 'A' •. 'Z'; possiblehashvalues = 0 .. maxhashvalue; wordsize "" 1 .. maxwordsize; award = array [wordsize] of char; resword = record fstlet, lstlet : char; length, sortval : integer; word aword end; 77 78 79 80 81 82 83 84 85 86 alta = packed array [1 .. 10] of char; var i: integer; keys: array [0 .. maxreservedwords] of resword; letterdata : array [letter] of descletter; taken : array [possiblehashvalues1 of boolean; wordstodo, solutioncnt, maxsolutns : integer; wordcount, numberofreservedwords, maxcharval: integer; ptime, pdate : alfa; procedure sort(l, r : integer) { QUICKSORT = rn }; var ---i, j, x : integer; w: resword; begin x := keys [(i+j) div 2].sortval; j := r; i := 1; repeat while keys [i] .sortval < x do i := i + 1; while x < keys[j].sortval do j := j - 1; j then -begin ---w := keys [i]; keys [i] := keys [j]; keys[j] := W; i:= i + 1;; j:= - 1; end; until i > j; if 1 < j then sort(l,j); if i < r then sort(i,r); end { SORT---ri ili<= procedure printsolution(numwords: integer); U1 rn -0 --l rn var i, j: integer; ch: char; begin d;t"e(pdate); time(ptime); solutioncnt := solutioncnt + 1; writeln(tty,' SOLUTION " solutioncnt); writeln(tty,' LETTER --- REPRESENTED BY'); for eh := 'A' to '2' do , ,letterdata[ch] .representedby); ---;;riteln(tty,'-- , ,eb,"' writeln(tty) ; writeln(tty,' RESERVED WORD LIST') ; HASH VALUE'); write(tty,' WORn if debug then writeln(tty,' FST LST LENGTH') else writeln(tty) ; -----'); writeln(tty, ' if solutioncnt >= maxsolutns then sorteD, numberofreservedwords); for i : = 0 to numwords do with keys [i]do begin write(tty,' ',i+l:3,' ',word,' ',sortval); if debug then writeln(tty,' , ,fstlet,' , ,lstlet,' , ,length:3) ---- else writeln(tty); end; writeln(tty); writeln(tty,' PRINTING AT ' ,ptime,' , ,pdate); if solutioncnt >= maxsolutns then halt; 87 88 integer end; descletter = record usecount, representedby procedure initkeys; -0 :J;> Gl rn 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 12"9 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 begin keys [0] .word : =' OTHERWISE '; ' ; keys [l].word := 'AND keys [3] .word := 'BEGIN keys [2] .word := 'ARRAY '; '; keys [5].word :- 'CASE '; keys [4] .word := 'PACKED '; ,; keys [7] .word := 'CONST keys [6] .word := 'GOTO ' ; , ; keys [9] .word := 'DO keys [8] .word := 'DIV ' ; ,; keys [l1].word := 'ELSE keys [10].word := 'DOWNIO '; keys [13].word := 'FILE '; keys [12] .word :- 'END ' ; keys [15].word :- 'FUNCTION '; keys [l4].word := 'FOR ' ; keys [17] •wo rd :- 'IN '; keys [16].word := 'IF '; '; keys [19].word := 'MOD keys [18].word :- 'LABEL '; , ; keys [21].word :- 'NOT keys [20] .word := 'NIL ' ; 'OR keys [23] .word '; := '; keys [22].word :- 'OF 'keys [25] .word := 'PROGRAM '; keys [24].word :- 'PROCEDURE ' ; keys [27] .word := 'RECORD '; keys [29].word :- 'SET '; ' ; keys [28] .word :- 'REPEAT '; keys [31] .word := 'TO keys [30] .word :- 'THEN '; ,; keys [33] .word := 'UNTIL keys [32] .word :- 'TYPE '; ,; keys [35].word := 'WHILE ' ; keys [34] .word := 'VAR '; keys [26] .word :- 'WITH numberofreservedwords :- 35; end; procedure clear letters ; var ch char; ·begin for ch :- 'A' to 'z' do ~th letterdata[ch] do begin usecount :- 0; end; representedby:= 0 end; procedure setkeys; var i, j: integer; begin for i :- 0 to numberofreservedwords do with keys[1] do begin fstlet := word[l]; j := maxwordsize; while word[j] - ' , do j := j - 1; lstlet :- word[j]; length := j; sortval :- 0; end; end; procedure conflicts; var ----;ogood: boolean; i, j: integer; chl, ch2: char; begin nogood :- false; clearletters; set keys ; for i :- 012 numberofreservedwords do 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 begin with keys [i] do begin chl := fstlet; ch2 := lstlet; end; for j := 1+1 !.Q. numberofreservedwords do begin i f keys[i].length = keys[j].length then begin wi th keys [j] do begin i f «chl - fstlet) and (ch2 = lstlet» or «ch2 = fstlet)and (chl = lstlet»then -begin writeln(tty,' ',keys[i].word,' CONFLICTS WITH', keys [j].word); nagoad := true; end; end; end; end· if no~ood then halt else writeln{tty,' NO CONFLICTS '); end; procedure order; ~ i: integer; begin clearletters; setkeys; for i :- 0 to numberofreservedwords do with keys[1] do begin letterdata[fstlet] .usecount :- letterdata[fstlet] .usecount + 1; letterdata [lstlet).usecount := letterdata [lstlet) .usecount + 1; end· for "i"7~ to numberofreservedwords do with keys[1] do sortval :- -(letterdata[fstlet].usecount + letterdata[lstlet].usecount); sort(O, numberofreservedwords); end; ° procedure reorder; var i, j, mark integer; begin clear letters ; setkeys; mark := 1; for i : = to numberofreservedwords do i f keys[i]:;ortval = 0 then begin with keys[i] do begin sortval := mark; mark := mark + 1; letterdata[fstlet].representedby := 1; letterdata [lstlet] .representedby := 1; ° 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 end; for j := i+1 to numberofreservedwords do i f keys [j 1 .sortval = 0 then begin with keys [j 1 do begin .!i (letterdata [fstletl.representedby (letterdata [lstletl .representedby begin 1) and 1) then sortval := mark; mark := mark + 1 end; end; end; end; sort(O, numberofreservedwords); end; procedure loit; var i, j: integer; ch :char; w : reswor'd; begin ( INIT wordcount := 0; maxsolutns := startsolmax; wordstodo := startwordmax solutioncnt := -1; initkeys; conflicts; order; reorder; maxcharval : = 0; for ch := 'A' to 'z' do maxcharval := maxcharval --:; letterdata~h] .representedby; setkeys; printsolution(numherofreservedwords); clearletters; 1; procedure addword; var ch1, ch2: char; len, repfirstlet, replastlet integer; procedure try; 272 var hsh: integer; 273 274 275 276 277 278 279 280 281 282 283 284 285 286 begin hsh := len + letterdata [chll.representedby + letterdata[ch21.representedby; i f not taken [hshl then begin taken [hsh] := true; letterdata [ch1] aUsecount := letterdata {ch1] .usecount + 1; letterdata[ch2] .usecount := letterdata[ch2] .usecount + 1keys[wordcount].sortval := hsh; wordcount := wordcount + 1; if wordcount > wordstodo then printsolution(wordstodo) 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 else addword; wordcount := word count - 1; letterdata [ch2] .usecount : = letterdata [ch2] .usecount - 1; letterdata[ch11.usecount := letterdata[chl] .usecount - 1; taken [hshl := false; end end { TRY}; begin { ADDWORD with keys [wordcountl do begin chi := fstlet; ch2 := lstlet; len := length; end' ifle~terdata[chlJ .usecount > a then i f letterdata [ch21.usecount > 0 then ~y { BOTH CHARACTERS SPECIFIED else for replastlet := 0 to maxcharval do begin { FIRST CHARACTER ONLY SPECIFIED letterdata [ch2] .representedby := rep last let; try; end else if letterdata[ch2].usecount > 0 then for repfirstlet := 0 II maxcharval do begin { LAST LETTER ONLY SPECIFIED let terdata [chi] . representedby := repfirstlet; try; end else for repfirstlet := 0 to maxcharval do begin { BOTH LETTERS UNSPECIFIED letterdata[ch1).representedby := repfirstlet; i f chi = ch2 then try else for replastlet := 0 to maxcharval do begin letterdata[ch2] arepresentedby := replastlet; try; end' end;--' end; begin writeln (tty,' FIND PERFECT HASH FUNCTIONS FOR RESERVED WORDS.'); date(pdate); time(ptime); writeln(tty,' STARTING AT ' ,ptime,' ON ' ,pdate); writeln(tty,' SOLVING FOR ',startsolmax,' SOLUTIONS'}; writeln(tty,' PLACING' ,startwordmax,' WORDS'); for i := 0 to maxhashvalue do taken[i] := false; { ASSURE THAT THE TABLE HAS NO OPEN LOCATIONS }; for i:= 39 to maxhashvalue do taken{i] := true; init; time (ptime) ; writeln(tty,' STARTING SEARCH AT ',ptime); {SPECIAL CODE TO DO MAXCHARVAL == 15 } maxcharval:= 15; { 14 DOESN'T WORK } addword; time(ptime); writeln(tty,' NO SOLUTINAT ',ptime); end. en (/) (/) en u -i en Vl <.D Articles Laurence V. Atkinson University of Sheffield England The extended subrange for i is necessitated only by the states chosen. In this example it is impossible for n to be less than 1 (for then the array declaration would not compile) so testing i>n immediately upon entry to the loop is pointless. Instead we should make a[i]-item the first test and then test i=n before incrementing i. Thus the states which should be chosen are (i < n) (i ::; n) (i n) Two topics which have received recent attention in Pascal News are the evaluation of Eoolean expressions [3, 8, 10, 11, 14J and extended subranges [4, 5, 7J. Two articles [I, 2J, prompted largely by the programs presented during the aforementioned discussion, show how a state transition approach to multi-exit loops avoids issues of boolean expression evaluation and, as an added bonus, facilitates minimal subranges. Wherever feasible in a Pascal program the range of values that a variable is permitted to take should be as small as possible. This aids program transparency (the declaration is more informative), improves efficiency (see [13J) and increases security (the assignment of illogical values is more readily detectable, both at compile-time and at run-time). A recent letter from Judy Bishop [6J suggests that the relevance of state transition loops to minimal subranging is not fully appreciated. This article emphasises this particular aspect. 1\ I\. I\. => => => item) item) item) searching item found item absent and the corresponding solution is in figure 2. Notice that takes its minimal subrange: the index range of the array. now In this example the index type of the array is a subrange type which can be extended and the table is assumed to be full. We now examine the state transition approach in circumstances where the array index type is not a subrange and where the table may be empty. var a array [1 .• rU ~ .•. ; •• TI; state: (searching, absent, found); := 1; state ::::::: searching; repeat The example which started all this discussion was a linear search algorithm presented by Barron and Mullins [3]. A state transition implementation is given in [IJ. Judy Bishop gives a similar solution in [6J but implies that a state transition approach necessitates an extended subrange. This is not so! if a [iJ = item then state := found else if = n then state := absent else := i + 1 (/) rn -0 -! rn until state <> searching t::x:I She identifies three mutually exclusive states: (a i f item) item) (a i (i ii n) "(i ;; n) > n " => => => Figure 2. searching item found item absent rn "" and produces a solution of the form shown in figure 1. var a: array [1 •• nJ of ••• ; i : - I .-.-nplusl; (searching, absent, found); state i := 1; state := searching; When the index type of an array is a subrange type we are able to extend this subrange for a subscript variable (but note that minimal sub ranging is particularly important for array subscripts). If the index type of an array is not a sub range type but a full type, such as char, then we have no choice; we cannot extend the range. This point was raised by John Strait lI2). As shown in [I], the fact that a state transition approach does not incur an extension of the index type makes the technique directly applicable. This is illustrated in figure 3. repeat if i > n then state := absent else if a[iJ item then state := found else i := i + ) until state <> searching Figure I. A common technique is to use a variable to record the number of entries a table currently contains. For a table with index range 1•• n the number of entries (say,m) may be anywhere in the range 0 to n. Hence, O.. n is the appropriate subrange for m. This does not affect consideration of the subscript work-variable: this should sensibly refer only to actual entries and so should never take a value outside the range 1 to m. Its full range is therefore 1 to max(m) and so its minimal subrange is 1 .• n. -0 ::t> U> rn en o The states are (m> 0) A (m > 0) A (m = 0) v (i < m) (i m) (i m) i:~ ~ item) item) (a~ ;I item) A " A A => => => searching item found item absent occupancy and the program is in figure 4. ~ (empty, occupied); occupancy of ::z rn occupied Alternatively, some other information may record whether or not the table is occupied, as in figure 5. This will probably be so, whatever the search algorithm, if the index type of the array is a begin := I; full range type. state := searching; end; const firstch lastch empty : state := absent var a: array [char] of end ch : char; state: (looking, exhausted, located); ch := firstch; state := looking; repeat item then state := located else if a [ch] if ch lastch then state := exhausted else ch := succ (ch) until state <> looking {case L_________________ F_i_g_U_r_e_5_._ _ _ _ _ _ _ _____ ~~ It would be inappropriate to end this discussion without reference to the efficiency considerations raised by Wilsker [14J. He stresses the reduction in execution time achieved by the data sentinel approach to linear search as advocated by Knuth [9J. I have some sympathy with this view but my concern, both here and in [lJ, is not with the algorithm itself, but the statement of the algorithm in Pascal. ~~RR~ Figure 3. rI var a array [1 .• Minimal subranging in Pascal is desirable. One benefit of a state transition approach to dynamic processes, as described here and in and [2J, is that minimal sub ranging can be achieved. [D noofentries : 0 •• n; state : (searching, absent, found); if noofentries > ° then ~ begin [IJ i := 1; sta~e := searching; ~ repeat if a [iJ item then state := found else if noofentries then state := absent else [2J L. V. Atkinson, "Pascal scalars as state indicators II , [3J D.W. Barron and J.M. Mullins, "What to do after a Software-Practice and Experience (to appear), 1979. Pascal News, 11) 48-50, 1978. until state <> searching [4J J .M. Bishop, IIS ubranges and conditional loops", Pascal News, 12, 37-38, 1978. end else state := absent Articles L. V. Atkinson, IIKnow the state you are inll, Pascal News, 13, 66-69, 1978. := i + 1 Figure 4. I?J J .M. Bishop, Letter to John Strait, Pascal News, 12, pSI, 1978. [6J J.M. Bishop, Letter to Michael Irish, Pascal News, 13, p82, 1978. rn -0 -l rn Enumerated and subrange types are two of the most important features of Pascal. Their contribution to transparency, security and efficiency is often not fully appreciated. Their under-utilisation is one of the (many!) features I repeatedly criticise when reviewing Pascal books. nJ of 1 •• n; C/) while", Cd en ;0 program NonStandard(output); type state :::: record (defined,undefined); status integer value end; K. Fryxell, Letter to the editor, Pascal News, 13, p8D, 1978. [8J T .N.N. Irish, "What to do after a while ... longer", Pascal News, 13, p6S, 1978. [gJ D.E. Knuth, "Structured prograrrrrning with gote statements l l , Computing Surveys, 6, 261-301, 1974. [IOJ M.W. Roberts and R.N. Macdonald, "A resolution of the boolean expression evaluation question", Pascal News, 13, 63-65, 1978. procedure InnerScope; var ageofperson state; {meant to be the type above} state (scanning,found,notpresent); begin {including references to variable state} end; begin A.H.J. Sale, "Compiling boolean expressions lJ , Pascal News, 11, 76-78, 1978~ rn I-' V1 end. J. Strait, Letter to Judy Bishop, Pascal News, 12, pSI, 1978. J. Welsh, "Economic range checks in Pascal", Software-Practice and Experience, 8, 85-97, 1978. R.A. Wilsker, liOn the article: what to do after a while", Pascal News, 13, 61-62, 1978. Most Pascal compilers will compile this program, attaching the first use of state in InnerScope to its outer definition. In fact, this use is inside the scope ox the second definition and is in error on two counts: (1) it is an instance of use preceding definition, and (2) state is not a type_identifier in this scope, 2. The relevant rules The relevant rules laid down by the Pascal Standard may be paraphrased as follows: (* Received 79/04/04 *) 2.1 The scope of an identifier extends over the whole of the program, procedure, function, or record definition in which it is declared with the exception noted in 2.2. 2.2 If an identifier is defined in a procedure, function, or record definition, then that scope and all enclosed scopes are excluded from the scope of any identifier of the same name in an enclosing scope. {the ~edeoinition ~e } 2.3 No two identifiers may have the same name in a scope. {uniquene6~ 00 IL6Mc0:ttion } 2.4 The definition of an identifier must precede its use, with the exception of pointer-type definitions and forward-declared procedures and functions (see Standard for the exceptions). ***************** ReplVL.u:ed wdh the peJUni6~-w J1 00 -the au-l:hM, o~om AU6bc.a.Uan Compu-l:Vt SueYlC.e Communic.a;Uo f1J.> , VoLume 1 NumbVt 1, MaJtc.h 1979. (* P-eceived 79/05/15 *) Note that I use identifier as meaning a handle attached to a Pascal object, and name as the character-string itself. Thus Arthur is the identifier to which I respond in appropriate contexts, but other people have the same name. U1 rn -0 --l rn I-' <.0 " <.0 3. A Note on Scope, One-Pass Compilers, and Pascal A.H.J. Sale Department of Information Science, University of Tasmania Outline of the algorithm Consider a particular scope S. If we denote the point of definition by D, and uses of an identifier by U, then the allowable pattern is illustrated by scope S: ( ... D U 1. Introduction Very few Pascal compilers correctly implement the scope rules of Pascal .. Pa:tly this may be due to their obscurity as some of the key statements are burled ln the introduction to the Pascal Users Manual, and partly it may be due to the frequent use of one-pass recursive descent compilation techniques. However, with the publication of the draft Pasoal standard in iss~e 14 of Pascal News, th~ scope rules have been clarified and it is therefore appropnate to see how the complIers may be made to conform. The following program fragment illustrates the sort of error that should be detected. U ... ) Consequently, I can formulate the pre-condition R which must hold immediately before the definition of the identifier at D: R :;: "No occurrences of the name of the identifier may have occurred in accessible scope between the start of S and the point of definition at D." This follows from rules 2.1,2.3 and 2.4. Rule 2.2 is brought in by the reference to "accessible scope". Consequently, we may incorporate the precondition in a one-pass compiler by checking at this point. We search the symbol-table for any accessible identifier of the same -0 :J:> = rn m N name before entering the new use. There are three distinct possibilities: 3.1 There is no identifier of this name. This means that no previous definitions have occurred in accessible scope, and any attempted uses have already been detected as errors (references to unknown identifiers). 3.2 There is an identifier of the same name declared at this scope level. This is an error as it violates rule 2.3 (name already defined for this scope). 3.3 There is an identifier of the same name at an enclosing scope level. This is therefore a redefinition of the name. The problem that arises is that uses of this name preceding D will have been bound to the outer definition of the name, and some may have occurred in the forbidden region. The problem of 3.3 may be handled by associating a unique symbol with each new scope as it is encountered, such that the symbols are ordered. Each identifier in the symbol-table then carries the symbol indicating its last occurrence. When the precondition search is made, if the table-symbol is earlier in the ordering than the current-scope-symbol, then no use has been made of the name in the forbidden region. If the table-symbol is equal to or follows the current-scope-symbol, then references to the identifier have occurred in the forbidden region and an error has occurred. The simplest implementation is to make the scope-symbol a natural number stating at o for the program block and incremented for each new scope. It would be rare for programs to exceed even the limits of integers in 16-bit machines! 4. The exceptions The type-identifier of pointer-type definition may occur anywhere in the type part; this relaxes rule 2.4. In all implementations of which I am aware, there are no properties of pointers (such as bit-size) which depend on their bound types, though this is possible. Therefore, the type-definitions may be compiled normally with the exception that all references to type-identifiers are deferred, and examined only at the close of the type-part. This defers all occurrences of the type-identifiers to virtual occurrences at the close of the type-part, and satisfies rule 2.4 and the algorithm requirements. A full definition of a forward-declared procedure may follow a use of the procedure. However, the forward-declaration is a defining occurrence of the procedure identifier, and incorporates a pseudo-scope for the parameter list. Within the parameter list only references to types and definitiops of variables can occur. Application of the algorithm is still necessary to detect uses before definition and duplicate uses of names. However, any names so introduced are not accessible in the intelvening scopes between the forward-declaration and its associated body, and the algorithm will still work when the parameter list is again accessible in the newly created scope of the body. (It is not neccessary to alter the parameter list scope-symbols-to the newly created one, but it can be done.) Functions may be treated identically. The Pascal Standard does not prohibit redefining the function-designator name as an identifier local to the function, but the resulting function-definition must then be non-standard as it cannot assign a value to the function. ---5. Conclusions The scope rules set out in section 2 and now incorporated into the draft Pascal standard are sufficient to permit even one-pass compilers to reject incorrect programs. The suggested algorithm adds an overhead at every defining occurrence, but since uses exceed definitions in general it may not be too expensive in time to implement. In any case, what price can be put on correctness? 6. References Addyman, A (1979): "The 8SI/ISO Working Draft of Standard Pascal by the BSI DPS/13/4 Working Group", Pascal News, no 14, January 1979, pp 4-60. Jensen, K. &Wirth, N. (1974): "Pascal User Manual and Report", Springer-Verlag, pp 8, 69-71, 136, 150, 155-156 (Second corrected Edition). PAAco,f- r - 1n.teJu1wve., COf1veJW1-tiOf1a£ PMCa£-S RichaAd J. Cich~ 901 wh.Uti.eJL VJUve. Atte.f1toWf1, Pa. 18103 PASCAL-I is a version of the Wirth PASCAL-S (PASCAL subset) system designed to interact with the terminal user. The ~ystem contains a compiler, interpreter, text editor, formatter and a run-time debussinS system. The compiler compiles the source into a stack code which is interpreted. After program chan~es, the compiler recompiles only the minimal set of affected procedures. The compiler also automaticallY formats the program upon compilation and recompilation. Extensive on-line documentation is available. The HELP command will sive either a list of all the commands with short descriptions or will Sive a detailed description of anY command (5) specified. Compiler error messaSes are detailed and sometimes include recommendations for possible fixes. The program source text is stored to allow interaction with the run time s~stem on the source level. All edittina cOffiffiands (except the GET file and SAVE file commands) follow the PASCAL scope rules. (i.e. the LIST command defaults to listinS onlw the block being editted.) StrinSs can be searched for and changed. The REPEAT command reapplies the last edit command. There are no line numbers; the edittirlS scope is alwaws very local, and none seem needed nor desired. The edit pointer can be moved from procedure to procedure, to the top or bottom of any of the three sections of a PASCAL block (HEADER. DECLARATIONS. and BODY). and UP and down within the block. Text lines or entire procedures can be inserted, deleted or moved. A tree structured listing of procedure relationships is produced by the STRUCTURE command. The run time system allows the user to execute his ::~~~~~on.an~re~~po~~~:e~~n e~:cu!!~~ ~lea~~~ ~~meiS~~~!~~ Execution limits can be set (statements executed, instructions e>~ecuted and output lines). A user abort entered fT'om the terminal will also suspend execlJtion of the users pro~ram (but not terminate PASCAL-I). Execution errors and I/O errors will also suspend the program (not terminate it). Once execution is suspended, the user has several options. He maY use the PMD command to e>:amine anY of the simple variables in the stack and the contents of the I/O buffers and may displa~ the recent execution histors of his program. He ma~ also enter code for immediate execution! Immediate code mas be anything from a PASCAL-S statement to an entire block (without the header or any blocks declared inside it). One block of immediate code maY be stored for each procedure and can be executed an~time the pro~ram is suspended within that procedure. (/) en -u -I en SAMPLE SESSION Part of the research involved in creating PASCAL-I was to test whether procedure oriented languages like PASCAL could be easilw used interactivelY. Some lanSuase designers have suggested that onlw line oriented lansuases such as APL and BASIC could be used. The argument was that hishly structured languages would inhibit proS rammer interaction. We arsue that disciplined desiSn structure is esential for reliable software development. PASCAL-! makes such discipline implicit in its commands and their scope. When YOU edit a PASCAL-S program with PASCAL-I. YOU modify text within a procedure. Error correction and most other proSram interaction is oriented towards the current statement in the current procedure. We believe that PASCAL-I's automatic formattin~ and procedure orientation overcome anY limitations that PASCAL misht have as a conversational lan.ua.e, and that the discipline imposed b~ lansuases such as PASCAL is essential for reliable software design and implementation. COMMAND-cop'oI. Gueer,s PROGRAM QUEENS (OUTPUT); <* EIGHT QUEENS Pr~OBLEM - PLACE EIGHT HOSTILE QUEENS ON A CHESS BOARD SUCH THAT NONE ATTACKS ANOTHER. THIS PROGF~AM IS FOR DEHONSH:ATION F'UI;:F'OSES. IT CONTAINS BOTH SYNTAX AND LOGIC ERROI:;:S. *) VAR BOARD :ARRAY(O •• 7]OF INTEGER1COL:ARr'i~Y[O •• 7JOF BOOLEAN; UP: AF,RAY[O •• 14JOF BOOLEAN;: DOWN: ,~RRAY [-7 •• t7]OF BOOLEAN;F'ROCEDURE PRINTBOAF:D ~ VAR R : INTEGER; BEGIN FOR R; ""0 TO 7 DO WRITE ('1Jo :Itt BOARD[R]:2) ; WRITELN; END( PRINTBO~";':D :I();: PROCEDURE GENERATE (F:: INTEGER) ; VAl;': C: INTEGER; PROCEDURE SETSQLJAF,E( R. C: INTEGER; VM : 1100LEAN); BEGIN COL[C] ::=VtlL. UP[IHC]: =\,-'AL; D(JWN[I~-·C] :""VAUEND ; EIGHT QUEENS F'I:;:OBLEM - PLACE EIGHT HOSTILE QUEENS ON A CHESS BO,"IRD SUCH THAT NONE ATTACKS ANOTHER. (* i~I~O~~~~~~M B6~I-IF~~N~~~O~~~R~6~~~ ~~~6g~l:s;) and .e.iAt aU. 06 60J!rnatied too. u _ n-LCe.t~f -0 -i en :e>:ec VAR BOARD: ARRAY [0 •• 7] OF INTEGER; 5 BLOCKS RECOMPILED COL; ARRAY [0 •• 7] OF BOOLEAN; UP: ARRAY [0 •• 14J OF BOOLEAN; INTERPRETING QUEENS DOWN! ARRAY [- 7 •• f Ok.. Le;t' ~ !tun U. ReJ...t/tuC'..t.uJt,[ng ma.k.u e.veJuj-tfUng Jte.c.omp.i.te.. It' -6 aLI'. ht me.molty 1.0 you get oMt !t1Uponoe.. 7] OF BOOLEAN; EXECUTED 24895 STEPS IN 3120 STATEMENTS. PROCEDURE PRINTBOARDj HALT AT: * WRITE(:f: t. BOARD[R]: 2H VAR R: INTEGER; IN: QUEENS. GENERATE. PRINTBOARD BECAUSE OF UNDEFINED VALUE IN EXPRESION. BEGIN USER INPUT FILE BUFFER USER OUTPUT BUFFER: Who' IJ unde.6-{:ned? Le:t the. -6ymboUc PO-6.t moJt.twn EOLN: TRUE; - EOF: dump FALSE ~. FOR R : "" 0 TO 7 DO WRITE(t t, BOARD[R): 2); WRITELNi PRINTBOARD *); END (* QUEENS. GENERATE. PRr NTBOARD CALLED AT THE 7TH LINE OF THE BODY OF QUEENS,GENERATE I, E. » F · R I N T B O A R D HVte..'-6 the tJuteebaek. PROCEDURE GENERATE(R: INTEGER); R VAR 0 C: INTEGER; PROCEDURE SETSQUARECR, C: QUEENS, GENERATE CALLED AT THE 9TH LINE OF THE BODY OF QUEENS. GENERATE GENERATE (R + 1); I.E. » 3 C R 7 INTEGER; VAL: BOOLEAN); BEGIN COL[C] := VAL; UP[R + C] := VAL; DOWN[R - C] : = VAL; END (* SETS QUARE *); QUEENS. GENERATE CALLED AT THE 9TH LINE OF THE BODY OF QUEENS. GENERATE GENERATE(R + 1); I.E. » C 1 R 6 *) BEGIN C* GENERATE FOR C : "" 0 TO 7 DO IF COLeC] AND UFTR + CJ AND DOWN[R - CJ THEN BEGIN (* SQUARE FREE *) SETSQUARE (R, C , FALSE); IF R :::: 7 THEN <* BOARD FULL *) PRINTBOARD ELSE GENERATE(R + 1); SETSQUARE (R, C, TRUE); END END GENERATE *); » Cheek out :the cane-if -6:tifle 6o~g eomme.nt6. nOlt VAR C I: INTEGER; C R The a,6,teJt.-i.4k de.note.,!, :the eciU po'£ILte/t. *) *). Give art ovVtvi..w * 21 gJulm. QUEENS PRINTBOARD GENERATE SETSQUARE INITIALIZE : restruct printboard on :the p1!.oHeAe -the Mte/u..6k .6hO(n .the. c.u/lIU'.nt bloc.k. 5 7 QUEENS. GENERATE CALLED AT THE 9TH LINE OF THE BODY OF QUEENS. GENERATE I.E. » GENERATE (R + 1); C 4 R 1 QUEENS. GENERATE CALLED AT THE 3RD LINE OF THE BODY OF QUEENS I.Eo» GENERATE{O); C %$writeln(r, c);$ \oJ generate 1-6 '" GenVUtte ea.1.1'.1:, PUn;tboa/1.d le.t'-6 ma.ke .u. loea.i. Onlif .60 :str 2 QUEENS GENERATE PRINTBoARD SETSQUARE INITIALIZE "R" OJ/. "e" unde6i..ned? /'lope. -0 :$wri teln (board[3J) j $ 3 --l rn QUEENS. GENERATE CALLED AT THE 9TH LINE OF THE BODY OF QUEENS. GENERATE I.E. » GENERATE(R + 1); :str1.Jcture 1 2 3 -0 R BEGIN FOR I : = 0 TO 7 DO COL[IJ := TRUE; FOR I : = 0 TO 14 DO Upn] := TRUE; FOR I ::::: - 7 TO + 7 DO DOWN[IJ := TRUE; END (* INITIALIZE *); * (/) rn (WEENS. GENERATE CALLED AT THE 9TH LINE OF THE BODY OF QUEENS. GENERATE I.E. » GENERATE(R + 1); PROCEDURE INITIALIZE; 2 3 2 R QUEENS. GENERATE CALLED AT THE 9TH LINE OF THE BODY OF QUEENS. GENERATE GENERATE (R + 1); I.E. » C R <* *BEGIN (* QUEENS INITIALIZE; GENERATE(O) ; END (* QUEENS QUEENS. GENERATE CALLED AT THE 9TH LINE OF THE BODY OF QUEENS. GENERATE GENERATE(R + 1); I.E. C 6 EXECUTION Ef.,:RoR IN IMMEDIATE CODE. :histor"" H» END C* SETSQUI'IRE *) j LEAVING: QUEENS, GENERATE. SETSOUAI=i:E H» IF R ;: 7 THEN BOArW FULL *) H» F'RINTBOr'lRD (* Wh.a..t abou.t the BOARV[3]? IS :t.h.U -w a ¢otu.tion, -i..t ¢hou.J:.d have a value . ..• ah! Le;t' ~ dOl1.btec.hec.k (rha.t hapPcMl'1g. W:Ui :J> G) rn en Vl Yeo - U .th.tn.M U hM an. ENTERING: QUEENS. GENERATE .PRINTBOARD H» BEGIN H> > FOR R : = 0 TO 7 DO H» WRITE(! t. BOARD[R]: 2); aMwelL btrt Lt doC6n'-t. :edit generate *:find /besinl BEGIN (* GENERATE OK?;, BEGIN <* := rj We've go:t :to plLt :the. Que.e.1t6 or: .£6 we. ",unt :them :to *) SQUARE FREE .the. coMd ",uru:. *) OK?!::1 :i R» BOARD[C] != R; R» SETSQUARE(R, C, FALSE); R» BEGIN R» COL [e) := VAL; R» UP[R + C] != VAL; R» DOWN[R - C] := VAL; R» END SETSQUI'IRE *); R» IF R "" 7 THEN BOARD FULL R» ELSE lim 10000 5 (* *) tcont boar-d[c) Enough 06 :tw, Go on. RESUMING QUEENS. GENERATE 04752613 BREAKPOINT 1 AT: B}> END PRINTBOARD *); IN: QUEENS. GENEFM TE. Pr..:INTBOARD tedit prir.tbord (* WHAT? NO SUCH BLOCK. EXECUTED 3225 STEPS IN 412 STATEMENTS. tedit printboard Yu. tbot Let:'.6 -6;top U a6;tVt .6on'e alt6w(?M - Set a :break 1 s tbreak ,. var i: inteser; bestin writln(r. c ) ; for i != 0 to 7 do write(board[i]:4); writeln; end; • END (* PRINTBQARD *); BRKPNT 1 AT! ERROR(S) Shuc.k.6. IN IMMEDIATE CODE: Vo U. :execute 1 BLOCK RECOMF'ILED INTERPRETING QUEENS VAR I : INTEGER; 0647135 063571 057263 BREAKPOINT 1 AT: If» END <* PRINTBOARD *); IN: QUEENS. GENERATE .PRINTBOARD BEGIN WRITLN(R, C); "'0' 14 FOR I : "" 0 TO 7 DO WRITE(BOARD[I): 4); WRITELN; END; He/1.e '.6 :the bJr.e.akpom.t. * EXECUTED 39147 STEPS IN 4982 STATEMENTS. Hl?lj! ShoU£dn':t took Uke. .they Me ..in value.? Let'.6 che.ek ou.-t what'.6 happw-in!] :to :the bOMd. :monitor board : linJi t (* '(CR> gct.6 :the next .6tatemen.t :to e.x.ec.u.te.. 10"0 s thel? status THE STATUS COMMAND IS USED TO REPORT THE CURRENT STATE OF THE USER SESSION. THE EDITING, BREAKPOINT, TRACING, AND LIMIT CONDITIONS AI:;:E REPORTED. THERE ARE NO PARAMETERS ASSOCIATED WITH THIS COMMAND. NoW wheAe WeAe we? ShOuid r tWe -the. .6:ta:tuJ., c.om1T.([W{ en en -0 WMt :mes 0 14 WaJ.., :that? EXPLANATIONS OF ERROR CODES: 0: THE DESIGNATED IDENTIFIER HAS NOT BEEN DECLARED. 14: A SEMICOLON IS EXPECTED. : .c/wri tlr./wri telr,/ F-i.x. .:the. typo. trJRITELN C (/) Than/u PROGRAM NOT SAVED. For portabil ity's sake HEAPTRACE is written in Pascal. It takes the form of a one-pass precompiler which produces as output the original Pascal program suitably modified for tracing the heap according to the user1s instructions. The basis of the program is the Pascal-P3 compiler [1] with the code generation routines removed, and an additional 1500 1 ines of code inserted. Reasons for choosing this form of implementat ion inc 1ude 601t It.e.m.incUng me.. OK'i'n (b) At a later stage, it will be relatively simple to implement HEAPTRACE as a compiler by re-inserting the code generation routines and producing the output in the form of P-code rather than Pascal. (c) A Pascal user may wish to implement this form of trace for the heap as an option to his or her own Pascal campi ler. As HEAPTRACE consists of additions and modifications :save Gueer,sl :b~e - END PASCALI COMMAND- (* Received 79/04/02 *) ***************** TRACING THE HEAP *Steve Schach Applied Mathematics Department Weizmann Institute of Science Rehovot, Is rae 1 to a well-known and widely circulated compiler, the chances are good that such a person could rapidly understand the principles of HEAPTRACE merely by examining the clearly marked changes to the P3 campi ler. HEAPTRACE works as follows: the cOllTlland new is modified so that when the user wi shes a record to be created on the heap, a second record, a so-ca lled "hyperrecord l l , is also created. The hyperrecords form a doubly-linked list (the "hyperlist") and each hyperrecord is two-way linked to its associated user-created record. In this way one can ensure that the records to be traced are vert ices of a connected graph, even if the user has somehow erred in his handling of pointers. Tracing the heap is then effected by moving along the hyperheap and dumping the contents of the records as selected by the user. An exampJe of a variant record is given on pages 44-46 of the Pascal User Manua 1 [2]. A program for that example was submitted to HEAPTRACE; the output of the resulting program appears below. (/) rn -0 -i rn 3: b:l 1'., A programmer using a high-level language rightly expects to be shielded from m~chine implementation details. If there is a bug in a Pascal program, one does not WIS~ to.be presented with an assembler listing, or a core dump, but rather with information In a format as close as possible to the original source code. Watt and Findlay [3]have constructed a trace for the stack (i.e., the static Pascal data structures) which gives the user diagnostic information In the terminology of his program. However, the dynamic data structures created by the procedure ~, and stored on the heap, are not traced at all. c;. 1 R 1 ~ G L f, ~ T : '3 T P I ss SF ). P P?T~ : ~,G c~St " ,.., c' - ~ fJ r' f '-J ". r c (. '-; t' ill Il.l'3r : lAY Yl U .. Jf_ P T r "5 s I'" C- r < p '-, T I' ,L, T,.,. l' L ,~ c r ;., f ~' ~ '3 T q I '"', \.:.: l ~ S l' : ,:,' S T I; ! "",: t_212S"i'-':". S5 "'''Lr SEX 9 I" T H ,,~ C ~- 1--. :, '( I ~. f< Y r- L ,', ';.. C'. 1-':'" T '_ '" A" ~ "( rAY 'f'/- fir< ['lPlCS r: LA TF. *On leave from: "n r I r) -=:, q Y.: '.;7, oft, ~ , L ...... ill 1:<0'_ ''1' "".All -( ~. Department of Computer Science, University of Cape Town, Rondebosch, 7700 South Africa. This work is supported in part by the South African Council for Scientific and Industri al Research. ;0 t. Y : r:':' A,·, L A P:; ~ '!' f. f. I, The package HEAPTRACE outlined in this paper aids the user to debug his programs by providing information as to the contents of the records on the heap. Each field is named, and its value is given in what might be termed "high-level format". For example, the values of types defined by enumeration (including Boolean) are explicitly printed out as identifiers. The contents of sets are similarly handled. The first and last elements of arrays are given, or the first and last strings of packed arrays of The user may specify which record types are to be traced, and whether variants are to be ignored (if a tag field is not assigned). At any point he may request the entire heap to be dumped, or just the contents of the last n records. He may even specify a variable name, and if that variable is a pointer to a record being traced, then the values of the fields of that record are given. rn fer Ii,' C formatO, the underlying structure of each record is reflected in the indentution. HEAPTRACE is currently in the testing stage. It is hoped to make it avai lable to any interested user as soon as its machine independence has been adequately demon.:itrated. REFERENCES Each dependent clause is typically a statement. If the introductory phrase of a structured statement ends in begin or of, then the 1ast 1 ine of the pattern ends with end (possibly followed by a semicolon). For a repeat statement, the last dependent clause is the until clause. ha 11 rna rk of structured programs. [1] U. Arrrnann, liThe Zurich Implementation!!, Proc. Symp. its implementation, Southampton, C;I Pascal - the language and 1977. [2] K. Jensen and N. Wirth, IIPascal User Manual and Report ti , Springer-Verlag, Berlin, 1974. [3] D.A. Watt and W. Findlay, ItA Pascal Diagnostics Syst-eml1, Proc. Symp. on Pascal the language and its implementation, Southampton, 1977. (* Recei ved 78/11/21 *) ***************** WHY USE STRUCTURED FORMATTING? J. E. Crider She 11 Oil Company P.O. Box 20329 Houston, Texas 77025 (This paper should be construed as a personal rather than an organizational statement.) What is Structured Formatting? "Structured formatting" is a technique for formatting ("prettyprinting") Pascal programs. It is described in a paper in SIGPLAN Notices ll., No. 11 (1978), pp. 15-22. It is designed to display clearly the Pascal statements and their structural relationships. Structured formatting is based upon a single indented display pattern, which is: introductory phrase dependent clause dependent clause dependent clause This pattern is used to display almost all of the structured statements of a Pascal program. Each dependent clause is typically a statement; if such a statement is itself structured, then it, too, is displayed in the above form. The resulting display clearly shows the nesting that is the ::z ,.,., Each type of structured statement has its own form of introductory phrase. The complete list of introductory phrases for Pascal statements is: while expression do begin for control variable := for 1 ist do begin with record variable list do begin case express ion of repeat if expression then begin else if. expression then begin ~ begin begin In order for structured statements to begin with these introductory phrases, certain Pascal statements in a program must first be modified. The ~ preparation modification involves the insertion of redundant begin-end pairs, as follows: every controlled statement in a while, for, with, or if statement is converted into a compound statement, with two optional exceptions. The first exception is that, if the controlled statement is a simple statement such that the complete structured statement can fit on one line, then it need not be converted. An example is: wh i 1e a [ i] <> x (I) ,.,., 'w -I ,.,., to ,.,., ::u do i := i + 1; The other optional exception is that, if the controlled statement in the ~ clause of an if statement is itself an if statement, then it need not be converted. This exception leads to if statements displayed ina very useful form: if k = n then begin count := count + 1; r r + d[k]; k k - d[k] end else if k > 0 then begin r := r + d[k]; k := k - d[k] end else begin r := r + 1 end; Thus it is seen that the if statement may appear as a sequence of display pa tterns : one pattern for the "i f" pa rt, one for each "e 1se-i f" part, and one for the final "el se" part. (Note al so that the last tvlO 1 ines in the example above could be replaced by the single line "else r := r + 1;", according to the first exception.) en 00 The one structured statement that is not usually displayed through the display pattern is the compound statement. Instead, it is typically used with another structured statement to indicate the range of control of the latter. Generally, the only compound statements that are displayed through the display pattern are those that represent selection statements in a case statement and those that represent the statement part of a program, procedure, or function. Thus, begin is an introductory phrase only when it cannot be part of another introductory phrase. From a slightly different point of view, it is seen that the compound statement is always displayed in the same form. This form is: [introductory phrase prefix] begin statement; statement; statement end Note that begin and end symbols always appear on the ends of lines (followed only by semicolons and comments). It is worthwhile to force a single exception to this compound statement form. For the compound statement that is the statement part of a program, procedure, or function, the end symbol should appear by itself as the last dependent clause. This last end is treated specially to emphasize the end of the statement part; typically this end is followed on its 1 ine by the name of the program, procedure, or function in a comment. Another important element of the structured format is the indentation increment; it must be the same for every application of the display pattern throughout the program. This facilitates counting the level of nesting, wh i ch can be very useful, as seen below. Wha t about Other Forma tt i n9 Techni gues? Structured formatting differs from other formatting techniques in several ways. These are: 1. Other techniques generally combine at least two display patterns in various ways. The other display pattern commonly used has all 1 ines indented except the first and the last. 2. Other techniques generally allow for the vertical alignment of matching begin and end symbols. Structured formatting places begin and end symbols at the ends of lines, and provides other ways of confirming valid structures. 3. Structured formatting may require program modification, as described above. Most other techniques can be applied directly to any Pasca 1 program. 4. Other techniques treat the compound statement as a structured statement. In contrast, structured formatting uses begin and end symbol s as markers to confirm the range of control of other structured statements; this range of control is expressed primarily through indentation. -u > en n :> r ,Ihat are the Advantages of Structured Formatting? 1. The structured format clearly displays the structure of a Pascal program. The indentation shows the range of control and indicates the dependency of the controlled statements. The overhanging introductory phrase begins with a keyword that indicates the nature of control and also usually includes the controlling condition. 2. The structured format is simple. It uses a single display pattern that has three distinct and well defined parts: an introductory phrase, a sequence of dependent clauses, and the indentation increment. 3. Each line starts with the beginning of a new statement (or ~ or until clause). Each statement begins on a new line (exceptions: most compound statements, if statements in "else-if" structures, and simple controlled statements). These two properties add to the clarity of the display by emphasizing the statement content, while the indentation pattern emphasizes the control relationships. en rn 4. The structured format is conservative of lines. There are few lines that contain only single symbols; in particular, begin and end symbols rarely appear alone on lines. Thus, the structured format brings the statements of a program structure close, so that their interrelationships may be easily comprehended by the reader. -u -., rn 5. The structured format is conservative of indentation. Each indentation increment corresponds to a change in the level of control of statements; the begin and end symbols of a compound statement are auxiliary to this correspondence, and do not of themselves cause additional indentation increments. These last two advantages mean that space is conserved both horizontally and vertically, an important factor in the publication of programs. 6. If a line contains end or until symbols, then the number of indentation increments that it has, relative to the following line, is equal to the total number of end and until symbols that it contains. This is the indented end relationship; it is extremely useful in deskchecking the structure of Pascal programs. It is a localized relationship, applying to two adjacent 1ines at a time. (Note that treating the last end symbol of the statement part of a program, procedure, or function as the last dependent clause allows any preceding end symbol s to participate in this relationship). -u :> G) rn 7. The begin and end symbols are always the last symbols of the lines on which they appear (excluding semicolons). Although matching pairs of these symbol s are not vertically al igned, arcs connecting them can be drawn easily, if needed. 8. The display preparation modification leads to the very small set of introductory phrases, and also to the valuable indented end relationship. Further, it inhibits the use of some of the more confusing structured statement sequences, such as "if . . . then if . . then. . else. " 13. Structured formatting can be appl ied to each procedure or function declaration as well, for each one has a structure quite similar to that of a program. Because procedure and function declarations can be nested, the number of indentation increments at a procedure heading or a function heading is equal to the static level of that procedure or function. = 14. Structured formatting can be used to advantage with structured programs in many other languages as well. In other languages, however, the indented end relationship may not obtain. What about an Example? 9. The "else-if" exception to the display preparation modification provides for a valuable and commonly used control structure, and avoids the "stair-step" pattern that would otherwise appear. 10. With the display preparation modification, the fundamental algorithm for managing indentation and display is quite simple: for each begin, of or repeat symbol, increment indentation and follow with a new line; put out a new line after each semicolon and before each else or until symbol, and also before the last end symbol of the statement part of a program, procedure, or function; and for each end or until symbol, decrement indentation for the lines following. 11. The structured format allows every line to end with a semicolon; the sole exception is the line preceding a line that begins with the else symbol. Further, semicolons need appear nowhere else but at the end of a line. 12. Structured formatting can be appl ied to complete Pascal programs, as well as to Pascal statements. At the top level, the display pattern gives: program heading label declaration part constant declaration part type decl aration part variable declaration part procedure or function declaration procedure or function declaration procedure or function declaration statement part • The display pattern is then appl ied to each of the declaration parts. Thus, the introductory phrases for Pascal include the program heading, the procedure heading, the function heading, and the keywords label, const, ~, and var, as well as the introductory phrases for statements (note that the introductory phrase for the statement part is begin). This example is Program 3.7 from Niklaus Wirth's book, Algorithms :!:. Data Structures = Programs (Prentice-Hall, 1976). The comments have been changed and semicolons have been inserted before the last end sYmbols. Further, the display preparation modification has been made to the first for statement in the program (the controlled statement was not simple or compound) and to the for statement within the repeat statement (the controlled statement was too long). program selection (input, output); (* find optimal selection of objects under constraint *) const n = 10; type index = 1. .n; object = record v, w: integer end; var i: index; a: array [index] of object; 1 imw, totv, maxv: integer; wl, w2, w3: integer; s, opts: set of index; z: array [boolean] of char; procedure try (i: index; tw, av: integer); var avl: integer; begin (* try *) if tw + a[i].w <= 1 imw then begin s := s + [i]; (* try inclusion of object i *) if i < n then try (i + 1, tw + a[iJ.w, av) el se if av > maxv then begin maxv := av; opts := send; s := s - [i] end; avl := av - a[i].v; (* try excl usion of object i *) if avl > maxv then be'jin if i < n then try (i + 1, tw, avl) el se begin maxv := aVl; opts := s end end; end; (* try *) begin (* selection *) totv := 0; for i := 1 to n do begin with a[i] do begin read (w,v); totv := totv + v end end; read (wl, w2, w3); z[true] := '*'; z[false]:=' '; write (' weight '); for i := 1 to n do write (a[i].w: 4); writeln; write (' value '); for i := 1 to n do write (a[iJ.v: 4); writeln; repeat limw := wl; maxv := 0; s := []; opts := []; try (1, 0, totv); write (l imw); for i := 1 to n do begin write (' " z[i in opts]) end; writeln; wl := wl + w2 until wl > w3; end (* selection *) (* Recei ved 79/03/22 *) C/) rT'1 -0 --i rT'1 3: t:>:l rT'1 ::0 ....... <.0 '-J t.O Futur. of P •• ca. New. - Save the PUG The University of Southampton be ashamed of: we've done what many people thought was impossible. Your description of such an act was a quotation - "for one brief shining moment there was Camelot". Let me close with another quotation (from that excellent European, James Joyce); Computer Studies Professor 0 W Barron If • • better pass boldly into that other world, in the full glory of some passion, than fade and wither dismally with age ... " = en ::<: en Yours sincerely, 30th January 1979. D.W. Barron. Dear Andy, Here are some thoughts on the future of PUG, prompted by your Open Letter in PN13. Perhaps I should start by stating my own position, which is this. PUG has succeeded beyond all reasonable expectation because it has been informal and unconventional. To institutionalise it is to administer the kiss of death. I have been happy to support PUG in its present form with my volunteer effort, but I want no part in an institutionalised PUG. The day the proposed constitution is adopted, someone else can take over the European printing and membership services. Reading various contributions to PNI3, it is clear that there are two very different views of PUG. There are those who want PUG to be "pre-eminent with regard to PascalI!, and to have some sort of authority over the language. Obviously, institutionalising PUG is attractive to this group. But there already exist organisations to deal with standards - ISO, ANSI and BSI. It is folly to believe that a self-appointed, institutionalised PUG can keep Pascal to itself. And has anyone thought about the logistics of obtaining a consensus from 3000 members in 41 countries and 49 states? The alternative school of thought, to which I adhere, recognises that the enormous success of Pascal has been achieved not through the existence of PUG per se, but from the publication of Pascal Newsletter and Pascal News. It1s the dissemination of the "vast quantities of information" that has done the trick. The value of Pascal News is incalculable, but institutionalising PUG won't make any difference to it, except by probably putting the price up and adding layers of unnecessary formality and bureaucracy to the production process. P.s. You should worry about passing 30. few people still trust me. ******* --0 -l Dear Andy: I have sent my ballot on to Rick Shaw, but I wanted to say that I can understand your position. with each issue of ~ News I have been amazed that you could have produced such a product. Open Forum for Members I know the time it In a real way Pascal News is PUG. I would urge you to pass the editor's job on to someone else very carefully. And while I agree you should try to keep the cost of PUG membership down, you are perhaps being unrealistic about the help needed to produce a quarterly publication for 3,000 members. Tel: 0703559122 E: IT\ L':-;I\'ERSlry OF ~IAWA!! Saturday, May 12 950 North Cherry Avenue P. O. Box 26732 Tucson, AriZona 85726 AC 602327-5511 Cable Address: AURACORP, Tucson Dear Jim, Many thanks for your draft contribution to Pascal News #15. I too was very against the constitution when it first came out in the News. That is not what I joined Pascal News for and I dislike the political implications of a constitution. I agree with your proposals for the New~ (full time publisher, etc.). I think that the goals of the Pascal News have changed considerably since its inception mainly since Pascal has now . become an accepted language, something that was not at all obvlous at the outset! I personally feel that the size of the News should shorten. The main goals should be to keep up with new Pascal literature (mainly books, as there are just too many journal articles, etc on Pascal nowadays to keep track of) and to keep up with implementations on different computers so that one has a quick acess to an implementation for his machine. Articles on Pascal should still be published but I feel that perhaps a lot of the personal correspondence should be trimmed down. I myself would rather see a more frequent publication (say 6 times a year) wlth a smaller size that the huge size that it now is. Well, there are my feelings, for whatever they're worth. luck. Best of (/) en -0 ~ en ~ t:O en ;;0 I-' cD " cD We also need an editor. The success of this scheme will depend on support from individuals and (at least in the short term) from corporations. It is notable that a number of companies have already offered monetary or other support. Sincerely, 'R,;i~ Rich Stevens Save the PUG Pascal is growing like never before. This growth will continue. Pascal News is needed to unite the Pascal community, to aid its communication, and to prevent a vacuum which special interests will inevitably fill. Arthur Sale remarked in these pages in 1977 that lIPascal has much more to fear from its friends than its enemies." These words might just as well have been spoken about PUG. -0 ;I:> G> en -0 The University of Tasmania @ Postal Address: Box 252C, G.P.D., Hobart, Tasmania, Australia 7001 Telephone: 230561. Cables'Tasuni' Telex: 58150 UNTAS varian 18th May, 1979 , = ;,;: May 11, 1979 C/) This letter is in reply to yours of 1st May to "Friends of PUG". I agree with your sentiments, expressed in your draft. make: "'" I have only two points to Policization of PUG on a US-basis' as proposed would effectively eliminate international co-operation by ignoring it. deserve a few moment s thought. (b) C/) n :.> en Dear Jim, (a) :I> I think the non-US PUG members A non-profit corporation seems a good idea, so long as it is possible to wind it up when we want to. I completely agree with the bad effects of PUG surviving beyond its legitimate life-span, and I said so to Andy while he was here. More power to your pen; go ahead. I-' V1 Mr. Andy Mickel Pascal User's Group University Computer Center: 227 EX 208 SE Union Street University of Minnesota Minneapolis, MN 55455 Dear Andy: Attached is an all-purpose coupon with my new mailing address and phone number. Yours sincerely, Arthur Sale, Information Science Department. ******* A Note on the future of PUG I wholeheartedly support Jim Miner's proposal to create a non-profit institution to publish Pascal News. When Andy changed the name from "PUG Newsletter ll to "Pascal News ll he recognised implicitly that the only real function of PUG is to publish "Pascal News". If such a body is to be set up I shall be happy to help in any way I can. (Incidentally, I had already had a similar idea as a contingency against the vote going in favour of a "Political PUG". My scheme was to pre-empt the issue by separating Pascal News from PUG, creating a new company to publish the former, leaving the latter to indulge in pointless politics). It was nice talking to you last week. I called Rick Shaw and volunteered my services. He said he would call as soon as he has finished his move. Between Rick's and a couple of local PUG members' comments, I think the vote results were a combination of confusion and simply not notiCing the ballot. In any event, I am left with the impression that PUG will continue as currently organized with Rick et al. taking over most of your tasks. In light of the current situation I believe a distributed work approach will provide a workable, though not optimal, solution to PUG's immediate needs. C/) en -0 ~ en :J: t:J:j I still feel Pascal News provides a useful source of information and will vehemently oppose any movements which advocate dissolution, or radical change from the current editorial policies. I hope my conviction to PUG is substantiated by my volunteering to help with the production of Pascal News. en ;0 I-' LO The group PASCAL (see attached) is a local interest group and wants to stay strictly local. The article in Intelligent Machines Journal is a bit misleading. *** " LO I look forward to working with Rick and you in the near future. Sincerely, ~~~~ Gregg E. Marshall Scientific Programmer Software Development *** (* See Pascal in the News in the Here and There section. The Pascal Advancement Society of CALifornia (PASCAL) was also publicized in the May, 1978~. - Andy *) GEM:bb cc: Rick Shaw Enclosures G> David Barron en instrument division I aerograph operations 2700 mitchell dr. / walnut creek / calif. 94598/415939-2400 General THOMAS C. KING TRW Professional Bldg. #8 P. O. Box 1146 Winnemucca, Nevada 89445 (702) 623 2345 30 May 1979 Dear Andy: This letter is about two somewhat unrelated topics. The Fate of PUG First, in regard to the debate over the future course of PUG I think we should use PUG's existing structure (if there is one) for a model, 'and not stray too far fro~ that .. You and.the other editors are doing a fantastic job in creating a refre~hlng! unlque ~nd lnvnensely useful publication for the serious Pascal programmer. At thl~ pOlnt I don t care much if we have a constitution or not. What I do care ~bout lS that PUG be kept alive, independent, and international. PUG has not outlived ltS usefulness. Its value continues to increase with the increasing worldwide usage of Pas:al. I sympathize with your desire to get out from under the tremendous burden of ~avlng to crank.o~t issue after issue of Pascal News. But please don't undere~tlma!e the beneflclal effect you are having on the Pascal community and the computing fleld ln general. Please help us find a viable way to keep PUG and Pascal News going. Software Tools and Algorithms . One of the most compelling arguments for keeping PUG alive is the Applications sectlOn .of PN. There have already been some really good programs published, and they are avall~ble.to anyone for the cheap price of typing them on one's own computer. I a~ enth~slastlc abo~t t~e ~pplications section, and I liked many of the ideas Rich Clchelll ~resented ln ~lS Software Tools" article in PN 13. I agree with Rich that dist~ibutlO~ of tools lS one of the most difficult problems. Even in a restricted machlne enVlronment (such as the DECUS Pascal SIG) distribution can be a real hassle. . In his article, Rich mentions two utility programs, UPDATE and PlAP, for library malntenance and documentation respectively. I would like to propose alternatives to these. Many CDC users are fami 1i ar with MODI FY, whi ch I bel i eve is eas i er to use than UPDATE. We ~ave.a Pascal version of MODIFY, written by Dennis Heimbigner, which uses only seq~entla1 1/0. For documentation, RUNOFF (familiar to DEC users) is a very nice tool. Mlche11e Feraud has written a RUNOFF subset in Pascal, which has most of RUNOFF's ~e~tures: It does not do hyphenation, but I generally turn off hypenation even when lt s aval1a~le on other such tools. I believe there is also a much more sophisticated Pascal verSlon of RUNOFF, but I have not used it. We will try to make these and other Pascal software tools available to PUG as we have time to implement them in standard Pasca 1 . I am also very interested in the other utilities Rich mentions in his article particularly algorithms and the Pascal validation suite. We have 'used Jim Miner's' COMPARE and like it very much. Thanks once again, Andy for all the hard work you have put into publishing Pa sca 1 News. Best regards, Bill Heidebrecht TRW DSSG One Space Park Redondo Beach, CA 90278 Mr. Andy Mickel, Univ. Minn. Compo Center 227 Exp. Engr. Univ. of Minnesota Minneapolis, Mn 55455 Dear Andy, Thank you for the most encouraging telephone conversation. As I told you I purchased an Alpha Micro AM100 - AM500 system from the Byte Shop of Reno, 64K core memory, Control Data 10 megabyte hard disc IBM Selecterm printer and So rae terminal to use in my own business. When I mentioned the computer around town I immediately was faced with inquiries from the Ford dealership, the attorney in the next office, a mining company, and a large ranch, all in the same building, for time sharing on the computer for their individual problems. The prospect of altering canned basic bookkeeping programs for this diverse group was appalling, considering my novice status. After a two week study of Pascal, however, and your most encouraging comments the possibility of programming the computer to handle the individual needs of this diverse group may be possible, since some limited experience by each may enable them to alter their own programs once they have some experience. This Pascal or structured programming approach follows my work ~ith a HP97 in involved 500 step programs on X-Ray matrix effects. Since the HP97 doesn't allow roo~ for comments my first programs were sprinkled with GOTO's which later left me in a state of confusion trying to debug them or alter them as conditions required. Switching to the structured format similar to Pascal the programs were easy to understand and debug later. Pascal is thus a logical extension much more comprehensive than basic. Enclosed is a ~heck for $16.00 covering a one year subscription of the Pascal Newsletter and 3 back issues. Sincerely, ~/~?~f Thomas C. King tt C/) rn -0 -I rn 2 Nov. 197R ~ 1510 Plymouth Rd. /lS9 Ann Arbor, lI'I 4.Q 105 2 NoveMber 1Q7'l Dear Andy, Thanks very much, I now have all the back issues. (I accidentally got two copies of /Ill and #12, and am sending one of each back to you.) ~ As anyone who has been a member of PUG for over a year knows, a lot of verbiage about extending Pascal in one form or another has appeared in the PUGN pages. New members, though, may be wondering "What is all this bickering about?". Well, I've been doing some thinking about this, and would like to present a (perhaps overly Simplistic) view of all this confusion. (If the reasons are really obvious to everyone, then I guess I'm just slow catching on.) . There appears to be one group of people who wish to repair the minor inconsistencies in the definition of Pascal (User Manual and.Report, Axiomatic Definition). The best example of this group's views is in the article by Welsh, Sneeringer, and Hoare [1) • I don't think anyone really has any argument about thethings they point out, if they are fixed or not, the essential ·character" of Pascal remains the same. The three major groups (as I see it) who are arguing about Pascal extensions are. Group !. Educators using Pascal to teach computer science students about programming and computing ·Working stiffs· (usually non-educational environment) who wish to use Pascal in their dayto-day endeavours. Group~. Group ~. Educators using Pascal to teach people in a non-computer science discinline about programming and computing as a tool for that discipline. Arguments about extensions usually go like this. ~I I think Pascal shOUld have feature X. I can demonstrate its immense utility for the work I am doing in discinline ~ Feature X is not needed. It is merely a combination of Y,Z, and W, which are already part of Pascal. Computer science student.s need to !mow about Y,Z, and W anywaYI therefore they should use them instead of X. I n. 2 I am teaching my students to use Pascal for solvin~ problems in discipline Q. I would nrefer to have X available so that my students need not worry about Y, Z, and W -- after all, I'm teaching Q, not comnuter science. But Pascal still has to be easy enough so my students can appreciate the value of computing (and Pascal) in relation to Q. z rn And the damn shame is that they are all making absolutely correct statements. The computer scientist SHOULD learn how to combine elementary features of Pascal to make complex functions. The educator (outside computer science) doesn't want his students to worry about those details, that's not their province. The "applications" (non-educators) either have been through Comnuter Science and know about the elementary features, or have had the "canned" features available -- in any case, their ~oal is not to learn about COMputin~ but to get some task done. All of this seems to come down to the question of the desi~n goals of Pascal. Vavra [2) also realizes, and points out the existence of these different groups and their differing goals. I agree wholeheartedly that some heavy thinking has to occur in this area. At any rate, for those of you who might have been confused about all this argument about "Whither Pascal?", you now have another viewpoint to (hopefully) make things clearer. End of Sermon. Just a random thought -- and this idea is one I've heard before, certainly not original with me. Credit to whomever came up with it. Those who wish to implement some new control structure in Pascal which is a combination of existing elementary functions should provide a standard Pascal program that translate programs using the extension into the standard version. For features Which can be implemented equally well as calls to user-defined procedures, some body of people should start collecting those procedures so that everyone can use the same ones and portability won't go down the tubes. (This includes things like the IMSL library, data base manipulation, formatted I/O, et al.) I am sure this has all been said before, someone out theee please jog my memory and tell me Where I've seen it. Take this entire paragraph for what it's worth, and call me in the morning. en rn -0 -l rn It's getting late again, and I'm beginning to flake out. I'd best quit while I'm ahead. Q. John Eisenberg REFERENCES (they always make ideas seem so official ••• ) 1. Welsh, Sneeringer, and Hoare, HAmbiguities and Insecurities in Pascal", Software--Practice and Experience, Vol. 7 (1977). 685-696 2. Vavra, R, ·What are Pascal's Design Goals", Pascal News No. 12 (June 1978), pp. 34-35 --- --' ...., 00 The problem is in the parameters of CONNECT: one of them clearly is ORGANISATION EUROPEENNE POUR LA RECHERCHE NUCLEAIRE the FV. The rest must specify an EEF in a system dependent manner, and to be useful probably some extra information and system return codes. EUROPEAN ORGANIZATION FOR NUCLEAR RESEARCH SI EGE: GENEVE, SUISSE R. Cailliau PS Division University Computing Center/227EX 208 SE Union Street university of Minnesota CERN CH 1211 GENEVE 23 SUISSE/SWITZER LAND TELEX: TELEGRAMMES: 23698 CH CERNLAB·GENEVE TELEPHONE: Direct: GENEVE (0221 83 5041 /83 2535 /83 8361 11 Central/Exchange: PASCAL News c/o Andy Mickel Hinneapolis, MN 55455 U,S.A. I have received a preliminary copy of the manual for Mr. Naodt's implementation on the Sintran-III system for the NORD-IO computer, and he did a very good job on the system interface. He was able to provide a CONNECT procedure with only 3 parameters: the FV, a string specifying the name of the EEF, and an integer returning system provided file status. It must be added that Sintran-III is a very user-friendly system, in which files (including peripheral devices) are specified by a string with an internal syntax. (Buffering, blocking, file control blocks, etc. are provided by the system and transparent to the user by defaul t.) Notre/Our ref. PS/CCI/RC/ww en ::E: (/) 2. Several problems remain with Pascal I/O. Again, in interactive use (and as Mr. Noodt pointed out) any call of the kind (*integer 1*) READ(F, I) Votre/Your ref. = will crash the program if I is not given a string convertible to an integer. And again, fortunately the Sintran-III system lets a program find out whether or not it was called interactively, so that the following loop can be built into the run-time support system: OK:=FALSE; REPEAT READ(F,I) ; Geneva, 16th October, 1978 IF interactive AND error THEN BEGIN Dear Andy, WRITELN; WRITE ( 'NOT AN INTE GER VALUE') Here are a few comments on things I read in the latest Pascal News: 1. Mr. Terje Noodt's letter on the user interface and environment interface of Pascal is indeed to the point. The manipulation of sequential files is elegantly supported by the procedures READ, WRITE, RESET, REWRITE, GET, PUT and the functions EOF and EOLN. There is, however, no way of setting up a relationship between a file variable FV and an externally existing file EEF. The only way of indicating that such a relationship is supposed to exist is to put the name FV in the list of program parameters. This means a) a Pascal program is not a stand-alone unit but nothing more than a "procedure", called by the external world (see P4-implementation for example), b) the externally existing files are passed as VAR-parameters to the program (although the reserved word VAR is not used in the program header), and the program is not able to change the relationships. This approach may work well for the classical student program that is submitted in a batch environment, reads from one file (INPUT!) and writes output to ~ other file (OUTPUT:) both of which exist only as long as the job lasts. Problems arise immediately when one wants to write a useful, interactive program. These programs have the following characteristics: they obtain information from the user, and must try to recover from his typing errors, the relationships between internal file variables and externally existing files cannot be set up at load time, since they are obtained from the user at run time. As Pascal programs always execute under supervision of an operating system, externally existing files will have to be supported (in most cases) by that operating system or by its associated file system. This implies that setting up the above mentioned relationships must be done according to the ideosyncrasies of the underlying system. In principle, just two procedures suffice to do the job: CONNECT relates an FV with an EEF, DETACH (FV) ends the connection. END; ELSE IF error THEN abort ELSE OK:=TRUE; UNTIL OK; en -U Further, Pascal adopts the philosophy that all variables must be initialized before their contents can be used. Although this is not a requirement, some systems go to great lengths to abort programs that access undefined values. This philosophy is in fact very good. But why are file buffers initialized automatically? This exception of the rule of explicit initialisation leads to problems with character files connected to terminal inputs, as everyone knows. Why not insist on an explicit first GET? Finally, (and again for interfactive input mainly) why do READ and WRITE work in the way they do? For batch jobs, the equivalence READ(F ,CH) (/) <==> CH:=Ft; GET(F) is acceptable, because you never notice anyway. Try to explain this to someone writing an interactive program ~ I have now resigned to the simple recommendation: use GET, and do everything character by character yourself. It suffices to look at how the P4 compiler reads characters to be convinced that READ(F,CH) should be equivalent to GET(F); CH:=Ft (just notice how the EOLN is delayed !) 3. The problem of the controlled variable in the FOR statement: Mr. John Nagle (Pascal News No. 12) writes that it should be truly undefined outside the FOR and proposes as a solution that it be considered as a variable declared local to the FOR. To this I can only remark a) many programmers, including myself, would in fact be happy with a truly defined value. There are many arguments for either case. b) a language called ALGOL68 does exactly what Mr. Nagle proposes 10 years after its definition. In fact, many Pascalers, especially thosewho write in Pascal News, Sigplan Notices and other respectable periodicals as if they have discovered the Only True Religion, would in fact do well to look up the Algo168 report 1 ). Nearly all the "problems" with Pascal that are so frequently discussed in these -i en columns have a decent solution in Algol68. seems a taboo subj ect. Yet somehow that language 4. Mr. Nagle further addresses the problem of the GOTO. I have written a 3000 line program in Pascal without a single GOTO. However, the abolishment of the GOTO would mean programming with flags. It becomes then nearly impossible to program an efficient and understandable sequential machine (another taboo subject ?). How do we get out of inner loops that must be fast and therefore shouln not test flags? Or is efficiency completely gone from our list of desirable program properties ? Consider Knuth's article on progrannning with GOTOS2). the following program: type T=record var head,p,newt:tT; begin next: found:Boolean; tT Consider also As an aside, a lot of "flag-waving" or "GOTO-ing" is caused by the absence from Pascal of the conditional AND and OR operators. Since the Report does not solve the question of how A and B is evaluated, another heated discussion ensues: when A is FALSE, do we still want to evaluate B??Dijkstra' s answer is: yes, because if we do not want to evaluate B, we write indicating clearly that B is only evaluated on the condition that A is TRUE. The example program reduces to : while (p<>nil) cand (pt<>newt) do T£P=nil then theother else this; end; p:=head; found:=FALSE; while (not found) and (p<>nil) do i-f-p+=newt t then found: =TRUE else p:=p+.next; if foundthen this else theother; Finally, if the GOTO must go, then why not also pointers far more dangerous : 5. **** p<>nil then i l pt=newtt then begin this;got02 end else begin p:=pLnext;gotol end; theother;- - -- The last version is even easier to explain. am not advocating WTltlng this particular example in the way I did. Hhat I would much prefer to write is: b) A flag has to be declared (like a label), it must be set initially (the label planted) and it must be correctly used (the GOTO's written). Where is the improvement? Witness the many different uses of the global flag TEST in the compiler. (/) rn --0 -l rn the sentence at the bottom of page 8 in the Implementation Notes: "Also, storage allocation of data is according to the simple rule that consecutively declared entities are allocated the requisite number of consecutive storage units" if p=nil then theother; exit endif; if pt=new~then this; exit else p:=pt.next endif endloop At CERN we have a continuous flow of students from the member states that spend some time here as apprentices. Those educated in Pascal come here with mental blocks against GOTO's, and overload their programs with flags of all colours. The flags create a software maintenance problem no less formidable than locallv nsed GOTO's. EOF ENCOUNTERED can also be fixed in a more economical way by testing at the printing of the message that this printing occurs only once. That requires the inclusion of a STOP procedure or the setting of a flag (to be tested after the comment loop). Remembering that the compiler spends 80% of its time in the lexical scanner, that seems to pay. 2: Since Von Neumann computer architecture is probably here for several more decades, we will continue to have machines on which it is much faster and more economical to program jumps than to program any other operation. IF-THEN-ELSE and the other control structures are nothing but elegant ways to safely write common combinations of jumps. Every practical program contains also combinations that can only be built efficiently by explicit jumps, i.e. GOTO's. They are Bugs in the portable P4 compiler: a) the bug of the non-closed comment at the end of a program which produces an infinite loop printing the message if But alas that is another programming language 3 ). The removal of the GOTO is only practical when some new structures are added at the same time. p:=pt.next; This still tests (p=nil) more than necessary, but at least the loop is fast. (Incidentally, can anybody provide me with a sound explanation of why the parentheses in the while expression are necessary?) The search can be written 1: z rn A cand B is quite ambiguous. var It is certainly not true that the declaration I,J,K:integer; leads to allocation of I,J,K in that order: the allocated order is K,J,I: This is the case in several places, e.g. fields in records. Thus Tl=record T2=record I: integer; J: integer K,L: integer end; should declare two compatible types, but after var X:TI; Y:T2; Y:=X; Y.L has the value of X.I Inspection of the compiler reveals where the lists I,J,K ... are built, and it is sufficient to put in a line or two that turns them around. --0 :I> G> rn References 1) Revised Report on the Algorithmic Language A1go168 A. Van Wyngaarden et al, Sigplan Notices, vol. 12, No.5, May 1977 00 o 2) Structured Programming with GOTO statements Compute,r Surveys, vol. 6, No.4, December 1974, pp. 261-301 3) ICL Belgium International Computers Limited D.E. Knuth, p._Vf'rlU~} 1J50· f. loyd C;ecHr-F_' MEMO Bruss'-~:s Madula, a language for modular multiprogramming (/.) n J=> N. Wirth, Software-Practice and Experience, vol. 7, No.1, Jan/Febr. 1977 Bibliography Ignorance of Algo169 -0 J=> Yours sincerely, considered harmful R. Hamlet, Sigplan Notices Vol. 12, No.4, April 1977 Robert Cailliau PS Division Can programming be liberated from the Von Neumann Style AC Turing Award Lecture 1977, J. Backus 7/11/1978 Y'M .- 'et PASCAL User's Group c/o Andy Mickel University of Minnesota Crnputer Center 208 S.E. Union Street MINNEAPOLIS MN 55455 U.S.A. t':"-' Laurent o. Gelinier ICL Belgium S.A. Avenue Lloyd George 7 B-1050 BRUSSELS Belgium z rn ::E: (/.) ~ f-" V1 hldy: Cormnunications of the ACM, Vol. 21, No.8, August 1978 ***** People's Computer Company _ _ _ _ __ p, O. Box E, 1263 EI Camino Real, Menlo Park, California 94025, Telephone (415) 323-3111 October 22, 1978 Dear Mr. Mickel, The European Division of ICL is responsible for the first field trial of sare new equiprent designed for large distributed systems. This new equiprent includes mainly: File processor: - 16-bit mini cctrputer - large capacity disks - up to 1 Mega-byte of rrerrory. Intelligent terminal: - 2 or more 8085 microprocessors - up to 64K of rrerrory. The field trial consists of 800 file processors and 4.000 terminals in a bank application. (/) PASCAL NEWS readers may be interested to know of two special events related to the use of PASCAL in music applications. We are currently looking for a high level language for "system" programming which would be implemented on both file processor and terminal. Specific application environrrents or programming tools would be built using this system tool, achieving hopefully ease of implerrentation, ease of maintenance and portability. rn We are considering: - pL/M - CORAL (UK standard) - PASCAL. rn -;::; -i rn ttl There will be a lecture / demonstration on "PASCAL and Music" at the 1978 Fall DECUS Symposium (a meeting of users of Digital Equipment Corporation's computers) in San Francisco, in late November. In addition, COMPUTER MUSIC JOURNAL will be running an article on the PASCAL language, with music applications, and a survey of the available PASCAL compilers. This article should appear in early January. At this stage we have the 1:asic documentation on PASCAL, mainly the language definition. But, in order to speed up the implerrentation of PASCAL on our machines, we would like to investigate the possibility of acquiring and using sare existing PASCAL cctrpilers. More specifically, oould you provide l1'e with sare documentation/ information/references about: PASCAL cctrpiler inpkrentations for the INTEL 8080/8085 (except the adaptation of the Hartmann's compiler to the INTEL MDS system) I I m looking forward to the next issue of PASCAL NEWS. potentially "portable" PASCAL cctrpilers. Best regards, a possible PASCAL User's GnJup oontact in Europe. Regards, c. Roads Editor COMPUTER MUSIC JOURNAL P~OfJJf! S Computers Dr. Dobb's Journal of Computer Calisthrnjcs &Orthodontia Laurent O. Gelinier Computer Music Journal ;.0 Psitronics Group Systems Lab, 502 Allison Avenue, Canon City, Colorado 81212 November 27th, 1978 • Dear Sir(s): Enclosed is my money order for $4.00; Please enter my subscription to the Pascal Newsletter ••• JET PROPULSION LABORATORY California Institute of Technology. 48()O Oak Grove Drive, Pasadena, California 9110) November 8, 1978 Refer to: 366-ENM:amn Mr. Andy Mickel PASCAL Users Group University Computing Center Here's an "early rumor" of Things-to-Come: I've been in communication with Ken Bowles (UCSD) and Motorola; And found out that "they've" been discussing the possibility of extending Motorola's recently announced M68,000 uP (utilizing some of it's uncommitted real estate & capabilities) to come up with something in line with Western Digital's new P-Code microMachine. Motorola just flew me to Austin last month reguards this same ambition; And it feels to me like it just may be worth waiting for ••• 227 Experimental Engineering Bldg. 208 SE Union Street University of Minnesota Minneapolis, MN 55455 I've asked Ken for his endorsement reguards M68,000 and my personal "project"; And would like to lay it out to you (The Pascal Users Group) for feedback / suggestions -and finally your endorsement: Dear Mr. Mickel: I am trying to put together a "Standard Bus / Board" for (specificly) M68,000; But also for any 16 bit uP's -present or future: Towards this end I lean towards the "Industry Standard" Drawer Mount Planar Panel Boards (i.e. 16.2" x 7.5" nom.) -And further suggest the universal use of Planar .1" x .1" grid 26 pin (13 x 2) I/O connectors. This eliminates notching and finger plating of boards; Permits horizontal stacking in low cost enclosures with simple "wrap-pin to socket" spacers without any need for backpane wiring or motherboards; Etcera. I'm hoping that this hardware concept (like Pascal) will "sell itself" as the 16 bit answer to "S-lOO" ••• As a "Public Domain" contribution to state-of-art. The Jet Propulsion Laboratory has recently taken an interest in PASCAL 7 d velopment and operation. The Lab has over 300 computers from many dIfferent manufacturers. We have started a Special Interest Group for the.Lab-wide development of PASCAL and are currently collecting informatIon about PASCAL off Lab. In particular t we would like to make three things known: 1) The Deep Space Network (DSN) and the Mission Control and Computing Center (MCCC) are interested in the development of PASCAL compilers for Modcomp II and IV minicomputers. 2) JPL is interested in efforts to write PASCAL standards and PASCAL validation programs. There are ten different PASCAL implementations at JPL and CalTech. The DSN would like to see a minimal set of guidelines for PASCAL compilers purchased by the Lab. 3) We are attempting to accumulate literature concerning PASCAL. We would like to obtain copies of PASCAL Notes #1 thru #8 for reproduction and distribution on the Lab. JPL will cover postage and reproduction costs if any PUG member is willing to loan us his or her Notes. We would prefer a complete set of Notes if possible. In the future, we hope to be more aware of the developments taking place in the PASCAL community, bu·~ for now we would just settle for getting our PASCAL SIG of~ the ground. Sincerely yours, ;. .. ;T--'- /)1 /1'/"7- Eugene N. Miya Cognizant Engineer for PASCAL Development Programming Development Section Telephone 354-4321 Twx 910-588-3269 Twx 910-588-3294 (/) rn -u -l rn I am in the process of doing the tape up's for a "Universal uC S.B.C. Wire-Wrap Prototyping Board" using this ,concept; And aimed for not only M68,000 but also 9900, etc. I'm hoping to get enou~h interest to be able to start an "Information Exchange / User Group -and if so; To be able to offer these ProtoBoards (-Socketed for:40 or 64 pin uP; Either 16K or 64K x 16 dynamic ram; And either 8K x 16 -2708- or 16K x 16 -4716 250 ns-EPROM; Plus parallel & serial I/O) at cost to group members with a newsletter similar to your own and development aids, co:op purchasing, etc. If this project goes well; I hope, by 2nd Qtr of '79 to be able to offer plans, kits, etc. for S.B.C.'s based on this board -utilizing any popular uP: From the W.D. microMachine chip set:to M68,000; 9440, 9900. These could be done as pre-etched & socketed boards quite inexpensively. Again; I am not seeking any gain save to further 'state-of-art', this proposed "Group" to be set up as a non-profit group to come up with an optimum replacement for S-lOO in the Public Domain. I do encourage feedback; But please S.A.S.E. if you wish a reply -As this is totally "out of pocket" at present ••• Sinp~ PauI LeBreton, (~) Director,PSI/G I've also been corresponding with Dr. Lamb at Semionics / Berkeley about the possibility of jointly developing compatable R.E.M. memory boards for these "Std." S.B.C.'s -That should interest you students of Winograd, McCarthy, and Nilsson! Can you imagine the poten.tial of; Say: M68,OOO teamed up with about 120 (5l 512 bit "superwords" of low cost Content Addressable memory: Which can also be used as 30K x 16 of conventional static RAM ?!? -u J> G> rn 00 N which could have storage class and structure attribute g:roups etc. Sincerely yours, Dear 1.fr. .Iti. cke 1, Recently I've carried out en experiment in using Pascal for dOCUllentation. The p:roblem was to specify the syntax of a graph p:roduced by some phases of an optimizing compiler; previously it was fixed in a BLISS-like machine-oriented language, without any thought of such a documentation in Pascal, although with a certain idea of regularity in mind. It was a pleasant surprise for me to discover how easily Pascal suited this purpose, and how info~tive it was of the intended use of the node attributes. In fact, there was only one minor p:roblem, end this is what this lette r is about. I had to render in Pascal a double-variant node, i.e. a node which had two g:roups of variants, each g:roup conditioned by an independent tag of its own. A less particular example might be Yll! pe rson = ~ first name, name : alta; age : 0 •• 255; ~ sex: (male, female) of male I (enlisted: boolean); female : (maidenname : alfa); ~ position: (student, lecturer, assistent) of lecturer, assistant: (subject: (algebra, geometry); degree: (none, phd, master»; (year: 1 •• 5; scolarship : integer) student c:. ,q{OIC-~ e y~ 21 Se rge i Pok:rovsky Computing Center Novosibirsk 630090 USSR ******* SANDERS FEDERAL SYSTEMS GROUP 95 Canal Street, Nashua, N. H. 03060 Telephone (603) 885-4321 Telex 094-3430 ASSOCIATES, INC. OCEAN SYSTEMS DIVISION 26 March 1979 Dear Andy: I've been meaning to write for some time to express my gratitude for the way you've been steering PUG through the last few years, but your farewell letter in #13 r~allY pushed me to action. Somehow you've been able to admlnlster PUG through a period of rapid growth, organize the News and recruit good section editors, and mediate some,thorny disputes over changes to the language. And all thls was done on a volunteer basis! I think its obvious that we wouldn't have gotten as far as we have without your enormous energy and good humor. Thanks for everything. en rn -0 -l rn By the way, the four PASCAL implementations we have here at Sanders show a remarkable diversity of ways to deal with TRUNC and ROUND for negative arguments. Here's a summary: TRUNC (-4.3) ROUND (-4.3) PDP-IO (Hamburg) Dec. ' 76 version -5 -4 PDP-ll (Stockholm) Apr. ' 77 version -4 -3 PDP-ll (OMSI) RSX Vl.IF -4 -4 NOVA (Manchester) Rev 2 Update 0 -5 -5 Correct Result (User Manual & Rept: p. 107) -4 -4 Implementation This example presents the extention I've used in II\Y document; namely. several variant parts are allowed at the same level, which are gathered at the end of the record definition. Of course I could make the first variant part into a record field, and thus remain within the standard Pascal; but the very simplicity of this transfo~tion calls for its inclusion into a compiler: this would eliminate the necessity to invent irrelevant field identifiers and repeat them in field selectors. Furthermore, alignment of all the variants at their logical level enables an intelligent compiler to p:roduce a better packing. I think that such multi-variant notions emerge quite naturally a t a ce rtain leve 1 of complexity. I could mention the file concept in which there are three logically independent variant g:roups conditioned by transmission mode (record, stream), buffering and function (input, output, update) - and e.g. attribute "keyed" is meaningful only within record mode; the concept of a variable in, say 1!ORTRAN, Nov ,,(:11& I-' LD " LD (Newer versions of the first two have been issued and they may have corrected these errors.) Best wishes, Bill Marshall "RUroDffiI4 THE UNIVERSITY OF NEBRASKA 587.{l8\O COMPUTER NETWORK LINCOLN PRODUCTION SERVICES 2.'lS NEBRASKA ""Nea"'N. HA...... NEBRA!!iII<:A eeses :z rn DEPARTMENT OF MATHEMATICAL SCIENCES February 9, 1979 en Dear Andy, This is a remedial letter to let you know of my change of address and to try to update the general knowledge of the status of Pascal at Nebraska. First the technicalities. MyoId home address was: My new home address is: Curt Hill 7535 Sherman Drive Omaha, NE 68134 2314 Orchard St. Lincoln, NE 68503 The business address remains the same. stuff. Now on to the good Pascal is alive and well at the University of Nebraska, as we all might have suspected. We are now on our second semester of teaching computer science majors Pascal as their first and principal language. Progress in other majors who use programming is slower but coming along. The sure sign that it has caught on here is that thesis projects are being done in Pascal rather than the competition. Furthermore, I was asked to talk to the state chapter of IEEE on Pascal which shows that interest is spreading. As a part of the Computer N~twork, I also teach a three day (two hours a day) mini course to University users at large. Pascal is available on all three of the available large systems, and there are several copies of UCSD Pascal and other micro or mini versions. I would also like to comment, for the record, on our compiler for IBM 360/370. We are using the Stanford implementation by Sassan Hazeghi and it is by far the best one we have looked at for our machines. It is very compatible with the standard, and Pascal-6000 programs usually run, only after massaging the character set (no ~). The code generated is pretty good, and reliability excellent. I have managed to find two obscure bugs and both were quickly fixed. Anyone who has an older copy of the compiler should get July of 78 or newer version, if only for the nice symbolic dump for runtime problems. We implemented three compilers and looked at about three more and Stanfords was the clear winner. Well that is the current status. out sooner for your use. ~7 Curt Hill Computer Programmer/Analyst II CH/mw I am sorry I did not get this Dear Andy, I've been meaninp: to write this letter for somp. ti'TIe, hut the latest PASCAL News fjnally moved me to action. First, I'm sorry vou feel the need to get out from lInder. I'm sure that none of us realize fullY how much work vou have expended on thi.s proiect, but know that I for one appreciate it. Second, I havp. some mixed emotio~s ahout the trend towards non-Standard (new Standard? Revised Standard, etc) PASCAL. I was particularly interested in Richard eichill! t s report on the UCSD workshop since it made me reconsider many of my views. Using his discussion on the desirability of ;tn exponentiation onerator, I freely concede that a function can h('; written, but bv thp same logic 't..re could eliminate the multiplication and divisi.on since these could be handled by addition and subtraction. Similarly, three Boolean operators could be reduced to one (NAND, NOR) or two (A~n - NOT, OR - NOT). On the other hand, implementing all the nice-to-have operations would CTf~ate A: PL/t mess, something none of us want. Thus, it seems to me that the problem is to decide where to draw the line. Mv suggestion is to meet the problem bv a compromise. Leave STANDARD PASCAL where it is, but define one or two supersets. Hy method would work as follows. Anv PASCAL program which may be transported from one system to another ~~ bE'> written in the STANDA.RD version. Thus. we would havp a languape which is appropriate for teaching t for exchangin~ algorithms? etc. However, for some production programming in ~vhich a multiplicity of procedures mav be rp(Tuired, have a PASCAL II. PASCAL II would have certain features added to it. Fxternal procedures, better I/O instructions, a few text handling instructions are obvious candidates. These would have to he as well defined as in STANDARD, but would not have to be implemented. Further, require that anv PASCAL II comniler have a....:.1..1 and only the specified options. Thus. a PASCAL II program \vould be transportable to ~other PASCAL II system. By requirinp.: that STA~DARD PASr.AL proP'r<'lms could also be compiled by a PASCAL II system, upward comnatibilitv could he attained. Admittedly this implieB some sort of certiffcation, but I don't belif>ve that this is unreasonable. Admittedlv this is a compromise. hut I beli.eve that it maY satjsfv a majority of the users. en rn -U -i rn t:J:j rn ;0 Finally. on a more philosonhjcal note. I wonder if it js really nossihle to define a lanpu8r:e without a] so defininp: impleme:ntation methods. The articles in PNlll3 on evaluating Boolean expressions, and s('veral artic-Ies over the last few vears in IEEE Transactions on Software En~tneerinry~ have p0i~ted out that two or more different implemr>ntation~ of languaVf> Boecifications can produce different resu] ts while remaining f3ithful to the definitions of the lanp"u.g~e. Sorry thjs is so lon~, thus midi"ll?" to vonr Fork:1oRri, hilt T Hantpri to in my two cents worth. thro~'T -u :I> = rn .T<1rnec; Camer0n, Professor Dppt. of Mathem:'1tical Sciences University of Illinois at Urbana-Champaign Nuclear Physics Research laboratory 23 Stadium Drive Champaign, Illinois 61820 (217) 333-3190 i'1arch 13, 1979 Dear Andy and all PUG :nen bers, I would like to reply to a few articles that I have seen in Pascal News. In particulc,r, I would like to reply to Richard J. Cichelli. He has said that cO~lplex nunbers "are easily created I-lithin the stanoard'1echanisns of the l~nguAge~f. As fRr as this statenent goes, I agree. However, this only llentions creatiol1, not use! No one argues th"t it is not possible to cre2cte a "co;1ulex" record type. But the standcrd does not allo;1 si'aple usage of these records. In uarticular a function is only all0\1ed results of "scalar,- subr~nge, or pointer tYge ll • Giver: this restriction I would like the ivory to'der types (l.e. people whose ~ajor source of inco~e does not cone fro~ their ability to progr8~ conputers'(tclking about does not constitute progranning)) to use S':'A;'DA:',J Pascal to produce a si nule, usable, and lJNDERSTANDABLE optical potenticl calculation(this cRlcc:lation relies heavily on conplex arithm~tic). I think this only goes to show a .najor weakroess of Pascal. One of the reasons that I find Pascal so useful is the ease of creating connlicated data types. But it is not ahrays easy to use, PJ1d initi·,lize these structures. In order to overcone these proble:ns, I 140uld like to suggest sone adci tions to PascRl. I don't clain that these ideas are in " polished forn, but I hope that they ;Jill stinulate discussion. 'The first pOint, l,'lhich is nDt ne~·.; by ::,-ny lle~.ns, is th8t Pascal needs a nethod to initi"lize ~~ta, and in particular structured data. Whatev'Or for:n this takes it should have the capability of alloHing the data to deter'line the structure. The particular C(=lse that co:ne.s to nind 1,\rhose maxi'TIun subscrint is deter11i:'1ed the eleTlents (table generatioc:). The only ;ray doing this is to use assenbly lan!:',l;.age! The second addition is structured t~e si~ala exanale should indiccte Hhat I nean A ~YPE VAR this. COr11'LEX = 'lECRD R,I C1, ~,2, C3 C();'·1PL~X; OPERATO::;; M?Y EEGIN oper::otors. 21,22 : C;O:.1PLEX) : (;0:11'LS:(; := 21.R*22.B - Z1.I*Z2.I := Z1.R*Z1.I + Z2.I*Z1.R EN:); BEGEr *** (* David A. Mundie suggested this idea in a letter dated 78/07/17. - Andy *) Iffiile I don I t think th8t it is realistic to use the standard operators (+,-,*, etc.) as ~~rL:ct-ll_red o?e~atc'~-1*(,,<.?) na~es it ~ould certainly lead tc si101e exareSS10~S (~I ~ such ~s are 8o:::sible with FO~-'?1A;\'. ~'Ihi1e I aE:ree t!-'lat this does not look all that different :. . 1'o_;} lIall tYJe ll _ function$, there are several point:: that should be nace. Notablv is the ~bsence of the parenthesis forest tl'c,t can exist frc\'n CO TI;:)li C;f ted expressions. -~his for:! shou~d also nake vector r;nd array calculation£ easily inDle~en~able on vector conputers. Also, for efficiency, it shoul:] be Dossible to have these operators ex-pa!lc_ed as a nacr'-:-. A."1d, . it should be Jossible -::0 Ilcreatet' several lixe nal1ec: oper2~ors '\d;.ich ?re disting 1)ished by -::ype (the sta!1--,ard oper8.tors ?,re). &,Y}other addi tien, io,hich does not concerr: ~~e l?cngue.?:€ b-c.t rether the i nDle'Tlent~_tio~, is the need for code :))ti 1i7ers. ;iJhile it nay be true that on .1:Jst nachi~es Pasc81 i:3 8,S efficient 85 ?O;:{~:1A:'>, this is certA.i~ly not true of the nainfrqne~ like the CDC Cyter 7 L , the CJC 76)0, and the 1. As sc~e 181bers o~ P[G ~ay ~~cw this cl~ss of connuter does a substa~~ial p~rt 0: the scie~tific cO::1:nuni tyt s r:unber crl:;,nchi~g. ,:onsi:-~eri~,-:: the present of Pascal cOTI~ilers for ~hese Jachi~es it is sLnol IT econonical tc) convert fro"1 ?O_-=L~:1A>.. k'1c~ :hi s is of those Cases ,,!here one c~ln~,o~ se.y tr.e..t tl':is is cBYi.sed by a dincsa 'c.r ?,.rc~i tecture. Af:er all, the i,!orl? I s fastest con~uter can hardly be called a di~os2~r. (I wlll note that i~ is unfortu~~te that a si191e ~tack arc~itecture cann~t TI~ke sufficient use of 0arallel c~n~l~ta~ion.) l1avbe the dincsal~rs in -:hi: c s se G.re the people '!rho are un.~'illing tc go si :181e one -aa:::s c~),?1')ilE'_~ion (for prodv.ction )rogr2;-IS one C/) C/) m -0 --; rn tJ;:J m ;0 I hate to have this sound lil(e I have joinecJ. the rsnks of those who wRnt to add everything to Pascal, includi~g ~he ki tchen sink. I realize that it ':,'as just this 1;l;,y of thin1{ing t~8.t created PL/1. I jt~st find it diffic'J,l t to oronote-s that cannat in a si~ple, efficsnt, and , handle c31culations that are oart of ,. I wo~ld like these COlnents ~o be -')osi ti ve li2hto I h,q l')en to like Pasc;;.l very nuc~. It, an~ng o~her-thi~gs, nakes it dif~icult to wr~t~ sloT~y orogra'"Js: I '.·lish I cOl)ld U~ derstand I,vt:y s:r1e (?OR~::lA~'J neo.')le abuse the :}o :'C~ the they do. I don I t think even ~ sewer rat could deciuher logical (??) flow of sone prosralls tha.t I h2ve bee!} coerced ~,O ;-.ror]: on. _-,1aybe ",hex: Pascal supercedes i t predece~sor2 this type of prO;~r?-1 \Inll vanish! Sincerely, , .2 1/ ,~c."'" I Roger Lo Gulbr8.n~~)n 00 V1 IfZ INTERACTIVE TECHNOLOGY INCORPORATED 14350 NW, SCIENCE PARK DR· PORTLAND, OR 97229 TELEPHONE (503) 644,0111 Thirdly, we now are teaching formal classes in Intro0uction to Pascal (programming experience required), Advanced Pascal, and RDM and Pascal in data base management systems and ?ow to use them. The Introduction class and Advanced cla 7s wlll run one week each. The RDM class (requires Intro) wlll run three days. I look forward to your upcoming "Pascal News", and if I can be of additional assistance, don't hesitate to contact me. COMPUTER SYSTEMS CONSULTANTS April 30, 1979 Be;,t, fegard~,r I;Z_'v-L// Dear Mr. Mickel, I recently read your lates't publication great interest. Our firm is simply with ecstatic over recent "Pascal News" articles and the general overall enthusiasm that is growing for Pascal. Our firm has spent many man months developing a Data Base Management System in Pascal plus developing business appl ications from our DBMS. I would like to expose to "Pascal News" just exactly what ITI has been up to these past few years and primarily of late. t.'!J. Smith Vice President, Marketing ***** First of all, two gentlemen on our staff began approximately two years ago (Bruce Johnson and Peter Mackie, formerly of Electro Scientific Industries and Tektronix, respectively) developing a Data Base Management System (DBMS) called "Realtime Database Manager" (RDM). Just a few quick "bullets" on RDM: COMPUTER LABORATORY THE UNIVERSITY (/) - Transportable from the LSI-II through the VAX (Compatibility Mode). Same set of tools runs on all DEC PDP-II's. - Runs under OMSI PascalI. - Will run under DEC's RT-II, RSX-ll, and RSTS/E. - Operates with TSX (RT-II) allowing up to 8 users. LEICESTER LE1 7RH rn Telephone 0533·50000 -l Director of the Laboratory From 18June 1979 D. L. Fisher, M.A., F.B.C.S., F.I.MA Tel: 0533 554455 - Has complete routine of Forms Input or "ITT Prompt" which displays in most cases the format of the originating document. - Interactive Report Generator or lilT! Inquirer". Accesses data bases with free form inquiry language that merely by typing English-like commands on a terminal, an operator can read, enter, delete, or modify data. Inquirer even gives special formatting capabilities, such as report titles, page and column headings, page numbering, data sorting by categories-even subtotals, totals, and averages. We have developed a product brochure for those interested in additional information. RDM is for sale in the market place at this time. Secondly, to date ITI has proven that RDM and Pascal are very powerful tools for developing commercial oriented applications. One of many comments coming out of the DECUS meeting in New Orleans was that indeed Pascal is a viable higher level language but it is oriented to the education field and not in business applications field. We have disproved that "grossly"!! We have to date many successful applications going beautifully, and our programmer productivity is probably in the area of 10 to I--seriously!! To date we have applications in General Ledger, Accounts Receivable, Accounts Payable, Order Entry - Inventory Control, Parts and Inventory for automotive dealerships and parts houses, Order Processing, and Payroll. By the time this reaches you and Pascal News, we will have generated many more applications. 20th July 1979 PJH/AVO Dear Andy, I am writing on behalf of the Numerical Analysts (although not one myself) here. It seems that a language without the ability to specify arrays of undefined bounds as formal procedure/function parameters cannot even be considered for replacing Fortran as it is then impossible to write generalised procedures/functions for dealing with arrays as is generally required. For this reason it would greatly aid our conversion to Pascal if such a standardised extension existed, and even more so if it were the same as that currently used by CDC 6000 Pascal 3. Hoping this input is of use to you, Yours sincerely, r7_-(+/H~ Peter Humble. -0 rn STORAGE 2270 South 88th Street / TECHNOLOGY Louisville I Colorado 80027 CORPORATION (303) 666·6581 TLX 4 ·5690 The other error is in passing elements of a packed structure thru VAR formal parameters. This is obviously impossible (and the CDC compiler prohibits) passing of a field which is less than a full word. However, the standard prohibits but the compiler allows passing a field that exactly occupies one word. Other errors in the PASCAL-P compiler are as follows: 5 June 1979 1) An element of a packed structure is passed thru a VAR formal parameter. quick fix is to remove the word PACKED from line PASCP.127. Mr. Andy Mickel, Editor Pascal News University Computer Center: A rn (/) 227 EX 208 SE Union Street University of Minnesota Minneapolis, Minnesota 55455 Dear Andy: I was delighted to meet you and Jim Miner in person at the ANSI/IEEE PASCAL Standards meeting in April in Boulder. Let me bring you and the readers of PASCAL News up to date on my professional involvement with PASCAL. I am now working for Storage Technology Corporation in Louisville, Colorado. STC is a leading supplier of tape and disk devices in the IBM marketplace. STC has begun development of new products requiring software support. Our project has chosen PASCAL as a base for developing a system implementation language. The reasons for chasing PASCAL include the availability of a compiler (AAEC-IBM), the excellent characteristics of the language (syntax, sematics, programmer productivity, etc.), the ease of modifying the compiler, and the availability of expertise to support the language. Our intention is to maintain the proposed ISO standard for PASCAL as a proper subset of the language accepted by the compiler and to extend the language to aid the development of our project. 2) Although most compilers don't check identifiers to more than or 10 characters, the identifier STRINGCONSTSY at line PASCP.813 should have the SY removed. 3) The three changes here are due to passing a subrange of integer variable thru a VAR formal parameter of type integer. Sometime an integer actual parameter is used. Line Poll7: Line Po166: Line Po 305: Change INTEGER to ADDRRANGE Change type of LSIZE from INTEGER to ADDRRANGE Change type of LSIZE from INTEGER to ADDRRANGE 4) For bootstrapping on a CDC machine, the set range here is correct. But once on the target machine, change 0 .. 58 to SETLOW .. SETHIGH at line PASCP.2517. 5) This is not really an error but a limitation of the MEC compiler. The static nesting of the PASCAL-P compiler is to deep for the AAEC compiler. This can be fixed by moving the_procedure headings and declaractions for SIMPLEEXPRESSION and TERM to PASCP 2650 and PASCP 2705 0 0 0 Other departures from the proposed ISO standard are as follows: rn -0 1) The sequence We are using as a base the Australian Atomic Energy Commission PASCAL compiler for IBM machines. Our -experience with the compiler has been good, although we have encountered a number of minor bugs. I've been pushing our compiler group to report the bugs and fixes to the authors. PASCAL distribution at the University of Colorado has changed since my departure. Steve Winograd carried on the distribution at the Computing Center from my departure in October until his in mid-May. In that time, he arranged for Wally Wedel at the University of Texas at Austin to distribute the CDC PASCAL compiler (Release 3) from the University of Minnesota. And he also arranged for Dr. William Waite of the Electrical Engineering Department to distribute the portable PASCAL compiler from Zurich and Per Brinch Hansen's Concurrent PASCAL. Thus the Computing Center is no longer associated with any PASCAL distribution activity. In my spare time, I have worked on a number of large PASCAL programs. The first is a version of Adventure written in PASCAL. The original work was done on a CDC machine using the Release 2 Zurich compiler. Then I transported it to an IBM machine using our modified AAEC compiler. The IBM operating system is MVS with TSO. It took about two weeks of occasional work to accomodate the character set differences and compiler changes. Then the program executed perfectly on the first run. Even the interactive PASCAL solution used for the CDC system worked fine on the IBM system. I believe there is a machine readable copy of my Adventure in Minneapolis. You have my permission to add it to the Release 3 distribution software if appropriate. Another PASCAL program I've been working on is PASCAL-Po I've encountered a number of descrepancies between this compiler (and I assume the CDC compiler too) and the proposed ISO standard. The compiler does not restrict the usage of subrange variables passed thru VAR formal parameters. A subrange of integer variable 'may be used as an actual parameter for a V~ integer formal parameter. There will be no subrange assignment check within the procedure. (/) TYPE P INTEGER @ INTEGER; -l rn REAL; VAR Q : P; results in Q having type pointer to integer. 2) Assignments to FOR loop variables are not checked in even the most obvious cases. 3) (I) is not recognized as an expression when passed as an actual parameter for a VAR formal parameter. 4) File types are not implemented. 5) PACKED attribute is ignored so that use of the standard procedures PACK and UNPACK is impossible. 6) The tag field in variant records cannot be omitted. I hope this information is of use to other use't" of PASCAL. 11~/tJ~ George H. Richmond Storage Technology Corporation P. O. Box 98, Mail Drop 93 Louisville, Colorado 80027 (303) 497-6375 .0UMA "v '> -
en n ::> r ISO TC97 - ISO Committee on Computers and Information Processing. ISO TC97 SC5 - ISO TC97 Sub-Committee on Programming Languages. Policy Draft Proposal (DP) - A document under consideration In August, SPARC recommended to X3 that the X3J9 SD-3 be approved, but without provisions for developing an extended standard. In order to pursue an extended standard, X3J9 prepared a second SD-3 at its September meeting in Houston. Although not given final approval (because of lack of prior notice), it is expected that this document will be approved and sent to SPARC and X3 in November. The document tentatively agreed on in Houston is printed below. rn by ISO TC97 SC5. ~ Draft International Standard (DIS) - A document in a second stage of consideration by TC97 and all of ISO. en ANSI - American National Standards Institute. X3J9 also came closer in Houston to agreement on procedures to cover extensions work. These procedures call for publicly soliciting proposals for extensions. The proposals may vary in content from merely stating an area of need for a capability in the language, up to a "formal" proposal including the following: a problem statement, specific revisions to the Standard Pascal document, syntax, semantics both in English and using some formal technique such as axioms, examples of use, implementation details, summary of experience using the extension, discussion of consistency with the existing language and expected benefit of the extension, and a list of related doeuments. Given the extensive detail needed in a formal proposal, I expect that most proposals will be relatively informal. ANS - American National Standard, which is a standard issued under the ANSI. dpANS - draft proposed becomming an ANS. American National X3 - The committee recognized by ANSI for the Processing. Standard, area of a document Computers and umbrella of on Its way to Information SPARC - Standard Planning and Requirements Committee, which advises X3 on functional and economic (not technical) aspects of new standards projects and review of proposed standards. A library of "candidate extensions" will be maintained. These extensions will be those judged to be technically sound and desirable by X3J9. The library will be used later as the source of language features which may be included in an extended language. X3J9 has not established procedures for the synthesis of an extended language from these individual features. X3J9 - X3 Technical Committee on Pascal, which does the technical work on an American National Standard Pascal, and which advises X3 on the international standardization of Pascal. rn "'CJ -i Other National Standards Efforts IEEE - Institute of Electrical and Electronics Engineers. Several of us have been puzzled by the lack of official COIllillents on N462 from several countries, including France and Germany. We have been told that Albrecht Biedl organized a technical committee which met in late Mayor early June to prepare some official German comments. Apparently the German standards organization (DIN) requires that such comments be reviewed by the next-higher committee before being submitted to ISO, and this committee will not meet until later this year. IEEE Pascal Standards Committee - The committee established under IEEE standards project P770 to develop an IEEE Pascal standard. JPC - Joint Pascal Committee, which is an unofficial term for the jOint workings X3J9 and the IEEE Pascal Standards Committee. en rn of We hope standards workers in more countries will report on their activities in future issues of Pascal News. X3J9 Chair: Marius Troost, Sperry Univac P770 Chair: Bruce Ravenel, Language Resources Vice Chair (both committees): Secretary (both committees): Scott Jameson, Hewlett-Packard Jess Irwin, Gould-Modicon X3J9 International Representative: David Jones, Control Data ANS Pascal SD-3 As proposed by X3J9 (X3J9/79-026) and amended by SPARC. Sub jeet to approval by X3. Proposal for an American National Standard (ANS) Programming Language Pascal 1. IDENTIFICATION 1.1 Title: ANS Pascal All correspondence with or about the committee may be addressed to: Jess Irwin c/o X3 Secretariat CBEMA: Suite 1200 1828 L Street NW Washington D.C. 20036 1.2 Proposer: 1.3 Date of Submission: Proposed by the X3 Technical Committee on Pascal (X3J9) l.D .... 2. DESCRIPTION 2.1 3.4 Purpose: While no estimates of economic impact are available at this time, it is felt that because of Pascal's widespread popularity, the economic benefits of a standard will be commensurately la'rge. The purpose of the standard is to provide an unambiguous and machine independent definition of the language Pascal. 2.2 4. Goal: The goal is an implementable Pascal standard. 2.3 Nature of the standard: 2.4 Scope: A standard for a di~ital DEVELOPMENT FEASIBILITY 4.1 The programming language Pascal is a Simple high-level language. It is a general-purpose rather than an all-purpose language. Pascal is being used increasingly in three areas: The writing of system software 2) The writing of application software 3) The teaching of programming The current lack of any Significant incompatibilities should be seen as a good reason for standardization now. 4.2 2.5 Program of Work: 1) 2) 3. Maintain a liaison with the ISO, BSI and IEEE Committees to work toward a common working draft standard. This work should include review of those bodies" documents and forwarding of comments based on that review. The eventual draft proposed ANS Pascal shall be compatible with any ISO Pascal standard and identical in content with the jointly developed proposed IEEE Pascal standard. Provide a means for review of all Pascal standardization activities. There are already three working groups concerned with the production of a Pascal standard. They are: Pascal User's Group (International) DPS/13/4 (United Kingdom) International Working Group on Pascal Extensions (UK/USA) C/) These three groups are cooperating with each other and are corresponding with interested parties in the following countries: USA, Australia, Canada, Denmark, France, Germany, Poland, Sweden, and Switzerland. Many of these correspondents are suppliers of Pascal compilers. to rr1 4) Identify and evaluate common existing practices in the area of Pascal extensions. Hoare, C.A.R. and Wirth, N. (1973), An axiomatic definition of the programming language Pascal, Acta Informatica 2, 335-55 5) Act as a liaison group with organizations intereS'ted in interpretation of ANS Pascal. Haberman, A.M. (1974), Critical comments on the programming language Pascal, Acta Informatica 3, 47-57. Interchange: en :;0 Jensen, K. and Wirth, N. (1978) Pascal - User Manual and Report, 2nd ed. (Springer-Verlag, New York) Intrinsic: rr1 -"0 -l Bibliography: Carry out the development of a Pascal standard. Development of a standard Pascal reduces costs of extra training for a particular Pascal implementation and costs of conversion when transporting a program to a different machine. 3.2 Available Resources: 3) EXPECTED BENEFITS 3.1 State of the Art: The most important factor in this proposal is the timeliness of the standardization of Pascal. Pascal has been implemented on a large number of different computers. If the problems relating to the definition of Pascal are not resolved in the very near future, there is a danger that the various implementations will become incompatible. The growth of a large number of incompatibilities would severely hinder any subsequent standardization activities. computer programming language. 1) Economic: Lecarme, o. and Desjardins, P. (1975), More comments on the programming language Pascal, Acta Informatica 4, 231-45 Welsh, J., Sneeringer, W.J. and Hoare, C.A.a. (1977), Ambiguities and insecurities in Pascal, Software-Practice and Experience 7, 685-96 Wirth, N. (1975), An assessment of the programming language Pascal, SIGPLAN Notices 10, 23-30 Wirth, N. 35-63 (1971), The programming Inaugage Pascal, Acta Informatica 1, A standard Pascal will facilitate portability. 3.3 Educational: A standard Pascal enables production of educational documents or manuals usable with any standard implementation. Costs of re-education for a different implementation are reduced. Wirth, N. (1971), The design of a Pascal compiler, Software-Practice ~nd Experience 1, 309-333 Wirth, N. (1972), The programming language Pascal and its design criteria, Infotech State of the Art Report 1.J.. .!!!All Level Languages. 451-473 lO N 6.3 Hoare, C .A.R. (1973), Hints on progrannning language design, Stanford University Computer Science Dept. Report 403 Cost: The cost of maintaining the standard on an annual basis is estimated to be comparable to the original development cost. Wirth, N. (1974), On the design of progrannning languages, North Holland Information Processing: _~rogramming Methodology Wirth, N. (1976), Programming languages: What to demand and how to assess them, and Professor Cleverbyte"s visit to heaven, ETH Institute fur Informatik, Technical Report II 4.3 The total cost is expected to be on the order of $500,000.00 The IEEE P770 Committee is developing the ANS Pascal standard jointly with X3J9. 8. RECOMMENDED TIME FRAME Every effort will be made to submit a candidate standard to X3 by June 1, 1979. IMPLEMENTATION FEAS IBILITY 5.1 5.2 User Operational Considerations: The current lack of widespread incompatibilities in existing practice should make conversion of existing programs a minimal expense. 5.3 ANS EXTENDED PASCAL SD-3, September 14, 1979 Estimated Costs: Implementation may necessitate some modification of existing Pascal compilers and programs. No detailed cost figures can be developed at this time. However, the announced goals and constraints of this standardization effort should hold such necessary modifications to a minimum. X3J9/79-l87 (Revised) Proposal for an ~~erican National Standard Programming Language Pascal. (~~S) Extended (f) rn -0 -i 1. IDENTIFICATION 1.1 Title: 1. 2 Proposer: Legal Considerations: Preserving machine independence and compatibility with any ISO Pascal standard should prevent problems related to res taint of trade and public interest. 5.4 ***** Supplier Conformance Considerations: In developing the Pascal standard, care will be taken to maintain machine independence. The final specification will encourage unambiguous interpretation. The above goals, in addition to the participation of many suppliers in the standardization effort, should provide an opportunity to achieve and/or determine conformance. Note that a suite of programs is currently being developed by groups based in Australia and the U.K. which could form the basis of a conformance test. 6. CLOSELY RELATED STANDARDS ACTIVITIES As mentioned previously, ISO is undertaking the development of a Pascal standard. The Technical Committee will maintain close liaison with this group to assure that the resulting standards define the same language. Estimated Costs: The cost of developing a Pascal standard will be borne by the sponsors of the membership. It is difficult to estimate the total cost as membership totals will undoubtedly fluctuate. 5. 7. h~S rn Extended Pascal I-' Proposed by the X3 Technical Committee on Pascal 1.3 (X3J9) Date of Submission: co ......, co 2. DESCRIPTION 2.1 Purpose: The Extended Pascal standard is intended to define areas in which Pascal may be reasonably extended in a machine-independent and unambiguous manner MAINTENANCE REQUIREMENTS consistent with existing practice. 6.1 Extent and Frequency of Anticipated Changes: 2.2 X3J9 intends to provide interpretation and clarifications of the eventual ANS Pascal standard as the need arises. The goal is an implementable, internationally acceptable, Extended Pascal standard. The Extended Pascal standard is intended to replace the standard referred to in 7(a). The committee also intends to comply with the requirement that an ANSI standard be reviewed within a five year period. 6.2 Resources: Goal: 2.3 Nature of a standard: co VJ The committee accepts its responsibility to maintain the eventual standard and to continue this activitiy along with any revision efforts. The standard shall define extensions to the ISO Pascal standard and the corresponding h~S standard. 2.4 Scope: There have been previous efforts on extensions by the UCSD Workshop on Pascal Extensions for Systems The standard shall encompass those Pascal extensions found to be: Programming and the International Working Group on Pascal Extensions. These efforts have shown that consensus can be reached on at least some (a) compatible with the Pascal language referred to in section 7(a), and (b) beneficial with respect to cost. 2.5 extensions. z 4.2 Program of work: en Resources: The merrbership of X3J9 shall be a resource for this draft. In addition, cooperation and consultation with other standard bodies and Pascal experts shall be sought. The program of work shall include: (a) solicitation of proposals for extended language features; en Bibliography: Pascal News (b) the critical review of such proposals; (c) synthesis of those features found to be acceptable individually and which are mutually consistent into a draft proposed standard; ACM SIGPLfu~ Notices Software Practice and Experience (d) interface with all interested standards bodies, both domestic and international; 4.3 (e) submission of draft as a dpANS and as an ISO draft prol;'osal. The cost of developing an Extended Pascal standard will be borne by the sponsors of the membership. It is dlfficult to estimate the total cost as membership totals will undoubtedly fluctuate. 3. BENEFITS 3.1 tntrinsic: The total cost is expected to be on the order of $500,000.00 per year. Development of a standard Extended Pascal reduces costs of extra training for a particular Extended Pascal implementation and costs of conversion IMPLEMENTATION FEASIBILITY 5.1 Interchange: Educational: A standard Extended Pascal enables production of educational documents or manuals usable with any standard implementation. Costs of reeducation for a different implementation are reduced. 3.4 Supplier Conformance Considerations: In developing the Extended Pascal standard, care will be taken to maintain machine independence. The final specification will encourage unambiguous interpretation. The above goals, in addition to the participation of many suppliers in the standardization effort, should provide an opportunity to achieve and/or determine conformance. Note that a suite of programs is currently being developed by groups based in Australia and the U.K. which could form the basis of a conformance test. A standard Extended Pascal will facilitate portability. 3.3 Economic: 5.2 While no estimates of economic impact are available at this time, it is felt that because of Pascal's widespread popularity, the economic benefits of a standard will be commensurately large. User Operational Considerations: The expected growh in the use of extensions to Pascal suggests that costs incurred by users due to the timely adoption of an extended standard will be insignificant compared with the Benefits (section 3). 4. DEVELOPMENT FEASIBILITY 4.1 State of the Art: There is growing sentiment in both consumer and producer communities that Pascal should be extended. A wide variety of extensions are available in currently existing language processors. Without a standard for an extended language, these processors will become increasingly incompatible. en en -0 5. .. when transporting a program to a different machine. 3.2 Estimated Costs: 5.3 Legal considerations: Preserving machine independence and compatibility with any ISO Pascal standard should prevent problems related to restraint of trade and public interest. -l en 5.4 ANSI X3J9 Meeting of Uecemoer 19, 197tl Estimated Costs: Producers will face conversion costs. Effort will be made to ensure that extensions are efficiently implementable in language processors and may be used efficiently on existing hardware. 6. MAINTENANCE 6.1 X3J9 also intends to comply with the requirement that an ANSI standard be reviewed within a five year period. Resources: X3J9 accepts its responsibility to maintain the eventual standard and to continue this activity along with any revision efforts. 6.3 Cost: The cost of maintaining the standard on an annual basis is estimated to be comparable to the original development cost. 7. Most of the results presented here have been reported in the trade press. Behind the stuffy formality of the official news releases there is an undersurrent of the personalities and politics. And it's for big stakes. Pascal is viewed as a threat to the established order in computing. Extent and Frequency of Anticipated Changes: X3J9 intends to provide interpretation and clarifications of the eventual ANS Extended Pascal as the need arises. 6.2 by Richard J. Cichelli CLOSELY RELATED STANDARDS ACTIVITIES Related standardization efforts include: the development of an ANS Pascal by X3J9 as per X3J9/79-026 (proposed), (b) the development (jOintly with X3J9) of a proposed IEEE Standard for Pascal (IEEE Project P770) , and (c) the associated ISO standardization of Pascal. (a) These efforts hd\ie a different objective a.nd a different time frame than the herein proposed effort, and thus should be carried to completion as planned. 8. RECOMMENDED TIME FRAME June 30, 1981 December 30, 1981 June 30, 1982 December 30, 1982 June 30, 1983 End of public~ proposal initiation Processing of proposals complete Draft of proposed Extended Pascal document complete End of public comment Submission of proposed Extended Pascal Document for ANSI/IEEE/ISO consideration. The following report by John Knight of NASA and ACM's SIGPLAN gives most of the details. The X3J9 committee has been set up by ANSI to establish a standard for the programming language PASCAL. The first meeting was held on 19 December 197tl at the offices of the Computer and Business Equipment Manufacturers Association (CBEMA) in Washington D.C. This association will provide organisational and secretarial support for X3J9 but no technical or managerial support. To obtain membership of X3J9 it is necessary to apply in writing to the membership secretary at CBEMA. A Member is required to attend at least two out of three meetings and respond to at least every other letter ballot. There must be at least one and at most six meetings per year. The committee must prepare an SD3 document which is its justification for existence to ANSI. The convenor of this meeting was Justin Walker. Normally ANSI organises language specific subcommittees based on industrial and academic demand from inSide the U.S.A. In this case X3J9 was established because of a request for support from the International Standards Organisation (ISO). It seems that none of the attendees of this meeting had applied for membership of X3J9 in writing as required so technically all attendees were observers. Thus this meeting was in a sense informal. ANSI requires a committee to elect a chairperson and secretary from within its membership. No chairperson was availableoecause none of the participants were formal members of X3J9. The meeting was conducted by the convenor. (/) en " -i en The first surprise which occurred was an announcement by a representative of the IEEE that the IEEE had established its own PASCAL standards committee with the goal of producing a standard for the language. This announcement met with a lot of comment and considerable disapproval. The theme of the disapproval was that it is ANSI's job to establish standards and this would oe a duplication of effort. Despite these comments, it is clear that the IEEE will continue its effort. Following the debate over the IEEE announcement, the discussion turned to organisational matters of X3J9. It was explained that four officials are required. They are: III 2 Chairperson Vice Chairperson 4 International Liason Officer 3 Recording Secretary The reason for the relatively high level of activity at tne is:) is the current work being done oy tne Brit-ish Standards Institute (psI). The BSI has prepared a draft PASCAL standard ana will submit it to the ISO. There is a high probability that it will be accepted (after revision) by the BSI and ISO. A move was made cD vi at the X3J9 meeting to accept this draft standard as an ANSI draft standard. This was rejected on the grounds that few people had seen it. The meeting agreed to consider it at a later date after it had been circulated. The BSI document has been published by the PASCAL Users Group as PASCAL Newsletter no. 14. One point which generated a lot of debate and few conclusions is that the ISO has stated that its PASCAL effort will not involve any development of the language. ANSI has adopted the view that this is not necessarily its policy. The next meeting of X3J9 will be hosted by UNIVAC in Irvine, California and will be held February 20 - 22. The proposed agenda is: 1 2 3 4 5 Nomination of committee officials. Preparation of the SD3 document. Establishment of a review process. Review of written comment on the BSI/ISO document. Submission of proposals to the BSI and the ISO via the International Liason Officer. Action items. Report on ISO standard situation. Future meetings schedule. Some further clarification of the SIGPLAN's stand on the issues can be gained from Paul Abrahams' message to the SIGPLAN membership. From the Vice-Chairman of SIGPLAN to SIGPLAN Members I wOuld like to report to you on the recent upsurge of standardization activity with respect to Pascal, since I know that Pascal is a language that many of you are interested in. I am grateful to John Knight, our semi-official representative to committee X3J9, for providing me with the input for this report. There are three different groups currently interested in developin~ a PASCAL standard: the American National Standards Institute (ANSI), the IEEE, and the International Standards Organisation (ISO). A draft standard has been submitted to ISO b~ the British Standards Institute (BSI) (forgive the alphabet soup), and Niklaus Wirth, the author of Pascal, has expressed his wholehearted support of this draft. The BSI draft is likely to serve as an initial version for all the standardization efforts. Meanwhile, back at the ranch, ANSI has established Technical Committee X3J9 on Pascal, and the committee will serve as technical advisory group to its ISO counterpart. Thus the ISO and ANSI standards will probably be developed in coordination with each other. X3J9 has already met once as of this writing, and its second meeting was scheduled for February 20-22. The first meeting had 70 potential members in attendance--surely a strong indication of interest. The IEEE Pascal Standards Committee has been established under the chairmanship of Bruce Ravenal, and its first meeting took place on January 29. No details about this meeting are available as of this writing. It is probably not in anyone's interest to have three incompatible Pascal standards, and so the pressures for consolidation of the different efforts are likely to be strong. However, there are both technical and political obstacles to be oversome. The primary technical issue is whether the standard should involve any new development of the language. ISO's opinion is that it should not; ANSI wants to keep its options open; and IEEE has yet to express an opinion. The political issue is whether the IEEE and ANSI efforts can be merged; cooperation with ISO (at least from ANSI's viewpoint) is not at issue. I suge;est that any of' you who would like more information on this subject contact John Knie;ht (804) 62'7- 3i:l7?/3026. In addition to oeine; SIGPLAN's representative, he has a strone; personal interest in Pascal and in the effort to standardize 1];. But it's not over lli! On that fateful December 19 three more meetine;s occurred which I attended. There was the Linda Hecht/IEEE meeting, the combined dinner meeting and the ANSI organizers' after dinner meeting. :z rn Try to appreciate the politics of the situation. The ANSI X3 committee's secretariate is CBEMA. X3 uses CBEMA facilities and personnel. CBEMA looks to many like an East coast mainframe manufacturers clique. Power in this clique is related to market dominance. When X3 met to consider the PUG sponsered 13Sl/IS0 activities, accordine; to J.A.N. Lee who is ACM's representative on X3, the vote was taken to start a divere;ent competitive standards activity. This was done by deleting the "no lane;uage development" clause from the ISO work order. With this deletion a number of X3 members voted against starUng X3J9. It is not a usual X3 policy to institute such a committee. Normally a committee of this sort approaches ANSI for recognition. As Lee repor,s it, this action was a direct rebuff to PUG and 13S1. How did the IEEE get involved? Believe it or not, the IEEE actually did some standardization on a numerical control "language", so there is a precedent for their activities. Most ACM affiliates regard this somewhat tenuous precedent as specious. However, if you consider that the IEEE is the profeSSional home of many of those affiliated with West coast semi-conductor manufacturers and their kindred software technologiSts ••• It's not hard to realize that the existing Pascal software support systems could help bridge the software gap between what established vendors provide and what the West coast upstarts need in order to sell their iron. It wouldn't hurt to tap the Pascal user community for customers as well. As soon as X3J9 adjourned, Linda Hecht, the IEEE representative, invited me, Jim Miner (Univ. of Minnesota), Scott Jameson (H-P), Rick Shaw (SEL), Bruce Ravenel (Language Resources), and Gabe Moretti (Signetics) to a pre-arranged meeting place in Washine;ton. Linda explained the advantages of an IEEE Pascal standard - namely, speed. There were only two problems. 1) ANSI and 2) such an IEEE committee gets carte blanche. We PUG members had some reservations about giving the language over to a committee one potential member of Which asserted that he wanted to "fix Pascal so it would work for the engineer at his test bench." Linda's attitude was interesting: "Do it with us or we will do it without you." After I promised to solicit direct PUG membership response to the IEEE board of directors about this approach, she modified her position and we established Bruce Raven~l as liaison between IEEE and PUG. While Hecht, Ravenel and Company are proposing a six month standards actiVity, DEC's representative at X3J9 is talking about a f'ive year ANSI effort to fix Pascal for us. The Pragmatics! Pursuing the typical ANSI programming language standards activity over the usual five to seven years can cost a company or individual upwards of $30,000. Some control of ANSI X3J9's activities can be had by using their constitution and bylaws. Duplication of work and production of conflicting standards is expressly forbidden. Consensus of all major en rn -0 -l rn interest groups is required. If PUG isn't a "major interest group" concerned with Pascal, I don't know what is. I believe the PUG membership at large should advise and consent to the standard. I have represented and defended this viewpoint at all meetings that I have attended. Incidentally the ANSI charter is designed to provide conunittees whi ch formalize and reco,;nize exis ting 2.!:actice not formulate new .designs. After the IEEE meeting on the 19th, another meeting took place over dinner. Those from that meeting were Joined by Justin Walker (NBS), Barry Smith (OMSI), Bill Price (Tektronix) and a few others. Confusion about the day's events reigned. Then, like a light breaking through the darkness, someone suggested that Ruth Richert (Burroughs) be made X3J9's chairperson. Brilliant! The idea and Ruth both! I was given the job of calling her and askin,; if she would accept such a responsibility. (She wasn't present at the X3J9 meeting.) I called her directly from the restaurant. She agreed provided her management approved. Ruth has coordinated similar activities within Burroughs and has a track record for success that is legendary. (Incidentally, it was Ruth who affectionatel awarded me the "order of the claw" - see PN #13 cover - at the UCSJ.l workshop. ) american national standards committee X3-compute... and information processing X4-office machines and supplies NEWS RELEASE operating under the pl"oeedures of the March 19, 1979 For more information, contact: American Nation.t SuntUlrds Institute Jess M. Irwin 408/249-1111 (until Aprii 4) 617 /475-4700 (after Apri~ 9) TECHNICAL COMMITTEE X3J9, PROGRAMMING LANGUAGE PASCAL, SOLICITS PUBLIC COMMENT ON THE DRAFT INTERNATIONAL STANDARD FOR PASCAL Washington, D. C. -- The X3 Technical Committee, X3J9, Programming Language PASCAL, is requesting comments from the public on the ISO draft proposed standard for PASCAL. The ISO document is being used as a base document for the draft American National Standard which the committee hopes to circulate for public review within the next few months. X3J9 serves as the United States' Technical Advisory Group (TAG) for ISO/TC97/SC5, Programming Languages, and is the focal for input to the International arena. The final meeting of the evening was with Justin.Walker, Bruce Price, Barry Smith, and about half a dozen others. Those of uS who were part.icularly disturbed by X3J9' s failure to elect a chairperson (as required by Robert's Rules of Order which govern ANSI meetings) explained to Justin that the lack of a chairman allowed self appointed officials present at the speakers platform all through the meetin,; to effectively prevent the group from voting to restrict the standards committee work to reviewing, clarifying and formalizing the de facto standard. Justin felt overwhelmed by the events of that afternoon and felt someone with Ruth's organizational skill would better guide the X3J9 work. No matter what happens, PUG is likely to have the final say on Pascal standards. I believe the important thing is to get the de facto core standard through ISO as soon as possible. Copies of the document are available by mail order only. Requests must be accompanied by a $4.00 check and mailing label, addressed to: X3 Secretariat Staff CBEMA 1828 L Street, N. W., Ste. 1200 Washington, DC 20036 It is requested that comments reference the source document by section number, state the problem and suggest a solution. The connnenter should include name, address, and telephone number. All comments should be returned to the Administrative Secretary, X3 at the same address not later than April 12 for consideration by the technical committee. Comput.r end Bu,ln." Equlpm.nt M.nufeeturer, A .. oeletion 1828 L Street NW {Suite 12001, W.,hlntton DC 20036 Tel: 202/466-2299 ***** ***** A Few Experiences at the Boulder Joint Pascal Committee Meeting 1979 April 26 Niklaus Wirth in a letter to me dated 8 December and received 12 December, stated: "I have now also received a coPY of Tony Addyman's proposal for an ISO standard, and I am impressed by the care and attention tp details pf this report. There is not much doubt that ISO \~ill finally adopt it (or a later revision of it), and I therefore consider this document as pf great Significance .... " " ... 1 wholeheartedly supoort the ISO draft, and perhaps you should exert your influence on implementors to at least follow that reoort. - Andy Mickel 78/12/13. & 27. The main purpose of the Boulder meeting was to convene the TRTG chaired by Bill Price in order to produce an official American response to the BSI/ISO document N462. At the tlme the general feeling was that the Boulder meeting was a success although final agreement on the response by the whole JPC was delayed. In retrospect, the B?ulder meet~ng was the most productive of the American standards effort. I wa~ really lmpressed wlth.the general quality of the technical discussion by most votlng members at the meetlng whereas my preconceptions were quite skeptical. The population of frustrated language deslgners which usually plague standards committees and which get their chance to ruin a language was fortunately small. A1so apparent was the pos iti ve i nfl uence of JPC co-cha i r ~ruce Ravenel from t~e IEEE P770 Pascal Committee. The site of the meeting was the Computlng Center at the Unlve~slty of Colorado and Bruce naturally provided a historical continuity because he "cut hlS Pascal teeth" at the same university. One should not underestimate the significance of the joint standards effort (IEEE and ANSI) without which a protracted standards process would ha ve been a certa i nty. Last but not least, the meetings were principally chaired by the very able and jovial Marius Troost. I feel that the group benefitted greatly from Marius's experience and judgment, and we were indeed fortunate to have his services. Marius congratulated Bill Pri ce for hi s hard work with TRTG. (/) m -0 -i m Hey! Guess what I learned at Boulder? That there are people who work :or computer companies whose sole job is to represent that company on standards comm1ttees. In other words, these people may know nothing about Pascal at all--never have written a program-and still they are there with considerable weight. Imagine my amusement when the DEC representative kept referring to the meeting as "X3J3" (t~e name of the ANSI FORTRAN committee). You could sure tell where she had been spend1ng the last few years! Refl ect ion s I'd like to share some other infomation I've learned about the USA standards process in general. Actually I'm not even sure I have it all straight myself! First of all, terminology and basic procedures are confusing. ANSI is a non-profit, . private (non-governmental) body whose purpose is to aid standards development of all k1nds. The ANSI committee in charge of the area of Computers and Data Processing is called X3. A look at the standing membership of X3 shows a predominance of computer manufacturers and large businesses--not ordinary users. Additionally there is NBS (the Natio~al ~ureau of Standards), a governmental agency within the U.S. Department of Commerce Wh1Ch 1S completely separate from ANSI, and it or another agency handle Federal Standards for computing such as those which exist for COBOL and FORTRAN. One strange term you hear is "secretariat." The duty of carrying on the communications, document-copying and di stri bution, and schedul ing of meetings, etc. for each standards committee is performed by the secretariat. The member of X3 which happens to perform the secretariat of X3 is CBEMA: The Computer Business Equipment Manufacturers Association. As the name implies, you know who controls this group! And guess who is the secretariat of ISO? ANSI! Suppose we (PUG) had decided to get an official Pascal standard adopted by ANSI. Roughly, the correct procedure is to make an application to X3's SPARC (Standards Planning and Requirements committee) to get them to consider foming a committee to consider creating a standards committee! This can take about a year if you are successful. Now the conventional view of some people in the US (and indeed some PUG members) was that we should have of course approached ANSI for a standards effort, because it has undertaken standards efforts for other programming languages and this represents a kind of precedent. This line of thought totally ignored the fact that other language standards efforts undertaken by ANSI have produced unsati sfactory results: in other words bad precedents! Look at the size and complexity of COBOL produced by X3J4; the original designers of BASIC are still crying in their sleep over the work of X3J2; and I won't waste any more words about FORTRAN and X3J3 (see David Barron's editorial on page 3 of PN #13). These were all committee efforts dominated by repres.entatives of the large computer manufacturers and the US government and took many, many years. Why did we have to make these mistakes? Fortunately we didn't. Although there was an attempted move at the first X3J9 meeting in Washington to not even consider the work on a Pascal Standard already done by PUG and BSI and to undertake an effort from scratch, it was fortunately defeated. It was also simply amazing that so many of the attendees of this meeting were not even PUG members! We may be only lucky that the real reason we were able to defeat such a chauvinistic American move (in the face of a cooperative international initiative) was that we users were organized through PUG and informed through Pascal News. So everything has turned out fine so far and people ask me why I was so worried and sure that things would go wrong. Well, there was a lot at stake: there were no guarantees about avoiding a long, misguided effort directed by the manufacturers instead of the users, and we knew that the international effort was already underway. My hope was expressed in a letter to SPARC on page 86 of PN #13: ANSI had an opportunity to reciprocate its respect with ISO--several ISO standards are one line saying "see ANSI standard xxx" and for Pascal, a language with European origins, the standardization whould be left to Europeans. Before the December X3J9 meeting in Washington, the BSI/ISO proposal caught X3 off guard and several SPARC steps were skipped over and X3J9 was immediately set up and then this first meeting was set (wasn't that easier than the regular procedure?). I was still personally very angry that only afterwards did the secretariat inform PUG. Why didn't they check with us for information? No matter that PUG already existed and represented the majority of Pascal users! Anyway, at the December meeting, Justin Walker of NBS chaired X3J9 temporarily and several committees were set up: one produced the SD-3 reproduced above--a document outlining the goals of X3J9 similar to documents existing for the BSI and ISO Pascal initiatives. Jess Irwin was selected by the group as secretary, who has the important task of indexing, reproducing, and distributing documents. These documents range from announcements (and pronouncements) from X3 to papers discussing technical issues. So far the Joint Pascal Commi ttee has over 200 documents, and even the document regi ster (i ndex) i tse lf is a numbered document! The people attending the Washington meeting with the intention of representing PUG were Jim Miner, Rich Cichelli, and Rick Shaw. Because Rich and Rick wanted to also represent their organizations (ANPA/RI and SEL respectively), they weren't allowed to do this. Thus Jim became PUG's representative and I became his alternate. Fortunately the standards activity is a public process, but unfortunately the resource·s required by the attendees are immense in order to pay for the time, lodging, and travel expenses. This greatly favors individuals representing big corporations with expense accounts (tax deductible, no doubt). In fact the longer the computer manufacturers can drag out the standards proceedings, the more power their representatives have toward the end of the process because they will be practically the only ones there! So standards activities, supposedly in the best interests of the .lIsers, effectively exclude user participation! Jim Miner, in fact, has gone to 2 meetings on his own money, and we both went to the Boulder meeting on our own money. Finally NBS is helping Jim pay for plane fares to upcoming meetings. - Andy Mi cke 1 79/08/31. Did you know that pascal has already been standardized? One ISO SI Pascal is a newton/m 2 -u J> Ci"> I"Tl rn <.0 <.0 Implementation Notes Pascal Variants TINY PASCAL Supersoft What does that make you think of? } have announced a Tiny Pascal fpr TRS-80 and North Star. It is supposed to run at least 4 times faster than Basic and requires a Level II TRS-80 with 16k and a 24k North Star. Tiny Pascal is { of course} a subset of Pascal, and apparently includes: "recursive procedures/functions, if-then-else, repeat/until, peek and poke, while, case, & morel! Portable Pascals Cost: $40, from Supersoft P.D.Box 1628 Champaign, IL 61820 (217) 344-7596 PASCAL-P Lie back, relax, and let Supersoft Pascal take care of your troubles. gift of the above slogan. } Pascal-P ordering information has changed. PUG makes a free In North and South America, order from: William Waite Software Engineering Group Electrical Engineering Department University of Colorado Boulder, Colorado 80309 Phone (303) 492-7204 In Australia, order from! PAS CAL - SAN D We have some. new . information on an implementation of Pascal-S for the PDP-II presented below. RiCh. C1chell1 sent an update for Pascal-I (see article in this issue), the very successful 1mplementation of Pascal-S designed for highly interactive use. Note that we Tony Gerber Basser Department of Computer Science University of Sydney Sydney, New South Wales 2006 Australia Phone 61-02-692-3756 (Gerber), 61-02-692-2541 (Dept Sec) put Rich's previous checklist under CDC 6000 in Pascal News #11 p82. EASTERN KENTUCKY UNIVERSITY Richmond, Kentucky 40475 Tony reports that his Pascal-P distribution costs are now A$20 for an unconfigured tape and A$40 for a configured tape. Of course Chris Jacobi is still distributing -Pascal-P in Europe, Africa, and Asia from ETR, Zurich. Arthur Sale reports that he may embark on producing a Pascal P5 which will forthcoming ISO Standard Pascal, when he knows what it is. implement the {For those that don't know, Pascal-P is the parent of many of the present crop of Pascal compilers - not very useful by itself but modifiable to other target machines by supplying a changed code-generator. The bugs in Pascal-P are very widely distributed! } PAS CAL - E A new portable Pascal compiler has been under development for some time at Vrije University in Amsterdam by Andrew Tanenbaum and his co-workers. This compiler was initially derived from Pascal-P2 and generates an intermediate code called EM-l. EM-l (for Experimental Machine) is an optimal stack machine architecture for stack languages such as Pascal. The PDP-l1 implementation of Pascal-E comes with an EM-1 code optimizer 'Which produces a final compiler in only 20k bytes. This compiler has been covered in Pascal News #11 p87 under DEC PDP-l1. The system runs under UNIX and Andrew Tanenbaum described the system at the UNIX Conference in Toronto in June. His address is: Computer Science Group, Vrije University, Amsterdam, The Netherlands (020-5482410). PAS CAL - I ======================================== De Boelelaan 1081, 1007 MC, COLLEGE OF ARTS AND SCIENCES Department 0/ Mathematical Sciences (j') rn -0 -I rn October 19, 1978 Dear Andy, I have developed an extended version of PASCAL-S which runs on a PDP 11170 using RSTS version 6c. The compiler-interpreter is written in OMSI PASCAL and seems to execute about 2000 P-code instructions per second when the execution profi ler is turned off. Extensions to PASCAL-S include: 1. Graphics similar to UCS) PASCAL for the Tektronics 4006. 2. Scalar types and associated operators. 3. Strings and arrays of characters can be compared and assigned. 4. Arrays of characters can appear in READ and WRITE statements. 5. READ and WRITE default to the user terminal; however, the user can specify fi les for READ and WR ITE at runt ime. 6. A weak form of the IN operator is supported, i.e., IF CH IN [IA' •• 'ZI_, '0' ..• '9']. ...... c.D " c.D 7. A legible symbol table dump can be obtained. 8. An execution profi Ie can be obtained. This report gives the number of instructions and the time spent in each procedure. ...... 9. A random number generator and a time call are built in. a a All programs are given a DAY, DATE, and TIME stamp. 10. 10. Current symbol table size is 120; code vector size is 1000, and the runtime stack size is 1500; consequently, the systemls primary use is educational. The code section compiles into a little over 16K words with the syntax analyzer and interpreter overlaying each other. This leaves about 12K words for variable DEVELOPMENT METHOD: Started with PASCAL-S and Wirth-Jensen I/O routines. Built suitable data structures for storage of compressed program source and interpreter code. Modified PCSYSTi1 to fully recover from user aborts and system timeouts. Al so added fi le access primitives and moved stack and heap to low core to enable the segmented loader to vary field length. The system is about 7500 lines of tightly formatted PASCAL. Implementor responsibilities: storage and 10 Buffers. Curt Loughin - Editor, Formatter, PASCAL-S compiler rewrite, PASCAL-S interpreter re,;rite, and Irrmediate code routines. Extensions 1 and 2 are essentially due to Don Baccus of OMSI; however, the bizarre way our system handles control characters and carriage returns necess i tated extens ive rework i ng of the graph i cs system. Extension 8 was adapted from Matwin and Hissala (PUG #12). with John McGrath - I/O routines rewrite, HELP command, PCSYSTM mods. Richard Cichelli (project leader) - Post mortem dump and other run-time control and status routines. I would I ike to correspond with and/or trade implementation detai Is the other PASCAL and PASCAL-S users. Enclosed is a sample program which finds knights tours of a chessboard. CON CUR R E N T Sincerely yours, Dr~i~:ei{l PASCAL Note: We have had no word from Per Brinch-Hansen on the Pascal promised for this issue. Perhaps in PN #17 ••• LeVan Associate Professor of Mathematical Sciences survey Osterreichische Studiengesellschaft fUr Atomenergie Ges.m.b.H. of users of Concurrent I'fi\\ ~-" Lenaugasse 10 • A-1082 WIEN • Austria O. DATE/VERSION: 1. I MPL E~iENTATOR/DISTRIBUTOR/MAINTAI NER: Richard J. Cichelli, 901 Whittier Drive, Allentown, Pa. J. Curtis Loughin John P. McGrath 2. 3. PASCAL-I, 30-MAR-79, Release 2.03 ~~ff~D~_§~e~~_2f_~h~ 18103 ~IACHINE: Machine independent. 25 installations on CDC, DEC, IBM, and other computers. Written entirely in PASCAL using some features of PASCAL 6000 (segmented files for terminal I/O to flush buffers and read past EOF on terminal input). SYSTE~I loaded. CONFIGURATION: Developed under SCOPE 3.4 with INTERCOM using the CDC segmented Installed on many others. 4. DISTRIBUTION: 600' magnetic tape. SCOPE internal format, 7 track, 800 bpi, or 9 track BOO bpi ASCII or EBCDIC. Pascal-I isn't in the public domain. Price - $100. Make check payable in U.S. dollars drawn on a U.S. Bank to Richard J. Cichelli. 5. DOCUr1ENTATION: System Level: Very readable code (guaranteed) Us~r Level: Machine readable users manual System explains itself in response to the HELP command (full details _ oriented towards novice programmers.) 6. i·IAI NTENANCE: 7. STANDARD: Supports PASCAL-So Differences from standard PASCAL - files - only INPUT and OUTPUT, no sets, pointer variables, case variants, labels, goto's or with statements. Any PASCAL-S/PASCAL-I program is a valid PASCAL program. B. 9. Accept i ng bug reports. i·IEASUREi·IENTS: Interpreter and overl ayed. The compi 1er forms the 1argest overl ay segment and runs at 33,000 (octal) words. The editor segment runs in about 24,000 (octal) words. PASCAL-I will compile and interpret PASCAL-S programs of up to about 500 lines as the system is currently configured. RELIABILITY: Runs just great. E§~11tl_!ill21~ill~D~e~12D Implementation Notes 2f_~Qll£~ff~ll~_~e2£s1 C/) rn -0 -i rn We have moved P.B. Hansen's Concur~ent and Sequential Pascal compilers from the Solo operating system to RSX11M (and RT11) so that we could develop Concurrent and Sequential Pascal programs in a custo~ary timesharing enviro~~ent. t:C rn ;:;0 This was done about 2 years ago. In the meantime we have developed a r.ew Concurrent Pascal Kernel which differs from the original Kernel in some ?oints. The main differences are: - The system can run on all types of PDP1'. - An interactive trace facility can be used to ma~e program flow and process SlNitching visib~e on a, terminal. - The nu,:nber of processes is only restricted by the a~jailable memory space. Process switching is very fast. A process needs only 9 words system overhead. We had a pilot project using 60 concurrent processes. - The process scheduling strategy is a simple demand scheduling (no time slicing or I'round robin" scheduler) -0 ::t> - The kernel runs as a single task under RSX11H. No memory management directives are used. G> - The interrace to the operatir.g sys~em is si~ple. The ker~el communlcates with RSXllM only via a few QIO/AST statements. At the moment t~e Concurrent Pascal kernel supports only terminal I/O. Other devices may be connec~ed in the s~~e way. ;...- rn o ;...- PROGRAM HISTORY: - At the moment the loading and executing of sequential programs i~ a Concurrent Pascal program is still not supported. IN PROCESS 00003. IN PROCESS 00004. DELAY IN PROCESS 00003. ........... + IN F'ROCESS 00004. DELAY IN F'ROCESS 00003. ............... IN PROCESS 00004. D":'..AY IN PRCCESS 00003. ............. IN PROCESS 00004. CONCURRENT F'ASCAL KERNEL END + ........... • - Only one process at a time can execute a "WAIT"-instruction. - A IIpowerfail restart facility can be used by a Concurrent Pascal program in the same way as a device. A process pe!."fcrming an I/O operation on the pOiNer fc.il device is suspended until power fail restart occurs. II - set upper tT CER)HP 4 .,. ,. CER>LL 273 HL 282 - set range 1" T CER)EVENT 10 OFF t T CER>PRINT ON EXIT ROUTINE IN F'ROCESS IN PROCESS EXIT MONITOR IN PROCESS EXIT MONITOR IN PROCESS EXIT ROUTINE IN PROCESS EXIT MONITOR EXIT MONITOR IN PROCESS EXIT ROUTINE IN PROCESS EXIT MONITOR IN PROCESS t1 CER)ENTER EXIT MENTER MEXIT NEW LINE IN PROCESS NEW LINE IN F'ROCESS NEW LINE IN PROCESS NEW LINE IN PROCESS NEW LINE IN PROCESS NEW LINE IN PF:OCESS NEW LINE IN PROCESS NEW LINE IN PROCESS 'l'TCER)LINE OFF DELAY CONTINUE 1"1 CER)CONTINUE OFF tT CER>LP 3 HF' 4 1'T CER>LL 0 HL 0 DELAY IN PROCESS DELAY IN F'ROCESS DELAY IN PROCESS DELAY IN PROCESS DELAY IN PROCESS @ DELAY IN PROCESS CER)LP 0 HP 0 CONTINUE ON CONTINUE IN PROCESS .. + . . . . . . . . IN PROCESS DELAY IN F'ROCESS CONTINUE IN PROCESS ...... t . . . . . IN PROCESS DELAY IN PROCESS CONTINUE IN PROCESS t t ............ IN PROCESS DE!..AY !N F'F:OCESS 1'c. j. ••• AT AT AT AT AT AT AT AT LINE LINE LINE LINE LINE LINE LINE LINE 00139. 00139. 00160. 00139, 00160. 00139. 00160. 0-J139. :z rn *** "> This system has been used successfully in an industrial process control application under R5Xl15. It will probably run under lAS and RSXllD, too. The complete software package is available for 5.000,- Austrian Schilling (-c 350 U5$). >; USE TI-IE INTERACTIVE TRACE FACILITY >; *** •• *** >. The trace facility is very useful for demonstration purposes and program testing. The following lines show a sample trace output of P.B. Hansen's "realtime scheduler!!: >CER SC1 CONCURRENT F'ASCAL KERNEL START ~ *** limit of process numbers t'J be traced of line numosrs to be traced 00002. AT LINE 00003. AT LINE 00004. AT LINE 00003. AT LINE 00002. AT LINE 00003. AT LINE 00003. AT LINE 00004. AT LINE DELAY CONTINUE 00003. AT LINE 00004. AT LINE 00003. AT LINE 00004. AT LINE 00004. AT LINE 00003. AT LINE 00002. AT LINE 00004. AT LINE ON 00279. 00277 • 00276. 00278. 00276. 00279. 00279. 00277. OFF LINE ON 00281. 00278. 00276. 00279. 00280. 00277. 00278. 00281. The main drawback of the Concurrent Pascal compiler is that it produces relatively slow threaded code (PDPll-Fortran is about 2.5 times faster). To Overcome this disadvantage we plan to build a Concurrent Pascal precompiler for the highly efficient OMSI Pascal compiler. Nevertheless the current system is an excellent programming tool for non time critical or I/O-bounded tasks. Compared to RSXll-realtime-multitask applications the Concurrent Pascal system is many times faster, since task switching and eventflag synchronisation is a very slow process in RSXll. Yours sincerely, /~~vttJ\ k~fV C/O rn ""0 -i rn Dipl.lng. Konrad Mayer MOD U L A 00004. 00004. 00003. 00003. 00004. 00004. AT AT AT AT AT AT LINE LINE LINE LINE LINE LINE 00160. 00139. 00160. 00139. 00160. 00139. 00002. 00003. 00002. 00005. 00005. 00002. 00003. 00004. AT AT AT AT AT AT AT AT 0OOO3~ H, LINE LINE LINE LINE LINE LINE LINE LINE LINE 00145.} 00139. 00160. 00166.} 00324. 00139. 00145.} 00139. 0{):60. Moclula is an experimental attempt to build a real-time programming language with structure. We reproduce the abstract page of the Modula-2 report by Niklaus Wirth, which is an attempt to put Pascal back into Modula. The other abstracts in this section relate to work done by York University on Modula-l, and their implementation. Write to them for copies or distribution tapes. Modula-2 PROGRAM TERMINATED AT LINE 00277. IN PROCESS 00004. by N.Wirth Institut fur Informatik, ETH, CH-8092 Zurich, December 1978. Abstract ""0 ~ Modula-2 is a implementation. style. general-purpose programming language primarily designed for systems This report constitutes its definition in a concise, though informal G"> rn I-' <.::> Note! No compiler is available for distribution at this time. N their experiences with the language or with the York compiler. Of course we would be delighted to hear from anyone who would like to take delivery of their first Modula compiler! UNIVERSITY OF YORK HESLINGTON, YORK, YO! 5DD TELEPHONE 0904 59861 12 January 1979 Yours sincerely Dear Mr Mickel :z en } /ltL~s' University ~ York Modula Compiler Second Release ------ 1 C Wand The second release of the Modula (UNIX/PDP-lI) compiling system will be made during February 1979. In comparison with the first release the following changes are incorporated in the second release: * * all known compiler errors will be corrected, * optional run-time checks for CASE expression out of range, array index out of range and a procedure exceeding its stated depth of recursion will be implemented. The recursion depth of procedures inside Device Modules will not be checked, * * I D Cottam (* Note: we have reports that Jeff Tobias has modified this compiler to produce code for the Intel 8086, Jeff is at the AAEC Research Establishment, Private Mail Bag, Sutherland 2232 N.S.W. Australia, Also Steve Bruell, Pete Zechmeister, David Boone, and others are working with John Collins at 3M in St. Paul, Minnesota to modify the comailer to produce code for the Motorola 6809, John is at 3M Center, Bldg 235 F247, St. Paul, MN 55101, phone: (612) 736-0778. *) Reference the VALUE clause (for the load-time initialisation of level 0 variables) and the standard functions 'off' and 'among' will be implemented, the portability/bootstrapping interface between passes and 3 of the compiler will be brought into line with the description in Wand(1978), and the set of test programs will be extended and improved. The only language restriction remaining in this 'declaration before use'. release will I C Wand, ~MCODE: A description of the bootstrapping interface of the University of York Medula compiler', Report Number 14, Department of Computer SCience, University of York (1978) ABSTRACT OF "MCODE" by Ian Cottam, Dept of Computer Science, University of York, England. Phone (0904) 59861. Heslington, It should be emphaSized that the MMAGHINE is only sui table for the realization of Madula programs and that it contains many primitives, eg DOlO, which directly reflect the operations required in a Madula run-time environment." Suggestions from users (and others) for longer-term enhancements are most welcome. At the present time the following seem the most likely: Holden, J. and Wand I.C" An ClMU.6me.nt 06 Modu1.a, York Computer Science Report No 16, November 1978, 41 pages. * an alternative 'back-end' producing code for one of the new 16-bit microprocessors. This will probably be one of the set [68000, 28000, 8086], * * a User Guide, and for separate compilation. At present the University of York has no plans to produce versions of the Modula compiling system that run under different PDP-II operating systems, although it is hoped that versions which run under RSX-lIM and RT-ll will be developed by collaboration with other UK Universities. from any Modula user 5DD, be We apologize for written that way. We would be interested in hearing YOl "The front-end of the York Madula compiler is a two-pass compiler that translates Madula (Wirth 1977) source programs into an object program for a hypothetical target processor. In this document we will call this object code MeaDE and the hypothetical processor, the MMACHINE. The architecture of the MMACHINE has been designed so that MeODE can be mapped without undue difficulty onto existing mini and microcomputer hardware. Users of the first compiler release who received a magnetic tape from York are requested to return the tape for the second release. No charge will be payable for existing users of the compiler who wish to update to the new release. Our charges to new users are 300 pounds to commercial customers and 50 pounds to educational and research institutions not in the United Kingdom. facilities York about the capitalization in the above abstract, but the introduction was Abstract: Wirth has recently published a new programming language called Modula which he suggests is suitable for the programming of process control systems, computerised laboratory equipment and input/output device drivers. The authors have written a compiler for Modula running on a PDP-II and generating object code for the same machine. Their experience in writing device drivers for a number of PDP-II devices is reported, including simple mains frequency clocks, disks, CAMAC and a graphics processor. Some difficulties arose during the writing of these programs; these are lnvestigated and solutions proposed, either within the eXisting language or by minor modifications to the language. The study shows the extent to which Modula meets the requirements for a general purpose real-time/systems implementations programming language; areas of deficiency are noted. Cottam, 1.0., Func;timurt . It's riot as if this is particularly difficult: at least one existing corri?ile.r 2an incor'pc-rate tbe above ~ith a Kini~al additional effort. Another cOQpil~r that is under impl-emenr~ation incor;;orates a camp 1 iea ted meta-langu.age embedded :i.n the com;nent s; if that were e],iLni:1at-ed ar,d the abov.;:> i.llplemented (the i:npler:l.f,ntcr';" th;::;re \o{ill. 1:)2 ex'::.-ensive cptimiz3.tior. tc,o ... , the compilEr' would be so l1luch simpl'er and [,et.ter. ;', ' t "' William G. Hutchison, Jr. Consultant March 28 , 1979 John Fluke Mfg. Co., Inc. I PO Box 43210 I Mountlake Terrace WA 98043 I (206) 774 2211 To; ~i'l']E. dino,'5a:J!~s cr,;; ext:nct (\-tell, al'D0:3t. ) so let1s keep it that way. Ther'2 if, still All Pascal Implementors -0 Having used many different Pascals on different machines, and having had the opportunity to study some forthcoming and as yet l.mannounced compilers, I not ice a disturbing trend in some of the more recent implementations: that of embedding program semantics in the compiler directives to increase the "power" of the language and to compensate for laziness on the part of the LIlplementors. :t> G> rn f-' K.:3. a E:':2.sk2r E:;g-im:er'irog ?ro.€:r5.G;nf.:t' / Sys:-~ems .4nalyst V1 IMPLEMENTATION FEATURE NOTE while (v <.= temp2) sl!J.. body; v := succ(v); PROBLEM The user of Pascal is entitled to rely on the features of the language being correctly implemented, however difficult this may be. The until overflOW; abstraction takes precedence over implementation convenience. In one PDP-1l implementation which had the straightforward while test at the top of the generated code, this was achieved by simply replacing an unconditional branch (BR) at the end of the loop body code by a branch if overflow had not been set (EVC). The net cost in execution speed and space to do it right -- nil! In one problem I have observed, the for-loop fails to carry out the expected action if the second limit expression evaluates to maxint and the statement has the to form. (In some processors the downto form will similarly fail if the second expression evaluates to -maxint.) For example, the statement: .t£J:. i := (maxint-2):!i£. maxint rn Of course, optimizing compilers that use highly transformed versions of the basic for-statement (for example by moving the test to the end of the loop to save one branch instruction every loop iteration) will need to inhibit the optimization if they cannot determine that the sl!J.. writeln(iJ; has been known to print second limit expression ~annot ever blJrmaxint. Of course this is not a problem with enumerated types, and may act as a minor encouragement to programmers to use 8ubranges more than type integer - a practice they 3Z165 3Z166 3Z167 -3Z168 -3Z167 and so on. :z ought to be employing anyway. (Doing the right thing for the wrong motives still reaps the rewards of virtu •••• ) ACKNOWLElJJEMENT The technique reported here is due to Barry smith, Oregon Software, and is used in (at least) the Pascal-1 X1.2 compiler. Its discovery was prompted by the Pascal Validation SUite. Xhis is of course entirely erroneous behaviour and should not be tolerated. The problem is, of course, that the value of the for-control-variable has overflowed the integer representation, and in the case cited the overflow is simply ignored. If the overflOW causes a program abort, the user might be slightly more satisfied at knowing of the implementatfon deficiency, but will still note that perfectly correct Pascal statements are not acceptable ••• (Reducing maxint by one is an ugly solution.) 1979 September 15 ~(l~ it easy to avoid this problem. However, in most mini- and micro-comp-'ters -0 Checklist o. SOLI1TIONS In some compute~, for example the Burroughs E6700, the architecture makes en rn Arthur Sale DATE. -l rn Of the information provided. IMPLEMENTOR/MAINTAINER/DISTRIBUTOR. Whatever, but give a person, an address and a phone number. If the source of information is not the person named, give the source too. 1. it may appear to be very difficult. 2. MACHINE. ..... Obvious. One solution is to substitute a "trip-counter" in the implementation as the loop-controlling value; another is to use the code-template: Source sta temen t .t£J:. v : - e1 :!i£. .2 sl!J.. body; Code template templ := e1; f a temporary location§ temp2 := e2; {another} i l (temp1 <= temp2) :!:JJ£1. begin v := temp1; goto 22; { violates Pascal rules 4. J repeat v := succ( v); 22: body; un til (v temp2); end; Recently, I noted a very simple solution which is applicable to a large class of hardware architectures, notably those that use the conditioncode and conditional-branch structures. The equivalent code template in pseudo-Pascal is: temp1 := e1; temp2 := e2; v := tempJ; Any SYSTEM CONFIGURATION. required, eg operating system. 3. DISTRIBUTION. 5. DOCUMENTATION. 6. MAINTENANCE. known limits on the configuration or support software Who to ask, how it comes, in what options, and at what price • Specify whatever there is. Is it unmaintained, fully maintained at a profit, or what? 7. STANDARD. How does it measure up to standard Pascal? How? Quality? 8. MEASUREMENTS. 9. RELIABILITY. 10. DEVELOPMENT Is it a subset, or extended? Of its speed or space, or relative to other systems. Any information about field use, or sites installed. METHOD. Outline: to tell what parentage it had and what it 1s written in. 11. cD "cD LIBRARY SUPPORT. Any other support for the compiler in object linkages source libraries, etc. -0 to Fortran, NOTE: Pascal News publishes all the checklists it gets. Implementors should send us their checklists for their products so that the 10005 of committed Pascalers can judge them for their merit. Otherwise we rely on the rumours. J> G"l rn ..... o O"l Machine-Dependent Implementatlona PAbYTKA (TIIK, CR, IlK); (ft r)I,e THK - TeKCT npOrp8MMH "HOBOro" KOMllliJiRTOpS, This section summarizes the information we have on Pascal implementations since the last issue, in checklist format whe~e poS.ibl~· } CK HIt - B, BI, B2: BOOLEAN ,~ Apple Computer: Apple II (Cupertino) KO)I.H "CT ; (/J en !M. involving interpretation of a modified P-code instruction set. ll. FALSE!!) (:'I nepl!:ie lr.l8 :SU30BB npoll8,lil"P!i IlFi'liEffiiTb 06e':IIeqe~ paCKPYTl\1. .lJ.Mee itH.9'f npo:eepia np:lBW"..HiCC'rE ]I BO:>:.tOllI'UlG- ilCnp3.SJ1eaJU:I .d systems on order not reported. 10. IlHaqe~ r!lpe!!.t llP~-:-lF.!::IHTb .ll but KOPPEKTI-tPOBATh: ••• ClC (oco6CHno. eCAn eK - STO RO.:r.. "ororp::aCJlilpOn.:1!iHlJ.:!'· ,Il; lFIGURI>;TION ECLIPSE must have FPU or EIIU Minimum of 24K words user memory ROOS REV 6.1 or greater DISTRIBt1rION Executable obi ect roodules and documentation are supplied on 9-track 800 BPI tape in RIXlS 'duro' format. The rost is $150.00 to cover our mailing and dU]Jlicating costs: ..... C> 00 ADS PASCAL Bulletin OCClMENTATION Machine readable documentation and operating ?rocedures are supplied on the tape, however, it is recommended that the user obtain his own copy of Pascal Users Manual and Report. --'lAINI'EN1INCE roLICY aug reports are welcome but no formal comni tment for support can be made at this time. Extensive testing of the product has been done and all known bugs have been eliminated. '3TIINDZ\RD PI\SCI\L P4 subset MEA'3UREMENT'3 Compilation Speed: 'Nord Size: Real lIrithmetic: Integer lIrithmetic: Set Size: Execution Speed: 300 chars/sec (400 lines 1Jer minute) 16 bits Uses 32 bits Uses 16 bits 64 bits lIpproximate 1y the same as the code produced by the Data General FORTR1IN V compiler 24K words Minimum Memory Needed: Gamma Technology, Inc. now has available an ADS implementation of PASCAL based on the Lancaster compiler. The distribution package presently consists of sources and binaries on 9-track, 800 bpi magnetic tape, an 8-page document and one copy each of the RODS "User's Guide" and source manuals (for background information). -rhe compiler itself and math routines have not been altered in this release. We plan to do a major revision of the ADS compiler by July. release will include: This - fixing known P4 compiler bugs - conversion to hardware floating point arithmetic - expansion of the character set to the full ASCI I set - more complete documentation Feedback from Release I users will also be included in the update. RELI'illILITY MOe PI\.SCI\L Compilers are in use worldwide, and are 1Jerforming very satisfactorily. I\.t present no known bugs exist. The prlclng schedule for the ADS Lancaster/Berkeley PASCAL Compiler is as follows: DEVELOPMENT !oIE.'l'HOD Develo1Jed from PASCAL P4. The heart of Version 4 consists of approximately 30K bytes of near optimum coding of the Standard PASCI\L-P4 P~DES. A small but powerful interpreter which executes the P-COOES allows the entire compiler to occupy less than 17K words of memory thus alleviating the necessity of overlaying, swapping or any other virtual memory scheme. An efficient post-processor along with standard Data General utilities and a run-time library sUP?lied on the ta1Je combine to produce an executable core image file. Release I (immed. delivery) Release II update to Release I customers (7/79) Re 1ease I I to new ADS cus tomers (7/79) $250.00 50.00 300.00 Less $40.00 for previous purchasers of the Lancaster Compiler sources (we are passing on the savings to those customers who have already paid Lancaster's royalty). suproRl' The system is totally self-contained so that no Data General libraries are needed. LI13AARY Release I for Lancaster RODS source customers DG Eclipse (Gamma Technology) Dear Andy: March 14, 1979 Gamma Tech is happy to announce the completion of our effort to convert the University of Lancaster PASCAL Compiler (RDOS) to Data General's new ADS (Advanced Operating System) on their ECLIPSE and M600 seri es. I enclose some information we are getting ready to send to the press, PASCAL con tacts and cus tomers, and a copy 0 f the 8- page document for the ADS PASCAL Compiler. Pete Goodeve in Berkeley is responsible for the conversion and is working with Gamma Technology on its distribution and maintenance. The compiler itself and the math routines are the same Lancaster versions in this release. We are committed to a major update as detailed in the enclosed bulletin. 50.00 Release II for Lancaster RDOS source customers (if Release I has not been purchased) 260.00 Once again, we ask that California customers add the appropriate state tax or enclose a resale certificate form. Foreign customers (except Mexico and Canada) should add $5.00 for additional mailing costs. O. Date: 1·larch 1979 Version: 1.00 1. Distributor: Gamma TechnoloQY, Inc. 2452 Embarcadero t'lay Palo Alto, CA 9430"3 (415) 856-7421 niX: 910-373~1296 Also I enclosed a checklist for the PUG News, plus some other miscellaneous PASCAL items that have come our "lay. Implemented and maintained by Pete Goodeve 2. Machine: Data General Corp. ECLIPSE and 11600 Series machines 3. System Configuration: Yours sincerely, Ali ce Dawson Gamma Technology, Inc. $210.00 Release II update to Release I customers (7/79) AOS Rev. 2.00 or later 96 K core memory Floating Point Hardl,are I-' o <.D 4. Distribution: $300 package includes sources and binaries on 9-track, 800 bpi magnetic tape in AOS dump format and documentation (see point 5). 5. Documentation: Currently inc1 udes 8 Also included are one copy each internals manual for reference. strongly urged. PASCAL.DOC and 6. 7. page AOS PASCAL document and keysheet. Lancaster (RDOS) "User's Guide" and User purchase of t1anua1 and Reoort is PASCAL.KEY are machine-retrievable. Maintenance Policy: Gamma Technology is committed to a ~ajor update of this compiler (extendir,g character set to full ASCII set, math routine ~on version, fixing P4 CPlpiler bugs). I.e encourage bug reports and wlll distribute fixes and modifications. Standard: PASCAL P4 subset accepted. from Lancaster's ROOS version. Compiler itself is currently unchanged 8. Measurements: Since AOS is a multi-user/process system, all time measurements are subject to change depending on what is going on in the system. These measurements were done on a quiet system, e.g. PASCAL was the only user. Approximate Approx. P-code Executable Compi 1a ti on Conversion and Source Si ze Prgm. Fi 1e (in bytes) Time (sec) Assembly time Program Size (bytes) Begin/End Program Graph (Output) RGCO (example in User's Manua 1 and Repo-;;nCountchars (Input, Output) Roman # Conversion (Output) Primes (Output) Li fe (I nput, Output) P4Compi 1er 26 301 10240 10240 10 330 727 765 10240 10240 10240 10240 12288 57344 14 11 10 14 22 10:33. 1154 3060 116515 Begi n/End Graph 16 14 17 23 44 13: 14 (min:sec) 4 RGCD Countchars 9. Reliability: The first site has been running for about 3 months. There are now 5 sites. ['Ie anticipate that the system will be fairly solid because it is based on University of Lancaster's RDOS implementation (now over 130 sites worldwide). Using Graph as Input - 3 Using Life as Input - 5 Roman Primes Execution Space - The default setting of the compiler allocates 4K bytes for the stack and heap space. This can be changed at either c~m~il e or run time by using command switches. Options range from a mlnlmum of 2K bytes to the maximum space available. A11 of the sma 11 programs executed above were compil ed with the minimum stack/heap space. At run-time they all took 6 pages of unshared memory. A page is 2K bytes. AOS allocates memory to processes in page increments. In comparison, SCOM (compare 2 ASCII files), an AOS utility program, takes 3 shared and 5 unshared p2'.les of memory. Compilation Space - The PASCAL compiler under I\OS is a 32K fiord swappable process. = en 10. Development Method: P4 Compiler (Wirth) used is same as Lancaster version. The interpreter (DG assembly) was rewritten for AOS. ALGOL libraries no longer required as AOS itself is now the run-time monitor. Effort took about one person-month by a very experienced person. 11. Library Support: External procedures and libraries can be compiled separately and later bound in with a main program. Intermediate P_ code, object binary, load map, and symbol table files can be retained. AOS provides library file editors. DG Eclipse (Rational Data Systems) 12 16 Execution Time (sec) Program As the space and timir.g figures demonstrate, the larger programs are, tre more efficient PASCAL becomes. For examrle, a lower to upper case converter in PASCAL runs in 6K while a similar program in PL/l needs over 25K. Rational Data Systems 21 June 1979 245 West 55 Street New 'rbrk City 10019 212-757-0011 (/) Dea rAndy, Ene 1ased is a copy of our lit-page brochure desc rib i ng au r Pasea 1 implementations for Data General computers. It is available free of charge to anyone who wr i tes to us request i ng a copy. Fee 1 free to dupl icate any portions of it for any purpose you please. en -u -I en We have five different implementations for various Data General configurations. I have attempted to summarize them per your standard format: O. OATE/VERS ION New. Availability of the various versions as follows: ADS: RODS/DOS Single User: RODS/DOS Multi-Terminal: RODS Multi-User (via remapping): RODS/DOS Multi-User (via swapping): 7/79 8/79 9/79 10/79 11/79 1. 0 I STR I BUTOR/ IMPLEMENTOR/MA I NTA I NER Rational Data Systems 245 West 55th Street New York City 10019 USA 212/757-0011 2. MACHINE Data General Eel ipse, Nova or microNova. All configurations and optional instruction sets supported. 3. SYSTEM CONF I GURAT I ON ADS, RODS or DOS operating systems. Single-User DOS will run with floppy disks. All others require standard system hard disk. -u J> G) en which includes an operating system, text editors and other 4. 0 I STR I BUT I ON Media: a. 9-track 800bpi Magnetic Tape b. Data General Floppy Disk c. 5M byte Top-Load Disk ($200 extra) Version 5. DOCUMENTATION User Manual. We simply used their (very good) compiler as 11. LIBRARY SUPPORT We offer no assembler language interface or library capability at this time. Both may be influenced by customer reaction. The S. S. Renewa 1 Li cense AOS RDOS/DOS Single User RDOS/DOS Multi-Terminal RDOS Mu 1t i -User (Remap) RDOS/DOS Multi-User (Swap) utilities. a starting point in the development of our systems. :z: rn speeds of the comp i 1ers are such that the INCLUDE fac i 1 i ty we 400 250 300 500 500 3,500 2,500 3,000 4,000 4,000 provide is an adequate substitution for a subroutine library. A major feature is that compiled code is immediately ready for execution. There is no use of any binder, loader or 1 inkageeditor util lty. These util ities are often slower than the compilers themselves. The compiler can compile itself in 8 minutes (see #8) and the output is immediately ready to run. Distributed both hardcopy and machine-readable. The current version describes differences from J&W and proposed standard as well as operational details. All five versions are source and p-code compatible thus permitting full cross-compilation capabilities. The manual will evolve to eventua 11 y become a camp 1ete 1anguage reference manua 1. 6. MAINTENANCE POLICY Thanks again for your great work. Initial license includes one year subscription to software updates and fixes. Renewable at the above prices. These are fully supported products. All bug reports accepted. Enhancements al ready underway. We wi 11 be dependent upon customer and marketplace feedback to help determine direction. Sincerely, /])62(3 7. STANDARD Used Jensen & Wirth and proposed standard as guide. Extensions include STRING and DECIMAL data types, READONLY and APPEND file accessing, random file positioning via SEEK procedure, TERMINAL files for interactive applications, CLOSE and PURGE procedures to control file disposition, DATE and TIME procedures, generalized procedure SYSCALL for host system interfacing, SEGMENT procedures/functions for automatic load-on-call handl ing of large programs. See #10 for insight into other changes. Douglas R. Kaye President C/l rn Digital Equipment DEC PDP-11, LSI-11 -0 -l rn {--See also entry under Zilog Z-80, Darmstadt--} :::;: to 8. MEASUREMENTS Compilation speed: Compilation space: Execut i on Speed: Execut i on Space: 355 chars/sec (AOS Ecl ipse S/130) Compiler compiles self with 16kb avail. Compiler compiles self in 8 minutes. Interpreter (with all transcendentals, etc.) less than 12k bytes. byte or i ented. P-code is rn DEC PDP-ll (Berkeley) ;;0 Mike O'Dell reports on 79 June 5 that William Joy of Berkeley max Pascal is ce\ol(lting i t for the new portable code generators of the C compiler. This will mean that Pasc.l:ll, '-, and Fortran are all code compatible and share the same library. f-' cD ....... cD 9. RELIABILITY Excellent (but still new). for AOS version. All As of 6/21/79, two test sites 10. DEVELOPMENT METHOD We began with the UCSD Pascal upon P2. DEC PDP-ll (Stanford Systems Corporation) known bugs fixed. (TM) compiler which was based We made major changes, enhancements and deletions. The hypothetical p-machine has been greatly modified. Our first step was a cross-compiler running on a UCSD-based z-80 microcomputer. This compiler compiled an Eclipse version which was then moved in object form to the Ecl ipse. Finally the source version was moved. The interpreters were developed on the -Ecl ipse. The process has required 14 person-months to date. The impelementors have had previous experience in language implementation and compiler design. The compilers are all written in Pascal. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Stanford Systems Corporation, University Avenue, Palo Alto, California 94301 (415-321-8111). 2. MACHINE. 3. SYSTEM CONFIGURATION; 4. note that this is NOT the complete UCSD Pascal (H1) System 1020, 525 DEC PDP-11. DISTRIBUTION; 5. DOCUMENTATION; 6.MAINTENANCE. Not known. 7. STANDARD. "Significant syntactic generalizations: ELSE clauses in CASE statements, embedded assignments in expressions, substitution of expressions for constants, labeled END's for error-checking, relaxation of parameter- passing restrictions, return of additional function value types. 1I { Some of these hardly seem good generalizations ... 8. We have secured proper 1 i cens i ng arrangements for the UCSD Pascal compiler through Softech Microsystems, Inc. Please Suite MEASUREMENTS; 9. known. RELIABILITY; 10. DEVELOPMENT METHOD; 11. LIBRARY SUPPORT. Not DEC PDP-ll ( UCSD Pascal(TM) Events have again overtaken UCSD Pascal. Facom 230-455 The name has now been registered as a trademark of the Regents of the University of California, and has been licensed to camllErcial profit-making firm. The address for UCSD Pascal matters is now SofTech Microsystems, Inc. 9994 Black Mountain Road, Building 3, San Diego, California 92126 (Phone not known) All of the UCSD's regular services in support of the UCSD Pascal System transferred to SofTech Microsystems, but the University will continue to work in but related areas. { Information derived from UCSD Institute for Information Systems Newsletter #4, known as the Swans ong } a single The following news of the use of Pascal in Japan may be of interest, especially the target language the compiler generates. { I always said that Fortran was a medium-level assembly language. } have been distinct, popularly FACULTY OF ENGINEERING YAMANASHI UNIVERSITY DECUS TAKEDA·4, KOFU, JAPAN I"ay 5, 1979 This is a brief report Pascal SIG Chairman is John Missoula, Montana 59812. PDP-ll compilers, and PDP-8 on DECUS Pascal SIG, for Digi tal's Pascal users.. The current R. Barr, Dept of Computer Science, University of Montana, The SIG has information on a selection of DEC-IO/20 compilers, compilers. The Chairman's phone number is (406) 243-2883. The Pascal SIG Newsle-tter has a new editor: Charles A Baril, PO Box 1024, University of New Orleans, New Orleans, Louisiana 70122, or Pascal SIG c/o DEGUS, One .Iron Way, MR2-3/E55, Marlboro, MA 01752. The SIG held a $ymposium in New Orleans in April, and was addressed by Kathleen Jensen (of Jensen & Wirth fame) on "Why Pascal'1", based on her experiences with Wirth and Ammann. There was also a presentation on Pascal for the VAX series. (See Bill Heidebrecht's report in the Here and There Conferences Section.) In Vol 3 No 1 of the SIG Newsletter we discovered the following highlights In a letter from the SIG Chairman: "DIGITAL has not yet committed to offer a Pascal compiler for any of their machines. Digi tal is interested in new' languages which will provide better programming environments, but is committed to supplying a complete environm.ent including libraries, debuggers and other programming aid,s. When Ada, the DoD embedded systems language, is defined, DIGITAL will be required to implement complete programming environments for that language. The amount of work required to implement any new language may prevent DIGITAL from offering both Ada and Pascal." If this is so, we echo Gordon Bell's comments: Pascal users on DEC machines will have to do it themselves. What about some concentration on tools now we have a lot of good compilers floating around? The Pascal SIG Library tape is maintained by Bill Heidebrecht, TRW DSSG, One Space Park, Redondo Beach, CA 90278 (213-535-3136). The library contains "Swedish Pascal" and "NBS Pascal" for PDP-lIs, and a number of utility programs. Bill makes a plea for DEC users to check with the Local User Group first for a copy, otherwise check to see if someone nearby has a copy you can borrow, and only in last resort to ask the DECUS library or him for a copy. You can understand why. PUG and the DECUS SIG cross-reference each other as a service to Pascal users; after all we are here to help. However, we were perturbed to read in ~he DECUS SIG Newsletter (Vol 3 No 1 Feb 79) that Bill Page, responsible for Fortran, APL, and other languages such as Pascal on mid-range DIGITAL computers, large PDP-lIs and VAX-II, "did not see Pascal in its present form as a language suitable for implementation." {!!!} He "cited the lack of I/O capabilities similar to Fortran's as one drawback." Perhaps the 1000 DECUS SIG members will educate DIGITAL, especially as they are faced with the N machine architectures by M operating systems problem. Andy Kickel, Pascal ~ews Editor University Computer Center: 227 EX 208 SE Union Street University of r(innesota Minneapolis, MN 55455 USA Dear Andy. As a member of PUG. I would like to report Pascal activities at Yamanashi University, Dept. of Computer Science. We now use FACOrt; 230-45S (ten old year computer) with 160K bytes, where less than lOOK bytes available for user space. Therefore we only have a very primitive version of Pascal system. We usually make use of a hand made version of recursive structured Fortran (named Star) in coding system programs. See entry for GEC 4082 (Keele). -0 -l en r.ly undergraduate students (H.Harada. Y.Himeda, S.Oshiba and S.Takanashi) had an exercise to implement a Standard Pascal syntax checker based on the syntax diagram in Jensen-Wirth book (Springer 1974). Within two months they completed it in Star. and two of them (Harada and Oshiba) tried to extend it by adding a code generation phase. Generated codes were to be Fortran statements because of operating system restrictions, so that the total system turned out to be a Pascal to Fortran prepro~c~e~s~s~o~r~:~__~~__-, ~ Unfortunate thing for the students was that Star environment did not allow memory overlay, and the memory space shortage was serious problem. They found 41 pages of 2048 bytes are quite near the limit and full Pascal could not fit in there. As far as I understand they spent most of their time in reducing memory space in order to include more facilities. I was happy to hear that after six months the final 83~94 bytes of code ran successfully. These two students are now working for Hitachi, hopefully with more memory space. Sincerely, Digico Micro 16E C/l en 1;i1,"",(';,a ~::.'~~) Makoto Arisawa Associate Professor Dept. of Computer Science -0 ~ G"> en I--' I--' N General Electric GEe 4082 Honeywell 6000 / Series 60 Level 66 (Waterloo) Are there any more machines waiting to be conquered? Sometimes it seems as though there are no more mountains to climb! } University of Keele On 79 May 13 Peter Rowley sent us a note saying: "As an undergrad at the Univ of Waterloo who had to struggle with Pascal Version 5, I appreciated the comments of J.Q. Arnold in #11. Pascal 6 is, however, quite pleasant to use and fairly reliable. There are times, though, when one is reminded of the strong influence of the language B on the compiler; this influence sometimes makes portability a problem. (eg the 'procedure main' convention and dynamic file opening." • Keele, Staffordshire, STS SBG Department of Computer Science Telephone: Newcastle (Staffs) (0782) 621111 Telex: 36113 UNKLIB G University of Waterloo 12 July 1979 I\pril Jr, Waterloo, Ontario, Canada J979 N2l 3G1 Dear Sir, It may interest your readers that we have recently implemented PASCAL on a Digico Micro l6E and a GEC 4082 at Keele. The implementations are based on the Zurich P4 compiler and both systems are interpretive. The GEC 4082 system accommodates the full BSI draft standard with the exception of procedural parameters. It is intended to eliminate this exception before october 1979. In addition, random access files have been included as has the ability to connect PASCAL files to actual devices under the program's control. Other work being carried out is the implementation of a high quality run-time diagnostic package allowing examination, by display, of linked data structures and the creation of a 'user friendly' interactive system for the typing in and correction of PASCAL programs. The implementation on the GEC 4082 is used extensively for teaching and research in the Computer Science department. The availability of PASCAL on the GEC 4082 has received a very warm reception from many users of Keele's computing services and it is envisaged that the slow response from the compiler when the machine is saturated with, for example, a teaching class will be eliminated by the imminent completion of a true PASCAL compiler which will permit the compilation and run-time systems (which are written in PASCAL) to perform five or more times faster. Mathematics Faculty Computing Facility Director: 519,885-1211 Dear lncly: r PUG just receive~ rea~ ~n Pasc?l News !l2 and fecide~ upcate on the stcte of it ~as Pescol/~h. time J am enclosing an uFdated cbecklist. Pascal st?ncords committees appeer to be ~pringing U[ allover. Pecause of the hia~ rrohebility of disagreement between the re~ulting sten~ards, J viE~ this ~evEloFment ~ith some apI=rehension. The pCEBmble to t~e rretty print Frogr~~ (s-?) C12i~s that the publis~ed rroqrem is an exa~Flp of its o~n rEsults. However the "if-then-ei~e-if" eecuenc@ in routine "oetchar" violates rul~ 3 of the doc~mpntation. Fit~er the F~ogrem ~oeE not run throug~ itself unc~eng€~, or t~e eocumFntation is wrong. Neit~er situation 8reaks well for tbe rrograw. Yours truly, l-lcr. PO\o.:l€r Procuct furport O. Date/Version Release 6.1 of Pascal/66 was distributed in January 1979. Yours faithfully I. Distributor/ImplementorfMaintainer P rn '" -I {--The AAEC compiler running at Amdahl--} rn 3: The following letter relates to getting the Australian Atomic Energy Commission compiler up and running on an Amdahl system. The User Guide referred to was received by PUG, so :i,.s presumably available on request to Amdahl. April 30, 1979 J. ~!. Tobias, G. W. Cox Australian Atomic Energy Commision Systems DeSign Section New Illawara Road Lucas Heights, N.S.W. Australia Dear Jeffrey and George, Thank you for the tape containing the Pascal 8000 system. I had very little difficulty bringing the compiler up under I made a few minor changes to the run-time system and added a front end that handles the CMS command interface. VM/370 on our Amdahl system. I'm sorry, but I don't have any bugs to r'~port. The only difficulties I encountered were due to the somewhat limited support VM/CMS provides for as macros and services. While installing the system, I attempted to keep to a minimum the changes to the compiler itself as well as to the run-time system. I did this in the hope that I can install any future to rn ;;0 version with a minimum of work. I'm enclosing a copy of the !lUser's Guide ll I put together and a summary of what I did to install the system. Sincerely, Robert S Lent Amdahl Corporation Department of Computer Architecture 1250 East Arques Avenue Sunnyvale, CA 94086 co: Pascal User's Group, c/o Andy Mickel {--A new IBM implementation: Michal Iglewski, Poland--} Dear ;,:r. 1ficlc€ 1 At the end of 1078 we hav@ 28 Febr!1[\YY o~tained the 1~7'l imple~entation of Pascal for 13:,: 360/370. Tbe Syste::: Pascal 3GD is derived from tt.e Pascal COL:~iiler developed by ',:irth and Amr.:wn at EffH Zurich. 1'Le preliminary version 1:;.a8 been distributed to several 8uropcnn centers. also used in sone Polish Pl1iversities. of its 2elow It is 1,','€ C 'cl0se Cistri~~tiDn. 2. Machine: IBM 360 and IBM 370 - compatible machines (The implementation is done on a 360/50) 3. System configuration: operates under OS. The monitor may be moa~fied with minimal effort ~o run under VS,MVS etc. Minimal required memory is 110K. Standard OS object modules are generated. 40 Distribution: the Pascal 360 system is distributed on a magnetic tape at the density of 800 or 1600 bpi. On the tape there are: - description of the installing procedure - source version of the system (Pascal and assembly code) - binary vers~on of the system - program to update Pascal programs. The tape should be supplied by the user. ~he Pascal 360 system is distributed free of charge with the right 'of exploitation till the end of 1981. After that period it is possible to prolongate this permission to unlimited time. 5. Documentation: 8 supplement to the Revised Report (not available tu machine retrievable fODID) 6. Maintenance policy: The system will be in distribution at least till 1980 by ICS PAS. At the beginning of 1980, the = en This was done to allow efficient code to be generated for a processor like the 8080. MicroPascal/80 is a pure subset of the UCSD language and contains the following omissions from UCSD Pascal (1.5,11.0): No LABEL declaration (and therefore no GOTOs). TYPE declarations for ARRAYs only (to allow passing arrays as parameters). No RECORD declarations. No FILE support (because most systems which would utilize this will not have a disk to need support). Only singly dimensioned ARRAYs· PACKED is ignored on ,BOOLEAN ARRAYs· PROCEDUREs and FUNCTIONs not allowed as parameters, ALL VARiables and procedure parameters No STRING data type No UNIT capability. - 7- :z and Reliability 1) Writing and debugging our programs in Pascal en 2) efficiently translating the programs for the target machine using MicroPascal/80. (/) MicroPascal/80 Language Definition * Lega 1 Cons tructs: CONST TYPE (ARRAY's only) VAR PROCEDURE FUNCTION IF ... THEN ... ELSE CASE ... OF WHILE ... DO REPEAT ... UNTIL FOR ... TO ... DO FOR ... DOWNTO ... DO Measurements Compilation speed (executing on a 4MHz ZBO) is 1000 chars/sec (note this number was derived from 400 Lines/Min * average of 15 chars/line. Compilation space is a minimum 56K byte system. Execution speed is estimated to be from 3x to 5x the execution speed of the same program executing interpretively under UCSD system. Execution space is a minimum of 1 .5K bytes and grows from there depending upon the user's program and run-time routines needed. Compactness of the code is from 2x to 5x as large as the UCSD P-code but the tradeoff point comes at about 24K bytes since MicroPascal/80 does not need an interpreter or operating system to support programs. - 8- We have developed this product to make our software development efforts more efficient. We find that writing programs in Pascal and translating them for the target machine (previously done by hand and now utilizing MicroPascal) is much more efficient than working only with assembly language'. We have now made two giant steps in developing ROMable computer programs: -0 -1 en * Single dimensioned ARRAYs * Integer, Character, Boolean and Real data types Intel 8080A (DMC Division of Cetec Corporation) The stability of the system seems good to us at this point. We (and our customers) have been using the compiler for about two months with no major problems. First release to a customer's site was 79/06/05. - 9 - (/) en * Complete expressions including the operators: +,-,*,DIV,/,MOD,AND,OR,NOT c; DMC November 22, 1978 Development method Dear Dr .. Wirth: This compiler was written from scratch in Pascal. The total effort to implement was approximately 4 person-months. The implementor had previously implemented about a dozen different compilers for various languages. - 10 - Library Support We supply no library of support routines but the user can by using EX[ERNAL procedures build a library of supporting routines. We have successfully used MicroPascal/80 to generate "assembly language" subroutines for use in a library. Prospective users should note that since the compiler produces assembly language, MicroPascal/80 can be used to generate "subroutines" as well as complete programs. It is with pleasure I write to you announcing the release of a new software product by DMC Division of CETEC Corporation. Our software development staff has produced a PASCAL compiler to run on our 8080A microcomputer floppy disk system, the CommFile. The details are: l. 2. Implementation Machine Marketing Department DMC Division of CETEC Corp. 2300 Owen Street Santa Clara, CA 95051 (408) 249-1111 8080A -0 J> G> en ...... ...... 00 3. System Configuration DMC CommFile 130 with 44K bytes of RAM and dual floppies. 4. Distribution DMC CommFile 130 with 44K bytes of RAM, dual floppies, and PASCAL compiler retails for $6320.00 U.S. 5. Documentation PASCAL Users Manual and Report, second edition. DMC PASCAL Operators Manual. Intel 8080 (TSA Software ASP) 19 IUHLliU1l5 201 2b~-79b1 CT. DbL.bB []~., 'lHJr\J~D~, Maintenance Policy Full maintenance. 7. Standard PASCAL Users Manual and Report, second edition. 8. Measurements Not yet available. 9. Reliability Stability excellent. 10. Development Recursive Descent Compiler. II. Library Support 79.3.9 Dear Andy, and fellow Pascal - Ligraphers (caligraphy is the art of fine hand-writing and Pascal is the .••..•••.•...•..•..•. ) Standard PASCAL Procedures and Functions. You will be kept informed as we develop PASCAL further at DMC. As you can see from the date of my PUG renewal check (78.11.7), this letter has been a long time in the finishing, I hope it is useful. Very truly yours, It is important that the reader understands the machine environment I work in, because it is very different from the usual Pascal environment. I work primarily on systems programs for micro-computers. We deal with "BIG" micros - 3~K Bytes or more, at least a mini-floppy disk (80K)and usually a video display terminal and printer. \-Ie sell operating systems and related support software, with occasional applications projcctsa Phil Devin Manager Marketing Support Intel 8080, 8086, Zilog Z-80, Z-8000 (Microsoft) The net result is an machine environment with: ANSI and ISO Pascal. The target processors are 8080, Z-80, 8086, Z-8000 and LSI-ll, and will run under CP/M on 8080 and Z-80, and is expected early in 1980. There appear to be some un-needed extensions; the following list is selected rn ~ 6. The Microsoft Pascal is to be compatible with UCSD, z from (1) (2) (3) some documentation we received: - predefined type WORD (16-bit unsigned integer) (??) - attributes for variables: STATIC, INITIAL, ORIGIN, REGISTER, INTERNAL, EXTERNAL - capabilities from the C language {!!} embedded assignment operator increment and decrement opera tors - control structure extensions {when w~ have too many. already } BREAK and CYCLE in FOR, WHILE & REPEAT (4) (5) (6) Very limited memory Very limited and slow disk storage Medium speed but totally unaided processor 8080/Z80 (no I/O or auxiliary processors) Minimal operating system support, of the CP/M variety. (no protected anything - memory or I/O) Very low budget projects, with no or minimal institutioncl support Absolute reliability requirement (business software) with very naive users. RETURN statement FOR variable IN set DO statement - address functions PEEK and POKE Fortunately, the language will be structured in levels, and at the best level looks rather like Pascal ought to looka At the "Extended" level and the "System" level these rather useless and dangerous features are enabled, according to the manual to give "the ability to easily do in Microsoft Pascal those operations that are easy in assembly language"a We always thought that Pascal was supposed to preserve us from undesirable practices and lead us away from temptation. Readers of the News may like the following two examples from the SYSTEM level of the Microsoft Manual; we do not: ALPHA [I.= (BASE+lNCR(Q) )] :=ALPHA [I*2-1]+J POR IX:=l TO J.=(LIMIT + 2 * INCR) DO ••• Apart from these additions, the standard level of Microsoft Pascal looks like being a good job. All in all, a rather harsh operating environmenta As a result, most programming is either assembler or assemblera Business software is done primarily using a rather poor selection of Basics. I've been using Pascal as a design language since 1975 when Pascal - P2 came out, but haven't had a compiler to actu0Jly usea When useD Pascal came out, I had hopes for it, however it does't run within our software environment. It is interpretive cnd does not provide escape to assembly code when necessary. At that point I broke down and initiated our "ASP'! project. "ASP" (a small/ system Pascal, TM -TSA Software) is a full compiler, and outputs 8080 assembler for use with our 8080 linking assembler. (much to most people's amazement, most micro computer assembly still written with absolute non-linking assemblers.) detailed in the attached implementation checklist. code It is is 8. Measurements: 9. Reliability: The discussions herein are related to our experience with our compiler and using Pascal in a general system environment. In some cases, our own solutions are discussec; in others, a plea for suggestions is made. find the current discussion in the popular computing periodicals abut Pascal, rather amusing; since I see a vast difference in the place of Pascal vs Basic. Pascal is not a friendly language, in fact to be so, would fail it's primarily requirement: To allow the programmer to produce functional, reliable, maintainable programs. Basic, on the other hand, is appropriate to an environment where laxity and interactive processing is more appropriate. The problem as to when a program crosses the dividing line 2nd how to place it in the correct environment initially is the critical item, but beyond the scope of this letter. 10. Recursive decent technique Coded in 8080 machine code Outputs macro·s, table driven for different macro formats of assembler code Approximately 70K Bytes of source code (2K 1 ines) 3-4 man-months of super programmer time. 11. Library / Support Linkable support library for: Variable length strings 32 Bit / 16 bit integers,12 digit reals Sequential and block random I/O,recursive coding. Source file include with some supplied external declarations Utilities: Symbol cross-reference, Documentation comment printer The TSA Software 'ASP' (tm) compiler is a minimal implementation of Pascal. It is intended to be the bottom end of a line of compilers. 'ASP' - A small Pascal or a system Pascal provides basic functions for system programming and acts as a basis for application programming. Date / Version: 1. Implementor: 79.2.5; ASP/l version xOO.14 Richard Roth TSA Software, Inc. 39 Williams Drive Monroe, Connecticut (203) 261-7963 2. Machine: 8080 / 3. Configuration: 4. Di st r i buti on: 5. Documentation: 6. Maintenance: 7. Standard: (/) Development Implementation Checklist 'D. Compile: 230 line/min. to 8080 Macro assembler Total: 24 line/min. to linked executable code 10K Bytes for compilier Execution: Full 8080 machine code Library size: String- 1600 bytes 1/06200 bytes Real1800 bytes General- 260 bytes Still in development Rev XOO.GO since September 78 2 Alpha test sites since December 78 Interdata 06408 Z80 / 8085 Micro Processor 32K •. 64K Bytes At least one floppy disk Running CP/m, CDOS, IMDOS, TSA/OS or any other compatable operating system ALPHA test copi es onl y being suppl i ed 40 pages of test notes, and library calling sequences, 10 sample programs Not defined yet Major subset of Pascal (A) All program structures except CASE, WITH (B) Only scalar variables and arrays. Pseudo--Structures using 'CaNST' offsets and 'type casting'. Value procedure parameters only Extensions: Tex t file incl ude External and module declaration Static data initialization In-line machine code String functions: CONCAT, SUBSTR, etc. Bit-wise boolean on integers See Perkin-Elmer (change of company name). Modcomp II & IV Larry D LandiS, United Computing Systems, 2525 Washington, Kansas City, MD 64108 reports that Syd Weinstein (a co-worker) says that the University of Illinois School of Medicine has a ModComp Pascal. No other details. (78 Nov 17) Also Eugene N Miya, Pascal Development, Jet Propulsion Laboratory, 4800 Oak Grove Drive, Pasadena, CA 91103 (213-354-4321) reports that JPL is undertaking an effort to come up with a Pascal compiler for the ModComp II and IV. (79 Mar 08) Motorola 6800 Control Systems Inc, Kansas City, KS, seem to have a 6800 version of more information do we have. Nord-10 & Pascal. Sorry, no Nord-lOO Terje Noodt Computing Center, University of Oslo Pb. 1059, Blindern Oslo 3, Norway May 14, 1979 f-' N CJ Dear Andy, Perkin-Elmer 7/16 (Melbourne) Could you please send me another copy of Pascal News number 13? In my copy pages 85 to 94 are missing. ~ running Brinch-Hansen's "Sequential Pascal" } TELEPHONE The work you have done for PUG and Pascal has been tremendous _ I can understand that you feel you've had the burden long enough. I only pray that PUG doesn't die. en Wniber.uitp of ;ffl:tlhournt (J) DEPARTMENT OF COMPUTER SCIENCE We have now finished a new version of Pascal for the Nord-10 and the recently announced Nord-100. A description is enclosed, together with a copy of the User Manual. Parkville, Victoria 3052 7th June, 1979. Dear Andy, I am writing in response to queries in the Pascal User's Nord-10 and Nord-100 Pascal O. DUE/VERSION. 79/04/23 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Implementors: P. Gjerull and T. Noodt, Computing Center, University of Oslo Pb. 1059, Blindern Oslo 3, Norway Distributor: Norsk Data A. S. Pb. 4, Lindeberg gard Oslo 10, Norway Maintainer: The 1mplementors and distributor in collaboration. Newsletter concerning Pascal on the Interdata 7/16. of your readers may be interested to know have included a description of our system in the form of implementation notes, and will welcome any inquiries that are made as a result of these notes. Yours sincerely, SYSrEM CONFIGURATION. Nord-10 or Nord-100 running SINTRAN III. A Pascal program may use up to 128K of virtual memory. 4. DISTRIBUTION. 5. DOCUMENTATION. User Manual (40 pages) describing use of Pascal system, restrictions and extensions. Machine retrievable. 6. MAINTENANCE. 7. STANDARD. Restrictions: Declaration of file variables in main program only. MARK and RELEASE implemented instead of DISPOSE. Extensions: Initialization of main program variables. Files may be opened dynamically. Separately compiled Pascal and FORTRAN procedures may be called. Several minor extensions and utili ties. JOSEPH LONGO, DEPT. OF COMPUTER SCIENCE, UNIVERSITY OF MELBOURNE, PARKVILLE, VICTORIA, 3105, AUSTRALIA. 8. MEASUREMENTS. MACHINE: 9. RELIABILITY. 10. 11. ..:-r7. ~T"':V j , 3. Good. --0 en ·1 / Nord-10 and Nord-100. Performance comparable to Nord FORTRAN (estimated). (J) en -l MACHINE. Norsk Data grade A (highest level). and some Hansen's Sequential Pascal running on our 7/16 since mid-1977. 2. From Norsk Data A.S. on floppy disks. You that we have had Brinch Joe Longo. Ene. o VERSION: Brinch Hansen's Sequential Pascal IMPLEMENTORS: Interdata 7/16, with high-speed ALU and 64 Kb memory DEVELOPMENT METHOD. Developed from the TRUNK compiler. Produces standard relocatable code (BRF). SYSTEM CONFIGURATION: LIBRARY SUPPORT. A set of external utility procedures to interface with the operating system. Home-grown "Hynos" disk-oriented operating system provides the host environment, but its support functions can be easily provided in a stand alone environment. 10 4 DISTRIBUTION: The original distribution tapes and documentation from which this implementation has been derived can be obtained from the distributor for a total cost of $US60. 5 the host environment. DOCUMENTATION: Cal. Inst. Tech., July 1975 (comes with the distribution tapes and "The Architecture of Concurrent Programs, per Brinch One of the prefix procedures defined by Brinch Hansen Hansen, Prentice-Hall. "RUN" J STANDARD: Sequential Pascal is a subset of Pascal. program, It !t is not an overlay in that, to the calling appears.ll~e a normal procedure call, but it is a very execution - rather than at load-time. In fact this is what makes the running of the scven··pass compiler f~~gihle. Some of the differences/ - no "gato" statements (and therefore no "labels") - maximum set size: 128 elements - no nested procedure definitions - non-standard input-output: I/O defined at compilation time through Hprefix procedures" - procedure names can not be passed as parameters in procedure calls. Perkin-Elmer 3220 (Champaign) Roger L Gulbranson, Nuclear PhYSics Research Laboratory, University of Illinois, 23 Stadium Drive, Champaign, IL 61820 (217-333-3190) reports that he is writing data acquisition software (to perform at a rate of 10000 samples/second) on his new 3220 written in Concurrent Pascal. He will also be improving the efficiency of the kernel the Pascal compiler's code generator. MEASUREMENTS: The seven-pass Sequential Pascal Compiler compiles at a rate of approx. 6 lines per second, but is 30% I/O bound within the Hynos operating system. The compiler requires a l6~17Kb program space and l2-l3Kb data space. Code produced by the compiler is interpretive. The average execution time of a virtual instruction is about 40 micro-secs. 8 RELIABILITY : Very good. 9 DEVELOPMENT METHOD: Sequential Pascal is an interpretive language developed by Brinch Hansen for use in writing utility programs for and as the job-control language of Concurrent Pascal Programs. The original interpreter was written in PDP-II assembly code and was transferred to the Interdata 7/16 with about one man-month of effort. Translation of the interpreter from the PDP-II into 7/16 assembly code was relatively simple. The difficulty encountered arose from trying to implement Sequential Pascal outside of its Concurrent Pascal environment. program. useful method for Ilnk1ng separately compiled programs at limitations are: 7 called enables a Sequential Pascal program to execute' another sequentia~ 6 This means that, apart from the basic procedu:es describ~d in Brinch Hansen' s book (see 5 above), all oth~r hbra:y routmes are entirely implementation dependent. It 1S concelvable that this facility may be used to link to FORTRAN programs, but we have no intentions of doing so. "Sequential Pascal Report", per Brinch Hansen, Alfred C. Hartman, notes.) LIBRARY SUPPORT: One ?f the featu:es of Sequential Pascal is that all library ro'!tlnes are deflned as "prefix procedures" at compilation time. Th1S feature has been used extensively to enable our Sequential Pascal programs to exploit a number of facilities available in Not only did we have to make our operating system respond to the system calls as would Concurrent Pascal, but also we found it necessary to investigate, at a very basic level, the operations of the Concurrent Pascal ~~~~~ll and GOLDEN RIVER COMPANY LTD en I'Tl -0 -I I'Tl Dear Andy, 17 July 1979 TelfordRoad BicesterOxfordshire EngiandOX60UL Telephone: Bicester (086 92) 44551 Having read your letter in Pascal News No.13, I am loathe to write , adding to your load, but perhaps the enclosed brochure of our Pascal Compiler for the RCS 1802 Microprocessor will be of interest to your readers. The language was developed by our Company in response to our own needs for an easy to use high-level language at present not available with the 1802 Microprocessor. We intend marketing the compiler, which requires use of RCA's full development system, on a World wide basis, through direct sales and via distributors. If any of your readers are interested in either purchase or distribution agreements, we would of course, be pleased to hear from them. The Compiler is priced at £1190-00 complete with documentation. Compiler in maintaining the working environment for program execution. These operations are transparent to the Sequential Pascal programs and unfortunately none of this work for implementing Sequential Pascal on its own is documented by the developers. Finally, the size of the Interdata Interpreter is about 4Kb (compare this to 2Kb for the PDP-ll) but includes all of the virtual instructions needed for interpreting Concurrent Pascal code also. ...... N M. J. DALGLEISH N { Oxfordshire } O. DATE. P-6800 PASCAL - CHECKLIST FOR PUG NEWSLETTER 1979 July 17 1. DISTRIBUTOR. Golden hgland. (08692-44551) 2. MACHINE. 3. CONFIGURATION. River Company Ltd, Telford Rd, Ricestl:>J."" Ox(q.r:,t-,',_i_'"·-7 ')"'-:(, 'Y" O. DATE/VERSION Version 1 released ~1ay 1979. RCA 1802 Development System. 4. DISTRIBUTION. 1190 pounds Distribution medium: floppy disk. 5. DOCUMENTATION. 6. MAINTENANCE. 1. 20k RAM, CDP18S Dual floppy drives, RS232-compatible terminal. sterling for licence of nominated system IMPLU1ENTOR/DISTRIBUTOR/MAINT AINER Lucidata, Oosteinde 223, Voorburg, Holland. only. Printed User Manual (not machine retrievable). 2. For forseeable future. MACHINE South-West Technical Products 6800 or equivalent. 7. STANDARD. Pascal subset implemented. No reaIs, enumerated or sub range types, no variant records, no binary 1/0, no integer or real i/o to text files, no nested procedure declarations, 64-element set limit, maxint=32767, no file declarations, packed not implemented. 8. MEASUREMENTS. speed given. 9. RElIABILITY. Compiles in 17k bytes, run-time support requires 2-3k byte kernel. DEVELOPMENT METHOD. 11. LIBRARY. SYSTEM CONFIGURATION Mini floppy disc lIIith 12K + 4K bytes memory as a minimum configuration, using the Technical Systems Consultants mini FLEX or FLEX 2 Operating System. No 4. Not known. 10. 3. DISTRIBUTION Lucidata. The cost is 300 Dutch Guilders (approx. 150 US dollars) for the compiler, the run-time system, utilities and demonstration programs on a floppy disc, together lIIith the documentation. 3-pass compiler with intermediate results to disk. None specif ied. (/) en --0 ---; Siemens 7-748 5. DOCUMENTATION en User manual. (Not machine retrievable). Gives details of the PASCAL subset, sufficient information on the run-time system to permit building of customised/ specialist systems, and specimen programs. A list of PASCAL books is included, and the address of PUG! See also Zilog Z-80 (Darmstadt) entry Southwest Technical Products SWTP6800 6. oosteinde 223 voorburg Matters requiring attention should be reported to Lucidata. Subsequent releases will include any 'corrections which may be necessary. telephone 070-862387 bank: a.b.n. account registration no. 7th June, 1979 ~1AINTENANCE voorburg 516610384 86871 the hague chamber of commerce 7. STANDARD Version 1 is a self-compiling subset of PASCAL. Principal omissions are records and pointers, with certain restrictions on type declarations. Version 2 (planned for late 79 release) will include more features. Dear Sir Please include the enclosed CheckList in your next Nelllsletter. Sincerely, Dr. N.W. Bennee 8. MEASUREr1ENTS Compilation speed: depends on the amount of memory in the configuration, but is independent of program size. A page mode (lIIhich is about half as fast as normal mode) is invoked automatically if there is insufficient memory for any program (e.g. the compiler) and its stack space. Speeds measured for self-compiling the compiler on a 1 l'IHz system llIith SliTP I1F -68 dual floppy discs are as follOl1/s: 32K bytes : 78 characters/second (130 lines/minute) --0 ;Io> Gl en 24 20 16 + + + 4K 4K 4K 44 characters/second 42 characters/second 32 characters/second 74 lines/minute) 70 lines/minute) 54 lines/minute) Zilog Z-80 Z110g have announced Z-80 Pascal at $950 f.rom 7.tlog -'it tn140 ar()b Road, Cupertino, California 95014. Very little more is known at PUG HQ. Execution speed: finds all 92 solutions to the Eight queens problem in 58 seconds, using the recursive alogrithm glven in "Algori thms+Data Structures=Programs", by N. Wirth. Execution space: between 3K and 4K bytes for the run-time system, depending on the number of different P-codes to be executed, plus space for the P-code instructions for the programs - typically.12 bytes per line of source PASCAL, plus stack space. 9. Il. RELIABILITY So far, excellent - but insufficient use by non-professionals to make a meaningful claim. DEVELOPMENT METHOD Two pass recursive descent compiler which generates P-code in fixed. length 4 byte format, executed by the run-time system.. Bootstrapped up from a much smaller subset of PASCAL. 11. LIBRARY SUPPORT Separately assembled routines may be linked in. See also Intel 8080 (SVA, Microsoft). Zilog Z-80 (Ithaca Audio Pasca1-Z) Ithaca Audio, POBox 91, Ithaca, NY 14850 (607-257-0190) have announced "the first Pascal compiler for the Z-80, and the fastest 2-80 Pascal ever ls flOW ready" (Byte, 79 July). The compiler requires the Ithaca Audio K2 operating system and 48k memory. native assembly code for the Z-80, which has to be assemhled thrnqi' Price: $175.00; distribution: 8" K2 floppy disk. The output ~.~,' is t',~ " Zilog Z-80 (Darmstadt) The folloWing letter was received by a PUG member on 79 Feb 5, from Dipl-Ing M. Instltut fOr Theoretlsche Informatik Fachbereich Informatik Oipl.-Ing. M. Becker 6100 Darmstadt. OO:«ulI~Dl1¥ %2{MagdalenenstraBe 11 Telefon (06151) 163 411 PASCAL Users Group c/o Judy ~lull i ns Mathematics Department The University Southampton S09 5NH Becker. Technische Hochschule Darmstadt 5.2.1979 (/) en "1J Sperry-Univac V77 (Irvine) ~ en Dear Mrs Mullins, Sperry Univac Minicomputer Operations has announce.1 3:1=umit t a llulti-task operating system for V77-800 & V77-600 minicomputer systems, supports Pascal as a component. Prices seem to be $6000 for Summit and $2000 for Pascal. Write to Sperry Univac Minicomputer Operations, 2722 Michelson Drive, Irvine, California 92713 (714-833-2400 X536) or London, NWI0 8LS, England or 55 City Centre Drive, Mississauga, Ontario LSBIM4, Canada. Tandy Radio Shack TRS-80 A UCSD Pascal System has been announced by FMG Corporation (PO Box 16020, Fort Worth TX 76133 Phone: 817-294-2510) for the TRS-80. The package costs $150 and requires a 48k I would like to inform you of a PASCAL-Compiler which is running on the following machines: IBM 370, SIEMENS 7.74S, DEC PDP 11 and PDP 15. Last year we finished the development of a compiler and cross-compiler for Z SO-minicomputers. In some sense our system is portable and therefore it might be of interest for other people. If you are interested in further information concerning this system please write to I-' cD "cD Technische Hochschule Darmstadt Institut fur Theoretische Informatik MagdalenenstraBe 11 D - 6100 Darmstadt system with two disk drives. Texas Instruments 9900 Ticom Systems (10100 Santa Monica Blvd, Suite 862, Los Angeles, CA 90067, Phone 213-552-5328) have announced a verslon of Pascal for the TI 9900. Our blurb from Michael Radjioannou was not in the form of a checklist and contained no technical details. Yours sincerely Univac See Sperry-Univac Zilog Z-8000 I-' N See Intel 8080 .c
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37 Create Date : 2011:06:15 16:34:44-08:00 Modify Date : 2011:06:15 16:54:49-07:00 Metadata Date : 2011:06:15 16:54:49-07:00 Producer : Adobe Acrobat 9.43 Paper Capture Plug-in Format : application/pdf Document ID : uuid:12b920db-ce64-4ad8-aa31-8edb4daa1296 Instance ID : uuid:847cdba8-b4f5-4ede-911d-c306a255695d Page Layout : SinglePage Page Mode : UseNone Page Count : 126EXIF Metadata provided by EXIF.tools