AN ABSTRACT OF THE THESIS OF

EDWARD BURLINGAME HILL for the MASTER OF SCIENCE (Name) (Degree) in MATHEMATICS presented on October 16, 1968 (Major) (Date)

Title: A TO ALGOL TRANSLATOR Abstract approved: Harry E. Goheen

FORTRAN is readily feasible to translation into ALGOL since they share many common features. Most of the features that are unique to FORTRAN can be translated by restricting them some- what. The translator will handle explicit declarations of each item in a block, compensate for the differences in various operators, compensate for the different storage techniques and provide a simple input /output scheme. Running test cases through the FORTRAN programs and through the translated ALGOL programs indicated that the ALGOL programs take longer to execute than their FORTRAN counterparts. A FORTRAN to ALGOL Translator

by

Edward Burlingame Hill

A THESIS

submitted to

Oregon State University

in partial fulfillment of the requirements for the degree of

Master of Science

June 1969 APPROVED:

Professor of Ma matics /(J in charge of major

Acting Chairman of the Department of thematics

Dean of raduate School

Date thesis is presented October 16, 1968

Typed by Gwendolyn Hansen for Edward Burlingame Hill ACKNOWLEDGEMENTS

I would like to thank Professor H. E. Goheen for first pro- posing this translator and for his help and encouragement in the development of this thesis. I would also like to thank Professors

D. D. Aufenkamp, F. H. Young and the Oregon Research Council for providing the grant which enabled me to write the translator. The 0S3 systems group deserves special thanks for the advice and help they have given me when I was programming the translator. I would also like to thank Peter and Karen Becker for proofreading the thesis. Finally, I would like to thank my parents for helping make it possible for me to take the time to finish this project. TABLE OF CONTENTS

Pag e

INTRODUCTION 1

ELEMENTS OF FORTRAN AND ALGOL LANGUAGES 5

Constants and Variables 6 Declarative Statements 9 Replacement and Manipulative Expressions 20 Control Statements 22 Function and Subroutine Subprograms 25 Subprograms 30 Input /Output 31

DESCRIPTION OF SUPPORT MODULES 35

ROLLS AND TABLES 46

PSEUDO- FORTRAN 50

EPILOGUE 53

BIBLIOGRAPHY 56

APPENDICES 57

Appendix 1. Test Cases 57 Appendix 2. Users Guide 78 Appendix 3, Flowcharts 87 Appendix 4. Program Listing 184 A FORTRAN TO ALGOL TRANSLATOR

INTRODUCTION

A translator is defined as a "routine for changing information from one representation or language into another." This translator accepts a source program written in FORTRAN for the Control Data

Corporation's 3300 computer and translates the source program into an ALGOL source program for the same machine. This machine was chosen since Oregon State University owns the necessary .

The translator will enable an applications to utilize programs and subroutines written in FORTRAN directly in his ALGOL programs without having to concern himself with their incompatibility. The translator handles the different methods in handling fixed -mode arithmetic, differences in real to integer conversion, differences in the method by which FORTRAN and ALGOL organize their data, and the necessity of explicitly declaring all the attributes of every variable at the head of each subprogram.

A pseudo- FORTRAN language has been developed. Pseudo -

FORTRAN relaxes many of the restrictions in FORTRAN and includes several features not found in FORTRAN.

Of course, the translator removes the necessity of copying one's FORTRAN program into ALGOL for publication in those journals that use ALGOL as their publication language. 2

The program is written in COMPASS and is designed to be run on a Control Data Corporation 3300 computer. The required input/ output devices are a card reader and punch, a line printer and two disk files.

The input to the program consists of a FORTRAN source deck subject to various restrictions. The source deck should start with a program card and end with a finis card. The output consists of listings of the FORTRAN source program and the ALGOL source program on the line printer, and, if desired, a listing of the ALGOL source program on some other output device. Any errors that the translator locates will be found in the FORTRAN listing.

Before going into a brief description of how the translator works a few terms need to be defined. A roll is an array of informa- tion whose storage requirements vary, while a table is an array of information whose storage requirements are fixed. For example, a list of all the variables used in a program together with their attributes would be a roll, while a list of the FORTRAN reserved words would be a table.

A push down list is a roll that is constructed and maintained so that the first item to be removed is the most recently stored item in the list. Such a list is used in analyzing arithmetic expressions.

Push down lists are also called stacks.

A symbol is the representation of something else by reason of 3 relationship, association, or convention. It could also be any element of the FORTRAN or ALGOL language. A character is a member of a set of elementary symbols. A character set usually contains the alphabet, the digits zero through nine, punctuation marks and any other symbols acceptable to a computer for reading, writing or storing. An attribute is any property associated with a symbol.

A role indicator is a code assigned to a symbol to indicate some attribute of that symbol. An example would be the code 9 assigned to the variable I indicating that it is an integer subroutine parameter.

Kind and type both refer to the attributes associated with a variable. Kind refers to whether a variable is simple or subscripted, while type refers to whether a variable is real, integer, character, or logical (boolean). A properly defined variable must have both a kind and a type attribute.

The translator handles the FORTRAN program and subprograms as independent blocks surrounded by a single global block consisting of a BEGIN and an END statement. The subprograms are handled by procedures.

The translator is divided into two passes called PASS 1 and

PASS 2. PASS 1 prepares the FORTRAN program for PASS 2 by

a. deleting comments and format statements,

b. handling multiple returns by unconditional jumps to the

end of the subprogram, 4

. rearranging the order of the FORTRAN program so the subroutines preceed the main program,

d. rearranging the order of the declarative statements so the data statement becomes the last declarative statement,

e. handling the stop statement by means of an unconditional

jump to the end of the FORTRAN program,

f. preparing a roll containing the names of all the subprograms

and the number of common elements in each subprogram.

PASS 2 does the actual translation on a statement by statement basis and prints the ALGOL source deck.

In general, PASS 2 reads a FORTRAN statement from logical unit 55, determines what type of statement it is and branches to the proper routine to process it. If the statement is declarative,the information is stored in various rolls. If it is not, the information is translated into an internal code and is stored on the program roll.

When the end of a program or subprogram is indicated,the translator prints the attributes stored in the various tables and prints the inter- nal codes on the program roll as the appropriate ALGOL . The finis card serves as a signal to end the ALGOL program. Upon encountering this card, the translator closes the first block and prints out the end of program card. 5

ELEMENTS OF FORTRAN AND ALGOL LANGUAGES

This chapter consists of a description of how the translator handles the various FORTRAN expressions. It also indicates

where the various restrictions originate and why they were imposed.

FORTRAN statements are divided into four classes. They are

declarative, replacement, control, and input /output statements. Declarative statements assign attributes to variables, enter data,

reserve storage, and overlay the various segments of the program. The translator supports the first feature without restriction, sup- ports the second and third features with restrictions and does not support the fourth feature.

The second class of FORTRAN statements is the class of replacement statements. These statements incorporate expressions for manipulating the variables. Most manipulative statements are

supported, some directly and some with the aid of a library of ALGOL subroutines. Those that are not supported will be flagged

by an error message. The third class is control statements. These alter the

sequence of program execution conditionally or unconditionally. All

control statements are fully supported by the translator.

The fourth class is input /output statements. These statements

provide for the transfer of data from one part of memory to another 6 or from the computer to an external device and vice versa. A simple input /output scheme using the procedures Inreal and Outreal has been adopted for this translator.

A comment card is a card which is to be ignored by the . For the FORTRAN system is is denoted by a "c" in column one. The comment card allows the programmer to describe what steps the program is taking. These cards are printed in the source listing and are ignored by the compiler. Rather than store comment cards for later insertion into the ALGOL source program the trans- lator simply deletes them from the source deck, in all cases except the case of type logical cards. These cards are treated in FORTRAN as comment cards so that the FORTRAN program can be compiled with these cards in the deck without causing the FORTRAN compiler to produce a diagnostic. For the translator they are not comment cards.

Constants and Variables

FORTRAN accepts four types of constants; real, integer, octal and character. Since ALGOL accepts only real, integer and boolean constants, the translator will process only real and integer constants.

An octal or a character constant produces the error message, Illegal constant, and the statement in which the erroneous constant occurred is deleted. 7

The translator, after packing the constant and determining its length, puts it into either the long constant roll or the short constant roll depending on whether the constant contains more than eight characters or not. The address of the first word of the entry in the constant roll is placed on the proper rolls.

Labels are also placed on the short constant roll. When a label is encountered, it is packed, and an F is inserted in front of the num- ber. This is done because the system ALGOL compiler will not accept a label whose first character is numeric.

The FORTRAN compiler recognizes five types of variables.

They are real, integer, logical (boolean), character, and type other.

The compiler recognizes real and integer variables implicitly; logical variables contextually and the remainder have to be declared explicitly. ALGOL recognizes only real, integer and logical variables explicitly so the translator will accept only the first three types. The error message, Illegal variable, is issued, and the offending statement is deleted.

Since it is impossible for the translator to tell in a FORTRAN statement if a variable is being used as a logical variable or not, logical variables must be declared in a type logical statement syntactically similar to a type real or type integer statement. A logical variable must not change type throughout the ALGOL program.

The ALGOL compiler assigns two words of storage to each real, 8 integer and boolean simple variable while the FORTRAN compiler allots two words of storage to each real variable and one word of storage to each integer and logical variable' so the word lengths are compatible.

The two compilers handle arrays slightly differently. The

ALGOL compiler stores the attributes of the array, dimensions of the array, a constant denoting the overall array bounds, and values in a single roll. The FORTRAN compiler stores the name and dimen- sions of the array in one roll and stores the values of the array in another roll. Also the ALGOL compiler stores the elements of an array in row order while the FORTRAN compiler stores the elements in column order. These differences will lead to some restrictions in some of the declarative statements.

The ALGOL compiler permits any arithmetic expression to be used as a subscript, while the FORTRAN compiler limits one to a few arithmetic expressions. ALGOL allows more subscripts in its arrays and larger upper array bounds than FORTRAN does. Because of this greater flexibility, the run times and compile times for pro- grams in ALGOL will be greater than the corresponding FORTRAN times (see Appendix I for examples).

'This is not strictly true in the sense that if a logical variable has a real attribute, two words are assigned to it. But since the variable is only tested for zero, one word would suffice, 9

Upon encountering a variable, the translator first determines its type and kind. If these are valid, it will store the name and attributes of the variable on the VARRAY roll (if it is not already present) and will put the address of the variable in the appropriate roll. If the variable is invalid, the translator will print the error message, Illegal variable, and delete the offending statement.

Declarative Statements

Declarative statements are non - executable statements that explicitly specify the type and kind attributes of variables, reserve storage for simple and subscripted variables, allocate shared storage and preassign initial values to variables. The type statement explictly declares the type attribute of a variable. FORTRAN recognizes five types of variables: real, integer, logical, character, and type other. A real or integer type statement assigns the type explicitly so that the arithmetic expres- sion analyzer cannot implicitly reassign type values to these variables.

This is done by assigning to the role indicator of the variable a code signifying its type. Once a variable is placed on the VARRAY role its type cannot be changed, unless it is a subprogram name. Since ALGOL does not support character variables, a type character declaration results in an error message, and the variables are typed character. Any statement that uses these variables will 10 be deleted with an error message.

The type other concept is not supported by the ALGOL compiler, so it receives the same treatment as the type character declaration statement.

If logical variables are being used in the program, the user must include a type logical declaration statement. The translator will type all these variables as boolean.

The dimension statement reserves storage for arrays. In this respect it is similar to the array declaration in ALGOL.

FORTRAN always assigns one as the lower bound .. of an array while

ALGOL permits any value for the lower bound providing it is less than the upper bound. ALGOL permits longer arrays and more subscripts than FORTRAN.

The information in a dimension statement is converted directly into an ALGOL array declaration, and is placed on the Array roll.

For example, let DIMENSION A (100, 100) be the FORTRAN state- ment. The translator will translate this into REAL ARRAY A

[ 1:100, 1:100];. The address of every symbol to the right of the designator ARRAY is placed on the Array /Switch roll, The variable

A with its attributes will be on the VARRAY roll; the ALGOL symbols will be on the reserved word table; the constants will be on the constant roll. The constant one is preassigned.

If a variable designated as an array is found to have been 11 previously entered as an array, the previous designation is destroyed.

This consists of locating the attributes of the array on the Array/

Switch roll and overlaying them with the new attributes. If there are more or fewer new attributes than old attributes, the Array /Switch roll is extended or contracted accordingly.

The common statement is a method of reserving storage areas so that more than one subprogram can have access to it. The com- mon statement also provides a rapid means of communication between two or more subprograms. Each subprogram handles its common block independently of the other subprograms so in actuality, the pro- grammer has overlain one common block on another. This way he is able to conserve storage since he reuses space that otherwise would be idle. This concept has no close equivalent in ALGOL. The differences can best be seen by considering how the compilers allocate and release storage. The FORTRAN compiler allocates the storage that the program or subprogram needs at compilation time and does not release it during the execution of the program. This technique is generally wasteful of storage so the concept of common was introduced. The common statement sets aside a block of storage to be used by all routines that have a common statement. Since the attributes of the variables are stored elsewhere in the program, an address in the common area may have several different meanings. For example, 12 in the main program in a specific address in the common area could be the nth element of a real array, while in a subroutine called by the main program the same address could be an integer variable. If the programmer is careful, information can be quickly passed be- tween different subprograms by this method.

On the other hand, the ALGOL compiler solves the storage problem differently. An ALGOL program is subdivided into blocks, and the control program determines its storage needs dynamically. During compilation, each variable is assigned an address relative to the stack reference for the block in which that variable is declared.

Thus, no actual storage is set aside during compilation. At run time, upon entry into a block, the control program is able to determine how much storage is required, and it allocates this storage. Upon exit from a block, the control program determines which variables were local to that block and releases that storage for reassignment when it enters the next block. The main advantage of this scheme is that the amount of storage is set at run time instead of during compilation, and there is less idle storage. The main drawback is, of course, that information cannot be passed between subprograms in this manner.

The features of common that we would like to preserve are:

a) Referencing the same address by different variable names in different subprograms, 13

b) A rapid means of communication between two or more sub- programs,

c) The more efficient use of the storage area,

d) The referencing of variables of unequal types and kinds.

Due to the ALGOL compiler's method of assigning storage to variables, it is impossible to implement the last feature without changing the ALGOL compiler. There are two methods of handling common variables that preserve the rest of the features.

Pullin (1965) solved this problem by declaring all common variables as global variables. These global variables are readily accessible to every subroutine. For each subroutine a dictionary is created, and if the name of a common element in the subroutine does not agree with the corresponding entry, the dictionary entry is used. This technique permits a common element to be referenced by two different names. This technique fails if a non - common variable in a subroutine has the same name as a common variable in the main program.

In order to avoid this situation and still preserve the first three features, all common variables are passed through formal parameter lists. The translator translates the main program and each subpro- gram into independent blocks. Each subprogram is translated into some sort of procedure. The translator handles common variables as 14 if they were parameters to the various subroutines. In pass one, the translator sets up a roll consisting of the names of the subprograms using the common area and the number of common variables in each.

Once this roll is known, the calling statements to these subprograms can be suitably modified to include the necessary common variables.

Since common variables are now parameters, they must agree to the rules regarding formal and actual parameters. The common variables must agree in type and kind, the number of subscripts in a common array must be the same throughout, the number of formal and actual parameters must be the same, the declarations of the array in the calling program must cover all components used in the course of the subprogram, and the parameters must have the same alignment. The last statement can best be seen by an example.

Consider the following FORTRAN source program

PROGRAM RADO

COMMON A(100), B(50)

CALL TURING (POST)

END 15

SUBROUTINE TURING (THUE)

COMMON TAYLOR (50), MILLER (50)

END

The common area would look as follows where the equals sign

denotes that the two elements share the same address:

A(1) = TAYLOR (1) A(100) = MILLER (50) B(1) _ B(2) _

A(50) = TAYLOR (50) A(51) = MILLER (1) B(50) =

The translator would translate the FORTRAN program as follows:

RADO BEGIN PROCEDURE TURING (THUE, TAYLOR, MILLER); REAL ARRAY TAYLOR, MILLER; REAL THUE; BEGIN

END

BEGIN

REAL ARRAY A[ 1 :100] , B[ 1:50] ; REAL POST; 16 TURING (POST, A, B);

END END

When the call to the procedure Turing is encountered, the ALGOL compiler will set up the following:

POST = THUE B(1) = MILLER (1) A(1) = TAYLOR (1) B(2) = MILLER (2)

A(50) = TAYLOR (50) B(50) = MILLER (50) A(51) _

A(100)

The program will produce erroneous results since the arrays are not properly aligned.

The common statement can be used to declare arrays. The array declaration is handled the same way as the array declarations declared by dimension statements are handled, unless a dimension statement declares the array. In this case,the array declaration is deleted.

The equivalence statement is a method for controlling the allocation of data storage within a single program or subprogram by permitting a single storage location to have several names. It is similar but not identical to the common statement which allocates 17 storage between several programs.

ALGOL does not support this concept either, so the translator supports it with restrictions. The translator handles variables which are described as equivalent by simply changing all references to the elements in an equivalence group to refer to the first element of that group. This is done before the ALGOL source deck is printed so the names of all the variables of an equivalence group except the first do not appear in the ALGOL source program.

In order to translate the equivalence statement, the following restrictions have had to be imposed. The elements of an equivalence group must be the same kind and type or the translator will terminate with the error message, Uncorrectable equivalence error. As in the common statement, arrays must have the same number of subscripts, and arrays must be aligned with arrays.2 Arrays are equivalenced by name only. Any reference to a subscript will cause the error mes- sage, Illegal subscripting, to be printed,and the equivalence group will be deleted. Multiple reference to variables are not permitted in the equivalence statement. If a restriction is violated, the trans- lator prints the error message, Equivalence error, and deletes the offending equivalence group.

2The first and succeeding elements of one array must share the same location as the first and succeeding elements of the other array. 18

The variables in an equivalence group are stored on the VARRAY roll. If a variable is the first element in an equivalence group, its address is placed on the equivalence roll as well as being put in the fourth word of the entry on the VARRAY roll.

If the variable is not the first element in an equivalence group, its attributes are compared with the first element's attributes. If they are different, the error message, Uncorrectable equivalence error, is printed and the equivalence group is deleted. If not, the address stored in the equivalence roll is placed in the fourth word of the entry on the VARRAY roll,and the character count is set to zero so this variable will not be declared. Whenever this variable is referenced, the address of the first element is placed on the proper roll.

The data statement presets variables in labeled .. common to constant values prior to program execution. ALGOL does not support this concept so the translator sets all variables in a data statement to constant values immediately after starting to execute the translated program. The translator is unable to handle implied do loops, unsub- scripted arrays and repetition factors directly. If implied do loops are present,the translator converts them to read statements so these values will be entered when the program is executed. An error message is issued, and the data group is deleted whenever the other 19 two conditions occur.

The translator can handle the following data groups:

Variable = constant, Array (i, j, k) = constant or Array (I, J, K) _ constant where i, j, k are integer constants and I, J, K are integer variables whose values have been predefined.

The attribute of the identifier determines the type of stored constant instead of the structure of the constant determining how the constant is stored. The rule stating that only variables in labeled common may be preset is relaxed to state that any variable can be preset by a data statement.

Since the variables in a data statement are set at execution time rather than at compilation time, caution must be used if a data statement is used to preset variables in a subroutine that is called several times. In FORTRAN these variables are set only once,while in ALGOL these variables will be set every time the subroutine is called. This can be avoided by placing these elements in common and setting them by means of a data statement in the main program.

The external statement declares that a given parameter in a subprogram actual parameter list is the name of another subprogram.

This prevents the FORTRAN compiler from treating a subprogram name as a simple variable. Since ALGOL does not require this information this statement is ignored. In a subprogram, if a simple variable is followed by a left parenthesis, the simple variable will 20 be specified as a subprogram.

Replacement and Manipulative Expressions

Arithmetic, relation and logical expressions involve manipula-

tion of variables according .. to the rules of algebra and logic. The two compilers follow the usual algebraic rules of precedence3 in analyzing an expression. The main difference between ALGOL and FORTRAN arithmetic expressions is the difference in symbols used for operators. For example, POWER is the ALGOL symbol for exponentiation, while in

FORTRAN it is a double asterisk, and a semicolon marks the end of an ALGOL statement, while a dollar sign or the end of a card is the end of a FORTRAN statement. The translator replaces each FORTRAN operator with its ALGOL equivalent. The only conceptual differences in the way the two compilers handle arithmetic expressions are integer division and integer to real conversion. The FORTRAN compiler truncates the quotient upon integer division4 and rounds on all other kinds. ALGOL has a special

3The order of arithmetic operators from high to low is exponentiation, division, multiplication, addition, subtraction, and relational operators and the rules for logical variables are not, and, and or. Any operation with a higher precedence is executed first.

4By integer division we mean integer /integer. For example in FORTRAN 5/3 = 1 while in ALGOL 5/3 = 1. 666. which rounds to Z. 21 integer division operator DIV which truncates the quotients. Ordinarily the ALGOL compiler rounds to the nearest integer. The translator, after translating the arithmetic expression, analyzes the expression and determines if the integer division operator is needed. If needed, it is inserted in place of the division operator,

The second difference occurs in real to integer conversion. The

FORTRAN compiler truncates the real expression upon conversion, while the ALGOL compiler rounds. This difference is corrected by having the translator analyze the arithmetic expression to see if real to integer conversion takes place. If this conversion does occur, the translator subtracts 0.5 from the expression so that the ALGOL compiler will give the same value as the one intended in FORTRAN. Boolean expressions are translated directly, except for the changing of FORTRAN logical operators into ALGOL boolean operators. The rules governing these expressions are the same, except that a FORTRAN logical variable is not declared. Since,by examining the variable alone, it is impossible to tell if it is an arithmetic expression to be tested against zero or is a boolean expression, the translator requires that all logical variables be declared in a type Logical declaration statement.

Relational expressions in FORTRAN translate directly into relational expressions in ALGOL by changing the FORTRAN relational operators to their ALGOL equivalents. The only difference is that 22 in FORTRAN an arithmetic expression by itself is regarded as a relational expression. The expression is true if the value of the expression is nonzero. The translator inserts the relational operator NOT EQUAL and the operand zero to the arithmetic expression when- ever it determines that the arithmetic expression is being used as a logical expression. FORTRAN provides four masking subroutines that operate on integer constants, variables, functions or expressions. Since ALGOL does not support these operations, and the word length of an ALGOL integer variable is different from the word length of a FORTRAN integer variable, the translator deletes the statement which contains these masking functions and prints the error message, Illegal sub- routine.

Control Statements

Program execution normally flows from one statement to the next in the program. Control statements alter this flow or cause a number of iterations of a section of the program. In general, these expressions translate directly into ALGOL.

The simple go to statement is translated directly except for the numeric label which is translated into an alphanumeric label by pre- ceding the label with an F.

The computed go to statement is a multi- branch statement 23 depending upon the integer value of an arithmetic expression. If you have n labels to branch to, the statement branches to the first if the value of the expression is less than or equal to one, to the second if it equals two, and so forth until the value of the expression is greater than or equal to n whereupon it branches to the nth label.

This expression is translated into an ALGOL switch expression.

The switch is declared at the head of the block,and the appropriate statement is placed in the interior of the block. The switch is identified by the characters SW1Q followed by a four digit number. The switch declaration is stored in the Array /Switch roll, and the switch expression is stored on the Program roll.

ALGOL requires that the value of the switch identifier be equal to one of the positive integers associated with the designational expression. FORTRAN is not so restricted. If this restriction is violated,the ALGOL run will terminate with an error message. Arithmetic if statements transfer control depending upon whether the value of an arithmetic expression is negative, zero, or positive. The translator by comparing the labels of the various branches determines the intent of the three way if. The appropriate statement is set up. The translator also inserts the proper relational operator to convert the arithmetic expression into a relational expres s ion. 24

The logical if statement determines whether an arithmetic, 5 logical or relational expression is true or not and then branches accordingly. These if statements translate directly into ALGOL

IF. . . THEN . . . ELSE . . . statements. If the expression in the logical if is an arithmetic expression, the translator inserts the rela- tional operator NOT EQUAL and the constant zero to create the required boolean expression. The translator will also process if statements of the form if (expression) statement. The statement is executed if the expression

is true. This type of if statement is translated into an IF . . . THEN

. . statement.

The do statement causes an integer variable to be incremented

and a preselected sequence of instructions to be repeated a finite num- ber of times. The translator translates this directly into a FOR

variable := initial value STEP incrementing value UNTIL final value

DO. Both statements follow the same scheme6 in execution. The translator places the statements inside the do loop into a separate block which is interior to the program or subprogram block. Each do

loop generates its own block.

5 In FORTRAN an arithmetic expression is considered to be a logical expression with the value true if nonzero,

6 I Initialize testi execute statements inside tue do loop advance successor I do list exhausted 25

FORTRAN and ALGOL have identical restrictions on transfer- ring control in and out of do loop nests and blocks. One cannot transfer into an inactive block, but one can always transfer from an interior to a global block. ALGOL blocks can be nested to a level greater than the maxi- mum number of do nests permitted, and the ALGOL for statement is far less restrictive than the corresponding do statement. The FORTRAN continue statement acts as a dummy statement to which a label may be attached. The translator translates it into a labelled empty statement. The pause statement causes the computer to stop. Depres- sing the start key on the console starts the computer with the next statement. ALGOL has no method of stopping and starting the com- puter throughout a program, so this statement will be deleted following an error message. The stop statement causes control to be returned to the . The translator, upon encountering a stop statement, generates an unconditional jump to the end of the outermost block, providing an end statement does not immediately follow.

Function and Subroutine Subprograms

A main program may or may not have references to sub- programs. A subprogram is a set of instructions written independently 26 of the main program which may or may not be compiled with the main program and may be referred to by the main program. Frequently, a subprogram is an operation that needs to be carried out at several places in the main program.

A subprogram is comprised of three parts. There is the head of the subprogram which contains the subprogram's name, type and formal parameter list. The body of the subprogram contains the instructions that are to be executed. The third part passes control back to the calling program. The parameters are passed by having the calling program store the machine addresses of the parameters directly below the instruc- tion to jump to the subprogram. With this arrangement anytime the value of a parameter is altered, the value is altered in the main pro- gram as well. In ALGOL this concept is called call by name and is one of the two ways to pass parameters.

The ALGOL counterpart to the subprogram is the procedure.

It consists of two parts: a procedure head and a procedure body. The procedure head describes the procedure, names the procedure, and names and specifies all the attributes of the formal parameters.

The procedure body is the set of instructions describing what opera- tions are to be performed. An ALGOL procedure returns control to the calling program when the end of the procedure body is reached. ALGOL does not permit multiple returns in a subprogram the way 27

FORTRAN does.

The FORTRAN subroutines are on the same level as the main program and are completely independent of each other and the main program. The translator translates them into independent blocks.

A block consisting of a BEGIN and an END statement is global to these independent blocks. COntrol is passed from this global block to the main program which in turn activates the various subprograms.

The main program in a FORTRAN source deck must be identified by a program statement. This statement is translated into a comment prior to the first BEGIN statement in the ALGOL source deck. This statement also initializes all rolls and sets flags.

A subroutine subprogram is a set of FORTRAN statements that perform operations or calculations that may or may not return values to the calling program. A subroutine is headed by a sub- routine statement and is terminated by an end statement. The sub- routine statement consists of a variable naming the subroutine and a list of formal parameters. These parameters may be array names, simple variables or names of other subprograms. The attributes of these parameters are to be found on declarative statements within the subprogram. The translator converts these subroutines into procedures. The subroutine statement provides the name and the formal parameter list. The specifications part comes from the declaration statements within 28 the subprogram as well as implicit declarations. The rules governing the use of procedures are similar to the rules governing subroutines. The translator uses the procedure head to pass the common variables as well so the procedure may have a longer formal parameter list than the corresponding subroutine had.

A reference to a subprogram is a call upon a computational or operational procedure. No resultant value is identified with the name of the called subprogram. The subroutine returns values, if any, either through its parameters or through common. The rules regard- ing actual and formal parameters are the same. They are as follows:

The type and kind of each actual parameter must coincide with the specifications of the corresponding formal parameter. The declara- tion of an actual array must agree with the corresponding formal array concerning the number of subscripts. The declaration of an actual array must cover all components called for during the course of the procedure. A constant or an arithmetic expression may be used as an actual parameter. Its type will be determined by the type of the corresponding formal parameter.

The translator converts a subroutine call directly into a pro- cedure call and adds the common variables to the parameter list if necessary. If the subroutine call is to a subroutine that is not on the subroutine roll or is not a FORTRAN library subroutine,the translator prints the error message, Unreferenced subprogram,and deletes 29 the call.

A function subprogram is a list of FORTRAN statements headed by a function statement and terminated by an end statement. A func- tion subprogram calculates a single value to be used in evaluating an expression. The single value is associated with the name of the sub- program; so it must be typed. The remarks about parameters in the paragraph concerning subroutines hold equally well here.

The translator converts a function subprogram into a function procedure. The type of function procedure appears before the word procedure in the ALGOL statement. The parameter list and its specifications are determined from the subroutine head and the declarative statements within the subprogram. Both a function sub- program and a function procedure are referenced by their names, followed by at least one formal parameter.

FORTRAN has a statement that permits alternate entries into a subprogram. ALGOL does not support such a concept; any references to alternate entries will be deleted with an error message. The FORTRAN return statement transfers control back to the referencing program. In ALGOL the end of the procedure serves as the point of return to the referencing program. A FORTRAN return When the - statement can occur anywhere within the subprogram. translator encounters a return statement, it checks to see if the next statement is an end statement. If it is not, it generates an 30 unconditional jump to the end of the subprogram. The label used is called F99999. This label is outside the range of allowable labels.

If the next statement is an end '... statement,the return is deleted.

The end statement marks the physical end of a program or sub- program. The translator recognizes an end statement as the end of the main program block or a procedure block. The translator checks to see if any references have been made to the end. If so, the label

F99999 is generated. The end statement is generated and the translator prints the ALGOL block.

Library Subprograms

The FORTRAN library includes two types of subprograms, mathematical and utility subprograms. The mathematical subpro- grams do computations that are frequently needed by the applications programmer, while the utility subprograms test and modify sense lights, sense switches and fault conditions. ALGOL'S library is not as complete as FORTRAN'S so not all of these subprograms are supported. If a call to an unsupported sub- program is made, the translator deletes the statement in which the call appears after printing the error message, Illegal subroutine. The translator will support absolute values, natural logarithms, arctangents, cosines, sines, exponentials, real to integer conversion, and square roots. 31

FORTRAN has a routine called SEGMENT and OVERLAY that permit segmenting and overlaying parts of a program. This allows the programmer to run a program that will not entirely fit within the machine. This is not supported by the translator, and any references to this will result in an error message followed by the deletion of the statement. FORTRAN has routines to test various fault conditions. These routines generally return a value that can subsequentually be tested.

In an ALGOL run, if a fault condition is raised,the ALGOL run halts with an object time diagnostic. The translator does not support these machine condition subprograms since ALGOL has no way of directly testing these indicators.

Input/Output

FORTRAN has a fairly complex scheme of input and output operations. One of the best features of FORTRAN is the flexibility that a programmer has in displaying his information. ALGOL'S input /output routines are not so similar to FORTRAN'S so as to invite a direction translation. Also, the individual user might prefer to develop his own input /output procedures fashioned to his own needs.

So a simple input /output scheme based on the standard ALGOL procedures Inreal and Outreal was adopted. Inreal inputs numbers separated by commas or blanks from an input device. Outreal 32 outputs numbers in a specific format which consists of a ten digit mantissa followed by a three digit exponent for real numbers and a

15 digit mantissa for integer numbers. The decimal point is to the

right of the first digit.

The translator converts all input - output statements into calls for the procedures Inreal and Outreal. If a variable list is enclosed within implied do loops, the translator converts the implied do loops into for loops. ALGOL does not permit simple integer variables to

serve as logical unit numbers, so the translator will print the error message, Illegal variable, and delete the statement if one is encountered.

Since Inreal and Outreal have a standard format, the FORTRAN format statements are not needed and so are deleted. All input and output operations will be transmitted with even parity check bits. Therefore,the channel cards must be set so the output devices are operating in a Binary Coded Decimal mode.

FORTRAN has two statements called buffer in and buffer out

which transmit one physical record of information in a given mode from an external device into memory or vice versa. ALGOL does

not support such a concept so these statements will be deleted with appropriate error messages. The FORTRAN statements encode and decode transfer data internally under format specifications. ALGOL

has no related concept so these statements will be deleted with an 33 error message. FORTRAN has several statements for handling tape. They are Rewind, Backspace and Endfile. These instructions rewind the tape, backspace the tape one physical record and write an end of file mark on the end of the tape. These are translated directly into procedure calls of the same name. However, the backspace statement in

FORTRAN backspaces one logical record instead of one physical record. A logical record is a physical record except for tapes written using the WRITE (1) or WRITE TAPE 1 statements. State- ments written using these two commands may have more physical records than logical records. It would be good practice for the user not to use the above two statements if he plans to backspace the tapes that he is writing on.

The FORTRAN library includes function and subroutine sub- programs that check status after input- output operations. These include routines to check end of file marks, check parity, check the status of a unit and check the number of words that have been transmitted by a unit. ALGOL has procedures to accomplish the first two operations but not the last two. The translator converts any reference to the first two into a procedure call. These pro- cedures and calls will have to be included by the programmer. 34

7 The unit status test and the length test refer to buffered operations. Since these operations are not supported, the translator will delete these tests with an error message.

?Buffer In and Buffer Out are the commands for these opera- tions. 35

DESCRIPTION OF SUPPORT MODULES

The translator contains a number of modules that handle the input /output, prepare and search the tables, insert labels and uncon- ditional jumps, convert constants from one base to another and rearrange the FORTRAN source program. These modules will be described in alphabetical order by passes.

The BLANK module inserts blanks into the input /output area.

The COMMON module checks if a subroutine is being processed. If it is, it scans the common statement and determines the number of common variables, which is then stored on the Subroutine roll. If it is the main program, it calls the module, SADC. The DATA module stores data statements on the data roll,so data statements will be the last declarative statements.

The module DECBIN converts a positive decimal number to binary. The routine processes digits until it encounters a non - digit. It then returns with the binary number in the A register. The module ETA reads the first data card and checks for the optional alternate logical unit number. If the first card does not contain a number, ETA processes it as a FORTRAN statement. ETA determines the type of FORTRAN statement and jumps to the appropriate routine to process it. The jump table is divided into two parts. The first part contains the declarative statements and. 36

the second contains all the rest. When the first nondeclarative state-

ment is encountered, ETA copies the contents of the Data roll out onto the appropriate file before processing the statement. ETA also sets

up the flags used to process multiple returns.

The FINIS routine copies the main program, which is stored

on logical unit number 54, onto logical unit 55, permitting the sub-

programs to precede the main program. When this is accomplished FINIS rewinds both logical units and jumps to PASS 2. The FORMAT module deletes the format statement by calling READCARD to read the next card and determine if it is a continuation card or not.

The INIT module initializes flags and counters at the beginning

of a program or subprogram.

INSERT inserts a statement between two FORTRAN statements.

INSERT searches for the end of the previous statement. When it

encounters it, it copies everything to the right of the previous state-

ment into temporary storage. INSERT checks the Input /Output area

for nonblank characters, and if it finds one it calls OUTPUT to print

the line. The statement to be inserted is moved into the Input /Out-

put area and printed. The statement stored in temporary storage is copied back into the Input /Output area, and ETA is called to process it.

OUTPUT writes the contents of the Input /Output area on logical unit number 54 or 55, depending upon whether the main program or 37 subroutine is being processed.

The PACK module packs the contents of the A register into an area called ITPIN and increments the character counter.

PROGRAM writes the program card out on logical units 54 and

55, The program routine in PASS 2 is called twice. The first call translates the program name, and the second call sets up the program block. The READCARD module blanks out the Input /Output area and reads the FORTRAN statements on logical unit 60 into the Input/Out- put area. This module first searches for a less than symbol. If it finds one, it reads the next card. If not, it checks column one for a C.

If present, it searches for the word logical denoting a type logical card. If it finds it, it deletes the Ç from column one and reads the next card. It checks column six for a continuation card. If it finds one, it again deletes the C in column one and repeats. If not, it calls

ETA to process the statement. If it encounters a comment card, it deletes it.

RETURN sets the return flag and calls SADC to process the statement. The module called SADC searches for the end of a

FORTRAN statement. Upon reaching the end of the Input /Output area, SADC calls OUTPUT to write the line and READCARD to read the next card.

STOP sets the stop flag so INSERT can insert a GO TO 99998 statement following the stop statement. PASS 2, upon encountering a 38

STOP statement, will label the last end in the ALGOL program.

The subroutine module, SUBRO determines the name of each subroutine and places it on the subroutine roll.

The support modules in PASS 2 pack variables and constants, test attributes, construct and search rolls, print the ALGOL source program, read the prepared FORTRAN program, analyze arithmetic expressions, process labels, and process lists of variables. The module ANAL 2 analyzes the arithmetic expressions that the arithmetic expression analyzer produces. The statements are analyzed in order to insert the integer division operator when integer division is called for and to ensure that real /integer, logical /real or logical /integer conversion is properly handled.

The analyzer uses a single push down list with a double pre- cedence scheme to stack operators and operands whose operations are to be delayed. The analyzer scans from right to left.

The general rules for a right to left scanning analyzer are:

1. Stack items upon encountering a right parenthesis.

2. Test for integer division upon encountering a left parenthesis

and keep testing until a right parenthesis is found on the top

of the push down list.

3. Test for integer division, real /integer, logical /real or logical /integer conversion if the precedence of the operator

on the top of the push down list is greater than the 39

precedence of the current operator.

Integer division is called for whenever the operator is a division operator and both operands are integer. The analyzer re- places the address of the division operator with the address of the integer division operator. Real to integer conversion is called for whenever the replacement operator is encountered and the top most operand in the push down list is real while the operand on the program roll is integer. The analyzer generates the code to subtract O. 5 from the arithmetic expression on the program roll. When the ALGOL statement is executed, the transfer function will truncate rather than round. Logical /real or logical /integer conversion is accomplished by testing for a logical operator. If a logical operator is not present, the analyzer inserts an if after the replacement sign and places a test for zero, THEN true ELSE false at the end of the statement.

The analyzer stores the push down list on the scratch roll.

The starting and stopping address of the expression to be analyzed is stored. This way the analyzer can operate on any expression instead of analyzing entire statements. The following table is a list of the precedences used. 40

Source Code Internal Code Precedences

1 0 1 5 1 2 4 1 2 AND 5 2 2 OR 5 2 2 NOT 5 2 2 relation operator 5 3 3 +, - 5 4 4 * 5 5 5 4 5 5 power operator 5 6 6 function designator 5 6 7 array designator 5 7 7 right parenthesis 2 0 0 left parenthesis 3 0 0

The macro, ARTEST, tests the role indicator for arrays.

ARTEST jumps to the first address if the role indicator indicates an array and to the second address if it does not. The module ARRAYPROC issues the error message, Unsub- scripted array and calls the PASS 2 version of SADC to delete the current statement.

CONPROC is a module that determines if a constant is in the correct format. The ALGOL compiler requires that a digit must preceed and follow a decimal point. CONPROC checks the first and last character in a constant for a decimal point, and, if it finds one, it either bumps every character to the right and inserts a zero, or it follows the decimal point with a zero.

DECSRCH, DECSRCHD, and DECSRCHP set up rolls of variables to be printed as part of an ALGOL block declaration. They 41 call VARSRCH to search the VARRAY roll for variables with the correct role indicator and SCRPROC to process the resulting list on the scratch roll. DECSRCHP processes parameter variables, DECSRCHD processes dynamic declarations, and DECSRCH processes local variables and switches. The module DELETEP deletes the second period from the

FORTRAN , AND, and .NOT, statements. DELST issues the error message, Statement deleted, and calls SADC to delete the FORTRAN statement.

The module DSP updates rolls, checks that equivalence rules have been followed and adds the common elements to the formal parameter list. DSP is called after all declarative statements except dynamic declarative statements have been processed.

DP processes periods in arithmetic expressions. DP is called whenever the arithmetic expression analyzer (AEA) encounters a period. DP packs the next four characters and searches for a relational or logical operator. If it finds one, it branches to the proper routine to process it. If not, DP packs the period as a decimal point in a constant.

The expression type analyzer (ETA) calls FLABEL to process a label if a new record has been read, calls DSP when the last declarative statement had been read, processes do loop labels, and determines the type of FORTRAN statement and jumps to the proper 42 routine. ETA packs alphanumeric characters until a nonalphanumeric character is found and conducts a linear search over FORTRAN reserved word tables one and two (FRWT1, FRWT2). If a match is made, ETA uses the appropriate jump table (FRWT1J, FRWT2J) to jump to the proper routine. If not, it assumes an arithmetic expression and calls AEA to process it. If a do loop label is to be processed, ETA determines the number of do loops terminating at this label and the correct number of end statements.

FIFORM is a module that contains the skeleton of an ALGOL if statement. The IF routine inserts the proper labels and calls

FIFORM to copy itself onto the program roll. The module FLABEL processes FORTRAN labels. FLABEL places an F in front of the label and places the label on the short constant roll if it is not already present. FLABEL checks for the label in a do loop. If present, it sets a flag before the label is put on the program roll. If not, it puts the label followed by a colon on the program roll. ILLR prints out the error message, Illegal sub- routine, and calls SADC to delete the statement. The module, INIT, zeroes out rolls and sets flags and counters to zero. The macro,

INTVAR, determines the type of a variable by testing its first letter.

The macro, LETEST, determines if a character is a letter or not.

The module, LIST, processes lists of variables found in 43 input /output statements and in data. statements. Since -these lists are part of input /output operations, LIST processes the lists of variables as calls to the procedures Inreal or Outreal. The procedure calls are first copied onto scratch roll one and then onto the program roll.

In the case of implied do loops, the precedence calls and the indexing values are placed on scratch roll number one with flags separating them. Then LIST copies the segments onto the program roll so they

appear in the proper order.

The NAME module converts the internal form of an ALGOL symbol to its external form. Every ALGOL symbol is stored in the

ALGOL reserved word table. The first word of each entry contains

the character count; the remaining words hold the left justified

Binary Coded Decimal equivalent of each character in the symbol.

The internal form of an ALGOL symbol is the address of the first word of the appropriate entry in the table. This address is the only

parameter given to NAME,and the result is placed in the Input /Out- put area.

The module NEWLINE calls OUTLINE to print whatever is in the

Input /Output area and sets the line counter to zero. The module

OUTLINE prints whatever is in the Input /Output area on logical unit number 61 and, if selected, on the alternate logical unit. OUTLINE inserts blanks into the Input /Output area and returns to the calling

program. The module PACK packs whatever character is in the A 44

register into ITPIN and increments the character counter stored in

ID.

READTAPE is the module that reads the file prepared by PASS

1 and prints out the FORTRAN statement on logical unit number 61.

READTAPE checks for a continuation card. If it is not a continuation

card,the calling program returns to ETA.

RELOPROC determines if a real or integer variable is being used in a relational expression without a relational operator. If so,

it converts the expression into a test for zero by inserting NE 0 onto

the Program roll. The module, SADC, scans and deletes statements.

SCRPROC converts the internal form of ALGOL symbols

stored on scratch roll one into their external form. SCRPROC

along with VARSRCH are used by DECSRCH, DECSRCHD and DECSRCHP to process variable declarations.

The modules SEARCH and SEARCH2 search the various rolls,

comparing each entry against the contents of ITPIN. If a hit is found,they return with the address of the entry in ITPADD and a one

in IHM. If not found, they add the contents of ITPIN to the end of the

roll and return with the address of the . entry in ITPADD and a zero

in IHM. The required parameters are roll name, roll counter, number of words per entry and number of search words per entry.

SEARCH2 calls SEARCH to search the VARRAY roll, and if an

insertion is made, SEARCH 2 inserts the address of the entry into the 45 fourth word of the entry.

The module SUBPNAME inserts the correct role indicator into the entry of a function subprogram on the VARRAY roll. TESTL tests the rolls for roll overflow and terminates the translator if it occurs. The module VARSRCH searches the VARRAY roll for an entry whose role indicator matches its parameter. If it encounters one, it checks to see if the entry is an array. If it is, it searches the array roll for the remaining array declaration. If it finds it, it copies the declaration onto scratch roll one. If not, or if it is a variable,

VARSRCH places the variable and comma on scratch roll one. Then

VARSRCH continues to search the VARRAY roll. When the search is completed, VARSRCH puts a semicolon on scratch roll one.

VARSRCH's parameter is the role indicator of the variable to be searched for.

The module, VCPROC , stores constants and variables encountered by AEA, VCPROC selects the proper roll, calls

SEARCH to search it and returns with the proper flags set and the internal form of the constant or variable in ITPADD. 46

ROLLS AND TABLES

The translator uses nine fixed and two dynamic rolls. The rolls contain variable names, attributes of the variables, declara- tions, and the ALGOL source program in an internal form. There are two scratch rolls that are used by the translator. All source symbols are stored in the same format. The first half word contains the number of characters in the symbol, and the second half word con- tains the attributes of the symbol. The remaining words of the entry contain the Binary Coded Decimal equivalent of the symbol. The internal form of the symbol is the address of the first word of the entry.

The portion of core that is not occupied by the translator is divided into eleven blocks. The lowest block is used to communicate between passes. The subroutine roll and the alternate logical unit number are passed between passes. The subroutine roll consists of thr ee words per entry; the first two hold the left justified name of the subroutine, and the third word holds the number of common elements in that subprogram. The next block contains the roll counters and the flags that are used in PASS 2. Above these are the various rolls and tables.

The variable roll (VARRAY) contains the names of the variables, their attributes and the address of the first word of each 47 entry. The attributes occupy the first word, the name, the next two words, and the address in the last word. If the entry is a variable that is equivalence& to another variable,the address in the fourth word will be the address of the first variable in the equivalence group. A,maximum_of 500 variable names may be stored on this roll.

The short constant roll (ISCNRL) contains labels and constants containing eight or less characters. Each entry occupies three words. A maximum of 400 labels and short constants may be stored.

The long constant roll (ILCNRL) contains constants that con- tain more than eight characters. Each entry occupies six words, so the translator can store the largest constants FORTRAN permits.

A maximum of 100 long constants can be stored on this roll.

The do loop roll (IDOROL) holds the address of the labels in the do statements. This allows the translator to terminate do loop nests correctly. The first nine bits hold the number of do loops terminat- ing at this label, while the remaining fifteen bits hold the label's address. When the end of a do loop nest is encountered the cor- responding entry on this roll is removed, and the roll is shortened accordingly. ALGOL permits blocks to be nested 32 deep. The translator requires two blocks, and each do loop calls for a block, so there are 30 entries allowed on this roll.

There are two scratch rolls called SCRL2 and ISCROL. There is no particular format for these two rolls. ISCROL expands toward 48 higher addresses while SCROL2 éxpands toward lower addresses.

This permits these two rolls to be of varying length. Together these two rolls occupy 800 words.

The common roll (ICOMRL) contains a list of the common elements. Each entry occupies one word. This list is used to set up the formal parameter lists. This roll is equivalenced with the long constant roll so it may contain 600 entries.

VARRAY TABLE CODES

CODE ATTRIBUTE CODE ATTRIBUTE 0 real variable 16 real array dynamic 1 integer variable 17 integer array dynamic 2 logical variable 18 logical array dynamic 3 character or type 19 character or type other other variable array, dynamic 4 real array 20 real subroutine 5 integer array 21 integer subroutine 6 logical array 22 logical subroutine 7 character or type 23 subprogram other array 24 switch identifier 8 real variable, 25 program name parameter 26 label 9 integer variable, 28 real subroutine, parameter parameter 10 logical variable, 29 integer subroutine, parameter parameter 11 character or type 30 logical subroutine, other variable, parameter parameter 31 subprogram, parameter 12 real array parameter 13 integer array parameter 14 logical array parameter 15 character or type other array, parameter 49

The Equivalence roll (IEQROL) contains a list of the first elements in each equivalence group. There is one word per entry with a maximum of 100 entries.

The Array /Switch roll (IARROL, ISWROL) contains the array and switch declarations. These declarations are referenced by a pointer from the VARRAY roll so they can be mixed indiscriminately.. This roll expands from the last word occupied by the translator down toward the program roll so its length is arbitrary.

The program roll (IPRGRL) contains the ALGOL source pro- gram in the internal form. This roll expands upward toward the Array /Switch roll. Roll overflow occurs when one roll overlaps the other. All these rolls except the subroutine roll are destroyed at the end of each subprogram. The length of the tables is fixed, and they are never destroyed. The tables contain the FORTRAN symbols, the ALGOL symbols and the translator diagnostics.

The FORTRAN reserved word table and the ALGOL reserved word table have variable length entries, and each entry is in the same format as the entries in the VARRAY roll. 50

PSEUDO - FORTRAN

In many respects ALGOL is less restrictive than FORTRAN.

By translating FORTRAN into ALGOL we find that certain invalid

FORTRAN statements become perfectly valid ALGOL statements, so we can develop a pseudo- FORTRAN language. Pseudo- FORTRAN

consists mainly of relaxation of various restrictions and the concepts

of dynamic declarations and recursive procedures.

ALGOL uses two words to represent an integer constant while

FORTRAN uses one word. This increases the range of integer

variables to ± 247 -1 from a range of ± 223 -1. An ALGOL for statement's indexing parameters may be

arithmetic expressions. Consequently we can relax the FORTRAN

restriction that indexing parameters in do statements be integer variables or constants to include arithmetic expressions. The

ALGOL compiler can nest blocks 32 deep. The translator uses two

blocks to establish the structure of the translated program, so there

are 30 blocks available for FOR nests. This relaxes the FORTRAN

restriction of ten do loop nests to 30. Since ALGOL processes arrays differently from FORTRAN, the

restrictions on arrays can be relaxed. Any number of subscripts

can be used and any arithmetic expression can be used as a subscript.

ALGOL does not check for array bounds, so arrays can be of any 51 length. Of course if an array is declared to be larger than the

available memory to store it in, the program will produce - erroneous results.

Upon entry into a block, the ALGOL compiler determines the number of variables that are going to be needed during the execution of that block, and it sets up memory accordingly. This permits us to declare the size of an array when the program is executed instead of when the program is compiled. The only requirement is that the

value of the upper bound of the array be established in an .. outer block.

I have introduced two pseudo- FORTRAN statements to do this. The statement BLOCK creates a new block when it is translated. This allows us to set the upper bounds in the outer block and create an inner block in which the array is dynamically declared. Correspond- ing to the block statement is the statement ENDBLOCK which ter- minates the current block when translated. If this statement is not us ed, the inner block is terminated at the end of the current subpro- gram. An example of this concept is the program MATMULT in the first appendix.

One of the most powerful features of ALGOL is the ability of a procedure to be used recursively. A procedure body is able to use itself and permit a call to itself from within the procedure body. A very simple example is a procedure to compute the factorial of an integer n. 52

real procedure factorial (n); integer n; if n =1 then

factorial := 1 else factorial :_ n X factorial (n -1);

The procedure calls itself from within the procedure and would call

itself n times to evaluate the factorial of n.

Another simple example of a procedure calling itself as part

of its formal parameter list is a procedure to evaluate the double product n n d:= rr Tr sgrt (i*j). i=1 j=2

The procedure would be

real procedure product (i, j, k, f); begin real temp; temp := 1;

for i : =j step 1 until k do temp := temp * f; product := temp end.

The procedure call to evaluate this double product would be

d := product (i, 1, n, product(j, 2, m, sqrt (i*j))).

The translator will translate a recursive FORTRAN subroutine

into its ALGOL equivalent. Owing to the amount of time that is

required to execute a recursive procedure, their use is not recom- mended unless absolutely necessary. 53

EPILOGUE

The design and implementation of a systems program is an

evolutionary process in the sense that the systems program is

continually being modified and improved. The same would be true of this translator. I have written the first version of this translator and in doing so have seen improvements and modifications that should be incorporated into later versions.

The translator presently uses 11 rolls, nine of which are fixed.

The next version of the translator should attempt to reduce the num- ber of rolls to a minimum. One way to do this would be to store variables, array names and constants on one roll and store array declarations, switch declarations and the internal form of the ALGOL program on another roll. Then the only fixed length rolls would be the scratch rolls, subroutine roll, do loop roll, equivalence roll and

common roll. This would make more efficient use of memory than the current program does.

In order to implement this, several modules would have to be redesigned. The SEARCH module would have to be designed to search on a table with variable entries. The VARSRCH module would also have to be redesigned for the same type table. Since array declara- tions, switch declarations and the ALGOL program would all be stored

on one roll,the module that prints the program roll would have to be 54 redesigned to skip over array and switch_ declarations. This could be done by inserting a pointer into the program roll that would con- tain the address of the next word to be processed. Then the print module would jump to that address instead of the next one. Another way to accomplish this would be by means of a threaded list.

The restriction requiring a nonalphanumeric character immediately following a FORTRAN reserved word could be relaxed by redesigning the expression type analyzer (ETA). ETA would pack characters, ignoring blanks, until it encountered a nonalphanumeric symbol. A search over the FORTRAN reserved word tables would be made on the first four characters. When a match was made, ETA would jump to a special routine that would determine if a FORTRAN reserved word was being used. For example,suppose our input statement was DIMENSION A(100). ETA would pack DIMENSION A, and a search would result in a hit, since DIME would be on one of the

FORTRAN reserved word tables. A special routine would examine the next five characters for NSION. A match would be made again, and the dimension routine would recognize that the last packed character was the name of an array.

Another way to handle common elements is to declare them as global elements in the outermost block (Pullin, 1965). This method is especially feasible if the FORTRAN programmer does not change the names of the common elements in the main program and its 55 subroutines. A global option could easily be implemented by adding a routine in PASS 1 to check that the list of common variables in each subprogram was the same as the list in the main program. The common module in PASS 2 would have to be modified to change the attribute of all common variables in a subprogram to indicate that they are global variables and must not be defined within that block.

The input /output modules could be modified to use the pro- cedures INLIST and OUTLIST to transfer variables under format control. The FORTRAN format statements would have to be analyzed and converted to their ALGOL equivalents.

The current restrictions on the data and input /output state- ments could be removed by modifying the list module so it could process implied lists of elements. This would permit the translator to handle unsubscripted arrays and repetition factors. 56

BIBLIOGRAPHY

Baumann, R. et al. 1964. Introduction to Algol. Englewood Cliffs, Prentice -Hall. 142 p.

Bachelor, Gilbert A. 1967. Instructor, Oregon State University, Department of Mathematics. Class notes from Mathematics 457, 458: Systems Programming. Corvallis.

Control Data Corporation. 1966. 3100/3200/3300/3500 Computer systems FORTRAN reference manual. Palto Alto, Control Data Corporation Documentation Department. Various paging. Control Data Corporation. 1966. 3100/3200/3300/3500 Computer systems ALGOL reference manual. Palo Alto, Control Data Corporation Documentation Department. Various paging.

McCracken, Daniel D. 1966, A Guide to ALGOL programming. New York, John Wiley and Sons. 103 p.

Pullin, D. 1965. A FORTRAN to ALGOL translator. The Computer Journal 7:24 -27. APPENDICES 57

APPENDIX 1

TEST CASES 58

APPENDIX 1

TEST CASES

FORTRAN programs from students and from the computer center library were used to check out the translator. Each FORTRAN program was initially compiled to make certain that it was error free. The FORTRAN program was translated,and the resulting ALGOL program was compiled. If a test case accompanied the program, the test case was run using both programs. This served as a check on the accuracy of the translated ALGOL program. The amount of cen- tral processing time used to compile and run both programs was found.

The FORTRAN programs were initially copied onto a file, and the translator was run from a teletypewriter. An alternate logical unit was used in every case. Both the FORTRAN and ALGOL pro- grams were compiled using the following options. Input to the compiler was from a file; a listing was to be made on the line printer, and a relocatable binary deck was to be made on another file.

The results of the timing indicate that the ALGOL programs take longer to compile and run than FORTRAN programs. FORTRAN COMPILE FORTRAN RUN ALGOL COMPILE ALGOL RUN TRANSLATION PROGRAM NAME TIME TIME TIME TIME TIME

XDAT 2. 059 3.019 7. 672

D2 MILNE 2.600 4.778 17. 770

C3 SAND GAMMALN 2. 114 3.567 3. 159 5. 478 9. 092

Dl SAND NEWTN 3.005 0.455 5.440 1. 832 12. 476

F2 SAND GERIAC 2.832 1.731 6.185 3.536 11. 245

Dl SAND GAUSSN 2. 484 1. 659 3.867 3. 291 7. 769

C2 UCSD VIETA 2.503 1.038 3. 867 1.868 5. 112 60

PROGRAM FACTOR 1 READ(60.2) N 2 FORMAT (IS) TESTFACT(N) WRITE(61.3) N.TEST 3 FORMAT(I5.F10.0) GO TO 1 END FUNCTION FACT(N) IF(N.E0.1) 1.2 1 FACT.1 GO TO 3 2 FACT(N*FACT(N-1) 3 RETURN END FINIS

0S3 ALGOL V0.0 FACTOR 09/28/68 0132 PAVE y 0** FACTOR *BEGIN* *REAL**PROCEDURE*FACT(N11 *INTEGER*N1 *BEGIN* *IF*N1*THEN**0O TO*FI*ELSE**GO TO*f2t

F1 t FACT ? 11 *GO TO*F31

F2 1 FACT S NFACT(N-})i

F3 t *END*{ 10* *BEGIN**REAL*TEST1

*INTEGER*NI '

FI 1 INREAL(60.N)1

TEST 2 FACT(N)1 "

OUTREAL(61.N)I - . CUTREAL(61.TE5T){ *GO T^*F11 *END*1 *END*; 0EOP*

PROGRAM MATMULT READ(60.1) N 1 FCRMATIISI BLOCK DIMENSION A(N.N).B(N.N).C(N.N) READ(60.2) ((A(I.JI,I1.N).J.1.N),I(B(i.J),I U N).J.1.N1 2 FORMAT(8F1O.51 DO 10 I.1.N DO 10 J61.N C(I,J)0. DO 10 K.1.61 C(I.J1C(I.J).A(I.K).8(K.JI 10 CONTINUE WRITE(61.21(1A(I.J),LI.N1.J1.N).((B(I.J1. L1.N).J.1.N).((CII.J).

1I1.N).J1.N) - END FINIS

053 ALGOL V0.0 MATMULT 09/28/68 0138 PAGE 1 0 MATMULT *BEGIN* *BEGIN**INTEGER*K.J.I.NI INREAL(60.N)i

*BEGIN**REAL**ARRAYTC I1 1 N.1 1 Nl .8 (1 1 N.1 1 NI .A (1 t N.) 1 N1 I *FORM.) ? 1TSTEP*1*UNTIL*N*DC**BEGIN**FORAI 8 1*STEP*1*UNTIL*N*D0**BEGIN* INREAL160.A (I.J] 1{ *ENDiI SENDSI o *FOR*J liSTEPi1iUNTTL*N*OOT*BEGIN**FOR*I £ 1TSTEPT1*UNTIL*N0DO**BEGIN* 10** INREAL160.8 II.J] I{ SENDSI *ENDiI *FORM' E 1*STEP*1TUNTILTN*DO* *BEGIN**FOR*J 9 1*STEP*1*UNTIL*N*D0* *BEGIN*C II.J] 5 0.01 *FOR*K 5 1*STEP*1*UNTILTN*DC* *BEGIN*C (I.J] E C (T.J3 .A (I.KI 8 (K.J] I F10 1 *END*{ *ENDS; 20 *ENDS; *FORTJ = I*STEPTITUNTTL*N*DO**BEGIN**FORTI.? 1*STEP*j*UNTILTN*DC**BEGINT CUTREAL(61.A II.J] )1 *END*1 *END*{ SFORSJ £ 1SSTEPMISUNTTLSNSDOSSBEOINSSFORSI S 1*STEP*1*UNTIL*N*0Ci*BEGIN* OUTREAL(610 (I.J] )I *ENDii SENDS; SFORSJ ? 1*STEPTI*UNTTL*NTDO*0BEGIN*TFOR*I i 1*STEP*1*UNTIL*N*DC**BEGIN* 30** CUTREAL(61.0 (I.J] )I *END*1 *ENDiI SENDSI *END*1 *ENDS{ *EOP* FINIS GEN. BY EOD ON LU 08 (01) LINE 0001 PROGRAM BEGINS (01) LINE 0035 PROGRAM ENDS (01) LINE 0036 SOURCE DECK ENDS 61

3300 FORTRAN 0S3 VERSION 1.4 09/28/68 0011 PROGRAM XDAT COMMON RAD.RR.W.Y0 DIMENSION 0(190).F(35.35).RAD(13) COMMON /DATA/ AXIAL. BACK BSTEP.FOR.ZMIN.R.JMIN.BACKI DATA (AXIAL.20. 75).( BACK.. 25). (8STEP.3.125).(FOR.025).(2MIN- -20.7 15).(R6.025),(JMTN.1).(BACK1..125) JCHANG-BSTEP /BACK1 JJ- JMINSKMAX2.à(AXIAL /RACK).1. K I.KMAX -1 KK1AXIAL /BACK.. KKKK11 READ(60.52)(0(J1.J.KKI.KMAX) DO 2 K- KK.KMAX L.KMAX1 -K DIL)-D(K) 24 PR.R.2 Y. -1. DELBACK1 DO 22 J.JMIN.JCHANG CALL SOLVE(1.1.2MIN.0.ÇACK) AK.K1 CALL SOLVE( K1. 10.1.ZMIN.(AK10RACK.9- K1.8ACK)

EVAL BACK (4.RAD19) RAD (101 .BAD (I ) ) /3. H ACK I NTI -K1 K.1 Z- ZMTN.H SUM4.0. SUM20. 16 DCUR1..016D(K.1) DCIIR2.01a0(K.2) RADSUM.RR.(Y -Z)..2 RADSURR.IY- (L.H)) --2 SUM4SUM4.000RIA((1. /RADSUMI..(.5)) SUM2.SUM2.DCUR20(1. /RA051I) - -( .5)1 IF(K- INT1.3) 12.18.18 12 KK.2 Z.Z2..H GO TO 16 18 EVAL .H.(4.SUM44SUM2 92.1 /3.EVAL F(J.JJIEVAL 22 Y.Y.DEL IF(R.GE.FOR)41.66 66 R.R.DEL JJ.J J.1 GO TO 24 41 WRITE(25,906) 906 FORMAT(2X.* THE ALLDAT POTENTIAL IT CALCULATES THE INTEGRAL 10F LEAKAGE CURRENT TIMES THE DERIVATIVE2/1 WRITE(25,907) GOT FORMAT(33,*OF THE KERNEL. THIS INTEGRAL DESCRIBES THE EFFECT UPON 1POINT Y OF CURRENT AT ALL OTHER POINTS.i //) WRITE(25.52) 1(F(J.JJ).JJ.1.7).J1.JCHANG) WRITE(62.52) 1(F(J.JJ).JJ. L 7).J1.JCHANG) 52 FORMAT(2X0F11.6) RETURN END

SUBROUTINE SOLVF(KSTAR.KFTNL 2.L.SPACE) COMMON RAD.RR.W.Y.D DIMENSION RAO(11)0(100) ADD -O. DO 132 K.KSTAR.KFINI N.K.L W.Y- (ZADD *SPACE) A NS.RR. W.W ANS.) (1. /ANS)`*.5) RAD(N)-.0160(K).ANS 132 ADD.ADD.1. RETURN END 62

OS3 ALGOL V0.0 XDAT 09/28/68 0016 PAGE 1 0* XDAT *BEGIN* iPROCEDURESSOLVEIKSTAR.KFINI.7.LSPACE.RAD.RR.W.Y.011 *REALSY.W.RR.SPACE.Z{ *INTEOERSL.KFINIKSTARI *REAL*SARRAY*D.RADI SBEOINSSREAL*ANS.ADD1 sINTEGERSN.Ki ADD E 0.01

SFORSK E KSTARSS7EPSI*UNTILSKFINISDOS - 10* *BEOIN*N S K.L1 W ? Y-IZADD*SPACE11 ANS E RR.W*W1 ANS E 111.0/ANS)*P^vWERS0.511 RAD [NI E 0.01*D (K1 *ANS{ F132 1 ADD E ADD.1.01 *END*$ sENDSI SBEGINS*REALSRADSII.RADSUM.DCUR2.DCURI.SUM2.SUM4.Z.H.EVAL.AK.DEL1 SINTEGERSTNT1.L.K.JKK.KKL.KIKMAXJJJCHANGI

20s iREALSSARRAY*F (1 t 35.1 t 351 1 SREAL384CK1.R.ZMIN.FOR.85TEPBACKAXIAL.Y.W.RR{ SINTEGERSJMINt

*REALS*ARRAYSO CI 1 1901 RAD CI 1 131 I AXIAL E 20.75t RACK S 0.251 RSTEP E 3.1251 FOR E 0.0251 ZMIN E -20.751 R E 0.0251 30** JM1N E 11 BACK1 ? 0.1251 JCHANG E RSTEP/RACK1-0.51 JJ E JMINI KMAX E 2.0e(AXIAL/BACK1.1.0-0.51 K1 S KMAX-11 KK1 E AXIAL/BACK.1.0-0.51 KK E KK11t * FOR*J S KK1SSTEP*1SIINTIL0KMAXSDC*SREGTNSINREAL(60.D (J1 11 SENDS{ 40" SFORSK E KKSSTEP*1SUNTILSKMAX*DOs SREOINSL S KMAX.l-KI

F2 1 D [LI E D [K1 t SENDS;

F24 1 RR E RSPOWERS21 Y E -1.01 D EL E BACKl1 *FOR*J E JMINSSTEPS1*IINTIL0JCHANG*DOs SBEGIN*SOLVE111.ZMIN.O.BACK.RADRR.w.Y.0)1 AK E KI{ 50e* SOLVE(Ki.K1.1.ZMIN.(AK-1.0)BACK.9-KI.BACK.R4DRRW.Y.0)1 EVAL E BACK*14.0°RAD T91 *RAD (101 *RAD (11 1/3.01 H E BACK; INT1 E K1; K E 11 2 S ZMIN.HI SUM4 E 0.01 SUM2 E 0.01

F16 1 DCURI E 0.01°0 (K.11 t

DCUR2 E 0.O1*D (K.21 I 60** RADSUM E RR.(Y-Z13POWERS2; RADSU E RR.(Y-1ZH))*POWERS2; SI1M4 E SUM4DCUR1(11.0/RADSUMISPOWFRSl0.5)1{ SUM2 S SUM2DCI1R2tl(11.0/RAOSUI*POWEP*10.5)11 SIFSK-INTI.3SLESS30*THENSSG0 TO*F12SELSESSGO TO0181

F12 t K _ K21 Z E Z.2.004; *GC TOSF161

F18 I EVAL E H(4.0^SDM4SUM2*2.0)/3.0EVAL1 F (JJJS E EVALI

70* F22 1 Y 5 Y.DELt *ENDS{ *(F*R*NOT LESSSFORSTHFNSSGO TO*F41*FLSEs*G0 TD*F661 F66 ! R ? R.DEL; JJ E JJ.11 SOC TD*F241 ? 111STEPS1SUNTIL* F41 I *FOR*J E 1*STEPSI*IINTILSJCHANGSD03S8EGINSSFORSJJ 7SD0S*8E13INSOUTREALl25.F (J.JJ1 ){ SENDS{ *ENOS; 80** *FOR*J E 1*STEP01SUNTTLSJCNANGSDOSSREGIN*SFOR*JJ E ISSTEPSI*UNTTLS7sDO* SBEGINSOUTREAL(62.F (J.JJS ); SENDS{ *ENDS{ *END*1 *ENDS; *EOPs FINIS GEN. RY ECD ON LU 08 (01) LINE 0001 PROGRAM BEGINS (011 LINE 0085 PROGRAM ENDS 1011 LINE 0086 SOURCF DECK ENDS 3300 FORTRAN 053 VERSION 1.4 09/28/68 0121 63 PROGRAM TEST DIMENSION Y(5),yD(5) Il N2 H.0.0174532952 Y11).060 Y(2).1.0 Y(3)0.0 INIT. -1 WRITE(61.200) CALL MILNE(N,M.Y.YD,INIT) WRITE (61.100) I.Y (3),Y (l),Y(2) DO 50 Ia2.90 Y(3).Y(3).8 CALL MILNE(N,H,y,YD,INIT) 50 WRITE(61.100) I.Y(3(.Y(1),Y(2) 100 FORMATII5.F10,5,5E20.10) 200 FORMAT(10011TEST CASE END SUBROUTINE MILNE(N.H,Y.YD.INIT) DIMENSION Y(1).VD(1) DIMENSION WY1101,4),WYP(10l,4) C THE DIMENSION OF WY AND WYP MUST BE AT LEAST (N.1.4) EACH. IF(INIT)100,100,110 100 T4.1 NK.3 KKaO NP1.N1 YO(NP1)1. CALL DERIV(Y,YD) DO 2 I.1,NP1 WY(I,1)9Y(I) 2 WYP(I.l).YD(I) DO 5 Ja2,4 CALL RKO(N,M.Y,YD,INITI CALL DERIVIY.YD) DO 3 I.1.NP1

WY It,J)Y ( I) 3 WYD)I,J).YO(I) RETURN 5 CONTINUE IA.2 110 GO TO (5,6) IA 6 00 4 I1,NP1 4 Y( I1. WYII. 1). 4.. He( 2.. WYP (I.41- W7P(I,3)42.WYP(I,2)) /3. CALL DERIVIY,YD) DO 25 I.1.NP1 25 Y( I) WY( I. 3 ).H*(YD(1).4. *WYP(I.4)WYP(I.3) 1/3. CALL DERIV(Y,YD) DO 7 I1,NP1 DO 8 J1,3 WY) .J)WY(I.J.1) WYP( I,J).WYPI I,J1) WY(I,4)Y(I1 7 WYP)I,4).YD(I) K 00(W *1 IF(KK- NR)10.11.11 11 KK.O DO 12 Ial,NP1 S9WYP( I0). 3 .9WyP)I.2).3.4WYPII.3).WYP(I.4) 12 y (1)a(YIII.WY(I0).3..H05 /8.)/2. CALL DERIVIY.YD1 D O 15 I1,NP1 WY(I,4)Y(I) 15 WYPl1,4).YDII) 10 RETURN END SUBROUTINE RKG(N.H,Y,YD.INIT) DIMENSION Y( 1) .YD(1),AA14),BB(41.CC)4),0(101) IF JINIT)1.3.3

1 AA(1).0.5 SSORT (2.0) AÁ(2))2.S) /2.0 AA(3).12..S) /2.0 A4(4).1. /6. ßB(11.2.0 ßR(2).1.0 Bß(3).1.0 ß B(4)2.0 CC(I).AA(1) CC(2)AAA(2) CC(3)AAA(3) CC(4)AAA(1) INIT. INIT NP1.N.1 DC 2 I1.NP1 2 0(1).0.0 VD(NP1)a1.0 DO 5 J1.4 CALL DERIV)Y,(0) DO 4 I.1,NP1 TEMP.AAIJ) (YD(1)- Bp(J)01I)) W.Y(I) Y(I).Y(I).HATEMP TEMP.IY(I) W) /H 0(I140(I).3.0'TFMP- CC(J) *YDII1 4 CONTINUE 5 CONTINUE RETURN END SUBROUTINE. DERIV(Y,YD) DIMENSION Y(ó),Y)IS) YO(1)Y(2) YD(2). Y(1) RETURN END 64

053 ALGOL V0.0 TEST 09/28/68 0126 PARE 1 0 TEST *REGIN* tPROCEDUREtMILNE(N.H.Y.YD.INIT11 *REAL*HI - *INTEGER*]NIT,NI *REAL**ARRAY*YD,YS *8EGIN**REAI*S1 *INTEGER*J,I,NP1.KK,NK,IAi

*REAL**ARRAY*WVP (1 1 101,1 1 4) ,WY (1 1 101,1 t 4] i *SWITCH*SW105047 = F5.F6I 10 *IF*INTT*NCT GREATER*0*THEN**GO TO*F100*ELSE**GO TO*F1101

F100 1 IA = ll NK = 31 KK = OI NP1 = N41[ YD (NP1) = 1.01 DERIVIY,YO)1 *FOR*I = 1*STEP*1*UNTIL*NP1*DO*

*REGIN*WY (I,17 = Y (Il i

F2 t WYP [I.17 E YO 111 I 20+ *ENO*1 *FOR*J = 2*STEP*1*IINTTL*4*00* *BEGIN*RKG(N.H,Y,Y0.INIT)5 DERIV(Y,YD)I *FOR*I = 1*STEP*1*(1NTIL*NP1*00* c *BEGIN*WV [I,J1 Y [I1 I

F3 1 WYP II,J1 = YO (I] 5 *END*1 !00 TO*F99999I

F5 1 *ENO*1 3044 TA = 21

F110 1 *GO TO*SW105047 1IA40.51 1 F6 t *FOR*I = 1*STEP*1*UNTIL*NP1*D0* *B£GIN*F4 t Y (I] = WY (i,l] 4.0H(2.041WYP (I.4] -WYP (1.31 .2.0WYP 1I.21 1/34I *END*1 OERIV(Y,YO)5 *FOR*I = 1*STEP*1*(1NTTL*NP1*0O* *BEGIN*F25 1 Y [I1 = WY (I.37 H(YD (I] 4.04WYP (1,4] .WYP (T,3) 1/ 3.01 40 *END*5 DERIVIV,YD)1 *FOR*I = 1*STEP*1*1JNTTL*NP1*00* *BEGIN**FOR*J = 1*STEP*I*UNTIL*3*D0*

*REGIN*WY (I,J1 = WY (I,J611 i

FR 1 WYP [I,J1 E WYP (I,J1) 1 *END*1 o WY [I,4] Y (I] 1

F7 1 WYP (1,47 = YD [I) 1 *END*; 50 KK = KK.11 *IF*KK-NK*LE55*0*THEN**G0 TO*F10*ELSE**0O TO*F111

Fll 1 KK = 01 *FOR*T = 1*STEP*1*UNTIL*NP1*DO* .WYP [I,4] *BEGIN*5 = WYP (1,11 3.0WYP [T,2) 3.0WYP (I.31 1 F12 1 Y[I1 = IY II) *WY (T,11 .3.04845/8.01/2.01 *END*1 DERIV(Y.YD)I *FOR*I = 1*STEP*1*UNTTL*NP1*DO*

*RE(iIN*WY (I,4) = Y (I1 I 60 F15 1 WYP [I,41 = YO (I1 1 *END*1

F10 1 F99999 1 *END*; *PROCEDURF*R8GN,H,Y,YD,INIT)5 *REAL*Hi *INTEGE.R*TNITNI *REAL**ARRAY*YD,Y( lREGIN**REAL*W,TEMP,S[ *INTEGER*J,I.NP1]

*REAL**ARRAY*0 (1 t 1011 ,CC (1 t 41 .88 [1 t 4] .AA (1 t 4) 1 704 *IF*INIT*LESS*0*THEN**GO TO*F1*ELSE**80 TO*F31

F1 t AA I1] = 0.51 S = SORT(2.0)I AA I21 _ (2.0-5)/2.05 AA [31 = (2.0.51/2.01 AA (4) = 1.0/6.01 RR 111 = 2.01 RR (2) = 1.01

BB (3] E. 1.05 BR (41 5 2.01

804 CC (11 = AA (11 5

CC (2) = AA (21 I

CC [37 = AA (31 1

CC (4) = AA (17 1 INIT = -INIT-0.51 NP1 = 8.11 *FOR*I = 1*STEP*1*(JNTTL*NP1*DO* *REGIN*F2 t 0 (I) = NO; *END*; YO INP11 2 1.0; 90 F3 1 *FOR*J = 1*STEP*1*UNTIL*4*OO* *REGIN*DERIV(Y.YO)5 *FOR*I = 7*STEP*1*UNTIL*NP1*DO* *REGIN*TEMP = AA (J) *CIO (I) -88 (JI 0 (I] )1

W = Y [I] I Y [I] = Y [I) .HTEMPI TEMP = (Y [I] -W)/H5

0 [II = 0 [I1 .3.04TFMP-CC (J1 4Y0 (]l 1 F4 1 *END*;

FE 1 *END*1 100 *ENO*1 65

*PROCEOUREODERIV(Y.YD)1. AREAL* *ARRAY *YD.YI BEGIN YO (13 E Y (2) )

YD (2) 9 -Y (11 I *ENO *( *REOIN*FREALOMI *INTEGERFINIT.N.II

*REAL* ARRAY *YD (1 t 5) ,Y (1 i 51 1 110 I E 11 N E 21 M E 0.01745329521 Y (11 E 0.01 Y (21 2 1.0; Y (31 E 0.01 (NIT E -1 -0.51

MILNEIN.H.Y.YD.INIT) I OUTREAL(61.I11 CUTREAL(610 (3) )1 120 ** OUTREAL(41,Y (11 )1 O(ITREAL(61.Y (2) 11 FOR*I E 2*STEPt1 *UNTTLá90ADCt iBEGINiY (3) E Y (31 .HI MILNE(N.H.Y.YD.INIT)I

FSO I OUTREAL(61.I)1 OUTREAL(610 (3) 11 OUTREAL(A1.Y 111 )1 OUTREAL(61.Y (2) 11 *END" 130 ** AENDit *ENOti *EDP. FINIS GEN. BY ECD ON LU 00 (01) LINE 0001 PROGRAM BEGINS (01) LINE 0131 PROGRAM ENDS (01) LINE 0132 SOURCE DECK ENDS 66

3300 FORTRAN 053 VERSION 1.4 09/28/68 0005 PROGRAM TEST X 0.99 Dx 0.01 DO 20 I1,101 X X DX Y GAMMALN(X) 20 WRITE(61,1001 X.Y

100 FORMAT( F6.2,5X. F15.10 1 STOP END FUNCTION GAMMALN(X) DIMENSION C(6),A(51 IF(x) 20,20,21 20 WRITE(61,22) 22 FORMAT(8M GAMMALN) STOP 21 IFIx-.1)25,23.23 25 2.1.-X LT.0 GO TO 24 23 Z.X LT.1 24 C(11.12. C171.-360. C131.1260. C141.-1680. C(51.1188. C161.9189385332 PIE.3.1415926536 IFIZ-8.)2.10 1 01.1. 3 ZLALOGIZI T1.(Z-.5)1L-ZC161 Z2ZZ 02.2 DO 5 N1,5 A(N)1./IDZC(N)1 DZ0ZZ2 5 CONTINUE JJ.S SUM.O. DO 6 N1,5 SUM.SUMA(JJ) 6 JJ.JJ-1 ANS.SUMT1 IFIDt) 7,7.8 8 GAMMALN.ANS 10 RETURN 2 NN.(8.-21 NN.NN1 01.0. AN.NN V.Z.AN ZV GO TO 3 7 GAMV1. DO 9 J1,NN AJ.J GAMVGAMV(V-AJf 9 CONTINUE GAMyALOG(GAMV1 IF(LT)11,11.12 11 GAMMALN.ALOG(PTE/fSINF(PIF,X)11-(ANS-GAMY1 RETURN 12 GAMMALN.ANS-GAMY RETURN END 67

053 ALGOL V0.0 GAMMALN 09/28/68 0008 PAGE I O-GAMMALN #BEGIN# #REAL##PROCEOURE#GAMMALNIXII #REAL#XI #BEGIN##REAL#GAMY,AJ,nAMV,V.4N.ANS,SUM.DZ,Z2,T1,ZL.D1,PIE,ZI #INTEGER#J.NN,JJ,N.LTI #REAI##ARRAY#A (1 t 51 C E1 1 61 I #IF#X#NOT GREATER#0#THEN##GO TO#F20#ELSE##0C T00211 F20 I *GO TO#F99998( F21 t 3IF00.0.10LESS#D#THEN#sG0 T041,25#ELSE4#GO TO#F231

low F25 1 Z E 1.0-X1 LT ? 01 AGO TO#F241

F23 1 Z E X1 LT 3 11

F24 1 C E11 E 12.01 C (21 ° .360.01 C E31 E 1260.01 C E41 - -1680,01 C (51 E 1188.01 200 C (61 E 0.91893853321 PIE E 3.14159265361 #IF#Z-8,01LE5S#00THEN01GC TO#F2#ELSF##GC TC4F1I F1 101 E 1.01 F3 1 ZL E LN(Z)1

TI E (Z-0.5)ZL-Z.0 161 1 Z2 ? ZZI Dz 's Z1 3F0R#N = 1#STEP#1#11NTIL#50DC# #REOINSA (N1 E 1,0/(n2C (N1 11 30 07 3 0z721

F5 I sEND#1 JJ E 51 SUM _ 0.01 *FORAM E 1#STEP#10UNT1L#5#D0# #BEOIN#SIIM E SUM.A EJJ1 I .1J E J,1-1i

F6 1 #END#I ANS = SUM.T11 #IF11D1#N0T GREATER#0#THEN##G0 T0#F73ELSE00G0 T0081 40 F8 t GAMMALN E ANSI F10 I #G0 T00.999991 F2 I NN ? (8.0-7)0.51 NN E NN.11 01 E 0.01 AN E NNI V E Z.AN/ Z E Vi AGO TO#F31

F7 I GAMY E 101 50 #FOR#J E 1#STEP#1#UNTTL#NN#D0# #BEGTN#AJ E JI GAMV E GAMV(V-AJ)1

F9 1 #ENDlI GAMY E LN(GAMV)I #IF#LTSNOT GREATER#0#THEN##G0 TC#F110ELSE##GC TC#F121 F11 I GAMMALN E LN(PIF/(SINIPIEX)11-(ANSGAMY11 #GO TO#F999991

F12 1 GAMMALN E ANS-GAMY(

F99099 t sEND#I 60** #BEGIN##REAL)Y,OX,XI sINTEGER#II X E 0.991 Ox E 0.011 #FOR#I E 1#STEP#1#11NTTLS101sD0# #BEOIN#X E X.DX1 Y = GAMMALN(X)1 CUTREAL(61.X)I CUTRE4L(61,Y)1

F20 I #END#1 70** #ENO#I F99998 I#FND#I #EOP# FINIS (011 LINE 0001 PROGRAM BEGINS (011 LINE 0071 PROGRAM ENDS (01) LINE 0072 SOURCE DECK ENDS 68

3300 FORTRAN 0S3 VERSION 1.4 09/28/68 0008 PROGRAM TEST I -1 XO 0.0 X1 1.0 Y no REL 0.2

NP 1 CALL NEWTN(I.XO.X1.Y,REL.NP, WRTTE(61,100) Y

100 FORMAT( E2O.8 ) STOP END SUAROUTINE NEWTN(INIT.XO.XL.Y.REL.NP) C TO CONVERT FROM NEWT6 TO NEWTN. CHANGE THE CARDS WITH C COMMENTS. WHERE N.ORDER OF FORMULA DIMENSION HH(6).YBAR(101.RYR(10) IF(INIT)1,2,2 7 INIT INIT HH(1).19. HH(2).75. HH(3).50. NH(4).50. HH(5).75. HH(6(.19. 0.144. N0.5 ENG.NG COFFF.ENG /(2.D) 2 Y.O. XLGTH.XL -XO IF(XLGTH)201, 104.201 201 NPP.NP DO 103 K.1.10 Y.O. ANP.NP+NG H.XLGTH /ANP FF.00EFF.H XX0 CALL FCFX(X.FX) AREA.HH (I).FX DO 200 L.1,NP GO.N0 +(L -11 DO 100 J1.NG AJ.J X.XLGTH+( IGG.AJI /ANP).X0 CALL FCFX(X.FX) AREA.HH(J.1) +FX.AREA 100 CONTINUE Y.Y. AREA AREA.HH(NG.1)+Fx 200 CONTINUE V.FF +Y YBAR(K)Y TF(K- 1)104.104.144 144 RY8(K- 1).ABSF(YRARIK -1( -Y) IF( BYB (K- 1)- RELeABSF(Y)1105.105,104 104 NP.2 +NP 103 CONTINUE DO 108 L.1,10 REL2. +REL DO 107 0.2,10 IF( BYB( K. 1 1- RELàABSF(YRAR(K11)104,106.107 107 CONTINUE 108 CONTINUE 0.10 106 NP(2 + +(K- 11)+NPP YYBAR(K) 105 RETURN END SURROUTINE FCFX(X.FX) FX X RETURN END 69

0S3 ALGOL V0.0 NEWTN 09/28/611 0121 PAGE 0 NEWTN 1 *BEGIN* *PRCCEDURE*FOFX(X.FX)t *REAL*FX.Xi !REGINA FX _ XI *END*; *PROCEDURE*NEWTN(INIT,XO.XL.Y.REL.NP1t *REAL*REL.Y,XL,XC; *INTEGER*NP.INITI 10 *BEGIN**REAL*AJ,GG,ARFA.FX,X,FF.H,ANP,XLOTH.CCEFF.ENG,UI *INTEGER*J,L,K,NPP,NGt

*REAL**ARRAY*BYB (1 t 101 .YBAR (1 t 101 ,HH (1 t 61 I *IF*INIT*LESS*O*THEN**GC TC*F1*ELSE**GC TC*F2; F1 1 INIT 3 -INITi HH (11 = 19.01 HH (2) 'v 75.01 HH 131 3 50.01 HH (47 2 50.01 HH (51 5 75.01 204 HH (61 8 1901 o E 144.01 NG ? Si ENG = NGI CCEFF _ ENG/12.0011 F2 t Y 3 0.01 XLGTH 2 XL-X0; *IF*XLGTH*NCT EOIJAL*0*THEN**GO TO*F201*ELSE**GC TO*F105;

F201 t NPP = NP; *FCR*K 9 1*STEP*1*UNTTL*10*DC* 304 *REGIN*Y g 0.0; ANP - NPNG; H = XLGTH/ANPI FF ? CCEFF4H1 X ? XC1 FCFXIX.FX)I AREA = HH (1) FXI *FORM_ _ i*STEPfI*l1NTTL*NP*OCA *REGIN*GG 9 NG{L-1); *FCR*J ? 1fSTEPf1fI1NTTL*NG*DC* 40 *BEGIN*AJ ? Ji X ° XLGTH4((GG.AJI/ANPI.XC1 F^FX(X,FX1t AREA _ HH (J1) FX.AREAI

F100 t *END*; Y E Y.AREA; AREA ? HH (NG.1) FX;

F200 i fEND*I Y _ FFY; YBAR IK1 5 YI 50 *IF*K-1*NCT GREATER*0*THEN**GC TC*F104fELSE**GC TO*F144; F144 t BYR [K-11 ? ARS(YRAR [K-11 -Yi; *IF*BYR (K-11 -RELAR5(Y)*NCT GREATER*0*THEN**GC TO*F1U5*ELSE**GC TO* F104;

F104 I NP _ 211NPI

F103 1 *END*; *FCR*L 9 1fSTEP*1*UNTTL*10*0C* *REGIN*REL. = 2.0RELI *FCR*K 5 2fSTEP*1*UNTTL*10fDC* *BEGIN3*IF*BYB [K-11 -RELABSIYRAR (K1 1010T GREATER*0*THEN**GC TC*F106 60 *ELSE*fGC TC*F107i

F107 I KENO*, F108 I *ENO*; K ? 101

F106 t NP ? 12*PCWER*1K-1))NPP;

Y ? YBAR (K] i

F105 I *vNOfi *REG05 IN**RFAL*REL,Y,XI.XC; *INTEGER*NP.It

I E 411 70 XO 5 0.01 X1 a 1.01 Y 3 0.01 REL _ 0.2; NP _ 11 NEWTN(I0XC.X1Y.REL.NP)1 OUTREAL161,Y)t *END*; *END*; *EDP* BOae FINIS (011 LINE 0001 PROGRAM BEGINS loll LINE 0078 PROGRAM ENDS 1011 LINE 0079 SOURCE DECK ENDS 70

3300 FORTRAN 053 VERSION 1.4 09/27/68 2350 PROGRAM TEST DIMENSION A(25.25)0(25.25)4(25.25) COMMON A2B11C 1 REA0(60.100) N DO 25 I.1.N DO 2S J61.N A(I.J) 1.0 /(I,J 1) IF(I -J) 15.10.15 10 B(I.I) 1.0 GO TO 25 15 8(I.J) 0.0 25 CONTINUE M . N CALL GERIAC(N.N.2.A.8.C) GO TO 1

100 FORMAT( I2 )

200 FORMAT( 2F24.6 ) END SUBROUTINE OERIAC(N,M.IS,ORIOA,ORIGB,XN) C GAUSSIAN ELIMINATION WITH ROW INTERCHANGE AND CORRECTIONS DIMENSION A( 25 ,25).8125,251,X(25,251,INT(25) DIMENSION ORIGAI25 ,251,ORIGB(25.2S1,XN125,25) 71 MANY2 DO 1 I1,N D 2 JON 2 OA(I,J) DO 1 J1.M 1 B (1,J).ORIGB(I,J) LIT1.4HX( LIT2.4H, LIT3.4H). S00 FORMAT(1X,28H A DIAGONAL ELEMENT VANISHES) 502 FORMAT (4(2X,A3.12,A1,I2.A2,E1A.9 1) 504 FORMAT124HIAVERAOE RELATIVE ERROR..E10.31 505 FORMAT (24H MAXIMUM RELATIVE ERROR,E10.31 C SINGLE PRECISION GAUSSIAN ELIMINATION AND RECORDING OF TRANSFORMAT DO 20 L1.N

I NT(L)0 KP.O GO TO (16,11),IS 11 Z0.0 DO 13 K L,N TZABSF(A(K.L)1 IF(ZTZ)12,13,13 12 2T7 KPK 13 CONTINUE IFIL- KP)14,16,16 14 INT(L)KP DO 15 JL,N Z.A(L,J) A1L,J1A(KP,J) 15 A(KP,J)Z 16 IF(A(L,L))17,21,17 21 PRINT 500 STOP 17 IF(L.N118,22,22 l8 LPI.L.1 DO 20 KLPI,N RATIO.A(K,L) /A(L,L) A(K,L )RATIO DO 19 J4LP1,N 19 A(K,J1A(K,J1RATIOA(L.J1 20 CONTINUE 22 CONTINUE C ITERATE TO CORRECT SOLUTION BY USING RESIDUALS DO 90 ITERATE1,MANY IF(ITERATE1)50.50,70 C COMPUTE RESIDUAL ARRAY 70 DO 71 J1.M DO 71 I.1,N TEMP 0.0 DO 100 K :1,N 100 TEMP TEMP ORIGA(I.K1XN1K,J) 71 R(I,J) CRI08(I,J) TEMP C PERFORM TRANSFORMATION ON ARRAY OF CONSTANTS 50 DO 56 0.101 KP.INT(L) IFIEP)53,53,51 51 DO 52 J1,M ZR(KPJ) 8(KP,J)8(L,J) 52 B(L,J)Z S3 LP1L.1 DO 56 K..LP1,N RATIOA(K,L1 IF(RATIO154,56,54 54 DO 55 JI,M 55 R(K,J)8(K.J)- RATIO11(L.J1 56 CONTINUE C COMPUTE SOLUTION BY BACK SUBSTITUTION DO 63 I1,N IIN.1 -I DO 63 J1,M S0.0 IF(II- N)61,63,63 61 IIP1II.1 DO 62 KIIP1,N 62 SS.A(II,K)X(K,J) 63 X(II,J0(B(II.J)- S) /A(II.11) C ADD CORRECTIONS AND PRINT RESULTS AV.O REMAX.0.0 IF(ITERATE- 1)BI.91,83 81 DC 82 I 1,N DO 82 J 81.M 82 XNII.J)X(I,J) GO TO 90 R3 DO 84 1I,N DO 84 JI,M TEMPI.XN(I,J) TEMP2X(1,J) IF(TEMP1)835,842B35 835 TEMP31ABSFITEMP8 /TEMPI) IF(REMAXTEMP31836,837,837 836 REMAX.TEMP 3 837 AVAVTEMP3 84 XN(I,J18TEMPI.TEMP2 TEMPI.MN AVAV /TEMPI PRINT 504,AV PRINT 505, REMAR 86 DO 87 J1,M 87 PRINT 502, (LIT1,I,LIT2,J,LIT311XN(I.J1. L1.N( 90 CONTINUE END 72

053 ALGOL V0.0 TEST 09/27/68 2350 PAGE 0 TEST 1 *BEGIN* sPRCCEDURESGERIAC(N.MOS.ORIGA,ORIGB.XN)1 lINTEGER*IS.M.N; *REALS*ARRAYOXN,ORIGB.CRIOAI *BEGIN*OREALOTEMP3sTEMP2,TEMPI.REMAX.AV.S.TEMP.RATIC,TZ,Z1 sINTEGER01IPl.1I.ITERATE,LP1sK,KP.L,J.I.MANY1

*REALS*ARRAY*X 1 tl 25,1 t .8 (1 1 I t 251 25.1 251 ,A (1 25.1 I 25] 1 *INTEGER*fARRAYSINT ti 1 251 I *SWITCNSSW105021 E F1A.F131 104 MANY E 21 iFCR*I E 1*STEP*1*UNT1L*NS00* tBEGINSSFCRtJ E IFSTEP01sUNTIL*N*DO* *BEGIN*F2 t A (I.J) E CRIGA (I.J] 1 *END*; *FOR*J E Io?STEP*1*UNTTL*M*DC0

*REGIN*F1 t B (I,JI 2 CRIGR (I.J] 1 FENDEI *END*; sFCRSL E 1*STEP01*UNTTL*N*DO* 20 *BEGIN*INT (L] E 01 KP 5 01

*GC TO115W105021 (IS-0.5I I F11 1 2 E 0.01 sFORSK E L*STEPFSFUNTTL*N0D0* SBEGIN*TZ E ABS(A (K.(.) )i *iFSZTZSLESSSOFTHENOSGC TCFF12*ELSE**G0 T00F13I FI2 1 Z S TZ1 KP E KI

F13 1 OENOFI 30 FIF*L-KPFLESSSOSTHEN**GO TO*F14SELSFS*GC TOtF161 F14 t INT (U B KPI *FOR*J 2 0STEPSl*t1NTTL*N*D06

*BEGINFZ E A EL,J] I A (L.J] 2 A IKP.J1 1 F15 t A tKP.J] E Z; *ENDS; F16 1 BIFFA (L,L] FN07 EOUAL*OSTHEN*sGC TOSF17FELSE#*G0 TCFF211 F2110UTPt1T161.61ss(0 A DIAGONAL ELEMENT VANISHES *)**)*)I 000 TOS F99998; 40 F17 t*IFSL-NFLESS*OSTHENOFG0 TOFFIA*ELSEO*GC TOiF221 F18 I LP1 E L11 *FOR*K E LPIOSTEP*1sUNT]LNDO*

*BEG1N*RAT1O 2 A IK.L1 /A ILO.) I A (K.L] E RATIO; FOR*J E LPIFSTEP*1sUNTILFNSDOs I A (K.J3 *BEGINSFI9 2 A (K.J) -RATIOA (L.J) / *ENO*;

F20 I *ENDO; SENDFI 5044 F22 t OFOR*ITERATE 2 1F5TEPF1sUNTILFMANY0CF *BEGINisIFOITERATE-1*NCT GREATERF0FTHENS*GO TOSF50FELSEF*GC TOFF70; F70 t SFORFJ 2 IiSTEPS1sUNTIL*M*DCF FBEGINS*FOR*I 2 1FSTEPS1sUNTIL*N*00s *BEGINOTEMP E 0.01 *FCRFK E 1*STEP*1*UNTTLFN*00*

OBEGIN*F100 1 A TEMP TEMP.ORiGA (I.KI XN tK.J] 1 END I

F71 t R tl.Jl 2 ORIGR (I,J1 -TEMPI SENDS; 6044 *ENDS; F50 I *FOOL E 1sSTEPt1sUNTILFNFDCF

*REGIN*KP S INT (L1 I *IF*KPFNOT GREATER*O*THENStGC TOFF53tEL5EF*GO TO*F51I F51 1 tFOROJ 2 IFSTEP*1*UNTILFM*DC* FBEGINOZ E B IKP.J1 I

B IKP.J1 E B (L.J] I F52 I 8 tL,J1 5 Z; *END*I

F53 1 LP1 2 Loll 70 FOR*K E LPIFSTEP*1FUNTILFNFDO*

FBEGIN*RATIO E A (K,L1 I *IFORATIOSNOT EOUALS0FTHEN**00 TO*F54FEL5E**GO TC*F561 F54 t *FOR*J 2 1FSTEP0I*UNTILSMSD0F

FBEGIN*F55 I B (K.J) E 8(K.J] -RATICR (L.J] I *ENDO;

F56 t *END*I *ENO*I FFORFI E 105TEPS1*UNTTLtN*DC* sREGIN*(I E N1-I1 B044 OFCRFJ 3 1SSTEP*1*UNTTL*MF00s IBEGINtS 2 0.01 tIFFI1-NFLESSS03TMEN*FGO T^viF61*ELSF*46GC TO0F63I F61 t IIP1 E 11.11 *FOR*K E IIP1FSTEPF1*UNTILONFDCs *BEGINFF62 I S 4X 5 S*A ZI.K1 (K.J) 1 *END*; F63 t X (II.J] 18 E (II.J] -5)/A (II.II] I *END*; *ENO*I 90 AV 2 01 REMAX 2 0.01 0IFOITERATE1*NCT GREATER*O*TMEN**00 TC*FB10ELSERiGO TO*FB31 FB1 t FFOR*I E lFSTEP*1*UNTILFN*00* - *BEGINFtFOROJ S 1s5TEP*IFUNTIL*M*DO* I XN 08EGIN*F82 (I.J1 E X (1,J1 1 sENDFI IENOFI F00 TOFF90I 73

F83 1 OFORMI 5 10STEP*10UNTILtNdDOi 1004c MREGINiOFOROJ 8 1dSTEpd13UNTIL*M00O*

OBEGIN#TEMPI ? XN tI,J1 I

TEMP2 5 X tI,J1 i *IFdTEMP1#NOT EOUALMO*THENOaGO TO#FR35dFlSEM*GO TOiF84i F835 I TEMP3 5 ABSITEMP2/TEMP1); MIFtREMAX.TEMP3tLES5O0#THEN**GO TOMF836OELSEOMGO TO#F8371 F836 I REMAX 5 TEMP3I F837 í 4V 5 AV.TEMP3I

F84 i XN tI,J] 5 TEMP1TEMP24 MENOMI 11044 *ENDOI TEMPI 5 MANI AV E AV/TEMP11 OUTPUT(61,i(02B,*IdAVFRAGE RELATIVE ERRORi)#.0.900.300)i,AV)I OUTPUTI61,*102B,41MMAXIMUM RELATIVE CORD F86 t MFOROJ ? 1dSTEPd1iUNTILOM#D0i iREGIN*FR7t#FORdIB1tSTEPdifUNTIL0Ni0O0#REGIN# O1ITPUT161,1102B,ZZDr3R,ZZD.38..0.90i3Di10,I,J,XNtI.J111 iENOd4 *ENDS'

120" F90 I OENDMi OENDOI *REGIN*MINTEGERMM,Jrt.N;

t dREALidARRA70C (1 25,1 t .8 t1 t t (1 t 251 25,1 251 Of 25,1 t 251 I F1 I INREALI60.N)1 *FORO/ 5 IOSTEPt101JNTTL0N000d iBEGINdiFOROJ 5 1dSTEPd1iUNTILON0000 O REGINOA tl,Jl 5 1.0/(IJ-lli OIFOI-JONOT EOUAL000TNEN0d00 TO*F15iELSEd*GO TO0101 F10 t B tT,I1 5 1.01 13044 *GO T00251 FIS 1 R tI,JI ? 0.0;

F25 t IENDOI dENDiI M 5 NI GERIACINrN,2,ArB,CI1 * GO TOOFIi MENDS; F99998 t*ENDOI OEOPM 14044 FINIS 1011 LINE 0001 PROGRAM BEGINS (011 LINE 0138 PROGRAM ENDS (O11 LINE 0139 SOURCF DECK ENOS 74

3300 FORTRAN 053 VFRSICN 1.4 09/27/68 2333 PROGRAM TESTGASN INIT-1 X0.0 XL.4 REL..00001 NP10 CALL GAUSSN(INIT,XC,XL.Y,REL.NP) WRITE (61,100) Y .100 FORMAT (F14.6) END SUBROUTINE GAUSSN(INIT,XO,XL.Y.RELNP) DIMENSION AA(16),HH116),YBAR(101,BYB(10) IF(INIT)1,1,2 1 INIT -INIT AA(11 -.989400935 AA(2) -,944574023 8413) -.865631202 8414) -.755404406 A4(5) -.617876244 AA(6) -.458016778 AA171 -.281603551 84(8) .095012510 AA(9) -AA18) A4(10) -AA(?) AA111) _ -AA(6) AA(12) -AA(5) AA(13) -48141 A41141 -A4131 A4(15) _ -48(2) AA(16) -48(1) HH(1) .027152459 NH12) ,062253524 HH131 .09515B512 44141 .124629071 HH(5) .149595089 HH(6) _ .169156519 HH(7) .182603415 HH(A) .189450610 HH191 HH(8) HH(10) HH17) HH111) HH16) HH(12) = HH(5) HH(13) HH(4) HH(14) HH(3) HH115) HH(2) HH(16) HH11) NG 16 2 Y = O. %LOTH XL-X0 IF(XLGTH)201.105,201 201 NPP=NP DO 103 K = 1.10 y=0, END NP DO 200 L 1,NP AREA O. AL L X1PX2 12,0AL-1.tXLGTH/ENP 20010 x2Mx1 XLGTH/ENP 00 100 J 1,NG X 1%1PX2 AA(J) 82MX11/2. CALL FOFX(X,FX) 100 AREA=AREAHHIJIéFX Y Y AREA 200 CONTINUE Y XLGTH/(2.ENP)Y 'MAROC) Y IF1K-1)104,104,144 144 87B1K-11 = A135F(YBAR(K-1) -Y) IFIB7BI811 -RELABSFIYI)105,105,104 104 NP 241NP 103 CONTINUE DO 108 L . 1.10 REL 2.0REL DO 107 K 2,10 IF(R7)3(6-1l -RELABSF(YBARIK1)1106,106.107 107 CONTINUE 108 CONTINUE K 10 106 NP 121K-1)1 NPP Y YBAR(K) 105 RETURN

S1ROUTINE FCFX (X,F%) FX. SORT(1.SORTfX1l RETURN END 75

033 ALGOL V0.0 TESTßASN 09/27/68 2345 PAGE 1. 04 TESTOASN *BEGIN* IPRCCEOURE*GAUSSN(INTT.XC.XL.Y.REL.NP)i *REALlREI.Y.XL.X01 *)NTEGER*NP.INITI *BEGI41**REAL*FX.X.X2MX1.X1PX2.AL.AREA.ENP.XLGTH; *INTEOER*J.L.K.NPP.NGi

*REAL!*4RRAY*BYB (1 t t1 i 101 .YBAR i 101 .HH (1 161 .A4 (1 t 161 I *IF*INIT*NCT GREATER*0lTHENPlGO.TC*FIPELSE**GC TCSF2Í FI i INIT E -INIT-0.51 10w AA (13 E -0.989400935I AA (21 B -0.9445750231 AA t31 E -0.865631202; AA (4) E .0.7554044061 AA [51 B .0.6178762441 AA (61 E -0.4580167781 AA (71 B -0.2816035511 AA (8) E .0.0950125101

AA [91 = .AA (83 I AA (101 = .AA [T1 20 AA (111 E -AA [61 AA (121 = -AA (51 AA t131 E -AA 141 AA (14) E -AA (31 AA (15) 2 -AA (21 AA (16) - -AA (1) HH (11 E 0.027152458; NM (21 E 0.0622535241 HM (31 E 0.095158512; HH (41 2 0.1246289711 3044 MM (51 E 0.149595989; HH (6) E 01691565191 MU (71 E 0.1826034151 MM [8) E 0.1894506101

HH (9) E HH (8) 1 HH (101 2 HH (7) HH (11) = HH (6) HH [121 E HH [5) HH (131 = HH (41 MH (141 E MH (31 404 HM (153 = HH (2) HM (16) E HM (1) NG E 161

F2 I Y E 0.01 )(LOTH E XL20; *IF*XLGTH*NCT EOUALlO*THEN**OC T0*F201*ELSE**GC TC*F1051 F201 1 NPP E NPI *FOR*K E 1*STEP*1*UNTtL*10*0C* *BEGIN*Y E 0.01 ENP E NPI 50 *FOR=L E 1*STEP*1*UNTTL*NPP00* IBEGIN*ARE4 B 0.01 AL E L: XIPX2 E (2.06AL-1.0)XLGTH/ENP.2.0X01 X2M41 E XLOTH/ENPI *£OR*J E 1*STEP*1*UNTjL*NG*00* *BEßIN*x 5 (X1PX2.AA [J1 4X2MX1)/2.0i FCFX(X.FX)i F300 I AREA E AREAHH (JI FXI *END*; 60 Y E Y.AREAi

F200 1 *END*; Y E XLGTN/12.0ENP)67; YBAR (K3 2 YI *IF*K-1*NCT GREATERPO*T)4EN*!GO TC*F104*ELSE**G0 T0PF144I F144 I 8YR (K-1) E ARSIYBAR (8.17 -Y)i *IFlBYR (K-11 -RELAR5(Y)*NCT GREATER*0*THENP000 T0*F105*ELSES000 TC* F104;

F104 I NP B 2NP1 F103 1 PEND*: 704 *FOR*L E 1*STEP01*UNT1L*10*00* *BEGIN*REL B 2.011REL1 *FOR*K =_ 2*STEP*1*UNTiL*10*0C! 01E0IN**1F0YB (K-1) -REL4ABStYRAR tK) 1*N0T GREATER*O*TNEN!*GO T0*F106 *ELSE**OC T0*F107; F107 1 *END$;

F108 I *END$; K E 101 F106 1 NP E (2PPOWER*1K11)4NPPI Y E YBAR (K1 i 8040 F105 t *END*; PPRCCEOURE*FOFX(X.FX)1 lREAL*FX.Xi *BEGIN* FX c SORT(14SGRT(X)); *END*: lBEGIN!*REAL*Y.REL.XL.XC; *INTEGERlNP.INIT; INIT s.-1-0.5( X0 = 0; 904) XL E 41 REL E 0.000011 NP E 101 OAUSSNIINIT.XO.XL.Y.RFL.NP); CUTREAL(61.Y)I *END*; END *EDP* FINIS GEN. RY EDO ON LL) 08 (011 LINE 0001 PROGRAM BEGINS (01) LINE 0096 PROGRAM ENDS (01) LINE 0097 SOURCE DECK ENDS 3300 FORTRAN OS3 VERSION 1.4 09/27/68 2355 PROGRAM TEST2 76 DIMENSION A(4),X(3) A(11 1 A(2) 6 A(3).3 A(41. -10 MTYPE.O CALL VIETA (A.X,MTYPE) WRITE 161.1001 (X(11.141.3) 100 FORMAT(4F10,41 END SUBROUTINE VIETA(A,Y,NTYPE) C C2 UCSD VISTA C EXPLICIT SOLUTION OF THE GENERAL CUBIC EQUATION DIMENSION A(41,R(3).Y(31 Rti).A(2) /A(1) 810V3Bt1) /3.0 8121 A(31 /All) B(3) A(4) /A(1) ALF.8(2)- BI1)810V3 BET .2.OeM10V3.3- B(2) *B10V3.B(31 RETOV2BET /2.0 ALFOV3ALF /3.0 CUAOV34ALF0V3463 SQROV24BETOV24.2 DEL.SOBOV2.CUAOV3 IFIDEL)40.20.30 20 MTYPE.O GAM 4SORTt- ALFOV3) IF(RET)22,22.21, 21 Y(1)..2.0.OAM-810V3 V 21.GAM -810V3 Y(3).Y(2) GO TO 50 22 Y(11.2.0*GAM -810V3 Y12). ..GAM -810V3 Y(3).Y(2) GO TO SO 30 MTYPE1 EPS.SORTF(DEL) TAt1.- BETOV2

R. CU BERTF I TAU. EPS1 S.CUBERTF(TAU -EPS) Y(1).RS -B10V3 Y(2).- IR.S1 /2.0 -R10V3 Y(3).0.866025404(R -S) GO TC 50 40 MTYPE. -1 QUOT.SQBOV2 /CUAnV3 ROOT.SQRTF( -QUOT) IF)RET142,41.41 41 PMI40.5707963.e51NF (ROOT)) /3,0 GO TO 43 42 PHI.ACOSFIROOT) /3.0 43 FACT.2.04SQRTF(- ALF0V31

Y(11.FACTMCOSF)PMI C -B10V3 Y(21.FACTCOSF(pHI.2.09439511 -810V3 Y( 3) .FACTCOSF(PHI.4.18879021 -810V3 S0 RETURN END FUNCTION CUBERTF (X) IF(X)2.3,4 2 X. -X CUBERTF- X.3333333333 RETURN 3 CURERTF40. RETURN 4 CUAERTF.X *e.3333333333 RETURN END FUNCTION ACOSF(X) IF(ABS(X).GT.1) GO TO 1 ACOSF.ATANF(SQRT( I.XX1 /11 RETURN 1 STOP RETURN END FUNCTION AS/NF(X)

IF(ABSIX).07.1) GO TO 1 ASINF.ATANF(X /SQRT(1 XX)1 RETURN 1 STOP RETURN END 053 ALGOL V0.0 TEST? 09/28/68 0003 PAGE 1 77 0** TEST2 *BEGIN* *PRCCEDURE.*VIETA(A,Y,MTYPE)1 *INTEGER*MTYPEI *REAL**ARRAY*Y.AI *REGIN**RFAL*FACT.PHT.ROOT,000T.S.R,TAU,EPS.GAM,DEL,S080V2,CUADV3.ALFOV7 .BETOV2.RET.ALF.810V31

*REAL**ARRAY*B Cl t 31 1

R (I] E A (21 /A I31 1 RIOV3 E R (11 /3,01

10** B(2] E A I31 /A (11 1

8 I31 3 A (4] /A (11 1 ALF 5 8 (2] .B (11 *BIOV31

BET E 2.0*810V3*POWER03.B (2] *810V3.8 (31 1 BETOV2 ? BET/2.01 4LF0V3 E ALF/3.01 CUA0V3 E ALF0V3*PCWER*31 S080V2 E RET0V2*POWER*21 DEL 8 SO8OV2.CUAOV31 *IF*DEL*LESStO*THEN**00 TO*F40*ELSE**IF*DEL*0*THEN**G0 TC*F20*ELSE* 20** *GO TO*F301

F20 1 MTYPE _ 01 GAM E SORT(-ALFOV3)1 *IF*BET*NOT GREATERtO*THEN**G0 TC*F22*ELSE**G0 T0*F21;

F21 t Y (1] E .2.0*GAM-B10V31 Y (21 _ GAM-8101/3;

Y (3] E Y (21 1 *GO TO*F501

F22 t Y (1] E 2.0*GAM-810V31 Y (21 = -GAM.R10V3;

30* Y (31 E Y (2] 1 *GC TC*F501

F30 t MTYPE : 11 FPS _ SORT(DEL11

TAU = -RETOV21 - R E CUBERTF(TAU.EPS);

S -' CUBERTF(TAUEPS)1 Y (11 E R'S-810V3; Y (21 -.(RS)/2.0RI0V31 Y (31 E 0.86602540*(R-S)1 40* *GO TC*F501

F40 t MTYPE E -1-0.51 QUOT è S080V2/CUA0V31 ROOT E SQRTIQUOT)I *IF*BET*LES5*0*THENR*C,O TO*F42*FLSE**00 TCiF411 F41 1 PHI 3 11.5707961.ASINF(ROCT)l/3.01 *GO TO*F431

F42 i PHI E ACOSF(ROOT)/3.01

F43 t FACT E 2.0*SQRTÍALFOV3)( Y (I] E FACT*COSIPHII-810V31 50** Y [2] E FACT*CCS(PHI.2.09439511810V31 Y 131 E FACT*C05(PHI.4.1887902)-810V31

F50 t *END*; *REAL**PROCEDURE*CUBERTF(X)1 *REAL*XI *BEGIN* *IF*X*LE55*0*THEN**G0 TO*F2*ELSE**t1(*X*0*THEN**GC TO*F3*ELSE**G.^, TO*F41

F2 t x E -X i CUBERTF E -X*POWER*0.3333333333; *00 T0*F999991 60* F3 t CUBERTF E 0.01 *GO TO*F999991

F4 1 CUBERTF ? X*POWER*0.33333333331

F99999 t *END*! *REAL**PROCEDURE*ASINF(X); *REAL*XI *BEGIN* *IF*ARS(X)*GREATER*1*THEN**G0 TO*F11 ASINF 3 ARCTAN(X/SORT(1X*X)11

Fl t *END*; 70** *REAL**PROCEDURE*ACOSF(X)I *REAL*XI *BEGIN* *IF*ARSIXI*GREATER*1*THEN**G0 TC*F1I ACOSF ? ARCTAN(SQRT(1.X*X)/X)i

F1 t *END*; *BEGIN**INTEGER*I.MTYPE;

*REAL**ARRAY*X (1 t 31 A (1 t 4] 1 A (1] E l; A (2] 5 6; 80** A (31 2 31 A (41 e .101 MTYPE E 01 VIETA(A,X,MTYPE)1 *FOR*I ? 1*STEP*1*UNT1L*3300**BEGIN*CUTREAL(61,X (II )1 *END*; *END*1 F99998 t*END*1 *EOP* FINIS GEN. ny EOD ON LU 08 (01) LINE 0001 PROGRAM BEGINS 1011 LINE 0087 PROGRAM ENDS (011 LINE 0088 SOURCE DECK ENDS 78

APPENDIX 2

USERS GUIDE 79

APPENDIX 2

USERS GUIDE

The translator requires two files with .. logical unit numbers 54 and 55, The translator can operate in both batch and teletype modes.

The input stream is on unit 60; the output stream is on unit 61 and a user selected file if desired.

The control cards needed to run the translator are, assuming that the translator binary decks are on unit 53, an ALGOL source program is wanted on logical unit seven and the FORTRAN program is to be read by the card reader:

7 JOB 8

7 EQUIP, 7 = FILE 8

7 EQUIP, 53 = Translator binary decks 8

7 EQUIP, 54 = FILE 8

7 EQUIP, 55 = FILE 8

7 LOAD, 53 8 RUN

7 FORTRAN source deck headed by a program card FINIS 80

The translator will list the FORTRAN program, the ALGOL program and any diagnostics on logical unit 61 and list the ALGOL source program on logical unit 7. The program on logical unit 7 is ready to be compiled and run, providing that the data is properly set up. The data must be separated either by blanks or by commas. The optional control card for the translator gives the alternate file upon which you wish to write the ALGOL source program. The optional file number can appear anywhere on the card, and if the alternate file is not wanted, one may delete this card. If the input stream is from a teletype, the user may delete the line that he has just typed by placing a less than symbol on the line. The READCARD routine searches for this symbol, and if it finds it, it deletes the entire line.

The following restrictions have had to be imposed on the

FORTRAN language to make it compatible with ALGOL.

Reserved Words

1. The following words are reserved for use of the translator.

These words must be followed by a blank for proper translation.

PROGRAM READ SUBROUTINE WRITE FUNCTION READ INPUT TAPE ENTRY WRITE INPUT TAPE EXTERNAL READ TAPE 81

CALL WRITE TAPE RETURN BUFFER IN REAL BUFFER OUT INTEGER PRINT TYPE PUNCH LOGICAL ENDFILE DIMENSION REWIND COMMON BACKSPACE EQUIVALENCE ENCODE DATA DECODE GO TO END IF BLOCK DO ENDBLOCK CONTINUE CHARACTER PAUSE STOP

The names of the routines in the FORTRAN library are also reserved words.

Type Statements

2. No type character or type other constants, variables, or arrays are permitted.

3. Logical variables must be declared with a type logical statement.

Masking Operations

4. The masking operators, OR, AND, NOT and EOR (exclusive or) are not supported. 82

Common

5. Common variables must agree in type and kind.

6. Arrays in common must agree as to the number of subscripts.

7. Common variables must have the same alignment.

8. The declarations of the array in the referenced program must cover all components called for in the course of the subprogram.

Equivalence

9. The elements in an equivalence group must be of the same kind and type.

10. The arrays in an equivalence group must have the same align- ment.

11. Arrays are equivalenced by name only. Any reference to a sub- script is an error.

12. All arrays in an equivalence group must have the same number of subscripts.

13. Multiple references to variables is prohibited.

Data

14. Any data statement with implied do loops will be translated into an input statement. The constants must be read .. in at run time.

15. The structure of the variable determines the structure of the constant. 83

Computed Goto

16. The value of the arithmetic expression must be an integer within the range of the computed go to statement.

Entry

17. No alternate entries into subprograms are allowed.

Fortdump

18. Fortdump is not permitted.

Segment and Overlay

19. Segmenting and Overlaying of programs is not permitted.

Input/Output

20. The commands READ INPUT TAPE, WRITE INPUT TAPE,

BUFFER IN, BUFFER OUT, ENCODE and DECODE are not allowed.

Fortran Library Subprograms

21. The following library subprograms are not supported by the translator.

SLITE (i) set sense light i SLITET (i, j) test sense light i SSWTCH (i, j) test sense switch i DVCHK (i) check divide fault EXFLT (i) check exponent fault 84 OVERFLF check overflow fault UNITST (i, j) test status of unit i OVERLAY (o, s, i) load and execute overlay SEGMENT (o, x, i) load and execute segment FORTDUMP (b, e, m, d) system dump routine FLOAT (I) integer to real conversion FLOATF (I) integer to real conversion SLITEF (I) set sense light i SLITETF (i) test sense light i SSWTCHF (i) test sense switch i DVCHKF check divide fault EXFLF (i) check exponent fault OVERFLF (i) check overflow fault UNITSTF test status of unit i LENGTHF (i) number of words read from unit i NOT (a) AND (a, b) integer masking functions OR (a, b) FOR (a, b) Subroutine

22, The number of subscripts of an array in the actual parameter list must agree with the number of subscripts of an array in the corresponding formal parameter list. The translator issues the following error messages. The error message is printed immediately below the erroneous line,

The translator deletes the erroneous statement and continues with the next statement, 85

The message,ILLEGAL VARIABLE, is issued whenever a character or type other variable is used, and whenever an integer variable is used as a logical unit number in an input /output statement.

ILLEGAL SUBSCRIPTING means that one is attempting to use a sub - scripted array in an equivalence group. The message, ILLEGAL

SUBROUTINE, means that one has made a call to a FORTRAN library subprogram that is not supported by ALGOL. The proper corrective action is to either delete the call or write the library subprogram into your program.

The error message, UNSUBSCRIPTED ARRAY, means that one is attempting to use an unsubscripted array in an input /output statement or a data statement. This can be corrected by using implied do loops with the array. The message, DELETED STATEMENT, indicates that the cur- rent line was deleted. This occurs if one attempts to use an unsup- ported FORTRAN statement. The message, ILLEGAL CONSTANT, is issued whenever a character or octal constant is encountered.

The error message, EQUIVALENCE ERROR, indicates that the elements in an equivalence group have different attributes.

This could lead to faulty code since the attribute of the equivalence group is determined by the first element. The message, TOO MANY

ENDS, means that there are more end statements than begin state- ments. This occurs if the pseudo- FORTRAN statement ENDBLOCK 86 is used without using the corresponding BLOCK statement.

The error message, UNCORRECTABLE EQUIVALENCE

ERROR, means that one has created an equivalence group that can- not be translated into error -free ALGOL. This is an uncorrectable condition, and the translator terminates. The message,ILLEGAL REPETITION FACTOR, occurs whenever a repetition factor is placed in a data statement. This is corrected by itemizing the data state- ment or by reading the data in at run time. 87

APPENDIX 3

FLOWCHARTS 88

APPENDIX 3

FLOWCHARTS

The detailed flowcharts of each program module have been arranged in alphabetical order by pass except when there is more than one module per page. The program flow is from left to right and from the top to the bottom of the page. Arrows indicate any deviation from this norm.

In order to provide a closer correlation between the source code and the flowcharts, program labels enclosed in parenthesis have been inserted into the flowcharts at the appropriate points. The symbol means either the contents of a register or quantity on the left is to be stored at the address on the right. If the quantity on the left is the name of some element and the quantity on the right is a roll then the address of the left quantity is to be stored at the end of the respective roll. For example, COMMA --

IPRGRL means put the address labeled COMMA at the end of the

Program roll, while BI - IT1 means store the contents of index register Bi at location IT1.

The name of a quantity or its symbol are used interchangeably throughout the flowcharts. The following abbreviations were used: paren for parenthesis, scolon for semicolon, cslash for the symbol 89

[, slashc for the symbol ] , and repsign for the replacement operator,

All tests involving the input characters are named. If a test is found within a decision , it is understood that the test is to be performed on the current character in the input area. 90

I

kt--74-0 q

C.AKD

1 OiB/

INc!(,EM[sTrT C 8I

V YeS

O - PukcH

CTAZ

\tT/3 /

PRINT' 71W CAttp \

1 /i -' PIJNGk

ITLLI 91

GALL

AENYUAN ia REA-II A [ARO

NIT

O a S 840NnNECTY RENINO LVN ,sy

BLANKS. (TWIN 0-.1A

INtAeA1tNT' 13

ETA 92

Ent f 2 93

INSERT

C its/so)

13CAIUK5 TEhP

YFs

LDPY Cor-JMwS I-r intro 7-&-MP S1'öL/46-G., QL/tnJK O VT" Gm45 1-s" ma pCcttEMtlNT In,PvT /44t(51:1. SI 6 SI

(i Ns;,

END of 5TRTEMour

wlrE Oor S IN INPuT ,44 REA

C.tt-L-L Ourpur ANY ro ,°1t INT CII R4ACT6-ats Ttl-E 6-t ' LEFT- IN INPI' CALL 9L 4-NK 7O AREA 8i K Owl' INPur AREA No (loser)

N o YES

pal tT GoTO q99qq

c*Lt- ßGA+K To cN-u guiNlC ro ßLANK ovr ßLA-NK owl" top +r AREA tNPvr gtleA o -. eerwctuF lusq I y 6-oGU14- V 94

COPY rCMPOP -H°V $ISAA46 INTO N P\T A 6tnr/2 A P" CARD 1 OR e*+ c Atz. O u rPwr AS FO.M,, ro PRUvT Tog LINE, CALL c au ourwr REA-DUMP 7b To Pßllv>- rt+r REñG f1 (.MRD LANE , LALC gtdtv TO B L/¢NIC our THE INPUT AREA caul' IN09-r?Ow7 CONY -rra AsT oF 6A-RD 7-t! TEWL Pos-A-a Y STe,eAf.E !mirk Tzte- IAJPur ARDO 95

E C.OlyM OAi

1 / pa pARENF O -. !D OcG[trM EAar $1

ixc[eMewr W 96

AOa Lcos Grit TO T716- con,T7..Ts IN TTte- t-i4 sT E><+7ny ON S

LETA

INIT CslrßaaL,

RETVIWF RETURN

(suour,N E

RLRINKS ITPIAJ

ro lvlrlts Asá

ptc26746.-xet' 131

51,1312 ( 97

C DATA

DATA +1 -1 DATA F B DATALTß- IS COPY TN DADA STATEMENT oNTO TFf-E DATRR OL_ L -+ D477 LTK T c-» 1.1. KEAPCAU Ta READ The- NG-X r GARD /)

YE5 DATA

CFORMAT ) DFG81A

A-4- KEADGARD o To READ THE DBL VEX CARP A Ilfl PICK DP A CNpRA(.T6C

A- ITL

Av KL

ITS `P YA By ID IND ADD Ifì iuu-EW16- BI

DBL 98

rROGRAM

1 + H/llniPRO¡r BLqNIcS + TEMP

co 'y pvpvT Ll,p DC cgLL Rk-A-pCetp kRo-ñ wry cARD Thwipo4,cy 5 7D R673.1) rltó Ve+ri L lin TYFEIQ A NBXT cKgp O END OF 492D is FOUND

w R I v'6 TP 41La'w oN Lilo ITS 54 M-41 S5 /

FINIs

RgvIhiD sjit I -+ M 411VP17-O6 coPY m...nsMs OF 51y- o...ro55 Rev to/ D 5'4j CALL O..TOvT\ S'3 To W 1L vra- SPIRT' 7H-E I2tr-coKa 2 / 99 100

I W RITE TOE RECORD ON TNE FILE

R ETu R N 101

LE7q 102

FETA

o-v PA amp b÷, comsTF

6-+ 1 e=e.ElF 0 -* pAKSNF -* KELOPF 0--* LOGF 0 -*Agft AyF' D I DoN5F O-oPekr O + FFLAe

I D) 0

I y/FLtii- EAq2

IsV=LPRL7i2tI

I IEWEyCA/r 8)

KaEygT e1

R EA- D THE NE---xT'. REoRD LE i7Z1Z Trsr 103 104

YES

(AEA)e)

yEs

MO

ilNCPeEmexor PAKFIIF I -as oPERF

NO

5'77 .i- pvMte+sy ROLL (AgA)0 - PROG 3 c t C/--> NO P20& ROLL

NO

ERR012 NA-Ma- AEA 33 GT f LLEGq-L OF sueRewriNer RE PET IT/e ----- FACTOR 105

Aro 46)

ßvMP Tot. up ro 5vßaovrlN6 P+F51G+m1-1- IDN Aelt 66

SEARC.14 ( N ir AE/F73 SvBQOI- r-o a NAME i try.

I -0. PRRRMF BLffNK5- ITPIN

5G7 I- FuNC - TfONIFL OPER - PROS ROLL IlBq33

3 o o +- LEFT pA-2EN - PRO(r R OLL tI 106

AEA 39

RIGHT PARENTHESIS TEST PtcQtMtrnoT PA-4.6--to r-

poi; BLE Pg2E-NF oPERfTOl2 G. O TEST- DVMWY OPERA-1M elPROG ROLL AR2AY FC/Kr z O trqoaL SIGN TEST 4 I Z t -REP5I64.1 O y ARRA-7F -- p2oó- tOO *- )) OA/ ROLL 1,RO6- /QOLI-

PLUS Er-L46- _ SIGN TEST o FL 616-

s4 y t nos --, cony coMNon) pQO6- ROLL rLerMe".1TS °Aim pno6- R oL,L_

MINOS SIGN TEST 544 r MINUS PROG RO At7+YB 107

AFA48

I-45 Two ELI'S ówr P20G Aoc vi-r OP MoD DuNM y Rt PL/44F w rrµ S7L L t Po w¢72 coMMq 111Z12141 = resT o pa-RAMF =

Division) yEs TEST 453-t SLASH-+ paaG MO Li_

1 Do NEF =

EivD oP STA-rgmenvr

lot t SCOLOAJ --, paw,- KOLL 108

ANAL A.

PPL = PUSH D OWN LIST o-1 } ' PDLo y ( PDL_I

i tdoste»ewr LPRCTR

AN DECKEMENT

i FACT R

yb-S ( ANA+)

5rae2&- CONTENTS OF l pRGRL (rsv _I) REST FIRST 9 errs 0r- I P2G-12L (tsV-I ) Do /0/ NZAN 6

74-/ T MoDE is sroerp II., airs 16-t3 T PaCra IS srbrt.&D lau sia o-is ys STORE an1 posy Pop-1N LISr POLS- -f PDLT_I 7-1-, T

NO 109

PDL PDL YIPS t., o AN INrEs.rn_ e4 R671- L vAR Iwtll.e- VáRIABLE

PDL T 4 LOF ic -I- VAR 1RBLE

AN so

PPLT L V Nor A LGGkK VAR MOLE

GO]oLAST C-A/77Q Y AND RUMP r HE PRoF MN-L. vP VNrIL A REPS /6N is FouuD, Pur IF IN ThFE GRtA-TEP SPACE

No

N@ o --+ PAO(. ROLL

NO

IZr'S7bR t I Pac..zL (rsv-1 (ET) 110

PDLS AN ¡uaEGFL; VAR/ABLE

REPLACE DIVISION PDLT_ OPE-It/VIVA 13y IWT'E4-0R DtvlsloN AN ARITNNu17c OPERATOl; OPERRTOR

ser MopE PDL7_7_ 1'O Re-AL

PN(T PAC1R) L P (p01-3-_))

IPßcrQ L. LSV

$E11 1 LDL DA) TEST 111

BLOCK

6E4IN-+ pRo4 ROLL NEW L INE -i PR06 PEcsKCIlD- PROD Ro I1 + DYNARILAy I NC-kb-MIMI" ßLOLK co u uy-e-R.

SAO,

END aLOCK

END PRIX, ROLL SCOLON-* PROF R Dt.L DEtR6MlFvr ßcocK GTQ

SADL -

(ELsT

1 ERKOR_ MGS$AeE DELETED 5TATEAl FAIT

sA DC

1 pl21Nr END, P l / FINIS /

ENORM/4L END F TRANsLaTDR/ 112

CAL.¡_

lNCCC016.vT ßI

cALL ( SvBONAME 113

cnc._q

gpn.rr.o2 N1EFíS/Wee ¡2Egv6sru4 I LLlr(r4L 5v8- RpvriNE 114

1,vc42ffm874.17- g I

lco 115 116

cY O lFL6TF

I -v / RPF

5E<{12-CI-1 MISS vRRka4y l2DLL

kir

YES (LC.OM I6

iD4-fo--> T.D IJO !-coa.i 14) t D -.) vm¿RAy LD-r2.y.__.zD ROLL (LcoM ri) TD Aaeß ay ¡ I N G.RE1N epvr (Lcow+ Ir IQ OLL BI

trPann --' comm ./ 12o1.t YES I rpA-D D, C/-, ARRAY ROLL 1 ic.om

(LLOM19)

11 NC2EM ff' v¡' 13 I

rFs

/ED Nt-xT 12EGlaR A o--, /,CPF L.COM O -+ I FL.7-j= YE5 (rnfîDD-92OLL CoMINCN 117

c 118

DATA

E O -> IFLETF O -9 4Re.AYF O -a coNr/-f O s IDONEF R icTle ßcRNk.s /T1'1N Dec a6M&rur e I Fo I 119

YES

LIST O-CONîïF C OMMq - PRO4 ROLL FOAM. Far9 \/V 120

DATA 18

MaA AQCAYF =0 R I&HT PARENTIIt-l1s TEST

tA o+ARRAlF ovan.) o+CONSTF

o-, (FLE/F 041114 ALE x c o c L ROLL

NANE PA PA04 ROLL O + /F ¡C /F

(fDMA 14) EQvAL IFS% AI D OF 5-Pr7lrN rt /) - PQ06 Roll

1-049

ARa4YE =o FOArq LS /

E/Z2ort ME55.4G-a- VNsv6scRivisD AR /ZAY

FPiá

I

1 Doh/EF

1 N C26`A1Enrr ( READ ri NEXT RECORD

FOLTA 121

O -+ /FLEW V 4-1211 -8LE NAME -3 Pleat, ROLL

(FDATA L6)

REPS ISN ---e PRtw RpLL IrycQEMENT BI

I CALL FaFA Ta PItoLe-55 rte Co OVA-Or

1 tNCREME/Jr 8i

1 FDATA \/V 122

( CDEC;2CH

CALL VAI'(SRCN

(REAL-)

CALL NAME NO REAL)

ca-t_ L- Su2PRDL

c4LL LAME (INTEER) N

call

SCKPROC.

CALL NAME (1300 GEM)

CALL SCR PROC

DS3 123

\D53/ Y CALL / VAQSRGH \ (REAL ARRAY)

GA LL N Ame- ?JD 4 (REkL /FRK/Fy)

I CALL (1) 5 4) KSCAPR OC

CAL-L. vafro-512x...14 (11,ord.-en_ A+'iuM

L4Lc4-LL L NANr o K( TE4ER ARRAY)

cos) ICilPeOG CALL vAIzs 2G H (¡3ppLlr71-N ARRAY)

with-44EW1E NO 4. LqLLOOLEAN ReY/ /c4:L SuQ Preo ß3r'lTL

D57 124

sENa.cN R4:ny ROLL Fog. "i)irs ADDRESS OF sw ITCH

sO4lcoLON usLL NAMF ON RKRw-y ROLL tsEMICOLON)

,INI PA tE T e

MAIN P20í. cnla ov RINE Lluecr >] TO fg IvrrHF 'DECSKGFFP TD LINE P2OC6'fi Comm Ow ELEHtí/rs

FEND s

!mEw cooNr--10 EGr 17E4.tEME74r 83

DS8 125

p Ec5 Rc.H D

I GAIL.

K- M VEAL ARRAY)

K0coi.i.. NAME

REL ARRAY)

caLL su¢vao(-

C.aLL IJAMO-

(IJit6-EtZ ARRAY)

CA-L L 5cq pQOG

No

FEiv D 126

( DEcsRCHP

CALL V4 /2.502.c N (REAL)

uo

CALL NMNF

(AVAIL) pcc

CALL

C4La- VARs RC h{ ( uuTkz r-2 CALL ARRAY) vARSEcH 1 AITEER}

NO

(C_ I1 t- l_ NRMr 0Nlr`ER )

cALL ( SCRPROL DcsPL C/LLL WINE- / CALL ( DOOLe-Aa 'tufty) VAKsgC-N (gvoLeA N) r CALL (pccpc) CALL ScRPROC NAME (Bo oLEAN)

GALL (cc P3) SCR PR or_ 127

vM2vALN (RFAL PFOCtDI/p.G)/

CALL NAME 1AME

ReAL PRDCEDuRE) SCRCTR=O (CALLPROCépute ) sc. ex--T IL = o

CALL )(pcsp7) G4LL. SCRPROC SucPROC. CALL FENN) VAR5i2CN (IN TtBER pROGEDuRe)

NAMEr CALL NAME

(l Ntf=6ER S c QCTIt = 1 DORE) O CslrT 1D1 ADD ! D1. Tb

I r:l NFGT

CALL \ COcSPBÌ SCRPROC CLL GfLL OVTPUr ro VARSIQC.N palNT THE (9001.6.7-N LINE-

PQpEDULE) L

CALL NAME Copy CONTENTS tD oOLCAN scR[-rR = p FROM A c-IVEN A-DP PROCEWRE, a67sS INTO nfE pvTPrAl2EA CooN-r- LINECT G ALI- I SCRPROC RETURN 128

(eEwPf?oc)

NO FE[-0iF - O RE7 V I:N

POT NE O -I) PRO& ROLL ( CREruRN)

I 129

DI MENS 1O N

D6u2.-iNr7.f ß l

l2 E-74--D wEs.)(-T-

REco12U

LE ïTEfL ?Es'

IFLEnF DYN pAk,p.y

I NTE E I V4RI14-61 TEST

=Drs-+ = D

PR c K 130

LEPE PAREN TEST- O+ I FLETF -I- IRPF

N1f 6 ! a+ I RPG

LTpft-DD, C / --, RRKAY ROLL

(L16L

YE-50,1o) too ( 1- u,3) IDr +4-"'" ID -'V« 47 Rat

POINT IP21D TO EInJEA- A LoMMA opt 131

yEs

<5-0 ' LRPF=o

5FARcLI SHORT CoNS Rot-t F oft PAR/H ere- K

purwY .o ne.rd-rry m". reg., .erte!AY apt.,

Yes 0117;) yES (L I71) tÁ173 LRiF to IRPF/-O

-"AQ24y rO

I - ae1L/+Y ROLL

YES

PARqNJ.ARROIY-L o ( LA I-7.f) Daetaaurner j IL.Ai-Ii). LACIND O+ LAaIe,eD L+AZAM O.'. ARRAY ROL/- 0+7EMP CrR nr) NG120-/yjb''`-fT T6kIP cTIP DEc2E/it nT Aalt-AY /Qo0- ßY TEM P cTIQ Ve 0 IARIND 132

( DD

1 / D D LABEL M fit) Mia DEc BI o -+ ID BLANKS -a rP/N

LDOI AIGREMEWT BI

READ THE NExT RECORD (Lvov)

L001 Nv M 1;Eß -7EST

too LE ITER TES7-

vor)

FOR-9 pRoG ROLL PAC.k

SEA-CCU 5 Roar cop Ng Rd.L FOR LABEL

SEaatc.µ Do rt=r (wo7) Loop Roc.c- 011s5 (LOO s) Fox LA$tZ 5 l00000+. ADDRESS Put LAGE125 LDo2OL, Z i4DOR(,SS -../P LooP /20 Lt. -4, I DoROL. Po 13

LD0$

c41-!_ r---11E11 Tb P12OC-t SS MI

s rEP-a. PR06- ROLL i PRcrR--v 171 Mc.REME-WT /

GOPY MZ FßoM THE pROb /tot-t_ -ro roe- ícXA-7Z44 (tOtL

(Au FAEA ro aocPSS M3

I IDesZ2EHeNT I f4GTïl

DO 134

LOU I1

UNTIL j, PROS- ROLL

I Cony 5cr2ArU-1 ROLL ONTO praoG- R2oc.l_

i Do, NFWLI Ná; ßEG-/N -j Pgob i2ot-L

I /NCJ2.EMGT+T ß1-Or

FETA 135

DeciM4 L PoINT----) 1' /20(...$0,k, 136

YES Nl7Ì OPERATOR

(DP 04,) o OPERATOR

C4-L-L d0 dELETE V PI2OL

C L 12EL Op, o(_

533 t ADDIe DF Ort -+ YES AN D PR06- ROLL OPERATOR { o 12ELoPK oL (pc 16) -1. KELOIF I->LOGF - DPEJPF

C. /44.-L_ VcpROL YES DPF1-46- -i-+R/ O -ft DPFZA¢- GALL (Dell DELETE prc>zEMerwr _- 31 r3 3 5-33 e-qDDk O MOD PAO6- PACK ROLL

-f +CONf7F

4r-4 I 137

E dsP

1

zvqc-T72-- 135 nz r ln D5 P13

Ds? /61

IEtecT72-,. psPLL

BL

OP/

P5P

I w1GkEw16ri T B3aY{

ADDR OF ELEMt=AuT-" ¡Ti

ROLE DE5IGNATOR L lb

ROLE- ye--5 PES 16-NA-ror2 L8

O&-r-FFMCwT 20a' DK.-r.,n*a¢ ar e Ws-)

REpOcED ROLE t`SI6/.7RTpK -1, I rZ OSV> 138

sE/QcF1 uknnAy ¡voT P2SBn/T ROLL r-oa THE PEST OF THE r7,itJly 6-R0P I(RSP9) Der--tr-M-e-x,r 83 Ti2 ve-r a DLL_ oes «AvroR

RoL E DES IG-NATn/1 L 16 DECRE MENT RO L.E yES (DsPq) DES IGNATD1t BY 12

NO DECREMENT Iz8 DEslelvwroK

gEDu RoLE PLcw.upr NO =1Tt El2/Z02 M äSSßGIs

DSP I I vwcpa,yzr/Fr(S rQVIV ITl'A17()E- ERROR ORIG-fivA}L RDAR OF" EL Eh1 EN T END or PRoo -I 4M EgvIV rro(-L INDàX-+ 1T3

15 REDUcz'D R0. DEt IWaToR hN /FRthY 139

wipe our A )-n'Y AND ALL OF ITS svECr-IenS

PST/

RESTO R E ZEQYCOL INDt x I n)c2EME NT INDEX 140

No

LoPY COMMON ELEHtT'rs On3TD Filar- ROLL (DSP37 RIG-HT F'A-12FNJ SE1414oLolu -) Moo )QpLL I A7GILCli'I (NWT BC oc.k c-TR (RErN ) 141

CND

DECREMENT BI FEND! Irvca MeNT '3 I

m jiEMUGl ENO, $cp.oN -+PRGK ROLL 01.1 41 142

NO FEND

`Ì ,

NO cata OuTL/,tltr' no Pa IA/r Mar L.I N6 It/-4,g1

I FEr? 143

BACKSPACE) CREW /NB

o+ Ir2 miri

> ID MAWS-. ITFIN DF.REnEUr B/

INCReN6Mf BI 144

1 ENDFIL5- - REvIND -' PAR-a.- ROLL pi2ot-adw Ro I aRCRSPacc -aPR040R4 ROLL

5,4rZGN

SHoRT CoNSTAWt POLL /

i.r'iT PmesNniesli cops rie"Trj RIGHT14fFT PaiteNrNeS Is) S'FrMiCDt.oN -' PROs ROLL J PR7a 145 E:61,q - + aIp O +IFLITF "'"T'""

IareweMrH VI

REPO THE NE%T R. EGO It LItO 411

N0 _) s PF ='I

LILO.

o pKK

-.IFtctF LIH 100101+ 1040

Ep.cE IpL 70 LowelT FppN 4140 SrOdt IN / ßR IN 0 I NcRGM T W?crt IrpADD-+ FpvivAt.EUls Rd«

L110 146

L134

RFDUCE ID2 ro LOWEST FORM 147

E'rvp) stMrGOC.OIJ 17 QO4 AOLL trot..

N o { FETr111)

YrS

YE5 YES 148

ve--s (F&-Mq) ALVNANVMEkIC rtisr

BLANKS - 1TPI N -Tome To ID PRO PETZ !Zoom NE

( FErw7)

SEARcN N11 (FE749 FRINTZ _J BLANKS,. ITPIN JuMP I-o PROPER (ZO uTWC 149

F5 v1312

LD. 2.L â-D=Lo

fugl\

I N6MQT B I

4 l 150

V FSUó l9

(O-sIF-tTF

.448 PRocE!'1v12.E PR-oCr Roc-L

I -ao '% o(r Rae_t_

o as

u:FT pnrN SEM 1 COL-0N 1 pico R_oc.. p2-06- ß01-L pJ2ov ItOS.-L LD /We- rt oLL

S EiFri.c.l+ Ft.r4 F5v$1 pn-oe Pto`I.- N/ l NLAErw+efit-+T I1C..OGo- CT*.

FErA 151 v O -+ LFLSrF

SEMI WL0,J -i PROB ROLL NeuLIN6 -y PRO// KOLL

SrARON FLAB -, PRO4 Ro -LL IN WLIFM0V-, r BL-Oe.K CM

500 152

o

ir-1-&-yr - 1

,y Es

Yt3 /rcT 1N7, i2 V A-RL /p-ß [ IN,,a-gmykrx,r Z Z ?JO I

PACK

\Fs6V 153

0-i. f KOPF 0 JTD BLANKS-* 171 IN DECREMENT BI

Warn 154 155

NqMf Re P516N S ITCH ROLL G07'O/ SWITCH I.IIIrWI C. i -, FROG- ROLL I-9 IRPF

I Nc/iEMeT7or BI

READ THE NEXT (LGOtog) RECORD

LGOTD AIVNBOTIL TIBsT 7 F -+ I TP/N 41* 10000 - w) LD (LGOtO i3 ) YES L-5 IRPF =O COMMA ¡EST

I NcREMENT PACK El

S Ell RC R sko12T LGOTa CONSTANT 7 ROLL R16-MT PAREN TEST O-+ LAR,6LJ COMw-Iq IRPF SwITCH /LULL NO 5ERRCN L607D (I..GOTOIL) SHOAT 7 COU1çTAMT ROLL IMAM K TEST

SEy11COL0111 4 -ABLE,

-1' Si. -+ITCH ROLL. 156

F/+tA \ (c4cd_19 eRoGe-SS 17I6 A4117414+vT i c EXP12Ett/aN/

i - O. 5- /)-, ',nod- ROLL

I FtTA 157

IF i IF (EXP) NI1 N2,N3 OEc¢EMrNT BI o IDoIJEF O->TD BLANKS-. 11=TFI INCREMENT BI

lé5

READ Tile- NEXT RECORD LEFT 0 PARENTHESIS

INCaEMENT BI I F -+ PRoG ROL IPßcr1Z + -+

IT I

PROf^SS ARITHMETIC EXPQESSIoN

/

1 D6c REM ENT- I P2GTRR o -v+ scRGTls; FIF3

I NcRBMb"NT

13 1

READ NEXT RECORD 158

NE o-, PRoc- ROLL 159

YGs

NE -j FIFoaMI

N I -+ FIFORML N3 -" FIFORM 3 YE FIFORj

V LE FIFORMI N FIFORML N3 -g FIFoRM3

YES FIFORM V LESS y r/FORM I

N I - F/FORMz Km, r/FORM3 save" 1 p12cr12 LE55 O THEN

fIFORM iro ro N I ELSE IF -'a. PILO 6-- RO LL

YC5 COPY PRob IZoLL r/LoM FIFO AM VA-LI/ís !N IT/ NE o Tö 5A-uD - PRO& I PRGTRZ ROLL

FIFORMI , PROc- (FIE hi) ROLL t= QV 4L -+ F/FaeMI FIFORI14 N2-+ F/FoRMt NI FIFO L THEN-- PROc- Roct N3-+ FIFORM3 Dora -+ Paoe,-RoLL 1.11- FIFORM3 F]FoRMi -i Peo¡- ROLL ELSE -+ PRO, ROLL F/FORM Goro -,PRo- ROLL FIFORH FIFORM3-4 PRO& ROLL \4i sEMICOLON -. PRO& ti R OLL 160

o 4P-R-4-YE O-. FLOCK ait O+ CFyINNpL O + cu,asr>= o -3P DarinF o- Dy#.+4-aa4-y rfIGHMkM -4/AkcrR O alp 0-F44^6 D - I DaAlFf O s I Fla F O-a IFLffiF R tTvluv O SV a -as.Loo- F o -v ovlrm F p4. PAILA-MF o - PAA6iJF p -.=e`IGTR D Iaoc772 O I sccrp O-3 sc.Ia.G.772 d scac7itt o-'D TV AC 77Z -+ 12.07-0Pr 0 AO IDtP 161

(FL L

Fy FIt25TcN-Ak ® 17-P/N LLsi

pncK

\

e5 P-r ßLA-Mc. our !Tv IN

OyID

No 4cr

LA. 6FL.)Coe-Ont -.pRO& BOLL_ %1' LL SEAIE A1 DO L]Si 1-OOP K0i4_ FOR ADD 4. OF LABEL

ADD 'g IL,LpDD 162

LIST PtOCE550R

DEGREMBNT $ 1

I NciLEM END g

a177z

RE A-D NEXT RECPRD

ßLANK TEsT Lt5T1

LETTER TEST

I IDDNEF

IFLETT = O If-I-E7F - p

LIST 7 163

14 um gm TEST

I FLtTF = I uST 7

/RRiy TEST

-1 -v AIQaAYF No (LST 14

CO tv1 11 A TEST

pan-A-Y r-+-w = - IrYrL.cMtr--.T O FI-tTF Po LOOP cTR Po LOOP G77Q I 14-12-R 41 t 00'700000 FL-46- .-e sc211TLN ytp LL

4 164

Ri I T PR OD., cos,' ScQercN ROLL

O (c-,G%r

1 N./La5T1

-2 (1.1r I6)

SEM Ice) Lot.) x-2frrc14 Rol.I- IrpqDD, SEMI- 1/ \Kr COLON ---v V ST.I';-it-rc-1 /Q:31_4_ O-+ IFtETF

L15r 1

Llsr If i

ourRE A L ScRpTGN IQO LL

(Lisi-ici) lE'r-T PA/tc-to Cµ ANNI EL NO coMk^ /¢l RDDK OP- VRKrqß1..e- 12 H--r PA-aBN_, owi 5Em 1 coLON SuZA-rcN ROLL.

L1sr- 3b

LI 1 165

E5

5

!TPA DP --. sc.ßaTCH R ot °-'IFLtTF

CL l5¡¡2S)

b ( L 1st-16)

O > ARRAY 0X60000c) . /) R G -I+T P/ ao S-.2ATLN AOLL O + DO Loop SEMICOLON - PKoc r- Ln RO14_ po (LISr27) PEcrLEwlelvr s1 LDpP crR I LIST vs LIST

(LIST Lq)

ScIZATc 1- Po LooP pact FLA( ITPADD OXr0000- +5CRft1 ROLL ROLL IJO b a-I FLET F

irvaoc . sutevrCJ. ROLL M v Lr op O f FLETE --+ Sc-ILA-TGN ROLL Na 166 167 N/

}

( LIST 38) 5X4/1--m 1f /JO (LIST S'0 I2oLLI B3 _ ?? 70OOOo EnRcH yes cH 201 (usT SI) Fo 4

? TooOOo

$(¡LATCH ROIL roll --+ pßot, ROLL FP-°&- ROLL

I (L lsr yo) SczATcµ ZOLL-1 Pizalr copyROLL uNTLI - S3 j IS FOuND . ImcR.gMc'M 83 0 -j Sc.12s-TC N ROLL. FOUND (L157-41) STEP -'' PROs RO LL 600000 i (LIST y4) (/.IST 43)

O 5C.02v-rcH RoLL O Scan rcN ' IQO L-L. p/tof RoLL

cot y 5cf Al 4 ROLL c»'T-O p/W t20[.K Vr.1'1L ? ; 6,00000 15 FdM L15T 4 1) O --1. x12-017-CH ROLL

PRO( YZ OL.L

1

2c (5E-M14 ßAUWi412DS ON c.12RTGhI 12OLt, v.. J-I L 15 POND, O ScAotrcH Rota_ COPY SCJ2d4TC N ROLL OA ro p72-06-- ROLL u J rJL O A-12-6 Foo/v® / I po, 736-4 /AI -ms PROD- Roti usr1 N/ 168

PRINT TIN LINE

AITeRN9 s ouTIN' _p

OWL r

BLANks INfo OUTFVT AREA O+ LINECT 169

( PACK

pr4.414- THt UHH4-cte,7L ix"

IN /J I I.+rt7 lTPN. I NciueNex,i y-HE G/tIFRl4MM L.O one rtk

RETuRN

FO«04 r@E DezINRL POI.T uo Cc..r+) W,rH 4 ZERO

(cN PL)

NOVA TYFE c{IwRACiC25 14e11- o,.+H

r ,Dti > ¡2rTJ2N 170

pr oc.-R4 01

r 24-°+ LD 171

vORRAY ROLL

042

(

BE-/N -4) Pk ob ROLL NAMG pRDb- ROLL SG-4124i+ FLRF 13-110 -I» PROC ROLL pram,- /tDLL

Ir-5- 1 &x.a6P+ENT.,.. ßLGt,KCTit

FETA 172

(RE A-DTAPE

ßLANICS - iN P AREA-

[131-4-104-5 "'-", i Ou¡P+T Ai2ir-4

I STATEMM" c.A6ffL-1 -,pv7'1°vr AREA

iccw-riAnr41-teW D65464)4T19R o-rrPJT ARArA

s rAtE MENr OvTPuT AREA

I PENi'IF I CA7'1on) -v> ou-I-PuT A+2Ef}

W rt. Ir o or' P.,T" A-KEir4

RT6

RETURN 173

FRE.4 P E FREíiDT F wg ITET / C 6O-CNA AIN GL yINOtor. I -* INO.'T r I 07)

Blo 174

y s

oa

I NC1Zt`MExil B1

CALL LisT

ADM oF cnusr/Fprr -"Y CHAN >ve -

I -s co FL/4ti

ERl2ok. MESSAGE

FPRINT r-PON -+ UtMSiNCC._ G2iC¡}c

/NOT -. ¡-°Cwu.NA FU16- J.- 6-r 4/46- 175

SAvE RE6-orERs E.r?t12 port 2RN16TERS

13 2-

I..iLsFtN.e72- Oî- wOzos vTny 133

IrPIN-1, I = Rol- L-/.,2. ß2+ß3, a2

Drci2ep.f&-Nrr 9.3 132. 7 I .1oreEMmM' ß2 120LL GTIQ

1111N -1t81 eeltt-1.61- RA_ An] KS NU[yrNr I NGp6hEJT 13I BI ßl = ITPINt1 + BI I < no OP SEARcµ Waxes BI

IWA.,Rwr IvvH03.572 Or 62 íe-Arzz-H 131 -. ROM- c1.12 oRls 176

DEc2EMENt SZ 137 TOE ^Jvw46E4 OF SEARCH -.0 (Ds +! c P.T'er A010LE55 Or <=rny AD 12E55 - IrpADD Cµ,4RAcTER c OvNTE

R FSTO rL E A-l-L

nE I ST

RETvr2N )

CEA (LC Nz

I Ncttt-3146-->vT cogs OiC VRiQRp/ GT)p FOvg-Tt.i w oR p oF tre Al-PD -j ernsy -s 6Tp/0-D VAi2/C/r ROLL D

g ETV RN 177

ScRP12o1: )

83 i IrL I 5 SCR PRPr: O PICK VP coJirluT$ O A-P tans ON C2AKt+ ROLL GET 1D1.

ADD IT1 TO L.1 NE CT

c4-LL ovitnJE ro prINr rite- LINE

GoP / coN7SA17S OF ADDI2E55 ON scn,trcN Roti I to ovTpwr AQUA.

P vT n>&w vwl_va- INTO L.JaEcrlc INcx.Mnvr 133

NO scam O

12ETvrtN 178

I--.-- r¿trTv icnJ TY7 fYfRini ABNOKr1/P-1- 179

CREA-L ) 1N Tt F/2 ) C\ Lab/ (J4 L 180

LUZ (

SCA2LH (L1,LO) vA-RA. Y ROLL

ETA

LZIs

( TYPE

sEAaGN t=o12 RtHT pAtQEpt ro PAsS OVER OTHEa. DES/, atvK 181

CYA RS RC N

(

PICK ' u P PA RA HATER CpLLVLàTX ¡¿ETVRN A °DRESS O - sueATCN ROLL erg VARSR4/

I seXaaCH °o..*. (loutSRCp() V AR./i.Ay ROLL Po A. ICL EQvAG. To rite NO PARANBTEt

oLoAJ

S<1wrLR ROLL

RETxR>) NOIvhKSM1GHI-Ì VAASqC

NAME COMMAs Sc./LArGFF (vAn5R6H3) ROLL DEC.2/rM0-Ir BI BI-. )Tt ----

\AßSidl/N PCP NE Sk74RtN vA25ate(7) AR.M-A-Y ROLL FOIL povQe-ss OF TN-E IT2+BI ARR/4y vARSQCN 4

coPy ARRAY ROLL oNro KETURN SCRqTCN ROLL v MT/ L R S LAS Nc IS FROND

SLASOC, CORRA -O SLRSTLN ROLL 182

VcPfkoc_

GqLL (coPoc vcps-

1 A (vvlo)

SE4 ZcI4 sE4nc- LoNG SHORT c.O N STRNT CO?JSTANI ROLL ROLL /

YES Vcf

IN{EFt'R c_oHST =PRoO- Rott

vcPs

RETURN

[ -> I F L ET-F

` SEARCH - FRWT3 Nrr Fo2 aoMAN LIBRARY B L R N Ic,T -a 5u6R OuT/t,IF ITPfN, wpm) tI 1.":-IP 9) I INveeraa H so BPRp6.ILA14 SEfHcc (sufr/J-MPir To N./ARRAY PE-R vc p KOLA_ RO It ROUT IIVe.--

REAL su aPitOaRwM vcpI 183

Typfr- oF cNA-Rnc.rElR v 14 k 1A-8LG Olt svBplKOl.K4M (vcPl3)

PUT INTkZelt pur LOGIC/IL Pvf REAL TypE town TYPE wirp T yPE WITH APIA ON ARDIL ON AVDR. oA! PRO& $201-L paOb VAL PRaC- Ra.L

vcviy

ARMY

ARrLAy/= 184

APPENDIX 4

PROGRAM LISTING 185 ETA !DENT ETA 00001 TITLE EXPRFSSTCN TYPE ANALYZER 00002 LETFST MACRO, ILFT,N.^,LF_T) ASG 00003 728 00004 ASG 218 00005 uJp NOLET ASG 00006 62R 00007 ASG 328 00008 um* LET 00009 ASG 528 ASG 00010 41R 00011 UJP NOLET 00012 EN0M 00013 COMMON 00014 SIIRRCL ASS 60 SUBROIITTNE ROLL MAX 20 00015 SIIRCTR RSS 1 SUBROUTINE ROLL CTR PUNCH RSS 00016 1 ALTERNATE OUTPUT LUN ARRANT RSS 00017 1 4PRAY FLAG, 00018 RLCCKCTR RSS 1 BLOCK CTR R55 00019 CHANNEL 1 CHANNEL NUMBER CCNSTF R55 00020 1 CONSTANT FLAG 00021 DATAF RSS 1 DATA FLAG nYNARRAY RSS 00022 l DYNAMIC ARRAY FLAG F.FL8G RSS 00023 1 E TYPE CONSTANT FLAG 00024 IARC,TR RSS 1 ARRAY /SWITCH ROLL COO 00025 IARTNO ASS 1 ARRAY PCTNTER 00026 TCCCTR RSS 1 COMMON ROLL CTR 00027 TO RSS 1 VARIARLE ATTRIBUTE/ CHARACTER CTR 00028 IDONEE R55 1 DONE WITH STATEMENT FLAG 00029 TDOCTR RSS 1 DO ROLL CTR 00030 IOSP RSS 1 DECLARATIVE STATEMENTS FIN15MF0 00031 TEOCTR R55 1 EOUTV9LENCE ROLL CTR 00032 TFOF RSS l FOUTVALENCE FLAG TFLFTF 00033 RSS 1 FIRST LETTER FLAG THM RSS 00034 1 HIT OR INSERTION FLAG 00035 TLCCTR RSS 1 LONG CONSTANT ROLL CTR 00036 RSS 2 INPUT OVERFLOW AREA 00037 ININ RSS 20 INPUT AREA 00038 TNOUT Ass 1 READ /WRITE FLAG TPRCTR 00039 RSS 1 PROGRAM ROLL CTR 00040 ISCCTR RSS 1 SHORT CONSTANT ROLL CTR. 00041 SCPCTR RSS 1 1ST SCRATCH ROLL CIR 00042 SCRCTR7 RSS 1 - 2ND SCRATCH ROIL CTR 00043 ISO RSS I START VALUE 00044 TSWCTR FOIL 1ARCTR ARRAY/ SWITCH ROLL CTR 00045 TTPAOD RSS 1 TEMPORARY ADDRESS STORAGE 00046 ITPIN RSS 5 TEMPORARY STORAGE 00047 IVACTR ASS 1 VARRAY ROLL CTR 00048 LOGF ASS 1 LOGICAL OPERATOR FLAG 00049 MATNPROG RSS 1 MAIN PRCGPAM /SUBMOUTINE FLAG 00050 CPFRF SSS 1 OPERATOR FLAG 00051 RSS 1 OUTPUT OVERFLOW AREA 00052 OUTTN RSS 24 OUTPUT AREA 00053 PHRAMF RSS I PARAMETER FLAG 00054 PARENF RSS 1 PARENTHESIS FLAG 00055 RELOPF R55 1 RELATIONAL OPERATOR FLAG 00056 ISCNRL R55 1200 SHORT CONSTANT ROLL MAX 400 00057 TVAROL RSC 2000 VARTABLF ROLL MAX 900 00058 ILCNRL RSS 600 LONG CONSTANT ROLL MAX 100 00099 RSS TOOROL 100 OC LOOP ROLL MAX 32 00060 TSCROL RSS 800 1sT SCRATCH ROLL 00061 SC9L2 RSS 1 2ND SCRATCH HOWL 00062 IPRGRL RSS 1 PROGRAM ROLL 00063 TCOMRL EDIT ILCNRI COMMON RCLL, MAX 600 00064 IERROL FOU ^I TOOK FOUTVALENCE ROLL MAX 100 00065 DATA q 00066 00067 00068 qqALGOL RESERVED wORD TABLE 00069 00070 q***q***.* *q 00071 POWER CCT 70000 00072 RCn 2, *ROwFR* 00073 TNTOIV CCT 50000 00074 RCO 7,*0IV* 00075 GT OCT 110000 00076 RCn 3, *GRFATF17* 00077 GE OCT 120nfn 00078 RC11 3.ANC7 LESS* 00079 EQUAL OCT 10000 00080 RCD I,= 00081 NE CCT 13000n 00082 RCD 3,*NOT FgUAL* 00083 LE CCT 15000n 00084 RCO 4. *NOT GREATER* 00085 LESS OCT 60000 90086 RCD 2.*LFSS* 00087 ANO OCT 50000 00088 RCn 7.3ANn* 00089 OR OCT 4000n 00090 RCD 1,*,^,P* 00091 NOT CCT 50000 00092 RCn 2,*NTr* PERIOD 00093 OCT 10000 00094 RCn 1,. 00095 COMMA OCT 10000 00096 RCD 1,. 00097 COLON CCT 30000 00098 OCT 60126nAn 00099 SEMICCLN CCT 10000 00100 OCT 37606060 LPARFN 00101 OCT 10000 00102 RCD 1,1 00103 RPAREN OCT 10000 00104 186 EXPRFcSION TYPE ANALYZER RCn 1.) REPS 00105 OCT 30000 00106 OCT 60764060 00107 MASH OCT 20000 00108 CCT 60176060 00109 L RENE CCT 20000 00110 OCT 607 ?4060 TRUE 00111 OCT 60000 00112 RCn 2,YTPDEt FALSE 00113 OCT 70000 00114 RCn 2,YFALSE3 00115 0CT,^, OCT 70000 RC0 00116 2,tGC TOt 00117 IF OCT 40000 00118 RCn 1,tIFt THEN 00119 OCT 60000 00120 RCD 2. /THEN$ 00121 ELSE. CCT 60000 00122 Rcn 2,tELÇFt FOR 00123 CCT 50000 00124 RCD 2,YF,^,nY DC 00125 OCT 40000 00126 RCn l,xnCt STFP 00127 OCT 60007 00128 RCn 2.YSTCCt UNTIL 00129 OCT 70000 00130 RCO 2,YUNrILs WADI 00131 OCT 70000 00132 RCn 2,tHEAINt 00133 FNn OCT 50000 00134 Ren 2,YFNnt BOOLEAN 00135 OCT 110000 00136 RCD 3r3H,^,CLFANt INTEGER 00137 OCT 110000 00138 FICO 3.31NTEGERS 00139 REAL. CCT 60000 00140 RCD 2,YRFALS 00141 ARRAY OCT 7000n 00142 RCn 2rt¡ßyTY 00143 SWITCH C C.T 100000 00144 Ren 2,tSWtTCHt PROC 00145 OCT 130000 00146 RCn 3,sPRCCFOURFx PLUS 00147 OCT 10000 00148 RCn 1r. 00149 MINUS CCT 10000 00150 RCn 1,- 00151 TIMES OCT 1000n 00152 RCD 1,a 00153 SLASH OCT IOOOn 00154 RCn 1,1 00155 ARCTAN OCT 60000 00156 RCD 2,APC7AN 00157 LN OCT ZOOOn 00158 RCn 1,LN 00159 PINTER OCT 60000 00160 RCD 2.E4TTFP 00161 INRFAL OCT 60000 00162 RC0 2,INRFAL 00163 OUTRFAI OCT 70000 00764 RCD 2,CITRFAL 00165 SIN CCT 30000 00166 RCn 1,STN 00167 COS OCT 30000 00168 RCn 1,CCS 00169 Ails CCT 90000 00170 RCn 1,AHC 00171 EX', OCT 30000 00172 RCn 1,EXP 00173 SORT OCT 40000 00174 RCD 1.S )P 00175 SIAN OCT 40000 00176 RCn /,S1A. 00177 ZFRC OCT 10000 00178 RCD 1.0 - 00179 ONFHALF OCT 30000 00180 RCn 1,0,5 00181 ONF CCT 10000 00182 Pen 1,1 00183 SIXTY CCT 20000 OOIB4 RCD 1,60 00185 SIXCNE OCT 20000 00186 RCD 1.61 00187 SIXTWO CCT 2000n 00188 RCn 1,67 00189 RACKSPCF CCT 110000 00190 RCD .3.RACf SPACE 00191 FNOFILF OCT 70000 00192 RCn 2,EN0FTLE 00193 REWIND OCT 6000,-, 00194 RCD 2,5EWlNU 00195 0 aa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 00196 . . 00197 a o TRANSLATOR ERROR MESSAGES a 001gá a . . 00199 a aa aaaaaaaaaaaaaaaaaaaaaapaaaaaaaa 00200 FR01 RCn 6,0 ILLEGAL VARIARLE 00201 FRR2 Ren 7,0 ILLEGAL c!RSCRTPTING 00202 FRR3 RCD 9,0 11NCCRRFCTARLF EQUIVALENCE ERROR 00203 ERRO RCO 6,0 ILLEGAL. SURR, ^,UTTNE 00204 ERRS RCD 6,0 UNSURSCRTPTEn ARRAY 00205 E RR6 RC0 6,0 DELETED STATEMENT FRP7 00206 RCn 6,0 ILLEGAL CONSTANT 00207 FRRR RCn 6,0 10111 VALENCE ERROR 00208 ERR1O RCn 5,0 Too MANY ENDS 00209 187 EXPRESSION TYPE ANALYZER FRR11 RCn 8,0 ILLEGAL REPETITION FACTOR FR012 00210 RCn 5,0 ROLL OVERFLOW 00211 FRR13 RC!) 7,0 UNREFERENCED SUBPROGRAM 00212 00213 0 00214 FORTRAN RFSFRVFD WORD TABLE 00215 00216 00217 FRWT3 RCn 2,SL.TTF 00218 RCn na2,SLTTFI 00219 BCD 2,SSdTCH 00220 RrO 2,m/rut( 00221 Rrn 2,FXH T 00222 RCn 2,OVFPFL 00223 RCD 2,FOFPK 00224 RCD 7,TOClK 00225 Rrn 2,IITTST 00226 RCn 2,OVFPLAY 00227 RCD 2,SFr,MFNT 00228 Rrn 2.FORTDIIMR 00229 Ren 2,AHS 00230 RCn 2,48SF 00231 RCn 2,IARSF 00232 Rrn 2,XARF 00233 Rrn 2,410n 00234 RCn 2.AL0,F 00235 RCn 2,ATAN 00236 RCn 2,ATANF 00237 RCn 2,005 00238 Rrn 2,COSF 00239 RCn 2.EP 00240 RCn 2.F19F 00241 Rfn 20.L.0AT 00242 RCn 2,FLOATF 00243 RCn 2,IFTv 00244 Rfn 2.XFTXF 00245 Rfn 2,FTXF 00246 Rtn 2.$1,N 00247 RCD 2.STGHF 00248 Rtn 2,XS1rNF 00249 BCD 2ISTr,N 00250 RCn 2SIN 00251 Rr.n 2,514F 00252 Rfn 2.Sn,, 00253 RCn 2,SNRTF 00254 FCn 2,SLTTFF 00255 RCn 2,SLTTFTF 00256 RCn 2.SSWTCHF 00257 RCn 2,nWruKF 00258 RCn 2,rvFI TF 00259 RCn 2,T,'FRFLF 00260 BCD 2,FOFrEF 00261 pen 2.1;)cHKF 00262 RCn 2,I, 1TSTF 00263 Rrn 2,LFNoHTF 00264 RCD 2,NTT 00265 RCn 2,ANn 00266 Rrn 2.CP 00267 RCn 2,EC9 00268 FRWT4 RCn 1..i;F. 00269 HcO 1,.6T. 00270 RCn 1,.E0. 00271 Rcn 1,.NF, 00272 Rcn 1,.LF, 00273 RCn 1,.I.T, 00274 PRn 00275 FAT REAnTAPF,SF4RCH, PACK. FPROG,FSI.IBR,FFUNC,OFLST,FRFAL 00276 FAT -FIN1.FCH4R, FLOG. FTYPE ,F0IME,FCCM,FEOUIV.FCALL.FnATA 00277 EXT F0O. F(T TO. 5A0C ,FRF4n.FWRITE,FREAUT.FIF,Fn7 00278 FAT FWRITFT. FPRTNT, FPUN ,FFNfF.FRFWI.FBACK,FEN0,FFTNTS 00279 FAT FRLcrw . FFNOR .OSP.FAFA.HIOHMFM.STOP,SCOLoN 00280 FMTRY FFTA.START2 00261 574972 FNA IPR,RL MANS OUT ROLLS, COUNTERS AND 00282 5WA STA 00283 ARRAYF.1 00284 FNA 0 00285 511 STA 0,1 00286 51'4 IST .1 00287 ILIP ST3 00288 ENT 1,1 PITT BLANKS INTO 1TFIN AND INTO 00289 LOA AO6U6n6060 OIITTN -1 00290 STA TTPIN_1.1 00291 !ST 5.1 00292 Ujo -2 00293 LOA .000606060 00294 STA OLITIN -1 00295 FNA HIRHMFM 00296 STA ISwCTP HTGHMEM INTO ISWCTR 00297 START RT., RF4DTAPF. 00298 FFTA FNA 0 00299 STA In 00300 STA IFLFTF 00301 RT.I TFSTI, TEST FOP ROLL OVERFLOW 00302 LOA ILL.Ann IF ILLADD IS NONZERO PUT FNn ,, 00303 871.E0 FETA0 ON FROG ROLL 0 0304 sHA -15 SHIFT CTR TO LOWER 9 BITS 00305 SWA FFTAIR 00906 LOI TPRCT0,2 00307 FNT 1,3 00308 FFTA17 T41T 1,2 00309 FNA ENn 00310 STA IPRGRI -1,2 00311 TNT 1,2 00312 FNA SCOLON 00313 ' STA TPR0R1 -1,2 00314 188

EXPRFSSICN TYPF ANALYZER FNA,S -1 RAD 00315 RLCCKrTR DECREMENT BLQCKCTR 00316 FFTAIA ISI .4,3 00317 UJP FETA17 00318 STT IPRr_TP.2 00319 FNA 0 00320 STA ILLAOn 00321 FETAO ISG 1,1 IF NEW CARD EXECUTE FLAREL 00322 RTJ FLARE, FETA1 00323 INT 1.1 00324 ISG 73.1 00325 I1,IP FETA2 00326 RT.I RF.AOTAPE 00327 11..IP FETAL FETA2 00328 LACH ININ-I.1 TEST FOR PLANK AND TD ENO =0 00329 608 00330 A0I,NF FETAL 00331 LOA TO 00332 A7.J,EQ FETA1 IGNORE BLANK 00333 FETA3 FNO 128 TEST FOR ALPHANUMERIC CHARArTER 00334 AO,I,LT FETA4 00335 LETFST (FET44.FETARI FETA4 LOA 00336 IFLETF 00337 AZJ.FO FETAS 00338 LOA TO SHA 00339 -1? GET CHARACTER COUNT 00340 ENO R CHAR COUNT OF 8 00341 A0.1.GE FETAL 00342 UJP EFTA/ 00343 FETA5 ENA 1 00344 STA IFLETF 00345 LATH TNIN -1.1 00346 FNO 31R TEST FOR INTEGER VARIABLE 00347 A0.I.EQ FETA6 YES 00348 ENO 41R 00349 40J,LT FETA7 NC 00350 ENO 468 00351 A0.}.rE FFTA7 NC FETA6 00352 ENA 1 INTFFFR VARIARLE 00353 RAO ID FETA7 PTJ 00354 PACK 00355 UJP FFTAI FFTAR 00356 STT IT).1 00397 ENI 28,1 LENGTH OF FPWT1 FFT49 00358 FNO,S -0 00359 LOA ITPIN 00360 MEO FRWT1 .2 SEARCH FRWTI 00361 I1,IP FETAL' NOT ON TABLE 00362 TNT 1.1 HTT 00363 LOA FPWTI.I 00364 LOO ITPIN.1 00365 AO.).E0 FETA)I EQUAL 00366 INT -1,1 00367 OAP FETA9 FETAI1 TIA 00365 1 PUT JUMP CTP VALUE INTO A RFG 00369 SHA -1 DIVIDE AY 2 00370 TAT 2 00371 LOI 111,1 RESTORE 81 00372 IOA =0606n,n An BLANKS INTO ITPIN, TTPIN.1 00373 STA ITPIN 00374 STA ITPIN.1 00375 UJP FRWT1.1.2 EFTA!? 00376 LOI I71,1 RESTORE R1 00377 LOA IOSP 00378 AZJ.NE FETA13 00379 RTJ OSP UPnATF POLLS 00380 ENA 1 00381 STA IDSP FETAI3 00382 STT IT1.1 STORE 81 00383 ENT 62,1 LENGTT OF FRWT2 00384 FFTAIA ENO.S -0 00385 LOA ITPIN 00386 MEO FRwT2.2 SEARCH FRWT2 00387 0.0, FETAIF NOT ON TABLE 00388 INT 1,1 HTT 00389 LOA FRWT2.1 00390 LOO ITPIN.1 00391 AO.J.F11 FETAI.. EQUAL 00392 INI -1,1 00393 UJP FFTAIA 00394 ESTAIS Tin 1 PUT JUMP CTP VALUE INTO A RFG 00395 SHA -1 DIVIDE BY 2 00396 TAT 2 00397 LOT ITI.1 RESTORE RI 00398 LOA =060606060 PLANKS INTO ITPIN, 11514.1 00399 STA ITPIN 00400 STA ITPIN.1 ENA 00401 0 0 INTO TO 00402 STA TO 00403 LJP FRWT2. I.2 FETA16 00404 LOI I71.1 00405 ST.J FAEA 8C TO ARITH EXP ANAL 00406 JJJP FETA GO TO EXP TYPE ANAL 00407 189

TEST FOR ROLL OVERFLOW FJF[T 00408 TITLE TEST FOR ROLL. OVERFIOW 00409 TESTL UJP 00410 LOA ISCCTP SHORT CONSTANT ROLL CTR 00411 ASG 1201 00412 IIJP .2 00413 IL IP OVERFI. OW 00414 LOA IVACTP VARRAY ROLL CTR 00415 ASS 2001 00416 UJP .2 00417 IIJP CAERE, T4 00418 LOA ICOCTR COMMON ROLL CTR 00419 ASr, 1201 00420 UJP .2 00421 IMP OVERFI OW 00422 LOA IEOCTP EQUIVALENCE ROIL CTR 00423 ASS 101 00424 UJP .2 00425 UJP OVERFI OW 00426 LOA ILCCTP LONG CONSTANT ROLL CTR 00427 ASS 601 00428 UJP .2 00429 IIJP OVERFI OW 00430 LOA IOOCTP 0O ROLL CTR 00431 ASS 31 00432 IIJP .2 00433 UJP OVERFt ON 00434 FNA IPRARI PROGRAM ROLL ADA 00435 IPRCTR Anna OF LAST ELT IN PROD ROLL 00436 LDO IARCTP ATOR OF LAST ELT IN ARRAY ROLL 00437 ADJ.LT TESTL OVERFLOW 00438 ENA ERN? ERROR MESSAGE. ROLL OVERFLOW 00439 ENO 5 00440 WRITE 61 00441 SRJP ARNORHAL HALT TO TRANSLATOR 00442 LABEL PROCESSOR FJErT 00443 190 TITLE LABEL PROCESSOR 004441 FLAREL UJP 44 00445 LDA =026606060 F INTO 1ST CHARACTER IN ITPTN 00446 STA ITPTN 00447 EN4 10000P 00448 STA ID 00449 ENT 1.1 00450 ENO 60D 00451 L251 LACH TNIN -1.1 00452 ADJ.E4 L253 00453 PTA PACK 00454 L253 INT 1.1 00455 ISF 6,1 00456 IIJP L251 00457 LDA ID 00458 ENO 100008 00459 40J.NE. L256 00460 FNA 0 00461 STA ID 00462 LDA =060606060 00463 STA ITPTN 00464 UJP FLARE' 00465 L256 PTA SEARCH LABEL TO PROCESS 00466 I SCNRI 00467 ISCCTP 00468 3 00469 2. 00470 FNA 0 00471 STA ID RESET ID TO ZERO 00472 LOA IHM IF HIT SEARCH DO LOOP ROLL DER 00473 A7J.NE L258 LABEL 00474 L255 PTA LAHFLrC INSERTION. PUT ON PROD ROLL 00475 UJP FLARE] 00476 ' L25R ST! IT1.l STORE 81 00477 LOT IDCCTP.1 00478 LDA ITRADn 00479 ENO 777778 SEARCH ON BOOR PORTION ONLY 00480 MF4 IDOADi .1 00481 IIJP LA225 NOT ON DO LOOP ROLL 00482 LOA IDOROL.1 00483 STA ILLAnn 00484 LOT 10OCTP.2 00485 LnA ¡DOPO! ,2 00486 STA IDOROI .1 00487 FNA.S -1 00488 PAD IDOCTP 00489 Lot TT1.1 RESTORE R1 00490 IIJP L255 PUT LABEL ON PROP ROLL 00491 LA225 LOT TT1.1 RESTORE RI 00452 OAP L255 00493 UJP FLARE' 00494 LARELCD UJP 44 PUT LABEL, COLON ON PROD ROLL 00495 LOT IPPCTP.2 00496 INT 1,2 00497 LDA ITPAI)r 00498 STA IPRGRI -1.2 00499 TNT 1,2 00500 ENO COLO^, 00501 STA TPRC.RI -1,2 00502 STY IPRCTP.2 00503 UJP LAHELrO 00504 444 444444444*444444444444444444*** 444444444444 00505 44 00506 64 FORTRAN RESERVE! WORD TABLES 00507 40 00508 tltltlpdgdptltltltlpgryqqpbtlqtl4rypqqtltlOtlp ppgtlgqqpOtltlqqtl 00509 FRWT1 BCD 2,PRO,RAM 00510 BCD 2,ExTFRNAL 00511 RCD 2,SDRPOUTI 00512 RCD 2,EIINCTION 00513 RIO 2,FNTPY 00514 RCD 2,REAI 00515 RCn 2,TNTFC,ER 00516 ECO 2,CHAPACTE 00517 RCD 2,LO,TCAL 00518 PCI) 2,TYPF 00519 ECO 2,DIMFNSIO 00520 ECO 2,COMNON 00521 RCD 2,E01ITVALE 00522 FRWT2 RCD 2.CALL 00523 BCD 2.DATA 00524 RCD 2,RFTIIRN 00525 RCn 2.,0 00526 RCD 2,001 - 00527 RCO 2,1F 00528 BCD 2,10 00529 ECO 2,CONTTNLIE 00530 RCD 2,PAIISE. 00531 ACT ',STOP 00532 ACT 2.FORNAT 00533 RCD 2,RE4n 00534 ACT 2.wRITF 00535 RCD 2,RFAnJNPU 00536 ACT 29HEAnTAPE 00537 RCn 2,WRTTEOLIT 00538 RCD 2,WRTTFTAP 00539 BCD 2,EIIFFER 00540 RCD 2,RIIFFERIN 00541 ACT 2,BUFFEROLI 00542 ACT 2,PRTNT 00543 ECO 2,P1INrH 00544 RCD 2,FNDFILE 00545 PCI 2.REWTNn 00546 ACT 2,HACVSPAC 00547 191

LAPEL PROCFSSOR RCD 2.FNC.^,0F 00548 RCD 2.DEC.^,0E 00549 RC0 2.FN0 00550 PCD 2.FINTS 00551 RCO 20RLOCK 00552 RCD z.ENOoLCCK 00553 FRwT1J UJP FPROG 00554 IIJP DELST 00555 IJJP FSIIRR 00556 UJP FFIINC 00557 OJP DELST 0055R IIJP FRFAL 00559 UJP PINT 00560 IIJP FCHAR 00561 IIJP FLOG 00562 UJP FTYPF 00563 UJP FOTMF 00564 IJJP FCOM 00565 IJJP FEOUTv 00566 FRWT2J IIJP FCALL 00567 U,ro FDATA 00568 IIJP SAOC 00569 UJP FGO 00570 UJP FOOLS' 00571 11JP FIF 00572 UJP FOO 00573 U,1P SADC 00574 UJP DEIST 00575 UJP STOP 00576 UJP OUST 00577 UJP FREAD 00578 UJP FWPITc 00579 UJP FREAOT 00580 UJP FREAOT 00581 IJJP FWRTTFT 00582 IJJP FWRITFT 00583 UJP DELST 00584 UJP DELST 00585 11JP DELST 00586 UJP ?PRINT 00587 UJP FPIIN 00588 UJP FFNOF 00589 UJP FREWI 00590 IIJP FRACK 00591 UJP DELST 00592 IIJP DELST 00593 UJP FEND 00594 UJP FFINTc 00595 UJP MOCK 00596 UJP FENDS 00597 IT1 555 1 00598 TLL4DD OCT 0 00599 FND 00600 192 n5

IDENT n5 00001 ARTEST MACRO (ARRAS. NARPAY) 00002 ASG PAR 00003 ASG 48 00004 I1jP NAPPAS 00005 ASG 14H 00006 ASG lOR 00007 11jP ARP AY 00008 I UP NAPPAY 00009 ENnM LETFST MACRO 00010 (LET,NSLET) 00011 ASG 728 00012 ASA 215 00013 161P NOLFT 00014 ASA 629 00015 ASS, 32R 00016 lije LET 00017 ASA 520 00018 ASG 415 00019 IL1P NCLET 00020 FNn.q 00021 INTVAP MACRC. IYFS...r1 00022 END 318 00023 ADj,EO YES 00024 END 415 00025 ADc1,LT NC 00026 FND 46R 00027 AQ.J,LT YES 00028 END. ggg:: COMMON 00030 SURRCL RSS o SUBROUTINE ROLL MAX 20 00031 SURCTR RSS SUBROUTINE ROLL CTS PUNCH 00032 RSS ALTERNATE OUTPUT LUN 00033 4RRAYF SSS ARRAY FLAG 00034 PLOCKCTR RSS BLOCK CTR 00035 CHANNEL RSS CHANNEL NUMBER 00036 CONSTF RSS CONSTANT FLAG 00037 D4TAF SSS DATA FLAG 00038 DYNARRAY SSS DYNAMIC ARRAY FLAG 00039 FFL4G PSS E TYPE CONSTANT FLAG 00040 TARCTR RSs ARRAY /SWITCH POLL CTS 00041 TARIN") RSS ARRAY PCINTFR 00042 ICOCTR RSS COMMON POLI_ CTR 00043 in ASS VARIARLE ATTRIBUTE/ CHARACTER CTR 00044 ID^,NEF RSS DONE WITH STATEMENT FLAG 00045 TDOCTR SSS DO ROLL CTR 00046 RSS IDSP DECLARATIVE STATEMENTS FINISHED 00047 TEOCTR SSS EQUIVALENCE ROLL CTR 00048 lEQF RSS EQUIVALENCE FLAG 00049 IFLFTF SSS FIRST LETTER FLAG 00050 THM RSS HIT OR INSERTION FLAG 00051 ILCCTR SSS LONG CONSTANT ROLL CTS 00052 SSS INPUT OVERFLOW AREA 00053 TNTN FISC 0 INPUT AREA INOl1T 00054 SSS RFAD /WRITE FLAG 00055 TPRCTR 555 PROGRAM ROLL CTR 00056 RSS ISCCTR 1 SHORT CONSTANT ROLL CTR 00057 SCRCTR ASS 1 1ST SCRATCH ROLL CTR 00058 SCRCiP7 ASS 2ND SCRATCH ROLL CTR 00059 SSS ISV 1 START VALUE 00060 ISWCTR FOU IARf.TR ARRAY/ SWITCH ROLL CTR 00061 ITPADD RSS TEMPORARY ADDRESS STORAGE 00062 ¡SPIN ASS 5 TEMPORARY STORAGE 00063 TVACTR PSS NARRAY ROLL CTR LOGE SSS 00064 LOGICAL OPERATOR FLAIl 00065 MAINPROG SSS MAIN PROGRAM /SUBROUTINE FLAP OpFSF 00066 SSS 1 OPERATOR FLAG 00067 RSS OUTPUT OVERFLOW AREA 00068 OUTTN RSS 24 OUTPUT AREA 00069 PARAMF PSS 1 PARAMETER FLAG 00070 PARFNF SSS 1 PARENTHESIS FLAG 00071 RELOPF RSS 1 RELATIONAL OPERATOR FLAG 00072 ISCNRL RSS 1200 SHORT CONSTANT ROLL MAX 400 00073 IVAROL ASS anon VARIABLE ROLL MAX 500 00074 ILCNRL ASS 600 LONG CONSTANT ROLL SAX 100 00075 IDOROL SSS 100 nO LOOP ROLL MAX 32 00076 ISCROL RSS ROO 1ST SCRATCH ROLL 00077 SSS SCRL2 2N0 SCRATCH ROLL 00078 TPRGRL RSS 1 PROGRAM ROLL 00079 ICCMRL Fou ILCNRI COMMON ROLL. MAX 600 00080 IFOROL FOU IOOHOI EQUIVALENCE ROLL MAX 100 00081 DATA 00082 a nn aeaeaaaeannaaaaeanaaraeaneeaa 00083 00084 ALGOL RESERVED WORD TABLE 00085 e e 00086 aaatlra*******nO*tlO***Q*atle000ar 0e 00087 POWER OCT 70000 00088 RCn 2, *POWER* 00089 TNTnIV CCT 50000 00090 RCn 2,45 Tl/* 00091 GT CCT 11('001) 00092 RCn, 3, ,GREATER* GE 00093 OCT 12000n 00094 RC!) 3, *NOT LESS* 00095 MAL OCT 10000 00096 RCD 1,= 00097 NE OCT 13000n 00098 RCn 3, *NOT EQUAL* 00099 LE CCT 15000n 00100 RCn 4, *N,^,T GREATER* 00101 LESS CCT 60000 00102 RCn 2, *1FS5* 00103 AND OCT 50000 00104 DS 193 RCn 2,*ANnm OR OCT 40000 00105 00106 Ron 1,*ORí NOT OCT 50000 00107 00108 BCD 2.tNCTd PERIOD OCT 1000n 00109 00110 PCn 1,, COMMA CCT 00111 10()00 00112 Pen 1 COLON OCT 30000 00113 00114 CCT 60126060 00115 SEMiCOL_N CCT 10000 00116 CCT 37606060 00117 LPAREN CCT 10000 00118 RCn 1,i RPARFN CCT 10000 00119 00120 RCn 1.1 REPSGN CCT 30000 00121 00122 OCT 60766060 CSLASH CCT 00123 20000 LEFT BRACKET 00124 CCT 60176(160 SLASHC CCT 20000 00125 OCT 00126 72606060 RIGHT BRACKET 00127 TRUE OCT 60000 RCD 00128 2, *TPIF* 00129 FALSE OCT 70000 RCD 2,tF41SEt 00130 00131 GOT0 CCT 70000 00132 BCD 2.AG0 TCt IF OCT 40000 00133 00134 RCn 1,8IFt THEN OCT 60000 00135 RCO 2tTHFNt 00136 ELSE OCT 60000 00137 RCn 00138 2,*F.LSF# 00139 FOR OCT 50000 00140 BCD 2,88c98 DO OCT 40000 00141 00142 RCn 1,t0Ct 00143 STEP 0CT 60000 RCn 00144 2,tSTFPY 00145 UNTIL CCT 70000 BCD 00146 2YIINTILt 00147 RE0TN OCT 70000 RCn 00148 2,*HEnINf 00149 ENO CCT 50000 RCD 00150 2.*ENne 00151 BOOLEAN OCT 11000n PCn 00152 3,3900LF4Nf 00153 INTEBER OCT 110000 RCD 00154 1.tINTFGER3 00155 PEAL CC7 60000 RCn 00156 2.*PFAL> 00157 ARRAY OCT 70000 00158 ROO 2,fA99AYt SWITCH OCT 101)000 00159 00160 RCn 2,tSWTTCHf 00161 PROC OCT 130000 00162 RCn 3.2PR^0FDIIRF2 PLUS OCT 1000n 00163 PCn 00164 1 00165 MINUS OCT 1000n RCn 1.- 00166 TIMES OCT 10000 00167 RCD 1° 00168 SLASH OCT 10000 00169 00170 RCD 1,/ ARCTAN OCT 00171 60000 00172 RCO ?.ARCTAN LN OCT 20000 00173 RCD 00174 1.LN 00175 ENTIER CCT 60000 00176 RCn 2.ENTTER TNREAL CCT 00177 60000 00178 RCO 2,INPrOi, OUTREAL OCT 70000 00179 RCD 00180 SIN 00181 OCT ;;NT30(100 1- 00182 RCO 1.SIN COS OCT 3000n 00103 00184 BCD 1,CCS ARS OCT 30000 00185 00186 RCD 1.Aß5 00187 E %P OCT 30000 00188 RCD 1,f:XP SORT OCT 40000 00189 00190 RCD I,S007 SIGN OCT 40000 00191 00192 RCD 1,510 ZERO OCT 10000 00193 00194 RCD 1,1) ONFHALF OCT 00195 30000 00196 RCD 1,0.5 ONE 10000 00197 OCT 00198 RCO 1.1 SIXTY 00199 OCT 20000 00200 RCD 1,60 SIXCNE OCT 20000 00201 00202 RCn 1.61 SIXTWC OCT 20000 00203 00204 RCD 1.62 00205 RACKSPCE OCT 11000n 00206 RCn 3.RAC SPACE ENnFILF CCT 70000 00207 RCn 00208 2,EN08TLE 00209 194

DS REWIND OCT 60000 00210 Sr!' 2,RFWTNI' 00211 ptl ppeeeeC *Mtletl44eee *e *e44tl0e 00212 tl e 00213 M TRANSLATOR ERROR MESSAGFS e 00214 e e 00215 4 0eetl ee *eee4M *Mpetlp68eee *tle,eee *e 00216 ERRI 6,0 RCD ILLEGAL VARIARLE 00217 ERR? RCn 7.0 ILLEGAL SURSCRIPTING 00216 ERRS PCI' 9.0 UNCORRECTARLF EQUIVALENCE ERROR 00219 FRR4 RCD 6,0 ILLEGAL SUBROUTINE 00220 ERRS RCn 6,0 IINSURSCRTPTEI' ARRAY 00221 FRR6 PCn 6,0 DELETED STATEMENT 00222 EMIT RCn 6,0 ILLEGAL CONSTANT 00223 Pities* RCI' 6,0 EQUIVALENCE ERROR 00224 ERR10 RCD 5,0 TOO MANY !RAH ENOS 00225 RCn 80 ILLEGAL REPETITION FACTOR 00226 FRR12 PSS 5 00227 FRP13 RS5 7 00228 tleee *M *Mp *M *O * *e4 4etlp44444 44444 e 00229 00230 e FORTRAN PESO., WORD e e TABLE 00231 e 00232 beep*MM*MMetleeee 00233 FRWT3 RCI' 2,SLT'F 00234. PCI' 2,SLTTET 00235 BCD 2.SSWTCH 00236 RCD 2,nVCuS 00237 RCI' 2,EXFI T 00238 RCn 2,OVFPFL 00239 RCI' 2,EOFCK 00240 8CD 2, I C iK 00241 PCD ?,i!NTTST 00242 RCI' ?.OVERLAY 00243 RCD ?,SE ;. mFN7 00244 PCn 2,F::RTDUMP 00245 RCn 2,AH5 00246 RCD 2,AHSF 00247 RCI' ?,14pçF 00248 RCI' 2.XAPSF 00249 PCI' 2,ALnn 00250 RCI' 2,4L'I'F 00251 RCI' 2,ATAN 00252 Pen 2,ATANE 00253 RCn 2,COS 00254 BCn 2,COSF 00255 PCn 2,EXP 00256 RCI' 2,FXPF 00257 RCO 2,FLnAT 00258 8CD 2,FLOATF 00259 RCD 2,IF1X 00260 RCI' 2,XFIXF 00261 RCD 2,FIXF 00262 RCI' 2,SIGN 00263 PCI' 2,STGNF 00264 BCn 2,XSTINF 00265 RCn 2,ISTPN 00266 RCI' ?,SIN 00267 PCD ?,SINE 00268 RCP ?,5087 00269 PCI' 2,SORTF 00270 RCI' 2,S1-T7FF 00271 RCD 2,SLTTETF 00272 PCI' 2.SSWTCHF 00273 BCD 2,DVCHKF 00274 PCn 2,EXFi 7F 00275 PCI' 2,CVFPFLF 00276 RCI' 2,EOFCKF 00277 PCI' 2,IOCHKF 00278 RCI' 2,NNTTSTF 00279 RCI' 2,LENC,HTF 00280 RCI' 2.NOT 00281 PCD 2,ANn 00282 PCn 2.OR 00283 RCn 2,EO9 00284 FRWT4 BCn 1,.GF. 00295 BCD 1,.GT. 00286 PCI' 1,.E0. 00287 PCI' 1,.NF. 00288 PCI' 1,.LE. 00289 RCn PRG 1,.LT. 00290 00291 195

INITIALIZE EJECT 00292 TITLE INITTALT7E 00293 ENTRY FPR; G. FSURR. FFUNC ,FRF_AL,FINT.FCHAR,FLCG.FTYPE 00294 ENTRY FOIME.FCOM.FEOIITV,FRLOCK,DSP 00295 EXT FEND. OECSRCH. DECSRCHP.DECSRCHO,NEWLINE,OUMMy 00296 ExT POCK. SEARCH .SE4RCH2.FETA.READTAPE,HIGHMEM 00297 EXT SADC.EEN014.SCOLON 00299 SNIT UJP 44 INITIALIZE CTRS AND ZERO OUT 00299 LOA TVACTP IVAROL. TLCNRL,AND ISCNRL. 00300 A7J,E0 INIT3 00301 SWA INIT2 00302 LOA =0606n6060 00303 FNT 1,2 00304 INIT1 STA IVAR,^,I -I,2 00305 INIT2 1ST 44,2 00306 UJP TNITI 00307 INIT3 LOA ISCCTR 00308 47J.FO INITA 00309 SWA INIT5 00310 LOA =O6069f4,6D 00311 ENT 1,? 00312 INTO'. STA ¡SCAR-1,2 00313 SNITS TST °4,2 00314 UJP TNTT4 00315 TNTT4 LOA ILCCTP 00316 A7J,F0 INITA 00317 SWA INITA 00318 LOA 9060606060 00319 ENT 1,2 00320 INIT7 STA ILCNPI -1,2 00321 TNTTR TST ,2 00322 UJP INIT7 00323 INIT9 LOA IDOCTR 00324 A7J,E0 INITIO 00325 SWA INIT11 00326 FNA O 00327 ENT 1.2 00328 INITIO STA InOROI -1.2 00329 INIT11 TST be,? 00330 UJP INITI0 00331 TNIT12 STA ARRAYS ARRAY FLAG90 00332 STA RLOCFFIR BLOCK CTR =0 00333 STA CHANNEL CHANNEL=0 00334 STA CONSTr CONSTANT FLAW/ 00335 STA DATAF DATA FLAG =0 00336 STA OYNAPPAY OYNAMiC ARRAY .0 00337 STA (FLAB E TYPE CONSTANT FLAG =O 00338 STA IDONFF GONE FLAG OFF 00339 STA TFOF FOUTVALENCE FLAG =0 00340 STA IFLETF 1ST LETTER FLAG OFF 00341 STA ISV START VALUE OFF 00342 STA LOGF LOGICAL OPERATOR FLAG OFF 00343 STA sorer OPERATOR FLAG OFF 00344 STA PARANE PARAMETER FLAG OFF 00345 STA PARENT PARENTHESIS FLAG OFF 00346 STA ICCCTP TCOCTR/ILNCTR =0 00347 STA TOOCTP 00 ROLL CTR /EOUTV ROLL CTR =n 00348 STA ISCCTR SHORT CONSTANT ROLL CTRe0 00349 STA SCFCTR 1ST SCRATCH ROLL CIR =O 00350 STA SCRCTP2 2ND SCRATCH ROLL CTR =0 00351 STA TVACTP VARRAY ROLL CTR =0 00352 STA IPR(:TR PROD ROLL CTR =0 00353 STA RELOPF RELATIONAL FLAG OFF 00354 STA IDSP 00355 FNA HIGHMFM 00356 STA TAROT', HIGHMEM INTO IARCTR 00357 UJP SNIT 00358 DiMENçION 196 FJFCT TITLE 00359 DIMF_NçION 00360 FOTME ERA 0 00361 STA IFLFTF 00362 STA IRPF 00363 STA IARINn 00364 TNT -1.1 L150 00365 INI 1,1 00366 ISO 73,1 TEST FOR COL 72 00367 UJP L152 00368 RTJ READTAPE CALL READTAPE 00369 I5F 6.1 - 00370 UJP L186 00311 UJP L150 LIS? LACH 00372 ININ -1,1 LETTER TEST 00373 LETFST (L153.L158) 00374 L153 LOA IFLETF A2J,NE 00375 LA157 TEST FOR FIRST LETTER 00376 ENA 18 00377 STA IFLFTF 00318 LOA DVNARRAY RESET ID FOP THE ARRAY 00379 5TA ID 00380 LACH ININ -1.1 INTEGER VARTAPLE TEST 00381 INTVAP (L156.L1551 00382 L155 ENA 48 REAL OESIONATOR 00383 UJP LIST L156 00384 ENA 58 INTEGER DESIGNATOR 00385 LIS? RAD TO LA157 RTJ 00386 PACK CALL PACK 00387 UJP L150 00388 LIAR END 17_H 00389 AOJ.LT LA157 NUMRER TEST 00390 LISP END 748 00391 ADJ,NE L167 LEFT PARF_N TEST 00392 ENA 0 00393 STA IFLETF IFLFTF =0 00394 ERAS -1 00395 STA IRPF NFG IRPF SIGNALS PROCESSED LEFT PAREN 00396 RTJ SEAPCH2 SEARCH VARRAY ROLL 00397 LOA MAiNPP CC IF MAIN PROGRAM IGNORE 00398 4Z.I,NE RAMS 00399 LOA ITPAnn 00400 SWA *.2 00401 SWA PAMO 00402 ** LPA 00403 LPA sO,D0007777 TEST FOP PARAMETER 00404 ASO 12 004 05 ASO 7 00406 IIJP PAM1 NOT A PARAM ENA 00407 4 ARRAY DESIGNATION 00408 PAMO RAD ** 00409 11JP PAM? PAM1 00410 ASO. 16 00411 450 12 00412 UJP PANS NOT A PARAM ARRAY PAM? 00413 FND .348 RIGHT PARER TEST 00414 PAM3 TNT 1.1 00415 ISO 73,1 00416 IIJP PAM4 00417 RTJ REA0T PF READ THE NEXT RECORD 00418 II.IP PAM3 PAM4 00419 LACH ININ -1.1 00420 AOJ.ED L150 DONE 00421 UJP PAM3 00422 RAMS LOA IHM INSERTION TEST 00423 A?J,NE. L162 IF HIT GC TO L162 00424 L161 LOT IAMCTR.2 TNSERTICN.PUT NAME ON VARRAY ROLL 00425 INT -1.2 00426 LOA ITPAnn 00427 STA Ost_ STORES ADDRESS OF NAME ON ARRAY 00428 INI -1.2 ROLL 00429 ENA CSLASH STORES ADDRESS OF 1/ ON ARRAY ROLL 00430 STA 0.2 00431 ST1 1ARCTR.2 00432 II.IP L150 00433 HIT INOTCATF0.1NSFRT ARRAY TDE.NTTFIER. IF AN ARRAY IS INDICATED SEARCH 00434 *ROLL. START PACKING ARRAY ROUNDS AFTER IT. 00435 L162 LOA ITPAnn 00436 SWA *1 00437 LOA AA 00438 LPA = 000007777 GET IO2 00439 ASO 248 ARRAY TEST 00440 ASO 48 00441 UJP L161 00442 450 14A 00443 ASO 108 00444 IIJP L164 00445 *NOT AN ARRAY 00446 L163 LOA ITPAnn CHANGE IO2 TO INDICATE AN ARRAY 00447 A.2 SWA 00448 FNA 4 00449 RA0 * 00450 UJP L161 HTT AND ALREADY 00451 OESIONATED AS AN ARRAY. SEARCH ARRAY ROLL UNTIL FOUND. 00452 L164 ENT HIGHMFMr2 00453 LOO ITPAnn 00454 LA164 LOA 0,2 00455 40J.E0 L166 00456 INT -1.2 00457 UJP LA164 00458 NAMEC/1.. APE ALREADY ON THE ARRAY ROLL. TARING POINTS TO EITHER A 00459 *COMMA OR SLASHC. 00460 LT66 TTA 2 00461 TN4.S -9 IARTNO HOLDS ADDS OF COMMA OR /1 00462 STA IARINn 00463 njMENSTCN (UJP LISO 00464 *TEST FOR A COMMA 197 L167 00465 ENO 738 00466 A0J,NF L177 00467 LDA IRPF IRPF =0 MEANS IGNORE COMMA 00468 47J,NF LA167 00469 STA IFLFTF IFLETF =0 00470 UJP L150 00471 *SEARCH SHORT CONSTANT ROLL FOR PARAMETER 00472 LA167 RTJ SEARCH 00473 ISCNRL 00474 ISCCTR 00475 3 00476 2 00477 TEST TARINO TO SEE IF ARRAY IS ALREADY ON THE ARRAY ROLL 00478 LDA IARIND 00479 47J,NE L172 *PUT 00480 1,CCLCN,PARAM,CCMMA OR SLASHC. COMMA ON THE ARRAY ROLL 00481 LOT IARCTR.2 00482 INI -1.2 00483 FNA ONE 00484 STA 0,2 00485 INI -1,2 00486 ENA COLON 00487 STA 0.2 00488 TNT -1.2 00489 LOA ITPAnn 00490 STA n,2 00491 INI .1,2 00492 LnA IRPF IF IRPF =O THEN 00493 A7J,LT L171 END OF DIMFNSTCNS IN AN ARRAY 00494 ENA SLASHC 00495 STA 0,2 00496 INT -1,2 00497 L171 ENA COMMA 00498 STA 0.2 00499 STT IARCTR,2 STORES ADDR OF LAST ELT UJP 00500 L150 00501 *CHECK IF RIGHT PARENTHESIS HAS BEEN ENCOUNTERED. ARRAY IS ALREADY *ARRAY ON 00502 ROLL 00503 L17? LOA IRPF 00504 A7J,LT L173 Go TO BUMP ARRAY *TRPF=O SO 00505 INSERT PARAM. SLASHC AND COMMA ARE ALREADY PRESENT 00506 LOT IARTNn.2 00507 LOA 0,2 TEST FOR /l. IF PRESENT PUT PARAM 00508 ENO SLASHC ON ARRAy ROLL. IF NOT PUT PARAM, 00509 AOJ,NF LA174 /1 ON ARRAY ROLL. ROMP ARRAY ROLL 00510 TNT 1,2 DOWN SINCE NEW ARRAY TS SMALLER 00511 LOA ITPAnn 00512 STA 0,7 00513 LA172 FNA 0 00514 ST4 IA TNn 00515 UJP L150 00516 LA174 INI 1,2 INC CTR 8Y 1 TO MOVE OFF COMMA 00517 LOA ITPAnn PUT PARAM. /) ON ROLL. SEARCH FOR 00518 STA 0,2 /1 ON ROLL COUNTING ENTRIES 0051q TNT -I.2 RUMP DOWN ARRAY ROLL RY ENTRY 00520 ENA SLASH,- COUNT. IARIND OFF. 00521 STA 0.2 00522 INI -1,2 00523 TTA 2 00524 TAT 3 R3=87 00525 ENn SLASHr SEARCH FOR /1 00526 LA17S LOA 0.2 00527 INT -1,2 00528 40J,NE LA17S 00529 LDA IARCTR 00530 SWA LA177 00531 LA176 LOA 0.2 00532 STA 0,3 00533 TNT -1,3 00534 LA177 ISO 4*,2 00535 UJP LA176 00536 TNT 1.3 00537 ST! IARCT0,3 00538 UJP LA172 00539 L173 LOT IAPINn,2 IARIND POINTING TO A COMMA. 0,2 IF 00540 LOA TRUE PUT NO. ON ARRAY ROLL. INC 00541 ENO COMMA IARIN) RY 4. IF FALSE GO TO LA173 00542 AOJ.NE LA173 00543 LDA ITPAnn 00544 STA 1.2 00545 FN4,S -A 00546 RAD TARIM, 00547 UJP LISO 00548 LA173 LDA ITPAnn TARINO POINTS TO /l. INSERT NO. 00549 STA 1,2 ANO BUMP ARRAY BY 4. NEW ARRAY 00550 LOA IARIND HAS MORE DIMENSIONS THAN THE OLD. 00551 SWA LC171 00552 LOT TAPCTR.3 00553 INT -4,1 83 =TARCTR.4 00554 LOT TARCTP.2 R2 =TARCTR 00555 SIT IAPCTR,3 STORE BUMPED IARCTR 00556 L8173 LOA 0.2 00557 STA 0,3 00558 TNT 1,3 00559 INI 1,2 00560 LC173 ISE A *,2 00561 UJP L9171 00562 LOT T4RINn.2 R2 HOLDS OLO IARIND 00563 ENA COMMA PUT .1.. /1 ON ARRAY ROLL 00564 STA 0,2 00565 INI -1,2 00566 ENA ONE 00567 STA 0.2 00568 198

RIME. NC TON TNT -1 +2 00569 ENA COLON 00570 STA 0.2 00571 TNT -2.2 00572 ENA SLASNr 00573 STA 0,2 00574 SIT IARINO,2 IARINO POINTS TO I1 00575 UJP L150 00576 'TEST FOR RTRHT PARENTHESIS 00577 1177 ENO 7413 00578 AOJ,NE LIR5 00579 ENA 0 00580 STA IRPF 00581 UJP LA167 00582 L185 ENO 53M END CF STATEMENT TEST AOJ,NE 00583 L150 00584 LIRE UJO FETA OC TO E %P TYPE ANAL 00585 199

TYPE EJECT TITLE 00586 TYPE 00587 FREAL ENA 0 00588 UJP LA214 FINT 00589 ENA 1 00590 UJP LA714 FLOG 00591 ENA 2 00592 UJP LA214 ECHO? 00593 ENA ERR1 00594 ENO 6 00595 WRITE 61 ENA 00596 3 00597 UJP LA214 00598 FTVPE LOCH ININ -1,1 TEST FOR RIGHT PAREN TO PASS OVER 00599 348 ENO OTHER DESIGNATION. PRINT ERROR 00600 A0.1.E0 FCH5R MESSAGE. THE RIGHT PAREN WILL 00601 INT 1,2 BE IGNORED C0602 ISI 72.1 00603 UJP FTYPE 00604 RTJ REAOTAPE 00605 UJP FTYPE 00606 LA214 STA ID STA 00607 171 00608 L214 INT -1.1 TEST SUCESSFUL 00609 ENA 0 00610 STA IDONEE L215 00611 TNT 1,1 INCREMENT LETTER COUNTER 00612 I5G 73,1 00613 UJP L219 00614 RT.1 REAOTAPE 00615 TEST FOR END OF STATEMENT 00616 ISE 0,1 00617 HIP L215 00618 L217 ENA,S -IR 00619 STA !DONEE TDONEF = -1 00620 LOA ID 00621 LPA 4077770000 00622 AZJ,EO FETA IF ZERO GO TO EXP TYPE ANALYZER 00623 UJP L221 00624 *TEST FOR NONALPHANIIMERIr SYMBOL 00625 L218 LACH ININ -1.1 00626 ENO 128 00627 AOJ,LT L219 NUMBER 00628 LETEST (L219.L2201 00629 L219 RT.1 PACK PACKS THE LETTER UJP 00630 L215 00631 L220 ENO 73B TEST FOR COMMA 00632 A0J.NE L227 *TEST 00633 SUCESSFUL.CALL SEARCH 00634 L221 RT.1 SEARCH2 00635 LOA IHM 00636 AZJ.E0 L226 IF INSERTION GO TO L226. 00637 H/T. CHANGE IO TO PROPER TYPE. L220 00638 LDA ITPAnn 00639 SWA LA220 00640 SWA LA224 00641 SWA L225 00642 LA220 LDA A HOLDS CONTENTS OF ITRADO 00643 LPA =000007777 GET TYPE 00644 ENO OR 00645 L224 INO 48 00646 A0J.GE L224 00647 INO,S -4R 00648 SHAG 24 00649 RAD IT1 PROPER IO2 IN IT1 00650 LA224 LDA 0 00651 LPA =077770000 101 WANTED 00652 ADA I11 L225 00653 STA PUT CORRECT IU ON VARRAY ROLL 00654 LOA IO PUT CORRECT VALUE HACK INTO IT1 00655 LPA =000007777 00656 STA ITT 00657 TEST FOR ENO OF STATEMENT 00658 L226 LDA IDONEE 00659 AZJ.GE L215 00660 L228 UJP FETA GO TO EXP TYPE ANAL 00661 TEST FOR A DOLLAR SIGN 00662 1227 ENO 538 00663 A0J,E0 L217 00664 UJP L215 00665 COMMON EJECT 00666 TITLE COMMON 00667 200 FCOM ENA 0 00668 STA IFLETF 00669 STA IRPF 00670 STA TOONEF 00671 INI -1.1 DECREMENT 91 00672 LCOM1 INI 1.1 INCREMENT 81 81 CONTROLS THE INPUT SYMBOLS 00673 ISO 73.1 81 GE 73 00674 OJP LC ^M3 PTJ RE4 00675 "TAPE READ NEXT RECORD 00676 ISE 6,1 00677 UJP LCOM2 00678 UJP LCD "'1 00679 LCOM2 ENA 1 TEST FOR UNPROCESSED VAR. ¡F NONE 00680 STA IDONEF GO TO FETA. IF S0 GO TO LCOM22 00681 LOA ID 00682 LPA e 077770000 00683 A7J,N0 FETA IF TOPO GO TO ARITH EXP ANAL 00684 UJP LCOM22 00685 LCOM3 LACH ININ.1,1 00686 ENO 610 A0J.NE 00687 LCCM6 TEST FOR 1ST / IN / DATA / 00688 LCOM4 INI 1.1 EQUAL 00689 ISO 73,1 00690 UJP LCOMS 00691 RTJ READTAPE 00692 UJP LCOM4 00693 LCOMS LACH ININ -1,1 TEST FOR 2ND 1 IN /DATA/ 00694 ENO 618 00695 A0J,EQ LCOMI 00696 UJP LCOM4 00697 LCOM6 LETEST (LCOM7,LCO61121 *TEST 00698 FOR FIRST LETTER 00699 LCOM7 LOA IFLETF 00700 AZJ,NE LCOMII NO 00701 LACH ININ -1,1 INTEGER VARIABLE TEST 00702 INTVAR 1LCOM9,LCOMp) 00703 LCOMB FNA 108 SET REAL PARAM 00704 UJP LCOM1O ICONS 00705 ENA 118 SFT INTEGER PARAM 00706 LCOM10 STA ID 00707 ENA 1 00708 STA IFLETF TFLETF=1 MEANS THAT THE 1ST RTJ 00709 LCOM11 PACK LETTER ¡S PROCESSED 00710 UJP LCOM1 00711 LCOM12 ENO 128 NUMBER TEST 00712 40J.LT LCOM11 00713 ENO 74R LEFT PAREN TEST 00714 AZJ,NE LCOM71 00715 ENA 0 SEARCH VARRAY ROLL FOR VARIABLE 00716 STA IFLETF IFLETF=O 00717 ENA 1 IRPF =1 00718 STA IRPF 00719 RT.) SEARC82 00720 LOA MAINPPO(, IF MATNPROG IGNORE 00721 A7J,NE PAM8 00722 LOA ITPAnn GET ID2 00723 SWA *.2 00724 SW4 PAM6 o* 00725 LOA 00726 LPA r00007777 00777 ASO 12 00728 ASO 7 00729 UJP PAM7 00730 ENA 4 ARRAY DESIGNATION 00731 PAM6 0* RAD 00732 UJP LCOMI7 SEARCH FOR COMMA AFTER RANT PAREN 00733 PANT ASS 16 00734 ASO 12 00735 UJP PAM8 00736 UJP LCOM17 00737 PAM8 LOA IHM INSERTION TEST AZJ,NE 00738 LCOMI. HIT 00739 UJP LCOMIK INSERTION 00740 LCOM13 LDA ITPAnn TEST FOR ARRAY 00741 LPA =000007777 GET IO2 00742 ENO 48 00743 AOJ,LT LCOM14 NO 00744 ENO 108 00745 AOJ.LT LCOMIA YES 00746 EN0 148 00747 AOJ,L1 LCOM14 NO 00748 ENO 238 00749 AOJ.GE LCOM16 YES 00750 LCOM14 LDA ITPADn PUTS COMMON DESIGNATION ON TO IN 00751 SW4 *.2 1ST WORD OF VARRAY ROLL. 00752 ENA 148 00753 RAn * 00754 Loom. LOT ICOCTP,2 STORE /TRAM ON COMMON ROLL 00755 IMI 1,2 00756 LOA ITPAnn 00757 STA ICOMRL -1,2 00758 SIT -ICOCT4.2 00759 LOI IARCTP,2 00760 TNI -1,2 00761 LOA ITPAnn 00762 STA 0,2 ARRAY NAME ON ARRAY POLL 00763 INI -1,2 00764 FNA CSLASH 00765 STA 0,2 00766 SIT TARO TO.2 STORES CURRENT VALUE IN IARCTR 00767 LOA ITRADO PUT ARRAY DESIGNATOR ON VARRAY 00768 SWA *.2 ROLL 00769 ENA 4 00770 COMMON RAD es 00771 201 UJP LCOMI 00772 *ARRAY, CHANGE ROLF DF.SIONATOR. SEARCH FOR ADDRESS COMMA FOLLOWING RIGHT PARFN, 00773 OF ARRAY ON COMMON ROLL 00774 LCOM16 LOA ITPAnn 00775 SWA *.2 00776 ENA 108 00777 RAO e* 00778 LCOM17 INI 1,1 00779 ISO 73.1 00780 UJP LCOMI 00781 UJP RFADTAPF 00782 UJP LCOM17 00783 LCOMIR LOCH -.1 INTN ,1 00784 ENO 348 00785 A0J,NE LCOM17 00786 ENA 0 00797 STA IRPF 00788 STA IFLETF 00789 LOI ICOCTP,2 00790 INI 1,2 007g1 LOA ITPAnn 007ç2 STA IC0891 -1.2 00793 STI ICCCTP,2 00794 UJP LCOM1 007qá COMMA TEST LCOM21 00796 ENO 738 00797 A0J,NE LCOM2a COMMA TEST FAILED 00798 LOA ID 00799 LPA A077770000 TEST FOR 0 CHAR COUNT 00800 AZJ,FO LCOMI 00801 LCOM22 0 ENA 00802 STA IFLETF IFLETF0 00803 LOA IRPF 00804 FNO 1 40J,GE 00805 LCOM74 00806 RTJ SEARCH2 SEARCH VARRAY ROLL 00907 LOA IHM 00808 A2J,E0 LCOM27 INSERTION TEST 00809 LCOM23 LOA ITPAnn HIT.PIITS PARAM DESIGNATOR ON VARRAY ROLL 00810 SWA *2 1F ELT IN EOUIV GROUP IS IN 108 00811 ENA COMMON THEN 1ST ELT IN RAD ee EQUIV 00812 GROUP IS IN COMMON. 00813 LCOM27 LDI ICOCTP,2 00814 INI 1,2 00815 LOA ITPAnn 00816 STA ICOMRL -1,2 00817 STI TC^CTo,2 00818 LOA IDONFF 00919 47.I.NF FETA GO TO EXPRESSION TYPE ANALYZER 00820 UJP LCOml 00821 *PROCESSING AN ARRAY 00822 LCOM26 LOT IARCTU.2 00823 INT -1.2 00824 FNA ONE 00825 0,2 STA 400R OF ONE OF THE ARRAY ROLL. 00826 INI -1,2 00927 ENA COLON 00828 STA 0.2 400R Of COLON ON ARRAY ROLL 00829 STI IARCTP,2 00830 RTJ SEARCH 00831 ISCNPI 00832 LSCCTa 00833 3 00834 2 00835 LOT IARCTO.' STORE ADDR OF DIMENSION ON ARRAY ROLL 00836 INI -1,2 00837 LOA ITPAnn 00838 STA 0,2 00839 STI IARCTR,2 00840 FNO 2 00841 LOA IRPF 00842 AOJ,EQ LCOM24 00843 INI -1.2 00844 ENA COMMA OOg45 STA 0,2 COMMA CN ARRAY ROLL 00046 STi IARCTP,2 00847 UJP LCOMI LCOM24 00849 INI -1 ,2 00849 ENA SLASHr 00850 STA 0.2 SLASHC ON ARRAY ROLL 00851 SNI -1,2 00852 ENA COMMA 00853 STA 0,2 COMMA CN ARRAY ROLL 00854 STI IARCTP,2 00855 ENA 0 00856 STA IRPF IRPFs0 00857 STA ID 1 :F0 00859 UJP LCOM1 00859 LCOM25 FNO 34R RIGHT PARENTHESIS TEST 00860 A0J,NE LCOM2 FNA 00861 2 00862 STA IRPF IRPFs2 00863 UJP LCCM27 00864 LCOM28 ENO á3B TEST FOR ENO OF STATEMENT 00865 AOJ,EO LCOM2 UJP 00866 LCOMI 00967 SIIRRCIITINE AND FUNCTION SUBROUTINE STATEMENTS EJECT - 00868 202 1TTL F. SUBROUTINE AND FUNCTION SUBROUTINE STATEMENTS 00869 FSUBR ENA 23 SUBROUTINE ENTRY 00870 UJP .2 00871 "'rust ENA 20 FUNCTION SUBROUTINE ENTRY 00872 STA ID 00873 RTJ INIT INIALIZE ROLLS AND CTRS 00874

ENA 0 - 00875 STA MAINPRCG INDICATES SUBROUTINE 00876 STA IOONEF 00877 STA IFLETF 00878 STA IRPF 00879 INI -1.1 00880 FSU91 INI 1.1 00881 I5ß 73,1 00882 UJP FStIB2 00883 RTJ READTAPE 00884 15E 6.1 00895 IIJP FSURRI 00886 UJP FSU81 00887 FSURR1 ENA.S -1 END OF STATEMENT ROUTINE 00888 STA IDCNFF 00889 LOA ID 00890 LPA =077770000 00891 AZJ.EQ FETA 00892 UJP FSIIHI q 00893 FSU92 LACH ININ -1.1 00894 LETEST (FSUR7.FSUR61 00995 FSUR3 LOA IFLETF ALPHANUMERIC SYMBOL 00896 A7J,NE FSUHIS 00897 ENA 1 FIRST LETTER ROUTINE 00898 STA !ELITE 00899 LDA ID 00900 FNQ 23 00901 AQJ,EQ FSURI5 SUBROUTINE 00902 LACH INTN -1.1 INTEGER VAR TEST 00903 ENO 318 00904 AOJ.E0 FSUB4 INTEGER VAR 00905 ENO 419 00906 AOJ,LT FSURI9 REAL VAR 00907 ENO 468 00908 AOJ.GE FSU815 REAL VAR 00909 FSUR4 ENA 1 INTEGER SUBROUTINE. REAL 00910 FSUB16 RAD ID ATTRIBUTE IS ALREADY HANDLEn. 00911 FSU915 RTJ PACK 00912 FSUH1 00913 FSUR6 ENO 12 NUMRER TEST 00914 AOJ.LT FSURIS 00915 ENO 748 TEST FOR LEFT PAREN 00916 AQJ.NE FSURIQ 00917 FSUR19 ENA 0 00918 STA IFLETF IFLETFsO 00919 RTJ SEARCH2 SEARCH VARRAY ROLL 00920 LOT iPRCTR,2 00921 INT 1,2 00922 LOA ID 00923 LPA 000007777 00924 ENO 23 00925 A0J,E0 FSURR SUBROUTINE 00926 ENO 20 FUNCTION SUBROUTINE. PUT REAL OR 00927 AQJ.EO FSUR21 INTEGER ON PROS ROLL. TEST 00928 ENA INTEC,FR FOR REAL SUBROUTINE. 00929 UJP F5119L 7 00930 FSUR21 ENA REAL REAL ON FROG ROLL 00931 FSUR7 STA IPRGRI_ -1 .2 00932 TNT 1,2 00933 FSURR ENA PROC PROCEDURE ON PROS ROLL 00934 STA IPRGRI -1.2 00935 INT 1,2 00936 LOA ITPAOn 00937 STA IPRGRI. +1.2 NAME ON PROA ROLL 00938 INI 1,2 00939 LDA IDONEF IF DONE PUT .. ON PROS ROLL. IF 00940 AZJ.EQ FSUB2n NOT PUT LEFT PAREN ON PROA ROLL 00941 ENA SCOLON 00942 STA IPRGRI -1.2 00943 INT 1,2 00944 ENA HEMLINE 00945 STA IPRGRL -1.2 00946 TNT 1.2 00947 ENA BEGIN 00948 STA IPRGRL -1,2 00949 INI 1,2 00950 ENA DECSRCH 00951 STA IPRGRL -1.2 00952 STI IPRCTR,2 00953 ENA 1 00954 RAD BLOCKCTR 00955 UJP FETA 00956 F5UB20 ENA LPAREN LPAREN ON PROS ROLL 00957 STA IPRGRL -1.2 00958 STI IPRCTR.2 00959 FSUB9 ENA 8 PUT FOAM DESIGNATION IN ID 00960 STA ID 00961 UJP FSURI 00962 FSUR10 ENO 738 COMMA TEST 00963 AOJ.NE FSUR14 00964 FSUR11 ENA 0 00965 STA IFLETF 00966 RTJ SEARCH2 SEARCH VARRAY ROLL 00967 FSUP12 LOT IPRCTR.2 00968 INI 1,2 00969 LDA TTPADn 00970 STA IPRGRI_ -1.2 VAR NAME ON PROS ROLL 00971 TNT 1,2 00972 203

SUBROUTINE AND FUNCTION SUBROUTINE STATEMENTS LDA IRPF 00973 AZJ,NE FSII813 00974 ENA COMMA 00975 STA IPRGRL -1.2 00976 ST/ IPRCTP,2 00977 UJP FSU89 00978 FSUR13 ENA RPAREN PROG 1 ON ROLL 00979 STA IPR0PI -1.2 00980 INT 1.2 00981 ENA SCOLCM .. ON PROG ROLL 00982 STA IPRGRL -1,2 00983 INT 1.2 00984 ENA DE.CSRÇHP 00985 STA TPR017I -1.2 00986 INI 1.2 00987 ENA NEWLINE 00988 STA IPRGRL -1.2 00989 INT 1.2 00990 ENA BEGIN 00991 STA IPRGRI -1.2 00992 INI 1,2 00993 ENA DECSRCH 00994 STA IPRGRL -1.2 00995 STI IPRCTR.2 00996 ENA 1 RAD 00997 BLOCKCTR 00998 UJP FSIIRI 00999 FSUR14 ENO 348 RIGHT PAREN TEST 01000 AOJ.NE FSUR14 01001 ENA 1 01002 STA IRPF 01003 UJP FSIJBII 01004 FSIJRIB ENO 538 ENO OF STATEMENT AOJ.NE 01005 FSIIRI 01006 LDA ID 01007 LPA 4077770000 01008 AZJ.EO FETA IF ZERO GO TO EXP TYPE ANALYZER 01009 UJP FSU819 01010 204

PROGRAM EJECT 01011 TITLE PROGRAM 01012 FPRCG FNA 25 ID2 =25, PROGRAM 01013 STA ID 01014 ENA 1 01015 STA MAINPRCG 01016 RTJ INTT INITIALIZES FLAGS AND COUNTERS 01017 TNT -1,1 mole EPROM ISI 72.1 01019 UJP FPPOG? 01020 RTJ READTAPE 01021 ISE 6,1 IF R1 =6 CONTINUATION CARO 01022 UJP FPROGS 01023 UJP FPROG1 01024 FPRCG2 LACH IRIS -1.1 TEST FOR ALPHANUMERIC CHARACTFR 01025 LETEST (EPRO,G3.FPRoG4) 01026 FPROG3 RTJ PACK 01027 UJP FPROG1 01028 FPROG4 ERO 128 01029 AOJ.LT FPROG1 YES 01030 ENO 53R END OF STATEMENT 01031 AOJ.NE FPROG1 01032 FPROG5 RTJ SEARCH? 01033 LOA ITS 01034 AZJ.NE FPROG6 01035 LOT IPRCTP.2 01036 INT 1,2 01037 LOA ITPAnn NAME ON PROD ROLL 0103g STA IPRGRI -1,2 01039 TNT 1.2 01040 ENA NEWLTNE NEWLINE ON PROG ROLL 01041 STA !PARR' -1,2 01042 TNT 1.2 O1o47 ENA BEGIN RESIN ON FROG ROLL 01044 STA !PROP' -1,2 01045 INT 1.2 01046 ENA NEWLTNE NEWLINE ON FROG ROLL 01047 STA IPRGR( -1.2 01048 STT IPRCTR.2 01049 ENA 1 01050 STA ITS 01051 ()JP F£NDIA JUMP TO OUTPUT ROUTINES 01052 FPROG6 LOI IPRCTR.2 01053 INT 1,2 01054 ENA BEGIN BEGIN ON FROG ROLL 01055 STA IPRGRL -1.2 01056 INI 1.2 01057 ENA DECSRCH DECSRCH ON PROD ROLL 01058 STA IPRGR1-1.2 01059 STI IPRCTR.2 01060 ENA 0 01061 STA ITS 01062 ENA 1 01063 STA BLOCKCTR 01064 /UP FETA 01065 5 EQUIVALENCE 20 EJECT 01066 TITLE EQUIVALENCE 01067 fEOUIV ENA 0 01068 STA IRPF 01069 STA IFLETF 01070 TNT -1,1 OFCRE'WNT RI L120 01071 TNT 1,1 INCREMENT RI 01072 ISG 77,1 TEST FOR COL 73 01073 UJP L122 01074 RTJ RF_AD1nPF 01075 ISE 6,1 01076 UJP FETA 01077 UJP L120 01078 LI22 LACH INJN -1.1 01079 LETEST U.123,L1291 01090 L123 LOA IFLETF 01081 A7J,NE L126 FIRST LETTER. DETERMINE IF REAL 01082 LOCH ININ -1.l OR INTEGER. 01093 FN0 318 01084 A0J.E0 L125 INTEGER VARIABLE 01095 ENO 419 01096 AOJ,LT L126 01087 ENO 469 01089 A0J.GE L126 REAL VARIABLE 01089 L125 ENA 19 INTEGER ROLE DESIGNATOR 01090 UJP L127 01091 L126 ENA 0 REAL ROLE DESIGNATOR 01092 L127 STA ID 01093 ENA,S -IR IFLETF. -1 01094 STA IFLETF 01095 L129 RT.I PACK 01096 UJP L120 01097 L12.9 ENO 128 NUMBER TEST 01098 A0J,LT L128 01099 ENO 739 TEST FOR A COMMA INSIDE AN 01100 AOJ,NF L135 EOUIV GROUP 01101 l0Á IRPF 01102 A7.I,LT L132 01103 UJP L120 COMMA TO RE IGNORED IF IRPF NE .1 01104 1132 RT.I SEARCH2 SEARCH VARRAY ROLL 01105 ENA 0 TEST FOR 1ST ELT IN AN EOUIV 01106 RIA IFLETF GROUP. IF IEOF =0 1ST ELT IN 01107 LOA IEOF EOUIV GROUP. STORE 4DDR IN TEOF 01108 A7J,NE L134 AND IN IERROL. IF NOT PUT AODR 01109 LOA INTO VARRAY ROLL 01110 STA 01111 SWA REDUCE 102 OF 1ST ELT TN EOUIV 01112 L4132 LOA GROUP 01113 LPA En7777 . 01114 ENO R 01115 A0J,GE L8132 01116 STA IARINn TARINI HOLDS REDUCED 1112 01117 UJP LC132 01118 L8132 INA.% -R 01119 STA IARINO 01120 LC132 ENA 18 01121 RAT IEOCTR IEOCTR =TEOCTR.1 01122 LOI IEOCTP,2. 01123 LOA ITPAnn 01120 STA IFQRTI -1,2 01125 UJP L120 01126 L114 LOA ITPAnn 01127 SWA LA734 COMPASS REDUCED 102 OF ELT IN 01128 44 L8134 LOA EOUIV GROUP AGAINST 1ST ELT IN 01129 LPA =OOOnn7777 EOUIV GROUP. IF NOT EQUAL ERROR 01130 ENO 8 MESSAGE. IO2 OF EOUIV GROUP TS 01131 40.1.GE LC134 102 OF 1ST ELT, 01132 UJP L0134 01133 LC134 INA,S -8 01134 LD134 LOO IARIN' 01135 AOJ.FQ LE134 01136 ENA ERRS 01137 ENO 6 01138 WRITE 61 01139 LE134 LDA ITPAnn 01140 SWA 9.2 PUT 0 INTO 101 SO SEARCH ROUTINE 01141 SWA a.3 WILL NOT PROCESS IT. 01142 LOA ww 01143 LPA =000007777 01144 STA we 01145 LOA ITPAnn 01146 INA 3 01147 SWA LF134 01148 LOA IEDE 01149 sa LF134 STA PIITS PROPER ADDRESS CN VARRAY ROLL 01150 UJP L120 01151 L135 ENO 749 TEST FOR LEFT PAREN 01152 AO.I. NF. L544 01153 LOA I00F IF NOT ZERO A LEFT PAREN HAS REEK 01154 AZJ,nIF L138 ENCOUNTERED SO WE HAVE AN ILLEGAL 01155 ENA.S -18 ARRAY 01156 STA IRPF IRPF. -1 I HAS REEN ENCOUNTERED 01157 FNA 0 01159 STA IEOF START OF EOl1IV GROUP 01159 UJP L120 01160 L13R FNA ERR? ERROR ROUTINE. ARRAY FOUND. 01161 FNO 7 01162 WRITE 61 01163 L141 ENO 348 SEARCH FOR RIGHT PAREN TO nFLETE 01164 LA141 INT 1.1 SUBSCRIPTS 01165 LATH ININ -1.1 01166 AQJ,EO L120 TEST FOR RIGHT PARENTHESIS 01167 ISG 73.1 - 01169 UJP L4141 01169 RTJ READTAPE READ NEXT RECORD 01170 20 6

EQUIVALENCE UJP L141 01171 L144 ENO 34B RIGHT PAREN TEST 01172 AOJNE L146 01173 ENA 0 01174 STA IRPF 01175 IJJP L132 01176 L146 ENO 535 ENO OF STATEMENT TEST 01177 AQJ,NE L120 01178 UJP FETA GO TO EXP TYPE ANAL 01179 DECLARATIVE STATEMENT PROCESSOR 207 EJECT 01180 TITLE DECL4RATTVE STATEMENT PROCESSOR 01181 DSP UJP AA 01182 LOA IVACTR 01183 SWA DSP21 01184 LOA IFOCTP 01185 A7J.E0 DSP19 NO EOUIV STATEMENTS 01186 SWA OSp22 01187 ENT 0.2 82 HOLDS IEOROL INDEX 01188 OSP1 ENI 1.3 H3 HOLDS VARRAY INDEX 01189 LOO IEORCI,2 CALCULATE ADDR OF EACH ENTRY TN 01190 DSP2 ENA TVARCI -i VARRAY ROLL 01191 ATA 3 01192 ADJ,EO DSPS 01193 IN1 4.3 01194 UJP DSP2 O119S OSP3 STA IT1 III HOLDS HOUR OF 1ST ELT IM 01196 LOA TVAR^I -1,3 EQUIVALENCE GROUP. 01197 LPA eCO0nn7777 PICK IIP ROLE DESIGNATOR 01198 FNO 206 REDUCE TO LOWEST DENOMINATOR 01199 AOJ,LT nsP4 01200 INA,S -140 ROLE DESIGNATOR GF 16 01201 UJP DSPS 01202 DSP4 ENO 106 01203 AOJ,LT DS P'5 01204 INA,S -lull ROLE DESIGNATOR GE 8 01205 DSPS STA TT2 IT2 HOLDS REDUCED ROLL DESIGNATOR 01206 ENT 3.3 SEARCH VARRAY ROLL FOR THE REST 01207 DSP6 LOO IT1 OF THE EOUIV IF FOUND 01208 LDA IVAR,^, Lr3 CHECK FOR TYPE AND KIND. 01209 AOJ,EO OSPR TEST FOR SAME ADDRESS 01210 09p7 TNI 4,3 01211 OSP11 ISO ,3 TEST ON LENGTH OF VARRAY ROLL, 01212 IIJp DSP., 01213 UJP DSPla 01214 Dana INI -3.3 SET UP TNOEX TO GET ROLE DESIGNATOR 01215 LOA IVAROI .3 01216 LPA _0000 77TT 01217 ENO 20H REDUCE TO LOWEST DENOMINATOR 01218 A0J,LT OSP9 01219 INA,S -148 01220 UJP 175010 01221 058V ENO 108 01222 AOJ.L7 DSPIO 01223 INA,S -10H 01224 05010 LOO IT2 TEST FOR SAME KIND AND TYPE 01225 AOJ,FO OSP11 01226 A7.1.FO DSP11 01227 ENA ERP3 11NCOR9EcTABLE ERUTVALENCE ERROR 01228 FNO O 01229 WRITE 61 01230 58JP ENDS THE TRANSLATOR 01231 DSP11 ENA 77 77 INTO ID TO PREVENT SEARCH FROM 01232 STA IVAR,, ^,I ,i PROCESSING FUUIVALENCED VARIABLES 01233 FNA IVAR, ^,I 01234 ATA 3 GET ORIGINAL ADDRESS OF ENTRY 01235 STA TTrAn, ITPADO HOLDS THE ORIGINAL ADDRESS OF ENTRY 01236 STT Ill', 113 HOLDS THE IEDROL INDEx 01237 DSPIS LOA IVAR ^,1,3 PARAMETER TEST 01238 INI 3.3 01239 LPA =000007777 PICK IIP ROLL DESIGNATOR 01240 ENO l0P CHECK FOR PAR4M DESIGNATOR 01241 AO.I.LT DSPI6 NO 01242 FNO 208 01243 AOJ,LT OSP14 NC 01244 LOA ICOCTP 84RAM DESIGNATOR. SEARCH ICOROL 01245 SWA OSP2v FOR ORIGINAL ADDRESS. 01246 STI IT3.2 STORE IEOROL INDEX 01247 ENT 0,2 01249 LOO ITPAOn ORIGINAL ADDRESS OF ENTRY 01249 05816 LOA ICOMRI...2 01250 AOJ,EO DSP17 01251 INI 1,2 01252 DSP29 I59 44,2 TEST ON LENGTH OF COMMON ROLL. 01253 UJP OSP16 01254 uJP DSP14 NOT ON COMMON ROLL 01255 05017 LOA IT1 CHANGE ADDR ON COMMON ROLL 01256 STA ICOMRI .2 01257 OSPI4 LOI IT3.2 RELOAD IEOROL INDEX 01258 UJP 09P7 01259 DSPI8 LOI I73r2 RESTORE IERROL INDEX. INCREMENT 01260 INI 1,2 INDEX AND TEST. 01261 05022 ISO .2 TEST ON LENGTH OF IEOROL 01262 UJP DST,' 01263 DSP10 LOA ICOCTP TEST FOR COMMON ELTS. IF PRESENT 01264 A2J.E0 DSP AND SUNOOI!TINE PUT ELEMENTS ON 01265 LOA MAINPPO (3 LIST CF FORMAL PARAMS. 01266 A7J.NE OSP 01267 FNO SCOLON TEST FOR SCOLON ON PROG ROLL. 01268 LOI IPRCTR.2 01269 DSP31 LOA IPU C, RI -1.2 01270 AO.1.EO DSP37 01271 INI -1,2 SEARCH FOR SCOLON ON PROD ROLL. 01272 UJP DSp31 01273 OSP32 TNI -1,2 01274 ENO RPARFM 01275 LOA IPRC, RI -1.2 01276 AOJ.EO DSP3S SPZREN PRESENT 01277 TNI 1,2 COMMON ELTS ON PROS 01278 ENA LPARFM ROLL 01279 STA TpR.RI -1.2 01280 INI 1,2 PUT 1ST COMMON ROLL ENTRY ON PROD 01291 LOA ICCMRI. ROLL. 01292 STA IPR6pI -1,2 01283 ENT 1,3 01284 208

DECLARATIVE STATEMENT PROCESSOR TNT 1.2 IIJF OSP3F 05/.35 ENI 0,3 1 ()SPY, LDA ICOCTP SMA DSP3n 1SW4

1DSP30 nSP70 ISJ +..,3 TEST ON Of COMMON LENGTH ROIL. 1U,IP 1IJP o.2

1UJP UJP 05Fì7 011::: ENA COP^MA 01293 STA JPP,PI -1,2 01294 TNT 1,2 01295 LD4 ICOMPI -1,3 01296 STA IPRGai -1,2 01297 INI 1,2 01298 UJP OSP30 01299 DSP37 ENA APAREN PUT RPAREN,SCCLON, APRAY SEARCH, 01300 STA IPRGPI -1.2 COMMANDS ON THE PROS ROLL. OPRATE 01301 INT 1,2 PROG ROLL CIM, INC BLOCKCTR. ANO 01302 ENA SCOLC, RETURN. 01303 STA TPA(.PI -1,7 01304 INI 1,2 01305 ENA NFhLT ^T 01306 STA IVP,PI -1,2 01307 INT 1,2 01309 ENA OECSPfHP 01309 STA IPRGPI -1.2 TNT 01310 1,2 01311 ENA BEGIN 01312 STA IPRGRI -1,2 01313 TNT 1,2 01314 FNA nECSRCR 01315 STA IPRGPI_ -1.2 01316 STT IPRCTP,2 01317 UJP 05P 01318 209

BLOCK EJECT 01319 TITLE BLOCK 01320 FRLOCK LDT IPRCTr,,2 PIT BEGIN ON PROD ROLL 01321 IST 1,2 INCPEMENT BLOCK CTR 01322 ENA NEWLINE 01323 STA IPRGPI -1,2 01324 INI 1,2 01325 ENA HERIN 01326 STA IPRGRI -1,2 01327 INI 1,2 0132P ESA OECSRrHD DYNAMIC ARRAY DECLARATION FI AG 01329 STA IPRGRI -1,2 01330 STI IPRCTR,2 01331 ESA 12 SFT UP DYNAMIC ARRAY 01332 STA DYNARRAY 01333 ENA 1 01334 RAD RLOCKCTS INC BLOCK CTR 01335 IIJP SADC GO TO SCAN AND DELETE RECORDS 01336 111 ASS 1 01337 IT2 BSS 1 0133R IT! BSS 1 01339 I14 BSS 1 01340 ITS CCT 0 01341 IRRE ASS 1 01342 fain 01343 DO 210

IDENT DC 00001 LETFST MACRO (LET.NOLETI 00002 ASG. 725 00003 ASG 215 00004 UJP NCL.FT 00005 ASA 628 00006 ASA 37R 00007 I1 JP LET 00008 ASA 528 00009 ASA 41B 00010 UJP NOLET 00011 ENDM 00012 TNTVAP MACRO (YES. NO) 00013 ENO 31R 00014 ATJ.EO YES 00015 ENO 418 00016 40.1.LT NC 00017 ENO 468 00018 AOJ, LT YES 00019 ENDM 00020 ARTEST MACRO (ARRAY, NARRAY) 00021 ASA 24P 00022 ASr. 48 00023 UJP NARRAv 00024 ASA, 148 00025 ASA 105 00026 IIJP ARRAY 00027 UJP TIARAS,' 00028 ENnN 00029 TITLE DO STATEMENT 00030 COMMON 00031 SURPCL ASS 60 SUBROUTINE ROLL MAX 2n 00032 SURCTR ASS SUBROUTINE ROLL CTR 00033 PUNCH ASS 1 ALTERNATE OUTPUT LUN 00034 ARRAYF ASS t ARRAY FLAG 00035 RLOCKCTR ASS 1 BLOCK CTR 00036 CHANNEL. ASS 1 CHANNEL NUMBER 00037 CONSTF PSS 1 CONSTANT FLAG 00035 DATAF PSS 1 DATA FLAG 00039 DYNARRAY ASS 1 DYNAMIC ARRAY FLAG 00040 FFLAG ASS 1 E TYPE CONSTANT FLAG 00041 PSS IARCTR 1 ARRAY /SWITCH ROLL CTR 00042 I4RTND ASS ARRAY POINTER 00043 ICOCTR ASS 1 COMMON ROLL CTR 00044 ID ASS 1 VARIABLE ATTRIBUTE/ CHARACTER CTR 00045 IDCNFF PSS 1 DONE WITH STATEMENT FLAG 00046 PSS TD.^.CTR 1 no ROLL CTR 00047 TDSP ASS 1 nECLARATIVE STATEMENTS FINIAHFO 00048 TEOGTR ASS EQUIVALENCE ROLL CTR 00049 IENF ASS 1 FIl1TVALENCE FLAG 00050 IFLFTF ASS 1 FIRST LETTER FLAG 00051 IHM PSS 1 HIT OR INSERTION FLAG 00052 ILCCTR ASS 1 LONG CONSTANT ROLL CTR 00053 ASS 7 INPUT CVERFLOW AREA 00054 INTN RSS 20 INPUT AREA 00055 INCLIT ASS READ /WRITE FLAG 00056 TPRCTR ASS PROGRAM ROLL CTR 00057 ISCCTR ASS 1 SHORT CONSTANT ROLL CTR 00058 SCRCTR ASS 1 1ST SCRATCH HILL CTR 00059 SCPCTR2 ASS ) 2ND SCRATCH ROLL CTR 00060 ISV ASS 1 START vALUE 00061 ISWCTR FOU IARCTP ARRAY/ SWITCH ROLL CTR 00062 ITPAnD ASS 1 TEMPORARY ADDRESS STORAGE 00063 ITPTN ASS 5 TEMPORARY STORAGE 00064 IVACTP ASS 1 VARRAY ROLL CTR 00065 LOGE ASS 1 LOGICAL OPERATOR FLAG, 00066 MAINPRCG ASS 1 MAIN PROGRAM /SUBROUTINE FLAG 00067 CAERE ASS 1 OPERATCP FLAG 00068 PSS 1 OUTPUT OVERFLOW AREA 00069 CUTIN PSS 24 OUTPUT AREA 00070 PARAMF ASS 1 PARAMETER FLAG 00071 PARENF A55 1 PARENTHESIS FLAG 00072 RELOPF ASS 1 RELATIONAL OPERATOR FLAG 00073 TSCNRL ASS 1200 SHORT CONSTANT ROLL MAX 400 00074 IVAROL ASS 2000 VARIARLE ROLL MAX 50n 00075 ILCNRL ASS 600 LONG CONSTANT ROLL MAX 100 00076 IOCRCL ASS 100 00 LOOP ROLL MAX 32. 00077 TSCROL ASS 800 1ST SCRATCH ROLL 00078 SCRL2 ASS t 2NO SCRATCH ROLL 00079 IPRORL 8SS 1 PROGRAM ROLL 00080 !CORAL ECI) ILCNRL COMMON ROLL. MAX 600 00081 IEORCL F,OI) IDCROI EQUIVALENCE ROLL MAX 100 00082 DATA 00083 e 444444es* 444444444444444444444444 00084 00055 e ALPCL RESERVED WORD TABLE e 00086 tl 00087 tl tlaaatltlaapptlppw wa a 0* 00 A A p tla asa papa 00088 POwEP CCT 70000 00089 PCn 2,SP0wER7 00090 INTnIV OCT 50000 00091 PCI) 2,8DT0 00092 GT CCT 11000n 00093 PCn 3,8GRFATF_N3 00094 GE CCT 12000n 00095 PCn 3,'NC7 LESS' 00096 EQUAL CCT 10000 00097 RCn 1,0 00098 NF CCT 130008 000gq PCn 3, tNOT FQl1AL3 00100 LE CCT 15000n 00101 PCn 4,SNCT GREATER* 00102 LESS CCT 60000 00103 RCn 2,ALFSSY 00104 211 DC STATEMENT ANn OCT 50000 00105 RCO 2,sANns 00106 OR OCT 40000 00107 RCD 1,:082 00106 NOT OCT 50000 00109 RCO 2,FN,^,Ts 00110 PERIOD OCT 10000 00111 RCO 1,. 00112 COMMA OCT 10000 00113 RCn 1 00114 COLON CCT 30100 00115 OCT 60126060 00116 SEMTCCLN OCT 10000 00117 OCT 37606060 00118 LPAREN CCT 10000 00119 RCO 1.l 00120 PP4REN CCT 10000 00121 RCn 1.1 00122 REPSGN CCT 30000 00173 CCT 60766060 00124 CSLASH OCT 20000 00125 OCT 60176060 00126 SLASHC OCT 20000 00127 CCT 60726060 00128 TRITE OCT 60000 00129 RCn 2,fTRIIF! 00130 FALSE OCT 70000 00131 RCO 2,6FAI SF2 00132 GOTO CCT 70000 00133 RCD 2,FGC TO! 00134 IF OCT 40000 00135 RCO 1. #IFs 00136 THEN OCT 60000 00137 PCn 7.STHFN! 00138 ELSE OCT 60000 00139 RCn 7,*ELÇEf 00140 FOR CCT 50000 00141 ROO 2,FECo* 00142 nO CCT 40000 00143 RCn 1,FOO! 00144 STEP CCT 60000 00145 RCD 2,lSTFPs 00146 UNTIL OCT 70000 00147 RCn 2,*UNTILF 00148 REGIN OCT 70000 00149 RCn 2,*RFGIN! 00150 ENO CCT 50000 00151 RCD 2,sENns. 00152 ROCLFAN CCT 11000n 00153 RCn 3,*80CLEANs 00154 INTEGER OCT 110000 00155 RCD 3,FINTEGER! 00156 PEAL CCT 60000 00157 RCD 2,FPFAL! 00158 ARRAY CCT 70000 00159 RCO 2,FARPAYF 00160 SWITCH CCT 10000n 00161 RCn 2.WSWTTCH! 00162 PR,^,C OCT 13000n 00163 Ren 3,4PRTCEDUREs 00164 PLUS CCT 10000 00165 RCn 1. 00166 MINUS OCT 10000 00167 RCO 1,- 00168 TIFFS OCT 10000 00169 RCn 1,° 00170 SLASH OCT 10000 00171 RCO 1,1 00172 ARCTAN OCT 60000 00173 RCD 2,ARCTAN 00174 LN OCT 20000 00175 ROO 1,LN 00176 ENTIER CCT 60000 00177 RCO 2,ENTIER 00178 INPEAL OCT 60000 00179 ROO 2,INROAL 00180 CUTREAL OCT 70000 00181 RCn 2.O11TREAL 00182 SIN OCT 30000 00183 RCD 1,5IN 00184 COS OCT 30000 00185 PCn 1,CCS 00186 ARS OCT 30000 00187 RCD 1,666 00188 F66 OCT 30000 00189 Rcn 1,EXP 00190 SORT CCT 40000 00191 ROO 1,SORi 00192 SI +N OCT 40000 00193 RCO 1,SIGni 00194 7ERC CCT 10000 00195 RCn 1,0 00196 CNFHALF CCT 30000 00197 RCn 1.0.5 00198 ON! OCT 10000 00199 600 1,1 00200 SIxTY OCT 20000 00201 RCn 1,60 00202 SIXONF OCT 2000n 00203 PCn 1,61 00204 SIOTWO OCT 20000 00205 RCn 1,6? 00206 RACKSPCE CCT 110000 00207 ROO 3,RACKSPACE 00208 FNI,FILF CCT 70000 00209 212 D, STATEMENT RCD 2.FNTFILE 00210 REWIND OCT 60000 00211 RCD 2,REWTND 00212 pepe e.e..e.e...O. *. *.O..O 00213 0 00214 . TRANSLATOR ERROR MESSAGES 00215 O 0 0 00216 O OO ee.00e0e0e.eee...e0.0.0.0.00. 00217 ERR, RCD 6,0 ILLEGAL VARIABLE 00216 ERR2 RCD 7.0 ILLEGAL SUBSCRIPTING 00219 ERR RCD 9,0 UNCORRECTABLE EQUIVALENCE ERROR 00220 FRP4 RCD 690 ILLEGAL SUBROUTINE 00221 ERRS RCD 6,0 UNSURSCRIPTED ARRAY 00222 ERRE RCD 6,0 DELETED STATEMENT 00223 ERR7 PCD 6,0 ILLEGAL CONSTANT 00224 ERR$ RCD 6,0 EQUIVALENCE ERROR 00225 ERROO RCn 5,0 TOO MANY ENDS 00226 ERR]) RCO 8.0 ILLEGAL REPETITION FACTOR 00227 ERR12 PCD 5,0 ROLL OVERFLOW 00228 ERP13 RCO 7.0 UNREFERENCED SUBPROGRAM 00229 O 0.0.0...... 0.0000. ********* 000 00230 . e 00231 FORTRAN RESERVED WORD TABLE 00232 0 . 00233 O 000e000.0.ee0000.0.0 .0.0.0.. 0000 00234 ERWT3 Pen 2,SLITE 00235 PCD 2,SLITET 00236 RCO 2,SSWTCH 00237 BCD 2,OVCHK 00238 RCD 2,FXFI T 00239 RCD 2,OVEPFL 00240 RCn 2.E0FCK 00241 BCD 2,IOCHK 00242 PC0 2,I)NITST 00243 RCD 2,0VEPLAY 00244 8CD 2,SEGMFNT 00245 RCO 2,FORTDUMP 00246 RCn 2,A9S 00247 RCO 2,485E ggr. RCn 2,JA8SF 00249 RCO 2,XARSF 00250 RCD 2,ALOG 00251 RCD 2,ALOC.F 00252 RCO 2.ATAN 00253 8CD 2,ATANF 00254 Pen 2.COS 00255 RCD 2,COSF 00256 RCD 2,EXP 00257 RCD 2,ExPr 00298 RCO 2,FLOAT 00259 RCO 2,FLOATF 00260 RCD 2,IFTx 00261 RCO 2,XFTSF 00262 RCn 2,FIXF 00263 PCn 2,SíGN (w64 PCD 2,SIGNF 00265 RCD 2,XSIPNF 00266 RCO 2,ISTGN 00267 RCO 2,SIN ggr. RCO 2,SINF 00269 8CD 2,SORT 00270 RCn 2,SORTF 00271 RCn 2,SLTTFF 00272 RCD 2.SLTTETF 00273 RCD 2.SSWTCHF 00274 RCO 2,OVCHKF 00275 RCO 2,EXFI_TF 00276 RCn 2,CVFPFLF 00277 RCD 2,EOFCKF 00278 RCD 2,IOCHKF 00279 PTO 2,UNITSTF 00280 RCD 2,LENGHTF 00291 RCn 2,NOT 00282 RCD 2,ANn 00283 RCn 2,08 00284 ACO 2.EOP 00295 FRWT4 pen 1..GE, 00286 8CD 1,.GT, 00287 BCD 1,.E0. 00288 PCO 1,.NF. 00289 PCD 1,.LF. 00290 PCD 1..LT, 00291 PRG 00292 ENTRY FDO,FGOTO.FTF,EnATA,FOATA21.EGO 00293 EXT READTAPF. PACK, SFARCH ,SE4RCH2,FETA.FAEA,LIST.DUMMY 00294 EXT NEWLINF.HIGHMEM,SCOLON 00295 F00 INT -1,1 OEC RI 00296 ENA 0 00297 STA ID 00298 LOA C606'6060 PLANKS INTO ITPIN 00299 STA ITPIN 00300 LDOI INI 1.1 INC 81 00301 I54 73,1 00302 IJ IP LD02 00303 RTJ REATTAPF 00304 LID LOO1 00305 L OO? LATH ININ -1.1 00306 ENO 128 NUMBER TEST 00307 AOJ,GF LD04 00308 LOA TD 00309 LOA 077770000 00310 A7J,NE LD03 00311 ENA 100008 00312 STA ID 00313 LOA '026606060 F INTO ITPIN 00314 213 DO STATEMENT STA ITPIN 00315 L003 RTJ PACK 00316 UJP LD01 00317 L004 LETFST (LDOS,L001) 00318 L005 L01 IPRCTR,2 FOR ONTO PROG ROLL 00319 INT 1,2 00320 ENA FOR 00321 STA IPRGRL -1,2 00322 STI IPRCTR.? 00323 PTJ SEARCH 00324 ISCNRI 00325 ISCCTP 00326 3 00327 2 00328 ST! I71,1 SEARCH FOR ADDR ON 00 LOOP ROLL 00329 LOT IDOCT0,1 00330 LDA ITPAOn 00331 EN0 777775 SEARCH 041 ADDR PORTION ONLY 00332 MEO I0014OL,I 00333 UJP L0013 NOT ON ROLL 00334 UJP LOCO HIT 00335 L0013 LOT 171,1 RESTORE RI 00336 LOA =000100000 MISS 00337 ADA ITPAnn 00338 LOT IDOCTP.? 00339 INI 1,2 00340 STA IDOROL -1,2 PUT COUNTER AND ADDS ON 00 LOOP ROLL. 00341 STI IDOCT5.2 00342 UJP LOOP 00343 LOOT LOA =000100000 HIT 00344 PAD IDCRCI.1 00345 LOT T11,1 RESTORE RI 00346 LOOS PTJ FAEA PROCESS I= Ml 00347 LOS IPRCTP,? STOPS ON A COMMA 00348 INI 1,2 00349 ENA STEP STEP ON PROT ROLL 00350 STA IPRGRL -1,2 00351 STT IPRCTR,2 00352 STT IT1,2 STORE CURRENT VALUE OF PROG ROLL OR TN ITT. 00353 TNT 1,1 MOVE OFF COMMA 00354 RTJ FAEA PROCESS M? 00355 LOA IPRCTP COPY M2 FROM THE PROD ROLL TO THE 00356 SWA 0014 SCRATCH ROLL 00357 ENT SCPL2.1,3 00358 LOT ITT.? 00359 LOOP INT 1,2 00360 INI -1,3 00361 LOA TPPf,RI -1,2 00362 STA 0.3 00363 10014 ISO 44,2 00364 OAP LOOP 00365 STT SCRCTR2,3 SCRCTR2 HOLDS ADDS CF LAST ENTRY 00366 LOA ITT ON SCRATCH ROLL 00367 STA IPRCTP 00368 LOA 0,3 TEST FOR SCOLON IN LAST ELT ON 00369 LPA =000077777 PROD ROLL 00370 ENO SCOLON 00371 AOJ,EO L0010 NO M3 00372 TNT 1,1 MOVE OFF COMMA 00373 RTJ FAEA PROCESS Ml 00374 ENA.S -1 DELETE SCOLON FROM PROD ROLL 00375 RAD IPRCTR 00376 UJP L0O11 00377 10010 LDI IPRCTR.? 00378 INT 1,2 00379 ENA ONE 00380 STA IPRGRL -1.2 00381 STI IPRCTR,2 00382 FNA 1 REMOVE SCOLON FROM SCRATCH ROLL. 00383 RAD SCRCTR2 00384 LOO11 LOT IPRCTR.? 00385 INI 1,2 00386 ENA UNTIL UNTIL CN PROG ROLL 00387 STA IPRGRL -1.2 00388 INI 1,2 00389 LOA SCRCTR2 00390 SWA L0013 00391 ENT SCRL2.3 COPY SCRATCH ROLL ONTO PROD ROLL 00392 L0012 LOA 0,3 00393 STA IPRGRL -1.2 00394 INI 1,2 00395 10015 ISO 4e,3 00396 UJP L0012 00397 ENA 00 ADDS OF DO ON PROG ROLL 00398 STA IPRGR1-I,2 00399 INI 1.2 00400 FNA NEWLTNF PUT NFWLINF ON PROD ROLL 00401 STA IPRGRL -1,2 00402 INT 1,2 00403 ENA BEGIN ADDR OF REGIN ON PRIG ROLL 00404 STA IPRGRL -1,2 00405 STT IPRCTR,2 00406 FNA 1 00407 RAD BLCCKCTR 00405 UJP FETA GO TO EXP TYPE ANAL 00409 GOTO STATEMENTS 214 EJECT 00410 TITLE GOTO STATEMENTS 00411 FOC TNT 1.1 00412 ISG 73,1 00413 UJP 4.3 00414 RTJ READTAPE READ THE NEXT RECORD 00415 UJP FOC 00416 LACH ININ -1,1 00417 LETEST (FG0,FGC1) 00418 FOOT ENO 608 BLANK TEST 00419 A0J,F0 FGO 00420 FGOTO ENA 0 00471 STA IRPF IRPF =0 00422 STA ID ID =0 00423 LOA =060606060 BLANKS INTO ITPIN 00424 STA ITPIN 00425 INI -1,1 DECREMENT B1 00426 LGOTO1 INT 1,1 INCREMENT 81 0042.7 ISG 73,1 00428 UJP LGOTO2 00429 PTJ READTAPE 00430 ISE 6,1 00431 UJP LGCTOS 00432 UJP LGOTO1 00433 L901'02 LAC4 ININ -1,1 TEST FOR LEFT PAREN 00434 ENO 748 00435 AOJ.EO LGCT06 00436 ENO 12H NUMBER TEST 00437 40J,GE LGOT04 00438 LOA In 1ST DIGIT TEST 00439 LPA =077770000 00440 A7J,NF LGOTO1 00441 LOA =0266 (16060 r IN 1ST CHAR POSITION 00442 STA ITPIN 00443 ENA 100009 00444 STA IO 00445 LG0T03 RTJ PACK CALL PACK 00446 UJP LGCTO, 00447 LGOT04 ENO 538 TEST FOP END OF STATEMENT 00448 A0.1,NE LGOT01 00449 LßOTO5 PTJ SEARCH END OF SIMPLE 5010 00450 ISCNRL 00451 ISCCTP 00452 3 00453 7 00454 LOT IPPCTP,2 PUT GOTO LABEL., ON PROD ROIL 00455 INT 1,2 00456 ENA GOTO 00457 STA 1PRGRI-),2 00458 TNT 1.2 00459 LOA ITPAOn 00460 STA IPRGRI -1,2 00461 INT 1.2 00462 ENA SCOLO! 00463 STA IPRGRI -1,7 00464 STT IPRCTP.2 00465 UJP FETO GO TO EXP TYPE ANAL 00466 LOOT. LOI ISWCTP.2 COMPUTED GOTO. PUT SWITCH, NAME, 00467 INI -1,2 REPSIGN ON SWITCH /ARRAY ROLL 00468 FNA SWITCH 00469 STA 0,2 00470 STT TSWCTP,2 00471 LOA =000100030 SWITCH DESIGNATOR 00472 STA In 00473 LOA =HSw1O 00474 STA TWIN 00475 LOA TSWCTR 00476 LPA =000007777 BINARY TO OCTAL CONVERSION 00477 ENO 0 00478 SHAG 36 00479 ENA 0 00480 ENI 1,3 00481 SHA 3 00482 SHAG 3 00483 1ST 4,3 00484 UJP 4.3 00485 STA ITPIN.1 00486 RTJ SEARCH? CALL SEARCH 00487 LOT ISWCT14,2 PUT NAME... ON SWITCH ROLL 00488 TNT -1,2 00489 LOA ITPAOn 00490 STA 0.2 00491 INT -1.2 00492 ENA REPS.. 00493 STA 0,2 00494 STT ISWCTP,2 00495 LOT IPRCTP,2 PUT 0000 SWITCH NAME (/ ON .PROD 00496 INT 1,2 POLL 00497 FNA GOTO 00498 STA IPRGRI -1,2 00499 TNT 1,2 00500 LOA ITPAOn 00501 STA TPRGRL -1,2 00502 INT 1,2 00503 FNA CSLASH 00504 STA IPRGRI -1,2 00505 STT IPRCTP.2 00506 FNA 1 00507 STA TRPF IPPF =1. START PROCESSING LABELS 00508 LGOT07 TNT 1,1 00509 ISG 73,1 00510 UJP LGCTOR 00511 PTJ READTAPE 00512 UJP LGOTC7 00513 JGOTO8 L4C4 ININ -1.1 NIIMRER TEST 00514 215

GOTO STATEMENTS ENO 128 00515 A0J,GE LGOT ^,10 00516 LOA ID 00517 LPA =077770000 00518 47J,NE LGCTOR 00519 LOA =026606060 F INTO 1ST CHAR CF ITP1N 00520 STA ITPTN 00521 FNA 100009 00522 STA IO 00523 LGT109 RTJ PACK 00524 UJP LGCTT7 00525 LGCTCIO ENO 734 COMMA TEST 00526 AOJ.NE LGCTOII NC 00527 LOA IPPF 00529 A7J.E0 LGCT013 !SNORE COMMA IF IRPF =0 00529 RTJ SEARCH SEARCH SHORT CONSTANT ROLL FOR 00530 ISCNRL LABEL 00531 ISCCTR 00532 3 00533 2 0 0534 LOT TSWCTR,2 PITT LABEL, COMMA ON SWITCH ROLL 00535 TNT -1.2 00536 LOA ITPADD 00537 STA 0,2 00538 INT -1,2 00539 FNA COMMA 00540 STA 0.7 00541 SIT ISWCTR,2 00542 UJP LGCTC7 00543 1901011 LACH THIN -1,1 RIGHT PAREN TEST 00544 ENO 348 00545 A0J,NE LGCTCIP 00546 ENA 0 00547 STA IRPF IRPF =O SINCE LABELS SAVE BEEN 00548 RTJ SEARCH PROCESSED 00549 ISCNRL 00550

:1 SCCTO 00551 3 00552 2 00553 LOT ISwCTR,2 PUT LABEL, SEMICOLON ON SWITCH 00554 INT -1.2 00555 LDA ITPADD 00556 STA 0,2 00557 TNT -1,2 00558 ENA SCOION 00559 STA 0,2 00560 SIT TSWCTR,2 00561 U,1P LGCTO7 00562 1,0,07012 ENO SOB RLANK TEST 00563 AOJ.EO LGCTC7 00564 RTJ FAEA GO TO ARITH EXP ANAL 00565 LOT IPRCTR,2 PUT -0.5/1., ON PROS ROLL 00566 FNA MINUS WTPF, CUT SCOLON AT ENO Of 00567 STA IPRGRI .1,2 STATEMENT 00568 INT 1,2 00569 ENA CNF 1ALF 00570 STA IPRGRI. -1,2 00571 INT 1,2 00572 ENA SLASHC 00573 STA IPRGRI_ -1 ,2 00574 TNT 1,2 00575 FAA SCOLON 00576 STA IPRGRI -1,2 SIT IPRCTR,2 UJP EFTA GC TO EXP TYPE ANAL a7/:: Lfi ^,TD13 TNT 1.1 PASS OVER COMMA 00580 U.JP LGIT,112.2 00581 216 IF STATEMENTS EJECT 00582 TITLE IF STATEMENTS 00583 FIF INI -1,1 00584 FNA 0 00585 STA !DONEE =DONE.° 00586 STA ID 10=0 00587 LOA =060606060 - 00588 STA 005R9 FIFI INT 1.1 00590 ISG 73,1 N 00591 UJP FIF2 00592 RTJ READT4P F_ 00593 UJP FIFI FIF2 00594 LACH ININ -j,l 00595 ENO 74$ LEFT PAREN TEST 00596 A0J.NE FIFI 00597 INI 1,1 MOVE OFF LEFT PAREN 005qß LOT IPRCTR.2 00599 INI 1,2 00600 FNA IF IF ON FROG ROLL 00601 STA IPRG RI_-1 ,2 00602 STI IPRCTP,2 00603 INI 1,2 00604 STI ITIr2 ITI =CTR VALUE OF THE_. START TP THE 00605 RTJ FAEA ARITH EXP. CALL ARITH EXP ANAL 00606 FNA.S -1 REMOVE THE .. ON THE END OF THE 00607 RAD IPRCTR ARITH STATEMENT 00608 FNA 0 00609 STA SCRCTR 00610 FIF3 INT 1,1 00611 I59 73,1 00612 UJP FIFO 00613 RTJ REAOTAPE READ NEXT RECORD 00614 ISF 0,1 00615 UJP FIF3 00616 FNA 1 00617 STA 'DONEE IDONEFaT 00618 UJP FTF7 00619 FIFO LATH ININ -1.1 IF A LETTER TEST FOR RELOP AND GO 00620 LFTEST If IF15.FIF151 EXP TYPE ANAL 00621 FIFIS INI -1,1 00622 LOA REIOPF IF RELOPF I5 OFF PUT NE O ON 00623 AZJrNE FIF19 PROF, ROLL 00624 LOI IPRCTR,2 00625 INI 1,2 00626 FNA NE 00627 STA IPRGRL. -1 ,2 00628 TNT 1,2 00629 FNA ZERO 00630 STA IPRGRL -1,7 00631 STi IPRCTP.2 00632 FIFIq LOI IPRCTP,2 00633 TNT 1.2 00634 ENA THEN 00635 STA IPR0,RI -1 r? 00636 STI IPRCTP.2 00637 UJP FETA GC TO EXP TYPE ANAL FIF16 00638 FNO 12H NUMBER TEST 00639 AOJ,GE FIFE FAILED 00640 LOA ID 00641 LDA =077770000 00642 AZJrNE FIFS 00643 LOA = 026606060 F INTO ITPIN 00644 STA ITPIN 00645 FNA 100009 00646 ST4 ID 00647 FIF5 RTJ PACK 00648 UJP FIF3 FIFE 00649 ENO 739 COMMA TEST 00650 4OJ,NE FIF$ 00651 FIFI RTJ SEARCH SEARCH SHORT CONSTANT ROLL 00652 TSCNRI_ 00653 ISCCTP 00654 3 00655 2 00656 LOT SCRCTR,? PUT ADDS ON SCRATCH ROLL. 00657 TNT 1,2 0065$ LOA TTPAOO 00659 STA ISCROI. -1,2 00660 STI SCRCTR., 00661 LOA IOCNFF 00662 AZJ,FO FIF3 00663 IIJP FIF9 CARD PROCESSED 00664 FIFA ENO 538 END OF STATEMENT TEST 00665 ADJ,NE FIF3 00666 FNA 1 00667 STA IUONFF 'DONEE =1 00668 IIJP FIF? 00669 FIF9 LOA SCRCTP TEST FOR LOGICAL IF 00670 FNO 2 00671 AOJ,EO FIF14 00672 LOA ISCROI ARITHMETIC IF 00673 LOO ISCR OI .2 Ml =N3 00674 AOJ,NE FIF10 00675 ENA NE 00676 SWA FIFORMI. 00677 LOA ISCROI_ N1 0067$ SWA FTFORM2 00679 LOA ISCROL.1 N2 00680 SWA FIf ORM3 00681 IIJP FIFORM 00682 FIF10 LOO ISCROI.I 00683 AOJ.NF FIF1I N1 =N2 00684 ENA LE 00685 SWA FIFORMI 00686 IF STATEMENTS LOA ISCRCI. N1 00687 217 SWA FIFORM2 00688 LOA ISCROI 2 N3 00689 SWA FIFORM3 00690 UJP FIFORM 00691 FIF11 LDA ISCROI 2 00692 AOJ,NE FIF12 N?N3 00693 ENA LESS 00694 SWA FIFOR.0 00695 LDA ISCRCI N1 00696 SWA FIFORM2 00697 LOA ISCROL1 N2 00698 SWA FIFORM3 00699 LJJp FIFORM 00700 FIF12 LOA IPRCTR COMPOUND IF STATEMENT 00701 SWA FIF17 00702 LOT TPRCTR,2 00703 TNI 1.2 00704 ENA LESS 00705 STA IPRGRI -1.2 00706 INI 1,2 00707 ENA ZERO 00708 STA IPRGRL -1,2 00709 INT 1.2 00710 FNA THEN 00711 STA IPRGRI -1.2 00712 TNT 1,2 00713 FNA GOTO 00714 STA IPRGRI -1.2 00715 INI 1.2 00716 LDA ISLET,I 00717 STA IPRGRL -1,2 Nl 00718 INT 1,2 00719 FNA ELSE 00720 STA IPRGRL -1.2 00721 TNT 1,2 00722 ENA IF 00723 STA IPRGRI -1.2 00724 LOI TT1.3 GET START VALUE OF AR/TH EXP 00725 INI -1,3 00726 FIF13 TNT 1,? 00727 TNI 1,3 00728 LDA IPRGRI -1,3 COPY PRIG ROLL FROM IT1 TO FIF17 00729 STA IPRGRI -1,2 00730 FIF17 150 44,3 TEST ON LENGTH OF PROS, ROLL 00731 UJP FIF13 00732 STI TPRCTR,2 00733 FNA EQUAL 00734 SWA FIFORMI 00735 LOA ISCROI 1 N2 00736 SWA FIFORM2 00737 LOA ISCROL2 00738 SWA FIFORM3 N3 00739 UJP FIFCRM 00740 FIF14 LDA RELOPF LOGICAL IF. IF RELOPF IS OFF TEST 00741 AZJ.NE FIF1R FOR ZERO 0074? LDI IPRCTR,? 00743 TNI 1,2 00744 FNA NE 00745 STA IPRGRI -1.2 00746 TNI 1,2 00747 FNA ZERO 00748 STA IPRGRI -1.? 00749 STI IPRCTR,? 00750 FTFIR LDA ISCRCI N1 00751 SWA FIFORM? 00752 LDA ISCROI 1 N2 00753 SWA FIFORM3 00754 LDI IPRCTR,? 00755 UJP FIFORM4 00756 FIFORM LDI IPRCT14.2 00757 TNI 1.2 00758 FIFORM1 ENA AA 00759 STA IPRGRL -1,2 RELOP 00760 INI 1,2 00761 ENA ZERO 00762 STA IPRGRI -1.2 ZERO 00763 FIFORM4 TNI 1,2 00764 FNA THEN 00765 STA IPRGRL -1.2 THEN 00766 TNT 1,2 00767 FNA GOTO 00768 STA IPRGRI -1 ,2 GO TO 00769 TNT 1,2 00770 EIFORM? ENA AA 00771 STA IPRGRI -1,2 NI 00772 INT 1.2 00773 ENA ELSE 00774 STA IPRGRI -1,2 ELSE 00775 INT 1,2 00776 ENA GOTO 00777 STA IPRGRI -1.2 SOTO 00778 INT 1,2 00779 FIFORM3 ENA AA 00780 STA IPRS,R4-1.2 N2 00781 TNT 1,2 00782 FNA SCOLON 00783 STA IPRGRI -1,2 SCOLON 00784 5TI IPRCTF,2 00785 UJP FETA GO TO EXP TYPE ANAL 00.786 218 DATA STATEMENT EJECT 00787 TITLE DATA STATEMENT 00788 FDATA FNA 0 00789 STA IFLETF FIRST LETTER FLAG 00790 STA ARRAYF ARRAY FLAG 00791 STA CONSTF CONSTANT FLAG 00792 STA IDONEE DONE FLAG 00793 ST4 RPCTR RIGHT PAREN CTR 00794 inn =060606060 BLANKS INTO ITPIM 00795 ST4 ITPIN 00796 TNT -1.1 00797 FDATAI TNT 1,1 00798 ISG 73,1 00799 UJP FDATA' 00800 RTJ REAOTAPE 00801 ISG 6,1 00802 UJP FETO GO TO EXP TYPE ANAL 00803 UJP FDATAI 00804 MARA, LACH ININ.1,1 LETTER TEST 00805

I ETFST (FDATA3.FOATA8) 00806 FDATA3 LOA IFLETF 00807 A7J.NE FDATA7 00808 ENA 1 1ST LETTER 00809 STA IFLETF 00810 ENA o 00811 STA RPCTR 00812 LACH ININ.1,1 00813 INTVAR ( FDATA5.FDATA41 00814 FDAT44 ENA 0 REAL 00815 UJP FDATA6 00816 FOATA5 ENA 1 INTEGER 00817 FOATA6 STA ID 00818 FDATA7 RTJ PACK 00819 UJP FDATAI 00820 FDATA$ ENO 128 NUMBER TEST 00821 AOJ,GE FDATA. 00822 LOA IFLETF 00823 A7J,NE FDATA7 00824 ENA 1 00825 STA CONSTF 00826 ENA 0 00827 STA RPCTR 00828 UJP FDATA7 00829 FOAT49 LOA IFLETF 00830 A7J,E0 FDATA13 00831 ENA 0 00632 STA CONSTF 00833 RTJ SEARCH2 SEARCH VARRAY ROLL 00834 LDA ITPADn ARRAY ANO ILLEGAL VARIABLE TEST 00835 SWA FDATA10 00836 SWA °.1 00837 LOA 44 GET ID 00$38 LPA =000000003 00839 LOO =000000003 00840 AOJ.NE FOAT410 00841 ENA ERRI ERROR. ILLEGAL VARIARLE 00842 ENO 6 00843 WRITE 61 00844 UJP FD4TA.1 00845 FDATAIO LOA 44 00846 LPA =000007777 ID2 00847 ARTIST (FOAT612.FDATA14) 00848 F04T412 ENA.S .1 ARRAY 00849 STA ARRAYF 00850 IIJP FOATA14 00851 FDATA13 LOA CONSTF 00852 AZJ.EO FDATA14 00853 RTJ SEARCH SEARCH SHORT CONSTANT ROLL 00854 ISCNRI. 00855 ISCCTR 00856 3 00857 2 00858 LOI IPRCTR.2 CONSTANT CN PROS ROLL 00859 INI 1,2 00860 LOA ITPAOn 00861 STA IPRGRL .1.2 00862 STI IPRCTR.2 00863 FOATA14 LACH TNIN.1.1 COMMA TEST 00864 ENO 738 00865 AOJ.NE FOATA16 00866 LOA IFLETF 00867 A7J.E0 FDAT415 00868 LOT IPRCTR.2 00869 TNT 1,2 00870 LDA ITPAOn VARIABLE ON PROG ROLL 00871 STA IPR081.-1.7 00872 INI 1,2 00973 ENA COMMA COMMA ON PROD ROLL 00874 STA IPRGRL, -1.2 00875 5TT IPRCTR,2 00876 FDATAIS LOA CONSTE 00877 A7J.E0 FOATAI 00878 ENA 0 00879 STA CONSTF 00880 LOT IPRCTR,2 00881 TNT 1,2 00882 ENA COMMA COMMA ON FROG ROLL 00883 STA IPRG91-1.2 00884 STI IPRCTR.2 00885 UJP FDATAI 00996 F04TA16 ENO 748 LEFT PAREN TEST 00887 AOJ,NE FDATAI8 00888 LOA RPCTR 00889 ATJ,F0 FOAT417 00890 ENA SIXTY 00891 DATA STATEMENT 219 STA CHANNEL 00892 RTJ LIST PROCESS IMPLIED DO LOOP AS A 00893 UJP FOATA21 READ STATEMENT 00894 FOATAIT ENA l 00895 STA RPCTP 00896 LOA ARRAYF ARRAY TEST 00897 AZJ.EO FDAT41 00898 ENA 0 00899 STA IFLETF 00900 LOT IPPCTP.2 00901 TNT 1,2 00902 LOA ITPAnn VARTAALE ON PROD ROLL 00903 STA IPRGRI_ -1,2 00904 INT 1,2 00900 ENA CSLASH 00904 STA IPRGRI -1.2 C/ ON PROG ROLL 00907 STI IPRCTR.2 0090p UJP FDATAT 00909 FOATAIA ENO 34R RIGHT PAREN TEST 00910 AOJ,NE FDATA,O 00911 LOA ARRAYF 00912 AZJ,EO FDATAT ARRAY TEST 00913 FNA 0 00914 STA ARRAYF 00915 STA CONSTF CONSTF =O 00916 LOA IFLETF 00917 AZJ,EO FOATA19 00918 LOT IPRCTP.2 00919 INI 1,2 00920 LOA TTPAnn VARTAHLF ON PROG ROLL 00921 STA IPRGRI -1,2 00922 STI IPPCTP,2 00923 FNA 0 00924 STA IFLETF 00925 FDATAI9 LOT IPROTP,2 00926 TNT 1,2 00927 ENA SLASHC /1 ON PROG ROLL 00928 STA !PROP' -1,2 00929 STI IPRCTP,2 00930 UJP FOAT41 00931 FD4TA20 ENO 13H EOUAL TEST 00932 AO.J.NE FOATAP7 00933 LOA APRAYF 00934 A7J,E0 FDATAPS 00935 ENA ERRS ERROR MESSAGE. UNSUGSCRIPTEn 00936 FNO 6 ARRAY 00937 WRITE 61 00938 FOATA21 FNA 1 ROUTINE TO nELETE DATA LIST 00939 STA IDONFF 00940 F0ATA22 TNT 1,1 00941 ISG 73,1 00942 OAP FDATA23 00943 RTJ READTAPE 00944 UJP FDAT422 00945 FDATA23 LACH ININ -T,1 00946 ENO 748 LEFT PAREN TEST 00947 AOJ,NE FDAT4P4 00948 FNA 1 00949 PAD IDONFF 00950 UJP FDATSP2_ 00951 F04TA24 ENO 348 RIGHT PAREN TEST 00952 AOJ,NE FDATAP2 00953 ENA,S -1 00954 RAT InONFF 00955 LOA IDONFF 00956 AZJ.NE FDAT422 00957 UJP FDATA GO TO FDATA 00958 FDATA25 LOA IFLETF 00959 AZJ,EO FDATA25 00960 ENA 0 00961 STA IFLETF 00962 LOT IPRCTP.2 00963 INT 1,? 00964 LOA ITPAnn VARIABLE ON PRIG ROLL 00965 STA IPRGRI -1,2 00966 STI IPRCTP,2 00967 FDATA25 LOT IPPCTP,2 00968 INT 1,2 00969 FNA REPSGN ,. ON PROS ROLL 00970 STA IPRGRI -1,2 00971 STI IPRCTP.2 00972 INT 1,1 MOVE OFF REPSIGN 00973 RTJ FAEA GO TO ARITH EXP ANAL 00974 INT 1,1 MOVE OFF RIGHT PAREN 00975 IIJP FOAT41 00976 FDATA27 ENO 538 ENO OF STATEMENT TEST 00977 AO.J,NE FDATAT 00978 IIJP FETA GO TO EXP TYPE ANAL 00979 ITT RSS 1 00980 TOPF RSS 1 00981 RPCTR ASS 1 00982 FNn 00983 220

IC InFnir IC 00001 TITLE INPUT.CUTPUT 00002 221 INPUT.OUTPUT EJECT 00003 ARTEST MACRO (ARRAy.NARRA YI 00004 ASG 248 00005 ASG 48 00006 UJP NARRAy 00007 ASR 14R 00008 ASA 109 00009 UJP ARRAY 00010 UJP NARRAy 00011 ENDM 00012 LETEST MACAO (LET.NCLF.T) 00013 ASG 724 00014 ASR 218 00015 UJP NÖLET 00016 ASP 62B 00017 ASR 32R 00018 UJP LET 00019 ASP 52B 00020 ASP 41A 00021 UJP NÖLET 00022 ENnM 00023 TNTVAR MACRO (YES.MC1 00024 ENO 318 00025 AQJ.EQ YES 00026 ENO 41R 00027 AOJ.LT NC 00028 ENO 464 00029 AOJ.LT YES 00030 ENDM 00031 CCMMCN 00032 SUPPCL ASS 60 SUBROUTINE POLL MAX 20 00033 SURCTR RSS SUBROUTINE ROLL CTR 00034 PUNCH RSS ALTERNATE OUTPUT LUN 00035 ARRAYF RSS ARRAY FLAG 00036 RLOCKCTR RSS BLOCK CTR 00037 CHANNEL RSS CHANNEL NUMBER 0003R CONSTE RSS CONSTANT FLAG 00039 DATAF RSS DATA FLAG 00040 OYNAPRAY RSS DYNAMIC ARRAY FLAG 00041 !FLAG RSS E TYPE CONSTANT FLAG 00042 IARCTR ASS ARRAY /SWITCH ROLL CTR 00043 IARTND BSS ARRAY POINTER 00044 ICCTR RSS COMMON ROLL CTR 00045 RSS T0 1 VARIABLE ATTRIBUTE/ CHARACTER CTR 00046 IDONEF RSS 1 DONE WITH STATEMENT FLAG 00047 ASS IDOCTR 1 DO ROLL CTR 00048 TOSP RSS 1 DECLARATIVE STATEMENTS FINISHED 00049 TEOCTR RSS EOUIVALENC£ ROLL CTR 00050 ASS IEOF 1 EQUIVALENCE FLAG 00051 IFLFTF RSS FIRST LETTER FLAG 00052 IHM RSS 1 HIT OR INSERTION FLAG 00053 ILCCTR RSS 1 LONG CONSTANT ROLL CTR 00054 RSS 2 INPUT OVERFLOW AREA 00055 INN ASS 0 INPUT AREA 00056 INCUT RSS READ /WRITE FLAG 00057 TPRCTR ASS PROGRAM ROLL CTR 00058 ISCCTR ASS SHORT CONSTANT ROLL CTR 00059 SCROTA ASS 1ST SCRATCH ROLL CTS 00060 SCACTR2 ASS 2ND SCRATCH ROLL CTR 00061 ISV RSS START VALUE 00062 ISWCTP SOU ARCTP ARRAY/ SWITCH ROLL CTR 00063 ITP4D0 RSS TEMPORARY ADDRESS STORAGE 00064 TTPTN RSS 5 TEMPORARY STORAGE 00065 IVACTR RSS VARRAY ROLL CTR 00066 LOGE ASS LOGICAL OPERATOR FLAG 00067 MAINPRIP ASS MAIN PROGRAM /SUBROUTINE FLAG 00068 CAERE RSS OPERATOR FLAG 00069 ASS OUTPUT OVERFLOW AREA 00070 OUTIN ASS 4 OUTPUT AREA 00071 PAPAMF BSS 1 PARAMETER FLAG 00072 PARENT- RSS PARENTHESIS FLAG 00073 RELCPF RSS 1 RELATIONAL OPERATOR FLAG 00074 ISCNRL RSS 200 SHORT CONSTANT POLL MAX 400 00075 IVARCL RSS 000 VARIABLE POLL MAX 500 00076 ILCNRL ASS 00 LONG CONSTANT ROLL MAX Inn 00077 IQOROL RSS 00 DO LOOP ROLL MAX 32 00078 ISCPCL BSS 00 1ST SCRATCH ROLL 00079 SCALP RSS 1 2ND SCRATCH ROLL 00080 TPRGRL RSS PROGRAM ROLL 00081 ICCMRL FAO I LCNRI COMMON ROLL. MAX 600 00082 IEORCL E0U nCRCI EQUIVALENCE ROLL MAX 100 00083 DATA 00084 p apppapaapp 00085 O p 00086 p ALGOL RESERVED WORD TABLE 00087 a a 00088 p paapaaappappa 00089 PCwF.P CCT 70000 00090 Rcn 2.*POWER* 00091 INITIA OCT 50000 00092 Rcn 2. *DIA* 00093 GT OCT 13000n 00094 RCn 3. *GREATER* 00095 GE OCT 12000n 00096 RCn 3.0407 LESS* 00097 EQUAL CCT 10000 0009A RCn L= 00099 NE OCT 13000n 00100 RCn 3. *NOT EQUAL* 00101 LE OCT 15000n 00102 RCD 4. *NOT GREATER* 00103 LESS OCT 6000n 00104 ACT 2.AL ESSA 00105 ANT CCT 50000 00106 RCn 2. *ANT* 00107 INPUT.CUTPUT CP CCT 40000 00108 222 RCD 1.*CRf 00109 NOT OCT 50000 00110 RCD 2.tNOTt 00111 PERIOD CCT 10000 00112 BCD 1.. 00113 COMMA OCT 10000 00114 BCD 1.. 00115 COLON OCT 30000 00116 OCT 60126060 00117 SEMICCLN OCT 10000 - 00118 OCT 37606060 00119 LP4REN CCT 10000 00120 BCD 1.( 00121 ROARER CCT 10000 00122 RCD 1.) 00123 REPSON OCT 30000 00124 OCT 60766060 00125 CSLASH OCT 20000 00126 OCT 60176060 00127 SLASHC OCT 20000 00128 OCT 60726060 00129 TRUE OCT 60000 00130 RCn 2.iTRUEA 00131 FALSE OCT 70000 00132 BCD 2.01FALSEt 00133 0010 OCT 70000 00134 BCD 2.#G0 TOt 00135 TF CCT 40000 00136 RCD 1. ;IF7 00137 THEN OCT 60000 00138 BCD 2, *THEN 00139 ELSE OCT 60000 00140 BCD 21tELSEt 00141 FOR OCT 50000 00142 BCO 2.tFORt 00143 DO OCT 40000 00144 BCO 1.*DCs 00145 STEP OCT 60000 00146 BCD 2.t5TFPt 00147 UNTIL OCT 70000 00145 RCD 2.tUNTIL3 00149 BEGIN OCT 70000 00150 BCD 2.11BEDIN6 00151 ENO CCT 50000 00152 BCO 2.*ENnt 00153 BOOLEAN OCT 11000n 00154 BCD 3. 01COLEANt 00155 INTEGER OCT 11000n 00156 -RCD 3.tINTEGERt 00157 REAL OCT 60000 00158 BCD 2.6REALt 00159 ARRAY OCT 70000 00160 BCD 2.tARRAYt 00161 SWITCH CCT 100000 00162 BCD 2.0SWTTCH6 00163 PROC OCT 130000 00164 BCD 3.APRCCEOURE3 00165 PLUS OCT 10000 00166 BCD 1,. 00167 MINUS OCT 10000 00168 BCD 1.- 00169 TIMES CCT 10000 00170 BCD 1.4 00171 SLASH OCT 10000 00172 BCD 1./ 00173 ARCTAN OCT 60000 00174 BCD 2.ARCTAN 00175 LN OCT 20000 00176 RCD 1.LN 00177 ENTIER OCT 60000 00175 BCD 2.ENTIER 00179 INREAL OCT 60000 00180 RCD 2.IHREAL 00181 CUTREAL OCT 70000 00182 BCn 2.OUTREAL 00183 5IN OCT 30000 00184 BCD 1.SIN 00185 COS CCT 30000 00186 BCO 1 C05 00187 ABS OCT 30000 00188 BCD 1oASS 00189 EXP CCT 30000 00190 BCD 1 EXP 00191 SORT CCT 40000 00192 RCD 1.SORT 00193 SIGN OCT 40000 00194 BCD 1.SION 00195 ZERO OCT 10000 00196 BCD 1.0 00197 CNEHALF CCT 30000 00198 BCD 1.0.5 00199 ONE OCT 10000 00200 RCD 1.1 00201 SIXTY CCT 20000 00202 BCD 1.60 00203 SIXONE OCT 20000 00204 BCD 1.61 00205 SIXTWC OCT 20000 00206 BCD 1.62 00207 BACKSPCE OCT 110000 00208 BCO 3.8ACKSPACE 00209 ENDFILE OCT 70000 00210 BCD 2.ENDFILE 00211 REWIND OCT 60000 00212 223

INPDT.OUTPUT ACD 2,REWIND 00213 eáo oseap0000se00000sooaoesooseoao 00214 a a 00215 e e TRANSLATOR. ERROR MESSAGES e 00216 e e e se see 00217 eeee*Woo**seseee**.*.sees 00218 ERRS BCD 6,0 ILLEGAL VARIABLE 00219 ERR2 RCD 7,0 ILLEGAL ERRS SUBSCRIPTING 00220 BCD 9,0 UNCORRECTABLE ERROR FRR4 EQUIVALENCE 00221 RCD 6,0 ILLEGAL SUBROUTINE 00222 ERRS RCD 6.0 UNSUBSCRIPTED ARRAY 00223 FRR6 BCD 6,0 DELETED STATEMENT 00224 ERR7 BCD 6,0 ILLEGAL CONSTANT - 00225 ERRB RCD 6,0 EQUIVALENCE ERROR 00226 ERR1O enBCD 5,0 TOO MANY ENDS 00227 ERR11 8.0 ILLEGAL REPETITION FACTOR 00228 ERR12 BCD 5,0 ROLL OVERFLOW 00229 ERR13 BCD 7,0 UNREFERENCED SUBPROGRAM 00230 o sooseooeseeese ssee see ee e 00231 o 00232 e FORTRAN RESERVE() WORD TABLE e e 00233 o e 00234 oareooaeeaaoeeseeoosoaoo oeeeeesee 00235 FRWT3 BCD 2,SLITE 00236 RCD 2,SLITET 00237 son 2,SSWTCH 00238 RCD 2,DVCNK 00239 RCD 2,EXFLT 00240 PCD 2.0VERFL 00241 BCD 2,ECFrK 00242 RCD 2,IOCN1( 00243 RCD 2,UNITST 00244 RCD ?OVERLAY 00245 RCD 2,SEGMENT 00246 BCD 2,FORTDUMP 00247 ACD 2,ARS 00248 BCD 2,ABSF 00249 BCD 2,IAPSF 00250 RCD 2,XARSF 00251 RCD 2,ALOG 00252 BCD 2,ALOGF 00253 RCD 2,ATAN 00254 ACD 2,ATANF 00255 RCD 2,COS 00256 BCD 2,COSF 00257 RCD 2,EXP 00258 BCD 2,EXPF 00259 RCD 2,FLOAT 00260 ACD 2.FLOATF 00261 RCD 2,IFtV 00262 BCD 2,XFIXF 00263 RCD 2,FIXF 00264 BCD 2,5IGN 00265 BCD 2,SIGNF 00266 BCD 2,XSIr,NF 00267 BCD 2,ISIRN 00268 BCD 2,SIN 00269 BCD 2,SINF 00270 BCD 2,SORT 00271 BCD 2,SQRTF 00272 BCD 2,SLITEF 00273 BCO 2SLITETF 00274 BCO 2,SSWTCHF 00275 BCD. 2,OVCMKF 00276 BCD 2,EXFLTF 00277 BCD 2,OVERFLF 00278 BCD 2,EOFt0 00279 BCD 2,IOCÑKF 00280 BCO 20NITSTF 00281 BCD 2,LENGHTF 00282 BCO 2,NOT 00283 BCD 2,AND 00284 BCD 2,OR 00285 BCD 2,EOR 00286 FRWT4 BCD 1,.GE. 00287 RCD 1,.GT. 00288 BCD 1,.E0. 00289 BCD 1,.NE. 00290 BCD 1,.LE. 00291 RCD 19.1.7. 00292 PRO 00293 224 READ.wRITF EJECT 00294 TITLE READ,wRITF_ 00295 ENTRY FREAD, FWRITE, FREADT.FWRITET,FPRINT,FPUN,LTST 00296 ENTRY FREWI.FBACK.FENOF 00297 EXT REAOTAPE, SEARCH, SE4RCH2 .SADC,FETA.PACK.OUMMY,HIGHMEM 00298 EXT SCCLON 00299 FREAD ENA SIXTY 00300 STA CHANNEL 00301

ENA 0 READ - 00302 UJP ICI 00303 FWRITE ENA 1 WRITE 00304 101 STA INOUT 00305 UJP 103 00306 FREAOT ENA 0 READ TAPE 00307 UJP IO2 00308 FWPITET ENA 1 WRITE TAPE 00309 102 STA INOUT 00310 ENA 1 00311 UJP I04 00312 I03 ENA 0 00313 I04 STA IT1 ITI.EFLAG 00314 ENA 0 00315 STA IT2 IT2 =COMMA FLAG 00316 UJP I06 00317 FPRTNT ENA SIXONE PRINT 00318 UJP I05 00319 FPUN ENA SIXTWO 00320 I05 STA CHANNEL 00321 ENA 1 00322 STA INOUT 00323 STA IT2 00324 ENA 0 00325 STA IT1 00326 I05 INI -1.1 00327 LOA 4060606060 00328 STA TTPIN BLANKS INTO ITPIN 00329 STA ITPIN.1 00330 I07 INI 1,1 00331 ISO 73,1 00332 UJP I08 00333 RTJ READTAPE 00334 ISE 6,1 00335 UJP FETA GO TO EXP TYPE ANAL 00336 UJP 107 00337 IO8 LACH INTN -j,1 00338 ENO 128 NO TEST 00339 AOJ,GE I09 00340 RTJ PACK 00341 UJP I07 00342 I09 ENO 258 E TEST 00343 AOJ,NE I011 00344 1010 ENA 1 00345 STA IT1 00346 UJP I07 00347 I011 .ENO 748 LEFT PAREN TEST 00348 A0J,E0 I010 00349 ENO 348 RIGHT PAREN TEST 00350 AZJ,NE I013 00351 LDA IT2 COMMA TEST 00352 AZJ,NE 1012 00353 LDA ITPIN LETTER TEST 00354 SHA -18 00355 ASA 10 NUMBER TEST 00356

UJP- ' +.2 NUMBER 00357 UJP IC15 NOT A NUMBER 00358 RTJ SEARCH 00359 ISCNRL 00360 ISCCTR 00361 3 00362 2 00363 LOA TTPAOn 00364 STA CHANNEL 00365 I012 INI 1.1 MOVE OFF SYMBOL 00366 RTJ LIST PROCESS LIST UJP FETA GO TO EXP TYPE ANAL 00368 /013 ENO 738 COMMA TEST 00369 AZJ.NE I014 00370 LDA 1T2 00371 AZJ,NE I012 COMMA FLAG ON 00372 LDA I71 EFLAG 00373 AZJ,E0 1012 00374 LOA ITPIN LETTER TEST 00375 SHA -18 00376 ASG 10 NUMBER TEST 00377 UJP 4.2 00378 UJP I015 00379 RTJ SEARCH 00380 ISCNRL 00381 ISCCTR 00382 3 00383 2 00384 LOA ITPADO 00385 STA CHANNEL - 00386 ENA 1 00387 STA IT2 00388 UJP I07 00389 I014 ENO 538 S TEST 00390 AZJ,NE I07 00391 UJP FETA GO TO EXP TYPE ANAL 00392 1015 ENA ERRI ERROR MESSAGE. ILLEGAL VARIABLE 00393 ENO 6 00394 WRITE 61 00395 UJP SADC 00396 225 LIST PROCESSOR EJECT 00397 TITLE LIST PROCESSOR 00398 LIST UJP 4 00399 ENA 0 00400 STA IFLETF LETTER FLA00 00401 STA ARRAYF ARPAY FLAG 0 00402 STA CONSTE CONSTANT FLAG 0 00403 STA IMDDCTR IMPLIED DO LOOP CTI 0 00404 STA DOLPRCF .IMPLIED DO LOOP PROC FLAG 0 00405 STA IDONEF DONE FLAG 40 00406 STA ISCROL 0 INTO FIRST WORD OF SCRATCH ROLL 00407 STA SCRCTR SCRATCH ROLL CTR0 00408 LOA 060606060 BLANK OUT ITPIN 00409 STA ITPIN - 00410 STA ITPIN.1 00411 INI -1.1 00412 LISTI INI 1,1 00413 ISG 73,1 00414 UJP LIST? 00415 RTJ READTAPE 00416 ISE 0,1 SKIP IF NOT CONTINUATION CARD. 00417 UJP LISTI CONT CARD 00418 ENA 1 END OF LIST 00419 STA !DONEE 00420 LOA IFLETF IF IFLETF° GO TO LIST36. IF NOT PROCESS 00421 AZJ,E0 LISTIA VARIARLE AND WRITE IC STATEMENT FOR IT. 0042? RTJ SEARCH? 00423 UJP LIST17 00424 LIST? LACH ININ -1.1 00425 ENO 60B BLANK TEST 00426 AOJ.EO LIST1 00427 LETEST ILIST3.LISTBI LETTER TEST 00428 LISTS LOA IFLETF 00429 AZJ,NE LISTI NOT 15T LETTER 00430 ENO 1 00431 STO IFLETF 00432 LACH ININ -1,1 00433 INTVAR ILISTS.LIST4I INTEGER VARIABLE TEST 00434

LIST4 ENA 0 - 00435 UJP LISTE 00436 LISTS ENA 1 00437 LISTE STA ID 00438 LIST7 RTJ PACK 00439 UJP LISTI. 00440 LISTS ENO 128 NUMBER TEST 00441 A0J.GE LISTS 00442 LDA IFLETF 00443 AZJ,NE LIST7 00444 ENA 1 00445 STA CONSTF 00446 UJP LIST7 00447 LISTS LOA IFLETF TEST FOR VAR TO BE STORED 00448 AZJ,EQ LIST13 00449 ENA 0 00450 STA CONSTF 00451 RTJ SEARCH? SEARCH VARRAY ROLL 00452 LOA ITPADn TEST IF VAR IS AN ARRAY 00453 SWA 4.1 00454 LOA PICK UP ID 00455 LPA .000007777 ID? ONLY 00456 ENO 4 00457 AOJ,LT LIST14 NO 00458 ENO 108 00459 AOJ,LT LIST12 YES 00460 ENO 148 00461 AOJ,LT LIST14 NO 00462 ENO 238 00463 AOJ,GE LIST14 NO 00464 LIST12 EN4.S .1 ARRAY 00465 STA ARRAYF 00466 UJP LIST14 00467 LIST13 LDA CONSTF CONSTANT TEST. IF NONZERO SEARCH SHORT 00468 AZJ.EO LIST14 CONSTANT ROLL AND STORE ON SCRATCH ROIL. 00469 ENA 0 00470 STA CONSTF 00471 RTJ SEARCH 00472 ISCNRL 00473 ISCCTR 00474 3 00475 2 00476 LOT SCRCTR,2 PUT ADDR ON S.R. 00477 INI 1,2 00478 LDA ITPADn 00479 STA ISCROL -1.2 00480 STI SCRCTR.2 00481 LIST14 LACH ININ -t.1 COMMA TEST 00482 ENO 73B 00483 AOJ.NE LIST ?n 00484 LOA ARRAYF 00485 AZJ.LT ARRAYPRC READ ENTIRE ARRAY. NO SUBSCRIPTS 00486 AZJ.EO LIST15 00487 LOI SCRCTR,2 PUT VAR ,COMMA ON S.R. 00488 INI 1,2 00489 LDA ITPADn 00490 STA ISCROL-1,2 00491 INI 1,2 00492 ENA COMMA 00493 STA ISCROL-1.2 00494 STI SCRCTR.2 00495 ENA 0 00496 STA IFLETF 00497 UJP LISTI 00498 LIST15 LDA IFLETF 00499 AZJ,NE LISTIA 00500 LDA DOLPRCF 00501 226

LIST PROCESSOR AZJ.EO LISTI 00502 LDI SCRCTP,2 PUT SCOLON ON S.R. 00503 INI 1,2 00504 ENA SCOLON - 00505 STA ISCROL1,2 00506 STI SCRCTP,2 00507 UJP LISTI 00508 LISTI6 LOA DOLPRCF 00509 AZJ.EO LIST17 00510 LOI SCRCTR,2 - 00511 INI 1,2 00512 LOA ITPADD VAR ON S.R. 00513 STA ISCROL -1,2 00514 INI 1,2 00515 ENA SCOLON 00516 STA ISCROL-1.2 SCOLON ON S.R. 00517 STI SCRCTR.2 00518 UJP LISTI 00519 LIST17 ENA 0 STA 00520 IFLETF 00521 LOA INOUT READ OR WRITE 00522 AZJ.E0 LIST18 00523 ENA OUTREAL OUTREAL 00524 UJP LIST19 00525 LI5T18 ENA 1NREA1. INREAL 00526 LIST19 LOI SCRCTP.2 00527 INI 1,2 00528 STA ISCROL-1,2 0052g INI 1,2 00530

ENA LPAREN ( 00531 STA ISCROL-1.2 00532 INI 1,2 00533 LOA CHANNEL CHANNEL 00534 STA ISCROL-1,2 00535 INI 1.2 00536 ENA COMMA . 00537 STA ISCROL-1,2 00538 TNI 1,2 00539 LDA ITPADD 00540 STA ISCROL -1,2 VAR 00541 INI 1,2 00542 ENA RPARFN ) 00543 STA ISCROL-1.2 00544 INI 1.2 00545 ENA SCOLON ., 00546 STA ISCROL-1.2 00547 STI SCRCTP,2 00548 LOA IDONEE IF LAST VARIABLE 80 TO LISTI6. 00549 AZJ,NE LI5T36 00550 UJP LIST1 00551 LI5T20 ENO - 748 LEFT PAREN TEST 00552 ADJ,NE LIST24 00553 LOA ARRAYF ARRAY TEST 00554 AZJ,LT LIST21 LOA 00555 zO01000000 INC IMPLIED DO LOOP CTR 00556 RAD IMDOCTR 00557 LOA 000700000 00558 ADA IMDCCTR 0X700000 TN A 00559 LOI SCRCTR,2 00560 INI 1,2 00561 STA ISCROL -1.2 00562 STI SCRCTP,2 00563 UJP LIST1 00564 LIST21 ENA 0 00565 STA IFLETF 00566 ENA 1 00567 STA ARRAYF 00568 LDA INOUT 00569 AZJ,E0 LIST22 00570 ENA OUTREAL OUTREAL 00571 UJP LIST21 00572 LIST22 ENA INREAL INREAL 00573 LIST23 LDI SCRCTR.2 PUT INREAL OR OUTREAL. LPAREN, CHANNEL. 00574 INI 1,2 COMMA,NAME. CSLASH ON SCRATCH ROLL 00575 STA ISCROL-1,2 00576 INT 1.2 00577 ENA LPAREN I 00578 STA ISCROL-1.2 00579 INI 1,2 00580 LDA CHANNEL CHANNEL 00581 STA ISCROL-1.2 00582 INI 1,2 00583 ENA COMMA , 00584 STA ISCROL-1,2 00585 INI 1,2 00586 LOA ITPADD VARIA9LE 00587 STA ISCROL-1,2 00588 INT 1,2 00589 ENA CSLASH C/ 00590 STA ISCROL-1.2 00591 STI SCRCTR.2 00592 UJP LISTI 00593 LIST24 ENO 348 RIGHT PAREN TEST 00594 AQJ,NE LIST2Y 00595 LOA IFLETF 00596 42J,E0 LIST24 00597 LOA ITPADD VAR 00598 LOT SCRCTR,2 , 00599 INI 1,2 00600 STA TSCROL-1,2 00601 STI SCRCTR,2 00602 ENA 0 00603 STA IFLETF 00604 LIST25 LOA ARRAYF ARRAY TEST 00605 AZJ,E0 LIST2A 00606 LIST PROCESSOR 227 ENA 00607 STA ARRAYF 00608 LDI SCRCTR,2 00609 INI 1,2 00610 ENA SLASHC /) 00611 STA ISCROL-1,2 00612 INI 1,2 00613

ENA RPAREN 1 00614 STA ISCROL-1,2 00615 INI 1,2 00616 ENA SCOLON 00617 STA ISCROL-1.2 00618 STI SCRCTR,2 00619 UJP LISTI 00620 LIST26 LDI SCRCTR.2 00621 INI 1,2 00622 LDA .000600000 00623 ADA IMDOCTR 00624 STA ISCROL-1.2 00625 SII SCRCTR.2 00626 ENA 0 00627 STA DOLPRCF 00628 LDA =076777777 DEC IMPLIED 00 LOOP CTR 00629 RAD IMOOCTR 00630 UJP LISTI 00631 LIST27 ENO 138 00632 AOJ.NE LIST30 00633 LDA IMDOCTR 00634 LPA =O770Ó0000 00635 AZJ,FO LIST36 00636 ENA 1 00637 STA DCLPRCF 00638 LOA IMDOCTR 00639 ADA =O005Ó0000 00640 LOI SCRCTR,2 00641 INT 1,2 00642 STA ISCROL -1.2 00643 LDA IFLETF 00644 AZJ.EO LIST2R 00645 INT 1,2 00646 LOA ITPADn 00647 STA ISCROL-1.2 00648 FNA 0 00649 STA IFLETF 00650 LIST2B INI 1,2 00651 FNA REPS. REPSGN ON S. R. 00652 STA ISCROL-1,2 00653 STI SCRCTR.2 00654 UJP LISTI 00655 LIST29 LOA IFLETF 00656 AZJ.EO LIST3n 00657 LDI SCRCTR.2 00658 TNT 1.2 00659 LDA ITPADn 00660 STA ISCROL-1.2 00661 STI SCRCTR.2 00662 ENA 0 00663 STA IFLETF 00664 LIST30 LACH ININ.1.1 00665 LOI SCRCTR.2 00666 INI 1,2 00667 ENO 54R 00468 AQJ,NE LIST31 00669 FNA TIMES 00670 UJP LIST34 00671 LIST31 ENO 2014 00672 AOJ,NE LISTI, 00673 ENA PLUS 00674 UJP LIST34 0067S LIST32 ENO 408 00676 AOJ.NE LIST31 00677 ENA MINUS 00678 UJP LIST34 00679 LIST33 ENO 618 00680 AOJ.NE LIST34 00681 ENA INTDIV 00682 LIST34 LOA IFLETF 00683 AZJ.EO .4 00684 LDA ITPADn 00685 STA ISCRCL-1.2 00686 FNA 0 00687 STA - IFLETF 00688 INI 1.2 00689 STA ISCROL-1.2 00690 SII SCRCTR.2 00691 UJP LISTI 00692 LIST35 ENO 53B END OF STATEMENT TEST 00693 AOJ,NE LISTI 00694 ENA 1 00695 STA IDONEF 00696 LOA IFLETF 00697 A7J.EO LIST36 00698 UJP LISTI7 00699 LIST36 ENI 0.3 SCR ROLL CTR =B3 00700 LDA SCRCTR 00701 SWA LIST53 00702 LIST37 INI 1.3 00703 LOA ISCROI_-1 ,3 00704 A2J.FQ LIST53 00705 LPA .000777777 00706 LOO =0700000. 00707 AOJ,NE LISTSÓ 00708 LDA ISCROL -1.3 EQUAL TEST 00709 LPA =077000000 GET CTR VALUE 00710 STA IT2 00711 228

LIST PROCESSOR ADA =000500000 00712 SHAG 24 A INT,^, 0 00713 TIA 1 00714 82=PROG ROLL. INDEX,83= SCRATCH ROLL INDEX 00715 STA ISV SAVE START VALUE 00716 LIST38 LDA ISCRCL 1,3 00717 A0J.E0 LIST3q SEARCH FOR XX500000 ON S.R. 00718 INI 1,3 00719 UJP LIST18 00720 LIST39 LOT IPRCTR.2 FOUND 00721 INI 1,2 00722 ENA FOR FOR ON P.R. 00723 STA IPRGRI -1.2 00724 LIST40 INT 1,3 MOVE OFF 1 %500000 00725 INT 1,2 00726 LOA ISCRCI -1,3 00727 ENO SCOLON SCOLON TEST 00728 AOJ,E0 LIST41 00729 STA IPRGPI -1.2 COPY S.R. ONTO P.R. 00730 ENA 0 00731 STA ISCRCI -1,3 00732 UJP LIST4n 00733 LIST41 ENA STEP STEP ON PROF ROLL 00734 STA IPRGRL. -1.2 00735 STI IT1,1 LOC CF 1ST SCOLON 00736 LIST42 INT 1,3 SEARCH FOR .. OR 5X600000 00737 ENO SCOLON 00738 LDA ISCROI -10 00739 AOJ.EO LIST44 00740 LDA =000600000 00741 ADA IT2 00742 LOO ISCRCL-1,3 00743 AOJ,E0 LIST41 HIT 00744 UJP LISTO? MISS 00745

LIST43 ENA 0 - 00746 STA ISCR,^.L -1,3 00747 INT 1,2 00748 FNA ONE ONE ONTO P.R. 00749 STA IPRGRL -1.2 00750 UJP LIST47 00751 LIST44 ENA 0 00752 STA ISCR,,^,L -1.3 00753 LDA P000600000 00754 ADA IT2 00755 SHAG 24 00756 LIST45 INI 1,2 INC P.R. CTR 00757 INI 1,3 INC S.R. CTR 00758 LOA ISCROI -1,3 COPY S.R. ONTO P.R. UNTIL 2X600000 00759 AOJ.EO LIST44 00760 STA IPRGRL -1,2 00761 ENA 0 00762 STA ISCRCL-1,3 00763 UJP LIST45 00764 LIST46 FNA n WIPE OUT 0X600000 00765 STA ISCRCL-1,3 00766 LIST47 INT 1.2 00767 ENA UNTIL UNTIL ON P.R. 00768 STA IPRGRL -1.2 00769 LOT I71,3 RESTORES LOC OF 1ST . 00770 ENA 0 00771

STA ISCRCL-I,3 WIPE OUT . ON SCRATCH ROLL 00772 LIST INI 1,2 00773 INT 1,3 00774 LOA ISCRCL-1,3 COPY SR ONTO PR 00775 AZJ.E0 LIST44 00776 STA IPRGRL -1,2 00777 ENA 0 00778 STA ISCROI. 1,3 00779 UJP LIST48 00780 LIST49 ENA DC DO ON PANTO ROLL 00781 STA IPRGRL -1,2 00782 INI 1,2 00783 ENA BEGIN BEGIN ON P.R. 00784 STA IPRGRL -1,2 00785 STI IPRCTR,2 00786 LOI ISV,3 RESTORE START VALUE 00787 UJP LIST37 00788 LIST50 LOO =0500000 00789 LOI IPRCTR,2 00790 INT 1.2 00191 AOJ.EO LISTS1 00792 LOA ISCRCI -1,3 COPY SCRATCH ROLL ONTO PROG ROLL 00793 STA IPRGRL -1,2 00794 UJP LISTS, 00795 LIST51 ENA END ENO ON P.R. 00796 STA IPRGRL -1,2 00797 INT 1,2 00798 FNA SCOLON .. ON P.R. 00794 STA IPRGRL -1,2 00800 LIST52 STS IPRCTR.2 00801 LIST53 ISO 44,3 TEST ON LENGTH OF SCRATCH ROLL. 00802 UJP LIST17 00803 UJP LIST 00804 ARRAYPRC FNA ERRS ERROR MESSAGE. 11NSUBSCRIPTED 00805

ENO 6 ARRAY - 00806 WRITE 61 00807 ENA 0 00808 STA ID 00809 LOA m0606(16060 BLANKS INTO ITPIN, ITPIN.1 00810 STA ITPIN 00811 STA ITPIN.1 00812 UJP LISTI 00813 229

TAPE HANDLING STATEMENTS EJECT 00814 TITLE TAPE HANDLING STATEMENTS 00815 FRFWI ENO 1 REWIND 00816 UJP TH1 00817 FROCK ENA 0 BACKSPACE. CAUTION. ALGOL 00818 11JP TH1 BACKSPACES OVER 1 PHYSICAL RECORD 00819 FENOF FNA.S -1 WHILE FORTRAN BACKSPACES OVER 1 00820 TH1 STA II1 LOGICAL RECORD. 00821 FNA 0 00822 STA ID 00823 LDA 4060606060 BLANKS INTO ITPIN.ITPIN.1 00824 STA ITPIN 00825 STA ITPIN.1 00826 INI -1.1 DECREMENT 81 00827 TH2 INI 1,1 00828. ISR 73.1 00829 UJP TH3 00830 RTJ READTAPE READ NEXT RECORD 00831 ISE 6,1 00832 UJP TH5 00833 UJP TH2 00834 TH3 LACH INTN -j.1 NUMBER TEST 00835 ENO 128 00836 AOJ.GE TH4 00837 RTJ PACK PACK THE NUMBER 00838 UJP TH2 00839 TH4 ENO 60B BLANK TEST 00840 A0J.E0 TH2 00841 ENO 538 ENO OF STATEMENT TEST 00842 AQJ.E0 TH5 00843

ENA ERRI . ILLEGAL VARIABLE 00844 ENO 6 00845 WRTTE 61 00846 UJP SADC DELETE THE REST OF THE STATEMENT 00847 TH5 LDS IPRCTR.2 00848 LOA IT1 00849 AZJ.L.T TH6 00850 A7J.E0 TH7 00851 ENA REWINf REWIND ON THE PROG ROLL 00852 UJP TH8 00853 TH6 ENA ENDFILE ENOFILE ON THE PROG ROLL 00854 UJP TH8 00855 TH7 ENA RACKSPCE 00856 THR INT 1.2 00857 STA IPRGRL -1.2 00858. SIT IPRCTP.2 00855 RTJ SEARCH SEARCH THE SHORT CONSTANT ROLL 00860

ISCNRL - 00861 I,SCCTR 00862 3 00863 2 00864 1., PROS LAI IPRCTR.2 PUT L CONSTANT ON ROLL 00865 INT 1,2 00866 ENA LPAREN 00867 STA IPRGRL -1.2 00868 INT 1,2 00869 LDA TTPADn 00870 STA IPRGRI-1.2 00871 TNT 1.2 00872 FNA SPAREN 00873 STA IPRGRL -1.2 00874 TNT 1,2 00875 ENA SCOLON 00876 STA ÌPRGRL-1.2 00877 STT TPRCTR.2 00878 UJP FETA 00879 IMnOCTR BSS 1 00880 OOLPRCF 855 1 00881 IT1 ASS 1 00882 I1'2 ASS 1 00883 ENO 00884 230

READTAPE

IDENT READTAPE 00001 COMMON 00002 SURRCL ASS 60 SUBROUTINE ROLL MAX 20 00003 SURCTR BSS 1 SUBROUTINE ROLL CTR 00004 PUNCH ASS 1 ALTERNATE OUTPUT LUN 00005 ARRAYF BSS 1 ARRAY FLAG 00006 RLCCKCTR RSS 1 BLOCK CTR 00007 CHANNEL ASS 1 CHANNEL NUMBER 00008 CONSTF ASS 1 CONSTANT FLAG 00009 DATAF RSS 1 DATA FLAG 00010 DYNARRAY ASS 1. DYNAMIC ARRAY FLAG 00011 EFL4G ASS 1 F TYPE CONSTANT FLAG 00012 TARCTR RSS 1 ARRAY /SWITCH ROLL CTR 00013 IARIND BSS 1 ARRAY POINTER 00014 ICDCTR RSS COMMON ROLL CTR 00015 ID RSS 1 VARIABLE ATTRIBUTE/ CHARACTER CTR 00016 !DONEE RSS 1 DONE WITH STATEMENT FLAG 00017 IDOCTR RSS 1 DO ROLL CTR 00018-- IDSP BSS 1 DECLARATIVE STATEMENTS FINISHED 00019 , IEQCTR RSS 1 EQUIVALENCE ROLL CTR 00020 IEOF ASS 1 EQUIVALENCE FLAG 00021 IFLETF BSS 1 FIRST LETTER FLAG 00022 IHM BSS 1 HIT OR INSERTION FLAG 00023 ILCCTR ASS 1 LONG CONSTANT ROLL CTR 00024 RSS 2 INPUT OVERFLOW AREA 00025 ININ RSS 20 INPUT AREA 00026 INCUT RSS 1 READ /WRITE FLAG 00027 IPRCTR RSS 1 PROGRAM ROLL CTR 00028 TSCCTR ASS 1 SHORT CONSTANT ROLL CTR 00029 SCRCTR RSS 1 1ST SCRATCH ROLL .CTR 00030 SCRCTR2 BSS I 2ND SCRATCH ROLL CTR 00031 ISV ASS 1 START VALUE 00032 ISWCTR EQU TARCTR ARRAY/ SWITCH ROLL CTR 00033 ITPADD RSS 1 TEMPORARY ADDRESS STORAGE 00034 TTPIN ASS 5 TEMPORARY STORAGE 00035 ASS IVACTR 1 VARRAY ROLL CTR 00036 LORE RSS 1 LOGICAL OPERATOR FLAG 00037 MAINPROG ASS 1 MAIN PROGRAM /SUBROUTINE FLAG 00038 OPERE ASS 1 OPERATOR FLAG 00039 RSS 1 OUTPUT OVERFLOW AREA 00040 QUTIN ASS 24 OUTPUT AREA 00041 PARAMF BSS 1 PARAMETER FLAG 00042 PARENF RSS 1 PARENTHESIS FLAG 00043 RELOPF RSS 1 RELATIONAL OPERATOR FLAG 00044 ISCNRL ASS 1200 SHORT CONSTANT ROLL MAX 400 00045 IVAROL ASS 2000 VARIABLE ROLL MAX 500 00046 ILCNRL ASS 600 LONG CONSTANT ROLL MAX 600 00047 IDOROL RSS 100 DC LOOP ROLL MAX 32. 00048 ISCROL BSS 800 1ST SCRATCH ROLL 00049 SCRL2 RSS 1 2ND SCRATCH ROLL 00050 IPRGRL BSS 1 PROGRAM ROLL 00051 ICOMRL EOU ILCNRL, COMMON ROLL. MAX 600 00052 IEOROL EOU IDOROI EQUIVALENCE ROLL MAX 100 00053 PRG 00054 ENTRY RF.ADTAPE,SEARCM.SEARCH2,PACK 00055 F.XT HIGHMFM 00056 READTAPE UJP 44 00057 ENT 1,1 00058 LOA .060606060 00059 RT0 STA ININ -1 .1 00060 IST 20,1 00061 UJP RTO READTAPE READS A RECORD FROM 00062 ENA ININ INTO ININ. IF THE RECORD READ IS 00063 ENO 20 A CONTINUATION CARD. READTAPE 00064 READ 55 RETURNS WITH A 6 IN R1. IF NOT, 00065 SHA 2 READTAPE RETURNS WITH A 0 IN 51 00066 A7J,LT RT6 00067 ENI 1,1 00068 RT1 LDA 060606060 00069 STA OUTIN -1.1 BLANK OUT INPUT AREA 00070 ISI 24,1 00071 UJP RT1 00072 ENI 1,2 00073 ENI 1,1 00074 RT2 LACH ININ -I,1 LABEL INTO OUTIN 00075 SACH OUTIN.1,2 00076 INT 1,2 00077 IST 5.1 00078 UJP RT2 00079 LACH ININ.S CONTINUATION INTO QUTIN 00080 SACH OUTIN.7 00081 FAIT 11,2 00082 ENT 7,1 00093 RT3 LACH ININ -I,1 STATEMENT INTO QUTIN 00084 SACH CUTIN -1,2 00085 INT 1,2 00086 1ST 72,1 00087 UJP RT3 00088 ENT 73,1 00089 ENT 87,2 00090 RT4 LACH ININ -1.1 FIELD ID INTO QUTIN 00091 SACH OUTIN -1.2 00092 TNI 1,2 00093 IST gó,1 00094 UJP RT4 00095 ENI 23,1 CAUTION, VARIABLE LENGTH RECORDS 00096 LDD 4060606060- ARE WRITTEN ON LUN 61 00097 LDA OUTIN,1 SEARCH FOR NONBLANK WORD 00098 AOJ.NE 4.2 00099 IJD 4 -2,1 00100 INI 2,1 00101 TIA 1 00102 SHAD -24 00103 ENA OUTIN.1 00104 231

READTAPE WRITE 61 00105 LACH ININ.c TEST FOR CONI CARD 00106 ENO 60B 00107 AOJ,NE RT7 00108 RT6 ENI 0,1 00109 UJP READTAPE 00110 RT7 ENI 6.1 00111 UJP READTAPE 00112 232

PACK EJECT 00113 TITLE RACK 00114 PACK UJP ** PACK THE CHARACTER INTO ITPTN O011ß LOA IO INCREMENT THE FIRST HALF OF IO 00116 SHA -12 00117 TAT 2 00118 LACH ININ -1.1 00119 SACH ITPIN.2 00120 ENA 100004 00121 RAO IO 00122 UJp PACK 00123 233 SEARCH, SEARCH2 EJECT 00124 TITLE SEARCH. SEARCH2 00125 SEARCH UJP 1ST TWO PARAMS ARE ADDR. LAST 2 PARAMS ARE 00126 STI IT1.1 VALUES 00127 LOA,I SEARCH GFT ROLLS ADDR 00128 INA,S -1 00129 STA IT2 IT2 HOLDS PROPER ADDR CF ROLL 00130 SWA LS3 BASE ADDR INTO PROGRAM 00131 SWA LS5 00132 SWA LS7 ENA 00133 1 00134 RAD SEARCH 00135 LOA.! SEARCH 00136 SWA LS14 00137 SWA .1 00138 LOA 00139 SWA LS12 CTR VALUE INTO SKIP INSTR 00140 SWA LS13 00141 ENA 1 00142 RAD SEARCH 00143 LOA,T SEARCH 00144 STA I73 NO OF WORDS / ENTRY 00145 ENA 1 00146 RAD SEARCH 00147 LOA.T SEARCH 00148 STA IT4 00149 SWA LS15 00150 SWA LS16 00151 SWA LS17 NO OF SEARCH WORDS / ENTRY 00152 ENA 1 00153 RAD SEARCH SEARCH RETURN ADDR 00154 FNI 2.2 B2 =2 00155 LS1 FNI 1,1 R1=1 00156 LOI IT3.3 NO OF WORDS PER ENTRY 00157 LS? LOA ITPIN -1,1 COMPARE CHARS IN ITPIN TO CHARS ON ROLL 00158 LS3 LOO .,2 IF EQUAL DECREMENT NC CF WORDS PER ENTRY 00159 A0J,NE LS4 INCREMENT ROLL CTR 00160 INT -1,3 DECREMENT 83 00161 TNT 1,2 INCREMENT 82 00162 LS15 1ST .1 00163 UJP LS2 00164 ENA 1 00165 STA IHM HIT. 82 POINTS TO 1ST WORD CF NEXT ENTRY 00166 INT -1.2 R2 POINTS TO LAST SEARCH WORD IN 00167 UJP LS8 ENTRY 00168 LS4 TTA 3 00169 TAT 2 82'R2.83 00170 LS12 ISG ,2 SKIP TF 82 GREATER THAN ROLL COUNTER 00171 UJP LS1 00172 ENA 0 INSERTION 00173 STA IHM 00174 LSI3 FNI ,2 ROLL CTR 82 00175 TNT 1,2 00176 LDA 10 In INTO ROLL 00177 LS5 STA .2 00178 ENT 1,1 81.1 00179 LS6 INT 1,2 00180 LDA ITPIN -1.1 00181 LS7 STA .2 STORES ITPIN ONTO ROLL 00182 LS16 IST .1 00183 UJP LS6 82 POINTS TO LAST WORD IN ENTRY 00184 LS14 STI ,2 STORES NEW VALUE INTO ROLL COUNTER 00185 LS8 TIA 2 CALCULATES ADDRESS CF FIRST WORD IN ROLL EN 00186 SRA IT4 NO CF SEARCH WORDS /ENTRY 00187 ADA IT2 ADDR OF THE ROLL 00188 STA ITPAnn 00189 ENT 1.1 00190 LOA .060606060 BLANK OUT ITPIN 00191 LS9 STA ITPIN -1,1 00192 LS17 IST ,1 00193 UJP LS9 00194 LOA ID PUT ZEROS INTO CHAR CTR 00195 LPA .000007777 00196 STA ID 00197 LOI IT1,1 RESTORE INDEX REGISTER 00198 UJP SEARCH - 00199 SEARCH2 UJP SEARCHES VARRAY ROLL 00200 RTJ SEARCH 00201 IVAROL 00202 IVACTR 00203 4 00204 2 00205 LOA IHM 00206 AZJ,NE SEARCH21 00207 ENA 1 INSERTICN.INCR VARRAY CTR, PUT 00208 RAD IVACTR ADDR IN ITPADD ON ROLL 00209 LOA ITPADD 00210 LOI IVACTR.2 00211 STA IVAROL -1,2 00212 UJP SEARCH2 00213 SEARCH21 LOA ITPADD HIT. ITPADD HOLDS ADDR OF 1ST 00214 INA 3 WORDOF ENTRY. POINT ITPADD TOWARD 00215 SWA .1 4TH ENTRY WORD. PUT CONTENTS OF 4 00216 LDA ENTRY WORD INTO ITPADD 00217 STA ITPADD 00218 UJP SEARCH2 00219 R78 BCD 3,0OATA< 00220 IT1 BSS 1 00221 IT2 BSS 1 00222 IT3 BSS 1 00223 BSS IT4 1 00224 END 00225 AEA 234 EJECT 00124 IOENT AEA 00226 ARIES! MACRO (ARRAY.NARRAY) 00227 ASG 24B 00228 ASG 4B 00229 UJP NARRAY 00230 ASP,, 148 00231 ASG lOB 00232 UJP ARRAY 00233 OJP NARRAy 00234 ENDM 00235 LETEST MACRO (LET.NOLET) 00236 ASG 728 00237 ASG 218 00238 UJP NCLET 00239 ASG 628 00240 ASG 32B 00241 UJP LET 00242 ASG 528 00243 ASG 418 00244 UJP NDLET 00245 ENDM 00246 INTVAR MACRO (YE59N0) 00247 ENQ 31R 00248 A0J.E0 YES 00249 ENO 41R 00250 AOJ.L.T NO 00251 ENO 468 00252 A0J,LT YES 00253 ENDM 00254 COMMON SUBROL 00255 RSS 60 SUBROUTINE ROLL MAX 20 00256 SUBCTR BSS 1 SUBROUTINE ROLL CTR 00257 PUNCH BSS 1 ALTERNATE OUTPUT LUN 00258 ARRANT BSS 1 ARRAY FLAG 00259 BLCCKCTR PSS 1 BLOCK CTR 00260 CHANNEL BSS 1 CHANNEL NUMBER 00261 CONSTE RSS 1 CONSTANT FLAG DATAF 00262 BSS 1 DATA FLAG 00263 DYNARRAY BSS 1 DYNAMIC ARRAY FLAG 00264 [FLAG RSS 1 E TYPE CONSTANT FLAG 00265 IARCTR BSS 1 ARRAY /SWITCH ROLL CTR 00266 IARIND ASS 1 ARRAY POINTER 00267 ISCCTR ASS 1 COMMON ROLL CTR 00268 ID RSS 1 VARIABLE ATTRIBUTE/ CHARACTER CTR 00269 IDONEF PSS 1 DONE WITH STATEMENT FLAG 00270 IDOCTR ASS 1 DO ROLL CTR 00271 105P BSS 1 DECLARATIVE STATEMENTS FINISHED 00272 TEOCTR BSS 1 EQUIVALENCE ROLL CTR 00273 PSS IEOF 1 EQUIVALENCE FLAG 00274 IFLETF 855 1 FIRST LETTER FLAG. 00275 /HM BSS 1 HIT OR INSERTION FLAG 00276 ISCCTR BSS 1 LONG CONSTANT ROLL CTR 00277 RSS 2 INPUT OVERFLOW AREA 00278 ININ BSS 20 INPUT AREA 00279 INPUT RSS 1 READ /WRITE FLAG IPRCTR 00280 BSS 1 PROGRAM ROLL CTR 00281 ISCCTR RSS 1 SHORT CONSTANT ROLL CTR 00282 SCRCTR RSS 1 1ST SCRATCH ROLL CTR 00283 SCRCTR2 ASS 1 2ND SCRATCH ROLL CTR 00284 RSS ISV 1 START VALUE 00285 ISWCTR FOIL IARCTR ARRAY/ SWITCH ROLL CTR 00286 ITPADD RSS 1 TEMPORARY ADDRESS STORAGE 00287 ',PIN BSS 5 TEMPORARY STORAGE 00288 IVACTR BSS 1 NARRAY ROLL CTR 00289 LOGE BSS I LOGICAL OPERATOR FLAG 00290 MAINPROG BSS 1 MAIN PROGRAM /SUBROUTINE FLAG 00291 OPERF BSS 1 OPERATOR FLAG 00292 BSS I OUTPUT OVERFLOW AREA 00293 CUTIN BSS 24 OUTPUT AREA 00294 PARAN! BSS 1 PARAMETER FLAG 00295 PARENF BSS 1 PARENTHESIS FLAG 00296 RELOPF BSS 1 RELATIONAL OPERATOR FLAG 00297 ILCNRL BSS 1200 SHORT CONSTANT ROLL MAX 400 IVAROL 00298 BSS 2000 VARIABLE ROLL. MAX S00 00299 ILCNRL BSS 600 LONG CONSTANT ROLL MAX 100 00300 IDOROL BSS 100 DO LOOP ROLL MAX 32 00301 ISCROL BSS 800 1ST SCRATCH ROLL 00302 SCRL2 BSS 1 2ND SCRATCH ROLL 00303 IPRGRL BSS I PROGRAM ROLL 00304 ICOMRL EOU ILCNRL COMMON ROLL. MAX 600 00305 !COBOL EOU IDCROL EQUIVALENCE ROLL MAX 100 00306 DATA 00307 00308 00309 0 ALGOL RESERVED WORD TABLE 00310 00311 00312 POWER OCT 70000 00313 ROD 2, *POWER* 00314 INTDIV OCT 50000 00315 BCD 2, *DIN* 00316 GT OCT 110000 00317 BCD 3.*GREATER* 00318 OE OCT 120000 - 00319 BCD 3, *NOT LESS* 00320 EQUAL OCT 10000 00321 RCn 1.= 00322 NE OCT 130000 00323 BCD 3,*NO1 EQUAL* 00324 LE OCT 150000 00325 BCD 4.*NOT GREATER* 00326 LESS OCT 60000 00327 BCD 2. *LESS* 00328 AND OCT 50000 00329 AEA BCD 2 +#AN0# 00330 CR OCT 40000 00331 235 BCD 1+00R* NOT OCT 00332 50000 00333 BCD 2, NOT# PERIOD OCT 00334 10000 00335 BCD le. COMMA OCT 00336 10000 00337 BCD 1r, COLON 00338 OCT WOO 00339 OCT 60126060 00340 SEMICOLN OCT 10000 OCT 00341 37606060 00342 LPAREN OCT 10000 00343 BCO 1.( RPAREN 00344 OCT 10000 00345 BCD 1.) 00346 REASON CCT 30000 00347 CCT 60766060 00348 CSLASM OCT 20000 00349 OCT 60176060 SLASHC CCT 00350 20000 00351 OCT 72606060 00352 TRUE OCT 60000 BCD 00353 20TRIIE 00354 FALSE CCT 70000 BCD 00355 2+4FAL5E3 00356 ROTO OCT 70000 BCD 00357 2,600 TO* 00358 IF OCT 40000 BCD 00359 1 + *IF *_ 00360 THEN OCT 60000 BCD 00361 2,*THFNs 00362 ELSE OCT 60000 00363 BCD 2.*ELRE 00364 FOR OCT 50000 BCD 2,0FO6 00365 no OCT 40000 00366 00367 BCD 1. *D0* 00368 STEP OCT 60000 RCO 00369 2r *STEP* 00370 UNTIL OCT 70000 00371 BCD 2.* UNTIL* 00372 BEGIN OCT 70000 00373 BCD 2+t8EGIN* 00374 ENO OCT 50000 BCD 00375 2,*ENDS 00376 BOOLEAN OCT 110000 00377 BCD 3. *BOOLEAN* INTEGER OCT 110000 00378 BCD *INTEGER* 00379 3r 00380 REAL CCT 60000 BCD 00381 2, *REAL* 00382 ARRAY OCT 70000 BCD 00383 2. *ARRAY* 00384 SWITCH CCT 100000 BCD 00385 2. *SWITCH* 00386 BROC CCT 130006 BCD 00387 3r *PROCEDURE* 00388 PLUS OCT 10000 BCD 1r 00389 MINUS OCT 00390 10000 00391 BCD 1 +' TIMES 00392 OCT 10000 00393 BCO 1, DIV 00394 OCT 10000 00395 BCD 1./ 00396 ARCTAN OCT 60000 00397 BCD 2 +ARCTAN LN 00398 OCT 20000 00399 BCD 1+LN 00400 ENTIER OCT 60000 00401 BCD 2.ENTIER INREAL 00402 OCT 60000 00403 BCD 2 INRFAL 00404 OUTREAL OCT 70000 00405 BCD 2.0UTREAL SIN 00406 OCT 30000 00407 BCD lisp. 00408 COS OCT 30000 00409 BCD 1,COS ABS 00410 OCT 30000 00411 BCD LABS EXP OCT 00412 30000 00413 BCD IiEXP SORT OCT 00414 40000 00415 BCD 1eSQRT 00416 SIGN OCT 40000 BCD 00417 1,SIGN 00418 ZERO OCT 10000 BCD 00419 1.0 00420 ONEHALF OCT 30000 00421 BCD 1.0.5 00422 ONE OCT 10000 00423 BCO 1 +1 00424 SIXTY CCT 20000 00425 BCD 1.60 SIXONE 00426 OCT 20000 00427 8CD 1 +61 00428 SIXT140 OCT 20000 00429 BCD 1,62 RACKSPCE 00430 OCT 110000 00431 BCD 3 BACKSPACE 00432 ENDFILE CCT 70000 00433 BCD 2,ENDFILE 00434 AEA REWIND OCT 60000 00435 236 BCD 2,REWTNO 00436 00437 00438 0 TRANSLATOR ERROR MESSAGES 00439 e 00440 eee eeeeeee *Yeeeeeeeee 00441 ERRI BCD 6.0 ILLEGAL VARIABLE 00442 ERR2 BCD 7,0 ILLEGAL SUBSCRIPTING 00443 ERR3 RCO 90 UNCORRECTABLE ERROR 00444 ERR4 EQUIVALENCE pCD 6,0 ILLEGAL SUBROUTINE 00445 ERRS BCD 6,0 UNSUBSCRIPTED ARRAY 00446 ERR6 eco 6,0 DELETED STATEMENT 00447 ERR7 BCC 6.0 ILLEGAL CONSTANT 00448 ERRS BCD 60 EQUIVALENCE ERROR 00449 ERR10 BCD 5,0 TOO MANY ENDS ERR11 00450 SCD 8,0 ILLEGAL REPETITION FACTOR 00451 ERR12 R55 5 00452 ERR13 BCD 7.0 UNREFERENCEO SUBPROGRAM - 00453 e 00454 e e 00455 e FORTRAN RESERVED MORO TABLE 00456 e 00457 00458 FRWT3 BCD 2.SLITE 00459 BCD 2,SLITET 00460 BCD 2.SSwTCH 00461 BCD 2,DVCHK 00462 BCD 2.EXFLT 00463 BCD 2,OVERFL 00464 BCD 2rEOFCK 00465 BCD 2,IOCHK 00466 BCD 2,UNITST 00467 BCD 2.OVERLAY 00468 BCD 2,SEGMENT 00469 BCD 2.FCRTDUMP 00470 BCD 2003S 00471 BCD 2,ABSF 00472 RCD 2,IABSF 00473 BCD 2,XABSF 00474 eco 2,ALO8 00475 RCD 2,ALOGF 00476 BCD 2,ATAN 00477 BCD 2,ATANF 00478 RCD 2,CCS BCD 00479 2.COSF 00450 BCD 2,EXP 00481 BCD 2,EXPF 00482 BCO 2,FLOAT - 00453 RCD 2,FLOATF - 00484 BCO 2,IFIX 00495 BCD 2.XFIXF 00486 BCD 2,FIXF 00487 BCD 2,SIG4 00488 BCD 2.SIGNF 00489 BCD 2,XSIGNF 00490 B CD 21PISIC,N 00491 BCD 2,SIN 00492 BCn 2.SINF 00493 BCO 2,SQRT 00494 BCD 2.SORTF 00495 BCD 2,SLITEF 00496 BCD 2,SLITETF 00497 RCD 2,SSWTCHF 00498 RCD 2,DVCHKF 00499 BCD 2,EXFLTF 00500 BCD 2.0VERFLF 00501 BCD 2,EOFCKF - 00502 RCD 2,IOCHKF 00503 BCO 2UN1TSTF 00504 BCO 2,LENGHTF 00505 BCD 2.NOT 00506 BCD 2,AND 00507 eco 2.09 - 00508 BCD 2,EOR 00509 PINTA eco 1,.GE. 00510 BCO 11.GT, 00511 BCD 10.E0. 00512 BCD 1,.NE. 00513 RCD 1,.LE. 00514 BCD 1,.1.î. 00515 PPG 00516 EXT PACK ,FETA,SEARCH,SEARCH2,READTAPE 00517 EXT FDATA21.DUMMY.HTGHMEM.SCOLON 00518 ENTRY FAEA.FCALL,SADC 00519 FAEA UJP e 00520 ENA O SET FLAGS 00521 STA CCNSTF CONSTANT FLAG 00522 STA RELOPF RELATIONAL OPERATOR FLAG 00523 STA LOGE LOGICAL OPERATOR FLAG 00524 STA ARRAYF ARRAY FLAG 00525 STA IDONEE ENO OF STATEMENT FLAG 00526 STA OPERF OPERATOR FLAG 00527 STA EFLAG E TYPE CONSTANT FLAG 00528 STA IFLETF FIRST LETTER FLAG 00529 STA PARAMF SUBROUTINE PARAMETER FLAG 00530 STA OPFLAB CHARACTER BUFFER FLAG 00531 STA PARENF PARENCTR (molt )m -1 00532 STA IT3 IT3m0 00533 LOA ID TEST IF VARIABLE HAS BEEN PACKED. 00534 LPA *D77770000 00535 42J,E0 AEA, 00536 ENA 1 00537 STA IFLETF 00538 AEA63 LOA IPRCTR ADD 1 TO IPRCTR TO MOVE OFF 00539 1

237 AEA INA 1 END OF PREVIOUS STATEMENT 00540 STA ISV ISV.IPRCTR.1 00541 INi -1.1 00542 AEA1 TNT 1,1 00543 ISE 71.1 00544 UJP AEA3 00545 RTJ READTAPE 00546 TSD 6.1 00547 UJP 4E82 00546 UJP AEA1 00549 AEA? ENA 1 END OF STATEMENT 00550 STA IDONFF 00551 RTJ VCPROr. PROCESS VARIABLES IF ANY 00552 UJP AEA53 GO TO PUT SCOLON ROUTINE 00553 ÁE43 LACH ININ -1.1 00554 ENO 608 00555 40J.E0 AEA1 TEST FOR BLANK LETEST (AEA4 .AEA12) LETTER TEST 57 AEA4 LDA CONSTF A7J.E0 AEA7 NOT A CONSTANT 59 LOCH ININ -1,1 CONSTANT PROCESSOR E556680 ENO 258 E TYPE CONSTANT 00561 AOJ,NE AEA31 00562 ENA I 00563 STA EFLAO 00564 TTA 1 PUT PROPER EXP SYMBOL INTO ININ 00565 TAT 2 FOR PACKING 00566 ENA 149 00567 SACH ININ -j,2 PUT 4 IN PLACE OF E IN CONSTANT 00568 U,IP AEA11 00569 AEA31 FNA ERR7 PRINT ILLEGAL CONSTANT 00570 ENO 6 00571 WRITE 61 00572 AEA61 LOA ISV RESET IPRCTR TO DELETE CODE 00573 INA,S -1 00574 STA IPRCTR 00575 LOA =060606060 BLANK OUT ITPIN,ITPIN1 00576 STA ITPIN 00577 STA ITPIN.1 00578 ENA 0 00579 STA ID 00580 LDA DATAF IF NOT A DATA STATEMENT GO TO 00581 AZJ.EO SAOC SCAN AND DELETE CARDS. 00582 UJP FDATA21 00583 AEA7 LOA IFLETF TEST FOR 1ST LETTER, 00584 A7J,NE ÁF411 IF TRUE DETERMINE IF REAL OR 00585 ENA 1 INTEGER AND SET LETTER FLAG. 00586 STA IFLETF PACK AND TURN OPERATOR FLAG OFF. 00587 ENA o TURN OFF OPERATOR SINCE VARIABLE 00588 STA ., WERE IS BEING PROCESSED 00589 LACH ININ -1 +1 00590 INTVAR (AEA9AEA8) INTEGER VARIABLE TEST 00591 AFAR ENA 0 00592 UJP AEATO 00593 AEA9 ENA 1 00594 AEA10 STA ID 00595 AE411 RTJ PACK 00596 UJP AEA1 00591 AE412 ENO 128 NUMBER TEST, IF TRUE TEST 00598 AOJ.C,E AEA16 CONSTANT FLAG. If TRUE TURN Off 00599 LOA CONSTF OPERE, PACK NO. IF NOT TEST IF 00600 AZJ.NE AEA11 LAST ENTRY ON PROP ROLL IS A RßHT 00601 STA OPERF PAREN 00602 LOA IFLETF 00603 AZJ.NE AEA11 00604 LDA CONSTF 00605 AZJ.LT AEA11 00606 ENA 1 00607 STA CONSTF 00608 UJP AEAII 00609 AEA. ENO 338 DECIMAL POINT OR PERIOD TEST 00610 A0J+NE AEA36 00611 ENT 1,3 DECIMAL POINT OR PERIOD ROUTINE 00612 ENT -4.2 00613 DP2 ISB 73,1 00614 UJP DP6 00615 ST! I71,2 SAVE 82 00616 FNA 1 READ NEXT RECORD. SET FLAG 00617 STA DPFLAS INDICATING THAT BUFFER WILL BE 00618 RTJ READTAPE USED. 00619 ISE 6.1 00620 UJP 0P3 00621 FNA 606 PUT BLANK IN ININ 41,6 TO REMOVE 00622 ENT 6,2 CONT CARD DESIGNATOR 00623 SACH ININ -1 ,2 00624 ENT 0,2 00625 SACH ININ-j,2 00626 IIJP DP4 00627 DP3 ENA ggg PUT E INTO ININ -1,0 TO END 00628 FNT 0.2 STATEMENT 00629 SACH ININ -j.2 00630 0P4 LOT 171,2 00631 OPS TNT 1,1 51 I5 ALREADY SET UP. 00632 LACH ININ -1+1 00633 SACH ININ -j.2 00634 STT IT1,2 PLANKS INTO ININ TO WIPE OUT 00635 TIA 1 STATEMENT THAT IS BEING PLACED 00636 TAT 2 TN THE BUFFER. 00637 ENA 608 00638 SACH ININ -1 +2 00639 LDT ITT.2 00640 INI 1,2 00641 1ST 4,3 00642 IIJP TIPS 00643 UJP DP7 00644 AEA 238 DPA LACH ININ -1,1 PUT CHARACTERS INTO BUFFER 00645 SACH ININ -1,2 00646 INI 1,1 00647 INT 1.2 0064R IST 4,3 00649 UJP DP2 00650 INI -1.1 DECREMENT 81 DP7 00651 STT IT1,1 COPY BUFFER INTO 112 00657 ENT -4,1 00653 ENT 0,2 DPR 00654 LACH ININ - .1 00655 SACH IT2.2 00656 INT 1,1 00657 ISI 3,2 00658 OAP OPB 00659 DP9 ENI 6,1 00660 F.NO,S -0 00661 LOA I72 MEO 00662 FRWT4.1 SEARCH FRWT4 FOR RELOP 00663 OAP DP12 NOT ON FRWT4 00664 LOA FRWT4J.1 00665 SWA OPIO 00666 LOI IT1.1 00667 RTJ VCPROC PROCESS VARIABLE. PUT RELOP ON 00660 LOT IPRCTP.2 PROP ROLL. 00669 INT 1,2 00670 DP10 as FNA ADDR OF RELOP 00671 LOA =O533ó0000 00672 STA IPROR( -1.2 00673 STT IPRCTP.2 00674 ENA 1 PUT 1 INTO RELOPF,OPERF 00675 STA RELOPF 00676 STA OPERF 00677 OAP AEA' 00678 DP 12 LOI ITT,' 00679 LOO 033454663 NOT A .NOT. OPERATOR 00680 AOJ,NE DP14 00681 RTJ VCPROC PROCESS VARIABLES IF ANY 00682 RTJ DELETEP 00683 LOT IPRCTR,2 00684 INI 1,2 PUT DUMMY ON PROD ROLL TO 00685 ENA DUMMY SEPARATE LOGICAL OPERATOR FROM 00686 ADA 360000000 NOT OPERATOR. 00687 STA IPRGRL -1.2 00688 INT 1,2 00689 ENA NOT 00690 ADA PO53300000 00691 STA IPRGRL -1,2 00692 STI IPRCTP.2 00693. UJP AEA' 00694 DP14 LOA =333465133 .05.. 00695 LOO TT2 00696 AOJ.NE DP15 00697 PTA VCPROC PROCESS VARIABLES IF ANY 00698 PTA RELOPPOC PROCESS RELOP IF NEEDED 00699 LOI IPRCTP,2 PUT OR RELOP ON PROG ROLL. 00700 INI 1,2 00701 ENA OR 00702 ADA 4053300000 00703 STA DP13 TPRGPL.1.2 00704 STT IPRCTR,2 00705 ENA 1 TURN ON LOGICAL FLAG, OTTER FLAG 00706 STA LOGE 00707 STA OPERF 00708 ENA 0 00709 STA RELOPF TURN OFF RELOPF 00710 UJP AEA1 DP15 00711 LOA =033214524 ,AND. OPERATOR 00712 AOJ.NE DP16 00713 RTJ VCPROC PROCESS VARIABLES IF ANY 00714 PTA RELOPPOC PLOT NE 0 ON PROS ROLL IF RELOP 00715 RTJ DELETEP IS NOT PROCESSED 00716 LOI IPRCTR.2 00717 INT 1,2 PUT AND RELOP ON PROG ROLL. 00718 ENA AND 00719 ADA 4053300000 00720 UJP DP13 00721 DP16 LOA OPFLAG TEST IF FLAG HAS BEEN USED. IF SO 00722 AZJ,FO OPI7 SET BI TO PICK UP CHARACTER IN 00723 ENT -1.1 BUFFER 00724 ENA 0 00725 STA DPFLAG 00726 DP17 INI -3,1 00727 PTA PACK 00728 ENA.S -1 REAL CONSTANT 00729 STA CONSTF 00730 UJP AEA1 00731 DELETED UJP as DELETE SECOND PERIOD IN NOT, AND 00732 ISI 72,1 OPERATORS 00733 UJP DELETFP 00734 RTJ READTAPE 00735 INI 1,1 RETURNS WITH X1.6. SKIP 2ND PER. 00736 UJP DELETFP 00737 AE436 LOA EFLAG IF EFLAG IS ON DO NOT PROCESS 00738 47J.NE 4.2 PACKED MATERIAL 00739 RTJ VCPROC PROCESS PACKED VARIABLE IF ANY 00740 LACH ININ-1,1 00741 ENO 748 ( TEST. IF TRUE TEST ARRAYF, IF 00742 AOJ.NE AEA39 ON PUT ARRAY OPERATOR. (/ ON PROS 00743 ENA 1 ROLL 00744 STA OPERF TURN OPERATOR FLAG ON 00745 PAD PARENF 00746 LOA ARRAYF 00747 AZJ.EO AEA37 00740 LOI IPRCTP,2 00749 AEA 239 INT 1,2 00750 ENA DUMMY 00751 ADA =C577n0000 00752. STA IPRGRL -1,2 00753 INI. 1,2 00754 ENA CSLASN 00755 ADA =C30060000 00756 STA IPRGRL -1+2 00757 ST! IPRCTR.2 00758 FNA 1 ARRAYF =l. SUBSCRIPTED ARRAY 00759. STA ARRAVF 00760

UJP - AEA1 00761 ÁE437 L0A PARAMF jF PARAMF IS ON HAVE FORTRAN 00762 A7J,E0 AEA30 LIBRARY SUBROUTINE. NO COMMON 00763 LD4 IT3 EL.TS SC IT4 =0 00764 AZJ,E0 .4 00765 ENA 1 00766 RAn IT3 00767 IIJP AEA33 00768 ENA 0 00769 STA IT4 00770 UJP 4EÁ32 00771 AEA30 LDI IPRCTRr2 TEST FOR NAME SUBROUTINE_ 00772 LDA IPRGRL -1 2 00773 LPA aO700p00O0 00774 Log =C600D000n 00775 AOJ,EO AEA2S NAME PRECEEDING LEFT PAREN 00776 LDn =C700D0000 TEST FOR NUMBER PRECEEDING LEFT 00777 ADJ.NE AEA33 PAREN. ßO TO PUT ( ON PROD ROLL 00778. ENA- FRR11 ERROR MESSAGE. ILLEGAL REPETITION 00779 8 FACTOR 00780 WRTTE1.14j? TE 61 00781 IIJP FOATA21 00782 AEA2B LOA IPRGRL -1 +2 OFT NAME OF USERS SUBROUTINE 00783 LPA =000077777 00784 SWA AEA66 00785 Sw4 AEA68 00796 SWA .1 PICK UP PARAMETERS 00787 LOA 0 00788 LPA =C000r 7777 GET ID2 00789 ENO 20 TEST FOR SUBROUTINE DESIGNATOR 00790 A0J,(E AEA68 00791 ENA 20 BUMP ID2 TO SUER DESIGNATOR 00792. AEA66 RAn 0 00793 AEA68 FNA 0 OFT SUBROUTINE NAME AND STORE IN 00794 TNA 1 ITPIN 00795 Sw4 .1 SEARCH SUBROUTINE ROLL FOR NAME. 00796 LDAO 0 00797 STAG ITPIN 00798 LOA SUBCTR 00799 Sw4 AEA72 00800 ENT 1,2 00801 AEA70 LOA ITPIN 00802 LOO SURROI. -1.2 00803 INI 1,2 00804 A0J,E0 AEA71 00805. IIJP AEA34 00806 AEA71 LOA ITPIN.1 00807 LOO SUBROL -1,2 00808 A0J,E0 AEA73 00809 AEA34 INI 2,2 00810 AEA72 TV( ,2 TEST ON LENGTH CF SUBROUTINE ROLL 00811 UJP AEA70 00812 FNA ERRI3 ERROR MESSAGE. UNREFERENCED 00813 ENO 7 SUBPROGRAM 00814 WRITE 61 00815 ENA 0 00816 UJP AEA74 00817 AEA73 .INI 1.2 GET NUMBER O F COMMON ELEMENTS 00818

LOA SUBROI -1,2 AND STORE IN IT4.. 00819 AEA74 STA IT4 00820 ENA 1 00821 STA PARAMF SET UP PARAM FLAG 00822 LD4 =C60606060 BLANKS INTO ITPIN 00823 STA ITPIN 00824 STA ITPIN.1 00825 AEA32 LDI IPRCTR.2 PUT FUNCTIONAL OPERATOR ON FROG 00826 INI 1,2 ROLL 00827 ENA DUMMY 00828 ADA .C56700000 FUNCTIONAL OPERATOR 00829 STA IPRGRL -1.2 00830 ENA 1 0 0831 STA 173 00832 AEA33 INI 1,2 00833 ENA LPARFN LEFT PAREN ON PROS ROLL 00834 ADA =030000000 00835 STA IPRGRL -1,2 00836 ST! IPRCTP.2 00837 UJP AEA1 00939 AEA39 ENO 34B RIGHT PAREN TEST 00839 AOJ,NE AEA35 00840 LDA PARENF TEST FOR UNRALANCEU PARENTHESIS 00841 INA,S -1 00842 AZJ,LT AEA53 00843 STA PARENF DECREMENT PARENF 00944 LOA ARRAYF TEST FOR ARRAY. IF ARRAY TURN 00845 AIJ,EO AEA40 ARRAY FLAG OFF AND PUT /1 ON 00846 AZJ,GE AEA20 PROS ROLL. TEST FOR UNSUBSCPIPTED 00847 ENA 0 ARRAY. 00846 STA ARRAYF 00849 IIJP AEA40 00850 AEA20 ENA p 00851 STA ARRAYF TURN OFF ARRAY FLAG 00852 LDI IPRCTR.2 00853 TNT 1 +2 00854 AEA ENA SLASHC 00855 240 ADA =020060000 00856 STA IPRGRL -1,2 00857 STI IPRCTP,2 00858 11JP AEA1 00859 AEA40 LOA PARAMF IF OFF TEST PARAMF. IF ON AND IT3 00860 AZJ.EO AEA77 =0 COPY COMMON ELTS ONTO THE PR00 00861 FNA,S -1 ROLL. PUT RIGHT PAREN ON PROG 00862 PAD 173 ROLL. 00863 LDA 173 - 00864 AZj,NE AEA77 00865 LOA I14 00866 AZJ.EO AEA77.2 00867 SWA AEA76 00868 LOI IPRCTP.2 00869 FNI 1.3 00870 AEA75 INI 1,2 00871 ENA COMMA 00872 ADA =051260000 00873 STA IPRGR( -1,2 COMMA ON PROG ROLL 00874 INI 1,2 00875 LDA ICOMR1. -1 3 COMMON ROLL ELT ONTO PROG ROLL 00876 ADA =061000000 00877 STA IPRGRL -1,2 00878 AEA76 151 ,3 TEST ON NUMBER OF COMMON ELTS. 00879 UJP AEA75 00880 STi IPRCTP.2 00881 FNA 0 PARAMF =0 SINCE SUBPROGRAM CALL 00882 STA PARAMF HAS BEEN PROCESSED 00883 AEA77 LDI IPRCTP,2 00884 INI 1,2 00885 ENA RPARFN RIGHT PAREN ON PROD ROLL 00886 ADA =020060000 00887 STA IPRGRL -1,2 00888 STI IPRCTR.2 00889 UJP AEA1 00890 AEA35 LOA OPERF TEST FOR DOUBLE OPERATOR. IF ON 00891 A7J,E.0 4EÁ41 PUT DUMMY OPERAND ON PROG ROLL. 00892 LDI IPRCTP.2 00893 INI 1,2 00894 ENA DUMMY 00895 A0A =060000000 00896 STA IPRGRL -1,2 00897 STT IPRCTR,2 00898 FNA 0 TURN OFF OPERATOR FLAG 00899 STA OPERF 00900 AE441 ENO 138 TEST FOR REPLACEMENT OPERATOR. IF 00901 LACH ININ -1,1 00902 ADJ.NE AEA41 TRUE PUT REPSIGN ON PROG ROLL 00903 LDI IPRCTP.2 00904 INI 1,2 00905 ENA REPSGN 00906 ADA =041260000 00907 STA IPRGRL -1,2 00908 STI IPRCTP,2 00909 ÁE442 ENA 1 TURN OPERF ON AFTER PROCESSING 00910 STA OPERF AN OPERATOR 00911 U,1P AEA1 00912 AE443 ENO 208 TEST FOR PLUS. IF TRUE TEST FOR E 00913 AOJ,NE AEA47 TYPE CONSTANT. IE TRUE PACK. IF 00914 LOA. EFLAG NOT PUT PLUS ON PROS ROLL. 00915 AZJ,F.0 AEA45 00916 AEA44 ENA 0 00917 STA EFLAG 00918 UJP AEA11 00919 AEA45 LDI IPRCTR.2 00920 INI 1,2 00921 ENA PLUS 00922 AEA46 ADA =054460000 00923 STA IPRGRL -1.2 00924 STI IPRCTR.2 00925 UJP AEA42 00926 AEA47 ENO 408 TEST FOR MINUS. IF TRUE TEST FOR 00927 AOJ,NE AEA4R E TYPE CONSTANT. IF TRUE PACK. IF 00928 LOA EFLAG NOT PUT MINUS ON PROG ROLL. 00929 AZJ.NE AEA44 00930 LOT IPRCTR,2 00931 INI 1.2 00932

ENA MINUS - 00933 UJP AEA46 00934 AEA48 ENO 54B TEST FOR MOLT. IF TRUE TEST 00935 AOJ,NE AEA5O IF LAST TWO ELTS ARE MULT OP AND 00936 LDI IPRCTR.2 DUMMY. IF TRUE REPLACE WITH POWER 00937 LDA IPRGRL -1,2 OPERATOR. IF NOT PUT MULT OP ON 00938 LPA =000077777 PROD ROLL 00939 ENO DUMMY 00940 A0J,NE AEA49 00941 INI -1,2 00942 LDA IPRGRL -1,2 00943 LPA =077700000 00944 LDO =055560000 00945 A0J,NE AEA49 00946 ENA POWER 00947 ADA =056600000 ..00948 STA IPRGRL -1,2 00949 STI IPRCTP.2 00950 UJP AEA42 - 00951 AEA49 INI 1,2 00952 ENA TIMES 00953 ADA =055560000 00954 STA TPRGRL-1,2 00955 STT IPRCTP.2 00956 11JP AEA42 00957 AEA50 ENO 73B TEST FOR COMMA. IF TRUE TEST FOR 00958 A0J,NE AEAS1 EITHER A SUBROUTINE OR AN ARRAY. 00959 241

AEA LOA ARRAYF IF TRUE PUT COMMA ON PROG ROLL. 00960 A7J,NE AEA18 TF NOT GO TO THE ANALYZER SINCE 00961 LOA PARAMC DO LOOP SEGMENTS ARE BEING 00962 AZJ,NE AEA1A BEING PROCESSED. 00963 IiJP ANAL?. 00964 *EATS LOT TPRCTP.2 00965 INI 1,2 00966 FNA COMMA 00967 ADA =051200000 00968 STA TPRGRI -1.2 00969 STT IPRCTR,2 00970 LDA ARRAYF TEST FOR UNSUBSCRIPTED ARRAY. 00971 47J,GE AEA1 00972 FNA 0 00973 STA ARRAYF 00974 uJP AEA1 00975 AE451 FNO 618 TEST FOR DIV OP. IF TRUE PUT ON 00976 A0J,NE AEA52 PROD ROLL 00977 LOT IPRCTR,2. 00978 INI 1,2 00979 ENA DIV 00980 ADA .045560000 00981 STA IPRGRL -1,2 00982 STI IPRCTD,2 00983 UJR AEA42 00954

AE452 LOA IDONEF - 00985 AZJ,NE AEA53 00986 LACH ININ -j.1 ENO OF STATEMENT TEST 00987 ENO 534 NOT START OVER. 00959 AOJ.NE AEA1 00989 AEAS3 LDA LOGE IF LOG OP PROCESSED AND NO ...CARES 00990 A7J,F0 AEA54 REL OP PUT NE 0 ON PROG ROLL. 00991 LOA RELOPF 00992

AZJ,NE 4E454 - 00993 LOT TPRCTP.2 00994 INT 1,2 00995 FNA NE 00996 ADA m0533,10000 00997 STA IPRGPI.1,2 00998 INI 1,2 00999 ENA ZERO 01000 ADA .070000000 01001 STA IPRGRL -1,2 01002 STT IPRCTR.2 01003 4E454 LOI IPRCTR,2 PUT .. ON PROG ROLL 01004 INI 1,2 01005 ENA SCOLON 01006 ADA =O101D0000 01007 STA IPRGRL -1.2 01008 STT IPRCTR,2 01009 ANALY7ER 2 EJECT 01010 TITLE ANALY7ER 2 242 4NAL2 01011 ENI 1.3 PUT f.., ON POLCSCRATCH ROLLI, 01012 LOA .030000000 83 CONTROLS PDL. 82 CONTROLS P.R. 01013 STA ISCRCL -1.3 01014 TNT 1,3 01015 LOA .010100000 - 01016 STA ISCRCL-1,3 01017 LDI IPRCTR,2 01019 TNT 1,2 01019 LOA ISV INSERT START VALUE AT PROPER 01020 SWA AN2 PLACES 01021 SWA ANIO 01022 SWA AN20 ANI 01023 INI -1,2 DEC P.R. CTR 4N2 .2 01024 í5f. IPRCTR LT ISV 01025 UJP ANA 01026 LD4 IPRGRL -1.2 OPERATOR TEST AND LEFT PAREN TEST 01027 SHA 3 01029 LPA )000000007 ENO 01029 2 NOT AN OPERATOR OR A LEFT PAREN 01030 40J,E0 AN3 END 01031 3 TEST FOR LEFT PAREN 01032 AOJ,EO ANS 01033 ENO 6 01034 AOJ,GE AN3 NO 01035 UJP AN19 YES. IT IS AN OPERATOR 01036 AN3 INT 1.3 INC PDL CTR 01037 LDA IPRGRL -1,2 STORE ON PDL. PDL MOLDS 01039 LPA =077700000 CP,PN.PP,CTR VALUE 01039 AIA 2 01040 STA ISCR01. -1,3 01041 UJP ANI ANA 01042 LOA IPRGRL -1,2 SAVE CONTENTS OF 01043 STA IT2 IPRGRL -1,2. RESET 01044 LOA .010100000 TO 101 (SCOLONI 01045 STA IPRGRL -1,2 TC SERVE AS END OF STATEMENT. IT2 01046 UJP AN6 IPRGRL -1,2 01047 ANS LDA ISCROI_ -2,3 LOAD PDL hl -1) RIGHT PAREN TEST 01048 SHA 3 01049 LPA =000000007 01050 ENO 2 01051 AOJ,NE AN6 01052 LOA ISCPOL -1,3 PDL(J- 1).POL(J) 01053 STA ISCRCL-2,3 01054 INI -1,3 JJ -1, DECREMENT POL CTR 01055 UJP ANI 01056 ANA LOA ISCRCL -2r3 IS PDL (J -1) ... 01057 LPA 077700000 01058 LOO 041200000 01059 AOJ,NE AN12 NOT A REPSIGN 01060 LOA ISCRCL-1 .3 TEST MODES OF VARIABLES 01061 LPA äC07000000 TO COMPENSATE FOR THE DIFFERENT 01062 LOO 002000000 REAL /INTEGER CONVERSIONS 01063 AOJ,NE AN7 01064 LDA ISCRO)r3,3 PDLtJ-2) 01065 LPA )007000000 01066 LOO =CO2000000 01067 AOJ,EO ANIO 0106$ STI 773,2 REAL VARIABLE. PUT -0.5., ON 01069 LDI IPRCTR.2 PROS ROLL SO PROPER REAL /INTEGER 01070 LDA IPRGRL,. -1.2 CONVERSION WILL OCCUR 01071 LPA =000077777 TEST IF A SCOLON ENDS THE 01072 ENO SCOLON STATEMENT. 01073 AOJ,NE AN21 01074 ENS MINUS 01075 STA IPRGRL, -1,2 01076 INI 1,2 01077 ENA ONERALE 01078 STA IPRGRL -1.2 01079 INI 1,2 01080 ENS SCOLON 01091 STA IPRGRL -1,2 010R2 STT IPRCTR.2 01083 LOT I73,2 RESTORE P.R. CTR 01084 UJP ANlD 01085 AN21 INI 1.2 IF NOT PUT -0.5 ON THE PROS ROLL 01086 ENA MINUS 01097 STA IPRGRL -1.2 01089 INI 1,2 01089 ENS ONERALE 01090 STA IPRGRL -1.2 01091 ST! IPRCTR,2 01092 LOI IT3,2 RESTORE THE PROG ROLL CTR 01093 UJP AN1O AN7 01094 LOO =003000000 01095 AOJ,NE AN12 01096 LOA ISCRCL -3 3 PDL(J-2) 01097 LPA =O010000ó0 01099 LOO =003000000 01099 AOJ.EQ AN1O 01100 STI I13,2 GOTO LAST ENTRY AND BUMP P.R. 01101 LDI IPRCTR.2 UNTIL REPSGN I5 FOUND 01102 ENS REPSGN INSERT IF IN SPACE CREATED 01103 ADA äO41200000 01104 SHAG 24 01105 ANA LOA IPRGRL -Ir2 AT END OF P.R. ADD THEN TRUE ELSE 01106 AOJ,EO AN9 FALSE., TO P.R. 01107 INI 1,2 01108 STA IPRGRL -1,2 01109 INT -2,2 01110 UJP ANS 01111 ANS ENA IF PUT IF IN SPACE CREATED 01112 STA IPRGRI..2 01113 LDI IPRCTR,2 01114 243

ANALV7ER 2 LDA RELOPF IF NO RELOP PRESENT PUT NE AZJ.NE 0 ON 01115 AN13 PROG ROLL 01116 INI 1,2 01117 ENA NE 01118 STA IPRGRI -1,2 01119 INI 1.2 01120 FNA ZERO 01121 STA IPRGRL -1,2 AN11 01122 INI 1,2 01123 ENA THEN 01124 STA IPRGRL -1.2 01125 INT 1,2 01126 ENA TRUE 01127 STA IPRGRL -1,2 01128 INI 1,2 01129 ENA ELSE 01130 STA IPRGRL -1,2 01131 INI 1,2 01132 ENA FALSE 01133 STA IPRGRI -1 .2 - 01134 INI 1,2 01135 FNA SCOLON 01136 STA IPRGRI -1,2 01137 STI IPRCTp.2 01138 LOI IT3,2 01139 ANIO ISO 0.,2 IS 82 LT ISV 01140 UJP ÁN11 IF SO RESTORE P.R.(2). RESTORE PR 01141 UJP AN1 CTR. GO TO FETA. IF NOT GO AN1 AN11 TO 01142 LDA IT? 01143 STA TPRGRL-1,2 01144 11JP FAEA IF DONE GO TO FAEA TO RETURN 01145 AN12 LDA 1SCROL -3.3 IS MODE PDL(J -21 REAL 01146 LPA =007000000 01147 LOO =001000000 01148 40J,EU ANIS 01149 LDA ISCROI -1,3 IS MODE PDL(J) INTEGER 01150 LPA =007000000 01151 LOO .002000000 01152 AOJ,E0 AN16 01153 LOA ISCROL -2,3 POL(J- 1)=ARTTH OP 01154 LPA .070000000 01155 LOO =040000000 01156 AOJ.EO AN17 ARITH OPERATOR 01157 LOO .050000000 01158 AOJ,NE AN15 AN17 01159 LOA ISCROL -3,3 CHANGE MODE Of PDL(J -2l TOPER 01160 LPA =070777777 01161 ADA .001000000 01162 STA ISCROL -3,3 AN15 01163 INT -2,3 J.J -2 01164 UJP ANiS 01165 AN16 LOA ISCROL -2,3 PDL(J- 1).OIV OP 01166 LPA 8070000000 01167 LOO .040000000 01168 AOJ,NE ÁN15 01169 LDA ISCROL -2,3 REPLACE DIV OP WITH INT DTV OP 01170 STI TT3,2 01171 TAT 2 01172 ENA INTDIV 01173 STA IPRGRL -1.2 01174 LOI 113,2 01175 UJP AN15 01176 ANIS LOA . IPRGRL -1.2 TEST FOR LEFT PAREN 01177 LOO .030000000 LPA 01175 .070000000 01179 A0J,E0 AN5 01180 ÁN19 -2 LOA ISCROL 3 IS PN(IPRGRL) LT PPIPOL(J -1)) 01181 LPA .007000000 01182 SHAO -42 PUT PN INTO THE G REGISTER 01183 LOA IPRGRL -1,2 01184 LPA =000700000 01185 SHA -15 01186 AOJ,LT AN6 01187 ÁN20 ISO 0,2 IPRCTR(82) LT ISV 01188 UJP AN11 01189 LOA. IPRGRL -1.2 TEST FOR . IF FALSE PUT 01190 LPA 0000077777 OPERATOR ON PDL. GO TO AN1 01191 ENO SCOLON 01192 AOJ.EO AN1 01193 UJP AN3 01194 244 AEA EJECT 01195 TITLE AEA 01196 TLLR ENA ERR4 REQUESTING ILLEGAL SUBROUTINE 01197 F Nfi 6 01198 WRITE 61 01199 LOA ISV REPLACE IPRCTR WITH STORED VALUE 01200 TNA,S -1 TO WIPE OUT ADDITION TO PROD ROLL 01201 STA IPRCTR 01202 54OC ENO 538 TEST FOR END OF STATEMENT 01203 SADC1 LACH ININ -1 +1 01204 ADJ,ED FETA GO TO EXP TYPE ANAL 01205 IST 72,1 01206 UJP SADCI 01207 RTJ REAOTAPE READ NEXT RECORD 01208 19F 6,1 IF CONI CARD KEEP TESTING. TF NOT 01209 UJP FETA AC TO EXP TYPE ANAL 01210 UJP SAOCI 01211 44 VCPROC UJP 01212 LDA CONSTF CONSTANT TEST. IF TRUE DETERMINE 01213 AZJ.FQ VCP5 LENGTH. IF ßT 8 DIGITS SEARCH 01214 RTJ CONPROC CHECK FOR .000 CR ODA. 01215 LDA ID ILCNRL. IF NOT SEARCH ISCNRL. 01216 SHA -12 PUT CONSTANT ON PROS ROLL. TURN 01217 ENO 9 OFF CONSTANT FLAG, 01217 ADJ,GE vCP1 01219 RTJ SEARCH 01220 ISCNRL 01221 TSCCTR 01272 3 01223 2 01224 UJP VCP2 01225 vCPI RTJ SEARCH 01276 ISCNRL 01227 ILCCTR 01228 6 01229 5 01230 VCP2 LOI IRRUPT, TEST CONSTANT FLAG. IF NEGATIVE - 01231 INT 1 +2 HAVE REAL CONST. IF 'NOT INTEGER 01232 LOA CONSTF CONSTANT. STORE CONSTANT AND 01233 42J,LT VCP3 APPROPRIATE MODE CODES ON PROS 01234 LOA ITPADD ROLL. REAL CONSTANT41, INTEGER 01235 ADA aC72000000 CONSTANT =2 01236 11JP VCP4 01237 VCP3 LOA ITPADn 01237 404 =071000000 VCP4 01239 STA iPRGPI -1 +2 01240 STI - IPRf.TR.2 01241 ENA 0 01247. STA CONSTF 01243 VCP5 LOA IFLETF TEST IF VAR HAS BEEN PROCESSED. 01244 AZJ.EO VCPROC IF NOT TURN LETTER FLAG OFF. 01245 ENA. 0 SEARCH FOR SUBROUTINE IN FORT LIB 01246 STA IFLETF 01247 STI 111.1 01248 ENT 102,1 LENGTH OF FRWT3 01249 VCP7 FNO,S -0 01250 LOA ITPIN 01251 MFO FRWT3.2 SEARCH FRWT3 FOR FORTLIB PROGRAM 01252 UJP VCP9 NOT ON TABLE 01253 TNT 1.1 HIT 01254 LOA FRWT3,1 01255 LAO ITPIN1 01256 40J.E0 VCPB 01257 INT -1,1 MEG) INSTR DECK XI BEFORE TEST 01257 UJP VCP7 01259. VCPB TIA ] 01260 SHA -1 01261 TAT 2 01262 LOA aC606n6060 BLANKS INTO ITPIN, ITPIN1 01263 STA ITPIN 01264 STA ITPIN.] 01265 LOT 171 +1 RESTORE XI 01266 UJP FRWT3J.2 01267 VCP9 LOI ITI,1 RESTORE Xl. ROUTINES RETURN TO 01268 RTJ SEARCH2 VCP10. MISS, SEARCH VARRAY ROLL 01269 LOA ITPADD 01270 LOT IPRCTR,2 01271 INT 1,2 01272 SWA a..1 01273 LOA er 01274 LPA :000000077 PICK UP ID2. IF NOT A VARIABLE OR 01275 ASA 31 A SUBROUTINE STORE ON FROG ROLL 01276 ASA 0 WITH 0 TYPE. TEST FOR TYPE. REAL 01277 UJP VCP1O =1, INTEGER42, LOGICAL =3. STORE 01278 ASA 27 ON FROG ROLL. IF CHAR VARIARLE 01279 ASA 23 ISSUE ERROR MESSAGE AND DELETE. 01280 UJP ++.2 01281 UJP VCPIO 01282 LPA s000000003 01283 AZJ,EO VCPII 01284 ENO ] 01285 AQ.),FU VCP12 01286 ENO 2 01287 AOJ.EO VCP13 01288 ENA ERR1 01289 ENO 6 01290 WRITE 61 01291 UJP AEASI 01292 VCP10 LOA ITPAOO 01293 ADA =,,^,60000000 01294 IIJP VCP14 01295 VCP11 LOA ITPADD 01796 ADA =063000000 01297 UJP VCP14 01298 VCPI2 LOA ITPADn 01299 245

AEA ADA = 062000000 01300 UJP Malt, 01301 VCP13 LOA ITPADD 01302 40A 063000000 01303 VCP14 STA IPRGRI. -1.2 01304 STT IPPCTP.2 01305 LDA ITPADD 01306 SWA 0.1 01307 LOA 44 IO IN A 01308 LDA =C00M7777 In2 01309 APTEST IVCP14.VCPPOCI ARRAY TEST 01310 VCP15 ENA,S -1 01311 STA ARRAYF 01312 UJP VCPROC 01313 CONPROC UJP 44 01314 STT I11,1 RESTORE BI 01315 LOA ID 01316 SHA -12 01317 TAT 1 01318 LACH ITPIN-1,1 01319 Ere) 33B TEST FOR DECIMAL POINT 01320 AOJ.NF CNP1 01321 TTA 1 01322 TAT 2 01323 ENA 0 01324 SACH ITPIN.2 PUT ZERO AFTER THE DECIMAL POINT 01325 UJP CNP3 01326 CNP1 ENI 0.1 - 01327 LACH ITPIN.1 TEST FOR DECIMAL POINT AS THE 1ST 01328 40J,NF CNP4 CHARACTER 01329 LOA ID 01330 SHA -12 01331 TAT 1 01332 TAT 2 01333 CNP2 LACH ITPIN -1.1 BUMPS CONSTANT UP ONE 01334 SACH ITPIN.2 01335 TNT -1,1 01336 TNT -1.2 01337 ISF 0,2 01338 UJP CNP2 01339 ENA 0 01340 SACH ITPIN.2 PUT o IN THE 1ST CHARACTER 01341 CNP3 ENA 10000P 01342 FAO ID 01343 CNP4 LDI IT1,1 RESTORE 81 01344 UJP CONPROC 01345 RELOPROC UJP 44 TEST RFLOPF. IF ZERO PUT NE 0 01346 LDA RELOPF ON THE FROG ROLL. 01347 AZJ,NE. RELOPROC 01348 LDI IPRCTR.2 01349 TNT 1,2 01350 ENA NE 01351 ADA 20533n0000 01352 STA IPRGRL -1,2 01353 INT 1,2 01354 ENA ZERO 01355 ADA =0700(]0000 01356 STA IPRGRL -1,2 01357 STT IPRCTR,2 01358 UJP RELOPROC 01359 SUBROUTINE CALL 246 EJFCT 01360 TITLE BARROUTINE CALL FCALL 01361 INI -1.1 DECREMENT BI 01362 ENA 0 CONSTFU0 01363 STA CONSTí 01364 ENA 24 01365 STA IO IO =24, SUBPROGRAM DESIGNATOR 01366 ENA 1 01367 STA IFLETF /ENVOI,=1 SC VCPROC WILL PROCESS 01368

ENA.S -1 - SUBPROGRAM NAME 01369 STA IHM IHM. -1 FLAG IF SEARCH2 IS USED.IF 01.370 FCALLI INI 1.1 NOT FORTRAN LIBRARY IS CALLED 01371 ISO 73,1 01372 UJP FCALL? 01373 RTJ READTAPE READ NEXT RECORD 01374 I5E 6,1 01375 UJP FCALL? 01376 UJP FCALLI 01377 FCALL2 LACH ININ -I,1 - 01378 ENO 12B NUMBER TEST 01379 AOJ,LT FCALLI YES 01390 LFTEST (FOAL 13.FCALL41 01381 FCALLI RTJ PACK 01382 1 FCALLI 01383 FCALL4 ENO 748 LEFT PAREN TEST 01384 A0J,NE FCALL6 01385 RTJ VCPROC PROCESS SUBPROGRAM NAME 01386 LOA IHM 01387 4ZJ.LT FCALLS 01388 57.I SURPNAME 01389 FCALLS RTJ FATA PROCESS FORMAL PARAMETER LIST 01390 UJP FETA 01391 FCALL6 ENO 535 ENO OF STATEMENT TEST 01392 A0J,NE FCALL] 01393 FCALLI RTJ VCPROr 01394 LOA IHM 01395 42J,LT .2 01396 RTJ SURPNAME 01397 LOA TTPA00 01398 INA I 01399 SWA FCALLS 01400 FCALLS LIAO e GET SUBPROGRAM NAME 01401 5740 ITPIN 01402 LOA BURGTB 01403 SWA FCALLI2 01404 ENI 1.2 01405 FCALLS LOA ITPIN 01406 LOO SUER OL -l.2 SEARCH SUBROL FOR SUBPROGRAM NAME 01407 INI 1,2 01408 AOJ,EO FCALLIO 01409 UJP FCALLII 01410 FCALLIO LOA ITPIN1 - 01411 um SUBROH -1,2 01412 40J,E0 FCALLII 01413 FCALLII INI 2,2 01414 FCALLI2 ISO r2 TEST ON LENGTH OF SUBROUTINE ROLL 01415 UJP FCALLS 01416 FNA ERR13 ERROR MESSAGE. UNREFERENCEO 01417 ENO 7 SUBPROGRAM 01418 WRITE 61 01419 UJP FCALLI? FCXLL13 01420 INI 1.2 01421 LOA SUBROT -1,2 01422 FCALL14 47J.E0 FCALLII 01423 STA 1T4 01424 SWA FCALL16 01425 LIT !META, 01426 INI 1,2 01427 ENA LPAREN 01428 STA IPRGRL -1,2 LEFT PAREN ON PROD ROLL 01429 ENI 1,3 01430 FCALL15 INI 1,2 01431 LOA ICOMRL -1,3 01432 STA IPRGRL -1.2 COMMON ROLL ELTS ON PRIG ROIL 01433 INI 1,2 01434 ENA COMMA 01435 STA IPPGRL-1,2 01436 FCALL16 IST °.3 01437 UJP FCALLI5 01438 INI 1.2 RIGHT PAREN ON PROG ROLL 01439 ENA RFAREN 01440 STA IPRGRI -Ir2 01441 STI IPRCTP,2 01442 FCALLI7 LIT IPRCTR.2 01443 INI 1,2 01444 ENA SCOLON SCOLON ON PRIG ROLL 01445 STA IPRGRL -1 ,2 01446 STI IPRCTP,2 01447 LOA =060606060 01448 STA ITPIN BLANKS INTO ITPIN,ITPIN.1 01449 STA ITPIN.1 01450 UJP FETA GO TO EXP. TYPE ANAL- 01451 UJP SURPNAME PUT CORRECT DESIGNATOR ONTO 01452 LDI ITPADr .2 /ARRAY ROLL 01453 LOA 0.2 01454 LPA =000007777 01455 ENO B 01456 AOJ.GE .5 01457 LOA 0.2 01458 LPA 077770000 01459 INA 23 01460 STA 0.2 01461 LDA 0,2 01462 LPA =077770000 01463 INA 31 01464 247 SURROUTINE CALL STA 0,2 UJP SuOPNAME 01465 FARS ENA ABS 01466 UJP FABSI 01467 FI4R5 ENA ABS 01468

- . UJP FIA8S1 01469 UJP FARS] 01470 FALOG ENA LN 01471 UJP FABS1 01472 FATAN ENA ARCTAN 01473 UJP FARS! 01474 EGOS ENA COS 01475 UJP FABS1 01476 FEXP FNA EXP 01477 uJP FABS1 01478 FENTIEP ENA ENTIEa 01479 UJP FIAB51 01480 FSIN ENA SIN 01481 UJP FA9SI 01482 FSORT ENA SORT 01483 FA9S1 ADA 01484 061000000 REAL SUBROUTINE UJP FARS? 01485 FIAR51 ADA 062000000 01486 INTEGER SUBROUTINE 01487 FA952 LOI IPRCTR,2 INI 1,2 01489 STA 01489 IPRGR1-1,2 01490 INI 1,2 01491 ENA DUMMY PUT FUNCTION DESIGNATOR ON PROG 01492 AOA 056700000 ROLL STA TPRGRL-1.2 01493 SIT 01494 IPRCTR.2 01495 0 ENA 01496 STA ID LDA 01497 0606n6060 BLANKS INTO ITPIN, STA ITPIN1 01499 ITPIN 01499. STA ITPIN.1 uJP VCPROC 01500 OPFLAG 855 01501 1 01502 IT1 RS5 1 01503 11'2 RS5 1 113 RSS 01504 t 01505 IT4 955 1 ITS R55 01506 1 01507 01508 01509 e FORTRAN RESERVEn WORD e a JUMP TABLES 01510 eeeeeeeeaeeeeeeeeeeeeee 01511 FRWT3J IIJP 01512 ILLR 01513 UJP ILLR UJP ILLR 01514 UJP ILLS 01515 UJP ILLR 01516 UJP ILLR 01517 01518 UJP ILLR UJP ILLR 01519 UJP ILLR 01520 UJP ILLR 01521 UJP ILLR 01522 I1JP ILLR 01523 UJP FARS - 01524 UJP FARS 01525 UJP FIA83 01526 UJP ILLR 01527 UJP FALOG 01528 UJP FALOG 01529 UJP FATAN 01530 UJP FATAN 01531 UJP FCOS 01532 UJP FCOS 01533 UJP FEXP 01534 UJP FEXP 01535 UJP ILLR 01536 UJP ILLR 01537 UJP FENTTFR 01538 UJP ILLR 01539 UJP FENTIER 01540 UJP ILLR 01541 01542 UJP ILLR UJP 01543 ILLR 01544 I1JP ILLR UJP FSIN 01545 UJP FSIN 01546 01547 UJP FSORT UJP FSORT 01548 UJP ILLR 01549 UJP ILLR 01550 UJP ILLR 01551 UJP ILLR 01552 UJP ILLR 01553 UJP ILLR 01554 UJP ILLR 01555 01556 UJP ILLR 01557 UJP ILLR I1JP ILLR 01558 UJP ILLR 01559 UJP ILLR 01560 UJP ILLR 01561 UJP ILLR 01562 FRWT4J ENA GE 01563 ENA GT 01564 01565 ENA E0UAL ENA NE 01566 ENA 01567 LE 01568 ENA LESS 01569 248

SUBROUTINE CALL FN0 01570 END

IDENT END 00001 ARTEST MACRO 249 IARRAY,NARRAVI 00002 ASG 24R 00003 ASG 48 00004 UJP NARRAI 00005 ASG 146 ASR 00006 10B 00007 UJP ARRAY 00008 UJP NARRAI 00009 ENDM 00010 COMMON 00011 SURRCL R55 60 SUBROUTINE ROLL MAX 20 00012 SURCTR RSS 1 SIJBROUTINF ROLL CTR 00013 PUNCH RS5 1 ALTERNATE OUTPUT LUN 00014 ARRAYF RSS 1 ARRAY FLAG 00015 RLCCKCTR RSS 1 RLOCK CTR 00016 CHANNEL RSS 1 CHANNEL NUMRER 00017 CONSTI R55 1 CONSTANT FLAG 00018 DATAF BSS 1 DATA FLAG 00019 DYNARRAY RSS 1 DYNAMIC ARRAY FLAG 00020 EFL4G R55 1 E TYPE CONSTANT FLAG 00021 IARCTR RSS 1 ARRAY /SWITCH ROLL CTR 00022 TARIND RSS 1 ARRAY POINTER 00023 1COCTR RSS 1 COMMON ROLL CTR 00024 ID RSS 1 VARIABLE ATTRIBUTE/ CHARACTER CTR 00025 R55 IDONEE 1 DONE WITH STATEMENT FLAG 00026 ISCCTR RSS 1 DC ROLL CTR IOSP RSS 00027 1 DECLARATIVE STATEMENTS FINISHED 00028 TEOCTR R55 1 EQUIVALENCE ROLL CTR 00029 IEOF RSS 1 EQUIVALENCE FLAG 00030 IFLETF R55 1 FIRST LETTER FLAG IHM 00031 RSS 1 HIT OR INSERTION FLAG 00032 ILCCTR R55 1 LONG CONSTANT ROLL CTR 00033 RSS 2 INPUT OVERFLOW AREA ININ 00034 RS5 20 INPUT AREA INPUT RSS 00035 1 READ /WRITE FLAG 00036 IPRCTR RSS 1 PROGRAM ROLL CTR 00037 ISCCTR RSS 1 SHORT CONSTANT ROLL CTR 00038 SCRCTR RSS 1 1ST SCRATCH ROLL CTR 00039 SCRCTR? RSS 1 2ND SCRATCH ROLL CTR 00040. ISV RSS 1 START VALUE 00041 TSWCTR E00 IARCTR ARRAY/ SWITCH ROLL CTR 00042 178ÁD0 RSS 1 TEMPORARY ADDRESS STORAGE TTPIN 00043 BSS 5 TEMPORARY STORAGE 00044 IVACTR BSS 1 VARRAY ROLL CTR 00045 LOAF RSS 1 LOGICAL OPERATOR FLAG 00046 MAINPROG RSS 1 MAIN PROGRAM /SUBROUTINE FLAG OPF.RF 00047 RSS 1 OPERATOR FLAG 00048 RSS 1 OUTPUT OVERFLOW AREA OUTIN 00049 RSS 24 OUTPUT AREA PARAMF 00050 85S 1 PARAMETER FLAG PAPFNF RSS 00051 1 PARENTHESIS FLAG 00052 RELOPF R55 1 RELATIONAL OPERATOR FLAG 00053 ISCNRL RSS 1200 SHORT CONSTANT ROLL MAX IVAPOL 400 00054 RSS 2000 VARIABLE ROLL MAX 500 00055 ILCNRL RSS 600 LONG CONSTANT ROLL MAX IDORCL RS5 100 00056 100 DO LOOP ROLL MAX 32 00057 ISCROL R55 R00 1ST SCRATCH ROLL 00058 SCRL2 RSS 1 2ND SCRATCH ROLL 00059 IPRGRL RSS 1 PROGRAM ROLL 00060 TCOMRL E00 ILCNRL COMMON ROLL. MAX 600 00061 IEOROL FO11 IDOROL EQUIVALENCE ROLL MAX 100 00062 DATA 00063 00064 00065 ALGOL RESERVED WORD TABLE 00066 00067 ** * * *, *C 00068 POWER OCT **t*70000 00069 RCD 2, *POWER* - 00070 INTDIV OCT 50000 00071 8CD 2, *DIv* 00072 OT OCT 110000 00073 BCD 3, *GREATER* 00074 GE CCT 120000 00075 BCD 3, *NOT LESS* 00076 EQUAL 10000 OCT 00077 RCD 1,. NE 00078 OCT - 130000 00079 BCD 3, *NOT EQUAL* 00080 LE OCT 150000 00081 BCD 4, *NOT GREATER* 00082 LESS OCT 60000 00083 BCD 2, *LESS* AND - 00084 OCT 50000 00085 BCD 2, *AND* 00086 CR OCT 40000 00087 BCD 1, *CR* 00088 NOT OCT 50000 00089 RCD 2, *NOT* 00090 PERIOD OCT 10000 00091 BCD 1t. 00092 COMMA OCT 10000 00093 BCD 1 , 00094 COLON OCT 35000 00095 CCT 60126060 00096 SEMICOLN OCT 10000 00097 CCT 37606060 00098 LPAREN OCT 10000 00099 8CD 1,( 00100 RPAREN 10000 OCT 00101 ROD 1,) 00102 REPSGN CCT 30000 00103 OCT 60766060 00104 2 50 END CSLASH OCT 20000 LEFT BRACKET 00105 CCT 60176060 SLASHC OCT 00106 20000 RIGHT BRACKET 00107 OCT 72606060 TRUE 00108 CCT 60000 00109 BCD 2, *TR0E* 00110 FALSE CCT 70000 00111 RCD 2,3FA1.SE3 ROTO 00112 OCT 70000 00113 BCD 21$00 TO* 00114 IF OCT 40000 00115 BCD 1,3IF* 00116 THEN OCT 60000 00117 RCD 2,3THFN* 00118 ELSE OCT 60000 RCO 00119 2, *ELSE* 00120 FOR OCT 50000 00121 BCD 2, *FOR* 00 00122 OCT 40000 00123 BCD 1,*0O* STEP 00124 OCT 60000 00125 RCD 2,*STFP* UNTIL 00126 OCT 70000 00127 BCD 2. *UNTIL* BEGIN 00128 OCT 70000 00129 9CD 20BEAIN* 00130 EN0 OCT 50000 BCn 00131 2r3END* 00132 BOOLEAN OCT 11000n 00133 9CD 3,38OOLEAN* 00134 INTEGER OCT 11000n 00135 9CD 3 ,*INTEGER* REAL 00136 OCT 60000 00137 BCD 2 *REnL* 00138 ARRAY OCT 70000 00139 9CD 2 *ARRAN! 00140 SWITCH OCT 100000 00141 RCD 24SWTTCH3 PROC 00142 OCT 130000 00143 RCD 3, *PROCEDURE* PLUS 00144 OCT 10000 00145 RCD 1,4 MINUS 00146 OCT 10000 00147 BCn 1.- TIMES 00148 OCT 10000 00149 BCD 114 00150 SLASH OCT 10000 00151 BCD 1,/ ARCT4N 00152 OCT 60000 00153 RCD 2.ARCTAN 00154 LN OCT 20000 00155 BCD 1,LN ENTIER 00156 OCT 60000 00157 BCD 2,ENTTER 00158 INREAL OCT 60000 RCD 00159 2,INRFAL 00160 OUTRFAL OCT 70000 00161 RCO 2.OUTPEAL 00162 SIN OCT 30000 00163 RCD 1,SIN 00164 COS OCT 30000 00165 BCD 1.COS 00166 ARS OCT 30000 00167 BCD 1,ABS 00168 EXP OCT 30000 00169 BCD 1,EXP SORT 00170 OCT 40000 00171 BCD 1,50RT SIGN 00172 OCT 40000 00173 BCD 1,SLGN 00174 ZERO OCT 10000 00175. BCD 1,0 00176 ONEHALF OCT 30000 00177 BCD 1,0.5 00178 ONE OCT 10000 00179 BCD 1.1 SIXTY 00180 OCT 20000 00181 BCD 1,60 2C000 00182 SIXONE OCT 00183 BCD 1,61 00184 SIXTWO OCT 20000 00185 9CD 1.62 00186 RACKSPCE OCT 11000n 00187 BCD 3,84CKSPACE 00188 ENDFILE OCT 70000 00189 BCD 2,ENOFILE 00190 REWIND OCT 60000 00191 RCD ?A/REWIND 00192 A e4ee4e44444444444 .seeeeseeeeeseee 00193 e 4 4 00194 e e TRANSLATOR ERROR MESSAGES a 8 a 00195 C 00196 a * e ****ee**e**i*eeseeeeeese*eeeese 00197 ERR1 BCD 6,0 ILLEGAL VARIABLE ERR2 00198 RCD 7,0 ILLEGAL SUPSCRIPTING FRR3 RCD 00199 9.0 UNCORRECTABLE EQUIVALENCE ERROR 00200 F RR4 RCD 6,0 ILLEGAL SUBROUTINE 00201 ERRS BCD 6,0 UNSURSCRIPTEO ARRAY 00202 ERR6 BCD 6,0 DELETED STATEMENT ERR7 00203 BCD 6,0 ILLEGAL CONSTANT 00204 EBRB BCD 6,0 EQUIVALENCE ERSIO ERROR 00205 RCO 5,0 TOO MANY ENDS 00206 ERR11 RCD 8,0 ILLEGAL REPETITION FACTOR 00207 ERR12 BSS 5 00208 ERR13 RSS 7 00209 END 0- 0 00210 464 e e 00211 FORTRAN RESERVED WORD TABLE e 251 e e 00212 e 00213 FRWT3 RCD 00214 2,SLITE 00215 RCD 2 +SLITET RCD - 00216 2,SSWTCH 00217 RCD 2,0VCNK 00218 RCD 2,EXFLT 00219 RCD 2,0VERFL 00220 RCD 2,EOFCK - 00221 BCD 2,IOCHK 00222 RCM 2,UNTTST 00223 ACM 2,OVFRLAY 00224 RCD 2,SEr,MENT 00225 RCD 2rFORTDUMP 00226 RCD 2,ABS 00227 RCD 2,ARSF 00228 RCD 2,IARSF 00229 BCD 2,XARSF 00230 RCn 2,ALOG 00231 RCD 2,ALOGF 00232 RCO 2,ATAN 00233 RCD 2,ATANF 00234 RCM 2,C05 00235 RCn 2,COSF 00236 RCM 2,EXP 00237 RCM 2,EXPF 00238 RCD 2,FLOAT 00239 RCD 2,FLOATF 00240 RCD 2,IFIX 00241 8Cn 2,XFIXF 00242 RCD 2,FIXF ACM 00243 2,51ßN 00244 RCD 2,SIGNF 00245 RCD 2,XSIGNF 00246 RCD 2.ISTGN 00247 RCD 2,SIN 00248 RCD 2.SINF 00249 PCn 2,SORT 00250 RCD 2,SORTF 00251 RCn 2+SLTTEF 00252 RCD 2,SLTTETF 00253 RCn 2.SSWTCHF 00254 RCD 2DVCHKF 00255 RCD 2+EXFLTF 00256 ACM 2,OVFRFLF 00257 BCD 2,E0FCKF RCD 00258 2,IOCHKF 00259 RCD 2.UNITSTF RCD 00260 2,LENGHTF 00261 RCn 2,NOT 00262 BCD ?,ANO 00263 RCD 2,O1/ BCD 00264 2,EOR 00265 FRwT4 RCD 1,.0F. BCn 00266 1r.0T. 00267 RCD 1+.EO. 00268 RCn 1,.NE. RCn 00269 1,.LF. 00270 RCM 1,.LT. 00271 PRG 00272 ENTRY FEND, nECSRCH, DECSRCHP,DECSRCHD,NEWLINEtDUMMY 00273 ENTRY DELST. FFINIS,FENDR,FEND14,STOP,SCOLON 00274 EXT READT4PE,FETA,S40C,HIGHMEM 00275 FEND INI -1,1 DECREMENT BI 00276 FENDI INI 1,1 00277 ISG 73,1 00278 UJP FEND? 00279 RTJ REAOT4PE 00280 ISF 6,1 TEST FOR CONI CARD 00281 UJP FENDS 00282 UJP FENDI 00283 FEND2 LACH ININ.1,1 00284 ASE 538 TEST FOR END OF STATEMENT 00285 UJP FENDI 00286 FEND3 LDA BLOCKCTR AZJ,LT 00287 FEND13 00288 A7J.E0 FEND11 00289 SWA FEND12 00290 ENI 1.3 00291 LDT IPRCTR,2 00292 FENDO INI 1,2 00293 ENA END PUT END ., ON PROG ROLL 00294 STA IPRGRL -1.2 00295 INT 1,2 00296 ENA SCOLON 00297 STA IPRGRL -1,2 FEND12 00,3 00298 IST 00299 UJP FENDO 00300 STI IPRCTP +2 FEND14 00301 STI ITI.1 SAVE B1 00302 ENA 0 00303 STA SCRCTR 00304 ENI 0,1 BLANKS INTO THE OUTPUT AREA 00305 LDA =060606060 00306 FEN04 STA OUTIN,1 00307 ISI 17,1 00308 UJP FEND4 00309 LDA IPRCTP TEST ON LENGTH OF PROG ROLL 00310 SWA FENDR 00311 ENA 0 STA 00312 LINECT LINECT =0 INITIALLY 00313 ENI 1 +3 00314 252

END FENDS LOA IPRGRI. -1,3 PICK UP CONTENTS AT 'mop IN PROG 00315 SWA .1 as 00316 LDA - 00317 SHA -12 ROLL AND SHIFT OFF DESIGNATDR 00318 SWA FEND? 00319 ENO 14079 TEST FOR PROCESSING ROUTINE IF 00320 AOJ,NE FENONO TRUE, JUMP TO PROCESSING ROUTINE 00321 LDA IPRGRI -1,3 00322 SWA 4.1 00323 UJP 0s 00324 FEND10 AZJ.EO FENO8 IF ZERO, IGNORE 00325 AD4 LINECT 00326 ASG 73 00327 IIJP FEND11 00328 RTJ OUTLINE WRITE THE FEN011 LINE 00329 LDA IPRGRL -1.3 CONVERT TO CHARACTER ADDRESS 00330 LPA .000077777 00331 SHA 2 00332 INA 3 00333 SCHA FEND', 00334 ENI 1,1. 00335 LOT LINECT,2 00336 FENDS INI 1.2 00337 FEND6 0,1. LACH COPY FROM PROG ROLL ADDR To 00338 SaCH OUTIN-4,2 OUTPUT AREA 00339 FEND7 IST 00 00340 UJP FENDS 00341 STI LINECt.2 INCREMENT LINE CTR - FENDS 00342 ISI 4,3 TEST ON LENGTH OF PRIG ROLL 00343 UJP FEND° 00344 LOA LINECT 00345 45F 0 00346 RTJ OUTLINE PRINT THE LINE 00347 LOI IT1,1 RESTORE B1 00348 UJP FETA 0034q FEND13 ENA ERR10 ERROR MESSAGE. TOO MANY ENDS 00350 ENO 5 00351 WRITE 61 00352 UJP FEND14 00353 SCOLON OCT 14070000 WARNING. NEWLINE. MUST IMMEDIATELY 00354 RTJ NAME FOLLOW SCOLON. 00355 SEMICTLN NEWLINE 00356 OCT 14070000 00357 LOA LINECT 00358 45F 0 00359 RTJ OUTLINE PRINT THE LINE 00360 UJP FEN08 00361 OUTLINE as UJP 00362 ENI 17,1 CAUTION. VARIABLE LENGTH RECORDS 00363 LOO 4060606060 ARE BEING WRITTEN. 00364 LOA OUTIN,1 SEARCH FOR NONZERO WORD 00365 AOJ.NE 2 00366 IJD -2,1 00367 INI 2,1 00368 TI4 1 00369 TNA,S -1 00370 SWA OUTLINE° 00371 INA 1 00372 SHAG -24 NO OF WORDS IN 0 REGISTER 00373 ENA OUTIN -1 00374 WRITE 61 00375 PUNCH LDA PUNCH IS ALTERNATE OUTPUT 00376 AZJ.EO OUTLINE' 00377 SWA OUTLINE? 00378 ENA OUTIN 00379 OUTLINED. ENO O 00380 OUTLINE? WRITE 410 00381 OUTLINE' LDA 4060606060 BLANK OUT OUTPUT AREA 00382 ENI 0,1 00383 STA OUTIN.1 00384 ISI 17.1 00385 UJP -2 00386 ENA 0 ZERO INTO LINECT 00387 STA LINECT 00388 UJP OUTLINE 00389 NAME UJP 0 NAME WRITES A RESERVED WORD IN 00390 LOA,I NAME THE OUTPUT AREA 00391 SWA NAME1 00392 SWA NAME? 00393 ENA 1 CALCULATE RETURN ADOR 00394 RAD NAME 00395 NAME1 LDA 00396 SHA -12 GET CHAR CTR 00397 SWA NAMES 00398 SWA NAME6 NAME? 00399 ENA 00400 SHA 2 CONVERT TO CHARACTER ADDR 00401 INA 3 00402 SCHA NAMES 00403 LOA LINECT N4ME3 - 00404 INA INCREASE BY CHAR CT 00405 ASG 73 00406 (UP NAME4 00407 RTJ OUTLINE OUTPUT THE LINE NAME4 00408 LOI LINECT,? 00409 ENI 1.1 00410 NAMES LACH 00,1 00411 INI 1,2 00412 54CH OUTIN-1,2 00413 NAME6 ISI ,1 00414 UJP NAMES 00415 STI LINECT.2 00416 UJP NAME 00417 DECSPCHP OCT 14070000 00418 RTJ VARSRCH 00419 253 END A 00420 LOA SCRCTR 00421 47J,E0 DCSP1 00422 RTJ NAME 00423 REAL 00424 RTJ SCRPRCC 00425 OCSP1 RTJ VARSRCH 00426 9 00427 LOA SCRCTR 00428 A7J,E0 DCSP2 00429 RTJ NAME 00430 INTEGER 00431 RTJ SCRPRCC 00432 OCSPP RTJ VARSRCH 00433 10 00434 LOA SCRCTR 00435 A2J,E0 OCSP3 00436 RTJ NAME gg:g BOOLEAN 00438 RTJ SCRPRCC ggg: DCSP3 PTJ VARSRCH 00440 12 00441 LDA SCRCTR 00442 AZJ,EO DCSP4 00443 RTJ NAME 00444 REAL 00445 RTJ NAME 00446 ARRAY 00447 RTJ SCRPRCC 00448 DCSP4 RTJ VARSRCH 00449 13 00450 LOA SCRCTR 00451 AZJ,EO DCSP4 00452 RTJ NAME 00453 INTEGER 00454 RTJ NAME 00455 ARRAY 00456 RTJ SCRPRCC 00457 OCSPS RTJ VARSRCH 00458 14 00459 LDA SCRCTR 0046n AZJ,EO DCSP6 00461 RTJ NAME 00462 BOOLEAN 00463 RTJ NAME 00464 ARRAY 00465 RTJ SCRPRCC 00466 DCSP6 RTJ VARSRCH 00467 27 00468 LDA SCRCTR 00469 47J,E0 DCSP7 00470 RTJ NAME 00471 REAL 00472 RTJ NAME 00473 PROC 00474 PTJ SCRPRCC 00475 DCSP7 RTJ VARSRCH 00476 28 00477 LOA SCRCTR 00478 A2J.E0 OCSPR 00479 RTJ NAME 00480 INTEGER 00481 RTJ NAME 00482 PROC 00483 RTJ SCRPROC 00484 DCSPR RTJ VARSRCH 00485 29 00486 LOA SCRCTR 00487 AZJ,EO OCSP9 00488 RTJ NAME 00489 BOOLEAN 00490 RTJ NAME 00491 PROC 00492 RTJ SCRPRCC 00493 ',CARP RTJ VARSRCH 00494 30 00495 LDA SCRCTR 00496 A2J,E0 FENDS 00497 RTJ NAME 00498 POOL 00499 RTJ SCRPROC 00500 UJP FENDS 00501 OECSRCHO CCT 14070000 00502 RTJ VARSRCH 00503 16 00504 LOA SCRCTR 00505 AZJ,EO D5D1 00506 RTJ NAME 00507 REAL 00508 RTJ NAME 00509 ARRAY 00510 RTJ SCRPROC 00511 0501 RTJ VARSRCH 00512 17 00513 LDA SCRCTR 00514 47J,E0 0502 00515 RTJ NAME 00516 INTEGER 00517 RTJ NAME 00518 ARRAY 00519 RTJ SCRPR,,^,C 00520 0502 RTJ VARSRCH 00521 18 00522 LOA SCRCTR 00523 AZJ,EO FEND' RETURN TO CALLING PROGRAM 00524 254 ENO RTJ NAME 00525 BOOLEAN 00526 RTJ NAME 00527 ARRAY 00528 RTJ SCRPROC 00529 UJP FENDB 00530 DECSRCH OCT 14070n00 00531 RTJ VARSRCH 00532 0 LOA 00533 SCRCT9 00534 AZJ,EO OS1 00535 RTJ NAME 00536 REAL 00537 RTJ SCRPROC 00538 1,51 RTJ VARSRCH 00539 1 00540 LOA SCRCTP 00541 AZJ,EO 052 00542 RTJ NAME 00543 INTEGFR 00544 RTJ SCRPROC 00545 OS2 RTJ V4RSRCH 00546 2 00547 LDA SCRCTR 00548 A7J,E0 053 00549 RTJ NAME 00550 BOOLEAN RTJ 00551 SCRPROC 00552 MS3 RTJ VARSRCH 00553 4 00554 LOA SCRCTR 00555 AZJ.EO Os9 00556 RTJ NAME 00557 REAL 00558 RTJ NAME 00559 ARRAY 00560 RTJ SCRPPnc nS4 RTJ 00561 VARSRCH 00562 5 00563 LDA SCRCTR 00564 AZJ,EO DS5 00565 RTJ NAME 00566 INTEGER RTJ 00567 NAME 00568 ARRAY 00569 PTJ SCRPR,^,C DS5 00570 RTJ VARSRCH 00571 6 00572 LOA SCRCTP 00573 A7J,E0 D514 00574 RTJ NAME 00575 BOOLEAN 00576 RTJ NAME 00577 ARRAY 00578 RTJ SCRPROC n514 00579 LOA IARC1D 00580 SUA DS7 00581 ST7 I12.3 SAVE B3 00582 ENT HIGHMEM,3 SEARCH IARROL FOR SWITCH ENTRIES 00583 DSA ENO SWITCH 00584 LOA 0,3 00505 LPA :000077777 00586 AOJ.EO DSP 00587 OS7 Ion ,3 00588 UJP DS6 00589 LOT 112.1 RESTORE 83 00590 LDA LINECT 00591 AZJ,E0 0512 00592 RTJ OUTLINE PRINT THE LINE 00593 UJP DSI2 00594 DSO LOA 0.3 SEARCH FOR SCOLON ON THE ENn OF 00595 ENO SCOLON SWITCH EXPRESSION 00596 LPA 2000077777 00597 A0J.E0 0513 00598 LDA,I 0,3 00599 SHA -12 00600 SUA 0511 00601 AnA LINECT 00602 ASG 73 UJP 00603 OS9 00604 RTJ OUTLINE PRINT THE LINE 00605 OS9 LOI LINÉCT.2 00606 LOA 0,3 CONVERT TO CHARACTER ADDRESS 00607 SHA 2 00608 INA 3 00609 SCHA 0510 00610 ENT 1.1 00611 TNT 1,2 00612 0510 LACH .l 00613 SACH OUTIN -1,2 00614 0511 ISI 9,1 00615 UJP OS10 -t 00616 STI LINECT,2 00617 INI -1,3 00618 UJP OS8 00619 0513 RTJ NAME 00620 SEMICILN 00621 FNA 73 00622 STA LINECT 00623 UJP 057 00624 0512 LOA MAINPROG IF MAIN PROGRAM PROCESS COMMON 00625 47J.E0 FENDO ELEMENTS 00626 UJP DECSRCHP 00627 SCRPROC UJP 00628 LDA SCRCTR 00629 END SWA SCRPROC4 00630 255 STY 1T2.3 83 SAVED IN IT2 00631 FNI 1,3 00632 SCRPR000 LOA.I ISCROL -1,3 00633 SHA -12 GET CHAR CT 00634 AZJ.E0 SCRPROC4 00635 ENO 14074 TEST FOR SEMICOLON ROUTINE 00636 AOJ.NE SCRPRoCS 00637 RTJ NAME 00638 SEMIC ^.LN 00639 ENA 73 FORCE LINECTR TO PRINT THE LINE 00640 STA LINECT 00641 UJP SCRPROC4 00642 SCRPROCS SWA SCRPR,,^,C3 00643 ADA LINECT 00644 ASO 73 00645 UJP SCRPROCI 00646 RTJ OuTLINE 00647 SCRPROCI LOT LINECT.2 PUT CHARS ON OUTIN 00648 LDA ISCROL-1.3 00649 SHA 2 CONVERT TO CHARACTER ADDR 00650 INA 3 00651 SCHA SCRPROC2 00652 ENT 1,1 00653 SCRPROC2 LACH ..1 00654 INI 1,2 00655 SACH OUTIN-1.2 00656 SCRPROC3 Ist *.,1 00657 U.IP SCRPROC2 00658 STI LINECT.2 Phi NEW VALUE INTO LINECTR 00659 SCRPROC4 ISI 4.3 00660 UJP SCRPR,,^,CO 00661 LOT IT2.3 RESTORE 83 00662 UJP SCRPROC 00663 VARSRCH UJP SEARCH VARRAY ROLL FOR pARAMS. 00664 LnA.I VARSRCH WHEN FOUND PUT ON SCRATCH ROLL 00665 SWA VARSRCHI 00666 ENA I CALCULATE RETURN ADDR. 00667

RAD VARSRCH - 00668 ENA 0 00669 STA SCRCTP 00670 LOT IVACTR.1 SET UP 81 SO MEO WILL SEARCH ON 00671 VARSRCHI ENA e DESIGNATORS 00672 ENO 778 SEARCH ON DESIGNATOR 00673 MFO IVAROL.4 00674 UJP VARSRCH6 DONE 00675 LOA IVAROL.1 HIT 00676 SHA -12 IF ID1s0 IGNORE 00677 AZJ.ED VARSRCHI 00678 LOA IVARCL.1 00679 LOA s000007777 00680. ARTEST IVARSRCH3.VARSRCH21 TEST FOR AN ARRAY 00681 VARSRCH2 INI 3,1 POINT TO ADDS 00682 LOI SCRCT0.2 PUT NAME, COMMA ON SCRATCH ROLL 00683 INT 1.2 00684 LOA IVAROL.1 00685 STA ISCROL-1.2 00686 TNT 1.2 00687 ENA COMMA 00688 STA ISCROI, -1.2 00689 5TT SCRCTR.2 00690 INT -3,1 DEC 81 TO POINT TO DESIGNATOR 00691 UJP VARSRf.H1 00692 VARSRCH] 5TT IT2,1 IT2 HOLDS INDEX POINTING TO 00693 INT 3,1 DESIGNATOR. 83 POINTS TO ADDR OF 00694 LOO IVAROL.1 ARRAY ROLL 00695 ENA HIGHMEM 00696 SBA IARCTR 00697 INA 1 00698 TAI 1 LENGTH OF TABLE 00699 LDA IARCTR BASE ADDR OF TABLE 00700 SWA VARSRCH4.1. 00701 SWA 4.3 00702 SHAG 24 00703 ENO 77777R 00704 MEO 4.1 00705 UJP VARSRCH7 NOT ON ARRAY ROLL 00706 LOI SCRCTR.2 00707 ENO SLASHC 00708 VARSRCH4 INI 1,2 COPY ARRAY ROLL ONTO SCRATCH ROLL 00709 LDA 44.1 UNTIL A SLASHC IS FOUND 00710 AOJ.EO VARSRCHS 00711 STA ISCROL -1.2 00712 INT -1,1 00713

UJP VARSRCH4 - 00714 VARSRCHS STA ISCROL-1.2 PUT /1. ON SCRATCH ROLL 00715 TNT 1,2 00716 ENA COMMA 00717 STA ISCROL -1.2 00718 Sit SCRCTR.2 - 00719 LOT 1T2.1 RESTORE 81 00720 U.1P VARSRCH1 00721 VARSRCH6 LOA SCRCTR DONE.IF SCRATCH ROLL CTR IS 00722 47J.E0 VARSRCH NONZERO PUT SCOLON ON SCRATCH 00723 TAI 2 ROLL 00724 ENA SCOLON 00725 STA ISCRO1-1,2 00726 UJP VARSRCH 00727 VARSRCH7 LOT IT2.1 RESTORE 111 00728 UJP VARSRrH2 00729 256

DELETE.FINIS.ENOBLCOK.STOP ROUTINES EJECT 00730 TITLE DELETF.FINIS.ENDBLOCK.STOP ROUTINES 00731 FENDS LOI IPRCTR.2 PUT ENO .. ON PROG ROLL 00732 INI 1,2 00733 FNA END 00734 STA IPRGRI -1.2 00735 INI 1.2 00736 ENA SCOLON 00737 STA IPRGRL -1.2 00738 ST! IPRCTR.2 00739 ENA.S -1 00740 RAD RLOCKCTR DECREMENT BLOCK CTR 00741 UJP SADC 00742 OELST ENA ERRE ERROR MESSAGE. DELETED STATEMENT 00743 ENO 6 00744 WRITE 61 00745 UJP SADC GO TO DELETE STATEMENT 00746 STOP ENA 1 00747 STA STOPFLAG STOPFLAG1 INDICATING STOP 00748 UJP SADC STATEMENT IN SOURCE DECK 00749 ir LIA STOPFLAG 00750 AIJ.E_0 FINIS! 00751 RTJ NAME 00752 STOPLABL 00753 ENA 0 0 INTO STOPFLAG 00754 STA STOPFLAG 00755 FINIS, RTJ NAME 00756 END 00757 PTJ NAME 00758 SEMICOLN 00759 RTJ OUTLINE - 00760 LDAO 206060142546471460 - 00761 STAG OUTIN.2 00762 RTJ OUTLINE 00763 LIAO 2H FINIS 00764 STAG OUTIN.2 00765 RTJ OUTLINE 00766 SRJP END OF NORMAL TRANSLATION 00767 IT1 BSS 1 00768 IT7 BSS 1 00769 LINECT RSS 1 00770 STOPFLAG OCT 0 00771 STOPLABL OCT 100000 00772 BCD 29F99998 t 00773 DUMMY OCT 0 00774 END 00775 257 PASSI

IDENT PASSI 00001 MACRO LETEST (LET,NOLET) 00002 AsG 728 - 00003 ASG 21R 00004 UJP NÖLET 00005 ASG 62B 00006

ASG - 32R 00001 UJP LET - ASG 00008 528 00009 ASG 41R UJP 00010 NÖLET 00011 NDM E 00012 COMMON SURROL 00013 ASS 60 SUBROUTINE ROLL 00014 SURCTR ASS 1 SUBROUTINE ROLL COUNTER 00015 PUNCH ASS 1 ALTERNATE LOGICAL UNIT NUMBER 00016 04TAF ASS 1 DATA FLAG 00017 DATACTR ASS 1 DATA ROLL CTR 00018 DATAROL ASS 2000 DATA ROLL FNDFLAG ASS 00019 1 END FLAG 00020 GOFLAG ASS 1 GO FLAG 00021 ICOCTR RSS 1 COMMON ELEMENTS CTR 00022 ID ASS I ROLE INDICATOR 00023 ININ RSS 20 INPUT AREA 00024 ITPIN ASS 5 TEMP STORAGE 00025 IT1 RSS 1 00026 IT? ASS 1 MAINPROG 00027 ASS 1 MAIN PROGRAM/ SUBROUTINE FLAG PARENT 00028 ASS 1 PARENTHESIS FLAG 00029 RETURNF RSS 1 RETURN FLAG 00030 TEMP ASS 20 TEMPORARY STORAGE AREA 00031 PRO 00032 ENTRY START 00033 FXT REWINO.WFM,START2 START 00034 LOAD 6206040606060606060 BLANKS INTO ITPIN, ITPIN +1 00035 STAG ITPIN 00036 FNI 0,1 00037 ETAI STAG ININ.1 BLANKS INTO INPUT AREA 00038 INI 2.1 00039 I59 20,1 00040 UJP ETAI 00041 ENA ININ READ A CARD 00042 ENO 20 00043 RF_AO 60 00044 ENI 0 +1 00045 ETA2 INI 1,1 00046 I50 73.1 00047 UJP ETA° 00048 ETA3 ENA 0 0 INTO PUNCH 00049 STA PUNCH UJP 00050 ETA6 00051 ETA() LACH ININ -i,1 00052 ENO 10 NUMBER TEST 00053 AOJ.GE ETA4 00054 RTJ DECRIN CONVERT DECIMAL TO BINARY 00055 STA PUNCH 00056 ENA LABL1 MESSAGE. FILE NC IS 00057 ENO 3 WRITE 00058 61 00059 ENA ININ 00060 ENO 20 00061 WRITE 61 00062 UJP ETA22 ETA4 00063 LETEST ¿ETA5 .ETA21 LETTER TEST 00064 ETAS INI -1.1 00065. UJP ETA3 00066 ETA22 RTJ READCARD READ A CARD 00067 ETA6 RTJ SNIT 00068 ENA 0 00069 STA SURCTR 00070 ENO REWIND REWTNO FILES 54,55 00071. CNTL 54 00072 ENO REWIND 00073 CNTL 55 00074 LETA LDAO m2O6060606060606060 BLANKS INTO ITPIN - 00075 STAG ITPIN 00076 ENA 0 ID0 00077 STA ID 00078 ETA? INI 1,1 INCREMENT BI 00079 I5G 73,1 00080 UJP ETA6 00081 PTJ OUTPUT WRITE THE RECORD 00082 RTJ READCARD READ A CARD 00083 UJP ETA? TAP 00084 E LACH ININ.1,1 BLANK TEST 00085 ENO 60A 00086 40J.NE ETAS 00087 LOA ID IF ID :0, IGNORE. 00088 A7J,NE ETA11 00089 UJP ETA7 00090 ETA.) LETEST (ETA1n.ETA11) LETTER TEST - 00091 ETAIO LOA ID 00092 SHA -12 GET ID1 00093 ENO 8 00094 AOJ,GE ETA7 00095 RTJ PACK PACK THE SYMBOL 00096 UJP ETA7 00097 ETA11 STI IT1.1 STORE 81 00098 EN1 28.1 LENGTH OF FRWT1 00099 ETA12 ENDS -0 00100 LOA ITPIN 00101 MEO FRWT1,2 SEARCH FRWT1 00102 UJP ETA14 NOT ON TABLE 00103 INI 1,1 MIT 00104 258

PASSI LDA FRWT1.1 00105 LDQ ITPIN.1 00106 AOJ.EO ETA13 EQUAL 00107 INI -1,1 00108 UJP ETA12 00109 FTA13 TIA 1 PUT JUMP CTR VALUE INTO A REG 00110 SHA -1 DIVIDE BY 2 00111 TAI 2 00112 LDI IT1.1 RESTORE 81 00113 UJP FRWTIJ.2 JUMP TO PROPER ROUTINE 00114 FTA14 LDI IT1.1 RESTORE 81 00115 LDA DATAF IF DATAF NONZERO. COPY DATAROL 00116 AZJ.EQ ETA17 OUT ONTO FILE 00117 SWA ETA16 00118 LOA MAINPROG 00119 47J.EQ .3 SUBROUTINE 00120 ENA 54 MAINDROP 00121 UJP .2 00122 ENA 55 SUBROUTINE 00123 SWA ETA23 00124 ENI 1.2 00125 ENT 0.3 00126 ETA21 ENA DATAROL CALCULATE ADDRESS OF 1ST WORD IN 00127 AIA 3 EACH DATA STATEMENT CARD. 00128 SWA ETA15 ETA15 00129 ENA 00130 ENO 20 00131 ETA23 WRITE 00132 INI 20,3 00133 ETA16 ISI .2 00134 UJP. ETA21 00135 ENA 0 DATAF0 00136 STA DATAF 00137 ETA17 LDA ITPIN RETURN TEST 00138 LOO HRETU 00139 AOJ.NE ETA1A - 00140 LDA ITPIN.1 00141 LOO BURN 00142 AOJ.NE ETAI8 00143 UJP RETURN JUMP TO RETURN ROUTINE 00144 ETA1B LDA ITPIN END TEST 00145 LOO HEND 00146 AQJ.NE ETA19 00147 ENA 1 TURN ENDFLAG ON 00148 STA ENDFLAG 00149 UJP INSERT 00150 ETA19 LDA ITPIN - 00151 LOO RHEIN, 00152 AOJ.NE ETA20 00153 LDA ITPIN.1 00154 LOO MS 00155 AOJ.EO FINIS 00156 FTA20 LOO ....STOP STOP TEST 00157 LDA ITPIN 00158 AQJ.EQ STOP 00159 LDA RETURNF 00160 AZJ,EO SADC 00161 UJP INSERT INSERT GO TO 99999 00162 259

DATA EJECT 00163 TITLE DATA DATA ENA 00164 1 DATAI 40 MEANS NO DATA. PAD OATAF STATEMENTS 00165 LD1 DATACTR.2 00166 00167 ENI 1,1 DATAI 00168 IMI 1.2 COPY THE DATA STATEMENT ONTO LOA THE 00169 ININ-l.1 DATAROLL. 00170 STA 04149CL -I.2 00171 ISI 201 00172 UJP DATAI 00173 STI DATACTR.2 RTJ 00174 READCARD READ THE NEXT CARO LACH 00175 ININ -1.1 TEST FOR CONTINUATION CARD ASE 00176 609 IF A CONTINAUTIOW CARD START 00177 UJP DATA OVER 00178 UJP LETA GO TO EXP TYPE AWAL 00179 2 60

FORMAT STATEMENTS EJECT 00180 TITLE FORMAT STATEMENTS 00181 FORMAT RTJ READCARD DELETES FORMAT STATEMENTS 00182 LACH ININ -,I TEST FOR CONTINUATION CARD. 00183 ASE 608 00184 UJP FORMAT 00185 UJP LETA GO TO EXP TYPE ANAL 00186 261 INSERT EJECT 00187 TITLE INSERT 00180 INSERT ENI 192 00189 L0A0 4206060606060606060 BLANKS INTO TEMP 00190 INSO STA( TEMP., 00191 INI 2.2 00192 ISf. 20,2 00193 UJP INSO 00194 ENO 538 END OF STATEMENT INDICATOR 00195 INS] ISD 691 DECREMENT 01. SEARCH FOR EITHER A 00196 UJP INS3 S OR COL 6. 00197 ENI 191 COPY COLS 1 -5 INTO TEMP STORAGE. 00198 ENI 1.2 BLANK OUT COLS 1 -5 OF INPUT AREA. 00199 INS2 LACH ININ -191 00200 SACH TEMP -192 00201 ENA 609 00202 SACH ININ -1.2 00203 INT 1.2 00204 ISI 5.1 00205 UJP INS2 00206 FNI 6.1 01.6 00207 UJP INS! 00208 INS] LACH ININ - .1 END OF STATEMENT TEST 00209 AOJ,NE INSI 00210 TIA 1 00211 TAI 2 00212 ENA 608 WIPE OUT S TN INPUT AREA 00213 SACH ININ -1.2 00214 PISS INI 1.1 COPY INPUT AREA INTO TEMP STORAGE 00215 ENT 7,2 00216 INS4 LACH ININ -t1 00217 SACH TEMP -1.2 00218 STI IT1.2 PUT BLANKS INTO INPUT AREA 00219 TI4 1 00220 TAT 2 00221 ENA 608 00222 SACH ININ -1.2 00223 LOI 17192 RESTORE 02 00224

INI 192 - 00225 ISI 8091 00226

UJP - INS4 00227 ENI 7.1 SEARCH FOR CHARACTERS IN INPUT 00228 ENO 608 AREA. 00229 INSA LACH ININ -1.] PICK UP CHARACTERS 00230 AOJ,NE INS7 00231 ISI 73.1 00232 UJP INS6 00233 UJP INSB 00234 INS7 RTJ OUTPUT PRINT THE LINE 00235 RTJ BLANK BLANK CUT INPUT AREA 00236 IN58 LDA ENDFLAG 00237 A7J.E0 GOTO1 00238 LDA GOFLAG IF ON PRINT 99999 CONTINUE 00239 AZJ,E0 INS9 00240 LDAO ENDLABLI PUT 99999 CONTINUE INTO PRINT 00241 STAG ININ AREA 00242 LDA0 ENDLARL2 00243 STA( ININ., 00244 RTJ OUTPUT PRINT THE LINE 00245 RTJ BLANK BLANK OUT INPUT AREA 00246 UJP INS9 00247 00T01 LDA RETURNF 00248 AZJ,EO INS9 - 00249 AZJ.LT STOP1 00250 LDAO GOLARLI PUT LOTO 99999 INTO OUTPUT AREA 00251 STA( ININ.1 00252 LDA GOLABL2 00253 STA ININ.3 00254 RTJ OUTPUT PRINT THE LINE 00255 RTJ PLANK BLANK OUT INPUT AREA 00256 ENA 0 00257 STA RETURNF TURN OFF RETURN FLAG 00258 ENA 1 TURN GOFLAO ON 00259 STA GOFLAG 00260 INS9 ENI 191 COPY TEMP. STORAGE BACK INTO INPUT 00261 ENI 192 AREA UNTIL EITHER A S OR THE END 00262 ENO 530 OF THE CARD IS FOUND. 00263 INS10 LOCH TEMP I.1 00264 AOJ.E0 INS11 00265 SACH ININ -1.2 00266 INI 1,2 00267 ISI 80,1 00268 UJP INS10 00269 RTJ OUTPUT PRINT THE LINE 00270 RTJ READCARD READ A CARD 00271 LACH ININ -1.1 00272 ASE 608 00273 UJP SADC GO TO SCAN CARD 00274 UJP LETA GO TO EXP TYPE ANAL 00275 TNS11 STI IT191 STORE 81 00276 RTJ OUTPUT PRINT THE LINE 00277 RTJ BLANK BLANK OUT THE INPUT AREA 00278 LOI IT1.1 00279 INT 1,1 MOVE OFF S 00280 ENI 1,2 COPY TEMP STORAGE BACK INTO READ 00281 INS7? LACH TEMP.1.1 00282 SACH ININ -1,2 00283 INI 1,2 00284 151 800 00285 UJP INS12 00286 UJP LETA 00287 STOPI LDA( GOLA8L1 PUT OOTO 99998 INTO INPUT AREA 00288 STAG ININ.j 00289 LDA STOPLABL 00290 STA ININ.3 00291 2 62

INSERT RTJ OUTPUT PRINT THE LINE 00292 RTJ BLANK BLANK CUT INPUT AREA 00293 ENA 0 00294 STA RETURNF 00295 UJP INS9 00296 263

COMMON STATEMENTS EJECT 00297 TITLE COMMON STATEMENTS 00298 COMMON LDA MAINPROG IF MAIN PROGRAM IGNORE COMM,^,N 00299 A7J,NE SAOC STATEMENTS 00300 STA PARENF 00301 STA ID ID90 00302 INT - -1,1 00303 LCOMI TNT 1,1 00304 ISO 73,1 00305 UJP LCCM2 00306 RTJ OUTPUT WRITE A RECORD RTJ 00307 READCARD READ THE NEXT CARO 00308 LACH ININ -1,1 00309 ASE 608 00310 UJP LCOM1 00311 UJP LCCMIO LCOM2 LACH 00312 INTN -1,1 TEST FOR ALPHANUMERIC CHARACTER 00313 ENO 128 00314 A0J,LT LCCM3 - 00315 LETEST (LCOM3.LCOM4) 00316 LCOM3 ENA 1 1041 SIGNIFYING A VARIABLE 00317 STA ID 00318 UJP LCOMI 00319 LCCM4 ENO 748 LEFT PAREN TEST. IF TRUE INCR A0J,NE 00320 LCOM6 PARENF 00321 ENA 1 00322 LCOMS RAD PARENF 00323 IJJP LCOM1 LCOM6 ENO 00324 348 RIGHT PAREN TEST. IF TRUE 00325 A0J,NE LCOM7 DECREMENT PARENF 00326 ENA.S -1 00327 UJP LCOMS 00328 LCOM7 ENO 738 COMMA TEST AOJ,NE 00329 LCOM9 00330 LOA PARENF PARENF° SO TEST I0. IF ZERO 00331 A7J,NE LCOM1 IGNORE. IF NOT INCR ICCCTR 00332 LCOMB LDA ID 00333 AZJ.EO LCOM1 00334 ENA 1 00335 RAD ICCCTR ENA 00336 0 SET ID.0 TO BE READY FOR THE 00337 STA ID NEXT VARIABLE 00338 UJP LCOM1 LCOM9 ENO 538 00339 END OF STATEMENT 00340 A0J,NE LCOMI IF TRUE TEST ID. IF NONZERO LCOM10 INCR 00341 LDA ID ICOCTR AND PUT ON SURROL. 00342 AZJ,EO LCCM11 00343 ENA 1 00344 RAD ICCCTR 00345 LCOM11 LOI SIIBCTR.2 00346 LOA ICCCTR 00347 RAD SUBROL -1,2 00348 UJP LETA 00349 264

S11BPR ^GRAM STATEMENTS EJECT 00350 TITLE SIBPRrIGRAM STATEMENTS 00351 SURRO LD4) w2 C6060606060606060 BLANKS INTO ITPIN,ITPIN.1 00352 STA) ITPIN 00353 RTJ INIT 00354 ENA 0 SUBROUTINE. MAINPRO0.0 00355 STA MAINPROG 00356 INI -1.1 00357 SURR1 INI 1,1 00356 Isr 73,1 00359 UJP Su8R2 00360 RTJ OUTPUT WRITE THE LINE 00361 RTJ READCARD READ THE NEXT LARD 00362 LACH ININ -1.1 CONTINUATION CARD 00363 ASE 60B 00364 UJP SUAR1 00365 RTJ SUBBOTT PUT NAME IN SUBROL 00366 UJP LETA 00367 SUBR2 LECH ININ -j,1 BLANK TEST 00368 ENO 60B 00369 AOJ.EO SUBBI 00370 EN) 10 NUMBER TEST 00371 AOJ.LT Su8R3 00372 LETE ST (SUBR3r5U6941 LETTER TEST 00373 5118 R3 RTJ PACK 00374 UJP SuRRI 5UNR4 00375 ENO 746 LEFT PAREN TEST 00376 A)J,NE SUBR7 00377 RTJ SUBROLI PUT NAME ON SUBROL 00378 UJP SADC 00379 SURR7 ENO 53B 00380 AOJ.NE SURR1 00381 RTJ SUBROL1 puT NAME IN SUBROL 00382 UJP LETA 0O TO EXP TYPE ANAL 00383 SADC INI lrl SCAN THE STATEMENT. WRITE THE 00384 ISG 73,1 STATEMENT ON THE FILE. RETURN ON .00385 UJP SAOCI S OR END OF CARD 00386 RTJ OUTPUT WRITE THE LINE 00387 RTJ READCAPD READ THE NEXT CARD 00388 LACH ININ -1,1 TEST FOR CONTINUATION CARD 00389 ASE 605 00390 UJP SADC CONTINUATION CARD 00391 UJP LETA GO TO EXP TYPE ANAL 00392 SADC1 ENO 538 END OF STATEMENT TEST 00393 AOJ,NE SADC 00394 UJP LETA GO TO EXP TYPE ANAL 00395 SURROLI UJP PUT NAME ON SUBROL 00396 LDI SUBCT0,2 PUT BLANKS INTO ITPIN, ITPIN.1 00397 INI 1.2 00398 LOAD ITPIN 00399 STAG SUBROL -1.2 00400 INI 2,2 00401 ENA 0 0 INTO COMMON ELTS 00402 STA SUBROT, -1.2 - 00403 StT SUBCTR,2 00404 LOAD 2Oti060606060606060 BLANKS INTO ITPIN,ITPIN,1 00405 STAR ITPIN 00406 UJP 54BROL,1 00407 265

PROGRAM EJECT 00408 TITLE PROGRAM 00409 PROC, ENA 1 PROGRAM. MAINPRO041 00410 STA MAINPPOG 00411 ENT 0.1 00412 LDAO .206060606060606060 00413 PROG1 STA0 TEMPO BLANKS INTO TEMP 00414 00415 INT 2,1 ISO 20,1 00416 UJP PROG1 00417 ENT 0,1 00418 ENT 0,2 00419 ENO 538 END OF STATEMENT 00420 PROG2 LACH ININ,g 00421 AOJ,EO PROG3 00422 SACH TEMPO 00423 ENA 608 BLANK OUT INPUT AREA 00424 SACH ININ,o 00425 00426 INI 1,1 INT 1,2 00427 ISO 80,1 00428 UJP PROG2 00429 RTJ PEADC4RD READ THE NEXT CARD 00430 UJP PROG4 00431 PROG3 ENA 608 DELETE THE S SIGN 00432 SACH ININ,7 00433 PROG4 STI IT1,1 00434 ENA TEMP WRITE OUT TEMP AREA 00435 ENO 20 00436 WRITE 54 00437 ENA TEMP 00438 ENO 20 00439 WRITE 55 00440 LOT IT1.1 00441 UJP LETA GO TO EXP TYPE ANAL 00442 266

RET URN. STOP EJECT 00443 TITLE RETURN,STOP 00444 RETURN INI -1.1 DECREMENT BI 00445 ENA 1 00446 STA RETURNF SET RETURN FLAG 00447 RETO ENO 53R END OF STATEMENT CHARACTER 00448 RETI INI 1.1 00449 IS0 73,1 00450 UJP RET2 00451 RTJ OUTPUT PRINT THE LINE 00452 RTJ READCARD READ THE CAPO 00453 LACH ININ -j.1 TEST FOR CONTINUATION CARD 00454 ASE 60B 00455 UJP RETO 00456 UJP LETA GO TO EXP TYPE ANAL 00457 RET2 LACH ININ -j.1 PICK UP THE CHARACTER 00458 AOJ.NE PET) END OF STATEMENT 00459 UJP LETA 00460 STOP INI -1.1 00461 ENA,S -1 00462 UJP RETO -1 00463 2 67

DECIMAL TO BINARY CONVERSION EJECT 00464 TITLE DECIMAL TO RINARY CONVERSION 00465 as DECBIN UJP 00466 ENA 0 DAL 00467 STA IT1 00468 LACH ININ-1,1 00469 ASS 10 00470 UJP 0D 00471 LOA IT1 00472 UJP DECBIN 00473 OD STA I72 00474 LOA IT1 00475 MUA 010 00476 ADA I72 - 00477 INI 1,1 00478 UJP DAL 00479 2 68

INITIALIZE FLAGS AND COUNTERS EJECT 00480 TITLE INITIALIZE FLAGS AND COUNTERS 00481 INIT UJP 4. 00482 ENA 0 00483 STA DATAF DATA FLAG° 00484 STA DATACTR DATA COUNTER° 00485 STA ENDFLAG END FLAG° 00486 STA ID 10.0 00487 STA RETURNF RETURN FLAG.° 00488 STA COMO GC FLAG.° 00489 STA ICOCTR COMMON ELEMENTS CTR.° 00490 UJP INIT 00491 READ,WRITE 269 EJECT 00492 TITLE READ,WPITE 00493 READCARD UJP READCARD READS A CARD. IT CHECKS 00494 FNI 0.1 FOR A COMMENT. CARD. IF A COMMENT 00495 LDAQ =206060606060606060 CARD IT CHECKS FOR A LOGICAI TYPE 00496 RCO STAG TNTN,1 STATEMENT. IF LOGICAL DELETE C 00497 INT 2,1 IN COLT. IF NOT RETURN. 00498 ISG 20,1 00499 UJP RCO 00500 RC1 ENA ININ 00501 FNO 20 00502 READ 60 00503 SHA 2 TEST FOR END OF DATA 00504 A2J,GE RC2 00505 LDA( =206040606040606060 PUT FINIS ON THE TAPE 00506 STAR ININ 00507 LOAD =2H FINIS 00508 ST40 ININ.2 00509 UJP FINIS RCP ENI 00510 1,1 SEARCH FOR LESS THAN SYMBOL. IF 00511 ENO 32R FOUND READ THE NEXT RECORD 00512 LACH ININ-1,1 00513 A0J.E0 READCARD.1 00514 ISI 72,1 00515 UJP 4-3 00516 FNI 1,1 00517 LACH ININ -1,1 TEST FOR COMMENT CARD 00518 ENO 238 C IN COLUMN 1 00519 AOJ,E0 RC4 RC3 00520 ENT 6,1 00521 UJP READCARD RC4 RETURN. NOT A COMMENT CARD 00522 ENI 6.1 COMMENT CARD. SEARCH FOR RCS LOOTCAL 00523 INI 1,1 TYPE CARD 00524 ISG 73,1 00525 UJP RC6 00526

LOA - ID 00527 LPA =077770000 GET 101 00528 42J,E0 RC1 00529 UJP ACID 0530 RC6 LACH ININ -1,1 - 00531 LETFST CRC7.PC9) LETTER TEST 00532 RC7 LOA ID TEST IF ID GT 7. IF SO GO T, RC2. 00533 LPA =077770000 IF NOT PACK. 00534 ENO 700008 00535 AOJ,GE RC8 00536 RTJ PACK UJP 00537 RCS 00538 RCP ENA 0 00539 STA ID 00540 UJP RCIO - 00541 RCP END 608 AOJ,EO RCS 00542 RCIO 00543 LDO =HLOGT TEST FOR LOGICAL IN ITPIN, 00544 LOA ITPIN ITPIN.1 00545 44J,NE READCAR0.1 00546 LDO =HCAL 00547 LDA ITPIN.1 00548 AOJ,NE READCARD.1 00549 RC11 ENA 608 PUT BLANK INTO COL 1 00550 FNI 0.2 00551 SAC ININ.2 00552 RTJ OUTPUT WRITE THE RECORD ON THE FILE 00553 RTJ BLANK BLANK OUT THE INPUT AREA 00554 ENA ININ READ THE NEXT CARD. CAUTION ...... 00555 ENO 20 A COMMENT CARD WITH A SYMBOL IN 00556 READ 60 COL 6 WILL RE HANDLED AS A ENT 00557 6.1 LOGICAL STATEMENT CONTINUATION 00558 LACH ININ -1,1 CARD. TEST FOR A CONTINUATION 00559 ENO 608 CARD 00560 AOJ,NE RC11 PC12 00561 LDAQ =206050606060606060 00562 STAG TTPIN BLANKS INTO ITPIN, ITPIN41 00563 ENI 6.1 00564 UJP READCARD RETURN. NOT A LOGICAL TYPE 00565 OUTPUT 44 CARD UJP 00566 LOA MAINPPOG 00567 A2J,E0 .3 00568 ENA 54 00569 UJP *.2 00570 ENA 55 00571 SWA .3 00572 ENA ININ 00573 ENO 20 00574 WRITE 00575 UJP OUTPUT 00576 BLANK UJP BLANK OUT INPUT AREA 00577 ENT 1.2 00578 LOAD 4206040406060606060 00579

RLKI - STAG ININ -1,2 00580 TNT 2,2 00581 ISO 20,2 00582 UJP BLK1 00583 UJP BLANK 00584 PACK UJP * PACK CHARACTERS INTO ITPIN 00585 LDA ID INCREMENT THE 1ST HALF OF In 00586 SHA -12 00587 TAI 2 LACH 00588 ININ -1,1 00580 SACH ITPIN,? 00590 100008 ENA 00591 RAO ID - 00592 UJP PACK 00593 270

FINIS EJECT TITLE FINIS 00594 FINIS ENA 00595 1 MAINPROGa1 SO OUTPUT STA MAINPROG WRITES ON 58 00596 RTJ OUTPUT 00597 WRITE THE LINE ENO 00596. REWIND REWIND UNIT 54 CNTL 54 00599 FINISI RTJ 00600 BLANK BLANK OUT INPUT AREA ENA ININ 00601 ENO 20 00602 READ 54 00603 SHA 00604 2 TEST FOR END OF DATA AZJ,LT FINIS? 00605 ENA ININ 00606 ENO 20 00607 WRITE 55 00608 UJP FINIS, 00609 FINIS2 00610 ENA ININ WRITE LAST RECORD ENO 20 00611 WRITE 55 00612 ENO REWIND 00613 REWIND BOTH UNITS AND GO TO PASS 00614 CNTL 54 TWO ENO REWIND 00615 CNTL 55 00616 UJP START, 00617 GO TO PASS 2 00618 271

PASS] EJECT TITLE PASSI 00619 LARLI RCD 3, FILE NO IS 00620 FNDLABL,I RCD 2.99949 CO 00621 FNDLARL2 RCD 2.NTINUE 00622 00623 GOLA8L1 RCn 2, ROTO 9 GOLARL2 RCD 1,9909 00624 STOPLARL RCD 1.999R 00625 FRWT1 RCD 2.PROGRAM , 00626 RCD 2.SIIRROUTI 00627 RCD 2.FUNCION 00628 RC0 2.EXTFRNAL 00629. RCD 2.ENTPY 00630 RCD 2.REAL. 00631 BCD 2.INTFGER 00632 RCD 2.CHAPACTE 00633 BCD 2.TYPF - 00634 RCn 2.DATA 00635 8C0 2.EOIJTVALE 00636 RCn 2.COMMON 00637 RCD 2.DIMENSIO 00638 RCD 2.FORMAT 00639 FRWTIJ I1JP PROG 00640 UJP SIJRRO 00641 UJP SURRO 00642 UJP SADC 00643

UJP . SAOC 00644 UJP SADC 00645 I1Jp SADC 00646 UJP SADC 00647. I1JP SADC 00648 UJP DATA 00649 UJP SADC 00650 UJP CCMMCM 00651 UJP SADC 00652 UJP FORMAT 00653 END START 00654 00655