summaryrefslogtreecommitdiff
path: root/old/50468-0.txt
diff options
context:
space:
mode:
Diffstat (limited to 'old/50468-0.txt')
-rw-r--r--old/50468-0.txt2203
1 files changed, 0 insertions, 2203 deletions
diff --git a/old/50468-0.txt b/old/50468-0.txt
deleted file mode 100644
index 4b62e0d..0000000
--- a/old/50468-0.txt
+++ /dev/null
@@ -1,2203 +0,0 @@
-The Project Gutenberg EBook of The Oak Ridge ALGOL Compiler for the
-Control Data Corporation 1604, by L. L. Bumgarner
-
-This eBook is for the use of anyone anywhere in the United States and most
-other parts of the world at no cost and with almost no restrictions
-whatsoever. You may copy it, give it away or re-use it under the terms of
-the Project Gutenberg License included with this eBook or online at
-www.gutenberg.org. If you are not located in the United States, you'll have
-to check the laws of the country where you are located before using this ebook.
-
-Title: The Oak Ridge ALGOL Compiler for the Control Data Corporation 1604
- Preliminary Programmer's Manual
-
-Author: L. L. Bumgarner
-
-Release Date: November 17, 2015 [EBook #50468]
-
-Language: English
-
-Character set encoding: UTF-8
-
-*** START OF THIS PROJECT GUTENBERG EBOOK THE OAK RIDGE ALGOL COMPILER ***
-
-
-
-
-Produced by David Starner, Stephen Hutcheson, and the
-Online Distributed Proofreading Team at http://www.pgdp.net
-(This book was produced from images made available by the
-HathiTrust Digital Library.)
-
-
-
-
-
-
- ORNL-3460
- UC-32—Mathematics and Computers
- TID-4500 (23rd ed.)
-
-
-
-
- THE OAK RIDGE ALGOL COMPILER FOR THE CONTROL DATA CORPORATION 1604
- PRELIMINARY PROGRAMMER'S MANUAL
-
-
- L. L. Bumgarner
-
- OAK RIDGE NATIONAL LABORATORY
- operated by
- UNION CARBIDE CORPORATION
- for the
- U.S. ATOMIC ENERGY COMMISSION
-
- Printed in USA. Price: $1.25 Available from the
- Office of Technical Services
- U. S. Department of Commerce
- Washington 25, D. C.
-
- LEGAL NOTICE
-
-This report was prepared as an account of Government sponsored work.
-Neither the United States, nor the Commission, nor any person acting on
-behalf of the Commission:
-
- A. Makes any warranty or representation, expressed or implied, with
- respect to the accuracy, completeness, or usefulness of the
- information contained in this report, or that the use of any
- information, apparatus, method, or process disclosed in this report
- may not infringe privately owned rights; or
-
- B. Assumes any liabilities with respect to the use of, or for damages
- resulting from the use of any information, apparatus, method, or
- process disclosed in this report.
-
-As used in the above, “person acting on behalf of the Commission”
-includes any employee or contractor of the Commission, or employee of
-such contractor, to the extent that such employee or contractor of the
-Commission, or employee of such contractor prepares, disseminates, or
-provides access to, any information pursuant to his employment or
-contract with the Commission, or his employment with such contractor.
-
- ORNL-3460
-
-
- Contract No. W-7405-eng-26
-
-
- Mathematics Division
-
- THE OAK RIDGE ALGOL COMPILER FOR THE CONTROL DATA CORPORATION
- 1604—PRELIMINARY PROGRAMMER’S MANUAL
-
- L. L. Bumgarner
-
-
- DATE ISSUED
- JAN 30 1964
-
-
- OAK RIDGE NATIONAL LABORATORY
- Oak Ridge, Tennessee
- operated by
- UNION CARBIDE CORPORATION
- for the
- U.S. ATOMIC ENERGY COMMISSION
-
-
-
-
- CONTENTS
-
-
- I. Introduction 1
- II. Language Restrictions 2
- III. Modes of Operation of the Compiler 4
- IV. Input-Output and Intermediate Tape 5
- Input-Output 5
- READ 5
- PAGE 7
- Lists and the List Declaration 7
- PRINT 9
- WRITE 9
- PUNCH 10
- Formats and the Format Declaration 10
- INPUT 11
- OUTPUT 12
- Intermediate Tape Procedures 13
- BINREAD 13
- BINWRITE 14
- ENDFILE 14
- REWIND 14
- BACKUP 14
- Tape-Checking Procedures 14
- EOF 15
- READERR 15
- WRITERR 15
- V. The External Declaration 16
- VI. Standard Procedures 16
- VII. Error Checking and Diagnostics 17
- VIII. Running Programs 19
- ALGOL Control System 20
- EOP Card 20
- Compile and Execute: ALGO 21
- PROGRAM Card 22
- Compile/Execute: ALDAP 22
- ALDAP Control Statement 22
- Job Deck: ALDAP Compilation/Execution 23
- Examples 25
-
-
- APPENDICES
- A. Adjuncts to Algol 60 30
- B. Hardware Representation 32
- C. Structure of Procedure Calling Sequence 35
- D. Internal Representation of Strings 37
- E. Program Efficiency 38
- F. Controversial Features of Algol 60 40
- G. Fortran Subprograms in an Algol Program 41
-
-
-
-
- THE OAK RIDGE ALGOL COMPILER FOR THE CONTROL DATA CORPORATION
- 1604—PRELIMINARY PROGRAMMER’S MANUAL
-
-
- L. L. Bumgarner
-
-
- ABSTRACT
-
- This document is a preliminary programmer’s manual for use of the
- Control Data 1604 Algol Compiler. The compiler was constructed by the
- Programming Research Group of the Mathematics Division in cooperation
- with Control Data Corporation. A knowledge of Algol 60 is assumed.
- Included are descriptions of input-output facilities and details for
- operation under the monitor system.
-
-
-
-
- I. Introduction
-
-
-This document is to serve as a programmer’s manual for the Algol
-compiler constructed as a cooperative project by Control Data
-Corporation and the Mathematics Division of Oak Ridge National
-Laboratory. The compiler is designed for the Control Data 1604 and
-1604-A computers. The document is preliminary in that the compiler is
-not thoroughly tested and may undergo further development.
-
-The reader is assumed to be familiar with Algol 60. The defining
-descriptions are the two reports on Algol 60 available in the following
-references:
-
- 1. P. Naur et al, “Report on the Algorithmic Language Algol 60,” Comm.
- Assoc. Comp. Mach., 3 (1960), No. 5, 299-314.
-
- 2. P. Naur et al, “Revised Report on the Algorithmic Language Algol
- 60,” Comm. Assoc. Comp. Mach., 6 (1963), No. 1, 1-17.
-
-The second report clears up certain ambiguities that appeared in the
-first report. The reports are not easy reading for the novice. The
-following expositions are more readable:
-
- 1. Baumann, Bauer, Feliciano and Samelson, Introduction to Algol,
- Prentice-Hall, Inc. (to be published in late 1963).
-
- 2. Bottenbruch, H., “Structure and Use of Algol 60,” Jour. Assoc.
- Comp. Mach., 9 (1962), No. 2, 161-221, and ORNL-3148.
-
-The Baumann publication also contains the revised Algol 60 report.
-
-Throughout this document various examples of statements and declarations
-appear without the semicolon which is always required for separating
-them. This is to avoid the implication that the semicolon is part of the
-statement or the declaration. In sentences, a comma or period may appear
-where a semicolon or other delimiter would be indicated in the context
-of a program.
-
-Word delimiters rendered in bold-face type in the Algol report are
-herein indicated by underlining.
-
-
-
-
- II. Language Restrictions
-
-
-The compiler correctly handles programs written in Algol 60 subject to
-the following restrictions.
-
-1. The use of an integer label as an actual parameter will cause an
-incorrect program to be compiled.
-
-2. A GO TO statement with an undefined switch designator as the
-designational expression will cause incorrect operation of the final
-program.
-
-3. Type restrictions:
-
- (a) The exponentiation expression x ↑ y will have type real unless x
- is of type integer and y is a non-negative integer constant. This
- differs slightly from the definition in the Algol report but will
- generally cause no difficulty.
-
- (b) In the construction
-
- <if clause> <simple arithmetic expression>
- else <arithmetic expression>
-
-the arithmetic expressions must have the same type, or else an incorrect
-program will be compiled. For example, in the statement
-
- x := if a < b then z else w
-
-z and w should both be declared real or both integer.
-
-(c) In a procedure call (procedure statement or function call) each
-actual parameter having an arithmetic value must have the same type as
-the corresponding formal parameter in the procedure declaration. The
-type of the formal parameter is that designated in the specification
-part if it appears there. If a formal parameter representing an
-arithmetic quantity does not appear in the specification part, it is
-assumed to be specified real. Full use of specifications is desirable
-for descriptive purposes and for optimization.
-
-Caution. Restriction (c) is more likely to cause errors than the other
-restrictions. It is very easy to write P(1,2) when the parameters of P
-are specified real, but incorrect coding will result. The call
-P(1.0,2.0) works correctly.
-
-4. Standard procedure names (see section VI) used as parameters in
-procedure calls will cause an incorrect program to be compiled. A call,
-therefore, such as
-
- P(sin)
-
-is incorrect. Note, however, that a call of the type
-
- Q(sin(x))
-
-causes no trouble. The case P(sin) can be programmed in another way.
-Make the declaration
-
- real procedure sin 1 (t); real t;
- sin 1 := sin(t).
-
-The call
-
- P(sin 1)
-
-is then correct.
-
-5. Arrays called by value are not handled. If an array identifier
-appears in the value part, an incorrect program will be compiled.
-
-6. “Dynamic” own arrays are not handled. This means that all own arrays
-are treated as having constant subscript bounds; this constitutes one
-possible interpretation of the Algol 60 report. An own array may be
-declared with variable subscript bounds, but only one allocation of
-storage will be made, and if the bounds change, this will be ignored.
-
-7. Recursive procedures are not handled. This restriction encompasses
-all cases of a function designator appearing in the actual parameter
-part of a call of the same function, unless that function is a standard
-function. Thus f(f(x)) is not permitted in general, but sin(sin(x)) is
-allowed.
-
-
-
-
- III. Modes of Operation of the Compiler
-
-
-There are two distinct modes of operation: ALGO and ALDAP.
-
-ALGO is a compile-and-execute mode in which the two phases cannot be
-separated. The Algol program is translated into a machine language
-program in core memory, and execution of the program immediately and
-automatically follows. There is no assembly program phase.
-
-ALDAP makes use of the CODAP assembly program facilities. It is possible
-to compile procedures separately and reference them from an Algol
-program. The procedures may be written in Algol, CODAP or Fortran. This
-provision is made possible with the aid of the external declaration
-discussed in section V.
-
-The ALGO mode provides significantly faster compilation than the ALDAP
-mode for most programs. The target programs produced in the two modes
-are essentially the same. In the ALGO mode, program checkout may be done
-at the Algol language level. In the ALDAP mode, checkout may also be
-done at the machine and assembly language levels, and modifications may
-be made at these levels.
-
-
-
-
- IV. Input-Output and Intermediate Tape
-
-
-There are seven standard procedures for input-output, five for
-intermediate tape, and three for checking tape conditions. Two
-declarations, format and list, are additions to the language.
-
-
- Input-Output
-
-The input-output procedures are: READ, PAGE, PRINT, WRITE, PUNCH, INPUT,
-and OUTPUT.
-
-
- READ
-
-The READ procedure is used to input numbers and Boolean values. A READ
-statement has the form
-
- READ (V1, V2, ..., Vn)
-
-where n is any positive integer and each Vk is a variable. For example,
-the statement
-
- READ (X, Y, A[1], B[1])
-
-will input values into the four variables listed. For inputing values
-into an array, a statement such as the following might be used:
-
- for I := 1 step 1 until 100 do READ (A[I]) .
-
-The READ procedure inputs numbers and truth values. A number must be a
-legal Algol number (although an E may be substituted for the symbol ₁₀).
-For input into a Boolean variable, the truth values true and false are
-accepted; also, a non-negative number or a plus sign is interpreted as
-false and a negative number or a minus sign is interpreted as true. A
-blank is read as zero.
-
-With the READ procedure, the type of a number on a data card does not
-have to be the same as the type of the variable to which it is assigned.
-Any necessary type conversions are done automatically. If N is the next
-number in the data, the statement
-
- READ (V)
-
-is equivalent to the statement
-
- V := N .
-
-The data cards are free field. The number of values per card, the length
-of numbers, and the number of spaces are arbitrary. A comma, however,
-must follow each number, including the last one on the last data card.
-
-In reading a value into a subscripted variable, the current value of the
-subscript expression is not affected by that READ statement. For
-example, in the statement
-
- READ (I, A[I])
-
-the old value of I is used in A[I].
-
-The READ procedure will input data from the standard input medium only.
-
-
- PAGE
-
-The PAGE procedure is used to cause a page ejection on the standard
-output medium. PAGE has no parameters. It is called by simply writing
-
- PAGE .
-
-
- Lists and the List Declaration
-
-The input and output procedures described in the rest of this section,
-as well as the binary read and write procedures, make use of the concept
-of a list. A list[1] is a sequence of expressions. An example is
-
- U + V, C[0], if B then X else Y .
-
-It may be inconvenient in some cases to write down all of the
-expressions explicitly. The loop expression[1] may be used as a
-shorthand device in a list. It is an Algol-like construction of which
-the following is an example:
-
- for I := 1 step 1 until 1000 do A[I] .
-
-This is equivalent to the list
-
- A[1], A[2], ..., A[1000] .
-
-The entity following do in a loop expression may itself be a list, but
-this list must be enclosed in parentheses if it contains more than one
-member.
-
-The loop expression
-
- for I := 1 step 1 until 1000 do (A[I], B[I])
-
-is equivalent to the list
-
- A[1], B[1], A[2], B[2], ..., A[1000], B[1000] .
-
-The loop expression
-
- for I := 1 step 1 until 10 do (A[I], for J := 1
- step 1 until 20 do B[I,J])
-
-is equivalent to the list
-
- A[1], B[1,1], B[1,2], ..., B[1,20],
- A[2], B[2,1], B[2,2], ..., B[2,20],
- ....................................
- A[10], B[10,1], B[10,2], ..., B[10,20] .
-
-A list may be given a name through a list declaration. A list
-declaration has the form
-
- list identifier := list .
-
-Examples are:
-
- list L := X, A + B
-
- list M := for I := 1 step 1 until N do A[I] .
-
-A list identifier may itself appear in a list. One of the above examples
-might be written with the aid of the following declaration:
-
- list L := for J := 1 step 1 until 20 do B[I,J] .
-
-The loop expression is then
-
- for I:= 1 step 1 until 10 do (A[I], L) .
-
-A list declaration obeys the same rules of syntax and scope as do other
-declarations.
-
-A list identifier may be used as an actual parameter of a procedure
-call, with the requirement that the corresponding formal parameter be
-specified list. However, an actual list may appear as a parameter only
-in calls of the standard procedures, as described.
-
-
- PRINT
-
-The PRINT procedure is used to output numbers in a simple, rigid manner.
-A PRINT statement has the form
-
- PRINT (list),
-
-where list is described above. An example of a PRINT statement is
-
- PRINT (A, if N = 0 then S else T).
-
-A PRINT statement always puts out at least one line printer image. A
-line may contain up to 6 numbers, each of which is in scientific
-notation with 10 decimal places. Each number is right-justified in a
-field of 20 columns. (The format is 6E20.10.) The above PRINT statement
-will output two numbers in the first forty spaces, and the rest of the
-line will be blank. A PRINT statement such as
-
- PRINT (for I := 1 step 1 until 10 do A[I])
-
-will output one line of 6 numbers followed by one line of 4 numbers.
-Single spacing between lines is automatic.
-
-The PRINT procedure always outputs on the standard output medium.
-
-
- WRITE
-
-The WRITE procedure is used to output strings. Examples of WRITE
-statements are:
-
- WRITE ('TABLE')
-
- WRITE (if D < 0 then 'TRUE' else 'FALSE') .
-
-Each parameter must be a string expression (see Appendix A for
-definition of string expression). There may be any number of parameters,
-but each string will appear on a separate line. If a string is too long
-to go on one line, it will be continued on the next line. A string
-should not contain another string. Lines are single spaced. Each WRITE
-statement causes at least one line printer image to be put out.
-
-The WRITE procedure always outputs on the standard output medium.
-
-
- PUNCH
-
-The PUNCH procedure is used to output numbers on punched cards in a form
-which can be input by the READ procedure. Each number punched will be
-followed by a comma. Each card punched may contain up to four numbers.
-Each number will be of type real, but since the READ procedure makes any
-necessary type conversions this is unimportant. A PUNCH statement has
-the same form as a PRINT statement. Each PUNCH statement causes at least
-one card image to be put out.
-
-The PUNCH procedure always outputs on the standard punch medium.
-
-
- Formats and the Format Declaration
-
-The two input and output procedures remaining to be described make use
-of formats. The formats are exactly those used in Fortran, and readers
-unfamiliar with Fortran will find it necessary to refer to the Control
-Data Fortran-62 Reference Manual for details on the use of formats.
-
-A format is treated as a string. Formats will be written, for example,
-as follows:
-
- '(6E20.10)'
-
- '(1H0, 9X, 5HTABLE, I3)' .
-
-Note that the parentheses are part of the format, and both parentheses
-and string quotes are required.
-
-As will be indicated below, a format string may appear explicitly in an
-INPUT or OUTPUT statement. If the same format string is used more than
-once, however, it may be convenient to give it a name through a format
-declaration. A format declaration has the form
-
- format Identifier := '(Fortran format)' .
-
-Examples are:
-
- format F := '(6E20.10)'
-
- format G := '(1H0, 9X, 5HTABLE, I3)' .
-
-A format declaration obeys the same rules of syntax and scope as do
-other declarations.
-
-Format identifiers may be used as parameters, and format is a specifier.
-
-
- INPUT
-
-The INPUT procedure is used to input numbers and Hollerith information
-in accordance with Fortran-type formats. An INPUT statement has one of
-the forms
-
- INPUT (M,F,list)
-
- INPUT (M,F)
-
-where:
-
-(1) M is the logical unit designation. M may be any arithmetic
-expression. If it is not integral-valued, the action
-
- M := entier (M + 0.5)
-
-will take place. The standard input unit is 50.
-
-(2) F is a format expression. It may be an actual format string, a
-format identifier, a conditional format expression, or any variable
-which contains the starting address of a format string. Caution. In the
-case of a conditional format expression, format strings and format
-identifiers should not be mixed. For example, (a) and (b) below are
-permitted, but (c) will cause an incorrect program to be compiled:
-
- (a) if B then '(E20.7)' else '(E20.6)'
- (b) if B then F1 else F2
- (c) if B then F1 else '(E20.6)' .
-
-(3) list is as defined previously. Of course, for INPUT all expressions
-must be variables.
-
-The following are examples of an INPUT statement:
-
- INPUT (50, '(4E20.8)', N, for I := 1 step 1 until N do A[I]).
-
- INPUT (if A < B then M else N, F, X, Y, Z) .
-
-Each INPUT statement causes at least one card image to be read.
-
-Note that the INPUT procedure does not make type checks between the data
-and the program variables. A floating point number, for example, is
-stored as such regardless of the type of the variable to which it is
-assigned.
-
-Caution. It is strongly recommended that not both READ and INPUT be used
-in the same program. Each buffers ahead one card image. Furthermore,
-each INPUT statement causes at least one card image to be read while a
-READ statement may not cause a new card image to be read. Mixing the two
-statements will require quite careful use of blank cards in the data to
-allow for the buffering.
-
-
- OUTPUT
-
-The OUTPUT procedure is used to output numbers and Hollerith information
-in accordance with Fortran-type formats. An OUTPUT statement has one of
-the forms
-
- OUTPUT (M,F)
- OUTPUT (M,F,list)
-
-where M, F, and list are as indicated above. The following are examples
-of OUTPUT statements:
-
- OUTPUT (51, '(5HTABLE)')
-
- OUTPUT (51, '(1H0,9X,10E10.2)', for I := 1 step 1 until 100 do A[I]) .
-
-Each OUTPUT statement causes at least one line printer image to be put
-out. The standard output unit is 51, and the standard punch unit is 52.
-
-
- Intermediate Tape Procedures
-
-There are five standard procedures for making use of magnetic tape for
-auxiliary storage:
-
-BINREAD, BINWRITE, ENDFILE, REWIND and BACKUP.
-
-
- BINREAD
-
-A BINREAD statement has the form
-
- BINREAD (M, list)
-
-where M and list are the same as for INPUT. Each BINREAD statement
-causes the designated unit to move forward one logical record, reading
-in binary format into the variables of the list. If fewer variables
-appear in the list than are on the record, only those values are read
-and the tape moves on to the end of the record. If more variables appear
-in the list than are on the record, this is treated as an error and the
-program is terminated.
-
-The following is an example of a BINREAD statement:
-
- BINREAD (6, for I := 1 step 1 until 1000 do A[I]) .
-
-
- BINWRITE
-
-A BINWRITE statement has the form
-
- BINWRITE (M, list)
-
-where M and list are the same as for OUTPUT. Each BINWRITE statement
-causes the values of the list expressions to be written in one logical
-record in binary format on the designated unit.
-
-
- ENDFILE
-
-An ENDFILE statement has the form
-
- ENDFILE (M)
-
-where M is a unit designation as before. The statement causes an
-end-of-file record to be written on the designated unit.
-
-
- REWIND
-
-A REWIND statement has the form
-
- REWIND (M)
-
-where M is a unit designation as before. The statement causes the
-designated unit to be rewound to the load point.
-
-
- BACKUP
-
-A BACKUP statement has the form
-
- BACKUP (M)
-
-where M is a unit designation as before. The statement causes the
-designated unit to be backspaced one logical record of binary
-information or one physical record of BCD information.
-
-
- Tape-Checking Procedures
-
-The checking procedures are: EOF, READERR, and WRITERR. These are
-Boolean procedures.
-
-
- EOF
-
-An EOF call has the form
-
- EOF (M)
-
-where M is a logical unit designation as before. It yields the value
-true if the previous read operation encountered an end-of-file or the
-previous write operation encountered an end-of-tape; otherwise it yields
-the value false.
-
-An example of the use of an EOF call is:
-
- if EOF(6) then goto ALARM .
-
-
- READERR
-
-A READERR call has the form
-
- READERR (M)
-
-where M is a logical unit designation as before. It yields the value
-true if the previous read operation produced a parity error; otherwise
-it yields the value false.
-
-READERR should not be used for testing the operation of a READ
-statement. The READ procedure has its own facilities for checking,
-making multiple attempts in case of errors, and terminating the program
-if necessary.
-
-
- WRITERR
-
-A WRITERR call has the form
-
- WRITERR (M)
-
-where M is a logical unit designation as before. It yields the value
-true if the previous write operation produced a parity error; otherwise
-it yields the value false.
-
-
-
-
- V. The External Declaration
-
-
-An external declaration is required for each nonstandard library
-procedure or procedure compiled separately from the calling program,
-whether in Algol, Fortran or CODAP. Standard Algol procedures are
-described in Section VI. Note that a CODAP subroutine must take account
-of the special structure of the Algol calling sequence as described in
-Appendix C or be treated as a Fortran subprogram. The use of Fortran
-subprograms is described in Appendix G.
-
-The external declaration has one of the following forms:
-
- external I1, ..., In
- real external I1, ..., In
- integer external I1, ..., In
- Boolean external I1, ..., In
-
-where each Ik is an identifier and n is any positive integer. A type
-declarator preceding the declarator external signifies a function
-procedure having that type. Note that no information about parameters
-appears in an external declaration. See Appendix A for syntactical
-definition.
-
-In the ALGO mode, LIB cards must be included in the job deck for
-nonstandard library routines, in addition to the external declarations.
-Details are found in Section VIII.
-
-
-
-
- VI. Standard Procedures
-
-
-Certain procedures are used without being declared. These include the
-standard functions listed in the Algol 60 report and the input-output
-and intermediate tape procedures. The complete list is as follows:
-
- ABS
- SIGN
- SQRT
- SIN
- COS
- ARCTAN
- LN
- EXP
- ENTIER
- EOF
- READERR
- WRITERR
- FORTRANF
- FTNF
- READ
- PAGE
- PRINT
- WRITE
- PUNCH
- INPUT
- OUTPUT
- BINREAD
- BINWRITE
- ENDFILE
- REWIND
- BACKUP
- FORTRAN
- FTN
-
-These procedures are global to the program. They behave as though
-declared in a fictitious block surrounding the entire program.
-
-
-
-
- VII. Error Checking and Diagnostics
-
-
-In a complete compilation the compiler makes two passes on the Algol
-source program. If errors which the compiler cannot correct are detected
-in the first pass, then the second, or translation, pass will not be
-made. The following types of errors are detected:
-
-
- 1. syntactical error
- 2. undeclared identifier
- 3. identifier declared twice in the same block head
- 4. misspelled delimiter (corrected in many cases)
- 5. missing escape symbol (corrected unless both are missing for the
- same delimiter, in which case the delimiter is treated as an
- identifier).
-
-
-The program listing and any diagnostics always appear on the standard
-output medium. In the case of a syntactical error, a message will appear
-in the program listing one or several lines below the error. The
-location of the error in the program will be further pinpointed in the
-line of symbols immediately below the error message. This line will be a
-short portion of the program with the last symbol in the line being the
-one which indicates the error. For example, a declaration might be out
-of place as follows:
-
- .
- .
- .
- x := a + b; 'INTEGER' K;
-
- **** LAST CHARACTER INDICATES SYNTACTICAL ERROR.
-
- x := a + b; INTEGER
- .
- .
- .
-
-In some cases the line below the message may differ slightly from the
-corresponding string of symbols above; for example, an identifier might
-be rendered by Ident. It is possible for a single syntactical error to
-cause more than one diagnostic.
-
-A few syntactical errors are corrected by the compiler, and a message is
-put out to this effect. An example is a semicolon immediately preceding
-else.
-
-According to the comment conventions of Algol, any string of symbols
-following end and not containing end, else or a semicolon is treated as
-comment. As a result, the omission of one of these symbols following end
-does not always cause an error in compilation but will cause a portion
-of the program to be skipped over by the compiler. Thus for example, in
-
- ... x := a + b end for i := 1 step 1 ...
-
-the FOR statement will be skipped at least in part. The compiler will
-put out a caution message in this and some other cases, but it will not
-change the program.
-
-If an identifier is not declared (or possibly declared in the wrong
-place), a message is put out below the program listing together with the
-undeclared identifier.
-
-The compiler does not check the type of identifiers. Therefore, such
-errors as a Boolean variable in an arithmetic expression, or the
-brackets of a subscripted variable replaced by parentheses, are not
-detected, and an incorrect program may be compiled.
-
-
-
-
- VIII. Running Programs
-
-
-The Algol program is punched on cards in the hardware representation
-described in Appendix B. The format is essentially free field: spaces
-have no significance except within escape symbols and string quotes.
-Only the first 72 columns, however, are interpreted by the compiler. The
-remaining columns may be used for identification purposes. Care must be
-taken when a string is continued onto the next card, as the continuation
-will begin in column 1. The program listing will have the same format as
-the cards.
-
-In the following discussion the symbol Ø signifies the letter O where
-necessary for emphasis, and the symbol Δ signifies a 7-9 punch in card
-column 1.
-
-
- ALGOL Control System
-
-The compiler operates under the ALGOL Control System. This system is a
-subordinate control routine of the Master Control System of the CO-OP
-Monitor Programming System. ALGOL is quite similar to the subordinate
-control routine COOP.
-
-ALGOL is called with an MCS (Master Control System) card having ALGOL
-punched beginning in column 2. Other details of this card are available
-in descriptions of the CO-OP Monitor. It should be noted in selecting a
-standard recovery procedure that the concept of COMMON is not used in
-Algol.
-
-Following the MCS card will be a control card giving instructions to the
-control routine ALGOL. It will name one of the following routines: ALGO,
-ALDAP, EXECUTE, BINARY, FORTRAN, REWIND or DEFINE. These will be
-discussed below.
-
-
- EOP Card
-
-The EOP (end-of-program) card has the characters 'EØP' punched in
-columns 10-14.
-
-In the ALGO mode, one EOP card must be used to terminate the program.
-
-In the ALDAP mode, one EOP card must be used to terminate each Algol
-program or Algol procedure being compiled separately.
-
-
- Compile and Execute: ALGO
-
-The ALGO mode of running an Algol program is the simplest and the
-fastest. It will be the more suitable for a large number of programs.
-Unless the programmer has special reasons for using the ALDAP mode, the
-ALGO mode is recommended.
-
-The Algol program must be self-contained except for standard procedures
-and library procedures on the library-systems tape. The job deck must
-have the following cards in the specified order:
-
-
- 1. MCS control card.
-
- The subordinate control routine name must be ALGØL.
- 2. ALGOL control card.
-
- This will appear as
-
- ΔALGØ. or ΔALGØ,t. where t is an integer specifying a time limit
- in minutes for compilation and execution.
-
- (The period is required on every control card.)
- 3. LIB cards.
-
- If necessary. One LIB card is required for each non-standard
- library procedure called in the program, namely those declared
- external. The format of a LIB card is as follows: the
- characters LIB punched in columns 10-12 and the name of a
- library entry point beginning in column 20. There may be no
- more than 20 LIB cards.
- 4. PROGRAM card.
-
- If desired. This may be used to identify the program. Its format
- is described in the next paragraph.
- 5. Algol program deck.
- 6. EOP card.
- 7. Data.
-
- If required.
-
-
- PROGRAM Card
-
-The PROGRAM card is optional. It is useful for identification purposes,
-and in the ALDAP mode it serves to name the program entry point.
-
-The format of the card is free field. The characters PRØGRAM must appear
-followed by the program name, which must be alphanumeric.
-
-
- Compile/Execute: ALDAP
-
-The ALDAP mode is used to compile an Algol program or procedure to a
-relocatable binary or a CODAP format. Execution is optional. For
-compilation only, the program deck may consist of any mixture of Algol
-programs and procedures, any number of which may be in CODAP. If
-execution is desired, part or all of the program deck may have been
-previously compiled, so that the deck may have Algol, CODAP and
-relocatable binary cards.
-
-
- ALDAP Control Statement
-
-The format of the ALDAP statement is:
-
- ΔALDAP,L,B,n.
-
-where
-
-
- L is a program listing key,
-
- B is a punched card output key,
-
- n is a logical unit number.
-
-
-A period may terminate the statement at any point, with remaining fields
-treated as zero.
-
-If the program listing key (L) is a 1, an assembled listing of the CODAP
-object code will be produced on the standard output medium. If the key
-is zero or blank, no such listing will be produced. A listing of the
-Algol program and any diagnostics will always be produced on the
-standard output medium.
-
-If the punched card output key (B) is a 1, a relocatable binary deck
-will be produced on the standard punch medium. If the key is a 2, a
-CODAP symbolic deck will be produced on the standard punch medium. If
-the key is a 3, both a symbolic deck and a relocatable binary deck will
-be produced on the standard punch medium, with the symbolic deck
-appearing first. If the key is zero or blank, no deck will be produced.
-
-The logical unit number (n) specifies the unit which is to be the
-load-and-go tape if it is one of the integers 1-49 or 56. If n is some
-other integer or blank, no load-and-go tape will be written. The
-load-and-go tape is required when execution of the program is to follow.
-
-Examples:
-
-
- (a) ΔALDAP, 1, 1, 56.
-
-
-This statement will cause the Algol/CODAP deck to be compiled, an
-assembled listing to be produced on the standard output medium, a
-relocatable binary deck to be produced on the standard punch medium, and
-a load-and-go tape written on logical unit 56.
-
-
- (b) ΔALDAP, 1.
-
-
-This statement will cause the Algol/CODAP deck to be compiled, and an
-assembled listing to be produced on the standard output medium.
-
-
- Job Deck: ALDAP Compilation/Execution
-
-For compilation only of an Algol/CODAP program deck, the job deck should
-contain the following cards in the specified order:
-
-
- 1. MCS control card.
-
- With ALGØL as the subordinate control routine name.
- 2. ALGOL control card.
-
- With the appropriate ALDAP control statement.
- 3. PROGRAM card.
-
- If desired.
- 4. Program deck.
-
- Any mixture of Algol and CODAP programs and procedures, with all
- their subroutines except the standard procedures and those on
- the library-systems tape. Each Algol program or procedure must
- be terminated by an EOP card.
- 5. FINIS card.
-
- This card contains the characters FINIS punched in columns 10-14.
- It signals the end of all compilations.
-
-
-For compilation and execution of an Algol/CODAP program deck, a
-load-and-go tape must be requested in the ALDAP control statement. If no
-relocatable binary cards follow the last subprogram to be compiled, then
-the program deck must be terminated by an EOP card which is in addition
-to the EOP card or END card (the latter for a CODAP subprogram) which
-terminates the last program or procedure. The FINIS card then follows
-this additional EOP card. An EOP card always causes a TRA card image to
-be written on the load-and-go tape.
-
-The control statements EXECUTE, BINARY, FORTRAN, REWIND and DEFINE may
-be used as described in the “CO-OP Monitor Programmer’s Guide”. BINARY
-is useful for loading a relocatable binary deck onto the load-and-go
-tape prior to compilation of an Algol calling program, where the
-subprogram in relocatable form might have the same name as a library
-routine. If the Algol program preceded the relocatable deck, the library
-routine would be fetched by the loader and an error indication given.
-
-The CO-OP control statements LOAD and EXECUTER are not used by ALGOL.
-
-
- Examples
-
-Each of the following examples describes a job deck which illustrates a
-different way of compiling and executing the same Algol program. The
-program calls a library procedure with entry point named BESSEL, and the
-program contains at least one other procedure. On the MCS card only the
-first field is indicated, as the others may vary from one installation
-to another.
-
-
-
-
- Example 1
-
-
-This job uses the ALGØ mode.
-
- ΔALGØL, ... .
-
- ΔALGØ.
-
- LIB BESSEL
-
- PRØGRAM SAMPLE
-
- Algol Program (with external declaration of BESSEL)
-
- 'EØP'
-
- Data
-
-
-
-
- Example 2
-
-
-This job uses the ALDAP mode, compiling the entire program at once. The
-ALDAP control statement calls for an assembled listing, a binary deck,
-and a load-and-go tape on logical unit 56. The execute card gives a two
-minute time limit on the execution.
-
- ΔALGØL, ... .
-
- ΔALDAP,1,1,56.
-
- PRØGRAM SAMPLE
-
- Algol Program (with external declaration of BESSEL)
-
- 'EØP'
-
- 'EØP'
-
- FINIS
-
- ΔEXECUTE,2.
-
- Data
-
-
-
-
- Example 3
-
-
-This job consists simply of the execution of the relocatable program
-deck obtained in example 2.
-
- ΔALGØL, ... .
-
- ΔEXECUTE,2.
-
- Relocatable Deck
-
- Data
-
-
-
-
- Example 4
-
-
-This example is similar to example 2. Here the main program and one of
-its procedures are to be compiled separately.
-
- ΔALGØL, ... .
-
- ΔALDAP,1,1,56.
-
- PRØGRAM SAMPLE
-
- Algol Program (with external declaration of both BESSEL and the
- procedure being compiled separately)
-
- 'EØP'
-
- Algol Procedure
-
- 'EØP'
-
- 'EØP'
-
- FINIS
-
- ΔEXECUTE,2.
-
- Data
-
-
-
-
- Example 5
-
-
-In this example the procedure which was compiled separately in example 4
-is being compiled by itself, i.e., the calling program is not in the
-deck at all. Of course there is no execution in this case. Note that no
-load-and-go tape is requested and only one EOP card is used. There
-cannot be a PROGRAM card.
-
- ΔALGØL, ... .
-
- ΔALDAP,1,1.
-
- Algol Procedure
-
- 'EØP'
-
- FINIS
-
-
-
-
- Example 6
-
-
-Here the procedure compiled by itself in example 5 appears in the
-program deck in relocatable binary form, while the calling program is in
-the Algol language.
-
- ΔALGØL, ... .
-
- ΔALDAP,1,1,56.
-
- PRØGRAM SAMPLE
-
- Algol Program (with external declaration of both BESSEL and the
- procedure in relocatable form)
-
- 'EØP'
-
- FINIS
-
- ΔEXECUTE,2.
-
- Relocatable Deck
-
- Data
-
-The relocatable deck here must be terminated by two TRA cards. One of
-these is generated by the compiler when it processes the EOP card which
-must terminate the procedure for compilation, as in example 5. The
-second TRA card can be obtained by using a second EOP card, as in
-example 2. Alternatively, the second TRA card can be added to the
-relocatable deck before execution. Note that this second TRA card must
-not be used when the relocatable deck is loaded by a BINARY control
-statement. This is illustrated in the next example.
-
-
-
-
- Example 7
-
-
-In this case the previously compiled procedure has the same name as a
-routine on the library-systems tape.
-
- ΔALGØL, ... .
-
- ΔBINARY,56.
-
- Relocatable Deck (terminated by one TRA card)
-
- ΔALDAP,1,1,56.
-
- PRØGRAM SAMPLE
-
- Algol Program (with external declaration of both BESSEL and the
- procedure in relocatable form)
-
- 'EØP'
-
- 'EØP'
-
- FINIS
-
- ΔEXECUTE, 2.
-
- Data
-
-The logical unit number on the BINARY control statement must agree with
-that which specifies the load-and-go tape in the ALDAP control
-statement.
-
-
-
-
- APPENDIX A
- Adjuncts to Algol 60
-
-
- List Entities
-
-The delimiter list is a declarator and a specifier.
-
- <list identifier> ::= <identifier>
-
- <loop expression> ::= <for clause> <arithmetic expression>
- | <for clause> <loop expression>
- | <for clause> (<list>)
-
- <list element> ::= <arithmetic expression>
- | <loop expression>
- | <list identifier>
-
- <list> ::= <list element>
- | <list>, <list element>
-
- <list declaration> ::= list <list identifier> := <list>
-
-
- Format Entities
-
-The delimiter format is a declarator and a specifier.
-
- <format identifier> ::= <identifier>
-
- <simple format expression> ::='(<Fortran format>[2])'
- | <format identifier>
-
- <format expression> ::= <simple format expression>
- | <if clause> <simple format expression>
- else <format expression>
-
- <format declaration> ::= format <format identifier> := <format
- expression>
-
-
- String Expression
-
- <string expression> ::= <string>
- | <if clause> <string>
- else <string expression>
-
-
- External Declaration
-
-The delimiter external is a declarator.
-
- <external identifier> ::= <identifier>
-
- <external list> ::= <external identifier>
- | <external identifier>, <external list>
-
- <external declaration> ::= external <external list>
- | <type> external <external list>
-
-
-
-
- APPENDIX B
- Hardware Representation
-
-
-One keypunch character is reserved as an “escape symbol”, which we shall
-here suppose is the apostrophe. This symbol is used to delineate word
-delimiters and truth values, which are written in boldface type in Algol
-reference language and publication language and indicated by underlining
-in this manual. The hardware representation of a word delimiter such as
-begin is therefore 'BEGIN'. No distinction is made between upper and
-lower case letters in the hardware language.
-
-The transliteration rules for the non-word delimiters are comprised in
-the following table. This assumes a 48 character hardware set and is
-consistent with the usage in the ALCOR group. For some basic symbols
-alternatives are tolerated, as indicated.
-
- Reference Hardware Tolerated Hardware
- < 'LS' 'LESS'
- ≤ 'LQ' 'LSEQ', 'NOTGREATER', 'NOT
- GREATER'
- = 'EQ' 'EQUAL'
- ≥ 'GQ' 'GREQ', 'NOTLESS', 'NOT LESS'
- > 'GR' 'GREATER'
- ≠ 'NQ' 'NTEQ', 'NOTEQUAL', 'NOT
- EQUAL'
- ¬ 'NOT'
- ∧ 'AND'
- ∨ 'OR'
- ⊃ 'IMP' 'IMPLIES', 'IMPL'
- ≡ 'EQV' 'EQUIV'
- ₁₀ ' 'E','T'
- × *
- ↑ ** 'POWER'
- ÷ // 'DIV'
- : ..
- ; $ .,
- := = .=, ..=
- [ (/
- ] /)
- ‘ " '('
- ’ " ')'
-
-In the case of the string quotes, the tolerated symbols are required for
-the inner strings of a nest of strings.
-
-Actually, the compiler can tolerate many other spellings of word
-delimiters because of its facility for correcting misspellings.
-
-The delimiter go to is accepted with or without the space between the
-two words, but it is treated as a single delimiter: 'GOTO' or 'GO TO'.
-
-The compiler can also accept a 64 character hardware representation: the
-full set available on the line printer. In preparing programs,
-overpunching is used on the 48 character keypunch in this case. The
-table below indicates the keypunching rules in use at Oak Ridge National
-Laboratory.
-
- Reference Hardware
- < 1-8 punch
- ≤ 1-5 punch
- ≥ 1-9 punch
- > 2-7 punch
- ≠ 2-6 punch
- ∧ 3-7 punch
- ∨ 2-4 punch
- ₁₀ 1-6 punch
- ↑ 2-5 punch
- ÷ 3-5 punch
- : 2-8 punch
- ; 2-9 punch
- [ 3-6 punch
- ] 3-4 punch
-
-The other basic symbols are either in the 48 character set or are
-replaced by word delimiters as above. The symbol := is treated as two
-symbols in the 64 character set, and = is punched as such.
-
-
-
-
- APPENDIX C
- Structure of Procedure Calling Sequence
-
-
-The following information is necessary for the user writing a non-Algol
-procedure to be called from an Algol program. The calling sequence
-differs from that found in many other languages.
-
-The first word of the non-Algol procedure must have a simple jump
-instruction in its upper half, and the exit line is provided by a jump
-to this first word. The entry automatically causes the proper return
-address to be placed in the address portion of the first half-word.
-
-Upon entry to the procedure, index register six contains an address
-which is used to reference each parameter. To establish linkage with the
-first parameter, the instruction
-
- LDA 6 0
-
-is performed. This brings into the accumulator a word of one of the
-following types:
-
- 1. SLJ 0 ENA V
- 2. SLJ 0 RTJ L
-
-In case (1), V is the address of the parameter. In case (2), L is the
-starting address of a piece of coding for computing the address of the
-parameter and leaving it in the accumulator (if the parameter is an
-expression, the address in the accumulator will be that of a temporary
-containing its value). Case (1) always holds if the parameter is a
-simple variable, string, array identifier, switch identifier, or
-procedure identifier. In case (2) the same temporary will be used for
-all the expressions.
-
-Both cases can be provided for by setting aside two locations for each
-parameter in the procedure body and placing the instruction
-
- SLJ *-1
-
-in the upper half of each second location. Then after
-
- LDA 6 0
-
-mentioned above,
-
- STA RES1,
-
-where RES1 is the first reserved location for the first parameter, makes
-the two locations into a closed subroutine. After this, the instruction
-
- RTJ RES1
-
-causes the address of the first parameter to be placed in the
-accumulator anytime it is performed. This accommodates expressions
-called by name.
-
-In general, the K^th parameter is referenced as above, but beginning
-with
-
- LDA 6 (K - 1).
-
-This description does not apply to the standard procedures, each of
-which has its own special calling sequence.
-
-
-
-
- APPENDIX D
- Internal Representation of Strings
-
-
-The address representing a string is that of the first word of string
-characters. Each left string quote is represented internally by the word
-
- 00 ... 03454 ,
-
-and each right string quote by
-
- 00 ... 05474 .
-
-The characters of the string which are not string quotes are packed in
-BCD eight characters per word. These words are in the natural order, the
-first immediately following the left string quote and the last
-immediately followed by the right string quote. If the last word before
-a right quote is not full, the rest of that word is filled out with
-zeros (not BCD blanks).
-
-
-
-
- APPENDIX E
- Program Efficiency
-
-
-The following information may be of interest to programmers desiring an
-efficient program:
-
- 1. The FOR statement is defined with more generality than is useful in
- most programs. In particular, the arithmetic expressions in the FOR
- clause are allowed to change in value during execution of the FOR
- statement. The compiler does not attempt to determine which FOR
- statements make use of this flexibility and treats all of them in the
- most general way. Therefore, in a statement such as
-
- for I := 1 step M + N until abs(A - B) do ... ,
-
- the expression M + N is evaluated twice for each iteration, and the
- expression abs(A - B) is evaluated once for each iteration. If M, N, A
- , and B do not change in the loop, this is unnecessary. Such
- inefficiency can be avoided by programming in a slightly different
- way. The above example can be written as follows:
-
- T1 := M + N; T2 := abs(A - B) ;
- for I := 1 step T1 until T2 do ... .
-
- 2. The concept of call by value is a device applied to procedures to
- eliminate unneeded flexibility in procedure calls. If a parameter
- having a value is referenced more than once in the procedure body and
- the flexibility of call by name is not needed, then the program is
- more efficient if the parameter is included in the value part of the
- procedure heading. If such a parameter is referenced only once, it is
- more efficient if it is not included in the value part.
-
- 3. Array identifiers which are parameters should be specified.
-
-
-
-
- APPENDIX F
- Controversial Features of Algol 60
-
-
-A few features of the language have been subject to more than one
-interpretation. Fortunately, the vast majority of programs will not
-involve these ambiguities, but for the few that do it will be necessary
-to know what decisions the compiler makes. This appendix indicates these
-decisions for the more controversial areas.
-
- 1. Side effects in function designators. The evaluation of primaries
- in expressions is not strictly left to right allowing for precedence
- rules. In particular, the value of a variable in an expression is
- never stored in a temporary simply to preserve its value from change
- by the evaluation of a function designator in the expression.
- Otherwise, the evaluation does proceed from left to right and
- according to precedence rules, including the referencing of formal
- parameters and the calculation of the address of subscripted
- variables. All function designators are evaluated in Boolean
- expressions.
-
- 2. Own variables and arrays in procedures. The own quantities local to
- the body of a procedure which is called from more than one point in a
- program record the history of the procedure as opposed to a history of
- each point of reference. In other words, only one copy of the own
- quantities is preserved.
-
-
-
-
- APPENDIX G
- Fortran Subprograms in an Algol Program
-
-
-The standard procedures FORTRAN, FORTRANF, FTN, and FTNF are used to
-call compiled Fortran subroutines and functions from within an Algol
-program. Each procedure has one parameter which is a call of the desired
-Fortran subprogram. The Fortran subprogram must be declared external as
-described in Section V.
-
-The use of these procedures simply causes a Fortran calling sequence to
-be generated by the compiler. Of course the subprogram could be written
-in CODAP as well as Fortran, provided it is designed to link through a
-Fortran-type calling sequence.
-
-The procedures are used as follows:
-
-
- FORTRAN—generates a Fortran 62 calling sequence for a subroutine
- FORTRANF—generates a Fortran 62 calling sequence for a function
- FTN—generates a Fortran 63 calling sequence for a subroutine
- FTNF—generates a Fortran 63 calling sequence for a function
-
-
-Each of these procedures is standard, i.e., available without
-declaration. FORTRANF and FTNF are used in expressions.
-
-Examples:
-
- x := FTNF (ALPHA(T,A[0,0]))
-
- FORTRAN (SUB(I + J)) .
-
-The following restrictions must be observed: labels, procedures with no
-parameters, standard procedure names, and array names cannot be used as
-arguments of a call of a Fortran subprogram. However, in the case of an
-array, the subscripted variable which is the first element of the array
-will satisfy a Fortran subroutine which has an array name as a formal
-parameter. The name of the Fortran subprogram cannot be a formal
-parameter. Literals must be enclosed in string quotes.
-
-
-
-
- Footnotes
-
-
-[1]See Appendix A for syntactical definition.
-
-[2]For definition of Fortran format, see Control Data Fortran-62
- Reference Manual.
-
-
- Acknowledgment
-
-The author was greatly assisted in the preparation of this document by
-several persons who have contributed labors or advice to the
-construction of the compiler. These include N. B. Alexander and A. A.
-Grau, also K. A. Wolf of Control Data Corporation, and especially R. G.
-Stueland of Control Data Corporation.
-
- ORNL-3460
- UC-32—Mathematics and Computers
- TID-4500 (23rd ed.)
-
-
-
-
- INTERNAL DISTRIBUTION
-
-
- 1. Biology Library
- 2-4. Central Research Library
- 5. Reactor Division Library
- 6-7. ORNL--Y-12 Technical Library Document Reference Section
- 8-27. Laboratory Records Department
- 28. Laboratory Records, ORNL R.C.
- 29. R. K. Adams
- 30. Nancy Alexander
- 31. E. D. Arnold
- 32. Don Arnurius
- 33. George J. Atta
- 34. Susie E. Atta
- 35. S. J. Ball
- 36. J. E. Bigelow
- 37. R. E. Biggers
- 38. Craig Brandon
- 39. J. C. Bresee
- 40-41. L. L. Bumgarner
- 42. W. R. Burrus
- 43. H. P. Carter
- 44. D. K. Cavin
- 45. Arline Culkowski
- 46. W. Davis, Jr.
- 47. H. J. de Bruin
- 48. P. B. DeNee
- 49. A. C. Downing
- 50. L. C. Emerson
- 51. Margaret Emmett
- 52. R. L. Ferguson
- 53. B. R. Fish
- 54. P. A. Haas
- 55. M. Feliciano
- 56. Barbara Ann Flores
- 57. T. B. Fowler
- 58. R. E. Funderlic (K-25)
- 59. D. A. Gardiner
- 60. C. D. Griffies
- 61. D. A. Griffin
- 62. D. G. Gosslee
- 63. M. T. Harkrider
- 64. M. C. Hill
- 65. A. S. Householder
- 66. W. H. Jordan
- 67. H. W. Joy
- 68. F. B. K. Kam
- 69. George Kidd
- 70. L. J. King
- 71. Ann Klein
- 72. K. A. Kraus
- 73. C. E. Larson
- 74. M. E. LaVerne
- 75. Elmon Leach
- 76. R. P. Leinius
- 77-78. M. P. Lietzke
- 79. Erlie McDaniel
- 80. C. D. Martin
- 81. K. O. Martin
- 82. Betty F. Maskewitz
- 83. R. P. Milford
- 84. F. L. Miller, Jr.
- 85. R. V. Miskell
- 86. S. E. Moore
- 87. J. F. Murdock
- 88. C. W. Nestor, Jr.
- 89. V. K. Pare
- 90. Carl E. Parker
- 91. S. K. Penny
- 92. A. M. Perry
- 93. D. C. Ramsey
- 94. M. T. Robinson
- 95. R. M. Rush
- 96. Y. Shima
- 97. J. E. Simpkins
- 98. M. J. Skinner
- 99. C. D. Scott
- 100. C. D. Susano
- 101. J. A. Swartout
- 102. M. E. Tsagaris
- 103. D. K. Trubey
- 104. J. S. Watson
- 105. A. M. Weinberg
- 106. M. E. Whatley
- 107. C. S. Williams
- 108. H. A. Wright
- 109. Y-12 Central Files
- 110. J. H. Zeigler (K-25)
- 111. H. Zeldes
-
-
-
-
- EXTERNAL DISTRIBUTION
-
-
- 112. T. H. Elrod, Control Data Corporation, Computer Division, 3330
- Hillview Avenue, Palo Alto, California
- 113. A. A. Grau, Department of Mathematics, Northwestern University,
- Evanston, Illinois
- 114. R. G. Stueland, Control Data Corporation, Computer Division, 3330
- Hillview Avenue, Palo Alto, California
- 115. K. A. Wolf, Control Data Corporation, Programing Systems, 501
- Park Avenue, Minneapolis 15, Minnesota
- 116. R. A. Zemlin, Control Data Corporation, Computer Division, 3330
- Hillview Avenue, Palo Alto, California
- 117. Research and Development Division, AEC, ORO
- 118-728. Given distribution as shown in TID-4500 (23rd ed.) under
- Mathematics and Computers category (75 copies--OTS)
-
-
-
-
- Transcriber’s Notes
-
-
- In the HTML version, represented code in a monospaced font, with
- keywords in boldface as in the Revised Report.
- Corrected a few palpable typos.
- Created an original cover image, using elements from the printed book,
- for free and unrestricted use with this eBook.
-
-
-
-
-
-
-
-End of the Project Gutenberg EBook of The Oak Ridge ALGOL Compiler for the
-Control Data Corporation 1604, by L. L. Bumgarner
-
-*** END OF THIS PROJECT GUTENBERG EBOOK THE OAK RIDGE ALGOL COMPILER ***
-
-***** This file should be named 50468-0.txt or 50468-0.zip *****
-This and all associated files of various formats will be found in:
- http://www.gutenberg.org/5/0/4/6/50468/
-
-Produced by David Starner, Stephen Hutcheson, and the
-Online Distributed Proofreading Team at http://www.pgdp.net
-(This book was produced from images made available by the
-HathiTrust Digital Library.)
-
-Updated editions will replace the previous one--the old editions will
-be renamed.
-
-Creating the works from print editions not protected by U.S. copyright
-law means that no one owns a United States copyright in these works,
-so the Foundation (and you!) can copy and distribute it in the United
-States without permission and without paying copyright
-royalties. Special rules, set forth in the General Terms of Use part
-of this license, apply to copying and distributing Project
-Gutenberg-tm electronic works to protect the PROJECT GUTENBERG-tm
-concept and trademark. Project Gutenberg is a registered trademark,
-and may not be used if you charge for the eBooks, unless you receive
-specific permission. If you do not charge anything for copies of this
-eBook, complying with the rules is very easy. You may use this eBook
-for nearly any purpose such as creation of derivative works, reports,
-performances and research. They may be modified and printed and given
-away--you may do practically ANYTHING in the United States with eBooks
-not protected by U.S. copyright law. Redistribution is subject to the
-trademark license, especially commercial redistribution.
-
-START: FULL LICENSE
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full
-Project Gutenberg-tm License available with this file or online at
-www.gutenberg.org/license.
-
-Section 1. General Terms of Use and Redistributing Project
-Gutenberg-tm electronic works
-
-1.A. By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement. If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or
-destroy all copies of Project Gutenberg-tm electronic works in your
-possession. If you paid a fee for obtaining a copy of or access to a
-Project Gutenberg-tm electronic work and you do not agree to be bound
-by the terms of this agreement, you may obtain a refund from the
-person or entity to whom you paid the fee as set forth in paragraph
-1.E.8.
-
-1.B. "Project Gutenberg" is a registered trademark. It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement. There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement. See
-paragraph 1.C below. There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this
-agreement and help preserve free future access to Project Gutenberg-tm
-electronic works. See paragraph 1.E below.
-
-1.C. The Project Gutenberg Literary Archive Foundation ("the
-Foundation" or PGLAF), owns a compilation copyright in the collection
-of Project Gutenberg-tm electronic works. Nearly all the individual
-works in the collection are in the public domain in the United
-States. If an individual work is unprotected by copyright law in the
-United States and you are located in the United States, we do not
-claim a right to prevent you from copying, distributing, performing,
-displaying or creating derivative works based on the work as long as
-all references to Project Gutenberg are removed. Of course, we hope
-that you will support the Project Gutenberg-tm mission of promoting
-free access to electronic works by freely sharing Project Gutenberg-tm
-works in compliance with the terms of this agreement for keeping the
-Project Gutenberg-tm name associated with the work. You can easily
-comply with the terms of this agreement by keeping this work in the
-same format with its attached full Project Gutenberg-tm License when
-you share it without charge with others.
-
-1.D. The copyright laws of the place where you are located also govern
-what you can do with this work. Copyright laws in most countries are
-in a constant state of change. If you are outside the United States,
-check the laws of your country in addition to the terms of this
-agreement before downloading, copying, displaying, performing,
-distributing or creating derivative works based on this work or any
-other Project Gutenberg-tm work. The Foundation makes no
-representations concerning the copyright status of any work in any
-country outside the United States.
-
-1.E. Unless you have removed all references to Project Gutenberg:
-
-1.E.1. The following sentence, with active links to, or other
-immediate access to, the full Project Gutenberg-tm License must appear
-prominently whenever any copy of a Project Gutenberg-tm work (any work
-on which the phrase "Project Gutenberg" appears, or with which the
-phrase "Project Gutenberg" is associated) is accessed, displayed,
-performed, viewed, copied or distributed:
-
- This eBook is for the use of anyone anywhere in the United States and
- most other parts of the world at no cost and with almost no
- restrictions whatsoever. You may copy it, give it away or re-use it
- under the terms of the Project Gutenberg License included with this
- eBook or online at www.gutenberg.org. If you are not located in the
- United States, you'll have to check the laws of the country where you
- are located before using this ebook.
-
-1.E.2. If an individual Project Gutenberg-tm electronic work is
-derived from texts not protected by U.S. copyright law (does not
-contain a notice indicating that it is posted with permission of the
-copyright holder), the work can be copied and distributed to anyone in
-the United States without paying any fees or charges. If you are
-redistributing or providing access to a work with the phrase "Project
-Gutenberg" associated with or appearing on the work, you must comply
-either with the requirements of paragraphs 1.E.1 through 1.E.7 or
-obtain permission for the use of the work and the Project Gutenberg-tm
-trademark as set forth in paragraphs 1.E.8 or 1.E.9.
-
-1.E.3. If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any
-additional terms imposed by the copyright holder. Additional terms
-will be linked to the Project Gutenberg-tm License for all works
-posted with the permission of the copyright holder found at the
-beginning of this work.
-
-1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5. Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6. You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including
-any word processing or hypertext form. However, if you provide access
-to or distribute copies of a Project Gutenberg-tm work in a format
-other than "Plain Vanilla ASCII" or other format used in the official
-version posted on the official Project Gutenberg-tm web site
-(www.gutenberg.org), you must, at no additional cost, fee or expense
-to the user, provide a copy, a means of exporting a copy, or a means
-of obtaining a copy upon request, of the work in its original "Plain
-Vanilla ASCII" or other form. Any alternate format must include the
-full Project Gutenberg-tm License as specified in paragraph 1.E.1.
-
-1.E.7. Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8. You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works
-provided that
-
-* You pay a royalty fee of 20% of the gross profits you derive from
- the use of Project Gutenberg-tm works calculated using the method
- you already use to calculate your applicable taxes. The fee is owed
- to the owner of the Project Gutenberg-tm trademark, but he has
- agreed to donate royalties under this paragraph to the Project
- Gutenberg Literary Archive Foundation. Royalty payments must be paid
- within 60 days following each date on which you prepare (or are
- legally required to prepare) your periodic tax returns. Royalty
- payments should be clearly marked as such and sent to the Project
- Gutenberg Literary Archive Foundation at the address specified in
- Section 4, "Information about donations to the Project Gutenberg
- Literary Archive Foundation."
-
-* You provide a full refund of any money paid by a user who notifies
- you in writing (or by e-mail) within 30 days of receipt that s/he
- does not agree to the terms of the full Project Gutenberg-tm
- License. You must require such a user to return or destroy all
- copies of the works possessed in a physical medium and discontinue
- all use of and all access to other copies of Project Gutenberg-tm
- works.
-
-* You provide, in accordance with paragraph 1.F.3, a full refund of
- any money paid for a work or a replacement copy, if a defect in the
- electronic work is discovered and reported to you within 90 days of
- receipt of the work.
-
-* You comply with all other terms of this agreement for free
- distribution of Project Gutenberg-tm works.
-
-1.E.9. If you wish to charge a fee or distribute a Project
-Gutenberg-tm electronic work or group of works on different terms than
-are set forth in this agreement, you must obtain permission in writing
-from both the Project Gutenberg Literary Archive Foundation and The
-Project Gutenberg Trademark LLC, the owner of the Project Gutenberg-tm
-trademark. Contact the Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1. Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-works not protected by U.S. copyright law in creating the Project
-Gutenberg-tm collection. Despite these efforts, Project Gutenberg-tm
-electronic works, and the medium on which they may be stored, may
-contain "Defects," such as, but not limited to, incomplete, inaccurate
-or corrupt data, transcription errors, a copyright or other
-intellectual property infringement, a defective or damaged disk or
-other medium, a computer virus, or computer codes that damage or
-cannot be read by your equipment.
-
-1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH 1.F.3. YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from. If you
-received the work on a physical medium, you must return the medium
-with your written explanation. The person or entity that provided you
-with the defective work may elect to provide a replacement copy in
-lieu of a refund. If you received the work electronically, the person
-or entity providing it to you may choose to give you a second
-opportunity to receive the work electronically in lieu of a refund. If
-the second copy is also defective, you may demand a refund in writing
-without further opportunities to fix the problem.
-
-1.F.4. Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS', WITH NO
-OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
-LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5. Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of
-damages. If any disclaimer or limitation set forth in this agreement
-violates the law of the state applicable to this agreement, the
-agreement shall be interpreted to make the maximum disclaimer or
-limitation permitted by the applicable state law. The invalidity or
-unenforceability of any provision of this agreement shall not void the
-remaining provisions.
-
-1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in
-accordance with this agreement, and any volunteers associated with the
-production, promotion and distribution of Project Gutenberg-tm
-electronic works, harmless from all liability, costs and expenses,
-including legal fees, that arise directly or indirectly from any of
-the following which you do or cause to occur: (a) distribution of this
-or any Project Gutenberg-tm work, (b) alteration, modification, or
-additions or deletions to any Project Gutenberg-tm work, and (c) any
-Defect you cause.
-
-Section 2. Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of
-computers including obsolete, old, middle-aged and new computers. It
-exists because of the efforts of hundreds of volunteers and donations
-from people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need are critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come. In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future
-generations. To learn more about the Project Gutenberg Literary
-Archive Foundation and how your efforts and donations can help, see
-Sections 3 and 4 and the Foundation information page at
-www.gutenberg.org
-
-
-
-Section 3. Information about the Project Gutenberg Literary Archive Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service. The Foundation's EIN or federal tax identification
-number is 64-6221541. Contributions to the Project Gutenberg Literary
-Archive Foundation are tax deductible to the full extent permitted by
-U.S. federal laws and your state's laws.
-
-The Foundation's principal office is in Fairbanks, Alaska, with the
-mailing address: PO Box 750175, Fairbanks, AK 99775, but its
-volunteers and employees are scattered throughout numerous
-locations. Its business office is located at 809 North 1500 West, Salt
-Lake City, UT 84116, (801) 596-1887. Email contact links and up to
-date contact information can be found at the Foundation's web site and
-official page at www.gutenberg.org/contact
-
-For additional contact information:
-
- Dr. Gregory B. Newby
- Chief Executive and Director
- gbnewby@pglaf.org
-
-Section 4. Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment. Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States. Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements. We do not solicit donations in locations
-where we have not received written confirmation of compliance. To SEND
-DONATIONS or determine the status of compliance for any particular
-state visit www.gutenberg.org/donate
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States. U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses. Donations are accepted in a number of other
-ways including checks, online payments and credit card donations. To
-donate, please visit: www.gutenberg.org/donate
-
-Section 5. General Information About Project Gutenberg-tm electronic works.
-
-Professor Michael S. Hart was the originator of the Project
-Gutenberg-tm concept of a library of electronic works that could be
-freely shared with anyone. For forty years, he produced and
-distributed Project Gutenberg-tm eBooks with only a loose network of
-volunteer support.
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as not protected by copyright in
-the U.S. unless a copyright notice is included. Thus, we do not
-necessarily keep eBooks in compliance with any particular paper
-edition.
-
-Most people start at our Web site which has the main PG search
-facility: www.gutenberg.org
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
-