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 PDF.
Page Count: 126

Download15_Pascal_News_Sep79 15 Pascal News Sep79
Open PDF In BrowserView 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/ BIELMONT 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.

trJRITELNC
(/)

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                      : 126
EXIF Metadata provided by EXIF.tools

Navigation menu