11_Pascal_News_Feb78 11 Pascal News Feb78
11_Pascal_News_Feb78 11_Pascal_News_Feb78
User Manual: 11_Pascal_News_Feb78
Open the PDF directly: View PDF
.
Page Count: 108
| Download | |
| Open PDF In Browser | View PDF |
PASCAL USER'S GROUP
Pascal News
(FORMERLY PASCAL NEWSLETTER)
NU~1BER
11
COMMUNICATIONS ABOUT THE PROGRAMMING LANGUAGE PASCAL BY PASCALERS
FEBRUARY) 1978
TAB LEO F CON TEN T S
o
1
3
4
4
8
10
10
13
16
19
33
·33
34
36
40
41
48
51
54
57
64
70
70
70
70
72
75
80
104
105
COVER: Paper Fasteners from the mail of international
Pascalers
POLICY: Pascal News
AI.L PURPOSE COUPON
EDITOR'S CONTRIBUTION
HERE AND THERE WITH PASCAL
News (Jobs, Help Wanted!, Tidbits from Pascalers)
Pascal in the News
Conferences
Books and Articles
Errata to Pascal User Manual and Report, Second Edition
Review of Pascal Newsletters 5 - 8
Roster Increment
ARTICLES
"Type Compatibility Checking in Pascal Compilers"
Pierre Desjardins
"A Novel Appro,ach to Compiler Design" James Q. Arnold
"Status of UCSD Pascal Project" Kenneth L. Bowles
"Suggestions for Pascal Implementations"
Wi 11 ett Kempton
"Suggested Extensions to Pascal" Robert A. Fraley
"What to do After a While" David W. Barron and
Judy M. Mullins
"Adapting Pascal for the PDP 11/45" David D. Miller
"Pascal: Standards and Extensions" Chris Bishop
OPEN FORUM FOR MEMBERS
Special Topic: Pascal Standards
IMPLEMENTATION NOTES
General Information
Applications
Portable Pascals
Pascal Variants
Feature Impl ementation Notes
Machine Dependent Implementations
Index to Implementation Notes
POLICY: Pascal User's Group
I
1
(C::: J
POLICY:
PASCAL NEWS
(77/12/30)
* 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 lIabout Pascal II 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 IIconcentratorsli (our phones and
mailboxes). We are trying honestly to say: IIwe cannot p1'omise more than
we can do."
* An attempt is made to produce Pascal News 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 written material for Pascal News
single spaced and in camera-ready form.
Use lines 18.5 cm wide!
* Remember: ALL LETTERS TO US WILL BE PRINTED UNLESS THEY CONTAIN A REQUEST TO
THE CONTRARY.
* Pascal News is divided into flexible sections:
~
u
-o
--
11.
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 applications, history, membership rosters, etc.
ARTICLES - contains formal, submitted contributions (such as Pascal
philosophy, use of Pascal as a teaching tool, use of Pascal at different
computer installations, 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
publicized. Sections contain information about Software Writing Tools
for a Pascal environment, Portable Pascals, Pascal Variants, Feature
Implementation Notes, Machine Dependent Implementations, etc.
* Volunteer editors are:
Andy Mickel - editor
Tim Bonham and Jim Miner - Implementation Notes editors
Sara Graffunder - Here and There editor
John Strait and John Easton - Tasks editors
Rich Stevens - Books and Articles editor
Rich Cichelli - Software Tools and Applications editor
George Richmond - past editor (issues 1 through 4)
PASCAL USER'S GROUP
ALL PURPOSE COUPON
USER'S
******************
GROUP
(77/12130 )
Pascal Userls Group, c/o Andy Mickel
University Computer Center: 227 EX
208 SE Union Street
University of Minnesota
Minneapolis, MN 55455 USA
+
Clip, photoQopy,
+
~e~oduQe,
O~
etQ. and
/ / Please enter me as a new member of the PASCAL USER'S GROUP for
Academic
year(s) ending June 30
I shall receive all 4 issues of Pa6Qal N0W~
for each year. Enclosed please find
($4.00 for each year). (* When
joining from overseas, check the Pa6Qal N~ POLICY section on the reverse
side for a PUG "regional representative. 1I *)
/ / Please renew my membership in PASCAL USER'S GROUP for ___ Academic year(s)
ending June 30
Enclosed please find
($4.00 for each year).
. (* See the Pa6Qal
/ / Please send a copy of Pa6Qal N0W~ Number(s)
POLICY section on the reverse side for price-s-a-n'd~issues available. *)
/ / My new a~~~~~s is printed below. Please use it from now on.
old mailing label if I can find one.
address
/ / You messed up my phone' See below.
N0W~
1111 enclose an
/ / Enclosed please find a contribution (such as what we are doing with Pascal at
our computer installation), idea, article, or opinion which I wish to submit
for publication in the next issue of Pa6Qal N0W~. (* Please send bug reports
to the maintainer of the appropriate implementation listed in the Pa6Qal N0W~
IMPLEMENTATION NOTES section. *)
/ / None of the above.
Other comments:
From:
name ______________
mailing address ______________
phone _________-:..-_ _ __
computer system(s) ______________
date ______________
>.......
u
-l
o
CL
JOINING PASCAL USER'S GROUP?
- membership is open to anyone: particularly the Pascal user, teacher, maintainer,
implementor, distributor, or just plain fan. Memberships from libraries are also
encouraged.
please enclose the proper prepayment - we will not bill you.
please do not send us purchase orders - we cannot endure the paper work! (if you are
trying to get your organization to pay for your membership, think of the cost of
paperwork involved for such a small sum as a PUG membership).
when you ~oin PUG anytime within an academic year: July 1 to June 30, you will
receive all issues of Pascal i~ews for that year unless you request otherwise.
You will receive a membership receipt.
please remember that PUG is run by volunteers who don't consider themselves in the
"publishing business." We consider production of Pascal News as simply a means
toward the end of promoting Pascal and communicating news of events surrounding
Pascal to persons interested in Pascal. We are simply interested in the news
ourselves and prefer to share it through Pascal News (rather than having to
answer individaally every letter and phone call). We desire to keep paperwork
to a minimum because we have other work to do .
THROUGH "REGIONAL REPRESENTATIVES" ?
- To join through PUG(USA) , see address on reverse side. International telephone:
1-612-376-7290. PUG(USA) produces Pascal News and keeps all mailing addresses on
on a common list. Regional representatives collect memberships from their regions
as a service and reprint and distribute Pascal News using mailing labels sent from
PUG(USA). Persons in the Australasian Region must join through PUG(AUS).
European Region (Europe, North Africa,
Australasian (Australia, New Zealand,
Region Indonesia, Malaysia):
Middle and Near. East):
send '£2.50 to: Pascal Users' Group (UK)
send $AI0 to: Pascal Users Group (AUS)
c/o Computer Studies Group
c/o Arthur Sale
Dept. of Information Sci.
Mathematics Department
University of Tasmania
The University
Southampton S09 5NH
GPO Box 252C
Un i ted Ki ngdom
Hobart, Tasmania 7001
telephone: 44-703-559122 x700
Australia
telephone: (002) 23 0561
RENHJING?
- please renew early (before August) and please write us a line or two to tell us what
you are doing with Pascal, and tell us what you think of PUG and Pascal News to
help keep us honest. To save PUG postage, We do not send receipts wh~n you renew.
JOIi~ING
ORDERING BACKISSUES OR EXTRA ISSUES?
Our unusual policy of automatically sending all issues of Pascal News to anyone
who joins within an academic year (July 1 to June 30) means that we eliminate many
requests for backissues ahead of time, and we don't have to reprint important information
in every issue - especially about Pascal implementations!
- Issues 1, 2, 3, and 4 (January, 1974 - August, 1976) are out of print.
- Issues 5, 6, 7, and 8 (September, 1976 - May, 1977) are out of print.
(A few copies of issue 8 remain at PUG(UK) available for tl each.)
- Extra single copies of new issues (current academic year) are:
$2 each - PUG(USA); ~1 each - PUG(UK); and $A3 each - PUG(AUS).
SENDING MATERIAL FOR PUBLICATION?
(such as ideas, queries, articles, letters, oplnlons, notices, news, implementation
information, conference announcements and reports, etc.) "ALL THE NEWS THAT FITS,
WE PRINT." Please send written material for Pascal News single spaced and in cameraready form. Use lines 18.5 cm wide! Remember: ALL LETTERS TO US WILL BE PRINTED
UNLESS THEY COiHAIN A REQUEST TO THE CONTRARY.
MISCELLANEOUS INQUIRIES? Please remember we will use Pascal News as the vehicle to
answer all inquiries and regret to be unable to answer individual requests.
l5i1
Postage for 9/lD was
UNIVERSITY OF MINNESOTA
lWlN CITIES
Country
University Computer Center
227 Experimental Engineering Building
U.K.
Minneapolis, Minnesota 55455
(612) 376-7290
Europe
group
3S0g
SOOg
Previous group
Unit Cost
Unit Cost
4Sc
300g
39c
48c
2S0g
26c
The DEADLINE for written contributions to Pascal News #12 is March 20. Please send DARK copy!
New companies committed to Pascal (add to the list in PUGN#9): Ericsson Telephone and ICL in
Europe, Interdata and Tektronix in the US. TI continu~be very mysterious about their
heavy use of Pascal - they haven't told us a word in a year now! DEC may be finally waking up
because of DOD-1 (see Here and There). Thanks to everyone who sent material for this issue.
We sent renewal notices to 315 holdouts in November. We may have to stop sending receipts for
membership - it is getting too time consuming. We will probably have to combine issues 13&14
next autumn.
Judy sent the letter below to "The Editor, Pascal News":
and came to a total of $llS (approx.). The mailing included close on SO
renewals received after you ran the labels off. As you can see, it is
unlikely that any future issue will hit the lower group for European postage,
so that we might have to face 90c + 48c = $1.38 for getting a copy to a
European member. However, with luck we can still do it at under a dollar.
UNIVERSITY OF SOUTHAMPTON
Thank you very much for all the numerous snippets of information over the
past year, and for the most recent one. on South Africa. The personal touch
is sincerely appreciated. You will be glad to know that ~its are seriously
contemplating switching from Fortran to Pascal for first years (including
engineers) in January. It all depends on whether a decent 370 compiler is
ready.
Faculty of Mathematical Studies
Southampton, S095NH. Telex 47661. Tel 0703 559122Ext 238 7
~:.:
That seems to be all. I have today handed over the files in good order to
David who will handle everything after my departure. Following his article
in Computing we have had an influx of queries, especially from Industry.
Pascal lives:
I'll keep in touch, of course, and won't forget to send a photo of the
wedding.
Sth December, 1977.
All the best,
Dear Andy,
~
=
{
:::0
.
PUG (UK) PRINTING and POSTAGE
"7_
,~.-.--/
/'
~
:/"
Now that PUGN 9/10 is out of the way, I thought I would share some statistics
on printing costs.
PUGN
number
S
6
7
8
9/10
USA
pages
64
96
48
64
112
per copy
per page
$0.70
$1.18
$0.69
$1.07
1.09c
1.23c
1.44c
1.67c
per copy
$O.SO
$0.14
$0.40
$0.S6
per page
.S2c
.29c
.62c
.Slc
As you can see, we have managed to keep our costs at well below half yours.
After No.8, we outgrew the Departmental printing service and took 9/10 to
the University Printing Unit. They were able to do the job at the same
price - in fact slightly cheaper because I did much of the collating myself
to hurry it along. However, indications are that there could be a steep
rise in costs in the New Year. It may be possible to avoid it, and in order
to do so we need to know, accurately,
No. of pages in No. 11
Date of arrival of Masters.
However, should it not be possible to get preferencial rates, we shall have
to face a cost of about 90c for a 64 page issue (compared to $1.07 in the
U.S.A. and 40c previously). Are you still relying on our ultra cheap rates
or can PUG afford to pay the going rate?
Editor's Contribution
(
Juay Mullins
UK
-n
rn
Professors: H.B. Griffiths, S.A. Robertson (Pure Mathematics); P.T. Landsberg (Applied Mathematics);
1.W. Craggs (Engineering Mathematics); D,W. Barron (Computer Studies); T,M,F, Smith (Statistics).
(* It might help explain to new PUG members a few related facts. Judy Mullins last year
(76-77) proposed and implemented a reprinting and distribution service of PUGN for PUG members
in Europe. Not only was delivery speeded, but also the rates were kept low. Last March, the
University of Southampton Computer Studies Group headed by Prof. David Barron held their
third annual computing symposium on "Pascal - the Language and Implementation." Both Judy and
David have done PUG many great services. Judy graduated this month and is going home to South
Africa where she will marry her fiance. David (who by the way edits the ever-popular journal:
SOFTWARE - Practice and Ex erience) recently wrote an outstanding article for the 77/10/24
issue of Computing Europe a kin of Computerworld for Europe); please see Here and There.
David continues to man the PUG European region and as a result had to quit as a Books and
Articles editor for PUGN.
Regarding the question marks under "USA" for PUGN 9/10 in Judy's letter, the costs were $1.10
and $0.96. Ken Robinson (see Open Forum) asks for a public explanation of the high ($A10)
cost of PUGN for Australasian members for the new distribution service provided this year by
Arthur S~ Arthur on 77/09/07 sent this information about his estimated costs: $2.80 for
printing per issue (based on the size of #8); postage within Australia = $0.70. Arthur says
that he thinks the cost is "dubiously low" and that $10 might leave his operation "out of
pocket, and to understand the costing, you have to realize that Australia has a high postal
charge, and I also am taking on New Zealand." I think it is unfortunate that Arthur's costs
are so high,because it is not in the cheap spirit of PUG. Until Ken wrote I didn't know the
$A10 price was relatively "high". Remember though that last year we had severe distribution
problems to Australia. I'm grateful to Arthur for volunteering to do the work, and I'm sure
he's watching costs. - Andy *)
to
::0
;t:>
-<
I--'
<.P
'-J
CO
Here and There With Pascal
NEHS
PASCAL JOBS""
People keep calling us at PUG central asking for people to employ who know Pascal. (*If
that isn't evidence of Pascal's viability, I don't know what is!*) ~Iith the interest of
Pascalers in mind we list here as a service contacts who desire people with compiler
experience and knowledge of Pascal:
David Shaw, Structured Systems Corp., Suite 605,2600 El Camino Real, Palo Alto, CA 94306.
(415) 321-8111
Charl es Moore, ADP Network Services, 175 Jackson Pl aza, Ann Arbor, fll 48106.
(313) 769-6800 (also Neil Barta, same address and phone)
Gregory Hopwood, Sperry Univac Mini Computer Division (formerly Varian), 2722 Michelson
Drive, Irvine, CA 92713. (714) 833-2400
HELP WANTED!
Pascal is to make any inroads into serious scientific computing (currently the almost
exclusive preserve of FORTRAN) it must have a decent library of scientific subroutines which means, as far as the U.K. is concerned, that there must be a Pascal version of the
NAG (Numerical Algorithms Group) library. (* ... and as far as the U.S. is concerned, that
there must be a Pascal version of the IMSL (International Mathematics and Statistics
Library) library ... *)
If
It should be possible to make a Pascal NAG library largely machine-independent, with all
machine-dependent features begin coll ected into the "X" routines. Probably the easi est
method of production of the library would be straight transcription of the existing
ALGOL-60 versions, together with the writing of the set of "X" routines for each different
range of machines.
Please send your views on this matter, and offers of help, to:
Professor D. W. Barron,
Computer Studies Group,
Department of Mathematics,
The University,
Southampton, Hants, S09 5NH (United Kingdom)
who is coordinating this project and negotiating with NAG.
TIDBITS
D. B. Anderson, 280 Bella Vista Drive, Hillsborough, CA 94010: "I am particularly
interested in implementations usable on my company's Interdata 7-32." (* 77/12/12 *)
David B. Anderson, Dept. of Math., Lehigh University, Bethlehem, PA 18015: "By the way,
the section in the newsletter called 'Here and There with Pascal' has been very helpful
in stimulating the interest of non-believers." (* 77/12/17 *)
Peter A. Armstrong, Digital Data Systems, 1113 Dexter Ave. N., Seattle, WA 98109: "We
are immediately interested in information on PASCAL compilers for PDP-II processors
running DEC's RSTS/E monitor. However, we are also interested in any mini- and or
microcomputer PASCAL capabilities." (* 77/12/13 *)
-0
»
Paul Barr, Raytheon Co., Equipment Div., Boston Post Road, Wayland, MA 01778: "Am
attempting to use PASCAL for a Signal Processing application (FFT). Am designing
hardware to fit the compiler." (* 77/11/21 *)
V>
"
»
Michael Behar, 428 Windy Hill Rd., Orange, CT 06477: "Do you know if there is a version
of PASCAL for a MICRO-MIND-II computer (manufactured by ECD of Cambridge, MA)?"
(* 77/9/22 *)
Roy E. Bollinger, Dept. 1965, BLD 529, Lockheed, P. O. Box 504, Sunnyvale,
"Are there any plans to have any Pascal seminars?" (* 77/11/8 *)
CA
94088:
Steven L. Brecher, 5221 Marina Pacifica Dr., N. Key 19, Long Beach, CA 90803: "More
generally, I am interested in information on any implementation which can be run
on/adapted to a Digital Equipment LSI-ll based system." (* 77/12/19 *)
A. Charles Buckley, Data/Information Systems, Urban Studies Center, Gardencourt/Alta
Vista Road, Louisville, KY 40205: "We are currently interested in any work being done
to implement Hansen's CONCURRENT PASCAL on a DEC-I0 and/or an IBM 370." (* 77/11/28 *)
David Burnett-Hall, Univ. of York, Heslington, York, YOI 500, England: "In the
discussions on whether array parameters could be dynamic in size, there have been some
suggestions that only numerical analysts handling matrices need these facilities. A
much more important use, to my mind, is to be able to pass strings of varying lengths.
E. g., the DEC-I0 compiler has to have 9 almost identical error routines, to handle
errors of lengths 15, 20, 25, • • • 55 characters: Stupid." (* 77/8/10 *)
Joe Celko, Box II 11023,
around?"(* 77/12/6 *)
Atlanta,
GA
30310:
"Is
there
a
Nova
Pascal
sitting
Grant M. Colvin, Management Shares, 2121 W. Airport Frwy., Suite 660, Irving, TX 75062:
"Do you know of PASCAL implementations for the Hewlett-Packard 3000
series?"
(* 77/12/5 *)
C. R. Corner, 514 S. 9th St., Moorhead, MN 56560: "I have a PDP 11/05 and am interested
in Pascal activity on the 11 and on micro-based systems." (* 77/09/29 *)
Lawrence S. Cram, 64 Bowen Street, Newton, MA 02159: "Although I am not now a user of
PASCAL, I certainly would like to be, and I would like to be on your mailing list. I
program commercial applications on a DECsystem-l0 in COBOL and am fed up with the
limitations inherent in COBOL. I was introduced to PASCAL in Wirth's book, Data
Structures + Algorithms = Programs and have followed up with Hansen's Principles of
Operating Systems and the PASCAL Users' Guide. I currently have a second-hand bootleg
PASCAL compiler and I dabble with it occasionally." (* 77/11/8 *)
Pierre Desjardins, Departement d'informatique, Universite de
Montreal,
Immeuble
principal V-240, Montreal 101 Quebec H3C 3J7, Canada: '~y implementation of the
Concurrent Pascal machine on Sigma 6 is presently being used to implement (using
Concurrent Pascal, of course) the "line access protocol" necessary for communicating
with a packet switching service of Bell Canada called DATAPAC.
"I am currently involved in the organisation and realization of a primitive distributed
microprocessor system. System programs will be written in CP and executed by a CP
machine contained in every MP." (* 77/10/13 *)
Robert I. Demrow, 11 Linda Rd., Andover, MA 01810: "I am interested in finding a copy of
Pascal that will run on my 8080 computer--presently have 32K and am planning an
expansion." (* 77/11/26 *)
John DeRosa, The Boston Systems Office, 400-1 Totten Pond Road, Waltham, MA 02154:
"We're presently beginning development of PASCAL systems ·for micro's as well as
resident compilers with the intent of creating a PASCAL well-suited for writing system
software. Any news from people working in this direction would be appreciated."
(* 77/9/21 *)
"Tl
!'T1
t>oJ
=
=
»
=
-<
f-'
LO
'-I
CO
George B. Diamond, Diamond Aerosol Corp., RD 1/ I, Glen Gardner, NJ 08826: "Any, other
information on PASCAL would be appreciated especially compilers or assemblers for the
Z80 CPU." (* 77/12/14 *)
Thomas Giventer, 1250 Post Road, Scarsdale, NY 10583, "1 am currently working on a
PASCAL compiler for the TMS 9900 and would like to find out what other work is being
Roberio Dias, 134 Colin Ave., Toronto, Ont MSP 2C3, Canada: "I am a humble owner of a
digital~oup Z-80 minicomputer and as such very interested in learning new languages.
Steven B. Hall and Arthur Dartt, 1599 Orchard Grove, Lakewood, OR 44107 (* address for
Hall *): "The installation with which we are professionally affiliated and are students
(Cleveland State University) currently is running VSl on a 370/158..
Any help you
can give us in differentiating between the various PASCALs will be appreciated (as we
do not wish to waste valuable man-hours at vain attempts). We will look forward to
I understand that you are publishing four times a year a paper on Pascal. I would very
much like to subscribe to it but instead of sending US$4 right now, I would like to
know if the price would be the same for a subscriber in Brazil, as I will be moving to
that country in February 78, with my computer." (* 77/11/30 *)
Richard Dievendorff, Dept. 84F, IBM, 620 North Brand Blvd.,
"Although I am having this sent to my business address, this is
venture." (* 77/12/3 *)
Felix
F.
Dreher,
Computer
Glendale, CA 91203:
a personal, hobby
Science, Pittsburg State Univ., Pittsburg, KS 66762: "I am
interested in obtaining information about the possible implementation of
PASCAL
on
a
small IBM 370/125 machine. Do you have any data suggesting that this has been done? Is
there a bootstrap interpreter/compiler available that might be modified for this
system? I f so, from whom can it be obtained?" (* 77/10/13 *)
William E. Drobish, Silicon Systems, 16692 Hale Ave., Irvine, CA 92714: "Additionally, I
would appreciate any information on PASCAL compilers and the availability of one for
the Interdata 7/32." (* 77/11/14 *)
C. E. Duncan, 865 Thornwood Dr., Palo Alto, CA 94303: "I am not at present a
would
like
user,
but
to be one. We have available a number of computing systems, and I would be
particularly interested to obtain a running system for IBM 360/370, Univac 1110, Data
General NOVA and Intel 8080A. Perhaps not altogether at once; these systems happen to
be conveniently available." (* 77/10/24 *)
Randall B. Enger, 28 Briar Patch Lane, Sudbury,
MA
01776:
"I'm
planning
to
try
an
implementation on a small machine, mostly because I'm tired of assembly language, but
also because I've been away from programming languages stuff for too long.
"I like to believe I'm relatively free from 'N. I .H.' disease--'not invented here,' and
done in this area."
hearing from you,
(* 77/12/6 *)
as
several
people
are
anxious
to
implement
and
use
PASCAL."
Michael E. Harris, 309 W. Edwards II 4, Springfield, IL 62704: "Does anyone have a "full"
PASCAL that will work with minor modification on an HP3000 ~r on an IBM 370/MVS system?
Micros? Any computer graphics activity in PASCAL?" (* 77/10/26 *)
Charles
Hedrick,
Computer Science Dept., Rutgers Univ., Hill Center, New Brunswick, NJ
08923: "Implementors should give some thought to implementing machine-independent
representations of data so that data is transportable as well as programs. This
involves the generating of files which are not textfiles. What may be the only way out
is to use ASCII text representations (using blanks as separators where appropriate)."
(* 77/09/20 *)
H. F. Hession, Adv. Record Systems Eng., Gov't. Systems Div., Western Union, 7916
Westpark Drive, McLean, VA 22101: "We are programming Zilog Z-80 microprocessors in
assembly language for communications controller applications, and noted an article in
the December 1977 issue of BYTE magaZine referring to 'your user group on PASCAL.
"None of us has had training in PASCAL, but given the proper documentation, we are
confident we can master it." (* 77/12/5 *)
Charles Hethcoat, 2416 Yorktown II 371, Houston, TX 77056: "I obtained a copy of the
Pascal PCODE assembler-interpreter with a view to study how it works. I suggest that a
worthwhile project would be collect copies of this program as written for a variety of
machines
and
languages,
or
to write them up for those machines not having a version
yet. (This would be especially appealing as a way to implement
Pascal
on
the
8
bit
consequently will eagerly build upon the work of others (borrow from, steal from • • • ).
micros). A project like this would go a long way toward assuring that a common language
Whatever
is widely distributed, and a the same time it would simplify life for those wishing to
tryout language extensions. Also, the PCODE language can be extended to include
will
help me get an implementation going--listings/source on tape/whatever -
I'd be willing to spend a few $
charges • • • )" (* 77/11/10 *)
happily
(especially
if
it
were
to
cover
copying
interruption
handling,
queues
and
other
real-time
techniques for operating system
development, as Brinch-Hansen has done with Concurrent Pascal." (* 77/10/10 *)
Robert B. Finch, 910 N. Lk. Sarnish Dr. II 30, Bellingham, WA 98225, "My interest is
personal/hobbiest computing, and I am currently in the process of implementing Per
Brinch Hansen's Sequential Pascal on an Alpha-Microsystems AM-I00."
Read
T. Fleming, Program in Computer Science, Box F, Brown Univ., Providence, RI 02912:
"Brown has an IBM 360/67 running CP-CMS for interactive work, an IBM 370/138 for batch,
running VS 1. We have on order a Pascal compiler from the Australian Atomic Energy
Commission. When it arrives, we hope to put it up on the batch machine immediately, and
at some later date add it to the interactive (CP/CMS) system.
"Everybody here is looking forward to Pascal; we hope to use it in a course on compile
design next semester, and we're anxious to see how it works in an instructional
environment." (* 77/12/18 *)
Jim Fontana, 3519 W. Warner Ave., Santa Ana, CA 92704: "The implementor/maintainer of
the 2550/Cyber 18 Pascal compiler is Gordon Wood at CDC LaJolla operation. The compiler
is distributed from PSD in Sunnyvale." (* 777TfT2 *)
Sciences Bldg., Purdue Univ., West
Lafayette, IN 47907: "You guys sure are ).ax about sending out renewal notices. Most
periodicals bombard you with notices for months befo,re your subscription expires. With
PUG, you don't get a single notification until 5 months after your subscription
expires." (* 77/12/16 *)
Ed F. Gehringer, Dept. of Computer Science, Math
Here and There With Pascal
microprocessor devices. Our main product, the Eyedentifier, is a microprocessor based
image recognition system that utilizes the retinal image as a means of identification
(as opposed to a finger print).
"Although the Eyedentifier is a simple machine whose software was written in Motorola
6800 assembly language, we anticipate the support products we intend to build for it
will require development with a high level structured language.
Lewis
and
Clark
college
near
here, by Kenneth L. Bowles, UCSD on the PASCAL language. As a result, we are very
interested in implementing it on a 6800."
Philip T. Hodge, Habco,
microprocessor
P.O.
Box
305,
Schererville,
IN
46375:
"As
a
Z-80
rn
t:O
:::0
c:::
J:>o
:::0
-<
I-'
LO
'I
00
Robert B. (Buzz) Hill, Eyedentify, Inc., P.O. Box 2006, Longview, WA 98632: "We are a
new
company i~he business of developing and manufacturing custom dedicated
"Recently, a group from my company attended a talk at
-n
based
user anxiously awaiting the UCSD version of Pascal, it is heartening to
find others who share my opinion of both Basic and Pascal." (* 77/12/6 *)
Ross F. Householder, 1725 Brooks Drive, Arlington, TX 76012: "I am a Pascal user working
at Texas Instruments and would like to see what is going on with Pascal in other parts
of the country." (* 77/09/11 *)
R. Warren Johnson, Dept. of Math. and Compo Sci., St. Cloud State U., St. Cloud, MN
56301: "I am seeing more and more hobbyists in beginning courses who need some
convincing that PASCAL is real." (* 77/09/15 *)
Ernest W. Jones, 59 Billou St., San Rafael, CA 94901: "I am interested in certain
languages for use on 16-bit micro's and have investigated the MID!PS language. Pascal
would no doubt provide more suitable capabilities, but may not be suitable for so small
a machine. I would like to learn more about i t nevertheless." (* 77/12/81 *)
K. P. Lee, Dept. of Computer Science, 102 Nicholson, Louisiana State Univ., Baton Rouge,
LA 70803: "You may be interested to know that we are in the process of getting the
Australian compiler. We will be happy to share with PUG any experience we may have with
it." (* 77/10/6 *)
Hark Jungworth, 13318 Newland St., Garden Grove, CA 92644: "We have recently implemented
Pascal on our CDC 7000 machines at HcDonnell Douglas in Huntington Beach. I am a
complete novice at Pascal usage, but can't wait to BEGIN." (* 77/09/12 *)
Haria Lindsay, Hicrocomputer Library ! Resource Center, 5150 Anton Dr., Room 212,
Hadison, WI 53719: "Thank you so much for sending us your brochures and issues. Your
You
=
rn
sure that when we are asked about computer languages t Pascal is mentioned in a
very favorable light." (* 77/9/21 *)
en
newsletter
is
very
impressive.
It for one t now view Pascal as a favorable language.
Hopefully it will be available for microcomputers through the
Hilan Karspeck, 1149 North Hichigan, Pasadena, CA 91104: "I am dying to get my hands on
a PDP-11 PASCAl implementation. According to the December editorial in Byte Hagazine,
you ran a list of PASCAl implementations in your issue # 8. I would appreciate it if
you could begin my subscription with that issue." (* 77/12/11 *)
Neil T. Keane, Stansaab Elektronik AB, System Development, Veddestavagen 13, Jaarfaalla,
Sweden
S-175
62:
"As
a
manufacturer
like to know the extent to which it has been implemented in the US (apart from the Solo
System), and the status of such implementations." (* 77/11/17 *)
Paul Kelly, Educational Data Systems, 1682 Langley Ave., Irvine, CA 92714: "If you are
aware of any FORTRAN compilers written in PASCAl which are available at a reasonable
cost, I would be quite interested to hear about it." (* 77/10/26 *)
Thomas J. Kelly, Jr., 58-B Headowlake Drive, Downington, PA 19335: "Here at Burroughs I
have been using the UCSD implementation of PASCAl for the B6700. It is fairly reliable,
although a number of problems have been noted. I have been sending bug reports (most
with fixes) directly to UCSD. If anyone is interested in the bugs and/or the fixes,
drop me a line. I'll be glad to send listings (most fixes are less than 1 page).
"You may also be interested in the fact that a colleague and I have brought up the CDC
6000 compiler at Burroughs (although the code generation. has been disabled). This is to
us
to
run
checks
soon.
William Kempton, Language Behavior Research Lab, 2220 Piedmont Ave., University of
California, Berkeley, Berkeley, CA 94720: "As a linguistic anthropologist, I find the
reasons for using Pascal versus other languages fascinating. You find a lot of the same
factors operating that operate in any other multilingual speech community. Clearly the
merit of the language and the utility of the compiler are only two of many factors
affecting language choice, they may not be the most important for most users. The best
strategy for a long large change is to have computation center staff at least very
familiar with Pascal t and to have it taught in
science." (* 77/09/22 *)
the
introductory
course
in
computer
John Kenyon, Technical Staff, International Computing, 4330 East-West Highway, Bethesda,
no . 20014: "We are currently involved in the planning and concept development for the
USAF Foreign Technology Division data processing for FY78-82. One of the primary
subjects of our study will be the use of standard higher-order systems programming
languages within the Department of
Defen~e.
I understand that Pascal has been chosen as
the candidate language for all DOD and I would appreciate
any
information
you
Ron
Hahon,
Video
Link,
201 N. Hain St., P. O. Box 688, Hasontown, PA 15461: "Be very
interested in any compilers for direct use
(* 77/12/06 *)
John
P.
HcGinitie,
P.O.
Box
655,
on
Berkeley,
a
micro,
preferably
Motorola
6800."
CA 94701: "During my education at U.C.
Berkeley, I had the honor of learning Pascal as well as BaSic,
Fortran t Lispt Ct
Snobol t • •
Having experienced many languages Pascal has impressed me the most."
(* 77/12/17 *)
Uichae1 McKenna, Time Share Corp., Box 683, Hanover, NH 03755: "We are currently using
ESI/OMSI Pascal for the PDP 11. We are planning a distributed network using LSI 11's in
stand alone mode and with RT 11; the host computer is an 11/60 under RSTS/E - all will
be programmed in Pascal." (* 77/12/27 *)
James S. Hiller, Intermetrics Inc., 701 Concord Ave., Cambridge, UA
02138:
"Today
my
interest is in finding a solid Pascal compiler for Data General equipment t Novas and/or
Eclipses." (* 77/11/10 *)
John C. Knight, US 125A, NASA Langley Research Center, Hampton, VA 23665: "Any interest
withing PUG in actively pursuing a PASCAL standard with the National Bureau £f
Standards?" (* 77/10/20 *)
U.
of
Mass.,
Amherst,
UA
OlD02:
"We've
been
with over 50 requests for our prettyprinter and losing money distributing it
in the process, too." (* 77/9/15 *)
produce object code for the Intel 8080 microprocessor. (Either II res ident" or "cross"
compilers would be acceptable implementations for my purposes, although a "resident"
implementation would be preferable.)" (* 77/12/4 *)
Herbert E. Morrison, 1257 2nd St., Hanhattan Beach, CA
"I am interested in
implementing PASCAL on my Poly 88 (8080) computer. Is there someone you know of who has
done this in the Los Angeles area?" (* 77/12/7 *)
G. 0' Schenectady , 144 Lancaster St., Albany, NY 12210: "Most pleased that the most
rational language ive seen has found 1087 adherants. Read of you-all in Hicrocomputer
SCCS Interface, ! id like to be one of you.
"Hy own activity is presently restricted to hardware selection, and i doubt my 8K S-100
system-to-be will support too much of Pascal without additions, but even so it will be
good to be in touch with whats happening." (* 77/9/17 *)
David Peercy, BDH Corp., 2600 Yale Blvd. S.E., Albuquerque, UN 87106: "I was previously
with Texas Instruments, where Pascal is beginning to flourish." (* 77/12/15 *)
Stephen Klein, 188 Judy Farm Rd., Carlisle, UA 01741: "Computer programming has been a
hobby of mine for a few years, mostly in FORTAN and BASIC, but now I'm sure there are
better languages around so I'm also looking into APL and LISP (* besides Pascal *) to
get an idea what type of work each language is best suited for." (* 77/12/27 *)
Darrell
Preble t
Computer
OJ
rn
to
:;0
=
Roderick Montgomery, Statistical Associate, Health Products Research, 3520 U.S. Route
22, Somerville, NJ 08876: "I would also appreciate rece1v1ng information on the
availability of back issues for the Newsletter and on PASCAL implementations that
could
send me on this subject."
Henry Ledgard, Compo and Info. Sci.,
::e::
Peter Linhardt, 1890 Arch St. Berkeley, CA 94709: "I'm interested in PASCAl for use on a
personal system. I understand there is a system that will run on my machine (* TDL Z80
system *)." (* 77/12/9 *)
on what constructs were implemented there. We think we have
found a bug in it. I f so, we'll pass along a bug report." (* 77/11/29 *)
inundated
manufacturer
be
of Turn Key Computer Systems we are currently
engaged in the assessment of a suit:able high level programming language to which we can
standardize our in-house programming. Since we are mainly engaged in real time
applications we are particularly interested in Concurrent Pascal. To this end, we would
allow
can
Center t
Georgia
State Univet University Plaza, Atlanta t GA
30303: "Georgia State University would like to implement Pascal on our Univac 70/7 or
barring that, our Interdata 8/32. If you have a working version of Pascal on either of
these machines please contact me at the above address. We would like to obtain a
working source copy of Pascal for either of these machines." (* 77/11/28 *)
Jerry Pournelle, 12051 Laurel Terrace, Studio City, CA 91604: "A consulting engineering
firm is at the moment putting together my Cromemco Z-80, with which I hope to put
together some word-processing and small-business bookkeeping--as well as play about. I
can see some limits to BASIC, and from years ago when I had my only previous experience
with computers I know there are limits to FORTRAN •• •• " (* 77/12/3 *)
:I:>
:;0
-<
Edward K. Ream, 508 Farley Avenue, Apt. 5, Madison, WI 53705: "I
interested in implementations for the 8080 or Z80." (* 77/11/30 *)
am
particularly
Peter Richetta, Computer Science, Slippery Rock State College, Slippery Rock, PA 16057:
"I have been trying to get Brinch Hansen's Concurrent PASCAL compiler. After
distributing
Mark Riordan, User Services, Computer Laboratory, Michigan State University, East
Lansing, MI 48824: "Here at MSU we are developing (in PASCAL, of course) a word
processing system we call Redact. Our CDC 6500 is becoming badly overloaded, so we are
considering moving Redact to an Ontel Op-1 intelligent terminal, based partly on the
availability of a PASCAL compiler or cross-compiler for an 8080 chip. (We have even
considered modifying the venerable CDC 6000 PASCAL compiler to do the trick.) Any input
from other microprocessor PASCALers would be appreciated." (* 77/10/24 *)
P. Roberts, Kern Instruments, 111 Bowman Ave., Port Chester, NY 10573: "We will soon
be accepting delivery of a Nova 3/12 computer with floppy disk and 32K words of memory.
I wonder if your PASCAL Users Group has a compiler/interpreter suitable for this
T.
An
for
one
of
our
Eric Small, 680 Beach St., San Francisco, CA 94109: "Am using ESI Pascal in process
control type application in broadcasting." (* 77/11/30 *)
hundreds of systems he stopped distribution. Dr. Hartmann, who wrote much
of the compiler, gave me a list of sources to try. Can you help? Any suggestions?
"Our computers are NOVA 3 (soft discs) and 370/135 using DOS/VS. Educational use is all
we want." (* 77/10/26 *)
machine?
developments of the language as well as perhaps finding a compiler
machines (NOVA, PDP-11 , or any microprocessor)." (* 77/12/06 *)
interpreter
alone
is
not of interest to me, but a compiler would be of
interest.
"If you have such programs, please inform me of the price, core required,
comparison of compile times with Data General Fortran." (* 77/09/08 *)
and
rough
Jon A. Solworth, 7 W. 14th St., Apt. 15A, New York, NY 10011: "Please send info on
implementations on ~ minicomputer and addresses if possible (especially Interdata)."
(* 77/09/08 *)
Turney C. Steward, 201 Drake St.,
Pascal compiler running on a CDC
to obtain info on versions for
resident or cross-compilers." (*
San Francisco, CA 94112: "I am at present using a
6600 at Berkeley, Cal., but would be most appreciative
microcomputers, especially 8080 or Z80 systems, either
77/12/14 *)
Jim Stewart, 194B Pleasantview Rd., Piscataway, NJ 08854: "I am interested in the
implementation of a subset of PASCAL on a Z-80 based micro-computer system."
(* 77/11/20 *)
Jyrki Tuomi and Matti Karinen, Room 2113, Computing Center, Tampere University of
Technology, Box 527, 3310 Tampere 10, Finland: "When you wrote to us with info about
PUG, you said that there are 4 members in Finland already.
"Well, now we are doubling that, and more. The coupons
money, too.
are
enclosed
and
here's
the
"We have a PDP 11/70 at our disposal and have sent for a couple Pascal implementations.
What comes out of this, we shall see •• •• " (* 77/10/7 *)
Robert Rogers, 18625 Azalea Drive, Derwood, MD 20855:" •• being in Minneapolis, do
you know of any implementations of PASCAL for a Control Data Corp. 3500? I am aware of
the CYBER implementation, but I have a CDC 3500 available for my use." (* 77/12/01 *)
Herb Rubenstein, 1036 6th St., Golden, CO 80401: "I would like any information on Varian
V75 Pascal--even a Pascal to Fortran preprocessor (translator)." (* 77/12/19 *)
Steven
Vere,
Asst.
Prof.,
Dept.
of
Information
Eng., Univ. of Illinois at Chicago
Circle, Box 4348, Chicago, IL 60680: "In the December 1977 issue of Byte Magazine Carl
Helmers mentioned that a PASCAL compiler exists for the Z80 microprocessor. Do you have
any
direct
information on this compiler, or know where information can be obtained? I
would like to know
1.
the core requirements
2.
3.
4.
cost of obtaining the compiler
if it runs on the Z-80 or is a cross-compiler
where and how it can be obtained." (* 77/12/12 *)
Janne Sahady, Systems Programmer, LAMBDA, Div. of Biol. and Med., Brown Univ.,
Providence, RI 02912: "We have recently implemented a Pascal compiler on a V77-600
Univac minicomputer (formerly Varian Data Machines). This compiler is the sequential
version of P. Brinch Hansen's Concurrent Pascal compiler. Our current emphasis is on
upgrading the I/O interface and we hope to be writing major system utilities (a mag
tape utility to start with) in Pascal in the near future.
Wayne Vyrostek, Tektronix, Inc., MS 74-329, P.O. Box 500, Beaverton, OR 97077: "I am a
Technical Instructor on Microprocessor Development aids for Tektronix, Inc. I would
"Herb Rubenstein, currently working at Autotrol, has referred us to your newsletter and
mentioned that you are maintaining a Pascal software library • . • we would definitely
like to enroll our training department in the Pascal users group and receive back
issues that are available. I would also appreciate information you have about training
be interested in contributing to it as we develop useful routines--most likely in the
areas of graphics, signal processing and I/O utilities." (* 77/09/16 *)
Stephen C. Schwarm, duPont Co., 101 Beech St., Wilmington, DE 19898: "Should have Sweden
PDP-11 compiler self-compiling soon." (* 77/12/6 *)
Ted Shapin, 5110 E. Elsinore Ave., Orange, CA 92669: "I have access to an
Stanford's version." (* 77/12/15 *)
IBM
370
and
Thomas E. Shields, Software Resources, 2715 Bissonnet, Suite 212, Houston, TX 77005: "We
have UCSD Pascal compiler for B6700 - currently a 1 x 1 (1 cpu, 1 I/O processor); soon
to become a 2 x 2)." (* 77/11/04 *)
John Sigle, Computing and Information Sciences, Trinity Univ., 715 Stadium Drive, San
Antonio, TX 78284: "We have two Digital Group systems, a Motorola 6800 and a Z-80, and
I am interested in developing PASCAL compilers and/or interpreters for them."
(* 77/12/7 *)
Jon Singer, 1540 W. Rosemont CE, Chicago, IL 60660: "Do you know of anyone around here
who has a micro running PASCAL? I would like to see such a system." (* 77/12/14 *)
Dave Skinner, Communication Mfg. Co., 3300 E. Spring St., P. O. Box 2708, Long Beach, CA
9080~ust finished reading the article 'Is PASCAL the next BASIC?' in the December
issue of BYTE magazine, where they mention the Pascal User's Group. As a former PASCAL
user (on~e Univ. of Colorado CDC 6400's), I am interested in following the
programmers in the use of
development." (* 77/09/06 *)
Donald
PASCAL;
particularly
for
Microprocessor
software
Warren, 130 W. 81st St., Apt. 7, New York, NY 10024: "I heard about the group in
Creativ~uting. I've been programming in Pascal for the past four years,
first
at
the State Univ. of N.Y. at Buffalo, and currently at N.Y. University, and I'm pleased
to see its use has spread enough to merit this organization." (* 77/09/12 *)
Hellmut Weber, Leibniz-Rechenzentrum, Der Bayerischen Akademie der Wissenschaften, Barer
Strasse----zr:-D-8000 Munchen 2, West Germany: "I am collecting from collegues
some
more
user-oriented points of view. (I feel that simple users who want to write production
programs haven't found enough attention in the PASCAL community)." (* 77/09/12 *)
Terry Weymouth, 4702 Beau Bien Lane East, Lisle, IL 60532: "I'm interested in
on micros with PASCAL (or should that be PASCAL with micros?)" (* 77/12/7 *)
Fulton
any
news
Wright, Jr., Yavapai College, 1100 East Sheldon Street, Prescott, Arizona 86301:
"I'm the educational coordinator for Computer Services a
Yavapai
College.
I've
just
read an editorial in BYTE magazine about PASCAL. I know almost nothing about it, but
the editorial makes it sound like the language of my dreams. The editorial suggested
you as a source of further information. What should I and my DEC 10 do next?"
(* 77/12/7 *)
OJ
»
Mark Zimmer, 1110 2750 Dwight Ave., Berkeley, CA 94704: "PASCAL is supported in U.C.
Berkeley (in which I am a student) for the use of teaching data-structures (and now)
compilers courses. I learned it in our style course
CS 40. I am interested in
implementing PASCAL on the DG ECLIPSE machine. The specification is done (PASCAL has
been modified slightly so that ALGOL code from DG can be a subset) and the code is
BYTE, 77/09, p. 174, two letters to the editor, one from PUG member
suggest Pascal as a high-level language for micro-processors.
George
Cohn.
Both
pouring forth for the compiler. Since PASCAL is a 'oue-pass language,' some readers may
BYTE, 77/10, "C: A Language for Microprocessors?" J. Gregory Madden. Mentions Pascal as
--;;;;- reasonable candidate" for a high level,
machine-independent
language
for
microprocessors, but goes on to tout Bell Labs' language C as the candidate of choice.
be interested in my three-pass approach with special emphasis on the reversability of
the parse-tree into 'source' form." (* 77/09/23 *)
BYTE,
77/11,
"Language
Development. A Proposal," Glen A. Taylor. Mentions Pascal as a
"good structured programming language," but rejects any "large" language lias
choice for a standard home computing language."
***
the
best
BYTE,
77/11, Two letters to the editor suggesting that Pascal be considered as a
language for progrrams and as an execellent high-level language
for
microcomputers. The writers are PUG members Stephen Alpert and David Mundie.
~ndard
Dear Editor.,
Just so this newsletter isn't quite so serious, can I draw your
BYTE,
attention to the evolution of the pug dog that is the heraldic emblem of the
Pascal Users Group? The York Herald of Arms, in visiting Tasmania recently, was
at pains to emphasize that artists Were free to re-interpret heraldic emblems
and that this was a medieval norm.
77/12,
"Is
Pascal the
t'/~t
B ASIC?", editorial by Carl Helmers. "We at BYTE are
interested in giving Pascal a boost," best sums up the author's attitude. The editorial
demolishes, point-by-point, several arguments frequently made in favor of BASIC, and
argues the superiority of Pascal in several areas. Well worth reading, if you are
interested in personal computers.
He said it was regrettable that in this
machine age a sad uniformity had crept in.
Computer Weekly, 77/10/20, "ICL Pascal users expect boost." Report of
As you can see from the samples
group
reproduced here, Pascallers are free from this mechanistic taint, and the
for
exchange
of
software
among
a
Pascal
users'
ICL users: organizer, David Joslin, Univ. of
Sussex, Brighton, England. Pascal users in Britain are dickering with the Numerical
Algorithms Group, which produces scientific routines in other languages, to get a
scientific library translated into Pascal. See David Barron's Help Wanted ad in another
guardian of rational programming has changed significantly over the months,
eVen at one stage being rather pig-like (possibly an unintended pun).
part of "Here and There" for details.
Computer Weekly, 77/10/20, "More support for Pascal.'~ Reports that "the Swedish defence
procurement agency, EMV, has specified a Pascal-based language as its standard for real
time sof tware development."
~
~r
Computing, 77/10/20.
Computer Weekly.
....
"Two
rn
to
::::t:J
pleas
to
Pascal users." Similar to the first article from
=
:x>
:;:0
-<
Computerworld, 77/11/14, '"'Sounds of Computing' a Record for History," Miles
tongue-in-cheek
Benson.
A
description of a new record entitled "Sounds of Computing," the second
movement of which is called "Pascal Time-Sharing Terminal."
1376, U.S.A.
Computing Europe, 77/10/24, pp. 18-19, "Letting the dinosaur know that it's dead," David
Barron. An argument for burying FORTRAN, however great its effect on computing might
1977, Australia
1977, Europe
once have been. Barron argues the need for using compact, conceptually clear languages
that make writing correct programs and specifying data structures easy. Pascal is the
language of choice.
Creative Computing, Sept/Oct 1977, p. ll. "A Plug for Pascal" letter to the eidtor from
PUG member David Mundie. He counters an argument for creating a structured COBOL/BASIC
by showing how clearly a main program can be in Pascal. His example program (5 lines
PASCAL IN THE NEWS
long) is a Pascal version of the one used in the article he criticizes.
(* This
new section will list articles which take note of Pascal, sometimes just in
passing. Most of the entries here don't really belong in a bibliographical section like
"Books and Articles," but they do give some indication of the currency of Pascal. The
references have now become so frequent that they merit being set off in a separate
section of "News. II Several PUG members have mentioned that "Here and There" is visible
proof of interest in Pascal. We hope that this section is useful in the same way.
The three most important articles listed here are Carl Helmers' editorial
David
Barron's
article
in
Computing
Europe,
and
in
Byte
and
the press release (with editorial
comment by Andy) from the US Dept. of Defense. PUG member David Mundie is doing heroic
work, writing letters to the editor in praise (and defense) of Pascal. Three of his
letters are listed here, as are one each by PUG members George Cohn and Stephen Alpert.
More PUG members should do the same. In addition, we'd appreciate copies of references
made to Pascal in publications you read so that we can make this list more complete. *)
Dataline, 77/10/31, "Blazing the trail for Pascal." More reports from the UK
ICL
about
the
user's group, the Swedish defense language contract, and David Barron's commission
to write a Pascal compiler for the ICL 2900 series.
First Computer Faire Proceedings, pp. 245-247, "Computer Languages: the Key to Processor
Power," by Tom Pittman. Discusses the virtues of various high level languages for
personal
computers.
Mentions
Sequential Pascal, and says that Pascal is in many ways
better than FORTRAN or BASIC.
Kilobaud, October 1977, p. 11. Another letter to the editor by PUG member David Mundie.
He says that Pascal is a better language than a structured BASIC discussed in an
earlier article, and gives a sample main program in Pascal which duplicates the program
suggested by the author of the earlier article.
00
MACC Computing News (University
of
Wisconsin
Academic
Computing
Center),
77/11/28.
Mentions plans to distribute a Pascal compiler under a license agreement. Reference
comes in an article about proprietary software.
SCCS Microcomputer Interface, Aug. 1977, p. 52. An announcement about the
PUG and Pascal News.
existance
of
Standford Campus Computing Bulletin, Nov. 1977, p. 24. A user wrote in to ask that
Stanford acquire a good Pascal compiler. The editor's response was that Stanford is
looking into what compiler to acquire.
Twin Cities Technical Hobbyist, (77:9), pp. 01111-10000, "Pascal in Micros," Geoff
Wattles. An article describing Pascal, with a discussion of the syntax of the language
and Pascal's usefulness for hobbyists.
***
Whi Ie different approaches were offered, al I four winning contractors
proposed to start from the computer language PASCAL as a base. They
... i II provide modifications to construct a resulting language to
sati sfy mi I i tary needs as expressed in the "DoD Requirenlents for High
Order Computer Programm i ng Languages (Rev i sed I RONMAN, Ju I y 19771".
The U. S. Department of Defense High Order Language Effort (or "IRONMAN" or "DOD-1")
(* In PUGN8, May, 1977, on page 3, we passed along the summary of a press release by the
U. S. Department of Defense which was distributed by the
March 3, 1977.
British
Computer
Society
on
William A. Whitaker, Lt. Col. USAF, Defense Advanced Research Projects Agency
(DARPA) described in the full version of that press release a three year effort by the
U.S. Defense Department (DoD) to develop specifications for a real-time language called
DOD1--a single common military computer programming language for "embedded systems,"
computer systems on board tanks and ships, on rifles, etc.).
The language would replace FORTRAN, COBOL, JOVIAL, and all the others. A working
group at DARPA was formed in January, 1975. A rigorous language definition was sought,
but as it turned out", 4 different stages of development/evolution have 'transpired: first
STRAWMAN, a set of relatively complete, although tentative requirments. WOODENMAN and
TINMAN followed. With each step, the proposals were widely distributed for comment.
Existing languages were evaluated, and, as we reported in PUGN8, only Pascal, Algol-68,
and PL/1 survived.
At the IRONMAN (4th step), specifications gave way to a language definition. In
July, 1977, IRONMAN was released to vendors for competitive bidding. The report below,
sent to us by William Whitaker, tells the results. The four successful contractors
be narrowed to two in February,
defense-related software per year.
1978.
What
The Defense Supply Service Washington has announced the a~ard of four
contracts to produce competitive prototypes of a common high order
computer programming language for Department of Defense embedded
computer systems. These a~ards came as a result of a request for
proposa I and offers rece i ved from fourteen firms, both U. S. and
fore I gn. The successfu I contractors ~ere Honey~e II (CI t -Honey~e II
Sui I), Intermetrics, Softech, and SRI-International.
is
at
stake
will
is $3 billion spent on
It is truly amazing how a giant operation .such as the HOLWG (Higher Order Language
Working Group) came up with 95% Pascal almost independently in three years working with
committees.
There has been sporadic news coverage of these events
journals.
One, in October 1977 Datamation, reported on
in the computer trade
how a French software
organization's bid got lost in the mail in the original competition. In the December,
1977, SIGPLAN Notices, it is amusing to see the confusion resulting from their just
having learned about IRONMAN and still not realizing that it's going to be based on
Pascal.
- Andy Mickel
*)
The contracts provide for three phases at the discretion of the
government. The first phase is to be six-months and will produce a
preliminary language design.
At the end of the first phase, an
evaluation of the products will result in some of the contractors
be i ng cant i nued through fu II forma I des i gn, rigorous def i nit i on, and
prototype imp I ementat i on.
The one contractor ~hose language is
selected by the government wil I be continued for refinement and
initial maintenance. The language will be ready for initial use in
1979.
This language design is the next step in a Department of Defense
effort to reduce software costs of enlbedded computer systems. Earl ier
act ions inc I uded i ssu i ng 000 0 i rect i ve 501m.29, "Management
of
Computer Resources in Major Defense Systems, which, as one of several
II
~anagement
actions, required the uses of approved high order languages
in futUre Defense systems software. 000 Instruction 5B0B.31, "Interim
List of 000 Approved High Order Programming Languages,"
prol iteration by approving only seven existing languages.
stopped
The technical effort in high order languages has, over the last three
years, brought increasingly refined sets of .requirements, produced an
evaluation of existing languages, and has established the technical
feasibi I i ty
of a single language for these appl ications.
The
successful design of such a language wi I I be followed by testing and
evaluation, compiler and tool generation, and the necessary long- term
language control. This program is presently being directed by the 000
High Order Language Working Group, chaired by Lt Col Wi Iliam A.
Whitaker, Defense Advanced Research Projects Agency, 1400 Wilson
Blvd., Arlington, Va., 22209.
"Tl
fT1
t>::I
;:;0
c::
::>
;:;0
-<
I-'
to
'J
00
BOO KSAN DAR TIC LES
CONFERENCES
APPLICATIONS
German ACM meeting on. Pascal, held 77/10/14-15 in Kaiserslautern.
S.
(* We received a postcard from Hans Wipperman, Albrecht Beidl, Manfred Sommer,
Helmut Schauer, Lutz Christoph, and Thomas Wagner, all of whom attended the conference.
We haven't as yet received a report on the proceedings; therefore we are printing a list
of the papers presented so that you can write for more information if you like. The
address for inquiries is Hans-Wilm Wipperman, Informatik, F13, Univ. of Kaiserslautern,
Pfaffenbergstr. 95, Kaiserslautern D-6750, Germany. The German titles are from the
program; the English ones PUGN's attempt at translation. *)
H. Burkhart (ETH Zuerich), "Ein interaktives System zur Programmierung in PASCAL."
(* "An interactive System for Programming in PASCAL." *)
H. Balzert (Univ. Kaiserslautern), "PASCAL aus didaktisch-methodischer Sicht." (*
"PasCiif"fi=Om the pOint of view of teaching methods." *)
Brunnstein (Univ. Hamburg): "Erste Erfahrungen mit dem Einsatz von PASCAL-E im
Schulversuch. 1I
(* "First
experiences
on
the
introduction
project." *)
H. J. Hoffman (TH Darmstadt): "Uberlegungen zu PASCAL und
(* "Overview of Pascal and Pascal implementations."
of PASCAL-E into a school
zur
PASCAL-Implementierung."
*)
M. Sommer (Siemens Muenchen), "Das PASCAL-BS 2000 Programmiersystem." (* "The Pascal-BS
2000 Programming System." *)
R. T. Kolsch
(Univ.
Kiel),
"Laufzeitbeschleunigung
durch
den
Einsatz
von
Mikroprogramnien." (* "Run-time system through a microprogram." *)
H.
D. Petersen (Univ. Stuttgart), "Uber die Implementierung von PASCAL auf der TR 440."
(* "Implementing Pascal on the TR 440."
H.
~
Verhaltens
*)
(Kernforschungszentrum Karlsruhe), "Hilfsmittel zur
von
PASCAL-Programmen."
(* Aids
to
Weller
(Philips,
Eiserfeld):
des
dynamischen
analysis of the dynamic constructs of
PASCAL programs. *)
G. Peresch and G. Winterstein, "Testdatengenerierung
dat~ation for Pascal programs." *)
Th.
Analyse
fuer
"Concurrent
PASCAL-Programme."
PASCAL
als
(* "Test
Entwurfs-
Implementierungssprache fuer ein kommerziel1es Betriebssystem." (* Concurrent
project and implementation language for a commercial operating system. II *)
und
Pascal
Spiess (Univ. Braunschweig): "Die Implementierung von PASCAL fuer die PRIME 300."
(* "Implementing Pascal on the PRIME 300." *)
W. Metzger (Univ. Karlsruhe), "Entwurf eines dialogorienteirten Programmiersystems fuer
Kleinrechner auf der Basis der Programmiersprache PASCAL." (* A dialogue-oriented
programming system for a mini-computer based on the programming language PASCAL." *)
W. Remmele (Siemens Muenchen), "Ein portables PASCAL-System fur Mikro-rechner {PPS)."
{* "A portable PASCAL system for micro-computers (PP's)." *)
ACM '77, Seattle, held 77/10/27.
(* report from Richard J. Cichelli, loosely transcribed from a phone conversation: *)
"Basically, ACM '77 screwed up the schedule so that the computer chess
tournament and SIGFISH conflicted with the PUG meeting and confused everyone.
Fifteen people came to the Pascal gathering.
"Some
people
quoted
Matwin, M. Missala, "A Simple, Machine Independent Tool for Obtaining Rough Measures
of Pascal Programs," SIGPLAN Notices (11:8), August, 1976, pp. 42-45.
"Description of a Pascal prog~ augment Pascal programs with code to gather
execution time information by procedure entry and exit." (* A listing of the programs
will appear as a software tool in PUGN 12. *)
James L. Peterson, "On the Formatting of Pascal Programs," SIGPLAN Notices (12:12),
December, 1977, pp. 83-86.
"One aspect of programming style which affects the usefulness of programs is their
readability. A program is readable if a programmer can pick up the program and read and
understand it. Many aspects of style affect readability, including variable names,
commenting, modularity, and formatting. It is this last aspect of readability that we
discuss here." (* from the abstract *)
P. Roy, "Linear Flowchart Generator for a
November, 1976, pp. 58-64.
"This article refers to a paper by Nassi
introduced a type of flowchart specially
defined a similar flowchart language for
program
which,
given
a
program
Structured Language," SIGPLAN Notices (11:11),
and Shneiderman published in this review. They
designed for structured programming. We have
the Pascal programming language and designed a
written
in
Pascal,
generates
the
corresponding
flowchart. The article presents a description of the output produced by this
generator." (* from the abstract *)
flowchart
Joachim W. Schmidt, "Some High Level Language Constructs for Data of Type Relation," ACM
Transactions on Database Systems (2:3), September, 1977, pp. 247-261.
"For the extension of high level languages by data types of mode relation, three
language constructs are proposed and discussed: a repetition statement controlled by
relations, predicates as a generalization of Boolean expressions, and a constructor for
relations using predicates. The language constructs are developed step by step starting
with a set of elementary operations on relations. They are designed to fit into Pascal
without introducing too many additional concepts. 1I (* from the abstract *)
D. A. Thomas, B. Phaguvek, R. J. Buhr, "Validation Algorithms for Pointer Values in DBTG
(Data Base Task Group)
Data
Bases,"
ACM
Transactions
on
Database
Systems
(2:4),
December, 1977, pp. 352-369.
"This paper develops algorithms for verifying pointer values in DBTG (Data Base Task
Group) type databases. To validate pointer implemented access paths and set structures,
two algorithms are developed. The first procedure exploits the 'typed pointer'
concept
employed in modern programming languages to diagnose abnormalities in directories and
set instances. The second algorithm completes pointer validation by examining set
instances to ensure that each DBTG set has a unique owner. Sequential processing is
used by both algorithms, allowing a straightforward implementation which is efficient
in both time and space. As presented, the algorithms are independent of implementation
schema and physical structure." (* from the abstract *)
a "Pascal's I/O is no good" rumor. The confusion was in
thinking that textfiles were Pascal's only form of I/O.
"I emphasized that there should be no attempt to add things to Pascal to make
things compatible with COBOL/FORTRAN; Pascal's I/O is fine: textfiles are for
IMPLEMENTATIONS
people, not for programs."
D. Bates, R. Cailliau, "Experience with Pascal
(* Ken Bowles is planning a summer workshop about Pascal. See the
his letter with details. *)
letters
section
for
Notices (12:11), November, 1977, pp. 10-22.
"This paper relates the history of an
Compilers
on
Mini-Computers,"
SIGPLAN
-c
implementation of the language Pascal on a
:J:>
mini-computer. The unnecessary difficulties encountered on the way led the authors to
reflect on the distribution of "portable" compilers in general and suggest some
Gl
guidelines for the future. Their experiences described within show that it should be
possible to implement a P4 Pascal" System on any 16-bit mini-computer in less than two
man months, given an implementor already familiar with the target machine." (* From the
abstract *)
rn
R. D. Tennent, "A Denotational Definition of the Programming Language PASCAL," Technical
Report 77-47, Department of Computing and Information SCience, Queen's University,
Kingston, Ontario, Canada, July 1977.
"This report presents a formal definition of the semantics of the programming language
LANGUAGES
PASCAL,
(* This section
miscellaneous
sub-divided
articles
for
this
issue.
The
first
section
is
a
set
of
in alphabetical order by author. The second is a semi-complete
list of articles on the subject of dynamic arrays in Pascal. The
bibliography on Concurrent Pascal, supplied by Rich Stevens. *)
R.
third
is
a
static
aspects such as scope and type checking, using the concepts
Conradi, "Further Critical Comments on Pascal, Particularly as a Systems Programming
There has recyntly been some controversy between Habermann and Lecarme and Desjardins
on Pascal in' "Acta Informatica." This paper contains some more comments on Pascal from
a systems programmer's point of view. Some undefined points are first treated. Then
Pascal's datatypes are critically reviewed. A few remarks on common Pascal constructs
are also given. Since the author has experience with
comparisons
between
Pascal
and
MARY
will
the
be
programming
made."
language
(* from
the
Not?"
SIGPLAN
proof
rules,
MARY,
M. Yasumura, "Evolution of Loop Statements," SIGPLAN Notices (12 :9), September, 1977,
pp. 124-129.
"This paper is motivated by two papers. One is written by Ledgard and Marcotty and the
other by Ishihata and Hikita. The former paper is a good summary of control structures
but its conclusions are seriously questioned. The latter paper is the report of a new
Pascal computer in which Zahn's "event" construct is implemented. That construct is,
however, shown to be unsuitable to Pascal." (* From the abstract *)
(* A chronological exchange on dynamic arrays in Pascal *)
author's
abstract *)
R. Edwards, "Is Pascal a Logical Subset of ALGOL 68 or
June, 1977, pp. 184-91.
as a standard from which to derive complete informal descriptions, valid
and correct implementations." (* From the abstract *)
short
Language," SIGPLAN Notices (11:10, November, 1976, pp. 8-25.
some
including
and notation of denotational semantics. It is suggested that the definition can be used
is
Notices
(12:6),
"It is often believed that Pascal is
ALGOL 68 in miniature
B. J. MacLennan, "A Note on Dynamic Arrays in Pascal," SIGPLAN Notices (10:9),
September, 1975, pp. 39-40.
"Pascal is frequently criticized for its lack of any variety of dynamic array facility.
This lack is particularly unfortunate for systems programs which must manipulate
activation records and segments whose sizes are not known at compile time." (* From the
abstract. *)
well structured
it will be argued that both beliefs are badly founded." (* from the abstract *)
J. Holden and I. C. Wand, "Experience with the Programming Language MODULA," a paper
presented to the 1977 IFAC/IFIP Real Time Programming Workshop held at Eindhoven,
Netherlands, 77/06/20-22.
"This paper describes a compiler for MODULA, written in the programming language BCPL,
which runs on a PDP-11/40 computer under the RSX-11D operating system. The code
produced by the compiler is run on PDP-11s under a very small executive (less than 150
words). The quality of the code produced compares well with that of compilers for other
high-level languages.
The use of the language is illustrated by the construction of a real-time scheduler
similar to that written by Brinch Hansen in CONCURRENT PASCAL. A brief discussion is
given of experience gained in the use of the language and comments made about
inclusion and exclusion of certain language features." (* From the abstract *)
the
W. H. Kaubisch, R. H. Perrott, and C. A. R. Hoare, "Quasiparallel programming,"
Software: Practice and Experience (6), 1976, 341-356.
"This paper describes SIMONE, and extension of PASCAL, which provides the quasiparallel
programming facility of SIMULA 67, but without classes or references. The language is
intended to be suitable for the design, testing and simulation of operating system
algorithms. It is illustrated by simple examples, suitable as project material in a
N. Wirth, "Comment on A Note on Dynamic Arrays in Pascal," SIGPLAN Notices (11:1),
January, 1976, pp. 37-38.
"A reply to B. J. MacLennan and a suggested alternative." (* From the abstract. *)
J. Steensgaard-Madsen, "More on Dynamic Arrays in Pascal," SIGPLAN Notices (11:5), May,
1976, pp. 63-64.
"A further proposal in reply to Wirth's article." (* From the abstract. *)
C. Jacobi, "Dynamic Array Parameters,tI Pascal User's
Group
Newletter
(5),
September,
1976, pp. 23-25.
"A
proposed
description
of dynamic array parameters is given in the form of a set of
amendmimts to the book, Pascal User Uanual and Report by Jensen and Wirth with syntax
diagrams and examples. The extension was implemented successfully in the Pascal-6000
compiler." (* From the abstract. *)
S.Pokrovsky, "Formal Types and Their Application to Dynamic Arrays in Pascal,"
Notices (11:10), October 1976, pp. 36-42.
"The
formal
~
SIGPLAN
concept is presented as a means to uniformly introduce in the Pascal
language the dynamic array facility (which may be done as a pure extension) and
procedure
formal
specifications (which would require some changes in the standard language)."
(* From the abstract. *)
course on operating systems." (* from the abstract *)
E. N. Kittlitz, "Block Statements and Synonyms for Pascal," SIGPLAN Notices (11:10),
October, 1976, pp. 32-35.
"PYXIS is a language which is the result of (still continuing) modifications to Wirth's
PASCAL 1 system. Many of the language concepts are identical to, or slightly evolved
from PASCAL 1, others are incompatible with Pascal and its apparent design philosophy.
Two new features have been
implemented
in
PYXIS:
block
statements
and
synonyms."
(* From the abstract *)
O. Lecarme, "Is ALGOL 68 a Logical Subset of Pascal or Not?" SIGPLAN Notices (12:12),
December, 1977, pp. 33-35.
"A paper by Roy Edwards uses a comparison of ALGOL 68 and Pascal to make some
disputable assertions. The purpose of the present note is simply to correct the most
serious errors. It follows exactly the structure of Edwards' paper." (* from the
abstract *)
Edward N. Kittlitz, "Another Proposal for Variable
Notices (12:1), January, 1977, pp. 82-86.
"The
syntax,
semantics,
and
some
Size
Arrays
in
Pascal,"
SIGPLAN
implementation details for a flexible array bound
capability in Pascal are discussed. The constructs described are currently implemented
as part of the PYXIS system at the University of Calgary. PYXIS is the result of more
than two years of modifying [ the old Pascal-6000 compiler written by Urs Ammann et.
al.]." (* From the introduction. *)
M. Condict, "The Pascal Dynamic Array Controversy and a Method for Enforcing Global
Assertions," SIGPLAN Notices (12:11), November, 1977, pp. 23-27.
"In a previous article, Wirth commented that allowing
expressions
(rather
than
constants)
as
sub range bounds would produce dynamic array capability
significantly complicating the language. • • • This discussion leads directly
method
for
obtaining
automatic
just
without
into a
enforcement of assertions about variables throughout
their lifetime." (* From the abs tract. *)
--n
rn
t:>:l
=
=
):>
=
-<
Concurrent Pascal Literature:
September 1977
Brinch Hansen, Per., The Programming Language Concurrent Pascal.
on Software Engineering 1, 2 (June 1975), 199.207.
IEEE Trans.
Introduces Concurrent Pascal - an abstract language for concurrent programming.
It extends the sequential programming language Pascal with modules called
processes, monitors, and classes. The language is illustrated by a hierarchical
design of a simple spooling system. The main contribution of Concurrent Pascal
is to extend the monitor concept with an explicit hierarchy of access rights to
shared data structures that can be stated in the program text and checked by a
compiler.
Brinch Hansen, Per., The Solo Operating System.
Experience 6, 2 (April-June 1976), 141-205.
successfully on a PDP 11/45 computer. The book includes the complete text
of these ?rograms and explains how they are structured, programmed, tested,
and descr1bed. It also inclu~es the Concurrent Pascal Report and a description
of the Co~current Pascal Mach1ne. The book suggests promising areas of further
research 1n structured concurrent programming.
Software· Practice
&
Describes the single-user operating system Solo written in Concurrent Pascal.
It supports the development of sequential and concurrent Pascal programs for
the PDP 11/45 computer. Input/output are handled by concurrent processes.
Pascal programs can call one another recursively and pass arbitrary parameters among themselves. This makes it possible to use Pascal as a job
control language. Solo is the first major example of a hierarchical
concurrent program implemented in terms of abstract data types (classes,
monitors, and processes). The paper contains the complete text of the
concurrent program. It is a sequence of nearly independent components
of less than one page of text each.
Brinch Hansen, Per., Experience with Modular Concurrent Programming,
IEEE Trans. on Software Engineering 3, 2 (March 1977), 156.159.
Brinch Hansen, P., Network: A Multiprocessor Program. IEEE Computer Software
Conference, Chicago, Illinois, Nov. 1977.
&Applications
Hartmann, A.C., A Concurrent Pascal Compiler for Minicomputers.
in Computer Science 50, Springer-Verlag, New York, NY, 1977.
Lecture Notes
Describes a seven-pass compiler for Concurrent Pascal. The compiler, written
in sequential Pascal, generates virtual code that can be interpreted on any
l6-bit minicomputer. The function of each pass is described and the intermediate
languages are defined by syntax graphs. Of particular interest is the checking
of access rights to data structures within classes, monitors, and processes.
This is.done exclusively during compilation and is not supported by hardware
protection mechanisms. The compiler has been running on a PDP 11/45 computer
since January 1975.
Brinch Hansen, P .• The Architecture of Concurrent Programs.
Englewood Cliffs, New Jersey, July 1977.
Prentice-Hall,
Presents a method for developing reliable concurrent programs using Concurrent
Pascal. The use of this language is illustrated by three model operating
systems for minicomputers; a single-user operating system, a job-stream
system, and a real-time scheduler. All of them have been running
rn
C/)
TEXTBOOKS
Tony Addyman and 1. R. Wilson,
March-April 1978, 140 pages.
A
short
and
A Practical
Introduction
to
Pascal,
Macl1illan,
concise introduction to Pascal.
S. Alagic and M. A. Aebib, ~ Design ~
Well-structured and ~ Programs, New York: Springer-Verlag, to appear in 1978, 260
pp., $12.80. An undergraduate text. "Using the Pascal language, both the techniques of
top-down
Summarizes the first 2 years of experience with Concurrent Pascal in the design
of three model operating systems. A Concurrent Pascal program consists of
modules (processes, monitors, and classes). The compiler checks that the
data structures of each module are accessed only by the operations defined
in the module. The creative aspect of program construction is the initial
selection of modules and the connection of them into hierarchical structures.
By comparison the detailed implementation of each module is straightforward.
The most important result is that it is possible to build a concurrent program
of one thousand lines out of one-page modules that can be comprehended at a
glance.
:2
Explores the problems of implementing arbitrary forms of process communication
on a mult~pr07essor network. It develops a Concurrent Pascal program that
enables d1str1buted processes to communicate on virtual channels. The
channels cannot deadlock and will deliver all messages within a finite
time. Th7 operation, str~cture, text, and performance of this program
are descr1bed. It was wr1tten, tested and described in 2 weeks and worked
immediately. The program has been running on two PDP 11/45 computers connected
by bus links.
program
design
and
verification of program correctness are presented. Many
examples of program and proof development as well as an explanation of control and data
structures are provided. As a Pascal programming text,
it gives not only advanced
algorithms, which operate on advanced data structures, but also the full axiomatic
definition of Pascal.
"Although an introductory course in programming is presupposed,
no
particular
mathematical background is necessary'. An extensive, carefully chosen sample of
algorighms, including some examples from business data processing, is presented.
Supplementing
this collection is an extensive set of exercises." (* From the
-n
rn
Co
=
=
:>
=
-<
publisher's ad *)
Kenneth L. Bowles, Microcomputer
Problems Solving Using Pascal (* Please note the
title;
it's the first time we've had it right *), New York: Springer-Verlag,
563 p~., $9.80.
Th1s text 1ntroduces problem solving and structured programming using the PASCAL. (sic)
correct
~97?,
language, extended with
built-in
functions
for
graphics.
DeSigned
for
a
one-quarter/semester curriculum at the sophomore/junior level, this book serves a dual
purpose: to teach students an organized approach to solving problems, and to introduce
them to the computer and its applications, which may be of use later in their chosen
professions." (* From the publisher's ad.
See also R. Cichelli's review in this
section. *)
P~ter.Grogono, Programming in~, Addison-Uesley, February, 1978,350 pp., $10.50.
An ~ntroductory book; assumes no prior knowledge of programming linguages or computing
techniques." (* Publisher's ad *)
We hear rumors of more texts to come from the UK: one by Jim Welsh and John Elder
(Dept. of COmPuter Science, Queen's Univ., Belfast, N. Ireland BT7 INN), publisher
unknown; and one by David Watt and Bill Findlay (COmPuting Science Dept., Univ. of
Glasgow, Glasgow, Scotland G12 8QQ) , Pittman Publishers. *)
(*
......
N
NEWS FROM UNIVERSITY OF COLORADO -- PASCAL DISTRIBUTION CENTER
Book Review - (Microcomputer) Problem Solving Using PASCAL
By Kenneth L. Bowles
Springer-Verlag, New York, 1977
ISBN 0-387-90286-4
563 pp. ~9.80
REPORT REQUESTS
The following is a list of reports currently available:
Microcomputer ••• PASCAL, the title sounds like a wish. But it's true.
Professor Bowles of the University of California at San Diego (UCSD)
has full PASCAL (with extensions for graphics, character string
manipulation and direct access files) running on interactive single-user
microcomputer systems - Digital Equipment LSI-ll's, Zilog Z-80's, and
8080 based machines. He expects to soon have Motorola 6800 and MOS
Technology 6502 PASCAL systems as well. Almost all of the software for
these systems is written in machine independent PASCAL.
The text, (Microcomputer) Problem Solving ~ PASCAL, is an integral
part of a revolutionary environment for computing education. As Bowles
says, "PASCAL is clearly the best language now in widespread use for
teaching ••• structured programming at the introductory level". By
using PASCAL Bowles is able to introduce algorithm development and
problem solving as components of top-down, stepwise design. Procedures
are introduced right from the start. Flow of control is presented in
terms of modern programming principles (sequence, selection and iteration).
Recursion is presented as an obvious extension of the procedure mechanism.
Data structures are explained fully and clearly.
$6.50
On Code Generation in a PASCAL Compiler
The PASCAL Compiler: Implementation Notes
An Axiomatic Definition of the Programming
Language Pascal
$4.00
$5.50
Concurrent Pascal Implementation Notes
Sequential Pascal Report
$3.00
Richard J. Cichelli
Research Manager, Computer Applications
American Newspaper Publishers Association/
Research Institute
Easton, PA
~
Department of Mathematics
Lehigh University
Bethlehem, PA
$5.00
~appropriate
North America, there is a $2.50 postage and
Overseas orders will be billed for
postage.
PASCAL SYSTEM REQUESTS
We are receiving a lot of out-of-date order forms. The prices
and options quoted on any form prior to September 1977 are no
longer valid. Most important, please note that tapes will no
longer be accepted from buyers. Please phone for details or
request an up-to-date distribution statement.
-n
rn
tp
;;0
Address requests to:
PASCAL Distribution
University of Colorado
Computing Center
3645 Marine Street
Boulder, CO 80309
U.S.A.
c::
::t:>
;;0
-<
I->
<.D
(303) 492-8131
'"
00
In addition to the compiler/interpreter/editor software, the UCSD system
includes a complete computer aided and managed instruction system. The
CAl lessons parallel the text and permit easy management of very large
introductory classes. The system is s1mple and complete in and of
itself and could also be used effectively by high schools and community
colleges to provide low-cost interactive student computing.
Reviewed by:
$3.00
~For orders from
~handling charge.
Because the text uses graphics and text processing programming examples,
unnecessary numericalization of computer science principles is avoided.
At UCSD students from the arts, humanities and bUSiness disciplines are
able to do just as well writing programs for non-numeric applications as
are more mathematically sophisticated students. (Bowles' UCSD course is
phenomenally successful. More than 650 students from all disciplines
registered for it in the Fall of 1977 before registration had to be
closed. They use more than 20 single-user micro-systems - each costs
about $5,500 and consists of micro computer, diskette storage, keyboard
and graphics display.)
Kenneth Bowles has revolutionized the teaching of introductory computing
at UCSD. The publication of this book and release of the UCSD PASCAL
system will permit other schools to follow his lead.
=
PASCAL-S: A Subset and its Implementation
***
ERRATA TO PASCAL USER MANUAL AND REPORT
(* Note:
second edition
These errata were sent to us by Niklaus Wirth in December. The "whole pages"
referred to in a couple of places were not sent. Niklaus stated that so far
25,000 copies of the book have been sold! *)
0. Key s
p
~
page
1 ~ line
c = code
(11 •• 12 means 11 until 12)
r
replace
i
d
insert
dele te
(after the
line mentioned)
1. Errors (to be corrected mandatorily)
p
1
6
5 •• 6
c
149
154
154
154
158
-15 I"
-19 I"
- 15 I"
-14
r
213 •• 21
" hue" by "hue1"
"1130" by "63 "
"a [ i ,k1 *b[k ,j]" by "A[i ,k1 *8[k,j1"
"c[ i ,j 1 " by "c [ i , j 1 "
I" both lines by
("'")
"Concerning the procedures read, write, readln, writeln, and page'::J>
"see chapter 12."
r
"procedure " by ".l2Iocedures"
-13 I"
z
-8 r
" by"
T re
tag"
-8 i
field values must be listed contiguously and in th<~
order of thei r
decla ra tion
and must no t be changed en
during exec ution ...
::dispose (p)
indicates that storage
occupied
by the variable pT H'l*;
is no longer needed.
If
the second form of new was" ........
used to allocate the variable then
" ........
"dispose(p,tl, . . . . tn) with identical
tag field
values must be"
"
used
to indicate
that
st~rage occupied by this"
va rian t i s no longe I" needed."
-13 i
'+'
no line feed (overprinting)"
-17 •• -16 exchange the two lines
I"
whole page by the correctad one to be found in the enclosure
both lines by
of
"construct.
Enclosure
of
se quence
con struc ts"
a
repetition"158
"by
the
meta
brackets
{ .and
implies
their
158
21
12 I"
whole line by
except"158
"Assignment
is
type,
po ssible
va riable s
to
of any
15 r
35
whole line by
"constant value in the subrange ,where the lower bound must not be"
16 r
"less
than
the" by
35
"greater than the"
513
8
d
whole line
"implementations" by "Implementations"
513
9 r
513
"first operand is a scalar type ," by
-4 I"
"second
operand
is of
a
se t"
165
513
-3 •• -1 I" all the lines by
type,
the
first
of
its associated base type; the' 166
resul t is true
when the first is an
element of the' 167
second, otherwise false ."
59 -11 •• -113 I" both lines by
be'2. Printing Errors (to be corrected optionally)
"NLUlit: The
standard
procedures J:lUl.e..j;
(rewri te) must not
"a ppl ied to the file in put (0 utput) • "
"a
[
i
1
..
by
"a
[
11
"
69
8
I"
p
1
c
"Then ," by "Then:"
86
17 I"
86
18 d
whole line
39
6
r
"eof(f)" by "eof(x) .....
89
12 I"
"multidimentional" by "multidimensional"
613
-7 I"
"printeo" by "printed"
"textfiles." by "files."
913 -8
r
61
-1
r
"5S"
by
"59"
"paramenter" by "parameter"
97
7 I"
64
13 r
" ne" by "one"
H5 25 •• 26 I" bo th 1 1.-n e s by
71
"paramen te r" by "pe rame te r 0'
3 r
"read, readln, write, writeln are discussed in chapter 12."
., f" by "of"
71 -10 I"
" by
-4 r
91
13
r
" and are subsituted" by "and are substituted"
They must
not
be
changed"
96 - 11
"nf" by "of"
r
1135 -4 i
during exec ution •
.......f .. by "ll.f"
17 r
the" 98
"dispose (p)
indicates
that
storage
occupied
by
.. ut" by "out"
99 -5 r
variable pT is no longer needed."
.. by "
1135 -14 r
"procedure ~. by :nrocedu:':"8s"
The"
1135 -1
r
1135 -1
tag field values must be identical to tho se "1~5 -13 I"
i
.. --------by
---------163
"if" by "If"
14 I"
used when allocating the variable."
163 -113 I"
"i f" by "I f"
"~i.w:J..ll" b y "0 oe ra to r.s "
1138
2
I"
"if" by "If"
163 -7
r
1113
12 •• 13 d both lines
116
1 d
"PASCAL"
118
r
whole page by the corrected one to be found in the enclosure
~_~~:~~::_~~:::~~:_:~:::~~:~~:
126 •• 1281"
all three pages by the corrected ones to be found in the enclosure
"three" by "four"
136 -H' I"
p
c
1
"and
procedure
or" by
136 -9 r
proced ure
and"
"p .. by "P;"
32 -16 I"
1413
15 .. 19 r ell the lines by
"The general" by "Its"
I"
the
meaning
of
a"
36
-113
::~,~
this
has in
general
no
effect on
36 -7 r
whole line by
"scalar or subrange
type
(where
types
in tege I"
"program (for a restriction see 9.1 •. 2.);
but i t is a hint to tha"
"index" by "not allowable index"
I"
::compiler that storage should be economized
even at the price of" 36
42
.. field identifier is the smallest" by
I"
Some loss in ef'ficiency of access.,
and
even if this may expand"
"field identifier is the innermost"
"the code
necessary for
expressing access to components of the"
";"
by
-6
I"
"structure."
59
2
I"
142
"test for equali ty." by
fJ6
-4 r
::;" by
.. by ..
"assignment and the"
67 -3 I"
";" bye .....
6
I"
142 -4
"test for equali ty."
69
i
.. ( 6)" by" [ 61 ..
r
145 -113
"operands, i.e.
by
76
I"
"schemas" by "schemes"
"0 pera to rs
and"
89 -1 1 r
18 r
":" by ":"
145 -9 I"
whole line by
1135
by ",
preceded
by an appropriate number of"
"operands, i.e. variables, constants, and functions."
163 -6 r
blanks as specified by m.
146
12
r
"" by ""
163 -6 i
I"
-"
rn
to
;;:0
=
:J>
:;:0
-<
and
real
are
-0
128
127
»
C/)
n
When
a
reference
Appendix A), then
x1
in
this
index
is not a
section name
(e.g.
the reference may be of the following forms:
x 1 .x2
x1.x2.x3
x1 is always the chapter number. x2 may be a capital letter in
which
case
i t may be followed by x3, a number, and refers to a
chapter section. When x2 is a small letter, the reference is a
figure; when x2 is a number, the reference is a program.
alfa (PASCAL 6000-3.4)
13.0.1
array types
6
assignment statement
4.A
binary tree
11.A
block
0
RNF defini tion s
A ppendi x D
Roolean
2.A
case statement
4.0.2
char
2.0
character sets
13.8.3
commen t
1
compile r erro r me ssa!les
14.C .1, Appendix E
compiler options (PASCAL 6000-3.4)
13.8
compound statement
4.8
condi tional statements
4.0
constant declaration part
3.C
control statements (PASCAL 6000-3.4)
14.A
control variable
4.C.3
da ta ty pe s
2
declaration part
3
empty statement
4.8
equivalence
2.A
ex pre s sion
4.A
field list
7
figure s
after (list insertion)
10.c
alternative representation of standard symbols
ASCII character set (with COC's ordering)
13.a
before (list insertion)
10.b
binary tree structure
11.b
block structure
0.b
CDC scientific character set (with 64 elements)
expressions
11 .. 8
iden ti fie r
l.a
linked list
10.a
syntex diagram of program structure
0.a
two sample people
7.a
unsigned number
1.b
file types
9
external files (PASCAL 6000-3.4)
13.8 .1
representation in PASCAL 6000-3.4
13.8.2
segmen ted file s (PASCAL 6000-3.4)
13.A .1
textfiles
9.A
for statement
4.C.3
fo rwa rd refe rence
11.C
functions
11.8
declaration part
3.F
de signa tor
11.8
heading
11.B
predefined (PASCAL 6000- 3.4)
1 3.D .2
standard, table of
Appendix A
global variables
11.A
goto statement
4.E
Appendix C
identifiers, table of standard
if statement
4.0.1
implication
2.A
input
9.8
inte!ler
2.B
I/D
12
label s
case
7.A
declaration part
3.8
goto
3.B, 4.E
11 sts (linked)
10
11.A
local variables
name precedence
11.A
no ta tion
1
numbe rs
13.b
13.a
operator precedence
4.A
operators, summary of Appendix 8
output
9.B
packed structures
6
parameters
11.A
PASCAL 6000-3.4
13, 14
ocinter types
10
proced ure s
11.A
declaration part
3.F
external procedures (PASCAL 6000-3.4)
heading
11.A
predefined (PASCAL 6000-3.4)
13.D.2
procedure statement
1 1.A
standard, table of
Appendix A
prog ram heading
3.A
(PASCAL 6000-3.4)
13.B .1
programs and program parts
begin end
4.1
bi sec t
11.6
complex
7.1
convert
3.1
cosine
4.5
egalfa
13.1
egj"or
4.4
egrepeat
4.3
egwhile
4.2
examples of goto
4.E
exponen tia tion
4.8
expon 2
11.8
fo rwa rd refe rence
11.C
frequency count
9.1
graph 1 4.9
g ra ph 2 6.2
infla tion
0.1
insert
9.2
matrixmul
6.3
merge two files
minmax
»
r
::2
9
6.1
minmax2
11.1
minmax3
11.2
parameters
11.3
10
pointers, construction via
postfix
11.4
primes
8.2
recursivegcd
11.9
roman
4.7
setop
8.1
sideffect
11.7
sum file of real numbers
9
summing
4.6
tree traversal
11.5
read, the standard procedure
12.A
real
2.C
record types
7
relational operator
2.A, 4.A
repeat statemEtnt
4.C.2
repetitive statements
4.C
re se rved wo rd s--see wo rd -cI el imi te rs
restrictions (PASCAL 6000-3.4)
13.C
run -time error messages
14.C.2
scalar types
5.A
schema ta
read a text
9.A
read a text from "input"
9.A
read and write a segmented file
13.A.1
reading a segmented file
13.A.1
13.A.2 reading arbitrary number of numerical
i terns from a textfile
12.A
write a segmented file
13.A.1
wri te a text
9.A
write a text onto "output"
9.A
wri te a te x t x to ,y
9.A
seo pe
0
sepa ra to rs
se top e ra to r s 8
Set types
8
side effec t
11.8
standard identifiers Appendix C
string
1, 6
subrange types
5.B
syntax diagrams Appendix 0
tables
block structure
0
defaul t value for field width
13.B.4
operations on textfiles
9.A
printer control characters
9.8, 13.8.4
special symbols
1
truth val ue s
2.A
rn
::e::
C/)
~
I--'
I--'
-0
:r:>
167
REVIEW OF PASCAL NEWSLETTERS
parameter qroup
painter type
poin ter variable
procedure and function
declaration part
procedure
procedure
procedure
procedure
declaration
heading
identifier
or function declaration
proced ure 5ta temen t
prog ram
proqram headinq
program parameters
record section
record type
reco rd va riab Ie
reco rct va riable 1 is t
mfe ranced va riable
rels tional opera tor
repeat statement
re pe ti ti va sta temen t
resul t type
scalar type
scale factor
set
set type
sign
simple expression
sim pI e s ta temen t
simple type
special symbol
sta tem en t
statement part
string
struc tured sta temen t
structured type
sub ran ge type
tag field
term
type
type defini tion
type definition part
type identifier
~labelled
statement
~packed structured type
unsigned constant
~ signed integer
1.J1 siqned numbe r
unsigned real
teriable
variable decla ra tion
va riable ctecla ra tion part
va riable identifier
\.€I. rian t
variant paTt
\Nh 1.1 e s ta to IT] en t
wi th s ta temen t
10.
6.3
7.3
5, 6, 7,
AND
8
Because issues 5, 6, 7, and 8 are now out of print, we ought to lay them to rest
properly. This will end a lot of curiousity among new PUG members regarding their
contents.
10.
111.
10.
9.1.2
10.
9.1.2
13.
13.
13.
6.2.2
6.2.2
7.2.2
9.2.4
7.3
8.1.4
9.2.3.2
9.2.3
11 •
6. 1. 1
4.
8.
6.2.3
4.
8.
9.1
6.1
3.
9.
10.
4.
9.2
6.2
6.1.3
6.2.2
8.
6.
6.
10.
6.1
9.
6.2
8.
4.
4.
4.
7.
7.
10.
7.1
6.2.2
6.2.2
r;. 2.3.1
9.2.4
en
\)
:r:>
r:2
rn
Issues 5-8 were the first to be produced under PUG auspices - see explanation on
page 11 of Pascal News 9/10, September, 1977. I suggest you contact PUG members near you
and photocopy any issues or parts of issues you really want.
- Andy Mickel
::e::
en
Pascal Newsletter #5, September, 1976.
......
......
:f:t:
Editor's Contribution: established user group and newsletter policies; recounted the
history of the formation of Pascal User's Group over the previous year; described
Pascal activities at the University of Minnesota; suggested that all was not well
with Pascal because implementations proliferated different features, implementors
and critics disregarded Pascal's language design goals, and finally people not
having realized the importance of simply making the use of Pascal a respectable
activity; acknowledgments to all that helped PUG make a start.
Here and There: 2 conference announcements - a Pascal get-together at ACM '76
in Houston and a preliminary notice of the Pascal Symposium in Southampton in March.
a summary of existing or planned textbooks on Pascal; news from Pascalers; errata
to the second edition of Pascal User Manual and Report.
Articles:
"Designing Data Structures by Step-wise Refinement"
- Richard J. Cichelli
[Dijksta and Wirth have defined the principles of systematic programming. They
illustrated these principles'by designing programs whose control structures
reflected hierarchical abstractions of their logic flow. In this paper, systematic
programming principles are applied to the design of a program's data structures.]
"In Defense of Formatted Input"
- John Eisenberg
[Formatted input can be useful in many cases, and almost necessary in others.
Thre'e examples of "typical" basic computer science problems are presented which
would be inconvenient or next to impossible without the use of formatted input.]
"Overlays: A Proposal"
- James F. Miner
[As the availability of Pascal for serious productions grows wider, it will become
evident that many implementations will need to cater to features commonly
employed in production work which are not currently found in implementations of
Pascal. The need to reduce the amount of storage required for a program's object
code is such a feature and a proposal for overlays is given here as a remedy.]
"'Minor' Problems in Pascal"
- Timothy M. Bonham
[A number of syntactic details in Pascal are criticized - not to prove that Pascal
is a bad language, but on the contrary to perfect a language which is easily one
of the best around, because of its logical clarity, austerity, and the readability
of source programs.]
"Dynamic Array Parameters"
- Chris Jacobi
[A description is given of a proposed extension to Pascal-6000 to implement dynamic
array parameters. This solves a serious problem in the construction of subprogram
libraries written in Pascal. A set of amendments to the User Manual and Report
are given, as well as syntax diagrams and an example program.]
Articles:
Open Forum:
urndexed Files"
- Svend Knudsen
75/11/05 John Eisenberg to Andy Mickel: [Pascal-S, University of Illinois PDP-II Pascal,
the User's Group]
75/11/22 Urs Ammann to Andy Mickel: [Pascal-6000 extensions (dynamic array parameters
value part, constructors); Pascal Day in Switzerland]
75/11/25 Andy Mickel to Niklaus Wirth: [questions about the language Pascal, changes
to the language, and to features in Pascal-6000]
75/12/10 Niklaus Wirth to Andy Mickel: [distinguish clearly between language and
implementation; reply to questions about changes; literature.about Pascal]
75/12/29 Andy Mickel to Niklaus Wirth: [looking at the nature of change - several
versions of the Pascal Report, details on Pascal-6000 changes, conventionalized
extensions; Pascal Newsletter / Pascal User's Group]
76/01/12 Ed Fourt to Andy Mickel: [Lawrence Berkeley Labs and Pascal-6000]
76/01/14 Hellmut Golde to Andy Mickel: [Pascal-6000 at the University of Washington
Pascal-Fortran subprogram linkage]
76/03/08 Wilhelm Burger to Andy Mickel: [Pascal-6000 at the University of Texas, and
implementation changes]
76/03/09 Richard Cichelli to Andy Mickel: [Soma cube paper, Pascal at Lehigh University
DEC PDP 11 Pascal and UNIX]
76/03/15 Andy Mickel to George Richmond: [Where is Pascal Newsletter #4?, our plans
for the User's Group / Newsletter, plans for the transition]
76/04/05 Susan Stallard to Andy Mickel: [IBM 370 Pascal at the University of Southern
California]
76/05/04 Philip Enslow to Andy Mickel: [Pascal-6000 at Georgia Tech, Brinch Hansen
Pascal on the B5700]
76/05/23 Harry M. Murphy to Andy Mickel: [Pascal-6000 at Air Force Weapons Labrrtory
variable dimension array problems]
76/05/26 David Elliot Shaw to Andy Mickel: [PDP-II Pascal employment at Structured
Systems Corporation]
76/05/27 Charles L. Lawson to Andy Mickel: [Pascal and Numerical Software, adjustable
array dimension problems. Pascal on the 1108 at Jet Propulsion Labs]
76/06/18 George Richmond to Andy Mickel: [Pascal Newsletter #4, updates on distribution
information on Pascal-6000 and Pascal-P]
76/06/18 Steve Bellovin to Andy Mickel: [Pascal on the 370 at the University of North
Carolina - Chapel Hill, problems with Pascal-P2]
76/07/01 James Kendall to Andy Mickel: [Pascal on several machines at the Texas State
MHMR Department]
76/07/22 Steven Soule to Andy Mickel: [Pascal at the University of Calgary, Pascal's
inability to subvert Fortran]
76/07/23 Mike Hagerty to Andy Mickel: [Pascal-6000 modifications, Pascal Standards
committee, solicit ACM sponsorship, formatted reads]
76/07/23 George Richmond to Niklaus Wirth: [Explanation of current situation regarding
distribution of compilers, Pascal Newsletter and transfer of duties to other persons]
Implementation Notes: Checklist, Pascal P3 and P4, Pascal Trunk, PascalJ, Pascal-S
Machine Dependent Implementations: B6700, CDC-6000, DEC PDP-II, DECsystem 10,
Honeywell 6000, IBM 360/370, Univac 1100.
Pascal Newsletter #6, November, 1976.
Editor's Contribution: Standards - course to take very confusing; Pascal User's Group
mechanics and finances; feedback from PUGN#5; establishment of a PUG outpost in
the United Kingdom.
[In addition to the possibility of dividing sequential files into segments
(creating a "segmented file"), it is also possible to construct, read, and
modify indexed files. This feature also covers the need for rapid location and
modification of segments.]
liThe Need for Hierarchy and Structure in Language Management"
- G. Michael Schneider
[I find it quite ironic that so much concern is being paid to problems of structure
and organization of statements within the Pascal language but so little to the
structure and organization of the management of the language itself. By this I
mean that there is currently lacking a formal administrative hierarchy for the
handling of questions relating to language standards, specifications, and
ext ens ions]
"Pascal Potpourri"
- Richard J. Cichelli
[A set of (perhaps ill-formed) topics for the Pascal User is presented for debate:
the problem of direct access files, standards and the language Pascal, software
tools for the Pascal user]
"The Case for Extending Pascal's I/O"
- Michael Patrick Hagerty
[With the introduction and subsequent increase in the popularity of Pascal, a number
of papers concerning the language, its features and deficiencies, have appeared
in various journals and newsletters.
Champions of the language have extolled the
virtues of its structure and unambiguous grammar using both example and theory as
justification of its usefulness. Pascal critics on the other hand, have questioned
the claim of the proponents that Pascal will replace FORTRAN, pointing to the
inadequacies of the language in several areas. Wirth (1974) defends the absence of
certain "favorite features" as necessary to avoid inefficient programming solutions
or reliance upon features which are contrary to the aim of clarity and reliability.
When the features being debated refer to the flexible input of large amounts
of data, the critics hold the stronge~ hand, and with much justification.]
"General Thoughts on Pascal Arising out of Correspondence Between Southampton
and Tasmania"
- Arthur Sale
[a set of topics of potential interest to the Pascal community:
Mixed languages,
Portability, Inclusions of Source Text, Files, Standards]
Open Forum:
76/07/28 Rich Cichelli to Andy Mickel: [Ifuat happened to Pascal-6000 Release 2?
Pascal CAl system]
76/07/30 Brian Rowswell to Andy Mickel: [Pascal at the University of Sydney Computing
Centre]
76/08/17 Willett Kempton to Andy Mickel: [Pascal for applications in anthropology, the
case for formatted reads.]
76/08/31 Henry Ledgard to Andy Mickel: [Pascal Prettyprinter at the University of
Massachusetts]
76/09/13 Duke Haiduk to Andy Mickel: [Pascal on DEC-I0 for teaching at West Texas
State University]
76/09/16 Olivier Lecarme to Andy Mickel: [European distribution of Pascal Newsletter,
PUG session at IFIP '77, book by Bill Atwood, news about Pascal in France (activities
and efforts), Pascal language publication notation, comments on Tim Bonham's paper
Here and There: News from Pascalers; empirical study of Pascal programs by John Banning
at Stanford; agenda for the international Pascal Symposium at the University of
Southampton; update on textbooks; update to errata to the Second Edition of Pascal
User Manual and Report; listing of contents of Pascal Newsletters 1, 2, 3, and 4;
PUG roster of 516 members.
news of translation of the book Systematic Programming into French]
76/09/17 Robert Novak to Andy Mickel: [remarks in reply to Eisenberg's article on
formatted input.]
76/09/22 Stephen Young to Andy Hickel: [Impressed with Pascal - should have a Pascal
standards committee]
76/09/29 Tony Addyman to Andy Mickel: [Pascal-6000 details, Pascal standards group
should be formed.]
-n
rn
tr.1
::0
=
:J>
::0
-<
f-'
lD
'-J
00
Open Forum:
76/10/09 Rich Cichelli to Andy Mickel: [Contribution of William Waite's dues to PUG
"Which Language?" article in British Computer Society Bulletin]
76/10/11 Charles Hedrick to Andy Mickel: [Pascal versus SAIL and PL/1 in AI work,
Pascal on the DEC-10 at the University of Illinois]
76/10/15 Niklaus Wirth to Andy Mickel: [disagreement with the policy of printing
private letters and letters to the editor]
76/10/21 Duke Haiduk to Andy Mickel: [liked Pascal Newsletter #5, Brinch Hansen Pascal
on the DEC-10?]
76/10/22 Arthur Sale to Andy Mickel: [series of letters between Southampton and
Tasmania may be of interest; Pascal implementation proliferation; B6700 Pascal]
76/10/04 Judy Mullins to Arthur Sale: [ICL 1900 / 2900 Pascal: I/O, standardization,
compiler options, else in case, syntactic sugar]
76/10/22 Arthur Sale to Judy Mullins:
[standards, character sets, B6700 commenting
conventions, else in case, mixed languages, files, diagnostics, compiler options
sets, bounds checking, B6700s: arrays and off stack storage, pointers speed & space]
76/10/29 Jonathan Sachs to Andy Mickel: [Interest in the Tokyo 370 compiler at
Trans Union Systems Corporation]
76/11/04 Tim Bonham to PUG membership: [Comments on Jacobi's Dynamic Array Parameters
standardization, Pascal on the IBM System 3?, CDC 3200?]
76/11/18 David Barron to Andy Mickel:
[Against the continuation of Fortran "carriage
control character" conventions into Pascal]
76/12/09 Andy Mickel to Niklaus Wirth: [PUG should have your reaction to the issue of
formal standardization of Pascal]
76/12/10 Andy Mickel to Chris Jacobi: [PUG needs the results of the Pascal-P
questionaire and sites using Pascal-P]
77/01/02 Arthur Brown to Andy Mickel: [A Pascal standards committee should be set up standard Pascal should be close to the Revised Report and extensions to standard
Pascal compilers should be written in standard Pascal.]
77/01/03 Jim Miner to Andy Mickel: [Revised Report good in its stated aim; but
production uses of Pascal dictate a need for a standard. Fear that a committee
will decide what the standard will be - current users are vulnerable because we
have an investment in code.]
Implementation Notes: General Information, Checklist, Pascal-P, PascalJ, Software
Writing Tools, B6700/7700, CII Iris 80, 10070, DEC PDP-8, DEC PDP-II, Foxboro Fox-1
IBM 360/370, IBM 1130, Interdata 8/32, Univac 90/70, 1100, Xerox Sigma 6/9,Sigma 7.
Pascal Newsletter 118,May, 1977.
Implementation Notes:
General Information, Checklist, Pascal-P, Concurrent Pascal,
Pascal prettyprinter, Machine Dependent Implementations: B1700, B4700, B6700,7700
CII 10070, Iris 50, Iris 80, CDC-6000, CDC-7600, CRAY-1, DECsystem 10, DEC PDP-II
Foxboro FOX-I, HP-2100, 3000, Honeywell H316, level 66, IBM 360/370, IBM 1130
Interdata 7/16, Motorola 6800, Prime P-400, Siemens 4004-157, Univac 1100,
Varian V73, Xerox Sigma 6, 7, 9.
Pascal Newsletter #7, February, 1977.
Editor's Contribution: Promoting Pascal Usage (experience at the University of
Minnesota); Pascal and Standards - conventionalizing extensions; PUG and Pascal
Newsletter mechanics.
Here and There:
News from Pascalers, a new textbook, roster update.
Editor's Contribution: Renewal reminder, new developments with microprocessor Pascal,
PUG and Pascal Newsletter, Pascal publicity, future, backissues, membership, end
of the year acknowledgements.
Here and There: News from Pascalers, 2 Pascal get togethers planned at IFIP '77, and
at ACM '77, Report on the University of Southampton Pascal Symposium, large Books
and Articles section with new policy announced, first news about DoD-1 (a common
language for U.S. Department of Defense use), a book review, several Pascal
applications reported.
Articles:
"Development of a Pascal Compiler for the C.I.I. Iris 50, A Partial History"
- Olivier Lecarme
[The history which is the subject of the present paper takes place in the University
of Nice, a medium-scale University with about fifteen thousand students.
Articles:
"Life, Liberty, and the Pursuit of Unformatted Input"
- David Barron and Judy Mullins
[In PUGN #5, Eisenberg presents three examples which, he claims, demonstrate
the necessity for formatted input. This note attempts to demolish those claims.
•• • WARNING: FORTRAN CAN IMPAIR YOUR JUDGEMENT.]
"Pascal Printer Plotter"
- Herb Rubenstein
[This printer plotter consists of four Pascal callable procedures. A high speed
line-printer or a 132 column hard copy interactive terminal is used for output.
The plots are X-Y graphs scaled to fit a single sheet of printer paper. Axis
labels and axes are automatically set up. Plots may be overlayed and expansions
can be performed to blow up tiny pieces of a plot.]
"Yet Another Look' at Code Generation for Pascal on CDC 6000 and Cyber Machines"
- Lawrence A. Liddiard
[Pascal 2 is amenable to several different methods of compiler length reduction.
As a fellow compiler writer (although since MNF is written in machine language
it may be compared with the last of the dinosaurs speaking to Homo sapiens),
I would rather see the full language specifications and one standard compiler,
than to see small subsets such as Pascal-So For this reason I think it
essential to improve Pascal 2 and with the reductions discussed in this article
it should be possible to obtain load lengths of approximately 30K octal for the
full language rather than the current 44K octal on a CDC 6000 (i. e. a reduction
by one-third).
The
history of the Pascal Compiler development covers several attempts (illustrated by
"T" diagrams) and finally a description of the nearly completed successful effort.]
"A Further Defence of Formatted Input"
- Brian Meekings
[In PUGN #7, Barron and Mullins attempt to demolish the case for formatted input •
Without wishing to blow up the controversy beyond reasonable proportion, I would
like to add a voice in favour of formatting. The addition of formatted input
to supplement the existing unformatted input facilities, can only enhance an
already versatile language.]
"proposals for Pascal"
- George H. Richmond
[A laundry list of idealized proposals are presented making the case for improvement
in the areas of: the representation of Pascal for computer input, compile options,
internal character set, removal of current restrictions and asymmetries, the
program declaration, variant records, the case statement, boolean expressions,
constants, declarations, and constructors, value initialization and own variables,
procedure and function types for compile time checking, dynamic array parameters,
new basic types and operators, transfer functions, extension of relational operators
to structured types, files and text files, formatted input and output, file
handling, overlays, and preambles and postamble.]
"A Proposal for Increased Security in the Use of Variant Records"
- William Barabash, Charles R. Hill, and Richard B. Kieburtz
[The use of variant records in most Pascal Implementations is dangerous because
most compilers do not emit a check for conformity with the value of the tagfield
when a variant field is referenced. Indeed, the latest version of the Revised
Pascal Report defines a language in which the tagfield may even be absent, making
conformity checks impossible! Even so, when the tagfield is present and the
compiler does emit conformity checks automatically, the programmer still has the
ability to dynamically assign values to the tagfield.]
"Update on UCSD Pascal Activities"
- Ken Bowles
[A potpourri of lively events at the University of California, San Diego is
reported including their microprocessor Pascal system on LSI-ll, Z-80, 8080,
6502, and 6800 based systems. Also reports on LSI-ll hardware, other micro
hardware, a proposal for a manufacturer independent Pascal System, news about
an introductory Pascal textbook, the UCSD B6700 compiler, and a sample graphics
picture from the LSI-ll system are given.]
the case statement, and handling of TEXT variables.]
77/03/07 Richard Kieburtz to Niklaus Wirth: [Comments invited by Wirth on complete
typing of formal procedure parameters, field width specifications in the arguments
of the procedure write.
strings.
Also comments on dynamic arrays, array and record constructors,
default in case lists, and formatted input.]
77/03/29 Andy Mickel to Southampton Symposium: [The Future of Pascal (Extensions and
Standardization). A summary of the present state of affairs around Pascal and
the desire for a standard; desirable goals for Pascal and current problems;
consideration of a standard.]
77/04/07 Tony Addyman to Andy Mickel: [News on BSI / ISO standardization effort.
A three page "attention list" of problems in the Pascal Report.]
77/04/24 Andy Mickel to Tony Addyman: [When in the BSI Working Group, don't forget the
principles:
"Some Comments on Pascal 1/0"
- Chris Bishop
[While admitting that Pascal has I/O specifications involving the concept of files
and the GET and PUT statements that are consistent with the flavour of the
language and with theoretical manipulation of data, I feel that it is lacking
in simple, easy to use I/O and in flexible I/O.]
On suggested extensions - relax the restriction on the
maximum cardinality of set types, typed structured constants, and variable length
"don't confuse the language with the implementation ll and IIsome aspects
are intentionally left undefined in Pascal and must be defined by implementation",
possible meanings for omissions in the Revised Report.]
(* * * End of Special Topic: Standards * * *)
77/01/28 Arthur Sale to Andy Mickel: [Pascal has more to fear from its friends than
its enemies, defense of editorial attack in PUGN6; Pascal Files - are Pascal's
files inadequate?, are files variables?, is the best way to random access through
slow array of ••• ? What relation is there between Pascal files and our operating
system files? Pascal's two greatest dangers are from naive extensions and Pascal
Open Forum:
77/01/14 Nick Solntseff to Andy Mickel: [The nature of standardization efforts on
Pascal and perhaps operating system independence as well]
77/01/12 Michael Condict to Andy Mickel: [Comment that "slow array" more appropriate
than Rich Cichelli' s "long array" in PUGN 116 article]
77/01/04 Larry Landis to G. Michael Schneider: [Ao endorsement of Schneider's standards
proposals in PUGN 116 article]
77/02/14 Robert Fraley to Andy Mickel: [A case for revising Pascal -> 3 ~ndatory
extensions for Pascal so that it can compete with FORTRAN: parametrlc arrays
shared variables in separate compilations, and input formatting.]
77/01/24 Mike Hagerty to Andy Mickel:
[On the standard, mods to the standard, mods to
the implementation, available software, otherwise in case]
Special Topic - Standards
..
.
(* A very important exchange regarding standards and conventl0nallzed extensl0ns
follows. At the Southampton Pascal Symposium, Tony Addyman made the case for
a formal ISO standard without a standards committee through BSI. Votes were
taken which called for standardizing the Revised Report with semantics
tightened.up, adopting a set of conventionalized extensions, and a list of
designated extensions not to be conventionalized. *)
.
77/01/31 Niklaus Wirth to Andy Mickel:
[Regarding standards, extendlng Pascal, Standard
Pascal Recommended set of extensions: dynamic array parameters, array and record
constr~ctors; possibility of unnecessary but convenient extens~ons:. default in
case lists, and formatted input. Other extensions per se for ~ndiv~dual.computer
systems admissable but they have no place in the Standard language. Var~ous
comments on PUGN#6, especially regarding criticism of Pas:al:]
77/02/09 J¢rgen Steensgaard-Madsen to Andy Mickel: [Comments lnvlt~d b~ Wirth on
fanaticism.
The language has defects; it has strengths.
Let's be a bit more
cautious.]
77/02/14 Arthur Sale to ~ndy Mickel: [3 criticisms: 1) Sea mail distribution of PUGN
overseas unacceptable, 2) Editorial sniping, 3) Pascal Support - Bill Waite's
criteria.
Distribution of software; we don't need crusaders yet; despite bits
of rubbish PUGN serves a very useful purpose, publishing Arthur Sale - Judy
Mullins correspondence.]
77/04/26 Andy Mickel to Arthur Sale: [Apologies for editorial sniping, reasons for
seamail distribution of PUGN, Pascal files, CDC bias, PUGN's non-academic membership
Pascal usage at Minnesota.]
77/03/04 Olivier Lecarme to Andy Mickel: [PUG produces PUGNs faster than I can read
them. CII Iris 50 news, Pascal Subgroup formed in AFCET (French counterpart
of ACM), compiler writing system.]
77/03/28 Nick Fiddian to Andy Mickel: [Plea to recognize the value to others of the
software products we originate; invest accordingly in faithful standardization down with backstreet implementors.]
~mplementation
Notes: Checklist, General Information, Microprocessors, Software Writing
Tools, Pascal-P4 corrections, Pascal Trunk Compiler, PascalJ, Medula, Feature
Implementation Notes: Reading and Writing Scalars (Arthur Sale), Pointer Values
(Arthur Sale), Pointer Tests (Andy Mickel). Machine Dependent Implementations:
B3700 / B4700, B6700, Computer Automation LSI-2, CDC Cyber 18, CDC 6000,7000,
Cyber 70,170, Data General Nova, DEC-l0, DEC PDP-ll, HP-2100, Honeywell H66,
IBM 360/370, IBM 1130, ICL 1900 / 2900, Intel 8080, Motorola 6800, Nanodata QM-l,
Norsk Data Nord 10, SEMS T1600/Solar, Siemens 4004, 7000, TI ASC, TI 990/9900,
Univac 90/70, Ull00, Varian V70, Zilog Z-80.
initialization of variables, dynamic arrays, exhaustive specif~cat~on of parameters,
ROSTER INC REM ENT (7 7 /12 /31 )
The names listed below represent people who have renewed, changed address or joined PUG
since the roster was printed in PUGN #9/1~.
01002
01451
01545
01581
01609
01701
01701
01701
HENRY F. LEDGARD/ COMPUTER AND INFO. SCI./ U OF MASSACHUSETTS/. AMHERST MA 01002/ (413) 545-2744/ (413) 545-1332
RALPH S. GOODELL/ HILLCREST DRIVE/ HARVARD MA 01451/ (617) 456~8090
JOHN DE ROSA JR./ 3Z-G BRANDYWINE DRIVE/ SHREWSBURY MA 01545
JOHNNY STOVALL/ 15 TURNPIKE RD./ WESTBORO MA 01581/ (617) 366-8911
STEPHEN R. ALPERT/ COMPo SCI. DEPT./ WORCESTER POLYTECHNIC INSTITUTE/ WORCESTER MA 01609/ (617) 753-1411 X416
MARGARETTA HOMMEL/ 43 ADAMS ROAD/ FRAMINGHAM MA 01701/ (617) 879-6848/ (617) 890-8460 X208 X351
BARRY F. MARGOLIUS/ DEPT. OF COMPUTER SCI./ FRAMINGHAM STATE COLLEGE/ FRAMINGHAM MA 01701/ (617) 872-3501 X224/ (617) 266-6648 (HOME)
ROBERT J. OBERG/ DEPT. OF MATH AND COMPUTER SCIENCE/ FRAMINGHAM STATE COLLEGE/ FRAMINGHAM MA 01701/ (617) 852-3501
-n
rn
t:>:I
:;;0
=
::t:>
;;0
-<
01730
01741
01752
01754
01776
01778
01810
01852
01886
01960
02035
02114
02132
02138
02138
02138
02138
02139
02142
02154
02159
02165
02165
02172
02840
02912
02912
03060
03755
03824
06106
06268
06437
06477
06520
06810
06901
07054
07470
07724
08077
08512
08618
08826
08854
08854
08876
08903
09098
10003
10009
10010
10011
10012
10012
10016
10019
10024
10024
10025
10027
10510
10573
11210
11439
11740
ROGER D. ROLES/ COMPUTERVISION CORP./ 201 BURLINGTON RD/ BEDFORD MA 01730/ (617) 275-1800 X212
STEPHEN KLEIN/ 188 JUDY FARM ROAD/ CARLISLE MA 01741
CARL W. SCHWARCZ/ MR 1-2/E27/ DIGITAL EQUIPMENT CORP./ 200 FOREST STREET/ MARLBORO MA 01752/ (617) 481-9511
ROBERT TROCCHI/·EDUCATIONAL PRODUCTS GROUP/ DIGITAL EQUIPMENT CORP./ PARKER STREET - PK3-1/M40/ MAYNARD MA 01754/ (617) 493-3475
RANDY ENGER/ 28 BRIAR PATCH LANE/ SUDBURY MA 01776
PAUL BARR/ EQUIPMENT DIVISION J9/ RAYTHEON CO./ BOSTON POSTROAD/ WAYLAND MA 01778/ (617) 358-2721 X2825
ROBERT I. DEMROW/ 11 LINDA DRIVE/ ANDOVER MA 01810
EDWARD STEEN/ 119 SHERMAN STREET/ LOWELL MA 01852/ (617) 454-9320
RICHARD KRASIN/ FIRST DATA CORP./ 1 MAIN STREET/ WESTFORD MA 01886
SAM CARPENTER/ 22 PULASKI ST. APT. B-7/ PEABODY MA 01960/ (617) 532-0669
WARREN R. BROWN/ D.330/ THE FOXBORO COMPANY/ 38 NEPONSET AVE./ FOXBORO MA 02035/ (617) 543-8750 X2023
RICHARD PITKIN/ COMPUTER NETWORK/ MASS. STATE COLLEGE/ 150 CAUSEWAY ST./ BOSTON MA 02114/ (617) 727-2530
BILL SOUTHWORTH/ 30 POTOMAC ST./ W. ROXBURY MA 02132/ (617) 323-4537
FRED LUHMANN/ ABT ASSOCIATES INC./ 55 WHEELER ST./ CAMBRIDGE MA 02138/ (617) 492-7100 X424
JAMES S. MILLER/ INTERMETRICS INC./ 701 CONCORD AVE./ CAMBRIDGE ~~ 02138/ (617) 661-1840
DENNIS J. MURPHY/ ABT ASSOCIATES INC./ 55 WHEELER ST/ CAlIBRIDGE MA 02138/ (617) 492-7100
ROBERT E. WELLS/ BOLT BERANEK AND NEWMAN INC./ 50 MOULTON STREET/ CAllBRIDGE MA 02138/ (617) 491-1850 X694
CHARLES L. BROOKS/ ABT ASSOCIATES INC./ 55 WHEELER STREET/ CAMBRIDGE MA 02139/ (617) 492-7100
JAMES STEINBERG/ 23/ DOT/TSC/ KENDALL SQUARE/ CAMBRIDGE MA 02142
BRYAN HOPKINS/ EKS/ 200 TRAPELO ROAD/ WALTHAM MA 02154/ (617) 893-3500 X277
LAWRENCE F. CRAM/ 64 BOWEN STREET/ NEWTON MA 02159
THOMAS M. ATWOOD/ 70 BARNSTABLE RD./ W. NEWTON MA 02165/ (617) 235-8171 X131
JOHN C. MILLER/ 105 CHERRY STREET/ W. NEWTON MA 02165/ (617) 272-7070 X160
FRED ElLEN STEIN/ 68 SPRING STREET/ WATERTOWN MA 02172/ (617) 924-2248
DAVID TAFFS/ 42 THIRD STREET/ NEWPORT RI 02840/ (401) 847-3770
ATTN: L.A.M.B.D.A./ BROWN UNIVERSITY/ BOX G/ PROVIDENCE RI 02912/ (401) 863-3162
READ T. FLEMING/ PROGRAM IN COMPUTER SCIENCE/ BROWN UNlVERSITY/ BOX F/ PROVIDENCE RI 02912/ (401) 863-3088
BETTY BUXTON/ NCA 1-3220/ SANDERS ASSOCIATES INC./ 95 CANAL STREET/ NASHUA NH 03060/ (603) 885-5314
MICHAEL MCKENNA/ TIME SHARE CORP./ BOX 683/ HANOVER NH 03755/ (603) 448-3838
WILLIAM J. VASILIOU JR./ COMPUTER SERVICES/ KINGSBURY HALL/ U OF NEW HAMPSHIRE/ DURHAM NH 03824/ (603) 862-2323
A. E. SAPEGA/ ENGINEERING DEPT./ TRINITY COLLEGE/ HARTFORD CT 06106/ (203) 527-3151 X202
TIM RAND/ P.O. BOX 98/ STORRS CT 06268
PAUL KOHLBRENNER/ 261 DUNK ROCK ROAD/ GUILFORD CT 06437/ (203) 453-9540
MICHAEL BEHAR/ 428 WINDY HILL RD./ ORANGE CT 06477/ (203) 878-7141
DICK OSGOOD/ YALE COMPUTER CENTER/ 175 WHITNEY CENTER/ NEW HAVEN GT 06520/ (203) 432-4080
RONA GURKEWITZ/ 181 WHITE STREET/ DANBURY CT 06810
DOUGLAS M. GRANT/ NATIONAL CSS/ 500 SUMMER STREET/ STAMFORD CT 06901/ (203) 327-9100
ROBERT KAST/ 350 BALDWIN ROAD APT. F4/ PARSIPPANY NJ 07054
HAL PACE/ KEARFOTT DIV. - DEPT. 5760/ SINGER CO./ 150 TOTOWA ROAD/ WAYNE NJ 07470/ (201) 256-4000 X3503
CHRISTOPHER J. HENRICH/ SOFTWARE DEVELOPMENT/ INTERDATA INC./ 106 APPLE STREET/ TINTON FALLS NJ 07724/ (201) 229-4040
FOREST VAN SISE SHAFER/ COMCON INC./ 504 U.S. ROUTE 130 AT HIGHLAND AVE./ CINNAMINSON NJ 08077
WILLIAM G. HUTCHISON JR./ N 191 PRINCETON ARMS/ CRANBURY NJ 08512/ (609) 443-6631
WILLIAM J. K. HARRINGTON/ 70 ~~IN BOULEVARD/ TRENTON NJ 08618
GEORGE B. DIAMOND/ DIAMOND AEROSOL CORP./ RD #1/ GLEN GARDNER NJ 08826
ATTN: CCIS LIBRARY HILL CENTER/ BUSCH CAMPUS/ RUTGERS UNIV./ p.O. BOX 879/ PISCATAWAY NJ 08854/ (201) 932-2296
JIM STEWART/ 195B PLEASANT VIEW ROAD/ PISCATAWAY .NJ 08854
RODERICK MONTGOMERY/ HEALTH PRODUCTS RESEARCH INC./ 3520 U.S. ROUTE 22/ SOMERVILLE NJ 08876/ (201) 534-4148
CHARLES HEDRICK/ COMPUTER SCIENCE DEPT. / RUTGERS UNIV. / HILL C ENTER/ NEW BRUNSWICK NJ 08903
DOUG FORSTER/ P.O. BOX 1027 UNIT AA/ APO NY 09098
WILLIAM HENRY/ 117 E. TENTH ST./ NEW YORK NY 10003/ (212) 673- 6944
NORMAN D. WHALAND/ 430 EAST 9TH STREET - APT. 15/ NEW YORK NY 10009
ROBERTO MINIO/ SPRINGER-VERLAG INC./ 175 FIFTH AVE/ NEW YORK Ny 10010/ (212) 477-8316
JON A. SOLWORTH/ 7 WEST 14TH ST APT 15A/ NEW YORK NY 10011/ (212) 243-2183
EDWARD R. FRIEDMAN/ CIMS/ NEW YORK UNIVERSITY/ 251 MERCER ST./ NEW YORK NY 10012/ (212) 460-7100/ (212) 460-7293
ANDREW P. VALENTI/ COURANT INST. OF MATHEMATICAL SCIENCE/ NEW YORK UNIV./ 251 MERCER ST./ NEW YORK NY 10012/ (212) 641-0274
RAMON TAN/ 305 E. 40TH ST. APT. 12W/ NEW YORK NY 10016/ (212) 682-1013
MARK STAHLMAN/ COMPUTRON INC./ 888 7TH AVENUE - 25TH FLOOR/ NEW YORK NY 10019
PAUL SPRECHER/ 241 WEST 77TH STREET/ NEW YORK NY 10024
DONALD WARREN/ 130 WEST 81ST STREET APT 7/ NEW YORK NY 10024
HOWARD D. ESKIN/ CENTER FOR COMPUTING ACTIVITIES/ ROOM 712/ COLUMBIA UNIVERSITY/ 612 W. 115TH ST./ NEW YORK NY 10025/ (212) 280-2874
LARRY ARONSON/ CENTER FOR COMPUTING ACTIVITIES/ COLUMBIA UNIVERSITY/ 612 W 115TH ST./ NEW YORK NY 10027/ (212) 280-2698
JERRY S. SULLIVAN/ PHILIPS LABORATORIES/ 345 SCARBOROUGH ROAD/ BRIARCLIFF MAN NY 10510/ (914) 762-0300
TIMOTHY P. ROBERTS/ KEEN INSTRUMENTS INC./ 111 BOWMAN AVE./ PORT CHESTER NY 10573/ (914) 939-0200
PAUL S. KLARREICH/ 2809 BEDFORD AVE./ BROOKLYN NY 11210/ (212) 859-1408
LYNN S. MARTINI DEPT. OF ENGLISH/ ST. JOHN'S UNIV./ GRAND CENTRAL AND UTOPIA PARKWAYS/ JAMAICA NY 11439/ (212) 969-8000 X387
M. WAITE/ FAZELTINE· CORP./ GREENLAWN NY 11740/ (516) 261-7000 X687
.,
IT1
to
:;:0
=
::t>
:;:0
-<
N
C>
11756
11794
11794
11797
12210
13201
13440
14072
14127
14226
14454
14850
15213
15213
15213
15461
15701
16057
17019
17837
18015
18015
18017
18042
18049
18938
19010
19044
19046
19085
19087
19101
19122
19151
19301
19335
19341
19438
19440
19711
19711
19898
19898
20006
20014
20014
20014
20016
20036
20041
20229
20375
20770
20770
20784
20855
21010
21045
21045
21045
21235
21793
22003
22042
22090
ROBERT SCHUTZ/ 93 MERIDIAN ROAD/ LEVITTOWN NY 11756
RICHARD B KIEBURTZ/ DEPT. OF COMPUTER SCI./ SUNY AT STONY BROOK/ STONY BROOK NY 11794/ (516) 246-5987/ (516) 246-7146
GENE ROLLINGS/ COMPUTER SCIENCE DEPT./ SUNY - STONY BROOK/ STONY BROOK NY 11794/ (516) 246-4383
PAUL ZILBER/ ONTEL CORP./ 250 CROSSWAYS PARK DRIVE/ WOODBURY Ny 11797/ (516) 364-2121
GARYO 0' SCHENECTADY/ 144 LANCASTER ST./ ALBANY NY 12210
J. DANIEL GERSTEN/ COMPUTED IMAGE ENG. - CSP 3-21/ GENERAL ELECTRIC CO./ SYRACUSE NY 13201/ (315) 456-7366
STEPHEN B. WATERS/ ROME SENTINEL COMPANY/ 333 W. DOMINICK STREET/ ROME NY 13440/ (315) 337-4000
LEO CHRZANOWSKI/ 67 WARD PARK ROAD/ GRAND ISLAND NY 14072
F. DOUGLAS ROBINSON/57 TANGLEWOOD WEST/ ORCHARD PARK NY 14127/ (716) 843-7142 (WORK)/ (716) 662-4093 (HOME)
STUART W. ROWLAND/ COMPUTER SCIENCE DEPT./ SUNY - BUFFALO/ 4226 RIDGE LEA ROAD/ AMHERST NY 14226/ (716) 831-1351
ANTHONY E. HOFFMAN/ MATHEMATICS DEPT. / SUNY-CAS/ GENESEO NY 14454/ (716) 243-3833
WILLIAM LYCZKO/ SOFTWARE DEVELOPMENT/ NCR CORPORATION/TERMINAL SYSTEMS/ 950 DANBY ROAD/ ITHACA NY 14850/ (607) 273-5310/ X251 X254
ATTN: EARL L. MOUNTS-COMP. SCI. LIBRARI E & S LIBRARY/ SCIENCE HALL/ CARNEGIE-MELLON UNIVERSITY/ PITTSBURGH PA 15213/ (412) 578-2426
DAVID B. GROUSE/ GRAPHIC ARTS TECHNICAL FOUNDATION/ 4615 FORBES AVE/ PITTSBURGH PA 15213
KEVIN WEILER/ SCHOOL OF URBAN AND PUBLIC AFFAIRS/ INSTITUTE OF PHYSICAL PLANNING/ CARNEGIE MELLON UNIV/ SCHENLEY PARK/ PITTSBURGH PA 15213
(412) 578-2177
RON MAHONI VIDEO LINK/ P.O. BOX 688/ MASONTOWN PA 15461/ (412) 583-7786
HOWARD E. TOMPKINS/ COMPUTER SCIENCE DEPT/ INDIANA UNIVERSITY OF PAl INDIANA PA 15701/ (412) 357-2524
PETER RICH ETTA/ 129A WEST WATER STREET/ SLIPPERY ROCK PA 16057/ (412) 794-3531
E. R. BEAUREGARD/ P.O. BOX 357/ DILlSBURG PA 17019
ATTENTION: MARJORIE HEINE/ FREAS-ROOKE COMPUTER CENTER/ BUCKNELL UNIVERSITY/ LEWISBURG PA 17837/ (717) 524-1436
DAVID B. ANDERSON/ DEPT. OF MATHEMATICS/ 14 CHRISTMAS-SAUCON/ LEHIGH UNIVERSITY/ BETHLEHEM PA 18015/ (215) 683-5086
CRAIG PAYNE/ LEHIGH UNIV./ P.O. BOX 22A/ BETHLEHnl PA 18015/ (215) 867-6367
ROBERT COLE/ 782 BARRYMORE LANE/ BETHLEHEM PA 18017
JOHN A. WEAVER/ ANPA - RESEARCH INSTlTUTE/ P.O. BOX 598/ EASTON PA 18042/ (215) 867-1085
JOHN W. IOBST/ 22 N. KEYSTONE AVE./ EMMAUS PA 18049/ (215) 965- 46 77
BILL CHESWICK/ DARIEN 15B / VILLAGE 2/ NEW HOPE PA 18938/ (215) 866-4491
DONALD B. KLEIN/ 145 LOWRY'S LANE/ ROSEHONT PA 19010
JAMES P. MCILVAINE IV/ BRIDGEPORT-TEXTRON/ 200 PRECISION RD./ HORSHAH PA 19044/ (215) 674-2700
DAN MORTON/ 701 WASHINGTON LANE/ JENKINTOWN PA 190461 (215) 885-2443/ (215) 895-2259
STEPHEN W. CHING/ DEPT OF ELECTRICAL ENGINEERING/ COMPUTER SCIENCE/ VILLANOVA UNIVERSITY/ VILLANOVA PA 19085/ (215) 527-2100 X631
MARK HIPPE/ GEOMETRIC DATA CORP./ 999 WEST VALLEY ROAD/ WAYNE PA 19087/ (215) 687-6550
G. KEVIN DOREN/ P.O. BOX 8191/ PHILADELPHIA PA 191011 (215) 963-0465/ (215) 963-0551
EARL RALEY/ COMPUTER ACTIVITY/ ACADEMIC SERVICES/ TEMPLE UNIV./ PHILADELPHIA PA 19122/ (215) 787-8527
CLIFTON CHANG-CHAO TING/ 879 WYNNEWOOD ROAD - 1ST FLOOR/ PHILADELPHIA PA 19151/ (215) 878-7231
DAVID M. ADAMS/ CSG/T/ BURROUGHS CORPORATION/ P.O. BOX 203/ PAOLI PA 19301/ (215) 648-2000
TOM KELLY/ 58-B MEADOWLAKE DRIVE/ DOWNINGTOWN PA 19335/ (215) 269-3626
JEFFREY D. STROOMER/ 224 HERITAGE LANE/ EXTON PA 19341/ (216) 363-1948
DONALD A. KEFFER/ 252 MANOR ROAD/ HARLEYSVILLE PA 19438
V. LALITA RAO/ HATFIELD VILLAGE APARTMENTS UTl-5/ HATFIELD PA 19440/ (215) 865-6448
JOHN D. EISENBERG/ COMPUTING CENTRE/ SMITH HALL/ U OF DELAWARE/ NEWARK DE 19711/ (302) 738-8441 X57 (OFFICE)/ (302) 453-9059 (HOME)
WILLIAH s. PAGE/ 23 OLD MANOR ROAD/ NEWARK DE 19711/ (302) 731- 5988
C. E. BRIDGE/ ENGINEERING DEVELOPMENT LAB/ E. I. DU PONT DE NE t10URS AND CO./ 101 BEECH STREET/ WIlliINGTON DE 19898/ (302) 774-1731
STEPHEN C. SCHWARM/ E.I. DU PONT DE NEMOURS CO./ 101 BEECH ST./ WIlliINGTON DE 19898/ (302) 774-1669
KENNETH R. JACOBS/ FEDERAL SYSTEMS DIVISION/ ADPNETWORK SERVI CES / 2011 EYE STREET NW/ WASHINGTON DC 20006/ (202) 872-0580
KEITH E. GORLEN/ 2017 BLDG.12A/ NATIONAL INST. OF HEALTH/ BETHESDA MD 20014/ (301) 496-5361
TERRY P. MEDLIN/ SCIENTIFIC RESEARCH UNIT - DPSA/ B23 BLDG 30/ NATIONAL INSTITUTE OF DENTAL HEALTH/ BETHESDA MD 20014/ (301) 496-1621
JOHN M. SHAWl BLDG 36 / ROOM 2A29/ NATIONAL INSTITUTES OF HEALTH/ BETHESDA MD 20014/ (301) 496-3204
JOSEPH P. JOHNSON/ 3520 QUEBEC ST. NWI WASHINGTON DC 20016/ (202) 362-8523
MARGERY AUSTIN/ THE URBAN INSTITUTE/ 2100 M STREET NW/ WASHINGTON DC 20036/ (202) 223-1950 X486
DAVID AULT/ COMPUTER SCIENCE/ VPI AND sui P.O. BOX 17186/ WASHINGTON DC 20041/ (703) 471-4600
STEVE O'KEEFE/ 7328/ U.S. CUSTOMS SERVICE/ 1301 CONSTITUTION AVE. N.W./ WASHINGTON DC 20229/ (202) 566-2974
PETER A. RIGSBEE/ CODE 5494/ NAVAL RESEARCH LABORATORY/ WASHINGTON DC 20375/ (202) 767-3318
LEO DAVIS/ 40 LAKESIDE DRIVE/ GREENBELT MD 20770
CAROL B. HOWELL/ P.O. BOX 326/ GREENBELT MD 20770
EDWARD D. ROTHE/ 7101 VARNUH ST/ LANDOVER HILLS MD 20784
BOB ROGERS/ 18625 AZALEA DRIVE/ DERWOOD MD 20855
PAUL H. BROOME/ BIOPHYSICS BRANCH/ CHn1ICAL SYSTEMS LAB/ RESEARCH DIVISION/ PROVING GROUND/ ABERDEEN lID 21010/ (301) 671-3489
JOHN FRINK/ 5304 THUNDER HILL ROAD/ COLUHBIA MD 21045/ (202) 394-2396
RICHARD LLEWELLYN/ 5355 RED LAKE/ COLillffiIA MD 21045/ (301) 765-4570
RAINER F. MCCOWN/ MCCOWN COMPUTER SERVICES/ 9537 LONG LOOK LANE/ COLUHBIA MD 21045/ (301) 730-0379
LESTER SACHS/ OPERATIONS/ HS 3-0-25/ SOCIAL SECURITY ADMINISTRATION/ 6401 SECURITY BOULEVARD/ BALTIMORE MD 21235
PAUL C. BERGMAN/ DIGITAL SYSTEMS CORP./ P.O. BOX 396/ WALKERSVILLE MD 21793/ (301) 845-4141
ROBERT C. JANKU/ 5112 ALTHEA DRIVE/ ANNANDALE VA 22003/ (703) 978-8384
ROBERT LEE SHARP/ P.O. BOX 2170/ FALLS CHURCH ITA 22042
HENRY DAVIS/ ACUITY SYSTEMS INC./ 11413 ISAAC NEWTON SQUARE/ RESTON VA 22090/ (703) 471-4700 X243
""""0
:I>
C/)
n
,:r>
z
rn
:::E:
C/)
=!:!:
f-'
f-'
-n
rn
t:Ij
;::0
=
:r>
=
-<
22091
22101
22101
22152
22180
22209
22901
22901
22903
23185
23508
23665
23669
27409
27607
27709
30303
30303
30303
30310
30339
32303
32306
32901
32901
32905
32935
33313
33313
35486
35805
37130
37916
40205
40217
43403
43403
43403
44106
44106
44107
44115
44116
44119
44691
45036
45036
46375
46530
47401
47401
47805
47907
47907
47907
48100
48104
48104
48106
48824
48824
48824
48824
49008
50011
52240
JAMES K. MOORE/ 12345 COLERAINE COURT/ RESTON VA 22091/ (703)437-2338
H. F. HESSION/ ADVANCED RECORD SYSTEMS ENGINEERING/ WESTERN UNION/ 7916 WEST PARK DRIVE/ MCLEAN VA 22101
ROBERT L. STEELE 11/ INCO. INC./ 7916 WEST PARK DRIVE/ MCLEAN VA 22101/ (703) 893-4330
MARK S. WATERBURY/ 8358 L DUNHAM CT./ SPRINGFIELD VA 22152/ (703) 451-8255
TRUMAN C. PEWITT/ 8507 COTTAGE STREET/ VIENNA VA 22180/ (703) 821-6321/ (703) 573-3192
WILLIAM A. WHITAKER/ DARPA/ 1400 WILSON BLVD./ ARLINGTON VA 22209/ (202) 694-1139
ROBERT A. GIBSON/ WEST LEIGH/ 2380 KINGSTON RD/ CHARLOTTESVILL VA 22901/ (804) 977-3233
STEPHEN F. MERSHON/ SCHOOL OF ENGINEERING--DAMACS/ AERO-MATH BLDG./ UNIV. OF VIRGINIA/ CHARLOTTESVILL VA 22901/ (804) 924-3917
ATTN: J. F. MCINTYRE - LIBRARIAN/ COMPUTING CENTER/ GILMER HALL/ UNIV OF VIRGINIA/ CHARLOTTESVILL VA 22903/ (804) 924-3731
MICHAEL K. DONEGAN/ DEPT. OF MATH. & COMPo SCIENCE/ COLLEGE OF WILLIAM & MARY/ WILLIAMSBURG VA 23185/ (804) 253-4481
FRANCES L. VAN SCOY/ DEPT. OF MATH AND COMPUTING SCIENCES/ OLP DOMINION UNIV./ NORFOLK VA 23508/ (804) 489-6525
JOHN C. KNIGHT/ LANGLEY RESEARCH CENTER/ M/S 125A/ NASA/ HAMPTON VA 23665/ (804) 827-3875
JOHNCLARSON/ 303 TENDERFOOT COURT/ HAMPTON VA 23669
TOM TYSON/ COMPUTER LABS/ 505 EDWARDIA DRIVE/ GREENSBORO NC 27409/ (919) 292-5427
DONALD L. PARCE/ BUSINESS APPLICATIONS SYSTEMS INC./ 7334 CHAPEL HILL ROAD/ RALEIGH NC 27607/ (919) 851-8512
W. J. MEYERS/ DATA GENERAL CORP./ RESEARCH TRIANGLE PARK/ TRIANGLE PARK NC 27709
ROBERT N. MACDONALD/ INFORMATION SYSTEMS DEPT./ GEORGIA STATE UNIV./ UNIVERSITY PLAZA/ ATLANTA GA 30303/ (404) 658-3880
DARRELL PREBLE/ COMPUTER CENTER USER SERVICES/ GEORGIA STATE UNIVERSITY/ ATLANTA GA 30303
MORRIS W. ROBERTS/ DEPT. OF INFORMATION SYSTEMS/ GEORGIA STATE UNIV./ UNIVERSITY PLAZA/ ATLANTA GA 30303/ (404) 658-3882
JOE CELKO/ P.O. BOX 11023/ ATLANTA GA 30310/ (404) 753-7993
DOUGLAS MANN/ SCIENCE APPLICATIONS INC./ 2028 POWERS FERRY ROAD _ SUITE 260/ ATLANTA GA 30339/ (404) 955-2663
C. EDWARD REID/ RT. 7 BOX 1257/ TALLAHASSEE FL 32303/ (904) 488-2451
JOHN H. BOLSTAD/ DEPT. OF MATHEMATICS/ FLORIDA STATE UNIV./ TALLAHASSEE FL 32306/ (904) 644-2580
GEORGE E. HAYNAM/ SYSTEMS DIVISION/ HARRIS CORP./ P.O. BOX 2080/ MELBOURNE FL 32901/ (904) 378-8118
TOM SPURRIER/ ELECTRONICS SYSTEMS DIVISION/ HARRIS CORP./ P.O. BOX 37/ MELBOURNE FL 32901/ (305) 727-4000
DENIS KERMICLE/ WOODLAKE DRIVE EAST APT. D-130/ PALM BAY FL 32905/ (305) 725-2417
ROBERT L. CHEEZEM JR./ 2192 CHERYL CT./ MELBOURNE FL 32935/ (305) 254-6522
S. HAYES/ DEVELOPMENT ENGR. LIBRARY/ SYSTEMS ENGR. LABS/ 6901 W. SUNRISE BLVD./ FT.LAUDERDALE FL 33313/ (305) 587-2900
STEVE MATUS/ MARKET PLANNING AND RESEARCH/ SYSTEMS ENGINEERING LABS/ 6901 W. SUNRISE BLVD./ FT.LAUDERDALE FL 33313/ (305) 587-2900
DONALD B. CROUCH/ DEPT.OF COMPUTER SCIENCE/ UNIV OF ALABAMA/ p.O. BOX 6316/ UNIVERSITY AL 35486/ (205) 348-6363
MIKE D. PESSONEY/ ANALYSTS INTERNATIONAL CORP./ 2317 BOB WALLACE AVE. SE/ HUNTSVILLE AL 35805/ (205) 533-4220
SAMUEL T. BAKER/ 1310 STONEWALL BLVD./ MURFREESBORO TN 37130/ (615) 896-3362 (HOME)/ (615) 741-3531 (OFFICE)
ATTENTION: CHARLES PFLEEGER/ COMPo SCI. DEPT./ U OF TENNESSEE/ KNOXVILLE TN 37916/ (615) 974-5067
A. CHARLES BUCKLEY/ DATA/INFORMATION SYSTEMS/ URBAN STUDIES CENTER/ ALTA VISTA ROAD - GARDENCOURT/ LOUISVILLE KY 40205/ (502) 588-6626
MICHAEL P. ROBINSON/ AMERICAN DATA MANAGEMENT SYSTEMS/ 2434 CRITTENDEN DRIVE - SUITE 200/ LOUISVILLE KY 40217/ (502) 637-9765
FRANK J. BATES JR./ OFFICE OF COMPUTATIONAL SERVICES/ BOWLING GREEN STATE UNIV./ BOWLING GREEN OH 43403/ (419) 372-2911
JOHN M. HEMPHILL/ DEPT. OF COMPUTER SCI./ BOWLING GREEN STATE UNIV./ BOWLING GREEN OH 43403/ (419) 372-2337
RICHARD T. THOMAS/ DEPT. OF COMPUTER SCIENCE/ BOWLING GREEN STATE UNIV./ BOWLING GREEN OH 43403/ (419) 372-2339
R. B. LAKE/ BIOMETRY/ WEARN BUILDING/ CASE WESTERN UNIV HOSPITALS/ CLEVELAND OH 44106/ (216) 444-3491
TOM NUTE/ SYS. & COMPUTER ENG./ CRAWFORD HALL/ CASE WESTERN RESERVE UNIV./ CLEVELAND OH 44106/ (216) 368-2800
STEVEN B. HALL/ 1599 ORCHARD GROVE/ LAKEWOOD OH 44107/ (216) 521-4178
ARTHUR C. DARTT/ CHEMISTRY DEPT./ CLEVELAND STATE UNIV./ EUCLID AT EAST 24TH STREET/ CLEVELAND OH 44115/ (216) 687-2473
BILL SHANNON/ 21345 HILLIARD/ ROCKY RIVER OH 44116/ (216) 331-8733
DAVID PESEC/ 21030 MILLER/ EUCLID OH 44119/ (216) 486-4716
ANN C. JOHNSTON/ RD 6/ HAPPY VALLEY RD./ WOOSTER OH 44691
ATTN: BETTE BOLLING-LIBRARIAN/ TECHNICAL INFORMATION CTR-ELECTRONICS/ CINCINNATI MILACRON INC./ LEBANON OH 45036/ (513) 494-1200
TOM MORAN/ PROCESS CONTROLS DIVISION/ CINCINNATI MILACRON/ MAS ON RD & RT 1148/ LEBANON OH 45036
PHILIP T. HODGE/ 346 KENNEDY/ SCHERERVILLE IN 46375
JOE TORZEWSKI/ 51625 CHESTNUT ROAD/ GRANGER IN 46530/ (219) 272-4670
ANNA BUCKLEY/ WHUBEL COMPUTING CENTER/ INDIANA UNIV./ BLOOMINGTON IN 47401/ (812) 337-1911
ANTHONY J. SCHAEFFER/ 3510 DUNSTAN DR./ BLOOMINGTON IN 47401/ (812) 337-9137
ROBERT L. ARGUS/ 2603 THOMAS AVE. APT 4/ TERRE HAUTE IN 47805
ALLAN M. SCHWARTZ/ DEPT. OF COMPUTER SCIENCES/ MATH SCIENCES BUILDING/ PURDUE UNIVERSITY/ WEST LAFAYETTE IN 47907/ (317) 743-2473
EDWARD F. GEHRINGER/ DEPT. OF COMPUTER SCIENCE/ MATH SCIENCES BU'ILDING/ PURDUE UNIVERSITY/ W. LAFAYETTE IN 47907
SAUL ROSEN/ COMPUTING CENTER/ PURDUE UNIV./ W. LAFAYETTE IN 47907/ (317) 494-8235
MARK HERSEY/ 1114 MAIDEN LANE COURT APT. 112/ ANN ARBOR MI 48100/ (313) 994-3934/ (517) 355-1764 (OFFICE)
GREG WINTERHALTER/ HORIBA INSTRUMENTS/ 3901 VARSITY DRIVE/ ANN ARBOR MI 48104/ (313) 973-2171
KARL L. ZINN/ CTR. FOR RESEARCH ON LEARNING & TEACHI/ UNIV. OF MICHIGAN/ 109 EAST ~MDISON STREET/ ANN ARBOR MI 48104/ (313) 763-4410/ 763-0158
CHARLES G. MOORE/ ADP NETWORK SERVICES/ 175 JACKSON PLAZA/ ANN ARBOR MI 48106/ (313) 769-6800
JOHN B. EULENBERG/ COMPo SCI. DEPT./ MICHIGAN STATE U/ EAST LANSING MI 48824/ (517) 353-0831
HARRY G. HEDGES/ DEPT. OF COMPo SCI./ 400 COMPUTER CENTER/ MICHIGAN STATE UNIV/ EAST LANSING MI 48824/ (517) 353-6484
STEVEN L. HUYSER/ USER INFO. CENTER/ 313 COMPUTER CENTER/ MICHIGAN STATE U/ EAST LANSING MI 48824/ (517) 353-1800
MARK RIORDAN/ USER SERVICES/ COMPUTER LABORATORY/ MICHIGAN STATE UNIVERSITY/ EAST LANSING MI 48824/ (517) 353-1800
JACK R. MEAGHER/ COMPUTER SCIENCE AND MATHEMATICS/ WESTERN MICHIGAN UNIV./ KALAMAZOO MI 49008/ (616) 383-0095
AHMED KASSEM/ COMPUTATION CENTER/ 104 COMPUTER SCIENCE/ IOWA STATE UNIV./ AMES IA 50011/ (515) 294-8424
G. STEPHEN HIRST/ 930 FAIRCHILD/ IOWA CITY IA 52240/ (319) 351,-5253 (HOME)/ (319) 353-3935 (WORK)
"fT1
b:I
;:0
=
:J>
;:0
-<
f-'
l.O
"
00
N
N
52242
52302
52402
53149
53201
53219
53705
53706
53719
55057
55057
55066
55105
55108
55112
55112
55112
55165
55337
55343
55343
55391
55404
55404
55413
55414
55414
55418
55420
55427
55427
55429
55435
55436
55437
55455
55455
55455
55455
55455
55455
55455
55455
55455
55455
55455
56267
56301
56569
57069
58201
60148
60181
60201
60439
60532
60652
60657
60660
61801
61801
61801
61820
61820
62704
DONALD L. EPLEY/ DEPT. OF COMPUTER SCIENCE/ UNIV. OF IOWA! IOWA CITY IA 52242/ (319) 353-5605
DENNIS SUTHERLAND/ 2835 25TH AVE./ MARION IA 52302/ (319) 395-4728
JAMES C. COZZIE/ 254 NORTHPOINTE N.E. - APT. 322/ CEDAR RAPIDS IA 52402
MICHAEL A. BEAVER/ ROUTE 3 BOX 271B/ MUKWONAGO WI 53149/ (414) 728-5531 X249
RICHARD E. NEUBAUER/ JOHNSON CONTROLS INC./ P.O. BOX 423/ MILWAUKEE WI 53201/ (414) 276-9200
JOHN G. DOBNICK/ 3171 S. 83 ST./ MILWAUKEE WI 53219/ (414) 963-5727
EDWARD K. REAM/ 508 FARLEY AVE. - APT. 5/ MADISON WI 53705
LARRY E. TRAVIS/ COMPUTER SCIENCE DEPT./ UNIV OF WISCONSIN - MADISON/ 1210 WEST DAYTON STREET/ MADISON WI 53706/ (608) 262-7971/ (608) 262-1204
LEN LINDSAY/ 5150 ANTON DR. #212/ MADISON WI 53719
CARL HENRY/ COMPUTER CENTER/ CARLETON COLLEGE/ NORTHFIELD MN 55057/ (507) 645-4431 XS04
TIMOTHY W. HOEL/ ACADEMIC COMPUTER CENTER/ ST. OLAF COLLEGE/ NORTHFIELD MN 55057/ (507) 663-3097
TERRY MYHRER/ 1324 EAST AVENUE/ RED WING MN 55066
ATTN: COMPUTING SERVICES/ MACALESTER COLLEGE/ 1600 GRAND AVE/ ST. PAUL MN 55105/ (612) 647-6171
JAMES KREILICH/ 1408 ALBANY AVE./ ST. PAUL MN 55108/ (612) 644-1375
ED KATZ/ 3564 N. SNELLING/ ARDEN HILLS MN 55112/ (612) 636-3472
W. B. CHAPIN/ ARB 242/ CONTROL DATA CORP./ 4201 N. LEXINGTON/ ST. PAUL MN 55112/ (612) 483-4673
MARK RUSTAD/ 585 HARRIET AVE #213/ ST. PAUL MN 55112/ (612) 483-0589/ (612) 376-1143 (WORK)
ROBERT A. LAWLER/ MS U2M23/ UNIVAC/ P.O. BOX 3525/ ST. PAUL MN 55165/ (612) 456-3109
LARRY w. SMITH/ 125 RIVER WOODS LN./ BURNSVILLE MN 55337
ROBERT G. LANGE/ MN 11-2120/ HONEYWELL INC./ 600 2ND ST. NE/ HOPKINS MN 55343/ (612) 542-4925
ROSS D. SCHMIDT/ MS MNll-2120/ HONEYWELL INC./ 600 2ND STREET NE/ HOPKINS MN 55343/ (612) 542-6741
GREG KEMNITZ/ 1539 CLARE LANE/ WAYZATA MN 55391/ (612) 473-6123
JON G. KLASEN/ 911 22ND AN. SO. 11375/ MINNEAPOLIS MN 55404/ (612) 339-4170
RICK L. MARCUS/ 1609 11TH AVE. S./ MINNEAPOLIS MN 55404/ (612) 339-1638
BELLE P. SHENOY/ MS MN17-3670/ HONEYWELL INC./ 2600 RIDGEWAY ROAD/ MINNEAPOLIS MN 55413/ (612) 378-5418
ATTN: KHK/ 330 11TH AVE. S.E./ MINNEAPOLIS MN 55414/ (612) 331-2133
WALT PERKO/ 727 15TH AVE. S.E./ MINNEAPOLIS MN 55414/ (612) 331-6984
BOB PETERSON/ 2415 POLK ST. NE/ MINNEAPOLIS MN 55418/ (612) 789-2393
JOHN ALSTRUP/ INTERDATA CORP./ 10800 LYNDALE AVE. SOUTH - SUITE 130/ BLOOMINGTON MN 55420/ (612) 884-1757
HUGO MEISSER/ 3021 WISCONSIN AVE. N./ CRYSTAL MN 55427/ (612) 482-3052
DAVID PERLMAN/ 8309 NORTHWOOD PKWY./ NEW HOPE MN 55427/ (612) 546-2154
DAVID L. PETERSON/ 6301 UNITY AVE. NO./ BROOKLYN CTR MN 55429
DANIEL E. GERMANN/ 6813 BROOK DRIVE/ EDINA MN 55435/ (612) 941-1082
JOHN FITZSIMMONS/ 5025 YVONNE TERRACE/ EDINA MN 55436/ (612) 926-8954
DENNIS NICKOLAI/ MNAOZA/ CONTROL DATA CORPORATION/ 5001 W. 80TH ST./ BLOOMINGTON MN 55437/ (612) 830-6903
ATTENTION: BOB JARVIS/ SCH. OF DENTISTRY/CLINICAL SYS. DIV./ 8-440 HEALTH SCIENCE UNIT A/ U OF MINNESOTA/ EAST BANK/ MINNEAPOLIS MN 55455
(612) 376-4131
KEVIN FJELSTED/ UNIVERSITY COMPUTER CENTER/ 227 EXP ENGR/ U OF MINNESOTA/ EAST BANK/ MINNEAPOLIS MN 55455/ (612) 373-4181
PAULETTE D. GENES/ UNIVERSITY COMPUTER CENTER/ 227 EXP. ENGR./ UNIV. OF MINNESOTA/ EAST BANK/ MINNEAPOLIS MN 55455/ (612) 376-5262
SARA K. GRAFFUNDER/ UNIVERSITY COMPUTER CENTER/ 227 EXP. ENGR./ U OF MINNESOTA/ MINNEAPOLIS MN 55455/ (612) 376-1637
THEA D. HODGE/ UNIVERSITY COMPUTER CENTER/ 227 EXP. ENGR./ UNIV OF MINNESOTA/ EAST BANK/ MINNEAPOLIS MN 55455/ (612) 373-4599
DAN LALIBERTE/ UNIVERSITY COMPUTER CENTER/ 227 EXP. ENGR./ U OF MINNESOTA/ EAST BANK/ MINNEAPOLIS MN 55455/ (612) 373-4181
MICHAEL PRIETULA/ MGMT. SCIENCES DEPT./ 773 BA/ U OF MINNESOTA/ WEST BANK/ MINNEAPOLIS MN 55455/ (612) 376-7506
STEVEN A. REISMAN/ UNIVERSITY COMPUTER CENTER/ 227 EX/ UNIV OF MINNESOTA/ EAST BANK/ MINNEAPOLIS MN 55455/ (612) 376-1762
J. B. ROSEN/ 114 LIND HALL/ U OF MINNESOTA/ EAST BANK/ MINNEAPOLIS MN 55455/ (612) 373-0133
TIMOTHY J SALOl UNIVERSITY COMPUTER CENTER/ LAUDERDALE/ U OF MINNESOTA/ MINNEAPOLIS MN 55455/ (612) 376-5607
G. MICHAEL SCHNEIDER/ C.SCI. DEPT./ 114 LIND HALL/ U OF MINNESOTA/ EAST BANK/ MINNEAPOLIS MN 55455/ (612) 373-7582
ANDY LOPEZ/ COMPUTER CENTER/ U OF ~ITNNESOTA - MORRIS/ MORRIS MN 56267/ (612) 589-1665 X321
R. WARREN JOHNSON/ DEPT. OF MATH AND COMPo SCI./ MS-149/ ST. CLOUD STATE U/ ST. CLOUD MN 56301/ (612) 255-2147
PAUL J. WOZNIAK/ R. R. 1/ OGEMA MN 56569/ (612) 376-1137
JOHN LUSHBOUGH/ COLLEGE OF ARTS & SCIENCES/ UNIV. OF SOUTH DAKOTA/ VERMILLION SD 57069/ (605) 677-5221
CATHLINE S. HILLEY/ COMPUTER CENTER/ UNIV. OF NORTH DAKOTA/ p.O.BOX 8218 UNIVERSITY STATION/ GRAND FORKS ND 58201/ (701) 777-3171
ROBERT E. NOVAK/ 21 W 551 NORTH AVE. APT. 123/ LOMBARD IL 60148/ (312) 629-3512
STEVEN A. VERE/ 1635 S. MICHIGAN AVE. APT. 307/ VILLA PARK IL 60181/ (312) 627-2965
ARNOLD LAU/ COMPUTER SCIENCE DEPT./ NORTHWESTERN UNIV./ EVANSTON IL 60201/ (312) 463-2694
ATTENTION: J. M. KNOCK/ BLDG 203-C110/ ARGONNE NATIONAL LABORATORY/ 9700 SOUTH CASS AVENUE/ ARGONNE IL 60439/ (312) 739-7711
TERRY E. WEYMOUTH/ 4702 BEAU BIEN LANE EAST/ LISLE IL 60532
TONY Ctll1IEL/ 3900 WEST 84TH PLACE/ CHICAGO IL 60652
ROBERT D. GUSTAFSON/ SIMULATION SPECIALISTS INC./ 609 WEST STRATFORD PLACE/ CHICAGO IL 60657
JON SINGER/ 1540 W. ROSEMONT #3E/ CHICAGO IL 60660/ (312) 262-8545
ATTENTION: MIKE WILDE - CONSULTING OFF/ COMPUTING SERVICES OFFICE/ 138 DIGITAL COMPUTER LAB/ U OF ILLINOIS/ URBANA IL 61801/ (217) 333-6133
BOB LIDRAL/ 406 EAST GREEN STREET - APT. 104/ URBANA IL 61801/ (217) 367-5372
M. D. MICKUNAS/ 297 DeL/ U OF ILLINOIS/ URBANA IL 61801/ (217) 333-6351
ATTN: L. LAWRIE/ CERL - SOC/ U.S. ARMY/ P.O. BOX 4005/ CHAMPAIGN IL 61820/ (217) 352-6511
PETER DEWOLF/ 310 W. EUREKA/ CHAMPAIGN IL 61820/ (217) 356-1548 (HOME)/ (217) 333-8252 (WORK)
MIKE HARRIS/ APT. 4/ 309 WEST EDWARDS/ SPRINGFIELD IL 62704/ (217) 789-7669 (HOME)/ (217) 782-0014 (WORK)
.,
IT1
to
;;0
=
:t>
:::0
-<
I-'
lD
""'-J
co
62901
63188
64108
64108
64108
65201
65401
66045
66045
66045
66045
66506
67401
68154
70118
70504
70803
71201
72554
73019
73019
73019
74102
74145
75023
75062
75080
75081
75081
75229
75235
75275
75961
76012
77005
77005
77027
77043
77341
77801
77843
78284
78712
78731
78758
79409
79409
79601
80004
80204
80303
80303
80309
83316
83639
84112
84112
84112
84112
85001
85016
85282
87106
87106
87115
JAMES W. BUTLER/ COMPUTER SERVICES/ WHAM BLDG./ SOUTHERN ILLINOIS UNIV./ CARBONDALE IL 62901/ (618) 453-4361
JOHN K. MCCANDLISS/ ATTN: DRXAL-TF(JOHN K. MCCANDLISS)/ ALMS A/ P.O. BOX 1578/ ST. LOUIS MO 63188/ (314) 268-5361/ (314) 268-5362
LARRY D. LANDIS/ UNITED COMPUTING SYSTEMS/ 2525 WASHINGTON/ KANSAS CITY MO 64108/ (816) 942-6063
JEFFERY M. RAZAFSKY/ UNITED COMPUTING SYSTEMS INC./ 500 W. 26TH STREET/ KANSAS CITY MO 64108/ (816) 221-9700
ROBERT R. TEISBERG/ UNITED COMPUTING SYSTEMS/ 2525 WASHINGTON/ KANSAS CITY MO 64108/ (816) 221-9700 X431
DIANE L. KRAMER/ CAMPUS COMPUTING CENTER/ UNIV. OF MISSOURI-COLUMBIA/ 100 LEFEVRE/ COLUMBIA MO 65201/ (314) 882-6382
HOWARD D. PYRON/ 312 MATH - COMPo SCIENCE/ UNIV OF MISSOURI - ROLLA/ ROLLA MO 65401/ (314) 341-4495
JIM ARNOLD/ COMPUTER SCIENCE DEPT./ 18 STRONG HALL/ KANSAS UNIV./ LAWRENCE KS 66045/ (913) 864-4482
CHARLES J. BANGERT/ ACADEMIC COMPUTER CENTER/ UNIVERSITY OF KANSAS/ P.O. DRAWER 2007/ LAWRENCE KS 66045/ (913) 864-4291
STEVEN S. MUCHNICK/ DEPARTMENT OF COMPUTER SCIENCE/ 18 STRONG HALL/ UNIV OF KANSAS/ LAWRENCE KS 66045/ (913) 864-4482
GREGORY F. WETZEL/ DEPARTMENT OF COMPo SCI./ 18 STRONG HALL/ UNIVERSITY OF KANSAS/ LAWRENCE KS 66045/ (913) 864-4482
ALAN E. SKIDMORE/ COMPUTER SCIENCE DEPT./ KANSAS STATE UNIV./ MANHATTAN KS 66506/ (913) 532-6350
KEARNEY HILL/ 857 NAVAJO/ SALINA KS 67401/ (913) 825-2971
JERRY L. RAY/ 4540 SOUTH 84TH STREET/ OMAHA NE 68154/ (402) 592-3520
DANIEL B. KILLEEN/ COMPUTER LAB/ RICHARDSON BLDG./ TULANE UNIVERSITY/ 6823 ST. CHARLES AVE/ NEW ORLEANS LA 70118/ (504) 865-5631
DAVID LANDSKOV/ UNIV OF SOUTHWESTERN LOUISIANA/ USL BOX 4-4154/ LAFAYETTE LA 70504/ (318) 233-7949
K. P. LEE/ DEPT. OF COMPo SCI./ 102 NICHOLSON/ LOUISIANA STATE UNIVERSITY/ BATON ROUGE LA 70803/ (504) 388-1495
KENNETH R. DUCKWORTH/ FORD BACON AND DAVIS/ 3901 JACKSON STREE T/ MONROE LA 71201
DAN REED/ BOX 22/ MAMMlTH SPRING AR 72554
RICHARD V. ANDREE/ MATH DEPT./ UNIV OF OKLAHOMA/ NORMAN OK 73019/ (405) 325-3410
R. A. MORRIS/ MATH DEPT/ UNIV OF OKLAHOMA/ NORMAN OK 73019/ (405) 325-3391
JAMES D. WHITE/ COMPUTING SERVICES/ UNIV. OF OKLAHOMA/ 1610 NEWTON DRIVE/ NORMAN OK 73019/ (405) 325-1882
KENNETH R. DRIESSEL/ AMOCO RESEARCH/ P.O. BOX 591/ TULSA OK 74102
CONRAD SUECHTING/ DATA GENERAL CORP./ 9726 E. 42ND ST. SUITE 200/ TULSA OK 74145
ROGER R. BATE/ 3428 MISSION RIDGE/ PLANO TX 75023/ (214) 238-3 052
GRANT COLVIN/ MANAGEMENT SHARES INC./ 2121 WEST AIRPORT FREEWAY - SUITE 660/ IRVING TX 75062/ (214) 255-7121
E. J. SAMMONS/ M/S 406-246/ ROCKWELL INTERNATIONAL/ 1200 N. ALMA/ RICHARDSON TX 75080/ (214) 690-5802
FRANK DUNN/ 1912 E. SPRING VALLEY ROAD/ RICHARDSON TX 75081/ (214) 231-3423
GEORGE LIGLER/ 626 GOODWIN DR./ RICHARDSON TX 75081/ (214) 238-5311
DAVID E. BREEDING/ HARRIS DATA COHN DIV/ 11262 INDIAN TRAIL/ DALLAS TX 75229/ (214) 620-4294
W. J. PERVIN/ REGIONAL COMPUTER CENTER/ UNIV. OF TEXAS-DALLAS/ 5601 MEDICAL CENTER DRIVE/ DALLAS TX 75235/ (214) 688-2383
JANET TAYLOR/ USER SERVICES/ COMPUTER CENTER/ SOUTHERN METHODIST UNIVERSITY/ P.O. BOX 262/ DALLAS TX 75275/ (214) 692-2900
JESSE D. MIXON/ DEPT. OF ACCOUNTING/ STEPHEN F. AUSTIN STATE UNIV/ P.O. BOX 3005 SFA STATION/ NACOGDOCHES TX 75961/ (713) 569-3105/ 569-2508
ROSS F. HOUSHOLDER/ 1725 BROOKS DRIVE/ ARLINGTON TX 76012/ (817) 461-1149
JOHNNIE BUZEK JR./ SOFTWARE RESOURCES/ P.O. BOX 25210/ HOUSTON TX 77005/ (713) 521-0366
THOMAS E. SHIELDS/ SOFTWARE RESOURCES/ 2715 BISSONNET _ SUITE 212/ HOUSTON TX 77005/ (713) 521-0366
CHARLES L. HETHCOAT 111/ C/O PIPELINE TECHNOLOGISTS INC./ 5251 WESTHElMER P.O. BOX 22146/ HOUSTON TX 77027/ (713) 622-3456 X334 (WORK)
(713) 626-7737 (HOME)
JOHN EARL CRIDER/ 2918 KEVIN LANE/ HOUSTON TX 77043/ (713) 241- 4501
EASTON BEYMER/ SAM HOUSTON STATE UNIV./ P.O. BOX 2821/ HUNTSVILLE TX 77341
CHARLES MATTAIR/ AGENCY RECORDS CONTROL/ P.O. BOX 1009/ BRYAN TX 77801/ (713) 693-6122 X253
uno POOCH/ INDUSTRIAL ENGINEERING DEPT./ TEXAS A & M UNIV./ COLLEGE ST4TIO TX 77843/ (713) 845-5531
MIKE GREEN/ DATAPOINT CORPORATION/ 9725 DATAPOINT DRIVE/ SAN ANTONIO TX 78284/ (512) 699-7345
TOM KEEL/ COMPUTATION CENTER/ UNIV. OF TEXAS - AUSTIN/ AUSTIN TX 78712/ (512) 471-3242
DAVID W. HOGAN/ 4312 FAR WEST BLVD/ AUSTIN TX 78731/ (512) 258-7837
WILLIAM L. COHAGAN/ SUITE 211/ S/B/P &.C ASSOCIATES/ 8705 SHOAL CREEK BLVD./ AUSTIN TX 78758/ (512) 458-2276
ATTN: COMPUTER CENTER/ TEXAS TECH UNIV./ P.O. BOX 4519/ LUBBOCK TX 79409
LEONARD H. WEINER/ DEPT. OF MATH AND COMPo SCI./ TEXAS TECH. UNIV/ P.O. BOX 4319/ LUBBOCK TX 79409/ (806) 742-2571
JOHN TUCKER/ 628 E. N. 16TH ST. / ABILENE TX 79601/ (915) 698-1 605
RAYNER K. ROSICH/ 7031 PIERSON ST./ ARVADA CO 80004/ (303) 499-1000 X3109 (WORK)/ (303) 421-0425 (HOME)
GERHARDT C. CLEMENTSON/ DEPT. OF COMPo AND MGMT SCIENCE/ METROPOLITAN STATE COLLEGE/ 1006 11TH STREET BOX 13/ DENVER CO 80204/ (303) 629-3009
P. K. GOVIND/ 850 WEST MOORHEAD CIRCLE - APT. 2-L/ BOULDER CO 80303
R. KEITH NICKEY/ 3580 EVERETT DRIVE/ BOULDER CO 80303/ (303) 494-2847
WILLIAM M. WAITE/ ELECTRICAL ENGINEERING DEPT./ SOFTWARE ENGINEERING GROUP/ UNIVERSITY OF COLORADO/ BOULDER CO 80309/ (303) 492-7204
GEORGE W. ANTHONY/ ANTHONY FARMS/ BOX 632/ BURL ID 83316/ (208) 326-5703/ (208) 543-5233
JAY WOODS/ BOX 297/ MARSING ID 83639/ (208) 896-4462
ATTN: COMPUTER SCIENCE DEPARTMENT/ 3160 MEB/ UNIV OF UTAH/ SAL T LAKE CITY UT 84112/ (801) 581-8224
MIKE LEMON/ COMPUTER SCIENCE DEPT./ 3160 MEBI UNIVERSITY OF UTAH/ SALT LAKE CITY UT 84112/ (801) 581-8378
GARY LINDSTROM/ COMPUTER SCIENCE DEPT./ UNIV OF UTAH/ SALT LAKE CITY UT 84112/ (801) 581-8224
ED SHARP/ COMPUTER CENTER/ 3116 M.E.B./ U OF UTAH/ SALT LAKE .CITY UT 84112/ (801) 581-6575
RICHARD M. WILSON/ BIOMEDICAL ELECTRONICS/ ST. JOSEPH'S HOSPITAL/ P.O. BOX 2071/ PHOENIX AZ 85001/ (602) 277-6611 X3257
ROBERT FULKS/ SUITE 253/ OMNICOMP INC./ 5150 N. 16TH ST./ PHOENIX AZ 85016/ (602) 264-2475
KIRK D. THOMPSON/ 2321 EAST LOYOLA DRIVE/ TEMPE AZ 85282/ (602) 965-3716(WORK)
DAVE PEERCY/ BDM CORP./ 2600 YALE BLVD. SEt ALBUQUERQUE NM 87106
BOB WALSH/ 817 LAFAYETTE DR. NE/ ALBUQUERQUE NM 87106/ (505) 268-1654
BRUCE LINK/ DIVISION 1712/ SANDIA LABORATORIES/ ALBUQUERQUE NM 87115/ (505) 264-1281
.,
J'T1
t:rI
:;;0
=
:l>
:;;0
-<
.......
1.0
.........
CO
87115
88003
88047
89154
90007
90007
90020
90036
90066
90250
90266
90274
90278
90278
90278
90278
90402
90403
90405
90406
90501
90733
90801
90803
91101
91101
91104
91126
91203
91307
91330
91342
91360
91367
91405
91601
91604
91711
91775
92014
92093
92093
92110
92127
92152
92324
92335
92507
92626
92627
92634
92634
92644
92646
92669
92680
92680
92704
92704
92705
92713
92713
92714
92714
92714
92714
NANCY RUIZ/ ORG. 5166/ SANDIA LABS/ ALBUQUERQUE NM 87115/ (505) 264-3690
JOSEPH EINWECK/ COMPUTER CENTER/ NEW MEXICO STATE UNIVERSITY/ BOX 3AT/ LAS CRUCES NM 88003/ (505) 646-1443
JOHN TUCKER/ P.o. BOX 2122/ MESILLA PARK NM 88047/ (505) 526-5544 X64
JOHN WERTH/ DEPT. OF MATH/ UNIV OF NEVADA - LAS VEGAS! LAS VEGAS NV 89154/ (702) 739-3567
PER BRINCH HANSENj COMPUTER SCIENCE DEPT.! UNIV. OF SOUTHERN CALIFORNIA! UNIVERSITY PARK! LOS ANGELES CA 90007! (213) 741-5501
JORGEN STAUNSTRUP! COMPUTER SCIENCE DEPT.! UNIV. OF SOUTHERN cALIFORNIA! UNIVERSITY PARK! LOS ANGELES CA 90007/ (213) 741-5501
KENNETH YOUNG! 3311 WEST 3RD ST. APT. 1-319/ LOS ANGELES CA 90020/ (213) 383-9666
WILLIAM MOSKOWITZ! INSTRUCTIONAL SUPPORT GROUP! CALIFORNIA STATE UNIVERSITY! 5670 WILSHIRE BOULEVARD/ LOS ANGELES CA 90036/ (213) 852-5789
LEROY E. NELSON/ 11925 AVON WAY/ LOS ANGELES CA 90066! (213) 397-7390
CHARLES SISKA JR.! TRW DATA SYSTEMS/ 12911 SIMMS AVENUE! HAWTHORNE CA 90250! (213) 535-3777
HERBERT E. MORRISON/ 1257 2ND STREET! MANHATTAN BEAC CA 90266
JIM HIGHTOWER! 4947 BROWNDEER LANE/ RANCHO PALOS V CA 90274! (213) 541-4662
JAMES L. AGIN/ 2178 BLD. 90! TRW-DSSG! ONE SPACE PARK! REDONDO BEACH CA 90278/ (213) 535-0313
JOHN R. DEALY! BLDG. R3!1072! TRW DSSG! ONE SPACE PARK/ REDONDO BEACH CA 90278/ (213) 535-0833
WILEY GREINER! 90!2178! TRW DSSG! ONE SPACE PARK/ REDONDO BEAC H CA 90278/ (2l3) 535-03l3
ROGER A. VOSSLER! BLDG. 90-2178! TRW!DSSG! ONE SPACE PARK! REDONDO BEACH CA 90278! (213) 535-0312
WILLIAM S. COOKE! 503 22ND STREET! SANTA MONICA CA 90402! (223) 451-2615
MICHAEL TEENER! TECHNOLOGY SERVICE CORP.! 2811 WILSHIRE BLVD./ SANTA MONICA CA 90403/ (2l3) 829-7411 X244
TERRY J. LAYMAN/ 2039 4TH ST. #106! SANTA MONICA CA 90405! (213) 357-2121 X279
ATTN: ELAINE DENTON (41-41)! SOFTWARE INFORMATION SERVICES! SY STEM DEVELOPMENT CORP./ 2500 COLORADO AVE./ SANTA MONICA CA 90406
WILLIAM E. FISHER! 2074 SANTA FE AVENUE! TORRANCE CA 90501! (2 13) 328-7193
PAUL RUSSELL/ LOGICON INC.! 255 WEST 5TH ST. P.O. BOX 471/ SAN PEDRO CA 90733/ (213) 831-0611
DAVE SKINNER! COMMUNICATION MFG. COMPANY/ P.O. BOX 2708! LONG BEACH CA 90801! (213) 426-8345
STEVEN L. BRECHER/ 5235 MARINA PACIFICA DR. NORTH KEY 19! LONG BEACH CA 90803
GURUPREM SINGH KHALSA! BYTE SHOP OF PASADENA! 496 SOUTH LAKE A VENUE! PASADENA CA 91101! (213) 684-3311
E. E. SIMMONS/ 455 SOUTH OAKLANU AVE! PASADENA CA 91101/ (213) 687-7047
MILAN KARSPECK! 1149 NORTH MICHIGAN! PASADENA CA 91104
LARRY SEILER/ 1-55 RUDDOCK! CALIFORNIA INST. OF TECHNOLOGY/ PA SADENA CA 91126/ (2l3) 449-9886
RICHARD DIEVENDORFF/ DEPARTMENT 84F! IBM/ 620 NORTH BRAND BLVD .! GLENDALE CA 91203
RHODA P. NOVAK/ 6736 RANDlWOOD LANE/ CANOGA PARK CA 91307! (213) 346-1135
JOHN M. MOTIL/ DEPT. OF COMPUTER SCIENCE/ CALIFORNIA STATE UNI V.! NORTHRIDGE 'CA 91330! (2l3) 885-2193
STERLING WILSON! 1162t, RINCON AVE./ SYLMAR CA 91342
PAULO S. CASTILLO JR.! 385 QUEENSBURY ST.! THOUSAND OAKS CA 91 360! (213) 670-1515 X3100
GEORGE MASSAR/ 6225-102 SHOUP AVE./ WOODLAND HILLS CA 91367! (213) 346-1883! (213) 970-5021 (NORTHROP)
L. F. MELLINGER! 13622 HART ST.! VAN NUYS CA 91405! (213) 354- 2505
LARRY ROBERTSON! 5651 CASE AVE./ N. HOLLYWOOD CA 91601! (213) 762-8068
JERRY POURNELLE/ 12051 LAUREL TERRACE DRIVE! STUDIO CITY CA 91604/ (213) 762-2256
STANLEY E. LUNDE! 890 HOOD DRIVE/ CLAREMONT CA 91711! (714) 626~9977
TOM GREER! 224 N. ALABAMA ST./ SAN GABRIEL CA 91775/ (2l3) 286 -8226
JOEL MCCORMACK/ 507 CAMINO DEL MAR! DEL MAR CA 92014/ (714) 75 5-8135
KEN BOWLES! APIS DEPT./ C-021/ U OF CALIFORNIA - SAN DIEGO! LA JOLLA CA 92093/ (714) 755-7288! 452-4526
BOB HOFKIN/ APIS DEPT. C-014! UNIV. OF CALIFORNIA-SAN DIEGO! LA JOLLA CA 92093
BILL VELMAN/ SCHOOL OF LAW! UNIV. OF SAN DIEGO! ALCALA PARK/ S AN DIEGO CA 92110/ (714) 291-6480
WALT FEESER! MS 401/ BURROUGHS CORP./ 16701 W. BERNARDO DR.! S AN DIEGO CA 92127
MICHAEL S. BALL! CODE 632/ NAVAL OCEAN SYSTEMS CENTER! SAN DIEGO CA 92152! (714) 225-2365
DAVID H. WELCH! P.O. BOX 721! COLTON CA 92324
WALLY SCHNITGER! C/O INSTRUlIENT RESEARCH CO.! P.O. BOX 666! FO NTANA CA 92335/ (714) 546-4474
JOHN DE PILLIS! 2931 WALDORF DRIVE/ RIVERSIDE CA 92507! (714) 686-0534 (HOME)! (714) 787-5002 (WORK)
ATTN: A. S. WILLIAMS - LIBRARIAN! LIBRARY! TECHNOLOGY MARKETING INC.! 3170 RED HILL AVE.! COSTA MESA CA 92626/ (714) 979-1100
TIll LOWERY! 2653 SANTA ANA AVE.! COSTA MESA CA 92627
WALTER R. RYPER/ BLDG 604 M!S E212! HUGHES - GSG! P.O. BOX 3310! FULLERTON CA 92634! (714) 871-3232 X3318
SEYMOUR SINGER/ BLDG 606/M.S. K110! HUGHES AIRCRAFT CO.! P.O. BOX 3310! FULLERTON CA 92634! (714) 871-3232 X1167
lIARK JUNGWIRTH! 13318 NEWLAND ST! GARDEN GROVE CA 92644
BARcLAY R. KNERR! 9061 CHRISTINE DRIVE! HUNTINGTON BCH CA 9264 6
TED SHAPIN! 5110 E. ELSINORE AV.! ORANGE CA 92669! (714) 633-0922
ROBERT W. ANDERSON! 345 W. FIRST APT 38! TUSTIN CA 92680
GARY DUNCAN! P.O. BOX 930! TUSTIN CA 92680
DAVID C. FITZGERALD! CONTROL DATA CORP.! 3519 W. WARNER AVE.! SANTA ANA CA 92704! (714) 754-4244
JIM FONTANA! CONTROL DATA CORPORATION! 3519 W. WARNER AVE.! SANTA ANA CA 92704! (714) 754-4244
lIARK M. SCHNEGG! PERTEC COMPUTER CORP.! 17112 ARMSTRONG AVE./ IRVINE CA 92705! (714) 540-8340
RUDY L. FOLDEN/ OPERATING SYSTEMS DEVELOPMENT! P.O. BOX C-1950 4! SPERRY UNIVAC! 2722 MICHELSON DRIVE/ IRVINE CA 92713! (714) 833-2400
BOB HUTCHINS! COMPUTER AUTOMATION INC./ 18651 VON KARMAN/ IRVINE CA 92713/ (714) 833-8830 X335
ALEX BRADLEY/ STANDARD SOFTWARE SYSTEMS/ 17931 'J' SKY PARK/ IRVINE CA 92714
WILLIAM E. DROBISH/ ADVANCED DEVELOPMENT/ SILICON SYSTEMS INC. / 16692 HALE AVENUE! IRVINE CA 92714! (714) 979-0941
PAUL KELLY/ EDUCATIONAL DATA SYSTEMS/ 1682 LANGLEY AVENUE/ IRV INE CA 92714/ (714) 556-4242
JOHN S. CONERY! PERTEC COMPUTER CORP.! 17112 ARMSTRONG AVE.! SANTA ANA CA 92714! (714) 540-8340
-0
:P
(/)
n
:t:>
r
=
fT1
::;:
en
~
f--'
f--'
-<
~
:>
Gl
[11
N
V1
92715
92803
92807
93017
93105
93111
93407
94010
94022
94025
94035
94086
94086
94086
94086
94088
94109
94112
94301
94303
94304
94304
94306
94404
94521
94546
94550
94563
94611
94701
94701
94702
94704
94707
94708
94709
94720
94720
94801
94804
94901
95005
95014
95014
95014
95030
95030
95035
95050
95050
95051
95051
95064
95120
95131
95133
95153
95404.
95521
97077
97077
97077
97077
97077
97077
97201
WILLIAM J. EM!.L/ 10 BANYAN TREE LANE/ IRVINE CA 92715/ (714) 552-1543
C. L. HORNEY/ MICROELECTRONIC DEVICE DIV./ D/832-RC27/ ROCKWEL L INTERNATIONAL/ P.O. BOX 3669/ ANAHEUI CA 92803
DAN MARCUS/ GTE INFORMATION SYSTEMS/ 5300 E. LA PALMA AVE./ ANAHEIM CA 92807/ (714) 524-3131
BILL DODSON/ BURROUGHS CORP./ 6300 HOLLISTER/ GOLETA GA 93017/ (805) 964-6881
DENNIS R. AU·STIN/ 26 WEST JUNIPERO STREET/ SANTA BARBARA CA 93105/ (805) 962-7320
ANDY HARRINGTON/ 72 SOUTH PATTERSON #207/ SANTA BARBARA CA 93111/ (805) 964-6881 (WORK)/ (805) 967-4235 (HOME)
NEIL W. WEBRE/ DEPT. OF COMPo SCI. AND STAT./ CALIF. POLY. STATE UNIV./ SAN LUIS OBISP CA 93407/ (805) 546-2986
D. B. ANDERSON/ 280 BELLA VISTA DRIVE/ HILLSBOROUGH CA 94010
ATTN: NEWBERRY MICROSYSTEMS/ 24225 SUMMERHILL AVE/ LOS ALTOS CA 94022/ (415) 948-8007
BOB ALBRECHT/ DYMAX/ P.O. BOX 310/ MENLO PARK CA 94025/ (415) 323-6117
CARL S. ROSENBERG/ AMES RESEARCH CENTER/ MAIL STOP 239-19/ MOFFETT FIELD CA 94035/ (415) 965-6436 (WORK)/ (415) 967-7000 (HOME)
GEORGE LEWIS/ R & D/ BASIC TIMESHARING INC./ 870 WEST MAUDE AV ENUE/ SUNNYVALE CA 94086/ (408) 733-1122
FLEMING M. OLIVER/ 213 WEDDELL - APT. 12/ SUNNYVALE CA 94086/ (408) 734-8771
GERALD STEINBACK/ SYSTEMS PROGRAMMING/ SIGNETICS CORP./ 811 EA ST ARQUES AVE./ SUNNYVALE CA 94086/ (408) 739-7700 X2055
ANDREW HARRIS ZI~lliRMAN/ 550 NORTH FAIR OAKS AVE. APT. 14/ SUNNYVALE CA 94086/ (408) 732-8109
ROY E. BOLLINGER/ DEPT. 1965/ BLD 529/ LOCKHEED/ P.O. BOX 504/ SUNNYVALE CA 94088/ (408) 742-3182
ERIC SMALL/ ERIC SMALL AND ASSOCIATES/ 680 BEACH STREET/ SAN FRANCISCO CA 94109/ (415) 441-0666
TURNEY C. STEWARD/ 201 DRAKE ST./ SAN FRANCISCO CA 94112
JAN DEDEK/ 505 LOWELL AVE./ PALO ALTO CA 94301/ (415) 321-9298
C. E. DUNCAN/ 865 THORNWOOD DRIVE/ PALO ALTO CA 94303
LINDA E. CROLEY/ BNR INC./ 3174 PORTER DR./ PALO ALTO CA 94304/ (415) 494-3942 X40 OR 61
ROBERT A. FRALEY/ HEWLETT PACKARD LABS/ 3500 DEER CREEK RD./ pALO ALTO CA 94304/ (415) 494-1444
DAVID ELLIOT SHAWl SUITE 605/ STRUCTURED SYSTEMS CORPORATION/ 2600 EL CAMINO REAL/ PALO ALTO CA 94306/ (415) 321-8111
BRUCE BARRETT/930 LIDO LANE/ FOSTER CITY CA 94404/ (415) 349- 8724
PAUL GODFREY/ 5545 MARYLAND DR./ CONCORD CA 94521
DAVID F. FRICK/ 5964 HIGHWOOD RD./ CASTRO VALLEY CA 94546/ (415) 537-9536
S. T. HEIDELBERG/ DIVISION 8323/ SANDIA LABORATORIES/ LIVERMOR E CA 94550/ (415) 455-2179
DAVID CLINGERMAN/ 63 LOST VALLEY DRIVE/ ORINDA CA 94563/ (415) 834-3030
ROBERT C. NICKERSON/ 6966 COLTON BLVD/ OAKLAND CA 94611
JOSEPH N. JOHNSON/ P.O. BOX 92/ BERKELEY CA 94701
JOHN P. MCGINITIE/ P.O. BOX 655/ BERKELEY CA 94701
TIMOTHY DAVID MCCREERY/ P.O. BOX 2423/ BERKELEY CA 94702/ (415) 527-2774
MARK ZIMMER/ #10 2750 DWIGHT AVE/ BERKELEY CA 94704
DAVE BAASCH/lOll FOUNTAIN WALK/ BERKELEY CA94707/ (415) 525- 3458
MAURICE MCEVOY/ 1212 QUEEN'S ROAD/ BERKELEY CA 94708/ (415) 843-8260
PETER LINHARDT/ 1890 ARCH STREET - APT. 202/ BERKELEY CA 94709/ (415) 841-6917
ATTN: LIBRARY/ LAWRENCE BERKELEY LAB/ 134 BLDG 50/ UNIV OF CAL IFORNIA/ BERKELEY CA 94720
WILLETT KEMPTON/ LANGUAGE BEHAVIOR RESEARCH LAB/ UNIVERSITY OF CALIFORNIA/ 2220 PIEDMONT AVE./ BERKELEY CA 94720
HARRY R. CHESLEY/ 400 WEST RICHMOND/ POINT RICHMOND CA 94801/ (415) 233-8220
CARROLL E. BUTTERFIELD/ ELECTRONICS DIVISION/ BADGER METER INC./ 150 EAST STANDARD AVENDE/ RICHMOND CA 94804/ (415) 233-8220
ERNEST w. JONES/59 BILLOU STREET/ SAN RAFAEL CA 94901
WARREN VAN CAMP/ 485 PARK DR./ BEN LOMOND CA 95005/ (408) 336- 5654
ATTN: ENGINEERING LIBRARY/ FOUR-PHASE SYSTEMS INC./ 10700 NORTH DE ANZA BLVD./ CUPERTINO CA 95014/ (408) 255-0900 X2694
ARDON R. CORDI DATREX CORP./ 21050 MCCLELLAN ROAD - SUITE 1/ CUPERTINO CA 95014/ (408) 996-2551
BOB PUETTE/ DATA SYSTEMS DIVISION/ HEWLETT-PACKARD CO. / 11000 WOLFE ROAD/ CUPERTINO CA 95014/ (408) 257-7000
STAN HEAD/ 19270 RAINERI LANE/ LOS GATOS CA 95030/ (408) 353-3055
TERRY THOMAS/ 24740 MILLER HILL RD./ LOS GATOS CA 95030/ (415) 965-6436
ROB MEANS/ 1421 YELLOWSTONE/ MILPITAS CA 95035/ (408) 262-0420
JOHN DENNIS COUCH/ GSD/ HEWLETT-PACKARD/ 5303 STEVENS CREEK BLVD./ SANTA CLARA CA 95050/ (408) 249-7020 X2949
E. HAROLD WILLIAMS/ SYSCOM/ 3058-B SCOTT BLVD./ SANTA CLARA CA 95050/ (408) 246-2437
JOHN DOERR/ INTEL CORPORATION MCD/ 3065 BOWERS AVENUE/ SANTA CLARA CA 95051/ (408) 987-7351
R. STEVEN GLANVILLE/ 100 BUCKINGHAM DR. APT 238/ SANTA CLARA CA 95051/ (408) 241-6294
MICHAEL FAY/ INFORMATION SCI. DEPT./ UNIV. OF CALIFORNIA - SANTA CRUZ/ SANTA CRUZ CA 95064/ (408) 429-4043
THOMAS A. ROLANDER/ 21950 MCKEAN ROAD/ SAN JOSE CA 95120/ (408) 378-2014
D. H. SPRINGER/ COMPUTER SYSTEMS DIVISION/ ANDERSON JACOBSON INC./ 521 CHARCOT AVENUE/ SAN JOSE CA 95131/ (408) 263-8520
JOHN H. SpANTON/ 2351 RAVINE DRIVE/ SAN JOSE CA 95133/ (408) 734-7145
TOM PITTMAN/ ITTY BITTY COMPUTERS/ P.O. BOX 23189/ SAN JOSE CA 95153
GARY LOWELL/ 2625 HIDDEN VALLEY/ SANTA ROSA CA 95404/ (707) 544-6373
ATTN: DIRECTOR / INST. RESEARCH/ ADP/ HUMBOLDT STATE UNIVERSITY/ ARCATA CA 95521
, ATTN: MANUFACTURING COMPUTER GROUP/ DS 60-171/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (503) 638-3411 X2710
TERRY HAMM/ M.S. 60-456/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (503) 638-3411 X2579
RANDY HODNETT/ MS 39-007/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (503) 644-0161
GREG JOHNS/ MS 39-007/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (503) 644-0161
LYNN SAUNDERS/ MS 39-135/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (503) 644-0161 X6640
WAYNE VYROSTEK/ MS 74-329/ TEKTRONIX INC./ P.O. BOX 500/ BEAVERTON OR 97077/ (503) 644-0161
ROBERT D. PERRY JR./ 255 SW HARRISON ST. APT. 5-D/ PORTLAND OR 97201/ (503) 222-6654
-0
::I>
(/)
n
,
:>
z
fT1
~
(/)
~
I-'
i--'
=
f~
CO
'J
c:o
N
en
97213
97221
97229
97330
97330
97401
97440
98008
98033
98040
98043
98109
98195
98225
98401
98632
98926
99210
99258
2006
2006
2006
2308
2308
2308
2600
3000
AUSTRALIA
AUSTRAL IA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
3052
3052
3072
3165
4001
4067
5001
5063
5098
6102
7001
A-1040
A-1150
B-1050
B-1170
B-1180
H3C 3J7
H3S lJ6,
K1S 5B6
K2A 1T2
L4W ITO
L5N 1KT
L5N 1KT
L5N 1K7
M4B 2E5
M4N 1M
M4Y 1P9
M5P 2C3
M5S 1A4
M9W 5R8
N2J 4H2
N2L 3G1
N2L 3G1
N6A 4N5
QUEBEC
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRAL IA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRIA
AUSTRIA
BELGIUM
BELGIUM
BELGIUM
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
, V6T 1W5 CANADA
V6X 2Z9 CANADA
BRIAN HANSEN! 2426 N.E. 57TH AVE. APT #3! PORTLAND OR 97213! ( 503) 284-3537
ATTN: OREGON MINI-COMPUTER SOFTWARE IN! 4015 SW CANYON ROAD! PORTLAND OR 97221! (S03) 226-7760
DAVID ROWLAND! ELECTRO SCIENTIFIC INDUSTRIES! 13900 N.W. SCIEN CE PARK DRIVE! PORTLAND OR 97229! (503) 641-4141
DAVID F. CAUTLEY! DEPT. OF COMPUTER SCIENCE! GENERAL INFORMATION SYSTEMS INC.! 983 N.W. SPRUCE ST.! CORVALLIS OR 97330! (503) 754-1171
GARY OLIVER! P.O. BOX 826! CORVALLIS OR 97330! (503) 753-1770
H. MARC LEWIS! REGIONAL INFORMATION SYSTEMS! 125 E 8TH! EUGENE OR 97401! (503) 687-4559
KENT LOOBEY! FARWEST STEEL CORP.! P.O. BOX 889! EUGENE OR 9744 O! (503) 686-2000
KEITH MITCHELL! 16213 SE 28 PL! BELLEVUE WA 98008
KENNETH E. CHARLTON! 12929 1 11TH PLACE N.E.! KIRKLAND WA 98033! (206) 822-9348
DONNAFAYE FINGER! 4108 78TH AVE SE! MERCER ISLAND WA 98040! (2 06) 232-2428
GARY S. ANDERSON! JOHN FLUKE MFG. CO. INC.! P.O. BOX 43210 - M.S. 29! MOUNTLAKE TERR WA 98043! (206) 774-2296
PETER A. ARMSTRONG! DIGITAL DATA SYSTEMS! 1113 DEXTER AVE. N.! SEATTLE WA 98109! (206) 282-2323
HELLMUT GOLDE! DEPT. OF COMPo SCI.! FR-35! U OF WASHINGTON! SEATTLE WA 98195! (206) 543-9264
ROBERT B. FINCH! 910 N. LAKE SAMISH DR.-APT. 30! BELLINGHAM WA 98225! (206) 734-0781
ATTN: ENGINEERING LIBRARY! PT 1-14! WEYERHAUSER CO.! TACOMA WA 98401! (206) 572-9000 X495
BUZZ HILL! EYEDENTIFY INC.! P.O. BOX 2006! LONGVIEW WA 98632! (206) 423-3281
F. STANLEY! COMPUTER SERVICES! CENTRAL WASHINGTON UNIV.! ELLENBURG WA 98926
FRED J. MILLER! BUSINESS COMPUTER SYSTEMS! DATACOMP! P.O. BOX 1087! SPOKANE WA 99210! (509) 456-6908
HOUSTON P. LOWRY! GONZAGA UNIVERSITY! STDDENT BOX 816! SPOKANE WA 99258
TONY J. GERBER! BASSER DEPT. OF COMPUTER SCIENCE! UNIVERSITY OF SYDNEY! SYDNEY N.S.W. 2006! AUSTRALIA! 6923216
CARROLL MORGAN! BASSER DEPT. OF COMPUTER SCIENCE! UNIV. OF SYDNEY! SYDNEY N.S.W. 2006! AUSTRALIA! 692 3216
BRIAN G. ROWSWELL! UNIVERSITY COMPUTING CENTRE H08! UNIVERSITY OF SYDNEY! SYDNEY N.S.W. 2006! AUSTRALIA! (02) 692-3491
ATTN: SERIALS DEPARTMENT! AUCHMUTY LIBRARY! UNIVERSITY OF NEWC ASTLE! NEWCASTLE N.S.W. 2308! AUSTRALIA! 685391
J. A. CAMPBELL! MATHEMATICS DEPT.! UNIVERSITY OF NEWCASTLE! NEWCASTLE N.S.W. 2308! AUSTRALIA! 685 657
P. SIMON! DEPT OF MATHEMATICS! UNIV. OF NEWCASTLE! NEWCASTLE N .S.W. 2308! AUSTRALIA
N. D. H. HAMMOND! FLEET MAINTENANCE! NAVY OFFICE OF UNDERWATER WEAPONS! CANBERRA A.C.T. 2600! AUSTRALIA
Q. VAN ABBE! COMPUTER CENTRE! ROYAL MELBOURNE INSTITDTE OF TEC HNOLOG! 124 LATROBE STREET! MELBOURNE VICTORIA 3000! AUSTRALIA! (03) 341-2467
(03) 341-2292
ATTN: LIBRARIAN! SCHOOL OF MATHEMATICAL SCIENCES! RICHARD BERRy BUILDING! UNIVERSITY OF MELBOURNE! PARKVILLE VICTORIA 3052! AUSTRALIA
PETER RICHARDSON! COMPUTER SCIENCE DEPT.! UNIV. OF MELBOURNE! PARKVILLE VICTORIA 3052! AUSTRALIA! (03) 3415225
M. RAHILLY! 2 RITA STREET! EAST PRESTON VICTORIA 3072! AUSTRAL IA
GEOFFREY A. CLEAVE! 18 NEIL COURT! E. BENTLEIGH VICTORIA 3165! AUSTRALIA
W. J. G. FISHER! QUEENSLAND INST. OF TECHNOLOGY! G.P.O. BOX 2434! BRISBANE QUEENSLAND 4001! AUSTRALIA! 221-2411 X423
D. B. JOHNSTON! DEPT. OF COMPUTER SCIENCE! UNIV. OF QUEENSLAND! ST. LUCIA QUEENSLAND 4067! AUSTRALIA! 07!3706930
B. KIDMAN! DEPT OF COMPUTER SCIENCE! UNIVERSITY OF ADELAIDE! GPO BOX 498! ADELAIDE S.A. 5001! AUSTRALIA! 223 4333
I. N. BLAVINS! 40 WOODFIELD AVENUE! FULLARTON S.A. 5063! AUSTRALIA
CHRIS A. RUSBRIDGE! SAENET! SOUTH AUSTRALIA INSTITDTE OF TECHNOLOG! P.O. BOX I! INGLE FARM S.A. 5098! AUSTRALIA! AUSTRALIA 08-260-2055
D. P. HODGSON! DEPT. OF MATHEMATICS AND COMPUTER STUD! WESTERN AUSTRALIAN INSTITDTE OF TECHNO! HAYMAN ROAD! SOUTH BENTLEY W.A. 6102! AUSTRALIA
A. H. J. SALE! DEPT. OF INFORMATION SCIENCE! UNIVERSITY OF TASMANIA! BOX 252C! HOBART TASMANIA 7001! AUSTRALIA! (002) 23 0561
ATTN: INST. FUER INFORMATIONSSYSTEME! TECHNISCHE UNIVERSITAT WlEN! WIEN A-1040! AUSTRIA
KONRAD MAYER! REICHSAPFELG 13!8! VIENNAA-1150! AUSTRIA! (02254) 201 781
o. BEAUFAYS! MATHEMATIQUES APPLIQUEES! C P I 165! UNIVERSITE L IBRE DE BRUXELLES! AVENUE F.-D. ROOSEVELT 50! BRUXELLES B-10S0! BELGIUM
ALAIN PIROTTE! MBLE!RESEARCH LABORATORY! AVENUE EM. VAN BECELAERE 2! BRUSSELS B-1170! BELGIUM! 673.41.90! 673.41.99
MARTINE DE GERLACHE! CENTRE DE CALUL! INSTITDTE ROYAL METEOROLOGIQUE! 3 AVENUE CIRCULAIRE! BRUXELLES B-1180! BELGIUM
PATRICK WARD! CENTRE DE CALCULI UNIVERSITE DE MONTREAL! C.P. 6 128! MONTREAL QUEBEC H3C 3J7! CANADA! (514) 343-6866
FRANCOIS PINARD! 2780 BARCLAY - APPARTEMENT I! MONTREAL QUEBEC H3S lJ6! CANADA! (514) 342-3450
DAVID A. THOMAS! COMPUTING SERVICES! 401 ADMIN. BLDG.! CARLETON UNIV.! OTTAWA ONTARIO K1S 5B6! CANADA! (613) 231-6770
F. S. WINTERSPRING! P.O. BOX 6115 STATION J! OTTAWA ONTARIO K2A 1T2! CANADA
CARLO LOCICERO! 3501 GLEN ERIN DRIVE #401! HISSISSAUGA ONTARIO L4W ITO! CANADA! (416) 826-8640
PETER HAYNES! CONTROL DATA CANADA LTD.! 1855 MINNESOTA COURT-STREETSVILLE! MISSISSAUGA ONTARIO L5N 1KT! CANADA! (416) 826-8640 X238
DAVID JONES! CONTROL DATA CANADA LTD.! 1855 MINNESOTA COURT-STREETSVILLE! MISSISSAUGA ONTARIO LSN 1KT! CANADA! (416) 826-8640 X262
HENRY MCGILTON! CONTROL DATA CANADA! 1855 MINNESOTA COURT! MIS SISSAUGA ONTARIO L5N 1K7! CANADA! (416) 826-8640 X295
MARK GREEN! #1001 - 390 DAWES ROAD! TORONTO ONTARIO M4B 2E5! CANADA! (416) 755-8607
NORMAN A. JULL! 56A BLYTHWOOD ROAD! TORONTO ONTARIO M4N 1M! CANADA
RON BAECKER! HUMAN COMPUTING RESOURCES! 10 ST. MARY STREET SUITE 401! TORONTO ONTARIO M4Y 1P9! CANADA! (416) 922-1937
ROBERIO DIAS! 134 COLIN AVE.! TORONTO ONTARIO MSP 2C3! CANADA
LEONARD VANEK! ,COMPUTER SYSTEMS RESEARCH GROUP! SANFORD FLEMIN G BLDG! UNIV. OF TORONTO! TORONTO ONTARIO M5S 1M! CANADA! (416) 978-6219
RON MCKERRON/ COMSHf~E LTD.! 230 GALAXY ROAD! REXDALE ONTARIO M9W SR8! CANADA
CHARLES H. FORSYTH! APT. 2-304! 300 REGINA ST. N.! WATERLOO ONTARIO N2J 4H2! CANADA! (519) 884-7531! (519) 885-1211 X3055
JOHN C. BEATTY! DEPT. OF COMPo SCIENCE! UNIV OF WATERLOO! WATERLOO ONTARIO N2L 3G1! CANADA! (519) 885-1211 X2241
W. MORVEN GENTLEMAN! MATHEMATICS COMPUTING FACILITY! UNIVERSITy OF WATERLOO! WATERLOO ONTARIO N2L 3G1! CANADA! (519) 578-8866! (519) 885-1211
R. A. ALLAN! DIESEL DIVISION! GENERAL MOTORS OF CANADA LTD.! P.O. BOX 5160! LONDON ONTARIO N6A 4N5! CANADA
DANIEL THALMANN! DEPARTEMENT D'INFORMATIQUE ET RECHERCH! UNlVE RSITE DE MONTREAL! CASE POSTALE 6128 - SUCC A! MONTREAL H3C 3J7 QUEBEC! CANADA
(514) 343-7477
BARY W. POLLACK! DEPT OF COMPo SCI.! UNIV. OF BRITISH COLUMBIA! 2075 WESBROOK PLACE! VANCOUVER B.C. V6T 1WS! CANADA! (604) 228-6794
I. GANAPATHY! NOOTKA BUILDING! MACDONALD DETTWILER & ASSOCIATES! 10280 SHELLBRIDGE WAY! RICHMOND B.C. V6X 2Z9! CANADA! (604) 278-3411 X32
-n
rn
t:O
:;;0
=
;I>
:;;0
-<
DK-1051
DK-2200
DK-2650
DK-2800
DK-9220
SF-00100
SF-20500
SF-33101
SF-33101
SF-33101
SF-33200
SF-33340
SF-33410
SF-33720
F-310n
DENMARK
DENMARK
DENHARK
DENHARK
DEmlARK
FINLAND
FINLAND
FINLAND
FINLAND
FINLAND
FINLAND
FINLAND
FINLAND
FINLAND
FRANCE
F-310n FRANCE
F-34075 FRANCE
F-38000
F- 54042
F-75230
D-lOOO
D-2000
D-2000
D-2000
D-3000
D-3000
D-4400
D-5000
D-6236
D-6300
D-6750
D-7000
D-7408
D-7500
FRANCE
FRANCE
FRANCE
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERl1ANY
GERHANY
GERHANY
D-7500 GERHANY
D-7500 GERHANY
D-7900
D-8000
D-8000
D-8000
D-8000
D-8012
D-8031
500762
2
1-40033
1-40122
1-40122
113
151
182
560
0001
14
34
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
GERHANY
INDIA
IRELAND
IRELAND
IRELAND
ISRAEL
ISRAEL
ISRAEL
ITALY
ITALY
ITALY
JAPAN
JAPA.'1
JAPAN
JAPAN
JAPAN
NEW ZEALAND
NORWAY
SOUTH AFRICA
SPAIN
SPAIN
110GENS LINDHARD/ NYHAVN 20/ KOBENHAVN K DK-1051/ DENHARK/ (01) 11 12 04
ATTN: BIBLIOTEKET/ DATALOGISK INSTlTUT./ KOBENHAVN UNIVERSITET/ SIGURDSGADE 41/ KOBENHAVN N DK-2200/ DENMARK
NIELS WINTHER/ REBAEK SOPARK 5-544/ HVIDOVRE DK-2650/ DENHARK
GUNNAR JOHANSEN/ DEPT. OF CHENISTRY AND CHEN. ENG./ DANISH ENGINEERING ACADEHY/ BYGNING 375/ LYNGBY DK-2800/ DENHARK
UFFE MOLLER/ DATANOMUDDANNELSEN/ LANGAGERVEJ 16/ AAIBORG OST DK-9220/ DENMARK/ (08) 15 81 00
ATTN: DEPT. OF COMPUTER SCIENCE/ UNIVERSITY OF HELSINKI/ TOOLONKATU 11/ HELSINKI 10 SF-00100/ FINLAND
MARKKU SUNIl COMPUTER CENTRE/ UNIVERSITY OF TURKU/ TURKU 50 SF-20500/ FINLAND/ 921-335599 X280
MATTI KARINEN/ COMPUTING CENTRE/LPR-PROJECT/ TAMP ERE UNIV. OF TECHNOLOGY/ PL 527/ TAMPERE 10 SF-33101/ FINLAND/ 931-652802(HOME)/ 931-162125 (WORK)
JUKKA KESO/ COMPUTING CENTRE/LPR-PROJECT/ TAMPERE UNIV. OF TECHNOLOGY/ PL 527/ TAMPERE 10 SF-33101/ FINLAND/ 931-33727 (HOME)/ 931-162125 (WORK)
JYRKI TUOMI/ COMPUTING CENTRE/LPR-PROJECT/ TAMPERE UNIV. OF TECHNOLOGY/ PL 527/ TAMPERE 10 SF-33101/ FINLAND/ 931-50000/570 (HOME)/ 931-162125 (WORK)
JORMA SINNAMO/ PYYNIKINT. 3/ TAMPERE 20 SF-33200/ FINLAND
VEIKKO VISALA/ KUOKKIJANTIE 10/ TAMPERE 34 SF-33340/ FINLAND/ 917-712338
TIMO HAMMAR/ JANISLAHDENKATU 3 A 7/ TAMPERE 41 SF-33410/ FINLAND
ERKKI LEHTlMAKI/ OPISKELIJANK. 4A 20/ TAMPERE 72 SF-33720/ FINLAND/ 963-37141 (HOME)
MICHEL GALINIER/ INFORMATIQUE/ UNIVERSITE P. SABATIER/ 118 ROUTE DE NARBONNE/ TOULOUSE CEDEX F-31077/ FRANCE/ 16-61-53 11 20
PIERRE MAURICE/ INFORMATIQUE/ UNIVERSITE PAUL SABATIER/ 118 ROUTE DE NARBONNE/ TOULOUSE CEDEX F-31077/ FRANCE/ (61) 53 11 20 X300
ATTN: CENTRE DE RECHERCHE/ INFORMATIQUE ET GESTRON/ UNIV. DES SCIENCES ET TECH. DU LANCUED/ AVENUE D'OCCIREINE/ MONTPELLIER CEDEX F-34075/ FRANCE
633886
ATTN: A. D. R./ CHAMBRE DE COMMERCE ET D'INDUSTRIE/ 6 BOULEVARD GAMBETTA/ GRENOBLE F-38000/ FRANCE
ALAIN TISSERANT/ DEPARTENENT INFORMATIQUE/ ECOLE DES MINES/ PARC DE SAURUPT/ NANCY CEDEX F-54042/ FRANCE/ (28) 51 42 32
JACQUES FARRE/ INSTlTUT DE PROGRAMMATION/ T 55.65/ UNIVERSITE P. ET H. CURIE/ 4 PLACE JUSSlEU/ PARIS CEDEX 05 F-75230/ FRANCE/ 336 25 25 X58 77
ATTN: NIXDORF COMPUTER GMBH/ BEREICH ENTWICKLUNG/ ABT DOKUMENTATION/ KAISERIN-AUGUSTA-ALLEE 21/ BERLIN 21 D-1000/ GERMANY
H.-H. NAGEL/ INSTlTUT FUER INFORMATIK/ UNIVERSITAT HAMBURG/ SCHLUTERSTRASSE 66-72/ HAMBURG 13 D-2000/ GERMANY/ 040-4123-4151
BERNHARD NEBEL/ CLASINGSTRASSE 8/ HAMBURG 19 D-2000/ GERMANY/ 040/4913613
ATTN: INSTITUT FUER INFORMATIK/ UNIVERSITAT HAMBURG/ SCHLUETERSTRASSE 13/ HAMBURG 70 D-2000/ GERHANY
ROLF SONNTAG/ RICHARD WAGNER STR. 27/ HANNOVER 1 D-3000/ GERMANY
G. MARQUARDT/ REGIONALES RECHENZENTRUM/ WUNSTORFER STR. 14/ HANNOVER 91 D-3000/ GERMANY
HORST STENZEL/ RECHENZENTRUM/ UNIVERSITAT MUNSTER/ ROXELER STRASSE 60/ MUNSTER D-4400/ GERHANY
HENK JANSEN/ DIGITAL EQUIPMENT GMBH/ STOBERGER STR. 90/ KOLN 41 D-5000/ GERMANY/ (0221) 5486-1
GERHARD BLANKE/ POSTBOX 5107/ ESCHBORN D-6236/ GERMANY/ (06196) 403267
A. GEUBE/ ABTEILUNG BIOMATHEMATIK/ UNIVERSITAT GIESSEN/ FRANKFURTER STRASSE 100/ GIESSEN D-6300/ GERMANY/ 06 41-702/4855/56/57
ruu,S-WILM WIPPERMANN/ INFORMATIK/ F13/ UNIV. OF KAISERSLAUTERN/ PFAFFENBERGSTR. 95/ KAISERSLAUTERN D-6750/ GERHANY/ (0631) 8542635
KLAUS LAGALLY/ INSTITUT FUR INFORMATIK/ UNIVERSITAT STUTTGART/ AZENBERGSTRASSE 12/ STUTTGART 1 D-7000/ GERMANY/ (0711) 2078-373/329
ASHOK N. ULLAL/ GOETHESTR. 10/ KUSTERDINGEN D-7408/ GERMANY/ 07121/271446
KARLHEINZ KAPP/ ANGEW. INFORMATIK/ UNIVERSITAET KARLSRUHE/ TRANSPORT-U. VERKEHRSSYSTEME/ KARLSRUHE D-7500/ GERMANY/ (0721) 608-3170/3898
(07247) 823 928
GERHARD T. GOOS/ INSTITUT FUER INFORMATIK II/ UNIVERSITAT KARLSRUHE/ POSTFACH 6380/ KARLSRUHE 1 D-7500/ GERMANY/ (0721) 751-176
ULRICH KULISCH/ INSTITUT FUR ANGEWANDTE MATHEMATIK/ UNIVERSITAT KARLSRUHE (TH)/ KAISERSTR. 12 - POSTFACH 6380/ KARLSRUHE 1 D-7500/ GERMANY
(0721) 608-2680
AXEL T. SCHREINER/ SEKTION INFORMATIK/ UNIVERSITAET ULLU/ ULLU D-7900/ GER}1ANY/ 0711/176 2523
ATTN: BIBLIOTHEK/ LEIBNIZ - RECHENZENTRUM/ BARERSTRASSE 21/ MUENCHEN 2 D-8000/ GERHANY/ (089) 2105-8489
MANFRED LUCKMANN/ ALEMANNENSTR. 24/ MUENCHEN 90 D-8000/ GERMANY/ (089) 2105-8276
PETER RAUSCHMAYER/ HERZOG-GARIBALD-STRASSE 15/ MUENCHEN 90 D-8000/ GERMANY/ 647504
JAN WITT/ ZFE FL SAR/ SIEMENS AG/ POSTFACH 832729/ MUNCHEN 83 D-8000/ GERHANY/ (089) 722-22651
BERNHARD H. BEITINGER/ INDUSTRIEANLAGEN-BETRIEBSGESELLSCHAFT/ EINSTEINSTRASSE/ OTTOBRUN D-8012/ GERHANY/ 089/60082363
RAINER R. LATKA/ AN DER GRUNDBREITE 1/ WESSLING D-8031/ GERHANY/ 08153-1063
ATTENTION: N. V. KOTESWARA RAO/ COMPUTER TRG. UNIT/ ELECTRONICS CORPORATION OF INDIA/ HYDERABAD (AP) 500762/ INDIA/ 71611
DIARMUID MCCARTHY/ KILMACUD/ 7 ST. KEVIN'S PARK/ BLACKROCK CO. DUBLIN/ IRELAND
JOHN W. FINNEGAN/ SCHOOL OF ENGINEERING/ UNIVERSITY COLLEGE/ G ALWAY/ IRELAND
DAVID M. ABRAHAMSON/ DEPT. OF COMPUTER SCIENCE/ TRINITY COLLEGE/ 200 PEARSE ST./ DUBLIN 2/ IRELAND/ 772941 X1716 X1765
ATTN: THE LIBRARY/ MINISTRY OF DEFENCE/ P.O.BOX 962/ HAIFA/ ISRAEL
ATTN: PERIODICALS DEPT./ JEWISH NATIONAL AND UNIV. LIBRARY/ P.O. BOX 503/ JERUSALEN/ ISRAEL
GIDEON YUVAL/ COMPUTER SCIENCE/ THE HEBREW UNIVERSITY/ JERUSAL EN/ ISRAEL
M. E. RONCHI/ CENTRO DI CALCOLO/INTERUNIVERSITARIO/ VIA MAGNANELLI 6/3/ LECCHIO DIRENO BOLOGNA 1-40033/ ITALY/ 576541/ 576542
MAURO MONTESI/ TEMA S.P.A./ VIA MARCONI 29/1/ BOLOGNA 1-40122/ ITALY/ 051-267285
GUISEPPE SELVA/ TEMA S.P.A./ VIA MARCONI 29/1/ BOLOGNA 1-40122/ ITALY/ 051-267285
NOBUO WAKABAYASHI/ DEPT. OF MANAGEMENT SCIENCE/ OTARU UNIVERSITY OF COMMERCE/ 3-5-21 MIDORI/ OTARU HOKKAIDO/ JAPAN/ 0134-33-7227 (HOME)
HARUHISA ISHIDA/ COMPUTER CENTRE/ UNIVERSITY OF TOKYO/ 2-11-16 Yf.YOI/ BUNKYOKU TOKYO 113/ JAPAN/ 03-812-2111 X28ll
KOHEI NOSHITA/ 1-52-4 YOYOGI/ KHIBUYA-KU TOKYO 151/ JAPAN/ 03-370-8031
MASATO TAKEICHI/ DEPT. OF COMPUTER SCIENCE/ THE UNIV. OF ELECTRO-COMMUNICATIONS/ 1-5-1 CHOFUGAOKA/ CHOFU-SHI TOKYO 182/ JAPAN/ JAPAN 0424-83-2161 X525
NOBUKI TOKURA/ DEPT. OF INFORMATION AND COMPo SCIENCE/ OSAKA UNIV./ '1-1 MACHIKANEYAMA/ TOYONAKA 560/ JAPAN/ 06 (856) 1151 X3245
G. A. VIGNAUX/ DEPARTMENT OF INFORMATION SCIENCE/ VICTORIA UNIVERSITY OF WELLINGTON/ PRIVATE BAG/ WELLINGTON/ NEW ZEALAND/ 721-000
HARALD EIDE/ NORSK DATA A.S./ LORENVN. 57/ OSLO 5/ NORWAY/ 47 2 21 73 71/ 47 2 22 80 90
ATTENTION: E. N. VAN DEVENTER/ COMPUTING CENTRE/ NATIONAL RESEARCH INST FOR MATH SCIENC/ POBOX 395/ PRETORIA 0001/ SOUTH AFRICA/ 74-9111
MARTIN VERGES TRIAS/ CENTRO DE CALCULO UPB/ AV. DR. GREGORIO MARANON S/N/ BARCELONA 14/ SPAIN/ (93) 334.35.00
LUIS A. GARCIA-RAMOS/ E.S.A.D.E./ AV. VICTORIA 60/ BARCELONA 34/ SPAIN/ (93) 203 7800
N
00
$-000 00
5-100 44
oS-100 44
S-161 54
S-175 62
5-220 07
$-402 20
S-431 39
S-461 01
5-752 23
5-901 87
$-951 45
S-951 87
5-951 87
CH-1200
CH-8005
CH-8008
CH-8092
CH-9470
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWEDEN
SWITZERLAND
SWITZERLAND
SWITZERLAND
SWITZERLAND
SWITZERLAND
THE NETHERLANDS
THE NETHERLANDS
THE NETHERLANDS
THE NETHERLANDS
THE NETHERLANDS
THE NETHERLANDS
UNITED KINGDOM
UNITED KINGDOM
UNITED KINGDOM
UNITED KINGDOM
AB9 2UB UNITED KINGDOM
AL10
BB7
BNl
BN1
BT7
eM17
CV4
eH10
EH5
EX4
E14
HA4
LA1
LA1
LA1
LA1
L69
9AB
4DZ
2GJ
9QT
INN
9NA
7AL
6NH
2XT
4Q6
6JG
9DP
1BA
4YN
4YW
4YX
3BX
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
M13 9PL UNITED KINGDOM
M60 1QD UNITED KINGDOM
M60 1QD UNITED KINGDOM
NW3 UNITED KINGDOM
SG2 9UT UNITED KINGDOM
S09 5NH UNITED KINGDOM
S09 5NH UNITED KINGDOM
SW7 2AZ UNITED KINGDOM
SW7
WC1H
Y01
630
2AZ
OPY
5DD
090
UNITED KINGDOM
UNITED KINGDOM
UNITED KINGDOM
USSR
~U-61000 YUGOSLAVIA
61001 YUGOSLAVIA
JOHN TIMOTHY FRANKLIN/ KRUKMAKERGATTAN 1/6/ STOCKHOLM S-OOO 00/ SWEDEN
STAFFAN ROMBERGER/ COMPUTER SCIENCE/ ROYAL INSTITUTE OF TECHNO LOGY/ STOCKHOLM S-100 44/ SWEDEN/ 08-787 7194
LARS-ERIK THORELLI/ DEPT. OF COMPUTER SYSTEMS/ THE ROYAL INSTI TUTE OF TECHNOLOGY/ STOCKHOLM 70 S-100 44/ SWEDEN/ SWEDEN-08-236520
CLAES RICKEBY/ HEDEBYVAGEN 5/ BROMMA S-161 54/ SWEDEN/ 08/37 65 37
NEIL T. KEANE/ 'SYSTEM DEVELOPMENT/ STANSAAB ELEKTRONIK AB/ VEDDESTAVAAGEN 13/ JAARFAALLA S-175 62/ SWEDEN/ 08/36 28 00
LENNERT BENSRYD/ LUNDS DATACENTRAL/ LUND UNIVERSITY/ BOX 783/ LUND S-220 07/ SWEDEN/ 046/12 46 20
AKE WIKSTROM/ DEPT. OF COMPUTER SCIENCES/ CHALMERS UNIV. OF TECHNOLOGY/ FACK/ GOTHENBURG 5 S-402 20/ SWEDEN
KURT FREDRIKSSON/ RINGLEKEN 7/ MOLNDAL S-431 39/'SWEDEN/ 4631- 41-04-15 (HOME)/ 4631-27 50 00-491 (OFFICE)
LARS G. MOSSBERG/ VOLVO FLYGMOTOR AB/ BOX 136/ TROLLHATTAN S-461 01/ SWEDEN/ (0520) 30900-287
OLLE OLSSON/ DEPT. OF COMPUTER SCIENCE:ADP/ UPPSALA UNIVERSITY / STUREGATAN 4B 1 TR/ UPPSALA S-752 23/ SWEDEN/ 018-138650
HANS WALLBERG/ UMDAL/ UMEA S-901 87/ SWEDEN/ 46-90 12 56 00
LARS LYSEN/ HAVSORINGSGRAND 11/ LULEA S-951 45/ SWEDEN/ (0920) 65515
JOHNNY WIDEN/ UNIV. OF LULEA/ FACK/ LULEA S-951 87/ SWEDEN/ (0920) 98000
HANS-KURT JOHANSEN/ UNIV. OF LULEAA/ LULEAA S-951 87/ SWEDEN/ (0920) 98000 X386
DAVID BATES/ 12 CHEMIN DE TAVERNAY/ 1218 GRAND SACONNEX/ GENEV A CH-1200/ SWITZERLAND/ 98-55-44/ 41-98-11
RAFAEL E. EGLOFF/ HONEYWELL BULL/SCHWEIZ AG/ HARDTURMSTRASSE 2 53/ ZURICH CH-8005/ SWITZERLAND/ (01) 44 49 40
URS R WYSS/ BLEULERSTRASSE 2/ ZURICH CH-8008/ SWITZERLAND/ 0041-22-28.79.61
NIKLAUS WIRTH/ INSTITUT FUER INFORMATIK/ ETH - ZENTRUM/ ZUERICH CH-8092/ SWITZERLAND
HELMUT SANDMAYR/ NEU-TECHNIKUM BUCHS/ BUCHS CH-9470/ SWITZERLAND/ CH-085/6 45 24
D. GOSMAN/ ZEEMAN LABORATORIUM/ UNIVERSITEIT VAN AMSTERDAM/ PLANTAGE MUIDERGRACHT 4/ AMSTERDAM/ THE NETHERLANDS/ 020-5222177
H. S. M. KRUYER/ DEPT. MSE/ KONINKLYKE/SHELL-LABORATORIUM/ BAD HUiSWEG 3/ AMSTERDAM/ THE NETHERLANDS
ATTN: I.W.I.S.-TNO/ POSTBUS 297/ KON. MARIALAAN 21/ DEN HAAG/ THE NETHERLANDS
ATTN: DSM/ CENTRAL BIBLIOTHEEK 4213.001/ CENTRAL LABORATORIUM/ P.O. BOX 18/ GELEEN/ THE NETHERLANDS
H. PAAS/ DEPT. OF SPACE RESEARCH/ UNIV. OF GRONINGEN/ P.O. BOX 800/ GRONINGEN/ THE NETHERLANDS/ 050-116662
J. D. ALANEN/ FREDERIK HENDRIKSTRAAT 112/ UTRECHT/ THE NETHERLANDS/ 030 + 520548
MAURICE O'FLAHERTY/ ANTRIM/ 444 MEVILLE GARDEN VILLAGE/ N,EWTOWNABBEY N. IRELAND/ UNITED KINGDOM
B. L. MARKS/ U.K. LABORATORIES/ IBM/ HURSLEY/ N.WINCHESTER ENGLAND/ UNITED KINGDOM
STEPHEN L. BREIBART/ EASTCOTE/ 12 ELM AVENUE/ PINNER MIDDLESEX/ UNITED KINGDOM
PETER J. BURNS DE BONO/ NEWFOUNDLAND HOUSE/ HUGH PUSHMAN COMPILERS/ THE QUAY/ POOLE ENGLAND/ UNITED KINGDOM/ (02013) 70510
DENIS M. WILSON/ DEPARTMENT OF COMPUTING SCIENCE/ UNIVERSITY 0 F ABERDEEN/ KING'S COLLEGE/ OLD ABERDEEN SCOTLAND AB9 2UB/ UNITED KINGDOM
0224 40241 X6418
JOHN w. LEWIS/ SCHOOL OF INFORMATION SCIENCES/ HATFIELD POLYTECHNIC/ P.O. BOX 109/ HATFIELD HERTS AL10 9AB/ UNITED KINGDOM/ 68100 X237
J. N. HARRISON/ MOSNA COTTAGE/ NEWEY - RIMINGTON/ N. CLITHEROE LANCS BB7 4DZ/ UNITED KINGDOM/ GISBURN 329
STEVEN PEMBERTON/ DEPT. OF COMPUTING AND CYBERNETICS! BRIGHTON POLYTECHNIC/ MOULSECOOMB/ BRIGHTON ENGLAND BN1 2GJ/ UNITED KINGDOM/ 693655 X2273
J. R. W. HUNTER/ SCHOOL OF ENGR. AND APPL. SCI./ UNIV. OF SUSSEX/ BRIGHTON SUSSEX BN1 9QT/ UNITED KINGDOM/ (0273) 66755 X146
JIM WELSH/ DEPARTMENT OF COMPUTER SCIENCE! QUEEN'S UNIVERSITY/ BELFAST N.IRELAND BT7 1NN/ UNITED KINGDOM/ (0232) 45133 X3221
DAVID FLOOD PAGE/ STANDARD TELECOMMUNICATIONS LABORATORI/ LONDON ROAD! HARLOW ESSEX CM17 9NA/ UNITED KINGDOM/,0279 29531 X345
RUTH RAYMOND! COMPUTER UNIT/ UNIV. OF WARWICK! COVENTRY ENGLAN D CV4 7AL/ UNITED KINGDOM
DAVID A. COOPER! FAIRMILEHEAD/ 52 SWAN SPRING AVENUE/ EDINBURGH SCOTLAND ER10 6NH/ UNITED KINGDOM
T. M. SPENCE/ SYSTEMSHARE LTD/ PILTON DRIVE/ EDINBURGH SCOTLAND EHS 2XT/ UNITED KINGDOM
D. R. ALLUU/ DEPT. OF PHYSICS/ UNIVERSITY OF EXETER/ EXETER ROAD/ EXETER ENGLAND EX4 4Q6/ UNITED KINGDOM
ISAMU HASEGAWA/ LUKE HOUSE/ 7 CANTON STREET/ LONDON ENGLAND E14 6JG/ UNITED KINGDOM/ 01/987-4612
ROBERT KIRKBY/ RUISLIP MANOR/ 44 WHITBY ROAD/ MIDDLESEX ENGLAND HA4 9DP/ UNITED KINGDOM
CHI-KEUNG YIP/ DEPT. OF COMPUTER STUDIES/ GILLOW HOUSE/ UNIVERSITY OF LANCASTER/ LANCASTER ENGLAND LA1 1BA/ UNITED KINGDOM/ (0524) 65201 EXT.4123
BOB E. BERRY! DEPT. OF COMPUTER STUDIES/ UNIVERSITY OF LANCAST ER! BAILRIGG/ LANCASTER ENGLAND LA1 4YN/ UNITED KINGDOU/ (0524) 65201 X4134
ATTN: USER SERVICES MANAGER/ COMPUTER SERVICES/ UNIV OF LANCAS TER/ LANCASTER ENGLAND LA1 4YW/ UNITED KINGDOM
BRIAN A. E. 11EEKINGS! DEPT. OF COMPUTER STUDIES/ UNIVERSITY OF LANCASTER/ BAILRIGG/ LANCASTER ENGLAND LA1 4YX/ UNITED KINGDOM/ (0524) 65201
K. C. MANDER/ DEPT. OF COMPo AND STAT. SCIENCE/ VICTORIA BUILD ING/ UNIV. OF LIVERPOOL/ BROWNLOW HILL/ LIVERPOOL ENGLAND L69 3BX/ UNITED KINGDOU
051-709-6022 X2022
SRISAK WATHANASIN! DEPT. OF COMPUTER SCIENCE/ THE UNIVERSITY/ }~CHESTER ENGLAND M13 9PL/ UNITED KINGDOM
ATTN: THE LIBRARIAN/ DEPT. OF COl~UTATION! UMIST/ P.O. BOX 88/ MANCHESTER ENGLAND M60 1QD/ UNITED KINGDOU/ 061-2363311 X2178
DEREK COLEMAN/ DEPT. OF COMPUTATION/ UNIV. OF MANCH. INST. OF SCI. & TECH/ P.O. BOX 88! MANCHESTER ENGLAND U60 1QD! UNITED KINGDOM/ 061-236-3311 X2341
H. J. ZELL! 14 KEMPLAY ROAD/ LONDON ENGLAND NW3/ UNITED KINGDOM/ (01) 435-9396
G. J. FREEMAN/ 125 WIGRAM WAY/ STEVENAGE HERTS SG2 9UT/ UNITED KINGDOM/ (0442) 42291 X330
J. E. AHERN/ MATHS DEPT/ THE UNIVERSITY! SOUTHAMPTON ENGLAND S09 5NH/ UNITED KINGDOM
M. EL-NAHAS/ MATHS. DEPT! UNIV. OF SOUTHAMPTON/ SOUTHAMPTON ENGLAND S09 5NH/ UNITED KINGDOM
ATTN: COMPUTING AND CONTROL COLLECTION/ LYON PLAYFAIR LIBRARY/ IMPERIAL COLLEGE/ 180 QUEENSGATE/ LONDON ENGLAND SW7 2AZ/ UNITED KINGDOM
(01) 589-5111 X2115
DAVID SLATER/ DEPT OF COMPUTING AND CONTROL/ IMPERIAL COLLEGE/ 180 QUEENSGATE/ LONDON ENGLAND SW7 2AZ/ UNITED KINGDOM/ 589-5111 X2722
I. D. GRAHAM/ INSTITUTE OF ARCHAEOLOGY/ 31-34 GUROON SQUARE/ LONDON ENGLAND WC1H OPY/ UNITED KINGDOM
D. G. BURNETT-HALL/ DEPARTMENT OF COMPUTER SCIENCE/ UNIVERSITY' OF YORK/ HESLINGTON/ YORK ENGLAND Y01 5DD/ UNITED KINGDOM/ ('0904) 59861 EXT.5641
S. POKROVSKY/ COMPUTING CENTRE/ USSR ACADEMY OF SCIENCES/ NOVOSIBIRSK 630 090/ USSR
BOSTJAN VILFAN/ FAKULTETA ZA ELEKTROTEHNIKO/ UNIVERZA V LJUBLJANI/ TRZASKA 25/ LJUBLJANA YU-61000/ YUGOSLAVIA
ROBERT REINHARDT/ INSTITUT JOZEF STEFAN/ UNIV. V LJUBLJANI/ JAMOVA 39! LJUBLJANA 61001/ YUGOSLAVIA/ 63-261
I-'
lD
'-J
00
N
lD
DAVID M. ABRAHAMSON
DAVID M. ADAMS
JAMES L. AGIN
J. E. AHERN
J. D. ALANEN
BOB ALBRECHT
R. A. ALLAN
D. R. ALLUM
STEPHEN R. ALPERT
JOHN ALSTRUP
DAVID B. ANDERSON
D. B. ANDERSON
GARY S. ANDERSON
ROBERT W. ANDERSON
RICHARD V. ANDREE
GEORGE W. ANTHONY
ROBERT L. ARGUS
PETER A. ARMSTRONG
JIM ARNOLD
LARRY ARONSON
ATTENTION: BOB JARVIS
ATTENTION: CHARLES PFLEEGER
ATTENTION: E. N. VAN DEVENTER
ATTENTION: J. M. KNOCK
ATTENTION: MARJORIE HEINE
ATTENTION: MIKE WILDE - CONSULTING OFF.
ATTENTION: N. V. KOTESWARA RAG
ATTN: A. D. R.
ATTN: A. S. WILLIAMS - LIBRARIAN
ATTN: BETTE BOLLING-LIBRARIAN
ATTN: BIBLIOTEKET
ATTN: BIBLIOTHEK
ATTN: CCIS LIBRARY HILL CENTER
ATTN: CENTRE DE RECHERCHE
ATTN: COMPUTER CENTER
ATTN: COMPUTER SCIENCE DEPARTMENT
ATTN: COMPUTING AND CONTROL COLLECTION
ATTN: COMPUTING SERVICES
ATTN: DEPT. OF COMPUTER SCIENCE
ATTN: DIRECTOR / INST. RESEARCH
ATTN: DSM
jlT1N: EARL L. MOUNTS-COMP. SCI. LIBRARIAN
ATTN: ELAINE DENTON (41-41)
ATTN: ENGINEERING LIBRARY
ATTN: ENGINEERING LIBRARY
ATTN: INSTlTUT FUER INFORMATIK
ATTN: INST. FUER INFORMATIONSSYSTEME
ATTN: I.W.I.S.-TNO
ATTN: J. F. MCINTYRE - LIBRARIAN
ATTN: KHK
ATTN: LIBRARIAN
ATTN: LIBRARY
ATTN: L. LAWRIE
ATTN: L.A.M.B.D.A.
ATTN: MANUFACTURING COMPUTER GROUP
ATTN: NEWBERRY MICRO SYSTEMS
ATTN: NIXDORF COMPUTER GMBH
(frTN : OREGON MINI-COMPUTER SOFTWARE INC.
ATTN: PERIODICALS DEPT.
ATTN: SERIALS DEPARTMENT
ATTN: THE LIBRARIAN
ATTN: THE LIBRARY
ATTN: USER SERVICES MANAGER
THOMAS M. ATWOOD
DAVID AULT
DENNIS R. AUSTIN
2 IRELAND
19301
90278
S09 5NH UNITED KINGDOM
THE NETHERLANDS
94025
N6A 4N5 CANADA
EX4 4Q6 UNITED KINGDOM
01609
55420
18015
94010
98043
92680
73019
83316
47805
98109
66045
10027
55455
37916
0001 SOUTH AFRICA
60439
17837
61801
500762 INDIA
F-38000 FRANCE
92626
45036
DK-2200 DENMARK
D-8000 GERMANY
08854
F-34075 FRANCE
79409
84112
SW7 2AZ UNITED KINGDOM
55105
SF-00100 FINLAND
95521
THE NETHERLANDS
15213
90406
98401
95014
D-2000 GERMANY
A-1040 AUSTRIA
THE NETHERLANDS
22903
55414
3052 AUSTRALIA
94720
61820
02912
97077
94022
D-1000 GERMANY
97221
ISRAEL
2308 AUSTRALIA
M60 1QD UNITED KINGDOM
ISRAEL
LA1 4YW UNITED KINGDOM
02165
20041
93105
MARGERY AUSTIN
20036
DAVE BAASCH
94707
RON BAECKER M4Y IP9 CANADA
SAMUEL T. BAKER
37130
MICHAEL S. BALL
92152
CHARLES J. BANGERT
66045
PAUL BARR
01778
BRUCE BARRETT
94404
ROGER R. BATE
75023
DAVID BATES CH-1200 SWITZERLAND
FRANK J. BATES JR.
43403
JOHN C. BEATTY N2L 3Gl CANADA
o. BEAUFAYS
B-1050 BELGIUM
E. R. BEAUREGARD
17019
MICHAEL A. BEAVER
53149
MICHAEL BEHAR
06477
BERNHARD H. BEITINGER
D-8012 GERMANY
LENNERT BENSRYD S-220 07 SWEDEN
PAUL C. BERGI1AN
21793
BOB E. BERRY LAI 4YN UNITED KINGDOM
EASTON BEYMER
77341
GERHARD BLANKE
D-6236 GERMANY
I. N. BLAVINS
5063 AUSTRALIA
ROY E. BOLLINGER
94088
JOHN H. BOLSTAD
32306
KEN BOWLES
92093
ALEX BRADLEY
92714
STEVEN L. BRECHER
90803
DAVID E. BREEDING
75229
STEPHEN L. BREI BART
UNITED KINGDOM
C. E. BRIDGE
19898
PER BRINeH HANSEN
90007
CHARLES L. BROOKS
02139
PAUL H. BROOME
21010
WARREN R. BROWN
02035
ANNA BUCKLEY
47401
A. CHARLES BUCKLEY
40205
D. G. BURNETT-HALL Y01 5DD UNITED KINGDOM
PETER J. BURNS DE BONO
UNITED KINGDOM
JAMES W. BUTLER
62901
CARROLL E. BUTTERFIELD
94804
BETTY BUXTON
03060
JOHNNIE BUZEK JR.
77005
J. A. CAMPBELL
2308 AUSTRALIA
SAM CARPENTER
01960
PAULO S. CASTILLO JR.
91360
DAVID F. CAUTLEY
97330
JOE CELKO
30310
W. B. CHAPIN
55112
KENNETH E. CHARLTON
98033
ROBERT L. CHEEZEM JR.
32935
HARRY R. CHESLEY
94801
BILL CHESWICK
18938
STEPHEN W. CHING
19085
TONY CHMIEL
60652
LEO CHRZANOWSKI
14072
JOHN CLARSON
23669
GEOFFREY A.• CLEAVE
3165 AUSTRALIA
GERHARDT C. CLEMENTSON
80204
DAVID CLINGERMAN
94563
WILLIAM L. COHAGAN
78758
ROBERT COLE
18017
DEREK COLEMAN M60 1QD UNITED KINGDOM
GRANT COLVIN
75062
JOHN S. CONERY
92714
WILLIAM S. COOKE
90402
DAVID A. COOPER EHI0 6NH UNITED KINGDOM
ARDON R. CORD
95014
JOHN DENNIS COUCH
95050
JAMES C. COZZIE
52402
LAWRENCE F. CRAM
02159
JOHN EARL CRIDER
77043
LINDA E. CROLEY
94304
DONALD B. CROUCH
35486
ARTHOR C. DARTT
44115
HENRY DAVIS
22090
LEO DAVIS
20770
ITINE DE GERLACHE
B-ll80 BELGIll1
JOHN DE PILLIS
92507
JOHN DE ROSA JR.
01545
JOHN R. DEALY
90278
JAN DEDEK
94301
ROBERT I. DEMROW
01810
PETER DEWOLF
61820
GEORGE B. DIAMOND
08826
ROBERIO DIAS M5P 2C3 CANADA
RICHARD DIEVENDORFF
91203
JOHN G. DOBNICK
53219
BILL DODSON
93017
JOHN DOERR
95051
HICHAEL K. DONEGAN
23185
G. KEVIN DOREN
19101
KENNETH R. DRIESSEL
74102
WILLIAM E. DROBISH
92714
KENNETH R. DUCKWORTH
71201
C. E. DUNCAN
94303
GARY DUNCAN
92680
FRANK DUNN
75081
WILLIAM J. EARL
92715
RAFAEL E. EGLOFF CH-8005 SWITZERLAND
HARALD EIDE
NORWAY
FRED EILENSTEIN
02172
JOSEPH EINWECK
88003
JOHN D. EISENBERG
19711
M. EL-NAHAS S09 5NH UNITED KINGDOM
RANDY ENGER
01776
DONALD L. EPLEY
52242
HOWARD D. ESKIN
10025
JOHN B. EULENBERG
48824
JACQUES FARRE F-75230 FRANCE
MICHAEL FAY
95064
WALT FEESER
92127
ROBERT B. FINCH
98225
DONNAFAYE FINGER
98040
JOHN W. FINNEGAN
IRELAND
WILLIAM E. FISHER
90501
W. J. G. FISHER
4001 AUSTRALIA
DAVID C. FITZGERALD
92704
JOHN FITZSIMMONS
55436
KEVIN FJELSTED
55455
READ T. FLEMING
02912
RUDY L. FOLDEN
92713
JIM FONTANA
92704
DOUG FORSTER
09098
CHARLES H. FORSYTH N2J 4H2 CANADA
ROBERT A. FRALEY
94304
JOHN TIMOTHY FRANKLIN S-OOO 00 SWEDEN
KURT FREDRIKSSON S-431 39 SWEDEN
G. J. FREEMAN SG2 9UT UNITED KINGDOM
DAVID F. FRICK
94546
EDWARD R. FRIEDMAN
10012
JOHN FRINK
21045
"
::t:>
C/)
n
::t:>
r
Z
rtl
:e:
C/)
""'"
i--'
......
-n
rtl
to
:::0
=
:l>
=
-<
i--'
LO
'-I
0.')
-0
:l>
G'l
rtl
V\l
0
85016
ROBERT FULKS
MICHEL GALINIER F-31077 FRANCE
I. GANAPATHY V6X 2Z9 CANADA
34 SPAIN
LUIS A. GARCIA-RAMOS
EDWARO F. GEHRINGER
47907
PAULETTE D. GENES
55455
W. MORVEN GENTLEMAN N2L 3G1 CANADA
TONY J. GERBER
2006 AUSTRALIA
DANIEL E. GERMANN
55435
13201
J. DANIEL GERSTEN
A. GEUBE
D-6300 GERMANY
ROBERT A. GIBSON
22901
R. STEVEN GLANVILLE
95051
94521
PAUL GODFREY
98195
HELLMUT GOLDE
RALPH S. GOODELL
01451
D-7500 GERMANY
GERHARD T. GOOS
KEITH E. GORLEN
20014
THE NETHERLANDS
D. GOSMAN
P. K. GOVIND
80303
SARA K. GRAFFUNDER
55455
I. D. GRAHAM WC1H OPY UNITED KINGDOM
DOUGLAS M. GRANT
06901
MARK GREEN M4B 2E5 CANADA
MIKE GREEN
78284
TOM GREER
91775
WILEY GREINER
90278
DAVID B. GROUSE
15213
RONA GURKEWITZ
06810
ROBERT D. GUSTAFSON
60657
STEVEN B. HALL
44107
TERRY HAMM
97077
TIMO HAMMAR SF-33410 FINLAND
2600 AUSTRALIA
N. D. H. HAMMOND
BRIAN HANSEN
97213
ANDY HARRINGTON
931ll
WILLIAM J. K. HARRINGTON
08618
MIKE HARRIS
62704
J. N. HARRISON BB7 4DZ UNITED KINGDOM
ISAMU HASEGAWA E14 6JG UNITED KINGDOM
S. HAYES
33313
GEORGE E. HAYNAM
32901
PETER HAYNES L5N 1KT CANADA
STAN HEAD
95030
HARRY G. HEDGES
48824
CHARLES HEDRICK
08903
S. T. HEIDELBERG
94550
JOHN M. HEMPHILL
43403
CHRISTOPHER J. HENRICH
07724
CARL HENRY
55057
WILLIAM HENRY
10003
MARK HERSEY
48100
H. F. HESSION
22101
CHARLES L. HETHCOAT I I I
77027
J Il1 HIGHTOWER
90274
BUZZ HILL
98632
KEARNEY HILL
67401
CATHLINE S. HILLEY
58201
MARK HIPPE
19087
G. STEPHEN HIRST
52240
PHILIP T. HODGE
46375
THEA D. HOpGE
55455
D. P. HODGSON
6102 AUSTRALIA
RANDY HODNETT
97077
TIMOTHY W. HOEL
55057
14454
ANTHONY E. HOFFMAN
BOB HOFKIN
DAVID W. HOGAN
MARGARETTA HOMMEL
BRYAN HOPKINS
C. L. HORNEY
ROSS F. HOUSHOLDER
CAROL B. HOWELL
J. R. W. HUNTER
BOB HUTCHINS
WILLIAM G. HUTCHISON JR.
STEVEN L. HUYSER
JOHN W. IOBST
HARUHISA ISHIDA
KENNETH R. JACOBS
ROBERT C. JANKU
HENK JANSEN
GUNNAR JOHANSEN
HANS-KURT JOHANSEN
GREG JOHNS
JOSEPH N. JOHNSON
JOSEPH P. JOHNSON
R. WARREN JOHNSON
ANN C. JOHNSTON
D. B. JOHNSTON
DAVID JONES
ERNEST W. JONES
NORMAN A. JULL
MARK JUNGWIRTH
KARL HEINZ KAPP
MATTI KARINEN
MILAN KARSPECK
ARMED KASSEM
ROBERT KAST
ED KATZ
NEIL T. KEANE
TOM KEEL
DONALD A. KEFFER
PAUL KELLY
TOM KELLY
GREG KEMNITZ
WILLETT KEMPTON
DENIS KERMICLE
JUKKA KESO
GURUPREM SINGH KHALSA
B. KIDMAN
RICHARD B KIEBURTZ
DANIEL B. KILLEEN
ROBERT KIRKBY
PAUL S. KLARREICH
JON G. KLASEN
DONALD B. KLEIN
STEPHEN KLEIN
BARCLAY R. KNERR
JOHN C. KNIGHT
PAUL KOHL BRENNER
DIANE L. KRAMER
RICHARD KRASIN
JAMES KREILICH
H. S. M. KRUYER
ULRICH KULISCH
KLAUS LAGALLY
R. B. LAKE
DAN LALIBERTE
LARRY D. LAND IS
DAVID LANDSKOV
ROBERT G. LANGE
92093
78731
01701
02154
92803
76012
20770
BN1 9QT UNITED KINGDOM
92713
08512
48824
18049
113 JAPAN
20006
22003
D-5000 GERMANY
DK-2800 DENMARK
S-951 87 SWEDEN
97077
94701
20016
56301
44691
4067 AUSTRALIA
L5N 1KT CANADA
94901
M4N 1A4 CANADA
92644
D-7500 GERMANY
SF-33101 FINLAND
91104
50011
07054
55112
S-17562 SWEDEN
78712
19438
92714
19335
55391
94720
32905
SF-33101 FINLAND
91101
5001 AUSTRALIA
11794
70118
HA4 9DP UNITED KINGDOM
11210
55404
19010
01741
92646
23665
06437
65201
01886
55108
THE NETHERLANDS
D- 7 500 GERMANY
D-7000 GERMANY
44106
55455
64108
70504
55343
D-8031 GERMANY
RAINER R. LATKA
60201
ARNOLD LAU
ROBERT A. LAWLER
55165
TERRY J. LAYMAN
90405
HENRY F. LEDGARO
01002
K. P. LEE
70803
SF-33720
FINLAND
ERKKI LEHTIMAKI
MIKE LEMON
84112
GEORGE LEWIS
94086
H. MARC LEWIS
97401
JOHN W. LEWIS AL10 9AB UNITED KINGDOM
BOB LIDRAL
61801
GEORGE LIGLER
75081
MOGENS LINDHARO DK-1051 DENMARK
LEN LINDSAY
53719
GARY LINDSTROM
84112
PETER LINHARDT
94709
BRUCE LINK
87115
RICHARD LLEWELLYN
21045
CARLO LOCICERO L4W 1TO CANADA
KENT LOOBEY
97440
ANDY LOPEZ
56267
GARY LOWELL
95404
TIM LOWERY
92627
HOUSTON P. LOWRY
99258
D~8000 GERMANY
MANFRED LUCKMANN
FRED LUHMANN
02138
STANLEY E. LUNDE
91711
JOHN LUSHBOUGH
57069
WILLIAM LYCZKO
14850
LARS LYSEN S-951 45 SWEDEN
ROBERT N. MACDONALD
30303
RON MARON
15461
K. C. MANDER L69 3BX UNITED KINGDOM
DOUGLAS MANN
30339
DAN MARCUS
92807
RICK L. MARCUS
55404
BARRY F. MARGOLIUS
01701
B. L. MARKS
UNITED KINGDOM
G. MARQUAROT
D-3000 GERMANY
LYNN S. MARTIN
11439
GEORGE MASSAR
91367
CHARLES MATTAIR
77801
STEVE MATUS
33313
PIERRE MAURICE F-31077 FRANCE
KONRAD MAYER
A-1l50 AUSTRIA
JOHN K. MCCANDLISS
63188
DlARMUlD MCCARTHY
IRELAND
JOEL MCCORMACK
92014
RAINER F. MCCOWN
21045
TIMOTHY DAVID MCCREERY
94702
MAURICE MCEVOY
94708
HENRY MCGILTON L5N 1K7 CANADA
JOHN P. MCGINITIE
94701
JAMES P. MCILVAINE IV
19044
MICHAEL MCKENNA
03755
RON MCKERRON M9W 5R8 CANADA
JACK R. MEAGHER
49008
ROB MEANS
95035
TERRY P. MEDLIN
20014
BRIAN A. E. MEEKINGS LA1 4YX UNITED KINGDOM
HUGO MEISSER
55427
L. F. MELLINGER
91405
STEPHEN F. MERSHON
22901
W. J. MEYERS
27709
M. D. MICKUNAS
61801
-C
:l>
c.n
n
:l>
r
z
rr1
::::
c.n
""*'
I--'
I--'
""Tl
rr1
t:t:J
:::c
=
):>
?C
-<
I--'
LO
'-I
00
-c
:l>
'"
rr1
\.N
I--'
FRED J. MILLER
JAMES S. MILLER
JOHN C. MILLER
ROBERTO MINIO
KEITH MITCHELL
JESSE D. MIXON
UFFE MOLLER
MAURO MONTESI
RODERICK MONTGOMERY
CHARLES G. MOORE
JAMES K. MOORE
TOM MORAN
CARROLL MORGAN
R. A. MORRIS
HERBERT E. MORRISON
DAN MORTON
WILLIAM MOSKOWITZ
LARS G. I~SSBERG
JOHN M. MOTIL
STEVEN S. MUCHNICK
DENNIS J. MURPHY
TERRY MYHRER
H.-H. NAGEL
BERNHARD NEBEL
LEROY E. NELSON
RICHARD E. NEUBAUER
ROBERT C. NICKERSON
R. KEITH NICKEY
DENNIS NICKOLAI
KOHEI NOSHITA
RHODA P. NOVAK
ROBERT E. NOVAK
TOM NUTE
ROBERT J. OBERG
FLEMING M. OLIVER
GARY OLIVER
OLLE OLSSON
DICK OSGOOD
MAURICE O'FLAHERTY
STEVE O'KEEFE
GARYO 0' SCHENECTADY
H. PAAS
HAL PACE
DAVID FLOOD PAGE
WILLlAU S. PAGE
DONALD L. PARCE
CRAIG PAYNE
DAVE PEERCY
STEVEN PEMBERTON
WALT PERKO
DAVID PERLMAN
ROBERT D. PERRY JR.
W. J. PERVIN
DAVID PESEC
MIKE D. PESSONEY
BOB PETERSON
DAVID L. PETERSON
TRUMAN C. PEWITT
FRANCOIS PINARD
ALAIN PIROTTE
RICHARD PITKIN
TOM PITTMAN
S. POKROVSKY
BARY W. POLLACK
UDO POOCH
JERRY POURNELLE
DARRELL PREBLE
30303
99210
BILL SHANNON
44116
MICHAEL PRIETULA
55455
02138
TED SHAPIN
92669
BOB PUETTE
95014
02165
ED SHARP
84112
HOWARD D. PYRON
65401
10010
ROBERT LEE SHARP
22042
3072 AUSTRALIA
27409
M. RAHILLY
TOM TYSON
98008
DAVID ELLIOT SHAW
94306
D-7408 GERMANY
ASHOK N. ULLAL
EARL RALEY
19122
75961
JOHN M. SHAW
20014
TIM RAND
06268
10012
ANDREW P. VALENTI
DK-9220 DENMARK
BELLE P. SHENOY
55413
3000 AUSTRALIA
V. LALITA RAO
19440
Q. VAN ABBE
1-40122 ITALY
THOMAS E. SHIELDS
77005
PETER RAUSCHMAYER
D-8000 GERMANY
WARREN VAN CAMP
95005
08876
E. E. SIMMONS
91101
68154
JERRY L. RAY
23508
FRANCES L. VAN SCOY
48106
P. SIMON
2308 AUSTRALIA
LEONARD VANEK MSS lA4 CANADA
RUTH RAYMOND CV4 7AL UNITED KINGDOM
22091
JON SINGER
60660
WILLIAM J. VASILIOU JR.
03824
JEFFERY
M.
RAZAFSKY
64108
45036
SEYMOUR SINGER
92634
BILL VELMAN
92110
EDWARD K. REAU
53705
2006 AUSTRALIA
JORMA SINNAMO SF-33200 FINLAND
STEVEN A. VERE
60181
DAN
REED
72554
73019
CHARLES SISKA JR.
90250
G. A. VIGNAUX
NEW ZEALAND
C. EDWARD REID
32303
90266
ALAN E. SKIDMORE
66506
BOSTJAN VILFAN YU-61000 YUGOSLAVIA
61001 YUGOSLAVIA
ROBERT REINHARDT
19046
DAVE SKINNER
90801
VEIKKO VISALA SF-33340 FINLAND
STEVEN A. REISMAN
55455
90036
DAVID SLATER SW7 2AZ UNITED KINGDOM
ROGER A. VOSSLER
90278
3052 AUSTRALIA
PETER RICHARDSON
S-461 01 SWEDEN
ERIC SMALL
94109
WAYNE VYROSTEK
97077
16057
PETER RICHETTA
91330
LARRY W. SMI TH
55337
M.
WAITE
11740
CLAES RICKEBY S-161 54 SWEDEN
66045
JON A. SOLWORTH
10011
WILLlAU
M.
WAITE
80309
20375
PETER A. RIGSBEE
02138
ROLF SONNTAG
D-3000 GERMANY
NOBUO WAKABAYASHI
JAPAN
48824
MARK RIORDAN
55066
BILL SOUTHWORTH
02132
HAN S WALLBERG S-901 87 SWEDEN
30303
MORRIS W. ROBERTS
D-2000 GERMANY
JOHN H. SPANTON
95133
BOB WALSH
87106
10573
D-2000 GERMANY
TIMOTHY P. ROBERTS
T. M. SPENCE EH5 2XT UNITED KINGDOM
PATRICK WARD H3C 3J7 CANADA
91601
90066
LARRY ROBERTSON
PAUL SPRECHER
10024
DONALD WARREN
10024
14127
D. H. SPRINGER
53201
F. DOUGLAS ROBINSON
95131
MARK S. WATERBURY
22152
40217
TOM SPURRIER
32901
94611
MICHAEL P. ROBINSON
STEPHEN B. WATERS
13440
20855
MARK STAHLMAN
BOB ROGERS
10019
80303
SRISAK WATHANASIN M13 9PL UNITED KINGDOM
95120
F. STANLEY
98926
THOMAS A. ROLANDER
55437
JOHN A. WEAVER
18042
01730
JORGEN STAUNSTRUP
ROGER D. ROLES
90007
151 JAPAN
NEIL W. WEBRE
93407
11794
GENE ROLLINGS
ROBERT L. STEELE I I
22101
91307
KEVIN WEILER
15213
STAFFAN ROMBERGER S-100 44 SWEDEN
EDWARD STEEN
01852
60148
LEONARD H. WEINER
79409
M. E. RONCHI 1-40033 ITALY
GERALD STEINBACK
44106
94086
DAVID H. WELCH
92324
55455
J. B. ROSEN
JAMES STEINBERG
02142
01701
ROBERT
E.
WELLS
02138
47907
SAUL ROSEN
HORST STENZEL
94086
D-4400 GERMANY
JIM WELSH BT7 INN UNITED KINGDOM
94035
TURNEY C. STEWARD
CARL S. ROSENBERG
97330
94112
JOHN WERTH
89154
80004
RAYNER K. ROSICH
JIM STEWART
S-752 23 SWEDEN
08854
GREGORY F. WETZEL
66045
20784
EDWARD D. ROTHE
JOHNNY STOVALL
06520
01581
TERRY
E.
WEYMOUTH
60532
97229
UNITED KINGDOM
DAVID ROWLAND
JEFFREY D. STROOMER
19341
NORMAN
D.
WHALAND
10009
14226
STUART W. ROWLAND
CONRAD SUECHTING
20229
74145
WILLIAM A. WHITAKER
22209
2006 AUSTRALIA
BRIAN G. ROWSWELL
JERRY S. SULLIVAN
12210
10510
JAMES D. WHITE
73019
87115
NANCY RUIZ
MARKKU SUNI SF-20500 FINLAND
THE NETHERLANDS
JOHNNY WIDEN S-951 87 SWEDEN
5098 AUSTRALIA
DENNIS SUTHERLAND
CHRIS A. RUSBRIDGE
52302
07470
AKE WIKSTROM S-402 20 SWEDEN
90733
PAUL RUSSELL
DAVID TAFFS
02840
CM17 9NA UNITED KINGDOM
E. HAROLD WILLIAMS
95050
55112
MARK RUSTAD
MASATO TAKEICHI
182 JAPAN
19711
DENIS M. WILSON AB9 2UB UNITED KINGDOM
92634
WALTER R. RYPER
RAUON TAN
10016
27607
RICHARD M. WILSON
85001
21235
LESTER SACHS
JANET TAYLOR
75275
18015
STERLING WILSON
91342
7001 AUSTRALIA
MICHAEL TEENER
87106
A. H. J. SALE
90403
GREG WINTERHALTER
48104
ROBERT R. TEISBERG
BN1 2GJ UNITED KINGDOM
55455
64108
TIMOTHY J SALO
F. S. WINTERSPRING K2A IT2 CANADA
DANIEL THALMANN
55414
75080
QUEBEC CANADA
E. J. SAMM:lNS
NIELS WINTHER DK-2650 DENMARK
55427
DAVID A. THOMAS K1S 5B6 CANADA
HELMUT SANDMAYR CH-9470 SWITZERLAND
HANS-WILM WIPPERMANN
D-6750 GERMANY
97201
06106
RICHARD T. THOMAS
43403
A. E. SAPEGA
NIKLAUS WIRTH CH-8092 SWITZERLAND
75235
TERRY THOMAS
97077
95030
LYNN SAUNDERS
JAN
WITT
D-8000 GERMANY
44119
KIRK D. THOMPSON
85282
47401
ANTHONY J. SCHAEFFER
JAY WOODS
83639
35805
LARS-ERIK THORELLI S-100 44 SWEDEN
55343
ROSS D. SCHMIDT
PAUL J. OOZNIAK
56569
55418
CLIFTON CHANG-CHAO TING
19151
92705
MARK M'. S CHNEGG
URS R WYSS CH-8008 SWITZERLAND
55429
ALAIN TISSERANT F-54042 FRANCE
55455
G. MICHAEL SCHNEIDER
CHI-KEUNG YIP LA1 1BA UNITED KINGDOM
NOBUKI TOKURA
22180
560 JAPAN
92335
WALLY SCHNITGER
KENNETH YOUNG
90020
HOWARD E. TOMPKINS
H3S 1J6 CANADA
15701
D-7900 GERMANY
AXEL T. SCHREINER
GIDEON YUVAL
ISRAEL
B-1170 BELGIUM
JOE TORZEWSKI
46530
11756
ROBERT SCHUTZ
H. J. ZELL
NW3 UNITED KINGDOM
02114
LARRY E. TRAVIS
017.52
53706
CARL W. SCHWARCZ
PAUL ZILBER
11797
95153
19898
MARTIN VERGES TRIAS
14 SPAIN
STEPHEN C. SCHWARM
MARK ZIMMER
94704
47907
ROBERT TROCCHI
630 090 USSR
01754
ALLAN M. SCHWARTZ
ANDREW HARRIS ZIMMERl1AN
94086
V6T 1 W5 CANADA
91126
JOHN TUCKER
79601
LARRY SEILER
KARL 1. ZINN
48104
JOHN TUCKER
77843
88047
GUISEPPE SELVA 1-40122 ITALY
91604
JYRKI TUOMI SF-33101 FINLAND
08077
FOREST VAN SISE SHAFER
V
):>
en
n
):>
r
Z
rn
:r:
en
=!;:;
f-'
f-'
"rn
t:t:1
;::c
=
):>
::>::l
-<
........
LO
'.J
00
-0
):>
'"
rn
vI
N
TYPE COMPATIBILITY CHECKING IN PASCAL COMPILERS
Tne conditions that satisfy SRTCCO have already been stated 4 : two variables
are considered as belonging to (being of) the same type if and only if they
are declared using the same named type,
Introduction
Val!
It is imperative we clearly set down the semantics of type compatibility for structured variables in the programming language Pascal. The
matter in urgent since the lack of an explicit set of rules in that sense has already given rise to some incompatibilities resulting from the
use of different Pascal compilers.
Or, the basis of how a compiler implements type compatibility checking,
we can currently distinguish two majo:r classes of Pascal compilers,
represento.tives of which will react differently t::> :>articulo.r cases involving operations on structured variables. It is of course clear that
such a conflict must not be allowed to continue, and in that sense I will
try to explain how the two classes of compilers came into being and also
present the reader with a few examples to display the consequences.
a.: IU:tjpeA-d;
b: IU:tjpeA-d
or their associated identifiers both appear in the same list.
VM
a., fl:
MJUtL{
[1..10] £i ,:,ometype
On tile other hand, what Vie know of SRTCCI Kas picked up in the source text
of t"e compiler itself since we could not find such information elsewhere.
In general, the conditions that sa::isfy SRTCCI are based on the principle
that: !>10 variables are considered as belonging to the same type if and
only if the data structure(s) implementing their respective type are
"identical". To know what "identical'! really means, one has to refer to
the source text of the compiler (as we did) and understand how the Boolean
function COMPTYPES works.
We purposely omitted to display the source text of that function here for
two reasons: I autOJ!'.atically inhericed a new set
of rules (lets call this one SRTCCl).
The whole happening went by almost unnoticed because no one had mentioned
the change in policy. Even in the recent Pascal User's Manua1 3 , I:ill react differently if they enforce different
sets of rules for type compatibility checking. A compiler u~:ng SP.TCCO will
reject the st3.tement on a type-check error, while ariother e;lforcing SRTCCI
let it go by ~'lhitout utt.ering a lztter, sinc~ both named types are implemented usi.llg the same data structvre: a 1te.c..OfT..d structure ha.vtng two fields of
\'-7il~
The problem now, is that in the area of type compatibility checking,
representatives of both classes of compilers are not fully compatible. That
means that in particular situations, a compiler enforcing SRTeCO will reject
a statement on a type-check error while another compiler enforcing SRTCCI
\~ill
accept it..
Articles
t)'"]Je real.
CUT second example shows hO\'1 enforcin.g SRTCCI can sometimes lead to 5 ide
effects \.,rhich can be disastrous. Even if the examnle below is 92..sed on the
particular behavior of a given compiler, it should be easy for 1:he readcl· to
imagine th~ various related pitfalls ~ can accidentally stumble _cnto., Consider the following declarations:
ttl
:;:0
=
:t>
:;:0
-<
Articles
It was our intention to make every "pas caler" aware of the importance that
lies in precisely stating tli.e semantics of type compatibility for structured
variables. It is our hope that other opinions make themseh'es be heard.
,..J • lLec.olUi
In any event, bear the following thought in mind: making a programming language a better tool to work with, can sometimes be acheived by lowering its
level of permissiveness.
---x;tj: 1le.a:1.
end;
1l2 .. Ilecolu:l
---x:.:te.a:1.;
y: Ileal.
end;
VaIL
REFERENCES
b: 112
1.1.: 1t1;
Pascal 6000, distribution version: IS. Feb. 1972.
In the lattest release of the Pascal compiler for CDC machines, memory cells
corresponding to record fields declared in the same list, are allocated in
the reverse order of appearance of the field identifiers. Whether i t be an
involuntary omission or a voluntary simplif~cation of compiler code, the
underlying assumption that a user does not care about how the memory cells
are allocated to his record components, is certainly debatable. All of this
however should have no ill-effects on program execution; but because of the
fact that the considered compiler enforces SRTCCl, things do not come out
that way. To start with, the assignment statement "a.:: b" is accepted as
legal. Furthermore, because of the peculiar allocation scheme described
above, the execution of the assignment statement turns out to correspond
to the following assignments "a.. x:: b.y;
a..y:: b. x"!
Pascal 2 (i.e. Pascal 6000-3.4), distribution version: May 1974.
Jensen K., Wirth N., uPascal User Manual and Report", Lecture Notes in
Computer Science, No. 18, SpringeT-Verlag, 1974.
"Restrictions of Pascal 6000", distribution document, IS Feb. 1972.
..,.,
As a starting point for our last example, we quote from Wirth &Jensen's
Pascal user manual: "Semantically, a subrange type is an appropriate substitutio~or the associated scal~r type in.all definit~o~s. Furthermore, it
is the associated scalar type l~hlCh determInes the vahdIty of all operatIons
involving valUeS of subrange types."
it is our
intentio~
to e;-::amine some
of the conseqto.ences ~f the first pCi.rt of the quo!:.c, in rel(i.tion tv the type
compatibility of structured variables.
ValL
-
11
rn
Pierre Desjardins
Departement d'Informatique et de
Recherche Operationnelle
Universite de Montreal
Quebec
n
ttl
;;0
=
):>
;;0
-<
(* Received 77/10/18 *)
hroup
a.: a/limy (1 .. 10]
ln1:egeJl;
b: MIlay [1 .. 10J a 0 .. 511;
c.: MIlay [1 .. 10] 0
0 •• 255;
***
{group 2}
d: pa.c.~e:~ MMy (J . . 5J £i 0 .. 511;
e:.: ~c. e MMy [J .. 5J £i O•• 255;
6: ~ MMy [1 .. 5] £i -128 .. 127
According to SRTCCO, all the variables declared above are pairwis~ t~e incompatible. Under SRTCCI however, variables of group 1 are all paIrwIse compatible while in group 2, only the pair
is compatible (as obtained when
compiled by a CDC ·Pascal 2 compiler). The incompatibilities in group :2 stern
only from differing sizes in storage occupancy (which in turn ~epends on the
packing strategy employed). It shculd not be necessary to complle.a pro?ram
in order to find out if a given pair of variables are t}Te compatIble; Language semantics should take care of that.
A Novel Approach to Compiler Design
By James Q. Arnold
e-n
For the sake of discussion, let us suppose that the Pascal language
implemented on a computer providing instructions for efficie~t byte
The implementor might choose to compile some arrays (those WIth the
priate type of element) as implicit byte (packed) arTays. In.s~c~ a
pairs a-Co and b-c. would no longer be compatible. Type compatIbIlIty
not be implementation dependent.
is to be
access.
approcase, the
should
Computer Science Department
Kansas University
The ideas presented in this paper reflect those of the author, and
no support for them was either requested or received from HoneywelL the
University of Kansas Computer Center, the Department of Computer Science
at KU, or the University of Waterloo.
USing
During the last several months, we have had the extreme pleasure of
a Pascal compiler produced at the University of Waterloo. The
compiler's five versions have given us new insights
compiler
design,
and
into
the
area
of
we would like to highlight a few of them in this
paper.
In the interest of brevity, we shall not delve
into all
areas
p oss ibl e, but we hope the mention of some importa nt items will s t imul a te
the interested reader to reflect upon the further application
of
these
ideas.
Our discussion will center upon the followin9 topics:
1.
Program Portabil ity
2..
Program Correctness
3.
User Interface.
Although each of the areas interacts to sOlne degree with the others,
we
feel
these
are
the
natural
categories exemplified by the Waterloo
compiler..
Thus we shall str ive to pres ent them ina rna nner comme nsurate
with
the
clarity
and elegance in which they present themselves to the
user.
A..
"Use machine instructions in the
differ fro;n processor to processor .. II
conpiler
support
package
which
Both KU and Waterloo have Honeywell
66/60
computers;
KU
has
a
processor
A,
and tv-ateriao
has
a
processor
B.
\"lhen implementing a
p royram des igned for portabil i ty I it is
af
the
u tmos t
import ance
to
utilize
instt"uctions
which behave diffe.rently from machine to machine ..
The Waterloo compiler does just that; but they have taken this principle
to
it s
logical
conclusion.
Not
only should programs
behave
differently, but it .is even more desirable if one
can
arrange
for
an
operation fault as well.
One very important consequence is providing the iraplementation team
with
the
chance
to
practice
patchin0
core-image load modules (the
compiler is only provided in load module form).
This is becoming a lost
art.
and
the
necessary
steps
are being taken by \'aterloo to keep it
alive.
We certainly applaud theln for this.
B.
"Change the language definition."
Hany
Pascal
implementations
provide extensions;
Waterloo
has
transcended
the
lowly extension and
introduced the new concept of
outri9ht nodification.
'This extraordinary achievement was
surprisingly
easy
to make.
convert the
!?'£Q.9.~,C!'-~ heading into ".Ero£~,2,~~~ main;
Notice how mnemonic i.t is now, and how the first line immediately
tells
t he reader what the program was written for.
Notice "lso that the messy
parameters have been eliminated.
This will obviously prevent any confus ion
about the meaning of the
undeclared variables in the J2££9.E~
heading.
AdditiQnally,
the
"curious"
period
terminator
has
been
dropped.
It amazes us even now how such Sili1ple modifications
could
add
so
much
to the clarity and portability of programs.
I'e wonder why Niklaus
liiirth didn't think of these things
himsel f.
Naturally,
the
compiler
rejects Standard Pascal, but this is a blessing in disguise.
As soon as
we have reached the sar.1e level of insight as the desiqners at VJaterloo,
we shall certainly let the reader know what the blessing is.
.11
A.
"Distribut~~
compile
("5
which are not debugged."
Once ayain, the compiler is used as
an educational
tool.
Since
pro,]rammers can not be assumed to know Pascal, any compiler for the
language should encourage the user to study the user manual.
This
can
be
done
in
several
ways, but some of' the techniques llsed by t'1aterloo
s truck us as being particularly noteworthy.
One example follows which aborts the compiler:
iY~ sex: (female, male) ; { : should be = }.
We relayed our
initial
reaction
of conCern to Waterloo,
but
they
reassured
uS with
an explanation [Pascal Release Bullet1n, September,
1977], "The compiler is based on an LALR parser, and
LALR
parsers
are
famous for this behaviour."
Naturally, we were grateful
to receive this lesson. in parsi,:"
theory.
It also illuminated a new attitude which should be 1nst1~ led 1n
all compiler writers of the future.
If there are syntax errors
1n
the
program,
the
programmer must not know the langua~e in the first pla~e.
Encourage him to read the manual; furthermore, don t waste comp~ter t~me
by
looking
at the rest of the program if the error was one wh1ch could
only have been made by
a
complete dolt.
A compiler
abort is
the
quickest and cheapest way to quit scanning.
(i i)
"The
c ()nstructs. II
compiler
should
abort
on
some
syntactically
correct
We believe this
is
a
truly
ingenious device to educate
the
experienced
programmer..
While aborts on syntactic e~ror~ ar,e ~irected
at people who still make mistakes, this kind of abort 1S a1med r1ght at
the knowledgeable
one.
Furthermore,
this will
help the programmer
expand his Pascal vocabulary by forCing him to use different language
features
than
the
ones
he
really wants
to use.
Surely no further
explanation of the power of this device is needed.
(iii) "The
executes. II
compiler
should
generate
incorrect
code,
which
still
Thi s mus t be considered the suc cessor of both (i) and
(i i) •
On ce
t he
program has
sifted
through the
compiler,
and a load module is
obtained, it will surely help the
progranmer
understand
the
program
better
if
it runs incorrectly.
Hand traces are illuminating, and they
are essential in the development process of
a
program.
Waterloo has
extended
their
application even further to include post-runtime.
Once
again, we are amazed at the insight and
courage needed to make this
intellectual leap.
At this point it should be noted that these principles
combine
to
help unify the user community.
At KU a "bug list" has been compiled (by
hand), and all users are invited to contribute.
It is a marvelous
tool
for
bringing people together.
Furthermore, we have actually discovered
t hat some of those people prefer entomology to computer science.
They
a re indebted to \,aterloo for providing the initial motivation to explore
t he field.
The compiler seems
to
serve as
a
limited,
occupational
counselor.
B.
uGive brief error messages without referring to program text."
This will
obviously
make
the user study the whole line
(or
procedure,
or
program).
Our favorite message of this kind is "Syntax
error
near
"'identifier"'. II
The
runner-up
is
"Syntax
error
near
'program'."
It
should be
apparent how exemplary the latter is, especially for beginning programmers who are trying to write their
first
Pascal
program using Wirth's definition.
(The second message actually
refers to a use of the defunct keyword, Erogram, which is not allowed to
b e us ed a t a l L )
most
(i)
"The cCl11piler should abort on
sorne simple syntax errors."
A.
One
"Make the compiler
opt ions a
dynamic set.
II
All programmers like to feel they are in control of their machine.
way
to
foster
this
feeling
is
to
provide an interface to the
\.N
V1
This .i5 superbly executed by
language processor whi~t) keeps changing.
To allow the use of
the
time shar ing command scanne r. for the compiler.
UNIVERSITY OF CALIFORNIA, SAN DIEGO
upper
Cfise
keywords,
we
huve
used
"-dualcase,"
II-uppercase,"
and
"-singlecase"
with
different
ve~sions of the cOJnpiler.
Inexplicably,
t hey neglected to r.ecognize those options only when typed in lower case,
BERXELEY • DAVIS • IRVINE • LOS ANGELES • RIVERSIDE • SAN DIEGO • SAN FRANCISCO
to
completely rule out the use of an upper case terminal.
will
Perhaps that
be provided in a future version.
INSTITUTE FOR INFORMATION SYSTEMS
In addition, it is also advisable to maintain
a
dynamic
set
of
requireH1f:'nts
foe
the
placement
of the options on the command-line in
relation to the filenafi1es.
Particularly useful here
is
requiring
one
option
to
follow
the
natne
of the BOUrCe fil e, whil e all others must
precede it.
As new versions evolve, howe\~er, this
restriction may be
loosened..
Once
again,
Waterloo
seems
to
have missed the chance to
change .!th.1.ft!. option must follow the filenames.
B.
"Do not
implement
all
of the options documented at
The reason for
this
is
to prevent
confusion
providi!1g too many thint]s at one time which all work.
CO'
files
"Create files for the user,
already in existence."
I'e must admit that this
is
without
the
checking
best
in
the
feature
compiler performs with char.-acteristic aplomb.
one
of
time,,"
by
the
user
names
of
the
and
the
all,
We were also delighted to
discover that the filenames used depend upon the options
given
in
the
command-line..
This
is
necessary
to
prevent standardization.
One
exalople wi] 1 open the door for future implementations to follow.
If the
user
simply
wants
to
compile
the
program and get d
relocatable
a ppending
II
object
.0"
deck,
the
compiler
creates
to the name of the source file
a
file
(it can not
for that by
be
specified
by the user, a nice extra). The Honeywell time sharin'J fi Ie system
limits filenames to eight characters; what should the compiler do if the
name of the source file
a lready guessed.
is eight characters long? Perhaps the
reader
The only logical thin'} to do is write the object
has
deck
r i9ht
over the source..
Nothing could be more clever"
Source files are
useless when one has the object deck.
Why \vaste file space
maintaining
both?!
This will also prevent the user from making wasteful and costly
listings of the program. vie are contin°~"lly impressed by the resourcefulness displayed with this unique feature. An important thing in it's
irnplementation is the requisite lack of system documentation. The best
system features ilre .
:::0
-<
The software system is currently executed in a pseudo machine
interpreter, which emulates a hypothetical real machine designed to
handle PASCAL constructs efficiently. Our pseudo machine is similar in
concept to the P-machine distributed by Wirth's group at Zurich, but we
have made extensive changes to compress the PASCAL object code into a
much smaller space than possible with the Zurich interpreter. The
interpreter, and run-time support routines, currently occupy about 8K
bytes of main memory. The interpreter is in the native machine
language of the host machine, and thus far has been coded by hand using
the host's assembly language. All other code in the system is written
in extended PASCAL.
While the interpreted object code runs roughly five times slower than
native code for the host machine, several factors allow our large
system programs to run substantially faster than this would indicate.
The strategy of code compression makes it possible to run relatively
large programs without time consuming overlays. For example, the
complete compiler occupies 20K bytes in a single overlay. Since the
system is designed for frequent compile/go cycles associated with
instruction, we have added several built-in procedures and functions to
handle low level operations needed frequently by the compiler. ·As a
result, the compiler translates PASCAL source code at about 650 lines
-0
::t:>
G"l
rn
per minute on an LSI-11 with its clock set to 2.2 MHz.
the compile speed will be slightly faster than this.
On a 4 MHz Z80,
Interpreter based versions of our system are now running on 5 distinct
processors, and two others are close to completion. Those operating
include DEC PDP-11's ranging from the LSI-11 to the 11/45, using either
floppy disks or RK05 disks for secondary storage. Versions for the
8080 and Z80 are operating in our laboratory, but more of that later.
Sperry Univac Minicomputer Operations at Irvine is using the system on
the V-15 and related machines. Another group at UCSD has the system
running on the Nanodata QM-1. With support fro~ General A~tomation, a
version is close to completed on the GA-440 fam~ly of mach~nes.
National Semiconductor has an implementation nearly completed on the
PACE microcomputer.
The principal modules of the system as it will be distributed in the
1.4 release include the following:
PASCAL compiler
File manager (capabilities similar to DEC's PIP)
Screen oriented editor (cursor positioning, immediate updates)
Line oriented editor (similar to DEC's RT-11 Editor)
Debugger (single line execution, reference to variable contents)
SETUP program (adapt system. to most ASCII terminals)
BASIC compiler (ANSI standard plus strings)
Operating System and user command interpreter
PASCAL pseudo machine interpreter
Linker program (for linking independently compiled program segments)
Desk Calculator utility program
Users of the Terak 8510A may, on request, also receive copies of the
CAl package, and automated quizzes for the introductory textbook, as
well as the bookkeeping package.
Documents describing all of the above are available, and part of the
release but not all documents ca~ be considered complete at this time.
We dist;ibute source and object code files on separate floppy disks
formatted to be compatible with the IBM 3140 standard, with 512 byte
blocks laid out in alternate 128 byte sectors according to DEC's
standard. We haveoccastonally sent copies recorded directly pn disk
packs for the RK05 drives. All other media are painful or impossible
for us to handle, and no promises are made to use them. Those who
order the full $200 release package will be sent both the documents,
and printed listings of the source programs. Copies of the descriptive
documents amounting to approximately 150 pages, may be ordered at $10
each (che~ks payable to the "Regents of the University of California")
to cover printing and handling costs.
3. Minimum Configuration
In order to use the compiler, you need a total of at least 48K bytes of
main memory, including the 8K bytes assigned to the interpreter. We
use 56K bytes. Ideally, the interpreter should be completed re-entrant
and thus it should be possible to operate the interpreter from Read
Only Memory. To date, the ideal has not quite been achieved, as none
of our sponsors has yet insisted on that feature.
At present, the system we use with students contains several built-in
functions not needed for system development. The aggregate size of
these functions is large enough to prevent compiling the compiler
itself, or the operating system, even on a 56K byte system.
Accordingly, we currently have two versions of the system, one for
students, and one for system development. Within the next few months,
we plan to add a means of configuring general purpose libraries for the
system, and by that means expect to be able to return to a single
version for all purposes. That single version should be practical to
use in less than 48K bytes for some purposes.
If you intend to compile on one microcomputer, and to executed object
routines on others, the others can get by with as little as 16K bytes
of main memory if the operating system is not used. The resident
portion of the operating system occupies about 8K bytes itself. This
will undoubtedly be reduced as part of the libraries project.
=
The system is designed to be used with standard IBM compatible floppy
disks. Clearly it can be used with other varieties of floppy disks, or
with other secondary storage media, with appropriate I/O drivers. The
I/O drivers have proven to be one of our principal bottlenecks, and we
make no promises in advance about supporting other devices. For DEC
PDP-11 machines, the floppy disk drivers are assumed to be compatible
with the RX-11, or with the Terak 8510A drives. Hard disks are assumed
to be compatible with the RK05.
The system is normally supplied with the assumption that the user has a
simple line-oriented ASCII terminal. The SETUP program can be used to
configure control codes for more appropriate use of most CRT terminals.
Copies of the system supplied to users of the Terak 8510A make fairly
extensive use of the special graphics and character generator
facilities of that machine.
4. 8080 and Z80 versions
The Z80 version is now running on the Tektronix 8002 Microprocessor
Development Aid system, for which Tektronix has supplied substantial
support to the project. The 8080 version uses virtually the same
source code as is used on the Z80, with conditional assembly altering
certain passages in the source to substitute for a few of the extended
Z80 instructions that proved useful.
"Tl
rn
tt:J
;;0
=
»
:::0
-<
Release of the 8080/Z80 version of the system for other machines has
been held up primarily because of the awkwardness of handling I/O. We
currently have a Zilog Development System, a Processor Technology SOL
system, and a Computer Power and Light COMP~L-80 system. The floppy
disk provisions for each of these machines ~s non-standard. As a
result, we have been forced to down-load programs via serial interfaces
to get from the LSI-11 host machines used for development over to the
new 8080 or Z80 based host. This has proven to be a very time
consuming process, and a serious bottleneck in our work. Moreover, we
are somewhat amazed to find that the Assembly of large programs on
these machines runs almost a factor of ten slower than compilation of
PASCAL programs that carry out similar tasks! Clearly, something has to
give if we are to reach the objective of distributing PASCAL systems
for more than a few 8080 and Z80 based machines.
The solution to this problem that we now plan to use is based on the
extensive market penetration of an operating system called CP/M, which
is a product of Digital Research Inc. We have talked with many OEM and
hobbyist users of the 8080 and Z80 who wanted to know when we would
have the PASCAL system operating under CP/M. We then learned that CP/M
is distributed in a package which assumes that most users will write
their own 110 drivers. In effect, CP/M establishes a quasi standard
for the interface between an 8080/Z80 operating system and its I/O
drivers. With thousands of copies working in the field, CP/M seems to
be far ahead of the field in this area. Accordingly, we have decided
to release the UCSD PASCAL System for 8080 and Z80 users in a form that
will work with I/O drivers and bootstrap loaders developed for use with
CP/M. This does not mean that our package will run under CP/M.
However, if CP/M runs on your machine it should be relatively easy to
install the PASCAL system on that machine. We have been in contact
with Digital Research on this concept, and they have offered to
cooperate. ,If you do not have CPIM for your machine, the
implementation package may be obtained from Digital Research Inc., Box
579, Pacific Grove, CA 93950 for $70. Since CPIM has been implemented
on a very wide variety of 8080 and'Z80 based machines, there is a high
probability that CPIM 110 drivers are already available from Digital
Research or someone else for your machine.
Alteration of our present interpreter to match the CP/M I/O calling
conventions has proven to be very simple, at least on paper. We expect
that some implementors of CPIM will have installed standard console
input routines which automatically echo to the standard console printer
or display device. This will necessitate a change, since our system
uses both echoing and non-echoing console input. At this writing, the
exact method to be used is under discussion. Barring some unforeseen
calamity, copies of our system designed to run with CPIM 110 drivers
should be ready for distribution by early January, 1978. The
distribution medium will be IBM compatible floppy disks formatted in a
manner yet to be finally speQified. We will undertake to transform the
system for other media and other formats, in general, only if a copy of
the necessary hardware is available in our laboratory, and only if
funds are available to pay for the extra conversion work.
For many of the 80S0 based machines we have seen, the most practical
way to install our system will be to use 4SK bytes of RAM augmented
with 8K bytes of ROM for the interpreter. Any additional RAM or ROM
required by the host processor system will also be needed.
5. PASCAL Extensions and Alterations
We have attempted to implement faithfully as much as possible of PASCAL
as defined in Jensen & Wirth's User Manual and Report. The principal
extensions to PASCAL embodied in our system are related to STRING
variables, Turtle Graphics, handling of disk files, Segment (overlay)
Procedures, and several functions for support of the system itself.
Alterations include a prohibition against passing procedure or function
identifiers as parameters, restriction against GOTO out of a procedure,
the addition of EXIT«procedurename» to effect a normal exit from the
procedure named in the parameter, and a change in READ applying to the
interactive INPUT and KEYBOARD files. Further details than given in
this s~ction are given in our system release documents.
Type STRING is a pre-declared record containing a character count
fOllowed by a packed array of characters. Built-in procedures and
functions include LENGTH, POS(ition), INSERT, DELETE, COpy (i.e.
extract), CONCATenate, SCAN, FILLCHAR, MOVERIGHT, and MOVELEFT. The
last four of these also operate on conventional packed arrays of
characters.
Turtle Graphics describes a technique originated by Seymour Papert of
MIT in which one can either MOVE a cursor (called the "turtle") an
arbitrary number of screen units in the current pointing direction, or
TURN an arbitrary number of degrees at the current position. A
PENCOLOR procedure allows the line drawn by a 'MOVE to be either WHITE,
BLACK, or NONE.
The disk file extensions allow working with fixed length logical
records corresponding to any legal , which might typically be a
RECORD data structure. GET and PUT operate normally through a window
variable of the same . OPENNEW creates a new file, OPENOLD opens
a pre-existing file, and CLOSE allows saving or purging a file. SEEK
(which will be distributed with the 1.4 system for the first time)
allows random access to logical records within a file.
SEGMENT Procedures are separately compiled and then linked into the
host program using the LINKER. A Segment procedure is only loaded into
~ain memory when it is entered for the first time, and its memory space
lS deallocated upon exit from the first invocation.
R~AD(INPUT,X) is defined by Wirth as X:=INPUTf; GET(INPUT); which we
flnd to be extremely awkward for interactive use. Our solution is to
place the implied GET before the implied aSSignment in the case of
interactive files of type TEXT. READ operates as defined in Wirth's
Report for other TEXT files.
en
PACKED records on our system which fit within 16 bit fields are
automatically packed and unpacked without explicit action by the
programmer.
6. Introductory PASCAL Course and Textbook
Man~ of those inquiring about our system have heard about it through
havlng seen the textbook "Microcomputer Problem Solving Using PASCAL"
by the author of this note, published this fall by Springer Verlag. If
you haven't seen a copy, they may be obtained from Springer at 175
Fifth Ave., New York City, NY 10010.
The book is the basis for teaching the large attendance iritroductory
computer science course at UCSD. This course Gomes close to matching
the specifications for course CSl in the recently published curriculum
recommendations from ACM's SIGCSE. The approach is non-numerical as
f~r a~ practical, as a tactic to reach the many students who come to us
wlth,lnadequate prep~ration in high school mathematics. The problem
solvlng and programmlng approach taught is the same as we would teach
even if all the problem sets were mathematics oriented. Because many
problem examples and illustrations use our string and graphics
e~tensions to PASCAL, the textbook currently assumes that the student
wlll,have access to a computer which runs under the UCSD PASCAL system.
We wlll be glad to discuss the possibility of conversion to other
softwar~ systems, but have very limited resources to apply to such
conve:slons. There ~r~ several stand-alone microcomputers now being
sold ln,large quantltles on which our system would run, given a small
converSlon effort, and we would welcome support funds to pay ,for such
converSlons.
Software in the form of automated quizzes is available with our system
release for those who may wish to teach using the textbook
Each
chapter in the book has a list of study goals for the stud;nts to
ach~eve.
Wherever,appropriate, the quizzes test for mastery of the
tOP1CS enumera~ed ln the goals lists. The quiz programs have been
lmplemented uSlng a set of CAl primitive routines patterned after the
w~ll known DIALOG CAl system developed at U.C.lrvine by Alfred Bork and
hlS colleagues.
The introductory course is taught using Keller's Personalized System of
Instruction (PSI). PSI has been found to be a more successful method
of instruction than any other method commonly USed in universities and
colleges. This success is achieved, almost completely without
conventional lectures, by using experienced students as Learning
Assistants called "proctors". The characteristics of this method make
us believe that it is possible to offer this course, or others
construc~ed along the same lines, on a packaged basis for use at other
lnstltutlons. A separate paper describing this possibility in detail
called "Microcomputer Based Mass Education" is available from the
writer of this status report.
-n
f'T1
t:I:I
;:0
=
:t>
;:0
-<
7, Tele-Mail User Support Facility
We have reached the point where it will be possible for us to begin
operating a dial-in computer "mailbox" by early in the winter quarter.
We have been using the Terak 8510A machines occasionally as intelligent
terminals for exchanging messages via the large B6700 computer operated
by the campus computer center. Our own Tele-Mail facility will use its
own single telephone number reachable directly from the national dialed
telephone network, or internally via the California state government
telephone network. Paid subscribers to our software release will be
notified when this mailbox facility is ready to be used.
The mailbox will be operated primarily to serve users of our software
system. It will provide notices of recent bug corrections,
down-loading of program files (either source or object) where
appropriate, notices on new additions to the software and new machines
on which implementations have been completed, and other useful
information from us to the users. It will also serve as a means for us
to collect messages from specific users, and to answer them
expeditiously, without the hassle of both parties having to be at their
telephones at the same time.
Through the use of block transfer software, the mailbox will make
relatively efficient use of the dialed telephone network. We would
like to begin immediately by offering a dial-in port at 1200 bits per
second. However, the present state of confusion in the industry at that
speed (which is the fastest one can use with acoustic couplers) leads
us to move cautiously. We can and will install a port at 300 bits per
second using the standard Bell 103A equivalent conventions. The system
will answer an incoming call from an ordinary terminal by providing a
brief summary of recent developments. It will otherwise expect a
"handshake" from a special file transfer program that we will provide
to users of our software package. This program will be the means of
interchange based on efficient transfer of messages in the form of
complete files. If ycu wish to send an ordinary text message to us,
you will prepare the message using either of the editors built into the
system. Only after the message is complete will you need to make the
telephone connection.
8, Forthcoming Improvements
As mentioned earlier, our next significant improvement in the software
will be a more flexible system allowing libraries of programs. One of
the main reasons for doing this will be to allow the software to be
configured to make efficient use of main memory in cases where the user
does not need all of the built-in facilities. For example, we have no
need for turtle graphics when compiling large system programs.
One of the long awaited features of the new library system will be an
arrangement allowing mixture of PASCAL procedures with Assembly
language routines and/or procedures compiled directly to the native
code of the host machine. The necessary assemblers and code generation
will come somewhat after the library system is operational. If all
goes well, the library system should be ready to distribute during the
winter quarter of 1978. The assemblers and native code ve'rsions of the
compiler will come somewhat later as time for the necessary work
permits,
Many people have asked whether we have in mind extensions to support
Concurrent PASCAL, or similar facilities to allow independent processes
running concurrently, This is something we would like to do
eventually, but our current resources do not allow making definite
plans in this area.
(* Received 78/01/03 *)
UNIVERSITY OF CALIFORNIA, BERKELEY
BERKELEY' DAVIS' mVINE • LOS ANGELES' RIVERSIDE' SAN DIEGO' SAN FRANCISCO
PROGRAM IN QUANTITATIVE ANTHROPOLOGY
DEPARTMENT OF ANTHROPOLOGY
SANTA BARBARA' SANTA CRUZ
2220 PIEDMONT AVENUE
BERKELEY, CALIFORNIA 94720
21 December 1977
SUGGESTIONS FOR PASCAL IMPLEMENTATIONS
These suggestions are not based on implementation experience (I have none), but
on using, teaching, and arguing about the language and on maintaining and trans-
porting Pascal programs across several machines. Items 1 through 7a below concern
implementation and have no bearing on the Pascal language. Items 7b through 10
would affect portability if implemented on only some machines, and thus seem worth
considering as "conventional extentions."
1) A very nice feature offered by some Fortran compilers is a special comment
construction which is treated as a comment under one compiler option (the default),
while such comments are compiled if the appropriate option is specified. This
feature allows debugging code to be inserted in with the rest of the program at
no cost to the size or execution time of the final production object code (since
the debugging code is treated as comments in the final compilation).
In addition
to debugging, this feature can be used to produce two slightly different object
versions from a single source program, or for insertion of machine-dependent extra
features in an otherwise transportable program.
Pasc~l
This could be implemented in a .
compiler in two ways:
a) The most analogous implementation would use a $ comment option which would
cause the preceeding open and the following close comment symbols to be ignored
under "debug" mode, while otherwise these $ comments would be treated as comments.
This means of implementation has the advantage that it can be used for declarations
or for actions. It has the disadvantage that no comments can appear within the
"debug" code since few (if any) compilers allow nesting of comments (some allow
pseudo-nesting through different comment symbols).
b) A different implementation would use Pascal language structure rather than
special comments: "debug" code would appear within an if statement which has as
its Boolean expression only a single constant identifier. The following (compound)
statement is compiled if and only if the constant has the value TRUE. The code
for the if statement itself is not generated in either case. Means of implementation b) has two advantages over a). First, the programmer can provied as many
different "constant switches" as desired: one actually for debugging, another
if certain features are available on the host machine, etc. The second advantage
is that any Pascal compiler will generate correct code from programs using these
constant switches, in fact, I used them frequently to move programs back and forth
between machines (Texas-Austin CDC and DEC 10). Of course, such programs will
run less efficiently if the special use of the Boolean constant is not recognized
at compile
t~e.
For the specific purpose of' debugging, it would be convenient
to have a predefined Boolean constant identifier DEBUG global to the main program.
This would be FALSE unless set by the job control command invoking the compiler,
and could as usual be overriden by a local same-named constant.
2) Large programs would be easier ·to read and debug if the compiler source
listing included, at the end of each procedure or function, the names of global
variables referenced in that routine, and the routine in which they were defined.
suggested Extensions to Pascal
Part I
3) A compiler option to flag non-standard constructs is quite useful. At some
future time it may be desirable to expand this to flag only constructs which are
both non-standard Pascal and non-"conventional extentions
ll. A. Fra ley
University of British Columbia
August 25, 1977
ll •
4) If the reserved word PACKED is ignored by the compiler, the procedures PACK
and UNPACK should be implemented as the appropriate FOR assignment loops.
5) If LINELIMIT (not a part of Standard Pascal) is not called for a file, the
default should be no line limit at all, rather than a small positive limit. A
small default limit is undesirable for two reasons: a) programs writing to several
files may run ~orrectly during testing and then fail on a large production run
(Pascal 6000 enforces a limit on every output file, not just printer files), and
b) portability of programs written on machines not implementing this extention
is impared.
6) The syntax which makes one-pass compilation possible also makes possible a
compiler for interactive program entry, with syntax checking after each line of
code is entered by the user. Actually, program entry could be done by a syntax
scanner which copies good input to a file but does not generate code (thus would
be transportable). If the user was given some simple editing facilities, such
a system would compare favorable with many of the selling points of a good
Basic interpretor.
7) The following two comments on numeric input apply to either free-field or
formatted input:
a) The standard language definition of
'"
rn
This
allows
compares.
2.
simple
implementation
of
moves
and
The parameter& are stored next.
These fields may be
interrogat€d or used for type com pa Ubili t y checks.
3.
The data area for variable sized fields is placed at
the end of the record structure. This allows direct
access to all fields without the need for computinq
displacements at run time.
4.
Each field of variable size is replaced in the
structure by a pointer to the appropriate data area.
Unlike other pointers in Pascal, the field pointer is
relative: it is the displacement of the data area from
the pointer. field.
This allows record items to be
moved without changing the pointers.
5.
When an array has a component of variable size, the
length and index origin are stored in a dope vector.
one additional restriction is that parameterized types are
not compatible with simple types.
For example, if we have the
aeclarations
racilities rpUGN 45
(Eisenberg),
#6
(Hagerty, Cichelli), 118
(Sale)].
The suqgestions in this section and the tllO that
follow address these complaints and related topics.
What is a file?
A
file is a record, one of whose
components is a system object. The system obiect contains a
seguence of typed components.
Pascal over-simplifies this
situation by iqnoring the system obiect.
When a user: first
~earns
about files, he must learn the system conventions guite
early.
Hiding them in Pascal does not shor:ten the learning time
significantly.
C/)
Files in Pascal contain the one important property which
makes them variables: they vary. The assignment operator is not
defined for this data type.
Euclid even has a method for
assignment to be illeagal for selected user types.
But
assignment of files in Pascal could be given a meaning. Just as
"1'," suggests a dereference Which does not necessarily occur,
the assignment "P1:= 1'2" could assign the system obiect from
one file variable to another.
After this assignment, F1 and F2
~ould
access the same system obiect.
(The coordination between
these files, the contents of their buffers and flags, and ether
issues would need to be decided if this inter:pretation is made.
These issue must be pursued anyway since two external files may
access the same system obiect.)
HeLe are some suggested operations on files.
Some of these
would be meaningless for the cur:rent Pascal definition of files.
YAR
V: STRING (12);
Ii: ARRAY [ 1•• 121 a!' CHAR;
PROCEDURE Q (VAR STR: STRING);
DEFI NED (file)
Returns TRUE if there is a
with this file variable.
the call Q(V) is legal, but the call Q(W) is not.
--n
system
obiect
associated
Modules
OPENED (file)
Returns TRUE if the file has been used.
If FALSE, a
RESET or REWRITE should be performed rather than a GET
or PUT.
One of the strengths of Fortran is the ability to have
library
packages.
. Some
Pascal compilers allow separate
compilation, so
that
libraries
can
contain
individual
procedures.
But for a package of procedures, there must be a
shared ·data area for retaining values and communica ting from one
procedure to another. The Fortran mechanism for this process is
"named common".
Pascal has no such mechanism. Its global data
area serves as a structured form of "blank common", but there
should be a structured form of named common.
RESET (file, name); REWRITE (file, nam~
Changes the system obiect associated with the file to
the named ob;ect.
This allows the
program
to
reference catalogged files without the user supplYinq
the name each time the program is run.
Conventions
for
names
would
need
to
be established for
portability.
Modules in the language Modula r 51 provide
such
a
structure. Selected constants, types, variables, and procedures
of a module are known to ·the outside world; all others are the
private property of the module.
Pascal should allow separate compilation of modules.
Later
compilations could reference the "obiect module", which would
contain definitions of all external names. The compiler could
include the module's obiect code with the current compilation,
or could insert the appropriate loader control lines for
fetching the module. Some provision should be made for alerting
users when the external specifications of library modules are
modified.
Files
A number of complaints have been made
about
Pascal's
I/O
M
b:l
=
c:::
::t:>
=
-<
I-'
<.0
'-I
co
EXT END (file); EXTEND (file, name)
These work like REWRITE, but can be used to extend an
existinq file without reading it first.
(Example:
A
compiler might wish to keep a statistics file of all
error messages issued to users. The second form of
EXTEND could be used, since the user would not know
about this file.)
END.FILE (file)
Assurninq EOF(file)
is TRUE. this procedure ends the
current file.
If EOF(file) is FALSE, skip past the
end of the file.
This is useful if the actual file is
a tape.
""'C
:l>
=
rn
Random access facilitie~ may be added to the existing file
facilities with little cost.
Unlike the "slow array" proposals,
the technique below does not permit integer indexes into the
tile.
While this may be inconvenient, it can be easily
~mplement€d
on most machines.
In addition, if a file element is
ueleted in an integer indexing scheme, there would be a question
dS to whether the subseguent elements should be renumbered.
POSITION (file)
This function returns a value of an internal data type
"filepos", indicating the current position of the
window in the file.
DELETE (file, pos)
Deletes an el~rnent of a file.
"filepos".
"pOSH
must
have
losing significant information in the inteqer case, so
we should avoid it in the character case.
The
statement wRITE (0 ABCD ':3) could be defined to
produce .. ABCD" instead of .. ABCD".
This would
allow the form WRITE (A:O)
to be used inside of
messages without leavinq irrelevant spaces.
3.
There are certain applications where the programmer
may wish to truncate integers or strings on output.
The statement
type
WRITE (1234:3:TRUNC,'ABCD':3:TRUNC)
REPOSITION (file, pos)
Repositions the file window to the parameter position.
Following this position, a GET or a PUT is permitted,
regardless of the current value of EOf(file).
If the
component at the indicated position has been deleted,
a GET will set EOF (file) TRUE.
could produce the output "234ABC".
4.
NEXTPOS (file, pos)
This procedure differs from REPOSITION in two ways:
1.
If the component has been deleted, a GET will
access the next component which has not been
deleted.
2.
A PUT will place the current buffer into the
file
position
immediately
following
the
indicated position.
Real
number
formatting
in Pascal is currently
inadequate.
When the decimal digits aren't specified,
the format ("E" or "F") should be chosen by the output
routine to maximize the number of significant digits
which can be contained in the field.
The call
WRITE (r:w:d)
causes "P" format output with
"d"
decimal digits, unless siqnificant digits would be
lost on the left. The field could be expanded, but a
switch to "E" format would be appropriate.
(The field
would be widened to allow for a value having the
specified number of decimal places and the exponent as
well.)
The statement WRITE (r:w:d:EI could force "E"
format with the specified number of digits.
For consistency with the previous cases, the call
WRITE (r:O)
could
output
in
free-format.
The
conventions could be those found in APL, in which
trailing zeros are eliminated when possible.
PIRSTPOS (f 11e); LASTPOS (file)
These functions return the first and last positions of
a file, respectively.
For consistency with the source language, at
least one digit must be printed to the left of the
decimal point.
I f no
diqits are requested to the
right of the decimal, "."
is not printed.
An
additional convention may be that exact zeros are
printed "0" with no decimal part and no exponent.
These functions should be easy to implement for files havinq a
lixed com~onent si1:e.
A clarification of the effects of these
procedures would be needed for text files.
(O~r system does
aeletions ,and rewriting of entire lines, rather than individual
characters. )'
I--'
LO
........
As
to
the
usefulness of this scheme,
most random accesses
reguire the use of a directory, links in fieldS, or remembering
d
location.
The special pointers can be stored as easily as
~nt",gers.
\lashing to a file isn't possible, but a procedure for
mapping integers into file locations miqht be specified.
5.
Formatted output of scalars and characters should be
provided, and should be identical to strinq output.
6.
Input of character strings should be allowed. READ (s)
would start at the current input position and fill s
with characters. If the end of line is reached before
s is full, the remainder of s is filled with blanks,
and the window remains at the end of line. If EOLN is
TRUE when the read is started, the read begins on the
next line.
(Note that if zero lenqth lines are
permitted, a null line could pass unnoticed. Our
system returns one space with EOLN false even if the
oriqinal line was empty.)
7.
It should be possible to associa·te read and write
formatting routines with each user-defined type. This
would allow all variables to be used in READ and WRITE
statements.
Formatting
The Pascal Report [1] does not specify the effects of the
formattin~ procedures READ and WRITE in sufficient detail.
The
auggestions below clarify a few points, and present some
extensions and changes which seem more consistent and flexible
than the current conventions.
1.
2.
What is the effect of WRITE
(1234: 3)?
To avoid
erroneous printing of numbers, the full value "1234"
should be printed. This has the desirable side effect
that WRITE (1:0) produces free-form output. No extra
spaces are placed around the number, so it will appear
naturally in the text.
Consistency
what is the effect of IiRITE
('ABCD':3)?
We avoided
says that the output should be "ABCD".
Input formatting,
while not discussed above, should be
provided.
People won't use Pascal if they can't read their
existing data, whether or not it is archaic.
Sometimes data is
generated Olf laboratory equipment as strings
of
diqits;
modifications to the hardware should not be forced on the user.
1n addition, most users don't have the time to write their own
0:>
~umber
conversion routines for reading the data a character at a
time.
Conclusions
The use of Fortran ca~ridqe control is archaic, and doesn't
l.nterfacE well with some operatinq systems.
(i.e.: Pascal
would need to know whether the first character is carriaqe
control in order to generate the proper file formdt.)
The
Lollowing format generators could be included as a~guments to
.
';':
PROCESS (C);
ERROR (C)
END
This has an advantage over the "OTHEWISE" notation fPUGN la. pq
26 (steensqaard-I!adsen) 1 because specific error values can be
J.isted along with the default symbol "<>".
Wirth has reiected the use of a CASE default rpUGN fa.
pq.
23]. This author feels that it is no worse than the unqualified
ELSE in an IF statement. It is an absolute requirement if the
CASE is to be useful in real programs. Consider wirth's example
of a CASE beinq used with a character field.
A proqram which
will receive wide distribution may use a restricted character
set.
All characters cannot be listed. because implementation
character sets may differ. On certain machines. some characters
Aave no external representation, and could not be entered as
case labels.
Sometimes the internal,
printer, and terminal
character sets differ. addinq to the confusion.
To restrict the temptation to misuse the case default. a
of values (such as 1•• 10) should be allowed as a case
~abel.
For characters. the ASCII orderinq could be assumed to
permit portaoility.
(' • •• ·w' means "all characters from • ,
to 'ill' in the ASCII sequence".
It does 1lQ! imply that the
~nternal
representation is ASCII.
Compilers for non-ASCII
~mplementations would need a table
to select the appropriate
character values for the case label.l
range
,Other for.ulations use "FI", "END IF". or "END" in place of
"END_IF".) The advantage to this form is that the programmer
need not decide whether a BEGIN is needed or not when writinq
his code. A line may be inserted without needinq to add BEGIN
END
brackets.
The "danglinqELSE" problem disappears: it is
41ways obvious which IF an ELS.E is associated with.
Loop Statements
Sost of Pascal's compound statements may easily be given a
closed form: a suitable closinq word is selected for the end.
For convenience. "ELIF"
(a contraction of ELSE and IF) is
4ddedto the IF statement, allowing multiple tests with only one
closing END_IF. The REPEAT statement already has a closed
format.
The CASE statement reguires the most modification to
meet this suggestion. The format below might be used:
CASE I
WHEN 1,2 DO X := Y; Y := Z
WHEN 3
DO X := Z; Y := X
END
The word "CASE" miqht be replaced by "TEST" for readability.
The CASE Statement
The existinq loop statements are not applicable in all
situations. The author suqqests an infinite loop. toqether with
an exit statement.
LOOP
EXIT IF F (I)
I := I + ';
END
< 10;
A semantics check could quarantee that each loop contains an
EXIT.
The EXIT can be Embedded in an IF or CASE, but not
~nother
loop.
The condition followinq EXIT is
optional.
,Compilers should generate a table of all exits from a loop. or
flag exit statements in the marqin.)
A FOR clause could
introduce a loop:
FOR I := 1 TO 10 LOOP ••• END
1:
For loops would be more useful if a set value could control
the iteration.
X:= Y;
10000: Y := X
END
I'TI
tI:I
:;:0
c::
J>
:;:0
-<
......
<.0
........
The CASE statement, as specified by the report. has a
number of weaknesses. The legality of the statement below is
not specified by the report.
CASE I OF
"
FO R I IN [1,7, 9 •• N 1 •••
00
~o specific o~de~ of value seiection should be assumed.
Another
FOR loops
(as moditied above) would be a code
reg~on wh~ch 1S executed
only when the ite~ation te~minates
no~mall y, but not when an EXIT is used to leave the loop.
~mp~oveme~t
~o
:= 1 TO L.IMIT LOOP
IF KEY = TABLE rIl THEN
BEGIN BESULT:= I;
EXIT END
AFTERWARDS
LIMIT := LIMIT + 1; TABLEfLIMIT];= KEY;
RESULT :~ LII'lIT
END
rhe value of the controlled variahle should be defined on exit.
dany machines cannot trap references to undefined values, so
l.mplementation dependent p~ograms could be developed which rely
on the specific values left by that
implementation.
The
variable should have the value of the last time throuqh the
loop, or be unchanqed if the loop was not executed.
Miscellaneous Points
Allow "_" in identifiers.
Allow";" before ELSE {optionally).
Proqrammers oould
then use a;" as a statement terminator if they wish.
Allow st~inqs to De extended with blanKS on the riqht.
Do
nQl automatically truncate characters from st~inqs. Allow
sinqle characters to be extended to strinqs.
Alternatively,
Explicitly
prohibit
character
continued on a new line.
Allow subranges instead
parameter lists.
Chanqe ";" to "," in
Require
parameter
parameters.
of
type
types
Allow "PROCEDUR En in place of "FU NCTION".
allow
constants
from
identifiers
in
a
being
formal
Provide procedure
variables.
A
representa tion
of
procedure pointers is available for procedure parameters.
Only top-level
procedures
(within a
module)
lIay
be
assigned
to variables,
thus avoidinq the "vanishing
environment" problem.
Use parentheses for array references (A(II
instead of
A[IJ).
An array is a method for implementing a function
of inteqer arguments.
Why should implementation decisions
affect the technique for writing the function reference?
A library packaqe miqht chanqe its implementation, without
changing its external specifications; users would then
need to chanqe their proqrams.
(Note: there is currently
no distinction between a
variable reference and the
invocation of a parameterless function.)
Provide a compiler option format,
instead of exam1n1nq
comments
for
compiler options.
"$" brackets could
surround option specifications.
Each option name may
optionally be followed by ".n, "_n, or ":-".
Options are separated by"," or ";".
Com Filer
options
should
be
standardized.
An
implementation need not provide an option, but if it does,
the name is chosen from the standard list. Options not on
the
list
may be provided as well.
Compilers not
recoqnizing an option name should iqnore it.
Compiler options which affect the qenerated code (such as
options for range and index checks, non-standard features,
optimization, or debug facilities) should follow standard
nestinq rules.
option chanqes made within a procedure
should not affect outer procedures.
Semantic Ambiguities
parameter declarations.
p~ocedu~e
for
procedures
passed
as
The validity and interpretation of each construct
should be made explicit in any forthcominq standard.
PROCEDTHlE Q (PHOCEDURE P (VAR REAL; 3 REP INTEGER));
type
TYPE PTR
~
specifications
t RECORD '"
pointer
in
END
below
1. Consider the program segment below.
PROCEDURE P;
TYPE T = fXX;
XX = RECORD ••• END;
Procedure argument lists are a specialized form of record.
The variant mechanism should be available fo~ parameter
lists.
Allow
arbitrarv
dec lara tions.
Require a ":" if the tag name is omitted.
Specify a maximum source line length.
100 is a reasonable
value.
(This allows some extra formatting space on a
132
characteL' print line, and allows for line expansion when
80 character lines are edited.)
FCB I
Provide a substring function.
number ~anqe as a subsc~ipt.
decla~ations.
END;
T obviously points to a record obiect of type XX.
But
what if the debugged procedure P is placed
in
a
surrounding program which also contains a type xx.
Usinq
many compilers, T is now a pointer to the outer XX.
Is
this interpretation proper?
(Also allow PTR to te referenced within the record.)
Allow
arbitrary
scala~
types
in
case
tag
field
2. Our
any
compiler will
messaqes.
erro~
process the declaration below without
"rn
ttl
:;:c
=
:r>
:::0
-<
TYPE COMPLEX
Language
1977.
RECORD
REAL: REAL;
Il'IAG: REAL
END;
Should it produce aD error message?
3.
Maybe two?
Exact rules for type compatibility should be stated.
We
r""cf'ntly received a proqICam which passed a O•• 100 variable
as a VAR INTEGER parameter.
Should this be leqal? If so,
how can valiJ ranqe cheCKS be performed?
How about two
record declarations having identical field structures (and
names)?
4. Our compiler used to loop when it encountered the
below.
TYPE A :
VIR
BEGIN
X:
fA;
A;
Y:
X:= Y
B
=
'8:
Does VOUL compiler qenerate the
Notif<~.§.
12: 2. Feb
wirth. N•• "An assessment of the Proqramminq Lanquaqe
Pascal", SIGE!.A N 1!Q!j,£!l.§, J ul Y 1975.
[41
Fraley, R., "Parameterized Types", Unpublished Paper,
April 1975.
r 51
Wirth, n.,
"MODULI:
Multiproqramm
[ 6]
Fischer,
C.
N.
and R.
J.
LeBlanc, "Efficient
Implementation and Optimization of
Run-Time
Checking in Pascal", E!:2.!<.
!s;:~ \.;Qllf.
.Q!! Lall.!I
~~§i.!Il! fQ£
Helia~l~ ~oft~~~.
Raleigh.
N.C.,
March 1977.
f71
Dahl,
I 81
vanWijnqaarden, A. et al..
"Revised Report on the
Algorithmic Languaqe Algol 68", .:illiPLA.!! Notice.§.
11:5, 1977.
Languaqe
for
O.
et al.. £omJ!!Qll ~g&~ gll.9.J!i!.!I!l, Norwegian
Compo
Ctr., Oslo. 1970.
(* Received 77/09/13 *)
Conclusions
Extensive changes to Pascal have been sugqested
in this
paper.
The author feels
that changes of this maqnitude are
required if Pascal is to be useable for proqram development in a
professional settinq.
Quite a
number of additional features
could be recommended;
the changes above have the hiqhest
priority.
***
If Pascal was modified as described, we may need to call it
somethinq else, for it would no lonqer be Pascal.
PeLhaps it is
Pascal 11? Or Pascal 77? A standard languaqe resembling Pascal
~s surely needed, but why
shoul~
hun~reds
of
programmers be
~nvolved in writing a standard, new processors. and textbooks if
the standardized lanquaqe has a limited life or cannot be used
tor larqe svstems?
WHAT TO DO AFTER A WHILE
D. W. Barron
Do not condemn Fortran without understanding it.
It has
changed over the years to provide improved facilities for
program development,
even if its basic structure has remained
static.
Each feature, as used in proqram writing,
should have
an equivalent
in Pascal, or good reason should be given as to
why it is not.
Fortran owes its lonq life partly to its
standard, even though it has not been strictly impLemented.
But
~t also owes its life to its usefulness in solvinq many
of the
avery-day tasks of proqramminq, such as communication with the
operatinq system and referencing libLary packaqes.
Pascal would
Denefit from expansion in some of these practical directions.
&
J. M. Mullins
Computer Studies Group.
University of Southampton.
The Problem
Biblioqraphy
q
The problem is simple. If one writes while p and
do •••• will q be evaluated if p is false? The "boolean
operator" approach says yes, the "sequential conjunction" approach
I 1]
Jensen,
K. and N. Wirth,
Eg§£sl Usg£ ~~l
RgEQ£!, Springer-Verlaq New York (1976).
I 2]
Lampson, B. W. et aI.,
"Report
on
th~
sng
Proqramming
Modular
=
rn
U?
END.
Are these types leqal?
erLor message properlv?
.:illif!.!!
f 31
program
B;
Euclid" •
says no. The Revised Report leaves the question open (though the
User ManuaZ says "yes"). and A.H.J. Sale (1) has argued strongly
that the boolean operator approach should be uniformly enforced.
We take the opposite view.
A Proposal
We propose that in the forthcoming reV1S10n of the Revised
Report the operators and and ~ should be defined as
p and q _ (if p then q else false)
p or q _ (if p then true else q) •
The reasons in favour of this proposition are summarised here for
the convenience of readers who may not wish to study the detailed
argument in the remainder of this paper.
i)
ii)
iii)
Sequential conjunction permits a programming style that
is more in the spirit of PASCAL.
If sequential conjunction is adopted as the standard,
existing programs that assume the "boolean operator"
interpretation will continue to work. The converse is
not true. (This argument does not hold for programs that
rely on side-effects of functions, but we have no sympathy
whatever for those who perpetrate such monstrosities.)
If sequential conjunction is adopted as the standard the
effect of the boolean operator interpretation can be
fabricated by user-defined functions: the converse is
not true.
Programming style and the "spirit of PASCAL"
This is a natural way of expressing the operation to be carried out;
what follows the while is a sequence of guards. which determine
whether or not the body of the loop is to be executed. If we specify
that the guards are inspected in strict left-to-right order until
one of them "triggers" there are no problems: this corresponds to
evaluating the while condition by sequential conjunction. However,
if the boolean operator approach is used we are in trouble (array
bounds) if the item sought is not in the table. OK, there are lots
of ways round this, (e.g. put the item sought at the end of the
table, use a boolean variable, or even use a goto) , but as we
illustrate in the appendix, these are distortions: the program no
longer bears a simple and obvious relationship to the problem, and
this is bad style. Our contention is that the need to distort the
program to satisfy the boolean operator interpretation is contrary
to the spirit of Pascal. Study the examples in the appendix to see
the truth of this assertion.
Uniformity and Regularity
Our argument has concentrated on while statements (and
similar arguments could be applied to repea~til constructions).
This is because these are the only constrUCtions where the sequential
conjunction interpretation is required and cannot be fabricated by
other means. The question arises whether all occurrenceS of and and
or should be treated the same way. Sequential conjunction should
certainly be used for conditional statements. If the boolean operator
approach is used, we can fabricate the effect of sequential
conjunction by writing
if (p and q) then
The argument in favour of sequential conjunction hinges
on programming style. Efficiency is sometimes raised as a
consideration but it is a red herring. For some architectures
(e.g. pipelines) sequential conjunct~on is inefficient: for other
architectures it is more efficient. But in the Pascal community
we should have gotten beyond judging language features solely in
terms of implementation efficiency. What matters is being able to
write correct programs that are easily comprehensible.
table: ~
[1. .maxsizeJ
of whatever;
index := 1;
while (index <= maxsize) and (table [index] <> item)
do
index: = index + 1 ;
(*condition for item not found is "index> maxsize"*)
else
S2
Sl
else
as
ifp then begin
i f q then
S2
end
I-'
LO
One of the classic illustrations of the two approaches
is the problem of searching a table:
var
Sl
else
S2;
'-I
00
but this is not perspicuous, and is not in the spirit of PASCAL.
What should happen to boolean expressions in other contexts
e.g. expressions? If we were starting the language design again, there
would be quite strong arguments for allowing the boolean operator
interpretation in these other contexts. It is a good principle of
language design to separate clearly the data objects and the permitted
operations on them from the mechanisms for achieving flow of control.
Sale's paper distinguishes between boolean expressions in a jump
context and in a value context. He is recognising (unconsciously
perhaps), that whilst boolean variables are data objects, and can be
combined into boolean expressions, the condition following an if or
a while is something different. To emphasise the difference,
might give it a different name; taking a term from English grammar(3)
(an obscure subject, rarely studied these days), we could call it a
protasis. Because it is a different kind of object it is possible for
it to obey different evaluation rules, and sequential conjunction is
the right approach. Equally, because it is a different kind of animal
we would need a new notation e.g. and, ~ for sequential conjunction,
we
•
The first of these relations defines sequential conjunction.
The second defines sequential disjunction, but we shall use
the term "sequential conjunction" to include both.
•
Compare Dijkstra's if and do constructions expounded in "A Discipline
of Programming". (2)-
boolor for boolean operator.
This is the solution adopted
by some other languages e.g. POP-2(4), RTL/2(S). But given that we
have a fairly well defined language already that we don't want to change,
it seems better to make sequential conjunction uniformly the method
to be used for evaluation of and and or in all cases. This has the
supreme advantage that existing-programs (and particularly compilers)
continue to work, and don't have to be changed to conform to a new
standard. It also happens to be the rule adopted by MODULA and EUCLID.
~,
Appendix
Searching a list without sequential conjunction
1.
var table : array
Before leaving this topic it is worth remarking that the
dangers of confusing a protasis with a boolean expression are well
illustrated in Algol 68. The pursuit of regularity, orthogonality,
etc. allows us to write
while
Sl;
B do
INSERT A DUMMY ITEM
[1. .maxsizeplusone]
of whatever;
index := 1;
table [maxsizeplusone] := item;
S2;
while (table [index] <>item)
meaning
L:
Sl;
if
B then
S2;
goto
do index : = index + 1;
L;
(*condition for item not found is "index=maxsizeplusone"*)
which is thoroughly confusing.
Getting the best of both worlds
Adopting the sequential conjunction interpretation allows
a more natural style of programming. (Compare Welsh's compiler with
Amman's to see this illustrated vividly.). If anyone really wants to
enforce the boolean operator interpretation of and he has only to
define
function
var
andop (p,q : boolean)
2.
USE A BOOLEAN VARIABLE
~ table: array [1 .. maxsizel of whatever;
notfound : boolean;
boolean;
index := 1;
pl,ql : boolean;
notfound := true;
while notfound and (index <= maxsize)
pI := p; ql := q;
andop := pI
and
(*ensures both arguments evaluated*)
do if table [index] = item
ql
then not found
false
else index := index + 1;
then he can replace while(p and q) by while(andop(p,q»
be assured that p,q will bo~be evaluated.
and be
(*condition for item not found is "notfound"*)
3.
References
USE A.§Q!Q
label 9;
1.
Sale, A.H.J. Compiling Boolean Expressions - the case for a
"boolean operator" interpretation. PUG Newsletter No. II,
1977.
2.
Dijkstra, E.J. A Discipline of Programming. Prentice-Hall,
Englewood Cliffs, 1976.
var table
array [1. .maxsize]
.£!. whatever;
index := 1;
3.
Onions, C.T. Modern English Syntax. Routledge and Kegan Paul
London 1971.
4.
Burstall, R.M., Collins, J.S. and Popplestone, R.J.
in POP-2. Edinburgh University Press 1971.
while(index <= maxsize)
do if table [index] = item ~ goto 9
else index := index + 1;
5.
Barnes, J.P. RTL/2 Design and Implementation.
Son, London 1977.
Programming
9: (*condition for item not found is "index> maxsize"*)
Vl
Hayden and
C)
(* Received 77/09/21 *)
ADAPTING PASCAL FOR THE PDP 11/45
D. D. Miller
GTE Sylvania, Inc
Mountain View, California
ABSTRACT
This paper describes our adaptation of the University of
illinois' PASCAL student compiler for a PDP 11/20, to a
production compiler on an 11/45. We will discuss, a) the
extensions to the language which were necessary to communicate between PASCAL programs, data and MACRO-II
code, b) support routines such as a routine debug and source
update and reformatting, and c) how we introduced PASCAL
into an existing software system and to MACRO
programmers.
INTRODUCTION
HistOrically GTE Sylvania has delivered turnkey
systems with software written in machine language.
For all the usual reasons management decided to
investigate the possibility of developing software
based on a higher level language. The target project was a system which was already in the field,
but under contract for a major revision. The system controls a real time experiment. It has several special purpose I/O devices and doesn't use any
DEC software. It is about 25,000 lines of macro-11
code and runs on a PDP 11/45 with 64K of memory.
In March 1975 we attempted to locate compilers other
than FORTRAN which were running on all-series
machine. Candidate compiler s had to be able to
handle complex data structures with ease and would
have to generate LINKable code so we could build
our own system. The only compiler we could find
to meet these criteria was PASCAL at the University of Illinois. It was running on an 11/20 under a
version of DOS-4.
We began in-house training for PASCAL using the
Jensen and Wirth User's Manual l in April. The
legal aspects of acquisition were completed in the
meantime and the Compiler was ready for use in
May.
We then wrote some toy problems to get a better
feeling for PASCAL and to test its non-standard
features. In June we identified the changes we
would have to make and tho se we woUld like to make,
and then laid out a schedUle.
The production compiler was released to the programming staff in November so that they could begin compilation. It. was completed in December
according to our requirements. But we continued
to modify it as we saw the need.
: = . I .
: =
: = program < identifier>;
=
< modUle heading>
= modUle ;
=
=
< statement part>
A program is an executablfO entry, i. e., it contains
outer block code and has a start point. A modUle
is a non-executable entity, i. e., it does not contain
outer block code.
A modUle is composed of data and procedure declarations only. ModUles allow for portions of the
system to be separately programmed and compiled.
Selected data elements and/or procedures and functions can be accessed from other modUles or froIn
t~e program via the external and entry declarabons. Data spaces consist of the following types:
"rn
t:P
We will discuss the specific changes we had to
make to the compiler, a description of the supporting software and the non-technical problems we encountered introducing the compiler to the staff.
CHANGES TO PASCAL
normal
external
own
=
~
;;;0
Normal data space is the same as Jensendescribed.
Normal data space is allocated on the "stack" upon
entry to a procedure and is deallocated (erased,
lost) upon exit from the procedure. Each entry to
a procedure which declares normal data structures
causes space to be reallocated to those data structures. Consequently, no memory of previous value s is retained, and the same stack space may be
shared among procedures'.
The changes outlined in this section were made because the several programmers are all working on
a single system. The system as originally designed, had a large common data base which was
accessed by all programs. And the system contained several utility programs. Furthermore,
from a practical level, the routine s in the system
are better developed and maintained in smaller
units. A fifty page PROGRAM is more difficult to
develop and maintain than five ten page PROGRAMS.
A fifty page PROGRAM may also exceed the compiler s table limits.
external data space consists of those data structures that are used locally but are allocated in another Inodule or MACRO program and have been
declared as either entry points or global. The
usual declarations are used to describe these data
structures, but no space is allocated for them.
Program Cross Linkage
~
PASCAL does not allow linkage to data outside the
PROGRAM and only allows linkage to predefine external utility programs. This was unacceptable as
we expected to make use of existing MACRO code
and data. Therefore the major change to the compiler was to implement the following syntax:
;;;0
data space consists of those variables that are
allocated in a program or a module but are not put
on the It stack." own data structure s retain their
values from procedure entry to procedure entry.
~ data structures may be initialized and/or may
be designated as entry points. Entry points are
used by LINK to resolve references created by use
of EXTERNAL data spaces in other modUles.
-<
V1
f-'
Example:
program LISTEN:
external
~
TALK: CHAR:
procedure SPIT (ANSWER: CHAR):
procedure ASK:
end
exte rnal:
begin
while TALK = , 'do ASK:
Storage is allocated in one of two modes, normal
and packed. For normal storage allocation (i. e. ,
the variable has not been declared as packed, it is
not a packed type, and is not part of a packed
variable) each unstructured variable is allocated
either a byte or word. A byte is allocated for scalars with less than 128 elements, for subranges
within -128, +127, and for char. A full word is allocated for all other unstructured type s. If the next
element to be allocated is a full word and the next
available byte is an old address, then that byte will
be skipped and the full word will be allocated on the
next higher even address. Arrays and records are
allocated as a set of contiguous elements.
module SAYSO:
own
TALK: CHAR:
initial TALK: = , ':
procedure ASK;
1.
With tagfield in record
~
X:(A, B, C) of
A:(
):
B:(
):
C:(
end
2.
Without tagfield in record
~
:boolean of
true:
SPIT (TALK):
end.
Examples:
packed records are allocated in a slightly different
manner. Each element is allocated only the number of bits necessary to contain the element. If the
next such element to be allocated will fit within the
current word then it will be allocated there. If the
element does not fit, then it will be allocated starting at the next even byte. Allocation of elements
starts at bit 0 of a word and proceeds to bit 15
(i. e., from right to left).
):
false:
end
Additional Functions
We found that we needed several functions added to
the compiler
begin READ (TALK) end;
procedure SPIT (X:CHAR):
Examples of PACKED record:
begin WRITE (X) end;
Channel
Status
Unit
entry TALK, ASK, SPIT.
In this example the main, or controlling program is
program LISTEN. Within LISTEN the procedures
SPIT and ASK are declared external, indicating that
these two procedures may be invoked but are not defined within this program. The assumption is that
some other body of source code defines these two
procedures appropriately. The variable TALK is
also defined as external to the program.
The module SAYSO satisfies all of the external references made by LISTEN. Note that the variable
TALK is declared in·~ space (a necessity for
entry points) and is initialized to' '. TALK, ASK,
and SPIT are declared as entry points, i. e., they
may be referenced from other modules or programs
as externals.
Packed Records
The Illinois PASCAL didn't allow packed record or
array declarations. But our existing system contained a lot of packed data, which naturally .fell into
the packed record syntax. Since Wirth leaves the
semantics of packed records to be defined at implementation time, we chose the following scheme
for stor age allocation:
STATUSWORD = packed
~
UNIT: 0 •• 15;
STATUS: array [0 •• 8J of boolean:
CHANNEL: 0 •• 7
Procedure MACRO (CODE:INT;X:INT): This procedure reference signals to the compiler to generate an inline word of instruction. This is the mechanism to be used if special instructions must be
executed in the middle of PASCAL code. CODE
must be -I, and X may be either a constant or the
name of a variable. IF X is a constant then that
value is the value used. IF X is a vari~ble, the p_
relative address of the variable is used.
Example:
MACRO (-I, 016746B):
MACRO (-I, X):
Variant Record
W:
e chru:ged the syntax of variant record descriphons shghtly to ease the job for the compiler and to
make the presence or absence of a tag field in the
record more consistent. The semantics of this
syntax means that the record mayor may not contain space for the tag field. The variant record is
similar to FORTRAN's equivalence state~The
syntax is
:= ~ : of
[ < variant subfield>} end
:= I empty - etc.
Procedure TRAP (TRAPNO:INT:var SPECBLK:tbd:
varLINKBLK:tbd) This procedure first places the
addresses of SPECBLK and LINKBLK on the stack
then executes a trap instruction. The trap number
is indicated by the parameter TRAPNO. The code
generated by the compiler for this procedure call
is:
mov
#SPECBLK, -(SP)
mov
#LINKBLK, -(SP)
trap
#TRAPNO
Function FIRST (X:INT):INT: This procedure reference signals the compiler to use the lowest value
defined for the parameter X. X may be of type
integer, scalar or subrange. See below for example of usage.
V1
N
Function LAST (X:INT):INT;
This function reference signals the compiler to use the last, or
highest, value defined for parameter X. X may be
of type integer, scalar, or subrange.
Example:
~
X: 13 •• 21;
Y
(A, B, C, D);
X
= FIRST (X);
while (X:=X+l) <= LAST(X) do;
for Y:=FIRST(Y)!£. LAST(Y) do;
Function ADDR (X:TYPE): TYPE; This function
generates a pointer (i. e., the address) to the variable given as a parameter.
The compiler included a cross reference pass.
This pass sorts all the routine variables and prints
all references to that variable along with its definition. This feature is found on very few compilers
but is a valuable aid to debugging and maintaining
any block structured language routine.
Z:integer;
var
Y:t integer;
Y:=ADDR(Z) end;
Function POINTER (X:int):t; This function causes
the integer parameter to become a universal
pointer. This allows the programmers to do pointer arithmetic:
Given the following declarations:
~ DIGITS = array [0 •• 9 J of integer;
var
of PASCAL is seven core loads, linked together
with disk files. There are two routines the compiler writer has to debug PASCAL. One prints all
the intercommunication files and the other prints
the resultant code in MACRO format. This second
routine was originally the last pass of the compiler,
and generated input to the MACRO assembler. However that final pass had to be modified to print out
its table of PASCAL labels and statement numbers
versus relocatable address. This was required to
relate console debugging to compiler listings.
X:DIGITS;
W:DIGITS;
Z:integer;
then we may write the following statements:
W:=addr(X);
"W points to X"
The University of Illinois included a source deck
reformatting routine. This routine is used to enforce a consistent statement indention scheme
throughout a program and across all programs.
This permits all programs to be more portable between programmers. To assure that it is used regularly, we added a line editor to the front end, and
embedded the whole thing as the first pass to the
compiler.
curiosity) concerning some practical applications of
the language to the problem that they were familiar
with. Occasionally, some suggestions were made
to improve the data definitions. And thus a gradual
acceptance of PASCAL was beginning to be seen.
The modification of the target system included fir st,
documenting the existing system and then upgrading
it according to customer requirements. Necessarily
the documentation was carried out at a high level,
i. e., higher than machine language flow charts.
And as the system was modified, the same high
level documentation technique was used. It would be
ideal to conclude at this point by saying that the documentation style closely resembled PASCAL, but
that simply isn't true. Each designer developed his
own style. What did take place is that they learned
how to express their ideas in a language above that
of the machine while still precise enough to be
short of arm waving.
As the language decision date approached, the
lines-of-code estimates for the two language alternatives were made. Based on those estimates
alone, PASCAL was clearly the choice. However,
some of the designers, looking forward to coding,
were appalled by the suggestion the machine language was still being considered.
NON-TECHNICAL PROBLEMS
At the outset, the project staff was composed of
six programmers; five had just completed delivery of the predecessor systeIn. The author had
been hired to complete the staff. The five had little
recent contact with high level languages. Most had
spent their career at the machine language level.
And so when it became known that management was
considering a high level language for the project update their reaction ranged between-disbelief and
rebellion.
When PASCAL was finally declared to be the language, real programs began to appear. And consequently the designers' imagination crashed the
compiler on a regular schedule. Syntax was added
and in one case (the variant CASE) changed at the
suggestions of the designer turned programmer.
So finally we realized not only acceptance of
PASCAL, but an effort to improve it to better describe the problem at hand.
:2
rn
-n
rn
tel
=
c:::
:J>
=
-<
Acknowledgments
Z:=addr(X[2J );
Z:=addr(W[ 3J );
Z:=pointer(ord(W)+6); "Z points to X [3J or
W [3J"
X [1 J:=ord(Z)-ord(W);
"# of bytes"
lLpointer (ord(addr(X»=addr(X) "true"
Of course management was quick to point out that a
high level language was only being considered and
that the language decision would be made in the
future, based on availability and economic factors.
And of course, the basic design of the project
wasn't affected by the language. So design could
continue independently from the language.
then • • • ,
SUPPORT ROUTINES
The University of Illinois supplied us with several
debug and support routines, which we have enhanced. We have written others to support the user.
The compiler writer must.have access to intermediate results in order to find errors. This version
When the Illinois version of PASCAL was chosen as
the candidate compiler, in-house classes were
held, and the basics of the language explored. When
the compiler actually became available, a few five
line programs were attempted by the staff.
The first relevant PASCAL introduction for the five
was a compilation of the system's data areas in
June. This sparked some discussions (out of
We wish to acknowledge Professor Don B. Gillies
(deceased), Ian Stocks, and Jaynt Krishmasamy of
the University of Illinois for their assistance in
transferring the PASCAL compiler from the
PDP 11/20 to GTE Sylvania's PDP 11/45. In addition we wish to acknowledge the National Science
Foundation for making the Illinois PASCAL compiler available to GTE Sylvania. Especially we
must thank Larry Drews and David Shaw, whose
foresight and diligent work modified this version
of PASCAL.
(* Received 77/09/13 *)
(1)
Jensen, Kathleen; and Wirth, Niklaus
"PASCAL User Manual and Report, "
Lecture Notes in Computer Science,
Volume 18, Springer-Verlag, 1974
IJ1
1.'\1
- 2 -
(C)
PASCAL:
Standards and Extensions
Modification to the Standard for
and Case Statements
currently, multiple statements under control of a while statemp-nt are bracketed by a
A. General
In this article I ~ould like to· make some comments on the current standards/extensions
argument, and to suggest some specific modifications to the standard and some useful
extensions.
In my opinion the. following points are relevant to the standards argument:(1) Any implementation of PASCAL should conform to some minimum "standard". This
is the basic requirement for portability, which is so necessary if PASCAL is ever to
supplant FORTRAN. If any implementation does not meet this standard it should not be
called PASCAL.
(2) The standard should be based on the revised Report. However, there are areas
in which the Report needs tidying up before the standard can be specified (see the
contributions by Niklaus Wirth [pp. 22-24, PUGN #8] ,Andy Mickel [pp 28-30, op.cit.] and
below) •
begin ••• end pair, those under control of a repeat statement are bracketed by the
repeat and the corresponding until and those controlled by a case statement
by the ~ and end.
--While admitting that these forms are reasonably strightforward, I think they are
inconsistent. I consider that programming style can be much improved with little or
any extra compilation cost by treating all statements controlled by a control statement in a consistent manner, i.e. by grouping with a begin ••• end pair in the form of
a compound statement.
-To my mind the greatest advantage of this is that related statements are always grouped
in the same manner and that when reading a program each end matches with a corresponding begin.
I therefore suggest that the standard syntax for the repeat staement be modified to:
repeat + ... until + --I and that the syntax for
the
(3) Extensions should be allowed, but they should be "conventionalised" as
suggested by Andy Mickel [loc.cit.]. By conventionalised I understand that any extension
to provide a specific function should be consistently supplied in only one standardised
form. Possibly, only extensions that can be expressed in standard PASCAL (albeit in a
possibly lengthy or inefficient manner) should be allowed (?).
(5) The standard should be specified as soon as possible to restrict the current
proliferation of incompatible implementations. The standard should hopefully be agreed
upon by some form of concensus of the PASCAL user/implementor community. There should
also be some recognised means of conventionalising any extensions.
On the Standard Language
I would like to briefly discuss some of the points that Andy Mickel [loc.cit] has placed
in categories of standards and extensions.
(1) I think that variable extent arrays as formal parameters should be allowed
as part of the standard.· For many general purpose applications programs these are
virtually indispensible unless the source code is to be modified each time for each
specific appiication. (See also the discussion on varying arrays below)
~
statement be:
case
~
-+ of"'"
begin - - etc.
Admittedly the repeat statement can already be used in the
suggested manner, however I don't think it would be a bad thing to force programmers to
use
(D)
(4) Any compiler that implements extensions should also be capable of processing
only the standard language. This would enable any program to be checked against the
standard. This could be controlled by a compiler option indicating whether the
standard or the extended language was to be processed.
B.
~
~t
in this way!
Varying Size Arrays as an Extension
This extension to the language is prompted by a foreseen need for varying length
character strings (they make the manipulation of non-numeric data so much simpler!).
However in as much as a character string can be considered to be an array of char
or a packed array of char, the idea can obviously be extended to any array, with the
added advantage that the treatment of many problems involving the use of varying
quantities of data might be simplifed.
I therefore suggest the following extension to the declaration of array types:-
--rL----------~--"-rL------------J~~---~ ~ 2t ---~
~
packed
--.J
etc.
~~
The declared size of the array would be treated as a maximum only, the initial size
being zero.
As an example, a variable declared so:-
(2) Some decision must be made on a standard character set upon which the
type char is based.
(3) While the suggested otherwise part in a case statement would be useful I
don't think it is essential. However, I do think that the standard should specify the
action to be taken when a missing value is encountered, i.e. error or null operation.
(4) I would like to keep well away from formatted
as well).
~
statements (see below
Taking into account the above consideration, I agree basically with the cl~ssification
of the various points discussed by Andy Mickel. However, I do have some additional
points which I would like to see discussed. These are dealt with below.
~
S:
packed
varying array [10 •• 19] of char
would be a string of maximum length 10, the first element being SILO] and the initial
length being zero.
I think that such an extension would minimally require the following extensions in
addition:(1) A concatenation operator to allow appending of one string or array on
the end of another.
(2) An additional form of selector to allow the equivalent of the PL/I substring
function.
For example give S above, the reference:- S[12 •• 15]
would be equivalent to a
reference to a variable of type
packed array [12 •• 15] of char.
"
rr1
t:D
::::c
c:
:t>
::::c
-<
- 3 -
- 4 -
This form of selector need not apply only to varying arrays but could apply to any arrays.
(A relevant aside: This idea would be even more useful if variables were considered
to be of the same type if they had the same structure, not just if they had the same
type identifier.)
(3) A size function.
varying or otherwise.
(E)
This would be used to return the size of any array,
A General Inverse to the Ord Function
Very briefly, I think that some function comparable to the char function but acting on
any scalar type (except real) as an inverse to ord would be very useful. At the
moment I canlt think wha~ call it!
(F)
A Different Approach to the Treatment of File Variables
Clearly, in case (a), (c) and (d) the files have some existence separate from the
program and the file variables used to reference them. There must be some way of
associating a file variable with such a "permanent" file in such cases. This is
currently done by effectively passing the files as parameters to the program and
associating the file with the file variable by the file variable identifier. This
seems to me to be 04K. as a start particularly if the operating system provides some
method for associating external and internal file names (e.g. B6700 label equation).
However, I think this method has two disadvantages. Firstly, it seems to imply that
the files must exist for program execution to be successful, there is no reason why
this should be so. Secondly, it lacks flexibility in that a file variable must always
be associated with one particular file during program execution.
I would like to suggest that a file variable only bcome associated with a file when
the file variable is referenced by a file reference functon or procedure, e.g.:
There has been much discussion on the meaning of statements such a8:fl
(d) Exist~nce before, during and after program execution (e.g. permanent database file).
:=f2
where fl and f2 are both file variables.
I think much of the discussion has arisen through some conceptual confusion between
a file and the file variable used in PASCAL to reference a file.
I would like to suggest an approach to the whole subject which I think is different
to those that have been put forward before, but which is both natural to PASCAL and
consistent with the normal usage of file variables in PASCAL.
The notation ft (where f is a file variable) for an item in a file is identical to the
notation pt for the variable referenced by the pointer variable p. Thus file variable
f could be considered to be a pointer variable tied to the set of items in the file
which it references.
(It should be noted that this argument does not assume that an
item in a file need be transferred to a file buffer before it may be used even
though it may be transparently implemented in such a manner~)
Then,just as pl:~p2 (where pI and p2 are pointer variables based on the same type)
assigns to pI a reference to the same variable as it referenced by p2, so fl:~f2
(where fl and f2 are file variables) assigns to fl a reference to the same item in the
same file as is referenced by f2.
Consequently, the expression fl=f2 would have the value true if and only if fl and f2
referenced the same item in the same file.
The use of file variables as formal var or value parameters is also obvious by analogy
with the similar use of pointer variables.
The use of file variables in any other expressions (except as parameters to I/O
procedures or when qualified by t as in ft) would be meaningless and should be treated
as syntax errors.
Naturally enough, the usage of file variables in the above statements and expressions
would only be legal if the base types of the relevant files were the same.
As has been mentioned by others, files can have four basically different kinds of
temporal existence:(a) Existence before and during program execution, but not after (e.g. file
removal in a archiving system).
(b)
Existence during program execution only (i.e. a scratch work file)
(c)
Existence during and after program execution but not before (i.e. file
creatibn).
4
or
eof (f),
get (f) ,
put (f),
reset (f),
rewrite (f).
Until a file variable is associated with a file, it should have the value nil or an
an undefined value (is there/should there be a difference?). A file variable could
be disassociated from a file either by setting it to nil, or by using a procedure
such as
close(f).
It may be considered useful to have a corresponding procedure, the only action of which
is to associate a file variable with a file, e.?
open (f)
-n
rn
CO
;:;0
=
::t>
;:;0
-<
Of the four types of file discussed above, for (a) and (b) we need to be able to
indicate that the file is to be expunged from the system and that the file variable is
to be disassociated from the file. For cases (c) and (d) we need to be able to
disassociate the file variable but leave the file known to the system. May be a
procedure
delete (f)
or something similar, could be used'to perform the first of these functions and let
the suggested procedure close perform the second.
(What should the default action be?)
When performing output to a file we need to be able to distinguish between creating
a new file (case (c) above) or outputting to an existing file (case (d)). When
creating a new file it is possible that we may be creating a new version of an already
existing file. I would suggest that by default, output to a file should append to a
file if the file already exists, or to a new one if not. If it is wished to replace
an existing file, this can be done by preceding the first output to it by a rewrite
(or possibly a delete).
So far it has been assumed that a file variable is associated with an actual file by
correspondence of names, i.e. the file variable ~ would reference a file known
to the system as ~, unless over-ridden by some operating system control. If a
file variable is to be able to be associated with files at will then there ought to
be some method of associating a file name with a file variable. To make things
simpler this could be restricted to being legal only when the file variable is not
associated with a file. A possible way of allowing this would be to introduce
(yet another!) standard procedure,
e.g. name (f, s)
where f is a file variable
s is packed array of char and contains the name of the file.
V1
\J1
- 5 -
Finally, I would like to put in a plea for random access of files. While accepting
that a file should be considered as a sequential data structure, I think that the
term sequential should only be considered to imply that there is some positional
ordering of the items in the file and not that the items may only be accessed sequentially. Thus, I think it should be possible to access any item of a file at random
using a procedure such as
- 6 The actual values assigned would be the constants represented by the characters in the
textfile, each constant being separated by one or more blanks, or possible a comma.
i.e. with the textfile input containing the following characters:12 TRUE -1.342
seek(f,n)
where n (of type integer) is the ordinal number of the item to be referenced.
If the
GREEN 'ABCDE'
n'th item does not exist the eof (f) would become true.
15
2.
i :=12;
D:=TRUE;
r:= -1.342;
c:=GREEN
Notes:
5:= IABCDE I ;
~
1.
This scheme assumes that
2.
Seek(f,l) is equivalent to reset(f).
3.
Failing anything more efficient, seek(f,n) could be implemented by:
and put may be mixed on the same file.
The occurrence in the textfile of a constant of the wrong type for the variable should
cause an error.
reset(f);
i:~O;
while not eof(f) and i<>n do
begin get(f); i:=i+l end;
An alternative to using seek would be to extend get so that
get(f,n)
put(f,n)
5. While the file variable can be conceptualised as a pointer to an item in a file,
it would probably best be implemented still as a pointer to a buffer area and let
the various file manipulation procedures be responsible for the data transfer between
the buffer and the file.
I/O on Text Files
I think there is a great need to rationalise the methods of I/O on text files,
particularly with reference to the read statement.
output to a textfile using the write statement should produce the characters representing the relevant constant value, preceded by a blank so that any output produced by
a write statement could be input by a read statement. The current simple formatting
in the write statement, using a field width specification, could be retained provided
there is some predefined action (non-fatal error, or default output) if the value
will not fit in the given field width.
H.
would assign to f, a reference to the n I th item in the file. get (f) would still assign
to f a reference to the next item in the file.
Similarly for
G.
2
read (input, i,b,r,c,s,v) would be identical to
If the action required by the seek was not possible on the particular file, then a
run-time error condition should be indicated.
4.
-5
the effect of
Addition of Exponentiation Operator
If PASCAL is to ever supplant FORTRAN then I think an exponentiation operator
(e.g. **) should be included at least as a conventionalised extension, if not in the
standard itself.
I.
In Conclusion
I suspect that some of my suggestions (if not all) will not meet with the general
approval of PASCAL implementors and users. However, they do cover my main
dissatisfactions with the language (or at least the ones that I don't think are being
adequately dealt with by others) and I hope they will be food for thought. In
writing all the above, I have tried to bear in mind that there are basically three
areas of application for PASCAL with possibly conflicting requirements:-
Present suggestions are for
i.
ii.
iii.
formatted read statements, this I do not like.
In roy opinion, execution of a read statement should be considered to be equivalent
to the assignment to the relevant variables of some (unknown) constant values. The
values should be represented in the text file in the same way that the same constants
would be represented in the program. For example, given:
type colour = (red, green, blue);
var i: integer;
b: boolean;
r: real;
c: colour;
s: packed array [0 .• 4] of char;
v: array [1.3] of integer;
the effect of
real(input,i,b,r,c,s,v)
should be to assign
an integer value to i,
one of true or 'false to b,
a real value to r,
one of red, green or blue to c,
a character string of length 5 to s,
and an integer value to each of V[1],V[2] and V[3].
I-'
lD
'-I
00
A simple teaching language
A satisfactory replacement for FORTRAN
A useful and powerful systems programming language.
I think that PASCAL can (but doesn't at present) fulfill all of these, without straying
from its basic principles, but it is necessary to take care that in suggesting
modifications one doesn1t push one use at the expense of the others.
Above all, I would like to see some consistent standard (and soon!) that implementors
would feel morally obliged to adhere to if they wish to call their language PASCAL.
Chris Bishop,
Computing Centre,
University of Otago,
P.O. Box 56,
Dunedin,
NEW ZEALAND.
(* Received 77/12/27 *)
U1
0">
Department of Computing Science,
University of Adelaide,
North Terrace,
Adelaide,
South Australia 5039
LEIBNIZ-RECHENZENTRUM
DER
BAYERISCHEN
AKADEMIE
BARER STRASSE 21
DER
WISSENSCHAFTEN
D-8000 MDNCHEN
2
28th October, 1977.
:2
Pascal User's Group
c/o Andy Mickel
UCC: 227 Exp. Enr.
University of Minne~ota
Minneapolis, MN 55455
(612)
Miinmen, den
Telefon (089)
9.11. 1977
~: ~:;84, 84
HW/br
Telex: 05124634
376-7290
Dear Mr. Mickel,
thank you very much for sending me PASCAL Newsletters
so promptly. Sorry that I am not equally prompt with my
thanks.
On my PUG llIembership certificate you ask wether I am the
"EULER" Weber; sorry, I am not. My interest in PASCAL has
begun'only half a year ago when we received the ZurichCompiler for our CYBER 175 (with Operating System NOS 1.1).
::E:
Also in PN, it was announced that a PASCAL-Software pool will
be created and will be handled by the respective compiler
distributors. Can you, please, inform me what libraries ~a~€
available for CYBER 175 on what conditions.
I enclose an American Express Cheque to the amount of US $ 7.00.
Please send me another set of backissues and two issues of
each PN for my membership year. Beside the set for our
official library I should like to have one for my own.
I am very expecting PN 9. The other ones I like very much.
en
I am writing to correct an impression which may have been given
by Arthur Sale's letter in Pascal News, September 1977.
At the University of Adelaide, we were fortunate to have access to
Pascal several years ago because the University computer was a
CDC6400 - I personally first taught Pascal to students in 1974.
After two years experience with earlier versions of the language,
in 1976 the department adopted Pascal as its main teaching language.
We have no;vcompleted two years of teaching wlth Pascal as the main
language in first year, second year and third year!
In detail, some
500 students in our courses are programming in Pascal in anyone
year - writing programs from prime number generators to compilers.
The number of enthusiasts is growing!
Yours sincerely,
At the PASCAL-meeting of the German Chapter of the ACM I met
Urs Ammann who told me that you could probably help me with
information about interactive PASCAL-Systems for CYBER 175/
NOS 1.1.
From PASCAL Newsletters I learned that the maintenance of the
Zurich System is now in your hands. Did you get from Zurich
a list of all installations of their system? Anyway we are
very interested to be on your mailing list for future
corrections, extensions (?!) and releases. From Urs Ammann
I heard that in early 1978 there will be Release 3 includinq
dynamic arrays. Since I am interested in procedures for
mathematical algorithms, I will be very glad about this
extension.
/
rn
Dear Andy,
Barbara Kidman.
Copy to:
Professor A.H.J. Sale,
University of Tasmania.
***
Thomas J. Kelly Jr
58-8 Meadowlake Drive
Downingtown. Pa. 19335
f-'
ill
'-J
Gear Andy
3 Nov 1977
co
Just a short note to tell you:
I've moved. new address is above.
I've changed jobs: I now work for Burroughs Corp.
I exerted some
effort and we are now using the UCSD implementation of PASCAL on our
B7700. for any other 87700 users who need a compiler. you can get one
from UCSD. I suppose. It's okay. but we have discovered several bugs.
There is also a fix that ~eeds to be installed to allow the generated
code to r~n properly on a B77JO (as opposed to B6700).
I will send that
fix on to UCSD. I don't know if they'll put it in.
If anyone wants to.
they can get one directly from me (at the above address).
Yours sincerely,
\Wl--l
\N~
Helmut Weber
We are currently beginning work on adapting Brinch Hansen's Sequential
Pascal for one of our internal projects. Interest in PASCAL and its
derivativEs (especially MOOULA) is increasing here at Burroughs. whiCh
I can't say that it is all my
I consider to be a very good sign.
doing. but I like to believe !'ve helped.
Direktorium: o. Prof. Dr. G. SeegmUller (Vorsitzender), o. Prof. Dr, F. L. Bauer, o. Prof. Dr. G. Hammerlin, o. Prof. Dr. K. Samelson
-0
:J>
Gl
rn
Take care.
V1
Open Forum for Members
'-I
THE UNIVERSITY OF BRITISH COLUMBIA
Open Forum for Members
2075 WESBROOK MALL
VANCOUVER, B,C., CANADA
V6T lW5
25 August 1977
DEPARTMENT OF COMPUTER SCIENCE
rn
wce Memor ial Hall w.
Indiana University
Bloomington, Indiana
October 12, 1977
47401
Mr. Andy Mickel
Editor, Pascal Newsletter
Computer Center
University of Minnesota
Minneapolis, Min ~54~~
Andy Mickel
University of Computing Center
227 Exp. Engr.
Univ. of Minnesota
(/)
Minneapolis, Minn.
U.S.A. 55455
Dear Andy,
Dear Andy:
I have finally found the time to rewrite the paper which I sent last spring.
I would like to add my two cents worth to the
concerning Pascal.
animated
discussions
I believe that the difficulties that arise while using interactive
input files would be resolved if a GET was required before the file
variable was defined. This would allow a programmer to state explicitly
when
(s)he wanted the first read from the file.
This modification could
be made to Pascal, and currently running programs would compile and run
correctly by simply adding a GET at the beginning of the program.
I'm afraid it was sent without proofreading.
It is much longer now so I've divided
it in two parts in case you want to print it in installments.
I disagree with your statement about not changing Pascal [PUGN #8, pg. 29J.
You may have guessed this by the nature of the accompanying paper.
Pascal can,
and should, be changed now, before a standard is created.
-"
rn
You state that documentation, implementations, and software exist, so the
language should remain static.
But minor changes will be needed to all of them
ttl
when a standard is created, so it is a good time to make other needed changes.
I think that the discussion of standards is missing historical
observatons of natural languages. Well standardized languages are dead
languages! One only has to look at I,atin or ANS Fortran.
I believe t~at
the following proposal would allow Pascal to evolve, but at the same t1me
allow portability of programs. The laguage processed by a translator can
be called a dialect of Pascal if:
;;:0
A change from Pascal to a revised Pascal ("Pascal 11") can be compared to the
change from Fortran II to Fortran IV which occurred in 1964.
A mechanical translator
aided in the translation, but many long hours were spent re-writing programs. A
Pascal to Pascal II conversion should allow a more effective mechanical translation
to occur, but machine-dependent features and under-the-counter type conversions
=
:t:>
;;:0
-<
would hinder this effort.
1.
It includes "Standard" Pascal as a subset.
2.
The implementor has provided a mechanical translator (written in
"Standard" Pascal) of the dialect into "Standard" Pascal.
I would be willing to accept a dialect that satisfied both of these
conditions as "being consistent with the design of Pascal." Of course,
when a program in the dialect was shipped to another installation,
the
dialect version and either the "Standard" version or the translator would
also be sent.
I would suspect that it might be reasonable for
the
"Standard" version that is appropriate in this context to be be
"sub-Standard" in compar ison to the present idea of "Standard" Pascal.
The point is this: a change now will affect a relatively small number of
people. If you wait until a standard is made and then try to change the language,
the amount of pain and agony will be increased by an order of magnitude or more.
I don't pretend that every change suggested in my paper would produce a
superior product. Some have not been tried; none have been subjected to a large
user community.
I am describing problems which I have found with proposed solutions
so that reactions can be gathered. Above all, I do not suggest that change be made
for its own sake, but that change remain an open possibility.
While committee action is not good for a language design effort, it can be
effective for the task at hand.
I would like to obtain copies of the back issues of PUGN, but I have
two sheets that conflict in the listed prices. How much would it be for
the issues that you have.
Designers in the committee can independently create
language versions which combine the present language with the suggestions
presented in the newsletter.
Committee critics can force a justification of each
change, and can compare different solutions to problems. A group from varied
backgrounds can provide a degree of universality which a single designer cannot
hope for.
'
?
I:lf(/·.i.
Sincerely,
~~"'.'
Robert A. Fraley
,/
\.T1
00
HEWLETT", PACKARD
3500 Deer Cr-eek. ROlJd. Palo Alto, California 94304, Telephone 415494--/444, TWX 9/0 373 1267
November 7, 1977
Is the set above of type SET OF 0 .. 10? Type SET OF 0 .. 59? I can't tell. This
is one situation where the strong typing of the "pure" language fails, and the
resulting type is therefore left to the implementor.
I would make three proposals:
1.
r
=
r1"1
S [A, B, C]
2.
Dear Professor Sale:
I read with interest your contributions to PUGN #9.
of reactions.
Here are a number
While I am strongly in favor of an "ELSE" clause in the CASE statement,
I do not like your choice of keyword. In my recent work at the University of
British Columbia I found that a common error, committed both by students and
faculty members, is to place a ";" before the word ELSE in an IF statement.
It was so common that (in our extended compiler) we allow an optional semicolon
in the IF statement. This has several effects:
a.
Programming errors and resulting frustrations were reduced.
b.
2-token look-ahead is required. (In a recursive descent parser,
a Bool ean fl ag can be added to i ndi cate whether a ";" was swa 11 owed
by the IF statement procedure before discovering that no ELSE
exists. )
c.
Combined with your syntax, 3-token look-ahead is needed.
Without this addition, however, an IF statement in the preceding case clause which
contains an erroneous semicolon will probably get an obscure error message.
Our choice for the default clause designator was the token "<>". We thought
that it looks nice, and it suggests that values not equal to the other labels
should use this clause.
Sets of characters are a problem, but I think you missed the heart of the
issue, at least in this discussion. The Pascal standard does not define the
meaning of sets, so implementations differ. Sets behave in many ways like
PACKED ARRAY [type] OF BOOLEAN
except that "type" must start at 0 and has a fixed upper bound (in some implementations). If such a restriction were placed on arbitrary arrays, with the
upper bound being implementation defined, the users would scream loudly. So
why make such restrictions on sets?
3.
This allows explicit control
::E:
en
When the elements of a set constructor are a scalar type T
other than INTEGER, the current set constructor produces type
SET OF T
rather than a subset of this type.
~
~
~
The current set constructor is illegal with non-constant INTEGER
operands. The notation in point 1 above must be used.
One other point which you raised was the character set question. I am
sick and tired of this problem, due to the variety of character codes which
I've encountered. (1401 BCD, 7090 BCD, 1620 code, Univac 1108 code, CDC code,
EBCDIC, ASCII, and occasional others.) The ASCII code was agreed upon ten
years ago by representatives from across the industry, and closely resembles
the international standard code. While its purpose is information interchange,
we could contort its original purpose and say that programs are indeed information, and their algorithms (to be transportable) must be expressed in terms of
ASCI I.
If Pascal were to impose an ASCII rule today, it may alienate a number
of supporters. But if users don't push for some sort of standard. we will never
free ourselves of this problem. Pascal currently requires that '0' .. '9' be
contiguous. Perhaps it could also require that sets such as
['!' .. '@']
be interpreted as containing those ASCII characters between '!' and '@'. This
requires a conversion table at compile time to compute the set. In those
relatively rare occurrences where the 1imits are· variable, a runtime conversion
table is required.
An eventual goal of ASCII in all aspects of the language within (say)
five years might be nice. It might encourage Pascal implementers to prod the
hardware companies into supporting ASCII files and allowing an override of
the ASCII to internal conversion for terminal input. (Univac provided such
facilities several years ago for the 1108 series.)
I am enclosing some of my own suggestions for Pascal changes, which will
appear in PUGN #11. I am looking forward to hearing your reactions to these
suggestions.
Sincerely, ,
.52
<----TA
/Gt-OA.-1flJ
c{.
Sets of characters aren't the only problem. I am implementing an interpreter which has 150 instructions, defined as a scalar type. Will I be able
to transport my program if I use sets of these instructions?
(~~
Robert A. Fraley
Hewlett-Packard Laborato ies
Electronics Research La oratory
The one language "feature" which prevents a general definition of sets is
the set constructor.
[3, I, TRUNC(EXP(R))]
en
n
:t:>
When S is a set type,
denotes a set of type S.
of the s ubrange.
Professor Arthur Sale
Department of Information Science
University of Tasmania
Box 252C
Hobart, Tasmania 7001
Austra 1i a
-c
:t:>
-c
:t:>
Gl
rn
V1
RAF/hma
cc: Andy Mi cke 1
<0
"OMSI Computing" is a product and service name of Oregon Minicomputer Software, Inc.
December 26, 1977
Dear Andy,
It seems that we owe you and the Pascal User's Group a good
deal of information about our work with Pascal, so perhaps
this letter can serve as an informal introduction.
'We' are a small group of computer freaks who have been
working and playing together for about 7 years. The group
is an outgrowth of the Student Research center of the Oregon
Museum of Science and Industry (OMSI), a not-for-profit
private science education center in Portland, Oregon.
To make a long history short, we began in 1970 with a very
small DEC PDP-8 system and over the years grew to a large
PDP-8 and a large PDP-ll/45 computer facility. This
expansion was mostly financed by swapping software written
at OMSI with the manufacturer (DEC) for additional hardware.
Several past and present DEC software products were first
developed at OMSI (the PDP-ll APL is the latest example).
The group members (John Ankcorn, Don Baccus, Wayne Davison,
Steve poulsen, Barry Smith, Rusty Whitney, Dave Vann) grew
up as assembly language programmers. Our interest in Pascal
began when Wayne noticed the Acta Informatica report - our
continued interest is probably because Pascal has the
structuring tools we found necessary (and available!) in
assembler. Pascal is also "small enough" for practical
implementation, efficient for real-world programs, and (if
used carefully) really machine independent.
(I should note
that we're not Pascal fanatics - we use several other
languages, and follow Wirth's Modula with much interest.)
Our Pascal history shifted in 1974 to Electro-Scientific
Industries (ESI) in Beaverton, Oregon. ESI manufactures
precision electronic equipment, including computer
controlled systems for on-line laser trimming of hybrid
integrated circuits. The first laser systems were
controlled by DEC PDP-8's with a special-purpose language.
When ESI switched to PDP-ll's and was faced with the task of
rewriting the control software, we (somewhat hesitantly)
suggested Pascal for the implementation. ESI's enlightened
management (Don cutler, Bob Conway) agreed, and ESI
sponsored the development of a PDP-ll Pascal compiler (ESI
Pascal). The compiler (initially patterned after an early
version from the University of Illinois) was written by John
Ankcorn and Don Baccus with assistance from David Rowland,
and became largely stable in early 1975.
Significant features of ESI Pascal include:
_ single pass compiler coded in PDP-ll assembler
_ translates to assembler code (not interpretive)
- full standard Pascal
_ extensions for process control
_ stable, reliable production compiler
Expe:ience with ESI Pascal at ESI and OMSI has certainly
convLnc~d us of the practical utilty of the language - if
anyone Ln the PUG needs a showcase example of "Pascal in the
non-aca~emic world", contact ESI.
However, ESI's design
constraLnts resulted in a compiler which is not as
gene:al-purpose as one might wish. Specifically, the
requLr~ment of a 16K word operating environment led to a
very tLghtly coded bare-bones compiler (both Wirth and Tony
Hoare exp:essed surprise at the 11K word (22KB) compiler,
and I belLeve we have a reasonable claim to the smallest
standar~ compiler in existence).
The ESI compiler is not
well sULted to the "naive user", and of course an assembler
coded compiler is hardly portable.
Agreeing with Arthur Sale's comment that Pascal must have
very robust compilers and support software if it is to be
taken seriously, we began in late 1975 the development of a
to~ally new Pascal programming system.
The compiler for
t~LS system was written in standard Pascal and was designed
wLth s~v~ral coequal goals: efficiency of compiled code;
portabL1 7 ty of the compiler and support system; robustness,
and usab 7 1Lty o~ ~he entire system. We attempted to see
each desLgn decLsLon from the user's viewpoint rather than
the compiler writer's. Our view of the 'typical user' is
the professional Pascal programmer - one who expects system
software w~thout glitches or rough edges, one who works in a
p~scal e~vLronment wLth high-level support tools (excellent
dLa~n~s~Lcs at compile and :u~t~me, Pascal debug and library
fac71LtL~s, measurement facLILtLes for practical
engLneerLng) •
The comp~ler for this system (written almost entirely by Don
Baccus) Ls.currently producing code for some members of the
PDP-~l famLly.
It LS certainly larger than the ESI Pascal
compLIer ~runs in 2-4 phases, depending on optimization and
other ~ptL~ns), but the time from compilation to program
e~ecutLon LS roughly the same (the compiler produces
dLre~tly executable object files, whereas ESI Pascal
requLres use of the assembler and object linker - both much
slower than the compiler!).
Recently (October ~977~ we formalized our relationship and
created ~ ~orporatLon Lndependent from the science museum Oregon MLnLcomputer Software, Inc.
(known simply as Oregon
Software to our friends).
"Out of the frying pan, ••• "
We've arranged with ESI for Oregon Software to distribute
and supp~rt ESI Pascal (we call it OMSI Pascal-I). The
updated Lmplementation notes should read:
Implementors,
Jo~n A~kcorn, Don Baccus, David Rowland;
Distributor and
M~LntaL~er, Oregon Software;
Machine, any model PDP-II
(LncludLng LSI-II); Configuration, 16K memory RTII
RSTS~E, or.RSX.ope:ating systems (all the DEC ~ystem~ at
last.~;
DL~trLbutLon, 9 track 800 bpi magtape, DEC
cartrLdge dLsk, $1500 ($995 for educational use)·
Reliabil~ty, exce~lent - currently about 60 inst~llations
and growLng steadLly.
We've also been talking with Ken Bowles at the University of
California, San Diego, and are pleased to announce that the
UCSD Pascal system is available now for RSTS/E timesharing
systems - a~ ex~ellent system for introducing programmers to
Pascal • . PrLce.Ls.not yet fixed, but should be established
by the tLme thLs LS published.
en
Cl
Our new Pascal programming system (known as OMSI Pascal-2)
is not yet available - we'll keep you informed as to our
progress with the PDP-ll and other machines.
One last note - we have a limited supply of Pascal T-shirts
with a portrait of Blaise Pascal from a woodcut frontispiece
for a bi?graphy published in 1891 - see enclosed copy.
These sh1rts are 100% cotton, hand silk-screened, available
in sizes S, M, L, XL - price is five dollars postpaid from
Oregon Software.
Merry Christmas, and a happy New Year!
Barry Smith
Oregon Software
4015 SW Canyon Road
Portland, Oregon 97221
(503) 226-7760
Dear Andy,
Just a short note to describe an application of Pascal here at I.e. over the last couple
of months.
All university computer installations must be plagued by their share of Startrek games,
mostly written in the most hideous basic or horrendous pl/i (sorry Ploughskeepie).
Naturally most of these installations suffer because of it, both in terms of machine time
wasted and the constant staff overhead of having to spend hours looking for and destroying
incarnations of the game only to have a PhysiCS undergraduate restore it the same evening.
Our own case was slightly different. The Department runs VM on a 370/135 with 384k of
store. MerCifully, our basic compiler wouldn't handle the Startrek program run on our
College Computer Centre's CDCs: but even had it compiled, it could have been debatable
whether the kind of response that would have been achieved could have justified the tag
'interactive'. Thus we set about writing our own Startrek, in Pascal, which we hoped
would be more elegant and efficient than the versi_ons we had access to.
The user interface was designed and implemented by Greg Pugh (the guy who implemented our
P4 compiler). It maintains a full screen display on Lynwood VDUs, showing the status of
The Lynwood features
the Enterprise, short and long range scans, damage control etc..
blinking, cursor positioning, protected mode etc. and Startrek uses them to the full.
Using the cursor positioning, only the fields that change between moves are updated.
This leads to a faster (and more exciting) game. Because everything is continuously
displayed on the screen, we have been able to remove all the commands controlling the'
display (like damage control report), so the user only has to remember about 10 commands.
These are entered as English words, like 'WARP' :no more lost games 'cos you typed 3 hoping
to fire photon torpedoes and actually warped into a Nova!
We produced our first version in June '77, which ran quite successfully (and efficiently)
despite the abuses received during our department's open day.
However (and this is the interesting bit, I hope!) we have since extended the Startrek
system to run up to 16 users simultaneously, without modifying one line of the source code.
This was possible because of the natural re-entrancy of Pascal code. All that was needed
was a small interrupt handler (1000 lines of Assembler) to interface Pascal and the
terminals. As each user 'dials' into Startrek, the interface routines find some store for
his (her) stack/heap, and enter the Pascal bit of Startrek at the beginning. The program
runs until it initiates I/O, at which point it is suspended and other users run until it
completes. Because Startrek is thorough-ly I/O bound, we have experienced no problems
with its being totally interrupt driven (indeed on VM the level of I/O activity is a boon;
it stops you from getting dropped from the "fast response" queue!).
We have run 8 simultaneous users on the same Startrek program, with no notiapble degradation
in the response of the system generally or of Startrek itself.
Since Startrek has paved the way (boldly going where no man etc ... },we have really "gotten
into" multi-user Pascal programs here at IC. lain Stinson has written a filing/archiving
system which services 16 users simultaneously_ A multi-user context editor is on the way.
I think the thing that surprised us was the ease with which all these were implemented. In
all cases, the actual low-level interface needed was surprisingly small and took very little
time to write. The Pascal programs, because they do not need to know that they are multithreaded, are equally easy (and of course are easily tested with a more conventional,
single user interface).
Anyway, if anyone is interested, send us a tape (preferably containing some goodies of your
own) and we'll return a copy of the system (including our Pascal compiler). Please specify
800 or 1600 BPI. The game itself has a "user manual" in the form of a Starfleet technical
directive, but unfortunately only sketchy implementation notes exist.
Keep Blaising the way_
Live long and Prosper.
4015 SW Canyon Road
Portland. Oregon 97221
(503) 226-7760
Dave Thomas.
Department of Computing and Control,
Imperial College
180 Queensgate
London SW7
London 589- 5111
=
.,.,
rn
co
:;0
=
::t>
:;0
-<
en
I--'
THE
UNIVERSITY
OF
NEW
P.O. BOX 1
•
SOUTH
KENSINGTON
•
N.S.W.
WALES
•
AUSTRALIA
•
2033
TELEPHONE 6630351
EXTN.
STATE OF MINNESOTA
PLEASE QUOTE
Department of Computer Science,
School of Electrical Engineering.
Crime Control Planning Board
6th Floor, 444 Lafayette Road
ST. PAUL 55101
December 30, 1977.
November 7, 1977
Dear Andy,
Andy Mickel
227 Experimental Engineering
University Computer Center
University of Minnesota
Minneapolis, Minnesota 55455
Dear Andy:
In the September 1977 issue of Pascal News I was quoted regarding LEAA
(Law Enforcement Assistance Administration) regulations vis-a-vis programming languages for use in criminal justice information systems.
While the thrust of that quotation was essentially correct, it may be
useful to publish the actual guideline referred to:
From:
First let me congratulate you and your colleagues for the excellent job you have
been doing on the Pascal News(letter}.
The new Australasian distribution arrangernnents will certainly be welcome to people
down in this part of the world and I am grateful to Arthur Sale for offering to
print and distribute Pascal News but I too am confused over the Australasian subscription rate of $lO~
This makes Pascal News the most (relatively) expensive
journal/newsletter to which I now subscribe.
You can take it as considerable proof
of the quality of your publication that/if members continue to subscribe.
The
price disparity between the Australasian on one hand and the USA and UK subscr.intion
rates on the olhe!" is such that Australasian 5ubsc,::,ibers are surely owed a public
explanation (through Pascal News).
U.S. Department of Justice
Law Enforcement Assistance Administration
National Criminal Justice Information
and Statistics Service
Comprehensive Data Systems Program Guideline
Manual (M6640.l, April 27, 1976)
I feel I must correct Arthur Salo's misleading claim to "a first for reactionary
Australia" for his proposed switch to Pascal in his first year course in the next
academic year.
That Australia is reactionary js beyond doubt but surely Arthur is
letting his newfound enthusiasm for Pascal blur his perspective of what is happening in the rest of Australia.
Simply to set the record straight and without any
pretension to claiming a "first", I would like to point_ out that the computer
Science Department at this University has been teaching Pascal as a first and
principal programming language for the past three years.
Chapter 3/Paragraph 37d:
I enclose a collection of sundry comments on various ascpects of Pascal.
Whenever possible, all application programs
will be written in ANS COBOL in order that
they may be transferred readily to another
authorized user. Where the nature of the
task requires a scientific programming language, ANS FORTRAN should be used. Request
for waivers shall be justified in writing
first to the appropriate Regional Office
and then to NCJISS/SDD for review.
-n
rn
ttl
:;:0
c::
:t>
:;:0
-<
Best wishes.
f-'
LD
Yours sincGrely,
'-.j
00
Ken Robinson
The most recent Direction of Automated Criminal Justice Information ~
terns shows virtually all existing Criminal Justice software (whether developed under the federal guideline above, or by a local agency without
benefit of such paternalistic guidance) to be written in COBOL or FORTRAN.
Sincerely,
";j~t.Kt~
Community Crime Prevention
MRJ/amc
Sundry comments on Pascal
Standardization: I fully support the current moves for standardization of Pascal,
however I beleive a number of minor changes should be made to Pascal before such
standardization takes effect.
I disagree with Prof. Wirth's sentiment (PUGN #8)
that changes should not be made to "Standard Pascal" as "it would seem unfair to
suddenly declare that what once was a Pascal compiler now suddenly isn't any longer.
Standard revision must be prepared to add or even change features to a language if
there are compelling reasons for doing so, and as a result it has to be accepted
that compilers will be obsoleted and require change.
Pascal should be kept alive
as a language; standardization could sound the death knell of Pascal somewhat
earlier than necessary.
FORTRAN standardization provides an example which should
not be followed - FORTRAN is of course dead; many people do not realize it.
1I
m
N
Exponentiation: The exponentiation operator should be part of Standard Pascal.
The look of disbelief when a Pascal programmer first discovers that it doesn't
exist!
Complex: 'Complex' should be added as a predefined type. Have you ever tried to
convince a sroup of Electrical Engineers to use Pascal? They work most of the
time in the. complex domain and when you explain how you do complex arithmetic in
Pascal
'
Pascal is surely not only for compiler writers.
who work with real and complex numbers.
We cannot ignore programmers
Semantics, Axioms and Undefinedness: The comment is frequently made that Pascal
"leaves undefined the action of a CASE where the expression evaluates to a value
not matched by a case label" (PUGN #6 p60),or some such similar comment,. usually
implying that the action is left to the whim of the implementor.
Nonsense! The observation above is quite precise: the action is undefined not
arbitrary. Just as the action of mUltiplying two boolean expressions is undefined.
We seem to have become accustomed, due to our experiences with badly implemented
software or even hardware, to confuse lIundefined ll with "arbitraryll. Surely if an
action is undefined we expect good software to detect such an infringement of the
semantics and to signal an error? Incidentally there is no analogy between a case
statement with no label for a particular value of the case-expression and a if-then
statement in which the boolean expression; the semantics of the latter are quite
well defined.
On the above question and many others the axiomatic definition of Pascal by
Hoare and wirth [lJ is very clear and I am surprised that this paper is not
referenced more frequently within discussions of the semantics of Pascal.
The case-statement: I fundamentally lean towards Wirth's position that the case
statement should not have an exception case (else label) but one particular
exercise has fairly well convinced me that such a facility is necessary.
The exercise: write a reasonably portable lexical analyzer in Pascal.
Solution 1: Use a case-statement to classify the next character. Then all characters
will have to appear as case labels, but many/most of the characters in ASCII/EBCDIC
are unprintable (at the least) which certainly does not aid documentation. Some
characters may even be all but impossible to include in the program, for example
chr(O) in the CDC character set does not always have a character representation;
the ETH compiler gets around this one by predefining a constant (undocumented)
COL = chr (0) ~
Solution 2: Guard the case statement using a set as follows:
if next character in set of characters of interest
then
case
-- nextcharacter of
end
else
Useless~ due to the severe constraints on set of char in most implementations
(see below).
solution 3: Guard the case statement by selecting a subrange as follows:
if (nextcharacter >= first character of interest)
and(nextcharacter <= last character of interest)
then
case
-- nextcharacter of
end
else
OK for ASCII but not of much help for EBCDIC.
in solution 1 remain.
In general the problems encountered
Solution 4: In desperation you might abandon the case statement and use a mapping
vector to map from char to an enumerated scalar type. This solution eases the
portability problems but at some cost: the mapping vector is neither easily nor
efficiently tnitialized in Pascal!
Conclusion: the case statement remains attractive, but an exception case label
appears to be necessary when disciminating on an expression of type char. I
beleive the exception case is not necessary for expressions of another type.
Note: the lexical analyzer in the ETH compiler is not a good solution to the problem,
being solution 1 above. Unfortunately (or fortunately) the CDC character set is
small enough to mask most of the problems which arise with larger character sets.
Set of char: I am inclined to go further than Arthur Sale (PUGN #9,10 p66) in
relation to minimum set size. Rather than picking an arbitrary number such as 32
I feel it would be better to insist that every Pascal compiler should support
set of char for its particular character set(s). There is nothing to stop the
compiler optimizing in the case of smaller sets of course.
Without the above requirement sets containing characters must be banned from
programs which are required to be portable, and surely many if not most large
programs should be portable.
For statement: While agreeing with Arthur Sale's comments on the semantics of the
for-statement (PUGN #9,10 p66) I disagree with his suggestion of describing the
semantics in the form of an equivalent Pascal sequence. A similar scheme was used
in an earlier Pascal Report and was rejected in the axiomatic definition of Pascal
[lJ for reasons of over specification. The definition of the for-statement given
in the axiomatic definition is not open to the same ambiguity as that discussed
by Arthur Sale since the concept of "assignment to the control variable" does not
enter the axiom. Nor does the axiom say anything about the final value of the
control variable, i.e. it is "undefined" (see above).
All of the problems associated with the control variable are removed if the forstatement is implemented in such a way that the control variable is local to the
statement (as does AlgolW and dare I say Algo168) 1 the value of the control variable
after executing the statement is beyond discussion since the variable no longer
exists! I strongly urge that the Pascal for-statement be implemented in this way
and note that it is only an ~plementation change - the semantics as defined in the
axiomatic definition are not changed at all.
Files: I must disagree strongly with many of Arthur Sale's numerous criticisms of
Pascal's file type. A file is definitely a valid data structure and it is one of
Pascal's strengths that file is but another predefined structure and not some
strange special object. True! Pascal, at the moment, only supports sequential files
and there are other file structures which are ignored, amongst which direct access
could be singled out as a file organization which should be supported. I would
disagree with wirth's second thoughts (PUGN #8 p23) of substituting "sequence"
for ufile"; perhaps the qualified "sequential file" instead of simply "file" is
preferable but I feel that the word "file" is required as a reminder to the
programmer that this structure will in general reside on secondary storage.
Why is an array of files an absurdity? Done any merge sorting lately?
As for file lifetime and scope being bound; doesn't this give you the perfect
realization of a temporary file associated with a particular process? The anomaly
of the lifetime of external files and their apparently different scope is removed
by my suggested change to the program statement below.
The program statement: Pascal's program statement has been frequently picked on
as "an importation from CDC FORTRAN" and as some kludge to allow external files
to be specified. There seems to me that there is a lot of truth in these observations but the real problem is that the program statement should have the same
form and function as the procedure statement. After all a program is really only
a distinguished procedure which is called from an outer block (level 0) which
represents the external environment.
."
rn
ttl
;:0
=
J>
;:0
-<
I would like to see the syntax of Pascal changed (as shown in the syntax diagram
below) to allow declarations to be placed at level 0 and for the program statement
to have the same syntax as the procedure statement except for the replacement of
procedure by program.
I assume a number of restrictions will be required, for
example a program may be declared at level 0 only and there must be only one program
- but maybe you could have more than one program?
Example:
Old syntax:
program foo(input,output,myfile) 1
The effects of this change are manyfold:
var
the files input and output would be declared implicitly at level 0 and thus simple
:2:
myfile: text;
external file parameters would now be declared as var parameters;
New syntax:
programs could reference input and output without specifying any file parameters
in the program statement;
program
foo(~
input,output,myfile: text);
external procedures and functions could be declared in their correct environment
and, assuming the compiler compiles an object of class "module", external procedures
and functions could be compiled separately without awkwardly (and usually erroneously) imbedding them in a dummy program environmenti
a program may now possess formal parameters other files.
Reference:
an
1. C.A.R. Hoare and N. Wirth: An Axiom~e Veninit{on
the P~og~g
Language Pa6eat
Acta Informatica ~, 335-355 (1973)
blockhead
***
unsigned integer
SPECIAL TOPIC: PASCAL STANDARDS
1-----'fr--~identifi8r~r------------------;
1-4---_ _---1...--_ _ _ _ _
block
module
&,______---'
(* Andy Mickel and Jim Miner *)
We (Jim and Andy) feel that it is a good time to review what is happening with Pascal
standardization and bring new PUG members up to date.
We believe it is essential to have a tight, officially standardized base language especially
on which to develop conventionalized extensions.
ISO STANDARD Pascal
In general, events are going very well in the effort to obtain an official standard. In a
very short time (less than a year) the effort is more than half done. For those of you
who haven't read PUGN #8, Tony Addyman is obtaining an official ISO (International
Standards Organization - the people entrusted with, for example, the metric system of
measurements) Pascal standard. Tony began to organize a British Standards Institute (BSI)
working group after the University of Southampton Pascal Symposium. It is passing on a
standards document consisting of the Revised Report with the semantics "tightened up." In
no case were new language features to be considered.
Tony is a member of the programming language committee at BSI, and his working group has met
several times (in June, September, and this January). Jim Welsh and R. Tennent have
supposedly written papers for the group which we at PUG central have not seen. So far
Tony has attended an ISO language subcommittee meeting in the Netherlands in November at
which he requested consideration of an ISO Pascal standard for the first time. A Swedish
technical committee also had representatives there to request the same thing. The French
and German representatives were also keen on the idea (the Americans were COBOL people who
"were not interested at this time."). A superior committee of ISO had to decide the
question, and after the necessary applications are made it should be on the ISO agenda by
late March (Ken Bowles" letter quoting 3-5 years notwithstanding).
One problem has been that up until now, all programming language standards have been
American (ANSI) standards and that ANSI has cooperated with the rest of the world. For
example the ISO COBOL standard is simply a couple of sentences which says to refer to the
ANSI standard. In other words, precedents do not exist for an ISO standard starting from
scratch. Apparently a group recently pushing for ISO ALGOL-60 standardization was helping
do the work to set precedents on procedure. The ALGOL-60 effort has been stymied, and ISO
is now considering mechanisms for advancing a language standard. As Tony puts it, the
UK has the conscience of Pascal "in its pocket because the UK proposed first."
We at PUG central have stated before our reluctance to go through a lengthy ANSI process
for a standard. COBOL, BASIC, and FORTRAN ANSI standards were long in coming. No one that
we know of has proposed going through the American National Bureau of Standards (NBS).
This may perhaps be an easier route. But we endo~se the current.E~ropean effort to
standardize Pascal - after all it is a language wlth European orlglns!
The Swedish technical committee announced their existence to -PUG with a letter from B~ngt
Nordstrom (in this section), and sent "Yet Another Attention List.'~ .We really appre~late
that and we're glad to see contact with the British. Further, Ollvler Lecarme has ln the
past'told us of the Pascal sub-group he coordinates in AFCET (the French counterpart of
ACM). We understand that the Germans are also organizing as a result of the successful
Pascal Conference in October held by the German ACM (see Here and There).
CONVENTIONALIZED EXTENSIONS
Pierre Desjardins wrote us on 77/10/13: "Have you given any thought as to how to proc;~d
once you (we, "the pascalers") decide to conventionize an extension of Standard Pascal.
Good question. Going back to last year in PUGN and at the University of Southampton
Pascal Symposium, we developed a consensus which directed the standards.effo~t t~ do
precisely what Tony is doing. Further, areas exist (such as those outllne~ ln Nlklau~
Wirth's letter in PUGN #8) in which there is no point in having different lmplementatlons
add similar constructs in different ways. ~o, if an implem~ntor chooses.to ~xtend Pa~cal
in a certain direction, he or she should stlck to an establlshed conventlon lf one eXlsts.
Ken Bowles' letter (in this section) proposes a workshop for the purpose of getting
together a set of conventionalized extensions: We ~eel t~is ~s a good first start.
Because there is a lack of practice and experlence ln havlng lmplemented a number of
extensions (such as variable extent array parameters), the results of the workshop should
not be interpreted as a final act.
LAUNDRY LISTS OF ADDITIONAL FEATURES
Pascal is often mistaken as a SIL (systems implementation language). Although it may be
good for writing compilers, Pascal without extensions cannot be used to write operating
systems, for example. We think more support should be given to making Pascal available for
general user use where there will be widespread benefit.
It is sad to see more people calling for more and more and more redundant and even whimsical
features in Pascal. Pascal's virtue is its small size (limit on the total number of
features) which has enabled its quick spread to other machines; implementation effort is
small. That's a significant fact. If you ever want to push your own language or large
software system someday, perhaps you can write it in Pascal for portability purposes instead
of straitjacket FORTRAN. So Pascal is paving the way.
With regard to these laundry lists of changes, people still seem to be forgetting things we
learned last year from discussions in PUGN: Niklaus Wirth wrote in a letter in PUGN #5, "we
must clearly distinguish between the language and the implementation ... the language is
defined by the Report alone, and intentionally leaves many details unspecified that an
implementation inherently must define in one way or another."
We think that dissatisfaction (leading to suggestions of new features/changes) may be the
result of problems in the implementation and could be solved in th~ implementation and not
by changing the language. Niklaus Wirth also wrote in a letter in PUGN #8: " ... most ...
other extensions ... belong to a different category which, I believe, has nothing to do with
the goal of obtaining a common language. Rather their primary objective is to introduce
some favourite facility suggested by either a particular application or, more frequently, an
existing operating system. Whereas I have no objection to such extensions in principle,
they do not belong in the core language, whose facilities must be understood without
reference to any particular implementation. If at all possible they should be incorporated
in the form of predefined procedures, functions, types, and variables and in the
documentation they must be clearly marked as facilities pertaining to a given system ... "
And what about the design goals of Pascal (which appear on the inside back cover of PUGN)?
Remember that the combination of these goals has to be considered. Some of the articles
we print in PUGN may unfortunately give the impression that there is a lot wrong with
Pascal because they are full of suggested changes. We are growing weary of such articles
which too often don't explain their suggested changes in the light of the design goals in
proper proport i on.
To quote Richard Cichelli, one of the world's foremost practition~r~ ~f Pascal in indust~y,
"the problem in the United States is not the lack of language facllltles, but rather mak~~g
programs understandable and to communicate them to average and below-average programmers.
We say that changes to Pascal are basically irrelevant. It is s~ far ahead of.th~
competition! It's strange that the phenomenon of real people uSlng Pascal as lt l~ for.so
many real things can be overlooked. People who need to get real work done now can t walt
for academics to come up with Utopia 84. So-called "improved" languages such as EUCLID
were announced before being implemented (shame, shame!) and are not tempered by good ole
practice and experience.
Let's examine as an example, the case for adding an exponentiation operator to Pascal. One
of the design principles of Pascal is not to hide time and space efficiency costs from t~e
user. An exponentiation operator makes it easy to be wasteful beca~se we dare say tha~ ln
FORTRAN, its most frequent use is to square a number. (Pasca~ ~rovldes a square ~un~tlon
(SQR) which can be compiled in-line for efficiency.) The addltlon of an exponentlatlon
operator confuses the evaluation of arithmetic expressi~ns . . Is -2**3**2.= -512 o~ :6~ or
64? Of course parentheses can be used, but exponentiatlon llke subtr~ctlon and dlvlslon
(but not multiplication and addition) is not associativ~ (or ~ommutatlve ~or that matter).
Also exponentiation is hard to axiomatize (like real arlthmetlc) so that lS probably another
reason why it was left out of the base language.
But by using the principle of extending the language th~ough predifined ~dentifiers, simply
predefine a function called power (as suggested by sectlon 11 of the Revlsed Report:
real;
function power ( x, y: real)
We know of implementations which have easily done this.
As a last thought, we don't think people should look at Modula, a langu~ge developed by.
Wirth for time-dependent ("real-time") programming, to find features WhlCh can necessarlly
be viewed as improvements. Modula's design goals are different. For one thing it is a much
smaller language than Pascal, and its syntax is stripped down, too. Modula is another
experiment, and we think it is an interesting one, but Modula will not replace Pascal in the
forseeable future.
Pascal COMPATIBILITY REPORT
To end on a bright note, on 77/12/19 we received an excellent report by Arthur S~le:
Sale, A.H.J. (1977): "Pascal Compatibility Report", Department of InformatlOn
Science Report R77-5, University of Tasmania.
.
which should be of interest to the standards working groups and we hope they obtaln a copy.
The abstract reads: "This report collects implementation variations between significant
Pascal compilers for the edification of users, the education o~ comp~tibl~ software writers,
and the influencing of implementors. In most cases, the behavlour clted lS a result of
(a) an explicit loophole allowed by the User Manual or the Revised Report, or (b) an
undefined loophole left by these documents. An attempt has been ~ad~ to document important"
differences only, not local extensions, nor areas where great devlatlons are to be expected.
A special note reads: "The information contained in this report is dated at November, 1977.
Since compilers change with time, and the ones on which the tests were m~de cannot always be
certified in mint condition by the author, caution is to be used in relYlng on.any
information found here. A future edftion of this compatibility report may be lssued as more
information is available."
The main report consists of a series of two-page sections containing a test program.and the
responses made by compilers to it and the questions posed. The responses are sometlmes
abbreviated to cut down verbiage at the expense of accuracy.
Test programs include: boolean expressions~ const declaractio~s, identif~ers, for loops
1, 2, 3, and 4, pointer types, set types, wlth statements, varlables, varlant storage.
Compilers used in the preparation of the report were the Burroughs B6700 (Tasmania),
CDC 6000/Cyber 70 (Zurich), ICL 1900 (Belfast), ICL 2900 (Southampton), Univac 1100
(Copenhagen), and the DECsystem 10 (Hamburg).
-n
rn
co
:::0
=
J>
:::0
-<
Department of
December 9, 1977
1977-11-30
COMPUTER SCIENCES
GOTEBORG
Yet another attention list
Dear Andy,
There is a growing interest of Pascal in Sweden,
both in industry, universities and other governmental
inGtitution~. There arc h0Jf-n-doz0n ~rou~~ working
with implementations of Pascal of some variety.
This interest has lead to a couple of meetings with
implementors, users and possible users. These meetings
have resulted in the creation of a technical committee
for Pascal in Sweden.
Swedish Technical Committee on Pascal
Department of Computer Science
Fack, CTH
S-402 20 Goteborg, Sweden
3.
Terminology: This section should cover all relevant terms
and expressions used in the definition of the language
(associate, identical, correspond, denote, undefined,
scope ... ). These should be defined, explained and/or listed
The goals for this committee are to:
for easy reference.
- critically analyze current definitions and implementations
of Pascal in order to discover problematic spots.
Special symbols:
nil is here listed as a reserved word.
- suggest a standard for implementation of Pascal which
solves most of these problems.
It is however conceptually a predefined constant comparable
- work for getting an international standard for Pascal.
to "true" and "false". The ETH-compilers view in fact nil
- in a second phase develop
as a predefined constant and you may redefine it.
- a programming standard for Pascal
- a standard for extensions of Pascal
Comments m2_y
- a "very" portable subset of Pascal.
not always be removed! They should be
considered as equivalent to space instead.
We have been in touch with the Brittish standardization
group. Vie find it very important that an international
standard group will be created. Otherwise there will
be several national variants of Pascal, which probably
will be hard to follow since the computer market is
very international.
4.
"values of scalar types" to first sentence (cf. Burnett-Hall).
The phrase: "Their association .•. " is neither clear nor
sufficient. What type of asso~iation? What about record
definitions and with-statements?
We would like to get in touch with any group working
with some sort of standard and also with implementors
and their lists of problems in the definition of Pascal.
Yours sincerely,
Identifiers: Add "programs", "fields and tagfields in record",
6.
Terminology: The terminology for description and
classification of types and their properties is obscure
to say the least (cf. below) .
The members of the committee are:
... associates an identifier with the type. array A of B is
a type. What is the associated identifier?
Per-Olof Lundberg, L M Eriksson, Kft, Fack
S-431 20 Molndal
Hans Lunell, Informatics lab, Linkoping University,
S-581 83 Linkoping
Lars MOSSberg, Volvo Flygmotor, Box 136,
S-461 01 Trollhattan
Bengt Nordstrom, Dep:t of Computer Sciences, CTH, Fack,
S-402 20 Goteborg
Staffan Romberger, Dep:t of Computer Sciences, KTH,
S-lOO 44 Stockholm
Ake Wikstrom, Dep:t of Computer Sciences, CTH, Fack,
S-402 20 Goteborg
6.1.1.
Scalar types: This term is in the subsequent usea to denote
at least three different things:
- all simple types;
- all simple types except real;
- the types that are described in this section.
UM-5A (p 34) states that they are given the values 0,1 etc.
Real: Is real a scalar type? Note that scalar types are
"ordered set(s) of values by enumeration"!
en
en
9.2.2.2. Why not change the syntax to:
6.1. 2.
Standard types: Are they predefined scalar types or
::=:
predefined simple types?
It is not good
Char: UM-2D (p 14 f) also describes some properties that
are shared by all implementation (cf. also Axiomatic
9.2.3.3. The manual and the report is not in agreement about the
semantics.
case : Certainly not every
typeidentifier.
6.2.4.
=
rn
Defini tion) .
6.2.2.
programming practice to jump between case
list elements.
9.2.4.
It can be argued that the with-statement evaluates its
only once. This is part of a more
file of : Restrictions on type should be clearly
general problem: The philosophy of Pascal is to leave
stated.
certain things undefined so that a program which relies
Can a file be a part of other structured types?
on these undefined constructs is not portable. It is
Can new be applied to a file?
assumed that such a program is poorly written. But is this
the right way to prevent people from making bad programs?
It is usually not the same person who writes a program and
8.
evaluated (b+a)+c, but not as a+(c+b). What about a*b+c*d?
8.1. 2.
who transports it. The wrong person is punished.
Sequences of operators: The expression a+b+c may be
10.1,
Should passing of predefined procedures and functions
11.1.
as parameters be prohibited?
10.1.1. (l)What happens to eoln at reset of a text file?
(2)It has been suggested that reset should not assign the
value of the first element of the file to the buffer
The syntax for is erroneous. The
and <> on pointer variables should be listed
m~never
possible, define typerules by a corresponding
or several in the case of generic
here.
8.2.
functions.
and <> defined in UM-App B (p 108).
11. 3.
What are the types of the result of trunc and round?
Function application: There are several things left
11. 3.
How is ordinal number defined? With
undefined here. For example, in what order is the actual
type colour
(blue,red,yellow);
parameters (evaluated and) bound?
warmcolour
red •. yellow;
Especially in connection
with functions one has to consider side-effects, global
var
variables etc.
begin
c:colour; w:warmcolour;
c:= red; w:= red;
what is ord(c) and ord(w) and what is ord(-l)?
11.1.4.
9.1. 3.
\->
00
11.1.
Sets:
-<
'I
(for a Boolean b): or b.
Pointers:
=
:J>
<.D
variable.
possibility allows you to write
8.1. 4.
t::O
:::0
var i: 1 .. 10?(5ee also the axiomatic definition: §1.3-1.4)
8.1. 3.
rn
:::0
Is type-checking of a subrange done only in assignments
or in arithmetic too? Is pred(succ(i)) always legal, where
-n
What is the significance of leading zeroes in a label?
Should succ of the last and pred of the first value
of a scalar type be explicitly illegal?
UNIVERSITY OF CALIFORNIA, SAN DIEGO
BERKELEY • DAVIS • IRVINE • LOS ANGELES • RIVERSIDE • SAN mEGO • SAN FRANCISCO
INSTITUTE FOR INFORMATION SYSTEMS
SANTA BARBARA' SANTA CRUZ
MAIL CODE C-021
UCSD
LA JOLLA, CALIFORNIA 9209_1
30 Dec, 1977
To Andy Mickel
PASCAL User's Group
Subject: Standardized PASCAL Extensions
As discussions in PUGN have made clear, many people in the
PASCAL user community feel it mandatory that PASCAL be extended in
various ways, either for specific applications, or to make the
language easier to work with in general. A large subset of the same
people are also very much concerned because all the extension
activity seems to be leading PASCAL into the same multi-dialect state
that characterizes BASIC.
You and others have ventured the oplnlon that the evolution of
PASCAL has already progressed beyond the stage where there is much
hope of obtaining formalized standardS, via ANSI or ISO, for more
than the language described in Wirth's revised "Report". One U.S.
representative to the ISO language standards activity told me
recently that it is not unusual for an item to take 3 to 5 years just
to be put on the agenda for ISO consideration. Those who cite the
short (two years) time it took to standardize MUMPS should recognize
that MUMPS is used primarily by a close knit user community concerned
with a fairly small range of applications.
My feeling, shared by many others, is that PASCAL is now being
accepted so rapidly as the base language for practical system
programming that there is no time for formal standardization to be
completed before extended versions of the language come into very
widespread use. In that environment, defacto standards are likely to
prevail, and there may be many defacto standards as is the case with
BASIC.
As an alternative to formal standardization, you have already
proposed that there might be formed sev.eral quasi-standard extensions
to PASCAL covering specific application areas. At a small PUG
meeting, held in Seattle during the recent ACM Convention, it became
apparent that numerous large industrial firms are preparing to use
PASCAL as the base language for serious system programming. The point
made repeatedly is that these firms find it necessary to extend
PASCAL to make this practical. The nature of the extensions generally
falls into several familiar areas which have been mentioned already
in the pages of PUGN - particularly random access facilities for disk
files. In general, each firm is making its own extensions since there
has been no evidence that anyone would come forward to coordinate the
extensions in this field of applications. The industrial people said
repeatedly that their firms would be making sufficiently large
investments in system programs using the extended dialects of PASCAL
(typically in units of Millions of Dollars) that they would find it
effectively impossible to retrofit to a standardized set of
extensions starting more than 6 months to a year from now.
I am aware that there is a subset of the current PUG membership
which feels that PASCAL should be retained by the academic community
as a basis from which to study better future languages. They feel
that extensive practical applications of PASCAL would prevent this
from happening, and argue that PUG should not assist in the effort to
make PASCAL a practical alternative to BASIC, FORTRAN or COBOL in the
world of computing at large. Judging from the rapid ~rowth of PUG
membership among those who wish to use PASCAL for practical purposes,
I would guess that the great majority of the membership would (very
soon if not now) favor pressing on with the promotion of PASCAL as
the next major language. I would also guess that, lacking leadership
from PUG or someone else, there will be a wide divergence of opinion
on what constitutes PASCAL in this sense.
The PUG membership should also be made aware of another large
scale activity that is sure to have a big impact on the PASCAL
community, like it or not. This is the project at the United States
Defense Department currently known as "Ironman". The ambitious goal
of this project is to force all development of so-called "embedded"
system programs to be done in a common programming language that we
can refer to as "000-1". The range of programming activities
currently excludes the major business applications, which tend to use
COBOL, and scientific applications, which tend to use FORTRAN.
Embedded system programming is reputed to cost 000 more than $3
Billion per year, much of it redundant or inefficient. The
expectation is that common use of the new language will make this
activity more efficient by a significant amount. At present the
Ironman project is waiting for delivery, expected in February 1978,
of reports on preliminary language designs from four contractors all
of whom are working from an overall specification published by 000
last year. All four are reported to be using PASCAL as their base
language. The overall specification makes it appear very likely that
000-1 will differ slightly from PASCAL within the range of the base
language, and it will contain many important extensions very similar
to those already being discussed for industrial and commercial system
programming. If all goes well, 000 expects to start implementing
early in 1979, after a round of additional refinements based on the
reports due this year.
"'T1
rn
ttl
:::c
=
::t>
:::c
-<
It is probable that any possible quasi-standard extended PASCAL,
as discussed in this note (I'll call it PASCAL-X from here on), will
differ in some respects from 000-1. If the Ironman 1977 specification
is held in the final 000-1 product, there will be no subset or
superset languages. If our experience with code compression is a
valid guide, this will probably rule out the use of 000-1 for
interactive program development on small microcomputers such as those
we use at UCSD. On the other hand PASCAL-X might amount to a large
subset of 000-1 and still be implemented on the micro's. A visit to
m
00
DoD in December convinced me that they too are very much interested
in using stand alone micro's for interactive program development.
Apart from the size issue, the major differences that will probably
make DoD-1 incompatible with the PASCAL base language have to do with
tightened rules to help prevent side effects committed within
functions and FOR loops. A persistent rumor that I have not yet been
able to check is that Niklaus Wirth himself has had a hand in
recommending that these rules be included in DoD-1, and/or in at
least one industrial firm's version of extended PASCAL.
At the Seattle ACM meeting, and on several occasions since then,
I have asked representatives of large industrial firms interested in
using PASCAL for serious system programming whether their companies
might be willing to participate in a 'workshop' convened to seek a
consensus on PASCAL extensions among such firms. The implication
would be that the influence of such a group of firms would be great
enough to make the consensus language, PASCAL-X, a defacto standard
for those interested in PASCAL for practical system programming. The
verbal responses I have received so far have been enthusiastic and
affirmative.
Lacking an alternate invitation, we propose to convene such a
workshop here at UCSD during the forthcoming summer, probably for
several weeks during July. In order to have a reasonable expectation
that the workshop will indeed emerge with consensus on a sUbstantial
range of extensions, it will be necessary to limit the attendance to
a maximum of about 30 people. Attendance will be by invitation only.
Those attending from industrial firms, and from government agencies,
will be asked to pay a registration fee of several hundred dollars to
help pay the expenses for running the workshop. In addition to paying
the fee, these organizations will be asked to give credible
assurances that the participant(s) they send will be able to
influence their employers to use the resulting consensus language.
Approximately three quarters of those attending should be from
organizations which will have made investments in practical system
programming uses of extended PASCAL exceeding 10 person-years by the
end of 1978. We would hope to attract a small number of academic
experts who enjoy the widespread confidence of large subsets of the
remaining PASCAL user community. The aforementioned fee will cover
the expenses of these experts, and of a small UCSD.group (mainly
students) who will serve as the staff of the workshop.
As a plan of action for the workshop, we propose that those who
expect to participate should begin circulating position papers and
proposals regarding features they wish to see included in the
expected consensus language PASCAL-X. Though we have no formal
commitment from them, it appears likely that the Defense Department
group will allow us to use the language descriptions resulting from
the Ironman project as part of the set of position papers. We assume
that the Ironman papers will allow a moderately accurate projection
to be made regarding the description of the expected DoD-1 language.
Assuming that our conjecture is correct, that DoD-1 will amount to an
extended version of the PASCAL base language with few
incompatibilities, we will urge the workshop group to make PASCAL-X
as compatible as possible with DoD-1. Naturally, we will insist that
PASCAL-X remain faithful to the overall philosophy embodied in
Niklaus Wirth's original design. Wherever incompatibilities with the
base PASCAL language seem frivolous they will be strongly
discouraged.
The workshop will probably consist of relatively short plenary
meetings on most days in the weeks when it is in session, plus
smaller working group meetings on specific topics. I plan to chair
the plenary meetings, as convener, in the hope that I may be able to
keep the attending group focussed on the objective to reach consensus
on as large a set of extensions as seems important to most of the
group. To assure reasonable acceptance of the results of the
workshop, most decisions will have to be reached by consensus - i.e.
with the acquiescence of virtually all of those attending. Except for
our own extensions associated with the pre-declared type STRING, and
with the READ statement for interactive implementations of the INPUT
file, we at UCSD still have relatively small investments in the
specific syntax of most other changes or extensions to PASCAL. We
will circulate position papers regarding these matters.
Copies of this note will be going directly, with invitations, to
representatives of the firms that we already know are likely to be
interested in participating in the workshop. Since we may not know
about others, readers of this note in PUGN should feel free to
contact us. Please bear in mind that we are a small group, and
currently close to saturated for communications with others due to
the high interest in our software package. For a reader who thinks that
his/her firm should be on our invitation list for the workshop, a brief
letter explaining why would probably be the most effective way to get
started.
..,.,
rn
ttl
=
=
=
-<
J>
Bowles
Director IIS
-0
:J>
=
rn
en
lD
Implementation Notes
PORTABLE
Pascal P4 -- How (Non-) Standard is it?
GENERAL I NF 0 RMAT I ON
A number
general:
of
short
comments are in order about this issue and our editorial policies in
Some of us at Pascal News
have
implementation~ "Standard
seen
a
Pascal"
disturbing
simply
trend
recently
to
label
differs from the standard in a number of significant ways. We have compiled the
_ INDEX: The index near the end of this issue covers the Implementation Notes from last
issue (/19-10) and this. issue. Earlier issues are not referenced because: (1) they are
out of print, and (2) the information in them was summarized and updated in #9-10.
_ Corrections:
Unless otherwise stated, the information in this
issue supercedes the
information in #9-10. We received several corrections (and complaints) about incorrect
information in #9-10. As
~
policy, we print the information that we
have
available
At the suggestion of Rich Cichelli we start with
next issue to print the source code of programs which are known
practice
of
writing
software.
to
be
useful
in
the
the
Rich will be editing this section, and programs may be
submitted to him for consideration. We also encourage criticism and
comments
on
these
programs. Rich's address is: 901 Whittier Drive, Allentown, PA 18103, USA. Also, Tom
Tyson (DECUS SIG)has offered to distribute software at cost. Details are not yet clear
to us, but Tom's offer is quite encouraging.
---- Pascal Variants:
We have decided as a policy to print notices of machine-dependent
implementations of Concurrent Pascal, Modula,
etc.,
in the
"Machine
Dependent
Implementations" section. Also, the "Index" will not discriminate between the variants
of Pascal. Notices of general interest will continue to appear in the "Pascal Variants"
section.
Checklist:
When
submitting
Data
implementation notes please use the Checklist (#9-10, page
60), and send dark camera-ready copy (see Policy, page 2!). As we begin to concentrate
more on applications~
standards, and software tools, we will be less willing to rekey
following
Systems Development;
Consultants; Suite 302; 1894 Commercenter West; San Bernardino, CA
92408),
using P4.
-Jim Miner
1. P4 implements nil as a predeclared constant, and forward as a reserved word. The
standard indicate;--that nil is a reserved word, and forward is not listed as a reserved
word.
-----
2.
P4 does not support the standard comment delimiters { and }.
3.
P4 does not provide the standard predeclared identifiers maxint, text, round, ~, or
dispose. Further, the following standard predeclared identifiers are recognized, but are
flagged as errors: reset, rewrite, pack, and unpack.
4. P4 does not require a program heading. Further, where a program heading is included,
P4 does not require it to contain a parameter list.
5.
P4 does not allow "non-discriminated variant record types"; i.e., every variant record
must have a tagfield. The standard does not require a tagfield.
6.
material which is not properly prepared.
z
rn
and also based on our own experience with P4. In no way do we intend this
list as
a
criticism of the authors of P4; rather we hope to raise the awareness of implementors
to
us. Although this sometimes leads to confusion, we have found that printing incorrect
information causes people to send corrected material
when they might not have done so
otherwise.
Software Tools, and Applications:
list of deviations, based on a list sent to us by Ted Park (Director,
Medical
P4-based
because they are based on P4. In fact, P4
P4 does not allow a ";" before the "end" in a record type.
(See the P4 Bug list,
item
3. )
- Jim Hiner (78/1/5)
7.
P4 does not implement any of the following file-related features:
~
Declarations of file types, variables, and parameters.
The standard predeclared type text, and the standard predeclared procedures reset,
rewrite, and ~.
AP P LIe AT ION S
The requirement that standard files input and
header if they are used.
HELP WANTED!
of
the
must
appear
in
the
program
Access to non-text files via the standard procedures read and write.
Output of Boolean expressions, or output of real exp~ions in the fixed-point form
If PASCAL is to make any inroads into serious scientific computing (currently the almost
exclusive preserve of FORTRAN) it must have a decent library of scientific subroutines which means, as far as the U.K. is concerned, that there must be a PASCAL version
output
(r: ex1: ex2) via the procedure write.
8.
P4 does not support formal procedure or function parameters.
9.
P4
NAG (Numerical Algorithms Group) library.
It should be possible to make
machine-dependent features being
method of production of the
ALGOl 60 versions, together with
a PASCAL NAG library largely machine-independent with all
collected into the "X"
routines.
Probably
the
library would be a straight transcription of the existing
the writing of the set of "X" routines for each different
range of machines.
does
not
allow
set
constructors
containing
the
subrange
notation
(e.g. ,
['0' •• '9']).
easiest
10. P4 does not support goto statements which jump out of the procedure or function in
which they occur. (In fact, P4 has a bug wherein it fails to diagnose such goto's, and
treats them like "local" jumps -- see the P4 Bug list, item 6.)
Please send your views on this matter, and offers of help, to:
Pascal P4 -- Bug Reports.
Professor D.W. Barron,
Computer Studies Group,
Department of Mathematics,
The Univers ity,
Southampton, Hants, S09 SNH, United Kingdom,
who is coordinating this project and negotiating with NAG.
We
have received several reports of bugs in P4, in addition to Updates 1 and 2 which were
printed in Pascal News #8. Since Zurich has not promised support on P4 we intend to
print
such reports here, including fixes when possible. Also, to make sure that they are widely
known, we are reprinting Updates 1 and 2 from Chris Jacobi. These should already be
included in the P4 distribution tapes.
~
~
00
The
list
following
Univers ity
of
O.W. van Wijk
News) •
is
based
on
bug
reports
from:
Juha
Heinanen (Computer Center;
11.
Tampere; P.O.Box 607; SF-33101 Tamp ere 10; Finland;
(931-156111»,
(TNO-IBBC; P.O. Box 49; Delft, Holland; (015-138222», and Jim Miner (Pascal
change:
tu:
P4 bugs not affecting portability.
12.
Insert after PASCP.461:
IF LGTH = 0 THEN ERROR ( 205)
ELSE
On line PASCP.1079
change:
to:
IN [IDENT,CASESY]
IN FSYS + [IDENT,CASESY]
~
C/)
n
:x>
Correct error numbers.
r:2:
rn
~
13.
Write end of line on last line of listing, and also flag errors in all cases
on
the
last line ..
Replace P.555 with:
IF LIST THEN WRITELN(OUTPUT);
IF ERRINX > 0 THEN
BEGIN LIST := FALSE; ENDOFLINE
Assure non-compatibility of different length strings.
Insert after P.145:
AND (FSPl~.SIZE = FSP2~.SIZE)
Allow ";11 between field list and "end" in record type.
-0
10 THEN
6 THEN
On PASCP.2277 and on PASCP.2285
change:
ERROR(125)
to:
ERROR(116)
Disallow zero-length string constants.
2.
Correctly diagnose "write(f)".
On P.380
14.
C/)
'I*:
I-'
I-'
END
P4 does not diagnose forward-declared procedures and functions which are not actually
defined. No fix has been submitted for this bug.
P4 portability-related bugs.
Correct comment.
On line P.307
change:
to:
5.
The items listed here involve implementation dependencies.
(*LOD*)
(*LDO*)
15.
On line PASCP.1772
change:
to:
to:
:= 0 TO 58 DO
:= SETLOW TO SETHIGH DO
16.
Insert after PASCP.2893:
WHILE DISPLAY [TTOP] .OCCUR <> BLCK DO TTOP := TTOP - 1;
TTOP1 := TTOP;
Replace PASCP.2895 and PASCP.2896 with:
LLP := DISPLAY [TTOP] .FLABEL;
Correct comment.
On line P. 500
change:
to:
8.
9.
(*lJP*)
(*UJP*)
Allow label definition inside of a with statement.
On PASCP.3153
change:
DISPLAY [TOP]
DISPLAY [LEVEL]
to:
Avoid spurious "undefined forward type" diagnosis.
Replace PASCP.1368 and PASCP.1369 with:
END
ELSE LCP2 := LCP1;
LCP1 := LCP1~.NEXT
10.
Correctly diagnose "read(f)".
On P.347
change:
to:
8 THEN
5 THEN
Implementation Notes
SET OF O•• 58
SET OF SETLOW •• SETHIGH
Diagnose set declarations exceeding implementation defined limits.
Replace PASCP.1275 to PASCP.1278 (inclusive) with:
IF LSP1 <> REALPTR THEN
IF LSP1 <> INTPTR THEN
BEGIN GETBOUNDS(LSP1,LMIN,LMAX);
IF (LMIN < SETLOW) OR (LMAX > SETHIGH) THEN
ERROR( 169) ;
NEW(LSP ,POWER) ;
WITH LSP~ DO
BEGIN FORM := POWER; SIZE := SETSIZE;
ELSET := LSP1
END
END
ELSE ERROR( 169)
ELSE ERROR(l14)
Correct failure to disallow non-local gato's.
7.
Correct declaration of set values.
On PASCP.85
change:
Correct generation of set cons tants ..
17.
On some implementations it is not safe to allow tests of (in-) equality on arrays and
records. This is because P4 does not guarantee that all storage units within an array
or record type are accessible to the programmer, due to alignment considerations. The
following changes disallow such comparisons, except for strings.
Replace PASCP.2826 and also replace PASCP.2831 with:
ERROR(l34) ;
PASCAL - P4 Installation Parameters
intsize,realsize,charsize,boolsize,setsize,ptrsize:
Number of addressable storage units to be reserved for variables of type integer,
real, character, boolean, set, pointer. As to 'setsize', remember that a set must
be able to hold at least 48 elements if you intend to use the system to bootstrap
the compil er.
intal,realal,charal,boolal,setal,ptral:
Variables of the corresponding types will be given an address which is a multiple
of these alignment constants.
I-'
lD
'-J
00
stackelsize:
Minimum size for a value on the expression stack. The expression stack is that
portion of the stack which is used for the evaluation of expressions.
'Stackelsize' has to be equal to or a multiple of 'stackal '.
Concurrent Pascal
COMPlITER SCIENCE DEPARTMENT
22 September 1977
Su.VAToaI CoMPUTEI. ScIENCE CENTU.
stackal:
Alignment constant for a value on the expression stack. 'Stackal' must be a
multiple of all other alignment constants and must be less or equal to
'stackelsize' .
UNIVERSITY OF SOUTHERN CALIFORNIA, UNIVERSITY PARK, LOS
~"IGELES,
CALIFORNIA 90007
Dear Colleague:
strglgth:
Maximum length of a string. (In fact all strings will be of length 'strglgth').
A string must be able to hold the character representation of a number (real or
integer) with its sign. The minimum length for a bootstrap is 12.
I am pleased to announce that the distribution of Concurrent Pascal tapes
has been resumed. The two tapes contain copies vf the Solo Operating
System and the Sequential and Concurrent Pascal compilers. The system
is ready to run on a PDP 11/45 system and can (with some effort) be moved
to other minicomputers.
intbits:
Number of bits used for representing an integer without the sign.
integer is:
2intbits_ 1
To obtain the system tapes, please contact
So the largest
sethigh,setlow:
Maximum and minimum ordinal values for the element of a set.
ordmaxchar,ordminchar:
Maximum and minimum ordinal values of the character set.
Depending on the alignment conditions there may be two possibilities for the assignment
of store on top of the expression stack:
_ Each stack element requires the same amount ,of store. In this case 'stackelsize'
has to be greater than or equal to the maximum of the other size constants.
(Remember: 'stackelsize' is a multiple of 'stackal').
_ No waste of store: A new element on the expression stack has to be placed at the
next position allowed by the alignment constant 'stackal '. In this case
'stackelsize' has to be less than or equal to the maximum of the other size
constants.
Thanks to George Richmond for sending us revised Pascal-P ordering information.
Mr. George H. Richmond
Computing Center
University of Color~do
3645 Marine Street
Boulder, Colorado 80309
Concurrent Pascal and three model operating systems written in the language
are described in
P. Brinch Hansen, The Architecture of Concurrent Programs.
Prentice-Hall, Englewood Cliffs, New Jersey, July 1977.
The compiler is described in
A.C. Hartmann, A Concurrent Pascal Compiler for Minicomputers.
Lecture Notes in Computer Science 50, Springer-Verlag, New York,
N.Y., 1977.
I am interested in hearing about any experience you may have had in using
Concurrent Pascal.
Pascal-P may be ordered from:
In Europe, Asia, and Africa:
In Australasia:
In North and South America:
Chris Jacobi, Institut fuer Informatik, ETH-Zentrum,
CH-8092 Zuerich, Switzerland.
(*last published cost was SFr 160 for
configured compiler - do not prepay;')
Carroll Morgan, Basser Dept. of Computer Science,
Univ. of SydDey, NSW 2006 Australia.
U'last published cost was $A30 ,,)
George Richmond, Computing Center: 3645 Marine, Boulder,
CO 80309 USA. ('·'new prices: $60 for tape,
documentation, and overhead, please prepay,
and $30 additional for configured
compiler. ;,)
PASCAL VARIANTS
Pascal-S
(* See the Checklist and letter from Rich Cichelli under CDC 6000 in the Machine Dependent
Implementations section. *)
Per Brinch Hansen
CONCURRENT PASCAL DISTRIBUTION
George H.
Richmond
Septembe" 1977
Concurrent PASCAL is a variant of
PASCAL
developed
by Per Brinch
Hansen
while
he
was
at the California Institute of Technology.
This
system is implemented for the POP 11/45.
It includes the Solo Operating
System, the Sequential
PASCAL
Campi leI",
and
the Concurrent
PASCAL
Campi leI".
The
software
suppl ied
is
ready
to
run
for
a suitably
configured
POP
11/45 system.
It
could
be
transported
to
other
minicomputers as the bulk of the code Is written in PASCAL.
The
University of
Colorado
is distributing Concurrent PASCAL In
cooperation with Per Brinch Hansen following the publication of his most
recent book liThe Architecture of Concurrent Programs"
by
Prentice-Hall
in
July 1977.
This book describes the Concurrent Pascal system.
It fs
not included in the
documentation distributed by
the
University of
Colorado.
The
materials available
include
two
magnetic
tapes containing a
complete copy of the Solo Operating System for loading onto a RK05
disk
pack
on
a PDP 11/45 computer and a source and vi rtual code copy of the
Solo programs for listing on any computer.
Documentation
includes
two
reports
not
included
in "The Architecture of Concurrent Programs" and
other items or suitable replacements as follows:
en
Li terature about the Programming Language Pascal (5 pages)
A Note on the Concurrent Pascal Tapes (2 pages)
Concurrent Pascal Implementation Notes (2B pages)
Sequential Pascal Report (46 pages)
TEXT FI LES «SCll)
A text fi Ie conSists of one or more I ines.
Each
1 ine conSists of
zero or more characters terminated by a LF character (decimal value 10).
(There are no CR characters.)
A text
fi Ie is terminated by an EM
character (decimal value 25 ).
The cost may be paid in advance by check (payable to
the University
of
Colorado)
or a more formal purchase order and invoice mechanism can
be used.
Concurrent
PASCAl. can be mai led from
the University ot
Colorado to outside ot North America for the addttional cost of air-mai 1
postage.
•
< 1 i ne > LF
The Solo system consists of a Single-user operating system written in
Concurrent
Pascal and a set ot ut1! ity programs written in a variant of
Sequential Pascal.
It includes two multi-pass campi lars for
Sequential
and Concurrent Pasca 1 (see:
P. Br inch Hansen, The Programmi ng Language
Concurrent Pascal, IEEE Transactions on Software Engineering 1, 2.
.June
1975) •
The Solo system was bui 1t only
development of Concurrent Pascal.
It
programm1 ng
(but can be made so) •
following machine configuration:
< 1 i ne > LF
EM
The text is packed into blocks of 512 characters.
So aline may
begin
in
the middle of one block and end somewhere in the next blocK.
The character's (if any) I.\;'hich follow the EM character in the last block
of the file are irrelevant.
A text file is also terminated by an end of
fi Ie mark on the tape (just as any other fi 1e).
to support
Per Br inch Hansen I s
is not convenient
for casual
The Solo system require. the
VIRTUAL CODE FILES
- POP 11/45 computer with floating-point arithmetic
- Memory management and 4BK words of core storage
- Line frequency clock KW11-L
- Disk cartridge drive RK11-D
- Teletype terminal LT33
code
fi Ie consists of
16-bit binary integers.
Each integer is
output as two 8-bi t bytes.
The 10",'('r order 8 bi ts
are output
f; rst,
foll0'... ed by the higher oreer 8 bits (this is due to the byte addressing
of the PDP 11/45 computer).
This configuration allows editing and
recol'lpilation
of
compi lers.
The system also supports the following peripherals!
both
When a tl3p~ is reproduced on another machine,
the bytes should
therefor\? be output
in exactly the same order in which they ar"e input
from the tape.
- Magnetic tape unit TM11 (9 tracks, BOO bpi)
- Punched card reader" CD1 1-A (BO co 1umns, 1000 cards/mi n)
- Line printer LP (Data Printer Corp., 132 columns, 600 lines/min)
The virtual code is packed into blocKs of 512 8-bit
bytes each.
A
code
fi Ie
is terminated by an end of fi Ie mark (just 1 iKe any other
f i 1 e) •
The Pascal campi lers generate code for" a virtual machine that can be
simulated on a variety of 1S-bit minicomputers.
(The Sequential
Pascal
campi leI" was moved to another minicomputer in one man-month.)
.."
0:1
This tape contains.2 files.
The
first
file
(of
blOCk)
is an
autoload prcgN~m that can copy the second fi Ie onto a disk pack on a PDP
11/45 cor.,puter.
The second file (Of 4800 blOCkS) is a complete copy of
the Solo disk paCk.
Distribution Tapes
;;0
=
~
;;0
-<
The SOI.O COPY tape is a magnetic tape (9 tracks. BOO bpi,
600
feet)
containing a complete copy of
the Solo system.
It also contains an
autoload pr"ogram that can copy the system onto an RK05 disk pack on a
PDP 11/45 computer".
This tape can only be used on a PDP 11/45 computer with double-length
floating-point arithmetic, memory management. 48K words of core storage,
line
frequency clo...:k KW11-L,
disk cartridge drive RK11-D 1 teletype
terminal LT33 (or an equivalent terminal), and magnetic tape unit TM11.
The SOLO FILES tape is a magnetic tape (9 tracks. BOO bpi, 600
feet)
containin;.! copies of
all
Solo programs
in alphabetiC order.
Each
pr"ogram is stored both as Pascal text (ASCII code) and virtual code (16bi t integers).
Th i s tape can be used to 1 i st the programs on any computer.
The system can be moved to another computer by rewriting an assembly
language program,
called
the system kernel, that Simulates a virtual
machine and 1ts periper"als.
The tape contains a copy of the kernel
for
the PDP 11/45 computer (4K words).
SOLO FILES TAPE
This tape contains 116 files.
The first file is a
text
f1le
that
lists all
the other files.
The other 115 files are copies of the text
and code fi les of the Solo operating system.
Cost
Concurr"ent PASCAL Order Form
1.
Oocumentat ion for Concurrent PASCAL
$10.00
2.
Distribution Tapes for Concurrent PASCAL
$50.00
3.
Over"seas Postage
4.
Tota 1 Cost of Order
8111 ing Address:
Per Br inch Hansen
CONCURRENT PASCAL TAPES
rn
SOLO COpy TAPE
To get a copy of the system, please reture the enclosed order form.
Please notice that neither Caltech, the UniversitY of Colorado,
Or
the
University of
Sourthern Cal ifornia make a warr"anty of any kind, end do
not guarantee correctness or maintenance of the Solo system.
f->
to
"-J
00
Sh i pp i no Address:
July 1977
TAPE FORMAT
Each magnetic tape (9 tracks, 800 bpi,
600
feet)
contains
several
files.
Ther"e are no labels on a tape.
I t begins with the first block
of the first file.
Each tape contains a fixed number of
files.
There
is no end of tape label.
Each
fi Ie consists of one or more blocks of 512 B-bit bytes each.
file is terminated by a single end of file mark.
[1 ... [1'
[1 ... [1 •
[1 ••• [1 •
< File 1
<
< File n
>
File 2
>
A
understand that
the distribution costs
entitle me to use the
Concurrent P~scal, system on a non-exclusive basis only,
and
that
the
se~lerS,(Callfornla Institute of Technology, University of Colorado, and
Unn/ er"slty of Southern CalifOrnia),make no warranty of any kind, and do
not guarantee correctness or malntenanCe of
the system.
I
1IIIil1
aCknowledge
the
authorship ot
the
system and retain
the names
"Concurrent Pascal" and "SalaM In all uses of It.
>
Each file contains either ASCII text or virtual code.
Signature:
Date:
-0
~
Gl
rn
TRW DSSG
One Space Park
90/2178
Redondo Beach, CA 9f)27fl
(213) 535-0312
19 October 1977
TRW
Dear Andy:
The Multi-Minicomputer Architecture IR&D Group at TRW, headed by Roger P..
Vossler, is using Per Brinch Hansen's Concurrent Pascal, to write specja:-ourpose operating systems for distributed computing research. Although Hansen's
Concurrent and Sequential Pascal compil ers generate vi rtua 1 code for an ideal
machine which is implemented by an interpreter, we find that for some applica·
tions this approach can compete successfully with real machine code running
under a general purpose operating system. One of the advantages of Concurrent
Pascal is that its compile time enforcement of access rights eliminates many
potential time-dependent run time errors.
We have developed a number of utility programs to supplement those available on the SOLO distribution tape. Other work has involved writing device
drivers for additional 10 devices, improvements to the co~pilers, and an experimental kernel with all 10 drivers removed and rewritten in Pascal. Future
plans include moving the interpreter and parts of the kernel to microcode on
machines with WCS, such as the PDP-ll/60.
(ii)
The VALUE statement for presetting global variables has
not been implemented,
(iii)
The procedures "off" and "arnongll have not been implemented.
Their effect can be obtained by other means within the
language.
The following run-time systems are available.
(i)
(ii)
A similar nucleus for the PDP-ll/OS, including the out-ofline routines for division and multiplication, requiring about
(iii)
A simple system for running "sequential" MODULA programs under
RSX-llD.
200 words,
J.B. Heidebrecht
Checklist mentioned is listed
Dependent Implementations section. *)
under
A structured test set of about 100 programs to test the
sequential parts of the language, and
(ii)
Many device driving MODULA programs (including those given
by Wirth) for testing the full language.
We have device
drivers written in MODULA for the DL-II, KW-IIL, RK-Il,
AR-ll, GT40, CA-IIF and many other DEC devices.
DEC PDP-II (Redondo Beach) in the Machine
(ii)
TELEPHONE 0904 59861
DEPARTMENT OF COMPUTER SCIENCE
Professor of Computer Science: 1. c. Pyle
1-'
(i)
(i)
HESLINGTON, YORK, YO! SDD
13 September 1977
Dear Mr Mickel,
A MODULA Compiler for the PDP-l1 computer
Providing a cross compiler for the INTEL 8080 that runs on the
PDP-llj40.
An initial version of the code generator and runtime system is now complete.
Our initial conclusion after
development of this version is that the 8080 is unsuitable for
an efficient version of MODULA,
and
Making the compiler run under UNIX.
We have just applied to the Science Research Council of Great Britain
for funds to support a programmer who would look after the MODULA
compiler maintenance and distribution.
Until we know the result of
this application we will not know what distribution scheme we will
adopt.
In the meantime", we would like to hear from any PASCAL
Newsletter reader who would be interested in receiving the compiler so
that we may gauge the interest in this work.
We would also be
interested in knowing what areas of application potential users have
in mind.
A recent copy of the Pascal Newsletter asked for details of any
compiler for the programming language MODULA.
We are writing this
letter to inform you and the readers of the Newsletter about the
existence of a compiler written at the University of York and
completed in the spring of 1977.
Our initial conclusions on MODULA, together with further details on the
compiler, are given in
The York MODULA compiler is written in BCPL and is structured in
four passes using a sequential binary stream for communication
between the passes.
The present version of the compiler runs
under RSX-l1D and requires a 16k partition for the compilation of
a program of about 1000 lines.
The compiler output is MACRO-ll.
A paper presented to the 1977 IFAC/IFIP Real Time Programming Workshop
held at Eindhoven, Netherlands, on 20-22 June 1977.
To be published
by Pergamon Press.
All of the MODULA language as defined by Wirth has been implemented
with the following exceptions.
Yours Sincerely,
(i)
All names must be declared before use, thus mutually
recursive procedures are not possible,
en
The compiler and its run-time system have been tested using:
UNIVERSITY OF YORK
Modu1a
and
So far the compiler has not been distributed to any other institution.
At the present time our efforts are directed towards providing full
external and internal documentation of the compiler (we hope to produce
a document similar in style to Hartman's description of the
Concurrent PASCAL compiler) and putting the present RSX-llD system into
a presentable package.
Our present development work is:
Sincerely,
(* The
Including a "loader II to overwrite the operating
system, the nucleus requires about 150 words of code,
Although we are unable to serve as a distribution center, we are interested
in exchanging ideas and programs with other users of Concurrent Pascal. An
Implementation Checklist for our implementation is attached.
JBH:nc
A nucleus to allow MODULA programs to be run on a base
PDP-ll/40.
J. HOLDEN & I. C. WAND:
MODULA' •
(Experience with the programming language
g'
We have a very limited number of preprints of this paper available.
() .'1,j~''P
• Holden
--
~~.
1.
C. Wand
"rn
to
;:0
=
»
;:0
-<
ponent accesses if regularity is attempted, this feature, too, is virtually un-
FEATURE IMP LEMEN TAT ION NOTES
implementable on machines which use descriptor-based memory organization, and
in particular on the Burroughs B6700.
UNIMPLEMENTABLE FEATURES - WARNING
This note addresses some features I have noted others adding to their PASCAL
Arrays and records in this machine are not stored on-stack, rut are allocated
compilers which I condemn as particularly nasty because they are not implementable
memory on demand, this memory being described by an on-stack descriptor word.
on the Burroughs B6700 system and possibly on other computers.
great potential features is that of portability.
One of PASCAL's
make a plea to everyone
In the B6700, this descriptor is memory protected by its tag-field (an extra
3-bit memory field), and the "RETURN FROM FUNCTION" instruction (RETN) does not
not to introduce features that are not implementable on all computers, and to
recognise a descriptor as a legal value to return: it expects an operand value
remove any that presently exist.
as represented by an integer, real, etc (with tag-field = 0).
Consequently
attempts to return such va 1ues wi 11 a lways crash due to the" I NVALI 0 OPERAND"
(I)
Passing pointer values as
Seen in PN #9/10, page 40.
addre~ses.
interrupt.
even in-stack.
The following program is allowed to execute, storing
The
the (stack) address of x in p:
~
way around this problem that does not totally destroy the architectural
features of the B6700 (thereby slowing it manyfold), is to:
program P;
var p
t integer;
x
integer;
begin
(a)
turn interrupts off,
(b)
shift the local PASCAL stack up
(c)
adjust the dynamic and static stack activation record pointers to
by one word,
correspond to the shift,
x:=I;
p:=tx;
(d)
{the horrod
implant the return descriptor into the caller's stack in the free
word created under the make-stack word, and
end.
Since the concept 'address' does not exist in some computers, and notably not
in the Burroughs B6700 in the sense used here, this is virtually unimplementable.
(e) turn interrupts back on.
have omitted some important features which maybe
could be resolved, like how
Stack-addresses are generally not computable segment addresses have two compon-
the returned memory get de-allocated, but this should suffice to show that this
ents; and any contortion made to try to implement this feature will cause either
is really impossible.
serious security risks, or explode all pointers into requiring two words of
48-bits for storage (with a time penalty too), or destroy the structure of B6700
programs making them CDC-like.
Pointers are not necessarily
address~s;
a point
(3)
Allowing pointers to file-types and the use of new{file)
Observed in correspondance, on Univac PASCAL.
program P;
which seems not to be widely realised.
var p
c
The restriction in the PASCAL report was there for a reason:
leave it there.
t file of char;
char;
begin
The feature should not exist, or should only be available when specifically
new{p);
enabled by a computer directive.
reset{pt);
(2)
read{pt,c)
Returning function values of all kinds except files
end.
The Report. allows one to define functions which return values which may be:
*
*
And it will execute.
scalars of all types,
The following will compile:
In the Burroughs B6700, file-descriptor-blocks (the oper-
ating system's status area for a real file) must reside in the task's st,ack.
reals, and
;, po inters.
They cannot reside in some other area such as the heap as they will not then be
It has been proposed to extend this permission to all types except file-type.
closed and de-allocated by the operating system's block-exit procedure, and the
(PN 9/10, page 48).
ensuing mess will be horrible to contemplate.
were also
omitt~d
The omission of file-types is a blessing, but the others
for a definite purpose.
Apart from the invention of array
and record temporaries on the PASCAL run-time stack (which do not otherwise
occur), and the greater difficulty of distinguishing recursive calls from com-
fi les.
Moral:
beware what you do with
rn
CONPILING BOOLEAN EXPRESSIONS -
The User t1anual, our second "standard" document is thankfully more
THE CASE FOR A "BOOLEAN OPERATOR" INTERPRETATION
In some recent correspondence, I became aware that there might be
some argument about the correct way to implement boolean expressions
in PASCAL.
This argument arises partially because the "standard"
generally preferred implementation method for evaluating boolean
expressions.
is in error!
the consensus area is perceived by some to be "restrictive".
I wish
here to argue two points:
that the consensus area outlined in the "standard" documents
should be preserved, and
*
It says:
"Boolean expressions have the property that their value may be
known before the entire expression has been evaluated. Assume
for example that x=O. Then
(x > 0) and (x < 10)
is already known to be false after computation of the first
faetor, and the second need not be evaZuated. The rules of PASCAL
neither require nor forbid the evaluation of the second part in
sueh cases. This means that the programmer must assure that the
seeond faetor is well-defined, independent of the value of the
value of the first faatoI'. Hence if one assumes that the =ray
a has an index ranging from 1 to 10, then the following program
documents of PASCAL do not say the same things, and partially since
*
explicit.
that a IIboolean operator'l interpretation be regarded as the
:x:=0;
repeat x:=+l until (x > 10) or (a[x) = 0)
(User Manvnl, pp 20-21)
The problem area
The essential problem is related to complex boolean expressions, for
/I
While this comment only covers some of the possibilities, it is quite
example:
explicit as far as it goes.
(a < 0) £!:. (b > c)
Are both relational expressions evaluated, followed by a logical or-ing
of the result (the boolean
op~o~
interpretation), or is the first
factor evaluated and only if it gives false is the second factor
evaluated (the 4equential eonjunction interpretation)?
I give, if a,b
&
op~o~
or the 4equel"..tJd c.onjunction approach. (Perhaps this freedom is
regrettable, but that is a question of language or standard criticism.)
In the example
c are all simple variables, the t\10 evaluations give
identical results.
If you accept the authority of the User
Manual, implementations are at liberty to choose the booiean
If however there could be side-effects, whether
This would seem to dispose of my first question: the consensus area
reserved for implementors in the standards.
Now, which is preferable?
intentional ones due to funcdon evaluations, or unintentional ones
This is a quite difficult question (impossible to resolve in abstract),
due to undefinition of values, then the two possible implementations
and hinges around three points:
may give different execution results.
Hhich is an implementor to
*
regularity,
* efficien~y,
choose?
1<
and
portability.
The "standard" documents of PASCAL
The Revised Report does not specify the semantics of an expression, except
Regularity
by a rather remote impl ication.
One of the guiding principles-of PASCAL is parsimony of concepts.
It simply states the syntactic rules for
expressions, prefaced by an introduction which says:
"Expressions are eonstruets denoting rules of eomputation for
obtaining values of variables and generating new values by the
applieation of operators.
Sequenees of operators of the same preeedenee are exeeuted
from left to right . ...... "
(Revised Report #8)
In
general, one expects expressions to be evaluated as they are written, and
this is the practice for all expressions in existing PASCAL compilers,
apart from the cases we are now considering.
Regularity therefore
suggests that treating boolean operators just like all other operators
(both left and right side operands are evaluated) is the more regular
approach.
Certainly a naive student learning how to program is likely
to assume this when tracking down an elusive bug, though a programmer
conditioned by exposure to other languages might not.
There is little semantic guidance here, except to imply that all operators
are intended to be applied.
Particularly
is this the case if the boolean expressions become even mre complex than
the ones I or Wirth give.
=
rn
Time-efficiency
Existing compilers
The evaluation of a complex boolean expression might be quite
I cannot speak for all compilers. because I don't have access to them
time-consuming.
all.
Obviously, minimizing the number of things to be
Of those I knO\v. we have:
evaluated \"ill alvlays payoff for sufficiently complex expressions,
more especially if function evaluations are involved.
Just where the
break-even point comes (if it exists) depends upon whether the boolean
expression is in a jwnp eontex.t as in.!.i., while or repeat, or in a
va1.ue eontex.t where it
~
deliver a boolean value.
It also depends on
on a Burroughs B6700 in toto, than by sequential conjunction.
This arises
because conditional branches flush the instruction buffers (lookahead), and
delete the top-of-stack value.
On a DEC PDP-II, this would be reversed.
On the other hand, involving a function evaluation in the second
sequential conjunction
CDC 6000 seri es
ICL 1900
PASCAl-P (all of them)
C/)
Burroughs 66700/7700
the machine architecture of the target computer.
For example the sample expression I gave first is faster to evaluate
boolean operator
Other factors
I have said before that PASCAL does not have a good standard, and this
can be illustrated here too.
Nowhere in the "standard" documents is
it required that a compiler .,hich implements sequential conjunction
eva 1uate the 1eftmost factor first.
I don' t th ink any exi st i ng compi 1er
is that clever (they are largely one-pass) but an optimizing compiler
factor as in
might quite easily decide to evaluate a simpler second (or third)
(gtyptr = realptr) and compatible(gtyptr,ltyptr)
would always be faster evaluated by the sequential conjunction method.
factor before the leftmost one. It seems reasonably certain that
some PASCAL compiler will attempt it if the language has a reasonable
future to go.
Space-efficiency
Unlike speed, which tends to be dominated by the properties of a small
proportion of a program, space occupied by code depends upon the properties
of all the code.
Since typical PASCAL programs have a fair number of
boolean
sequential
operator
conj unct i on
-
boolean expressions, compactness is also a desirable property of a compiled
boo I ean express i on eva I uat i on.
Here the dec i s ion cou I d go either \vay,
depending on the machine architecture, or could exhibit a cross-over
(as with the Burroghs B6700's time-efficiency). Again to give examples,
"a:=b and c"
better
speed
?
-
better for complex
expressions
the n6700 alViays requires less code space for the boolean operator
interpretation (the most extreme case
regularity
requires 8 bytes
or 18 bytes for the two approaches), and the reverse situation holds
space
?
?
portab iii ty
better
-
in the DEC PDP-II.
As happens so often, we end
Portab iIi ty
desirable properties.
u~
comparing incomparables: efficiency vs
Fortunately for me, the Burroughs 66700 architecture
Any implementor must be cognizant of the effects of a compiler on the
un i forml y favours the method ,.i th the bes t propart i es, and there was no
likely portability of the programs written under its umbrella.
confl ict.
a preference here?
Is there
The answer is fortunately relatively clear: a compiler
that implements boolean expressions just 1 ike all other expressions is
This \.i 11 not be so in other computers where a comparison
does not give a boolean result, but sets condition codes or some such
hardware fudge.
likely to lead to the detection of more illegal PASCAL constructs (1 ike
"[6
a eompileJt. -fA Wended
pOJr. teac.hlng
that instanced by Wirth) by run-time errors before they leave the system
Let me
supposedly debugged.'
llegu!aJU:ty -fA hnpoJt:ta.nt and e66,[ci.e.ney not). 01l,.[6 :the pllomotion
Since part of the role of a compiler is detecting
illegal constructs (as well as compiling legal ones), the
eonjun~n
6eque~~
interpretation can be seen to reduce the portability of
PASCAL programs.
My, tha;t
puJtp06 U
(60:that
06 pllogllam ,.[1'l.:teJt.eha.nge -fA llegaltded M hnpoJt:ta.nt, then the cJ1.O,.[ee 6eem6
quUe cleM :to me: boolean opeJt.a:toJrh 6hou1d be hnplemented
and eveJty 6ac.:t0Jr. eva1.ua.:ted.
M
6ueh,
Only in a compUelL wlU.c.h -i.6 ct-i.med at plwdue-i.ng op:tim-i.zed code. 06 lugh
qu.a..U;ty wou.td .u
and
you ha.ve.
:;;c
-<
I--'
"-.I
00
is issued at this point.
Masquerade:
The most important case to detect: this may successfully compile on both
tel
:;;c
c.D
S ibl ing:
This is a distinct name which is so treated on the B6700, but will result
but would possibly execute with quite different effects.
-n
rn
during the subsequent entry of the name into the table.
v:=initial;
if (final - initial)
~
0 then begin
repeat beg i n
MAC HI NED EPEN DEN TIM P LEMEN TAT ION S
s'
v:=v+l
end unti 1 v > final;
Alpha Micro Systems AM-ll
end;
See DEC LSI-ll (San Diego).
The consequences are
(i) the order of execution is el, e2, assign to v.
Identical to PASCAL-6000
Andromeda Systems ll/B
ANOROMeo~
and 86700.
(ii) the exit value of v if the loop is never entered is el.
sys,eMS.
(iii) the exit value of v if the loop is entered is (e2 + 1).
Additionally, the controlled variable can be altered from within the loop, and
this alteration affects the progress of counting.
It is interesting, and sad, to note that all three compilers reported so far
have different answers to my questions (ii) and (iii).
The uniform answer to
November 21, 1977
question (i) is perhaps a sign for the future ...
Professor A.H.J. Sale,
Department of Information Science,
University of Tasmania.
Mr. Timothy 1"1. Bonham
D605/1630 S. Sixth St.
Minneapolis, MN 55454
Dear Timothy:
Thai1k you for your inquiry about our ll/B System.
standard product literature enclosed.
You will find our
In regard to your specific questions:
FOR Statement
- Robert A. Fraley
1.
IBM 370 (UBC Version)
HP 3000 (Forthcoming)
(2 31 on IBM.
We have been in communication with Ken Bowles and nis
assistant ~ark Overgaard. Based on our discussions
we have no reason to believe the UCSD Pascal won't ~ork
on the II/B.
(If we were to offer Pascal directly it
would be UCSD Pascal.)
,
3.
I'm not familiar with the systems mentioned so I can not
comment on them.
There are no limits except for word size.
Currently 215 on the HP, but double word integers
may eventually be supported.)
For the IBM version, optimizations are made in several cases:
a.
If the limit is a constant, it is not stored in temp 2.
b.
In order of decreasing efficiency, the loop forms are:
If you should have any further questions, please don't hesitate to contact
me.
down to 1
down to constant
to constant
<
to constant
vari?b 1e 1imi t
,,0
2.
The program behavior matches that of the CDC 6000 version,
as printed in PUGN #9.
We are considering offering Pascal with the II/B.
final decision has been made yet.
224 (with initial value ~ 0)
14701 ARMINTA STREET NJ PANORAMA CITY, CALIFORNIA 91402 (213) 781-6000
f-I
<.D
'-I
00
Burroughs B5700 (Edinburgh)
Burroughs B6700/7700 (Tasmania)
Department of Computer
Science
Arthur Sale sent us a very
implementation: B6700/7700
impressive (about 170 pages) manual for his B6700/7700
PASCAL Reference Manual (R77-3; July, 1977). Arthur also sent
~n. interesting report entitled "Th~ Use of Tag Six in a Pascal
37-39 Grassmarket, Edinburgh EH1 2HW
Heriot-Watt University
Tel 031-2258432 031-2265601 Ext
Compiler"
(R77-4),
the use of words w~th tags of six in the PASCAL implementation for the
Burroughs B6700 developed at the University of Tasmania. It involves questions of language
definition, undefined values of variables, and machine design. 1I (From the abstract.)
Head of Department
Mr. A. Mickel,
PASCAL Users' Group,
277 Experimental Engineering Building,
208 Southeast Union Street,
University of Minnesota,
Minneapolis,
Minnesota, 55455,
U.S.A.
Professor A Balfoul, MA, FIMA, fBCS
Both
of these reports are published by the Department of Information Science, The University of
Tasmania, G.P.O. Box 252C Hobart, Tasmania 7001. (* Thanks Arthur! *)
your ref
Burroughs B6700/7700 (San Diego).
our ref
date
ABjKM
30th November 1977.
In
PA
Dear Mr. Mickel,
I thought it was about time that I let the PASCAL Users'
Group know about the implementation of PASCAL that we are
running at Heriot-Watt University on our Burroughs B5700. We
have a PASCAL translator that produces a Burroughs XALGOL
program.
It is based on the CDC 6600 compiler written by
U. Amman & R. Schild, and conforms as closely as possible to
the definition by Jensen & Wirth.
We have been using it
for almost 2 years now very successfully.
Indeed, one
colleague has almost completed writing a MODULA compiler in
~ASCAL using it.
The only major extension to the compiler
1S a cross-referencing option.
We also have a frequency analyser that can be run in
conjunction with the compiler.
This is still being worked
on to tidy it up, but works very well.
The PASCAL compiler was produced for us by an M.Sc.
student from.Oslo, Norway called Dag Langmyhr, to whom we
are extremely grateful as he continues to maintain it for
us.
The frequency analyser was written by another M.Sc.
student Mike Staker.
Recently we obtained a PASCAL compiler for our Burroughs
B1726 from Paul Schul tess of the University of Zurich.
This
has so far proved very successful with no problems.
I have
extended it slightly to allow the slightly odd character set
from our B5700 PASCAL programs to be acceptable to it.
We
look forward to the implementation of real arithmetic by
Herr Schultess.
Anybody wishing any information about our efforts with
PASCAL can contact me at the above address.
I will be
on~y to~ ~lease~ to help if I can.
We already have several
un1vers1t1es uS1ng our compiler in the USA Japan and South
Africa.
'
Yours sincerely,
which
d~scusses
a letter dated 3 November 1977, Thomas J. Kelly, 58-B Meadowlake Drive, Downingtown,
19335, wrote:
"I've changed jobs: I now work for Burroughs Corp. I exerted some effort and we are
now using the UCSD implementation of PASCAL on our B7700. For any other B7700 users
who need a compiler t you can get one from UCSD t I suppose. It's okaYt but we have
discovered several bugs. There is also a fix that needs to be installed to allow the
generated code to run properly on a B7700 (as opposed to B6700). I will send that fix
on to UCSD. I don't know if they'll put it in. If anyone wants tat they can get one
directly from me (at the above address). tI
Also see Tom Shields in the Here and There section.
CDC Cyber 18 and 2550 (Santa Ana)
Jim Fontana reports that the Implementor/Maintainer of this implementation is Gordon Wood,
CDC t La Jolla t California, and that the Distributor is Control Data Corporation t
Professional Services Division t Sunnyvale t California.
CDC Cyber 18 (Berlin)
1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Implementors: Lutz Chris toph (Kernel) and Thomas
Wagner (Interpreter); Technische Universitaet Berlin; DV-Grundausbildung; Institut fuer
angewandte Informatik; VSH 5; Otto-Suhr-Allee 18/20; D-1000 Berlin - 10; Germany. Phone:
secretariate 30-314-4893 from 8 to 13 MEZ except Tuesday.
2. MACHINE. CDC Cyber 18, Models OS, 10, and 20. Model 17 is not supported due to use of
the Enhanced Instruction Set, and Model 30 because it is a dual processor machine.
Floating point firmware and software will both be supported.
3. SYSTEM CONFIGURATION. In interpretive form
compilation. Requires a disk (cartridge or SMD).
4. DISTRIBUTION.
branch. )
Not
yet.
will
need
less
than
48KW
for
self
Later will be distributed by CDC. (Agreement with the German
5.
DOCUMENTATION. A supplement to the Brinch Hansen articles is planned.
6.
MAINTENANCE POLICY. Not determined yet.
7.
STANDARD. Brinch Hansen Pascal. Some extensions are to be discussed.
8.
MEASUREHENTS. Will be provided when system is operative.
9.
RELIABILITY.
/"
v~A~
~A.
Cooper.
co
f-'
10. DEVELOPMENT METHOD. Kernel/In·terpreter
Compiler: Development not started.
rewritten
and
cross-assembled
on
CDC 6500.
11. LIBRARY SUPPORT. As with all Concurrent Pascal implementations. (poor)
CDC 3200 (Minneapolis)
Unfortunately, the rumor printed in Pascal News #9-10 regarding John Urbanski (West Bank
Computer Center, 90 Blegen Hall, University of Minnesota, 269 19th Ave.
South,
Minneapolis, MN 55455) and the CDC 3200 i~lementation is no longer viable. John's 3200 is
being replaced by a different machine.
CDC 6000, Cyber 70, Cyber 170 (Zurich)
George Richmond has announced: (1) that Release 2 of Pascal-6000 will be distributed for
$60, and (2) that buyers may no longer send their own tapes to receive Pascal. Also, John
Strait and Andy Mickel sadly announce a six month delay in the long awaited Release 3.
CDC 6000, Cyber 70, Cyber 170 (Bethlehem)
PASCAL-I
Interactive. Conversational PASCAL-S
PASCAL-I is a version of the Wirth PASCAL-S (PASCAL subset) system
designed to interact with a terminal user. The system compiles and
interactively interprets PASCAL-S programs. It automatically formats
source text on compilation and allows the user to edit his program.
Text editing functions include GET and SAVE a file. All other editing
operations follow PASCAL scope rules (i.e. the command LIST defaults
to listing only the procedure being edited). Statements can be inserted,
erased, replaced, moved, and printed. Strings can be searched for and
changed. The REPEAT command reapplies the last edit command. There are
no line numbers; the editing scope is alw~ys very local, and none seem
needed or desired. The edit pOinter can be moved from procedure to
procedure, up and down within a procedure, and to the top and bottom of
a procedure. Entire procedures can be moved or deleted. Their levels
can be easily changed. A tree structured listing of procedure
relationships is produced by the STRUCTURE command.
The HELP command gives detailed instructions and examples for each
command. The MESSAGE command gives a full descriptive statement of
the cause of a syntax error and sometimes includes recommendations for
possible fixes. "LIST,E,M" will list only the erroneous lines of a
procedure with the full descriptive messages for each error.
The compiler automatically formats the user program on input and
re-compilation. Statements are placed on single lines and properly
indented. Data structures are neatly laid out. Comments are well
handled. and inter symbol spacing is rationally done.
The internal text is efficiently stored as linked. variable length,
blank suppressed lines. After program changes. the compiler recompiles
only the minimal set of affected procedures. The internal code is a
dynamically managed, linked group of variable length code blocks. This
internal code resembles PASCAL-S code, is position independent, highly
compressed. and exceptionally efficient for interpretive execution; the
linked data structures allow the system to perform efficient automatic
dynamic garbage collection. Code and text for statements are mutually
linked so that the run time system displays user program statuses with
actual text line references.
A user may EXECUTE or CONTINUE his program. Single statement stepping
is available. Statements or procedures may be traced. Fifteen
::0
-<
SCOPE 3.4 with INTERCOM.
00
N
8.
9.
10.
We now have a fairly complete checklist for you, which I
enclose, and some details of timings, both execution and compilation,
which Bob Berry put together. I think PUG readers might find them
interesting.
MEASUREMENTS. Interpreter and overlayed. Beats CDC BASIC hands down
in cpu efficiency (size and time), features, etc. It is the fastest
compiler on campus (because of partial compilation it outperforms
PASCAL-S), and it does very well at run time. The compiler forms
the largest overlay segment and runs at 358K
The editor 3egment
runs in about 24SK. PASCAL-I will compile and interpret PA8CAL-S
programs of up to about 500 lines as the system is currently
ccmfigured.
F.ELIABILITY.
Thanks,
Runs just great.
DEVELOPMENT ~lETHOD. Started with PASCAL-S and Wirth-Jensen I/O
routines. Built suitable data structures for storage of compressed
program source and interpr'eter code. Modified PCSYSTM to fully
recover from user aborts and system timeouts. Also added file
access primitives and moved stack and heap to low core to enable
the segmented loader to vary field length. Development took place
during April, 1977 to Octobe:r, 1977 and was a very part-time effort.
The system is about 7000 lines of tightly formatted PASCAL.
Implementor responsibilities:
Curt Loughin
Editor
i"ormatter
PASCAL-S compiler rewr He
PASCAL-S interpreter rewl'ite
Immediate code routines
Jor,r, McGrath
I/O routines rewrite
HELP conuuand
PCSYSTM mods
Richard Cichelli. (project leader)
Post mortem dump
and other run-time control and status routines
Arthur Foster.
1.
segment structure. Self-compiles in less than 60000.
- First released in July 1976. Now used at four sites, running under Scope 2.1.4.
R.E.BERRY and A.FOSTER
Computer Studies Department
University of Lancaster
Bailrigg
Lancaster
Data General Nova
3.
4.
Developed with RDOS 4.02, we also use it under RDOS 5.00, and one user
tells us he uses it under RDOS 6.10 without any trouble. We assume at
least 32K words of core, disc backing store. The present system assumes
no hardware Multiply/Divide or flcating point.
-n
Distribution: from Lancaster
2.5 Mbyte cartridge disk
Data General Cassette
in U.S.A. two people who have Lancaster Pascal have offered to oct as
distributors thus increasing the range of distribution media.
Dr.H.S. Magnuski
Gamma Technology
BOO Welch Road
Palo Alto
California 94304.
(9 trac~ BOO BPI mag tape)
CDC 7600 (Hanchester)
Peter Hayes (UlIRCC; Oxford Road; Manchester M13 9PL; England; 061-2738252) reported on 22
November 1977 several corrections to the Checklist printed in Pascal News #9-1D:
---------- Price: 30 pounds sterling (instead of 50).
- Core requirements (octal): 42402 Se11, or 36045 i f segment loaded (using a simple
Distributors/Implementors
rn
t:>:J
:;;0
=
Jim Hebert,
51 Thomas Road
Swampscott
Mass. 01907.
(9 track 800 BPI mag tape)
::t:>
:;;0
-<
'J
5.
User manual provided, Pascal User Manual and Report assumed.
6.
Maintenance pol.<.cy : No formal commitment to provide support can be given,
however, bug reports welcome. To date all kno~n bugs have been fixed and
this policy will continue for as long as is practicable.
7.
Pascal P4 subset accepted.
B.
Measurements : P-code is generated, assembled and then interpreted
00
Data General Nova (Lancaster)
University of Lancaster
Compiler core requirements (n.b. compiler uses overlays)
Release 2
Release 1
Department of Computer Studies
Ballrigg, Lancaster
Telephone Lancaster 65201 (STD 0524)
Head of Department: J A. Llewellyn B.Sc.,
M.PhiL, ERGS, ELM.A.
Compiler
(decimal)
Additional fixed table space
27th October 1977.
Deer Andy.
Hp.re at Lancaster we are just about ready to distribute the
\.ye are aiming to do this
or. or about, 25th Ncvember 1977. I;Je have already sent details to
Dr.Maqr:uski end ,Jim Hebert. They should also have copies of the
ne\·' compiler shortly.
14,055
15,505
(words)
1,092
1,197
(words)
The workspace remaining depends upon size of the ROOS system usee!.
size of program which can be compiled depends upon the number of user
defined symbols (dynamic area used) and the depth of nesting of procedures/
statements. Thus it is difficult to make any general statement acout the
size of progra'll which can be compiled, however, we observe that the
assembler for the system is of some 1,100 lines of Pascal source g"ner<:ting
7,400 Pcode instructions and we can compile this on our 32K system. ~e
cannot compile the compiler but would expect to do so with more than 32K
of core.
Th~
second relefise of Nova PASCAL Comniler.
1,~1AX
More about the test programs
Timing
9.
See attached sheet.
Reliabili ty : Release 1 was made available to our own department user<:, in
January 1977 and at the time of writing has been distributed to eight knO\;n
sjtes. No significant bugs have been reported from ext€;rnal users. ReleasE?
is at present available to our own use£s and will be available to others by
the time this appears in PUG newsletter.
10.
Develol'ment : Originally cross-co'npiled from a CDC 7600.
The P-code
asser,bler was written from scratch in Pascal; the P-code interpreter was
implemented in Nova Assembly language.
11.
Libraries : no library support in Release 1. Under Release 2 user procedures
may be separately compiled enabling the user to set up his own libraries. It
is not possible to link into any other librariES.
2:iming information for Nova Pascal Release 2
We have no+: a::; yet campi] ed the compiler
cannot give figures for that.
\-,1i
th our sys tern so
Instead to provide the basis for
our statement that the performance of our Pascal 'lcompares favourably"
with DG Algol a list of times obtained by running some well known
small, and often uninteresting programs are given. The timings are
taken from a Nova 2/10 running under RLJOS 4.02 with 32K of core
and no hard~'are multiply divide and no floating point unit. They
were (rather crudely) obtained by using the GTOD command to prefix
and postfix the CLI con~and necessary to load the appropriate program.
"Compile" should be taken to mean ",he production of a save file (.SV)
from the .3ppropriate source program.
1.
A program consisting simply of BEGIN END
2.
Matrix multiply of two 50'50 matrices of integers.No I/O
3.
Matrix multiply of 50'50 matrices of reals. No I/O
4.
Sort an array of 1,000 integers into descending order of magnitude from
ascending order of masnitude. No I/O
5.
Ackomans function (3,6).
6.
Write 10,001 integers into a file.
7.
Read 10,001 integers from a file.
8.
Generate 5,000 random integers (printing only the last).
9.
Genera'e 5,000 random integers and write to a file.
No I/O
Timings 5uch as these offer much scope for debate. It is safer
to let others draw what conclusions they will from these figures (and
any other figures that may be produced). I simply wish to observe that
interpretive Pascal "comparEe; favourably" with the code produced by DG
Algol. r" the programs used above the Algol and the Pascal looks very
much the same. No attempt is made to exploit one feature of a particular
language or implementation, and no tuning has been done. If anyune has
other examples to contribute to such timing comparisons I would be
pleased to hear ?bout them.
R.E.Berry.
Algol
Program 'H'
Compile
~
Pascal
B2!
Compile
B2!
m:s
m:s
m:s
m:s
1.
0:55
0:06
1:21
0:07
2.
1:15
1:54
1:39
2:35
3.
1:16
14:32
1:40
11:59
4.
1:10
2:06
1:38
5: 56
5.
1:09
2:52
1:37
1:55
c.
1:06
3:18
1:35
1:11
7.
1:08
1:28
1:36
1:03
8.
1:36
1:56
1:57
3:13
- A.Foster l:elieves that ~ programs both compile and execute
more efficiently in PASCAL than Algol, due to the nature of the lan~age.
He has experience writing large programs in Nova PASCAL and Nova ALGOL
over the last year and believes that the real advantages of PP5CAL are
that Nova PP.SCAL programs are considerably easier to develop than Nova
Algol programs, in his view.
GAMMA TECHNOLOGY
October 6, 1977
Dear Andy:
Thanks for the pre-release of the DG notes.
9.
4:46
4:30
Here's some new information for you.
I have made an agreement with R.E. Berry of the University of Lancaster to be a
secondary distribution point for his NOVA PASCAL. We will supply the program on
9-track BOO-bpi magnetic tape in RDOS dump format, and the manuals. The distribution
charge is $70 for the binaries of Release 1. We will collect trouble reports and
ship them to England, but all corrections will have to come from U.1. Also, we
cannot supply the program on any other media, on disks, on floppies, on cassettes, in
bottles or cans. California residents must add the appropriate sales tax.
=
During September I had a chance to run a comparision of the Lancaster PASCAL against
the PASCAL written by Ted Park now with Medical Data Consultants (formerly Loma Linda
University). First, I must compliment both authors on the ease of use of both of
these compilers. For both systems I had compiled and run a program in less than an
hour after loading the tape, and there were no mysterious system crashes or wipeouts
as one would expect with the first release of a new
used (courtesy of ROLM Corp.) was a top-of-the-line
disk. The Lancaster PASCAL was also run on my 32KW
drive. Five short PASCAL programs were compiled (a
three of the programs were executed.
Compile time (seconds)
Run time (seconds)
software package. The system
ECLIPSE C330 with DG's ZEBRA
NOVA 2/10 with a Diablo 30 disk
total of 5319 characters), and
These are the results:
Lancaster
Lancaster
NOVA 2/10
515
86
C330
242
47
Loma Linda
C330
582
299
After these tests I called Ted to ask him what his program was doing with all that
CPU time, and he described to me a long list of problem areas where performance could
be improved (changes in his macro facility, use of variable size data structures,
more efficient use of the RDOS I/O structure, revision of his paging algorithm, less
runtime e.rror checking in the compiler's P-code interpreter, etc.). He has implemented
a virtual memory scheme and makes heavy use of the ECLIPSE instruction set, so with a
little tuning up of his software I predict he'll be able to run larger programs faster
You have received a letter from Hank Magnuski comparing my
system with the Lancaster system. He pointed out several
problem areas (speed-wise, we still have found no bugs!) I
mentioned to him. Since his letter to you I have cleaned up
all these problems and am putting together a 'final' version.
I am obtaining a copy of the Lancaster compiler to do my own
internal benchmarks; I want to make detailed comparisons of
the two systems. The Lancaster version will always compile
a little faster than mine and maybe run character-oriented or
integer-oriented programs faster. I feel the strong points
of my compiler are:
1.
Total integration into the RDOS environment
2.
The exclusive use of double precision (32-bit) integers
3.
The exclusive and fast use of double precision (64-bit)
reals
4.
Ease of modification and extension.
rn
will share my benchmark results with you when I complete them.
than the Lancaster group.
The Lancaster PASCAL has a few quirks of its own, primarily related to problems of
the compiler and run-time system knowing about their environment: a subdirectory is
difficult to use, long filenames cause errors, and it doesn't work at all in the
foreground partition.
Nevertheless, my conclusion is that we have two good
implementations now available
on DG equipment.
Yours sincerely,
am still happy to distribute my preliminary version free. I
am negotiating with Hank to market the nevi version for a cost.
The exact price and distribution methodology have not yet been
established.
By the way -- It is no secret that PASCAL-P4 is a subset but has
anybody compiled a complete list of its differences? I have
begun one and will enclose it for your information. I'm sure
it is not complete and would like someone to add to it and perhaps
publish it in PUGN.
H.S. Magnuski, President
Gamma Technology, Inc.
800 Welch Ro.d
•
P.lo Alto
•
California 94304.
415-326-1661
•
TWX: 910-373-1296
Ted C. Park
Director, Systems Development
TCP:map
cc: H.S. Magnuski
Data General Eclipse (San Bernardino) (previously Loma Linda)
1894 Commercenter West, Suite 302, San Bernardino, CA 92408
MD
MEDICAL DATA CONSULTANTS
October 19, 1977
•
Dear Andy,
I received your pre-release of the D.G. notes for #9 and #10 -thanks. I have some updated information for you concerning my
ECLIPSE PASCAL system:
(714J 825-2683
DEC PDP-8 (Minneapolis)
The SSRFC Pascal Group (SSRFC; 25 Blegen Hall; University of Minnesota; 269 19th Ave.
South; Minneapolis, MN 55455 (612/373-5599) announced on 31 December 1977 that: "The
project is undergoing extensive redesign and development. We apologize to all those who
have received no response to inquiries regarding distribution. He are not distributing any
version presently. A mailing list is being maintained so that interested parties can be
informed of changes in status."
"0
:I:>
Gl
rn
00
V1
DEC LSI-ll (San Diego)
Digital Equipment Corporation (DEC) PDP-ll and LSI-ll -- Introduction.
See also Ken Bowles' article "Status of UCSD Pascal Project" in this issue for information
about Z80's, 8080's, and CP/M.
Good News: DECUS Pascal SIG was resurrected by John Barr (Pascal SIG; c/o DECUS; 146 Main
Street, PK-3/E55; Maynard, MA 01754; -OR- Hughes Aircraft Co.; Box 92919; Los Angeles,
CA 90009; Attn: John R. Barr 377/C209) who edits the bimonthly DECUS Pascal SIG
Newsletter. So far (31 Dec. 1977) we have received two issues: Vol. 1, numbers 1 and ~
dated Sept. 1977 and Dec. 1977. Number 3 is on the way. To quote "From the Editor" in
issue number 1: "Welcome to the Pascal SIG. The Pascal SIG has been in existence
in
*********************************************
k
name
OF-r'ICIAL NOTICE OF RELEI1SE OF UCSD
~
*
*********************************************
only since Atlanta (Spring 1976 DECUS). It was started again in Boston (Spring 1977 DECUS)
with a commitment from DEC (Larry Portner) to aid the SIG in the development of a Pascal
January 1978
compiler for the PDP-II computers and operating systems. 1I And from the same issue:
"The main goal of the Pascal SIG is to provide DECUS members with common Pascal
compilers for all DEC equipment. One of the highest priority prerequisites of the
effort is that such compilers will be
available
to
users
for
only
the
cost
of
reproduction through the DECUS library. Support of the compilers will rest with the
Pascal Implementation Working Group who will use this newsletter to report bugs and
fixes to these bugs.
"A secondary goal of the Pascal SIG is to report the existence of commercially
available Pascal compilers and/or compilers developed outside of the SIG which may be
of interest to users. In accordance with DEGUS policies we cannot report the cost of
such compilers but can only indicate who the users can contact for information on
them. We will publish at most one announcement per year from any company which has a
Pascal compiler available for DEC computers."
John Barr reports that the following persons are Officers of DECUS Pascal SIG:
-
Program Librarian: Tom Tyson (PUG member).
PUG/SIG Liaison: John Iobst (PUG member).
Standards Committee: Ken Bowles (PUG member) and John Iobst.
DoD-l Language Committee: Fredreck Bartlett and Don Chaney.
- Concurrent Pascal Committee:
Roger Vossler.
Anyone may join DECUS by contacting one of the following offices:
AUSTRALIA and NEW ZEALAND:
DECUS
P.O. Box 491
Crows Nest, N.S.W. 2065
Australia
EUROPE and MIDDLE EAST:
DECUS
Case Postale 340
CH-12ll Geneva 26
Switzerland
CANADA:
DECUS
P.O. Box 11500
Ottawa, Ontario K2H 8K8
Canada
ALL OTHERS:
DECUS
146 Main Street
Maynard, Massachusetts 01754
U.S.A.
This PASCAL system is our first system intended for general purpose
use awau from UCSD.
We are still making maJor modifications to the software.
and expect that you will find errOrS.
If you do find an error in our system.
please contact us before attempting to fix the problem yourself.
We may have
already found the error. and solved it.
There are many expansions yet to be
made to our PASCAL system. and hope that you will let us know what is needed.
Recompilation of object code files will be necessary on" maJor updates of
the system
Please remember that our proJect is mainly staffed by students.
We iniend to support USBrs who have paid the distribution fee within our
resources. but may not respond as quickly as a commercial vendor might. due to
conflicting university schedules.
We are offerin9 two kinds of subscriptions:
Complete subscription:
Floppy disks with all sources and code.
Compiled listings
all SDurces.
User and system maintenance documentation as complete as it
exists
Updates at least three times during the next 12 months.
$200. (paid in advance)
0'
Code subscription: Floppy disk with system code.
Users manual but no detailed
system documentation.
No continued support for later subscriptions.
Only
minimal assistance in response to telephone inquiries.
$50
(paid in advance)
The complete subscription is a years bond with our proJect.
We will
do our best to answer your questions. and keep you up to date on new subscriptions.
The code subscription is for the user who is not concerned with
our development. and Just wants a running PASCAL system.
A user of the code
subscription may upgrade to the complete subscription upon payment of $175.
Please make your check payable to:
Regents.
Please return the completed order form.
DEC PDP-ll (Stockholm)
Seved Torstendahl's implementation has become quite widespread -- it was reported (in PUGN
Checklist form!!) in the first issue of DECUS Pascal SIG Newsletter, and we have heard
from several PUG members who have used it: Jo;--Gross (Minneapolis), Steve Schwarm
(Wilmington), and Rich Cichelli (Bethlehem).
University of California
and your check to:
PASCAL GT'OUp
Institute for Information Systems
UC SD Ma i 1 c: 0 d e C-021
92093
La Jolla. CA
In a conversation with Andy Mickel on 17 December 1977, Ken Bowles mentioned that DEC is
coming out with Writable Control Store (WCS) for the LSI-ll. Ken expects that use of this
feature will speed up the UCSD system by a factor of five -- allowing it to compile 3000
lines per minute!
00
en
DEC PDP-II (Amsterdam)
*" li-.*********************************
REGUEST FOR COPY OF UCSD PASCAL *
***~******:;.;;*:;;;;*;;*;;**.*;;:;;;;**
1.DISTRIBUTOR/IMPLEMENTOR/MAINTAINER.
DISTRIBUTOR: Sources, binaries and documentation are part of
the third UNIX software distribution.
IMPLEMENTOR: Johan Stevenson, Vrije Universiteit.
MAINTAINER: Andrew S.Tanenbaum, Wiskundig Seminarium, Vrije
Universiteit, De Boelelaan 1081, Amsterdam, The Netherlands, tel: 020-5482410.
LSI-tt
PDP-tt model
] TERAK 8510
] TERAK 8510A
:I other (please specify)
]
----.---
)
2.MACHINE.
DEC PDP 11, all models on which the·UNIX operating
system version 6 will run.
The above mentioned processor has PDPtl/40 type (e. g.
'loating point hardware
Memory space available gn
~
LSI-1t EIS/FIS chip)
RKII (DEC floppy dlLk drives)
(or hardware equivalent / software transparent)
TERAK
Other (please speci.y,
l
~tlA!1!.
to I I
we may not support it,
l
l
J The above system has a
line
L
[
printe~
UD..a.tl~
with an LPII (or equivalent) interface.
devi~
to aboy£' system:
Decscope series (please specify model)
._ _ _ _ _ _ _ _ _ _ ._ _ _ _ _ .__
:1 Uatamedia product (please specify)
._______.__________________.______
Other (please specify)
.L.ljP~
[
someone else might)
~ted_:
Termlnal(s) to be attached I I
l
Q.£ r.el.!ll!. !!!!3.Il.ted:
Complete release ($200 paid in advance)
Cude release ($50 paid in advance)
No release. but keep us up to date on new developments.
Please complete this form.
and return with your check to:
PASCAL Group
Institute for Information Systems
UCSD Mailcode C-021
La doll",. CA
92093
SHIP TO:
5. DOCUMENTATION. Short manuals for the compiler and interpreter
in UNIX MAN format. A 12 page description giving details
about the implementation.
3100
RK05 (we may not be able to support all 'ormats)
Qj;Jlll
see 2.
4.DISTRIBUTION. The UNIX software distribution center takes care
of distribution.
W01"'d~;.
AED
3.SYSTEM CONFIGURATION.
process.2.!:.:
{i. e.
-n
6.MAINTAINANCE POLICY.
Bug reports are welcome. There will be
no improved release of the current system.
However, we
are working on a totally new one. Main differences with
the old one are:
a new hypothetical stack computer named EM1 (see
Tanenbaum, A.S. "Implications of structured programming for machine architecture" CACM Dec. '11). This
intermediate machine allows very compact code (only
15000 8-bit bytes for the compiler itself) and fast
interpretation. Emulating EM1 on a microprogrammable
computer must be easy. Moreover, this EM1 machine
allows compilation of other high-level languages as
well.
a new interpreter with all kinds of runtime checks
and debugging aids .
- expansion of EM1 code into PDP-11 instructions.
- less restrictions on the language Pascal.
rn
tx:I
:;:c
=
::J>
:;:c
-<
1.STANDARD. Main differences with full Pascal are:
- no goto's out of procedures and functions.
- procedures and functions can not be passed as parameters.
- extern procedures and functions not implemented.
- mark and release instead of dispose.
- only non-local textfiles (up to 15).
an explicit get (or readln) is needed to initialize
the file window even for input.
where do you want your PASCAL sent}
---.-.-----------------------------------------
-----------------------------------------
8.MEASUREMENTS.
Compilation speed: 40000 chars per minute on a PDP-11/45 with
cache.
Compilation space: 48k bytes to compile the compiler.
Very
big programs can be compiled.
00
"
execution speed: You lose a factor 8 by interpretation. However 1/0 is relatively fast.
Compared to not interpreted
Pascal on a big machine (Cyber 73)
it
is ten times
slower.
execution space: The size of the complete interpreter is 5300
bytes. The binary code for the compiler is 23000 bytes.
9.RELIABILITY. The compiler and interpreter are good.
the runtime checking of the interpreter is poor.
5.
There is lots of good comments in 'the source compiler
and supplementary information on the internals of the
compiler system have also been written. There isn't much
good information on the usage or details on the extensions
however. We used the first edition of JENSEN and WIRTH
user manual.
However
rn
::e::
6.
10.DEVELOPMENT METHOD.
The compiler is based on the
PASCAL-P2
compiler.
A Cyber-73 was used for bootstrapping. The
time needed by an unexperienced implementor was about 6
months.
11.LIBRARY SUPPORT.
DOCUMENTATION:
No library support at all.
MAINTENANCE:
en
The compiler probably will be maintained for several
years, to support the application.
It is not expected to
change much over the years -- it is quite satisfactory as
it stands. Any problems which may turn up will probablY
be worked around rather than fixed.
For instance, LABEL
doesn't appear to work altogether correctly, but we don't
use it anyhow.
DEC PDP-ll (GTE SYLVANIA)
7&B IMPLEMENTATION:
1.
IMPLEMENTORS:
Larry Drews
(Address Unknown)
Sharlene Wong (almost PUG member)
GTE SYLVANIA
P.O. Box 205
Mountain View, California 94042
(415) 966-3373
2.
David Miller (PUG member)
GTE SYLVANIA
l1203A Avalanche Way
Columbia, Maryland 21044
(301) 992-5665
David Shaw (PUG member)
STRUCTURED SYSTEMS CORP.
427 Embarcadero Road
Palo Alto, California 94301
(415) 32l-Blll
MACHINE:
As described in our paper, we probably have the most
non-standard PASCAL in the world. We are therefore its
most fearsome friend.
(PNB - p33).
The following shopping
list is a concatention of the University of Illinois
PASCAL (PN5 - p53, PNB - pSI-52), and of our own modifications.
EXTENSIONS:
- Overlay: the compiler is itself an overlay with nine
segments. The application doesn't use this feature.
- Identifiers may contain an underscore as a break
character.
- It recognizes octal constants.
Digital Equipment Corporation
PDP 11/45 and up I suppose
- Multiple assignments and imbedded statements are
supported.
McCarthy boolean expression evaluation has been
implemented.
3.
SYSTEM:
- WRITE formats may specify; octal, hexidecimal, binary,
unsigned decimal; field width; with or without
leading zeros.
DOS/BATCH-II V9.20C
4.
- Pretty print/line editor pass may be included in the
compilation. The editor line numbers are carried
through the compiler.
DISTRIBUTION:
Corporate policy has not been decided at this time.
there is enough community pressure it could be arranged.
must be emphasized that this compiler was developed to
support a single application.
If
It
A cross reference pass may be included in the
compilation.
- Compiler directives include:
list suppression
page eject
statement number code suppression (used for post
mortum trace)
00
00
CHANGES:
subscript and pointer check (execution time) code
suppression
stack size specification
comment blocks
lexical inclusion of other source files (we included
TYPE and VAR files)
conditional compilations
fast code linkage for procedures at the expense of
tracing
- Abbreviations:
BOOL, INT, PROC, FUNC
- Lexical changes:
for
\ for
"for
& for
for
#
- Post mortum trace and stack unwind.
c>
NOT
{and} limited to one line
AND
OR
- DIV (and I ) implemented as floor function to be
consistant with MOD.
- Real time procedure trace.
- CLOSE, EXTEND for files.
- WRITE f (list)
- DISPOSE and NEW with one argument.
- READ f (list)
- POINTER treats an integer as a universal pointer
variable.
- PROGRAJl parameter redefined to be consistant with the
application.
ADDR creates a pointer.
Usage of tag field in the variant record.
- NIL as zero.
- EOL.
9.
- MODULE, ENTRY to link PASCAL and/or MACRO object.
RELIABILITY:
In our controlled environment, pretty print and the
compiler have excellent reliability. However, at this
writing, there are only four users.
- EXTERNAL, ENDEXTERNAL to support data linkage.
- MACRO to imbed machine code in the PASCAL code.
- TRAP to communicate within the application executive.
10.
FIRST and LAST to get the limits of a scalar.
The compiler is written in PASCAL (about 10,000 lines)
and its father is from the University of Illinois. The
run time support package is written in MACRO (machine
language). I have no estimates on the man-hours expended
to build our PASCAL.
- EXIT from a procedure instead of GOTO.
- The compiler generates either load and go ~no linking
required) or linkable object code. The obJect
.
generated has separate instruction and data space flIes
to allow the application the greatest use of the
11/45 architecture. Because PASCAL modules can be
linked, dynamic array can be explicit~ly used. However, the compiler doesn't support thlS feature.
ANCESTRY:
DEC PDP-II (Redondo Beach)
{* Please see the letter from J.B. Heidebrecht which accompanied this
in the PASCAL VARIANTS (Concurrent Pascal) section. *)
checklist,
printed
Concurrent Pascal Implementation Checklist
DELETIONS:
WITH
SET and its support operations
REAL and its support operations
PACKED ARRAY
- lV'lAXINT
1.
J.B. Heidebrecht, R.A. Vossler, F. Stepczyk
O. Heimbigner. M. Feraud, and S. Danforth
PAGE
PUT, GET
TRW DSSG
One Space Pa rk
Bldg. 90/2178
Redondo Beach, CA
(213) 535-0312
- READLN, WRITELN
- PACK, UNPACK
- EOLN
-
(* and *)
Imp1ementors!
90278
(Original implementation by Per Brinch Hansen and Alfred C. Hartmann.)
2.
Machines:
PDP-11/40, PDP-l1/45, PDP-11/60
co
<.D
3.
Operating systems: SOLO, Experimental Development System, and user written
systems.
48 KW
Minimal hardware configuration:
memory, 1 - RK05 disk drive,
1 - 9-track
tape drive, FPll floating pOint option.
Future versions will run on smaller PDP-ll machines without floating point.
4. Method of distribution: no established policy.
5. Documentation available: (a) machine retrievable user manuals are
available for all utility programs; (b) several books and papers have
been published by Per Brinch Hansen and Al Hartmann on the operating
systems and compilers.
6. Maintenance:
DEC PDP-II (Vienna)
Distributor and Maintainer:
osterreichische Studiengesellschaft fur Atomenergie Ges.m.b.H., Lenaugasse 10, 1082 Wien, Physikinstitut
Implementor:
A portable Sequential and Concurrent Pascal compiler has been designed
and implemented by Prof. P.B. Hansen and A.C. Hartmann, California
Institute of Technology. The Compilers have been modified and a new
runtime system has been implemented by D.I. Konrad Mayer, osterreichische
Studiengesellschaft·fur Atomenergie.
no established policy.
Machine:
7. Two compilers are available: CPASCAL (Concurrent) and SPASCAL (Sequential).
SPASCAL implements most of standard Pascal. The main exceptions are that
procedures may not be nested, and only a few of the standard predefined
Pascal functions are available. CPASCAL has further restrictions on scope
rules and does not implement the pointer type. Extensions to CPASCAL
include processes, classes, and monitors, and compile time checking of
access rights.
8. Both compilers generate virtual code I"lhich is interpreted. The· interpreter
and operating system kernel are written in MACRO-ll, the PDP-ll assembly
language. Together they comprise less than 7000 statenents, and are the
only assembly language components of the operating system. Work is currently
being done to reduce the size of the kernel. The SOLO operating system is
written in Concurrent Pascal, consisting of about 1200 statements. All other
utilities, including compilers and the file system, are written in Sequential
Pascal. The compilers consist of seven passes each, totaling about 9200
statements per compiler. Compilation speed is about 240 char/sec on a
PDP-ll/45.
Digital Equipment's PDPll, all types
System Configuration:
Operating System
a) Rsxll-M (version 2 or later)
or compatible systems (RSXI1-D, lAS)
b) RT11 (version 2C or later)
Minimum memory requirements for self-compilation of the compiler.
a) RSX11M: 23 k words-part.ition
This amount can be reduced by using overlays.
b) RT11: 24 k words (including the operating system).
Distribution:
Distribution medium:
9. Reliability of compilers: very good; only one bug has been found in
nearly a year of heavy use.
Reliability of interpreter:
10. Method of development:
excellent; no bugs have been found to date.
developed by A1 Hartmann and Per Brinch Hansen.
11. Libraries of subprograms are not available. Procedures and functions to be
referenced by a program must either be included in the source file or
accessed through a procedure entry in the operating system. Facilities for
using procedures written in other languages are not currently available.
Separate compilation is available in a limited sense in two ways: (a)
commonly used procedures may be compiled and included in the operating system;
(b) a sequential program can call another sequential program.
DEC PDP-ll (PAR)
The implementation started by Michael N. Condict (PAR Corporation; On the Mall; Rome,
NY 13440; 315/336-8400) and reported in Pascal News #9-10 has been discontinued.
......
DEC-tape or floppy disk or
magnetic tape (9 track, 800 bpi).
<.0
'oJ
00
E'ormat
Files 11 or RT11 or DOS for DEC-tape and floppy disk
A "PRESERVE"-copy of a RK05 disk for magnetic tape
The package contains
- All sources and codes of the Sequential and Concurrent Pascal compiler.
- All sources and object code of the runtime system and the I/O routines.
- All indirect command files (RSXll only) for assembling and building the
runtime system.
The runtime system can execute only Sequential Pascal Programs! A system
for Concurrent Pascal programs will be available later.
- A disassembler for analyzing the generated code of Sequential and
Concurrent Pascal programs.
- Documentation
Distribution costs:
5.000,-- Austrian Schilling
including distribution media.
<.0
o
Documentation:
The compiler and the language is described in
Hartmann, A.C., A Concurrent Pascal Compiler for Minicomputers.
LGctur€f Notes in Computer Science 50, Springer Verlag, New York, NY, 1977
and in the Concurrent and Sequential Pascal Reports of California Institute
of Technology.
The distribution package includes a supplement to the reports and a description
of the runtime system.
Maintenance and Warranty:
Although every attempt has becn made to achieve accuracy and freedom from
errors, Osterrcichische Studiengesellschaft fur At.omenergie, makes no warranty
of any kind and does not guarantee correctness or maintcna_nce of the system.
But reported ~rrors will be corrected, if possible. Please report errors to
D.l. Konrad Mayer (address see above).
La~'Llage
Sta.nda,.E.d!
Note, that Sequential Pascal is different to standard Pascal. The Sequential
and Concurrent Pascal comp.ilers have been extend8d slightly (a different lexical
analyzer) to meet RSXll and RTII standards. I/O routines for handling sequential
and random access files are provided.
Measurements:
3.
SYSTEM CONFIGURATION. RSX-llD, lAS, RSTS, and RSX-llM.
4.
DISTRIBUTlpN. Send 600' mag tape. No cost.
5.
DOCUMENTATION. (* no information given *)
6. MAINTENANCE POLICY. Bug reports accepted with corrections
Newsletter.
the
DECUS
Pascal
SIG
7. STANDARD. Implements most of Standard Pascal. Exceptions are no for loops, real
arithmetic, or set operators "<=" or ">="; set operators are represented by"!" (union)
and u&u (intersection); logical operators are II-II (negation), "!" (disjunction), and u&"
(conjunction); functions and procedures not supported are: abs, arctan, ~, eoln, ~,
In, round, sin, ~, sgrt, trunc, pack, ~, readln, unpack, and writeln; predefined
terminal input and output files are INP and OUT; reset and rewrite require a second
parameter of type array [O •• N] of char representing a file specifier terminated by a
blank. Extensions are structured constants and the ability to mix the order of ~,
~, and var declarations.
.."
Heli5'bi li_t.z'_
11. LIBRARY SUPPORT. Several Pascal programs which aided in the development effort are
available. At present there is no facility for separately compiling procedures or for
linking to non-Pascal subroutines other than the run-time library.
Development method:
started with the distribution kit of the Solo system. Then we wrote
a kernel-interpreter, which can execute Sequential Pascal programs without
needing the Solo operating system. The interface to DEC's operating system
RSXll (RTll) is the virtual machine instruction CALLSY.
External assembler routines can be called via the "program prefix". Every
external routine must be defined in the program prefix and can be linked
using the standard Fortran call conventions.
DEC PDP-ll (Los Angeles)
(* The following was obtained from the DECUS Pascal SIG Newsletter vol. 1, number 1. *)
1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. John R. Barr; 377 /C209 - Hughes Aircraft Company Box 92919 - Los Angeles, CA 90009 (213/648-8295).
MACHINE. PDP-ll/35 and higher. Requires EIS.
rn
to
;;;0
=
::t>
:::c
-<
DEC-l0 (Hamburg-DECUS)
UNIVERSITAT HAMBURG
INSTITUT FeR
INFORMATIK
~Ie
External routines:
c,,?
9. RELIABILITY. At present the BSM compiler will loop and possibly abort under several
conditions. Syntax errors are reported using references to the error table in Jensen and
Wirth. The Pascal versions are expected to be much better.
10. DEVELOPMENT METHOD. The major portion of the compiler was taken from Brian Lucas' DOS
version of the compiler. The PASS2 Pascal code has been extensively debuged in about three
months of part time effort.
The portable compilers of P.B. IIansen/A.C. Hartmann are in use on some
sites on different machines. 'The first release was January 1975.
(See Pascal News, Vol. 6-10)
rn
8. MEASUREMENTS. The compiler is currently written in Block Structured Macros, and is in
the process of being converted to Pascal. It is a two pass compiler with each pass
requiring approximately 20K words of task space. Compile speed is approximately 450
characters per second. PASS2 of the compiler written in Pascal is approximately 2200 lines
which compiles in less than four minutes on a PDP-ll/45.
Compilation speed: 150 - 200 characters per second (PDPI1/45)
Execution time: 1 to 3 times of equivalent Fortran programs
The reliability of telle system is really excellent. ~le have the system in
use since one year. Up to now we have had only one minor problem with the
system.
2.
in
Prof. Dr. H.-H. Nagel
r
Inftitlrt fer laformatllt
1 Hamba... n, SdalltenmBe 66-7l
Dear Mr. Mickel,
in February 1977 I made our PASCAL compiler for the DECSystem-10
available to Digital Equipment Corp. to whom I had ceded the distribution rights. Since the envisioned distribution through DECUS
took some time I received numerous enquiries concerning our comiler system. I refered people interested in using PASCAL on the
DECSystem-10 to DECUS. I would be interested in learning whether
the distribution of our compiler version through DECUS is now
running to the satisfaction of interested users. Experiences with
the distribution of our current compiler version might influence the
way that a further improved version might eventually be distributed.
";;J
)::>
=
rn
Since I no longer know who intends to use our latest compiler version
and who is actually using it I would appreciate if you could include this letter in the next PASCAL Newsletter.
With many thanks in advance I remain
yours sincerely,
Hewlett Packard HP-21MX (Dallas)
David Mcqueen from Analyst International, Dallas, Texas, reports that he has a Pascal
system for the HP-21MX implemented in Fortran which provides direct access files.
Honeywell 6000
(* Please also see the article in this issue by James Q. Arnold entitled "A Novel Approach
to Compiler Design". *)
THE UNIVERSITY OF KANSAS/LAWRENCE, KANSAS 66045
Department of Computer Science
Dear Andy,
18 Strong Hall
29 October 1977
913 864-4482
Thanks for entering my membership in PUG.
I have read
my backissues of the PUG newsletter and find only passin;J
reference to the implementation of Pascal on the
Honeywell
66/60 under GCOS.
Pascal is a "software pr oduct" 0 ffer red
by Honeywell to installations with Series 6000 and Series 60
Level
66 computers.
The compiler originated at the University of waterloo,
waterloo,
Canada,
and
is distributed
through Honeywell (shades of WATFIV).
There are two aspects
of the implementation which will be of interest to
PUG
members:
what the
implementation should do, and what it
does do.
The Honeywell v ers ion of Pascal is an
independen t
implementation
(unrelated to CDC-Pascal or Pascal-P) and is
written in "B," an implementation language and successor of
BCPL.
It
is ccmpletely time sharing based
(compiled
programs can be run in either batch or TSS).
The compiler
has
one
restriction on Standard Pascal and several extensions.
The
restriction
is that the program statement
is
replaced by ·.Erocedu~ main;" and the dot terminator at the
end of the program is eliminated.
This has a curious sideeffect.
Constants, types, variables, and procedures (functions) may be defined Q.Y£!.il!!l. of "main" and thus allows
the
definition of a global environment which may be replicated
for externally (separately) compiled procedures,
thus allowing the global variables
to be accessed both from the
program ("main") and from the externally defined procedures.
Other
than that the compiler accepts
Standard Pascal
programs.
Of the implementation dependent features,
several
are
worth mentionin;J
here.
Ide,ntifiers need to be distinct in
the first 80 characters.
The base type of a set is
limited
to
at most" 9,437,184 elements (36 bits x 262,144 words).
The compiler distinguishes between lower and upper cases and
will recognize keywords in both case~ or in lower case only.
This is based on terminal command and means that you can use
the upper case version of a reserved word as an identifier
-- not suggested, but it can be useful.
Our typical use
is
uppercase
CONST
and
TYPE
identifiers and lowercase
variables.
The standard character set is Ascii.
There are several extensions in the Honeywell implementation.
An
alternate I/O package is provided (in addition
to the standard get, put, read, write,
etc.)
to make
interactive use easier (it is based on the RATFOR input/output
package described
in §.oftwi!.~ !.Qols,
by Kernighan
and
Plauger).
External procedures are allowed and calls may be
made to Pas ca 1 pr ocedur es or to pr ocedur es wr it ten in ot her
languages.
The declaration of external procedures is implemented as i t is in CDC Pascal with the exception that
"extern "
can be
used to declare an external
procedure in another language Currently, < language> may only
be
FORTRAN.
Extensions are planned to allow GMAP, COBOL,
Algol, PLll, B, C, etc.
An ~ls!l. clause is added to the case
statement
(and
in the record variant section) to allow
default selection.
Files may be of any type, except ~ of
file.
Files
may be
accessed and associated with a file
;;r1able at run time via a
procedure
call.
The standard
files "input" and "output" are normally directed to the terminal, but can be redirected to files by
terminal command
when
invoking a Pascal program.
Subscript checking is implemented by bounds checking on all variables of subrange
type.
Now that I have decribed the way the compiler is supposed to work, allow me to describe some of our experiences
using it.
We at KU have had access to the compiler for
approximately
10 months
(s ince January 1977).
We are currently using version 5 of the compiler and
expect
a
sixth
version by late December.
As stated earlier in this letter,
our Pascal is distributed through Honeywell.
The actual implementor
is the University of Waterloo.
This leads to
several problems; most of them havin;J to do with the
communication of bugs, suggestions, questions, etc.
The lack
of fast and accurate communications would not be quite so
important,
however,
if the
compiler worked and
if the
documentation were complete.
Unfortunately,
the
compiler
has been plagued with several very serious bugs.
When usin;J
compound structures, the compiler sometimes computes
incorrect addresses
thus resulting in memory address faults or
operation faults (where the data is unintentionally stored
over the program code and subsequently "executed").
The
compiler aborts when it encounters sane simple syntax errors
(such as using a reserved word as an identifier).
Resettin;J
an output file garbages the file.
Most of the serious bugs,
and
hence most of our complaints, center on the compiler
either aborting with no indication of what
is
wrong,
or
procucing
object code which behaves similarly.
At present,
we have found more than 30 serious bugs in the compiler; the
current version retains 11 of them (the others being fixed).
Fortunately, we now have direct contact with Waterloo and
are getting much better response to our complaints.
We hope
that by next January, most of the serious bugs will be
fixed.
As it is, a couple of people working on large Pascal
programs have almost (?) given up USing the compiler
(one
has writt-en a letter to PUG to vent his frustrations).
It
is, unfortunate that more extensive testing was not done
before releasin;J the compiler for distribution.
We are curren tly using the compil er in three
classes:
Data Structures.
Compiler Construction.
and Programming
Structures.
This totals more than 150 students each using
the
compiler several times a week. Two graduate students
are Writing an assembler and a simulator (emulator?) for the
Interdata 85 minicompute r
to a id in teaching an undergraduate course.
We are also trying to implement the BOBS
System Parser Generator
(our copy from the University of
Aarhus. Denmark).
Unfortunately. these projects are at a
standstill because the compiler either won't compile them
(the compiler aborts) or cc::rnpiles them into incorrect object
code.
But. we're all hoping for the best. so until January
and a new version ....•
I u. Ole VELUPMENT 'lET:10D. Thfl H310 k"rnfl1 i mitat"s the pnp 11 1 rflv"rs"dbyte addres5inq which makps it comoatih1fl with the distrihl)tion t"ln o
tout slow in exp.clltion. The deVfdoi'ment was don" IlndP.r W1S ;>10.
ThR kernel is wri tten in nAP700.
II. LIBHMIY SUPPORT. Those Drovided b;' th" SflLfl s'fstel'l.
=
IBM 360, 370 (Australia)
I am enclosing documentation which defines
the differences between Standard Pascal and Honeywell Pascal -this is in the form of an appendix to the User Manual and
Report.
You mayor may not want to include it in the newsletter.
It's up to you.
I am sorry not to have written
this
in the form of the implementation checklist. but I am
not the implementor -- I have talked with the folks
fran
Waterloo and
they assure me they will send you a letter.
Thanks for spreading the word.
AUSTRALIAN ATOMIC ENERGY COMMISSION
Sincerely.
NUCLEAR SCIENCE AND TECHNOLOGY BRANCH
RESEARCH ESTABLISHMENT. NEW ILLAWARRA ROAD. LUCAS HEIGHTS
Greg Wetzel
Research Assistant
TELEGRAMS:
TELEX:
ATOMRE. SYDNEY
24562
TELEPHONE:
531-0111
IN REPLY PLEASE QUOTE:
ADDRESS ALL MAIL TO;
AAEC RESEARCH ESTABLISHMENT
PRIVATE MAIL BAG, SUTHERLAND 2232
N.S.W. AUSTRALIA
GWC .mwb
4 January, 1978.
-n
rr1
to
:;;0
c:::
:t>
:;;0
Dear Andy,
Honeywell H316
I.
I MPLC:iAENTLJR/DISTfl I BUTOfliMAPHAI NEil. Roh",t A.. strv lc • i'r)""'lwcd 1
Corpor atR Computer Sci ence Cent"r. 10701 Lyndelle AVA. .Sr) ••
Bloomington, MN 55424; 612/887-4356.
2.
,'.,\j\CHIiIE. Honeywf> 11 11311\.
3.
SfST;:::,! CDNFIGUFlATI();I.
7 track magnetic tape.
32K, dual cartridae disks.
linA orint8r.
4.
DISTFlIBUTION. 1 track tape with proqrams to hnotstrA() from BflS ?IO.
5.
D[)CUMf:~ITATlU:l.
6.
MfdrHAINANCE. No known errors, no work p1Flnn8d.
1.
Two versions are now supplied - the original compile-and-go
version, with provision for saving compiled code, as well as a version
which produces IBM-standard object modules and can link to externally
compiled procedures written in Pascal or Fortran or Assembler language.
2.
The price is now $A100 for both versions of the system in source
and object form, plus machine-readable documentation, all supplied on a
600 ft. magnetic tape. There is now no agreement to be signed.
Yours sincerely,
Informal comments on 31 r, kArn81 impl8rnentFltinn.
7.
STANiJARD. P. B. l1ans8n's SDUJ system with modifi8d sti'ndard
and Concurrent Pascal.
MEASJflE!-:ENTS. SDLCl systp.m neRds minimum of 40K to execilt"
compilers.
8.
9.
-<
Enclosed is up-to-date information on our implementation of
Pascal 8000 for IBM 360/370 computers. Variations from previous
information are:
FlELIABILITY. No known P.rrors.
Jeffrey M. Tobias
Gordon W. Cox
Applied Mathematics
&COmputing
Division
6.
PASCAL SOOO FOR IBM 360/370
1.
Implementors:
T. Hikita and K, Ishihata,
Dept. of Information Science,
University of Tokyo,
2-11-16 Yayoi
Btmkyo-ku TOKYO,
113 JAPAN
Maintenance Policy.
No guarantee on maintenance is given; however we are anxious to receive
bug reports and suggestions, and will do our best to fix any problems which may
occur.
7.
Standard.
The full standard is supported with finiteness in a few areas:
- maximum static procedure nesting depth is 6.
(HITAC - SOOO Version)
- maximum set size is 64.
(this precludes set of char.)
It is hoped to
increase this soon.
G.W. Cox and J.M. Tobias,
Systems Design Section,
AAEC Research Establishment,
Private Mail Bag,
SUTHERLAND, 2232,
N.S.W. AUSTRALIA
maximum number of procedures in a program is 256
(IBM 360/370 Version)
Distributors/Maintainers:
G.W. Cox and J.M.Tobias
address as above
2.
Machines:
IBM360 and IBM370 - compatible machines
3.
System Configuration:
The compiler rtms tmder any of the OS family of operating systems - i.e.
MVT,MFT, VS1, VS2, SVS and MVS. A minimal program can be compiled in 12SK;
the compiler requires about 220K to compile itself.
Distribution:
Write to G.W. Cox and J.M. Tobias at AAEC to receive an order form. The
cost is $A100; there is no agreement to be signed. Two systems are supplied:
4.
a "compile-and-go" system which has its own compiled-code format, and a
"liI)kage-editor" system which produces IBM-standard object modules. Both source
and load modules for these systems are supplied - the compilers are written in
Pascal and the rtmtime support in 360 Assembler.
An implementation guide, plus machine-readable implementation JCL, and
machine-readable documentation are also supplied.
The system is distributed on a new 600 ft. magnetic tape at a density of
SOO or 1600 bpi; the tape is supplied by the distributor.
5.
Documentation
Machine-readable documentation is in the form of a report comprising a
summary of extensions to Standard Pascal plus a complete specification of the
language as implemented.
- maximum size of compiled code in anyone procedure depends on its static level:
the main program may be up to 24K, and this is reduced by 4K for each
increment of static nesting level.
Significant extensions to the standard are in the following areas:
- Constant definitions for structured types.
arrays, records and sets as constants.
It is therefore possible to have
- A '~' statement for variable initialisation
- A 'forall' statement of the form:
forall in do
where is of type set.
- A 'loop' statement, specifying that a group of statements should be
repeatedly executed tmtil an 'event' is encotmtered. Control may then
be transferred to a statement labelled by that event.
- The types of parameters of procedures or ftmctions passed as parameters
must be specified explicitly, and this enables the compiler to guarantee
integrity.
The 'type identifier', restriction in a procedure skeleton has been
relaxed to allow 'type'.
- Ftmctions 'pack' and 'tmpack' are supported, as are packed structures
in general.
Exponentiation is fully supported, and is used via the double character
symbol '**'.
- A 'type-change' ftmction has been introduced that extends the role of
'chr' and lord'.
- Case-tag lists may now range over a number of constants, without
explicitly having to list each constant.
The range is denoted by
..
Thus,
4,6 •• 10,15,30 •• 45
is now a
v~lid
case tag list
A default exit is also supplied via
'"Tl
I'T'1
I:>"
:::0
c:
;x:.
:::0
-<
else:
i.e. else:
10.
is a valid case tag in every case statement.
This path
will be used if none of the other tags match.
Pascal-P by Hikita and Ishihata, who got it running on a HITAC-SOOO computer
Other interesting features of the system are:
(similar instruction set to IBM360).
Procedure 'new' is fully supported, obtaining the minimum heap requirements
as specified by variant tags.
Procedures 'mark' and 'release' are
also supported.
- Files may be external or local.
Thus, structures such as 'array of files'
External files are named in the program statement, local
files are not.
Both external and local files may be declared in a
procedure at any level.
= FIB].
All real arithmetic is in double precision (64 bit floating-point format).
- Control of input and output formatting is as described in the Jensen and
[:n1
The form is
11.
Library Support.
The linkage-edit version has the ability to perform separate compilation of
editor as necessary.
These can be stored in a library and selected by the linkage
It can also link to routines written in FORTRAN or other
languages which use a FORTRAN calling sequence.
To use an externally compiled
routine, one must include a declaration for it.
Such declarations consist of the
proce'dure or function skeleton followed by the word 'pascal' or 'fortran I .
The
linkage-editor then automatically searches for that routine when it is linking the
[:m], where nand m are integer expressions.
Further, elements of type packed array
Cox and Tobias spent about 10 person-months on the system.
was already a very workable system.
procedures or functions.
- Text-files with RECFM of F[B] [S] [A], V[S] [S] [A] and UrAl are supported.
X
The compiler is written in Pascal SOOO (6000 lines) and runtime support is in 360
Most of this time was spent improving the OS support and adding enhancements to what
are available.
Non-text files must have RECFM
This version was further developed by Tobias
and Cox for use under the OS family of operating systems on IBM360/370 computers.
Assembler (3500 lines).
Procedure 'dispose' is not supported.
Wirth report.
Development Method
The compiler was developed from Nageli's trunk compiler and bootstrapped using
.2i
program~
char may be read on input.
Global variables are accessible to externally compiled Pascal routines.
Pascal procedures cannot be overlayed.
- Execution errors terminate in a post-mortem dump, providing a complete
execution history that includes procedure invocations, variable values,
A symbolic dump of local variables and traceback of procedures called is provided
on detection of execution errors.
type of error, etc.
- the use of separately-compiled procedures in Pascal, FORTRAN or other
i--'
languages is supported by the linkage-edit version.
Thus one can build
up a library of Pascal procedures or use a pre-existing library of
LO
IBM 360, 370 (Williamsburg)
'.J
00
FORTRAN routines.
8.
Measurements.
- compilation speed about 2,500 chars/sec on an IBM 360/65
- compilation space
l28K for small programs
l60K for medium programs
220K for the compiler
- execution speed
- execution space
1.
Michael K. Donegan
Dept. of Mathematics & Computer Science
College of William and Mary
Williamsburg, Virginia 23185
(804) 253-4481
2.
IBM 360/370
3.
OS/VS
Requires 192-256K to compile the
"normal" programs.
comparable with Fortran G.
about 30K plus the size of the compiled code, stack and
heap
Compiled code is fairly compact - the compiler itself
occupies 8SK.
9.
Reliabili ty.
The system was first distributed in its current form late in 1977.
currently used at about 30 sites.
excellent.
It is
Reliability reports have been generally good to
A few minor problems which have been reported are currently being fixed.
4.
compile~
l50K is sufficient to compile
Distribution is in the form of object, source, and documentation on 9-track
tape and is currently free if you supply a tape (we can't). This is subject to change.
LO
Vi
5.
Documentation is distributed on the tape.
implementor's guide.
6.
Maintenance is currently in the form of a new distribution and reported
bugs will be fixed on a time-available basis. We are continually working
on the limitations of the system and have plans for:
7.
We are currently writing an
1)
Additional debugging facilities, cross-reference, post-mortem dump
callable as a built in procedure, frequency profile.
2)
Better interactive capability for TSO users.
3)
Double-precision arithmetic.
4)
Dynamic arrays--as soon as some one can come up with a decent syntax
for them.
5)
A bottom-up version of the compiler.
Differences in the handling of EOLN.
2)
Sets are limited to 64 elements (no SET OF CHAR).
3)
No subranges in sets, e.g. [1. .4J.
4)
Subscripts are enclosed in parentheses.
(~
5)
Set brackets are
6)
PACK and UNPACK not supported.
7)
Dynamic values cannot be freed.
All files must be declared globally.
9)
Single precision REAL amithmetic.
Additions
1)
TECHNISCHE
UNIVERSITjXT BERLIN
BERLIN
Fachbereich Informotik (20)
DVG
Technische UniversitiH Berlin (Fa 20)
LEHREINHEIT DV·GRuNDAliSBILDUIljG
1
10, Otto-Suhr-AUee 181'20
aerlin
. Otto-Suhr-Allee 18120, 0·1000 Berlin 10
PASCAL News - Editor
Tel., (030) 314-
University Computer Center
227 Experimental Engineering
208 Southeast Union Street
Telex: 1 84262 tubln -d.
University of Minnesota
Minneapolis, MN
and ,).
8)
(* The editors wish to thank the persons in Berlin and London for taking the time to fill
us in so well on their activities. We never expected such an outpouring of information
when we wrote #9-10! Once again, thanks! -Andy, Jim, and Tim *)
'llJ Berlin· FB 20 . VSH ___ 5
The major discrepancies are:
1)
IBM 370 (London)
55 455
4893
November 30, 1977
USA
Dear Andy:
A necessary correction of if 8 and 9/10 : At the Technical
include~
University of Berlin, we never embarked on an implementation
Additional formatting capability.
based on P4 , but we do not intend to drop our efforts at a
2)
I/O for arrays, records, and all scalar types.
3)
Modified handling of labels and gotos.
4)
Direct Access Files.
of Concurrent PASCAL for the CYBER 18. We have added check
5)
Formatting for READ and WRITE is different.
lists for both projects, reporting the current status.
8.
Compiler written in PASCAL (5500 lines). Compiler size is 108K + 8K
runtime support. Compiles itself in -78 seconds on IBM 370/158.
9.
Runtime support for files has essentially no diagnostics. Real number
formatting is less than ideal. Post-mortem of variables is not available
on all errors. The compiler has been used for three semesters here with
little difficulty.
new implementation of PASCAL for IBM /370 under CMS (Thomas
Habernoll). In addition, we are starting an implementation
We are using the P4-based implementation of Imperial College
London for purposes of teaching and bootstrapping. As these
people seem to be very modest (humble programmers 7), a word
of praise for their work seems appropriate:
1. Greg
10.
11.
Pug h
implemented a VM /370 CMS PASCAL-
The compiler was written in PL/l using the unrevised compiler for the
CDC6600 as a model. This was done by two undergraduates, Doug Dunlop and
Mark Gillette, and required an academic year. The bootstrap took another
year of less-than-intensive effort. Improvements have been added as more
users have dictated. A major rewrite of the runtime system is in progress.
compiler in September 76 based on P4. Its P-code
No, but should be available this year.
this time.
rating system is very convenient to use.
No separate compilation planned at
is converted to standard OS object modules in a
separate pass. A number of extensions are helpful
for systems programmers; the interface to the ope-
2. At Technical University of Berlin, the London compiler was ready to use within a few hours; we found
some minor bugs within six months of heavy usage,
and these
have been corrected in the latest release
from London.
l.O
en
IMPERIAL COLLEGE OF SCIENCE AND TECHNOLOGY
3. Full Standard PASCAL is supported with several
notable additions,
- full file support, including in-store files,
random-access files, explicit opening of files,
DEPARTMENT OF COMPUTING AND CONTROL
180 Queen's Gate
London SW7 2BZ Telephone: 01-589 5111
Telegrams: IMPCOL London SW7 Telex: 261503
Head of Department Professor J.H. Westcott, D se, FBCS.
FlEE
non-standard opening of files for interactive
use;
- external procedures and functions;
alfa variables and returncode in program heading;
- symbolic post mortem dump;
- cross reference option.
The compiler is not very fast (about 65 lines per
Andy Mickel
Pascal Users Group
University Computer Center:227EX
208 S.E. Union Street,
University of Minnesota
Minneapolis.
MN55455
USA
CPU-second), but we consider it now very reliable.
4. Along with the compiler comes a special batch system
running in CMS environment. It has been adapted and
extended for our purposes by Thomas Habernoll. It has
drastically reduced time-consuming system overhead
(re-initialization of the CMS batch machine) •
By fall, we have switched - at last - our introductory course
from ALGOL to PASCAL, with excellent 'results so-far.
T HAN K S
T 0
LON DON
Dear Andy,
We are using Pascal on our tiny 3'70/135 under CMS,to
support our undergraduate course,for systems programming
and in a number of research projects.
Greg Pugh,one of our research students implemented
our compiler from the P4 compiler(* described in the
attached letter and report *)
Our undergraduate teaching began using Algol on the
7094,and moved to Delft Alpp,",\~en the 370/135 appeared.
Because we wanted to use a ~ set of data structures and
types than those available in Algol 60 we changed our initial
teaching language to Algol\; .After two years with Algol" we
have again changed our initial teaching language - this
time to Pascal. There were a number of reasons for this change:
1) Some of us had regarded the choice of Algol" as
a stop-gap until a reliable Pascal compiler was
available under eMS.This we now beleive has
happened with the pif implementation at IC.
/IZ_~
(A.
~:dl)
£ /-,:.-LZ
~
c::!!? ---(L. Christoph)
7:i~ A d ji,JeI-'/(
(T. Habernoll)
(* The Berlin implementation mentioned is listed separately, below. *)
2) \-Ie use a number of different computers during
the undergraduate course,and we found that
, standard' Pascal ,oms the only programming language
that we felt able to use on a Computer Science
Course,which had similar implementation across
these machines (IBH370/135,CDC Cyber 1'73,ICL 1900
if CDC 7600)
3) It was clear that 'standard' Pascal included a
number of features which ,lOuld'''extend the life"
of our initial programming language,putting
off the time when any additional language need
be taught to provide a practical tool for
course support.
4) 1-/e had a number of bad experiences with the
AlgolW Compiler.For example some ::'arge valid
programs,would fail to execute,however
seemingly arbitary changes to them, got over
the problem.
-n
rrl
b:1
;;0
=
:l>
;;0
-<
We attempted to look at the compiler to fix the problems
but found it an almost impossible task to understand the
commentless PL360.TheP4 Compiler C* the first pass anyway *J
being written in Pascal C* although with few comments *J is
generally understandable and therefore possible to correct.
Greg tells me the main areas where he met problems was in
the reliance of CDC character set ordering.
Its too early to say whether the change over has made
any great impact on the course or on the students' programming
ability - it can be said with some certainty that they are no
worse than other years 1 We beleive that by starting off their
programming in a well disciplined enviroment,that students
make better and perhaps a more cautious use of other programming
enviroments they meet later on.
Our final year students carry out group projects. Some of
them are using Pascal to implement the nucleus of a multiprogramming
operating system and others are implementing an algebraic
manipulation package in Pascal.(* Attempts to persuade the Data
Processing project groups to use Pascal Failed: *)
In the area of systems programming we have made a great deal
of use of Pascal. The P4 implementation is well integrated into the
C~lli system and behaves exactly. like any of the other compilers.
By accepting the basic architecture imposed by CI1S, the P4 cO'lJpiler
has avoided any problems about "being special" or "being an
exception".This has aided in user acceptability and made it much
easier to use for systems programming. Work is now in progress on
implementing out batch subsystem schedular in Pascal. Various system
utilities,and our central file manager which supports multi-user
access to the file base,have been written in Pascal.
.The research use,of Pascal is quite diverseC* program
development systems,m.cro~assemblers,multi-user editors *J and our
research students have produced a number of useful tools to aid nice
program production (* POLISH - a very powerful reformatting program,
SPUP - a Pascal system similar to CDC Update *l.A research group in
the department piloted the ICL 2900 implementation of Pascal to
u'se Pascal in research irtto operating system architectures.
Pascal,then is in wide use within the Deptment of Computing
and Control here at Imperial College :
Please keep up the good work of PUG :
4. DISTRIBUTION. The current version is available for distribution now. Distribution is
by 9-track magnetic tape in standard CMS tape dump format. Cost is just postage plus cost
of tape (or provide your own tape).
5. DOCUMENTATION. A user's manual is available replacing chapters 13 and 14 of the Jensen
and Wirth User Manual and Report. This includes details of all departures from standard
and additional features plus descriptions of error messages, invoking commands, etc.
6.
MAINTENANCE. Currently we cannot offer any guaranteed support, since we are very short
of
manpower,
however we are using it for teaching ourselves so problems will probably be
fixed i f you tell us about them.
7. STANDARD. The compiler provides a number of additional standard procedures and a
couple of small extensions to the language syntax. The compiler gives warnings when
non-standard features are used. There are a few minor restrictions. The following
summarises the differences:
Extensions
Hex and Octal numbers are supported.
Expressions can be used to define the value of constants.
External procedures can be declared.
Some
20
additional
standard
procedures
are available, including DATE, TIME, DAY,
MONTH, CPU time, routines to do direct access I/O
on
files,
and
several
routines
allowing VM/370 commands to be issued from the program.
ALFA variables can be specified on t~e PROGRAM statement as well as files.
Restrictions
Sets are o•• 255
Files of files
are not allowed, but files can appear within other structures (i.e.
arrays and records of files are o.k.).
."
rrt
to
:;;0
Dispose doesn't work (the dread Mark and Release can be used).
Packed is accepted but ignored (character strings are always packed anyway).
=
::r=:;;0
Features
-<
We accept upper and lower case identifiers with 30 characters significant.
Integers are 32 bits and reals 64 bits.
The compiler produces listings with bold printed
etc.
keywords,
titles,
nesting
level,
I--'
LD
'l
00
Best wishes to you all,
lain Stinson
8. MEASUREMENTS. The compiler is a much developed version of the P4 compiler. An
assembler for the P-code runs as a second pass producing standard object code. The P4
compiler is now about 7000 lines of Pascal, the assembler is 5000 lines of .PL370. The
run-time system consists of about 90 small modules (in Assembler F) which are included by
the loader on a by-need basis (a small program may only use about a dozen of these
routines). I'm not sure about exact compilation speed, but it is faster than
and
slower
IBM
Fortran
than AlgolW. The compiler generates re-entrant code and is shared between all
users (which saves a lot of store since the compiler code is quite large).
(* Greg Pugh wrote the following checklist. *)
1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. lain Stinson
(distributor)
and
Greg
Pugh
(implementor); Department of Computing and Control; Imperial College; London SW7; England;
Phone: 01-589-5111, extensions 2700 and 2758.
2. MACHINE. IBM 370 (~ 360s). Our machine is a 135 with 384k. It operates a student
service within the department with some terminal work (up to 8 terminals) and a batch
stream, Pascal is the main teaching language.
3. SYSTEM CONFIGURATION. Operates under the VM/370 system using the CMS subsystem. It
would take quite a bit of work to convert the system to run under any of the other IBM
systems. The compiler should run on any machine that runs VM/370 (i.e. model 135 and
upwards, >= 256k).
9. RELIABILITY. Reliability seems pretty good. Currently the compiler is being used
mainly for fairly large programs (4000 lines). A student version is now available and
shuld put the system to a severe test.
10. DEVELOPMENT METHOD. The compiler was developed from the Zurich P4 compiler by writing
an assembler for the P-code in PL370 in 1976. The run-time library was written at about
the same time. A symbolic dump package dumping all variables (including records, arrays
etc.) is available. A batching version is available for student use.
11. LIBRARY SUPPORT. Procedures can be declared to be external and compiled programs can
be placed into object code libraries. Assembler and Fortran procedures can be accessed.
LD
00
IBM 360, 370 (Berlin)
r------------------
----,
I'Modular PASCALI1370 Compiler
12/01/11 I
LI _____________________________________________________
Page
- - -1- JI
1~~_~g!g12Rmgni-mgthQ~
The compiler is written in PASCAL. The syntax analysis is
based on the PASCAL 6000 compiler. which influenced the
method of code generation too.
1,,-_I!!!l!!g!!g!!t2~
Thomas Habernoll
Technische Universitaet Berlin
{Fachbereich Informatik}
[Institut fuer angewandte Informatikl
OV-Grundausbildung
iSH 5
Otto-Suhr-Allee 18/20
0-1000 Berlin 10
IBII /360, /370
(Implementation is done on a 370/158)
VII 370 (CP+CIIS)
OS (with some modifications of the rUIl time system)
Not yet. probably starting fall 1918.
A detailed reference manual will
retrievable form.
HOpefully good.
be available in machine
Not yet determinated.
Full standard PASCAL. The compilec is the first step to a
'compiler family'. Later members of this family will
include extensions
(especially for system pcogramming).
But they will ~Qt be uamed 'PASCAL compiler'! (becanse
PASCAL is the
language defined in the
report of
Jensen/Wirth: User Kanual and Report. At this level,
enough difficulties arise for portability of programs.)
Presently. no precise information can be given.
The rnn time system is written in PASCAL and Assembler. I
hope that the Assembler part can be reduced to a minimum.
As I started working we didn't have a PASCAL compiler
useful for bootstrapping on
the /370 at Technical
University. The Stony Brook and lIanitoba compilers were
not sufficient.
Therefore I wrote a PASCAL->Simula
compiler {in SIIIULAI. It is slow {compilation speed 10
lines per CPU secondl. I have learned something due to
this project: don't think that it is a simple and
straightforward task to translate a high level language
into another (relatively similar) high level language.
Just as I finished the PASCAL->SIMULA compiler, we got
the PASCAL P4 compiler from Imperial College London. This
facilitated my work.
I am trying now to write a 'modular compiler': that
means, the compiler architecture allows changing of the
accepted language and/or of
the generated code by
exchanging only few modules. Therefore we will have not
one compiler for Standard PASCAL and another one fora
subset (e.g. for educational purposes)
but a set of
modules. Depending on the command, the modules necessary
for a specific purpose will be loaded.
Writing modules
{in the sense of IIOOULAI in a block structured language
makes fun - if one has grim humour.
Presently the compiler is a one pass compiler.. But its
structure allows splitting it into a mUltipass compiler.
The first version to be released will accept Standard
and
produce
{for
several
reasons)
PASCAL
IBlI/310-Assembler code. Later
versions viII prodnce
relocatable macnine code (in standard OS loader format).
As a vision the following versions exist:
- PASCAL subset for
educationa~
purposes;
- PASCAL supersets.
First level: machine independent extensions like else
or Q.t!Ht£!!i§.g in £!!§.~ statements: a simple module
concept.
Second level: extensions for systems programming.
- Generation of interpretative code. This is normally the
first step to implement PASCAL, but I
think that
interpreters are a good tool to check out programseven for large ones (one of these reasons is the fact,
that additional check out code and test aids need
additional space resulting in frustrated programer of
large progcams, who fights against storage constraints.
--n
fTl
t:>:l
;;0
=
:J>
::0
-<
f-'
to
.......
00
Another reason is a possible step-by-step execntion of
interpretative code, that is more nsefnl than execnting
step-by-step on machine instrnction level.)
ICL 1900 (Belfast)
(* Thanks to Judy Mullins and to David Joslin who wrote on 4 Nov.
1977 and on 13 Oct.
1977, respectively, to correct the information which we printed in issue #9-10. David
provided the following revised checklist. *)
- Optimizing compiler.
processing of pre-scanned
source programs (assume
programs to be edited and analysed on a mini compnter,
the processed sonrce being sent to the /370 for
compilation and executing.
1.
Implementor & Distributor:
Dr. J.Welsh,
Dept. of Computer Science,
Someone somewhere interested
should please contact me. To
provide a better support than
more software aids besides the
(for example the embedding of
system is a useful task).
Queen's University,
in )o1.ning this project
have a chance, PASCAL must
other langnages. Therefore
compiler must be provided
the compiler in an editor
BELFAST,
2.
~:
3.
Operating System:
N.lreland,
BT7 INN.
ICL 1900 series.
Any (although the Source Library facility is
only possible, and the Diagnostics package only
practicable, under GEORGE 3 or 4).
Ninimum Configuration: The compiler needs at least 36K of core,
Linkage to FORTRAN subrontines is withont any problem.
Separate compilation is available. The first release
provides no symbolic dump. In the event of a run time
error the following informations will be given: error
message, corresponding source line number and a back
trace of procedure calls (with source line numbers of
calls).
and uses CR, LP, DA files.
4.
Distribution:
Free.
Send a mag. tape (either 9-track PE 1600 bpi
or 7-track NRZI
5.
Documentation:
556 bpi) to Belfast.
Belfast's Users' Guide (supplement to Revised
"
Report) and implementation documentation is
distributed with the compiler.
:;:c
Glasgow's supplement to the Revised Report is available from
Bill Findley or David Watt,
ICL -- Clearing House
(*
University of Glasgow,
GLASGOW, Scotland, Gl2 8QQ
-<
c.o
'J
(\;ho produced the Diagnostics package).
6.
Maintenance Policy:
- Exchange of library routines;
CO
No formal commitment to maintenance.
No plans for development in near future.
Avoidance of duplication of effort in provision of new facilities;
- Circulation of user and other documentation;
Send bug evidence to Belfast, and also a note of the bug to PCHICL
- Circulation of bug reports and fixes;
(see separate notice) who circulate bug reports & fixes to their
merJbers.
- Organisation of meetings of Pascal users and implementors;
- Acting as a "User Group" to negotiate with Pascal 1900 and 2900 suppliers.
There are currently about 40 people on PCHICL's mailing list, mainly in Computer Science
departments and Computing Centres of U.K. Universities and Polytechnics. Any User of
Pascal on ICL machines whose institution is not already a member of PCHICL should contact
7.
Implementation Level:
Exceptions:
The language of the Revised Report, with:
There are no anonymous tag fields;
FILEs cannot be assigned, passed as value
David Joslin,
o~
University of Sussex Computing Centre,
Falmer, Brighton, Sussex, BNl 9QH, United Kingdom.
All ICL Pascal users are urged to notify
make,
:;:c
1-'
PCHICL - the Pascal Clearing House for ICL machines - has been set up for the purposes of:
they
=
::t>
Dept. of Computer Science,
David Joslin sent us the following announcement on 13 October 1977 *)
modifications
f"T'1
Cd
any
useful
David
programs
of
any
or
bugs
they
find,
any
compiler
routines or documentation they have
written, anything they have that may be of use or interest to other users.
para~eters,
oocur as components of any structured type;
Predefined procedures & functions cannot be passed as
actual parameters;
The correct execution of programs which include
functions with side-effects is not guaranteed.
ICL 2900 (Southampton)
""1:J
J>
Thanks again to David Joslin and Judy
information. *)
...
.....
.
... ....
........
(*
Only the first 8 characters of identifiers are significant.
SETs are limited to x •• y where 0 ~ ¢RD(x) ~ ¢RD(y) ~ 47
The ICL 64-charaoter graphio set is used for type CHAR.
PACKED is implemented, and TEXT = PACKED FILE ¢F CHAR.
Mullins
(see
ICL, ADDRESS¢F, allow use of inline machine code.
8.
Compiler Characteristics:
Compiler, producing absolute binary
machine code.
9.
10.
11.
Reliability:
sending
revised
en
n
J>
r
=
rn
:::e::
en
"It::
......
......
PASCAL
1(a). Implementation
ICL are providing support for
University of Southampton.
Project Supervisor:
The compiler is written as c. 14000 lines of PASCAL & c, 3500 lines
of Asser.1bler Lan[;Uage (Issue 3). Performance is better than !.lost
other rCL 1900 language processors (exceptions are incore compileand-eo batch systems of the the HATF¢R type).
The postmortem analysis program is written as c, 2500 lines of
PASCAL.
for
1900)
~~
-J~@
r
ALFA = PACKED ARRAY 1 •• 8J ¢F CHAR.
Extensions: VALUE and DISP¢SE are implemented.
Integers may be written in octal.
Additional predefined procedures & funotions DATE,
TIME, I1ILL, HALT, CARD are provided, and procedures
ICL
an
implementation group
based on
the
Dr.M.J.Rees,
Computer Studies Group
Faculty of Mathematioal Studies,
The University,
Southampton, S09 5NH,
England.
-n
rn
Telephone: 0703 559122 x2270
Implementors:
Very good.
Hethod of development: Complete rewrite of original PASCAL 1900
compiler, which was bootstrapped from the original ZUrich CDC
compilers by Welsh & Quinn.
J.J.M.Reynolds,
Computer Centre,
Queen Mary College,
University of London,
Mile End Road,
London, E1 4NS,
England.
Telephone: 01 980 4811 x778
tx:l
H.J.Zell,
New Huxley Building,
Imperial College,
University of London,
London SW7 2AZ,
England.
Telephone: 01 589 5111
Libraries: Source Library facility available under GEORGE 3 & 4.
Efforts are to be made to develop a PASCAL version of the NAG
1(b). Distribution
library (which would be applicable to ~ machine, not just rCL).
No facilities for separate compilation or for inclusion of semicompiled routines "ri tten in any other lan[;Uage.
The Pascal compiler will be distributed as a standard ICL
product.
Contact should be made to the nearest ICL sales
Failing that, contact the project supervisor shown above.
:::c
c::
::t>
:::c
-<
......
1.0
.......
CO
program
offioe.
2. Machine
The ICL 2900 series machines 2960, 2970 and 2980.
D.A.Joslin
October lOth 1977
3. Operating System
VME/B and VME/K
4. Method of Distribution
As per ICL standard, see 1(b) above.
......
C>
......
5. Documentation
Intel 8080 (Oslo)
Standard ICL manuals will be available:
(a) Pascal Language Manual: operating
Pascal Lan~uage.
(b)
system independent aspects of the
Runnin.~ Pascal
Programs on VME/B and VME/K: information on
run Pascal programs under the operating systems.
David Barron sent us a short piece that appeared in the 17 November 1977 issue of
Computing describing an 8080 implementation distributed by the Norwegian company, Mycron,
of Oslo. The compiler is said to run in 29K bytes. (* We would appreciate receiving any
more information about this implementation that a PUG member could provide. *)
how to
rn
::E:
MITS Altair 8800
en
6. Maintenance Policy
See DEC LSI-ll (San Diego).
Full maintenance will be provided by the implementation group and/or ICL
while the compiler is offered as a standard ICL program product. The
usual ICL procedures for bug reports will be adopted.
Motorola 6800 (St. Paul)
7. Language Standard
Mark Rustad asked (30 October 1977) that we make the following updates to his checklist
printed in Pascal News 119-10.
The compiler implements all features of the language as described in the
User Manual and Report (Jensen and Wirth, 1974).
1. Work phone: 612/376-1143.
8. Translation/Execution Mechanism
2. Developed using a Motorola 6800 Exercizor (48K, dual floppies) and MITS Altair 680b and
SWTP 6800. Should be extremely easy to adapt to any system using the M6800 chip.
The compiler is written in Pascal and produces Object Module Format
(OMF) compatible with all standard ICL compilers. The OMF module may be
directly loaded or linked with other OMF modules.
The source listing is approximately 10000 lines of Pascal and produces
80K bytes of code. Approximately 160K bytes of store are required to
compile the compiler.
3. Requires 32K bytes and an ASCII terminal. Also, a high speed I/O device (floppy disk,
cassette, or data cartridge) is highly recommended to reduce loading time to a reasonable
"rn
amount.
4. The system is being distributed by Computer Depot (3515 West 70th Street; Minneapolis,
MN 55435; (612/927-5601)) for less than $100 for documentation, binary, and interpreter
source.
machine
mapping of reserved words to single case, and separate compilation of procedures.
10. Method of Development
The compiler was bootstrapped usino; the 1900 compiler from the Queen's
University of Belfast, Northern Ireland as e base. , Nothern Ireland as
1 baRf'.
Twenty four
person-months of
effort from experienced
programmers were
requirf"d.
7. The following are not supported: with and goto statements; real arithmetic and the
transcendental functions; pack and unpack. The compiler handles real arithmetic but the
present interpreter does not. The system is designed to make it easy to interface the
interpreter to a floating point package or a hardware floating point chip. The following
extensions have been made: predefined procedure exit and halt. As of 77/10/23, only lower
the
the
9. As of 77/10 the compiler had successfully compiled itself in the 6800. Was released to
two external sites for testing.
lines.
see Ken Bowles' article "Status of the UCSD Pascal Project", and for an
order form see the DEC LSI-II (San Diego) implementation note.
address
-0
:t:>
G')
11. The compiler and interpreter are completely relocatable, may be
information,
<.0
"-..J
00
case is recognized.
10. As of 77/11 about 3 person-months had been invested. The compiler source is about 2400
Intel 8080 (San Diego)
For
......
8. Interpreter requires 4K (with floating point package). No compilation speed was
provided. The interpreter is unbuffered and can keep up with typing speeds of 10cps.
Approximately 2-5K M-code instructions are executed per second. This is at least 5-10
times faster than SWTP BASIC.
11. Libraries
As the compiler produces OMF modules, separate compilation and
inclusion of external procedures
will be possible providing
necessary operating system facilities are present.
:::0
-<
6. Mark guarantees maintenance only to the distributors. They are expected to pass bug
reports, etc., to him. Future plans include full acceptance of upper/lower case with
Current reliability is moderate to good.
=
:t:>
5. Documentation is the responsibility of the distributors. Mark is providing a
retrievable supplement to the Pascal User Manual and Report to the distributors.
9. Reliability
t:>:I
:::0
space
where
located
anywhere
in
sufficient memory exists. Presently this memory must be contiguous,
but it is planned to change this in the future. A crude but usable method for calling
external (assembly code) procedures exists. No direct parameter passing is available this must be done via the stack.
rn
......
o
N
THE UNIVERSITY OF HULL'S PASCAL COMPILER
Prime P-300
FOR PRIME 300 COMPUTER
THE UNIVERSITY OF HULL
1.
IMPLEMENTOR/DISTRIBUTOR/MAINTAINER: Barry Cornelius, Ian Thomas or Dave
Robson; Department of Computer Studies, University of Hull, Hull, HU6 7RX,
England; Hull (0482) 497951.
HULL Hue 7RX. ENGLAND
Telephone: Hull 46311
z
rn
Department of Computer Studies
2.
MACHINE: PRIME 300.
3.
SYSTEM CONFIGURATION: Our own system is currently 48K words running under
PRIMOS-3 Revision 10 (but Revision 14 sometime in 1978).
15th December, 1977
4.
DISTRIBUTION: We hope to have a first release of the compiler completed
by April 1978. No details about distribution have been arranged yet.
Mr. Andy Mickel,
Editor, "Pascal News",
University Computer Centre,
227 Experimental Engineering Building,
University of Minnesota,
MINNEAPOLIS. MN 55455
U.S.A.
5.
DOCUMENTATION: None - see details of PASCAL-P elsewhere in "Pascal News".
6.
MAINTENANCE POLICY: We intend to correct reported errors for the next
few years. Error reports and updates will be sent at irregular intervals to
all those who receive the compiler.
Dear Andy,
The main purpose of this letter is to let you have a copy of the enclosed
implementation notes. As we're only about half way through building our PASCAL
compiler for the PRIME 300, we've left some of the details vague. We'll send
you a fuller set of implementation notes sometime in 1978.
We started our compiler because we couldn't find a suitable version of
PASCAL on PRIME 300 computers. The only other implementation that we know of
is an implementation of Per Brinch Hansen's Sequential PASCAL. We did some
work in early 1977 taking bugs out of this implementation and it is now available from PRIME Computer International, Bedford, England. We don't like it
because: (a) Sequential PASCAL doesn't permit nested procedures, (b) it's
We currently teach ALGOL 60 to our Computing s,cience undergraduates.
After much debate within the department, we" will be teaching PASCAL to our
first years from October 1978. For this purpose we'll be using the Belfast
Mk.2 compiler as the University's mainframe is an ICL 1904S.
The conversion to PASCAL would be easier if there was a book which properly teaches programming! We haven't found one yet. Addison Wesley arebringing out a book in early 1978 which we think may be suitable - it's
entitled "Programming in PASCAL" and written by PUG member Peter Grogono.
Yours sincerely,
g"~ 'LM )1~
Barry Cornelius.
Ian Thomas.
Dave Robson.
STANDARD: PASCAL-P subset of Standard PASCAL.
8.
MEASUREMENTS: No details are yet available.
9.
RELIABILITY: No details yet.
f-'
lD
10.
DEVELOPMENT METHOD: The code generation parts of the PASCAL-P4 compiler
are currently being rewritten to generate PMA which can then be assembled. The
first version of the compiler is being tested using the Belfast ~fr.2 ICL 1900
compiler. It will be bootstrapped on to the PRIME by using a P-code interpreter for the PRIME written in CORAL 66. The work has been done on and off
since June 1977 by five people - some have now left and some learnt CORAL 66
and PASCAL during this time!
very slow which makes it useless for teaching purposes.
Finally, we'd like to say what an excellent job you I re doing with "Pascal
News". It stimulated us into implementing PASCAL-P for PRIME 300s and is
keeping us well informed of what's happening elsewhere_ Thanks.
7.
'-J
00
11.
LIBRARY SUPPORT: No facilities for external procedures are currently available but they may be developed in the future.
Univac 1100 (Madison)
A short note appeared in the 24 October 1977 issue of the University of Wisconsin
Academic
Madison
Computer Center newsletter, MACC NEWS, which stated that "The UW-Pascal comp iler
is now fully supported by MACe." Two versio;;:-the relocatable, and the load-and-go,
mentioned.
were
Zilog Z-80 (San Diego)
For
information,
see Ken Bowles' article "Status of the UCSD Pascal Project", and for an
order form see the DEC LS1-11 (San Diego) implementation note.
I NDEXT 0 IMP LEMEN TAT ION NOT ES
computer Automation LSI-2
General Information
119&10: 60.
1111: 70.
Checklist
119&10: 60.
Applications
1111: 70.
Software Tools
119&10: 61.
Portable Pascals
Pascal-P
119&10: 61-62.
1111: 70-72.
Pascal Trunk
#9&10: 62.
Pascal J
119&10: 62.
Pascal Variants
Concurrent Pascal
119&10: 63.
1111: 72-74.
Modula
119&10: 63.
1111: 74.
Pascal-S
119&10: 63.
1111: 72.
Feature Implementation Notes
Set of Char
#9&10: 64-66.
For Statement
119&10: 66-69.
1111: 79-80.
Def ault Cas e
119&10: 69-70.
Variable Parameters
119&10: 71.
Interactive I/O
119&10: 71-72.
Unimplementable Features
1111: 75.
Long Identifiers
1111: 78-79.
Boolean Expressions
1111: 76-78.
Machine Dependent Implementations
Alpha Micro Systems AM-II
See DEC LSI-It.
Amdahl 470
See IBM 360, 370.
Andromeda Systems 11-B
1111: 80.
Burroughs B1700
119&10: 73.
Burroughs B3700, 4700
119&10: 73.
Burroughs B5700
119&10: 74.
1111: 81.
Burroughs B6700, 7700
119&10: 74-75.
1111: 81.
CDC Cyber 18 and 2550
119&10: 75.
1111 : 81-82.
CDC 3200
119&10: 75.
1111 : 82.
CDC 3300
119&10 : 75.
CDC 3600
119&10: 75.
CDC 6000, Cyber 70, Cyber 170
119&10: 76.
1111 : 82-83.
CDC 7600, Cyber 76
119&10: 76.
1111: 83.
CDC Omega 480-1, 480-11
See IBM 360, 370.
CDC Star-100
119&10: 77.
CIl Iris 50
119&10: 77.
Cll 10070, Iris 80
119&10 : 77-78.
119&10: 78.
Cray Research Cray-1
119&10: 78-79.
Data General Eclipse
119&10: 79-80.
1111: 85.
Data General Nova
119&10: 79-82.
1111: 83-85.
DEC PDP-8
119&10: 82.
1111: 85.
DEC LSI-II and PDP-II
119&10: 82-88.
1111: 86-91.
DEC DECSystem-10
119&10: 89-9l.
1111: 91-92.
Dietz MINCAL 621
119&10: 91-92.
Foxboro Fox-1
119&10: 92.
Fujitsu FACOM 230
119&10: 92.
Harris / 4
119&10: 92-93.
Heathkit H-ll
119&10: 93.
Hewlett Packard HP-21MX
119&10: 93.
1111: 92.
Hewlett Packard HP-2100
119&10: 93.
Hewlett Packard HP-3000
119&10: 94.
Hitachi Hitac 8700, 8800
119&10: 94.
Honeywell H316
119&10: 94.
1111: 93.
Honeywell 6000
119&10: 94-95.
#11: 92-93.
IBM Series 1
119&10: 95.
IBM 360, 370
119&10: 95-101.
1111: 93-100.
IBM 1130
119&10: 101.
ICL 1900
119&10: 101-102.
1111: 100-101.
ICL 2900
119&10: 102.
#11: 100,101-102.
Intel 8080, 8080a
119&10: 102-103.
1111: 102.
Interdata 7/16
/19&10: 103.
Interdata 7/32, 8/32
119&10: 103-104.
ITEL AS/4, AS/5
See IBM 360, 370.
Kardios Duo 70
119&10: 104.
Mitsubishi MELCOM 7700
119&10: 104-105.
MITS Altair 680b
See Motorola 6800.
MITS Altair 8800
See DEC LSI-11.
MaS Technology 6502
See DEC LSI-11.
Motorola 6800
119&10: 105.
1111: 102.
Nanodata QM-1
119&10: 105.
NCR Century 200
119&10: 105.
Norsk Data NORD-10
119&10: 106.
Prime P-300
1111: 103.
Prime P-400
119&10: 106.
SEMS T1600, SOLAR 16/05/40/65
119&10: 106.
Siemens 330
119&10: 107-108.
Siemens 4004, 7000.
119&10: 108.
Telefunken TR-440
119&10: 108.
Terak 8510
See DEC LSI-ll.
Texas Instruments TI-ASC
119&10: 109.
Texas Instruments 9900/4
119&10: 109.
Univac 90/30
119&10: 109.
Univac 90/70
119&10: 109.
Univac 1100
119&10: 109-112.
1111: 103.
Univac V-70
119&10: 112.
Varian V-70
See Univac V-70.
Xerox Sigma 6, 9
#9&10: 112.
Xerox Sigma 7
119&10: 112.
Zilog Z-80
119&10: 112.
1111: 103.
=
rn
~
C/)
-n
rn
OJ
;;0
=
;J:>
=
-<
I-'
<.D
'-J
00
POLICY:
PASCAL USER'S GROUP
Purposes:
(77/12/30)
Pascal User1s Group (PUG) tries to promote the use of the programming
language Pascal as well as the ideas behind Pascal. PUG members help
out by sending information to Pascal News, the most important of which
is about implementations (out of the necessity to spread the use of
Pascal).
The increasing availability of Pascal makes it a viable alternative for
software production and justifies its further use. We all strive to
make using Pascal a respectable activity.
Membership:
Anyone can join PUG: particularly the Pascal user, teacher, maintainer,
implementor, distributor, or just plain fan. Memberships from libraries
are also encouraged.
See the ALL PURPOSE COUPON for details.
FACTS ABOUT Pascal, THE PROGRAMMING LANGUAGE:
Pascal is a small, practical, and general purpose (but not all-purpose)
programming language possessing algorithmic and data structures to aid
systematic programming. Pascal was intended to be easy to learn and
read by humans, and efficient to translate by computers.
Pascal has met these design goals and is being used quite widely and
successfully for:
* teaching programming concepts
* developing reliable IIproductionll software
* implementing software efficiently on today1s machines
* writing portable software
Pascal is a leading language in computer science today and is being
used increasingly in the world1s computing industry to save energy and
resources and increase productivity.
Pascal implementations exist for more than 62 different computer systems,
and the number increases every month. The Implementation Notes section
of Pascal News describes how to obtain them.
The standard reference and tutorial manual for Pascal is:
Pascal - User Manual and Report (Second, study edition)
by Kathleen Jensen and Niklaus Wirth
Springer-Verlag Publishers: New York, Heidelberg, Berlin
1975, 167 pages, paperback, $5.90.
Introductory textbooks about Pascal are described in the Here and There
Books section of Pascal News.
The programming language Pascal was named after the mathematician and
religious fanatic Blaise Pascal (1623-1662). Pascal is not an acronym.
Pascal User1s Group is each individual member1s group. We currently have more than
1351 active members in more than 30 countries. This year Pascal News
is averaging more than 150 pages per issue.
~
(.)
-
.o
a.
Return to:
University Computer Center
227 Experimental Engineering Building
208 Southeast Union Street
University of Minnesota
Minneapolis, Minnesota 55455 USA
return postage guaranteed
The University of Minnesota is committed to the policy that all persons shall have equal access
to its programs, facilities, and employment without regard to race,
creed, color, age, sex, national origin, or handicap.
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 14:38:54-08:00 Modify Date : 2011:06:15 14:49:10-07:00 Metadata Date : 2011:06:15 14:49:10-07:00 Producer : Adobe Acrobat 9.43 Paper Capture Plug-in Format : application/pdf Document ID : uuid:77760cdf-4caf-44a6-b95f-9f6dccde6c8e Instance ID : uuid:cd98e5e4-58f5-4057-9eef-e166f1de06f9 Page Layout : SinglePage Page Mode : UseNone Page Count : 108EXIF Metadata provided by EXIF.tools