12_Pascal_News_Jun78 12 Pascal News Jun78

12_Pascal_News_Jun78 12_Pascal_News_Jun78

User Manual: 12_Pascal_News_Jun78

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

Download12_Pascal_News_Jun78 12 Pascal News Jun78
Open PDF In BrowserView PDF
PASCAL USER'S GROUP

Pascal News
(FORMERLY PASCAL NEWSLETTER)

NUMBER 12
COMMUNICATIONS ABOUT THE PROGRAMMING LANGUAGE PASCAL BY PASCALERS

JUNE" 1978

.'

TAB LEO F CON TEN T S
COVER: The PUG Letter Opener and Letter-Writing Implement
o POLICY: Pascal News
1 ALL PURPOSE COUPON
3 EDITORIS CONTRIBUTION
4 HERE AND THERE WITH PASCAL
4
News (Jobs, Tidbits)
7
French/English - English/French Pascal Identifiers
8
Pascal in the News
8
Conferences
9
Books and Articles
11
Articles Wanted
11
Roster Increment
17 APPLICATIONS
17
News
Al gorithms
18
Software Tools
20
32
Programs
32 ARTICLES
32
IIExtensions to Pascal for Separate Compilation ll
- Richard J. LeBlanc
IIWhat Are Pascal IS Design Goals?1I
33
- Robert D. Vavra
34
IIPascal Environment Interface ll
- Terje Noodt
37
IIS ubranges and Conditional Loopll
- Judy M. Bishop
39
IIA Few Proposed Deletions ll
- John Nagle
40 OPEN FORUM FOR MEMBERS
52
Pascal Standards
56 IMPLEMENTATION NOTES
56
Checklist
56
Portable Pascals
57
Feature Implementation Notes
57
Machine-Dependent Implementations
68
Index to Implementation Notes (PUGN 9-12)
69 POLICY: Pascal Userls Group

POLICY:

PASCAL NEWS

(78/04/15)

* Pascal News is the official but informal publication of the User's Group.
Pascal News contains all we (the editors) know about Pascal; we use it as
the vehicle to answer all inquiries because our physical energy and
resources for answering individual requests are finite. As PUG grows, we
unfortunately succumb to the reality of (1) having to insist that people
who need to know "about Pascal" join PUG and read Pascal News - that is
why we spend time to produce it! and (2) refusing to return phone calls
or answer letters full of questions - we will pass the questions on to
the readership of Pascal News. Please understand what the collective
effect of individual inquiries has at the "concentrators" (our phones and
mailboxes). We are trying honestly to say: "we cannot promise more than
we can do."

* An attempt is made to produce Pascal News 3 or 4 times during an academic year
from July 1 to June 30; usually September. November, February, and May.

* ALL THE NEWS THAT FITS, WE PRINT. Please send material (brevity is a virtue) for

Pascal News single-spaced and camera-ready (use dark ribbon and 18.5 cm lines!).

* Remember: ALL LETTERS TO US WILL BE PRINTED UNLESS THEY CONTAIN A REQUEST TO
THE CONTRARY.

* Pascal News is divided into flexible sections:

~
(.)

---

o

D.

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 information 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 and Tim Bonham - Implementation Notes editors
Sara Graffunder - Here and There editor
Rich Stevens - Books and Articles editor
Rich Cichelli - Applications editor
Tony Addyman - Standards editor
Scott Bertilson, John Easton, and Steve Riesman - Tasks editors

PASCAL USER'S GROUP

ALL PURPOSE COUPON

USER'S

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

GROUP

(78/04/15) •
Pascal Userls Group, c/o Andy Mickel
University Computer Center: 227 EX
208 SE Union Street
University of Minnesota
Minneapolis, MN 55455 USA

+

Clip,

+

~e~oduee, ~e.

pho~oeopy, o~

and

/ / Please enter me as a new member of the PASCAL USER'S GROUP for
Academic
year(s) ending June 30,
(not past 1982). I shall receive all the
issues of Pa..6eai. Nw./.) 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. *)
II

/ / Please renew my membership in PASCAL USER'S GROUP for
Academic year(s)
ending June 30,
(not past 1982). Enclosed please find - - . (* See the Pa..6eai. New./.)
/ / Please send a copy of Pa..6eai. New./.) Number(s)
POLICY section on the reverse side for prices and issues available. *)
/ / My new address
phone is printed belO\'J . Please use it from now on.
old mailing label if I can find one.
address
/ / You messed up my phone. See below.

1111 enclose an

/ / Enclosed please find a contribution (such as what we are doing with Pascal at
our computer installation), idea, article, or opinion which I wish to submit
for publication in the next issue of Pa..6eai. New./.). (* Please send bug reports
to the maintainer of the appropriate implementation listed in the Pa..6eai. Nw./.)
IMPLEMENTATION NOTES section. *)

/ / None of the above.

Other comments:

From:

name

-----------------------------

rna i 1i ng addres s ___________________________

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 "Pascal User's Group");
we will not bill you.
- please do not send us purchase orders; we cannot endure the paper work! (If you are
trying to get your organization to pay for your membership, think of the cost of
paperwork involved for such a small sum as a PUG membership!)
- when you 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
"publishing business." We produce Pascal News as a means toward the end of
promoting Pascal and communicating news of events surrounding Pascal to persons
interested in Pascal. We are simply interested in the news ourselves and prefer to
share it through Pascal News, rather than having to answer 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. International
telephone: 44-703-559122 x700.
Australasian Region (Australia, East Asia -incl. Japan): Join through PUG(AUS).
Send $A8.00 per year to: Pascal Users Group/ c/o Arthur Sale/ Dept. of Information
Science/ University of Tasmania/ Box 252C GPO/ Hobart, Tasmania 7001/ Australia.
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 joi nin .. )
- 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 ofautomatical'y sending all issues of Pascal News to anyone who
joins within an academic year (July 1 to June 30) means that we eliminate many
requests for backissues ahead of time, and we don't have to reprint important
information in every issue--especially about Pascal implementations!
- Issues 1, 2, 3, and 4 (January, 1974 - August, 1976) are out of print.
- Issues 5, 6, 7, and 8 (September, 1976 - May, 1977) are out of print.
(A few copies of issue 8 remain at PUG(UK) available for~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 $A10.
- extra single copies of new issues (current academic year) are:
$3 each - PUG(USA); i2 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. "All The News That Fits, We Print.
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.
II

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.

l5i1

Dear Andy,

UNIVERSITY OF MINNESOTA

University Computer Center

TWIN CITIES

227 Experimental Engineering Building
Minneapolis, Minnesota 55455

(612) 376-7290
The DEADLINE for PUGN 13/14 is August 15. Tony Addyman is now PUG's new Standards
Editor. Don't forget to renew if you need to--check your mailing label.
Personal Observations
1) Pascal-P has enabled a great many people to learn about compilers who otherwise
would never have had the chance. Do you realize the implications? These same people
(myself included) will never be able to look at other compilers for other languages
(especially the ones peddled by manufacturers) the same way from now on. Our critical
eyes probably won't be able to endure them either.
2) Please see the Books and Articles section for the article entitled: "Ambiguities and
Insecurities in Pascal," which is the first, good, critical article about Pascal to
appear (yes, we know about Habermann's article). The most memorable passage is in the
conclusion:
" .•. Because of the very success of Pascal, which greatly exceeded the
expectations of its author, the standards by which we judge such languages
have also risen. It is grossly unfair to judge an engineering project
by standards which have been proved attainable only by the success of the
project itself, but in the interests of progress, such criticism must be made."
3) Many people are now decrying the lack in Pascal of "business-oriented" language
features such as indexed-sequential access methods for file processing, packed decimal
data types, and other inefficient ways of doing computing. I would suggest a Business
Procedure Library similar to the IMSL and NAG mathematical and statistics libraries
for numerical (old term = 'scientific') people. We should use the simple, but versatile
tools (language features) we already have to build what we need for other things.
4) We need more news (notices, articles, opinions, etc.) for Pascal News about teaching
experiences with Pascal.
How is Pascal User's Group? (*new members especially please read this*)
PUG has now grown too large to handle it in the personal manner we have in the past.
Membership stands at 2147+. We used to be extremely efficient, because I, for one,
could keep it all in my head and remember who was a member from where,which joined when
and how. It was like stamp collecting. We have resorted to dropping all kinds of services
we never promised to do but nevertheless did. Now when a new member joins, all he or she
receives is backissues, and no personal reply, receipt, or answers to questions. PUG
is another example illustrating limits to growth.
The event that seems to have changed the situation permanently was the first full-page
article about Pascal in the April 27 issue of Computerworld--the largest and most widelyread computer journal in the United States. The following Monday we received 83 pieces
of mail in one day (old record for a single day was 39 pieces, while typical mail in the
past averaged 20-30 pieces/week.)! Do you realize how much time it takes to open 83
pieces of mail? Remember, we don't have secretaries.
PUG(USA) has managed to break even in the past--including this year--but we must raise the
rates to $6 per year. Postage and printing costs keep rising. David Barron at PUG(UK)
announces new rates of 4 per year and Arthur Sale at PUG(AUS) announces a $A2 decrease
(now $AS). Please see their notices following. At least now our rates are more
normalized. We have kept the rate low to attract members and to spread Pascal as fast and
as far as possible. We as a group are an exceptionally broad base of people, and I think
that is a real accomplishment. And remember, we accept no advertizing.
We have always tried to keep this operation simple: no special services, no special rates
for special mailing, etc. I know I just wouldn't have time otherwise. I set up PUG
so that it can be dismantled within one week and all money refunded! Charging a little
more money this year will allow us to hire a part-time secretary to handle the growing
clerical workload. The most time-consuming process is to process memberships and update
the mailing list. We usually batch 3 or 4 weeks of mail before we process it!

Editor's Contribution

.,.. ~

78/05/02.

Here is our cost estimates for Australasian distribution for 1978/9. As you
will see, I am recommending a lowering of the fee to $A8.00. Last year's fee was
based on estimates from our printery which in the even proved slightly high, and
of course the amalgamation of issues 9 and 10 saved us postage. Consequently we
have a small reserve, and I have been able to budget for exactly balancing costs
with subs in 1978/79, carrying any inflation in postage and the costs of carrying
stocks of back copies out of the reserve.

=
rn

There may be some request for refunds from people who paid for two years.
I'd rather not be involved in sending out cheques, and I suggest we treat this the
same as with people who pay for two years in a price rise situation: we don't ask
for more so we shouldn't give refunds.
$1.00

Printing cost per issue

Postage

(/)

Australia

$0.70

New Zealand

$1.20

Singapore

$2.00

averaged over subscribers
Cost per issue

_~

approx.

$2.00

Recommended subscription for 1978/79

$8.00 (Australian)

'-

=

=
rn

Yours sincerely,

I-'

co
'-J

A.H.J. Sale,
Department of Information Science.

PASCAL

USERS

GROUP

-

European Region Subscriptions 1978/79

We' regret that steep increases in the cost of

printing compel us to increase the subscription

to £4 PER ANNUM.
We regret the increase) but even at this figure
we shall only just break even. Without volunteer
labour) charges would be much higher.
Please remember that cheques must be in sterling)
drawn on a British (or Irish) bank Processing
ster1~ng cheques drawn on foreign banks, or nonster11ng cheques is prohibitively expensive.
If you have a Post-Giro account, you can pay by
direct transfer into our account number 28 513 4000.
RENEWALS take time) which is precious.
subscribe for two or more years?

Why not

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

00

..
..
...
..

~

'"
»
-l

3:

;;;0

3:

3:

(j)

IT1

3:

:r:

'"
(j)
:r:

to
IT1
'"

"1J

-l

»
z

:2

o

Gl

-l

'"IT1Z

IT1
t::I

IT1

::E:

-l

-<

IT1

»

<
IT1

IT1

to

()

:r:

:r:

IT1

IT1

o

IT1

0

»

c

-l
-l

'"

:r:

IT1

=
=
-0

the

Here and There With Pascal

compiler

written

in

Pascal

developed

at

SLAC,

Stanford University."

Richard J. Cichelli, 901 Whittier Dr., Allentown t PA 18103: "Joseph
Villanova has supervised two projects to implement Pascal-S on the 370.
AAEC Pascal compiler (Pascal-S in Pascal--takes 100 seconds to compile)
PL/1 compiler (Pascal-S in PL/1--takes 36 minutes to compile). Pascal-S
30 per cent smaller and ran five times faster." (* 78/04/14 *)

N E \~ S
PASCAL JOBS
(* PUG

Member Jack Laffe has been keeping track of some of the jobs for Pascalers which
have been advertised in recent months. We decided to publish it as one more indication
of the currency of Pascal. This is not a "Help Wanted" section; in fact, these jobs may
have been filled. We may continue publishing this section, when space permits, if
someone like Jack will compile the list. *)

(* The

first job was advertised in CACM in January_ The others all appeared in Computer
World on the date indicated with the job description. *)
Softech: compiler design.
Dunhill Personnel Inc.: 78/01/02
Modular Computer Systems: 78/01/23
National Cash Register: compiler design for Pascal-like language: 78/01/30
Timeshare: applications, systems: 78/02/06
Amdahl: systems programmer with Pascal experience: 78/02/27
California State Universities and Colleges: instructional consultants
78/03/06
GTE Sylvania: software engineers: 78/03/20
Houghton-Mifflin: Pascal programmers: 78/3

Pascal

(* 78/03/05 *)

in

Pascal:

TIDBITS
Richard E. Adams, 239 Chatham Road, Columbus, OR 43214: "Did you hear that Burroughs was
implementing Pascal on a microprocessor? (They were advertising for people in
Computerworld." (* 78/02/09 *)
Wayne Andrews, Electronics Department, Weber State College, 3750 Harrison Blvd., Ogden,
UT 84408: "We just put Pascal on our Dec-l0 system and are trying to get going on the
project." (* 78/03/06 *)

Mezzaroba at
One using the
and the IBM
in Pascal was

Roger Creamer t CTB/McGraw-Hill, Del Monte Research Park t 1:1onterey, CA 93940: "Also, any
specific information which you could provide on Pascal implementations for the IBM 370
and DEC PDP-ll would be much appreciated." (* 78/04/14 *)
Anthony Conti, Box 1201, Concord t NH 03301: "I am a user of a Data General Eclipse S200
minicomputer and am interested in running and maintaining Pascal on it. tI (* 78/01/12 *)
Jean-Louis Decoster, Lyss-Str. 21, CH-2560 Nidau, Switzerland: "Could you inform me too
if a Pascal compiler is alre....,.ady implemented for "Could you inform me too if a Pascal
compiler is already implemented for the Motorola 6800?" (* 78/03/15 *)
Alan Delwiche, Computer Programming Instructor, Leland High School, 6677 Camden Ave.,
San Jose, CA 95120: "Would you please send me any information regarding versions of
Pascal for an 8080 or Z80 microprocessor. We have a 32K Cromemco with dual minifloppy
drives." (* 78/02/08 *)
Shaun Devlin, 6854 Cedarbrook, Birmingham, MI 48010: "I would also appreciate it if you
could direct me to anyone who has or is planning to implement Pascal on a Texas
Instrument 990/9900 system." (* 78/01/05 *)
Bob Dietrich, M.S. 60-456, Tektronix, Inc., P.O. Box 500, Beaverton, OR 97077: "Am
bringing up solo-concurrent Pascal under RSTS/E time sharing system (PDP-i1). Also
involved with Swedish and BSM Pascals for PDP-ll." (* 78/03/08 *)

Mel R. Fisher, Business Dept., Calvary Community Church, 1175 Hillsdale Ave., San Jose,
CA 95118: "I am in the process of writing specialized programs for our church records
bookkeeping, and data of this nature. The Pascal language sounds very interesting, and
I would appreciate any further information that you could supply me with. We currently
have an IMSAI 8080 48K memory, with floppy disk video display and printer."
(* 78/02/15 *)

Francis H. Beardon, Manager of Projects, Data Systems, Cincinnati Electronics, 2630
Glendale-Milford Road, Cincinnati, OH 45241: "We at Cincinnati Electronics Corporation
are interested in Pascal as a possible standard programming language for our developed
software systems because of its projected portability." (* 78/02/13 *)

George H. Golden, Sr., Computer Center, SUNY-Fredonia, Fredonia, NY 14063: "We are
trying to get Pascal running on the Burroughs B-4700. It runs. But takes too much
core." (* 78/04/10 *)

David J. Bell, 609 Craig Ave., Campbell, CA 95008: "My personal system is a Processor
Tech SOL-10, with externally expanded memory and I/O. I am interested in developing a
Pascal translator for this computer, and for the RP2112 I use at work." (* 78/03/10 *)

Robert M. Green, Robelle Consulting, Ltd., No. 130, 10th Ave., Delta, BC V4M 3T9: "Could
you let me know if there are any implementations of Pascal for the Hewlett-Packard 3000
computer? If not, I am interested in implementing it. Is there any way I can get a copy
of the Portable Pascal compiler, version P4?" (* 78/02/02 *)

1Villiam R. Blatchley, Measurement Systems Div., Siemans Corp., 3 Computer Drive, Cherry
Hill, NJ 08002: "We are engaged in test equipment design and development for memory
devices and have a possibly immediate need for a Pascal implementation on a PDP-II for
testing magnetic bubble memories." (* 78/04/12 *)
Damon Blom, 72 Sandburg Drive, Sacramento, CA 95819: "I am presently using Pascal on an
IBM 370/168 computer using a Pascal compiler written in XPL. I will be getting shortly

=
rn

Robert Emerson t Honeywell Information Systems, 9555 S.E. 36th St., Mercer Island, WA
98040: "Another interest of mine is implementing a Pascal compiler on the Honeywell
Level 6 mini computer. Any tips for compiler implementation would also be appreciated. II
(* 78/01/17 *)

C. Bailey, Bailey and Associates, 1144 S. Atlanta, Tulsa, OK 74104: "I have an Altair
with 32K memory, 2 Altair Floppy Discs and a Decwriter. So I am interested in Pascal as
implemented on the Altair or Altair-like CPU. I am employed as a programmer/analyst for
the Altair and gp and SG minis." (* 77/12/30 *)

Brad Blasing, 1308 Centennial Hall, Univ. Of MN, Minneapolis, MN 55455: "We have
implemented the Netherlands Pascal compiler on our 11/40 running UNIX. Runs fast for an
interpreter. It's a good hybrid of the P2 and P4 compiler. Could use a bit more
user-type documentation." (* 78/04/02 *)

"-

R. Gunzenhauser and R. Kleine-Homann, Institut fur Informatik, Universitat Stuttgart, 7
Stuttgart 1, Azenbergstr. 12, Germany: "We use Pascal as the first programming language
for our freshman students and for high-school teachers.
"We offer Pascal at our German Computer TR 440; besides we have a DEC PDP 11/40
computer (OS DEC RSX 11-M, 92kBytes) and wish to implement Pascal or a Pascal subset
like Pascal-S.
"We would be very obliged if you could send us information about Pascal implementations
on RSX ll-M you know." (* 78/03/15 *)
Robert O. HarriS, University College London, Computer Center, 19 Gordon Street, London
WC1A OAR, United Kingdom: "I read the bit on PUG finances and noticed that PUG (UK)
were the big loss makers, so I reckon its time to stop reading the library copy and pay

for my own." (* 78/02/27 *)
Carroll Hennick, Autologic, Inc., 1050 Rancho Caneja

Blvd.,

Newbury

Park,

CA

91320:

tlYour letter in SIGPC Notes was welcome. 1I
Judy

Adnnan Khan, 222/7, Block-E, (Opp. Walton Training Centre), Walton Road, Lahore, Cantt.,
Pakistan: "I would like to get some knowledge about the new developments made after my
contribution of Source Library Mechanism for Pascal 1900, under George III, which has
also reduced the compilation time by one third. My project also involved translation of
some NAG routines into Pascal." (* 78/01/17 *)

Herron, Computer Sciences Dept., Mt. San Antonio College, 1100 North Grand Avenue,

Walnut, CA 91789: "In my recent reading, references to Pascal seem to pop up
everywhere--although I have yet to see one line of source code.
"I'm interested in learning what I can about the language, and its implementations.
What manufacturers offer Pascal? Is there a compiler available for our Altair 8800,

Xerox

530,

or IBM 1130? It sounds as though Pascal is used mainly for the teaching of

structured programming
(* 77/12/28 *)

techniques.

Are

business

and

industry

adopting

it

also?"

James R. Kochanocicz, Dedicated Systems Inc., 180 N. Michigan Ave., Chicago, IL 60601:
"We are presently using Pascal on a Sperry Univac V-76 series computer. 1I (* 78/03/19 *)
Charles Kuhlman, New York City Criminal Justice Agency, 305 Broadway, New York, NY
10007: "We are preparing to gear up a DEC PDP 11/70 RSX-11P system and are
contemplating use of Pascal for some applications • • • • Do you know specifically of
any RSX 11/70 versions of Paseal?" (* 78/03/06 *)

Bruce Hillegass, Digital Equipment Corp., 146 Main St., Maynard, MA: "I obtained your
name off a Pascal document located on one of our DEC 5ys-10's.
"Pascal is virtually unsupported on all of our in-house systems, and there are numerous
versions of the compiler around. I have been interested in Pascal for quite a while,
and I'm in the process of learning the language. I am exploring the possibility of
writing a compiler using Pascal as the language and I'm looking into Pascal as a
language used in micro-programming.
"I would appreciate any information you may have on Pascal activities in university
environments especially on the DEC Sys-l0." (* 78/01/27 *)

Roland L. Lee, 645 35th Ave., San Francisco, CA 94121: "I am thinking of writing a
compiler for the Z-80 and would like some information on existing resident Pascal
compilers that you know of for the Z-80." (* 78/04/01 *)

Robert M. Hofkin, APIS Dept. C-014, Univ. Of CA-San Diego, La Jolla, CA 92093: "Language
extensions seem necessary, but the syntax. Let's not have another PL/T! Also--why
wasn't Cichelli's review of Ken Bowles' book critical? It sounded more like a product
announcement from IBM." (* 78/03/17 *)

Bruee MacAnespie, 600 N. Hickory Ave., Apt. 18, Bel Air, ~m 21014: "If you can supply me
with any contacts or information regarding Pascal compilers or interpreters implemented
on Burroughs B6700 or B7700 Computer systems, please send it by return mail. Having
been a Burroughs Algol fan for some years, I am extremely interested in a language that
promises to be the next generation of decent software implementation languages. 1I
(* 78/03/08 *)

David Holland, P.O. Box 38243, Houston, TX 77088: "In case you don't know already, T.I.
Are getting ready for a Pascal compiler on a ROM for their 16-bit TMS9900 MP.lT
(* 78/01/31 *)
William F. Holmes, Washington University, School of Medicine, 660 South Euclid Ave., St.
Louis, MO 63110: "We are not using Pascal at present, but are seriously considering it
for the PDP-ll (including the LSI-ll) and the 8080 or 6800. We also have Computer
Automation's LSI-2's, but unfortunately do not use
their
operating
system."
(* 78/01/30 *)
William C. Hopkins, 1101 Bondsville Rd., Downingtown, PA 19335:"
a Univac 90/70 implementation." (* 78/02/26 *)

•• still working on

Gary M. Huckabay, Department of Mathematics, Cameron University, Lawton, OK 73505: "I
would appreciate information concerning the following: i) language definition, ii)
implementation at any computer site, iii) any suggestions on implementation, iv) any
information
concerning implementation on the Hewlett-Packard 3000, Series 11.11
(* 78/01/26 *)
Phil Hughes, P.O. Box 2847, Olympia, WA 98507: "I have been studying and debating
whether to implement Pascal on a micro for over 6 months. The article 'Pascal vs.
Basic' made me aw~re of two things: 1. There is a Pascal Newsletter. 2. I have been
wasting my time thinking about what would make Basic better.
"Please send me information on obtaining the Pascal Newsletter and any information you
may have about implementations of Pascal on
micros
(particularly
M6800' s)."
(* 78/01/19 *)

Joseph M. Jolda, Bartlett High School, Negus St., Webster, MA 01570: "I've been trying
to build something around the IBM Assembler but I'm running into all sorts of problems
It seems as though Pascal has the possible answer for me." (* 78/01/09 *)
Ralph Johnson, 1592 N. Broad, Galesburg, IL 61401: "I am rewriting Concurrent Pascal for
the PDP-11/40 which should take about two weeks. If no one else has done this, I will
send you the few changes that need to be made to the PDP 11/45 version." (* 78/01/04 *)

Here and There With Pascal

z
rn
::;::
(/)

Alan M. Lesgold, LRDC Computer Facility, University of Pittsburgh, 3939 O'Hara St.,
Pittsburgh, PA 15260: "I would be interested in knowing of sources, if they exist, for
a 6800 cross-compiler that would run on a PDP-10 or PDP-IS and also for a PDP-IS
compiler. I am very interested in implementing Pascal as our primary source language."
(* 78/01/12 *)

Mario Magidin, Direccion Genereal de Sistemas y Procesos Electronicos, Subdireccion de
Sistemas "B," Corregidora No.8, Centro, Palacio Nacional, Mexico 1, D. F.: "We are the
computing facility of the Mexican Ministry of Budget and Planning. With the aid of a
CDC Cyber-173 we are supposed to satisfy all the computing requirements of the
Ministry, thus, large, so-called commercial type systems are constantly
under
development and/or running at our place.
"Up to now, all these systems have been programmed in COBOL, and although we are
painfully aware of the shortcomings of this approach, (particularly with CDC's COBOL)
our solutions were directed mainly towards the use of a preprocessor of the type of
Weinberg's Metacobol.
liThe idea of replacing COBOL with PASCAL has arisen. I would deeply appreciate your
comments on this idea." (* 78/03/31 *)

<-

=
z
rn

Bill

Marspall, Jr., Sanders Associates, Inc., 24 Simon St., Nashua, NH: "I've been
and promoting Pascal for five years now • • • it's about time I put my money
where my mouth is!1t
pra~slng

Irv McKnight, 505 Cypress Point, No. 52, Mountain View, CA 94040: ItI have an S-100 8080
system with a NorthStar Disc. Several of us are looking into making the U.C. San Diego
Pascal system live in the NorthStar." (* 78/03/27 *)
Ronald D. MCRaney, P.O. Box 10097, Station 1, Houma, Louisiana 70360: "I am in the
process of putting together a Pascal dedicated PDP 11/03 for my personal use.
(* 78/01/04 *)
J. Scott Merritt, 655 S. Fairoaks Avenue, Apt. L-216, Sunnyvale, CA 94086: "Tried to
find CACM article mentioned on Page 87 of PUG 11. It wasn't in Dec. '77 or anywhere
else I looked. Where can I find it?" (* 78/03/11 We don't really know either; will you
1;vrite to Amsterdam to ask? *)
Rolf Molich, Software Development Manager, Dansk Data Elektronik Aps., Generajtorvej 6A,
DK"2730 Herlev: "Further, I would appreciate it very much if you could tell me the name
and address of any person or institution that you may have heard of who is currently
developing a Pascal compiler (not an interpreter) for the{ Intel 8080 microcomputer."
(* 78/01/24 *)

-0

::I>
G1

rn
Vl

Allan

Moluf,

2317 Knob Hill, Apt. 9, Okemos, MI 48864: "I would like to suggest a new
Pascal compilers on small machines. Syntax table-directed parsing
techniques are now getting acceptable error recovery and should result in much smaller
compilers. If PUG members know of anyone working in this area, please suggest Pascal as
approa~or

a useful language to implement. Most of the code generation and library routines are
available
in
a portable compiler, which should result in an easy proj ect. n

(* 78/03/21 *)
Freeman L. Moore,

Department

of

Computer

Science,

Pearce

203-B,

Central

Michigan

University, Mount Pleasant, MI 48859: "For your records, eMU has a Univac 1106 computer
with our version of Pascal from U.S. Naval Undersea Center, by M.S. Ball, version
1.lC4." (* 78/03/04 *)
Olav Naess, Welhavensgt. 65, Bergen Norway: "I am interested in a
the Z-80 system I am building." (* 78/01/17 *)

Pascal

compiler

for

Heidi L. Neubauer, Coordinated Sciences Lab, Univ. Of Illinois, Urbana, IL 61801: "I am
using Pascal to write machine problems assigned in an operating systems course I am
taking at the Univ. Of Illinois as a graduate student in Computer Science. Our class
has used both standard Pascal and a souped-up version with concurrent processes and
semaphores (still under development but workable)." (* 78/03/07 *)
William I. Nowicki,
Evanston, IL 60201:

C.S.R.L. Tech B626, 2145 Sheridan Road, Northwestern University,
"My special Interest is the implementations of Pascal for

mini-computers, especially PDP-8's and PDP II's." (* 78/01/08 *)
David

J.

Pesec, 20130 Miller Avenue, Euclid, Ohio 44119: "I also am wondering if there

is any copy of Pascal that will run on a Honeywell Series 60 processor." (* 78/01/30 *)
David Powers, 259A Trafalgar St., Petersham NSW 2049,

Australia:

"I

have

a

TEC-9900
system (based on the TMS9900) on which I hope to eventually be able to use Pascal. T
would therefore ask if you are able to assist in this--do you know of a Pascal compiler
for the 9900, or of any way I could get (with a view to modifying for use with my
system) the Pascal source for a compiler with a code generator for the PDP-II • • • or
one of the other micros.
"I have been working on an implementation of Pascal-S for the 6502 (using 4-byte words)
in the form of a cross-compiler (based on the compiler part of the Wirth Pascal-S
interpreter as implemented in Pascal) to an 'IeODE' which runs on an interpreter (only
partially debugged, as yet, being a translation of Wirth's 'interpret' procedure)
running in 4K (SK-6K with floating point) using the Jolt 'DEMON' monitor. Are you aware
of any similar implementations having been undertaken? Has anyone done, to your
knowledge, the apparently feasible, but rather time-consuming conversion of this
compiler into Pascal-S?"

Steven R. Rakitin, Combustion Engineering, Inc., Mail Stop 9488-4BB, 1000 Prospect Hill
Road, Windsor, CT 06095: " • • • I am interested in the potential use of Pascal as a
Process Design Language." (* 78/01/24 *)
Mike Rebmann, Memorex Corp., Communications Div., San Tomas at Central Expressway, Santa
Clara, CA 95052: "We are potentially interested in adopting Pascal as a replacement for
assembly language for programming our 1380 front end communications processor. Does the
User's Group have any information on adopting Pascal for this purpose? I would be
especially interested in the following kinds of stuff: 1. Compiler development (cost,
time, feasibility of using 'weird' hardware features), 2. Cutting over a software

development group to use the language (planning training,

phasing).

3.

Compatibility

with existing software--it would be very hard to justify rewriting our existing product
line
software. 4. Support software development--library system, loaders, etc."
(* 78/03/03 *)

D. Roberts, Computing Laboratory,

University College of North Wales, Dean Street,
Gwynedd LL57 lUT, Wales, UK: "We have recently put H.H. Nagel's implementation
of Pascal on our DECsystem 10." (* 78/03/17 *)

Bangor,

James
have

D.

Rogan, Comshare, Inc., P.O.
• included some documentation

"I
MI
48106:
Box
1588,
Ann
Arbor,
on the Pascal compiler implemented on our

company's computers. The use of the language is primarily for application production
systems software. To date, COMSHARE has written marketable products in Pascal and we
can currently cross-compile source for the Sigma 9 and an INTEL 8080 machine."
(* 78/02/16 *)
Jon D. Roland, Computer Retailers Assn., Micro Mart, 1015 Navarro, San Antonio, TX
78205: "We plan to support Pascal and extensions thereof extensively during the years
ahead. We expect Pascal and APL to emerge as the leading higher-level languages,
although Cobol will probably remain popular among many of our business customers."

(* 78/03/28 *)
Richard Roth,S North Salem Road, Ridgefield, CT 06877: "I implemented P-2 stack machine
on Micro-Data 810 (but never finished compiler) and would like to get Pascal running on

8080/Z80 system
(* 78/02/01 *)

under

my

disk

OS

(an

advanced

TOPS-10-like

operating system)."

Beardsley Ruml, 2nd, 3045 Ordway Street, N.W., Washington, DC 20008: "I would like to
participate in [an implementation on a Z-80/8080] if possible but, if not, certainly

want to be one of the first users." (* 78/01/25 *)
Robert L. Schoenfeld, Rockefeller Univ., 1230 York Ave., New York, NY 10021: "Interested
in Concurrent Pascal and Modula for laboratory applications." (* 78/03/23 *)
Mike Settle, ICP, 2925 Merrell Road, Dallas, TX 75229:, "I am not presently a user, BUT I
~~ANT TO BE. I am particularly interested in 8080 and Z-80 implementations. I sure would
like to see Pascal replace BASIC in the personal and home computing enviromnent."

(* 78/02/24 *)
Al

Shpuntoff,

MorningSide

College,

Sioux City, IA 51106: "I would be delighted to be

able to teach some of our courses using the facilities of Pascal, but alas, we are
still using an antique IBH 1130 computing system. Still, the widespread availablility
of Pascal Compilers for mini-computer systems raised hopes. A direct question to one of
the participants in these conversations brought forth the suggestiond that you would
know
of the existence of a Pascal Compiler for the 1130 if anyone would."
(* 78/04/07 *)
Michael L. Sieman, 6103 Harwood Ave., Oakland, CA 94618: "I would also be interested in
knowing if the Pascal User's Group has available any other publicatiOns, particularly
ones concerning the implementation of Pascal on small machines (I'm thinking especially
of the DEC LSI-II under the RT-l1 system), or article indexes to past issues of the

Pasc... l News (and are back issues available?)." (* 78/03/23 *)
George A. R. Silver, Earlham College, Richmond, IN 47374: "I am particularly interested
in any recent issues which have reviews of implementations of Pascal on PDP II/70's."
Roger SippI, 1806 Toyon Lane, Newport Beach, CA 92660: "I learned Pascal while a student
at UC Berkeley on the many versions of the compiler on a PDP 11/70, while it was being
written and debugged. Not the recommended way to learn a language, but it had its
merit. "I am now working as a consultant in California with a special interest in
medical computer applications."
James

A.

Stark, 'M.D., 485 34th St., Oakland, CA 94609: "My computer resources are: IBM

370/148 at Univ. Of Calif. At San Francisco (Medical School) that has

a

batch

Pascal

compiler. UNIX at U.C. Berkeley has just completed the installation of a new
interactive version by Joy, Graham, and Haley (complete with manual). I have a home

brew

8080

with

floppy on which I hope to install UCSD's version and a 6502 presently

sitting that will be used to interface my I/O Selectric if and when

get

a

missing

board from Numan Computer Exchange." (* 78/03/28 *)
Quentin F. Stout, Dept. Of Mathematical Sciences, SUNY-Binghamton, Binghamton, NY 13901:
"Finally, I would greatly appreciate it if you could tell me where I could obtain a
Pascal compiler for an IBM 370/158 under VSl. We are an academic institution which
cannot afford a large fee, so we would probably have to obtain it from another

university." (* 78/03/17 *)
Jeff Stroomer, 224 Heritage Lane, Exton, PA 19341: liDo you (or any of your readers) know

L

c::

z
rn

of a way to get Pascal's IF-THEN-ELSE's into LL(I)? I already know how to
with

LL(l)

tables

to

make

the

parser

monkey

with

work the right way, but that's not what I'm

carre

sqr

cos

cos

cas

case
const

dispose
div

cos
in
of
begin

do

rendre
div
faire

const

interested in; I want a grammar that's truly LL(I)." (* 78/01/13 *)

cos
Roy Touzeau, Computer Science Dept., Univ. Of Montana, Missoula, MT 59812:

"We

have

a

de
debut

version of Pascal for the DEC-IO working on the DEC-20." (* 78/03/07 *)
Mike Travis, Interdata, Inc., 3080 Olcott St., Suite 125A, Santa Clara, CA 95051: "I
have just received the KSU version of Pascal which runs on an INTERDATA 8/32. We are
now in the process of bringing it up in a multi-terminal environment in our local data

center." (* 78/02/13 *)
Tim Walsh, 174 E. Maujer Street, Valley Stream, NY 11580: "I hope to implement a sub-set

of Pascal on my 'KIU-I expanded' sometime this year." (* 78/01/09 *)
Bill Winspur, Mgr., Computer Serve, Computer Dept.
For Health Sciences,
Univ. Of
Manitoba,
753 McDermot Ave., Winnipeg, Manitoba R3E OW3, Canada: "We are installing a
CYBER 171 in March and plan to use Pascal on it. We are also getting into uProcessor
applications and are particularly interested in a rumaur of Pascal for the 8080."

(* 78/02/03 *)
C. Dudley Warner, 16345 Los Cutos Blvd., No. 41, Los Cutos, CA 95030: "I have Z80
uC w/64K mem etc.--running Pascal under CP/M and USCD 'Pascal. '" (* 78/03/08 *)

based

Anna Watson, 3705 Delwood Drive, Panama City, FL 32407: "My objective is to determine
ratiher quickly whether we should specify a Pascal compiler in a new computer
specification for use by our present Algol users. Hopefully, study of a Pascal Primer
plus the Pascal News can indicate if Pascal can serve our needs. 1I (* 78/03/20 *)
Chip Weems, Dept. Of Computer Science, Oregon State Univ., Corvallis, OR 97331:
"I
enjoyed talking to Tim B[anham]
at the W. Coast Comp. Faire. Tell him that I'm
rewriting my Pascal summary card, and will send him a copy when it's finished."

(* 78/03/28 *)
John

Withrow, DEC, MR1-1/A86, 200 Forest St., Marlboro, MA 01752: "I'm using the Pascal

compiler on the DECSYSTEMS (10 and 20) here at Maynard and Marlboro,
implementing a Pascal (subset) compiler." (* 78/01/25 *)

dans

}~;

as

well

as

Sandra Wright, Defence and Civil Inst. Of Environmental Medicine, P.O. Box 2000,
Downsview, Ont. M3M 3B9, Canada: "vIe plan on implementing Pascal under UNIX and RT-11

early in 1978." (* 77/11/30 *)

detasser
div
ecrire
ecrire1n
ensemble
entier
entmax
entree

et

IDE NT I FIE RS

(* 101e received the following list of correspondences between French and English Pascal
identifiers from Patrick Ward at the University of Montreal. He credits Olivier Lecarme
and Pierre Desjardins with the original translation. Since we expect this to be used
simply as a reference by those reading programs in the other language, we are omitting
CDC-specific identifiers and those local to Montreal. We also have a list made by A.
Tisserant at Nancy. His list is slightly different. We'd appreciate some clarification
from the Sous-Groupe Pascal about what is standard for the French identifiers. *)
French

abs
allera
alors
arctan
arrondi
avec

bas

English
abs
goto
then
arctan
round

with

car

downto
boolean
char

carac

chr

booleen

English
abs
and

abs
et

arctan
array

arctan
tableau

French

si
dans
entree
entier
etiqu

function

to
odd
until
read

mod
nil

nil

non

not

nouveau

new

ord
ou
page

ord
or
page
packed
forward
for
pred
get

prendre
procedure
programme
rac2
recrire
reel
re1ire
rendre
repeter

si
sin
sinon
sortie
struct
succ

tableau

procedure
program
sqrt
rewrite
real
reset
dispose
repeat
if
sin
else
output
record
succ
array

integer

label
In

entmax

mod
new
nil
not
odd
of
or
ord

mod

output

sortie
tasser
paquet

pack
packed
page
pred
procedure
program

put
read
read1n
real
record
repeat
reset
rewrite
round

set
sin
succ

nouveau

impair

de
ou
ord

c:....

=

z
rn

page
pred
procedure
program
mettre
lire
lireln
reel
struct
repeter
re1ire
recrire
arrondi
ensemble

sin

true
trunc

succ
carre
rac2
texte
alors
haut
vrai
tronc

-u

type

type

:I>

rn

sqr
sqrt
text
then

to

unpack
until

detasser
jusque

cas
car

text
trunc

var

carac
const

type
var

type
var

var
while
with

vrai

true

chr

C/l

nil
non

while
pack

debut
booleen

rn

In

maxint

tantque
tasser
texte
tronc

begin
boolean
case
char
const

if

false

:z

plus loin

in
input

readln
ln
put
mod

paquet

forward
function

faux
fichier
pour

do
eof
eo In
file
end

mettre

exp
false
file
for

fdf
fdln
exp

exp

fdf
fdln

ln

eo1n

sinon
fin

fonction
prendre
a1lera

faire
faux

fichier
fin
f onction
haut
impair
jusque
lire
1ireln

end
eof

bas

get
goto

exp

pred

CAL

integer
maxint
input

and
label

plusloin

ENG L; S HI F RENe H PA ~

set

etiqu

pour

F RENe HIE NGLIS H

unpack
div
write
writeln

downto
else

write
writeln

tantque
avec
ecrire
ecrireln

Gl

PAS CAL I NTH
Australian

ENE WS

(* A national daily newspaper

*), February, 1978: Article in the "Computers ll

section about the Australian Atomic Energy Commission's compiler for the
370 systems.

IBM

360

and

Byte, April, 1978: A letter from Stephen Smith describing the status of his work on a
Pascal compiler, based on a subset of Pascal, for microcomputers. He is now testing the
parsing procedures on a DECsystem 10.
Computer Weekly, February 23, 1978: NCR, Dundee, Scotland, is beginning
implement a language based on Pascal.

to

design

and

Computerworld, March 20, 1978: Hewlett-Packard's new language for operating system
implementation, Syspal, combines many features of Pascal, Modula, Euclid,
and
Concurrent Pascal.
Computerworld, April 24, 1978: Richard Cichelli describes the "revolutionary" growth in
use of Pascal, this despite the resistance of mainframe and system vendors. A short
history of Pascal and the extent of implementations is presented.
Computing, January 5, 1978: A letter to the editor from R. J. Allwood in response to
David Barron's earlier article in Computing. Allwood announces his reasons for
rejecting a changeover from FORTRAN to Pascal and states what a tempting new language
would look like.
Computing Europe, March 16, 1978: David Barron notes the choice of Pascal as a base
the u.s. Department of Defense language IRONMAN.

for

DARCOM (U.S. Army Materiel Development and Readiness Command) sent letters to PUG
members on February 1, 1978, asking for their responses to a series of questions about
use and implementation of Pascal. Purportedly, DARCOM is selecting a standard system
software programming language. (* DARCOM got your name by copying it from the published
roster. PUG has a general policy of not releasing the roster in machine-retrievable
form.*)

UMMUG (Publication of the Univ. Of Minnesota Microcomputer Users Group), The University
~innesota's recent acquisition of Terak computers and with them UCSD's Pascal
compiler/interpreter is discussed.
Vogelback Computing Center Newsletter (Northwestern Univ.), April, 1978: In announcing a
short course on Pascal, an article mentions the widespread acceptance of Pascal.

z
rn

CON FER ENe ES
Australian Universities Computer Science Seminar, held February 23-24, 1978, University
of New South Wales:
(* We received a letter from Tony Gerber saying that "everyone (Carroll
(* Morgan *), Ken Robinson, Arthur Sale, Jeff Tobias, t Gordon Cox from AAEC,
myself) was there." In addition, Tony sent us copies of two papers read at the
conference:

G. W. Cox and J. M. Tobias, "An Implementation of Pascal for
Business Machines or The Impossible Takes a Little Longer."

(* From the abstract *) The programming language Pascal has successfully
implemented for IBM360 and IBM370 computers under the OS/360 family of
operating systems. The compiler is written in Pascal and fully supports
Standard Pascal with some significant extensions. Interesting aspects of the
relationship between the language and the IBM360 architecture are discussed.
Surprisingly enough, the IBM360/370 general purpose architecture readily
lends itself to an efficient implementation of a high-level language such as
Pascal, although some features are impossible to realise.

Datamation, February, 1978: A short announcement about PUG and
information about how to join appeared in the "Source Data lt section.

Pascal News with

Datamation, February, 1978: A proposed multiprocessor system for the u.s. Navy,
constructed by Lawrence Livermore Laboratories in California, contains a Pascal
compiler, developed under subcontract by the Computer Sciences Department of Stanford
Univ.
Instruments and Control Systems, December 1977: A report of a Pascal compiler under
development ~Texas Instruments to meet Dept. Of Defense specifications. The article
suggests that TI's Pascal could become a de facto standard for minis and micros. Unlike
Intel's PL/M, Pascal is not a proprietary language.
Journal of the Hewlett-Packard General Systems Users Group, January/February 1978: A
short article introducing Pascal and some of its features and containing information
about how to join PUG.
Mini-Computer News, April 27, 1978: A new Pascal software package for the DS990 packaged
disk systems is announced by Texas Instruments. TI suggests that its Pascal, closely
compatible with standard Pascal, has many applications in areas traditionally dominated
by FORTRAN and COBOL.
PATCH (Univ. Of Notre Dame Computing Center's newsletter), March 1978: UND has
installed Pascal.

recently

<-

=
z

Experiences in attempting to encourage a body of scientists to use Pascal in
preference to FORTRAN are drawn on, with the conclusion that until a revised
standard for Pascal is achieved, Pascal will never become a universally used
programming tool.
Arthur
Sale,
"Mismatches and Conflicts Arising
B6700/B7700 MCP and a Pascal Implementation."

Data-Link (* published by ACM-Los Angeles *), February 1978: G. S. Khalsa, managing
partner of the Pasadena Byte Shop, is reported to view Pascal as becoming the standard
language for micro business systems.

International

out

of

the

rn

Burroughs

(* From the abstract *) This paper draws on experiences of implementing a
Pascal compiler on a Burroughs B6700 computer. Since these machines are
designed for high-level language programming'solely, and the operating system
(MCP) is highly structured, the conflicts between the assumptions commonly
made by Pascal adherents, or built into the language, and the facilities
offered by the operating system posed some interesting conflicts which are
examined herein.
Universite
de
Nice,
Informatique, Mathematiques et Automatique, Manifestations
Informatiques de Juin 1978, conference to include a meeting of the Pascal sub-group on
the 13th and 14th of June.

(* Sorry we didn't know about this conference in time for the last issue.
We'll hope to have titles of the papers presented by next time. *)
Second West Coast Computer Faire, March 3-5, 1978, San Jose, California. (* Pascal News
editor Tim Bonham attended. He collected a dozen PUG memberships and reported that he
"could have sold 100 Pascal User Manuals and Reports on the floor for twice their
price. II He also saw several demonstrations of Pascal on micros. Several papers of
special interest to pascalers are part of the proceedings *):

--0

>
G")

Sassan Hazeghi and
Microprocessors. If

Lichen

Wang,

"A

Short

Note

on

High

Level

Languages

and

rn
00

(* From the abstract *) In this note, some of the practical aspects of bridging the gap
between high level programming language and computer hardware are discussed. Several
possible strategies are considered and the method of half-compiling-half-interpreting

is studied. In dealing with address space limitation (or tight memory situation) and
slow speed of micro processors running an interpreter, a measurement and analysis
technique is suggestede This analysis not only gives a good estimate of the timlng and
storage requirement before the actual implementation, it also helps to optimize the
speed and storage usage of the implementation. The note concludes with some results
concerning the implementation of the programming language Pascal on a family of
micro-processors.
H. Marc Lewis, "An Experimental Pascal-like Language for Microprocessors.
(* From the abstract *) This paper describes an experimental Pascal-like high level
language oriented to microprocessor implementation and use. The design criteria include
modest memory requirements, self--compilation, simplicity, reasonable access to hardware
features, and ease of extensibility. Program structure, data declarations, and control
structures are described and examples given. Novel features of the language are
discussed. An appendix gives a formal description of the language via syntax graphs.

Chip Weems, "An Introduction to Programming in Pascal. 1I
(* From the abstract *) Thjg paper will concentrate heavily on the use of the Pascal
language at the beginner's level~ A minimal knowledge of some other programming
language such as FORTRAN, BASIC, or ALGOL is assumed.
The areas whic.h will be covered are simple and structured statements in Pascal, simple
and structured data types~ plus procedures and functions. Emphasis will be placed on
using Pascal statements, although some discussion of the power of user defined data

types will also be included.
A list of machine models
provided as an appendix.

BOOKS

AND

for whic.h implementations of Pascal are known to exist is

Editor:
PLEASE SUBMIT ALL NOTICES OF Pasca.l
BOOKS, ARTICLES, ABSTRACTS, etc.

Rich Stevens
Kitt Peak Nat" Observatory
P. O. BOX 26732
Tucson, AZ 85726 USA

R.

Mohilner,

"Using

(phone: 1-602-327-5511)

Pascal in a FORTRAN Environment," Software Practice and

Experience, 7:3 (June-July 1977), 357-362.
(* Summary of a review by R.A. Jones in Computing Reviews, January 1978. *) Mohilner
demonstrates some problems encountered in attempting to write graphical applications
programs in Pascal when the existing library of plotting routines was written in
FORTRAN. She shows the solu.t.ions to those problems t but the example suggests that the
problems she describes will. likely be encou~tered by all installations.

V.A. Nepomniaschy, and L.V.

Chernobrod~ IIAutomatic Program

Verification, II

Problems

of

Programming, 1976, pp. 63-80.
(* From the English summary in the table of c.ontents *) IIDescribing the preliminary
version of the system for proving assertions about programs (SPRUT). The deduction
system herein is Hoare's system for proving correctness of programs. The input is a
Pascal program with assertions. 'The verification condition generator outputs the list
of lemmas to be proved by other blocks of the system. In algebraic and logical
reduction of expressions simplific.ation strategies are used, including axioms and lists
of subgoals. n
Gary

J.

Nutt,

IIA

Comparison

7:3 (June-July 1977), 391-423.
(* From the abstract, as reported in Computing Reviews, January 1978. *) "This report
deals with code generation in a Pascal compiler. It gives insight into the run-time
organization of data and the use of the hardware registers of athe underlying machine
(a CDC 6400). It is shown how the compiler maintains a description of the register
contents and uses this description to generate efficient code. Several examples of
compiled code are discussed."
Forest

Baskett,

"The

Best

Simple

Code

Generation

of

Fascal

and

::z:

rn
(/)

Technique for WHILE, FOR, and DO

Loops," SIGPLAN Notices, 13:4 (April 1978), pp. 31-32.
(* From the abstract *) IIThis code generation technique for WHILE, FOR, and DO loops is
simple to implement and usually results in the best loop code in the absence of flow
analysis. Also the technique makes it possible to move code from inner loops without
doing flow analysis and without ever moving code from a less frequently executed block
to a more frequently executed block."

Kenneth L. Bowles, "The USeD Pascal Project," Educom, 13:1 (Spring, 1978), pp. 2-7.
(* From the summary *) "Small stand-alone microcomputers can serve as the basis for
running a sophisticated general-purpose interactive software system capable
of
supporting CAl, word processing, data processing, and other interactive tasks in
addition to development of the software itself. The project described in this article
has implemented such a software system using the Pascal programming language. The
system is designed to be nearly machine-independent, and currently runs on a number of
microprocessors, including the popular LSI-l1, 8080, and 280. 11

c....

W~
Cox and J. M. Tobias, "An Implementation of Pascal for International Business
Hachines or the Impossible Takes a Little Longer." (* See CONFERENCES section *)

=

and

rn

Sassan Hazeghi and Lichen Wang, "A Short Note
Microprocessors." (* See CONFERENCES section *)
H.

Harc

Lewis,

"An

Experimental

Pascal-like

on

High

Language

for

Level

Languages

~·1icroprocessors."

(* See

CONFERENCES section *)

Thanks, Andy.

APPLICATIONS
Patricia

Urs Ammann, "On Code Generation in a Pascal Compiler," Software Practice and Experience,

G.

ARTICLES

to Rich for this section.

IMPLEMENTATIONS

FORTRAN

as

Introductory

Programming

Languages," SIGPLAN Notices, 13:2, February 1978, pp. 57-62.
(* From the abstract *j--IIThe Department of Computer Science at the University of
Colorado has recently made the transition from FORTRAN to Pascal [in introductory
courses], and this paper offers and informal discussion of the experiences of one
instructor during that change. I!

Arthur Sale, TlMismatches and Conflicts Arising out of the Burroughs B6700/B7700 MCP
a Pascal Implementation." (* See CONFERENCES section *)
J.

Welsh,

and

"Economic Range Checks in Pascal," Software--Practice and Experience, Vol. 8

(1978), 85-97.
(* From the abstract *) "A

Pascal implementation is described which exploits the
information provided by sub range type declarations to ffilnlmlze the run-time checking
involved in detecting range violations. An evaluation of its performance is given, and
some possible modifications are discussed. (* It pays to use sub-ranges. *)

LANGUAGES
Borge

Christensen, "COMAL: Structured Basic," .People's Computers, 6:4 (Jan.-Feb. 1978),

pp. 36-41.
(* From the table of

contents *)

•• adding

Pascal's

algorithmic

structures

to

BASIC .11
M.

Iglewskl,

J.

Madey,

and S. Hatwin, "A Contribution to the Improvement of Pascal,"

SIGPLAN Notices, 13:1 (January, 1978), pp. 48-58.
(* From the introduction *) "The purpose of this paper is

twofold. First of all we
would like to present some of our proposals, concerning the desirable corrections in
the Revised Report on Pascal and possible slight extensions of the language. Secondly
we want to argue with some of the critical remarks on Pascal as formulated several
months ago by Conradi."

-u

:to>
G>

rn

Charles Lakos and Arthur Sale, "Is Disciplined Programming Transferable, and is it
Insightful? 11 (* Received in January; may be published by now; more news from Arthur
Sale or from PN 13 *)
(* From the abstract *) 11.
The paper applies the thought processes advocated by
E.W.] Dijkstra to [two] problems and indicates the insights that the authors gained
from this. In both cases algorithms new to the authors were derived, and the properties
of these are also examined. The paper • • • demonstrates that the techniques advocated
by Dijkstra are indeed transferable to other programmers, and that this transfer yields
better insight into the activity we call programming."

David Mundie, "Pascal vs. BASIC," People's Computers, 6:4 (Jan.-Feb. 1978), pp. 41-47.
(* From the table of contents *) "A polemical comparison of the two as general-purpose
microprocessor languages."
Jim des Rivieres and Ted Venema, "Euclid and Pascal," SIGPLAN Notices, 13:3 (March
1978), pp. 57-69. (* From the abstract *) "The programming language Euclid was intended
for writing system programs -that could be verifiable by state-of-the-art verification
methods. Since verification was not an explicit goal in the design of Pascal, it is not
surprising that this gave rise to differences between the two languages. The Euclid
designers intended to change Pascal only where it fell short of this goal. This paper
examines differences in the two languages in the light of this objective. These
differences are roughly grouped under the headings verification, system programming,
and user-oriented changes."
Abraham Silberschatz, Richard B. Kieburtz, and Arthur Bernstein, "Extending Concurrent
Pascal to allow dynamic resource management," IEEE Transactions on Software Engineering
, SE-3:3 (May 1977), 210-217.
(* One sentence from a review *) tiThe authors of this paper propose an extension to the
programming language Concurrent Pascal to allow more flexible dynamic resource
management. They introduce a new type called manager.
Tennent, R. D., "Language design methods based on semantic principles, TI Ac ta Informatica
, 8:2 (1977), 97-112.
(* From the abstract *) "Two language design methods based on principles derived from
the
denotational approach to programming language semantics are described and
illustrated by an application to the language Pascal. The principles are, firstly, the
correspondence between parametric and declarative mechanisms, and secondly, a principle
of abstraction for programming languages adapted from set theory. Several useful
extensions and generalizations of Pascal emerge by application of these principles,
including a solution to the array parameter problem, and a modularization facility."
Arthur Sale, "Stylistics in Languages with Compound Statements" (* Article may have been
published in Australia; check with Arthur Sale; more information in PN 13. *)
(* From the abstract *) "This short communication discusses a stylistic problem which
arises in languages with use both statement separators such as semicolons, and beginend bracketting structures, such as Pascal. It suggests that an alternative to the
traditional rules which have evolved from Algol 60 is preferable."
Chip Weems, "An Introduction to Programming in Pascal." (* See CONFERENCES section. *)
J. Welsh, W. J. Sneeringer, and C.A. Hoare, "Ambiguities and Insecurities in Pascal,"
Software--Practice and Experience, Vol. 7 (1977), 685-696.
(* This is the best critical article to have appeared about Pascal. The ambiguities
discussed are equivalence of types ,(name equivalence vs. Structural equivalence), scope
rules and one-pass compilation, and set constructors. The authors point out the
following
"insecurities": features whose implementation either risks undetected
violation of rules of the language or run-time checking that is too expensive to be
tolerable: variant records, functions and procedures as parameters, range violations,
uninitialized variables, and dangling references. *)

TEXTBOOKS
(* See reviews for Bowles, Conway, Grogono, and Schneider texts.

*)

S. Alagic and M. A. Arbib, The Design of Well-Structured and Correct Programs, New York:
Springer-Verlag, 1978, 292-pages, $12~O. (* See description in No. 11. We hope to have
a review in No. 13. *)
Richard Kieburtz (* Updated information *), St~uctured Programming and Problem Solving
with Pascal, Englewood Cliffs, NJ: Prentice-Hall, 1977, 320 pages, $12.80.(* Similar to
Conway; see reviews. *)

A Guide to PASCAL Textbooks
Richard J. LeBlanc and John J. Goda
School of Information and Computer Science
Georgia Institute of Technology
Atlanta, GA

=

rn
::;;:
U?

G. Michael Schneider, Steven W. Weingart and David M. Perlman, An Introduction
to Programming and Problem Solving with PASCAl, John Wiley,-1978. ($12.95)
Among the strongest features of this book are its coverage of the complete programming processes (from problem specification through debugging
and maintenance) and its emphasis on good programming style. Most of
PASCAL is well presented, with the examples giving a good demonstration
of how the features of the language should be used. The weakest part
of the book is the presentation of "advanced" features such as variant
records and pointers. Its coverage of programming fundamentals n~kes
this an excellent text for an introductory course for students with little
or no programming experience.

Peter Grogono, Programming in PASCAL, Addison-Wesley, 1978. ($9.95)

=

While this is an introductory book, it concentrates more on the syntax
of PASCAL and less on programming methodology than does the book by
Schneider et. ale It is easy to read and has syntax charts integrated with
the text rather than in an appendix. Grogano includes very good coverage
of the advanced features, particularly pointers and dynamic data structures.
The presentation of user-defined types is not as well-organized as it
could be. lfuile this book could be used as the text for an introductory
course, its lack of coverage of programming fundamentals and its strength
in the area of the advanced features make it best for students who have
some programming experience.
Richard Conway, David Gries and E. Carl Zimmerman, A Primer on PASCAL, Winthrop, '76.
-----($10.95)
This book is based on a PL!l book by Conway and Gries and it shows.
The only structured type discussed is arrays and the discussion of user defined scalar types is very weak. The material on programming methodology
is not at all integrated with the presentation of the language, so it is
necessary to skip around in the book when it is being used as a text in an
introductory course. There are errors in the presentation of PASCAL that
are clearly not typographical. In general, this book fails to capture
the idea that the features of PASCAL can actually make program development
easier than if FORTRAN were being used.

Kenneth L. Bowles, (Microcomputer) Problem Solving Using PASCAL, Springer-Verlag, 1977. ($10.95)
--- --- -- ---

(See PASCAL News #11 for a more thorough review.) This basically appears
to be a good book, but the language presented is not standard PASCAL. Bowles
microcomputer PASCAL (with extensions for graphics and string handling) is
used and the examples are heavily dependent on use of the extensions. This
tends to make much of the book confusing to a student who does not have
Bowles' system available.

I--'

o

ARTICLES WANTED
(* Tim Bonham has been surveying publications which might want articles about Pascal and
has supplied uS with the following list. *)

Wayne Green
Kilobaud
Peterborough, NH 03458
(603) 924-3873
Especially interested in articles which answer the questions "Why 'should I use
Pascal?" IIWhat uses does Pascal have in the real world?" and "How would I gain from

using Pascal?" Maybe later on could use articles on how to program in Pascal.
pay.

Will

Stan M. Sokolow
Solus News

1690 Woods ide Dr.
Redwood City, CA 94061
(415) 368-3331
Wants articles introducing and ttjustifying" Pascal. Especially interested in
machines which are software compatible with the SOL (80BO-based with cassette

operating system).

Northstar Newsletter
2547 Ninth St.
Berkeley, CA 94710
Especially interested in software for the Northstar products: micro disk system and
Horizon computer system. Introductions and justifications.
Larry Steckler, Editor
Radio-Electronics
200 Park Ave. S.
Wew York, NY 10003
(212) 777-6400
Introductions to programming in Pascal.

ROSTER INC REM ENT (7 8 /04 /22 )
The names listed below represent people who have renewed. changed address,
or joined PUG since the roster increment was printed in PUGN 11. Some
interesting statistics:
number
country
number
state
renew date number
1535
USA
349
CA
238
77
145
UK
MN
156
1557
78
88
Canada
MA
107
249
79
70
Germany
TX
88
54
80
42
Australia
NY
83
10
81
Netherlands 35
PA
80
82
7
31
Sweden
Switzerland 27
23
Denmark
RUSSEL J. ARBOTT
91330
REESA ARRAHS
87106
RICrL\RD E. ADA:1S
43214
TONY ADDT.tAJiI :113 9PL
PETER ALT'lA.'W
D-5100
J. AMBLER
RICIL-\Till H. AHEYE
01752
55455
CHRISTOPHER AXLEY
DAVID E. A.NDERSON
53201
PET8R A.l'flJERSON
07102
HATS APELKRA.'1S S-350 03
ROBERTO ARGUETA
MICHAEL C. AR;·lSTROllG
94804
WILLIAt1 J. ARTHUR
92624
AllTTI ARVELA SF-33340

OnTEn

t:I~lGlJm1

GERl1A~Y

U!lITED KINGDO:f

SmmD!
EL SALV.-\DOR

FI~!LAN))

ATTENTIOll: GORDO;~ R. SHER!1Ail
ATTENTIOll: G. TER HOFSTEPE
ATTENTION: JERRY W. SEGERS
ATTENTION: R. !). BERGERON
ATIENTION: SA.c'1DRA ~.ffiIGHT
ATT;;:(: BETTE BOLLING-LIRRARIAN
ATTN: CEC!CO
ATTN: CENTRF. DE RECHERCHE
ATTN: CHICO PROJECT - CDC
ATTN: CO:lPUTER SCIENCE PRESS I~IC.
A'IT~: CUPERTI::IO LIBRARY
~H~l', DEPT !)E l-lATHEMATIQUE AND INFOR!'lATIQUE
ATT:!: DEPT OF BIOCHEMISTRY
ATTN: DEPT. OF COHPUTER SCIENCE
ATTN: DOCUHE:.lTATION OFFICER

37916
:15'17 259 CANADA
30332
03824
H3~1 3B9 CANADA
45036
CHILE
F-34075 FRA.'1CE
95929
20854
95014
F-35Q31 FRAI'lCE
LEI 7RH UNITED KINGDon
38677
NEW ZEALAND

0-1000 GER!1ANY
ATn: FRErE mnVERSITAT BERLIl'f
ATTN: FRIEDA S. COHN
53706
A'ITN: liELEN SHITR N2L 3G 1 CANADA
55113
ATTN: INFOR.'1ATION SERVICE CE!UER
D-2000 GER.'1A'>.IY
ATTN: INSTITUT FUER INFORl1ATIK
0-2300 GER..."1A..'1Y
ATTN: INSTItUr FUR INFORHATIK
ATTN: LAFAYETTE COLLEGE
18042
ATTIl: LIBRARY
91109
ATTN: LII3RARY - COPY 2
94305
fI\'I"~: NORTHWEST MICROCO~1PUTER SYSTEMS I:1C.
97401
ATTN: PROGRAHHI~G ADVISOR
89507
ATU: PROGRA.'1MI:i/G ADVISOR
89154
ATTN: PURCHASING OFFICE
2600 AUSTRALIA
ATTN: SAN CALVIN
09175
ATn: SCHOOL OF DiFORl1ATlON SCIENCES
2616 AUSTRALIA
52242
ATTN: SERIALS DEPT.
ATTN: SPECIAL I~T£RACTIVE COl-fPUTER LAB
55455
ATTN: STUDENT CotfPUTING coop
92093
ATTN: SUSAN BOUIE - DOCIDu:tTTS Roon
97403
ATTN: THE LIBRARIAN !IE99 ILH UNITED KINGDQ}1
ATTN: UNBOUNDED CmtFUTIMG
94086
ATIN: UNIVERSITAT DE GRE:WSLE F-38041 FRAl'iCE
A-i'1N:TECHNICAL RESEARCH CENTRE OF FItlLANP SF-02I50 FINLAND
90230
LEE n. AURICH
ROBERT M. BAER
94941
C. SAlLEY
74104
F. T. RAKER
20760
JOlm BA>>:jNING
94305
ANN BARDItiI
47401
ANN V. BARROW
UNITED KI~GDOn
FRANCIS H. BEARDE;-{
45241
E. R. BEAUREGARD
170B
GARY BECKWITH
551B
H. D. BEER L69 3BX UNITED KINGDOH
DAVID A. 1}EERS
92701
E. MAURICE BEESLEY
89557
95001'1
DAVID J. BELL
ABDUL RASAQ BELLO
55408
STEVEN M. BELLOVIN
27514
GILBERT BERGLASS
14221
ALLEN BERGLUND
85005
0-2000 GER!1AHY
THOMAS B ERllER
01821
JOEL BERSON
SCOTT S. BERTILSO!l
55455
K. S. BHASKAR
68508
LEONARD BINSTOCK
20901
NEW ZEALAND
CHRIS M. BISHOP
JUDY !of. BISHOP
2001 SOUTH AFRICA
K. l.'. BIXBY
92634
ANTHOUY BJERSTEDr
74171
R. B. T. BLACK DD2 3XX UNITED KnGDO!1:
ROBERT E. BLANTotl"
01778
DMVN BLmt
95819
W. ASHBY BOAZ
22101
PETER BOCK
20052
JOHN R. BOGA1~
94010
REFORD BOND
73102
RONAI,D V. BOSSLET
02154
GREG 130URQUE
80901
WILLIAM M. BRACK
HONG KONG
84047
JOHN A. BRIGGS
77840
JERRY R. BROOKSHIRE
92037
DAVID H. BROHN
R. LEONARD BR01ffl
22903
CHRIS BRYCE Las 4Kl CANADA
MARTIN BUCI!ANAN
20007
DONALD D. BURN
61801
DEBORAH BUSCH
13346
R. BUSH
97420
RICKY W. BUTLER
23601
JAl1ES D. CALLADINE LOC 1 KO CA..~ADA
T. 11. CAHBRON
32901
JIM CA,'1ERON
43023
SHERRY L. CAMERON
92714
ROBERT L. CA.tilNOll
29208
ROY CARLSON
97077
P. CARR BA2 7AY UNITED KI:-tGDOtl
JOHN CARTER SR.
95050
GEORGE P. CHENEY
01854
C. W. CHILDERS
94550
EARL N. CHRISTIANSEN
68134
ROBERT G. CLARK FK9 4LA UNITED KI'lGDO!i
W. E. CLARK
92138
JENNIFER CLARKE
02115
JIM CLARKE
76010
H20 U~ITED KINGDO~1
RICH..I,.RD CLAYTON
GEOFFREY A. CLEAVE
3165 AUSTRALIA
CERHARDT C. CLEHENTSOIl
80204

SETTY CLIFFORD
D. S. COCHRANE
JOE COINT,IENT
R. COLE
HOHARD S. COLEY ,JR.
TERENCE M. COLLIGAN
Ar-TTHOtlY CO!'lTI
MICHAEL J. COOK
D. F. COSTELLO
C. J. C07TON
M. ,IICHEL COURCHESNE
JOHN COUSINS
LAWRENCE F. CRAlt
ROG ER CRUllER
A. PAUL CROONENBERGUS
sca'IT CRU!-lPTOli
HOWARD CUNutNGHA.'i
JaIDI H. DALY
THOMAS DANBURY
RONALD L. DANIELSON
GENE A. DAVENPORT
SCOT! T. DAVIDSON
AnELum CARLOS DE SOUSA
DENNIS S. nELOR:·IE
ALAN DELWICHE
SHAUN DEVLU
JERRY 01 :1ASSA
ROBERIO DIAS
DAVID R. DICK
CLE:·IENT L. DICKEY
MARY DIEGERT
BOB DIETRICH
M. JEAN-MARIE DIRMlD
FELIX DREHER
LARRY DUBY
DOUGLAS DUNLOP
BRUCE J. EDtnHmSO:1
JOHN Em-lARDS
P. S. EDI.j'ARDS
H. W. EGDORF
JOSEPH EDIWECK
JOlIN ELDER
LARRY E. ELLISON
ROBERT EMERSON
JAl{ES C. fl1ERY
HA1HlU ERKlO
C. B. FALCONER
MICHAEL FAY
LINWOO!) FERGUSON
BILL FI~CH
BEL R. FISHER
F. G. FLETCHER
DOUG FORSTER
CRAIG FRANKLIN
R. D. FREEI1A.~
ERIC O. FREY
DAV!;) F. FRICK
KARL FRYXELL
!1ICHEL GALI~IER
DAvm GARDNER
PHILIP GAUDETTE
RICHARD D. GEORGE
CARSon C ERHAN
BRAl~KO J. GEROVAC
CLIFF'OP.!) GERSTENHABER
CHARLES J. GIBBO~IS
RICK GILLIGAN
Dml GILMORE
THWAS GIVENTER
R. STEVEN GLANVILLE
GEORGE H. GOLDE~1 SR.
DAVID GRABEL
TOU GRABOU-SKI
JEFFREY W. GRAHAM
SUSAl~ L. GRAHAM
DAVID N. GRAY
ARTIE GREEN
ROBERT 11. CREEtl
SY GREENFIELD
PETER GROGONO
RICHARD D. HACKATHORN
tfILLIAH. L. HAFNER
JACQUES RAGUEL
BYRON HALE
RICHARD W. HM-tILTON
BRIAN HANSEN
WILL HAPGOOD
ANDY HARRINGTON
!-HKE HARRIS

T2N 1N4 CA..IqADA
UNITED KINGDOM
75248
S El OAA UlUTED KINCDO:t
95070
02193
03301
95014
68583
19898
H1G 3S5 CA.."lADA
97005
01701
93940
92277
32601
47904
08108
06880
95051
10016
92138
PORTUGAL
55901
95120
48010
95051
BRAZIL
02104
93407
13902
97077
J1K 2R1 CANADA
66762
22209
23185
94040
3083 AUSTMLIA
3216 AUSTRALIA
80401
88003
BT7 INN UNITED KINGDO~1
08046
98040
08.40
SF-OOIOO FINLAND
06504
60919
22901
95014
95118
02154
94611
03060
UNITED KINGDOM
03031
94025
91125
F-31450 FRANCE
55113
22301
60439
90706
02154
55343
68154
93407
95030
10583
94087
14063
02174
15108
35223
94720
78769
19311
V4M 3T9 CANADA
12206
CANADA
19174
19424
JIK 2R1 CANADA
94043
94102
97213
02154
93017
62704

:z

rn
:>0:

c.n

'-

=
:z
rn

ROBERT O. HARRIS WCIA OAH U~ITED KINGDOlI
21114
ROBERT W. HARRIS
DON HARVEY
97070
W. F. HAYGOOD
84121
PETER fiAYNES L5N H7 CANADA
SASSA..'l" RAZEGHI
94305
RA.\1DALL HEAP
01752
JOa:l HEATH
04103
JUDY HERROll
91789
S. J. HIGGDS CA9 )LP mUTED KUGDOX
TERUO IUKI'rA
158 JAPAN
BUZZ HI1.L
98632
BRUCE HILLEGASS
01754
ED HIRAHARA
83704
THOU HOARD
55414
C. A. R. HOARE OX2 6PE UNITED KINGDO:1
FRED ti. HOFKIN
19117
WILLIA:1 nOL~ES
63110
JA!1ES W. HOLT JR.
40222
JILL A. ijOLTZ
63166
WILLIAI{ C. HOPKI~S
19335
HARK HORTON
53706
DAVID A. liOUGH
24502
MICHAEL A. HOUGHTALDIG
85712
O. J. HOWORTH
UNITED KI\1GDOH
PEl aSIA
35801
55455
PETER YAN-TEK HSU
22448
HARTM:UT G. HlmER
73501
GARY HUCKABAY
K7L 3N6 CANADA
JACK HUGaES
98507
PHIL HUGHES
78769
EDI-l.\RD C. !IUMPHREY
UNITED KINGDOff
M. A. HUSB!'IND
17837
DANIEL C. gYIll':
ELIZABETI{ IBARRA
91360
mCHAL IGLEWSKI
00590 POLA~lD
BERT INGARFIELn
77459
DAVEl INTERSI~IlE
90250
T. H. l>l". IRISH NP6 TSB UNITED KINGOQ}l
PORTIA ISAACSON
75080
HAtl~ JAlI.K.KOLA SF-3351JO FINLAlm
TI~OT:1Y H. JACKDIS
94306
STEVE JAY
85721
Rml JEFFRI ES
93017
JOSEF Jl:IlOCH
7 CZECHOSLOVAKIA
DOUGLAS N. JOHNSON
94598
LYTLE JOHNSQ!l
80033
PAUL D. JOHNSON
75006
RALPH JOHNSOn
61401
ROBERT T. JOHNSON
87545
S. JOHNSON
85002
JOSEPH H. JOLDA
01570
ALAlI JONES
IRELAND
DAVID JO:lES L5N 1K7 CANAnA
RUSSELL JONES M5!1 31.J6 CANADA
HARK JUNGI{IRTH
93010
HIKE KAI1RAD
55413
KENNETH KAPLAN
50304
HEIKKI KASKELHA SF-00130 FINLAND
RICHARD KAUF:1fu'i
92093
FRED J. KELLER
99210
MIKE KERSEY
77098
PAKISTA."I
ADn~TAN KHAN
95126
JOHN H. KILFOIL
33313
ERICH R. KNOBIL
92109
TOM KNOCHE
01730
STEPHEN KOCH
60601
JAlfES R. KOCilANOIlICZ
ISRAEL
JUDITII KOVETZ
11771
JEFF KRAVITZ
0-5000 CERHANY
DIETRICH KREKEL
84102
RICHARD IJ. KREUTZER
10007
CHARLES KUllL~fAN
89503
DARRYL KUHNS
D-4440 GERliA.'iY
KWAI-SAND LAB
B15 2TT UNITED KINGDmf
K. LANG
GUY LAPALME n3c 3J7 CA."IAnA
UNITED KINGDOU
G. F. LAPPI~
JOHN LATRASH
CHARLES L. LAWSO~I
HENRI A. LE FRIANT
R0I1ALn LEBEL
RICHARD LEBLANC
ROLANj) L. LEE
R. GARY LEE
WILLIAl1 J. LEE
E. J. LEGGE
CLARENCE LEImAN
CHARLES T. LEIS

20910
91103
70118
02139
30332
94121

32306
55423
M60 1QD mHTED KDl'GDOH
55364
94087

ALAn

WIL-L LELAND
JOE LEXNER
~I. LESGOLD

53715
38163
15250
97051
92805
14850
20854
94545
02139
55455
22209
60005
94115
L5L 2E9 CANADA
19141
77843
55901
CANADA
21014
S 7~ OWO CAl'1ADA
95929
01742
92717
01730
14260
20014
35805
03060
980)3
R4l' nil CANADA
94086
20771
77025
19403
22209
94040
27410
70360
94707
02138
94086
CH-6900 SWITZERLAND
48105
17557
75229
80523
DK-273D DEm1ARK
DK-9220 DENMARK
48864
95051
48859
CH-1224 SWITZERLAND
01720
94114
54701
CHHA
10804
20742
60611
92705

KEN LESSEY
JAt-fES D. LETl
DAVID J. LEWIS
HOP.3G JYH LIANG
PING K. LIAO
JACK LIEBSCHUTZ
JOHN E. LIND
FRAN'K LINDSAY
CHUI FA.~ LIU
WILLIAH R. LLOYD
CARLO LOCICERO
STEPHEN A. LONGO
A~T'~ONY P. LUCIDO
CLARENCE W. LYBARGER
STUART Lr.'l:NE
BRUCE "MAC ANASPIE
D. W. MACLEAN
ORLANDO S. ~R 18AL
KEVIN T. MAHOllEY
DEllNIS J. MAPlE
STEPHEN HA.>ilN
DUANE F. MARBLE
THO~iAS A. MARCI~HAK
L. R. MARKER
BILL MARSHALL
WILLIA!1 J. HARSHALL
S. MATTHE\-lS
STEVE HCFERRIN
FRAJ'lK E. MCGARRY
JAlms PATRICK MCGEE
JAJ1ES A. MCGLINCHEY
DAVID J. MCKEE
IRVINE L. MCKNIGHT
,\HLLIAM L. MCLAH III
RONALD P. HCRAl'-IEY
JOaN ~IEDCALF
HICHAEL UEEHAN
JIM HERRITT
HA:.'IS J. METZDORF
KUR T ~ETZG ER
JO"EPII MF:YER
R. N. MILLER
PATRICIA R. MOHILNER
ROLF HOLICH
UFFE MOLLER
ALLAN HOLUF
CECIL A. MOORE
FREEMAl~ L. "DORE
RAYl'IOND HOREL
CLEMENT HORI TZ
LYALL tfORRILL
GREG MORRIS
JWO-flU HOU
GLEN R. J. MULES
Alnl MURPHY
CHARLES MYERS
DQ;iALD V. MYHRA
19422
J. P. M. STOFBEItG
01351
GERALD tlADLER
NORWAY
OLAV NAESS
95051
JOH~ NAGLE
68588
GEORGE NAGY
87801
T. A. NARTKER
78761
ED HAYLOR
19422
PETER A. NAYLOR
61801
HEIDI 1. NEUBAUER
07301
UARTI~ NICHOLS
55901
DMIEL NICHOLSOt~
19401
DENNIS NICHOLSON
54!~ JAPAN
HIROAKI NISHI:OKA
91711
TONY NOE
15701
JOHN NOLO
90070
MELVlCi L. NORELL
66502
BARBARA K. ~ORTII
LARRY T. NOVAK
75235
WILLIAH I. NOlnCKI
60201
M. !mNN SW1 P 4RT UNITED KINGDmI
FRA.~K NUSSEAUt1
69626
FRANK W. OECRSLI
94611
DAVID F. om.
95014
ERIC OLSEN
GENE H. OLSON
JAHES B. ONEY
P. E. OSMON
SUSA.~ S. OWICKI

92713
55419

9~022
!l"\.j'J 7ST UNITED KINGDmt

94305

JAtlES N. O'BRIEN
STEVE O'KEEFE
JACK PAGE
W. O. PAPlE
R. L. PALASEK
RICHARD PALCHIK
PAUL J. PANTANO
T. L.(FRANK) PAPPAS
!of. L. PATRICK
DAVID N. PECK
JIM PECK
ROB ERT C. PERL E
BERNARD PERRETTE
RONALD H. PERROTT
DAVIiJ PESEC
JAHES L. PETERSON
SU5A.\1 A. PETERSON
CHRIS K. PHILLIPS
DAVID H. PHILLIPS
DAVID PICKENS
THot1AS PIaNOT
FRED POSPESCHIL
DAVID POWERS
KARL PRAGERSTORFER
GEliE H. PRIESTMAN
FRMJK PROSSER:
ANDREW S. PUC!LP.IK
J. R. PUGH
SHING-KH PUN
ABBAS RAFII
ROB ERT J. RAKER
STEVEN R. RAKITIN
TIM RAND
ROBERT RANSDELL
Dm!ALn o. REDDI'iiG
~TERNER REMMELE
JOH:t H. REMME~S
TI~fOTHY P. ROBERTS
KEN ROB INSOlr
D. J. ROBSON
mCH.<\EL RODBY
JA:ms D. ROGAN
J. S. ROHL
JON D. ROLAND
GENE ROLLns
J. ROSCOE
PETER N. ROTH
RICHARD ROTH
R. WALDO ROT3
H. J. ROHE
HERB RUBENSTEIN
BEARDSLEY RUIlL 2ND
HOWARD RUTIEZER
JOHN L. RUT IS
DAVIO IJ. SALLUHE
At"lN D. SANDERSON
TOH SA.~DERSON
HAROLD S. SCHECHTER
ALAN !-f. SCHLENGER
CH. SCf-{LIER
RICHARD SCf-{LOTFELDT
ANA-XARIA SClUnT
ED SCHOELl.
ROBERT L. SCf-{OENFELIJ
PETER U. SCHULTHESS
JD1 SC!{uLTZ
,\ULLIAM H. SEIFE.RT
MICHAEL S ErTLE
LEONARD SHAPIRO
T. K. SHARPLESS
TIMOTliY SHAI-l
ALAN M. S HERKOI-l
BRUCE SHERRY
R. G. SHERRY
THOMAS E. SHIELDS
KEITH ALLA:"'I: SHILLI-':GTON
CHARLES B. SHIPlWI JR.
KL't L. SHIVELEY
ARNOLD SHORE
MICHAEL L. SImON
LESLIE L. SIFTER
JOHN SIGLE
GEORGE A. R. SILVER
GENE SI:'1l10NS
TI~OTHY :1. SIMNOUS

snlDrl
ANDREW SI~GER
ROGER SIPPL
DAVID SKPHIER

97229
20229
SINGAPORE

91103
44839
95014
95051
19083
fi20 ILL
01756
16142
08753
F-92803
94086
44119
78712
55432
94305
78736
80302
19530
68005
2049
A-4060
95129
47401
47119
SI 1WB
95926
73019
94104
06095
06268
43202
48105
0-8000
48197
10509
2033

UNITED

KI~GDOH

FRANCE

AUSTRALIA
AUSTRIA

UNITED KINGDOM

GERHANY

AUSTRALIA
UNITED KI~IGDmf
50701
48106
6009 AUSTRALIA
78205
11794
UNITED KINGDOM
22030
06377
46989
LEI 7R.H UNITED KINGDmf
80401
20008
60025
97106
93454
23284
91311
11418
95064
D-7800 GERHANY
55435
CH-I007 SWITZERLAND
95051
10021
CH-8006 StHTZERLA'''ID
95014
87545
75229
58102
10021
20016
53212
95050
98107
77005
92093
22027
75231
22032
94618
02181
78284
47374
22030
72143
2308 AUSTRALIA
02556
92660
97330

LEO J. SLECHTA
55165
JOSEPH w. SHITH
92127
TOM SNYDER
92634
DAVI;) SOLOHOtIT
02155
RICHARD P. SPRAGUE
92714
ROB SPRAY
75207
R. E. STARCK
15021
JAI1ES A. STARK
94609
R. A. STASIOR
13088
11ICHAEL K. STAUffER
95051
GREG STEPHEN
62026
WI!1 STEVENS
8-2510 BELCIUtf
JIM STEWART
08854
80306
ZHAHAI STEWART
55435
RICHARD A. STONE
QUENTIN F. STOUT
13901
06720
M. J. STRATFORD-COLLl~S
GORnOll STUART V8P 5J2 CANADA
INDONESIA
INDRO S. SUWANDI
~\RK A. SUANSOtl
02174
38103
ROBERT M. SHEENF.Y
E. SWEET
48109
KEN SYLVESTRE YIA 3P5 CANADA
DAVID TARA,"SAR
01581
H. TAYLOR KIN 6N5 CANADA
R. F. TAYLOR
90026
DON TER~HLLIGER
97005
DAN IEL THALHAJIN H3C 3J7 CANADA
K. TIl lARD EX4 {fPU UNITED KINGDOM
Hm-lARD E. TOUPKINS
15701
ROY TOUZEAU
59812
95051
MIKE TRAVIS
TOH A. TROTTIER t14R 1 v2 CANADA
JA~1ES TRUEBLOOD
19713
JJI?1 TSEVDOS
15213
HOIlARD L. TURETZKY
80220
GERALD F. UHLIG
55112
S. M. VAIDYA
411007 INDIA
TOH VAN DER HOEVEN
THE NETHERLANDS
STANLEY C. VESTAL
55413
JOHN VINSEL
03061
LES VOGEL
93940
PATRIK WAHREN S-102 62 StolEDEN
scan \-lAK.EFIELO
94305
JOIlrl WALKER
94941
JUSTIN C. WALKER
20234
TIM WALSH
11580
P. R. WALWY~ KT23 3EZ UNITED KINGD0l1
C. !)UDLEY WARNER
95030
SANDY WARSHAW
12301
MARK S. WATF..RBURY
22044
ANNA WATSON
32407
CHIP WEEMS
97331
STEPHEN J. WEINBERGER
64138
STEVEN W. WEINGART
01581
LAUREN WEDiSn:IN
90025
MICHAEL D. WEINSTOCK
32548
DAVID U. WELCH
92501
JAlfES H. WELLS
92634
D. R. WESTLUND
K9K IJi CA.IqADA
MARVIN WHITE
97077
RONALD C. WHITES
92701
UAltEK WIECHULA B2(; 1CO CANADA
JACK }t. ,HERDA
60532
J. F. WILKES
THE NETHERLANDS
ROY A. WILSKER
02114
MICHAEL WI:-tBLE
52404
BILL WINSPUR R3E OW3 CANADA
JOHN tnTHROI-l
01752
ERIC WOGSBERG
94618
BRUCE WOLFE
94965
SHARLEEN WONG
94134
STEPHEN C. WOOD
87108
ARDEN WOOTTON
64151
FULTON ~ffiIGHT JR.
86301
BRUCE YALE
92506
M. J. L. YATES GL52 5AJ UNITED KlNGDOH
38138
JA.'{ES CRAIG ZIEGLER
DAVID J. ZOOK
60626

z
rn
(I)

<-

=
z
rn

-0

J>
G>

rn
f-'
N

PASCAL NEWS #12
OlS70
01581
01581
01701
01720
01130
011)0

01742
01752
01752
01752
01754
01756
01778
01821
01851
01854
02104
02114
02115
02138
02139
02139
02154
02154
021 '34

021')4
02155
02174
02174
02181
02193
02556
03031
03060
03060
03061
03301
03824
0410J
06095
06268
06504
06720
06877
06880
07102

07an!
08046
08108
085',0
08753
08854
09175
10007
10016
10021
10021
l0509
10583
10804
11418
11')80
11771
11794
12206
12301
11088
13346
13901
13902
l4063
14221
14260
14850
15021
151~8

15213
15260
15701
15701
16142
.17019
17557
17831
18042
1')083
19117
19141
19174
19311
19335
19401
19403
19422
19422
19424
19530
19713
19898
20007
20008
20014
20016
20052
20229
20234
20742
20760
20771
20854
20854
20901
20910
2l0l4
21114
22027
22030
22030
22032
22044
22101
22209
22209
22209
22JOI
22448
22901
22903
23185

JUNE,1978

P.I\GE 13

JOSEPH II. JOLDAI BARTLETT 1IIGH SCHOOL I NEGUS STREET/ WEBSTER M A 01570
DAVID TARARAR! SOFTWARE DEV!~LOPMI~NT! M.S. 71141/ DA'fA GENERAL
CORPORATlOtl/ ROUTE 9/ WESTBORO HA 01'581/ (617) 36(>-8911 X3082
STEVEN W. WIUNGART/ MS 71141! DATA GEt'lERAL CORP.! 15 TURNPIKE
RD./ WESTBORO ItA 01581! (617) 366-8')11
LM/RENCE F. CRAM/ 1)00 WORCESTER RIl. APT 101/ FRAMING TOil MA 01 701! (617) 375-5663
CLEMENT MORITZ/ 30 '~ETHEKBEE ST.! ACTON l1A 01720/ (611) 263-27 11
STEPHEN KOCH/ 3M!LINOLEX SYS'fF..M.S INC.! 10 CROSBY DRIVE/ BEDFOR D MA 017301 '(617) 275-1420 :<175
STEPIIEN MANN/ 3H LI~OLEX SYS'fEHS INC.I 10 CROSBY DRIVE! BEllFOR 0 HA 01730! (617) 275-1420 X164
KEVIN T. MAHONE'll MAIL-STOP 21 GEN'RAD INC.! 300 BAKP-R AVENUE!
CONCORD 1.fA 01742/ (617) 369-4400 X317
RICHARD u. AM~~YE/ 18 ROYAL CRF.ST DR. _ APT. 4/ MARLBORO HA 017 52/ (617) 481-5823
RANDAl.L lIl~AP! MH2-3!M84/ DIGITAL EQUIPMI-:NT CORP./ 1 IRON WAY!
HARLRORO ttA 01752/ (617) 481-9511 x6848
JOtm WITIHlOW! !oIRl-1/A86! DIGITAL t:(~UIPMENT CORP./ 200 FOREs'r ST.! MARLBORO ~IA 01752
BlmCE HILLEGASS/ ML 22-1/840/ DIGITAL EQUII"HENT CORP./ 146 ItAI N STREETI MAYNARD trA 01754
DAVII1 N. PEC1{/ BELLING!IA~ STREET/ Mf.NDON I1A 01756/ (617) 479-2 320
ROBERT E. BLANTON/ ADVANC~:n DEVELOPMENT LAOORATORY! BOX J9/ itA YTHEON COlolPANY! BOSTON POST ROAn/ WAYl.Atm ttA 01778/ (617) 3511-2721 X2SlS
JOF.L RERSON/ MS 895A/ HONEYWELL INFORHATION SYS'rEI1S! 300 COI~CO RD ROAn/ BIU.ERICA HA 01821/ (617) 667-3111
CERAT.O tIMLER! DEPT 46/ 'liANG LABS! 1 INDUSTRIAL AVE! lOUELL MA 01851
CEORGE P. Ctlt:NFX/ ElECTRIGAL ENGINEEllI~G DEPT.! UNIVERSITY OF LO'~F.ll./ 1 UNIVERSITY AVE./ LOWELL MA 01854/ (617) 454-7811 X2'jf)
DAVID R. DICKI SOFTWARE INIWVATIOUS INC.I P.O. 'BOX 1537! BOSTO N HA 02104/ (617) 734-4200
ROY A. YIlSKER/ CO'fPUTER NETWORK/ MASS. STATE COLLEGE/ 150 CAU SEWAY ,qTREET/ BOSTOtf HA 02114/ (617) 727-9500
JF.~NIFER CLARKE/ COHPUTATION CENTER/ 25 RICHARDS HALT./ \'lORTHEA STERN U./ 360 HUNTINGTON AVE./ BOS'fON :IA 021151 (617) 437-3183
MICHAEL MEEHAN/ WDITHROP PUBLISH!~RSI 17 DUNSTER STREET/ CAMBIlI DCE MA 02138/ (617) 868-1750
RONALD LEBEL/ 344/ MIT/ 545 TECHNOLOGY SQUARF../ CAM.BRlnGE nA 02 139/ (617) 253-3473
JACK LIF..BSCHUTZI 32Q nE}1ORIA1.. DRIVE/ CAltBRlDGE MA 02139/ (617)
494-8335
ROUALO V. BOSSLET/ GTE LABS INC.! 40 SYLVAN ROAD! WALTI-{AM MA 0 2154/ (617) 890-8460 X338
F. G. F1..F.TCtlER! EKS CENTER/ 200 TRAPELQ ROAD/ WALTIlA."I. 11A 02154 / (617) 893-3500 X157
BRANKO J. GEROVAC/ EUHICE KENNEDY SllRIVER CENTER/ 200 TRAPP-LO ROAD/ WALTHAM riA 02154/ (617) 893-3500 X157
WILL HAPGOOD/ RAYTIIEON CORP.! FOUNDRY AVE./ WALTHAM HA 02154/ (617) 899-8400 X4520
DAVIn SOLOlfO~lT/ COtWUTER SERVICES/ MILLER HALL/ TUFTS UNIVERSI TY/ MEDfORD tlA 0215'5/ (617) 628-0501
DAVID GRABEL/ 154 HAlHSON AVE./ ARLINGTON UA 02174
MARK A. SWANSO!II 71 BFACON S'rREET/ ARLINGTON MA 02174/ (617) 6 48-4469
lESLIE L. SIFTP.H/ HONEYWI!:U./ 70 UALHUT STREET/ W1-::t.LESlF.Y HA 02 lfH

!~~:~~ES~~G~~~L!~~~/ B~~V!~~;~EN~:;~C;~~~:%tlH:A~~~~=~ ~!i~~I~ :o':i~i~HS

I:ic.1 RIVERSIDE ROAD/ WESTorT MA 02193/ (617) 891-0335

ERIC o. FREY/ fREY ASSOCIATES INC./ CltESTNUT HILT.. ROAn/ AMTIERS T NIt 03031/ (603) 472-5185
CRAIG FRANKLltf/ FUNCTIONAL AUTmtATlON/ 118 NORTItF..A.STERN BLVD./ NASHIlA NH 03060/ (603) 882-1580
BILL tlARSHAlL! SANDERS ASSOCIo\TES INC./ 24 SIMotT ST.! NASHUA N U 03060
JOlIN VINSEl/ NCAI-3220/ SA."ll>ERS ASSOCIATES INC./ 95 CANAL STRE ET/ NASHUA N1I 03061! (603) 885-5314
ANTUONY COUTI! P.O. BOX 1201/ CONCORD NH 03301
ATTENTlot~: R. D. BERGERON/ DEPT. OF t1ATH. AND COttPun:R SCIENCE / KINGSBURY HAll/ U OF NEW HAl1PSIURE/ DURlIAlt lHl 03824/ (603) 362-2321
JOliN HEATH/ DEPT. OF !tATl{. AND COtfiJUTEK SCI./ mav. OF t1AI~E/ PORTLAND ~m 04103/ (207) 780-4225
sn:VEN R. RAKITIN/ H.S. 9488-4BB! COIIBIlSTION ENGI"lEERI~G I~C./ 1000 PROSPECT HILL RD./ WINDSOR CT 06095! (203) 688-1911 X2626
TUI RAND/ P.O. BOX 98/ STORRS CT 06268
C. B. FALCO~IERI YALE - NEW HAVEtT HOSPITAL/ 6016 CB/ YALE SCHOO L OF MEDICINEI 789 HOWARD AVE./ NEW HAVEN CT 06504! (203) 436-2601
M. J. STliTFORD-COLLINS/ DEPT.310/ 40 BRISTOL STI{F..ET/ WATERSUR Y CT 06720/ (203) 756-4451 X285
RICHARD ROTH! 5 NORTH SALm ROAD/ RIflGEFIELD CT 06877/ (203) 4 38-3954
THOtfAS DANBURY! SURVEY SAMPLmG INC./ 155 E. BOSTON POST RD./ WESTPORT CT 06880/ (203) 226-1321
PETER A.~DERSO!l/ COMPUTER AND nFO SCI DEPT./ NEW JERSEY INSTIT UTE OF TBCHNOLOGY/ 323 Hlc:n STREET! NEWARK NJ 07102/ (201) 645-5126
MAP.TIN NICHOLS/ 100 GUY STRgET! DOVER NJ 07901/ (201) 628-9000 X777 (WORK)/ (201) 361-7180 (UO~ln
lARRY E. ELLISON/ 19 HUtI"rIf'lGrON lANE/ WILLINGBORO UJ 08046
JOliN II. OALY/ 210 HAZEL AVE./ WESTNUT NJ 08108
JAMES c. EllERY! UTBRUNIVEItSlTY COtolMUNICATlOUS COUNCIL/ EDUCOU/ P.O. BOX 364/ PRINCE'tON NJ 08540/ (609) 921-7575
ROBERT c. PERLE/ 1108 KUBY nRIVE/ TOMS RIVER NJ 08753
JIM STEWARTI 195B PLEASANT VIEW ROAD I PISCATAWAY ~J 0885/+/ (201) 382-5600 (WORK)
ATTN: SAM CALVIN/ COliPUTER EDUCATION/ DARMSTADT CAREl-:R CENTER/ APO/ NEW YORK NY 09175
CHARLES KUlllMAN/ CRIMINAL JUSTICE AGENCY/ 305 RROADt~AY - 5TIl FLOOR/ NEW YORK NY 10007/ (212) 577-0516
GENE A. DAVENPORT/ JOH.N wn.EY AND SONS! 605 THIRD AVENUE! NEW YORK NY 10016/ (212) 867-9800 X246
ROBERT L. SCHOENFELD/ ROCKEfEllER UNIVERSITY/ 1230 YORK AVE./ NEW YORK NY 10021/ (212) 360-1253
T. K. SHARPLESS/ INVESTIGATIVE CYTOLOGY/ MEMORIAl. HOSPl'rAL! 1275 YORK AVE./ NEW YORK NY 10021/ (212) 794-6007
TIMOTHY P. ROBERTS/ KERN INSTRUMF..NTS INC./ GENEVA RD/ BREWSTER. NY 10509/ (914) 279"'5095
THO/lAS GIVENTER/ 1250 POST ROAD/ SCARSDAI.E NY Hl583/ (914) 472 -4035
GLEN R. J. MULF.S! 261 BEECHtlQllT DRIve/ NEW ROCItEL1.E NY 1()804
HAROLD s. SCHP.GHTER/ 84-40 117 ST/ JA~-tAICA NY 11418/ (212) 849 -8579
TIM WALSH/ 174 E. MAUJER STREET/ VALT.EY STRP..AM t~Y 11580
JEFF KRAVITZ/ 69 ORCHARD ST. - APT. 3H/ OYSTER BAY NY 11771/ ( 516) 922-7757
CENe ROLLINS! COHPUTER SCIF.NCE DEPr.! SUNY - s'rOtTy nROOK! STONY BROOK NY 11794/ (516) 246-4383
SY GREENFIELD/ :-IIKROS SYSTEMS CORP/ 845 CENTRAl. AVE.I ALBANY NY 12206/ (518) 489-2561
SANDY WARSlfAl..'/ 4B34/Kl! GENERAL ELECTRIC/ P.o. 'BOX 8/ SCHEN~CT ADY NY 12301/ (518) 385-8192
R. A. STASIOR/ 18 FORESTER ROAD! LIVERPOOL NY 13088/ (315) 456 -7261
DEBORAH BUSCH/ CO!tPUTER CENTER! COLGATE UNIV./ HAHIT.TotT NY 13346/ (315) 824-1000 X484
QUENTIN F. STOUT/ DEPT. OF MATH SCIENCES/ SUNY - BINGHA...'1'ION/ B INGltA..'ITON NY 13901/ (607) 798-2147
MARY DIEGERT/ MATHEMATICS DEPT./ BROOME comruNITY COlI.EGE! BIN GIIAMTON NY 139021 (607) 772-5000
GEORGE H. GOLDE}l SIt./ COUPUTER CENTRR/ HAYTUM IIALI./ SUNY FREDO NIA/ FREDonIA NY 14063/ (716) 673-3393
GILBERT 8ERGLASS/ NANOOA'rA CORP./ 2457 WEHRLE J)R./ WILLlo\MSVU LE NY 14221
DUANE F. MARBLE/ DEPT. OF GEOGRAPHY/ SUNY-BUFFALO! AlrnERST NY 14260/ (16) 636-2264
DAVID J. LEWIS/ MATHEHA'rtCS DEPT./ ITHACA COllEGE/ ITHACA NY 14850
R. E. STARCK/ OCEAN AIR HITERNATIONAl INC./ R.D. #1! BURGETTSTOWN. PA 1)021/ (412) 681-7533
TClI GRABO\.lSKI/ THE CHESTER ENGINEERS/ 845 FOURTH AVENUE/ CARAO POLIS PA 15108! (412) 262-1035
JJIH TSEVDOS/ CARNEGIE-MEllON UNIV./ P.O. BOX 132/ PITTSBURGH PA 15213/ (412) 665-1036
ALAN !,f. LESGOLD/ LROC CO!'IPUTJ-:R FACILITY/ mav. OF PITTSBURGHI 3939 O'HARA ST./ PITTSBURGIl PA 15260
JOHN NOLO/ COMPUTER CENTER/ G6 STRIGHT HAll/ INDIANA UN IVERSIT Y OF PA./ UDIANA PA 15701/ (412) 357-4000
HOYARD E. TOMPKINS/ COIiPUTER SCIENCE DEPT/ INDIANA UNIVERSI'ry OF PA! ItfDIANA PA 15701! (412) 357-2524
JI'1 PECK/ R.D. 11 - ORCHARD TERRACE/ NEW InlJU~G'rOU PA 16142
:
E. R. BEAUREGARD/ R.D. 3 BOX 241/ DILLSBURG PA 17019/ (717) 790-2095 (WPRK)/ (17) 766-1446 (HOME)
JOSEPI1 Mh"'iER/ MS 103/ SPERRY - NEW HOLLAND I 500 DILLER AVE./ NEW HOLLAND PA 17557/ (717) 354-1798
DANIEL c. HYDEI CQlWUTER SCIENCE PROGRAM/ BUCKNELL UNIVERSITY! LEWISBURG PA 17837/ (717) 524-3743
ATI'N: LAFAYE'ITE COLLEGE/ EASTotl PA 18042
"
T. L.(FRANK) PAPPAS! 338 FRANCIS DRIVE! HAVERTOtlN PA· 19083/ (2 15) 259-1~25

!~:H~ :~F~~:~0~2!~y~~~~ND~:~:/ E~~I~!t~:R~~~E~:} ;~I~!i~p:i !-:i8~914~/

1
(215) 951-1255
RICHARD D. HACKATHORN/ WHARTON SCHOOL - DEPT. OF DECISION SCI/ UNIV. OFi PENNSYLVANIA/ rUlLADELPIIIA PA 19174/ (215) 243-5149
ARTIE GREEN/ HEWLETT PACK..\RD/ ROUTE 41/ AvonDALE PA 19311/ (215) 268-22,81
WILLIAH c. HOPKI:'fS/ 1101 BONDSVILLE ROAD/ DOWNINGTmm PA 19335/ (215) Z:69-4486
DENNIS NICHOLSONI 421 ALEXANDRA DR./ NORRISTOliN PA 19401/ (215) 539-82~3
JAliES A. MCGLINCHEY/ 332 WEYM.OUTH RD. / PLYMOUTH TOWNSHIP/ NOR RISTOlffl FlA 19403
J. P. M. STOFBERGI ~S 8/220H/ SPERRY UtnVAcl P.O. BOX 500/ BlU E BELl. PA 19422/ (215) 542-4011
PETER A. NAYLOR/ KS B/220lil SPERRY UNIVACI P.O. BOX 500/ BlITE BELL PA 19422/ (215) 542-4011
WILLIA.M L. HAFN~/ MAIL STOP lB-22OM/ SPERRY UNIVAC/ P.O. BOX 500/ BLUE BELL PA 19424/ (215) 542-4646
TUOliAS PIRNOTI MATH DEPT./ KlTRZTO\lN s'rATE COLLEGE/ KURZTmrn PA 19530
JAMES TRUEBLOOD/ PLATO PROJECTI UNIV. OF DEJ..A.WARE/ 46 E. DELAWARE AVE./ NEWARK DE 19713
C. J. caTTmo E. 1. DUPONT DE NEMOURS CO./ 101 BEECH ST./ WILM IHGTON DE 19898/ (302) 774-1372
MARTIN BUCHANAN/ SYSTEMS CONSIJLTANTS nc/ 1054 31ST STREKT NW/ WASHUGTOr: DC 200071 (202) 342-4000
BEARDSLEY RUML 2ND/ 3045 ORDWAY STREET NI~/ WASHINGTON DC 20008/ (202) 244-3534
THOMAS A. MARCINIAK/ 8315 N. BROOK LN. 1903! BETHESDA ~m 20014/ (301) 654-7970
TIMOTHY SHAW/ EPA PROJECT OFFICEI cmmET/ 5185 MACARTHUR BLVD. I WASHINGTON DC 200161 (202) 244-1900
PETER BOCK/ DEPT OF ElEC ENCR & COMP SCI/ GEORGE WASItINGTml UN IV./ 725 23RD ST NW/ ',j'ASHI~GTOU DC 20052/ (202) 676-6093
STEVE O'KEEFE/ 7424/ U.S. CUSTOMS DATA CENTER/ 1301 CONSTITUTI ON AVE. N.W./ WASHINGTON DC 20229/ (202) 566-5447
JUSTIN C. WALKER/ SYSTEMS & SOFTWARE OIV./ A-264 BLDG. 225! NA TIONAL BURF.AU OF STAlmARDS/ ',j'ASHINGTON DC 20234! (301) 921-3lI91
ANlt MURPHY/ COUPUTER SCIENCE CENTER/ 2317 PROGRAli. LIBRARY/ U a F MARYLAND/ COLLEGE PARK MD 207421 (301) 454-4262
F. T. BAKERI IBM FEDERAL SYSTEMS DIV./ 18100 FREDERICK PIKE/ G AITHERSBlJRG MD 20760/ (301) 840-0111
FRANK E. MCGARRY/ GODDARD SPACE FLIGHT CENTBR/ NASAl COOE 582. 1/ GREENBELT MD 20771/ (301) 982-5048
ATTN: COtlPUTER SCIP..NCE PRESS INC./ 9125 FALL RIVER ROAD/ POTOH AC MD 20854/ (301) 299-2040
HORNG JYR UANG/ CONTROL DATA CORP. I U51 SEVEN-lOCKS ROAD/ RO CKVILLE MD 20854/ (301) 340-3883
lEOt~RD BUSTOGKI 820 LOXFORD TERRACE/ SILVER SPRING MD 20901/ (301) 593-3218/ (301) 496-3204
Jom~ LATRAsn/ 1001 CPR.ING ST. - , 10071 SILVER SPRING HD 20910 / (301) 588-7894
BRUCE MAC ANASPlEl 600 N. HICKORY AVE. - APT. 181 BEL AIR MIl 21014
ROBERT W. HARRIS/ COlUUNICATIONS AND SIGNAL PROCESSUG/ MAR AS SOCIATES nlC./ 1702 FAT.LSWAY DRIve/ CROFTON MD 21114/ (301) 261-0780
C!lARLES B. SHIPMAN JR./ 2205 SANDBURG ST./ DUNf~ LORING VA 2202 7
PETER N. ROTH/ 11146 HALTESE LANE/ FAIRFAX VA 22030
GENE SitooNSI 9514 FARMVIEM CT/ FAIRFAX VA 22030
ARNOLD SHORE/ 4607 BRIAR PATCH CT./ FAIRFAX VA 22032
HARK. S. WATERBURY/ 2961 PATRICK HENRY DRIVE 1201/ FALLS CRURCII VA 220441 (703) 5·32-8119
W. ASHBY BOAZ/ BlOO.BXA/2/ TRW INC./ 7600 COLSHIRE DR./ MCLEAN VA 22101/ (703) 893-2000
LARRY DUBY/ 1724 N. QUINN ST. APT 305/ ARLINGTON VA 22209
FRANK LI~SAY/ BUNKER RAMO CORPI 1500 WILSON BLVD. SUUE 4001 ARLINGTON VA 22209
DAVID J. MCKEE/ ADVANCED COl'lPUTER TECHNIQUES/ 1501 WILSON BLVO ./ ARLINGTOU VA 22209/ (703) 524-8330
PHILIP GAUDETTE/ SOFTWARE RESOURCES/ P.O. BOX 2015/ AI.EXANDRIA VA 223011 (703) 548-2866
HARTMUT G. HUBER/ P.O. BOX 111/ DAHLGREN VA 22448/ (703) 663-8 656
LINWOOD FERGUSON! 2605C UYTJROLlC IUh/ CHARLOTTESVILL VA 22901/ (804) 293-7816
R. LEOrtARD BROWN/ DAUACS/ THORNTOtT HALLI UNIV. OF VIRGINIA/ CH ARI.OTTESVllL VA 22903/ (804) 924-7201
DOUGLAS DUN1..oP/ 1502 COnWAY nRIVE - APT. 1031 WILl.IAMSBURC VA 23185

o

PASCAL NEWS #12
!.]2i.\4

23601
2(,502
27410
27514
29208

30312
)0)32

32)06
32407
32548
32601
32901
33313
35223
35801
35805
37916
38103
)8138
)8163
)8677

40222
43023
43202
43214
44119
44839
450)6
45241
46989
47119
41374
47401
47401
47904
480la
48105
48105
48106
48109
48197
48859
48864
50)04
50701
52242
52404
53201
53212
53706

53706
53].15
54701
55112

55113
55113
55119
55165
55343
55)64
55(,08
5541)

55413
55414
55419
5')423
55432
55435
55435
55455
55(,55
55455
55455
55/.55
55901
55901
5.5901
58102
59812
60005
60025
60201
60439
60532
60601
60611
60626
60919
61401
61801
61801
62026
62704
63110
63166
64138
64151
66502
66762
68005
6813(,
68154
6850B

68583

68588
69626
70118
70360
72143
73019
73102

73501
74104
74171
75006
75080
75207
75229
75229
75231
75235

75248
76010
77005
77025
77098
77459
77840

77843
78205
78284

JUNL 1978

PAGE 14

AW; iJ. ~A,'l!l',i~:l\);U OfFICE lli" CO:1.I?TUe ACTlVITlES/ VlH.Gl~lA CI)I1:1 t)~l'AEALTIl U!HVEKSU''f/ 1015 FLOYD AV1~./ J{IC!Hliji'l\} VA 2)29.,!tl (dU/.) 77oJ-6)'31)
596-7272/ (804) 827-2929
RICKY w. BUTLP-R/ 132 WOODS ROAn/ NEW'PORT NEWS VA 23601! (804)
DAVID A. BOUGH/ 223 BRYANT RD./ LYNCHBURG VA 24502/ (804) 237- 5508 (!lOME)! (804) 384-5111 X2280 (WORK)
WILLIAM L. MCLAI~ Ill! COtiP SVCS/ GUILFORD COLLEGE! 5800 W. FR n:NDLY AVE./ GREENSBORO IIC 27410/ (919) 292-5511 X139
STEVEN U. BELLOVHI/ DBPT. OF COliP. SCI./ U OF NORTH CAROLINA! CHAPEL /lILL NC 27514/ (919) 933-7240
ROBERT L. CANNON! DEPT. OF MATH. AND cmtp. SCIENCE! mWI. OF 5 O. CAROLINA/ COLlIl1BIA SC 29208
ATTENTIOrl: JERRY W. SEGERS/ OFFICE OF COHPUTING SERVICES! GEOR GIA INSTITUTE OF TECHNOLOGY/ ATLANTA GA 30332! (404) 894-4676
RICHARD LEBLANC/ SCHOOL Of INFO. AND COUP. SCI./ GEORGIA TECH/ ATI.ANTA GA 30332/ (404) 894-2592
R. GARY LF.E/ DEPT. OF MATIt./ 113 LOVE BUILnI~G/ FLOHIIJA STATE U! TAJ.LAHASSEE FL 32306/ (904) 644-41.19
ANNA WATSON! 3705 DELWOOD DRIVE/ PANAI1A CITY FL 32407/ (904) 2 34-2507
MICHAEl. D. WEINSTOCK/ 112 KNOLLWOOD WAY! FT. WALTON FL 32548
SCOTI CRUMPTO!l/ 11130 N.W. 9 PLACE/ GAINESVILLE FL 32601/ (904 ) 375-7952
T. M. CA.'-fRRON/ TR3/1! HARRIS ESD/ P.O. BOX 37/ MELBOURNE FL 32 901/ (305) 727-4629
ERICI! R. KNOBIL/ PRODUCT DEVELOPMENT/ SYSTF..MS ENGINlmRISG LABS .! 6901 WEST SUNRISE BLVD./ FT. LAUI)EItDALE FL 33313/ (305) 587-2900
JEFFREY
GRAHAM/ GRAHAl'!. C0I1PUTER ENTERPRISES INC./ 3 OFFICE PARK CIR. - surn: 106/ BIRHINGHN1 AL 35223! (205) 870-7267
PEr !ISlA! 3300 O'HARA DR./ HUNTSVILLE AL 35801! (205) 895-6088
L. R. !1ARKER! DEFENSE AND SPACE SYSTE~tS/ TRW/ 7702 GOVERNORS D R. WEST! HUNTSVILLE AL 35305/ (205) 337-3950
ATTENTION: GORDOll R. SHERI1A.o~! CO!tPUTER CENTER/ 200 STOKELY 11GH T. CENTER/ U OF TENNESSEE! KNOXVILLE TN 37916/ (615) 974-6721
ROBERT 11. SliEENEY/ ELLERS FANNUG OAKLEY CHESTER & RIK~;! 722 F ALLS BUILIH~G/ HE:'!PIIIS TN 38U))/ (901) 526-7321
JA:W.S CRAIG Zlf'.GLER/ 1455 LANCASTER DR./ M~;MPll.IS TN 38138
JOE LERNER/ DEPT. OF PATHOLOGY/ muv. OF TENNESSEE! 858 !1ADISO N AVE./ MEMPHIS TN 38163! (901) 528-6320
ATTN: DEPT. OF COMPUTER SCIENCE/ U OF MISSISSIPPI/ UNIVERSIT'l HS 38617
JA11ES W. HOLT JR./ 7705 NORWOOD OR./ LOUISVILLE KY 40222! (502 ) 425-6729
JI:1 CAliEKON/ DEPT. OF MATH SCIENCE/ DENISON UNIVERSITY! GRANVI LLE OH 43023/ (614) 587-0810 X582
ROBERT RANSDELL! 619 HARLEY DRIVE APT. 5/ cOLIJ~nms 011 43202
RICHARD E. ADAI1S/ 239 CHATllA11 ROAD/ COLUMBUS DB 43214/ (614) 2 67-8068
DAVIn PESEC/ 21030 MILLER AVENUE/ EUCLID OR 4l1l19! (216) 486_8070
R. L. PALASEK/ DEPT. OF APPLIED SCIENCES/ BOULING GREEN STATE UNlV./ 901 RYE BEACH ROAD/ HlJRotr on 4l.839
ATTN: BETTE BOLLING-LI8RARIAN/ TECHNICAL INFORiiATION CTR-ELECT RONICS/ CINCINNATI MIl.ACROU INC.! LEBANON 011 45036/ (513) 494-5320
FRAI~CIS H. BEARDEN/ DATA SYSTE}tS! CINCIII/NATI ELECTRONICS CORP. / 2630 GLENDALtHllLFORD ROAD/ CI;o;CINllATI OH 45241! (513) 563-6000
R. I-IALOO ROTH/ Cot1PUTER SCIENCE DEPT! TAYLOR UNIVERSITY! UPLAN D IN 46989/ (317) 998-2751 X269
AHDREW S. PUCHRIK/ 11lQ ANDREA DR./ FLOYDS KNOBS I"t 47119! (502) 582-4397
GEORGE A. R. SILVER/ DEPT. OF HISTORY/ EARLHAM COLLEGE/ RICINO NO IN 47374! (317) 962-6561
ANN BARDIN/ WRUBEL COl1PUTING C~;N"TER/ HPER BUILDI~G/ INDIANA UN IV./ BLOOI1INGTON IN 47401/ (812) 337-1911
FRANK PROSSER/ COtiPUTER SCIENCE /'lEPl'./ 10'1 LINDLEY HAf.L/ INDIA NA UNIVERSITY/ BLOOlIINGTUN IN 47401
HOWARD cU!mI~GHAM/ 914 NORTH 21ST STKEET/ LAFAYETTE I~ 47904/ (317) 447-640J
SIIAUN DEVLIN/ 6854 CEDARBROOK/ BIRMINGHAM HI 48010
KURT METZGER/ 478 CLOVERDALE/ ANN ARBOR MI 48105
DONALD D. REDDING! MOSI/ 42')1 PLYMOUTH ROAn! ANN ARBOR MI 4810 5/ (313) 995-6118
JA:>1ES D. ROGAN/ COHSHARE INC./ P.O. BOX 1588/ ANN ARBOR In 481 06! (313) 994-4800
E. SWEET/ COHPUTlNG CENTER/ mlIv. OF lUCHIGAN-~IORTH CAMPUS! 1075 BEAL AVE./ ANN ARBOR 111 48109
JOHN Ii. REaHERS! DEPT. OF lolATHEMATICS/ EASTERN MICHIGAN UNIV.! YPSILANTI '11 48197/ (313) 487-1290
FREEMAN L. MOORE! DEPT. OF cO!tpurr:R SCIENCE/ 203-8 PIERCE HA.LL! CENTRAL HICIIIGAU UNIV./ H!. PLEASANT HI 48859/ (517) 774-3922
ALLAN HOLUF/ 2317 K.'lOB HILL APT. 9! OKE!I)S !iI 48864
KENNETH KAPLAN/ mCRQllARE SYSTEMS CORP/ P.O. BOX 954/ DES MOIN ES IA 50304! (515) 265-6121
HICHAEL RODBY/ 322 DEVONSHIRE/ WATERLOO IA 50701/ (319) 233-5796
ATTN: SERIALS DEPT.! UNIVERSITY LIBRARIES/ UNIVERSITY OF IOWA/ IOllA CITY IA 52242
MICRAEL WIMBLE! 6026 UNDERIWOD AVE. s.w./ eEDAR RAPInS IA 52404! (319) 396-5641
DAVIO E. ANDERSQ!t/ JOHNSON CONTROLS INC.! 507 E. MICHIGM AVE. / MIl.WAUKEE WI 53201/ (414) 276-9200
ALAN M. SHERKOW/ 1211 EAST Sl'lGER CIR. APT. #4/ MILWAUKEE WI 53212/ (414) 332-9533
A'ITN: FRIEDA S. COHN! ACADE1UC COUPUTING CENTER! U OF WIseONSI N! 1210 U. DAYTON ST.! MADISON UI 53706/ (608) 262-2055
MARK HORTON/ COtlPUTER SCIENCE DEPT./ UNIV. OF WISCONSIN/ 1210 1-1. DAYTON ST./ MADISOIl WI 53706/ (608) 262-1079/ (608) 238-1%6
WILL LELAND/ 445 N. LAKE ST./ MADISON WI 53715/ (608) 257-4035
GREG MORRIS/ 1705 WlLsml ST./ EAU CLAIRE WI 54701/ (715) 835-6324
GERALD F. UHLIG/ 3545 o\/ASSO ST. APT. HO/ SHOREVIEW MN 55112! (612) 483-9714
ATTN: INFORMATION SERVICE CENTER/ SPERRY-UNIVAC! 2276 HIGH CRE ST DRIVE/ ROSEVILLE UN 55113
DAVID GARDNER/ 1730 LARPENTEUR - APT. 3C/ ST. PAUL ~[N 55113/ (612) 646-5479
GARY BECKWITH./ 2199 GLENRIDGE AVE./ ST. PAUL MN 55119/ (612) 853-5235
LEO J. SLECHTA/ DSD/ SPERRY UNIVAC/ BOX 3525 liS UIU25/ ST. PAU L HN 55165! (612) 456-2743
CLIFFORD GERSTENIIABER! DEFENSE SYS'rEMS/ MNIl-2120/ HONEYWEI.L/ 600 SECOHD ST. N.E.! HorKINS 1111 55343/ (612) 542-4940
CLARENCE LEIIHAN/ 5926 GUUWOOD ROAO/ MOUND HN 55364/ (612) 472- 1405
ABDUL RASAQ BELLO/ P.O. BOX 868t'1 lHNNEAPOLIS M.~ 55408/ (612) 310-4106
MIKI-: KAHRAfl/ HONE'{WELL AVlO!IICS/ 2600 RIIJGWAY PKW'{/ tU~IlEAPOLI S liN 55413/ (612) 373-5)28
STANLEY C. VESTAL/ I>1S 231.0/ HONEYWELL INC./ 2600 RIDGWAY PKWY.! 11INNEAPOLIS liN 5%13/ (612) 378-5046
THm{ HOARD! P.O. BOX 141.13/ MIVNEAPOLIS MN 55414! (612) 376-6290
GENI': H. OLSON/ 5149 ALIlRICH AVE. S.! }HNlfEAPOLIS HN 55t.I~/ (612) 824-9108
IHLLIAl1 J. LEE/ 7J20 FIttST ,1 UNIV.! COLLEGE STA. TX 77843/ (713) 8l.5-5531
JON D. ROLAND/ MICRO MART! 1015 NAVARRO/ SAN ANTONIO TX 78205! (512) 222-1427
JOHN SIGLE/ TRINITY UNIV./ P.O. BOX 237/ SAN ANTONIO TX 782R/./ (512) 736-7236

w.

PASCAL
78712
78136

18761
78769
78769
80033
80204
80220
80)02
80306
80401
80401
80523
80901
83704
84047
84102
84121
85002
85005
85712
85721

86301
87106
87108
87545

87545
87801
88003
89154
89503
89507

89557
90025

90026
90010
90210
90250
90706
91103
91103
91109
91125
91311
91330
91360
91711

91789
92037

92093
92093
92093
92109

92127
92138

92138
92277
92501
92506
92624
926)4
92634

926)4
92660
92701
92701
92705
9271)
92714
92714
92717
92805
93010
93017
93017
93407
93407
93454
93940
93940
94010
94022
94025
94040
94040
94043
94086
94086
94086
94086
9',087

NE\~S

JUNE) 1978

#12

PAGE 15

JAHES L. PETERSON/ DEPT OF COtlPUTER SCIENCES/ PAI~n:1t HALL/ UN IV. OF n:XAS - AUSTIN/ AUSTI~ TX 78712/ (512) 471-435)
DAVID n. PHILLIPS/ 6922 THOUAS SPRINGS RD./ AUSTIN TX 78736/ (512) 471-7202
ED NAYLOR/ P.O. BOX 15103/ AUSTU IX. 78761/ (512) 451-0342
DAVID N. GRAY/ MS 2188/ TEXAS INSTRUMENTS/ P.O. BOX 2909/ AUSTIN TX 78769/ (512) 258-7406
EDUARD C. HUMPHREY/ M.S. 2201/ TEXAS INSTRUIfE..~TS IN'C./ P.O. BOX 2909/ AUSTIN TX 78769/ (512) 258-72B9
LITLE JOHNSON/ 8951 W. 46TH PLACE/ WHEAT RInGE
80033
GERHARDT c. CLEHENISON/ DEPT. OF CotlP. AND HeMT SCIENCE/ METRO POLIIAN STATE COLLEGE/ 1006 11TH SIREET BOX 13/ DENVER CO 80204/ (303) 629-3122
HOWARD L. TlIRETZKY/ HYDRA! 1575 IVANHOE ST./ DENVER CO 80220/ (303) 333-2892
DAVID PICKENS/ DEPT. 50J/ BLOG. 023/ IBM CORP./ P.O. BOX 1900/ BOULDER CO 80302/ (303) 447-5844
ZIlAHAI STEWART/ P.O. BOX 1637/ BOULnER CO 80306/ (303) 443-7279
H. W. EGDORf/ P.O. BOX 226/ GOLDEN CO 80401/ (303) 234-3994 (WORK)
HERB RUSENSTEIN/ 1036 6TH STREET/ GOLDEN CO 80401/ (303) 278_3469/ (303) 458-5900 X202 (WORK)
PATRICIA R. IDHILNER/ DEPT. OF COUPUTER SCIENCE/ COLORADO STAT E UNIV./ FORT COLLINS CO 80523/ (303) 491-7137
GREI; BOURQUE/ IiEWLET't PACKARD/ P.O. BOX 2197/ COLORADO SPRIN CO 80901/ 003} 598-1900
ED HIRAHARA/ 11207 MUSKET ST./ BOISE 10 83704/ (208) 376-6000 X2574/ OR X3989
JOliN A. BRIGGS/ 837 EAST 6775 SOUIH/ MIDVALE UI 84047/ (801) 292-8000
RICHARD Y. KREUTZER/ 644 ELIZABETH ST./ SALT LAKE CITY UT 84102/ (80l) 583-5202/ (801) 486-3351
W. F. HAYGOOD/ COlfPUTBR SERVICES CO./ 7822 OAKLEnGE ROAD/ SALT LAKE CITY U1' 84121
S. JOHNSON/ ECS/ MARIOPA CO. COt-1M. COLLEGE/ P.O. BOX 1])49/ PHOENIX AZ 85002
ALLEN BERGLUND/ MS K-28/ P.O. BOX 6000/ PHOENIX AZ 85005/ (602) 249-7466
MICHAEL A. HOUGHTALING/ UNIV. OF ARIZONA/ 340l N. COLID1BUS APT. 17-B/ TUCSON AZ 85712/ (602) 884-4219
STEVE JAY/ COIfllUTER CENTER/ UNIV. OF ARIZONA/ TUCSON AZ 85721/ (602) 884-2239
FULTON WRIGHT JR./ COMPUTER SERVICES/ YAVAPAI COLI.EGE/ PRESCOTT AZ 86301/ (602) 778-1990
REESA ABRAMS/ FALCON RESFARCH AND DEVELOPMENT/ 2350 ALAMO S.E. - "200/ ALBUQUERQUE NH 87106/ (505) 843-6101
STEPHEN C. WOOD/ MICROSOFT/ 819 TWO, PARK CENTRAL TOWER/ ALBUQU ERQUE NM 87108/ (505) 2%-3600
ROBERT T. JOHNSON/ C-ll MAlI. STOP 296/ LOS ALAMOS SCIErnIFIC LABORATORY/ P.O. BOX 1663/ LOS ALAMOS NM 87545/ (505) 667-5014
WILLIAM If. SEIFERT/ KS 532/ LASL/ P.O. BOX 1663/ LOS ALAHOS NM 87545
T. A. NARTKER/ U'EPT. OF COHPUTER SCIENCE/ NEW MEXICO TECH/ SOC ORRO tlH 87801/ (505) 835-5126
JOSEPH EINWECK/ P.O. BOX 3824/ LAS CRUCES NM 88003/ (505) 523- 5377
ATTN: PROGRAJOONG ADVISOR/ SOUTHERN NEVADA COHPUTING FACILITY/ UNIV. OF NEVADA - LAS VEGAS/ 4505 HARYLANn PARKt~AY/ LAS VEGAS NV 89154/ (702) 739-3557
DARRYL KUHUS/ 1590 HILLSIflE DR./ RENO NV 89503
ATTN: PROGRAMMING ADVISOR! UNS COHPUTING CENTER/ 22 WR/ U OF NEVADA! BOX 9068/ RENO NV 89507/ (702) 784-4008
E. MAURICE BEESLEY/ DEPT. OF HATHEMATICS/ 227 SEM/ UNIV. OF NEVADA-RF.:NO/ RENO NV 89557/ (702) 784-6773
LAUREN WEINSTEIN/ 12320 TEXAS AVE. 1112/ LOS ANGELES CA 90025/ (213) 826-5766
R. F. TAYLOR/ 1509 SARGENT PLACE/ LOS ANGELES CA 90026/ (213) 488-02B8
MELVIN L. NORELL/ PROGRAMMA CONSULTANTS/ P.O. BOX 70127/ LOS ANGELES CA 90070/ (213) 243-0810
LEE n. AURICH/ 5650 sumlER WAY II 116/ CULVER CITY CA 90230/ (2 13) 649-4404
DAVID INTERSIMONE/ SOFTWARE t."NGINEERING SECTION/ TRW - CS&S/ 12911 SIMMS AVE./ HAWTHORNE CA 90250/ (213) 536-4286
CARSOll GERHAN/ 9615 WALNUT ST./ BELLFLOWER CA 90706/ (714) 871-3232 X2068
CHARLES L. LAWSON/ JET PROPULSION LABORATORY/ MS 125/128/ CALI FORNIA INSTITUTE OF T~:CHNOLOGY/ 4800 OAK GROVE DR./ PASADENA CA 91103/ (213) 354-4321
w. o. PAI~E/ ~S 83-101/ JET PROPULSION LAB./ 4800 OAK GROVE DR./ PASADENA CA 91103/ (213) 354-4284
ATTN: LIBRARY/ BURROUGHS CORP./ 460 SIERRA MA/)RE VILLA/ PASADENA CA 91109/ (213) 351-6551 X505
KARL FRYXELL/ DIVISION OF BIOLOGY/ 216-76/ CALIFORNIA INST. OF TECH./ PASADENA CA 91125/ (213) 795-6811 X2818
tmt SANIHl.RSON/ MICRO SYSTEMS DIVISION/ MAIL STOI? 63-02/ PERTEC COf.1PUTER CORP./ 20630 NORDHOFF/ CHATSlmRTH CA 91311/ (213) 998-1800 X256
RUSSEL J. ABBOTT/ DEPT.
COMPUTER SCIENCE/ CALIF. STATE UNIV. - NORTHRIDGE/ 13111 NORDHOFF STREET/ NORTHRInCE CA 91330/ (213) 385-33913
ELIZABETH IBARRA/ 432 E. WILBUR RD 11104/ THOIJSAND OAKS CA 91360/ (805) 488-4425
TONY NOE/ COMPUTING/ HARVEY MUDD COLLEGE/ CLARE110UT CA 91711/ (714) 626-8511 x2897
JUDY HERROIl/ MT. SAN ANTonIO COLLEGE/ 1100 NORTH GRAND AVENUE/ WALNUT CA 91789/ (714) 598-2811
DAVID K. BROWN/ 5709 ABALOm: PLACE/ LA JOLlA CA 92037/ (714) 293-6072
ATTN: STUnENT COHPUTING COOP/ APIS DEPT/ C-014/ muv. OF CALIFORNIA - SAN DIEGO/ P.o. BOX 109/ LA JOLLA CA 92093/ (714)- 452-4723
RICHARD KAUFMAN/ INSTITUTE FOR INFO. SYSTEMS/ C-021/ mHV. OF CALIFORNIA - SAN DIEGO/ LA JOLLA CA 92093/ (714) 452-4723
KEITH ALLAN SHILLI~GTON/ INSTITUTE FOR INFORMATION SYSTE."1S/ UC SD HAILCOOE C-021/ LA JOLLA CA 92091/ (714) 452-4721
TOM KNOCHE/ 2061 REEn/ SAN DIEGO CA 92109/ (714) 270-7099
JOSEPH w. SHITR/ NCR/ 16550 WEST BER!'l'ARDO DR./ SA.1i DIEGO CA 92127/ (714) 485-2864
w. E. CLARK/ DEPT. 244/ P.O. BOX 80158/ SAN DIEGO CA 92138/ (7 1I~) 455-1330 x148
SCOTT T. DAVIDSON/ LOCICOtO P.O. BOX 80158/4010 SORRENTO VALLEY B/ SA.~ DIEGO CA 92138/ (714) 455-1330 X348
A. PAUL CROONENBERGHS/ 74415 CACTUS DRIVE/ TWENTY-9 PALM.S CA 92277
DAVID H. WELCH/ P.O. BOX 207/ RIVERSIDE CA 92501/ (714) 338-4636
BRUCE YALE/ 15840 SADDLEBACK RD./ RIVERSIDE CA 92506/ (714) 78 0-7624
WILLIAI1 J. ARTHUR/ 26016 VIEW PorNT DRIVE EAST/ CAPISTRANO BCH CA 92624/ (714) 493-5453
K. w. BIXBY/ BF.cKM:AN INSTRUMENTS/ 2500 HARBOR BLVD./ FULLERTON CA 92614/ (714) 871-48/,8 X1193
TOt! SNYDER/ BLDG 606/M116/ HUGHES AIRCRAFT CO./ P.O. BOX 3310/ FULLERTON CA 9261/,
JA11ES H. WELLS/ BLDG. 606 - MS K212/ HUGHES AIRCRAFT/ P.O. BOX 3310/ FULLERTIHI CA 92634
ROCER SIPPL/ 1306 TOYON LANE/ NgWl'ORT BEACH CA 92660/ (714) 642-8977
DAVID A. BEf:RS/ 1050 CABRILLO PARK OR. APT. 34A/ SANTA ANA CA 92701/ (714) 5/,3-6075
RONALO C. WIlIns/ 1090 CABRILLO PARK DR. - APT. 64A/ SANTA ANA CA 92701/ (714) 974-0ROO

co

or

95014
95014

O,JIIALll V. MYllKA/ 14142 Gr~RSf\oN PL/ SAr'nA AJ'lA CA 92705/ (714) 544-5314
ERIC OLSEN/ MINICOMPUn:R OPERATIONS/ SPERRY unIVAC/ 2722 lUCJt£LSON DRIVE/ IRVINE CA 92713/ (714) 833-2400
SHERRY L. C.I.:t1ERON./ PERTEC CatlPUTER CORP./ 17112 ARMSTt<.OUG/ IRV INE CA 92714/ (714) 836-4592
RICHARD P. SPRAGUE/ PERTEC COHPUTER CORPORATION/ 17112 ARHSTRO NC AVE./ SANTA ANA CA 92714/ (714) 540-83/,0
DENNIS J. ~INE/ ICS DEPT./ UNIV. OF CALIF. - IRVINE/ IRVINE CA 92717/ (714) 831-5233
JAHES D. LETZ/ GENERAL AUTOUATIOn INC./ 1055 S. EAST STREET/ A NAHEIH. CA 92805/ (714) 778-4800 X261
MARK JU~lG(nRTU/ 5408 E. HOLLY RInGE DR./ CAUARILLO CA 93010
ANDY HARRINGTON/ 218 SAN NAPOLI/ GOLETA CA 93017/ (805) 968-69 34 (HO~1E)
RON JEFFRIES/ 651 ARDHORE/ GOLETA CA 93017/ (805) 964-8964
CLE!IENT L. DICKEY/ COHPUTER CENTER/ CALIF. POLYTECH. STATE mil v./ SANLUIS OBISPO CA 93407/ (805) 546-2004
RICK GILLIGAN/ COlll'U'fF:R CENTER/ CALIF. POLYTECH. STATE UNIV./ SANLUIS OBISPO CA 93!,07/ (805) 546-2004
DAVID II. SALLUME/ 945 VIA FARCO/ SANTA MARIA CA 91454/ (805) 937-4541
R~ER CREAliER/ cn/ MCGRAW HILL/ DEL MONTE RESEARCH PARK/ HONT EREY CA 91940/ (408) 649-8400
LES VOGEL/ 366 VAN BUREN - APT. 1./ MONTEREY CA 93940/ (408) 375-4245
JOHN R. BOGAN/ 1201 VANCOUVER AVE./ BURLINGAME Ci\ 94010/ (415) 343-5/,52
JAHES B. Otnx/ 1240 HONTt VERDE COUR!/ LOS ALTOS CA 94022/ (415) 961-8825
DAVID F. FRICK/ 920 PEGGY LANE/ MENLO PARK CA 94025/ (415) 329 -1013
BRUCE J. EmIUNDSON/ 575 s. RENGSTORFF AVE. - APT. 62/ ~'IOUNTAIN VIEW CA 94040
IRVINE L. MCKNIGHT/50S CYPRESS PT. DR. APT. 52/ MOUNTAIN VIEW CA 940i,0/ (415) 967-0414
BYRON !lALE/ 813 FARLEY ST./ MT. VIEW CA 94043
ATIN: UNBOUNDED Cm1PUTING/ 667 TOYON AVE./ SUNNYVALE CA 94086/ (408) 247-3182
STEVE MCF!':RRIN/ BENDIx: FIELD ENGINEERING/ 155B HOFFEn PARK DR ./ SUNNYVALE CA 94086
Jll1 MERRITT/ 655 SO. FAIROAKS AVENUE APT L-216/ SUNNYVALE CA 94086/ (408) 733-6112
RONALD H. PERROTT/ INSTITUTE FOR A!)V.\NGEl) CO'1PUTATION/ P.o. BO x 9071/ SUNNYVALE CA 94086/ (408) 735-0635 X27J
R. STEVEN GLANVn,LE/ 15)1 SANDPIPER CT./ SUtlNYVALB CA 94087/ ( 408) 241-6294
CHARLBS T. LEIS/ 560 H!I)DLEBURY OR./ SUNNYVALE CA 94087
ROBERT J. RAKER/ PACIFIC GAS & ELECTRIC CO./ 1 POST ST. _ NO. 2200/ SAN FRANCISCO CA 94104
LYALl. M.ORRILL/ 705 NOg STREET/ SAN FRANCISCO CA 94114/ (415) 647-8518
WILLIAli R. LLOYD/ 3190 CLAY STREET/ SAN FRANCISCO CA 94115/ (4 15) 556-2235
ROLAND L. Lf.E/ 645 35TH AVE/ SAN FRANCISCO CA 94121
SIIARLEgN WONG/ 151 '{ADISO~j STREET/ SAN FRANCISCO CA 94134/ (41 5) 586-2467
ATIN: LIBRARY - COpy 2/ BIN 82/ STANFORD LINEAR ACCELERATOR CT R./ P.9. BOX 4349/ STANFORJ) CA 94305
JOHll BANNI"lG/ MAIL DROP 88/ STANFORO LI~EAR ACCELERATOR CENTER / P.O.BOX 4349/ STANFORD CA 94105/ (415) 854-3300 X2802 (OFFICE)/ (415) 325-9226 (HOllE)
SASSAN IlAZEGHI/ P.O. BOX 4526/ STANFOlID CA 94305/ (415) 354-33 00 X2359
SUSAN S. OIHCKI/ DIGITAL SYSTEHS LABORATORY/ STANFORD UNIVEHSI TY/ S'fANFORD CA 94305
CHRIS K. PHILLIPS/ P.O. BOX A-C/ STANFORD CA 94305/ (415) 493- 2977/ (408) 988-1450
SCOTT WAKEFIELD/ DIGITAL SYSTEMS LABORATORY / STANFORD UNIV./ STANFORD CA 94305
TIHOTHY n. JACKINS/ 585 ASHTON AVE./ PALO ALTO CA 94306/ (415) 494-0467
PING K. LIAO/ 2499 CO!lSTELLATIOtl DR./ HAYWARD CA 94545/ (415) 494-3942 X577 (WORK)
C. W. CHILflERS/ P.O. lhlx 761/ LIVERHORE CA 94550/ (415) 422-2779
DOUGLAS N. JOH!lSQtl/ LONGS DRUG STORES/ 141 N. CIVIC DRIVE/ \~AL NUT CREEK CA 94598/ (415) 937-1174
JAllES A. STARK/ 485 34TH STREgT/ OAKLAWD CA 9/1609/ (415) 658-2 566
FRANK w. OECHSLI/ CHILD UEALTH & DEVELOP!1ENT/ UlIlV. OF CALIF. - BERKt:LEY/ 3867 HOllE ST./ OAKLAND CA 9/,611/ (415) 655-79r~7
DOUG FORSTER/ 1133 OAKLAND AVENUE/ PIEntlONT CA 94611
MICHAEL L. SImON! 6013 HARIMOD AVE./ OAKLAND CA 94618
ERIC I-lOGSBERG/ COHPUTER TECHNOLOGY/ 6041 LAWTotT AVE./ OAKLAND CA 94618/ (415) 653-4841,
RICHARD W. HAHILTOIl/ 1249 \1. BROAnlJAY/ EUGENE. OR 94702
JOHN ~'IEDCALF/ COl~CEPT SOF'fIJARE/ 1842 SAN ANTONIO AVE/ BERKELEY CA 94707/ (415) 526-40)5
SUSA.'1 L. GRAHA;1/ COI1P. SCI. DIVISlotl-EECS/ 511 eVANS HALL/ U 0 F CALIFORNIA/ BERKr:LEY CA 9/~720/ (415) 642-2059/ 642-1024 UESSAGES)
MICHAEL C. AR!-lSTRONG/ EMGER HETER INC./ 150 E. STANDARD AVE./ RICHHOND CA 94804/ (415) 233-8220
ROBERT M. 'BAER/ 379 COUNTRYVIEW DRIVE/ ~nLL VALLEY CA 949/+1
JOHN WALKER/ }!ARINCHIP SYSTEHS/ 16 ST. JUDE ROAD/ MILL VALLEY CA 94941/ (415) 383-1545
BRUCE WOLF!':/ 71 SUNSHINE AVE./ SAUSALITO CA 94965/ (415) 332-6 242
DAVID J. BELL/ :llCRO-SYSTEtIS ENGINEERING/ 609 CRAIG AVE./ CA.'1P BELl. CA 95008/ (408) 379-53/,1/ (408) 379-2498
ATTN: CUPERTI:-iO LIBRARY/ H~:\·TLF.TT PACKARD/ 11000 HOLFE lWAIl/ CU PERTINO CA 95014
MICHAEL J. COOK/ 1658
ST!':LLING/ CUPERTINO CA 95014
BILL FINCH/ DATA TER!1BALS DIV/ HEWLETT PACKARD CO/ 19400 BOHE STEAD RD/ CUPERTINO CA 95014/ (408) 257-7000
DAVID F. OIiL/ P.O. 'BOX 257/ CUPERTINO CA 95014/ (408) 926-9803

95014
95014
95:))0
95030
95050
95050
fJ')oSI

RICHARD PALCHIK/ T'lMtlET/ 10261 BUBB ROATJ/ CUPERTHIO CA 95014/ (408) 4/.6-6652
JIM SCHULTZ/ HEWLETT PACKARD/ 11000 ImLFE RD - 42U/ CUPERTINO CA 95014/ (408) 257-7000
DON GIU10RE/ GILHORE ASSOCIATES/ P.O. BOX 1723/ LOS GATOS CA 9 5'130/ (408) 395-4800
C. DUDLEY WARNER! 16145 LOS GATOS BLVD. - II 41/ LOS GATOS CA 9 5030
JOliN CARnR SR./ 3796 PIN1~WOOD PLACE/ SANTA CLARA CA 95050/ (408) 9B8-2629
BRUCE SHERRY/ 1601 t~ARB1JRTON AVE. - APT. 12/ SANTA CLARA CA 95 050
RONALD L. DANIELSON/ DEPAR'NRNT OF RECS/ UNIVERSITY OF SAtlTA C LI\RA/ SA!HA CLARA CA 95051/ (408) 9S4-41BI

94087

94104

94114
9411 '5

94121
94134
94305
94305
9/,305
94305
91.305
94305
9',306
94545
%550
94598
94609
94611
94611
94618
946HI
94702
94707
94720
94804
94941
94941
94965
95008
95014
95014

s.

PASCAL NEWS #12
95051
95051
95051
95051
95051
95051
95051
9506!,
95070
95118
95120
95126
95129
95819
95926
95929
95929
97005
97005
97051
97070
97077
97077
97077
97106
97213
97229
97330
97331
97401
97403
97420
98033
98040
98107
98507
98632
99210
2033
2049
2308
2600
2616
3083
3165
3216
6009
A-4060
6-2510

B2G
IllG
H3C
H3C
114T
JIK
JIK

ICO
3S5
3J7
3J7
1~1

LOC
L5L
LSN
L5N
loBS
i'\3!1
114R
M5!1
H5v
ti2L
R3E
S 7N

2R1
2Rl
6N5
3N6
IJ 1
1KO
2E9
1K7
lK7
ilKI
3B9
IV2
JW6
289
3G 1
OW3
OWO

T211

1~4

K1~

K7L
K9K

V4M )T9
V~3P 5J2
Y1A 31'5

7
DK-2730
DK-n20
F-00100
F-00130
F-021S0
F-33340
F-33S00
1"-31450
F-34075
F-35031
F-38041
F-92803
D-1000
0-2000
D-2000
D-2300
0-4440
D-SOOO
0-5100
D-7800
D-8000
411007

158
544

00590

2001
S-trJ2 62
5-350 03
(;ll-1007
ClI-1224
CII-&900
CII-8006

J UNE, 1 9 7 8
so

JERRY 01 HAS SAl T.E.D.! SIEtlE:N"S CORP.I 1333 LA\~RF..NCE EXP. _
CF..cIL A. MOOREI INTEL CORP./ 3065 BOWERS AVENUE/ SANTA CLARA C
JOHN NAGLE! INFORMATION SYSTEHS DESIGN/ 3205 CORONADO DR.! SAN
PAUL J. PANTllJ.'iO/ TED! SIEttENS GORP.I 1333 LA\I • - CHICO/ CHICO CA 95926/ (916) 895-6442
A'ITN: CHICO PROJECT _ CDC! SCHOOL OF APPLIED SCIF.NCES! CALIFOR NIA STATE UNIV./ CHICO CA 95929/ (916) 895-67l3
ORLANDO s. MADRIGAL/ DEPT. OF COMPo SCI./ CALIFORNIA ST., mllv. - CHICO! CHICO CA 95929/ (916) 895-64/+2

AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRALIA
AUSTRIA
BELGIUM
BRAZIL
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CANADI\
CANADA
CANADA
CANADA
CANADA
CANADA
CANADA
CA..'lADA
CANADA
CANADA
CANAnA
CANAnA
CANAOA
CHILE
CHINA
CZECHOSLOVAKII\.
DENHARK
DENI-IARK
£L SALVADOR
FINLAND

JOHN COUSINS/ 2435 S.W. ECOLE - APT. 67/ BEAVERTON OR 97005
DON TERWILLIGER/ 9100 s.w. PARKVIE\~ LOOP/ BEAVERTON OR 97005/ (503) 644-1933
KEN LF:SSEY/ 50 tiES! ST./ ST. HELENS OR 97051/ (503) 397-1305
DON HARVEY! P.O. BOX 367! WILSONVILLE OR 97070
ROY CARLSON! (50-454)/ TEKTRONIX/ P.O. BOX '500/ BEAVERTON OR 9 7077/ (503) 644-0161 X5616
BOB DIETRICH/ HS 60-45C! TEKTRONI,X INC./ P.o. BOX 500/ BEAVERT ON OR 97077/ (503) 682-3411 X2398
MARVIN WHITE/ MS 94-344/ TEKTRONIX INC.! P.O. BOX 500/ BEAYERT ON OR 97077
JOHN L. Runs/ RT 2 BOX 7H/ BANKS OR 97106
BRIAN HANSE~/ 2426 N.E. 57TH AVE. APT D3/ PORTLAND OR 97213/ ( 503) 284-3537
JAMES N. O'BRIEN/ 13900 SCrF-NCE PARK DR/ PORTLAND OR 97229/ (503) 641-4141
DAVID SKINNER/ ALPHA OHEGA COHPtITER SYSTEMS/ P.O. BOX 392! COR VALLIS OR 97330( (503) 754-1911
CHIP WEEMS! DEPT. OF Cot1PUTER SCIENCE! OREGON STATE UNIV.! COR VALLIS OR 97331/ (503) 75/,-3273
ATTN: NORTHllEST MICROCOUPUTER SYSTEMS/ 121 E. 11TH ST./ EUGENE OR 97401/ (503) 485-0626
ATTN: SUSA.~ BOWIE - DOCUHENTS ROOlI! COMPUTER CENTER/ UlHV. OF OREGON! EUGENE OR 97403/ (503) 686-4406
R. BUSH/ NORTHWEST MICRO! 219 FITZPATRICK BLDG./ COOSBAY OR 97420/ (503) 269-2432
WILLIAU J. MARSItALL/ 11626 1 11TH AVE. N.E./ KIRKLAND UA 98033/ (206) 789-2000 (''']ORK)/ (206) 822-1329 (HOHE)
ROBERT EHERSON/ HONEYWELL I!'lFORHATION SYSTEMS/ 9555 SE 36T;1 ST REET/ HERCER ISLAND UA 98040
R. G. SUERRY/ 5828 FIRST AVE. N.W./ SEATTLE ~~A 98107/ (206) 783-0853
PHIL HUGHES/ P.O. BOX 2847! OLYMPIA \>1A 98507/ (206) 753-2315
BUZZ 1111.L/ EYEDENTIFY INC./ p.O. BOX 2006/ LONGVIEW W'A 98632/ (206) 423-3281
FRED J. KELLER/ BUSINESS CQt{PUTER SYSTEMS/ DATACOUP! P.O. BOX H)87/ SPOKANE WA 99210/ (509) 456-6908
KEN ROBINSOll'/ DEPT. OF CDriPUTER SCIENCE/ UNIVERSITY OF NEW SOU TH I~ALES/ P.O. BOX 1/ KENSI!-IGTON 1~.S.W. 2033/ AUSTRALIA./ 663 0351
DAVID POWERS/ 259A TRAFALGAR STREET/PETERSHAM N. S. W. 2049/ AU STRALIA
SIMON/ DEPT OF liATHEJ1ATICS/ UNIV. OF NEI~CASTLE/ Nh"WCASTLE fI.S. w. 2308! AUSTRALIA/ 68 5787
ATTN: PURCHASI~G OFFICE/ RESEARCH SCHOOL OF PHYSICAL SCIENCES! AUSTRALIAN NATIONAL UNIVERSITY/ P.O. 'BOX 4/ CANBERRA A.C.T. 2600! AUSTRALIA/ 492143
ATTN: SCHOOL OF INFORMATION SCIENCES/ CANBERRA COLLEGE OF AnVA NCED EDUCATION/ P.O. BOX NO. 1/ BELCONNEN A.C.T. 261!>/ AUSTRALIA
JOHN EDWARDS/ LA TROBE UNIVERSITY/ BUNDOORA VICTORIA 3083/ AUS TRALIA/ 478 3122
GEOFFREY A. CLEAVE! 18 NEIL COURT/ E. BENTLEIGH VICTORIA 3165/ AUSTRALIA
P. S. EDIJARDS/ 2/100 BARRABOOL ROAD/ UIGHTON VICTORIA 3216/ AU STRALIA
J. s. ROHL/ DEPT. OF COttPUTER SCIENCE/ U OF WESTERN AUSTRALIA/ NEDLANDS W.A. 6009/ AUSTRALIA
KARL PRAGERSTORFER/ EDERACKERSTRASSE 11/7/ LEOlmING A-4060/ AU STRIA/ (0043) 732-825392
WIH STEVENS/ DRABSTRAAT 49/ !10RTSEL 13-2510/ BELGIU!{
ROBERIO DIAS/ P.O. BOX 30028/ SAO PAULO/ BRAZIL
PETF-R GROGONO/ 73 ROXTON CRESCENT/ I'!ONTREAL WEST QUEBEC/ CANAD A/ (514) 879-4251 (DAY)
STIJART LYNNE/ 315A EVERGREEN DR./ PORT MOODY B.C./ CANADA/ (604) 939-2757
MAREK WIECHULA! ST. FRANCIS XAVIER mnv./ BOX 67/ ANTIGONISH II • SCOTIA B2G 1CO/ CANADA/ (902) 867-2275
M. MICHEL COURCHESNE! 11471 VALADE/ MONTRF.AL QUEBEC HIG 3S5/ cANADA! (514) 324-5694! (514) 281-8362
GUY LAPALHE/ DEPT. n'INFOR..'1ATIQUE/ UNIVERSITE. OE MmlTREAL/ C.P • 6128 - SUCC. A! NO~1TRF.AL QUEBEC fl3C 3171 CANADA
DANIEL THALMANN/ DEPT D~I.>;jFOfU{ATIQUE ET RECHERCHE!
DE MO ~TREAl-/ CASE POSTALE 6128 - SUCC A/ 'lotlTREAL QUEBEC fl3C 3J7/ CANADA/ (514) 343-7477
S. 11ATTIIEWS/ AES DATA LTIl./ 570 RUt MCCAFFREY! MONTRF.AL QUEBEC H4T 1N1! CANADA/ (514) 341-5Lf30
M. JEAN-~RIE DIRAND/ SERVICE DE L'I~FOR!'1ATIQUE! UNIVERSITE DE SHERBROOKE/ 2500 BOUL. UNIVf::RSITE/ SHERBROOKE QUEBEC J1K 2R1/ CANADA/ (819) 565-5575
JACQUES HAGUEL! DEPT MATHS/ UNlVERSITI!. DE SHl~RBROOKE/ SHERSROO KE QUER,EC JIK 2Rt/ CANADA/ (819) .565-360Fl
H. TAYLOR/ COt1PUTWG CENTRE/ APPLICATIOtlS DEPT./ U OF OTTAWA! OTTAWA ONTARIO KIN 6N'S1 CANADA/ (613) 23t-5094
JACK HUGHES/ COMPUTING CENTREI DUPUIS HALL/ QUEEN'S UNIVERSITY / KI:-lGSTON ONTARII') K7L 3N6/ CANADA! (613) 547-2800/ (613) 547-2951
n. R. WESTI.IJIlD/ if,78 FIRWOOI) CRESCENT! PETl~RBORO!JGH ONTARIO Kg K lJl/ CANADA
JAHES D. CALLADINE/ RR fJ4 CONCESSION 7/ OXBRIDGE ONTARIO LOC 1 KO/ CA."lADA
CARLO LOCICERO! 3501 GLEN ERIN DRIVE U401/11ISSISSAUGA ONTARIO LSL 2E9/'- CANADA/ (416) 826-8640
PETER HAYNES/ CONTROL DATA CANAnA LTD./ 1655 MINNESOTA COURT-S TREETSVILL',E/ mSSISSAUGA ONTARIO L5!l lK7/ CANADA/ (416) 326-86/,0 X23Fl
DAVID Jo~msl COlITROL DATA CANADA UD./ IFl5S MI~NESOiA COURT-ST REETSVIU,E! HISSISSfI.(JGA ml'TARIo L')N 1K7/ CI\NArlA/ (416) 826-R640 X2h2

muv.

CIlRIS BJ\:{CE! APl'LIlm HATH. COllPU'r~:K LAd/ HCt!ASTBR UNIVI:;RSITYI I!AIIIl.Tml DI~TARII) LSS 4K11 CAilAj)AI (416) S2S-~140 :{/.6tl9
ATTENTION: SANDRA [mIGHT! DEFENCE (. CIVIL INST. o'F l':NVIRMNTL M ED! p.o. Bon 2000/ DO\/ilSVIEW OIlTARIO te11 3B9/ CNlADAI (416) 633-4240 X300
Tot! A. TROTTIERI 411 DUPLEX AVE. - APT. 119/ TORONTO Oi'lTARIO H 4R 1V2! CA.'4AOA/ (416) 488-8802
RUSSELL JONES/ 427 EUl ROAn/ TOROIlTO ONTARIO M5lf 3U6! CM1ADA/ (416) 592-675,8 (BUS)/ (416) 486-7756 (RES)
ATtJ:o:NTIOll: G. TER HOFSTEDE/ DATA CENTRE/ THE GLOBE AND HAIL/ 444 FRO/IT ST. WEST/ TORONTO OllTARIO H5V 259/ CN1ADA
ATTN: HELEN SUITH/ COHPUTER CENTER/ 1088B M AND c/ U OF \-l'ATERL 00/ WATERLOO ONTARIO fl2L 3Gl/ CANADA/ (519) 885-1211 X3!+30
BILL WINS PUR/ GOHPUTER SERVICES - HEALTH SCIENCES/ UNIVERSITY OF MANITOBA/ 753 ~ICDERl10T AVE./ WINtlIPEG l1AJ'HTOB/\ R3E 0113/ CA~lAJ)AI (204) 786-3630
D. w. MACLEAN! DEPT. OF MATHEHATICS/ UtlIV. OF SASKATCIIEI~AN/ SA SKATOON SASK. S7N 0[10/ CAHAf)A
BETTY CLIFFORD/ COHPUTER SERVICES/ 058 MATH. SCIENCE/ UNIV. OF CALGARY/ 2920-24 AVE. N.\~./ CALGARY ALBERTA T2N lN4/ CANADA
ROBERT H. GREEN/ ROSELLE CONSULTING LTD./ 5421 10TH AVE. - #13 0/ DELTA B.C. V4'M: 3T91 CANAnA/ (604) 943-8021
GORDON STUART/ TECHNICAL AND VOCATIONAL INST./ CAMOSUN COLLEGE / 1950 LANS!)01mr: M./ VICTORIA, B.C. v8p SJ2/ CANADA/ (604) 592-1281 X243
KEN SYLVESTRE/ 12 TAGISH ROAD! WHITEHORSE YUKON Y1A 3P5/ CANAn A/ (403) 667-7372
ATTN: CECICO/ UNIVERSIDAD CATOLICA DE CHILE/ CASIL1.A 114-DI SA NTIAGO/ CUILE/ 51351.8
Jim-tolU Houl COttPUTER SCIENCE DEPT./ CHIAO-TUNG UNIVERSITY/ HSI NCHU TAIWAN 300/ CHINA
JOSEF JINOCH/ VVC CKD PRAHA/ PRAIiA 9 IlA HARFE 7/ CZECf-tOSLOVAKI A/ 820841/664
ROLF MOLICH/ DANSK DATA ELEKTRONIK/ GENSRATORVEJ 6A/ HERLEV OK -2730/ DE:mARK/ 45 '2 8/, 50 11
UFFE MOLLER! DATANOl1UDDANNELSEN/ LANGAGERVEJ 16/ AALBORG OST Jl K-9220/ DENl1ARK/ (oil) 15 81 00
ROBERTO ARGUETA/ CENTRO DE cmWUTO/ UNIVERSIDAD DE EL SALVADOR / SAN SALVADOR/ EL SALVADOR/ 260017 X50
HANNU EH.KIO/ DEPT. OF CO!ll'UTER SCIENCE/ UNIVERSITY OF HELSINKI! TOOLON\(ATU 11/ HELSINKI 10 SF-OOIOO! FINLAND/ 90-440703
FI~I.AND
HEIKKI KASKELMA! OY SOFTPLAN AS! EROTTA.JANKATU 9 A/ HELSINKI 5 F-00130! FINLI\NO! (9)' 0-64lf306
FINLAND
ATTN:TECHNICAL RESEARCH CENTRE OF FINLI COt1PUTING SERVICE/ VUO RIMIEHENT 5/ ESPOO SF .... 021501 FINLAND/ 90-4561
FINLAND
AI'ITTI ARVELA/ RUNKOKATU 6 A 8/ TMPERE 3/+ SF-33340/ FINLAND
FINLAND
HAN!'tU JAAKKOLA/ ITSENAISYYDENKATU 16 I 75! TAlIPERE 50 SF-33500 / FINLAND/ 931 612618
FRANCE
HICHEL GALI~HER! LA GIRAGLIA/ ESPANES F-31450/ FRAiICE
FRANCE
ATTN: CENTRE DE RECHERCHE! INFOR..'1ATIQUE ET G£STIotl/ UNIV. DES SCIENCES ET TECH. DU LANGUED/ AVENUE O'OCCITRAINE/ !-tONTPELLIER CEDEX F-31,075/ FRANCE
(67) 63-38-86 X339
FRANCE
ATTN: DEPT DE i1ATHEMATIQUE AND D1FOR!:fA! BIBLIOTHEQUE 2 CYCLE/ C/o LE BAIL/ UNIVERSITE DE RENNES/ BP-25A/ RENNES CEDEX F-35031/ FRANCE
FRANCE
ATTN: UNIVERSITAT DE GRENOBLE/ SERVICE DE MATEMATIQUES APPLIQU EES/ CENTRE DE TItI/ BP ~~-53! GRENOBLE CEDEX F-38041/ FRANce
FRANCE.
BERNARD PERRETTE/ FABRICATION DES BILLETS/ BAN QUE DE FRANCE/ B .P. 89/ PUTEAUX F-92803/ FRANCE
GERIIANY
ATTN: FREIE UNIVERSITAT BERLINI FB10-WEI! Fit ANGEWAHUTE STATIS TIK/ CQRRENSPLATZ 2! BERLIN 3J 0-10001 GEIDIANY
GER.'iA..."l'Y
ATTN: INSTITUT FUER INFOR..'1ATlK/ UNIVERSITAT tWIBURG/ SCHLUETER STRASSE 70/ I1AHUURG 13 D-2000/ CElUtANY
GERHMY
TliOHAS BERNER/ HERMAN!l-KAUFFMANN STRASSE 35/ HAMBURG 60 D-2000! GERMANY/ 040-2506602
GER!1A:.IY
ATTN: INSTITUT FUR INFOR:-1ATIK/ UNIVERSITAT KIEL/ OLSfLA.USENST!t. 40-60/ KIBL D-2300/ GER..'IM1Y
GERHANY
KWAI-SAND LAII! HEINRICHSTR. 7/' RHEINE D-4440/ GERI1ANY/ (0251) 706-3236
GERHANY
DIETRICH KREKEL! RECllEN ZENTRUJ1/ UNIVERSITAT ZU KOLN/ ROBERT KOCH STR 10/ KOLN 41 D-5000/ GERHANY/ 0221/478/5587
GERMANY
PETEt{ ALTMA.'m/ GRF..GORSTR.26! AAGHEN 0-5100/ GERMANY
GERHANY
CII. SCALIER/ FAKULTAT FUR PHYSIK DER UNIVERSITAT/ HERHANN-HERD ER STR. 3/ FRIEBURG I. BR. 'D-7800/ GER!1MIY/ 0751/203 3714
GERMANY
WERNER RFl1HELE/ ZT 2FE FL SAR 121/ SIEaENS AGI OTTO-HAHN-Rl\IG 6/ XUNCHEN 83 D-8000/ GERMANY/ 089/6782-4622
HONG KOtiG
WILLIAM 11. BRACK/ mHV. ANll POLY. COHPUTER CTR. LTn./ CORE C G /FL/ HONG KONG POLYTECHNIC/ YUK CHOI ROAD / HUNG IlGH/ Ko\lLOOil! llO~IG KOIlG
INDIA
S. M. VAIDYA/ REGIONAl. Cm1PUTER CENTRE/ POONA UNIVERSITY/ PO ON A 4110071 DWIA
INDOllESIA
INDRO S. SUWANDI/ conpUTER SCIENCE CENTER/ UNIVERSITY OF INOON ESlA/ P.O. BOX 3442/ JAKh"RTA/ INDONESIA/ (021) 45726
IRELAND
ALAN JO!lES/ 2 GROVE ROAD / NALAHlfIE/ DUBLIN/ IRELAND
ISRAEL
JUDITH KOVETZ/ COllPUTATION CENTRE/ TEL-AVIV UNIVERSITY/ RAHAT- AVIV / ISRAEL/ 03 420643
JAPAN
TERUO lUKITA/ DEPT. OF MATHEMATICS/ TOKYO tfETROPOLITAN ONIV./ FUKAZA'I>1A SETAGAYA-Klll TOKYO 158/ JAPAN/ 03-717-0111
JAPAN
HIROAKI NISHIOKA/ SHOJI-HIGASHI 1-3-7/ IKUNO-KU OSAKA %4/ JAP AN/ 06-751-4891
CHRIS M. BISf-tOP/ COHPUTING CENTRE/ UNIVERSITY OF OTAGO! P.O. BOX 56/ DmlEDI~/ NE\~ ZEALAND/ DUNIWIN 40109 EXT 890
NEW ZEALAND
NEW ZEALAND
ATTN: DOCUl1ENTATION OFFICER! CO!1PUT£R CENTRE/ MASSEY UNIVERSI'! Y/ PALMERSTON NORTH/ NEW ZEALAND
NORWAY
OLAV NAESS/ WELHAVENSGT.65/ BERGEN/ NORWAY
ADtlNAtl KHAN/ 222/7 BLOCK-E! OPP. WALT,ON TRAINING CENTRE/ WALTO N ROAD/ LAHORE CAI.'1TT./ PAKISTANI 83644/ 412193
PAKISTAN
POLAND
HICHAL IGLEWSKI/ INSTITUTE OF CO!1PUTER SCIENCE/ POLISH ACADEHY OF SCHNCE/ PKIN P.O. BOX 22! I~ARSZAWA 005901 POLAH])I 21)f)211 x2225
PORTUGAL
ADtLlNO CARLOS DE SOUSAI RUA JOAO PI~TO RIBEIRO 7-30' ESQ./ AHA DORA/ PORTUGAL/ 937 315
SINGAPORE
JACK PAGE/ PAGE-ASIA ASSOCIATES/ 279-11 SELEGIE COHPLEX/ SINGAP ORE-7/ SINGAPORE/ 326102
SOUTH AFRICA
JUDY 11. "BISHOP/ COHPIJTER SCI. DIV./APPLIED HATHS DEPT./ mnv. OF THE WIT[~ATERSRAND/ 1 JAN SMUTS AVENUE/ JOllA.lmESBURG 2001/ SOUTfl AFRICA
(11) - 394011 x8656
SWEDEN
PATR.IK WAI.Utrn/ HUGIN HASSREGISTER AB/ BOX 41110/ STOCKHOLM S-10 2 62/ SI>1EDENI 08/24 51 00
51·lEDEN
MATS APELKRANS/ BOX 3032! VAXJO S-350 03/ SWEDEN/ 0470!46363
SWITZERLAND
ANA-!1ARIA scm-uTI CAI.CULATRICES DIGITALES/ ECOLE POLYTECIlNI~UE FEDERALE/ 16 Cli. DE llELLERIVE/ LAUSANNE Cll-lD07/ SIHTZERLANDI 021 47 26 59
SWITZERLAND
RAY!10NO 1i00EL! 98 CH. DE LA MONTAGNE/ GEN~:VA CH-1224/ SIHrZERL AND
SWITZER.LAND
HANS J. METZOORF/ HAUPI'POSTLAGERND! LUGAtW CH-6900/ SWITZERLAN D! 0039/332/780Dl X1079
SWITZERLAND
PETEH U. SCHULT HESS/ INSTI'fUT FUER INFORI1ATIK/ UIHVERSITAET ZU ERIcn! KURVENST~ASSE 17/ ZUERICH Cli-8006/ S[lITZERLAND
THE NETHERLANDS J. F. WILKES/ SHAPE Tf~CHNtCAL CENTREI POST BOX 174/ DEN HAAGI THE NETHERLANDS
THE NETIIF.R{.ANIlS TOH VAll DER HOEVENI HAGEDOORNSlmGI NIF.!lERTI THE NETH1~RLANj)S
UNITED KL>;jGDml J. AHHLER/ 21 KILKEVAl'I TERRACE - \mILFH:LD/ DUNDEE SCOT1.AND/ U NITEiJ KI~GDOH
UNITED KI~GDm1 R. D. FREEMAN! EDP DEPT./ PLESSEY co. LTD./ TITCIIFIELD NEAR FAREHA!1/ HAHPSIIIRE ENGLAND/ UNITED KINGDO~!
UNITED KINGDOH D. S. COCHRANE/ 4 ENNIS CLOSE/ HARPENDEN !IERTS/ UNITED KINGOmt
UNITP.D KINGOOH D. J. HOUORTlt! 27 CHILTEIU~ HOM/ HITClIIN HERTSI UNITEl) KINGDOII

~V>

A p P L I C AT I 0 N S

>-0-

Editor:
PLEASE SUBMIT ALL PROGRAMS, SOFTWARE
TOOLS, ALGORITHMS, etc. for
this section to Ri ch. Thanks, Andy.

~~

Rich Cichelli

901 Whittier Drive
Allentown, PA 18103
USA
(phone: 1-215-253-6155 work
1-215-797-9690 home)

~

;;;
>-

~~
..,..,

~

8~

0

~

5~* g
tr.tJ:::-.0
o-il;l:l;I: 0

§E~

§ §§

C'("r

v

0>'::>0:::0::=

N_o-i;<>

OV'l ..... ""
~~

x;:::;;:::;

c:::::::c:::

o-io-io-i o-i

zzz
..,..,..,

8~~8

e~s

~>

~o

zz

~~

x

~~~~

"
0

c:::c:::::::::::

..;

o-io-io-ir-i

0

988S

;;::z;zz

Z~

"""
"" " n::1C"lC"l
~e~~
nnn

::::::

::::::::::::

"" " C"lnnn
~~~~
""
88 ~ gggg
:!.::J:::J::"::
"'

We decided to create a new section for printing Pascal source programs for various
applications including software tools and algorithms. Additionally here, we will print
news of significant applications programs written in Pascal.
Jim Miner suggested we should index each program so that they may be easily referenced
for corrections and criticisms.
Arthur Sale is very enthusiastic about the algorithms section. He suggested that:
we allow for 1) the provision for certification of the program by unrelated persons, with
clear identification of system used; and
2) critiques of the program for a) standards conformance, or b) style, or
c) algorithm, or d) output convenience and general design.

r-:-r

ZZ:.::

::::::::0

000

:;':2,

0"

gg

"0

'"

;::oco
0000

:.:::::::;:::;:::

(/)

We'll number programs starting with P-1, software tools starting with S-l, and
algorithms starting with A-1.
New Software Section
I am looking forward to your new software section in News, partly because I
may see something really good there, but even more for the educative role I
think it will play among Pascal users. I think back to the large influence
that the CACM Algorithms section had on Algol stylistics and their propagation, and on the appreciation of subtle points of the FORTRAN standard.
So besides the big program things (which I shall enjoy perusing for their
non-portable features), may I suggest that News could serve as a useful
vehicle for procedures and algorithms of very common use? For example, what
about a portable lexical analyser for reference PASCAL (as in the Report)
which itself had no assumptions about wordsize or setsize beyond those likely
to hold in all compilers? Or a tree-balancer? And so on. I'm therefore
enclosing a little thing to stir up those other contributors you have: a
procedure to produce a 'Pascal standard time and date Jog record'. You will
see that a little machine-dependency is not harmful to communication, providea
it is collected and clearly identified as such.

•
•**

en

*
*
**

Arthur Sale.

In PUGN # 6, John Banning wrote to solicit programs for his empirical study of Pascal
programs. Dn 78/01/14 he wrote that he had a change in thesis topic which delayed
his performing the study. He enclosed a listing of a 12000-line Pascal program
which analyzes Pascal programs for style and behavior.
In PUGN # 11, Prof. David Barron announced the formation of a numerical library
project. He has recently been in touch with Jan Kok and Reind P.van de Riet of
Vrije Universiteit and Mathematisch Centrum in Amsterdam, The Netherlands, who have
constructed a large library for Pascal on COC-6000 series machines.
When numerical analyst Gilbert W. Stewart heard about the project, he was interested,
and gave the advice that algorithms beware of the matrix storage differences between
Pascal and FORTRAN (row-wise versus column-wise).

Applications

~

co

-0

::r>
~

G)

en
f-'
'-J

Applications

function random

ALGORITHHS

2048;
16;
32767;

qshift
big

A - 1 Random Number Generator
Department of Computer Studies
Bailrigg, Lancaster
Telephone Lancaster 65201 (STD 0524)

(~x: integer):~;

~pshift

~dual

30th November 1977.

--case dummy:

boolean of
-"true: (i: integer);
falSe: (b: ~)
end;

University ,of Lancaster

Head of Department:]. A. Llewellyn B.5c., M.phil., F.B.C.S., F.I.M.A.

:z
rn

record

~

::<:
en

a, b, aconp, bcornp: dual;

Dear Andy,
In case anyone is interested, as I am, in using Pascal for
simulation purposes, I present a Pascal random number generator based
on the feedback shift register pseudorandom number generator algorithm
given by Whittlesey [lJ, for a 16-bit word size machine.

i)
ii)

Note that :
for any other word size, the constants 'pshift', 'qshift' and
'big' must be changed; (see Lewis [2J)
bound checking must be suppressed to allow the dual interpretation
of variables as both integer and boolean (if anyone is offended by
this objectionable programming trick, or if it fails to work under
a particular implementation, I have a more portable version - but
the price of portability is execution speed);
similarly, overflow checking needs to be suppressed, but I have a
remedy for this, too;

iii)

our implementation has whole word logical operations for and and
or, but not for not - hence the use of lacamp' and 'bcomp-;~ote - a subse~t release restricts and and or to boolean operations
only)
--

iv)

the function must initially be passed a positive non-zero integer
"seed" (parameter 'x'), and will thereafter update this seed and
yield a real number in the range (O,lJ.

The feedback shift register method has been shown by Lewis [2J to
give good results, and I have thoroughly tested this version with the
usual statistical tests. (Pascal procedures for these tests are
available from me).

(. exclusive or number and number shifted 4 places right .)
a.l := X; b.i := a.l div qshiftj
acomp.i := big - a.i;~omp.i := big - b.i;
a.b := (a.b ~ bcomp.b) ~ (acomp.b ~ b.b);
(0 exclusive or number and number shifted 11 places left .)
b.i := a.i 0 pshift;
acomp.i := big - a.i; bcomp.i := big - b.i;
a.b := (a.b ~ bcomp.b) ~ (acomp.b ~ b.b);
(~

convert to real result
a.i;

~)

<-

x :=

c::

random := a.1 / big
~

(. random

=
rn

*);

(* Jim Miner tried out the algorithm on a PDPS (23 + 1 bit integers).

He made
following points: a) the results seemed to be better if the left-shift
is circular; b) one has to be careful of multiply overflow; c) the
exclusive-or's are more naturally expressed as set operations, and d) a seed
of zero yields a constant zero result. His version is printed below. *)
FUNCT ION PAN[:. Ot'!.:: ',!'AF.: SEED:

PJ'10C1

Incidentally, I would be very pleased to hear from anyone else
interested in Pascal and simulation.

c'SH I FT

16

i28;
E:4;

REFiL)

I NTEGE F.:)

CONST
PSH I FT
(*
(:+:

:f:)
:f;)

£.

:+:)

l'lFI::UH
VA~'

A..

Brian A. E. Meekings.
References.

1.

2.

Whittlesey, J.R.B. A comparison of the correlational behaviour
of random number generators for the IBM 360. Comm ACM 11,9
(Sept 1968).
Lewis, T.G. Distribution Samp~1ng for Computer Simulation.
D.C.Heath and Co., Lexington and Toronto (1975)

E:EGH,
R. I

ABS(SEED»)

B. 1 = A. I DIV QSHIFT;



......
00

A - 2 Timelog

DOCUMENTATION : TIMELOG
Language

Pascal

Written

A.H.J. Sale
Thursday, 1978 March 2, 3.20pm

Use
To improve the quality of production PASCAL programs by making available a
standard method of recording the date and time of a run.
User documentation

Timelog is a Pascal procedure which writes on a globally declared file ou~put,
producing a single line which is a log-record of the date and time. It has
no parameters, and is therefore used simply by including the text in the procedure declaration part of a program, and then activated by calling:
time log
The format of the printed line is chosen to avoid all the confusion created
by numeric date and time information by conflicting American, English and
European conventions; in addition a measure of redundancy is included by the
weekday name. See date given above as an example.
Installation
The procedure will ~rk without modification on Burroughs B6700/7700 installations using the University of Tasmania compiler. On other systems the
machine-dependent part (identified clearly in the listing) will have to be
altered to acquire the necessary information. (The B6700 pre-defined procedure
timestamp puts year/month/day/hour/minute/second information into the array
parameter elements, thereby avoiding any timing glitches of separate calls.)
The lower-case letters and some other characters may have to be converted to
suit some systems' lexical requirements. The procedure is easily modified to
handle other Indo-European languages (e.g. French) by altering the text strings.
gystem documentation
The procedure is straightforward.

Only a few things are worth noting.

(i)

Zeller's congruence is used to compute the weekday from the epoch.

(ii)

The date and time are written according to ISO standard format in
descending order of significance (apart from the weekday).

(iii) The minute value is printed without zero-suppression; other numeric

codes are zero-suppressed, as is normal Pascal convention.

00010000
00010100
00010200
00010300
00010400
00010500
00010600
00010700
00010800
00010900
00011000
00011100
00011200
00011300
00011400
00011500
00011800
00011700
00011800
00011900
00012000
00012100
00012200
00012300
00012400
00012500
00012600
00012700
00012800
00012900
00013000
00013100
00013200
00013300
00013400
00013$00
00013600
00013700
00013800
00013900
00014000
00014100
00014200
00014300
00014400
00014500
00014600
00014700
00014800
00014900
00015000
00015100
00015200
00015300
00015400
00015500
00015600
00015700
00015800
00015900
00016000
00016100
00016200
00016300
00016400
00016500
00016600
00016700
00016800
00016800
00017000
00017100
00017200
00017300
00017400
00017500
00017600
00017700
00017800
00017900
00018000
00018100
00018200
00018300

procadura limelo,;
{ . . . . . .II}

1·················-······_······.·· ... ·· ........................ }
{

I
{
{
I
{

}

Thil procldur. prints 0.1 a bllic IO'·record on Ihe oulpul }
file,
It I.oids Ihe well·known problems of American and}
Eng! ish date convnl Ion., and tha 24·hour clock confusion. }
}

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

Vir

}

two digit., Un •• ,umed

year
monlh
day
hour

mi nut.

01, .99;
I, .12;
1 .. 31;
0, .23;
0, .59;

epoch

l"ay[O,,5] of integer;

adjy .. r
adjmonlh
weekdlY
adj u.ledh.ur

00 .. 99;
1 .. 12;
0,.6;
0, .12;

monlh number
day in month
24·hour clock a •• umed
minute. pI.t Ih. hour
{

requ ired f.r B6700

Jln l Feb Ire laken I I
laal monlh. of prev
O=SundaJ, I·M.nday, ttc
conYen t i on.l-e lock

'I"

btg i n
I The .Iatemento between her. and Ih. next c.mmenl Ih.u Id
I be replacod by the Iqui.alenl f.r y.ur .y.Um. Note Ih.
I rln, . . . , Ihe vlrilbl .. d.cumented In Ihl daclaratlons,
tlmellamplep.chl;
year
:'.p.ch[O]·1900;
monlh :'epoch[I];
day
:'epoch[2J;
hour
: 'tpoch[3];
minute :'epoch[4];
I Ihls cl •••• Ih. machln.·d.pend.nl pari
{ compute Ihe adjulted hour w. u.e }
adjultedh.ur:'hour mod 12;
if (adjulttdho.r • 01 Ihen adjultedhour:'12;
I adjulI monlh and year inf.rmation }

c.....
c:

=
rn

if (monlh c. 21 Ihen begin
ad jmon I h: 'mon I h+l 0; Id jyea r: 'ye .. ·l
end el .. be,ln
adjmonlh:'month-2; Idjy .. r:'y.ar
end;
{ I t Iler' I congru.nce }
weekday :'
(1126* adjmonlh • 2} di. 10} + day + adjye .. +
(adjy.ar dl. 41 + 11 mod 7;
{ write Ihe limelog oUI }
case weekday 01
0: .rifl(oulpul,'Sunda,');
1: wrlle(oulp.I,'MondlY'};
2: wrile(oulpul,'Tu •• day'};
3: write(.uIP.I,'Wedne.day'l;
4: wril.(oulpul,'Thuroday'};
5: write(output,'Frida,'J;
6: wrl 1.(.ulp.I, 'Slturday' I
end;
writeCoutput,', ',(,I.r+1900):4,' ');

caoe monlh .f
1: writeloutput,'J.nulr,');
2: wr i'e (output.' February' J;
3: wr i teloulpul, 'March' I;
4: write(outpul,'April');
5: writeloulput,'May');
6: write(oulpul,'June'l;
7: wrile(oulpul,'July'l;
8: writeloutput,'Augult');
9: wrlle(oulpul,'September'};
10: write(outpu.,'Octobe,');

11: wr i te (output, I November I J;
12: write{oulPul,'December'l
end;
writetoutpul,' . ,da,:2,' . . ,.djuI.edhour:2,':·.
(minute dl. 101 :1, (minull mod 101 :1};
If (hour ). 121 Ihen be,ln
wr I tel n loutpul,' PM,'}
end el •• begin
writeln(output,' AM.')
end;
end :.

f-'
0..0

SOFT\~ARE

s1 {*
2 *
3

4
5

6

7
8
9

10
11

12
13
14
15
16
17
18
19
20
21

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

1

TOOLS

Compare
COMPARE - Compare two text files and report their differences.
Copyright (C) 1977, 1978
James F. Miner
Social Science Research Facilities Center
University of Minnesota

General permission to make fair use in non-profit activities
of all or part of this material is granted provided that
this notice is given.

To obtain permission for other uses

and/or machine readable copies write to:
The Director
Social Science Research Facilities Center
25 Blegen Hall
269 19th Ave. So.

*

*

*
*
*

University of Minnesota

Minneapolis, Minnesota
USA

55455

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

Compare is used to display on l'Output"

characteristics are:
Compare is line oriented.

-

*

*

*

The smallest unit of comparison

is the text line (ignoring trailing blanks). The present
implementation has a fixed maximum line length.

*

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

the differences

between two similar texts ("Filea" and "Fileb"). Notable

By manipulating a program parameter, the user can affect
Compare's sensitivity to the "locality" of differences.
More specifically this parameter, "Minlinesformatch" ,
specifies the number of consecutive lines on each file
which must match in order that they be considered as
terminating the prior mismatch.
A large value of
IIMinlinesformatch l1 tends to produce fewer but larger

mismatches than does a small value.

The value six appears

to give good results on Pascal source files but may he

inappropriate for other applications.
If compare is to he used as a general utility program,
IIMinlinesformatch l1 should be treated as a program
parameter of some sort.
It is declared as a constant here

for portability's sake.
- Compare employs a simple backtracking search algorithm to
isolate mismatches from their surrounding matches.

This

requires (heap) storage roughly proportional the the size
of the largest mismatch, and time roughly proportional to
the square of the size of ·the mismatch for each mismatch.
For this reason it may not be feasible to use Compare on
files with very long mismatches.
-

To the best of the author's knowledge,

only features of Standard Pascal.

Compare utilizes

59
60 program compare(filea, fileb, output);
61
62
~
63
version = '1.2p (78/03/01)';
64
linelength = 120;
MAXIMUM SIGNIFICANT INPUT LINE LENGTH
65
minlinesformatch = 6;
NUMBER OF CONSECUTIVE EQUIVALENT }
66
LINES TO END A MIS-MATCH }
67
68
~
69
linepointer = -line;
70
line •
{ SINGLE LINE BUFFER }
71
packed ~
72
nextline : linepointer;
73
length: O•• linelength;
74
image: packed array [l •• linelengthl £f char
75
end;
76
77
stream =
{ BOOKKEEPING FOR EACH INPUT FILE }
78
record
79
cursor, head, tail : linepointer;
80
cursorlineno, headlineno, taillineno
integer;
81
endfile : boolean
82
end;
83
84
var
85
---filea, fileb : text;
86
a, b : stream;
87
match : boolean;
88
endfile : boolean;
SET IF END OF STREAM A OR B }
89
90
templine :
USED BY READLINE }
91
record
92
~th
integer;
93
image: array [O •• linelengthl £f char
94
end;
95
96
freelines : linepointer;
FREE LIST OF LINE BUFFERS }
97
98
same : boolean;
FALSE IF NO MIS-MATCHES OCCUR
99
100
101
procedure comparefiles;
102
103
function endstream(var x
stream) : boolean;
104
begin { ENDSTREAM }--105
endstream := (x. cursor
Ell) and x.endfile
106
end; {ENDSTREAM)
107
108
procedure mark(~ x : stream);
109
110
CAUSES BEGINNING OF STREAM TO BE POSITIONED BEFORE }
111
CURRENT STREAM CURSOR.
BUFFERS GET RECLAIMED, LINE }
112
COUNTERS RESET, ETC. }

c....

=

:z
f'T'1

113

114
115

.Yll
p

linepointer;

116

117
118
119

120

begin
with x

MARK}
do

if head <> nil then
begin

N

o

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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182

while head <> cursor do { RECLAIM BUFFERS }
begin
with head- ~
begin
p := nextline;
next line := freelines;
freelines:= head
end;
head := p
end;
headlineno := cursorlineno;
if cursor = nil then
begin
tail := nil;
tail1ineno:= cursorlineno

end

end
{MARK}

end;

procedure

movecursor(~

x : stream;

var filex : text);

FILEX IS THE INPUT FILE ASSOCIATED WITH STREAM X.
THE}
CURSOR FOR X IS MOVED FORWARD ONE LINE, READING FROM X }
IF NECESSARY, AND INCREMENTING THE LINE COUNT.
ENDFILE}
IS SET IF EOF IS ENCOUNTERED ON EITHER STREAM. }
procedure

read line;

.Y1!.£
newline:

linepointer;

c, c2 : O •• linelength;
begin { READLINE }
if not x.endfile then
begin
c := 0;
while not eoln(filex) and (c < linelength) do
begin
c:= c + 1; templine.image [c] := filex . . . ; get(filex)
readln(filex) ;
while templine.image[cj = •• ~ c := c - 1;
if c < templine.length then
i££ c2 := c+l ~ templine.length ~ templine.image[c2j :=
templine.length := Cj
newline := freelines;
if newline = nil then new (newline)
else
freelin;;-:= freelines ...... nextline;
pack(templine.image, 1, newline ...... image};
newline ...... length := c;
newline ...... nextline := nil;
if x.tail = nil then
--begin
x.head:= newline;
x.taillineno := 1;
x.headlineno:=

end
else
begin x.tail~.nextline := newline;
x.taillineno := x.taillineno + 1
end;
x.tail != newline;

x.endfile := eof(filex);
end
end;---{ READLINE
begin { MOVECURSOR
if

x.cursor <> nil then

begin
if x.cursor = x.tail then read line;
x.cursor := x.cursor~.nextline;
if x.cursor = nil then endfile := true;
X:cursorlineno := x.cursorlineno + 1

183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
end; 214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245

~ ~

x.endfile then { BEGINNING OF STREAM}

begin
readline; x.cursor := x.head;
x.cursorlineno := x.headlineno

=
rn

end
else {END OF STREAM
endfile

en

:= true;

{MOVECURSOR}

end;

procedure backtrack(var x

:

stream;

var xlines

:

integer);

CAUSES THE CURRENT POSITION OF STREAM X TO BECOME THAT }
OF THE LAST MARK OPERATION.
I.E., THE CURRENT LINE
}
WHEN THE STREAM WAS MARKED LAST BECOMES THE NEW CURSOR. }
XLINES IS SET TO THE NUMBER OF LINES FROM THE NEW CURSOR}
TO THE OLD CURSOR, INCLUSIVE. }
begin { BACKTRACK }
xlines := x.cursorlineno + 1 - x.headlineno;
x.cursor := x.head;
x.cursorlineno:= x.headlineno;
endfile := endstream(a) ~ endstream(b)

end;

{BACKTRACK}

procedure comparelines(var match:

boolean);

COMPARE THE CURRENT LINES OF STREAMS A AND B, RETURNING}
c=
MATCH TO SIGNAL THEIR (NON-) EQUIVALENCE.
EOF ON BOTH STREAMS}
IS CONSIDERED A MATCH, BUT EOF ON ONLY ONE STREAM IS A MISMATCH} rn

=

begin { COMPARELINES }
if

(a.cursor

= nil) or (b.cursor = nil) then

--match := ends~am(;) and endstream(b)

begin
match := (a.cursor~.length = b.cursor~.length);
if match then
--match := (a.cursor~.image = b.cursor-.image)

end;

end
{COMPARELINES}

procedure findmismatch;

begin { FINDMISMATCH }
{ NOT ENDFILE AND MATCH
repeat {COMPARENEXTLINES
movecursor(a,

filea);

movecursor(b,fileb);

mark(a); mark(b);
comparelines(match)
until endfile or not match;

end;

{ FINDMISMATCH}

procedure

findmatch;

var
advanceb : boolean; { TOGGLE ONE-LINE LOOKAHEAD BETWEEN STREAMS }-o
: stream; { STREAM TO SEARCH }
var filex : text;
var y : stream; { STREAM TO LOOKAHEAD
var filey : text) ;

procedure search(var x

~

G>

rn
N

I---'

LOOK AHEAD ONE LINE ON STREAM Y, AND SEARCH FOR THAT LINE }
BACKTRACKING ON STREAM X. }

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308

var
integer;

count

{NUMBER OF LINES BACKTRACKED ON X }

procedure checkfullmatch;

FROM THE CURRENT POSITIONS IN X AND Y, WHICH MATCH, }
{ MAKE SURE THAT THE NEXT MINLINESFORMATCH-l LINES ALSO
{ MATCH, OR ELSE SET MATCH := FALSE.
}
integer;
linepointer;
savexcur, saveycur
savexline, saveyline : integer;

n

:

begin { CHECKFULLMATCH }
savexcur := x.cursor;
saveycur:= y.cursor;
savexline := x.cursorlineno;
saveyline:= y.cursorlineno;
comparelines(match);
n := minlinesformatch - 1;

while match and (n <> 0) do
begin
mov~rsor(x, fiT;x);

movecursor(y,
n:= n - 1

comparelines(match);

filey);

end;

:= savexcur; x.cursorlineno:= savexline;
:= saveycur;
y.cursorlineno:= saveyline;
{CHECKFULLMATCH}

x.cursor
y.cursor

end;

begin { SEARCH }
movecursor(y, filey);

backtrack(x, count);

checkfullmatch;
count:= count - 1;
while (count <> 0) and ~ match ~

begin
-movecursor(x, filex);
checkfullmatch
end
end;--{ SEARCH }

count:= count -

1;

procedure printmismatch;

var
emptya,

emptyb

: boolean;

procedure writetext(p,

q

:

linepointer);

begin { WRITETEXT }
writeln;

while (p <> nil) and (p <> q) ~
begin write(' * 'I;
if p-.length = 0 then writeln
else writeln(p-.image : p-.length);
p

:= p-.nextline

end·

if-P-~

nil then writeln('

*** eof ***');

writeln

end;

{WRITETEXT

procedure writelineno(var x

stream);

var
f,

1

:

integer;

begin { WRITELINENO
f := x.headlineno;
write('line');

if f

1:= x.cursorlineno -

= 1 then write(' "

elsewrite('s',

f:l,'

1;

f:l)
to',

if x.cursor = nil then write('
end;
{WRITELINENO -}---

1:1);

(before eof)');

309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
331}
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370

procedure printextratext(var x
var y

stream; xname
stream; yname

char;
char) ;

begin { PRINTEXTRATEXT }
write(' extra text on file',
writelineno(x);
writeln;

xname,

,');

if y.head = nil then
writeln(' before eof on file', yname)
else
--;riteln(' between lines', y.headlineno-l:l,
y.headlineno:l,
of file', yname);
writetext(x.head, x.cursor)

end;

'

and

{PRINTEXTRATEXT}

begin { PRINTMISMATCH }
writeln(' ***********************************');
emptya

:= (a.head = a.cursor);

emptyb := (b.head = b.cursor);
if emptya .2.!. emptyb then
if emptya then printextratext(b, 'b', a,
else printextratext(a, 'a', b, 'b')
else

'a')

begin
writeln(' mismatch:');
writeln;
write(' filea, ');
writelineno(a);
writetext(a.head, a.cursor);
write(' fileb, ');
writelineno(b);
writetext(b.head, b.cursor)

writeln(':');
writeln(':');

end
end;---{ PRINTMISMATCH

"c::

=
rn

begin { FINDMATCH }
{ NOT MATCH }
advanceb := true;
repeat
if not endfile then advanceb := ~ advanceb
else advanceb := endstream(a);
if advanceb then search(a, filea, b, fileb)
--else search(b, fileb, a, filea)
until match;
printmismatch;

end;

{FINDMATCH

begin { COI1PAREF lLES }
match := true; {I.E., BEGINNINGS-OF-FILES MATCH}
repeat
1K match then findmismatch else begin same
until endfile and match;

{MARK(A); MARK(B);
end;
{COMPAREFILES}
procedure

:= false;

findmatch end

MARK END OF FILES, THEREBY DISPOSING BUFFERS}

initialize;

procedure initstream(var x

stream;

var filex

t ex t) ;

begin { INITSTREAM }
with x

do

begincursor := nil;
head:';' nil;
tail:= nil;
cursorlineno := 0; headlineno := 0;
taillineno:= 0
end;

reset(filex);
x.endfile:= eof(filex);
end;
{INITSTREAI1}

N
N

s371
begin { INITIALIZE }
372
initstream(a t filea); initstream(b, fileb);
373
endfile := a.endfile ~ b.endfile;
374
freelines := nil;
375
templine.leng~:= linelength;
376
templine.image [0) := 'x';
{SENTINEL
377
end; {INITIALIZE}
378
379
380
381 begin {COMPARE}
initialize;
382
page(output) ;
383
writeln('
compare.
version
version);
384
writelo;
385
writeln(' match criterion = "
minlinesformatch:l,
386
387
writeln;
388
if a.endfile then writeln(' filea is empty.');
389
if b.endfile then writeln(' fileb is empty.');
390
if not endfile then
391
-begin same := true;
392
comparefiles;
393
if same then writeln(' no differences.')
394
en~
---395 end.---{ COMPARE}

PERFOIL'1ANCE MEASUREMENT OF PASCAL PROGRAMS
USING AUGMENT AND ANALYZE
- Andy Mickel 78/03/14.
University Computer Center
University of Minnesota

Minneapolis, MN 55455

VERSION 1.2P

,

lines.');

of performance measurement, AUGMENT and ANALYZE assume the PROCEDURE and
FUNCTION to be the smallest unit of a program to be monitored. This is a
satisfactory assumption because well-written Pascal programs produced by
stepwise refinement naturally are composed of proper-sized procedures and
functions.
The general principle used by these programs is that the value of the
non-standard Pascal function CLOCK (which returns the elapsed processing
time in milliseconds) can be sampled at procedure or function entry and exit.
When the the expression
(exittime - entry time), is evaluated the time spent
within the particular procedure or function can be ascertained.

(78/03/01)

It is sometimes necessary to exclude the monitoring of excessively
called procedures and functions in large programs. A feature of AUGMENT
allows you to specify any number of names to be excluded.

PROCEDURE COMPAREFILES;

FILEB, LINE 101:

HOI' to Use AUGMENT and ANAL YZ E

PROCEDURE COMPAREFOOLS;

Under CDC 6000/Cyber 70,170 operating systems, AUGMENT and ANALYZE are

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

control statements.

EXTRA TEXT ON FILEA, LINE 131
BETWEEN LINES 130 AND 131 OF FILEB
BEGIN

TAIL:= NIL;

***********************************
EXTRA TEXT ON FILEB, LINE 162
BETWEEN LINES 162 AND 163 OF FILEA

*

code into your Pascal source program for every procedure and function entry
and exit.
It thus causes your program to capture timing information
and to write it out to a file.
Next you compile and execute your program, which actually produces the
file of dynamic timing measurements.
ANALYZE then reads the timing file produced, and writes a report t which
gives the name of each procedure or functiou t the number of times it
was called, and the execution time it consumed for all calls and per call.
method for gathering performance-measurement data about a Pascal program.
Xost Pascal implementations have the required CLOCK function which returns
the elapsed processor time in milliseconds.

FILEA, LINE 101:

*

AUGMENT is the program which inserts the necessary CLOCK-sampling

AUGMENT and ANALYZE therefore provide a nearly machine-independent

***********************************
MISMATCH:

*

Suppose you want to examine the execution efficiency of your Pascal
program--perhaps to make improvem.ents to those parts which take the most
computer time.

AUGMENT and ANALYZE are designed to obtain rough measures of such
execution times, particularly for large Pascal programs. Unlike other kinds

MATCH CRITERION = 6 LINES.

*

GARBAGE;

z
rn

What AUGMENT and ANALYZE Do

(* The following output from Compare was generated on a CDC Cyber 74. The data used was the
source text of the Compare program itself, modified in 3 places by performing a change, a
deletion, and an insertion. The original source is "File A". *)
COMPARE.

2 Augment and Analvze

TAILLINENO := CURSORLINENO

Thus the following 3 batch commands do the job:

AUG~ENT(the file name of your Pascal source program)
PASCAL (INTER/L-.G+)
ANALYZE.

END

The program headings for AUGMENT and ANALYZE are:
AUGMENT(INPUT, EXCEPT, INTER,
where:
INPUT

is the

I~TER2,

OUTPUT)

text file containing the Pascal source program to be

AUGMENTed.

'-

=
z
rn

EXCEPT is the text file containing a list of names (one to a line
with no leading blanks) of procedures and functions to be
excluded from measurement.

EXCEPT can be an empty file in which

case no procedures or functions will be excluded.

INTER

EXAMPLE

is the text file on which the AUGMENTed version of
the-Pascal source program is written.

INTER2 is the binary file on which only the names of each

Below are a test program, its AUGMENTed version, and the performance
measurement report:

procedure and function in the Pascal source program

is written for use by ANALYZE.
OUTPUT is the text file on which error messages are written
if problems occur during AUGMENTing. A report is written
on OUTPUT verifying which procedures or functions were

excluded, if any.

The source of the test program:

PROGRAM TEST(OUTPUT);
LABEL 5;
VAR
N: INTEGER;
PROCEDURE A;

The error messages are:

*TOO ~~Y PROCEDURES AND FUNCTIONS TO AUGMENT.
(A limit of 2000 is imposed.)
*"BEGIN" EXPECTED.
*"END" EXPECTED.
(There~s

something wrong with the statement part

of the Pascal source program which is being
AUGMENTed; it began with some reserved symbol
other than IIbegin" or there weren't enough
"END"s to match IIBEGIN lI s.)

*·"PROGRAl1" EXPECTED.
(AUGMENT couldn't find "PROGRAM" as the first
reserved symbol in the Pascal source program.

Possibly the INPUT file was empty.)
*UNDEt~ARED LABEL.
AUGMENT couldn't find a label referred to by a
GOTO statement.
ANALYZE(OUTPUT, INTER2, TIllING)
where:
OUTPUT is the textfile on which the performance measurement
report is written or alternatively the error message:

*TIMING FILE EMPTY.
INTER2 is the binary file on which the names of each procedure
and function in the Pascal source program was written by
TIMI~G

AUGMENT.
is the binary file containing the dynamic timing
measurements resulting from execution of the AUGMENTed
Pascal program.

Note:

PROCEDURE B;
BEGIN N:- N + 1;
IF ODD(N DIV 2) THEN A ELSE B
END (*B*)

The identifier IITIMING" is added to the Pascal source

program by Aum1ENT and must not appear in any procedure or function
which is to be monitored. When you use AUGMENT and ANALYZE, it is
probably a good idea to consider the file names INTER, I~TER2, and
TIMING reserved.
In summary, there are four steps to the performance measurement
process:

1) [Pascal source program] -> AUGMENT ->

I~TER

BEGIN (*A*)
N:-N+1;
IF N > 200 THEN GOTO 5;
B

END (*A*) ;
BEGIN N :- 0;

***************
3) [input data for
Pascal program] -> Pascal binary program -> TIMING and [results

*********************
4)

TL~ING

from Pascal program]

and IlITER2 -> ANALYZE -> [performance measurement report]

*icle****

END.

PROCEDURE A;
PROCEDURE B;
BEGIli
WITH TIMING- DO BEGIN 1:=
3;T:=CLOCK;M:=0 END;PUT(TIMING);
N:-N+1;
IF ODD(N DIV 2) THEN A ELSE B
WITH TIMING- DO BEGIN 1:END
(*B*) ;
BEGIN
WITH TIMING- DO BEGIN 1:(*A*)
N:=N+1;
IF N > 200 THEN BEGIN
WITH TIMING- DO BEGIN 1:=
GOTO 5 END

and INTERZ

INTER -> PASCAL Compiler -> [Pascal binary program]

5:

PROGRAM TEST(OUTPUT,TIMIlIG);
LABEL
5;
VAR
TIMIlIG:FILE OF PACKED REGORD I:0 •• 2000;T:0 •• 99999999;M:0 •• 2 END;
N: INTEGER;

3;T:-CLOCK;M:=1 END;PUT(TIMING)

1;T:-CLOCK;M:-0 END;PUT(TIMING);

2;T:-CLOCK;M:-2 END;PUT(TIMING);

B

*******
2)

A;

The AUGMENTed version of the test program:

WITH TIMING- DO BEGIN 1:=
END
(*A*) ;
BEGIN REWRITE(TIMING);
WITH TIMING- DO BEGIN 1:N :c 0;

A;

1;T:-CLOCK;M:=0 END;PUT(TIMING);

5:

WITH TIMING- DO BEGIN 1:END

2;T:=CLOCK;M:=1 END;PUT(TIMIlIG)

1;T:-CLOCK;M:=1

END;PUT(TL~ING)

'-

c=
:z
rT1

The report from ANALYZE:

1 {*
2 *

AUGMENT - AUGMENT PASCAL PROGRAMS WITH CODE TO GATHER
EXECUTION TIME PERFORMANCE MEASUREMENTS.

4
5
6

S. MATWIN
AND
i~. MISSALA
1975.
POLISH ACADEMY OF SCIENCES COMPUTER CENTRE.
PKIN, WARSAW POLAND.

3

7
PERFORMANCE MEASUREHENT SUlIMARY FOR PASCAL PROGRAM:

8

TEST

----------

A
B
TEST
==========
TOTALS

CALLS
PERCENT
TIMES
CALLED
OF TOTAL

EXECUTION TI'1E
(MILLIS ECONOS)
1lODULE
PERCENT
AVERAGE
OF TOTAL
PER CALL
TOTAL

52
151
1

25.490
74.020
0.490

0.15
0.13
1.00

204

100.000

0.14

8
20

27.586
68.966
3.448

,;j,======

29

*
*

9 •

10

MODULE
NAME

*
*
*
*

100.000

11 •
12 •

*
*
*
16 *
17 •*
18
19 •
20 *
14

15

22

*
*

23 *
24 *
25 *
26 •
27
28

*
*

29 **
30 •
31 •
32 *
33 •

34
35

History
AUGMENT and ANALYZE were conceived originally under the names PROFILE
and PRINRES in 1975-1976 by S. Matwin and M. Missala, of the Polish Academy
of Sciences Computer Centre, PKiN, Warwaw, Poland. The goal of the project
was to build a simple tool to measure very large programs -- such as the
Pascal compiler itself. A paper describing their successful work entitled:
"A Simple, Machine Independent Tool for Obtaining Rough Measures of Pascal
programs," appeared in SIGPLAN Notices (11:8) August, 1976, pages 42-45.
Their successful implementation was on CDC machines using Pascal-6000.
In 1976, Richard J .Cichelli of Lehigh University l1athematics Department
and the American Newspaper Publishers Association Research Institute, obtained
the programs and documented and distributed them to the Pascal community in the
United States.
In 1977, Herb Rubenstein and Andy Hickel of the University of Minnesota
Computer Center, modified the programs for coding style and to increase
portability, fixed bugs, and improved the performance of the programs
themselves. We also removed several limitations (the built-in
restrictions regarding the use of non-local GOTOs \.[ith1n procedures and
functions as well as the monitoring of procedures named NEXTCH).
The programs are now supported with the Pascal-6000 system which is
distributed to CDC installations around the world.

(* Note:

In the programs listings following,
empty comments denote lines with possible
or outright machine dependencies_ *)

REFERENCE:

"A SI~PLE MACHINE INDEPENDENT
TOOL FOR OBTAINING ROUGH MEASURES
OF PASCAL PROGRAMS."
SIGPLAN NOTICES, 1976 AUGUST, PP. 42-45.

(/)

13

21
From the summary provided by AUGHENT and ANALYZE, you can identify
which procedures and functions to improve for greater execution
efficiency. In general, it pays to concentrate on procedures and
functions which are frequently called and take a significant amount
of the execution time of the total program. Procedures and funet ions
which have a large average execution time per call, but which are only
called a few times are not worth worrying about.
If one or more procedures or functions seem to dominate the results,
it might be a good idea to monitor the program with these modules
excluded from measurement. Use the except feature provided by AUGMENT.

*

*
*
*

36
37 *
38 •

39 •

40
41

*

110DIFIED, GENERALIZED, AND RENAMED
FROM "PROFILE" TO "AUGMENT" BY:
A. B. MICKEL
77/08/04.
H. U. RUBENSTEIN
77/06/01.
UNIVERSITY OF MINNESOTA COMPUTER CENTER
MI~NEAPOLIS, MN 55455 USA.
THE NAMES AND ORGANIZATIONS GIVEN HERE MUST NOT 3E
DELETED IN ANY USE OF THIS PROGRAM.
SEE THE PTOOLS WRITEUP (UNDER MEASURE) FOR
EXTERNAL DOCUMENTATION.
AUGMENT (INTERNAL DOCUMENTATION).

'c::

:z:

AUGMENT INSERTS CODE TO CREATE A TIMING FILE IN THE PROGRA~
HEADER, DECLARATION PART, AND STATEMENT PART OF THE PROGRAM
TO BE MONITORED. CODE IS ALSO INSERTED IN THE STATEHENT
PART OF EACH PROCEJURE AND FUNCTION TO WRITE CLOCK
MEASUREMENTS (AT ENTRY, EXIT, OR GOTOENTRY) TO T~E TI~I1G
FILE WHEN THE PROGRAM IS EXECUTiD.

rn

AUGMENT MUST PARSE A SUBSET OF PASCAL AND THEREFORE HAS A
LEXICAL ANALYZER. T~E TIMI~G FILE IS PROCESSED BY T~E
COI1PANION PROGRAM CALLED ANALYZE.

42
43

44 ($R-,T-,P-,U+ )

45
46
47 program augment(input, except, inter, inter2, output);
48

49 label
50 --1-3 (EXIT FOR PROGRAi~ ERRORS);
51
52 const
1-,
beginsy
53
2-,
casesy
54
endsy
3;
55
456 ()
externsy
fortransy
5;
57 ()
6-,
58 ()
forwardsy
funcsy
7;
59
gotosy
60
8;
labelsy
61
9;
procsy
10
62
prograrnsy
11
63
64
varsy
12

-0

J=>
Gl

rn
N
V1

65
66
67

68
69

70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

86 var
87

88
89
90
91
92
93
94
95
96
97
98

99

maxmodules
llmax
llmin
alfaleng
alfa
code type
symbols
namenode

modulecnt
labelptr
1 abelnode

idlen,
lastidlen:
sy:
chbuf:
identifier:
number:
key:
badnames,
readinglabels;
linelength,
colcnt:
ch:
inter:
except:
inter2:
badlist:
count:

2000;
120 ( LI~E LENGTH MAX );
72 (LINE LENGTH MI~ );
10;
taCked array [1 •• alfaleng] of char;
entry, exit, gotoentry, declare);
beginsy •• varsy;
record
----name: alfa;
link: • namenode
end'
maxmodules;
• labelnode;
record
---raEl: 0 .. 9999;
declaredin: modulecnt;
next: labelptr
end { LABEL NODE };

u-:-:

{IDENTIFIER LENGTH}
0 •• alfaleng;
symbols;
array [1 .. alfaleng] of char;
alfa;
a •• 9999;
array [symbols] of alfa;

boolean;
integer;
char;
text
(AUGMENTED PROGRAM FILE);
text
{FILE OF EXCEPTED MODULE NAMES};
file of alfa {FILE OF ALL MODULE NAMES};
"rlamenode {LIST OF EXCEPTED MODULE NA:~ES};
modulecnt {RUNNING COUNT OF MODULES};

100
101
102
103
104
105
106 procedure nextch;
107
108
begin
get(input) ;
109
ch : = input";
110
colcnt := colcnt + 1;
111
while (not eoln(input) and (colcnt > linelength»
112
-get(input);
li3
if eoln(input) then
114
colcnt ._ 0
115
116
end { NEXTCH };
117

118
119 procedure advance;
120
121
begin
i f eoln(input)
122
tl'ien
123
--writeln(inter)
124
125
else
--write(inter, chI;
126
nextch
127
end {ADVANCE};
128
129
130

131 rrocedure readid;
GLOBAL: CHBUF,CH,IDENTIFIER,IDLEN,LASTIDLEN
132
133
134
begi(J { READID
1 len : = 0;
135
repeat
136
if idlen < alfaleng then
137
- begin
138
idlen := idlen + 1;
139
140
chbuf[idlen] .- ch
141
end {IF};
142
nextch
143 ()
until not (ch in ['a' .. 'z', '0' .. '9']);
144
rr-IOlen->= lastidlen
145
then
--lastidlen := idlen
146
else
147
143
---repeat
chbuf[lastidlen] : = ' ';
149
150
lastidlen := lastidlen 151
until lastidlen = idlen;
152
pack(chbuf, 1, identifier)
end {READID};
153
154
155
156 procedure writeid;
157
var
158
--I GLOBAL: CHBUF,IDLEN
159
160
i: integer;
161
162
begin {'
177
-advance;
173
advance
179
180
until ch = ')';
181
advance
132
end {COf1HENT};
183
184
185 procedure stdcomment;
186
begin
187
188
repeat
a vance
189
190
until ch = '}';
advance
191
end {3TDCOMMENT};
192

193
194
195 procedure scan;
196

,*,

do

-0

:to>
G>

rn
N

en

197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217

218
219
220
221

222

223
224
225
226

227
228

229
230
231
232
233
234
235 {)

236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

256
257
258

259 {)
260
261
262

FIND NEXT IDENTIFIER (OR NUMBER IF READINGLABELS).
SKIP STRINGS AND COMMENTS. )
label

--n.,
GLOBAL: IDENTIFIER,CH,NUMBER,BADNAMES,READINGLABELS
function nokey(id: alfa): boolean;
var
- { GLOBAL: SY,KEY )
i, j: integer;
begin { BINARY SEARCH
1 : = beginsy;
j := varsy;
repeat
sy := (i • j) div 2;
if key[sy] <= ~then
i:=sy.1·
if key[sy] >= id then
j:=sy-1;
until i > j;
nokey := key[sy] <> id
end { MOKEY );
begin { SCAN )
while not eof(input) do
begin
while not eoln(input) do
begij!
1

ch

='

t

then
--advance
else
- - i f ch in ['a' •• 'z']
then -riegin
readid;
readinglabels := false;
if nokey(identifier) and not badnames
then
--writeid
else
-goto 21
EXIT ON KEY OR EXCEPTED 10 )
end {IF)
else- - i f ch in ['0' •• '9']
then ---rf reading labels
then
~egin

read (number);
ch := input';
gito 21 { EXIT ON LABEL}

end IF}
els-e-repeat
advance
until not (ch in ['a' .. 'z', '0' .. '9'])
else
---rf ch
then

263
264
265
266
267
268
269

begin
repeat
advance
until ch
advance
end {IF)
els-e--ifch='('
then
~egid

270
271
272
a vance;
273
274
ifch='*' then
comment
275
end {IF!
276
els-e277
--ifch= '('
278
TIJen
279
--stdcom.nent
280
281
else
--advance
282
end {'NIIILE};
233
writeln(inter);
284
nextch
285
286
end {.BILE};
21 :
287
SCAN );
end
288
289
290
291 procedure complmodule(lastl: labelptr);
292
PROCESS THE BLOCK OF A PROGRAM, PROCEDURE, OR FUNCTION TO FIND
293
THE APPROPRIATE CODE I~SERTION POINTS. LASTL IS THE HEAD OF THE
294
295
LIST OF LABELS WHOSE SCOPE APPLIES TO TrlE BLOCK. COMPLMOOULE
~UST PARSE LABEL, VAR, PROCEDURE, AND FUNCTION DECLARATIONS, AS
296
WELL AS GOTO STATEMENTS AND THE COMPOUND STATEMENT FORMING THE
297
STATEMENT PART Of EACH MODULE. }
298
299
var
300
--( GLOBAL : I DENTIFIER ,KEY, SY ,CH, READ UGLABELS, NUMBER, COUNT
301
name: alfa;
302
depth: integer;
303
params: boolean;
304
1: labelptr;
305
gotolabel: 0 .. 9999;
306
looking: boolean;
307
tag: modulecnt;
308
309
310
procedure insertnewtext(code: codetype);
311
312
begin
313
case code of
314
--entry: 315
begin
316
writeCinter, 'with ti'ning' do begin');
31'7
write(inter, 'i:=', tag:4, ';');
318
write(inter, 't:=clock;m:=O' (ENTRY});
319 {}
writeln(inter, ' end;put(timi~g); ');
320
end {ENTRY};
321
exir:322
begin
323
writeln(inter, '; ');
324
write(inter, 'with timing' do begin');
325
write(inter,
'i:=', tag:4, '; t);
326
write(inter, 't:=clock;m:=1' (S){IT});
321 {}
writeln(inter, ' end;put(timing)');
328

c:....
c

::z
rn

329

330
331
332

333

334 {}

335
336
337
333
339
340
341

342
343
344
345
346
347
348
349
350
351
352
353

354
355
356

357

358
359

360
361

362
363
36'1
365

366

367
368

369

end \2XITJ;
gotoentry:
begin
write(inter, 'with timing- do begin 'I;
write(inter, 'i:=', 1-.declaredin:4, '; 'I;
write(inter, 't:=clock;m:=2' {GOTOENTRY});
writeln(inter, ' end;put(timing);');
end {GOTOENT RY} ;
declare:
begin
writeln(inter, 'var 'I;
write(inter, 'timing:file of packed record 'I;
write(inter, 'i:0 .. 2000; 'I;
write(inter, 't:O .. 99999999;');
write(inter, 'm:0 .• 2');
writeln(inter, ' end;');
end {DECLARE}
end { CASE CODE OF }
end--{-I~SERT~EWToXT };

371

399

400
401
402
403
404
405
406

407

408
409

410

411
412

413
414

415
function nameok: boolean;
CHECK PROCEDURE OR FUNCTION NAME AGAINST LIST OF NAMES TO BE
EXCLUDED. )
var
---I GLOBAL : BADLIST, NAI~E
n: ... namenode;
looking: boolean;
begin { NAI1EOK }
n : = bad l i s t;
looking := true;
while (n <> nil) and looking do
begin
--looking := n-.name <> name;
n := n- .link
end {'rlHILE};
nameok := looking
end {NAMEOK};

3'10

begin {COf~PUlODULE}
373 {}
while not (ch in ['a' •• 'z']) do
- U Ch= ,(,-374
then
375
----begin
376
----advance;
377
if ch = '.' then
378
-- comment
379
end
380
els-e-381
---if
ch = '{'
382
then
383
----stdcomment
334
else
385
----advance;
386
readU;
387
name := identifier;
388
writeid;
389
tag := count;
390
params : = false;
391
while not params and (ch <> ';') do
392
--rr Ch= 'I'
393
then
394

372

begin
advance;
if ch = ,*,
then
---comment
else
params ._ true
end {IF}
els-e----if ch = 'I'
then
----stdcomment
else
---advance;
if params
then
----while ch <> 'I' do { READ THROUGH PARAMETER LIST}
- U ch = 'I'
then
----s tdcocnment
else
---if ch = '('
Ulen

395
396
397
398

416

417

418
419
420
421
422
423
424
425
426
42'7
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447

448

449
450
451
452
453
454
455
456
457
458
459
u,;~

=
rn
U?

~egin

advance;
if ch = '*' ~
comment
end {IF}
els-e-----ad vance;
i f tag = 1 { MAIN PROGRAM
then
----write(inter, ',timing) ')
else
----write(inter, chI;
nextch;

<-

=
=
rn

scan;

{)
{}
{)
{}

if sy in [forwardsy, externsy, fortransy]
then -----writeid
else
~egin

count := count + 1;
if count = maxmodules then
-- begin
---writeln(' *too many procedures and',
, functions to augment.');
goto 13
end;
write(inter2, name);
if sy = labelsy { LABEL DECLARATION
Ulen
~egin { READ LOCAL LABELS
writeid;
readinglabels := true;
scan;

repeat
new(l) ;
l-.labl := number;
l-.declaredin := tag;
write(inter, number: 1);
l-.next := lastl;
last! := 1;
scan

until not readinglabels

--0

:x>
Gl

rn
N

00

lIb1

462
463
4611
465
466
467
468
469

1I70
1I71
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
4911
495
496
497
493
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
5111

515
516
517
513
519
520
521
522
523
524
525

526

end lIF J ;
while sy in [casesy, endsy] do [ TYPE DECLARATION)
begin wr i teid;
scan
end ['"HILE);
if tag = 1 [ MAIN PROGRAM
then
--insertne'.text (declare)
else
---if not (sy in [beginsy, funcsy, procsy]) then
writeid;-if sy = varsy
then
-oegin
scan;
while sy in [casesy, endsy] do
begin tCASESY,ENDSY IN ATrANONY:10US TiPE )
'.r He id;
scan
end [wHILE)
end [1m
while sy in [funcsy, procsy] do
begin writeid;
complmodule(lastl)
end [WHILE);
if sy
then

= beginsy

[ STATEMENT PART }

~egin

depth := 1;
writeid;
i f tag = 1 [ MAl N PROGRAi1 )
then
--writeln(inter, ' rewrite(timing);')
else
--writeln(inter);
if nameok then
insertne~text(entry)
end [IF}
els-e---Segin
writeln(' '''begin'' expected.');
goto 13
end [ELSE);
repeat [ LOOK FOR LAST ENDSY )
scan;

if sy
then

= gotosy

~egin [ CHECK AGAINST LOCAL LABELS )
readinglabels := true;

scan;
gotolabel := number;
readinglabels := false;
looking := true;
1 := lastl;
while (1 <> nil) and looking do
- - - if lA.labl ;-gotolabel
then
---rooking := false
elSE!

-----1 ._ lA.next;
527
if looking
528
then
529
~egin
530
writeln(' *undeclared label '
531
gotolabel: 1);
532
gIto 13
end IF)
533
els-e534
~egin
535
536
i f lA.declaredin <> tag then
begin [ EXIT GOTO} - 537
538
writeln(inter, 'begin');
539
if nameok then
540
-- insertnewtext(gotoentry)
541
end [IF);
542
write\inter, 'goto " gotolabel: 1);
543
if lA.declaredin <> tag then
544
writeln(inter, ' end'-)-545
end [ELSE)
546
end [IF!
els-e547
- - i f sy in [beginsy, casesy]
548
then 549
550
---Segin
depth ._ depth + 1;
551
552
writeid
end [IF}
553
els-e554
i
f sy = endsy
555
5')6
then
---Segin
557
558
depth := depth - 1;
559
if depth <> 0 then
writeid
560
end [IF}
561
562
else--begin
563
564
-----writeln(' ·"end" eXpected.');
565
goto 13
end [ELSE)
566
until depth =--u;
567
568
if nameok then
insertne~text(exit);
569
~riteln(inter, 'end');
570
571
~ [ELSE);
scan
572
end [COflPLMODULE};
573
574
575
516 procedure readbadnames;
577
var
578
- - [ GLOBAL : BAD LIST ,CHBUF
519
n: ,. narnenode;
580
i:
•• alfaleng;
581
582
583
begin [ READBADNA'1ES )
584
~riteln('the following procedures will not be augmented' :50);
585
586
wrHeln;
repeat
587
new (n) ;
588
for i := 1 to alfaleng do
589
---if
eoln(except)
590
then
591
----chbuf[i] := ' ,
592

c.....

=
:z
rn

-0

J>
CD

rn
N
cD

else
--read(except, chbuf[i]);
readln(except) ;
pack(chbuf, 1, nA.name);
n A.link := badlist;
bad list := n;
writeln(nA.name :25);
writeln
until eof(except)
end-y-[EADBADNAMES };

593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641

begin { ~AIN PROGRAM
rewrite(inter);
rewrite(inter2);
reset(except);
ch:= input A;
count:= 1;
colcnt: = 1;
linelength:= llmax;
lastidlen:= alfaleng;
{} linelimit(inter, maxint);
,;
key[beginsy].- 'begin
, .,
key[casesy
].- 'case
, .,
key[endsy
].- 'end
,;
I} key[externsy ] ._ 'extern
, .,
{} key[fortransy] ._ 'fortran
,,
{} key[forwardsy] .- 'forward
key[funcsy
]._ 'function , .,
, .,
key[gotosy
].- 'goto
key[ labelsy ] . - 'label
:~
key[procsy
]._ 'procedure ,
key[programsy]._ 'program
';
key[varsy
]._ 'var
';
badlist:= nil;
if not eof(except) then
- readbadnames;
-scan;
readinglabels:= false;
if sy = programsy
then
--Segin
write(inter, 'program');
complmodule(nil)
end {IF}
else--writeln(' *"program" expected.');
13:
end
AUGMENT }.
1 {.
ANALYZE - ANALYZE AND SUMMARIZE EXECUTION TIME
PERFORMANCE MEASUREMENTS FROM AN AUGMENTED
2 *
PASCAL PROGRAM.
3 *

.

4 *
5 •
6 *

7
8
9

*
*
*

10 •
11 *
12 *
13 *
14 *
15 *
16 *
17

*

S. MAnliN
AND
M. MISSALA
1975.
POLISH ACADEMY OF SCIENCES COMPUTER CENTRE.
PKIN, WARSAW POLAND.
MODIFIED, GENERALIZED, AND RENAMED
FROM "PRINRES" TO "ANALYZE" BY:
A. B. MICKEL
77/11/18.
H. U. RUBENSTEIN 77/05/15.
UNIVERSITY OF MINNESOTA COMPUTER CENTER
MINNEAPOLIS, MN 55455 USA.
THE NAMES AND ORGANIZATIONS GIVEN HERE MUST NOT BE

18 *
19 *
20 *
21 *
22 *
23
24 I• I
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

DELETED IN ANY USE OF THIS

PROGRA~.

SEE THE PTOOLS WRITEUP (UNDER MEASURE) FOR
EXTERNAL DOCUMENTATION.
ANALYZE (INTERNAL DOCUMENTATION).

•

*

ANALYZE READS TWO FILES. INTER2 IS THE FILE CONTAINING
THE MODULE (PROCEDURE AND FUNCTION) NAMES WHICH ARE USED
WHEN THE RESULTS ARE SORTED AND WRITTEN OUT. TIMING IS
THE FILE CONTAINING THE EXECUTION TRACE OF THE PROGRAM
BEING MONITORED.

I

*
*

*
*

*
*•
*
*

WITHIN ANALYZE, THE PROCEDURE NAMED PROCESSBODY DOES THE
ACTUAL ANALYSIS BY DETERMINING EVERY TIME INTERVAL:
TIME[EXII] - TIME[ENTRY].
EVERY GOTOEXIT FROM A PROCEDURE IS CONSIDERED TO BE A
SPECIAL KIND OF PROCEDURE ENTRY, SO THAT ALL PROCEDURES
WHICH, UP TO THAT TIME HAVE BEEN ENTERED BUT NOT NORMALLY
EXITED, ARE ALL EXITED BY THE GOTOENTRY. SEE THE COMPANION
PROGRAM CALLED AUGMENT.

•

I

*•

*

I$R-,T-,P-,U+}
program analyze(output, inter2, timing);
label
--1-3;

const
---alfaleng
maxnames
55

10;
2000;

56
57~

58
59
60
61
62
63
64

alfa
tagrange
measurement

65
66

counter

67
68

69
70
71 var
72
73

74
75
76

77

rn

timing:
inter2:
modules:
maxtag,
tag:
progtime:
totaltime,
totalcalls:

packed array [1 •. alfaleng] of char;
1 •. maxnames;
packed record
tag: tagrange;
time: o .. 99999999;
mark: (entry, exit, gotoentry)
end;
record
count: integer;
name: alfa;
timespent: integer
end;
file of measurement;
alfa;
array-rtagrange] of counter;

rrreO?

tagrange;
integer;

78
integer;
79
80
81
82 procedure sort(min, max: tagrange);
83

=
=
rn

84
85
36
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

loa

109
110
111
112

QUICKSORT AITH BOUNDED RECURSION DEPTH }
REQUIRES MIN <= MAX }
var
low,
high: integer;
midkey: alfa;
temp: counter;

begin
repeat {PICK SPLIT POINT}
midkey := modules[(min + max) div 2).name;
low := min;
high := max;
repeat {PARTITION}
while modules[ low). name < midkey do
---row := low + 1;
while modules[high).na,ne ) midkey do
~gh : = high - 1;
if low <= high then
begin
---temp := modules[low);
modules[low) := modules[high);
modules[high) := temp;
low := low + l'
high : = high -' 1
end'
until lOW') high;

113

{RECURSIVELY SORT SHORTER SUB-SEGMENT}

114
115
116
117

if high - min < max - low
then

118

119
120
121
122
123
124
12'5
126
127

~egin

if min < high then
-- sort(min, hTgni;
min .- low
end
else-

~egin

i f low < max then

sort(low, max);

max : = high

end
until max <= min

138

146
l'H

148
149

get( timing)

l~~
mOd~iime := moduletime + timingA.time;
155
total calls := totalcalls + 1;
156
with modules[moduletag) do
15'7
-----Oegin
-158
count := count + 1;
159
timespent .- timespent + moduletime
160
end
161
end {PROCESSBODY};
162
163
164 begin {MAIN PROGRAM}
165
reset(inter2);
166
tag: = 1;
167
while not eof(inter2) do
begin
-168
169
with modules[tag) do
170
~egin
-171
read(inter2, name);
172
count := 0;
173
timespent .- 0;
174
end;
175
tag := tag +
176
end'
177
maxtag':= tag - 1;
178
reset(timing);
179
if eof(timing) then
180
-- begin
---181
writeln(' *timing file empty.');
182
go to 13
183
end;
184
progrrme:= timingA.time;
185
totalcalls:= 0;
186

128
end {SORT};
129
130
131 procedure processbody;
132
PROCESS TIMING FILE OF DYNAMIC MEASUREMENTS. }
133
134
var
135
---moduletag: tagrange;
136
137
moduletime: integer;

139
140
141
142
1113
144
145

IS NOT ENCOUNTERED OR IF A GOTOENTRY IS
ENCOUNTERED INTO THE CURRENT MODULE. }

150
151
152

begin
moduletag := timingA.tag;
moduletime := - timingA.time;
get(tirning) ;
while timingA.mar~ = entry do
begin
-moduletime := moduletime + timingA.time;
processbody;
moduletime := moduletime - timingA.time;
if (timingA.mark = gotoentry) <= (timingA.tag = moduletag)
-- then { ONLY ADVANCE THE TI.~ING FILE IF A GOTOENTRY

187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215

processbody;
total time := timingA.time - progtime;
page(output);
writeln;
writeln;
writeln(' performance measurement summary for pascal program:
modules[l].name,'.');
writeln;
writeln( 'execution time': 62);
'writeln('calls': 27, '(milliseconds)': 35);
writeln('module': 9, 'times': 13, 'percent': 11, 'average': 15,
'module': la, 'percent': 11);
writeln('name': 8, 'called': 15, 'of total': 11, 'per call': 15,
'total': 8, 'of total': 13);
writeln(' ----------', ,------': 12, ,--------,: 11,
,--------,: 15, ,------,: 9, ,--------,: 12);
if maxtag ) 1 then
-- sort(l, rnaxtag);
for tag := 1 to rnaxtag do
---with modules[tag) do------Oegin
-write(name: 11, count: 12,
«count * 100) I totalcalls): 11:3);
if count = 0
then
----write('----': 15)
else
----write«timespent I count): 15:2);

:z
fTl

:e::
U>

'-

=

:z
fTl

f-'
lD

........
00

writeln(timespent: 9,
216
«timespent
100) I totaltime): 12:3)
217
end·
218
--'
219
writeln('
12,
11,
1=:======': 15, 1======': 9, '========': 12);
220
OIriteln( 'totals': 9, totalcalls: 14, '100.000': 11,
221
(totaltime I totalcalls): 15:2, totaltime: 9, '100.000': 12);
222
223 13 :
224 end {ANALYZE).

*

==========', '======':

PROGR.lH1S

Articles

'========':

Extensions to PASCAL for Separate Compilation
Richard J. LeBlanc
School of Information and Computer Science
Georgia Institute of Technology
Atlanta, Georgia 30332

z
rn

P - 1 Printme

(* Nearly every programming language has t? have a program which can reproduce its source

text ~s ?utput. In ~976: Pascal enthus1ast, John Strait of the University of Minnesota,
(who.1n 71dentally ma1nta1ns the COC-6000 compiler for the world), wrote such a program,
and 1t 1S presented below .. When Urs Am~ann, of E.T.H., Zurich, (who incidentally
author~d the COC-6000 comp1ler), saw th1S program, he said he had written a shorter
one uS1ng a case statement. We have not seen it, but we would like to. *)

PROGRAM PRI~T~E(OUTPUT);
(*JPS 76/05/26.*)
CONST FI~ST~ALF = 9;
SECONDHALF = 10;
LENGTii = 22;

Q = "";
VAR I,J: INTEGER;
IMAGE: ARRAY[O •• LENGTHJ OF
PACKED ARRAY[I •• 40J OF CHAR;
BEGIN (* PRINTME *)
PIAGE [ OJ := 'PROGRAM PRINT,'IE(OUTPUT);
IMAGE[ IJ := ' (*JPS 76/05/26.*)
IMAGE[ 2J := 'CONST FIRSTHALF = 9;
IlIAGE [ 3J:=
SECONDHALF = 10;
IMAGE[ 4J := ' LENGTH = 22;
I)!AGE[ 5J :- ' Q = " " " " ;
IJ1AGE[ 6J :- 'VAR I,J: INTEGER;
';
IMAGE[ 7] := ' IMAGE: ARRAY[O •• LENGTH] OF
I>lAGE[ 8J : = '
PACKED ARRAY[1..40J OF CHAR;
I)!AGE[ 9J := 'BEGIN (* PRI~T)\E *)
IMAGE[IOJ := 'FOR I := 0 TO FIRSTHALF DO
IlIAGE[IIJ :- ' WRITELN(IMAGE[I]);
';
IlIAGE[l2J :- 'FOR I := 0 TO LENGTH DO
IMAGE[l3J:=
BEGIN WRITE("IMAGE[",I:2,"J := ",Q);
IMAGE[14J:=
FOR J := 1 TO 40 DO
IIIAGE[15]:=
IF IMAGE[IJ [JJ = Q
IIIAGE[l6J:THEN WRITE(Q,Q)
L'IAGE[l7]:=
ELSE WRITE(I~AGE[IJ [JJ);
I)!AGE[l8J:=
WRITELN(Q,";")
IMAGE[19]:=
END;
IMAGE[20J := 'FOR I := SECONDHALF TO LENGTH DO
IMAGE[2lJ := ' WRITELN(IMAGE[IJ)
U!AGE [22J := 'END (*PRINT~E*).
FOR I := 0 TO FIRSTHALF DO
WRITELN(IMAGE[I] );
FOR I := 0 TO LENGTH DO
BEGIN WRITE('IMAGE[',I:2,'J := ',Q);
FOR J := 1 TO 40 DO
IF IlIAGE [I] [JJ = Q
THEN WRITE(Q,Q)
ELSE WRITE(UIAGE[IJ [JJ);
WRITELN(Q,';' )
END;
FOR I := SECONDHALF TO LENGTH DO
WRITELN(IlIAGE[IJ)
END (*PRINTME*).
>

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.
This weakness is particularly evident when
modifications are being made only to limited parts of a
program.
Modifications of this
sort are common,
for
example, in
the maintenance or
extension of a PASCAL
compiler.
The extensions described below allow the
creation
of a
global
environment,
separate compilation of
routines using that environment, and
additions
to
the
environment without
requiring recompilation of existing
routines and declarations.
Four kinds of modules are
recognized to implement these features:
1) Declaration

modules

are

used

to

create

an

en-

vironment.
2) Routine modules are used to provide
the
bodies
of
routines declared in an environment.
3) Environment
extension modules are used to make extensions to an environment.
4) Main program modules are used
to compile
the main
program body.

'-

=
z
rn
I-'
 ::=
  .
 ::=
declarations «file identifier»
;
 ::= 
 

 ::= 
 (, (routine heading>)
 ::=  I

within the module may be declarations of constants,
types and
variables just as in a standard main program.
Following these declarations come
the
headings
of
routines that are
to be part of the environment.
These
headings are identical to the headings in normal routine
declarations.

"U

:J>

Any identifier defined in a declaration module may
be referenced in any other module compiled using the environment created from the declarations.
This mechanism
allows routines compiled
separately to call each other
and to
use
the
same global
constants,
types
and
variables.
Compilation of a declaration module creates

Gl

rn

a description of an environment.
This description is
used to do all type checking at compile-time, just as if
separately compiled
routines had
been compiled as a
standard program.
Routine modules
 ::  ::-  routines
(  {. } );
 ::- environment «file identifier»
::

 

The file in the environment head specifies the environment in which
the module
is to be compiled.
The
list of identifiers in the heading
tells the compiler
which of the routines defined in the module are to match
declarations in the environment and thus are to be callable from outside of the module.
Routine modules may
also contain declarations of constants, type, variables
and local routines.
The variables so declared are
statically allocated
and
thus
retain their values
between calls to the routines in the module.
This makes
routine modules

useful

for

structures to
only
those
manipulate and reference them.

limiting

routines

access

that

to

data

need

to

A routine module defines a new name scope,
so
identifiers used
in the global environment may be
redefined within a module. When a routine declared
in
the global environment
is defined in a routine module,
the declaration of its parameters is repeated and
the
types must match
those specified
in the environment
declaration.
(Since the parameter
names
are
not
relevant to
type checking, they need not match those in
the declaration.)
Environment extension modules
 :: 
 ::extend «file identifier>,  ::   •
Main program modules look exactly like standard
PASCAL programs except that the heading is prefixed by
an environment heading
to supply an environment file

Articles

This paper describes work supported by the Madison
Academic Computing Center of the University of Wisconsin
- Mad ison.

(* Received 78/02/03 *)

'-

=
Z

rr1

f-'

<.0

"00

What Are Pascal's Oesign Goals?
In [43, Wirth stated the following design goals:

.

Robert D. Vavra
March 13, 1978
Asa long-time reader 0 t Pascal News (PN), I have enjoyed the many
articles in which people have discussed various features which could
be added to Pascal, but I have been unable to take much of the
discussion seriously. In arguing for or against some particular
feature, writers have rarely invoked Pascal'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

To have a wide ran~e of applicability through proximity to actual
computer structure, rather than through a host of features
collected from various fields of usage.
To promote both co.pile- and run-time efficiency by omitting
features which feOLife multi-pass compilation or elaborate
run-time support.

a serious discussion.
If a discussion about a language feature is to be taken seriously (by
me, at least), the writer must aemonstrate that it is firmly based on
Pascal's design goals. It is not enough to support a proposed leature
by saying that it is easy to use or implement, nor to reject a
proposed feature by saying that it is only a "favourite feature". A
writer should weigh a proposed feature against each of Pascal's design
goals by pointing out which goals favor it and which do not, and
should discuss why the tradeoff is desirable.
_ll of this presupposes that Pascal's design goals are well-understood
and generally accepted. In fact, Pascal's design goals are rarely
mentioned in PN, so I sLspect that they are not well-understood.
further, I think that much of the debate over various language
features is really a decate over what Pascal's design goals should be.
This article attempts te remedy this situation by summarizing what
Wirth's design goals for Pascal originally were, and by starting a
discussion of what Pascal's design goals should now be.
In both the original ane revised reports [1,2J, Wirth'S stated design
goals are suitably mode st:

.
*

To make available a language suitable to teach programming as a
systematic discipl ine.
To allow development of implementations which are both reliable
and efficient.

To permit clarity and rigour of description by using a small
number of fundamental concepts, thereby making program
verification easier.

*

To promote machine independence (portability) by extending the
definitional capabilities of the language to such a degree of
generality that machine dependent entities (types and operations)
Iray appear as special cases selectable by means of predefined
names, and whose use presumably enhances the efficiency of
programs executed en the particular system in which they are
defined.

In [5J, Hoare and Wirth summarize all these goals as:
To make available a general purpose language efficiently
implementable on muny computers and sufficiently flexible to be

~ble

to

.
.
..

To gain more insight into the methods of organizing large
programs and managing soft.are projects.
To obtain a home-mode tool which can easily be adapted to
npeds.

oth~r

::2:

application.

find further details in each of the referenced

As a starting point for a discussion of what Pascal-s design goals
Should now te, I suggest the following list:

Introductory

I-'
CD

""-J
00

Pascal s~ould be usable in almost any application
area or almost any computer system. There should be
reasonably easy ways to manipulate both numeric and
non-nuJer;c data. to make use of pre-existing
software subsystems (either in libraries or in the
operat ;ng system), and to ,implement new
genera l-purpose software subsystems in Pascal.
Pascal should be usable by beginning programmers in
an int roduttory programming course.

To demonstrate that a language with a rich set of flexible data
and program struct.ring facilities can be implemented by
an
efficient and mode rately sized compiler.
To demonstrate that the use of a machine-independent language
kith flexible data and program structures for the description of
a co~piler leads tc an increase of its readability, verifiability
and conseQuently its reliability, and that this gain need not be
offset by any 10ss In effi~lency.

in m~ny arEas of

c....

=
rn

purpose

To make available a notation which takes into account the various
new insights concerning systematic methods of program
development.

serve

Interested readers can
papers.

To make available c notation in which the fundamental concepts
and structures of ~rogramming are expressible in a systematic,
precise, and appro~riate way.

*

C/l

To promote reliabi lity and efficiency of compilers by providing
a language which is simply and regularty structured, thereby
allowing the compi lers to be simply and regularly structured.

General
In [33, Wirth stated the following design goals:

rn

It should be

possible for them to write simple programs without
needin, detailed knowledge of large portions of the
Language, e.g. 1/0.
lOw leve l

Pascal-s features should be close to those
supported by current computer systems. Any
higher-Level abstractions (e.g. lists, strings,
ilol should be supported by .riting n~w typ~s and
procedkres in Pascal.

-0

»
G")

rn

Fortable

Softwa re written in Pascal should be reasonably
easy tc move from one computer system to another.
It should be easy for programmers to isolate
implementation dependencies in a few places within
pfograws. There should be a minimal number of
situat ions in which the actions of a program are
tlundef ined" or "defineo by the

Pascal should include a minimal number of
fundamental concepts.

Systel"ldt ic

Pascal should encourage the programmer think
systematically by allo.ing him or her to
concentrate on a small section of the program at a
time. Fascal should minimize the number of special
rules .hich must be learned, instead relying on
genera l rutes which appLy in all situations.

Otviously, much more neods to be said about Pascal's design goals. For
starters, important des ign goals may need to be added (e.g.
reliability, replace.ent for fortran). Additionally, each of the
design goals needs to be more fully explained (e.g. what does
"thinking systematically" really mean). Finally, the implications of

the entire set of desigr goats need to be explored (e.g. are the
present e~tension mechanisms powerful enough to allow the language to
b€ general purpose, low level, and small?).
1 hope to find the time to write more about Pascal's design goals, and
I encourage others (esPtcialLy those who are proposing language
features) to do the Same. I look forward to a continuing dialogue in
p~ on this important to~ic.

References

1. N. Wirth, The Progromming Language Pascal. Acta Informatica 1
(19711.
Jensen and N. Wi rth, PASCAL User Manual and Report.
Springer-Verlag (1974).

1(.

3. N. ~irth, The Desigr of a PASCAL Compiler. Software - Practice and
['perience vol. 1 (1971).
4. N. wirth, The Progrdmming Language Pascal and its Design Criteria.
Infotech State of the Art Report No.7, High Level Languages
(1972).
~.

T. Noodt
University of Oslo

implementation".

Sma II

2.

PASCAL ENVIRONMEN'r INTERFACE

-,.,--------~---------

C. Hoare and N. ~irth, An Axiomatic Definition of the Programming
language PASCAL, Acta Informatica 2 (1973).

(* Received 78/03/20 *)

I am at present working on a Pascal implementation for the
Nord 10, running an interactively oriented operating system.
(The Nord is a 16-bit Norwegian-made computer. It comes in two
variants with 48-bit and 32-bit reals, respectively.) The
Pascal Report does not say too much about how to interface a
compiler to a computer system and its users. To further
complicate matters, what it does say about this relates to a
batch system, and is worthless or unusable in an interactive
system.
I think that the design of the Pascal environment is fairly
important, and that a certain unification would be of value.
Below I have schetched a few thoughts about this, and also
make some proposals.
<-

=
=
rn

A
language
is
often judged on the way a particular
implementation interfaces to lls environment, i.e.
1) what tools are available to a user for
the construction,
compilation, and execution of a program, and
2) what are the interfaces between the implementation and
other systems on the computer (particularly the operating
system) •
Examples of such interfaces are: - What the available options
are, and in what way they can be set or reset.
How a
specific file is associated with a file name within a program.
Pascal implementors and fans have chosen to step off the
FORTRAN, BASIC, and PL/I highways to enjoy the much nicer view
from the Pascal path. The implementors being such rugged
individualists, there probably are as many different Pascal
environment interfaces as there are Pascal implementations.
Implementors are
inventing
and
re-inventing
interface
features, giving different names to the same feature, or
implementing the same feature in a sli~~!!y different way.

-u
~

Since all the big computer vendors soon will become Pascalers
(do you doubt it?), the situation will become worse. In vendor
A"s Pascal implementation, all the extra-language
"nice
features" will be totally incompatible with those of vendor B.
Goodbye portability.

Gl

rn

So what

A

All Pascal
implementations need
a
minimal
environment
interface,
and often a broader interface is highly desirable.
There is no reason why this interface should be a completely
new one for every new implementation. A little effort can give
a lot towards unification, at least in future implementations.
would like to see a discussion about what such an interface
ought
to
contain,
ending
up
with someone making a
recommendation list of features which seem necessary or highly
desirable, with the heading:
If you want to include a feature from the list below in
your Pascal implementation, it is recommended that you
adhere to the specifications stated for that feature.
To initiate a discussion about these matters, I will present
my tentative list for
the extra-language features in the
Pascal implement )tion I am working on at present.

Option

Effect

Default

L

List program
List symbolic object code (MAC)
Reals will occupy n words
Sets will occupy n words
Generate run-time test on
indexing, sub-range assignments etc.
Convert all lower-case letters
outside strings to upper case

on
off

Rn
Sn
T
U

has

not

been assigned a value, will have the

The compiler command
$INCLUDE filename
will include the content of that file at this point
source text. The command may be used recursively.

in

the

OPTIONS option-list
Set or reset options according to option-list, which has
the same syntax as if it appeared within a Pascal comment.
C-

COMPILE sourcefile. listfile, objectfile
listfile and objectfile are optional.
turned off if listfile is left out.

The L-option is

The procedure OPEN enables association between a specific file
and a Pascal file variable at runtime.

Command

Effect

$SET flag
$RESET flag
$IF flag

flag gets value !E.~
flag gets value !~!~'=Include succeeding source lines if
flag is t.~!:.e.
End of $IF of same flag.
Include succeeding lines if flag is false.
End of $IF or $ELSE of same flag.

(/)

SET flag
RESET flag
Set and reset conditional compilation flags.

on
off

:z
rn
::e::

The command processor is a part of the compiler which accepts
commands specifying parameters for a compilation.

File access
-,--"------------

flag -> identifier

$END flag

which

fal~.~.•

3
8

The compiler will conditionally skip parts of the source text,
depending on the value of flags which can be set by the user.
Source lines containing commands to the compiler must have the
character $ in position 1.

$ELSE flag

flag

value

pro<:",=-9.~_,=-

OPEN(F: filetype; NAME: string;
var STATUS: integer) .

F is associated with the file with name NAME. The file is
opened, and status for this operation is left in STATUS.
The parameters NAME and STATUS are optional. If NAME is
not present, the system wil enquire the user to specify
the file.
If STATUS is not present and an error occurs,
the job will be aborted if in batch mode or if NAME was
specified, otherwise the user will be asked to respecify
the file name.
£~oce~~£~

CLOSE(F: filetype)

.

The file is closed, and F is disassociated from the file.

The following standard procedures will be implemented.

=
:z
rn

~~dur~ TIME(~~£

HOUR, MIN, SEC: integer)

l2.£2.cedu£~ DATE(II.~E.

YEAR, MONTH, DAY: integer)

SUBRANGES AND CONDITIONAL LOOPS
*Judy M. Bishop
Computer Science Division
University of the Witwatersrand
Johannesburg
2001 SOUTH AFRICA

function TUSED: real
(* gives accumulated CPU time in seconds *)

Several difficult problems arise in the design and running of
interactive programs. OPEN and CLOSE take care of run-time
association of files.
Another nasty problem is that of reading data from a terminal.
If the data does not have the correct syntax, it is of course
not acceptable to abort the program. The
CERN
Pascal
implementation has solved this problem in the following
manner:

=
rn

The subrange facility in Pascal is an aid to runtime security
for fixed boundary constructs such as counting (for) loops and array
subscripts. The relevant types can be precisely-aild naturally
defined and the compiler can minimise the amount of runtime 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~

THE PROBLEM
Consider the definitions

There is a standard procedure
SET INTERACTIVE
which when called, will make all error exits from READ save an
error status instead of aborting the program. This status can
be read with the function COMPLETION.

~

index = min .. max;

var

i : index;

and the conditional loop
L.

i

the features I have
to add or subtract

:= mini

while (i
begin

Some of the specifications above are vague, partly because I
do not feel that a long, detailed document is necessary at
this stage. Also, your own interpretation or evaluation of a
feature may be as good, or better, than mine.
invite criticism and comments on
described above. You are also inv ited
features.

[DJd

<=

max) and condition do

[D2]

(* something *)

i

:= succ(i)

end;
If the condition remains true, an attempt will eventually be made to
set i
to succ(max) - a quite normal way of triggering the end of
the loop. However, because i's type was precisely defined,
succ(max) does not exist! Rewriting the loop with the tests at the
end gives a similar error with respect to pred(min) , i.e.

However, I am not looking for an environment interface list
which is as long as possible. Think ecologically, and do not
let the environment pollute Pascal!

i := pred(min) ;
repeat i := succ(i);
(* something *)

until
March 1978

(* Received 78/03/20

*)

(i

=

max) or condition;

Even without a compiler or program verifier run, it is obvious
that these loops are inconsistant with the definitions [D~. If the
loop had only the test on i , then the for statement is the appropriate construct and the undefined nature-Df the final value is taken
care of by the compiler. At least, it should be, but only the B6700
does this. According to Sale's Pascal Compatability Report, the
various final values are

* Previously

Judy M. Mullins
Computer Studies Group
Southampton University
ENGLAND.

=
=
rn

EXAMPLE

undefined

B6700

max

CDC 6000 , Univac 1100
Dec-lO, ICL1900, ICL2900

succ(max)

function deficit (since : months)
var

m: xmonths;

: boolean;

negative: boolean;

begin
Do these options apply equally to succ? Like Sale, I think they
should not: an implementation should have a detectable undefined
value and succ(max) should yield it. This does not solve the
original problem which was to allow a succ(max) for the p~rposes
of controlling a loop.

negative := false;
begin
negative

Typically, this is achieved by weakening the type definition
to one of

..

~

index

min

or

~

or

~

index
index

predmin
predmin

f!J4]

Deficit will work with the definitions in [D~ plus either those in
(06) or [07). I t could be called by

the subscript type of a

if deficit «*since the*)
or by
~~

6 (*th month*»then

if deficit «*in*) dec»then ..•

and not one of
This is made possible by keeping max (in this case dec) symbolic and
by making use of succ instead of +1. In all compilers known
to me, succ(m) is equivalent to m+l ,that is, it does not invoke
a function call.

In teaching programming to undergraduate students at
Southampton, we made subranges "compulsory".
(This can be done
by omitting to mention the predefined types integer and real.) We
were also blessed with a security-conscious compiler.
In order to
avoid untold "out of range" errors and general disillusionment
in Pascal, we developed the following convention:


Gl

rn

lenght - with 'n' as maximum lenght - With formatted input, it would
be better to read the complete string in the same way as it is possible to write it (also without format). lack and Unpack are useful pro
cedures to process a character in a string but they are not sufficie~t
to use strings in programs, one must provide the complete set of oper~
tors.
We think that a good way of re-design this data type is to introduce
string (n) as base data type.
3 - Formatted input: we h~e read the proposed solutions of the quarrel
in Fascal Newsletters, but is not a practical day-to-day solution. On
the other without formatted input is difficult to use PASCAL in com _
mercial applications because a blank in a (commercial) card is as important as a character.
4 - Case statement: we enphasize the utility to have:
~ expression of
value 1:

J E. POURNELLE AND ASSOCIATES
12051 LAUREL. TERRACE

STUDIO CITY, CALIFORNIA 91604

(213) 762-2256

2 Feb 1978
Dear Mr. Mickel,
I have located a PRIMER of PASCAL and although I haven't
obtained i t yet--the bookstore is very slow-- i t promises to
solve most of my bibliographic problems.
In your package with the back issues of the newsletter you
noted that you have a good PASCAL for a Z-80 system with disks.
My system is a Cromemco Z-2 with 48 K RAI1 and 16 K ROM, iCom
disks with FDOS-3;
CPM is also available. At~. f,.,..,~ TJI\.(.~eL
cc,.c,~H(

.0
(.Air.>«,

value n:
otherwise:
in addition to actual , or abbreviate procedure to proc? It
is just pointless. Alternately, if the compiler is meant to be used in-house
alone, why publicise it in News. Still, enough of gripes. I applaud the setting up of the ICL clearing house. PASCAL now has a canonic implementation
for CDC Cybers, Decsystem lOs, UNIVAC 110s, and ICL gear. The IBM and PDP-II
situations are the most worrying, though I think the rumors I get suggest that
the AAEC version (see p94) of IBM is quite good (if you keep aw&y from the
extensions).
Overview: If this sounded critical in places, please take in it context.
think News is growing up, and the standard of news and contribution is getting
much better. I'm glad we are going to have an 'Algorithms Section', and I
hope we'll have critical contributions on what's published there. A lot of
the portable software I send off for isn't, and requires work to repair the
defects which should have been done by the designer. On extensions, I'd really
suggest that everyone stop writing them into News since we have too much already.
Checklists of troublespots would be welcome, but no new ideas please. For my
piece of mind alone, if not Andy's.

quite clear on, but waiting a bit on any extensions until I see something all

are agreed on. It is only a pity this effort is two years or so too late to
forestall the variety. I'm delighted to see the bugs in PASCAL-P being brought
out; I find I can detect the ancestry of compilers by the results they give to
some test programs. And of course errors shouldn't be propagated.

C/)

Thanks
It is now two years since Andy took up the task of News editor, and just so he
doesn't despair and think the task thankless, I'd like to express all Pascallers
thanks to you Andy, for the tremendous job you've done. I don't know how you
find the time, really I don't. Anyway, thanks.

<-

THE UNIVERSITYOF KANSAS/LAWRENCE, KANSAS 66045

have it, but it is obvious that Kempton isn't a teacher of programming! Do
whatever you want if you've got your own version about setting such defaults.

They're nothing to do with PASCAL. (6) No comment needed. (7) God help us,
why? Cannot input forms be identical to output forms and those in the language
too? I regard things like 1. or .4 as quite abnormal; most scientists don't
write them that way anyway. (8) What's wrong with Wirth's suggestion of write In?
(9) Some compilers do this now. (10) Possibly pre-defining more constants is
a bit of a sledgehammer; a prologue to portable programs can invite users to
change a const part ot suit their machine.
Pages 4l-~The set of Fraley extensions is too large to comment on. Most
of them fall far, far beyond any current ideas of standardization of PASCAL
which must include its warts as well as its beauty. I'll only comment on one
semantic ambiguity at the end. (1) This is a violation of the principle of
environmental independence of procedures; probably an oversight in PASCAL-Po
The ICL and Tasmania B6700 do it properly; the compiler is marginally simpler!
Pages 48-53: What a welter of desire to change PASCAL! Can I re-iterate what
Andy said: basic PASCAL is not up for grabs so that everyone can add their
favourite feature. The Revised Report needs tidying up, yes, after all it was
written for communication not as a standard. (Writing a standard calls for the
same intellectual effort as proving programs correct.) But not wholesale
reVlSl0n. Only a very few 'agreed extensions' seem worthy of writing down;
one that appeared in these pages was allowing of a wider class of type-changing
procedures. This might be worth it if it stops people misusing variant records
for the purpose (a very difficult thing to detect).
Pages 66-80: Standards. It seems to me now that we could tidy up the loose
ends if only all these efforts don't get in each other's way. It'd be a
disaster if everyone started modifying compilers to fit into different views.
I'm adopting the policy of still fixing bugs and things the current Report is

=
rn
::E

Department of Computer Science

=

=
rn

18 Strong Hall

913 864-4482

1--'

27 February 1978
Pascal User's Group

c/o Andy Mickel
University Computer Center: 227 EX

208 SE Union Street
University of Minnesota
Minneapolis, MN 55455

Dear Andy,
Shame on you!
I expect that the only reason you included R. A. Fraley's
papers on "Suggested Extensions to Pascal," in PN 1111, was to scare the
living begabbers out of us. Congratulations. You were terrifyingly
successful. By the end of the second paper I was quaking in my chair
(actually, I was expecting to see such things as proposals for long and
short int, packed decimal, on condition constructs, sort, and all of the

rest of Fortran (ugh!), COBOL (ugh! ugh!), and PL/I (ugh! ugh! ugh!) to
be included. Tighten your belt and stand by your guns, I'm sure there's
more to come.
Sincerely,

~

Gregory F. Wetzel
Research Assistant

1.0
"-oJ
00

eric small & associates. inc.

(1) "Passing pointer values as addresses, even in-stack"

consultants in broadcast technology

Professor Sale's observations in this case are correct, if over
stated.
It would he inconvenient to implement pointers to non-heap
variables on a 86700 system while realizing the advantages of its
archi tecture.

680 beach street. suite 365. san francisco. california 94109 telephone [415) 441-0666

However, there is a more important reason why this extension is not
advisable
the "up-level pointer problem" (and the r~lated "dangling
reference problem").
This reason alone, apart from any implementation
difficulties, is sufficient to reject such an extension to PASCAL.

March 6, 1978
Pascal User's Group
C/O Andy Mickel
University Computer Center:
227EX
208 SE Union St.
Univ. of Minn.
Minn, MN. 55455

:z

rn

(2) "Returning function values of all kinds except files"

Dear Andy,
We are looking for a PASCAL programer to join our merry band.
The ideal candidate will be a recent graduate. He or she will
have had a lot of PASCAL experience. Exposure to broadcasting
operations or engineering would be very desirable, possibly college radio.
Seven people comprise ESA. Dave Rowland, one of the implementors
of ESA pascal, is our lead software engineer. We are developing
a line of LSI-II based products for the radio and TV braodcast
market.
/ , r e l y ,_ _ _ _ _ _ _ -

~
President

Professor Sale has misstated the facts about the 36700 RETN
operator.
He claims t~at only operand values (with zero tag) can be
returned without causlng an "Invalid Operand" interrupt.
In fact,
however, the 86700 will allow a word with any tag to be returned from a
function via the RETN operator. In particular, a data descriptor can be
returned quite easily by this method.
However, there are other reasons
(notably, software conventions) why this approach is not a wise
implementation choice.
There is, however, a very clean and simple way of implementing a
function return of a descriptor-based type.
The most recent release of
the B6700 Extended ALGOL compiler (version 111.0) includes the new data
type "STRING".
Values of type STRING can be returned from a typed
procedure.
The implementation technique for this descriptor-~ased type
may easily be adapted to arrays or records. The S6700 PL/I compiler has
used a similar technique for several years, although the new ALGOL
STRING implementation is somewhat simpler.
Besides the availability of a suitable implementation, returning
such data values from functions seems to be a reasonable language
feature.
After all, records and arrays may be assigned values and may
be passed as parameters by value.
There is no fundami"ntal difference
between these uses of data values and their use as the returned type of
a function.

"---

=
rn
f-'
LD
'-J

00

(3) "Allowing pointers to file-types and the use of new(file)"

TO:

Andy Mickel
Editor,
PASCAL NEWS

March 8, 1973

I would like to address certain misconceptions which may have been
generated by Professor Art~ur Sale's letter in PN#ll (page 75), titled
"Unimp1ementab1e Features -- Warning".
Professor Sale expressed concern about extensions which some PASCAL
imp1ementors have added to their implementations.
He claims that these
extensions are "not imp1ementab1e on the Burroughs 55700 system and
possibly on other computers." Not only is this claim false in the
general case (we are, after all, dealing with computers as powerful as a
Turing machine), but there exist relatively simple implementations of
two of the three extensions which he uses as examples.

While I have argued on grounds independent of implementation that
pOinters should not be allowed to reference non-heap variables and that
records and arrays should be allowed to be returned from a function, I
will not take sides on the issue of files in the heap.
I will only
point out that the restriction that file descriptors must reside in t,e
program stack is a software convention, not a hardware restriction.
Furthermore, if the heap is marked as a "dope vector", no more than a
few lines of changes to the operating system are required to make files
whose descriptor resides in the heap behave normally \~ith respect to
being properly closed and deallocated at end-of-task.

(Ja6~~

Bob J
Missi

ine
Viejo, California

-u
J>
G>

rn
-l::'

V1

THE UNIVERSITY OF NEBRASKA
COMPUTER

NETWORK

March la, 1978

Tektronix, Inc.
P.O. Box 500

Dear Mr. Mickel:

Beaverton, Oregon 97077

I maintain PASCAL at the University of Nebraska in
Lincoln, and have decided I need my very own personal copy
of PASCAL NEWS, so I am enclosing a check for membership
for 1977-78.
Looking at the different mutually incompatible versions
of PASCAL serves to emphasize one point strongly--that PASCAL
needs standardized extensibility. To each his own (idiosyncracies, environments, needs, etc.). If extension mechanisms
are developed for PASCAL, as they have for ALGOL 68, a
standard PASCAL implementation could be defined as one whose
correct programs ran correctly (even if inefficiently) on
another standard PAscAL when enclosed by a prelude or environment extension/redefinition block and called as a procedure.
Such mechanisms should also enable character set redefinition,
reserved word redefinition, etc.

Phone: (503) 644-0161
TWX: 910-467-8708

March 16, 1978

Pascal News

Andy Mickel
University Computer Center:
208 S. E. Union Street

227Ex

University of Minnesota

Ideas anyone?

I~

Sincer!/:

I/l!~ha;kar
Computing Services
Acad~ic

/'

Minneapolis, MN

55455

Dear Hr. Mickel:
Interest in Pascal has been growing among software engineers at Tektronix

for some time.

Within Tektronix, wide use is made of many dialects of

Pascal for various programming purposes.

However, Tektronix does not

currently have any products incorporating Pascal programming capabilities.

Oslo, March 15, 1978
Dear Andy,
I am presently working on a new implementation of Pascal
for the Nord-10. The implementation is based on the TRURC
compiler. I would like to communicate with others who
have done or plan to do likewise.
Somehow I must interface the compiler to the environment
in which it is to be used. This means that I have to invent
a set of "features" to go with the implementation - features
which already have been invented a lot of times by others.

Tektronix will not offer such products unless and until we can do so

within our requirements for utility and quality.
Because of the many (somewhat incompatible) dialects of Pascal currently
in use and the possibility of Pascal's application to some future products,
Tektronix has recently engaged in a study of Pascal extensions. The
results of that study are not yet available, but will be made available
to the summer workshop proposed by Ken Bowles in Pascal News #11. We
expect to offer these results for publication in Pascal News #13.
Sincerely,

TEKTRONIX, INC.

Dr. Don Terwilliger
Manager, Computer Research

Trying to turn some of the stones in this field started a
train of thoughts, some of which are refelcted in the enclosed
article. My hope is that the article will provoke a discussion
about how the field ought to be plowed.
Yours

Tektronix Laboratories
DT:jlk

sincer~,

Y~~Q~
Terj/F Noodt .

AN EQUAL OPPORTUNITY EMPLOYER

<-

=

:z

rn

Mr. Andy Mickel

Department Of
HIGHWAY SAFETY AND MOTOR VEHICLES
NEIL KIRKMAN BUILDING

RALPH DAVIS

TALLAHASSEE 32304

COL. J. ELDRIGE BEACH,

::=

DIRECTOR

DIVISION OF FL.ORloA HIGHWAY PATROL

March 16, 1978

-2

I

JOHN D. CALVIN,

DIRECTOR
DIVISION OF MOTOR VEHICLES

CLA.Y W. KEITH,

var

DIRECTOR



DIVISION OF DRIVER l.ICENSES

AUDRY CARTER, JR.,



DIRECTOR

DIVISION OF ADMINISTRATIVE SERVICES

IDiECUTIVE DIRECTOR


March 16, 1978

Mr. Andy Mickel
Editor, Pascal News
University of Minnesota
University Computing Center
227 Experimental Engineering Building
Minneapolis, Minnesota 55455
Dear Andy,
It is such a temptation to detail all my opinions, just because
they are mine, even though others have already said the same.
Luckily I am pressed for time and the resistance is relatively
easy; I think each of the following is in some way new.
1. I enjoy reading Arthur Sale's prolific comments - he is one
who often states my opinions.
I do object to one aspect of his
contributions: his consistent referral to the University of Tasmania's Pascal compiler as "The B6700 compiler". I use a different Pascal compiler on the B6700 (produced by Kenneth Bowles'
group at UCSD) , know of still another, and hear rumors of one
or two others. I expect the Tasmania compiler is a very good
one, but it is not the only one.
2. I agree with Arthur Sale's conclusions that certain nonstandard features should be avoided. I do not agree with his
reasons. These features are not unimplementable on the B6700,
as he claims, or the difficulties as.horrible as he puts forth.
The proper reasons for not implementing these features deal
with the language itself, not with a particular implementation.
The difficulties encountered on the B6700 are most valuable
when used to give insight on future machine design.
3. Formal procedures and functions should be completely specified; the lack thereof is merely a bad holdover from ALGOL60.
(I suspect the lack of specification is one reason so many compiler writers omit this feature.)
Declaration of procedure
types as suggested by George Richmond (PN*8 p 13) leads to such
questions as
Are procedure variables allowed?
Should procedures be declared in the VAR section?
Why does a procedure have an initial value (the body) when
other variables not?
ad nauseum. These problems should be left to ALGOL68. Therefore the specification should be in-line only. To do so, ~hange
the definition of  to read

This generates an extra semicolon, so the definitions of procedure and function declaration and heading must be altered to
take this into account. This affects pp 112,155 and 159 of
the PUM&R; also affected is the program on p 79. Restriction
2 on p 83 can then be dropped. This usage assumes that the type
compatibility checking is, in the terminology of Desjardins
(PN *11 P 33), SRTCCl; otherwise no two procedures would ever
be compatible as types.
4. Standard methods for data transformation are needed, particularly for conversion between character and integer or real;
these methods may be functions or procedures or statements.
This issue has been much discussed under the guise of formatted
I/O. I believe that embedding the transformation of activity
into "formatted I/O" unnecessarily complicates the I/O part
of the language and unnecessarily restricts the conversion features.

*

I cannot let Barron & Mullins' argument (PN
p 8) pass unnoticed.
Packed data is necessary at times, though formatted I/O is not.
My agency handles about 10000 title activity transactions per
day, with about 30 fields each.
10000 transactions/day x 30 separators/transactions
30000 keystrokes/day
~

30 key entry stations&operators
$30,000/month
$360,000/year to use separators.

5. There have been many proposals for extending Pascal's I/O,
but usually with no mention of the overall I/O facility which
results. Pascal I/O needs improvement, but suggestions should
be limited to proposals for a simple, consistent and complete
I/O facility, never for isolated features.
Sincerely,

C~~

C. EDWARD REID
Kirkman Data Center
CER: jem

c....

=
:z
I'T1

....
<.D

.......
00

Andy Mickel
Editor, Pascal News
Dear Andy:

Pascal User's Group, c/o Andy Mickel
University Computer Center: 227 EX
208 SE Union Street
University of Minnesota
Minneapolis, MN 55455 USA

Ihre Zeichen und Ihre Nadoricht yom

Enclosed is my membership form for PUG. You're doing a great
job. Keep up the good work!
PASCAL is indeed catching on within Computer Science departments,
but,
despite the numerous examples mentioned in PN, most
other groups I have seen are reluctant to use PASCAL in place of
more available and familiar tools. In particular, PASCAL will
never replace RASIC or FORTRAN as long as these languages provide
features that are sorely lacking in PASCAL. In particular:

Unsere Zeichen

He

Dear Andy,
thanks for Pascal News 9 and 10. We finally have completed our
work on a version 0 of our portable Pascal-System (cross-version). The first implementation is now on an MDS800 (Intel 8080
microprocessor), using the ISIS II operating system.
Just some short notes about the history of the project. We decided to implement a portable programming system for the different
computers in the Siemens product-field, i.e. 32bit, 16bit and
8bit machines. We came upon Pascal after an implementation of
a self-invented language, whose syntax and parts of its dataconcept were mainly in fl uenced by Pascal. This language was
but experimental and could not be used as base for a programming
system.
Our main goals were portability of user-programs as well as
portability of the system itself. We think we now have reached
both, the first by implementing Standard-Pascal and no dialect
at all, the second by using just high-level languages for implementation (mostly Pascal, of course).
Our plans for the near future are a resident version and systemdependent features as a code-generator, generating some form
of threaded code. Also a machine-independent dialogue-system
has to be developed.
Please do note our new address.

u=~
Werner Hemmele

Ad-resse:
Siemens AG, Zentralbereich Technik
Zentrale Forschung und Entwicklung
Fa rsdlU ng s labor al0 rien

tFt:l(089}

6782-

4622

Vermittlung 6782-1

Poslfach 832729, D-8000 Milnchen 83

SIEMENS AKTIENGESELLSCHAFT

Zentrale Forschung und Entwicklung . Forschungslaboratorien

leitung: Prof. Dr. Waller Heywang

I1n
528384

FORTRAN has static variables,
external compilations
initialization of variables (in particular, arrays), procedur~s with
flexible sized array parameters, STOP and RETURN statements, formatted input with error detection under user control, and large
libraries of applications packages. PASCAL does not.
In particular, complex numbers would not be missed if a standard subroutine
package were available.
BASIC is,
despite its lack of power, an extremely friendly
language to beginners. Most idiosyncracies are hidden from the
user
only one numeric data type, arbitrary length character
strings, general FOR loop. Interactive programs are ~atural.
The
notion of "One line = one statement" is much easier on the beginner than PASCAL's relatively complicated set of syntax rules.
BASIC's editor is very easy to learn.
I have many gripes about PASCAL - mostly concerning features
that have been left off. Despite it's goal of being systematic,
PASCAL has formatted output (but no formatted input.) It can read
and write integers,
reals, and characters, (but not enumerated
types or records, and to add to the confusion,
you can write
boo leans and packed arrays of characters but not read them!)
PASCAL has constants of type integer, real,
boolean,
character,
and set, (but no const declarations of type set, and no record or
array constants or constructors.) Functions can return integers,
reals,
characters,
booleans,
pointers,
enumerated types, and
subranges (but not records, sets, or arrays.) There are numerous
places where a type identifier is allowed but a type may not be
constructed. Semicolons come after most statements (but not before end ~nd never before else.) I also feel strongly that stop,
return, eXlt, and next statements are necessary to promote structured programming.
An else or otherwise clause should be available in case
statements-:- I d~buy-Wirth's argument about unstructured programmi~g.
He left the got~ statement in, so it is quite possible
to wrlte poor programs.
Give a user enough rope and he can hang
himself or climb a cliff. Many members have pointed out the need
for a ~efault, so I won't repeat the arguments.
Different implementatlons, unfortunately, use else, otherwise,
and <> as the
default label.
I
feel the choice--shou~ be otherwise.
The
problem with else is that the preceding statement might be--an if
the~.
The following illustrates the ambiguity:
case C of
'A':-writeln('blah');
'B': if d = e then writeln('blah blah')
else writeln('error')
end
The

writeln('error') might be an else for the if or for the

'-

=
z
rn
I--'
LD
'-I

00

~

00

case.
(I hope implementors who use else have looked at this
problem!) The usual kludge is to require a semicolon before the
else (how confusing and inconsistant!) but when a user forgets to
put the semicolon in, it is possible to get a syntactically
correct program, producing an obscure bug that could go undetected for months. (This problem was pointed out by Charlie Fischer.)
The case against <> as just another label is that it adds nothing
to the language: Fraley's example on page 46 of PN #11 is unchanged if you simply remove the semicolon! Of course, using
otherwise requires adding another reserved word, but I feel it is
the most reasonable solution. The semantics of using an out of
range selector with no otherwise should be defined.
Walt Brainerd proposed a loop construction for FORTRAN that
solves the "exit· in middle of loop" problem (SIGPLAN Dec. 77).
Such a constructon can be PASCAL-ized and modified to reflect my
own biases as is shown in the first syntax diagram. The semantics are that loop ... end cause repetition, and the various other parts give ways to-get out of the loop. The for part has the
same meaning as PASCAL's for statement: vary the index from the
initial value until the--final value and then quit. The while
part also has the usual semantics:
if not  then exit
The flag-Parr-lists one or more identifiers which should be declared as boolean variables. Entering the loop sets all the variables to false. An exit statement naming a variable sets that
variable to true and jumps out of the loop. It is possible to
jump out of more than one level of loop by naming a variable in
the outer loop's flag part. If no variable is named, none is set,
and the innermost loop is exited. The next statement behaves just
like the exit except that rather than jumping out of the loop,
the remainder of the loop body is skipped and the next execution
of the loop begins (after any appropriate incrementing and testing of for and while parts,) and the boolean named is not set to
true. -rIhe only purpose of a variable in a next statement is to
specify more than one level of loop.) If all three parts are left
out of the loop header, an infinite loop results (presumably containing an exit statement somewhere.) Assigning true to one of
the flag variables has no effect, is bad style, and might be
prohibited.
This construction has a number of advantages. It includes
the power of PASCAL's for, while, and repeat statements into one
construct. It also has-the power of being able to exit or resume
one or more levels of loops from any point in the middle.
In
addition, when you get out of a loop, you can test the boolean
variables to see what caused loop termination.
Consider for
example binary search:
l:=l;u:=n;
loop while (1 <= u) flag found do
---m~ (l+u) div 2;
if x < A[midj--then u := mid-l
else if x > A[midj
-- then 1 := mid+l
else exit found
----end'
~found then writeln('Found at',mid)
else writeln('Not found');
Another example, finding prime numbers:
loop for p := 2 to n flag potential prime do
---loop for d :~2 to trunc(sqrt(PJ) do

i f p mod d
end;-write(p)

o

then next potential_prime

end;

The second example above seems to be one case where PASCAL
really needs a step option in the for loop, since it is only
necessary to check the odd numbers and divisors. What is so all
fired important that makes increments other than 1 and -1 against
the spirit of PASCAL?

=
rn

This construction is powerful enough to replace for, while,
and repea~ loops. A lone for or while part on the loop---statement
gives you the for and while lo~and a while part on the loop
end gives you the repea~--.-.~-unti! construction~
In principle, the while clause is unnecessary, since a conditional exit at the beginning or end of the body will have the
same effect. I argue that the while construction provides additional readability. The keyword flag is perhaps not ideal,
Brainerd used until, which would onry-cause confusion in PASCAL.
Another keyword~h as conditions, could be substituted.
I'm not suggesting throwing away PASCAL's looping constructions and replacing them with the loop statement. Clearly there
is already too much investment-rri existing programs and compilers, and too little to gain. However, there are several points
to learn from. PASCAL's looping constructs, even though far
better than what is available in many other languages, still
leave much to be desired. Future languages, including a possible
PASCAL II, might include it. Alternatively, it might be possible
to include the exit and next statements and the flag part in
"standardized" extensions. Therlag part could be-optionally
inserted before the do in for and while loops, and after the
repe~~ in that loop. (See the second set of·-syntax diagrams.)
Work at the University of Wisconsin is currently in progress
toward the design and implementation of a PASCAL based Artificial
Intelligence language called TELOS. This language is a superset
of PASCAL (with two exceptions: goto out of procedures, and passing procedures as parameters, are disallowed) and has numerous
extensions (including a clean way to achieve the effect of passing
procedure names as parameters.) The language includes
features found in many other AI languages, with a special emphasis on the PASCAL philosophy of structured programming, readable code, and detection of errors at compile time.
The language includes capsules (orogrammer defined data
types with their own local operations); coroutines and other synchronous process manipulation facilities; events and handlers for
them; an associative data base (referenced with patterns) that
can hold objects of any user defined data type, including
records, capsules, and the li~e; different contexts of the data
base (so you can make a tentative modification to the data base
and see how it compares); multi type pointers; record, array, and
p~ttern
constructors; modular compilation; and miscellaneous
minor PASCAL extensions (including an otherwise in a case, flexibly sized array types, and functions returning any definable
type.) The above loop construction is not part of TELOS, since an
effort has been made to avoid cluttering the language up with
extra features that can be gotten with existing features, and the
event mechanism will provide the same power.
A TELOS implementation is currently under development based
on Charlie Fischer's UNIVAC 1100 PASCAL compiler, which currently
has most of the data base features implemented.
Work is also

"-

=
=
rn

beginning
piler.

on

a

portable

TELOS interpreter based on the P Com-

Syntax Diagram- 1
repeti tl ve statement

----"lOOP statement

h

Mark Horton
Computer Sciences Department
University of Wisconsin, Madison
1210 W Dayton St.
~adison, Wisconsin 53706

Westinghouse
Electric Corporation

Defense Group

•

~~~j~~e-watth~f~n 1ff5~ational Airport

loop statement

-0{ lo~p

header

~

loop trailer

Defense and Electronics Systems Center
Systems Development Division

~

-0
:t:>
C/)

n
:t:>
0

:z
IT1
::E:
C/)

Baltimore Maryland 21203

:;:::

April il, 1978

f-'
N

loop header
while

par!TTifla~ part ~

loop trailer
--@-rjWhlle part

~

for part
variable identifier

while part

~expresslonh
flag part

~variable:;dent1f1er~
simple statement
variable identifier

Mr. Andy Mickel

Pascal User's Group
Universi~ Computer Center 227EX
208 SE Union Street
University of Minnesota
Minneapolis, MN
55455
Dear Mr. Mickel:
I have been aware of PASCAL for several years. Recent interest by
Department of Defense in PASCAL as a base for a DoD's Common Programming
Language Effort has stimulated my interest. I am deeply involved in the
DoD world of software and its unique problems. Possibly PUG can help with
one unique problem, ie. The government requires detailed specifications
for everything, including software. Further, the government requires acceptance test to be sure specifications are met. Is it possible for PUG to
develop an acceptance test for PASCAL compilers? Don't answer too quickly.
An acceptance test, that might satisfY government standards, requires the
following:
1)

a detailed, unambiguous specification.

2)

A test against every item in the specifications.

variable identifier

c....

=

:z
IT1

00

Syntax Diagram 2

As a case in point, Rome Air Development Center has a JOVIAL J73/l
compiler validation (acceptance tests) against MIL-STD-1589, that has over
20,000 source JOVIAL statements in 28 source modules. The JOVIAL validation
is compiled and executed. The results of the execution are several thousand
"TEST PASSED" or "TEST FAILED" messages with appropriate comments about the
language feature being tested.

statement

My group will soon be getting a PASCAL compiler for the UNIVAC illO.
Since the compiler may be used on government contracts, it would be a great
help if an acceptance test was available.

variable identifier
variable ident1f1er

flag part

£:

Isi:::::ager
Operational Software
JSS:j

-0
:t:>

en
IT1
U1

0

- 2 To obtain the full effect of the above program in standard Pascal
requires a boolean i.e.

University of the Witwatersrand, Johannesburg
DEPARTMENT OF APPLIED MATHEMATICS

~

1 Jan Smuts Avenue, Johannesburg, 2001, South Africa
Telephone 39-4011, Telegrams 'University', Telex 8-7330 SA

The Editor,
Pascal News.

telephone ext
your reference

our referenr..:tl

date

ch : char;

ch : = charmin;
indexended .- false;
while not indexended and condition Q2
begin - (* something *)
if ch = charmax then indexended := true
else ch := succ (ch)

......
N

JB/SW

7 April 19 7 8
This use of boo leans is similar to that required to simulate
sequential conjunction. I must admit that I don't like it and
wonder if one day we'll have a "Booleans Considered Harmful"
article.

Dear John,
Thanks for your note - the question of predefined types also
requiring a succ (max). facility had not occurred to me when I
wrote "Subranges and Conditional Loops". The convention I
suggest only works for genuine subranges, not full ranges such
as integer, char and boolean. I thought long and hard of the
possibility of letting these types be subranges of underlying
and hidden ranges. These ranges would be one bigger on either
side than the sub range we see but these "fringe" elements would
not be accessible. Diagrammatically, we want
CHAR

I would be very pleased to hear if other Pascal people have
thought about this problem and have alternative views to mine.
Enclosed are some membership forms - dollars are coming separately by Postal Money Order.
Best wishes,

rr1

......

accessible to
programmer

<.0

.......

JUDY BISHOP
CHAR

<-

=
=

00

accessible to
system

The idea would be to let a program declare
var ch: 0 •• succharmax
and write-ch: = charmin;
while (ch c_ charmax) and condition do
begin
(* something *)
ch := succ (ch)

Encl.
(* Note:

The trouble is that the fringe elements are accessible: if succ(ch),
when ch=charmax, is a valid expression then there is no way of
stopping a program from writing it out - which would be invalid.
Furthermore, there may be severe implementation problems since
these types have a "fully packed" property i.e. they are usually
represented in the exact number of bits required for max.
This leads me to realize that the predefined types, namely char,
boolean and integer, are ranges and have a different nature to
the subranges that we~ild on top of them. For the first time I
feel some sympathy with Haberman and his "Critical Comments"!

This letter is in reply to a letter sent on 78/03/08 from John Strait
to Judy:
"Belated congratulations to you and Nigel! We received your
card--you two make a handsome couple.
Andy let me read your article "Subranges and Conditional Loops"
which he received yesterday. I have a question: What do you

do with a pre-defined type which cannot be redeclared (e.g. CHAR)
or one with special meanings (e.g. BOOLEAN). I ran into this
problem last week with CHAR. Aside from this problem, I found
your solution interesting/elegant."
*)

""0

:t:>
en
rr1
Ion

..... . /2

......

PLEASE DIRECT All INQUIRIES, lETTERS,
ETC. ABOUT Pascal Standards to
Tony. Thanks, Andy.

Editor:

Tony Addyman

Department of Computer Science
The University
Manchester M13 9Pl
United Ki ngdom
(phone: 44-61-273-7121 x5546)

Jim Miner and I would like to bri.ng you up to date on recent standards developments.
First, Ken Bowles at the University of California, San Diego, has failed to keep us
informed about his proposed summer workshop. We have no news since last issue!
Beginning this January, Jt\rgen Steensgaard-Madsen of the Data10gisk Institut,
University of Copenhagen, Denmark, has done all Pasca1ers a favor by initiating work on
the difficult task of conventionalizing extensions--thus answering Pierre Desjardins's
good question in the last issue of PUGN. Jt\rgen is working in cooperation with Nik1aus
Wirth and several imp1ementors: Jeff Tobias and Gordon Cox (IBM 370) in Australia,
H. H. Nagel (DEC 10), in Germany, Olivier lecarme (CII IRIS) in France, John Strait
(CDC 6000) in the USA, Arthur Sale (B6700) in Australia, Ken Bowles (DEC PDP-11 and
micros) in the USA, and Jim Welsh (ICl 1900) in the UK.
Olivier lecarme published letters from Nik1aus Wirth in the Bulletin No.3 for the
French Working Group on Pascal in March. The hope was expressed that this is hopefully
the final work done in this area and that progress could be made if the number of people
were kept small and the range of topics to be considered kept limited.
Jt\rgen is in contact with Tony Addyman who continues making progress on an ISO standard
with his 10-(so far we at PUGN don't know who they all are)~person BSI working group
called DPS/13/4. Tony now expects to have a draft document by the end of September.
In the course of our correspondence with Jt\rgen and Nik1aus, we discovered another
standardization effort begun by Justin S. Walker at the National Bureau of Standards (NBS)
within the U.S. Government. He coincidentally (?) joined PUG 2 weeks later. We sent a
personal letter to him trying to determine just what he is doing, and he did not answer.
Hmmmrrm.
Below is news from Tony and DPS/13/4: an Attention list #2.
Following that are several letters. Charles Fischer of the University of Wisconsin
and Richard leBlanc of Georgia Institute of Technology have stated very clearly some
widely-held concerns over standards. Jim and I wholeheartedly agree with them.
Bob Vavra has written an outstanding and timely article and letter on design goals.
Arthur Sale has issued a revised version of his "Pasca1 Compatibility Report"
[Department of Information Science Report No R78-3, May, 1978] which we described last
time in this space. It now includes many more implementations.
Arthur is working with Brian Wichmann, of the National Physical laboratory, in the
United Kingdom on a set of Pascal programs to do: 1) Validity Checks - Does the compiler
accept standard code, normal, or wierd? 2) Quality Checks: How does the compiler cope
with error and error recovery? and 3) Compatibility Checks: How does the compiler cope
in the undefined areas?
- Andy and Jim

April 7, 1978
Dear Andy,
I enclose a Pascal syntax written in EBNF.
any interest to the Newsletter?

Would it be of

Best regards,

ETH

EIDGENOSSISCHE' TECHNISCHE HOCHSCHULE
ZORICH

Inslilul liir Inlormalik

NW 12.3.78

PASCAL syntax

PASCAL STANDARDS

Prof. Niklaus Wirth

(Extended BNF: cf. Comm.ACM 20, 11, p. 822, Nov. 1977)
identifier. letter (letter I digit).
IdentList • identifier {"," identifier}.
UnsignedInteger· digit {digit}.
UnsignedReal • UnsignedInteger ["." digit {digit}] ["E" ScaleFactor].
sign = "+" I "_H.
ScaleFactor • [sign] UnsignedInteger.
UnsignedNumber • UnsignedInteger I U~signedReal.
String. """ character {character} " "
ConstantDefinition • identifier "." constant.
ConstantIdentifier • identifier.
constant = [siqn] (UnsignedNumber I ConstantIdentifier) I string.
TypeDefinition • identifier "." type. .
type. SimpleType I StructuredType I P01nterType.
SimpleType • TypeIdentifier I ScalarType I SubrangeType.
TypeIdentifier • identifier.
ScalarType • "(" IdentList H)".
SubrangeType • constant " •• " constant.
StructuredType. [PACKED] (ArrayType I RecordType I SetType I FileType).
ArrayType. ARRAY "[" SimpleType {"," SimpleType} "]" OF type.
RecordType • RECORD FieldList END.
FieldList • [FixedPart] [VariantPart].
FixedPart • RecordSection {";" RecordSection}.
RecordSection • [IdentList ":" type].
VariantPart • CASE [identifier ":"] TypeIdentifier OF variant {";" variant}.
variant = [CaseLabelList ":" "(" FieldList ")" ].
CaseLabelList • constant {"," constant}.
SetType • SET OF SimpleType.
FileType • FILE OF type.
PointerType • "~II TypeIdentifier.

'-

c:
:z
rrt

....
I.D

.......
00

VariableDeclaration • IdentList ":" type.
variable. identifier {index I "." identifier I "T"}.
index •
expression {", expression} "]".
II [ "

II

expression • SimpleExpression [relation SimpleExpression].
relation = "::" I 11<>11 I 11(" I 11(=11 I 11)" I 11>=" I IN.
SimpleExpression • ["+" I "-"] term {AddOperator term}.
AddOperator • "+" I "-" lOR.
term. factor {MulOperator factor}.
MulOperator • "*" I "/"1 DIV I MOD I AN.D..
.
factor. variable I UnsignedConstant I Funct1onDes1gnator I set I
" (" expression ")" I NOT factor.
set. "[" [element {"," element}] ")".
element. expression [" •• " expression].
.
FunctionDesignator • identifier [ActualParameterL1st].
..
UnsignedConstant • UnsignedNumber I string I ConstantIdent1f1er I NIL.
statement. [label ":") UnlabelledStatement.
UnlabelledStatement • SimpleStatement I StructuredStatement.
SimpleStatement • [AssignmentStatement I ProcedureStatement I GotoStatement].
AssignmentStatement • variable ":." expression. .
ProcedureStatement. identifier [ActualParameterL1st).
ActualParameterList. "(" expression {"," expression} ")".
GotoStatement • GOTO label.
label = UnsiqnedInteqer.

""0

:t>

en
rrt
V1
N

StructuredStatement = Compoundstatement I ConditionalStatement
RepetitiveStatement I WithStatement.
CompoundStatement = BEGIN statement {";" statement} END.
ConditionalStatement = IfStatement I CaseStatement.
If Statement = IF expression THEN statement [ELSE statement].
CaseStatement = CASE expression OF case {";" case} END.
case = [CaseLabelList ":" statement].
RepetitiveStatement = WhileStatement I RepeatStatement I ForStatement.
WhileStatement = WHILE expression DO statement.
RepeatStatement = REPEAT statement {";" statement} UNTIL expression.
ForStatement = FOR identifier ":=" ForList DO statement.
ForList = expression (TO I DOWNTO) expression.
WithStatement = WITH variable {"," variable} DO statement.
ProcedureDeclaration = ProcedureHeading block.
ProcedureHeading = PROCEDURE identifier [FormaIParameterList] ";"
FunctionDeclaration = FunctionHeading block.
FunctionHeading = FUNCTION identifier [FormaIParameterList] ":"
Typeldentifier ";".
FormalParameterList = "(" FormalParameterSection
{";" FormalParameterSection} ")".
FormalParameterSection = [VAR I FUNCTION) IdentList ":" Typeldentifier I
PROCEDURE IdentList.
block

[LabelDeclarationPart) [ConstantDefinitionPart) [TypeDefini tionPart)
[VariableDeclarationPart] ProcedureAndFunctionDeclarationPart
StatementPart.
LabelDeclarationPart = LABEL label {"," label} ";".
ConstantDefinitionPart = CONST ConstantDefinition ";" {ConstantDefinition ";"}.
TypeDefini tionPart = TYPE .TypeDefinition ";" {TypeDefini tion ";"}.
VariableDeclarationPart = VAR VariableDeclaration ";" {VariableDeclaration ";"}.
ProcedureAndFunctionDeclarationPart =
{procedureDeclaration ";" I FunctionDeclaration ";"}.
StatementPart = CompoundStatement.
program = ProgramHeading block n."
ProgramHeading = PROGRAM identifier "(" IdentList ")" ";".
SYMBOLS
+ - * / :=
(* *)

<> < <= > >= ( ) [ ] T ..

41/ 1~/~/
PROFESSOR OF COMPUTER SCIENCE
T. KILBURN, C.B.E., M.A., Ph.D .•

D.Se .• F.I.E.E., F.B.C.S .• F.R.S.

ABS ARCTAN BOOLEAN CHAR CHR COS DISPOSE EOF EOLN
EXP GET INPUT INTEGER LN NEW ODD ORO OUTPUT PRED
PUT READ READLN REAL RESET REWRITE ROUND SIN SOR
SQRT SUCC TEXT TRUNC WRITE WRITELN

M139PL

D. B. G. EDWARDS, M.Sc•• Ph.D .. M.I.E.E.

J>

en
n
J>

r
Z

I'TI

::E:

PROFESSOR OF COMPUTING SCIENCE
F. H. SUMNER, Ph.D., F.B.C.S,

en

PROFESSOR OF COMPUTER PROGRAMMING
D. MORRIS, Ph.D.

'It:
I-'
N

Andy Nickel
fUG
etc.

061-273-7121 X5546
6 February 1978

Dear Andy
rhis letter will serve several purposes. These are.
I. To tell you my new phone number for the roster.
2. To give and all others at PUG central the latest Attention
List. As I said in my call, don't be alarmed by some of the
ite",s I still operating on the same basis as before.
3. I went to include sever?l par?qraphs from the beqinning of
Pascal News as an appendix to the textbook. This will serve
to advertisp FUG by describing Pascal News, givinq the
central an" reqional addresses etc •• If space permits I
1{OuiLd like to include a copy of the AII-Furpose-Coupon.
.iill this be OK? This does not need a reply. I .will call
you. If you cannot be around, you can always leave a
simple yes/no ans"er.
4.

5.

Predeclared identifiers

MANCHESTER

ICL PROFESSOR OF COMPUTER ENGINEERING

Keywords
AND ARRAY BEGIN CASE CONST DIV DO DOWN TO ELSE END
FILE FOR FUNCTION GOTO IF IN LABEL MOD NIL NOT
OF OR PACKED PROCEDURE PROGRAM RECORD REPEAT
SET THEN TO TYPE UNTIL VAR WHILE WITH

DEPARTMENT OF COMPUTER SCIENCE
THE UNIVERSITY

-0

A reminder to all PUG members that any contributions to
the standardisation effort will be gratefully received by
myself and oth",r memi)ers of DPS/13/4.
As the enclosed material is rather bulky, you may print it
or not as you see fit. Hopefully I will be able to send
you some mpre up-tO-date information before the next issue
is due to by printed.
Yours

A h

ADDY~;AN

<-

c::
Z

I'TI

I-'
<.D
""-J

00

March 23, 1978

PROFESSOR OF COMPUTER SCIENCE
T. KI LBURN. C.B.E .• M.A.• Ph.D .•
D.Se.• F.I.E.E .• F.B.C.S•• F.R.S.
ICL PROFESSOR OF COMPUTER ENGINEERING
D. B. G. EDWARDS. M.Sc.. Ph.D .. M.I.E.E.
PROFESSOR OF COMPUTING SCIENCE
F. H. SUMNER. Ph.D .. F.B.C.S.
PROFESSOR OF COMPUTER PROGRAMMING
D. MORRIS. Ph.D.

DEPARTMENT OF COMPUTER SCIENCE
THE UNIVERSITY
MANCHESTER
Ml39P1.

Telephone: 061·273 5466

1st February 1978
TO: Members of DPS/13/4, the Swedish Technical Committee on Pascal and all
Correspondants.

Mr. Andy Mickel
Editor, Pascal News
Computer Center
University of M1nnesota
Minneapolis, Minnesota 55455

ACADEMIC COMPUTING CENTER
THE UNIVERSITY OF WISCONSIN - MADISON
1210 WEST DAYTON STREET
MADISON, WISCONSIN 53706
608-262'1186

:z
Dear Andy:

It is my hope that the list contains all the doubts and problems concerning
Pascal which have been brought to my attention. If this is not so, then the list
will be updated;

Why then should the effort to produce this standard be dominated by
organizations with a large monitary investment in PASCAL with the
gratuitous inclusion of "a small number of academic experts" to placate
the rest of us? Are we to believe the opinions of the average PASCAL
devotee are less' important than those of industrial and governmental
organizations? Such an idea strikes me as rather odd given the fact
that PASCAL has succeeded not because of these organizations, but
in spite of them.

Since it is a long time since DPS/13/4 last held a meeting, and several
of its members are very active, I am suggesting that a meeting be held in late
February or early March. The meeting cannot be called too soon because the
Swedish Technical Committee will need time to arrange for their representative(s)
to be present.
'

Even if the composition of Bowles' workshop is made more equitable and
broad-based, I have very serious reservations about any language designed
by committee. It can be very strongly argued that PASCAL's simplicity
and elegance derives directly from the fact that it was designed by one
man. Why not then adher to this principle?

May I first apologise for the delay in the production of Attention List
!F2. I (wror,gly) decided to keep altering the list to include new material.
Had I realised that it would take such a long time to produce the list, I would
have issued an incomplete list earlier.

Progress is being made in several related areas:
1.

BSI is proposing the creation of an ISO project for Pascal.

2.

Brian Wichmann is endeavouring to create a suite of Pascal test programs.
This is an encouraging move for DPS/13, who collectively believe that
validation suites for compilers should be provided wherever possible.

3.

Prof. N. Wir,th is optimistic concerning our copyright problems.
Verlag have not yet replied to my letter.

Springer-

To avoid further delaying this attention list, the following items will
be sent separately later in the month:
1.

A list of names (and where appropriate addresses and telephone numbers)
of all people actively involved in the standardization effort.

2.

A list of other people who are being kept informed of progress.

3.

A selection 'of the guidelines and rules from BS:O, Part 3, which concerns
the way in which the working group should operate.

4.

A summary of the relevant parts of "Guidelines for Approving Standards",
which is part of a document presented by the United Kingdom to ISO at the
Hague meeting of the programming languages sub-committee. Although this was
not accepted by ISO, it may be necessary for BSI to adhere to its own
requirements.

5.

Sections and sub-sections of the report which individual members of the
working group are requested to study. Any member of the group is, of course,
quite free to study and make suggestions concerning any part of the report.

rn
~

As an implementor of a PASCAL compiler as well as a "firm believer"
in PASCAL's merit as a programming language, I feel compelled to comment
on Ken Bowles' recent proposal (PASCAL News #11) to convene a workshop
to standardize PASCAL extensions. The value of standardizing the
extensions all implementors (including this one!) seems to add to
PASCAL is unquestionable. However, Bowles' approach seems to me to be
rather suspect. If this standard is to have any real value, it must
have broad-based support in the PASCAL user community.

Bowles' workshop should by all means meet (although with a more broadbased composition). Rather than drafting a specific set of language
extensions, however, it should draft a set requirement that an extended
PASCAL should meet. Where necessary, differences in emphasis or opinion
should be included--al1 concerned parties must have a say in what they
feel is important. These requirements should then be forwarded to a
very small group of acknowledged language design experts (Nicklaus Wirth
would, of course, be ideal) who would produce a single set of specific
language changes consonant with the "spiritll of PASCAL, the state of
the art, and the overall requirements given them. This set of changes
would then be widely distributed, discussed and debated, but acceoted
or rejected as a whole. If they are rejected, (say by vote of the PUG
membership) then we must acknowledge that no standardization is, at
present, possible. If they are approved, we should accept them as the
one and only definition of extended PASCAL.
I realize, of course, that my opinion of how standardization should be
done is just one man's viewpoint. However, the principle that everyone
should have a voice in what kind of extensions should be included while
limiting to a very few experts the decision of exactly how these
extensions are to be specified seems a sound one. If we-ire to produce
a standard, let us make every ef~ort to ensure it is something we can
live with.
Sincerely,

A.M. Addyman
Convenor of DPS}13/4.

en

'--

=

:z

rn
I-'
lO
""-I

00

-u
:t>
en

rn
V1

+:-

Charles N. Fischer

741 Terrace Dr'
Roseville MN 55113 USA
March 30, 1978

GEORGIA INSTITUTE OF TECHNOLOGY
SCHOOL OF INFORMATION AND COMPUTER SCIENCE. ATLANTA. GEORGIA 30332. (404) 894-3152

Dear Andy,
In your recent article en Pascal Standards (PN 11 page 65), you and
Jim point out that many people are suggesting (and implementing)
chang~s and extensions to Pascal, but few are using Pascal's design
goals to evaluate their changes or extensions Cat least few are doing
it publicly). By referr ing readers to the design goals listed on the
back cover of PN, you iaply that Pascal's design goals are
well-understood and generally accepted. I disagree on both counts.

April 10, 1978
Hr. Andy Mickel
Editor Pascal News
University Computer Center: 227 EX
208 SE Union Street
University of Minnesota
Minneapolis, MN 55455

..

Dear Andy:
I wish to make a few comments about Ken Bowles' proposal (PASCAl News #11)
for a workshop to develop a set of standardized PASCAL extensions. As an
experienced PASCAL user and an implementor of a PASCAL compiler, I certainly
agree that there are areas in which PASCAL could be improved as a systems
programming language. There is no doubt that some standardization of extensions would be quite valuable to both users and implementors. However, I
have some reservations about the process Bowles has proposed to develop
these extensions.
Having had some experience in designing programming languages, I am quite
concerned that a set of extensions produced by a large committee might not
be consistent with the simplicity that is one of the most attractive characteristics of PASCAL. This simplicity probably results from the fact that
PASCAL was designed by one man. It might also be noted that while the DoD
"Ironman" project mentioned by Bowles included input from a great number of
people in identifying goals, the actual language design work is being done
by small groups. I think it more appropriate that any large workshop produce
a statement of requirements rather than a "finished" language design.
The fact that attendance at the workshop will be restricted to a certain
group of PASCAL users is also of concern to me. If the language to be
produced by the workshop would end up being used by only the participants,
this would not be objectionable. However, any extended PASCAL standard
adopted by a group of users with considerable economic influence is likely
to become a de facto standard. It is not acceptable for the PASCAL user
community to have so little influence in such an effort. Further, there are
apparently other standardization efforts under way. These should certainly not
be ignored.
If Bowles wishes his workshop to produce a systems implementation language
designed by and for industrial firms and government agencies, the language
should be given a name that does not contain "PASCAL" so that there will be no
confusion as to its nature. If the workshop is to make a more valuable
contribution toward the standardization of PASCAL extensions, a broader
group of participants is necessary and more care must be taken to insure
that the resulting language reflects the "spirit of PASCAL" and is acceptable
to PASCAL users in general.

The ten-Hne descr iption of Pascal's design goals is adeQuate for
the back cover of FN, but it is too vague for use in judging
~.oposed language features. For example, "general purpose but not
all-purpose" is a very nice phrase which is intuitively
appealing, but it .ives little or no guidance to so~eone who is
attempting to evalLate a proposed feature. If I didn't know you,
I would be tempted to suggest that you are purposely fostering
confusion in this orea to keep up the volume of provocative
language proposals in PN.
You have been exhorting people to justify their proposals in
terms of Pascal's oesign goals since PUG was formed (PN 5 page
2). The fact that fe .. people have done so seems to indicate that
~any disagree with or do not understand the stated design goals
(or else they don't read your editorials).

agree with you that any future development of Pascal, beginning with
the Standardized Extensions that you call for, must be guided by a
clearly-defined set of cesign goals. Discussion of Pascal's design
goals has been rema.kab ly absent from most material appearing in PN.
enclose an article which opens such a discussion.

<-

=
:z
rT1

I am pessimistic about our ability to standardize anything beyond the
Revised Report (which Acdyman seems to have well in hand), without
institution~lizing Pascal to a very grea"t degree.  SETHIGH) THEN
ERROR(169) ;
END;
This will build a "SET" type node, checking the use of variables which have this
type. (Alternatively, set LSP: = NIL before PASCP 12n, and remove "LSP1: = NIL"
from line PASCP 1273).
The correction to field list, allowing ";" before the "END" of a record
definition, is incomplete. In particular, the syntax allows null field entries
(multiple ";" in a row). The full fix is:
Replace PASCP 1077 by
WHILE SY =" SEMICOLON DO
Change PASCP 1079 to:
IN FSYS + [IDENT, CASESY, SEMICOLON]
Change P 150 to
IN FSYS + [SEMICOLON]

-c
J>

en
m
Vl
C'l

There is another error in P4 which causes an infinite loop when a comment
is not closed.

F EAT UREI MP LEMEN TAT ION NOT ES

Replace PASCP 509 by
UNTIL (CH = ')'} OR EOF (INPUT);
This :eport addresses results of set implementation tests on three compilers,

Replace PASCP 507 by
WHILE (CH <>'*') AND NOT EOF (INPUT) DO NEXTCH:

::z

far) .

rn
Professor A.H.J. Sale,
University of Tasmania.

/5?t~urs,

r--·'

i

I

Bob Fra?:!aHewlett-Packar Laboratories
Electronics Re earch Laboratory

RAF/hma

.:Inc] a personal estimation of optimal treatment (not yet achieved anywhere so

(* Thanks, Bob! *)

I

illterpretat ion

CDC600D

86700

ICL 1900

optimal

set of char

compi le
error

comp i le
error

allowed,
run-check

allowed,
correctly

compi le
error

compi le
error

comp i 1e-error if
genuine, however
limit should be
big, say 256.

,I
I

set constructor with value
allOl'led

> setmax

Pascal P4 -- UPDATE1 and UPDATE2
Both of these updates are dated January, 1977. They were issued by Chris
Zuerich, and we printed them in issue #8.

Jacobi

of

ETH,

'-

set-type constraints

O.. 58

O.. 47

UPDATE1:

O.. 47, but
only checked
at runt ime.

no 1 imi ts, except
range in reasonable
size (256 bits?)

Replace BOOT.4 by:
FOR I := ORDMINCHAR TO ORDMAXCHAR DO SOP[CHR(I)] := NOOP;
Replace P.477 by:
LOAD; GENLABEL(LCIX);

Note:

In the ICL compiler, sets may be declared of any sub range type, and the run-time

Insert after P.479:
GENUJPXJP(57(*UJP*),LCIX);

system will be correct as long as no element with a representation outside 0 .. 47

Replace P.147 by:
BEGIN ALIGN(LSP1,DISPL);

I iable to lead to undetected and hibernating bugs.)

is involved.

If this occurs, an lIindex error" is raised.

Replace P.424 by:
LOCPAR := LOCPAR + PTRSIZE;
ALIGN(PARMPTR,LOCPAR);

MAC HI NE- DEPEN DEN TIM P LEMEN TAT ION S

Insert after line PASCP.3200:
ALIGN(PARMPTR,LLC1);

Burroughs B1700

(I bel ieve this to be

PASCAL ON BURROUGHS B1 7 00

=========================

Replace P.531 by:
IF IDTYPE-.FORM > POWER THEN
UPDATE2:
Insert after PASCP.3204:
IF VKIND = ACTUAL THEN
BEGIN
Insert after PASCP.3207:
END;

Replace P.122 by:
FLC := L + K - (K + L) MOD K
Replace P.528 by:
CSTPTRINX := 0;
TOPNEW := LCAFTERMARCKSTACK;

Imp I e men tat ion Not e s TOPMAX

:= LCAFTERMARCKSTACK;

,

Dear Mr. Mickel,
He
have developed a Pascal
System for the
Burroughs B17nO/B1POO Series. The System like many
others is df'rived
from the Pascal-P Compiler
developed by Wirth ~nj Amman at the ETH-7uerich.
A preliminary Version has been distributed to
several
purope~n
Universities about a year ago.
The System is al so the subject of a PhD Thesis in
german.
Unlike other 817nn Pascal systems, ours is
implemented on ~op of the B1 7 00 SDL-S La"Ru8Re

=
rn

~»which

also serve's as thp Basis' for the master
control 'program and the utility software. The
system runs on MCP-Releasp 6.0 and higher and is
particularly
suitable'
for
small
machine
configurations.
In order to remain compatible with the standard
SDL-Architecture only emulation of realarithmetic
is provided.
Current
Projects
include
addition
of
mathematical
functions and the design of an
"ideal" Pascal architecture.
The system has recently been redesigned and we
will gladly distribute it to universities sending
us a tape. (We would appreciate tapes in a
reusable box. Installations should also indicate
if they have use of SDL- and MIL-Compilers).
,Unfortunately we can not guarantee an errorfree
system but we will eventually fix errors made
known to us.
Another
Pascal-system was produced at our
installation by Mr. K. Haeusermann. It uses a
separate
interpreter
which
emUlates
the
hypothetical stack computer by Wirth and Ammann.
Pascal systems for the B1700 have also been
developed at many other universities (Karlsruhe,
Newcastle, Dublin, Edinburgh •••• ).
Yours sincerel y
Peter U. Schulthess
Institut fuer Informatik
Universitaet Zuerich
Kurvenstrasse 17
8006 ZUERICH

============

SWITZERLAND
Burroughs B4700 (Fredonia)

George Golden, Sr. (Computer Center; SUNY Fredonia; Fredonia, NY 14063; 716/673-3393)
wrote on 78/4/10:, ''We are trying to get Pascal running on the Burroughs B4700. I t runs!
But it takes too much core."

Burroughs B6700 (Tasmania)
The PASCAL compiler for Burroughs B6700/B7700 systems written at the university of Tasmania is now available for distribution. To acquire a copy,
fill out the attached forms and send to:
PASCAL Support,
Department of Information Science,
University of Tasmania,
Box 252C, G.P.O.,
HOBART,
7001
The compiler is distributed on 9-track magnetic tape, (but 7-track is also
available) and an installation manual is supplied, together with two copies
of the user-documentation. At present this comprises:
* Report R77-l - a supplement to Wirth's User Manual.
* Report R77-3 - a Reference ~~ual similar to B6700 Algol's.

* a PASCAL Language Card.
* a PASCAL System Card.
Further copies of the user-documentation may be available at,production cost.
The charge for the system is Australian $100 annually, and will be invoiced
to you when you receive the tape. The tape remains our property, and should
be returned when you have copied its contents so that future releases can be
mailed to you. The service will cover:
* mailing and processing costs,
* extensions and revisions, and
* the costs of an FTR-reporting service and maintenance.
Each installation will be issued with 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 Tasmania B6700 PASCAL compiler is a true compiler for the B6700 or B7700
computer systems: it generates executable code-files which are accepted by
the operating system. Its compilation and execution performance is within
a 20% margin of comparable compilers in the B6700 system for average.programs. The current version generates LINE INFO in the code-file, but does
not generate BIND INFO, so PASCAL programs cannot yet be linked to other
code-files. The compiler itself is written in 86700 Algol, as are most of
the extra
trinsic procedures it uses.
Objectives of this project were to develop a compiler which enforced compliance with the standard definition of PASCAL as far as possible by utilizing
the special features of the B6700 system, while'making it a fully integrated
member of the B6700 compiler set. These targets have been largely met, and
a wide variety of checks are available to the user-programmer; probably to
a higher degree than most other PASCAL compilers. However, file attributes,
record-oriented formatted i/O, random-access i/o, and compiler options, are
provided in a way that will ease the learning problems of existing B6700
programmers. The compiler permits use in a very similar manner to the wellknow compilers (Algol, FORTRAN, COBOL, etc).
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 recipients as patches or as new version releases. The Department accepts
FTR notices, and will attempt to fix those which warrant such attention.
Some modifications have taken place as a result of user feedback. The
compiler was espe'cially 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!

::z

rn

<--

c:
::z

rn
I-'
lO
'I

00

-c

»

en
rn
V1
00

User-level documentation is provided for the compiler in the form of cards
and reference manuals.
manuals and cards.

ell 10070, IRIS 80 (Paris)

The standard of these is similar to that of Burroughs'

Systems documentation is more sparse, and consists of

O.

DATE/VERSION.

78/02/21.

some implementation notes, the compiler itself (a microfiche listing is pro-

1. Distributor/implementor/maintainer:

vided), and a report on aspects of the language.

implementor:
D. Thibault
17, rue Gay-Lussac
F-75005-Paris

The compiler is in daily use by students at the University of Tasmania.
I must apologize to those of you who wrote enqulrlng about the availability
of our B6700 PASCAL compiler earlier and did not receive a prompt reply.
The end of the academic year and a number of important decisions interfered
to prevent us making the compiler available as soon as we would have liked.
To cut a long story short, the B6700 PASCAL compiler developed at the
University of Tasmania is now available from us. There are three conditions:
(1)

each recipient must agree not to disclose the compiler to other
parties, and must agree not to supply copies to other institutions.

(2)

an annual fee of $100 (Australian) is required to cover mailing,
processing, and other maintenance charges, payable to
"The University of Tasmania".

The compiler has been operational in a student environment at the University
of Tasmania for a year and has proved stable and reliable; it has been
released on a restricted basis to two other sites for about eight months
with similar results.

The compiler is provided with a Reference Manual and

&Wirth),

a Supplement to the User Manual (of Jensen
cards.

2.

Machi ne:

3. System configuration: Siris7,Siris8.Easily available on other systems:
adaptatlon of run-time routines and perhaps of the code-generation phase of
the compiler.
4. Distribution: source programs (Pascal and assembly code), object programs
and load modules available on magnetic tape (9 tracks,1600bpi);send a minitape to distributor; mailing cost only:
5. Documentation: user manual, in french (sept. 75);separate papers describe
extenslOns and differ~.1ces with the User Manual and Report (K.Jensen,N.Wirth);
not machine retrievable.
6. Maintenance pol icy: bug reports are encouraged;announcements of releases
(errors and/or
are sent to users, together with listings of modifications
extensions).Release 5 has been issued in Jan. 78.

-

~Q!_i~Q!~~~~!~Q:

and with ready-reference

the University of Tasmania. The service provided includes the provision of
updated versions of the compiler at intervals, and the maintenance of an
FTR-service similar to that of Burroughs.
If you want further information before ordering the compiler, please write
(FO~l

If you want a copy, please

A) to be signed by a responsible

officer of your institution and the computing centre manager (if applicable),
and forward it with the supplementary information
given.

(FO~l

8.

Measurements:

).117~

Professor A.H.J. Sale,
Department of Information Science.

=

:z
fTl

- type T= ~type identifie~
- record ... case  of
(tag field is mandatory)
structured types of files.
- separate compilation
- VALUE part for global variable~ initialization
- heap management through NEW/DISPOSE or NEW/RESET
- standard files TTYIN,TTYOUT used for interactive
applications programming
- compiler options (source listing,run-time checks,
post mortem dump, pseudo-assembler listing of generated code.

- compilation space: minimum 32K words;
40K words to compile the compiler.
- compilation speed: ~ 2100c/s (Fortran: ~ 1300c/s)
- execution speed: programs from N.Wirth(ETH ZUrich,March 76):

B) to the address

Yours sincerely,

'--

7. Standard:

Recipients are granted copyright permission to reproduce these for

arrange for the non-disclosure notice

fTl

CII-I0070,CII-HB-IRIS 80,XDS-Sigma 7

their own purposes, and in some cases additional copies may be ordered from

and we can send you documentation and listings.

:z

distributor/maintainer:
P.Maurice
Universite Paul Sabatier
Informatique
1I8,route de Narbonne
F-31077-Toulouse-cedex
(61)53-11-20(300)

Pascal
run-time checks
palindromes
powers of two
Prl me numoers
coum: c~araCl:ers
in a file

4260ms
1530ms
.~uums

5100c/s

Pascal
no checks

Fortran

3860ms
1470ms
1700ms

2970ms
3867ms
941ms

5800c/s

5100c/s

\Jl
<.D

9. Rel iabil ity: good;used since 1974 in '25 installations. mainly for teaching
programmlng and compiler writing. and also for the development of large system
software projects.
10. Development method: fully bootstrapped from Amman's CDC compiler;generates
code for the ell link editor;all operating system dependencies are located in a
monitor (~OOO lines of assembly code). which must be linked with user programs.
The compiler takes advantage of the separate compilation system: it consists of
four overlayed modules (~500 'pretty-printed' Pascal lines).
The bootstrap process took about 2 man/years. to produce a compiler for the first
version of the language(Wirth 71);adaptation to standard took about 6 man/months.
11. Library support: a system library contains the standard Pascal functions SIN.
COS •... and the Pascal monitor (see 10).
Separate compilation allows using private libraries. written in Pascal or in any
other language;interfacing with other languages requires a knowledge of the compiler.
Programs are manipulated under control of a 'Pascal programming system'. which
provides the users with powerful editing functions. ranging from source inclusion
to program transformations.Also provided are interactive debugging at compile and
execution time. and library management. The system is entirely written in Pascal
('"'22000 1i nes) .

As part of our continuing PASCAL development we now have a
preliminary implementation of a PASCAL compiler which produces
code that executes at the speed of that provided by Data
General's Optimizing FORTRAN 5. We expect. however. the full
development of this product will take 6-12 months.
have decided. therefore. to release our current improved
version of Data General PASCAL for a reproduction cost of
$100.00 on 800 BPI. 9 track magnetic tape. This includes
executable object code. source code and machine readable
documentation.

l~e

Please find attached a standard description of the product.

Ted C. Park
Director. Systems Development
DISTRIBUTOR/IMPLEMENTER/MAINTAINER

Connnodore 6502.
Formerly MOSTEK.

Ted C. Park
Director. Systems Development
Medical Data Consultants
1894 Commercenter West
Suite 302
San Bernardino
CA 92408

See DEC LSI-11 (San Diego).

Computer Automation LSI-2, 4
Bob Hutchins (Computer Automation; 18651 Von Karman; Irvine. CA 92713; 714/833-883Ox335)
wrote on 78/3/1: "We just recently brought up sequential Pascal on out new 16-bit
minicomputer series. the Naked Mini-4 series. It runs on all models including the NM-4/10
which sells for $645 including CPU. 4K RAM. and 4 I/o ports. As far as I know. this is the
lowest priced minicomputer system that supports Pascal. Our Pascal is based on sequential
Pascal supplied by Brinch Hansen. It is supplied at a one time fee of $900 including
compiler, interpreter, and documentation."
Minicomputer News reported on page 2 of their Jan. 5, 1978, issue

that

"Pascal

software

[on the LSI-4 linel. formerly priced at $900. will be offered without charge."

MACHINE

'--

c:::
:z
I"T'1

Data General - any ECLIPSE-line computer
SYSTEM CONFIGURATION
ECLIPSE must have FPU or EAU
Minimum of 16K words user memory
RDOS REV 6.1 or 6.2
FORTRAN 5 (any recent revision)
DISTRIBUTION

Data General ECLIPSE (San Bernardino)

MEDICAL DATA CONSULTANTS

System supplied on 9-track 800 BPI tape in RDDS 'dump' format.
The cost is $100.00 to cover our mailing and duplicating costs.
(714) 825-2683

March 10. 1978
1894 Commercenter West, Suite 302, San Bernardino, CA 92408

Dear Andy.
We have spent the last several months in a reconsid~ration
of our entire PASCAL endeavor. As we reported prevlously. we
have developed a new version of Data General compatible PASCAL
which is significantly faster than our previous version. but
which continues to use a 64-bit data path. is fully RDOS
compatible and easily modifiable and extendable. We had
previously intended to take this version to market as a low
priced. but profit making venture. as reported in the February
PASCAL NEWS.

DOCUMENTATI ON
User must obtain his own copy of the Pascal Users Manual and Repurt.
It is recommended that the user obtain an implementation kit from
the University of Colorado.
Documentation and operating procedures are supplied on the tape.
MAINTENANCE POLICY
Bug reports are welcome but no formal commitment for support can be
made at this time. To date. no bugs have been reported.
STANDARD
PASCAL P4 subset

en
o

MEASUREMENTS
Compilation Speed:
Word Size:
Real Arithmetic:
Integer Arithmetic:
Execution Speed:
14i nimum Memory Needed:
Virtual Memory Required:

50 chars/sec (including blanks and comments)
64 bits
Uses 64 bits
Uses 32 bits
Fairly slow (since it is interpreted!)
16K words
A contiguous disc file of 524.288 bytes

RELIABI LITY
Version 1 exists in at least 10 sites. we believe no bugs exist.
Version 2 is primarily the same as Version 1 except with improved
operating procedures. faster compiles and executions. and increased
capability. As such we anticipate few. if any. bugs.
DEVELOPMENT METHOD
Developed from PASCAL-P4. P-CODE assembler and interpreter written
in assembly language. All programs are extremely modular and well
documented so that any changes wished by the user should be easy to
incorporate.
LIBRARY SUPPORT
No Data General libraries are needed to run the system nor is it
possible to use any if desired.

:3elO\. is the checklist information on our P'\SCAL conpiler for
Data General NOVA (or equi'lilent) computers.
JlI8TRI[JUTOR/PIPLE~'lJmTOR/'IAIlIT!\INBR
~1d. 21')45 (301)

i'lACHIIIE -- Data Genf!ral :'IO"A or BCLIPSe niniconputers or
equivalents.

'1.I\I!I'EI:llAc.JACE P'-)T,ICY -- Updates :':or one Yf!ar antI notificatioll 0::'
suhstantial enhanceM~nts a.R long af; int(!rest i:; sho~~n.
T.JC ~..rill
maintain a users qroup and encourage lyag r~ports and 5ugl)estions.·

-- ~~he conpiler cO!"1niles sourcr! code at the rate o£

200 line/nino ~hiB is ,,')out one-half o-F t'le rate of the Pl)P 11/45
but five to ten tines the s:1E~ed of t~le otiler cOPlnilers on tllf'~

;D'TA.

The compiler "ill co;:'pile it'lel:': in a')out' 3~ ninutc" total.

P.O. Sox 220, Columbia, Maryland 21045
DEVglf)P~1J~NT ~tE~.eiH1D -- ':'he virtual !1achinc internretcr 'E:

DI8T1UBUTI0:" -- 9 track nagnetic tape, 8')1 BPI, 7.S inch tape
in the ~D()S du1"1.p format.
Price for a single user licen~)e i~ $975.
··1ulti-llse, f)p.r·l's, and (~c1ucational licenses I..d.ll }H~ lv:tndled on a
separate hasi~.

label, and nacked" renerved \lords a'1d srIr, sj.n, cos, arctan, In,
exp, sqrt, eof, eoln, odd, a.nd round builtin ::nnctions.
r~11i <"';
is a seven p.q,ss SA;IIuential P.~S(~1\T.s conD~_le.r. \-"l:':-i tten in P1\.S~?\I.s and
qeneratinq code :l:or a il"pothctical l~tacJ:' Dn.chine.
~~1~ code is
internreted !J" a 1')rograM ':-1rit.ten in iT0U n. a~1qc!:1~)ly languacJe.

Rhintek, Inc.

:z

rn
SYSTE'l COClPIGURl\'i'!0H -- '\annf!d R.TYlS svsten or 32K unnarmed HD'18
Hith ninimum operating svsten.
~hp. c~rrent r.~vision of Data
General RDOS "ill bf! sUTJnorted but the conpiler should Hork with
oldf!r levels.
'

STAN;)l\. ~D -- Ba~H~d on C;equential P1\f;C.1\.L ~,..,:t:"i tten lx.' Per B!:"inch
iIanfH~n and Al HartP1:an.
ri..l~e current version 1.1.cl;;:~: n file, qoto,

Data General NOVA. ECLIPSE (Columbia)

Computer Engineering

R!lIlITEK, IIlC; Box 220;

Columhia,

I.sIBTt.l\R~! SrJPP0RT -r;:'l-tere is no library support as yet.
~he
operat 7ng proqrans sup!>ort proqram !T:lapp5_nq or c"i-laining T.vi t~1
only rl1nor effort as t~lis ic:; used ,·vith thG conniler.

Sincerely,

'Za;_ller "\cr.o·lnJ ;;:jM./.;~
Inc.

~!1i'ltek,

<-

=
:z
rn
I-'

l.O
'-J

00

DEC PDP-11 (Berkeley)

DEC PDP-11 (Stockholm)

-0

J::>

o.

(/)

DATE/VERSION.

77/12/22.

n

,

J::>

A package of UNIX software is available from the Computer Science
Division of the University of California at Berkeley. This package includes the
instructional Pascal system which has been in use at Berkeley this past year
and the standard Berkeley editor ex, an extension of the standard UNIX editor
ed which offers many new and improved features. The Pascal system requires
separate l/D space to run (an 11/45 or 11/70); ex will run without separate
l/D but requires a full load of user core (64 bytes).

IMPLEMENTOR/DISTRIBUTOR/MAIN·fAINER. Saved ·ror~~tendahl, TN/X/Tds,
Tele·roll AB L.. M Ericssc)n, 8-126 25 St(Jckholm~ Swedell' tel 08--719 4909.

1.

Z

rr1
::;::

2.

MACHINE. Runnins on PDP-ii model 35 and UP 2nd Sene rates cede for
all PDP-Ills. Crosscompiler on DE~C-I0 Sene rates code fOJ' all PDP····l1'~i.
The compilers generate code f(Jr floatillS poir)t hardw~r0

(/)

a!ld extended arithmetic if option switctles are set.

'{terr)" ,
-- mast option selectors ( C*SM+*> etci) are settable b~ swi·tches in the
MeR command line ( versior) 5 December -77 ).
8. MEASUREMENTS.
·fhe compiler reQuires a 32 Kwords Pi~rtitj.orl ( at least
26 Kwords for small proSrams ). Compilation speed is abOl!t 300 cllar's peT'
second. In a 64 Kwords partition using PLAS under RSX--l1M irlcreases ~;peed
about 3000 characters pel' siecond.

·~o

9. REL.IABIL.I·fY.
E,
G>

The follovling is an overview of COMSHARE'S PASCAL compiler system. It
is presented and outlined vlith respect to a "package" that could be delivered, from which you could implement the system on your machine.

rn

en
.l::"

I.

History

Comshare's PASCAL compiler.was originally a bootstrapped version
of the portable Pascal 'P' compiler. The impetus for the compiler project
was to ~rovi de the company programmers \'Iith a state-of-the-art language
from 11h1Ch they could write readable, e~".ily maintainable, efficient
programs. Along with these objectives, machine independent programs were
sought and this feature was designed into the compiler system. It was
decided that the portable PASCAL compiler, with some major modifications
would be a reasonable base to start from.
II.

PASCAL Language f.1odifications

IV.

Aside from our current, and most highly recommended compiler, we
have available two predecessors from which"'it evolved. A list of pertinent
facts relating to each version follows. All timing estimate: are based
relative to our XDS 1968 FORTRAN compiler which is a one pa:;;" processor
written in a low-level language.
A.

- uses the ETH character set.
- no external procedures.
- generates macro's that are assembled into
threaded calls to runtime interpretel-.
- very limited 1/0 facilities.
- do not know the specific core requirements
but I'm sure it's no oroblem.
- runs at approx. 10.0 times the speed of
FORTRAN.

Also, the scoping mechanism I~as eliminated (ie. all procedures are
consi dered on the same "level") because it was contrary to structured programming principles, allowing for pathelogical data references, etc. All the
basic language statements, control structures and the declaration sections
are the same or enhanced.

III.

Since the language has become an off-color PASCAL,
the name has been changed to PASTEL.

Operational Characteristics

B.

- uses EBCDIC character sets.
- augmented P-code set.
- 1/0 still limited but faster.
- full set of da ta types.

Comshare's PASTEL compiler is a three phase (pass) language processor
sy~tem.
The first phase is a machine independent phase, the second and
thlrd are target machine dependent. The process basically consists of
translating a source program into a machine independent intermediate form
of code for a hypothetical stack computer (see "The PASCAL 

Compiler: Imp 1ementati on Notes", NORI, AHMANN, JENSEN, WI RTH) . Then, for any gi ven machine, a code generator for it converts the intermediate code into hard machine code. - stack machine operations are simulated in registers where possible. - maximum core requirement is approx. 40K ~Iords (??). language complement is 'very close to "s tanda rd" PASCAL. . - runs at approx. 3.0 times the speed of FORTRAN. The first phase (compiler) has three functions: to syntatically analyze the source program; to translate the program into a form of "assembl er-l ike" intermediate instructions (P-codes) and di recti ves; and finally to perform the static and dynamic data allocation. The third phase is necessary for portability purposes. It is simply running the target machines assembler over the generated symbolic instruction to produce a load'r compatible relocatable binary object file. The process can be viewed as follows: Please note that for the ultimate "production" compiler, one would want to eliminate the third phase by adding a module to the code generator to emit relocatable binary directly. The emission of the symbolic meta symbol could then be an "optional" feature for the compiler to aid in analysis and debugging of the systems you apply this language to. PASCAL COf.1PILER T~i~ is a "real" compile: in the sense that all interpretEr functions were el1m1nated and replaced w1th a code generation phase. The general enhancements are as follows: A. System deSign The second phase also has three discrete functions: to translate the P-codes into a form suitable for code emission (triples) and optimization; optimization, and the emission of the machine instructions themselves. PASCAL THREADED -CODE INTERPRETER This version implements the language essentially as described in Jensen .and 14i rth' s User Gui de I Report. In areas where the language definitions were found undesirable or inadequate, modifications were made. The areas primarily effected were the 1/0 and scoping structure. In brief, the standard INPUT and OUTPUT files 11ere eliminated along with the GET and PUT operations. They were repl aced with 'FILE' decl aration types, OPEN and CLOSE primiti ves. The READ and WRITE statements were modified and binary file operators were added. Note: Compiler Specifications and Limits C. CURRENT PASTEL COMPILER This compiler is verY close to our version of a finished product. It h~s a .lot of enhancements in the areas of usability, efficiency and ~C~l ~e lndependence. It contains user-ori ented features, a new and op- t1m1z1ng code generator and cross-compile abilities working for a Sigma-9 and an INT~L 8080 micro computer. Its language and feature descriptions c~n b~ revlewed in the enclosed preliminary reference manual. They are h1 gh 11 ghted by: - compiler option recognition. - language processor control program. 'c:: :z rr1 !-I = rn Northwest Microcomputer Systems 85/P Interdata 7/16, 8/32 Northwest Microcomputer Systems (121 East 11th; Eugene, OR 97401; 503/458-0626) is marketing an Intel 8085A based system which supports UCSD Pascal -- see DEC LSI-11 (San Diego). Hardware includes two floppy disks (1 megabyte), 54K bytes of 450ns static RAM, a keyboard, 24 by SO char CRT, 2 serial ports, and several parallel ports. The price is $7495. Also included is the CP/M operating system. llm'illl'hip Susiems computer hardware and software 16 Saint Jude Road Mill Valley, Ca. 94941 Prime P-400 (415) 383-1545 O. DATE/VERSION. 78/03/01. GEORGIA TECH PR1ME 400 PASCAL COMPILER. March 22, 1978 1. Timothy M. Bonham D60S/1630 S. Sixth Street Minneapolis, MN School of Information and Computer Science 55454 Georgia Institute of Technology Atlanta, Georgia 30332 Dear Tim: The many extended conversations that went on at the Computer.Faire resulted in some scrambled information being received. The Interdata 7/16 Pascal compiler that I have a copy of is the cross-compiler for the Univac 1100 that was done by Mike Ball of the Naval Ocean Systems Center (formerly Naval Undersea Center) in San Diego. His compiler is a version of the Hartmann IMPLEMENTOR/DISTRIBUTOR: Professor Richard J. LeBlanc 2. MACHINE: 3. SYSTEM CONFIGURATION: bytes minimum. 4. DISTRIBUTION: A first release of the compiler should be available by July 1978. Further details are not yet finalized. 5. DOCUMENTATION: None yet available beyond PASCAL-P documentation. = Z 6. MAINTENANCE POLICY: Error reports from users will be encouraged. Details concerning distribution of corrections and updates not yet finalized. rr1 7. LANGUAGE IMPLEMENTED: S. MEASUREMENTS: 9. RELIABILITY: Not yet available. (It is intended that this implementation project will eventually result in a highly diagnostic and very reliable compiler.) 10. DEVELOPMENT METHOD: The code generation parts of the PASCAL-P4 compiler are currently being rewritten to generate PMA calls to interpreter routines. This will then be assembled and I Brinch Hansen compiler with the interpretive code generation pass removed and three phases added which generate Interdata machine code. He has both the Sequential and Concurrent compilers running (with common code generators), and an Interdata kernel for Concurrent Pascal. The compiler was written with "source code configuration" statements in it so that either a Univac or an Interdata version can be generated by processing a common source with a Pascal program. As of the time I got a copy of the compiler (about a year ago), only the cross-version was running, and the bootstrapping to the 7/16 was not yet complete. I have not talked with Mike to find out whether the compiler is yet running on the 7/16 itself. I do know that the Univac version was producing workable 7/16 code. I understand that Mike now has the Interdata 8/32 version compiling itself on the 8/32. Apparently the 8/32 version is extended beyond the original 7/16 design, and may be moved back down to the 16 bit series. In any case, the person to contact about all this stuff is Mike, not me. (Mike is a PUG member, and his address is listed in the roster). I got a copy of Mikels compiler in the hopes of using it as a base to build a true compiler for the. T.l. 9900 machines I am building. At present, we are taking a hydra-headed approach to Pascal. We are looking at the UCSD Pascal, and also at bootstrapping the original Concurrent Pascal via the interpretive code. Once we have a workable interpretive Pascal, we will do the true compiler if we feel the need. I hope this information has been of use. I will send in an implementation checklist for my 9900 Pascal as soon as it is running. Sincerely, PRIME 400 PRIMOS IV Operating System, 64V mode, 12SK '- PASCAL-P subset of Standard PASCAL. Not yet available. linked with those routines, producing a "threaded code" interpretive program. The compiler will be bootstrapped to the PRlME using PASCAL-6000 on a CDC CYBER 70. 11. LIBRARY SUPPORT: None yet available. Support for external procedures written in PASCAL, FORTRAN and PMA will be an early addition to the compiler. 12. FURTHER DEVELOPMENT: As soon as this first version is available, work will begin on adding code generators to produce directly executable code. At the same time, implementation of full PASCAL will be under development. Many of the diagnostic features currently found in the UW-PASCAL compiler for UNIVAC 1100 machines will also be included. INDEX TO IMPLEMENTATION NOTES General Information 119&10: 60. 1111: 70. Checklist 119&10: 60. 1112: 56. Portable Pascals Pascal-P 119&10: 61-62. 1111: 70-72. 1112: 56. Pascal Trunk 119&10: 62. Pascal J 119&10: 62. Pascal Variants Concurrent Pascal 119&10: 63. 1111: 72-74. Modula 119&10: 63. 1111: 74. Pascal-S 119&10: 63. 1111: 72. Feature Implementation Notes Sets 119&10: 64-66. 1112: 57. For Statement 119&10: 66-69. 1111: 79-80. Default Case 119&10: 69-70. Variable Parameters 119&10: 71. Interactive I/O 119&10: 71-72. Unimplementable Features 1111: 75. Long Identifiers 1111: 78-79. Boolean Expressions 1111: 76-78. Machine Dependent Implementations Alpha Micro Systems AM-II See DEC LSI-l1. Amdahl 470 See IBM 360, 370. Andromeda Systems 11-B 1111: 80. Burroughs B1700 119&10: 73. 1112: 57. Burroughs B3700, B4700 119&10: 73. 1112: 58. Burroughs B5700 119&10: 74. 1111: 81. Burroughs B6700, B7700 119&10: 74-75. 1111: 81. 1112: 58-59. CDC Cyber 18 and 2550 119&10: 75. 1111: 81-82. CDC 3200 119&10: 75. 1111: 82. CDC 3300 119&10: 75. CDC 3600 119&10: 75. CDC 6000, Cyber 70, Cyber 170 119&10: 76. 1111: 82-83. CDC 7600, Cyber 76 119&10: 76. 1111: 83. CDC Omega 480 See IBM 360, 370. CDC Star-100 119&10: 77. crr Iris 50 119&10: 77. CII 10070, Iris 80 119&10: 77-78. 1112: 59-60. Commodore 6502 1112: 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. 1111: 85. 1112: 60-61. Data General Nova 119&10: 79-82. 1111: 83-85. 1112: 60-61. DEC PDP-8 119&10: 82. 1111: 85. DEC LSI-II and PDP-II 119&10: 82-88. 1111: 86-91. 1112: 62-63. DEC VAX-11/780 1112: 63. DEC DECSystem-10 119&10: 89-91. 1111: 91-92. Dietz MINCAL 621 119&10: 91-92. Foxboro Fox-l 119&10: 92. Fujitsu FACOM 230 119&10: 92. Harris / 4 119&10: 92-93. Heathkit H-11 119&10: 93. Hewlett Packard HP-2100,2lMX 119&10: 93. 1111: 92. 1112: 63. Hewlett Packard HP-3000 119&10: 94. 1112: 63-64. Hitachi Hitac 8700, 8800 119&10: 94. Honeywell H316 119&10: 94. 1111: 93. Honeywell 6000 119&10: 94-95. 1111: 92-93. IBM Series 1 119&10: 95. IBM 360, 370 119&10: 95-101. 1111: 93-100. 1112: 64. IBM 1130 119&10: 101. ICL 1900 119&10: 101-102. 1111: 100-101. ICL 2900 119&10: 102. 1111: 100, 101-102. Intel 8080, 8080a 119&10: 102-103. 1111: 102. 1112: 64-66. Interdata 7/16 /19&10: 103. /112: 67. Interdata 7/32, 8/32 119&10: 103-104. 1112: 67. ITEL AS/4, AS/5 See IBM 360, 370. Kardios Duo 70 119&10: 104. Mitsubishi MELCOM 7700 119&10: 104-105. MITS Altair 680b See Motorola 6800. MITS Altair 8800 See DEC LSI-11. MOS Technology 6502 See DEC LSI-11. Mo.torola 6800 119&10: 105. 1111: 102. Nanodata QM-1 119&10: 105. NCR Century 200 119&10: 105. Norsk Data NORD-10 119&10: 106. Northwest Micro Systems 85/P 1112: 67. Prime p-300 1111: 103. Prime P-400 119&10: 106. 1112: 67. SEMS T1600, SOLAR 16/05/40/65 119&10: 106. Siemens 330 119&10: 107-108. Siemens 4004, 7000 119&10: 108. Telefunken TR-440 119&10: 108. Terak 8510 See DEC LSI-11. Texas Instruments TI-ASC 119&10: 109. Texas Instruments 9900/4 119&10: 109. Univac 90/30 119&10: 109. Univac 90/70 #9&10: 109. Univac 1100 119&10: 109-112. 1111: 103. Univac V-70 119&10: 112. Varian V-70 See Univac V-70. Xerox Sigma 6, 9 #9&10: 112. Xerox Sigma 7 119&10: 112. Zilog Z-80 #9&10: 112. 1111: 103. :z rn :::e:: (/) c.... = :z rn I-' '.0 ....... 00 POLICY: PASCAL USER'S GROUP (78/04/15) Purposes: 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 News, the most important of which is about implementations (out of the necessity to spread the use of Pascal). The increasing availability of Pascal makes it a viable alternative for software production and justifies its further use. We all strive to make using Pascal a respectable.activity. Membership: Anyone can join PUG: particularly the Pascal user, teacher, maintainer, implementor, distributor, or just plain fan. Memberships from libraries are also encouraged. See the ALL PURPOSE COUPON for details. FACTS ABOUT Pascal, THE PROGRAMMING LANGUAGE: Pascal isa 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 "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 and resources and increase productivity. Pascal implementations exist for more than 62 different computer systems, and the number increases every month. The Implementation Nete~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 1923 active members in more than 35 countries. This year Pascal News is averaging more than 150 pages per issue. "o-_. n '< Return to: University Computer Center 227 Experimental Engineering Building 208 Southeast Union Street University of Minnesota Minneapolis, Minnesota 55455 USA return postage guaranteed address correction requested The University of Minnesota is committed to the policy that all persons shall have equal access to its programs, facilities, and employment without regard to race, creed, color, age, sex, national origin, or handicap.


Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2011:06:15 15:25:35-08:00
Modify Date                     : 2011:06:15 15:28:50-07:00
Metadata Date                   : 2011:06:15 15:28:50-07:00
Producer                        : Adobe Acrobat 9.43 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:879b9259-2177-4ef5-b2d5-b2de1710f450
Instance ID                     : uuid:f255174f-ebda-4076-8efa-15fe3f15dc42
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 72
EXIF Metadata provided by EXIF.tools

Navigation menu