13_Pascal_Newsletter_Dec78 13 Pascal Newsletter Dec78

13_Pascal_Newsletter_Dec78 13_Pascal_Newsletter_Dec78

User Manual: 13_Pascal_Newsletter_Dec78

Open the PDF directly: View PDF PDF.
Page Count: 125

Download13_Pascal_Newsletter_Dec78 13 Pascal Newsletter Dec78
Open PDF In BrowserView PDF
PASCAL USER'S GROUP

Pascal News
December, 1978

NUMBER 13 (oh, how unlucky ... )

COMMUNICATIONS ABOUT THE PROGRAMMING LANGUAGE PASCAL BY PASCALERS
Cover
0
1
3
5
5
6
8
9
10
12
16
18
31
32
34
59
59
61
63
65
66
71
71
73
83
87
87
87
88
88
89
91
94
122
123
Cover

Order of the Claw: Even reasonable people can disagree ...
POLICY: Pascal News
ALL-PURPOSE COUPON
EDITOR S CONTRIBUTION
HERE AND THERE WITH Pascal
Tidbits
Pascal in the News
Pascal in Teaching
DOD-1 (ADA)
Books and Articles
Conferences
Review of Pascal News 9/10, 11, and 12
Roster Increment
APPLICATIONS
Algorithms
Software Tools
ARTICLES
11 Moving a Large Pascal Program from an LSI-11 to a Cray-1 11
- Richard Sites
11 0n the Article 1 What to do After a While 111
- Roy Wilsker
11 A Resolution of the Boolean-Evaluation Question -orif not Partial Evaluation then Conditional Expressions 11
~ - Morris Roberts and Robert Macdonald
11 What to do After a While ... Longer 11
- T. Irish
11 Know the State You Are In 11
- Laurence Atkinson
OPEN FORUM FOR MEMBERS
Open Letter to all PUG members
Proposed Constitution
Pascal Standards
IMPLEMENTATION NOTES
General Information
Implementors Group Report
Checklist
Portable Pascals
Pascal Variants
Feature Implementation Notes
Machine-Dependent Implementations
Index to Implementation Notes (PUGN 9-13)
POLICY: Pascal User 1 s Group
University of Minnesota Equal-Opportunity Statement
1

i

!

POLICY:

PASCAL NEWS (78/10/01)

*Pascal News is the official but informal publication of the User's Group.
Pascal News contains all we (the editors) know about Pascal; we use it as
the vehicle to answer all inquiries because our physical energy and
resources for answering individual requests are finite. As PUG grows, we
unfortunately succumb to the reality of (1) having to insist that people
who need to know ·11 about Pascal 11 join PUG and read Pascal News - that is
why we spend time to produce it! and (2) refusing to return phone calls
or answer letters full of questions - we will pass the questions on to
the readership of Pascal News. Please understand what the collective
effect of individual inquiries has at the "concentrators" (our phones and
mailboxes). We are trying honestly to say: nwe cannot promise more than
we can do. 11
*An attempt is made to produce Pascal News 3 or 4 times during an academic year
from July 1 to June 30; usually September, November, February, and May.
*ALL THE NEWS THAT FITS, WE PRINT. Please send material (brevity is a virtue) for
Pascal News single-spaced and camera-ready (use dark ribbon and 18.5 cm lines!)
* Remember: ALL LETTERS TO US WILL BE PRINTED UNLESS THEY CONTAIN A REQUEST TO
THE CONTRARY.

*

~

CJ

-·-c.
0

Pascal News is divided into flexible sections:
POLICY - tries to explain the way we do things (ALL PURPOSE COUPON, etc.).
EDITOR'S CONTRIBUTION - passes along the opinion and point of view of the
editor together with changes in the mechanics of PUG operation, etc.
HERE AND THERE WITH PASCAL - presents news from people, conference
announcements and reports, new books and articles (including reviews),
notices of Pascal in the news, history, membership rosters, etc.
APPLICATIONS - presents and documents source programs written in Pascal for
various algorithms, and software tools for a Pascal environment; news of
significant applications programs. Also critiques regarding program/algorithm
certification, performance, standards conformance, style, output convenience,
and general design.
ARTICLES - contains formal, submitted contributions (such as Pascal
philosophy, use of Pascal as a teaching tool, use of Pascal at different
computer 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 ~nformation about Portable Pascals, Pascal
Variants, Feature-Implementation Notes, and Machine-Dependent Implementations.

*Volunteer editors are (addresses in the respective sections of Pascal News):
Andy Mickel - editor
Jim Miner, Tim Bonham, and Scott Jameson - Implementation Notes editors
Sara Graffunder and Tim Hoffmann - Here and There editors
Rich Stevens - Books and Articles editor
Rich Cichelli - Applications editor
Tony Addyman and Rick Shaw - Standards editors
Scott Bertilson, John Easton, Steve Reisman, and Kay Holleman - Tasks editors

---

---- - --

--

- -- - - - -

PASCAL USER'S GROUP

ALL-PURPOSE COUPON

USER'S

******************

GROUP

(78/10/01)
Pascal User s Group, c/o Andy Mickel
University Computer Center: 227 EX
208 SE Union Street
University of Minnesota
Minneapolis, MN 55455 USA
1

+

CLlp,

pho~oeopy, 04

+

+

I I Please enter me as a new member of the PASCAL USER'S GROUP for
Academic
year(s) ending Jt:Jne 30,
(not past 1982). I shall receive all the
issues of Pa.oea.l Ne.w.o for each year. Enclosed please find - - - (* Please
see the POLICY section on the reverse side for prices and if you are joining
from overseas, check for a PUG "regional representative. 11 *)
/ / Please renew my membership in PASCAL USER'S GROUP for
Academic year(s)
ending June 30,
(not past 1982). Enclosed please find - - -

/ I Please send a copy of Pa.oea.l Ne.w.o Number(s)
. (* See the Pa.oea.l NeWJ.i
POLICY section on the reverse side for prices and issues available. *)
I I My new a~~~~!s is printed below. Please use it from now on. I'll enclose an
old mailing label if I can find one.
(*The U.S. Postal Service does not
forward Pa.oea.l Ne.w.o. *)
I I You messed up my a~~~~!s See below.
I I 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 Pa.oea.l Ne.w.o. (* Please send bug reports
to ~he maintainer of the appropriate implementation listed in the Pa.oea.l Ne.w.o
IMPLEMENTATION NOTES section. *)

I I None of the above.

Other comments:

From:

name

mailing address

--------------~

--------------~

phone ------------~-~
computer system(s)
.··date
--------------~

(* Your phone number aids communication with other PUG members. *)

JOINING PASCAL USER'S GROUP?
- membership is open to anyone: particularly the Pascal user, teacher, maintainer,
implementor, distributor, or just plain fan.
- please enclose the proper prepayment (checks payable to 11 Pascal User's Group 11 ) ;
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 memb.ership, think of the cost of
paperwork involved fqr such a small sum as a PUG membership!)
- when you join PUG anytime within an academic year: July 1 to June 30, you will
receive all issues of Pascal News for that year unless you request otherwise.
- please remember that PUG is run by volunteers who don't consider themselves in the
11
publishing business. 11 We produce Pascal News as a means toward the ena 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 individually every letter
and phone call. We desire to minimize paperwork, because we have other work to do.
- American Region (North and South America): Join through PUG(USA). Send $6.00 per year
to the address on the reverse side. International telephone: 1-612-376-7290.
- European Region (Europe, North Africa, Western and Central Asia): Join through PUG(UK).
Send~4.00 per year to: Pascal Users' Group/ c/o Computer Studies Group/ Mathematics
Department/ The University/ Southampton S09 5NH/ United Kingdom. Internati ona 1
telephone: 44-703-559122 x700.
>u
..........
Join through PUG(AUS).
_J - Australasian Region (Australia, East Asia -incl. Japan):
0
Send
$A8.00
per
year
to:
Pascal
Users
Group/
c/o
Arthur
Sale/ Dept. of Information
CL
Science/ University of Tasmania/ Box 252C GPO/ Hobart, Tasmania 7001/ Austra'lia.
International Telephone: 61-02-23 0561.
PUG(USA) produces Pascal News and keeps all mailing addresses on a common list.
Regional representatives collect memberships from their regions as a service, and
they reprint and distribute Pascal News using a proof copy and mailing labels sent
from PUG(USA). Persons in the Australasian and European Regions must join through
their regional representatives. People in other places can join through PUG(USA).
RENEWING? (Costs the same as joinin .)
- 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. Renewing for more than one year saves us time.
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 orint.
(A few copies of issue 8 remain at PUG(UK) available for~2 each.)
- Issues 9, 10, 11, and 12 (September, 1977 ~June, 1978) are available from PUG(USA)
all for $10 and from PUG(AUS) all for $Al0.
- extra single copies of new issues (current academic year) are:
$3 each - PUG( USA); i.2 each - PUG(UK); and $A3 each - PUG(AUS).
SENDING MATERIAL FOR PUBLICATION?
- check the addresses for specific editors in Pascal News. Your experiences with Pascal
(teaching and otherwise), ideas, letters, opinions, notices, news, articles,
conference announcements, reports, implementation information, applications, etc.
are welcome. 11 All The News That Fits, We Print. 11 Please send material single-spaced
and in camera-ready (use a dark ribbon and lines 18.5 cm wide) form.
remember: All letters to us will be printed unless they contain a request to the
contrary.
MISCELLANEOUS INQUIRIES?
- Please remember that we will use Pascal News as the medium to answer all inquiries, and
we regret to be unable to answer individual requests.

lSil

UNIVERSITY OF MINNESOTA
TWIN CITIES

The first reason is a red-herring - Pascal is probably more efficient
than FORTRAN on many computers, but the typical FORTRAN user has been
brainwashed into believing that nothing can be more efficient than
FORTRAN.
The simplicity of FORTRAN is superficial - true simplicity
comes from logical cohesion.
Certainly, FORTRAN 77 can 1 t be described
as simple: 11 feature-oriented 11 designs rarely are.
The really strong
card in the FORTRAN pack is its universality.
Every computer centre
has a FORTRAN compiler, they are reasonably compatible, and the
scientist can move his FORTRAN programs from place to place with
relative ease.
The reason for this is that FORTRAN has been around
for a long time, and has been stable for a long time.
It is this
stability that the new Standards are destroying.
Now, FORTRAN may
1 82 lurks in the wings.
be ANSI or 1 77.
These new versions are
appreciably different from the old, so FORTRAN loses its identity.
What gives a language an identity?
Partly its structure, mainly its
stability.
The FORTRAN philosophy seems to be that FORTRAN is
anything to which a particular connnittee chooses to give that name:
at a stroke they have destroyed FORTRAN' s most valuable assett.

University Computer Center
227 Experimental Engineering Building
Minneapolis, Minnesota 55455
(612) 376-7290

(* This is going to be a long column.

I apologize, but many important things need to be
said. The future of PUG is one of them! *)

I would like to thank everyone who has helped with Pascal User's Group and Pascal News.
Three far-sighted individuals to whom we owe special thanks are close by (at the University
Minnesota). Pete Patton is our Computer Center director and Larry Liddiard is our
associate director for systems. Phil Voxland is the director.of the Social Science Research
Facilities Center. Their encouragement and moral support gave us the chance to see Pascal
through to its widespread acceptance through the medium of Pascal News.
0. FORTRAN
Being a member (just joking) of ACS and SHAFT (American COBOL Society--dedicated to the
elimination of COBOL in our lifetime--and the Society to Help Abolish FORTRAN Teaching,
see PUGN #5) I've always wanted to write a short essay like David Barron wrote below. I'd
like to add that if the new FORTRAN compilers are written in assembler like most of the old
ones, then we should see instability as well. Pascal may make. its move on the large machines
especially at Universities!

:z:

rn

Whilst rejoicing over this development, we should not
lose sight of the moral for Pascal.
When it comes to determining
the usage of a language, having a good language helps, but most
important is to have a stable, widely available language.
That
way we can reach the situation where everyone knows Pascal and
everyone can use Pascal.
If we want Pascal to become a universal
language, then we must deny ourselves the indulgence of changing it.

FORTRAN - The End at Last?

D.W. Barron

The apparent indestructibility of FORTRAN as the preferred
programming language of users in the physical sciences has long been
a discouragement to those of us who try to spread the use of Pascal.
We have thought long and hard about ways to convert the FORTRAN
faithful, and concluded regretfully that it can't be done.
Readers
of Pascal News probably don't follow the activities of the FORTRAN
Standards Committee, and so will be unaware of recent developments
which indicate that the Standards CoIIllllittee is doing the job for us.
The specification of FORTRAN 77 has recently been published a hotpotch of 11 features" heaped indiscriminately on the existing
FORTRAN language in a way that is not downwards compatible.
The
CoIIllllittee has already started work on FORTRAN 82 and has published a
draft list of features of the 11 central module 11 •
Since such sacred
things as C in column 1 for comments, continuation in column 6 and
statements starting in column 7 are apparently to go, the result will
not even bear a superficial resemblance to the FORTRAN that present
day users know and love.
If you ask a scientist why he uses FORTRAN, his answer will
include some or all of the following reasons

i)

it is efficient

ii)

it is simple

iii)

it is universal.

Editor's Contribution

I. Recent Events (at least since PUGN #12)
A lot of people responded positively to the new Applications section started in #12.
~ope this issue's Applications section is just as worthy. There were also a few comments
rn favor of regularly featuring "Pascal in Teaching."
It 1 s been quite a while since #12 appeared and even though we have been flooded with renewals
and the enthusiastic remarks of "keep-up-the-good-work!", here I am putting #13 out very
late. I'm sorry. "13" is turning out to be unlucky indeed. Please see part II.

Part of the reason we're late is that it is hard to keep up.with the swirl of events
surrounding Pascal. So ...
~

t::!

rn
n

rn
::3:

~

I-'
LO

'-!

ImportantEvent of

co

Employment:
Plea~e see the letter from Chuck Beauregard in the Open Forum section.
People have been
calling me constantly on the phone for 6 months now trying to find Pascal people to fill
jobs they offer. So get the word out: IF YOU KNOW Pascal YOU CAN EASILY FIND A JOB.
Down goes another myth! (But, wow, it has been a struggle!)
---

ConcurrentPascal:
Per Brinch Hansen is trying to survey Concurrent Pascal users.
.):etter ·.ta the tmpleme1itation '.Notes section before February 28.

Please respond to his

NASA:
The ~nited States National Aeronautics and Space Administration (NASA) is making a strong
comm1ttment to Pascal. NASA Langley, NASA Ames, and NASA in Houston are all concerned
with reliable software in deep-space probes (such as the upcoming Galileo project). PUG
member John Knight (who is the CDC-Star Pascal implementor and convenor of the joint
SIGPLAN/PUG session at ACM--see below) has been keeping us informed. Thanks, John!
ConventionalizedExtensions:
In.#12.we described the formation of an International Working Group on Pascal Extensions
which is supposed to decide on a handful of conventionalized extensions. Please see the
section in Open Forum on Standards.

""O

::;:,.
en

rn

ti

Editor's Contribution
Standards:
The British Standards Institute Working Group (DPS/13/4) work on a Pascal standard (see
PUGN #14 for a working draft) should help lay to rest much of the standards controversy.
A revised version of the document will be accepted by ISO (and therefore ANSI in the
United States) in mid-1979. Politics with standards unfortunately keeps growing as
knowledge and use of Pascal grows. And unfortunately ANSI has decided to refer Pascal
standards business ta· a subcommittee called X3J9. See Standards in Open Forum.
PascalMachines:
One of our fondest wishes has been that hardware manufacturers help bridge the gap to
Pascal by building machin.es with friendlier architectures. In fact, long-time PUG member
Judy Mullins Bishop wrote her PhD thesis under Prof. David Barron investigating just such
a Pascal architecture, whjch among other things, would require minimal storage
requirements for object code . . same people keep saying tnat BASIC (BASICK) exists on
small personal computers and that Pascal implementations are too big. The fact is that
the popular small personal computers are now based on micropr9cessors such as the B080,
Z-80, 6800, and 6502 with dinosaur architectures (and with memories too small to do much
useful anyway!). Thus a Pascal implementation is at a disadvantage having to emulate
actions that should be performed in the hardware to begin with, and therefore consuming
more code space. The significant aspect of the widely-known UCSD (University of Calif.
at San Diego) Pascal project was to dispel the myth that Pascal couldn't run on a micro.
However,. iii order to be small, this implementation had to be kept interpretive (there
exist several cross-compilers of "hard code" for these micros from other sources). Also
because UCSD Pascal is a Pascal-P derivative, the P-code had to be modified and packed
ffrequency-encqded), The result is slower execution.
But, recently, Western Digital built an inexpensive chip-set expressly for running the
modified UCSD P-code, and a speedup of 5 or 10 is being realized. National Semiconductor
will probably do the job even better in a few months by building something closer to
standard P-code that will execute much faster. They have had something similar under
wraps for over two years! After being disappointed by Zilog and the Z-8000 a year ago,
it is good to see Western Digital take the courageous first step, made possible by the
people at UCSD. (Unfortunately we have been receiving altogether too many reports from
users that UCSD Pascal is not as stable as it should be, and that its non-standard
extensions are particularly lacking in robustness. For an example, see the
Implementation Notes section.)
Pascal Usage:
The Western Digital product brochure for its Pascal "Microengine" apparently misquoted
Keri Bowles of UCSD concerning: "there are more users of UCSD's Pascal today than users
of all other versions combined." This patently false statement has caused Ken some
embarrassment, and· although it's hard to get an exact figure, I'd estimate that nearly
8% (1 in 12) of all Pascal usage is on UCSD Pascal. Most usage is on PDP-ll's (nonUCSD) followed by IBM 370's followed by CDC machines and DEC lO's and 20's. To give a
specific example, the· venerable CDC-6000 implementation is running at over 300 (very
large) sites, and at just one of them (our University of Minnesota computer center)
the compiler was accessed over 272,000 times from 77/07/01 to 78/06/30 which
·represented a 68% increase over the previous 12 months. We have been trying to collect
usage data through the checklists in the Implementation Notes section and will try to
summarize them in one place in a future issue.
ExplosioninindustryLiterature:
Byte, Electronics, Creative Computing (ROM), and others have run full-1 ength articles
on Pascal. In fact the August, 1978 Byte was almost entirely devoted to Pascal! This
phenomenon is most encouraging because eventually the mainstream computer literature
will have to help carry news about Pascal if it is to supplant BASIC and other crummy
languages. Other computer journals (Computer World, for example) have kept Pascal in
the news this last six months and we appreciate it. The only bad side effect is that
the publicity has literally swamped us here at PUG central with mail and phone calls.
end(* case*) This leads to ....

II.

Pascal User's Group I Pascal News status

Running Out of Time
Just at the time when the mail was starting to build up last May, (it now runs between
10 and 30 pieces a day), our usually smooth-running operation became short-handed. Jim
Miner started going to school full-time. Sara Graffunder delivered a 2.81 kg baby boy
named David. (As an aside, Rich Stevens got married two days after Thanksgiving in
November!) Not just that, but standards politics, conventionalized-extensions politics,
and UCSD workshop politics all began to consume our time with very little in return (just
working very hard to stay still). The cover of this issue depicts the situation.
As if that weren't all, I do have my own full-time job to do here at the University of
Minnesota computer center. This summer we changed operating systems and character sets.
Because I am also involved with the project to produce a new release of CDC-6000 Pascal,
I was unable to work on PUG much at all this summer. Our mail went unanswered, and I
apologize.

V.J

New Members
This is the first academic year (July, 1978 to June, 1979) for almost 1000 new members, and
I wanted to assure them good service and information which would tell them what our style
is like. But after catching up with the mail in October (and returning all $4 renewals
arriving after August 1 thus allowing a 1-month grace period) and falling behind again, I
think I have disappointed quite a few people and I'm sorry. We have stated that we are
all-volunteer, and that we have little or no secretarial help, but you new members have
yet to read this sentence because you have received nothing from us unt"f'lnow! I urge
new members to get backissues from last year--see .the section on backissues in Here and
There.

t::J

Deadlines

n

rn

rn
We have received some sharp criticism from overseas PUG members (who, by the way
::3:
contribute most of the material for publication!) about the publications deadlines for
to
Pascal News. The fact is that we had no deadlines during 76-77 (issues 5-8) and everything rn
went well. When we began setting deadlines in the first line of the Editor's Contribution :::o
(issues 8-12) we never actually met a single one. Because we were always late in producing '
an issue, overseas members often received issues after the deadline for the next issue.
f-"
Solution:

let's go back to no deadlines,

If you have material, simply send it in.

tD

'-l
00

Confusion
Our mailing list has never been sold or given out. Any PUG members with issues of Pascal
News from #9/10 onward has the mailing list, because we print the roster. We have however
sent out a notice last month for the jointly-sponsored ACM SIGPLAN (Association for
Computing Machinery Special Interest Group on Programming Languages)-PUG session at the
national ACM '78 conference this December, and it is already causing confusion. We didn't
bring all the renewals up to date, and for many people, this is the first thing to be
received from us. If I were on the receiving end I would be confused too! We knew we
were going to be late with this issue, and that is why we sent the notice out.

I hate to paraphrase someone like Winston Churchill, but he said that sometimes doing your
best is not enough--sometimes you have to do what is required. Please read on in my open
letter in the Open Forum section.

-0

:i>
G')

rn
78/12/01.

TIDBITS
Ole Anderson, Corvallis, OR 97330: "I have a LISP interpreter that runs under the UCSD
Pascal system- Would anyone be interested?" (*78/05/19*)
David A. Beers, Santa Ana, CA 92701: 11 I very much enjoy reading Pascal News.
It is a
refreshing exposure to rationality when compared to my job as a business systems
programmer.
I have talked to Joseph Mezzaroba of Villanova Universiy concerning
his DOS/VS version of the AAEC Pascal 8000, and will be attempting to convert it to DOS
unless I hear of someone else's successful endeavors in this area. 11 (*78/10/25*)
C. Y. Begandy, Aluminum Company of America, AJ.coa Center, PA 15069: 11 ! recently obtained
the Pascal compiler from the DECUS library. Because of daytime core usage restrictions
at our installation, it is necessary to decrease the size of the executable program.
Any information you might have on other users' experiences in implementing either a
smaller version of this compiler, or a segmented version would be greatly appreciated."
(*78/05/26*)

Gerd Blanke, Eschborn, Germany: "·.. MODULA will be running on a Zilog MCS with 64K
under Rio near the end of this year! 11 (*78/10/27*)
John H. Bolstad, Department of Mathematics, Florida State Univ, Tallal;lassee, FL 32306:
11 We use Pascal here for al.most all computer science courses.
The system programmers
also use it." (*78/07/11*)
R. T •. Beute, Francis Wellesplein 1, B-2000 Antwerpen Belgie: "We are interested in a
special h~rdware support for standard and concurrent Pascal, for example microprogrammed
implementations of the P machine•" (*78/10/17*)
Robert Boylan, Metromation, Princeton, NJ 08540: "I know a PDP-11 version of Pascal is in
existence, but has anyone done one for a Modcomp mini?" (*78/07/26*)
David c. Cline, 'Westboro, Mass 01581: 11 Pascal is attracting ~ lot of attention here at
Data General as a takeoff point for a SIL. 11 (*78/05/11*)

Dennis R. Ellis, Cray Research, Boulder, CO 80303: "I have a COPYSF (copy shifted file)
implemented on a CRAY-1 written in Pascal using 11 lines of code. 11 (*78/08/07*)
Larry Ellison, ·computer Assisted Bible Study, Willingboro, NJ 08046: "I am serving as
coordinator for a group of Bible students who are going to use Pascal on various
micro-computers to assist in the study of the Bible." (*78/08/09*)
John Fitzsimmons, Edina, MN 55436: "It seems that every issue of PUGN has a few pleas for
insertions, deletions, or things they don't like about Pascal. Did it ever occur to
those of you who complain that the g g of us like the language as it is?" (*78/06/30*)
Lee Frank, BTI Computer Systems, Cherry Hill, NJ 08002: "·.. our Pascal is the systems
programming language for our new BTI-8000 and all our compilers are written in it. 11
(*78/06/16*)
Glen Fullmer, Tektronix Inc., Beaverton, OR 97099: 11Dear Lord, won't you buy me a new
programming language/ My friends all write Pascal/ I must make ammends./ p. s. We could
call it 'LACSAP'." (*78/10/31*)

Steven J. Greenfield, Unicorn Systems Company, Los Angeles, CA 90010: "I have been using
Pascal for the last six months to write an Assembler designed to generate code for any
object computer. Pascal has provided a powerful method of writing a transportable piece
of software." (*78/04/25*)
Dale H. Grit, Department of Computer Science, Colorado State University., Ft.
Collins,
CO 80523: 11At CSU, we're using Pascal in all upper level courses... next year, the 2nd
course will be Pascal." (*78/08/10*)

Here and There With Pascal

Marc Hanson, Hermosa Beach, CA 90254: "·.. I would appreciate learning about anyone's
experiences with running Pascal on either Xerox or Honeywell equipment. 11 (*78/05/04*)

Sam Hills, New Orleans, LA 70125: "I am implementing AUGMENT (from the last PN) on the
DEC-10." (*78/08/14*)
G. Steve Hirst, Iowa City, Iowa 52240: "CONDUIT (a consortium distributing computer-based
curriculum materials) is currently investigating including Pascal as a distribution
language for new materials • 11 (*78/08/07*)

=

rn

:JO:

Claes Hoienberg, University of Uppsala, Sweden: 11 UDAC is the computer center for the
Univ. of Upsala, Sweden's biggest university, and we hope to be able to use {UCSD}
Pascal for implementing a data-base management system on microcomputers." (*78/10/06*)

(/J

K. B. Howard, College of the Sequoias, Visalia, CA 93277: "We're interested in looking
into the possibility of using Pascal (in instucting beginning programming course) for
students aiming toward engineering and computer science fields, and are particulary
interested in learning of sources for compilers for the language, for PDP-11, HP-3000,
and/or Altair 8800 micro if possible." (*78/09/29*)
L. c. Hutchinson, Mentor, OH 44060: "·..
Modcomp Pascal users ••• 11 (*78/05/15*)

I would appreciate knowing if there are any

Jose I. Icaza, Universidad Autonoma Metroplitana - Azcapotzalizo, Mexico n.F., Mexico: 11At
this University, we are just starting to use Pascal and giving some optional
mini-courses about it. People seem to love the language.
Hopefully, soon i t will
replace FORTRAN as the first language students learn. 11 (*78/10/24*)

Dennis Kalthofer, Philadelphia, PA 19103: "I am starting a workshop in computer science
stressing the social aspects of the field.
I plan to use Pascal as the basis for
these systems and any further systems we develop, to organize our programming tecl\nique
and understanding, and for teaching people about computers and- programming in general,
as it illustrates many important computer concepts • 11 (*78/07 /11*)

t:::!

rn
n

rn
Richard H. Karpinski, San Francisco, CA 94114: 11Request that
software tools' or
'applications' solicit Pascal program modification tools, such as macro generators and
Praise for UCSD
programs to make names unique among the first N characters, etc.
system." (*78/04/18*)
Tom Kelly, Downingtown, PA 19335: 11 With regard to 'improvements·, '"extensions·, etc, 1
wbh. people would engage brain before putting mouth in. gear'. My (substantial) work
with several Pascal compilers over past year has shown me what a fantastic job Wirth
did! II (*78/07 /07*)

Neb Lafert, Hewlett-Packard (Schweiz) AG, Geneva, Switzerland: 11 • • •
relationship should be established between our two organizations,
every new request for Pascal in our country." (*78/09/25*)

1--'
lD

'-1

co

we think that a good
enabling us to help

Jerry LeVan, Dept Math Sc, Eastern Ky Univ, Richmond, KY 40475: "All of our CS majors
will be started on Pascal. We are using OMSI's Pascal. I am reasonably happy with the
implementation (it will compile and run Pascal-S) . 11 (*78/07 /ll*)
Stephen A. Locke, Beloit Corporation/Paper Machinery Division, Beloit, WI 53511: "I am
interested in Pascal for real-time control.of an industrial process... Is there anyone
you know working in such a direction?" (*78/06/05*)
Richard C. Lound, San Francisco, CA 94114: ur am an independent software consultant,
primarily in communications systems. My interest in Pascal is in its applicability to
use for generation of specialized message switching and front-end software. 11 (*78/08/02*)

Wilf Overgaard, Worldwide Evangelization Crusade, Fort Washington, PA 19034: "Where could
I locate a general ledger-bookkeeping program, in Pascal, for non-profit organization'l
Where can one find a good word processing program in Pascal?" (*78/08/31*)
Bill Marshall, Sanders Associates Inc., Nashua, NH 03060: "I had hoped to be the first
one on my world to implement Pascal on the VAX-11/780, but discovered a group at Univ.

'

.J

Here and There With Pascal

of Washington already we'.l:I, along toward' that goal." (*78/0·8/28*)

Jim McCord, Goleta, CA 93017: '!I am acting as the distributor for UGSD Pascal for b..Qbhy_
users of the LSI-11. Cost is $50, of which $35 goes to UCSD for continued work.
Other
$15 pays for documentation and postage, if user sends me four floppies.
(Else I will
provide for $3 each).
This includes all source code for everything, including the
interpreter. Anybody interested should get in touch with me (we already have 7 users)."
(*78/07/17*)
Michael Robert Meissner, University of Minnesota, Minneapolis, MN 55455: "Everybody talks
about portability of programs. This summer I ran into the portability of programmers.
I found that we can all get locked into thinking and depending on special features of
Pascal compilers, and have to "relearn' Pascal whenever we switch computer systems or
compilers."
(*78/10/20*)
Anne Montgomery, Lowry AFB, CO 80230: "McDonnell Douglas has developed a CMI/CAI system
~ere on Lowry Air Force Base called the.Advanced Instuctional System (AIS).
The AIS, as
its name implies, is used prima~ily for technical training.
The system currently
manages approximately 1500 students in four courses over a 12-hour production shift. 11
(*78/10/16*)
Roderick Montgomery, Somerville, NJ 08876: 11 1 am coordinating distribution of UCSD Pascal
to amateurs in the Amateur Computer Group of New Jersey, largest surviving hobbiest club
in U. s. September meeting of ACG-NJ will be devoted to Pascal." (*78/07/20*)
William Moskowitz, The California State University and Colleges, Los Angeles, CA 90036:
"I might add that Pascal at CSUC has been tremendously successful. During the past
twelve months we have had 68,603 accesses and usage continues to grow." (*78/07/17*)
David Mundie, 104-B Oakhurst Circle, Charlottesville VA 22903:
"I would like to
correspond with anyone having first-hand experience with the S-100 bus TI 9900 Pascal
system being offered by Marinchip Systems." (*78/10/06*)
John E. Newton, Randolph AFB, TX 78148: "I am specifically interested in identifying
members that have implemented Pascal on Burroughs 6700 hardware." (*78/07/20*)
Dave Peercy, BDM Corp., Albuquerque, ·NM 87106:
group of Pascal users." (*78/08/28*)

11

We at BDM are becoming a very interested

Sergi Pokrovsky, USSR Acad.
Sci., Novosibirsk, USSR: "I hope that s.
Pitin of the
Moscow Computing Center will shortly report to you on his (not so recent) implementation
of Pascal for the BESM-6 computer." (*78/10/31*)
Darrell Preble, Georgia State University, Atlanta GA 30303: "GA State Univ.
has
converted a Pascal compiler from SUNY at Stony Brook.
Originally written in XPL, it
uses either of two monitors to support interactive or batch use." (*78/09/05*)
David Rosenboom, York University, Downsview, Toronto, Canada M3J 1P3: 11My particular
interest in Pascal is in obtaining or developing a compiler for use on the 16-bit
Interdata machine...
Do you know of anyone who has developed a Pascal system for
Interdata 16-bit machines?" (*78/09/01*)
Axel Schreiner, University of Ulm, W-Germany: "Using (in Ulm) Torstendahl's RSX-11 Pascal
(love it) and Petersen's TR440 Pascal (not quite as stable) in beginner's courses."
(*78/06/19*)
Joeseph C • .fil!fil;:Q_, Varian, Palo Alto, ·cA 94303: "I will introduce Pascal to the North. Star
Users Group this month. A 30 minute talk is scheduled." (*78/10/30*)

Jim Smith, Computer Science Dept., School of the Ozarks, Pt. Lookout, MO 65726: "We have
recently implemented a Computer Science Department here as the School of the Ozarks, and
there is a need to increase the software library in the computer center. We feel that
Pascal would be an importanl language Lu pre•ent 1u the curriculum." (*78/09/08*.)
Craig A. Snow, TRW Communications Systems and Services, San Diego, CA 92121: 11We are very
interested in using Pascal to implement our future. software products. 11 (*78/05/09*)
James A. Stark, Oakland, CA 94609:
compiler on UCSF's 370/148 but I
either." (*78/07/17*)

11

Interactive Pascal via UNIX is way ahead of a batch
have no comparison on routine production jobs on

Ed Thorland/Walt Will, Computer Center, Luther College , Decorah, IA, 52101: 11 We are
still looking for information on an HP3000 implementation of P-code Pascal. Also need
documentation of P-code instruction-format and functions. 11 (*78/07 /11*)
p. J. Vanderhoff, Berkel En Rodenrijs,
Pascal release 2?" (*78/10/27*)

The Netherlands, "What happened to Stony Brook

Eiiti Wada, Division of Engineering, University of Tokyo Graduate School:
all the examples were switched to Pascal since the fall semester of 1972,
Pascal compiler became available in the summer of 1974. Since then at the
Tokyo, three versions of Pascal compilers have been installed, and all the
intensively used." (*78/09/08*)
Anna Watson, Panama City, FL 32407: 11 Very fascinating reading
magnifying glass before I go blind though." (*78/05/15*)

in News -

In my class,
and the first
University of
compilers are

11

must

obtain

Anna Watson, Panama City, FL 32407: "Is there a Pascal for a SEL 32/75?" (*78/10/07*)
t:::j

John West, Digital Systems Design Group, Atlanta, GA 30327: "Would like any information
about latest Pascal-P implementations on Interdata 7/16, 7/32, NCR 8100, 8200."
(*78/05/01*)
James A. Woods, Berkeley, CA 94703: "What's wrong with C?" (*78/08/24*)

PASCAL

IN THE NEWS

Byte, May, 1978: 11 Comments on Pascal, Learning How to Program, and Small Systems 11 ; A short
article by Gary A. Ford, Arizona State University, which talks about Pascal's advantages
and drawbacks with regards to personal computing. 11 I have used Pascal for at least 95%
of my own programming and I cannot recommend it too strongly. 11
Byte, August, 1978: "Pascal: A Structurally Strong Language"; A 6-page article describing
Pascal. Procedures for Infix to Polish conversion, and subsequent code generation for a
hypothetical micro are listed and explained.
Byte, August, 1978: 11 In Praise of Pascal 11 ; A quick survey of Pascal, with descriptions of
user-defined scalar types, sets, and pointer type variables.
A comparison of a Pascal
program and a BASIC program to its corresponding Warnier-Orr logic diagram is given.
Byte, August, 1978: 11 Pascal Versus COBOL"; Ken Bowles _shows how Pascal can be applied to
the traditionally COBOL-infested business environment.
Byte, August, 1978: "Pascal Versus BASIC 11 ; A comparison of a program 'MASTERMIND
Codebreaker' written in both BASIC and Pascal.
Mastermind is similar to the number
guessing game 'BAGELS', using colored pegs instead of digits.

Robert J. Siegel, Brooklyn, NY 11215: "Would like to see an article on the relationship
of Pascal to ALGOL." (*78/06/23*)

Byte, September, 1978: 11A 'tiny' Pascal Compiler, Part 1: The P-code Interpreter 11 ; The
first in a series of articles describing a Pascal compiler written for an 8080. The
first talks about parsing, and grammers, etc.
Parts of the P-code interpreter are
listed.

Seymour Singer, Hughes Aircraft Co., Fullerton, CA 92634: "We have installed
SLAG-Stanford Pascal compiler on our twin Amdahl 470 computers." (*78/07 /09*)

Byte, October, 1978: 11A 'tiny' Pascal Compiler, Part 2: The P-compiler11 ; The second part
of the previous, this describes the compiler portion.

the

C/)

rn
n

rn

Byte, November, 1978: The third part of the
executable 8080 machine code.

'tiny' Pascal series is to be on generating

Computer Week, May 12, 1978: "Pascal- Everybodys Language? 11 ; A short description of What,
Where, and Why of Pascal. 11 Pascal is named after the 17th century French philosopher,
Blaise Pascal. It is not an acronym and is written in lower case. 11
Computer Weekly, August 24, 1978: 11 GEC's Pascal 11 ; 11A Pascal compiler is being developed by
General Electric Computers (GBr) for its 4000 series machines.
will be available in
1979 ·"
Computer Weekly, September 9, 1978: 11Motorola to offer Pascal on MACS 11 ; 11 Giving futher
credence to the view that Pascal could become the dominant high level language of
microcomputing, Motorola Semiconductor has revealed that this software will be the prime
language supported on its new microprocessor MACS, due to be unveiled early next year. 11
Computerworld, April 17, 1978: 11 TI adds Pascal to Mini's Repertoire"; "A Pascal software
package said to be suitable for systems applications because its compiler and several
software modules are themselves written in Pascal has been introduced by Texas
Instruments Inc. for the firm's DS990 packaged disk-based minicomputer systems . 11 1 year
software subscription costs $1,500 to $2,000.
Computerworld, April 24, 1978: "Growth in Use of Pascal called Revolutionary"; A short
report, by Richard Cichelli, mentioning that Pascal is available "for the Zilog, Inc.
Z80 micro to the Cray Research, Inc.
Cray-1 supercomputer and for nearly everything in
between." Also, it gives the addresses of the PUG and DECUS/Pascal groups.

Computerworld, October 2, 1978: "DOD Expects Standard Compiler by 1981"; The u. s.
Department of Defense's new compiler is planned to be based upon Pascal. There is a
plethora of articles on this language (see July Sigplan Notices).
Computerworld, November 20, 1978: 11Work on Pascal Progressing 11 ; 11A technical committee
from the American National Standards Institute (ANSI)] ON Pascal has been approved to
work under the X3 committee on computers and information processing. Identified as X3J9,
the new groups' initial task is to prepare a proposal for sta:cidardization of Pascal and
to obtain approval of the proposal .•• 11 Justin Walker of the NBS will convene the first
meeting at the CBEMA offices on Tuesday, December 19.
"Interested people and organizational representatives are invited to contact Cathy A. Kachurik at Cbema/Standards,
1828 L St. N. W., Washington, DC 20036.
Computerworld, November 20, 1978: 11DOD language named 11 ; 11 '.ADA' has been chosen as the name
for the forthcoming Department of Defense (DOD) computer programming language.
The
language was named after the first programmer in history, according to Lt. Col. William
A.
Vlhitaker of the DARPA.
Ada Augusta, Countess of Lovelace, was one of the few
contemporaries of computing pioneer Charles Babbage who unders toad his work on calculating machines.
the first funded compiler, produced for the Army is expected in May
1981."
Computing Europe, September 1978: 11 Steelman ready next April ••. 11 ; More on the DoD's new
language.
Some background on what has been happening, plus some comments by Edsger
Dijkstra, who is a critic of the DoD's plans.

Computerworld, May. 8, 1978: "Pascal Attractive Anyway"; A Letter to the Editor from Saul
Rosen, Purdue University, 11 Pascal is a very attractive language. Here and at many other
colleges and universities, it is used extensively in computer science and computer
engineering c ours es • 11

Electronic Design 19, September 13, 1978: "Pascal isn't just one more computer language.
It promises to be simple, flexible and fast. 11 ; 11 This introduction to the Pascal
programming language is the first part of a series, based on ESI's Pascal Instruction
Manual. Future parts will deal in detail with Pascal statements, structured data, I/O
procedures, advanced programming techniques and real-world applications."
This is a
good primer to the language. About 5 pages in length. ·

Comouterworld, May 15, 1978: 11 Standard Pascal Compiler Runs on PDP-ll's 11 ; A description of
Oregon Minicomputer Software, Inc.
Pascal compiler, known as OMSI Pascal-1, which
generates assembly code that can be assembled and linked with DEC system utilities.
RT-11 can support this compiler.

Electronic Products, July 1978: "As IC it"; bylined by Jerry Metzger.
He mentions that
several IC houses and minicomputer companies have announced intentions towards using
Pascal.
"But standards need to be established.
The time is right to do this with
Pascal. 11

n

Computerworld, May 22, 1978: 11 Pascal ready for DG users 11 ; An announcement of Rhintek,
Inc. 's Pascal compiler for Data General Corp.
minicomputers running RDOS.
Cost is
approximately $1,000.

Electronic Enrlneering Times, October 16, 1978: 11 Pascal Implemented in Code of WD's First
Computer Offering 11 ; 11 Pascal has been implemented in the microcode of a new computer from
Western Digital Corp. , the first in a line of sys tern products to be announced soon,
according to the company. 11 11 This new system includes a complete Pascal operating systemPascal compiler, BASIC compiler, file manager, screen-oriented editor, debug program and
graphics package- all written in {UCSD} Pascal." Price is about $2,500.

::0

Computerworld, May 22, 1978: 11Northwest Melds 8085A, Pascal 11 ; 11 Northwest Microcomputer
Systems, Inc.
has announced a 'programmers workbench' that reportedly combines the
throughput of the 3 MHz Intel Corp. 8085A and the power of Pascal. 11 "The 85/P provides
the 'full Pascal environment,' according to the spokesman, including random and
sequential files, a screen-oriented editor, interactive source-linked debugger and full
documentation plus a 90-day warranty.Tl Cost is about $7500.
Computerworld, September 4, 1978: "University Working To Adapt Pascal For MDC-100 Use";
"Programmers here at the University of California are presently under contract to adapt
Pascal for use on the .American Microsystems, Inc (AMI) MDC-100 microprocessor development
center, according to an AMI spokesman."
Comouterworld, September 29, 1978: 11 The Waves of Change 11 , "Implementation languages and
the case for Pascal 11 ; one section of the multi-part excerpt of Charles P. Lecht's book,
The Waves of Change is devoted to a background of why Pascal is a successful language,
11 Pascal
and where it is being used.
is more interesting than other influential, new
development languages such as Algol 68, because it is apparent that jJ; ~designed for
software engineering purposes. (italics in original).
Computerworld, September 25, 1978: "Isam Logic, Disk Space Control Included in Micro-Based
Pascal/Q 11 ; An announcement of Pascal/Q, which is an enhanced version of Pascal which
11 includes support for Qsam,
Queue's enhanced Isam file access method, and for automatic
disk file storage allocation". Available for $300 plus $19/month for updates from Queue
Computer Corp.

Electronics, October 12, 1978: 11 Pascal becomes software superstar 11 ; "From the mountain
fastness of Switzerland there came 10 years ago a programming language called Pascal.
For the first few years of its life it created little stir, but then i t began to gain
popularity in academia and eventually industry. Today, Pascal is finding its way into
machines of all shapes and sizes around the world. 11 This is a good article which gives a
brief history, and the current usages of Pascal, from micra's to maxi's and small
applications programs to operating systems.
Scientific-Technical Book & Copy Center, Letter to Andy Mickel;
We would very much like to see a copy of Pascal News 11 •

11

Pascal is our best seller

Silicon Gulch Gazette, Volume 3, Number 3: "UCSD Pascal On An S-100 System11 ; 11Dr. Jim
Gagne of Los Angeles, CA, will . • • explain the joys and sorrows of implementing UCSD
Pascal on his small computer and the difficulties involved in the project." This is a
report on scheduled lectures during The Third West Coast Computer Faire, which took place
November 3rd and 4th.
From the preceeding: 11A Portable Compiler for a Pascal-like Language 11 ; 11 • • •
will be
described by Mark Green.
He will treat the problem of program portability.
Three
solutions to the problem will be presented.
As well, a particular piece of portable
11
software developed for the Micro Pascal Compiler will be examined.

t:::I

rn
rn
to

rn
I-'
tD

'-l

co

I

Communications of the ACM, October 1978, back cover: An advertisement for jobs with the
Technology Company; 11 devel~p a compiler for a sophisticated, Pascal-based
language with real-time multiprocessing features, extensive exceptionhandling facilites, global data modules, and other state-of-the-art characteristics. 11
Software

commu?-~cations

"{Softechs} compiler was produced on the UNIX system and later moved to RSX-11."
Timeshare, op.en letter to PUG membe:rs:

11

TSC has adopted Pascal as the primary implemen-

tation language for its LSill based products. • • • I t is, however, difficult to find
programmers experienced with Pascal and RTll (or RSX) and RSTS. 11 TSC is looking for
applicants with these qualifications (plus 2-4 years experience).

'

PASCAL IN TEACHING

-0
)>

This new section will report on experiences with Pascal used for teaching in computer
science. The first report is a nice survey done in Australian Universities by Jan

n

(/)

Hext from the University of Sydney. Following that is a report from Japan, and one
on a CAI system· developed at ETH Zurich. Jtldy Bishop at the University of Witwatersrand
in Johannesburg, South Africa, promised to send a description of a Pascal programming
contest held for undergraduates. Substantial prizes were given.

The University of Tasmania

AOVANCEO TECHNOLOGY
RESEARCH ASSOCIATES
P.O.BOX 456, MINNEAPOLIS, MN

.,
)>

:z
rn
(/)

Postal Address: Box 252C, G.P.O., Hobart, Tasmania, Australia 7001
Telephone: 23 0561. Cables 'Tasuni'

55440

Telex: 58150 UNTAS

11th October, 1978
Dear Andy,
I enclose some information which should be of interest to Pascallers.
A friend mf mine, Jan Hext fronn the University of Sydney, has been polling
Australian Universities to measure the extent of Pascal's penetration into the
teaching area. The sampling is very selective (ie. by membership of PUG!),
but many of the institutions not polled would either not teach computer science,
or would contribute insignificantly. There are exceptions, of course, notably
Monash University - I am reliably informed they are switching over in 1979.
Yours

sincerely~

t:::l

l!!!.---

rn
n

rn

Department of Information Science.

TEACHING PASCAL IN 1979
I-'

In order to survey the market for Pascal textbooks in 1979, a
questionnaire was sent to the universities and colleges listed in the
Pascal Users Group mailing list. Three questions were asked:
1.

How many students would be learning Pascal in 1979?

2.

Would they have learned any other language previously?
which one?

3.

What textbook would be recommended?

tD

'I
00

If so,

The answers are summarized in the table below. Allowing for a few selftaught students, etc., the main conclusion is tha t at least 2500 peop 1e
in Australia will be learning Pascal in 1979, of whom 1900 will be learning
it as their first language.
Also listed below are thirteen textbooks on Pascal which are either
available or else in press.
(612) 374-1293 or
PUG member Eric Hand, 2633 Dupont Ave S., Minneapolis, MN 55408 (612) 377-7387, informed
us that if you are tired of cumbersome COBOL, obsolete FORTRAN, or Brontosaurian PL/l,
you ~a~ show your support for.the best general-purpose language now available by
acquiring ~ Pascal-POWER T-shirt for $5.95 postpaid from ATRA. Sizes are S, M, L, and
XL for a lite-blue shirt with an artistic portrait of a smirking Blaise Pascal.

The enthusiasm for Pascal may be reflected in the fact that all of
the questionnaires were returned without any extra prompting. I would like
to express my appreciation to the people who so helpfully answered them.
J.B. Hext

00

Wirth: "Systematic Programming: An Introduction", Prentice-Hall, 1973.

Replies to guestionnaires
University or
Institute

Introductory
Students

As a Second Language:
students, first language

Wirth: "Algorithms and Data Structures = Programs", Prentice-Hall, 1976.

NIHON
Adelaide
A.N.U.
Melbourne

350

40, Fortran

250
200 (?)

-

320

-

Queensland

400

100, Fortran

R.M.I.T.
S.A.I.T

150

-

Sydney

-

Tasmania

120

-

W.A.
Wollongong

100

··-

Total

1890

100' Cobol
200, Fortran

595

A Report from College of Industrial Technology

78/08f03

Nihon University, Japan

Prof.H.Shima feel strongly the fruitfull effect of utilizing the Pascal language
in computer science education, and so he utilize that language in his class.
The year Prof.H.Shima started to introduce the language to the computer science course

of the department of mathematical engineering was 1976' academic year and 30 students
attended' to it's seminar.
The first sem~ster of 1977, he utilized Pascal for 110
students of junior enroll to the department in computer science class, and all these
times they useATlON

<.D

'I
00

LeBlanc, Richard J., "Extensions to Pascal for Separate Compilation", SIGPLAN
Notices, Vol. 13, No. 9, Sept. 1978.

MEMDER INSTITUTIONS:

CALIFORNIA INSTITUTE OF TECHNOLOGY

950 North Cherry Avenue

l'NIVERSITY OF CALIFORNIA
l'NIVERSITY OF CHICAGO
llAllVARD l'NIVERSITY
INDIANA l 1NIVERSITY
L1NIVEHSIT\' OF :\UCHIGAN
01110 STATE L1NIVERSJTY
PlllNCETON L'NIVEllSITY
L'NIVERSITY OF TEXAS AT AUSTIN
L'NIVERSITY OF WISCONSIN
l'ALE L1NIVERSITY
L'NIVERSITY OF llAWAll

P. 0. Box 26732

Tuesday evening, Nov. 21, 1978

Krouse, Tim, Electronic Design, Vols. 19 thru 23, 1978.
(* A continuing series of tutorials on Pascal *)

I-'

Lawrence, A. R. and Schofield, D., 11 SFS - A File System Supporting Pascal Files,
Design and Implementation", National Physics Laboratory, NPL Report NAG 88,
Feb. 1978.

Operated by The
ASSOCIATION OF UNIVERSITIES FOR RESEARCH IN ASTRONOMY, !NC.
Under Contract With The

L'NIVERSIT1' OF ARIZONA

Erkio, Hannu and Sajanienu, Jorma and Salava, Autti, "An Implementation of
Pascal on the Burroughs B6700 11 , Dept. of Computer Science, U. of Helsinki,
Finland, Report A-1977-1.

Tucson, Arizona 85726

AC 602 327-5511
Cable Address:
AURACORP, Tucson

Lecarme, Olivier and Peyrolle-Thomas, Marie-Claude, "Self-compiling Compilers:
An Appraisal of their Implementation and Portabil ity 11 , Software - Practice
and Experience, Vol. 8, 149-170 (1978).
(*The study is centered around a specific case, the programming language
Pascal and its many compilers *)

Andy,

Marlin, Chris
Proceedings
Conference,
at Dept. of

D., "A Model for Data Control in the Programming Language Pascal"
of the Australian Colleges of Advanced Education Computing
Aug. 1977, A. K. Duncan (Ed.), pp. 293-306. Available from author
Computing Science, U. of Adelaide, Adelaide, South Australia 5001.

Here is the Books and Articles section for #13. Thank the world for self
correcting typewriters. I promise to have thing.jhetter organized so that
my secretary can do the typing for #14.

Marl in, Chris D., "A Heap-based Imp] ementation of the Programming Language
Pascal ,"Software - Practice and Experience, to appear. Also available from the
author, see above.

I-'

a

Mohilner, Patricia J., "Prettyprinting Pascal Programs", SIGPLAN Notices, Vol. 13,
No. 7, July 1978.
Neal, David and Wallentine, Virgil, "Experiences with the Portability of
Concurrent Pascal", Software - Practice and Experience, Vol. 8, 341-353 (1978).
Posa, John G. ,"Pascal Becomes Software Superstar", Electronics, Oct. 12, 1978.
Posa, John G., "Microcomputer Made for Pascal", Electronics, Oct. 12, 1978.
Pratt, Terrence W., "Control Computations and the Design of Loop Control
Structures", IEEE Transactions on Software Engineering, Vol. SE-4, No. 2,
Mar. 1978.
(*Examples drawn from a Pascal Compiler*)
Sale. A. H. J., "Strings and the Sequence Abstraction in Pascal", Dept. of
Information Science, U. of Tasmania.

Sale, A.H. J., "Stylistics in Languages with Compound Statements", Australian
Computer Journal, Vol. 10, No. 2, May 1978.
Shrlvastava, s. K., "Sequential Pascal with Recovery Blocks", Software Practice and Experience, Vol. 8, 177-185 (1978).
Tennent, R. D., "Another Look at Type Compatabil ity in Pascal", Software Practice and Experience, Vol. 8, 429-437 (1978).
BOOKS
PASCAL: An Introduction to Methodical Programmin by Bil 1 Findlay and David Watt
U. of Glascow, Computing Science Dept. • Computer Science Press, 306 pp.;
UK Edition by Pitman International Text, 1978 (-£_4.95).
The book does not assume previous knowledge of computing, nor of advanced
mathematics. Emphasis is placed on programming principles, good style and
a methodical approach to program development. The technique of stepwise
refinement Is taught by consistent example throughout. In addition, two
major chapters are exclusively devoted to programming methodology. The
first is placed early enough to encourage good practice from the start.
It includes sections on choosing refinements, testing and correcting and
documentation. The second, at the end of the book, draws all the material
together in two realistic case studies. Since the whole language Is
covered, the book may be of value to those who wish to learn something of
the modern concepts of program structure and data structure, even if they
must use a language other than Pascal. Contents:
Part I: First Steps in Programming
Computers and programming; data and data types; the INTEGER type;
the BOOLEAN type; Boolean algebra; input/output; control structures,
WHILE and IF; methodical programming, Case Study I.
Part 2: More Data Types
CHAR, enumerated types, subranges; REAL; arrays.

Part 3: More Control Structures
CASE, FOR, REPEAT, GOTO.
Part 4: Subprograms
Functions; procedures, parameter passing, procedures and program

structure; advanced uses of procedures.

Part 5: More data structures
Records; strings; files; sets; pointers.

Part 6: Programming Methodology
Case studies 2 and 3, general principles.
Append! ces
Col !ected syntax diagrams; reserved words and special symbols;
predeclared entities; legible input and output; character sets.
Answers to selected exercises.

(*Author's information*)

Programming via Pascal by J. S. Rohl and Barrett (U. of Western Australia),
Cambridge University Press, in press.

(* Anybody have any more information on this text 1 *)
A Practical Introduction to Pascal by I. R. Wilson and A. M. Addyman, SpringerVerlag New York, 1978, 145 pp. ($7.90); MacMillan, London, 1978, (i;3.50).
Suitable for beginners and experienced programmers who wish to learn the

=

rn

complete Pascal language, this cone i se introduction includes

- Syntax diagrams and complete examples illustrating each feature of the

(/)

language;
- Simple problems introducing control constructs, expressions and the use

of procedures;

- A discussion of the concept of data type, followed by a complete
description of the data structure faci 1ities of Pascal;
- An analysis of more advanced procedures and dynamic data structures;

- Over sixty programs.
Contents:
Introduction. The form of a program and basic calculations.
constructs.

Variables, constants and expressions.

Basic control

An introduction to

input and output. An introduction to procedures and functions. Data types.
An advanced data type - the sequential file. Elementary structured types
1, 2, 3 and 4: Set, array, record and variant. Advanced uses of procedures
and functions. Dynamic data structures.
(* From publishers information*)
(* See below for review *)
The Desi n of Well-Structured and Correct Programs by S. Alagic and M.A. Arbib,
·Springer-Verlag New York, 197 , 292pp. $12. 0).
(*We are awaiting a review of this book from Duke Haiduk for next issue. *)
BOOK REVIEW
Programming in PASCAL by Peter Grogono
Addison-Wesley, Reading, Mass., 1978, 357 pp., $9.95.

t:::l

rn
n
rn
t:d

rn
:;o

Finally, an easy to read, lucid description of Pascal.
This book is described in its preface as being suitable for
an introductory progranuning course and in addition it should
be an excellent self-study text for the experienced programmer
who wants to learn Pascal.

I-'
LO

'-J
00

The author made a point to cover the entire language and
this is one of the book's strongest points.
(One of the other
texts on Pascal, A Primer on Pascal by Conway, Gries and
zinunerman does not cover the entire language, omitting sets,
functions, pointers, records and files). Grogono also includes
a good description of a specific implementation (the Zurich CDC
system) and this will help one appreciate the implementation of
the abstract language on a specific computer.
Another strong point of the book is that it is not just
a text on writing programs in Pascal, rather it is a text on
the Pascal language, intermediate data structures and structured
progranuning. The inclusion of a chapter on program design and
an appendix on program standards are a welcome addition to any
language description, especially if the book is to be used for
an introductory text. The data structures covered include
linked lists and trees.
The examples used in the text are excellent and well
thought out. Wirth's technique of stepwise refinement is
used extensively. An interesting table processing program is
provided to show that "Pascal, with a relatively small number

-0

;.,.
G'l

rn
I-'
I-'

of basic constructs, can nevertheless be used effectively to
solve problems outside the domain of academic programming."

CO N F E R E N C E s

There are very few complaints that I have with this book.
Each chapter is followed by a group of exercises (solutions
are not provided) and some indication as to the relative
difficulty of each exercise would be helpful.
There are
relatively few typographical errors.

We received recently, the latest Bulletin de Liaison du Sous-Groupe Pascal no.4
from Olivier Leeanne in France. He of course heads the French AFCET Pascal Group.
This issue of the Bulletin was 125 pages long and is beginning to look like an issue
of Pascal News! It contained an editorial, bibliography, list of Pascal implementations,
and seven articles. Most interesting was the detailed commentary about the International
Working Group on Pascal Extensions supplied by Olivier, and if we only had the time, it
would be the quickest thing to do to translate and print in the Open Forum section.
The contributions in the articles section are:

All in all the book is excellent and a long awaited
addition to the Pascal literature.
W. Richard Stevens
BOOK REVIEW
A Practical Introduction to Pascal by I. R. Wilson and A. M. Addyman
Springer-Verlag, New York, 1978, 145 pp., $7.90. ISBN 0-387-91136-7.
This book admirably fulfills the promise of
well-organized tutorial on how to write programs
language is presented in fourteen short chapters.
attention paid to the data structuring facilities
chapters deal directly with data structures.

its title - it gives a concise,
in Pascal. The complete
Particularly notable is the
of Pascal: fully six of the

After an introduction in Chapter 1, the basic structure of a complete Pascal
program is shown in Chapter 2. Chapter 3 describes the control structures
avai~able in the language and gives advice on their use (including obligatory
warnings about GOTO's). Chapters 4 and 5 discuss variables constants
expressions, and input/output. Chapter 6, 11 An Introduction' to Procedu~es and
Functions 11 , is especially good: the appearance at this point in the course of
the presentation of these concepts is well-motivated and natural. Also, Pascal 1 s
parameter mechanism is explained nicely. Chapters 7 thru 12 discuss data types
including files and record variants. Procedures and functions are revisited in
Chapter 13 to show recursion and in Chapter 14 pointers are introduced in the
context of "dynamic data structures". Each chapter is followed by suitable
sets of exercises(easy) and problems (hard). There are four appendices: the
completesyntax, delimiter words, answers to exercises and suggestions for
solutions to the problems, and a note about the Pascal User 1 s Group.

-

Pointe~s; False Problems and Real Insufficiencies by M. Gauthier.
A Graphic Extension for Pascal by N. & D. Thalmann.
The "Mentor 11 System: A Pascal Programming Environment by P. Maurice.
An Aspect of TSIMONE: A Version for Pascal Program Profiles by D. Renault.
Where is the Standardization of Pascal? by 0. Leeanne.
A Comparison and Contrast between Concurrent Pascal and Modula by R. Rousseau.
An Efficient Method of Controlling Type Unions by Nguyen Van Lu.

An ACM/SIGPLAN - Pascal User's Group sessions is being held at ACM '78 in Washington DC.
See below.

The Australian Computer Science Conference will hold a workshop on Pascal. The conference
is scheduled for February 1 and 2 in Hobart, Tasmania. Arthur Sale, of course is the
host and is currently serving as vice-president of the Australian Computer Society. This
is the second year for this conference~
It was successfully launched under the name
Australian Universities Computer Science Conference which was enthusiastically received
last year.
Finally the University of California at San Diego (UCSD) Summer Workshop on Extensions
was held this last July and has been reported on by Richard Cichelli below. I was
promised, but did not receive, reports by Jeff Tobias, Arthur Sale and Ken Bowles.
The major results of the Workshop were to get together a variety of computer manufacturers
with some dyed-in-the-wool Pascalers. The Workshop rebuffed nearly all proposed
extensions except those referred to the International Working Group on Pascal Extensions
(such as otherwise for a case statement--see Open Forum under Standards). The members
of the Workshop including the more than 15 manufacturers unanimously endorsed a motion
to support the speedy adoption of the BSI/ISO Pascal Standard under development by
Tony Addyman and his team . .. see Open Forum.

t:::J

rn
n

rn

f-'
LO

The pace of the presentation is even and well-motivated. New syntactic
forms are introduced with simplified syntax charts andexamples and their semantics
are conveyed by incisive programs or program fragments. Particularly useful for
the new Pascal user is the printing of programs as they might actually be
1i7ted a~ongwith those ugly digraphs"(*" and"*)". Keywords are, however,
printed 1n boldface. Example programs are developed in good style - stepwise
refinement and top-down design are advocated and used.
The book is not above some minor criticism: some references are too broad
"· .. readers are referred to Coleman (1978), Dahl et al. (1972) and Aho et al.
(1974) ·"appears on page 69; refinement of program steps proceeds from comments
expressed in P~sca1 comments later in the book {page 60, ff) but by lowercase
fragm:nts earlier (page 19, ff); there are a few misprints. Also, some of the
exercises and example programs would be easier to understand if samples of their
input and output were presented.

=

rn

'-I

co

SIGPLAN
Association for Computing Machinery
1133 Avenue of the Americas
New York, NY 10036

REPLY TO:

SPECIAL INTEREST GROUP ON
PROGRAMMING LANGUAGES

Mail Stop 125A
NASA Langley Research Center
Hampton, VA 23665

(212) 265-6300

July 24' 1978

In summary, the book is a welcome addition to the Pasca'l literature.
Jt
is physically attractive and provides an excellent introduction to the language
for beginning and experienced programmers alike.
R. Warren Johnson
Department of Mathematics and
Computer Science
St. Cloud State University
St. Cloud, Minnesota

Ll

Dear Andy,
An informal evening session devoted to PASCAL will be held at the l9'T8 ACM
conference which will take place December 4-6, l9T8, in Washington, D.C.
The purpose of this session is to allow all conference attendees who are
interested in PASCAL to get together and interact.

:J:>
UJ

rn
f-'
N

This is not a technical session in the usual sense. However, in order to
convey the most information, it will consist, at least in part, of a series
of short presentations (i.e., approximately 10 minutes) on PASCAL related
topics. A presentation can address just about anything related to the
language and its software; e.g., experience with PASCAL, tools for PASCAL
programing, implementations, etc. Anybody who is planning to attend ACM 'TB
and who is interested in making a presentation should send a short description of what they will discuss by October 1 to:

John C. Knight
Mail Stop 125A
NASA Langley Research Center
Hampton, Virginia 23665
Presenters will be infonned of their selection by November 1.
The purpose of requesting descriptions is not to perform any refereeing or
technical judgment, but merely to allow a balanced program to be prepared
for the limited time available.
Sincerely,

(
'-'John C. Knight
SIGPLAN Representative
1978 ACM Conference Program Conmittee

THE UCSD PASCAL WORKSHOP
by
Richard J. Cichelli
ANPA/RI
Lehigh University
This is a personal report of my experiences with the UCSD Pascal
Wonkshop held by Dr. Kenneth Bowles at the University of California at
San Diego during July of 1978. I will discuss my own role at the
workshop, and in no way should this report be considered a report from
the workshop participants as a whole.
In M9.y of this year, I received a letter from Ken Bowles inviting
me to attend his planned workshop, the purpose of which was to "standardize
extensions to Pascal". Ken and I had spoken about his efforts in putting
Pascal on small machines previously at the ACM 1977 Conference. After
seeing the UCSD Pascal system in action, I was convinced that it was
excellent technology and held great promise for both educational and
commercial applications. I reviewed Ken's book, Microcomputer ProblemSolving in Pascal, for.PN #11 and sent a pre-publications copy of that
review to Byte Magazine. Upon receiving this review, Carl Helmers
began his own interaction with Ken concerning the UCSD system.
At ACM'77 Ken talked to me about the language changes that he felt
small systems required. He spoke of the lack of viable Standards
activities within the Pascal Users Group and his willingness to organize
a Standards workshop. I suggested to Ken at that time that Standards
were something that the Users Group would soon be more involved with and
that his help on a PUG Standards Committee would be welcome. I was truly
surprised and chagrined to hear of Ken's organizing his own Pascal

Workshop. I have never felt that the precision of expression and depth
of' understanding necessary for Standard-related activity was the type of
thing done well by implementation-oriented individuals. Even more
important was the fact that effective international Standards activities
had already been initiated in PUG under the direction of Tony Addyman
and an Extensions Working Group has been formed chaired by SteengaardMadsen. Dr. Wirth was helping this group with their activities.
On June 1, I sent a letter to Ken expressing my concern about the
UCSD project. The text of the letter is as follows:

rn

"I have given careful thought to your invitation to participate
in the UCSD workshop. ANPA was a member of 27 associations that
participated in the acceptance of the 1966 ANSI-FORTRAN Standard.
We consider our endorsement of programming language standards of
great importance to our 1200 newspaper members and are sure that
Pascal will have a major impact on future newspaper computer systems.
Unfortunately, no matter how well meaning your efforts towards
standardized extensions are, we believe the appropriate review and
evaluation activities should lie wholly within the Pascal Users
Group. We would welcome your initiative in being part of a PUG
Standards Committee but neither ANPA nor I will support or endorse
any self-proclaimed UCSD Pascal modification adventure."
Copies of the letter were forwarded to the Standards Committee, the
Working Group, and Andy Mickel. My primary concern with the UCSD effort
was that any extensions agreed to by the UCSD Group would become a
defacto Standard and "enhanced Pascal" would go into competition with
Standard Pascal. I very much felt that most of the UCSD deviations from
the Standard were simply inappropriate.
I was 'sure that most, if not
all, of the UCSD language modifications would be rejected both by the
Working Group and the Standards Committee. I firmly believe that the
UCSD interactive systems feature good engineering. However, like most
new implementations derived from the Zurich produced p!f system, the
UCSD Pascal fails to implement important parts of the Standard and has
extra goodies implemented in ways inconsistent with either the Standard,
or worse, the recommended extension technique.
Upon returning from a business trip, I found that Ken had placed an
urgent call to me. I returned his call and spent 2 hours talking with
him. Ken was very concerned about Andy Mickel 1 s reaction to the UCSD
project. Andy and I shared similar reservations. During the
conversation, Ken invited me to attend the workshop as a PUG representative
instead of as a member of a contributing organization. I said that I
would give consideration to this idea.
During the month of June I had many conversations with Andy and
other potential workshop attendees. Upon receiving a document titled
"Checklist of topics for the UCSD Workshop on Pascal Extensions" that
consisted of more than 75 items, I was even more concerned. In my
opinion, adoption of changes proposed in this checklist would effectively
rape the Pascal Standard. My primary hope at that point was that no one
would want to go to the UCSD workshop. Bob Dietrich of Tektronix made
a number of telephone calls to me indicating first, that Tektronix was
interested in participating in such a workshop and second, that he felt
as I did about most of the checklist items. He assured me that many
other potential workshop participants felt as I did about the Standard
and about these UCSD extensions. He felt that if the issues were
properly dealt with, it was likely that the consensus of the workshop
would be to reject almost all of the proposed extensions. In later
conversations with Ken, he himself also assured me that rejection of
ill-c'?nceived extensions would be an important activity of the workshop.
By this time it was clear that there would be a number of participants
in the workshop and that it was important that those workshop partic:Lpants
who were responsible for corporate implementations of Pascal hear

f-'

w
'-J

co

arguments in favor of adhering to the Standard. Andy.informed me that
because of prior committments he could not attend the workshop to
represent the Users Group. He asked me to do so in his stead. Also
charged with a similar mission were Jim Miner, Arthur Sale, and Bob
Johnson. Since Andy, Bob, and I founded the Pascal Users Group, we hoped
to be able to effectively represent membership as a whole at UCSD.
At this point I accepted Ken's invitation to attend the workshop.
I also agreed to attend a pre-workshop meeting of like-minded individuals
that was the brainchild of Bob Dietrich. Of particular help in formulating
a "pro-standard" position was the extensive work done on the checklist
by Mike Ball.
The week at the conference was one of the most interesting and
challenging of my computer science career. By the Sunday meeting we
had all found out where the UCSD group stood as far as the extensions
were concerned. It seems they had already decided to endorse most of
these ill-conceived ideas by actually implementing them within the UCSD
software system. Shortly after Ken's initial address to the more than
50 participants of the workshop, a number of participants suggested
that the overall goals for the workshop be clearly laid out before
specific consideration of the checklist items began. A number of views
in addition to Ken's were presented on this topic and I was asked to
speak on this "as a representative of the Pascal Users Group". Most of
the workshop participants were chosen by Ken because they were members
of Pascal implementation teams at various large companies. These people
are used to identifying problems and developing solutions. I am sure
they did not welcome hearing from me that I believed they should act
only in an advisory capacity and defer final evaluation to a Standards
Conunittee within PUG. I am sorry that I don't have a complete transcript
of the extemporaneous talk I gave addressing this issue, but the most
important point that I tried to make was that ad-hoc solutions to
perceived problems with Pascal were to be preferred to hastily
conceived and implemented changes to the language Standard. I assured
the group that if they chose to take a united stand favoring an array
of extensions, the changed language would be a competitor to Standard
Pascal, much to the detriment of the user community.
One of the problems in giving this talk was that Ken asked me to
present the issues not in the general framework that I just outlined
but instead as an item by item review of "how do you do 'x' ?" (where 'x'
might be direct access files, overlays, complex numbers, strings, etc.).
My general statements included a suggestion that the only types of
extensions that should be considered at all a.re those which 1) are
consistent with the design goals of Pascal, and 2) add a facility not
implementable in Standard Pascal. For example, in talking about segments
and overlays I suggested that such concepts had nothing to do with the
problem solved by an algorithm but only with how a compiler translated
the algorithm expressed as a program into executable code for a particular
operating system. I suggested that if it was necessary for the compiler
to know about overlays, then this information should be incorporated in
compiler directive comments. (Pascal-6000 needs no such compiler
directives for overlayed programs.) I suggested, addressing the issue
of complex numbers, that they are easily created within the standard
mechanisms of the language. ·I also noted that direct access files are
being considered by the European Working Group. I also mentioned that
at Lehigh University we have used direct access files extensively and
do so by calling external library routines. Since, at Lehigh, more
than four different systems of direct access file support are utilized
by Pascal programmers, I suggested that reasonable men would differ as
to what constituted a good set of primitive functions for accessing
such datasets. I suggested that where adequate ad-hoc solutions exist
and no consensus about them exists, no Standard should be imposed. By
not creating a Standard for such an item, experimentation is encouraged.
From this experimentation better solutions can be derived.

During the next three days we broke into subcommittees to consider
checklist items one by one. It was Ken's idea that subcommittee sessions
would be recorded and "where consensus was reached on an item a consensus
position would be prepared". Each subcommittee had one or more UCSD
students or faculty members on it to help in recording and transcribing
the group's deliberation. A few of these individuals acted as monitors
on their subcommittees.
I worked with what was called the Expressions Group. Our approach
was more formalized than some of the other groups. In addition to myself,
the members of the subdommittee were Terry Miller (moderator), Steven
Dum of Tektronix (recording secretary), Ruth Richart of Burroughs, Skip
Stritter of MOTOROLA,
and Don Baccus of OMSI. We began by
considering each of our 15 topics one by one. For each topic we first
stated exactly what our recommendations were and then we presented our
reasoning that went into the recommendation. For examp,le: Item 3.2 on
our list was -- "provide for short circuit AND and OR.' The text of
our recommendation is
We recommend that AND and OR should be left as defined. I.e.
the implementor may choose short circuit or complete evaluation,
user beware!
Short circuit AND and OR (CAND and COR) can be programmed
around in existing Pascal. They are a minor extension. The
majority of the group felt that the cost of implementation
(size, introducing features, etc.) does not justify the benefit.
We firmly reject the concept of introducing complete evaluation
operators such as LAND or LOR.
On item 3 .4 -- "provide for exponentiation" -- we made the following
recommendations:

3.4 We recommend rejection of exponentiation as an infix operator
or standard function.

It is possible to provide a predefined function POWER or to
write it as a Pascal function with the parameters defined as
FUNCTION POWER (A,B:REAL):REAL;
We felt that it was not necessary to add a function to raise
an integer to an integer power as most usage of exponentiation
seems to be satisfied with the real form.
I have the highest regard for the people that Ken recruited to
participate in his workshop. Ruth Richart, for example, is a principal
implementor of a new sys.terns language that Burroughs is using. This
langua~e is modeled after Pascal.
On item 3.2 (the short circuit AND
and ORJ, she pointed out that on Burroughs machines the short circuit
evaluation is significantly less efficient than full evaluation in most
cases. Burroughs machines are exceedingly efficient on stack operations
(and thus super expression evaluators) and not nearly so efficient on
conditional branches. We concluded that it was important that the
implementor of a Pascal compiler be given the freedom to choose the
optimal evaluation technique.
As we worked on each item, we followed Wirth's suggested procedure
for considering extensions. First, we introduced the extension in a
tutorial fashion to the subgroup. Then we showed how the extension
would be used in practical programming. Then we discussed its relationship
to the language standard and its implementation consequences. It was
interesting to note that in the AND/OR controversy the UCSD supplied
example program was clearly not of the best design. After exploring the

1--'
LO

'-I
00

issue for some time, it became clear that short circuit evaluation was
most often used in an attempt to sneak past undefined conditions. This
led actually to a suboptimal or less clear presentation of the algorithm.
It was this kind of discussion that gave us confidence in our recommendations.
At the conclusion of the day's meeting, Steve Dum took our carefully
worded notes and typed them into one of the UCSD Terak systems. A little
quick editing and we had line printer copy of the day's discussion. The
next day we made multiple copies of our preliminary statements on the 15
items. All members of our subgroup were chagrined that the other groups
did not have written statements of their recommendations. At the
conclusion of the general meeting on Tuesday, all subgroups were
directed to go back and produce concise, well-worded descriptions of
their recommendations and deliberations. And the Expression Group was
asked to consider seven more items. Meanwhile Bob, Arthur, Jim and I
were meeting before the workshop sessions began and after the workshops
ended each evening. We were attempting to formulate an appropriate
policy statement for PUG which would guarantee that what constituted
Pascal was defined by the PUG membership. In this effort we sorely
missed having Andy with us to help formulate policy.

Jim Miner presented the PU~ working position paper to the workshop and
it was greeted with applause.
It is my opinion that the result of the first week of the UCSD
workshop was to strengthen the Pascal Standard and to reaffirm the
pre-emminence of PUG with regards to Pascal. One of the most important
factors of that week was the acceptance by all workshop participants of
the following "agreement in principle":
At the time the workshop convened, two major activities with
respect to the definition of the language Pascal were already
underway. The International Standards Organization had begun working
on a complete definition of the Pascal language in light of the
shortcomings of the Jensen and Wirth document. A Working Group
focused around Steensgaard-Madsen had begun working on extensions
to the Pascal Language aimed at correcting a few well-known
deficiencies in the language, In light of these activities the
workshop assumed as its primary goal to address well-defined,
consistent, application-oriented extension sets and agreed to pass
to the other two bodies such recommendations and information
deemed appropriate to their work.

By Thursday the work of the subgroups neared completion. Also a
number of individuals in the workshop indicated interest in working thru
PUG on implementations and standards. The following position paper was
developed by the PUG representatives and Andy was consulted and asked
to have his name included on the paper:

The workshop recognized the existence of possible modifications to
the Pascal Language which, due to the impact throughout the
language, would de-facto create a new language and decided not to
act on these modifications at this time.

PUG Working Position

In order to achieve the purposes stated above the workshop has
resolved to:

(1) In October PUG will publish a proposed constitution.

Upon acceptance
of the constitution by the PUG membership, election of officers will
take place. It is hoped that by January 1, 1979, a formal governing
structure for PUG will be established.

I. Publish and distribute the Proceedings of the workshop. In
particular the Proceedings will be forwarded to ISO, the Pascal
Users Group, and the Steensgaard-Madsen Working Group.

(2~.

A draft of the ISO Pascal Standard will be published by the end of
1978 for member reaction.

II. Organize a structure which will permit the orderly continuation
of the work begun at the meeting in San Diego.

(3)

An implementation subgroup will be formed to coordinate the
enhancement and distribution of portable compilers and to facilitate
correspondence among implementors. A new section of Pascal News
will inform the membership of these activities.

III. Provide a mechanism to reinforce the importance of Standard
Pascal by agreeing that all compilers purporting to support the
programming language Pascal should include a variant of the
following statement in the source code and all documentation:
"The language --(1)-- supported by this compiler contains the
language Pascal, as defined in --(2)--, as a subset With the
following exceptions:

(4) A standards subgroup will be formed.

It will distribute (for a
reasonable fee) a Validation Suite. An incomplete version of the
Suite constructed under the direction of Brian Wichmann (developer
of the Algol 60 Validation Suite) and distributed by R. Cichelli
will be available during September, 1978.
The first will be in October, 1978.

rn

t::::1

rn
n

rn
3
t:d

rn
::.:0

I-'
tD

'-I
00

{a)

features not implemented
--(3)--

(5) Actual proposals from the International Working Group will appear
in Pascal News.

=

(b)

-- refer to page --

features implemented which deviate from the Standard format

PUG aid to the UCSD Workshop
(1)

Pascal News will publish (subject to length constraints) a report
of the UCSD Workshop and will help to distribute the full Workshop
report.

(2)

Pascal News will publish a new section on solutions of and
commentary about significant programming problems which may be
outside the scope of the Pascal Standard.
Andy Mickel
Richard J. Cichelli
Robert Warren Johnson

James F. Miner
Arthur H. J. Sale
July 13, 1978

Notes:

(1) insert the name of the dialect
(2)

(3)

insert "the Jensen and Wirth User Manual and Report" or
"the ISO draft standard" or "ANSI Pascal standard" as
appropriate
A brief statement plus reference to more detailed
information will suffice. The list should be as complete
as possible.

"

::c>
G>

rn

REVIEW OF PASCAL NEWS

9/10, 11, AND 12

Backissues of Pascal News 9/10, ll, and 12 are still. available, and will be for the
forseeable future. Therefore I would like to urge all new members to consider obtaining
them so that you will be better oriented to events in our recent past. Issues 1-8 are
unfortunately out of print. 1-4 are described in detail in issue 6; 5-8 are described
in detail in issue ll; 1-8 are briefly described in issue 9/10.
I f you want to know generally what is important, then issue 9/10 contains the base

PUG, and a complete survey of Implementations. It also contains the last
bibliography and list of textbooks to date. Issue 11 contains the worst collection of
wild proposals to extend Pascal, and the terrific article on type compatibility by
Pierre Desjardins. An errata to old printings of Pascal User Manual and Report is in #11.
Issue 12 contains our first applications sections with two important software tools:
COMPARE and a pair of programs for Performance Measurement.

~for

All three issues contain important information about Pascal standards ..
Pascal News #9/10 (combined issue), September, 1977, Pascal User's Group, University of
Minnesota Computer Center, 220 pages (ll4 numbered pages) , edited by Andy Mickel.
Editor's Contribution: Pascal jobs, a list of computer companies using Pascal, Pascal on
personal computers, current information on the status of PUG and Pascal News:
printing error in 118, Australasian distributio.n center, change in the name of
Pascal Newsletter to Pascal News, new policies, back issues, growth in membership,
and PUG finances.
Here and There: Tidbits (9 pages), reports from German and French Pascal conferences,
Books and Articles classified by applications, languages, textbooks, and implementations; Bibliography of 68 entries; past issues of Pascal Newsletter (1-8);
PUG finances for 1976-1977; Roster 77/09/09.
Articles:
11 Pascal at Sydney University 11
-Tony Gerber and Carroll Morgan
[A description of implemented (proven) extensions and changes to the CDC-6000
Pascal compiler in use at Uni of Sydney. These include operating system interface,
ability to read strings, read and write user-defined scalar types, case statement
extensions, and two machine-dependent extensions. The conclusion sta:te's that these
changes to the· compiler have not detracted from the overall efficiency of the
compiler, and that 2-year's use has vindicated the inclusion of these extensions.]
11 Disposing of Dispose"
-Stephen Wagstaff
[An argument for an automatic garbage collection system for dynamic variables in
Pascal is made, thus obviating the need for, and the risks associated with, usercontrolled de-allocation (e.g. DISPOSE). Complete protection from "dangling"
pointers may be obtained.]

"What is a Textfile?"
Bill Price
[The definition of the pre-defined type Text in Pascal as File of char is in error
and because of this lapse, complex special-case notions are introduced as
primitive concepts. A new, more useful understanding and definition of the
textfile notion is proposed.]
"Generic Routines and Variable Types in Pascal 11
-B. Austermuehl and H.-J. Hoffmann
[Generic routines and variable types, as introduced in ELl are a means to postpone
the binding time of routines and data. An examination is given of what degree
such features may be carried over to Pascal without severe violation of the static
type checking requirement. The conclusion is made that generic routines fit into
Pascal, while vari1ble types have to subject to strong restrictions~ Variable
types may only be used in connection with a special syntactic form.]

Open Forum:
77/05/10 Arthur Sale to Andy Mickel: [Australasian distribution Centre, CDC-bias: files,
program heading, Burroughs 6700 implementation on 7700, 6800, etc.]
77/05/24 Tony Gerber to Andy Mickel: [PUGN distribution to Australia, why haven't you
printed our paper, Pascal not Utopia 84, extensions to Pascal 6000.]
77/06/01 Richard Cichelli to Andy Mickel: [Each issue of PUGN better, software tools,
an applications section in PUGN.]
77/06/16 Mike Ball to Andy Mickel: [Interdata 8/32 Pascal, Univac 1100 Pascal, proposed
extensions to standard Pascal, proposed standard for editing format and distribution
of Pascal software tools and programs.]
77/06/16 Peter Grogono to Andy Mickel: [standardizing Pascal--preserve its simplicity,
change to Read procedure for error recovery, especially for interactive programs.]
77 /06/24 Wally Wedel to Andy Mickel: [CDC-6000 and DEC-10 Pascal at the Univ. of Texas,
standards via X3 and experience from X3J committee.]
77/07/22 George Richmond to Andy Mickel: [Keep up the good work, support for preserving
standard Pascal. Distribution at Colorado is now running smoothly.]
77/07/28 Neil Barta to Andy Mickel: [Pascal jobs available at ADP Network services,
using Nagel' s DEC-10 Pascal compiler.]
77/07/29 Stephen Soule to Andy Mickel: [Pascal competing with FORTRAN: variable-initialization, own variables, flexible array parameters, textfiles and variantrecords in formatting:]
Special Topic: Micro/Personal Computers and Pascal
77 /07 /08 David Mundie to Andy Mickel: [Zilog rumor about Pascal machine, letters to
personal computer journals,, game programs in Pascal, ·11ke variant records.]
77 /06/27 Larry Press to Andy Mickel:. [Would like to publish work from PUG members in
SCCS Interface to counter BASIC proliferation.]
77/09/01 Maria Lindsay to Andy Mickel: [Microcomputer library and resource center in
Madison Wisconsin very interested in Pascal materials.]
77/08/24 Jim Merritt to Andy Mickel: [disagree about pressing supposed advantage on micro
computers. UCSD Pascal project may hold future hope, UNIX Pascal information.]
77 /09 /06 Carl Helmers to Andy Mickel: [Will write editorial in the December BYTE for
Pascal. Pascal an excellent choice to succeed BASIC]
Special Topic: Standards
introduction
77 /08/09 D. G. Burnett-Hall to Andy Mickel:

=

rn

::e::
(/)

t::1

rn
n

rn
3

t:d

rn

Another Attention List.

;;o

Implementation Notes: Checklist, General Information, Software Tools, Portable Pascals:
Pascal-P, Pascal Trunk, Pascal J; Pascal Variants: Pascal S, Concurrent Pascal,
Modula; Feature Implementation Notes: Set of Char :i the For statement, Else in
~' var parameters, Interactive I/O; Machine-Dependent Implementations:
-lundahl 470, Bl700, B3700/4700, B5700, B6700-7700, CDC Cyber 18 &
2550, CDC3200, CDC3300, CDC3600, CDC 6000/Cyber 70,170, CDC7600/Cyber 76, CDC Omega
480, CDC Star-100, CII Iris 50, CII 10070, Iris 80, Computer Automation LSI-2,
Cray-1, Data General Eclipse/Nova, DEC PDP-8, PDP-ll, DEC-10/20, Dietz Mincal 621,
Foxboro Fox 1, Fujitsu Facom 230, Harris/4, Heathkit H-11, Hewlett-Packard 21MX,
2100, 3000, Hitachi Hitac 8000, Honeywell H316, Level 66, IBM Series 1, 360/370,
1130, ICL 1900, ICL 2900, Intel 8080, 8080a, Interdata 7/16, Interdata 7/32,8/32,
ITEL AS/4, AB/5, Kardios Duo 70, Mitsubishi Melcom 7700, MITS Altair 680b,
MOS Technology 6502, Motorola 6800, Nanodata QM-1, NCR Century 200,
Norsk Data Nord 10, Prime P-400, SEMS Tl600, Solar 16/05/40/65, Siemens 330,
Siemens 4004, 7000, Telefunken TR-440, Terak 8510, TI-ASC, TI 9900, Univac 90,
Univac 1100, Univac V-70, Xerox Sigma 6, 9, Xerox Sigma 7, Zilog Z-80.
Pascal News #11, February, 1978, Pascal User's Group, University of Minnesota Bomputer
Center, 202 pages (106 numbered pages), edited by Andy Mickel.
Editor's Contribution: Addenda on list of companies using Pascal.
from PUG(UK) distribution center.

Itemization of costs

Here and There: Pascal jobs, Help wanted for numerical library project, Tidbits (7 pages),
Evolution of PUG dog, Pascal in the News, DOD-1 report, reports from German ACM
Pascal meeting and ACM '77 Pascal session in Seattle, Books and Articles including
Applications, Implementations_~I-anguages, and Textbooks; Concurrent Pascal

f-'

en

literature, documents obtainable from the University of Colorado Pascal distribution
center. Errata to Pascal User Manual and Report Second edition. Detailed review
of Pascal Newsletters 5, 6, 7, and 8. Roster Increment (77/12/31).

read, repeat and case statement changes, inverse to ord, different treatment of
file variables, and I/O and textfiles, addition of exponentiation operator.]
Open Forum:

Articles:
"Type Compatibility Checking in Pascal Compilers"
Pierre Desjardins
[It is imperative we clearly set down the semantics of type compatibility, for
structured variables in the programming language Pascal. The matter is 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.
On the basis of how a compiler implements type compatibility checking, we can
currently distinguish two major classes of Pascal compilers, representatives of
which will react differently to particular cases involving operations on
structured variables. It is of course clear that such a conflict must not be
allowed to continue, and in that s~nse 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 Novel Approach to Compiler Design"
James Q. Arnold
[A sarcastic appraisal of the Honeywell Level 66 compiler implemented by the
University of Waterloo. Its poor realization is examined with respect to program
portability, program correctness, and user interface.]
"Status of UCSD Pascal Project"
Kenneth L. Bowles
[A description is given of the project which developed the LSI-ll Pascal
implementation at UCSD. The project was motivated by teaching interests at the
university and has evolved into research and development interests centering on
microprocessors. Descriptions follow of the Pascal-based software system, minimum
configuration, 8080 and Z-80 versions, Pascal extensions and alterations, Introductory
Pascal course and textbook, a 11 Tele-mail 11 user support facility, and forthcoming
improvements. ]
Suggestions for Pascal Implementations"
Willett Kempton
[A user 1 s point of view is presented on featur~s encountered in 3 Pascal implementations. Conditional debugging code, a better cross-reference, flagging nonstandard constructs, implementation of UNPACK, PACK, and LINELIMIT, conversation
compilation, error-recovery and formatting of input, interactive I/O, padding
strings with blanks, and more predefined constants like MAXINT are examined.]
11

"Suggested Extensions to Pascal 11
Robert A. Fraley
[A number of extensions and modifications to Pascal are suggested. I t is the
author's belief that Pascal as it stands, cannot compete successfully with more
complete languages in production environments and over wide ranges of applications.
Some of these suggestions would hopefully preserve its clarity and simplicity.
Some of them are optionally available in the UBC/IBM 370 Pascal compiler.]
"Adapting Pascal for the PDP ll/ 45"
D. D. Miller
[A description and adaptation is given of the University of Illinois Pascal student
compiler for a PDP 11/20, to a production compiler on an ll/ 45. We will discuss,
a) the extensions to the language which were necessary to communicate between
Pascal programs, data and MACR0-11 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.]
11

Pascal: Standards and Extensions"
Chris Bishop
[Comments are given on the current standards/extensions argument, and to suggest
some specific modifications to the standard and some useful extensions. These
include: array parameters, standard type char, otherwise in case, no formatted

77/11/09 Helmut Weber to Andy Mickel: [CDC-6000 Pascal inquiries]
77/10/28 Barbara Kidman to Andy Mickel: [Pascal teaching at the University of Adelaide.]
77/11/03 Tom Kelly to Andy Mickel: [Burroughs Pascal from UCSD now running at Burroughs.]
77 /10/12 Tony Schaeffer to Andy Mickel: [Interactive I/O, language standards in the light
of the natural evolution of Latin and ANS Fortran.]
77 /08/25 Robert A. Fraley to Andy Mickel: [Comments on changing the definition of Pascal
and his submitted paper also appearing in the issue.]
77/ll/07 Robert A. Fraley to Arthur Sale: [Comments on the Feature Implementation Note
concerning else in case, sets of char; support for ASCII as a Pascal standard!]
77 /12/26 Barry Smith to Andy Mickel: [Oregan Minicomputer Software history with ESI and
OMSI, and their PDP-ll Pascal implementation; Pascal T-shirts.]
77/12/12 Dave Thomas to Andy Mickel: [Pascal at Imperial College, London. A multi-user
reentrant STARTREK program exists in Pascal for the IBM 370 implementation at IC.]
77 /ll/07 Mitchell R. Joelson to Andy Mickel: [Law Enforcement Assistance Administration
regulations vis-a-vis progranuning alnguages for use in criminal justice information
systems.]
77 /12/30 Ken Robinson to Andy Mickel: [Australasian distribution; Pascal use in
Australian Universities, sundry comments on Pascal]
Special Topic: Pascal Standards:
Introduction by Andy Mickel and Jim Miner: [ISO Standard Pascal, Conventionalized
Extensions, Laundry Lists of Additional Features, Pascal Cilinpatibility Report.]
77 /12/09 Bengt Nordstrom to Andy Mickel: [The Swedish Technical Committee on Pascal;
Yet Another Attention List, will be in touch with the British Standards group.]
77/12/30 Ken Bowles to Andy Mickel: [Standardized Pascal Bxtensions, proposal for
Pascal Workshop with representation from industrial firms, governmental agenCies,
and 11 academic experts". Consideration of DOD-1, a proposed Pascal-X extended version]

=

rn

:::<:
C/)

t:::J

rn
n

Implementation Notes: General Information; Applications; Portable Pascals, Pascal-P4
Bug Reports and how Pascal-P4 relates to the standard. Pascal Variants: Pascal-S,
Concurrent Pascal, Modula. Feature Implementation Notes: Unimplementable Features Warning; Compiling Boolean Expressions -- The Case for a 11Boolean Operator 11
Interpretation; Long Identifiers; Interim Report -- Implementation of For Statement 2,
More on For Statement. Machine-Dependent Implementations: Alpha Micro AM-100,
Andromeda Systems 11/B, Burroughs B5700, B6700/7700, CDC Cyber 18 and 2550, CDC3200,
CDC 6000/Cyber 70,170, CDC 7600, Data General Nova/Eclipse, DEC PDP-8, DEC PDP-11,
DECUS Pascal SIG; DEC LSI-11, DEC 10, HP-21MX, Honeywell 6000, level 66, H316,
IBM 360/370, ICL Clearing House, ICL 1900, ICL 2900, Intel 8080, MITS Altair 8800,
Motorola 6800, Prime P-300, Univac 1100, Zilog Z-80.

rn
3

tx:l

rn
;::o

Pascal News //12, June, 1978, Pascal User's Group, University of Minnesota Computer Center
135 pages (70 numbered pages), edited by Andy Mickel.
Editor's Contribution: Personal Observations regarding Pascal-P, the first good critical
article about Pascal, the need for a 11 business-oriented 11 Pascal procedure library,
and more news needed about teaching experiences about Pascal. Status of Pascal
User's Group: must raise rates for US and UK; rates lowered for Australasia.
Here and There With Pascal: Pascal Jobs, Tidbits (7 pages), French/English, English/French
Pascal.Identifiers, Pascal in the News, Conferences, Books and Articles:
Applications, ..Implementations, Languages, Textbooks, Reviews, Articles wanted.
Roster Increment (78/04/22).
Applications (new section) : News: Empirical study of Pascal programs (Pascal program
style analyzer),numerical library project. Algorithms: A~~ Random Number Generator
A-2: Timelog; Software Tools: S-1 Compare (compare two textfiles for equality),
S-2-l Augment, s-2~2 Analyze (Pascal performance measurement programs) ;
·
Programs: P-1 Printme (reproduce self).

"""CJ

:t>
Gl

rn

Articles:
11 Extensions to Pascal for Separate Compilation11
Richard J. LeBlanc
[The lack of features in Pascal to allow procedures and functions to be compiled
separately can. be of considerable inconvenience in the development of large programs.
T~is weakness is particularly evident when modifications are being made only to
:imited p~rts of a program . . Modificaitons of this sort are common, for example,
in the maintenance or extension of a Pascal compiler. By creating a global
environment, separate compilation of routines using that environment and additions
to the environment without requiring recompilation of existing routi~es and
declarations";"-all via extensions--a useful mechanism can be attained.]
"What Are Pascal's Design Goals? 11
Robert Vavra
[A~ a long-time reader of Pascal News, the author has enjoyed the many articles in
which people have discussed various features which could be added to Pascal, but they
have been unable to take seriously. In arguing for or against some particular
feature, writers have rarely involked Pascal 1 s design goals in support of their
arguments. Such failure to build a proper foundation for one's arguments might
be acceptable in casual conversation, but not in a serious discussion.]
11 Pascal Environment Interface 11
Terje Noodt
~Work is. presented for a Pascal implementation for the Norsk Data Nord 10, running
interactively. The Pascal Report does not say too tiiuch about how to interface a
:ompiler to a computer system and its users. To further complicate matters, what
l.t does say about this relates to a batch system, and is worthless or unusuable in
an interactive system. A language is often judged on the way a particular
implementation interfaces to its environment such as what tools are available for
t~e construction, compilation, and execution of a program, and what interfaces are
like b7tween the implementation and other systems on the computer (particularly the
ope:ating system. The conclusion is to think ecologically, and do not let the
environment pollute Pascal!]

••subranges and Conditional Loops"
Judy M. Bishop
[The subrange facility in Pascal is an aid to run-time security for fixed-boundary
constructs such as counting (for) loops and array subscripts. The relevant types
can be precisely and naturally defined, and the compiler can minimise the amount of
run-time checking required. However, an index which increases under program control
as in a conditional (while) loop, presents a problem. This note discusses the
,
problem and presents a solution in terms of a naming convention.]

A Few Proposed Deletions
John Nagle
[Since quite.a number of extensions to Pascal have been proposed, I thought that it
w~uld be desir:ble.to propose.a few deletions to keep the size of the language down.
With.t~e goal in mind of keeping Pascal a simple, elegant, and useful language
requiring a Illl.nimum of run-time machinery, I propose a few simple changes in the
direction of simplicity.]
11

78/02/24 Arthur Sale to PUG membership: [Commentary on Pascal News No. 11; David Barron's
proposal for algorithms excellent, Pascal is not up for grabs, PUGN maturing.]
78/02/27 Greg Wetzel to Andy Mickel: [Shame on you for including Fraley' s article-it
scared us--congratulations, you were terrifyingly successful! Stand by your guns.]
78/03/06 Eric Small to Andy Mickel: [Looking for Pascal programmer for consultants in
broadcasting technology.]
78/03/08 Bob Jardine to Andy Mickel: [Reply to criticism of B6700 by Arthur Sale's
Feature Implementation Note on Unimplementable Features.]
78/03/10 K. S. Bhaskar to Andy Mickel: [Pascal needs standardization and perhaps an
extension mechanism like ALGOL 68. ]
78/03/15 Terje Noodt to Andy Mickel: [A new implementation forthe Nord 10; the system
interface is an important consideration.]
78/03/16 Don Terwilliger to Andy Mickel: [Even though Tektronix is actively using Pascal
it does not currently have products incorporating Pascal programming capabilities.]
78/03/16 Edward Reid to Andy Mickel: [Interested in Arthur Sale's comments about Pascal
on the B6700; comments on other.items in past Pascal News issues.]
78/01/02 Werner Remmele to Andy Mickel: [Pascal implementation on the Intel 8080 using the
ISIS II operating system. Notes about the project.)
78/03/15 Mark Horton to Andy Mickel: [Pascal at the Univ. of Wisconsin; comments about
proposed extensions to Pascal, some more proposed extensions to Pascal]
78/04/11 Jon Squire to Andy Mickel: [Pascal and DOD-1; need for a standard set of
acceptance test programs for Pascal.]
78/04/07 Judy Bishop to John Strait: [A further comment on predefined types and subranges
used in conditional loops.)
Pascal Standards:
Introduction by Andy Mickel and Jim Miner: International Working Group by Ji\rgen
Steensgaard-Madsen investigating conventionalized extensions at last; News from
Tony Addyman on the BSI/ISO Pascal Standard; criticism of the upcoming UCSD Workshop
on Pascal Extensions.
78/04/07 Niklaus Wirth to Andy Mickel: [Definition of Pascal syntax using Extended Backus
Naur Form on only 2 pages. ]
78/02/06 Tony Addyman to Andy Mickel: [New phone number, urge that all PUG members comment
on the BSI/ISO draft standard document. )
78/02/01 Tony Addyman to DPS/13/4, Swedish Technical Committee and all correspondents:
[Update on progress by the BSI working group DPS/13/4 for a Pascal standards document)
78/03/23 Charles Fischer to Andy Mickel: [Criticism of structure and format of Ken Bowles's
proposed summer Workshop at UCSD.)
78/04/10 Richard LeBlanc to Andy Mickel: [Reservations expressed about the structure and
format of Ken Bowles 1 s summer Workshop on Pascal extensions.]
78/03/30 Bob Vavra to Andy Mickel: [Comment on Pascal's Design Goals; optimistic about the
future of Pascal in spite of all the moves to extend Pascal.]

=

rn
:::::
(/J

t:::I

rn
n

rn
3:
b:J

rn
:;;o

I-'
lO

'-I

11

00

Implementation Notes: Checklist (new item); Portable Pascals (more Pascal-P4 bug reports).
Feature Implementation Notes: Representation of Sets; Machine-Dependent Implementations: B6700/7700, B4700, Bl700, CII 10070, IRIS 80, Commodore 6502, Computer
Automation LSI-2,4, Data General Eclipse, DEC PDF-ll, VAX 11/780, HP-2100 1 21!-IX,
HP-3000, IBM 360/370, Intel 8080, Interdata 7/16, 8/32, Northwest 85/P, Prime P~400,
Index to Implementations for issues 9-12

Open Forum:
78/01/18 Arthur Sale to Andy Mickel: [Pascal News distribution in Australasia· explanation
of :arge size of PUG(AUS) :ee. Pascal as a first language in Australi~n uni' s. J
77 /11/11 Giusep~e Selva to Andy Mickel: [Comments on the increasing use of Pascal; need
for reading and writing scalars, varying length strings, formatted input, etc.] \
78/02/02 Jerry Pournelle to Andy Mickel: [Acquiring Pascal for a 48K Z-80.]
78/02/2~ Joe Celka to Andy Mickel: [Comments to proposed extensions by Robert Fraley
in last issue: doesn't miss common or modules; compiling included files nice.]
78/02/23 Hellmut Weber to Andy Mickel: [Wish list from a user's point of view for Pascal6000 Release 3 from Minnesota.]

Ro STER

NCREMENT (78/10/31)

Following is a list of PUG members who either joined or changed address since the last
roster increment was printed on 78/04/22. The list actually includes some persons who
renewed, but whose address didn't change. Sorry.
I-'
()0

P AS C A L NE WS
:Jl002

01003
'Jl060
•)1247
01420

01451
01505
01581
01581
dl581
01581
01701
01701
01720
~1730

01730
01741
01742
01742
01752
01752
01752
01752

01754
01778
01810
01810
01821
01824
01824
01852
01867
01880
01886
01887
01890
01945
01945
02115
02125
02134
02138
02138
02139
02139
02139
02139
02139
02142
02142
02146
02149
02154
02154
02154
02154
02173
02173
02173
02173
02174
02174
02176
02178
02181
02181

02194
02195
02215
02747
02871
03055
03060

03102
03103
03755

03768
04473
05402
06032
06035
06430
06455
06457
06460
06468

06497
06830
06851
06856
07009
07054
07060
07067
07083
07207
07462
07632
07724
07724
07762
07764
07932
07960
08002
08033

08046

08052
08101
08540
08540
08540
08540
08753
08816
08822
08826

08854
08854
09175
09403
10001
10003

10005
10014
10016
10020
10021
10021
10022

#

13

D E C E MB E R , 1 9 7 8

PAGE 19

YILLIAM n. TORCASO/ RAHPSHIRE COLLEGE/ :sax 548/ AMHERST MA 010 02/ (413) 549-4600
TERRY E. WEYMOUTH/ DEPT OF COMP & INFO SCI/ UNIV. OF MASSACHUS ETT.S/ AMHERST MA 01003
BERT MENDELSON/ COMPUTER CENTER/ MCCONNELL HALL/ SMITH COLLEGE/ NORTHAMPTON MA 01060
S. J. BATTORY JR./ 15 MURRAY AVE./ NORTH ADAMS MA 01247
KENNETH R. WADLAND/ COMPUTER SCIENCE DEPT./ FITCHBURG STATE CO LL'FI?.E/ MAIL BOX NUMBER 6372/ l!'ITCHBURG MA 01420/ (617) 345-2151 Xl81
PETER CONKLIN/ BOLTON ROAD/ RARVAllD MA 01451/ (617) 851-5071 X 2119
JESSE HEINES/ DIGITAL EQUIPMENT CORPOlATION/ 215 MAIN ST.RTE.7 0/ BOYLSTON MA 01505
DAVID C. CLINE/ 1106 WINDSOR RIDGE/ WESTBORO MA 01581/ (617) 3 66-9509
RICH COON/ SOFTW'ARE DEVELOPMENT/ DATA GENERAL CORP./ ROUTE 9/ WESTBORO MA 01581
KENNETH L. WILLIAMS/ 135 E. MAIN ST. Rl2/ lrlESTBORO MA 01581/ ( 617) 366-9236
NICHOLAS WYBOLT/ MS 71141/ DATA GENERAL COJf2./ 15 TURNPIKE RD. / WESTBORO MA 01581/ (617) 366-8911
DENIS KOMINSKY/ 1640 WORCESTER RD./ FRAMINGHAM MA 01701/ (617) 879-3654
BERNIE ROSMAN/ MATH/CS DEPT·/ FRAMINGHAM STATE COLLEGE/ FllAMIN GHAM MA 01701/ (617) 620-1220
THEODORE R. CROWLEY/ 16 ALGONQUIN RD./ ACTON MA. 01720/ (617) 3 66-8911 X 5725
STEPHEN HATCH/ RAYTHEON COMPANY - MSD/ HARTWELL RD./ BEDFORD MA 01730/ (617) 274-7100

EMANUEL WACHSLER/ 20 PAUL REVERE PJJ./ BEDFOPJJ MA 01730/ (617)

275-0593/ (617) 890-3330

DEAN :BANDES/ PARKE MATHEMATICAL LABS J:NC./ ONE RIVER ROAD/ CAR LISLE MA 01741/ (617) 369-3818
ATTN: INFORMATION CENTER/ ENVIRONMENTAL RESEARCH & TECH. INC./ 696 VIRGJ:NIA RD./ CONCORD MA 01742
EDWARD E· L. MITCHELL/ MITCHELL & GAUTHIER ASSOCIATES/ p.a. BO X 685/ CONCORD HA 01742/ (617) 369-5115
DONALD D. BURN/ 29-7 BRIARWOOD LN/ MARLBORO MA 01752/ (617) 48 5-6774
MIKE GILBERT/ 39-1 BRIARWOOD LANE/ MARLBORO MA ..01752/ (617) 48 l-4275
ARON K· INSINGA/ 273B W. lq..IN ST./ MARLBORO MA 01752/ (617) 48 5-4620
MIKE KNUDSON/ 79A PHELPS ST./ MARLBORO MA 01752/ (617) 485-817
BRUCE MACKENZIE/ H POWDER MILL RD./ MAYNARD MA 01754/ (617.) 8 97-5429
WIIJ.IAM WOLFSON/ 188 PELHAM ISLAND RD./ WAYLAND MA 01778
BRUCE .ALLEN/ MODICON DIV./ GOULD INC./ p.Q. !OX 83/ ANDOVER MA 01810/ (617) 475-4700
ROBERT I. DF.MROW/ 11 LINDA DRIVE/ ANDOVER MA 01810/ (617) 475- 1563
ATIN: TECHNICAL LIBRARY/ MS 813/ HONEYWELL INFO. SYSTEMS nm./ 300 CONCORD ROAfJ/ BILLERICA MA 01821
JOHN DE ROSA JR./ 7 GLENN AVE APT 11/ CREI.MSPORD MA 01824
THOMAS J. STOODLEY III/ DISTRIBUTED SYSTEMS co./ 17 WILSON ST. I CHELMSFORD MA 01824/ (617) 256-8742
FRITZ EBERLE/ 578 ANDOVER ST./ LOWELL MA 01852/ (617) 454-8909
GAYE HARP./ ADVERTISING/ ADDISON-WESLEY/ JACO:B WAY/ READING HA 01867/ (617) 944-3700 X391
STEVEN L. COOL/ ANALOGIC CORP./ AUDUBON RD./ WAKEFIELD MA 0188 0/ (617) 246-0300
RICHARD KRASJ:N/ K SYSTEMS/ BOX 508/ WESTFORD MA 01886
ALAJ:N J. HANOVER/ DYMOGRAPHIC SYSTEMS INC./ 355 MIDDLESEX AVE. / WILMINGTON MA 01887/ (617) 933-7000
PETER STEIN/ 28 FRANKLIN RD./ WINCHESTER MA 01890
.
ATTENTION: WILLIAM MAIN/ NEW ENGLAND MICRO TECHNOLOGY me./ p. o. BOX 767/ MAR!LEHEAD MA 01945/ (617} 631-6005
JON F • HUERAS/ 34 OLD SALEM ROAD/ MARBLEHEAD MA 01945
TIM KIEFFER/ 290 NEWBURY ST./ BOSTON MA 02115
R. A. MORRIS/ MATH DUT/ U OF MASSACHUSETTS - BOSTON/ BOSTON M A 0212.S
DAN FYLSTRA/ 22 WEITZ ST. #3/ BOSTON MA 02134/ (617) 782-5932
J. SCOTT DIXON/ DEPT OF CHEMISTRY/ HARVAllD UNIV./ 12 OXFORD ST ./ CAMBRIDGE MA 02138
CHAIU.ES RO!ERT MORGAN/ BOLT BERANEK AND NEWMAN/ 50 MOULTON STR EET/ CAMBRIDGE MA 02138/ (617) 491-1850 X502
CHARLES L. BROOKS/ 16 ANTRIM STREET/ CAMBRIDGE MA 02139/ (617) 661-3671
ROBERT FRANKSTON -COPY A/ p.a. BOX 70 - MIT BRANCH/ CAMBRIDGE MA 02139
DANIEL R. Kiil.ORAN/ MAIL STOP 16/ CHARLES STAlUC DRAPER LAB./ 5 55 TECH SQUARE/ CAMBRIDGE MA 02139/ (617) 258-1438
FRANCIS F. LEE/ 575 RESEARCH LAB. OF ELECTRONICS/ 36/ M.I.T./ CAMBRIDGE MA 02139
JORN M. STRAYHORN/ BOX 157 MIT BRANCH p.a./ CAMBRIDGE MA 02139 / (617) 923-1133
ATTN: KINDLER ASSOCIATES J:NC./ ONE BROADWAY/ CAMBRIDGE MA 0214 2/ (617) 491-4963/ (617) 491-4415

JAMES STEINBERG/ 863/ DOT/TSC/ KENDALL SQUARE/ CAMBRIDGE MA 02 142/ (617) 494-2015
BEARDSLEY RDML II/ 59 HOLLAND RD/ BROOKLINE HA 02146/ (617) 27 7-9494
WALTER L. PRAGNELL/ GRACE CHURCH RECTORY/ 9 WARREN STRE'B:J:/ EVE REI'T MA 02149
RONALD v. BOSSLET/ GTE LABS J:NC./ 460 TOTTEN POND ROAD/ WALTHAM MA 02154/ (617) 890-4100
ALAN B. FINGER/ GTE LABS/ 40 SYLVAN RD./ WALTHAM MA 02154/ (61 7) 890-4100
ROBERT FRANKSTON -COPY B/ INTERACTIVE DATA CORP./ 486 TOTTENPO ND ROAD/ WALTHAM MA 02154
JODY PAUL PERONI/ TEXAS INSTRUMENTS INC./ 504 TOTTEN POND RD./ WALTHAM MA 02154
GEORGE S. GORDON JR,/ 7 COACH RD./ LEXINGTON MA 02173
DAVID GRABEL/ 125 REED ST./ LEXINGTON MA 02173/ (617) 861-9371
MARGERY HARRIS/ HONEYWELL ELECTRO OPTICS CENTRAL/ 2 FOR:BES ROA D/ LEXINGTON MA 02173
FRANK SCHWARTZ/ SOFTW'ARE ASSISTANCE INC./ 18 RARBELL ST./ LEXI NGTON MA 02173
FRED COTTON/ 51 THORNDIKE ST./ ARLINGTON MA 02174
DONALD WARREN/ 290 MASSACHUSETTS AVE./ ARLINGTON MA 02174

CARLOS CHRISTEllSEN/ 63 E. EMERSON ST./ MELROSE MA 02176/ (617)

665-5736

ROBERT OSBORN/ DIALOG SYSTEMS/ 32 LOCUST ST./ :BELMONT MA 02178 f (617) 489-2830
GREGORY J, O'BRIEN/ INCOTBRM CORP·/ 65 WALNUT ST./ 'WELLESLEY' H IL* MA 02181/ (617) 237-2100
JAMES L. PYLBS/ SOFTWARE PRODUCT PLANNING/ PR.lME COMPUTER/ 40 WALNUT ST./ WELLESLEY HIL* MA 02181/ (617) 237-6990
A· FREDERICK ROSENE/ GTE SYLVANIA/ 77 A STREET/ NEEDHAM HTS MA 02194/ (617) 449-2000 X2332
.
JAMES F. HART/ CODEX cop;p./ 15 RIVERSIDE AVENUE/ NEWTON MA 021 95/ (617) 969-0600
TIMOTHY GRIESER/ COMP• CENTER/ BOSTON UNIV./ 111 CUMMINGTON ST • / BOSTON MA 02215
JOHN W. GRAY/ DEPT. OF ELECT." ENG./ SOUTHEASTERN MASSACHUSETTS UNIV./ ff. DAR'.IMODTH HA 02747
DAVID J. DE FAN.TI/ SUBMARINE SIGNAL DIVISION/ RAYTHF.oN COMPANY / P.O. BOX 360/ PORTSMOUTH RI 02871/ (401) 847-8000
L. DAVID BALDWIN/ RFD 2/ MILFORD NH 03055/ (603} 465-7857
BILL MARSHALL/ SANDERS ASSOCIATES INC./ 95 CANAL ST./ NASHUA N H 03060/ (603) 885-2551
RICHARD M. SMITH/ 77 GAllDEN DR. NO. 3/ MANCHESTER NH 03102
ATTN: DB/DC SOFTWARE ASSOC./ f·O· BOX 4695/ MANCHESTER NH 0310 '3
JAMES P. MAGNELL/ LOGIC ASSOCIATES/ BOX 568/ HANOVER NH 03755
STEVEN CAMPBELL/ SOFTWARE SYSTEMS/ PINNACLE RD./ LYME Nit 03768 I (603) 795-2244
MAL CAm:i./ CREATIVE COMPUTING/. P.O. BOX 147/ STILLWATER ME 044 73
LILLIAN WILHELMSON/ 1320/ GENERAL ELECTRIC co./ LAKESIDE AVE·/ BURLINGTON VT 05402
HOUSTON P. LOWRY/ 49 HIGH STREET/ FARMINGTON CT 06032
TIMOTHY DENNIS/ 62 MANITOOK LAKE/ GRANBY CT 06035/ (203) 653-4 492
REID SMITH-VANIZ/ PRODUCT DEVELOPMENT SER.VICES/ 2000 BLACK. ROA D TURNPIKE/ FAIRFIELD CT 06430
c. A. ZANONI/ zyGo CORP./ LAUREL BROOK RD./ MIDDLEFIELD CT 064 55/ (203) 347-8506
FRANK W. TYRON JR./ 31 EVERGREEN AVE./ }JIDDLETOWN CT 06457
ARTHUR LACROIX LA CROIX/ APT. A-3/ 1060 NEW HAVEN AVE./ MILFOR D CT 06460
RICHARD ROTH/ 39 WILLIAMS DR./ MONROE CT 06468
BRUCE HIBBARD/ 165 COLONY TRET/ STRATPORD CT 06497
R. ET!.I/ M.s. 186/ AMERICAN' CAN co./ AMERICAN LAKE/ GREENWICH CT 06830
PATRICIA J. GARSON/ TUR.NlCEY SYSTEMS J:NC./ 111 EAST AVE./ NORWALK CT 06851/ (203) 853-2884
ABRAHAM SAVITZKY/ M/S 284/ PERKIN-ELMER CORP./ MAIN AVENUE/ NO RWALK CT 06856/ (203) 762-1000
WILLIAM MEIER/ M W ASSOCIATES/ 735 POMPTON AVE./ CEDAR GROVE N J 07009
JAMES B. THOMPSON JR./ R. SHRIVER ASSOCIATES/ 120 LITTLETON RO AD/ PARSIPPANY NJ 07054/ (201) 335-7800
GEORGE E. JJ.OLZ/ VARITRONICS SYSTEMS/ 97 GRANDVIEW AVE/ N. PLAI N"FIELD NJ 07060/ (201) 754-9429
LARRY STEIN/ 151 KLINE BLVD·/ COLONIA NJ 07067/ (201) 574-3373
GENE KEENOY/ INFORMATION MANAGEMENT SERV./ KEAN COLLEGE OF NEW" JERSEY/ !ERRIS AVE./ UNION NJ 07083

~~~~~LR:·a!:i~~5o~~~~D)Ci~xG~~jp'E:~~-N~8~7:~~

SINGER

CORP./ 321 lST

'if!./ ELIZABETH NJ 07207/ (201) 527-6000

JAMES W. O'CONNOR/ EHRHART-BABIC ASSOCIATES INC./ 120 ROOTE 9W / ENGLEWOOD CL. NJ 07632/ (201) 461-6700
CHRISTOPHER J. HENRICH/ SOF'IWARE DEVELOPMENT/ INTERDATA INC./ 106 APPLE STREET/ TINTON FALLS NJ 07724/ (201) 747-7300 X549
DAVID NEAL/ PERKIN-EIJiER DATA SYSTEMS/ 106 APPLE STREET/ TINTO N FALLS NJ 07724/ (201) 747-7300/ (913) 532-6350 (WORK)
WILLIAM D. BRISCOE/ 703 FIFTH AVENUE/ SPRING LAKE NJ 07762/ (2 01) 449-7681
G. B. SWARTZ/ MATH / COMP. SCI. DEPT·/ MONMOUTH COLLEGE/ CEDAR AVE./ W. LONG BRANCH NJ 07764/ (201) 222-6600 X381
KARL p. ADEY/ ENERGY GROUP/ VYDEC INC./ 9 VREELAND RD./ FLORHAM PARK NJ 07932/ (201) 822-2100
WARREN SCHODER/ MORRIS COUNTY SAVINGS BANK/ 21 SOUTH STREET/ M ORRISTOWN NJ 07960/ (201) 539-0500
LEE FRANK/ BTI COMP. SYSTEMS/ 3 EXECUTIVE CAMPUS/ CHERRY HILL NJ 08002/ (609) 662-1122
ANN S· ADAMS/ 718 GRAISBURY AVENUE/ HADDONFIELD NJ 0803.3
LARRY £. ELLISON/ 19 HUNTINGTON LANE/ WILLINGBORO NJ 08046/ (6 09] 877-8847
GEORGE P. CAMPBELL/ JC EMF.RSON ROAD/ MAPLE SHADE NJ 08052/ (60 9) 779-8688
R. K. PAETZOLD/ TACS-204-2' RCA CORP./ CAMDEN NJ 08101/ (609) 338-4106
ROBERT BOYLAN/ METROMATIO! / 1101 STATE RDAD/ PRJ:NCEl'ON NJ 0854 0
HERMAN EUREKA/ P.O. BOX 2404/ PRD:CETON NJ 08540
IRVING S. SCHECHTMAN/ NATIONAL COMPUTER ANALYSTS INC./ HIGHWAY 1 & FARBER RD./ PRINCETON NJ 08540/ (609) 452-2800
HENRY WOOD/ 259 MT. LUCAS ROAD/ PRINCETON HJ 08540
ROBERT C. PERLE/ 1108 RUBY DRIVE/ TOMS RIVER NJ 08753/ (201) 5 32-2831
CHARLES ANDERSON/ 26 TAYLOR AVE./ EAST BRUNSWICK NJ 08816
GEOFFREY F. WALKER/ RD l - BOX 56/ FLEMINGTON NJ 08822
GEORGE B. D:w:IJND/ DIAMOND AEROSOL CORf. / RD #1/ GLEN GARDNER NJ 08826/ (201) 832-7128
(201) 469-5176/ (215) 679-9900 (HOME)
JOSUH A. MEZZAROBA/ 15 BIRCHVIEW DR"fVE/ PISCATAWAY NJ 08854/
JAMES R. SCHRAGE/ 255 OLD NEW BRUNSWICK RD./ PISCATAWAY NJ 088 54/ (201) 981-0190
ATTN: SAM CALVIN/ COMPUTER EDUCATION/ DARMSTADT CAREER CENTER/ APO NEW YORK NY 09175/ 06151-69-2371-7203 (GERMANY)
EUGEHE K. GOODELL/ ODCSI SYS DIV/ HQ USAREVR & 7A/ BOX 353/ AP O NY 09403
ED LEARY/ SYSTEMS SOFTWARE/ CBS DATA CENTER/ 2 PENN PLAZA/ NEW YORK NY 10001/ (212) 975-4321
BRIAN GLASSER/ B.G. SOUND/ 60 E. 9TH ST. APT 615/ NEW YORK NY 10003
JAMES L. MORAN/ 700/ C/0 FAHNESTOCK & co./ 110 WALL ST./ NEW y ORK NY 10005
BARBARA :BERGER/ 704 WASHJ:NGTON ST./ NEW YORK NY 10014/ (212) 9 24-5172
689-4926
GLENN ENTIS/ 203 E. 27TH ST. APT.52/ NEW YORK NY 10016/ (212)
NEW YORK NY 10020
JOHN G. POSA/ ELECTRONIC MAGAZINE/ 1221 AVE· OF THE AMERICAS/
(212) 679-0804
MICHAEL H. LESKIN/ 218 E. 74TH ST. APT l-R/ NW YORK NY 10021/
ANTHONY TOOGOOD/ COMPUTER ASSOCIATES INC./ 655 MADISON AVE./ N EW YORK NY 10021/ (212) 355-3333
CHARLES H. BROWNING/ PHELPS DODGE CORP./ 300 PARK AVB./ NEW YO RK. NY 10022/ (212) 751-3200 X289

P AS C A L NE WS # 1 3
10022
10023
10024
10024
10038
10530
10533

10570
10580
10598
11215
11374
11432
11530

11552
11566
11713
11714
11756
11790
11968

11973
12202
12222

12345
12401
12561

13203
13210
13323
13760
13902

14420
14450
14502
14580
14627
14850

14853
14853
15069

15213
15213
15213
15217
15221
15222
15230
15236
15238
15260
16057
16701
17331
18016
18017
18103
18914
19004
19020
19020
19044
19047
1!;1083

19102
19111
19117
19122

19128
19145
19172
19317
19342
19380
19380
19401
19422
19422
19446
19446
19518
19711
19711
19898
20005
20016
20022
20037
20052.

20052
20250
20375
20755
20770
20810
20822
20850
20852
20852
20853
20855
20903
20904

21030
21043
21045
21203
2.1204
21235
21401
21701
22030
22101
22101
22110
22151
22151
22180
22205
22209
22309
22310
22312
22401
22801
22901
22923

D E C E MB E R , 1 9 7 8

C. Ho BROWNING/ PHELPS-DODGE CORP./ 300 PARK AVE/ NEW YUKK N'.I'.

PAGE

2~

10022

PE'IER RENNICK/ 201 lol 70TH ST APT 33A/ NEW YORK NY 10023
IRA A. CLARK/ COMPUTER SYSTEMS DEVELOPMENT/ 275 CENTRAL PARK W EST/ NEW YORK NY 10024/ (212) 787-0767
PAUL SPRECHER/ 241 T,.lEST 77TH STREF:r/ HEW YORK NY 10024/ (212)
787-0176 (HOME)/ (212) 873-0677 O«>RK)
ANDREW VARANELLI/ COMP. AND INFO. SCI./ 721A/ PACE UNIVERSITY/ PACE PJ.AZA/ NEW YORK NY 10038
An:N: WS COMPUTER. SERVICES/ 6 CA'!ERSON TERRACE/ HAR.TSDALE NY 10530/ (914) 946-1632
FRANK PAVLIK/ 163 S. !ROADWAY/ IRVINGTON NY 10533/ (914) 591-6 215
JUSTDIA JOHNSON/ p.a. 'ROX 33/ PLEASANTVILLE NY 10570
LAWRENCE H. GARCIA/ SYNTAX SYSTEMS INC./ 65 REYMDNT AVE./ RYE NY 10580/ (914) 967-8421
VICTOR S. HILLER/ THOS J. WATSON RESEARCH CENTER/ IBM/ p.a. :BO X 218/ YORKTOWN OOTS NY 10598
'ROB SIEGEL/ 401 FOURTH ST./ BROOXLYN NY 11215
ESTHER ROSENSTOCK/ 97-40 62ND DRIVE/ REGO PARK NY 11374
DANIEL LEY/ 85-50 169TH ST./ JAMAICA NY 11432
ANTHONY R. HEKLY/ 41 GREENRIDGE AVE/ GARDEN CITY HY 11530/ (51 6) 437-3823 (HOME)/ (212) 363-7380 (WRK)
PETER J. HARRINGTON/ 149 WILLETS AVE./ WEST HEMPSTEAD NY 11552 / (516) 293-8400
MORRIS MOLIVER/ 1928 LOWELL LANE/ MERRICK NY 11566/ (516) 623- 4122
LOUISE GOLDSTEill/ 71 S. COUNTRY RD./ BELLPORT NY 11713/ (516) 286-8241
N• KERMAN/ MS A31-005/ GRUMMAN AEROSPACE/ BETHPAGE NY 11714/ ( 516) 575-7403
ROBERT SCHUTZ/ 93 MERIDIAN ROAD/ LEVITTOWN NY 11756/ (516) 735 -7244
DAVID VANCE/ LIBRARY E-2340/ MUSEUM COMMUNITY NETWORK INC./ SU NY - STONY BROOK/ STONY BROOK NY 11790/ (516) 2.46-6077
ROBERT TUPPER/ GRUMMAN AEROSPACE/ INDIAN ROAD/ SOUTHAMPTON NY 11968
FRANK LEPERA/ .APPLIED MATHEMATICS DEPT./ BROOKHAVEN NATIONAL LABORATORY/ UPTON NY 11973/ (516) 345-4112
G. O'SCHENECTADY/ 20 ELM STREET/ ALBANY NY 12202/ (518) 465-28 87
PETER BLONIARZ/ COMl'UTER SCIENCE DEPT./ ES 316/ SUNY AT ALBANY / ALBANY NY 12222/ (510) 457-4605
MA'!TBEW KA'ZJ..AVSKAS/ BLDG 28-310/ GENERAL ELECTRIC co./ 1 RIVER ROAD/ SCHENECTADY NY 12345
G. M. KR.EMBS/ DEPT 66A BLDG 003/ IBM CORP./ NEIGHBORHOOD RD./ KINGSTON NY 12401
JEANNE FERRANTE/ 201 N. OHIOVILLE RD./ HEW PALTZ NY 12561
MAURY GOLDBERG/ MINI MICRO MA"R.T/ 1618 JAMES STREET/ SYRACUSE NY 13203/ (315) 422-4467
STEVE QUALLDlE/ MACHDl'ERY HALL/ SYRACUSE UNIVERSITY/ SYRACUSE NY 13210/ (315) 423-3812
ROBERT J. ELLISON/ MATH DEPT./ HAMILTON COLLEGE/ CLINTON NY 13 323/ (315) 859-4138
BARBA.RA JC. NORTH/ 304 HILLSIDE TERRACE/ ENDWELL NY 13760
MARY DIEGERT/ MATlmiATICS DEPT./ BROOME COMMUNITY COLLEGE/ !IN GHAMrON NY 13902/ (607} 722-5022
NORMAN V. PLY:r.ER/ ACADFMIC COMPUTER CENTER/ HARTWELL HALL/ SUN Y - BROCKPORT/ BROCKPORT NY 14420
E. GOT'!WALD/ 2 TILEGATE GLEN/ FAIRPORT NY 14450/ (716) 423-779 7/ (716) 223-5383
JOHN L. DEBES/ BOX 167/ MACEDON HY 14502/ (202) 447-0547
RICHARD AIAUTZ/ 241 Wl28/ XEROX CORP./ 800 PHILLIPS RD./ YEBST ER NY 14580
JAMES R. LOW/ DEPT. OF COMP· SCI./ MATHEMATICAL SCIENCES BLDG. / UNIV· OF ROCHESTER/ ROCHESTER NY 14627
CHARLES N• ARROWSMITH/ NCR CORP./ 950 DANBY RD./ ITHACA HY 148 50/ (607} 273-5310
MARIANN CARPEN'l:ER/ G-24 URIS HALL/ OFFICE OF COMP. SERV./ CORN ELL UNIVERSITY/ ITHACA NY 14853/ (607) 256-7341
BAL PERKINS/ DEPT. OF COMl'UTER SCIENCE/ CORNELL UNIVERSITY/ IT HACA NY 14853/ (607) 256-4934
C. Y. BEGANDY/ ALCOA TECHNICAL CENTER/ ALUMINUM co. OF AMERICA / ALCOA CENTER PA 15069/ (412) 339-6651
CHUCK AUGUSTINE/ COMPUTATION CENTER/ CARNEGIE MELLON UNIV./ SC HENLEY PARK/ CARNF.GIE MELLO*/ PITTSBURGH PA 15213/ (412) 578-2649
DAVID B° CROUSE/ GRAPHIC ARTS TECHNICAL FOUNDATION/ 4615 FORBE S AVE/ PilTSBURGH PA 15213
JIM TSEVDOS/ CARNEGIE-MELLON UNIV./ P.a. BOX 132/ PITrSBURGH P A 15213/ (412) 665-1036
ARON SHTULL TRAURING/ 5637 HOBART APT.33/ PITTSBURGH PA 15217/ (.412) 421-4066
ROBERT J. KDJG/ 2337 MARBURY ROAD/ PIT'ISBURGB PA 15221/ (412) 372-1212
STEPHEN G. HUSSAR/ PPG INDUSTRIES me./ OHE GATEWAY CENTER/ PI TTSBURGH PA 15222
FREDERICK E. SHIPLEY JR./ GULF RES. & DEV. co./ PO :BOX 2038/ p ITrSBURGH PA 15230/ (412) 362-1600
ELMER T. BEACHLEY/ P.O. !OX 18046/ PITTSBURGH PA 15236
ROBERTA WACHTER/ DlDUSTR.Y SYSTEMS DIVISION/ 200 BETA DRIVE/ PI TTSBURGH PA 15238/ (412) 782-1730 X544
ALAN M. LESGOLD/ LR.DC COMPUTER FACILITY/ UNIV. OF PITTSBURGH/ 3939 O'HARA ST./ PITTSBURGH PA 15260/ (412) 624-4901
PETER RICHETTA/ 287 NORMAL AVP:NUE/ SLIPPERY ROCK PA 16057/ (41 2) 794-3531 ..
FRANK BREWSTER/ 1 N. VISTA AVE./ BRADFORD PA 16701/ (814) 368- 6319
MICHA.EL D. BROW/ R· H. SHEPPARD CO, INC./ 101 PHIJ.ADELPHIA ST RFJ'!.T/ HANOVER PA 17331/ (717) 637-3751
CHARLES T. Lm!S/ BETHLEHEM. STEEL/ 1581 MARTIN TOWER/ BETHLEHE H PA 18016/ (215) 694-6359
ROBERT COLE/ 782 BARRYMORE LANE/ BETHLEHEM PA 18017/ (215) 865 -6509
RICHAlUl J. CICHELLI/ 901 WITTIER DRIVE/ ALLENTOWN PA 18103/ ( 215) 797-3153 (HOME)/ (215) 253-6155 (WORK)
PHILIP W. ROSS/ 8 HICKORY LANE/ CHALFONT PA 18914
JD{ SHALLOW/ 115 l!IRCH AVE./ :BALA CYNW'iD PA 19004
ROBERT H· TODD JR/ BRIARWOOD #1167/ CORNWALLIS HGT PA 19020/ ( 215) 752-4604
BOB LIDRAL/ 3806 BENSALEM BLVD. #214/ CORNWELLS HTS. PA 19020
JAMES A· MCGLINCHEY/ 296 BLAIR MILL RD. APT B-7/ HORSHAM PA 19 044
RODNEY MEBANE/ 600 OLD STREET ROAD IAT13/ TREVOSE PA 19047
T. L· (FRANK) PAPPAS/ 338 FRANCIS DRIVE/ HAVERTOWN PA 19083/ (2 15) 789-3206
RICHARD L. DAY./ TIME SHARE SUPPORT GROUP/ BELL TELEPHONE OF PE NNSYLVANIA/ ONE PAU..WAY./ PHILADELPHIA PA 19102

ALAN M· XANISS/ 1327 MCKINLEY ST./ PHILADELPHIA PA 19111/ (215 ) 441-2051 (1"'RK)
DAN MORTON/ 359 NOR'rHWOOD AVE./ PHILADELPHIA PA 19117
BILL CHESWICK/ COMPUTER ACTIVITY - SYSTEMS GROUP/ TEMPLE UNIV. / BROAD & HJNTGOHERY STREETS/ PHILADELPHIA PA 19122/ (215) 787-8527 (RORK.)
(215) 862-2153 (HCME)
JOHN F. RATT.I/ 300 HERMIT.AGE ST./ PRil.ADELPHIA PA 19128
PAUL J. PAN!ANO/ 2323 S. 17 ST./ PHILADELPH.IA PA 19145
NICK CVETKOVIC/ VIM 6B/ PENN MUTUAL LIFE/ 510 WALNUT ST./ PHIL ADELPHIA PA 19172
BOB KELLER/ CONCORD WAY/ CHADDS FORD PA 19317
JAMES I. WILLIAMS/ RD 4 BOX 18/ GLEN HILLS PA 19342/ (215) 648 -3554
THOMAS J. AHLBORN/ DEPT. MATH/ WEST CHESTER STATE COLLEGE/ WEST CHESTER PA 19380/ (215) 436-2181

GARY L. llEIGEL/ 202 YESTBROOK DRIVE/ llEST CHESTER PA 19380/ (2 15) 328-9100 (1"'RK)/ (215) 696-8739
BILL BIUNNAN/ 39 JODY DRIVE/ NORRISTOWN PA 19401/ (215) 277-24 66
PETER A· NAYLOR/ MS "R/220M/ SPERRY UNIVAC/ p.a. BOX 500/ BLUE BELL PA 19422/ (215) 542-3732
J. p. H. STOFBERG/ MS B/220M/ SPERRY UNIVAC/ P.O. BOX 500/ BLUE BELL PA 19422/ (215) 542-4011
MICHAEL ROSIAK/ 122 ARDWICK TERRACE/ LANSDALE PA 19446
RICHARD WHIFFEN/ ENERTEC/ 19 JENKINS AVE/ LANSDALE PA 19446/ ( 215) 362-0966
RICHARD A. JOKIEL/ p.a. BOX 136/ DOUGLASVll.LE PA 19518
WILLIAM Q• GRAHAM/ COMPUTING CENTER/ u. OF DEi.AWARE/ 192 s. ca .APEL ST./ NEWARK DE 19711/ (302) 453-6032
FRED A. MASTERSON/ DEPT. OF PSYCHOLOGY/ 220 WOLF HALL/ UNIV. 0 F DELAWARE/ NEWARK DE 19711
SAMUEL c. KAHN/ INFO SYSTEMS DEPT/ N-1450 PLANNING DIV./ DU PO NT & co./ RILMINGTON DB 19898
JOHN B. HOLHBLAD/ TELENET COMMUNI.CATIONS co~./ 1012 14TH ST. NW/ WASHINGTON DC 20005/ (202) 637-7900
RICHAlID B. FITZ/ 4215 38TH STREET NW/ WASHINGTON DC 20016
R. CARLYLE NEELY JR./ 10114 KATlll.EEN DRIVE/ FRIENDLY MD 20022/ (301) 248-6244
VINCENT STANFORD/ DEPT· OF MEDICINE COMPUTER RESEARCH C*/ 517 ROSS RALL/ GEORGE WASHINGTON UNIV./ 2300 EYE ST. HW/ WASHINGTON DC 20037/

2
7
676-6140
' 202> 676 - 3673
T. Q• STEVENSON/ a & F DATA SER.VICES/ RM 4646-S/ USDA/ WASHING TON DC 20250/ (202) 447-6275
NIELS K. WINSOR/ CODE 6752/ HAVAL RESEARCH LABORATORY/ "WASHING TON DC 20375/ (202} 767-3134
JOHN NOLAN/ NATIONAL SECURITY AGENCY/ R51/ DEPARTMENT OF DEFENSE/ 9800 SAVAGE ROAD/ FT. MEADE MD 20755/ (301) 796-6461
CAROL B. HOWELL/ p,Q. BOX 326/ GREENBELT MD 20770/ (301) 982-2 281 (GODDARD)
RANDY BARTH/ 9206 CANTERBURY RIDING/ LAUREL MD 20810
TOM ENTERLINE/ 13311 CHAUNCEY PL· #203/ Mr. RAINIER MD 20822
TOM LOVE/ SOFTWARE METHODOLOGY/ GENERAL ELECTRIC/ 401 N. WASHINGTON ST ... / ROCKVILLE MD 20850/ (301) 340-4000
ATTN: INFORMATICS INC. BOOKSTORE/ 6011 EXECUTIVE BLVD·/ ROCKVILLE MD 20852
PATRICIA SHELLY/ INFORMATICS INC. BOOK STORE/ 6011 EXECUTIVE B LVD·/ ROCKVILLE MD 20852
THOMAS A. MARClltIAK/ 13311 ARCTIC AVENUE/ ROCKVILLE MD 20853/ (301) 942-0538
BOB ROGERS/ 18625 AZALEA. DRIVE/ DERWOOD MD 20855/ (301) 869-20 89
H· A. COOK/ 1223 CRESTHAVEN DR./ SILVER SPRING MD 20903
JOHN G. GUTHRIE/ COMPUTER ENTRY SYSTEMS me./ 2141 INDUSTRIAL PAu.WAY/ SILVER SPRINGS MD 20904/ (301) 622-3500
SPEC BOWERS/ 9H BREEzy HILL CT./ COCKEYSVILLE MD 21030
WALLA.CE KENDALL/ 9002 DUNLOGGIN ROAD/ ELLICOTT CITY MD 21043/ (301) 465-4253
BARTON p, HDRTOH/ CHROMA/ p,Q, BOX 126/ COLUMBIA MD 21045/ (30 1) 992-7404
ROB BIDDLECOMB/ MS 451/ WESTINGHOUSE ELEcrRI.C CORP./ SDD EAST !OX 746/ BALTIMORE MD 21203/ (301) 765-6322
EDWARD w. KNUDSEN/ AAI co~./ P.a. BOX 6767/ BALTIMORE HD 2120 4/ (301) 666-1400
LESTER SACHS/ MS 3-0-25 OPER. BLDG/ SOCIAL SECURITY ADMINISTRATION/ 6401 SECURITY BOULEVARD/ BALTIMORE MD 21235/ (301) 594-5482
DAVID V. SOMMER./ RT· 5 BOX 220/ ANNAPOLIS MD 21401
J. BOGAR/ FRF.DERICK EL!CTRONICS COR2./ p.a. BOX 502/ FREDERICK MD 21701
ATTN: J. M· p. ASSOCIATES/ 3219 PRINCE WILLIAM DR./ FAIRFAX VA 22030/ (703) 591-8525
DAVID AULT/ COMPUTER SCIENCE/ WP 615/ THE MITRE CORP./ 1820 DOLLY MADISON BLVD./ 1'£1.EAN VA 22101/ (703) 437-7898 (HOME)
H. F. HESSION/ ADVANCED RECORD SYSTEMS ENGDIEERIHG/ WESTERN UN IOH/ 7916 WEST PARK DRIVE/ MCLEAN VA 22101/ (703) 790-2241

~c=HA!;. =~,/~i:A~~-iEG:a;g~ ~:~=G~~~"~ri~~ ~i~·~ =~:~G:~ ~~s~:~;~N c~~ ~o~~~/ ~~~2)

ROBERT A· GIBSON/ 8902 NICOL LANE #207/ MANASSAS VA 22110/ (70 3) 367-4792 (WORK)/ (703) 369-5640 (HOME)

HAROLD D. JENKINS JR./ SPRINGFIELD SUPPORT CENTER/ FAIRFAX COO NTY PUBLIC SCHOOLS/ 6707 ELECTRONIC DR./ SPRINGFIELD VA 22151
PAUL T. DY'l.E/ RESOURCE SYSTEM & PROGRAM Jr.NALYSJ.5/ 428 GHI BLDG ./ u.s.D.A·/ 500 12TH ST s.w./ WASHINGTON DC 22151
ROBERT G. FITZGERALD/ 133 EAST STREET N.E./ VIENNA VA 22180/ ( 301) 868-5229
-WALTER A. "WHITE/ 6048 N 9TH ST./ ARLINGTON VA 22205
LARRY DUBY/ 1500 ARLDIGTON BLVD· #910/ .ARLINGTON VA 22209
GERALD P. SHABE/ 3206 NORWICH TERRACE/ ALEXANDRIA VA 22309/ (7 03) 360-5587
RONALD OTTO/ 5800 LANE DRIVE/ ALEXANDRIA VA 22310
ART BARR.F:cr./ THE MITRE CORP./ 4112 CENTURY C'I./ ALEXANDRIA VA 22312
RONALD HARTUNG/ 1114 THOMAS JEFFEllSON PL·/ FREDRICXSBURG VA 22 401/ (703) 373-"6573
MICHAEL STAUFFER/ EASTERN MENNONITE COLLEGE/ HARRISONBURG VA 2 2801
AVERY CATLIN/ TRIMBLE FABM/ ROUTE 5 - !OX 363/ CHARLOTTESVIL* VA 22901
LINWOOD FERGUSON/ RT 1 BOX 3C - LAKE SAPONI/ BARBOURSVIlLE VA 22923/ (804) 973-5166

P AS C A L NEWS #13
23185
23284
23502
23505
23505
23669
27702
28214
28704
29206
29210
30021
30033
30067

30303
30305
30305
30305
30305
30327
30342
30354
32204
32304
32407
32670
33065
33068
33142
33181
33528
33549
33601
33803
35801
35803
37076
37660
40206
40583
43147
43229
43230
43762

43778
44092
44106
44106
44106
44107
44512
45201
45215
45241
45244
45342
45409
45414
45424
45li24
45432
46201
46202
46205
46312
46322
46526
46805
46808
47272
47401
47907
47907
47907
47907
47907
48010
48033
48043
48093
48098
48103
48103
48103
48103
48105
48105
48106
48109

48130
48169
48184
48228
48640
48824
49001
49003

49006
49008
49008

49085
49464
49503
49684
49931
49931

50011
50158
50307
51106
52240
52302
52302
52302
52402
53012

53092
53201
53201
53202
53202
53207
53217
53218
53511
53705

'i3715
53927
54601
5"901

D E C E MB E R , 1 9 7 3

P A GE 2 1

DOUdLAS DUNLOP/ 1502 CONWAY DRIVE - APT. 103/ WILLIAMSBURG VA 23185/ (804) 826-1725
AGNES H. ELMORE/ COMPUTING ACTIVITIES/ VIRGINIA COMK>NWEALTH UNIV./ 1015 FLOYD AVE./ RICHMOND VA 23284
DAVID E. HAMILTON/ SUITE 106/ #18 KOGER EXECUTIVE CENTER/ NORFOLK VA 23502/ (804) 461-0268
R. E. CRITrSINGER JR./ 136 BLAKE ROAD/ NORFOLK VA 23505
LLOYD n. YINK/ AIR CARGO nm./ p.a. BOX 9793/ NORFOLK VA 23505 I (804) 480-2660
JOHN C. CLARSON/ 303 TENDERFOOT COURT/ HAMPTON VA 23669
WILLIAM H. DIUGIUD/ PLANNING DIV./ CITY OF DURHAM/ 101 CITY HA LL PLAZA/ DURHAM NC 27702
WARREN c. FORDHAM/ MCCLURE LUMBER co./ 6000 MT- HOLLY RD/ CHAR LOTrE NC 28214
CARROLL Bo ROBBINS JR./ APT 32/ ARDEN ARMS .APTS./ ARDEN NC 287 04/ (919) 684-0168
HOWARD EISENSTEIN/ 6616 DARE CIR.CLE/ COLUMBIA SC 29206/ (803) 782-5041
BILL RAEUBER/ 149 LEEWARD RD./ COLUMBIA SC 29210/ (803) 777-60 01
CRAIG M· INGLIS/ 1420-C POST OAK DR./ CLAXKSTON GA 30021
JOHN P • CUCHES/ THE HYDE COMPANY/ 2169 CLAIRMONT RD
DECATO R GA 30033
HENRY D. KERR III/ 4820 HAMPTON LAKE DRIVE/ MARIE'l"l'A GA 3Q067/ (404) 971-2197
DARR.ELL PREBLE/ COMPUTER CENTER USER SERVICES/ GEORGIA STATE UNIVERSITY/ ATLANTA GA 30303/ (404) 658-2683
JEFFREY H. BIGGERS/ SUITE 411/ DTW' INC./ 3100 MAPLE DRIVE NE/ ATLANTA GA 30305
WILLIAM G. CHRISTIAN/ SUITE 450/ CLS INC./ 3100 MAPLE DRIVE NE / ATLANTA GA 30305
FRANKS. SPARKMAN/ SUITE 411/ D'IW' INC./ 3100 MAPLE DRIVE NE/ ATLANTA GA 30305
DAVID T. WILSON/ SUITE Ul/ D'IW INC./ 3100 MAPLE DRIVE NE/ ATLANTA GA 30305
JOHN WEST/ DIGITAL SYSTEMS DESIGN GROUP/ 4559 DUDLEY LANE NW/ ATLANTA GA 30327/ (404) 894-2264
K. M. ALBRIGHT/ SYSTEMS ANALYSIS/ SUITE 600/ SPERRY UNIVAC/ 57 75C PEACHTREE DUNl.mODY RD./ ATLANTA GA 30342/ (404) 256-5690
RICHARD p. DE ROBERTS/ FEDERAL AVIATION ADMINISTRATION/ p.Q. BOX 82822/ ATLANTA GA 30354/ (404) 763-7478 (OFF.)/ (404) 876-5370 (RES.)
ATTENTION; ROY W. FILEGER/ SUITE 110 FAST/ COMPUTER POWER/ 661 RIVERSIDE AVE/ JACKSONVILLE FL 32204
PEGGY ROBLYEN/ EDUCATIONAL COMPUTING PROJECT/ FLORIDA STATE DE PT. OF EDUCATION/ TALLAHASSEE FL 32304
ANNA WATSON/ 3705 DELWOOD DRIVE/ PANAMA CITY FL 32407/ (904) 2 34-4423
RICHARD J. NAST/ 1721 SW 55TR LANE/ OCALA FL 32670
HOWARD S. MARSHALL JR./ 2648 NW 86TH AVE./ CORAL SPRINGS FL 33 065
DEAN JAMES/ 7440 S.W. lOTH ST. - #102/ N• LAUDERDALE FL 33068
MONTE ELLIS/ RYDACbM INC./ 3401 NW 36TH ST·/ MIAMI FL 33142
JAMES GROSSMAN/ 2365 MAGNOLIA DR./ N. MIAMI FL 33181/ (305) 89 1-3440
CLARA L. JOHNSON/ MEDIA RESEARCH DIV. - ENGINEERING/ A. c. NIELSON ca./ 375 PATRICIA AVE/ DUNEDIN FL 33528/ (813) 734-5473
HERBERT M.. BRYANT JR./ 14410 HELLENIC DR. Fl9/ LUTZ FL 33549
R. D. EMRICK/ FIRST FLORIDA TOWER/ GTE DATA SERVICES/ p.a. BOX 1548/ TAMPA FL 33601/ (813) 224-3131
ALLEN P. DOWNARD/ 3008 REDWOOD AVE./ LAKELAND FL 33803
MARVIN E. KURTTI/ 1327 MONTE SANO BLVD. S.E./ HUNTSVILLE AL 35 801/ (205) 837-7610
DAVID MCQUEEN/ 2410 ARROWWOD DR./ HUNTSVILLE AL 35803/ (205) 881-3628
LABRY D. BOLES/ 649 DENVER DRIVE/ HERMITAGE TH 3 7076
J. lf, DISSELKAMP/ 202 BUILDING 54/ TENNESSEE EASTMAN COMPANY/ KDIGSPORT TH 37660/ (615) 246-2111
TOM EUBANK/ PRAGMATECH/ 2310 MELLWOOD AVE./ LOUISVILLE KY 4020 6/ (502) 895-1230
BEVERLY SWISSHELM/ KENTUCKY CNTR FOR ENERGY RES. LABORAT*/ UNI v. OF KENTUCKY/ IRON WORKS PIKE BOX 13015/ LEXINGTON XY 40583/ (606) 252 5535
RICHARD L· MAHN/ 245 w. COLUMBUS ST./ PICKERINGTON OH 43147
RICHARD E. ADAMS/ 967 ATLANTIC AVE #634/ COLUMBUS OH 43229/ (6 17) 436-3206
RICHARD GREENLAW/ 251 COLONY COURT/ GAHANNA OH 43230/ (614) 47 5-0172
RALPH G· HOLLINGSWORTH JR,/ 186 MONTGOMERY BLVD./ NEW CONCORD OH 43762
TOM LEGRAZIE/ RURAL ROUTE 1/ SALESVILLE OH 43778
LYNN C. HUTCHINSON/ BAILEY CONTROL COMPANY/ 29801 EUCLID AVE/ WICKLIFFE OH 44092/ (216) 943-5500
JACK D. ALANEN./ JENNINGS COMPUTING CENTER/ CASE WESTERN RESERV E UNIV .. / CLEVELAND OH 44106/ (216) 368-2800
M. MARVINNEY/ DEPT. OF BIOMETRY/ 150 WEAR.N BLDG./ CASE WESTERN RESERVE UNIV/ CLEVELAND OH 44106
PAUL MEILAND/ DENTAL SCHOOL CLINICS/ CASE WESTERN RESERVE UNIV ,/ 2123 ABINGTON ROAD/ CLEVELAND OH 44106
BILL SHANNON/ 2038 ARTHUR/ LAKEWOOD OH 44107
ATTN:WESTERN RESERVE COMMUNICATIONS/ 424 INDIANOLA ROAD/ YOUNG STOWH OH 44512
WILLIAM R KF.TZ/ MSD - DEVELOPMENT/ THE PROCTER & GAMBLE COMPANY/ p.a. BOX 599/ CINCDINATI OH 45201/ (513) 562-2747
G. D. MlNTILLON/ 351 FLEMMNGRD./ CINCINNATI OH 45215
FRANCIS H. BEARDEN/ DATA SYSTEMS/ CINCINNATI ELECTRONICS CORP. / 2630 GLENDALE-MILFORD ROAD/ CINCINNATI OH 45241/ (513)· 563-6000 X140
CLINTON HERLEY/ MEDIATOR INC./ 2812 SADDLERACK DRIVE/ CINCINNA TI OH 45244
D. R. HILL/ MONSANTO RESEARCH CENrER/ p.a. BOX 32/ MIAMISBURG OH 45342
DAN C. WATSON/ WRIGHT BROS./ BOX 541/ DAYTON OH 45409/ (513) 2 23-2348
LAWRENCE A. SHIVELY/ 6014 FREDERICK ROAD/ DAYTON OH 45414
M. B. CLAUSING/ 5603 FISHER DRIVE/ DAYTON OH 45424/ (614) 236- 3475
W. A. SHOLL/ 4063 BUT'l'ERWOOD COURT/ DAYTON OH 45424/ (614) 233 -6487
JOE CLMA/ SUITE 200/ SIMULATION TECHNOLOGY INC./ 4124 LINDEN
AVE./ DAYTON OH 45432/ (513) 252-5623
c. W. SAWYU/ MS 1-210/ RCA - CE/ 501 N. LASALLE ST./ INDIANAP OLIS IN 46201/ (317) 267-6802
ATTN: REGENSTRIEF INSTITUTE/ REGENSTRIEF HEALTH CENTER/ 1001 R • TENTH - 5TH FLOOR/ INDIANAPOLIS IN 46202/ (317) 630-6221
RICHARD A. BYERS/ 3690 GLENCAIRN LANE/ INDIANAPOLIS IN 46205
VINCENT ELIAS/ SECURITY FEDERAL S & L ASSN./ 4518 INDIANAPOLIS BLVD./ EAST CHICAGO IN 46312
l>HlLlP To HODGE/ :noi. 99TH ST- EAST/ HIGHLAND IN 4b3ZZ/ lZl!:IJ 924-5581
IAN SCHMIDT/ 1301 s. MAIN STREET/ GOSHEN IN 46526/ (219) 534-1 794
R. GARY LEE/ DEPT. OF COMPUTER. TECHNOLOGY/ PURDUE UNIV./ 2101 COLISEUM 'BLVD./ FORT WAYNE IN 46805
DALE GAUMER/ GOVT. & INDUSTRIAL DIV./ MAGNAVOX/ 1313 PRODUCTION ROAD/ FORT WAYNE IN 46808/ (219) 482-4411
DONALD L. CL.APP/ R. #1/ ST. PAUL IN 47272
ANNA. BUCKLEY/ WRUBEL COMPUTING CENTER/ 75K KPER/ INDIANA UNIV. / BLOOMINGTON IN 47401/ (812) 337-1911
KENNETH LEROY ADAMS/ COMPUTING CENTER/ G-148 MATH SCIENCES/ PURDUE UNIV./ W.. LAFAYETJ:E IN 47907/ (317) 493-9407 OR 494-8232 (WORK)
JOSEPH H. FASEL III/ COMPUTER SCIENCES/ 442. MATH SCIENCES BUILDING/ PURDUE UNIVERSI:TY/ w. LAFAYETl'E IN 47907/ (317) 493-3832.
EDWARD F. GEHRINGER/ DEPT. OP COMPUTER SCIENCE/ MATH SCIENCES BUILDING/ PURDUE UNIVERSITY/ W. LAFAYETTE IN 47907/ (317) 743-3429
SAUL ROSEN/ COMPUTING CENTER/ Gl75 MATH SCIENCES BLDG/ PURDUE UlflV./ W. LAFAYETIE IN 47907/ (317) 494-8235
MICHAEL DBISEMROTH/ SCHOOL OF IND ENGR./ PURDUE UNIV .. / W.LAFAY ETrE IN 47907/ (317) 493-3157
SHAUN DEVLIN/ 6854 CEDARBROOK/ BIRMINGHAM MI 48010/ (313) 322- 6856
H. DICK BREIDENBACH/ 4955 PATRICK/ W. BLOOMFIELD MI 48033
ROBERT J. MATHIAS JR/ APT. 2/ 235 CA.SS AVE./ Ml'· CLEMENS MI 48 043/ (313) 465-0068
CHRISTOPHER A .. PHILLIPS/ 29205 LUND / SOUTH BLDG. APT 14/ WARR EK MI 48093
WESLEY E. MANGUS/ 5786 NORTHFIELD PKWY·/ TROY MI 48098
ALAN A. KORTESOJA/ 701 W. DAVIS/ ANN ARBOR MI 48103/ (313) 995 -7063
WILLIAM G. LEDERER/ w. G. LEDERER & ASSOCIATES INC./ 701 S 7TH / ANN ARBOR MI 48103
WILLIAM LUITJE/ 2509 WEST LIBERTY ROAD/ ANN ARBOR MI 48103/ (3 13) 769-7820
LES WARNER/ 1804 LINWOOD/ ANN AllBOR MI 48103
JOHN D. EISENBERG/ 1510 PLYMOtrrH RD. 159/ ANN ARBOR MI 48105/ (313) 665-6410 (HOME)/ (313) 453-1400 X 3752 (WORK)
KURT METZGER/ 478 CLOVERDALE/ ANN ARBOR MI 48105/ (313) 662-47 57
DAVID J. WILSON/ ADP NETWORK SERVICES/ 175 JACKSON PLAZA/ ANN_ARBOR MI 48106/ (313) 769-6800
PAUL PICKELMANN/ COMPUTING CENTRE/ UNIV• OF MICHIGAN/ 1075 BEAL AVE/ ANN ARBOR MI 48109/ (313) 764-2121
GRF.G WINTERHALTER/ WINTERHALTER & ASSOC. INC./ 3825 ff· ZEEB RO AD/ DEXTER MI 48130/ (313) 426-3029
JOHN s. GOURLAY/ 8645 TOMA ROAD/ PINCKNEY HI 48169/ (313) 994- 6645
DAVID R. POSH/ DEPT 3741/ BURROUGHS cou./ 3737 5. VENOY RD./ WAYNE MI 48184/ (313) 722-8460 X267
R. NEIL PAIMAN JR./ 8235 .APNJLJ:NB/ DETROIT MI 48228/ (313) 834 -3065
BOB METZGER/ COMPUTER TECHNOLOGY DEV./ DOW CHEMICAL co./ 2040 DOW CENTER/ MIDLAND MI 48640
J. p. p. MARCHAND/ CICLOTRON LABORATORY/ MICHIGAN STATE UNIV./ EAST LANSJ:NG MI 48824
PHILLIP I. GOOD/ 7293 32-2/ THE UPJOHN co./ KALAMAZOO MI 49001
JAMES H. WALTERS/ AMERICAN NATIONAL HOLDING co./ p.a. BOX 2769 I KALAMAZOO MI 49003/ (616) 383-6700
LORm L· HEUN/ THE UPJOHN co./ 301 HENRIETTA ST./ KALAMAZOO MI 49006/ (616) 385-7886
AT.CH: SERIAL RECORDS/ DWIGHT WALDO LIBRARY/ WESTERN MICHIGAN U NIV./ KALAMAZOO MI 49008
MARK c. KERSTETrER/ DEPT. OF MATHEMATICS/ WESTERN MICHIGAN UNI VERSITY/ KALAMA.ZOO MI 49008/ (616) 383-0959
ANTHONY J. SCHAEFFER/ 1023 VINELAND RD./ ST. JOSEPH MI 49085/ (616) 429-8517
MIKE HAMMAN/ HERMAN MILLER nm./ ZEEMAN MI 49464/ (616) 772-33 00
JOHN DE LONGPRE/ 16 UNION ST. APT. 3/ GRAND RAPIDS MI 49503
TOM LEE/ NORTHWESTERERN MICH. COLLEGE/ 1701 £.FRONT ST/ TRAVER SE CITY MI 49684
JAMES H. HOWARD/ 1113 RUBY/ HOUGHTON MI 49931/ (906) 487-2110
KENNETH M. MCMILLIN/ SIMULATION LAB/ MICHIGAN TECH UNIV./ HOUG RTON MI 49931/ (906) 487-2111
ATTN: ADP CENTER/ 117 PEARSON HALL/ IOWA STATE mnv./ AMES IA 50011
DAVID HICKOK/ R·A· ENGEL TECH. CENTER/ FISHER CONTROLS co./ p. o. :BOX 11/ MARSHALLTOWN IA 50158/ (515) 754-3011

'NE/

0

!i.~~TD;;~!i~~,F~6~'~:~ ~~~~i~5s~~::i :~:c:~~ I~~~L~E~o~~bux
LAURAL DICKINSON/ 2107 P ST./ IOWA CITY IA 52240/ (319) 338-9
DON STOVER/ 2270 26TH STREET/ MARION IA 52302/ (31'ill 377-R'529
DENNIS SUTHERLAND/ 2835 25TH A.VE./ MARION IA. 52302/ (319) 377T, R. TllllRMAN/ 1410 7TH ST./ MARION ·u. 52302/ (319) 395-2280
JAMES c. COZZIE/ 1957B AVE NE/ CEDAR RAPIDS IA 52402
JACK p, SHAW/ W73 N726 LOCUST AVE./ CEDARBURG WI 53012/ (414)
s. R. BUCHANAN/ 12613 JONQUIL CT./ MEQUAN WI 53092
THOMAS W. HUEBNER/ 507 E. MICHIGAN ST./ MILWAUKEE WI 53201/ (4
GEORGE T. JACOBI/ JOHNSON CONTROLS/ P.O. BOX 423/ MILWAUKEE WI
ATrN: TECHNICAL LIBRARY 47-687/ JOHNSON CON'IROLS me./ 507 EM
WAYNE CATLETT/ SUITE 335N/ APPLIED COMPUTER. DESIGNS INC./ 811
GREGORY JENNINGS/ 3174 s. LOGAN AVE./ MILWAUKEE WI 53207/ (414"
G. THOMAS SLUSSER/ 5417 N• KENT AVE./ WHITEFISH BAY WI 53217
A. OLDENBURG/ AJAX CORP./ P.O. :BOX 18442/ MILWAUKEE WI 53218/
STEPHEN LOCKE/ RESEARCH/ BELOIT CORP./ 1 ST. LAlNTROSE CA 91020
H. LASHLEE/ P.O. BOX 987/ s. PASADENA CA 91030
R. s. SCRLAIFER/ 1500 ROLLIN/ S. PASADENA CA 91030/ (213) 354GURDPREM SINGH KHALSA/ KHALSA COMPUTER SYSTEMS DIC./ 500 SOUTH
NICK COPPING/ JET PROPULSION LABS/ MS 169/332/ CALIF. DIST. OF
LARRY HAWLEY/ MS 238-218/ JET PROPULSION LABORATORY/ 4800 OAK
Y. Q. PAINE/ HS 83-205/ JET PROPULSION LAB./ 4800 OAK GROVE DR
STEPHEN SKEDZELESKI/ 198-136/ JET PROPULSION LAB/ 4800 OAK GRO
JAMES T. BERINGER/ 440 GLENULLEN DR./ PASADENA CA 91105/ (213)
HOWARD RUMSEY JR./ 151 LINDA VISTA AVE./ PASADENA CA 91105/ (2
KARL FRYXELL/ DIVISION OF BIOLOGY/ 216-76/ CALIFORNIA INST. OF
SBAL FABLEY/ PAGE ROUSE/ CALTECH/ PASADENA CA 91126/ (213) 796
HARRY S. ADAMS/ P.O. BOX 70/ AGOURA CA 91301/ (213) 889-1094
EDDIE CARRIE/ PERTEC COMPUTER CORP./ 20630 NORDHOFF ST./ CHATS
CARROLL HENNICK/ 127 DEVIA DR./ NEWBURY PARK CA 91320
CHARLES RIDER/ 19100 KILLOCH WAY/ NORTHRIDGE CA 91326/ (213) 3
CATHERINE C. TOBEY/ 8020-3 CANBY AVE./ RESEDA CA 91335
EUGENE p. MlNTGOMERY/ 15721 EL CAJON ST./ SYLMAR CA 91342/ (21
BRUCE s. SE'ELY/ 8545-K BURNET AVE./ SEPULVEDA CA 91343/ (213)
p. &: C.F.BLOMKE CHANG/ ELECTRONIC SYSTEMS DIV./ BllNtCER-RAMO/ P
ELIZABETH IBAllA/ 605 RIO GRANDE/ THOUSAND OAKS CA "'91360/ (805

PAGE 24

OCEAN BLVD. #3101/ LONG BEACH CA 90802/ (213) 435-6344
13) 596-7336
9

5115
LAKE AVENUE/ PASADENA CA 91101/ (213) 684-3311
TECHNOLOGY/ 4800 OAK GROVE DR./ PASADENA CA 91103/ (213) 354-4321
GROVE DR./ PASADENA CA 91103/ (213) 354-2551
./ PASADENA CA 91103/ (213) 354-4284
VE DR./ PASADENA CA 91103
257-3853
13) 795-1260
TECH./ PASADENA CA 91125/ (213) 795-6811 X2827
-5974
WORTH CA 91311/ (213) 988-1800
60-3254
3) 367-8101
894-0029
.o. :SOX 5009/ 'RES'ILAKE VIU.* CA 91359
) 488-4425

~: :~~,, ~~:~;~3~4~=~rvEJU~~D~~/ ~~~ 9~~~s

CA 91364/ (213) 347-6400

GEORGE MASSAR. SR/ 6225-102 SHOUP AVE./ WOODLAND HILLS CA 91367 / (213) 346-1883/ (213) 377-4811 (WRK)
HERMAN FISCHER/ LITrON DATA SYSTEMS/ 8000 WOODLEY AVE./ VAN NU YS CA 91409/ (213) 781-8211 X 4213
LEED. AURICH/ 473 :BLAISDELL DR./ CLAREMONT CA 91711
JOEL MCCORMACK/ 1731 CATALPA RD./ CARLSBAD CA 92008
CHARLES Q. GDIBER/ 817 CREST DR·/ ENCDII'I:AS CA 92024/ (714) 94 2-0754
JAMES A. DARLING/ 1920 E. GRAND AVE 139/ ESCONDIDO CA 92027/ ( 714) 741-4921
RAJ MALHOTRA/ RJ SOP'I.'WARE SYSTEMS/ 7471 UNIV. AVE./ LA MESA CA 92041/ (BOO) 854-2751/ (800) 552-8820
KEN BOWLES/ p.a. :SOX 1123/ RANCHO SANTAFE CA 92067/ (714) 755- 7288/ 452-4526
BOB HOPKIN/ APIS DEPT· C-014/ UNIV. OF CALIFORNIA-SAN DIEGO/ L A JOU.A CA 92093/ (714) 452-4526
JIM MADDEN/ C-010 COMPUTER CENTER/ UNIV. OF CALIFORNIA - SAN D IFJJO/ LA JOU.A CA 92093/ (714) 452-4050
DAN RICHMOND/ 1670 LINWOOD ST./ SAN DIEGO CA 92103/ (714) 295- 5949
MARY K. LANDAVER/ 2677 COWLEY WAY/ SAN DIEGO CA 92ll0/ (714) 2 75-3029
JOHN LOWRY/ DEFENSE COMMUNICATIONS DIVISION/ ITT/ 4250 PACIFIC HWY #224/ SAN DIEGO CA 92ll0/ (714) 226-8735
WEB:S SIMmNS/ HORIZON TECHNOLOGY/ 7830 CLAIREMONT MESA BLVD./ SAN DIFJJO CA 92111/ (724) 292-8331
p. ANTONIO/ UNIVERSITY INDUS'IRIAL PARK/ LINKABIT CO'RP./ 10453 ROSELLE ST./ SAN DIEGO CA 92121/ (714) 453-7007
D. L. lCHITl'EL/ DIGITAL SCIENTIFIC oo./ 11425 SORRENTO VALLEY R D./ SAN DIEGO CA 92121/ (714) 453-6050
DAVID M. BUIXAN/ PRAGMATICS me./ 3032 MASTERS PL./ SAN DIEGO CA 92123/ (714) 565-0565
ROGER Ho EVANS/ INTEROCEAN SYSTEMS TB.Cf 3540 AERO CT./ SAN DIE GO CA 92123/ (714) 565-8400
JOSEPH W. SMITH/ HS 8401/ NCR/ 16550 WEST BERNARDO DR·/ SAN DI EGO CA 92127/ (714) 485-2864
w. E. CLAB.K/ DEPT. 244/ P.O. :SOX 80158/ SAN DIEGO CA 92138/ (7 14) 455-1330 X302
.
ROBERT J. REYNOLDS/ MAIL ZONE 32-6040/ GENERAL DYHAMICS/CONVAI R DIV./ p.a. :BOX 80847/ SAN DIEGO CA 92138/ (714) 277-8900 X2435
CRAIG A. SHOR/ TtlW COMMUNICATION SYSTEMS/ :SOX 80157/ SAN DIEGO CA 92138/ (714) 453-5303
CLARK. F. RAITE/ DATA SYSTEMS SER.VICES/ MZ 43-5310/ GENERAL DYN JJ!ICS/ P.O. BOX 8084/ SAN DIEGO CA 92138/ (714) 277-8900
MICHAEL S • BALL/ CODE 632/ NAVAL OCEAN SYSTEMS CENTER/ SAN DIE GO CA 92152/ (714) 225-2366
V. VINGE/ DEPT. OF MATHEMATICAL SCI./ SAN DIEGE STATE UNIV./ SAN DIEGO CA 92182/ (714) 286-6697/ (714) 286-6191
TED c. PARX/ SYSTEMS DEVELOPMENT/ SUITE 105/ MEDICAL DATA CONS ULTANTS/ 114 AIRPORT DRIVE/ SAN BERNARDINO CA 92408/ (714) 825-2683
ALICE HUNT/ COMPUTING CENTER/ UNIV. OF CALIFORNIA - RIVERSIDE/ RIVERSIDE CA 92521
DENNIS p. KIBLER/ 160 21ST ST. AJ>T. A/ COSTA MESA CA 92627/ (7 14) 548-4098
TIM LOWERY/ 2653 SANTA ANA AVE•/ COSTA MESA CA 92627/ (714) 63 1-0771
THOMAS J. PAULSON/ 23251 LOS ALISOS #70/ EL TORO CA 92630/ (71 4) 586-2802
JAMES p. URONE/ 22705 MALAGA WAY/ EL TORO CA 92630/ (714) 768- 4743
GARY :s. SHELLY/ ANAHEIM PUBLISHING co./ 120 EASH/ FULLERTON c A 92631
THOMAS Mo NEAL/ :SECICMAN INS'!RUMENTS/ 2500 HARBOR :stVD./ FULLER TON CA 92634/ (714) 871-4848 X 3259
PRANK F· CRANDELL/ 3008 MAPLE AVE./ FULLERTON CA 92635
BARCLAY R. KNERR/ 9061 CHRISTINE DRIVE/ HUNTINGTON BCH CA 9264 6/ (714) 633-4013
GENE FISHER/ 346 CANYON ACRES DR·/ LAGUNA BEACH CA 92651/ (714 ) 497-1241
JIM SQUIRES/ 457 BAYWOOD DR./ NEWPORT BEACH CA 92660
R. L. WALLACE/ 26501 CAMPESINO/ MISSION VIEJO CA 92675/ (714) 831-3127
ROBERT L· JARDINE/ BURROUGHS cou./ 25725 JERONIMO ROAD/ MISS! ON VIEJO CA 92691[ (714) 768-2370
WILLIAM E· CROSBYt .t.701 S. FAIRVIEW ST. #Rl/ SANTA ANA CA 'Jl/U 4/ (714) 549-7640
JOHN URBANSKI/ CONTROL DATA CORP./ 3519 WEST WARNER/ SANTA•ANA CA 92704/ (714) 754-4060/ (612) 373-3608 (WRK)
DONALD n. PECKHAM/ PERTEC COMPUTER CORP./ p.a. :BOX 19602/ IRV! HE CA 92713/ (714) 540-8340 X306
ALEX BRADLEY/ STANDARD SOFTWARE SYSTEMS/ 17931 "J" SKY PAPX/ I RVINB CA 92714/ (714) 540-8445
RUDY L. FOLDEN/ OPERATING SYSTEMS DEVELOPMENT/ P.O. BOX C-1950 4/ SPERRY UNIVAC/ 16901 ARMSTRONG AVE./ IRVDIE CA 92714/ (714) 833-2400
GRmORY L. HOPWOOD/ MINICOMPUTER OPERATIONS/ SPERRY UNIVAC/ 16 901 ARMSTRONG AVE./ IRVINE CA 92714/ (714) 833-2400
ERIC OLSEN/ HINICOMPUI'ER OPERATIONS/ SPERRY UNIVAC/ 16901 ARMSTRONG AVE./ IRVINE CA 92714/ (714) 833-2400
KENNETH A. PRFSCOTT JR./ MCO f PUB/ SPERRY UNIVAC/ 16901 ARMSTRONG AVE./ IRVINE CA 92714/ (714) 833-2400 X503
RICHARD P. SPRAGUE/ MINICOMPUTER OPERATIONS/ SPERRY UNIVAC/ 16 901 ARMSTRONG AVE./ IRVINE CA 92714/ (714) 833-2400 Xl19
RICHARD A. EVERMAN/ REGISTRAR'S OFF./ 215 ADMDIISTRATION BLDG· / UNIV. OP CALIP. - IRVINE/ IRVINE CA 92717
STEPHEN D. FRANXLIN/ COMPUTING PAr.IU.TY./ UNIV. OF CALIFORNIA. - IRVINE/ IRVINE CA 92717/ (714) 833-5154
RICHARD BEELER/ 1640 W. BALL RD. - APT. 105/ ANAHEIM CA 92802
C. L. HORNEY/ MICRO'ELECTRONIC DEVICE DIV./ D/832-RC27/ ROCIGraL L DITERNATIONAL/ p.Q. :BOX 3669/ ANAHEIM CA 92803/ (714) 632-3860
ARVIND AGRAWAL/ 1142 W. PAY LANE 18/ ANAHEIM CA 92805/ (714) 7 78-4800 X495
:BRUCE A. BROWN/ DEPT· PG-678/ 1316 ROSEWOOD PLACE/ ANAHEIM CA 92805/ (714) 778-4800 (WRK)/ (714) 991-0929 (HOME)
WIBERTA STONE/ 228 BRENTWOOD AVE./ VENTURA CA 93003/ (805) 642 -8466
MARK JUNGWIRTH/ 5408 E. HOLLY RIDGE DR·/ CAMARILLO CA 93010/ ( 805) 484-9574
JDl MCCORD/ 330 VEREJA LEYENDA/ GOLETA CA 93017/ (805) 968-668 1
LAURIAN M. CHIRICA/ DEPT. Ob" HJ!:l:S/ UNlV. Ub" l:ALl~UIUUA - SANTA. BARBARA/ SANTA BARBARA CA 93106/ (805) 967-5135
HUGH H. KAWABATA/ COMPUTER CENTER/ UNIV. OF CALIF. - SANTA BAR BARA/ SANTA BARBARA CA 93106/ (714) 968-7837
ATrENTION: NANCY BROOKS/ SCIENCE AND TECHNOLOGY DIVISION/ GENERAL RESEARCH CORPORATION/ p.a. BOX 6770/ SANTA BARBARA CA 93111/ (805) 964-7724
FRED Bl!!.LOHY/ THE INFO-HART/ P. o. BOX 2400/ SANTA BARBARA CA 9 3120/ (805) 965-5555/ 965-0265
JAMES L. llEUG/ DEPT. OF OOHP. SCI./ CALIPORNlA POLYTECHNIC STA TE U/ S.LUIS OBISPO CA 93407/ (805) 546-2861
JOHN To GARDNER/ 16425 KOCH ST.. / MOJAVE CA 93501/ (805) 824-25 78
DENNIS PAULL/ PAULL ASSOCIATES/ 814 ECHO DR./ LOS ALTOS CA 940 22/ (415) 948-9275
JOHN H. WENSLEY/ 22451 HOLT AVE./ LOS ALTOS CA 94022/ (415) 96 4-9456
JOHN BORGELT/ 1016 MIDDLE AVE./ MENLO PARK CA 94025
HOWARD M. ZEIDLER/ STANFORD RESEARCH INSTITUTE/ MENLO PARK CA 94025/ (415) 326-6200
DEAN MILLER/ 146 SANTA MARIA AVE./ PORTOLA VALLEY CA 94025/ (4 15) 851-2781/ (415) 961-4380 (OPPICE)
GREGORY L. NELSON/ APAR'DlENT 31/ 2280 CALIFORNIA ST./ MOUNTAIN VIEW CA 94040
ASHOK SURI/ 106 ~UNICE AVE./ MOUNTAIN VIEW CA 94040
DAVID MILLER/ p.a. :BOX 205/ MOUNTAIN VIEW' CA 94042/ {415) 966- 2266
R. A. STILLMAN/ ODELL INDUSTRIES CORP./ 1940 COLONY ST./ MOUNT AIH VIEW CA 94043/ (415) 961-1090
PETER ECCLESINE/ FORD AEROSPACE/ 2361 LAURA LANE/ Ml'· VIEW CA 94043/ (415) 968-8044
DAN ZURAS/ 1928 MADDUX DR./ REDWOOD CITY. CA 94061/ (415) 368-5 005
BRUCE A. BARRE'lT/ 777 3RD AVE/ SAN BRUNO CA 94066/ (415) 873-3 199
RICH AL'lMAIER/ 655 s. FAIROAKS AVE. APT. GlOl/ SUNNYVALE CA 94 086/ (408) 732-7485
DENNIS S. ANDREWS/ $/ AMDAHL CORJ!./ 1250 E. ARQllES AVE/ SUNNYVALE CA 94086/ (408) 746-6301
r.LENN T. EDENS/ BLDG 7B MS-·235/ NATIONAL SEMICONDUCTOR/ 165 SAN GABRIEL/ SUNNYVALE CA 94086/ (408) 737-6046
DAYr. 1.>KAHAM/ 51:!1 KIRK AVE·/ SUNNYVALE GA 'i4U66/ (.li68) 257-7000
THOMAS E. GRANVOLD/ 1119C REED AVE./ SUNNYVALE CA 94086/ (408) 247-7568
DAVID TERRY JONES/ CONTROL DATA CORP./ p.a. BOX 7090/ SDNNYVAL E CA 94086/ (408) 734-7466
KEN RENWORTH/ MEGATEST CO'RP./ 486 MERCURY DR./ SUNNYVALE CA 94 086/ (408) 736-1700
JERRY W. SUBLET!'/ 1249 BIRCHWOOD DR./ SUNNYVALE CA 9401Sb/ t415 ) /44-0l90
ARTHUR c. WILLIS/ AMDAHL CORJ!./ 1250 EAST ARQUES AVE./ SUNNYVALE CA 94086/ (408) 746-6000
KEITH G. TAFT:/ T. E. E. CO./ 823 MANGO AVE./ SUNNYVALE CA 9408 7/ (408) 735-8423
P. TORGRIMSON/ 528 CASTLEROCK/ SUNNYVALE CA 94087/ (408) 245-4 578
RICHARD CORE/ PO BOX 61628/ SUNNYVALE CA 94088/ (408)' 735-8400 X285
GARY w. WINIGER/ p.a. BOX 60835/ SUNNYVALE CA 94088/ (415) 964 -6982/ (408) 742-5647 (WRK)

~HR~~~ 1:~~o~~Ii~M2~'1'DiT!2 fom:~ :~Rs~DG~~~c ~c~~~5CA

94105/ (415) 546-6000
T. R. SIMONSON/ SIMONSON CONSULTDIG ENGINEERS/ 612 HOWARD ST./ SAN FRANCISCO CA 94105/ (415) 392-5388
PAUL MILLER/ PAUL HILLER & ASSOCIATES/ 1221 JONES ST./ SAN PRA NCISCO CA 94109/ (415) 397-4116
RICHARD C. LUND/ 703 NOE ST./ SAN FRANCISCO CA 94114/ (415) 82 4-5074

=~~~~L~~D::;,:~NT~6::;L~=~o=~y~=;s~~8c~A~!!iriso

I SAN FRANCISCO CA 94133/ (415) 441...4597
ANN PORCH/ INTERACTIVE CORP. SERVICES - #3433/ BANK OF AMERICA f p.a. :SOX 37000/ SAN FRANCISCO CA 94137/ (415) 522-5222
JOHN p. MCGDIITIE/ SYSTEMS DEVELOPMENT DEPT./ ITEL CORP./ 3145 PORTER. DRIVE/ PALO ALTO CA 94304/ (415) 494-9191
ATTN: SERIAL RECORDS DIV·/ STANFORD UNIV. LIBRARIES/ STANFORD CA 94305
JON F. CLAERBOUT/ DEPT. OF GEOPHYSICS/ STANFORD UNIVERSITY/ STANFORD CA 94305
DAVID JON PYLSTRA/ P.O. BOX 10051/ STANFORD CA 94305
SCOTT WAKEFIELD/ DIGITAL SYSTEMS LABORATORY/ STANFORD UNIV./ s TANFORD CA 94305/ (415) 497-0377
ROSS ALI.ARDYCE/ 725 MELISSA CT./ SAN MATEO CA 94402
I. D. SOUTHWELL/ 250 GRAMERCY DR./ SAN MATEO CA 94402
GARY Eo LAWRENCE/ 1417 CENTRAL AVE./ ALAMEDA CA 94501

------- ----

-----

NE WSPUG #K· 1LIAO/3 2499 CONSTELLATION DR./ HAYWARD CAD
E C E M988-7777
B E RX261
, 1978
PASCAL
-94545
94!>4!>/ l4UtsJ
94546

ELIZABETH CROCKER/ 4322 SEVEN HILLS/ CASTRO VALLEY CA 94546

94596
94606

JOHN GULBENK/ p.a. BOX 4509/ Q'ALNUT CREEK CA 94596/ (415) 932AL FRANCIS/ GREAT AMERICAN WIDGIT
1010 22ND AVENUE/ OAKLA

94611

ROBERT C. NICKER.SON/ 6966 COLTON BLVD/ OAKLAND CA 94611/ (415)

94618

CHARLES P. MURPHY/ 5201 MASONIC AVENUE/ OAKLAND CA 94618
YILSDH To PRICE/ MERRITT COLLEGE/ 12500 CAMPUS DRIVE/ OAKLAND

4250
ND CA 94606/ (415) 968-2752/ (415) 532-5686

co./

94619
94702
94702
94703
94708
94709
94941

P AGE 2 5

339-0436
CA 94619/ (415) 531-4911

RANDY NIELSEN/ 1780 FRANKLIN ST./ BERKELEY CA 9"702
RICHARD W. HAMILTON/ 1074 WEST 3B.D/ EUGENE OR -94702

JAMES A. WOODS/ 2014A WOOLSEr ST-/ BERKELEY CA 94703/ (415) 84

9-4346

PAUL TEICHOLZ/ 1322 BAY VIEW PL./ BERKELEY CA 94708/ (415) 843

-4232

MAX HINCHMAN/ 780 CRESTON

Im./

BERKELEY CA 94709

95014
95014
95014
95014

AYERS LOCKSMITHING/ 227 SHORELINE HRYo/ MILL VALLEY CA 94941/
ROREB.T M· BAD./ 379 CODNTltYVIEW DRIVE/ lD.LL VALLEY CA 94941/ (
JOHN Am.STROM/ OLIVETrl CORP. OF AMERICA/ 20370 TOWN CENTER LA
ATrN: RUTH SUGARMAN/ TYHSHARE TECHNICAL LIBRARY/ 20705 VALLEY
DONALD E. GRIMES/ TYMSHAR.E me./ 20705 VALLEY GREEN DRIVE/ CUP
JAMES W. HUFFMAN/ 8052 PARK VILLA CIRCLE/ CUPERTINO CA 95014 .
SCOTT JAMESON/ HEWLETr PACKARD/ 11000 WOLFE ROAD/ CllPERTINO CA
JOE KEEFE/ 10730 WUNDERLICH/ CUPERTINO CA 95014/ (408) 257-214

95014

DOH MOXON/ 10410 STOKES AVE./ CUPERTINO CA 95014

95014
95014
950lli
95014
95030

98105
98112
98115

DAVID F. OHL/ P.O. BOX 257/ CUPERTINO CA 95014/ (408) 926-9803
RICHARD PALCHIK/ TYMNET/ 20665 VALLEY GREEN RD./ CUPERTINO CA
95014/ (408) 446-6652
BOB SHEPARDSON/ BLDG C4-H/ SHEPARDSON MICROSYS'IEMS/ 20823 STEV "'ENS CREEK BLVD./ CUPERTINO CA 95014/ (408) 257-9900
LES VOGEL/ 7960 MCCLELLAN #3/ CUPERTINO CA 95014
VINCENT BUS.AM/ AZ-TECH ASSOCIATES nm/ 25754 ADAMS ROAD/ LOS G ATOS CA 95030/ (408) 353-3277
RICHARD H. LADDEN/ 1404 ACADIA AVE./ lD.LPI'IAS CA 95035
.
95050/ (408) 2li9-7000
ARTIE GREEN/ HEWLETT PACKARD/ 3003 SCO'It BLVD./ SANTA CLARA CA
E. HAROLD YILLIAMS/ SYSCOH/ 2996 SCOTT BLVD./ SANTA CLARA CA 9 5050/ (408) 246-2437
JOHN W. BURNETT/ M/S 690/ NATIONAL SEMICONDUCTOR CORP./ 2900 S EMICONDUCTOR DR./ SANTA CLARA CA 95051/ (408) 737-5228·
BRUCE J. EDMUNDSON/ M/S 690/ NATIONAL SEMICONDUCTOR/ 2900 SEMI CONDUCTOR DR./ SANTA CLARA CA 95051/ (408) 737-5244
JULIANA H. KNOX/ 3655 PRUNERIDGE HQ. 186/ SANTA CLARA CA 95051 I (408) 2.lil-5028
RAYMOND M. LF!ING/ 3301 HOMESTEAD ROAD APT 301/ SANTA CLARA CA
95051/ (408) 733-2600
HENRY MOOILTON/ 3480 GRANADA AVE 1234/ SANTA CLARA CA 95051/ ( 408) 984-2li93
DAVID
SALLUME/ 3480 GRANADA AVE. APT. 161/ SANTA CLARA CA 9 5051/ (805) 937-4541
ED SCHOELL/ DEPT. NSAV/ NATIONAL SEMICONDUCTOR/ 2900 SEMICONDU C'IOR DRIVE/ SANTA CLARA CA 95051
A. I. STOCKS/ 3500 GRANADA #421/ SANTA CLARA CA 95051/ (408) 2 43-6985
MIKE TRAVIS/ 3255 - 3A SCOTT BLVD./ SANTA CLARA CA 95051/ (408 ) 249-5540
RICHARD M. WOODWARD/ AMERICAN MICROSYSTEMS INC./ 3800 HOMESTEA D FJ'J./ SANTA CLARA CA 95051/ (408) 246-0330
PETER YOUTZ/ C/O 'DM.C/ 2300 OWEN ST./ SANTA CLARA CA 95051/ (40 8) 249-1111
MIXES SISIOS/ INFORMATION PROC. CENTER/ SANTA CLARA UNIV./ SAN TA CLARA CA 95053/ (408) 984-4582
ALLEN L. AHBLFB./ AMDAHL COP.P./ 1250 EAST ARQUES AVE./ SUNNYVAL E CA 95125/ (408) 746-6567
JOHN H. KILFOIL/ 1777 TOPEKA AVE./ SAN JOSE CA 95126/ (408) 28 6-3166 (ROME)/ (408) 299-4251 (l161 x 5616
ROD STEEL/ MS 61-272/ TEKTRONIX INC./ P.O. l!OX 500/ BEAVERTON OR 97077/ (503) 638-3411 X2516
GLEN FDLUIER/ GENERAL DATA SERVICES/ 2400 SE BROOKWOOD AVE• 11 B/ HILLSBORO OR 97123/ (503) 64D-4040/ (503) 644-0161 X.5976
ATI'N: ORFGON KINI-COMPUTER SOF'NARE. I*/ 2340 S.W. CANYON ROAD/ PORTLAND OR 97201/ (503) 226-7760
JORN WONG/ 3502 SW GALE/ PORTLAND OR 97201/ (503) 645-6464
DORSEY DRANE/ COMPUTER CENTER/ REED COLLEGE/ PORTLAND OR 97202
RICHARD T. BROW/ WOOD MARKETS INC./ P.a. BOX 669/ PORTLAND OR 97207/ (503) 645-5687
DAVE BAASCH/ 2683 NW RALEIGH/ PORTLAND OR 97210/ (503) 223-657 0
HANS JONGE VOS/ 14130 s.w. FERN ST./ TIGARD OR 97223/ (503) 64 li-1283
LORIN RICKER/ 9450 s.w. BARNES RD./ PORTLAND OR 97225/ (503) 2 97-5671
SHELLEY GILES/ ATKINSON GRAD SCHOOL/ WILLAMETTE UNIV./ 900 STA TB STREET/ SALEM OR 97301
OLE ANDERSON/ 4210 NW CRESCENT VALLEY/ CORVALLIS OR 97330/ (50 3) 753-6995
LARRY BILODEAU/ DIGrrAL ELECTRONIC SYSTEMS/ 205 NW 31ST/ CORVALLIS OR 97330/ (503) 754-1694
DAVID P. CAUTLEY/ DEPT. OF COMPurER SCIENCE/ GENERAL INFORMATION SYSTEMS INC./ 155 s.w. MADISON/ CORVALLIS OR 97330/ (503) 75.li-1711
KORT KOHLER/ 285.li N W JOHNSON/ CORVALLIS OR 97330/ (503) 753-1 770
RUSSELL RUBY/ 627 SW 16TH/ CORVALLIS OR 97330/ (503) 753-2091
KAMllAN MALIK/ DEPT. OF COMPUTER SCIENCE/ OREGON STATE UNIV./ CORVALLIS OR 97331/ (503) 754-3273
KENT LOOBEY/ 2110 CARMEL AVE/ EUGENE OR 97401/ (503) 686-8110
DAVID MEYER/ DUNHILL PERSot:EL INC./ 1551 OAK ST./ EUGENE OR 97 401/ (503) 484-9242
TERRY LIITTSCHWAGER/ MCKENZIE FLYING SERVICE INC/ 90600 GREENH ILL ROAJJ/ EUGENE OR 97li02/ (503) 688-0971
R. BUSH/ P.O. BOX F/ NORTH BEND OR 97459
JOHN BUCZEK/ CYBERMEDIC/ P.O. BOX 893/ LA GRANDE OR 97850
STEPHEN J. WEINBERGER/ 14032 SE NEWPORT WAY/ BELLEVUE WA 98006
JOHN D. ~OLLEY/ 6722 l28TH AVE· SE/ BELLEVUE WA 98006/ (206) 237-2753
KEITH MITCHELL/ 16213 SE 28 PL/ BELLEVUE WA 98008/ (206) 237-2 753
KASI SESHADRI BHASKAR/ 22828 76TH AVE. W. APT. #33/ EDMONDS WA 98020/ (206) 778-6731 (HOME)/ (206) 774-2381 (WJRK)
ROBERT EMERSON/ HONEYWELL INFORMATION SYSTEMS/ 9555 SE 36TH STREET/ MERCER ISLAND WA 98040/ (206) 233-2077
GARY S. ANDERSON/ JOHN FLUl-:X MFG. CO. INC./ p.a. BOX 43210 - M .s. 29/ M>UNTLAKB TERR WA 98043/ (206) 774-2296
NORM SEETHOFF/ MA.IL STOP 25/ JOHN FLUKE MFG. CO. INC./ P.O. BO X 43210/ M>UNTLAKE TER* WA 980li3/ (206) 774-2381
R. A. LOVESTEDT/ 20427 SE 192/ RENTON WA 98055/ (206) 432-0769
JAMES G. BARON/ 5012 llTB NE NO .. F/ SEATTLE WA 98105
ROBERT W. RIEMANN/ NW & ALA.SICA FISHERIES/ FISHERIES DATA & MANAGEMENT SYSTEMS/ NOAA/ 2725 MONTLAlCE BLVD. EAST/ SEATTLE WA 98112
PETER A. ARMSTRONG/ 444 NB RAVENNA BLVD #309/ SEATl'LE WA 98115

98115

R. M; lall!tMAHNf 2281 J!:E; 60TR/""SEATTLJnlld8115rC206) 525~39 91

98115
98124
98161
98178
98188
98195
98407
98507
98907

ROBERT C. SLATE/ THBRMOTEK ASSOCIATES/ 8225 17TH AVE. NE/ SEA.T TLE WA 98115/ (206) 523-1559
DAVID F. WEIL/ MS 73-03/ BOEING COMPUTER SERVICES INC./ p.a. BOX 24346/ SEA'ITLE WA 98124/ (206) 237-5632
FRED BALLANTINE/ C/O ARTHUR YOUNG & co./ 2100 FIHANCIAL CENTER I SEA'lTLE WA 98161/ (206) 623-9000
MICHAEL R. MCGUIRE/ 12022 71ST s. #308/ SEATTLE WA 98178
RICHARD R. DYHANT/ GENERAL MANAGER/ DIGI'.CAL BUSINESS SYSTEMS I NC .. / 774 INDUSTRY DR./ TUK.WllA WA 98188/ (206) 575-3740
A'I'IH: UNIV. OF WASHINGTON/ TECHNICAL SUPPORT SERVICES/ LOWER L EVEL JE-15/ 4545 15TR N• E. / SEATTLE WA 98195
EDRICE REYNOLDS/ EDRICE ENTERPRISES/ P.O. BOX 166/ TACOMA WA 9 8407
PHil. HUGHES/ P.O. BOX 2847 / OLYMPIA WA 98507 / (206) 352-9637

99163

JOHN HILLER/ P.o. BOX 2118 c.s./ PULLMAN WA 99163/ (509) 355-6
R. C. LUCKEY/ 1110 GILMORE/ RICHLAND WA 99352/ (509) 943-3107
TOM MATHIEU/ l!Al'TELLB PACIFIC H.W. LABS/ BATTELLE BOULEVAl!D/ R
TOM SWANSON/ 7505 BERN STREET/ ANCHORAGE AX 99507
MARCELO SAHSEAU/ OHIGGINS 295/ l!AHIA BLANCA RA-8000/ ARGENl'INA
HICK HAMMOND/ DFM (UNDERWATER WEAPONS)/ NAVY OFFICE/ CANBERRA
W.. DAVIS/ 4 GRANDVIEW ST./ GLENR.OY VICTORIA 3046/ AUSTRALIA
M. RAHILLY/ 2 RITA S'IREET/ EAST PRESTON VICTORIA 3072/ AUSTRAL
p, S. EDYARDS/ 101 MAIN ST/ BLACKBURN VICTORIA 3130/ AUSTRALIA
ATTN: DEPT. OF COMP. set .. / }{)NASR UNIV./ CLAYTON VICTORIA 3168
DAN B. JOHNSTON/ DEPT. OF COMPUTER SCIENCE/ UNIV. OF QUEENSLAH
ATTN: PROGRAM LIBRARIAN/ COHPUTmG CENTRE/ UNIVERSITY OF ADELA
CHRIS D. MAJU.IH/ DEPT OF COMPU?IHG SCIENCE/ UHIVERSITr OF ADEL
A'I'IH: BIBLIOTHEQUE CEHTRALE/ FACULTES UNIVERSITAIRES/ H-D. DE
MARTINE DE GERLACH!/ 177 BTE 1/ SPERRY UNIVAC/ CHAUSEE DE LA T
ROBERIO DIAS/ P.O. BOX 30028/ SAO PAULO/ BRAZIL/ 444-3701
H. J. AU/ P.O. BOX 1025/ ST. JOHN"S NEWFNDLAND AlC SM3/ CANADA

94941
95014

95014

95035
95050
95050

95051
95051
95051

95051
95051

(415) 383-1415

415) 383-1655
HE/ CUPERnNo CA 95014
GREEN DR./ CUPERTmO CA 95014
ER'IINO CA 95014/ (408) 446-6586
95014/ (408) 257-7000 X2530
O

w.

95051
95051

95051
95051

95051
95051
95053
95125
95126
95127
95128
95129
95129
95132
95132
95132
95376
95401
95610
95610
95650
95660

95926
95927
95955
96224
96786
96822
97005
970M

7

97077
97077

97077
97077
97077
97077
97077
97077
97123

97201
97201
97202
97207
97210
97223
97225
97301
97330
97330
97330
97330
97330
97331
97401
97401
97402

97459
97850
98006
98006
98008
98020
98040
98043

98043
98055

JAY WOODS/

99352
99352
99507
RA-8000 ARGENTDJA

2600 AUSTRALIA

304 6 AUSTRALIA
3072 AUSTRALIA
3130 AUSTRALIA

3168 AUSTRALIA

4067 AUSTRALIA
5001 AUSTRALIA
5001 AUSTRALIA

BELGIUM
B-1170 BELGIUK

BRAZIL
AlC 511:J CANADA

p.o.

BOX 1016/ YAKIMA WA 98907/ (509) 452-9133
636 (c.s. DEPT.)/ (509) 335-6147 (OFFICE)
ICHLAND WA 99352/ (509) 946-3711

A.c.T. 2600/ AUSTRALIA/ (062) 482858
IA/ 478 6li51
/ 341-6842
AUSTRALIA
D/ ST. LUCIA QUEENSLAND 4067/ AUSTRALIA/ (07) 377 6930
IDB/ BOX 498 G.P.o./ ADELAIDE S.A. 5001/ AUSTRALIA/ 61 223 4333 X2720
AIDE/ G.P.o. BOX 498/ ADELAIDE s.A. 5001/ AUSTRALIA/ (OB) 223 4333 X2762
LA PAIX/ RUE DE BRUXELLES 61/ NAMUR/ BELGIUM
HULPE/ BRUXELLES B-1170/ BELGIUM

I

p

AS C AL NE WS # 1 3

DE C E MB E R , 1 9 7 8

AlC 557 CANADA

RANDY DODGE/ COMPUTING SFllVICES/ MEMORIAL UNIVERSITY/ ST. JOHN'S NEWFNDLAND AlC 557/ CANADA/ (709) 753-1200 X2746

BOP lXO CANADA

BILL WILDER/ SCHOOL OF COMPUTER SCIENCE/ ACADIA UNIV./ WOLFVIL LEN. SCOTIA BOP lXO/ CANADA

B3L 4LS CANADA

DENNIS MISENER/ DnlAXION RF.sEARCH LTD./ BOX 1053 ARMDALE STN./

ClA 4P3 CANADA

J. W. HANCOCK/ COMPUTER CENTER/ UNIV. OF PRINCE EDWARD ISLAND/

HC3 3J7 CANADA

LUC LAVOIE/ DEPT. 1. R.

H3C 3A9 CANADA
H3N 2T6 CANADA

LES SATENSTEIN/ PERF. OPTIMIZATION / PROCESSING OPERA*/ ROYAL BANK OF CANADA/ BOX 6001/ MlNTREAL QUEBEC H3C 3A9/ CANADA
IAN MACMILLAN/ 7939 BIRNAM/ MONTREAL QUEBEC H3H 2T6/ CANADA

o./

UNIVERSITB DE MONTREAL/

c.p.

6128

P AGE 2 6

HALIFAX N.SCOTIA B3L 4L5/ CAHIJJA/ (902) 429-3175

CHARLOTTETOWN P-B·I· ClA 4P3/ CANADA
SUCCURSALE

A/ WNTREAL QUEBEC HC3 3J7/ CANADA/ (514) 737-3700

H3S 2L7
H4T lNl
H9P 1J3
JOB 2CO
KOJ lPO
KlS 5B6
K2H 5S3
K2K 1X4
LlS 3B4
LSC lCB
L5N 1W2
L7M 1K4
M2J 2W6
H3C 187
M3C 1Z3
M3J 1P3
M4R 1V2
H4R 1Z2
M5N 2Z6
M9A 3V3
N2C JEO
N2J 4G5
N2L 3Gl
N6A Ir.Kl
N6A 5B7
N6A 5B7
N6A 5B9
POJ !KO
P7B 5El
R3H OR9
S7H 1B5
T6G 2C2
V3N 4N8
V5A 1S6
\'6K 2Cl
V6T lWS
V6X 2L4
DK-2100
DK-2730
DK-2770

CANADA
MARTIN MILLER/ 6650 WILDERTON AVENUE/ MONTREAL QUEBEC H3S 2L7/ CANADA/ (Slli) 384-1030
CANADA
MARY SUTTON/ A.E.S. DATA LTD./ 570 RUE MCCAFFREY/ MONTREAL QUEBEC H4T lNl/ CANADA/ (514) 341-5430 X307
CANADA
BARRIE D. MACLEOD/ POINTE-CLAIRE FIRST FLOOR/ PECHES ET ENVIRONNEMENT CANADA/ 2121 TRANS-CANADA HIGHWAY/ DORVAL QUEBEC H9P 1J3/ CANADA/ (514) 683-8152
CANADA
JOHN SEITZ/ c.p. 525/ NORTH HA'll.EY QUEBEC JOB 2CO/ CANADA/ (81 9) 842-2375
CANADA
p. D. MCMORRAN/ p.a. BOX 904/ DEEP RIVER ONTARIO KOJ lPO/ CANA DA/ (613) 584-3311
CANADA
RICHARD F. DILLON/ DEPT. OF PSYCHOLOGY/ CARLETON UNIV./ OTTAWA ONTARIO KlS 5B6/ CANADA/ (613) 231-3636
CANADA
ROGER F. BURROWS/ 33 HOBART CRESCENT/ OTTAWA ONTARIO K2H 5S3/ CANADA
CANADA
W. MITCHELL/ OTTAWA COMPUTER GROUP/ p.Q. BOX 13218/ KANA.TA ONT ARIO K2K 1X4/ CANADA
CANADA
GORDON C. BOWRON/ 120 GREGORY RD./ AJAX ONTARIO LIS 3B4/ CANAD A/ (416) 683-8655
CANADA
JIM FINN/ SONOTEK/ 2410-5 DUNWI.N DR./ MISSISSAUGA ONTARIO L5C 1C8/ CANADA
CANADA
S. B. MATTHEWS/ R & D CENTRE/ AES DATA LTD./ 2332 MILLRACE COD RT/ MISSISSAUGA ONTARIO L5N 1W2/ CANADA
CANADA
G. CHALIFOUR/ DIAMOND CANAPOWER LTD./ 1122 PIONERR RD./ BURLINGTON ON'l:ARIO L7M !KA/ CANADA/ (416) 335-0321
CANADA
DOUG MARSHALL/ BXLE SYSTEMS LTD./ 617 SENECA HILL DRIVE/ WILLO lIDALE ONTARIO M2J 2W6/ CANADA
CANADA
BRUCE DAVIDSON/ DEPT. 806/ IBM CANADA LABORATORY/ 1150 EGLINTON AVE. EAST/ DON MILLS ONTARIO M3C 1H7/ CANADA/ (416) 443-3162
CANADA
AT'l.-:NTION: DIANNE CAMERON/ SOF'l'WARE DEVELOPMENT/ CONSOLIDATED COMPUTER me./ 50 GERVAIS DRIVE/ DOH HILLS ONTARIO M3C 1Z3/ CANADA/ (416) 449-8401
CANADA
JOHN c. MCCALLUM/ COMPUTER SCIENCE DEPT./ YORK UNIV./ DOWNSVIEW ONTARIO M3J 1P3/ CANADA
CANADA
TOH A. TROTTIER/ 411 DUPLEX AVE. - APT· 612/ TORONTO ONTARIO M4R 1V2/ CANADA/ (416) 488-8802
CANADA
M. DIANNE CAMERON/ 66 EDITH DRIVE/ TORONTO ONTARIO M4R 1Z2/ CANADA/ (416) 488-5738 (HOME)/ (416) 449-8401 (WJRK)
CANADA
DAVID ROSENBOOM/ l'.Q. BOX 543 - STATION Z/ TORONTO ONTARIO M5N 2Z6/ CANADA
CANADA
DONALD R. BAIN/ 319 THE KINGSWAY APT 110/ ISLINGTON ONTARIO M9 A 3V3/ CANADA
CANADA
T. A. CARGILL/ DEPT. OF COMP. SCI./ UNIV. OF WATERLOO/ WATERLOO ONTARIO N2C 3EO/ CANADA
CANADA
F. A· CELLINI/ NCR CANADA LTD./ 580 WEBSTER ST. H/ WATERLOO ONTARIO N2J 4G5/ CANADA/ (519) 884-1710 Xl96
CANADA
W. MJRVEN GENTLEMAN/ COMPUTER SCIENCE DEPT./ UNIVERSITY OF WATERLOO/ WATERLOO ONTARIO H2L 3Gl/ CANADA/ (519) 885-1211 X2187/ (519) 885-1211
CANADA
PAUL DENNISON/ LONDON LIFE INSURANCE CO./ 255 DUFFERIN AVE./ LONDON ONTARIO N6A 4Kl/ CANADA/ (519) 432-5281 Xl64
CANADA
ATIN; PROGRAM LIBRARY/ COMPUTING CElfTER/ 223 NATURAL SCIENCE CENTER/ U OF WESTERN ONTARIO/ LONDON ONTARIO N6A 5B7/ CANADA/ (519) 679-2151 X45
CANADA
GORDON BARKER/ NA'11JRAL SCIENCE CENTRE/ 223 COMPUTING CENTER/ UNIVERSITY OF WESTERN ONTARIO/ LONDON ONTARIO N6A 5B7/ CAN.ADA/ (519) 679-2151
CANADA
L. MCHARDY/ ENG. & MATH. SCI. BLDG./ COMP. SCI. DEPT./ UNIV. 0 F WESTERN ONTARIO/ LONDON ONTARIO N6A 5B9/ CANADA/ (519) 679-2636
CANADA
ROSS ALEXANDER/ p.a. BOX 1175/ HAILEYBDRY ONTARIO POJ lKO/ CANADA/ (705) 672-5193
CANADA
ATl'N: DEPT. OF MATHEMATICAL SCI./ LAKEHEAD UNIV./ THUNr·ER BAY ONTARIO P7B 5Bl/ CANADA/ (807) 345-2121 X469
CANADA
D. A. MOIR/ C/O CYBERSHARE LTD/ 550 BERRY ST./ WINNIPEG MANITO BA R3H OR9/ CANADA/ (204) 786-5831
CANADA
DEREK F. ANDREW/ 223 6TH ST. EAST/ SASKATOON SA.SK. S7H 1B5/ CANADA/ (306) 665-3226
CANADA
MARK R. JOHNSON/ A'IMOSPHERIC SCIENCES DIV./ ALBERTA RESEARCH C DUNCIL/ 11315-87 AVENUE/ EDMONTON ALBER.TA T6G 2C2/ CANADA/ (403) 432-8125
CANADA
KIM WILLIAMS/ SUITE 602/ 7818 6TH ST./ BURNABY B.C. V31l 4N8/ CANADA/ (604) 524-9741
CANADA
I. GANAPATHY./ COMPUTING CENTRE/ HOOTKA BUILDING/ snmN FRASER UNr.v./ BURNABY B.c. V5A 1S6/ CANADA/ (604) 291-4712
CANADA
NORMAN J. JAFFE/ GHS SYSTEMS LTD/ 3054 W. 8TH AVENUE/ VANCOUVER B.C. V6K 2Cl/ CANADA/ (604) 731-9028
CANADA
C. A. MILLER/ TRIUMF/ UNIV. OF BRITISH COLUMBIA/ VANCOUVER B.C. V6T 1W5/ CANADA/ (604) 228-4711
CANADA
PETER NEEDHAM/ 2771 NWBER FOUR RD·/ RICHMOND B.C. V6X 2L4/ CA NADA
DENMARK
JORGEN OXENBOLL/ COMPUTER DEl'T./ H.C.QRSTED INSTITUTE!/ UNIV. OF KOBENHAVN/ UNIVERSITETSPARKEN 5/ KOBENHAVN 0 DK-2100/ DENMARK
DENMARK
ROLF MOLICH/ DAHSK DATA ELEKTRONIK/ HERLEY HOVEDGADE 207/ HERL EV DK-2730/ DENMARK/ 45 2 84 50 11
DENMARK
FLEMMING PEDERSEN/ POS'll'ARKEH 31 1 TV./ KAS'IRUP DK-2770/ DENMARK/ 01-513885
DOMINICAN REP. JOSE M. FLOREN/ ENS. PIANTINI/ CALLE 22 #42A/ SANTO DOMINGO/ DOMINICAN REP./ 565-8557/ 567-6515
SF-00510 FINLAND
JAN-HENRIK JOHANSSON/ PORVOONKATU 26 C 36/ HELSINKI 51 SF-0051 0/ FINLAND/ 90-140022
SF-02730 FINLAND
HEIKKI LEHTINEN/ LEHUTIE 16/ LAAKSOLAllTI SF-02730/ FINLAND
SF-33540 FINLAND
JYRKC TUOMI/ PELLERVONKA'llJ 9/4009/ TAMPERE 54 SF-33540/ FINLAND/ 931-50000/570 (HOME)/ 931-162125 (WORK)
D-1000 GERMANY
BERND MARTENS/ SCHILLERSTR 84/ BERLIN 49 D-1000/ GERMANY
D-3000 GERMANY
HEINZ KLEENE/ LISTERHEILE 23/ HANNOVER D-3000/ GERMANY
D-5000 GERMANY
KARL KOEHNE/ INST. FUR MED. DOKUMENTATIOH/ UNIVERSITAET ZU KOE LN/ JOSEF-STELZMANN STR 9/ KOBLN D-5000/ GERMANY/ 0221 4784164
D-6000 GERMANY
PETER C. AKWAI/ SOPHIENSTR. 32/ FRANKFURT 90 D-6000/ GERMANY/ 0611-665-4331
D-6750 GERMANY
HANS-WILM WIPPERMANN/ FB lNFORMATIK/ UNIV. OF XAISERSLAUTERN/ PFAFFENBERGSTR.. 95/ KAISERSLAU'l'ERN D-6750/ GERMANY/ (0631) 854 2635
D-6900 GERMANY
PETER T. SPECK/ EKBL/ POSTFACH 102209/ HEIDELBERG D-6900/ GERMANY
D-7750 GERMANY
DmK KRONIG/ AEG-TELEFCJNXEH/ POSTFACH 2154 / BUECKLESTltASSE 1- 5/ KONSTANZ D-7750/ GERMANY/ 07531-862066
D-7910 GERMANY
TILL GEISER/ FALKENSTEINWEG 8/ NEU-ULM D-7910/ GERMANY
D-8000 GEBMANY
p. E. FISCHER./ CSID/ OETI'INGENSTR. SA/ MUNCHEN 22 D-SOO'J/ GERMANY/ 089-229131
D-8000 GERMANY
FELIX POPPLEIH/ SELDEHECKSTR. 10/ M:INCHEN 60 D-8000/ CERMANY
INDONESIA
RARSONO/ PUSAT KOMPUTER/ INSTITUT T•OOIOLOGI BANDUNG/ J-\LAN GAN ESHA. 10 / TILPON 82051-82055/ BANDUNG/ INDONESIA
ISRAEL
NAKHSHON YESlRJRUH/ COMPUTATION CENT·.;R/ BEN GURION UNIV./ p.o.B. 2053/ BEER SHEVA/ ISRAEL/ 5764453
100 JAPAN
KOICllI FUKUNAGA/ MITSUBISHI RESEAR.Cil INSTITUTE INC./ 1-6-1 OHT ENA.CHI - CHIYODA-KU/ TOKYO 100/ JAPAN/ 03-214-5531
113 JAPAN
EIITI WADA/ DIVISTnN OF ENGINEERIHC.:/ INFORMATION ENGINEERING COURSE/ UNIVERSITY O"F TOKYO/ BUNKYOKU TOKYO 113/ JAPAN/ (03) 812-2111 XJ48f:.
244 JAPAN
RYUJI TAKANUKI/ LANGUAGE Al'l'LICATION DEl'T./ SOF'l'WARE WUKKS OF HITACHl LTD./ 5030 TUTSUKA.-CHO - TOTSDM-KU/ YOKOHAMA 244/ JAPAN/ 045-HBl-7161 X2102
MEXICO
MARIO MAGIDIN/ BDHARROS 67/ MEXICO 20 D.F./ MEXICO/ 522.56.94
MEXICO
FERNANDO JAIMES/ CENTRO ELECTRONICO DB CALCULO/ ITESM/ SUCURSA L -CORREOS 'J' / MlNTERREY -H ..L. / MEXICO
NORWAY
TERJE NOODT/ INSTITUTE OF INFORMATICS/ UNIVERSITY OF OSLO/ P.Q • BOX 1080 / BLINDERN/ OSLO 3/ NORtNAY./ (02? 466800
NORWAY
ATTN: LIBRARY/ CONTROL DATA B.V./ J. C. VAN MARXENLAAN 5/ RIJS WIJK HOLLAND/ NORWAY/ 070-949344
N-1750 NORWAY
ATI'N: OSTFOLD D H. LIBRARY/ OSTFOLD DISTRIKTSROOSKOLE/ OS ALLE 5/ HALDEN N-1750/ NORWAY
N-3000 NORWAY
DAVID E· OLAVSSEN/ KONGSBERG INGENIORHOGSKOLE/ KONGSBERG N-300 0/ NORWAY
H-5000 NORWAY
OLAV NAESS/ WE.LHAVBNSGT.65/ BERGEN H-5000/ NORWAY
PANAMA
THEODORE J. HERRMAN/ BOX 1778/ BALBOA CANAL ZONE/ PANAMA
SINGAPORE
JACK PAGE/ PAGE-ASIA ASSOCIATES/ 279-M SELEGIE COMPLEX/ SINGAP D'RE-7/ SINGAPORE/ 326102
SOUTH AFRICA
COLIN MIEROWSKY/ 101 FAIRWAYS/ CORLETT DRIVE - IU..OVO/ JOHANNESBURG/ SOUTH AFRICA/ 788 2474
SOUTH AFRICA
J. Fo DE BEER/ COMPUTER SCIENCE/ POTCHEFSTROOM UNIVERSITY/ POT CHEFSTROOM/ SODTH AFRICA/ 22112
0001 SOUTH AFRICA
ATTN: PERIODICALS SECTION/ CSIR LIBRARY/ p.a. BOX 395/ PRETORI A 0001/ SOUTH AFRICA
2001 SOUTH AFRICA
ATI'ENTION: JUDY BISHOP/ APPLIED MATHS DEPT./ STAFF COMl«JN ROOM I UNIV. OF THE WITWATERSRAND/ JOHANNESBURG 2001/ SOUTH AFRICA/ (01) 394011 X8656
2191 SOUTH AFRICA
ALASDAIR D· STOA.RT/ KENS!NGTON/ 84 NOTI'INGHAM RD./ JOHANNBSBUR G 2191/ SOUTH AFRICA/ 25 2553
6140 SOUTH AFRICA
M. HOWARD WILLIAMS/ COMPUTER SCIENCE DEPT·/ RHODES UNIVERSITY/ GRAHAMSTOWN 6lli0/ SOUTH AFRICA./ 0461-2023
7405 SOUTH AFRICA
STEVEN B. RAX.OFF/ 19 LOBELIA STREET/ MILHERTON 7405/ SOUTH AFRICA/ 521447 (CAl'E TOWN)
7700 SOUTH AFRICA
I. N. CHRISTOFFERSON/ 3 GUILDFORD ROAD / ROSEBANK/ CAPE TOWN 7 700/ SOUTH AFRICA/ 691875
7700 SOUTH AFRICA
s. R. SCHACH/ COMP. SCI. DEPT./ UNIVERSITY OF CAl'E TOWN/ RONDE BOSCH 7700/ SOUTH AFRICA/ 698531 Xl72
SPAIN
RAFAEL M· BONET/ PROVIDENCIA 137/ BARCELONA. 24/ SPAIN/ 34-3-32 57599
SPAIN
PERE BOTELLA/ CASANOVA 148/ BARCELONA 36/ SPAIN/ (93) 253.60.7 0
S-115 43 SWEDEN
KEITH ELKIN/ DIANAVAGEN 30/ STOCKHOLM S-115 43/ SWEDEN
S-145 71 SWEDEN
MICHAEL EVANS/ BALDERS VAG 3 6TR/ NORSBORG S-145 71/ SWEDEN
S-145 71 SWEDEN
SVANTE HELLSING/ TORS VAG 8 - 6 TR/ NORSBORG S-145 71/ SWEDEN/ 0753-82033
S-721 83 SWEDEN
EGON JOHANSSON/ DEl'T. 'IDTS/ ASBA/ VASTERAS S-721 83/ SWEDEN/ 0 21-102988
S-751 21 SWEDEN
HANS FLACK/ DEPT. COMP. TECHNOLOGY/ TEKHIKUM/ BOX 534/ DPPSALA S-751 21/ SWEDEN/ 018 10 04 70
S-901 87 SWEDEN
PER-AXE WEDIN/ INSTITUTE OF INFORMATION PROCESSING/ UNIV. OF UMEA/ UMEA S-901 87/ SWEDEN/ 090-125600
S-902 36 SWEDEN
GORAN LINDAHL/ MARIEREMSV. 17A/206/ UMEA S-902 36/ SWEDEN/ 090 -137803
CR-2000 SWITZERLAND
NORBERT EBEL/ CENTRE DE CAI.CUL/ UNIVERSITE/ CHATEMERLE 20/ NEUCHATEL CH-2000/ SWITZERLAND/ 038 25 64 34
CH-8021 SWITZERLAND
ATTN: HONEYWELL BULL s.A./ MINI O'EJ:l/ JAKOB PUGLISTR. 18 I p.a. B/ 2URICH CH-8021/ SWI'l'ZERLAND/ 01-474400/ 01-2416760
THE NETHERLANDS ATI'ENTION: C. v. D. WIJGAART/ TECHNISCH CENTRUM FSW/ UNIV. OF AMSTERDAM/ ROETERSS'IRAAT 15/ AMSTERDAM/ THE NETHERLANDS
THE NETHERLANDS DAVID A.. COOPER/ C/O CACI/ KEIZERS GRACHT 534/ AMSTERDAM/ THE NETHERLANDS
THE NETHERLANDS ATTN: BIBLIOTHEEK. 05627/ TECRNISCHE HOGESCHOOL/ POSTBUS 513/ E INDHOVEN/ THE NETHERLANDS
THE NETHERLANDS NIGEL W. BENNEE/ OOSTEINDE 223/ VOORBURG ZR/ THE NETHERLANDS
THE NETHERLANDS D. R. GIBBY/ KROMWATER 60/ ZOBTBRMEER/ THE NETHERLANDS
1018 RB THE NETHERLANDS p. VAN EMDE BOAS/ I'l'W/VPW/ UNIVERSITEIT VAN AMSTERDAM/ ROETERS STRAAT 15/ .AMSTERDAM 1018 WB/ THE NETHERLANDS/ 020-522 3065
2501 BD THE NETHERLANDS P. A. SLATS/ INFORMATION PROCESSING AND STATISTICS/ INST. TNO FOR MATHEMATICS/ p.a. BOX 297/ THE HAGUE 2501 BD/ THE NETHERLANDS
9321 GN THE NETHERLANDS T. J. VAN WEERT/ ELZENLAAN 28/ PEIZE 9321 GN/ THE NETHERLANDS
PL4 SAA UNITED KINDOM
PATRICIA HEATH/ COMPUTER CENTRE/ PLYMOUTH POLYTECHNIC/ DRAKE C lRCUS/ PLYMOUTH ENGLAND PL4 BAA/ UNITED KINDOM
UNITED KINGDOM J. M. !CCAIG/ SCHOOL OF MATHEMATICS/ K!NGSTON POLYTECHNIC/ PENRHYN RD./ K!NGSTON-UPON* SURREY/ UNlTED KCNGDOK
UNITED KINGDOM JOHN ROSCOE/ sYSTEMS ENGINEERING/ llTH FLOOR 7/BLOCK/ I. C. L. / WNLOCK WAY / WES'l'GORTON/ MANCHESTER ENGLAND/ UNITED KINGDOM/ 061 223 1301 X2589
UNITED KINGDOM RICHARD CLAYTON/ lOA STATION ROAD / MERSTBAM/ REDHILL SURREY/ UNITED KINGDOM
UNITED KINGDOM c. T~ BRITI'ON/ 63 GIBBS COUCH / CARPENTERS PARK/ WATFORD HER.TS/ UNITED KINGDOM
AL3 4RZ UNITED KINGDOM WILL PICKLES/ 166 :FISRPOOL ST./ ST. ALBANS HERTS. AL3 4RZ/ UNI TED KINGDOM
BN3 lRA UNITED KINGDOM BRIAN WILLIAMS/ 67 DAVIGDOR ROAD/ HOVE SUSSEX BN3 lRA/ UNITED KINGDOM/ 0273-778389
C04 3SQ UNITED KINGDOM I. R. MAC CALLUM/ DEPT· OF COMPUTER SCIENCE/ UNIV. OF ESSEX/ P .o. BOX 23 / WIVENHOE PARK/ COLCHESTER ENGLAND C04 3SQ/ UHITED KINGDOM/ (0206) 44144

C04 JSQ UNITED KINGDOM
CV21
DD2
EHl
EX4
Ell
GL52
HA9
HU6
IP5
KTlO
KT22
LE!
LL57
M13
M13
M32
K60
M60

2QE
lSJ
lGZ
4QL
lQL
5AJ
OBE
7LJ
7RE
9EZ
9HF
9BH
!UT
9PL
9PL
9BH
lQD
lQD

UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNITED
UNI'IED
UNITED
UNITED
UNITED
UNITED

KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM
KINGDOM

IAN H. WITTEN/ EES DEPT./ UNIV. OF ESSEX/ WIVENHOE PAE/./ COLCHESTER ENGLAND C04 3SQ/ UNITED KINGDOM/ 0206 44144 X2285
C. J. THODAY/ lA BANK ST./ RUGBY WARWICKS CV21 2QE/ UNITED KINGDOM
S. AMBLER/ 12 KELSO STREET/ DUNDEE SCOTLAND DD2 lSJ/ UNITED KINGDOM
D. s. H. ROSENTHAL/ DEPT. OF ARCHITECTURE/ UNIV. OF EDINBURGH/ 22 CHAMBERS ST./ EDINBURGH SCOTLAND EH! lGZ/ UNITED KINGDOM
D. R. ALLUM/ DEPT. OF PHYSICS/ UNIVERSITY OF EXETER/ EXETER RO AD/ EXETER. ENGLAND EX4 4QL/ UNITED KINGDOM
JOHN HUTCHINSON/ 13 D SYLVAN ROAD / WANSTEAD/ LONDON ENGLAND E 11 lQL/ UNITED KINGDOM/ 01-980-4811 X778
M. J. L. YATES/ F/0603 X66HQ/ GOVERNMENT COmwNICATIONS HQ/ OAKLEY PRIORS ROAD/ CHELTENHAM ENGLAND GL52 5AJ/ UNITED KINGDOM/ 0242 21491 X2192
A. R· M. WAJIH/ GENERAL ENGINEERING DEPT/ PULLMAN KELLOGG LTD/ STADIUM WAY/ WEMBLEY ENGLAND HA.9 DEE/ UNITED KINGDOM/ 01-903 8484 X3481
D. A. JOSLIN/ COMPUTER SERVICES/ HULL COLLEGE OF HIGHER EDUCATION/ INGLEMIRE AVE/ HULL ENGLAND HU6 7LJ/ UNITED KINGDOM/ (0482) 42157
ROR:.RT KIRKBY/ 77 FLOOR 2· - RB.1.1/ RBS D MARTLESHAM HEATH/ IPSWICH ENGLAND IP5 7RE/ UNITFD KINGDOM( IPSWICH 642 082
ATI'i: PULSE TRAIN TECHNOLOGY LTD./ 15 LAKESIDE DR./ ESKER SURREY KT!O 9EZ/ UNITED KINGDOM
p. L. "WAL'il'f.N/ LITI'LE GABLES/ J!.ELLLANE / FETCHAH/ SURREY ENGLAND KT22 9NF/ UNITED KINGDOM
B. E. BARKER/ COMP. CENTRE/ LEICESTER. POLYTECHNIC/ l'oO. BOX 14 3/ LEICESTER ENGLAND LEl 9BH/ UNITED KINGDOM
DAYFDD ROBERTS/ COMPUTING LABORATORY/ u.c.N."W./ BANGOR/ GWYNEDD WALES LL57 !UT/ UNITED KINGDOM
M. A. PELL/ DEPT· OF COMMUNITY MEDICINE/ UNIV. OF MANCHESTER/ OXFORD ROAD/ MANCHESTER ENGLAND Ml3 9PL/ UNITED KINGDOM/ 061-273 8241 XO / X58
IA1.. ROBERT VILSOH/ DEPT. OF COMPUTER set./ UNIVERSITY OF MANCHESTER/ OXFORD ROAD/ MANCHESTER ENGLAND Kl3 9PL/ UNITED KINGDOM/ 061-273-7121
DAVID J. SKYRME/ ARNDALE HOUSE/ DIGITAL EQUIPMENT CO. LTD./ CHESTER ROAD/ Wi.NCHESTBR ENGLAND M32 9BH/ UNITED KINGDOM/ C-61-865-8676
GERALD c. KEIL/ DEPT. OF EUROPEAN STUDIES/ UMIST/ P.O. BOX 88/ MANCHESTER ENGI#fl> M60 lQD/ UNITED Kll!GDOM/ 061-236 3311 X2261
D. J. LEGGE/ DEPT. OF PHYSICS/ u.M.I.S.T./ p.a. l!OY RR/ MANCHESTER ENGLAND M60 lQ!U._UNITED KINGDOM

P AS C AL NE WS # 1 3
NW6
OXl
RG6
SEl

6DL UNITED
201 UNITED
2LH UNITED
DTE.UNITED

DE CE MB E R, 1 9 7 8

PAGE 27

KINGDOM STEPHEN G. S. PROUT/ 2 KESLAKE ROAD/ LONDON ENGLAND HW6 6DL/ U NITED KINGDOM/ 01 960 4270
KINGDOM J. N. PAINE/ ST. PETER'S COLLEGE/ OXFORD UNIV./ OXFORD ENGLAND' OX! 2DL/ UNITED KINGDOM/ OXFORD 48436
KINGDOM ROGER p. WRIGHT/ 16 RAGGLESWOOD CLOSE/ EABI.EY/ READING BERKS. RG6 2LH/ UNITED KINGDOM/ READING 663178
KINGDmr-F; "BOEIJY/ HlGmaY-:e.RmC\:QHP"U'!ErBRANCH/ ROOM 3/o;,-:. sT:-CITu.I.~fi:- 0 PHER HOUSE/ DEPT OF TRANSPORT/ SOUTHYARK. STREET/ LONDON ENGLAND SEI DTE/ UNITED KINGDOI

SG! 2DY UNITED KINGDOM

JOE B.

MONTGO~Ri~ 8 r~i~ 9 ~~~!SH RD/

STEVENAGE HERTS SGl 2DY/

UNITED KINGDOM/ 0438 3361

~g~ ~=: g:i~: ~i:ggg: ~xi·J~o~~~''n~~~~~T~~-f~=~s'~~r:~~D~:: ~~~ ~s~~,u:~~~~Ns~:=r~gg~=~~~~:ns~'G:~TED

ST16 2AJ
ST7 lTL
SW7 2BY
SIH 2BZ
SlO 2TH
TIU! OLW
WClN 3D4
YU-61000

UNITED KINGDOM
UNrrED KINGDOM
UNITED KINGDOM
UNITED KINGDOM
UNITED KINGDOM
UNITED KINGDOM
UNITED KINGDOM
YUGOSLAVIA

KINGDOM/ 0703-559122 X2387

s .. STRUDWICK/ R.lJ. HOURD & SON LTD/ 7-8 MILL ST./ STAFFORD ENG LAND ST16 2A.J/ UNITED KINGDOM/ 0785-44221
D. K. MESSHAM/ I.c.L./ WEST AVENUE I KIDSGROVE/ STOKE-ON-TRfmT STAFFS ST7 lTL/ UNITED KINGDOM/ (0782) 29681
P. DAVID ROSE/ DEPT. OF CHEMICAL ENGINEERING/ IMPERIAL i:OLLEGE / PRDiCE CONSORT ROAD/ LONDON ENGLAND SW7 2BY/ UNITED KINGDOM
PETER w. TBROSBY/ DEPT. OF COMPUTING & CONTROL/ IMPERIAL COLLE GE/ QUEENSGATE/ LONDON ENGLAND SW7 2BZ/ UNITED KINGDOM/ 01-589 5111 X2742
L. v. ATKINSON/ DEPT OF APPLIED MATH AND COMP SCIENCE/ UNIV. 0 P SHEFFIELD/ SHEFFIELD ENGLAND SlO 2TN/ UNITED KINGDOM
I. GOODE/ NATIONAL PHYSICAL LABORATORY/ DHACS/ TEDDINGTON MIDDLESEX '!Wll OLW/ UNITED KINGDOM/ 01-977 3222
ATTN; COMPUTER ANALYSTS & PROGRAMMERS/ 14-15 GREAT JAMES STREB T/ LONDON ENGLAND WClN 3D4/ UNITED KINGDOM/ 01-242-0021
ATrN: FNT - ODDELEK ZA KEMIJO/ KNJIZNICA/ MURNIKDVA 6/ LJUBLJANA YU-61000/ YUGOSLAVIA
.

08033
ANH s. ADAMS
91301
HARRY S. ADAMS
47907
KENNETH LEROY ADAMS
43229
RICHARD E. ADAMS
55414
Klll ADELMAN
07932
KAllL p. ADEY
90278
JAMES L. AGIN
92805
ARVIND AGRAWAL
19380
THOMAS J • .AHLBORN
95014
JOHN AHLSTROM
D-600Q GERMANY
PETER C. AKWAI
44106
JACK D. ALANEN
30342
K.. M· ALBRIGHT
ROSS ALEXANDER POJ !KO CANADA
90260
ROBERT ALKIRE
66102
DAVID M. ALLAN
94402
ROSS ALLARDYCE
01810
BRUCE ALLEN
D. R. ALLUM EX4 4QL UNITED KINGDOM
14580
RICHARD ALRUTZ
94086
RICH AL'lMAIER
60626
FRANK ALVIANI
95125
ALLEN L. AMBLER
s. AMBLER DD2 lSJ UNrrED KINGDOM
08816
CHA.RI.ES ANDERSON
85061
FRANK ANDERSON
98043
GARY S • ANDERSON
97330
OLE ANDERSON
80306
RICHARD L • ANDERSON
55455
RON ANDERSON
94133
WILLIAM F. ANDERSON
DEREK F. ANDREW S7H 1B5 CANADA
94086
DENNIS S. ANDREWS
80301
DAVID ANDRUS
92121
F. ANTONIO
98115
PETER A. ARMSTRONG
55337
BOB ARNOLD
95927
GEORGE N. ARNOVICK
14850
CHA.RI.ES N. ARROWSMITH
63166
PETER R· ATHERTON
L· y. ATKINSON SlO 2TN UNITED KINGDOM
77001
NUON: COLIN G. CAMPBELL
THE NETHERLANDS
NTION; C· V. D. WIJGAART
TIENTION: DIANNE CAMERON M3C 1Z3 CANADA
80639
A'ITENTION,1 D• L. MYERS
T:>Z3h
ATTENTIOtn lfd.EO HEVEN5Jra
2001 SOUTH AFRICA
ATrENTIOH: JUDY BISHOP
90045
ATTENTION: LAllRY LEWIS
93111
ATTENTION: NANCY BROOKS
32204
ATrENTION: ROY W. FILEGER
01945
ATTENTION: WILLIAM MAIN
50011
ATTN: ADP CENTER
87117
TN: AIR FORCE WEAPONS LA!ORATORY
90801
ATTN! AMERICAN COMPUTER SFllVICES
THE NETHERLANDS
ATTN: BIBLIOTHEEK 05627
BELGIUM
A'ITN: BIBLIOTHEQUE CENTRAL£
78363
ATTN: COMPUTATION CENTER
COMPUTER ANALYSTS & PROGRAMMERS WClH 3D4 UNITED KINGDOM
ATrN: DB/DC SOF'lWARE ASSOC.
03103
Am:. DEPT. QF COMP. set.
3168 AUSTRALIA
P7B
5El CANADA
ATrN: DEPT. OF MATHEMATICA!. sci.
50307
ATTN: D. M· 1'KJFFETT
AT!N: FNT - ODDELEK ZA KEMIJO YU-61000 YUGOSLAVIA
ATI'lO HONEYWELL BULL S.A. CR-8021 SWITZERLAND
ATrN: INFORMATION CENTER
01742
68588
ATTN: INFORMATION/RESOURCE CENTER
22030
ATTN: J. M. P• ASSOCIATES
02142
ATTN: KINDLER ASSOCIATES INC.
90404
ATTN! LARRY MARKWORTH - LIBRARIAN
NORWAY
ATTN: LIBRARY
10530
A'!TN; LJS COMPUTER SERVICES
97201
TN: OREGON MINI-COMPUTER SOFTWARE INC*
N-1750 NORWAY
ATTN: OSTFOLD D H. LIBRARY
0001 SOUTH AFRICA
ATTN: PERIODICALS SECTION
ATJ:N: PROGRAM LIBRARIAN
5001 AUSTRALIA
ATTN: PROGRAM LIBRARY N6A 5B7 CANADA
ATTN: PULSE TRAIN TECHNOLOGY LTD. KTlO 9EZ UNITED KINGDOM
46202
ATTN: REGENSTRIEF INSTITUTE
95014
ATTN: RUTH SUGARMAN
09175
ATTN: SAM CALVIN
49008
A'ITN: SERIAL RECORDS
94305
ATTN: SERIAL RECORDS DIV•
01821
ATTN: TECHNICAL LI:BRARY
53202
ATrH: TECHNICAL LIBRARY 4 7-687
95128
ATTN! TDIBSHARING BUSINESS SYSTEMS
98195
ATrN: UNIV· OF WASHINGTON
20852
ATTN:INFORMATICS INC. BOOKSTORE
44512
AT!N:WEST.ERN RESERVE COMM!JHICATIONS
H••T. AU A.lC 5M3 CANADA
CHUCK AUGUSTINE
15213
22101
DAVID AULT
LEE D. AURICH
91711
94941
AYERS LOCKSMITHING
DAVE BAASCH
97210
GOS BACOYAHIS
90403
94941
ROBERT M. BAER
DONALD R· BAIN M9A 3V3 CANADA
77001
S. BALASUBRAMANIAN
68182
LYNNE J. BALDWIN
03055
L· DAVID BALDWIN
92152
MICHAEL S, !ALL
FRED BALLANTINE
98161
RICHARD BALOCCA
61801
75116
STANLEY E. BAMMEL
DEAN BANDES
01741
B. £. BARKER LEl 9BH UNITED KINGDOM
GORDON BARKER N6A 5B7 CANADA
95926
DAN +ROBIN :BARNES

JAMES G. BARON
ART BARRETT
BRUCE A· BARRET!'
RANDY BARTH
S. J, BATTORY JR.
EIMER T. BEACHLEY
FRANCIS B· BEARDEN
CHARLES R· BEAUREGARD
JAMES E. BECKLEY
RICHARD BEELER
c. y. :BEGANDY
LOUIS N. 13ELEOS
FRED BELLOMY
LEE A. BENBROOKS
NIGEL W. BENNEE
BARBARA BERGER
SERGIO BERNSTEIN
ROBERT W. BERRY
SCOTT S. BERTILSON
JAMES L. BEUG
KASI SF.sHADRI BHASKAR
DAVE BIANCHI
ROB BIDDLECOHB
JEFFREY H· l!IGGERS
.DRAN BILLING
LARRY »ILODEAU
JOHN' BLACKWOOD
BRAD BLASING
LYNN BLICKENSTAFF
PETER BLONIARZ
p. VAN EMDE BOAS
HAROLD L· BOERI.IN II
F. BO EDF
J. :BOGAR
LARRY D. BOLES
RAFAEL M. BONET
TDI'. BONHAM
WILLIAM R. BONHAM
GARY J. BOOS
JOHN BORGELT
RONALD V. BOSSLET
PERE BOTELLA
SPEC BOWERS
KEN BOWLES
GORDON C. BOWRON
CHRIS BOYLAN
ROBERT BOYLAN
ALEX BRADLEY
PAUL BRAINERD
JOE B. BRAHE JR.
DAVID E. BREEDING
H. DICK BREIDENBACH
BILL BRENNAN
FRANK BREWSTER
WILLIAM A. BRIGGS
WILLIAM D. BRISCOE
c. T. BRITrON
CHARLES L· BROOKS
BRUCE A. BROWN
MICHAEL D· BROWN
RICHARD T. BROWN
CHARLES H. BROWNING
c. H. BROWNIHG
JERRY F. BRUMBLE
HERBERT M. BRYANT JR.
S • R. BUCHANAN
ANNA BUCKLEY
JOHN BUCZEK
DAVID M. BULMAN
'WILHELM BURGER
THOMAS K. BURGESS
DONALD .D• BURN
JOHN W• BURNETI
ROGER F • BURROWS
VINCENT BDSAM
R. BUSH
RICHAlU> A. BYERS
DAVID CALCATELLI
J. D. CALLAHAN
Mo DIANNE CAMERON
GEORGE p. CAMPBELL
STEVEN CAMPBELL
MAL CAREY

98105
22312
94066
20810
01247
15236
45241
90712
60603
92802

15069
89502
93120
90049
THE NETHERLANDS
10014
87112
87107
55455
93407
98020

55455
21203
30305
95401
97330

95660
55455
90065
12222
1018 WB THE NETHERLANDS

55435
SEl OTE UNrrBD KINGDOM
21701
37076
SPAIN

55454
89511

69341
94025

02154
SPAIN
21030
92067
LIS 3B4 CANADA
55042

W. E. CLARK
92138
JOHN C. CLARSON
23669
M. B. CLAUSING
45424
RICHARD CLAYTON
UNITED KINGDOM
JOE CLEMA
45432
DAVID G. CLEMANS
90064
DAVID C. CLINE
01581
ROBERT COLE
18017
PETER CONKLIN
01451
DANIEL F. CONWAY
95132
H. A. COOK
20903
T. J. COOK
87544
STEVEN L. COOL
01880
RICH COON
01581
DAVID A. COOPER
THE NETHERLANDS
NICK COPPING
91103
JOHN J CORCORAN 3RD. III
87107
RICHARD CORE
94088
MARCUS c. CORNELL
96224
..l'HOMAS CORRIGAN
60684
FRED COTTON
02174
JAMES C. COZZIE
52402
FRANK F, CRANDELL
92.635
JOHN EARL CRIDER
77043
E. CRITTSINGER JR.
23505
ELIZABETH CROCKER
94546
WILLIAM E. CROSBY
92704
DAVID B. CROUSE
15213
HEODORE R. CROWLEY
01720
JOHN P. CUCHES
30033
HOWARD CUNNlllGHAM
97077
NICK CVE'IKOVIC
19172
STEVE DALSIMER
90291
JAMES A. DARLING
92027
BRUCE DAVIDSON M3C !HJ CANADA
w. DAVIS
3046 AUSTRALIA
RICHARD L· DAY
19102
J. F. DE BEER
SOUTH AFRICA
DAVID J. DE PANT!
02871
iARTINE DE GERLACHE
B-1170 BELGIUM
HARD P • DE ROBER.TS
30354
JOHN DE ROSA JR.
01824
JOHN L. DEBES
14502
MICHAEL DEISEMROTH
47907
ROBERT I· DEMROW
01810

TIMOTHY DENNIS

08540
~2714

55454
84105
75234
48033
19401
16701

60010
07762
UNITED KINGDOM

02139
92805
17331
97207
10022
10022
90278

33549
53092
47401
97850
92123
78712

77302
01.75.7

95051
K2.H 5S3 CANADA
95030
97459
46205
85002
84108
M4R 1Z2 CANADA
08052
03768
04473
N2C 3EO CANADA
80401
80201
14853

T. A. CARGILL
THERON D. CARLSON
JOHN CARNAL
MARIANN CARPENTER
EDDIE CARRIE
91311
90069
TERR.ENCE M· CASELLA
53202
WAYNE CATLETr
AVERY CATLIN
22901
79601
D. A· CAUGHFIELD
DAVID F. CAUTLEY
97330
76059
STEVE CAVENDER
P. A. CELLINI N2J 4G5 CANADA
56381
MIKE CHALEHBURG
G. CHALIFOUR L7M 1K4 CANADA
72205
JOHN L. CHANEY
91359
P. & C. F. BLOMICE CHANG
64110
JOHN p. CHAPMAN
19122
BILL CHESWICK
93106
LAURIAN M. CHIRICA
02176
CARLOS CHRISTENSEN
61701
KENNETH L. CHRISTENSEN
30305
WILLIAM G. CHRISTIAN
60202
DAVID B. CHRISTIE
7700 SOUTH AFRICA
I. N. CHR!STOFFERSON
55987
GERALD Y. CICHANOWSK.I
18103
RICHARD J. CICHELLI
94305
JON F. CLAERBOUT
47272
DONALD L· CLAPP
10024
IRA A· CLARK

06035

PAUL DENNISON N6A 4Kl
EDWARD DEPPE
55404
SHAUN DEVLIN
48010
GEORGE B. DIAMOND
08826
ROBERIO DIAS
LAURA L DICKINSON
52240
MARY DIEGERT
13902
BOB DIETRICH
97077
RICHARD F • DILLON KlS 5B6
J • Y. DISSELXAMP
37660
PRFD DITTRICH
65201
WILLIAM H. DIUGIUD
27702
J. SCOTT DIXON
02138
RANDY DODGE AlC 5S7
ALLEN F. DOWNARD
33803
DORSEY DRANE
97202
KENNETH R. DRIESSEL
74102
JEFFREY J. DRUMMOND
55455
LARRY DUBY
22209
DOUGLAS DUNLOP
23185

CANADA

BRAZIL

CANADA

CANADA

BOB DUPREE
74145
DAVID DYCHE
77001
PAUL T. DYKE
22151
RICHAllD R. DYHANT
98188
JEFF EAS'l'MAN
80537
NORBERT EBEL CH-2000 SWITZERLANI
FRITZ EBERLE
01852
PETER. ECCLESINE
94043
GLENN T. EDENS
94086
BRUCE J .. EDMUNDSON
95051
p. S. EDWARDS
3130 AUSTRALIA
ARNIE F.GEL
95129
:BILL Elll.ERT
80201
JOHN D. EISENBERG
48105
"'""""' -irnrERsTEnl
VINCENT ELIAS
46312
KEITH ELKIN S-115 43 SWEDEN
DENNIS R. ELLIS
80303
MONTE ELLIS
33142
LARRY E. ELLISON
08046
ROBERT J. ELLISON
13323
AGNES H. EUl>RE
23284

=·

ROBERT EMERSON

98040

R. D. EMRICK
33601
TOM ENTERLINE
20822
GLENN ENTIS
10016
E. W. ERRICKSON
85613
R. L• ESHELMAN
80210
R. ETZI
06830
TOM EUBANK
40206
HERMAN EUREKA
08540
MICHAEL EVANS S-145 71 SWEDEN'
ROGER H. EVANS
92123
RICHARD A. EVERMAN
92717
R. NEIL P'AIMAN JR.
48228
JOSEPH R.. FALKNER
88130
SHAL PARLEY
91126
JOSEPH H. '.FASEL III
47907
'WALT FEESER
78758
MICHAEL B. FELDMAN
20052
LINWOOD FERGUSON
22923
SID FERMI
97077

P AS C A L NE WS # 1 3
JEANNE FERRANTE
ALAN B. FINGER

LLOYD

n.

FINK

JIM FINN
HERMAN FISCHER
P. E. FISCHER

12561
02154

23505
L5C 1C8 CANADA
91409
D-8000 GERMANY

GLENN FISHSINE

55404

GENE FISHER

92651

RICHARD B. FITZ

20016

ROBERT G. FlT'LGERALD
22180
HANS FLACK S-751 21 SWEDEN

JOSE M. FLOREN

DOMINICAN REP.

RAYNE FLOURNOY

77074

RUDY L. FOLDEN

92714

JIM FOLEY
FORDHAM

91364
28214

RICHARD FOULK

96786

c.

WARREN

AL FRANCIS

9460

D E C E MB E R , 1 9 7 8
JOHN B. HOLMBLAD
GEORGE Eo HOLZ
DAN HOMER
GREGORY L• HOPWOOD
DAVID HORN'.BAKER
Co L. HORNEY
TOM HORSLEY
THOMAS P. HOVEKE
JAMES ff, HOWARD
CAROL B. HOWELL
HUGO HSIUNG
GARY HUCICARAY
THOMAS W. HUEBNER
JON F. HUERAS
JAMES W. HUFFMAN
JAMES s. HUGGINS
GENE HUGHES
PHIL HUGHES
ALFRED J.. HULBERT

ALICE HUNT
LEE FRANK
STEPHEN D. FRANKLIN
ROBERT FRANKSTON -COPY A

ROBERT FRANKSTON -COPY B
RO.GER W. FRECH
KARL FRYXELL
KOICHI FUtaJNAGA
GLEN FULLMER
DAN FYLSTRA

DAVID JON FYLSTRA

t. GANAPATHY
LAWRENCE M. GARCIA
JOHN T. GARDNER

PATRICIA J • GARSON
PATRICK Do GARVEY
DALE GAUMER

EDWARD F. GEHRINGER
TILL GEISER
R. MORVEN GENTLEMAN
Po U. GEORGE

6
08002

92717
02139
02154

78753
91125
100 JAPAN

97123
02134

94305
V5A 1S6 CANADA

10580
93501
06851
90291
46808

47907
D-7910 GERMANY
NZL 3Gl CANADA

90403
THOMAS Lo GERBER
57401
DANIEL E. GERMANN
55455
D. R· GIBBY
THE NETHERLANDS
ROBERT A. GIBSON
22110
MIKE GILBERT
01752
SHELLEY GILES
97301
J. GIUIER.
94105
CHARLES o. GIMBER
92024
BRIAN GLASSER.
10003
MAURY GOLDBERG
13203
LOUISE GOLDSTEIN
11713
PHILLIP I· GOOD
49001
I. GOODE '.IWll OLW UNITED KINGDOM
EUGENE Ko GOODELL
09403
J. I. GOODSON 509 5NH UNITED KINGDOM
ROBERT GOODYIN
60510
GEORGE So GORDON JR.
02173
KEITH GORI.AND
60174
E. GOTnlALD
14450
JOHN
GOURLAY
48169
DAVID GRABEL
02173
DAVE GRAHAM
94086
JEFFREY W. GRAHAM
78873
WIT.T.IAM Oo GRAHAM
19711
THOMAs E. GRANVOLD
94086
DAVID N. GRAY
78769
JOHN
GRAY
02747
ARTIE GREEN
95050
STEVEN J. GREENFIELD
90010
RICHARD GREENLAW
43230
TllfOTHY GRIESER
02215
DONALD E. GRIMES
95014
JOHN R. GRINDON
63042
JAMES GROSSMAN
33181
JOHN GOLBENK
94596
GARY R. GUTH
60204
JOHN Go GUTHRIE
20904
HARRY p, HAIDUK
79109
JOEL M. HALPERN
55403
. DAVID Bo HAMILTON
23502
B~ MICHAEL HAMILTON
20052
RICHARD W. HAMILTON
94702
TERRY HAMM
97077
MIKE HAMMAN
49464
NICK HAMMOND
2600 AUSTRALIA
J, W. HANCOCK ClA 4P3 CANADA
ALAIN J. HANOVER
01887
BRIAN HANSON
55110
DAVID R. HANSON
85721
MARC HANSON
90254
PETER Jo HARRINGTON
11552
MARGERY HARRIS
02173
MIKE HARRIS
62702
HARSONO
INDONESIA
JAMEl:i P. HART
02195
ORVAL F. HART JR
87544
RONALD HARTUNG
22401
JOHN P. HARVELL
75081
STEPHEN HATCH
01730
LARRY HAWLEY
91103
W. F. HAYGOOD
84121
ANTHONY R. HEALY
11530
PATRICIA HEATH PL4 SAA UNITED KINDOK
WILLIAM REILAND
55402
JESSE HEINES
01505
DICK REISEN
90401
SVANTE HELLSING S-145 71 SWEDEN
PAUL HELVIG
56301
JOHN M HEMPHILL
76019
CARROLL HENNICK
91320
CHRISTOPHER J. HENRICH
07724
RICHARD HERBERT
95610
JAMES T. HERINGER
91105
CLINTON HERLEY
45244
THEODORE Jo HERRMAN
PANAMA
H. F. HESSION
22101
LOREN L· HEON
49006
06497
BRUCE HIBBARD
50158
DAVID HICKOK
THOMAS c. HICKS
54601
HILL
45342
JOSEPH N. HILTON
72701
94709
MAX HINCHMAN
THOM HOARD
55414
PHILIP To HODGE
46322
:SOB HOFKIN
92093
DAVID HOLLAND
77079
STEPHEN HOLLATZ
60559
RALPH G. HOLLINGSWORTH JR.
43762

s.

w.

0

n. a.

-----·-1-~
~__:

__

·_,_,;.

_-_····_:_

2000!1

07060
83720

92714
80203
92803
95376
60618
49931
20770
60025

73501
53201
01945
95014
77081
78231
98507

mis

w.

N. KERMAN
HENRY Do KERR I I I
MARK c. KERSTE'lTER
GURUPREM SINGH KHALSA
DENNIS F. KIBLER
Tn£ KIEFFER
JOHN H. KILFOIL
DANIEL Ro KILLORAN
ROBERT J. KING
ROBERT KIRKBY
.JAMES KLAJA
HENRIETI'E KLAWANS
HEINZ KLEENE
BARCLAY R. KNERR,
D. L. KNITTEL
JULIANA M. KNOX
EDWARD W. KNUDSEN
MIKE KNUDSON

14627

TIM LOWERY

92627
06Ql2
92110
99352
48103
94114
84116

JOHN LOWRY
Ro C. LUCKEY
WILLIAM LUITJE
RICHARD c. LUND
RICHARD G. LYMAN

GILL LYTTON
I. Ro MAC CALLUM
LYNN MACEY
BRUCE MACKENZIE
PETER H· MACKIE
BARRIE Do MACLEOD
IAN MACMILLAN
Jlll Ml\DDEN
DAVID c. MADSEN
MARIO MAGIDIN
JAMES P.. MAGNELL
RICHARD L. MAHN
DARYL E. MALENA.
RAJ MALHOTRA

1CAMRAN MALIK
T. M. MALIN
WESLEY E. MANGUS
J, Fo p. MARCHAND
THOMAS A. MARCINIAK
RICK L. MARCUS
CHRIS D. MARLIN
GAYE MARR
BILL MARSHALL
DOUG MARSHALL
HOWARD S. MARSHALL JR.
JON MARSHALL
BERND MARTENS
M· MARVINNEY
GEORGE MASSAR SR
FRED A. MASTERSON
ROBERT J. MATHIAS JR
TOM MATHIEU
B. MATTHEWS
WERNER G. MATTSON
J, M. MCCAIG
JOHN W. MCCAIN
JOHN C. MCCALLUM
JOHN K. !CCANDLISS
DONALD H. !CCLELLAND
JIM MCCORD
JOEL MCCORMACK
PAUL L. MCCULLOUGH
DAVID Po MCDONNELL
HENRY MCGILTON
JOHN P. MCGINITIE
JAMES A. MCGLINCHEY
MICHAEL Ro MCGUIRE

s.

L. MCHARD.Y

21043
11714
30067
49008
91101
92627
02115
95126
02139
15221
IP5 7RE UNITED KINGDOM
60657
60613
D-3000 GERMANY
92646
92121
95051
21204
01752

DENNIS KODIMER
85260
RICHARD A. KOEBBING
77024
HARRIS M. KOEHN
60514'
KARL KOEHNE
D-5000 GERMANY
KURT KOHLER
97330
DENIS KOMINSKY
01701
ALAN A. KORTBSOJA
48103
RICHARD lCRASIN
01886
G. M. KREMBS
12401
STUART J • KRETCH
65201
DIRK KRONIG
D-7750 GERMANY
H. M. KUHLMANN
98115
DARRYL KUHNS
89503
MARVIN Eo KURTII
35801
RICHARD Jo KWAN
90406
ARTHUR LACROIX LA CROIX
06460
JOSEPH LACHMAN
60077
RICHARD Mo LADDEN
95035
DAN M· LALIBERTE
55812
MARY K. LANDAVER
92110
LARRY D. LANDIS
64108
H. LASHLEE
91030
LUC LAVOIE HC3 3J7 CANADA
THa!AS W. LAWHORN
80917
GARY E. LAWRENCE
94501
ED LEARY
10001
WILLIAM G. LEDERER
48103
VICTOR LEDIN
94127
PRANCIS Po LEE
02139
R. GARY LEE
46805
TOM LEE
49684
D. J. LEGGE M60 lQD UNITED KINGDOM
TOM LF.GRAZIE
43778
CLARENCE LEHMAN
55364
HEIKKI LEHTINEN SF-02730 FINLAND
RAYMOND M. LEONG
95051
PRANK LEPERA
11973
ALAN Mo LESGOLD
15260
MICHAEL H· LESKIN
10021
HOWARD LEVERENZ
77023
CHARLES T. LEWIS
18016
DANIEL LEY
11432
FELIX S. Ho LI
77055
PING K. LIAO
94545
BOB LIDRAL
19020

KARL LIEBERHBRR

JAMES R. LOW
HOUS~LOWRY

92521

DAVID HUSHIAN
73106
STEPHEN G. HUSSAR
15222
JOHN HUTCHINSON Ell lQL UNITED KINGDOM
LYNN c. HUTCHINSON
44092
.ELIZABETH IBARRA
-ALAN J. I LIFE
30021
CRAIG M· INGLIS
ARON K. INSINGA
01752
AVRUM ITZKOWITZ
61820
KENNETH K. IWASHIKA
90815
GEORGE T· JACOBI
53201
HORMAN Jo JAFFE V6K 2Cl CANADA
FERNANDO JAIMES
MEXICO
DEAN JAMES
33068
SCOTT JAMESON
95014
ROBERT L. JARDINE
92691
GEORGE D. JELATIS
55417
HAROLD D. JENKINS JR.
22151
JOHN JENKINSON
75006
GREGORY JENNINGS
53207
JEFFREY C. JENNINGS
59801
AUTHOR R. JETER
85028
EGON JOHANSSON S-721 83 SWEDEN
JAN-HENRIK JOHANSSON SF-00510 FINLAND
GERALD C. JOHNS
63110
CLARA L· JOHNSON
33528
JUSTINA JOHNSON
10570
MARK R· JOHNSON T6G 2C2 CANADA
SUE JOHNSON
87545
DAN B. JOHNSTON
4067 AUSTRALIA
RICHARD A. JOktEL
19518
DAVID TERRY JONES
94086
D. A. JOSLIN HU6 7LJ UNITED KINGDOM
JOSEPH M· JOYCE
64110
MARK JUNGWIRTH
93010
SAMUEL c. KAHN
19898
ALAN H. KANISS
19111
FRED KATZMAN
80203
HUGH M. KAWABATA
93106
MATTHEW KAZLAVSKAS
12345
JOE KEEFE
95014
GENE KEENOY
07083
GERALD C. KEIL M60 lQD UNITED KINGDOM
BOB KELLER
19317
A. KELLEY
90274
GINGER KELLY
77001

WALLACE KENDALL

P A GE 2 8
JACK LIEBSCKUTZ
60614
THOMAS L. LIGHT
80027
TERRY LIITTSCHWAGER
97402
JOHN E. LIND
55414
GORAN LINDAHL S-902 36 SWEDEN
STEPHEN LOCKE
53511
MYRON C. LONG
90732
JOHN DE LONGPRE
49503
KENT LOOBEY
97401
TOM LOVE
20850
11.. A. LOVESTEDT
98055

8713[

J, Wo MCINTOSH
JOHN MCMANUS JR.
KENNETH M. MCMILLIN

P • D, MCMORRAN
DAVID MCQUEEN
RODNEY MEBANE
MEIER
PAUL HEU.AND
BERT MENDELSON
R. Lo MERCER
D. K. MESSHAM
WILLIAM R. METZ
BOB METZGER
KURT METZGER
DAVID MEYER
JOSEPH A. MEZZAROBA
COLIN MIEROWSKY
A. MILLER
DAVID MILLER
DEAN MILLER
JOHN MILLER
MARTIN MILLER
PAUL MILLER
VICTOR 5 • HILLER
JUDITH HINAMIJI
JAMES F.. MINER
DENNIS MISENER
EDWARD Eo L. MITCHELL
KEITH MITCHELL
W. MITCHELL
ROBERT H. MIX JR.
JESSE D. MIXON

.JilJ.J.IAM

c.

90066
C04 3SQ UNITED KINGDOM
67460

01751·
97005
H9P 1J3 CANADA
HJN 2T6 CANADA
92093

60658
MEXICO
03755
43147
68154
92041
97331
84109
48098
48824
2085J.
55455
5001
01867
03060
M2J 2W6
33065
97077
D-1000
44106
91367
19711
48043
99352
L5N 1W2
91020

CANADA

GERMANY

CANADA
UNITED KINGDOM

63367
M3J 1P3 CANADA
63188
90802
93017
92008
97077
76107
95051
94304
19044
98178

N6A 5B9 CANADA
55901
510230
49931
KOJ !PO CANADA
35803

19047
07009
44106
01060

90045
ST7 !TL UNITED KINGDOM
45201
48640
48105

97401
08854
V6T 1W5
94042
94025
99163
H3S 2L7
94109
10598
90249
55455
B3L 4L5
01742
98008
K2K 1X4
95610

SOUTH AFRICA
CANADA

CANADA

CANADA

CANADA

75961

D. A. IDIR R3H OR9
ROLF MOLICH DK-2730
MORRIS MOLIVER
11566
JOHN MONTAGUE
87545
EUGENE P. HJN'l'GOMERY
91342
JOE B. !IJNTGOMERY SGl 2DY
G. D. MJNTILLON
45215
A. D. !IJORE
66030
JAMES L. IDRAN
10005
CHARLES ROBERT MORGAN
02138
CLEMENT MORITZ
75088
R. A. MORRIS
02125
HERBERT E. OORRISON
90266
DAN MORTON
19117
DON MOXON
95014
CHARLES F. MURPHY
94618
JOHN MURRAY
95129
TERRY MYHRER
55066
OLAV NAESS
N-5000
BOBBY ans NASH
63105
RICHARD J. NAST
32670
JOHN NAUMAN
55414
PETER A. NAYLOR
19422
DAVID NEAL
07724
THOMAS Mo NEAL
92634
PETER NEEDHAM V6X 2L4
R. CARLYLE NEELY JR.
20022
GREGORY L. NELSON
94040
JOHN E. NEWTON
78148
ROBERT C. NICKERSON
94611
RANDY NIELSEN
94702

STUART C, NIMS

AUSTRALIA

90266

CANADA
DENMARK

UNITED KINGDOM

NORWAY

CANADA

P AS C AL NE WSSS # 1 3
JOHN NOLAN

TERJE NOODT
KATIE NOONING

x.

HARBARA
NUlt·ru
BARTON F. NORTON
FRANK NUSSBAUM
DAVE HU'XTING

WILLIAM J. RYBACK
DAVID F. OHL
CHRISTOPHER OHLAND
DAVID E, OlAVSSEN
A· OLDENBURG

ERIC OLSEN
RON OLSEN
JlDBEB.'I: OSBORN.
RO.HALD OTTO

JORGEN OXENBOLL
GREGORY J. O'BRIEN
JAMES

w.

207

NORWAY
78664
13760
21045
60626
60005

60606
95014
94105
H-3000 NORWAY
53218

92714
80234
02.11.B
22310

DK-2100 DENMARK
02181

O"CONNOR

07632

MIKE O"DELL

73070
12202
95650
08101
62901

G. O'SCHENECTADY
CLINTON PACE

R. X· PAETZOLD
F. G. PAGAN
JACK PAGE
J. ff. PAINE
lJ. O. PAINE
L. PAINTER
RICHARD PALCHIK
JEFF PALMER

SINGAPORE
OXl ZDL UNITED KINGDOM
91103
84737
95014
64118
19145

PAUL J. PANTANO
To Lo (FRANK) PAPPAS

19083

TED C. PARK

92408

DENNIS PAULL

94022
92630
10533
75042
92713

THOMAS J. PAULSON
FRANK PAVLIK
ERIC PEABODY
DONALD D. PECKHAM
FLEMMING PEDERSEN

M· A. PELL

DK-2770 DENMARK

Ml 3 9PL UNITED KINGDOM

RUSSELL J. PEPE
07207
BAL PERKINS
14853
WALT PERKO
55102
ROBERT C. PERLE
08753
JODY PAUL PERONI
02154
ANDREW L. PERRIE
54901
DAVID L. PETER.SON
56301
96822
W. WESLEY PETERSON
CHRISTOPHER A. PHILLIPS
4 8093
PAUL PICKELMANH
48109
DAVID PICKENS
80302
YILL PICKLES AL3 4RZ UNITED KINGDOM
STEPHEN PIKE
60419
NORMAN
PLYTER
14420
FELIX POPPLEIN
D-8000 GERMANY
ANN PORCH
94137
JOHN G. POSA
10020
DAVID R· POSH
48184
WALTER L. PRAGNELL
02149
DARRELL PREBLE
30303
KENNETH A. PRESCOTT JR.
92714
CHARLES R. PRICE
80301
RICHARD E. PRICE
60630
WlLLIAMc-:·PRiCE
97068
WILSON T. PRICE
94619
STEPHEN G. s. PROUT NW6 6DL UNITED KINGDOM
JOHN L. PRUH
90630
EP.IC PUGH
90024
CHARLES J. PURCELL
55113
JAMES L. PYLES
02181
STEVE QDALLINE
13210
RAYMOND QUIRING
90019
BILL RAEUBER
29210
M. RAHILLY
3072 AUSTRALIA
STEVEN R. RAKITIN
J7462
STEVEN B. RAKOFF
7405 SOUTH AFRICA
JOHN F. RATTI
19128
68131
LINDA LEA RAY
EDWARD K. REAM
53705
DAN REED
72554
HIKE J, REES S09 5NH UNITED KINGDOM
PHYLLIS A. REILLY
90277
STEVEN A. REISMAN
55455
PETER RENNICK
10023
KEH RENWORTH
94086
EDRICE REYNOLDS
98407
ROBERT J. REYNOLDS
92138
D· LLOYD RICE
90406
PETER RICHE'ITA
16057
DAN RICHMOND
92103
GEORGE H· RICHMOND
80027
LORIN RICKER
97225
CHARLES RIDER
91326
ROBERT W. RIEMANN
98112
CARROLL B. ROBBINS JR.
28704
DAYFDD ROBERTS LL57 !UT UNITED KINGDOM
JOE C, ROBERTS
75042
TERRY Ro ROBERTS
80202
PARLEY Po ROBINSON
84602
PEGGY ROBLYEN
32304
BOB ROGERS
20855
GORDON
ROMNEY
84010
JOHN ROSCOE
UNITED KINGDOM
P. DAVID ROSE SW7 2BY UNITED KINGDOM
SAUL ROSEN
47907
DAVID ROSENBOOM M5N 2Z6 CANADA
A. FREDERICK ROSENE
02194
ESTHER ROSENSTOCK
11374
D. S. Ho ROSENTHAL EH! lGZ UNITED KINGDOM
MICHAEL ROSIAK
19446
BERNIE ROSMAN
01701
PHILIP
ROSS
18914
RICHARD ROTH
06468
95127
JEAN-CLAUDE ROY
RUSSELL RUBY
97330
BEARDSLEY RUML II
02146
HOWARD RUMSEY JR.
91105
60120
MARTIN RUNYAN
LESTER SACHS
21235
DAVID W. SALLUME
95051
E. J. SAMMONS
75080
MARCELO SANSEAU RA-8000 ARGENTINA
LEf: S/.TENSTEIH H3C 3A9 CANADA
LYNN liAUtwas
97077
ABRAHAM SAVITZKY
06856
Co Wo SAWYER
46201
JAY SAX
90278
PHILIP H· SAYRE
90045
BOB SCARLET!
87545
s. R. SCHACH
7700 SOUTH AFRICA

v.

w.

w.

PAGE 29

D E C E MB E R , 1 9 7 8
ANTHONY J. SCHAEFFER

49085

IRVING S. SCHECHTMAN
08540
R. s. SCHLAIFER
91030
IAN SCHMIDT
46526
WARREN SCHODER
07960
ED SCHOELL
95051
JAMES R. SCHRAGE
08854
JAY SCHUMACHER
80302
ROBERT SCHUTZ
11756
PRANK SCHWARTZ
02173
JOHN SCOBEY
55419
CHARLIE SCOGIN
75229
DAVID L. SEARLE
55441
BRUCE s. SEELY
91343
NORM SEETHOFF
98043
JOHN SEITZ JOB 2CO
GERALD P. SHA.BE
22309
JIM SHALLOW
19004
BILL SHANNON
44107
JACK. p, SHAW
53012
GARY B. SHELLY
92631
PATRICIA SHELLY
20852
CHARLES F- SHELOH
76133
BOB SHEPARDSON
95014
FREDERICK E. SHIPLEY JR.
15230
KIM L. SHIVELEY
75231
LAWRENCE A. SHIVELY
45414
ALBERT SHPUHTOFF
51106
A. SHULL
45424
.BOB SIEGEL
11215
· STEVEN SIEGFRIED
55113
WEBB SIMKlHS
92111
To R. SIMONSON
94105
MIKES SISIOS
95053
CHARLES SISKA JR,.
90405
STEPHEN SKEDZELESKI
91103
DAVID J. SKYRME M32 9BH
ROBERT C. si.ATE
98115
P. A. SLATS 2501 BD
G. THOMAS SLUSSER
53217
WARD SLY
55443
sm SMART
61701
JOSEPH Wo SMITH
92127
LYLE B. SMITH
60115
RICHARD M· SMITH
03102
REID SMITH-VAHIZ
06430
CRAIG A· SHOW
92138
DAVID V. SOMMER
21401
I· D.~OUTHWELL
94402
FRANK S. SPARKMAN
30305
55414
JOH L· SPEAR
PETER T. SPECK
D-6900

CANADA

w.

~l·sHR
JIM SQUIRES
RICHARD A. S'IACK
VINCENT STANFORD
MICHAEL S'IAUFFER
ROD STEEL
LARRY STEIN
MIKE STEIN
PETER STEIN
JAMES STEINBERG
TIM STEVENS
T. Q• STEVENSON

UNITED KINGDOM
THE NETHERLANDS

w.

GERMANY

Pom92660
60604
20037
22801
97077
07067
56320
01890
02142
60106
20250

o.

ARTHUR STIEH~ON
53715
R. A. STILLMAN
94043
A. I. STOCKS
95051
J. p. M. sroFBERG
19422
WIBERTA STONE
93003
THOMAS J. STOODLEY III
01824
DON STOVER
52302
JORN M.. S'l'RAYHORH
02139
S. STRUDWICK ST! 6 2AJ UNITED KINGDOM
ALASDAIR D. STUART
2191 SOUTH AFRICA
JERRY W. SUBLET!
94086
CONRAD SUECH'IING
74145
J. MICHAEL SULLIVAN
61101
GENE A. SUMNER
85008
ASHOK SURI
94040
DENNIS SUTHERLAND
52302
MARY SUTTON R4T lNl CANADA
ALAN H. SWANN
95955
TOH SWANSON
99507
G. B .. SWARTZ
07764
BEVERLY SWISSHELM
40583
MYRON Ro SYPHUS
84014
KEITH Go TAFT
94087
RYUJI TAKANUKI
244 JAPAN
JAMES E. TARVID
53927
PAUL TEICHOLZ
94708
C. Jo THODAY CV21 2QE UNITED KINGDOM
RON THOMAS
55435
JAMES B. THOMPSON JR.
07054
R. C. THORNTON
90631
PETER
THROSBY SW7 2BZ UNITED KINGDOM
T. R. THURMAN
52302
MIKE TILLER
55116
RON TIPTON
64134
CATHERINE C. TOBEY
91335
ROBERT H. TODD JR
19020
ANTHONY TOOGOOD
10021
01002
WILLIAM D. TORCASO
p. TORGRIMSON
94087
CARL J. TOSE'ITO
75205
GREGG TOWNSEND
85721
ARON SBTULL TRAURIHG
15217
95051
MIKE TRAVIS
.JOHN TROTl'ER
90240
TOM A· TROTTIER M4R 1V2 CANADA
JEAN TROUDT
80231
15213
JIM. TSEVDOS

w.

JYRICI TUOMI SF-13540 FINLAND
ROBERT TUPPER
ROBERT L. TURPIN
FREDERICK JOHN TYDEMAN
FRANK W. TYRON JR.
JOHN URBANSKI
JAMES p, UROHE
JOHN E. VAN DEUSEN III
ROBERT R. VAN 'IUYL
T .. J • VAN WEERT
DAVID VANCE
M.
VANNIER
ANDREW VARANELLI
v. VINGE
LES VOGEL
HANS JONGE VOS
EMANUEL WACHSLER
ROBERTA WACHTER

w.

Bil.'rI WADA
113 JAPAN
KENNETH R. WADLAND
01420
CLARK F. WAITE
92138
A. R. M. WA.JIB HA9 DEE UNITED KINGDOM
SCOTr WAKEFIELD
94305
RICHARD WALCH
68106
GEOFPREY F. WALKER
08822
Ro L· WALLA.CE
92675
JAMES Ho WALTERS
49003
p, Ro WALWYN lcr22 9NF UNITED KINGDOM
JORN Bo WARDLAW
7 7024
LES WARNER
48103
DONALD WARREN
02174
LOU WAR.SHAWSKY
60053
PHILIP A. WASSON
90045
JOE WATKINS
80302
ANNA. WATSON
32407
CAM WATSON
91364
DAN c. WATSON
45409
JOHN J. WEDEL
91011
PER-AKE WEDIN S-901 87 SWEbEN
GARY Lo WEIGEL
19380
DAVID F. WEIL
98124
STEPHEN J,. WEINBERGER
98006
DONALD G. WEISS
78721
LARRY WEISS
75043
JOHN H. YEHSLEY
94022
JOHN WEST
30327
TERRY E. WEYMOUTH
01003
WENDEL WHEELER
75221
RICHARD WHll!'FEH
19446
MICHAEL A. WHITE III
63132
WALTER A. WHITE
22205
BILL WILDER BOP !XO CANADA
LILLIAN WILHELMSOH
05402
BRIAN WILLIAMS BN3 IRA UNITED KINGDOM
E. HAROLD WILLIAMS
95050
JAMES I. WILLIAMS
19342
KENNETH L. WILLIAMS
01581
KIM WILLIAMS V3N 4N8 CANADA
M. HOWARD WILLIAMS
6140 SOUTH AFRICA
ARTHUR Co WILLIS
94086
DAVJ:D_J .• WILSON
48106
DAVID T. lh:LSON
30305
IAN ROBERT WILSON M13 9PL UNITED KINGDOM
GARY
WI.NIGER
94088
20375
NIELS K· WINSOR
GRF.G WINTERHALTER
48130
D-6750 GERMANY
RAHS-WIIM WIPPERMAHN
IAN Ho WITTEN C04 3SQ UNITED KINGDOM
Ao L· WOLBERT
60544
WILLIAM WOLFSON
01778
CHARLES WONG
55411
JOHN WONG
97201
HENRY WOOD
08540
STEPHEN c. WOOD
87108
55343
WILLIAM T. WOOD
.JAMES A. WOODS
94703
JAY WOODS
98907
RICHARD Mo WOODWARD
95051
JORN D. WOOLLEY
98006
ARDEN WOO'ITOH
85352
ROGER p. WRIGHT RG6 2LH UNITED KINGDOM
NICHOLAS WYBOLT
01581
M. Jo L. YATES GL52 5AJ UNITED KINGDOM

1196tl
76101
78758
06457
92704
92630
83702
95132
9321 GH THE NETHERLANDS
11790
63132
10038
92182
95014
97223
01730
15238

NAKHSHON YESHURUH
DAVID YOST
RAYMOND YOUNG
RONALD Lo YOUNG
PETER YOUTZ
c. A. ZANCHI
ALAN ZAR.ING

HOWARD M. ZEIDLER
H. J. ZELL
MARK ZDIMER
ANDREW HARRIS ZIMMERMAN
DAVID J. ZOOK
DAN ZURAS

ISRAEL
90046
55165
89119
95051
06455
78712
94025

95132
60626

94061

Applications
Please send all contributions for this section to Rich at the address below.

Th• ~•q•rmt •nd Bc~hm•nn oompfl•r wrltlno •Y•t•m• are •l•o
fmportent tool• for any •hop •noag'd In languao• develoPmani,
SOVRCE PROGRAM

T00~8

~--------~---------~

&OFTWARE TOOLS
asaa:as•=•••&•

by
Richard J, Clohelli
901 Whltttar Or,
All•ntown 1 Pe, 18103
(215) 7'7"3153

ANPA/Rl and
L
P1acel tmPl•mentetlona for new environment• ar! occurring
with ever lncr•••lng fraquengy, Aa Paaeel la uaed fo~ more end
more production prooremmlno 1 It Ii Important th•t • unlvera~l
1et o~ enclllary 1oftw1r• tool• be agreed .upon, Sem~ of the•e
tool• can b• defined In an •nvlronment81ndependent w~~ ao th~t
when wrtttan In atendard Pe1ea1 1 they can become pert of e un~
fveraal Pe•c•l •oftwere d•V•lopment hcfltty, I here proJ!loH
~n
tnHi•l llat, With PUG m•mb<1rahlP h•lt!11 the lfa~ Will de•
Valop Into • working aP•clfto•tlon end • powerful aet of pro•
orammtno tool•,
PASCA~

COMPILERS

~-------~~~~--~~

Currently there eKi•t Peacal QomPllara whlqh Produqe •b•o•
lute oode, relocotabl• code, macro code (PeacalPJ) and Inter•
preted c 0 de (Pa~c•l•P), Porteble v•r•iona exfat IPaao•l•P and
Paaqal~J),
Compf ler trunk• exl1t, A ••enderd Pasoel 1ubset
(Pa•c•leS) exf sta,
For comPfl•r wrlt•r• there should ~e a atanderd Peacel
language teat sat, Thi• unfver!•l 1et of Pascal Prog~ama would
new Raacel qompfler• •nd helP Implementor• g•ln ~onff•
dence tn th' oorractn••• of their oomPf ler•,
exercl~e

An lntaractfve Interpreter •hould be d1veloped, Thfa 1y1•
t•m would provide int•ractfv• 1ymbolfq run ttm• debu;olnp f••
ellltte11 breakpoint•, tnt•r•ctlv• dump•, ft~, It should be
•••Y to do batter than P~ll'• Ch•okout ~omPl1wr 1

SOURCE

~XBRARIES

The CDC •ouroe 1 fbr•rY uttli'y Program UP~ATE I• currently
fQr dl•trlbution of the .SCOPE V•r•ion• ef Pa1eel, lt
•eeme to me thet e mtnl•v•r•fon of UPDAT~ Cwl~h only ••~U•ntlal
P~olr•m
llbr•rf•al could be fmpl•m•nted l~.Pa•o•I, Thi• would
help
1tanderdl1e
th•
dl•trlbutlon
Of
P'~Oel
Tool•,
(lncldant•l1Y 1 CDC'• UPDATE.ta tnf beet •ouroe library ayit•m l
have ever •••n, I think It' quality 1hould be •muleted,)
u~ed

t::1

rn
n

For truly large •Y•to• ~511,000+ 1 lnee) e aour9e code data
ba•e la daatrabl•, Such a •Ylt•m keep• ~reek Qf ~hlch proar•me
access what date end provld•• for atanderd' file and record de•~
orfptton• amQnQ Proar•m• 1 at~, I ynqera\•nd •uoh a •v•t•m fo~
Peaoal exf•t• but I• a deep 1 dark mtllt1ry 1ecr•t,

DOCUMENTATJON PRE~ARATXON
~----------~-----------~W, Burger Implemented part of Wal~•'• P~AP tn Pascal, We
need a untver••l P~AP~lfke tool to maln~afn menu•l• ,~d other
dgoum•nt•tion tn machln~ readable fcrm 1
Ju~tl~lo•tlon
and
hyphenation end feotlltla• for produqlng hloh quality Prlntfng
In upper and lower ca•• •hould exl•t~
Paeoal .documentatfen
•hould be dfetrlbuted tn machine readable form for •••e of pub~
llQet!on 4nd dlwtrfbu~ton,
oe.w~CT PROGRAM fACI~ITlES
·-------~--------------~~
Work t• now in progra11 on prqor•m• whfcn load Paacel ab•
solute blnarl•••
Fa9tltttea for overlay proceaatno ahoUld be
provided, Automated •Id• which help ~re•-• •ffe~'lv•· ov•Pl•Y
1tructures •hould be provided, A binary d1coder fa elao • uae~
f\11 tool,

rn

OTH~R

lHE

PROGRAM~

"lMM~DIATE"

PAST

CJ

>
Of course, publf•hfng program• h•• It• own probl•mJ,
ry 1\1tement of what we ere trying to do we• In PN#l21

An efficient t•ble Procetaor with f•cllitfes like COSO~'t
Report Wrl~•r would be d•elr*blf, Current work on P••••l d•t•
bu• m•n•o•l!'•nt •Y•t•U1 m•th•metl!)•.. l funolon I lbr•r'le•1 •nd
oqmpu,er •lded fnstru~tfon •yat•m• augur ~he day of lncrea••d
use of P••o•l In buofn••• 1 enofneerjng, 'nd edUOfJf9n, ln tne
are• of function lfbr•r!e• \for m••h•~•tl~• or bu•fn•••l, f••
ollftfe• •hovld be provlded f6r not only"lfnkfno In bfnery mo•
dula• but •l•o for fncl~dfng aour9e module1 1 w
CONCLUSIONS

tion,

Obvfou•ly 1 where •nv!ronment1l eondftfon• permit we •hould
h•v• • unlv•r••l fl•ao•I prooru tmPl•m•n~fn11 ••~h aoltwere •fd,
Where the envfronment•l factor• prevent thl•r we ehould •~ek to
PPovfde • 1tandard uaer !n~erfao• to the deal red funetfen1 1

1)

c)

CONT'D

d)

tent pol foY queat!9n,, The-ll!oH crUtoel of th••e wes hqw to get P~T to
member•~
One qbv1ou1 •n•w•r
lhat fmplemen~ors could d4,trlbute
the tool• Wf th thofr dfotrfb~tfon Paqk•ge; Of oouroe, when th• numbor of
ectfve fmpl•m•ntors reached nearly 108 1 Andy and I were eo•fn un•ure of
wh•t to do, Ab9ut thf • tfme CACM •topped f t1 Algorithms eectfon 1 l •l•
mo•t oaneel l•d my memberehfp becouee of my f•elfnga that the meet lmPor•
t•nt work of comput•r •cf•ntf•~• t• thelr Programs,
Without publl•hed
programs, CACM f• hollow for me,

w••

~UG

X very mvch want•d to ••• quo! fty Pro11r•m1 fn prfnt,
Andy W•' con•
vfnoed that ft w11 proper for PN to publi•h i>rogrem• by the following •r•
gument.i

ll Publf•bfno qu~ljty Pa1c•l program• would help educate new PUB
membera 1
l believe reodfno good progr1ms fs the.ea1fe1t way to
leorn Proor•mmfng teohnfquea and •tyle,
2) Publf•htn; PrQgr•m• would gfv• proper
thoro,
l) Review •nd fm"r 0 vement of PSTl1 by
4) Publl•hed PST•• would encourage

r•~ognftlon

~UO: membe~e

Implementor~

~Q

to

progr•m

•u•

Would b• feo.f l it•ted,
adhere to the P••c•l

St•nd•rd,
5)

Commerqtel u•ere oould r~quir• Gomptler vendor• to uu the PST'•
te~t ~h• oonfQrmitY ind perform~no• of their fm~lem•n~~tfqn•,

to

Andy w11 OQnVinc•d and I even fmpre11ed mY••lf with th••• argum•nta,
The obvious re•Ul' i• th• &oftW•r• Tool• 1ection started fn PN#I~.
The above dt19u1•fon shovld h•IP
software Toot• i:>olfay •nd ph\Jo•ophy,

PU~

member• under•tand •nd oh•o• PN

Applications

=
rn

(/)

1ec•

Aloorl~hm•

Crf t!~ue~ of ihe pro11r•m for1
•)
bl

--------------------~
l believe th•t e•rly •rti91• pre••nted • vl•ble peropectfve for fu•
ture Pascal SoftWHe Tool• (PSTl w

We decided to Qreate • new eeetf on for printing ~••9•1
source progrtm• for V•riou1 •PPlic•~ion• lnclUdfng Software
fool• and Aloorfthm•, Addftfon•lly 1 here, we wf 11 print new•
ol ali;iniffqont •PPlfc•tlon• Program• wrlten tn Puoal, Jim
Mfner eyggeoted w• Ind•~ ••oh program 10 that they mey be e••f~
lY referenced tor correot!on1 end qrfttcfams,

!"!·-------~""

SOFTWARE

prelfmtn•~

The

1tondord• conform•noe 1
ltYl

e,

•l;orfthm 1
output oonv•nleno• end general de•lon,

We'll numbor proor•m• •t•rt!ng with P~1, Software
otertfno wfth s~1, and Algorithm• startfng with A·I,

Tool•
CJ

Already our numberfng 1cheme I• 11fvfng us problems, Ae s~2 (Augment
•nd Anoly•e) mode cle•r 1 Software Tool• may nq~ be )V•t ~inQl• programs
but entfre systems of Program•, So th~t we c~n refer to te~t lfnea within progrem• unlqveJy 1 we wfll u•• ~ht not•~fon1

f"ll

n
rn

ReferenceNumber = Clo11Hfcation "•" Sye,em.
Cl•••i ffoetlon = 11 s• I "T" I 11 A'' I
Syetem = Un1fgnedlnteger I Un•f~nedJnteger "•" Progr•m De•fonator.
ProgramDesfgnetqr = ijnafgned!nt•>Jtr I Y1lfdatlonSufteDe1fgn•tor,

•v•.

Thvs 1 Augment and Analyze er• •ti 11
S•2~1

ond Analyze

s~2-2,

s .. 2

but

AU1lm11tnt 1

the!

1,

b•oomu

The volldation suite deefgnetor1 (l,e, "V" program•) ere bei~g •••
ofgned by Brion Wichm•nn 1 So 1ar th•r• h~ve been m~nY fov~rable comment•
obQut PN#l2'• progr,mo, Unfortun•telYr ~o certification• of the programs
have bee~ recefved to dote, It I• important that those me~ber' Who bring
UP the programs oomm•nt on any probJema ~h•Y mfght hove had,
We re•l lY
need to k~ow th• performance end eeoe of fnate(letfon of ~he PrQgrams on
various 1y1tem1,
I'm eure th• memb•r•hip would b• very fntereeted In how w•ll Jfm
Miner's Compere Pro>ir•m CS~!) perform• ogainot a Pascal tmplemontatatfon
ofPou! Heckel'• ft 1• Cpmperf•on Aloorfthm, (CAcM, Aprt I l'J75r Vol,
21 1
N~m,
q, •A Technique for Ieoleting Dffferenoea Between Ff le••), Sound•
l fke a good term Project to mo,
THI; PRESENT
~'!"'·-----~-~

Thi• l11ue'1 Pr•tty prfnt•r• •hovld help future PST aubmf tter• to
produce camera-ready copy, We ore eKperim•ntlno with several publ fcatfon
style•, We want to~· able to PUblf•h readable copy of l•rge prollr•m•,

rn

We mey tKP•rfm•nt with Puttlno m~1JIP1• •fmple •t•~•m•nt-·P•r line •nd •
vertfoal tWoNcolumn format, lt a,•m• dealreb!• to be •ble to pu&!!•h
•Y•tem• of •• m•nY •• 10,000 lln•a of cod• ln • alno1• J~aue 1 Thu~, full
oompfler• and l•roe •PPlfoa-lona llbrarfea could be eccom~odet•d• Anyone
••eklno to h•v• • !•roe proorem P.Ubll•hPd •h9U!d work ~1•••1Y with me end
Andy, lnq!denta11Yr proor•m• Which ere prfmarllY tutor!•! fn neture
(f,e,
"ot 1 of o•n•r•1 utility> •h~Uld be lnqorporated In artfclea for
pub! lutlon in the Artlcln oqtlon or FIN,
·
THE

JMMEDIAT~

FUTURE

sOME l'INA\.,

WQRDS

•••••~•-•"!'•"'!'~•P'!

Tho~e fmplementfr• end oroenjzetfon• 1
which ln•l•t en prod~clno
th•lr own dialect• ef P••c•l •nd fo!atfno them on en uneuepectt"o publfc
as belno P••ce1 1 are ene~I•• ef Uf ell,

=
rn
:..E:

ALG0 RI T HMS

~·m •Ure it f• of no aurprle• te •nY reader th•~ tlmo~~ •11
of the
•oftW•re tool• dpaerlbed In PN~6 ar~ now In exla~ence 1 UnfortunatelYr
meny of tho•• utllltlae need car•~ul pol!•hlno PefPr• ihtY are ault•ble
or pub!tcetlon, We ~r• worklno on 9ettlno t~o•• to which we h•V• ·~~•••
nto •hepe, An9~her problem la obt•lnfna publlcet!on perml••lon from au•
-thora end oro•nt••tfenp, Work l•·•ofna on tn •11 th••~'"'''•

en

A - 1 Random Number Generator (continued discussion)

University of Lancaster

r

Department of Computer Studies
Bailrigg, Lancaster
'f~ai'fe'b1l8 Lancaster 652or (sm 0524)

We bel !eva th• S11ftw•r• Tool "" wl 11 orow In two wav.1 new utl 11 ..
tf•• wl11 be •~d•d •nd •Ml•tfng uttlltle• will bp modified Qr rePl•~od by
Improved V•r•fon•· Wa enogur•oe the member•hfp to help UI oerefully •V••
!U•t• P~bll•hed proor•m•,
We hoP• •11 tho•e who have developed P••cil
~oftW•r• Tool• will 'ry to -.ubmlt in•m for PUblfo•tion,

Head of Depamnent:J. A. Llewellyn ll.Sc., M.Phil., F.ll.C.S., F.J.M.A.

7th September 1978.

Dear Rich,

WHAT'S

N~W?

Jim Miner made a few comments on my random number generator algorithm
(PN +o12, algorithm A - 1) which I feel compelled to enlarge upon:

·-------~-'!!'

go"dl;t-• Pr•ttY Prtn,er •11ow•.u• to ·PUblleh proor•m ~•x• In• oen•
•!•tent .•tyle,
~q~•lly lmP•rten' for proor•m.ah•rlno •r• a aourc~ ~od•
llbr•rY feafllty •nd.• text formetter fQr docyment•tfon,
After th•••
hljh priority t\tm• have b••n publl•h•d 1 PN will dizz1• th• ~U~ m•mb•r•
ah P Wfth •Xtr•11rdln•rY •oftwere 1

(a)

t'

in •ddf,lon
'h• •ortwere m•ntltned In t~I ~N#6 •rtfc!•r we hope
to Pllb!l'h en APL lnt•rPr•t•r wrlt~•n fntlreJy tn P•99•1 at Vlll•MV•• A
Program from th• UntY•r•fty of Hentrt•l drew• N~•·l~8hneid•rm•n ·dfa~rtm•
for ~•a91l progrema (a1e SJGP~AN notlo•r Auou1t 1973), We 1!•0 n~ve 1
pr9gr'm fr9m North Amer,p1n PhllllPa ·corpor~tlo~ whloh rt•d• P••9a1 -Pro•
or•m! •nd Mark• th•m for •t•ndard conform•nae, lhe proor•m h•ndl~• m••t,
bu~ n1>t •11r atend~rd Peac;•I l"rogremit,
AnYQM
ntereet•d In polf1hlno
thl• PrQor•m Into r••oanfzfno the full •t•nd•rd.1hould aon••ct m• fmm•dl•
et•lYo

(b)

As long as overflow checking is suppressed, multiply overflow can be
ignored. For, if the initial seed is positive, then a,b,acomp and
bcomp are also positive; hence a• (after the first shift) is positive;
thus a comp 1 is positive J and the result of
(a' and bcomp') or (b 1 ~ acomp 1 )
must always be positive, independent of the sign of b.

(c)

I take the point about set operations expressing exclusive-or's more
naturally, though this is exploiting a feature available in that
particular implementation - in our implementation, integers occupy one
word, and sets four. In any case, we are both taking liberties with
the system.

(d)

I pointed out in my note iv), that the initial seed must be positive and

~--------~~--~~---~---~-

An Interactive editor In P•ac•I WtU!d be m'•t w•l•oma,
A tYP•••t•
ttno package would h•lP n•w•l•ttar preduc~fon lmm•na•1Y 1 We've wrttt•n o
Ho,•r111, ~800 At••~bl•r In P~IQ•l •t ANPA/Rl,
•nd on•• for tht aeee,
tea, ·~•• wo1fld uktt 0011~ httw1r• To•U •n•rfo 1

,t

~'d

•o ••• •

llk•
boeittr•Ptb!• vtr•lon of P••Q•l•S pub!l•h•d I~ PN,
Moat prcigrommua w,11ld be turprfod •t 111•• ho\l"••fY fl I• to 110111pl!t
P••e•l1 Ro~djng •nice P••c•1 cempll•r wrftt•~ In "Pe•ct! woutd ~•k•
•v•rY proor,mm•r r•tie•nt to muck wl'h th~ •ttndjrd, lnqfd•nt111Y1 th•
Pe•c•l~S •Y•t•m 1• •n dee1 tool for compll•r w'lt "o •our•••,
'•no•
TRAN,
~nook

I don't know what Jim meant by the results "seeming" better with circular left shift. The original algorithm has only one absorbing state
(i.e. a state which you can~ get out of once you are in it), which is
the zero state, and this is isolated ( i- e. the only way you can get
into it is to start in it). It is relatively simple to show that Jim's
algorithm has two absorbing states, one at least of which is nonisolated- In practical terms this means that unless you are very careful about choosing your initial seed, you wind up repeating the same
number.

non-zero.
I hope the above comments are sufficient to prevent anyone using the
modified algorithm before its properties have been more fully investigated·.

~•r•

Mot•berg of Volvq f!Yomotor In Sweqen pofnt•d out th• lmPer•
oonv•~~lno ~Kltllno •of•wtrt •Y•••••· to ~.,,,,, W• n••i:i l'DR•
A~~OL1 COBDL 1 fnd PL/' 'o P11c•l ~r•nt1•tor• 1
Som•on• mhh' •10
o~~ • B~OlC •v•ttm \n·~~··~l.
oi

Brian A.E.Meekings.

t:::1

rn
n
rn

(b)

A - 3 Determine Real Number Environment
DOCUMENTATION : ENQUIRY

Real arithmetic complies with the following rules:

CJ

(i)

If operands and results are exactly represented integral values,
no inaccuracy is introduced by the arithmetic.

(ii)

The arithmetic is organized along the usual align, operate and
normalize steps, where these are necessary.

Pascal

(iii) It is presumed that when digits are lost due to the representation, they are either truncated (ignored), or true rounding
takes place. (No other possibilities are taken into consideration.)

A.H.J. Sale
Monday, 1978 March 20

(iv)

Use

)>
(/)

n
)>

r

=
rn
(/)

The intermediate results of arithmetic operations are held in a

cell which has the same representational properties as the
operands.

To allow programs to enquire into their environment (compiler + computer)

and tailor their behaviour to the properties of the real arithmetic system.
The procedure may be of use in programs that must be portable across many

86700 PASCAL COMPILER

different PASCAL systems, and which are numerically oriented.
User documentation

program i nv es l i 9 a t e rep res en l a l 1on :
var

cedure works on 'a large range of computers, its correct operation depends
on a number of assumptions about the representation of real numbers, and

Programmers incorporating the

procedure into programs are advised to cause the deductions to be printed
so that end-users can check the accuracy of the deductions for their particular systems.

Installation
The enquiry procedure is standard PASCAL, in reference language form, and
should compile on all systems. If assumption (b} (iv) is violated (as for
example on the IBM 1130 which has more mantissa digits in its software
accumulator than in the memory representation), rewriting the parenthesized

expressions (and therefore the control structures) so that each parenthesized sub-expression is assigned to a memory cell will probably give the
correct deductions for the memory representation. The same trick may be
employed in defense against over-clever optimizing compilers that utilize
properties of (mathematician's) real arithmetic, and re-organize expressions.

The displayed driver program illustrates how the best- and worst-case
precision may be computed from the deductions about the arithmetic.
System documentation

The algorithm is an adaptation of one originally due to M.A. Malcolm
(Comm ACM, Vo.I'.. 15 Na. 11pp949-951, Nove.mbeJr., 1972).
Assumptions

It is assumed that:
(a) Real numbers are represented by floating-point representations which
comply with the following conditions:
(i)
There is a mantissa of a fixed number of digits to a fixed base.
(ii)

FRIDAY, 1978 MARCH 17,

SSET $ LI ST LI NE INFO STANDARD

Calling the enquiry procedure with the proper actual parameters determines
the base and number of digits of the mantissa of the representation, and an
indication of whether the arithmetic is truncated or not. Though. the prothe operation of floating-point arithmetic.

VERSION 2,8,002

There is an exponent which expresses a multiplying factor to be
applied to the mantissa to obtain the exact representation
value. The exponent only takes on integral values, and the

multiplying factor is the base to the power given by the exponent.
(iii) The representation preserves maximum precision (no digits are
lost unless the representation cannot accommodate them) . In
particular integral values with possible exact representations
are exactly represented.

11:43 AM.

=::.== === ======== ====== === === ===== === == ==== :::::::::: ======::: ==== ======:':: === === == :::: ===

(*************************)
base ,
n u1nb er o f d i g i t s ,
i
rounding
Ops i Ion

integer:
boolean:
re a I ;

procedure enquiry(var radix,digits
(MMW~MWW)

integer; var rounds

booleanl:

var

number,
real;
increment
begin
{'find large inte9't.al value just beyond integer Jimils
number:=2;
_
while (((number+1l·number) = 11 do number:::numberK2;
(manufacture the next !ar9esl real value }
increment·:=2:
while { tnumbertincrementl = number] ~o increment·:=2-Mincremonl·
{ sublr~ct lhese lo give radix of representation }
. '
rad ix: :::t rune If numbe rt increment J --number);
( se& if it rounds or truncates by adding (radix-11 l
rounds:= I (number+ (rad iX-1 J l <> number J:
(work out how many digits in mantissa)
digits: =o:
number: =:1 ;
wh i I e ( ( (number t 1 J ..- number J :::. 1 J do beg i n
dig i ls: =digits +1:
numb e r : =number Mr a cf ix
end
end; { of enquiry procedure J
bogin (of main pro9'r.am body}
{ find out basic properties l
en qu i r y (base 1 numb e r o rd i g i l s , round i ng J :
writelnfoulput,' BA.SE=' ,base·:sJ:
Yfi~~~~~f~~P~~;~ NUMBER OF DIGITS=' ,numberofdigits:SJ:
writelrifoutput,' ROUNDED')
e Is e
writeln!outpul, 1 TFl.UNCATED'l;
{ compute lhe precision bounds J
epsilon·:=1:
for i:=1 to numberofdigits do epsilon·:::epsilon/base:
if rounding then epsilon::::apsilon/2;
{ print the best and worst precision J
wrilelnloutpul,' BEST AND WORST PRECISIONS ARE
epsi Ion, (epsi lonxbase)J
end.

00001000 003 0000: 1
00002000 003 0000: 1
00002500 003 0000: 1
00003000 003 0000: 1
00004000 003 0000: 1
00005000 003 0000: 1
00006000 003 0000: 1
00007000 003 0000: 1
00008000 003 0000: 1
00009000 003 0000: 1
00010000 003 0000: 1
00011000 003 0000: 1
00012000 003 0000: 1
00013000 004 0000: 1
00014000 004 0000: 1
00015000 004 0000: 1
00016000 004 0000: 1
00017000 004 0000: 1
00018000 004 0001: 0
00019000 004 0004:5
00020000 004 0004"!5
00021000 004 0005·: 4
0.0022000 004 0009:2
00023000 004 0009: 2
00024000 00.4 OOOB:3
00025000 004 0008 :3
00026000 004 oooD·: 4
00027000 004 0000·: 4
00028000 . 004 oooE·: 3
00029000 004 OOOF·: 1
00030000 004 0011: 1
00031000 004 0012: 3
00032000 004 0012: 5
00033000 004 0013: 5
00034000 004 0016: 1
00035000 004 0016: 1
00036000 003 0000: 1
00037000 003 0000: ·1
00038000 003 0002:2
00039000 003 OOOA:2
00040000 003 0012 :2
00041000 003 0013: 1
00042000 003 0019: 3
00043000 003 001 A: o
00044000 003 0020:2
00045000 003 0020:2
00046000 003 0021: 0
00047000 003 0027:5
00048000 003 002A: 0
00049000 003:002A:O
OOOGOOOO 003: 002r·: 2
00051000 003: 0034: 3

Certification for Burroughs B6700
The following output is produced when running the test program on a Burroughs
B6748 processor with the University of Tasmania compiler and is correct:
BASE:
8
NUMBER OF DIGITS'
13
ROUNDED
BEST AND WORST PRECISIONS ARE

O. 9094947E-f 2

0. 7275958E-f 1

:::::;

rn

n
rn
~

tJ:j

rn
~;::;I

f-'
LO

---.,
00

SOFTWARE TOOLS
One important aspect about Pascal coding style is consistency, although styles certainly
differ from one programmer to the next. The two software tools in this issue are both
Pascal Prettyprinters, which aid Pascal programmers in their coding activities. They
represent 2 vastly contrasting philosophies, and so I think it is appropriate th~t we
print both, and are assured that we have two of the best in existence. S-~ Prettyprint
adheres to the philosophy that there are serious issues in prettyprinting, and that
it is only necessary to impose a minimum set of restrictions in prettyprinting--not be
heavyhanded, not do full syntax analysis, and not provide a voluminous set of options.
Prettyprint does prettyprinting on a local basis and thus can handle Pascal program
fragments, and even incorrect programs. The important principle is that all blank
lines and blanks supplied in the original source are preserved.
S:>ll.,;:Forroat!. indeed. does .. provide a 1arge set of opti ans because no prettyprinting
style can please everyone, and by allowing complete control over the process, one can
achieve pleasing results. Indeed at our site where both of these prettyprinters are
available, Format is the choice over Prettyprint by 3 to 1. I use both myself.
Prettyprint was first announced in Pascal Newsletter #6 page 70, in November, 1976.
Henry Ledgard reports that they lost a lot of money distributing it. Charles Fischer
was kind enough to provide some small corrections (indicated in the program) before
we published it.
Format has been around for the last 3 years, and remains in my opinion, one of the alltime, best-looking Pascal programs in existence because of its use of long and meaningful
identifiers. It looks all the sharper in upper-and-lower case!
There has been quite a bit of noise in the literature about Pascal prettyprinting.
We cited Singer, et al,'s article "A Basis for Executing Pascal Programmers" in PUGN 9/10
page 9; Peterson's article"On the Formatting of Pascal Programs" in PUGN 11 page 10;
Sale's article "Stylistics in Languages with Compound Statements" in PUGN 12 page 10,
and in this issue; Mohilner's article "Prettyprinting Pascal Programs..--:ril this issue;
and I now find Crider's article "Structured Formatting of Pascal Programs" in the
November, 1978 SIGPLAN Notices.
Unfortunately, both prettyprinters could do better in their treatment of comments,
They are living examples of their results, because they have been run through themselves!
And as such I am very pleased that we can present them here together with their superb
documentation. (*P.lease excuse my role therein.*) If you want to use these prettyprinters, key them' in, or request that your Pascal compiler distributor include them .
on the distribution tape for your favorite Pascal system. CDC-6000 Pascal Release 3 will
include both Prettyprint and Format. Happy prettyprinting '79!
- Andy Mickel

s - 3 Prettyprint

2
3

{==========================~============~========================}
{
}
{ Program Title: Pascal Prettyprinting Program
}

4 {
5
6
7
8
9
10
11
12
13
14
15
16
17
18

{
{
{
{
{
{
{
{
{
{
{
{
{
{

}
Authors: Jon F. Hueras and Henry F. Ledgard
Computer and Information Science Department
University of Massachusetts, Amherst - August, 1976
(Earlier versions and contributions by
Randy Chow and John Gorman) .

}
}
}
}
}
}
}
Bugs corrected by Charles Fischer, Department of
Computer Science, University of Wisconsin, Madison.
}
1977. Indicated by(3:«.\
}
}
Modified for CDC-6000 Pascal Release 3 by Rick L. Marcus }
University Computer Center, University of Minnesota.
}
30 September 1978.
}
}

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{

Program Summary:
This program takes as input a Pascal program and
reformats the program according to a standard set of
prettyprinting rules. The prettyprinted program is given
as output. The prettyprinting rules are given below.

An important feature is the provision for the use of extra
spaces and extra blank lines. They may be freely inserted by
the user in addition to the spaces and blank lines inserted
by the prettyprinter.
No attempt is made to detect or correct syntactic errors in
the user's program. However, syntactic errors may result in
erroneous prettyprinting.
Input File: input

- a file of characters, presumably a
Pascal program or program fragment.

Output File: output - the prettyprinted program.

}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}

=

rn

{===================================================~===============}

{===~=============================================~=======~=====}

{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{

64

{

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{

}
}
}
}
[ General Prettyprinting Rules ]
}
}
t.
Any spaces or blank lines beyond those generated by the
}
prettyprinter are left alone. The user is encouraged, for the }
sake of readability, to make use of this facility.
}
In addition, comments are left where they are found, unless }
they are shifted right by preceeding text on a line.
}
}
2.
All statements and declarations begin on separate lines.
}
}
3.
No line may be greater than 72 characters long. Any line
}
longer than this is continued on a separate line.
}
}
Pascal Prettyprinting Rules

4.

The keywords

11 BEGIN 11 ,

"END 11 ,

11 REPEAT 11 ,

and

11 RECORD 11

are

forced to stand on lines by themselves (or possibly follwed by
supporting comments).
In addition, the "UNTIL" clause of a "REPEAT-UNTIL" statement is forced to start on a new line.

5.

A blank line is forced before the keywords "PROGRAM",
"PROCEDURE", 11 FUNCTION11 , 11 LABEL 11 , "CONST", 11 TYPE 11 , and 11VAR11 •

}

}
}
}
}
}
}
}

}
6.
A space is forced before and after the symbols ":=" and
}
"="· Additionally, a space is forced after the symbol":".
}
Note that only 11 =11 s in declarations are formatted. 11 =11 s in
}
expressions are ignored. I<<<,\
}
}
}
[ Indentation Rules ]
}
}
l·
The bodies of 11 LABEL 11 , 11 CONST11 , 11 TYPE 11 , and "VAR11 declara- }
tions are indented from their corresponding declaration header }
keywords.
}
}

CJ

rn
n

rn

I-'
lO

'-!
00

{

2.

{
{
{
{
{
{
{
{
{
{
{

The bodies ·'Of 11 BEGIN-END 11 , "REPEAT-UNTIL 11 , 11 FOR 11 , 11 WHILE 11 ,
WITH11 , and 11 CASErt. ·sta'tements, as well as 11 RECORD-END 11 structures and 11 CASE 11 variants (to.. one level) are indented from
their head·er keywcirds.

11

{

3.

An

11

IF-THEN-ELSE11 ·statement is indented as follows:

IF 
THEN


ELSE


{

}

}
}
}
}
}
}
}
}
}
}
}
}

167
168
169

{
{
{
{
{
{
{
{
{.
{

}

170

{

}
}
}
}
}
}

171

}

{===~===============================================================}

{====================================================================}
{

}

{
{
{
{
{ .
{
{

General Algorithm

The strategy of the.prettyprinter is ·to scan symbols from
the input program and map each symbol into a prettyprinting
action, independently of the context in which the symbol
appears. This is accomplished by a table of prettyprinting
options.

151 .{
152 {
153 {
154 {
155 {
156 {
157 {
158 {
159 {
160

161
162

163
164
165
166

173
174
177

{
{·
{

The prettyprinting 't>]ltions axe processed 'in the following
order, and invoke the f.ofulowi·tl'g aat::ions:

{.
{·

crsuppress

.{.

{
{
{
.{
{
{
{
{
{
{
{

:{

<·

{.
{
~

{.

{.

If a carriage return has been inserted
:foiLJ.dl1t.i\:r!l the previous symbol, then it is
inhibited until the nex:t symbol is printeci.

{,

{

-

gobbleSymbols

- Symbols are coq..tinuously scanned and printed }
without any processing until one of the
}
specified symbols is seen (but not gobbled). }
}
The margin is indented by a standard amount }
from the previous margin.
}
}
- The margin is indented to the current line
}
position.
}
}
A carriage return is inserted following the }
symbol scanned.
}

indentbytab

inderittoclp

crafter

}
}

}

{====================================================================}

program prettyprint(

from
to }

input,
output ) ;

200;

the maximum size (in characters) of a
symbol scanned by the lexical scanner.

maxstacksize

100;

the maximum number of symbols causing
indentation that may be stacked.

186
187
188
189
190

maxkeyleng th

10;

maxlinesize

7-2;

}
}

191
192

slofaill

}

193
194

30; { iup to this column position, each time
11 indentbytab 11 is invoked, the margin
{
{ will be indented by 11 indentl 11.

slof a:Li·2

-48; { up to this column position, each time

}
}
}
}

}

}
}

}

maxsymbolsize

- A carriage return is inserted before the
}
. \"'1JITi?.n't symbol (unless o.ne is already there) }
}
blanklinebefore ':'""''.:A::•blea:i.k; line is inserted before the current }
. :s;ymbol (unless already there).
}
}
dindentonkeys
"- ·J)f any· bf the specified keys are on top of
}
o•f the stack, the stack is popped, de-inden- }
. j:ilng· tthe .margin. The process is repeated
}
~'Uli·tiil ·1the~· trap of the stack is not one of the }
'·t ;_, spe·cified keys.
}
,,, '
.• ·<'·.
}
dindent
~ The stack is unconditionally popped and the }
mq.11gin·ii!s·de-indented.
}
}
spacebefore
-- e.i·.. ;space: iS 'inser·g(!tl. Oefo~e·· e·Il~~symbol being }
sooi;J.ne\l (unless ·already tli!!'.i'e) :,
}
}
crbefore

- A space is inserted after the symbol being
scanned (unless already there).

175

178
179

{

spaceaf ter

176

}
For each distinguished symbol: in .ehe table,· there is an
}
associated set of options. If the option has been selected for }
the symbol being scanned, then the action corresponding with
}
each 01Jtion is performed: '
}
}
The basic actions involved in prettypril"!-ting ar.e .the indent- }
ation and de-ind·entation of the :riiargin. Each ~time the margin is }
indented, the previous value of the margin is pushed onto a
}
stack, along with th.e n~~me of the symbol that caus~d it to be
}
indented: Each .time the niargin is ·de-indented, t:he stack is
}
popped off to obtain the previous value of the margin.
}
}

{
{.
.{
{.
{
{..
{

}

}

172

}

{
{
{
{
.{
{

( the symbol is printed at this point

180

181
182
183
184

}
}

185

195

196
197
198
199
200
201
202

the maximum length (in characters) of a }
pascal reserved keyword.
}
the maximum size (in characters) of a
}
. line output by the prettyprinter.
}
I-'
lD
'-I

co

11 indentbytab 11 is invoked, the margin
{
{ will be indented by 11 indent2 11 • beyond
{ this, no indentation occurs.

indentl

3;

inden.t2

l;

203
204
205
206

space =' '

207
208
209
210
211
212

213
214
215

216

keysymbol

',;

=

progsyip..,i
labelsym,
beginsym,
caSB8Y~i.

£bnsj.il(;
:i,fsym,
endsym,

funcsym,
constsym,
're]?aatsym, ·
"h',

I

,t

/,17'

b.ea.omes,.'

218

aen®.G.~:QJ.}.y·J:".·~-:J..oi:tJ ... ~.: •..i.,1J

:hs
:421!
2:2.1
izz
.2.z$

gp:e1iJ,l-ail,}
enQl1set;
dblchar: dblcbartable;
sglc.har: sglchartable;
stack: symbolstack;
top
integer;
star.tpos,
currlinepos,
currmargin :

starting position of last symbol written
inte~er;'

procedure g.etchar(

from input
updating } var .nextchar
returning } ~ currchar

324
325
326
327

begin { getchar }
currchar := nex:tchar;

328

267

278
279
280
281
282

0?

ll'·ec.ords.een: boolean;

296

297

a:t:ray [ keysymbo1 ) of ta:bleentry;

keywordtable

array [ 1- .maxstacksize ) of stackentry;

~

.Y§E.

294

key ~ packed array [ 1. .)naxkeY'.Length )

249
250
251
252

syntbalstac.k

295

tableent:ry = record
~onsselected
optionset;
keysymset;
dindrentsymbo1s
gob:b1elterminatlors·: keysymse't
end;

244
2.45
246

,.,,,

292.

o:tf:• kely.IJ!ym'bl)l;'

238

2'42
243

~.\{' \ ! 11 ;. ,. :_
'"':Lndeti:e'e';Ym"O~o"Ji'r' keys;0nt'aii
, " ', )j:cevma:)t@,'11 :' inte'g'lt):'

.~

2:9,0

236
;>,'37
439
2,.40
2.41

·= ,·~eic.p):'d

•

2/!lW.

c:tta:ftl:r~:it ,~;1;1;·

~ ~

s tackentlilf'

285
286

zlrn

b la:nlsi'.il;ib:;:eb:e:!lo mw
dinil.i;x1l!lonke)'s>;', ·'
din&e:nit.i ' ·' :. '
spa®;beifi(i
spacea:fter,
gob b:lke:$.ymbo:Jrs ,,
ind <;n \ll1u''>"'"h.
indent to alp,

'1,27

'•1''' .;

284

289

cth~:it,e.-;,, ~ti:

~ZS

28'3

287

'·" ·

~(I ·~~ •• j.•

c:r;s.upp);ess..;

=::;

'±24

F.

o. J?enc.ommep.t ,- .c.lo:s:·ee.omment,

1

chp.rd.nf-o =

letter,
digit,
blank,
quote,
endofline., filernark, .otherchar
) ;

~

name
•. ya1u
end;

charname;·
a.har

329
330
331
332
333
334
335
336
337

338
339
340
341
342
343
344
3:45
3,45
347

348

with nextchar do
begin
if eof (input)
then
-name := file.mark
else if eoln(input)
- - - then
name :·= endofline
else

lJ..

else i f

input.... in ['a' .. "z']
then
name :·= letter
input~

then
name

in [ 'O' · ·' 9' l
:= digit

charinfo;
charinfo );

ci
rn
n
rn

349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371

~

name

:=

else if input"' = spac:e
~
name := blank

317
378
379.
380
381
382
383
384
385
386
: 387
388
389
'390
' 391
392
393
394

424
425

406
407

. 408

'', 41l!J
:

... 41'&
j
411

". 412

413
..,, 414

I<'

=·
rn
:£:

en

end { while }

429

end { with }

430

~

431
432
433
434
435

procedure getc.omment(

{ skipspaces }

436
end; { getchar }

procedure s toreuextchar ( { from input }
{ updating }
:'!!!£length
integer;
· ~ ·currchaJ:,
nextc.har : c.harinfo;
{ placing in } .::£:!!£ valu
string
);

437
438
439
440
441
442
·443

444

~not(

445

451

452
453
454
455
456

lengtl'I := length+ 1;

((currchar.valu = '*') ~ (nextchar.valu = ;)'))
Eli: (nextchar. name = endo£1ine)
Ef: (nextchar.name =. filemark)) ~

storenextchar( { from input }
{ updating } lerig th,
c.urrc.har,
nex:tc.har,
{ in }
valu
);

449

450

if length < maxsymbolsize
theu
begin

charinfo;
keysymbol;
string;
integer
);

name := openc.omment;

447
448

getahar( { from input }
{ updating } nextchar,
{ rt?tu:c'ning } currchar ) ;

from input }
updating } ,Y;!i;_ currchar,
nex:tc.har
var name
Var valu
var length

begin { getcomment }

446

begin { s torenextchar }

g

(currchar.valu = '*')
then
begin

457

~

(nextchar.valu,= ')')

t.D

00
storeµextch~{

4!>!1
4'P~

~~1

~!1;2

4a3
Ml4
ffi!I~

procedure skipspacas('
{ up~ating } :'!:!!!. currchar,
nextahar
{ :ri.em:id~g } ,Y;!i;_ spacesbefore,
crsb.efore

I-'

.......

458

val1u [l!!ngth) ':-= aurrchaJ:·.'\>'alu

{ f~om input }
{ updating } length,
currrcha.r,
nextchax,
{ in }
valu
);

name : ;::; c.los ej?omment

4l(j6

C?harinfo;

l/Jis'I

integer

4'11!J end; { ge.tcomment }
47:6

IJ!-6'8

);

471

be#i} { skipspaca~ }
•' '
. ·'': .
spaaesbefolle : " O;
,, 'i!tsb filemark
then
--get(input)

401
402
. 403
' 404
405

: spacesbefore := spacesbefore

endofline : begin
c.rsbefore
:= c.rsbefore + 1;
spac.esbefore :;::::; 0
end

423

if name in [ filemark, endofline ]
then
---Yalu := space
else
---Yalu := input..... ;

);

currchar.name of

blank

4i2

else name .:= otherchar;

;3g5
396
397
398
399
400

~

419
420
42.l

372

373
374
375
376

{ returning } currchar

415
416
417
418

quote

4'n funation idtype( { of }

El.

r blank,

eudofline l do

~e,,'ll!i>:'e ·~ from :l.nJJttl: }
{ upda1::!.ng I next:char,

valu
{ !IS~ng }
length
{ rettll:ning }

4,3
~iii
415

""""'-

i:

r1.·
ff
~·
,·"·

st:ring;
integer )

keysymbol;

inte~eifl

keyvaln: key;

·-··

I
481
482
483
484
485
486
487
488
489
490
491
492

hit: boolean;

547_
548'

idtype· ~·= othersyni;
,··

5s4

..

493
for i : = 1 to length do
--keyvalu [i]. := valu[iJ;

495
496
498
499

500
501
502
503
504

5~4

s·aa

572

si:J

574
name := dthersym
~;

{ getnumber }

var·name
v a r valu'
var length

585
charinfo;
keysymbol;
string;
: integer
)j

var currchar,
·-.next char

: charinfo;
keysymbol;
string;
: integer
);

586
587 begin { getcharliteral
581!
589
while nextchar.name
590
begin

I-'
<.D
=:;

'-.J

quote do

co

59,l

of }
valu,'
using } length);

539
if name 'in
540
then 541
542 '-'·
case

r~turning}

5iili
~

storenextchai( { from input }
{ updat1.ng· } length,
currchar,
nex.tchar,
valu
);
in

name := idtype(

from ·input
.updating }

583

while nextchar.name in [ letter, digit

538

procedure get'charliteral(

582

begin { getidentifier }

528 '·
529
530 "
531
532
533
534
535

546

57a
571

580
581

currchar,
'n~tchar
returning } var name
Var valu
var length

521
522
523
524

544
545

storenextchar( { from inpu~ }
.{ updating } length,
currchar,
nextchar,
in
valu
);

5-79

515
516 end; ·{ ici.typ-e·} ·
517
518
519 .. procedure getidentifier( { from input
520
{ updating }

543

while nextchar.name = digit .4Q.

ss'9

577

513

536.
537

begin { ge tnumb'er }

578

514

525
526
527

5.e.i
,• 56$'

575
576

if hit
then
---:t°tlty'pe : = this key

512

var length

: charinfo;
keysymbol;
string;
: integer
);

565

while not(hit or (thiskey = succ(untilsym))) do
~ keyva:J.u =keyword [thiskey]
then
~it:= true
else
--thiskey := succ(thiskey);

507
508
509
510
511

Var valu

.'iG~

If ...

505

from input }
updating } .YeE., currchar,
nextchar
returning } var name

!l'G3

• thiskey :=·progsym;
hit
:= false;

506

end { case
end; { getidentifier,.}

5'61

for i := length+l !£ maxk.eylength .!!£
keyvalu [il : = space;

497

c.asev~rsym;

recordseen := false

. ,en4sym

555
556
551 procedure getnumber(
558
5·59·
560'

if length <= maxkeylength
then
begin

494

name : =

55(!
551
~S:!;
553

begin {' id type }

.

~

!f!j:g

thiskey: keysymbol;

'.recordsym, ·casesym, endsym ]
nc=µq.e . ~f

5.92
593
594
595
596
597
598

59~

600

601
602
603

604

storenextchar(

from input
updating }· :Length,
currchar,
nextchar,
{ in }
valu
);

~·~(nextchar.name

Storenextchar(

in [ quote, endofline, filemark ]) do

from input
updating } length,
currchar,
nextchar,
in
valu
);

605

606
607
608
609

r.ecotdsym

recordseen := true;

olO

casesYJD:

if r'ec.Otds een

612

611

if D.extchB.r.name .,,;·quote
then
--.-storenextchar( { from input }
. { updating } length,
currchar,
nextchar,

in
valu
613
614
615
616
617
name := othersym
618
619
620 end; { getcharliteral
621
622
623 ~ chartype(
of }
currchar,
charinfo )
nextchar
624
retm:ning
: keysymbol;
625
626
627 yg_
628
nexttwochars: specialchar;
629
hit: boolean;
630
631
632
thischar: keysymbol;
633
634
635 begin { cha);"type }
636
637
nexttwochars [1] := currchar.valu;
638
nexttwochars (2] := nextchar.valu;
639
640
thischar : = becomes;
641
hit
:""' false;
642
643
while not(hit ~ (thischar = closecomment)) do
644
if nexttwochars = dblchar [thischar]
then
645
--h-it := true
646647
else
--thischar := succ{thischar);
648
649

650

651
652

if not hit
- then
begin

653
654
655

this char : = semicolon;

656

while not(hit or (pred(thischar) = period))
if -;;urrchar:Valu = sglchar [thischar]

657

~

659

hit t=· true
else
--t-hischar := succ(thischar)

660
661
662
663

~

666
669
670
6.71

678

706
707
708

709
710
711
712
713
714
715
716
717
718
719
720

procedure getnextsymbol( { from input }
{ updating } J@E. currchar,
nextchar
{ returning } var name
v.ar valu
.Y!.E length\

:z

rn

: charinfo;
keysymbol;
string;
: integer
);

~

n

rn

nextchar.name of

letter

722

: getidentifier(

from input }
updating } currchar,
nextchar,
{ returning } name,

valu,
length

~~

);

getnumber( { from input
{ updating }

currchar,
nextchax,.
{ returning } ·name,
· valu,
length
);

quote

n.1
732
733

getcharliteral( { from input }
.
{ updating } currchar,.
nextchar,
returning ·} name,

valu,

734
735

736
737

end; { chartype }

138

procedure getspecialchar( { from input· }
{ updating } .Y!!1:: <>1lrrchar,
·
.' ·
p.ex ti!har
{ returrul.ng } var naine
_:::-~r valu

digit

7~Jl

740'
741
: charinfo;
keysymbol;
: stri!'g;

742

143

744

length
otherchai

t:::1

rn

begin { getnextsymbol }

727
728

672
673
&74
675
676
.677

704
705

723

if hit
then
--chartype := thischar
else
--chartype :.= othersym

);

703

724
725
726

664

667
668

integer

721

658

665

679
~length
680
681 begin { getspecialchar }
682
683
storenextchar(
from input
updating } length,
684
685
currchar,
686
nextchar,
687
{ in }
valu
);
688
689
name := chartype( { of
currcl:)ar,
690
nextc.har ) ;
691
692
if name in dblchars
then 693
694
695
storenextchar( { from input
{ updating } length,
696
697
currchax,
698
nextchar,
in
valu
)
699
700
701 ~ { getspecialchar }
702

);

begin
getspecialchar( '), f:i;,im input )
{ updating } currchar,

nextc.har,
{. r.et\1TJ:l:i,pg } n,;>1111'.,
· valu,
length

);

=

745

if name
opencomment
-then
·
--g"tcomment( { from':tupifii ·}
c· ',.,,
{ updating } curri:;h;tr, ·''

746

747
748
749

"'

150

751
752

,.

753

neXJ:i!hiti!1 ·

I. ·''•·'

.,.

;·.··

name,.
v!!l.u,
length

.,.-.

754
755

756
757
758
759
760
761

fileinark
~

: name f,,; endoffile

{ case'r'

i

{ updating } va±· ftextsym
764
765
{ returning } .Y!!E .t!urrsym ·
766
767 .Y!!E
768
dummy: symbalinfo;
769
770
771 begin { getsymbol

symbolinfo;
symbolinfo ) ;

dummy

774

775

currsym :=~nex:tsym;
nextsym := dummy

776
777

~ nexts§m" .4Q.

778
779
780
781
782
783
784
785
786
787
788
789
790

skipsp!lces(

nex.tchar,

797

798
799
800
801
802
803
804
805
806
807
808
809
810

currchar,

nextchar,
·{ returning } name,

792
793

795
796

);

length := O;

791
794

currchar,

if currsym....... name = .·opencOmment
then
--getccimment(' from·input
updating }

valu,
length
else
--getnextsymbol( { from ·input }
{ updating } currchar,

nextchar,
returning· }1 name,

valu,
length
end { with }
end; { getsymbol }

integer;

~ keyword

8110
881

816
817
818
819

keyword table;

882

1,J•J

~

dblchars

1\M·.·
884
885
886
887
888
889
890
891

~ dblchar

·dblch;,.rtabie;

821
822
823

.!!16. sglchar

sglchartable;

-.-v:at..- recordseen

boolean;

JEl;. currch'\J; '·
· ·· nextchar

charinf'a)

3·93 ·
894
895

symbolinfo;

~9~

op tiontab le

897
l; aga

826
827
828
829
830
831
832
833

VS:'.t:' cur:rsym.,
nextsym

:Y!!!f. ppoption

89~

837
838

linelimit(output,maxint);

839

top of stack := O;
currlinepo s := O;
currmargin :;::; D;

840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871

keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword
keyword

[
[
[
[
[
[
[
[
[
[
[
[
[
[
[
[
[
[
[
[
[
[

progsym
funcsym
procsym
labelsym
canstsym
typesym
varsym
beginsym
repeatsym
recardsym
casesym
casevarsym
ofsym
forsym
whilesym
withsym
dosym
ifsym
thensym
elsesym
endsym
untilsym

905

906
907
908
909
~=

'program

:= 'function

]
]
]
]

l
]

l
]
]
]
]

'
'!= "procedure "
,.,..·'label
:==·1 "canst
:.":' 'type
:='var
:= 'begin
::::; 'repeat
:= 'record
::::; "case
:= "case
:= 'of
:= 'for
: = 'while
:= 'with
:= 'do
:= 'if
:= 'then
:= 'else.
:= 'end
'"' 'until

dblchars := [ becomes, apencomment ] ;

dbl char
dbl char

becomes
opencomment

:= ":='
:= '(*'

873
874
875

876

sglchar
sglchar
sglchar
i;;i;lchar

semicolon
colon
equals
openparen

!== ";"
. ';=

';,I'

:= '='
:= '('

sglchar [ claseparen ]
sglc:har [ period 1.'' ·;'~ ,~.

'ieg.WicL'lMll,.~, f~ii$i
,.
" . ~ : . . . • .: r:

l?,\e~C

·

910

911

912
913
914.
915
916

917
918
919
920
921
922
923
924
925
926
927
928
929
930

931
932
933
934
935
936
937

938
939
940
941
942

~

;;·:·

., ....

•. " .·. "· '

{ :f!rOjll input }
{ updating } nextchar,
{ returning } currchar ) ;

new(currsym);
x;.ew(nextsym);

get.!y~bol (

8~

gmJ ·
901
902
903
904

begin { initialize }

872
procedure initialize( { returning }

dblchrset;

820

836

begin

{ returning } spacesbefore,
crsbefore

·; ·: curJ;ntargin

vill; aurrlinepas,

1}1,l

·'fr1S

835

:=· currsym;

updating }

877
878
879

topafstaclt

834

772

773

integer;

~

',,.,?

824
825

762
763 procedure get,;ymbol( { from input }

-·

'&11
S:l2

·..· s.+,J, ·

{

~~.Qlll

inpnt }
nextsym,
{ retUi:ning } currsym ) ;

{ m>4ating }

~ ppap.;tio,;

progsym J .4Q.
~;···
:= [ blanklinebefore,
op1;io.ns:rnJ.e.a t ed
spaceaf ter J;
I
..
letermi<1a tors := []
end;
with ppoption [ :re.eordsym ] dp
begin
o.pt:;lonsseJ..~c,t.ed
:= [ indentbytab,
crafter J;
::= [];
dindentsymbols
; gti1bbJ..ete:rm.d.E.ato.rs ·== []
~

·998

wi.~h·

ppoption [ casesym l

beg;trt

· a99

options.selected

~ID00
~.~,QI

:¥002
'l/

with ppoption [ e~sesym 1 do
begin
options selected
:=
crbefore,
dindentonkeys,
dindent,
indent by tab,
crafter ];
:=
dindentsymbols
ifsym,
elsesym ];
gobble terminators := []
end·

:E:

en
~

f-'
~'1

1 do

dindentsymbols

:=

crbefore,
dindentonkeys,
dindent,
crafter ] ;
if sym,
thensym,
elsesym,
forsym,
whilesym,
withsym,
casevarsym,
colon,
equals ];

:=

t::J

rn
n

gobble terminators := []
end;

rn

1 do

""'
rn

'with ppoption [ untilsym
begin
~tionsselected

:=

.~

crbefore,
dindentonkeys,
dindent,
s paceaf ter,
gobhle~ymbols,

.cra~ter

tlin

~
with ppoption [ becomes
, Jiegin
optionsselected

l

do

"1'1
•'

Spac.ebefore,
spaceaf ter,
gobblesymbols ];
;;:; [];
d~nOls
gobble terminators := [ endsyin,
untilsym,
p::;

;:i:>.

17>

rri

"°

I-'

,
1141
1142.

1143.

1144,
11As
1146
1141,
114&
1149.
ll!iQ
1151 ·
115~

1153.
1154
1155"

1156

1157
115a
1159
1160
1161
1162
1163
1164.
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182.
1183
1184.
1185
1186
1187.
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206

I

1,

r·'

1207
1208
1209
1210
with ppaption [ opencomment ] do
1211
1212
bel?;i!! ~ .
1213
optionsselea~ed
:=· [ crsuppress l;
dindentsymbols
:~ [] ;
1214
1215
gobbleterminators := []
1216
1217
1218
with ppoption [ closecomment ] do
1219
begin
122.0
optionsselected
:= [ crsuppress ];
1221
dindentsymbols
:= [];
1222
gobhleterminabors := []
1223
end;
1224
with ppoption [ semicolon ] ~
1225
begin
1226
options selected
:=
crs uppres s,
1227
dindentonkeys,
1228
crafter ] ;
1229
dindentsymbols
:=
ifsym,
1230
thensym,
1231
elsesym,
1232
forsym,
1233
whilesym,
1234
withsym,
1235
colon,
1236
equals ];
1237
gobbletertninators. := []
1238
,
end·
1239
1240
1241
~ ppoption [ colon
do
1242
begin
1243
:= [ spaceafter,
options selected
1244
indenttoclp J;
1245
dindentsymbols
[];
1246
gobble terminators := []
1247
end·,
1248
1249
with ppoption [ equals 1 do
1250
begin
1251
options selected
:=
spacebefore,
1252
spaceafter,
1253
indenttoclp ];
1254
dindentsymbols
:= [];
1255
gobbleterminators := []
,
1256
end•
1257
1258
with ppop tion [ openparen ] do
1259
begin
optionsselected
:= [ gobblesymbols ]; 1260
dindentsymbols
:= [];
1261
1262
gobbleterminators := [ closeparen
1263
end;
1264
with ppoption [ closeparen ] ~
1265
1266
begin
1267
optionsselected
:= [];
1268
dindentsymbols
:= [];
1269
gobbleterminators := []
end;
·
1270
1271
1272
~ .i:i:option. [ period ] ~
elsesytn,

__,

~.emicolon

end·

__

__
__

:~

begin

,-:--- -

else
1273
--b-egin
,
1274
--:-riidentsynlhol '" o.thersym;
1275
prevmargin
:= 0
1276
1277
~;
~
1278
with ppoption [. endoffile ] ~
1279 ~ { popstack }
begin
1280
options selected
:= [];
1281
dindentsyn1bols
:= [] J
keysymbol;
1282 proc.edure pushstack( { using ~ indentsymbol
gobbletermimi.t:"ors := []
: integer
);
prevmargin
1283
~;·
1284
1285 begin { pushstack }
with ppoption [ othersym ] do
1286
begin
top := top+ l;
1287
optionsseleated · := [ J;
1288
dindentsylitbols
:= [ J;
stack[top].indentsymbol := indentsymbol;
1289
gobbleterminators := []
s.tack[ top] .prevmargin
:= prevmargin
1290
end
1291
1292 end; { pushstack }
1293
1294
end; { initialize
integer;
using }
numberofcrs
1295 procedure writecrs(
integer
updating
var currlinepos
1296
);
writing to output }
1297
function stackempty { returning ]
boolean;
1298
1299
begin { s tackemp ty
i: integer;
1300
1301
if top = 0
then
1302
--s·tackempty ;= true
1303 begin { wri tecrs }
1304
else
--stackempty := false
1305
if numberofcrs > 0
then
1306
end; { s tackemp ty }
begin
1307
1308
for i := 1 to numbero.fcrs do
1309
--writeln(output);
function stackfull { returning }
boolean;
1310
1311
begin { stack.full }
currlinepos := 0
1312
1313
if top = maxstacksize
1314
then
1315
--stackfull := true
1316 end; { writecrs
else
1317
--stackfull := false
1318
symbolinfo
updating }
var currsym
1319 procedure inserter(
~
stack.full }
);
writing to output }
1320
1321
1322
keysymbol; 1323
procedure popstack( { returning } var indentsymbol
l •
once
'
: integer); 1324
var prevmargin
1325
begin { popstack }
1326 begin { inserter }
1327
if not stackempty
if currsym"". crsbefore
0
1328
-then
then
1329
begin
begin
·u
1330
;J:>
1331
indent symbol := stack[ top] .indentsymbol;
updating }
currlinepos
writecrs( once,
1332
Gl
prevmargin
:= stack[ top] .prevmargin;
writing to output }
);
fTl
1333
1334
.J::o
top := top 1335
c.urrsym"' .spacesbefore := 0
N
1336
1337
1338
~tiimst\i1i.cted
:= [ crsuppr!lss ] ;
dindentsyntbols
:= [ l J
gobbleteoninators := []

1339
1340
1341
1342
1343
134L1
1345
1346
1347
13L18
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
137 5
1376
1377
1378
1379
1380
1381
138'2
1383
1384
1385
1386
1387
1388
1389
1390
. 1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
!404.

i~

end; { inserter }

procedure insertblankline( { updating }
var currs~n
{ writing to output }

symbolinfo
);

canst

l;
2;

once
twice

begin { insertblankline }

if currsym'"'. crsbefore
then
----il"egin

0

if currlinepos = 0
then
-wTitecrs( once, { updating }
currlinepos
{ writing to output }
else
updating
currlinepos
-----Writecrs( twice,
writing to output }
);
currsym'"'. spacesbefore :=

else
- - i f currsym". crsbefore = 1
then
--Yf currlinepos > 0
then
--writecrs( once, { updating
currlinepos
{ writing to output }

end; { ins ertblankline }
procedure lshifton( { using } dindentsymbols
~

keysymset );

indentsymbol: key symbol;
prevmargin
integer;

begin { lshifton }

if not ·s tackemp ty
then
begin

popstack( { returning } indentsymbol,
prevmargin
if indentsymbol in dindentsymbols
- . then
--curnnargin :·= prevmargin
until not(indentsymbol in dindentsymbols)
- - or (stackempty);i f not(indcmtsymbol in dindentsymbcils)

);

1405
1406
1407
1408
1409.
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
ll130
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
.1446
1447
1448
1449
1°450
1451
1452
1453
"145'•
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
14'6'5
1'4fr6
1467
1468
1469
1470

then
--pushstack(

using

indentsymbol,
prevmargin

end
end;

lshifton

=
rn

procedure ls hif t;

c:E:
(/)

~

·indentsymbol: keysymbol;
prevmargin
integer;

begin { lshift }
if~

stackempty
- then
begin
popstack( { returning } indentsymbol,
prevma rgin
currmargin := prevmargin
end

);

end; { lshif t

procedure insertspace(

symbolinfo

using
var symbol
writing to output }

);

if currlinepos
-

~axlinesize

then
begin

write(output, space);

currlinepos :=_currlinepos + 1;
with symbol" do

----r£ ·(crsbefore ~
-

0) and (spacesbefore

> 0)

then

--spacesbefore := spacesbefore -

end
en'd; { insertspace

procedure movelinepos(

to }
newlinepos
from ) var currlinepos
wi;itingt";;' output }

var
i: integer;

begin { movelinepos }

for i =.= currlinepos+l to newlinepos do
--write(output, space);
currlinep_os := newlinepo.s,

t:::J

rn
n
rn

begin { ins ertspace

integer;
integer
);

1471
1472 endi i{ movelinepos }
1473
1474
1475 procedu:te printsymbol( {' in }
'dtll:rsym ·
syti(]loJ:infa;
1476
integer
{ updating
var currlinepos
{ writ.ing to 011tpttt }·
: ·
1477
);
lli78
lli79 var
1480 --i: integer;
1481
lli82
1483 begin { printsymbol
11184
with currsym"" do
1485
begin
1486
lli87
1488
for i ;~ 1 to le1tgth do
--write( output, valu[i]);
1489
1490
1491
startpos := currlinepos; { save start pas for tab purposes }
1492
currlinepos := currlinepos + length
1493
lli91i
end { with }
11195
1496 end;
pr:i.ntsymbol
1497
1498
in
currsym .
1499 procedure ppsymbol(
symbol:i.nfo
1500
writing to output }
);
150.1
1502 canst
1503
once
l;
1504
1505 ~
1506
newlinepos: integer;
1507
1508
1509 begin { ppsymbal J
1510
with currsym"' do
1511
begin
1512
1513
writecrs(
1514
using }
crsbefore.,
1515
updati~g
currlinepos
1516
writing ta output J
);
1517
1518
if (currlinepos + spacesbefore > currmargin)
1519
or (name in [ opencomment, closecomment ] )
then
1520
1521
--n-ewlinepos := currlinepos + spacesbefore
1522.
else
--newlinepos := currmargin;
1523
1524
1525
if newlinepos + length > maxlinesize
then
1526
--------i;-egin
1527
1528
writecrs( once,
1529
updating }
currlinepos
1530
writing to output}
);
1531
1532
if currmargin + length <= maxlinesize
then
1533
153!1
--newlinepos := currmargin
1535
else
g length < maxlinesize
1536

l

15~7

t:lten

~ewlinepos :~ maxlinesize - length

H5f·

'else

~~wlineJiOS '"' 0

dlltt

i§~~

i5tr'i!

15:~4i

rnovelinepos(

to }
newlinepos,
f:x:om
currlinepos
in output}
);

printsymbal(

in }
currsym,
npdating )
currlinepos
writing to outpn.t F

lStJS

lSAG

15~7'
154'Jl'.
1549

155:0'

(<<<;)'

1551
1552:
1553
15$4
1555
155',h
1557
1558
1559

1560

~

{with}

end; { ppsyntbal }
procedure rshifttoclp( {using} currsym
forwar

1599

.( if extra indentation was used, update margin..
if s tartpos > ·currmargi n
then
·
--curnnargin : = s tartpos;

1600
1601
1602

i f curnna.rgin
then

< slofaill

G)

rn

1603
·1604
1605
l:.6.0.6
1607
16.08
;l60.9
1610
1611
1612
1613
1614
1615
1616
1617
1618
16:1.9
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
163.l
1632
1633
1634
1635
1636
1637
1638
1639
1640

currmargin := currmargin
e1'5e;

+

indentl

--:1.f currmargin < sil.ofail2
then
--currmargin :=: currmargin

+

indent2

end; [ rshift }

procedure rshiftto"alp;

begin { rshifttoclp
i f not stackfull

-then

--pushstack( ( using } currsym,
curnnargin);
currmargin := currlinepos
end; ( rshifttoclp }
begin { prettyprint }

initialize(

top,
currlinepos,
atrrrmargin, keyword,
dblchars,
sglchar,
rec<;>r

endoff;i.le) ~

getsymbol( ( from input }
( updating } nextsym,
(; returning ), currsym

);

l6L1l

1642
1643
1644
1645
1646
.1.6,Li]
10:48
11'649

with ppoptoion ,[currs.ym" .named do
----il'egin
;i.t (c:cpending and ~(crsuppress in optionsselected))

or {crbefore in optionsselected)

tJren·

. 1~'152
1'~4

if hla'nll:.!linebefo'.i:e.~ 6'J>tfonsselected
· then
·
--begin
-----rn:sertblankline( { using }
currsym
( writing to output } ) ;
crpending := false

leS'5
1656

1·&57
'l1"i8'
1659
1660
11((1".61

end;

1~

:i;f dii.ntl'eno0:nkey.s ;i.)i. optfuml1n:elecl:led
-'thJm• ; ..
"•:"'"'
--lshif tan(dinden.tsymbals);

',Q\6'.63

''.c'667

.1Ms•

1\

'"

,i.l]. 'ii)l.~l'.6hs'se~·e'ctj:d
' .......,, ,.
'·' "'

~···.

\

. "'J''.tf1

:i.\I! \1:t1rMl!t

~l!l\llh

J\1:(l.~gh~'.ft;

);
t::::I
[Tl

n
[Tl

:::;;::
b:1
[Tl

;,o
\--'
LD

'--.!

PASCAL PROGRAM FORMATTER

s - 4 Format

- J4i.ch!l.e.1 ;Ii. Condie t
- Jl.ick, L,·. Jjarcus

end;

:·H!i2

(/)

00

r );

1•65'0

1664
. 1(6cG;'?
'16'11'6

-

begin
inserter( { u·sing )
currsy1n
( writing to· output
crpentling := false

1651

1669
167.0
if spacebefoi:e iu aptio.nss<\l,ected
1671
th eh
1672
--insertspace( ( using }
currsym
1673
{ writing to output
);
1674
1675
ppsymbol(
in
currsym
1676
writing to output }
);
1677
1678
if spaceafter in optionsselected
1679
then
1680
-----rns ertspace( ( using }
nextsym
1681
( writing to output }
);
1682
1683
if indent by tab in op tionsselected
1684
then
1685
--rshife( ( using } currsym' .name ) ;
1686
1687
if indenttoclp in optionsselected
then
1688
1689
--rshifttoclp( ( using } currsym" .name ) ;
1690
1691
if gobblesymbols in optionsselected
1692
then
1693
--gobble(
symbols from input }
1694
up to }
gobbleterminators,
1695
updating }
currsym,
1696
nextsym
1697
writing to output }
1698
1699
±f crafter in optionsselected
1700
then
1701
--crpending := true
1702
1703
~ ( wil:h}
1704
1705
~; {while
17.06.
1707
if c rp ending
,___ then
1708
1709
--writeln(output)
1710
1711 ~-

''

f'

'

"

. ._;.

-

!nci~;Le pret~YJ!n=4tter ,fQ':C .~ascal pro.grams..
I t takes as input a
syntactic<;illy--ao:i:rec't ].£!-seal· pro~am g:p.d p;r:otlttees as ·<:>utput an equivalent but reforroatted
Pascal p:COgJ1.C!Int"•.·. The lte®lt;imrg. ,progo,jath --Gons·:ts·ts e·f llhe: s·am:e .~1evque.nae:: i O'f p.a:sa.al ·sylli'.bol.-Ei ' i j
and c.omm~14tm; b~ 1!:; they, ·.a!I:~:.'J4ea:i;:r;gmge0. ..wtUth ;uesp~q~.· ~J:!') line b:Pnnt:la:ti!:!g. ~rtd · t?g1ttnitts for $
:ceadabilizy.
!J1
I

~.

'

'

>

ffi

. , . {olil\lat lil)i.:i.'1:ta,;!,ne ,.,-l}Ri;isiS.tt!nt,,. S,Da.@:Lng ,,., b'i'W·€'1'n ,.rsi'.flilbols., breaks aontrol aud data ; '
sth:-uc&tf..e.s ontb n~w lines if ne.c_essa.ry, incle.nt:s lines to refle.~t the syntactic le\1'el o:f 4=:
s t:at.etnent~~ g.n,d·· :d~c;lalrg~ii.J;>J.lq,,;i, l:~:Q..c'(. ·... mol:'e-.
Miscellaneous features su..oh as su.pplying t{1
line~numbe:i;9 ''>1)d,. l)Uj:q@atii; .q;\"lJ/l~n~S; . q,r d1?:I..,tiIess·a,:y blanks to save space,·
are de$
B+ will place as many statements or declarations onto one line as will fit :X::-

within the specified write
constraints.
Bunching (B+)

values are typical.

margins (W directive) subject to readability r
when the display is off (D-) has no effect. In ::z

general, B+ saves paper and prevents your program from becoming overly stretched rn
in the vertical direction. See example below.
::e:::
Default: B- (one statement or statement part per line).
cn

How To Use Format

c+ or C- Fully Compress program.
The use of Format will vary from implementation to implementation, but will

c+ removes all non-essential blanks, end-of-lines, and comments
program. A compilable, packed program will be written within the
write margins (W directive). The number of spaces specified by the G
will still be written between symbols. c+ might save some space on

involve

one major input file containing a Pascal program and one output file for the reformatted
program. Additionally it may be possible to supply the initial values of directives to
Format when it begins execution.
Directives to Format may always be specified in the program itself inside comments
with a special syntax. Thus the first line of a program is an ideal spot for a comment
containing directives.
Subsequent use of embedded directives allows you to change the

kind of formatting for different sections of your program.
comments is given below (The syntax is given using

11

The syntax of

these

special

EBNF 11 --Extended Backus-Naur Form--see

storage

DirectiveGomment =

(*" DirectiveList "*)

DirectiveList

= "[ 11

Directive { 11 ,

11

Directive}

11 ] 11

11 *) 11 •

CommentText.

Default:
E=n

uA"
11111

Setting

I
I

"Bu
11111

Switch
n+n

Switch

=11

Value

11

Range

''=11

I

I

11_11

I
I

I

"cu

I

llNll

Value

I

uD11

I .. E"

uF"

llpll

llRll

11311

I

llGll

11w11.

I

The E directive generates comments after 11 END 11 symbols if none are already
there.
Common Pascal coding styles frequently employ these comments. E=l
creates comments after the "END 11 symbol in compound statements which are within
structured statements, as well as those constituting procedure and function

I

llHll

bodies.

=

Unsignedinteger.

F+ or FUnsignedinteger [ 11 <11

I

F
11

>11 ] .

or

n
rn

(*ProcedureName*l· ::;:
;;o

copy the input program directly with no changes.

F- causes Format to

Therefore by

switching

F

on

tD

"l

and off with directives which are appropriately placed in your program, you can OO
preserve text which is already properly formatted (such as comments).
11 ] 11

F+ (of course!).

or close-comment}.

Note: As defined above, a Directive may be within a comment specifying a Pascal
GompilerOptionList.
On most implementations this is a 11 $11 followed by a series of
letters and values ( 11 + 11 , 11 - 11 , or digits), separated by commas. See your local manual.

G=n

(*[A=lS, E=3, N=l,1<]*) - good for publication quality.
(*[G=O, W=l-100, C+]*) - good for compact storage.
(*$U+ [R=l-72, I=2J*) - an example of a DirectiveList with a
Compilero.p tionLis t.
Directives to Format

Align declarations.
The A directive forCes the alignment of 11 : 11 and 11 = 11 in declarations.
If A is
set to a value greater than 0, then n should be equal to the max;t.mum identifier

Specify symbol Gap.
The G directive determines the number of spaces placed between Pascal symbols
during formatting.
G=O still places one space between two identifiers and

reserved words.
Default: G=l.

Examples of DirectiveComments:

A=n

(*StatementPart*)

Turn Formatting on or off.
allows you to format selected portions of your program.

Default:
{Any character except

form:

E=2. See example below.
Default: E=2.

•

Unsignedinteger = Digit{Dtgit}.
GommentText

The comments take the

t:::I

rn

E=2 creates comments after the 11 BEGIN 11 and 11 END 11 symbols constituting procedure t:d
and function bodies only. E=O creates no comments at all. E=3 means E=l and rn

Range.

Uns~gnedinteger

D+.

Supply END comments.

Directive = Letter Setting.
Letter

disk; you might store a program in compressed form and

placed in your program. D is perhaps useful to obtain program fragments for
publication (such as one or more procedures) without having to print the who~e
program.

(*$" CompilerOptionList CommentText DirectiveList

11

as

D+ or D- Turn Display on or off.
D allows you to selectively display portions of your program during formatting.
Therefore, D must be switched on and off with directives which are appropriately

I

11

such

\J-1

expand it later by reformatting with C-.
Default: c-.

Communications ACM, November, 1977, page 822.):
11

media

from your 1--l

specified
directive
long-term

I=n

The symbols [ ] ( ) , and : are handled independently of G.

Specify Indent tab.
I indents each nesting level of statements and declarations a given number of
columns.
Using I=2 or I=l helps prevent excessively-narrow lines within the
specified write margins (W directive) where there are heavily-nested constructs.

Default:
L=n

I=3.

Specify Line-wraparound indent tab.
Gl
L determines the indentation of the remainder of statements or declarations rn
which are too long to fit on one line.

Default:
N=-x-y< or N=x-y>

L=3.
Generate line-numbers on the left or right.

The N directive indicates the starting line-number (x) and the increment (y) for

eac.h suc.c.e·eding. line-number. If y > 0 then line-numbers are written outside the
specified write margins for the formatted program in sequential order starting
at x; y· = o, shuts off line-numbering. "<" writes up to 4-digit, right-justified
line-rmmbers together with a trailing space to the left of each line.
">"
writes Ii-digit, zero-filled line-numbers to the right of each line.
Use the N
directive along with the W directive.
Default: N=0-0> (no line-numbers).

YES, NO, MAYBE: BOOLEAN;
BEGIN
END (*SAMPLE*) •
Here i~ the output from Format having added a line with the A.=5 directive:
(* [A=5J ALIGN DECLARATIONS·
PROGRAM SAMPLE(OUTPUT);

Spec.ify apac.ing between Procedure and func.tion dec.larations.
The P directive determines the number of blank lines to be plac.ed between
pro~edure
and function declarations.
n>2 makes proc.edures and func.tions
visually s tand out.
Default: P=2·

P=n

R=x-y

S=n

CONST
A= 6;
ABC = 'LETTERS';
THREE = 3;

Specify Read margins.
The R direc.tive indic.ates whic.h columns are signific.ant when Format reads from
inpu!: lid.le.
R allows Format to accept files which have line-numbers in the
first (x-1) columns or after the yth column.
Default: R=l-999 (large enough to read to end-of-line in most cases).

TYPE
RANGE
l .• 6;
COLOUR = (RED, BLUE);

VAR

Specify Statement separation.
The S direc.tive determines the number of spaces between statements bunched on
the same line by the use of the B+ directive. Note that this directive is only
in effect if B+ is used.
Default: S=3.

W=x-y

*)

I,
I2,
133,
I444,
15555: RANGE;
YES,
NO,
MAYBE: BOOLEAN;

Specify Writ f' margins •
The W dire.ctive indicates which columns are used for writing the reformatted
progra,;, ~n the output file.
Any line-numbers generated (N directive) are
written ol.itsi.de these margins.
Default: W=l-72.

BEGIN
END (*SAMPLE*).

t:::l

rn

The B Directive

n

Examples

rn
If the. input to Format is:

The A Directive

Here is a ·sample program fragment before using Format:

·l'ROGRAM .$AMPLE(OUTPUT) ;
CONST A=6; :ABG=<'LE:I:'.l?ERs'; TllREE=3;
TYPE RANGE=i. , 6;
COL06'B.= (Rfill , BL'il1;l) ;
VA'J)
,.,. ..
I, I2;Ill3, I444, I55l!li :RANGE;
YES,NO;MAYBE:B00LEAN;
.
llEGlN END.
Here is the output llrtim: Fermat with all defaults set:

""'·'

l'ROGRAM SAMPLE(OUTI'UT);
1. . . .

CONB:C
A= 6;
·,;'".~@'d=·

'liEIJ!ICERS';

·•'II:UREEO'!' ll;
U!YP.E1 ·~,, t ; ~ ,,,.
.. ~·'·.·r
RANGE = l •• 6;
~·'II' CO:i.mtR

=

(REtJ·;·>B~;

VA.Ro, ,,
I,

~:

,. , . ,,.

2 .i·'"·'
I33, 1444, 15555: RANGE;

b:I

I'll.OGRAM T(OUTPUT);
CONST INCREMENT= 5;
VAJi I,J,N:INTEGER;
BEGIN
1'!:=0;
J:~3; I:=SQR(N); N:=N+INCREMENT;
IF N>73 THEN BEGIN DOTl!IS; DOTl!AT END. ;
IF N>5 THEN IF J>6 THEN DOSOMETl!INGELSE;
END.
then

th~

output

fro~.Format

l'l,l.OGRAM T(OUTI'UT);
CONST
INdlmMENT = 5;

VAR
I, J, N: INTEGER;

(using the default, B-) is:

rn
;;o

W>; .• .' ~: '

·H ·:···

.. ,. ,!Ji' N > 5 TllEN'
:tlf J >
WllEN

, < ;..

\Viki.·

E*);
'X') AND li'L!Gl DO

a

~:l!i0Sl'llim1illl!Jll!GEL~E;

END :;C~~,..

.

and th!!..'·Gll:t:put fr~ng continually emptied from the buffer as· new ones a:i:e added.

VAR

I, J, · N~ · INT!l@ER~
Rlmlill

'N"~=·'~?

•: if."""· Sit'

I := SQR(N);

. '1lr'N :;:\;. Vll . '.llREN l!EGJ:N DO'.CllIS;
(*ell-] UNllID!CR, *l
. :ttfi!:N ii-1.'\ll'.'i?Ml!I

N := N + INCREMEN.t;
DOTHAT END;

"J!lf J .. :;. ..5. ·TRJ!N
• •DOSOlilEt!UN~EMlEl
END .(tt*l•
.·•

:11he E Dire.et:!.ve

.Ji'"j"J!ll!.t lu;i11 il~ted. \'l:'.l:O:it-i:acovf!.i;y . ff!cilities, and no :i:esults are guaranteed if a
syotaatically-incorrect program is supplied as input •

The.. lfane of most Pas.ca1 p:i:etl:YJlrinters
considers·
like:

is the treatment of comments.
lfo:i:mat
J:ii.!'m· ..:1.n · the conl:e:>i:t of a. ~.11-clai:ation or statement. Therefore using comments

CGNST. LS=6 (*LINESIZE*);
is a good :i.dea becAUs~

Similar~~·,

Suppose that a Pascal program fragment looked like:
PROCEDURE SAMPLE;
PROCEDURE .INNER
BEGIN END;
BEGIN
IF X=3 THEN·.
BiEGIN X'=l; I;=J:+l
END
0
;

REGI!l

'Z' < CH <= ' '

carry

the

comment

along

with

the

declaration.

*)

t!:I

is also pkay.

rn

Stand-alone comments how.ever, receive rough treatment from Format. The first line
of such comments are always left-justified and placed on a separate line.
See the F
directive.. Thus:

rn

n

CONST

ELSJl..

l!JlGIN X:=X+I; I:=O
END;
WHILE (CR<>'X') AND li'LAGl DO
BEGIN I:=I+3; INNER END; END;

\*

1"01=JI1at will
· '

LS=6; (*LINESIZE*)

will be reformatted as:

I-'
lD

CONST
LS = 6;.
(*LINESIZE*)

then using lfo:i:mat with E~3 produces:·

'-!

co

Proper treatment of comments is certainly an area of future development for Format.

PROCEDURE SAMPLE;

Format issues the following error messages:

PROCEDIJ.&Ei .INNER;
ll!EGIN
END .(*INNER*);
BEGIN (*SAMPLE*)
IF X"' 3
THEN
BEGIN

x '"'

l;
I '"'I+ 1
.END (l'e fin'll period.
*** s'.l?R.ING Too.LONG."
Your program·· contains a· character s'tring (including both the quotes) which is wider
than the .speciJ;ied. w:dte margins (W directive).

3:.

11

4.

" *** NO PROGRAM rotlNll TO FORMAT."
The input file. given tq lfoi;mat is empty.

llEG:tN

'x

:=

x +I;

I ""' 0

History

Format was originally written in 1975 by Michael Condict as a class project in a
Pascal programming course taught by Richard Cichelli at Lehigh University using CDC-6000
Pascal. A£ter that, making improvements and adding directives became, temporarily, an
obsession with the author (note limited usefulness of the D directive). Fortunately, the
program eventually stabilized and is now in general use by Pascal programmers at Lehigh
University and other institutions.
After graduation the author transported Format in
1977 to a PDP-11 running under the Swedish Pascal compiler and RSX-11 with a total effort
of 2 days.
Assistance in bringing up Format may be obtained by writing to Michael Condict at
Pattern Analysis and Recognition Corporation, 228 Liberty Plaza, Rome, NY 13440.
Format
has been made as portable as possible, but portable programs are hampered by non-standard
character sets and non-standard techniques for associating program objects (e.g.
file
variables) with operating system objects (e.g. files as mass-storage devices).
The PDP-11 version of Format uses a procedure:
11 ConnectFileVarsToExtFiles 11
which serves a function similar to standard Pascal program headers for external files.
This version accepts initial values for directives after it types a prompt for you at
your interactive terminal.

a

11

On the other hand, the CDC-6000 version accepts initial values for directives after
on the operating system control statement which executes Format.

/1 1

Format was modified for inclusion with Release
of CDC-6000 Pascal by Rick
L· Marcus and Andy Mickel, University Computer Center, University of Minnesota, in
November, 1978.

{ [A=20,B+,R=l-l00,I=2,S=2J FOR.MATTER DIRECTIVES. }

2
3
4
5
6

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

{

*************************************************************

**
*
*
*

PASCAL

PROGRAM

FORMATTER

**
*

AUTHOR: MICHAEL N. CONDICT, 1975.
LEHIGH UNIVERSITY
CURRENT ADDRESS : PAR CORP.
228 LIBERTY PLKZA
ROME, NY 13440

*

*
*
*
*
*
*
*
*
*
UPDATED: AUGUST, 1978.
*
*
*
*
**************************************************""**********

*

*

program Format(Input, Output);

13;
~

AlfaLeng = 10;
! ! ! ! ! ! ! ! IMPLEMENTATION DEPENDENCY: ! ! ! ! ! ! ! !
MINIMUM AND MAXIMUM Char VALUES. }
MinChar = O;
MaxChar = 127;
LastPascSymbol = 29;
THE FOLLOWING CONSTANTS MUST ALL BE CHANGED TOGETHER, SO THAT THEIR
VALUES AGREE WITH THEIR NAMES:
BufferSize = 160;

34
BuffSzPl = 161;
35
BuffSzMl = 159;
36
BuffSzDivlO = 16;
37
38
MaxReadRightCol = 999;
39
MaxWriteRightCol = 72;
40
41 ~
42
Alfa = packed array [l .. AlfaLeng] of Char;
43
! ! !.! ! ! ! ! IMPLEMENTATION DEPENDENCY: ! ! ! ! ! ! ! ! }
44
SET SIZE MAY NOT ALLOW SET OF Char. }
45
CharSet = set of Char;
46
StatmntTypes = (ForWithWhileStatement, RepeatStatement,
47
IfStatement, CaseStatement, CompoundStatement,
48
OtherStatement);
49
Symbols
(ProgSymbol, Comment, BeginSymbol, EndSymbol,
50
Semicolon, Cons tSymbol, TypeSymbol,
51
RecordSymbol, ColonSymbol, EqualSymbol,
52
PeriodSymbol, Range, CaseSymbol, OtherSymbol,
53
IfSymbol, ThenSymbol, ElseSymbol, DoSymbol,
54
OfSymbol, ForSymbol, WithSymbol, WhileSymbol,
55
RepeatSymbol, UntilSymbol, Identifier,
56
VarSymbol, ProcSymbol, FuncSymbol, LeftBracket,
57
RightBracket, CommaSymbol, LabelSymbol,
58
LeftParenth, RightParenth, AlphaOperator);
59
Width = 0 •• BufferSize;
60
Margins = - 100 •• BufferSize;
61
SymbolSet =~of Symbols;
62
OptionSize = - 99 .• 99;
63
CommentText = array [l .. BuffSzDivlO] oJ; Alfa;
64
SymbolString = array [Width] of Char;
65
66
67
ChisEOL,
68
NextChisEOL: Boolean;
69
I: Integer {USED AS FOR LOOP INDEX};
70
Character: Char;
71
ReadColumn,
72
ReadRigh tCol: a .. iooo;
73
OutputCol,
74
WriteColumn,
75
LeftMargin,
76
ActualLeftMargin,
77
ReadLef tCol,
78
WriteLeftCol,
79
WriteRightCol: Margins;
80
DisplayisOn,
81
ProcNamesWanted,
82
EndCommentsWanted,
83
PackerisOff,
84
SavedBunch,
85
BunchWanted,
86
NoFormatting: Boolean;
87
LineNumber,
88
Increment: Integer;
89
Indentindex,
90
LongLineindent,
91
SymbolGap,
92
DeclarAlignment,
93
StatmtSeparation,
94
ProcSeparation: OptionSize;
95
LastSymbol,
96
SymbolName: Symbols;
97
AlphaSymbols,
98
EndLabel,
· EndConst,
2J

t:::1

rn

"

rn
3:
b:J

rn
:;o

100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165

EndType,
EndVar: SymbolSe t;
Symbol: SymbolString;
Length: Width;
SymbollsNumber,
LastProgPartWasBody: Boolean;

Digits,
LettersAndDigits: CharSet;
Oldest: Width;
CharCount: Integer { COUNT OF TOTAL CHARS READ,
BUT IS OFF BY BufferSize AFTER END OF FIRST BODY.
IT IS IMPERATIVE THAT CharCount BE MONOTONICALLY
INCREASING DURING PROCESSING OF A BODY, AND THAT IT
NEVER RETURN TO A VALUE <= Buff erSize, AFJ:ER PASSING
THAT POINT. THUS 11DoBlock 11 MAY RESET IT AS LOW AS
POSSIBLE, LIMITING THE LENGTH OF A PROCEDURE TO
11 Maxint - BufferSize 11 CHARACTERS. } ;
Main: CommentText;

MainNmLength: Width;
Blanks,
Zeroes: Alf a;

UnWritten: array [Width] & record
Ch: Char;
ChisEndLine: Boolean;
IndentAfterEOL: Margins
end·

PascalSymbol:
PascSymbolName:
NameOf:
StatementTypeOf:

array
array
array
array

[1 .• LastPascSymbol] of Alfa;
[1 .. Las tPascSymbol] of Symbols;
[Char] of Symbols;
[Symbols] of StatmntTypes;

procedure Constantsinitialization;

begin
Main[!] := 'MAIN
'; MainNmLength := 4;
Blanks := '
; Zeroes := '0000000000';
for I := 0 !£ BuffSzMl ~
with UnWritten[I] do
begin Ch := 'A' ;-ChisEnc!Line := False; IndentAfterEOL :=
end·

for Cha~acter := Chr(MinChar) to Chr(MaxChar) do
NameOf [Character] := OtherSymbol;
Character:=' ';

NameOf['('] := LeftParenth;

NameOf[')'] := RightParenth; NameOf['='l := EqualSymbol;
NameOf [','] := CommaSymbol; NameOf ['. '] := PeriodSymbol;
NameOf['['] := LeftBracket; NameOf[']'] := RightBracket;
NameOf[':'] :=.ColonSymbol; NameOf['<'l := EqualSymbol;
NameOf [ '>'] := EqualSymbol; NameOf ['; '] := Semicolon;
PascalSymbol[l] :='PROGRAM
'; Pasca1Symbol[2] :='BEGIN
PascalSymbol[3] := 'END
'; Pasca1Symbol[4] := 'CONST
Pasca1Symbol[5) := 'TYPE
'; PascalSymbol[6] := 'VAR
';'
Pasca1Symbol[7] :='RECORD
'; Pasca1Symbol[8] :='CASE
';
PascalSymbol[9] := 'IF
'; PascalSymbol[lO] := 'THEN
';
PascalSymbol [11] := 'ELSE
'; PascalSymbol [12] := 'DO
';
Pasca1Symbol[l3] := 'OF
'; PascalSymbol[l4] := 'FOR
Pasca1Symbol[15] := 'WHILE
PascalSymbol[l6] := 'WITH
,
PascalSymbol[l7] :='REPEAT
PascalSymbol[l8] :='UNTIL
';
Pasca1Symbol[l9] :='PROCEDURE'; Pasca1Symbol[20] :='FUNCTION ';
Pasca1Symbol[21] := 'LABEL
'; PascalSymbol[22] := 'IN
';
Pasca1Symbol[23] := 'MOD
'; PascalSymbol[24] := 'DIV
';
Pasca1Symbol[25] :='AND
'; PascalSymbol[26] :='OR
';
Pasca1Symbol[27] := 'NOT
'; Pasca1Symbol[28] := 'ARRAY
;
PascalSymbol[29] := 'NOSYMBOL '; PascSymbolName[l] := ProgSymbol;
PascSymbolName[2] := BeginSymbol; PascSymbolName[3] := EndSymbol;
PascSymbolName[4] := ConstSymbol; PascSymbolName[5] := TypeSymbol;

PascSymbolName[6] := VarSymbol; PascSymbolName[7] := RecordSymbol;
166
PascSymbolName[8] := CaseSymbol; PascSymbolName[9] := IfSymbol;
167
PascSymbolName[lO] := ThenSymbol; PascSymbolName[ll] := ElseSymbol;
168
PascSymbolName[l2] := DoSymbol; PascSymbo1Name[l3] := OfSymbol;
169
PascSymbolName[l4] := ForSymbol; PascSymbolName[l5] := WhileSymbol;
170
PascSymbo1Name[16] := WithSymbol;
171
PascSymbo1Name[l7]
:= RepeatSymbol;
172
PascSymbolName [18] := UntilSymbol;
173
PascSymbolName[l9] := ProcSymbol; PascSymbolName[20] := FuncSymbol;
174
PascSymbolName[21] := LabelSymbol;
175
PascSymbolName [29] := Identifier;
176
for I := 22 to 28 do PascSymbolName [I] := AlphaOperator;
177
far SymbolName := ProgSymbol !£ AlphaOperator ~
178
StatementTypeOf [SymbolName] := OtherStatement;
179
StatementTypeOf[BeginSymbol] := CompoundStatement;
180
StatementTypeOf[CaseSymbol]
:= CaseStatement;
181
StatementTypeOf [If Symbol] := IfStatement;
182
StatementTypeOf [ForSymbol] := ForWithWhileStatement;
183
StatementTypeOf [WhileSymbol] := ForWithWhileStatement;
184
StatementTypeOf [WithSymbol] := ForWithWhileStatement;
185
StatementTypeOf [RepeatSymbol] := RepeatStatement;
186
end {Cons tantsinitialization};
187
188
189
190 procedure Writ~(Character: Char);
191
192
I: Width;
193
TestNo: Integer;
194
195
begin
196
CharCount := CharCount + l; Oldest := CharCount mod BufferSize;
197
with UnWritten[Oldest] do
198
begin
199
if CharCount > BuffSzPl
200
then
201
begin
202
i f ChisEnc!Line
203
then
204
begin
205
i f IndentAf terEOL < 0
206
then
207
begin
208
Write(Blanks: - IndentAfterEOL);
209
OutputCol := OutputCol - IndentAfterEOL;
210
end
211
else
212
begin
213
if Increment < 0
214
then
215
begin
216
I := WriteRightCol - OutputCol + l;
21t
if I> O then Write(Blanks: I);
218
TestNo := LineNumber; I := 0;
219
repeat TestNo := TestNo div 10; I := I + l;
220
until
Tes tNo = O;
221
Write(Zeroes: ( 6 - I), LineNumber: I) ;
222
LineNumber := LineNumber - Increment;
223
if LineNumber > 9999
224
then LineNumber := LineNumber - 10000;
225
WriteLn;
226
end
227
else
228
begin
229
WriteLn;
230
i~ Increment > 0
231

=

rn
(./)

1--'
tD

".J
00

"U

:t>G)

rn
V1
C>

then
begin

233
234·.

298

Wri~~(Line~umber:

4, ' ');
LineNumber := LineNumber + Increment;

23~

236
237 ·.
~.,
if lndentAfterEOL > 0
.
238
then Write(Blanks: lndentAfterEOL);
239
.. 9utputGol :=.IndentAfterEOL + 1;
240.
~;.
.
24J.
242.
ChisEn.dir.l.)le := False;
end .{ii Chi..EndLiµe}
243
el;;.244.
begin Write(Gh); OutputGol := OutputGol + 1;
245
end {ELSE};
246
end {IF GharGount >- } ;
247
248 .
Gh := Gharacter-; WriteGolumn := WriteGolumn + 1;
end {WITH};
249
end {Wri teA};
250
25·1
252
253.. : pr~_cedure FlusbUnwrittenBuffer;
254.
255.: begin
256 ..
WriteA(' ');
257.
'W°:l:th Uti.Wr:!.tte-n{Oldes:t] do
begin .CbJ:sEndLine := True; IndentAfterEOL := O; end;
258
Wrib~o;I.umn := O;
for I := 0 J;.9_ BuffSzMl do WriteA(' ');
259
260
end {FlU.~hU;iJ.~;r.i.-t t.anB,uf,f er} ;
26il.
262
2S3 procedure Sta~tNewi.:Ln:eAm.dlndent;
264
265
begin
,
266,.
if Packei:l:sDff and DisplayisOn
then
~267
begin
.
.
268 .
WriteA(' .')..;.· L'ls;tSYJ!l.bol := PeriodSymbol;
269
with UnWritten.[Dlde.sJ:] do
270
be:g:iitt'.
. . .......,
21f.
,. QhlsEJJ.~ := .'Jll;-qe;..
.. :
272.
·. ·11:ndentAfterEOL := WriteLeftGol + LeftMargin - 1;
273.
·.end;
274:
·W;t:d.teCQl~mn := WriteLeftGol + LeftMargin;
27S:
·.
".ertd
{IF PackerisOff};
274
27,!,
~ {StartNewLineAndlndent};

2t,a:

21µ
21);4..
28.5
286

21:\1 ·
2~8'

~J·
2~i

2~!?\:
2~$.;

2.~4,

2~.

29,jl,
2/l~

'3os

306
307
308

. 309
310
311
·312
313
314
315
316
317
318
.. 319
320

321
~22
323
. 324
325
'3:26
. 327
328
·. 329

.~;~
332

"333
·-a34
335
336

337
338
3:'J9
340
341
,342
'343

\

~,

.............

...... .

·347
3·48
349
· 3~o

&

351
'352
·~53

~

EOF(Input)
then
begin
Gharacter .- Input ~; ReadGolumn := ReadGolumn + 1;
NextGhisEOL := EOLn(Input); Get(Input) ;. . GhlsEOL := False;
if NoForma tting then WriteA(Character); .
end
.
else begin FlushUnwrittenBuffer; goto ·13 end
end {ReadAGharacter};
procedure WriteSymbol;
t.::I

l: Width;
Numb erBlanltsToWrite: Op tionSize;

elU A;LJI
(Syinb~lName in llph.,;Symbbls)
haBymbo ls) •

.

then

Get (Input) end

U

-begin WriteA(' '); NumberBlan!tsToWrite := SymbolGap - 1;
end·
W1:il;eC~lumn + Length + NumberBlan!tsToWrite - 1 >

then· ·
begin,.·.
. ...
WriteAt'. ');

~ "(lnli:itt.~p.!Oldest] ~

{!leg.in
•.
. .
·"· ·.'".ahisEndLine := True;

~llaJll<;!:i:Is9.n Length 1= 10;
·ttld.entAfterEOL := Writ!'L1'ftGol - 1 + LeftMargin

>

~ql

.!'!62

$,,l!3

and (Las tS,,inbol El,

· ·

~ ~!(f.jij!.:i.ghtC.o;L.

':ts1
3.'l18

1;

·

--··~I°Wr:t.t'ecoiumn '(= WriteRightGol then

,.=*~9

+

rn
n

begin
.
if DisplayisOn
then
begin
NumberBlanksToWrite := SymbolGap;
i.f (tas_t~~b. ol El, (LeftParenth, LeftBracltet, PeriodSymbol]) -2!_
· (S:y!ilbP°Wrone E!_ [s.epiicolon, RightParenth, RightBracltet,
GominaSymbol, PeriodSyinbol, GolonSymbol]) -2!_ (SymbolName in
· [LeftBracket, LeftParenth]) and (LastSymbol = Identifier)
· then NumberBlanksToWrite := 0 -

~56

;,;~~.;·:

· i f EOJl!i.lll:nput) then ReadGolumn :=
el.se, he)ii!ini Rell.dOolumn := ReadGolumn
end.;
S ····~.,·· .,JI!".;:
M_ NextChisEOL . .,., ~··.·; ;,. ·~;...
·:'!."~ · ., .. :· 1,

else

---U not

··355

ReadColumn .,:·~·;~ .. '.··.
.,
• ,· •
while ReadGbl\lliln. ~ .~-i,;;i.dl,.e:l;;tGol,, .,!!g; .... • ,

rn

~;

'354

.. \·):=·.·j.:.;

=

WriteColUmn := WriteLeftGol;
end;

''3·46

, • ,. . ;

if Rm~Gci.lumn.~ ll.ea~tGol
then ·:·.· .
,.
beg:L'll ·
·
,- . ·: '· ·' • . . . "'
& ~'ldRightCol < MaxReadR:l.ghtGoi
then ~ N<*t,ChJ!sEOL := True; ReadLn end
else ReadGo~U,l!Jn := 2;
end
·.,·.·,
~

then
begin
Gharacter := ' '; NextGhlsEOL :=False; ChisEOL := True;
ReadGolumn : "' 1;
if NoFormatting
then
begin
WriteA(' ');
with UnWritte,n[Oldest] do
begin
· ·
GhisEndLine :=·True;.
IndentAf terEOL : ,.; WriteLef tGol - 1;

345

2!l.O procedure ReadAGharacter;
2~

~01

3·02
303
304

:l'44

27-:i

2~i

299
300

·· .. ·

+

rn
:::s:
to.cl

rn
:..0

- - - - - - - - - ··--------·-- ·- ·-· - ---.-··-····-------·-·-·-- -·---

3'64

7005

Long;L:tnelnde.t¢;
W:i:iteOaluJrtn !" W:i::i.teI.ef tOol

; 1 .:~ .- ·

-.: •• ·

x~

-~:c

•.. jJ.,I,,

,.,. . ~s.e;;"~L',

.·lf.6>Ji"
-~

.

!J,W,
,~3

.'MlB

$82

' ';,,

:~far :i:" '"' 1 ta Numberlllanks'.I:aW:i:ite .!!Q. WriteA.(' ');
fa:.r I;; 1 ta Length clo WriteA.(Symbal[I]);
. ~.~, J).iapl"1(~~; :-;!iii:stSymbol :=< Symbol'Name;
end {Wdtesymbol};
. . ;.

~~

I '

!1$.3
. ~~4

aJ15
aM

S87
388

.SB9
3•90
391

392
393
394
li95
3:96

397
398

399
400
40l
4.02

403
404

418
419
420
.42l
422
423

424
425

426
427
-428
429

4z_l_'•.
4 '

4 ·.:
4 .'

4

.

4 't:.

4~'

4~·

procedure Copy.A.Characte:i:;
beg;!\n
.
..
if ll.lf;.!;playisOn
then.-·;·:.
begin;
.. ·
if W:i::!A;eGo1umn > WJ:iteRightCol ~

-:b.ep;in

wh:tle (Cha;i;acter = ' ') ~not ChisEOL do
il.eadA.Chro;.a.q)'.er;
.
if not ChisEOL ~ Sta;i;tNewLineA.ndindent;
end;
i f ChiCsEOL
then
begin
Lef·t¥a•gin := O; StartNewLineA.ndindent;
LeftMargin := Actual.LeftMargin;
~
eJ.s.e;.Write;\..(Gharacter);
~~
ReadA.Cha:i:aater
~ {Copy.A.Cha:i:aater};

·specification: Params;
FQrmatQption~ Char;
I'revllisplay,
I'revNoFo;i;matting: Jloolean;
EndDirect:v: ChaJ;Set;

4SO
•
451"

4S~

4!13

454

455
456

457 ..
458
459
46cr

4Gi
462
463
464

465
466
467
468
469

470
471
472

473
474
475

476
477
478
479
480
481
482.
483
484
485

486
487
48'.(l

4!!!1
procedure Readin(N; ;JiaramCount; ~Specification: I'a;i;ams);

:.E:

44~

441'
44f
41lS'
444
44$"
446.
441
411!!
44S

405
406
407
408 procedure DoFormatterDirectives;
409
410
Invalid = - 1;
411
412
413
I'aramCount " 1 . • 2.;
414
I'arams ·= array [I'aramCount] of Integer;
415
416

417

0

,;~f.,;

~~·(

:tit l;
EndCommentsWanted := Odd(SPECil!ICA.TON[l]);
end·
'G' :-sy;;,bolGap := Spe Invalid
then
case FormatOption 0£
'W':
g (Specification[l] > O) and (Specification[2] <
JlufferSize - 2) and (Specification[2] Specification[l] > 8)
then
begin
Writel'..eftCol := Specification[l];
WriteRightCol := Specification[2];
end·
'R':.:::=-'
if (Speclfication[l] > 0) and (Specification[2] Specification [l] > 8)

-0

::I:'

m

rn
V1
N

'

496
497
49.S
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533 I
534
53:5'
536
537
538
539
540,
541
54i
543
544
545
51!6
547
548
549
5SG
551

552

5§3'
5§4.
5!15
5!Yli,
5t17'

512!1
5~1)

l).ff()
~IR

then
begin
ReadLeftCol := Specification[l];
ReadRightCol := Specification[2);
.end;
'N':
begin
LineNumber := Specification[l];
Increment := Specification[2];
while not (Character in(['<')+ EndDirectv))
anc!Tcharacter <> 7>') .4£
GopyA.Charact er;
if Character = '>'
then Increment := -

Increment

end
end {CASE};
end {POUJlLE PARAMETERS};
'~"C', 'D', 'F':
begin
repeat CopyACharacter;
until Character in CI'+', '-']
i f Character ~ T'+', '-')
then
..

+ EndDirectv);

FormatOption .Qf
"B':

~

if DisplaylsOn
then BunchWanted :;:; Character '::' :+';
'G~acke:risOff := Character= - ;

. . nr :·

begin
Pi::evDisplay := DisplayisOn;, ,
DisplayisOn := Character = + ;
if PrevDisplay and ~ DisplayisOn
then

begin
Write.A('*'); Write.A(')');
Saved.Bunch ;= BunchWanted;
BunchWanted := False;
~

.els·e
i f n:ot PrevDisplay and DisplayisOn then
b-kgin
SeartNewLine.Andindent; Write.A(' ( ');
Writcl.('*'); BunchWanted := SavedBunch;
· i!.ttd {IF NGT '.PR'.llV};
end { 'D': };
·\ii•>< 'J ') tl:len Copy.ACharact.er;
end {DoFo:onatterDirectives};

5q2
563

procedure ReadSymbol;

5 64
565
566
567
568
569
570

ReadNe!XtCh = True;
DontRreadNextOh ;:; Fals.e;
Tes tSymbol: .Alfa;
CharNumber: Width;
I: Width;

571
572
573
574
575
576
5 77
578
579
580
581
582
583
584
585
586
587
588
589
590
591
59Z

593
594
595
596
597
598
5 99
600
6 01
602
603
6 04
60$
606
607
608
609
610
611
612
61$
614
61.5
6lq
617
618
619
620
621
622
623,
624
,625
626

624

;:z:

rn

prooedure SkipComment;

begin
repeat while Character <>
do ReadACharacter; ReadACharacter
until Character = ,. ) ';
Read.ACharacte;t'; LastSymbol := Comment; ReadSymbol
end {SkipComment};

'*'

procedure DoComment;
I: OptionSize;
pr.ocedure CompilerDirea:tives;
:begin repeat CopyACharacter;
end {CompilerDirectives};

until Character in [' [') '*'"]
::::::!

rn
n
begin {DoComment}
begin
if LastSymbol in [C6mment, Semicolon] then
begin
Lef~9-:cgin := O;
StartNewLineA.ndindent;
Lef !:Margin : = .ActualLef !:Margin;
~

.

if Chariicter = '$"' then Compile+Directives;
then DoFormatterDi:cectives;

Wr:i.t,eSymbol;

if .''.Character = '["
repeat

· -W11i:te @haracter <> '*' do CopyACharacter; CopyAGharacter;
until :aharact..te.r = ') ';
CopyACharili!ter; LastSymbol := Comment; ReadSymbol;
end;
end {DoComment};
procedure Che~br(SecondChar: Char; TwoCharSymbol: Symbols;
Read.Allowed:: Bmole;an) ;
begin
if Read.Allo~ed 'tihe;n
begin
Lerrgth ;;I;' ·l;. £.;llmb:ol,[.1). .:= .Qb:aracter;
symbolName "'"' N'.?me:Of [GharaCJ.tl ll'eccndChar
th'en
·.. 1:: ;'
hegin ..
S:y~];2') := Character;
Leng.th .;= 2;
~l'!1'~o;1Uame := TwoGha:i;symbol;
Rep.dAGharacter;
!Llii~\illa'0'\:en:wllh
:,Q
• «:-<:,,: .. ·· ~,,. • ·

1r

rn

\--'
LO

'-J
00

628
629
630
0,31
6.32
833
. 634
635
636
637
638
. 639
61i0

641
642
643
644
645
646
647

648
649
650
651
652
653
654
655
<'E'56
657

658
~59

660
661
. 662
663
664
665
666
6'67
668
669
670
671
672
673
674

675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
·691
·692
693

i

~
I

,., 694
. 695
'595

end·

end

{Ch~ckFor};
:

'i

. ·\.· .

~

~.

.

begin:.:{R'eadS~b0l)-.

.
'C', 'D' i 'E', "F', 'G', l'H', 'I', ,. J',
T lK.' .;.. ':(/'' ~?tf''J ~w- sr 'tr'.--".~.'). 'Q',. 'R"' ;: -l's' ,...:f~I'. j !U'., l'rf'' 'W''
~X", "Y!-) 'Z', 'O' .. '9", ' ' , "(', "..', ':', ''"', '<', '>'])
then
case Chafactei:r·.Ef_

. if ..:(Ohataa'tlett"· fu,;

, (':

~

[.(A~·~' (.13/' 1 ·

·:i

begin
;~.
CheckFor('K..' 1 Comment, ReadNextCh);
if (Symbol.Nto '"' Oomment then SkipComment;
end;
'
· .
"
..
'A.', 'B', 'C', 'JY'" 1.''·E-', 'F7 ·, :"G.,.,  ' ';
end·
··
·
·
'>---;-):': CheckFor('=', OtherSymbol, ReadNextCh);

ReadSymbol

,:697
698
699
700
701
. 702
703
704
705
706
707
708
709
710
. 711
712
713

714
715
716
717
718
71Q

720
721

722
723
7.24
'i25
726

727
728
729
730
731
732
j33

734
735
736
737
738
739
740

;!lli.endlheckii;,;:('. ', Range, ReadNextCh)
. · ~- $WmhoiLN1une.: "" Fl!#u~b:Nu}!ilre:c: :7 GlharN:umber +. l~ ·.1Read:Mharacter;
~·Ch'a.'C'acfI~;r ::=

<',..(';··.:. ·

Symbol[CharNumber) := Character;
Cb.'''';
Length := CharNumber - 1; Symbol.Name := OtherSymbol;
.,;!,;t;,-L('ngth ~ WriteRightCol - WriteLeftCol +

. th.en ..

',.

betin
FlushUnwrittenBuffer; WriteLn;
WriteLn(' ***STRING TOO LONG.');
goto 13
end~'

:.
end {s'i!RING}
end''{CksE}
·
elw
begin
.SymbQl[l] := Character; Symbol.Name '" NameOf [Charaeter];
Length := 1; Reac!ACharacter
end
,
end {ReadSymbol};

procedure ChangeMarginTo(NewLeftMargin: Margins);

Indent edLef tMargin: Margins;
begin
ActualLeftMargin := NewLeftMargin; LeftMargin := NewLeftMargin;
·g J:,e:iltMargin < 0 then Lef.tMargin := 0
else
begin
IndentedLeftMargin := WriteRightCol - 9 - LongLineindent;
if LeftMargin > IndentedLeftMargin
then· LeftMargin := IndentedLeftMargin
·end
end {ChangeMarginTo};

741
742
743
744
745
746
747
748

749
750
751

, <':

752

begin
CheckFor( •;,,,·-,, 0 therSymbol, ReadNextCh);
if Symb61Name <> OtherSymbol
then Checl', OtherSymbol, DontReadNextCh);
~
'.':
if LastSymbol <> EndSymbol

753

754
755
. 756

757
758
759

procedure DoDeclarationUntil(Endlleclaration: SymboiSet);
procedure DoParentheses;

SavedLgLnid: OptionSize;
begin
SavedLgLnid := LongLineindent;
if DeclarAlignment > 0
then
begin
LongLineindent := WriteCol~mn + SymbolGap + 1 - LeftMargin WriteLef-tCol; .
repeat WriteSymbol; ReadSymbol;
until Symbol.Name = RightParenth;
WriteSymbol; ReadSymbol;

1--'
lO
'-.(

00

l,

760
761
762
763
764
765
766
767
768
769
770
771
772.
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
7 94
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810.
811

a12
813
814
815
816
817
818
819
820.
8.21

822
823
824

82,5

end

826
$27
828
829
830
il31
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
,868
869
870

e:i;;begin
LongLineindent : = 1;
ChaµgeMa;rginTo(Actro.alL·eftMargin + Indentindex);
St.11.rti,le.wLineAndincjent;
repeat WriteSymbol; ReadSymbol
until Symbol.Name = RightParenth;
WriteSymbpl; ReadSymbol;
ChangeMarginTo(Ac.tual.LeftMargin - Indent.Index);
end {ELSE};
LongLineindent := SavedLgLnid;
~ {Do:earentheses};
procedure DoFieldListUntil(EndFieldList: SymbolSet);
LastEOL: Margins;
AlignColumn: Width;
procedure DoRecord;

SavedLeftMargin: Width;
begin
.
"
savedLalitMa;rgin := Actuall,eftMargin; WriteSymbol; Readsymbol;
ChangeMarginTo (WriteColumn - 6 + Indent.Index - Wri teLeftCol);
StartNewLineAndindent; DoFieldListUntil( [EndSymbol]);
ChangeMarginTo(ActualLeftMargin - Indentlndex);
StartNewLineAndindent; W:dteSymbol; ReadSymbol;
ChangeMarginTo ( Sa:vedJi,ef tMargin) ;
end {DoRecord};
procedure DoVariantR.ecordPart;

SavedLef tMargin,
OtherSavedMargin" Margins;
begin
·Othi>rSayedMa;rgin := ActualLeftMargin;
if DeclarAlignment > 0
then
h;eg;i.n.
11epeat W;ri!;eSymb0l; ReadSym)>ol;
until s;ymb 0 ~me ·in [ColonSymbol, OfSymbol] ;
i f Symbol.Name = ColonSymbol
then

871

872
873
874
875
'876
877
878
'879
·880
881
'882
883
<.884
885
"1!86
887
888

'begin. "
WriteSymbol; ReadSymbol;
with UnWritten[LastEOL] do
begin
lnd;entAfterEOL >= IndentAfterEOL +.AlignColumn W.:;1.~e.Colu,nn; .
.
.
g, 1nd1>.µ:tAfteci!OL < 0 then IndentAf terEOL : = 0;

.!l!!B>

.•: ':W11:i.teColum.n :.-= 4l Of Symbol !!!!!!!.

.

.'890
·~_91

repeat WriteSymbol; ReadSymbol; ~ Symbol.Name
OfSymbol;
ChangeMarginTo(AC"tuiilLeftMargin + Indent.Index);
repeclt .·
·
'WriteSynlbol; .. ReadSymbol;
if SyjnbolName '<> EndSyjnbol
then ·
begin
StartNewLineAndindent;
repeat WriteSymboli ReadSymbol;
until Symbol.Name in [Left:Parenth, Semicolon, EndSymbol];
if Symbol.Name = LeftParenth
then
begin
Wti teSymbol; ReadSymbol;
SavedLeftMargin := ActualLef tMargin;
ChangeMarginTo(WriteColumn - WriteLeftCol);
D'oFieldListUntil( [Right:earenth]); WriteSymbol;
ReadSymbol; ChangeMarginTo (SavedLef tMargin);
~;
~;

until Symbol.Name <> Semicolon;
ChangeMarginTo(OtherSavedMargin);
{poVariantRecord:eart};

~

begin {DoFieldListUntil}
LastEOL := Oldest;
if Las tSymbol
Lef t:earenth
then for I ""' 1 to DeclarA.lignment - Length do: WriteA(' ');
Aligndolumn := LeftMargin + WriteLeftCol + Decla'.t'Alignment + l;
~ .!!£!;.· (SymbolName in EndFieldList). ~
begin ·
·
.
J4. Last.Symbol in [Semicolon, Comment] then
if SymbplName <> Se.micolon
then begin StartNeef.LineAndindent; LastEOL := Oldest end;
if Symbol.Name in [RecordSymbol, CaseSymbol, LeftParenth,
CommaSymbol, ColonSymbol, EqualSymbol]
then
-case Symbol.Name of
----ile'oori!Symbol: lloRecord;
CaseSymbol: lloWriantRecord:eart;

=

LeftParenth: DoParentheses;
CommaS:ymbol, ColonSymbol, EqualSymbol:
Begin ·
WriteSymbol;
if lleclarAlignment > 0
then
--:rf not (EndLabel <= EndFieldList)
the;;:fuin'
'ltith' UnWrittenfLastEOLJ do ·
. liegin ,.

.;: · '.Ci:idli.nt'AfterEOL .,,.,

l!tidett~l!'e'.t'EOL

+.

AlignColumn - WriteColumn;
if IndentAf terEOL < 0
then IndentAfterEOL != 0;
''tli:i i>eOdl.'tlinn '" Al!t)inColumn;

""~1.....

. ...... ,,..

;;1,!;'S'§lml'Stillia'hte'"" cronuna:symob1 lilien'
·Ji111gin
· .. ·
·
,
. 'l!l:lartNelV:&irieAnt!Indt!!ntf "LaS'tEOL := Oldest;
end·
end {IF,DeclarAlignment};
'.Ele~01f:"
:·
';"·
end {
·
}
~ {CA~E}

t:::J

rn
n

rn
3
b:I

rn
7-l

892
893
894
895
8 96
897
898
899
900
9 01
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957

else begin WriteSymbol;
end {WHILE};.
end {DoFieldListUntil};

ReadSymbol end;

begin {DoDeclarationUntil}
StartNewLineAndindent; WriteSymbol;

ChangeMarginTo(ActualLeftMargin + Indentindex);
StartNewLineAndindent; ReadSymbol;
DoFieldListUntil(EndDeclaration);

StartNewLineA.ndindent;

ChangeMarginTo(ActualLeftMargin - Indentlndex);
end {DoDeclarationUntil};

procedure DoBlock(BlockName: CommentText; BlockNmLength: Width);

I: Width;
IfThenBunchNeeded: Boolean;
AtProcBeginning: Boolean;

procedure DoProcedures;

I: 0 .• 20;
ProcName: CommentText;
ProcNmLength: Width;

begin
for I := 2 to ProcSep~ration do StartNewLineAndindent;
StartNewLineAndindent; WriteSymbol; ReadSymbol;
for I :~ O ~ (Length - 1) div AlfaLeng ~
Pack(Symbol, I * AlfaLeng + 1, ProcName [I + l]);
ProcNmLength := Length; WriteSymbol; ReadSymbal;
if SymbolName = Lef tParenth then
-begin
WriteSymbol;
repeat ReadSymbol; WriteSymbol
until SymbolName = RightParenth;
ReadSymbol;
end·
ifSy~boJ.Name = ColonSymbol then
~epeat WriteSymbol; ReadSymbol; until SymbolName
Semicolon;
WriteSymbol; ReadSymbol;
ChangeMarginTo (ActualLef tMargin + Indent Index);
StartNewLineAndindent; LastProgPartWasBody := False;
DoBlock(ProcName, ProcNmLength); LastProgPartWasBody := True;
ChangeMarginTo(ActuaJLeftMargin - Indentindex); WriteSymbol;
ReadSymbol;
S tartNewLineAndindent;
end {DoProcedures};

procedure DoStatement(var AddedBlanks: Width; StatmtSymbol:
CommentText; StmtSymLength: Width);

I:
StatmtBeginning:
StatmtPart:
BlksOnCurrntLine,
BlksAddedByThisStmt:
Successful:

Width;
Integer;
array [l .. 4]

tl

Integer;

Integer;
Boolean;

procedure Bunch(Beginning, Breakpt, Ending: Integer;

958
959
960
961
962
9 63
9 64
9 65
9 66
9 67
968
969
970
9 71
972
973
9 74
9 75
9 76
977
9 78
979
9 80
981
982
983
984
985
986
987
988
989
990
991
992
9 93
9 94
995
9 96
997
9 98
9 99
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
l 023

StatmtSeparation: OptionSize);
begin
if BunchWanted ~ IfThenBunchNeeded
then
begin
if StatmtSeparation < 1 then StatmtSeparation := 1;
BlksOnCurrntLine := BlksOnCurrntLine + StatmtSeparation - 1;
Successful := ((Ending - Beginning+ BlksOnCurrntLine +
UnWritten[Beginning mod BufferSize].IndentAfterEOL) <
WriteRightCol) and (CharCount - Beginning < BufferSize);
if Successful
then
begin
BlksAddedByThisStmt := BlksAddedByThisStmt +
StatmtSeparation - 1;
UnWritten[Breakpt mod BufferSize] .IndentAfterEOL :=
StatmtSeparation;
end;
end;
end {Bunch};

rn
(/)

procedure WriteComment;

I:
SavedLength:
SavedSymbolName:
SavedChars:

Width;
Width;
Symbols;
SymbolString;

begin
SavedSymbolName := Symbol.Name;
for I := 1 to Length do SavedChars [I] := Symbol [I];
SavedLength:= Length; SymbolName :~ OtherSymbol;
Symbol[l] := '('; Symbol[2] := '*'; Length := 2; WriteSymbol;
for I := 0 to (StmtSymLength - 1) div AlfaLeng do
Unpack(StatmtSymbol[I + l], Symb~ (I* AlfaLeng + l));
Length := StmtSymLength;
SymbolName := PeriodSymbol;
LastSymbol :~ PeriodSymbol; WriteSymbol; Symbol[l] := '*';
Symbol [2] := ') '; Length := 2; WriteSymbol;
Symbol.Name : = SavedSymbolName; Length : = SavedLength;
for I:= 1 to Length do Symbol[I] .- SavedChars[I];
end {WriteComment};
-

procedure DoS tmtList(EndLis t: Symbols);

BlksAfterPrt2: Width;
AtProcEnd: Boolean;
begin
AtProcEnd := AtProcBeginning; WriteSymbol; ReadSymbol;
StatmtPart[l] := CharCount + l; StatmtPart[2] := StatmtPart[l];
if SymbolName <> EndList
then
begin
if ProcNamesWanted then
- i f AtProcBeginni~en
- i f LastProgPartWasBody
then if Las tSymbol = BeginSymbol then WriteComment;
AtProcBeginning := False;
DoStatement(AddedBlanks, StatmtSymbol, StmtSymLength);
BlksAfterPrt2 := AddedBlanks;
BlksAddedByThisStmt := BlksAddedByThisStmt + AddedBlanks;

CJ

>
G)

rn
\Jl

m

1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
107 4
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
IJ)89

while Symb olN ame <> EndLis t do
begin
WriteSymbol; ReadSymbol;
i f SymbolName <> EndList
then
begin
StatmtPart [3] := CharCount + 1;
DoS tatement (AddedBlanks, S tatmtSymbol,
StmtSymLength);
BlksOnCurrntLine := AddedBlanks + BlksAfterPrt2;
BlksAddedByThisStmt := BlksAddedByThisStmt +
AddedBlanks;
Bunch (StatmtPart [2], StatmtPart [3], CharCount,
StatmtSeparation);
if not Successful
then
begin
BlksAfterPrt2 := AddedBlanks;
StatmtPart [2] := StatmtPart [3] ;
end
el~BlksAf terPrt2 := BlksOnCurrntLine;
en~
end {WHILE SymbolName <> EndList};
end {IF SymbolName <> EndList};
BlksOnCurrntLine : = BlksAddedByThisStmt;
Bunch(StatmtBeginning, StatmtPart[l], CharCount, SymbolGap);
StartNewLine.Andindent;
StatmtPart [l] := CharCount;
repeat WriteSymbol; ReadSymbol;
until Symbol.Name in [Semicolon, UntilSymbol, EndSymbol,
ElseSymbol, PeriodSymbol];
if Successful

then
begin
i f EndLis t = UntilSymbol
then StatmtPart [4] := StatmtSeparation
else StatmtPart [4] := SymbolGap;
Bunch (StatmtBeginning, StatmtPart [l], CharCount,
StatmtPart [4]);
end {IF Successful};
if not (Successful and BunchWanted)
then
-:tf EndList = EndSymbol then
- i f LastSymbol = EndSymbol then
- i f AtProcEnd_ and ProcNamesWanted then WriteComment
else if EndCo~ntsWanted then WriteCo:mrrent;
end {DoStmtList};
--

begin {DoStatement}
BlksOnCurrntLine := O;
Successful := False;
BlksAddedByThisStmt := O;
ChangeMarginTo(ActualLeftMargin + Indentindex);
StartNewLineAndindent;
StatmtBeginning := CharCount;
i i SymbolisNumber
then
begin
with UnWritten[Oldest] do
begin
IndentAfterEOL := IndentAfterEOL - 1 - Length - SymbolGap;
if IndentAf terEOL < 0 then IndentAfterEOL := 0;
end;
WriteSymbol; ReadSymbol {Write LABEL}; WriteSymbol;
ReadSymbol {Write COLON};
end·
ca;;-StatementTypeOf [SymbolName] of
--iiDrWi thWhileS tatement:

1090
1091
1092
1093
1094
1095
1096
1097
1098
109 9
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155

begin
Pack(Symbol, 1, StatmtSymbol[l]); StmtSymLength := Length;
repeat WriteSymbol; ReadSymbol
until SymbolName = DoSymbol;
WriteSymbol; ReadSymbol; StatmtPart[l] := CharCount + l·
DoStatement(Added.Blanks, StatmtSymbol, StmtSymLength);
BlksOnCurrntLine := BlksOnCurrntLine +Added.Blanks;
BlksAddedByThisStmt := BlksAddedByThisStmt + AddedBlanks;
Bunch(StatmtBeginning, StatmtPart [l], CharCount, SymbolGap);
end;
RepeatStatement: DoStmtList(UntilSymbol);
IfStatement:
begin
Pack(Symbol, 1, StatmtSymbol[l]); StmtSymLength :=Length;
repeat WriteSymbol; ReadSymbol
until SymbolName = ThenSymbol;
StartNewLineAndindent; StatmtPart [l} := CharCount;
WriteSymbol; ReadSymbol;
StatmtPart[2] := CharCount + l;
DoStatement(AddedBlanks, StatmtSymbol, StmtSymLength);
BlksOnCurrntLine : = Added.Blanks;
BlksAddedByThisStmt := AddedBlanks;
Bunch(StatmtPart [l], StatmtPart [2], CharCount, SymbolGap);
if Successful
then
~nch ( S tatmtB eginning, S tatmtP art [ l] , CharCount,
S tatmtSeparation)
else IfThenBunchNeeded := True;
i f SymbolName = ElseSymbol
then
begin
Pack(Symbol, 1, StatmtSymbol[l]);
StmtSymLength := Length;
IfThenBunchNeeded := False;
StartNewLineAndindent;
StatmtPart [3] := CharCount;
WriteSymbol; ReadSymbol;
StatmtPart [4] := CharCount + l;
DoStatement (AddedBlanks, StatmtSymbol, S tmtSymLength);
BlksOnCurrntLine := AddedBlanks;
BlksAddedByThisStmt := BlksAddedByThisStmt +
AddedBlanks;
Bunch (StatmtPart [3], StatmtPart [4] , CharCount,
Symb olGap) ;
BlksOnCurrntLine := BlksAddedByThisStmt;
if Successful then
-Bunch(StatmtBeginning, StatmtPart [3), CharCount,
StatmtSeparation);
else

-:tf

(CharCount - StatmtBeginning) < BufferSize
then
begin
BunchWanted :=not BunchWanted;
·BlksOnCurrntLine:= O;
Bunch(StatmtBeginning, StatmtPart [l], StatmtPart [2],
SymbolGap) ;
BunchWanted := not BunchWanted;
end;
IfThenBunchNeeded := False;
end {IfStatement};
Cases tat ernent:
begin
repeat WriteSymbol; ReadSymbol
until SymbolName = OfSymbol;
WriteSymbol; ReadSymbol;
ChangeMarginTo(ActualLeftMargin + Indentindex);
while SymbolName <> EndSymbol do
begin

z
rn

d

·rn
n
rn

1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
119 8
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221

StartNewLineAndindent; StatmtPart[l] := CharCount;
for I := 0 -'£. (Length - 1) div AlfaLeng do
Pack(Symbol, (I* AlfaLeng + 1), StatmtSymbol[I + 1]);
StmtSymLength := Length;
repeat WriteSymbol; ReadSymbol
until SymbolName = ColonSymbol;
WriteSymbol; ReadSymbol;
i f not (SymbolName in [Semicolon, EndSymb.ol])
then
begin
StatmtPart[2] := CharCount + 1;
DoStatement (AddedBlanks, StatmtSymbol,
StmtSymLength);
BlksOnCurrntLine := AddedBlanks;
BlksAddedByThisStmt := BlksAddedByThisStmt +
AddedBlanks;
Bunch{StatmtPart[l], StatmtPart [2], CharCount,
SymbolGap);
end {IF NOT(SymbolName ••• )};
if SymbolName = Semicolon
then begin WriteSymbol; ReadSymbol; end;
end·
Chang.iliarginTo (Ac tualLef tMargin - Indentindex);
StartNewLineAndindent; WriteSymbol; ReadSymbol;
if EndCommentsWanted and (LastSymbol = EndSymbol) then
begin
StatmtSymbol[l] := 'CASE
'; · StmtSymLength := 4;
WriteGomme.nt;
end;
end {CaseStatement};
OtherStatement:
begin
while not (SymbolName in [Semicolon, UntilSymbol, EndSymbol,
---nseSymbol]) do
begin WriteSymbol; ReadSymbol end;
end {OTHER};
Compounds tatement: DoS tmtLis t(EndSymbol)
end {CASE};
AddedBlanks := BlksAddedByThisStmt;
ChangeMarginTo(Actual.LeftMargin - Indentindex);
end {DoStatement};
begin {DoBlock}
LastProgPartWasBody := LastProgPartWasBody and (SymbolName =
BeginSymbol);
g SymbolName = LabelSymbol then DoDeclarationUntil(EndLabel);
g SymbolName = ConstSymbol then DoDeclarationUntil(EndConst);
i f SymbolName = TypeSymbol then DoDeclarationUntil(EndType);
g SymbolName = VarSymbol then DoDeclarationUntil(EndVar);
while SymbolName in [FuncSymbol, ProcSymbol] do DoProcedures;
i f SymbolName = BeginSymbol
then
begin
if LastProgPartWasBody
then for I := 2 !.£ ProcSeparation do StartNewLineAndindent;
IfThenBunchNeeded := False; AtProcBeginning := True;
ChangeMarginTo(Actual.LeftMargin - Indentindex);
DoStatement (I, BlockName, BlockNmLength) { I IS DUMMY PARAM } ;
LastProgPartWasBody := True;
ChangeMarginTo(Actual.LeftMargin + Indentindex);
end
else begin WriteSymbol; ReadSymbol {Write FORWARD} end
end {DoBlock};

1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287

procedure Initialize;
I: Width;
begin { CONSTANTS: }
Digits := ['O' •. '9'];
LettersAndDigits := ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'p', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', "X', 'Y', 'Z'] +Digits;
AlphaSymbols := [ProgSymbol, BeginSymbol, EndSymbol, ConstSymbol,
TypeSymbol, RecordSymbol, CaseSymbol, IfSymbol, ThenSymbol,
ElseSymbol, DoSymbol, OfSymbol, ForSymbol, WithSymbol,
WhileSymbol, RepeatSymbol, UntilSymbol, Identifier, VarSymbol,
ProcSymbol, FuncSymbol, LabelSymbol, AlphaOperator];
EndLabel := [Cons tSymbol, TypeSymbol, VarSymbol, ProcSymbol,
FuncSymbol, BeginSymbol];
EndConst := EndLabel - [ConstSymbol];
EndType := EndConst - [TypeSymbol];
EndVar := EndType - [VarSymbolJ;
Initialize COLUMN DATA: }
WriteColumn := O; LeftMargin := O; Actual.LeftMargin := O;
OutputCol := 1; ReadLeftCol := l; ReadRightCol := MaxReadRightCol;
WriteLeftCol := 1; WriteRightCol := MaxWriteRightCol; Oldest := 1;
CharGount := 1; LineNumber := O; Increment := O;
Initialize Boolean PARAMETERS: }
PackerisOff := True; BunchWanted := False; DisplayisOn := True;
ProcNamesWanted := True; EndCommentsWanted := False;

=
,,,

NoFormatting := False;
Initialize NUMERIC PARAMETERS:

Indentindex := 3;

LongLineindent := 3;

ProcSeparation := 2;

SymbolGap := 1; StatmtSeparation := 3; DeclarAlignment := O;
Initialize INPUT CONTEXT DATA: }
ReadColumo := l; ChisEOL := False; NextChisEOL := False;
for I := 0 to BufferSize do Symbol[I] :=.' ';
LastSymbo l :;;: PeriodSymbol; Las tProgPartWasBody := False;
end {Initialize};

begin {MainProgram}

Constantsinitialization;
i f EOF(Input)

Initialize;

then WriteLn(' ***NO PROGRAM FOUND TO FORMAT.')

else
begin
ReadACharacter;

ReadSymbol;

if SymbolName <> ProgSymbol
then WriteLn(' ***"PROGRAM" EXPECTED.')

else
begin

***************************************************************
*
*
F 0 R MA T
T H E
PROGRAM
*
*
*
*
*
*
***************************************************************
S tartN ewLineAndindent;
WriteSymbol; ReadSymbol;
for I := 0 -'£. (Length - 1) div AlfaLeng do
Pack (Symbol, (I * Alf aLeng + 1), Hain [I + !] ) ;
MainNmLength := Length;
repeat WriteSymbol; ReadSymbol; until SymbolName
WriteSymbol; ReadSymbol; StartNewLineAndindent;
DoBlock{Main, MainNmLength); WriteA('. ');
FlushUnwrittenBuffer;

rrJ
U1

co

MOVING A LARGE PASCAL PROGRAM FROM AN LSI-11 TO A CRA'l-1
Richard L. Sites, APIS Department, UC/San Diego 92093
In March, 1978, I had occasion to move a 2400-line PASCAL program from an
LSI-11 at the University of California/San Diego (UCSD) to a·cray~l at Los
Alamos Scientific Laboratory (LASL). At both places, the compiler is a variant of the P4 portable compiler. This note summarizes the experience and makes
several major points about PASCAL:
1. It was possible to move a substantial PASCAL program from a small
slow machine to one approximately 150 times bigger. No other language
has compatible full- language implementation across such a wide range
of machines--essentially from the world's slowest micro to the world's
fastest supercomputer.
2. There were compile-time and run-time incompatibilities which should
not have existed. The last part of this note is directed to implementors, with a plea to avoid such problems.
3. Using a table-top LSI-11 system, an 011-going project is developing
production s~ftware for the Cray-1. This would not be feasible in
BASIC, FORTRAN, or assembly language.
Before describing the problems encountered in moving the program, a little
background is needed. The P4 portable PASCAL compiler is about 4000 lines of
PASCAL source, and translates from PASCAL to an intermediate language called
P-CODE. P-CODE is the machine language for a pseudo-machine that has a simple
stack and about 50 operations. The P-CODE version of a program consists exclusively of a stream of these simple operations, with no associated side
tables or assumed information.
On the Cray-1, P-CODE is translated by another 4000 line PASCAL program into
Cray-1 assembly language, which then cascades into the standard as.sembler and
loader. This sequence allowed a running, reasonably efficient PASCAL system
to be brought up on the Cray-1 with very few months of effort.
On the LSI-11, P-CODE is represented in a very compact form, and is interpreted directly. This has two advantages over compiling to native PDP-11 machine code: First, the P-CODE form of a program is more compact than the machine code, typically by a factor of two. This space compactness is the sole
reason that the compiler is able to compile itself in a 56K-byte memory. Second,
by changing only the interpreter, the identical P-CODE can be run on other micros, allowing the entire compiler and operating system to be transported to
other machines.
The program moved from UCSD to LASL is the skeleton of a machine-independent
optimizer for P-CODE. The initial version of the optimizer wil"l work on Cray-1
P-CODE, but later versions should work on other variants, and hence one set of
optimizing algorithms may eventually be running on a wide variety of machines.
The characteristics of the two machines and the initial 2400 line skeleton are
summarized in Table 1.

Source program moved
Pascal
Pascal
P-CODt
Cray-1

2400
source lines
69
procedures
instructions ( Cray-1) 9200
19100
instructions

Articles

Compile times in seconds

LSI-11

Pascal to P-CODE (lines/min.)
P-CODE to Cray-1 asm
Cray-1 asm to binary
Cray-1 loader
TOTALS

245 (600}

Cray-1
1.19 (120000}
2.30
4.62

Approximate ratio
200 : l

~

245

8.77 (164.00)

30

=

rn

:.e::

Execution times in seconds
75 data lines
2400 data lines
Memory sizes in bytes
Table 1.

(/)

51
n.a.

0.32
3.43

56K

8000K

150

150 :

Summary of source program moved and machines·used.

The rest of this note describes the six major portabiiity problems encountered, along with my suggestions for solutions. Some of these comments
parallel those found in other articles on these pages over the past few
years. The entire process of bringing the program up on the Cray-1 took
1:1/2 d?ys, although I originally expected it to take 1/2 a day. The extra
time was wasted on the problems below.
Portability problem #1
The Cray-1 compiler recognizes only lower-case ASCII reserved words
while.the UCSD compiler recognizes only upper-case .ASCII. This meant that
the first compilation died immediately, looking for the word "program".
This problem clearly subverts the essential idea of ASCII as a standard
C?de for Informati?n Exchange. It is not sufficient just to have the compiler convert all input to a single case, because (1) character string constants must not be changed, and (2) ALIAS SPELLINGS of identifiers should
not be al!owed. An alias spelling is defined to be one that may or may not
be recognized as the same as an original spelling depending on the details
of a particular compiler implementation. In our ~urrent context, a variable
declared as:
VAR XYZ : TNTEGER;
could_ha~e alias sp~llings of "xyz" and "Xyz", among others. As a matter
of principle, I believe that such spellings should not be allowed because
~hey serve only ~o !ntroduce confusion about whether the original programmer
in!en9ed three distinct variables or one. The standard example program for
this issue is:
BEGIN
VAR XYZ : INTEGER;
PROCEDURE ABC;
VAR xyz : REAL;
BEGIN
XYZ := 12; (*which block, inter or outer??*)
END;
Con~erting a}l identifiers to upper ~ase resolves the assignment to the REAL
variable, while treat1n~ the case sh:fted names as d!s~inct resolves the assignment to the INTEGER variable. I believe that the original programmer's intent
in such a program is truly ambiguous, so the program should not be allowed in
the first place. Th~ declaration xyz : REAL should generate a compile-time

l=::I

rn
n
rn
t:d

rn

·'°
f-'
lD

'-!
00

-0
)>

m
rn
lJl
lD

Articles

err@r (or at least be flagged with a warning) on the basis that an alias spelling of the same variable already exists. Thus, the issue of how to resolve the
assignment never comes up. In quick summary, my proposed portable upper- lowercase rules are:
(1)

Reserved words, such as BEGIN are recognized independent of the
case of the individual letters, so that "BEGIN", "begin", and
"BeGiN" are all recognized as reserved words.

(2) An identifier used in a declaration may have its individual
letters in any case, and that particular spelling is inserted
into the symbol table, SO LONG AS NO ALIAS SPELLING ALREADY
EXISTS in the symbol table.
(3)

An identifier used in the body of a program must exactly match
the spelling in the symbol table, including each letter being
of the correct case.

These rules allow any program to be compiled, so long as words in it are consistently spelled with the same pattern of upper- and lower-case letters.
(ASIDE: These same rules can be used to detect most cases of identifiers
which differ after the first eight letters, without needing to store more than
eight letters in the symbol table. Most compiler symbol tables store 7-bit
ASCII characters in 8-bit bytes. If all the characters after the first 8 in
an identifier are hashed and the hash value stored in the unused bits of th2se
bytes, then rule (2) above can be interpreted to mean "an alias spelling exists
(and hence an error/warning message is generated) if some existing identifier
~n. the symbol table has the same first 8 characters, but a different hash code
for the remaining characters." Rule (3) above can be interpreted to mean "the
first 8 characters of an identifier and the hash code for the remaining characters must match exactly." This id'811completely clears up the concern of
A.H.J. Sales (Pascal News, Feb. 1978, p. 78), except when the hash codes for
two different tails turn out to be identical; this can be made rare, and can
be guaranteed not to happen for single-character differences. End of ASIDE.)
Portability problem #2
Contrary to the Report, the Cray-1 compiler does not recognize empty field
lists in variant record declarations, RECORD CASE !:BOOLEAN OF TRUE:(X,Y:
INTEGER); FALSE:()END , nor does it recognize untagged variant records,
RECORD CASE BOOLEAN OF ..•. The lesson here is clear--recognize the entire
language as defined, without taking shortcuts.
Portability problem #3

TYPE WHOLENUM = 0 .. 32767;
VAR I
:INTEGER;
FUNCTION F( ... ):WHOLENUM;
I :~°F( ... )*I;
while the Cray-1 compiler complained about operand incompatability at the
multiply. Inconsistent type checking is a well-known problem in Pascal, so
I won't dwell on it. In this particular cas•i, though, I am frustrated because
the whole purpose of introducing the type WHOLENUM is to convey to the read~r
(and the compiler) the idea that all WHOLENUMs are intended to be non-negative.
My temporary fix was : TYPE WHOLENUM = INTEGER;

en

Portability problem #5
The first real problem to crop up in execution was that my hash function
always returned the same value, zero, instead of reasoryably well.distr~buted
series of numbers in the range 0 .. 127. The hash function was built using
(conceptual) shifts and exclusive-or's, and in fact did a fair amount of lying
with variant records to jump between character, integer (I+I used for left
shift of one bit), and set (Sl+S2, Sl*S2, and ALLBITS-S used to build XOR)
representations. There is a serious issue here of how to build a portable
hash function. The problem will be even harder if strong typing advocates'
remove yari ant records as an "esca_pe hatch". Try it yourself :- build. a function which accepts a PACKED ARRAYL0 .. 7] OF CHAR and returns an integer in the
range 0 .. 127. The pa'.ticular hash function desired.XO~s the a.characters,
each one offset one bit from the next to get a 15-bit intermediate. The upper
8 bits and the lower 7 are then XDRed, and the lower 7 bits of this are returned. (This particular function guarantees.diff~rent hash values f~r.in­
puts which differ by any one character, or which differ by a transposition.
In addition, no overflow is generated on a 16-bit machine.)
Portability problem #6
The final output of the program was spaced funny.

In the statement

WRITELN(3,4);
UCSD Pascal inserts no blanks around the fields, giving "34", while Cray-1
Pascal uses a default field width, giving " 3 4". In my application,
the blanks are not wanted, but Pascal output editing is not precisely defined, so many implementations supply extra blanks. Often, these blanks
reflect a legitimate desire to separate items of output when specified field
widths are exceeded, as in WRITELN(l00:2, 200:2) which normally prints as
"100 200". I propose that a specified field width of zero mean no padding
blanks, and that the exact details of output editing be specified somewhere.

Portability problem #4

Overall, moving a 2400-line Pascal program ~roved surprisingly successful,
and having done it once should make it easy to move a 5000-line program this
summer.
(* Received 78/05/01 *)

UCSD Pascal accepted

rn

::e:

At this point in the process, my 2400 line program compiled properly an~
executed for the first time. I had fixed problem #1 by converting the entire
program to lower case, and this fix now came back to haunt me, because the
input data file was still in upper case, and hence did not match any of my
lower-case character-string constants. Converting the entire data file to
lower case also did not quite do the trick, because my program's output (remember, the 2400 line program optimizes P-CODE) cascades eventually into the
Cray-1 loader, which demands standard procedure names (such as SIN) in upper
case. Clearly, the case shift problem was taking more energy than it should.

UCSD Pascal includes non-standard procedures OPEN and CLOSE. I had to rework the calls to use the standard RESET and REWRITE, which lack two useful
capabilities: (1) there is no way to close a file explicitly,, and hence there
is no way to release a file for other uses before the program terminates; there
also is no way to specify whether the file is to be disposed of (a temporary
disk file) or kept (a disk output file) after termination; (2) there is no way
to open a file explicit-ly, supplying a character-string file name at that time.
These are limitations I can live with, but I would prefer to see some agreedupon standard extensions in this area.

Type checking was inconsistent.

=

t::1

rn
n

rn

f-'
<.0

'I
00

On the Article "What to do After a While"

crease the difficulty of doing such verification by an order
of magnitude. This belief is based on the fact that, in ab-

Roy A. Wilsker - Mass. State College Computer Network

stract mathematics and logic, non-commutative (i.e., orderdependent) objects are much harder to handle than commutative

objects.
INTRODUCTION

ON

The letter by A.H.J. Sale 1 and the article by Barron
and Mullins 2 in PASCAL News #11 address themselves to an ambiguity in the definition of the PASCAL language: should
Boolean expressions be evaluated in a parallel or sequential
manner?

11

rn

Barron and Mullins argue that sequential evaluation allows us to program llmore in the spirit of PASCAL". Whatever
that patriotic remark means, I strongly disagree. Let's look
at the example they give. We are to search a table for a giv-

en item. Using sequential evaluation, their solution is:

For example, when we write

11 P

and Q. 11

,

do we mean
~

(parallel or

1)

=

TI-IE SPIRIT OF PASCAL"

11

table : array [ 1 .• maxsize]

of whatever;

logical 11 evaluation)

or

index :::::: 1;

2)

while (index<= maxsize) and (table [inde:9 <> item)

(sequential evaluation)

do index := index + 1;

if P then Q else false

(* ::ndition for item not f'ound is

I argue here for the parallel approach.

>

rnaxsize 11 *)

There are two fundamental flaws in this solution:
t::J

THE PROBLEM OF pslf:rroLOG.ICAL SET

1)

My first objection to sequential evaluation is that it
~

11 index

parallel to anyone who has had any exposure to symbolic

logic. This is the problem of "psychological set", first discussed by Gerald M. Weinberg 3 • This term connotes a state in
which our way of' thinking about a situation blinds us to its
reality. For example, a common error encountered by programmers who use languages in which variables need not be declared is the use of misspelled variable names which

11

The solution t1hsts the algorithm to .fit a given data

rn

structure.

rn

n

One of the great advantages of PASCAL over most other
languages is the ability it gives the user to create data
structures which work well with a given problem. Consider the

following solution to the table search problem 5 :
~ table : array

(o .. maxsize}

of whatever;

1.ook like 11

other (valid) names. This kind of error can be extremely hard
table[O]

to find.
Thus, a maintenance programmer who runs into the expres-

:= item; (* put in sentinel for end of search *)

index .- maxsize;

while table (index) <::> item

sion
~ (i <= maxsize)

do index := index -

and (a(.i] <> item) do

1;

(* condition for item not :found is

11

index = 0 11

*)

and later finds
~ (a(i]

<> item) and (i <= rnaxsize) do

2)

The repetitive construct mixes together logical and
iterative repetition.

may not even see them as different expressionsl

Indeed, in Algol 68 6 , a cleaner way to write the Barron-

PROVING. FROG.RAMS CORRECT

Mullins algorithm would be:
The advent of structured control statements has generated
a great deal of interest in the problem of proving, either by
hand or automatically, the correctness of programs 4 . My second

objection to symbolic evaluation is that it will probably in-

index -:== 1;.
f'or i

from 1 to maxsize while table [.i] "'->

do index := i

i tern

+ 1 od;

# condition for item not found is

11

index )

maxsize 11 #

m
I-'

See, for example,

The prob1em with this technique is that on exiting the

Dijkstra, E.J. A Discip1ine of Programming. Prentice-

1oop 1 one does not know if termination was caused by the count

Ha11, Eng1ewood C1iffs, 1976.
G.ood, D.I., "Towards a Man-Machine System for Proving

being exceeded or by the 1ogica1 condition fai1ing. This is a
common error-causing situation, better known as "exiting a

Program Correctness", Report TSN-11, The University of

1oop to the same p1ace from tbe side and the bottom 117 •
ON "EFFICIENT" ALG.ORITHMS

Hoare, C.A.R.

"An Axiomatic Basis for Computer Program-

580, 183.
Marmier, E.,

But in the Pasca1 community we shou1d have gotten

11

A Program Verifier for PASCAL",

gg

Congress 1971.i.

beyond judging features so1e1y in terms of imp1ementa-

Naur, P.

tion efficiency. What matters is being ab1e to write
correct programs that are easi1y comprehensib1e. 11

BIT, voi. 6, no. !i, 1966, p. 310-316.

1

"Proof of A1gori thms by Genera1 Snapshots 11

1

This so1ution to the tab1e search prob1em is taken from
the exce11ent artic1e:

The answer to the question of efficiency is not so simp1e. True, the first consideration of the designer shou1d a1ways be the correctness and c1arity of the design. But effi-

Knuth, Dona1d E., "Structured Programming with G.OTO
Statements" in Current Trends in Programming Methodo1-

ciency often comes in a close second, and sometimes it 1 s a

og)r: Vo1ume I, Software Specification and Design, ed.
Raymond T. Yeh. Prentice-Ha11 1 Eng1ewood C1iffs, 1977.

dead heat: in certain circumstances (e.g., rea1 time app1ications or CAI) if the program is not efficient enough, in

6.

See, for example,

Pagan, Frank G. •. A Practica1 Guide to A1go1 68. John

terms of either size or execution time, it is irrelevant as
to whether or not it 1 s clear, or even correct - the program

Wi1ey & Sons, 1976.

is unusable.

Kernighan, B.W., and P1auger 1 P.J. The E1ements of

As Dona1d Knuth 8 and others9 have pointed out, the prob1em is genera11y not that the designer has made efficiency a
consideration, but h2:!!; he has tried to make the design efficient. The vi11ain is not efficiency itse1f, but micro and

:...::

ming"·, Comm. ACM, vo1. 12, no. 10, October 1969, p. 567-

Fina11y, I wou1d 1ike to take a moment to ta1k about efficiency. Barron and Mu11ins say:

"

1

:z

rn

Texas at Austin, Computation Center, June 1970.

Programming Styie. McGraw-Hi11, 1971!.

8.

Knuth, Dona1d E., "An Empirica1 Study of FORTRAN Programs11,

Sof'tware - Practice and Experience, vol. I 1

no. 2 (Apri1-June, 1971), p. 105-133.

I-'
LO

(See a1so the work cited in reference 5.)

premature optimization.
In fact, the a1gorithm given in this artic1e is a good

See, for examp1e

examp1e of how to optimize a program: by improving its data

Yourdan, Edward. Techniques of Program Structure and

structures and a1gorithms. In a Ratfor preprocessor written

Design• Prentice-Ha11, 1975.

1

'l

the work cited in reference 7

1

and

00

in PASCAL, the substitution of the a1gorithm given above for
the origina1 one (which was essentia11y the Barron-Mu11ins

(* Receive<\ 78/0'f>/ll *)

a1gorithm) resuited in a 30% decrease in the preprocessor's
execution time with no impairment of the c1arity of the
program.

MASSACHUSETTS STATE COLLEGE COMPUTER NETWORK

REFERENCES
1.
2.
3.

PASCAL News #11, P• 76-78.
PASCAL News #11, P• !t,8-50.
Weinberg, G.era1d M. The Psycho1og:y of ComEuteX. Programming. Van Nostrand-Reinho1d, 1970.

"

:c>
Gl

rn
m
N

A RESOLUTION OF THE BOOLEAN EXPRESSION-EVALUATION QUESTION
or
IF NOT PARTIAL EVALUATION
THEN CONDITIONAL EXPRESSIONS

compensates for the increased syntatic complexity which their adoption
would entail.
2. The conditional expression, in particular, promotes rigor by
removing semantic ambiguities that exist in the evaluation of Boolean
expressions.
3. None of these extensions conflicts with the PASCAL design goals
cited by Vavra [3].
We shall restrict the scope of this paper to the case for the
conditional expression, showing first some examples of its use, and
second the way in which it avoids the current arguments concerning the
proper evaluation of Boolean expressions.

Morris w. Roberts
Robert N. Macdonald
Department of Information Systems
Georgia State University
Atlanta, Georgia 30303

CJ

~

en
n
~

r
:z:

rn

The Conditional Expression
Introduction

In BNF notation, the 

The programming languages ALGOL-60[1] and ALGOL-W[2], which contain
the precursors of many of the elegant features of PASCAL, are richer
than PASCAL in the variety of ways that an expression may be formed.
Both ALGOL-60 and ALGOL-W contain the conditional expression and ALGOL-W
contains, in addition, the case expression and the value block.
A
"PASCALized" summary of these constructs is shown in the syntax diagrams
below.
relational expression
simplet--~-..-~~~~~~~~~~~~~~~~~

expression

simple
'-~--'~~-"-~~-"-~~--""~~-'"~~-""~--'""expression

(ALGOL-60 restricts the  following the
expression>.)

*

a.

x := (if nb else false do x:=x+l;

d.

append := if null(x) then copy(y)
else if X"".class=list then
---COns(copy(x'.car),append(x'.cdr,y))
else referenceerror('append: lst arg invaliq structure');

(c+d);

\:.::!

rn
n

rn
·3
td
;-n

t--~~~~~~~~~~~~~~~

Expressing these constructs in
c could be written as
r-~~~~~~~~~~~-'""relational

then to be a  then 
else . ~~

expression
expression

PASCAL is straightforward.

Example

f-'

found := false;
while (x<=lO) and not found do
if a[x]=b then fOUii:d:=true else x:=x+l;

~else Hexpression J

Thus. the PASCAL version of c
Boolean variable, "found".

requires two

~"'

LO

"-.!

co

statements and

the extra

Resolution of a Semantic Problem
Another possibility is
statement

that the previous example

could be written

as

expression

while (x<=lO) and (a[x]<>b) do x:=x+l;
Although
the effects
of the
conditional expression,
case
expression, and value block may be had in PASCAL (or in FORTRAN, for
that matter), the resulting constructs reguire multiple statements and
the declaration and use of temporary variables that are not otherwise
needed if these forms of expression are used.
We recommend the
incorporation of these forms of expression into PASCAL on the following
grounds:
l.

The

increased programming facility

that they offer

more than

provided the evaluation of the Boolean expression is terminated as soon
as x<=lO becomes false. This avoids errors when a[ll] does not exist or
when it is undefined. This approach is currently the subject of some
debate. In two recent articles in Pascal News, the authors Sale[4] and
Barron and Mullins[S] have taken opposite positions regarding standards
for the evaluation of Boolean expressions. Sale recommends the "Boolean
operator" approach which forces full
evaluation of the complete
expression, whereas Barron and Mullins prefer •sequential conjunction"
which permits the compiler to terminate evaluation of an expression as
soon as its truth or falsity is unequivocally determined.

m
\.N

The reasons that have been given for partial evaluation seem to be:
1. efficiency
2.
the resolution of cases in which one or more of the terms and
factors of the expression are undefined.
Although Barron and Mullins have described three syntactically
correct ways of avoiding the problem of point 2 by segmenting the
expression, still they advocate the use of partial evaluation. Their
position is understandable, for the techniques required are contrived.
Unfortunately, they are the only reasonable ones available with the
present language, and partial evaluation makes the code appear to be
simpler.
The User Manual(6], as noted by Sale, interprets the Report[6]
neither to require nor to forbid the full evaluation of Boolean
expressions.
However, the syntax of the  given in the
Report clearly implies that all operators are to be applied in the
evaluation of an expression. Thus, it seems reasonable to expect that
any action which appears explicitly in the flow of control must be
evaluated. If this is not the case there will always be an uncertainty
as to what portions of the program have been executed. For example, the
statement
while

A~

B

Full evaluation of the expression is in keeping with the syntax
described in the Report and with intuition. From the ~anguage-design
standpoint, there seems to be no justification for performing a partial
evaluation of an expression. This is particularly true since the most
compelling reason advanced for the partial evaluation is to avoid an
awkward temporary variable. The conditional expression is a complete
solution to this specific problem in that it permits the selection, by
the programmer, of the terms and/or factors that are to be evaluated.
Example c, above, solves problem 2 by explicitly directing the flow
of control around impossible cases. It does not depend on implicit
conventions of partially evaluating expressions.
In our opinion, the only reason for not fully evaluating an
expression is efficiency of time and memory utilization. While the use
of partial evaluation does have an advantage over the standard PASCAL
construction, the advantage is insignificant when it is compared against
the conditional-expression approach.
The following shows the code
segments that might be generated for example c, above, if the target
machine w~r~ a PDP-11.
Conditional Expression
1$:

evaluate the condition
put result of x<=lO on stack
CMP
BEQ

(SP)+ ,jfTRUE
2$
evaluate the else expression
put false on the stack

BR

3$

3$:

CMP
BNE

(SP)+,JfTRUE
4$
perform do

BR

1$

4$:
Partial Evaluation
evaluate expression
put x<=lO on stack

1$:
CMP
BNE

(SP)+,JfTRUE
4$

evaluate expression
put a(xJ<>b on stack
CMP
(SP)+,#TRUE
BNE 4$

~

means that the statement following do is to be executed if A and B are
both true. According to Barron and Mullins, this would be reinterpreted
to mean "don't evaluate Band don't execute if A is false." There is a
subtle difference between these two
notions.
The difference is
important because B might involve a Boolean function which performs
necessary operations on global variables or Y.!!!_ parameters.

evaluate the then expression
put a[x]<>b on stack

2$:

perform do
BR

1$

4$:
t::1

We see from these examples that the space advantage gained from partial
evaluation is that for evaluating the else part of the if and a branch
instruction.
In this case it amounts to two instructions.
It is more
interesting to note that the execution time advantage is zero as long as
the else condition is not evaluated. We feel that there is insufficient
justification for adopting partial evaluation as a standard feature of
the
language.
It
might,
however,
be
a
desirable
implementation-dependent feature activated by a compiler directive.

t:d

rn
;:o

I-'
tD
'-!
00

Conclusions
PASCAL is not yet a complete language in that inclusion of severa_l
desirable features of other languages has not yet been openly debated.
We recommend the case expression, the value block, and particularly the
conditional expression as additions to the language. The basis for this
recommendation is that these features will promote semantic rig?r, will
not conflict with any language-design goals, will provide the programmer
with new and useful tools, and will improve the efficiency of the
generated code over standard PASCAL.
References
1. Naur, Peter (Editor), et al., "Revised Report on the Algorithmic
Language ALGOL 60," Communications of the ACM.§. (January, 1963), 1-17.

2.
Wirth, Niklaus and
Development of ALGOL,"
413-433.

rn
n
rn

C.
A. R.
Hoare, "A Contribution to the
Communications of the ACM ~
(June, 1966),

3. Vavra, Robert D., "What Are
(June, 1978), 33-35.

Pascal's Design Goals?", Pascal News 12

Sale, Arthur H. J., "Compiling Boolean Expressions," Pascal News 11
(February, 1978) 76-78.

4.

Barron, n. w. and J. M. Mullins, "What
Pascal News, 11 (February, 1978) 43-50.
5.

to do After

a While,"

Jensen, Kathleen and Niklaus Wirth, PASCAL User
springer-Verlag (1975).
6.

(* Received 78/08/07 *)

What to do after a while •• lon,ger
Chepstow ( 029 12 ) 4850
78 Se 20 W

T.M.N. Irish
5 Norse \Vay
CHE PS TOI{
UNITED KINGDall

Sadbury
Gwent
NP6 7BB

References
( 1.) Barron, D. W. & Mullins , J.M. WHAT TO ro AFTER A WHILE
PN 11 p. 48, 1977
( 2.) Jensen, K. & Wirth, N. PASCAL USER MANUAL .AND REB::RT
2nd cor. reprint of the 2nd ed. Springer-Verlag, 1978
( 3.) Sale, A.H. J.
COr!PILING BO:iiEAN EXPRESSICNS PN 11 p. 76, 1977
I was brought up to regard B&:M (1.) appendix example 1. as the
normal way of searching a table. I deny that it is a distortion,
and, on the contrary, claim that it bears both a s~ple and an
obvious relationship to the problem. When I study it, I see
only the falsity of their assertion.
User Manual, page 22 :- "The while statement" ••• "The
expression controlling the repetition must be of type Boolean.
It is evaluated before each iteration, so care must be taken
to keep the expression as simple as possible. 11
User Manual, pages 20-21, quoted by Sale (3.), beginning:"Boolean expressions have the property ••• 11
I take this to
mean that J&W (2.) have as little sympathy for those who rely on
not well-defined factors as B&M have for those who rely on
side-effects of functions.
User Manual, page 12 :- "Hence, it is possible to define each of
the 16 Boolean operations using the above logical and relational
operators." There follows a table showing the 16 Boolean
operations, in which p and q are Boolean operands, r is a.
Boolean variable and "." , 11 1"
XCR , EQV & IMP are
abbreviations for false , true {except "case 1"), exclusive al. ,
equivalence & implication.

-0

case 1 2 3 4

.. 1. 1. 11
r:=
.. . 1
. .. 11 1.
'
.. 11 .. 1
.. 11 11 1.
1 . .
1 . . 1
1 . 1 .
1 . 1 1
1 1 .
1
1 1

p =
q=

expression
false
p and q
p > q
p

C/)

n

>
r

=

not ( not p or not q )
p and not q

rn
:.<::
C/)

p < q
q
p <> q
p or q

not p and q
q

XOR

not ( p or q )
p = q
not q
p >= q

not p and not q
p and q or not p and not q

EQV

p or not q

IMP

not p or q
not p or not q

IMP

not p
p <= q
not ( p and q )
true

1 1 1
1 1 1 1

):>

equivalent
Boolean operator
expression

not
not

~

p and not
f not
and qp or
and not q )

I-'

v.I

If

we were starting the language design again
and
we wanted to include a facility for telling implementations
how to evaluate expressions ( though, in view of B&:M's own
remark about architectures, that seems of dubious value),
so that we were looking for "sequential conjunction" versions of
and
>
<
or
>=
<=
then I, for o·ne, wauld oppose the use of "and" & "or• themselves,
on the ground of their.· old and strong• Boolean algebra
connotation.
If RJP-2 and RTL/2 have already "adopted" { it should be "adapted"
them for such a purpose, that is their problem.
Not that I care, but B&M 1 s function andop seems unnecessarily
complicated to me.
function andop ( p , q : Boolean ) : Boolean ;
bef n
andop : = p and q end ;
is suffioi n ~ because the arguments are both evaluated when
the function is called ~ surely ?
What the spirit of Pascal says to me is that we ought not to
(i) write programs that rely on
not well-defined factors
side-effects of functions
or
undefined values,
(ii) depend on implementors to let us get away with them,
(iii) tell implementors to let us get away with them,
or (iv) complain if .. implementors use any means they can devise
to prevent us getting away with them.
The spirit of Pascal also says that it rather fancies itself as
a two-edged sword !
78 Se 20 W

+ -

*I

:= • '

;

' = <> < <= > >= < l

t:.

copies to :- D.W.Barron J .M.Bishop IC.Jensen
A.H.J .Sale N.Wirth

J

t

•• (* *)

G.H.Richmond

(* Received 78/09/26 *)

en
\.n

This leads us to a solution using a three-state ·scalar (figure 1) .
Laurence V. Atkinson
University of Sheffield
England
In a nutshell

. ,;.'

~·

:.; '

erldoftabJ.e,

= ... ;

.txpio ·tQend9ft.able = I . . e~doft_ab~e;

A number of recent articles have highlighted problems with multiple exit
loops in Pascal.
Many of these problems disappear when a loop is controlled
by. a user~ify..f;ned scalar,

searchstates = (searching, th:ingibsent, thingfound);

en
~

item ; array [·toendoftable] ~things;

rn:t~c~
.' Muitiple ex.i.t: loops aJJ.d problems wi:tli their implementation have featured
prominen(;l.y in. four r.erton [~J. Many of bhese problems do· not •oi>crur if user~defin<1d scalars
are iil.trpduced as 'state indicators' to control the loop.
A multiple etit loop
®nst:i~utes. a multi-state process.
Pascal's ordinal tYPes provide a natural
Jl¥'antl< of :i.denti.:llying ittuittiple st!tlles.
This state· trans:i.t:l.on approach :i.s introdll{!ed by first considering the Barron and Mullins paper [2] and then taking the
other articles :i.n ·tum.
·
B~rron

. her~ .. ~ _I;

cons.t maxsize ::::: ... ; succmaxsize ::::: ... ;
table
array Cl. .maxsbe] of whatever;

~

index :

I.~succmaxsize;

index:= 1.;
while (index <= maxsize) and (table· [index] <> item)
do index := index + I ; - i f index ~ maxsi,;.e then ~item absent} . , • ~ {:1,tem found}
Barron aJJ.d Mullins claim that 11 this is a natural way of expressing the
operation to be carried out 11 and is inkeeping with 11 bhe spirit of Pascal".
The point of their paper is that this program is viable only if boolean
expressions are evaluated by sequential conjunction on a strict left-to-right
basis.
The Report [6] leaves this issue open but the User Manual [6] states
that all op.erands in a boolean expression will be evaluated.
Jensen and Wirth
[6] (Chapter IO) produce an equivalent example to illustrate the problem.
A
state transition approach to their solutions is presented by the present author
in [!].
I suggest that a ~rogramming style both more natural and more in the spirit
of Pascal is achieved when user-defined scalars are introduced and used as state
indicators.
~t~te :i;ndicator~

a simple

(i)
(ii)
(iii)

search environment there are three distinct states of interest:

I haven't found it yet but I'm still looking,
got it,
I 1 ve looked everywhere but it 1 s not here.

! seaxahstates~

ontc.ome ·-:=== searching;

re.p<;at

g

item [he:i;eJ = th:i.ngwant;ed ~outcome := thingfound ~
if here "' endoftable then outcome := thingabsent else

and· Mullins

Their example is linear search for a specified item within a vector (assumed
ful;l) .but considering the possibil:l.ty that the desired item may be absent,
The
program they produce is

In

ouhaome

here : "' succ (here)
until outcome <> searching;
~

o-utcome of

thingfound
t!Ungwsent
end {case}
Figure '1.

Li~ear

search with state transition

We now comment upon the program of figure J.
The intent of the program is more readily apparent.
The program is now more easily extended to include other cases of
interest (eg. figure 2).
(iii) Subsequent processing, upon exit from the loop, is more transparent:determination of whether or not the desired item has been located
is cleaner.
(iv)
The compound boolean expression has disappeared and so issues of
'boolean operator' or 'sequential conjunction' approach are avoided.
(v)
The order of making the tests is not implementation dependent:the desired order is unambiguously expressed.
(vi)
The subscript cannot go out of the bounds of the array.
In Barron
and Mull~ns 1 version the range of the subscript must be one greater
than the index range of the array.
We return to this point when
discussing Bishop's paper [3].
Barron and Mullins incur a test (index
(vii) No redundant tests are made.
<= maxsize) which is· always true upon entry to the while loop.
My
objection to redundant testing is based on considerations of logic
rather than efficiency.
(viii) Efficient implementation of the loop termination test is possible
(jump on zero) .
(i)
(ii)

m
m

searchstates

~

(searching, absent, foundinfirsthalf, foundinsecondhalf);

index

= min

.. max;

var i : index;
state : (looping, rangeexhausted, otherexitcondition);

repeat

=
rn

if item [he:i:e] = thingwanted then
i := min; state := looping;

~ here -<= · (endoftabie div 2) of

true

outcome : = foundinfirsthalf;

·false

outcome : = foundinsecondhalf

repeat

{something}

end {case}
else . •

if i = max then state := rangeexhausted else

~

until outcome

<>

if ... then state := otherexitcondition ~

searching;

i := succ (i)
~:outcome

until state <> looping;

of

foundinfirsi:half
case state of

foundinsecondhalf

rangeexhaus ted

absent

end

o therexi tcondi tion

{case}

end {case}
Figure 2.

Extended linear search with state transition.

Judy Bishop [3) addresses· the general problem of subrange exhaustion in a
loop of the form

i ~= J!rl.n; .
while' (l. -<= max) anii condition~
begin
·
{ s. oihe thing }
:( ; ;; sue·~. (i)
end
·
in conjucd.on 'with
~index= min

var

i : index;

....
When c'Onsiderii:ig Barron and Mullins it was noted that one natural consequence
of the state trans'ition approach was that the subrange variable could not exceed
its bounds.
The pr_eseni:· prbblefu.· is 'therefore solved by this same approach and
as before, prod1'ce~ a II!o;re trans.parent program (figure 3).
The poin.t raised by
John St:i;ait, _an,c1 '.15-~uussa:tl· by .Tully' Bish_o)? ~n. U1J is also covered by this approach.

~

...

Mark "ilb'.i:'tpn ['.5] i:ihnside'!'s two examples each involving a double exit loop and
uses them' as ,a basis' for suggesting a irtodification t>J the Pascal language.
He
encourage,s;_ llh,e use of a deterministic loop which, without any indication

Figure 3.

Bishop 1 s Loop with .stiite transition.

of the fact at the loop control 1evel,can jump completely out of itself and far away
I do. not claim that state indicators can remove the need for all gotos but they Can ·
proV1de a pleasing solution to both Horton 1 s exami)les.
We c'OD:Si.der them in turn.
Binary .sear ch

I.

Horton 1 S program is

f-'

cons I: ma~size = .•. ; succ.maxsize =
var a : array [I .. maxsize] of , .. ,
- - R. : ~axsizei
u : 1 . . succmaxsize;
founjt : boolean; ·
1. :=I;

1
u := n;
loop whi~e (R. -<= u) flag found do
mid := (J\+u) Cliv
if x ~ a[mid]"1:Jien u := mid-I else
- ,Sx > a[midJ then R. := mid+Tei.se
.~found - -end·,
if found' then

z;- :

-

__
-

!--

which is a s:\'ntac't:i.c su·garing of the f.ollowing true Pascal fragment.

t.D

""-l
00

I" .•. ·

'I.•.

. i•~;

.. .
~

··.'ii· .

\:,•···

,)

~

endaftable = ••• ;

·~ ~.!i:f·,;,·

,··

.

,•

~

t ..

aitdbtt:a:i;:lei

itemat : array [span]

E£

bo:t·ri itemat [middle] ·

=

then bo·ttom := inid stillchoppiug;

I-'
<.D

'--!

The computation in both programs is the same but for the extra .test.
'state '<> stil1chopping 1 now at the end of each iteration.
This test can be
implemented (by any compiler anticipating this form of loop control) as a
single jump (jump on zero) so this overhead should be of little concern to us.

2.

Prime numbers
· Horton 1 s program is
canst n

= , ... ;

var p, · d : 2 .. n;

co
case state of

fotiud
absent:
end {case}
Figure 4.

Binary search with state transition

~-.potential_prime ! boolea;n;

loop 'for· p != 2 'to n flag potential_prime ~
lqop !El;: .d := 2 to trunc(sq:rt(p)) do
if p mod d = 0 ~ next potential_prime

:~t~e
end

(p)

which, without the syntactic sugar,is

label I;
·.. ~Gnst n = .•. ,
var p, d : 2 , . n;
potentialprime : boolean;
potentialprime := false;
for p := 2 to n do
be&in .
for d := 2 to trunc (sqrt (p)) do
--if p mod--;f = 0 then
-begin
-pdtenti~lprime := true;
·end·
write(p);'
end

We have seen some illustrations of a particular style of programming.
The state transition technique is applicable to a number of programming
situations and to multi-exit loops in particular.
I (and my students) have
adopted this apP'roach for a number of years and have rarely suffered from
Ba:i:ron 1 s, Horton's or Mullins/Bishop 1 s complaints.·
My respoi;l.se to Barron ap.d
Mullins 1 query 11 What to do after a while? 11 is 11 Know the state yoU' are in!n

~

Horton mentions that only odd numbers and divisors need be tested.
In the
finite ·state approach we still sweep through contiguous n?mbers (although we could
avoid it - as could Horton) but this time start at 5 and test only odd divisors.
Since divisors start at 3 it is senSible to make the loop deal with primes > 3
(hence >= 5).
Accordingly primes <;3 are best dealt with separately.
Apart
from these modifications we stick to Horton 1 s algorithm (figure 5).
There should
be no neeP. to reite.rate previous comments'.

const n ;: :;
~

~

[1]

L.V. Atkinson, 11 Pascal scalars as state indicators 11 , 1978.
(under rev.Lew).

[2]

D.W. Barron and ·J.M. Mullins, 11 What to do after a while",
Pascal News, #11, 48-50, 1978.

[3]

Judy M. ·Bishop, 11 Subranges and conditional loops 11 ,
Pascal News #12, 37-38, 1978.

[4]

Judy M. Bishop, Letter to John Strait,
Pascal News, #12, p51, 1978.

[5]

Mark D. Horton, Letter to the editor,
Pascal News, #12, 48-50, 1978. ·

[6]

Kathleen Jensen and Niklaus·Wirth, Pascill - User Manua:l
and Report, Springer-Verlag, 1978.

1

... ;

p, potfactor, rootofp : 2 .. n;

rn

(* Recgiye_d 78/09./1'$ *)

state : (moredivisors, faatorfound, pisprime);

g

=

n <= 3 ~ primesup to (n) ~

begin
primesnpto (3);
for p := 5

_!_

Q.

then

begin { p is od,d }

*****************

rootofp := t;t;unu(sqrt:(p));
potfac.·t.Or

.;=:=.

S;

stat;e :;::; moredivisois;

repeat

if ·p mod potfactor = 0 then state := factorfound
;Lf potfac.tor >;::; rootofp

~

~

state :;:::;; pisprim'e e¢.se

potfac.tor := potfactor + 2
until state <> moredivisors;

,4

if state = pisprim end { p is odd }

':·~!·
.'·. : ''.~~I .7! -·, •1
1

1

~;.\)> ·~·

j ,. ~ \; , ,1' 1 .'.

t. '

I

Fig/l;;ti!·5! · 'M,/,e 'A\imb~rJ

w.t'l:h

state transition.

,1··

.,, ·' :'
j,'_'

'°'!''

Open F:o·rum .for Members

Johnson Controls, lnO. .

507 East Michigan Street
Pos l Ofrtoe Box 423
Milwaukee, WI 58201
Tai. 414/276 9200

:. "'.Ofu>AnTiirENf' OF bEFE~·

=
ITT

DEPENDEl\'TS SCHOOLS
WMS'l'ADT CAREER CENTER

.. APO ·New York 09175

21i 11;.y 1978

SUBJECT:

Dear

P?JSQal Use.r's Group
c/o Andy Mickel
University COJllPute.r Cerrter> 227 Ex
208 S,E. Union street
· Unive.rsi~ of Minnesota
Minneapolis, Minnesota 55455
Andy,.

Ou R Ci K-12 school
systems which are using Pascal in their computer> education programs.
Andy, you speak of jobs for Pascal people. We are a large school system
with over> 120,000 students. We invision a real demand for Pascal instructors (teachers) in the next few years, but we need help in getting
started.

I

June 8,

.... ~

Many of our gr>aduates become el!qlloyed with DOD in some capacity. If
DOD, with its 11 Ironmm11 project is noving toward a Pascal based
standard system, it is only natural for its own school system to move
in step with the sama programing language system.

"i

Systems & Services.
Division

Pascal News

Our school computer> group reads with gr'eat interest the developments .
you have presented in Pascal News and additional papers obtained from
UCSD w.citten by Kenneth L. Bowles concerning Micro Computer Based
Mass Education and the Personalized System of Instruction (PSI).
Until such time when we can pilot and impiemmt microbased systems,
we would like, as a first step, to obtain a Pascal implementation for
otu.• installed equipmant. We have in our overseas schools 32 Interdata
7/l6 1s and 3 Univac 90/30 1s with some 200 terminals supporting BASIC.
This office rep.resents the European region and bas special interest
in the Interdata 7/16 implemantation. (Our Pacific region ope.rates
the Univac 90/30 1 s.) These systems are devoted to our instructional
program where one of our goals is to· generate computer> literate youth.

0f/t'ff

University Computer Center
227 Experimental Engineering
University of Minnesota
Minneapolis, MN 55455

CONTR~LS

EUROPE

TO:

. Mr. Andy Mickel

0~HNSON

We are currently designing a process control language for
use in our Building Automation Systems. The language
will be similar to (possibly a subset of) PASCAL. In
the course of our system design we have developed a
need to produce a decompiler which will generate a
program in this process control language given an internal
Polish representation. We would like to know if any
literature has been produced on the subject of decompilation
from an internal version (such as Polish or PASCAL P-Code)
to a block structured higher level language such as
PASCAL. If any of your readers have information on this
topic, we would be interested in corresponding with them.
Thanil: you very much for your assistance in helping me
with this .problem. Also, I would like to congratulate you
on the excellent job that you have been doing with the
newsletter.
Sincerely,

Dave Rasmussen
DR:ph

Thank you,

~~~~
SAMUEL W. CALVIN

Coordinator Computer> Education

P.S.

Enclosed is my application for membership for the
next academic ·year along with the membership fee.

Department Of
HIGHWAY SAFETY AND MOTOR VEHICLES
NEIL KIRKMAN BUILDING

TALLAHASSEE 32304

RALPH DAVIS

COL, J. ELDRIGE BEACH, DIRECTOR
DIVISION OF Ft.ORICA HIGHWAY PATROL

~~~.~,~~ ~AFL ~~NTo0~ RVEECH~~~ ES
~~v~r.~~ ~i;,rr,'!·, ~~~EC1~~~s£s
~~...~~l~NC~~\E~,'.1 IJN~;• Tr:.!: .:'1~ ~ OSRE RVICES

fXZCUTIVE Oll'IECTOR

April 24, 1978

Dear Andy:
I fear that in my hurry to meet the March 20 deadline for
my letter I allowed two errors to slip by. They are unimportant,
but here are the corrections if anyone wants them.
Paragraph 4 line 5:

delete "of".

Paragraph 4 calculations:

should be

1000 transactions/day x 30 separators/transaction
=300000 keystrokes/day
~4 key entry stations & operators
'l<$4,000/month
~$48,000/year

I believe the argument is still valid.

0

since e1y(\ ~

c~~l\~\-\
C. EDWARD REID
Kirkman Data Center
CER:jem

.. .. ... ... ... ... ..

I can't continue; I've done all I can, and my endurance, optimism, good humor,
lifestyle, physical and mental health are all stretched oast the limit. The people
closest to me remind me every day.
I'm also a little upset at the seemingly unnecessary growth of politics about
standards, extensions, and the future of PUG and Pascal itself. The politics from my
point of view seems simply a waste of time. If you reply "it's inevitable," I would
answer that it would have happened a lot sooner had PUG been operated and organized in a
conventi ona 1 and ordinary manner.
What About PUG?
What should happen to PUG and Pascal News? I don't know exactly, but there are
several possibilities:
1. Disband the organization.
2. Affi 1i ate with a professi ona 1 society.
3. Institutionalize ourselves and remain independent.
4. Keep PUG the same, but decentra 1i ze the work.
Most PUG members I've talked to would like PUG and Pascal News to operate informally,
factually, clearly, and in a friendly manner as it has in the past. One person pointed
out that by not being formalized, PUG was not sus:eptibl e to corrupting influences such as
political, social, or economic gain for personal benefit.
As a fifth alternative, I somewhat doubt that anyone of you will be crazy enough to
step forward and volunteer to take on all the responsibility like I did from George
Richmond three years ago. Therefore I didn't include it in the list above.
Disband the Organization
I occasionally have entertained the idea that perhaps the proper ending for an
unconventional organization like PUG would be to simply shut it down. ("For one brief
shining moment there was Camelot.") I hinted at this in the Editor's Contribution in
PUGN #12.
Shutting PUG down might not be such a bad idea if you realize that entities can
outlive their usefulness. In the long term such a decision could be considered brilliant.
You must realize that we have largely accomplished two important goals:
1. Making Pascal programming a respectable activity.
2. Getting an officially-accepted Pascal standard.
However, my friend Steve Legenhausen told me that when the Whole Earth Catalog project
was stopped, 14-odd cheap imitations appeared, and wouldn't this also happen to Pascal News?
Actually, one of the reasons I've reprinted the roster is to provide insurance against
PUG collapsing--any member had all the information necessary to restart the organization.

Affiliate With a Professi-onal Society
TWIN CITIES
Please realize that with close to 3000 members in 41 countries, PUG functions as one
of the 10 or 15 largest computing organizations in the world. We're certainly one of the
most internati ona 1.
78/12/01
That is why we are a very desirable "plum" to be annexed by the Computer Society of
the Institute of Electrical and Electronic Engineers (IEEE) or by the Association for
Open Letter to all PUG members
Computing Machinery (ACM) Special Interest Group on Programming Languages (SIGPLAN).
from Andy Mi eke 1
They have made overtures to us recently, and I asked that they put their offers in
The Party is Over
writing for publication in a future issue of Pascal News.
I'm tired and want to quit coordinating PUG and editing Pascal News (effective
Although I think we in PUG do far more to promote good programming ideas and practice
any time after 1979 July 1). (*Besides, I turn 30 (base 10) on May 4 and you'll no
than do those organizations (and indeed, in spite of them!) they would offer us subscription
longer be able to trust me! *)
and publication services and a guarantee of continuity. The closest example is STAPL
(Special Technical Committee on APL) within SIGPLAN. But simply looking at STAPL and its
As I said in this issue's Editor's Contribution, my ability to "coordinate" PUG
and edit Pascal News may be the best I can do but doesn't seem to be enough. One reaso publication Quote Quad might make you forget the idea altogether.
is the one I mentioned in PUGN #12: PUG is getting too big for me to handle.
The rates for membership would surely go up, and the "membership services" would not
be much better, and the publication and the group would no longer be independent. In fact
you would have to join the parent organization (at absurdly high rates) or else pay nearly
$10 more than you now pay for a PUG-only membership.
UNIVERSITY OF MINNESOTA

University Computer Center
227 Experimental Engineering Building
Minneapolis, Minnesota 55455

Open Forum for Members

CJ

J>
(/)

n
J>

r

=
rn
(/)

:.:::J

rn
n
rn

f-'
LO
'-..j

00

The simple fact that Pascal News would lose editorial freedom (manifested for example
by our printing paper cli~s and crab claws on the cover--or2~i!ccepting advertizing, etc.)
is a .major concession.
Personally, I've always been against this idea, because I never liked the way I was
(and am) treated as a member and subscriber to SIGPLAN.
Unfortunately, by being late on issues such as this one, I'm not doing much better!
Institutionalize Ourselves and Remain Independent
The most familiar refrain recently among PUG members besides "Keep up the good work!"
and "Hang in there!" is "Keep PUG independent!".
Institutionalization would solve one big headache for me: I was never formally
selected to manage PUG,
because I've always considered my work "volunteer." But some
people have demanded that I "represent PUG" at special conferences and make "official
statements." I've always hesitated, because at best I realized my authority was by
default, not democratically chosen.
These people always got angry at my hesitation. (Another example of Politics that's
making me depressed.) I would always point to the simple mechanism of using the Open
Forum section in Pascal News to air their ideas.
PUG is in good shape financially (a specific report updating the last report in
PUGN 9/10 will appear in PUGN 15). Recently, we have been using the extra $2 of the new
$6 membership rate here at PUG(USA) to hire some clerical help (about ~of a ~-time
secretary).
. But, you must recognize that technically Pascal User's Group is a non-profit activity
of theLJniversity of Minnesota (Computer Center) and that Pascal News is a University of
Minnesota publication. I have taken steps all along to ensure that PUG could be transferred
somewhere else within one week (really!).
The tremendous benefit we've derived from our warm University of.Minnesota home
should not be taken for granted. Besides paying my salary, the U of Mhas provided good
production, publication, and mailing facilities. These are the major reasons the cost
of PUG and Pascal News in my opinion remains reasonable. And we've.done what we have
without prostituting ourselves by selling advertizing, without selling the mailing list,
and without accepting subsidies from special interests (such as computer companies).
Institutionalization requires a constitution and bylaws, offic~rs, elections, and
more of the same old thing (SOT). PUG member Richard Cichelli wrote a proposed
constitution and sent the following note to me on 78/08/30:
"I hope this is a good enough start. Pl ease work over the
bylaws dues section to reflect the international situation."
- Rich (Gone Fishing!)
The proposed constitution follows this letter.
In my opinion, this is the best alternative if you want to see PUG continue. However
I do QQ:!; want to serve as any of the officers or
the editor under a constitution and
bylaws-tr will have my hands full simply affecting the transition over the next one or two
years!). The constitution would enable PUG to use authority in standards discussions· and
in organizing projects promoting rational programming methods. The constitution would
also give.us the independence we would need to sell advertizing etc., in order to keep the
cost of membership low. I don't want to waste my time making money for PUG. Count me out.
I'll be the first person to step aside and not be an obstacle to the greater interest.

as

Keep PUG the Same, but Decentralize the Work
This is not an alternative as far as I'm concerned. It seems that decentralization
incurs the horrible tradeoff of high overhead and communications problems. If you say
'.'nonsense" then you may be right, but then I'm the wrong person to coordinate activities.
My involvement in a highly decentralized scheme would be less direct work on PUG and
Pascal News and more a role of an administrator.
I'm not an administrator or editor; I'm a systems programmer!
People have asked me if there was any chance that I want to do PUG full-time. The
answer is 11 no. 11

Summary
I (with the generous help fromWm~ny dedicated people) have had fun organizing PUG
and putting together Pascal News.
e ve done so very informally.
I assumed the editorship after issue #4 when George Richmond (who had edited for 2
years) gave up because of lack of time (his management was not as far-sighted regarding
Pascal!). PUG was founded by about 35 persons who attended an ad hoc session at the
ACM '75 conference in Minneapolis. I was there and was "volunteered" by everyone to
coordinate. So if George is Phase I, then I am Phase II.
I became involved with PUG because I wanted to see Pascal succeed, and I knew that
something had to be done urgently to make that happen.
I have had fun in trying to produce a creative and refreshingly different and
unconventional publication to promote a programming language. ·At times, it has been
discouraging, and the "bright ideas" offered by "helpful people" have always tended to
point back to the ordinary--the same old thing (SOT).
I assure you that the SOT approach to PUG and Pascal News would not have succeeded
as well. The conventional wisdom would have doomed Pascal to the role of "just another
1anguage." But if Pascal hadn't been an extraordinary 1anguage, even unconventional
tactics would have failed. The combination was irresistable.
Sometimes I've done things differently just to be different: such as printing
paper clips and a screwdriver on the cover of Pascal News. But other differences I
implemented as "improvements" are those I had alwayswanted to see in the magazines I had
subscribed to. Examples: page numbers on the left in the table of contents; a single,
self-explanatory POLICY; enough room on the All-Purpose Coupon to write a 4-5 line
address and comments about anything; easy-to-obtain and publicized backissues; and
"all the news that fits, we print."
·
As for price, I would never want to be a PUG member myself if the cost of membership
went over $10/year '(in 1977dOiTars). By keeping things simple 'and excluding special
rates, services, etc., we have also kept the price lower for a longer time, much to the
benefit of students (who show the way to the future).
Well, if you are confused, so am I! It has been sheer agony to write this letter,
not because I don't want to quit, but because the ideas needed to be stated carefully.
In late October I wrote to ten or so active Pascalers for advice, and I'm grateful
to Jim Miner, Rich Stevens, Rick, Shaw, Tony Addyman, Bob Johnson, Rich Cichelli, and
Jeff Tobias for the advice they offered.
It has been really disappointing to be without the advice of Judy Mullins Bishop,
David Barron, and Arthur Sale. They are three persons I would consider to be among the
closest to PUG And Pascal News since its beginning. I just know it would have been
easier for me if they had responded. Maybe they were too busy.
But, then, that's the problem! Something else must happen. I think it's time for
Phase III.

=

rn

t::::1

rn
n
TT1
td

rn
;o

Sincerely,

·u
:I:>
G>
rTJ

'-I

N

PROPOSED CONSTITUTION
The following a:re Sttbnd:tted as 'a pr9posed Gonsfdtutiou .and initial set of llylaws for
the Pascal Users Group.
The CO'hStittition atid l!ylaws 'Will be accepted or re5ectea by a
simple majority of the ballots (enclosed with this copy of Pascal News) returned to Rick
Shaw before April 15,. 1979·
A few notes about some of the wording in the documents. First, concerning the choice
of au "official" ve-rsion of the organization's name--apostrophas are bad news in
organizational nam.es.
The American Newspaper Publishers Association dropped one from
their name--let' s drop it from PUG.
Secondly the term "Chair" is intended to be
equivalent to the term 11 Chai:rperson11 • It's just shorter and sounds a little less clumsy.
- Richard J.

Cit:helli, August 1978 ·

Constitution.£!.
Article I

Users Group

Name of the o:r;ganization
· 'JJhe name of this organization shall be the Pascal Users Group (PUG).

Article II
·A.
)l.

·Pttrpose of the organization
·~e primary 'obj entive of PUG is to promote the use of . the programming
·language Pascal as well as the ideas behind Pascal.

Specific

October 1978

I believe that the PASCAL USERS GROUF:

ob~ ectives

shall be:

1.

to provide channels of communication among members of
Pascal community (through~.~' etc.).

2•

to coordinate the · efforts of individuals. in forming special iuteres t
groups within PUG concerned With standards, implementations, etc.

3 ..

to coordinate sponsored research into
Pascal.

4.

to facilitate distribution of Pascal software among PUG members.

PASC.AL US ERB GROUF
Official llallot -

the~

illlplementations,

the

international

uses,

etc.

of

should institutionalize itsel:l1 and remain independent.
If so, then I: "

Article III
do

I do NOT _ _ ap'pl!'ove

do

I do NClU: _ _ approve the submitted preliminary Pascal Users Group Bylaws.

Membership

t1!e subini·tted Pascal Users Group Constitution;

A.

General PUG membership requirement
Any person who is interested in the objectives of the Pascal Users Group may
become a member upon .paying the cur:t"ent .annqal dues_.

My reasons fox rejection oJ! either document are:

B.

Vo ting rights
Formal voting privileges consist of the right to vote at PUG meetings and
through ll\ailed ballots on proposed amendments to the PUG Constitution,
Bylaws, and standing rules, and on all motions. made to and by the Chair. All
members are entitled to vat~~
·

should NOT ·instituti ~•Mih a pi:ofessional society:
A'llM S!Gl'lt'AN · ...
· · ·
--l:!ElEE'
crther C

The Chair

lf''O'J:'

.. The. Vl!.ee"Ghai..-

,., .

others

The government of PUG shall be vested in the .Exe.cnt:ive ,Committee which shall
consist .of:

.....,.
'· '.i?he llditor of the Pascal~

Return this

' .
completed bailot ?! .~~ril

' .l:li" most rec~i; prm:lo;ts
.'.~ie~ ,ni~h~s,:;a#;:Laz~e

15, 1979, to:

I

·,.J('·

·,r,. ,•:
'J,

,....
d~:

I!!~

'cii.U el,!!c\tion for
the purpose of filling such office.
'.ll.!l;e:; llient1t~ ·;i£JiV.:S :el,~cted shall take
office immediately and shall hold o££iiie •·tin:H1 1:11..i nll:Xi! ie~ui~ election.
·.

"'

... '•

.Ant Jitembeli ma';\" make a nio.tion.to. i:ii!',Ch'!ili· . Th;!.s mo.t:i.on must
by at ·?*"1: cii:ie si!conil· tb tbe mo1':!.on by another me;.ber.
E.

1.

c.
.d.
e.
f*

g..
h.

acc0J11panie.d

'.

....

'

.

Speci";l me,.tii;ip.s. may b"' called when the Chair, aft:er consulting with other
Execue:Lve Committee members, is convinced that the need is sufficiently
urgeJ:).t.
A special me.et:ing shall be called upon the demand of any five
Execu·hive Committee members regardless of the wish of the Chair.

The Chair shall
a.
b.

b!'

Sjrl!aia:J!' meetings

:.t'

Duties of the officers

E·

Mdtions

preside at all PUG meetings
ctll special meetings at her or his discretion subject to the
limitations of Article V, Section E
appoint .all committees not otherwise provided for
make provision for the discharge m tempo re of necessary· duties of
absent members
s:f;gn all "warrants on t~ treasury of PUG
. see that PUG's regulations are enforced
da:i:'t:'J" out assignments and ;tnstructions dictated by vote of the
membeirship
perform other duties as customarily pertain to the office of Chair

2.

The Vice-Chair shall be an aid 'to the Chair and in case of absence of the ·
Cha:l.r shal:l .]

TOSs:v;1.,m:1(03)Bl2-211l

CAREERS
INC,. .AGl!NOY
A1!9ust zg, 1978

Pascal Use;i:-s Group
c/o Professor Art"ur Sale
Department of Information Science
University of Tasmania
Bar. 2S2C GPO, Hobart, Tasmania 7001
Australia

Mr. Andy Micke·l, Editor
Pascal News
208 s. E. Union St·reet
University of Minnesota
Mi nneapo 1is, MN 55455

D'ear Professor Sale:

Dear .Mr. Mickel:
In review of recent issues of Pascal News, I have noted several
letters from readers in regard to Pascal .jobs. Most expressed amazement in their success in finding PASCAL positions.
I thought it would be of interest to you and your readers that
Computer Careers, Inc. Agency has a full division of consultants
working with· PASCAL type programmers. The demand for the higher level
block structure languages is growing everyday. We have been quite
successful in assisting both recent graduates and experienced professionals in their pursuance of PASCAL ca.reers.
If we can be of any help to you or your readers, please feel.
free to ca11.

SJ!tr.~J, /
.{t;:d.u~~··
'.
Clluck Bi=aar.egard,
.
Manager ~ Saftware Sys em Div.

Cfl,/r

t~j

~ D cllJ;uter

Enclosed please find our renewal remittance $A56, for the Pascal
Usera Group membership 1978-1979 for seven of
M. Arisawa
T. Saisho
T. Hikit.a
s. Yoshimura
N. Tokura
M. Takeichi and
E. Wada.
our addresses remain unchanged. As to other Japanese members, Messrs.
H. Ishida, "M. Watanabe, K. Noshita, N. Wakabayashi and :a:. Nishioka have
renewad alre;;idy or" paid niore than one year's members fee. Mr. Kishimoto
is presently in the United ·states.
·
I am so sorry for not writing you earlier. We.are one of the first
group who introduced ~ascal.in teaching programming. In my class, all
the examples were swi~ed ea Pascal since the fall semester of 1972,
and the first Pascal compiler hecariie available in the summer of 1974.
Since then at the University of T9kyo, three versions9f Pascal compilers
have been ins·l:.alled, and all the compilers s,re intensively U$ed. At our
laboratory, a pretty printer for Pascal has just been completed. The
prst.ty pr;i.nted autpll.'f;. is obi;aind thl;,ot;igh the phototypesetter which really
generates' very high qual:i..ty docwnents; B,esiC\es this, .wear~ still
consider1'ng, of rewriting the Pe,sc.a:J.,repo.r'l:,.in moJ;'e.a:ccurate and understandable way. The Pascal compiler ~n Pascal may be imp+oved to become
much mo:re Pascal like,. that is,, with f'Q.ller, Pascal spiri t.s.
I hope we are able to see each o.ther at the IFIP c;,ngress two
years lai;er, in 19lJO .

. Enc1Qsures

•~ .ff&·

September 8 1 1979

'· .,.
1!!$tlf!fiSI. \1Jl•.H'

·"

; ... "

•Mttoll1lld.!l\l/e~i!.
l.O
~

00

Europ~an Office:
Heuberg 12
4051 Basel, Switzerland
Telex: 63972

3$20 U.S.Route 22,SQtnerv11Je, Ncm Jersey 08876 • (201) 534-4148
Cable AQdre~;

nHealt~pro''

23 September 1978
Mr. Andy Mickel, Editor
Pascal News
University Computer Center: 227 EX
208 SE Union Street
University of Minnesota
Minneapolis, M!l 551:55
t·ear Andy:
As •·Pascal Coordinator·' for the Amateur Computer G!"oup of New
Jersey (ACG-NJ), I am in a position to report some good news
about the enthusiasm for Pascal amens computer hobbiests in
the hew Jersey area:
·
a. The ACG-NJ has taken advantage of the group
subscription offer of Ken Lowles• group at the University of
California at San Diego. Approxifuately twenty members have
obtained the UCSD i~plementation throu~h the ACG, and at least
five have it "up and running• on their personal systems. Most
of these systet1s are 8080/Z-80 microcomputers, although there
are two or three L5I-11s as well.
b. I zave a brief talk on Pascal at this ~onth's ICG-NJ
~eeting, which was well received; I have also been invited to
speak on Pascal to the Rew York City amateur co~puter group in
December.
c. it least sixty people attended a "Pascal Users' Group"
session Et the 'Personal Computing '78 '' show,. held in the
Philadelphia Civic Center at the end of Au~ust. This turnout
was mildly astonishing in view of the fact that the session on
Pascal was R last-minute addition to the proHram, not
publicized except by posters put up on the fir~t day of the
show, and scheduled on the show's last day. A show of hands at
the start of the session yielded the followinF statistics:
Pone

Persons who tad used UCSD Pascal:
Persons who had

~sed

another Pascal:

Persons whp wanted but did not have Pascal:
Persons who didn't know whether they
wanted Pascal or not:
Persons who !mew they didn 't·;warit. Pascal:
I wish to th?nk Nr. Robert
be at the show on business,
some of the questions.

~ofkin

fo~

25
6
None

of UCSD, who happened to

stopping by and helping field

d. Three other noteworthy presences at •pc '78" were those
of three companies selling UCSD Pascal with their computer
systems:

(1) Northwest Microcomputer Systems, of Eugene, Orgeon,
demonstrat·ect their "Programmer is Workbench", ·a desk-top system
containing an 8085' microprocessor running at 3 (optionally 5)
MHz 1 55K 8-bit bytes of memory, dual magnetic diskette drives,
and a vipeo display, priced at $7495. I understand that two
people from Zurich wanted to pay cash and walk away with one
of the two systems on d~splay (they didp't because the system
wouldn't have run on Swiss electrical power without a
modification too extensive to be done at the .show)·, and that
Carl Helmers, editor of BYTE magazine, was respomsible for the
disappearance of one of the systems on the second day of the
show, bein& •unable to resist the desire to take it to his
hotel. room aqd play with it".
(2) ALTOS Computer Systems, of Santa Clara, California,
demonstnited their 11 ACS8000• system, featuring a Z-80
microprocessor running at 4 MHz, up to 64K by~es of memory,
and ohe or two magnetic diskette drives. Price for a minimal
system with 32K bytes of I!lemory: and a single .drive: $3,Bl!O,
(This syste·m does not include a .built-in videa .display, J
(3) Alpha Microsystems demonstrated UCSD Pascal as ~
subsystem of their multi-u'ser system, whose CPU is based on
the Wester Digital WD-16 chipset. Workspace available to a
single Pascal user in this system would be restricted to 48K
bytes, but the system supports multi-megabyte hard-surface
magnetic discs as well as (or instead of) diskettes. I regret
I do not have their prices readily at hand.
e. The August issue of BYTE magazine had a cover
portraying "Pascal's Triangle", an area of smooth water with
well-m~rked channels bordered by such ·less hospitable places
as the turbulent "FORTRAN Ocean•, the desolate •Isle of BAL•',
the "JCL Barrier Reef", the "Straights of COBOL" tin which
much commercial traffic is seen), the perpetual fog bank
wherein lie the "exotic and mysterious jungles of LISP", and
the "interactive and weed-filled Sea of BASIC". Several
vessels, ranging from warships to tiny rafts, are fleeing to
the safety of the Triangle,
On a more serious level, the same issue of BYTE contained
five articles on Pascal, including one by Ken Bowles himself
entitled "PASCAL VERSUS COBOL: Where Pascal Gets Down to
Business•. This last article may be especially important,
since there seems to be a consensus among those involved in
the "personal computer• industry that the big market right now
is small business systems, for which the ~reatest lack is highquality software.
A less welcome development is the discovery that the UCSD is
no more immune than any other vendor to the announce-it-early,
deliver-it-1.ate syndrome: I have been waiting since mid-August
for their Release I.5, my phone calls every other week being
taken by a pleasant but apparently not-too-knowledgeable young
person wlio assures me that the Release will be for.thcoming "in
another week or two•. I guess we should be thankful we get
anything at all!
·
·
Keep up the good work!
syicY'!,'.ll~Y)~
,,Y/',..,., ~

,, C,-..,-l

Rod Montr,om~

y'-"-J

P.S.: I prepared this letter on my personal system using the
screen editor that comes with UCSD Pasc·ai. lt works!

\:::1

rn
n

rn

f-'
\0

'--!
00

il'i'RTH' S-(9) ALSCI T-rr;s MH1Sl'.~!G GENEF:ATED CODL l''ASCAL P•l F'ERHAPS IS CDMPLETEr BUT
BUT THESE THREE u::vELS ARE APPROXIMATELY WHAT IS NEEDED.
l l HALSTEAD• MACHINE INDEPENDENT COMPUTER ~'OGRAMMING,
2l HANSEN• ARCHITECl~RE DF CONCURRENT PROGRAMS
3l HARTMANNS• A CONCURRENT PASCAL COMPILER FOR MINI-COMF~TERS
4) M~O, HALSTEA!l'H <:J.l 1~1JF~ NEU: Ac,
!JI': vJrUTE'H Uil Ftll<'f:}TAGE '1PERHAPH TvJCJ (JF( THm::E LE\JELS COlJL.D HE INCLUDrn :i:N 1mrnm TC! m;: :r.MFLI::MENT1;:n
ON A'MJ~::o, MINI, CIR MAXI-COMPUTE!<. PASCAL PO. IN Wil':THIS (71 IN NOT COMPLETE.
(MHJS:r.NG GJ;:NERr',TED CODE AND vJIUTTEN IN A 1-JI.qJ-G;:!:: 1.EVl;:L. THAN POI. PASCAL-H J:N

PUG members might be interested to 1 earn that severa 1 openings
in system software development are available at CA requiring
·PASCAL: and assembly 1anguage experience. The inside track
can be had by writing Dave Robertson (M/S 1175) .
Keep up the.good work,

D, };""~

o.

J. Maine
Research Scientist
M/S 1175

P.S. Bob Hutchins says HI to his friends at PUG!

UNIVERSJTAT HAMBURG

INST!TUT FUR
INFORMATIK

CALIFORNIA

INSTITUTE

OF

TECHNOLOGY

Prof. Dr. H.-H. Nagel
PABACENA. CAL.IFOANIA Dll.11:15

r

..,

lnrtltut tar lnfotmattlc
l Hambul"J 13, Sc:bllttcntra.Bc G6.7l

DIVISION OF BIOLOGY

Mr. Andy Mickel
Editor, PASCAL News
University of Minnesota
University Computing Center
227 Experimental Engineerin~ Building
Minneapolis, Minnesota 55~55
USA

::ue0 '7'e

rn

Andy Mickel
Pem•predier1 CW0-·4:123-~
BchlSrdcnam.:1

151 } Durd!.wa.hl

9.09 (

"

)

Tclex•Nr.: !2 1-4732 unl hh d

Editor, Pascal News
University Computer Center

227 Exp. Eng. Bldg.
Univ. of Minnesota
Minneapolis, Minnesota

55455

.J

L

Dear Andy,
Datum und Zclcbcn. lhre1 Sduclbcnl

Aktcn:i:cldica (bcl A.atwort blttc angebe.a.}

Na/Ja

September 25, 1978

Dear Mr. Mickel,
last week I came around to study PASCAL News no. 12 which had arrived
at my office during the time I was in vacation. I would like to
conf,I'atulate you to the fact that this issue must be the third
aniversary.of starting this activity by you. You have done - in collaboration ~ with other people who followed your example a very fine
job which I consider to be of great importance not only to the
community of people who use PASCAL now. It may be even more important for those who are enabled to obtain information about PASCAL
and its implementations in a rapidly expanding environment of small
system users.
Regarding our DECSystem-10 implementation we have been busy, too.
Currently we are testing an improved PASCAL Compiler Version for this
system which employs a register allocation algorithm to generate
more effective object code. This alGorithm is based on the work of
Ammann. However, we had to modify it to accommodate the special code
generation for the PDP-10 processors. In addition we have removed
bugs_ which had been brought to our attention and adapted the compiler to the more advanced instruction set of the KI-10 processor
(double word move etc.). In addition we removed the special file
variabl<;! TTY introduced for interactive use of PASCAL. We now direct
the standard input/output to the user terminal. According to our agreement we have already modified to the "otherwise" extension recently
agreed upon. We are currently implementing special conversion routines
for input from the user terminal. Instead of aborting in case of
typing errors an error message will be output indicating the error
detected and the user will be pro~pted to retype t~e desired input.
As 1 had promised to N. Wirth I intend to incorporate those extensions for which a standard form will be agredd upon.
Before I obtained the PASCAL News no. 12 indicating the new rates I
had already mailed a check over S 8 to you originally intended to
cover my dues for two years. As I now understand distribution of
PASCAL News to Europe costs ~ a per year. Therefore I suggest you credit these 8 S as my dues for the year ending June 1979. I shall send
the next dues to UK directly in 1979.
YoU[r:_, sincerely,,.,

+i-4-- IA.~

Judy Bishop's discussion of subranges and conditional loops (Pascal News #12,
pp 37, 38 and 51) clearly states a basic problem in standard Pascal: how to keep
index variables within their subrange at all times.

However, her solution does

not seem entirely satisfactory to me because (1) as she noted, single letter prefixes would hinder readibility; (2) the necessary extra type definitions are a
hassle both to write and to read; and (3) the extra allowed value of the index ~ay
in some cases degrade the ability of the run-time checks to stop an error at it s
source.

Some Pascal compilers, such as the Brinch-Hansen DEC-10 compiler in use here
at Caltech, allow the 12£E. •• exit if construction.
~ .. exit if is the most
general form of the conditional loop) since it contains a statement block before

the test of the exit condition (as does repeat •• until) and another statement
block after i t (as does while).
This generality is necessary for a natural solution to some problems, including this one.

Having defined i on the subrange min .. mcix, we can write:

i :=min;
loop
- - (* something *)

exit if (i=max) or (condition);
- - i ; = succ(i)end;
Thus we always have i <= max.
In standard Pascal, a somewhat less elegant but
equivalent construction is available:
i := min;
while ~ do begin
(* something *)
if (i=max) or (condition) then goto 10;
i := succ(i)
end·
W:' (* next statement *)

yours sincerely,

{A-l 1~yJp
Karl Fryxell

t:::!

rn
n

rn

c:
~ ""'°""......,,,,.
1-1¥14.1-13:8 i>.113'

7850 Metro Parkway, Suite 213, Minneapolis, MN 55420 • (612) 854-7472

August 16, 1978

=
f'l

Page #2

·:/)

This leads to the second point.
first

I understand that there recently was a

(annual?) PASCAL standards meeting.

I

1

ve heard from two different

people that the PUG representatives were adamant (to
obnoxious) that nothing in PASCAL should be changed,
not a "," must ever be changed. Is this realistic?
used shouldn't it grow, much like English or FORTRAN

Mr. Andy Mickel
Pascal User's Group

University Computer Center, 227 EX
208 SE Church Street
University of Minne sot~
Minneapolis, Minnesota 55455

the point of being
Wirth has spoken and
As the language is
when deficiencies are

discovered? AFTERALLTHEREAREFEATURESINPASCALWHICHDONOTNECESSARILYMAKEA
PROGRAMEASILYUNDERSTANDABLE.

More important, is this a legitimate stand for a "PUG representative" to
take. I 1 m a PUG member and I don't recall ever being asked whether or not
PASCAL should be changed. Certainly everyone is entitled to an opinion

Dear Andy:

I'm enclosing twelve (14 8 ) dollars for two years PUG dues. If you don't
think PASCAL will survive for that long please return some of my dues.
Some general comments. First in response to "What To Do After A While. 11
you need two new operators:
a

AND THEN

b;

C OR ELSE

d.

In a more serious vein, many PUG articles contain phrases like "stamp out
FORTRAN' 1 , or '1 kill the dinosaur", etc. The articles seem to be written
with all of the grace and charm of a stiff necked missionary trying to
convert a bunch of ignorant heathens. Why is there such an emotional
investment in promoting PASCAL? PASCAL, like most human inventions, has
some good Points and some bad points. PASCAL was implemented on a CRAY-1
Computer by a group at Los Alamos. There also exists a group of 18 short
"kernels 11 , called the Livermore Kernels, which (allegedly) are typical of
the bulk of the computer usage at places like LASL. When coded in PASCAL
the kernels ran (last January) with an average "speed" of about 3.6 MFLOPS
(million floating point operations per second). If a second program is
used to optimize the code generated by PASCAL the rate goes to 5. 7 MFLOPS.
When run using the current CRAY FORTRAN Compiler the rate is about 22
MFLOPS, planned FORTRAN enhancements (for "t:his year") should bring it to
over 30 MFWPS. Now, there are significant differences in implementation
strategies between the LASL PASCAL and CRAY FORTRAN and it would be very
wrong to conclude (from this example at least) that PASCAL is not a good
language. However, with performance ratios of between 4 and 10 (depending
on one's point of view) on a syStem that costs up to $9 million, it seems
ju_st as wrong to conclude that "FORTRAN is obsolete". If PASCAL is to
become a universally used language won't implementation become mp.chine
dependent with additions (and deletions) to take advantage of particular
hardware?

about the future of PASCAL but shouldn't a "PUG representative" somehow
survey his members? It seems to me that most of the ·articles in PASCAL
. NEWS deals with proposed additions or deletions and most of the implemen-

tations mention deletions.
I hope this gives you something to write an editorial about.

Best ,~

Richard A. Hendrickson

(* In a phone call to Dick in early October, I (Andy) thanked him for the letter and

explained that one reason that Pascal is at a disadvantage when compared to FORTRAN
is because of the vast difference in the person-years put into compilers, libraries,
etc. However, I appreciated the data he provided and his feelings. I also told
him that the "standards meeting" he referred to was instead the UCSD workshop on
extensions, and that the so-called obnoxious PUG representative was Richard Cichelli
who indeed upset many persons. Since I wasn't there, I can only repeat the reports
I have heard. I explained that human languages and programming languages are
vastly different, and no, programming languages shouldn't necessarily grow, and in
fact Edwin Newman's recent books (one is Strictly Speaking) deplore the unnecessary
"growth" .in the English language. And if you have a decent Pascal implementation,
ThenThereAreFeaturesinPascalWhichAreExtremelyElegantinAidingProgramReadability.*)

rn
CXJ

I-'

University of Sheffield

Dear Mr. Irish,
Sheffield S10 2TN
Tel: Sheffield 78555
STD code: 0742

Department of Applied Mathematics and Computing Science

Professors

Many thanks for your note on "What to Do After a While". I would
just like to clarify our points of agreement and disagreement and
then go on to explain why we think the sequential conjunction/
boolean operator contrQversy can now die a natural death.
l.

Andy Mickel,
Editor, Pascal News,

4th September, 1978

University Computer Centet!;:
208 SE Union Street,

(al

227EX ,

g

Dear Andy,

g

a

DJ

2.

To POP-2 and RTL/2 remember to add
Wirth' s new language Modula
and Euclid. All of these specify that factors in a boolean expression
will only be evaluated while necessary. The Boolean algebra connotation may be old, but it is certainly no longer strong in the
world of language design.

3.

The andop function l i "wrong". Moreover, the loops in our Appendix
examples 2 and 3 should be repeat's, strictly speaking.

My copy of Pascal News #12, mailed in Minneapolis on June 23rd,
arrived on August 31st. In it I read that the publication deadline date

for-#/13/14 was August 15th, 16 days earlier!

Can this be true?

I hope

not. Please try to squeeze in the enclosed paper 11 Know the state you
are in11 • Although written in great haste it might solve a few problems

for a few people or at least shed a new light on them.
I was interested to read Judy Bishop's comment about booleans
(Pascal News ef=/:.12, page 51). Since first teaching Pascal three years
ago I have encouraged my students to use two-state scalars and case in
preference to booleans and if. The programming style in my enclosed
paper is a natural consequence of this. I have also been following
recent work_by experimental psychologists studying the (detrimeiltal)
effects of negation in programming logic and, in particular, the
negation implicit in else. One consequence was that I submitted a
paper to CACM in March of this year supporting two-state scalars and
case in preference to booleans and if and, of course, praising Pascal
for encouraging this approach. So please note, Judy, your anticipated
paper 11 Booleans considered harmful 11 has already been written!

We could argue on and on about this for ever. Fortunately, the
problem - that of search:L'1.g a list to our satisfaction - has been
solved in a completely novel way by Laurence Atkinson of Sheffield
University. He brought to our notice the following solution which
takes account of the fact that there are three states in the loop,
represented by
~~~
i<=n and a [iJ <,.item
i<:n and a(i] = item
i;>n

scanning
found
not there

Solution 4. USE A STATE VARIABLE
var table
array CJ. .. maxsize) Qi whatever;
state : (.scanning,found,notthere);

sincerely,

index:=l;
state:= scanning;
repeat
if index1>maxsize ~state:= notthere else

L.V. Atkinson

if tableCinde:xJ<= item~ state:=found else
index:=index+l
until state<> scanning.

*****

It may not be as short and sweet as your favourite solution but it
works for all cases and does not need additional elements.
Incident.ally, this method still requires index to be declared over
1 .. maxsizeplusone. (See Mullins PN12 (1978) "Subranges and Conditional
.Loops").

University of the V"Jitwatersrand, Johannesburg
DEPARTMENT OF APPLIEb MATHEMATICS
1 Jan Smuts Avenue, Johannesburg, 2001, South Africa
Telephone 39-4011, Telegrams 'University', Telex 8-7330 SA

Mr. T.M.N. Irish,
5 No:rne Way,
Sudbury,
Chepstow,
Gwent NP6 7BB,
United Kingdom

i<=n then

=
rn

Cl:>) g C.i<.=n) filill (a [iJ = ... )
While this may be a valid distinction, i t is a hard one to grasp.
After all,. the a CLJ in (a) starts off as a factor~

University of Minnesota,
Minneapolis", MN 55455, U.S.A.

"'tcturs

W:e. take your point about potentially undefined factors. liihat ycu
are saying is that the a[,iJ in (a) below is permissable because i t
is an expression, but the a(i) in (b) is not, because i t is a factor.

I think we should let this matter rest
won - we can't have undefined factors,
in functions. Pascal is a double edged
for those who care to use i t properly,
telephone ext

Best wishes

your reference
our reference

da\a

JMB /SW

27 September 1978

r~·

Judy Bishop

1

now. In a sense no-one has
you can't have side effects
sword, but i t is very sharp
as Atkinson has shown us.

t::J

rn
n

rn

pAS CAL

ST A N D A R D S

or Rick Shaw
Please direct all enquiries for this section to Tony Addyman
Systems Engr. Labs
Dept. of Comp. Sci.
6901 W. Sunrise
Univ. of Manchester
Ft. Lauderdale, FL
Oxford Road
33313 USA
Manchester, England
M13 9PL U. K.
Much has happened since issue #12 last June. Rick Shaw is now Tony's "right hand" in the
USA. Thanks to Tony and Rick, Standards discussions are placed within the Pascal User's
Group where it belongs. Arthur Sale was selected to chair the Australian Standards Assoc.
colllTiittee on Pascal Standards (MS/20).
On 78/06/18, Niklaus Wirth wrote that there was one error in the EBNF syntax published
in Pascal News #12, June, 1978 on page 52. The definition of FieldList should be:
FieldList ~ FixedPart [";" VariantPart] I VariantPart
Below are reports from Tony, Rick, and Brian Wichmann. Rich Cichelli reported that when
they are ready, he will distribute the Wichmann-Sale Validation Suite and a standardsconforming checking program. (There exists a similar program developed for Pascal programs
by North-American Philips Corp. which checks to see if a program conforms to the language
accepted by the Pascal-P compiler.) Rich expects that he will be able to distribute this
software for a reasonable fee.
Tony's working group produced a third draft of the BSI/ISO standards document which will
appear as PUGN #14 (January, 1979). The BSI/ISO standards effort, incidentally was
unanimously endorsed by the participants of the UCSD workshop on extensions in July. On
October 11, it was reported that the ISO vote on the BSI proposal was 8 in favor (U.K.,
U.S.S.R., Brazil, Canada, Italy, Germany, USA (with qualification) and The Netherlands
(with qualification); 1 opposed (Japan), and 10 abstentions (!?). Also in October, ANSI
announced the formation of X3J9, a committee for examining the ISO standard to be adopted
as an American standard.
Rick Shaw, Rich Cichelli, and Jim Miner will attend as PUG's official representatives to
the December 19 meeting.
News from the International Working Group on Pascal Extensions
In PUGN #12 we announced the formation of this group: a small number of competent
implementors of "major" Pascal implementations were chosen by Niklaus Wirth. Why only
a few people? As Bob Vavra stated in #12, a PUG committee-of-the-whole is unthinkable;
with everyone interacting it won't work. We must rest assured that if someone has a great
idea, it will certainly be recognized. Even with a few people, it has been an overwhelming amount of work (forests of paper have been consumed!). So the project is
delegated to a small group for good or ill. Here is the invitational letter from Niklaus:
EIDGENOSSISGH~ TEGHNISGHE HOGHSGHULE

ZORICH

A recent visit of Professor Jorgen Steensgaard-Madsen from
Copenhagen, implementor of Pascal for the Univac 1100, has
brought up the topic again. We have had some refreshingly
productive discussions. The gist of them is that we should
try to obtain a consensus among a few implementors of Pascal
on major computers on at least some of the pending problems.
Their agreement to work on such a consensus and to implement
the results on their machine would in our opinion be the most
effective way to reach a standard that does not only exist on
paper and evokes a lot of discussion and controversy, but will
effectively be adhered to;.

=
rn
(/J

Jorgen has agreed to work out a draft of a working document
within the next two or three months.
We are solliciting your
suggestions.
If a positive response should emerge, we would
envisage a meeting, preferrably sometime this summer.
I would
appreciate to know your reaction to such a plan.
The draft document to be worked out rests on the basic assumption
that Pascal as defined by the Revised Report shall essentially
remain unchanged.
It shall concentrate on three topics:
1. Standard representation of programs in terms of standard
character sets, and definition of the set of standard procedures,
types, etc., 2. Clarification of issues that are left open by the
Report (such as type equality), and 3. Extensions. We agreed
that the following topics would be included:
1. Specifications of the types of parameters of formal procedures.
This would be the only point involving an actual change of
Pascal, since it would require that such types be specified.
2. Array parameters, especially the possibility of omitting the
specification of index bounds for formal arrays. This might
or might not include dynamic actual arrays.
3. An

11

'='

rn
n
rn

otherwise 11 clause in the case statement.

4. Structured constant definitions.
5. External procedures and

11

forward 11 declarations.

6. Standard procedures for reading text files according to the
program schemata used for regular files.

I-'
LD
'..J

co

I am looking forward to your reply and suggesions and hope that
with your dedicated help a contribution towards a much discussed
goal may evolve. Please send a copy of your reply directly to
Jorgen.
Sincerely yours,

Jnstitut fQr lnformatik

January 30, 1978
Prof. Niklaus Wirth
Dear Andy,
The "Standardization of Pascal" is a recurrent theme. As you
probably know, I have been rather reluctant to get involved in
such an effort, being aware of the time-consuming nature of
ill-defined and politics infested endeavours. Nevertheless
I am also aware of some genuine motivations for obtaining a
11

standard 11

•

cc: 0. Lecarme, Universite de Nice, France (CII)
A. Mickel, University of Minnesota, USA (CDC)
H.H. Nagel, Oniversitat Hamburg, GerJllany (DEC)
J. Steensgaard-Madsen, University of Copenhagen, Denmark (Univac)
J. Tobias, Australian Atomic Energy Commission, N.S.W. Australia(rnM)
J. Welsh, Queen's University of Belfast, North Ireland (ICL)

""

rn

00
'...N

Jim Miner and I suggested in February in our response to this letter that Arthur Sale,
Tony Addyman, and Ken Bowles be added to the list because Arthur's Burroughs B6700
and Ken's microprocessor interpreters were major implementations, and Tony had been doing
all of the standards work so far. They were added. We promised ·in issue #12 to report
on the results. In the 3 months of activity (from April to June) no one would have
predicted the amount of controversy and heap of paper generated by the 10 participants.
It is an example of the "frailty of human interaction as opposed to problems caused by
individual personalities." Nevertheless the Working Group rebuffed the hack changes done
by individual implementors by concentrating on just a very few issues. We finally agreed
on some results. Our first result involved a conventional form for the almost universal
extension providing an "otherwise clause" to the case statement. Arthur Sale presented
-the report below for publication:

(b) Replace the production for case-statement by:
case-statement
11

=

expression

11

case-list-element
[

11atherwise 11

of11
11;11

case-list-element

statement

11 ; 11

statement

J

=
11

end 11

(c) Add the following text to the explanation of the semantics of the
case statement in section 9.2.2.2:
"If there is no constant in the case statement whose value
is equal to the current value of the selector, then the
group of statements between otherwise and end are executed.
If the otherwise part does not occur, thenTrograms which
cause t~s to occur in execution are invalid. 11

International Working Group on Pascal Extensions
Consensus Position on Case defaults

case 11

5. Implications for variant records

The Working Group considers that no corresponding change should be made
in the syntax of variant records.

1. Background

The International Working Group is a group of implementors of Pascal
set up by Ni:,laus Wirth and the Pascal Users Group to responsibly draft
some key extensions to the programming language Pascal. The following
report details the first consensus decision by the Group, and is published
in Pcu.c.a.f. New-0 in the interests of other implementors and to achieve
rapid dissemination of information.
The term aonventionaZized extension is used here to mean that the feature
described is not to be considered as part of the standard language Pascal,
but rather that some implementations may include the featu;re in accordance
with the conventions suggested by the Working Group. .The purpose of
conventionalizing extensions is to

(i) enhance portability of programs which use the extension, and
(ii) ensure a concern for the integrity of Pascal in making extensions.

6. Considerations taken into account
In recommending this syntax and semantics, the Working Group has
considered many alternatives, including
(a) the use of alternative word-symbols, including else,
(b) other syntax constructions,
-(c) what the 'undefined' actions might be, and
(d) whether the extension was needed and added to the power of
the language.

NOTE
In the creation of a draft standard, the wording of the Revised Report
may be altered, with consequent effects on the phrasing of this extension
note. The syntax and semantics will not alter.

The following minor extension to the language is the first consensus
decision by the Working Group and is to be regarded as a conventionalized
extension.

2. Notation
The modifications to the syntax will be described in EBNF notation, as
this is likely to be the form used in the draft standard for Pascal, and
can be used to avoid repetition or the introduction a~ new non-terminal
symbols.
3. Purpose
The extension described allows a construction to which control is transferred
if the selector expression of a case statement fails to match any case
constant (label) in the statement. The construct is often used in the
writing of lexical analysers so as to ensure robustness agains.t unexpected
input.

The full specification of all parameters to procedures and functions which are thenselves
parameters was agreed on. Discussion of this topic was very influential and resulted in
its i~cl~sion in the third working draft of the BSI/ISO Pascal Standards document. Its
descr1pt1on appears in #14, so we won't waste room here.
In July the UCSD Workshop referred important extensions to the Working Group, such as
conformant array parameter bounds.
On August 24, Jorgen Steensgaard-Madsen had to resign as coordinator of the Working Group
b~cause.he began.spending a sabbatical year. Charles Fischer of the University of
W1scons1n took his place to represent Univac implementations. Jim Miner and I are now
coordinating the Working Group. The current topic of discussion is conformant ("dynamic")
array parameters, which are important for building practical subprogram libraries for
both numeric and non-numeric applications.
- Andy and Jim

4. Modifications to the Report
(a) Add to the list of special-symbols in section 3:
11

otherwise

11

Dear Andy

*******
PASCAL test suite

12 June 1978

Readers of PASCAL News will be aware of the standardization effort that
is.being undertaken in the UK under the auspices of the British Standards
Institute.
As part of that effort, I am collecting together (with

rn

,
'

Arthu:r Sale and others) a suite of test programs designed to illustrate
trouble spots in the language definition (and potentially in compilers).
When the standardization is completed, it should be possible to use the
suite to validate compilers, assess their performance or diagnostics as

well as giving some indication as to how they match up to the standard.
Anybody who would like a copy of the tests or who would like to contribute
to the tests should write to me.
I am not publishing the tests at this
junctu:re since they will change rapidly over the next year.

September 12, 1978

ENGINEERING LABORATORIES

Department of Industry

NATIONAL PHYSICAL LABORATORY

You:rs sincerely

Teddington Middlesex TW11 OLW

U.K.

Telex 262344 Telegrams Bushylab Teddington Telex
Telephone 01-977 3222 ext

EA Wichmann

THE STANDARD
PROGRESS REPORT NDMBER
15-9-78
This report will necessarily be brief, since time spent writing the
report is time that cannot be spent on the draft.
At the April meeting of DPS/13/4 it was decided that we should make
an attempt at preparing a draft. Up until the April meeting our
efforts had been largely dir 0 rted towarrls identifyin<:< the problems
rather tnan the sol utirms.
Al though production of the rough draft
was rather behind schedule (largely due to exoimination marking by
the university members of DPS /13/4) I was able to take a copy to
LaJoila.
This proved to be very valuable. An improved draft was
presented at the September meeting of DPS/13/4 at which a number of
alterations were agreed. These alterations are currently being made.
When completed, this working document will be given to !JSI for the
necessary editorial and other processing before it is issued as a
draft for public comment.
When I was in the USA this summer it was my belief that I could
arrange for the draft IlS to appear in Pasc~l News. 'I'his will not
be possible, unfortunately. However, I will be submitting to Andy
Mickel a copy of the working document which DPS/13/4 passes to BSI,
The technical contents of this document will be the same as the draft
unlPss any errors are detected and corre>cted by the L3I machinery.
The decision to prepare a draft for public comment doPS not mean that
we have.or even believe th;it we hove, resolvP.d all the  .send a commentary on the working document along
with the wor'<:inq document, in an attempt to highlight those areas
which currently are causing conr.ern.
In the next issue of Pascal NYNAN
WFS/esl

i?~
W. F. Shaw

co
\Jl

Convenor - DPS/13/4

6901 WEST SUNRISE BLVD., FORT LAUDERDALE, FLORIDA 33313 (305) 587-2900

american national standards committee
~

. j.~· ~l.ll"'°\ .

·i

j

--,.,s

i

;

j ' UNIVERSITY

·J

OF MINNESOTA

·TWIN CITIES

William F. Hanrahan, X3 Secretary
American National Standards Institute, SPARC
Suite 1200
1828 L Street NW
Washington, DC 20036

University Computer Center
227 Experimental Engineering Building
Minneapolis, Minnesota 55455

X3-computers and information processing
X4-office machines and supplies

(612) 373-4360

op11r11tlng under the proc11duras of the
American N11tlon11l Standards Institute

NEWS RELEASE
October 23, 1978

Dear Wi 11 i am,
I am writing to you regarding an article appearlng in the 28 August Jssue of
Computerworld on page 27 about the proposed ISO Pascal Standard.
I only hope that
this letter is not too late.

C. A. Kachurik
202/466-2288
PASCAL PROGRAMMING LANGUAGE STANDARJJS COMMITTEE FORMED BY X3
Washington, D.C. -- "Programming Language PASCAL 11 is the responsibility of a new committee
under American National Standards Committee X3. Identified as Technical Committee X3J9
the initial task of the technical committee is to prepare q proposal for standardizatio~
of the PASCAL programming language and obtain approval of the proposal and program of work~
Committee work will be aligned closely with the international standards subcommittee on
PASCAL, as well as on-going work in the Federal Government, domestic professional societies,
equipment manufacturers, and other interested organizations.

I.am the coordinator of the international Pascal User's Group (PUG) which now
numbers over 2700 members in 41 countries and 49 states. PUG produces the quarterly
Pascal News, of which I am editor. Pascal News has overseen the rapid spread of
Pascal simply by disseminating vast quantities of information (please see enclosures).
American PUG members number about 2000.

The committee is seeking active participation from users of PASCAL, as well as developers
of the PASCAL·language compilers. Interested persons and organization representatives are
invited to contact C. A. Kachurik, 202-466-2288 at CBEMA/Standards, Washington, D.C. for
further details.

I would 1 ike to point out that PUG has been in very close contact with the British
Standards Institute DPS/13/4 group and its chairman, Tony Addyman, which a re producing
a draft Pascal Standard. PUG is fully aware of the activities of this British Pascal
group, the Swedish Technical Committee on Pascal, the French AFCET Sub-group on Pascal,
and the Pas ca 1 group within the German ACM.

X3J9 will be a part of the parent committee X3, which has overall responsibility for
standards on computers and information processing. X3 currently has 29 technical committees
and has completed some 60 standards published by the American National Standards Institute
(ANSI), with as many more in various stages of development. The X3 administrative
secretariat is the Computer and Business Equipment Manufacturers Association (CBEMA).

The PUG membership (which certainly comprises the majority of Pascal enthusiasts)
has consistently held the position that the control of the international effort be l~ft
in British hands.
The over 100 persons attending the Third Annual Computer Studies Symposium on
Pascal at the University of Southampton, held in March, 1977, unanimously approved a
motion that the Pascal Report be standardized with the semantics 11 tightened up 11 and
with no extensions. Tony thus had the support he needed to undertake his effort.
Niklaus Wirth, the designer of Pascal, has given Tony Addyman his enthusiastic
support and is providing technical assistance for the ISO standardization effort.
The recent Pas ca 1 Workshop he 1d at the University of Ca 1 i fern i a, San Di ego, was
attended by representatives of over 15 computer companies having used Pascal for more
than a year. That workshop unanimously agreed that every attempt be made to conform
to the resulting BSl/ISO standard.
We are proud to say that the simplicity of Pascal which separates it from other
languages has carried over into the standards activity undertaken so far.
In a couple of issues of Pascal News, people who supported a general standards
effort naturally thought of turning to ANSI.
It was pointed out, however, that the
ANSI Pascal Standard s·hould be one 1 ine which reads: "See the ISO Pascal Standard,
document number X." just as the ISO standards for FORTRAN and COBOL are one-1 ine
entries twith ANSI's cooperation) which say 1'see the ANSI Standard. 11
Thus ANSI has the opportunity of reciprocating its respect with ISO. Pascal is
a language with European origins, and the major work on standards has appropriately
been left to Europeans. The savings in time, expense, and energy to ANSI or any
proposed American 11 technical committee for Pascal 11 are obvious. We all don't want
national variants for Pascal.

>
(/)

n

For more information, contact:

Wednesday 78/09/27.

u

>

r

=
(/)

t::J
1•cr•urlat:

Comput•r and Bu1lna11 Equipment Manufacturers Auochtlon
1828 L Str . . t NW (Sulu 1200),
W .. hlngton DC
20036

rn
Tel:

202/466-2299

n
!Tl

american national standards committee

X3-computers and information processing
X4-office machines and supplies

NEWS RE-LEASE

operating under the procedures of the
American N11tlon11I Standards Institute

November 10, 1978
For more information, contact:

C. A. Kachurik
202/ 466-2288
PASCAL PROGRAMMING LANGUAGE STANDARDS COMMITTEE MEETING SCHEDULED

Washington, D.C. -- Mr. Justin Walker will convene the inaugural meeting of the newly-formed
X3 Technical Committee on Programming PASCAL, X3J9, Tuesday, December 19, 10:00 a.m. at the
offices of the Computer and Business Equipment Manufacturers Association. The Association
which serves as Secretariat to the X3 parent committee of X3J9 is located at 1828 L Street
N.W., Suite 1200, Washington D.C. Mr. Walker, of the National Bureau of Standards, has
extensive background in the PASCAL area and has developed several compilers.
The committee is seeking active participation from users of PASCAL, as well as developers
of the PASCAL language compilers. The initial task is to prepare a proposal for standardization of the language and obtain approval of the proposal and program of work.
Interested persons and organization representatives are invited to attend, or contact
C. A. Kachurik, Secretariat Staff, at 202/466-2288 for further details.
ucraurl 11 t:

·

Compuur ind Bu1Jn1111 Equipment M1nuhcturan Auocl11tlon
1828 L Str . . t NW (Suite 1200),
Wuhlngton DC
20036

Tai:

202/466-2299

00

en

GE N E R A L I N F o R MA T I o N
Special note: We are pleased to print Scott Jameson's announcement
(below) of the
formation of the PUG Implementors Group. Given the wide variety of previous and current
activities in the implementation of Pascal and extensions,
this group will fill an
important role in coordinating and furthering these efforts. Everyone is encouraged to
read and respond to Scott's proposal.

As this is the first issue of Pascal News in this academic year, let us
this section is organized:

explain

how

-- First, Reports of interest from the Implementors Group.

-- A CHECKLIST to be used as a guide to users, distributors, implementors and
maintainers for reporting the status of Pascal implementations on various
computer sys tem.s.
-- A PORTABLE PASCALs section reporting distribution information about kits used
to produce Pascal compilers for real computer systems.

-- Information on PASCAL VARIANTS.
-- A FEATURE TMPLEMENTATION NOTES section describing implementation strategies
and details of various Pascal features as suggestions to all the compiler
implementation efforts underway.
This section may be replaced
by
the
Implementors Group's Reports.

-- A list of MACHINE DEPENDENT IMPLEMENTATIONS sorted by name of computer system,
giving news of Pascal compilers for real machines.
-- And an INDEX to all the implementation information in current issues and back
issues of Pascal News.

programmers to language designers, require PUG to structure
itself so that it can better respond to everyone interested in
Pascal. One proposal is that PUG form an 'Implementors Group',
to provide a medium for communicating items of interest for those
involved in developing Pascal compilers, and for those desiring
further information regarding specific compilers or machine
implementations.
The Implementors Group can serve the Pascal community
in many ways. Some of the things we hope to do are:

=
rn
(/)

- Publish a newsletter, aimed primarily toward the compiler
developer.
It will contain articles of interest to
implementors, such as how to implement sets, structures of
files,

'core' files,

and the standard procedure 'dispos~',

as

well as guidelines to ensure transportability and compatibility
with other Pascal implementations. 'PASCAL NEWS' has provided
this, but the Implementors Group Newsletter could provide
extended and more specialized features.
- Provide a means for implementors to add to a 'validation
suite', such as that mentioned in 'PASCAL NEWS' tl2 (pages 52 &
54) , or other set of Pascal test cases. A compiler writer
could contribute a program that gave him fits, and see if other
developers had solv~d that problem.
- Provide an information exchange for all persons interested in
Pascal. The PJG offices are inundated with requests for
information on a particular implementation, and the
Implementors Group could serve as a clearinghouse, to channel
these questions to the appropriate persons.
- Provide an organization to evaluate and decide on proposals
for Pascal extensions.
This may include the experimental
language features suggested by the UCSD workshop or

CJ

rn
n

rn

'conventionalized extensions' proposed by other persons.
Note:
It is not economically feasible for us to reprint all of the old information
from previous issues.
We therefore will provide references to back issues when we have
received no new information.
(Use the All-Purpose Coupon at the beginning of this issue
for ordering back issues.) We will be very happy to print new inf~rmation, or revisions of
previous items,
submitted by users,
distributors, maintainers, or implementors. When
appropriate please use the CHECKLIST form. We
prefer
dark
camera-ready
copy,

single-spaced, with wide (18.5 cm) lines.

I Mp

L E ME N T 0 R s

HEWLETT

j

GR 0 u p RE p 0 R T

·rnis list is not complete by any means, and we are looking
for suggestions of other areas where the group can serve all
.Pascal users.

PACKIARD

DATA SYSTEMS • 11000 Wolfe Road, Cupertino, Californla 95014, Telephone 408·257·7000, TWX 910-338·0221

To:

- Provide a forum for implementors and users to interact with
each other. This includes user's comments about a particular
implementation, to give implementors a better feel for what
users think of their compiler (many developers share the
complaint that they don't get any feedback from users of their
compilers, and have no feeling for the number of comoilers in
use or how successful they have been), as well as th~
checklists which implementors now provide for 'PASCAL NEWS'.

PASCAL NEWS Readers

One of the results of the UCSD Workshop on Extensions to
that the Pascal User's Group would evolve
meet the needs of its 2200+ members.
The
diverse interests of these members, ranging from first-time

~ascal was the decision
i~ order. to continue to

Implementation Notes

The logistics of this group still have to be worked out.
I h~ve volunteered to act as the group's coordinator, at least
u~til a more formal arrangement is established.
The membership
will be open to all interested Pascal User's Group memn~rs and a
mailing list will be maintained so that all known implementors
and interested persons receive the newsletters and other

mailings. There will be no fees until we have a feeling on the
number of people involved, and the cost can be determined.
Everyone who is interested in this group would have to
be prepared to contribute in some form.
This could include
to .queries regarding their particular implementation,
and contributing to the newsletter.
I can provide the
clearinghouse function and forward inquiries to the right people
but I don't have the time or the knowledge to be able to answer '

respondin~

I-'
LD

'-I

co

Implementation Notes
questions on all compilP.rs.
'rhe same is true of the newsletter.
It is for all implementors, and is an excellent vehicle to show
off an elegant solution to a sticky problem, as well as a
convenient means to communicate with other Pascal implementors.

11. LIBRARY SUPPORT
(* Libraries
of
subprograms
available?
Facilities for
external and FORTRAN (or other
language)
procedures

available? Easily linked? Separate compilation available?
Automatic copy of text from library into source program
available? Symbolic dumps available? *)

Please send any comments,etc. or requests to oe on tne
mailing list to me:

Return to:

Scott K. Jameson
Hewlett-Packard
1100 0 tlolfe Road
Cupertino. CA 95014
(408)

CH E C K L I
0.

ST

Pascal Implementations
c/ o Andy Mickel
University Computer Center:
University of Minnesota
Minneapolis, MN 55455 USA

=
[Tl

227 EX

(f)

257-7000

Pascal Implementations Checklist

P O RT AB L E p A S C A L S
Pascal-P.

DATE/VERSION

(*Last checklist changes; version name or number, if any. *)

1.

DISTRIBUTOR/IMPLEMENTOR/MAINTAINER

(* Names, addresses, phone numbers. *)
2.

MACHINE

(*Manufacturer, model/series and equivalents. *)
3.

SYSTEM CONFIGURATION

4.

DISTRIBUTION
(* cost, magnetic tape formats, etc. *)

(* operating system, minimum hardware, etc. *)

5.

DOCUMENTATION

(* In form of supplement
Machine retrievable? *)
6.

to Pascal User Manual and Report?

MAINTENANCE POLICY

The most-widely used portable compiler for creating new-Pascal Implementations is
Pascal-P. Basically Pascal-P is distributed from three places in the form of a kit
consisting of a magnetic tape and printed documentation.
Pascal-P is a compiler written in Pascal (almost 4000 lines) which generates symbolic
code for a hypothetical stack machine called a 11 P-machine 11 because it is a low-level
idealized architecture for Pascal. The symbolic code is thus called P-code.
On the magnetic tape are textfiles containing:
- a sample character set collating sequence. This file is also distributed as a listing to
simplify character set conversion.
- the Pascal-P compiler in Pascal.
- a P-code assembler/interpreter written in Pascal which is intended to document how to
write an interpreter in an existing language on the target computer system.
- a Pascal-P compiler in P-code. In other words, the result of compiling the Pascal-P
compiler on itself.

(* How long? Accept bug reports? Future development plans. *)
7.

STANDARD
(* Implements full standard? Why not? What is different? *)

8.

MEASUREMENTS
(* -compilation speed (in characters/sec. please;

this is a
meaningful measurement for compilation speed);
-compilation space (memory required at compilation time);
-execution speed;
-execution space (the memory required at execution time;
compactness of abject code produced by the compiler);
** Try to compare these measurements to the other language
processors on the machine, e.g., FORTRAN.*)

9.

RELIABILITY

(*stability of system (poor, moderate, good, excellent);
how many sites are using it?
when was the system first released to these sites? *)

The person implementing Pascal has several choices. If there is no access to a
working Pascal compiler on another machine, the implementor orders a Pascal-P kit already
configured to the target machine. Configured compilers have constants inserted in them to
specify, for example, the size of each simple data type. These configuration parameters
are given by the implementor on the Pascal-P order form.
(See below.)
After receiving the kit, the implementor can write an interpreter for P-code in
another language (usually takes about one person-month), and thus immediately has access
to a Pascal compiler running interpretively by using the P-code version of the .compiler
included.in the kit.
To produce a real Pascal compiler for the target machine then requires editing of the
Pascal-P compiler written in Pascal to produce code for the target machine (instead of the
P-machine). After recompiling, a Pascal compiler exists in the code of the target machine.
If the implementor initially has access to a working Pascal compiler on another
machine, the step of writing a P-code interpreter can be omitted.

10. DEVELOPMENT METHOD

(* Compiler or interpreter? Developed from Pascal-P
handcoded from scratch/bootstrapped/cross-compiled/etc.? What
language? Length in source lines? Effort to implement in
person-months? Previous experience of implementors? *)

Facts about the Pascal-P compiler:
The current version is called Pascal-P4 and is distributed with
(which is of interest to previous recipients of Pascal-P2).

00

a

copy

of

Pascal-P3

co

- Pascal-P4 represents a major improvement over earlier Pascal-P versions because it
removes data-type-alignment restrictions, is more efficient, includes runtime tests, and
is a more complete implementation of Pascal.
- Pascal-P2 was developed from a phase in the stepwise refinement of Urs Ammann's
Pascal-6000 compiler in 1974 by K· v. Nori, Urs Ammann, K. Jensen, and H. H. Nageli.
Subsequent improvements were done by Christian Jacobi.
- Reliability of Pascal-P4 has been fairly good. As of Spring, 1977, it was distributed to
106 sites by George Richmond (from Colorado), to 37 sites by Chris Jacobi (from
Switzerland), and to more than a dozen sites by Carroll Morgan (from Australia).
The is no promise of maintenance for Pascal-P. P4 is the final version produced at
Zuerich. We do print reports of bugs (and fixes) in P4. Over 25 fixes were printed last
year in Pascal News issues 1111 (pp 70-71) and 1112 (pp 56-57). More are printed below.
- Documentation for Pascal-P4 consists of a 65-page report entitled The Pascal 

Compiler: Implementation Notes (Revised Edition) July, 1976. (A 24-page c~ction list to the original December, 1974, edition is also available.) - Pascal-P4 does not adhere strictly to Standard Pascal (the User Manual and Report). Among the differences are: In North and South America, order from: Pascal Distribution c/o Steve Winograd Computing Center: 3645 Marine Street University of Colorado Boulder, CO 80309 USA Phone: 303/492-8131 In Australasia order from: Tony Gerber Basser Dept. of Computer Science University of Sydney Sydney, NSW 2006 Australia Phone: 6l/2-692 3216 rn (/) Pascal P4 -- Bug Reports 1. nil is implemented as a predeclared constant, and forward as a reserved word. The standard indicates that nil is a reserved word, and forward is not listed as a reserved word. On 78/06/09, Ted C. Park, Systems Development, Medical Data ConsultantS, 1894 Conunercenter West - Suite 302, San Bernardino, CA 92408 (714) 825-2683, reported: 2. "I just came across two more bugs in the PASCAL-P4 contains an obvious error: The standard comment delimiters { and } are not supported. 3. The following standard predeclared identifiers are not provided: maxint, text, round, ~> and dispose. Further, the following standard predeclared identifiers are recognized but are flagged as errors: reset, rewrite, pack, and unpack. 4. The program heading is not required by P4. 5. Non-discriminated variant records are not supported. 10. Pascal Trunk Compiler state~ents (e.g. , rn n rn :::;:: t;d The trunk compiler is the machine-independent part (e.g., syntax analysis and error recovery) of a Pascal compiler in which the code generation has to be inserted in a certain number of empty procedures. We have received no new information on the Trunk compiler since that which we published last year in Pascal News issue #9-10 (p 62). rn :;o I-' lD '-.l CD Pascal J Formal-procedures and formal-functions are not supported. "Non-local 11 goto WRITELN(PRR,FP1:3+oRO(ABS(FP1)>99)*5,FP2:8); P4 and~. notation GETBOUNDS(FSPI,LMIN2,LMAX2); :c=:J None of the following file-related features are supported: Declaration of file types, variables, and parameters. The standard predeclared type text, and standard procedures~' rewrite, 9. Set constructors containing the subrange supported. EQUALBOUNOS (*Thanks Ted!*) The requirement by the standard that the standard files input and output appear in the program heading if they are used. Access to non-text files using read and write. Output of Boolean expressions, or output of real expressions in fixed-point form with write. 8. FL'NCTIO~ PROCEDURE GEN2T is used for (among other things) generating 'CHK' instructions. The fix causes the width of the 1 P 1 field to be 3 or 8 as needed. Without the fix the lower limits of arrays must be less than four digits long! replace P.262 with 6. The compiler does not allow a 11 ; 11 before the 11 end 11 in a record type. (See the bug reports in Pascal News 1112 (pp 56-57) for a fi-;;:-) 7. replace P.136 with comp~ler. [' O' .. '9' J) are not supported. are not Pascal-J is a compiler which translates Pascal to the intermediate language Janus, a totally portable "mobile programming systemn -- even to the point of defining its own character set! Janus in turn is macro-processed via Stage2 which is implemented in standard Fortran. We have received no new information on Pascal-J since that which we published last year in Pascal News issue 119-10 (p-62) · Pascal-P can be ordered from three places (write for prices and order forms). In Europe, Asia, and Africa, order from: Christian Jacobi Ins ti tut fue·r Informatik E.T.H. Zentrum CH-8092 Zuerich Switzerland Phone: 41/1-32 62 11 x2217 P A S C A L VA R I A N T S Pascal-S Pascal-S is a subset of Pascal developed by Niklaus Wirth. We have received no new information on Pascal-S since that which we published las.t year in Pascal News issues #9-10 (p 63) and #11 (p 72). 00 tD Concurrent Pascal A portable pair of Pascal compilers was implemented by Per Brinch Hansen and Al at Cal Tech in 1974-1975 for the PDP 11/45. The system consists of a "Sequential Pascal 11 compiler, a 11 Concurrent Pascal 11 compiler (used for writing operating systems and other concurrent programs), and a 11kernel 11 or ma.chine dependent set of run-time routines written in·assembler. The project at Cal Tech centered around writing a one-user operating system called SOLO in Concurrent Pascal. Both compilers are written in Sequential Pascal. Andy Mickel and I plan t·o publish these letters in the Pascal News. If I receive your letter before February. 2!l, 1979 it will be included in the newsletter. Hartmann In 1975-1976 the system was I look forward to hearing froµ> you. ~ distributed widely (252 sites) and led to the develojlment of a machine-independent version with a different kernel. The distribution tapes ($50) and documentation ($10) can be ordered from: UNIVERSITY OF SOUTHERN CAI.IFOHNIA. I '111.H'I Pascal Distribution c/ o Steve Winograd Computing Center: 3645 Marine St. "University of Colorado Boulder, CO 80309 ·usA Phone: 303/492-8131 The programming language Concurrent Pascal 11 , in the June, Transactions on Software Engineering 1: 2, by Brinch Hansen. (2) A 1975, 11 editorial n Brinch Hansen 1'\ll~. l t" "t.11 I·'·' \I lit >W\I \ •1111111. The University of Manchester Institute of Science and Technology (1) gu~st rn UMIST Publications about Concurrent Pascal include: IEEE PO Box 88, Manchester M60 1 QD Telephone 061 -236 3311 and four articles by Brinch Hansen in the April-June, 1976, issue of Software - Practice and Experience 6, = Youri/!t:: pp 139-205. The articles Department of Computation are entitled: The Solo Operating System: A Concurrent Program11 11 The Solo Operating System: Job Interface 11 · "The Solo Operating System: Procedures, Monitors, and Classes" 11 Disk Scheduling at Compile Time 11 The book Operating Systems Principles by Per Brinch Hansen, Prentice Hall, 1973. An article "Experience with Modular Concurrent Programming 11 in the March, 1977, IEEE Transactions on Software Engineering 3 ! 2, by Brinch Hansen. !±:._ Concurrent Pascal Compiler for Minicomputers by Al Hartmann, Springer-Verlag: Lecture Notes in Computer Science, Volume 50, 1977. The new book The .Architecture .Qi Concurrent Programs by Brinch Hansen, Prentice-Hall, 1977. 27th April 1978 11 (3) (4) (5) (6) COMPUTER SCIENCE DEPARTMENT SALVATORI CoMl'UTER SCIENCE CENTER (213) 741·5501 October 1, 1978 <:::j rn Dear Andy, ·n We heve moved Brinch Ho.nsen 1 s SOLO system on to our 4oK C'fL Modular One computer. We heve found the system to be very reliable and the few bugs thet have been found have been simple to fix. Our main interest is in Concurrent l-asco.1 which we are using as u tool for our work on the development of programming methods for multiprograms. rn :::s: l::>:1 rn :;;o vue to the inhospitable architecture of the Modular One our system runs at only u fifth of the s,,ee.d of the original PDP-11/45 implementation. ;York is under way to improve the speed by the utilisation of a second processor and a fixed head disc. considered. A sim1>le multi-acce:;s system is also being Dear Concurre11t Pascal User, The transportation of SOLO was very straight forw~rd and was accomplished in about eight months by two undergraduute students and one lecturer working part-time. l!'urther details of the move are contained in Nalcolm l'owell' s . report [1). It is now 3 years ago since the Concurrent Pasc;,_l compiler and the Solo Operating System were first distributed. Since them lhe system has been moved to several computers and used for a varieiy of purposes. users or potential users of .SOLO or Concurrent Pascal. We are interested in exchanging informaLion and programs with other Some users (but not all) have briefly reported on their usage of Concurrent Pascal in the Pascal Newsletter. I am now tryiug to get a more complete overview of the current use of the system. Yours sincerely, If you are usiug Concurrent Pascal or Solo the11 please send me a letter. I would like to know which computer you ai;e uaing, how hard it was to move the system to that machine, how reliable the software has been, what applications the system is being u~ed for, and any other comments you m..i.y h;;ive. I would also like to know if you haye published any papers about your e: derived from a user attempt to redefine the output file by declaring a hiding occurrence of the name output at the program level. I f Answer C had been adopted in the Tasmania 86700 compiler, these would have been detected as illegal by the compiler, and other name choices would have been forced on the rn users. Gl CD I--' It is also possible, but inconclusive, to argue from analogy. Focussing an the analogy with other pre-defined identifiers, such as abs and t:rue, then it seems consistent to argue that the definition of output should also enclose the program block. But, of course, these two files (input and out:put:) are the only two var objects which are pre-defined, so perhaps they should be special. This view-reading to implicit declaration in the program block, is supported by the analogy with all other file names mentioned in the program parameter part which must have a declaration in the program block (at least in the CDC-6000 implementation; others allow more free"dom),. If then Answer C is more attractive, the Tasmania B6700 compiler should be changed. In this case however, we shall wait until the draft standard for Pascal resolves the issue. The following test program will show what your compiler does: 1978 April A.H.J .Sale IMPROVED CHECKING OF COMMENTS As is well-knownt comments of the PASCAL kind have a severe disadvantage in that if a closing marker is omitted or mis-keyed, intervening source text Will be treated as commentary until a closing marker is found for a later conunent. Since such errors do not give rise to syntax errors, they may remain undetected in source text for a long time. This feature is exacerbated in PASCAL by allowing comments to continue over line-boundaries, and highlighted by PASCAL's otherwise good compile-time error-detection. = IT! In Burroughs B6700/B7700 PASCAL (University of Tasmania compiler), the problem this creates for programmers (especially learners) has been alleviated by issuing warnings if a semi-colon is detected within a comment, as this is very likely to be the result of an error. Very few erroneous conunents remain undetected, and program question2(output); var output : integer; the change in the lexical analyser is very simple. :t:o o:t:heJt .bnplemen-i:oM and miUn-ta.lneJLO . { if this compiles, you 1 ve probabiy got Answer D } Th.-W .\ugge.<1-tloii ,U, c.omme.iided begin People who use the comment facility to suppress source text compilation (debug code; superceded text) may be annoyed by the many warning messages. They can then suppressed by our compiler option WARNINGS; but better still would be to realise that this is a misuse of comments and hardly likely to enhance readability! output := l; end. A DEVIANT IMPLEMENTATION One implementation, which shall remain nameless as a fitting punishment, lies outside the permitted limits of the Report and User Manual by using a subtle change. In this implementation, elision of the file-name causes the write to take place on an un-named pre-defined file. This has the result that write(output,x) fails to compile unless another file is declared with the name output:, an G) rn Let us emphasize again that even programs which make use of the lookahead buffer will work in the manner defined by the Report, because any program action which actually requires knowledge of the lookahead character will demand that character from the terminal before it can continue. Of course it is the programmer's responsibility to prompt the user for this input, but since the programmer knows that this information is required at a particular point in. the program, he should have no trouble remembering to prompt for it. Consider, for example, the following program fragment, which prompts the user for an integer but allows him to just type a carriage return if he wants the default value (shown in brackets by the program): 2 Writeln (tty, 'NuMber of runs [10] IF Eoln (tty) THEN 8 NE - DE p I MP L E ME N T A T I E ND E N T O NS Alpha Microsystems AM-11 = rn See DEC LSI-11 UCSD. Altair 680b See Motorola 6800 St. Paul. t) l BEGIN 3 4 5 6 7 MA c H I Altair 8800 nruns := 10; Readln (tty); ENO See Intel 8080. ELSE Readln (tty, nruns) J Altos ACS-8000 It has been reported that Altos Computer Systems;.2378b Walsh Av:.; Santa In line 2, the programmer does an explicit lookahead at the first character on the line to determine whether it is the line delimiter (i.e., whether the line is empty). In this case, the lookahead character will be demanded by the run-time system before the expression EOLN(TTY) can be evaluated. However, the prompt for this input Will have already been supplied by line 1. In closing, we should take note of some tricky aspects of the lazy evaluation technique which might at first escape the notice of the prospective implementor. First, lazy evaluation of the lookahead buffer should be performed on all TEXT files, since it is not necessarily possible to determine at compilation which of these will be associated with the terminal (for example, TTY may be passed as an actual procedure parameter). Second, enforcing correct semantics can be very tricky in cases where the lookahead buffer (TTY,) is passed as a VAR parameter [Our approach at CMU is to force the buffer full once at the time of function or procedure in vocation and to leave the user on his own thereafter. Since passing TTY rather than TTYt guarantees the expected semantics, we feel that this approach does not make impositions on the reasonable user. An alternative approach would be to disable lazy evaluation for the duration of the invocation.]. In spite Of these difficulties, however, we believe that the lazy evaluation approach to the interactive I/O problem is substantially superior to the other mechanisms we have seen. 95050; offers a Zilog Z-80 based Clara) CA microcomputer which supports CP/M and Pascal, but we have received no information from Altos. t::J rn n rn Amdahl 470 3 b:J rn See also IBM 360/370. It has been reported that the IBM 360/370 A.A.EC as well as the Vancouver running on an Amdahl 470. systems are :;o f-' lD '-! co Andromeda 11/B See DEC LSI-ll. Apple II Yours truly, ~~r-$J!-7 408/244-5766 See MOS Technology 6502. BESM-6 Moscow James B. Saxe Q. DATE/VERSION. 78/9/21. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Sciences; Moscow, AndyHisgen 2. R.s.s.R.; u.s.s.R.; MACHINE. BESM-6. s. Pirin; Moscow Computer Center; USSR Academic (*No phone number repotted ~) lD 3. No charge i f the requester sends a tape. SYSTEM CONFIGURATION. (* No information reported. *) u J> 4. DISTRIBUTION. (* No information reported. *) 5. DOCUMENTATION. (*No information reported. *) 6. MAINTENANCE. (*No information reported. *) 7. STANDARD. (* No information provided. *) 8. MEASUREMENTS. (* No information reported. *) 9. RELIABILITY. (* No information reported. *) Jl::H~~!~~ (/) n J> r Associate Development Engineer Burroughs B6700 Helsinki (/) 10. DEVELOPMENT METHOD. (* Reported that project has been underway (or possibly complete?) for some time. *) ll. LIBRARY SUPPORT. (*No information reported. *) BTI 8000 It has been reported that the BTI 8000, a 32 bit multiprocessor system offered by BTI Computer Systems; 870 W Maude Ave.; Sunnyvale, CA 94086; 408/733-1122, includes a Pascal compiler bundled with the hardware and that the sys tern software is written in 11 Pascal-X", an extended version of Pascal; but we have received no information from BTI. since that Burroughs B6700 San Diego We have received no new information on this implementation since that which we published last year in Pascal News issues: /19-10: 74. /Ill: 81 except that we have received a copy of the multi-page machine-retrievable installation notes that come with the system. Burroughs Bl700 Zurich We have received no new information on this implementation published last year in Pascal News issues: 119-10: 73. 1112: 57-58. According tO Antti Salava (* 78/10/18 *): "I"'m not working with Pascal nowadays. A year ago I left the University of Helsinki, where I was implementing Pascal-RB compiler on the Burroughs B6700. It's been running now a couple of years without any fatal crashes. We wrote a report on our compiler, too. Hasn't anybody noticed it? It's this: Hannu E.rkio, Jorma Sajaniemi, Antti Salava; 11 An Implementation of Pascal on the Burroughs ,B6700 11 ; Department of Computer Science; University of Helsinki; Report A-1977-1- Copies may be ordered from: Department of Computer Science; University of Helsinki; Toolonkatu · 11; SF-00330 Helsinki 10, Finland. which we Burroughs B6 700/ 7700 (Tasmania) Burroughs Bl800 O. DATE/VERSION. Checklist has not been updated since 78/03. See Burroughs Bl700 Zurich. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. A.H. J. Sale; Pascal Support; Dept· of Information Science; University of Tasmania; Box 252C G.P.Q.; Hobart, Tasmania 7001 Australia; STD 002 23-0561 x435. Burroughs B4700 Fredonia We have received no new information on this implementation since that which we published last year in Pascal News issue: #9-10: 73. Burroughs B5700 Edinburgh MACHINE. Burroughs Model III B6700, B7700. 3. SYSTEM CONFIGURATION. Burroughs HCP version II.8 (with few (minor) local mods). Minimal system to operate not known, but unlikely to be any B6700 that small--storage demands are low, and little else is critical. 4. DISTRIBUTION. Both 7- and 9- track magnetic tapes available. Annual fee of $100 (Australian) is charged to cover mailing, processing, and maintance costs, payable to 11 The University of Tasmania 11 • UNIVERSITY OF CALIFORNIA, SANTA CRUZ DEI\KELEY • DA.VIS • lRVlNE • I.OS ANGEU:S • ruvERSIDE • SA.N DIEGO • SA.N FnANCISCO COMPUTER CENTER 2. SANTA CRUZ, CALIFORNIA SANTA IlARDARA • SANTA cnuz 95060 3 May 1978 RE: PASCAL for Burroughs B5700 This compiler is in current use here and is available from me. I imagine it 1 s also available from University of Wisconsin - Eau Claire as nOt:ed in the December, 1977 "Pascal Answers". The original source of the compiler is Heriot-Watt University, Edinburgh; and any complaints, bugs, fixes, etc. should be sent there. S. DOCUMENTATION. Available documentation: Report R77-l: Supplement to Pascal User Manual and Report ; Report R77-3: Reference Manual similar to B6700 ALGOL's; A Pascal Language card; and A Pascal System card. (* Not known if this documentation is machine retrievable. *) 6. MAINTENANCE. To be maintained for teaching use within the University as well as larger aims. Reported bugs will be fixed as soon as possible, with patch notices to users. Duration of support not yet determined; several other developments are also pending. Each installation will be issued a supply of FTR-forms similar to those used by Burroughs for use in corresponding with us, and.we will attempt to do a professional job in maintenance of the system. The compiler has been stable in code for some time, reflecting its basic integrity. However, new features are added from time to time, and notified to users as patches or as a new version release. The department a,ccepts FTR notices, and will attempt to fix those -0 J> = rn lD Vl which warrant such attention. Some modifications have taken place as a result of user feedback. The compiler was especially designed so as not to generate dangerous code to the MCP, and no system crashes have been attributed to it since the first few months of testing, and then only three. Wally Wedel Computation Center University of Texas-Aus tin Austin, TX 78712 USA 512/ 472-3242 -(Australia, New Zealand, or Oceania) Tony Gerber Basser Dept. of Computer Science University of Sydney Sydney, N.s.w. 2006 Australia 61 I 2-692 3216 Switzerland 01/ 32 62 11 Maintainer: John P. Strait / Andy Mickel University Computer Center 227 Ex STANDARD. Restrictions: Program heading: reserved word program is synonymous with procedure; no parameters (files) are permitted after the program heading. Reason: CDC anachronism of no utility in our installation, and likely to be confusing. Set constructor of form A.. B not implemented. Reason: future plan. FORTRAN control character on print line not implemented. Reason: a ridiculous feature to standardize. Full Pascal I/O not implemented. Reason: future plans. Present I/O scheme is like Pascal-I. Extensions: otherwise in case statement. Various reserved words, character set transliterations. Burroughs comme~facility. File attributes in declaration. Format declarations. Extensive Burroughs-compatible compiler options. (Pascal control comment option mode not implemented). Arrangements are underway to have the implementor of the CDC 7600, Cyber 176 run-time system take over distribution for Europe, Asia, and Africa from the original implementor. 8. 2. 7. MEASUREMENTS • compiles about 20% slower than FORTRAN or ALGOL, but in about 2/3 of their space (for test programs about 4-5 K words on average instead of 8-lOK). Elapsed compilation times similar, though Pascal slower. Speed should be improved by eventual tuning. executes at same speed as FORTRAN and ALGOL (code is very similar and optimal) and takes generally longer elapsed residence time primarily due to MCP intervention to create new segments for record structures (not present in FORTRAN/ALGOL). Elapsed residence times about 20% greater than equivalent ALGOL. rn :E: (/) * MACHINE. Control Data 6000 series, Cyber 70 series, and Cyber 170 series. 3. SYSTEM CONFIGURATION. Minimum Kronos 2 .1, NOS/ 1. 3, and NOS/BE 1. central memory-49K words. Operates under Scope 3.4, 4. DISTRIBUTION. Tape format is Scope internal binary 7/9track, unlabelled, 800 bpi. Specify: person responsible for maintaining the system, your hardware, operating system, and character set (ASCII or Scientific, 63 or 64). Distribution includes machine-retrievable source and object decks, installation notes, and software tools. Arrangements for distribution (cost, etc.) for the new release have not yet been finalized. Contact the distributor in your area in further inform~tion. 9. RELIABILITY. Excellent. Only one.system crash during testing attributed to Pascal. Compiler now in use at 3 sites. True compiler has been in use since 76/10. First released to outside sites in 77/4. 10. DEVELOPMENT METHOD. Compiler which generates B6700 code-files which are directly executed by the B6700 with MCP. Written entirely in B6700 ALGOL. Hand-coded using Pascal-P as a guide/model. All other paths offered much more difficulty due to special nature of machine/system. Person-month details not kept, and project proceeds in fits and starts as teaching intervenes. Project has thus far been limited to two people: Prof. A.H.J. Sale and R.A. Freak (Support programmer). 11. LIBRARY SUPPORT. There is as yet no BIND INFO in the code-file so that i t is not possible to link Pascal to modules compiled by other language processors, but the system contains an extended set of predefined mathematical functions. CDC 2550 5. DOCUMENTATION. Machine-retrievable supplement to Pascal User Documentation of library-support package is available with Release 3. 6. Manual and Report. MAINTENANCE. Will accept bug reports at Minnesota for forseeable future. 7. STANDARD. Nearly full standard. [Restrictions include: standard procedures and functions cannot be passed as actual parameters; file Qi file is not allowed~ [Extensions include: additional predefined procedures and functions; segmented files, conformant array parameters, otherwise in ~ statement, variable init:fi1lization facility (value), and text-inclusion facility for source libraries :J --8. MEASUREMENTS. Compilation speed: 10800/5800 characters per second on a Cyber 74/Cyber 172; Compilation size: 40K (octal) words for small programs; 57K for self-compilation. Execution speed: self-compiles in 65/120 seconds. Execution size: binaries can be as small as 2.4K, compared with Fortran minimum of over lOK. ;=:; rn n rn I-' '..D '-.! 00 9. RELIABILITY. Unkno'Wil, as this is a new release. However, Release 2 was very reliable and was in use at over 300 knowi:t sites. First version of this compiler wa::; operational in late 1970. The present version was first released in May 1974. A pre-release version of release 3 was tested at 10 sites for up to 5 months prior to the official release. See CDC Cyber 18 La Jolla. 10. DEVELOPMENT METHOD. Bootstrapped from the original Pascal-6000 compiler, but developed in a 6-phase stepwise-refinement method. Approximately 1.5 person-years. Runtime system rewritten for Release 3, CDC 6000, Cyber 70, 170 Bethlethem, PA We have received no new information on this published last year in Pascal News issue: /fll: 82. = University of Minnesota Minneapolis, MN 55455 USA 612/ 376-7290 implementation since that which we 11. LIBRARY SUPPORT. Allows calls to external Pascal and assembler subprograms and Fortran (FTN) subroutines. The user library supplied with the system contains many intrinsic procedures and functions in addition to the Standard Pascal ones. u )> CDC 6000, Cyber 70, Cyber 170 (Zurich) O. DATE/VERSION. Pascal 6000 Release 3; 78/11/15. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Distributors! -(Europe, Asia, or Africa) See Ric Collins Univ. of Manchester (CDC 7600) -(North or South America) Ci) * Implementor: Urs Ammann Institut fur Informatik E.T.H. -Zentrum CH-8092 Zurich rn lD m CDC 7600, Cyber 76 (Manchester) CDC Omega 480-I, 480-II 0. DATE/VERSION. Release 3 of the CDC 6000 Zurich compiler (from the Minnesota maintainer) is a common release for the CDC 6000, 7600, Cyber 70, 170 series. See the letter under CDC 6000 Zurich. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. This compiler is essentially the Pascal 6000 compiler modified to fit the 7600 and Cyber 76 machines. A new run-time system is being developed using conditional assemblu in the new Release 3 run-time system by A.P. Hayes; UMRCC; Oxford Road; Manchester Ml3 9PL; England, U.K.; (061-273 8252). 2. MACHINE. Control Data 7600 & Cyber 76. 3. SYSTEM CONFIGURATION. SCOPE 2.1.3 or 2.14, 32K SCM. 4. DISTRIBUTION. Contact R. J. Collins at address above. A distribution agreement must be See IBM 360/370. = CDC STAR-100 (Cyber 203) Virginia rn We have received no new information on this implementation since that which we published last year in Pascal News issue: 119-10: 77. (/) CII 10070 France signed and the cost is 30 pounds sterling. 5. DOCUMENTATION. Same as Pascal-6000. 6. MAINTENANCE. UMRCC will assist with bugs in the 7600 dependant E.!!l:Y.· Minnesota will accept bug reports on the compiler itself. code (runtime We have received no new information on this implementation since that · which we published last year in Pascal News issues: 119-10: 77-78. 1112: 59-60. (see also Xerox Sigma 7 Tokyo.) system) 7. STANDARD. Same as Pascal 6000. CII IRIS 50 Nice 8. MEASUREMENTS. None yet for Release 3; (Release 2 was: Compilation speed is about 57,000 characters/sec. Compiler compiles itself in less than 10 sec. Pascal execution speed has been measured by using the obvious encoding in Pascal of Wichmann's Synthetic Benchmark (see Computer Journal Vol. 19, #1). The Units are in kilo Whetstones. We have received no new· information on this implementation since that which we published last year in Pascal News issue: 119-10: 77. CJ compiler and optimisation level ALGOL 4 (OPT=5) Pascal FTN (OPT=2) no runtime checking 1996 6850 945 * Using T+ op tion--all ** Forces OPT=O. rn array bound checking 1230 6240* 3174** rn We have received no new information on this implementation since that which we published last year in Pascal News issues: #9-10: 77-78. #12: 59-60. (see also Xerox Sigma 7 Tokyo.) run time checks included. Compiler will recompile itself on a 'half-size'(32K SCM) machine. Execution space-- Core requirements (octal): 42,402 SCM, or 36,045 if segment loaded (using a simple segment structure). Self compiles in less than 60,000. (* No information provided on size of compiler or object code produced. *)] 9. n CII IRIS 80 Paris, France Commodore Pet 2001 See MOS Technology 6502. RELIABILITY. Same situation as Pascal 6000 (Zurich). 10. DEVELOPMENT METHOD. Cross compiled from Cyber 72 compiler. Based on Zurich 6000 compiler with necessary additions for this machine. (* Person-hours to develop system not reported. *) 11. LIBRARY SUPPORT. Same as Pascal 6000. Computer Automation LSI-2 and LSI-4 Irvine We have received no new information on this implementation since that which we published last year in Pascal News issues: 119-10: 78. 1112: 60. CDC Cyber 18 La Jolla CRAY-1 Los Alamos We have ·received no new information on this implementation since that which we published last year in Pascal News issues: 119-10: 75. 1111: 81. We have received no new information on this implememtation published last year in Pascal News issues: 19-10: 78-79. CDC Cyber 18 Berlin Cromemco Z-2 We have received no new information on this implementation published last year in Pascal News issue: Hll: 81-82. since that which we See Zilog Z-80. since that which we Data General -- Introduction t ~Data General 27 April 1978 Roule 9, Vkstboro, Massachusetts Ol581 6. MAINTENANCE. Updates for 1 year and notification of substantial enhancements as long as interest is shown. We will maintain a users group and e~courage bug reports and suggestions. This compiler is used by Rhintek as an application and syatem programing language and will continue L:O receive support and enhancements by us. 7. STANDARD. Based on Sequential Pascal which varies from Standard Pascal. The current version lacks: file, ~' label, and packed reserved words and sqr.., sln, cos, arc.tan, ln, ~Y.p, sQrt~ eof, eoln, odd, and round built in functions. ...,,,,.,,,,617.J66.8911 Dear Mr . Mickel: I am writing to you because of the article that appeared in Computerworld, April 24, on the growth of Pascal and Pascal User's Groups. The User's Group at Data General will soon have a Pascal Special Interest Group. It is being organized by a member of PUG, Rodney Thayer. He has agreed to serve as an interim co-chairman until the group can_ elect officers. There will be a Pascal session at the 1978 Annual.User's Group Meeting. The version of Pascal that we are using is one that has been supplied by R.E. Berry at the University of Lancaster.. If you have any question about the Pascal User's Group at Data General please feel free to contact either Rodney Thayer or myself, = rn a. MEASUREMENTS. The compiler compiles source code at the rate of 200 lines/min. This is about 1/2 tqe rate of the PDP-11/45 but about 5 to 10 times the speed of other compilers on the Nova. The compiler will compile itself in about 30 minutes total. (* Compilation and execution space requirements not reported. *) 9. RELIABILITY. reported. *) Good. (* date first released, number of sites usi11g system not 10. DEVELOPMENT METHOD. The virtal machine was coded in Nova assembler language and then the compiler was modified along with the interpreter into its present farm. (* Person-months to develop system not reported. *) 11. LIBRARY SUPPORT. There is no library support as yet. The operating programs support program swapping or chaining with only minimal effort as this is used with the compiler. Data General Eclipse San Bernadina Sincerely, -f~-yi,~-~ ---~ Kenneth 1\,. Roy MEDICAL DATA CONSULTANTS E. Adams; 967 Atlantic Ave.; Apt. 634; Columbus OH 43229; 614/436-3206 asked 11 I have not seen any references to a Pascal compiler running unde:i;- Data General's Advanced Operating System (AOS). Is anyop.e out there working on it? 11 rn rn MDC ECLIPSE ROOS PASCAL Version 3 Richard Data General Eclipse/Nova Columbia o. DATE/VERSION. 78/3/8. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Rhintek, Inc.; Box 220; Columbia, MD 21045 (301). 2 · MACHINE. Data General Nova or Eclipse minicomputers or equivalents. We are using the compiler on a Nova 3/D running Rev. 6.10 mapped RDOS. However, we are cleaning up the code and expect the compiler to be able to run under unmapped RDOS on a 32k Nova within a few weeks. · 3 · SYSTEM CONFIGURATION. Mapped RDOS system or 32k unmapped RDOS with minimum operating system. The current revision of Data General RDOS will be sup°ported but the compiler should work with older versions. 4. DISTRIBUTION. track magnetic tape, 800 bpi, 7,5 inch tape in the RDOS dump format. Price for 6. sirrgle user lieense is $975. Multi-use., OEH's, and e.duea.tional use licenses will be handled on a separate basis. 5. DOCUMENTATION. The package includes source code, binary code, and ready-to-run demo J?rograms: Instructions for executing the compiler are included; the operational information can be obtained from books by Per Brinch Hansen or Al Hartman. d n D,G, User's Group (* 78/7/31 *): (714) 825-2683 0. PRODUCT.DESCRIPTION. MDC PASCAL Version 3 is an efficient PASCAL compiler and runtime support system designed for the execution of small PASCAL programs in a minicomputer environment. The development criteria are as follows: A. To support interactive I/O in a reasonable way. B. To be compatible with, as far as possible, the existing MDC ECLIPSE ROOS PASCAL Version 2. C. Close agreement with the P4 'standard'. D. A reasonable integration into ROOS. (We support background/foreground, subdirectories, and a simple command-line form of activation). E. Speed of execution is a primary concern in Version 3. The size of the object program is secondary to this speed criterion. F. Although written in assembly language, much effort has been made to preserve the modularity and intelligibility of the code. The magnetic tape we distribute contains executable object code, source code, and machine readable documentation. It is assumed that the user has an existing MDC ECLIPSE ROOS PASCAL Version 2 operating at his site. 1. DISTRIBUTOR/IMPLEMENTOR/MAINTAINER. Ted C. Park; Director, Systems Development; Medical Data Consultants; 1894 Commercenter West, Suite 302; San Bernardino, CA 92408. 2. MACHINE. Data General - any ECLIPSE-line computer. 3. SYSTEM CONFI.GURATION. ECLIPSE must have FPU or EAU, minimum of 16K words user memory, ROOS REV 6.1 or greater, FORTRAN 5 (any recent revision). tD 4. DISTRIBUTION. System supplied on 9-track 800 BPI tape in ROOS 'dump' format. The cost is $100.00 to cover our mailing and duplicating costs. 00 5. DOCUMENTATION. User must obtain his own copy of the PaS"Cal Users Manual and Report. It is recommended that the user obtain an implementation kit from the University of Colorado. Documentation and operating procedures are supplied on the tape. 6. MAINTENANCE POLICY. Bug reports are welcome but no formal commitment for support can be made at this time. Extensive testing of the product has been done and all known bugs have been eliminated. 7. STANDARD. PASCAL P4 subset. 8. MEASUREMENTS. Campi 1ati on Speed: Word Size: Real Arithmetic: Integer Arithmetic: Set Size: Execution Speed: Minimum Memory Needed: 40 chars/sec (including blanks and comments) 16 bits Uses 32 bits Uses 16 bits 64 bits Approximately the same as the code produced by Data General FORTRAN V compiler 16K words · 9. RELIABILITY. Version 1 exists in at least 10 sites, we believe no bugs exits. Version 2 is primarily the same as V~rsion 1 except_w~th i~proved op~rati~g procedures, faster compiles and executions, and increased capability; it also exists in at least 10 sites we believe no bugs exist here either. Version 3 is a new product and has had thor~ugh in-house testing. From our past experience, we have every reason to expect good performance in the field. 10. DEVELOPMENT METHOD. Developed from PASCAL-P4. Version 3 consists of a small program which rearranges the PCODE output by the compiler into a form syntactically acceptable to the Data General macro-assembler. A macro-library is supplied which will convert each PCODE instruction into one or more ECLIPSE instructions. The . output from the assembler may then be submitt~d to t~e normal Da~a General re!ocating load procedure to ·produce an executable core image file. A runtime sup~ort library which includes some initialization routines, an error routine, I/O rout:nes, ~nd transcendental function routines is also included. All programs are written in assembly language and are extremely modular and well documented so that any changes wished by the user should be easy to incorporate. 11. LIBRARY SUPPORT. No Data General libraries are needed to run the system nor is it possible to use any if desired. Data General Nova Austin, TX Department of Co1np111er Sciences THE UNIVERSITY OF TEXAS AT AUSTIN Painter Hall 3.28 COLLEGE OF NATURAL SCIENCES AUSTIN, TEXAS 14 May 1978 78712 Dear Andy, I am enclosing three reports on work which I have been doing (did) on implementing Pascal (or a Pascal-like. language at least) on a Nova 3/D. 11 Using Pascal on the Novas 11 Abstract: This note describes the procedure for using the Pascal compiler on the Nova computer system at the Department of Computer Science at the University of Texas at Austin. It also indicates the limitations of the system and how they can be overcome. 11 A Compiler for a Pascal-like Language 11 Abstract: The development of major software systems for the Nova computer system can benefit greatly from the existance of a systems prog1:'.'amming language. The development of such a language, and its supporting .compiler is currently underway. This note reports on the language definition ant the mechanics of the compiler. 11 Gode Generation for a Pascal Compiler for a Nova Gomputer 11 . Abstract: A compiler is being written to translate a Pascal-like language into assembly code for the Data General Nova 3/D computer. A previous note has descr~bed the language and the basic structure of the compiler. In this note, we describe the code-generation problems encountered and their solution. = rn Data General Nova 840 Barcelona, Spain we have received no new information on this implelllentation since that which we published last year in Pascal News issue: #9-10: 81-82. Data General Nova (Lancaster) July 27, 1978 Dear Andy, Enclosed is ll1Y renewal and here is some up-to-date information on our PASCAL distribution effort: We are currently distributing Revision 2.01 of the Lancaster compiler for the NOVA. This revision has eliminated some of the minor problems found in the first release and has added some enhancements, such as separately compiled procedures and support for random I/O. The source code and binaries are available on magnetic tape for $140. The binaries only are $70. We have had a tremendous response to our press releases about the compiler, and have shipped some 59 copies so far, including . . . copies sent to 7 foreign countries, even though.we are on!Y s~l:c1t:ng U.S. business. The number of reader response bingo-card inquiries is approaching 1000, indicating a high degree of interest in the language, particularly from the commercial and industrial commun~ty. Iry fact, many of the inquiries have come from Engl and, where this version was originally developed. Our customers have had very few problems with the Lancaster software, and we now have several applications programs running in PASCAL on the NOVA. Sincerely, This work differs from the University of Lancaster Version by directly compiling assembly code, not hypothetical stack code which must then be interpreted. Sincerefy, H. S. Magnuski Gamma Technology, Inc. ""() ;i:,. GAMMA TECHNOLOGY G> rn (* See Abstracts, above right. *) James Peterson -Assistant Professor BOD Welch Raad • Pala Alta • California 94304 • 415-326-1661 • TWX: 910-373-1298 lO. lO O. DATE/VERSION. Checklist last updated 77/10/27. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Distributors: (Europe, Asia, Africa): R. E_. Berry and A- Foster; Dept. of Computer Studies; University of Lancaster; Bailrigg, Lancaster LAl 4YX, U.K.; 6S201 (STD OS24). Implementors: 2. (Yestern America): H. S. Magnuski Gamma Technology 800 Welch Rd. Palo Alto, CA 943D4 41S/326-1161 TWX: 910-373-1296 R. E. Berry and A. Foster. (Eastern America) : Jim Herbert Sl Thomas Rd. Swampscott, MA 01907 (* No phone number provided. *) MACHINE. Data General Nova series (2/10, 820). 3. SYSTEM CONFIGURATION. RDOS 4.02/S.OO operating system; 32K core, disk backing store. No hardware multiply/divide or floating point needed .. One user reports using system with RDOS without any trouble. 4~ DISTRIBUTION. From Lancaster: Cassette tape or 2.5 Mbyte cartridge disk (* cost not reported *) From Palo Alto: 800 bpi 9 track tape, binary only-$70,with source-$140; From Swampscott: (* format, cost not reported *). S. DOCUMENTATION. A 82-page user manual is provided. (*Not retrievable. *) 6. MAINTENANCE. No formal commitment to provide support known if this is machine can be given, however, bug reports· are welcome. To date all kno'Wn. bugs have been fixed and this policy will as long as is practicable. 7. continue Ill #2 113 #4 llS 116 117 118 119 :SS 1: lS 1: 16 1:10 1: 09 1: 06 1: 08 1:36 1: 36 run :06 1: S4 14:32 2:06 2:S2 3: 18 1: 28 1 :S6 4: 46 compile 1 :31 1: 39 1: 40 1: 38 1: 37 1: 3S 1:36 1 :S7 1 :S7 run :07 2:3S 11 :S9 s :S6 1: SS 1 :11 1: 03 3:13 4:30 = rn :::.:;: (/) Timings such as these offer much scope for debate. It is safer to let others draw what conclusions they will from these figures (and from any other figures which may be produced). I simply wish to observe that interpretive Pascal 11 compares favorably 11 with the code produced by DG ALGOL. In the programs used above the ALGOL and the PaScal look 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 anyone has other examples to contributre to such timing comparisons I would be glad.to hear about them. 9. RELIABILITY. Release 2.01 has been distributed to 50 known sites. No significant bugs have been reported from external users. First released 77 /01; Latest release 78/7 /27 · 10. DEVELOPMENT METHOD. Originally cross-compiled from a CDC 7600. The P-code assembler was written from scratch in Pascal; the P-code interpreter was implemented in Nova assembly language. (*Person-months to create system not reported. *) 11. LIBRARY SUPPORT. 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. STANDARD. Pascal P4 subset accepted. Extensions for random I/O provided. 8. MEASUREMENTS. Typical runtimes compare favorably with those of other languages generally available on the Nova. P-code is generated, assembled and then interpreted. Release 1 Release 2 Compiler NMAX (decimal) additional fixed table space 14, OSS 1,092 lS, SOS 1, 197 Timing information for Nova Pascal Lancaster Release 2: We have not yet compiled the compiler with our system so we cannot give figures for that. Instead to provide the basis for our statement that the performance of our Pascal ucompares favorably 11 'With DG ALGOL a list of times obtained by running some well known small, and often uninteresting program are given. The timings are taken from a Nova 2/10 running under RDOS 4.02 with 32 k of core an no hardware multiply/divide or floating point. They were (rather crudely) obtained by using the GTOD command t~ prefix and postfix the CLI command necessary to load the appropriate program. 11 Compile 11 should be taken to mean the production of a save file ( .sv) from the source program. Programs: 1) A program consisting simply of begin end. 2) Matri2' Mutiply of two 50 x 50 integer matrices (no I/O). 3) Matrix MJ.tiply Of two SO x SO real matrices (no I/O) • Sort an array of 1000 integers from ascending order into descending (no I/O). Ackermans function (3,6) (no I/O). Write 10,001 integers onto a file. Read 10,001 integers from a file. Generate 5000 random integers (printing only the last). Generate 5000 random integers and write to a file. w rn n rn DEC -- Introduction (in words) The workspace remaining depends upon size of the RDOS system used. The size of program which can be compiled depends on the number of user defined symbols (dyunamic area used) and depth of nesting of procedures/statements. Thus it is difficult to make any general statement about the size of program which can be compiled, however, we observe that the assembler for the system is some 1,100 lines of Pascal source generating 7,400 P-code instructions and we can compile this on our 32 k system. We cannot compile the compiler but would expect to do so with more than 32 k core. 4) S) 6) 7) 8) 9) Pascal ALGOL compile University ot montana DEPARTMENT OF COMPUTER SCIENCE Phone: ( 406) 243-2883 missoula, montana 59812 October 12, 1978 Dear Andy: The DECUS PASCAL SIG is alive and well even though I am now in the Big Sky Country (Montana). My steering committee now resides in the four corners of the United States, but we are actively working on several PASCAL related projects. We are keeping in touch with Seved Torstendahl (Sweden) as a US focal point for his PDP-11 PASCAL Compiler. In addition, we are actively pursuing the implementation of the NBS (National Bureau of Standards) PASCAL Compiler on the following POP-11 operating systems: UNIX, RSX-11, IAS, RSTS, and RT-11. In addition to PDP-11 's a small portion of our group is working on a version of the NBS PASCAL Compiler for the VAX-11/780. We are very interested in all of the standardization efforts currently under way. I attended part of Ken Bowles' meeting at UCSD this summer and Justin Walker (NBS) is interested in implementing some of the agreed upon extensions for externally compiled modules. Please publish as much of the UCSD summer meeting report as possible in future issues of the PUG newsletter. rn Dr. Roy Touzeau, also of the Computer Science Department here at the University of Montana, is also working on a DECSYSTEM-20 version of Charles Hedrick's DEC-10 (KLlO) PASCAL Compiler from Rutgers University. He has modified the run-time system to remove the dynamic page management code as the DEC-20 does its own paging. He is presently changing the run-time support to use TOPS-20 system calls rather than depending on the DEC-10 compatibility code. Future plans are to produce a one-step compiler/linker for student use in introductory programming courses. Any comments or suggestions regarding this effort may be sent directly to Roy. 8. MEASUREMENTS. Compiles a 3400-line program in 28k words, (* How this compares space not reported. *) 9. with FORTRAN, other lan~uages at 400-600 ~ines /minute. not reported. *) (* Execution speed, RELIABILITY. The reliability of the Standard Pascal constructs is good. Large (3000 line) programs, plus several "portable' Pascal programs PRETTYPRINT) have been run with no problems attributable to the cons true ts. (XREF, COMPARE, Standard Pascal Sincerely yours, ~~ The reliability of the UCSD 11 extensions 11 is generally poor. The string-manipulation intrinsics (COPY, POS, CONCAT) do insufficient error checking. The graphics intrinsics do not check for out-of-range arguments (which usually crash the program). Writing on a reset'ed file call destroy other files. The compiler allows literal strings to be passed as vai parameters to string intrinsics. This can change the value of the literal. Writing a file which overflows available space does not cause an error. John R. Barr Assistant Professor DEC LSI-11 UCSD 11 A We have received copies of twp papers on the UCSD Pascal system; the titles are: Brief Description of the UCSD Pascal Software System' (* 78/6/1 *), and 11 Newsletter 112--UCSD Pascal Project" (* 78/5/30 *). Jim McCord; 330 Vereda Leyenda; Goleta, CA 93017; 805/968-6681 reports: "I am acting as the distributor for UCSD Pascal for hobby users of the LSI-11. Cost is $50, of which $35 goes to UCSD for continued work. Other $15 pays for documentaion and postage, if user sends me 4 floppies. (Else I will provide for $3 each.) ThiS includes all source code for everything, including the interpreter. Anybody interested should get in touch with me (we already have 7 users) . 78/10/01. O. DATE/VERSION. I.4, released about May, 1978. 1. IMPLEMEN10R/DISTRIBUTOR/MAINTAINER. MACHINE. PDP-11, California-San Pascal Diego; Mail Project; Code Institute for Information C-021; La Jolla, CA 92093; LSI-11 series with 16-28 kwords memory; and various 8 and 16-bit SYSTEM CONFIGURATION. Has own operating system. Does not run under any other released t:::J O. DATE/VERSION. Checklist updated 78/10/5. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. John rn n T. Easton, 612/373-7525; 2. 3. 5. DOCUMENTATION. User Manual. Gives overview of operating with/extensions to Standard Pasc~l. Not machine retrievable. system and differences MAINTENANCE. One-year maintenance (optional at higher cost). 7. STANDARD. Not implemented: Program header with file parameters; procedures dispose, pack, unpack; no procedures or functions as parameters; no boolean conversion in "Write procedure; Differences: input..... is initially undefined; read(input,ch) is defined as begin get(input); ch:= input ..... ~ instead of the Standard Pascal definition; rewrite requires ·a second parameter which specifies the system file name; files are noc au~omatically closed at block exit; ~s cannot cross block boundries. Extensions: Numerous (but ill-defined) extensions: character strings as an intrinsic dynamic file type; string-manipulation facilities; random access to files; opening/closing; shared variables for system communication; I/O error detection capability; segmentation (overlay) scheme. Hall; University MACHINE. Digital Equipment Corp. PDP-8/e. SYSTEM CONFIGURATION. OS/8 version 3. Hardware required: -RK.8-E disk, or other direct access mass storage. -12 K minimum of core/RAM. 32 K is required for compilation. 4. 4. DISTRIBUTION. Source & object programs available on RXOl diskettes. Contact UCSD for more information. Cost - $50 for binaries; $200 for source, maintenance and binaries. James F. Miner, of Minnesota; 269 19th Ave. South; Minneapolis, MN 55455; 612/373-5599. system (but can be brought up under CP/M). Requires 16-28 kwords (unmapped). 6. First 11. LIBRARY SUPPORT. Compiler can read external source files. Predefined procedures are provided for text-string manipulation, memory-mapped graphics, and system level input/output. These intrinsics are generally ill-defined and unreliable. No symbolic dump is available. The object-code level debugger supplied requires extensive knowledge of the object code layout. micros: Intel 8080, Zilog Z-80, etc. 3. P2. 612/373-9916; Address correspondence to: Pascal Group; SSRFC; 25 Blegen UCSD 715/ 452-4526. 2. 10. DEVELOPMENT METHOD. P-code compiler/interpreter system. Based on 77/8/1. About 300 sites using system. DEC PDP-8 (Minnesota) Following checklist submitted by George Gonzalez, Special Interactive Computing Lahoratory; 134 Space Science Center; University of Minnesota; Minneapolis 7 MN 55455 on Studies; University of rn (/) Can use up to 128K. DISTRIBUTION. Release scheduled for second quarter, 1979. 5. DOCUMENTATION. Machine . . . retrievable supplement to Pascal User "Manual and Report (about 25 pages), in preparation. 6. MAINTENANCE. A policy has not yet been determined. 7. STANDARD. Emphasis has been on close adherance to the Pascal User Manual and Report. There are two major restrictions: a) Procedures and functions may not be passed as parameters. This restriction will not be lifted without full type checking (which requires a change in the Pascal Standard). b) Files may be declared only in the main program, and files may not be components of arrays, records, or files; nor may files be allocated with the procedure NEW. }tinor restrictions: set size=96 elements; maxint=B,388,607 (2**23-1). Full-ASCII character set is supported. "Major extensions supported: a) direct-access files; b) default case; c) run-time file binding; d) overlays. 8. MEASUREMENTS. Execution speed--roughly comparable to FORTRAN IV (F4). I/O tends to be faster than FORTRAN, while computation tends to be slower. Execution space--Interpreter takes BK, space needed for P-code and runtime storage depends on program. rn r 9. RELIABILITY. Fair to good and improving. An earlier implementation has been in use at .1 site .since 76/11. 10. DEVELOPMENT METHOD. As with most languages -on the PDP-8, Pascal makes use of an interpreter (a modification of P-code) written in MACREL. The compiler (about 5000 lines, based on Pascal-P4) is written in Pascal. All standard procedures are written in MACREL. The implementat;ion is not suitable for real-time applications. 11. LIBRARY SUPPORT. Cu=ently (78/11/15), none planned for the first release. 9. RELIABILITY. The; compiler and interpreter are good. However, the run-time checking of the interpre~er is poor. Preliminary version first ran in 1977. (* Date system first released to users, numb~r of sites using system riot reported. *) 10. DEVELOPMENT METHOD. The compiler is based on the Pascal-P2 compiler. A Cyber 73 was used fo'r bootstrapping. The time needed by one inexperienced implementor was about 6 months. 11. LIBRARY SUPPORT. used by the system. No library support at ail. There are some hidden library· routines = rn ..E: en - DEC PDP-11 (Amsterdam) D·Ec_ PDP-11 Berkeley o. DATE/VERSION. Checklist not updated since 78/02. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Sources, binaries, and documentation are part of the third UNIX software distribution .. Implementor: Johan Stevenson, Vrije Universiteit. Maintainer: Andrew s. Tanenbaum; Vakgroep Informatica; Wiskundig Seminarium, Vrije Universiteit; De Boelelaan 1081; Amsterdam, The Netherlands; 020/ 548-2410. 2. MACHINE •. Any PDP-11 on which UNIX version 6 will run. 3. SYSTEM COl!IFIGURAIION. See 2. UNIVERSITY OF CALIFORNIA, BERKELEY m·:m.:ELE\" ·DAVI!;.·. mvINE • Los ANGELES• niVERSIDE; sAN DIECO • sAN FMNcrSco PROGRAM lN QUAl\'TlTATlVE ANTUUOPOI~OGY I>El'ARTMENT 011 ANTHROPOLOGY SANTA" BARBARA • SANTA CRUZ 2ll0 PIEDMONT AVENUE BERKELEY, CALIFORNIA 947!0 29 April 78 4. DISTRIBUTION. Through the UNIX software distribution center •• (* No information on cost reported. *) 5. DOCUMENTATION. Short manuals for the compiler and interpreter -in illlIX MAN format and a 12 page description giving details about the implementation. 6 · MAINTENANCE. Bug reports are welcome. There will be an improved release of the current system. However, we are working on a totally new one. Main differences from the old one are: -a new hypothetical stack computer named EMI (see Tanenbaum, A. S., "Implications of structured programming for machine architecture 11 , CACM, Dec. 1977). This intermediate machine allows very compact code (only 15,000 8-bit bytes for the compiler itself) and fast interpretation. Emulating EMl on a microprogramma.ble comp"Qter must be easy. Moreover, this EMl machine allows compilation of other high level languages as well. -an new interpreter with all kinds of. run-time checks and debugging aids. -expansion on EMl codes .into PDP-11 instructions. -less restrictions on the language Pascal. 7. STANDARD •. Main differances with Standard Pascal are: -no gotos out of procedures and functions. -procedures and ~s can not be passed as parameters. -extern procedures and functions not implemented. -mark and release instead of dispose. -at most 8 files (all text), including input and outvut. -An explicit get or readln is needed to initialize the file window -empty fields· and fieldlists are not allowed in record declarations. .'!""procedure UJ.?.:eac.~ not available, packed ignored; all records are automatically packed. Maximum length 0£ string constant is SO characters. Ordinal value of a set element must be between 0 and 63 inclusive. maxint = 32,767. (2**15 -1). Setsize = o.. 63. Full ASCII accepted {parity ignored)". Keyw;rds and standard names are recognized in lower case. 8. MEASUREMENTS. compilation speed--40, 000 char/min on a 11/ 45 with cache. compilation space--48k bytes to compile the compiler. Very big programs can be compiled. execution speed--you lose a factor of 8 by interpretation. However, I/O is relatively fast. Compared to interpreted Pascal on a big machine (CDC Cyber 73) it is 10 times slower. execution spac.e..--the size of the complete interpreter is 5300 bytes. The binary code of the compiler is 23,000 bytes. Dear Andy, I was suprised that th~r~ waan't anything in the ~N l~st time about the Berkeley UNIX (PDP-ll) Pascal. I thought I'd let you know it exists, since the implementors apparently haven't told you anything. It is an interpretive system written for support of computer science instruction, so it is very fast at generating (intermediate) code, but slow at execution. The syntax scan is the best I've seen (of any compiler for any language); it is v~ry informative for unexperienced users, comments on suspicious (but syntactly correct) code, and corrects some trivial syntax errors such as semicolon before ELSE. Such corrections show on the listing but the co=ect intermediate code is generated - the note will continue to appear on subsequent listings until the sourde file is changed by the user, of course. Definately accepts Stap,da.rd Pascal: ! swap vecy large programs back and forth between the PDP-11 and the CDC 6400 with only changes required in first and last character constants (MINGHAR and MAXGHAR). The development was supported at least in part by US ERDA, and the authors seem willing to distribute it for instructional u8e. A fifty-one page user's manual, titlea "UNIX Pascal User's Manual, Version 1.0 -- September 1977" is available from the Computer Science Library for a couple of bucks. The authors of the manual are William N. Joy, Susan L. Graham and Charles B. Haley. Joy and Graham can be reached at the UCB Computer Science Division, Department of Electrical Engineering and Computer Science, University of California, Berkeley, Berkeley, GA 94720. Graham's office phone If is 415-642-2059. I think Haley has left, I have a vague recollection that he is at Bell Labs now. This is an exeellent Pascal system, which I would recommend highly to . anyone running under UNIX. Of course, since it is an interpretive system there· would be eXecution time problems for some production applications. .Sincerely, l/J. ,,,-;;f:;;;;- fj/!f!=:r/W '=:! rn n rn -:0 )> '1 p_. s. Runs on ll/ 45 and 11/.70. Doesn't accept procedure and function names as parameters. I'll send you some documentat;!.on if I get time. Ci) rn I-' 0 N DEC PDP-11 Los Altos 11. LIBRARY SUPPORT. Separate compilation linkage is .implemented. of procedures with load-time insertion and We have received no new information on thi.s UNIX, RT-11, DOS, and RSX-11 implementation since that which we published last year in Pascal News issue: #9-10: 83. DEC PDP-11 Redondo Beach DEC PDP-11 Misscl':I.a, MT We have received no new information on this RSX-11 implementation since that which we published last year in Pascal News issue: 1111: 91. We have received no new information on this Concurrent Pascal (SOLO) implementation since that which we published last year in Pascal News issues: 1111: 89-90. (formerly ESI) O. Maurice R. Munsie; Network Computer Services p/1; 69 Clarence St.; Sydney 2000 Australia reports: 11 We are distributing in Australia OMSI Pascal-!. A number of sales have already been made and plans are being made for the OMSI implementors to hold workshops in Australia later this year." (* 78/8/28 *) DATE/VERSION. 77/12/22. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Seved Torstendahl; Ericsson; AL/Ufe; S-125 26 Stockholm, Sweden; 08/719-4909. Tn/X/Tdg.; DATE/VERSION. 77/12/76. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Oregon Minicomputer Software, Inc.· (OMSI); 4015 SW Canyon Road; Portland, OR 97221; 503/226-7760. Implementors: John Ankcorn, Don Baccus, and Dave Rowlar .. 2. l{ACHINE. Any model Digital Equipment Corp. PDP-11 or LSI-11. 3. SYSTEM CONFIGURATION. Minimum of 16K words. Operates under RT-11, RSTS/E, or RSX. 4. DISTRIBUTION. Compiler, support module, cross referencer, text editor and instruction manual available for $1500 ($995 for educational use). Available on 9 track 800 bpi magnetic tape, or DEC cartridge disk. 5. DOCUMENTATION. Over 70-page (76/11/02) working on more. machine-retrievable instruction manual. Currently 6. MAINTENANCE. One year of unlimited fixes and updates, followed by annual subscription service. C* Reported by users that 11 vendor seems to be responsive in terms of support 11 • *) MACHINE. Digital Equipment Corp. : DEC-10 (cross-compiler that generates code for all PDP-ll's); PDP-11 model 35 and up (self compiles and generates code for all PDP-ll's); The compilers generate code for floating point hardware and instruction sets if option switches are set .. Telefon AB LM 2. O. extended arithemtic 3. SYSTEM CONFIGURATION. DEC-10 cross-compiler: TOPS-10. PDP-11: RSX-llM (Probably i t is an easy task to replace the RSX interfacing routines with new ones interfacing to DOS or RT-11; but we do not plan to do that work here. Maybe routines to interface with RSX-llS will be made.) PDP-11 with memory management and a user partition of at least 28k words, preferably 32k words. 4. DISTRIBUTION. The compilers are ·available at $50, plus $10 i f we supply the tape (600 feet). The distribution set includes source and object modules of the compilers and the runtime library, command files for compiler generation and maintenance, use.r manual and compiler generation instructions. The compiler will be distributed in one or more of the following formats; indicate which you want: - three DECtapes in PDP-11 DOS format (DEC-10 and PDP-11 users) - one 9-track magnetic tape in DEC-10 format (DEC-10 users) - one 9-track magnetic tape in industry standard format - one 9-track magnetic tape in DOS format (PDP-11 users). 7. STANDARD. Full standard plus extensions: additional features for real-time hardware control; separate compilation of procedures; Macro (assembler) code in-line insertion; actual core addresses of variables can be fixed (giving access to external page I/O addresses at the Pascal level. 5. DOCUMENTATION. A machine-retrievable user manual, complementing the Pascal User Manual and Report, is included on the distribution tape. 8. 6. MAINTENANCE. No responsibility, but if errors are found reports will be distributed to known users. Error reports and improvement suggestions accepted. MEASUREMENTS. compilation speed--'About 3500 characters /second, on the PDP-11 mode'i 05. compilation space--very economical-it can compile 3000 line programs in 28K on PDP-11/40. No overlays are used in the system. execution speed--about twice as fast as the DEC FORTRAN IV and many times faster than DEC BASIC. A Worst-case 'number-cruncher' example ran at 40% faster than the DEC original FORTRAN. execution space--very econoirlcal-much of the space iinprovement over DEC FORTRAN is due to the smaller support module for Pascal. 9. RELIABILITY. Excellent--far better installations, and growing steadily. than DEC FORTRAN. In use since 75/11. Over 100 10. DEVELOPMENT METHOD. Single-pass recursive-descent compiler written in Macro-11. Hand-coded based on ·University of Illinois bootstrap (with extensive changes) in about two person-years of effort. First compiler written by both implementors. Compiler translates source into Macro-11 which is. then assembled and linked to the support module for execution. :.;;:: (/) DEC PDP-11 (Stockholm) DEC PDP-11 (OMSI) ;z rn 7 • STANDARD· With regard to the definition of Pascal in Pascal User Manual and Report, the following restrictions hold: - packed data structures are only implemented for character arrays (always packed, two chars/word) ·and for Boolean arrays (packing optional, one Boolean/ bit). The standard procedures :Pack and unpack are not implemented. - only local jumps are allowed. - a pair of procedures, 11mark 11 and "release", have been added to allocate and deallocate dynamic storage. The following extensions have been implemented: - function results can be of a nonscalar type. - arrays with unspecified bounds (but specified in.dex-structure) can be used as formal parameters to. procedures, allowing differently declared variables or constants to be used as actual parameters. - a string parameter type has been introduced in which one-dimensional character arrays or substrings thereof may be passed as parameters. Such strings and their constituent characters are considered as 11 read-only 11 • - procedures may be compiled separately. - separately compiled procedures can be accessed through a declaration with the procedure block replaced with 11 extern 1J. - most option selectors ( (*$M+ *), etc.) are selectable by switches on the MCR command line (version 5, 77/12). MEASUREMENTS. compilation speed--about 300 characters/second; increases to 3000 characters/second in a 64 k words partion using PLAS under RSX-llM. compilation space--The compiler requires a 32k word partion (at least 26 k words for very small programs). execution speed--(* No information provided. *) execution space--(* No information provided. *) (* How this compares to FORTRAN and other languages not reported. *) DEG PDP-11 Vienna, Austria We have received no new information on this RSX-llD implementation since that which we published last year in Pascal News issue: 119-10: 85-86. 8. 9. RELIABILITY. Excellent. The compiler is now in use at over 200 sites. Only minor errors have been found since July, 1977. First version released April, 1977. Latest version: December, 1977. 10. DEVELOPMENT METHOD. The compiler is a modification of the cross compiler from Mr. Bron, et. al. of TWente University of Technology in the Netherlands. The original cross-compiler was written in Pascal and developed from Pascal-P. Two major modifications have been undertaken: the compiler generates standard object modules; the compiler gives full access to the RSX/IAS file system. The compilers are written in Pascal, and both have the same source code except for two separately compiled routines. The cross compiler is generated when the DEC-10 Pascal compiler from Hamburg compiles the source. When it then compiles itself the PDP-11 version is created. The cross compiler for PDP-11 running on DEC-10 produced by Bron et al was used as input. This compiler was modified to generate object code linkable under RSX-llM and to give access to the file system of RSX-llM. When the cross compiler was finished it compiled itself and was thus transfered to the PDP-11. The implementation effort until now (77/02/09) has been about five person-months. To make use of floating point hardware another two person-months will be needed. A new version which performs some optimization will probably be developed later. 11. LIBRARY SUPPORT. Separate compilation allowed. Possible to use external procedures written in FORTRAN or assembler. The December 1977 version also gives: Automatic copy of text from library into source program (include); execution frequency measurements; execution trace; option selectors ( (*$R- *), etc.), settable by switches in the MCR command line. Next version (Spring, 1978) will also include a symbolic post-mortem dump an an interactive source-level debugging package (mainly copied from the DEC-10 Hamburg-DECOS compiler). DEC PDP-11 Tampere, Finland The DEC PDP-11 Stockholm Pascal system (for RSX-llM) was modified slightly during October, 1977 to run under IAS b~: Jyrki Tuomi and Matti Karinen; Tampere University of Technology; Computing Center; SF-33100 Tampere 10; Finland; (* No phone number repo·rted *). A 60-page report on this implementation (in Finnish) is available from Tampere. DEC PDP-11 Twente We have received no new information on this implementation of a cross-compiler from DEC-10 to any PDP-11 on any operating system since that which we published last year in Pascal News issue: 119-10: 85. = rn DEC VAX-ll/780 Seattle We have received no new information on this published last year in Pascal News issue: 1112: 63. implementation since that which we DEC VAX-11/780 (Redondo Beach) We have heard rumors that an implementation is underway at TRW corporation at Redondo Beach, CA. DEC-10 (Hamburg-DECUS) o. DATE/VERSION. Checklist not updated since 77/08. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Implementor/Maintainer:' E. Kisicki; H. -H. Nagel; Universtat Hamburg; Institut fur Informatik; SchluterstraBe 66-72; D-2000 Hamburg 13, Germany; 040-4123-4151; TELEX: 214 732 uni hh d. Distributor(Western Hemisphere): (Eastern Hemisphere): DECUS; DECUS-Europe; P. o. Box 340; Maynard, MA 01754; CH-12ll; USA; Geneva 26, Switzerland; 617/ 897-5lll; 022/ 42 79 50; TELEX 22593. TELEX: 94 8457; TWX: 710 347 0212. 2. MACHINE. Digital Equipment Corp. DEC-10. (Adapted to the DEC-20 by DEC). 3. SYSTE11 CONFIGURATION. DEC TOPS-10 moniter using Concise Command Language (CCL). ~ses KA-10 instruction set. Modifications to use KI-10 improved instruction set have been made by Charles Hedrick. 4. DISTRIBUTION. From DECUS (Digital Equipment 5. DOCUMENTATION. Machine-retrievable manual included on distribution tape. 6. MAINTENANCE. No regular maintainance can be given. ~orp. User's Society). 7 · STANDARD. Extensions: Functions FIRST and LAST for scalars; UPPER80UND and LOWERBOUND for arrays; MIN and MAX available as standard functions; procedures to determine the value of CCL options available; otherwise in case statement; LOOP ... EXIT IF ... END statement; Initialization procedure. 8. MEASUREMENTS. (* No information provided. *) 9. RELIABILITY. Very good. First version released in 75/7. Distributed to at least 60 sites. Later version operational in 76/9. Latest version released to DECUS in 77/2. 10. DEVELOPMENT METHOD. Pascal-P2 and subsequent self 76/12/30. bootstraps. Latest version dated 11. LIBRARY SUPPORT. Symbolic post-mortem dump available. Interactive run-time source-level debugging package available. Separate compilation and inclusion in relocatable object code library of Pascal, FORTRAN, co;goLl ALGOL, and MACR0-10 assembler routines. DEC-10 Systems-Pascal We have received no new information on this implementation published last year in Pascal News issue: 119-10: 90-91. since that which definite has been reported. *) According to Bill Schiffbauer; Sales Coordinator, Computer Products; Heath Company; Benton Harbor, MI 49022; 616/982-3285; TELEX 72-9421: "At this time (* 77/11/15 *), Heath has no plans to offer a Pascal compiler or interpreter ... Since the H-11 Uses the LSI-11, the [UCSD Pascal] compiler should be compatible with the H-11." According to Robert w. Furtaw; Marketing, Heath Company, Benton Harbor, MI 49022: (* 78/1/19 *) 11 We also have been observing the appeals for Pascal appearing in recent publications. However, we presently have no immediate plans to offer one for our system. With all the interest, I would not be sJprised to see one which could easily be reassembled for our system. 11 we CJ J> (/) n J> r = rn (/) Hewlett Packard HP-2100 (Trieste, Italy) DEC-20 O. See DEC-10 Hamburg-DECUS. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Implementor: Paolo Sipala; Instituto di Electrotechnica; Universita di Trieste; Via Valerio, 10, 34127; Trieste, Italy; Tel. 040-733033. Distributor: Hewlett-Packard Software Center; Contributors Section; 11000 Wolfe Blvd.; Cupertino, CA 95014; (*No phone number reported. *) Dietz Mincal 621 Hamburg 2. We have received no new infonnation on this implementation since that which we published last year in Pascal News issue: 119-10: 91-92. FOXBORO Fox-1 We have received no new information on this implementation published last year in Pascal News issue: 119-10: 92. DATE/VERSION. 78/10/9. since that which we MACHINE. Hewlett Packard HP-2100 or 21MX. 3. SYSTEM CONFIGURATION. Old version-DOS IIIb; New version-RTE. There are seperate versions for EAU, non-EAU, and floating point hardware. Requires an llk main area. 4. DISTRIBUTION. (*No information reported on cost, distribution formats. *) 5. DOCUMENTATION. (*No information provided. *) 6. MAINTENANCE. (* No information provided. *) 7. STANDARD. (*No information provided. *) FUJITSU Facom 230-30 Tokyo 8. :MEASUREMENTS. Requires an llk main core area (so it might fit in a 16k system, if the resident operating system modules are kept to a minimum, but 24k is more comfortable). It is not noticably slower than the standard compilers when compiling, and not worse than the standard interpreter(BASIC) when interpreting. We have received no new information on this implementation since that which we published last year in Pascal News issue: 119-10: 92- 9. RELIABILITY. Has been subjected to rather limited testing (a few dozen programs from the Users Manuai) and is now (* 78/3/20 *) being offered to students for their use. 10. DEVELOPMENT METHOD. AP-code interpreter written in HP-Algol. FUJITSU Facom 230-55 11. LIBRARY SUPPORT. (* No information provided. *) See FUJITSU Facom 230-30 Tokyo. Hewlett Packard HP-21 MX Durban Harris/4 Delft We have received no new information on this implementation published last year in Pascal News issue: 119.-10: 93. We have received no new information on this implementation published last year in Pascal News issue: 119-10: 92- since that which since that which we we Hewlett Packard 3000 Santa Clara Heathkit H-11 (* This machine is that the DEC LSI-11 (UCSD) We have received no new infonnation on this implementation since that which we published last year in Pascal News issue: 119-10: 94. based on the LSI-11 microprocessor from DEC and it is believed implementation will run on this machine; tho~~h nothing co 9. RELIABILITY. (*No information provided on number of sites using system. *) Some users have reported problems with compiler reliability and responsiveness of dist.ributor. See Pascal News /Ill: 34-36, 92-93. Distributed since 76/05. Version 6 expected in 77/12° Hewlett Packard 3000 Sunnyvale We have received no new information on this implementation since that which we 10. DEVELOPMENT published last year in Pascal News issue: 1112: 63-64. METHOD. Independant implementation Zurich compilers); written in 11 B11 , an implementation (* Person-months to create system not reported. *) (unrelated language to Pascal-P or CDC 6000 and successor of BCPL. HITACHI Hitac 8800/8700 Tokyo 11- LIBRARY SUPPORT. Separately compiled Pascal and FORTRAN routines may be saved and called from user specified libraries at run time. A post-mortem debugger is planned, but See also IBM 360/370. We have received no new information on this implementation since that which we published last year in Pascal News issue: 119-10: 94. presently (* 76/10/25 *) far from being implemented. = rn (/) Honeywell H316 Minnesota Honeywell 6000, level 66 (Waterloo) Q. O. DATE/VERSION. Checklist not updated since 77/08. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Implementor: W. Morven Gentleman; Mathematics Faculty Computing Facilty; University of Waterloo; Waterloo, ONT. N2L 3Gl; CANADA; 519/ 885-1211. Distributor: Honeywell Information Systems; Waltham, MA (* See local HIS sales office first. *) 2. MACHINE. Honeywell 6000 series; level 60/66. Operates under GCOS (TSS). 76/03/08 *) a DRL TASK version is under consideration. Currently DATE/VERSION. 78/7/4. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Robert A. Stryk; Honeywell Corp. Computer Science Center; 10701 Lyndale Ave. S.; Bloomington, MN 55424; 612/ 887-4356. 2. MACHINE. Honeywell H-316. 3. SYSTEM CONFIGURATION. 32k, dual cartridge disks, line printer, 7-track magnetic tape. 4. DISTRIBUTION. 7-track tape with programs to (* bootstrap from BOS 210. (* cost not reported. *) 3. SYSTEM CONFIGURATION. Honeywell level 66 or 6000 series with EIS. Minimum of 26k words. 4. DISTRIBUTION. (* No information provided. *) (* Rumor has it that distributor 5. charges extra for maintenance. *) s. DOCUMENTATION. From Honeywell Information Systems; Publication Dept.; MS-339; 40 Guest St.; Brighton, MA 02135: "A Pascal Product Brief", (llAW66, free), 2 pg. (marketing oriented) and "Pascal User's Guide 11 , (llAW65, $1.30), 30 pg. (reference manual). Machine retrievable supplement to Pascal User Manual and Report; also includes extensions, restrictions, known bugs, etc.--about 45 pages total. 6. MAINTENANCE. Supported by University of Waterloo through agreement with HIS; some users have reported problems in getting Honeywell to pass bug reports on to Waterloo. Extensions planned to allow extern to be GMAP, COBOL, ALGOL, PL/I, B, C, etc. 7. STANDARD. Restrictions: -Program statement not accepted, replaced by required procedure 'main'. -No files with components of type file. -Only files of type ch~r may be re~r written (with the standard read., write, get, put). Extensions: . -Files may be opened dynamically. -Extended file handling is available. -External separately compiled P'ascal and FORTRAN procedures may be used. -Yarious procedures and functions to provide access to operating system. -Optional left-to-right evaluation for Boolean expressions and if statements. -'else' clause in case statement. -Alternate Interactive I/O package available. -Full upper/lower case capability. 8. DOCUMENTATION. Informal comments on 316 kernal implem ~ntation. t::l changing rn n Standard .3 9. RELIABILITY. No known errors. (*Date first released, number of sites using system not reported. *) 1--1 6. MAINTENANCE. No known errors, no work planned. Bob reported on 78/7/4: j obs--Distribution of H316 Concurrent Pascal very cloudy11 • 7. STANDARD. A modified implementation of Concurrent Pascal, which varies Pascal. 8. from 11 rn MEASUREMENTS. SOLO system needs minimum of 40 k to execute compilers. 10. DEVELOPMENT METHOD. The H316 kernal imitates the PDP-11 reversed byte addressing which makes it compatible with the distribution tape but a bit slow development was done under BOS 210. The kernal is written in DAP700. in execution. The 11. LIBRARY SUPP.ORT. That provided by the SOLO system. IBM 1130 We have received no new information on this implementation since that which we published last year in Pascal News issue: 119-10: 101. IBM 360/370 AAEC MEASUREMENTS. compilation space---minimum of 26k words. Typical programs require less than 30k words. compilation speed--(* No information provided. *) execution space--can be as small as 4-Sk words depending on the program and the Pascal support routines required. execution speed--(* No information provided. *) (* How this compares to FORTRAN and other languages not reported. *) We have received a copy of a report titled 11 Implementation of Pascal 8000 on IBM 360 and 370 Computers" (* 78/8/4 *) which ls available from the distributor. 0. 1. Date. 78/09/12. Implementors: T. Hikita and K. Ishihata, maximum set size is 64. (this precludes set of char.) It is hoped to increase this very soon. Dept. of Information Science, University of Tokyo, maximum number of procedures in a program is 256 - 2-ll-16 Yayoi Bunkyo-ku TOKYO, (HITAC - 8000 Version) maximum size of compiled code in any one procedure depends on its static level: 113 JAPAN. the main program may be up to 24K, and this is reduced by 4K for each increment of static nesting level. rn G.W. Cox and J.M. Tobias, Systems Design Section, Significant extensions to the standard are in the following AAEC Research Establishment, - Private Mail Bag, It is therefore possible to have arrays / records and sets as constants. (IBM 360/370 Version) SUTHERLAND, 2232, N.S.W. AUSTRALIA Constant definitions for structured types. a~eas: Distributors/Maintainers: - A 'value' statement for variable initialisation - A 'forall' statement of the form: forall in do G.W. Cox and J.M.Tob:i.as where is of type set. address as above Machines: IBM360 and IBM370 - compatible machines 2. A 1 loop 1 statement, specifying that a group of statements should be repeatedly executed until an 'event' is encountered. Control may then be transferred to a statement labelled by that event. System Configuration: 3. - The compiler runs under any of the OS family of operating systems - i.e. MVT,ME'T, VSl, VS2, SVS and MVS. soon to be available. A CMS interface is currently being developed, A minimal program can be compiled in 128K; integrity. the The 'type identifier', restriction in a procedure skeleton has been compiler requires about 220K to compile its elf. relaxed to allow 'type' . - Distribution: 4. Write to G.W. cox and J.M. Tobias at AAEC to receive an order form. cost is $Al00; a 11 11 there is no agreement to be signed. 1inkage-editor Both source symbol '** 1 • A 1 type-change 1 function has been introduced that extends the role of - Case-tag lists may now range over a number of constants, without 'chr' and 'ord'. explicitly having to list each constant. An implementation guide, plus machine-readable implementation JCL, and The range is denoted by machine-readable documentation are also supplied. • . The system is distributed on a new 600 ft. magnetic tape at a density of 800 or 1600 bpi; 5. Thus, the tape is supplied by the distrP,utor. 4,6 .. 10,15,30 •. 45 Documentation is now a valid case tag list Machine-readable documentation is in the form of a report comprising a A default exit is also supplied which can be used·if none of the other summary of extensions to Standard Pascal plus a complete specification of the language as implemented. 6. tags match. Other interesting features of the system are: Maintenance Policy. No guarantee on maintenance is given; however we are anxious to receive occur. Procedure 1 new 1 is fully supported, obtaining the minimum heap requirements as specified by variant tags. bug reports and suggestions, and will do our best to fix any problems which may 7. pack 1 and 'unpack' are supported, as are packed structures - and load modules for these systems are supplied - the compilers are written in Pascal and the runtime su,pport in 360 Assembler. 1 Exponentiation is fully supported, and is used via the double character Two systems are supplied: system which produces IBM-standard object modules. Functions in general. The compile-and-go 11 system which has its own compiled-code format, and a 11 The types of parameters of procedures or functions passed as parameters must be specified explicitly, and this enables the compiler to guarantee Procedures 'mark' and 'release' are also supported. - Files may be external or local. Thus, structures such as 'array of files' n; Standard. are available. EXternal files are named The full standard is supported with finiteness in a few areas: files are not. Both external and local files may be declared in a - procedure at any level. maximum static procedure nesting depth is 6. the program statement, local r - Text-files with RECFM of F [BJ [SJ [AJ , V [BJ [SJ [AJ and U [AJ are supported. routine, one must include a declaration for it. Non-text files must have RECFM = F [BJ. procedure or function skeleton followed by the word - All real arithmetic is in double precision (64 bit floating-point format) . linkage-editor then automatically searches for that routine when it is linking the - Control of input and output formatting is as described in the Jensen and program. Wirth report. Pascal procedures cannot be overlayed. X [ zn] The form is Such declarations consist of the 1 pascal 1 or 'fortra,n 1 • The Global variables are accessible to externally compiled Pascal routines. A symbolic dump of local variables and traceback of procedures called is provided [ ,m] / where n and m are integer expressions. rn on detection of execution errors. Further, elements of type packed array of char may be read on input. Cf) - Execution errors terminate in a post-mortem dump, providing a complete execution history that includes procedure invocations, variable values, type of error / etc. - Future Developments. Version 2 .0 is currently under development. IBM 360/370 Berlin the use of separately-compiled procedures in Pascal, FORTRAN or other 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 FORTRAN 8. 12. We have received no new information ou- this VM370 (CP + CMS) and OS since that which we published last year in Pascal News issue: fill: 99-100. implementation routines. Measurements. IBM 360/370 Grenoble compilation speed about 2, 500 chars/sec on an IBM 360/65 compilation space 128K for small programs We have received no new information on this OS/MVT and VS/MFT implementation since that which we published last year in Pascal News issue: #9-10: 100. 160K for medium programs 220K for the compiler execution speed comparable with Fortran G, at times better than FORTRAN H. execution space about 30K plus the size of the compiled code, stack and IBM 37 0 London heap Compiled code is fairly compact - the compiler itself We have received no new information on this CMS implementation since published last year in Pascal News issue: 1111: 96-98. that which we occupies BBK. 9. Reliability. The system was first distributed in its current form early in 1978. currently used at about 90 sites. It is We have received no new information on this MFT, MVT, VSl, VS2, MVS, and CMS implementation since that which we published last year in Pascal News issue: f/9-10: 97-98. excellent. 10. IBM 360/370 Manitoba Reliability reports have been generally good to Development Method The compiler was developed from Nageli 1 s trunk compiler and bootstrapped IBM 360/370 Stanford STANFORD UNIVERSITY using Pascal-P by Hikita and Ishihata, who got it running on a HITAC-8000 computer (similar instruction set to IBM360). This version was further developed by Tobias STANFORD LlNEAR ACCELERATOR CENTER and cox for use under the OS family of opera ting systems on IBM360/370 computers. Sept. 15, 1978 111ai/ Address SLAC, P. 0. Box 4349 Stanford, California 94305 The compiler is written in Pascal 8000 (6000 lines) and runtime support is in 360 Dear Andy: Assembler ( 3500 lines) . Cox and Tobias spent about 10 person-months on the system Most of this time was spent improving the OS support and adding enhancements to what This is to announce the release of a new version of the Stanford PASCAL Compiler. This version provides comprehensive runtime checking as well as prov1s1ons for user-requested or post-mortem (symbolic) dump, separate compilation and generation of program profile (i.e. frequency of execution of source program statements). The compiler is now about 5000 lines long and, exce.pt for a few res tr ictio ns, implements the 1 ang uag e described in Jensen & Wirth 1 s 11 User Manual and Report". There are also some minor extensions to allow timing and clean termination of programs without GOTOs across procedure boundaries. was already a very ·workable system. 11. Library Support. The linkage-edit version has the ability to perform separate compilation of procedures or functions. These can be stored in a library and selected by the linkage editor as necessary. It can also link to routines written in FORTRAN or other languages which use a FORTRAN calling sequence. To use an externally compiled The postprocessor, which translates the output of the compiler into IBH/370 assembly or object code, has also grown to 3500 source lines but the compilation/postprocessing time for the compiler has remained almost unchanged (i.e. about 10 seconds of compilation followed by 5 seconds of postprocessing on the 370-168, or a compilation rate of 500 lines per second). The combined system is still capable of self compiling in a 128K region, but a larger area improves the I/O efficiency by allocating larger buffers. our earlier decision in leaving the compiler as machine independent as possible and writing a separate program to translate our modified P-code into target machine code (as explained in the Pascal Newletter i8) proved to be very helpful in simplifying the task of bootstraping the compiler on a set of drasticaly different target machines. For example, after analyzing the static and dynamic properties of programs expressed in the intermediate form, we concluded that this form was quite suitable for a very compact encoding. A postprocessor, intended primarily for microprocessor environments, translates the full compiler into a mere 20K bytes which could be run interpretively, or implemented by a micro-coded emulator on any of the existing bit-slice processors. Another interesting outcome of this implementation was that a very small (3K bytes) 8B80/Z80 based interpreter, in conjunctin with the above postprocessor, resulted in a microprocessor-resident compiler with a compilation speed of about 100 times slower than the 370-168 in terms of the CPU time, but quite comparable in '1.turn around'' or terininal time. IBM 360/370 Stony Brook We have received no new information on this OS implementation published last year in Pascal News issue: 119-10: 98-99. since that which we IBM 360, 370 (Vancouver) (,? O. DATE/VERSION. Barry Pollack reported (* 78/8/7 *): "Pascal/UBC is almost ready for its next round of distributions--it is an upward compatible superset of the old Pascal/UBC system, which is upwards compatible with Standard Pascal- The system runs on IBM 360/370 and Amdahl 470 machines. We plan to begin this round of distribution in Sept. or Oct.--of course, the old system is still available." 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Barry W. Pollack and Robert A. Fraley'· Department of Computer Science, University of British Columbia, Vancouver, British Columbia, Canada V6T lWS (604/228-6794 or 604/228-3061) .• 2. MACHINE. IBH 370/168. 3. SYSTEM CONFIGURATION. The current version runs under the MTS (Michigan Time Sharing) operating system. The monitor may be modified with minimal effort to run under VS, OS, etc. Standard OS object modules are generated. The translator requires about 320K bytes of store. Division of the compiler into overlays for non-VM systems would be possible. 4. DISTRIBUTION. The current version magnetic tape. Costs will be limited to supplied). is available postage (and for dist~ibution now, via 9 track tape purchase, if one is not t:::J [Tl Independent from these justifications, there are. also some other projects involved in writing machine independent P-code optimizers which would potentially benefit all the programs which are translated into the common intermediate form before being tied to the final target machine. In conclusion, the PASCAL P-compiler seems to have helped spread the use of PASCAL far more than the sophisticated (and certainly more refined) 6000 Compiler from which it was derived. The Zurich group should be credited for its farsightedness in developing this compiler as a separate program as well as defining the original 'P' pseudo r.iachine which has since established the common grounds for the portability of PASCAL systems. Sincerely Sassan Hazeghi Computation Research Group P.S. The new version of the 370 Compiler is available through SHARE Program Library as well as Argonne Code Center, the microprocessor implementation is available only from the Argonne Code Center. 5. DOCUMENTATION. A User's Guide describes completely the implementation's departures from the Jensen and Wirth Pascal User Manual and Report. (* Apparently not machine retrievable. *) n 1'1 6. MAINTENANCE. No policy has been decided. It is anticipated that periodic upgrades and modifications will be distributed at least once a year. Reported bugs will be corrected as quickly as possible with notification to users. 1~ 7. STANDARD. The compiler provides numerous extensions and a few restrictions. A compiler option issues error messages when non-standard features are used. A complete description is contained within the documentation provided. A summary of the differences follows. Ex tens ions : Strings are padded on the right with b_lanks. a case default label: ' 11 <> 11 • Optional ~allowed before else. 11 ( • • • ) 11 may be used instead of 11 [ • • • ] 11 • The character eol has been retained. packed is ignored. Input of character strings using read is allowed. Support of EBCDIC characters 11 &11 , 11 j11, and (logical not sign). (* Sorry, we use ASCII at Pascal News. *) Use 11 • • • 11 for comments. value section exists for variable initialization· Hexadecimal integers are supported. A return code is available in the pre-declared variable rcode. FORTRAN subroutines may be called. [ .. . input- is initially eol instead of the first character of the file. This is · - transparent when read is used. ICL -- Introduction PCHICL - the Pascal Clearing House for ICL machines - exists for the purposes of: - Pro1 ected extensions: McCarthy if. or and and lower precedence than relations. "Usual 11Precedence used throughout. Sets over the range 0 .• 255. Better control of input and output formats. 8. MEASUREMENTS. The compiler is written in Pascal and is modeled after the CDC 6000 implementation, but it has been extensively modified and improved. The translator consists of approximately 8000 lines of Pascal code. The run-time library consists of approximately 500 lines of Pascal code. The monitor (which contains the interface to the operating system) consists of approximately 2000 lines of IBM Assembler G code. The translator speed has not been determined, but it seems faster than our Algol-W compiler. The code produced has been timed against Algol-W code and is almost uniformly 10-15% better. This is especially true of any program using a large number of procedure calls. The compiler compiles itself in less than 60 seconds of 370/168 processor time. The compiler requires 320K bytes of core. 9. RELIABILITY. To date has been excellent. A student version of the translator has been running since September, 1976, with only one detected compiler error. The main system version has been in operation since December, 1975. All problems which have been encountered to date have been corrected. (* Number of sites using system not reported. *) 10. DEVELOPMENT METHOD. The original translator was developed by Wirth and several graduate students at Stanford University as a partial re-write of the CDC 6400 version in 1972. The current translator and monitor have been extensively modified, a run-time library has been implemented, and a post-mortem symbolic dump package has been developed. The translator has been under continuous development at UBC since December, 1975, by two faculty members and one (* anonymous? *) graduate student. 11. LIBRARY SUPPORT. Fortran routines can be ·called. The compiler object modules. generates standard OS IBM 360/370 Williamsburg We have received no new information on this OS/VS implementation since that which we published last year in Pascal News issue: 1111: 95-96. Exchange of library routines; Avoidance of duplication of effort in provision of new facilities; Circulation of user and other documentation; Circulation of bug reports and fixes; Organisation of meetings of Pascal users and implementors; Acting as a 11 User Group 11 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: David Joslin; Hull College of Higher Education Inglenure Avenue Hull HU6 7LJ England, U.K. (0482) 42157 All ICL Pascal users are urged to notify David of any bugs they find, any compiler modifications they make, any useful programs or routines or documentation they have written, anything they have that may be of use or interest to other users. Pascal Cowpilers for thG ICL 1900 series l. ICL 2903/4) D.A.Joslin, May 22nd 1978 This compiler is the most suitable for ICL 1900s operating under George 4, and for those with a large core store (256K, sa;>) operating under GeorgG 3. This is the compiler described in the Implementation Checklist in "Pascal l'fews 11 • It incorporates a Diagnostics Package (written by D.Watts & W.Findlay of Glasgow University) and a Source Library facility. It te.kes 44K to compile most pro,gxama (60K to compile itself). It may be obtained by sending a mag.tape (7-track NRZI 556 bpi or 9-track PE 1600 bpi) to the implementor, viz: Dr. J,Welsh, Dept. of Computer Science, Queen's University, :BELFAST, JI.Ireland, BT7 lNN. IBM Series 1 (Reston) We have received no new information on this implementation published last year in Pascal News issue: 119-10: 85. (& #PASQ Iseue 3 IBM Series 1 (East Providence) It has been reported that SPAN Management Systems; Westminister Industrial Park; East Providence, RI 02914; 401/438-2200 has developed a dialect of Pascal which they call TSS and· Which will run on the IBM Series 1 computer; but we have received no information from them on their system. since that which we rn 2. #PASQ Mark 2A This compiler is suitable for all ICL 1900s (excep~ 1901, 190lA, 1902, 1903, 1904, 1905) & 2903/4s with at least 48K of core; it is the most suitable compiler for ICL 1900s operating under George z, and ror those operating under George 3 where core is at a premiUlll. The la..~guage processed (the language of the revised report) is identical to that p:rocas;:md by #P.AS~ Issue 3, tlie compiler U.escribed in the Implementation Checklist in "Pascal News", but there is no Diagnostics Package or Sou'.!:"ce Library facility. The compiler takes 36K to compile many programs, 40K I-' ID '.J co , to cm:rpile all but the. most cm:iplex ( 48K to compile its elf). It was ICL 1900 (Belfast) iraplenented originally by Queen 1 s University, Belfast, and has been enhanced to include: Selective co~pilation listing and insertion of rU.n-time checks; Nested cori.T.ents; Improved compilation listing layout, and full text of compilation error :raGssages; Colum Quinn, and Kathleen McShane, 2. 3, SYSTEM CONFIGURATION. Has been installed under George 3, George 4, Executive, MAXIMOP, and COOP operating systems. Requires 36K; uses -cR, DA, LP files. (Source library facility only possible, and diagnostics package only practicable under George 3 or 4°) 4. D.A.Joslin, (* address on previous page *) //,xPAC Hark Ul This compiLer is suitable for all ICL 1900s & 2903/4s with at least 32K of core. The lang-u.age processed is Pascal Nark 1, ie the language of the oriffinal :r:eport. The compiler takes 2L)J: to compile most programs (32K to compile its~lf). It may be obtained by sending a mag.tape to Sussex (as in para 2 abc:1e). be obtained by sending a mag.tape to Sussex (as in para 2 above). This is suitable for all ICL 1900s (except 1901, 1901A, 1902, 1903, 1904, 1905) & 2903/4s with at least 32K of core. broadly the language of the revised report The language processed is see the Pascal-P section of "Pascal l!ews". The translator takes 24K to compile most programs (28K to compile its elf). To conpl.ete the compilation process, either a P-code interpreter (based on th~ model interpreter provided) or a P-code to machine-code translator must be written. Futn:r:e Develouraer.t and a Diagnostics Package and Source Library facility (Georse 3/4 only) may be provided. (/) 5, DOCUMENTATION. Belfast's Users' Guide (supplement to Pascal User Manual and Report (Revised edition)) and implementation documentation is distributed with the compiler. Glasgow's Supplement to the Revised Report is available from : Bill Findley or David Watt, Dept. of Computer Science, University of Glasg?W, Glasgow, Scotland, Gl2 SQQ, United Kingdom (who also produced the Diagnostics package). 6. MAINTENANCE. No formal committment to maintenance. No plans for development in near future. Send bug evidence to Belfast, and also 2:_ note .Qi the~ ~ PCHICL (see notice under ICL--lntroduction) who circulate the bug reports and fixes to their members. 7. STANDARD. The level of the Revised Report; with: Exceptions: There are no anonymous tag fields; !1:.ks cannot be assigned, passed as value parameters, or occur as components of any structured type; Predefined procedures and functions cannot be passed as actual parameters; The correct execution of programs which include functions with side effect is not guaranteed; Only the first 8 characters of identifi~ignificant; ~s are limited to X· .y where O<= ord(x) <= ord(y) <= 47; The ICL 64 character graphic set is used for type char_; packed is implemented, and text = ££ char; alfa =packed array[l .. 8] ~ char. Extensions: vaLue and dispose are implemented; integers may be written in octal; additional predefined functions and procedures include: DATE, TIME, MILL, HALT, CARD; procedures ICL, ADDRESSOF allow use of inline machine code. 1~ tD 8. MEASUREMENTS. Compares favorably to Fortran, requiring about 32K to compile. Generated code is better than that produced by the old 1900 Pascal compiler. (* Compilation speed not reported. *) Perfonnance is better than most other ICL 1900 language processors (exceptions are incore compile-and-go batch systems of the WATFOR type). 9. RELIABILITY· Reported to be good. The compiler is in use at about 50 first released not reported. *) sites. (* Date 10. DEVELOPMENT METHOD. This compiler resulted from a complete rewrite of the old ICL 1900 compiler, which was bootstrapped from the CDC 6000 Zurich compiler. The new compiler is designed for portability, with a clean separation between semantic analysis and code generation. The compiler is about 14,000 lines of Pascal plus about 3500 lines of assembler code and produces absolute binary machine code. The post-mortem analysis program is about 2500 lines of Pascal. least 32K oi core, is to be producea. -Dy :Belfast, possibly by October 1978. ~he language processed will be identical to that processed by ,4:PAS~, en DISTRIBUTION. Free--send 9-track 1600 bpi PE or 7-track 556 bpi NRZI tape to Belfast. A two-stage Pascal compile:r:, which will be suitable for all ICL 1900s (except perhaps 1901, 1901A, 1902, 1903, 1904, 1905) & 2903/4s with at = MACHINE. ICL 1900 Series. packed file Pascal-P A Pascal to P(4)-code translator, configured for ICL 1900s & 2903/4s, may 5. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Jim Welsh, Department of Computer Science, Queens University, Belfast BT7 lNN, Northern Ireland, U.K. (* No phone number provided. *) Enhancements by David Watts and Bill Findlay, Computer Science Department, University of Glasgow, Glasgow Gl2 SQQ, Scotland, U.K. (* No phone number provided. *) Improved execution error handling; PE 1600 bpi) to: 4. DATE/VERSION. Checklist last updated 77/11/4. 1. More efficient mathematical standard functions; Facility to compile 15.Al-1 progra.ns; Specification of object-proGXar.l card & line lengths; Correction of various errors. It may be obtained by se!lding a nag. tape (7-t:r:ack NRZI 556 bpi o:r: 9-track 3· O. 11. LIBRARY SUPPORT. Allows access to Fortran routines. ICL 2900 (Southampton) O. DATE/VERSION. Checklist last updated 77/11/4. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Implementors: Project Supervisor: Dr. M. J. Rees; '-1 co Computer Studies Group; Faculty of Mathematical Studie$; The University; Southampton, S09 5NH; England, U. K. 0703/559122 x2270. Implementors: J. J. M. Reynolds; Computer Centre; Queen Mary College; University of London; Mile End Rd.; London, El 4NS; England, u. K.; 01 980 4811 x778 and H. J. Zell (deceased). The Pascal compiler will be distributed as a standard ICL program product. Contact the nearest ICL sales office or the Project Supervisor above. 2. u Intel 8080 INSITE > We have received no new information on this implementation published last year in Pascal News issue: //9-10: 102. since that which we > r = rn MACHINE. ICL 2960, 2970, 2980 series. Intel 8080 (Minneapolis) 3. en n SYSTEM CONFIGURATION. VME/B and VME/K. 4. DISTRIBUTION. Contact the nearest ICL sales office or the Project Supervisor above. (* No informati_on provided on cost, tape formats, etc. *) 5. DOCUMENTATION. Standard ICL manuals will be available: a) Pascal Language Manual: operating system independant aspects of the Pascal.language. b) running Pascal Programs on VME/B and VME/K: informcltion on how to run Pascal under th'e operating system. A 25-page report on 11 Tiny Pascal 11 , a cross-compiler for a greatly restricted variant of Standard Pascal which is written in CDC 6000 Zurich Pascal and produces machine code for the Intel 8080 is available from: Tiny Pascal Project; Peter H. Zechmeister; University Computer Center: 227 Exp Eng; University of Minnesota; 208 Church St.; Minneapolis, MN 55455 ( 612/373-4181) · 6. MAINTENANCE. Full maintenance will be provided by the implementation group and/or ICL while the compiler is offered as an ICL product. The usual ICL procedure for bug reports will be ad op t ed . Intel 8080 Munich 7 · STANDARD. The compiler implements Pascal: User Manual and Report. We have received no new information on this published last year in Pascal News issue: 1112: 66. 11 all 11 (sic] features of the language as described in 8. MEASUREMENTS. Code generated is fairly compact, the compiler itself producing 80000 bytes. This is better than the 2900 standard compilers. The (CDC) Pascal 6000 compiler compiles the 2900 compiler on a CDC 6400 in 82 seconds. The ICL compiler self-compiles on the 6400 in 100 secs. Running on a 2900, the 2900 compiler self-compiles in 360 seconds. John Reynolds tells us, 11 I've determined that almost all time required for a compilation on the 2900 is just burnt up by the system and that hardly any time at all goes in the actual act of code generation. 11 (* 77/7/8 *) (*Execution speed -of generated code not reported. *) The source listing is approximately 10,000 lines of Pascal and produces 80k bytes of code. Approximately 160k bytes of store are required to compile the compiler. 9. RELIABILITY. The compiler has been extensively tested and seems to work fairly well. Current (* 77/12 *) .reliability is moderate to good. (*Date of first release and number of sites using system not reported. *) 10. DEVELOPMENT METHOD. 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 compiler was bootstrapped using the 1900 compiler from Queen's University of Belfast as a base. Twenty-four person-months of effort from experienced programmers were required. 11. LIBRARY SUPPORT. As the compiler produces OMF modules, separate compilation and the inclusion of external procedures will be possible providing the necessary operating system facilities are present. IMSAI VDP-40 See Intel 8080. Intel 8080 Ann Arbor since that which we Intel 8080 Stanford We have heard reports that there is an implementation of Pascal for the Intel 8080 microprocessor that has been developed at Stanford University (Stanford Linear Accelerator Center), but the only information we have received on it is that in the letter under IBM 360/370 Stanford in this issue. Interdata 7/16 San Diego We have received no new information on this implementation since that which we published last year in Pascal News issue: /112: 67. Interdata 8/32 Manhattan, Kansas We have received no new information on this implementation published last year in Pascal News issue: 119-10: 103-104. since that which we Interdata 8/32 San Diego We have received a copy of two reports (* dated 78/5/2 *) on cross-compilers for Sequential and Concurrent Pascal which run on the Univac 1100 series and produce code for the Interdata 8/32. These reports, titled 11 Pascal-V 1. 0 11 and 11 Concurrent Pascal--V l. l 11, are available from: Mike Ball; Code 632; Naval Ocean Systems Center; San Diego, CA 92152; 714/225-2366. Intel 8080a UCSD We have received no new information on this implementation since that which we published last year in Pascal News issue: 1/12: 64-66. implementation See DEC LSI-11 UCSD. t:::J rn n rn , I s. ITEL AS/4, AS/5 Measurements • The M9900 pe:rrnits use of either- 8 bit memories or 16 bit memories. With 8 bit memories, the memory cycle time is 3 us, and with 16 bit memories 1 the cycle is 1 us. Which kind of memory is used has a radical effect on performance. With 8 bit memories the compile speed is about 44 significant characters per second, and with 16 bit memories, the speed is about 130 characters per second. No good benchmarks have been run to judge execution speed. Based on the performance of the original PDP-11 system and comparison of the PDP-11 and 9900 interpreters, we expect performance to range between 25% and 50% of native machine speed based upon instruction See IBM 360/ 370 · Marinchip Systems M9900 ltlarinchip Systems computer hardware and software 16 Saint Jude Road Mill Valley, Ca. 94941 = rn :;: (/J mix. (415) 383-1545 9. No extensive testing of the system has been done by users. However, since the compiler has been compiled through itself without problem, the system is felt to be quite stable. Marinchip 9900 Sequential Pascal Implementation Checklist 1. 2. 10. Development method. The system was bootstrapped from the PDPll/45 version of Sequential Pascal. The interpretive object code was loaded onto the 9900 system, and an interpreter was written for the interpretive code. Rather than implement the entire Solo operating system with which the compiler is shipped, an interface was developed to convert Solo calls into calls on .the Marinchip Disc Executive. The execution environment of a Sequential Pascal program is completely simulated. The compiler root segment and seven passes were then compiled through the compiler. The code interpreter and operating system interface total 3000 lines of 9900 assembly code. The compiler was transported and brought up in less than one man-month. The implementor has previously written and moved numerous compilers, but this was the first work on Pascal. Distributor/Implementor/Maintainer. John Walker Marinchip Systems 16 St. Jude Road Mill Valley, CA 949 41 (415) 383-1545 Machine. Tex.as Instruments TMS9900. This system runs on the M9900 CPU, which adapts the TMS9900 to the S-100 (Altair/IMSAI/etc.) bus. 3. System configuration. Separately-compiled Sequential Pascal programs may call each other 1 passing up to 9 arguments of type INTEGER, BOOLEAN, POINTER, or IDENTIFIER ( 12 character array of CHAR) • The program is loaded coresident with its caller 1 executed, and a completion status is returned to the caller {termination type and source line) . Program calls may be recursive, and nesting depth is lirni ted only by available memory and a configuration parameter. A utility program may be called either from the user terminal, or from another program. Distribution. Pascal is available to purchasers of the M9900 CPU board for $150. The system is distributed on an IBM-c~mpatible floppy disc in Disc Executive format. 5. Documentation. 12. General comments The Sequential Pascal compiler was found to be excellently documented, very reliable in our tests, and extremely easy to move. The current 9900 system is source and object compatible with the PDPll version. Efficiency considerations may force· divergence from the current object code compatibility. Documentation supplied is a supplement to Per Brinch Hansen's book, The Archi!-ecture. of Concurrent _Prog;rams, and his Sequent_ial Pasca~ ~rt. The documentation is in machine-readable form. 6. Maintenance policy. Bug reports accepted from purchasers of the system. Fixes are available at reproduction cost. system is brand new: no maintenance track record. 7. MITS Altair 680B See Motorola 6800 St. Paul. Standard. Based upon Per Brinch Hansen's Sequential Pascal, so all comments in the Pascal Variants section about that compiler apply to fuis one too. The ~l~ has been modified to permit identifiers to be upper and lower case (case does not affect matching) , to accept curly brackets for connnents, and square brackets for subscripts and sets. Sequential Pascal syntax still accepted as before. t:::> rn n rn 11. Libraxy support. Runs rmder Marinchip Disc Executive. Minimum configuration to compile compiler is 56K bytes main memo.i;y and one IBM-compatible floppy disc drive. 4. Reliability. Mitsubishi MELCOM 7700 We have received no new information on this implementation since that which we published last year in Pascal News issue: 119-10: 104-105. f-' LD '-I co r MOS Technology 6502 (Parksley, VA) NCR Century 200 Cl )> (/) Stephen p. Smith; p. O. Box 841; Parksley, VA 23421; 804/665-5090 Pascal system for the MOS Technology is working on a 6502 chip (using the Ohio Scientific Industries We have received no new information on this implementation since that which we published last year in Pascal News issue: #9-10: 105. Challanger I system). The system will originally be the minimum subset of Pascal needed to write its own compiler. The original version will cross-compile on any machine which supports a full standard Pascal compiler. The compiler will then convert itself to 6502 machine code and further revisions will then be written in the Pascal subset resident on the 6502. As of 77/12, the parsing procedures were completed and undergoing testing on a DEC-10. n )> r = Norsk Data NORD-10 CERN rn :::;;: We have received no new information on this implementation published last year in Pascal News issue: #9-10: 106. since that which we (/) Norsk Data NORD-10 Oslo !!OS Technology 6502 UCSD We have received no new information on this implementation since that which we published last year in Pascal News issue: i/9-10:. 106. See DEC LSI-11 UCSD. North Star Horizon Motorola 6800 St. Paul We have received no new information on this implementation since that which we published last year in Pascal News issues: 119-10: 105. 1111: 102. O. DATE/VERSION. Summer 1978. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. North Star Computei;s; 2547 Ninth St.; Berkeley, CA 94710; 415/549-0858. Motorola 6800 UCSD See DEC LSI-11 UCSD z. MA.CHINE. North Star Horizon Z-80 based system. 3. SYSTEM CONFIGURATION. Requires 48K of RAM and the Micro Disk System. 4° DISTRIBUTION. $49 including software on diskette and known if this is machine retrievable*). Motorola 6809 5. DOCUMENTATION. (*No information reported. *) 6. MAINTENANCE. (* No information reported. *) complete t::J documentation (* not See Motorola 68000. 7. STANDARD. Pascal. Motorola 68000 The system is an implementation of UCSD Pascal, which varies from Standard 8. MEASUREMENTS. (*No infonnation provided. *) 9. RELIABILITY. (*No information provided. *) 11. LIBRARY SUPPORT. (*No infonnation provided. *) Northwest Microcomputer Systems 85/P Northwest Microcomputer Systems; 121 East Eleventh; Eugene, OR 97401; 503/485-0626 the Northwest 85/P; a self-contained Intel 8085 based microcomputer which includes 2 double density full size Shugart floppy disks (1 Mbyte online), 54K of 450ns Static Nanodata QM-1 California We have received no new information on this implementation published last year in Pascal News issue: #9-10: 105. since that which we LO co 10. DEVELOPMENT METHOD. (*No information provided. *) offers f-' '--! See also Motorola 6800. Computer Weekly reported on 78/9/7: 11 Giving further credence to the view that Pascal could become the dominant high-level language of microcomputing, Motorola Semiconductor has revealed that this software will be the prime language supported by its new processor, HAGS, due to be unveiled early next year. 11 As an intermediate upgrade to MACS, Motorola will also be offering Pascal on its existing 6809 processor chip. The language is already available for the 6800 family from an independant source. t1MACS, the Motorola Advanced Computer System, is expected to see the light of day early next year, and to show its lineage with the 6800 family, will probably be officially known as the 6 8 000. 11 rn n rn RAM (I/O, etc. in PROM), Hall effect typewriter keyboard with numeric pad and 29 user definable function keys, 24 line 80 character 12"(30 cm) Video RAM display, 2 serial ports and 16 parallel ports. The basic system includes with the hardware the CP/M operating system and the Pascal system for $7,495. The Pascal compiler/interpreter runs at 725 lines/min and 11 provides the full Pascal environment", including random and sequential files, screen-oriented editior, interactive source linked debugger, and full documentation. 8. MEASUREMENTS: When range-checking code is produced the compilation speed is approximately 550 characters/second. When code with no checks is "required the speed is approximately 650 characters/second which is the same as FORTRAN 1 s compilation speed (without trace or checking) . Ohio Scientific Industries Challanger I See MOS Technology 6502. -0 )> (/) n )> THE UNIVERSITY OF HULL Prime P--300 and P-400 Hull PASCAL input/output is considerably superior to FORTRAN 1 s input/output. A text copying program takes about 4 times longer to execute in FORTRAN than PASCAI. HULL HU6 7RX. ENGLAND Tehphont!: Hull 46311 Department of Computer Studies 30th August, 1978 Dear Andy, We 1 re enclosing a fuller set of notes for our implementation of PASCAL on a PRIME 300. The work is now almost complete and we 1 re very pleased with the result. We have appended some extra sections to the notes. One of these deals with other implementations on PRIMEs and provides a brief summary of the information we hold on them. Unfortunately we can 1 t do a comparison of all implementations since the Georgia Tech. version only runs on a PRIME 400. Thanks again for your work with "PASCAL News 11 • Yours sincerely, Barry Cornelius. Ian Thomas. We do not have any comparisons foi: processor-bound programs since no-one can be persuaded to write a sufficiently large program in FORTRAN! However, we would expect PASCAL to be slower than FORTRAN since little optimisation of the code is currently performed. 10. DEVELOPMENT METHOD: The code generation sections of the PASCAL-P compiler have been extensively rewritten to generate 64R mode PMA. It is a true compiler rather than a compiler/interpreter system or a threaded code interpreter. The compiler is now some 6000 lines and compiles itself (without a compilation listing) in 300 C.P.U. seconds on the configuration described in 3 above. The first version of the compiler was developed from the PASCAL-P compiler on the University's ICL 1904S using the Belfast Mk.2 compiler. THE UNIVERSITY OF HULL'S PASCAL COMPILER England; Hull (0482) 497951. 2. 12. OTHER IMPLEMENTATIONS: There are a number of other implementations of PASCAL on PRIME machines. Some of these are described in more detail in an article we wrote for the Bulletin of the European PRIME· users Association, (see 11 PASCAL 11 , E.P.U.A. Bulletin, Volume 4, Issue 1 (June 1978)). (i) (ii) MACHINE: Developed on a PRIME 300 but will also run in 64R mode on a 3. SYSTEM CONFIGURATION: The PRIME 300 currently has 64K words running under PRIMOS-3 Revision Io. 5. DOCUMENTATION: A 30 page manual describing the PASCAL system is available in machine-readable form. It includes instructions on how to build a new compilex 6. MAINTENANCE POLICY: This will depend partly on the agreement with PRIME nevertheless we intend to correct reported errors for the next few years. 7. STANDARD: The PASCAL-P variant of PASCAL is implemented.. Some of its restrictions have been removed and some extensions have been added. The extensions include external procedures (see 11 below) and an initialisation facility for variables in the outermost block. t::::J rn n rn 3 b:I rn ;;o PRIME 400. 4. DISTRIBUTION: Two versions of the compiler have been released to PRIME (U .K.) for evaluation and testing. It is hoped to have a distribution arrangement agreed with PRIME in the near future. (/) The Run-time Support and the input/output routines have been designed so that, when an execution time error occurs, an error number is output together with a 11 wordcount 11 • The wordcount is the address relative to the start of the program of the instruction causing the error. The value of the wordcount appears at the start of each line of the compilation listing and so the error can be traced to the line of the source program at which the error occurred. 11. LIBRARY SUPPORT: Calls of external procedures are permitted. The parameterpassing protocol is a superset of that used by PRIME' s standard system routines. 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER: Barry Cornelius / Ian Thomas or Dave Robson; Department of Computer Studies, University of Hull, Hull, HU6 ?RX :,;:: 9. RELIABILITY: The compiler is very reliable and will reach a stable state by September 1978. It is hoped that the first release will then be available. As stated in 4 above / a preliminary release of the compiler is currently available on PRIME (U .K.) 's demonstration machines. Dave Robson. FOR PRIME 300 COMPUTERS r = rn (iii) P~.r Brinch Hansen's Sequential PASCAI - very slow. I-' lD 'l co University of Brunswick 1 s PASCAL compiler. Translates into modified Pcode which is subsequently optimised and translated into relocatable binary. The code produced contains calls to routines to perform Pcode instructions and it is thus a threaded code system. Compilation takes approximately 3 to 4 times as long as the University of Hull 1 s implementation but the translation into relocatable binary is very much faster than the assembly of the PMA that our implementation produces. Georgia Tech' s PASCAL compiler. The compiler was developed for a PRIME 400. From 11 PASCAL News 11 ff12 the current version appears to be a threaded code interpreter. 13. FUTURE PLANS: It is likely that we will implement translation into relocatable binary in the near future. The additional compilation time overheads will probably be offset by the reduction in the amount of character input/output currently necessary to output PMA text. -0 )> G') More of the restrictions 0f the PASCAL-P subset are also likely to be removed. It is possible that we will implement the post-mortem dump facility written (in PASCAL) by Glasgow University for the ICL Belfast Mk. 2 compiler. rn I-' I-' Vl Prime P-400 Atlanta Siemens 4004, 7000 Munich We have received no new information on this implementation published last year in Pascal News issues: 119-10: 106. 1112: 67. since that which we Processor Technology SOL According to Ralph I. Palsson, Customer Applications Manager: Processor Technology Corp.; 7100 Johnson Industrial Dr.; Pleasanton, CA 94566; 415/829-2600: "We do not currently (* 78/1/11 *) have any intentions of providing Pascal. We will be providing a FORTRAN compiler this spring as well as PILOT ... Providing good software support for users of Processor Technology hardware is one of our primary time, there has been relatively emphasis has been in other areas. 11 little demand committments [sic] . As of SIEMENS PASCAL BS2000 PROGRAMMING SYSTEM O. DATE/VERSION: 78/10/01 Version 2.0 For version 1 see ::ft-9/iO : 108 1. Distributor/Implementor/Maintainer Dr. M. Sommer SIEMENS AG Dep: D AP GE 1 Otto-Hahn-Ring 6 D - 8000 11Unchen 8 3 Germany = rn :.:E: (j) this for Pascal. Consequently our software According to S. M. Sokolow, Editor; Salus News; 1690 Woodside Rd. 219; Redwood City, CA 94061 (* 78/10/13 *): "We're in the process of preparing to distribute the Stanford Linear Accelerator Center's "implementation of P-code Pascal for the SOL with Helios disk. 11 2. Machine: SIEMENS series 4004 and series 7000 3. System configuration: all systems under operating system BS2000 (>= rel.3.0) 4. Distribution Radio Shack TRS-80 - please contact implementor See also Zilog Z-80. According to Hugh Matthias, Radio Shack, 205 NW 7th St., Fort Worth, TX 76101; Radio Shack does not intend to produce a Pascal system for the TRS-80 now or at any time in the future. "It appears to be to [sic] costly--ever!" (* 77/11/19 *). 5. Documentation Machine retrievable usev manual 6. Maintenance Policy - please contact implementor - RCA Spectra 70 See Siemans 4004, 7000 and Univac 90/70. SEL 8600 Jim Gilbert; Systems Structuring Technology; 30436 N. Hampton Rd.; Laguna Niguel,CA 92677; 714/640-5222 (work); 714/495-6039 (home) reports (* 78/9/30 *): "I am the implementor of the SEL 8600 & SEL 32 P2 Pascal mentioned in Pascal News #4. [Co-implementor Michael] Richmond is with D.G.c. in Carolina last I knew. I am available on a contract basis for language consulting. 11 SEMS Tl600 Nancy, France We have received no new information on this implementation published last year in Pascal News issue: 119-10: 106. since that which we Siemens 150 and 330 We have received no new information on this implementation since that which we published last year in Pascal News issue: 119-10: 107-108. 7. Standard. Standard PASCAL is accepted. Extension: Sets of any range (maxelements: 2048) are implemented by minimal byte-strings, separate compilation of PASCAL, FORTRAN,-procedures and PASCALModules many additional standard procs. - compiler options, like optimise, xref, debug, codelist, etc. - compiler instructions like copy from include-lib, skip. 8. Measurements: (For a SIEMENS 7.755) Compilation speed: 3200 chars (incl. blanks) I second 140 lines/second (:ii-speed is depending on options/listings*) Execution speed and execution space of an average of 6 test programs including prim, queens, palindromes, quicksort. etc. PASCAL version 2 PASCAL version 1 other language 446 SPACE (bytes 580 326 TIME (sec) 4. 2 7.8 5. 2 1 rn n rn 9. Reliability is hoped to be excellent as the reliability of version 1 is excellent. (Used by ca. 30 sites.) 0 N td (/) (/) ><: W(I) ' 10. Development method Developed from version 1 (developed from PASCAL P). New code~enerator - and other extensions. Length is ca. 14000 lines of compact PASCAL. Effort (Version 1~7Version 2) ca. 20 8 t>J ~:s: = rn 0 IV 0 ~ I I OOH I ~~M. 11. Library support p 0 0 b) Procedures and modules written in PASCAL rt Ul ti 0 Pl i rt 0 tj H <.D rnO f-'·0 f-' ,.,, See SEMS Tl 600. ~ §il "0 o- p SOLAR 16-05/ 40/ 65 tT'i:J ~ >-'· Standard Linkage. Copy from libraries in Source. tj (lJ Pl ' ti '< (/) @ f-' rt >-'·Pl a) Standard modules ~ram Assembler, Fortran, Cobol z ":! tj "' ro (lJ CXl t:t Ul'O ..... ,.,,. 0 ti SouthWest Technical Products See Motorola 6800. 0 Telefunken TR-440 ~itg:(;l Pl f-' t" tr!-'· I-'· H =====~=~====~==~====~~====~=~====~=~==~====~=========~=~=====~=====> ~~ ;:\,?;; '1 0 H [g,~ ~ Pl 8 rt rt><: TERAK 8510, 8510A UCSD 0 ..... 0 I ~P U1 See DEC LSI-11 UCSD. '< f-'·(ll p rt Ul Texas Instruments TI-ASC The only new information we have received on published last year in Pascal News issue: 119-10: is being done by the Advanced Software Technology the debugging stage; but that the compiler distribution. this implementation since that which we 109 is the rumor that the implementation group and is currently (* 78/2/28 *) in is probably not intended for outside rt Pl Pl <1 >-'Pl f-'f-'· Pl f-' rt Pl f-'·tt 0 f-' p (lJ Ul " s0 '1:l ti (lJ p. <1 (lJ ..... 0 Pl" tj Texas Instruments TI-980a rt Ul (lJ f-'<1 '< George Cohn, Wrubel Computer Center, Indiana University/HPER, Bloomington, IN 47401, (812) 337-1911, has had a Pascal version running for quite some time in the Computer Science Department, although no formal distribution arrangements have been made. (lJ tj Ul· ..... 0 p '1:l tj (lJ '1:l Pl ti ~ ..... 0 2, I I I replaced by generalized READ and WRITE procedures. Texas Instruments TI-990, 9910 Houston 0. DATE/VERSION Release 1.4.0, May 1978. 1. DISTRIBUTER/IMPLEMENTATION/MAINTAINER 8. Implemented by Texas Instruments. from TI sales offices, or write to: The compiler occupies a 64K byte memory region. speeds are comparable to the 990 Fortran compiler. Information is available 9. 10. = MEASUREMENTS 11. MACHINE Compilation (/) RELIABILITY DEVELOPMENT METHOD The compiler produces object code which is link-edited with run-time support routines to form a directly executable program. The compiler is written in Pascal and is self-compiling. or call (512) 258-7407. LIBRARY SUPPORT TI Pascal supports separate compilation of routines and allows linking with routines written in Fortran or assembly language. TI 990/10 3. J> I There are some known problems which are currently being worked on, but none are so serious that they can 1 t be worked around. The system has been used by several different groups within TI since October of 1977, and by a number of outside customers since May of 1978. Problems should be reported to: Texas Instruments Software Sustaining, MS 2188 P. o. Box 2909 Austin, Texas 78769 2. (/) n rn Texas Instruments Digital Systems Division, MS 784 P. 0. Box 1444 Houston, Texas 77001 or call (512) 258-7305. u J> TI Pascal has a number of extensions to standard Pascal, including random access files, dynamic arrays, ESCAPE and ASSERT statements, optional OTHERWISE clause on CASE statements, and formatted READ. SYSTEM CONFIGURATION t::J rn n Runs under the DXlO operating system (release 3) on a TI DS990 Model 4 or larger system, which includes a 990/10 with 128K bytes of memory and a 10 megabyte disk. 4. Texas Instruments 9900/4 Vienna DISTRIBUTION Available on 9-track magnetic tape (either 800 or 1600 bpi) or on a disk pack for a TI model DSlO, DS31, DS25, or DS50 disk drive. Contact a TI salesman for a price quotation. 5. 7. We have received no new information on this implementation published last year in Pascal News issue: /f9-10: 109. since that which we I-' lO '-! 00 DOCUMENTATION Complete user-level documentation is given in the "TI Pascal User 1 s Manual 11 , TI part number 946290-9701. 6. rn Univac 90/30 MAINTENANCE POLICY We have received no new information on this implementation since that which we published last year in Pascal News issue: #9-10: 109. TI Pascal is a fully supported product. Bug reports are welcomed and maintainence and further development work are in progress. Univac 90/70 STANDARD TI Pascal conforms to principal exceptions: * * * * * 11 standard 11 Pascal, _with the following See Siemens 4004, 7000 series. u Fune tions cannot alter global variables. A GOTO cannot be used to jump out of a procedure. The control variable of a FOR statement is local to the loop. The precedance of Boolean operators has been modified to be the same as in Algol and Fortran. The standard procedures GET and PUT have been J> G) rn I-' I-' 00 5. DOCUMENTATION. A 19-page machine-retrievable supplement to the Pascal User Manual and Repoit is available. It is 11 A Pascal Compiler for the Univac 1100 machines", by J. Steensgaard-Madsen and Henrik Snag of DIKU. Univac 90/70 Philadelphia UNIVERSITY of PENNSYLVANIA 6. MAINTENANCE. There the license aggreement. PHILADELPHIA 19104 is no promise of maintenance, but bug reports are required under 7. STANDARD . Deviations from the standard: Reset(f) on any textfile f will cause eof(f) =false and eoln(f) = true; Parameter types of formal procedures and functions must be specified. Restrictions: file of file is not allowed; standard procedures cannot be passed as actual parameters. Extensions: otherwise in case statements; conformant array parameters. Machine dependencies: Sets may have 72 elements, char is defined as (6-bit) Fieldata, ASCII is an additional type; real is double precision always. The Moore School of Electrical Engineering D2 DEPARTMENT OF CoMPUTER AND INFORMATION ScmNCB April 20, 1978 Dear Andy, 8. MEASUREMENTS. Compilation space is roughly 42K; speed is 100 Compiled programs run efficiently compared to other processors. I just wanted to let you know about the PASCAL 8000 implementation which I recently brought up on our Univac 90/70 (VS/9 operating system). 9. RELIABILITY. reported. *) The system is based on the Australian AEC·compiler of Cox, Tobias, Hikita and Ishihata (which is quite an excellent piece of software), and was implemented by modifying the runtime system to interface with VS/9. Excellent. (* Date 11. LIBRARY SUPPORT. External procedures Inclusion of assembler code is possi~le. * per SUP (/) second. may persons. ~(* Person-hours to develop be written in Pascal or (ASCII) Fortran. t:::l Univac 1100 Madison, Wisconsin No formal distribution plan!? have been made, but anyone who is interested (hopefully with software to trade) should contact me at P.O. Box 8191, Philadelphia PA 19101. ::;;: first released and number of sites u'sing system not 10. DEVELOPMENT METHOD. Pascal-P with a team of 4 system not reported. *) Only the compile-and-go version has been implemented at this time. All features of the Australian compiler have been retained, and additional support added for some VS/9 features: the system files SYSDTA, SYSLST, SYSOUT, SYSIPT, SYSOPT and are supported, and a COMMAND function has been added which allows PASCAL programs to issue VS/9 commands, i.e. COMMAND ( 1 /ERASE filename 1 ) ; This implementation will probably not run on Univac Series 70 VMOS without modification, since interrupt handling is done with operating system features that I am told are specific to VS/9. lines = rn We have received no new information on this implementation since published last year in Pascal News issues: 119-10: l10-l12. 1111: 103. that which we rn n rn t:d rn ;;o J.jJ~ Univac 1100 (San Diego) We have received a 33-page report on this implementation titled is available from the implementor. G. Kevin Doren o. 11 Pascal 1100 11 which I-' lD '-..j 00 DATE/VERSION. Checklist not updated since 77/08. Univac 1100 (Copenhagen) 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. Michael Center; San Diego, CA 92152; 714/225-2366. We have received a copy of a. 60 page users manual (* dated 77 /8 *) titled Compiler for the Univac 1100 Series 11 which is available from the implementor. o. 11 DATE/VERSION. Checklist not updated since 77/08. 632; Naval Ocean 2. MACHINE. Univac l100 Series. 3. SYSTEM CONFIGURATION. Exec-8 operating system; can be run in Demand mode. 4. DISTRIBUTION. As a member of USF., you may request a copy tape and noting any restrictions on it s format. fro~ hardware Systems Mike by sending a mag 5. DOCUMENTATION. A machine-retrievable supplement to the Pascal User Manual entitled 11 Pascal 1100 11 documents the implementation. MACHINE. Univac llOO series. 3, SYSTEM CONFIGURATION. Exec-8 operating system. (*Minimum reported. *) Ball; code A Pascal 1. IMPLEMENTOR/DISTRIBUTOR/MAINTAINER. J. Steensgaard-Madsen, DIKU (Datalogisk Institut Kobenhavns Universitet), Sigurdsgade 41, DK-2200 Copenhagen N., Denmark. (*No phone number reported. *) 2. s. requirements not 4. DISTRIBUTION. The charge for distribution from Datalogisk Institut is Dkr. 200. The distributors are attempting to maintain a distribution tree to reduce costs and hassles. Purchasers must sign a license agreement. The system is released only in relocatable form. and Report u ):> 6. MAINTENANCE. (*No information provided. *) G) rn 7. STANDARD. Restrictions: entry, processor, and univ are reserved words; standard procedures and functions may not be passed as actual parameters; file of file is not allowed. Sets may have at most 144 elements. The compiler accepts the full ASCII character set. A compiler option allows processing of Brinch Hansen Sequential Pascal programs. I-' I-' lD 8. MEASUREMENTS. The compiler compiles into 34K words and requires 6K words of library routines. (* Compilation speed not reported. *) Self-compilation requires about 15.5K for stack and heap. Execution times for code compiled by Pascal was compared with code generated by the NUALG and ASCII FORTRAN processors. Fortran's local optimization was taken as a base value. The programs used for comparison were taken from Wirth's paper on the design of a Pascal compiler (Software - Practice and Experience, Vol. 1 (1971), pages 309-333). The results are summarized in the following table. PART PARTNP SORT MATMUL COUNT g. Pascal (rel) 0.62 1.18 1.37 1.82 0.30 RELIABILITY. Pascal no tests (rel) 0 .61 l • 06 1.12 1.43 0.28 NUALG (rel) o.85 3 .29 1.83 2.05 0.72 NUALG no tests (rel) o.84 3.17 1-49 1. 70 0. 66 FORTRAN (rel) 1.00 0 .94 1.00 1. 00 1-00 FORTRAN FORTRAN local opt. global opt. (time) (rel) (rel) 1. 00 15.10 0.99 1.00 0 .93 o.85 1. 00 18. 01 0 .59 1-00 10.26 0.39 1.00 16.83 0.97 Additicnal ly, Westerc Digital offers a wide range of chip-level products which hav& be13n successful !y 1Jsed in a variet·y of applications including the fol lowing. • Data Communica7ions •Telecommunications Systems • Peri phera I Contra I I ers •Terminals and Printers • ~inlcomputers • Microcomputers • Sma[ i Busir.ess Systems • Custom Microprocessor E:iv i r•:mments i=lease ca! l our regional offices or this author· here at informai·ion. Newpo.~t = rn (/) Beach for add.itiona! •Western - ~r. Ed Raether, Los Gatos, Cal ifornie (408) 354-28!3 •Central - Mr. Dave Renwick, Trov, Michigan (313) 643-4482 •Eastern - Mr. Bob Green, Marblehead, Massact.uset-:-s ~617) 631-6466 lie believe these new Pascal MICROENGINE products wi 11 provide you tee mst cost it should approach excellent. The system has been in local use since about February, 1976, and it has been installed at 25 sites (11 university, 4 Quite wi 11 begin ;n the first quarter of 1979. good; government, 10 industry). effective solutions for processing raquirements. ;JCross a wide spectrum of appl ications where a high level language is required Si ncarely, 10. DEVELOPMENT METHOD. The compiler develop system not reported. *) was developed from Pascal-P2. (* Person-hours to 11. LIBRARY SUPPORT. Generated code can be linked to subprograms assembler. written in Fortran or J.T. Boren ~3rKeti~g Manager Computer Prcduc7s Division t::::J Varian V-70 VOICE rn " rn We have received no new information on this implementation since that which we published last year in Pascal News issue: 119-10: 112. Western Digital Newport Beach Xerox Sigma 6, 9 Quebec I-' lD WESTERN DIGITAL CORPORAT D We have ieceived no new information on this implementation published last year in Pascal News issue: 119-10: 112. N since that which we 3128 RED HILL AVENUE, BOX 2180 NEWPORT BEACH, CALIFORNIA 92663 <7141557-3550 TWX 910·595·1139 Thank y0!..l for your interest in Western DigiTal 1s innovai·ive new Pascal M!CROEJ11G:NETM pr0duct ! ine. \'le are pleased TO 'enclose our initiai I iteratLlr'3 1'/h~:::h wi: I socn be followed by more conclusive and detailed data sheets. Our first product offerings for the Pascal MICROENGINE are at both +he system and chip level. The desktop systPm (CP900078-0Xl configured in a stylized enclosure retai Is for $2995, although a special introductory off13r of $1995 :s ir. afrect for the ti rst 500 customers to raserve a syste.n. A 28% down paymer.t must c-:corr.?any ordP.rs for this specie! cf-far. Orders should be accompanied by the model number (above) with the appropriate "-OX" suffix to specify the ciskette type for receipt of soft~'/ure: -03 and -04 for S i r.ch standard d ! si<.ette, s i r-.91 t: and daub I e dens i tv / rospectively; ar.d -US and -06 for 5 1/4 inch mini disketTc, single and double den- sity, respectiveiy. The chip seT (CP 900088-02i retaiis for $195. Al I pr'css 3re subject to applicable tax. &.t:1 products are offered to the OEM and retai I mocket segmants with correspcnd!:ig pr!ce schedu!ss tar:;;eteC to +ho='?. marl'"E71-s. l)el iveties Xerox Sigma 7 Tokyo See also CII 10070 and CII IRIS SQ. We have received no new information on this implementation since that which we published last year in Pascal News issue: #9-10: 112. Zilog Development System See Zilog Z-80 UCSD. '-! co implementation, file device designators. Zilog Z-80 Indiana INDIANA UNIVERSITY 78/04/07 Wrubl'l Computing Center MEMORIAL HALL WEST, ROOM Nondescriminated variants. 3) ASCII coding. constants Andy Mickel University Computer Center 4) 227 Experimental Engineering Building Minneapolis, Minnesota 55455 the ZiloJ 7.80, will have an ~snow The project the point where it generates pretty good code. enhancements Any a: to be done either at a much slower I started with the P4 compiler and wrote PASCAL program that translated the PCODE to Z80 assembly mnemonics. I discovered that for the sake of efficiency of space, many of the PCODE instructions have to generate calls to a runtime support library that was grow~ng at a good clip. My next step was to eliminate the Z80 assembler. I and an intermediate file into my postprocessor so that it could generate standard Z80 object code. My final step was to move the logic from the postprocessor up into the main compiler, making it one pass. In order to avoid having an intermediate file, it assembles the code for each procedure body in a chain of arrays allocated from the heap. Thus, the largest procedure determines the amount of memory needed by the compiler. The compiler itself still thinks it is generating PCODE. I have undermiaed procedures GENO, GEN1, GEN2, GENDT, GEN1T, GEN2T, and a couple of others so that instead of printing PCODE mnemonics onto the object file, they call Z80 code generating routines which do the real work. now constants and J> SET These for r = cross must be (/) by an absolute address, since we have As a 5) Hex and octal in the source code. 256, for example, is represented as 1DDH for hex and 400Q for octal. 6) Hex output on textfiles. Example: WRITE(OUTPUT,A: 4 HEX); 'urther pace or by somebody else. incorporated address resolution (/) n no relocating loader. the past several months I have been working for ""[) characters are translated to External procedures and functions. accompanied Dear Andy, compiler statement on as· serve Also standard PASCAL. ASCII. This is absolutely necessary compilation on non-ASCII machines. TEI .. NO. 812--337·1911 O~er CASE based actually J> 2) BLOOMINGTON, INDIANA 47401 PASCAL names bonus, I have actual Z80 addresses alongside my listings, making breakpointing convenient.' Under the present configuration, characters range from 0 to 255, sets may contain up to 128 elements, integers ar~ 32 bit two's complement, and reals are not yet implemented. I was once tempted to cut integers down to 16 bits, which would work wonders for efficiency, but Al Towell talked me out of it. What can you do with a 16 bit integer? PASCAL can provide a convenient medium for applications systems with the help of assembly language procedures for tight spots. We seem to be getting into Z80s more and more at the Wrubel Computing Center, so I am confident that the code I worked on will see plenty of action on the front lines. am sending a listing of my runtime support package and listings of a couple of compilations for you to look over. Tell me what you think. f-' Respectful Ly, lD '-l G~<- co George Cohn III My compiler is probably doomed to remain a cross compiler for the duration of its existence. Its output code cennot hope to compete with interpreter code for effic1ent utilization of space. However, the runtime support package takes up about 4K bytes, and a good interpreter that used that package extensively could probably be written in a few hundred bytes. The compiler could be remodified to generate a binary interpreter code in Z80 loader format. Tren s0me really big programs could be run on the Z30, perhaps the compile~ itself~ But that is another project. Zilog Z-80 UCSD See also DEC LSI-11 UCSD. We have received no new information on this implementation since that which we published last year in Pascal News issue: 119-10: 112. ~v~n Zilog Z-8000 I have made some little white compiler to make it more convenient programmer. 1) modifications to the to u the microprocessor These include the following: Not really an extension, since they are Files. In the current part of the language definition. J> It is believed that many of the present Zilog Z-80 Pascal systems could be easily modified ·to run.on the Z-8000; since Zilog says 11 using an automatic translator, present users of the Z-80 can easily convert to the Z-8000, since the Z-8000 instruction set is, in effect, a superset of the Z-80 instruction set. 11 We would appreciate hearing from anyone who has made such a conversion; or from anyone who has developed a Pascal system directly for the Z-8000. Gl rn f-' N f-' I N D E x T 0 I Mp L E ME N T A T I 0 N N0 T E s Machine Dependent Implementations General Information 119&10: 60. 1111: 70. 1113: 87. Checklist 119&10: 60. 1112: 56. 1113: 88. Portable Pascals Pascal-P 119&10: 61-62. 1111: 70-72. 1112: 5 7. 1113 : 88. Pascal Trunk 1113: 89. 119&10: 62. Pascal J 119&10: 62. 1113: 89. Pascal Variants Concurrent Pascal 119&10: 63. 1111: 72-74. Modula 119&10: 63. 1111: 74. Pascal-S 119&10: 63. 1111: 72. 1113: 90. 1113: 91. 1113: 89. Feature Implementation Notes Boolean Expressions 1111: 76-78. Comments 1113: 92. Default Case 119&10: 69-70. For Statement 119&10: 66-6 9. 1111: 79-80. Input and Output 1113: 91. Interactive I/O 119&10: 71-72. 1113: 92. Long Identifiers #11: 78-79· Sets #9&10: 64-66. #12: 57. Un.implementable Features #11: 75. Alpha Micro Systems AM-11 See DEC LSI-11. Altair 680b See Motorola 6800. Altair 8800 See Intel 8080. Altos ACS-8000 1113: 94. Amdahl 470 See also IBM 360, 370. 1113: 94. Andromeda Systems 11-B 1111: 80. Apple II See MOS Technology 6502. BESM 6 1113: 94. BTI 8000 1113:, 95. Burroughs Bl700 119&10: 73. 1112: 57. Burroughs 1800 See Burroughs 1700. Burroughs B3700, B4700 119&10: 7.3. 1112: 58. Burroughs B5700 119&10: 74. 1111: 81. 1113: 95. Burroughs B6700, B7700 119&10: 74-75. 1111: 81· 1112: 58-59. 1113: 95. 6000, Cyber 70, Cyber 170 CDC 119&10: 76. 1111: 82-83. 1113: 96. CDC 7600, Cyber 76 119&10: 76. 1111: 33. 1113: 97. CDC Cyber 18 and 2550 119&10: 75. 1111: 81-82. cqc Cyber 203 (STAR-100) 1113: 97. CDC Omega 480 See IBM 360, 370. CDC Star-100 /19&10: 77. CII Iris 50 119&10: 77. CII 10070, Iris 80 119&10: 77-78. 1112: 59-60. Comodore Pet 2001 #12: 60. Computer Automation LSI-2, LSI-4 119&10: 78. 1112: 60. Cray Research CRAY-1 119&10: 78-79. Data General Eclipse 119&10: 79-80. /Ill: 85. 1112: 60-61. 1113: 98. Data General Nova 119&10: 79-82· 1111: 83-85. 1112: 60-61. 1113: 98. DEC PDP-8 119&10: 82. 1111: 85. 1113: 101. DEC LSI-11 and PDP-11 119&10: 82-88. 1111: 86-91. 1112: 62-63. 1113: 100. DEC VAX-11/7 80 1113: 104. DEC DECSystem-10 l/9&10: 89-91. 1111: 91-92. 1113: 104. DEC DECSystem-20 See DEC DECSystem-10. Dietz MINCAL 621 119&10: 91-92. Foxboro Fox-1 119&10: 92. Fujitsu FACOM 230 119&10: 92. Harris / 4 l/9&10: 92-93. Heathkit H-11 119&10: 93. //13: Hewlett Packard HP-21MX 119&10: 93. 1111: 92. 1112: 63. 1113: 105 . Hewlett Packard HP-2100 119&10: 93. 1112: 63. 1113: 105. Hewlett Packard HP-3000 119&10: 94. 1112: 63-64. Hitachi Hitac 8700, 8800 119&10: 94. Honeywell 6000 119&10: 94-95. 1111: 92-93· Honeywell H316 119&10: 94. 1111: 93. 1113: 106. 119&10: 95. IBM 1130 1/9&10: 101. IBM 303x See IBM 360,370. IBM 360, 370 119&10: 95-101. 1111: 93-100. 1112: 64. 1113: 106. IBM Series l 1113: llO. ICL 1900 119&10: 101-102. 1111: 100-101. 1113: llO. ICL 2900 119&10: 102. 1111: 100, 101-102. 1113: lll. IMSAI VDP-40 See Intel 8080. Intel 8080, 8080a 119&10: 102-103. 1111: 102. 1112: 64-66. 1/13: ll2. Intel 8085 See Int·e1 8080. Intel 8086 See Intel 8080. Interdata 7/16 119&10: 103. 1112: 67. Interdata 7/32, 8/32 l/9&10: 103-104. 1112: 67. 1113: ll2. ITEL AS/4, AS/5 See IBM 360, 370. Marinchip Systems M9900 1113: ll3. Mitsubishi MELCOM 7700 119&10: 104-105. MITS Altair 680b See Motorola 6800. MITS Altair 8800 See DEC LSI-ll· MOS Technology 6502 See also DEC LSI-11. 1113: ll4. Motorola 6800 119&10: 105. 1111: 102. Motorola 6809 See Motorola 68000. Motorola 68000 1113: ll4. Nanodata QM-1 119&10: 105. NCR Century 200 119&10: 105. Norsk Data NORD-10 119&10: 106. North Star Horizon 1113: ll4. Northwest Micro Systems 85/P 1112: 67. 1113: ll4. Prime P-300 1111: 103. 1113: ll5. Prime P-400 119&10: 106. 1112: 67. Processor Technology SOL 1113: ll6. Radio Shack TRS-80 1113: ll6. RCA Spectra 70 See Siemens 4004, 7000. See Univac 90/70. SEL 8600 1113: ll6. SEMS Tl600, SOLAR 16/05/ 40/65 119&10: 106. Siemens 150 See Siemens 330. Siemens 330 119&10: 107-108. Siemens 4004, 7000 119&10: 108. 1113: ll6. SOLAR 16-05/40/65 See Sems T1600. Telefunken TR-440 119&10: 108. 1113: ll7. Terak 8510 See DEC LSI-11. Texas Instruments TI-ASC 119&10: 109. 1113: ll7. Texas Instruments TI-980a l.'13: ll7. Texas Instruments TI-990, 9910 1113: ll7. Texas Instruments 9900/4 119&10: 109. Univac 90/30 119&10: 109. Univac 90/70 119&10: 109. //13: llB. Univac 1100 119&10: 109-112. /Ill: 103. 1113: 119. Varian V-70 119&10:· 112. Western Digital 1113: 120. Xerox Sigma 6, ·9 119&10: 112. Xerox Sigma 7 119&10: 112. Zilog Z-80 119&10: 112. 1111: 103. 1113: 120. Zilog Z-8000 1113: 120. = u ::IO> = rn I-' N N POLICY: PASCAL USER S GROUP (78/10/01) Purposes: 1 Pascal User's 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 ~ews, 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 11 production" software * implementing software efficiently on today's machines *writing portable software Pascal is a leading language in computer science today and is being used increasingly in the world's computing industry to save energy ana 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 1978 (corrected printing), 167 pages, paperback, $6.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 User's Group is each individual member's group. We currently have more than 2712 active members in more than 41 countries. This year Pascal News is averaging more than 120 pages per issue. ~ (.) -·-a. 0


Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.6
Linearized                      : Yes
Create Date                     : 2015:03:23 13:40:33-07:00
Creator                         : Adobe Acrobat 11.0.10
Modify Date                     : 2015:03:23 14:00:05-07:00
Title                           : 
XMP Toolkit                     : Adobe XMP Core 5.4-c005 78.147326, 2012/08/23-13:03:03
Metadata Date                   : 2015:03:23 14:00:05-07:00
Creator Tool                    : Adobe Acrobat 11.0.10
Format                          : application/pdf
Document ID                     : uuid:58a1fcff-d826-43f2-9652-d5497a379182
Instance ID                     : uuid:c9b2a5d9-f125-463d-9346-e5ea550bf0c9
Producer                        : Adobe Acrobat Pro 11.0.10 Paper Capture Plug-in
Page Count                      : 125
EXIF Metadata provided by EXIF.tools

Navigation menu