Fortran_Extended_4_Ref_Man_60497800J_Jun83 Fortran Extended 4 Ref Man 60497800J Jun83

Fortran_Extended_4_Ref_Man_60497800J_Jun83 Fortran_Extended_4_Ref_Man_60497800J_Jun83

User Manual: Pdf Fortran_Extended_4_Ref_Man_60497800J_Jun83

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

DownloadFortran_Extended_4_Ref_Man_60497800J_Jun83 Fortran Extended 4 Ref Man 60497800J Jun83
Open PDF In BrowserView PDF
60497800

CONTROL DATA
CORPORATION
/ff^y

FORTRAN EXTENDED
VERSION 4
REFERENCE MANUAL

r

C D C ® O P E R AT I N G S Y S T E M S :
NOS 1
NOS 2
NOS/BE 1
SCOPE 2

/f*3S*j\

REVISION RECORD

Revision

Description

A (11/01/75)

Original release.

B (03/05/76)

This revision documents Version 4.6 of FORTRAN Extended. Features documented include
CP155, Compiler Enhancements, and CP079, Math Library Upgrade.

C (04/15/77)

Revised to include feature F7540, CYBER 170 Model 176 Support, as well as miscellaneous
technical corrections, at PSR level 446.

0 (03/31/78)

This revision documents Version 4.7 of FORTRAN Extended. Features documented include
CP091 and CP162, CRM products BAM and AAM, 191, Math Library Upgrade, CP184, Fast Overlay
Loading, and 66, CYBER Interactive Debug interface. Also documented is the implementa
tion of STATIC mode memory management, as well as miscellaneous technical changes and
corrections.

E (07/20/79)

This revision documents Version 4.8 of FORTRAN Extended. The Post Mortem Dump facility
is documented with this release, as well as numerous technical changes.

F (08/22/80)

This revision documents changes to Post Mortem Dump, adds the FORTRAN Interface to Common
Memory Manager, and adds the STATIC option to FORTRAN Extended. Numerous technical
changes are included. PSR level 524.

G (01/15/81)

This revision documents release of Post Mortem Dump and STATIC option under SCOPE 2.
Numerous technical changes are included. PSR level 533.

H (08/13/82)

This revision documents numerous technical changes and corrections. PSR level 552.

J (06/10/83)

This revision documents numerous technical and editorial corrections. PSR level 577.

REVISION LETTERS I, 0, Q, AND X ARE NOT USED
©COPYRIGHT CONTROL DATACORPORATION
1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983
All Rights Reserved
Printed in the United States of America

n

Address comments concerning this manual to:
CONTROLDATACORPORATION
Publications and Graphics Division
P. 0. BOX 3492
SUNNYVALE, CALIFORNIA 94088-3492
or use Comment Sheet in the back of this manual

60497800 J

LIST OF EFFECTIVE PAGES

J0B&K,

New features, as well as changes, deletions, and additions to information in this manual are indicated by bars
in the margins or by a dot near the page number if the entire page is affected. A bar by the page number
indicates pagination rather than content has changed.

Page
ijfpSN

Revision

Front Cover
Inside Front Cover
Title Page

ii
iii
iv

v

vi

d

vii/viii

ix

X

xi
xii

1-1 thru 1-4

1-5
/*$RN

/0S\

1-6 thru 1-9
1-10
1-11 thru 1-17

2-1
2-2
2-3
2-4
2-5
2-6

2-7 thru 2-20
3-1 thru 3-9
3-10
3-11
3-12
3-13
3-14
3-15
3-16
3-17
3-18
3-19
3-20
3-21

4-1
4-2
4-3
4-4

4-5 thru 4-9
4-10
4-11
4-12
4-13
4-14 thru 4-16

5-1
5-2
5-3

5-4 thru 5-6

r

5-7
5-8
5-9

5-10
5-10.1
5-10.2

60497800 J

J

Page
5-11 thru 5-■19
5-20
5-21
5-22
5-23
5-24
5-25 thru 5-■28

6-1
6-2
6-3
6-4
6-5

6-6 thru (5-8

6-9

6-10
6-11 thru 6-■17
6-18
6-18.1/6-18.2
6-19 thru 6-■21
6-22
6-23
6-24
6-25 thru 6- 27
6-28
6-29
6-30
6-31
6-32
6-33
6-34
6-35 thru 6- 37

7-1
7-2
7-3
7-4

7-5 thru 7-S
7-10
7-11
7-12
7-13 thru 7- 15
7-16
7-17
7-18
7-19
7-20
7-21
7-22
7-23
7-24 thru 7-28

8-1
8-2
8-3
8-4
8-5
8-6

8-6.1/8-6.2

Revision

Page

Revision

8-7
8-8
8-9

8-10
8-11 thru 8-16
8-16.1/8-16.2
8-17
8-18
8-19
8-20
8-21
8-22
8-23
8-24
8-25
8-26
8-26.1/8-26.2
8-27
8-28
8-29
8-30
8-31
8-32
8-32.1 /8-32.2
8-33 thru 8-35
8-36
8-37
8-38
8-39
8-40
8-41
8-42
8-43
8-44
8-45 thru 8-47
8-48 thru 8-51
8-52
8-53
8-54
8-55
8-56
8-56.1/8-56.2
8-57 thru 8-61

9-1

9-2 thru 9-4

9-5
9-6
9-7
9-8
9-9

9-10
9-11 thru 9-29
10-1
10-2
10-3
10-4

iii •

Revision
10-5 thru 10-7
10-8
10-9
10-10
11-1
11-2
11-3
11-4
11-5
11-6
11-7
12-1
12-2
12-3
12-4
12-5
13-1
13-2
13-3
13-4
13-5 thru 13-8
13-9
13-10
13-11
13-12
13-13
13-14
13-15
13-16 thru 13-20
13-21
14-1
14-2
14-3
15-1 thru 15-3
16-1
16-2
16-3
16-4
16-5
16-6
16-7
16-8
16-9
16-10
16-11
16-12
16-13 '
17-1
17-2
17-3
17-4
17-5
17-6
18-1
18-2 thru 18-6
18-7
18-8
18-9 thru 18-11
19-1
19-2
19-3
19-4 thru 19-7
19-8
19-9 thru 19-11
19-12
19-13 thru 19-18
19-19
19-20 thru 19-27
.19-28
19-29 thru 19-32
19-33
19-34

• IV

Page
20-1
A-l
A-2
A-3
B-l thru B-4
B-5
B-6
B-7
B-8
B-9
B-10
B-ll thru B-14
B-15
B-16
B-17
B-18
B-19
B-20
B-21
B-22
B-23 thru B-26
B-27
B-28
B-29
B-30
B-31 thru B-33
B-34
B-35
B-36
B-37
B-38 thru B-41
B-42
B-43
B-44 thru B-49
B-50
B-51 thru B-64
B-65
B-66
B-67
B-68
B-69 thru B-76
B-77
B-78
B-79
B-80
B-81
B-82
B-83
B-84
B-85
B-86
B-87
B-88
B-89
B-90
B-91
B-92
B-93
B-94
B-95
B-96
B-97
C-l thru C-8
C-9 thru C-ll
D-l
D-2
D-3 thru D-5
D-6
D-7
D-8
E-l thru E-6
Index-1

Revision

Page

Revision

Index-2
Index-3
Index-4
Index-5
Index-6
Comment Sheet
Mailer
Back Cover

yfS&Sv

.■**^^\

60497800 J
/<*^j.

PREFACE

f This manual describes the FORTRAN Extended 4.8 language. FORTRAN Extended is designed to comply with
American National Standards Institute FORTRAN language, as described in X3.9-1966. It is assumed the reader
has knowledge of an existing FORTRAN language and is familiar with the computer system on which the
/^^ language is used.
The FORTRAN Extended compiler operates in conjunction with the COMPASS 3 assembly language processor
^p^ under control of the following operating systems:
NOS 1 for the CONTROL DATA® CYBER 170 Series, CYBER 70 Models 71, 72, 73, 74, and 6000 Series |
Computer Systems
NOS 2 for the CDC® CYBER 170 Series, CYBER 70 Models 71, 72, 73, 74, and 6000 Series Computer |
Systems

0s\

NOS/BE 1 for the CDC CYBER 170 Series, CYBER 70 Models 71, 72, 73, 74, and 6000 Series Computer |
Systems

/^

SCOPE 2 for the CONTROL DATA CYBER 170 Model 176, CYBER 70 Model 76, and 7600 Computer
Systems
All references in this manual to NOS 1 refer to both NOS 1 and NOS 2.
Due to capsule loading, relocatable binaries compiled by versions of FORTRAN Extended prior to version 4.7
cannot be run with CRM BAM 1.5 or AAM 2; they must be recompiled.

Control Data extensions to the FORTRAN language are indicated by shading. Example programs or parts of
programs are shaded in their entirety if they contain lines using extensions to the ANSI standard (unless the only
such extension is the PROGRAM statement). Shading is used only in sections 1 through 8, which contain the
/*"5Rx
f specification of the FORTRAN Extended language; later sections describe the implementation of these
specifications and shading is not used.
r Extended memory
extendedfor
(LCME).
the CYBER
Extended
170
memory
Modelfor176
theis
CYBER
large central
170 800memory
Series Computer
(LCM) or
Systems
large central
is unifiedmemory
extended
memory (UEM). Extended memory for all other NOS or NOS/BE computer systems is extended core storage
(ECS) or extended semiconductor memory (ESM). In this manual, the acronym ECS refers to all forms of
0^ extended memory unless otherwise noted. Programming information for the various forms of extended memory
can be found in the COMPASS reference manual and in the appropriate computer system hardware reference
manual.
\. Related material is contained in the listed publications. These publications are listed alphabetically and
grouped according to their importance to the FORTRAN user. The NOS 1, NOS 2, and NOS/BE 1 manual
abstracts are pocket-sized manuals containing brief descriptions of the contents and intended audience of all
{■^ operating system and product set manuals. The abstracts manuals can be useful in determining which manuals
are of greatest interest to a particular user.
documentation
to the Programming
System
Report (PSR)
of installed
rThe Software
Publicationscorresponds
Release History
is a guide for
determining
whichlevel
revision
levelsite
of software.
software
/*"fSS

/^n

60497800 J

The following publications are of primary interest:
Publication

Publication
Number

NOS1 NOS 2 NOS/BE 1 SCOPE 2

FORTRAN Common Library
Mathematical Routines
Reference Manual 60498200

X

X

FORTRAN Extended Version 4
DEBUG User's Guide 60498000

X

X

FORTRAN Extended Version 4
User's
Guide
60499700

X

X

NOS Version 1 Reference Manual
Volume 1 of 2 60435400
NOS Version 2 Reference Set
Volume 3, System Commands 60459680

X

NOS/BE Version 1
Reference Manual 60493800

0£&$$\

X

SCOPE Version 2
Reference Manual 60342600

X

The following publications are of secondary interest:
Publication

Publication
Number

NOS1 NOS 2 NOS/BE 1 SCOPE 2

Common Memory Manager
Version 1 Reference Manual 60499200

X

X

COMPASS Version 3
Reference Manual 60492600

X

X

CYBER Interactive Debug
Version 1 Reference Manual 60481400

X

X

CYBER Interactive Debug
Version 1 Guide for Users
of FORTRAN Extended Version 4 60482700

X

X

CYBER Loader Version 1
Reference Manual 60429800

X

X

CYBER Record Manager
Advanced Access Methods
Version 2 Reference Manual 60499300
CYBER Record Manager
Advanced Access Methods
Version 2 User's Guide 60499400

VI

.y ^ V

9-27
9-28

10. FTN CONTROL STATEMENT

10-1

Parameters
A Exit Parameter
B Binary Object File
BL Burstable Listing
C COMPASS Assembly
CC Control Statement Continuation
Parameter
D Debugging Mode Parameter
DB CYBER Interactive Debug Parameter
E Editing Parameter
EL Error Level

10-1
10-2
10-2
10-2
10-2
10-2
10-3
10-3
10-3
10-4
60497800 J

/«"»fe\

Xll

60497800 H

FORTRAN LANGUAGE ELEMENTS

A FORTRAN program contains executable and non-executable statements. Executable statements specify actions
the program is to take, and non-executable statements describe characteristics of operands, statement functions,
arrangement of data, and format of data.

CODING FORTRAN STATEMENTS
The FORTRAN source program is written on the coding form illustrated in figure 1-1. Each line on the coding
form represents an 80-column source line (terminal line or card image). The FORTRAN character set is used to
code statements.
FORTRAN CHARACTER SET
Alphabetic
Numeric
Special

A to Z
0 to 9
= equal
+ plus
- minus
* asterisk
/ slash
(left parenthesis

) right parenthesis
, comma
. decimal point
$ dollar sign
blank
•£ or " quote

In addition, any character (Appendix A) may be used in Hollerith constants and in comments. Blanks are not
significant except in Hollerith fields.
COLUMN USAGE
Column 1

C or $ or * indicates comment line

Columns 1-2

C$ indicates a debug directive if In DEBUG mode.

Columns 1-2

C/ indicates a list directive.

Columns 1-5

Statement label.

Column 6

Any character other than blank or zero denotes continuation; does not
apply to comment lines or list directives. A debug continuation line
must contain C$ in columns 1-2.

Columns 7-72

Statement.

Columns 73-80

Identification field, not
processed by compiler.

Can contain information for
debug AREA directive.

/*SS\

60497800 A

1-1

,-sS^v

/ ^ ^ V

j tc
« ta
tc S
Ul 3

S
S

is

»

s

te

r-

^$*\

s
3

M
I

<

5

10

s

3
3

8
S

S

8

8
S

fi

fi

S

IN lil

8

a
a
K
8
ID

t-l

i"-

l -

3
3
X

<

S

a

<^*fi$\

a
s

■i
s
V

**2

»•*

*•

CO

V

*•

f-

z
Ul
£

B
to

h

k f

eo

Ul

O
Ui

s
ca

SC
f

IL

2

8
8

1
a
o

<
o
<

<
u
.£
Z -1
o <

•■

?!
8
R
8

t-

8
S

a
a

a

cu

a

£

3

•J)
"2

8

5
<
IN

8

8

.-

•a

1

^ -

z

.n"

. "5

oa

/*■»

■ST
S"
o

o
i
a S

Vw

'-5
j

»'/■■;*•

•*+
* 1

N <

a •
ota.

■i

-SS

Ui

*>» 1

,/t^^v

.-

~

-4

61

•a
i-i

tv
i i

.in

T i

tfl-

o o z t-=

iT
IS)

M

• ri

»—

it

< "■<»

o

.-

Lo

■ y±

a

■^
1

"5

F
ii
.*2 .

Z

H
'■ Oi

13

a

cv

•5

a.

UJ

01

ID

s▶*■

.—

fesz.
f > tu 111

1-2

cvt

"2

•o

60497800 A
/fl^sv

0S\

COMMENTS

^^ In column I a C, *, or $ indicates a comment line. Comments do not affect the program; they can be
written in column 2 to 80 and can be placed anywhere within the program. If a comment occupies more
than one line, each line must begin with C, *, or $ in column 1. In a comment line a character in column 6
/^ is not recognized as a continuation character. Comments can appear between continuation lines; they do not
interrupt the statement continuation.
/^ Comment lines following an END line are listed at the beginning of the next program unit unless the END
line is continued.
f

S TAT E M E N T

LABELS

A statement label (any 1- to 5-digit integer) uniquely identifies a statement so it can be referenced by
^^ another statement. Statements that will not be referenced do not need labels. Blanks and leading zeros are
not significant. Labels need not occur in numerical order; however, a given label must not be used more than
once in the same program unit. A label is known only in the program unit containing it; it cannot be refer/^ enced from a different program unit. Any statement can be labeled, but only FORMAT and executable state
ment labels can be referenced by other statements. A label on a continuation line is ignored.
CONTINUATION

Statements are coded in columns 7-72. If a statement is longer than 66 columns, it can be continued on as
many as 19 continuation lines. A character other than blank or zero in column 6 indicates a continuation line.
Column 1 can contain any character other than C, *, or $; columns 2, 3, 4, and 5 can contain any character.
Any statement except a comment or a list directive can be continued, including the END statement.
COLUMNS 73-80

Any information can appear in columns 73-80 because they are not part of the statement. Entries in these
columns are copied to the source program listing. They are generally used to order the lines in a deck, but
can contain information for DEBUG AREA processing.
STATEMENT SEPARATOR
Several statements can be written on one line if they are separated by the special character $. Each state
ment following a $ sign is treated as a separate statement. For example:
/fSV

ACUM=24.$I=0 $ IDIFF-1970-1626

is the same as
ACUM =. 24.
I -.'0'
IDIFP = 1970-1626

/fp**»

$ can be used following any statement except FORMAT statements or list and debug directives. The state
ment following $ cannot be labeled; the information following $ is treated exactly as if it were in column 7 on
the next line.

/(PS,

60497800

A

1-3

BLANK LINES
Blank lines can be used freely between statements to produce blank lines on the source listing. Unlike a
comment line; a blank line interrupts statement continuation, and the line following the blank line is the be
ginning of a new statement. This line can optionally have the form of a continuation line.

^^s

DATA
/""^v

No restrictions are imposed on the format of data read by the source program. Data input on cards is limited
to 80 characters per card, but a record can span more than one card. The maximum length in characters for
formatted, list directed, and NAMELIST records must agree with the length, r, specified in the PROGRAM
statement. If r is not specified, a default value of 150 is used.
■"""3^

ORDERING OF STATEMENTS
The following table shows the general form of a FORTRAN program unit. Statements within a group can
appear in any order, but groups must be ordered as shown. Comment lines can appear anywhere within the
program.
STATEMENTS
1

OVERLAY

2

PROGRAM*
FUNCTION*
SUBROUTINE*
BLOCK DATA

3

IMPLICIT

4

5

6

7

F*«%

The range of a real constant is IO"293 to 10+322; if this range is exceeded, a diagnostic is printed. Precision is
approximately 14 decimal digits, and the constant is stored internally in one computer word.
Examples:
7.5

-3.22

+4000.

23798.14

.5

-

.72

42.El

700.E-2

Examples of invalid real constants:
3,50. (comma not allowed)
/**S"j\

2. 5A (letter not allowed)
Optionally, a real constant can be followed by a decimal exponent, written as the letter E and an integer con
stant indicating the power of ten by which the number is to be multiplied. If the E is present, the integer
constant following the letter E must not be omitted. The sign may be omitted if the exponent is positive, but
it must be present if the exponent is negative.
Examples:
*^*^s

42.El (42. X IO1 = 420.)
.00028E+5 (.00028 X IO5 = 28.)
6.205E12 (6.205 X IO12 = 6205000000000.)
8.0E+6 (8. x IO6 = 8000000.)
700.E-2 (700. X 10~2 = 7.)
7E20 (7. X IO20 = 70 000 000 000 000 000 0000.)
Example

of

invalid

real

constants:

^1

7. 2E3.4 exponent not an integer

DOUBLE PRECISION CONSTANT
| n.nD±s .nD±s n.D±s nD±s|

n

C o e f fi c i e n t

)

D±s Exponent (base 10)

1-6

60497800

A

Double precision constants are written in the same way as real constants except the exponent is specified by
the letter D instead of E. Double precision values are represented internally by two computer words, giving
extra precision. A double precision constant is accurate to approximately 29 decimal digits. If the exponent
is positive, the plus sign is optional.
/SfPV,

Examples:
f*

5.834D2

(5.834

X

IO2

=

583.4)

14.D-5 (14. X IO"5 = .00014)
9.2D03 (9.2 x 103 = 9200.)
^

-7.D2

(-7.

X

102

=

-700.)

3120D4 (3120. X IO4 = 31200000.)

0^\

Examples of invalid double precision constants:
0*^

7.2D

exponent

missing

D5 exponent alone not allowed
1

2,1.3D2

comma

illegal

i 3.141592653589793238462643383279 D and exponent missing

f * C O M P L E X C O N S TA N T
(M,r2)

rl
r2

Real

part

Imaginary

part

Complex constants are written as a pair of real constants separated by a comma and enclosed in
parentheses.
FORTRAN Coding Complex Number
(1.,

7.54)

1.

+

7.54i

i

=

yf~A~

(-2.1E1, 3.24) -21. + 3.24i
(4.0, 5.0) 4.0 + 5.0i
(O.,

-l.)

60497800

0.0

-

l.Oi

A

1-7

The first constant represents the real part of the complex number, and the second constant represents the
imaginary part. The parentheses are part of the constant and must always appear. Either constant may be
preceded by a plus or minus sign. Complex values are represented internally by two consecutive computer
words.
Both parts of complex constants must be real; they may not be integer.
Examples of invalid complex constants:
(275, 3.24) 275 is an integer
0f&$\

(12.7D-4 16.1) comma missing and double precision not allowed
4.7E+2,l.942 parentheses missing
(0,0)

0

is

an

integer

Real constants which form the complex constant can range from IO"293 to 10+322. Division of complex
numbers might result in underflow or overflow (see Appendix D) even when this range is not exceeded.
/*"3!"\

O C TA L
n 1i

C O N S TA N T

.«*\

• • • nm
mB

n is an octal digit, 0 through 7. 1 < m < 20 octal digits
An octal constant consists of 1 to 20 octal digits suffixed with the letter B. .-*..• /*m*\
Examples:
777777B
52525252B
500127345B

Invalid octal constants:
892777B

8

and

9

are

77000000007777752525252B
07766

1-8

O

not

non-octal
exceeds

digits.
20

digits

■ ' ■■ ' ■ , ; . : ■ ; • ■ ;
i.

.

.

allowed

60497800

A

**•»&

An octal constant must not exceed 20 digits nor contain a non-octal digit. If it does, a fatal compiler
diagnostic is printed. When fewer than 20 octal digits are specified, the digits are right justified and zero
filled. Octal constants can be used anywhere integer constants can be used, except that they cannot be used
as statement labels or statement label references, in a FORMAT statement, or as the character count when a
Hollerith constant is specified.
They can be used in DO statements, expressions, and DATA statements, and as dimension specifications.
Examples:
BAT - (I * 5252B) . OR. JAY masking expression
J = jMAXO (I, iooob , J, K+40B) octal constant used as parameter in function

,|p\

NAME -.1 ..AND. 77700000B

masking expression

J = (5252B + N)/K

arithmetic expression

DIMENSION BUF(IOOOB)

dimension specification

When an octal constant is used in an expression, it assumes the type of the dominant operand of the
expression (Table 2-1, section 2).

HOLLERITH CONSTANT
nHf
nRf

j*$pn

nLf
=£f-v±

Unsigned decimal integer representing number of characters in string including blanks;
must be greater than zero.
f

String of characters; must contain at least one character

H

String delimiter
Left justified with blank fill

L

Left justified with binary zero fill

R

Right justified with binary zero fill

>ip£\

/*^\

0&>\

A Hollerith constant has two forms: one is an unsigned decimal integer followed by the letter H, L, or R and a
string of characters; the other is a •?■= delimited string.
Hollerith constants can be used in DATA statements, as arguments in subroutine calls or function references, and
in expressions. In an expression, they are limited to 10 characters; and in a DATA statement they should be
limited to 10 characters (see section 3). If a Hollerith constant is used as an operand of an arithmetic operation,
an informative diagnostic is given. If a Hollerith constant is used as an argument in a subprogram call, it is
followed by a zero word.

60497800 A

1-9

,<«*r«t*X

The Hollerith specification in a FORMAT statement (see section 6) is not the same as a Hollerith constant.
Example:; "V./>- '":-"" ."* 'v-••-*•■.• •"-.''''' ,l' •' ;■' ;,'*.'* '"- - "" ' - -' ""-* "-/•"' "; - • •-'-- /

PROGRAM HOLL (OUTPUT)
I
*
6HABCDEF
J-=6LABCDEF
K
•*'
6RABCDEF
L
=
*ABCDEF#
PRINT
It
ItI»J»JfK»K»L»L
^'
1
-

F O R M AT

***)
A
^

'

<024tA15)

STOP

^
^

END
/**"^"\
Stored

Internally:

Display

Code:

01020304050655555555
ABCDEF
01020304050600000000
ABCDEF::::
00000000010203040506 ::::ABC0EF R format'
01020304050655555555
ABCDEF
nHf

and

H

format
I-format

^
?

•*

format

^

•J6f*?fe

^\

These two forms produce left-justified display code constants with 10 characters per word. If the string length
is not a multiple of 10, the final word is blank filled.
nHf Examples:
y-^-W^V

18HTHIS IS A CONSTANT
7HTHE

END

^

19HRESULT NUMBER THREE

0t

Examples:

"-

.

. F ( V. E Q . ¥ Y, E S - #

1

,

,■

"

Y»Y+1.

•

.

'

' _ ' , ' . ,■

';"
?

'''V'-.-V'.y:..'_
•*.'..,."

PRINTI^SQRT^.SQRTR)
=,.
F O R M AT
(A10.F10.2)

PRI
NT
2 F O R M AT ( 2 A 1 0 )

2,

=#

TEST

.".„."•-•-

.

PA S S E D - ? * -

INTEGER
LINEC7),
LOGICAL
N E W PA G E ,
IF (NEWPAGE) LINE{7);= -£PAGE0-£ + N1 THRU 9

."'

"

-".r
'"

;;
"

■•

«

."'_

■

'"

^

•

^

' -■' • ' ' •

.
"*

. .■'■:

■■

>•

.

N1THRU9

;'

.
',

—

■* •

/=%>
'

/***^\

-**s^^.

1-10

60497800

E

/cr^\

'

nRf and nLf

These two forms produce display code constants with 10 characters per word. If the string length is not a
multiple of 10, the final word is zero-filled, and justified; nRf indicates right justification and nLf indicates left
justification.
nRf Example:
I VAL (IJ;- 1RA

nLf Example:
INDEX {■} - 3LLGO

LOGICAL CONSTANT
A logical constant takes the forms:
.TRUE. or .T. representing the value true
.FALSE, or fF. representing the value false
The decimal points are part of the constant and must appear.
Examples:
LOGICAL XI, X2

XI = .TRUE.
X2 = .FALSE.

VARIABLES
A variable represents a quantity whose value can be varied; this value can be changed repeatedly during
program execution. Variables are identified by a symbolic name of one to seven letters or digits, beginning
with a letter. A variable is associated with a storage location; whenever a variable is used, it references the
value currently in that location.
A variable can have its type specified in a type statement (see section 3) as integer, real, double precision,
complex, or logical. In the absence of an explicit declaration, the type is implied by the first character of
the name: I, J, K, L, M, and N imply type integer and any other letter implies type real, unless an IMPLICIT
statement (see section 3) is used to change this normal implicit type.

60497800

A

1 - 11

«"-^\

-ExjaMpleV" 1 ' *;" , : .'--.„,.
" ^: /|^lPL(C^:pOMiUiE^f^ECISION (A)
\:CQWPL'EX>lprtA \, >'L . /

APPLE«ORANGES+PEARS

Ah, explicit declaration overrides an IMPLICIT declaration. Therefore, ALPHA is type complex; APPLE is
type double precision.
Default typing of variables:

A-H,0-Z

Real

I-N

Integer

INTEGER VARIABLES
/**^S*v

An integer variable is a variable that is typed explicitly or implicitly as described under Variables.
The value range is - (2S9-1) to 2S9-1. When an integer variable is used as a subscript, the maximum value is
217-1. The resulting absolute value of conversion from integer to real, or real to integer must be less than
248. The operands, as well as the result, of an integer multiplication or division must be less than 248 in
absolute value. If any of these restrictions are violated, the results are unpredictable. For integer addition
and subtraction, the full 60-bit word is used; the resulting absolute value must be less than 2s9.
See section 4 for restrictions or integers used in DO statements.
An integer variable occupies one word of memory.
/-"SsX

Examples:
ITEM1

NSUM

JSUM

N72

J

K2S04

REAL VARIABLES
A real variable is a variable that is typed explicitly or implicitly as described under Variables.
The value range is IO"293 to 10+322 with approximately 14 significant digits of precision. A real variable
occupies one word of storage.
Examples:
AVA R

SUM3

R E S U LT

TO TA L 2

B E TA

XXXX

/f"SS"v

1-12

60497800

A

DOUBLE PRECISION VARIABLES
Double precision variables must be typed by a type declaration. The value of a double precision variable can
range from IO"293 to 10+322 with approximately 29 significant digits of precision.
Double precision variables occupy two consecutive words of memory. The first word contains the more
significant part of the number and the second contains the less significant part.
Example:
IMPLICIT DOUBLE PRECISION(A)
DOUBLE PRECISION OMEGA.X.IOTA

00$$^

The variables OMEGA, X, IOTA and all variables whose first letter is A are double precision.

COMPLEX VARIABLES
Complex variables must be typed by a type declaration. A complex variable occupies two words of memory;
each word contains a real number. The first word represents the real part of the number and the second
represents the imaginary part.
Example:
COMPLEX ZERA,MU.LAMBDA

LOGICAL VARIABLES
V Logical variables must be typed by a type declaration. A logical variable has the value true or false and
occupies one word of memory.
/**P\

\
r

Example:
LOGICAL

_

L 3 3 , P R AV D A , VA L U E

A R R AY S

A FORTRAN array is a set of elements identified by a single name composed of one to seven letters and
digits beginning with a letter. Each array element is referenced by the array name and a subscript. The type
(^ of the array elements is determined by the array name in the same manner as the type of a variable is deter
mined by the variable name (see Variables in this section). The array name and its dimensions must be de
clared in a DIMENSION or COMMON statement or a type declaration. Arrays can have one, two, or three
dimensions.
The number of dimensions in the array is indicated by the number of subscripts in the declaration.
dimension STOR(6) declares a one-dimensional array of six elements

60497800

A

1-13

REAL STOR{3,7) declares a two-dimensional array of three rows and seven columns
LOGICAL STOR(6.6,3) declares a three-dimensional array of six rows, six columns and three planes
The entire array may be referenced by the unsubscripted array name when it is used as an item in an input/
output list, as an actual parameter, or in a DATA statement. In any other context, only the first element
of the array is implied by the unsubscripted, array name.
Example 1:
The array N consists of six values in the order: 10, 55, 11, 72, 91, 7
i*C5*^y

N(l)
N(2)
N(3)
N(4)
N(5)
N(6)

value 10
value 55
value 11
value 72
value 91
value 7

Example 2:
The two-dimensional array TABLE (4,3) has four rows and three columns.

Row 1
Row 2
Row 3
Row 4

Column 1

Column 2

Column 3

44
72

10
20
11
76

105
200
30
714

91

To refer to the number in row two, column three write TABLE(2,3).
TABLE(3,3) = 30 TABLE(1,1) = 44 TABLE(4,1) = 91
TABLE(4,4) would be outside the bounds of the array and results are unpredictable.
Example 3: ,' .

. PROGRAM VARDIM 
COMMON
■ '"' • ' -REAL
Y<6)X<4*3)
CALL IOTA 
CALL IOTA 
WRITE (6fl00) X*Y
100 FORMAT (* ARRAY X « *tl2E9„l»5X»*ARRAY Y * *6E9.1>
STOP
END
•
■
•
•
.
The program declares and references two arrays;' X is a two-dimensional'.array of 12 elements and Y
is a one-dimensional array of six elements.

1_14

60497800

A

SUBSCRIPTS
A subscript indicates the position of a particular element in an array. A subscript consists of a pair of
parentheses enclosing from one to three subscript expressions which are separated by commas. The subscript
follows the array name. A subscript expression can be any valid arithmetic expression. If the value of the
expression is not integer, it is truncated to integer.
If the number of subscript expressions is less than the number of declared dimensions, the compiler assumes
the omitted subscripts have a value of one. The number of subscript expressions in a reference must not
exceed the number of declared dimensions.
i*lip\

The value of a subscript must never be zero or negative. It should be less than or equal to the product
of the declared dimensions, or the reference will be outside the array. If the reference is outside the bounds
of the array, results are unpredictable.
The amount of storage allocated to arrays is discussed under DIMENSION declarations in section 3.
Valid subscript forms:
A(l.K)
B(l+2,J-3,6*K+2)
LAST(6)
ARAYD(1,3.2)
STRING (3*K*ITEM+3)

Invalid subscript forms:
ATLAS (0)
D(1 .GE. K)
A(,l) or A(I„K)

zero subscript causes a reference outside of the array
relational or logical expression illegal
commas can only be used to separate adjacent subscript expressions

Example:
Plane 1

Plane 2

Plane 3

CoM Col 2 Col 3

Col 1 Col 2 Col 3

Col 1 Col 2 Col 3

the single
subscript
NEXT (3):
represents
NEXT (3,1,1)

552

22

51

2

1

0

98

77

60

Row 2

3

207

85

100

Row 3

99

Row 1

NEXT (3,2)V-NEXT (2,2)
represents represents
NEXT (3,2,1) NEXT (2,2,1)

In the three-dimensional array NEXT when only one or two subscripts are shown, the remaining subscripts are
assumed to be one.

60497800 A

1-15

ARRAY STRUCTURE
Arrays are stored in ascending locations: the value of the first subscript increases most rapidly, and the value of
the last increases least rapidly.
/"""SIS

Example:
In an array declared as A(3,3,3), the elements of the array are stored by columns in ascending locations.
Plane 1
/■Ss?K

Col 1 Col 2 Col 3
Row 1
Row 2

A111 [-A121 i*A131
\
1
1
A211
A221
A231

j

Row 3

1 i

,
A311-1 A 3 2 1 J A331
Row 1
Row 2
Row 3

Plane 2
Col 1 Col 2 Col 3
A112 r A 1 2 2 r*A132
J
1
\
A212 t A222 , A232
\
1
\
A312-J A322-1 A332

Plane 3
Col 1 Col 2 Col 3

N*.
Row 1
Row 2

A113 r~A123 r-A133
1
\
\
A213
A223
A233

Row 3

A313-1 A323J A333

1

1

1

The array is stored in linear sequence as follows:

Element
A(l,l,l)
A(2,l,l)
A(3,l,l)
A(l,2,l)
A(2,2,l)
A(3,2,l)
A(l,3,l)
A(2,3,l)
A(3,3,l)
A(l,l,2)
A(2,l,2)
A(3,l,2)
A( 1,2,2)
A(2,2,2)

1-16

Location Relative
to first Element

10
11
12
13

Element
A(3,2,2)
A( 1,3,2)
A(2,3,2)
A(3,3,2)
A(l,l,3)
A(2,l,3)
A(3,l,3)
A( 1,2,3)
A(2,2,3)
A(3,2,3)
A(l,3,3)
A(2,3,3)
A(3,3,3)

Location Relative
to first Element
14
15
16
17
18
19
20
21
22
23
24
25
26

0*&fa\

^m$\

"%
60497800 A

To find the location of an element in the linear sequence of storage locations the following method can be
used:
Number of
Dimensions

Array
Dimension

Subscript

Location of Element
Relative to Starting Location

1

ALPHA(K)

ALPHA(k)

(k-1)XE

2

ALPHA(K.M)

ALPHA(k,m)

(k-1+KX(m-1) )XE

3

ALPHA(K,M,N)

ALPHA(k,m,n)

(k-1+KX(m-1+MX(n-1)))XE

K, M, and N are dimensions of the array.
k,m, and n are the subscript expression values of the array.
1 is subtracted from each subscript value because the subscript starts with 1, not 0.
E is length of the element. For real, logical, and integer arrays, E = 1. For complex and double
precision arrays, E = 2.
Examples:

Subscript

Location of Element
Relative to Starting Location

INTEGER ALPHA (3)

ALPHA(2)

(2-1)X1 = 1

REAL ALPHA (3,3)

ALPHA(3,1)

(3-1+3X(1-1))X1 =2

COMPLEX ALPHA (3,3,3)

ALPHA(3,2,1)

(3-1+3X(2-1+3X(1-1)))X2 = 10

jjp\

60497800 A

1-17

■ ^

^

0%

iffS^.

EXPRESSIONS AND ASSIGNMENT STATEMENTS

EXPRESSIONS
FORTRAN expressions are arithmetic, masking, logical and relational. Arithmetic and masking, expressions
yield numeric values, and logical and relational expressions yield truth values.

ARITHMETIC EXPRESSIONS
An arithmetic expression is a sequence of unsigned constants, variables, array elements, and function references
separated by operators and parentheses. For example,
(A-B)*F + C/D**E
is a valid arithmetic expression.
The FORTRAN arithmetic operators are:
+ addition
subtraction
* multiplication
/ division
** exponentiation
An arithmetic expression may consist of a single constant, variable, array element, or function reference. If X
is an expression, then (X) is an expression. If X and Y are expressions, then the following are expressions:
X +Y
X*Y
-X
+X
X-Y
X/Y

60497800

A

2-1

All operations must be specified explicitly. For example, to multiply two variables A and B, the expression
A*B must be used. AB, (A)(B), or A.B will not result in multiplication.
Value

Expression
3.78542

Real constant 3.78542

A(2*J)

Array element A (2*J)

BILL

Variable BILL

xTT

SQRT(5.0)
A+B

Sum of the values A and B

C*D/E

Product of C times D divided by E

J**I

Value of J raised to the power of I

(200 - 50)*2

300

-f**^*\\

EVALUATION OF EXPRESSIONS

The sequence in which an expression is evaluated is governed by the following rules, listed in descending precedence:
1. References to external functions are evaluated.
2. Arithmetic statement functions and intrinsic functions are expanded.

Ajfi^\

3. Subexpressions delimited by parentheses are evaluated, beginning with the innermost subexpressions.
4. Subexpressions defined by arithmetic, relational, and logical operators are evaluated according to the
following precedence hierarchy:
(exponentiation)
(division or multiplication)

/
+
GT. .GE. XT. .LE. .EQ. .NE.
.NOT.
.AND.
.OR.

(addition or subtraction)
(relational)

'e^\

(logical)
(logical)
(logical)
^SK

2-2

60497800 A

0*^>

5. Subexpressions containing operators of equal precedence are evaluated from left to right. However,
individual operations that are mathematically associative and/or commutative may be reordered by the '
compiler to perform optimizations such as removal of repeated subexpressions or improvement of
functional unit usage. The evaluation of the expression A/B*C is guaranteed to algebraically equal
AC -5- B, not A -h BC, but the specific order of evaluation here is indeterminate. Subexpressions
containing integer divisions are not reordered within the * / precedence level because the truncation
resulting from an integer division renders these operations non-associative.
Unary addition and subtraction are treated as follows:
+n the same as n
-n negate n
An array element (a subscripted variable) used in an expression requires the evaluation of its subscript. The
type of the expression in which a function reference or subscript appears does not affect, nor is it affected
by, the evaluation of the arguments or subscripts.
The evaluation of an expression having any of the following conditions is undefined:
Negative-value quantity raised to a real, double precision, or complex exponent
Zero-value quantity raised to a zero-value exponent
Infinite or indefinite operand (Appendix D)
Element for which a value is not mathematically defined, such as division by zero
If the error traceback option (T) is selected on the FTN control statement (section 10), the first three
conditions produce informative diagnostics during execution. If the traceback option is not selected, a mode
error message is printed (Appendix D).
In the case of invalid exponentiation, a diagnostic might be issued by one of the library routines ALOG, EXP, or
DEXP when the exponent is real, complex, or double precision, and the base is integer, real or double precision.
Two operators must not be used together. A*-B and Z/ + X are not allowed. However, a unary + or - can
be separated from another operator in an expression by using parentheses. For example,
A*(-B) andZ/(+X) Valid expressions
B*-A andX/-Y*z Invalid expressions
Each left parenthesis must have a corresponding right parenthesis.
Example:
(F + (X * Y) Incorrect, right parenthesis missing
(F + (X * Y)) Correct
Examples:
In the expression
A-B*C
B is multiplied by C, and the product is subtracted from A.

60497800

E

23

^^\

The expression A/B-C*D**E is evaluated as follows:
0^$$\

D is raised to the power of E.
A is divided by B.
C is multiplied by the result of D**E.
The product of C*D**E is subtracted from the quotient of A divided by B.
The expression -A**C is evaluated as 0-A**C; A is first raised to the power of C and the result is
then subtracted from zero.
The expression A*B*C may be evaluated as ((A*B)*C), ((A*C)*B) or (A*(B*C)), since the operator * is
associative.
The expression A**B**C is evaluated as ((A**B)**C), since the operator ** is not associative. ,**■*■■*
Dividing an integer by another integer yields a truncated result; 11/3 produces the result 3. Therefore,
when an integer expression is evaluated from left to right, J/K*I may give a different result than I*J/K. '^
Example:
I«4J

=

3K

=

J/K*I

2

J

I*J/K

}
I

3/2*4 = 4 4*3/2 - 6

An integer divided by an integer of larger magnitude yields the result 0.
' • *■%

Example:
N = 24 M = 27 K = 2
R/M*K
24/27*2 - 0

Examples of valid expressions:

3.14159
B + 16.427
(XBAR +(B(I,J+I,K) /3.0))
-

2-4

(

C

+

D E LTA

60497800

*

AERO)

A

^

(-B - SQRT(B**2-(4*A*C)))/(2.0*A)
GROSS - (TAX*0.04)
TEMP + V(M,AMAX1(A,B))*Y**C/ (H-FACT(K+3))

TYPE OF ARITHMETIC EXPRESSIONS

An arithmetic expression may be of type integer, real, double precision, or complex. The order of
dominance from highest to lowest is as follows:
Complex
/*"S\

Double Precision
Real
Integer
Table 2-1. Mixed Type Arithmetic Expressions with + - * / Operators
\.

2nd

1st^vjoperand
operand n^

Integer

Real

Double
Precision

Complex

Typeless
Operand

Integer

Integer

Real

Double
Precision

Complex

Integer

Real

Real

Real

Double
Precision

Complex

Real

Double
Precision

Double
Precision

Double
Precision

Double
Precision

Complex

Double
Precision

Complex

Complex

Complex

Complex

Complex

Complex

Typeless
Operand

Integer

Real

Double
Precision

Complex

Integer

When an expression contains operands of different types, type conversion takes place during evaluation. Before each
operation is performed, operands are converted to the type of the dominant operand. Thus the type of the value of
the expression is determined by the dominant operand. For example, in the expression A*B-I/J, A is multiplied by
B, I is divided by J as integer, converted to real, and subtracted from the result of A multiplied by B.
Octal and Hollerith constants, as well as references to shifting or masking functions, are typeless operands. When
these operands are used, type is not converted. When these operands are the only operands in an expression, they
are treated as if they were type integer, and the result is type integer.
Variables into which Hollerith constants are stored should be of type INTEGER to ensure proper results when used
in subsequent arithmetic or logical expressions. For example, if the variables are REAL, expressions involving these
variables are evaluated using floating point arithmetic.
60497800 E

2-5

EXPONENTIATION
/""SSi"!

In exponentiation, the following types of base and exponent are permitted:
Base

Exponent

Integer
Real

Integer, Real, Double Precision, Complex, Typeless
Integer, Real, Double Precision, Complex, Typeless

Double Precision

Integer, Real, Double Precision, Complex, Typeless

Complex

Integer, Typeless

Typeless

Integer, Real, Double Precision, Complex, Typeless

.f**"StN

The exponentation is evaluated from left to right. The expression A**B**C is evaluated, as ((A**B)**C)
In an expression of the form A**B the type of the result is determined as follows:
Type of A

Type of B

Integer

Integer
Real
Double

Real

Type of Result
of A**B

Complex .
Typeless

Integer
Real
Double
Complex
Integer

Integer
Real
Double

Real
Real
Double

Complex
"Typeless

Cpmplex
Real -,'.

Integer
Real
Double
Complex
Typeless

Double
Double
Double

Complex

Integer
Typeless

Complex
Complex

Typeless

Integer
Real ,
Double

Integer* .
Real
Double

Cornplex >
Typeless

Complex
Integer

Double

Complex
Double

The expression -2**2 is equivalent to 0-2**2. An exponent may be an expression. The following examples are all
acceptable.
B**2.

A negetive exponent must be enclosed in parentheses:

B**N

A**(-B)
NSUM**(-J)

B**(2*N-1)
(A+B)**(-J)
2-6

60497800 D
**f*^a\

When the exponent is of a type other than integer, exponentiation is performed by means of a call to FORTRAN
Common Library routines. The value of the result in these cases is determined according to the formula:
xy = ey^*^\

2-8

60497800

A

Examples:
REAL A
A . G T. 7 2 0

DOUBLE PRECISION BILL, PAY
BILL .LT. PAY

INTEGER I,J
I.EQ.J(K)

A+B.GE.Z**2
(I).EQ.(N*J)

300.+B.EQ.A-Z
B.LE.3.754

.5+2. .GT. .8+AMNT
Z . LT. 3 5 . 3 D + 5

Examples of invalid expressions:
JPN

A .GT. 720 .LE. 900

2 relational operators must not appear in a relational expression

B .LE. 3.754 .EQ. C

LOGICAL EXPRESSIONS
L. op L, op L, op ...L,
L,...Ln

logical operand or relational expression

op

logical operator

A logical expression is a sequence of logical constants, logical variables, logical array elements, or relational
expressions separated by logical operators and possibly parentheses. After evaluation, a logical expression
has the value true or false.
Logical operators:
.NOT. or .N.

logical negation

.AND. or ,A.

logical multiplication

.OR. or .0.

inclusive OR

The enclosing decimal points are part of the operator and must be present.

60497800 A

2-9

The logical operators are defined as follows (p and q represent LOGICAL expressions):
.NOT.p

If p is true, .NOT.p has the value false. If p is false, .NOT.p has the
value true.

p.AND.q

If p and q are both true, p.AND.q has the value true. Otherwise, false.

p.OR.q

If either p or q, or both, are true then p.OR.q has the value true. If both
p and q are false, then p.OR.q has the value false.
Truth Table
p

q

p .AND. q

p .OR. q

.NOT. p

T

T

T

T

F

T

F

F

T

F

F

T

F

T

T

F

F

F

F

T

If precedence is not established explicitly by parentheses, operations are executed in the following order:
. N O T.

.AND.

.OR.

Example:

PROGRAM L0GIC,(0UTPUTtTAPE6=0UTPUT)
C

c
c
c

THIS PROGRAM PRINTS OUT A TRUTH TABLE FOR LOGICAL
OPERATIONS WITH P AND Q
LOGICAL P»Q»L0GNEG,L0GMLT»L0GSUM»TABLE(4»2)
DATA TABLE/.TRUE.t.TRUE.♦.FALSfc.*.FALSE.».TRUE.».FALSE.t.TRUE.9
1.FALSE./
WRITE(6»10)
1 0 F 0 R M AT < 6 1 H 1 P Q . N O T. Q P . A N D Q P . 0
1R. Q /10X» 51UH-))
DO 20 I = l*«f

>**^v

/*""*s*\

LOGNEG = .NOT. TAbLE
LOGSUM = TA6LEU»1) .OR. TABLE(I»2>
20 WRITE(6»30) (TABLE(I 9J),J=l»2>t LOGNEG, LOGMLT* LOGSUM
3 0 F O R M AT U H 0 * 5 ( L 1 D )
STOP
END

2-10

60497800 A
''""a^k

Output:
p
0SS,

U

. N O T.

Q

P

.AND

U

P

.OK.

T

T

F

T

T

T

F

T

F

T

F

T

F

F

T

F

F

T

F

F

Q

The operator .NOT. which indicates logical negation appears in the form:
.NOT. p
.NOT. can appear in combination with .AND. or .OR. only as follows (p and q are logical expressions):
p .AND..NOT. q
p .OR..NOT. q
p .AND.(.NOT. q )
p .OR.(.NOT. q )
.NOT. can appear adjacent to itself only when the second operator is enclosed in parentheses, as in .NOT. (.NOT.p).
Two logical operators can appear in sequence only in the forms .OR..NOT. and .AND..NOT.
Valid logical expressions, where M, L, and Z are logical variables, are:
.NOT.L
.NOT.(X .GT. Y)
X .GT. Y .AND..NOT.Z
(L) .AND. M
Invalid logical expressions, where P and R are logical variables, are:
.AND. P .AND. must be preceded by a logical expression
K .EQ. 1 .OR. 2 .OR. must be followed by a logical expression
P .AND. .OR.R .AND. always must be separated from .OR. by a logical expression

60497800 A
>#sv

2-11

Examples:
A, X, B, C, J, L, and K are type logical.
Expression

h§^;i^i^

A .AND. .NOT. X

-:. A|^A;.:;^i;N :|;^Z-^H;10-3 ©f

.NOT.B

S»^l|g§^

A.AND.C

HSSiiiSJSSSS^SB

J.OR.L.OR.K

iiiiiii§#gig^5^^ig

Examples:
B-C < A < B+C is written asB-C .LE. A .AND. A .LE. B+C
FICA >176. andPAYNB = 5889. is written FICA .GT. 176. .AND. PAYNB .EQ. 5889.
MASKING EXPRESSIONS
Masking expressions are similar to logical expressions, but the elements of the masking expressions are any type
of variable, constant, or expression other than logical.
Examples:
J .AND. N

.NOT. 55

,NOT. (B)

KAY .OR. 63

Masking operators are identical in appearance to logical operators but meanings differ. In order of
dominance from highest to lowest, they are:
.NOT. or .N.

Complement the operand

.AND. or .A.

Form the bit-by-bit logical product (AND) of two operands

.OR. or .0.

Form the bit-by-bit logical sum (OR) of two operands

/fSofev

The enclosing decimal points are part of the operator and must be present. Masking operators are
distinguished from logical operators by non-logical operands.
Examples:
Expression
B .OR. D

B .0. D

A .AND. .NOT. C

A .A. .N. C

BILL .AND. BOB

BILL..A. BOB

I .OR. J- .OR. K .OR. N

I .0. J .0. K .0. N .

( . N O T. ( . n o t . ( , : n o t . A .OR. B ) ) )

2-12

/r*^\

Alternative Form

'*t*^?X

(.N.(.N.(.N. A.OR. B)))

60497800 A

The operands may be any type variable, constant, or expression (other than logical).
■

Examples:

0m\
\

TA X
.AND.
INT
. N O T.
55
734 .OR. 82

rA

.AND.

7B
7 B. OERx. t rCa cLt o g ti ch ae l sl uom
w o fo rt dh e r c o 6n t e bn it tss o f o B
f aAn d C
M . A N D . . N O T. 7 7 B C l e a r t h e l o w o r d e r 6 b i t s o f M .

,***S\

v In masking operations operands are considered to have no type. If either operand is type COMPLEX,
operations are performed only on the real part. If the operand is DOUBLE PRECISION only the most
0$zs significant word is used. The operation is performed bit-by-bit on the entire 60-bit word. For simplicity,
V only 10 bits are shown in the following examples. Masking operations are performed as follows:
^ J = 0 1 0 1 0 111 0 1 a n d I = 11 0 0 11 0 1 0 1
J .AND. I ■ '
V The bit-by-bit logical product is formed
^•N

J

0 1 0 1 0 111 0 1

■/■_ , '■,

I 1100110101

0100010101 Result after masking
J .OR. I
The bit-by-bit logical sum is formed
J 0101011101
I 1100110101
101111101 Result after masking
.NOT. Complement the operand
ifs^V

.NOT. I
I 1100110101
0011001010 Result after masking
.NOT. must not immediately precede .AND. or .OR.

0*&S

60497800

A

2-13

,
PRINT i

^3k£V

2 FORMAT <3A1Q,I1>
3 READ 2,LNAME,FNAHE,ISTATE,KST0P
IFCKSTOP.EQ.DSTCP
C IF FIRST TWO CHARACTERS OF ISTATE NOT EQUAL TO CA REA0 NEXT CARO
IFf(ISTATE»AND.77770000000000000000B).NE.(2HCA.ANOo777700000000000
KOOO00B)) GO TO 3
11 F O R M AT < 5 X , 2 A 1 0 >
10 PRINT 11,LNAM6,FNAME
GO TO 3
END

ASSIGNMENT STATEMENTS
An assignment statement evaluates an expression and assigns this value to a variable or array element. The
statement is written as follows:
v = expression
v is a variable or an array element

2-14

60497800 A

The meaning of the equals sign differs from the conventional mathematical notation. It means replace the
value of the variable on the left with the value of the expression on the right. For example, the assignment
statement A=B+C replaces the current value of the variable A with the value of B+C.
ARITHMETIC ASSIGNMENT STATEMENTS
7
v = arithmetic expression

Replace the current value of v with the value of the arithmetic expression. The variable or array element
can be any type other than logical.
Examples:
A=A+1

replace the value of A with the value of A + I

N=J-100*20

replace N with the value of J-100*20

WAGE=PAY-TAX

replace WAGE with the value of PAY less TAX

VAR=VALUE+(7/4)*32

replace the value of VAR with the value of VALUE+ (7/4)*32

B(4)=B(1)+B(2)

replace the value of B(4) with the value of B(l) + B(2)

If the type of the variable on the left of the equals sign differs from that of the expression on the right, type
conversion takes place. The expression is evaluated, converted to the type of the variable on the left, and
then replaces the current value of the variable. The type of an evaluated arithmetic expression is
determined by the type of the dominant operand. Below, the types are ranked in order of dominance from
highest to lowest:
Complex
Double Precision
Real
Integer
In the following tables, if high order bits are lost by truncation during conversion, no diagnostic is given.

J0S\

60497800 A

2-15

'*^i\

>*"*S\

CONVERSION TO INTEGER

Value Assigned

Example

Value of 1 FORM
After Evaluation
r5$"N

Integer = Integer

Value of integer
expression re
places v.

Integer = Real

Value of real
expression, trun
cated to 48-bit

IFORM = 10/2

IS^Hl^^^^^^^S

integer, replaces
v.
Integer = Double Precision

Value of double

IFORM = 3141.593D3

3141593

precision expres
sion, truncated to
48-bit integer,
replaces v.

9St^UlU^S&^fMl8Si filliliHBiiiift ^^Si^^^BMii^K

Blii^iiiiiiiBi
p||^^i|i|ii|§i

;S^Bitl9^S^S^S

CONVERSION TO DOUBLE PRECISION

Double Precision = Integer

Value Assigned

Example

Value of integer
expression, trun
cated to 48 bits,
is converted to
real and replaces
most significant

SUM = 7*5

Value of SUM
After Evaluation
35.D0

part. Least sig
nificant part set
toO.
Double Precision = Real

Value of real
expression re
places most
significant part;
least significant
part is set to 0.

2-16

IIBttl^Sifili^iBlIililSSiS^M

15.D0

f fi S S v ^ i fi i i R l l ^ ^ ^ ^ i S ^ ^ ?
^i^%y;::H':^y-;)'^

60497800 A

CONVERSION TO DOUBLE PRECISION (CONTINUED)
Value of SUM
After Evaluation

Value Assigned

Example

Double Precision
= Double Precision

Value of double

SUM = 7.322D2 - 32.D -1

7.29D2

Double Precision = Complex

Value of real

SUM = (3.2,7.6)+ (5.5,1.0)

8.7D0

precision expres
sion replaces v.

part of complex
expression re
places v. Least
significant part
is set to 0.

CONVERSION TO COMPLEX

! Complex-3 Integer

Value of AFORM
After Evaluation

Value Assigned

Example

Value of integer

AFORM=2+3

(5.0,0.0)

AFORM=2.3 + 7.2

(9.5,0.0)

AFORM = 20D0 + 4.4D1

(64.0,0.0)

AFORM = (3.4,1.1) + (7.3,4.6)

(10.7,5.7)

expression, trun
cated to 48 bits,
is converted to
real, and replaces
real part of v.
Imaginary part is
set to 0.
Complex = Real

Value of real
expression re
places real part
ofv. Imaginary
part set to 0.

Complex = Double Precision

Most significant
part of double
precision expres
sion replaces real
part ofv. Imag
inary part set to
0.

Complex = Complex

Value of complex
expression replaces
variable.

60497800 A

2-17

CONVERSION TO REAL

Real = Integer

Value of AFORM
After Evaluation

Value Assigned

Example

Value of integer

AFORM =200+ 300

500.0

expression, trun
cated to 48 bits,
is converted to
real and replaces
V.

Real = Real

Value of real
expression re
places V.

AFORM = 2.5+ 7.2

9.7

Real = Double Precision

Value of most
significant part
of expression re

AFORM = 3421.D - 04

.3421

AFORM = (9.2,1.1}- (2.1,5.0) .

7,1

<<*K§\

places v.
:! Real % Complex
i*
■'
'
'^

Value of real
part of complex/
.expression re
places v.

1

y

1)

LOGICAL ASSIGNMENT
<"**»S^

Logical variable or array element = Logical or relational expression

>*3ftX

Replace the current value of the logical variable or array element with the value of the expression.
Examples:
LOGICAL L0G2
1 = 1
L0G2 = I .EQ.O

LOG2 is assigned the value .FALSE, because h*0
LOGICAL NSUM.VAR
BIG = 200.
VAR = .TRUE.
NSUM = BIG .GT. 200. .AND. VAR

2-18

60497800 A

/^\

i

NSUM is assigned the value .FALSE.
0$B\

jf|S5\

LOGICAL A,B,C,D,E,LGA,LGB,LGC
REAL F.G.H
A = B.AND.C.AND.D
A = F.GT.G.OR.F.GT.H
A = .NOT.(A.AND..NOT.B).AND.(C.OR.D)
LGA = .NOT.LGB
LGC = E.OR.LGC.OR.LGB.OR.LGA.OR.(A.AND.B)

MASKING ASSIGNMENT

v = masking expression

Replace the value of v with the value of the masking expression, v can be any type other than logical. No
type conversion takes place during replacement. If the type is double precision or complex, the value of the
expression is assigned to the first word of the variable; and the least significant or imaginary part set to
zero.
Examples:
B = D .AND. Z .OR. X
SUM - (1.0,2.0) .OR. (7.0,7.0)
NAME - INK .OR. JAY .AND. NEXT
J(3) =- N .AND. I
A•- B.OR. (C.AND. Z)

INTEGER I,J,K,L,M,N(16)
REAL B,C,D,E,F(15)
N(2) •= I.AND.J
B - C.AND.L
F(J) - I.OR..NOT.L.AND.F(J)
I - . . N O T. I
N(l) - I.OR.J.OR.K.OR.L.OR.M

MULTIPLE ASSIGNMENT

V, = Vo =

v = expression

/?$^y

60497800 A

2-19

Replace the value of several variables or array elements with the value of the expression. For example,
X = Y = Z= (10 +2)/SUM(l) is equivalent to the following statements: ^
Z
Y
X

=

(10

+

=

2)/SUM(l)
'

•

Z

-

r
"....,,'_",

Y

'

^

The value of the expression is converted to the type of the variable or array element during each
replacement.
Examples:

^N
/^$\

N S U M : - B S U M - I S U M - TO TA L = 1 0 . 5 ~ 3 . 2

1,. TOTAL is assigned the value 7.3
2.. >JSUM is ^assigned, the value 7
/ 3; 3SUMis; assigned the value 7.0 - * !

1

4. NSJJM is. assigned the value 7
Multiple assignment is legal in .all types of! assignment statements.

^S^rv

ytC*^\

2-20

60497800

A

SPECIFICATION STATEMENTS

J0$\

Specification statements are non-executable; they define the type of a variable or array, specify the amount
of storage allocated to each variable according to its type, specify the dimensions of arrays, define methods
of sharing storage, and assign initial values to variables and arrays. The specification statements are:
IMPLICIT

Tte IMPLICIT statement must precedeJother/specification statements.

Type
DIMENSION
0$t$$?\

COMMON

If any of these statements appears after the first executable statement or
statement function definition, the specification statement is ignored and a
fatal diagnostic is printed.

EQUIVALENCE
EXTERNAL

ievei;'
The DATA statement, which is not a specification statement, is also described in this section. The DATA state
ment must follow all other specification statements except statement function definitions and FORMAT statements;
it can occur after the first executable statement.

TYPE STATEMENTS
A type statement defines a variable, array, or function to be integer, real, complex, double precision, or logical.
An explicit type statement can be used to supply dimension information. The word TYPEmay be used as a
prefix.
In the absence of an explicit type statement, the type of a symbolic name is implied by the first character
of the name: I, J, K, L, M, or N imply type integer and any other letter implies type real, unless ah
IMPLICIT statement is used to change this normal implied type.
Basic external and intrinsic functions are implicitly typed, and need not appear in a type statement in the
user's program. The type of each library function is listed in section 8.

EXPLICIT TYPE DECLARATIONS
There are five explicit type statements: INTEGER, REAL, COMPLEX, DOUBLE PRECISION, and LOGICAL.
INTEGER

n
60497800 A

INTEGER name.,1 name0 ,..
..name n
2

3-1

/*S"v

The symbolic names listed are declared as type integer.
Example:
INTEGER SUM, RESULT, ALIST

>f*St^*\
I

The variables SUM, RESULT and ALIST are all declared as type integer.

REAL
REAL name.,
name„n
1 name.,,...,
2

The symbolic names listed are declared as type real.
Example:
REAL NEXT<7), ITEM

NEXT is declared as an array with 7 real elements, and ITEM is declared as a real variable.

COMPLEX
/

COMPLEX name1, name2,..., namen

The symbolic names listed are declared as type complex.
Example:

/tUe^.

COMPLEX ALPHA, NAM, MASTER, BETA

The variables ALPHA, NAM, MASTER, BETA are declared as type complex.

y*=^£y

DOUBLE PRECISION
7
DOUBLE PRECISION name,,
name0,...,
namen
l
2

^*^?s

The symbolic names listed are declared as type double precision. DOUBLE can be used instead of
DOUBLE PRECISION.

^

3-2

60497800 A

Jf»S

Example:
DOUBLE PRECISION ALIST, JUNR, BOX4
The variables ALIST, JUNR, BOX4 are declared as type double precision.
LOGICAL
LOGICAL name.,
1 ' name,,,...,
2'
'namen

The symbolic names listed are declared as type logical.
Example:
LOGICAL P,Q,NUMBR4

The variables P, Q and NUMBR4 are declared as type logical.

IMPLICIT TYPE STATEMENT
7

IMPLICIT type, (ac, acn) type^ac, acn)
0$&K

type

LOGICAL, INTEGER, REAL, DOUBLE PRECISION, DOUBLE, or COMPLEX

aCj, Single alphabetic characters, or ranges of characters represented by the first and last character
separated by a minus sign.

0S$s

This statement specifies the type of variables, arrays, and functions beginning with the letters ac. Only one
IMPLICIT statement may appear in a.program unit, and it must precede other specification statements. An
IMPLICIT statement in a function or subroutine .subprogram affects the type associated with dummy arguments
and the function name, as well as other variables in the subprogram.
Explicit typing of a variable name or array element ih a type statement or FUNCTION statement overrides an

ILLICIT
0^\

s p e c i fi c a t i o n .

/'

Example 1:
COMPLEX FUNCTION RHO (CDHS)
IMPLICIT INTEGER (A-D.R)
REAL ASUM
ASUM-BOR + ROR * ANEXT

60497800 A

3-3

,£*3!5\

E x a m p l e 2 : , _ , ; , - . - '■ _ • ; , \ V , ,■. . - ' , , , ' . . / - * < . * ' / , ' ' - " • "
tHPUfclT tNTEOER CA-fiH)

DIMENSION
OOHMON

"E>t3*4?
All>tBfCfO»

^
}

Ft6»H

EQUIVALENCE 
NANE:tISt/VLISft/AtBtCfqt£»Ft6tH»I

^

00 I J-m,U 12
WRITE (6»yU$T>
:'

end

■'

".":"•

The arrays A and E and the variables B» C, D, F, H, and I are of type' integer; G is type real. ^

DIMENSION STATEMENT
/rfS^sv

r

DIMENSION name,(d,),...,namen(dn)

dj Array declarator, 1-3 integer constants separated by commas. If name is a dummy param- "^
eter, d can be 1-3 integer constants or integer dummy parameters intermixed.
namej

Symbolic

name

of

an

a r r a y.

^i

The DIMENSION statement is a nonexecutable statement which defines symbolic names as array names and
specifies the bounds of the array. More than one array can be declared in a single DIMENSION statement. "^
Dummy parameter arrays specified within a procedure subprogram can have adjustable dimension specifications.
(A further explanation of adjustable dimension specifications appears under Procedure Communication in section
7 ) . W i t h i n t h e s a m e p r o g r a m u n i t , o n l y o n e d e fi n i t i o n o f a n a r r a y i s p e r m i t t e d . ' " ^
The number of computer words reserved for an array is determined by the type of the array and the product
of the subscripts. For real, integer and logical arrays, the number of words in an array equals the number of "*^
elements in the array. For complex and double precision arrays, the number of words reserved is twice the
product of the subscripts. No array can exceed 131,071 words.
Example:
COMPLEX
DIMENSION BETA (2,3)

B E TA

^

BETA is an array containing six elements; however, BETA has been defined as COMPLEX and two words /"s3^
are used to contain each complex element; therefore, 12 computer words are reserved.
>*S!s*\

3-4

60497800

A

Example:
REAL NIL

DIMENSION NIL (6,2,2)
These statements could be combined into one statement with 24 words reserved for array NIL:
REAL NIL (6,2,2)

Example:
DIMENSION ASUM(10,2)

DIMENSION ASUM (3), VECTOR (7,7)
The second specification of ASUM is ignored, and an informative message is printed. The specification for
VECTOR is valid and is processed.

COMMON STATEMENT
C O M M O N / i N . vn

COMMON/blkname^v,, . . . ^/blknanr^/v.., . . .vn. . ./blknamen/v1, . . . ,vp

C O M M O N1

blkname;
/fRv

v

'

'

vn

Block name or number. A block name is a symbolic name of 1-7 letters
or digits beginning with a letter. A block number is 1-7 digits; it must
not contain any alphabetic characters. Leading zeros are ignored. 0 is a
valid block number. The same block name or number can appear more
than once in a COMMON statement or a program unit; the loader links all
variables in blocks having the same name or number into a single labeled
common block.
Variable or array name which can be followed by constant subscripts
that declare the dimensions. The variable or array names are assigned to
blkname. The COMMON statement can contain one or more block
specifications.

0Sfc\

60497800 A

3-5

f**§S^k

y<*"$^\

// Denotes a blank common block. If blank common is the first block in the
statement, slashes can be omitted.

/■*s*\

Variables or arrays in a main program or subprogram can share the same storage locations with variables or
arrays in other subprograms by means of the COMMON statement. Variables and array names are stored in the
order in which they appear in the block specification.
COMMON is a non-executable statement. See section 1 for proper location of COMMON statements relative
to other statements in the program unit. The COMMON specification provides up to 125 storage blocks that ^\
can be referenced by more than one subprogram. A block of common storage can be labeled by a name or a
number. A COMMON statement without a name or number refers to a blank common block. Variables and
array elements can appear in both COMMON and EQUIVALENCE statements. A common block of storage can /^
be extended by an EQUIVALENCE statement; however, no common block can exceed 131,071 words..
All members of a common block must be allocated to the same level of storage; a fatal diagnostic is issued if /^m)
conflicting levels are declared. If only some members of a common block are declared in a LEVEL statement,
the remaining members of that common block are allocated automatically to the same level, and an informative
diagnostic
is
issued.
"^
Block names can be used elsewhere in the program as variable or array names, and they can be used as.sub
program names. Numbered common is treated like labeled common. Data stored in common blocks by the '^
DATA statement is available to any subprogram using these blocks.
The length of a common block, other than blank common, must not be increased by a subprogram using /^
the block unless the subprogram is loaded first.
Example:
C0MM0N/BLACK/A(3)
D ATA A / l . , 2 . , 3 . /
COMMON ; 1,00/1 (4.)
DATA l/4;5"r,B,7/

Data may not be entered into blank common blocks by the DATA declaration.
The COMMON statement may contain one or more block specifications:
C O M M O N / X / R A G , T A G / A P P A / Y, Z , B ( 5 )

^

RAG and TAG are placed in block X. The array B and Y.Z are placed in block APPA.
Any number of blank common specifications can appear in a program. Blank, named and numbered
common blocks are cumulative throughout a program, as illustrated by the following example:
C O M M O N A , B , C / X / Y, Z , D / / W, R

COMMON M,N/CAT/ALPHA,BINGO//ADD

♦
.C
l^fM
•S
tV

3-6

60497800

A

These statements have the same effect as the single statement:
C O M M O N A , B , C , W, R , M , N , A D D / X / Y, Z , D / C AT / A L P H A , B I N G O

Within subprograms, dummy arguments are not allowed in the COMMON statement.
If dimension information for an array is not given in the COMMON statement, it must be declared in a
type or DIMENSION statement in that program unit.
Examples:
/f*S5s

C0MM0N/DEE/Z(10,4)
Specifies the dimensions of the array Z and enters Z into labeled common block DEE.
COMMON/BLOKE/ANARAY,B,D
DIMENSION ANARAY(10,2)

ZfpN

COMMON/Z/X,Y,A
REAL X(7)
C0MM0N/HAT/M,N,J(3,4)
DIMENSION J(2,7)
In the last example. J is defined as an array (3.4) in the COMMON statement. (2,7) in the
DIMENSION statement is ignored and an error message is printed.
The length of a common block, in computer words, is determined by the number and type of the variables
and array elements in that block. In the following statements, the length of common block A is 12 computer
words. The origin of the common block is Q( 1).

/*$S\

REAL Q,R
COMPLEX S
C0MM0N/A/Q(4),R(4),S(2)

Block A
origin

Q(l)
Q(2)
Q(3)
Q(4)
R(l)
R(2)
R(3)
R(4)
S(
1)
real
part
S( 1) imaginary part
S(2)
real
part
S(2)
imaginary
part

If a program unit does not use all locations reserved in a common block, unused variables can be inserted
in the COMMON declaration to ensure proper correspondence of common areas.

60497800

A

%

3_7

Example:
COMMON/SUM/A,B,c,D

main

C0MM0N/SUM/E(3)

■'

program

,D

subprogram

^

If the subprogram does not use variables A,B, and C, array E is necessary to space over the area
reserved by A,B, and C.
Alternatively, correspondence can be ensured by placing unused variables at the end of the common list.
COMMON/SUM/D,A,B,C

main

program

sas^

COMMON/SUM/D subprogram
If program units share the same common block, they may assign different names and types to the members "^
of the block; but the block name or numbers must remain the same.
Example:

/«%

COMPLEX C
C0MM0N/TEST/C(2O)

^

The block named TEST consists of 40 computer words.
The subprogram may use different names for variables and arrays as in: 1
SUBROUTINE
COMPLEX
C0MM0N/TEST/A(10),G(10),K(10)

ONE
A

J
|

The length of TEST is 40 words. The first 10 elements (20 words) of the block represented by A are /4£^j
complex elements. Array G is the next 10 words, and array K is the last 10 words. Within the
subprogram, elements of G are treated as floating point; elements of K are treated as integer.

EQUIVALENCE STATEMENT
7
/

!

EQUIVALENCE (glist--) (glistn)

Each glist| consists of two or more variables, array elements, or array names, separated by commas.
Array elements must have integer constant subscripts. Dummy arguments must not appear in an equivalence „r^\
statement. Equivalenced variables must be in the same level of storage. If members of an equivalence class are
assigned to conflicting storage levels, a fatal error results. If a member of an equivalence class is declared in a
LEVEL statement, the other members of the class are automatically allocated to the same level, and an informa- z-*^
tive diagnostic is issued.
EQUIVALENCE is a non-executable statement and must appear before all executable statements in a pro- ^s^
g r a m u n i t . I f i t a p p e a r s a f t e r t h e fi r s t e x e c u t a b l e s t a t e m e n t , a f a t a l d i a g n o s t i c i s p r i n t e d . )
*c^\

3-8

60497800

A
**Si\

0^:

^^^ EQUIVALENCE assigns two or more variables in the same program unit to the same storage location (as
f^ opposed to COMMON which assigns two variables in different program units to the same location). Variables
or array elements not mentioned in an EQUIVALENCE statement are assigned unique locations.
^^

Example:
DIMENSION JAN(6),BILL(10)

f^

E Q U I VA L E N C E

( I R O N , M AT, Z E R O ) ,

(JAN(5),BILL(2)),(A,B,C)

The variables IRON. MAT and ZERO share the same location, the fifth element in array JAN and the
^ second element in array BILL share the same location, and the variables A,B and C share the same location.
Wh.en an element of an array is referred to in an EQUIVALENCE statement, the relative locations of the
^ other array elements are, thereby, defined also.

0^\

Example:
DIMENSION Y(4), B(3,2)

0$>\

EQUIVALENCE (Y(1),B(1,2)), (X,Y(4))
This EQUIVALENCE statement causes storage to be shared by the first element in Y and the fourth
element in B and, similarly, the variable X and the fourth element in Y. Storage will be as follows:

B(l,l)
B(2,l)
B(3,l)
B(l,2) Y(l)
B(2,2) Y(2)
B(3,2) Y(3)
Y(4)

X

The elements of a glist constitute an equivalence group. When an equivalence group contains an element that
appears in another equivalence group, these groups are merged and their elements constitute an equivalence
class.
Example:
DIMENSION A(100)
EQUIVALENCE (A.B), (C,A(50J), (D,E), (F,C)

These statements establish the following equivalence groups:

{A,B}, Ja,C}, {C,F}, JD,E[
and the following equivalence classes:

{a,b,c,f}, |d,e}
The statement EQUIVALENCE (A,B),(B,C) has the same effect as EQUIVALENCE (A,B,C).

60497800

A

3.9

^ 3 \

Wjtjiii^pte .it/&a_ssurfted tojbe 1. ., : _. . .^ .'• ':,, /..,;.-.".-''.]"'.,-,,,' ••«- ,': V1 ;\:,- :■.•-*•;.
Di'MENSiqN.LZEBRACiQ,) .'• . .,••'"'>*]' ."'-.,', >'r j -'^ ' ' , \,'\. • , -■ •! J " •- *.. l' -'
E Q U I VA L E N C E ( Z E B R A , T I G E R ) ' " . -

•**^%\

means the same as the statements:.
DIMENSION
EQUIVALENCE (ZEBRA(l),TIGER)

ZEBRA(10)

,

'

^

A logical, integer, or real entity equivalenced to a double precision or complex entity shares the same location yfi^\
as the real or most significant part of the complex or double precision entity. If an array with single-word
elements is equivalenced to an array with double-word elements, the single word elements are stored contiguously,
so that each half of a double-word element is equivalent to a different single-word element. **%
An array with multiple dimensions may be referenced with a single subscript. The location of the element
in
the
array
may
be
determined
by
the
following
method:

*s\

DIMENSION A(K,M,N)

The

position

of

element

A(k,m,n)

is

given

by:

>

A(k+K*(m-1+M*(n-1)))*E)
E is 1 if A is real, integer or logical; E is 2 if A is complex or double precision.
Example:
DIMENSION AVERAG(2,3,4),TERM(7)
EQUIVALENCE (AVERAG(8),TERM(2))

Elements AVERAG (2,1,2) and TERM(2) share the same locations.
Two or more arrays can share the same storage locations.
Example:
DIMENSION ITIN(10,10),TAX(100)
EQUIVALENCE(ITIN(1),TAX(1))

500 READ (5,40)ITIN (1)

600 READ (5,70) TAX (1)

■***^\
3~10

60497800

D

J*lpsv

The EQUIVALENCE declaration assigns the first elements of arrays ITIN and TAX to the same
location. READ statement 500 stores the array ITIN in consecutive locations. Before READ
statement 600 is executed, all operations involving ITIN should be completed; as the values of array
TAX are read into the storage locations previously occupied by ITIN.
Lengths of arrays need not be equal.
Examples:
DIMENSION ZER01(10,5),ZER02(3,3)

equivalence ( zeroi , ZER02) is a legal EQUIVALENCE statement
EQUIVALENCE (ITEM,TEMP)

jf$S^

The integer variable ITEM and the real variable TEMP share the same location; therefore, the same
location may be referred to as either integer or real. However, the integer and real internal formats
differ; therefore the values will not be the same.

EQUIVALENCE AND COMMON
Variables, array elements, and arrays may appear in both COMMON and EQUIVALENCE statements. A
common block of storage may be extended by an EQUIVALENCE statement.
Example:
COMMON/HAT/A(4),C
DIMENSION B(5)
EQUIVALENCE (A(2),B(1))

Common block HAT will extend from A(l) to B(5):
/ H AT /

Origin

/fS^v

A(l)
A(2)
A(3)
A(4)
C

B(D
B(2)
B(3)
B(4)
B(5)

EQUIVALENCE statements which extend the origin of a common block are not allowed, however.
Example:
COMMON/DESK/E,F,G
DIMENSION H(4)
EQUIVALENCE (E,H(3))

60497800
/*I"SN

A

3 - 11

The above EQUIVALENCE statement is illegal because H(l) and H(2) extend the start of the common
block DESK:
/DESK/
Origin

<**s^v

H(l)
H(2)
H(3)
H(4)

An element or array is brought into COMMON if it is equivalenced to an element in COMMON, Two elements
in COMMON must not be equivalenced to each other.
Examples:
COMMON A,B,C
EQUIVALENCE (A,B)

illegal
/«**^k

COMMON /HAT/ A(4),C /X/ Y,Z
E Q U I VA L E N C E ( C , Y ) i l l e g a l

As stated in section 1, the result of indexing outside of array bounds is unpredictable. Since the compiler attempts
to minimize the size of equivalence classes in common blocks to the smallest subset of the block that includes all
members named in associated EQUIVALENCE statements, all members of a common block will not necessarily be
considered as one array. The programming practice of intentionally referencing locations outside a known array
can produce unintentional results as shown in the following example.
COMMON/ /A(4), B, D, E
DIMENSION AA(4>
EQUIVALENCE (AA, A{2))
D=2.
E=2.
DO 10 1=1,6
10

AA(l)=D*E
PRINT \ E

When these statements are compiled under OPT=0, E will have a value of 8. on exit. Under OPT=l or 2,
the evaluation of D*E will be moved out of the loop since AA and D (or E) are not recognized as being
in the same equivalence class. If the program is to produce the same results under all OPT levels, AA
must be dimensioned to include the entire common block in the equivalence class.

LEVEL STATEMENT
LEVEL n, at ,...,an

LI

'< !
<**^s!\

<****^V

3-12

60497800 C

00&\

' _ . . - - V i " - ! a | : Va r i a b l e s o r a r r a y n a m e s . " - i - v. . \ \ - - : ■
n Unsigned integer 1, 2, or 3 indicating level to which list is to be allocated.
Small core memory resident (SCM)
Large core memory resident (LCM). Directly addressable (or word addressable)
/-m I 3 Large core memory resident, accessed by block transfer to or from small core memory
■ ^ through MOVLEV subroutine call (section 8)
Central memory resident
Central memory resident
0&\ ^ 3 Extended core storage resident, accessed by block transfer to or from central memory
through MOVLEV subroutine call
The LEVEL statement specifies the storage level of variables or array names. The storage level indicates the
f storage residence and mode of access for entities in a common block or for actual arguments associated with
dummy arguments. LEVEL statements must precede the first executable statement in a program unit. Names
of variables and arrays which do not appear in a LEVEL statement are allocated to central memory.
/*sSSy

No dimension or type information is included in the LEVEL statement.
/*PN

/$$?\

Variables and arrays appearing in a LEVEL statement can appear in DATA, DIMENSION, EQUIVALENCE,
COMMON, type, SUBROUTINE and FUNCTION statements. Data assigned to levels 2 and 3 must be
members of common blocks or dummy arguments.
For all levels, no single array or common block can exceed 131,071 words. If the total ECS, LCM, or UEM field I
length accessed by the entire program exceeds 131,071 words, the LCM = I parameter must be specified on the
compiler call. When ECS and LCM blocks are loaded, the length assigned at compile time is rounded up to a
multiple of eight words.

_v Data assigned to level 3 can be referenced only in: COMMON, DIMENSION, type, EQUIVALENCE, DATA,
f CALL, SUBROUTINE, and FUNCTION statements. Level 3 items cannot be used in expressions.
No restrictions are imposed on the way in which reference is made to variables or arrays allocated to levels 1
and 2.

{

If the level of any variable is multiply defined, the level first declared is assumed; and a warning diagnostic
is printed.
All members of a common block or equivalence class must be assigned to the same level; a fatal diagnostic is
issued if conflicting levels are declared. If some, but not all, members of a common block or equivalence class
are declared in a LEVEL statement, all are assigned to the declared level, and an informative diagnostic is printed.

§ Applies only to Control Data CYBER 170 Model 176, CYBER 170 800 Series, CYBER 70 Model 76, I
and 7600 computers.
t Applies only to Control Data CYBER 70 Models 71, 72, 73 and 74, CYBER 170 Models 171, 172, 173,
0®s 174, 175, and 6000 Series computers.
/$^\
60497800

J

3_13

/•"SK

If^a ^variable pr^array ..Same'peclared;in a LEVEL statement appears as art .actual argument in a CALL
statem^n^ W-cQrr^s^d r>e allocated tolthe same, level in the called
■"subprosram. <* - •-»•.?*. ."f-'h "**, » >*• v' > r** " "•'.-' \- - ■ ,ji' ; ■ , . "■"

/***SSy

^.dimension BC6O9),B(5o6),,0M(^boo)
, AycOMMbX/^CSBL'K/'y^V - \ t " .

' CALL' MOVLEV.'(CM»E, 1000)

The LEVEL' statement allocates arrays E and B to extended core storage. They are assigned to a named
common block, ECSBLIL Starting at location CM (the first word address of the array CM), 1000 words of
central memory are'transfetred to the two arrays E and B in extended core storage by the library routine
M O V L E V,
''*•,>"*•
'
-'••--'
•■
«
..-'
-'
0£w%\

EXTERNAL STATEMENT

n

EXTERNAL name

, name.

^ ' ^ ^ ^ k

name,,...,namen

Subprogram names

Before a subprogram name is used as an argument to another subprogram, it must be declared in an
EXTERNAL statement in the calling program. The subprogram can be user-supplied or can reside in the
FORTRAN library. If an actual argument is the name of an intrinsic function, and the user supplies a sub
program with the same name as the intrinsic function, the user-supplied function will be used. Otherwise,
the subprogram is supplied by the library. If the subprogram does not exist on the FORTRAN library and
is not supplied by the user, a loader error occurs.
In a chain of nested subroutine calls, where a,subprogram name is passed as an argument to lower level sub
routines, the EXTERNAL statement need only appear in the highest level program unit in which a CALL
statement containing the subprogram name appears.
Any name used as an actual argument in a call is assumed to be a variable or array unless it appears in an
EXTERNAL statement. An EXTERNAL statement must be used even if the subprogram concerned is a
basic external function, such as SQRT.

3-14

60497800 H

0^%K

Example:
Calling Program

Subprogram

EXTERNAL SIN, SQRT
CALL SUBRT(2.0,SIN,RESULT)
WRITE (6,100) RESULT
100 FORMAT (F7.3)
CALL SUBRT(2.0,SQRT,RESULT)
WRITE (6,100)RESULT

SUBROUTINE SUBRT (A,B,C)
X=A+3.14159/2.
C=B(X)
RETURN
END

STOP
END

First the sine, then the square root are computed; and in each case, the value is returned in RESULT.
The EXTERNAL statement must precede the first executable statement, and always appears in the calling
program. (It cannot be used with statement functions.)
A function call that provides values for an actual argument does not need an EXTERNAL statement.
Example:
Calling

Program

C A L L S U B R T ( S I N ( X ) , R E S U LT )

Subprogram
SUBROUTINE SUBRT(A,B)

B=A

END

/f$B\

An EXTERNAL statement is not required because the function SIN is not the argument of the
subprogram; the evaluated result of SIN(X) becomes the argument.

DATA STATEMENT
D ATA v l i s t 1 / d l i s t l / , v l i s t 2 / d l i s t 2 / v l i s t n / d l i s t n /

DATA (vlist == dlist),..., (vlist = dlist)

vlist

60497800 H

List of array names, array elements, variable names, and implied DO loops, separated by commas.
Unless they appear in an implied DO loop, array elements must have integer constant subscripts.
3-15

^*e^K

dlist One or more of the following forms separated by commas:
constant
(constant list) rf*constant
rf*(consfarit list)
rf(constarit list)

/»"*"3!**»

constant list List of constants separated by commas.
rf Positive integer constant. The constant or
constant list is repeated the number of times
indicated by rf.
X~-u&&\

The data statement is non-executable and must follow all specification statements except statement function
definitions, NAMELIST statements, and FORMAT statements. It can occur after the first executable statement.
It assigns initial values to variables or array elements. Only variables assigned values by the DATA statement have
specified values when program execution begins. The DATA statement cannot be used to assign values in blank
common or to dummy arguments.
The number of items in the data list should agree with the number of variables in the variable list. If the data
list contains more items than the variable list, excess items are ignored, and an informative diagnostic is printed.
If the data list contains fewer items than the variable list, remaining variables are riot defined, arid an informative
diagnostic is printed.
The type of the constant in the data list should agree with the type associated with the corresponding name
in the variable list. If the types do not agree, the form of the value stored is determined by the constant used
in the DATA statement rather than by the type of the name in the variable list.

When constants in a data list are enclosed in parentheses and preceded by an integer constant, the list is >
repeated the number of times indicated by the integer constant. If the repeat constant is not an integer, a
fatal errbr message is printed.
The
forms:
!••...-..
,
rf
*
(real
constant,
and: "'.•'.*•;,._. ^.
rf
(real
constant,

,
real
real

constant)
constant)

,
;

are interpreted as a repeated specificationr'of two fe& constants," not as a single complex constant. In order to
specify the repetition of a complex constant, another set of parentheses must be used:
„ rf * ((real, constant, real constant))
-or:
..."'."
rf
£(real
constant,
real
constant))
Example:

."

;

* . '■• :

!
.

"^
/^

/

*'.,.__

2*(1.0, 2.0) Means repeat the real constants l.Q and 2,0 twice
2*((1.0, 2,0)) Means repeat the complex constant (1.0, 2.0) twice ;
3-16

60497800

A

'

J0Wr\.

An unsubscripted array name implies the entire array in the order it is stored in memory.
Example:
INTEGER B(10)
DATA B/000077B,000064B,3*000005B,5*000200B/
The following octal constants are stored in ARRAY B:

/jSES^

77B
64B
5B
5B
5B
200B
200B
200B
200B
200B

00^\

Example*
PROGRAM OATA C (OUTPUT,TAPE6=0UTPUT)
COMPLEX Z(3),Z1
REAL Mk)
LOGICAL L
N4MELIST/0UT/I,L,X,Z1,A,Z
D ATA I , L , X , Z l , A , Z / 5 , . T R U E . , 3 . i ' + 1 5 9 £ 6 5 3 6 , ( 2 . i , - 3 . ) , 2 * ( i . , 2 . ) >
i
3*(01»-.3E*01)»

Zl

* •lE*>pit »2E***01» .1E*01, .2E*0l»

L:A'
J0^\

•'":.

■■ •3l41S926536E*01t

;'x
00$£\

T'»

-

= «.iE*0i»-.l5E*01>*» <.lE*01»-.l5E*0l>t (.lE*01t-.l5E*0l) t

T^eno1

0&\

60497800 A
0$3a\

3-17

E x a m p l e : ' ' " - ' , . ' A - . , . ' ; ' ' • , ' * ' • ' ' - ' "■' " ' - ' • - ; • • ' • _ " • .
the following are examples of alternative (nonstandard) forms of the DATA statement:
. D ATA ( X - 3 . ) * ( Y » 5 . )

INTEGER ARAY(5)
D ATA

( A - = 7 . ) » ( B = 2 0 0 . ) , ( A R AY- 1 , 2 , 7 , 5 0 , 3 )

COMMON/BOX/ARAY4(3,4,5)
D ATA

**k

( A R AY 4 ( 1 , 3 , 5 ) = 2 2 . 5 )

^

Hollerith constants of any length can be included in the data list. If the constant corresponds to a one-word
variable (integer, real, or logical), the variable is set to the first 10 characters of the Hollerith constant. If the "**')
constant corresponds to an array element, that element, and as many succeeding elements as necessary, are
filled by the constant.
Example:
DIMENSION

JEF(IO)

^

DATA JEF(3) / 40HI THINK, THEREFORE I AM, I THINK/
The third through sixth elements of the array JEF are set as follows: ' ']
,.

-

JEF(3)

*

'JEF(4)
"f
JEF(5)
,

>X0H

JEF(6)

•=

i

10HI
10HHEREF0RE
.,..*
'
"
:,;

AM,

1GH..

THINK,

I

THINK

.

■

'"*

I
'-•

,.

•

T

j

'-•

■

\

^

Subsequent explicit setting of elements in the array, however, overrides implicit setting by means of a lengthy
Hollerith.constant.
,
,
'
.
. ' - '■" ,
,

•Example:'
:
:
,

'

:INTEGER

■'

'•

D ATA

+10HA

.'..
ABC(5)

ABC(3),
TIME

■* . _ _ '

,
'-

J

'.-

ABG(4)
.../

'

,
'"

;
'

.'-

/30HONCE

' - , ' ' ' " "■, " . .

',,'-'
'.'

\

.''-V

UPONA

.--..-.•-•-,..:-.>

.

:

MIDNIGHT
-

„

DREARY

,

^

;

"he third arid fourth elements of the array ABC are set as follows: ,. -*
ABC(3) = 10HONCE UPON
ABC(4) ■= 10HA TIME ...
If an unsubscripted array name appears in a variable list, each item in the data list sets exactly one array element, "^
even if Hollerith constants occur that exceed the array element length. The first data list item sets the first array
element, the second data list item sets the second array element, and so forth.

r**&£\

3-18

60497800

E

00$?\

Initially, the full length of each Hollerith constant is assigned to successive array elements; subsequent data list
items might cause overwriting of all or part of the constant.
Example:
DIMENSION J(4)
DATA J/20H1234567890ABCDEFGHIJ, 20HKLMNOPQRSTUVWXYZ+-*$/
The elements of array J are set as follows:
J(l) = 10H1234567890

yg^y

J(2) = 10HKLMNOPQRST
J(3) •=• 10HUWXYZ+-*$
J (4) == undefined
/5^KuJrr\

The first Hollerith constant in the data list sets elements J(l) and J(2), and the second constant sets elements
J(2) and J(3), overriding the previous setting of J(2). J(4) remains undefined.
Because of this method of storing Hollerith constants appearing in DATA statements, there are only two ways
in which an array can be set to a long character string:
The string can be specified as one long constant:
DATA J/40H1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ*f-*$/
or the string can be broken up into constants of 10 characters each:
DATA J/10H1234567890, 10HABCDEFGHIJ, 10HKLMNOPQRST, 10HUWZYZ+-*$/
If variables containing Hollerith data are to be compared with Hollerith constants, the variables should be of
type INTEGER so that the actual bit value is used and no conversion is performed.
IMPLIED DO IN DATA LIST
The implied DO can be used as a shortened notation for specifying items in the variable list of a DATA
statement. The implied DO in a DATA statement has the following form:

/p$\

(varlist,i=m j ^2^3)
where:
varlist an array element name or another implied DO. If it is an array element name,
its subscript expressions must be of the form
M*i±N

/£$^N

where M and N are unsigned non-zero integer constants. ±N can be omitted.
i a simple integer variable called the index variable
mj.n^m^ unsigned integer constants specifying the initial value, terminal value, and
increment, respectively, for the index variable; if nv-j and the preceding comma
are omitted, the value of n^ is assumed to be 1.

60497800

E

3-19

The range of the implied DO is varlist. Within the range, the value of the variable i must not be redefined.
If varlist contains more implied DOs, those implied DOs are considered to be nested within the containing ^
implied DO; the nested implied DO is completely processed for each value of i in the containing implied DO.
Implied DOs can be nested a maximum of three deep.
When an implied DO is encountered in a DATA statement, the elements in its range are initialized for index
variable i with the value mj. The index variable is then increased by m3 and, if i is less than or equal to
m2, the range of varlist is initialized for the new value of i. This procedure continues until the value of the ^
index variable exceeds m>-..
Example

1:

'•^

REAL ANARAY(IO)
DATA (ANARAY(I),I «■ 1,10)/l.,2.,3.,7*2.5/
The values stored in array ANARAY are:
ANARAYO)

i

r

ANAR/-YY(IO)

I.
2.
3.
2.5
2.5
2.5
2.5
2.5
2.5
2.5

When an implied DO is used, to store values into arrays, only one array name can be used within the implied
DO
nest.
, '■' . [ ' * '
'
^
,*
■
'
",'","
Example

2:

"

'■• , '■" "

^

'*•...

.

DIMENSION UNIT (10,10)
.DATA (UNtTU, \), l=1,1p)/f10*1:/

These two statements declare a matrix and preset the diagonal elements to ones.
Example 3:
DIMENSION ARdO}
DATA (AR(2*I+1). 1=1, 4)/4*3.5/

These two statements declare a ten-word array and preset elements AR(3), AR(5), AR(7), and AR(9) to
3.5,.,
Example 4:
DIMENSION AMASS(1Q,10,10),. A(10), B(5)
D ATA ( A M A S S ( 6 , K , 3 ) , K = l , 1 0 ) / 4 * ( - 2 . , 5 . 1 3 9 ) , 6 . 9 | , 1 0 . /
D ATA
(A(I),I=5,7)/2*(4.1),5.0/
D ATA B / 5 * 0 . 0 /

***\

f»SB\

3-20

60497800

A

ijfJI^N

These statements dimension arrays AMASS, A, and B and preset elements as follows:
A R R AY

i

#

^

AMASS:

A R R AY

AMASS(6,1,3) = -2.
AMASS(6,2,3) = 5.139
AMASS(6,3,3) = -2.
AMASS(6,4,3) = 5.139
AMASS(6,5,3) = -2.
AMASS(6,6,3) = 5.139
AMASS(6,7,3) = -2.
AMASS(6,8,3) = 5.139
AMASS(6,9,3) =6.9
AMASS(6,10,3) - 10.

A

A(5) = 4 . 1
A(6) - 4.1
A(7) - 5.0

ARRAY B
B(l) = 0.0
B(2) - 0.0
B(3) = 0 . 0
B(4) = 0 . 0
B(5) = 0.0

Example 5:
Invalid: DATA (A(l). B(l), 1=1, 3)/1. .2. ,3. ,4., 5. ,6./

Example 6:
The statements:
DIMENSION D3(4),P0Q(5,5)
D ATA ( D 3 = 5 . , 6 . , 7 . , 8 . ) , ( ( ( P 0 Q ( I , J ) , I = l , 5 ) , J = l , 5 ) = 2 5 * O . )

Initialize:

ypp-\

D3(l) = 5.
D3(2) = 6.
D3(3) = .7.
D3(4) =8.
and set the entire array POQ to zero.

/*"S"\

0^*S

0^\.
60497800 A

3-21

FLOW CONTROL STATEMENTS

FORTRAN flow control statements provide a means of altering, interrupting, terminating, or otherwise modifying
the normal sequential flow of execution:
ASSIGN
GO TO
IF
DO
CONTINUE

PAUSE
STOP
END
RETURN

Control can be transferred only to an executable statement. .
A statement can be identified by an integer, 1-99999, with leading zeros and embedded blanks ignored. Each
statement label must be unique in the program unit (main program or subprogram) in which it appears.

GO TO STATEMENT
The three types of GO TO statements are unconditional, computed, and assigned. The ASSIGN statement is
used in conjunction with the assigned GO TO and is therefore described in the GO TO statement group.
UNCONDITIONAL GO TO STATEMENT

GO TO sn

sn

is a label of an executable statement.

This statement transfers control to the statement labeled sn which must be an executable statement in the
current
program
unit.
-*
Example:

fjfPN

10 A=B+Z
100 B=X+Y
IF(A-B)20,20,30
20 Z=A
GO TO 10-*
30 Z=B
STOP
END

60497800 A

•Transfers control to statement 10

4-1

COMPUTED GO TO STATEMENT
>f*^**\

n

GO TO (sn1 ,sn2 ,..., snm), iv

GO TO (sn1,sn2,...,snfT>),eam

snj is a label on an executable statement.
iv is an integer variable.
, earn ~ is an' arithmetic of masking expression.
The computed GO TO statement transfers control to one of the statements referenced in the parentheses. If
the variable iv has a value of one, control transfers to the statement labeled snj; if the value is i, control
transfers to the statement labeled sn^.

.^^*s

The variable iv can .be replaced by an expression. The value of the expression is'truncated Jand converted to
an integer, if necessary,, and/used in'place of iv. The comma separating the- statement label from the variable
or iexprVsaton] is'optional, . [-^ ' \ ".!;.""* '"'.,*" . " " '',
The variable must not be specified by an ASSIGN statement. If it is specified by an ASSIGN statement, the
object code is incorrect, but no compilation error message is issued.
If the value of the variable'or expression is less than one or larger than the number of statement numbers in
parentheses, the transfer of control is undefined and a fatal error results at execution time.

/4SS\

Example 1:
GO T0(10,20,30,20),L

'*aa%i

4-2

60497800 A

The next statement executed is:
10 if L = 1
20 if L = 2
30 if L = 3
20 if L = 4
Example 2:

/*$p^\

K=2
GO T0(100,150,300),K

Statement 150 is executed next.

Example 3:
K=2
X=4.6

GO T0(10,no,11,12,13),X/K Control transfers to statement 110, since the integer value of the
expression X/K equals 2.
Example 4:
M=4
GO TO (100,200,300),M
Execution of the last example causes a fatal error during execution because fewer than four numbers are
specified in the list of statement labels.
ASSIGN STATEMENT
7
ASSIGN sn TO iv

sn is a label of an executable statement.
iv is an integer variable.
The ASSIGN statement assigns a statement label to a variable used in an assigned GO TO. The integer
constant assigned to iv represents the label of an executable statement to which control may be transferred
by an assigned GO TO statement. Once iv is used in an ASSIGN statement, it must not be referenced in
any statement, other than an assigned GO TO or another ASSIGN, until it has been redefined.

60497800 E
/0$v\

4-3

The assignment must be made prior to the execution of the assigned GO TO statement and sn (the label of
an executable statement) must be in the same program unit as both the ASSIGN and assigned GO TO
statements.
Example:
ASSIGN 10 TO LSWIT
GO TO LSWIT,(5,10,15,20)

Control transfers to statement 10

ASSIGNED GO TO STATEMENT
/ ^ ^ i

GO TO iv, (sn1 ,...,snm)

". )
M ^ :

•7.-..K

. t V*-

->

GO TO jv (sry. •vsn') t.
♦\;> '. •;

IV

is an integer variable.

(sn-,. ..,snm)
nv

is a list of all the statement labels to which control can be passed by this assigned
GO TO. Upon execution of the assigned GO TO, iv must be assigned to one of the
labels in the list.

The assigned GO TO statement transfers control to the statement label last assigned to iv by the execution of
a prior ASSIGN statement. All the statement labels in the list must be in the same program unit with both
the ASSIGN and the assigned GO TO statements. Omitting the list of statement labels causes a fatal error.
If a statement label is omitted from the list or the value of iv is defined by a statement other than an
ASSIGN statement, the results are unpredictable. (Control is transferred to the absolute memory address
represented by the low order 18 bits of iv.) The corririia after iv is optional.

-•"^■v

Example:
ASSIGN 50 TO JUMP
10 GO TO JUMP,(20,30,40,50)

Statement 50 is executed immediately after statement 10.

20 CONTINUE

30 CAT=ZERO+HAT

40 CAT=10.1-3.

50 CAT=25.2+7.3

4-4

60497800 F
*'-•*%

ARITHMETIC IF STATEMENT

/*|PN

The arithmetic IF statement has a three-branch and a two-branch form. In both cases, zero is defined as a
word containing all bits set to zero or all bits set to one (+0 or -0). If the type of the evaluated expression
is complex, only the real part is tested.
THREE-BRANCH ARITHMETIC IF STATEMENT

IF (earn) sn-j. ai.2-.sn3

earn is an arithmetic or masking expression.
snj,sn2,sn-j are labels on executable statements.
The three-branch IF statement transfers control to the statement labeled snj if the value of the expression is
less than zero, to the statement labeled sn2 if it is equal to zero, or to the statement labeled s^ if it is
greater than zero.
Example:
PROGRAM IF (INPUT,OUTPUT,TAPE5=INPUT,TAPE6=0UTPUT)
READ (5,100) I,J,K,N
100 FORMAT (10X,4I4)
IF(I-N) 3,4,6
3 ISUM=J+K
6 CALL ERR0R1
WRITE (6 ,2) ISUM
2 FORMAT (110)
4 STOP
END

TWO-BRANCH ARITHMETIC IF STATEMENT

/SPN

IF (earn) sn1#sn2

earn is an arithmetic or masking expression.
sni,sn2 are labels on executable statements.

60497800 A

r

4-5

^«fesJ\

The two-bjranch IF statement transfers control to one of two executable^statem]etttsr„ Control is transferred to
the, statement labeled sn-j if the value of the expression is not equal to zero and 'to the statement labeled,
sri2 if ib'is* equal to-zero. *-. ', !" ^ * *\{ "-1' *.*■,~ * V,; .*<"!' " .-", !~ " -"
H* s -V5

Example-- v-'*,,V
- vll (I*J*DATA(K))100,101
ipO.IF<(I*Y*K)l65,lG6

-'r^'/,^

LOGICAL IF STATEMENT
The logical IF statement has a standard form and a.tytoTbranch form.
STANDARD-FORM LOGICAL IF STATEMENT

IF (elr) stat

elr is a logical or relational expression.
stat is any unlabeled executable statement other than DO, END, or another standard-form
logical IF.
The standard-form logical IF allows for conditional execution of a statement. If the logical or relational
expression is true, stat is executed. If the expression is false, stat is skipped.

y ^ x

Examples:
IF (P.AND.Q) RES=7.2
50 TEMP=ANS*Z

If P and Q are both true, the value of the variable RES is replaced by 7.2; otherwise, the value of RES
is unchanged. In either case, statement 50 is executed.
IF (A.LE. 2.5) CASH=150.
70 B=A+C-TEMP

>«^x

If A is less than or equal to 2.5, the value of CASH is replaced by 150. If A is greater than 2.5, CASH
remains unchanged.
IF (A.LT.B) CALL SUB1
20 ZETA=TEMP+RES4

If A is less than B, the subroutine SUB1 is called. Upon return from this subroutine, statement 20 is
executed. If A is greater than or equal to B, statement 20 is executed and SUB1 is not called.

4-6

60497800 A

TWO-BRANCH LOGICAL IF STATEMENT

f 1- - .
1
1

/0^s

IF (elr) sn|fsn2

elr is a logical or relational expression.
snj,sn2 are labels on executable statements.
The two-branch logical IF allows for transfer of control to one of two executable statements. If the value of
the logical or relational expression is true, control is transferred to the statement labeled snj. If the value of
the expression is false, control is transferred to the statement labeled s^J
Example: ./
'/

IF(K.ll(Si>100)60,70

!

• - _ . -■. -

If K is equal'to 100, statement 60 is executed; otherwise statement 70 is executed.

DO STATEMENT

DO sn iv=m1,m2,m3

DO sn iv=m..,m2

/$^N

sn Terminal statement label; an executable statement that must physically follow and reside in
the same program unit as its associated DO statement. The terminal statement must not be
any arithmetic or two-branch logical IF, a GO TO, RETURN, END, STOP, PAUSE, or
another DO statement.
IV

0^\

0S\

Control variable; an integer variable.

ml

Initial parameter.

m2

Terminal parameter.

m-,

Incrementation parameter.

60497800 A

Indexing parameters: unsigned integer or octal constants or
integer variables with positive non-zero values at execution such
that neither mi+m? nor mo+m? is larger than 2-1. If the
indexing parameters exceed these constraints, the results are
unpredictable. If m? is not specified, its value is assumed to be 1.

4-7

The DO statement makes it possible to repeat groups of statements and to change the value of an integer
variable during the repetition.

DO LOOPS
The range of a DO loop consists of all executable statements, from and including the first executable state
ment after the DO statement to and including the terminal statement. Execution of a DO statement causes
the following sequence of operations:

/CSSy

1. iv is assigned the value of m j.
2. The range of the DO loop is executed.
3. iv is incremented by the value of m^.
4. iv is compared with rc^. If the value of iv is less than or equal to the value of n^, the sequence
of operations starting at step 2 is repeated. If the value of iv is greater than the value of n^,
the DO is said to have been satisfied, the control variable becomes undefined, and control passes
to the statement following sn. If mj is greater than or equal to n^, the range of the DO loop
is
executed
once.

1

A transfer out of the range of a DO loop is permissible at any time. When such a transfer occurs, the control
variable remains defined at its most recent value in the loop. If control eventually is returned to the same range, x-stn
the statements executed while control is out of the range are said to define the extended range of the DO. The
extended range should not contain a DO statement. Subroutines or functions invoked within the range of a DO
can contain DO statements, however.
The control variable must not be redefined in the range of a DO; such redefinition causes a fatal-to-execution
diagnostic to be issued. The control variable should likewise not be redefined in the extended range; such
r e d e fi n i t i o n
causes
the
results
of
execution
to
be
unpredictable.

1

The indexing parameters should not be redefined in either the range or the extended range of a DO. In ^^^
either case, the results of execution are unpredictable. Redefinition in the range of the DO causes an 7
informative diagnostic to be issued.
Example

1:

"^^

DO 10 1=1,11,3
IF(ALIST(I)-ALIST(I+1))15,10,10
15 ITEMP=ALIST(I)
10 ALIST(I)=ALIST(I+1)
300

WRITE(6,200)ALIST

1

The statements following DO up to and including statement 10 are executed four times. The DO
loop is executed with I equal to 1, 4, 7, 10. Statement 300 is then executed. ^

4-8

60497800

A

Example 2:
DO 10 1=1,5
CAT=BOX+D
10 IF (X.GT.B.AND.X.LT.H)Z=EQUATE
6 A=ZERO+EXTRA
Statement 10 is executed five times, whether or not Z = EQUATE is executed. Statement 6 is
executed only after the DO loop is satisfied.
Example 3:
IVAR = 9
DO 20 I = 1,200
I F ( I - I VA R ) 2 0 , 1 0 , 1 0
20 CONTINUE
10 IN = I

An exit from the range of the DO is made to statement 10 when the value of the control variable I
is equal to IVAR. The value of the integer variable IN becomes 9.
Example 4:
K=3
J=5
0$$$£\

:!.

DO 100 I=J,K
RACK=2.-3.5+ANT(I)
100 CONTINUE
The DO loop is executed only once (with 1 = 5) because J is larger than K.

NESTED DO LOOPS
When a DO loop entirely contains another DO loop, the grouping is called a DO nest. DO loops can be
nested to 50 levels. The range of a DO statement can include other DO statements providing the range of
each inner DO is entirely within the range of the containing DO statement.
The last statement of an inner DO loop must be either the same as the last statement of the outer DO loop
or must occur before it. If more than one DO loop has the same terminal statement, a transfer to that
statement can be made only from within the range (or extended range) of the innermost DO, and the label
cannot be referenced in any GO TO or IF statement in the nest except in the range of the innermost DO.
A DO loop can be entered only through the DO statement. Once the DO statement has been executed, and
before the loop is satisfied, control can be transferred out of the range and then transferred back into the
range of the DO.

60497800
/fP*,

A

4-9

"^^•V

A transfer from the range of an outer DO into the range of an inner DO loop is not allowed; however, a
transfer out of the range of an inner DO into the range of an outer DO is allowed because such a transfer
is within the range of the outer DO loop.
r

0

-3

Illegal

*

^

\

Legal

(••s^v

The use of and return from a subprogram within a DO loop are permitted. A transfer back into the range
of an innermost DO loop is allowed if a transfer has been made from the same loop.

/•^V

Illegal

The extended range of an inner DO loop must be outside the outermost DO loop.
Example 1:
DIMENSION A(5,4,4), B(4,4)
DO 2 I - 1,4
DO 2 J = 1,4
DO 1 K - 1,5
1 A(K,J,I) = 0.0
2 B(J,I) - 0.0

This example sets arrays A and B to zero.
Example 2:
r—D1

r-D1

r—D1
— D2

i—D2
D3

D2
— n2

n3

— D3

•—n2

[
L-r»1

4-10

D3

D4
— n3

n4
I— n1

L— n1=n2 = n3

60497800 E

0$0£\

DO loops can be nested completely within an outermost loop or can share a terminal statement. The diagrams
in example 2 might be represented by the following code:
DO 1- 1 = 1,10,2

DO 100 L=2,LIMIT

DO 2 J=l,5

DO 10 J=l,10

DO 5 1=1,5
DO 5 J=I,10
DO 5 K=J,15

1—5 A = B*C
DO 3 K=2,8

•-3 CONTINUE

2 CONTINUE

0S&\

DO 4 L=l,3

C

1-10 CONTINUE

DO 20 K=K1,K2

1-20 CONTINUE

100 CONTINUE

4 CONTINUE
1 CONTINUE

Example 3:
DO 10 J=l,50
DO 10 1=1,50
DO 10 M=l,100

GO TO 10

10 CONTINUE
/fPN

Since statement 10 is the terminal statement for more than one DO loop, it can be referenced in
a GO TO or IF statement in the range of the innermost DO. If 10 is referenced in one of the outer
loops, control is transferred out of the range with undefined results.

60497800 A

4-11

Example 4:
JS^\

DO 10 K=l,100
IF(DATA(K)-10.)20,10,20
20 DO 30 L=l,20
IF(DATA(L)-FACT*K-10.)40,30,40
40 DO 50 J=l,5
f**^S\

GO TO (101,102,50),INDEX
101 TEST=TEST+1
GO TO 104
103 TEST=TEST-1
DATA(K)=DATA(K)*2.0

/*"H&v

50 CONTINUE
30 CONTINUE
10 CONTINUE

<***^£\

GO TO 104
102 DO 109 M=l,3

109 CONTINUE
GO TO 103
104 CONTINUE

When an IF statement is used to bypass several inner loops, different terminal statements are required for each
loop.

CONTINUE STATEMENT

/T

5 7
sn CONTINUE

sn is a statement label.

4-12

60497800 A
^an\

The CONTINUE statement performs no operation. It is an executable statement that can be placed anywhere
in the executable statement portion of a source program without affecting the sequence of execution. The
CONTINUE statement is most frequently used as the last statement of a DO loop. It can provide loop termina
tion when a GO TO or IF would normally be the last statement of the loop. If the CONTINUE statement does
not have a label, an informative diagnostic is provided.
Example 1

Example 2:

DO 10 I = 1,11
IF (A(I)-A(I+1))20,10,10
20 ITEMPP = A(I)
A (I) = A (1+1)
10 CONTINUE

DO 20 1=1,20
1 IF (X(I) - Y(I))2,20,20
2 X(I)=X(I)+1.0
Y(I)=Y(I)-2.0
GO TO 1
20 CONTINUE

PAUSE STATEMENT

f

r

f

PAUSE

PAUSE n

PAUSE •* c.c #

n is a string of 1-5 octal digits,
c.c is a string of 1-70'characters.

When a PAUSE statement is encountered during execution, the program halts and PAUSE n, or PAUSE c... c,
appears as a dayfile message on the operator console, and at the user terminal''if the job is executing interactively.
For batch originated programs, the console operator can continue or terminate the program with an entry from
the console.
For programs executing interactively through INTERCOM, the user types GO to continue execution or DROP to
terminate. For any other type-in, a diagnostic message is issued and INTERCOM waits for a correct type-in.
For programs executing interactively through the NOS 1 Time-Sharing System, the user types STOP '''
to terminate execution. Any other type-in causes execution to continue.
+Only 40 characters for SCOPE 2.
^Does not apply to SCOPE 2.
'"•"' Applies to TELEX only. For IAF, a terminating character must be used; for most terminals the terminating
character is CTRL/T or the ")" character.

60497800 F

4-13

STOP STATEMENT

n

STOP

ff-^SsfX

STOP n

STOP *c..,c*

,/3\

n is a string of 1-5 octal digits.
c.c - is a string of 1-70 characters,
The STOP statement terminates program execution. When a STOP statement is encountered during execution,
STOP n or STOP c . c is displayed in the dayfile, the program terminates, and control returns to the
operating system. If n is omitted, blanks are implied. A program unit can contain more than one STOP
statement.

END STATEMENT

END

The END statement indicates the end of the program unit to the compiler. Every program unit must
physically terminate with an END statement. The END statement can follow a $ statement separator, be
labeled, and be continued. If control flows into or branches to an END statement, it is treated as if a
RETURN statement had preceded the END statement.

/^iV

If the END statement is not continued (all three characters are on the same line) no scanning for possible con
tinuation information is performed and any information,after the END statement is considered part of the next
program unit. If the END statement is continued (all three characters not on one line), any comment statements
and blank lines following the END statement are listed with the current program unit.
The following examples are interpreted as the end of one program unit, followed by another, program unit
beginning with an illegal continuation line of either „ FILE 3 or . - 4.
END
.FIDT3

4-14

END
-s 4

60497800 A

r*£$>Z\

/8»fcV

RETURN STATEMENT
RETURN

/ffS^i.

/T

RETURN i

is a dummy argument which appears in the RETURNS list in the SUBROUTINE statement.
/0S\

The RETURN statement terminates the execution sequence within a program unit and normally returns
control to the current calling program unit. In a main program, execution of the program terminates and
control returns to the operating system when a RETURN is encountered.
When a RETURN statement is encountered in a function subprogram, control returns to the referencing
program unit and the evaluation of the expression is completed using the value returned from the function.
Since control must return to the referencing expression, a RETURN i statement in a function subprogram
causes a fatal error at compilation time.
In a subroutine subprogram, a RETURN statement transfers control to the next executable statement
following the CALL statement in the calling program unit.

/*S©\

A RETURN i in a subroutine transfers control to the calling program statement label corresponding to i
in the RETURNS list. It allows control to return to an executable statement other than the one immediately
following the CALL statement and can only be used in a subroutine subprogram.
The RETURNS list is described in more detail under Subroutine Subprogram and Calling a Subroutine Sub
program in section 7.
Example 1:
A = SUBFUN (D,E)
10 DO 200 1-1,5

FUNCTION SUBFUN(X,Y)
SUBFUN = X/Y
RETURN
END

When the RETURN statement is encountered in the function subprogram, control is returned to
the statement referencing the subprogram, and the value calculated by SUBFUN is stored in A.

60497800 A
0$r\

4-15

. Example 2: ;
Calling Program

CA1X;?GMI(A,B,C)>
XBfiTUR^S (5,10)

5 B*SQRT(A*C)

Subprogram

SUBROUTINE PGM1(X,Y»Z),
, XRETURNS '/' . :' \
>
' ' . x.* .*.-•".- * ^ '••■", y
f *.*

10'1 >G^'fJ3W-&>iy >
* y .♦ -j *y'vV '*

* ^*,t---^r

• «■ ", i "i >-'

,^a^le^"Jshows,boA :forms o'f th/fefURN statement k'A MMj^lff? #P^:

/*^\

/*S^y

4-16

60497800 A
>^®\

INPUT/OUTPUT STATEMENTS

Processing resulting from input/output statements depends on the type of statement used. For each category,
there are one or more input statements and corresponding output statements. The categories are:
Formatted (READ, WRITE, PRINT and PUNCH statements with format designator)
Unformatted (READ and WRITE without format designator)
List-directed (READ, WRITE, PRINT and PUNCH with an asterisk as the format designator)
Namelist (READ, WRITE, PRINT and PUNCH with the NAMELIST group name replacing the format
designator)
Buffered (BUFFERIN and BUFFEROUT)

JPN

Mass storage input/output (Subroutines READMS, WRITMS, OPENMS, CLOSMS, and STINDX; see
section 8)
CYBER Record Manager interface routines (see section 8)
In addition, there are the core-to-core transfer statements ENCODE and DECODE and the file motion
statements REWIND, BACKSPACE, and ENDFILE, all discussed in this section.
\ Subprograms used in connection with input/output, besides the mass storage routines and the CYBER Record
Manager routines, include EOF, IOCHEC, UNIT, LENGTH, and LENGTHX. These subprograms are discussed
zp^ in section 8. Format specifications and input/output lists are discussed in section 6.
Input and output involve reading records from files and writing records to files. Every file must have a logical
rfile name of one
to seven
and digits,
thethe
first
name is defined only for the
current
job, andletters
is the name
by which
fileais letter.
referredThe
to inlogical
controlfile
statements.
rFor batch jobs destination.
(jobs not These
executed
interactively
at a terminal), certain file names have a predefined origin or
file names
are:
INPUT Data from user's source deck PUNCH Punched in Hollerith format at job termination
V OUTPUT Printed at job termination PUNCHB Punched in binary format at job termination

('

output

The files INPUT, OUTPUT, and PUNCH should be processed only by formatted, list-directed, or namelist input/
statements.
The predefined meaning of any file name except INPUT can be overridden by control statements.

( All files used by input/output statements or the mass storage subroutines must be declared on the PROGRAM
statement (discussed in section 7). Files processed by CYBER Record Manager routines, however, must not
^p^ be declared on the PROGRAM statement. The PROGRAM statement also allows the user to specify maximum
( record length and buffer size for a file. In the absence of user specification, default values are provided.

60497800
/$$&2y

B

5-1

Mixing types of operations on the same file can sometimes lead to destruction of file integrity. In particular,
files processed by mass storage or CYBER Record Manager subroutines should be processed only by these /s-q-x
routines. Files processed by buffer statements should be processed only by these statements in a given pro
gram (REWIND, ENDFILE, and BACKSPACE are permitted for these files).
A file should not be processed both by unformatted operations on the one hand and by formatted, namelist,
or list directed operations on the other. However, if a file is rewound, it can then be rewritten in a different
mode.

XS£*\

If formatted, list directed, or namelist input/output is performed on a 7-track S or L tape, a FILE control
s t a t e m e n t t h a t s p e c i fi e s C M = N O ( s e e s e c t i o n 1 6 ) m u s t b e i n c l u d e d i n t h e j o b . , ^
After every formatted, list directed, namelist, or unformatted READ, end-of-file status should be checked by
a call to the EOF function (section 8). If end-of-file is encountered, and EOF is not called, the contents of ^
the input/output list are undefined.
Record length on card files should not exceed 80 characters. Record length on print files should not exceed ^
137 characters; the first character is always used as carriage control and is hot printed. (Under the NOS 1 Time- 1
Sharing System, the first character, is printed.) The second character appears in the first print position. Carriage
control
characters
are
listed
in
section
6.
y^
The following mnemonics are used throughout this manual in descriptions of input/output statements and
subprograms:

"^

u Input/output unit designator, used to determine the logical file name of the file to be used j
for input and output. The file name is derived from u depending on its value. The value i
can be one of the following:
Integer constant of one or two digits (leading zeros are discarded). The compiler associates ^^,
these numbers with file names of the type TAPEu, where u is the file designator (refer to
PROGRAM statement, section 7).
Simple
integer
0 - 99 or

variable

name

with

a

value

of:

)

A display code file name (L format, left justified with binary, zero fill). This is the /^
logical file name.
fn Format designator; a FORMAT statement number or the name of an array, Variable, joi" /<^
array element containing the format specification. The statement number must identify a
FORMAT statement in the program unit containing the input/output statement.
iolist Input/output list specifying items to be transmitted (section 6).
/fiS^v

FORMATTED INPUT/OUTPUT
For formatted input/output, a format designator must be present in the input/output statement. The input/ "^
output list is optional. Each formatted input/output statement transfers one or more records.

5-2

60497800

C

FORMATTED OUTPUT STATEMENTS
PRINT

/T

PRINT fn,iolist

PRINT fn
/"S5\

PRINT(u.fn) iolist

PRINT(u.fn)

This statement transfers information from the storage locations named in the input/output list to the file
named OUTPUT (if u is omitted) or the file specified by u, according to the specification in the format
designator fn. At the end of a job, if the user has not specified an alternate assignment, the file OUTPUT
is sent to the printer.
5
PROGRAM PRINT (OUTPUT)
A=1.2
L=3HYES
N=19
PRINT 4,A,L,N
4 FORMAT (G20.6,A10,I5)

The iolist can be omitted. For example,
PRINT 20
20 FORMAT (30H THIS IS THE END OF THE REPORT)

/^t\

r
/fsS\

60497800 F

5-3

,jf£^JV

PUNCH

..-f^X

PUNCH fn.iolist

r

PUNCH fn

PUNCH(u,fn) iolist
0%8$>\

,XS^!\

PUNCH (u,fn)

Data is transferred from the storage locations specified by iolist to the file PUNCH (if u is omitted) or the
file specified by u. At the end of a job, if the user has not specified an alternate assignment, the file PUNCH
is output on the standard punch unit as Hollerith codes, 80 characters or less per card in accordance with
format specification fn. If the card image is longer than 80 characters, a second card is punched with the
remaining characters.

ys3£?\

5 7.
PROGRAM PUNCH (INPUT,OUTPUT,PUNCH)
2 READ 3,A,B,C
3 FORMAT (3G12.6)
ANSWER - A + B - C
IF (A .EQ. 99.99) STOP
PRINT 4, ANSWER
4 FORMAT (G20.6)
PUNCH 5,A,B,C,ANSWER
5 FORMAT (3G12.6,G20.6)
GO TO 2
END

i-rf-^S.

.<^v

^ ^ v

The iolist can be omitted. For example,
PUNCH 30
30 FORMAT (10H LAST CARD)

5-4

60497800 C

WRITE

WRITE (u,fn) iolist

WRITE (u,fn)

WRITE fnriolist

WRITE fn

The formatted WRITE statement transfers information from the storage locations named in the input/output
list to the file named OUTPUT (if u is omitted) or the file specified by u, according to the FORMAT
specification, fn. At the end of a job, if the user has not specified an alternate assignment, the file OUTPUT
is sent to the printer.
PROGRAM RITE (OUTPUT,TAPE6=0UTPUT)
X=2.1
Y=3.
M=7
WRITE (6,100) X,Y,M
100 FORMAT (2F6.2.I4)
STOP
END
The iolist can be omitted. For example.
WRITE (4,27)
27 FORMAT (32H THIS COLUMN REPRESENTS X VALUES)
0S\

FORMATTED READ
READ (urfn) iolist

>*pS\

60497800 C
0S\

5-5

READ (u,fn)

fjf

READ fhjolist

READ fn

These statements transmit data from unit u, or the file INPUT (if, u is omitted), to storage locations
named in iolist according to FORMAT specification fn. The number of words in the list and the FORMAT
specifications must conform to the record structure on the input unit. If the list is omitted, one or more
FORTRAN records will be bypassed. The number of records bypassed is one plus the number of slashes
interpreted in the FORMAT statement. Except for information read into H specifications in the FORMAT
statement, the data in the records skipped is ignored.

^^\

The user should test for an end-of-file after each READ statement to avoid input/output errors. If an
attempt is made to read on unit u and an EOF was encountered on the previous read operation on this
unit, execution terminates and an error message is printed. (Refer to section 8, EOF Function.)
Example 1:
>*"8"*\

PROGRAM IN (INPUT,OUTPUT,TAPE4=INPUT,TAPE7=0UTPUT)
READ (4,200) A,B,C
200 FORMAT (3F7.3)
A = B*C+A
WRITE (7,50) A
50 FORMAT (50X,F7.4)
STOP

"^S*\

The READ statement transfers data from logical unit 4 (externally, the file INPUT) to the variables A,
B, and C, according to the specifications in the FORMAT statement labeled 200.
Example 2
PROGRAM RLIST (INPUT.OUTPUT)
READ 5,X,Y,Z
5 FORMAT (3G20.2)
RESULT = X-Y+Z
PRINT 100, RESULT
100 FORMAT (10X.G10.2)
STOP
END

<*=5n

The READ statement transfers data from the file INPUT to the variables X, Y, and Z, according to
the specifications in the FORMAT statement labeled 5.
5-6

60497800 C
,-fflSv

UNFORMATTED INPUT/OUTPUT
Unformatted READ and WRITE statements do not use format specifications and do not convert data in any
way on input or output. Instead, data is transferred as is between memory and the external device. Each
unformatted input/output statement transfers exactly one record. If data is written by an unformatted
WRITE and subsequently read by an unformatted READ, exactly what was written is read; no precision is
lost. Unformatted input/output cannot take place with coded tapes.
UNFORMATTED WRITE
7
WRITE (u) iolist

WRITE (u)

Example:
PROGRAM OUT(OUTPUT,TAPE10)
DIMENSION A(260),B(4000)

WRITE (10) A,B
END

This statement is used to output binary records. Information is transferred from the list variables, iolist, to
the specified output unit, u, with no format conversion. One record is created by an unformatted WRITE
statement. If the list is omitted, the statement writes a null record on the output device. A null record has
no data but contains all other properties of a legitimate record.
UNFORMATTED READ
j-*$iSS\

7
READ (u) iolist

READ (u)
P^^N,

60497800 A

5-7

One record is transmitted from the specified unit, u, to the storage locations named in iolist. Records are
not converted; no FORMAT statement is used. The information is transmitted from the designated file in
the form in which it exists on the file. If the number of words in the list exceeds the number of words in
the record, an execution diagnostic results. If the number of locations specified in iolist is less than the
number of words in the record, the excess data is ignored. If iolist is omitted, READ (u) spaces over one
record.
PROGRAM AREAD (INPUT,OUTPUT,TAPE2)
READ (2) X,Y,Z
SUM - X+Y+Z/2.

,-jS^JV

END
/>3™\

LIST DIRECTED INPUT/OUTPUT
list directed input/output involves the processing of coded records without a FORMAT statement. lEach
record consists of a list of values in a freer format than is used for formatted input/output. This type of
input/output is particularly convenient when the exact form of data is not important.

LIST DIRECTED INPUT
>*S^v

Data is transmitted from unit u or the file INPUT (if u is omitted) to the storage locations named in iolist. The
input data items are free-form with separators rather than in fixed-size fields.
A list directed READ following a list directed READ that terminated in the middle of a record continues with
the same data record when no formatted READ statements have intervened. If, however, a formatted READ
statement has intervened, the remainder of the original record is destroyed. This is because a single working stor
age area is created for all formatted, list directed, and NAMELIST input/output files. For files referenced in list
directed READ statements, the maximum record length in characters should be specified in the PROGRAM state
ment (section 7). This specification creates a separate working storage area for the file, which is different from
the default area.
When a list directed READ follows a formatted READ or a formatted READ follows a list directed READ, a new
data record is always read. Unformatted input/output does not require a working storage area and therefore does
not affect list directed input/output.
Input data consists of a string of values separated by one or more blanks, or by a comma or slash, either of which
may be preceded or followed by any number of blanks. Also, a line boundary, such as end of record or end of
card, serves as a value separator; however, a separator adjacent to a line boundary does not indicate a null value.

5-8

60497800 D

,+^^$£\

f*sev

j0&*\

Embedded blanks are not allowed in input values, except Hollerith values. The format of values in the input
record is as follows:
Integers Same format as for mrcgcr constants.
Real numbers Any valid FORTRAN formal for real numbers. In addition, the deciihal point can be
omitted; it is assumed to be to the right of the mantissa.
Complex numbers Two real values, separated by a comma, and enclosed by parentheses. The parentheses
are not considered to be a separator. The decimal point can be omitted from either of
the real constants.
Hollerith values A string of characters (which may include blanks) enclosed by two =£ characters. The =£
character can be represented within the string by two successive -?-= characters. Hollerith
values can only be read into integer variables or arrays. Values less than 10 characters
long are left justified and the word blank filled. Values longer than 10 characters are
truncated to 10 characters.

00Z\

To repeat a value, an integer repeat constant is followed by an asterisk and the constant to be repeated. Blanks
cannot be embedded in the specification of a repeated constant.
A null may be input in place of a constant when the value assigned to the corresponding list entity is not to
be changed. A null is indicated by the first character in the input string being a comma or by two commas
or slashes separated by an arbitrary number of blanks. Nulls may be repeated by specifying an integer repeat
count followed by an asterisk and any value separator. The next value begins immediately after a repeated null.
A null cannot be used for either the real or imaginary part of a complex constant; however, a null can repre
sent an entire complex constant.
When the value separator is a slash, remaining list elements are treated as nulls; when the next input statement
is executed for this specified unit, the character following the slash becomes the first input character for the
second READ. When the list is exhausted and no slash has been encountered, the next list directed read on
the same unit begins after the following value separator.

0$$\

r

Input values must correspond in type to variables in the input/output list. Although the format of a real value
can be the same as that of an integer value, a repeated integer constant should not be read into variables of
different types.
For example:
READ(5,*) I. J. X, Y

0^ can read correctly:
2*7, 2*7 but not 4*7
f0^ assuming that I and J are integer and X and Y are real.

r*

Repeated constants or repeated null values should be used entirely by one read.

The only Hollerith constants permitted are those enclosed in the symbol -7=. Hollerith constants can contain
embedded blanks. The paired symbols -?*•£ can be used to represent a single -»= within a character constant.
0xk A character cannot have a repeat count associated with it, and it must be read into an integer variable or
array. A character constant of less than 10 characters is padded on the right with blanks to fill the word.
Only the first 10 characters are used if the constant exceeds 10 characters.
60497800

0^.

E

5-9

Example.1:.

..,.,>

PROGRAM LDR CAT*6IRD»DQG
WRITE(6tOUT)
STOP
END

Input:. -,;,..
13>3, -5.2, »01

Output: :

\

•

,

SOUT
■■'•■"/" CAT",''

•'.= .133E4-0 2,

BIRO

*'r>52£>0.it

DOG

= .IE-01,,

^S*s

E x a m p l e . 2 ' - " ■' " ' , y ■ • • • " • . ' • ' : ' . - - • ' • ' <

PROGRAM
LDiN.(INPUT=100/80,OUTPUT=100)
CALL
CONNEC(5LINPUT)
•CALL CONNEC(6LOUTPUT)
.
.,
WRITE,
8
.
,
8
F O R M AT P
I N P U T: ' M 4 X , " O U T P U T: " / / )
11
,
READ
*,J,K
"
,
,IF(ECF(5LINPUT).NE.0) STOP
PRINT
22,
J,K
2 2 , F O R M AT ( T 2 0 , 2 1 5 )
,, GO TO 11
END

"
,

J
(
^
***)
.-<***.
>*£^^\

5-10

60497800

E

I N P U T:

O U T P U T:

1 2 A pair of numbers
1

2

3/ Comma divides 2 and 3
3
2
4/ Null before comma (after previous slash)
Two nulls
Two nulls

j*jj3S*\

One delimiter, one null
Second input value

/
/

Terminates for the null and 6
Null list
3

6

3

7

8

8

1 * , 7 One null, then a 7
2 * 8 Tw o 8 ' s

s0&\

1 2 ,3/, 4/,, , , , 5 , , 6/1* , 7 2*8 All together how

0$$£\

0$$£\

60497800 E

5-10.1

^"*^\

/^^K

/^§\

5-10.2

60497800 E

WRITE*,iolist

PRINT (u,*) iolist

PRINT*,iolist

r

PUNCH(u,*) iolist

PUNCH*,iolist

Data is transferred from storage locations specified by the iolist to the designated file in a manner consistent
with list directed input.
PRINT and WRITE both output data to the file OUTPUT if no unit designator is specified. PUNCH outputs to
the file PUNCH if no unit designator is specified.
For files referenced in list directed WRITE, PRINT, and PUNCH statements, the maximum record length in char
acters should be specified in the PROGRAM statement (section 7).
/*$^\

/3S\

List directed output is consistent with the input; however, null values, as well as slashes and repeated constants
are not produced. For real or double precision variables with absolute values in the range of 10 to 10 , an
F format type of conversion is used; otherwise, output is of the 1PE type. Trailing zeros in the mantissa and
leading zeros in the exponent are suppressed. Values are separated by blanks.
If a list item is an integer variable, array or array element, it is output in either integer or Hollerith format,
depending on its contents. If the upper 12 bits are all zeros (for positive numbers) or all ones (for negative
numbers) the item is output in integer format. In all other cases, the item is output in Hollerith format
(delimited by =-£ characters). For an array, only the first element is checked, and the whole array is output
accordingly. Therefore, a left-justified character string stored in an integer variable is usually output in
Hollerith format. Also, no integers with absolute value greater than 2 -1 can be written by list directed
output statements.
For list directed PRINT statements, a blank is output as the first character (carriage control) of each record and
also as the first character when a long record is continued on another line; for list directed WRITE statements, a
blank is output as the first character of each record only.

/^\

List directed WRITE statements include the -?-= symbols with the character output; therefore, they should be used
if the list directed record output is to be input subsequently with a list directed READ statement

60497800 C

5-11

y^^\

On a connected file under NOS 1, if the iolist of a list directed output statement ends with a comma, no carriage
control or line feed takes place after the line is output. Under SCOPE 2 and NOS/BE 1, a comma as the last
character oi* an iolist is ignored.
Example 1:
PROGRAM H(0UTPUT*/80)
X » 3*6

PRINT«**THE VALUE OF SQRT<*t Xt *> IS »#t SQRT(X)
WRITE»t*SAME WITH WRITE, SQRT(*» Xt #) IS -* tSQRT(X)
STOP
END
Output:
THE VALUE OF SQRT (3,6) IS =1.897366596131
/SAME WITH WRITE, SQRTC* 3.6 *>

^
IS

-t

1.897366596101

^

Example 2:
PROGRAM
LUW
( O U T P U T = / 8 0 * TA P E 6 » O U T P U T )
INTEGER J(4)
COMPLEX Z<2)
OOUBLEPRECISION Q
OATA J»ZtQ/l»-2»3»-4»<7.»-l.>tt-3.f2.>»WD-5/
WRITE<6,*>J
WRITE(6,«)Z»Q
STOP
END

^

Output:
1 -2 3 -<»
<7.,-i.) «-3.,2.) .00001
Example 3:
PROGRAM K (lNPUT,OUTPUT)
PRINT *," TYPE IN X",
READ*, X
PRINT*, " TYPE IN Y"
READ *, Y
END

Terminal listing under NOS 1:
TYPE IN X ? 1.234
TYPE IN Y
? 5.678

5-12

60497800

C
,/^KS

NAMELIST
The NAMELIST statement permits input and output of groups of variables and arrays with an identifying name.
No format specification is used.

r

NAMELIST/group name1 /a1 ,...,an/ ... /group namep/a1,... ,a

V group name Symbolic name which must be enclosed in slashes and must be unique within the program unit.
#^

not

a1 ,...,an List of variables or array names separated by commas. Arrays with adjustable dimensions canappear.

The NAMELIST group name identifies the succeeding list of variables or array names.
(^ A NAMELIST group name must be declared in a NAMELIST statement before it is used in an input/output state
ment. The group name may be declared only once, and it may not be used for any purpose other than a NAMELIST name in the program unit. It may appear in any of the input/output statements in place of the format
{ number. The group name cannot, however, be used in an ENCODE or DECODE statement in place of the format
number. When a NAMELIST group name is used, the list must be omitted from the input/output statement.
{ A variable or array name may belong to one or more NAMELIST groups.
Data read by a single NAMELIST name READ statement must contain only names listed in the referenced
/psv NAMELIST group. A set of data items may consist of any subset of the variable names in the NAMELIST. The
j value of variables not included in the subset remain unchanged. Variables need not be in the order in which they
f appear in the defining NAMELIST statement.
c

{

Example:

_ PROGRAM NMLIST >
10t20
f^ 10 PRINT*, * NO DATA FOUND *
STOP
20 IF (C .LE. 0.) 40,30
f* 30 A .« 8 ♦ C
II =12 ♦ II
_
WRITE
(6tSHIP)
f* ■"■ 40 STOP-.-.'
END
Input' "record:

f

•:>1-^;'

. - ) ' - '■'

-

■ . . . ■■■ ' .

-

j$SHIP 'i&?$2 • 2, ?=20., C*3.4,11=8,12=50$

60497800
/$fe\

2

C

5-13

Output:

SSHIP
A

•234E+02,

B

=

•2E*02,

C

s

.34E*01t

11

58t

12

50,

^ \

SEND
INPUT

READ (u,group name)
j*«S|\

fi

READ group name

When a READ statement references a NAMELIST group name, input data in the format described below is
read from the designated file. If the specified group name is not found before ehd-of-file, a fatal error occurs.
If the file is empty, control returns to the statement following the READ; however, a subsequent read on the
same file will result in a fatal error. Consequently, a NAMELIST read should be followed by a test for end-offile, '
Data items succeeding $ NAMELIST group name are read until another $ is encountered.
Blanks must hot appear:
Between $ and NAMELIST group name
Within array names and variable names
Blanks may be used freely elsewhere.
More than one record can be used as input data in a NAMELIST group. The first column of each record is
ignored. All input records containing data should end with a constant followed by a comma; however the last
record may be terminated by a $ without the final comma.

5-14

60497800 C

>^^\

A sample format for NAMELIST data on cards is as follows:
■terminator
00$t\

/a$
/karray name(n) = constant,... .constant,
Aarray name=constant,..., constant,
/a vanabie=constant,

data items

/*$group name

0&\

Data items separated by commas may be in three forms:
variable = constant
array name = constant,...,constant
/£$&\

array name (unsigned integer constant subscripts)=constant,...,constant
Omitting a constant constitutes a fatal error.
Constants can be preceded by a repetition factor and an asterisk.
Example:
5 * (l"-. 7, -2.4) five complex constants.
Constants may be integer, real, double precision, complex or logical. Logical constants must be of the form:
.TRUE. T. T .FALSE. .F. or F. A logical variable may be replaced only by a logical constant. A complex
variable may be replaced only by a complex constant. A complex constant must have the form (real
constant, real constant). Any other variable may be replaced by an integer, real or double precision
constant; the constant is converted to the type of the variable.
OUTPUT

rr

60497800 C
/!PSy

WRITE(u,group name)

5-15

/"^^\

/T

-^^V

PRINT(u,group name)

,**~%\

PUNCH(u.group name)

WRITE group name

fl

PRINT group name

f

PUNCH; group name

All variables and arrays, and their values, ih the list associated with the NAMELIST group name are output on
the designated file, OUTPUT, or PUNCH. They are output in the order of specification in the NAMELIST
statement; Output consists of at least three records. The first record is a $ in column 2 followed by the group
name; the last record is a $ in column 2 followed by the characters END. Each group begins at the top of a
new
page.
■
, - ' ' , "■' : ' - ' * "
"'
Example:
* £ ^ t

PROGRAM NAME (INPUT,OUTPUT, TAPE5«= INPUT , TAPE6«0UTPUT)
NAMELIST/VALUES/TOTAL,QUANT,COST
OATA OUANT,COST/15.,3.02/
TOTAL = QUANT»COST»1.3
WRITE (6,VALUES)
STOP
END

5-16

60497800 C

Output

•

S VA L U E S

f ^ TO TA L = . 5 8 8 8 9 9 9 9 9 9 9 9 9 9 E * 0 2 »
QUANT = .15E*02,
f
COST
«
.302E*01,
/^

SEND

No data appears in column 1 of any record. If a constant would cross column 80, the columns up to and
f" including 80 are filled with blanks instead and the constant begins in column 87; therefore, card boundaries will |
not be crossed if data is punched. The maximum length of any record is 136 characters (unless a smaller maxi
mum record length has been specified in the PROGRAM statement). Logical constants appear as T or F. Elements
of an
ui
aii array
array are
arc output
uuipui in
m the
uie order
uiuei in
in which
wiuun they
uiey are
aie stored.
siuicu.
y^f^N,

Records output by a WRITE (u, group name) statement may be read by a READ (u, group name)
statement using the same NAMELIST name.
Example:
NAMELIST/ITEMS/X,Y,Z

WRITE (6,ITEMS)
/f5?V

p
/SSN

Output record:
SITEHS
X

»

,73*2E*03»

Y

»

,23749E*0*»

Z

*

,222SE*02»

$£N0

This output may be read later in the same program using the following statement:
READ(5,ITEMS)

f * * A R R AY S I N N A M E L I S T
In input data the number of constants, including repetitions, given for an array name should not exceed the
number of elements in the array.

60497800
j ® \

C

5-17

Example:
INTEGER BAT(10) y
NAMELIST/HAT/BAT,DOT
READ
( 5 , H AT )

■

,,,,.>

-\

^v

2
j $ H AT B AT = 2 , 3 , 8 * 4 , D 0 T = 1 . 0 5 $ E N D

/

I'

'

.

/*Sn

The value of DOT becomes 1.05, the array BAT is as follows:
B AT ( 1 )
B AT ( 2 ) 3
B AT ( 3 ) 4
B AT ( 4 ) 4
B AT ( 5 ) 4
B AT ( 6 ) 4
B AT ( 7 ) 4
B AT ( 8 ) 4
B AT ( 9 ) . 4
BAT(10) 4 .

2

y«x

Example:
■

DIMENSION

**^^\
;

G AY ( 5 )

N A M E L I S T / D A Y / G A Y, B A Y, R A Y
READ

j
j

( 5 , D AY )

i

Input Record:
2
.
__
/ j$DAY GAY(3)~7.2,GAY(5)=3.0,BAY=2.3,RAY»77.2$
array element = constant,.,Mconstant
When data is input in this form, the constants are stored consecutively beginning with the location given by
the array element. The number of constants need not equal, but may not exceed, the remaining number of ^^\
elements in the array.
Example:

^^

DIMENSION ALPHA (6) ,
N A M E L I S T / B E TA / A L P H A , D E LTA , X , Y
READ (5,BETA)

Input

r

5-18

record:

;

^

.

,

^^\

J $ B E T A A L P H A ( 3 ) - = 7 . , S . , 9 . , , D E L T A = 2 . $ . „ ' . - 1 ■- , . - • , , .

60497800

C

0*
In storage

/ f fl - * v

ALPHA(3)
ALPHA(4)
ALPHA(5)
D E LTA

7.
8.
9.
2.

0m, Data initialized by the DATA statement can be changed later in the program by the NAMELIST statement.
Example:
\

PROGRAM COSTS (INPUT,OUTPUT,TAPE5=INPUT,TAPE6-0UTPUT)
D ATA TA X , I N T, A C C U M , A N E T / 2 3 . , 1 0 , 5 0 0 . 2 , 1 7 . 0 /

J0&S

NAMELIST/RECORDS/TAX,INT,ACCUM,ANET
FIRST - TAX + INT
SECOND - FIRST * SUM

0S\

READ(5; RECORDS)

y$^N

Input Record

f

2
7

•$RECORDS TAX-27.', ACCUM=666.2$
I

Example:
DIMENSION Y(3,5)
LOGICAL L
COMPLEX Z

^

N A M E L I S T / H U R R Y / I 1 , I 2 , I 3 , K , M , Y, Z , L
READ (5,HURRY)
Input record:
$ H U R R Y 11 = 1 , L = . T R U E . , 1 2 = 2 , 1 3 = 3 . 5 , Y ( 3 , 5 ) = 2 6 , Y ( 1 , 1 ) = 11 ,
12.0E1,13,4*14,Z=(1.,2.),K=16,M=17$
produce the following values:

0$^\,

0$®*\

*s±

11 = 1
12=2
13=3
Y(3,5)=26.0
Y ( l , l ) = 11 . 0
Y(2,l)=120.0
Y(3,l)=13.0
Z=(l.,2.)

60497800

Y(l,2)=14.0
Y(2,2)=14.0
Y(3,2)=14.0
Y(l,3)=14.0
K=16
M=17
The
rest
of
L-.TRUE.

Y

is

C

unchanged.

5-19

BUFFER STATEMENTS
Buffer ihpiit/output statements (BUFFER IN and BUFFER OUT) allow input/output operations to occur simul- <
taneously with other processing. They differ from formatted and unformatted READ and WRITE statements in
the
following
ways:
^^
A buffer statement initiates data transmission and then returns control to the program so that it can perform
other tasks while data transmission is in progress. A READ or WRITE statement completes data transmission
before
returning
control
to
the
program.

'

In a buffer statement, parity must be specified by a parity indicator. In.a READ or WRITE statement, parity
is implied by the form of the statement: an unformatted READ or WRITE implies binary mode, and a for- '
matted READ or WRITE implies coded mode.
READ and WRITE are associated with an input/output list. Buffer statements are not associated with a list;
data is transmitted to or from a block of storage.
A file processed by buffer statements must not be processed in the same program by formatted or unformatted
input/output statements, or by mass storage or CYBER Record Manager subroutines. ENDFILE, REWIND, and
BACKSPACE are valid, however. The user buffer size specification in the PROGRAM statement (section 7) should
be set to zero for these files; field length requirements are reduced for each file for which this is done.
Each buffer statement defines the location of the first and last words of the block of memory to or from which
data is to be transmitted. The address of the last word must be greater than or equal to the address of the first
word. The relative locations of the first and last word are defined only if they are the same variable or are in the
same array, common block, or equivalence class. If the first and last words do not satisfy one of these relation
ships, their relative position is undefined and a fatal error might result at execution time.
If the first word and the last word are in the same common block but not in the same array or equivalence class,
optimization might be degraded.
After execution of a buffer statement has been initiated, and before referencing the same file or any of the contents
of the block of memory to or from which data is transferred, the status of the buffer operation must be checked 'i
by a reference to the UNIT function (section 8). This status check ensures that the data has actually been trans
ferred, and the buffer parameters for the file have been restored. If a second buffer operation is attempted on the
s a m e fi l e w i t h o u t a n i n t e r v e n i n g r e f e r e n c e t o U N I T , t h e r e s u l t s a r e u n d e fi n e d , " ]
Under SCOPE 2, the block of memory specified by the buffer statement is not used as the actual buffer; all buffers
are maintained in an operating system buffer area in LCM. Therefore, the execution of a buffer statement results ")
in transfer of data between system buffers in LCM and the SCM area specified in the buffer statement.
On a CYBER 170 Model 176, a FILE control statement (section 16) specifying SBF=NO must be provided if a ****)
I level 2 or 3 (LCM) variable is used in a buffer statement.
/••K5N

BUFFER IN
.ffl^
BUFFER IN (u,p) (a,b)

5-20

60497800

J

u Unit designator.
p Integer constant or simple integer variable specifying the magnetic tape data conversion mode. The param
eter is applicable only when tape is assigned to the unit. Zero designates conversion (coded mode) and one
designates no conversion (binary mode). For the tape file characteristic, such as parity, refer to the NOS/BE
Reference Manual. Use of coded SI tapes under NOS results in a job abort by the system. Under NOS/BE,
coded SI 9-track tapes are written in binary mode.
a First variable or array element of block of memory to which data is to be transmitted.
b ' Last variable or array element of block of memory to which data is to be transmitted. If u is a unit
designator for a tape or mass storage device, the block of memory to which data is to be transmitted should
be one word larger than logically required. The additional word is needed to receive an error status from the
operating system if an input/output error occurs. Under SCOPE 2, the additional word is not needed because
no error status word is written.

/£S\

BUFFER IN transfers one record from the file indicated by the unit designator u to the block of memory beginning at a
and ending at b. If the record is shorter than the block of memory, excess locations are not changed. If the record is
longer than the block of memory excess words in the record are ignored, except when the record type is fixed (RT=F on
FILE statement), in which case an error occurs.
After UNIT has been referenced, the number of words transferred to memory can be obtained by a call to the function
LENGTH or the subroutine LENGTHX (section 8). If records do not terminate on a word boundary (in a file not
written by BUFFER OUT), the exact length of the record is returned by LENGTHX in terms of words and excess bits.

/^&N

For files with record type S, if the end of a system-logical-record (end-of-section) is encountered on a file other than
INPUT, no data is transferred, and the length returned by LENGTH is zero. The next BUFFER IN begins reading after
/*BS the end-of-section. (On INPUT, end-of-section is treated as end-of-partition). End-of-section is transparent to files
j with other record types.
!
| The UNIT function should be used to test for end-of-file after BUFFER IN; the EOF function cannot be used for this
purpose.
/Pn

Example

1:
DIMENSION CALC(51)

BUFFER IN (1,0) (CALC(1),CALC(50))
Coded information is transferred from logical unit 1 into storage beginning at the first word of the array,
CALC(l), and extending through CALC(50).
Example 2:

/!^\

PROGRAM TP (TAPF1«0,OUTPUT I
TMTCGER RFC(513>#RNUMR
RF.WTNn 1
nn a rnmmp « 1,10000
1 rijcff/q tn *1»1> IRECC1 !,R?CC512I )
2 T F ( U N T T fl M 3 , 5 , 5
3 k-st CNGTHf 1 \
' 1ENGTH RFTIJPNS (MUMPER OF ViORDS TR/-MS FFRRFP BY fMJFFFR TN
t \ p r t k ' t 1 C C R N U M P, ( R F C f t > » I " 1 * K )
3 0 ^ F O R M AT f 7 H C R E C P P D t T 5 / « 1 * , 1 0 U 0 » 1
5 STnp

/"*S\

60497800

J

5-21

Binary information is transferred from logical unit 1 into storage beginning at the first word of the array,
REC(l), and extending through the last word of the array, REC(512). The UNIT function tests the status
of the buffer operation. If the buffer operation is completed without error, statement 3 is executed. If an
end-of-file or a parity error is encountered, control transfers to statement 5 and the program stops.

BUFFER OUT
j BUFFER OUT (u,p) (a,b)

u,p,a,b are the same as for BUFFER IN
BUFFER OUT writes one record by transferring the contents of the block of memory beginning at a and
ending at b to the file indicated by the unit designator u at the parity (even or odd) indicated by p. The
length of the record is the terminal address of the record (LWA) — starting address (FWA) +1, except for
fixed-length records (RT=F on FILE statement), in which case the record length is the length (characters)
specified on the FILE statement (FL parameter). If FL is greater than (LWA - FWA + 1) x 10, an error
occurs.
The UNIT function must be referenced before another reference is made to the file or to the contents of the
block of memory.

ENCODE AND DECODE
The ENCODE and DECODE statements are used to reformat data in memory; information is transferred under
FORMAT specifications from one area of memory to another.
ENCODE is similar to a formatted WRITE statement, and DECODE is similar to a formatted READ statement.
Data is transmitted under format specifications, but ENCODE and DECODE transfer data internally; no peri
pheral equipment is involved. For example, data can be converted to a different format internally without the
necessity of writing it out on tape and rereading under another format.
ENCODE
ENCODE (c,fn,v) iolist

Variable or array name which supplies the starting location of the record to be encoded.
Unsigned integer constant or simple integer variable specifying the length of each record.
The first record starts with the leftmost character of the location specified by v and continues for c characters, 10 char
acters per computer word. If c is not a multiple of 10, the record ends before the end of the word is reached; and the
remainder of the word is blank filled. Each new record begins with a new computer word. There is no intrinsic limit
on c, except if v is a level 2,variable c must be less than or equal to 150. (ENCODE does not write a zero-byte termi
nator.) Additionally the target variable area v is blank filled for c characters prior to transfer.
fn Format designator, statement label or integer variable, which must not be a NAMELIST group
name or an *.
iolist List of variables to be transmitted to the location specified by v.
5-22

60497800 F

r*€~«t™Qr\

• ® \

Example:

PROGRAM ENCDE (OUTPUT)
INTEGER A(2),ALPHA<4)
DATA A,B»C/10HABCDEFGHIJ,10HKLMNOPQRST,5HUVWXY»7HZ123456/
ENCODE (40,1,ALPHA)A,B,C
FORMAT (2A4,A5,A6)
PRINT 2,ALPHA
FORMAT (20H1CONTENTS OF ALPHA = *,4AlO)
/*9\

STOP
END

In memory after ENCODE statement has been executed:

ABCDKLMNUV WXYZ12345
Xpw\

ALPHA (1) ALPHA (2) ALPHA (3) ALPHA (4)

If the list and the format specification transmit more than the number of characters specified per record, an
execution error message is printed. If the number of characters transmitted is less than the length specified
by c, remaining characters in the record are blank filled.
For example, in the following program which is similar to program ENCDE above, the format statement
has been changed, so that two records are generated by the ENCODE statement. A(l) and A(2) are written
with the format specification 2A4, the / indicates a new record, and the remaining portion of the 40
character record, c, is blank filled. B and C are written into the second record with the specification A5 and
A6, and the remaining characters are blank filled. The dimensions of the array ALPHA must be increased
to 8 to accommodate two 40-character records.

PROGRAM TWO (OUTPUT)
INTEGER A(2)»ALPHA<8)
DATA A, B»C/10HABCDEFGHIJ,l0HKLMNOPQRST,5HUVWXY,7HZ123456/
ENCODE (40,1,ALPHA)A,B,C
FORMAT (2A4/A5,A6)
PRINT 2 ,ALPHA
FORMAT (20H1CO'NTENTS OF ALPHA =,6A10)
STOP
EMU
/iS^s

60497800 E

5-23

Output:

UVWXYZ12345

CONTENTS OF ALPHA =ABCOKLMN

y^Sv

If this same ENCODE statement is altered to:
ENCODE (33,1,ALPHA)A,B,C
1 FORMAT (2A4/A5.A6)

>5l^?V

the contents 6f ALPHA remain the same. When a record ends in the middleof a word the remainder
of the word is blank filled (each new record starts at the beginning of the word).
Record 2

Record 1
blank
fill

ABCDKLMN

UVWXYZ1234 5

blank
fi l l

ALPHA(i) ALPHA(2) ALPHA(3| ALPHA(4) ALPHA(5) ALPHA(6) ALPHAS) ALPHA{8»

end of record

end of record

The array in core must be large enough to contain.the total number of characters specified in the ENCODE
statement. For example, if 70 characters are generated by the ENCODE statement, the array starting at
location v (if v is a single word element) must be dimensioned at least 7. If 27 characters are generated, the
array must be dimensioned 3. If only 6 characters are generated, v can be a 1-word variable.

ENCODE may be used to calculate a field definition in a FORMAT specification at object time. Assume
that in the statement FORMAT (2A 10,1m) the programmer wishes to specify m at some point in the
program. The following program permits m to vary in the range 2 through 9.
IF(M.LT.10.AND.M.GT.1)1,2
1 ENCODE (10,100,SPECMAT)M
100 FORMAT (7H(2A10,I,I1,1H))

PRINT SPECMAT,A,B,J
/^S\

<*«?\

5-24

60497800 D

/sS^I

M is tested to ensure it is within' limits; if it is not, control goes to statement 2, which could be an
error routine. If M is within limits, ENCODE packs the integer value of M with the characters
(2A10J ). This packed FORMAT is stored in SPECMAT. SPECMAT contains (2A10,Im).
A and B will be printed under specification A10, and the quantity J under specification 12, through
19 according to the value of m.
The following program is another example of forming FORMAT statements internally:
PROGRAM IGEN (OUTPUT,TAPE6=OUTPUT)
DO 9 J=l,50
ENCODE (10,7,FMT)J
7 FORMAT (2H(I,I2,1H))
9 WRITE (6,FMT)J
STOP
END

In memory, FMT is first (I 1) then (I 2), then (I 3), etc.
A variable should not be encoded or decoded upon itself, as this gives unpredictable results.
DECODE

DECODE (c,fn,v) iolist

c, fn, and v are the same as for ENCODE.
iolist is the list to receive variables from the location specified by v. iolist conforms to the
syntax of an input/output list.
DECODE is a core-to-core transfer of data similar to formatted READ. Display code characters in a variable or
an array, v, are converted under format specifications and stored in the list variables, iolist. DECODE reads from
a string of display code characters in an array or variable in memory; whereas the READ statement reads from
an input device. Both statements convert data according to the format specification, fn. Using DECODE, how
ever, the same information can be read several times with different DECODE and FORMAT statements.
Starting at the named location, v, data is transmitted according to the specified format and stored in the list
variables. If the number of characters per record is not a multiple of 10 (a display code word contains 10 dis
play code characters) the balance of the word is ignored. However, if the number of characters specified by
the list and the format specification exceeds the number of characters per record, an execution error message
is printed. DECODE processing an illegal character for a given conversion specification produces a fatal error.
If DECODE is processing an A or R format specification and encounters a zero character (6 bits of binary
zero), the character is treated as a colon under 64-character set or as a blank under 63-character set.
(Note: Internal records are not processed as zero-byte terminated records.)

60497800 E

5-25

Example: ;;
c-j* multiple of 10
DECODE (16,1,GAMMA) IX,L,M,N
1 FORMAT (2A8)
beginning of new record
Record 2

Record 1
Word 1 Word 2

Word

1

Word

2

GAMMA

A = blank

Last 4 characters of the second
word in each record are ignored.

Data transmitted under this DECODE specification would appear in storage as follows
IX=HEADER 1
L=21HEAD
M=HEADER 1
N=22HEAD

/«S^\

The following illustrates one method of packing the partial contents of two words into one. Information is
stored in core as:
LOC(l)SSSSSxxxxx

LOC(6)xxxxxDDDDD
To form SSSSSDDDDD in storage location NAME:
DECODE(10,1,LOC(6) ) ITEMP
1 F0RMAT(5X,A5)
ENCODE(10,2,NAME)LOC(1) , ITEMP
2 FORMAT(2A5)

The DECODE statement places the last 5 display code characters of LOC(6) into the first 5 characters of
ITEMP. The ENCODE statement packs the first 5 characters of LOC(l) and ITEMP into NAME.
Using the R specification, the example above could be shortened to:
ENC0DE(10,1,NAME)L0C(1),L0C(6)
1 FORMAT(A5,R5)

5-26

60497800 E

FILE MANIPULATION STATEMENTS
Three statements can be used to manipulate files: REWIND, BACKSPACE, and ENDFILE.
REWIND

/T

REWIND u

ifsP^S

The REWIND operation positions a file at beginning of information so that the next input/output operation
references the first record in the file, even though several ENDFILE statements may have been issued to that
unit since the last REWIND. If the file is already at beginning of information, the statement acts as a do-nothing
statement. (Refer to BACKSPACE/REWIND, section 16 for further information.)
Example:
REWIND 3

BACKSPACE
BACKSPACE u

Unit u is backspaced one record. When the file is positioned at beginning of information, this statement acts
as a do-nothing statement. If BACKSPACE is the first operation on a file positioned at beginning-of-information,
a non-fatal Record Manager error results. A backspace operation should not follow a list directed read on a file.
Example:
DO 1 LUN = 1,10,3
1 BACKSPACE LUN

Files TAPE1, TAPE4, TAPE7, and TAPE 10 are backspaced one record.
ENDFILE
ENDFILE u

0S>S\

An end of partition is written on the designated unit.
Note: When ENDFILE is used on a file defined with W type records, an end-of-partition is not physically
written but is marked in the control word. For all other record types a level 17 zero-length PRU is written.
60497800 E

5-27

To ensure file integrity, ENDFILE should not be the first operation on a file.
Meaningful results are not guaranteed if ENDFILE is used on a file processed by mass storage subroutines. '
Example:
IOUT - 6L0UTPUT .
END FILE IOUT

/f^*^"X

End of partition is written on the file OUTPUT.
End of partition is the file boundary recognized by the EOF function (section 8).
For records written by an unformatted WRITE statement, an end-of-partition boundary is detected as an
end of section (end-of-record) by the operating system.

5-28

60497800

E

INPUT/OUTPUT LISTS AND FORMAT STATEMENTS

j0&\

This chapter covers input/output lists and FORMAT statements. Input/output statements are covered in
\

section

5.

C INPUT/OUTPUT LISTS
^!Ss^ The list portion of an input/output statement specifies the items to be read or written and the order of
[ transmission. The input/output list can contain any number of items. List items are read or written sequentially
from left to right.
\ If no list appears on input, a record is skipped. Only Hollerith information from the FORMAT statement can
be output with a null (empty) output list.
f A list item consists of a variable name, an array name, an array element name, or an implied DO list. On output
the data list can include arbitrarily long Hollerith constants and arithmetic expressions. No expression in an
^^ input/output list can reference a function if such reference would cause any input/output operations (including
DEBUG output) to be executed or would cause the value of any element of the input/output statement to be
changed.
\ Multiple lists can appear, separated by commas, each enclosed in parentheses.
An array name without subscripts in an input/output list specifies the entire array in the order in which it is
f" stored. The entire array (not just the first word of the array) is read or written.
Subscripts in an input/output list may be any valid subscript (section 1).
Examples:
f

f^

READ

(2,100)A,B,C,D
READ (3,200)A,B,C(I).D(3,4),E(U,7),H
READ (4,101 )J.A(J),I,B(U)

READ

( 2 , 2 0 2 ) D E LTA
READ (4,102)DELTA(5*J+2,5*l-3.5*l<),C/D(l+7)
READ <3,2)A,(B.C,D),(X,Y)

An implied DO list is a list followed by a comma and an implied DO specification, all enclosed in parentheses.
^ ^ A n i m p l i e d D O s p e c i fi c a t i o n t a k e s o n e o f t h e f o l l o w i n g f o r m s :
i

=

m..

.m^rri.,

i

=

m1,m„

0&*\
The elements i, mj, n^, and m^ have the same meaning as in the DO statement. The range of an implied DO
specification is that of the implied DO list. The values of i, mj, n^, and nv^ must not be changed within the
fm\ range of the implied DO list by a READ statement.

60497800
Jps.

A

6-1

yf^^V

x^^x

On input or output, the list is scanned and each variable in the list is paired with the field specification
provided by the FORMAT statement. After one item has been input or output, the next format specification
is taken together with the next element of the list, and so on until the end of the list.
Example:
READ (5,20)L,M,N
20 FORMAT (13,12,17)

Input record
./^fsX

/lO
IOC
C 2 2223456712

100 is read into the variable L under the specification 13, 22 is read into M under the specification
12, and 3456712 is read into N under specification 17.
^J^y

Reading more data than is in the input stream produces unpredictable values. The EOF function described in
section 8 can be used to test for the end of the data.
IMPLIED DO IN I/O LIST
Input/output of array elements may be accomplished by using an implied DO loop. The list of variables
followed by the DO loop index, is enclosed in parentheses to form a single element of the input/output list
Example:
READ (5,100) (A(l),l=1,3)
/*^y

has the same effect as the statement
READ

(5,100)

A(1),A(2),A(3>

_

The general form for an implied DO loop is:
(

.

.

.

((Iist,i1=m1,m2,m3),i2=j.|,

J2.

J3)

'n=k1'k2'k3'

'*>

m,j,k are unsigned integer constants or predefined positive integer variables. If m3, j3 or k3 is omitted, /<_
a one is used for incrementing.
*l"**n are integer control variables. A control variable should not be used twice in the same implied DO
nest, but array names, array elements, and variables may appear more than once. The value of a control l
variable within an implied DO specification is defined only within that specification; it should not be
referenced
outside
the
s p e c i fi c a t i o n .
^^^
The first control variable (ij) defined in the list is incremented first, ij is set equal to mj and the
associated list is transmitted; then ij is incremented by m3, until m2 is exceeded. When the first
control variable reaches m2, it is reset to m^; the next control variable at the right (i2) is incremented; ^
and the process is repeated until the last control variable (in) has been incremented, until k2 is exceeded.

6-2

60497800

D

'

The general form for an array is:
(^ (((A(l,J,K)#l=m1,m2,m3),J=n1,n2,n3),K=kl,k2,k3)

Example:
READ (2,100) ((A(JV,JX),JV=2.20,2),JX=1,30)
READ (2,200) (BETA(3*JON+7),JON=JONA,JONB,JONC)
READ (2.300) (((ITMLIST(I,J+1.K-2),I=1,25)0J=2,N),K=IVAR,IVMAX,4)

An implied DO loop can be used to transmit a simple variable more than one time. For example, the list
^^^ item (A(K),B,K=1,5) causes the variable B to be transmitted five times. An input list of the form
(; K,(A(I),I= 1,K) is permitted, and the input value of K is used in the implied DO loop. The index variable
in an implied DO list must be an integer variable.
Examples of simple implied DO loop list items:
READ (1,400) (A(l),l=1,10)
400 FORMAT (E20.10)

The following DO loop would have the same effect:
DO 5 1=1,10
5 READ (1,400) A(l)

■■ ' -

Example:
CAT,DOG, and RAT will be transmitted 10 times each with the following iolist
(CAT, DOG, RAT, 1=1.10)

Implied DO loops may be nested.
Example:
DIMENSION MATRIX(3,4,7)
READ (3.100) MATRIX
100 FORMAT (16)

Equivalent to the following:
(^

DIMENSION

M AT R I X C 3 . 4 . 7 )
READ (3,100) (((MATRIX(U,K),I=1,3),J=1,4),K=1,7)

The list is similar to the nest of DO loops:
DO 5 K=1.7
DO 5 J=1,4
DO 5 1=1,3
5 READ (3,100) MATRIX(I,J,K)

60497800

A

6.3

ys^v

Example:
The following statement transmits nine elements into the array E in the order: E(l,l), E(l,2), E(l,3), "^)
E(2,l), E(2,2), E(2,3), E(3,l), E(3,2), E(3,3)
READ (1,100) ((E(U)^J=1,3).I=1,3)

Example:
READ (2,100) (((((A(I,J,K),B(I,L).C(J,N),I=1,10),J=1,5),
X K=1.8),L=1,15),N=2,7)

Data is transmitted in the following sequence:
A(l,l,l),
B(l,l),
C(l,2),
A(2,l,l),
B(2,l),
C(l,2)...
...A(10,l,l), B(10,l), C(l,2), A(l,2,l), B(l,l), C(2,2)...
...A(10,2,l),
B(10,l),
C(2,2),...A(10,5,1),
B(10,l),
...A(10,5,8), B(10,l), C(5,2),...A(10,5,8), B(10,15), C(5,2)...

C(5,2)...

1

Data can be read into or written from part of an array by using the implied DO loop. ""^
Examples:
READ (5,100) (MATRIX(I),I=1,10)
100 FORMAT (F7.2)

Data (consisting of one constant per record) is read into the first 10 elements of the array MATRIX. "^
The following statements would have the same effect:
DO 40 i = 1,10
40 READ (5,100) MATRIX(l)
100 FORMAT (F7.2)

In this example, numbers are read from unit 5, one from each record,into the elements MATRIX(l) /*se\
through MATRIX(IO) of the array MATRIX. The READ statement is encountered each time the DO
loop is executed; and a new record is read for each element of the array. Each execution of a READ
s t a t e m e n t r e a d s a t l e a s t o n e r e c o r d r e g a r d l e s s o f t h e F O R M AT s t a t e m e n t . > « 5 * \
READ (5,100) (MATRIX(I),I=1,10)
100 FORMAT (F7.2)

In the above statements, the implied DO loop is part of the READ statement; therefore, the FORMAT
statement specifies the format of the data input and determines when a new record will be read.
If statement 100 FORMAT (F7.2) had been 100 FORMAT (4F20.10), only three records would be read.
To read data into an entire array, it is necessary only to name the array in a list without any subscripts. ^^.
Example:
DIMENSION

B

(10,15)

^

READ (12,13) B

is equivalent to
READ (12,13) ((BO,J),I=1,10),J=1,15)

The

6-4

entire

array

B

will

be

60497800

transmitted

in

both

cases.

A

***$,

FORMAT STATEMENT
Input and output can be formatted or unformatted. Formatted information consists of strings of display code
characters. Unformatted information consists of strings of binary word values in the form in which they
normally appear in storage. A FORMAT statement or variable format specification is required to transmit
formatted information.
5 7

n

sn

FORMAT (fsr

sn

fs

.K)

Statement label which must appear

K

Set of one or more field specifications separated by commas and slashes and
optionally grouped by parentheses

Note that the syntax sn FORMAT (, that is, a statement label followed by the word FORMAT followed by
a left parenthesis, is understood by the FORTRAN compiler to be a FORMAT statement, regardless of
previous conditions or uses of the word FORMAT in the user program.
Example:
READ (5,100) INK.NAME.AREA
100 FORMAT (10X,I4,I2,F7.2)

FORMAT is a non-executable statement which specifies the format of data to be moved between input/output
device and main memory. It is used in conjunction with formatted input and output statements, and it may
appear anywhere in the program.
The FORMAT specification is enclosed in parentheses. Blanks are not significant except in Hollerith field
specifications.
/*fp\,

Generally, each item in an input/output list is associated with a corresponding field specification in a FORMAT
statement. The FORMAT statement specifies the external format of the data and the type of conversion to
be used. Complex variables always correspond to two field specifications. Double variables correspond to one
floating point field specification (D, E, F, G) or two of any other kind. The D field specification corresponds
to exactly one list item or half of a complex item.
The type of conversion should correspond to the type of the variable in the input/output list. The
FORMAT statement specifies the type of conversion for the input data, with no regard to the type of the
variable which receives the value when reading is complete.
For example:
INTEGER N
READ (5,100) N
100 FORMAT (F10.2)

A floating point number is assigned to the variable N which could cause unpredictable results if N is
referenced later as an integer.
60497800 E
/*P*N

6-5

-iCS^\

DATA CONVERSION
The following types of data conversions are available:
srEw.d Single precision floating point with exponent
s r E w. d E e « . . . S i n g l e p r e c i s i o n f l o a t i n g p o i n t w i t h e x p l i c i t l y s p e c i f i e d e x p o n e n t l e n g t h * 1
sr Ew.dDe Single precision floating point with explicitly specified exponent length
srFw.d

Single

precision

fl o a t i n g

point

without

exponent

*j

srGw.d Single precision floating point with or without exponent
srDw.d

Double

precision

fl o a t i n g

point

with

exponent

"^)

rlw Decimal integer conversion
rlw.z

Decimal

integer

with

minimum

number

of

digits

s p e c i fi e d

'l

rLw Logical conversion
rAw

Character

conversion

,/*5S^

rRw Character conversion
rdw

,

Octal

integer

conversion

<-SB^

rOw.z Octal integer with minimum number of digits specified
rZw Hexadecimal conversion
srVw.d Variable type conversion

E, F, G, D, I, L, A, R, O, and Z are the codes which indicate the type of conversion.
w Non-zero, unsigned integer constant specifying the field width in number of character pos
itions in the external record. This width includes any leading blanks, + or - signs, decimal
point,
and
exponent.
d Unsigned integer constant specifying the number of digits to the right of the decimal point
within
the
fi e l d .
On
output
all
numbers
are
rounded.

/^^1)
>a^

Non-zero, unsigned integer constant specifying the number of digits in the exponent.
17
Non-zero, unsigned integer constant less than 2 -1 specifying the number of times the con
version code is to be repeated.
Optional scale factor.
z Unsigned integer constant specifying the minimum number of digits to be output. ^^)
The field width w must be specified for all conversion codes. If d is not specified for w.d, it is
assumed
to
be
zero,
w
must
be
>
d.
^

■
.*»
■V
■
W
*fIJ
6-6

60497800

A

Field separators are used to separate specifications and groups of specifications. The format field separators
are the slash (/) and the comma. The slash is also used to specify demarcation of formatted records.

CONVERSION SPECIFICATION
Leading blanks are not significant in numeric input conversions; other blanks are treated as zeros. Plus
signs can be omitted. An all-blank field is considered to be minus zero, except for logical input, where an
f^ all-blank field is considered to be FALSE. When an all-blank field is read with a Hollerith input specification,
each blank character is translated into a display code 55 octal.
f* For the E, F, G, and D input conversions, a decimal point in the input field overrides the decimal point
specification of the field descriptor.
r^ The output field is right-justified for all output conversions. If the number of characters produced by the
conversion is less than the field width, leading blanks are inserted in the output field. The number of
characters produced by an output conversion must not be greater than the field width. If the field width is
f^ exceeded, asterisks are inserted throughout the field.
Complex data items are converted on input/output as two independent floating point quantities. The
f^ format specification uses two conversion elements.
/"P&s

Example:
COMPLEX A.B,C,D
WRITE (6,10)A
10 FORMAT (F7.2,E8.2)
READ (5,11) B,C,D
11 FORMAT (2E10.3(F8.3,F4.1))

Data of differing types may be read by the same FORMAT statement. For example:
10 FORMAT (I5.F15.2)

specifies two numbers, the first of type integer, the second of type real.
READ (5,15) NO,NONE,INK,A,B,R
15 FORMAT (3I5.2F7.2.A4)

reads three integer values, two real values, and one character string.

Iw and Iw.z INPUT

The I conversion is used to input decimal integer constants.
Iw Iw.z
w is a decimal integer constant designating the total number of characters in the field including signs and
blanks, z is ignored on input.

60497800

A

6-7

The plus sign may be omitted for positive integers. When a sign appears, it must precede the first digit in
the field. Blanks are interpreted as zeros. An all blank field is considered to be minus zero. Decimal points
are not permitted. The value is stored in the specified variable. Any character other than a decimal digit,
blank, or the leading plus or minus sign in an integer field on input will terminate execution.
Example:
READ(2,10)I,J,K,L,M,N
10 FORMAT (I3,I7,I2,I3,I2,I4)

Input Record:

f

.59lbb-15b1fl 8^7^11341"
3
?
23
2
4

In storage:
I contains 139
J contains -1500
K contains 18

L contains 7
M contains -0
N contains 104

r^%S\

Iw and lw,z OUTPUT

The I specification is used to output decimal integer values.
I w I w. z
w is a decimal integer constant designating the total number of characters in the field including signs and
blanks. If the integer is positive the plus sign is suppressed. Numbers in the range of-(259-l) to 259-l
(2s9-1=576 460 752 303 423 487) are output correctly.
z is a decimal integer constant designating the minimum number of digits output. Leading zeros are generated
when the output value requires less than z digits, if z=0, a zero value will produce all blanks. If z=w, no blanks
will occur in the field when the value is positive, and the field will be too short for any negative value. Not
specifying z produces the same results as z=l.

<^SS\

.■^^"*\

The specification Iw or Iw.z outputs a number in the following format:
ba...a
b Minus sign if the number is negative, or blank if the number is positive
a...a May be a maximum of 18 digits
The output quantity is right justified with blanks on the left.
If the field is too short, all asterisks occupy the field.
Example:
/*5gv

PRINT 10,U,K
10 FORMAT (19,110.15.3)

6-8

I contains -3762
J contains +4762937
K contains + 13

60497800 A

Result:

1st blank taken as
printer control character
Example:
WRITE (6.100)N,M,I
100 FORMAT (15,16,19)

• • • • • • bbbbbb205I
bb20[

Result:

1st blank taken
as printer control
character

/IPN

N contains +20
M contains -731450
I contains +205

specification too
small5* indicates field
is too short

Ew.d, Ew.dEe and Ew.dDe OUTPUT

E specifies conversion between an internal real value and an external number written with exponent.
Ew.d

Ew.dEe

Ew.dDe

w is an unsigned integer designating the total number of characters in the field, w must be wide enough to
contain digits, plus or minus signs, decimal point, E, the exponent, and blanks. Generally, w > d + 6
or w > d + e + 4 for negative numbers and w>d + 5orw>d + e + 3for positive numbers. Positive
numbers need not reserve a space for the sign of the number. If the field is not wide enough to contain the
output value, asterisks are inserted throughout the field. If the field is longer than the output value, the quan
tity is right justified with blanks on the left. If the value being converted is indefinite, an I is printed in the
field; if it is out of range, an R is printed.
/f|St*s

d specifies the number of digits to the right of the decimal within the field.
e specifies the number of digits in the exponent and is limited to 6 or fewer digits.
/|P^\

The Ew.d specification produces output in the following formats:
b.a...aE ± ee For values where the magnitude of the exponent is less than one hundred
b.a...a ± eee For values where the magnitude of the exponent exceeds one hundred
b is a minus sign if the number is negative, and a blank if the number is positive
a...a are the most significant digits of the value correctly rounded

60497800 E

6-9

/**sgjw

When the specification Ew.dEe or .Ew.dDe is,used, the exponent is denoted by E or D and the number of
digits, used for the exponent field not counting the letter and sign is determined by e. If e is specified too
small for the value being output, the entire field width as specified by w will be filled with asterisks.
Examples:
WRITE (2,10)A A contains -67.32 or +67.32
10 FORMAT (E10.3)

>fl3?^s

Result: -.673E+02 or b.673E+02
WRITE (2,10)A
10 FORMAT (E13.3)
X^tv

Result: bbb-.673E+02 or bbbb.673E+02

If an integer variable is output under the Ew.d specification, results are unpredictable since the internal format >sa\
of real and integer values differ. An integer value does not have an exponent and will be printed, therefore, as
a very small value or 0.0.
Ew.d, Ew.dEe and Ew.dDe INPUT

E specifies conversion between an external number written with an exponent and an internal real value.
Ew.d Ew.dEe Ew.dDe
w is an unsigned integer designating the total number of characters in the field, including plus or minus
signs, digits, decimal point, E and exponent. If an external decimal point is not provided, d acts as a -^
negative power-of-10 scaling factor. The internal representation of the input quantity is:
(integer

subfield)x

10"d

x

10

 3 +3 D3 D*3 D+ 3
The range, in absolute value, of permissible values is IO"293 to IO322 approximately. Smaller numbers are treated
as zero; larger numbers cause a fatal error message.
Valid subfield combinations:
+ 1.6327E-04

Integer-fraction-exponent

-32.7216

integer-fraction

+ 328 + 5

integer-exponent

.629E-1

fraction-exponent

+ 136

integer only

136

integer only

.07628431

fraction only

E-06 (interpreted as zero)

exponent onlv

If the field length specified by w in Ew.d is not the same as the length of the field containing the input
number, incorrect numbers may be read, converted, and stored. The following example illustrates a
situation where numbers are read incorrectly, converted and stored; yet there is no immediate indication
that an error has occurred:
READ (3,20) A,B,C
20 FORMAT (E9.3,E7.2,E10.3)

60497800 A

6-11

On the input record, quanities are in three adjacent fields, columns 1-24:
f**s3$&v

+6 .47E-01J-2.36 f 5. 321E+02
,
*
■— *
*
9
5
10
9

7

10

|+6.47E-oT|
+6.47E-0lF2". 56+51
+6.47E-01-2. 36+5|.321E+02bb|

First, +647E-01 is read, converted and placed in location A. The second specification E7.2 exceeds
the width of the second field by two characters. The number -2.36 + 5 is read instead of -2.36. The
specification error (E7.2 instead of E5.2) caused the two extra characters to be read. The number
read (-2.36 + 5) is a legitimate input number. Since the second specification incorrectly took two
digits from the third number, the specification for the third number is now incorrect. The number
.321E + 02bb is read. Trailing blanks are treated as zeros; therefore the number .32IE+ 0200 is read
converted and placed in location C. Here again, this is a legitimate input number which is converted
and stored, even though it is not the number desired.
Examples of Ew.d input specifications:
Input Field

Specification

Converted Value

+143.26E-03

E11.2

.14326

All subfields present

327.625

E7.3

327.625

No exponent subfield

4.376

E5

4.376

-.0003627+5

El 1.7

-36.27

Integer subfield only a minus
sign and a plus sign appears
instead of E

-.0003627 E5

E11.7

-36.27

Integer subfield left of decimal
contains minus sign only

blanks

Ew.d

-0.

All subfields empty

E+06

El 0.6

0.

No integer or fraction subfield;
zero stored regardless of expo
nent field contents

LbEbl

E6.3

10.

Blanks are interpreted as zeros

Remarks

. No d in specification

" ^

1

,

<**,*\

6-12

60497800 A

/■Jfcv

Fw.d OUTPUT

The F specification outputs a real number without a decimal exponent.
Fw.d
w is an unsigned integer which designates the total number of characters in the field including the
sign (if negative) and decimal point, w must be > d + 2.
d specifies the number of places to the right of the decimal point. When d is zero, only the digits to the
left of the decimal and the decimal point are printed.
The plus sign is suppressed for positive numbers. If the field is too short, all asterisks appear in the output field.
If the field is longer than required, the number is right justified with blanks on the left. If the value being
converted is indefinite, an I is printed in the field; if it is out of range, an R is printed.
The specification Fw.d outputs a number in the following format:
■

decimal

point

b...afa...a
b Minus sign if the number is negative, or blank if the number is positive.
Examples:
PRINT Statement

Printed Result

Value of A

FORMAT Statement

+32.694

10 FORMAT (1H,F6.3)

PRINT 10,A

32.694

+32.694

11 FORMAT (1H.F10.3)

PRINT 11,A

bbbb32.694

-32.694

12 FORMAT (1H,F6.3)

PRINT 12,A

******

.32694

13FORMAT(1H,F4.3,F6.3)

PRINT 13,A,A

.327bb.327

The specification 1H is the carriage control character.

Fw.d INPUT

On input F specification is treated identically to the E specification.

60497800 A

6-13

Examples of the F format specification:
Input Field

Specification

Converted Value

Remarks
««3^\

367.2593

F8.4

367.2593

-4.7366

F7

-4,7366

No d in specification

.62543

F6.5

.62543

No integer subfield

.62543

F6.2

.62543

Decimal point overrides d of speci
fication

+144.15E-03

F11.2

.14415

Exponents are allowed in F input,
and may have P scaling

5bbbb

F5.2

500.00

No fraction subfield; input number
converted as 50000x10"2

bbbbb

F5.2

-0.00

Blanks in input field interpreted as
-0

Integer and fraction field

.-^^*\

Gw.d INPUT

Input under control of G specification is the same as for the E specification. The rules which apply to the E
specification apply to the G specification.
Gw.d
/^^\
w

Unsigned integer which designates the total number of characters in the field including
E, digits, sign, and decimal point

d

Number of places to the right of the decimal point

Example:

<^S5\

READ (5,11) A,B,C
11 FORMAT (G13.6.2G12.4)

Gw.d OUTPUT

Output under control of the G specification is dependent on the size of the floating point number being
converted. The number is output under the F conversion unless the magnitude of the data exceeds the range
which permits effective use of the F. In this case, it is output under E conversion with an exponent.

>S^V

6-14

60497800 A

Jp"*»\

Gw.d
w

Unsigned integer which designates the total number of characters in the field including
digits, signs and decimal point, the exponent E, and any leading blanks.

d Number of significant digits output.
If a number is output under the G specification without an exponent, four spaces are inserted to the right of
the field (these spaces are reserved for the exponent field E±00). Therefore, for output under G conversion
w must be greater than or equal to" d + 6. The six extra spaces are required for sign and decimal point plus
four spaces for the exponent field.
Example:
WRITE (7.200) YES
200 FORMAT (G10.3)

Output: b77.1bbbb

YES contains 77.132

b denotes a blank

If the decimal point is not within the first d significant digits of the number, the exponential form is used
(G is treated as if it were E).
Example:
WRITE (4,100) EXIT
100 FORMAT (G10.3)

Output:

EXIT contains 1214635.1

.121E+07

Example:
READ (5,50) SAMPLE

WRITE (6,20) SAMPLE
20 FORMAT (1X,G17.8)

0^r\

Data read by
READ statement

Data Output

Format Option

.1415926535bE-10

.14159265E-10

E conversion

.8979323846

.89793238

F conversion

2643383279.

.26433833E+10

E conversion

-693.9937510

-693.99375

F conversion

60497800 A

6-15

Dw.d OUTPUT

Type D conversion is used to output double precision variables. D conversion corresponds to E conversion
except that D replaces E at the beginning of the exponent subfield. If the value being converted is
indefinite, an I is printed in the field; if it is out of range, an R is printed.
Examples of type D output:
DOUBLE PRECISION A,B,C
A = 111111.11111
B = 222222.22222
C = A+ B
WRITE (2,10) A,B,C
10 FORMAT (3D23.11)

^ ^ K

.11111111111D+06 .22222222222D+06 .33333333333 D+06

The specification Dw.d produces output in the following format:

0*3^k

- decimal point

bta...a±eee -308 < eee -Z 337
b.a...aD±ee

0<

ee-s

99

Minus sign if the number is negative, or blank if the number is positive
a...a

Most significant digits

ee

Digits in the exponent
^ § N

Dw.d INPUT

D conversion corresponds to E conversion except that D replaces E at the beginning of the exponent
subfield.
The following diagram illustrates the structure of the input field:

r ^ * ^ \

input field

+
digit

D or E .
integer
subfield

6-16

fraction
subfield

exponent

60497800 A

Ow INPUT

Octal values are converted under the O specification.
Ow
w is an unsigned integer designating the total number of characters in the field. The input field may contain
a maximum of 20 octal digits (0 through 7). Blanks are allowed and a plus or minus sign may precede the first
octal digit. Blanks are interpreted as zeros and an all blank field is interpreted as minus zero. A decimal point is
not allowed.
Example:
INTEGER P.Q.R
READ 10,P,Q,R
10 FORMAT (010,012,02)

Input Record:
/3737373737t666b6644b444r-0
I

10

12

2

Input storage (octal representation):
P 00000000003737373737
00000000666066440444
77777777777777777777

Ow OUTPUT
The O specification is used to output the internal representation in octal.
O w O w. d
w is an unsigned integer designating the total number of characters in the field. If w is less than 20, the
rightmost digits are output. For example, if the contents of location P were output with the following
statement the digits 3737 would be output.
WRITE (6,1) P

location P 00000000003737373737

100 FORMAT (1X,04)

/S^v

If w is greater than 20, the 20 octal digits (20 octal digits = a 60- bit word) are right justified with blanks
on the left.
For example, if the contents of location P are output with the following statement
WRITE (6,200) P
200 FORMAT (1X,022)

60497800 A

6-17

Output would appear as follows:
bb000Q0000003737373737 b = blank
A negative number is output in one's complement internal form.
If d is specified, the number is printed with leading zero suppression and with a minus sign for negative
numbers. At least d digits will be printed. If the number cannot be output in w octal digits, all asterisks
will fill the field.

,/r^^\

Example:
I =-11
WRITE (6,200) I

Output would appear as follows:
bb77777777777777777764

^

The specification Ow produces a string of up to 20 octal digits. Two octal specifications must be used for variables
whose
type
is
complex
or
double
precision.
Zw

INPUT

and

/s^

OUTPUT

^

Hexadecimal values are converted under the Z specification.
Zw
w is an unsigned integer designating the total number of characters in the field. The input field contains digits 0 ^
through. 9 and the letters A through F. A maximum of 15 hexadecimal digits is allowed; blanks and a plus or
minus sign may precede the first hexadecimal digit.
Input values are stored right justified with zero fill. On output, if w is greater than 15, leading blanks are
written. If w is less than 15, digits are taken from the right. If w is greater than the number of digits, ^
leading zeros are written.
Example:
*-

/s

READ 20, A,B
20 FORMAT (26.Z2)

Input record:

{

6-18

16
8
AC53F93D
/^s\

60497800

E

JP\

Location A:

Location B:

O0OOOOO0OAC53F9

00000000000003D

<§&&*.

WRITE 30,A,B
30 FORMAT (1X,Z3.1X,Z3)

0&\
Output:
3F9 03D

0^\
Aw INPUT

The A specification is used to input character data
Aw
w is an unsigned integer designating the total number of characters in the field.
/SEN

Character information is stored as 6-bit display code characters, 10 characters per 60-bit word. For example, the
digit 4 when read under A specification is stored as a display code 37. If w is less than 10, the input quantity is
stored left justified in the word; the remainder of the word is filled with blanks.
Example:
READ (5,100) J
100 FORMAT (A7)

0iS\

jfftSav

60497800 E

6-18.1/6-18.2

/&^.

/$^\

Z ^

Input record:
/example
When EXAMPLE is read it is stored left justified in the 10 character word
1234567890

MfattlEMII
If w is greater than 10, the rightmost 10 characters are stored and remaining characters are ignored.
Example:
READ (5,200)K
200 FORMAT (A13)

Input record:
1
13
'SPECIFICATION

f

In storage:
jp\
12345678910

|(Ml|C|VW0iN|
READ (5,10) L,M,N
10 FORMAT (A10.A10.A5)

Input record:

f

THIS IS AN EXAMPLE
^l

|

10

10

In storage:
12345678910

M e|x|a[mf^e

N| tKJNfOJW

/fi^K

Aw OUTPUT

The A specification is used to output alphanumeric characters.
Aw

60497800

E

6-19

/e£&$S.

w is an unsigned integer designating the total number of characters in the field. If w is less than 10,
the leftmost characters in the word are printed. For example, if the contents of location M in the Aw
input example are output with the following statements:
WRITE (6,300)M
300 FORMAT (1X,A4)

r"^S5\

In storage:

Characters EXAM are output
If w is greater than 10, the characters are output right-justified in the field, with blanks on the left. For
example, if M in the previous example is output with the following statements:
WRITE (6,400)M

<<314159

c
F 1 3 . 6)
c 1 P F1 3 . 6 )

-3«. 1 4 1 5 9 3
- 3 1 .•415927
( 3PF13, 6 > - 3141., 5 9 2 6 5 4

Ew.d and Dw.d SCALING
INPUT

Ew.d scaling on input is the same as Fw.d scaling on input.
OUTPUT
The effect of the scale factor nP is to shift the output coefficient left n places and reduce the exponent by n.
In addition, the scale factor controls the decimal normalization between the coefficient and the exponent such
that: if n < 0, there will be exactly -n leading zeros and d + n significant digits after the decimal point; if
n > 0, there will be exactly n significant digits to the left of the decimal point and d - n + 1 significant digits
to the right of the decimal point. For example, the number -3.1415926536 is represented on output under the
indicated Ew.d scaling as follows:

(-3PE21U
(-1PE20.
(
E20.
(
1PE20.
(
3PE20,

4)
4)
<♦)
4)
4)

-.0003E+04
-.0314E+02
-.3142E+C1
-3.1416E+G0
-314.16E-C2

Gw.d SCALING
INPUT
Gw.d scaling on input is the same as Fw.d scaling on input.

OUTPUT
(^ The effect of the scale factor is nullified unless the magnitude of the number to be output is outside the range
that permits effective use of F conversion (namely, unless the number N < 10"' or N > 10 ). In these cases,
the scale factor has the same effect as described above for Ew.d and Dw.d scaling. For example, the numbers
-3.1415926536 and -.00031415926536 are represented on output under the indicated Gw.d scaling as follows:

60497800

C

6-23

^C^N

(-3PG20. 6)
(-1PG20. 6)
( 620. 61
( 1PG20. 6)
( 3PG20, 6)
( 5PG20, 6)
( 7PG20. 6)

3.14159
3.1*tl59
3.14159
3.1<»i59
-3.1*1159
3.1^159
3.1

60497800 A

6-25

produces output record:
LMAX=b1.50

nH INPUT

/rf>~3$\

The H specification can be used to read Hollerith characters into an existing H field within the FORMAT
statement.

'^

Example:
Source program:
READ
10 FORMAT (27Hbbbbbbbbbbbbbbbbbbbbbbbbbbb)

Input

(2,10)

'^

record:

"^

r

bTHIS IS A VARIABLE HEADING

After a READ statement, the FORMAT statement labeled 10 contains the alphanumeric information read from the
input record; a subsequent reference to statement 10 in an output statement acts as follows:
WRITE (6,10)

produces the output line:
THIS IS A VARIABLE HEADING

Character strings delimited by a pair of * or =£ symbols can be used as alternate forms of the H specification
for output. The paired symbols delineate the Hollerith field. This specification need not be separated from
other specifications by commas. If the Hollerith field is empty, or invalidly delimited a fatal execution error
occurs, and an error message is printed.

/*^\

An asterisk cannot be output using the specification * *. For example,
PRINT 1
1 FORMAT (»ABC*DE«)

The second * in the FORMAT statement causes the specification to be interpreted as * ABC* and
DE*,
which
is
not
valid.
,
/

6-26

60497800

A
/fiS^s

The H specification or-?*..; -^ could be used to output this correctly:
PRINT 1
1 FORMAT (7H ABC*DE)

Output appears as follows: ABC*DE
PRINT 2
2 FORMAT (=#= ABC*DE=#

/0Ofc\t

Output appears as follows: ABC*DE
^ can be represented within #... # by two consecutive -j* symbols.
Example:
PRINT 3
f^

0^\

3

F O R M AT

(^

DON

=£#T=£)

Output examples:
PRINT 10
10 FORMAT { * SUBTOTALS*)

produces the following output:
SUBTOTALS
WRITE (6,20)
20 FORMAT ( -V^bRESULT OF CALCULATIONS IS AS FOLLOWS =£)

produces the following output:
RESULT OF CALCULATIONS IS AS FOLLOWS
PRINT 1, =5*SQRT£ SQRT(4.)
1 FORMAT (A10.E10.2)

produces the following output:
SQRT

2.0

Note: =£ is output as " on some printers.
The *...* or #...=£ specification can be used to read alphanumeric data; however, the effect differs depending
on whether *...* or ^...-v^ occurs in an actual FORMAT statement or in a format specification contained in a
variable or array. When the READ statement contains a constant specifying a FORMAT statement, alphanu
meric characters are read into the *...* or =£...=£ specification. When a name occurs in the READ statement
to specify the format information (variable format), characters in the input stream are skipped and no change
is made in the *...* or -v*...-^ specification.

60497800

t

A

6-27

Jh IfOkMAT statements,^Ihe";*...* or $•& specification is changed to"rill;., at compile jtoe;.'T^s;c^nversion
d o e s ^ n o t ; o c b u r w i t h - , v a r i a b l e f o r m a t s ^ p e c i f i c a t i o r i s . ' " * ' , , ' ■' V , y

END OF RECORD SLASH
The slash indicates the end of a record anywhere in the FORMAT specification. When a slash is used to separate
field specification elements, a comma is allowed but not required. Consecutive slashes can be used and need not
be separated from other elements by commas. When a slash is the last format specification to be processed, it "^l
causes a blank record to be written on output or an input record to be skipped. Normally, the slash indicates the
end of a record during output and specifies that further data comes from the next record during input.
Example:
WRITE
10 FORMAT (6X, 7HHEADING / / / 1X, 5HINPUT, 7H OUTPUT)

r**m$\

(2,10)

1

Output:
HEADING

input

line
(blank) line
(blank) line
OUTPUT
line

I
2
3
4

Each line corresponds to a formatted record. The second and third records are blank and produce the line
spacing illustrated.
Example:
1=5
J=6
K=7
WRITE (2,1)I,J,K
FORMAT (315/)
WRITE (2,2)
FORMATC A BLANK LINE SHOULD PRECEDE THIS LINE*)

^*$"\

Output:

A BLANK LINE SHOULD PRECEDE THIS LINE

The variable list (I, J, K) is exhausted and processing continues until a variable conversion is encountered. /sm^
Since the slash has been processed, it causes a blank line to be printed.
/t*Sl$s

6-28

60497800

F

Example:
DIMENSION B(3)
READ (5,100)IA,B
100 FORMAT (I5/3E7.2)

These statements read two records; the first contains an integer number, and the second contains three real
numbers.

/S^\

WRITE (3,11) A,B,C,D
11 FORMAT (2E10.2/2F7.3)

In storage:
A
B
C
D

-11.6
.325
46.327
-14.261

Output:
b-.12E+02bbb.33E+00
46.327-14.261

WRITE (1,11) A,B,C,D
11 FORMAT (2E10.2 / / 2F7.3)

Output:
b-.12E+02bbb.33E+00
46.327-14.261
/|K\

line
I
(blank) line 2
line
3

The second slash causes the blank line.

REPEATED FOR/WAT SPECIFICATION
Format specifications can be repeated by prefixing the control characters D, E, F, G, I, A, L, R, Z, and O
/pn with a non-zero, unsigned integer constant specifying the number of repetitions required.
100 FORMAT (3I4,2E7.3) is equivalent to: 100 FORMAT (I4,I4,I4,E7.3,E7.3)

/#sn 50 FORMAT (4G12.6) is equivalent to: 50 FORMAT (G12.6,G12.6,G12.6,G12.6)
v
A group of specifications can be repeated by enclosing the group in parentheses and prefixing it with the repetizpg\ tion factor. If no integer precedes the left parenthesis, the repetition factor is assumed to be one.
1 FORMAT (I3.2(E15.3,F6.1.214))

60497800

B

6-29

is equivalent to the following specification if the number of items in the input/output list does not
exceed
the
format
conversion
codes:

^^

1 FORMAT (I3,E15.3,F6.1,I4,I4,E15.3,F6.1,I4,I4)

A maximum of nine levels of parentheses is allowed in addition to the parentheses required by the FORMAT
statement.
If the number of items in the input/output list is fewer than the number of format codes in the FORMAT
statement, excess format codes are ignored.;

f*^\

If the number of items in the input/output list exceeds the number of format conversion codes when the final
right parenthesis in the FORMAT statement is reached, the line formed internally is output. The format control
then scans to the left looking for a right parenthesis within the FORMAT statement. If none is found, the scan ,
stops when it reaches the beginning of the format specification. If a right parenthesis is found, however, the
scan continues to the left until it reaches the field separator which precedes the left parenthesis pairing the
right parenthesis. Output resumes with the format control moving right until either the output list is exhausted
or the final right parenthesis of the FORMAT statement is encountered.
A repetition factor can be used to indicate multiple slashes, n(/), where n is an unsigned integer constant /^S
indicating the number of slashes required and n-1 is the number of lines skipped on output.
Example:

^

WRITE (3,15)(A(I),I=1,9)
15 FORMAT (8HbRESULTS4(/),(3F8.2) )

Format statement 15 is equivalent to: 15 format (SHbRESULTS / / / / (3F8.2) )
Output:
R E S U LT S

3.62
-6.33
6.21

-4.03
7.12
-6.74

_____

-9.78
3.49
-1.18

line
1
(blank) line 2
(blank) line 3
(blank)
line 5
line 6
line

line

4

^^s

7

^^\

Example:
READ (5,300)I,J,E,K,F,L,M,G,N,R
300 FORMAT (I3,2(I4,F7.3),I7)

is equivalent to storing data in I with format 13, J with 14, E with F7.3, K with 14, F with F7.3, and L
with 17. A new record is then read; data is stored in M with the format 14, G with F7.3, N with 14,
and R with F7.3.
READ (5,100) NEXT, DAY, KAT, WAY, NAT, RAY, MAT
100 FORMAT (I7,(F12.7.I3) )

6"30

60497800

A

NEXT is input with format 17, DAY is input with F12.7, KAT is input with 13. The FORMAT state
ment is exhausted (the right parenthesis has been reached), a new record is read, and the statement is
rescanned from the group (F12.7,I3). WAY is input with the format F12.7, NAT with 13, and from a third
record, RAY with Fl2.7, and MAT with 13.

PRINTER CONTROL CHARACTER
The first character of a printer output record is used for carriage control and is not printed. It appears in other
forms of output as data. Carriage control also applies to records listed at a terminal under INTERCOM; the
meaning of carriage control characters depends on the type of terminal (see the INTERCOM reference manual).
Carriage control does not apply to records listed at a terminal under the NOS 1 Time-Sharing System; the
first character is listed as data.
0s\

The printer control characters are as follows':
Character

Action

Blank

Space vertically one line then print

0

Space vertically two lines then print

1

Eject to the first line of the next
page before printing

+

No advance before printing; allows
overprinting

J0^\

Any other
character

Refer to the operating system
reference manual

For output directed to the card punch or any device other than the line printer or terminal, control characters
are not required. If carriage control characters are transmitted to the card punch, they are punched in column one.
Carriage control characters are required at the beginning of every record to be printed, including new
records introduced by means of a slash. Carriage control characters can be generated by any means.
Examples:
FORMAT (1H0,F7.3,I2,G12.6)
FORMAT (1H1,I5*RESULT = \F8.4)
FORMAT (*1\!4,2(F7.3) )
FORMAT (1X,I4,G16.8)

/|SS!\

'This chart applies only to NOS/BE 1 and SCOPE 2. For corresponding information under NOS 1, refer to
the reference manual for the subsystem under which the program is executed.

60497800 F

6-31

Example:

PROGRAM CHARCON (OUTPUT)
PRINT 10
10 FORMAT (1HU 5Xt »HERE WE ARE AT THE TOP OF A NEW PAGE*) ^
PRINT 20
20 FORMAT <3)
DO
30
I
*
2t8
^
IF (I ♦EQ* 4 »OR» I .EQ. 6) 40*50
50 PRINT 60
6 0 F O R M AT ( 2 1 X * * X X # / 1 H * » 2 0 X t * 5 5 # > * * v
60 TO 30
40 PRINT 70
70 FORMAT (20X» # XXXXXXXXXX t / lH->» 19X» * ====55==== #> ^
30 CONTINUE
PRINT 80
9 0 F O R M AT ( l H O t 5 X » * B E G 1 N T I C TA C TO E * ) ^
STOP
END
Output

HE*E WE ARE AT THE TOP OF A NEW PAGE

8 8
S18S8S88SS
.■
8■
SSSS888S88
I S
8 8

8

.

/'s%.
■'
ySSs

BEGIN TIC TAC TOE
Tn SPECIFICATION
This specification is tabulation control.
Tn
n Unsigned integer. If n = zero, column 1 is assumed.
//j8»8S

When Tn is used, control skips columns right or left until column n is reached; then the next format specifi
cation is processed. Using card input, if n > 80,the column pointer is moved to column n, but a succeeding
specification
would
read
only
blanks.

'

j*®*.

,«ffl-s

6-32

60497800

A

READ 40, A, B, C
40 FORMAT (Tl, F5.2, Til, F6.1, T21, F5.2)

Input:
84.73bbbbb2436.2bbbb89.14.
A is set to 84.73, B to 2436.2, and C to 89.14.
WRITE (31, 10)
10 FORMAT (T20,*LABELS*)

The first 19 characters of the output record are skipped and the next six characters, LABELS, are written
on output unit number 31 beginning in character position 20.
With T specification, the order of a list need not be the same as the input or output record, and the same
information can be read more than once.
When a T specification causes control to pass over character positions on output, positions not previously
filled during this record generation are set to blanks; those already filled are left unchanged.
Example:
0^s,

5 7

PROGRAM TEST (0UTFUT)

1 FORMAT <12(10H0123456789)1

0^*>.

PRINT 1
PRINT 60
60 FORMAT *HEAOING1*>
FRIMT 10
10 FORMAT <20X»THIS IS T^E ENO OF THIS RUN*T52*.« •HONEST*)
FRIKT 1
STOP
END
lf3f-»S67Mtimm69O1234S6ramm:WI9liC34S6?690m^
HEAQXN61

HEADINGS
HEA0INSI
HEAOXMC*
1HXS XS THE CN0 OP THIS RUN ...HONEST

COMENTS

123%5678901234567«90123<.S67e90123*m8901234S67a90123W

Since the first character in a line output to the printer is used for printer control, T2 is output in the first
print position.
The following example shows that it is possible to destroy a previously formed field. The specification T5
destroys part of the Hollerith specification 10H DISASTERS.
1 FORMAT (10H DISASTERS, T5, 3H123)
PRINT 1

60497800 A

6-33

produces the following output: DIS123ERS

V SPECIFICATION*
When V is encountered in a FORMAT statement, the rightmost 6 bits from the current variable in the input/output '
list are interpreted as display code for a character to be used in place of the V as the conversion specification for the
next variable in the input/output list. V can be used as a dummy specification for the following conversions: A, D, ^_
E, F, G, I, L, 0, P, R, T, X and Z. It cannot be used as the E or D explicitly specifying exponent length; Ew.dVe is )
illegal.
Example:
PROGRAM V (OUTPUT)
INTEGER AFORMAT* RFORMAT
AFORMAT * IRA
RFORMAT * 1RR
NUM
«
10H01234S6789
PRINT 109 AFORMAT* NUM
10 FORMAT (T8» "FORMAT SPECIFICATION TAKEN FROM VARIABLE AFORMAT8 NUI*
•
OUTPUTS
AS
"
••
V5
/)
PRINT
20»
R F O R M AT *
NUM
20 FORMAT (T8* "FORMAT SPECIFICATION TAKEN FROM VARIA6LE RFORMAT* NUM
- OUTPUTS AS ♦* V5)
STOP

^\
■

_
^
<*>^\

END

J

Output:

i

FORMAT SPECIFICATION TAKEN FROM VARIABLE AFORMAT! NUM OUTPUTS AS 01234
F O R M AT S P E C I F I C AT I O N TA K E N F R O M VA R I A B L E R F O R M AT I N U M O U T P U T S A S 5 6 7 8 9 ^
EQUALS SIGN*
When = is encountered in a FORMAT statement, the current variable in the input/output list supplies a positive
integer value to be used in place of the = in the conversion specification for the next variable in the input/output
list. The = can be used in place of a number anywhere within a FORMAT statement. Such use of = precludes com
pilation syntax checking of the FORMAT statement. V and = can be combined in one conversion specification.
' . ■■ " ' '
Example:

10
20

^\
■

PROGRAM
PROGRAMEQUALS
EQUALS (OUTPUT)
(OUTPUT)
INTEGER WHO)
DATA »iVl*2*3*4*5»6*7*8*9*«0/
NUM = 1 OHO123456789
00 10 I « 1*10
PRINT 20* WU>9 NUM
FORMAT (T30» A>)
STOP

0*^\

END

'If a V or = appears in a format specification field containing a repetition factor which does not modify a parenthesized /"aB^
specification list, the V or = assumes the value supplied by the first repetition, and retains that value until the current
repetition count is completed.
6-34

60497800

H

/$ffiv»

Output:

01
012
0123
01234

012345
0123456
01234567

012345678
0123456789
A variable must exist in the input/output list each time an = or V is processed in the format statement.
Example:
DIMENSION A(5).B(5)
-.13 ».3-- .'. "
PRINT 1,f3,A,l3,B
1 FORMAT{1X,5F10.=)

^^ Two lines of five values each are printed; however, 13 must be repeated in the input/output list or the first value
of B is used to replace the =.
Example:

/SSN

PROGRAM VEQUALS (OUTPUT)
INTEGER FORMATS)* W(10)
DATA FORMAT/IRA* 1RR/* W/lt2t394f5*6t79899»]0/
NUM a 10H0123456789
DO 10 I = 1*2
DO 10 J = 1*10
K = J
IF (I *EQ. 2) K = 11-J
10 PRINT 20* FORMAT(I)9 W(K>* NUM
20 FORMAT (T20* V*>
STOP

END

0^s

60497800

A

6-35

Output:

0
01
012

t*^mP\

">

0123

012345
0123456
01234567
012345678
0123456789
0123456789
123456789
23456789
3456789
456789
56789
6789
789
89
9

1
^
1
^
1

EXECUTION TIME FORMAT SPECIFICATION
Variable format specifications can be read in as part of the data at execution time and used by READ, WRITE,
PRINT, PUNCH, ENCODE, or DECODE statements later in the program. The format is read in as alphanumeric
text under the A specification and stored in an array, simple variable or array element, or it may be included in
a DATA statement. The format must consist of a list of format specifications enclosed in parentheses, but
without the word FORMAT or the statement label.
For example, an input record could consist of the characters:

f

65. Large
Large records and sequential reading/writing execute faster with a larger
buffer.
Format
SI tape
I, X tape
S tape
L tape
mass storage

Minimum Value of n
128 for formatted.
. 513,for unformatted,
513 for unformatted.
513 for formatted or unformatted.

^

^

> maximum block length.
65 for formatted.
513 for unformatted.

Record length, r, should always be specified for files referenced in list-directed input/output statements. This
specification creates a separate working storage area for the file, which is different from the default area. If
the default area is used, input/output to other files destroys any data remaining after a list directed read.
Care should be taken when specifying a record length for file OUTPUT that the length is not so short as to
inhibit output of any run-time diagnostics.
When file names are made equivalent, the buffer length and record size specified apply to both files.
Examples:
PROGRAM ORB (INPUT,OUTPUT=1000,TAPE1 = INPUT.TAPE2=OUTPUT,TAPE4=1000/2000)

All input/output statements that reference TAPE1 reference INPUT instead, and all listable output normally
recorded on TAPE2 is transmitted to the file named OUTPUT. TAPE4 has a buffer length of 1000 words
with a maximum of 2000 characters per record.
PROGRAM JIM(INPUT,TAPE19=INPUT)

TAPE19=INPUT must be preceded in the same statement by INPUT. TAPE19 becomes the name for the file
INPUT.
fDoes not apply to SCOPE 2.
ttSee section 16 Input/Output Implementation.

7-4

^Z£%\

60497800 J

PROGRAM SAMPLE (INPUT,OUTPUT,TAPE5=INPUT,TAPE6=0UTPUT)

READ(5,100)A,B,C
100 FORMAT (3F7.3)

This statement reads from logical unit 5; it is declared in the
PROGRAM statement as TAPE5 which is equivalent to INPUT.

WRITE(6,200)A,B,C
200 FORMAT (1H1.3F7.3)

Logical unit 6 is declared as TAPE6 in the PROGRAM state
ment and equivalent to OUTPUT.

BLOCK DATA SUBPROGRAM
BLOCK DATA
/fp^v

BLOCK DATA name

name identifies the BLOCK DATA subprogram if more than one is compiled.
The block data subprogram is a nonexecutable specification subprogram that can be used to enter data into
labeled or numbered common (but not blank common) prior to program execution. The name BLKDAT. is
assigned to the block data subprogram if it is not named by the user.
The block data subprogram contains only IMPLICIT, LEVEL, type, DIMENSION, COMMON, EQUIVALENCE,
DATA, and END statements. A valid BLOCK DATA subprogram must contain at least one COMMON state
ment and one DATA statement. Any executable statements are ignored and a warning is issued. All DATA
statements must follow the specification statements. Data can be entered into more than one block of
common in a block data program. The specifications in a BLOCK DATA subprogram take effect when the
binary output file (specified by the control statement B option) is loaded.
Example:
BLOCK DATA ANAME
COMMON/CAT/X,Y,Z/DEF/R.S.T
COMPLEX X,Y
D ATA X , Y / 2 * ( ( 1 . 0 , 2 . 7 ) ) / , R / 7 . 6 5 4 3 /
END
j"*-"**.

/fSsv

Z is in block CAT and S and T are in DEF, although no initial data values are defined for them.

60497800 A

7-5

PROCEDURES
The category of procedure to be used is determined by its particular capabilities and the needs of the program
being written. If the program requires the evaluation of a standard mathematical function, a FORTRAN
supplied intrinsic function or a basic external function can be used. If a single computation is needed
repeatedly, a user-written statement function can be included in the program. If a number of statements are
required to obtain a single result, a function subprogram is written. If a number of calculations are required
to obtain several values, a subroutine is written.
Procedure Communication (later in this section) contains details on how to use procedures and how procedures
use arguments or common to communicate.
SUBROUTINE SUBPROGRAM

r—

SUBROUTINE name {prp2 pn)

y^^v

(•^iaN

SUBROUTINE name (pvp2r.'..#pn), RETURNS (b^b.

V'bm>

z<^sy

SUBROUTINE name, RETURNS (b^b- ,..., bj

name

Symbolic name of the subroutine.

Pi

Dummy arguments that must agree in order, number, type, and level with the actual argu
ments passed to the subprogram at execution time.

/^\

bp..., bm Dummy statement label arguments, that must agree in order and number with the ictiial
statement labels passed to the subroutine at execution time.
The argument lists are optional and limited to a maximum combined total of 63 parameters, f
A subroutine subprogram is executed when a CALL statement is encountered in a program unit. A sub
routine subprogram must not directly or indirectly call itself. The subroutine subprogram communicates with
the calling program unit through a list of arguments passed with the CALL statement or through common.
Calling a Subroutine Subprogram later in this section contains more CALL statement details.

7-6

60497800 A

The SUBROUTINE statement contains the symbolic name that is used as the main entry point of the sub
program. (The ENTRY statement specifies an alternate entry point in the subprogram.) The subprogram name
,f^ is not used to return results to the calling program, does not determine the type, and must not appear in any
other statement in the same subprogram.
^s Subroutine subprograms can contain any statements except PROGRAM, BLOCK DATA, FUNCTION, or
another SUBROUTINE statement. They begin with a SUBROUTINE statement, should have at least one
RETURN statement, and end with an END statement. If control flows into the END statement, then a
f^ RETURN is implied. Control is returned to the calling program when a RETURN, RETURN i or END is
encountered.
1^** Dummy arguments which represent array names must be dimensioned within the subprogram by a DIMENSION
or type statement. If an array name without subscripts is used as an actual argument in a CALL statement
and the corresponding dummy argument is not declared an array in the subprogram, the first element of the
/^ array is used in the subprogram. Adjustable dimensions are permitted in subroutine subprograms (details are
given later in this section under Using Arrays).
/^ lhe RETURNS list allows control to be returned to the calling program somewhere other than at the
executable statement immediately following the CALL statement. The CALL statement specifies actual
statement labels to replace the dummy statement label arguments in the RETURNS list. The actual statement
(^ labels must correspond in order and number with the dummy statement label arguments. The
dummy statement label argument i is the statement to which control transfers when RETURN i is executed.
I^ The RETURN statement in section 4 and the CALL statement in this section give further details.
Example 1:
Calling Program Subprogram
SUBROUTINE ERR0R1
WRITE (6,1)
1 FORMAT (5X,22H NUMBER IS OUT OF RANGE)
IF
(A-B)
10,20,20
10
CALL
ERR0R1
20 RESULT=(A*CAT) +375.2-ZER0

RETURN
END

The subroutine ERROR1 is called and executed if A-B is less than zero. Control returns to
statement 20. This example also illustrates that arguments need not be used.

60497800

A

7-7

Example 2:
Calling Program

.CALL PGM1(A,B,C)
.XRETURNS (5,10)

5 B=SQRT(A*C)

Subprogram

yf^^V

SUBROUTINE PGM1(X,Y,Z),
XRETURNS (M,N)
U=X**Y
X=Z+X*Y
20 IF (U+X) 25, 30, 35
25 RETURN M Return is to statement 5 in calling program
30 RETURN N Return is to statement 10 in calling program
35 Z=Z+(X*Y)
RETURN Return is to statement following CALL PGM 1
END

0^$&K

10 CALL PGM2 (D,E)

This example illustrates the use of the RETURNS list as well as the use of the; normal
: R E T U R N ' - s t a t e f n e r i t . ' - : ; ' " "■' " - ' ;■

FUNCTION SUBPROGRAM
7
FUNCTION name (p1 pn)

/

type FUNCTION name (p, ..... pn)

XSs^V

name

Symbolic name of the subprogram.

pj,...,pn Dummy arguments that should agree in order, number, type;and;leyel with the actual
arguments in the calling program. At least one argument is required; a maximum of
63 is allowed.
type

The type may be REAL, INTEGER, D&UBLE, DOUBLE PRECISION, COMPLEX, or
LOGICAL.

A function subprogram performs a set of calculations when its name appears in an expression in a referencing
program unit. Execution of the function subprogram must result in a value being defined for the function
name. A function subprogram can modify the value of one or more of its arguments or store data in common.

7-8

60497800 A

Dummy arguments which represent array names must be dimensioned within the subprogram by a DIMENSION
or type statement. If an array name without subscripts is used as an actual argument in the function reference
and the corresponding dummy argument has not been declared an array in the subprogram, the first element
of the array is used in the subprogram. Adjustable dimensions are permitted in function subprograms (details
are given in Using Arrays later in this section).
The FUNCTION statement contains the subprogram symbolic name that is used as the entry point when the
function is referenced. The ENTRY statement specifies an alternate entry point in the function. The func
tion name must not appear in any nonexecutable statements other than the FUNCTION statement in the sub
program. The type of the function name must be the same in the referencing program and the referenced
function subprogram. When type is omitted, the type of the function result is determined by the first char
acter of the function name. Implicit typing by the IMPLICIT statement takes effect only when no explicit
type appears in the FUNCTION statement.
/"J"-a\

The function subprogram can contain any statements except PROGRAM, BLOCK DATA, SUBROUTINE,
another FUNCTION statement, or any statement that directly or indirectly references the function being
defined. The function subprogram begins with a FUNCTION statement, should have at least one RETURN
statement, and has an END statement that is treated as a RETURN if executed. Control is returned to the
referencing program when either a RETURN or END is encountered. A RETURN i in a function subprogram
causes a fatal error at compilation time.
A function subprogram can have the same name as that of an intrinsic or basic external function supplied by
FORTRAN. Section 8 defines the conditions under which programmer supplied routines override the
FORTRAN supplied routines.
Example:
Calling Program

DIMENSION ARY (5,5)

10 RES=DIAG(ARY,5)**2

Subprogram

FUNCTION DIAG (A,N)
DIMENSION A(N,N)
DIAG=A(1,1)
DO 70 1=2,N
70 DIAG=DIAG*A(I,I)
RETURN
END

The statement labeled 10 contains the reference to function DIAG. The statement labeled 70 sets the
function name to a value. At the end of the function subprogram execution, RES will have the value of
DIAG squared.

BASIC EXTERNAL FUNCTION
A basic external function is a predefined procedure included with the system. Section 8 contains further
details.

60497800 A
/fSraPy

7-9

INTRINSIC FUNCTION
An intrinsic function is a compiler-defined procedure that is inserted in the referencing program at compile
time. Section 8 contains further details.

^f^v

STATEMENT FUNCTION

n

name (p1 ,p2,p3,..., pn) = expression

XS"\

name

Pi'

Type of the function is determined by the type of the function name.

.P,

expression

Dummy arguments must be simple variable names. At least one argument is required; a
maximum of 63 is allowed. These arguments should agree in order, number, type, and
level with the actual arguments used in the function reference.
Any expression may be used. It may contain references to intrinsic or basic external func
tions, statement functions, or function subprograms. Names in the expression that do not
represent arguments are normal variables having the same value as they have outside the
function

A statement function is a user-defined, single-statement computation and applies only to the program unit containing
the definition. Since the statement function only defines the function, the value is computed when the function is
referenced and the actual arguments are substituted for the dummy arguments in the definition.
During compilation, the statement function definition is retained by the compiler. Whenever the function is referenced,
instructions are generated in-line to evaluate the function (as opposed to FUNCTION subprograms for which an external
procedure is used at each reference). The expansion of a statement function is the same as writing the expression in
place of the reference. Thus the statement function does not reduce execution speed or efficiency.
Statement function names must not appear in DIMENSION, EQUIVALENCE, COMMON or EXTERNAL statements;
they can appear in a type declaration but cannot be dimensioned. Statement function names must not appear as actual
or dummy arguments. If the function name is type logical, the expression must be logical. If the function name is not
type logical, the expression must not be a relational or logical expression. For other types, if the function names and
expression differ, conversion is performed as part of the evaluation of the function. For example, in the program
segment:
LSUM(I,J) = OR(I,J)
A = OR(15,50)
B = LSUM(15,50)

/*^i^\

OR is typeless and LSUM is a statement function of type INTEGER. In the first function evaluation, no
conversion takes place; the binary value is assigned to A. In the second function evaluation, the value is
converted to floating point before being assigned to B.
A statement function must precede the first executable statement and it must follow all specification state
ments. A statement function must not reference itself either directly or indirectly.
7-10

60497800 E

0^^K

Examples:
Statement Function Definitions Statement Function References
A D D ( X , Y, C , D ) = X + Y + C + D R E S 1 = G R 0 S S - A D D ( TA X , F I C A , I N S , R E S 3 )

/p*\

AVERGE(0,P,Q,R) = (0+P+Q+R) / 4 GRADE=AVERGE(TEST1,TEST2,TEST3,
TEST4)+MID
LOGICAL A,B,EQV
EQV(A,B)=(A.AND.B).OR. TEST=EQV(MAX,MIN).AND.ZED
(.NOT.A.AND..NOT.B)
C O M P L E X Z R E S U LT = ( Z ( B E T Z , G A M M A ( I + K ) ) * * 2 - l . )
Z(X,Y)=(1.,0.)*EXP(X)*COS(Y) /SQRT(TWOPIE)
+(0.,1.)*EXP(X)*SIN(Y)
Example 1:
The statement function can be used to substitute a FORTRAN supplied function name in a program con
taining an alternate name for this function.
SINF(X)=SIN(X) Statement function definition.

A=SINF(3.0+B) +7. Statement function reference.
The above sequence generates exactly the same object code as:
A=SIN(3.0+B)+7.
Example 2:
To compute one root of the quadratic equation ax^+bx-h^O, given values of a, b and c, an arithmetic
statement function can be defined as follows:
R O O T ( A , B , C ) = ( - B + S Q RT ( B * B - 4 . * A * C ) ) / ( 2 . 0 * A )

When the function is used in an expression, actual arguments are substituted for the dummy arguments
A, B, C.
RESA = ROOT (6.5,7.,1.)

is equivalent to writing:
RESA = (-7.+SQRT(7.*7.-4.0*6.5*1.0))/(2.0*6.5)

Wherever the statement function ROOT (A, B, C) is referenced, the definition of that function - in this
case (-B+SQRT(B*B-4.*A*C))/(2.*A) — is evaluated using the current values of the arguments A, B, C.

60497800

A

7 - 11

/t^\

PROCEDURE COMMUNICATION
The procedures defined by a statement function or a procedure subprogram are executed when they are
referenced in a program unit.

PASSING VALUES TO A PROCEDURE
Values can be passed between a calling program unit and a procedure as actual arguments in an argument '^
list or through common. Arrays with adjustable dimensions can be used to pass values of arguments.
Arguments passed to a procedure must agree with the procedure definition in order, number, type, length,
and level.

USING ARGUMENTS
Arguments used for communication between procedures are either actual or dummy (formal). The arguments
appearing in a subroutine CALL statement or a function reference are the actual arguments. The corre
sponding dummy arguments appear in the SUBROUTINE or FUNCTION statement. If a RETURNS list is
used/the actual statement label arguments appear in1 the CALL statement and the dummy statement label
arguments appear in the SUBROUTINE and RETURN statements.
The actual arguments allowed for a particular procedure are given in the discussion of the procedure
reference.
Dummy arguments are used as variable, array or external procedure subprogram names within the subprogram
and can be used to return values to the calling program. The dummy arguments are replaced by the actual
arguments when the procedure is executed. Since all names are local to the program unit containing them,
the same dummy argument name can be used in more than one program unit. A dummy argument must
n o t a p p e a r i n C O M M O N , E Q U I VA L E N C E , o r D ATA s t a t e m e n t s w i t h i n a p r o g r a m u n i t . * ^
Dummy arguments representing array names must appear within the subprogram in a DIMENSION or type
statement giving dimension information. If dummy arguments are not dimensioned, they cannot be referenced /*^\
as arrays in a subprogram.
In a subprogram, the definition of a dummy argument that is associated with a constant actual argument or with ^^
any expression except a variable or array element is prohibited.
If a subprogram reference causes a dummy argument to be associated with an entity in common in the refer
enced subprogram, definition of the dummy argument or of the entity in common is prohibited. If a subpro
gram reference causes two dummy arguments to be associated, the definition of either in the referenced subpro
gram is prohibited.

7-12

60497800

C

0^

Example 1:
Calling Program

Subprogram
FUNCTION GRATER(A.B)
I F ( A . G T. B ) 1 , 2

W(I,J)=FA+FB-GRATER(C-D,3*AX/BX)

/|S!S

1 GRATER=A-B
RETURN
2 GRATER=A+B
RETURN
END

This example shows the normal use of arguments in a function subprogram. The actual argument C-D is
used in place of the dummy argument A and 3*AX/BX is substituted for dummy argument B when the
function subprogram is executed.
Example 2:
CALL

SUBA(1.5)

SUBROUTINE

SUBA(R)
IF (R.NE.O) R = 0

This example contains a prohibited definition of a dummy argument, R, which is associated with a con
stant actual argument.
Example 3:
CALL SUBB (X, X)

SUBROUTINE SUBB (A, B)

A

=

Y

2 = B

This example contains a prohibited definition of a dummy argument, A, which has been previously
associated with another dummy argument, B, in the referencing program unit.
Example 4:
COMMON x
CALL SUBC (X)

SUBROUTINE SUBC (B)
COMMON A

A = Y
Z = B

This example contains a prohibited definition of an entity in common, A, which is associated with a
dummy argument, B, in the same subprogram.

jp*n

60497800 A

7-13

USING COMMON
Common can be used to transfer values between a calling program unit and a subprogram. Passing values )
through common is more efficient than passing values through arguments in a CALL statement or function reference.
If a dummy argument in a subprogram is associated with an entity in a common block in the same subprogram,
the
definition
of
either
is
prohibited.
■
/ssx

Example:

PROGRAN1 CMN  C A L t i : J A \ /*& : %
, ' .;• ' ' •< ' • - ',. , .^' K ( i <
- .•'. STOP
-: END-;-!
SUBROUTINE JAVG
C THIS, SUBROUTINE
COMPUTES THE AVERAGE OF THE FIRST 10 ELEMENTS IN
(I * * ' *<'■**''■**' „
c COMMON
COMMON N(IO) ;
0
-'
'
ISTORE »
D O 11 =M^10':-''1' '; '■ - J-V i;. -•
1 ISTORE a ISTORE ♦ N(I)
ISTORE s ISTORE/10
PRINT l»t ISTORE
Z FORMAT (*1AVERAGE = *tI10)
-, . '• <■'
RETURN

END

AV E R A G E

"SJ5ijk\

/S^s

s

4£>

The array NED in program CMN and the array N in subroutine JAVG share the same locations in common.
NED(l) shares the same location with N(l), NED(2) with N(2), etc. The values read into locations
NED(l) through NED(IO) are availably to subroutine JAVG. JAVG computes and prints the average of
these
values.
*
,««%.

USING ARRAYS

The array dimensions in a subprogram must be the same as those in the calling routine if the subscripts are
to agree between the called and calling program units. If a dummy argument is not dimensioned, it cannot ^
be referenced as an array in the subprogram.
If any of the entries in a subscript of a type or DIMENSION statement is an integer variable name, the 'l
array is called an adjustable array. The variable names are called adjustable dimensions. Such an array
can only appear in a procedure subprogram. The dummy argument list of the subprogram must contain
the array name and the integer variable names that represent the adjustable dimensions. The values of the ^^)
actual arguments that represent array dimensions in the argument list of the reference must be defined
prior to calling the subprogram and cannot be redefined during execution of the subprogram. The absolute

7-14

60497800

A

'

/8Jft\

size of the actual array may not be exceeded. For every array appearing in an executable program, there
must be at least one constant array dimension associated through subprogram references.
In a subprogram, an array name that appears in a COMMON statement must have fixed dimension
specifications.

REFERENCING A FUNCTION
A function is referenced when the name appears in an expression. A function must not directly or indirectly
reference itself. The reference can appear anywhere in an expression that an operand of the same type can
be used.
When a statement function or intrinsic function is referenced, instructions are generated in-line to evaluate the
function. The value is computed with the actual arguments substituted for the dummy arguments in the
definition.
When a function subprogram or a basic external function is referenced, control is transferred to the function
subprogram and the values of the actual arguments are substituted for the dummy arguments. Control is
returned to the referencing program unit when a RETURN is encountered.
Actual arguments in a function subprogram reference may be an expression, constant (including Hollerith),
variable, array name, array element name, subroutine subprogram name, external function name (not intrinsic
function or statement function), or function reference (the function reference is a special case of an arith
metic expression).
Example:
Calling Program
Z = A + B - J 0 E ( 3 . * P, Q - 1 )

R=S+JAM(Q,2.5*P)

Function Subprogram
FUNCTION JOE(X,Y)
10 J0E=X+Y
RETURN
ENTRY JAM
IF(X.GT.Y)10,20
20 J0E=X-Y
RETURN
END

Function subprogram JOE is executed as a result of its name appearing in another program unit.

00&S

60497800 A

7-15

, 0). For example, (0,3) is an illegal overlay number.
Execution is faster if the more commonly used subprograms are placed in the zero overlay, which remains in main
memory at all times, and the less commonly used subprograms are placed in primary and secondary overlays which
are called into memory as required.
An overlay can consist of one or more FORTRAN or COMPASS program units. Each overlay must contain
one FORTRAN main program; it need not be the first program unit in the overlay. The program name in
the PROGRAM statement becomes the primary entry point for the overlay when the overlay is called.

/ ^ N

OVERLAY COMMUNICATION
Data is passed between overlays through labeled or blank common. Any element of a labeled or blank
common block in the main overlay (0,0) may be referenced by any higher level overlay. Any labeled or
blank common declared in a primary overlay may be referenced only by the primary overlay and its associ
ated secondary overlays - not by the zero overlay. If blank common is used for communicating between
overlays, the user must ensure that sufficient field length is reserved to accommodate the largest loaded overlav in addition to blank common.

/sP^v

Blank common is located at the top (highest address) of the first overlay in which blank common is declared.
For example, if blank common is declared in the (0,0) overlay, it is located at the top of the (0,0) overlay
and is accessible to all higher level overlays. If blank common is declared in the (1,0) overlay, it is allocated
at the top of the (1,0) overlay and is accessible only to the associated (l,k) overlays. Labeled common blocks
are generated in the overlay in which they are first encountered; data may only be preset in labeled common
blocks in this overlay.

CREATING AN OVERLAY
An overlay is established by an OVERLAY directive preceding the program units for that overlay. An overlay
consists of all program units appearing between its OVERLAY directive and the next OVERLAY directive or
the end of source input. The directive must be punched starting in column 7 or later.
The PROGRAM statement for the zero or main overlay (0,0) must specify all file names such as INPUT,
OUTPUT, TAPE1, etc., required for all overlay levels. File names should not appear in PROGRAM statements
for other than the (0,0) overlay. The compile-time warning or informative message I/O FILE NOT DEFINED
should be ignored for programs outside the (0,0) overlay.

60497800

G

7-21

Loading overlays from a file requires an end-around search of the file for the specified overlay; this can be
time-consuming in large files. Under NOS and NOS/BE, a Fast Overlay Loading facility (FOL) is available.
When FOL is enabled, an FOL directory is created in space allocated in the (0,0) overlay. When a higher
level overlay is loaded, the directory is used to locate the overlay, and the overlay is loaded with a single disk access.
This is the fastest method available for overlay loading and is recommended for applications where speed is essential.
The FOL facility requires that all overlays in the overlay structure reside on the same file in the same order in which
they were generated. FOL mode is specified by the presence of the OV parameter on the OVERLAY directive.
If the FOL facility is not used, and speed is essential, each overlay should be written on a separate file, or the overlays
should be called in the same order in which they were generated.
The group of relocatable decks to be processed by the loader to create an overlay-structured program must be
presented to the loader in the following order. The main overlay must be loaded first. Any primary group followed
by its associated secondary group can follow, then any other primary group followed by its associated secondary
group, and so forth.
The OVERLAY directive format is:

r

y

OVERLAY (fname,i,j,origin,OV=m)
^

fname

Name of the file on which the generated overlay is to be written.

iJ

Overlay level numbers in octal without the B suffix. The numbers specified are not checked or
converted by FORTRAN.

origin

Optional parameter specifying the origin of the overlay; not allowed for (0,0) overlay. The
CYBER loader (NOS/BE, NOS) accepts any of the following forms; the SCOPE 2 loader allows
only Cnnnnnn. If the origin parameter is omitted, the preceding comma must also be omitted.
Cnnnnnn The overlay is loaded nnnnnn words from the start of blank common, nnnnnn
must be an octal number of up to six digits.
0=nnnnnn The overlay is loaded at the address specified; nnnnnn must be an octal
number >110o.
0=eptname The overlay is loaded at the address of the entry point specified, which must
have been declared in a lower level overlay.
0=eptname The overlay is loaded at the address of the entry point specified but the address
± nnnnnn is biased by the amount of the offset.

OV=m Optional parameter specifying the total decimal number, m, of higher level overlays in the over
lay structure. Valid only on a (0,0) overlay directive and only under NOS and NOS/BE. Signals
the overlay generator and overlay loader to go into Fast Overlay Loading (FOL) mode. The
value of m must not exceed 20000 (decimal). If the OV parameter is omitted, the preceding
comma must also be omitted.
The first overlay directive must have a file name and ij must be 0,0. Subsequent directives can omit file name indicating
that the overlays are to be written on the same file. All overlays need not reside on the same file, unless in fast overlay
loading mode. The second overlay directive must be of a primary overlay such as 3,0.
If the origin parameter is omitted, the overlay is loaded in the normal way directly after the zero overlay. The origin
parameter cannot be included on the zero overlay directive. It is used on primary and secondary overlay directives to
allow the programmer to change the size of blank common at overlay generation time.
7-22

60497800 H

^

^

Example:
OVERLAY(FNAME,0,0 ,0V=4)
PROGRAM CAT(INPUT,OUTPUT,TAPE5=INPUT)

OVERLAY(1,0)
PROGRAM A

OVERLAY(1,1)
PROGRAM B

/*3N

OVERLAY(1,2)
PROGRAM C

OVERLAY(1,3)
PROGRAM D

All the above overlays are written on the file FNAME. The OV parameter signals FOL mode and indicates
that there are 4 higher level overlays.

CALLING AN OVERLAY
Overlays are called with a CALL OVERLAY statement; only the zero overlay (0,0) can be loaded when a pro
gram call control statement is encountered. The format of the CALL OVERLAY statement is:
CALL OVERLAY (fname,i,j,recall,k)

r

fname

The name of the file or overlay in H format.
Overlay level numbers in octal with the B suffix, or the decimal equivalent.

recall

Optional recall parameter.

k

Optional parameter specifying where the overlay is located; can be zero, non-zero,
or L format Hollerith constant.

/SSN

60497800 D

r

7-23

■^^\

If the k, parameter is zero or not specified, the overlay is included in the file named by fname. If a non-zero .
k parameter is specified, fname is the name of the overlay to be loaded. If k is an L format Hollerith con
stant, the overlay is loaded from the library named ih the constant (not applicable'. under &OS 1). If k is
any other non-zero value, the overlay is loaded from the global library set (refer to the appropriate operating
system reference manual or the Loader Reference Manual).

/*^§v

If 6HRECALL is specified as the recall parameter, the overlay is not reloaded if it is already in memory. If the
overlay is already in memory and the recall parameter is not used, the overlay is actually reloaded, thereby changing /lS^
the
values
of
variables
in
the
o v e r l a y.
;
The three parameters fname, i, and j must be specified or the results are unpredictable.
When a RETURN or END statement is-encountered in the main program of a zero overlay, execution of the
program terminates and control returns to the operating system. When either of the statements is encountered ^^
in a primary or secondary overlay, control returns to the next executable statement after the CALL OVERLAY /
statement that invoked the current overlay.
Example

1:

•-•'

~".

:

•>..•'

y

;"_"'

" C A L L O y E R L AY ( l H A , l , 0 )
'"'.'•',,
' . ' -■' ' • ' • ,
This statement causes a primary; overlay to be,loaded from the file harried A.

V

'"

"

;!

'"

.'
"

)
<"%

E x a m p l e 2 ; ' ' "■* ' , ' • ' • < ' • - ' ' y ' - * V ' , . ' ; ' •■ - ' , ' * , f , " ; : . . - . . ' . 1 V • .
CALL
O V E R L AY ( 3 H B J R , 0 , 0 , 0 , 1 )
...
This statement,
specifies
parameter
as aset.
non-zero
value, causes a main overlay with
' , ' the name
BJ& to.bewhich
loaded
from the
thekglobal,
library
,

- ^

7-24

60497800

A

Example 3:
OVERLAY(XFILE,0,0)

PROGRAM ONE(INPUT,OUTPUT.PUNCH)

CALL OVERLAY(5HXFILE,1,0,0)

STOP
END
OVERLAY(XFILE,1,0)
PROGRAM ONE ZERO
CALL OVERLAY(5HXFILE,1,1,0)

RETURN
END
OVERLAY(XFILE,1,1)
PROGRAM ONE ONE

RETURN
END

Execution of RETURN in the 1,1 overlay returns control to the statement in the 1,0 overlay following the
1,1 call. Execution of RETURN in the 1,0 overlay returns control to the statement in the main overlay
following the 1,0 call.

60497800
j

^

N

A

7-25

/<"S5s.

Example:,

Secondary Overlay
(1.1)

/S5N

Source Deck

Primary Overlay
(1.0)
Source Deck

Main Overlay
(0,0)
Source Deck

Call to
Primary Overlay
FRANK 1,0

Preparation of Overlay 0,0; 1,0; and 1,1

7-26

60497800 A

The above example illustrates the preparation of zero, primary and secondary overlays. The zero overlay
0^ FRANK 0,0 consists of a main program LEO and a subroutine GROUCH. The primary overlay FRANK 1,0
consists of a main program RDY. The secondary overlay FRANK 1,1 is a main program MLT. All three over
lays reside on the file FRANK.
The LOAD(LGO) and NOGO control statements request the loader to load the program from the file LGO.
As the loader reads file LGO, it encounters the overlay directive OVERLAY (FRANK,0,0) which instructs it
/#** to create a main overlay from the program and write it on file FRANK. When the absolute form of all the
* overlays has been generated, execution begins when the control statement FRANK, is encountered. FRANK,
causes the main overlay to be loaded from file FRANK and executed.
V During execution of the main overlay, the CALL OVERLAY (5HFRANK, 1,0,0) statement is
encountered and the primary overlay 1,0 is loaded into central memory. The CALL OVERLAY
/r-*s (5HFRANK,1,1) statement in the primary overlay causes the secondary overlay to be loaded into
memory.
/s=\ The primary and secondary overlays can reside on files other than FRANK. For example, the
• primary overlay could be on file JIM and the secondary overlay on file JOHNFTN.
f^

LOAD(LGO)
NOGO.

FRANK.
f^
7/8/9
;
O V E R L AY
(FRANK,0,0)
( P R O G R A M L E O ( I N P U T. O U T P U T, TA P E 1 )

0S\

CALL OVERLAY (3HJIM,1,0,0)

OVERLAY (JIM,1,0)
PROGRAM RDY

CALL OVERLAY (4HJ0HN,1,1,0)
END
OVERLAY (JOHN * 1,1)
PROGRAM MLT

END
Example:

The following program, for execution under NOS/BE 1 or SCOPE 2, contains several subroutines and func
tions and is to be used repeatedly. The entire program can be generated, therefore, as a main overlay and
placed on the file in the absolute form. The control statement CATALOG creates a permanent file OVRLY
60497800

A

7-27

)'

where the absolute form of the program will be kept. When the program is required again, the permanent file
OVRLY is called by an ATTACH control statement.

Control
Cards

FTN.
LOAD(LGO)
NOGO.
CATALOG(REPEAT,OVRLY,ID=IBB)
7/8/9 .
OVERLAY (REPEAT,0,0)
PROGRAM A (INPUT,OUTPUT,TAPE1)

""I

END.
SUBROUTINE B

END ,
FUNCTION C

Main
Overlay

* * \
END
SUBROUTINE D

END

REAL FUNCTION E

V^Sv

/Ej^SV

END
6/7/8/9

y^^v

Main program A and the subroutines and functions B-E reside on the file REPEAT in absolute
>lutef -Q
(0

Real ne
Itger De
oubl

Real ne
Itger ne
Itger

Real ne
Itger

CO OJ » 3
<» cu
+■" ■{_ o
oc cc £ £ q

C
M

OJ

l_ _ OJ
91 01 —

o o

Real Real ne
Itger ne
Itger De
oubl

"5
O)

"O
3

ro

cc

u

OJ

_

P

_,

CD

cu
a>
-r
en _ O) _ -3
00

Z
O

_.

QJ

T
ypeof

<_>

Real ne
Itger De
oubl

Real Real De
oubl

Real ne
Itger

m

OJ

CO

CU
OJ
to

-J

■•_ 3 ♦_ 8 o
£ cc £ oc Q

ne
Itger Real ne
Itger Real De
oubl

■f
c

g
A
u
m
re
n
t

cu
U

X
cu

S3
CO
~"
.

O

c

v>

cu
O

S3
'■ro'

"D
T i

CO

/*s?*v

SZ
T i

p
^
•2
E
>
CO

2
•=
«
z

4 4—
4—

4 4- 4—
Q 4—

A
B
S AB
IS D
A
B
S

NIVI
N
I I 1N
0I

O Q
2 O
< 2

r -

<
M
A
O
X M
A
1
X
A M
O
X
A M
A
X
1 D
M
A
X
1

N
A
O
M
I A
N
M
1I N
M
O
I M
N
II D
N
M
1I

o
- J

u_

cu O
O) is

*- s.
CO IM

JV>
CU <»-

a
CM

N
u
m
b
e
ro
f g
A
u
m
rse
n
t

CO
CO

CO
CO

I

1

CM

CM

■c
£
•f-f c
'" E
rr
3
X o>
—"

2: •_

f

^

00

•«*

CM

o

00
-i*
CM

•M

ro
D"
CO
u.

CT
C
D

ro
SZ
f
v>

sCzO

91 C

■c o
5 w
-° a,

<>/
CD

vt
cu

« c
J3

CD

c
o
T—*"■■
< ;

c
!S
Q

m
A
(lo
dA
2
)

*X
«
CO CM

2 <

ro-O
TJ o>
tu c

:

\zz o)

|2 <
«

« o
—
C

<

CD T3

C
onsiver om
rfen
gteri oteral

n
rtge
<
a
strilA
|1 <
g
nm
S
iA
o
fe
istege
A
or|f24
18-

u
CO

S3

a>

V)

3

V)

3

E

s s

r -

- l

r o «/>
ro
—
to

O si
:> _

OJ

.f_ . §
_

c *->
— S

H
8-2

_3
CD
0>
t->
3

~; o>
vt _;
_3 co

<

>

u
c
3
_.

.E
tt
VI Oi
O
—
O CO

R
e
m
n
d
e
ra
i nigt

rest uve
Chn
ogsi alg
al

CJ

in

C
CU



't*
CO

+
-■

CO

o

li.

o f

o>

§*'

OJ

_*

CO

_
.
CO

ro

SZ

\-

cu

sz
\-

60497800 J

^^v

/0^\

4-

—. N —
— CM yT >-

>-£x

cu

a
E
CO

X
Ul

O — m z

2 ^ -■ o
__ S2 e° 55
w
_ 2 q
II ~ O ii

LL
I

>

/fS\

o

o

l_T
• ^ U3
L

- ■■ >

n

_
.
CU

t-

a

OJ

o> ~z

_ a> -2

&
*-•

CO

0)

3

cu «_ o
DC £ Q

c

n

oc

o1

A
=
M
D
D
C
I(), J=
D
IM
2
I1
I)I,(

CU

_.

TJ
O

CU
_
O)
CO «

'

4 _
®

CJ
CO

Z
O

T
ypeof g
A
u
m
re
n
t

75

cu
X3

~5 0? 3
OJ *_ O

cu
QC

OC £ Q

a>
a

"co cij

£_=

4

0J
T>
O

0J
TJ
O

o
c

E
o
e

4-

a
>
T *

c

O
O

II
03

CD

TJ
O

E
o
c

§

CO

z
2
H
z

a

cu

TJ

>
c

ca

sz

CD

u

IMf

z
Z gz (5

_ i

- 1
0 .

oc
O

E

3
O.

2
O
o

o

OC

59

u.

CO

X

TJ
C

o

<-

3

CM

CM

CQ

<

x:
$
-.

c
o OJ
T
O
OJ
>
*a 
cC 3

CO

o

4 —
OJ

a

c

CO

2

4 —
0J


>.

0J

<

e

E
o
c

0) £

oc £

_J
CL

oc
O
X

CO
CO

CO
CO

CO
CD

1

1

1

CM

CM

CM

>
c
o

1—

N
u
m
b
e
ro
f g
A
u
m
rse
n
t

■f
"-f
r
cu

O

c

O)

T
O
OJ

sz
f

t

»

F
- j

E ,_•
c
.2
"E

a

OJ

o j» 1—

CU

o <

T-

.9?

Q £
.12 Z o)

'so

§ —= r o'
O
_ B 0)
§
J_
Si C
O CE
O
O

O

_

w

_:
4-"

<

0J

5 4-

A CM £

Ze CM

< J- <
it: < V/

< <

o•
>I■**■
——

-?.<_£
_

_

<

o

<

S C O ) .

•?
;§
J.
T*
OJ
—
_

_

<

DC <.

"~ ° 4t
SI .-.2
2 =o

> OT _. -

Xatt

T-

o o
° +*

CO c

CD

eo
X

CO

a.
E

TJ

u

Z

OJ

o
•V a>

"._: x. «03 LU <

O)

b3 8

_.
o
t_

Q

c

CO

C

3

— u_

60497800 F

u.
01
tn O)

rrj W
1— O

J._. i^

__ *-

O
OJ
>

a. Q

1?
—1 O-

3
CJ
X
UJ

cu
o

'35 $Z
O 1^

'tn

o> E
-1 C/5

OJ

E
a>
a

E
o
o

S3
3
O
T7

O
U.

>
91

CD

CO SZ

01

OC

.2
§
(A .2".
£ S

3

SZ

u

Q.

CO

CO

(0

o
T
O
OJ

„

CD

u

♦
>CO
CD

O
LL

F
<5

8-3

«**^v

" . < '

' / ■ ">* »• ■ „- - " „*. * ' ' -j yv . (> ■* *
JM

"5.
E
CO

X
111

,

-

~3Cy

.

t

«"

' y,

!•

y<

•

,

,

'A'

•

* ' . "
J . t * !%
1 .^ '

tf^*''.
,

-1 <

. to *'•' ."" s

■

xUJ <_l

Q- in

^O I ^I
O 03

.,< • *. *t
' « , . "■> " - ' ' ' • * , ' ' , • s

/fS%.

* > y. - s * „ ' - 7 < x * ■ . '
o o

;y

" ' - " t o - ' ' ' - • V. , * ' , ' \ . . * ' < ; » • ' , " . t o *

«

"

■"^■so. • : - < i * - y * * ■ * »* •' ><-

' S -X *

"5i
cu

. o -r\
:i

...

OC

OC

«•
/ ! ^ S

' y*4*'\ * y '»'♦'•*** " '"** * -. * v"*- - <.~'*
'"t~~"i'' V» * <~ »"."'" ' -i" * ' ' .'>.
O cu

c
o

T
ype g
u
m
A
r

> /' t «
< V
> ,, V
' J' ". * '* >f * >. * ' *
*! >" O
. f*. ~ ^J * * ' / 1 *f *1 ^^ J- ~1 i' <

"

•

y«*

.-.
*

*'

i,.

*.
'

'<<

'

*
s

. to ! !.S'y .▶ .',-'." *'** > „r v ^

CO

§

a
3

cu

0J
S3
3
O
Q

Si. ; . "

O

Q.

E

o
O

^S^v

TJ

C
3
O

'i " *

tu

o

I—I
CO

z

*"%.

U

.§ E
> 2
CO

'-

'J

»*

'

^

*''

*

-?

''•*''

i_' .

-2? ^ <- .,
-jw y ^ i y , ' *« _ ,, ! • ,;2. ; ,\ \

H

Z

a
CQ

<

3

c

-

i'

'

«'

>!

'

^

-,

<

■

-;'

'

/

,

':

..

-J

CO

UJ
QC

S

c

CD

E

-;

s

«-

c

_.
_.
o
*-

__

^_

w

z <

•.;

'",'."

(1)
3

, c m " , 11 i * - c ! , t 3 » - " _ T f

CD

<,«.?= § *j»- s q » 4 ,

(0

c

f t ~ " ( 0 4 - 11
(0 JO S -
-

TJ
CU
c

:.'

TJ
c
c
o

T
O

- j
at

i

, . i

3

—
*
3
O TJ
T
O _.

'
-

'cm

_J

"' i *! " r

,* r"y>:7* -.', '' ■ - - _ -, - \;r>

! i
I i

j Q

cu

cu

3

"CO E
91 O

_*

M £ 11

2

g
SS
O CO
CL _
CL ff
<

i-i

cc o g

.— h- o ot —:

iS "E +- "o 2.

S tr a
o_!<

<
2
*o
T
O
3
to

a
—
■>
cu

- Z

H

'o

CD
u.

O.
CD

TJ

ro

/^^v

i _

LL

60497800 C
z*-fe».

jJS8\.

cu

a

>- X

E
CO

"J

M
=
A
IA
G
A
)(
X
E
C
O
M
A
L
P D

o o

M

3
OQ
ii
Q

CO

cu
OC

z
<
X
E
O
C
M
LP C
=
C
M
A
)2A
P
,1
X
L(

>

- 3
3

o

a

cu

cu

a
E
o
(J

a
E
o

0m*K

N_^

T
ypeof g
A
u
m
re
n
t

CO

E
o

CJ

_ l
II
- 5

OJ
OJ
•M

c

OC

cu

OJ

+-»

a
M
■>•

C
CO

cCO

1
—

U-

Q.

>•

E
o
O

cu
OC

OC

o

_
.
OJ

cu
a
"<0
0)

O

>

CJ

To

LL.

QC
II

C
O
Y
M
E
X
P
LX
, Y
=
C
N
0X
G
J)(

cu

a

a .

u.

,

a*

91 **P

•^ u.

UJ

ni ■-

X
UJ

§

>—l

0^\

H
U

O

^ c
_5 E

U

UJ
—I
CO

Ez

t—<

C/3

Z

2
H
z

a

—j

2

z
o

CM

-■

a.

a

CO

C
D

-J

O

o
_J

<

CJ

CJ

-■

Z

—
»•
^4 n *

N
u
m
b
e
ro
f g
A
u
m
rse
n
t

—
-

c
o

15
4-

1

* _

=1

U

60497800 A

Ol i+-

co o

-E C"O xJ c|
.£ a- a E
5
O ro
c (oJ «<

CT £• 3 o
.E < O u_
co c Q c
8
o c o
91 OT ^ OT

T
O

K§_.*g;..,

fi

c
o 22
*=: E x
rl* o
5 i -2a

3 E g
o cj |

CJ ro o,

Q . CD
O CU
C CD
CJ
H-

a ro o E

f2 CU° Q.

Jft
£ _< E
o p
OJ

'■'• «''& '■'• ■ '
-,S2 •*; 2 _. J3
*J ° m o ~

c oj ro ° *"
fi- E _£ '£ a £
E <2 jo .» £ 2

OJ

4 -

X

C-~

aC > - - .

-*

C O —■•

CU t—; c

;
OJ

■ 21 Eo o"fioa,>.Eg>
g

_.
CU

T . -" 5* > p C O5 ?T 3.

II

<

O

91

._
_£ ,j

CD

II
*N_
CM CU

<
|S>

OT

, 3> ._"_: E .-

_

o

3 +o
1
-■
z 2
C

E

OJ

c

O OJ
TJ CO
ro cu
OC jQ

;

|jglB.I«g

<. +3 > a> cu Q.

OT « ^_.
* •_ J > g OJ
«=

CO

OJ

U;

OJ

0

TO
>
>
C
X
Q.
■M C O C O O J c u _ 5 *
i; «4- t »_ >*- 3
O
O
co
O
O
ot

8-5

:i
'
.0)

a.

E
CO

]-' '. LL

OQ

0Q

> xxx <

_ x x x <

£, uji ST uj 2:
STrJ X -J x

CD UJ CD. UJ (j
O *- O -J o

CD UJ, 5

X
UJ. s UJ Z
*—" —' _. _J TZ

do
_j co _3 a. 3 o
-i 2} -J _=S°CO%CJ
< 2 Q ,2 o
CO 2 Q g n
ii 2 ii On II O ii, ii O ii o q
N Q >- O CQ 00 Q LU *> a lu o o

X*UJS: j*j
ii O ii O ii
N Q >- CJ oo

' ui —
— S"i
—
d?u|
< Q X
< . 5c
X U J Z ^uj75
xCOU j«c o
z ^ <
O
S 2-55
w 2 Q o 2 Q
i-2
Q
ii 2 A "2 A n O ii
OQ Q Q m
a q CQ. Q Q

- • H"_

< LU 3
O Q,Q

"JlJJ

8s°8g8
° 5 a il »
ii Q ii O o

X O t U U U

CO

91

OJ

CO

c

3

ro
OJ

Q« e

H fa

-C _O

o>

3

cu
OC

O
Q

0J

OJ

CD

_5
a
c0 Jo O= £o
OC D o

PC

O
O

S3

«
2
_ O

OC o

0)

0)

CD

re
2o Eo
0J

OC

Q

(J

co

QJ

E
o

«Q J 2O

CJ

QC Q

=

OJ

OC

0)

o

Q

S3

0J

•

•J3

E CO
cCO x:
i->

';-' cu
S3

ro
2
CD O
oc a

15
3
CD O

oc a

T
O
c_
.
M
■30J

a.

a

_
•
ro

CO

4-

to

co
QJ
OC

OJ

=
Q
O

to

_3
cC Do

E
O
O

91

3

O

0C

Q

CD

a
EO

OJ

CD

OJ

0J

«
2
aj O

O

0C Q

_ t

ro

2

E

OC

Q

CJ

QJ

O

O

CO
CD

=
O

cu

QJ

S3
E
o

oj O
OC Q

OC Q CJ

0J

i

S3

«
2
cu O

»
2
cu O

OC Q

OC Q -

/C^V

O)
(U

X

■S 1
91 I

/£^5V

C
D
O
_J
O

CO

^T
O
_,
O
QJ
u.

3
4->

M -

>
a

QJ

_
.
0J

l_

x:
"o

O

X) o>

51

Q.

Q_

Q.X

X

X

uj

Old

-

CD CD "'cb

O

uj

o

-l-l

CD CD

o

33

_J

< a o

CJ

'" X *

O

< Q

z
z
_■ CO CO
co Q o

X z

CO CO
CO O o
o O CJ
CJ Q CJ

z <

X ',., X C O
X z
co O

oo

£: CO
CO O

91

CO

CO

cu

,c
■f
r
CO

—- —«o-

__

•a

CM
CO

X
^

*C M

s v/ iv/v
oj

CU

<

_2

ct

£

X

OJ

_o

<

13

OT OT

*C M

fCcD

CO
CO

x £ x 5

*C cn

£ >- £v/
CD

§

<**

o

CM
00

M
■

OT

CM CM CO

•v

^ci«^v

+

C' ^'.

CO

I?:

x

fc:

CM

1^

< V/ x V/ V

," co
co

?
*
CO
c

O)
C
O

i-

u.
f"
CO

O)
CO

h

cCO

•E<

*_t
8<

i

E c
cO ' gc r_5

•9
c
_ S,

x—
.t

"o

"o

F
3(1>

r- O 2

1 1 =

X CO

> o
X O

C
D C
D
O Q

*£< "STX
o — o
o
o

>

.JZ

4->

c

o *£
•-

c
o
a

X
LU

CO

+-• ._

To
'£<
c

is

CD

CQ fa

-J

LL

o>
c

If

OJ

C
D

CU

■2 i

E

V
X
_
.
o

—
_, ~3
ef CO
ef fc:
,.

cu

o

i-

_.

•3P ro
OJ

co o
Z _l

b oi

o o

O -J

oi o>
'i- .E
r- CO

CD

o> „> •-

1=

0>

•

q. a>

>.E

•e
»
cu c

4-

1-

CJ CJ

(rfCS^w

8-6

60497800 F

^^
—
1s
x
fa

UL

OC
UJ
II

<~
S
o—
«.2
•
4J O

CJ
LL
OC
LU
II

CO

\CO
I

II

H-

I

II

>-

>-

ro

OJ

CO
OJ

ro

C
D

CO
CD

ro

CD

CO
CD

OC

OC

OC

QC

OC

OC

H fa

—
■»

«° ss
CO

Z

o

a,
>. 3,
s

ro

CO

CC

cc

OJ

a>

C
O
C
D

ro

ro

ro

CC

OC

OC

OC

CD

CD

CD

H <

H
U

fa
<:

z

c-

H
X

.o
"o

4—

x> 

fa

u
>—i

CO

CQ

o ■—
*
^ s
x> E

,_

—
.

,-

X

*-

-

T-

3

'

E

§ s,

fa

£X

T)
TJ
O

CQ

<

*>
-

i - i

G
o

•43

'3

ta

-rj
CN

TJ CO
CM CM
*-> ©

t-»

<* CD

>°

C M | ^

8. oj in"

<—^

O

< v

c —
ro <.

—

<

<

0$£\

I?• <=

■a
S
X

CO O

*zt
c +=
o

u—
.2
■i
c3

3

oa fa

60497800 F

1i

B

si

t
3
LU LL

CD LL

9r -

E
2
o £

O LU

_! o o>

> _

X

<

■CDf

E
g c JS
o
S

O) JD D)
*Z c QJ

I - W Q

+-<
OJ

E .E

O
C OJ
O
c
~O ) O' J fl

Ez
93

OT
93
o>
0O>)

r- CJ Q

C

g
c 3
0 S, o)

01 c O)
"_. ro Q>

1- 1- Q

8-6.1/8-6.2

/*%

^

^

^

^

igKN

.
LL

CD

a
E
CO
X
U l

S
§8g8
co 2 Q ^ ii

ii O ti o cj
>- Q UJ O CJ

Y
=
A
T
A
N
X
)( D
O
E
U
B
LD
, E
=
D
A
D
T
N
)( B
=
A
TA
N
2
)1
,( D
O
D
2
U
E
B
L
D
,1D
,D
=
D
A
D
T
N
2
)1
,2
(

D
O
D
U
2
E
B
LD
.1M
.D
M
=
D
M
)2
D
D
,0
1(

X
E
O
C
M
LP C
M
C
=A
B
)S
(

—.UJQ

+
o

£.o"z

z

couj
OJ
oca
<2
" O

o
o E|_co

*CD U
a c
>

3

1- u-

i

QJ

CD

OJ

3

E

O

_
-CJ
CO
3
Qj
O

_
CO
OJ

XI
"3
O

O

OC

OC

Q

OC

O

Q

QJ

QJ

Q

cu
S3
3
O
Q

CO
OJ

OC

CD

QJ

cu

_ J_
co 3
CD O
QC Q

m 2
CD O
oc a

XI

«
2
cu O

,__,
fcs|CM

OJ
3

C
O)

Ncm

E

—

XI

C
i_

■3OJ
»-*

OC O

i_

"x
o
CM

CD

_
T
ypeof g
A
u
m
re
n
t

OJ

5

CO
OJ
OC

3
O
Q

OJ

cu

_

S3

QJ

O

S3
3
O
Q

QJ

a

_

ro

E
o
O

0)0

-Q

3

ro

"3

OC Q oc a

.:■O
.xiJ ■■
'■':

ru

a
E
O
CJ

Xi

« 2

«
2
QJ O
oc a

oj O
OC Q

MP
•Up MP
MP CO

MP
a j j t M fl
MP MP
MP Z

z
<
<

CD S3

15
2
cu O

0)

—
*•
1- Hh- on oc

CO Z

a co co
co a o

"o

S3

11

z < z <
<
b< 1<- b<
r-

oc a o

<

q

<

a

>

s5x

£3

tn CD
_
o>
53 a>
-=
c

CO

CO

1_

t-i

♦■" ._

•*- ±~
4— 4—

4—
.$_ 4— 4— CM
4—
Z
CM
Z

O

cu

oc a

4—

o

«
> _■
QJ co

aas

a
O
2

CO
OQ

Q

CJ

<

co O

o <
< a

..co
co <
< O

O

<
o

OT

v _•
z

OJ

TJ

c

co

<

<
t
h* o

_
»
o ' S
-;

co
. <

».2

MP
^ OJ '—■ "O MP
f c : =!
_! X
X QJ MP
t=|(M

-5„

. fc:

fc:|CM_.

t-t-

CM

CM

CM

■-

t—•

«*
S
O) ro

PQ

<

A
u
m
rse
n
t
N
u
m
b
e
ro
f g

. 1 " o -1— ■
8 $ S _ J

c

2
I"j

/f"^\

o
£ A\

91

Q

2

3

£

«

S5
»- ro

•C

§

CM

<
c

co
t-i
O
i-

CO

<
co
t-t
CJ

,-• cm

<

c"
—

CO

^
«
^

Is-

<

TJ
O

S

^S3 CO
+
4- II
CN <£

<

S5
O
T

O <
o _
■cj
_
i
CD

t l
.E
OT—<
_ . < <
CO

c( 0

OT

3

3.2

£ 3 5 ^~ 3
."■
- >ro £_ < - o
O
T

£: bz
cr - =
xi-t
tof
-c _ 5C M
OT —' 1^
QJ _ 2.
3 Z <
"co < I-

CO Xl^
• « co'

c
T i

B
casin
E
e
arlxt F
ou
nict

60497800 G

Is

co oc

O)

c
cu
OJ
c
ro
o
I-

<

3

TJ

_

CD

_3

I5 2E

+fc:8— .E
* s

cd Q

4o

O)

CD

OJ

■S
CO C
— «"
CU

l-t-

c

O

Ex. E "

ro ro
_.
X3
_§ QJ *- "x ro c cu
Q. ■£ E O1 * cOoT 0 x
cj *CU

S

C
O

J, CU
OT § §
O)

£

*« CO
TJ O

Vt °

T
ro 0 O

1_

QJ
T t
C
to

E
OJ

OC

O
T
_3
3
T>
O

2

CU

c
'ot
O
U

—
.
<
CJ

CO CJ

cu
c
"w

u

<

|E _C DOTC
O OJ CO

— co T2

!- ro cm

oc z z
a
< < 3 C-,xU;
co 1- \- ■♦
o < <

3

O
T

CO

£ CO

•8

MP

8-7

y*^^\

^ ^ K

When a function subprogram is defined with the same name as that of a basic external function, the user
definition overrides the library definition only if, in the calling program unit, the name of the function appears
either in an EXTERNAL statement or in an explicit type statement that overrides the type associated with
the library function, or if option T, D, or OPT=0 is specified on the FTN control statement.
/-s®\

Table 8-2 lists the basic external functions.
Arguments for which a result is not mathematically defined, or those of a type other than that specified, "^
should not be used. Arguments of the trigonometric functions SIN, COS, and TAN are in radians; those of
SIND, COSD, and TAND are in degrees. The inverse trigonometric functions return principal values in radians.
If the name of the function appears either in an EXTERNAL statement or in an explicit type statement that
overrides the type associated with the library function, or if option T, D, or OPT=0 is specified on the FTN
control statement, the arguments of all external functions are checked to ensure that they are neither indefinite <^*\
nor infinite and fall within the limits listed in the Definition column of table 8-1. Argument checking is pro
vided unconditionally for all single and double precision math functions except DSIN, DCOS, DLOG, and
DLOG10. An informative diagnostic is provided when an argument is found to be invalid. /«"%

MISCELLANEOUS

UTILITY

SUBPROGRAMS

^

The utility subprograms described below are supplied by the system and are always called by name (section >^
17 defines call by name). A user-supplied subprogram with the same name as a library subprogram overrides
the library subprogram. Other utility routines, such as the mass storage routines, CYBER Record Manager
interface routines, Sort/Merge interface routines and Post Mortem Dump routines are described later in this section.
In the definitions listed under the routines:
/^"§s

i and n are integer variables, constants, or expressions.
j

is

an

integer

variable.

^

a and b are variable or array names of any type.
u

is

H

a

unit

is

designator
a

RANDOM

(as

d e fi n e d

Hollerith

NUMBER

in

section

s p e c i fi c a t i o n .

5).

<
/!^_

G E N E R ATO R

^

RANF (n)t
Random number generator. Returns values uniformly distributed over the range (0,1); the value 0 and 1 are .'
excluded, n is a dummy argument which is ignored. Result is type real.

'RANF

8-8

is

an

intrinsic

60497800

function.

/!y

E
/t*9$t

CALL RANSET(n)

Initializes seed of RANF. n is a one-word bit pattern. Bit 0 will be set to 1 (forced odd), and bits 59
through 48 will be set to 1717 octal.
'

CALL

RANGET(n)

/pas Obtains current seed of RANF between 0 and 1. n is a symbolic name to receive the seed. It is not neces
sarily normalized. The value returned may be passed to RANSET at a later time to regenerate the same
sequence of random numbers.

OPERATING SYSTEM INTERFACE ROUTINES
f

D AT E

(a)

or

CALL

D AT E ( a ) ^

rThe current dateNOS/BE
is returned
as the
of argument
a NOS
or of
function
in a
the
formmmlOHbmm/dd/yyb
1, SCOPE
2) orvalue
lOHbyy/mm/dd.
(under
1), the
where
B denotes
blank,
is the number of (under
the
month, dd is the number of the day within the month, and yy is the year. The value returned is Hollerith data
^p^ and can be output using an A format specification.'*
The default type of the function DATE is real; thus if J and K are integer variables as in:
J = DATE(K>

J will not be useful because the value returned will have been converted from real to integer.
JDATE(a) or CALL JDATE(a)+ *
SN.

The current date is returned as the value of argument a or of the function in the form SRyyddd, where yy
is the year and ddd is the number of the day within the year. The value returned is Hollerith data and can
be output using an R format specification. The type of the function JDATE is integer.
SECOND(t) or CALL SECOND(t)^

JS~*N

The central processor time is returned from start-of-job in seconds as a real number, usually accurate to two
decimal places, t is a real variable.
Example:
DPTIM = SECOND (CP)

'These routines can be used as functions or subroutines. The value is returned via the argument and the
normal function return.
'* Not available under SCOPE 2.
''The date format can be changed by the installation.
60497800

D

8-9

/^^v

TIME(a) or CALL TIME(a)t
/^^\

CLOCK(a) or CALL CLOCK(a)t

The current reading of the system clock is returned as the value of argument a or of the function in the form
10Hbhh.mm.ss., where b denotes a blank, and hh, mm, and ss are the number of hours, minutes, and seconds, <&®\
respectively. The value returned is Hollerith data and can be output using an A format specification.
The default type of the functions TIME and CLOCK is real; thus if J and K are integer variables in the following ^^.
statement, J is not useful because the value returned will have been converted from real to integer. }
Example:
J = TIME(K)

CALL

DISPLA

(H,k)

^

A name and a value are placed in the dayfile. H is a Hollerith specification of not more than 50 characters; k is
a real or integer variable or expression and is displayed as an integer or real value. Characters with display code -«^n
greater than 57 octal are replaced by blanks when displayed at the operator's console. If the first character is $,
the message will flash at the console except under NOS 1, which allows flashing messages only for system origin jobs.
/s^s

Example:
CALL DISPLA (7H TIME = , STOP-START)

CALL REMARK (H)

Places a message in the dayfile. Under SCOPE 2, the maximum message length is 90 characters displayed on one line.
Under NOS/BE 1, the maximum message length is 80 characters displayed 40 characters per line. Under NOS 1, the
message length is one line of 30 characters. A message exceeding the maximum length is truncated. A message
shorter than the maximum must have all zeros in the lower 12 bits of the last word. These zeros are automatically
supplied when a Hollerith constant is used as the parameter. Characters with display code greater than 57 octal are
listed in the dayfile, but they are replaced by blanks when displayed at the operator's console. If the first character
is $, the message will flash at the console, except under NOS 1, which allows flashing messages only for system
origin jobs.

/^^\

Example:
CALL REMARK (9HLAST DECK)

CALL

SLITE(i)

"^

Sense light i is turned on. If i = 0, all sense lights are turned off. If i is other than 0 through 6, an
informative diagnostic is printed and sense lights are not changed.

'"^

CALL SLITET(i,j)
,fr*$^EV

Sense light i is tested. If sense light i is on, j = 1; if sense light i is off, j = 2. If i is other than 1-6, an infor
mative diagnostic is printed, all sense lights remain unchanged, and j = 2. Execution turns off sense light i if
it
is
on.

"^
^■^N

'These routines can be used as functions or subroutines. The value is returned via the argument and the
normal function return.
8-10

60497800

E

(Note: Logical variables generally provide a more efficient method of testing a condition than do calls to
SLITE or SLITET.)
CALL SSWTCH(ij)

If sense switch i is on, j is set to 1; if sense switch i is off, j is set to 2. i is 1 to 6. If i is out of range,
an informative diagnostic is printed, and j is set to 2. The sense switches are set or reset by the computer
operator or by the control statements SWITCH (NOS and NOS/BE), ONSW (NOS only), and OFFSW
(NOS only).
/J-*N

CALL OVERLAY(fname, primary, secondary, recall,k)

See section 7.
0^S

CALL EXIT

Program execution is terminated and control is returned to the operating system. (Note: use of the STOP
statement is preferable to CALL EXIT.)
CALL CHEKPTX(filelist,SP)

A checkpoint dump of the files specified is taken. The arguments are:
filelist Array in the following format:
59

17

/*f^\
Word 1

11
n

Word 2

lfn1

f1*

Word 3

lfn2

f2*

Word n + 1

lfn.

'n*

oooo

FDoes not apply to SCOPE 2.

60497800 J

8-11

SP

Flag indicating whether or not all files assigned to the job are to be checkpointed. If SP is
zero, all local files are checkpointed. If SP is nonzero, the files specified by filelist are
checkpointed.

n

Number of files in following list, to a maximum of 42.

lfn.

Name (in left-justified display code) of user mass storage files to be processed.

fn

Number indicating specific manner in which lfn is to be processed.
0 Mass storage file is copied from beginning of information to its position at
checkpoint time, and only that portion will be available at restart. The file
is positioned at the latter point.
1 Mass storage file is copied from its position at checkpoint time to end of
information, and only that portion will be available at restart. The file is
positioned at the former point.
2 Mass storage file is copied from beginning of information to end of informa
tion; the entire file will be available at restart time. The file is positioned at
the point at which the checkpoint was taken.
3 The last operation on the file determines how the mass storage file is copied.

/■C
JP
-^V

j ^ $ $ \

Example:

DIMENSION
IFILESO) =
IFILES(2) =
IFILESO) =
IFILES(4) =

IFILES(4)
30000B
5LTAPE1 .OR. 10000B
5LTAPE2 .OR. 30000B
5LTAPE3

CALL CHEKPTX(IFILES,1)

The names defined in the array passed to CHEKPTX must be the actual file names used at run time.

**^i^?\

For more information, refer to the operating system reference manual checkpoint/restart discussions.
CALL RECOVR(name,flags,checksum,addr1,addr2)
/iSS\

name

Name of subroutine to be executed if flagged conditions occur (must be specified in an
EXTERNAL statement).

flags

Octal value for conditions under which recovery code is to be executed, as outlined below.
Conditions can be combined as desired, with octal values up to 377 allowed.
001 Arithmetic mode error.
002 PP call or auto-recall error.

:Not available under SCOPE 2.

8-12

60497800 J

/$p°^\

004
010
020
040
100
200

Time or storage limit exceeded.
Operator drop, kill, or rerun.
System abort.
CP abort.
Normal termination.
Terminal interrupt.

checksum Last word address of recovery code to be checksummed; 0 if no checksum is desired; a
negative number if the address parameters follow, specifying the area where checksumming
is desired.
addrl First word address of recovery code to be checksummed (used only when checksum is a
negative number).

r

addr2 Last word address of recovery code to be checksummed (used only when checksum is a
negative number).

The RECOVR subroutine allows a user program to gain control at the time that normal or abnormal job
termination procedures would otherwise occur. Initialization of RECOVR at the beginning of a program
/^\
establishes the conditions under which control is to be regained and specifies the address of user recovery
code. If the stated condition occurs during program execution, control returns to the user code. If necessary,
the system increases the CP time limit, input/output time limit, or mass storage limit to provide an installation
#^ defined minimum of time and mass storage for RECOVR processing. No limit is increased more than once in
a job. RECOVR can be called more than once during program initialization to reference different user recovery
subroutines. These calls to RECOVR can use different combinations of conditions for the same or different
user recovery subroutines.
No more than ten routines can be specified by RECOVR in one program. If an error occurs and more than one
J^n routine has been established for that error, the routines are called successively, with the routine most recently
specified called first.
jsn The second specification of a subroutine overrides its previous parameters. This override can be used to remove a
subroutine from the RECOVR list by passing a mask of zero.
jPN A checksum of the user recovery code can be requested during initialization. If flagged conditions subsequently
occur, RECOVR again checksums the code before returning control to it. This gives some assurance of user code
integrity before it is executed.
■ If the checksum parameter is zero, no checksum is done.
/pn If one of the user's selected error conditions occurs, RECOVR gains control, performs internal tasks, and then
v transfers control to the user's recovery subroutines. The following three arguments are passed to the user's
recovery subroutine:
/*fi"*\
1. A 26-word integer array. The first 16 words are an image of the exchange package; the seventeenth
word is the contents of RA+1. The first word of the exchange package contains the value of B0;
/sp5\ bits 0 through 17 of B0 contain the error flag. The 18th word contains a zero value unless it is
v changed by user's recovery subroutine (discussed later in this section). The 19th through 26th words
contain a copy of the 1st through 9th words of the reprieve parameter block. Refer to the approjiSN priate operating system reference manual for detailed information.

/|E\

60497800

J

8-13

#*%$\

2. A flag that, upon return, determines the type of program termination. This flag is initially set to
zero. The possible types of program termination are discussed later in this section. //SS!^
3. An array, starting at RA+1, that allows a FORTRAN subroutine to access all of the user's field
length.

^

If the recovery subroutine was called because of normal termination, the subroutine, before returning, should
flush the buffers of all output files. Buffers can be flushed by an ENDFILE or REWIND statement. ^
Upon return from a user's recovery subroutine, the 18th word of the reprieve package and the argument flag
contain values set by the user's recovery subroutine. If the 18th word of the reprieve package is set to 4, '^
the program immediately resumes normal execution, and the argument flag is ignored. If the 18th word is not
set to 4, the argument flag, which is set by the user's recovery subroutine, is checked. If the flag is set to
nonzero, the job terminates normally, as if no errors had occurred. This happens after all the recovery sub- '^
routines have been processed. If the flag remains zero for all the recovery subroutines, the job continues as
if RECOVR had not been called; that is, the original system error code is reset and processed.
If the flags are not set by any of the recovery subroutines, the job continues as if RECOVR had not been
called; that is, the original system error code is reset and processed.
/fS^K

In an overlay structured program, calls to RECOVR as well as the user recovery subprograms should be in the
(0,0) overlay.
For further information about RECOVR, refer to the appropriate operating system reference manual.
Example:
PROGRAM MAlN(INPUT,OUTPUT)
EXTERNAL REPREV.CHKSUM

CALL RECOVR(REPREV,72B,LOCF(CHKSUM))

STOP
END
SUBROUTINE REPREV(IXCHNG.IFLAG.IFLDLN)
DIMENSION IXCHNG(17), IFLDLNHOOOOB)
IFLAG = 1
PRINT 10, IXCHNG, (IFLDLN(I), 1=1,64)
10 FORMAT (3(6X, O20)>
RETURN

0^^\

entry chksum <« determines end of code to be checksummed
END
0£~$?K

DEBUGGING AIDS
A number of calls and functions useful in debugging are described here. Many users find CYBER Interactive
Debug and/or Post Mortem Dump more useful. They are described near the end of this section.

8-14

60497800

J

ygSN

CALL DUMP (a1,b1,f1 ^M
CALL PDUMP (a1,b1,f1 a^'V
Dumps central memory on the OUTPUT file in the indicated format. PDUMP returns control to the calling
program; DUMP terminates program execution, aj and bj specify the beginning and the end of the storage
area to be dumped. 1 < n < 20. f is a format indicator, as follows:
f = 0 or 3 octal dump
f = 1 real dump
f = 2 integer dump
For f values 0 through 3, aj and bj are the first and last words dumped. If 4 is added to any f value, the
values of aj and bj are used as the addresses of the first and last words dumped within the job's field length.
An ASSIGN statement or the LOCF function can be used to get addresses for the a: and bj parameters.
Examples:
CALL PDUMP(A(D.A(100), 1) Dumps from A(l) to A(100) as real numbers
CALL PDUMP (0, 1000B.4) Dumps from location 0 to 1000B in octal
CALL STRACE

Provides traceback information from the subroutine calling STRACE back to the main program. Traceback
information is written to the file DEBUG. To obtain traceback information interspersed with the source
program, DEBUG should be equivalenced to OUTPUT in the PROGRAM statement. (Refer to STRACE,
section 9).
LEG VAR (a)

Checks the value of variable a. Returns the result -1 if variable is indefinite, +1 if out of range, and 0
otherwise. Variable a is type real; result is type integer.
CALL SYSTEM(errnum,rnesg)

errnum Error number. An integer value from 0 to 9999 decimal. Error numbers used by the
compiler (listed in appendix B) retain the severity associated with them. Error numbers
51 (non-fatal) and 52 (fatal) are reserved for the user. If an error number greater than
the highest number defined in appendix B is specified, 52 is substituted. If errnum is
negative, SYSTEM returns immediately with no action taken.
mesg Error message; entered as a Hollerith constant with the first character used as a carriage
control character and not printed.
The subroutine SYSTEM enables the user to issue an execution-time error message.
If error number zero is entered, the message is ignored, the output buffers are flushed, and control is
returned to the calling program.

60497800

J

8-15

/<^\
The file OUTPUT should be declared before SYSTEM is called. Otherwise, no errors are printed; and a message
to this effect is entered in the dayfile.
Each line is printed unless the line limit of the OUTPUT buffer is exceeded, in which case the job is terminated.
Example:
CALL SYSTEM (3. ■?= CHECK DATA # )

X ^ \

CALL SYSTEMC (errnum.speclist)

errnum Error number for which non-standard recovery is to be implemented. Error numbers are
listed in table B-5 of appendix B.
y£I~£V

speclist Integer array containing error processing specifications in consecutive locations:
word 1 F/NF (1 = fatal, 0 = non-fatal)
word 2 Print frequency
word 3 Frequency increment
word 4 Print limit
word 5 User-specified error recovery routine address
word 6 Maximum traceback limit applicable to all errors; this limit is 20 unless
changed by a call to SYSTEMC
SYSTEMC enables the user to replace the standard fatal/non-fatal error table with an enhanced error table,
which contains specifications that regulate error processing. The error table, whose format is described below,
is ignored for erroneous data input from a connected (terminal) file.
In an overlay program, if SYSTEMC is not called in the (0,0) overlay, the routine might not be available to
higher level overlays.

y^^sv

In the error table, the first entry corresponds to error number 1, the second to error number 2, and so on.
Each entry has the following format:
59

51

print
frequency

frequency
increment

43

31
print limit

20 17
detection
total

NN

user-specified
recovery address
jr-CE&SV

print frequency

By default, print frequency value is 0. If the value is changed to n by a call
to SYSTEMC, diagnostic and traceback information is listed every nth time until
the print limit is reached.

frequency increment

By default, frequency increment value is 1. This specification can be changed
by a call to SYSTEMC if the call specifies print frequency as 0. When
frequency increment is 0, diagnostic and traceback information is not listed;
when it is 1, such information is listed until the print limit is reached; when
the frequency increment is n>l, such information is listed only the first n
times unless the print limit is reached first.

>+^$\

/eSffl.

I 8-16

60497800 J

print limit By default, print limit value is 10. It can be changed by a call to
SYSTEMC.
detection total Detection total is a running count of the number of times an error occurs.
0®^ The final value is reported in the error summary issued at end of job if
SYSTEMC is called during execution.
F/NF This bit specifies the severity of the error: 1 indicates a fatal error; 0, non
fatal. The severities of system defined errors are given in appendix B. All
errors defined by the user with these numbers in a call to SYSTEM retain
0 ^ - t h e s p e c i fi e d s e v e r i t y . T h e s e v e r i t y o f a n y e r r o r c a n b e c h a n g e d b y a c a l l
to SYSTEMC, however.

vjfpN

0$^\

60497800

J

8-16.1/8-16.2

|

./*%

1
^

^

^

1
^

^
~

0^\

rA/NA The A/NA bit is ignored u
l e sbe
s set
a only
n o nduring
- s t a nassembly
d a r d r eofc oSYSTEMC.
v e r y a d dWhen
r e s sthis
i sbitsis
p eset,
c i fithe
ed;
it ncan
address in an auxiliary table is passed in the third word of the secondary
r a r g u m e n t l i s t t o t h e r e c o v e have
r y r the
o u terror
i n e number
. E a c hin its
w oupper
r d i10
n bits,
t h esoathat
u x ithe
l i aaddress
r y t a bof
l ethemfirst
ust
error number match is passed to the recovery routine. An entry in the aux^ s n i l i a r y t a b l e f o r a n e r r o r i s n o t l i m i t e d t o a n y s p e c i fi c n u m b e r o f w o r d s .
user-specified This address is specified in a call to SYSTEMC.
0m*. recovery address
A negative value for any word in the speclist indicates that the current value of that specification is not to be
r changed. Asequent
user-specified
routineset
activated
call witherror
word recovery
5 of the speclist
to zero. by a call to SYSTEMC can be canceled by a sub
the first
call to SYSTEMC.
rlf SYSTEMCeach
has error
beenoccurred
called, since
an error
summary
is issued at job termination indicating the number of times
^^ For an error detected by a routine in the math library, a user-supplied error recovery routine should be a
f function subprogram of the same type as the FORTRAN function detecting the error. For any other error,
a user-supplied error recovery should be a subroutine subprogram.
0!®\

The error recovery subprogram must not invoke any code during recovery that was also involved with the
error being handled. In particular, if an input/output related error is being processed, no input/output
operations of any type should be done, unless the recovery routine intends to terminate execution.
When SYSTEMC is called from an overlay or segment, it must reside in the (0,0) overlay or the root segment.

/!p"N

When an error previously referenced by a SYSTEMC call is detected, the following sequence of operations is
initiated:

/^\

1. Diagnostic and traceback information is printed in accordance with the specification in the pertinent
error table entry. The traceback information is terminated for any of the following conditions:

i#^N

Calling routine is a program
Maximum traceback limit is reached.
No traceback information is supplied.
2. If the SYSTEMC call references a user-specified error recovery routine address, SYSTEMC,
FORSYS=, and the routine detecting the error are delinked from the calling chain, and the
user-supplied error recovery routine is entered.
3. If the error is non-fatal, control returns to the routine that called the routine detecting the error.
An error summary is printed at job termination.
4. If the error is fatal, all output buffers are flushed, an error summary is printed, and the job is
terminated.

60497800

H

8-17

If a non-standard recovery address is specified in the SYSTEMC call, the following information is available to
the user recovery routine:

y^Ss

Register Contents
Al Address of argument list passed to routine detecting the error for errors detected by a
math library routine.
Address of the FIT for error 103.
/*~Is

Undefined for all other errors.
XI Address of the first argument in the list for errors detected by a math library routine.
Undefined for all other errors.
AO Address of argument list of routine that called the routine detecting the error.
Bl Address of a secondary argument list containing, in successive words:

/^ZlK

Error number associated with this error.
Address of message associated with this error.
Address within auxiliary table if A/NA bit set; otherwise 0.
In upper 30 bits, instruction consisting of RJ to SYSERR.j; in lower 30 bits, address of
traceback information for routine detecting the error.
Information in the secondary argument list is not available to user supplied error recovery
routines coded in FORTRAN.
A2 Address of error table entry for this error.
X2 Contents of error table entry for this error.
Example 1:

C

^**\

PROGRAM EXPECT(OUTPUT)
DIMENSION IRAY(6)
DATA IRAY /6 * (-0)/
SET PRINT LIMIT TO ZERO
IRAY(4)=0
X = EXP(800.0>
X = EXP(-800.0)

C C A L L S Y S T E M C T O I N H I B I T P R I N T I N G O F E R R O R 11 5
C . A N D S TA R T E R R O R S U M M A R Y A C C U M U L AT I O N
CALL SYSTEMC (115.IRAY)
PRINT *. jtjt
PRINT *,******SYSTEMC IS CALLED TO SUPPRESS PRINTING*,
+ j * O F E R R O R 11 5 *
X = EXP(800.0)
X = EXP'-SOO.O)
••-®*N

8-18

60497800

C

Jfl~*\

PRINT *,# *
PRINT *.****"ERROR 115 DETECTED BUT NOT PRINTED*
END

ARGUMENT TOO LARGE, FLOATING OVERFLOW
ERROR NUMBER 30 DETECTED BY EXP
ARGUMENT TOO SMALL
ERROR NUMBER 115 DETECTED BY EXP
•••••SYSTEMC IS CALLED TO SUPPRESS PRINTING OF ERROR 115
ARGUMENT TOO LARGE, FLOATING OVERFLOW
ERROR NUMBER 30 DETECTED BY EXP
•••••ERROR 115 DETECTED BUT NOT PRINTED
/*J"©\

ERROR SUMMARY
ERROR
TIMES
0030
0001
0 11 5
0001

Program EXPECT illustrates a standard error recovery in a math library routine and how to suppress the print
ing of error message 115.
J^fei&S.

Example 2:

PROGRAM FXAMPL(TAPEUOUTPUT)
EXTERNAL ITSOK
DIMENSION NARRAY(6)
DATA NApqAY/6

CALL LENGTHX(5,NW,NUBC)

CALL LABEL(u,labinfo) *

u L o g i c a l u n i t n u m b e r.
labinfo Name of 4-word array containing label information in the format shown in table 8-3.
0$$$*\

This subroutine passes label information to the operating system.
The control statement that requests the tape for the job must have specified that the tape has labels before the
CALL LABEL statement can be used.
CALL LABEL should not be used with files accessed with CYBER Record Manager interface routines.

/#^ ^Recognized but ignored under SCOPE 2.

60497800

H

8-25

TABLE 8-3. LABINFO BLOCK CONTENT

Word

Bit
Positions

1

59 Ihru 0

2

59 thru 18

Character
Length

10

Default for Output

Contents

File identifier

None. Entire field must be sup
plied by the user.

File identifier continued

None. Entire field must be sup
plied by the user.

3

4

17 thru 0

File sequence number

001+

59 thru 48

Generation version number

oot

47 thru 30

Retention cycle

000+

29 thru 0

Creation date (YYDDD)

Today's Julian date.

59 thru 24

Set identifier (VSN)

Blanks (field can be blank or
zero filled.

23 thru 0

File section number

0001+

../S^V

'Field must be display code zero filled.

Default output values are specified for a field by filling it with binary zeros. If any of the fields are improperly
initialized, NOS generates an LX BUFFER/FET PARAMETER ERROR and aborts the job on output. For
further information concerning the fields, consult the appropriate operating system reference manuals concerning
words 9-12 of the file environment table (FET).
The actions that occur at the time of the LABEL call are as follows:
/^^V

Passing the address and length of the user label block to CYBER Record Manager
/^^V

Forcing a rewind on any succeeding open of the logical unit
The LABEL reference occurs before any access is made to the logical unit. If a WRITE subsequently occurs on
the logical unit, the Record Manager routines write a label formatted from the LABINFO area onto the tape as
an HDR1 label. Or, when a close or endfile operation is performed at job termination, the routines write an
EOF1 label formatted from LABINFO. If a READ subsequently occurs on the logical unit, and a label is
encountered on the opening read or an EOF condition, the label information is reformatted and placed into
LABINFO.

^ ^ V

^*^\
8-26

60497800 H

ECS/LCM/UEM SUBPROGRAMS

0^\

CALL MOVLEV (a,b,n)

Transfers n consecutive words of data between a and b. a and b are variables or array elements; n
is an integer value, a is the starting address of the data to be moved and b is the starting address of the
receiving location.
Example:
(^

CALL

MOVLEV(A,B,1000)

No conversion is done by MOVLEV. If data from a real variable is moved to an integer type receiving field,
^ the data remains real.
Example:
CALL MOVLEV (A, I, 1000)

0^ After the move, I does not contain the integer equivalent of A.
Example:
DOUBLE PRECISION D1(500), D2(500)
CALL MOVLEV (D1, D2, 1000)

Since DI is defined as double precision, n should be set to 1000 to move the entire DI array.
"T|N

r

CALL

READEC(a,b,n)

/P-n Transfers data from extended core storage to central memory.
a is a simple variable or array element located in central memory, b is a simple variable or array element located
/^n in an extended core storage block or LCM block, n is an integer constant or expression, n consecutive words
of data are transferred beginning with a in central memory and b in extended core storage.

/*J~**

/*~*\

0^\

60497800

J

8-26.1/8-26.2

^%^

4

/«%

1
^

CALL WRITEC(a,b,n)

Transfers data from central memory to extended core storage or LCM.
No type conversion is done.
Example:
LEVEL 3,B
CALL READEC(A,B,10)
CALL WRITEC(A,B,10)

TERMINAL INTERFACE SUBPROGRAMS*
CALL CONNEC (u,cs)

0^\

u unit designator.
cs optional character set designator (applicable to NOS/BE only): cs is an integer with a value from 0
to 2, in accordance with the character set to be used for the data entered or displayed at the terminal:

/jpN

0 display code (default)
1 ASCII-128
2 ASCII-256 code
If a FORTRAN program to be run under INTERCOM for NOS/BE, under the NOS Time-Sharing System, under
the NOS Interactive Facility, or under HELL07 for SCOPE 2, calls for input/output operations through the user's
remote terminal, all files to be accessed through the terminal must be formally associated with the terminal at the time
of execution.
In particular, the file INPUT must be connected to the terminal if data is to be entered there and an alternate logical
unit is not designated in the READ statement. The file OUTPUT must be connected to the terminal if execution diag
nostics are to be displayed or printed at the terminal, or if data is to be displayed or printed there and an alternate unit
is not designated in the WRITE or PRINT statement. These files are automatically connected to the terminal when the
program is executed under the NOS FTNTS subsystem or under the RUN command of the EDITOR utility of
INTERCOM.
Under HELL07, any file can be connected by providing a FILE control statement specifying CNF = YES.
Under INTERCOM, any file can be connected to the terminal by the CONNECT command.

0$£S

Under all operating systems, the user can connect any file from within the program by using the CALL CONNEC
statement.
A file n is considered still connected if a CALL CONNEC(n) has been made by a program running at a terminal and if
the program terminates under normal or abnormal circumstances without a CALL DISCON(n). Any subsequent
input/output on n will still be through the terminal unless the file is returned.
Under NOS, if CONNEC specifies an existing local file, the buffers for the file are flushed (if it is an output file) and the
file is returned. A subsequent DISCON for the file causes the connected file to be returned, but the pre-existing file is
not reassociated with the file name.

#^ More information about INTERCOM is in the INTERCOM reference manual and the INTERCOM Interactive Guide
for Users of FORTRAN Extended. More information about NOS is in the Interactive Facility reference manual.
More information about HELL07 is in the SCOPE 2 reference manual.

60497800

H

8-27

If cs is not specified, it is set to 0. If display code is selected, input/output operations must be formatted, list-directed,
N A M E L I S T,
or
buffered.

**)

If either of the ASCII codes is selected, input/output operations must be either formatted or buffered. When buffer
input/output is used, either a FILE control statement (section 16) specifying RT=S must be provided, or blanks cannot ^
terminate a line.
When a CALL CONNEC specifies a file already connected with the character set specified, the call is ignored. If the file
specified is already connected with a character set other than that specified, cs is reset accordingly. "^
Data input or output through a terminal under INTERCOM is represented ordinarily in a CDC 64-character or ASCII
64-character set, depending on installation option. For these sets, ten characters in 6-bit display code are stored in .^
each central memory word. As described above, a terminal user can specify from within a FORTRAN program that
data represented in an ASCII 128-character set (providing the capability for recognizing lowercase letters and control
codes) or an ASCII 256-character set (providing the capability for recognizing lowercase letters, control codes, and >■*&
parity) be input or output through the terminal. For the ASCII 128-character and 256-character sets, characters are
stored in five 12-bit bytes in each central memory word. Characters in the ASCII 128-character set are represented in
7-bit ASCII code right justified in each byte with binary zero fill; characters in the ASCII 256-character set are ^
represented in 8-bit ASCII code right justified in each byte with binary zero fill. When data represented in either
ASCII character set code is transferred with a formatted input/output statement, the maximum record length should be
specified in the PROGRAM statement as twice the number of characters to be transferred (see section 7). Allowance /«■«&
should also be made in input/output operations for the fact that internal characters require twice as much space as
external characters.
If ASCII information needs to be read from or sent to a terminal a formatted READ or WRITE statement should be
used. This will cause trailing blanks to be truncated from the line.
If the exact length of the data input at the terminal is required, BUFFER IN and BUFFER OUT should be used.
LENGTHX can be used after a BUFFER IN to determine how many characters were entered. BUFFER IN and
BUFFER OUT ensure that trailing blanks are not added or deleted from the line. The file used for BUFFER IN and
BUFFER
OUT
must
be
of
record
type

S.

A

For a FORTRAN program run under NOS, any file can be connected to the terminal by the ASSIGN command.
In addition, the user can connect any file from within the program by using the statement: /=
CALL CONNEC (u)

Data input or output through a terminal under NOS in NORMAL mode is represented ordinarily in 6-bit display
code. However, the user can elect to have data represented in an ASCII 128-character set (which provides the
capability for recognizing control codes and lowercase, as well as uppercase, letters) by entering the ASCII com
mand to input in ASCII mode. Characters contained in the standard set are stored internally in 6-bit display code,
whether or not the ASCII command has been entered. The additional characters which complete the ASCII
128-character set are stored internally in 6/12-bit display code if the ASCII command has been entered.
Under any system, if a file specified in a CALL CONNEC exists as a local file but is not connected at the time of
the call, the file's buffer is flushed before the file is connected to the terminal; under NOS, the file is returned.

8-28

60497800

H

/d^\

CALL DISCON (u)

This subroutine disconnects a file from within a FORTRAN program.
0^\ This requestthe
is specified
ignored iffilethe
specified
is not
connected.
Afterif execution
of this
underthe
NOS/BE
1,
remains
localfile
to the
terminal.
In addition,
the file existed
priorstatement
to connection,
file name
is re-associated with the information contained on the device where the file resided prior to connection. Data
j~n written to a connected file is not contained in the file after it is disconnected. Under NOS 1, a CALL
* DISCON causes the connected file to be returned; the disconnected file name is not re-associated with the
pre-existing information.
j ^ N

All files to be connected or disconnected during program execution must be declared in the PROGRAM state
ment. An attempt to connect or disconnect an undeclared file results in a fatal diagnostic.
Calls to CONNEC and DISCON are recognized and ignored when programs are not executed under INTERCOM
or interactively under NOS 1.
Examples:

CALL CONNEC (6)

^

CALL

K = PLAGES
CONNEC
(K)
CALL COiMNEC (6,2)

^

CALL

CONNEC

< 4 L D ATA , 1 )

CALL DISCON (6)

MASS STORAGE INPUT/OUTPUT
V Mass storage input/output (MSIO) subroutines allow the user to create, access, and modify files on a random basis
without regard for their physical positioning. Each record in the file can be read or written at random without
jpe^ logically affecting the remaining file contents. The length and content of each record are determined by the user.
A random file can reside on any mass storage device. Record Manager word addressable file organization is used to
implement MSIO files. The Record Manager reference manual contains details of word addressable implementation.
( A file processed by mass storage subroutines should not be processed by any other form of input/output.

f* RANDOM FILE ACCESS
Random file manipulations differ from conventional sequential file manipulations. In a sequential file, records
{^ are stored in the order in which they are written, and can normally be read back only in the same order.
This can be slow and inconvenient in applications where the order of writing and of retrieving records differ
and, in addition, it requires a continuous awareness of the current file position and the position of the required
f^ record. To remove these limitations, a randomly accessible file capability is provided by the mass storage
input/output subroutines.
f^ In a random file, any record may be read, written or rewritten directly, without concern for the position or
structure of the file. This is possible because the file resides on a random-access mass storage device that can
be positioned to any portion of a file. Thus, the entire concept of file position does not apply to a random
0s* file. The notion of rewinding a random file is, for instance, without meaning.

60497800

D

8-29

To permit random accessing, each record in a random file is uniquely and permanently identified by a record
key. A key is an 18- or 60-bit quantity, selected by the user and included as a parameter on the call to ^
read or write a record. When a record is first written, the key in the call becomes the permanent identifier
for that record. The record can be retrieved later by a read call that includes the same key, and it can be
updated
by
a
write
call
with
the
same
k e y.
/S*^
When a random file is in active use, the record key information is kept in an array in the user's field length.
The user is responsible for allocating the array space by a DIMENSION, type, or similar array declaration ^
statement, but must not attempt to manipulate the array contents. The array becomes the directory or index
to the file contents. In addition to the key data, it contains the word address and length of each record in
the file. The index is the logical link that enables the mass storage subroutines to associate a user call key /S~.
with
the
hardware
address
of
the
required
record.
'
The index is maintained automatically by the mass storage subroutines. The user must not alter the contents
of the array containing the index in any manner: to do so may result in destruction of the file contents.
(In the case of a sub-index, the user must clear the array before using it as a sub-index, and read the subindex into the array if an existing file is being reopened and manipulated. However, individual index entries
should not be altered.)

,/^N

When a permanent file that was created by mass storage input/output routines is to be modified it must be ^^^
attached with modify and extend permissions (append permission under NOS 1). Under NOS/BE 1 and 1
SCOPE 2, the EXTEND control statement should be used after the file is modified. Failure to extend the
fi l e
can
render
it
unusable.
^-^
In response to a call to open the file, the mass storage subroutine automatically clear the assigned index array.
If an existing file is being reopened, the mass storage subroutines locate the master index in mass storage and
read it into this array. Subsequent file manipulations make new index entries or update current entries.
When the file is closed, the master index is written from the array to the mass storage device. When the file
is reopened, by the same job or another job, the index is again read into the index array space provided, so
that file manipulation may continue.

MASS STORAGE SUBROUTINES
0 bject time input/output subroutines control the transfer of records between central memory and mass storage. ^_^

OPENING

A

FILE

^

OPENMS opens the mass storage file and informs the system that it is a random (word addressable) file.
CALL
u

OPENMS

(u,ix,lngth,t)

Unit

J

designator.

 (number of entries in master index) + 1
f for a name index: lngth > 2 * (number of entries in master index) + 1
8-30

60497800

D

"1

/PSN

t Type of index.
t = 0 file has a number master index
t = 1 file has a name master index
The array (ix) specified in the call is automatically cleared to zeros. If an existing file is being reopened, the
master index is read from mass storage into the index array.
Example:
DIMENSION 1(11)
CALL OPENMS (5,1,11,0)

These statements prepare for random input/output on the file TAPE5 using an 11-word master index of the
number type. If the file already exists, the master index is read into memory starting at address I.

WRITING RECORDS

WRITMS transmits data from central memory to the file.
CALL WRITMS (u,fwa,n,k,r,s)

u U n i t d e s i g n a t o r.
fwa Name of the array in central memory (address of first word).
J0PrA.l

n Number of 60-bit words to be transferred.
k R e c o r d k e y.
for number index: 1 < k < lngth - 1
for name index k = any 60-bit quantity except +0
Rewrite,

0^

r=1

Rewrite in place. Unconditional request; fatal error occurs if new record
length exceeds old record length.
r = -1
Rewrite in place if new record length does not exceed old record length,
otherwise write at end-of-data.
r = 0 No rewrite; write at end-of-data (default value).

/P^S

Sub-index flag,
s=1

Write sub-index marker flag in index control word for this record.

s=0

Do not write sub-index marker flag in index control word (default value).

End-of-data (for r = -1 and r = 0) is defined to be immediately after the end of the data record which is
closest to end of information. The first record written at end-of-data overwrites the old index.
Except under SCOPE 2, Record Manager operates more efficiently if n is always a multiple of 64. The r
parameter can be omitted if the s parameter is also omitted. The s parameter is for future file editing
routines. Current routines do not test the flag, but the user should include this parameter in new programs
(when appropriate) to facilitate transition to a future edit capability.
Example:
CALL WRITMS (3,DATA,25,6,1)

60497800

E

8-31

This statement unconditionally rewrites in place of file TAPE3, starting at the address of the array named
DATA, a 25-word record with an index number key of 6. The default value is taken for the s parameter.

READING RECORDS

READMS

transmits

data

from

the

fi l e

to

central

m e m o r y.

/=*%.

CALL READMS (u,fwa,n,k)

u
Unit
designator
fwa Name of the array in central memory (address of first word)

•

^^

n Number of 60-bit words to be transferred. If n is less than the record length, n words /**%
are transferred without diagnostic.
k

Record

key
for

number

index:

k

=

1

<

k

<

lngth

-

1

'^

for name index: k = any 60-bit quantity except +0
/<'3*\

Except under SCOPE 2, Record Manager operates more efficiently if n is always a multiple of 64. 1
Example:

^~
CALL

READMS

( 3 , D ATA M O R , 2 5 , 2 )

)

This statement reads the first 25 words of record 2 from unit 3 (TAPE3) into central memory starting at the ss$\
address
of
the
array
D ATA M O R .
I

CLOSING A FILE

CLOSMS writes the master index from central memory to the file and closes the file. CLOSMS is provided to 7
close a file so that it can be returned to the operating system before the end of a FORTRAN run, to preserve
a file created by an experimental job that might subsequently abort, or for other special purposes. In an over
lay program that is STATICly loaded, a mass storage file must be closed explicitly by CLOSMS. 1
Since new data records can overwrite the old index, a file which has had new data records added is invalid
unless the file is closed. (Under NOS/BE 1 and SCOPE 2 permanent files must also be extended.) Jobs which ^^
might abort before closing the files should use RECOVR to recover and terminate normally (i.e. STOP) to
cause the files to be closed.
When using mass storage input/output subroutines in overlays or segments, care should be taken to close a
file before program termination. If this is not possible, the mass storage input/output routines must reside in
the (0,0) overlay or root segment. This can be done by including a call to an MSIO routine in the (0,0) /m%
overlay or root segment (the call need not be executed), or by using the LIBLOAD control statement.
CALL

CLOSMS

(u)

^

u Unit designator

8-32

60497800

D

Example:
CALL CLOSMS (2)

This statement closes the file TAPE2.

SPECIFYING A DIFFERENT INDEX

STINDX selects a different array to be used as the current index to the file. The call permits a file to be
manipulated with more than one index. For example, when the user wishes to use a sub-index instead of
the master index, STINDX is called to select the sub-index as the current index. The STINDX call does not
cause the sub-index to be read or written; that task must be carried out by explicit READMS or WRITMS
calls. It merely updates the internal description of the current index to the file.
CALL STINDX (u,ix,lngth,t)

u U n i t d e s i g n a t o r.
ix Name of the array in central memory containing the sub-index (first word address).
lngth Length of sub-index
J0$\

for a number index: lngth > (number of entries in sub-index) + 1
for a name index: lngth > 2 * (number of entries in sub-index) + 1
t Type of index. If omitted, t is the same as the current index.
t = 0 File has a number sub-index

/^fi\

t = 1 File has a name sub-index
Example 1:
DIMENSION SUBIX (10)
CALL STINDX (3,SUBIX, 10,0)

These statements select a new index, SUBIX, for file TAPE3 with an index length of 10. The records ref
erenced via this sub-index use number keys.
Example 2:
DIMENSION MASTER (5)
CALL STINDX (2,MASTER,5)

These statements select a new index, MASTER, from file TAPE2 with an index length of 5 and index type
unchanged from the last index used.

60497800
/Si^V

C

8-32.1/8-32.2

/^\

f^l\

l / fi ^ 1

/^ts

.s^tf.

INDEX KEY TYPES
There are two types of index key, name and number. A name key may be any 60-bit quantity except +0
or -0. A number key must be a simple positive integer, greater than 0 and less than or equal to the length
of the index in words, minus 1 word. The user selects the type of key by the t parameter of the OPENMS
call. The key type selection is permanent. There is no way to change the key type, because of differences
in the internal index structure. If the user should inadvertently attempt to reopen an existing file with an
incorrect index type parameter, the job will be aborted. (This does not apply to sub-indexes chosen by
STINDX calls; proper index type specification is the §ole responsibility of the user.) In addition, key types
cannot be mixed within a file. Violation of this restriction might result in destruction of a file.
The choice between name and number keys is left entirely to the user. The nature of the application may
clearly dictate one type or the other. However, where possible, the number key type is preferable. Job
execution will be faster and less central memory space will be required. Faster execution occurs because it is
not necessary to search the index for a matching key entry (as is necessary when a name key is used). Space
is saved due to the smaller index array length requirement.

MASTER INDEX
The master index type for a given file is selected by the t parameter in the OPENMS call when the index is
created. The type cannot be changed after the file is created; attempts to do so by reopening the file with
the opposite type index are treated as fatal errors.

SUB-INDEX
The sub-index type can be specified independently for each sub-index. A different sub-index name/number
type can be specified by including the t parameter in the STINDX call. If t is omitted, the index type
remains the same as the current index. Intervening calls which omit the t parameter do not change the most
recent explicit type specification. The type remains in effect until changed by another STINDX call.

0&&\

STINDX cannot change the type of an index which already exists on a file. The user must ensure that the t
parameter in a call to an existing index agrees with the type of the index in the file. Correct sub-index type
specification is the responsibility of the user; no error message is issued.

MULTI-LEVEL FILE INDEXING
When a file is opened by an OPENMS call, the mass storage routines clear the array specified as the index
area, and if the call is to an existing file, locates the file index and reads it into the array. This creates the
f" initial or master index.
The user can create additional indexes (sub-indexes) by allocating additional index array areas, preparing
(^ the area for use as described below, and calling the STINDX subroutine to indicate to the mass storage
routine the location, length and type of the sub-index array. This process may be chained as many times as
required, limited only by the amount of central memory space available. (Each active sub-index requires an
(^ index array area.) The mass storage routine uses the sub-index just as it uses the master index; no distinc
tion is made.

8-33

60497800

A

/"Sfjv

A separate array space must be declared for each sub-index that will be in active use. Inactive sub-indexes
may, of course, be stored in the random file as additional data records.
The sub-index is read from and written to the file by the standard READMS and WRITMS calls, since it is
indistinguishable from any other data record. Although the master index array area is cleared by OPENMS /ts^
when the file is opened, STINDX does not clear the sub-index array area. The user must clear the sub-index ■■
array to zeros. If an existing file is being manipulated and the sub-index already exists on the file, the user
must read the sub-index from the file into the sub-index array by a call to READMS before STINDX is a
called. STINDX then informs the mass storage routine to use this sub-index as the current index. The first '
WRITMS to an existing file using a sub-index must be preceded by a call to STINDX to inform the mass
storage routine where to place the index control word entry before the write takes place.
/^v^V
If the user wishes to retain the sub-index, it must be written to the file after the current index designation
has been changed back to the master index, or a higher level sub-index by a call to STINDX.
Example 1 creates and modifies a random file using a number index:
z^^^V

PROGRAM MSI (TAPE3)
C CREATE RANDOM FILE WITH NUMBER INDEX.
DIMENSION INDEX(ll), DATA(25)
CALL OPENMS (3,INDEX,11,0)
DO 99 NRKEY=1,10
C
C
C (GENERATE RECORD IN ARRAY NAMED DATA.)

99 CALL WRITMS (3.DATA,25,NRKEY)
STOP
END

PROGRAM MS2 (TAPE3)
C MODIFY RANDOM FILE CREATED BY PROGRAM MSI.
C NOTE LARGER INDEX BUFFER TO ACCOMMODATE TWO NEW
C
RECORDS.
DIMENSION INDEX(13), DATA(25), DATAM0R(40)
CALL
OPENMS

8-34

60497800

^

(3,INDEX,13,0)

^

A
>c^v

C CLEAR THE SUBINDEX AREA.
DO 77 1=1,10
77 SUBIX(I)=0
C CHANGE THE INDEX IN CURRENT USE TO SUBIX.
CALL STINDX (2,SUBIX,10)
C GENERATE AND WRITE NINE RECORDS.
DO 88 MIN0R=1,9
C
C
C WRITE A RECORD.
88 CALL WRITMS (2.RECORD,50,MINOR)
C CHANGE BACK TO THE MASTER INDEX.
CALL STINDX (2,MASTER,5)
/£?p&2\

C WRITE THE SUBINDEX TO THE FILE.
CALL WRITMS (2,SUBIX,10,MAJOR,0,1)
99 CONTINUE
C READ THE 5TH RECORD INDEXED UNDER THE 2ND SUBINDEX.
CALL READMS (2,SUBIX,10,2)
CALL STINDX (2,SUBIX,10)
CALL READMS (2,RECORD,50,5)
C
C
C (MANIPULATE THE SELECTED RECORD AS DESIRED.)
C
C
STOP
END
Example 4:
PROGRAM MS5 (INPUT,OUTPUT,TAPE9)
C CREATE FILE WITH NAME INDEX AND TWO LEVELS OF SUBINDEX.
DIMENSION STATE(lOl), C0UNTY(501), CITY(501), ZIP(IOO)
INTEGER STATE, COUNTY, CITY, ZIP
10 FORMAT (A10.I10)
11 FORMAT (110)
12 FORMAT (5X.8I15)
CALL OPENMS (9,STATE,101,1)

60497800

A

8-37

C READ MASTER DECK CONTAINING STATES, COUNTIES, CITIES
C AND ZIP CODES.
DO 99 NRSTATE=1,50
READ 10.STATNAM, NRCNTYS
C CLEAR THE COUNTY SUBINDEX.
DO 21 1=1,501
21 C0UNTY(I)=O
DO 98 NRCN=1,NRCNTYS
READ 10, CNTYNAM, NRCITYS
C CLEAR THE CITY SUBINDEX.
DO 31 1=1,501
31 CITY(I)=0
CALL STINDX (9,CITY,501)
DO 97 NRCY=1,NRCITYS
READ 10, CITYNAM, NRZIP
C CLEAR THE ZIP CODE LIST
DO 41, J=l,100
41
96

ZIP(J)=0
DO 96 NRZ=1,NRZIP
READ ll.ZIP(NRZ)

97

CALL WRITMS (9,ZIP,NRZIP,CITYNAM)

98

CALL STINDX (9 , COUNTY,501)
CALL WRITMS (9,CITY,501,CNTYNAM)

99

CALL STINDX (9.STATE,101)
CALL WRITMS (9,COUNTY,501,STATNAM)

C FILE IS GENERATED. NOW PRINT OUT LOCAL ZIP CODES.
CALL STINDX (9,STATE,101)
CALL READMS (9,COUNTY,501, ^CALIFORNIA?*)
CALL STINDX (9,COUNTY,501)
CALL READMS (9,CITY,501, -*SANTACLARA#)
CALL STINDX (9,CITY,501)
CALL READMS ( 9 , ZIP, 100, ^SUNNYVALE?*)
PRINT 12, ZIP
CALL STINDX (9.STATE,101)
STOP
END

8-38

60497800 A

1 0 ^

/ fl S \

C READ 8TH RECORD FROM FILE TAPE3.
CALL READMS (3,DATA,25,8)
C
C
C (MODIFY ARRAY NAMED DATA.)
C
C
C WRITE MODIFIED ARRAY AS RECORD 8 AT END OF
C INFORMATION IN THE FILE
CALL WRITMS (3,DATA,25,8)

r
0mHi\

C READ 6TH RECORD.
CALL READMS (3.DATA,25,6)
C
C
C (MODIFY ARRAY.)
C

C REWRITE MODIFIED ARRAY IN PLACE AS RECORD 6.
CALL WRITMS (3,DATA,25,6,1)
C READ 2ND RECORD INTO LONGER ARRAY AREA.
CALL READMS (3,DATAMOR,25,2)
C
C
C (ADD 15 NEW WORDS TO THE ARRAY NAMED DATAMOR.)
C
C
C CALL FOR IN-PLACE REWRITE OF RECORD 2. IT WILL
C DEFAULT TO A NORMAL WRITE AT END-OF-INFORMATION
C SINCE THE NEW RECORD IS LONGER THAN THE OLD ONE,
C AND FILE SPACE IS THEREFORE UNAVAILABLE.
CALL WRITMS (3,DATAM0R,4O,2,-1)

J0^K

C READ THE 4TH AND 5TH RECORDS.
CALL READMS (3,DATA,25,4)
CALL READMS (3,DATAM0R,25,5)
C
C
C (MODIFY THE ARRAYS NAMED DATA AND DATAMOR.)
C
C

60497800

A

8-35

/ * ^ L

C WRITE THE ARRAYS TO THE FILE AS TWO NEW RECORDS,
CALL WRITMS (3,DATA,25,11)
CALL WRITMS (3,DATAM0R,25,12)
STOP
END
Example 2 uses a name index for a random file:
PROGRAM MS3 (TAPE7)
C CREATE A RANDOM FILE WITH NAME INDEX.
DIMENSION INDEX(9), ARRAY(15,4)
DATA REC1 ,REC2/7HREC0RD1,t*REC0RD2t*V
CALL OPENMS (7,1NDEX,4,1)

(GENERATE DATA IN ARRAY AREA.)

WRITE FOUR RECORDS TO THE FILE. NOTE THAT
KEY NAMES ARE RECORD(N).
CALL WRITMS (7,ARRAY(1,1),15,REC1)
CALL WRITMS (7,ARRAY(1,2),15,REC2)
CALL WRITMS ( 7 , ARRAY( 1, 3 ) , 15 ,.7HRECORD3)
CALL WRITMS (7, ARRAY(1,4) , 15 , t*REC0RD4#)
CLOSE THE FILE.
CALL CLOSMS (7)
STOP
END
Example 3:
PROGRAM MS4 (TAPE2)
C GENERATE SUBINDEXED FILE WITH NUMBER INDEX. FOUR
C SUBINDEXES WILL BE USED, WITH NINE DATA RECORDS
C PER SUBINDEX, FOR A TOTAL OF 36 RECORDS.
DIMENSION MASTER(5), SUBIX(IO), REC0RD(50)
CALL OPENMS (2,MASTER,5,0)
/*SS\

DO 99 MAJ0R=1,4

8-36

60497800 E

COMPATIBILITY WITH PREVIOUS MASS STORAGE ROUTINES

0$&\.

FORTRAN Extended mass storage routines and the files they create are not compatible with mass storage
routines and files created under versions of FORTRAN Extended before version 4. Major internal differences
f^ in the file structure were necessitated by adding the Record Manager interface. However, source programs are
fully compatible. Any source program that compiled and executed successfully under earlier versions will do
so under this version, provided that all file manipulated by mass storage routines are manipulated only by
f^

these

routines.

* * F O RT R A N - C Y B E R R E C O R D M A N A G E R I N T E R FA C E
0S\

The CYBER Record Manager interface subroutines correspond closely to the CYBER Record Manager COMPASS
macros. The names are different in some cases, and the parameters are not necessarily specified in the same order,
but the processing performed by each subroutine is for the most part the same as the corresponding COMPASS
macro.
Only a summary of the format, parameters, and purpose of each subroutine is given here. The differences in
usage of these routines among the five file organizations are not discussed. In order to use these routines, it is
necessary to refer to the CYBER Record Manager publications listed in the preface.
The user can either allocate buffers within a program block or allow CYBER Record Manager to allocate them
dynamically when the file is opened.
To allocate a buffer within the program block, an array must be dimensioned and the length and position of
the array specified by the BFS and FWB fields of the file information table. If either of these fields is zero
when the file is opened, CYBER Record Manager allocates a buffer in central memory following the execut
able code and blank common (if declared). In an overlay program, dynamically allocated buffers are assigned
to memory beyond the last word address of the longest overlay chain.
These routines are available under NOS/BE 1 and NOS 1, but not under SCOPE 2.

PARAMETERS
The first parameter in the call to every subroutine is the name of the array containing the file information table
being processed. This array should be dimensioned 35 words long; 20 words for the file information table
itself and 15 for the file environment table. Any other parameters can be omitted; default values are supplied
by CYBER Record Manager. With the exception of FILExx, parameters are identified strictly by position;
thus, parameters can be omitted only from the right.
When a program is compiled with OPT=2, wsa must be specified on all calls to GET, GETP, and GETN. Also,
ka must be specified on calls to GETN and PUT for indexed sequential, direct access, and actual key files.
Most of the parameters establish values for file information table fields. CYBER Record Manager always uses
the most recent value established for a field; if a parameter is omitted, the previous contents of the field are
used instead.
If the same subroutine is called twice in the same program unit with a different number of parameters, an
informative diagnostic is issued by the compiler.

60497800
/^v

F

8-39

Va l u e s

for

parameters

can

be:

Array or variable names, identifying areas used for communication between the user program and
CYBER
Record
Manager

"^

^

Subprogram names for user owncode exits (must be specified in an EXTERNAL statement)
Integer values
L format Hollerith constants, used to express symbolic options and to identify file information table ■'**%
fields
The following mnemonics are used in the subroutine formats below. The precise meaning of any parameter '"^
depends on the file organization of the file being processed, as well as the subroutine being called. Not all
parameters are applicable to all file organizations.
fit Name of array containing file information table. Linked to the actual file by means of the LFN field.
afit Name of an array that contains a list of addresses of FITs terminated by a word of zeros. /^
wsa Working storage area. A variable, array, or array element name indicating the starting location
from which data is to be read or into which data is to be written. ^^
pd Processing direction established when file is opened:
5LINPUT Read only
6LOUTPUT Write only
3LI-0

Read

and

write

'"^

3LNEW File creation (indexed sequential, direct access, actual key only)
of

File
1LR

positioning

at

open

time:

'")

Rewind

1 L N N o fi l e p o s i t i o n i n g
ILE Extend; file is positioned immediately before end of information
cf File positioning after close:
1LR

Rewind

1LN No positioning
1LU
3LRET

^

Unload

/*-**.

Return

3LDIS Disconnect (terminal files only)
3LDET No positioning; release buffer space and remove from active file list

8-40

60497800

F

/SpSy

type Type of close (not a file information table field):
4LFILE File close
6LVOLUME Volume close
ka Location of key for access to record in a direct access, indexed sequential, or actual key
file. For GETN, key is returned to this location.
wa Location of word address for read or write of record in a word addressable file.
kp Character position (0 through 9) within word designated by ka in which key begins (direct
access, indexed sequential only).
mkl Major key length (indexed sequential only).
rl Record length in characters for record to be read or written,
ex Name of user owncode error exit subroutine,
dx Name of user owncode data exit subroutine,
post For duplicate key processing:
1LP Write record preceding current record
1LN Write record as next record
1LC Delete or replace current record
0 Delete or replace first record in duplicate key chain
count Number of records to be skipped; positive count indicates forward skip, negative count indi
cates backward skip, zero count should not be used.
ptl Number of characters to be used for a partial read or write.
skip Positioning before execution of GETP:
0 Continue reading at current position
4LSKIP Skip to beginning of next record before reading
lev Level number for end of section; 0 to 17.
i d F I T i d e n t i fi e r .

'Applies only to Initial Indexed Sequential files.

60497800

E

8-41

SUBROUTINES
In the subroutine formats below, braces are used to indicate that more than one parameter occupies the same
position. In all cases, these parameters are applicable to mutually exclusive file organizations.
CALL FILExx (fit, keyword-,, value-,, ... ,keywordn, valuen)

xx is SQ (for sequential files), IS (for indexed sequential files), DA (for direct access files), AK (for actual
key files) or WA (for word addressable files).
All parameters, with the exception of fit, are paired. The first parameter in each pair is the name of a file information
table field, in L format. The second parameter of each pair is the value to be set in that field. CALL FILExx must be
executed before the file is opened. CALL FILExx ensures that the object libraries BAMLIB and AAMLIB are made
available to the job.
CALL STOREF (fit, keyword, value)
r

^

^

\

STOREF specifies a value for a single file information table field. It can be called before or after the file is opened.
The keyword is the name of a file information table field, in L format, and value is the value to be placed in that field.
I F E T C H ( fi t , fi e l d )

or

CALL

I F E T C H ( fi t , fi e l d , v a l u e )

^

IFETCH is an integer function that returns the current value of a single file information table field. A one-bit field is
returned in the sign bit; if the bit is 1, the value of the function is negative; if the bit is 0, the value of the function is
positive.
IFETCH can also be called as a subroutine; in which case, the value is returned in the integer variables specified as the
third parameter.
CALL OPENM(fit,pd,of)

OPENM opens a file and prepares it for further processing. Only FILExx, STOREF, and IFETCH can precede
execution of CALL OPENM.
CALL CLOSEM (fit,cfftype)

CLOSEM closes the file after all processing has been completed. Only STOREF and IFETCH can follow execution
of CLOSEM.
CALL GET(fit,wsa, ,kp,mkl,rl, |®X 1)

GET reads a record and returns it to the working storage area (wsa). The last parameter specifies dx for
sequential files, ex for all other files.
CALL PUT(fit,wsa,rl,< a >,kp,pos,ex)

lwa J

PUT writes a record to the file from the working-storage area (wsa).
CALL GETP(fit,wsa,ptl,skip,dx)
GETP reads a partial record. The number of characters to be read is indicated by ptl.

/ftw^TV

8-42

60497800

F

CALL PUTP(fit,wsa,ptl,rl,ex)

PUTP writes a partial record. The number of characters to be written by this write is indicated by ptl; the
total number of characters to be written is given by rl (required only for record types U, W, and R).
CALL GETI\l(fit,wsa,ka,ex)

GETN reads the next record in sequential order from an indexed sequential, direct access, or actual key file.
The key of the record read is placed in ka after the read.
CALL DLTE(fit,ka,kp,pos,ex)

DLTE deletes a record from an indexed sequential, direct access, or actual key file. The key of the record
to be deleted is in the location specified by ka.
CALL REPLC(fit,wsa,rl,ka,kp,pos,ex)
/{SN

REPLC replaces a record on a sequential, indexed sequential, direct access, or actual key file. The key of the
record to be replaced is in the location specified by ka; the new record is in the working storage area indicated
by wsa. For sequential files, the last record read is replaced by a record of exactly the same size.

CALL WEOR(fit,lev)
WEOR terminates a section or partition, or S type record.
CALL WTMK(fit)
Writes a tape-mark (equivalent to end of partition).
CALL ENDFILE(fit)
Writes an end of partition.
CALL REWND(fit)

REWND positions a tape file to the beginning of the current volume. It positions a mass storage file to the
beginning of information.
CALL GETNR(fit,wsa,ex,ka)

GETNR transfers the next record in sequential order to the working storage area, unless an input/output
operation is required, in which case control returns to the user before the input is complete. The user
must continue to call GETNR until the transfer is complete (FP field of the FIT is set to 0).

60497800

E

8-43

^o$!\

CALL FLUSHM(afit)

FLUSHM performs all file close operations (such as buffer flushing), but the file remains open.
CALL FLUSH 1 (fit)
FLUSH 1 performs the same function as FLUSHM, but for a single file instead of a list of files.
CALL FITDMP(fit,id)

FITDMP dumps the contents of the file information table to the error file ZZZZZEG. The CRMEP control
statement (see the CYBER Record Manager AAM reference manual) can then be used to print file ZZZZZEG.
CALL SEEKF(fit,ka,kp,inkl,ex)

SEEKF initiates block transfer to the file buffer. The program can continue processing while the transfer
occurs. This overlapping of central memory processing and input/output activity can shorten program execu
tion time.
CALL SKIP(fit,count)

SKIP repositions an indexed sequential or actual key file in a forward or backward direction a specified num
ber of records. It does not return a record to the working storage area. A positive value for count indicates
a forward move; a negative value indicates a backward move.
CALL STARTM(fit,ka,kp,mkl,ex)

STARTM positions an indexed sequential or alternate key index file to a record that meets a specific con
dition; the record is not transferred to the working storage area. The file is positioned according to the key
relation field in the file information table and the current value at the key address location. A new key
address value is stored in ka.

/^tx

ERROR CHECKING
CYBER Record Manager interface routines perform limited error checking to determine whether the call can
be interpreted, but actual parameter values are not checked.
«£^»

The following fatal error conditions are detected at execution time, and a message appears in the dayfile:
FIT ADDRESS NOT Array name was not specified.
SPECIFIED
FORMAT ERROR Parameters were not paired (FILExx), or required parameters were not speci
fied (STOREF, IFETCH or SKIP).
UNDEFINED SYMBOL A file information table field mnemonic or symbolic option was specified
incorrectly; for example, an incorrect spelling, or the of_ parameter in
OPENM was not specified as R, N or E.

8-44

60497800

H

0^s

MULTIPLE INDEX PROCESSING
FORTRAN Extended provides the capability of multiple indexing for IS, DA, and AK files via CYBER
Record Manager.
Each multiple-indexed file has an associated alternate key index file. An alternate key index is a crossreference table of alternate values and IS, DA, or AK primary key values. The key-field position identifies
each table, which consists of all the different alternate key values that occur in the records of the file.
Associated with each alternate key value is a list of primary keys, each of which identifies a record contain
ing the alternate key value.
To utilize this capability, the index file is specified in the XN field of the file information table. To open
the index file, the following statement is used:
0$Z\

CALL RMOPNX(fit,pd,of)

0g* The parameters are the same as those of CALL OPENM. The file may be opened by a CALL OPENM
V instead of CALL RMOPNX if XN was specified on a FILE control statement rather than by a CALL
FILExx.
/a$&\

The following subroutine should be called to describe a key field when creating a new IS, DA, or AK
file. It must be called once for each key field in the record.
CALL RMKDEF(fit,kw,kp,kl,ki,kt,ks,kg,kc)

fit Name of an array containing the file information table
kw Word of record in which key starts (0 = first word)
kp Starting character position of key (0 through 9)
V kl Key length in characters (1 through 255)
ki Summary index; reserved (0)
f ^ k t K e y t y p e : 0 = s y m b o l i c , 1 = s i g n e d i n t e g e r, 2 = u n s i g n e d
ks Substructure for each primary key list in the index; I = index-sequential; F = FIFO;
^ U ( d e f a u l t ) = u n i q u e ; s p e c i fi e d a s L f o r m a t H o l l e r i t h c o n s t a n t
kg Size of repeating group in which key resides (default = 0)
kc Occurrences of group (default = 0)
To position a multiple index file, the following subroutine is used:
(^

CALL

S T A R T M ( fi t , k a , k p , m k l , e x )

If the RKW and RKP parameters are set to indicate the primary key, STARTM positions the data file and
f^ subsequent calls to GETN retrieve records in sequential order. If RKW and RKP indicate an alternate key,
STARTM positions the index file, and subsequent calls to GETN retrieve records in their order on the index
file.

0^\

60497800

J

8-45

|

/fW$\

ir^&)\

FORTRAN-SORT/MERGE

INTERFACE

^

FORTRAN Extended provides the capability for processing data records under the Sort/Merge system from
within a FORTRAN program. The FORTRAN user of this feature should be familiar with the autonomous "^
functioning of the Sort/Merge- system as described in the Sort/Merge Reference Manual.
Sort/Merge uses the unused part of the field length as a scratch area; if this is not adequate, additional field +*^
length is obtained from the system. For this reason the STATIC control statement parameter must not be
used for programs using SORT/MERGE.
The FORTRAN subroutines interfacing with Sort/Merge are listed below. The series of calls to Sort/Merge
subroutines must begin with a call to SMSORT, SMSORTB, SMSORTP, or SMMERGE. If a file is processed
by CYBER Record Manager subroutines, OPENM should be called before any of these routines. The ^%
Sort/Merge subroutines are on the library SRTLIB.
In an overlay structured program using blank common, the Sort/Merge interface routines must not be called <*^.
from the (0,0) overlay.
CALL

SMSORT(mrl,ba)

^

mrl Maximum length in characters of records to be sorted.
ba§ LCM buffer area in decimal for intermediate scratch files constructed by Sort/Merge.
ba* Number of words of central memory to be used by Sort/Merge for working storage. If
omitted, amount is computed by Sort/Merge.
SMSORT

calls

for

a

sort

on

rotating

mass

storage.

.-«a\

CALL SMSORTB(mrl,ba)*

mrl Maximum length in characters of records to be sorted.
ba Number of words of central memory to be used by Sort/Merge for working storage. If jsmx
omitted, amount is computed by Sort/Merge.
S M S O R T B c a l l s f o r a b a l a n c e d t a p e s o r t . S M TA P E ( s e e b e l o w ) m u s t a l s o b e c a l l e d . / ^ ,
CALL SMSORTPtmrLba)*

mrl Maximum length in characters of records to be sorted.
ba Number of words of central memory to be used by Sort/Merge for working storage. If
omitted, amount is computed by Sort/Merge.

8Applies only to SCOPE 2.
Applies only to NOS 1 and NOS/BE 1.

|

8-46

60497800

J
<<*~|\

SMSORTP calls for a polyphase tape sort. SMTAPE must also be called.
'

CALL

SMMERGE(mrl,ba)

j#s\ mrl Maximum length in characters of records to be merged.
ba» LCM buffer area in decimal for intermediate scratch files constructed by Sort/Merge.
ba Number of words of central memory to be used by Sort/Merge for working storage. If
omitted, amount is computed by Sort/Merge.
0$S\

SMMERGE calls for merge-only processing.
The MRL option on the SMSORT, SMSORTB, SMSORTP, and SMMERGE calls is used only when one or
more files are FORTRAN files. If all files are processed through direct calls to CYBER Record Manager
(access = 0 in SMFILE calls), the MRL option is required only as a dummy parameter.
J?"-X

CALL SMFILE(dis,i/o,lfn,action)

dis File disposition:
- ^ S O RT * F i l e t o b e s o r t e d .
=£MERGE=£ File to be merged.
-v^OUTPUT-J6 File to receive output.
i/o Mode of file input/output:
^ F O R M AT T E D * ) _ . , J . u r
>CODED ,= t Fde accessed with formatted input/output.
-v^-BINARY^ File accessed with unformatted input/output.
0* File accessed with interfacing CYBER Record Manager subroutines
(see this section above).

/"™N

lfn File name indicator:
(

u

Logical

unit

number,
0
to
99.
nLfilename File name left justified with zero fill.

j s s n fi t * W h e n i / o i s s p e c i fi e d a s 0 , a n a r r a y c o n t a i n i n g t h e fi l e i n f o r m a t i o n
f
table.
sg^ action File disposition following sort or merge:
=£REWIND*
^UNLOAD^
=£NONE=£ (default)

JP*N

8Applies only to SCOPE 2.
£0&i"\

^Applies only to NOS 1 and NOS/BE 1.

60497800

J

8-47

SMFILE must be called for each file to be sorted or merged, and once for the file to receive the output (unless SMOWN
is called). If a file is to be accessed with formatted or unformatted FORTRAN input/output, its name must be declared
in the PROGRAM statement. Files should be properly positioned before they are sorted or merged.
CALL SMKEY(charpos,bitpos,nchar,nbits,code,colseq,order)

charpos Integer specifying position of first character of sort key, considering the first characters as position
number 1.
bitpos Integer specifying position of first bit of sort key in character (or 6-bit byte) specified by charpos,
considering the first bit as position number 1.
nchar Integer specifying number of characters or complete 6-bit byte in sort key.
nbits Integer specifying number of bits in sort key in excess of those indicated by nchar.

/f^\

code Coding identifier:
■v^-DISPLAYS Internal display code.
t^FLOAT^ Floating point data.
^INTEGER-*
Signed
^LOGICAL-?5- Unsigned integer data (default).

integer

data.

.

^

The following identifiers must be specified in pairs separated by a comma, as indicated. Each pair /=^s
is positionally interchangeable:
T^SIGN-y*,^-LEADINGS Numeric data in display code; sign present as an overpunch /ee^
at
beginning
of
fi e l d .
j
■v^SIGN-^^TRAILlNG^ Numeric data in display code; sign present as an overpunch I
at
end
of
fi e l d .
)
t^SEPARATE^-v^LEADINGt6 Numeric data in display code; sign is a separate character at
beginning
of
fi e l d .
t^SEPARATE-t-^TRAILINGt6 Numeric data in display code; sign is a separate character
at end of field.

/*s~\

,/*^%y

colseq Collating sequence (applicable only if code is specified as =£DISPLAY-v^):
-v* ASCI^t6 6-bit ASCII collating sequence (default for installations using "^%
ASCII character set).
=£COBOL6=?-: 6-bit COBOL collating sequence (default for installations using
CDC
character
set)
,&%
¥= DISPLAYS Internal display collating sequence.
=fc INTBCD^ Internal BCD collating sequence,
s e q u e n c e N a m e o f a c o l l a t i n g s e q u e n c e s p e c i fi e d i n a c a l l t o S M S E Q ( s e e b e l o w ) . ^ ^
If a code identifier other than DISPLAY is used, this field must be omitted; otherwise, run time
error
165
is
issued.

/SSI*\

order Order of sort processing.

t^A-v*
zfrD^z

Ascending
Descending.

(default).

•

One SMKEY call is required to describe each sort key to be used. The first SMKEY call indicates the major key; ^
subsequent calls indicate additional or minor keys in the order encountered.
ys^X

8-48

60497800

F

—^

CALL

r ■

SMSEQ

(seqname,seqspec)

seqname Name of user supplied collating sequence.
' seqspec Name of integer array, terminated with a negative number, containing entire sequence of
characters in order of collation.
(^ SMSEQ specifies a user's collating sequence, or redefines the default to be a user collating sequence or a
standard collating sequence other than the system default.
.-^v The characters in seqspec can be specified as their octal equivalents in the form ijB or as Hollerith constant:.
■ in the form IRx. Characters to collate equal are specified in a call to SMEQU (sec below). Unspecified char
acters collate high (following the last character specified in seqspec) and equal.
id-N

CALL SMEQU (colseq.equspec)
0xS~*>\

f colseq Collating sequence determined by a previous call to SMKEY (and perhaps SMSEQ).
equspec Name of an integer array, terminated with a negative number, containing characters to collate
{ e q u a l t o t h e l a s t c h a r a c t e r, w h i c h m u s t b e i n c l u d e d i n c o l s e q .
SMEQU specifies that two or more characters in the collating sequence are equal for comparison purposes.
j0&\.

CALL SMOPT (opt., optn)

\ opt Non-ordered options separated by commas:
=£ VERIFY^ Check output for correct sequencing (important for insertions
(^

_
f

"

during

output
and
merge
input).
=£ RETAINS Retain records with identical sort keys in order of appearance
on input file.

^VOLDUMP=£ * Checkpoint dump at end-of-volume.
-y^DUMP-^* Checkpoint dump after 50,000 records.
^DUMP-v^n* Checkpoint dump after (decimal) n records.
-^NODUMP-v**
No
checkpoint
dumps.
^NODAY-v** Suppress dayfile messages.

-p-x

^ORDER=£,mo*

Merge order = mo (default: mo = 5).
t^COMPAREt^ The key comparison sorting technique is to be used.
¥-EXTRACT=£ The key extraction sorting technique is to be used.

C =t-€OMPARE=£ and #EXTRACT^ are mutually exclusive. If both are omitted, Sort/Merge decides which to
use. =5*€OMPARE=£ usually decreases elapsed time while increasing central processor time, whereas -v^EXTRACT^
usually decreases central processor time while increasing elapsed time.
ifjP^V
SMOPT specifies special record handling options. If SMOPT is called more than once, the last call will override all
previous calls. If SMOPT is called, it must be done immediately after the call to SMSORT or SMMERGE.
* Applies only to NOS 1 and NOS/BE 1.

60497800

F

8-49

CALL SWITAPE (taplist)*

taplist List of logical file names, each in the form nLfilename, to be used in balanced or polyphase
tape merge.

/Cff^5\

The file names in taplist must not be declared in the PROGRAM statement. A balanced merge requires a mini
mum of four tapes; a polyphase merge, a minimum of three tapes.
CALL SMOWN (exitnum.,,subname.,,..., exitnumn,subnamen)

exitnum Number of the owncode exit.
subname Name of the user-supplied owncode exit subroutine
<*C^V

Each subname specified in a call to SMOWN must appear in an EXTERNAL statement in the calling program.
For each subname specified, the user must supply a subroutine which exits through a call to system subroutine
SMRTN, in accordance with the owncode exit number and return address as follows:
exitnum

entry

exit

1 or 3 SUBROUTINE subname (a,rl) CALL SMRTN (retaddr), for retaddr = 1 or 3
CALL SMRTN (retaddr,b,rl), for retaddr = 0 or 2
2 or 4 SUBROUTINE subname CALL SMRTN (retaddr), for retaddr = 0
CALL SMRTN (retaddr,b,rl), for retaddr = 1
5 SUBROUTINE subname (a^rl-,^,^) CALL SMRTN (b1,rl1,b2,rl2), for retaddr = 0
CALL SMRTN (b, .rl,), for retaddr = 1
retaddr

Return address:
0
1
2
3

Normal return address
Normal return address + 1
Normal return address + 2
Normal return address + 3

.»^S^!\

a Integer array of length (rl + 9)/10 in which Sort/Merge stores a record when subname is called.
Storing into a causes indeterminate results.
b Integer array of length (rl + 9)/10 in which the user stores a record when subname is called,
b should not be the same as a.
rl Record length in characters.
No parameters are needed on SUBROUTINE subname for exit number 1 if there are no input files.
CALL SMEND
Required as the last in a series of Sort/Merge interfacing subroutines, SMEND initiates execution of the sort or merge.
CALL SMABT

Terminates a sequence of SORT/MERGE interface calls without calling Sort/Merge. The state of the interface
is the same as if no calls had been made.
* Applies only to NOS 1 and NOS/BE 1.

8-50

60497800

F

^si-N

FORTRAN-CYBER INTERACTIVE DEBUG INTERFACE
CYBER Interactive Debug (CID) is a debugging facility, available under NOS 1 and NOS/BE 1, which allows the user
to monitor and control the execution of programs from an interactive terminal. CID is on the library DBUGLIB.
A brief discussion of CID is presented here. For more information, refer to the CYBER Interactive Debug
reference manual.
FORTRAN Extended provides the capability of interfacing with CID. The CID features allow the user
to:
Suspend program execution at specified locations called breakpoints.
.j*i~"\

- Set traPs which cause program execution to be suspended on specific events, such as the loading of an
overlay.
0^\
Display values stored into variables and arrays while program execution is suspended.
^x

Enter

data

into

the

program.

Interrupt and restart the program from the terminal.
Define and save sequences of CID commands to be executed automatically when a breakpoint or trap is
encountered during program execution.

r
j

CONTROL

S TAT E M E N T

i
{ In order to make use of all the CID facilities, a FORTRAN program must be compiled, loaded and
executed in debug mode. Debug mode is activated by the control statement

V

DEBUG
or
DEBUG(ON)
When a source program is compiled in debug mode, the compiler produces a line number table and a symbol

^s table along withbecomes
the binary
code.
CID package is loaded along with the compiled code and
part ofobject
the user's
fieldThe
length.

CID is deactivated by the control statement
/SIN

f

DEBUG(OFF)

As an alternative to compiling with DEBUG(ON), the necessary compiler tables can be produced by
f specifying DB or DB=ID on the FTN control statement. Subsequent executions with DEBUG(ON) can
make use of CID.
09&K.

v If debug mode has been activated with DEBUG(ON), it can be subsequently turned off for the duration of a
compilation by specifying DB=0 on the FTN control statement. The default is DB=0.
'. A program that has been compiled with DEBUG(ON) or DB=ID can subsequently be executed with
DEBUG(OFF), but CID cannot be used.

60497800

F

8_51

/tt'ims$\

USER-CID

INTERACTION

^

In debug mode, after the user's program has been loaded, but before execution is initiated, CID requests input
of commands. Typically, the user initially sets breakpoints and traps which specify debugging options to be
performed during program execution.
When a breakpoint or trap is encountered during execution, execution is suspended while CID performs the
sequence of commands specified in the body of the breakpoint or trap definition. With certain breakpoints
or traps, the user has the option of entering debug commands at the terminal before execution is resumed.

CID OUTPUT
Output from CID consists of informative messages, diagnostics, and the results of commands. Certain
informative messages always appear at the terminal; other messages are arranged into classes, and the user
can specify which message classes are to be sent to the terminal.

BATCH DEBUGGING

/^^\

CID is primarily intended to be used interactively, but can be used in batch mode. In this case, the user must
place CID commands as the first record in the file DBUGIN.
Output from CDD is written to a file called DBUGOUT. The type of output written to this file is controlled
in the same manner in which output is sent to the terminal when CID is used interactively.

INTERFACE TO COMMON MEMORY MANAGER
Common Memory Manager (CMM) is used for the management of field length, except when using the static loading
options. CMM ensures that the field length is increased or decreased properly to accommodate assigned blocks.
Interface to CMM can be done to assign blocks of memory for arrays. This assignment is completely dynamic,
and for efficient use, the blocks should be returned to the system when finished.
The Common Memory Manager reference manual should be read for a detailed description of CMM usage.
The following descriptions are for simple CMM usage.
CMMALF is called to allocate a fixed position block. The dynamic array to be assigned is defined in the *^
FORTRAN program as an array of length 1. The proper offset to the base address of the array is calculated
by using the LOCF function on the array name, and subtracting this value from the first word address of the
block returned by CMM. The array element n can then be referenced by array name (offset + n). For /m>\
example, the following statements assign a block and set the fifth element to 1:
PROGRAM CMM1
DIMENSION CMMAR(l)
ILEN=10
CALL CMMALF(ILEN,0,0,IFWA)
IOFF=IFWA-LOCF(CMMAR(l))
CMMAR(IOFF +5)=1.0

y^^\

^

8-52

60497800

H

The calling sequence for CMMALF is:
CALL CMMALF(IBLKSZ,ISZCDE.IGRPID,IBLFWA)

IBLKSZ Number of words required for the block.
ISZCDE Size code:

iHPN

0 Fixed size block (should be used in most cases).
1 Block can grow at last word address.
2 Block can shrink at last word address.
4 Block can shrink at first word address.
5 Block can grow at last word address and shrink at first word address.
6 Block can shrink at first and last word addresses.
7 Block can shrink at first and last word addresses and grow at last word
address.

IGRPID Group identifier:

^

calling

CMMAGR

(see

0 Item does not belong to a group (normal usage).
>0 The block is assigned to this group. The group number is determined by
the Common Memory Manager reference manual).
The group number may be any value greater than 0.

The value returned from a call to CMMALF is:
IBLFWA First word address of block allocated by CMM.
(^ CMM FRF is called to free the fixed-position block when it is no longer needed. When the block is freed, the
contents of the block are no longer accessible.
(; The calling sequence for CMMFRF is:
_

CALL

CMMFRF(IBLFWA)

IBLFWA First word address of block (must have been returned by CMMALF).
/P\ Other routines are available to accomplish other tasks, such as determining maximum field length and other statistics,
assigning blocks to groups, and releasing groups of blocks (see the Common Memory Manager reference manual). All
CMM interface routines for NOS and NOS/BE are on the library SYMLIB. Therefore, the statement LDSET
/""n (LIB=SYMLIB) must be included in the loader directives for a run using the CMM interface routines, or the user
\ should include a CALL SYMLIB subroutine call in the main program. SCOPE 2 users must specify SYMIO in the
LDSET statement instead of SYMLIB.
0®>*

POST MORTEM DUMP
Post Mortem Dump (PMD) analyzes the execution time errors in FORTRAN Extended Version 4 programs.
PMD provides interpreted output in a form which is more easily understood than the octal dump normally
output following a fatal error; PMD prints a summary of the error condition and the state of the program at
the time of failure in terms of the names used in the original program. The names and values of the variables

/"PN

60497800

G

8-53

in the routine in which the error was detected are printed; this process is repeated, tracing back through the calling **±
sequence of routines until the main program is reached.
Use of PMD does not affect the use of FORTRAN Extended DEBUG or CYBER Interactive Debug. PMD is
activated by a hardware or software fatal error and can also intentionally be invoked by the user. PMD overrides
any user-supplied load map directive or MAP(ON) control statement. For example, the following statements do
not produce a load map if PMD was specified:

//Ss\

LDSET(IVIAP=SBEX)
LOAD (LGO)
EXECUTE.

However, the loader always writes a block and statistics map to file ZZZZZMP for PMD's use. It is the user's
responsibility to rewind and copy this file to output. If nonfatal loader errors occur, a summary of the errors is
included in the PMD output.
When PMD is used, the FORTRAN Extended compiler generates a loader request to preset all memory to a
special value for initialization testing. This preset is similar to that produced by the following load sequence:
LDSET(PRESETA=60000000000433400000)
LOAD (LGO)
EXECUTE.

/^*5^N

Any user LDSET(PRESET=) loader specification is overridden.
PMD reloads the user field length before it aborts to allow a subsequent octal dump of the user's program if one has
been specified.
To use PMD, the PMD parameter must be specified on the FTN control statement. PMD will then be activated by a
fatal execution error or by one of the user-callable subroutines PMD LOAD or PMDSTOP. Information provided by
the dump includes the following, where applicable:
A summary of all nonfatal loader errors.
A list of all COMMON block length clashes.
The nature of the error that activated PMD.
The array-dumping parameters selected and the field length required to load and run the user program.
The activity of each file used by the user program at the time of the error.
The overlays in memory at the time of the error.
The location of the error in terms of statement labels and line numbers, if possible.
An annotated register dump; an attempt is made to associate each address register with a variable or array
referenced within the routine in which the error occurred.
An alphabetical list of all variables and their values, accessible from the current routines.
A printout of arrays according to specified parameters.
A message-tracing call beginning at the previous routine and ending when the main program is reached.
A
completion
message
upon
reaching
the
main

^^\

^^v
program.

*^s

Variables are printed alphabetically. The column labeled RELOCATION is left blank for local variables. It contains
the block name for COMMON variables and F.P. nn for formal parameters, where nn indicates the parameter number. ^^
In addition to being printed as numbers, INTEGER variables are interpreted as masks or characters in H, L, or R
format. In character representation, binary zeros are converted to blanks within a word, but a word with binary
zeros
at
each
end
has
the
fi r s t
binary
zero
printed
as

8~54

60497800

G

a

colon.

"^

,_^~^y

•

jm*

The column headed COMMENTS flags undefined local variables as *UNDEF, which indicates a potential source of error.
Variables passed as parameters to the previous routine in the traceback tree are labeled PARAM nn in the COMMENTS
column. The COMMENTS column contains F.P. nn where the same variable occurs more than once in an argument
string; nn points to the last occurrence. Constants passed in the previous routine are also printed at the end of the list
and given the symbolic name CONSTANT. Untraceable functions and subroutines passed as arguments are printed.
/P*v

Full checking is carried out on subroutine or function arguments, and a warning message is issued if:
A routine is called with the wrong number of arguments.
A type conflict exists between actual and formal arguments.
The argument was a constant and the called routine either treated it as an array or corrupted it.
A conflict in the use of EXTERNAL arguments is detected; note that the results given for EXTERNAL arguments
can be imprecise because several utilities can reside within the same routine and PMD cannot differentiate
between them. For example, both SIN and COS reside within the routine SINCOS=.
A warning message is also issued if a real variable contains an unnormalized value, for example, integer.
For batch jobs, the dump is written to file OUTPUT. For jobs executed from an interactive terminal, the disposition
of the dump is determined by options specified on the execution control statement (typically LGO) as follows:
LGO,*OP=option [option] [option].

where option is one of the following:
l^v T A condensed form of the dump is displayed at the terminal.
A The variables in all active routines are included in the dump. An active routine is a routine that has been
executed but is not necessarily in the traceback chain. This option is valid for batch, as well as interactive,
jobs.
00^\

F A full dump is written to the file PMDUMP when the job is executed with the file OUTPUT connected.
This option is valid for interactive jobs only and is the default if the *OP parameter is omitted.
PMD can be used with overlay programs. In this case, only variables defined in the overlay currently in memory are
dumped. The overlay numbers of the current overlay appear in the PMD output.
PMD output produced by a program compiled under a given optimization level can differ from that produced by the
same program compiled under a different optimization level. This occurs because different optimization levels
generate different sequences of object code. At the actual time of an abort, the machine instruction being executed for
a specified optimization level might be different from the instruction being executed for a different optimization level.
Variable values printed by PMD might differ for successive executions of the same program on certain computer systems.
This can occur on systems with parallel functional units such as the 6600, 6700, CYBER 70 models 74 and 76, and the
CYBER 170 models 175,176,750, and 760.
In addition to the file ZZZZZMP created by the loader, PMD requires a file called ZZZZZSY, which is created
by the compiler. If a program that uses PMD is to be compiled, loaded, and executed in separate jobs, those
files must be saved and must be available to PMD during execution.
PMD can, in most cases, trace back from the point at which an error occurs to the main program. Traceback
occurs repeatedly through the calling sequence of routines until the main program is reached. In PMD traceback, PMD prints the names and values of the variables in the routine in which an error is detected.

0&\

60497800

H

8-55

Traceback is abandoned under the following conditions:
/ fi t ^ k

PMD discovers a routine name that occurred earlier in the traceback. For example, the descendent of an
ancestor routine has called the ancestor again.
Traceback flows through a routine that was not invoked by standard FORTRAN calling conventions, such
as those used in a function or subroutine reference. For example, if an abort occurs while an input/output
operation is being performed in a CRM routine, the traceback is abandoned because CRM uses the "^
sequence:
SB6
JP B6
to

perform

address

the

equivalent

of

the

standard

^

calling

sequence:

/S3?^

RJ address
/Sg\

that a function or subroutine reference generates.
Multiple entry points exist in a system resident routine. If multiple entry points are in a system resident /SS^
routine, traceback might be abandoned because PMD continues traceback from the first entry point (which
is assumed to be the last active entry point for the routine). If traceback continues at an entry point
other than the last active entry point for the routine, traceback continues up a calling chain other than the ■*
one that produced the error. CPU.SYS is an example of a routine with multiple entry points that is
subject to this condition.
When traceback is abandoned the following error message is issued:
***TRACEBACK

ABANDONED

^

The formats of the optional PMD subroutine calls are as follows:
CALL
C A L L P M D A R RY ( i j )
CALL PMDARRY(i,j,k)

PMDARRY(i)

'

The last subroutine call listed causes dump of arrays to be limited to elements whose subscripts do not exceed i, j, and
k for their respective dimensions;!, j, and k represent the first, second, and third dimensions, respectively.
If k is omitted, three-dimensional arrays are not printed. If j and k are omitted, two- and three-dimensional arrays 1
are not printed; only one-dimensional arrays are printed.
>*^N

Array dumping parameters can also be specified on the LGO call card. The three formats are:
LGO,*DA=I

Corresponds

to

call

PMDARRY(I).

^\

call

PMDARRY(I,J,K).

^

LGO,*DA=I+J Corresponds to call PMDARRY(I,J).
LGO,*DA=I+J+K

Corresponds

to

where I, J, and K represent the first, second, and third dimensions, respectively.

8-56

60497800 H

If neither CALL PMDARRY nor LGO,*DA= is used, the default array dimensions of I, J, and K are assumed
to be 20, 2, and 1, respectively.
Once PMDARRY has been called, the established conditions apply to all program units in the user program.
Any number of PMDARRY calls can be included; the most recent call determines the effective conditions.
Example:
DIMENSION RAY (10,10,10)

CALL PMDARRY (3,4,1)

Array elements are printed with the first subscript varying fastest and with a maximum of six values per line for real,
integer, and logical arrays, and a maximum of three values per line for double precision and complex arrays.
The following twelve elements of array RAY will be printed:
(1.1.1)(2,1,1)(3,1,1)(2,3,2)(2,2,1)(3,2.1)
(1,3,1)(2,3,1)(3,3,1)(1,4,1)(2,4,1)(3,4,1)

If all the requested elements of an array have the same value, PMD will print the message:
ALL REQUESTED ELEMENTS OF THIS ARRAY WERE ....
If several consecutive elements of an array subblock have the same value, PMD will print .the message:
ALL THREE ELEMENTS WERE ....
CALL PMDDUMP causes a dump of variables in the calling routine, not at once, but when an abort occurs or
when PMDLOAD or PMDSTOP is called. PMDDUMP and PMDLOAD or PMDSTOP need not be called from
the same routine. The dump includes an analysis of all active routines that have called PMDDUMP. These
active routines have been executed but are not necessarily in the traceback chain. Following an abort or call
to PMDSTOP, all routines in the traceback chain are dumped. A limit of ten successive calls to PMDDUMP
is imposed. The tenth call to PMDDUMP is converted to a PMDSTOP call.
CALL PMDLOAD causes an immediate dump of variables in the calling routine and in any routines that have called
PMDDUMP. Program execution continues normally after the dump unless PMDLOAD is called more than 10 times,
in which case a nonreturnable call to PMDSTOP occurs.
CALL PMDSTOP causes an immediate dump of variables in the calling routine, all routines in the traceback chain,
and any routines that have called PMDDUMP. The job is then aborted. Programs cannot recover from a call to
PMDSTOP.
An example of Post Mortem Dump output follows:
/|KN

/I-N

60497800

H

8-56.1/8-56.2

■ ^

1

/$PN

0H&S.

^8?$^*\

r T i K X T f x r T r X T f f x x n ^ T x x
uju*uj^ujuj^>ti;ujujujuitij^^U'UJU;u.uju*UiUi

C O
Ulltf,

e o
ujiu
I T .

wr-oO'r><

ooeo
o
V*VM/<'/,V)UJU.'UiUIVfV-r-

TTltl 0fO--*«J

v^^—«Mf*l*-*
co a.*-ujXr-* *acrraicrxaai( -la.
—UJ
xx
«-i-

u

jcuiuc

rOIt3h«444«fl4irjao
co"-oo»»»«4t-r
4ua^MMi»Nir
uvtiu

Ul Ul
o
T-i
-ftatataacr-iat
T
**
uiujuJujUIUIUI^lLi
Ul
-J
Ul
JOOUOOUUO
ac
a^-jaiuujujuuujuj—u>^^_i
ui
u>
X4ri-^Ki->-i-OK
atf*
f-«M

Z4
ui

60497800 F

U l

a

>
—
»•

• ••••

o-"4

nrui
uiuia
a.o>>Ulf-

»—f—
Z O
—SE

O O

•KU1
Ull/l

XIM
f—«>
OIM

- 1 3

ZJT
C O
E l O

Ul

to

e m

0
4Ur>
o
i-MM
V«M
t—
Vt
—
IO*
triSON
V>^4>f4Nm«riMXH
^3i4«1
«
tKY
JTuiZUim
-««acafcraccirararor
waCf*
3awui
or
o
s*
ou
»-_.ui-j.o
-irt
oo
wio
->uj
morac>«o>»»«rx
WZ344
vim
3T4
_i_
<_>♦»cd
ui«
ChBp-i_juj
u,»-C
coco
wec«or«
j
«
«
k.4wui-i
co
z
at
ui
X
vifc-ou.
«o«t-fr^ir\e^<\jcn«^«r>4r
o-4-ol
_
0-.0
f-l
tC
««/»atOV»

■*

4)'0IJJV1

m x m
ujv-X
o »-

a
ac
e
X
a

U . Z
0(M •
1—

▶—ac

V»
Of
Ul

• o
azuv
O

▶
c*

Ul

4

or

•Man
^oror
• 44
->»
—e
VI

4zz

•o


r i

T

.i-or

z

OrC?—
>--.>-

19

_J

Ul

UUZU.UZU.U.*4U7?U.
IX-Ui—UlUI*—>UIU> UJMMUI

vt
4

4

«->
O

»»
-»

a

—
M
T

o

—
•

O

m

O

x.ar

m

ouiou.

o

Or

«e*

1»IZ
»4KMO

o
x

ri
Z

O

yft^^v

v t

v>v>

0_t
mo
mc

w-»
MO*
Zt-UI_l
ceo
X—O
f
■
»M
Mwagiui
4uiX
a
zui4
on—i
>ov>z_j4ce—m
.oc
tc-h't
.ocarm
1—41—
■* .
+
_j-»3
ac
r«i-B("(fi44«i
m.>ak.x>«j~f-o
O-uaai
i»m
z
<0
■
•
fCauiZ
o
uairs.H>iHoa^^M4>7>-fc.ui
O
ui—cy
_»
o
O
w4J
4iuUil/*v
c»
car
o
C
o*
49fWtv
oa
—o
f
u!iu4 o _i-> m«» a oro _icu»-jui z,—
zar>-j
cc
•«.
4o-%
u.
a
x
uio
fc-a .—../j*. >vi*4 — uj uio vi •
ft*
Sujui
c_o
vcui
*3r:oZ
vom

fl

arctuacoruacar aruu._e
ui
ui
ujui
o
e
co

• OUI

u. >
orOSUI
- 0 4 T
eot—

VI
Ul
Ul

C
M
V

SM/1
t_>«- M
ZOVtOC
M O M 4

ar

▶
-

I
1

Z

_iOi-3
_»a a
4*>uiac
O
3
« J Z
4 C 4 0

Ul

<
*
or

at

U.U.
UIUI

e oo

— 4 U I
C
h
«
MM
M
V»V»M

fc.
or

U.
Ul

m

XUIt
a » o

ac

IM

4

•U.UI
.UfO

-a
a

«V

>*
■
>
or
V
4
at
or

Ul

Ul

(9

Z3
T
Z)

Ul

» 7 U I

- i
- i
4
O

Ul
l/l

f-»

OJUI
T t - O

""
a

o

4)

>**x

V>44

or
ever
ar acar

o

or
or
Ul
*J»
U.
Ul

U.

u i

z

Z t fl t f t C O
M
UJtVMM
_l
at

u»
Ul
o

u i

or

UJ-OO
U.
ui

or

arat
4 4
orac
arm

U.
Ul

o
z

OOHri

19-4

C90
X U I
u.i/1
- 1 3

orotorororor or
UlUlUIUIUIUIUI

Ul

Ul

ui —lOtSOisiflo 19 ujf— a.
a_iceuiuiujuiuiuj u>_i_j-j os v
V4 3l-Kf'r-l-p> h444 OlLr> f
▶- U I O Z Z Z Z Z Z Z U J U I U I C Z C
aeHHHHHM —arococ su.

y

:v»
VI

-.
V-4

VfM
4 V < fl 4 )

4oc arorocat
f a t
x TH or 4 oror44
>> mm viar> 44»>
(/I QUI UI4SHHHHH
▶k i
OC
*•

a
M

ae
f»
_

49
»•

Ul
-I
Ul

8-58

u.

TO C S

O
Ul
4(9
O
O
▶_ ( _ ) « >
1/14
fc-ZO"M
Ul
f*4»
Z»f-*«
4
*-?
XuiUItt*
vi
uiui
war
u4
-j
0
00
hjj«
3
v»o.a
v>ox
are
00
ao
vie
ui
Mar UI44 VKOVIM 3_i »->oo -j-i o*--cp
z a s x r ^ i > - I 4 0 V I u . 11 . z - * - 4 c c c o w o 4 «
4
4
Ul
^-40t_l
x
ui
ae
z
v>fc>c9
ohoo
or
x
ui*»m
o
hioz
f*»

>c^\

Ul

f-l
M

4

b-MIO
VI

X

X

W>-OTO
«VKiM
V I

60497800 F

M O M Ul Ul
fM I u. w M
I Ul Z m M
•V M 4 Z X O
tr o or m m
«•» O 4 U, U.

f*> i*- o x
M I*. O M
M
-4K

iM jf tr ui ui

>

4 o o o m o o o
> o o o - . o o o
o o i r i M o o o
- t o o o r - o o o
4 0 0 M . O O O O
h - O O ^ - M O O O
o o o o m o o o
O O O O M O O O
0 0 © « r © h - f > 0 0 0 4 3 0 r > - * .

o
o
o
o
O
O
o
O
0
Q

o o * o o i « - r - o
O O O O O m m o
O r f r v f - f t n ^ N

V Ul
— VI

4

tr re

~.

unr
a
r»

«
o

O

M

Ul

or*

O
M
o
m
O
M
. 1/1
mo*
a
o

o o m o f » o o o
© O f - 0 . 0 0 0 0
o o o o o o o o

ec u j o o o o o o o o
C T 3 0 0 0 0 0 0 0 0
u. - j o o o o o o o o
4 0 0 . T O O O O O
U:
VI

> o o o o o o o o
o o o o o o o o

- J O O O O O O O O
4 0 0 0 0 0 0 0 0
M O O O O O O O O

o o o o o o o o o
V > C 0 0 0 0 0 4 3 0 0
ar
r-6©00-«i».o
r—OOOOCMf-O
h - O O O O ^ f - O
c n O O O O - . « n o

Ul
«/l
O

Ul O O M « \ . c « * i r i « h 1 or

f at iw _c

r*

>

CM N> V» M M
m w> v* m t—
o O- ui M M
m 4'ac vi vi
> . « c O O
> i a a a

/$^\

M
or
4
>

m «r> o u.
im m o z

cc in a z z
M 1*1 MM
in cm u.

CO CC CC GQ CC CO OJT CO
r ^ o o 4 > M o o o
O O O O N O O O
• • - o O f - i f ^ - o o o
• O O O m O O O O
O
O O O C M O O O O
C u i O O O < 0 O O O O
VI 3 0 0 0 < n 0 0 0 0

>■
<
ar
or

-1

119

4:
f»

UJ
_ l
VI
- J
UJ

u.

m
•
r»
c
—
O
4a.
4J
fi
a
k
. r ^ * fi 4 m
4: ff» — -» -j

■C• { *4)~ »ri «-i- —
I—
.

-1

PU

o

—

—

4

„

VI
CM
I
>■ 4 - J - >■
4 M 4 4 u.

—
^>

Or 4- ar ar 3 O
or . *v ar —i 7
4
O U.
4 Ul
C "»
-1
-1
-1 4
4
Z

19 Z
X
m
UJ
-1 X

4 Ul
U M

ri

I- or

1■*»

Z UJ

r»

0H^\

z o

•JJ
19 m
X U.
— VI
31 m
«"• 1—
-1 4
-J Vt

e z

U. 3

4
5» •

r l l fl l fl "

uj

x -i
x •

Ul
VI

TT CM
i > tn
■«» CM

O
•vi
4
-I

Ul
19

co

e* »-

Ul
1-

•*-. ■X

v»
O

-1 19

-1 z
O Ul
u. _

M
o 3
tu a

V» *»
31Z
3

3

a

X
e
x

M
-»
ui

oc
o
o

or O

X

J f - i n

4 X 3 4 4
oc MO f f

4
M
X

3

O

M

Ul

er
X X Ul
M

M

M

ec
Ul

O ui vt x x Ul
Ul
ca X Ul M M X
X 4 0( M m 4 M M
v x a i s o i
or
o vi 4 a
o
a. 4
j o c j o e d d c i s d
c/i 4 * ' r » ^ t n c * t . f - * a 4

4

M

«M

U.

4

*»-

3 a ui ui
x a m a a

O

X f/> V» 4
Ul C o
1— f- O O M
VI
Z Z VI
M 4
- J
VI VI -J

u. u. u. X

4

VI
V)
Ul

ar

a. a. a. 7

o O
O o. • . o

VI

4}m

4
X

or

or or

or » 4 M 45 N 4» -r -r ■».
m

O

Ul

M>-1mm

« r» M M 4) I*- P. 4>
O O M M O O O O
O O O O O O O O O

VI O

o
Ul O O M «M m 4» m 4) f*.
oc Ul 4 4 4 4 4 4 4
1

60497800 F

4

or

09 •» O
e
4
m

0&\

4

or

—
«
«.»
«X
Z

VI

M

— ocimooocMO
4
>

m
49

CM
O

HH
-O

ui
a
oc
ac
x ui UJ uj ui
m
JHOO
M UJ —I * UJ UJ UJ
3 a 4 3 »- f tO >- ui O Z Z Z
ac m tt o M M M

i
I
i
I

_COCOC0CDCCCO0CD
4 0 t n o o o « M ~ r o

> O O O O O M O O
O M O O O O O O
MO^JSOOOM©
O O O i w O O O m O
o o o o o o o o o

Q MM M X M

oc

8-59

/*"~**SL

>V
M
4'
VMIM«n«Mf4
SC
4 4 or or or or or or or or 5»* v>
ater4ac
or
4
4
4
4
4
v>
4
Ot
Ot
>
4
4>>>>>4
X

m—za3m

VI VI

z X
o o
o o

/"S^\

o o
cv
4

t
4

/f^^V

I (

•D SO
4* *

*»

# JJ>
CM IM
A

A

at or
ui ui

o
o
ui ui

f a.

f f X r ,
z z 4 cr
m m or or

4) O — X Ul
• O cm m rw
45 — O • f M
•
0003-1
K rn O M O 4
— w o — at m
O
M
O
O
m
O
Ul
X
V >- O V -J M
fW
4
4
.4-1
or ot m at 4 »ar
or
nuaij
4 4 m 4 T ta ft
Ul
x

N O O O C Z
m m o or m
_l
O
u.
u.

M

CT

or 4
4 ac
-i ac
O 4

a u. u. u.

ui

O

a

m

O
O
o
o
rM

o>

1
z
•* M
r- i0» 3
m
o
m ec
in
cm e
49 Ul
0» _l
45 _
»
4
CMO

t *
4f

UJ
VI
- J
U.
Ul
3

Ul
X

ui
ki

m
or

ac

Ul

M

M
Ul
I Ui Ul
l c.fj o
I Ul Ul

CM
M
o
m

o 3

M O
M Ul

X
4
OC Ul
o o.
o >»
or »a

4 4 4
Ul Ul Ul
> or or oe

X
v t
Ul
- I
ce
4

:m -» xo. 3 m m

i

Ul
X
4
X

Ul
VI
O
X
Ul
M
x a t M o t o t a t o t o i _ i o r 4
Ul lb X Ul Ul ID 111 ID 4 IV r>
—
OmOOiIOOoOX
Jjaui
uiuiuiuiuiMuio_vi-i
-i
4 4 X M X H - M M M h - 0 M O 4
UlUI a X 4 Z X.X X X OX Ul
ac at o m m m m m m j m uj or
VI
_
m
ca
4
X
M
ui
at
t4
f4N
^MN
>
>VM4
VHNn#Hf4
X
4 4 a t o t » - o c a t o t a t a r a r i r r - v »
« a f 4 0 ( M e r 4 4 4 4 4 V I M 4
a r a t > 4 u i 4 > > > » » 4 u j x
4 4 o M X M M M M M ^ x z a t

4

01
UJ
—1
_ l

Ul

o

ar c
u.*
VI K.

z
M

x
ui

Ul

Ul
r -

at ar
V Ul Ul
4 O O
x
ui
uj
M
M
4 X 4
Ul 4 Ul
X
X
ui ot ac M M M
1/1
- J
CO
4
l/l
Ul
ac
X
f-lO T X
O
4
4
M
M
* - o r ^ - M f fl A M
M 4 M o r M X X
Ul > ui 4 ui e o
z a ( Z > x o o

Ul

49
•
4)
•
r^.
—
m

M
VI
u.
3
e»
Ul
or

jttcfSSsV

f*l

»
>
CM

a t

4 -1
at —i
OC 4

ac

■
>

>•

ar
o t

ar
ac

or
oc

VI

.
j*tf^V

0ti$$\

8-60

60497800 F

0mS,

/SSN.

/0^\

V". V)
I— I-

00^\

X

ot

X

Ul
X
Ul
-I
ui

Ul
X
Ul
-I
ui

ui
VI
ui

ui
v>
ui

—

—

0$^\

60497800

F

8-61

'I

I"$~\

DEBUGGING FACILITY

The debugging facility allows the programmer to debug programs within the context of the FORTRAN language.
Using the statements described in this section, the programmer can check the following:
Array bounds Function references and the values returned
A s s i g n e d G O T O Va l u e s s t o r e d i n t o v a r i a b l e s a n d a r r a y s
S u b r o u t i n e c a l l s a n d r e t u r n s P r o g r a m fl o w
The debugging facility, together with the source cross reference map, is provided specifically to assist the pro
grammer develop or convert programs.
The debugging mode is selected by specifying D or D = lfn on the FTN control statement. This option auto
matically selects fast compilation (OPT=0) and full error traceback (T option). If any other optimization level
is specified, it will be ignored. Specification of both D and TS results in a fatal error. The following examples
are equivalent:
FTN (D)
FTN (D=INPUT,OPT=0,T)
FTN (D, 0PT=2) OPT=2 is ignored, OPT=0 and T are automatically selected.
Debug output is written on the file DEBUG. The DEBUG file, which must be on a queue device, is given print
disposition and printed separately from the output file upon job termination. To obtain debugging information
on the same file as the source program, or any other queue device resident'*' file, DEBUG must be equivalenced
to that file in the PROGRAM statement.
Examples:
PROGRAM EX (INPUT,OUTPUT,DEBUG=OUTPUT)
Debug output is interspersed with program output on the file OUTPUT.
/I-*\

PROGRAM EX(INPUT,OUTPUT,TAPEX,DEBUG = TAPEX)
Debug output is written on the file TAPEX.
The following control statement sequence causes the debug output to be printed on the output file at termination
of the job. It is not interspersed with the results of program execution.
j j fl l ^

y^®V

FTN(D)
LGO.
REWIND(DEBUG)
COPYCF(DEBUG,OUTPUT)
E X I T ( S ) t o r E X I T. f t
REWIND(DEBUG)
COPYCF(DEBUG,OUTPUT)

Abnormal termination

"•"NOS/BE 1 and SCOPE 2
"•"•"NOS 1*
"•""•""•"NOS/BE 1
J0\
60497800 E

9-1

■^^v

In debug mode, programs execute regardless of most compilation errors. Execution, however, terminates when
a fatal error is detected, and the following message is printed:
FATAL ERROR ENCOUNTERED DURING PROGRAM EXECUTION
DUE TO COMPILATION ERROR

Partial execution of programs containing fatal errors allows the programmer to insert debugging statements to
assist in locating fatal and non-fatal errors. Partial execution is prohibited for only four classes of errors:
Any declarative error (any error encountered before at least one valid executable statement is found)
Any fatal compilation error (defined in Appendix B)
Any missing (undefined) DO termination
Any illegal transfer into an innermost DO loop that is not an extended range loop
When a program is compiled in debug mode, at least 15000 (octal) words are required beyond the minimum
field length for normal compilation. To execute, at least 2500 (octal) words beyond the minimum are re
quired. The CPU time required for compilation is also greater than for normal OPT=0 compilation.
If the D option is not specified on the FTN control statement, all debugging statements are treated as com
ments; therefore, it is not necessary to remove debugging statements from a program.
All debugging options are activated and deactivated at compile time only. This compile time processing is
not to be confused with program flow at execution time.
Example:
PROGRAM TEST (OUTPUT,DEBUG=OUTPUT)

GO TO 4

C$ (DEBUGGING OPTION)
C$ (DEBUGGING OPTION)
4 CONTINUE
/^3\

END

Even though a section of code may never be executed, the debugging options are processed at compile time
and are effective for the remainder of the program. In the above example, the code between the GO TO
statement and the CONTINUE statement may never be executed. However, debugging statements between
these statements are processed at compile time and are effective for the remainder of the program, or until
deactivated by a C$ OFF statement.

9-2

60497800

C

DEBUGGING STATEMENTS
C$

ds(p., pn)

i

/pp^\

ds

Type of option, beginning after column 6: DEBUG, AREA, ARRAYS, CALLS,
FUNCS, GOTOS, NOGO, OFF, STORES, TRACE

Pi

Argument list; details extent of the option, ds (not used with NOGO, GOTOS; required
for AREA, STORES; optional for other options)

CONTINUATION LINE
1
C$

67

P

« C<6>» D(2t3*<»>
PRINT 1
1 FORMAT<«0 ARRAYS EXAMPLE'///)
*

TURN

ON

A R R AY S

FOR

A R R AY S

A

AND

D

^

4»

Cl ARRAYS (A* 0*)
«
* A ( 3 ) I S O U T O F B O U N D S A N D A R R AY S I S O N F O R A * S O A D I A G N O S T I C ^
*
IS
PRINTED.
>
♦
A(3) * 1
* 8(5) IS OUT UF BOUNDS BUT ARRAYS IS NOT On FOR 8» SO NO
* DIAGNOSTIC IS PRINTED.
B<5> - 1
C<2) - A(A(3)>
* EVEN THOUGH A(3) WAS OUT OF BOUNDS* THE ASSIGNMENT TOOK PLACE.
* A(AU)) IS EQUIVALENT TO A(l). THIS SUBSCRIPT IS IN BOUNDS*
* HOWEVER THE REFERENCE TO A<3> WILL CAUSF A DIAGNOSTIC
«
*
*
*
*
*
*
*

D(-5*0*6>
=99
***)
FUR THE ARRAY D(L.M*N) THE STORAGE ALLOCATED IS L * M » N.
THE SUBSCRIPT FOR THE ELEMENT D(I»J*K) IS COMPUTED AS FOLLOWS
> C<-1>. AND D(O.O.O). BECAUSt A(2) 1
* IS IN BOUNDS AND A<<0 IS IN AN I/O STATEMENT* THERr WILL BE
* NO DIAGNOSTICS FOR £ITHER OF THESE REFERENCES.
A(2) * 1
B<5) = 2 ♦ C(-l)
D<0*0»0) = 1
PRINT
F O R M AT t l X *
END

9-4

2*

A(4>
A10)

'

60497800 C

_.
"y
'

ARRAYS EXAHPLC

/jls\

/ D E B U G / A R R AY S AT L I N E
/0E8UG/
AT
ITNC
/OEOUG/
..
AT
Line
/OEBUG/
AT
LT ' i r.
itxrtaic,/
«t
i
tnp

u?0*.rWi.a

th*
T»"£
TMt
TH"
-j«£

■;ii3?':».:',T
"5!J'»srMt"»T
SUB'.CP.IPT

»!

v»l tr
v i L ' i r Of
v»ui«" p«"
v»u«r t r
VALUE 0"

-1
- B

I'M
IN
IN
IN

I » 1 T
»?°»Y
»o»»Y
ARUAY

""VCEtl'S
r»rrios
EXCEEDS
fxfErns
EJ>CEEOS

OI-tNSinurO
PiriHSinm n
oif-tNsinnto
nifENSioNfn
DIMENSIONED

»mm
pound
qouNO
bound
BOUND

or
or
of
or
OF

•<
6

CALLS STATEMENT
c$

CALLS (a

'an>

1

c§T

CALLS

a,,...,an subroutine names

/fss

The CALLS statement initiates tracing of calls to and returns from specified subroutines. If there is no
argument list all subroutines will be traced. Non-standard returns, specified in a RETURNS list, are
included. To trace alternate entry points to a subroutine, either the entry points must be explicitly named in
the argument list, or the form with no argument list must be used (all external calls traced). The message
printed contains the names of the calling and called routines, as well as the line and level number of the
call and return.
A main program is at level zero; a subroutine or a function called by the main program is at level 1,
another subprogram called by the subprogram at level 1, is at level 2, and so forth. Calls are shown in order
of ascending level number, returns in order of descending level number.

/*JS!\

level 0

MAIN

level 1

return

level 2

-▶call

SUB A

return

- call

SUBB

For example, subroutine SUB A is called at level l and a return is made to level 0. SUB B is called at
level 2 and a return is made to level 1.

/^*V

60497800 A

9-5

Example:
PROGRAM CALLStOUTPUT»OEBUG=OUTPUT)
PRINT 1
1 FORMAT<*0 CALLS TRACING*)
a
* TURN ON CALLS FUR SUBROUTINES CALLS1 AND CALLS2
*
C* CALLS^*\
J

SUBROUTINE CALLS1U,Y), RETURNS(A)
Y = -X
IF (Y .NE. X) RETURN A
RETURN
ENTRY CALLS1E
RETURN
END

5

5

9-6

SUBROUTINE CALLS2CX)
CALL

CALLSHXtY)*

END
SUBROUTINE SUBNOT
X - -1.
CALL
END

CALLSKXtY)*

RETURN

RETURN

60497800

RETURNSC5)

sms*
1

RETURNS(S)

^
^

H

/DEBUG/ CALLS AT LINE
AT LINE
/DEBUG/
AT LINE
/DE8UG/
/DEBUG/
AT LINE
AT LINE
/DEBUG/
/DEBUG/
AT LINE
AT LINE
/DEBUG/
/DEBUG/
AT LINE
/DEBUG/
AT LINE
AT LINE
/OEBUG/

9101011-

Zk-

2525262627-

ROUTINE
ROUTINE
ROUTINE
ROUTINE
ROUTINE
ROUTINE
ROUTINE
ROUTINE
ROUTINE
ROUTINE

CALLS1
CALLS1
CALLS2
CALLS2
SUBNOT
SUBNOT
CALLS2
CALLS2
CALLS1E
CALLS1E

CALLED
RETURNS
CALLED
RETURNS
CALLED
RETURNS
CALLED
RETURNS
CALLED
RETURNS

AT
TO
AT
TO
AT
TO
AT
TO
AT
TO

LEVEL
LEVEL
LEVEL
LEVEL
LEVEL
LEVEL
LEVEL
LEVEL
LEVEL
LEVEL

AT STATEMENT 10

In this example, only calls from the main program are traced. To trace calls from subprograms, a C$
CALLS statement must appear in the subprograms.

FUNCS STATEMENT
/c$

/c$

FUNCS (a

an>

FUNCS

If no function names (a,,...,an) are listed, all external functions referenced in the program unit are traced.
Alternate entry points must be named explicitly in the argument list, or implicitly in the C$ FUNCS
statement with no paramenters.
Function tracing is similar to call tracing, but the value returned by the function is included in the debug
message. Each time a specified external function is referenced, a message is printed which contains the
routine name and line number containing the reference, function name and type, value returned, and level
number. The level concept is the same as for the CALLS statement.
Statement function references and intrinsic function references are not traced, nor are function references in
input/output statements.

60497800 C

9-7

Example:
The following program, VARDIM2, illustrates both the C$ FUNCS and C$ CALLS statements. All
function references in the main program are traced because C$ FUNCS appears without an
argument list; references to functions PVAL, AVG and MULT and the values returned to the main ^^\
program (level 0) are traced. All subroutine calls in the main program are traced also because a C$ CALLS
statement without an argument list appears.
Function references within the FUNCTION subprograms PVAL, AVG and MULT are traced since
C$ FUNCS statements appear within these subprograms. If no C$ FUNCS statements appear in the
subprograms, only main program function references will be traced. /-aa^

PROGRAM VAR0IM2COUTPUT,TAPE6=0UTPUT,DEBUG=0UTPUT>
C THIS PROGRAM USES VARIABLE DIMENSIONS AND MANY SUBPROGRAM CONCEPTS

5

COMMON
REAL
E X T E R N A L M U LT, AV G
C$

10

X(i»,3l
YC6)

PVALSF

CALL
CALL I0TA(X,12)
INC(X,12,-5.)

CALLS

_
^%
^

S E T C Y, 6 , 0 . 1

^

CALL
C
C
ALL
EXTERNAL
CALLS
ARE
DIAGNOSED.
^
C
C$ FUNCS
1 5 A A = P VA L S F « 1 2 , AV G )
AM a PVALSF<12,MULT>
C
C PVALSF IS A STATEMENT FUNCTION, SO THE FUNCS STATEMENT DOES NOT
C APPLY TO IT ANO NO MESSAGE IS PRINTED. HOWEVER, THE EXTERNAL -,
2 0 C F U N C T I O N P V A L I S R E F E R E N C E D W I T H I N T H E C O D E F O R P V A L S F, ™
C AND THOSE REFERENCES ARE OIAGNOSED.
C MULT AND AVG ARE NAMES AS ARSUHENTS TO PVALSF, HOWEVER, THE
C FUNCTIONS ARE NOT ACTUALLY REFERENCED AND MESSAGES ARE NOT
C
PRINTEO.
25
C
STOP
END
^^5\

5

10

9"8

2

SUBROUTINE
SET
(A,M,V)
^
C SET PUTS THE VALUE V INTO EVERY ELEMENT OF THE ARRAY A
DIMENSION AfH)
0011*1,M
1
A fl ) = 0 . 0
^
C
■• '
ENTRY INC
C I N C A D O S T H E VA L U E V T O E V E R Y E L E M E N T I N T H E A R R AY A _
0021=1,M
^
A
C IOTA PUTS CONSECUTIVE INTEGERS STARTING AT 1 IN EVERY ELEMENT OF
C
THE
A R R AY
A
DIMENSION ACM)
0011=1,M
1
A)
C

5

0^\

10

C

SO

C WAY DOES NOT APPEAR IN THE ARGUMENT LIST FOR THE FUNCS STATEMENT,
O N LY T H E R E F E R E N C E TO A B S I S D I A G N O S E D .
RETURN
END

FUNCTION AVG(J)
C AVG COMPUTES THE AVERAGE OF THE FIRST J ELEMENTS OF COMMON.
COMMON A(100)
AVG=0.
D01I=1,J
1 AV G = AV G « * A ( I >
CS FUNCS
C
C ALL EXTERNAL FUNCTION REFERENCES WILL BE DIAGNOSED.

10

C
AVG*AVG/FLOATG0iiiiuJ0

AT
AT

LEVEL
LEVEL

STORES STATEMENT
1

i

^^\

STORES (cvc2 cn)

i
i

An argument list must be specified for the STORES statement.
(c,,...,cn) are variable names or expressions in the forms:
variable name
variable name .relational operator, constant
variable name .relational operator, variable name
variable name .checking operator.
Relational operators are .EQ., .NE., .GT., .GE., .LT., .LE.
Checking operators are .RANGE., .INDEF., .VALID.
Example:
C$ STORES(SUM,DGAMP,AX,NET.LT.4,ROWSUM.RANGE.)
C$ STORES(Al,AGAIN,I,A2.EQ.5.O,IAGAIN.LE.IVAR)
C$ STORES(C.EQ.(l.,1.),L.VALID.,D.NE.10.004)
C$ STORES(G.RANGE..TR.EQ..FALSE.)

9-10

60497800 C

^ifev

The STORES statement is used to record changes in value of specified variables or arrays. The STORES
statement applies only to assignment statements. Values changed as a result of input/output, or use in
DATA, ASSIGN, and COMMON statements, or argument lists to subroutines and functions are not detected.
The STORES statement does not apply to the index variable in a DO loop.
If the value of a variable in an EQUIVALENCE group is changed, the STORES statement will not detect
changes to the value of other variables in the group.
VARIABLE NAMES
In the first form of the STORES statement, a message is printed each time the value of a variable or an
array element changes. The variable and name of the array must appear as arguments in the C$ STORES
statement.
Example:

10

PROGRAM STORES (INPUT,OUTPUT,0E8UG = OUTPUT)
LOGICAL L1,L2
C$ STORES (NSUM,DGAMP,AX)
NSUM = 20
OGAMP = .5
AX = 7.2 + DGAMP
LI = .TRUE.
L? = .FALSE.
PLANT = 2.5
A = 7.5
PRINT 3
3 FORMAT (1H0)
STOP
END

Each time the value of the variables NSUM, DGAMP and AX changes, a message is printed. The
values of PLANT. A. L1 and L2 are not printed, since they do not appear in the argument list.
0^\

/ D E B U G / S T O R E S AT L I N E < » - T H E N E W VA L U E O F T H E VA R I A B L E N S U M I S 2 0
/ O E B U G / AT L I N E 5 - T H E N E W VA L U E O F T H E VA R I A B L E D G A M P I S . 5 0 0 8 0 0 0 0 0 0
/ D E B U G / AT L I N E 6 - T H E N E W VA L U E O F T H E VA R I A B L E A X I S 7 . 7 0 0 0 0 0 0 0 8

/*?i&£\

60497800 A

9-11

Array elements should not be specified in the parameter list of a STORES statement; the array name must be
used. If an array element appears, an informative diagnostic is printed. Changes to any element of the array
are noted; only the array name without subscript is listed.
Example:

/*^\
PROGRAM STORAR 
REAL AI101, B(t»,2)
CS STORES CA,B>
B(i,2) - 5.5
B<

CS DEBUS
CS STGRGSdMOLL.IRIGHT.ILEfTthOLLJ
IMOLL«2rn?A
1RIGHT»2«PA
ILEFT»2lPA
H0LL«2m?A
PaiNT 1
1 FORMAT (IhO)
STOP
END

10

/OEoUG/ DEMOi.
/DtaUG/
/OtSOG/
/OcdUG/

AT
AT
AT
AT

LIKE 6- TMt NEW VALUE Of Trl£ VARIABLE IhOcL Ii ••••••••<•••••
LINE 7- TrlE NEW VALUE Of TMSi VAkUBLE 1HIGHC IS 102S
LINE 8- ThE NEW VALUE OF THE VARIABLE ILEFT IS •••••••*<.•••••
LIME 9- THE MEU VALUE OF THE VARIABLE KOLL IS .
OATA J/0/
C $ T PA C E t l )
level 0
IF (J .EQ. 0) GO TO 11
r level 1
11 DO 1 II = 1, 3
IF ( 
r level 2
OO 20 12 = 1, 3
IF ( 12 .EQ. 3 ) GO TO 20
15
J = 2
r- level 3
DO 3 13 = 1, 4
IF < J .GT. 13 ) GO TO 31
T31 OO 4 14 = 1» ?
level 4 I GO TO 4
20
L 4 CONTINUE

25

/0E8UG/ P
/DEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/OEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/OEBUG/
/DEBUG/
/OEBUG/
/DEBUG/
/DEBUG/
/DEBUG/
/DEBUG/

>

x,,...,xn debug options
The OFF statement deactivates the options specified by x; or all currently active options except NOGO, if
no argument list exists. Only options activated by interspersed debugging statements are affected. Options
activated in debug decks or by subsequent debugging statements are not affected.
The OFF statement is effective at compile time only. In a debugging deck, the OFF statement is ignored.

9-26

60497800 A

Example:

CS

cs
cs

/$>Bv

PROGRAM OFF COUTPUT,DEBUG*OUTPUTI
OEBUG
STORES(C)

INTEGER A, B, C
STORESU, B)
A = 1
B = 2
C = 3

10

MESSAGES HILL BE PRINTED FOR STORES INTO A, B, AND C.

cs
15

20

OFF
A=
B *
C«
THE OFF STATEMENT MILL ONLY AFFECT THE INTERSPERSEO DEBUGGING
STATEMENT, SO THERE WILL BE NO MESSAGES FOR STORES INTO
A OR B. HOWEVER, CS STORES(C) IN THE DEBUGGING OECK IS NOT
AFFECTEO, ANO A MESSAGE IS PRINTED FOR A STORE INTO C.
ENO

/0E8UG/ OFF
/0E3UG/ AT
/DEBUG/ AT
/DEBUG/ AT

AT LINE T- THE HEW VALUE OF THE VARIABLE
LINE 8- THE NEW VALUE OF THE VARIABLE
LINE 9- THE NEW VALUE OF THE VARIABLE
LINE 17- THE NEW VALUE OF THE VARIABLE

A
B
C
C

IS
IS
IS
IS

PRINTING DEBUG OUTPUT
Debug messages produced by the object routines are written to a file named DEBUG. The file is printed upon
job termination, unless otherwise specified by the user, because it has a print disposition. To intersperse debug
ging information with output, the programmer should equate DEBUG to OUTPUT on the PROGRAM statement.
An FET and buffer are supplied automatically at load time if the programmer does not declare the DEBUG file
in the PROGRAM statement. For overlay jobs, the buffer and FET will be placed in the lowest level of overlay
containing debugging. If this overlay level would be overwritten by a subsequent overlay load, the debug buffer
will be cleared before it is overwritten.
At object time, printing is performed by seven debug routines, These routines are called by code generated at
compile time when debugging is selected.

0Sb\

60497800 A

9-27

Routine

Function

BUGARR Checks array subscripts
BUGCLL Prints messages when subroutines are called and when return to calling
program occurs
BUGFUN Prints messages when functions are called and when return to calling
program occurs
BUGGTA Prints a message if the target of an assigned GO TO is not in the list
BUGSTO Performs stores checking
BUGTRC Flow trace printing except for true sides of logical IF
BUGTRT Flow trace printing for true sides of logical IF

STRACE ENTRY POINT

/^s?\

Traceback information from a current subroutine level back to the main level is available through a call to
STRACE. STRACE is an entry point in the object routine BUGCLL. A program need not specify the D
option on the FTN control statement to use the STRACE feature.
STRACE output is written on the file DEBUG; to obtain traceback information interspersed with the source
program's output, DEBUG should be equivalenced to OUTPUT in the PROGRAM statement.
Examples:
PROGRAM MAIN (OUTPUT,DEBUG=OUTPUT)
CALL SUB1
END

iffj^v

SUBROUTINE SUB1
CALL SUB2
RETURN
END
SUBROUTINE SUB2
I = FUNC1(2)
RETURN
END

J?WH$\

FUNCTION FUNC1 (K)
FUNC1 = K ** 10
CALL STRACE
RETURN
END

9"28

ff$!is\

60497800

A

Output from STRACE:
/ O E B U G / F U N C 1 AT L I N E

3- TRACE ROUTINE CALLED
FUNC1
SU82
SUB1

CALLEO BY SUB2
CALLEO BY SUB1
CALLEO BY MAIN

AT L I N I
AT LINE
AT LINK

2, FRON
2, FROH
2, FROH

LEVELS BACK
LEVELS BACK
LEVELS BACK

—^ A main program is at level 0; a subroutine or function called by the main program is at level 1; another
f subprogram called by a subprogram is at level 2, etc. Calls are shown in order of ascending level number,
returns in order of descending level number.
For additional information regarding the debugging facility, refer to the FORTRAN Extended Debug
User's Guide.

/$s\

i|88"**\

0^\

60497800

A

9-29

/*%

^
■ ^

10

FTN CONTROL STATEMENT

jpe\

The FORTRAN Extended compiler is called from the library and executed by an FTN or FTN4' control
statement. Either control statement calls the compiler, specifies the files to be used for input and output,
and indicates the type of output to be produced. Either control statement may be used in any of the
following forms:

1

F|TN (p1 ,p2 ..... pn) comments
I
I
I

FjTN. comments
I
I
1

l

F|TN,p1 ,...,pn. comments
I

Examples:
FTN (A,L,R,GO,S=0)
FTN4 (A,L.R,GO,S=0)

PARAMETERS
The optional parameters, Pj,...,pn must be separated by commas and may be in any order. If no parameters
are specified, FTN is followed by a period or right parenthesis. If a parameter list is specified, it must con
form to the syntax for job control statements as defined in the operating system reference manual, with the
added restriction that a comma is the only valid parameter delimiter. Columns following the right parenthesis
or period can be used for comments; they are ignored by the compiler, but are printed on the dayfile.
Default values are used for omitted parameters. These defaults are set when the system is installed; since
installations can change default values, the user should determine what default values are in effect at the user's
particular installation.
Unrecognizable parameters are ignored. Conflicting options either are resolved or cause compilation to ter
minate, depending on the severity of the conflict; this resolution is indicated in a dayfile entry.
The values of the A, B, D, G, I, L, ML, P, S, and X parameters are passed to COMPASS when intermixed
COMPASS subprograms are present.

"•"Not valid on SCOPE 2.
60497800 H

10-1

In the following description of the FTN control statement parameters, lfn indicates a file name consisting of one to
seven letters and digits, the first a letter. Two or more options using the same file terminates compilation with a "^
message to the dayfile.
A

EXIT

PA R A M E T E R

(Default:

A

=

0)

^

A If fatal errors have occurred during compilation, the system aborts the job to the next
EXIT(S) control statement (NOS/BE 1 and SCOPE 2) or EXIT control statement (NOS 1).
If no such control statement is found, the job is terminated. This option has no effect on "^
interactive jobs. A takes precedence over GO but not over D.
A = 0 System advances to the next control statement at end of compilation whether or not fatal /js3?.
errors
have
been
found.
^
B

BINARY

OBJECT

FILE

(Default:

B

=

LGO)

>*^^K

B Generated binary object code is output on file LGO.
B = lfn Generated binary object code is output on file lfn.
B = 0 No binary object file is produced. Cannot be specified with GO.
The B option conflicts with the Q and E options.
BL

B U R S TA B L E

LISTING

(Default:

BL

=

0)

BL Generates output listing that is easily separable into components by issuing page ejects
between source code, error summary (if present), cross reference map, and object code (if
requested); and ensures that each program unit listing contains an even number of pages
(page parity) issuing a blank page at the end if necessary.

> ^ V

BL = 0 Generates listings in compact format.
C

C O M PA S S

A S S E M B LY

(Default:

C

=

0)

C Selects the COMPASS assembler to process the symbolic object code generated by
FORTRAN Extended. When the C parameter is specified, FTNMAC is selected as a
system text for the COMPASS assembly; therefore, if the C option is selected, the
maximum number of system texts that can be specified with the G and S parameters is six.
C = 0 Selects the FORTRAN Extended internal assembler (regardless of installation default),
which is two to three times faster than the COMPASS assembler.
The C option conflicts with the TS, Q, and E options.

^^Sv

C C C O N T R O L S TAT E M E N T C O N T I N U AT I O N PA R A M E T E R ( D e f a u l t : C C = 0 )
CC Causes the FORTRAN Extended compiler to interpret the following control statement as
a continuation of the FTN control statement, thus allowing the FTN control statement
to be continued on more than one line. The CC parameter must be repeated on each
statement in the sequence with the exception of the last statement in the sequence; the
CC parameter must not appear on the last statement in the sequence. Each statement in
the sequence of continued statements must be terminated by a period or a right
parenthesis.
CC = 0 The FTN control statement appears on one line only.
/^^\

Example:
FTN,I=INPUT,CC.
L=OUTPUT,CC.
B=LGO.

^

/&~§K

10-2

60497800G

/fPSN

D

DEBUGGING

MODE

PA R A M E T E R

(Section

9)

(Default:

D

=

0)

D = lfn This option must be specified if the debug utility described in section 9 is to be
used, lfn is the name of the file where the user debug deck resides (see figure
9-4, section 9). Binary object code is generated on the file indicated by the B
parameter regardless of compilation errors or the exit parameter A. Interspersed
COMPASS code, if present, is assembled under the COMPASS D option. Specify
ing D automatically activates OPT=0 and the T option; thus, FTN(D) is equivalent
to FTN(D,OPT=0,T,A=0).
D

Implies

D

=

INPUT

D = 0 Debug statements are ignored.
OPT=l and OPT=2 are ignored if D or D=lfn is specified. The D option conflicts with the TS option.
DB

CYBER

INTERACTIVE

DEBUG

PA R A M E T E R

(Default:

DB

=

0)

DB = ID This option must be specified if the program is to be debugged using CYBER
Interactive Debug and the DEBUG control statement (NOS 1 and NOS/BE 1
only) has not been included. If the DB parameter is specified, the binary
object code is complemented by a line number table and a symbol table.
CYBER Interactive Debug uses these tables while processing the user's program to
determine variable locations, source line locations, and other useful debugging
information.
DB = 0 No debug tables are generated. If CYBER Interactive Debug has been turned
on with the DEBUG control statement, specifying DB = 0 turns it off for the
duration of the compilation.
DB

Implies

DB

=

ID.

Specifying the DB option automatically activates the TS option. The DB option conflicts with the D
and OPT = 0, 1, or 2 options. For more information, refer to the CYBER Interactive Debug
reference manual.
E

EDITING

PA R A M E T E R

(Default:

E

=

0)

E = lfn Generated object code is output as COMPASS line images on the file lfn, which
is rewound at the end of compilation. Each program unit is prefaced with the line
image, *DECK,program, so that the file will be suitably formatted for input to
UPDATE or MODIFY. Binary object code is not produced, and COMPASS is not
called. When the file lfn is assembled subsequently, S=FTNMAC must be specified
on the COMPASS control statement.
/*|S*N

E

Implies

E

=

COMPS

E = 0 Object file is generated in normal binary code rather than as COMPASS line
images.
The E option conflicts with the B, C, GO, OL, TS, and Q options.
/pi&\

60497800

D

10-3

jjP&V

EL ERROR LEVEL (Appendix B)
EL= A

(Default: EL = I)

Lists diagnostics indicating all non-ANSI usages, as well as fatal diagnostics; lists
informative diagnostics if compiling under OPT = 0, 1, or 2; lists note and warning
diagnostics if compiling in TS mode.

EL= 1

Lists informative and fatal diagnostics if compiling under OPT = 0, 1, or 2; lists
note, warning, and fatal diagnostics if compiling in TS mode.

EL = N

Lists note, warning, and fatal diagnostics if compiling in TS mode; lists fatal
diagnostics if compiling under OPT =0, 1, or 2.

EL= W

Lists warning and fatal diagnostics if compiling in TS mode; lists fatal diagnostics
if compiling under OPT =0, 1, or 2.

EL - F Lists fatal diagnostics.
ER ERROR RECOVERY

s^s.

/*S*\

(Default: ER if in TS or OPT=0 mode
ER=0 if in OPT=l or 2 mode)

ER

Code is generated for object time reprieve. When this option is selected, any of
the following execution time errors are reprieved: arithmetic mode error, bad
system request in RA + 1, CP or IO time limit exceeded, mass storage limit
exceeded, or an operator drop. When the error occurs within the field length
occupied by the user program, the name of the program unit and number of
the line in which the error occurred are written to the job dayfile and (under
NOS 1 only) the OUTPUT file. (Under OPT=l or 2, the line number might be
approximate, since optimization can rearrange portions of the code.) When the
error occurs outside the user's field length, only the P-register contents are
shown. This option increases the size of object code and should be used only
while a program is being debugged.

ER=0

No code is generated for object time reprieve.

>*ffi^v

G GET SYSTEM TEXT FILE

(Default: G = 0)

G = lfn

Loads the first system text overlay from the sequential binary file, lfn.

G = lfn/ovl

Searches the sequential binary file, lfn, for a system text overlay with the name
ovl and loads the first such overlay encountered.

G

Implies G = SYSTEXT

G= 0

Prevents system text loading from sequential binary file.

/^^\

A maximum of seven system texts can be specified by any combination of the G, S, and C parameters.
This feature is for COMPASS subprograms only.

GO AUTOMATIC EXECUTION (LOAD AND GO)
GO

10-4

y-iC&fcSy

(Default: GO = 0)

Binaiy object file (B option) is loaded and executed at end of compilation; file is
not rewound before compilation.
60497800 E

GO = 0 Binary object file is not loaded and executed.
The GO option conflicts with the Q, E, and B = 0 options.
I

SOURCE

FILE

(Default:

I

=

INPUT)

I = lfn Source code to be compiled appears on file lfn. Compilation ends when an end
of section, end of partition, or end of information is encountered.

/S^\

I
f^

INPUT

L

LIST

Implies

OUTPUT

I

=

FILE

COMPILE
(SECTION

12)

(Default:

L

=

OUTPUT)

L = lfn Listable output (specified by list control options BL, EL, OL, R, and SL) is to be
f ^ - w r i t t e n o n t o fi l e l f n . I f l i s t c o n t r o l o p t i o n s a r e n o t s p e c i fi e d , t h e l i s t i n g c o n s i s t s
of the source program, informative and fatal diagnostics, and a short reference
map.
t

L

Implies

L

=

OUTPUT

^ ^ ^ ^ L = 0 F a t a l d i a g n o s t i c s a n d t h e s t a t e m e n t t h a t c a u s e d t h e m a r e l i s t e d o n t h e fi l e
\ ' ' O U T P U T. A l l o t h e r c o m p i l e - t i m e o u t p u t , i n c l u d i n g i n t e r m i x e d C O M PA S S , i s
suppressed. List control options are ignored.

r* LCM LEVEL 2 AND LEVEL 3 STORAGE ACCESS1" (Default: LCM = D)
LCM = D Direct mode: selects 17-bit address mode for level 2§ or 3 data. This method
produces more efficient code for accessing data ssigned to level 2 or 3. User
LCM, ECS, or UEM field length must not exceed 131,071 words. I
LCM = I Indirect mode: selects 21-bit address mode for level 2^ or 3 data. This mode
depends heavily upon indirect addressing. LCM = I must be specified if the
execution LCM, ECS, or UEM field length exceeds 131,071 words. I
LCM

Implies

LCM

=

D

In TS mode, all LCM addressing is done in 21-bit mode, regardless of the LCM parameter.
ML

MODLEVEL

(Default:

ML)

ML = nnn Specifies nnn as the value of the MODLEVEL micro used by COMPASS, nnn
consists of 1 to 7 letters and digits.
ML Uses current date in the form yyddd (where yy is the year and ddd is the number
of day within the year) for the MODLEVEL micro.

0$x\

OL

OBJECT

LIST

(SECTION

14)

(Default:

OL

=

0)

OL Generated object code is listed on the list output file.
OL = 0 Object code is not listed.
The OL option conflicts with the Q and E options.

J^See LEVEL statement, section 3, for further information.
§ Applies only to Control Data CYBER 170 Model 176, CYBER 170 800 Series, CYBER 70 Model 76,
and 7600 computers.
60497800

J

10-5

OPT

O P T I M I Z AT I O N

PA R A M E T E R

(SECTION

11 )

(Default:

OPT

=

1)

*1

OPT = 0 Fast compilation (automatically activates T and ER options).
OPT

=

1

Standard

optimization

^

OPT = 2 Maximum optimization
OPT

Implies

OPT

=

2

^S

The OPT option conflicts with the TS and SEQ options.
P

PA G I N AT I O N

(Default:

P

=

0)

^

P Page numbering of output listing is continuous from subprogram to subprogram,
including
intermixed
C O M PA S S
output.
P = 0 Page numbers begin at 1 for each subprogram.
|

PD

PRINT

DENSITY

(Default:

job

^^\

default)

***)

PD = 6 Compile time listings are produced at a density of six lines per inch.
PD = 8 Compile time listings are produced at a density of eight lines per inch. ^^)
PD

Implies

PD

=

8.

returned
job default
finished. upon entry. If print density is changed from job default, it will be
I The job
defaulttoprint
densitywhen
is assumed
/CS*\

PL

PRINT

LIMIT

(Default:

PL

=

5000)

PL = n n is the maximum number of records (print lines) that can be written at execution
time to the file OUTPUT. Under NOS/BE 1 and SCOPE 2, n must not exceed J
ten characters. If n is suffixed with the letter B, it is interpreted as an octal
number and must not exceed 777 777 777B; otherwise, it is interpreted as a
decimal number and must not exceed 9 999 999 999. ")
Under NOS 1, n must not exceed seven characters. The maximum value is therefore
777
777B
if
octal
or
9
999
999
if
decimal.
The PL parameter is operative only when appearing on an FTN control statement
used
to
compile
a
main
program.

^

'*m%

The print limit (specified at compilation-time either explicitly or by default) can
be overridden at execution-time by a parameter of the same format appearing on /S%
the LGO or EXECUTE control card; see Execution Control Statement, section 15.
PMD

POST

MORTEM

DUMP

(Default:

PMD

=

0)

^

PMD This parameter must be specified if the Post Mortem Dump Facility is to be used.
Symbol tables are written to separate files that are accessed by the Post Mortem -*s|sv
Dump Facility so that a symbolic analysis of error conditions, variable names and
values, and traceback information can be written to an output file.
PMD
=
0
No
symbol
table
fi l e s
are
generated.
**m)
I

PS

PA G E

SIZE

(Default:

job

default)

_ PS = n n is the maximum number of lines per page for compiler listings (including headers).
I
If
n
<
4,
the
default
value
is
used.
10-6

60497800

J

^_

0bH™\

P W P A G E W I D T H ( D e f a u l t : P W = j o b d e f a u l t i f a p r i n t e r o u t p u t fi l e |
ypsv

PW

=

72

PW

Implies

if
PW

a
=

terminal

output

fi l e )

72

\ P W = n n i s t h e n u m b e r o f c h a r a c t e r s o n a l i n e o f l i s t a b l e o u t p u t . Va l u e s l e s s t h a n 5 0
or greater than 136 are diagnosed and ignored.
( Tlie PW option is valid only with TS mode.

f^

Q

PROGRAM

V E R I F I C AT I O N

(Default:

Q

=

0)

^k\ Q Quick mode: compiler performs full syntactic scan of the program, but no object
\ code is produced. No code addresses are provided if a reference map is requested.
This mode is substantially faster than a normal compilation; but it must not be
selected if the program is to be executed.
Q = 0 Normal compilation.
f^ The Q option conflicts with the B, C, GO, OL, TS, and E options.
0**

R

SYMBOLIC
R

REFERENCE
=

0

No

MAP

(SECTION

13)

(Default:

R

=

1)

map

R = ■ Short map (symbols, addresses, properties, DO loop map)
/fp\ R = 2 Long map (short map plus references by line number)
R = 3 Long map plus listing of common block members and equivalence classes
0$$sg\

R

Implies

R

=

2

In TS mode, R = 3 is identical to R = 2; common and equivalence classes are not listed.

R O U N D R O U N D E D A R I T H M E T I C C O M P U TAT I O N S ( D e f a u l t : R O U N D = 0 )
ROUND = op op is any combination of the arithmetic operators + - * / specified with no
separators. Single precision real and complex floating point arithmetic operations
are performed using the hardware rounding feature, as described in the various
computer systems reference manuals.
/S$&£\

ROUND = 0 Computation is not rounded.
ROUND Implies ROUND = + - * /
The ROUND option controls only the in-line object code compiled for arithmetic expressions; it does
not affect computations by library subprograms or input/output routines.

60497800
/"K\

J

10-7

S SYSTEM TEXT (LIBRARY) FILE (Default: S = SYSTEXT if G parameter = 0
S = 0 if G parameter is other than G = 0) 1
S = o v l S y s t e m t e x t o v e r l a y, o v l , i s l o a d e d f r o m t h e j o b ' s c u r r e n t l i b r a r y s e t . ^ ^
S = lib/ovl System text overlay, ovl, is loaded from the user library file or system library, lib.
S = 0 S y s t e m t e x t fi l e i s n o t l o a d e d w h e n C O M PA S S i s c a l l e d t o a s s e m b l e a n y i n t e r - }
mixed COMPASS programs.
S

Implies

S

=

SYSTEXT

^

This feature is for COMPASS subprograms only. Up to seven system texts can be specified by repeating
(his
option.

SEQ

SEQUENCED

INPUT

(SECTION

11 )

(Default:

SEQ

=

)

0)

SEQ Source input file is in sequenced line format.

/*~^l\

SEQ = 0 Source input file is in standard FORTRAN format.
Specifying the SEQ option automatically activates the TS option; sequenced line format is not recognized
in optimizing mode or by COMPASS. The SEQ option conflicts with the OPT option.
SL

SOURCE

LIST

(SECTION

12)

(Default:

SL)

SL Source program is listed on the file specified by the L parameter.
SL = 0 Source program is not listed.
S TAT I C S TAT I C L O A D I N G ( N O S 1 , N O S / B E 1 o n l y ) ( D e f a u l t : S TAT I C = 0 )
STATIC Inhibits dynamic memory management at execution time by CRM. The compiler
generates a set of LDSET,USE directives specifying each of the capsules needed by
the program. The specified library programs are then statically loaded. STATIC
is required for any program that dynamically extends blank common.

/ « N

STATIC = 0 No special LDSET directives are generated and CRM uses dynamic memory
management at execution time. This option results in a decrease in field length
needed at execution time.
SYSEDIT

SYSTEM

EDITING

(Default:

SYSEDIT

=

0)

/**

SYSEDIT All input/output references are accomplished indirectly through a table search at
object time. File names are not entry points in the main program, and subpro- -«r\
grams do not produce external references to the file name.
SYSEDIT = 0 Input/output references are accomplished directly; file names are used as entry ^bn
points in the main program, and subprograms produce external references to the
file name.

10-8

60497800

D

This option is used when building libraries that contain more than one relocatable main program. It is
ralso necessary when4 compiling
subroutines containing input/output references to files declared in COBOL
or 5 programs.
/^v

T

ERROR

TRACEBACK

(Default:

T

=

0)

T Full error traceback occurs when an error is detected. Calls to basic external
|#*v functions are made with call-by-name sequence (section 17).
T = 0 No traceback occurs when an error is detected. Calls to basic external functions
, # * n a r e m a d e w i t h t h e m o r e e f fi c i e n t c a l l - b y - v a l u e s e q u e n c e . A s a v i n g i n m e m o r y
space and execution time is realized.
0®* This option is provided to assist in debugging programs. Selecting the D parameter or OPT=0 auto
matically activates the T option. Only the execution-time errors listed in appendix B are traced.
C*

TS

TIMESHARING

MODE

(SECTION

11 )

(Default:

OPT

=

1)

'0 i e
& x\ pTeSn sIen ot ifm e -xsehcaur it ni og n msopdeee, dc oam
n pd i l afi tei o
l dn lsepnegetdh . a nT di mfiee- lsdh al er ni ng gt h maor ed eo pi st i mpi rzee fde raat b lt e
het o
the optimizing compilation modes (OPT = 0, 1, or 2) for the debugging stages of
r a p r o g r a m . S p e c i f y i n g o p t i o n stitutes
T S taofatal
g e tcontrol
h e r statement
w i t h o perror.
tion C, D, E, Q, or OPT con
/$>$$$\

UO

UNSAFE

O P T I M I Z AT I O N

(SECTION

11 )

(Default:

UO

=

0)

UO Allows the compiler to perform certain optimizations which are potentially unsafe.
UO is ignored unless OPT = 2 is also specified.
UO = 0 Unsafe optimization is not performed.
X
J0~£>\

EXTERNAL

TEXT

NAME

(Default:

X

=

OLDPL)

X = lfn File lfn is source of external text (XTEXT) when location field of XTEXT pseudo
instruction is blank. Only one X parameter may be specified.
X

Implies

X

=

OPL.

This feature is for COMPASS subprograms only.

Z

ZERO

PA R A M E T E R

(Default:

Z

=

0)

Z All subroutine calls having no parameters are forced to pass a parameter list con
sisting of a zero word. This feature is useful to COMPASS-coded subroutines
expecting a variable number of parameters. Z should not be specified unless
necessary, since programs require less memory if Z is omitted.
Z = 0 The zero word parameter list is not passed for calls with no parameters.

60497800

G

10-9

/

DIMENSION

A(20,30,40),

B(20,30,40)

a

DO 10 K= 1,40
DO 10 J = 1, 30
DO 10 I = 1, 20
10A(U,K) = B(U,K)
The number of different variable names in subscript expressions should be minimized.
Example:
/■*S3|V

X = A(I+1,I-1) + A(I-1,I+1)
is more efficient than:
IP1 = 1+1
IM1 = 1-1
X = A(IP1,IM1) + A(IM1,IP1)
3. The use of EQUIVALENCE statements should be avoided, especially those including simple variables
and arrays in the same equivalence class.
4. Common blocks should not be used as a scratch storage area for simple variables.
5. Program logic should be kept simple and straightforward; program unit length should be less than
about 600 executable statements.
6. The use of dummy arguments (formal parameters) and variable dimensions should be avoided
if possible; common or local variables should be used instead.

11 - 4

60497800

A

7. The first n-1 dimensions of an n-dimensional array should be either a non-negative power of 2
or the sum or difference of two non-negative powers of 2.
8. Recurrent expressions should be grouped so that they can be recognized for optimization.
Example:
AA = X*A/Y
BB = X*B/Y
is less efficient than
AA = A*(X/Y)
BB = B*(X/Y)

/PN

Likewise, invariant and constant expressions should be grouped appropriately.
Example:
DO 10 I = 1,50
10B(I)= 1. + A(I) + X

0Ss<

is less efficient than
DO 10 I = 1, 50
10B(I) = (1. + X) + A(I)
Example:
f

X

=

1024.

*

B

*

3.14159

is less efficient than
X = (1024. * 3.14159) * B
f^ 9. Multiple references to a basic external function within a statement should be algebraically reduced
to a single reference.
Example:
Y = ALOG(A) + ALOG(B)

08\

is less efficient than
Y = ALOG(A*B)

^ S \

60497800

F

11 - 5

10. In a small summation loop, it is better to use a temporary variable to keep the sum than to reference
an
array
element
d i r e c t l y.

'*ss*\

Example:

100

DO 100 K = 1,N
S
C(I,J) = S

is

=

S

+

more

A(I,K)

*

e f fi c i e n t

B(K,J)

than

^

/fSj\

C(I,J) = 0
DO100K=l,N
100 C(I,J) = C(I,J) + A(I,K) * B(K,J)

^

TIME-SHARING

MODE

^

When the TS option is specified on the FTN control statement, FORTRAN Extended operates in time-sharing
(TS) mode. Compilation is one-pass; therefore, no overlay reloading is required to compile multiple program "l
units, and the number of disk accesses is reduced. The minimum compilation field length is 40000 octal. The
CPU time spent in compilation is 30% to 75% less than that for optimizing mode (OPT=0, OPT=l, or OPT=2).
The object code is not highly optimized and thus executes approximately at the rate of that produced by ^
OPT=0.
Time-sharing mode is permissive in that it accepts some keyword misspellings and punctuation errors. When /
this occurs, a warning level diagnostic is issued, since the program may not compile under optimizing mode.
Misspelled keywords will be recognized if the string length matches the keyword length, the first four characters "**)
match, and the context is unambiguous.
For

example,

/Si^

COMMUN A(2)
will be recognized as a COMMON declaration and a warning diagnostic will be issued. However,
COMMUNC(I)

=

2+1

^

will be correctly interpreted as a replacement statement or a statement function definition, depending on
whether
or
not
COMMUNC
was
previously
dimensioned.

-*^

Some punctuation errors which do not inhibit the compiler from correctly interpreting a statement will be
accepted.

^*\

For example, in
/«%
DO 10, I = 1,10
the first comma will be diagnosed and ignored.

11 ~ 6

60497800

C

/0>\

TS LISTINGS
{ Listings in time-sharing mode differ from those produced in optimizing mode. These differences are described
in section 12 (Compiler listings) and under Cross Reference Map (section 13), Diagnostics (Appendix B), and
^ Object Code (section 14).

_ SEQUENCED
0m\

LINE

F O R M AT

When time-sharing mode is selected for program compilation, a FORTRAN Extended program may be coded in
sequenced line format instead of in the standard format described in section 1. If the source code is in se{ quenced line format, the option SEQ must be specified on the FTN control statement.
The format for sequenced line coding is as follows:
seqnum d si stat
f* seqnum Sequence number consisting of 1-5 digits, assigned in ascending order
0^s
(
f^

,
Any

d

blank

/-,'...,.

(+

other

First

line

of

a

statement

\
I
l ii m
n em e d i a t>e l y
. following
/ sequence number

1C o n t i n cu oa lt ui omnn

character

Comment

line

)

si Optional statement label consisting of 1-5 digits.
stat FORTRAN source statement; may begin anywhere after d and continue through column
80
Example:
(^

00100

PROGRAM XYZ (OUTPUT)
00110C COMPUTE AREA
00120 DIMENSION A(100), B(100),

f ^ 0 0 1 4000 1 13 00 + C A L L C (S2U0 B0 () A , B , C , 1 0 0 )
1
0^

00160

00150 STOP
END

/**^^.

60497800

B

11 - 7

"

)

^ %

1

~

/#*^

COMPILER

LISTINGS

12

rThe listings produced
by FORTRAN
Extended
during
compilation The
are types
affected
by control
statement
options
(the defaults
are SL, EL=I,
OL=0, R=l,
and L=OUTPUT).
of listings
produced,
and the control
statement options that influence them, are as follows:
j**fP^>

C Source listing Includes all source lines submitted for compilation as part of the source input file.
Determined by SL control statement option.
\ Diagnostics Includes informative, note, warning, ANSI, and fatal diagnostics, as determined by
the EL control statement option (see Appendix B). Fatal diagnostics cannot be
suppressed.

^^

C"

14).

Object code Includes generated object code, listed as assembly language instructions (see section
Selected by OL control statement option.
Reference Map Includes compiler assigned locations, as well as other attributes, of all symbolic
names, statement labels, and other program entities in each program unit (see section
13). Determined by R control statement option.

The file to which listings are written is determined by the L control statement option; specifying L=0 sup! presses all listings except fatal diagnostics (which are then written to OUTPUT).
^Sjs^ The formats of the listings produced are also influenced by the compilation mode (time-sharing or optimizing),
f and by the presence of listing control directives (C/ directives), discussed below.

f* OPTIMIZING MODE LISTINGS
/$P\

In optimizing mode, a header line at the top of each page of compiler output contains the program unit type
and name, the computer used to compile and the target computer for which the compiler was assembled,
some of the control statement options, compiler version and mod-level, date, time, and page number.

y The source program is listed 60 lines per page (including headers), unless a different value is specified by the PS
control statement option. Every fifth source line is numbered. These numbers are used in the error messages and
in the cross reference map.
/pS\

Diagnostics are collected and listed at the end of each program unit (subprogram or main program). Listed with
each diagnostic is the line number of the source line during the processing of which the error was detected, as
well as possible information in the DETAILS column relating to the nature of the error, and the severity level of
the error. Diagnostic format is explained fully in Appendix B.
Object code listings, if selected, are collected and listed together at the end of each program unit. Object listing
format is described in section 14. Cross reference listing format for optimizing mode compilation is described in
section 13.

60497800

B

12-1

TIME-SHARING MODE LISTINGS
.x^y

Time-sharing mode listings differ from optimizing mode listings in several ways. A diagnostic is listed on
the listing file immediately after the source line that caused detection of the error. Object listings, when
requested by the OL control statement option, are interspersed with the source code.
When the page width (PW) parameter on the FTN control statement is less than 126, the output listing is
reformatted so that source statements and error messages fit within the specified limits. Source statements
break at the maximum line length and resume in the tenth printed column with »» in columns three
through six. Error messages break at the nearest blank with the second line flagged the same as source state
ments.
Any listing made on a file connected to a terminal with no page width specified automatically has a line length
of 72 characters (the PW default for files connected to terminals).
If PW is greater than or equal to 126 (either by default or by specific setting), the header line is identical to
that produced in optimizing mode. If PW is less than 126, the header line is split into two lines.

y<^V

LISTING CONTROL DIRECTIVES
LIST directives permit control over the listings produced by the EL (error level), OL (object listing), R (refer
ence map), and SL (source listing) options selected on the FTN control statement. The LIST directives affect
only the program unit in which they appear. Options are controlled only if they have been selected by the FTN
control statement or by default; LIST directives cannot produce a listing for an option that was not selected.
The format of LIST directives is:

fi

LIST.option

C/

must appear in columns 1 and 2 with columns 3 through 6 blank

option

NONE stops source program listing and can suppress the other listings
ALL resumes source program listing

LIST, option appears anywhere within columns 7 through 72. Leading, trailing, and embedded blanks
are allowed; continuation is not permitted.

/^\

Statements that have a C/ in columns 1 and 2 but do not conform to the directive format are processed as
comments with no diagnostic issued. A LIST directive cannot be combined with another statement through
a $ separator. A LIST directive within a continuation sequence causes a fatal diagnostic to be issued. Direc
tives can appear in a C$ debug deck.
LIST,NONE stops source program listing. The directive itself is listed but subsequent source lines, including
additional JJST,NONE directives, are not listed. However, when UST,NONE is the first physical line of a
program unit, neither it nor the page header is listed.

12-2

60497800 B
<<3r!5\

LIST,ALL resumes source program listing beginning with the directive itself. The listing will be restarted
immediately regardless of the number of preceding LIST,NONE directives. If no further LIST,NONE directives
are encountered, any information requested on the FTN control statement that is normally listed following the
END line is listed in full.

jtjp**.

In optimizing mode, if LIST.NONE is active when an END statement is encountered, no reference map or
object listing is output and no diagnostic summary appears unless the program unit contained at least one fatal
error. If fatal errors are detected, the incorrect statements are listed as well as a complete diagnostic sum
mary with errors of all levels requested by the EL control statement parameter.
In time-sharing mode, LIST,NONE inhibits listing of interspersed blocks of object code requested by the OL
parameter. Any requested reference map is not listed if LIST,NONE is active when an END statement is
encountered. Diagnostics, and the statements causing them, are listed together even if LIST,NONE is active.

/ fl N

Example 1:
If the R=3 (long reference map) control statement option is chosen and LIST,NONE is active for 90
lines of the 150-line source program, 60 lines of the source program are listed but map information is
accumulated for all 150 lines. The complete map is listed unless LIST,NONE is active when the END
statement is encountered.
Example 2:
Assume the following program is compiled with TS, EL=A, and R=3 options:

C/
C/
C/
C/
100
C/

PROGRAM P
COMMENT
LIST.NONE
COMMENT
DIMENSION A(l
INTEGER B/C
LISTtALL
00 100 1 = 19 10
A(I>=0.
LfST.NONE
RETURN

END

60497800

A

12-3

Since IIST,NONE is active when the END statement is encountered, no reference map is produced.
listing
output
is:
1
ANSI

PRO-AM
P
0/ nOM-iEMT
S TAT E M E N T I S N O T O F F I N E O

*

TN

^^

AMSI

C / L I S T, N O N - 7
ft

FATA L

TMTTQpp

*

p./C

frVD5r"TF0 COMMA FOUND
C/
L I S T, A L L

no

100
10
11
ANST
*
NOTE
*

C
R7TIKN
R-TURM

■■ > /

100

A(T)

i

=
=

t»io
0.

^
'

LT S T f N O N F
prj'JPM
IN
MAIS
PROGRAM
ArTS
AS
FMH

1 FORTRAN ^RROR TN o

Example 3:
Assume the program of Example 2 is compiled with EL=A, R=3, and OPT=l options. Listing output is: s^
PROGRAM

c/
c/
c/
100

c/

10

P

74/74

OPT»l

PROGRAM P
COMMENT
LIST.NONE
INTEGER f./C
LIST.ALL
DO 100 1*1*10
A
C I N I T ° U T S T H E VA L U E V I N T O E V E R Y E L
> » > E M F N T O F T H E A R R AY A

0$fc\

0

NE

3B
3B
**B
kB

0^\
F
W
j^

C

AODTT
W

F

F
W

F
F
F
F

INIT

IDENT INIT
L.5
BSS
0
S<30
B2-LEN.
S30
B2+L.0
DO 1 T= 1 ,M
BSS
0
SRO
B2+0+3
1 A(I)= V

TRACE.

5 C
♦ STATEMENT FUNCTION DEFINITION MUST OCCUR
> > > > B E F O R E F I R S T E X E C U TA B L E
* STATEMENT LA1EL IGNORED
ENTRY AODIT
ADDS
THE
VA L U E
V
TO
EVERY
E L F.
> » > M E N T I N A R R AY A
* ENTRY INSIDE OO LOOP IS IGNORED
rQ
L.ll
DO 2 T = 1,M
* INDEX OF OUTER OO REDEFINEO BY CURRENT DO
C/
L I S T, N O N E
10 2 A(I) = A(I) + V
* STATEMENT FUNCTION DEFINITION MUST OCCUR
> > > > B E F O R E F I R S T E X E C U TA B L E
* STATEMENT LABEL IGNORED
C/
L I S T, A L L
END
* S TAT E M E N T L A B E L . 2 R E F E P E N C F D B U T
>>>> NOT DEFINED
* S TAT E M E N T L A B E L . 1 R E F E R E N C E D B U T
>»> NOT DEFINED
* D O L O O P . 1 M O T T E R M I N AT E D B E F O R E E N D
>>» OF PROGRAM
* D O L O O P . 2 N O T T E R M I N AT E D B E F O R E E N D
>>>> OF PROGRAM

The error messages result from the omission of a DIMENSION statement for the array A. No object code is
produced for statements following the statement in which the first fatal error occurs. Between the LIST,
NONE directive and the LIST,ALL directive, only statements causing error messages are listed.

60497800

B

12-5

r)

^

s%

^

0
^

0^f\

CROSS

REFERENCE

MAP

13

The cross reference map is a dictionary of all programmer created symbols appearing in a program unit, with
the properties of each symbol and references to each symbol listed by source line number. The symbol names
are grouped by class and listed alphabetically within the groups. The reference map follows the source listing
of the program and the diagnostics.

OPTIMIZING COMPILATION MODE
The kind of reference map produced is determined by the R option on the FTN control statement.
/*"S"\

R = 0 No map
R = 1 Short map (symbols, addresses, properties, and a DO loop map)
R = 2 Long map (short map plus references by line number)
R = 3 Long map and printout of common block members and equivalence classes
R Implies R = 2
If R is not specified, the default option is R = 1; however, L = 0 forces R = 0. :
Fatal errors in the source program will cause certain parts of the map to be suppressed, incomplete, or inaccurate. Fatal
to execution (FE) and fatal to compilation (FC) errors will cause the DO-loop map to be suppressed, and assigned ad
dresses will be different; symbol references may not be accumulated for statements containing syntax errors.
For the long map, it may be necessary to increase field length by lOOO(octal).
The number of references that can be accumulated and sorted for mapping is: field length minus 20000 (octal)
minus 4 times the number of symbols. For example, in a source program containing 1000 (decimal) symbols,
approximately 8000 (decimal) references can be accumulated with a field length of 50000 octal.
Examples from the cross-reference map produced by the program which follows are interspersed with the general
format discussions.
The source program and the reference maps produced for both R = 1 and R = 3 follow. A complete set of maps for
R = 2 is not included, but samples are shown with the discussion.

J$#^*\

0$^\

60497800

A

13_1

SOURCE PROGRAM
Main Program

to

is

MAPS 00b
PROGRAM MAPS
HAPS 00*
1SIZE-m
HAPS 033
D021M.M
HAPS 034
K«22-l
HAPS 035
L(K)»l
HAPS 036
HAPS 037
D01J3K.21
L(J)»L(J)»L(J»1)
HAPS 038
PRINT3.(L(J)*J'K.22)
HAPS 039
FORMAT(2216)
HAPS 040
RETURN
HAPS 041
ENO
HAPS 042

/ f fi ^

13-2

60497800 A

R=1 MAPS
SYMBOLIC REFERENCE HAP (R«l)
ENTRY POINTS
4111 MAPS
VA R I A B L E S S N TYPE
4176 SIZEl
INTEGER
4175 STKAV
INTEGER
4177 S2
INTEGER
FILE NAMES
0 INPUT

RELOCATION

MODE

EXTEhNALS
NOHEAO

2041
TYPE

4177 SIZE2
41/6 SI

•UNOEF

FMT

OUTPUT

INTEGER
INTEGER

0

ARGS
1

TAPES

NAHE

2041 TAPE6

NAHE

PASCAL

NAMEL1STS
PARANS
STATEMENT LABELS
4153 1 FMT

4166

STATISTICS
PROGRAM LENGTH
BUFFER LENGTH

j«JK\

75B
4103B

BLOCK DATA

2

FMT

0 100

INACTIVE

61
2115

74/74 OPT«l

FTN 4.4»»EL.

02/?e/7S 09.32.57.

PAGE

FTN 4.4.oFL.

02/?8/75 09.32.57.

PAGE

SYMBOLIC REFERENCE HAP (R>1)
VARIABLES
0 X

SN TYPE
INTEGER

COMMON BLOCKS
ANARRAY

RELOCATION
ARRAY ANARRAY

LENGTH
22

STATISTICS
PROGRAM LENGTH
CM LABELEO COMMON LENGTH
SUBROUTINE. PASCAL

OB
268

22

74/74 OPT"!

SYMBOLIC REFERENCE MAP (R«l)

0$^\

ENTRY POINTS
27 NOHEAU
VARIABLES
11 5 I
117 K
116 H
FILE NAMES
OUTPUT

3 PASCAL
SN TYPE
INTEGER
INTEGER
INTEGER

RELOCATION
INTEGER
INTEGER ARRAY ANARRAY
INTEGER
F, P,

MODE
FMT

INLINE FUNCTIONS TYPE
MAXO INTEGER

ARGS
0 INTR1N

MINO

STATEMENT LABELS
0 1
76
4
FMT
LOOPS LABEL INDEX
21
I
44
2
I
52
1
J
COMMON BLOCKS
ANARRAY

120 J
0 L
0 SIZE

INTEGER 0 INTRIN

0 2
FROM-TO
44
9 14
12 13

LENGTH
4B
24B
3B

11 3

PROPERTIES
EXT REFS
EXT REFS
INSTACK

3

FHT

NOT INNER

LENGTH
22

STATISTICS
PROGRAH LENGTH 123b
CM LABELEO COMMON LENGTH 26B

83
22

0S\

60497800 F

13-3

R=2/R=3 MAPS
SYMBOLIC REFERENCE MAP |R>3>
OFF LINE
1

ENTRY POINTS
41)1 HAPS

REFERENCES

TYPE

VARIABLES
•176 SI7FI
4177 St7E2
♦ ITS STRAY
4176 SI
4 I 7 T S2

RELOCATION

integer

REFS
REFS
REFS
REFS
REFS

INTEGER
INTEGER
INTEGER
INTEGER

FILE NAMES

OEFINEO
DCFINEO
/"53S,

MODE

o Input

204! OUTPUT
0 TAPES
?04l TAPFA

FMT
NAME
NAME

WRITES
HEADS
WRITES

EXTERNALS
NOMEAD
PASCAL

ARCS

NAMELiST*
PAUAMS

OFF LINE
5

REFERENCES
T

STATEMENT LABELS
4IS3
1
FMT
4166
2
FMT
0 100
INACTIVE
COUtV CLASSES
SIZEl
SI7E2

REFERENCES
14
II

I

LENGTH
I
I

OL'F LINE
10
13
T

HEFERFNCES
'9
12

MEMBERS •BIAS NAME'LENGTH!
0
Si
III
0
S2
Ul

STATISTICS
PROGRAM LENGTH
BU*TER LENOTH

TSB
4103R

BLOCK OATA

omitted from R=2 map

61
21 IS

74/74 OPT-1

FTN

4.4.REL.

02/28/75

09.36.38.

PA G E

2

SYMBOLIC REFERENCE MP |R«3I
VARIABLES
0 X

SN TYPE
INTEGER

RELOCATION
ARRAY ANARRAY

COMMON BLOCKS LENGTH
A N A R R AY 2 2

REFS

t

PROGRAM LENGTH
CN LABCLCO COMMON LENOTH

lUHHOUtJNE PASCAL

26B

3

DCFINEO

4

omitted from R=2 map

MEMBERS - BIAS NAKEILCNOTHl
t a .1221

M

T«/7* \

EMTRY POINTS
27 NOHEAD

PASCAL

andR=3:
ENTRY POINTS
27 NOHEAO
3 PASCAL

OEF LINE
7
1

. REFERENCES
16

r
60497800 A

13-5

VARIABLES
Variable names include local and COMMON variables and arrays, formal parameters, RETURNS names, and for
FUNCTION subprograms, the defined function name when used as a variable. The format of this map is:
VA R I A B L E S
addr
name

SN
TYPE
R E L O C AT I O N
*
type
prop
block
refs

addr Relative address assigned to variable name. If name is a member of a COMMON block,
addr is relative to the start of block.
name Variable name as it appears in FORTRAN source listing. Variables are listed in alphabeti
cal order.
* SN = stray name flag. (No entry appears under SN when R=l is specified.) Variable names
that appear only once in a subprogram are indicated by * under the SN headline.
Such variable names are likely keypunch errors, misspellings, etc. In the long map,
DO loops where the index variable is not referenced cause the index variable to
be flagged as a stray name.
type LOGICAL, INTEGER, REAL, COMPLEX, or DOUBLE.
Gives the arithmetic mode associated with the variable name. RETURNS appears if name
is
a
RETURNS
formal
parameter.

/ssv

prop Properties associated with variable name and printed by keywords in this column:
♦UNDEF Variable name has not been defined. A variable is defined if any of the
following conditions holds:
name appears in a COMMON or DATA statement,
is equivalenced to a variable that is defined,
appears on the left side of an assignment statement at the outermost
parenthesis level,
is the index variable in a DO loop,
appears as a stand-alone actual parameter in a subroutine or function
call,
appears in an input list (READ, BUFFERIN, etc.).
Otherwise, the variable is considered undefined; however variables which
are used (in arithmetic expressions, etc.) before they are defined (by an
a s s i g n m e n t s t a t e m e n t o r s u b p r o g r a m c a l l ) a r e n o t fl a g g e d . / S ^ \
ARRAY Variable name is dimensioned.
♦UNUSED name is an unused formal parameter.
block Name of COMMON block in which variable name appears. If blank, name is a local variable. <*%\
/ / indicates name is in blank COMMON.
FJP. indicates name is a formal parameter.

^s^S

13-6

60497800

A

refs

(Does not appear in short map, R=l.)
References and definitions associated with variable name are listed by line number, begin
ning with the following in-line subheadings:
REFS All appearances of name in declarative statements or statements where the
value of name is used.
DEFINED All appearances of name where its value may be altered such as in DATA,
ASSIGN, READ, ENCODE, or DECODE, BUFFER IN, assignment state
ments, or as a DO loop index.
IO REFS All appearances of name in use as a variable file name in I/O statements.

r

R=l: This map form uses a double column format to conserve space. Headings appear only on the first columns.
VARIABLES
US I
117 K
116 H

SN TYPE
INTEGER
INTEGER
INTEGER

RELOCATION

SN TYPE
INTEGER
INTEGER
INTEGER
Ir-HbLH
INTEGER
INTEGER

RELOCATION

120 J
0 L

INTEGER
INTEGER
INTEGER

o size

ARRAY

ANARRAY
F. P.

R=2 and R=3:

0^\

VARIABLES
IIS
120
117
0
116
0 SIZE

F.P.

REFS
REFS
REFS
REFS
REFS
REFS

3-M3
II
2
9

10
14
12
3
DEFINED

DEFINED
OEFINEO
1*
2*»I3

•

12
OEFINEO
14

14
10
DEFINED

13

DEFINED

FILE NAMES
File names include those explicitly defined in the PROGRAM statement as well as those implicitly defined (in
subprograms) through usage in input/output statements. The format of this map is:
FILE NAMES
addr name

MODE
mode refs

addr

Relative address of the file information table (FIT) associated with the file name. The
file's buffer starts at addr+34B This column appears only in main programs (where the
file is actually defined). In subprograms, this column is blank.

name

Name of the file as defined in PROGRAM statement or implied from usage in
input/output statements. For example, in a subprogram, WRITE(2) implies a refer
ence to file TAPE2.

j-jSp&K

60497800 A

13-7

/ ^ s \

mode

refs

Indicates the mode of the file, as implied from it usage. One of the following will be
printed:
FMT Formatted I/O e.g. READ(2,901)
FREE

list Directed I/O READ(2,*)

UNFMT

Unformatted I/O READ(2)

NAME

Namelist Name I/O READ(2,NAMEIN)

BUF

Buffer I/O BUFFER IN(2,0)

MDCED

Some combination of the above.

blank

Mode cannot be determined.

>G&^V

/^ErjjV

(Does not appear in short map, R=l.)
References are divided into three categories by in-line subheadings:
READS followed by list of line numbers referencing file name in input operations.
WRITES line numbers of output operations on file name.
MOTION line numbers of positioning operations (REWIND, BACKSPACE, ENDFILE)
on file name.

R=l:
FILE NAMES
0 INPUT

2041 OUTPUT FMT

2041 TAPE6

NAME

R=2 and R=3:
FILE
0
2041
0
2041

NAMES HOOE
INPUT
OUTPUT FHT
TA P E S N A M E
TA P E 6 N A M E

WRITES
REAOS
HRITES

When a variable is used as a unit number in an input/output statement the following message is printed:
VARIABLE USED AS FILE NAMES, SEE ABOVE

EXTERNAL REFERENCES
External references include names of functions or subroutines called explicitly from a program or subprogram, as well
as names declared in an EXTERNAL statement. Implicit external references, such as those called by certain FORTRAN
source statements (READ, ENCODE, etc.) are not listed. The format of this map is:
EXTERNALS
name
name

TYPE
type

ARGS
prop

/ ^ H

REFERENCES
refs

External name as it appears in source listing.
j < ^ ^ \

rG&e$\

13-8

60497800 A
0S5$K

type

Applies to externals used as functions. Possible keywords are:
REAL, INTEGER, COMPLEX, DOUBLE, LOGICAL
Gives the arithmetic mode of external function.
NO TYPE No specific arithmetic mode defined.
Applies to certain library functions listed as externals in T mode. (T mode
is implied when OPT=0 or D mode is selected.)
This column will be blank for all externals used as subroutines in CALL statements.
Number of arguments in call to external name.

/"sn

prop

Special properties associated with external name:
F.P name is a formal parameter (applies only for references within a subprogram).
LIBRARY name is a library function called by value. In T compile modes, no LIBRARY
entries appear since all references to library functions (SIN, COS, etc.) will be
by name. (OPT=0 or D mode automatically implies T mode.)

refs

Line number on which name is referenced. (Does not appear in short map, R=l.)

R=l:
EXTERNALS
NOKEAD

TYPE

ARGS
1

TYPE

ARGS
1
1

:=2andR=3:
EXTERNALS
NOHEAO
PASCAL

REFERENCES
14
11

INLINE FUNCTIONS
Inline functions include names of intrinsic and statement functions appearing in the subprogram. The subtitle line is:
INLINE FUNCTIONS
name
0Ss.

TYPE
mode

ARGS
args

DEF

LINE

ftype

def

REFERENCES
refs

name

Symbol name as it appears in the listing.

mode

Arithmetic mode, NO TYPE means no conversion in mixed mode expressions.

args

Number of arguments with which the function is referenced. For functions with a
variable number of arguments (such as MAX, AND, etc.) 0 is shown.

ftype

INTRIN Intrinsic function.
SF Statement function.

def

Blank for intrinsic functions; the definition line for statement functions.

refs

Lines on which function is referenced.

60497800 C
j-|pi\

13-9

R=l:
INLINE FUNCTIONS TYPE ARGS
MAXO INTEGER 0 INTRIN

INTEGER 0 INTRIN

R=2andR=3:
INLINE FUNCTIONS TYPE ARGS OEF LINE REFERENCES
MAX9
INTEGER
0
INTRIN
S
NINO
INTEGER
0
INTRIN
8

NAMELISTS
NAMELISTS
name

DEF LINE
def

REFERENCES
refs
y*^-V

name

Namelist group name as defined in FORTRAN source.

def

Line on which namelist is defined. \

refs

Line numbers of references to name.

(Does not appear in short map.)
^*sVfV

R=l:
NAMELISTS
PAR4HS

R=2 and R=3:
NAMELISTS OEF LINE REFERENCES
PA R A H S
S
7

8

STATEMENT LABELS
The statement label map includes all statement labels defined in the program or subprogram. The format of this map
is:
STATEMENT LABELS
addr
label

type

DEF LINE
act

def

REFERENCE
refs

addr

Relative address assigned to statement label. Inactive labels will have addr zero. Ter
minal statements of a DO loop also will have addr zero (unless referenced as the
object of a transfer of control). 400 000 will be shown if no address is assigned;
usually, a fatal error occurred and the final phase of compilation did not take place.

label

Statement label from FORTRAN source program. Statement labels are listed in nu
merical order.

type

One of the following keywords:
FMT Statement label is a FORMAT statement.
UNDEF Statement label is undefined, refs lists all references to this unde
fined label.
blank Statement label appears on a valid executable statement.

13-10

60497800 A

yfSSN

act

One of the following keywords:
INACTIVE label is considered inactive. It may have been deleted by optimization.
Inactive labels will have addr zero.
NO REFS label is not referenced by any statements. This label may be removed
safely from the FORTRAN source program.
blank label is active or referenced.

def

Line number on which label was defined. (Does not appear in short map.)

refs

Line numbers on which label was referenced. (Does not appear in short map.)

R=l:
STATEMENT LABELS
0 1
76
4
FHT

1IJ 3

R=2 and R=3:
00&\

STATEMENT LABELS
0 1
0 2
11 3
3
FHT
76
4
FHT

OEF LINE REFERENCES
13
12
14
9
15
14
5
4

DO LOOPS
The DO-loop map includes all DO loops as well as implied DO loops not in DATA statements that appear in
the program and lists their properties. This map is suppressed if fatal errors have been detected in the source
program or if Q was specified on the FTN control statement. Loops are listed in order of appearance in the
program. The format of this map is:
LOOPS

fwa

LABEL
term

INDEX
index

FROM-TO
first-last

LENGTH

len

PROPERTIES
prop

fwa

Relative address assigned to the start of loop body.

term

Statement label defined as end of loop, or blank for implied DO loops in input/output
statements.

index

Variable name used as control index for loop, as defined by DO statement.

first-last

Line numbers of the first and last statements of the loop.

60497800 E

13-11

len

Number of words generated for the body of the loop (octal).

prop

Various keywords might appear, describing optimization properties of the loop:
OPT Loop has been optimized.
INST ACK Loop fits into instruction stack (less than or equal to 1% or 10 § words);
likely to run two to three times as fast as a comparable loop that does
not fit into the stack.
EXT REFS Loop not optimized because it contains references to an external subprogram,
or it is the implied loop of an input/output statement.

/£$$\

ENTRIES Loop not optimized because it contains entries from outside its range.
NOT INNER Loop not optimized because it is not the innermost loop in a nest.
EXITS Loop not optimized because it contains references to statement labels outside
its range.

/S""\

R=1,R=2, and R=3:
LOOPS LABEL INDEX
20
I
43
2
I
52
1
J

FROM-TO LENGTH PROPERTIES
4
4B
EXT
REFS
9
14
208
EXT
REFS
NOT
12
13
28
I N S TA C K

INNER

xV^v

COMMON BLOCKS
The common block map lists common blocks and their members as defined in the source program. The format of this
map is:

>c^^v

COMMON BLOCKS LENGTH MEMBER - BIAS NAME(LENGTH)
block
storage
Wen
bias
member
(size)
type
block Common block name as defined in COMMON statement.
/ / represents blank common.
storage type Hardware type of storage device where the block is located: ECS, LCM, or blank
(blank indicates CM or SCM).
Wen Total length of block in decimal.

* Applies only to Control Data CYBER 70 Model 74 and 6600 computers.
§ Applies only to Control Data CYBER 70 Model 76, CYBER 170 Models 175 and 176, and 7600 computers.

13-12

60497800 F
r*Z^L

If the long map is specified (R=3) the following details are printed for each member of each block:
bias Relative position of member in block; in decimal, gives the distance from the block origin.
member Variable name defined as a member of block.
size Number of words allocated for member.
Only variables defined as members of a common block explicitly by a COMMON statement are listed in this map.
Variables which become implicit members of a common block by EQUIVALENCE statements are listed in the EQUIV
CLASS map and the variable map.
R=l and R=2:
COMMON BLOCKS LENGTH
A N A R R AY 2 2

R=3:
COMMON BLOCKS LENGTH MEMBERS - BIAS NAME(LENGTH)
A N A R R AY
22
01
<22>

EQUIVALENCE CLASSES
This map appears only when R=3 is selected. All members of an equivalence class of variables explicitly equated in
EQUIVALENCE statements are listed. Variables added through linkage to common blocks are not included. The
format of the map is:
EQUIV CLASSES LENGTH MEMBERS - BIAS NAME (LENGTH)
cbase base clen bias member (size)

0$S\

cbase

Common base. A variable name appears here if the equivalence class is in a common block.
In such a case, cbase is the variable name of the first member in that common block.
*UNDEF Indicates this class is in error because more than one member is in common
or the origin of the block is extended by equivalence.

base

If the class is local (not in a common block), base is the name of the variable with the lowest
address. If the class is in a common block, base is the name of the variable in that common
block to which other variables were linked through an EQUIVALENCE statement.

clen

Number of words allocated for base (considered the class length).
Position of member relative to base; bias is in decimal.

member

Variable name defined as a member of an equivalence class. (Members having the same bias
which are associated with the same base and thus occupy the same locations.)

size Size of member as defined by DIMENSION, etc.
R=3 only:
/#^S

EQUIV CLASSES
SIZEl
SIZE2

60497800 E
/SS*\

LENGTH MEMBERS - BIAS NAME (LENGTH!
1
9
SI
(II
1
0
S2
(IJ

13-13

PROGRAM STATISTICS
At the end of the reference map, the statistics are printed in octal and decimal. The format is:
S TAT I S T I C S

^

PROGRAM LENGTH Length of program including code, storage for local variables, arrays, constants,
temporaries, etc., but excluding buffers and common blocks. *^\
BUFFER LENGTH Total space occupied by input/output buffers and file information table.
0$$$\

CM LABELED Total length of common, excluding blank common, in CM/SCM and
COMMON LENGTH ECS/LCM. Maximum of two entries.
BLANK COMMON Length of blank common in CM/SCM or ECS/LCM.
R=l, R=2, and R=3:

0&wO\

STATISTICS
PROGRAM LENGTH 1238 S3
CH LABELEO COMMON LENGTH 268 22

ERROR MESSAGES
The following error messages are printed if sufficient storage is not available:
CANT SORT THE SYMBOL TABLE INCREASE FL BY NNNB
or
REFERENCES

AFTER

LINE

NNN

LOST

INCREASE

FL

BY

NNNB

'

DEBUGGING (USING THE REFERENCE MAP)
New Program:
The reference map can be used to find names thai have been punched incorrectly as well as other items that will not *
show up as compilation errors. The basic technique consists of using the compiler as a verifier and correcting the FE
errors
until
the
program
compiles.
/tS^>^
Using the listing, the R=3 reference map, and the original flowcharts, the following information should be checked by
the
programmer:

^i^
)

Names incorrectly punched
Stray

name

fl a g

in

the

variable

map

Functions that should be arrays

1
,*G5v

Functions that should be inline instead of external

i^^^V

13-14

60497800

A

f" '

Variables or functions with incorrect type
j?P^V

Unreferenced format statements
[

Unused

formal

parameters

Ordering of members in common blocks
Equivalence classes
(^

Existing

Program:

The reference map can be used to understand the structure of an existing program. Questions concerning the loop
(^ structure, external references, common blocks, arrays, equivalence classes, input/output operations, and so forth, can
be answered by checking the reference map.

1

TIME-SHARING

MODE

/P^n In TS mode, the reference map appears immediately following the source listing of the program (regardless of the
BL control statement parameter). Line length of the listing is determined by the PW control statement parameter.
The kind of reference map produced is determined by the R option on the FTN control statement:
R=0 No map
R=l Short map (symbols, addresses, properties)
xSBSv

R=2)

f^ > Long map (short map plus references by page and line number)
.gpsy

R

Implies

R=2

If R is omitted, an R=l map is produced (unless L=0 is specified on the FTN control statement).
\ On the following pages appear examples of a short and a long map. Portions of these maps appear in the sub
sequent format discussion.

/*$i^>

60497800

A

13-15

R=1 MAPS
j*"38n

^ll\tDr.rOfJiOrit\l

cutvtMCianmrimtorrmnpttiJt&jT

/^&^V

O Q O O O O O Q O O O O O O O O O

(/Jl/JC/>l/ll/lwl/>*/»e/>lyl"/Jl/ll/lt/>'/>*/>
o.o.a.a.o.a.o.o-o.o.a.a.a.o.a.a.0.
<- n _J
« Vt «x
Of Z 7

k< hacitrujar
>-o;>
z ff f f
1 2 2 X Z
SHU1UJU.

fl)

O

>«%.

CO

•

j/^Sv

-I

«r or «
c l i l O O
X I f vt
< O Z3*t
-1 -IT Z O OL

4HJMH

<\J

—

*

un\
•«)
—
-h
ii
in
f>-tiz
o
+">
<:.
ZII
I
II
II
It
f
«
Of

t/unrrif
ifHHN.T-rTS
orif-XfHft'fHf- x'mivjs^th-ji-io'i-o
3 z g or o c\, z ii c ii •- © «- a o i^ z
IDHUailMllIIO^JOJO
iLtfUl

z z z
»-• or or
Of UJ Ul

cr. <» cd
.-I C\J CM

j«SX
,_, |_i |_! |_! | | M

13-16

60497800 B

jfJ^N

R=2, R=3 MAPS

S&Q^S

l O N O O , O H r \ I K l < t i r i l t l N a > 0 > O r l ( U
C M C v j c v j M M i o r o i o f O f j r j w i o w j ' J - *

0 O O O O O O O O O O O O O O Q O
V H AV K A I A d V I H I / I I A i n l A m l O I / I I A ' / )

aa.ao.aa.aa.aa.a.a.a.ao.a.&
xxxxxxxxxxxx
xxxxx
Vt

o

o ui o  IO «M -i

X CO CO G O

X

j- fo th k> cr

J- J-

L'

G

II

O

II

4

bl

X

X

x x u ■ «a
J - J - fl

fl

-i -a _j _j

« l-f _J CO f-l

fl II
+ -I
fl . 4 I I O
CLCUCHO

o


fl

_i -> «c

+ •- fH
ft — -J CM
CM -) «» l\J

>-

J Jfl

hhj-

3
i-o
z
vin

cr cr cr> cr
c *£S CM CM
j
o
ffl

N.
r fi

l\

_l
ui uj or
X X X
Ui UJ Ul
cr co
vC «=
*c

fi

c o u. u.

•X t-

*

60497800 B

_J

X

oa
uo
X Z X I AY /
ENTRY POINTS
This map lists names of program units, names appearing in ENTRY statements, and (for a main program) all
file names defined in the PROGRAM statement. The format is:
- - ENTRY POINTS - addr name
addr Relative address (in octal) of the entry point in the program unit,
name Entry point name as defined in source program.
R=l, R=2, R=3:

— ENTRY POINTS —
16R

MOHFAH

668

PA S C A L

EXTERNAL REFERENCES
External references include names of functions or subroutines called explicitly from a program or subprogram,
names declared in an EXTERNAL statement, and external references generated by the compiler. The format of
this map is:
- - EXTERNALS - name
name Name of routine externally referenced.

13-18

60497800

B
j^^V

R=l, R=2, R=3:
—EXTEPNALS-O U T C I . O U T C R . O U T P U T:

STATEMENT LABELS
This map includes all statement labels defined in the program or subprogram. The format is:
/0^\

- - STATEMENT LABELS - label properties addr references
label

Statement label, preceded by a period. Labels are listed in ascending numerical order.

properties

Properties as follows:
F label references a format statement.
D label references a terminal statement of a DO loop.
I label is inactive (never referenced by transfer or input/output statement).
blank None of the above properties.

addr

Relative address (in octal) assigned to this label. Some inactive labels will have an
addr of zero.

references

Line number and type of reference to statement label, References do not appear in
the short map (R=l). The type can be:
L
D
R
W
F
A
blank

label appears in label field.
label referenced in a DO statement.
label referenced in a READ statement.
label referenced in a WRITE or PRINT statement.
label referenced in a FORMAT statement.
label referenced in an ASSIGN statement.
Any other reference.

R=l:
/$S\
—STATEMENT L49ELS—
.1

TO

oa

.2

10

102B

72 B

R=2, R=3:
•STATEMENT LABELS —
.1
.2
.3
.«.

60497800 B

TO
10
c
F

OR
uC9
121B
CB / A N A R PAY /
1?2B
INTRINSIC
INTRINSIC
1 6 B FNTRY
EXTERNAL.

">?.

t* c
12 C
10 =
2 n
8 =

' u w
13'
11
3
9

S
S
0
C

13
12
11

10
13 S
1* C
13

1<4

14 S

13

13 =

<\ A

9
7

c

l* W

1<* w

/sSS\

60497800 C

13-21

!<♦H

" >

n

^

^

^

^

OBJECT CODE

J0^\

/SP*x

14

The structure of the object code produced by FORTRAN Extended differs depending on whether the com
piler is operating in time-sharing mode (TS control statement option) or optimizing mode (OPT=0, 1, 2
control statement option). The format of the object code listing (if selected by the OL control statement
option) also differs.
Both compilation modes produce object code in units called blocks (see the COMPASS Reference Manual).
These blocks include not only the code produced by compilation of the executable statements in the user's
program, but also storage for variables, constants, and compiler-generated temporary entities, as well as other
special purpose areas. The names of these blocks, as well as their exact contents, differ between the two
compilation modes.
Also discussed in this section is the arrangement in memory of user code, library routines, and common blocks
after the program is loaded.

OPTIMIZING MODE
The following description of the arrangement of code and data within main program, subroutine and function
program units does not include the arrangement of data within common blocks because this arrangement is
specified by the programmer. However, the diagram of a typical memory layout later in this section illustrates
the position of blank common and labeled common blocks.

SUBROUTINE AND FUNCTION STRUCTURE
The code within subprograms is arranged in the following blocks (relocation bases) in the order given.

/fl^N

START.

Code for the primary entry and for saving AO

VARDIM.

Address substitution code and any variable dimension initialization code

ENTRY.

Either a full word of NO's (46000.. . 46000B) or no storage used for this block

CODE.

Code generated by compiling:
Executable statements
Parameter lists for external procedure references within the current procedure
Storage for compiler-generated temporary entities

0^\

DATA.

Storage for simple variables, FORMAT statements, and program constants

DATA..

Storage for arrays other than those in common

0$$£\,

60497800 A

14-1

HOL Storage for Hollerith constants
formal parameters One local block for each dummy argument in the same order as they appear in
the FUNCTION or SUBROUTINE statement, to hold tables used in address sub
stitution for processing references to dummy arguments.

MAIN PROGRAM STRUCTURE
START. Input/output file buffers and a table of file names specified in the PROGRAM
statement
CODE. Transfer address code plus the code specified for the subroutine and function
CODE, block
DATA. I
DATA.. > Same as SUBROUTINE and FUNCTION structure
HOL. J

RENAMING CONVENTIONS
In optimizing mode, the names of some programmer defined and system supplied entities are changed so as
to prevent ambiguity for the assembler.

REGISTER NAMES
The compiler changes some legal FORTRAN names so that FORTRAN object code can be used as assembler
input. When a two-character name begins with A, B, or X and the last character is 0 to 7, the compiler
adds a dollar sign ($) to the name for the object code listing. (A0-A7, B0-B7, and X0-X7 represent registers
that might be used by the FORTRAN Extended compiler.)
X-^ff^V

EXTERNAL PROCEDURE NAMES
The name of a system supplied external procedure called by value is suffixed with a decimal point. The
entry point is the symbolic name of the external procedure and a decimal point suffix. For example, EXP.
COS. CSQRT. The names of all external procedures called by value are listed in table 8-2 (Basic External ^
Functions). A procedure is not called by value and the name is not suffixed with a decimal point if it
appears either in an EXTERNAL statement or an overriding type statement, or if option T, D, or OPT=0 is
s p e c i fi e d
on
the
FTN
control
statement.
^
The call-by-name entry point is the symbolic name of the external procedure with no suffix. External
procedures called by name appear in section 8 (Utility Subprograms). Any name which appears in table 8-1 ^
(Intrinsic Functions) or table 8-2 (Basic External Functions) is called by name if it appears in an EXTERNAL
statement or in an overriding type statement; those listed as Basic External Functions are also called by name
i f o p t i o n T , D , o r O P T = 0 i s s p e c i fi e d o n t h e F T N c o n t r o l s t a t e m e n t . ^

14-2

60497800 A

LISTING FORMAT
If object code is listed when the compiler is in optimizing mode, the code produced for each program
unit is listed following the reference map (if any) for that program unit. If a IIST,NONE directive is in
effect when the END line for that program unit is compiled, no object code is listed. Otherwise, the object
code for the entire unit is listed, including code generated for lines that fall between LIST.NONE and
LIST,ALL directives.

TIME-SHARING MODE
The following blocks are used in the object code generated by the compiler operating in time-sharing mode
for both main programs and subprograms.

/"sS^S.

0$\

CODE

Code resulting from compilation of executable statements, and parameter list for
current subprogram (not used in main programs)

LITERAL

Storage for constants of all kinds

FORMAT

Compressed versions of FORMAT declarations (interpreted at execution time)

TEMP

Compiler-generated temporary entities

ARG

Argument lists for external subprograms called in this program unit

NAMELIST

Argument lists for calls to NAMELIST input/output

VARIABLE

Storage for variables and arrays not declared in common or in ECS/LCM

BUFFER

Input/output buffers

LISTING FORMAT
When the compiler is in time-sharing mode, generated object code lines are grouped and listed immediately
following the source lines that produced them. The number of lines listed at any one time is usually less
than a program unit. If a LIST,NONE directive is in effect at the time that the compiler would normally
list a group of object code, the entire group is not listed. Conversely, if no UST,NONE directive is in effect
at such a time, the entire group of object code is listed, even if some of the object lines were generated by
source lines whose listing has been suppressed by intervening LIST.NONE directives. Therefore, the object
code listed does not always correspond exactly to the source code listed when LIST,NONE directives are
present in the program unit. The compiler in time-sharing mode always uses the FORTRAN Extended inter
nal assembler to assemble generated object code.
In time-sharing mode, some of the generated object code lines are not listed, in order to make the listing
easier to read. However, all the lines generated from executable statements in the source program are listed.

60497800 D
/T^N

14-3

r\

1

^

E X E C U T I O N C O N T R O L S TAT E M E N T 1 5
0^.
Optional parameters can be included on the control statement that calls into execution a program compiled
by FORTRAN Extended. This control statement is normally either the name of the file to which the binary
object code was written (LGO is the default) or an EXECUTE card specifying the name of the main entry
point of the program (the name used on the PROGRAM statement or START, if the PROGRAM statement
was omitted). The parameters that can be included on this control statement are of several kinds:
alternate file names, print limit specification (PL), and Post Mortem Dump output and subscript limit
specifications.

ALTERNATE FILE NAME SPECIFICATION
The file names specified on the PROGRAM statement (INPUT, OUTPUT if the PROGRAM statement is
omitted) are compiled into an internal file table within the body of the main program. The address of this
table is passed to Q2NTRY (FTNRP2 if ER is specified on the FORTRAN control statement) at execution
time.
The logical file name that appears in the file information table is determined in one of three ways:
1. If no file names are specified on the execution control statement, the logical file name is the file
name in the PROGRAM statement.
Example:
FTN.
LGO.

PROGRAM TEST1 (INPUT,OUTPUT,TAPEl,TAPE2)
Contents of internal file table before execution of
Q2NTRY:
000... 017
Contents of internal file table and following The logical file names in the file information
addresses after execution of Q2NTRY: table will be:
I N P U T. . .
fi t
O U T P U T. .
fi t
TA P E 1 . . .
fi t
TA P E 2
...
fi t

address
address
address
address

INPUT
OUTPUT
TA P E 1
TA P E 2

2. If the file names are specified on the execution control statement, the logical file name is the name
specified there. A one-to-one correspondence exists between parameters on this statement and
parameters in the PROGRAM statement.
The user should ensure that no two file information tables have the same logical file name after this
process.

60497800

G

15-1

j£^V

PRINT LIMIT SPECIFICATION
A parameter can be specified on the execution control statement to regulate the maximum number of
records that can be written at execution-time on the file OUTPUT. This parameter has the same form as
the PL parameter specified at compilation-time on the FTN control statement. If specified on the
execution control statement, it overrides the value specified either explicity or by default at
compilation-time (section 10). This parameter may appear anywhere in the parameter list; it does not
affect file name substitution.
The print limit parameter (specified either at compilation-time or at execution-time) is operative only on
files with the name OUTPUT in the first word of its corresponding file information table. Thus, if a file
name declared in the PROGRAM statement is superseded at execution-time by the file name OUTPUT as
described previously, the print limit parameter will be operative on the original file name. Conversely, if 'y
the file name OUTPUT is superseded at execution-time by another file name, the effect of the print limit
parameter is nullified.
Examples:
LGO(PL=2000)
EXECUTE(,FILE1,OUTPUT,PL=1000,FILE2) FILE2 is placed in internal file table
NOTE
The BACKSPACE, ENDFILE, and REWIND statements
cause the line count for the print limit test to be reset ^%
to zero at that point in the program. For example, if a
program had a PL=100 and 99 lines had been output when
a BACKSPACE command was executed, the output line
count would be reset to zero, allowing an additional 100
lines to be output before the print limit would be
reached.

POST MORTEM DUMP PARAMETERS
Two parameters can be included on the execution control statement to control Post Mortem Dump output ^
and to specify limits on array subscripts.
The PMD output parameter specifies the destination and format of the dump. The parameter appears on /•*■*>.
the
execution
control
statement
in
the
following
format:
*
*OP=list
The option list consists of one or more of the following, not separated by separators:
A Causes variables in all active routines to be included in the dump. An active routine is one that ^j^
has been executed but is not necessarily in the traceback chain. j
F Causes a full dump to be written to the file PMDUMP when the job is executed with the file
O U T P U T c o n n e c t e d . T h i s o p t i o n i s v a l i d f o r i n t e r a c t i v e j o b s o n l y. ^
T Causes a condensed form of the dump to be displayed at the terminal. File OUTPUT must be
connected. This option is valid for interactive jobs only.
If the *OP parameter is omitted, dumps are sent to file PMDUMP when the job is executed from a terminal
with file OUTPUT connected.

15-2

60497800

G

Example:
f

LGO(*OP=AF)

The PMD subscript limit parameter controls the printing of arrays by PMD. This parameter has the same
f^- effect as a CALL PMDARRY in a source program. The parameter appears on the execution control
statement in one of the following formats:
>P"N

DA=i
*DA=i+j

0s*

r

*DA=i+j+k
In these formats, i, j, and k represent integers that specify the maximum values of the subscripts of arrays
to be printed. The integers specified for i, j, and k apply to the first, second, and third dimensions,
r e s p e c t i v e l y.
Example:
LGO(*DA=2+5)

/**S^N

DIMENSION RAY(20,20)
As a result of these statements, PMD will print the following elements of the array RAY:
RAY(1,1),
RAY(1,2),
RAY(1,3),
RAY(1,4),
RAY(1,5),

60497800

RAY(2,1)
RAY(2,2)
RAY(2,3)
RAY(2,4)
RAY(2,5)

G

15-3

.1

^

I N P U T / O U T P U T I M P L E M E N TAT I O N 1 6

This section describes the structure of files read and written by FORTRAN Extended. All files read and written
as a result of user requests at execution time are processed through CYBER Record Manager. The files read and
written at compile time by the compiler itself (including source input, coded output and binary output) are
processed by SCOPE 2 Record Manager when compilation is under SCOPE 2, and by operating system routines
when compilation is under NOS 1 or NOS/BE 1.
ifsjpSV

EXECUTION-TIME INPUT/OUTPUT
All input and output between a file referenced in a FORTRAN Extended program and the file storage device
is under control of Record Manager. The version of Record Manager used depends on the operating system:
NOS 1 and NOS/BE 1 use CYBER Record Manager Basic Access Methods Version 1.5 (BAM), encom
passing sequential and word addressable file organizations, for standard input/output statements, and
CYBER Record Manager Advanced Access Methods Version 2 (AAM) for indexed sequential, direct access, and
actual key file organizations, and multiple index capability, through the CYBER Record Manager interface routines.
SCOPE 2 uses the SCOPE 2 Record Manager for all input/output.
In this manual, the term CRM refers to features supported under BAM and AAM, but not under the
SCOPE 2 Record Manager.
These versions of Record Manager normally appear the same to FORTRAN users; however, they do offer
substantially different capabilities. Standard file organizations and record formats are defined to facilitate file
interchange and access through different products.
CYBER Record Manager can be called directly, as described in section 8, to use the extended file structure- and
processing available. SCOPE 2 Record Manager cannot be called directly. This section deals only with Record
Manager processing that results from standard language use.
File processing is governed by values compiled into the file information table (FIT) for each file.

0^\

If a file or its FIT is changed by other than standard FORTRAN input/output statements, subsequent
FORTRAN input/output to that file may not function correctly. Thus, it is recommended that the user not
try to use both standard FORTRAN and non-standard input/output on the same file within a program.

FILE AND RECORD DEFINITIONS
^ A file is a collection of records referenced by its logical file name. It begins at beginning of information and
ends with end of information.
/*f*v

I A record is data created or processed by:
r O n e e x e c u t i o nOne
o f card
a n image
u n f o ror
ma
a tprint
t e d line
R Edefined
A D o rwithin
W Ra
I Tformatted,
E.
list directed, or NAMELIST READ or WRITE.
_ One call to READMS or WRITMS.
■ O n e e x e c u t i o n o f B U F F E R I N o r B U F F E R O U T.
0s^\

\

60497800

D

16-1

On storage, a file may have records in one of 8 formats (record types) defined to Record Manager. Only 4
of these are part of standard processing:
Z Record is terminated by a 12-bit zero byte in the low order byte position of a 60-bit word.
W Record length is contained in a control word prefixed to the record by Record Manager.
U Record length is defined by the user.
S System logical record.
The remaining types can be formatted within a program under user control and written to a device using a /rfS^
WRITE statement if the FILE control statement is used to specify another record type. Similarly, these
types can be read by a READ statement.
The user is responsible for supplying record length information appropriate to each type before a write and
for determining record end for a read. For example, a D type record requires a field within the record to
specify
record
length.

^

Unformatted READ and WRITE are implemented through the GETP and PUTP macros of Record Manager;
consequently, record operations must conform to macro restrictions. Specifically, RT=R and RT=Z cannot be "^
specified for unformatted operations.
STRUCTURE OF INPUT/OUTPUT FILES
FORTRAN Extended sets certain values in the file information table depending on the nature of the input/ ^^s
output operation and its associated file structure. Table 16-1 lists these values for their respective FIT fields;
all except those marked with an asterisk (*) can be overridden at execution-time by a FILE control statement. (Numbers in parentheses refer to notes listed following the table.)
SEQUENTIAL FILES

/^^X

The following information is valid, unless the FIT field is overridden by a FILE control statement.
With READ and WRITE statements, the record type (RT) depends on whether the access is formatted or unfor- /
matted. A formatted WRITE produces RT=Z records, with each record terminated by a system-supplied zero
byte in the low order bits of the last word in the record. An unformatted WRITE produces RT=W records, in /S_
which each record is prefixed by a system-supplied control word. Blocking is type C for formatted and I for un- >
formatted records. The files named INPUT, OUTPUT, and PUNCH always have record type Z and block type C
,These files should only be processed by formatted, list-directed, and namelist input/output statements.
With READ and WRITE statements, the record type is W for all file types; blocking is I for tape files, and un
blocked for all other files.
PRINT and PUNCH statements produce Z? type records with C type blocks or W§ type records unblocked ,/^)
for processing on unit record equipment.
BUFFER IN and BUFFER OUT assume S* -type or W§ -type records. Formatting is determined by the '
parity designator in each BUFFER statement. An unformatted operation does not convert character codes
during tape reading or writing (CM=NO), while a formatted operation does. /^N

* Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2.
16-2

60497800

D

TABLE 16-1. DEFAULTS FOR FIT FIELDS UNDER FORTRAN EXTENDED

FIT Fields
Meaning
CIO buffer size (words)

Mnemonic
(OBFS*

Fm
oredt,at N
&
,S
A
M
T
E
ILD
e
-srL
e
ctid W
R
E
T
A
D
R
/I

U
m
o
ern
dftat R
W
E
T
A
D
/R
I

B
U
F
E
R
N
/IR
E
F
U
B
O
U
T

O
p
I/up
tut
M
a
g
esa
o
rS
tn

2002B

2002B

2002B

2002B

Block type

BT

C*/(9)§

I:j:/(9)§

C*/(9)§

n/a

Close flag (positioning of file after
close)

CF

N*

N*

N*

N*/R§*

Length in characters of record trailer
count field (T type records only)

CL

Conversion mode

CM

Beginning character position of
trailer count field, numbered from
zero (T type records only)

CP

Length field (D type records) or
trailer count field (T type records)
is binary

Cl*

Type of information to be
listed in dayfile

DFC

Type of information to be
listed on error file

EFC

Error options

EO

Trivial error limit

ERL

Length in characters of an F or Z
type record (same as MRL)

n/a
YES +/NO

NO

(2)

n/a
n/a

NO

NO

NO

n/a

AD

AD

AD

AD

FL

150 (5)*

n/a

n/a

n/a

File organization

FO

SQ *

SQ *

SQ *

WA *

Character length of fixed header for
T type records

HL

Length of user's label area
(number of characters)

(7) LBL

n/a
0*

0 *

0 *

n/a

$ Applies only to NOS 1 and NOS/BE 1
§ Applies only to SCOPE 2.
60497800 G
/p**\

16-3

^■^a
TABLE 16-1. DEFAULTS FOR FIT FIELDS UNDER FORTRAN EXTENDED (Contd)

FIT Fields
Meaning

Mnemonic

e
-srL
e
ctid W
Fo
m
red
ta
,t N
&
,S
A
M
T
E
ILD
R
E
T
A
D
R
/I

R
E
T
A
D
R
/I
U
m
e
o
d
rn
tfat W

B
U
F
E
R
N
/IR
E
F
U
B
O
U
T

M
a
g
e
so
rS
t nO
p
I/utp
uu
tt

(3)

(3)

(3)

(3)

Logical file name

LFN

Length in characters of record
length field (D type records)

LL

n/a

Beginning character position of
record length, numbered from zero
(D type records)

LP

n/a

Label type

(7)LT

ANY

ANY

ANY

n/a

Maximum block length in characters

MBL

n/a

Minimum block length in characters

MNB $

n/a

Minimum record length in characters

MNR X

n/a

Maximum record length in characters
Multiple of characters per K, E type
block
Open flag (positioning of file after
open)

(5) MRL

n/a

223-l

(8)*

MUL t

(7) OF

n/a
n/a

N*

N*

N*

N*/R§*

Padding character for K, E type
blocks

PC t

76B

76B

76B

n/a

Processing direction

PD

IO

IO

IO

IO

Number of records per K type block

RB

n/a
^cess

* Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2.
16-4

60497800 G
/^^s\

TABLE 16-1. DEFAULTS FOR FIT FIELDS UNDER FORTRAN EXTENDED (Contd)

FIT Fields
Mnemonic

Meaning

U
m
e
o
d
rn
tfat W
R
E
T
A
D
R
/I

B
U
F
E
R
N
/IR
E
F
U
B
O
U
T

M
a
g
esa
o
rS
tn
O
p
I/up
tut

n/a

62B

n/a

W (6)

st/w§

Record mark character (R records)

RMK

Record type

RT

Length field (D type records) or
trailer count field (T type records)
has sign overpunch

SB t

NO

NO

NO

n/a

Suppress buffering

SBF *

NO

NO

YES(ll)

NO

Suppress read ahead

SPR

NO

NO

NO

n/a

Character length of trailer portion
of T type records

TL

00$?\,

/$^N

Fo
m
red
ta
,t N
A
&
,S
M
TE
IL D
e
-srL
e
ctid R
E
T
A
D
V
A
R
I

User label processing
End of volume flag (positioning
of file at volume CLOSEM time)

(7) ULP

62B
Z*/W§(10)

n/a
NO

NO

NO

NO

VF

Notes: n/a FIT field not applicable to this input/output mode.
* Default cannot be overridden by a FILE control statement.
(1) Default can be changed by PROGRAM statement. FILE control statement can specify a value
smaller than the value established by the program, but the buffer location remains unchanged.
If BFS=0, Record Manager allocates a new buffer and computes an appropriate length.
(2) Set by parity designator in BUFFER IN or BUFFER OUT statement.
(3) Set by PROGRAM statement or execution control statement (section 15).
(4) Set by Record Manager.
(5) Default can be changed on PROGRAM statement. For formatted, NAMELIST, and list-directed
READ/WRITE statements, a FILE control statement can decrease but not increase the maximum
record length.

/fl^v

(6) Default can be overridden by a FILE control statement only if RT-^R and RT=£Z. For RT=F,
FL must be a multiple of 10.
(7) The LABEL subroutine (section 8) sets LBL=80, LT=ST, OF=R, and ULP=F.
(8) Maximum record length equal to length of record specified in BUFFER IN or BUFFER OUT
statement.
(9) Unblocked if mass storage file; I if tape file.
(10) Default can be overridden by FILE control statement only if RT^U.
(11) On a CYBER 170 Model 176, SBF must be set to NO on a FILE control statement if a level 2 or
3(LCM) variable is used in a buffer statement.
* Applies only to NOS 1 and NOS/BE 1
§Applies only to SCOPE 2.
/s^N

60497800 J

16-5

The ENDFILE statement writes a boundary condition known as an end of partition. When this boundary is
encountered during a read, the EOF function returns end of file status. An end of partition may not neces
sarily coincide with end of information, however, and reading can continue on the same file until end of
information on the file has been encountered.
End of partition is written as the file is closed during program termination. A third boundary for sequential
files, a section, is not recognized during reading except for the special case of the file INPUT.
r * ^ ^ \

MASS STORAGE INPUT/OUTPUT
Files created by the random mass storage routines OPENMS, WRITMS, STINDX, and CLOSMS (described in
section 8) are word addressable files. The master index, which is the last record in the file, is created
and maintained by FORTRAN routines rather than Record Manager routines.
One WRITMS call creates one U^ type record; one READMS call reads one U type record. If the length
specified for a READMS is longer than the actual record, the excess locations in the user area are not changed
by the read. If the record is longer than the length specified for a READMS, the excess words in the record
are skipped.
0H\P®?2\

FILE CONTROL STATEMENT
The FILE control statement provides a means to override FIT field values compiled into a program and con- ""
sequently a means to change processing normally supplied for standard input/output. In particular, it can be
used to read or create a file with a structure that does not conform to the assumptions of default processing.
1.
A FILE control statement can also be used to supplement standard processing. For example, setting DFC can
c h a n g e t h e t y p e o f R e c o r d M a n a g e r i n f o r m a t i o n l i s t e d i n t h e d a y fi l e . ^ ^
At execution time, FILE control statement values are placed in the FIT when the referenced file is opened.
These values have no effect if the execution routines do not use the fields referenced. Furthermore,
FORTRAN routines may, in some cases, reset FIT fields after the FILE control statement is processed. These *^)
fields are noted in Table 16-1.
Format

of

the

FILE

card

is:

FILE(lfn,field=value, ... )

'^S

-**^\

lfn File name as it appears on the execution control statement; if file name does not appear
there, then lfn is file name as it appears in the PROGRAM statement.

y ^ \

field FIT field mnemonic
value Symbolic or integer value

+*wixf\

'Record type W was written through FORTRAN Extended Version 4.2. Existing files with RT=W are recognized
and processed correctly under subsequent versions of FORTRAN Extended without user action.

16-6

60497800

D

The FILE control statement may appear anywhere in the control statements prior to program execution, but it
must not interrupt a load set.
This deck illustrates the use of the FILE control statement to override default values supplied by the
FORTRAN compiler. Assuming the source program is using formatted writes and 100-character records are
always written, the file is written on magnetic tape with even parity, at 800 bpi. No labels are recorded, and
no information is written except that supplied by the user. The following values are used:
Block type = character count
Record type = fixed length
Record length =100 characters
Conversion mode = YES
0k&\

Data Deck

FORTRAN source program

/ l g q .
/ fi l e ( t a p e 1 , b t = c , r t = f , fl = 1 0 0 , c m = y e s )
W REQUEST(TAPE1.MT,HY,VSN=HAVEN)

0i^\

I

L

FTN.

Accounting Statements

Job Statement

0S£\

'As required by the operating system.
"^Format applicable to NOS/BE 1.

60497800 D

16-7

SEQUENTIAL FILE OPERATIONS

BACKSPACE/REWIND

Backspacing on FORTRAN files repositions them so that the previous record becomes the next record.
SBACKSPACE is permitted only for files with F, S, or W record type or tape files with one record per block.
The user should remember that formatted input/output operations can read/write more than one record;
unformatted input/output and BUFFER IN/OUT read/write only one record.
The rewind operation positions a magnetic tape file so that the next FORTRAN input/output operation
references the first record. A mass storage file is positioned to the beginning of information.
The following table details the actions performed prior to positioning.

Condition
Last operation was
WRITE or BUFFER
OUT

Device Type
Mass Storage

Action
Any unwritten blocks for the file are written.
An end-of-partition is written.
If record format is W, a deleted zero length re
cord is written.

Unlabeled Magnetic

Any unwritten blocks for the file are written.

Tape

If record format is W, a deleted zero length re
cord is written.

/^\

Two file marks are written.

Labeled Magnetic

Any unwritten blocks for the file are written.

Tape

If record format is W, a deleted record is written.
A file mark is written.
A single EOF label is written.
Two file marks are written.

* Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2.

16-8

60497800 C

^ \

/$!&\

Condition
Last operation was
WRITE or BUFFER
OUT

Device Type
Mass Storage

Action
ENDFILE is issued.
Any unwritten blocks for the file are written.
End-of-information is flagged in RBT chain.

Unlabeled Magnetic
S or L Tape

ENDFILE is issued.
Any unwritten blocks for the file are written.
Two file marks are written.

Labeled Magnetic
Tape or Unlabeled
System Magnetic
Tape

ENDFILE is issued.
Any unwritten blocks for the file are written.
A tape mark is written.
A single EOF label is written.
Two tape marks are written.

Last operation
was READ,
BUFFER IN or
BACKSPACE

No previous
operation

Mass Storage

None

Unlabeled
Magnetic Tape

None

Labeled
Magnetic Tape

None

§ Magnetic Tape

If the file is assigned to on-line magnetic tape, a
REWIND request is executed.
§ If the file is staged, the REWIND request has no
effect. The file is staged and rewound when it is
first referenced.

§ Mass Storage
$ All Devices
00&S

Previous

REWIND request causes the file to be rewound
when first referenced.
Current REWIND is ignored.

operation was
REWIND

* Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2.
60497800 A

16-9

/*SI&k

ENDFILE

The following table indicates the action taken when an ENDFILE statement is executed. The action depends on
the record and block type, as well as the device on which the file resides.
Device Type
Record Type

W

Other Device

S or L Tape
An end-of-partition flag is written.

An end-of-partition flag is written.

The block is terminated.

The block is terminated with a short
PRU of level 0.

The block is terminated.

The block is terminated with a short
PRU of level 0.

A tape mark is written.

A zero length PRU of level 17 is written.

/5a2$$tu

Other

y^^v

Blocking

Record Type
Blocked
W

An end-of-partition flag is written.

Unblocked
An end-of-partition flag is written.

The block is terminated.

z

If C type blocking, the block is ter
minated. Otherwise, the block is ter
minated and a tape mark recovery
control word is written.

A level 17 PRU is written.

S

If C type blocking, the block is termi
nated with a zero length PRU of level
17. Otherwise, the block is terminated
and a tape mark recovery control word
is written.

Not applicable.

Others on
Mass Storage

The block is terminated.

Others on
Magnetic Tape

The block is terminated.

/^s^\
Ignored.

A tape mark recovery control word is
written.
Not applicable.

A tape mark is written.

$ Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2

16-10

60497800 A

INPUT/OUTPUT RESTRICTIONS
Meaningful results are not guaranteed in the following circumstances:
1. Mixed formatted and unformatted read/write statements and buffer input/output statements on the same
file (without an intervening REWIND, ENDFILE, or without encountering an End of File (EOP) as
determined by the EOF Function).
2. Requesting a LENGTH function or LENGTHX call on a buffer unit before requesting a UNIT function.
3. Two consecutive buffer input/output statements on the same file without the intervening execution of a
UNIT function call.
4. Failing to close a mass storage input/output file with an explicit CLOSMS in an overlay program that is
STATICly. loaded.
5. Writing formatted records on a seven-track S or L tape without specifying CM=NO on a FILE control
statement.
6. Using items in an input/output list after encountering end-of-file in a read.
7. Attempting to write a noise record on an SorL tape. This can occur with block types K and E (and C
for SCOPE 2) using record types F,D,R,T, or U with MNB < noise size.

RECORD MANAGER ERROR SUPPRESSION
For formatted, namelist, and list directed sequential reads (coded), MRL has a default size of 150 characters or
the record length specified in the PROGRAM statement. If the record read from the file exceeds this value,
Record Manager automatically reports an RM142 error condition to the FORTRAN input/output routines and
sends a message to the job dayfile. FORTRAN senses that the RM142 error condition is not fatal to the
execution of the program and allows the program to continue executing. The user should ignore the RM142
error condition in the dayfile.
/$0P\

COMPILE-TIME INPUT/OUTPUT
The compiler expects source input files to have certain characteristics and it produces coded and binary files
which must be structured in specific ways according to the operating system under which it runs. A program
compiled under SCOPE 2 must be executed under control of SCOPE 2; a program compiled under other
operating systems cannot be executed under SCOPE 2. Programs compiled under NOS or NOS/BE can
be executed under either of these operating systems.
Under SCOPE 2, the compiler uses SCOPE 2 Record Manager for all input/output operations. (However, a FILE
control statement should not be used since the compiler overrides file information table settings after this
control statement is processed.) Under the other operating systems, the compiler makes direct calls to the
operating system for input/output; CRM is not used.
The structure of the text files read by the compiler is described in the COMPASS Version 3 reference manual.
SCOPE 2 structure is identified in the tables below by the equivalent SCOPE 2 Record Manager parameters.

60497800

H

1 6 - 11

j^^iv

SOURCE INPUT FILE STRUCTURE
A source input file must have the following structure. Only the first 90 characters of each record are proc
essed or reproduced in the listing output file.

File Characteristics
File organization

NOS/BE 1 and NOS 1

0&>Xmtf\

SCOPE 2

Sequential operating system default
format with file terminated by a
short or zero length PRU

Sequential (FO=SQ) unblocked

Record type

Zero-byte terminated

Control word (RT=W)

Maximum record length

158 characters

158 characters (M R L= 158)

Conversion mode

Not applicable

No (CM=NO)

Label type of tape

Under operating system control

Unlabeled (LT=UL)

a£%M$\

J^^S.

/^^r\

16-12

-<^\
60497800 C

CODED OUTPUT FILE STRUCTURE
Two coded output files may be produced: the listing file and the file of COMPASS line images. Format is
as follows:
File Characteristics
/jJfP^

NOS/BE 1 and NOS 1

SCOPE 2

File organization

Sequential operating system default
format with file terminated by a
short PRU

Sequential (FO=SQ) unblocked

Maximum block length

Not applicable

None

Record type

Zero byte terminated (equivalent to
Record Manager Z type)

Control word (RT=W)

Maximum record length

137 characters

137 characters

Conversion mode

Not applicable

No (CM=NO)

Tape label type

Under operating system control

Unlabeled (LT=UL)

BINARY OUTPUT FILE STRUCTURE
The format of the executable object code file is as follows: (the content of the file differs, depending on the
loader supported by the operating system)
File Characteristics
File organization

NOS/BE 1 and NOS 1
Sequential operating system default
format with file terminated by a
zero length PRU which is then

SCOPE 2
Sequential (FO=SQ) unblocked

backspaced over
Record type

Operating system logical record
(equivalent to Record Manager
S type)

Control word (RT=W)

Maximum record length

None

1,310,710 characters

Conversion mode

Not applicable

No (CM=NO)

Tape label type

Under operating system control

Unlabeled (LT=U)

60497800 D
/$^\

16-13

C O M PA S S S U B P R O G R A M L I N K A G E 1 7

Both subroutines and functions may be written in COMPASS assembly language and called from a FORTRAN
source program. For either, register AO is the only register that must be restored to its initial condition before
the subprogram returns control to the calling routine.
When a FORTRAN generated subprogram is called, the calling routine must not depend on values being preserved
in any registers other than AO.

CALL BY NAME AND CALL BY VALUE
/$P**V

To increase speed, arguments to library functions are normally passed to subprograms by placing their values in
registers. This method is call by value. For user defined subprograms, the addresses of the arguments are passed
to the subprogram. This method is call by name.

0$^s

CALL BY NAME SEQUENCE
The FORTRAN compiler uses the call by name sequence when a subroutine or function name differs from any of
those listed in tables 8-1 and 8-2. Call by name is also used when a listed subroutine or function also appears
in an EXTERNAL or overriding type statement, or (except in the case of intrinsic functions) the program unit
specifies D, T, or OPT=0 on the FTN control statement.
The call by name sequence generated is shown below:
SA1 Address of the argument list (if parameters appear)
The list contains the addresses of the arguments passed to and returned from the subprogram.
+RJ Subprogram name
-VFD 12/line number, 18/trace word address
line number Source line number of statement containing the reference
trace word address Address of the trace word for the calling routine

/*SPS\

Arguments in the call must correspond with the argument usage in the called routine, and they must reside
in the same level.
The argument list consists of consecutive words in the following form followed by a word of binary zeros. The
sign bit will be set in the argument list for any argument entry address that is LCM or ECS.
VFD 60/address of argument
When the RETURNS list form is used, the list of return addresses is located immediately after a word of binary
ones which follows the argument list. The RETURNS list is terminated by a word of binary zeros. The sub
routine accesses the addresses by offsetting the address of the argument list, which is contained in register Al. |
60497800

0$$?&\

J

17-1

CALL

BY

VA L U E

SEQUENCE

**)

For increased efficiency the compiler generates a call by value code sequence for references to library functions if
the function name does not appear in an EXTERNAL or overriding type statement and (in the case of external /rm)
functions only) the D, T, or OPT=0 options on the FTN control statement are not specified. The name of
any library function called by value or generated in line must appear in an EXTERNAL statement in the calling
routine if the call by name calling sequence is required (section 8 lists the library functions called by value and ""^
generated in-line).
The call by value code sequence consists of code to load the arguments into XI through X4, followed by an /^!
RJ instruction to the function. Two registers are used for each double precision or complex argument.

INTERMIXED COMPASS SUBPROGRAMS
Subprograms in COMPASS assembly language can be intermixed with FORTRAN coded subprograms in the "^
source deck. Intermixed COMPASS subprograms must begin with a source line containing the word IDENT
in columns 11 through 15, with columns 1 through 10 blank, and column 16 blank:
1

11

16

IDENT
.•:-:$:-:-:-x-: blank :•:&

:*«

blank

The subprogram ends with any legal COMPASS END line. A COMPASS subprogram cannot interrupt a
FORTRAN program unit; it must be placed after the END line of the FORTRAN program unit and before I
the beginning of the next program unit. A COMPASS subprogram can also be the first or last program
unit in a source deck.
If the COMPASS subprogram changes the value of AO, it must restore the initial contents of AO upon returning ■
control to the calling subprogram. When the COMPASS subprogram is entered by a function reference, the
subprogram must return the function result in X6 or X6 and X7 with the least significant or imaginary part ^
of
the
double
precision
or
complex
result
appearing
in
X7.
•
The COMPASS assembler normally requires the system text SYSTEXT, which is the default for the S param- a
eter. The amount of storage available depends on installation options. Insufficient storage for SYSTEXT >
causes an error. The user may need to specify a larger field length for compilation or a different option for
S. See the COMPASS reference manual and section 10 of this manual for more details on systems texts. ^k
Example:
This example shows a simple COMPASS function and the calling FORTRAN main program. The parity func- /
tion, PF, returns an integer value; therefore it must be declared integer in the calling program. The argument
to
PF
may
be
either
real
or
integer.
^^
The title and comments are unnecessary; they are included to encourage good programming practice. The
following is a recommended convention.
PF

EQ

*+lS17

ENTRY/EXIT

>

This statement causes a jump to 400 000g plus the location of the entry point of the routine if the ^
function is not entered with a return jump. This results in a mode error that can quickly be identified. !
Since AO is not used in this subprogram, it need not be restored.
17-2

60497800

C

Source Deck
job card
MAP(OFF)
FTN(R=0)
LGO.

7/8/9 in column 1.

/ps&*\

POOGPAM NPSAMP(OUTPUT)
INTEGER PF, PVAL(?4)
0011 = 1, 2<*
I P VA L ( I ) = P F ( I )
PPINT?, (1,1 = 1,24) ,P\/AL
? FOPMATHPHOINTEGFRS AND THEIR PARITY RELOW/(2413))
STOP
END
IHENT PF
ENTRY PF
PF
TITLE PF - COMPUTE PARITY OF WORD.
COMMENT
COMPUTE PARITY OF WORD.
PF
SPACE 4,11
Otto
PF - COMPUTE PARITY OF WORD,

man! program

FORTRAN SOURCE CALL —
DARITY = PF (ARG)
PESULT = 1, IFF ARG HAS ODD NUMRF.R OF RITS SET,
= 0, OTHERWISE.

PF

ENTPY
EXIT

(XI) = ADDRESS OF ADGUMENT.
(X6) = RESULT.

FO
SA2
CX3
MXO
PX6
EQ

»*>1S17
Xl-«
X2-«
-1--J

-X0*»X3
PF

E N T P Y / E X I T. . .
get the argument value
count the I bits in X2 and leave result in X3
form a mask in XO

ISOLATE LOWEST & I T-»- put result into X6
E X I T. .

END

6/7/8/9 in column 1.
0K?\

Output
INTEC-EPS /»NC THEIR PARITY BELOW
1 2 3 *■ £ 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2U
1 1 0 1 G 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 G

60497800 A
0Ss

17-3

/

^

y

ENTRY POINT
For subprograms written in FORTRAN, the compiler uses the following conventions in generating code:
The entry point of the subprogram (for reference by an RJ instruction) is preceded by two words. The first is a trace
word for the subprogram; it contains the subprogram name in left justified display code (blank filled) in the upper
42 bits and the subprogram entry address in the lower 18 bits. The second word is used to save the contents of AO
upon entry to the subprogram. The subprogram restores AO upon exit.
Trace word: VFD 42/name, 18/entry address
/GfflKljK

AO

word:

Entry

D ATA

0
point:

D ATA

0

/«%.

RESTRICTIONS ON USING LIBRARY FUNCTION NAMES
Functions written in FORTRAN that have library function names listed in tables 8-1 or 8-2, such as AMAX1 or ^\
SQRT, must be declared EXTERNAL in the calling program unit. This declaration is necessary because the compiler
produced functions always use the call by name calling sequence.
Functions written in COMPASS that have basic external library names listed in table 8-2, such as SQRT, should be
written using the call by name sequence when they are declared EXTERNAL in the calling routine; or they should
use the call by value rules if they are not declared EXTERNAL.
Functions written in COMPASS that have intrinsic library names listed in table 8-1, such as AMAX1, must be
declared EXTERNAL in the calling routine; otherwise in-line coding is generated for them (the COMPASS coding is
ignored). Furthermore, the call by name sequence must be used.
If a library function, called by value, is to be overridden by a routine coded in COMPASS, the COMPASS routine
must use the library function name with a period appended as the entry point name (e.g., SIN.) to use the call by
value calling sequence.
The following sample illustrates the code generated for: a library function call, SQRT; an external function call,
ZEUS; and a reference to an intrinsic (in-line) function, AMAX1.
The coding generated for the external function, ZEUS, is illustrated also.
MAP(OFF)
FTN(H=0.OL)
7/8/9 in column 1

PROGRAM SURLNK
X=SQRT(7.0)
Y=ZEUS(X,1.0)
ENU
FUNCTION 7EUS(ARG1,ARG2)
Z£US=AMAX1(APGltARKZtO.)
RETUWN

.«**S8\

END
6/7/8/9 in column 1

!7-4

60497800

A

/P£\

IDENT SUBLNK
USEBLK
LDSET LIB=FORTRAN
USE START.

oooooo
000005
000005
000005
000016
000022
000022

000005

oooooo
oooooo
000O11
000004
000;00

oooooo

EXTERNALS
7EUS

000000 START.
000001 START.
00000? START.

2Q000000000000000003
00000000000000011610

000003 START.
000004 START.

oooooooooooooooooooo

000005 CODE.

5110000000

000016 DATA.
000016 DATA.
000017 DATA.

17227000000000000000
172Q4000000000000000

START.
VAPDIM.
ENTRY.
CODE.
DATA.
DATA..
HOL.

LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
LOCAL

SQRT.

02NTRY.

LIRLNK. BSS OB
LIBLNK 0B.11610B

oooooooooooooooooooo
23250214161355000005

START.
0100000000 

000020 DATA.
000021 OATA.

FILES. BSS OB
DATA 0
TRACE SUBLNK,SUBLNK
USE CODE.
PENTRY SUBLNK*,,0
SA1 LIBLNK.
RJ Q2NTRY.
USE DATA.
USE DATA..
USE DATA.
CON. BSS OB
DATA 172270000000000000003
DATA 17204000000000000000B
END.
EXT
EXT
ZEUS
SORT.
EXT
EXT
Q2NTRY.
BSS IB
BSS IB
USE
CODE.

constant table

source line number

LINE

000006 CODE.
000007 CODE.
000010 CODE.
000011 CODE.
>#S\

00001?
000013
000013
000014
000015

CODE.
CODE.
CODE.
CODE.
CODE.

5110000016

DATA.
0100000000 
5f60000020
OATA.
5110000013 CODE.

OtOOOOOOOOI
0003000004
5160000021
DATA.
5110000004 STARr,
0400000000


SA1
RJ
SA6
SAl
RJT

I API
00000000000000000020 DATA.
00000000000000000017 DATA.

oooooooooooooooooooo

Z.

SA6
SAl
EO
BSS
APL
APL
APL
END

CON.-*

2-

get actual parameter
into XI
get address of parameter
list into Al

parameter address list

SUBLNK

0^^\

60497800 D

17-5

IDENT
ZEUS
USEBLK
LDSET
LIBsFORTRAN
USE START.
y"8§v

OOOOOO
000006
000006
000006
000013
000014
000014
000014
000014

000006

ooonoo
oooooo
OOO-'OS
000001

oooooo
oooooo

oooooo

oooooo

START.
VARDIM.
ENTRY.
CODE.
DATA.
DATA..
HOL.
ARG1
ARG2

LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
LOCAL
LOCAL

FXTERNALS
SPA.

000000
000001
00000?
000003
000004
000005

START.
START.
START.
START.
START.
START.

3P052523555555000004'

oooooooooooooooooooo-

51400000131064446000)
51300000015203000000/
04004000046100046000-*—
74600540105160000001——

000013 DATA.
000006 CODE.

54500
5040000001

000007 CODE.

51240
31032

000010 CODE.

11670

137?3

53350

21073
13063
22700
000011 CODE.

21773
11670
13760
00001? CODE.
000014 ARG2

040000000?

5170000013 DATA.
START.

USE DATA.
USE START.
TRACE ZEUS.ZEUS.2B

4name of program unit
and entry point address

• cell to save AO in
PENTRY ZEUS .ENTRY.. 1.0 restores A0 0n exit

FORPAR ARG1
FORPAR ARG2
USE DATA..
USE OATA.
SPA.
FXT
VALUE.. BSS IB
USE
«
SAS
SA4
SA3
SA2
FXO
BX7
AXO
BX6
BXO
LX7
AX7
BX6
BX7
SA7
EO
END
z.

.entry point
■saves AO and sets AO
to the new Al

CODE.

LIME

AO
A0*>1B
X5
X4
X3-X2
X2-X3
73B
X7«X0
X6-X3
BO.XO
73B
X7»X0
X6-X0
VALUE
EXIT.

f^$S

V^SlV

17-6

60497800 D

Jp*\

SAMPLE DECK STRUCTURES

18

FORTRAN SOURCE PROGRAM WITH CONTROL STATEMENTS
Refer to the operating system reference manual for details of control statements.

END

7

FORTRAN statements

SUBROUTINE RVIE (C,J,L)

f

L
-

END
FORTRAN statements

FORTRAN
> SOURCE
PROGRAM

FUNCTION RTSM (A,B)

f

END
FORTRAN statements

-r

PROGRAM MAIN

9 /Tax
Accounting statements
Control
Statements

Job statement

f'As applicable for operating system or installation.
/§S\

60497800 D

18-1

jjiCei&K

COMPILATION ONLY

. ^ ^ • k

FORTRAN source deck

z

FTN (Q,EL=A)

Job statement
EL=A- All diagnostics (including
ANSI) listed on file
OUTPUT
Q - Full syntactic error
scan of program

TS MODE COMPILATION ONLY

'A

FORTRAN source deck

/

FTN*f:sfe\

/S^t

FORTRAN COMPILATION WITH COMPASS ASSEMBLY
AND EXECUTION
FORTRAN and COMPASS program unit source decks can be in any order. COMPASS source decks must begin
with a line containing the word IDENTb in columns 11-16. Columns 1-10 of the IDENT line must be blank.

L

data

^^\
COMPASS source deck

JL
(
,/LGO.
( FTN(L,EL=A)
Job statement

FORTRAN source deck

L - Source program and
short reference map
on file OUTPUT
EL=A- All diagnostics (including
ANSI) listed on file
OUTPUT

/«ffi*\

18-4

60497800 A

COMPILE AND EXECUTE WITH FORTRAN SUBROUTINE AND
COMPASS SUBPROGRAM

j

^

\

Data will be written
to OUTPUT rather
than TAPE2.

0^\

/0Ry

60497800 A

18-5

■»t=^\

COMPILE AND PRODUCE BINARY CARDS

^fflSv

source deck

£

PROGRAM BOB(INPUT,OUTPUT,TAPE1)
OPT=2 specifies
full optimization

~^JT
FTN (B=PUNCHB,OPT=2)
/ Job statement

/f^S\

f^^&K

^S^Pv

j«*^\

18-6

60497800 A

LOAD AND EXECUTE BINARY PROGRAM+

data

/*38\

binary deck
/fP\

INPUT.
MAP(OFF)
/ j o b statement

jfjSSi\

jj*Jp!\

'Under NOS 1, a 6/7/9 card, instead of two 7/8/9 cards, must follow the binary deck to signify end-of-input
to the loader.
60497800 D
/iPiN,

18-7

/*s^\

COMPILE AND EXECUTE WITH RELOCATABLE BINARY DECK+

data

7
9

•^*^\

/7

9 A
L
8

binary deck

source deck

/ PROGRAM ALFRED(INPUT,OUTPUT,TAPE1,TAPE5,TAPE6)

\f
/*^$y

EXECUTE.

/*^\

/ LOAD(LGO)
'—/ LOAD(INPUT)

/S*\

FTN.
/ Job statement

>^\

'Under NOS 1, a 6/7/9 card, instead of two 7/8/9 cards, must follow the binary deck to signify end-of-input to
the loader.
18-8

60497800 D

0$s

COMPILE ONCE AND EXECUTE WITH DIFFERENT DATA DECKS

data #2

data #1

f/

/*$i&V

/ PROGRAM SUBS (INPUT,OUTPUT)
Output will be on two
separate files; output
from data #1 will be on
TAPE1, output from
data #2 on TAPE2.

FTN.
/ Job Statement

60497800 A

18-9

/*^R'

PREPARATION OF OVERLAYS

/ 6
8

£■
j£

9 f/Data

/**^r#?\

c

END

Secondary Overlay
(1,1)

PROGRAM MLT

Source Deck

OVERLAY(FRANK,1,i;

^
Primary Overlay
(1,0)
Source Deck.

c

END
CALL OVERLAY (5HFRANK,1,1,0)

>£^|\

PROGRAM RDY
OVERLAY(FRANK,1,0)
END
SUBROUTINE GROUCH(X)
END

Main Overlay
(0,0)
Source Deck

/ C A L L O V E R L AY ( 5 H F R A N K , 1 , 0 , 0 ) - 4

\c

CALL GROUCH(40,0)

Call to
Primary Overlay
FRANK 1,0

PROGRAM LEO(INPUT,OUTPUT,TAPE1

y^^v

OVERLAY(FRANK,0,0)

FRANK.
/NOGO.
/LOAD(LGO)
/FTN.

y*^^V

/ J o b statement

18-10

60497800 A

00$&\

00$H£\

COMPILATION AND 2 EXECUTIONS WITH OVERLAYS

9 A
source deck

L

OVERLAY(CH,0,0)

/$^\
C H . ( A B S O L U T E O V E R L AY )
(RELOCATABLE)
FTN(B=X)
/ Job statement

ZfPN

00^\

60497800 A

18-11

/^%

/

^

k

f ^ h

/fR\

SAMPLE

a

PROGRAM

PROGRAMS

19

OUT

Program OUT illustrates the WRITE and PRINT statements.
\

Features:

/•sn Control statements for batch execution
WRITE and PRINT statements
0
' ^\

Carriage

^

PROGRAM

^PN

control
statement

PAT, T 1 0

J The job statement must precede every job. PAT is the job name. T10 specifies a maximum of 10 (octal)
j seconds central processor time.

Specifies the FORTRAN Extended compiler and uses the default parameters, (section 10)

LGO.

f The binary object code is loaded and executed.
If no alternative files are specified on the FTN control statement, the FORTRAN Extended compiler reads
f from the file INPUT and outputs to two files: OUTPUT and LGO. Listings, diagnostics, and maps are output
to OUTPUT and the relocatable object code to LGO.

7/8/9

T The 7/8/9 card separates control statements from the remainder of the job deck (INPUT file). This card
contains a multipunched 7, 8, and 9 in column 1; it follows control statements in every batch job.

60497800

D

19-1

^$t>$K

PROGRAM OUT (OUTPUT,TAPE6=OUTPUT)

The PROGRAM statement identifies the main program by the name OUT and specifies the file OUTPUT.
Logical unit 6 will be referenced in the program. All files used by FORTRAN input/output statements in a
program must be specified in the PROGRAM card of the main program.
TAPE6=OUTPUT is included because unit number 6 is referenced in a WRITE statement. The unit number
will be prefixed by the letters TAPE. All data written to TAPE6 will be placed in the file OUTPUT and
eventually output to the printer.
WRITE (6,200) INK

The WRITE statement outputs the variable INK to TAPE6. If a PRINT statement had been used instead of
WRITE:
PRINT 200, INK

TAPE6=0UTPUT would not be needed in the PROGRAM card; PROGRAM OUT (OUTPUT) would be
sufficient.

100 FORMAT (*1 THIS WILL PRINT AT THE TOP OF A PAGE*)

This FORMAT statement uses * * to delimit the literal. 1 is a carriage control character which causes the
line to be printed at the top of a page.
200 FORMAT (15,* = INK OUTPUT BY WRITE STATEMENT*)
Although the variable INK is 4 digits, a specification of 15 is given because the first character is always inter
preted as carriage control. In this case, the carriage control character is a blank and output will appear on
the next line.

6/7/8/9

I

The 6/7/8/9 card contains the characters 6, 7, 8, and 9 multipunched in column 1. It is the last card in /g-K
e v e r y j o b d e c k ( I N P U T fi l e ) , i n d i c a t i n g t o t h e s y s t e m t h e e n d o f t h i s p a r t i c u l a r j o b . >
y^&sv

^•••ffiN

19-2

60497800

A

Complete Job Deck:

PAT»T10
FTN.
LGO,
7/8/9 in column 1

/ffSEiv

PROGRAM OUT (OUTPUT»TAPE 6=OUTPUT)
PRINT 100
100 FORMAT <»1 THIS WILL PRINT AT THE TOP OF A PAGE*)
INK = 2000+4000
WRITE (6»200) INK
200 FORMAT <>"*2

19-4

60497800

A

PROGRAM MASK
Program MASK reads names and home states, ignoring all but the first two letters of the state name. If the
state name starts with the letters CA, the name is printed.
Feature:
Masking

iifP^N

1 FORMAT (1H1,5X,4HNAME,///)
PRINT 1

The printer is directed to start a new page, print the heading NAME, and skip 3 lines.

/P^N

3 READ 2,LNAME,FNAME,ISTATE,KST0P
IF(KST0P.EQ.1)ST0P

The last name is read into LNAME, first name into FNAME, and home state into ISTATE. The last record con
tains a one which will be read into KSTOP as a stop indicator. The IF statement on line 6 tests for the stop
indicator.

IF((ISTATE.AND.77770000000000000000B).NE.(2HCA.AND.777700000000000
KOOOOOB)) GO TO 3

The relational operator .NE. tests to determine if the first two letters read into variable ISTATE match the two
letters of the Hollerith constant CA. The last eight characters (48 bits) in ISTATE are masked and the two re
maining characters are compared with the word containing the Hollerith constant CA, also similarly masked. If
the bit string forming one word is not identical to the bit string forming the other word, ISTATE is not equal
to CA and the IF statement test is true.
The bit configuration of CALIFORNIA, the Hollerith constant CA and the mask follows:
California
Hollerith
Octal

03

01

14

11

06

17

Bit

000011

000001

001100

001001

000110

001111

22

16

010010 001110

11

01

001001

000001

/*JS\

/3p<=V

60497800 A

19-5

/3gffi\

Constant CA
^SSv

Hollerith

blank

blank

blank

blank

blank

blank

blank

blank

Octal

03

01

55

55

55

55

55

55

55

55

Bit

000011

000001

101101

101101

101101

101101

101101

101101

101101

101101

Octal

77

77

00

00

00

00

00

00

00

00

Bit

111111

111111

^SiX

Mask

oooooo oooooo oooooo oooooo oooooo oooooo oooooo oooooo

When the masking expression (ISTATE.AND.77770000000000000000B) is completed, the first two charac
ters of CALIFORNIA remain the same and last eight characters are zeroed out. The AND operation
follows:
0 0 0 0 11 0 0 0 0 0 1 0 0 11 0 0 0 0 1 0 0 1 0 0 0 11 0 0 0 1111 0 1 0 0 1 0 0 0 111 0 0 0 1 0 0 1 0 0 0 0 0 1

111111 111111 oooooo oooooo oooooo oooooo oooooo oooooo oooooo oooooo
000011 000001 oooooo oooooo oooooo oooooo oooooo oooooo oooooo oooooo

When (2HCA.AND.77770000000000000000B) is evaluated, the same result is obtained. Thus, in both
words, all bits but those forming the first two characters will be masked, making a valid basis for compar
ing the first two characters of both words. If the result of the mask is true, the last name and first name are
printed (statement 10), otherwise the next record is read.
Program:

PKUGNAM MASK (INPUT»UUTPUT)
FOKMAT (lMliSX^HNAMt**///)
PkINT 1
FOKMAT <3A10»I1)
REAU 2*LNAME»FNAME»ISTATE*kST0H
IF (KSTOP.EGl.l)STUP

0*V*$\

C IF FIkST TWO CHARACTERS UF ISTATE NOT EUUAL TO CA K£AD i^tXl CAkij
1F(
NAMELIST/OUTPUT/X,Y,Z,I
X == l .
X
Y=2.
Z*3.

1'k
WRITE(6,0UTPUTI
STOP
ENO

y*tf^£V

/S^V

/•^ftv

19-8

60497800 F

Output:
SOUTPUT
X

=

.2E*0lt

Y

= .2E*01t

Z

= O.Ot

I

= 4»

SEND

PROGRAM COME
Program COME places variables and arrays in common and declares another variable and array equivalent
to the first element in common. It places the numbers 1 through 12 in each element of the array A and
outputs values in common using the NAMELIST statement.
Features:
0^r\

COMMON and EQUIVALENCE statements
NAMELIST statement
C O M M O N A ( l ) , B , C , D , F, G , H

Variables are stored in common in the order of appearance in the COMMON statement A(1),B,C,D,F,G,H.
Variables can be dimensioned in the COMMON statement; and in this instance, A is dimensioned so that it
can be subscripted later in the program. If A were not dimensioned, it could not be used as an array in
statement 1.
I N T E G E R A , B , C , D , E ( 3 , 4 ) , F, H
00$*\

All variables with the exception of G are declared integer. G is implicitly typed real.

EQUIVALENCE(A,E,I)

The EQUIVALENCE statement assigns the first element of the arrays A and E and an integer variable I to
the same storage location. Since A is in common, E and I will be in common. Variables and array elements
are assigned storage as follows:

/&>V

60497800

A

19-9

Relative
Address 0

+1

+2

+3

E12.1)

E(3.1)

E(1,2)

+4

+5

+6

E(2,2)

E(3,2)

E{1,3)

+7

+8

+9

+10

+ 11

I
EI1.1)

E(2,3)

E(3,3)

E(1,4)

E(2.4)

E(3,4)

A(1)

/!^S

A{2)

A(3)

A<4>

A(5)

A(6)

A(7)

A(8)

A(9)

A(10)

A(11)

A(12)

DO 1 J=l,12
1 A(J)=J

>U3Sv

The DO loop places values 1 through 12 in array A. The first element of array A shares the same storage
location with the first element of array E. Since B is equivalent to E(2,l), A(2) is equivalent to B, A(3) to C,
A(4) to D, etc.
Any change made to one member of an equivalence group changes the value of all members of the group.
When 1 is stored in A, both E(l,l) and I have the value 1. When 2 is stored in A(2), B and E(2,l) have the
value 2. Although B and E(2,l) are not explicitly equivalenced to A(2), equivalence is implied by their
position in common.
The implied equivalence between the array elements and variables is illustrated by the output.
N A M E L I S T / V / A , B , C , D , E , F, G , H , I

The NAMELIST statement is used for output. A NAMELIST group, V, containing the variables and arrays
A,B,C,D,E,F,G,H,I is defined. The NAMELIST WRITE statement, WRITE(6,V), outputs all the members of
the group in the order of appearance in the NAMELIST statement. Array E is output on one line in the
order in which it is stored in memory. There is no indication of the number of rows and columns (3,4).

x^^v

G is equivalent to E(3,2) and yet the output for E(3,2) is 6 and G 0.0. G is type real and E is type integer.
When two names of different types are used for the same element, their values will differ because the
internal bit configuration for type real and type integer differ (refer to Program EQUIV).
/S35^V

Program:
PROGRAM COME (OUTPUT,TAPE6=0UTPUT>
C O M M O N A ( i ) , B , C , D , F, G , H
I N T E G E R A , B , C , D , E < 3 , < + ) , F, H
EQUIVALENCE (A,E,I)
N A M E L I S T / V / A , B , C , D , E , F, G , H , I
00 1 J = i, 12
1 A(J)=J
WRITE (6,V)
STOP
END
19-10

.jfSS^V

60497800 A

i$^N

Output:

sv
A

I f

B

=

2»

C

s

3,

D

3

5#*v

4S\

RANGET

60497800 A

19-11

0^*^\

DATE is a library subroutine which returns the date entered by the operator from the console. DATE is
declared external because it is used as a parameter to the function LOCF. Declaring DATE external does
not prevent its use as a library subroutine in this program.
PRINT 2,TODAY.CLOCK
2 FORMAT( *1T0DAY=*, A10, * CLOCK=* ,A10)

These statements print the date and time. The leading and trailing blanks appear with the 10 alphanumeric
characters returned by the subroutine DATE because the operator typed in the date this way. The value re
turned by TIME is changed by the system once a second, and the position of the digits remain fixed; a
leading blank always appears. The format of DATE and TIME can be checked by observing any listing, as
the routines DATE and TIME are used by the compiler to print out the date and time at the top of compiler
output listings.
CALL SECOND(TYME)

When SECOND is called, the variable name TYME is used. A variable name cannot be spelled the same as '
a program unit name. If Program LIBS had not called the subroutine TIME, a variable name could be
spelled
TIME.
„~
L 0 C AT N = L 0 C F ( D AT E )

A

D AT E i s n o t a v a r i a b l e n a m e a s i t a p p e a r s i n a n E X T E R N A L s t a t e m e n t . ;
I
Library

function

LOCF

CALL

returns

the

address

of

D AT E .

RANGET(SEED)

I
^

Library subroutine RANGET returns the seed used by the random number generator RANF if it is called.
If RANGET is called after RANF has been used, RANGET will return the value currently being processed *^)
by the random number generator. With the library subroutine RANSET, this same value could be used to
initialize the random number generator at a later date.
PRINT 3, TYME, LOCATN, LOCATN, SEED, SEED
3 F O R M AT ( * O T H E E L A P S E D C P U T I M E I S * , G 1 4 . 5 , * S E C O N D S . * / / * L O C AT I O N O F ^
1 DATE ROUTINE IS-*,015,* OR*,17,* IN DECIMAL.*/*0THE INITIAL VALUE
2 OF THE RANF SEED IS *,022,*, 0R*,G30.15,* IN G30.15 FORMAT.*)

These statements print out the values returned by the routines SECOND, LOCF, and RANGET.
Asterisks are used to delineate Hollerith fields in the format specification to illustrate the point that exces- **)
sive use of asterisks can be extremely difficult to follow.
,^\
Y=0.0
W0W-7.2/Y
IF(0.NE. LEGVAR(WOW))PRINT4,WOW

v**»Sy

!9-12

60497800

C

These statements illustrate the use of the library function LEGVAR within an IF statement to test the validity
of division by zero. LEGVAR checks the variable WOW. This function returns a result of -1 if the variable is
indefinite, +1 if it is out of range, and 0 if it is normal. Comparing the value returned by LEGVAR with 0
shows that the number is either indefinite or out of range. The output R shows the variable is out of range.
The line of -*-* on the output is produced by the FORMAT specification in statement number 4: 50(2H*-).
Program:
FROGRA* LIBS (OUTPUT)

EXTERNAL OATE
CALL OATH (TODAY)
CALL TIME (CLOCK)
P3INT 2, TODAY, CLOCK
2 F0?*AT<»1T0QAY=», AlC, ♦ CLOCK=», Aid
CALL SECONO(TYME)
LmATN = LOCF(QATE>
CALL RANGET(SEEO)
PRINT "*,TYME, LOCATN, LOCATN, SEED, SEED
3 FORMAT(+:THE ELAPSEO CPU TIME IS*,G».5f* SECONDS.'//* LOCATION OF
1 TATE °0UTINE IS=*,015,» OR»,I7f* IN DECIMAL.*/*GTHE INITIAL VALUE
2 OF THF. .RANF SEED IS*,022,», OR*,G33.15,* IN G30.15 FORMAT.♦>
Y=0.0
W0W=7.2/YTF(0 .NE. LEGHAR(WOW) >PRINTS,WOW
STOP
«♦ PC = MAT(1HG,53 (2H»-)/» CIV/IOE ERROR, WOW PRINTS AS=*,GiG.2>
ENO

Output:
x j i i * Y- 0 7 / 3 1 / 7 4 C L O C K * 1 & . 4 7 . 3 3 .
j^P^

Tnt

LL^'-ty

CPU

TlMi:

IS

1.00.30

SLCONUS.

L O C AT I O N O r D AT E R O l i T l ' s t T I S = O O O O o n 0 0 0 0 0 3 3 4 7 O h 2 7 9 1 I N O E C I M A L .
T " C . . I N I T I A L VA H J E . O T H r : * & t l F S t f . n I S 1 7 1 7 1 2 7 ' . 3 2 1 4 7 7 4 1 J l b S . O H . 1 7 0 * * , * 6 3 9 « V 0 4 4 0 2 3 I N 6 3 0 . 1 5 F O R M AT,
«_«-o-«-o_._«>«-«.v».o-«-7 >«-<.-«-»_«» e>«-o-o»e-i«—»-o—c—a-a-o_a- a-a-a-f>_»_o_o .0 .. a _ e _«..<>•»_ a _o _«_<*•.»_«_
OlVlDt

ESSOHt

ViCri

PRINTS

aS=

R

ijfPN

PROGRAM PIE
Program PIE calculates an approximation of the value of tt .
Feature:
Library function RANF
The random number generator. RANF. is called twice during each iteration of the DO loop, and the values
obtained are stored in the variables X and Y.
60497800

A

19-13

DATA CIRCLE,DUD/2*0.0/
0$$Ql

The DATA statement initializes the variables CIRCLE and DUD with the value 0.0.
Each time the DO loop is iterated, a random number, uniformly distributed over the range 0 through 1, is
returned by the library function RANF, and this value is stored in the variable X. The value of X will be
CXX<1. DUD is a dummy argument which must be used when RANF is called.

Y=RANF(DUD)

RANF is referenced again; this time to obtain a value for Y.
IF(X*X+Y*Y.LE.l.)CIRCLE=CIRCLE+1.

The IF statement and the arithmetic expression 4.*CIRCLE/10000. calculate an approximation of the value
of tt. The value of tt is calculated using Monte Carlo techniques. The IF statement counts those points
whose distance from the point (0., 0.) is less than one. The ratio of the number of points within the quarter
circle to the total number of points approximates 1/4 of tt . The value PI is printed by the NAMELIST
statement WRITE(6,OUT)
Program:
P-

PROGRAM ADD
Program ADD illustrates the use of the DECODE statement. The ENCODE and DECODE statements are
simpler to understand when related to the READ and WRITE statements.
Features:
DECODE statement.

j$"$S\

DECODE (READ)
A READ statement places the image of each record read into an input buffer. Compiler routines convert the
character string in the record into floating point, integer or logical values, as specified by the FORMAT state
ment, and store these values in the locations associated with the variables named in the list.

With DECODE, the array specified in the DECODE statement is used as the input buffer. The number of
f words moved to the input list from the array is determined by the record length.
^^ With the READ statement, when the FORMAT specification indicates a new record is to be processed (by a
\ slash or the final right parenthesis of the FORMAT statement), a new record is read into the input buffer.
slash or final right parenthesis), the next part of the array is used as the input buffer. The record length inrWith
the DECODE
statement,
whentothemove
FORMAT
, dicates
the number
of words
into statement
the array.indicates a new record is to be processed (by a

I

ENCODE (WRITE)

0$^\

V A WRITE statement causes the output buffer to be cleared. Data in the WRITE statement list is converted
into a character string according to the format specified in the FORMAT statement, and placed in the output
^^ buffer. When the FORMAT statement indicates an end of a record with either a slash or the final right
\ parenthesis, the character string is passed from the output buffer to the output system; the output buffer area
is reset, and the next string of characters is placed in the buffer.
f* The ENCODE statement is processed by compiler routines in the same way as the WRITE statement, but with
the array specified within the parentheses of the ENCODE statement used as the output buffer. The number
of words per record in the array is determined by the record length.
The number of computer words in each ENCODE or DECODE record is determined by dividing the
record length by 10 and rounding up. For example, a record length of 33 requires 4 words, and a record
r^ length of 71 requires 8 words.
In the following program, the format of data on input is specified in column 1. If column 1 is a one, each
(^ of the remaining columns is a data item. If column 1 is a two, each pair of the remaining columns is a data
item. If column 1 is a three or greater, each triplet of the remaining columns is a data item. Based on the
information in column 1, the correct DECODE statement (the proper format and item count) is selected. The
(^ program tjien totals and prints out die items in each input record.

r
/"^N

60497800

A

19_15

lNTtOER CAK0(8),IN(79)»TOTAL

CARD is dimensioned 8 to receive the 79 characters in columns 2 through 80. IN is dimensioned 79 to receive the
numeric values of the input items.

^/"^■V

10 KEADritlDKEYfCARD
1 1 F O K M A T. I 1 , / A 1 0 , A 9 )

The first column of the record is read into KEY under I format, and the remaining 79 characters are read
into the array CARD under A format; so they can be converted later to I format with a DECODE statement. '"s^
IF(EOF(b).NE.OJSTOP

-^v

Tests for the end of data in which case the program simply stops.
K E Y = M A X 0 ( 1 » M I N 0 ( K E Y, 3 ) )

Guarantees

that

1

40

<

KEY

<

3.

TO TA L = 0

"*\

0 0 4 11 = 1 . N
4 1 T O TA L = T O TA L * I N ( I )

Adds up the items and leaves the total in TOTAL.
W R I T E ( 6 t l 2 ) T 0 TA L » N » K £ Y » C A R D » < l N ( I ) » l = 1 » N )
12 FORMAT(/I6»20H IS THE TOTAL OF THE t!3»20H NUMBERS ON THE CARD/
1I2»7A10»A9/16H THE NUMBERS ARE/(2014))

Outputs the results.
GOTO10

Goes back to process the next record.

19-16

60497800

"*^

A

Program:
/§M^\

/sS*\

HrfUORAM AUU
i (INPUT,OUTPUT,TAPEbs-lN^UT.TAPtbsOUTRUT)
I N T E G E R C A i * U ( b ) , I N ( 7 9 ) , TO TA L
1 U r c t A D ( b » l l ) . \ E Y. L A k D
11 r ( j K M A r ( £ l , / A 1 0 , A 9 )
IF (EOF(b).NE.0)STUP
N t Y = M A A O ( l , M I N O ( K E Y. J . )
outO( 1,2, J) ,m£Y
1 U L C 0 D E ( / V, 9 1 « C A R 0 ) I n
9 1 f - O H M ATi . / V I l l
N.= 79
GOT040
2 UtC0Dt(7b,92,CAr
N = 2b
40
I O TA L = 0
U 0 4 11 = 1 , N
4 1 T O TA L = Tu r A L ' - l N ( I )
WKirE(b,12)ToTAL»N,r,tYtCARu* ( IN( 1 > » I- l.N)
1 2 F O R M AT < / I 6 . 2 0 H I S T H E TO TA L O F T H E « 1 3 , 2 0 r l N U M b t k S O N T H E C A R D /
li2.7A10.A9/16H THE NUMBERS AKt/( 20 !<♦) >

OOTO10
End

0m®\
Input:

2 1 3 2 2 5 5 H 7 6 b 9 8 8 7 7 5 5 3 3 2 1 0 3 3 2 2 4 5 b 6 6 8 7 7 9 6 5 5 4 1 2 3 3 4 2 2 11 2 3 b 5 4 7 t t 9 b 5 4 1 2 3 b b b 4 7 H 9 6 5 4 i 2 3 b 0 2 8
302144bbb998774b6632214455666655233655222I444b5bb332b5bbt>99bbbb6b5b477b8b4ba7 029
5556b66322366bb523322144b5b6699887 7655222 l4«VH55bl122330332445b6699887 7455b89b03U
10234bbb6888998877b996b55444455b665b3J222lll233023333bb99655bb2221l44447778d5031

Output:
1900 IS THt TCTAL OF THE 39 NUMEERS OK THE CARD

j$P£V

213223547619887755332103322456668779655412333221123654789654123655478 565 
666 958 877 4»5 889 6C3
370 IS THE TCTAL OF THE 79 NUMBERS ON THE CARD

102345 6668 8 8958877 899655544445 56665 5332 2211123 30 23333669985 555222114lS8v

D ATA L ( l l ) / 1 /

The DATA statement stores the value 1 in the last element of the array L. When the program is executed &
L( 11) has the initial value 1.
P R I N T 4 , ( 1 , 1 = 1 , 11 )

This statement prints the headings. The implied DO loop generates the values 1 through 11 for the column
headings.
PRINT

3 , ( L ( J ) , J = K , 11 )

^

1 This is a more complicated example of an implied DO loop. The index value J is used as a subscript instead
of being printed. The end of the array is printed from a variable starting position. The 1, which appears on i
the diagonal in the output is not moving in the array; it is always in L(ll); but the starting point is
moving.
DO 2 1=1,10
X-ll-I

"*)

These statements illustrate the technique of going backwards through an array. As I goes from 1 to 10, K
goes from 10 to 1. The increment value in a DO statement must be positive, therefore, ^
DO
K=ll-l

2

1

=

1,10

^%

provides a legal method of writing the illegal statement DO 2 K = 10,1,-1. ^

19-18

60497800

A

DO 1 J=K,10
1

/*PN

L(J)=L(J)+L(J+l)

This inner DO loop generates the line of values output by statement number 2. When control reaches
statement 2. the variable J can be used again because statement number 2 is outside the inner DO loop.
However, if I were used in statement 2 instead of J. the statement 2 PRINT 3,(L(I),I = K,11) would be an
error. Statement 2 is inside the outer DO loop and would change the value of the index from within the
DO loop. Changing the value of a DO index from inside the loop is illegal and will cause a fatal error or a
never ending loop.
Program:
FROGRAP FASCAL (OUTPUT)
INTEGER L(ll)
D ATA L ( l l ) / l /

PRINT4, (1,1=1,11)

FORMA T(44HC0MBINATI0NS OF M THINGS TAKEN N AT A TIME.//20X, 3H-N-/

£1115)

1
2
3

DC 2 I = 1,10
K=ll-I
L(K)=1
OC IJ = K,10
L(J)=L(J)+L(J+1)
P R I N T 3 , ( L ( J ) , J = K , 11 )
F 0 R M AT ( 11 I 5 )
STOP
ENO

Output:
COMBINATIONS OF M THINGS TAKEN N AT A TIME.
-N1
2
3
4

5
6

/

8
9
10

11

2
1
3
6
10
15
21
28
36
45

55

3
1
4
10
20
35
56
84
120

165

4

10

11

1
15
35
70
126
210

21
56
126
252

330

462

28
84
210

36
120

462

330

45

10

165

55

11

1

PROGRAM X
Program X references a function EXTRAC which squares the number passed as an argument.
Features:
Referencing a function
Function type
Program X illustrates that a function type must agree with the type associated with the function name in
the calling program.
60497800
0$^\

E

19-19

/""3![*.

K=EXTRAC(7)

Since the first letter of the function name EXTRAC is E, the function is implicitly typed real. EXTRAC is
referenced, and the value 7 is passed to the function as an argument. However, the function subprogram is
explicitly defined integer, INTEGER FUNCTION EXTRAC(K), and the conflicting types produce errone
ous results.
The argument 7 is integer which agrees with the type of the dummy argument K in the subprogram. The
result 49 is correctly computed. However, when this value is returned to the calling program, the integer
value 49 is returned to the real name EXTRAC; and an integer value in a real variable produces an
erroneous result (refer to program EQUIV).
This problem arises because the programmer and the compiler regard a program from different viewpoints.
The programmer often considers a complete program to be one unit whereas the compiler treats each program
unit separately. To the programmer, the statement

INTEGER FUNCTION EXTRAC(K)

defines the function EXTRAC integer. The compiler, however, compiles integer function EXTRAC and the
main program separately. In the subprogram EXTRAC is defined integer, in the main program it is defined
real. Information which the main program needs regarding a subprogram must be supplied in the main
program - in this instance the type of the function.
There is no way for the compiler to determine if the type of a program unit agrees with the type of the
name in the calling program; therefore, no diagnostic help can be given for errors of this kind.
The second time, the program was run with EXTRAC declared integer in the calling program, and the correct result
was obtained.
First program:
£*<&$\

PROGRAM X (OUTPUT)
C WITH EXTRAC DECLARED INTEGER ThE RESULT SHOULD 8E 49, OTHERWISE IT
C
WILL
BE
ZERO
K
=
EXTRAC(7)

^

PRINT It K
1 F O R M AT U H l t l S )
5T0r

/*s^v

END

1
/5gf»X

INTEGER
EXTRAC =K«K
RETURN
End

19-20

FUNCTION

EXTRAC

(K)

^
,^^s

60497800

A
. ^ f fi j v

Output:
/$S\

0
f^- Second program:
FROGRAM X (OUTPUT)
C WITH EXTRAC DECLARED INTEGER THE RESULT SHOULD BE 49, OTHERWISE IT
C
WILL
BE
ZERO
INTEGER EXTRAC
K = EXTRAC(7)
PRINT 1, K
1 F O R M AT ( 1 H 1 , I 5 )
STOP
END
INTEGER FUNCTION EXTRAC (K)
EXTRAC = K»K
RETURN
ENO

Output:
49

PROGRAM VARDIM
Program VARDIM illustrates the use of variable dimensions to allow a subroutine to operate on arrays of
differing size.
Features:
Passing an array to a subroutine as a parameter.
An array name used as a parameter passes the address of the beginning of the array and no dimension
information.
COMMON X(4,3)

Array X is dimensioned (4,3) and placed in common.
REAL Y(6)

Array Y dimensioned (6) is explicitly typed real. It is not in common.
C A L L I 0 TA ( X , 1 2 )

The subroutine IOTA is called. The first parameter to IOTA is array X, and the second parameter is the
number of elements in that array, 12. The number of elements in the array rather than the dimensions (4,3)
is used which is legal.
60497800

A

19-21

SUBROUTINE IOTA(A.M)
DIMENSION A(M)

Subroutine IOTA has variable dimensions. Array A is given the dimension M. Whenever the main program
calls IOTA, it can provide the name and the dimensions of the array; since A and M are dummy argu
ments, IOTA can be called repeatedly with different dimensions replacing M at each call.
CALL I0TA(X,12)

When IOTA is called by the main program, the actual argument X replaces A; and 12 replaces M.

1

DO 1 1=1,M
A(I)=I

The DO loop places the numbers 1 through 12 in consecutive elements of array X.

-^^^v

C A L L I 0 T A ( Y, 6 )

When IOTA is called again, Y replaces A and 6 replaces M; and numbers 1 through 6 are placed in
consecutive elements of array Y. Notice the type of the arguments in the calling program agree with the
type of the arguments in the subroutine. X and A are real, 12 and M are integer.
Names used in the subroutine are related to those in the calling program only by their position as argu
ments. If a variable I was in the calling program, it would be completely independent of the variable I in
the subroutine IOTA.
■^^s

The WRITE statement outputs the arrays X and Y.
Program VARDIM:
PROGRAM VARDIM (OUTPUT, TAPE6=0UTPUT)
COMMON X(4,3)
REAL V(6)
C A L L I 0 TA ( X , 1 2 )
C A L L I 0 TA ( Y, 6 )
WRITE (6,100) X,Y
100
F O R M AT
( * 1 A R R AY
X
=
STOP
END

*Jh^V

*

, 1 2 F 6 . 0 / » O A R R AY

Subroutine
SUBROUTINE IOTA (A,M)
C
I O TA
STORES
CONSECUTIVE
C S TA RT I N G AT 1
DIMENSION A(M)
OO 1 I = 1,M
1
RETURN
END

i9-22

Y

♦6F6.Q)

=

^
1

I O TA :
INTEGERS

IN

EVERY

^
ELEMENT

CF

THE

A(I)=I

60497800

A R R AY

A

^

^

A

Output:

/0&\

A R FAY X =

1.

2.

3.

L .

5•

6.

A R FAY Y =

1.

2.

?.

i

5•

6.

.

7.

8.

9.

10.

11 .

12.

PROGRAM VARDIM2
VARDIM2 is an extension of program VARDIM. Subroutine IOTA is used: in addition, another subrou
tine and two functions are used.
Features:
Multiple entry points
Variable dimensions
EXTERNAL statement
COMMON used for communication between program units
Passing values through COMMON
Use of library functions ABS and FLOAT
Calling functions through several levels
Passing a subprogram name as an argument
Program VARDIM2 describes the method of a main program calling subprograms and subprograms
calling each other. Since the program is necessarily complex, each subprogram is described separately
followed by a description of the main program.

0g^\

SUBROUTINE IOTA
SUBROUTINE IOTA is described in program VARDIM.

SUBROUTINE SET
j0&\

\ SUBROUTINE SET(A,M,V) places the value V into every element of the array A. The dimension of A is
specified by M.
{ Subroutine SET has an alternate entry point INC. When SET is entered at ENTRY INC, the value V is
added to each element of the array A. The dimension of A is specified by M.
f The DO loop in subroutine SET clears the array to zero.

C
/p&V

FUNCTION

AV G

This function computes the average of the first J elements of common. J is a value passed by the main
program through the function PVAL.

60497800
00$\

A

19_23

^SS!V

This function subprogram is an example of a main program and a subprogram sharing values in common.
The main program declares common to be 12 words and FUNCTION AVG declares common to be 100
words. Function AVG and the main program share the first 12 words in common. Values placed in
common by the main program are available to the function subprogram.
The number of values to be averaged is passed to FUNCTION PVAL by the statement AA = PVAL(12,AVG) and
function PVAL passes this number to function AVG: PVAL = ABS(WAY(SIZE))
.rfSSSs

COMMON A(100)

Function AVG declares common 100 so that varying lengths (less than 100) can be used in calls. In this
instance, only 12 of the 100 words are used.
DO l 1=1,J
1 AVG=AVG+A(I)

The DO loop adds the 12 elements in common.
AVG=AVG/FLOAT(J)

This statement finds the average. The library function FLOAT is used to convert the integer 12 to a floating
point (real) number to avoid mixed mode arithmetic.
The average is returned to the statement PVAL = ABS(WAY(SIZE)) in function PVAL.
FUNCTION PVAL
Function PVAL references a function specified by the calling program to return a value to the calling ^
program. This value is forced to be positive by the library function ABS. 1
The main program first calls PVAL with the statement AA = PVAL(12,AVG), passing the integer value 12 ^
and
the
function
AV G
as
parameters.
'
INTEGER

SIZE

^

PVAL declares SIZE integer - the type of the argument in the main program (integer 12) agrees with the
corresponding
dummy
argument
(SIZE)
in
the
subprogram.
P VA L = A B S ( WAY ( S I Z E ) )

'7
^

The value of PVAL is computed. This value will be returned to the main program through the function
name PVAL. Two functions are referenced by this statement; the library function ABS and the user written ^
function AVG. The actual arguments 12 and AVG replace SIZE and WAY.

19~24

60497800

A
«»^^?S

PVAL=ABS(AVG(12))
/*fP?\

Function AVG is called, and J is given the value 12. The average of the first 12 elements of common are
computed by AVG and returned to function PVAL. Library function ABS finds the absolute value of the
# * ^ v a l u e r e t u r n e d b y AV G .

0*\

A M = P VA L ( 1 2 , M U LT )

In this statement in the main program, PVAL is referenced again. This time the function MULT replaces
/PN

W A Y.

/0^\

FUNCTION MULT
MULT multiplies the first and twelfth words in COMMON and subtracts the product from the average
(computed by the function AVG) of the first J/2 words in common.
COMMON ARRAY(12)

Common is declared 12; MULT shares the first 12 words of common with the main program.
MULT=ARRAY(12)*ARRAY(l)-AVG(J/2)

The twelfth and first element in common are multiplied and the average of J/2 is subtracted. This is an
example of a subprogram calling another subprogram - the function AVG is used to compute the average.
MAIN PROGRAM - VARDIM2
The main program calls the subroutines and functions described.
COMMON X(4,3)

Twelve elements in the array X are declared to be in common.
j$0&\

REAL Y(6)

The real array Y is dimensioned 6.
EXTERNAL MULT, AVG

Function names MULT and AVG are declared EXTERNAL. Before a subprogram name is used as an
argument to another subprogram, it must be declared in an EXTERNAL statement in the calling program.
Otherwise it would be treated by the compiler as a variable name.

60497800

A

19-25

C A L L S E T ( Y, 6 , 0 . )

Subroutine SET is called. The arguments (Y,6,0.) replace the dummy arguments (A,M,V).
DIMENSION Y (6)
DO 1 I = 1,6
1 Y(I) = 0.0

The array Y is set to zero. The NAMELIST output shows the 6 elements of Y contain zero.
CALL I0TA(X,12)

Subroutine IOTA is called. X and 12 replace the dummy arguments A and M
DIMENSION X (12)
DO 1 1=1,12
1 X(I) = I

the value of the subscript is placed in each element of the array X. Program VARDIM output shows the
value of X is 1 through 12.

'^*^*\

CALL INC(X,12,-5.)

Subroutine SET is called, this time through entry point INC. The arguments (X, 12,-5.) replace the dummy
arguments (A,M,V)

>**i^V

DO 2 1=1,12
2 X(I) = X(I) + -5.

-5. is added to each element in the array X. Program VARDIM2 output shows X is now -4,-3,-2,
-1,0,1,2,3,4,5,6,7
AA=PVAL(12,AVG)

Function PVAL is called and its value replaces AA.

AM=PVAL(12,MULT)

Function PVAL is called again with different arguments and the value replaces AM.

19"26

60497800

A

^

Complete program:
PROGRAM VAR0IM2
THIS PROGRAM USES VARIABLE DIMENSIONS ANO MANY SUBPROGRAM CONCEPTS
COMMON X(4,3)
REAL Y(6)
EXTERNAL MULT, AVG
NAMELIST/V/X,Y,AA,AM
CALL SET(Y,6,0.)
CALL IOTA(X,12)
CALL INC(X,12,-5.)
AA=FVAL(12,AVG)
AM=FVAL
SET PUTS THE VALUE V INTO EVERY ELEMENT OF THE ARRAY A
DIMENSION A(M)
0011=1,M
A(I>=0.0
ENTRY INC
INC ADDS THE VALUE V TO EVERY ELEMENT IN THE ARRAY A
DO 2 I = i,M
A(I) = A(I) ♦ V
RETURN
END

SUBROUTINE IOTA (A,M)
C IOTA PUTS CONSECUTIVE INTEGERS STARTING AT 1 IN EVERY ELEMENT OF
C
THE
A R R AY
A
DIMENSION ACM)
0011=1, M
1 A(I)=I
RETURN
ENO

J*53«\

FUNCTION PVAL(SI2E,HA>)
C PVAL COMPUTES THE POSITIVE VALUE OF WHATEVER REAL VALCE IS RETURNED
C BY A FUNCTION SPECIFIED WHEN PVAL WAS CALLED, SIZE IS AN INTEGER
C VALUE PASSEO CN TO THE FUNCTION,
INTEGER SIZE
PVAL=ABS(WAY)
RETURN
ENO

60497800

A

19-27

r ^ ^ \

0si^^

FUNCTION AVGCJ)
C AVG COMPUTES THE AVERAGE OF THE FIRST J ELEMENTS OF CCMMON., ^
COMMON A(IUO)
AVG=0.
DO
1
I
=
i*J
^\
1 AVG=AVG+A(I>
AVG=AVG/FLOAT(J)
RETURN
END

^

REAL
FUNCTION
M U LT ( J )
^
C MULT MULTIPLIES THE FIRST AND TWELTH ELEMENTS OF COMMON AND
C SUBTRACTS FROM THIS THE AVERAGE (COMPUTED
C BY THE FUNCTION AVG) CF THE FIRST J/2 WORDS IN COMMON. 1
C
COMMON ARRAX12)
M U LT = A R R AY ( 1 2 ) * A R R AY ( l ) - AV G < J / 2 )
RETURN
E N D

1

8V
X

=
•».<>£»
Cl,
. ot*>01, . 7Ef01,

Y

=

0.0,

AA
AH

=
-

0.0,

0.0,

-.3E+01,
0.3,

-.2£*01,

0.0,

-.H-TfrQl,

li.O,

.lE^Ol,

.2c*tjl,

.3E*Ol,

.«.£*>t)l,

.sE^Ol,

/gr

0.0,

. fi E f O l ,
.26«5EH?,

'8£NO

/a

PROGRAM CIRCLE

>**^\

Program CIRCLE finds the area of a circle which circumscribes a rectangle.
Features:
Definition and use of both FUNCTION subprograms and statement functions.
This program has a hidden bug. We suggest you read the text from the start if you intend to find it.
A programmer wrote the following program to find the area of a circle which circumscribes a rectangle,
and wrote a function named DIM to compute the diameter of the circle.

19-28

60497800

C
^ \

0$^\

The area of a circle is 7rR2, which is approximately the same as 3.1416/4*Diameter**2.
PROGRAM CIRCLE (OUTPUT)
A=4.0
B = 3.0

A^EA=3.1416/4.0*DIM**2
PRINT 1* AREA
FORMAT(G20.10>
STOP
END
FUNCTION OIMU.Y)
UI(v)=SuRT(X*X*Y*Y)
RETURN
END
Output:

.7854000000
The programmer was completely baffled by the result; the area of a circle circumscribing a rectangle 12
square inches should be more than .785! Another programmer quickly pointed out that a simple function
like DIM should have been written as a statement function. Since FORTRAN Extended compiles statement
functions inline, it would execute much faster because no jump nor return jump would be generated by the
function.
The programmer rewrote the program as follows:

PROGRAM CIRCLE (OUTPUT)
DIM(X»Y>=SORT(X*X*Y*Y)
A=4.0
B=3.0
AREA=3.l416/4.0*DIM(AtB)**2
PRINT It AREA
1 FORMAT (G20.10)
STOP
ENU
and obtained the correct result.
jgPN

When the programmer wrote the function subprogram, it had the same
name as a library intrinsic function. If the name of an intrinsic function
is used for a user written function, the user written function is ignored.

60497800 A

19-29

PROGRAM OCON
Program OCON illustrates some problems that may occur with octal or Hollerith constants.
Features:
Octal Constants in expressions
The compiler generally treats both octal and Hollerith constants as having no type; therefore, no mode conver
sion is done when they are used in expressions. If, however, the compiler is forced to assume a type for an
octal or Hollerith constants, it will treat them as integer. When an expression contains only operands having no
type, integer arithmetic is used. For example:
B=10B+10B
The expression is evaluated using integer arithmetic. Furthermore, for subsequent operations, the result of integer
arithmetic is treated as true integer. Thus, in the above example, the expression on the right is evaluated using
integer arithmetic; and the integer result is converted to real before the value is stored in B. Comparing the
values produced in OCON for A and B illustrates this effect.
With floating point arithmetic whenever the left 12-bits of the computer word are all zeros or all ones, the value
of that number is zero. (See Appendix D discussion of Underflow.) This explains why the output value of A
from OCON is zero.


LOGICAL F
NAHELIST/OUT/A,BjC,D,E,F
A=2QB
B=lOB+10B
C=B*H0B
1=5

DsH-lOB
E=B*fI*10B
FsA.EQ.77B
HRIT£«sv

Output:
$OUT

A

= 16,

B

= 16,

C

= Z k y,

0

= 13,

E

= 29,

F

= F,

SEND

19-32

60497800 A

LIST DIRECTED INPUT/OUTPUT
List directed input/output eliminates the need for fixed data fields. It is especially useful for input since the
user need not be concerned with punching data in specific columns. List directed input does not require the
user to name each item as does NAMELIST input.
Used in combination, list directed input and NAMELIST output simplify program design. Such a program is
easy to write, even for persons just learning the language; knowledge of the FORMAT statements is not required.
This facility is particularly useful when FORTRAN programs are being run from a remote terminal.
Example:
H2,T10.
MAP(OFF)
FTN(K=0)
LGO.
7/8 / 9
PROGRAH EASf 10 (INPUT=/80fOUTPUT,TAPE5=INPUT,TAPE6=0UTPUT>
JOMPUTE THE A*ZA AND *AJlUS OF AN INSCRIBED JIRSLE OF ANY TRIANGLE..
*SAL SIDESC3)
?lQUI./ALtNC£< SIDES ll) ,A) ,(SI0ES(2) ,3) , (SIOESt 3) ,i)
N4MELlSr/0JT/SI)ES,AREA,RADIUS
3 RiAD<5,»>SIDES
IF*MS-C)>
•UOIUSMREA/S
W*IT<_<6,0Ur>
S0T03
ENO
7/8/9
3 4 5
6.7»B
3»l
4"
5
6
12.5321452. 22.4536,25
6/7/8/9

Output:
SOUT
SIDES = .3E*01» .4£->ui, .5E*01»
AREA

»

.6E.01,

RADIUS c ,1E*01.
SEND

60497800

C

19-33

/f^K

SOUT
SIDES

= .6E«01» .7E*01, .8E*01f

AREA

= .a0333162567589E*02t

RADIUS

t ,19364916731037E*01,

/*»<3^y

SEND

><^^\

SOUT
SIDES

= .1E*01, .1E*01, .1E*>01,

AREA

= .43301270l89222E*»00t

RADIUS

= .28867513459481E*00,

**^\

SEND

SOUT

'*s^\

SIDES

= .4E-XU, .5E*>01, *6E*>01»

AREA

« .99215674164922E*01,

RADIUS

a .13228756555323E*01,

SEND

SOUT
SIDES

= .125321452E*02, .224536E*02, .25E*02t

AREA

= .14040422058737E*03,

RADIUS

= .46812528562998E*>01,

SENO

The user may enter the three input values in whatever way is convenient, such as: one item per line (or card),
one item per line with each item followed by a comma, all items on a single line with spaces separating each
item, all items on a line with a comma and several spaces separating each item, or any combination of the
foregoing. Furthermore, even though all input items are real, the decimal point is not required when input
value is a whole number.

/£E^k

19-34

60497800 A

S TAT I C

OPTION

20

The STATIC option is available to those users of FORTRAN Extended who wish to disable Common Memory
Manager so they can do their own memory management by over-indexing blank common. The practice of over
ly indexing blank common is not recommended. The STATIC option is provided to allow continued use of programs
which rely on over-indexing of blank common.
(^ Since STATIC involves usage of non-ANSI standard capabilities, compliance with future ANSI FORTRAN standards
may preclude future availability of this option.
j^ Use of this option is restricted when a mixture of both static and dynamically compiled subprograms is executed.
When the main program is compiled with STATIC, the entire set of loaded routines must be STATIC or unpredictable
results will occur. If the main program is non-static, there is no restriction on whether all, part, or none of the sub(^ programs are static.
,#^ When the STATIC option is on for a main program, the compiler issues a LDSET to FCL which causes CMM to be
disabled.
Users wishing to exercise control over memory management but not wishing to use the STATIC option should refer
to the Common Memory Manager Interface described in section 8. This facility allows calls to CMM directly from
FORTRAN Extended. These calls allow the user to obtain blocks of memory directly from CMM rather than forcing
use of the STATIC option and over-indexing of blank common.

i ^ V

J$p^\

60497800

F

20-1

■ ^

^

^

^

1
■ ^

/$$^\

STANDARD CHARACTER SET

Control Data operating systems offer the following variations of a basic character set:
CDC 64-character set
CDC 63-character set
ASCII 64-character set
ASCII 63-character set

Depending on another installation option, the system assumes an input deck has been punched either in 026
or in 029 mode (regardless of the character set in use). The user, however, may specify the alternate mode by
a 26 or 29 punched in columns 79 and 80 of the job card or any 7/8/9 card. The specified mode remains
in effect through the end of the job unless it is reset by specification of the alternate mode on a subsequent
7/8/9 card.
Under NOS 1, the alternate mode can be specified also by a 26 or 29 punched in columns 79 and 80 of any
6/7/9 card, as described above for a 7/8/9 card. In addition, 026 mode can be specified by a card with 5/7/9
multipunched in column 1, and 029 mode can be specified by a card with 5/7/9 multipunched in column 1
and a 9 punched in column 2.
When the 63-character set is used, the display code character 00g under A or R FORMAT conversion will be
converted to a space, display code 55g for ENCODE and DECODE as well as formatted input/output statement.
No conversions occur with the A or R FORMAT element when the 64-character set is used.

vpSV

0$ffi$\,

60497800

A

A-l

ASCII

CDC
FORTRAN

: (colon)
A
B
C
D
E
F
G
H
1
J
K
L
M
N
0
P
Q
R
S
T
U
V

w
X
Y

z
0
1
2
3
4
5
6
7
8
g
+ (plus)
- (minus)
* (asterisk)
/ (slash)
( (left paren)
) (right paren)
$ (currency)
= (equals)
blank
, (comma)
. (decimal point)

" (quote)

1 (apostrophe)

Display
Code
(octal)
OO1
01
02
03
04
05
06
07
10
11
12
13
14
15
16
17
20
21
22
23
24
25
26
27
30
31
32
33
34
35
36
37
40
41
42
43
44
45
46
47
50
51
52
53
54
55
56
57
60
61
62
63
64
65
66
67
70
71
72
73
74
75
76
77

Graphic
: (colon)tt

blank
, (comma)
. (period)

%
™
s>*

r~

- 1

; (semicolon)

Hollerith
Punch
(026)

External
BCD
Code

8-2
12-1
12-2
12-3
124
12-5
12-6
12-7
12-8
12-9
11-1
11-2
11-3
11-4
11-5
11-6
11-7
11-8
11-9
0-2
0-3
0-4
0-5
0-6
0-7
0-8
0-9

00
61
62
63
64
65
66
67
70
71
41
42
43
44
45
46
47
50
51
22
23
24
25
26
27
30
31
12
01
02
03
04
05
06
07
10
11
60
40
54
21
34
74
53
13
20
33
73
36
17
32
16
14
35
52
37
55
56
72
57
15
75
76
77

12
11
11-8-4
0-1
0-8-4
12-8-4
11-8-3
8-3
no punch
0-8-3
12-8-3
0-8-6
8-7
0-8-2
8-6
8-4
0-8-5
11-0
03-7
11-8-5
11-8-6
12-0
11-8-7
8-5
12-8-5
12-8-6
12-8-7

Graphic
Subset
: (colon) ft

blank
, (comma)
. (period)

%"

" (quote)
(underline)
' (apostrophe)

— (circumflex)
; (semicolon)

<*ES\

Punch
(029)

Code
(octal)

8-2
12-1
12-2
12-3
12-4
12-5
12-6
127
12-8
12-9
11-1
11-2
11-3
11-4
11-5
11-6
11-7
11-8
11-9
0-2
0-3
0-4
0-5
0-6
0-7
03
0-9

072
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
123
124
125
126
127
130
131
132
060
061
062
063
064
065
066
067
070
071
053
055
052
057
050
051
044
075
040
054
056
043
133
135
045
042
137
041
046
047
077
074
076
100
134
136
073

12-8-6
11
11-8-4
0-1
12-8-5
11-8-5
11-8-3
8-6
no punch
03-3
12-8-3
8-3
12-8-2
11-8-2
03-4
8-7
03-5
12-8-7
12
8-5
03-7
12-8-4
033
84
03-2
113-7
113-6

Twelve zero jits at the end of a 60-bit word in a zero byte record are an end-of-record mark rather than two colons.
tt|n installation s using a 63-graphic set, display code 00g has no associated graphic or card code; display code 63g i ; the colon
(8-2 punch). The % graphic and related card codes do not exist and translations yield a blank (55g).

A-2

60497800 F

yrfS^V

/>^"\

^*S\

HEXADECIMAL-OCTAL CONVERSION TABLE
/*$$$**«
First Hexac ecimal D i g i t
0

1

2

3

000

020

040

060

100

120

140

160

200

220

240

260

300

320

340

360

1

001

021

041

061

101

121

141

161

201

221

241

261

301

321

341

361

2

002

022

042

062

102

122

142

162

202

222

242

262

302

322

342

362

3

003

023

043

063

103

123

143

163

203

223

243

263

303

323

343

363

4

004

024

044

064

104

124

144

164

204

224

244

264

304

324

344

364

5

005

025

045

065

105

125

145

165

205

225

245

265

305

325

345

365

6

006

026

046

066

106

126

146

166

206

226

246

266

306

326

346

366

7

007

027

047

067

107

127

147

167

207

227

247

267

307

327

347

367

8

010

030

050

070

110

130

150

170

210

230

250

270

310

330

350

370

9

011

031

051

071

111

131

151

171

211

231

251

271

311

331

351

371

A

012

032

052

072

112

132

152

172

212

232

252

272

312

332

352

372

B

013

033

053

073

113

133

153

173

213

233

253

273

313

333

353

373

C

014

034

054

074

114

134

154

174

214

234

254

274

314

334

354

374

D

015

035

055

075

115

135

155

175

215

235

255

275

315

335

355

375

E

016

036

056

076

116

136

156

176

216

236

256

276

316

336

356

376

F

017

037

057

077

117

137

157

177

217

237

257

277

317

337

357

377

Second
Hexadecimal
Digit

0S&S,

Octal

000-

040037

60497800 A

100-

077

140-

137

200-

177

240-

237

300-

277

340-

337

377

A-3

f*%

^

n
^

FORTRAN DIAGNOSTICS

Diagnostic messages are produced by the FORTRAN Extended compiler during both compilation and execu
tion to inform the user of errors in the source program, input data or intermediate results.

^ C O M P I L AT I O N D I A G N O S T I C S
The compile time diagnostics issued by FORTRAN Extended differ in format and content for optimizing mode
and time-sharing mode.

OPTIMIZING MODE DIAGNOSTICS
Errors detected during compilation are noted on the source listing immediately following the END statement.
The format of the message is as follows:
CARD NO. SEVERITY DETAILS DIAGNOSTIC
n

e

a

error

message

n Line number where error was detected. This number is assigned by the FORTRAN
Extended compiler. Some declarative statement diagnostics show the line number
of the first non-declarative statement; END line number is used for undefined state
ment number diagnostics.
e Indicates the type of diagnostic. In the following pages, compile time diagnostics
are listed alphabetically by error type.
I Informative message which indicates minor syntax errors or omissions
which have no effect upon compilation or execution.

/sSP^S

FC When an error of this type is encountered during compilation, the
remaining portion of the program is checked for syntax errors only.
Program is not executed.
FE Error fatal to execution. Program compiles but does not execute.
ANSI Usage does not conform to ANSI standard FORTRAN (X3.9 - 1966).
ANSI diagnostics are not listed unless the EL=A parameter is specified
on the FTN control statement.
a Information in this column will differ according to the type of error encountered.
For example, if the same statement label is used more than once, the label number
is printed. If a message of the format en CD n appears, en is the column number
in which the error was detected, and n is the card number.
error Error message printed by compiler.
message
In table B-l, the message "see DETAILS column" refers to the DETAILS column described above.
The optimizing mode diagnostics are shown in table B-l.

''

60497800

D

B-l

-<*«S\
ixl

O
UJ

ui
o

/Ss^v

o
T*
• tA

I/) go

V- Ul
Z CO

a
aj o

x

UJ 7
X «*
2
O
 x4

UJ

1 -

X


t—

oi

or. (Vj
->iu
h
• U J « . CO p.
M O W
tX
I I X 1 •H
* UJ in?
H.

*^ •^

«3
i
3 10
i 3 w#

W

t -

o oo r\j fo ji> it, vo is.
*4 o o o a o a

cm to -i- en is.

t-

U.

M

o o iu -j ra o '/j ixl

«rf

M3

.
f* fH (T» UN ft tA 04
«f (VOU t ct »-.
IUJUXtXUJO)
tO _l IM Z 00
lu i-i iu Q. r> q

- X%
^ x•> .-uO»

fw T i

UJO 00

-I Z «t -J «J
Ul «t Z UJ UJ

• U ifit z- tufr z o uu rj

tA

ex.

' ~ i

X

f~

(Xt
IS.

(tl-HUl
ct:
jm
«t zu.
x o z *
o o «.

H
X

j- 3: i- Of*
Z
* n a a f/i «t o. 3
-J

CM

••-o«r

CO

tt

ra

M
•

X

«t o
rm ft
tA "> •
UJ -36

z

M

a,
6
to

uj v%

z

v i
t *
Ui.
CO

uj

UJ=)
X

UJ t«
O UJ
•4
UJ o
X
z
M

x
o
or
u.

•90

uj

*•

rw

«*
-1

ra
i n

z

»

Ixl Ixl UJ Ixl UJ Ul UJ
Mil
U . II. U . u . U . u .

*

fH

U .
Ul

cm ro tti a* x-t xO t*
X-4 f* M

o
arr

W

/*^N

B-2

60497800 D

a,

Cj.

E
o

>.

OQ

•a
o
E

•a
o
E

00

00

00

c

a.
O

Oh

E
o

•a
o
E

.s

o.

CL,

o

.S

a.
O

o.
O


-f
C3

fZU 93

93

OO

fi

W
OQ

<

i-i

E

o

U

CO

Z

1=.
Z

o
z

i-i

OJ

£2
o w
<
uj w


g H
<

0-1

-J
-Ui -1
S

t fl

z
<

H

U -J
co W

«J £

"

cd

Uh

z
o
z

Uh

o

Ui

<

z
f >

oi
oi
<

Z
<

SS
Q

< CJ

-1
O

H
<
Z

-2

^ W 5 ^ sJ
< D-1
W co w S

Uh C Q 5 K
U i S S C<
C O C fi c o Q <

CJ
Uh

UJ

H oi
H o
< UL,
UJ
OQ

1
o
u
H
<;
H
W
CO

«

Z
<

E

t"i

s
LU
OQ

CO

93
O
cd
Oh
oo

a
w

w

sw ys >

"•*.

(X cd

Uh
U CO

o

X)

E
3
Q3 oo

co

CO
CO

E

■
>-*

"S *o
Of-t

CO

Oh

.S3 91

■J.

o
CJ

zJ<

o
o2
C

"2

•?
-*

T3
C

cu
ca XX
J3

X> 93
3 -O
oo

93

a. 
93 h->
O i

93
93

S3

S o

1—

o .S
•a

c

o

Q>
Cx,

CO

E

Ul

eo
I
OQ

ca

X

ac
Ou

D
O

z

o
<

(J

OQ

CJ

w

OQ

y^^^V

60497800 D

B-3

<
u

rzi
Oh

O.

Oh

E
o

E
o

>,

O
Q

-o
o

T3
O

o

eo

00

oo

c

c

.S
N

-a
o

T3
O

T3

E

S

00

OO

E
00

.s

.3

.S

.a
E
-f->

o,
O

Oh

Oh

o

Oh

Oh

o

O

Oh

O

O

CJ

co
C
J
I—I

fc

CO
H-l

I—I

S

f-H

<

H
UJ

T3

*?

O

<
I—,

•I

Q

CO

CO

•a

"2

co

co

Q

<4H

Q
CO

ui
Q
O

S

o
z

91 2

N

Y
.5I a
.O
d

,

r - t

PQ
UJ
-J
O
Q

<
H

d

5

*G

oo
CO

cd
""
&

d

o <->
£
«>

Qh_>
,
0 0 a>

w E °
S **■»
^
-^
d .2

O Q

sp
Q Cm
PL, Pm

J fc
o^ Z

0
2
U _J

« E

d

00 "ti

O > JO

2
E 5"

93 93 rO

O, 93 .s
H d h 5 t3o

d

C»
O

Z W
<

w

CJ ed

_
.d;

d
a>

I

"O
CU
H->

3
Oh

J

a>
CO

o .
"cd
*S
o d

&

•i 6

+->

V
•0

d

a -°

co

-a
">

si

a>
CO

ffi si

E napxe olwnig m
ng
sii
O

co

O

.J5 s
H
0
Z^

r-i

Ui ^

h5b 5JC 
O 0 13
H
d .3
O

C >
*- .
*zt d

q xi
ca jzi
-f-

3

• f - i 5 a >d

d aj

.52
1 cd&•■-,
o
■*•a> .m 3
d
-h

Sc d sd

a
>

wo zo

g Q C J
*<

<

z

Z

UJ

H

UJ

w _

U
W

2 00

<5
co o

rt
o

s

CO

UJ

Z

i

g

W

Uh Ui

<

Q

HH

O

CO

rt OQ

H co
O S co
O < ui

U, 2 oi
Ui
o
CO
HH

rt
H
co
ffi

S3

S
3
w

H
co

HH

CO

ig O D

H-l Q
hh" W

O

Z

y*^\

<
H , 1

ffi B Z
^

00

Z

JUJ zO
Q rO

<;

><-^N

B-4

60497800 D

tS

l - l

91

i-i
93

Oh

O.

cj

cj

cj

CJ

-a


"O

T i

l - l

9J

_0J
O h

P

E

> x

CO


T D

~o

93
3
oo
oo

0 0

E

ec

00

E

£

6

I

o.
O

o.

Oh

O h

o

o

O

oo

0 0

H
'

' n

E

E

Oh

o.
O

O

CU

i-

<

d .2
o *-,

g*
03
t r j

o<

'>

zl
93

00

UJ

w0J

93

•a

'>

'>

zl

93
CO

93

93

'>

72

93
CO

93

72

73,

d

e"2
°c j 5d

'>

T3

93

00

o

3

5 o

00

' n

|

|
O-

o

O

'Of

Oh

CJ

<
u

Ql

-a

T3

0 0

0 0

' n

E

|
o,
O

Oh

O

oi
Oi
Uh

H

< Q

~

s3 is
<~

_•

Uh


-a

0J

•a

Uh



i

co
O
Z

Uh*

'cl

«o- Io*

co
O

Uh

93

T3

00

'n

' n

Uh

'a,

93

0 0

E1
!

Uh

«jj

E

_d

0
!
d

I h

jU
O.

_3

H-l
OQ


op

zzz

'oo
oo
cd

CJ

72

oo

UJ

93

~Q3
CO

OJ
CO

CJ

*2

*>
J.

">

•I



IU
CO

C O

Q
O

o
z

03

00
_d

N

00

£



3«

43

cd

e
m
A
T
a
te
n
'tse
dtb
ytA
m
p
e
ri
Q «-

oo

*•^i

d

C C^d

'?
>

■r"Ut t

Uh

 o

E
Id



E
E
o

CJ

cd
CJ

CJ

c

CO
00

O 'ob
Q
£

>>

S3

S

UJ
H

CO

UJ

H
H-l

rZ H

UJ

00

00

«f



' HH UJ

T
A
E
M
E
N
.T
A
N
B
L
S
IK R
S
N
E
DH
T
I fc O
M
R
FIS
O
F S

CO

Cu, UJ

CO

O

C O

E
C
L
A
E
R
L
P
EM
S
N
E
TI

z
o

Uh

H

< Z
u <
C O

'>

UJ

0h

3 ZoCJ

3 Z<

o

•3

UJ

w <
CO

o

*>
93

00
CO

rt
ft

H

IU

r ~

93
CO

H-l

s

j—

93

tzt

'>

UJ
O

93
OO
cd
oo
oo
IU

oo

cd

t i S
N
EO
C
U
R
Ih J M
A
G
R
0
N
R
U

00

<

<

z

Cu,

z

3
O
Q

O
F
R
M
N
IA
SN
O
N
ICO
-FO A
TE
T
A
S
M
E
.N
TO
F
R
M
N
IA
SN
O
N
IO
-F V
E
TO
D
N
E
.C
A
R
IL
T
A
Q

zM
<

gH
<

S
E
LG
IIA
L
N
O
E
C
S
IT
B
J( F
<

oi
o
<
z
UJ

o
Z A
D
O
LL C
UJ R
O
M
IS
M
N
T
E

G
AN
O
-N
O
C
U
R
I0 0 K
SO
R
E
IT
S N
E
[S
.
Z < oo h4
<

B-5

/<^k

Of

E
o
CJ

>.

O
Q

Oh

Oh

t 3
O

o

£
00
d

•a

Oh

O

00
d

00
d

Oh

'43
Oh

O

Td
Oh

CJ
CJ
tZ*
O

CJ
CJ
•"d
O

E
o

£
o

CJ
13
O

T d
Oh

£
00
d
N

g
'
H->

Oh

O

O

£o

E
00
d

•fl

•43
Oh

O

■'3Jo

<

CO

trj

T3

oo

o

E

00

'*-t

Oh

O

S

tf-i

d
o

o
z

>
"■-«

£

00

00

•I

.s
N

.s

o.
O

oO

o

co
i n

T3

.V

*4H

N

'£

Ou

«

HH

o

Oh

o

•n
■=
,

oo
3

CO

I

CQ

?

T S - Z 0 02 * co
3
rt '53
co cd
CO

00

rt a>
H "ti

o

S3
n

"33
co

■ q

3

co

O

+-

co

Z + oo

■*
->•
cd 2

d
..
OO b
Jvi cd
> co

o

oo
oo
CO

00
co

d
O

<4H



d

HH

0 0

2 83

cd

c -^

CO

T3

•?

cl
U-i

II
9i .a
00 u-

£ 2h

So g .H
z .2 -*-1
■fl, oo C

d gl

UJ
>-y

2

vJ -fH
>S Uh

u

cd

oi x

£
&*
kr0ir$
Zi trj Z

uj 22

f c ^ - 7

?**
fe uj

S2 O 5

SffiS
o rr z
Ufeco
J

O

CO

•&T3

%g

T i

ffi B
>•

5
"S 52rt2 --•P2

.2
*o

d
*
rt cd

£ tn
E sUhi
E
o

ffi ^j
CO

+J
^H
eo

o

«3

s

CO

">
■O-*f

cj

N
HH

Oh d
S3
O
d *43
oo o
co d
xJ ,d CO
«U,
g
co cd -r*

cd
d

cd

HH

t—t

5r Uh

CO

HH

cj rt 
o

T3

E
o

CJ
CO
tZi
O

>

'o.

'o.

CJ

o
CJ

CO
T 3
O

T3

E
o

OQ

Oh

E

CJ


—
<

><

X

E

E

.3
.a
E
+->

d

N

Oh

O

TJ
O

Oh

o

O

CJ
d
CO

U
HH
H

o
o

Uh

Uh
Uh

CO

o

O
Z

a>

o

O f
o >.

>

UJ
Q
O

<

U.

CJ

2

CO
hJ

UJ

UJ

HH

C
<
H

T3

H-l

Tt
CO
U.
OO

Q

00

Q

C
O

2o «•

co

CO
Of

O ■f-f

3.

91

y

H

< O>

CJ

H->

O

hJ

J 3

z
o
d

(Tl
C)
CO

OQ

d

UJ

op
co

hJ

S
.
^
(-4
^

OQ

UJ

<

T3*
93
•f-l

Uh

O

T3

CO
CO CO
S3
cd

-a

T3

■>

">

•o

O
H

<
rt

o
Uh
UJ

ffi
H

CO

O
H

z
g
o
Uh
z o<
o
o Pu
r-i

z

0^\

so

u
UJ

Oh
CO



y

Z
<

DU

tra

'>

S rt
O

UJ

H Z
Z o
o
UJ z
UJ
UJ
£ ffi Z
O
CJ UJ
Oh

cj
H-l

£2

art
uj O
<

H

UJ

ffi

Oi
UJ

Uh

o

Ui

o Z
z <

O

Oh

a
Uh

O

<

z
<

ro

rx, UJ

o

UJ

CJ

Q
srt H H
Z
CJ UJ
Uh

CO

ffi
H

UJ
H

H

CO

uj

ou
O

HH
CO

O
0 0

HH*

.

rt o

IA
TI
O
F
NC
o u,
I-H

^

>

Oh

Td
Oh

o

E
oo

00

d

.£
N

a,

Oh

o

O

rd
Ou

CJ

CJ

x>

o

E
00

E

00

00

00

.a
.a

.£
.a
£

d

.a

.1.

H-"

Oh

Of

O

O

o

E

Oh

Oh

co
Xt

£

d

I■f
H

CJ

o

OO

.£

E
o

x i

O

00

.s

0-

CO

CO

XJ

*CJ
O

91
TZ}

£
o

E
o

OQ

X>

CO

co
Td
Oh

O

-4—1

Of

0,

O

O

O

o

Q

H

d
O

Z

o
u
oo
CJ
H
co
O
Z

o tO

si
i-t
o

Uh
Uh

co

Vj

CJ

>
>
d
cd

E

o

d

<

CO
X t

x>
'i>

5

'>

1

00

cd

•a

Q

d

d °
 5
3
^oo d

Uh

X )
cd

CJ

S3

Q. CO

£ "

.3 UH
CO O

Oh

93
■t
-t

o .2
'3
•d o
UJ

3 «

X3 co

.5°
oo

2

•a

XJ

"a
> 2«

£

I

2 <=•
co S £ 5
VI
G
>> 2$ -£
2
o
H en d o

•acd

CfH

co

CO

cd
r l

,3
C<

3
I

zo
z

5s2H

oi


^
d

3

cd X )

£

•f-J

o
o

M
■CCOO

CO

o

H XJ

£
cd
Uh

C
O
co
3
=1
43
d

o
CJ
o

on d
o
Uh

Oh

CJ

co

CO

•f->

cd

t?

CJ

CO

T->

H-J

co

£

si

1-4

<

£
XJ

CO
oo
cd
O

S

<
ffi
CJ

w

r-

H

CO

y?

CO

UJ
H UJ

CJ
hJ

<
00 >
CO

gft

H-l

OQ

<

rtS

CO

Z

OQ

S

^ol

UJ

I
CO CO

o
z

UJ Z

1?

§g

HH O O

« |

g Q U

u
tt*

o

8 >.

_
•oH■«-»3
gS
cd d
*
rd t Uc h
d

2

d

Uh
Q3 00

CO o.
•S o .a
»co

3

cj
3

~

e*

o

S3

k_ Uh
>^ 00

S^

d
2 0-d
cd
0^

£

o *•§
2
" • " ^f."1
U h U£
h

o
o

^

CO OO HH

*

d

.. <0 O
91 ri "HI

£
*5 -«3
5>
rt
H -S Of

sO H>.
UJ <
^ S ^ Q
& o > « z

yL ) hc o oC J< i =oJ

Uh

co
00
cd

£
o

t i

CO
Uh

h-1 X J
U Uh d
CJ

>—i

Oi

CO

t - t

cd
Ld



00

CO
cd
Td
Oh

£

.s CJ

UJ

co • d
: d CO
Oh fS

fo co
CJ co
< >
O
Uh

Ph

H-)

rt

3

gy

O tt,
W UJ

OQ

H-l CO

2rt

Uh

S 2
Q

Oh

d

XJ

cd
d
00
O
Uh
Oh co

QJ

s i
H

_ Td

.

00

CO
Uh
CO

XJ

d

■f-l
Uh
Cd

CO ^
rt oo

So

so
uj Z
U

cd

■5
£
00 CO

* j

H
fr
>
. £
cd
d

fi• ^ O
U h f c- >
d

<"

3 3

rt .£ £ £

Oi o

H.

co
jd

ed eo

XJ XJ
x»
o>•*-•
— o o

>>
E
cd o
tCO: o
>
o .

co
Z

B-8

d

CO {-

Uh

£
o
CO

's
■♦>
- +J.

o

'+-•
CJ

Oh

Uh
Uh

2 E

H-)

OQ

d

«"

Xt

I
CQ

co £•

Uh

o
z

C
O

* £

°-

CO

O

u

Td
Oh

IH

CO

Uh

si

co

O

CJ
co

00



CO

cd
Uh
cd

H->

£ ■o

ed
-d

cd
00
CO

'-*

3

Oh

cj

on

d

O
Q

ttl
•-J

cd

o

op
co

M
CO

Oh

Oh

o
o

x

-HJ

If o

<

*** c-l
H eo

u

*

xt

o

Oh

'?
X

f fi U J

tt.

< >

co

o
o

Xt

oQ
<

si

CO

on

U!

93

d
O co
O 3
rt

d
cd

>
«
/
cd

fl)

Uh'

c d J3
rt
■f
oo C3

Of

E
o

3

0 * t

• d
Oi

O
Q

.sX

00

CO

TJ
CO

cd

cd
OJJ
CO

00
cd

co

00

+-.

CO
Oh

Oh

>

s
.

w U
O
- >co
UJ UJ
hJ ««

CQ <

<
S
H 9^

oi

>

CO

ffi

60497800 F

z

co

co
UJ

«S
in

o
o
UJ
Uh

rt

co
Z

ui

cj

o
z

Q

UJ
Uh

<
rt

o

UJ

Uh

H CJ
Z ID

< rt

H H
CO CO
Z Z

o
uo
o

co

Q £2
< §

Oi O

ttl c

5 *°
°ft 2

cu

O

Ou
UJ Qy

CO

s
rt

d

H

Oh

rto

- - £
o

<
H

tt,

fc >

co

CJ

« H

Oi
ttl

m 05

oo Z

o

u
u.

o

Pu Q

Z

o

o

1,Oi
UJ

<

00

co
X !

CO

ffi

Oh
O

d sH - li
O

>

15 s•f-fi

a>

d

ccdd

cd
Uh

•^3
rd
Uh

T
N
O
C
S
A

D
A
S
E
LU
O
T
D
N T
M
E
S
U
BN
R
A
ON
L
O
A
T

T
N
Y
M
AW
D
O
Y
E
B. M
N
A
G
E
N
,

Z h oi h rt
p
o
O UJ
S H wh J^ W

p W D O

< . f fi , - h a
f cO ° r[ !j j H o U J
C

N
A
S
T FOLl A
LS
I H
R
E
T

°. - . £U az
J <

< rt w p <
UJ
Uh

3
rt affi
cu a uj h

*- 5? uj
Z 9s ft

O

CO

UJ
Uh

Z

A
T
O
A
S
C
N

rt

z < o

uj

D
IE
T
N
E
F
I.
O
F
L
C
A
E
RO
TO
U
FN
(R
AN

tt.

B-9

/*S5S*j.

:d

Td
O.

CQ

£
o

C
O
1 3
O

£

E

00
d
M

00

o.

CJ

o
o

o
CJ

xt

CO
XJ

CO
XJ

£

£

o
CJ

CJ

CO
13
O

CO

O.

£

E
o

CJ

C
O

Of

Td
Oh

o.

CO

o

oo

.£
N

N

E

E
- M

Oh

Oh

O

Oh

O

O

r~i

so

£

E

E

00

.5
M

s.

"£.

§

E

o.
O

Oh

CO
" 3
O

E

E

00

00

.£
.a
E
*>
-o.

E
•HJ

Of

Oh

o

O

o
CJ

o

.a

N

E

CO
XJ

00

.s

0 ,

CJ

E

00

CO
"•fH

£
o

CO
XJ
O

o

o

CO

Td

o

O

o
u

•tt
00

d
cd

ed
CfH

o

ri
cd
00
CO

H
co
O

zo

co

CJ

CO

CJ
t—i

"a3
XJ

cd
■—
4

<

xt

'>

y

ui
Q
O

•d

-d

y

s•

U|H

■
>

>

Hi

co

XJ

co

CO

CO

Oh

>>

^?^v

Uh
H-l

00

Uh

co

Oh

M
CJ

Uh
d
O
h-"

c>,
?

si
CJ

■fJ-

Oh
CO

co

CO

OO

CO
Of

cd

co
xt

Uh

<*®BV

cd

CO

Uh

O

CJ
CO

S

o
z

H H

N
H H

s

OO

cd
T l

rZ

CO

o

I
OQ

"I

CO

oo
3

CO
Oh

Uh
9)

HH

>>

CO

co

id

cd
Uh
ttl
Oh

UJ

i-i

00

.s

XI

XJ

>

■>

1
id
CO

xj

*d

y

y

'>

,cd,
E

XJ

■>

o
Ct.

CO

co

CO

CO

XI

CO

VI
T- t

Oh
CJ

S3
3

y^v

UJ
UJ

H-l

zg

R
E
V
C
IE
T
I O
W
LD
O
E
LO
N
A
T
IIL
Q iu g
H ttJ §
00 OQ ilh
N
C
C/LI N
O
T O
<>* <
ttl

tt.

S OQ

>■ tt.
!<=
£J_. /<*H

o o

Q UJ H

O
D
L NA
IT M
N
E
UJ
Uh

A
T
R
M
E
T S

f-tj
UJ w
>
H

f,

S
z
uj S

tt.~ 5
O

z

!£ h
a

Oi

rt

CO UJ

<

o
Q

U

UJ
OQ

OQ

E-

HH

S
UJ
Uh

2 ^

Z CJ
O uj

s

H

<

Z

"

UJ
CQ

UJ

H

uj
H

o
z
I*
<

<

z

<
rt

<,
>*

z

UJ

rt hJ

tt,

co

o
z

!D

tt, CJ

Ul
Uh

H
H

/S^.

O
H H

rt
UJ
<*
rtJ uj

CJ o
r£ W

•sa

O
UJ

&

Uh

3
H-l

uj
tt.

H

HH

Q

ttl

ffi

d OH

^

UJ

CO

H
CO (J
UJ

OQ
UJ

UJ
OQ

UJ

-^^H

H co

tt.

./*3s$!V

B-10

60497800 F

0$&s

Uh
CO

Oh

O
Q

Oh

E

Oh

E
o
O

o

co

CO

xt

X J

xt

o
E

o

oo

00

/i$^**\

00

O

co
Xt
O

£
00

£

O

E
o
CJ
co
tn

o
E

00

OO

.£

.5

.£

E

£
o.
O

E

N

h->

Oh

Oh

E

.a

N

Oh

O

co
XJ
O

d

E

Oh

CO

00

•4-*

Of

CJ

E

.a

§

CJ

£
o
o

-d
O

o
E

.£
N

d3

Of

E
oo

Oh

O

O

co

CO

N

Oh

O

HH

H

zO

c^-^
j

co
cj
H
00

o

Z
O
<

xj

UJ

Q
O

co

co

2

O

z
N
s

CO Uh

X !
oo HH

HH

93 2
*->
£

93 ~

£ oo
-H;
eo
d
O. UH
rt

I

O
Q

d
op

w

CO

l_
it

UJ
H-l
OQ

d
22 d

£ .2
ed h->
UH "H
cd d
O h G

d

.

i>

_o

° E «
S 2 53

s fi3

•5' co

2 S
Oh d £ E
w d d
T3 Oh
c o r t £ ■« SP
Uh

d co

rj eo
rt oo
oo 2
3
^

ed *-

cd S3

d <£

CO CO

x. x.

d

^»

cd

^

5
UU hO cd

d ._•;
oo CO
vi
d
uh *"
Of £
1* rrl
UH

"O

>

CO

Q

CO

d

^ CN
ed
,
•d
«

O

Uh

H
W
T
H
IT
IH
I HH
N
C
E
O
TH
ITE
T
M
A
S
T
E
N
T SA
N
U
L
A
B
I N
J
UJ
S
CO
oi P ffi ~ r t
UJ

 tt.
UJ

<

x;
t3

CO

ro <
CN

rt „.

Uh CO

•h
cd

W fc
cj 23
Z rt

D H *

ttl

ud
co co
S3

d
00

O

UJ

< tt, Oh

Oh

°c d- §o o £3

Si

CO
t-1 yq

0S\

•3 § 3z * 3u

CO

UJ
U
rrl

R
E
FM
N
T
I N
E
iE
T
IO
T
H
E
J

O
u,
oo t-i cd

«T5
2 -S

£™
B <-*

£ b £ -2

•S2 -d
uh C CO



i- x)

Uh OO

-?

■; .

° id =

03 XX

3

CO

cd

UH

d o<

9)
ih
, 9f 3H 0X 3 " H
a
C

<

O

Oh CO
Oh Si
cd [_,

^. wH

<

, O
UJ UJ
Oi '
Ui

rt

ffi

UJ

Ui

UJ V5

oi

o
tn

fc 0*
£ UJ

hJ U-i

UJ
Uh

s5

Uh

tt.

B-ll

/-"^k

co
Td

Oh

Oh

£

Oh

£
o

o
CJ
OQ

Td

:d

CO

•d

XJ

£

£

E

o

o

oo

oo
d

oo

3

a
.

3

.a

N

E

£

'*t

H->

o,
O

Oh

Oh

o

O

Td

I

co
XI
O

XJ

o

£

.3

.3
N

H->

t-t

Oh

Oh

.a
O

E

E

o

00

3N
£

3

N

3
.a
E

H-l

H->

Oh

Oh

Oh

Oh

O

O

O

XJ

00

oo

•|

CO

xt

o

E

oo

00

00

CJ

CO

XJ
O

O

E
O

8

CO

xt

E

E

E

o
CJ

CO

Td
Oh

Of

E

E
o
CJ

CJ

CO

CO

rd

Td
Oh

Td
Oh

o,
E
o

O

xt

o

rd

O

O

Q
H

Z

o
CJ
co
CJ
HH

H
oo
O
Z

o

CO

8 d
3 eo

!. S
.2
HH

Uh Cd
Uh h-»
Cd VI

<

d
Z
* O

CJ

CO

<

'>

Q

x> Z

UJ

Q

co

s 3

CO

§
o
z

s

co

CO

•d

>
Y

co

co
CO

CO

H
UJ

Q

Y



<+H

HH

•<

x>

xt

XJ

'?

-I

Q

CfH

CO

CO

CO

CO

u

±i .d

,a1<

«CO
■rt «*.

,*P-o

S3 hJ
> <

£. '■d§
.2

H

Oh

O

«» >

HH

d
cd
CJ

<

Xt

UJ

N
i-^

OQ

CO

,5 fi

HH

3

CO

C+H

UJ

OQ

HH

/"SV

CO

d

o

d
oo

x)

d
cd

XI

X
!
H->

y

a>
UH
O

cd
H->
00

co

H->

Uh

co

>.-s

XI

S
>

id

Oh «»

Cd

2 "
cd

OO

CO

O

cd

co

—H

"S w
•«- s

ua
O ul

CO
+->

/«^??>\

XJ

co

5 3
■0520+■/»fij j
E
CO
-H>

X)

CO

E
OJ



H "53

<,

ed

H->
00

-d

XJ

t'>

1
0|H

CO

rt

o

Z

>2



r!

©
h5 fc
S

CO

X .
^H UJ
Q

z> UJ
rt
co e-h
* 7

1&a

\oq> y\

UJ

UJ

CQ £>

Uh

UJ

I
UJ

UJ
CJ
00

Uh

zUJ

/^?^\
HH

H
CJ

ffi

UJ

Uh

tr;
C j £

2
Z Q
uj
HH*

OQ Oi hJ
H

Z <,
o

UJ ~

tt.

60497800 D

j^P^N

rd

/ 5 P \

O f

E

Oh

o

CJ

E
o

o
CQ

rd

Oh

E
o

XJ

o

o

.a
£

XJ

o

E

3
E

N

Of

T d

o.

Oh

XJ
O

Oh

Oh

O

Oh

O f

O

O

O

0 0

CJ

E
o
eo
XJ
O

E

0 0

d

.a
.§
•f-l

a,

CJ

E

£

0 0

3

3

g
'

g
"

O

O

N

N

+ J
O h

Oh

o

O

O h

eo
*d
O

o

£

O f

£
o

XJ

N

•fH

O

:d

00
d

0 0

3
E

3

o

o

E

0 0

o

E

XJ

O

E

E
oo

Oh

E

co
xt

CO

X I

Oh

- f H

Oh

S0M£*i,

/0$\
+ n

ed

rd

co
cj
fi
H
CO
O
Z

Oh

E
o
CJ

CO
H-l

o

<

•o

H
UJ
Q

'>

Y
.

UJ
/ S ® \

Q
O

fi 13

1-^

N

cd

Oh >
■ z Oh

93 93 £ O

fc

3 cd § O
O
0f H B M. fi3
u
rt 5*2 d C.
-a to
t*d
° £_ <*o 93
£

O

I
CQ
0 0

co

cd

d
d
cd

d

o
u

rd
S3 X !
cd HH

O

3

cd

>

CO
Uh

d .52

-cj5

Oh

O

CO

XJ

r*
cd

~ I

J
co XCO
Oh

O
Q
•d
CO
I d

O u-J

E
w
CO ,>

ii £
"cd M

d

••h

rr

£
Uh
CO
U f

£

hJ
Q3

XJ

CO
•f-J

SZ

rt <2
> 3

93

z

CO

CO

ed
rt
Oh M SZ

<-i

»4 £? v>

eo

■■*"5^ — >H
o
d
Uh
2

£

£ o £
3

ed

3

-0f c o ^ e o • . — •

x
CO
Uh
Uh

.2

CO

d co **h

f

CO

co
rd

Z E

CO

o o 3

3 eo
"^
d -2
HH
d

.3 x: JS£

i«
»A

o CJ

e ,r
"

X t
d
.
ed *->
oo

Uh

fi 9 3 t : d

<

.

co

s
o
z

UJ
hJ
O
Q

Uh

<1>
xs o.
o E
o
CJ

co

hh

CO

00

ffi

H
O
H
Z

UJ

zu i

u-J

O
CJ

rt
<
H
O
UJ
Oi

oi

o
u

Uh S

3

sa oi

w
°
-" rt
Of*. ttJ

z
o
s
s
oCJ
UJ

hJ
UH

z
o

Io

<

s oUJ
u
UJ
Q

OQ

Uh

60497800 D

00

ooi

z
1
5
co o
s

o
o UJ
u 3 >
UJ u
<
o rt
tt, O
Ou
u S z
w
Uh

UJ
H

r i
UJ

>

a
o
z
H

CJ

is

CO

UJ

>
o
<

UJ
OQ

z
o
£
o

CJ

<

**•

H-l

5
to
CO Q

<

OQ

Q
H
Z
<

ZS-.

fe W (*

few o

Z m O

u Eo

OQ

O
Q

Oi

CO

2 o
oi

u^ -^ r=i

UJ

l-H U
^J
4
C
^ " UJ
-

£
ww
z
RD

UJ

UJ

< s
UJ,> Q

Uh

Uh

Uh

Uh CO'
O
r^,

oi

<
<

<
Q Z

gco
OQ
UJ
Q

>«

UJ

tt.

-00

oi
oi

ttl

hJ

<
<

UJ

tt,

B-l 3

Uh
CO

UH

CO
Oh

E
>>

OQ
xt

CO

rd
Oh

E

o

CO

CJ

XJ

xt

Uh
CO

C
O

rd

CO

E
CJ

CO

CO

CO

id

Oh

E
O

o

XJ

Uh

rd
Oh

S*

£
o

XI

Uh
CO

Uh

Td
O.

CJ

co
Xt

CO

CO

•d

E
o

CJ

CJ

Uh
CO

■dO.
E
o

"o.

£
o

o

CJ

Uh

Uh

rd
Oh

rd

E
o
CJ

CO

CO

■d

xt

*d

CO
3

oo

00

oo

oo

00

00

!a

.a
E

.a

.a

*n
Oh

't-i

00

oo

00

.a
,§

.a

00

H H

.a
v>
o,

H H

Oh

Of

O

O

O

£

■£-

o.
O

O

H->

Oh

Of

O

.a

1.

'•fH

+ J

Oh

O

O f

O

O
y^$*v

U-,

o

CO
UH

CJ

^^
co
CJ
HH

H
CO
O
Z

3

H
■f
d

o

3
<

00

T i
CJ

d

2

CO

E

v>

£cd
HH
oo

HH

Uh
CO

XJ

UH

1

CO

Y

<

tfH

CO

d

CO

o
o

CO

xt

XJ

2.

1
"<3

V

U-i
CO

CO

Oi

H-»

M
■Uh '£
d

HH

CO

V

•d

o

H
■df

d

•8

<4H

CO

CO

X,

CO

3

XJ

00

id

•I

CO

co

tfH

"ei3

CO

Uh

cd

CO

N

CO

sn

CO to
"UH O
"HJ
O

3

o
d
cd
o

CO
CJ

Uh
CO
T- t

t - i

S
o
rt

1" §

d

H
■f

+-t

d

d

CO

CO

o
nei1o
ie
stcf fno
e
ne
a
xbclut
CO o

CO

O

t-i

si

CJ

00
Uh

U -,

Cuh

d
cd

3

1

Uh

CO

CO

CQ

oi

O

Z

V
E[S
T
A
E
-

S
E
Q
U
E
N
C
E
.

H
TO
E
R
LI K
C
E
H
O
R
F O
U
N
TR
E
O
R
, H-l
UJ
Q

co
00

u z

CO

H-,

CJ

Z
O
u
><

ttl
Oi

UJ
Oi CQ

HH

f-, rQ
S HH

Z

o

s

H

OQ

tn
CO

»—H

1
CO
CO

N
M
O
U
E
F
D
E
A
l.C
R
T
LT
tt,
ML|

O
.A
N
T
SR
E
C
T
R
A
H
C
V
ED
E
C
IF
T
, C

U-l

tt.

s

CO

CJ

HH

>

.

Q oi

3

UJ

tt,

^

UJ
N

<

-

^

-

Sz

°g
rt £

O

rt

H
Ul

CQ
hJ O i
UJ
O O
Q CHJ

o
UJ

Uh

w

-tt.
<

g

c*
Uh
CO

E?
3

Oh t t . t o

H->
CO

£

xs
HH

HH

1
t*H

eo
XJ

'uh

ed

8
d
o

3

d

HH

UJ

tt.

o
o

>-

5 rt
ui
ri
o a
H
Oh

h-1

CO

Oh

O
Oi

Q

u-

U-i

x i
CO

"o.

E

H->

CJ

CO

d

<*^*N

d

E

CO
HH
•t-i

d

CO

£

CO
H->

cd
tn

HH

d

cd

•in
sn

<
<

CO

3>
Uh

O
Uh

2

CO

CO

4>

Ui

oi UJ
< H00
UJ
H r - i UJ
UJ Z
CO CQ

UJ

2

ttl

oi

H4

z

"co
CO

.2
HH

\-^

Z

CO •-'

E
cd
Uh
N
1
S
U
rN
IC
o
T em
at.ent
cd O

CJ

o

cd
O,

Uh
CO
•IH
CO

ct.

CJ
CJ

cd
Ih

o

£
o

V

V3

Oi
ttl

CJ

XJ

CO

CO

+H

CO

xSSfe.

3

cd

3

cd

3
>

1

1

+j'

d

CO

V

3

Uh
CO

3
>

CO

13

oo
Uh

d
00

OQ

3

CO

edrd
u
e
o
ir em
s.ent
cr *->

CO

3
>
■I
H H

Uh

d

£
H
■cfd

d

CO

'?

UH

HH

d

CO

HH

zHH

B-14

h->

d

CJ Oh

CO

ttl
Q
O
5S
O

I
OQ

H-i

d

Oh

o s

r—t

Ul
Q

rt'
uj
H
ttl

s

UJ
H
UJ

ttl

Z

.

2z

•5H

O uj
HH

rt tt,
>* UJ
HH

fi

H-l
OQ H-l

Q

Q

a

ID

tt,
rt
CO

Q

<

o

UJ

Uh

o
tt.

Z
HH
UJ

Uh

CJ
CJ
O

Oh

O

ffi

CJ

hJ
OQ

3s2
<

st t l
H

<
H

CO

ttJ S <
H ' >

UJ
H

O

CJ

Z

CO

H

<;

H-l t t l

O
Q
Oi

tt)
tt,

o

CO
CQ
uD
CO

/T^k^s

UJ

Uh

60497800 D
J ^ ^ \

o.

CQ

—3
Of

o.

E
o

E
o

XJ

E

E

E

E

N

E

E

Of

o

•d
O

oo
d

00
_d

E

+-*

xt

o

E

.a
E

o,
O

o,
O

o

O

rd

XJ

d

N

•*»
-Oh

O,

Oh

E
00

d

O

XJ

o

0 0

/fS\

o.
O

CO

o

oo
d

o

£
o

CJ

XJ

o

Oh

CJ

o

xt

o

O h

E

eo
•d

o

Td

E

E

Oh

Oh

O

O

Q
H
Z

o

o,
co
U
HH

uZ
co

H
CO

xt

O

z
o

-d

I

<:

eo
•d

3
'>

3

">

y

'>
.Y

xt

?
CO

CO

J#f^\

Oi

CO

CO

co

UJ
Q

o
s
o
z

a
o.

N

d rt
ed *o

■_ CO *■»

cd

S d x:
< c: .SP

d —*
cd P

u S3

S3 *t
cd cj
'C O

.2 .d'-0
*ri "C *->

Uh

H

tZ
d °0
o

Oh

o

CO Uh

d

Of

5S-23
■u
cd oo

I
CQ

oo eg

3>

O.
X

UJ
hJ
OQ

<

><

CO

UJ o

uj
Z

UJ

oi

S
•<
Z

UJ

trj um

tt.

3 OQ

aoo

UJ

rt

gffi

<

w <
^< eu
fc

•d « CO Ch
tt. »5 X> O

CO

CO

H Ou •

w < S

uj
HH

UJ
H

<:
CO

£ OQ
UJ
UJ

UJ £ CO

2 ffi
UJ
Uh

R
Y
N
T
E
UJ
Uh

R
G
A
P
Y
O
T
N
AO
2 <

tt]
OQ

1
ttl
CQ

z
S
Ul ><

2K
zUJf fe:
co
Q
S

u-l

fc S3

S
UJ

T
NG
N
A
R
Y
R
N
TO
fc >* UJ H

< x <
H

Uh

M*!

eo
Oh
Oh

cd

N

.£
x "oo
cj eo
fi

§ i.g
cr
31 s
ttl 8 E

d
d
c

^

"H-l

3 £
Uh

X>
d

<
Z
»-■
tti
H

cd UJ

CO

H 5 Uh
< CJ o
H U W
oo o UJ

S H

o-g

82

.a*

fc £ <

UJ

tt,

d

00
d
'C d
cd oo
91 ^
Oh
Of ^ 2

c £ 2 &
eo £ £ «

UJ

H^UJ

"~— OQ
CO
^

UJEo
D

Z Z
UJ -1
S rt

£

3

CO
UJ

o
Z

tt,

d

d

Z 3

UJ

UJ

•S £

H H

oi -

H-l 3

S

Oh ti

00

> .
< foic 53Q

a

UJ
Uh

zm Q
W
3 fc

UJ
H

UJ

Q ~
fc co

>

5 ^ w'

o Ul

z a

UJ

UJ
Uh

"OQ E*

»-> hJ

rt
5
wS

S
fc oi
Ui

oi
<

Ul

S
UJ
H

<

Eco

tt.

/»JJP*\

60497800 F

B-l 5

co
rd

Td
Oh

I

£
O

o
o

o
CQ

CO

xt
o

XJ

o

£

£

s•9

00

00

3

.a
.§.
G
■

:d

o,
E
o

rd

rd

E
o

E
o

Oh

CJ

XI

XJ

E

£

o

CJ

CJ

XI

o

E

00

00

3
a
.

3N

rd
O,

CO

o

00

o.

3N
'3

•d
O.

E
o

eo
XI
O

XJ

o

s

E

s.a

00

00

3N
■
£

£

+H

O f

O f

o

O

Of

Of

Oh

O

O

O

>*^^v

E
o

HH

Of

Oh

o

O

oo
d

•£

CO

E


Ti
cd
-|H
oo

CJ
co
CJ
H

2

8

UJ
Q

2
<

CO

H
UJ
C
A

•d

'?

CO

CO

co

cz>

H

CJ

d
X)

eo
CO

UJ

<

'lH

OO CO

£

;d
O

ffi

o
CO
Uh

ed
d

3+ j

00

<2

"oo

O
O

i-t

d

O .3 .2
tt.
cd
o
r2 CJ

xt
*HH

co

Xh

CO

co

 00
oo CO

3 o

oo

•d
fi < d
cd

3

fcI

Cd

.tl "5
M"1 CO

£3
H

ed

E
?.S
ed

ed !>

UJ

>
O ~

♦j

+J

cd d

a .

£
*
3 oo

x»
^

<
HH
HH

xt

>> i

^[ T l

t -dt

d

o £

z -

Uh

^ UJ
CO

Oh

3
3

uh fo

E
S
e
E ooo S fc
Cd H-l

j ^ ^ ^ V

fi ■* «
w E «
th

rt

S

OQ O. oo

CO
CO

Oi
UJ

>
tt)
rt

s

Ou

S
2

ttl

Uh

UJ

UJ

tt,

sH

UJ

Uh

hU

H

rt uj
ffi

< ttl rt o
H
H tt.
CO ttl
Oh

O

< tt,

ItCJ
Uh

UJ

tt,

HH

UJ
H

H

.

UJ ^o

fc 3

H

S 2~ c >o

HH

<

Uh

XI

Oh
*-i

CO

0> co

I
OQ

rt

a 2 S i S

Ul
Uh

f fi

Ul

OQ

fTl

CO H-l
r-\

Z O
ttl UL!

CO
Oh

z o
<;

,«*^?V

CO

rt
o s
rt r t
rt
o
ui tt.

60497800 D
/i

£

a

CO

U 3 ffi

00 J

UJ

H-f

•HH

CO

fc

.8?
cj Z

CO
CO

CO

2
d
CO

03 "d
d to

CO
H-l

CO

O

oo

oo

3

Oh

o

O

X3
Uh
O

3

"o

o

00
d

a
.

N

d

" • O , w,

d

£

o

d

d
'1Z
93
ed
P
CJ

co u-, .s

XJ

E

o

oo ZZ
*->
o

ta
'§ E
,_, CO

X I

00

d
N

o,
O

Oh

o.

o

00

E

Oh

£
o

ri

•d

CO

">

oo
oo

CO
CO
H-l
)—l

<

H
ttl
Q

uj

£
CO

CO

CO o

UJ
Q

O

s

£ oo

o
z
N

XJ

3

2 93
OO -°

H

o

d

op
co

r-\

OQ

<:

_

oo * ^5

0 «0 0H<

cd •*
fi
cd

U

d

rt

jj

d

P g c g

od
o

«"

^ 3 eo ^
C
3 to •£ x9i!
tt,

^

'£! d
ed cj op

o

fc

_■ £ "^

ed

hh «*-, ed

1—I

^ff . 2.2 w
S
rt § <
c
|2

«*h O CO

Oh

d

 3

<

M

Zc

60 3 £

O f !

"^ >2 -2

UJ
/?P^\

_

•d
co co

E

eo X, c
o •- «

E
o
I
CQ

CJ

3 3

S

CO eo
3
H-l

X t

s< eo

i+-i

3
co

Uh

■"

z £ <*f-H

«

rt O ~ {.j *zi
Uh hh CCJ
UJ H tS

CO

tt)

o
Q

UJ

Z

<
<
oi
<
ttl

H
U Oh
Uh
CO CO

ttl

tt.

60497800 D

uj

CO

CQ

D

CO

oHH

OQ

H
O
Z

H-l

00
HH

ffi
H

3s
§5
2

o

>

CU

<

UJ

- f c tt)
O h C O ffi

s s<

UJ

UJ

ui

Uh

Uh

Uh

<
f fi

UJ H

UJ
Uh

CO

rt

<

UJ

ffi
UJ
Uh

B-l 7

I h
CO

CQ

CO

'3h

o

o

E
O
CO

XJ

Uh
CO

Uh

Td
Oh

£
o

'S.
E
o

CO

eo

CO

o

•d

Uh
CO

Td

?d

rd

E
o

E
o

E
o

E
o

Oh

CJ

CJ

CJ

CO

eo
•d

CO

xt

XJ

CO

rd

Oh

£
o

UH
CO

Uh*

Uh
CO

Uh

Td

Oh

Oh

Oh

CJ

eo

XJ

XJ

.a
£

.3
.a
E

CO

• d

ySv

xt

CO

-sn
a
sn

00

3

.a

1
.
H H

O,

O

00

00

00

3

.a

.a

H H

't-t

3

.a
E
•a

Oh

O h

O

>o.
a
o

H H

Oh

O

00

0 0

3

d

O h

O

O

00

3

.a
£

t - t

T ^

Oh

O h

O

O

op
'3
CO
HH

cd

HH
OO

d

cj

co

u
HH

H
co
O
Z

d

o
•a
o

<

M
■
d

CO

•d

'?

o

2
3

H^

Q

d

E
3
3

E

CJ

CJ

CJ

f - i

<

HH

<

l—i

Ul

tt)

UJ

UJ

UJ

CO

CO

CO
CO

eo

CO

CO

CO

CO

00

CO

CO

cd

ed

3

3

T3 cd
CO

X J

dj
"3

d

CO

■'>

hh



UJ

•3I

fc

OQ

CfH

<

UJ

z
U
O

t—i

H-l

eo

CO

rt

8
CO
UH

•*■;
o .d
3
CO
■f
a
93

«

*h3
oo cd
cd cj
•H

rt

CO
t-t
CJ

CO

HH

CO

Xt

E

2 ^
°d C3O

C

tt,

oo
oo
CO

J

H-l ~

O

UJ

o
«
fc /-s

<•

sr t

r-i

hJ 5

o

tt,

ttl

sttl
<•

CO

2

ttl
tt,

HH
00

sn

Uh

3

ta
+H

Cb

CO

. UJ

<1

O

< o

CO CO

o
CO

-in
CO
XJ

cd

Uh

£
eo
00

rt

HH

r t tt,
rt
UJ
ui CO
u
UJ
ffi
rt
H
H-l OU cu oi
o
< CO O
r t UJ
o
zH H H H O
UJ
tt, ffi
h-1 O
Oi
CO
H-l H-l
CJ Z Oh
HH
hJ
CO < : o
H-l t t l CJ
tt, tt.
CO 0 0

co

HH

<

o

o

oi
Ui

CO

CJ

rt H
<

H-l

HH

ttl

tt.

Uh

0 0

CJ

0 0

•

2 ort w2
CJ U h f fi

h J UJ

H

tt.
UJ

tt.

CO

£

X)

HH

>^^\

eo
00

ed
X !

H-.

ttJ
CQ

UJ H
CJ tt,

2 OOi
Ul

CO

z

UJ

h-l
hJ

KtH

u

,**S\

3

Ui OQ

UJ

r t oi
ui
a H 

UJ CO CO

UJ

Uh

CO

UJ

o

HH

3">

d

HH

•H

d

t J

d

Uh
Uh

CO

CO
t-t

O

rt

UJ

^

X )

xt

CO
HH

tt.
U-

o

•8

X t

o

Uh

s

o
tt,

CO

cd

3 &
'~ 2

cd

Oi

Oi uj CO
f fi u
HH
U UJ "
ffi
rt'
UJ
f c Q H *

Uh d 3
eo ^

UJ

rx fc

cd
CJ
tin

cd
•H

CJ

Uh

tn

cd
co

HH

oi

UJ

UJ

eo

CO

O,

OQ

tt)
tt.

eo

Xt

CO

s

cd
X5

•o ic1 •S
d Ou
o s 00

co

>
a

ei
Uh

HH
00
Uh

03

3

Oh

Uh
CO
t-t

*d
o F"!
O ta

CJ

I
OQ

+H

00

z
< o
o
UJ s z
H-l
fi

E
L
G
A
LC
lN
D
R
E
M
A
IT
W
N
M
E
E L
E
T
E
D
.
Ou
j-J UJ

ffi

ttJ
Uh

CJ

j-4

Uh 2
ttJ

o o

tt,

«^^\
B-l 8

60497800 F
,i*ie^\

l-i
co
r d

Uh

CO

rd

o

E
O
>.

O
Q

o
CJ

CJ

CJ

E
o

CO

CO

rd

CO

ra

E
o

E
o

o.

E
o

CJ

eo

CO

*d

Uh
CO

rd

O f

E
o

XJ

Uh
CO

Uh

CO

o.

•d

xt

Uh

CO

td
Oh

E

CO

Uh

rd
Oh

eo
XJ

X)

Uh

Oh

'Bf

CJ

CJ

Uf

E
o

eo
• d

I h
CO

Uh

CO

eo

O h

'cx

Td

E
o

rd
Oh

E
o

E
o

CJ



<

CO

IfH

xt

■>

tt)
Q

CO

CO

23 23

co
CO

CO

CO
H-l
HH

<

CO

Q

CO

CO

co
CO

CO

H
UJ
Q

tt)

Q

"

H-l

^J

CO

co

CO

eo

3
">

•d

">

3">

3
■>

3>

<

<4H

C*H

3

3

C h

( fi f

Y

y

H

3
co

CO

Y

Y

3

CO

£ E
CO CO

E3
S
O h.. »-■
r o

CO

CO

si
cd
cd
Oh
eo

oo

o

ed

Uh

oo
ed

Xt
cd eo
Uh
oo

2 oo

3

CO

Hd

uh CO

Y

15

•~^.

rt g

N

ed

d

D

j

00

£*



^J
tCO

3
'>

3
c2

oj,

ttl

*H^f
CO

CO

CO

co

CO

Oi

9
UJ
I - ,

Ul

CO

D

ttl

CO

oo
cd
00
CO

fi

O
ttl

H-l
H-l

HH

UJ
t t f

60497800 D
J^^\

JJ5-

▶
J

tt.
h-1
UJ
OQ

hJ
UJ

<,

i? tt,
o

ttl z

CO

H

o

H-l

UJ

UJ

UJ

tt,

<

H

H-l
hJ

UJ

tt)

HH

UJ

tt.

z

00

r* hh
00
UJ

OQ

CO

fc ^


3

a
t

S
<

CJ

2

2

•2

Ui

H
ttl
Q

<
H
tt)
a

Q

CO

1-^

<
XJ

V

2

o

O

CJ

fi
o
•i-i

yfS^\

o

00

.3

Oh

rd
Oh

E
o

E

00

.a

O

XJ
O

£

00

:d
Oh

o

CJ

o

.3

rd
Oh

Oh

o

XJ

oo

■
a

£

o
o

CO

•d
o

E

rd

E

Oh

X)

o

X )

rd

£

CJ

^*fSS\

l—i

HH

">

f

■<

CO

XI

XJ

<

CO

XJ

,

UJ
Q

Q

U -i

co

CO

c«

CO

co

CO

/^^^*\

Ui
Q
O

o
N

fied
CJ

CJ

i

OQ

a
CQ

<

CO

CO

fi

xt

XJ

y

2

V

CO

V

<+H

CO

xt
"S

•.dsI

CO

eo

3■
>

3>

co

co
CO

CO

I

CO

V

3
">

'>

co

CO

CO

Xt

23

y

CO

XJ

co

co

Q
ttl
HH

fc <_!

eg
fc w
ui

Ul

fHfi

tt,
o
ttl w
Q r%
o
<

H-l

<

o
UJ
hJ
H-l

tt)
tt.

B-20

J

2

< z
<3 o

SP
fc y
UJ

Uh

si

Uh

O
ttl
00

O
fi

.
rZ

3
2
O co
uj

hJ

sa
tt)
u-

UJ

rt
o
z
o
HH

tt.
O

2 o


>«
<:

CO

«,
ui

s<

s zz

u
X
tt)

o

tti
CJ HH
Z H ttl
U

ui

tt- rto
<: <

Uh

60497800 F

0F*\

o,
E
o
CQ

XJ

•d

o
£

00
d

xt

X I

o
S

o
E

00

X )

o

o.

XJ

o
£

00
d

.3

Td

Of

E
o
XJ

o
E

00

o
E

00
d

.3

00
d

*d

XJ

o
E

o
E

oo
d

00

.3

3

E

(0$\

o,
O

o,
O

Oh

O

O

o.
O

Oh

O

o.
O

Oh

Oh

O

O

t-i eo
Cd Oh

.2
>>
oo *-"
£ t 91
n
•

-

Uh

oo ed
O
"
.Si co

■fH -jn
cd

d
CO
CJ

•3
.8
CJ *^

o
o

H
co
O
Z

o
<

2

2

<
H
tt)
Q

<
H
tt)
Q

CO

ul
Q
O
S

a> hh

XJ
CO
XJ

■>

y

3
*>

.Y

T3

J
^-H

° 2S oH
si o, O

CJ O H-l

UJ

2

O

00

HJ

to

UH

Z

o

cd

3 .S

CO „ r->

o —'

N

^

XJ

co

CO

CO
^

o
z

oo
3


f c £

rt J2Z

o
OQ
U l

r i
CQ

<

ttJ *- o

xt

r>

•U^J d
_
hJ 
ttl

H-l

Q
hJ

tt, O
O Z
W g
co H
jb co
rt
tt)
H

UJ

sg
Q g,

x t X3 eo
d
ed

tt)
Uh

w UJ o
£
Z
w O
< tt)

oi '
Q

> fc

>

O uj
uj

o

OQ

UJ

H
O
UJ
Uh

H
CO
Uh

>oi

CJ

oH

> H
ttJ

tt)
Uh

H-J

00
ttH H

tZ

CO

eh0 ecd
r U
N
C

CO
i - i
ed
00

ttl
CJ

fc
Z S* Q
3

UJ cj

u
<
rt

>
Z

60497800 D

z

Q3

H Ofttn

>*

OQ

r-i

O
U
B
S
M
A
O
G
RR

>* Oi r*
< Oh °
H-l

o
z

Ou
ttl 00

zU J

Q D

oo .<

rt uj

Uh f-1 H-l"

fttl c h^ O^
fc Z rU
ttl fc

tt)
tt.

s ri

UJ

Q oi
UJ UJ

UJ oo UJ <*

a

»J uj
fc ffi
co C

^z
UJ
Uh

.

4)

M

■I

• •d" " Obf f * S I3

CO

O

>1

Uh

93

Uh

S 5

hJ

3

•I

CO

Q
ttl
co
D

a

oo

ttl r t
u Oh

O tu
UJ S

S fc

is d
2 o -fi

z
o

ttl
>

oi ~

CO

CO
UJ

oi

ttl '*"'

&
£
fc
rn
ffi

fc U

<
z
o < UJ
o CQ UJ

3 co

1

H

<
Z
H
M CO

° O
hJ ^ co*
< z rt
2o o

3 ffi *
rr* Oh
UJ
Uh

ES O

B-21

/•5S&S

—
->

rd

O.

Oh

E
o
o

OQ

xJ
CO
3

CO

XJ

XJ

o

o

s

E
00

00

.3

Oh

CJ

co
XJ

§

E

XJ

00
d

.a

E
00

00

.3

.3

o.
O

o

O

o

£

/*^\

E
*aOh

Oh

o

00
d

3

o
co
xt

• d

o

E

00

£
o

o

o

E

Oh

£
o

XJ

o

Td
Oh

Oh

£
o

£
o

.3

O

O

o.

Oh

.3
N

Oh

CO

rd

0.

Oh

O

O

y*5^$^\

"1

oo OO

3
§
6
CO
•2*
cd

oo
d

00

«
cd
2
o
tido Uo H<=>° *
a o
s? ^

3 r,
55
O
00

E ".3


>

O
CJ Oooh

H

tt)
O

^ - e

CO

CJ
CO

S
3

d
"K
to
O Uh

fi «
d
£
cd »H

oo

CO

oo

d
cd

i
CQ

o
°
Q £

ttl
fi
O
Q

o

< tH

-5 «4H

1st o

w

HH

&

■|
-> 5
ed cd

00

£ 3

CO

.2 O

eo yd

=

•^ 3
O

•d a

« Jg
2 *""' XJ
CO

U iS 3

t2

c& fi

eo

>

—f Uh
CO O

-8

1 'dE•*-•
cj

eo o. o

S

00

<"

xt

•d

s' >

"?

CO

^

3

CO

d

/^^s

Oh

E

-2
ed °
cj

«H

00 03
UH

< .-a
Q .3

xt

XJ

5g

X)

*'>

'>

^

"j>

.Y

•d -S?

CO

CQ cd

<

co

§
tt.

HH

w Ou

Z uj
H
Z
a uUlj r t

o
UJ
CQ

2

Ou

O

3
UJ
Ui

B-22

CO

££
g o
00

H

HH

O ffi

CO

cu
O

3
tt)
Uh

Sh3
UJ
H CQ

Uh

O r-f
z

o
z
co
-h

uj

tt.

35

Z
o ii
fi u
Uh

co rt CO
UJ Z

s2 rtq <:z

ttl CQ

rt rt
ttJ h

uj
tt,

O.

H

o

ri O
tt, Q
H-l

<
Z

UJ

•< fc S

2 <3 s
o
^ <
Z ^ H
£

tt)
Uh

zu

o

Z

o
W 52
00

00 tt,

O

UJ

Uh

/*^\

fc oi

03

ttl
CQ

<

Oi

_)
tt)

tt, rot
H

H

ttl
UJ
Q O
coZ
H co

H
CJ

CO

r t ttl
rt
ft
ui

si

CO

<
Z
O
CO

Oi
ttl

uj O H
r t Q tSt l
oi
cu <
UJ

Uh

rt
o

y^^\^

m

rt sg
9<
oz ^S\

oE

ifP?N

OQ

Oh

Oh

E

o
CJ

E

o
CJ

eo
XJ
O

o
CJ

CO

XI

E

£

E

o

oo

00

oo

(M

(M

E

E

Oh

Oh

cHHj
H
co
O
Z

o

oo
d

00

3

E

HH
Oh

O

O

XJ

XJ

O

Oh

O

O

Of

E

o£

o
CJ

oCJ

CO

eo
XJ
O

•d
O

E
oo
d

•a

o.

rd

Oh

£
o

Of

E
o
CJ

CO
X I

XJ

o

oo

o

E

00

E

0 0
d

.3

d

XJ

o

E

£

00

.3

£
Oh

O

Oh

Oh

O

Oh

O

Oh

O

O

co

CO

CO

XJ

XI

'>

3
■>

co

CO

d
o
o

HH

<

o

r

o

t - t

Of

tn

o
CJ

•d

* H

CJ

E
o

eo
•d

o
E

E

Of

E

eo
tn

E

.3
N

Oh

'>

y
CO

*>

en

co

eo

ttl
Q

O

s
o
z

3
s
HH

B
o

CJ
d
cd

o

£d
O
Q

ttl

H-)
OQ

<

op
oo

XI

■
>

XJ

CO

CO

xt

V

"J>

eo

co

co

23

CO

CO

ttl
CO

<:

H
Z
ui

Z

tt,
tt)

S
uj

rt

9oi
<

UJ
H

H Oi

£2 rt

oi

O
Z

ffi
o
H

uj
tt.

60497800 D
0$®\

S h ^

5
^
s £ uj
-_J IH ^-f

o

S

a •—i co

2
£
co Q

f fi

u

H

Z fc
uj fc
S tt-

s
z

CO

rt

O
uj

s

UJ

tt.

tn

3 rt

tt)
U-

UJ
Uh

cu <

ttl

tt.

Oh

ui

tt.

UJ

rt
Q

rt
<

g
<:
z S
oz
tt)
Uh

ttl
H

▶J
<
D
H

>H

Q m
fc Q
Z UJ

hJ

<
fc
CO rt'
g
hJ w
uj

Ui

oi

s

CJ

< „3

fc

O

u

tt,

< S

ou

co

OU ttJ

H °
Z^tti
UJ a rt fc
S W OQ
5 Zw o <
z < £ fc 2

Oi « ttJ
UJ

oi

OQ

CO

OQ

52

D
H

ttJ
Uh

s

< rt

Q
i°
O u
O OQ H
u tQt l
tt, ttl
O Q s z

3



Uh

B-23

Oh

Oh

o

CJ

E
o

E
o
O
Q

eo
•d
O

eo
XJ
O

d

£
o

E
o

Oh

cj

CJ

CJ

CJ

CJ

CO
X J

e
o
xt

£
o

•d

eo
Xt

£

£

CO

o

oo

3N

.3

g•
Of

O

o

O

o
CJ

CO

co
CJ
r—i
H
co
O
Z

HH

3

.3

t-t

t-t

Oh

Of

cj

HH

<:

CO

-I

d

cj E

oo

.3
N

1

g
'

Oh

o

O

ffi

ffi

•d
CO
xS
CJ
d
d

XJ
CO
X !
CJ

/ ^ ff J X

r^^\

d
d

Oh

o

CO

CO
CO

£

Oh

<

H
ttl
Q

XJ
'i>

00

o

E

.3
N

3

•fi *d

CO

00

J3

UH O

M

00

d

CfH

Ch.
cl

<

o

o

O

3,-2
E
o rt
2
2
3d
.3
3 -*

d
xt

o

Oh

Of

so

O

g'

t-t

Oh

»tfi$K

Of

00

3

rd

Oh

E

00

00

rd

Oh

xt
O

E

E

rd

co

co

CJ

d

3

o

o
d
eo 5
rCHJ

O
o

tt)
Q

i

o
zr - ,

33 .2
00

N

•a E

o< fi

oo CO
t-t
t-t

uh .§
o xt

h t-t
rt
• OJh

o

ia
l
OQ

a
OQ

<

8-

3

M

OO

cd

a

- fi

CO
cd
d

E
^ p
cd

CJ

xt

XI

o

Y

E ^

UJ

c

>

-I

"fi _

eo d rt

H 3

«*S3"*V

"J>

co

rt

<
S
Q 2 O

22 •< <
fc

H

>*

C O f fi
r_
H

HH

UJ
H
CJ

2 uj
ri <->

ttl

H

2
tti

2

2 £

OQ UJ
CO

UJ

z
o

5
a
UJ

o HO
f fi z

rt

tt)
tt.

h tt, rt

z2

Uh

«0h"

fc

CO H

aia
£p^
< fc«
H S •.

uh XJ
cd
. CO Uh

Oh
Oh

CO rt Oh

UJ
Oi O
Ou ttJ

fc

rtg

Oi U

f fi
hJ H
co H

ttJ ^

tt.

Oh CO

uj

tt.

60497800 D

jfJf^V

Oh

E

rd
Oh

zzi
Oh

Oh

o

CJ

o
CJ

E
o

o

>,

•d

XJ

£

E

o

OQ

eo
XJ
O

o

oo

.3

CO

XI

o
E

£

00
d

E
o

oo
d

.a

00

d

eo
XJ
O

XI

o

d
'n

Oh

Oh

o

O

Oh

O

O

CJ

XJ
O

E

oo

00

.3
N

Oh

Oh

Oh

o

O

E
o
CJ

.

H
co
O

d
CO
XI

zo

.Y

2

c2

■
>

"i>

<

Ih

XI

t-t
Uh

co
t-t

CO

xt

'>
.Y

CO

00

CO

3
">

xt

o
Xh
O

E
ed
Oh

< H

CO

CO

uj
Q

O
O

z

HH

N

OQ

op
co

ttl
H-)

CO

XJ

xt

3

OQ

<

tn

ttl

Uh E£

°co

so Bj ««f c

OQ

•ttJ

Z
S H
<

co

oi
O

UJ

q
uj

fe

§ O co

s< t t l
oi

fc j 2
oi uj *>

tu <

Hz°
fc S w

3*

/pten

hJ

co

co

60497800 D

co

O
O
rt

Oh
UJ
Uh

UJ

z

Cat H-l

H-l

CO

UJ
OQ

r-i

ffi
H

<
fc og

o
zt t l

Q >
UJ ul

fi

fc ei

p ui
Oi PL,

rt

ttl ttl
OQ Q
ttJ
LU

rt
O

o

Z Z
UJ  fc

00

00

Z

r

Z

UJ
UJ

rt
UJ

tt,

UJ

S
N
R
U
T
O
E
R S
D
E
C
A
R
LIT
A H<*
M
Y
E
M
O
T
N
A V
UJ
Uh

z5 az

CO

G
H
TR
A
N
E
P
I O
W
D
LE
L
Y
B
AO
,R
A
N
T
SL R
E
N
T
H
S
.E
S
I
ttl

tt.

o
o <
Uh U Oh

tt)

ri
5i <
£, ^ Oh
§
l—'
fc
5/3COz £Uh
O uj
tt)

CJ hJ

Uh

B-25

/"SsV

CO
r d
Oh

Uh
CO

I h
CO

'o,

r d
Oh

CJ

CJ

CJ

Uh

>.
OQ

£
o

£
o

Uh
CO

Uh
CO

Of

r d
Of

rd

£
o

£
o

rd

Uh
CO

Uh
CO

Uh
CO

Uh
CO

rd

r d
Of

£
o

E
o

r d
Oh

Ih
CO

E
o
CJ

Oh

o<

r d
Oh

CJ

CJ

CJ

E
o

E

£
o

eo

CO

CO

CO

eo

CO

CO

co

CO

XJ

XJ

XJ

X )

t n

X I

XJ

XJ

X )

oo
.3

.£

00
,d

.3

1

t - t

Uh

C
O
r d
Oh

E

o

o
CJ

eo
X )

yS£v

CO

XJ

• d

CO
3

0 0
H H

00

00

.'n
3

1
o<

E
Oh

O

00

Oh

O

00

J
o

O

I

3
E

O

O

—
*•>

Oh

O f

O

00

.3
N

00

oo

00

.a
s
Oh
o

E

-T>

Oh

00

.3
'§

.3

.3
t - >

HH

Oh

Of

O

Of

O

O

in
ed

■d

eo
sn
3
CO

E
cd
d

o
u
tn
U
HH

H
oo
O
Z

ci

d*

eo

c
d

<

o
en

H

d

Uh

CO

X I

c2

2
3

M
o
eo
X !

■>

o

_d

3CJ

d

o

CfH

CO

CO*

cd
d

HH

d

93

CO

CO

3">

X I

U-i

CfH

ed

J3
3CJ

o
CJ

ja
3CJ

CJ

/^^\

CO

S3

.2
*a
cd
>

3CJ

H

H
UJ
Q

<

tt)
Q

2
3

CO

r-i

<

>

d
3

j-J

CO

CO
CO

CO
CO

CO

CO

H-<

H->

co

CO

•<
H
UJ
Q

ttl
Q

eo

CO
CO

co
CO

ttl

CO

CO

co
CO

UJ
Q

a

eo

CO

eo
CO

CO

CO

ttl
Q
O
d

o
z

o

HH

cd
CJ

33
d

CJ

o

ttl
fi

OQ

<

ed

s

^

CO

CfH

CO
t-t
cd
sn

X t
CO

t - t

^o
3

3>

00
CO



3>

X )

- d

Cf-f

2
<

U-i

CfH

HH

CO

CO
CO

CO

CO

CO

S

Oi

tt)
Uh

<

s

o
o
H

t - t

eo
X J
"j5

cl
id

CUH

CO
CO

co

Uh
CO

oi

CO

D
E
F
R
E
O
S
TY
B
LIL
C
AW
E
D
S
R
E
H
U
A
LE N
S
U
E
N
B
R
O
N
U
-IT
A
M
E
.
N
EU
S
N
R
B
M
A
O
I:tu
U
E
T R

X )

Cxi

OQ

H
CO

CO

i-^

H-l

UJ

3
■>

CO

>-^

1—1

s

H H

CO

<
Z
HH

u CJ
o >z-

CO

H H

CO

a
a

H

3
'>

CO

xt

co'
oi
UJ
H
Ui CJ

o
o

UJ
Uh

cd

CJ

CO

H-l

s

in

.3
H
■

CO

CO

00
cd
co
oo
co

j

cd
X ,
CJ

o\

,00
CO

Uh
Uh
CO

y
ed
Uh

d

CfH

O

CO

,fi
t-t
eo
CJ
d

Uh

sn
Uh

3

N

I
OQ

sn

't-t
cd

ttl

s

sttl

CO U h

UJ

tt.

UJ
Q

H

X
A
N
T
Y
R
S
E
O
RI
uj
Uh

CO

D
A
T
E
M
IS
.TIL

ttl

tt.

S
c
H
CO

ttl ttl
o
X Z
< ttl
H-l

tt)
X H
<
< H

z*
z

so i

8
ttl
oi

rt
uj
X
< O
t—i
H H

ttl

CO

<
Q

>■<

X
A
N
T
Y
R
S
E
O
RI
UJ

tt.

CO

D
U
M
T
M
S
Y
R
G
A
JU
M
N
T
E
JO
F
E
M
T
A
E
N
O
S
T
N
.U
F
N
C
IT

ttJ

tt,

5
a
UJ

H H

r-i

Oi

o

CO

UJ

z

UJ

O
X Q
< Q

s

UJ

CO CU

UJ
Uh

rt

rt

rt
oi
uj
X
<:

§
oi

o

CJ
Ui ttJ
Ou

H

S
UJ
O

00

UJ
H

z

<

X HQ^
«
CO

H
ttl

tt,

CO

/^Sv

ttJ

ttJ

%

3

ttjt^^^S

B-26

60497800 D

/pus.

>.

CQ

XJ

X I

o
E
00

00

.3

Of

Oh

O

£
o
cj

E
o
CJ

E
o

X t

XJ

o

£

T3
Oh

r d
Oh

£
o
cj
•d

XJ
O

o
E

E

o
£

OO

00

O.

o.
O

c

.3

Oh

O

Oh

X t
O

o
£

.3

Oh

eo

• d

o
E

Oh

Oh

O

Oh

O

Oh

O

o

O

d

o

/f$$&K.

HH

o

00
00

e
o
Uh

cd
S3

Oh

tn
CO

X

CO
.

f.

d

XJ
cd

CO

cd
£ >

CJ

*rrS

CO
t-i

tn

U
H
co
O
Z

2

00

<
H

<

o

CO

• d

3
'>

ttl
Q

o

Uh
CO
00
eo

cd

3
'>
.Y

2
3
C f-f

S

co

t-t

d

d
o

3

Xt"
eo
d
oo
CJ
CO X J
Xh
co
CJ cd S 3

CO

UJ

Q
O
S

d

o
S

cd

CO

N

o

3 «=

3
cd
O

I
OQ

ttl
hJ

OQ

<

Uh *-*
■S
co

d
O
cj

00
XJ

G
cd

X3 vi
cd ,d
*"' cd

>

y

H

cj

xt
eo

•d it

° g

ed
CJ

8 g

oo
ed

CO

Si o

.3 2

o

d .2

£

x:
d
o

» -2
E 5

co
*■'
Uh
fV

3
d «Uh

3 Uh
cd fo

£

oo o


.2
oo «a
cd

tn &

00

eo

CO
t-t Uh
cd co
t-t r—J

Uh

X
° o£,
2 E

Uh

Oh

X

" a

2
H

£ °

93

oo

co

o -2
"a
*s

XJ
cd

oo co

CO *-"
Uh
Uh
CO

•d

X t

■>

x .2

>

Oh

co

£
o

O

-fi 2

S E

x;
H

H

co

cj

rt

UJ
H

OQ

/$$&\

ss oi
H
co

< UJ

UJ
Oi

o

Ul
Ui

Oi

zo
u

£§
CO £
CQ ""■ .

ttn £!

S
2
H co

ttj
hJ

9

3h f-H

UJ

tt.

tn

Uh

#
f H

so •

/$^V

H-)

<

ttl

uj
tt.

ttl

Uh

oi
O

Z
I o£

ttl
ttl

o

oi
I O

Oi
ttl

31
fc ^

CO

Q/ CO

si

CO

£

uj oi ttJ
-1
S
CQ
tt)
<
H
«,
ttl
tt,

CO

H-)

tt.

>

o

•-1 uj
w

§.

CO

CO

o
z

1

t t l CQ

n
OQ

z£

tt.

H
CO

< rt

rt

CO
CO

O
H-l
tt.
rt
uj

Ul
UJ

o

z

>
H
co
H

ttl

tt.

a. t t l

tt.

UJ

UJ

H-l
OQ

<

o
oi
ft

UJ

f

oi

ui ' O
fc rr 0CO0
oq fc UJ

f t ft <
z

V
A
B
R
I E
D
M
P
IL M
P
S
E
L
I

CO

2
O
DT
O
R
N
O
T
L R
E
S
B
A
CO

>
fi

<

5 H

2
o
oo Z
CO

UJ oo
Oi ~

w J J

u
w o
O £
2

rt
Ul

ttJ < <

s 

'>

£eo

<

co

•d

3
>

*J>

x;
o

CO

'>

.Y

CO

co

ttl
Q
O

S
o

oo

N

s

•h

CO

HH

e
o
I
OQ

:>

>

B o
"3
S
.P
co

ttl
hJ
O
Q

<

■a d
fi fi
xt

XJ
'i>

CO

HH

q
H-l

3>
co

CO

Ul CO
O
Q
H

CO

O

tt.
oo

9
ttl

UJ

tt,

tn

Oh- fdH
£ o *Q r t

o

2fc

ui •
y*?^|V

ttj
UJ ■<
CO E-1 Q
U

< CO

z ffi

T

o fc

tt, rt
ttl
ffi Oh
H

XJ

.2
£ **"'
53
o o 5o■_!
d

j*~^ s.

rt tt)

H-l

B-28

.2

fi
*ri
"^
I

~^ H
co
o
co 5
fc ?-V •

UJ

P

UJ

w

Oh

o

o

00

.3

.a

o

00

.3
3

£

t-t
Oh

O h

O

O

3
>

3

X i

3

3

cd

P

3
°fi
8 -a
CJ

r; » c
2
G t-fi
- t CtS
.H
,d
- fi e 1

tn

rt 'I I

CJ

w
o

3
*>

z
o

* .. 3

tn

Cm

>

j*-:

<

CJ
eo

CO O
-^ 1-1
CO

x:

o

Uh

CkH

CO
Uh

ttl
Q
O

X I

>

CO
co

•b y

CO
CO

° £ -d

G -5-o
o
■-1

O

z

co 52 G
*d eo 2

N

d

rt fc*
> ^
3eo S

ttl

op
co

xt

**sz
o ±:

H-l

OQ

<

^

3 E
sn

X!

rt

Uh

. 00

H
O co

CO

s
ttJ
s
•<
z

Q

60497800 D
/0$£\

uj
Ou

ttl

o
UJ

tt.

> ttf
OQ

OQ

< $
H-l

UJ

s
z<:

2.

H

rt fc

Z +

rt hh*
ffi < o
ttJ
tt. CzO rt
H
o i ttl
co
HH

ttl

tt,

o

H-)

fc£
CO '"",

o<

OQ U O u

CJ

d

Xi
X t

00
G

tn

ttl

Uh

<
o

O

d

eo eo
'

co 00

E eo fc .2
Uh
-j
Vi

>> = S

.Y
XJ

2 co £
d x: £

hJ Z fc

2w

^ "^fttj

00 z
CQ UJ
D rt

fc o d

H-l

O <
H Z

5

ui
co

ttl

rt

/—\

,2
cj
4)
XJ

CO
uh

ttJ
Q >\ r%
uj fc Q

H
tt.
ttl

D

z
/s^sfeV

d
d
cd
O

Q £ x:
oo

«•§
S 2

<
&1
Q .23 d

<
< <

hh eo

"

HH O
O ~~
d
d O
ed

£
o
eo

d

<2 0x x.

ed

XJ UH
cd OO

•a O

OQ

y

si

CO UJ

. fc
>> tt)

Z oi
S _ CJ

z o
0 0 3
O S f fl

l>
o
§
o rt

UJ

ttJ

Uh

Uh

B-29

,/^^*\

>.

O
Q

O,
E
o
o

CO
Td

o.
£
o

Oh

E
o
o

co
• d

XJ

E

£

£

o

oo

.3
N

CJ
C
O

CO

XI

xt
o

o

E

£

oo

00

3N

O
O

o

o

H
o

£

cj

X I

CU

Oh

oo

oo

.2

.3

.3
N

.a

rd

rd

rd

fc

£
o

£
o

E
o

co
•d

XJ

Oh

Oh

Oh

Oh

O

O

O

Oh

Of

o

O

CJ

eo
Xt
O

xt
o

00

.3

Oh

E
00
.3
N

E
00

.3

g
'

Oh

O

o

o

£
oo
.3
N
E

E

Oh

Oh

CJ

CJ
CO

.§
Oh

CO

CO

rd

Oh

O

Oh

^ S \

O

O

/*5$|jV

o
cj
xn
u
t—i
H
CO
O
Z

■
•a

CJ

<

• d

Q E E
UJ
Q
O

o

CJ
co

.3

rd
oo
cd
X!

xt

Uh

N

o
d

H
■I

CO

CO

oo
Uh

<

CO


00
CO

'•—•
w ' ct-t
d
CO

00

XJ
«
XI
—*
o

o ?

93 CSd

ri
r'

XJ

5
■

•a .a

G
ed

H x>M

a CO
ed

S3 .

£ E
cd
Uh

on
o
UH

'>

S
•

CO
CO

ed Oh
co
Oh (0
Oh
cd

CO
XJ

V
CfH

3
co

Ix
<
Z
Oh < rt

H-l rH

fi

<

z .
ffi fc

UJ

o

5
1
HH

3
CJ

S2
ss
^5 rt
o
H H
s<
tt.

XJ "hh CO

55
.3 .3eo«a
eo K T5
<£

H

o

Oh

3

>

X )

d
CfH

3
oo

c55

$

UJ
H

S §

o
H

tt)

o
a
UJ

z
o

N

fc 5

tt)
rt

Uui

5 2 o
fc S
2
UJ

eo

•2 2 -d

Oh

Oi H <:
W co H
co



eo oo si
*-t
9 3 sn
* d 00
'd

<

3'>

X )

XJ

'>

o

g5

z
o
o
u

2

<

H
co
Q
UJ
N
HH

z
o
o
cj

O ttl

rt rt

tt)
rt

OQ Ou
uj

UJ
Uh

ttJ

tt,

0%$&K

i=q 5 w
^rt z
ttl
Uh

tt)
tt,

a ==
o

/^Sv

,/^&X

B-30

60497800 E

/#^S

/sP^V

Uh
CO

Uh

CO

73
O,

rd

o

o

CJ

CQ

Uh

73

co
rza

E

£

CJ

CJ

Oh

E
o

eo
XI

CO

XJ

Uh

rd

CO

E

E

Uh

r d

CO

o.
o

• CJ

CO

co
•d

X)

Ui

£

CJ

Uh

C
O

Oh

o

CO

XI

u4

Uh

C
O
ZZOh

Uh

E

Oh

CJ

CJ

o

£
o

eo
XJ

CO
X )

• d

CJ

CO

ra

'Of

o

Uh

eo

93

'Of

£
o

£
o

eo
Xt

CO

CO

T3

•d

CO

d

oo
H H

00

oo

00

.3

_d
*N

E
■»
+
Oh

£
H
■Oh
f

o

OO

o.
O

00

.3

.a

fc

O

oo

00

.£

_c

00

00

.3

.a

.3

00

.3

s:

.a

* - t

Oh

Oh

O

Oh

O

Of

O

Of

O

Oh

O

Oh

o

O

XJ

t n

0&\


o

H

Q

<

X)

">
.Y

'>

'i>

CO
CO

Q
O

<

Oh
Oh
cd

o

N
oo

3 fi

d

ed
cj

«
30 0

0$\

CQ

tt)
t-i
CQ

<
J0^\

'>

co

tt)

o
zHH

■>

'>

S3
2
cd fc
—i CJ

3
d H«
H
CO sn

O

.

oo O
co X
o
Q
O
—
Uh fO
Oh CO
■* -■

^

d3

fi

G

Ss

E .2cd

.E°

XJ

3-°

cd

"" CO

Oh

CO

Uh

rd

Uh

<1)
CJ X I

XJ 00
oo

CO G

ca

ed .,_,

3 £2
>»<

Uh

O

cd E—

eo Z
to CO
CO

2

XJ

">

<
eo hh

SX

f"H {/]

D

x: «

Q

co CO
O- XJ x i

•d

CO

.V

Cf-f

G

cd

3
co

Uh

eo"
CJ

o

00

ed

H-l

<

o
tt)

co

8co

2
CJ

0O^\

fi
H-l

OQ

co
OQ

2 H

UJ

HH-

cj

co

Oi

<
,

UJ

CO UJ
Cu

fc.
co

a<

Oh

OQ

ttl
Z

o
HH

<
HH

Oi

CO
CO

ttJ

tt.

60497800 D

<

ttl

Uh

8
s

CO
OU

O
O

hJ

O
Q

CJ

O
Oi

rt£
fc
s
uj **

> £2
w Eo

CO

H-l [Tj

H

UJ

tt,

o
UJ

d

00
Oh

O
H

CO

O
Z

z
z<

<
tt)

UJ
N OU

tt)
tt.

H-l

f fi O
O f ,

o
co

H
CO

S

o
o

z >o CQ
Q
tt)
£

§ tt)2

O

h4
hJ

OQ

tt)
tt.

co
Z

O

tt)
Uh

tt,

rt

CO

w
a
CQ S
O

z

Z
O

o
rt

o

>H

<
H

S3
Z U
D UJ
Uh Q

B-31

CO

rd

rd

Oh

O
Q

rd

Oh

Oh

o
CJ

o

E

XJ
O

E
o

o

xt
o

oo

op

XJ

E

E
.3

rd

rd

a
£
o

Oh

£
o
£
d

Oh

Oh

O

Oh

O

O

o,
O

•d
o

o

E
.3

* - t

t - i

Oh

o

E
00
d

3

.a
g

.a
E
HH

O

O

O.
O

• d

xt

Xt

co

CO

CO

Oh

O

XJ

oo
c

oo

.3
a
.
£

cj

CO

XJ

op

N

E
o

Oh

O

CO

£

00

rd

E
o

Oh

CJ

eo
•d
O

o

rd

E
o

Oh

CJ

X )

rd

Oh

eo

E .

Q

9 3J
X' SJi C
_^
G
xt eo

o
CJ

CO
UH
ed
—3
CJ

^-^
co
C
J
HH
H

Ui
.91
CfH
CO
Uh

CO

e o £

CO

§

XJ

XJ

Ih
8
CJ

C+H

co
UJ
Q
O

CO

h-j
cd

sn

tt,
u ^

G

93

o
XJ

CO

CJ
t-i
CJ

cd
CJ

.SP
co

G
ed

oo
00

CO
00

eo

t - t

H->

CO
CJ

cd
Uh
91

G

CO

l—i

>*
<

oo

UH

XUht

XJ

O

.. rt

O.

E

eo
„ X ? X!
n CJ
CO
sn
cd

£
"ob

•2 UH
d

UH

■
>
H
G

co

E
uj

t - t

cd

t - t
t n

Uh

O

cd

•2
d ««
rt

CN

Uh
CO

E
d

ou
_
CO XJ cd

cd

rt

o
s
u uj
O
OQ H
O
O
Q

ttl
OQ < O h

o
2
OU
fc ffi
!

U
H

1

HH

H
Z

z fc

Si"'

3
Oh

CfH

O
O

•d

W
.

CO

c !

00

XJ

H

Uh
O f

X)

ed
XJOh

■ h

CO

3 ul

§z
O f f c
Oh fc
cd •<

3°
.t°fi 3

cd

eo X I

(J eo
e d tr- tt

■d '*-'

X)

s fi

O

• 4>
— ' HX!
H

si
G
eo

cd

oo
d eo

Oh

CO JJ

.313
3"°

CO

E

cd d
CJ CO

eo

ffi <
CJ H
Z co

B-32

•-"

">

'fS^\

N

<

G

H
UJ
Q

C cd
co X !

r—l

CQ

<

C
O

s

3

HH

eo

XJ

23

<

OQ

a'

XJ CO

■M>

c

co
XJ

G *~*
CO H->

s«■>a
w

» rt

2 Of
£
H ecdj

X!

H

CO

UJ

Q
ttl
ttJ CO
cj co

oi

o
tt,
ttl

CQ t t l

I

CO
CO

H

<

C
J
HH
Q
Z
HH

tt)
H-l

OQ

2

z

> CJ

60497800 D

yr^v

T^H

Of

Of

Oh

Of

'Sf

E
o

E
o

E
o

£
o

o

£
o

eo
Xt
O

eo
XJ
O

TJ
O

cj

•d

£

CJ

CJ

eo
•d

XJ

o
E

o

o
£

£

Oh

Oh

O

N

.3
N

£

£

Oh

o

O

o
E

00

00

G

Oh

tn

£

oo

00

c
"3
o.
O

Oh

E

.3

Oh

O

Oh

O

O

d

3
O

cr

x:

CJ
CJ

co
CJ
H
co

00

CO
.

H-l

2 -fi

O
Z

o
<

CO CO
CJ
—

Uh

tn "°
eo "oi

CO CO
rH tn

3

P .3

w

<
ttl
Q

Oh oo
d

XJ

•— -a
E 93

CO

Q
O
S

Oi ea

CO

co

CO

sn tn
d .-d

cd
o

o
z

£c j c3o

co G

~*
£
00 93

N

r- tO
XS TJ
+H 00

XJ

• d



> £ £

CO

ttJ Cd JJ

H
co

<* s <
rt ui
i-H
 co
< Q
tt) CCOO
H ttl ttl


Ul
CO

H-l

<

Q

ttl
N
H-l

<

z

rt |
Uh

2 Q z
So fc a
tt) Z Z
Q x •<
uj >

Q

ac
Q

o

">

CO

Ih

S
* fc
ffi
3
Q CJ
S
< ttl
rt ui <

< q fc
ffi X <
CJ Ul CJ

o

C

.d

Oh .2

c .2

rt

oH

tti rt

^OSo
rt
CJ

hh r*
CJ Oh

H

E2

£2
2 OO0U0
CJ
ttl
Oh

00

W
Q

Q

Z
gfcSH

rt
o
Uh

UJ

" co

a

O



_eo d -d
ed co

CO

rt
o
w8
<
u. s< fc
CO CJ
Q
Z
<
<;

B-33

rd

rd

rd

£
o

£
o

E
o

XI

CO

eo
•d

E

E

Oh

Oh

o

>.

OQ

o

o

00
d

£

00
d

oo

E
00
.3
N

Oh

Oh

Oh

•fl

•fl
■
•a

Oh

O

£
o

eo
xt
O

o

S

CO

Oh

rd

CJ

xt

CO

r d

I

Oh

o
eo
x)
O

CJ

CO

rd

Oh

CJ

eo

E
o
CJ
CO

X I

XJ

fi
•fl

£
oo
.3
N
3

E
oo
.3
N

Oh

Of

£
00

O

o

g
'
HH

Oh

o

o

O

O

O

o

/■f^s^V

Of

o

XJ
eo
co
CJ
CJ

d O x5Ji
O

1'

CfH
>
•rt Uh

p

=2

-C! 93

H
Z

o
u
^/

G
eo

.=5 JO
HH S3

3 ~
cd oo

" g

CO
CJ

£
d

ta «
3 o

o
CJ

^
«,

cr

.a
s
00 CO

85

rt .3

Q

•?

V

2

•in «
d-2
CO £

6

CO CJO

xt

X )

u- S3

M

•3 *

H

d

3

HH

H
CO
O
Z

•d

.2 ^
8 c

CJ

2
U t

U t

3

%
1

H
ttl
Q

G
cd

£0 0
G
eo

X I
CO

ta

x^?v

CO

sn
cd

CO

co

UJ

Q
O

S

>
o
f-H n
CO
o
oo
t-i

o
z
N
r-t

Oh

r t

G
O

u
OQ

3

00*

? CJ

2 a o
H
,

Uh
CO

© o «
XJ
Uh CJ 2P «
o ed fia C oO
o

d
O
C
CO £
CO CO

•8
S
■a 2

00

"

HH 3
CJ 00 00

Jo -a

cd -G
co CO
XJ Uh
CO
■
>
H
.ed .

E m

*d co S?
fi C
o eo
>
,S3
eo eo d
X^ "d d

O
O.

Xt

£ O
Bo
soOi

y

XJ Ou
H to

H - " >r t oc d
o

U

XJ

•s

co fi

is

H
3Sa
O
rt z

ttl
Z
HH

Uh tt,

y

Oh £

V

zn

f fi f c
H Z Z
S O S

8 .a
2 '-J3

•3 &

s

oi
Ui
Oh

Oh

o

Uh

ttl
Q
H

z*
o

a Q
uj rt N
ct, ou _

.jtfS^K

5 w uj
OQhJ

Uh

r-< (J

2

u-i

uj

fez
£
OQ o
m

*o
3
rt 9>

CO

^5!"\

rrt

XJ

U t

3
co

9>

xi

V

CUH
CfH

i

u
Oui o
:z

B-34

S3
3

xt

£ O

HH

<,

Uh

£
3CO *->.

rt
„>
•> CO

ed

a XcdJ

•d
co

oo -»H

G
cd 00

c>

.3

O* t-t

« o

3 CJ
G G
. d r t cd< < h
34 H o

I—I

.— eo

tt.

fcS^
£
^
'^ 2
>a

a

uj fc

So

Sg

afe*
^ H ^ H

S \T co
>" UJ
OQ O

60497800 G
fjjttS^SV

/•jlSy
Oh

Oh

£
o
•d

X )

o
E

X I

o
E

00
G

o

00

Of

Oh

o

O

£
o

X I

X I

X I

o
£

o

00

c

.3

Oh

Oh

o.
O

o

E
o
CJ

eo

XJ
O

o
E

00
G

"fl

3

O,

£
o

o
E

00
d

.3

o.

Oh

E
o

E

00

o

00

.3
N

o.
E
o

O,

£
o
eo
•d

XJ

o
E

O

E
oo

g
'

g
'

o.
O

o

00

c

'fl

Oh

Oh

O

00

c

;n
3
CJ

CO

U

cd
X !

H

CO

O
Z

3

3
'•>

3
">

t - i

eo
Uh
d
oo

o

co

co

UJ

Oh

c

t-t

xt


O

oo

'>
93

f fi

CO

3
XJ

co
X

d

3 °
e

E fi
rt «—

X t

XJ

>

>

XJ

C
O

Y
.

£
93
CO

C

X )
CO

S3
cd

> - - Xa5,

ttl

CO

ffi

rt
O

8 co
CO

a
"

.3

oo +J
"" Uh

UJ

ttl

2 tn
3 t
2
w £
S 2

X
ttl

CJ
r-i

H
CO
O
Z
O

Q

oCJ

9>

E

E

o

00

.3

.3

a
.
E

t

E
oo

.3N

Oh

o

cj

E
00

G

HH

Oh

Oh

o

o

O

Of

O

O h

O

U i

3 •
i—I oo

r-

6 §
35 U*h
XJ rt

<

eo
x l
O

XJ

fi

•fi 3
3 o
-fi ffi

co

•d
o

xt

Oh

>Oh,

O tn

co
XJ
eo *d

o
o

E

00

Of

O

E
o

o

.3
N

t-t

O

rd

£
o

Oh

CO

00

3
.

rd

E
O
CJ

o

o

00

U,

O h

O

Q
H
Z

CJ
CO

C
O

rd

Oh

E
o

E
o

o
o

CO

Td
Oh

Oh

3
'>

zzl 3
5 eo
< XJ

d

3

o
CJ

CJ

2
ut

ut

C+H

CO *r3

CVj

D-3

3

co

o

HH
t-i
CO
oo

<

X>
cd

P

ft
ttl
Q

CO

CO

CO

Xt

CO

oi

<

H
UJ

■I

ob

.3

HH

d

XJ

,o
C | H—J
co

•ni

•aa

CJ

3

•a
o

eo

cj .3

ttl
Q
O

/^^S

S

o
zu t
N

eo

00
G

3.

81

00

co

eo
•d

OQ

xt

•?

tt)
hJ

o

OQ

<

eO tN

eo eo

eUh
a

CO

CO

XI

d

3 •«

.Y

oo

UJ

CO

Z
O
H H
CO

Z

o

UJ

z

S
HH

CO

M

s

H
00

p
O

II

UJ
CQ

CO g

ttl

HH

Q h . S
eo

rt
uj
ffi
Q

a
UJ
OQ

ro
HH

HH

s <

CO

rt oi
o
H o
<
Oi

2
Oi

< fc
ffi vo

ttj f t
CO U-l
CO

co

ttl
tn r t
Oi o
ttl z
H
U 2
Ul

2

Z
H
Z

<
H

oi
tt)

ffi

CO

eg
tt)
O hJ

U t

CO

o
CJ

Uh
HH

H-)

fi

z .

CO

2

2
3

co O

O G"

Q

CO

>
'

^

CO
Uh

H
tt,

xt

y
X!

ttl
H-)

<

CJ
CO
CO

O

3
hJ
tt.
rt
UJ

u rt
o
H
CJ

<
Uh

3
<

tt) CJ
CQ CO

^SSrtV

B-36

60497800 D

r d
Oh

r d
Oh

yp^\

E
0

E
o

>.

CQ

X I

o

CO

CO

X J
0

x t
0

00
G
N

00
d
N

E

Oh

Oh

1
'

o
cj

I
O
Q

co

co

rd

S3
cd

00

Ut
eo



S3
3
CO

CJ

eo
X I
O

o

E
00
d

t

0

rt
>

t

CO

o

E

00

.£
N

.§
H H

t - t

0,
O

O h

Oh

0

O

XJ

E

00

Oh

£
o

XJ
0

£

O

-J
G
91

o

nj

Oh

0 0

G

cd

3c d

cd

Oh

XJ
+3

93 .3
•fi

co

t^

x>

>»
ccd

H.

CO

cc d .2- ;

ed

E

Uh

eo rt
■I
H>

cd

3

u
2
—
3

0 .

E
0

0

XJ

Oh

O h

£

X) to

• i t

>

3

_

00

XJ

•2
0
00 is

•2
fi
3 0
CO

CJ

cj

eo
r d
Oh

C f H

cd

3
*>

t

y

t

O

Uh tt-f

CO

u.
0

CO

0

CO

CJ
CO
Uh

XJ
f

t

ed

XJ

2 «c j

XJ
HH

^

ed

3 ■o
CO

CJ

CUH

O

cj

.,_, CO

ta

§
E
£«

3

op

OO

3

d .
2 o-

rt
"
O
f_

s 2

CO

O

OO

38

OQ

<

H



XJ

CO

ed

eo

s

<
rt

s2

ed
~Uh
cd

{-

3eo £o

HH

E Z

cd 00

H .S3

z

3 ■ sn-

•a fi

h .2 2

CJ

d x>

X> eo

eo
-t

cj

3 (U^

Xh X)

£ <"'

2£

O
O

o
o

2 Ss
00

rt
ou

O f 0

Uh "d
.O CO

CO

x:
H

3 .3

C .00

CO

b
Z cu
E

hJ
UJ
OQ
H

60497800 F

cd

O
0

. * icds

Oh

.go

co XI
-5

CO

cd

o

ffi
H

fi

«

CO

cd co

« £

cd

o

~ o
.go

ss

C
G
cd eo

O

Oh

« -2

"o
v e«
o

N

o

E

Uh

Uh
CO

o
zu t
fc



c

T d

—g
O f

o.

*2j

cd X !

£

i$$tf\

M

t - i

co

0$k\

N

O

Q
H
Z

0&&S

N

O h

O

E
00

co
XJ

tt)
Q
O

O

00
G

.3

J0^\

0S>\

eo
X )

00

t

tn
cj
H
oo
O
Z

CJ

E

E

O

0

CJ

CO

00
d

o.
O

0OS\

£
0

XJ
0

E

a,
£

O f

0

E

co
r d

7^3

Of

E
0

0


Uh W

O
O
Z
HH

hJ

fc £

tt)
S
UJ
H

tt) <->
rt

<

H
co

CJ

tt)

sttl

H
<
f t

fcO•>fc
C
-■

ttj

fc Eo

H
ttl

cu Q
Z

o
<
CJ Oh

tt, oi
^L
fc
X K)

s

9
wo

Iz ffi"

Q
Ul
H
H H
. Q Z
H UJ ttl

<
s
H co

sttl

so

H oi
co co <
S ^ f t UJ
e:
r t b rUJt H
>

CQ
•d
•jj
d
sn

oj
• d

O

o

oo
.
vh

00

Ih
.
eO Uh

X* «J

X2 oj
oo rG

¥ 3

a &■

ri £

.s
Uh
rt

[

'>

CfH

U t

3

3

co

CO

z

o

o
HH

CO
CJ

I h

i-i
CQ

HH

•d

UJ
00

S
3
cj
X)

j

H->

HH

OJ



id
0J

CfH

CO

CO

HH

OJ

■?

"?



ttl

OJ

OJ

•o

•d

s«

uL

".>

rt

'i>
OJ

OJ

co

Uh
OJ
00

co

C j

o
<

CO

2

d

O

o
z

l - t

oi

OJ

z

HH
HH

o

93
Oh
+H

l_l

VI

3'
d
8

t

H-J

93

93

t

CN*

1
CQ
ttl
ui

t-t

E

t-t

tn

tn

'£
V
id
OJ
co

V

V

U

t

93

tn

'S
oo

o

OJ
Uh
Uh

00

CO

f-H

>.

OJ
OJ
t t
Rl

op

HH

o.

d

G

o

OJ*

t t

CfH

UJ

• d

h h "

Q
Ul
Q

O

OJ
Uh
O h

C

OJ

CJ

tt)
,_)
CQ

t - i

t-i

t - i

OJ

91

OJ

•d

>

v•

U

OJ

X!

OJ

t

rti

CO

CO

■ui

HH

t - i

o>

OJ

OJ

•d

•d

'?

OJ
C*H

93
U-,

CO

CO

U

O

OJ

id

Sa

*d

CO

CO

u t

OJ

OJ

sn

">
OJ

OJ

Uh

t

t

•d

rt

' O?J

t

OJ

.4
OJ

CJ

CO

CQ

/^^,

<

CO

HI
O
fc
OJ
00

z

2

CJ
CO

CO

rt b
w a
< o

rt

co fo

HH

Z
<

o>
Z

<,
CO

Z
<,

cu

ttl
Oi

3
ttl
oi Z*
CO O
Z CO

•<
HH

CO

Z

g
Cu

ttl
S

3
Z «
uj

Z pq

al

sHH
•

o
a
z 5

ttl

CO

s fc

2

CO Q

CO

IS

z

o

<

Z
'-' fc
o

UJ

CJ
CO
CQ
HH

rt

S3
H

tt)
rt

V

fc

UJ

SI

Pfj oi
<, co

a|

Q
C▶—
"
3 ttJ

2 rt

> '■"'
oi 2

£s
SS

• H
• Z
• tt)

H O

fc S

>•* s

< ttJ
rt Z

gfc
*< H
ES
Z fc

$
H
CO
D

tt, o

2°
s o

rt
<

O co •
&H

o

•-5 o
SG fc

z

O CO

<

tn §
Z

uj u

i

rt
H
Z
O

Q
UJ
H
fc

oi
UQ
£2 Eu
it

z

0£™$K

B-40

60497800 D

OJ

OJ

•d

CO
•d
OJ
d
oo

Jz2

d

03

u.
91
7G
O,

E £O

:—

H

o

OJ

•d

o

o

oo

oo

oo

Uh
.
CO Uh

Ih
.
CO Uh

Uh

Ih
CC

c

X! o;
oo rG

i

O.

E*O
E
:■*
H o

G

■G
OJ
tn TG
03

Oh

E EO

:—

H

o

rt
X*
sn
OJ

OJ

X

I h

OJ
O f

o

z* ^J
°*
C

2

o
u

J3 Ea j

—
CJ

N » /

oj

CO

h2

rt

Q to"

CJ

OJ

OJ

•d

•d

y

t

OJ
,C 1m

ui.

93

OJ

93

U

tn

OJ

a j

•d

OJ

OJ

•d

•d

•d

U

< H

CfLf

OJ

OJ

•d

t

OJ

93

tn

* H H

OJ

CO

tn

OJ

CO

OJ

OJ

Q>

">

'>
a>

">

C*H

-d

<4H

CfH

CO

CO

CO

C O

•d

">

93

CO

OJ

• d

OJ

CO

CO

OJ

Uh

ceO

O
Z

93

o
<

3
Q
O
O

o
d

C.H

rt

CO

r
/J*B\

cOJ

OJ

*d

3
'>
OJ

UJ

S
HH
H

i." •£fi

HH

U

CO

CO

3

3

93

«

ed

Ut

3 £

>
OJ

uL

t

O

t t

CJ

03

OJ

J-1 O,
CU oo

a j

a j

-d

•d

'>

">
a>
<*
OJ

oo

tn

7
CQ

c

OJ

•d

Uh

OJ

.

2

r>

CO

rt

3
">
OJ

*>

.2 >>

«

- H

sn
sn
OJ
O

CO

uj

3

OJ

Z

Xj

xCJ:

OJ

4>

I h

£

'sn
G
OJ

3 E
X -3

X

UJ

CQ

eO

OJ

•d

OJ

OJ

3
'>
QJ

o

E

<

o

UJ •
cu •
co w

CO

UJ
O
Q

^S*\

.' ui

OJ

fcc

rt
oo

CQ H

oo
oo
OJ

hJ

•

9
Z o
u

&fc
22o

u

ttl

CU
CO

OJ

CO

93

tn

< as
Q CJ

H
HH *5
co S
Z

tt, 
tt. <

h

hh UJ

Z

H

oU h

CO

H
Oi

HH

CO

Oi

z

D
O
Oi

CO z

CO

z
 53
z

<

E
u t

21

U t

CO

CQ

ttJ

U t

^

Ul

ttl

Oi

oo

X —
UJ "to

o
CJ

rt

HH

3 «

H

uj
- l

m

"d d
oj •-

oo
C

o

Ih
rt
RJ Uh

93

CO

its

P
fc ^^

rt

OJ

c2

3

2

OJ

oi 2

o o

rt

rt
E
I h

rt

op

,o
t t

-d
e;

X

3

C
d
tH

eo

I h
I h
QJ

OJ
OJ
X J

CJ

Uf

O

rt
CJ

rt

E

I h

Uh

OJ

d

I h

OJ

T3

Vi

a

UJ

OJ
co

S3

rt

• d
QJ
00

cS
•d

O rt

x z
H-

f fi

£G H
Z ^

>
_,
CO

CO
CO

ttJ

rt

oi
ft

S

ttl

H

CO

_
^
CO

,,

CO

CO

U h

Q
ttJ

E
D
ui

cu
co

;

CO

'.

few

O Q
a

CJ

il

s >
—o
g o

B^U

•d

o

E
CQ

oo

3Uh

ih'
x:2 o>
QJ Oh

II

H 8

■do

E
oo

3Uh

2 CO
Ul
XI

T
-fi
a, Oh

§ I

H 8

■do
oo

3Uh

2 uhG QJ

T
~
QJ Oh

I |

H 8

•d
o

*d

•d

o

E

oo
G

E

00

T
^
03 Ui
E £

jd

o

oo

00

3

Si2 UH
93

*d
O

"3
O

o

G

xi aj
QJ Of

H cj

2 uh*

XI QJ
QJ Of

H

o

•c .

CO Uh

xi a>
^ TZ*

QJ Of

H cj

G

2 »-'
•fi
oj
T ^

QJ Oh

•d
O

•S s

T
-fi
Q> Oh

€6

H

| oi

H 8

t t

00

E

S

E

.s

.S

•§

0 0

•d

o

oo

00

aj
O

• d

o

E

o

-d

eO

si

Uf

OJ

Tr *
?
OJ Oh
£ E
o

H

CJ

eo
Si
93

Uh

E E
o

o

E

E

oo

.s

G

*Uh

Uh

rt

X!

0)

r d
Oh

OJ

•d

03 'S-

H 8

OJ

QJ Oh

l §

H cj

■a

b

QJ Of

H 8

OJ

d

o

o
CJ
Xt - !t

G
O

•a
OJ

'tt
CJ

rt

-|H
Uh

-d

eO

o

<

ffi ffi
o fi
fis 2

3
">

SP,°
. fi 2

0 6

HH

G
o>
t=)

'i>

OJ

93
Ui

H->

OJ

t
t

•d

*d

•d

- d

tn

U t
OJ
CO

CfH

y

,1

,1

a

CO

*d
Oh
t

CfH

OJ

t

t
t

CJ
OJ

OJ

co

CJ

d
qj

d

OJ

OJ

V

"5!
OJ
CO

QJ

VOJ

OJ

tn

VOJ

y

X5

rt I
o



Z rt

<

%

t

G

E

Z
HH

0>

B-42

£

f

ttl

CJ

rt

v-

■■
<>

d

eo G

G

Uh 00 -3

aj
t-t

o -"

tt.

>> to fi

tn

eo

IJ co
•d Z

B +>

O
e
si

8 tt.*
—

X)
• d

co
H H

Q

SsZ
2

Q



Xj

X5
QJ
CJ
G
q j

rt
rt
Uh

OJ

CJ

o

oo
d

si

eO
X I

H

f
a>
E

CJ
OJ

tn

o

E

oo
d
t

r

eo
si

QJ



>

">
.V

y

'>

3
"> ">^
Y Y

93

T
aj
E

QJ
- d

tn

f
aj
E

T
OJ
E

E

1
?
QJ
E

QJ

E
H

H

OJ

'>

3r>

rt

co
CJ

£
Uh

E

.s

OJ

OJJ

OJ
* d
O

OJ

^$
Oh
£
o

eo
sn

Xs Ii eo

k f

,C9f H
1

a
E
o
o

I h

rt
f

T

OJ
. d

y

I h

G
, 3

XJ

.? y

tn

CO

CO

HH

H
co
O
Z

o
<:
3

X)
QJ

UJ
Q

o
s
o
z

rt

*i

CJ

rt

rt
Uh
CO

a

CO
I

tt)

z

<.
d

o
G
oo
tn .ss

CO

Z

oo
QJ
eO

o

V
co

H
■Cf

t t

Uh
OJ
CJ 1-

-d

OJ

•d

QJ
Ot

rt
li

rt

X>

>*
d
o

93

X I
CJ
VO

.Y

rutl o0>0
rt oj

CfH

-d

OJ
• d

.Y Y

<■,'

•d

xt -f

3
co

o .s

CN
I
CQ

CO

CO

*

t

G

93
t n

u-

O

oo

ti

93

*d

OJ

H H

CO

co

35

CO

z

tt)
M

CO

CO

tt)
H-l

HH

H
CJ

tt.

Hh"Z

CO

<

Q
z
fc <

Q

Uh H

tt)
CO
CO

^3 *
o

*tti
Sz

O h

O£
| o

grt
tt, o

tn

tt)
Z
HH

uj
Q
O

tt,
tt)

o
X
rt

co

60497800 G

Q
- 2j
CO  X
ttJ Q

Oi

ttl

tt)
CJ

Q

ttJ
<

Q
H

UJ

CQ

H
Z

tt)

Oi
Ui
H
U

ttl

<
&
3

f fi c o
o Z

-I3
z

tn
Z

<:

M

O

EG Z

31
cq rt
:: O
Z

z~

B-43

OJ

OJ

00

£

OJ

QJ

•d

•d

Td

•d

E

E

S

E

E

o

CQ
•d
OJ
d

OJ

•d

o

00

00

s.

s.

Uh

Ct

tt

si
oj
op rd
qj Oh

E E
•fi
o
H 8

Uh
rt

X!

sn

QJ

00
.
Uh

rt

OJ

Uh

hG oj
 Oh

E E

Uh

tt

XI 0>
oo rd
03

O,

£* i

i-1 o

H

o

•S

Uh

eo tt
Si 93
s n T- .
qj

Oh

6 6O

;-<

H

o

tn

o

o

s

£

00

00

.5
UH

OJ

OJ

•d

o

00

.3

C9

OJ

o

00

4>

OJ Of



OJ
O Oh
^ h^P
d

^

•2 3

IS

,c d
* h 0d0
C|H

O
G
O

f-

G °

.2
i t u23 8

t t

CJ

<

uT
HH

^J
G
OJ
•d

^ j

G

QJ

'>

CfH



Ja


oj

HH

81

2

OJ

E
.

•d

'?

-id £

U-,
93

Uh
OJ

OJ «J

•H "*—'
XI
QJ
U -d

tn

co

d

t t

o
'sn
sn
OJ
Uh

G
aj

.O

|E

£ §

Oh

X

rt

93

OJ

o

s

CJ
CfH

3
op
■C
O

«

91 A
S3 g
,, 00
3O 9H >H
d
c
G •*"*
CJ §


S rt

ttl Lj
Q u\

£2 fc
~
<•

§
z
HH

Uh

CO

• UJ

E

~

u

UJ

00

CO

<

<

61
Ul g

CO

ut

Q

f

£o
5 ^

tn

H

2

. O
Q
ttl Q
p ttJ

O

CJ

<

hJ

^ j

QJ

aj

OJ

"i>

">
cCfH
2

OJ

OJ

CO

;

< .
a
y
w 55
h S
Q rt

fc CQ

<
tt,

•»

CO

h00h xs
a

11
O •> oo
qj  o

£<

HH

UJ
Q

55

ttl <

Q
UJ

UJ

co <£<

z z
< o

UJ

<

. uj

• O

H Z

■ui

OJ

(N

" -o 1o

i5 2

^ j

•d

t n

CQ wu t

2

HH

<

B-44

■
>-4

C
J
H—.

HH

<

HH

eo

ttl

a

Z

Ut
w
O

OJ
O f
00

• d f c
o> rt

sn

«

CO

o M«

o

"i rt
d O

d eo
tn xi

QJ
Uh

<*H

uh r^

QJ (14
oo

UJ

Q

"i. oo

d"

OJ

Ǥ
3 fcs

HH


Oh

Oh

E E
o

E
o

*>

">
.V

Uh

_c
oj
oo rd

XI

rd

y

co
O

QJ

•d

Of

Uh
Cd

•d

o

oo
c

c

rt

•d

">
.V

00

3
I h

-d
O

o

o

oo
c
Uh

-fi
*Z
oo rd
QJ Oh

rt
H

QJ

*•» rzi
oj

Of

rt

• d

s•

y

• d

•d

E

E

E

00

00

00

o

oo
G

>H
C3

Xs In 0r Jd
Qj

o

c

.
Uh

.
Uh

XI W
OO r-*

Oh

fl j

I f ill i l ! §

ta

•d

E

o

00

.S
>H

•d

Oh

QJ Oh

! §

'>
.V

'>

">

y

U h

o

3

c

Uh

rt Uh
XI 93

sn rd
QJ Of

X: 93
sn rd
03 Oh

Ii

H cj

tn

•d

,Y

.Y

3
co

QJ

CO

co
O

Z

o<

Oh
>1

o 0*
o ttl

.. tt,

tt S3
O . .
QJ

O,
X

oo

oj »-5
Uh CQ

C
Ti

E .

91 j- to

- -2 §
S
3 s~
a c
d

•d

3

*?
0$£\

cY
Cf-f
3
co

3
">
c2
CfH

'>
.V

*>

3
co

OJ

co

co

co

O

.X

CQ

<

z
o
ut

Z

o

Z
O
oo
Z
UJ

tn
Z
ttl

H

 tt)

CO

Q
Pu
tt)

on

X
uj

.
co
" Z
" O

U
ttJ
Q

>tt)l

O

r t 2s o i S r t r t 5
Oi
rt h
o < O <

z

co
co

z

h-l

tt.

60497800 D

ui

<
<
tt,

-

tt,

O
O
ui

j

*

cu
S

o
z

C

~

S
oi
G [Tj

s£

2 tt,
oi fc

UJ .52
fc

r-

fc E

D
o
CQ c2

Q

ttJ
N

U l

ttl

rt

c

CJ

X

UJ

H-l
H-l

oi
z o
H
HH

<

C
J
HH
Q
Z

ffi

2o
Oi

<

Z

oo
Z
Ul

S

UJ
N

co

> H

2
rt

.
< 7
ri
fc *
$
H C*N
<
Uh

fc if'

££
H H

z z
o o

co H
CO u
fc Z
Oi §

£tt.

T
W
I
F
S
A
E H
CO
H

fc y
< rA
H Uu

<
Uh

*S
o,,
« o

rt

hh

^f T .

0G
0

•d

fc S
U- 5
CQ

"i>

o

rt
o
H

H

ss

CJ
CJ

v tj
tSni q

CQ

<

CO

o

OJ "S

tt)

Oi
O
H

h J cu
I

HH

eo

£ .2 © 2

ttJ

3
z

oi
O
tt,

r.

S o 3 .2
^ £ t-i it

i

<

CJ

.is
oo
oo O

"
G

Q

Z
HH

UJ ut
O
Q

s

CO
CO

z
o
u t

grt
H O

UJ

Z

<
H

oi

CO

Q
Q

H
U
UJ

rt

rt

o

UJ
CQ
H
CO

s

Z
O
CJ

<

3

Oi

Oi

tt,
tt, tt)
=
;> h J

£
^
to oi

o rt
HH" ttl

tt)
0Q

<

2

5

fc ffi

CQ UJ
H
Ui

oi
o

rtg
tti c

fc z
fc 6 ui
fc S cq
H-) CO

<2

H - S

tt.

B-45

QJ

OJ

o

s

>>
T3

OJ

d
oo

—
11
0 0

tt

XI o>
op rd
QJ

Oh

£ E
5 o

ep rd
QJ

Oh

E £

•d o
H cj

Uh

£ E
H 8

00

00

00

Uh

Uh
rt

Uh
rt

Uh
rt

E

E

Uh

rt

00

E

Uh

XI 93
en rd
qj Oh

•d
O

E
rt

00
Ih

- fi J 2
op rd
qj Oh

£E
H 8

*Uh
ed

.
i-,

•oo
f i ird
n
qj Oh

£ E
H 8

CJ

o

•d

o

o

OJ

OJ

*d

00

.s

OJ

tn

00

3

Uh
.
rt
Uh
Xh <*>

QJ

•d

o

E

00

Uh
esS

0)

O

E

oo
G

CQ

QJ
T h

•d
O

*d

eO

ut

■?
£
oj O,
EE
H 8

x) 

Uh

XI 93
sn rd
Of

6 %
H

cj

QJ

*d

-d

E

E

E

o

s

.
Uh

QJ

•d

o

.
Uh

00

Uh

Uh
rt

X ,
vi

«p rd
QJ

00
eo

•fi .22
Of

QJ

6 §

H *->

OJ

•d

o

o

Uh

E
O
O
,
Uh

UH

CO

Ih

O,

XI 93
oo rd
93
&

■S ^
sa &

CJ

H 8

H 8

aj
G3

6g

6g

UJ
CJ

Z

s
G

■
/—
\

.2

Q

t

H

t

H H

>

■d
>

G
OJ
•d

z
o

G

OJ
U

t

G

OJ

QJ

•d

:'>

">

OJ
U t

«4H

3

CO
CJ

H H

d

OJ

3

CO

3

CO

3

CO

CO

H->

G
OJ
*d
"j5

G
OJ
T)

id
OJ
CO

X)
QJ
CO

U h

id
OJ

">

"d

CO

A 6J
QJ H-J

C«H

U

x) to
CJ to

CO

CO

fi

e
C

Z HH
UJ d

OJ
O h
HH

Sk
H-,

HH
QJ

to

£

t

t

■ui

t

QJ

OJ

OJ

•d

•d
'i>

• d

- d
3
CO

3
co

id
3
co

oi
uj
H
tt.
<

q
<
ttl CJ

'?
CfH

3

CO

OJ

V
uV
i,

S
5

"t>

QJ

Uh

c
"d
o B
f

QJ

■d
'?
¥
U t
3

ess 5

E 8
G

CfH

CO

QJ

CO

,CJ
9 X!
fi

H-l
U l

H-l
h-1

•d

H H

U t

t t
■G
>.
00

93

tn

d

rt
oo

oo
r i
Uh
QJ
N

'"

c

S -2 ujo o .2
■
H
I
rt
33 S
^ £
« .2
5
> 'o

X

id
3
co

~

OJ

•d
d
d

X
eo

u j
H-l

oo

£

oo

'?
V

tt)
-■O
—2
■*

G
eo

QJ

•d

.

o,

QJ

OJ
CJ

QJ

•d

- Cc J,

gn 3

<
•
r - i

QJ

•d

QJ

*i>

CO

H H

oo

=fi 3

B
d
CJ o

o

z
2

fc

t

d
OJ
•d

co
O
Z
Q
ttl
Q
O

t

H H

G
OJ
•d

h2 "S

>,

CJ

cs.

Ui v7

-d

■ —, t2

y

HH
00

*oo

CJ

5
Q Uo,

OJ 

OJ

QJ

V

U t

3

CO

CQ

Oi

tt)

o

h-1
CQ

<

«,
H

u t

g CO
E Q
ttl 2

co
Ut

rt

> oi

s

O

.

fc z

o
tt,

rtw °*H

t n
i n
OJ

s

UJ

^
.<
tt.

d
tti

ss

a!
mh .^
rr
Z

8rt"w

<

CQ

OQ
W

CO

Z
ttl

Z

fc
t-l.

w

o
o
CJ ttJ
fi

tt.

~

H
CO

§ o

Z

o
fcw
CJ

<
Q*
ttl

H

N
D
A
S
E
N
TV
ID
IS
E
TN
O
T
IN
F
II
O co

ttl

CQ

fc

HH

<

fc S
fH Oi

z

CJ

R
fc J'
<
2

S
Cu

fcg
5a 3°
fc H
*<
Ut

ttl
H

CO
.
HH QC.

<•« CO

cj

H-l

H H

ttl

H

rt fc

<

S2
5g

z
o

CO

H

O O

CQ

H

H-)

• rt

sttl
O
T
F
E
R
/A
P
R
IO
R
T
E
S
U
B
Z
0

D

uj

ttl
Q
Z
HH

CQ

hJ

co

UJ
CJ

ui

CO

HH

tt)
eo

3

o
tt.

>
tt)

CO

• ttl

OJ
0 0

CO

H

H-l

< O
H Z

N
C
A
L
T
C
O
E
IQ
N
L
U
F
IO
N
C
T
A
IF
S
IO
P
E
C
R
I.

tt,

Ut

>

z
CJ

tt.

ft

tn

<

ttl

H


o

00

/$S\

tn

•d

o

c

rt

Uh

rt

Ih

-fi
__
sn ZZX
QJ

Of

| i
i-* cj

G

£ -fi .£*,

oo rd

oo 73

QJ



/5*\

Vi

3
'>

tn

•d

CO

j0^\

•d

'>
.Y

QJ

• d

93

">

."d

co

Oi t n

I h

QJ

u-i

CJ
H

co

• d

tn

">
,Y

QJ

cY
QJ
CO

CO

O
Z
ip*N

o

Ih
Oh

C
ed

O,
Oh

x -fi

o

sn
d

o

Oh

">

tt)

0^\

Q
O
S

00
G

fi. «-

o w

5 Z fi

°9E
35 cjP rt£
£
d
00'tt, fc
z
rt

C QJ

tO tZ\ QJ

5
fc,
e
d ■>
cj £?

o
z
2

x »=:

QJ O
•d
C HH

Uh

fl J

pa

•d

•d
O

JS
—I

00

QJ

-

Uf

QJ
00

G oj

U-,

£
f fi .c5 t 3
n

CO

•2 3

X%
) ofij

.2 E

QJ Si

si «

E—• oo

O h

O

_o
o
Q

o
Q

•d

|

*>

H

I-s§
•d 8 CQ

y

OJ

^

M

X*

< o co

CQ
ttJ
CQ

<

rt

o
o

H-)

ttl

Ul

CO

<

oi

fc
>co•

tn

hJ
CO

CO

CO

HH

hJ

r A

fc
rt

Ul

H-)

ttl .
Q Q

o
wh
^o Of c
ffi o
rt oo
o z

H-l
U t
0 0

H-l

CQ

CO

§
co

i

,<
•H3

z

fc
< ^

tt,

60497800 D

rt
Ou

H-l

<:
<

Uh

h-1

rt
o
rt

<

o

o

3
O
Q

ttl

hJ
H-l

co

H-l

tt.

H-l

<
<
Ut

uj

5
^
UJ O

hJ

<

H
co
O
Q

8^
S fc"

^

as
e z

&

rt

O

< CJ

uj zi
X

UJ

^^ H
y

uj Oi
H
H Z

CJ

*< Oi
ui

<
tt,

Z

H-)

CU

■<

o
'
<

UJ Uh

UJ

3O ^u j
rt h

C5
Oi

>- H-l

> H

UJ

Z

E
UJ
Q
H
CO

Q

^

O

fc o

H-l

fc
o
<

< ttl
H 0Q
<

U t

Uh

Uh

>

ttJ
Oi
Oh

B^7

*d

o

>>

CQ

E
00
G
'uh
.
ed Ui

-fi i-

op rd
qj Oh

•d

•d

E
,

eo Uh
XI QJ

ro oj

OJ Oh

91

Ii Ii

Q
H
Z

o

t n

cj

"P
.Y

co

rt

sn rd

u
ut

QJ

3'>
.V

co

E

00
d
QJ

rd
O f

fi.
H

o

E

00
d

ed

Xo oI
OJ

E

■do
E

00

00

tn
o

•d

o

E

00

3U h

*d

o

o

3
Uh

OJ

rd

O h

ed

Xo oI

Uh

OJ

•d
O f

OJ

rt

Xs nI
91

3

UH

Uh
OJ
;Lh

Oh
CJ

CJ

•d

is

H 8

QJ

•d

•d

.Y

¥
U h

>
.

'i>

2

ed tt

XI
oo OJ
rd

QJ
CO

•d

o

E

00

3Uh

rt Uh
XI OJ

op rd

QJ Of

Ii

OJ

*d
O

oo
3
ed

Uh

rG

OJ

OJ

Oh

E E
o

H

•d

•d

iS

yU t

"?
3
co

E

oo
c

Vi

r,

o

o

E

CJ

eo
X h
00

OJ

/^Su

•d

-d

00
G
tt
Uh

OJ
7 ^
U i

E £
o

CJ

00

.

ed uh

•fioo JJ
77^
03 Oh

Ii

•d

3

Uh
ed

.
Ut

-fioo -2rd
93 B*

SE

jHd coj

">

"S
Ut

3
co

.¥

3

CO

^Sf\

H

CO

O
Z

o

Uh

O

E

00

G
sn a>
to
Xh T h

ttl
Q
O

>
fl

Sa
eo

oo

rt

>

OJ

UJ

H-)

•d

"?

.Y

3
co
I
CQ

tt)
H-l

OQ

<

o

H
UJ
Oi

•d

o G
Z xrtl

Ul

uj

Oi

T )
QJ

Uh

rt

2

co
Z

Q

tt)

1

•d

*i>
cY

$u t

co

UJ

uJ

id
OJ

t

t

t t

£
r
'ut

•d

•d

V
yU t

CJ
oo

XJ
d
00

co

*d

tn

y

yU t

3
co

V

3'>

3
co

CO

G

H

CO

hJ

o .
f c f fi
fc 22

Z

uj

oi

$ %

2°

H

ttl

CO K

H-l

fc D
< Z

CO
CO

&

.
aw
fc s
H CQ

<

Ut

O
fc
Oi

UJ

H co

Z rt
o
w
ut CO

CO

ttl
O

tt.

3
co

a

X
tt)

ui

HH*

H-l

<

Uh

<
<
tt.

co

s

S
tt)
ui

CQ

<:

H

2

ffi

o
2

$

vx fc

CO
CO

co rj

fc
z
CJ

UJ

o
X

X
tti

UJ
E-h

co

3

ui

<

tt.

UJ

fc
<
<< ECO g

<; g*

5»s
ws2

6

ui
Q

Ch

fc 3 «
<3S

o
tt.

UJ

ft

ft
fc S3

uj
' Uoii

H-l

<

O

Uh

<

Ut

rD

ttl
H
O
ttl
ttl

• H ffi co

^

co'

CJ

H-l

5
a
UJ

ooi

UJ

Uh

cf s
< <;
H fc
<
tt.

^*£s

/"S^v

B-48

60497800 D

fjfjjSN

•d

o

oa

•d
o

00

rt

Uh
rt

QJ Of

|H clj

E

oo
c
Ih

>fi in
op rG

QJ Of

H

o

E

c

cj

ed

-d

- d

o

E

00
d

XI
oo ra

• d

00

*d

•d

E

E

E

o

ed it

Uh

si

E

£

o

00
G

3Ih

xo :o r_d

£ E
H 8

•d

E
00

.s

«!> Of

o

qj

«p rd
oj a

00

Uh

rt
•fi
oo
OJ

Ih
_H
73
Oh

Ii iE-1 o

3

XJ
oo OJ
rG

xV :i

.
e d w.

QJ Of

E E
£
E-» °
cj

o

OJ

OJ

rd

Oh

XS
00

0 0

QJ

O,

E £
n

CJ

3
rt
XI

Xi
oo OJ
73
QJ Oh

£ E

00

QJ

:— O

H

oo

Uh
OJ

.5
rt
XI

Oh

QJ

CJ

E-

I h

CCJ Ih

<
' -*

E

0 0

c
QJ

•d
o

£

Uh

E E
o

H

•d
o

E

oo
c

00

3I h

tn
o

•d

o

o

Uh

rd

00

U f

OJ

r3

Oh

CJ

oo
T- t

c
3 E
CO

3

/gmn>\

QJ

Uh

O

QJ
t t
CO

OJ
Uh

• d

"?
,Y
CfH
3
co

3

•d

>

yU t
3
oo

tn

C-f

rx
CJ
0>

XI

sn

O in

I*..
QJ

*>
.¥

a
o

OJ

si

UJ

Z

f-H

B

U Oi

CO

•d

•d

•d

•d

U h

U-,

Uh,

CfH

.V

>
y

CO

CO

3
">

•d

3

>
y

OJ

OJ

co

>
¥
OJ

CO

0^\,

3
'>

j$$$r\

yU t

3
co

CO

Oi
O

oi
O

a

a
Oh

H
tt.
ttl
-)

H
tt.
ttl

Q
ttl
ECJ
ttl

Q
ttl
H
U
ttl

ft
ttl

H-l

<

tt.

60497800 D

hJ

ttl
hJ

<
<
tt,

z
tt.
ttl

<

tt,
co

Z
rt
H^

Oi

Q

Q
ttl

H
CJ
ttl

ttl

H

H

oi
<
Oh

ttl

ft
tt)

ft

_)
<
E<
tt,

hJ

ttl

<:
<

oi
<
0,

ffi .
O

z
tt)

ttl

.

ffi

2 •

oi

w Z
f- 2

tt)

CJ O
ttJ tt.
ft 1

W<

s
fc s
>
CQ
• d

OJ

d

C/J

Uh
ed

.
uh

£ £
03 'U,

.2
Uh

00

rt

.
Uh

Si

93

Vi
03

3U h
ed
XI
oo
03

rt

Oh

E

E

E
00

3Uh

. fi 9 3
sn rd
OJ Oh

•S £

•E
d E
o
H

O

ed

Ui

QJ O,

E Eo
•fi
H o

Uh
ed

• d

S

E

o

00
Uh
rt

Uh

3I h
Uh

Xh 1>
«5 rd

rt

•

o

E
.
Uh

- fi J h
oo rd
03 Of

3Uh

CO
Hh

i t
ed

Ih
OJ

Oh

QJ

E
00

.s
uh

•fi
£
sn rd
QJ Oh

Of

^33|k

o

o

00
,G

I i Pf 8t I i I I
QJ

oj
* d

QJ
d

E

oo

00

.s

.s

3U h

OJ

tn

o

o

00

93

tn

93

• d

o

.
CO Uh

I i

EE

•d

oo

.
ih
OJ
rd
Of

QJ

OJ

•d

o

s

00

00

OJ

o

£

£

.s

QJ

•d

o

B°

Uh
ed

.
fi

QJ

Of

•& -3

I i

X
I
HH
' C

3
ffi
t t

/—\
Q

CJ
QJ
Uh
Uh
O
CJ

+ H
CJ

<

QJ

o

CJ

tn
CJ
u t

QJ

Uh

o

OJ

3
*>

3
'>

CfH

CfH

u¥l

CO

CO

CO

¥

•*rf

^ j

H->

G

^

c2

tn
*i>

¥

^ j

+j

H
■f

H-I

t-i

H H

QJ

QJ

OJ

OJ

OJ

OJ

OJ

"i>
¥

">

CfH

U t

y

">
^h
U

'i>

CfH

">
¥

'>

CO

CO

QJ
CO

QJ
CO

co

H H

•ui

OJ

•d

QJ

"?

3
'>

cY
ClH

cY
CfH

2

C O

CO

QJ
CO

• d

'>

o
d
QJ 3

■3
CJ o
o

¥



.2
H

00 I—i
Uh F>

o « X

OJ

.2
vi

CfH

G

.op
CO

t-i
OJ

tn

>

<2

HH

H

IG
h

C|H

3

CO

sn
OJ
Uh
Oh

X
qj
o
'•3
qj

O
iri
~
G
rt

J.s
t t
•—"

ih

rG
t

q«j

d

fc

<, rt

.S Uh
d ■-■
rt

tt

O

Kl

Q

•d qj tn
vi

u,
Of

d" ™
O

QJ

„
£
to

•*-■ fi. d
G

*

3 fi

|

cd 3 

O

Xh

d
C UJ

Ȥ

2- CJ

—f

S fc

QJ

-* X)

" d
d
qj

.
tn

OJ
Uh

OJ
Ih
qj

fi

o

*-' tt,

U t

"G"

X>
t t

rt <
00 ^

E

,
hh
oo
13
"^

• d

r -t

OJ+■'

QJ

o
G

2

E £

J r^-i
■U fH 0G
2
G fi ^
o> G Ul

tS
fi

£
8
OJ CJ

£ fi

Oh OJ

l a

CfH ,2

o

H-I

t t

QJ

l-H

0J

l^

•d

3
*>
•Y
CfH

V

sn

3

yid

o

^ tt)
<
Z 3

OJ
CO

£_,
C - 1 0fc
0

CO

«

3

3

H H

OJ

•d

'>

OQ
UJ
h-1
CQ

z uj
°1—1rrt,

C O
u t

<

2D

C O

CN

en
C O

Q

UJ
UJ
QJ
00
ed
sn
tn
OJ

UJ

3

s

Uh

o

si

HH

z
o

hJ uj

HH
C O
C O

s

O

ft
UJ

oi

Bj
trj •—I

O

<
<
tt,

H

«8

X

"2 ffi
Qfc
w oi
tt)

W

Z

^U J Htt.H

ttl
jQ

< uj


•> fc
N
Q co

uA *—*
UJ
•
HH

fc !

oi

tt,

fc
<: <->
U,

rt
o

tlz

hJ

>*
h4

rjj

H

H

<

'

CJ

Z

u-i

S co
2 co

O

<
U t

~ ui
fc s
^s 
m
rn fc

scufc<

hJ

?
fc o
rt

<

 fc

ffi W
HS
a o

fc fc
ui Z

hJ CO

CQ O

OQ O

S rt

>-* m
H <

Z >H

fc ^

3°
•-*

H

CO

<

rt Sq
p
fc zfc

is fc
Q

|

.

K ui
. UJ UJ
fc tt. CQ

S3h
tt,

fc

UJ .
K uA
tl
f c, tU
t . J CtQ
<: uj 
o? 73
QJ Of

Uh

rt >h
•C oj
oo rd
qj O-

Ii Ii II

H cj

00^\

3*>

'>

y

cS
id

CfH

•d

'>

3
co

CO

0$$&>>\

tn
'>
.¥

•d

">

'>
.¥

•d

tn

Uhh

'>
.¥

3
co

CO

8 |
S ">H

*x ^» foi

? 03
rt
■t

G

ed ed
91 _

**^

.H

2

QJ

op

CO

5
OJ

O. ""

rt

Uh

QJ °
C

G

3 '?

63

ag

E »Q3

- S

oj
rt
fi C h

o
fc
U H-l

oo E

QJ OJ

&

oo 3

91 "S
hh ra

H r t o o ho o
h

cu tt, o

O Z Oh
rt p C^h

oj

r

S3 u,
93

■t on
d

CO

£

S 3

*d

'>

• d

oo -fi
c +-

co

i2l

">

"I

UL
chY

3
co

co

ffi
H
O

O
O

ttl

z

s

Oh

u t

tt)

^ UJ

s

z D

z fc
O

<

tt)
«,

§ rot

< z

cj o

Si

CJ <

§
EQ
fc
z
o
H oo
< co

fc
<
<
Uh

60497800 D
0S\

rt

Q

tt)
H-l

tt.

zHH

tt,
ttl
Q

§£
a w
uj
fc <£
H co

oi

UJ
H
CJ
<

H
co
Z

H-)

CJ
hJ

r A

o

O

o

u l
hJ

h-1

u

3
CQ

<

ttl
HH*

H-l

f fi

ttl

H-l

<

< H

tt.

Uh

so

<

H

o

so
Uh

Uh
HH

H-l

h-1

J z

<

<

o
tt)

tt)
-A

o
UJ
H-l

hJ

oi

o

O
Q
ttl

tt,

<

H-l

z
o

tt)
tt,
o

sr t

o
u

hJ

<

U t

CO

cu
O
O

ttl

z

-J
O
tt.

3
">

OO

UJ

CO

O

C **>

H
CO

EO

O

*h

§
~
CQ t5

so u 2

•fi S iS

.

Ti

°2
OO l-H

O. OJ
rP\ -tfd 9 C
3
Uh oo e
OJ QJ
oj e -in

60 „. E

x>

g Q
tt) co

G

fc S

3
.¥

tt,
O
ttl

CO
hO

<
<
Uh

o

ttl

O

z

<

H
co
tt)
Z

CO

O °Q

fc -0
fc S
H-l

hJ

Uh

^

H
U
tt)

—
•»
OQ

O

tt,
tt,
O
^

;
uh'

w fc
tti <
CQ Q

O UJ

h J

h4

<
O
tt)

<
O
ttl co

H-l
h J

fc 3

hJ

<

J o
< rt

U,

H = H
Uh

I—I HH^

CQ

B-51

QJ

QJ

o

CQ
*d
OJ

d

CO

HH

00

■§
ra

Uh

Of

Of

I I I I
E-> cj

J—J

Uh
ed

•

qj

Ih

Oh

£ E

; fi

o

tt

■■fi J,

•s -s
CQ

00

Uh
ed

Uh
rt

Uh
ed

Uh

oo rd

QJ

03

; fi

O

fc

E £
H cj

QJ

Uh

-fi £

tn rd
QJ O.

I I

o

oo

00

.a
it

X3 93
sn 73
qj O.

E E

•.fi o
H o

ih
9>

o3 rd

i fc

I I
E-h

o

Uh
rt
Xh

^Q ,

QJ

•d
o

•d

o

Uh
Cd
Xh

QJ

OJ

*d

o

00

cp rd

Oh

OJ

•d

00

- fi i i

E £

O

OJ

•d
O

•d

oo
.S

00

Uh
.
CO Uh
r- QJ
QJ

T3
O

o

00

QJ

OJ

*d

.s

Xo5
I •r3
»
QJ

QJ

•d
o

*d

Uh
«

3
Oh

H 8

OJ

•d

•d

o

o

00

00

ed

Uh
rt

•S
Uh

uh

XI 

OJ

o

%
o
fS
G

op

CO

rt

id
CO

OJ

id
OJ
tn

d

*d

'>

G

G
OJ
T3

OJ

•d

id

C+H

id

CfH

CO

CO

00

CO

OJ

d
QJ
•d
U

t

OJ

CO

c

OJ

•d
Cf-f

QJ

CO

>

O f

s

QJ
Uh
fc

OJ

£

QJ
d

+3 ^*H

O h

•r" O

CO

>
.r.

OJ
X h
CJ

Uh

ci
op
'oo

ed
Uh

S3
t t

QJ

G

QJ

rt

r-i

3

e
b
to
n
a
r»
c ehe
D
dO
o
tl

OJ

X>

d

a4

t t
sn

•O
G

QJ

3
>
*

*

£

3

fc

S3

£

cY
Cf-H

QJ

<

S
fc

xi O
H Uh

OJ

CO

t

e
a
p
rst1
; ea
Thea
eb
:reflr sh
m
tse
.nt

t

d

t - i
QJ

QJ

Uh

3
'>
OJ
uL

3
'>

t-t

QJ

CO

y

U t
OJ

CO

x?

OJ o
X)
« oroa
—t
X>

qj

U t

E

QJ

£

a j

d

HH

<^^\

tt
O

T3 QJ

d

O^

« o
•d _

o

UH

G ttn'

O

* t

rt g

tn
d

oo
QJ

ed

3

O x

QJ

'•JO

CN

G
QJ
*d

OJ

5
*->
Oh oj

OJ

d

t-t
CJ
OJ

d

*
td
Z

.

I h

Q

d
OJ
•d

OJ

3

¥

O
O

<

G

OJ

E-

o

2

3

QJ

O

O
Z

s

d

3

QJ

CO
CJ

UJ
Q
O

d

3
">
¥
id

G

•d

O

">

rt
Uh
rt
O h
OJ

ed
ca
e
n
tm
d
aitIst D
O
op
.l

CO

D
e
O
m
n
a
te
riten
rfcedto
siut
< Si

cY
<1>

CO

o

93
sn

d

30 0
QJ
HH

D
sg
O
fu
n
o
;
M
T
R
Y
to
nac e
ul

2

1

OQ

Uh

UJ
H-l

hJ

OQ

<.

tti

CO
CO

UJ
hJ

o
o

H-)

IJU

o

1' ci

ttl
OJ

sp
00
00
OJ

CQ
O

fc

sUJ
fc
H-)
HH

h-1

<:
H
 I

a•
hJ

•

/**^5\

2

HH

og

O
H
ttl
O
Z

CO

Z

tt)
rt .
fc .
fc ,
cu fc

35

£3
UJ .
oi

.

fc

1

UJ

.

ttl fc

2 fc
, fc

35

3
z
d fc

o
u

tt.
<
Oi

o

cu

uj
co

H-l

hJ

<

HH

<
s
fc H

3
H
H co

H oo

Uh

tt,

Uh

oi

u t

o

Oi
UJ

E-H

Uh
CO

Z

a
h-1

tt)

o
tt,

O

UJ

<

UJ
H-l

si

UJ
K-)

H-l
<

f

tt.

fc
HH
H-l

<,
Uh

w

1
O
HH

rt
UJ
tt,

oi
uj
tt.
CO

Z

ul

uj £5

fc 5

^8
fc£
< <
fc Q
-H z
fc

H-l

hJ

<

<

Ui
rA

s^
dg

ttl

H , tt)^
fc

H-l

r^

HH


.¥

">

">
.¥

CO

♦
d
J-h CO

y

X,

CJ
H

CJ

tn

■
>

*>

'?
.¥

2
OJ

OJ

CO

CO

tn

">
.¥

'>

y

C f-f

3
co

CO

O
Z

o

<

OJ
HH

Uh
OJ
•f->

d
o

UJ
Q
O

00

rt

CJ

srt

o
z

3

oo
QJ

rt

CO

OJ

TJ

CO

—
'

00

op

-d

•d

'?

0S^y

•d
'i>

2
3

yU t
CO

3
co

co

CO

CO

tt)

oi
O
H
uj
Oh

O

tt.

H
CO
D

CO

ttl

>

<
rt

O

tt)
co
D
hJ

<

o

3
-1

s

CJ
ttJ
Q

sao

ttl
ttl

rt

CJ

z
o
Q
Q

ui •

Uh

OQ

CJ
O

H-)

<
<

Uh

60497800 D

H

CO
HH

s

rt

X
UJ

uj

z^

3

Q UJ

Q
Q

§ h J

<

Q >H
fc CQ

oj
Q
•^
u
a £

ttl

g
CJ

D

CQ

HH

^3
fc H-l

H U-

<
tt,

•d

">
.¥

3
*>
.¥

co

CO

0Sf\

rt

G

OJ

S

HH

Oh

t t

o

tt)

!-,
Oh

h j Z
< ui
H CQ

<
Uh

Q
ttl
H
<
Z

QJ

QJ

rt

X .3 XS
CJ
t n Ih -G
G O •5
O X
QJ
OJ
Q •d QJ • d
Uh

(I)

G
G

o
t-H

Uh

QJ
Of

o
U

c o

Oi o

sn

H-l

ttl

UJ

O

rt
z
w UJ

fc rt
S
O fc"
d

Q

§ •
Oh rt

< ttl

<
tt.

CO

CO
H

Z Q

cu

QJ

co
*d*) CrtJ

fQcJ
rt
t t

H
00
D

rt

t

O

-d

H
A
R
T R
V
D
I
E
R
T
AP
Y
LI0

7.

co

ffi

rt
Z

UJ

00
co
Ul t t l
H Oi

rt
rt

ft
ttl

oi <.
u j ttl

9
z fc
z

fc z
z ^

■7

U f

00

X M
fc Q

ttl
Q
ttl

oi

^ *
H (N
c^

<
tt,

s

o

en

rt

o

(N

UJ
CU

hJ

fc
3
uj s

O >H

CO

rt
o
ttl

oi

u i it*
o
ttl

o

1

•^
rt fc

uj tu

a
>
UJ uj

Uh

Oi
UJ

OO

*

<

Uh

>
H-l

H - )

CN

<

Uh

»

OQ

00

•d

•S
Uh

d

£

QJ

co
CO
HH

eO

'o.
E E
o
1
OJ

H

E

E

00

00

00

CJ

ed
XS

Uh
OJ

d
V r Oh
QJ

E oE
CJ

£Uh

ed
XS
%
QJ

d
Uh
91
rd
Of

EE

H

o

'lH
ed

Uh

■s1 rOJd
OJ

OJ

QJ

o

TJ
O

tn

TJ
O

E
.S
Uh
Uh
OJ

OJ

QJ

TJ
O

Of

E E
P o
CJ

E

E

oo

00

QJ
• d

o

E

E

oo

00

00

.sUh

.S
Uh

1? a

13 *d

13 rd

QJ

O-

.E
d E
o
H o

rt uh
XI 93
OJ fc

II
H

«j

QJ

T J
O

E

3Uh

ed tt
Xi QJ

OJ

TJ
O

.
ed uh
Xi 93
Q,

Oh

Ii

3Uh

£Uh

rt Uh

ed

QJ

00
Uh

^QJ

q,

O,

E Eo

: fi

QJ

H

E
o

CJ

tn

S

S

E

o

vi rd

O,

•E
fi E
o
H cj

<*H
Uh
rt

UH

13 rd
qj

o

oo

d

Uh
,
ed tt
Jt QJ
QJ

•d

00

d

QJ

•d

o

E

£■
'S,

OJ

OJ

TJ
O

Oh

Ii

OO

3t t

ed tt
XS 93

o3 rd
03 Oh

E £
H

cj

3UH
rt

uh

•S £

It

•.fi

H

O

o

/Sri^V

t?
o

E
§ d
—.
rt
rt o

G

/—"\

Uh

.2
HH

G
>
93 Ul

° H-l
o >
* O

CJ

<:

o

CJ
CO

HH
G
OJ

OJ

d

OJ

QJ

3

3

y

3
">

S
s

U t
QJ
CO

id

QJ

CO

HH

HH

t j

QJ

CJ

t t
G

CO

cS
S
CO

5 -fit t
ra

UH 'J-*

aj
CO

-?H i*

■f-i
QJ

OJ

G
QJ

TJ

3>

3>

cU Yh
QJ
CO

Uh.

id

>

3

+-«
d

3
>

cY
C|H

3

QJ

CO

CO

+H
G
aj
• d

HH
G
OJ
• d

QJ

G
OJ
•d

'>

V

3'>

C|-f

HH

U t

cY
Cm

CO

CO

CO

CO

3

3

CO

t-i

HH
G
OJ

'i>

3

3

H

CO

O
Z

en

rt

<
u t
Q
ul

io
z
2

Uh

o

*Uh

Uh

.TJ

Uh

G

sn

OJ

G
QJ
•d

Ih
QJ

OJ

TJ

$' ■

4 H

o

id

3

CO

UJ
CQ

CQ

E

CfH

U

ttl

OJ

y

rt

3

C O

1

OJ

X>

'S
OJ

a

CfH
O

Oh

•*->

CQ

rt

HH
-

d
QJ
G

,00
'sn

QJ

x>
ra

G

rt
♦2rA

93
S3
t t

m 'io
oo

—I QJ
OJ Uh
>
Oh

3 g

HH

00
UT

QJ

rt

TJ

1
id

3

3

CO

o

O
H

H

<

a
uj

H

o

«°
OJ

CO
tn
OJ

00

UJ
i
Q u
r A

o

O
u t

oi
ttl

u l

B-54

< fc
H Q
•<

<:

Uh

Uh

H

CO

CO

-J
ttl
y

hJ

fc

H-l 2
ttJ H

*4
u
o

H-l fc,

H-l

H f fi

E- •OQ

«,
tt.

CO

U J Z

o

ttl

Z co

u

fc

O

3
<
5 fc

z
o

uj

Uh

*S
uj S

tt.

00

<

• Ul

H
CJ

u,

CO

ttl
Q

CJ
HH

Uh

Oi

fcB
< u
fc o
tt,

tn

E"

¥
id
3

id

XS -S3
•d <"
•C XJ

3

3
CO

C O

QJ

X I

3OJ

CjH

H-J

'tt
QJ

QJ

C O

6

TJ
CO

< £

>
¥
i3d
CO

CJ
HH

H-l

CJ

z

HH

t-i
t i

OJ

ffi

CQ

H-l

Uh

■ui

CQ

ttl

CO

rt

QJ
• d

CO

o

oi

t-i

OJ

tt)

o

Z

CO

t-i

3
">
¥
U t
3

tu
O

HH

i-t

D

1

HH

CJ

co

H

t t
sn

G

ed 2
•°
§

I

CJ
QJ
Oh
oo

o

ed

sn

<
>>
id

QJ

X»
t t
sn

t-l

CJ

c o
QJ
Uh

op

2

E
rt
CO

.2
'oo

C O

3

OJ

Uh
O

3

rt

QJ
00

rt
QJ
CJ
G
ed
CJ

s§

HH

fc CO

H
CJ

tt)
^r t z•

Z w
ttl ttl

££

9
oi fc

<

H

O

hJ

K

o fc
^
fc
h«J
<
si*

O UJ
Z CQ
Q

H

Z Q
<; Z

fc >j

•< <

ttl
OQ

H

3
s

H

Uh

O

u t

ul

rt <£
fc K

u t

o £
J

<

CJ
Uh

CJ
UJ
u->

CQ


•<
tt.

UJ

H
O

©

r t

S
o
u

OU

H-l

tti

H

tt,

CQ

3

H

r-i

tn
tn

HH
CO
CO

HH
CO
CO

J Z

H-l

H-l

hJ

H Z
■<

*<

Uh

Uh

o y
q o
< Q
Uh

Uh

itt.

60497800 D

/

^

V

OJ

QJ

TJ
O

>.

OQ
TJ

jpSN

QJ

d

CO

00

00

I h

Uh

rt Ih
XI 93
sn rd

i o.

r - l

QJ

TJ
O

E Eo

•t
H

cj

,

ed Uh
XI OJ
co rd
QJ O.

E £o
.-,
H

QJ

TJ
O

o

00

00

I h

I h
rt

CCJ Uh
XS
OJ

oo rd
QJ O,

EE

:-• O

o

OJ

-d

o

.5

H

OJ

•d

00

Uh

•E
t

Eo

H

o

■h

.

rt

Uh

XI 93
sn rd
QJ Oh

E EO

;-

H

o

00

Uh

I

ed uh
Xh «J

^oo rd

QJ Of

E £O

H

o

00

OO

.5
•h
Uh

,
CO Uh

XS 93
sn rd
QJ Oh

-fi.
v i r£
d

;-*
o
H o

;-" O

6g

QJ Oh

£* ii

H

o

C3

T3
O

T3
O

OJ

qj
TJ
O

00
.d

oo
_c

00
.G

Uh

Uh
rt

QJ

T3
O

o

t

ra

OJ

•d

o

00

.n

QJ

tn

o

.E

•S 7G
i O.

QJ

TJ

o

Uh

oo rd

CO Uh
XS
OJ

vi

« B*

E Eo
.-.

H

o

QJ

rd

fc

E £O

; fi

H

o

UH

Uh

XS 93
sn rG
QJ

fc

•E
-1 E
o

H

o

ed u.
•G 93
o3 73
qj

Oh

E E
•fi
o

H

o

oo

3

co

CO
CO

+ H

E

QJ

G

E

OJ
t t
ed
tt
sn

OJ

/_N
Q

c
o
t

co
OJ

t

CJ

<

■ui

CO

oo

t

t

t

t

H H

. - H

Z
O

23

QJ

QJ

OJ

OJ

QJ

OJ

rd £
tzf fi

">

">

'>

">

">

">

E ?>

<4H

CfH

ul,

CO

Uli
OJ

Cm
QJ

Sa

CJ Oh

Uh

o
>«_•
w

/H.

Uh

r9

CJ
H

,
_h

QJ

H -2
< -2

S

QJ

QJ

93

CO

tn

CO

CO

CO

S

OJ

ft/

~*H

Oh

rt

o
.aO f
fc
CJ

cj -i!O
r^

H->

.

j

H H

OJ

QJ

OJ

QJ

'>
QJ

">

'>
OJ

'>
QJ
Sa

cJL,
OJ

ui.

C f H

OJ

CO

OJ
CO

CO

CO

CO

O
z
o

i

i

S
OJ
CJ

G

rt
CJ

1
oi

at

3

.00
CO

£

.

QJ tt

,

js

d

00 OJ
'G OJ

H

sn
CO

3 CO
Uh 'iK

OJ

.2 J§
' E| f>
3

"i>

id

o S3

OJ

CO

CJ Oh

oi

Oi
UJ

^J

t-i
QJ

t

QJ

•d

">
QJ
id
3

■u
t

sn

QJ

t

fc 3
> E
ui 3

3

CO

£
QJ
ra

uA

CfLf

H-l C

CO

UH

OJ

>
OJ

C "~'

Ht-^

OJ

OJ

TJ

rt Q3

QJ

.a
3 eE
o

TJ

0 0

OJ

QJ

id
3

id

CO

CO

OJ

3

tn

CO

E
s
«> id

i3d

93

a xs

CO

oo

fi

C

G

P

ei

«

rt qj
. G " fi
d
_
a* qj

OJ

OJ
H-J

c

xs
c

QJ

st it

CO

•fi
<»
. , _ , fl J
fi
£-'
QJ ■*

UJ

ra

-a

Oh Ih
Oh rt
*H

.22
rt
OO
HH

Of °
tt -d

Ul

ed

5

oo o
CO

OJ

QJ

d
u-

O

0 0

ss 5

Uh

CO
i

u £

Oh

X

"^

G
•GG QJ

Uh

OO
G
"oo

Oh

UJ

o

CD
t
CJ
OJ

0 0

co

ra
00
£

tn

<:

.jJiPX

t
ed

+

H

ra oo

•a ra
»H-.

*-'

5z
cn§

Ih S
u

O

fc u

CQ
UJ
hJ

rt
tt)
H
tt.

CQ

<

ttl
H

tt,
<

ttl

fc Q

Sa
ut

i£

rt 5

O CO

z<
tn

ut

^2 uqj

%

.

co O

£2 q

<

uj

o
s
Z D
£2 *

gg
CO

^

H
ttl

rt

<:
o
H ir
<
c
tt.

tt.

Z g
fc
Ui
Q
t t
fc

'Z
**
H
l <
S

Oh rt

fc
S fco

hJ

s

fc Oi

< D
H

tt,

Uh

UJ H

ll

tt)
Z

h rt

tti

W Q
uj

fc ^
Oh tt)

fc Q

O

rt

f c. fc
H

< tt,
H ■<
tt,

>' .
fc o

Q

rrl H-l

tt,

z« oz
00 CJ

CJ

". fc
. tt)
. >
,
fc
ttl H-)

H
CU
H H

HH

H

a

<

CO

CQ

oi

ttl
H

h

s z

tt)

fc s
< <
fc z

fc fc

HH

<
H

o
«^
g UJ

ttJ

S

•

s •

h§ W

hJ

fc
fc , OQ

S3
U t

-hh;

< ffi
H

Uh

H

fc
5
tti •*

fc§
fc <
W\ fc
00 o

r-t *—;

. rt

.o
• ttl

uj y

-5 fc •
^ fc z
fc Et
5 2s
<:
ao
H UJ CJ
Uh

0S&\

60497800 D

B-55

/*8|\

TJ
O

TJ

s

OQ
• d
OJ
d

oo
ed
OJ

s

H

Oh

E
O
o

ed ui

Uh

.3
Uh

o

E

00

3

Uh

svii OJ
GS

E

oo

00

o

E

00

,
Ih

rt Uh
XS «>
13 rd
QJ O.

- sf ni r£d

B°

Bo
H cj

.§
I
H 3

H 8

*d

-d

•d

TJ

S
s3

.¥

H

QJ

13 rd
QJ

Of

tO

qj

"?
.¥

Oh

ed

oj

O.

i s

Uh

rt l-i
QJ

O,

EE
H 8

'i>

oY
Chi

3
co

co

hn

•fi
iS
UP dl

o
E

00

3

QJ
T J
O

tn

E

00

3

QJ

■d
o

•d

t n

o

E

.s

3

TJ

o

.sUh

rt Uh
QJ O,

E £
.d
o
H o

TJ

00
G
Uh
tO Ih

•fi
-vi rd
QJ O,

E Eo
•fi
H o

y

d xs

id

t t

Q
J■—
<

CN
I

•9 5

58 S

fc§
h rt

•d

3
'>
.¥

"?
CO

TJ

T J

>

CO

B°

•fi
£
vi rd
91

&

Ii

H cj

WJ

kH

Xh 93

13 rd
Qj

O,

Ii

• d

Uh
Cd

In

Jt (JJ

13 rd
QJ

Oh

E EO

; fi

H

o

>S^v

TJ

>
.¥

sa
sn

tt

Oh

c2
SOJ
a

'?
•Y
SOaJ

CO

C O

o,

o
c

3ed S
T3

oo
a
>
O
•d

X
QJ OJ
S
3
«j
.s
oo
"

O
H
O
O
0>

H

5

tn

t t

Xc o
3

'c
s
rt «J

tn .%

OJ

03 fc

00

3

G
.
Uh

.¥

OJ
-O

G
fi

2

ed Ui

XI cu
13 rd

Uh
ed

T J

CO V-H

8

i §

00

G

co

s-l

d

oo
,

'>
.¥

Tt ed
sn 93

S

Uh

o
£

E

E

00

3

*d

* d
O

o

S

fc ^

G

• d

XS

H

QJ
QJ

ed
00
OJ
t t G3
ed
ed co

xi
S3
e
d
HH

G
Si

fc
CJ

t-i

QJ

QJ

ed
sn

OJ

OJ

E

t-i

E
QJ

XS tedt
H tn

TJ

TJ

U t

y

QJ

CO

"P
U-,

3
co

CQ

a

ttl

stt)

CQ

<

rt
o
u,
z
o
HH

oi
UJ

3

s

co

CQ

uj
Z

ou
co

CO

<
u t
rt

UJ

z

HH

O

z

tt)

tti

ECO

3

o
z
h J

•<
H
<
tt,

H-l

5
a

<
uj
<
tt,

3
tt,
O

ffi
o
S

o
z

co
fc Q

< Z
tt,

H
co

tt,

Oh

rt
w

CO

H
O

rt
o
tt,
p

O
H
O
O

tt.
O
H
U
ttl

t-»

co
ul

tt)
>

3
hJ

ttl

OQ

H

zt t l

oi
fi

5
z

O

z
o

H-)

H-)

ul

<
tt.

tt,

CQ

<
<
tt,

/*^\

o
<

>fi^\

B-56

60497800 D

0^\
OJ

QJ

•d

0Sr\

>,

• d

OJ

d
00
u t

Sh

&

Ii

Uh
rt

o

00
Ih

'uh
tO

XS OJ
o3 rd

XS

OJ Oh

E £
H 8

00
Ih

oj
13 rd
QJ

QJ

Oh

£ £
H 8

OJ

■d
o

tn

o

oo

'C
CO Uh
•oao 7o3j

93

• d

o

oo

O
Q

QJ

•d

o

00

ed u.

-fi
S.
sn r3

i Oh

*Uh

ed u.
si
oj
co rd

i

*Uh
Cd

00
Ih

•fi
ic
rd

O,

QJ

Of

Ii Ii Ii

si

QJ

93

o

T J
O

Uh
CO

Uh

gj

Uh
ed

Ih

X! OJ
oo rG
' U i

93

t-f

XI
oj
oo 73

Oh

QJ

Oh

§3 6

H 8

E-h o

QJ

tn
o

oo

00

.s

Uh

ed

93

tn

o

00

.s

Uh

QJ

•d

TJ
O

o

00

OO

I h

*Uh

xs
j3
eo r3
oj

QJ

Oh

Ii

QJ

tn
o

• d

* d

o

oo

00

.s

.

xs
jB
sn rd

•fi oj
op rd

B° Hi s8
QJ

Of

QJ

Oh

X
oj
co rd
QJ

Of

ill

H-J

G

QJ

OJ

G

Q
H

CJ

<

Z
o
u

G

QJ

OJ

3">

3

CfH

< 4 H

.Y

G

ed
en

•fH
00

QJ

93

QJ

OJ

O.

,Y

CO

3>

3*>
y
CO

CO

-*
£
O qj

OJ

QJ HH

ttJ

.fi «
cj •£

CO

t

t

QJ
I h
QJ
CfH
OJ

t

QJ

3h

00

CJ

QJ
Uh
Of

d
o

E

,G
+J

"*-• QJ

uL

U t

t

rt

3.
E

E

a«

QJ

QJ

CO

CJ
fc

H H

Oh

Uh

OJ

ed

t

CO
OJ
CJ

E

t t
s n

.s

t - i

H-J

G

t

QJ

H H

QJ

E

.2

QJ

t

t

OJ

QJ

£

E

QJ

Uh

QJ

3
'>
y

Uh

a

3
">
,Y
C fl f

C f H

CO

_

■«

£

CJ hG

OJ

si
CJ

•
QJ

S3

^

c2

J»H
CJ
QJ

QJ

XI
CJ

CO

UH

QJ

XS

- fi
cj

*J

o
2

OJ

QJ

3
*>
ySa

3
'>
¥
Sa

OJ

CO

CO

CO

•d

O
«,
Q
Ul
Q
O

o
z

2

tj"
00
Jhh

E

G

QJ
HH

rt
o

sn

3

.op
CO

i

t

G
OJ

3">

Sri

o
o

Sa
3
co

Sa
3

3
CO

§ E
E 8

OJ

3
*>
QJ

•d
d
QJ
Hi

rt
E

2

+- 3,

QJ

3
">

3
ed

OJ

E
QJ
I h

CO

QJ QJ

U t

t t

d

QJ

oi

CJ

ra
i t

U h

uj

ob
G

OJ

o

QJ
CJ

Oh

QJ

fi

3
-s
■f
H HH
M
G
Cf_

QJ

~

HH

o

E

d «
ttl Vt

QJ

TJ

QJ
I h

QJ

c

QJ
tt

QJ
tt

CfH
QJ
I h

sit
93

it
tn

U-,
OJ.

OJ

E E

QJ
t t
ed
sn

OJ
HH
ed
t t
t n

CfH

C-f

O

O

TJ
d

Uh

UJ

ra
O f

t t

f->

G

G

E

E

OJ

d .S3
O
O
H

QJ

OJ

G

oo
QJ

fiw £
3

G

Uh

O
93
t t
93

QJ
U.
QJ

eo

QJ
CJ

t n

t /

QJ
Uh
OJ

00

Uh

fi

QJ

OJ

£

5

E *
5 3
2C O . 0
0
Uh
c+h oo

° 3

w E

OJ

QJ
-H»

t

rt

00
U h

U

TJ
C

T J
G

OJ

tt

t

d

t

rt
E

'vi

O
G

Oh
O

HH
00

O

"qj

QJ

£

*O *J

3t

~"

eO

O " fi
Q '.£-.
.

|_4

Oh

Oh

ttl
H
U
tt)

UJ
H
CJ
UJ

f t
ttl

f t
UJ

CO

00*

CO

ui

d
ui

6
tti

d
ui

uj
oi
D
H

oi
D

3

<

OJ -J

3
O

x)

en JS

«
- <
QJ

"^

is rt

jHa «gl

CO

CQ

<

r-\
Q
fc UJ
Z
rt
uj. >-t

CO

H

CJ

fi z
oS2

o

o

fc
CQ

HH

H

^< c0 o0
Sh

fc
>* CJ

S X
QJ
OO
ed
sn
sn
OJ

s

s fc
CJ

.

H

>H

.

■< rt
fc <

<

U t

60497800 D

* <

fe
° Zo

CO*

CD

tti
ttl
Oi
D
H

uj
E-

h J Q

UJ

Oh

"< [£)

H Cu

< Oi
fc <

<
2
H S

H-l

tt.

U t

Uh

Uh

«,

d
tti

CU

H-l UJ

fc £5

<

***

*

OJ

O

«) « °
~ fc s

-G ° HH
o

o

E

_^

—f

qj

JS o S
QJ
•fi

«
CH

CU

CJ
uA t n

S
tn

oi

U t

ttl
tt,
ttl
oi
r^

«< Z

< UJ

ttl oi
fc ^

uj 3
e^ Z

Oh

ttl

fc

Oh

^

fc

O co
ttl
rt

<

Ou H-)

o

fee.

^J w

fc
<
o
Ul

H Oi

^H OQ
3

fc

LU

U t

u-

OQ

2

UJ
oi
cu

'

ui
U
Z
UJ
oi

O
Ul
fc
fc
~

ttl
CJ
tt)
rt

,'
fc

o
a
ifc fc
uj ij

S3
o ^

•^ £2
fc

< s S3
H co
Uh

hJ

rt uj

fc CQ

<

HH*

fc
fc . CQ

.

S:
C3
^j

fc 2
< o
H tt.
Uh

W
>,

H o x>

° fc'
ttl

CO

<° dG "Sfi

**

CO

tti
oi

s fc

ttl
Oi

fc o
Uh

rt
o

co*
O*

CO*

S w
fc Q
rt
o
Oh (_j

^

fc

s

—
11

ttl
oi

HH

Ol,
H-) UJ

.

UJ h

«H

z §

tn
tn

ttl

8
2
5*

e-

fc

tt)
Ou
O

u t

o
CJ
Z

oi
O
H

CJ

S w
>H

ttl
Q

-j

XI

oj

l
CQ

ttl
ul

O
r>

E - 3
Uh

Ui

S3 si

E

d>

rt

.

£Q

QJ
Uh

—.

>>

S3

OJ

QJ
Uh

•d

OJ

OJ
t
eO
sn

« o .
E G Ui

rA

J

H

Q

< o
tt.

B-57

z*s^v

QJ

OJ

TJ
O

>>

OJ

tn

00
G

OO

•c .

•c .

d0 0

•fi
£
vi rd

si &

QJ

u t

tO

QJ

Uh

ra

Cf Gh
QJ fc

Of

EE

P8

h,

£ %

?*

OJ

OJ

•c .
rt
Xh

T?
rdf c
OJ

.2
T h
>
o

HH

d
O

£
rt
Uh

00

o
Uh
u , .
fiQ J -3t

HH

d
QJ
TJ

>
¥

Uh

Ch.

O

CJ

3

-fi it

QJ

CO

tn to

I fc
cd

O

jt
+3

OJ
»H
U

CJ £
fc
O

G
ed
CJ

O +3

•S

,-* 91

CJ

CJ

CfH

G

oj
JH

-H —f
ft HH»
"
Bj

■JH

^ O oj
n 'it 1%

OJ

cS o« M
I,

*d

,op

CO

x;

oj

.Hf

CJ

•>

^

C,

©

QJ
Uh
c«J

rt

Uh

CO

QJ

•d

S
a
"oj

S
a
"qj

'>

">

CO

CO

QJ

QJ
fc

EE
P 8

•c .
CCJ Uh

X) « >

VI Tr*,
QJ
fc

£ E
P 8

rt

Uh

XI 93
QJ

00

00

oo

fc

EE

P8

co
T J
OJ
0J
CJ

OJ

t t
eo
•fi

Uh
Uf
OJ

«? rd
QJ

Of

i s

H 8

ed C
H OJ

c3 rd
Qj

Oh

§ 1

H 8

"h,

'i>

OJ
U t

S
a
"oj

"oj
CO

CO

cH

S3

"Td
G

G

1

tn

OJ

>
<
Y
CfH

O

"

U t

OJ

CO

Uh

QJ

t'>j
CfH
c2

R
ence
rf esreqrua
ir

t-i

U t
OJ

93

t n

•d
^ 91
H e* *t
O
tt "o

si
h 5 -fi
• r c3 r

f c ^
3 HH

la .

ot

>

oj

QJ
lH

7» f
v) O
d c

S g
*•§

OJ
Uh
+ j

'?

CO

G

OJ

fa
ne
q
u
j
Theu
infct o

OJ

0^Q\

QJ

QJ
CfH

OJ
CJ

o
cte
b
a
is g
su
m
ie
n
tl

HH

Cf-f

';>

QJ
Uh

TJ

"qj
CO

QJ

T3

"3
oQJ

.

HH

H-J

T3

sn

* t-l

>


OJ

Uh
QJ

xQJ
OO
O

t-i
*d

.2
*hh

'co

E

Uh

X)

t t

QJ

CO
QJ

eo

Uh

<

rt

8
o E
SS QJ Ih
cj v?a

SQJ
a

t t

XI

s fi

P 8

•d

QJ

O tn
Q "j*

£ S

ed

£

00
.
Uh

o

O f fi O
° ~ Ut

xrt
>
O.
rt
o

93

P8

O h
QJ
Uh

rd

o

Oh

£ £

XI 1>
T? Gh
QJ O.

.£
Uh

OJ

■d
o

t n

o

G

H H

HH

QJ

00
.
Uh

93

93
tn

■f
O 'it« tz
5

Uh

ti

Uh
Cd

o

rO tJ CoGJ

OJ
CO

<

G

Uh
.
CO Uh

t n

HH

QJ

' t t

00

G

QJ

Tl
O

o

•fi
£
tn rd

EE
P 8

P8

c*
O

Uh
«>

OJ

-d

00

G

Uf'

OJ

•d
O

00

G

•c
ed

QJ

•d
O

00

CQ
*d

d

OJ

T3
O

o

eh
a
slaisstibusti on
u
rinfct

G *3 jh
O *3

OJ

-d

'?

2

"qj
CO

QJ

CO

oF
nu
inctr p
am
r.eret

T
a
h
b
eia
vr m
u
g1
tn
re
a yao
n
rara

A
e
p
a
tcr dep
soctir one.
Q
tt)

CO
CO

O

a
uj

tt,
O

ui

z
o

CJ

X
ttl
X
H

u t

H
HH

rt

s

fc z
ttJ g

SS
Cu o

=*°
H tt,
<
tt.

B-5 8

N
E
G
H
T
L)D
C
E
S
X M
N
S
.

HH

O
QS
ut
> £

UJ

& -A

"

U t

rt
00

N
S
U
A
R
T E
R
U
C

• CO

z .

o

OJ
00
CO
QJ

* H

oi

£ tHHt l

S fc
CJ rj

" r t

ti

tt.' fc
ui h

Z

CQ Z

tti

-. fc

S
i
uj q

z

tt)

u oi

S fc
<-> z"

Sz

H co
tt.

A
LT
R
E
FR
E
S
R
E
Q
A
U
I

z<

H-)

OQ

< .

2>

*- ID
tti q
CJ oi

Q ■—•
ttl o
> Z

0^^K

uj
O
f * Uh"
$2

N
N
T
C
R
IS
I. N
TS
.T
L
I
ui q
o rt

SO
N
W
L
T
IL
A P
S
O
T
C
R
I.

H
A
A
LN
U
L
N
M
C
E
T
O
E
T
AT
SS

Sz

zUJ <
Sz

a:.

sra
e
q
u
i
a
e
lr:f e
H rt

T
AL
e:efrR
E
S
R
E
Q
A
U
I

A
T
LR
E
F
]O
U
F
N
C
IT. R
A
M
P
R
E
T

Ut

Ut

z 
.¥

•d

u-

CJ

•d
CJ

QJ
TJ
O

c

XI

QJ

OJ
T)
O

G

•d

Uh

E h
o

H

£

00
G

c

"oo

T>
O

ra u,
Xoo
I rd
«
oj Oh

eI
P8

o

c

'Uh .
ed

e §
P 8

ed
,fi

• oo
f i TG
in

CO

I I
P8

•d

'>
.¥

c

rt

Uh

1—

OJ
Of

9>

E E
o

t-

Uh

QJ

Xh
co
0)

rd

H

CJ

Of

E oE

CJ

•d
>

.¥

CJ

•c
eo

I h

00
G

'C
Uh

QJ

oo r d

Of

QJ

£ oE

Oh

£ E
n

CJ

CJ

•d

tn

>

">

E
00

.

CC] Uh
XI  O.

E £

H cj

H cj

• d

TJ

2QJ

QJ
CO

co

•c
rt
XI

TJ
O

E

OO
d

J
Ssni -.O
,_J
OJ

TJ
O

o

G

U f

rd

tn

oo

00

.s

Uh

XI
oo_?>
rd
QJ Of

tn
o

TJ
O

o

■>

CO

H
CO

O
Z

o

E
Uh

TJ
G
d
/*PN

/J

G

op

CO

ed

9>

OJ
Oh

U,
U t CJ
ed

od

00

§
^2 §XJ■
tt) 3
C>h. *»

Oh

o

•d Z

HH*

OQ

<

Q

><

H

z
o

tt)

Q
ttl

w rt
D o
£-* ttl

' H
ttl

rt

UJ

H
O
Z tt)
H
w w^

fc <
co H
UJ
Oh

O UJ
. EHH

•z

Z

§§

H rA

fc w

fc
ffi ttl

tt.

un

I h

o

CfH

QJ

O

91
QJ

C S3
QJ ed

rt

ed

G
O

ed
U ,

"^
£
QJ
rt GQJ
t t

i

t

i

ed

t

tn

G

HH

G

93
r-

< £ tn

CO

H

>»

ttl ttl

rt §

P

fc 2?

<2

tt.

co ffi
Z H

Q
ttl

3
r l

<

u x

R rt
fc o

H
tt) Q

zO °0,

Ot, ttl

3
H-l

fc l-H

■ oo

Q rt
Z tt.
o ttl

. CO

UJ
H
CJ

z o ^

tti

fc &

S3 2 Hco
2 co 5 o

H " S

60497800 D

fc s

CQ

• Ut
HH

E

snt

OJ

ed
sn

tn

h-1

Oh

/*^^.

t

QJ

G

c?.s

UJ

Oh

t t

"2
'>
.¥

co Z

7
OQ

U i

Uh

fi r l

•d
d

91

C f H

I h

ra o

ul,

tn*

rt

C O

H
CJ
Z

rt

tt,

CQ

ttl

CQ

O hJ
C Oh
CJ S

o
tt,
uj

Z
ttl u
S <->
uj
H
<
H

H Oi

an

Z CO

D

tt.

Oi
D

CO

tt,

' HH
S

w
UJ
CQ

<

U
ttl
X
uj

;

stti .
^

fc

OQ

fc oi oi
< < <

H fc >
tt.

H H

H
CJ 2'

* ffi

§ S2

££
w »■•

h
d
zttl -<
D
sttl wa

s I
ttl ■

H rt

tt)

H UJ
< CJ
E-

co ttJ

rt
ttJ
tt,

Uh CO

<9
53 o
5
M

H - )

tti
N
-J

OQ

OQ

<

5

rA

ttJ

ttl

ttl

ttl

tt.
&;

hJ fc

hJ

H S
<
u,

tt)

ttJ

fc

< 3

rt

H
O

z

-J

<

OQ
Uh

H
co

<
<

Uh

B-59

QJ
• d

>,
OQ
• d
OJ
3
co

rt

.

Uf

00
G
'C
ra

Uh

T? rd

P8

61
P 8

oj

Of

QJ Of

OJ
T3
O

o

00

.

xiv i «>
rd

hG 9>

OJ
TJ

o

o

00
G

'C

OJ
* d

9)
T J

o

00
_G
"uh
ed u.

£

U i

ed Uh
XI 93
sn rd
OJ Oh

00

C? *d

OJ Of

15

H 8

E-i

.

Cd Uh
Xh 9>

2J &

£ £
c o

o

OJ
TJ
O

OJ
TJ
O

oo

00

*C

-fi.
s n "£
d

i 6

QJ
T J
O

' fi \

rt Uh
Xh 9>
tn ra
OJ fc

§ 8i
P

QJ

o

.

ed Uh
Xh «>
? G3
OJ fc

oo

oo

'Cl .

"C

Xi

XI 93
o3 G3
a> Of

£ £

P8

CO Uh

1>

1? Gh
oj

fc

1§
P
8

rt

OJ
• d

o

•c .

00

*C

QJ
T J

tn

Uh

£ £

P8

oo

00

.

tO Uh
Xh «>
^
G3
QJ fc

£ 2
H

QJ
T J
O

o

o

' fi .

CCl Uh

Xf •»
cp Idt
QJ Oh

E £

P-8

'C

.

Cd Uh
Hh «>

^8 «

QJ Of

r-ji
H
o

"qj

x>
rt
CO

00
G
'co

G
/ — V

p
c

.2
0

<

QJ

H
■

G
QJ
TJ

_ H

•d

'?

CJ
v»^

•?

.S2d

cY

co
CJ
u t
H

H-i

H-»"

G

o

HH



Sd

QJ

x!
CJ

H
■

H H

"qj
CO

QJ
'h,

OJ
TJ

Sd

Sd

'>

Sd
"qj
CO

H-i

H-»

'£

"oj
CO

'>
Sa

OJ
CO

£

H->

H-J

H-i

rt

QJ
- d

OJ
T J

QJ
* d

Sd

U t

Sd

d
0 0
Ih

QJ
• d

•a
OJ
X I

OJ
CO

CJ

">
"qj
CO

'>

">

"o

'qj
CO

CO

CO

O

QJ

Z

53
6
OJ

o

fc
G
O f - fi
«• OJ
+-> }ri

u t

Q
ttl
Q
O

o
zHH

rt

8

O

8

S

C

CJ

•H OJ
QJ o

sti
,00
CO

a§

I

C^ ^^

H H

H-»

G
OJ

G
QJ

•d

* d

>
•Y
CfH

H

>
QJ
SQaJ

QJ
CO

oi
CQ

CO

TJ
G
QJ QJ

1l

H->

• d r t P.
QJ
r
H

rt
»i
rt

«>
u
Oh

"qj
CO

t-i
G
QJ

t

QJ

•d

-d

>

">
OJ

Sd

Sd

CiH

Sd
"qj
co

>
QJ

"oj
CO

"oj
CO

"qj
CO

H-J

G
QJ

Q
ttl

hJ

tt)

PQ

<

CJ
ttl

.

.

ul
ttl

UJ

!• tt,zu t
•

H-l

^1

CQ

Ul
CQ

CQ H

H-l

hJ

<
OJ

<

uj fc

s

ttJ

ttl

ttl

gcj
■< 2

'>
c2
C
fH

"qj
CO

"qj
CO

fc CO

ttJ Q
H ttJ

H tt)

<
U t

h J Z
< ttl
H OQ

<

Uh

SS

•<
tt,

rt <->
cj

o

03 Q
ID fc
co w

u t

oi

«

■
cY
<4H

CO

tt)

B-60

d

•d

"?

cY
U t

t

d
OJ

OJ

>

£ « UaH
"^

H H

d

d
QJ
• d

,-H

fc *
< *

rt
rt
rt
X

HH

rt
tt) .

x fe

W

CQ S
13 P
co z

fc §

E-; cm

< UJ
H N

U t

tt.

*
t n

r A

H hJ

tt.

tt.

Z

rt
rt
rt
UJ

X
<

.

H

>^
z
co <;

>■*

co usj

H
, co

ttJ

d z
^H CJ
o

^

tt,

Uh

^

E—• co

60497800 D

OJ

/*JPS

OJ
TJ

•d

o

>>

00

OQ
•d
QJ
3
co

rt

Ih

XI 93
sn rd
QJ Of

XI 93
en TG
QJ Of

pt
H

f fi
H

£ £

£ Eo

oo

cj

00

c

'C

.

ed Uh
Xh QJ

? da
oj 0.

£ £

f fi
H

OJ
T >
O

O

co

G

•r ct b..

.

OJ
T J

o

00

d
'C

OJ

tJ

O

o
o

Xh 4>
co rd
QJ

Oh

E E

f fi

H

o

00

d

■c
.
Cd Uh

oo

Uh

.

CQ Uh

*Uh
CQ

.
Ih

Xi 93
sn rd
QJ O,

-G 93
sn Td
OJ Oh

XI OJ
co rd
oj

O.

;Hfi oo

f fi
H

;—
H

O

E E

E E
o
o

OJ
TJ
O

o

c

d

'C

U -

OJ

•d

00

00

c

Cd

93
TJ
O

OJ

-d

£ §
o

00
_G

OO

QJ

OJ

•d

00

Uh

i_

XooI TG
oj

Cd

XI

? -a
oj
Of

QJ O,

fi" §

;-■
O
H cj

QJ

E E

;-*
oo
H

rt

si

CO

oj

oj

rG

fc

E £

;Hfi o
o

ed

o

00

00

.£

_c

I h

i_

•d

o

00

Uh

Ih

93

•d

o

.d

*Uh

ed

OJ
TJ
O

Uh

hH

Uh

Ih

CQ Uh

JZ* 93
sn r—>
03 O-

Xoo rG
oj

X
OJ
oo rd

E-

H

E E
—
o
o

ed

QJ Of

E Eo
•fi
o

i

a

H

o

E Eo
•fi

Z
H
Uh

J**P\

c
o
I h
QJ
t t
OJ

G

r
a
rt

#o
e—N

P
H

l H

HH

o

Oh

<

Z

o

u
>
"—
• •■' '

HH

t

cQJ

CJ
HH

E-

.J
d

hj_j

•d

• d

OJ
TJ

QJ
TJ

CfH

U

t

CHf

CfH

ui,

c i

QJ
CO

QJ
CO

QJ
CO

QJ
CO

QJ
CO

co

'>

d

4_l

G
OJ
*d

">

CO

H-i
G
QJ

t

G
OJ
TJ

■
>

'?
.V

"?
OJ
OJ

HH

t

G

OJ

-I-*

t

G

OJ
TJ

72

'>

*>

< H

CfH

QJ
CO

QJ
CO

H-i

c
OJ
"S

G
OJ
•d

tt,

.¥
Sa

Sd

Sa

'>
"qj

CO

CO

^ j

OJ

QJ
TJ

S
a
"qj

S
a
*QJ

c

d

'>

a"2rt
fc

*4J
CO

HH

tn

O

CO

CO

CO

O
Z
O

«,

•Uh
d

uj

S ttl

3
Q
O

o
z

2

H-i

CJ

cOJ

< z

QJ
O
G

E

OJ
t t
ed
t t

«
o

tn

o

U h

'c
op

Q

CO

i

t

d
QJ

uj

H

t-i

■»-*

■n

•*-*

•4-*

OJ

QJ

QJ

QJ

OJ

QJ

T J

TJ

TJ

•d

QJ

'>
<
Y
C|H

•CfH
Y

Cf-,

0J
CO

QJ
CO

QJ
CO

Uli
OJ
CO

tN
1

t-i

•d

*>
OJ

'r>
QJ

3

U
O
IB
S
T
,
n
O
R
G
P
or R

2
z
ut o
QJ

•d

'>

^

CfH

QJ
CfH

OJ
CO

rt Si
c z

OJ
CO

QJ
CO

tn Ut

tt)

ti

Up

Uh
t

H-i

t

QJ

£
">
cY
Cf-f

"qj

CO

Uh
Uh
QJ

t

QJ

t t

G

Sa

CO

CO

>.

QJ

•d

T 3

'>
OJ

+"•*

t

OJ

•d

OJ
Ctii

"oj

"oj

"oj
CO

CZ)

CQ

ttl
uA

O
co
Z

OQ

<:

Ul

OJ
00

rt
CO

QJ

2

a

z

z

oi

&

z z

>< ttl
co S
UJ

E- lo

<
tt.

60497800 D
i0S\

UJ

HH

rA

HH

rt

o

o

Oi

oi
oi

oi
X

A
T
E
M
]
X
A
R
N
T
E S
>
fc
CO CJ
Z

ttl
hJ h-1

r< £



<

rt
q
rt

oi

ttl

.

Z
O
O
oi
Ot

o Z
oi £

rt
rt

CO

H-1

cu

o

<

HH
H-l
CU

E-

s

ui
X

fc

UJ

ttJ
00

.

oi

UJ

ttj

X

X

z z

>- ttl
co 5
fc <£
H co

<,
tt,

t-J CO

<: uj
h3

CO

>
*
tn

A
C
S
T
S
X
A
N
T
Y
EN
CO |

-J .
< O

ul

fc
3:
< <

Uh

U t

■2 Q

Ul

*i 3
u.

«,
fc ui

^ z
< 5

H 5
tt.

<

ttl

II
HH

rt

UJ
CQ

U l

CO

£ rt
o fc

rt
o .
rt .
rt .
UJ
rt
X o
< tt.

tt, ^J

Z
>< P*

>C O o«

oi
<
ou

Oi
UJ
H

s

ffi

hJ Oi
U t

O

S

x fc"
< s

s °-

oi O
uj

Z

°ffi
UJ H

fc O
CQ Z
•< UJ

O

H-)

hJ

Q

<

<
Z

tt!

UJ

z
.

UJ

.

< 2

H

<
a
H tt.

hJ co

A
LT
SN
C
D
IA
T
I

H S

H S

Uh

tt,

Uh

Uh

S

H O
Z

rt

H O
Z
hJ So

r*-j

H fc

UJ

< £2

< S2
Uh

B-61

/ff^S

QJ
TJ
O

OJ

TJ

O

>>

OQ
TJ
OJ
d
oo

£

00

G
•c
.

CO Uh
Xh
9}

sn rd
oj O.

E£

P 8

QJ
* d

QJ
T>
O

o

00

00

G

XI ._>

Xh 93
T? TG
QJ O.

Uh

sn Td
QJ O,

E £

P8

00

fi

'G

Uh
tO

CO Uh

.
Uh

CO Uh

XI 
«3 rd

EE

EE

P8

H cj

00

•c .

•fi  Oh

.£a %
o

OJ
TJ*
O

o

00

G

•c .
ra

QJ

•d

OJ

Q.

P8

" l H

ed u
XJ oj
s$ rd
QJ Q,

£ B

P8

QJ
* d

QJ
TJ
O

o

0 0

00

•fi .
tO

OJ
TJ
O

Uh

X
i <»
T« Gh
QJ Oh

£ 6

P8

OO

•c .
ed
Xh

Uh
«>

P8

00

•c .

' fi .

•fi
xi
vi rd

•fi
£
sn Td
2 &

CO Uh

Xh «>

ep rd

QJ O.

Oh

£ £

QJ
T J
O

00

•c
.
eo Uh

H5 G3
OJ

QJ
TJ
O

QJ

s i

CCl Uh

Of

6 §

£ §

P8

P8

P8

OJ

TJ
d

2o O
fi Q
1-1

Ih

° c£
tt

G

d QJ
QJ Xi

o
o

E -S
ra rt
■K
co >
■H
*d
oj

HH

<

^h

^ j

H H

OJ

G
QJ
TJ

c

* d

t

TJ

■?

'>

cOJ

t

¥
S
a
"qj

¥
Sa

¥
S
a
"qj

CO

00

C O

.a oj
•5 «2

(2 t3

H H

H H

^ j

H H

t

H H

H H

OJ
• d

OJ
TJ

QJ
TJ

QJ
TJ

OJ
TJ

OJ

• d

OJ
TJ

Sa

Sa

CfH

CfH

U

CfH

c

"qj
CO

"oj
C O

*>

'>
QJ

'?
.V

QJ

QJ

00

00

t

"51
t

't>
.V

QJ
CO

QJ
CO

">

CO

g 2x >W„
w

t

2
1* rt
G +-J ^

H H

G

rt
CJ

ut
g
op

G
QJ

a
<■>o ° ttih

OJ

tt

•-*,

fi

QJ

ar

CO

£ i, H

oo

>
¥

Uh

5

CO

>^^^\

U,
OJ
S3

Uh

O

H-i

<:
2>ocLttT
•£
"-1 Oh

QJ
T J

o — « Ou
*o O 'go
tt. Q -9 co

SQJ
a

>
> oo "d

O
Q
OJ

sQJ
a

oo
CfH

Ot Ut *uJ
co
t o r t O ID

a
.

G
QJ
TJ

S3

- 3 o ttf

93

3
ar

H-i

.-T

QJ £ O

f

CO

co «J p/

t t
en

CO
t
O

HH o Z
o

<^S5X

m"

"•S
•fi
s oz
OJ

m

OJ
CO

*•

t-i
T J

QJ
TJ

OJ
TJ

OJ
- d

OJ
• d

Sa

Sa

*i>
Sa

'?
Sa

Sa

Sa

" o j
C O

"oj
C O

"qj
C O

"qj
CO

OJ
0 0

t - i

OJ
T >

QJ

"oj
CO

"qj
CO

'>

'>
<
>
a
r
yfV!twX

Ut\t
H

o2

tt)
OQ

U t

ed
t n
sn
OJ

<
2 UJ

2 Q
fc W
h q
, fc

S
rt
f fi O h
H

.

ttJ

stt)

H
O

£
Q
r<
Uh

B-62

K>

co Z

CO

_)

CO

C3
£
HH JJ

2 §

C O

H co

tt.

^°
b
 H^

fi

5

Qh

Uh

ffi

o
2

^h 3 9q
Uh

<: o
b
•< ~
pu

ttl Z .
PL, >* ,

°Z<

z

g

CO

;*

z

-|

^ O ttl

CO

>-lU

;>

^^^\

CO

•

N
E
R
A
T
G
O
H
R
W
PIRX
A
R
O
E
T
N
C
A
S
tt.

2
o

UJ
CQ

H

O .. <

a
.
H H

CO

tt)
rt
ol

H-l

<

tt.

H-l

A
L
O
TO
P
U
R
S
E
V
I O
D
T
E
S
P
U t

•<
<:
tt.

j

ut

cl,

>

E

H-l

H Ou co
<1

h a

Uh

Uh

H-l

<

<;
fc

60497800 D

-*«!\

■dQJ

■dOJ

o

>,

CQ

00

TJ
OJ
3

Ih
ra

0 0

_

H

QJ
• d

00

c

c
.
i-i

ra u.
Xt OJ
co rd
OJ 9/

E £o
•fi
H o

00

00

>H

'C
ed

.5

I h

Si OJ
oo rs
QJ O,

OJ
TJ
O

o

O

E Eo
•fi
H o

03

Ih

X5 oj
vi rd
OJ fc

£ £o
•fi
E- o

OJ
TJ

EE

H

O

o

ra
St
oo
QJ

QJ
- d

o

QJ
T J
O

00

00

00

00

Uh

Uh

Uh

Uh

o

00

Ih
•G QJ
oo rd
QJ O,
;-

QJ
• d

o

u.
93
rd
Oh

£ £o
.-.
H o

ed I-,
XJ 0J
oo rd
03 Of

Si QJ
oo rd
OJ Of

:-

;-

ed

E £

H

o

i

o

H

z

<

o

OJ
- d

'>

CJ

t

d
OJ
• d

C
QJ
• d

S
a
*QJ

c-f
OJ
CO

">

'>

C fl
QJ
CO

wo

QJ
CO

CJ

CO

-fH

72

TJ

S
a
"qj

CLL
QJ
CO

CO

z

%
O

z
2

OJ X HH

G UJ O
OJ
CJ
G

ra
CJ
c£
G

op
CO

2
CO
1

•- 6a fc
J- o z
OfU
C
r

0
^

§
rt £2
o UJ CJ
•£ o ttj _.•
co H
ttl oi
—
fc %
£
gSw
gf
E h-J oq •-« 

ho. Su i2;

OJ

oj

CfH

£

—-•

OJ
CO

CO

„,

1-8

t

G

OJ
T>

O

|

rt

rt

Ih

c

o

OJ
- d

QJ
TJ

'>
U

'>
OJ
ui.
93
t n

t

93
t n

U l
hJ
OQ

3

OJ
oo

QJ

>,

C

qj

c

I n
d

cr
2 c

e-S
Ih

ra

O
cj
Cm ££
oo "o

IS
<*>
,
Oh

H Jo

hh

d

i

t

QJ

QJ

T J

T J

hh

OJ
TJ

QJ

c
G

OJ
• d

,3 ,*;' d 2«

QJ

CJ
c
C
O

**-"
Cf-f

Cf-f

CfH

"qj

"qj

"qj

CO

CO

t n

qj (S fc
x: oj ch.
H
T3
o

">

13

«
>

^J
qj
S3

Xi

_

QJ

"qj

Q
UJ

ttl
O Z
Z UJ

H-)
H-l

O [L)

O

tt.

Z • O*

ttl
oi

. UJ

. fc
rt CQ

o

o <,

52

t t l
OQ

ra
00

fc o

H
o fot
Ih.

s

2
<
2 

HH
C O

00 Oi

tt) tt)

UJ

Q O
.

ttl

q2

IS
rt fc

o
z
fc f_

z<
j£ CO

o fc
H

rt
•^ Hd

OJ

f £

EO

Z co
5 Oi
fc
fc

fc H
»—> CO

53 s\

G

.o

C O

Of _;

•a §

H c2O

!*

CO

OJ
Uh

00

Chh

42 rt

Sa

3

CJ oo

CO

co

S
o 9«3
O
CJ

_
>>
~vi

.

•O
— O0J0

QJ
Uh
Oh

rt

Uh

Ot
QJ
- d

E
rt

1 .
. oi

15:
o

60497800 D

TJ OO

a .s

3

a
ttl

co
QJ

t n

TJ
OJ

ed

CQ

QJ
OO

rt

3
*, 3* - G

cj it;

><

<

rt

en

QJ JJ

s n
QJ
Uh

ed

ed

Uh

a

i
CQ

0S\

t

11

o

S
jff^S

vd\

Uh

C co
O "h
._; oj
I f -

cj

£

CO

o

uj
Q
O

|*

sz
U

E £O

;H

• - oo
co c93

fc-S
CJ

o

a>

5 £

'>

E Eo

H

rt C

SZ OJ
oo rG
oj Of

fid '5
ra

"> —i
qj ~m

cQJ

'>
93

^ w <
CfH

t

G

OJ

EE
o

o

-*»

c

Ih

'r* S3
O
rt

co
d
G
QJ
TJ

CO

•t

oo
Oh
O
O

H H

ed ■_

;-*
H o
o

VH
O
CfH

Q
E-

OO

Uh

o

d

o

00
.

o

o.

OJ
CO

HH

aj
TJ

o

XJ OJ
CO 73
03 Of

CfH
O

G

QJ
• d

XI QJ
oo rd
QJ Of

E £O

•r*

O

H

o

ra u.
XI OJ
va rd

u\

£ £

O

93
t n

i tt,
H <

CJ

Z '

S^co
hJ
<

z •

fc

tt. *
O ttl

CJ CQ
UJ H

z q
o fc
f-V

UJ

O O

>

OQ
*d

QJ

f

3
en
en
t

OJ

OJ
TJ

■d

00

oo

00

.s

Cd kH

•S rd
QJ O,

Uh
.
CO Ih
Xh
CD

■O J? £f c

^5 rd
03

H

fc

£ £
H 8

€ 6

H 8

00

.s

C3 %-,

cj

qj
TJ
O

QJ

T J
O

o

o

Cv
•fi

00

ed Uh
Xh CO

Ih
QJ

op rd
fl j

o

00

.s

T? rd

QJ O.

O,

£S
P 8

18

OJ
T J
O

QJ

*d

'ut
ed

93
TJ
O

00

.

tt

Xi 
^5 Td
QJ

OJ
TJ
O

fc

ra

QJ
TJ
O

00
Uh

XJ
sn «>
rd
oj o,

'C

QJ
T J
O

oo

00

.

eel Uh
Xh OJ

^3 vd

QJ Oh

.s
Uh
Rl

,/*^^S
Uh

J-> 93
qj

Oh

CC) Uh

XJ «»
QJ

%18
P

P8

+ j
G
QJ
TJ

d
QJ
•d

H H

H H

■t-i

OJ
TJ

G
OJ
TJ

TJ

*j5

'?

G
QJ
TJ

S
a
"oj

S
a
"qj

CfH

U t

U t

6 %

P8

g6
P 8

l£ 8
1
P

fc

P8

G
O
+3

o

b
Z

<:

H H

H H

o

£">
CfH

S
a
"qj

"aj
CO

CJ
u t

CO

H

ed
OJ
Of
Oh
rt

O
Z

o
<

3

o
z

2

G

'i>

'?

CfH

SOaJ

"qj

CO

CO

H-i

"?

CfH

"qj

CO

d

CO

CO

CO

G

QJ

93

QJ

tn

CO

(tt

1
'
CO

3
M

H-i
G
QJ

ui
H H

H

BU £

8 fi

Xh

• •h Uh
00
OO

d1

ed

G
OJ
G
.5
tn

o
Oh
S3
d

r-,

co
_
ra

rt

Q gj

rt ra
OJ

•S -s
>

X>

h.

fi

*<

O

rt

t-i

t-i

H-i

H-J

H-i

co

OJ

QJ

QJ

QJ

UH

rt
Oh
Oh
ed

*

3co "co
>.

TJ

rt

OJ
OJ

O *°

Uh

Uh

S3

CO

cs

d

00

OJ

£ '
*>
,Y
SOaJ

s

""3

H-i

ra
G E
O

.

-° QJ

tt

2
S
Uh C«

j

5.
fi
2 o

>» TJ

G
ra
u

QJ

CO
CJ

8 E
OJ
CJ

t t

XI

Uh

CO

ui
Q
O

H-J

OJ
TJ

QJ

TJ

'>
SOaJ

"£

^—f

tn

G
QJ
•d

OJ

TJ

H-i
G

H H

d

G
OJ

•d

">
S
a
"oj
CO

t

t

•d

•d

TJ

OJ
TJ

S
a
"qj

ui.
*QJ

SOaJ

SQJ
a

'?
S
a
"qj

CO

CO

CO

CO

'?

CO

OJ
TJ

'£

t-i

t t

. S ofi u.,

OJ
TJ

QJ
TJ

XJ
>
O
O QJ O
G uh —h

S
a
"qj

<4H

CO

CO

'?

'?

"qj

08

fc

QJ

S3

tt

XI

CO HH

H E o

CQ

a

ttl
H

CQ

<

oi
oi
<
1

;

§£'
K UJ
CO s

z s

oi

QJ
00
co

ra
CO
QJ

z fi
o fc

O E-

00 §

fc ^

^ o

fc
s
CQ §

^ S3
2 Q

fc fc



HH

UJ
CQ

H-l ^

fc t_?

&

fc 5 o
«, 9 rt
fc « <

H

§
uj

0< ttl
fc CU

«<
tt.

f<;c ^
Pu

O
Oi
UJ
N

^H fc
9

O H

fc

<:

s -

Uh

Oh

ut

CQ •

cj

Si 2

ttJ

ul

z

uj ^
■-) *

Uh
CO

tt,
u

<

o
UJ

Oi
ttl

tt)
u t

CO

fc

S
ut fc
tn

^

H
fc £_>

Z §

UJ W

3 <:
uj >

s

ttl

Sh CO

fc <
fc ^

UJ
Ou

u t

< oi

F
N
D
R
E
A
C
H
N
O
T
ID
F
EC
A
LR
E
S
T
U
.L
ro ut
.

n

fc P
< O
H CJ

H
O
R
G
N
E
T
LZ
A
S
LH
TC
E
R
O
IL
A
N
T
L
S

U t

tt.

H f fi

oQ

o fe

z g

H ttJ
f fi

CO

,. CJ
3
'; UJ
<

H-l

~~~rt

<
o
H tt.

H i 0

u i £

fc

U,



o

>>

OQ

■OdJ
d
co

00

oj

ra m
•G oj
oo T73

Of

QJ

£ §

;H

00

•S
Uh

ed ti
Xi 93
vi rzx

H

I h
CO

o

Ih

QJ Oh

EE

;-

O

H

OJ

o

'uh
ra

tn

o

o

00

00

.£
m

ra

h.

XZ QJ
co rG
oj Of

Xi OJ
oo rd

;-*

;~

EE

H

O

o

QJ

_c
Uh
rt

i_

fc

O

;-

o

s gO

H

OJ
TJ

cj

00

'C

rt u.
Si 93
sn ra
OJ Of

£

:E-

£

O
cj

'm
rt

^-^

■ut
ta
<

V

"-

<

c

u

u.

.

o

CJ

QJ

CJ

co

Vi

r-

ra

k-

XI oj
co rd


cf

OJ

X3 T3
— OJ
QJ
tHH

* t
QJ

T J
t

OJ
TJ
ci,
OJ
CO

OJ

■d

OJ
TJ

• d

QJ
TJ

Cf-f

CfH

,Y

U t

U t

QJ
CO

OJ
CO

OJ
CO

OJ
CO

QJ

QJ
t

.C,

rt est ZZ-

2

.S
Uh

•G oj
co rG
oj
fc

* d

_oj

^Q J £* t -g3
r,

oo

00
.
t_

^ s

C
f cc 2 . M
5
J

ra

o

8.s

rA CJ
Z>
tt

«

_Ich

OJ
• d

SZ QJ
en rd
QJ fc

J2 o

hJ

QJ
TJ
O

00

fc ^

ra

j

i_

i t
ed

rt J4
<->
fi
JS rt

O

V n '

00

>*
tt) o

_

o

QJ
• d
O

XJ OJ
ep ra
oj
fc

y «
G
O

QJ
TJ
O

o

00
. d

XI QJ
en rd
QJ fc

EE

H

QJ
TJ
O

QJ

t ;

00

x: oj
oo T73

fc

£ EO

•-*

O
CJ

OJ
TJ
O

O

00

.£
'in

•-H

QJ
TJ

O

93
OJ
CO

U

t

QJ
CO

S
*fi
2 «»
E £
E
«
QJ

t t

8 -°

OJ
- d

QJ
" d

QJ
T J

Ui

Cf-f

ci,

QJ
CO

OJ
CO

Sa

QJ

OJ
- d

r-

d

rr rt
CJ o

■O>J

"qj
CO

H

CO

O
Z

o
<
3

tt

C

93
CJ

G
rt
o

s
o
z

CfH

rt

CO

HH

sa

OJ

P

Sa

eh
T
A
V
E
Q
U
I e
n
dh
e
txt backw
d
a
s.r
i
CQ

*QJ
CO

QJ

TJ

OJ

.G

o

Q

u-

ttl

QJ
T J

QJ

t j

">

">

cY
Cf-f

2

"qj
C O

QJ
C O

tt)

ttl

CQ

CQ

H-)

rt
'G
SO
«

> -m
.

sn
X
QJ
QJ UH

tn

.-. "ra
"2 'c

•£ S

ed
CJ

rt
CJ

sn

OJ
• d

S

tn rO
B QJ
ra "o

X>

S3

UJ

d
«—
'
QJ

>

OJ

S3

o
o

'C

TJ

ro

QJ
O
tt
rZ,
ed S3

rt

ed

ed

*t

0.

d O xJ

ut

z
o
s
s
o
CJ

OJ

Ut
HH

cOJ

.

TJ

co

Sa

^S*s"fi
ra

oj

■5 £

CQ 5

">
QJ

"qj
CO

^

O

ra
r93 "~Z
OO
ra co

S 2r-

H

2

E-

OQ

<

UJ

S

UJ
hJ

HH
CO

zt t )

.

SI
fc S2
OJ
00
ed
sn
sn
QJ

S

hJ

hJ
Ut

H-l

«

o
tt)

^

H-l

. CQ

•z
•o
d s
^f c Pu
<:
tt.

60497800 F

H ^

rt

< o
UJ

tt)
H
CO

<

Oi

D
2
rt

ttl

tti
H
ttJ

C O

tt)

Ul
, Oi

U.S
H UJ
Uh

UJ

H
O

S. rot

•o
* 00
• CO

X

Q O

r A

' tti
•d <*

25
tt.

Oi
UJ

<
rt

ss
ttl

rt

• rt
• UJ

ui

t*
H

OQ

s

<
rt
X

ttl

tt)

sa
X

ttl

• ui
• >

o
H-l fc
< z

fc. co

U t

tt.

H

h J

<
O

UJ

S

2

UJ
h J

2

Sa

QJ
C O

*QJ
CO

OJ

•d

">

sS

OJ
C O

h4
U l
OQ
H

CO

<

Q
ttJ
tt)

ul

Ot

tn

S
H
Z

uj

UJ

fc CQ

9 <
S2

'•$
fc ^

<<
a
H co

ttJ
H

S tot i

£2 tf
o
Z
•S3
■<
fc H

C O

00

CO

•

u

CO

CO

S
T
E
N
H
P
A
T
L1O
C
R
IS N
O
S
N
I.
C O ■— '

' Z
' O
h J

< <
H Q
Uh

2

S

CQ

U t

#
#

CJ

ttl

cu

H-l

3
o
fc cu

'>
OJ

r - t

s

ui
H

ra

'>

ci
UJ

C O
HH

TJ

TJ
93
"qj
CT S I

fc %

< o

tt.

Uh

EUh

CO

•

Q
UJ

f c . CfcJ

-J

H CJ

•

tt.

<

X

t-1 UJ
U t

B-65

t n

T J
O

o

OQ

E

E

00

00

.sUf

O,

E E
o

P

TJ

o

00

.£

CC) Uh

xc ;o r»d
OJ

T )

Uh
Cd Uh
X!
oj
up rd
oj O.

.a

i fc

B° | i
H

E

00

Uh
.
Cd Uh
Xh 93
en rd

cj

.3

03 fc

o

E

00

.s

rt ih
XJ OJ

ccl uh
Uh
QJ
r i

.a
ar
XJ
CO

E
o

1°

o

QJ
V^h

0.

Oh

QJ Oh

H

o

E
o
CJ

o

E

00

Uh

* d

T )

E

00

•S
Uh

op rd

QJ
TJ
O

TJ
O

E

00

Uh
C4 Uh
X) 
O

E

oO

00

.a

ra Uh

Si 93

sn rd
Oh
QJ

E
o

Bl

o

.aUh

Cd Uh
XJ OJ
vi rd

QJ fc

• d

E

00

.a
Uh

,
C4 Uh

-fi
.2,
so rd
oj fc

B° ! §

° fi
fc
~t

o to
* d

• d

V
y

'>
.¥

Sa

*-* Uh

QJ
T>

TJ

>

P
co

TJ

•* 'I
cY
C+H

"qj
CO

CJ

QJ

> £

CJ

<

CO

A^^v

d

<3 E

.2
HH

O
CJ

"qj
CO

co

QJ Oh

•fi 5
cj a

OJ
TJ

TJ

V

y

<*H

ra
x~ i

HH*

CQ

<

yCfH

OJ
T J

* d

'i>

y

U t
*QJ
CO

'£
.¥

co

TJ"
/*"%v

00
G

3 £

'oo op

£ £
G
00

TJ

QJ OJ
O f °

*1
Ig

it
.5
CJ oo
e
tn
5
oj
,d Uh
Ut
d,
CfH X

OJ

TJ

E
o

QJ

tn

tt)

tn
tn
ui

tt)

a
ttl

Uh
H-l

y

13
PU
CO

<

tt.
<

Oi

H

ffi

a

Z

o
tt.

zttl

H
O

<

zttl

HH

rt

• d

'?

TJ

OJ
CO

cCfH
Y
"qj
CO

CfH
HH

>

ar

HH

co

UH
U t

<1)

CJ

CO

Z
O

oi OQ

fc s

s
s

fc §

fc o
tD vo

o
CJ

CQ <^

og

IS
Ai S**1

o
z
o

ui t t l
O Z
Z HH

ttl

Z

2H

« H

U t

O H
ttl
Z Oi
o ■>r
ut

<:

H

fo
hJ I

CO

z
z

TJ

H
HH

r A

Q

"o
'd

ffi

rt

UJ
H

oi
co
co

TJ

'>
ci
Sa

CfH

d
•a
OJ
TJ

O,

Z

o
ut

tS

.oo
rt ra2

>, HH
■f
oo

CN
I

CQ
UJ

'?

QJ QJ

ttl
Q
O

ttl

TJ

"qj
CO

o

rt

'i>
.¥

"qj
CO

Z

HH

TJ

"?
.¥

O

s
o
z

•^^v

o

b Hr t
0 0

HH

H-l

tt.

z
oc j

H

CO

Z
O

co js

z 2

c j

ttJ CO

o
.
ttl

ttl

H
▶J
ttJ
OQ

O £2

Z co

CJ

Z
D
rt
H

O

z
z

HH

rt

Jr**^il)L

B-66

60497800 D

jgp***.

QJ

QJ

93

QJ

OJ

QJ

•d

TJ
O

TJ

TJ
O

TJ
O

TJ
O

o

o

>,

CQ
TJ
OJ

d
co

00

c

co rzt
91

&

E £o
—
H

0 0

0 0

00

Uh

Uh

Uh

c

u*
ed i—
SZ\ 93

cj

c

ed u.
XI QJ
oo ZZZ.
91

fc

E £

;-

H

O

o

CQ

Ih

XI QJ
en r_*

i

Of

;-

O

E £

H

oo

o

ra

Uh

u-

sz oj

eo rZ3
QJ

Of

E E

;-

H

O

o

ed

■

i_

XI 93
sn rd
oj Of

E £O

;H

cj

0 0

h

Uh

ed u.
SZ QJ

ed
XJ

E EO

:-

oo rG
91 S-

;-

H

OJ

o

i_
OJ

OJ

o

TJ
O

oo

0 0

Uh

Uh

a
.

Ih
QJ

oo rd

Of

oj

E £O

H

91

rt
SZ

sn tzz
QJ

tn

T J
O

o

00
CJ

a.

c

QJ
T >

Of

E Eo

;-

o

E- cj

«l

0 0
Uh

Ih

ed ul

Oh

x; oj
sn rd
qj fc

st oj
co ra
OJ

•Ef i £
o
E-h o

•£d £
0
H
o

0 0
CfaH

,G
'oo
CO

E
XJ

Q
H
Z

•If £

£ 11

3 oo
ZZ sn

oo
QJ

.2
f H

IE

E

CJ

<

CO
CO

.

rt .co

o

TJ

TJ

OJ

•d

OJ

■d

1- 0

CJ

'>

TJ

sl

sS

QJ

CO

Sa

2

E P.

OJ

QJ

2

CO

CO

CO

CO

QJ

o

"ob "fi

onito esnci W
A
.
% .a J

OJ

OJ

*>

QJ

OJ

QJ

'>

OJ

CO

H

O io

CJ o,

FA
dna
veiartcsl on
rfco
ins W
■* £ .a
9>

r,n

^ op o
xi 2 >
cj o. .a

OJ

QJ

TJ

TJ

2

cY
Chh

">
93

tn

■>

"qj

CO

e
rp
r sior S.

a xsj zr t
H.

SD

8 s fc

£ S «
cj

o,rt

CO

O

tT

Z

o
<

S

uj
Q
O

s

M
u t

ai

ed
OJ
CJ

c
ed
o
at
c

.00
CO

/*|8\

R
O
G
m
eiR
n
e
A
M
tats
e
m
0a
t1
e
/n
tsm
u
ts. P
.a o

e
a
r a

C XJ
CJ

E -

OJ *zt

rd

*

£ £

7

S 3

c
o

tn

* t

at
tn
OJ
c
a:

QJ

• d

fi

QJ OJ

S
HH

CU

93
CJ

xi

93

r-

tn
i
UJ

>>

oi

d

U t
*QJ

CO

e
sd
ra
n
d
tsw
o
rlm
a
e
nC
O
sM
e
M
b
iO
N encea
.s,yorclar

_>>

d
eera
h
n
o
w
lfisatlce
d
to
nO
a
eG
b
e=
R
lfi,m
e
A
lfiM
tn
e
atso
erd.

•fi oi E
H £ .SP

XJ
d -d

Q S

QJ
Uh
QJ

he
n
g
te
rw
lfa
se
fip
se
ic e
vin
,su
m
e
g
a
t.b
e
r

S3
C

QJ

£
>

y

"Hh

e
ra
p
e
tcd
h
a
r sh
w
e
ise
n
a
tp
sr
TJ

3
tt,

sl

OJ

OJ

">
QJ

CO

Th
ecd
a
n
tdi w
eg
h
e
trair exp
edc.t

tsw
d
ro
rF
id sem
a
a
d
rtu
sob
ckl,eq
va
uli

eg
la
llibuf er,a
cht.r
G Op

<
ffi

u t

CO

ttl

O
i - t

N
A
L
V
C
G
E
Q
N
U
O
IR
E
D
.
N
E
G
N
L
A
R
.O
N
T
I.IF
]E

E
D
G
N
E
IF
O
I-R
E
D
. N
T
M
A
S
T
E
N
TA
.B
E
L
N
E
P
G
R
L
.A
E
V
N
.IIFN
G
O
R
M
T
F
R
N
IA
M
T
U
SE

tt,

tt) Q

/*5"*\

UJ
* 2

CQ

ttl

ul .
OU

Uh

Oi
UJ
H

ffi

tt,
<
Oi
Ul
H
CJ

HH

OO

N
O
N
TIS
ja
sl,:or

Oi
Ui

<

<

ffi ~
CJ ttl

-I
X ttl
W fc

u t

tt,
Z uj
z H

£

60497800 D

N
O
IR
E
D
.
N
G
O
E
S
U
A
R
T
O
C
X
M
E
M
IA G
N
R
£

£

£

£

S
A
M
G
D
E
H
T
R
A
N
E
.P
R
I
N
GR
O
A
F
N
IU
D
... U
£

N
C
A
L
V
EE
Q
,C
A
U
R
IY
AC
O
M
M
O
N
O
.C
K
L
B N
T
A
N
S
E
F
R
. E
3
0-2
.F
O
U
R
S
E
.L
D
..F
I E
H
T
R
IA
R
P
E
N
.
G
L
A
N
E
R
G
L
B
U
FA
R
E
N
L
I B
G
N
W
F
A
D
N
W
IA
R
A
LE
G
FN
A
R
S
R
T
IE
S
U
ILI R
G
L
A
N
G
L
C
H
A
R
N
I G
£

£

£

£

B-67

TJ
O

E

CQ

TJ

QJ

00

•c
■

liS

h

Id

CO

OJ

fc

£ E
o

P

E
00

d

d

■d
o

o

2 A
fQ J dO f

•fi QJ

H 8

QJ

2 uh'
•fi
OJ

HH

E£

H o

TJ
O

1

00

a
.

T
*=•
QJ Oh

T>

£

.if
Uh

QJ

TJ
O

s00

00

.3
Uh

Uh

2 >-•
QJ

r fi

2 ul

CU

QJ

H 8

o

E
00

.a
Uh

2 -h'

XJ QJ

I I ia O.s
P8

6i
P8

oj O.

QJ

TJ

O,

tTZ O-

Uh

G
aj
TJ

TJ

2

2

V

CJ

CfH

co
CJt
u

CfH

3

TJ

.Y

O QJ
QJ O

-4
o
0J

H
CO
O
Z

o

o
z
2

CO
Uh

OJ

6S

TJ

CfH

c!

.Y

y

y

"qj
CO

CO

O Ih

"oJ
r qj
-t O

OJ

u- d
ra

xi
CJ

op

Xi

CJ "

rtB

TJ
CO
I

ttl

ttl 0 .

ed

TJ

fc r% G
TJ

V

2

>.Xh

Ut

V

tn

G O ^J
«

TJ

G

V

a
.rt

HH

CO

QJ

TJ

o

o
at

OJ

TJ

'>

•ad

rS

Q
ttl
Q
O

o

OJ

tj

£ Ih
a
•*
« >>
Uh CU
OJ
^j
CfH QJ

u
HH

3

oo f
d co

•■h

«

.

eo
tn tn
93 QJ >-jr
Uit-trC,

£ OJ oi
D S oj

c f H!
C

O'E
J
ttl £ t3

"qj
CO

Ohhh1
Uh Lh

.art

cu
TJ

•2
Ut

1

CQ

3
O
Q
*<
H

I
ttl
Z
ut

<
ut

ttl
Q
H

z
z

H

X
H

ttl

CO
CO

Z

tt,

i

tti
H-)
HH

Uh

O

8
2

rt

t
B-68

5
1
tt)

rt

a

HH

3 3

■ ^

H-l

ttl
rt

o

e
z
co o

uj tt)
Ou

CO H-,

CO
00 CO

tt)

CO

O
Z

o

23

UJ

/^\

lo

• ^
60497800 G

y$pc*\,

•d

TJ
O

o

TJ
O

E

CQ

£

00

00

c
rt

00
G

d

Ih

SZ 93
co TZ1
Oi fc

ir-i QJ
sn r z j
93 Oh

H

H

E E
o
CJ

i§
cj

•d

TJ
O

. fl

CO

OJ

rG

OJ

£ oE
CJ

o
£

TJ
O

00

00
G
Ih
ed u.
XJ QJ
oo rG
oj
Of

c

..fi ■4rO.J
Of
0 0

Uh
rt

Ih

si oj

Of

OJ

E oE

TJ
O

P

E
o

| i

E-h cj

TJ
O

T3
O

E

£

00

00

OO
G

Uh
ed

I h

a
r

c

en
93

E

c

ed
aj

I-.

Oh

E E
o
CJ

E E
o
CJ

H

00
.G
ed in
si
oj
oo rd

.£
'uh

1 §c j
H

CJ

oo
G

rt

In

aj

fc

sz OJ
oo rG

a> Oh

E E
o

£

OO

Uh

QJ
oo r^5
QJ O .

TJ
O

TJ
O

E

Uh

QJ
en '.'—I
QJ Oh

rG

TJ
O

E £

E-h cj

Uf
rt

Ih

-fiv i r£d
OJ O.

B°
E-h cj

oo
G

Oh

-3 £
a:
§
«
s

/fPN

*
c
>.
fc

OO

U

c
tn

t n

'>

-g fc
8 *-•
oj
—-

">

cj —
QJ OJ

u x>

H

£
o

CJ

o

S
sOJ

XI x>
CJ £

CO

o

TJ

Chh JJ

2

M 'it

>

CJ CJ
QJ OJ

•fi .d
O tn

QJ
CO

t

c

OJ
• d
QJ
C.JL
OJ
CO

G
aj
T J

d
OJ
TJ

ui,

CfH

QJ
CO

QJ
CO

CJ

Z
X J

o

oo CJ

fi

QJ qj

,<-,

CO
t

G
OJ

E V
qj

G
QJ


ttl
H

H

fc H
CO g

2 fc

rT.
CO

ttl
ttl

▶*H«

>H

CO
HH

ffi

S5
Ou H

ffi

CO

*

>H

• rt
ui fc

2S
<
« rZ
rl

Z 1
Q Q
ttl

o f c rt
z 2o
5
5 fc
ui z
o
HH

&

60497800 D

ffi

ffi

Oh

Ot

O

O

w g £
a) **

5, E W
Q f c
5*" Z

PI
rt8
tt, 2
UJ
OQ

U t
O

O

rt
<
£

TJ

rl
HH

zrt
<
£

fc

Z tu

Uh

OJ

I h

qj

d Uh
OO OJ

•s oo

"■f i
O
oj
f *Oh

°QJ G
_C

CO

-)
<

IcT "^
E-h

QJ G
Uh OJ
OJ C

zt QJ
fi
.■>
QJ S

EM

I£So
°9

HH

Uh

tj >fi t«j

Ul g

O ed

CO

Ul

H


H
CJ
ttl
Oi

tt)

st t l
H
<
H

Oi

CO

9a

I h

0 0

£ d
d
Z E

5

O

QJ
QJ

D
ro

x> rt

">

uj
Q
<

<
<
Q

3
hJ
hJ

h-1
h-1

D
Z

D
Z

ffi
H
>-t
£ Q
,

£S a
Q
z
o

co

UJ

S
UJ

OL

q
rt oz
K

W

ttl

s

ttj
E-h

<

H
co
rA
ul

to

z

ul

ttl

z o

">

2
z
zm

Uh

•a

00

I

uu S
cj fc
ui <
HH1 H
g CO
ttl o
cog

CQ

ed

t n

H

o -s
o -g
QJ

d

on
Uh

a
c ss
ul J2 xi

QJ

CJ

tt

•o £

E

C
O

EI•

o

cJh
QJ
CO

Uh

82
* H . fi
- H ■»
CO
fi js fc
t

rt

c2

HH

cr

3 S.

oo
o

OJ

t

d
aj
TJ

< -1

E-h

fc CO
. CO

O

a
u,
o

E-h
CJ

UJ
hJ
CQ

<

t t lW
—
•> W

fi

z

oi
<

<*> .
O •
uj

+a

^s

1>! UJ

•

fc 93
fc o
o bi

Iv fc
° s 3§
Z H

a
uj

zS UJ^

E-*

o

X fc
< u

<
O >
oi
OQ

UJ

GO

0

z

fc CO
Oh

z d
rt £

ist

B-69

QJ

TJ
O

CQ

o

E

E

00

00

.3
Uh
A

.
U,

XJ OJ
sn rd
Qj

QJ
TJ
O

• d

oo

.a

Uh
ed
•fi

Uh

ed

£

Oh

r d
Oh

QJ

H 8

E

E

.
Ih
OJ
Of

E £
E-h cj

OJ
TJ
O

o

00

? Tn

E
o

TJ

o

E

.a

• d

.'in
a

o

E
oo

00
d

a
.
ed

ed ih

£

£

QJ '5.

QJ O.

E Eo
•.fi

E-h cj

£

00

00

Cd

qj

Of

E£

OJ

rt

XI

Oh

QJ

rd

H

CJ

Oh

E £
o

Bo
E-h cj

00

Uh

Uh

a.

oo
91

ed
QJ

ed

Of

£ £
o

•?
QJ

>

U

QJ

fc

«

00
d

G
O

a
r

o w

HH

TJ

o

Uh

o
d
QJ
TJ

"2
">

-d

>
.¥

co Uj

cY
CfH

.¥

"qj
CO

co

TJ H-<
OJ 0

TJ

>
.¥

d
TJ
QJ

rt

•a ^

>> X)

d

.^H

uh tn
d

QJ HH
CO •_*

O

d

Xh

«>

45^
u,
O

Ut

QJ

XJ

ra

Uh

Oh

OJ

Oh

Uh

rd

Uh

O

c£
CJ

.a h

.*o -2a

u• a.al iuia

f^3 ra
"fi
CJ

OJ n-j

fH

E O

Xh
OO
Uh

£
d

00

co
ra oo

CJCN

HH

CJ

OJ

"
j-J

£ E
O

t t

fl vS
S ^ E
2 3
•a 2 I-a
■«*+-< N

ut
° yr a ld

JrJ

V

00

c
o
rt

CJ

H

£

E E
o

... o

O 'eo
uh *-h
QJ c
N i fi ,

O

E

00

4*JS!>X

QJ
TJ

TJ
O

£

Uh

Ih

OJ

TJ
O

a
.

-fi
£
en rd

£
QJ

E

.a

Uh

"3 ta

QJ

TJ
O

T J

*d

">
.¥

*H

•d

">

2

QJ
CO

1£ «2

•^ 5
OJ o
•fi
2

/ S i ^ y

£

rS.fi

cj .a

o

3

CJ

Oh

xi
t t
r-,

" 2fi
O

/*3>\

rt

x:

+3

OJ

O,

S 'Q« HJ|

Of

O
O

h
QJ

g fc

d

.op
CO

~
a
G Q
o

.a
B .2

eo

QJ T3

rt

cS
oj
G

QJ
t t
CJ

•G

ra

QJ
Uh

n
T HJ

tn g

•a
fi
« .2

co OJ
«
f
"£ ^ eToi

a
§
o E
OJ
c .fi.a

oj

CO

tj

8

*d

c
ttl

ra

ofi .aa

©

tj
>
.¥

£

WZ
Q o
£ H

cY
CfH

w .Q

00

Q

o

tt. •

'?
"qj
CO

tt,
9 co

TJ

fc,

gO
rt o
o h

X
~
W Q

oi f-, ui

fc Z Q
WQ
^Z W
h rt§

z « £

•'>
.¥

_
•fi

XJ

CJ

rt

T i
OJ

Si

CJ
r-

x

* .a

Io

co t3
•d
oj
*

H

CO

Z

d

cY
ClH
"qj
CO

2
fe2

UJ

• d

">

-d
d
OJ

XI

H

O.
t t
X h

nn

rt
QJ
OJ

TJ

■0Ui)
OJ

0.

■s X
QJ

°%
\

'2

z^i^v

tt,
oo
Z

CJ O

CJ

rt
O
TJ

rt

tti

So
tt. fc

fc

O fc
co fc

>H

UJ 3

££
•
3
z

TJ

H
■r*t

sn
en
QJ

hJ-

o rt

Z H
I
rt

<*> "7 c

fc ^ z
rt ^ 6

2

UJ
H
hJ

ttl
.

H tt,

hJ

o

CJ
rro

UJ
U
HH

>
tt)
Q

Z fc g

%toi

sttl

H
<:
H
CO

HH

z

rt
/^\

B-70

60497800 D

•d
O

TJ
O

E

>.

a
.

I h

«

ssni
93

i - H

Of

oj

E E
o

H

Ih

Of

rt
CJ
. r,

C)

In'
OJ

E
OJ

i t
ed
•ut
en

CJ

CJ
OJ
I n
I n

a.

u

E-<

Ih

«f> rd

Of

oj

EE

o

E

00

00

c

Uh
ed

T J

E

00

XJ a>

_H

ep ra

Of

OJ Oh

! §

■E - hMo

E-h o

E

oo
Uh

I n

.a

XI OJ
en rd
a> Oh

ed In
XJ 93

ed

E-h cj

E-h o

H

ed
•fi

E

eO |h
XI 93
en rd
OJ fc

z

Uh

Uf

EE

I t

TJ
O

TJ
O

o

00

.c

in

Tl

QJ Oh

fl )

I I | i

00

c

.s
>H

Oh

E E
o

H

cj

E

00

OJ
fico ■a

c? rd

TJ
O

E

d

CJ

Uf

rt u.
si QJ
op rd

XJ

E-h cj

f-H CJ

QJ Of

0)

co ra
oj Cu

a
rI n
a
rU ,
QJ

Uf

O

Uh
I h

OJ
QJ

S3 S3
ed

HH

rt

<1>

a
.

f t

ed i_
-G OJ

E

m

CO

t t

G

OJ
OJ

a
r

t t

£

•Eh

rt
t t

£G
d

QJ

X

QJ

oo
d
ed
CJ

O

oo fc

.£ S

> ed
>
n
■
93
tn a
si
t t OJ
93

G

o -a
^~~ «o

ed

Uh
QJ

O TJ * t
U
en

CO

c

E-h o

CO

93

I n

O

Uh

f t

00
#G

TJ
O

TJ
O

E

oo

ced

CJ

00

03

E-h o

00
Si

oo

E

•efni r£d

EE

o

TJ
O

CQ

fecn r£d

OJ

TJ
O

.a

Uh

SO

o

£

oo

00
G

OQ

•d

E

CO
CO

OJ
Of

Ew
U h X

QJ
TJ

7
2
'>

TJ

T J

cY
CfH

O
Cf-f

t j

'>
.¥

HH
O

H H

c

OJ
TJ

QJ
TJ

OJ
Uh

OJ

QJ

OJ O
-fi
2
cj .a

C f H

CfH

QJ
CO

OJ
CO

_n

"qj
CO

CO

O

z
o

G

CN

rt
CJ

">

Of
Oh
ed
O
S3

>

TJ

V
y

E
>.

G- flUh)
tnf S 3

CO

91

d

0)
Xh

OJ

<:

CO

H

CO

Z

ztt)
co

<

s
£
J
fc J§
o£ «
o y
Uh

CO j
fc
^

fc 3

hJ

ttl

a
uj

2

H-)

<
>

>

H E

H

oi

ttl

oi

s rt ~
5 > cq

a
z

HH

0
Z §fcH z,

60497800 D

rt

CfH1

QJ
OJ
ed
en
OJ
Of

J>
L>
~ H

CO

OJ S3
S3
d

TJ

'>

CJ

sl

I n

T J

">
.¥

rt

o
zo

a
z
zr t

H--4

Uh

Z

rU

o
z
z

H Ou

>«
H

o rt

§2


_i

»

OJ

>» i3

CO to

Z

u
Z

z

oi

3
8rt

W

tti

Pu
UJ

rt

CO

H
Z
ttl
Oi
u

ttl o
co z
ttJ

C
G

UJ

ttl

o

O H

PI

xo 2d
« X.

.S OJ OJ
TJ CJ C

JE J- h' S s oc c" o
3

OJ
CO

fc

HH

o
z

<

S -d fi

CO

oi

«

"fi XI

« & .2

rt

• Q
• ttl

• Z

co
co

"C ra
> Si 93
tn .- <=

QJ
X )

«« .-,

HH

ra t*5

I n

h J
OQ

tt, <

oj .a

XJ
~
XJ

U t n

oi

o
z
o
ut

OJ _co

« .fc

CO

H H
CO

rt

HH

Z rt
tu uj
> H

CO Oh

t

co
fc

£
5
op
G to

x>

OJ

ttJ

Z oi
w uj

eg
22

t

t

ttl

Ui

Q
ttl
oi

/*3"^"\

rt
OJ

QJ
CJ
G
OJ
ed

- d

<

QJ
Uh

E

op

CQ

TJ

d

CO

H-l

t

co

'£

OJ

E Oh
>^
G

oCJ

/0i&\

rt

o

C

J

OJ

CO

OJ

G

ul

^

d

<

CN
I
CQ

TJ
OJ

rt fc
XI

uj

rt

UJ
ui
OQ

rt
$

u j
Q

O
O
> H

a2
z rt
z *<
rt

CO

^

o
Z

o

l-l

Oi

o
tt,

UJ

>

o

tt)
S
D
oo

*

a zH
Z

Oi 9

<

H
co
Z
O

CJ

O

oi

ow

E-*

Q

CO

rt

o
o

O
Z

zrt

• Q
• uj
H

„ c,

CQ
T J
QJ
d
oo

CO
H H

00

00

*Uh
CC)

Uh

fi *

£ E

•.fi o
H o

00

.3

XJ
oo 

I n

ed

A

•fi £

so rd
qj Oh

QJ

E £O

;-h

;-h

H

E-h cj

o

Uh

.

tO

In

a,

Of

;-•

o

XI  .S
Oh TJ

QJ

C H f

QJ
CO

OJ
• d

OJ

QJ

72
'>
S
a
*QJ

'>
.¥

"2
">
S
a
"qj

CO

'>
S
a
"oj

CO

CO

OJ
TJ

OJ
• d

"i>

OJ

ui,

Sa

93

"qj
CO

tn

OJ

OJ
TJ

"2
'>
S
a
"qj

OJ
• d

*>
S
a
"qj

CO

'>
C fl f

"qj
CO

CO

CO

O

Z
<
Q
tt)

Q
O

S

o
z

H H

Oh

t

8
rCJ
a

ed

G

O
i

N

^n

>,

OJ
TJ

ttl

OJ
TJ

">
OJ

>
QJ

S
a
"qj

H

S
a
"qj

00

CQ
ttl
ul

CO

OJ

OJ

TJ

'>

'>

S
a
"qj

Sa

OJ

QJ
TJ

OJ
t n

>
QJ

Sa

"qj
CO

CO

OJ
• d

U

*QJ
CO

'>

t

CfH

"qj
CO

"oj
CO

OJ
T>

QJ

'it

OJ

'>
QJ

S
a
"qj

S
a
"qj

CO

rt
d

S3

H H

'vi

ra

[>

Oh

CO

Uh
OJ

tt)
u t

T t

u,

<

8
1
§1
OJ
00

rt

0 0

co
OJ

s

d
d

■fi.
o
£ Sft
Q J Qfi
J
o

«

Z »

II

O H

<•-> CO
. CO

<
O

Ul
ul

<
H
O

z
CO

O
EO

co Sj

ttl

.

sis
i l l la
o o

*—' Sh

1-5:

* 9
<

H
O

9, dz
o

Uh

oo 2
co 5
S
co
« CO

%
H
Z

CQ

i|

Q
ttl
ttl

CO
u t

Oi
ttl
N

ttl

CO

w .

•a .

Z
O
ft

CO

z

ttl
N

5d
o
<
CJ u

5 o
H

H

^

E-> trj

2H
O 1

hJ oi

to tt)
S N

Ul
E-h

<
h
H ttl
CO

CO

5
CO
O c_i

fc Oi

°3
wa

2H

9

S

hJ

H 2

st t l

 N

fc z
zO H
2

t

1

l~} Ui

;*

H H

>
Q

5

ttl
H

tti
H oo

H H

ttl

CQ

S

o
CJ

S
3

§t t i

u

z z
CO

ti

u t

tti rt
i-j o

zH
U

z

o

H

UJ
ul

CO

tt)

oi

UJ

O
u t
O

CO
H-l

E-h

CO
hH

UJ

ttl

E-h

H

oo
Q
J

fi8 gf

HH

1

q
uA

CQ

"dfi

S QJ
mo O
o
u Jt

OJ

1

0 0

rt "fi

Uh

.^S8\

oo

t
G
OJ

£
QJ

' 0£0

n

QJ
t t
eo
93
I t

CfH

CfH

n
CO

t

I

OJ

rt

B-72

X !

at
T J
G
d

r*&&\

rt

TJ
QJ
G

o

o

O
H

£

<
H

CO

Z
O

CJ
CO
CO

°z a
§fc
Q til
Q
uj
O

O

ttl
uj

E-

o
Mt

60497800 D

^

/jS^Vv

CQ
TJ
OJ
d
co

H H

OJ

QJ

QJ

QJ

TJ
O

TJ
O

TJ
O

TJ
O

00

00

a
.
1-4
d

00

I n

k-r

•fi _

p CO CO o OJ < i ~ G QJ o CJ TJ QJ Th TJ TJ CfH CfH CfH C f H OJ QJ QJ OJ '> V w J CO /$P"\ OJ t t u CO H H QJ CO CO H OJ QJ '? CO OJ OJ OJ 72 TJ TJ •d S a "qj S a "qj uU Ui, OJ "> tn tn ^J OJ TJ TJ CfH C f H QJ QJ OJ 93 CO CO QJ CO CO OJ TJ '> rt Cf-f O OJ Z CO T>* OJ •fi t t CO S o t TJ < u t Q tt) Q O o z H H rt tn d d TJ CO CU o QJ CJ T3 C f H t - i Uh OJ •a oo ed CJ G d op CO QJ Uh t-i OJ ui TJ s E-h XI a, O £ fc QJ O 'eo O rt tt. "Of t> C QJ en "qj CO OJ .3 QJ XJ E-h CJ E ed H H CO rt * j Sa CN 1 CQ t rt •d 0 £ *-* G "> QJ H H i CO co ed sn t E-h QJ TJ t 0 0 c E OJ QJ OJ X) o TJ QJ I n rt CO •° G fi .2 O tt '■eZnl ri tt > O • f i OJh Q O t t H-J c OJ •d V G OJ TJ 'S> 2 93 CO X) E OJ E Uh, co QJ 13 CJ C Tl OJ QJ Uh Ih tt E 8 QJ "qj o M E-h c c E rt TJ rt c S 2 "> OJ £ 00 O Uh S a "qj rt co G cS "S ra 52 hh to w H-J QJ , 3j ■£d o Uh OJ "o UL QJ o 1 O i2 93 CO CO* ttl hJ oi CQ tt) < ti tt) CJ P Q § CQ Q* ttl Oi E-h Oi ttl N fc r< > h H tt) *< N 03 co HH CO o Z o S uj > Q 1 -1 H H cu oo ra CO en eu G R M T U N A E M T S UC H A R C E R T S . ffi ft ° tt ?*> a ul H /*J^\ d fc O ° fc ttl N C O A N T S I D S E 0C T R A H 1 ffi CJ ft X **> ttl z z 60497800 D ttj hJ Ou X ttl rt E-h ttl o fc o 2 Ou O N S T A R E U N IA F L S T O T;H E TN LIE. Z ttt) E-4 o fc UJ w E-h co S &g CO * ttl S U M E D . O G M E R A N TA T SA S P TB S C R O IN .. U E L A O FO .N E Q z Oi H ou oi D O i * fc 1 ri < Z co oz m z c75 •s co O 22 22 w «^ CO ei tti C-n. O fc n> w fc H Z Z < CO *=j ^H £_ fc < H H CO E—i fc§ fc O ttl o fc rt ttl fc w oi ttl CJ * O w Z fc CJ > fc rt fc < > H OQ N M O C E A M N O I A E V L t\ oi a 5 fc • fc Oh s tt) E- fc r* > u_} . o i fc 2 HH ttl M E R L N T A F U S E LT S - E S G R FN O R IE D . «3S fc ol E-1 CQ CO z B-73 /**^S\ QJ QJ TJ O QJ o QJ w H ■" sn 00 .3 Uh ed oo "in ed in XI co OJ rd QJ O, 6w pt o H cj QJ ft Tl O o >> CQ TJ OJ tn TJ 00 00 UH U f CU Gq Oh CJ ed in •fi -2 op rd oj O. Eg pt o E-h o Uh CO In Oh as ; fi O H 00 .3 si 9> en rd 03 TJ O 00 .3 .3 o Uh ed rfi O J TJ O OJ TJ O .3 in «> e#S rd 0) Oh .€ d E o E-h o uh ed ■? 3 E £ ;*h o QJ H o oo 00 , in Oh o .3 rt Uh «3 :d i fc EE P* o o Uh rt fc EE ;-h o E-h o G t t CJ < a u Uh Uh ■U i '^ d OJ TJ * TJ OJ Uh O "E, oj rt QJ CO U t "oj CO _, 3 c; o ed 2 tj ra j OJ CJ G 22 <2 ■f i QJ CJ TJ QJ H-J H-J H H OJ 1 sh d 2 UH cu u eo CJ Sa d ,00 CO fi OJ QJ OJ TJ TJ •d cY <4H • Yt U cY CfH "qj " fl J "qj "qj CO CO T J fi d « hS d •xJ CU rt eo 00 ed OJ ,£- OJ E OJ -h> ed t t 3 sn - o .22 O h C3O < .3 .3 HH- § ""i& •2 o g _y TJ Q J CO d < QJ X) OJ > H H H-J QJ OJ TJ H-l TJ 22 h '? cY H H 8 fi m ra a r 55 2 o co "hh OJ .3 ed o fi =3 d OJ *0J CO HH d QJ TJ > QJ Sa "qj 00 1 Q . tti Oi ttl *0J CO Z < OJ 00 CO rt G eo CO OJ 2 «Y Sa co CO H-J t t "qj f-1 r * CO tt, hJ Oh ttl § o z tt) H O Z Ul CQ H < E B L G S A ILCJ IT R A N S ]D EU S C IT U R E N ITD O . CJ H-l Z < u H ttl ttl co H ft O z UJ S E M TE N O T N U F N C .IT .O N G IT N O I-L N R ID E IF < rA kg tn O z OJ o O Z 2 £ 22 . to" HH O, G O OJ £ E QJ O Oh fc ri 3 q -a •a E ra -# £ ea &"§ — "d TJ 93 _l f \h CJ |! ' i| ^ ■H cOJ G QJ tti H . < Q [Tl Z z HH 1 gg Oh 5 rt 2 h 6 i •-■:UJ cog UJ UJ fc h a Q z Q hJ < > HH U t Oi E-h £ '> cY U t . "i> "-. ■ > cY CfH "qj Sa H ttl "oj CO ■3 uj co OJ "qj CO rt ttl •< Q ttl rt HH tn Uh o z o tt) § Q is 1 H S ttl S tt) o N HH ** ttl o fc fc ml oi . *< uj Z :St t l n e UJ ttl uj 9 fc Hk o z o z O E-h QJ T> co O .° s o G "fi S TJ oi ttl N 2H § sUJ OJ Sa "> CfH H H "2" CO CO fc ra OJ UJ tt, ttl QJ £ £o •fi H 8 TJ O oi ui c? id OJ t ra o d HH CO *d Uh CJ G Uh Uh OJ QJ x j %5 o fi cdS "O * Uh ra 15 22 22 ra E •fi I h X G H T? TZi /*=^5v In 9> TJ t OJ '« £ - Of Uh rt Xh .3 3rt' 'co G OJ co ar co CO H-l t o c2 co •52 *d t H «? rd QJ In ra -J e d M oo O Uh Oh £ E •fi o fi f •in cY C+H QJ Uh "fi s 93 2 •E f i Eo QJ d d TJ TJ* •?«s rt •fi 2 co QJ CJ QJ Uh hG OJ "Ma O«J c 22 fi •3 uh £ O JJ Si ■ui In 00 .3 H I 00 • O OJ Oh G C Oh' 00 a . Uh CJ O rt o ed .2 G O oo Uh ed OJ TJ o a . • H |n QJ T> o .3 •S £ oj OJ •d 00 .3 XJ «^^\ B-74 60497800 D OJ T ) O >. OQ TJ OJ d eo CO OJ TJ O E E 00 00 £ .3Uh CO OJ Of i° H a r tn x: oj oo rd XJ co QJ cj I n CU O f CJ G .o t t p u < HH t t C G QJ o o QJ TJ 72 "> '? «Y C f-f QJ Sa CO "qj CO CJ "qj ft co O Z /*gjS"\ o < HH Q ttl Q O TJ OJ +H ra I h OJ o OJ s QJ 00 CJ O z HH rt s5 CO eO si 00 -u> CO £ G d QJ* T> H H G 2 QJ ed Uh 72 '> 00 o OJ Ch, ft O, "qj CO rt T t d cu OJ CN* I 03 ^H-l O Q < H ti 3 S o CO oi uj H CJ OJ CO eo QJ 2 £: H HH H§ s rt OU fl < D E R U T N C A O T. S D E M 7 E C A N X E 2 E- /0i$^H 60497800 D B-75 *c^v Oh XJ H £ o Z u e-s H G e-s fc fi 9$ o xfi t t £ O Z u ■ "rt Id ^SesSv QJ S3 eO •Ui .3 o XI eo OJ 00 Uh QJ XJ t t o G CO CO OJ G rt CO QJ £ OJ si U t O QJ Uh O £ o OJ c o Uh QJ tn 'ed G Uh QJ HH QJ X) .3 "9 r OJ in ed TJ QJ I— .3 O a m Z © < t^^B o z o Uh Uh Uh >. OJ o u u LU Q. V) H-l u. a "g o fl) t t TJ O E ed OJ O. E 3 CQ < tt _} 93 f, sI r, Uh •a* * £ & C t Ot J *r ti '£ op CO OO "fi G fc "3 £ 2 ° QJ O X I eUd h 00 O Uh £ -Ch fio o «>5 'X UH rt a> E .3 o z #, ^ tiJ o 5 8 2 u o £ sI S Q < P OJ d ^ T J .a u Zf c rtcoO f fi 52 o. qj' qj O 9> XJ XI ^ ~ QJ h T- ° 22 f £ -fi d <*O co c: g Sa o TJ +3 o .SP fir t E »h o XSJ ^ a o 6 g +3 G O OJ r +j t tt /«®n "fi -fi 3 o0, _H M -S ar t ^s2 G « O O •d co QJ .3 UH oj rd Of e d .-H - d ti ° O O ed Uh qj O c#o O ed T) .a *h oo 5 5 c°j O &5 -a si O 9 ° tJ o CfH XJ w ed * Z t * t d ed JJ rt -rt d Sd Uh •r? -d g-3 .3 sE QJ OJ O oCJ rt .fi < Z £ rt S3 O — •> '-* rt « , ^T\ QJ Uh CO £ c2 £ oj x> & Q^J « tj tj d ra o o o —* QJ hh oo t5 Tl -2 +j oo OJ fi -*. CO ! • »■> U h q j Uh cu Uh TJ •d ed >> ri s .2 fi 3 QJ .3 E fi .. ^ £ TJ G fi O 1 ".5 ° £ o I-3 S S 32 Uh £ o 3 'in CfcH CJ Oh O O o o" ^H Uh _h QJ ^ •r •d2 » -a OJ UH qj o £ o E a oj d ■> u ed qj *** E u. O 'S3 fc jh Uh QJ >•*> QJ 00 uh XJ Uh qj « ,- ra CO O 4> ? CQ Uh fi TJ ed d oo o TJ TJ TJ TJ TJ TJ TJ OJ Uh O Oh rt 00 d to ' n t t TJ S i QJ t t •O ra en en OJ OO ed sn sn OJ G £ ra TJ O : d O. < ■M B ed "oj + J 0. CJ t t Uh —1 so 00 fc G 3 E C QJ Uh Uh TJ ut TJ Oh < , T) OJ CJ tn a t £ed >, rt i t TJ qj QJ C XJ so X> TJ OJ CO G d O ra ed CJ 93 to U ed CO oo QJ J3 "o E .3 o CJ ra ist Oh .3 x> "d o ed cu Oh Oh rt oo "id QJ S3 co QJ OJ •fi £* on rt CO 2 S rt ui H OQ tt) CO CO < 00 o It ^ i f fi ^ k B-76 60497800 D 0^\ 'a, Oh £ o Oh E < tn Z ° < T» rt «> O x tt, uj g-S H c rt «2 o x Z u g-s f c fi E o CJ 2 t_ " fi rtf c.22fi O x Pu tt) Uh ttl o Z u < TJ g-s f c fi rt £ O x tt. uj O z 4 z^ -H Z o So * rr] H-) M ffi £ . rt n ^ cj "ra G CQ £ co Z fi£ UJ CO CJ CJ HH CO cT O co CJ £I n ft co O Z o i XJ CJ Uh t t > o ed S3 c o o C o rt ed HH £ Q Z o b o CJ QJ .3 CJ /$P\ T J O £i CJ Uh 00 £ "o *x eu OJ rt 00 OJ TJ E Uh H H H o o f - H CN CN /*f*N rt CJ OJ 00 OJ a. CJ CO co 00 U- rG rt Ol o UJ 'o. Oh t rt I n QJ co I n ed Oh CJ to Oh o ,c co rt OO ra 041 rt N TJ fi "S .2 £ ra C -h ra Uh £ £ ° TJ OJ rd ra Oh ° ° C OJ 00 OJ 00 ed * d •S -a .a jg P o CJ •Ut CJ o . s - / 'r? O CN CN CN ra 'Of CJ 00 « E OL c rt Oh rt •it 'Sf 'Of S3 00 Uh O HH CJ QJ QJ X> ■o rt rt QJ sn CJ d CJ CJ r* TJ "FT t-l QJ CO ed sn en 93 CJ QJ OJ I n a co CO Oh CO CN o tt) CJ 00 ' n OJ .a 00 fc S3 O- 00 ro tt) tn O TJ C N U E M N BR S TH A E TL E BE E AU (N A R ED E A B L( A N D C ,O D E ) O T E N R B P UJ U o. rt Of f £ QJ oo T J C ed £ « X J CJ ed 93 ed i n CN 00 O d o S Uh a 93 TJ O CJ CfH Uh G rt U O c o c In OJ TJ QJ In rt 2 • d OJ XJ Uh O I n rt .a I n o rt T J CN II "Pi f c a O CO TJ G tt) Oi >. oo T J OO Uh Oh G In d CJ CJ rt .-. co it >> ttl o *zi Ui QJ TJ CO Uh 0U u QJ I n w rt >> i t Uh f CO O o ed QJ o c CJ CJ O OJ en O rt I n Uh I n OJ TJ ed co flc )o CJ d ed CJ Oh t t OJ S3 O CN 'Sh ed ^ 2 " I I S3 O CJ Oh fcfc £ O Oi o rt rt ui Q < 00 o Uh Oh z HH ttJ Q O CJ O i * o g rt °5 ww Q fc 3 TJ H **£ §1 tt) rt HH u CQ CQ tt. Q OT CO CJ CJ ttl ttl 60497800 F 0s^\ f-H tt. B-77 /•"SSI OQ TJ QJ d CO •4 E s z 60 2 H •d Uh N CU •a Tz* £ Of fc Oh Of TJ O Oi o o ou tt, E o o CJ Z u T d 2O fi Q«J "'& o 5 8 §• TJ QJ O V y a T t ■»-• er c o .fi oj CJ r t O G c o + 3 c o co /Jl«l\ ed OJ rzi g Ut O QJ 3 OJ fc fi Oi 93 Uh ttl Uh Of QJ CO HH CO •< T3 z■ O X O ho co OJ 00 rt co Ui z<-> S ed Uh 00 •>. "ra rd '0, r t QJ O X tt, ttl 'o, 00 it £ o .3 ■WQ5J d p Oh rt O CJ XJ 3 CO C J HH H CO £ g £ QJ fc £ _> OT rt 00 CJ ttl fc 00 fc — fi fi 2 5 to 22 •h a rt s ft .3 w a QJ T3 fi S XJ Uh * O Oh t-s o o CJ HH CO ro ^ n 00 Uh QJ Uh Uh CO OJ 00 o a fio o ~ « u . .2 2 2 & it fc g'.a £ < Oh .-a •-. XJ .3 '+-> ed QJ Of Oh o >> O d 0 0. 'Of o h CJ E O rt Uh O u < H *■' * H ri QJ 3 C* 93 H-I h3 QJ 1 QJ TJ E OJ t t ed t t n n OJ CJ £ ed Uh 00 CO CfH Of OJ Xh OJ rt QJ t t O HH CO CU HH CO 4J rt rt §< X> Oi CO So OT Ch H ?~ cI QJ _C Uh „,. G -*-* CO 2+ j *°d •3 O "hh HH ra !*§ SE °.G .art E Xed) ■H > Uh d ed tt, u t Uh c S3 J3 tn- t G ra QJ >, r t w « CO £ Uh G QJ G OJ -QJ O CN OJ II t t a TJ qj oj * O* ° iJ Oh < £ I n 93 o ra •■f if U G o, &22 CQ 1rt ■s HH -1 rt °n G 0J CfH QJ C fl C U is rr tt r ?G C CmJ s a Oh TO Oh Uh. rt O rt T) S x 00 5? O Q ° "fi H •fi #-? .3^ G O o CJ CO »-H Uh * fi H O cj &> Q Z S ^ rt G it o oj *d "^ .-2 c w la 93 H o CJ t3 3 o O Uh ra qj Of Uh O QJ E OJ rt CO « /!^u 1—I Uh I Ch "cu g o£ -18 TJ TJ < rt ui E-h Uh HH < co 00 Q ttl ttl oi O Z zo Q Z tt) s 2 0 0 rt cu ttl Q O CJ H-l rt H-) 00 H H z B-78 Oh d uj •—j CQ o Uh Oi ttl > zo > H tt. o fc o Oi o sw s CO O T ui fc oi fc D tt, I a fc < S tt. uj oi 3 ui H-l U t Ut . #^^\ rt o uu Q tti t-H rt ^ u t O tn a o ttJ ttl S O tu CJ *S 8X CJ ttl 60497800 H J^^^k COMPILER OUTPUT LISTING MESSAGES The error messages can appear in the body of the compilation listing in optimizing mode only. If present, they are located (listed in table B-4) after the source program and standard error summary listings. They may appear before, during or after the reference map and object code listings, depending on the exact error condition. The message format is different from that of the standard error summary; each message is usually left-justified on the output listing page, and may be preceded by several blank lines or a page eject. An example of dead code, which would produce the last diagnostic in table B-4 is as follows: A=2. GO TO 30 C T H E N E X T S TAT E M E N T C A N N O T B E E X E C U T E D . A=A+1. 30 STOP END A more subtle example is: A=2. ASSIGN 40 TO J ASSIGN 50 TO J ASSIGN 60 TO J GO TO J. (40,50) C T H E N E X T S TAT E M E N T C A N N O T B E E X E C U T E D , B E C A U S E C ITS LABEL DOES NOT APPEAR IN THE GO-TO TRANSFER C L I S T. 60 A=A+1. 40 STOP 50 STOP END EXECUTION DIAGNOSTICS Execution diagnostics are the same whether the source program was compiled in optimizing mode or time sharing mode. Execution diagnostics are printed on the source listing in the following format: ERROR NUMBER x DETECTED BY routine AT ADDRESS y or ERROR NUMBER x DETECTED BY routine followed by CALLED FROM routine AT ADDRESS z or CALLED FROM routine AT LINE d y and z are octal addresses, x is a decimal error number, and d is a decimal line number as printed on the source listing. j0^\ 60497800 D B-79 O, Oh CQ 6 o z° TJ $ ^Oi QJfi O ttf OJ T l OJ o x X ttl t t f 2 •". fi Oi 93 G z Z u 2 TJ rt H oi ttl U O x ttf ttl O. Oh 6 o S o U z •< ■a o. Oh so 2H TJ OJ rt o tt. Oi 93 O x tt. ttl 6 o z (J o CJ TJ OJ 2 ■n H TJ OJ T» G G r t QJ o X tt. ttl OJ X ttl ° G x+ 3i O fi 00 -r* 00 s l ^ rt G Of tn OJ O CJ Uh OJ 0 0 QJ UH Uh .O OJ Uh OJ tj1 vt aj oo C OJ HH rt rt —H _H P S « a O rt eo GJ eu > G ed 3 CfH •fi ♦H.a "H oj *d 00 On G 53 G QJ JJ tt £ -QJ . Oh a s 8 8 C/5 G O *H Uh Oh CO "h 8 o 00 II OJ #!> o rt 2 22 « Q £ "tj H O OJ fi "S QJ 2 >» tt. g rt, CJ G O tt 93 TJ T l Z Q 00 J rt tn 2 5 £ 3 8 .C 5m 2 U h O « J-H o CJ .22, o - ^O **u •fi 00 3 W XO O UH Tt d ™ OJ .S 'sn rt < H fc $t O at >* CQ 00 H-l t t f r t ttl C) iva c#o < - gS < CJ B-80 rt 6 X o .a s OJ 6 0 5 o HH o W V O O at oi d oo 8 rt ° > >* Uh X O h< 2 rt Oh n H H ioit: o 2 00 fi a rt 2 QJ o G QJ s S00 rg, QJ OJ XI 00 93 £ o «2 S o h3 o Q oo rT- )i QJ «« o OJ oj O "OfiJ M^ t § .§> o Uh oo UH qj Ch co rt rt Oh fc g .52 Oh G oo sd d C G°g Oh O o -fi ca o *d I £ S -IH O. tjT J sO v" j rt CJ hh d CJ QJ X X. OJ oo CO Oh oj E, OJ QJ G .2 'tt Q < tt) Q rt CO cj h2 3 CO CU QJ QJ •5 x> rt HH 3 S3 Ui QJ X ttl QJ -fi 2 CO fc V, sn 93 >, OJ QJ CJ S3 X O T) CJ OJ QJ Cm S r t -fi qj O Sb o o ^2 a qj Oh oo o 8 Z < 15 QJ X- O O ' Q3J rt TJ -m 'S cj rt TJ Uh QJ X) 6 a o >, o" H o QJ XI O. OJ S T ) fl l CJ H cj . .2 ° C|H QJ TJ Q O s 6 •H ,V U f s ttJ fc o >■* rt z U t H G G tti u l H Ut H o ttl S g m _1 S ttl rt tt. ttl tn C/i ttl U Z CJ tti rt tti tt. c^ T oi o 3 5 o Oh C/3 tti oi < z z HH ttl Q tti O 0oo0 c j ttl Q o Ut Q fc tti ttl CQ at a> CQ t t f CN # # oo it ■£* Xf qj ro o £ iQJ >Xi> 13 G tti -9 Uh C-J U QJ XJ > o o H •< HH UI H •3 O. -d fi d ^ G fi _• _. oj O " s oo o oj „ Z o > tti CfH .22 G tj 2 •!:-1 qj rt +-> nd £ ui o 3 2 « rt OJ H ■I fi. d G S £.-,;§ t* £ £ stt. OJ fJ QJ o, c#o d U rt G oj c QJ OJ G QJ X ) ••«-* XJ XJ t t HH Oh X I Oh ed Uh 93 QJ XJ XJ Uh Of XJ 00 rO —Z! y rt .O oo 0zz1 0 O • -, oo Uh HH HH GO 93 Uh sd £> t OOdJ. • d ed oj t5 3 CQ H H-l fi S S .a cj » S o " fi SS CN < < — *- h— TJ CO CQ < < cOJ C t j CJ .V cLL < II II tti .o 'co -Hn/ V H < o H o .9 d < II d 00 oo "I 00 PQ '> H— £ 2 •. QJ G tn TJ C ed Uh OJ Oh C/I CJ fv_# Z o < - H z o c— rt CJ az c sp In H In QJ rt 1 r— OJ y -° * 1 CO 00 QJ O ° -1— -1— G QJ Is fH H— -1— •i— -i— H— -5— •I— -r— H— H— H— In o T J QJ G o j OJ ed QJ TJ CO d d 3 ^> >, S3 Uh O In T» QJ Uf OJ c ,j*388\ OJ 00 >. ed >. In d m c2 X Ui TJ HH — !• O 93 N o CO CU CJ S3 rt / ^ ^ k < 00 H OJ TJ N i ^d^ OJ 00 oo oo OJ s °O fc 3 fc 2 o w CJ P hJ ~ > rt s<- 9 oi w S rt g ni a CO CO rt 0 fc fc 3 ~ ttl ttJ u~t f-H ft > z S f c fc *r zttl zttl zttl zttl § § !§ § BD§H §B m fc ° SSfcS Sz-SS zw zuj ztti f-1 fc fc f-1' Sss s 11 q rt q rt q rt < < < o o o o rt rt rt rt < < < < O O O O rt rt rt rt < < < < oi ttl zttJ zttl PU UJ Q ttJ o o o rt rt oi <: < d ttl i-t I—< z tt! ttl Q ttl hjr ttJ g g ttl ttl t t l oi & fc Q > 2 B B j§ o o o oi oi r t < < <; o K fc -HH « 5 ^fc H 5 S tt. C oo o s fc 2 tt. Q ttl ttl ttl io oIso oi oi oi < < < «, u t -4 >> rt d o o Uh « ' U G Ch OJ TJ c2 ^oj Hh d -3 oCO ^ fc H Z Z Z OJ « £ oo 5 •S „ -d £ > Sss G d ■< ttn ttJ E-H O fi; tt. i-H W ttl H UJ ttl H g(N ojro G O OJ 9> cd O QJ -° -G c o z - H CN ro ■d- i n MD r- oo -I— .j^Ssv oo S? .d 00 >s^> QJ O /t^&\ T—, 00 nIfin w sa •— •h/H*»^k B-82 60497800 D CQ oo O u II co O CJ oo O U CJ '00 "> z ttl c j Oi tn a ooo cj d E QJ N TJ C w In QJ O _rt jifpSN >. 0 ^ S 3 —r•> CO 00 •d OJ r t OJ > TJ TJ rt TJ 3 _r co O r l ttl ul tti R A G L ER A G L E F O A RF O A R 9° ttJ 2 2 2 BB o o es uj fc c z H X rC Oi E N IA E O 0TT O 0TT T T N E F I E R Z E R Z N IFI N IDl •d 0J Cfj >. z tti 5 ss n< 0, a, E (A LM IA (G T E N IA E T N E F I R CO CO N IFI N IDl PQ OQ < < H ttJ ui 5 fc rt H ttl fc CO 9 < RE(A MI(AI ttJ t*>H U M N T E U M N T E o o oi oi N N T IF E IAlN D T IE N IF < < rt < o rt w N zttl s5 £ oi o fc 9 rt < < ttl H ttl 5 f-H a z fc tt. Q zu t zu t uj w rtO q r t 0o* fc S -5 fcfcz ^ 5; h tt. a fc ^ a fc S fc Q gzz fc zw fcw z ^", z w lis 0 0 0 rt rt rt < < < EZ ttl s •rt cf" E-h < uZ rt CO 00 CQ 03 Z < < CT UOJ OJ H ttJ Z UJ s O Oi < ttJ E-h ttl H tt. UJ Q Z 3 0 0 I n rt T J r— QJ 00 •d CfH .~ 0J b d 00 ed TJ OJ d 0t Uh cS n n O QJ G ■ CJ rt OJ ^- TJ C d d >*PN rt d I ooi< Ui HH1 H < Z ttJ co ? " 0) CO o o O Oi tti Q — • hJ TJ 60497800 F QJ —T\ CJ 0J /jp^V > _. S3 3 < ^ OJ N rt CJ CJ tti fc O R E E G ' EN A [T U M E n z -_h q ttl ttl, O o oi < CJ u . - O 13 , 0 ^ T J rt ■d S 3 _• en TJ QJ —!O QJ S X rt tn r QJ tJrs 2 C Q TJ — /\ — < > X •d /—\ — , >, Q a G O QJ CN oo HH o H E-h d o HH z < X Q Q — *- +- < H <: O O -j— H— — •• u t Q H— CJ < QJ G~ TJ d Q E- Uh QJ Z o B Oh O u OJ CJ H ed CO HH d CO Cm O Z o < o c-— •— j s-— -t— ~ " oo .S TJ t +- -i— H— -t— •J— -S— Uh o G op T ) OJ 00 eOgJ TJ d d > t TJ TJ TJ rt r*~l S3 ed T J QJ t t > X ) Uh OJ Uh O OJ 00 £ O Uh >. M N ed UH Oi ttl =5 , 'tt si 00 • - H o OJ ON si U CN >. •rtO tn 93 .s 2cn QJC**j cQJ o OO QJ S3 c n OJ t t G at rt ft hJ Q t a Q a 00 Eo ! Q Q TJ UJ Q c it2 >» S3 CJ rt o QJ It SI 93 3 " 0 "0 - c ~ .G -3 *d ■d "> rt c y TJ C 3 /sps\ S tt, Eoo 3 < Oi D CJ H CQ ttl o rt fc ttJ 3 °§ ^g o rt O O i-t H ttl W 5? ^: ^^ z VhO uj E-h Z -tt) Q Z E-h Z UJ ttl ttl hh 5 z fc to ~ w /S^N O rt £° O O O rt rt rt < < < o\ f-H z z H ttl wz S ttl s fc 9 fc rt s J ort < i-t O ui , 2 > >o >O O OJ 00 N UJ hJ J3 2 >■ (U _ oi co O hS X> rt TJ o c 00 "" • 00 > c '■B 3 > d T J cO o E 3 00 T> -S OJ HH HH D 2 d c d •d oo c hG CO CN 60497800 D CN tn CN (N 00 CN CN o « « cj B-85 ,^8!\ > CQ /•~s z #—\ TJ 00 II QJ d CO co CO 0 0 #> H H o i—» o O o CJ ttl H ttl H 00 00 CO Z — •- H-- H— •I— < o ed CJ H H TJ G OJ T ) C f H C f H OJ -i— Uh G O ■d4iC O '> Cu HH d E c *QJ CO * Q J 00 TJ C Q H Z O O 00 CJ E-h CO OJ 00 G rt Uh QJ C J C eo CJ id op CO O Z O •G t • H H H OJ OJ TJ •i— '> OJ -1— •i— TJ — *• -J— '> nd "oj CO CO ,_ed, Uh tot HH G C 93 U , O Q J oo " r H 93 .S. OJ •2 "^ S) E ,vr crt a vo 5 1 -G A, tt cj d •t tt tt O G § 2 S3§"S •e —& E .vr c a vo « £ i lg Z —h CJ H CO CJ ttl X ttl -HI U f O TJ OJ G CJ QJ TJ c tti rt w£ o rt UJ "? ES: ou. 1 gsa CQ H-l CQ < E-h UJ QJ ^ £ fc 00 QJ 2 UJ tf 2 ttj > HH f fi O H H rt QO £22 ^ Sfc ttl hJ >• s > M W O O < O X X E-h Oi .Tl oHHw«£ G A U M N T E VN E G IT AG M U T N EG O W R E PZ E R M U T A N ER G U M \E N TR X X Oi .., " sfc R E O Z P N V E G T A IE H A T E RU O W LR F EO M N T EG T M R N U E > ttl UJ o O < O X X H Oi rT, 0HHttl«£ F O L E IFI N IDl E IDl O R Z E R Z G E NN R Z E R ZN IFI N E VU N E N F O LA T IO R E O Z TO R E O Z T N V E G T A IN N T IF E I N D IE N F I O O rA R L G IN T E F [I N T D E N [E IF sttl ttls UJ g 9rt 9rt 9 rt ttl CO CO hO O S3 tOJj " S3 rt £ d CJ c ttJ H a tti CO Z tt) CO fi f t co u t H H H H CO "dCO t n CO VO CO P- co ed en OJ /T^V H H tn H H OJ ed rt .a U t t> TJ o o Uh ^ 00 TJ OJ 6 d 00 Uh rt • d QJ .a cG .in to OJ J3 G o co OJ Uh 0% OJ 6 3 J, co d d t c c2 eo O* Uh QJ rt d Z 0 0 s• ' r t co u t OO ed CJ CO u t OJ >. ■dG u t G N OJ CJ Ih OJ M n 03 <: o H H > " TJ Uh rt uj H-l H-l 00 c2 t Ul H W LF RO A N TI O 0T O 0T A V TI T N E I SN FI O 0 TO 0 TE TN A I T N E F I O 1E R jF J• N T E G IE R O E ZT R O E ZT UJ OQ 9 3 >. -£J rt TJ >> OJ OJ R E O Z P N V E G T A IE H T O D LU W LR F EO M N T EG gNZ O R M U T N E ttl ttl ttl rt ^H St W fc o > fcp CO 0 0 rt rt uj uj rt S<*P B-86 T t TJ ed QJ #> oi >, TJ Uh z o UJ CO QJ d Q N i t S3 d 0 0 < I n OJ CJ ed ed — / -\ /Os(*>^\ > TJ JO rt TJ QJ _. 3 E , Inn Cf-f "qj CO 60 4h G oj 2 E tn c rt .o o rt o Si 3 oo ,ed( 2 >-■c G d QJ a OJ *- .r. O QJ £ 5 vo „_, Z -I « OJ j«hi •—f CO 93 N 00 « TJ tt O U i - d TJ TJ S3 I n O X) .y £ 00 QJ X In OJ c TJ d 3 rt tn >. ed 93 Uh QJ cOJ Uh oi UJ N Oh rt rt uj o a. CQ s H HH z tt, ttl Q Z £zS Ul Ul ttl O O O rt rt rt < <: < (J H H-l fc nn CO ttJ CO > CO ml < a a a a 3 tt, ttl or t •""' UM >7 HH tn J*—' H o <° q ttl tti ju Z h n ^ o > ^Oh •—' H ttj < ui H o o z § ul ttj £g u, O HH 3 *2 UJ H-l z UJ r t oi t t j ui o rt q^ fc H3 n z SS < UJ H H H < O q rt H-l UJ tt) tt. N N ttl s 9 rt fc o ° oi" ac uj ui oi K X ed CJ uj o 3 O o H T 00 OJ OJ N c0J UJ E d rt rt ■d I n c 00 *N C 00 c: QJ ■d CN •t QJ /|fWN rN ro ed si i t c QJ en 0J rt ,-i *z\ ot XJ r^ CfH rt C VO /***\ 60497800 F G TJ QJ CJ O OJ >, rt I n o Z rt > X rt ,o #> oj T t TJ G 3 CJ 1' Cfn E d Uh o < 9 5 fc ori q fe ~ fc S ■^ N) z s z TJ G 00 00 .> o o z G at - > z z rt c' C ttl za fc tti tt. Q QJ OJ 3 C tti H ti - H wf - H 7 < * H/ hH H >f -- •H H-H- * ^ t t j H N fc ttl ttl o ac H o ac H H tt) oz > > o o ttl TJ d o Z hJ Oh oi rt S hJ rt oi q w fc 5 t t j ac z P U J tx ti Ou X •n < fc sfc O o Uh ttl ttl UJ >, QJ ^ O B-87 >, X! $1 OQ Oi Oi Sn^ N O Ui Z H tt. <5 z oi tn > HH s-< o z co I SfS-giS t5t3 s g; £ fc: 2-uh Eo E <3 -* Z 'co >* m oi O S ' T t tt. OO ttl QJ C G O en II fc d QJ m •SJ3 HH O o o t : S 0u-1t1 £Eg CJ CJ QJ d QJ TJ TJ y y CJ oo G <=! •d a oj C^ O h-5 cj » 1) DL Dh c oo rt .d <-> H -f •5^ G 2*^ QJ cJOTJ ?-d E^Q X I n 0 J V H | _ . #Q n m r S UJ tt Z uj utot o o.£c2rt tn tn TJ* d rt oo' d d oj o u Nn•. H co O OJ OJ Of rd Uh 00 C J HH _rt^ 00 d TJ TJ CJ O Uh QJ O h O 00 d • Uh [ H Cto O o T t T> °ttl op oo O tJ Z o CO it to ui £ wZ QJ TJ Q OJ G H >*£ tn tn ^ CJ Uh Uh ""* ttl O O TJ a SS hh » "5! HH <5 co tt. I CQ o ^ZfcrtP UJ u l OQ QJ s ui 5S § g°8o« HQWPS WO>< ° O O d+3 Uh d St* . CO ed x t t . N Z e a tt. ° X SO Zu "•-hCN .2 co^ Uh X 2 g h 22C d UQJ S 3 ^ G cu X. CU h E g HH O o jn O $ttlx d s rt ttJ q rtp^E fcfcttJSZ g ttl •S .S ed -m T>" QJ t t ed ttl o co +■> t-> S3 d oo g" o t t CJ n "* en < < u. tt. < < ft Ut QJ E d ul CO U t U t o o UH X . fS 8 o G OJ sd zttl 0 0 u7 ed H Uh o o Uh OJ Uh QJ CN CO SO E TJ OJ t OJ rt TJ oo On •-r f-H in CN «n /*^s QJ t t (Tl UH OJ OJ oo _ :=-e> ! d QJ Uh ed sn T t >> QJCO G i o •n. rt o QJ /^Bj\ X - d .S QJ _J T J QJ 0 0 « r o r*s 0 0 a .1 G X Z g " 9) • dd ta o QJ Uh CJ u. TJ rt * d >> C d Q 0 0 ed T t G 3 o Uh QJ N t t o tt. o z >, TJ TJ TJ •8 cofc CO d Zw H.-3S oacH55rt ZO>* rt Ul'Si H co •HH CJ OJ HH CJ ed 00 OJ t t Uh QJ rt QJ Uh 0 0 oo « > CO /SS*i B-88 60497800 H oa II z 0$£\ II O H H ou t ttj S3 II H H b B D CQ OQ CQ Uh tt. OQ O Q :* CO Uh oi O tt. H ttJ II o o Of "d oo hh C Q u 'j* -d B £ oj rt a oo TJ TJ 2 2 3 CfH 0S\ vO li o o tn cj ut H co O Z co o < z o B £ Tt at u, (2. E 9 H TJ <. QJ TO -H e Uh C O d ,g is TJ •15 'J? «n i CQ UJ H-l a Ul 3 a tt. H H tt. 9 rt o 8/^k> 60497800 F 'S u y eo ul CO CO . Tt «> *g 1 « qj Jh a rZ > U, hh O G oj C 2 (H H C>O C Q~> H 3 25 s *c- o Oo Jo cc a C eo ed rt h3 *d—■• ■2™ O oj if -° 83 a |2 fe "^ fc ~ o •i-H CO tj rt ttl QJ 2 rt a irj Uh • Of z O, co r Jh7 £ -O en* t tt 93 ■f - * G 'S o £ o "2 G «cj '5 o S S£ 5b rt 8 o ed Oh QJ tt. Oh TJ _) O w rrt W> •d O ^ta j=: Df ta j? rt 8 £ HH H CO So Uh «» S3 t3 5 33 .2 2 S •O sf lH£sn«s fUdh g TGj r t J P .2 O f o cH Hj S c H CO .c a rQ s£ S * d rt Uh G « £• d qoj TJ rt 2 £ Tt ta fccJL S o hh »rt hh ta o, y E o «> J. ■HJ.H f • i 5 t> fc o ?< o uj fCO c UJ rt rt ttl Uh Uh Uh OQ OQ 3* fc id tt. tt) r < d G QJ QJ TJ T J i> > ¥ V CfH C|H QJ VM ul T) QJ CO 00 oE c OJ •d ta QJ 00 2- QJ HH oo gq UL S /-, RJ g O § co" I UH « * ^ u- ^ QJ Of_l «« S QJ l—1 Uh O -2*. fyJ , r-t -Tj O Oh Oh oo S o it it O, O Uh Oh Oh ed G G QJ QJ QJ£ •■, Tt TJ, '? "> ^^ (H u CO o HH O CJ ui rt Q ttl Q ttl ttl X ttl ui N D C H OJ t•rt a rt d ,<^K QJ ° Oh hh 0/5 G ■■ 1 cfc Q rt fc o ttl tt. Uh UJ t-i ed . >S5\ & In S nn *--' o _i X +H H-) U t u t s^tys. ti *d Q HH « O CJ' QJ < UH f G op G 5 o /^^\ "O "J U J u ttJ -d ul tn cq ° tt, * # 2 Ok CJ w /^SK OJ X E ~ j*^-\ rt < < •O oo VO t t f t t f VO tt. Ut Ut CN tt. 2 -^ E .. •d OJ QJ X oo TS 3 #^S*V Ut In. ut rzi S&$\ B-90 60497800 D /*$^\ >. CQ II H II UJ Q O o o z O u Z ttJ < z II ii CQ OU oa Ou Z z c c o 5j hJ 3 o. _c a, c X tu .= Q3 *T ^ CJ O. G rt -:=r t E3 co U H co d O Z < HH 15 Tt u, QJ X 00 Of O CJ *h 0 £ £ •£ Of TJ " >, > OJ <* £ QJ rt QJ C CO rt OJ qj ed OJ C CO rt CO . "Xf OJ ^ _? u, T Q.H u. CO tt. o c fc ^ hh QJ cu ri 3 ro « « S3 o, ri c O 'E oo E5 rt tt - it dO J.E fc m J_J £ P. O f Q 28 Uh rt Ul > o < H < UJ Ul rA U. >< CQ UJ H-l tt) S < Z ttJ uA tt, < H < a >* oi < t t f Z OQ O O ttl Q >* oi oi ttl z rt < tti CQ ac o 3 tn Q o . ,1 ttl ttl 5 Uh CJ Oi ttl ttl ttl S O O UJ ul I*-** Uh Ou O hJ UJ X tt) U u t H ttl Ul !# U t U t Ut 00 00 ON Q Q O O z z oi >H H Q tt) Q O 0 X x X X u-i fl o Uh ttl O z 3 < oi rt s W ^ >H x x X fc ^ §3 CO OU Uh OU tt. < o Z 60497800 D Ut Ut OV ro oo oo Ut Ut Ut CN ON B-91 >. OQ II co I CO II CO ii sZ Sz 5 o Ut 'T* z o z ou o o z a°fc sO o Uh £ 2 > E OJ TJ Uh OJ QJ QJ eO «rH CfH 33 "Q q jJ co £e d "> X .*H Ut td OJ tn U t "qj oo O y oo £ £ W .S -O £ 5 . o hJ q rt uj z o HH s H < N HH z «, 9 oi o Uh . *0J CO QJ ~J Uh Uh CfH "oj CO > CfH tt Ui -j *E fOcU| d oi O 0 r r. T J *QJ tn yU t "qj co CO Ul o t-fc O rt rt OQ TJ t j < oi a > .2 QJ t j _J Uh OQ TJ 3 ttl hJ HH ttl '> y CJ H O s £ 7~* oo H eo Oi •& O QJ X to t t oo OJ rt QJ \n O H 2 2 .s ^ TJ © ■S TJ co CJ ut < z SO nH * ft zo CJ rt Uh CfH £'> y S rt CQ E oj rt rd •d II CO Z tt. < rt CO QJ HH ii CO o iJ ttl X H UJ X ttl u t tn tn ttl ttl ttl rt uj > ut < 9 uj z ac ttl a c H P Ia HH Oi Ul s H-l o tti UJ h u Jt Uh tt) ui Ut Ut tt, Ut CN CO •. ttl Q OQ T t OJ X X X X co CO G OJ c .o •d «, U h < H OJ C O "qj CO 'O?J II - ac rt - o CO ttJ Q oi ttJ oo CO t n E E a5 Si* c t t E OJ O ttl Ul b o >| OJ •d "> OJ I* £-"> f-H 2 o O Z G OJ o X ft iffc II d co oo v) UJ g " o" a QJ sn ^j 5> co X > QJ "« OJ G CO e5 qj "rt OJ G co c5 O o CO s II S i UJ -I— oi t HH CJ QJ Uh d .2 'eo '> Z ' tn TJ ac t-ac ttl -»- — •- -i— hh QJ /-* ft «" o Co J in d *n t OJ oj "rt oj r00 rt d G --t CJ E . „ o ed Uh rS UH x S 2 0 &-S O TJ G rt Uh OJ HH j$PN Q H Z O tS ■fjf^v tn V H O z G QJ CJ G rt o ta G op t t 3E ho ,et()r GE,s)lcalS :M A B T ) d. Uh Uh I n QJ TJ ' OJ ? >»t t "qj co QJ O QJ CO o o Uh e S cM n e u q(S O R ,TM S O R S M B T ,S O ,R P TM S rOM R E (M E R O R /T S M E N DioU ow oe fto CO w C CO CO "C rt CU QJ Uh ed it t n Ih ed D C it 73 oo OJ rtO TJ Uh ed ■H J 2 in Oh OJ *QJ CO ttl ci «n 1 HH O Q < H CO H-l OJ 00 rt CO tt, Oi O rt rt § 2 oi X rt < u ttl Z o r** Ul O Q T S W H A O T S 0 L P E U N I N E A T C E JM O D .E rt H-l H H N T E N IF IO T O "N T R E ,M S LL A o 5 ttl s s CO CJ UJ tti ttJ U G E O N F A R C N E R C T R A H C O D ] T z o O rn o h3 D 5 q rt o rt < < T N E N TIF I N T N E N D IE F I O T N G R E T AL Ul UJ ttl N T E N IF I N T N E N D IE F I O T N G R E T AL tt) uj tti BBB S SI ooo q qq 0i Oi 0i < < < oi oi oi < < < tt) p| S 2 x rt OJ TJ o C Qj « £ G 3 ^ ^G QJ 72 f> O O H Q s Xx ff C^ C C O OU ed "« Uh QJ E d < CJ G o tax tt v" C | QJ 2 HH Q" HJ r<~ 93 p tt G H Pu O CJ Ot Jt fOt E co oo > H H-) •3 C O UJ tt) X OJ 13 H ^ C O o Oi Oi 8 • r A Lin- • o" OJ T3 G d o > oi O co $ Oi Ul Oi Ul tn u t a tti CO QJ tt, rt 00 c" sp .2 tt .S tn 91 ^ N ,>» UL, u t sa V 2 £ =cf uj' o Z ttl D "^ QJ CfH L A C i B d an ocesnC Uh •S -*H G i Uh S C Q ■fi *■* « •2 2 T J '> • 3 Z o 3 •rH— T J vi O < O. O g > .o T J co O E a 00 •d .s QJ 2 1 n H 00 X CJ — 11 Jf0f^\ r 60497800 E B-93 S8 1 °° >_• Uh rt ac z <: UJ _ o S O <" N Tj' G ed .Uh CO Of O « 00 OJ CJ co CJ H co TZl Uh o G 00 T ) d O Z « G d Uh £ z o n n CJ OJ X CJ cj tj" QJ t t rt ttJ d CJ ed CJ CQ a " CQ < UJ H H Uh z tt) o rt H o o H H z uj H HH tt. ttl fc 8 h9 ui s rt h a ^ s u, fc r-t W --, fc z zo g8 HH HH M H tt) ttl uj uj ttl ttl ttl ttl ttl tt) H z z ttl H z HH ttl HH Uh I—1 H Z Z Z ttl ttl ttl So ttl Ut u t H HH E ttf ttl ttn tt) ttl H z t ttl 9 oi H-l ttl ttl H H § o H O CO H < < < q rt o rt o rt < < < < qoi oi o oi o < < < O O O rt rt rt < < < ttl tt) ttl ttl E d 00 O O O Oi oi Oi 9 rt < < < < r9t < 9oi 9oi 9 oi < < < *d QJ <.ti a * QJ tt CN . 2 X ^ •8 QJ G X t^s^S w EM 3 £ « C o *a Uh OJ /*5*S*)l QJ TJ N C c ~ QJ X O -^^\ 00 £ .g 3 TJ t t G OJ ttJ <**) >>£« rt 'S oj rt cS (N >^ X I h T J G d o G rt rt J3 00 0J o Z > 13 3 c' d rt 9 rt tt -en TJ t OJ Uh 9 9 Oi 9 oi oi /^^\ g" oo o c G CfH ttl ttl UJ ^S^K x X OJ TJ 3 rt O oo £« ■^^% T. . S OJ /ri^L 2CN QJCO cQ J o Tt OO f t 2 2 /S^gs t t G rt CJ Uf QJ «> s ■t n 0 0 G /tirt&sS ca 52 TJ ed £ it CN /C-^Sv B-94 60497800 D y*jR"*\ CQ ttl CO a tti ttl oo O O CO s H CO Uh OJ 00 oo e 00 d QJ TJ o CJ OJ d G >* ta nH OJ ■n U 00 at r-t H 00 O Z o a* o QJ CJ ^j d QJ o S £ at 'S op OO u. z o r** fc Uh £V l-H* ^ S cr CO eo c j QJ ttl QJ dO h se *d CO O id > cj eO £ £ H-. QJ ttl G §s Hf 3 lo '£ OJ jj to H O. O d • _ T ,J h U h O UJ £ 93 tr* Sc j Er t B G *i QJ O f g TJ oo Of -G QJ HH O* cu « UJ =- O t^ cr CO rt "S •» TJ G s~r qjh ->, U * G QJ G QJ G ft CT1 f t Oc Jo O QJ T J a l vO ■*-• h-1 G d QJ X QJ 4H o ed 3 Uh <: a ttl fc H O H ni fc H O b- b-< H Z Z Z ttl ttl ttl fc fc H Z Z Z ttl ttl ttl bt b, i- H zttl ttl z ttl z ttl z rt rt rt h§ B B o o o rt rt rt 1B B o o o iffPN < < < •< < < z H Uh I n •P B BBB o o o o TJ OJ < < < < OJ oi oi oi oi > CJ Z ui O a ui CO rA Z 60497800 F ro G x ta E «* ■d G Hd Oi Z HH (N ■<*CO vo > qj 00 O tti CO -1 o o .5 x TJ rt •n Z H £ G Uh Q uj -°co •< ■>2 QJ ~* > HH rt UJ CO QJ Uh ON CN Q J- E «r •t - d-3f H tt) rt rt T> OJ d ta OJ TJ G d O d QJ G in N N IT F E I N D IE T N F I O G R T AL O D TM L U •X" O ttl N N T IF E I N D IE N F IO R T AL o G 1 ttJ W £-. N N T IF E I N IDE N FI O T R A L - ~ed "S 2 O CQ -^ o s> •-< cj 8.s TJ 3 Ut In 00 QJ 3 « ttj CQ rt QJ ta rt § s. _f 91 Sh QJ Uh j; fi n c 5f? 2 E C/) o X > ^ ^3 x rj Xt 93 TJ 00 „ 'it >» § io §•a CQ fc ta O 00 o tn «j S 3 "5 °I CO nn « C >, •> X d O O - d 3 oo QJ ta *•ti c .3 CJ QJ QJ T» f tn •h c Q CO QJ O CU CO QJ O o •tr o •56-3 O OJ G OJ UJ TJ Sn.' 3 •.§ •h ti oj qj rt ft « G £ 93 00 Uh OJ " r^i Qe Jo _. Uh G 0 0 rt O co G QJ tt. X VO VO r- r— u VO rt r-t ° * Sr> > Oqj . OJ X G £*? 3 Oi oi cu tt) rt O -jH OJ ttl £ S ? u t oj § TK ° id X CQ O o. i *-•O CO a II o 93 d at O V) to u o fi t c.o CO CO QJ V-' QJ "eO "rt la G B *d G O h O f a u- OJ •" 62 I* —1 >» CJ rt qj Oi ed CJ rt CJ rt X I E G Uh o QJ OJ 71 > .s ed OJ H ■f ed OJ d o Uh CJ CJ d rt QJ ■H 'f tt nt 6 £ TJ *a .s w 2 S cu -a TJ QJ CJ 00 QJ Uh OJ TJ O CO rt it 3 O. CO rt X o Uh OJ OJ rt is TJ ed X h!s QJ Oh O CJ QJ p ■i t eo Uh OJ OJ Of O tn OJ eo 7030 QJ B < E 2 § fc >■ st CO QJ tS OJ OJ si ed CJ OJ f t .s •a rt OJ 7030 t t Uh ed OJ G Gh 93 o < Uh t t d o o O Uh Of co QJ 00 CO eO X O OJ CO Uh -d rt ri G t3 OJ QJ eo t t On 2 'c o. ^ T•=• J Ih *« • o >, Ih Uh Uh rt OJ Oh O OJ ■ 93E G o P T3 ed TJ OJ C Co O _ .^ o ,C dh . qC Jj OJ .P ,i TJ ■U Uh .2 ob tS -S QJ Of eo rt 6 .§ rt X. OJ ^ /**^\ .S nd —t o tn E -S M rt .° -2 *a 'rj X a -hj *d QJ B si H Ut o '-* £ 93 eO o. o. rt O- tn E ed X TJ In § rt t t B CO r* J '£■ft CO O .2 TJ OJ t t B-96 TJ TJ rt ed tn o -oW QJ OJ c o fi£ T3 T t zH PU QJ ttl J>H o X •f-i H HH oi Ul X Jh w ■ tt uj 3 OJ G G II VO 1 TJ QJ d ta o O ttl ttl TJ X O ' t t Q . LU CfH Uh < H d E QJ • ikn> s i fOcS > o S OJ Of CQ fc OJ O -HJ G ta 4) X tn HH uh 52 Uh OJ >°° ■8 " S i d 3 ft 3 •-* S O QJ CfH Uf t•—i ti t-> £ S QJ s I O ^fc 2 X £ ■ft OJ ••H s? 07 93 tti QJ QJ •tl X O S w .a o LL, T J is *s *G HH i 6 tj 6 /*^V J >» 4.tn •id 93Q\ 8{ N TJ 'S 8 *QHJ N TJ rti eo Uh •* .2 . QJ ttl ut CO OJ rt G > tt) > H 2 n H ca co d » rt 'in rt Q G o/ OU ~ X .2 4 3<3 d > .Is • d 1? > e© n £ x rt 00 O oo £ » B o. g 2 qj 5 £ Uh rt Uh o z o 8 g fc o S ta z a . TJ QJ O f O f ed CO S G * * w" 55 O .S d tj 15 £ C _. d OO OJ ti o co d G CO X -'-, rt S S3 3 QJ i~> •* o ed. O h OJ ■f O TJ rt q j * xh c o "£ d ?? C J fc o co O to 'C QJ TJ QJ OJ HH X W « Q>J QJ O TJ QJ Uh TJ "S x td rt Uh CO QJ OJ oo CJ QJ r<1> HH HH CQ ttl rt S ttl Q O rt o S tt) fc Z tt! CO CO tti Q O Ui oi u Q CQ Q < CO cu < rt o rt rt uj cu Q CQ .S3 .S 60497800 E o rt Uh H H QJ Oh /$ffi&\ O O E O■ E E «a ca rt co oo OJ 00 E CO QJ E CO c o QJ £ QJ a>> rt CJ OJ rt co « E Uh Uh cS c2 OJ QJ rt ta rt TJ TJ Uh TJ Uh o Uh O Uh I n Uh o O o t t ed Uh OJ Oh eo In OJ Oh O O 3c o 3c o 3 o o HH tn o rt u- O Uh Nn.f i — OJ Oh CO QJ < o rt Uh QJ Of OJ 00 G O "hh CJ I n ed I n OJ Oh o d O CJ C CJ CO d > tt) ut rt Uh U, t t t t o Oh ed Uh OJ Of Ul Oi O Ui S VO I >> sn rt ^J 0 0 ■f rt rt 00 E OJ t t t t I n co G O OJ CO >. CO 00 C J '5 OJ X Of In Uh O i I n Uh QJ t sn •Ui CO C J t n Uh o CfH o o t t tn CfH U t CO E ed Uh QJ t t en 00 O co Uh . t t fZ> en 3 tt CO *d £ % Oi ed X OJ OJ Uh OQ rt QJ O ° ft o G rt CJ ta CO CQ TJ OJ • f t ed £ S Uh OJ t t d a QJ QJ X 3 co 0$&\ TJ QJ HH ed G E I n OJ t t G CO rt X X X O 91 X H T J OJ OJ d X t t G d Uh OJ Uh TJ QJ TJ QJ QJ CJ X c o ed X Uh t t t t OJ O eo Uh QJ Of •r-t o OJ QJ X OJ Ui rt 1 Of •a QJ Oh HH G t OJ t tn •a G I n I n QJ X H OJ CO ed QJ > > en CO OJ CJ t >> S3 T J QJ Xc o •si X T J OJ T J OJ OJ CJ d rt X co t t CT - oi rA CJ ttl CJ Oi UJ tt) fc fc o HH- CO UJ O Uh Uh QJ QJ Uh rt 5 *" a. H-l hJ CO H H H-l pj H H X O Uh CU Q Uh CJ OJ Jf? H ^ QJ « X ■* - ^ «2 QJ Hd « tn ft. * G* O X .— 3 8 00 CO E 6 In ^j C/3 Uh > G 2 1? O Oh R C E B Y m cooplt B f CQ G ttJ § Q t. CJ "^ oj to j fl O HH £ G* HH QJ TJ >. « E rt it co ed nd Qj' o rt QJ Oh O CJ *a ed QJ rt OO QJ CJ r d O G rt ed t n QJ CJ enre a cflr, o nia u tn scb r G S OJ t t t t U t 93 Uh eo E E rt eO I n feb 00 o QJ ■t t Oh OJ Uh HH TJ sU fiedinsa e trxt en a tfisn e o xin- O £ oi tt) n J QJ <; oi UJ uj OJ • O o Uh >* Q ttl o eo rt tt) Q tt) §, s 00 .2 ' t t S3 Q E E ccj *co CO QJ CQ U l 00 d X 93 G I n A eotiw op iae trea b lL C lM a vi. o o £ a m e m o g rP a d lortpn ta cl op ce rso m sryto .(n)iunctf O o /nsIio e a p ter se ti. O d O G E -d «-* ft t t I n Aom a ig ea o srp u te o p tsu rablm lava isg o e r.st Of £ 'tn CO t < CJ QJ QJ ed t t en OJ E O t QJ •rt ed CJ O o ed Uh Uh X rt . Uh ttl co TJ G d '■tt eo 9 1 60497800 E X t QJ s QJ t t en a T J UJ CJ oi Ul oi % > 3 crt QJ X sn 2 HH oo CJ o o ed H-) QJ CJ QJ I n QJ § Q ed C J TJ QJ OJ CJ O Q ttl r A u t oi I h Uh CO QJ Uh UJ ttl cu ,-H TJ Q 0S*\ c2 QJ t t Uh Uh < H Uh o Oh a Uh ed fOJ JJ 00 TT* C O >■» •d OJ Uh Uh Uh t t X QJ G Uh G d *Q «» J OJ ed •w ed TJ o £ Q it <*n T J 00 d X ttOJ■ CJ QJ co G > rt I n co t t ' f , t t rt o I n t '5 eo QJ CO oo OJ CJ CJ OJ t I h .s ed tn fc U . 00 o CJ 00 tn U UJ UJ O t t en o i t O u-» CQ E QJ Of s H O ttl en tn en Oi Oi Oi ttJ >* H tt) ttl u t oi ttl ttl tt) I—H tt, CO 1—4 H < 00 hJ CO ttl oi CQ B-97 ^ \ STATEMENT FORMS J^\. The following symbols are used in the descriptions of FORTRAN Extended statements: variable or array element /*$^?y sn statement label iv integer variable unsigned integer or octal constant or integer variable 0S\ name symbolic name fn input/output unit: 1- or 2-digit decimal integer constant, integer variable with value of: 0-99, or an integer variable containing a Hollerith value which is the filename in L format format designator iolist input/output list 0$^\_ 0H^\ Other forms are defined individually in the following list of statements. ASSIGNMENT STATEMENTS Page Numbers v = arithmetic expression 2-15 logical v = logical or relational expression 2-18 v -masking expression 2-19 j^P^N M U LT I P L E A S S I G N M E N T v- = v2 =... vn = expression 2-19 F L O W C O N T R O L S TAT E M E N T S GO TO sn 4-1 GO TO (sn*.,...,snm).iv 4-2 GO TO {sn-,..; ,snm)iv 4-2 GO'TO .sn.-,... fsnm).expression 4-2 GO TO -(sn.j,... ,snm)expression 4-2 60497800 A C-l /**"\ Page Numbers GOTO iv,(sn1 ,...,snm) 44 GO-TO iv{jsnr,...'.snm) 44 ASSIGN sn TO iv 4-3 IF (arithmetic or masking expression) sn- ,sn2,sn3 4-5 IF (arithmetic or masking expression) sn-,sn2 4-5 IF (logical or relational expression) stat 4-6 IF (logical or relational expression) sn1#sn2 ( 4-7 DOsn iv = m1,m2#m3 4-7 DO sn iv = m1fm2 4-7 CONTINUE 4-12 PAUSE 4-13 PAUSE n 4-13 PA U S E ^ c . c * 4-13 STOP 4-14 f&^K ^Stv y^w^V STOPn 4-14 STOP-^c.f.c-?-- 4-14 END 4-14 A*m\ /S^S&K T Y P E D E C L A R AT I O N V^^X INTEGER name......name„ i' ' n 3-1 TYPE INTEGER name-,...,namen 3-1 C-2 60497800 A /^^S Page Numbers REAL name- In TYPE InR COMPLEX TYPE /$i$\ EAL 1' COMPLEX name,...., PRECISION 3*.-7• 3* -* 2• ■J namen name, 3 namen name,,...,name TYPE DOUBLE TYPE PRECISION DOUBLE LOGICAL i type, name. name, LOGICAL (ac, namen namen ..name 3-2 ,...,typen 3-2 3-2 3-3 namer...,namen acm) -2 3-2 name,,.. n TYPE IMPLICIT name n a m e - , . .n. , n a m e DOUBLE ( 3 .n7. name.,..., ' DOUBLE name., -» 3-3 (ac,,...,acm) 3-3 ^^^ ac is one or more single alphabetic characters or ranges of characters separated by commas. { A range is represented by the first and last character separated by a minus sign. C * E X T E R N A L D E C L A R AT I O N EXTERNAL name-,..., name 3-14 STORAGE ALLOCATION type {* ^ name., TYPE DIMENSION (d,-) type name, name, (d,) 3-1 (dj) namen 3-1 (dn) 3-4 ^^ di array declarator, one to three integer constants; or if name is a dummy argu fy ment in a subprogram, one to three integer variables or constants /#■£*. 0S?t\ \ 0S\ type INTEGER, REAL, COMPLEX, DOUBLE, DOUBLE PRECISION or LOGICAL 60497800 A C-3 Page Numbers /£*E$SS 3-5 C O M M O N v, v r ) ySJ^K 3-5 COMMON/blkname-/v-, . . ' . , vn ... /blkname 11 ' n 1 /v- vn /*S\ 3-5 C O M M O N / / v, v n blkname symbolic name or I - 7 digits II blank D ATA common vlist,/dlist,/ D ATA (vlist^dlist*,),.. ) vlistn/dlistn/ . , 3-15 (vlistn=dlistn) ^ 3-15 /CS!^. vlistj list of array names, array elements, variable names, and implied DO loops, separated by commas dlistj one or more of the following forms separated by commas: constant (constant list) rl'*constant rt*(constant list) rjf( constantlist) j constant list list of constants separated by commas if integer constant. The constant or constant list is repeated >ea^ the number of times indicated by rf E Q U I VA L E N C E LEVEL (glist.,) n, a, ,.'.., an (glistj "". . * ^ 3-8 • 3-12 ^^\ n ■ - ~: Unsigned integer 1,2 or 3 - a- ' Va r i a b l e * array element, array name -^ fd^fyx ^t-tk^V C"4 60497800 A MAIN PROGRAMS Page Numbers PROGRAM name 7-2 PROGRAM nameffpar.,, fpar2,.... fpark) 7-2 SUBPROGRAMS FUNCTION name (p, pj 7-8 type FUNCTION name (p, ,..., pn) 7-8 type INTEGER, REAL, COMPLEX, DOUBLE, DOUBLE PRECISION or LOGICAL SUBROUTINE name (p,,..., pp) 7-6 SUBROUTINE name 7-6 SUBROUTINE name (p, pn), RETURNS (b, bm) 7-6 SUBROUTINE name,RETURNS (b. b ) 7-6 ENTRY POINT ENTRY name 7-18 STATEMENT FUNCTIONS name (p,,..., pn) = expression 7-10 SUBPROGRAM CONTROL STATEMENTS >^^\ /i&N CALL name 7-16 CALL name (p,,..., p ) 7-16 CALL name (p,,..,, pn),RETURNS (b, bm) 7-16 CALL name.RETURNS (b, bm) 7-16 RETURN 4-15 RETURN i 4-15 i is a dummy argument in a RETURNS list 60497800 A C-5 /"S^V Page Numbers SPECIFICATION SUBPROGRAMS /^S*\ BLOCK BLOCK D ATA D ATA 7-5 name 7-5 INPUT/OUTPUT PRINT fn,iolist 5-2 PRINT fn 5-2 PRINT (u,fn) iolist 5-3 PRINT*,iolist 5-10 PRINT (u,fn) 5-3 PRINT (ii,*) iolist 5-10 PUNCH fnjolist 5-3 PUNCH fn 5-3 PUNCH (u,fn) iolist 5-4 PUNCH *,iolist 5-10 PUNCH (u,fn) 5-4 PUNCH (u,*) iolist 5-10 WRITE (u,fn) iolist 5-4 WRITE (u,fn) 54 WRITE fn,iolist 5-5 WRITE fn 5-5 WRITE (u) iolist 5-7 WRITE (u) 5-7 /■^^sv 0 ^ K /"•E^^v /tSx ^S^s ^ WRIJE (u,*) iolist 5-10 WRITE*,iolist 5-10 ^ K 0Z&fe^ f * ^ ^ \ /*9\ /*^H >*i3»¥JX ,*^$K ^&$\ C-6 60497800 A Page Numbers !N READ (u,fn)iolist 5-5 READ (u,fn) 5-5 READ fnjolist 5-5 rs READ fn READ (u) 5-6 iolist READ 5-7 (u) «s READ 5-7 (u/) iolist 5-8 READ*,iolist 5"8 BUFFER te, IN BUFFER (u,p) OUT (a,b) (u,p) (a,b) 5-19 5-20 a first word of data block to be transferred b last word of data block to be transferred p integer constant or integer variable. zero = even parity, nonzero = odd parity /p\ NAMELIST/group name,/a,,..., READ V (u.group READ ^psv (u, (u, PUNCH aj array names name) group PUNCH y^v name group PRINT \ name) group PRINT Hp-^ name (u,group WRITE name group name) group or namen/a,,...,an name) group WRITE 0^\ V an/.../group name 5 - 11 5-13 5-13 5-14 5-15 5-15 5-15 5-15 5-15 variables group name symbolic name identifying the group a,,...-, a 60497800 A C-7 INTERNAL TRANSFER OF DATA Page umbers ENCODE (c,fn,v) iolist 5-21 t^^fS ./t*^\ DECODE (c,fn,v) iolist 5-24 y^^jy starting location of record. Variable or array name length of record in characters. Unsigned integer constant or simple integer variable .•^^y FILE MANIPULATION y^fcjV REWIND u 5-26 BACKSPACE u 5-26 ENDFILE u 5-26 /*^S ^ ^ K FORMAT SPECIFICATION sn FORMAT (fsv . .., fsn) 6-5 fsj one or more field specifications separated by commas and/or grouped by parentheses DATA CONVERSION /f^*y srEw.d Single precision floating point with exponent 6-9 srEw.dEe Floating point with specified exponent length 6-9 srEw.dDe Floating point with specified exponent length 6-9 srFw.d Single precision floating point without exponent 6-13 srGw.d Single precision floating point with or without exponent 6-14 srDw.d Double precision floating point with exponent 6-16 rlw Decimal integer conversion 6-7 rlw.z Integer with specified minimum digits 6-7 rLw Logical conversion 6-21 rAw Alphanumeric conversion 6-18 rRw Alphanumeric conversion 6-20 rOw Octal integer conversion 6-17 /«S^*K <<^k"\ y^^\ /S^V /*^V r*SS%S. s t ^ \ S ^ \ C-8 60497800 A /^$\ Page Numbers rOw.z Integer with specified minimum digits 6-17 rZw Hexadecimal conversion 6-18 s optional scale factor of the form: nP r optional repetition factor w integer constant indicating field width d integer constant indicating digits to right of decimal point e integer indicating digits in exponent field z integer specifying minimum number of digits nX Intraline spacing 6-24 Hollerith 6-25 / Format field separator; indicates end of FORTRAN record 6-28 Tn Column tabulation 6-32 V Display code substitution 6-34 Numeric substitution 6-34 nH « i ^ N OVERLAYS 0®*^ CALL OVERLAY (fname,i,j,recall,k) 7-23 fname name of file or overlay in H format octal with a B or decimal equivalent overlay numbers recall if 6HRECALL is specified, the overlay is not reloaded if it is already in memory L format Hollerith constant: name of library from which overlay is to be loaded any other non-zero value: overlay loaded from global library set OVERLAY (fname.i.j.Cn) 7-22 j#^\ f n a m e n a m e o f fi l e ij overlay numbers Cn n is a 6-digit octal number indicating start of load relative to blank common 60497800 C C-9 /*SS"*v Page Numbers ,^S!S 9-22 f**^\ DEBUG C$ DEBUG C$ DEBUG (name, , namen) C$ AREA bounds. , bounds^ C$ DEBUG 9-22 C$ AREA/name,/bounds,,.... boundsn . /name_/bounds. C$ DEBUG (name, ..... namej or C$ DEBUG bounds 9-23 within program unit ) boundsn ' external 9-23 debug deck (n, ,n2) n, initial line position n2 terminal line position (n3) n3 single line position to be debugged (n, ,*) n, initial line position * last line of program (*,n2) * first line of program n2 terminal line position (*,*) * first line of program * last line of program C $ A R R AY S ( a , a n ) 9-3 C $ A R R AY S 9-3 a, array 0^^\ names C$ CALLS (s,,...,sn) 9-5 C$ CALLS 9-5 Sj subroutine names C$ FUNCS (f-| fn) 9-7 C$ FUNCS 9-7 fs C$ GOTOS C-10 function name 9-14 60497800 C /C-?&\ Page Numbers 9-17 C$ NOGO C$ STORES (c 9-10 •cn> variable name variable name .relational operator, constant variable name .relational operator, variable name variable name .checking operator. checking operators: RANGE out of range I N D E F i n d e fi n i t e VALID out of range or indefinite c$ TRACE (Iv) 9-15 c$ TRACE 9-15 lv /"SSN level number: 0 tracing outside DO loops n tracing up to and including level n in DO nest 9-26 C$ OFF C$ OFF(x, xn) 9-26 Xj any debug option COMPASS SUBPROGRAM IDENTIFICATION IDENT name (in column 11) 17-2 E N D i n d i c a t e s e n d o f C O M PA S S s u b p r o g r a m 17-2 LISTING CONTROL DIRECTIVES j0!*\ C/ LIST, NONE 12-2 C / L I S T, A L L 12-2 60497800 C C-ll /<^N 0^^\ 0% r*^\ ^"^t\ f^^A j0H&\ ARITHMETIC This section explains the internal format of numbers used in FORTRAN programs and the kinds of arithmetic performed on them. It is intended primarily to aid in reading octal dumps and interpret operating system mode error messages. The actual instructions generated for any sequence of code depend on the context of the code as well as the optimization level selected. INTERNAL FORMATS FOR VALUES The internal format used to store a FORTRAN variable, array element, constant, or expression depends strictly on the type. REAL NUMBERS Real numbers are stored in 60-bit floating point format as shown in figure D-l 59 48 11-bits Sign Biased Exponent 48-bits Integer Coefficient Assumed binary point Bits 47 through 0 contain the coefficient of the number (equivalent to about 14 decimal digits). The binary point is considered to be at the right of bit 0. The exponent is biased by 2000 octal; that is, the exponent is represented by an 11-bit quantity (one's complement notation is used for negative numbers), 2000 octal is added to this quantity, and the low order 11 bits are used. Additionally, real numbers are normalized. A normalized number is one in which bit 47 is the most significant bit; that is, bit 47 is different from bit 59. The special case of a word of all zero bits (positive zero) is also a normalized number. For every bit position that the coefficient is shifted to the left to achieve normalization, the exponent is reduced in value by one. The sign of the number is represented by bit 59; the number is positive if bit 59 is 0 and negative if bit 59 is 1. Negative numbers are represented in one's complement form. Minus zero (a word of all 1 bits) is considered to be equal to positive zero (a word of all zero bits) when the relational operators are used; minus zero is not considered less than positive zero. Minus zero is considered zero for arithmetic IF statements. Table D-l summarizes the configurations of bits 58 and 59 and the exponent and coefficient signs resulting from each combination. 60497800 E D-l TABLE D-l. BITS 58 AND 59 COMBINATIONS Bit 58 Bit 59 Coefficient Sign Exponent Sign 0 Positive Positive 0 Positive Negative 1 Negative Positive 1 Negative Negative Some examples of floating point numbers, as they would appear in octal format, are as follows: Number Octal Representation +1. 1720 4000 0000 0000 0000 +100. -100. 1726 6200 0000 0000 0000 6051 1577 7777 7777 7777 1.E64 2245 6047 4037 2237 7733 -l.E-64 6404 2570 0025 6605 5317 0. 0000 0000 0000 0000 0000 DOUBLE PRECISION Double precision numbers occupy two consecutive words, each in the floating point format shown in figure D-l. The first word contains the more significant part of the number, and the second word contains the less significant part. Although complete arithmetic instructions using double precision arguments are not provided by the hardware, the FORTRAN Extended compiler generates code for true double precision by using instructions that give upper and lower half results with single precision arguments. Some examples of double precision numbers, as they would appear in octal format, are as follows: Octal Representation Number First Word Second Word 7.834926843D137 -2348585858574758224D12 26334153710320065255 25530330560116025671 57120455517237124716 57721332647630553777 0.0D0 oooooooooooooooooooo OOOOOOOOOOOOOOOOOOOO 192837465192837465D256 35347102140424723427 77777777777777777777 34542402521200675526 -0.0D0 1.234234234234234234234234234234 DO 17204737554312750737 16405543127507375543 D-2 77777777777777777777 60497800 A /^-\ COMPLEX NUMBERS 0O&\ Complex numbers are of the form a + bi, where the real part (a) occupies the first word, and the imaginary part (b) occupies the second word. Both words contain real numbers in the format shown in figure D-l. The formulas used for arithmetic for complex numbers are as follows: (a + bi) ± (c + di) = (a ± c) + (b ± d) i /#^\ (a + bi) * (c + di) = (ac - bd) + (ad + be) i , .. . - ... ac + bd be-ad (a + bi)/(c + di)= -= ZT+-J j i c2 + d2 c2+d2 Some examples of complex numbers, as they would appear in octal format, are as follows: Octal Representation f" Number First Word Second Word (5.7,6.3) 17225546314631463146 17226231463146314632 (764E45,-12.2E45) 21604135136170411021 63013513153413026764 (36.567985456983,2E-110) 17254444263576544542 11436006220176715720 INTEGERS The full 60-bit word is used for internal representation of integers. Bit 59 is the sign bit (0 for a positive number, 1 for a negative number), and the other 59 bits represent the magnitude of the number. Only the lower 48 bits are used for multiplication and division in most cases, as well as for conversion from an integer to a real number; the full 60 bits are used for addition and subtraction. In the case of multiplication, division, and conversion, the upper 12 bits might be disregarded (except for the sign bit) without diagnostic if the operation takes place at execution time. Where constants are involved, the compiler might issue a diagnostic at compile time. Some examples of integers, as they would appear in octal format, are as follows: Number Octal Representation 247-l 00003777777777777777 12131214121312 -2 00000260420455254540 77777777777777777775 LOGICAL VALUES There are only two logical values: .TRUE, and .FALSE. .TRUE, is represented internally by a negative number (bit 59 is 1) and .FALSE, is represented internally by a positive number (bit 59 is 0). f 60497800 C D-3 TYPELESS OPERANDS Typeless operands include octal and Hollerith constants, masking expressions, and the values returned by the intrinsic functions AND, OR, XOR, COMPL, SHIFT, and MASK. Typeless operands are never converted but assume the type of the expression in which they occur. If they are used in an expression, the user must be aware of value associated with the bit pattern of a typeless operand in the context it is used (see Section 2). Some examples of typeless operands, and their internal representation, are as follows: Operand 9RORNOT2B Octal Representation 00172255161724553502 2 3 4 . O R . 4 LY E C H 3 1 0 5 0 3 1 0 0 0 0 0 0 0 0 0 0 3 5 2 f ^ ^ V SHIFT(COMPL(MASK(l 2)),4) 00177777777777777760 OVERFLOW Overflow of the floating point range is indicated by a word whose upper 12 bits are 3777g for a positive result and 4000g for a negative result. These are the largest values that can be represented in floating point format, as shown in Table D-2. If the result of a computation has exactly 3777g or 4000g in the upper 12 bits, no error results immediately, but if the number is used subsequently, an error condition results. This situation is known as partial overflow. Complete overflow occurs when an operand whose upper 12 bits would be larger than 3777g or 4000g is gen erated. Complete overflow also occurs when the result of a computation has a mathematically infinite value; for example, division by zero. Certain library functions return an infinite operand when called with invalid arguments. In the case of complete overflow, the upper 12 bits of the operand are set to 3777g or 4000g and the coefficient is set to all zero bits. The sign of the operand is the same as if the number had not exceeded the floating point range. Further action depends on the computer being used. i-^^K On a CYBER 70 Model 71, 72, 73, or 74, CYBER 170 Model 171, 172, 173, 174, or 175, or 6000 series computer, no action is taken unless the operand is used again. In this case, the error mode 2 flag (see below) is set. The program aborts and an error message is listed unless this error has been disabled by a MODE control statement or by installation option. On a CYBER 70 Model 76, CYBER 170 Model 176, or 7000 series computer, the overflow condition flag is set in' the Progranj Status Designator register as soon as complete overflow occurs. This flag causes an overflow message to be listed and the program to abort. This condition also results from the use of an operand that was not generated by an arithmetic operation. s4^$\ UNDERFLOW Underflow occurs when the result of a computation would have a value less than 0000g or 7777g in the upper 12 bits. In this case, the word is set to all zeros. On a CYBER 70 Model 71, 72, 73, or 74, CYBER 170 Model 171, 172, 173, 174, or 175, or 6000 series computer, no further action is taken. On a CYBER 70 Model 76, CYBER 170 Model 17-6, or 7000 series computer, no action is taken unless underflow has been selected as a mode error by a MODE control statement or by installation default. In this case, the underflow condition flag is set in the Program Status Designator register as soon as the underflowed result is generated. This flag causes an underflow message to be listed and the program to abort. D-4 60497800 C TABLE D-2. FLOATING POINT REPRESENTATION Positive Operand OVERFLOW LARGEST ABSOLUTE VALUE SMALLEST NORMALIZED ABSOLUTE VALUE 0&\ Negative Operand Complete Overflow 37770 . . .Og Partial Overflow 3777X . . .Xg 4000 . . .0g £1.265014083171E+322 = 37767 . . .7g = 1.265014083171E+322 = 37767 . . .7g S-1.265014083171E+322 =40010 . . .Og s-1.265014083171 E+322 =40010 . . .0g S3.131513062514E-294 = 000140 . . .0g S-3.131513062514E-294 = 777637 . . .7g 4000X . . .Xg ZERO 0 .. .o8 7 . . .7g INDEFINITE 17770 . . .0g 60007 . . .7g If underflow is selected as a mode error on the CYBER 70 Model 76, it is unlikely that a FORTRAN program will compile or execute successfully. Therefore, this error condition should not be enabled when FORTRAN programs are compiled or executed. INDEFINITE OPERANDS An indefinite result is generated when a calculation cannot be resolved, such as a division operation when the divisor and dividend are both zero. The internal representation of an indefinite operand does not correspond to any number; the operand is represented by a minus zero exponent and a zero coefficient (17770 . . .0g). Further action depends on the computer being used. On a CYBER 70 Model 71, 72, 73, 74, CYBER 170 Model 171, 172, 173, 174, or 175, or 6000 series computer, no action is taken unless the indefinite operand is used again. In this case, the error mode 4 flag (see below) is set. The program aborts and an error message is listed unless this error has been disabled by a MODE control statement or by installation option. On a CYBER 70 Model 76, CYBER 170 Model 176, or 7600 series computer, the indefinite flag is set in the Program Status Designator register as soon as the operand is generated. This flag causes a message to be listed and the program to abort. COMPUTATION WITH NON-STANDARD OPERANDS /£P*\ If any mode error conditions have been disabled by the MODE control statement or by installation option, computations with these operands, which would normally cause the program to abort, can continue. The following tables (D-3 through D-6) show the results of arithmetic operations using non-standard operands in all possible combinations. In these tables, W represents any value except infinite or indefinite, and N represents any positive value except infinite, indefinite, or zero. 60497800 C D-5 *^*\ TABLE D-3. NON-STANDARD ADD XI = X2 + X3 X3 W +00 —00 ±IND w - +00 -00 IND +00 +00 +00 IND IND -00 -00 IND -00 IND ±IND IND IND IND IND X2 TABLE D-4. NON-STANDARD SUBTRACT XI = X2 - X3 X3 +00 —00 ±IND w - -00 +00 IND +00 +00 IND +00 IND -00 -00 -00 IND IND +IND IND IND IND IND /^®t\ X2 TABLE D-5. NON-STANDARD MULTIPLY X 1 = X2 * X3 X3 +N X2 -N yStf^sv 4-00 —00 ±IND +N +00 -00 IND -N -00 +00 IND +0 IND IND IND -0 IND IND IND +0 -0 +00 +00 —00 IND IND +00 -00 IND -00 —00 +00 IND IND -00 +00 IND ±IND IND IND IND IND IND IND IND .^^s yri^v /s^v D-6 60497800 A .(IfslpSS TABLE D-6. NON-STANDARD DIVIDE XI = X2 / X3 0^\ X3 +N X2 / " fi ^ N -N +0 -0 +N +00 -00 IND -N —00 +00 IND +0 IND IND IND -0 IND IND IND +00 -00 ±IND +00 +00 -00 +00 -00 IND IND IND -00 -00 +e» -00 +e» IND IND IND ±IND IND IND IND IND IND IND IND ARITHMETIC MODE ERRORS Arithmetic mode errors occur when the central processor encounters an instruction whose execution is impossible or meaningless. The errors recognized, and the format of the message that is issued, vary depending on the operating system. NOS/BE 1 AND NOS 1 ERROR CONDITIONS The following mode errors are issued under NOS/BE 1 and NOS 1: Mode Error 00 Program stop (CYBER 70 series and CYBER 170 series only). Might result from attempting to execute a word of zeros or from a bad assigned GOTO statement or missing EXTERNAL statement. 01 Address out of range. A storage location outside the user's field length has been referenced. This error could be the result of an illegal array subscript, a call to an undefined subprogram, or a subroutine call with an incorrect number of arguments. 02 Infinite operand (defined above) 03 Infinite operand and address out of range 04 Indefinite operand 05 Indefinite operand and address out of range 06 Infinite or indefinite operand 07 Infinite operand and indefinite operand When executing on a CYBER 170 computer, the first digit might be nonzero, indicating a hardware error (as described in the appropriate operating system reference manual). 60497800 D D-7 When an arithmetic mode error occurs, a message of the following type is issued: time ERROR MODE = n. ADDRESS = xxxxxx where n is the error type and xxxxxx is the address in octal of the relative location where the error occurred. /^^». SCOPE 2 ERROR CONDITIONS When an arithmetic error occurs under SCOPE 2, the following type of message appears in the dayfile under the headings shown below: 14.30.36*00012.059*SYS. SC006 - SCM DIRECT RANGE CODE xxnnn xx SC or JM SC indicates System Control; JM, Job Management. System Control provides system overlay loaders and some communication between operating system overlays. Job Manage ment controls user program input/output, and prepares user programs for execution. ,rfS^V nnn Index number of the message. MESSAGE AND MEANING The message and an interpretation (if necessary) are printed. LEVEL Indicates the level of severity of the error as follows: X Job terminates. No EXIT processing occurs. F Job terminates. EXIT processing occurs. W Warning is printed, and error is ignored. Processing continues, although the portion of the program containing the error may not be executed. I Informative message is printed. CODE MESSAGE SC001 SC002 SC003 SC004 SC005 SC006 SC007 SC008 SC009 SCO 10 LCM PA R I T Y SCM PA R I T Y LCM BLOCK RANGE SCM BLOCK RANGE LCM DIRECT RANGE SCM DIRECT RANGE PROGRAM RANGE BREAKPOINT STEP CONDITION INDEFINITE CONDITION OVERFLOW CONDITION UNDERFLOW CONDITION JOB MAKING 6000 REQUEST IN RAS+1; RAS+1 of user area is non-zero. scon scon SC040 D-8 AND MEANING LEVEL F F F F F F F F F F F F F /■r^tiS 60497800 A GLOSSARY jsP\ Tliis glossary does not include terms defined in the ANSI standard for FORTRAN, X3.9-1966. ADVANCED ACCESS METHODS (AAM) - A file manager that processes indexed sequential, direct access, and actual key file organizations, and supports the Multiple Index Processor. (See CYBER Record Manager.) BASIC ACCESS METHODS (BAM) - A file manager that processes sequential and word addressable file organiza tions. (See CYBER Record Manager.) BLANK COMMON BLOCK - An unlabeled common block. No data can be stored into a blank common block at load time. The size of the block is determined by the largest declaration for it. Contrast with labeled common block. BLOCK — In the context of input/output, a physical grouping of data on a file that provides faster data transfer. Record Manager defines four block types on sequential files: I, C, K, and E. Other kinds of blocks are defined for indexed sequential, direct access, and actual key files. Also refers to a common block. BOI (Beginning-of-Information) — Record Manager defines beginning-of-information as the start of the first user record in a file. System-supplied information, such as an index block, control word, or tape label, exist prior to beginning-of-information. BUFFER - An intermediate storage area used to compensate for a difference in rates of data flow, or times of event occurrence, when transmitting data between central memory and an external device during input/output operations. 0HS>i\ BUFFER STATEMENT - One of the input/output statements BUFFER IN or BUFFER OUT. CALL BY NAME — A method of referencing a subprogram in which the addresses of the actual arguments are passed. CALL BY VALUE — A method of referencing a subprogram in which only the values of the actual arguments are passed. COMMON BLOCK — An area of memory that can be declared in a COMMON statement by more than one relocatable program and used for storage of shared data (see BLANK COMMON BLOCK and LABELED COMMON BLOCK). CYBER RECORD MANAGER (CRM) - A generic term relating to the common products AAM and BAM that run under the NOS 1 and NOS/BE 1 operating systems and which allow a variety of record types, blocking types, and file organizations to be created and accessed. The execution time input/output of COBOL 5, FORTRAN Extended 4, Sort/Merge 4, ALGOL 4, and the DMS-170 products is imple mented through CRM. Neither the input/output of the NOS 1 and NOS/BE 1 operating systems themselves nor any of the system utilities such as COPY or SKIPF is implemented through CRM. All CRM file processing requests ultimately pass through the operating system input/output routines. 60497800 D In this manual, the term CRM (or CYBER Record Manager) refers to the versions of Record Manager supported by NOS 1 and NOS/BE 1; the term Record Manager refers to these versions plus the ^\ SCOPE 2 Record manager. EOF(End-of-File) - A particular kind of boundary on a sequential file, recognized by the functions EOF and *^ UNIT, and written by the ENDFILE statement. Any of the following conditions is recognized as end-of-file: 0^^i\ End of End of partition End section of (for INPUT information fi l e only) ' t^™$\ (EOI) 1 W type record with flag bit set and delete bit not set Ta p e mark Trailer label /=s^ Embedded zero length level 17 block ENTRY POINT — A location within a program unit that can be branched to from other program units. Each entry point has a unique name. .y^nv EOI (End-of-information) — The end of the last programmer record in a file. Trailer labels are considered ^s;^ to be past end-of-information. End-of-information is undefined for unlabeled S or L tapes. 1 EQUIVALENCE CLASS — A group of variables and arrays whose position relative to each other is defined as a result of an E Q U I VA L E N C E statement. /^\ I EXTERNAL REFERENCE — A reference in one program unit to an entry point in another program unit. j !. FIELD LENGTH — The area (number of words) in central memory assigned to a job. FILE - A logically related set of information; the largest collection of information that can be addressed by 'y a file name. Starts at beginning-of-information and ends at end-of-information. FILE CONTROL STATEMENT — A control statement that contains parameters used to build the file information ^^ table for processing. Basic file characteristics such as organization, record type, and description can be specified on this statement. FIT (File Information Table ) — A table through which a user program communicates with Record Manager. All file processing executes on the basis of fields in the table. Some fields can be set by the FORTRAN user in the FILE control statement. ^ LABELED COMMON BLOCK - A common block into which data can be stored at load time. The first program unit declaring a labeled common block determines the amount of memory allocated. "^ Contrast with blank common block. LOGICAL FILE NAME - The name by which a file is identified; consists of one to seven letters or digits, the ■"^ first a letter. Files used in standard FORTRAN Extended input/output statements must be defined in the PROGRAM statement, and can have a maximum of six letters or digits. MAIN OVERLAY - An overlay that must remain in memory throughout execution of an overlayed program. MASS STORAGE INPUT/OUTPUT - The type of input/output used for random access to files; it involves the ^ subroutines OPENMS, READMS, WRITMS, CLOSMS, and STINDX. E-2 60497800 D OBJECT CODE — Executable code produced by the compiler. OBJECT LISTING - A compiler-generated listing of the object code produced for a program, represented as COMPASS code. OPTIMIZING MODE - One of the compilation modes in the FORTRAN Extended compiler, indicated by the control statement options OPT=0, 1, and 2, or by omission of the TS option. OVERLAY - One or more relocatable programs that were relocated and linked together into a single absolute program. It can be a main, primary, or secondary overlay. PARTITION — Record Manager defines a partition as a division within a file with sequential organization. Generally, a partition contains several records or sections. Implementation of a partition boundary is affected by file structure and residence. Device RT BT PRU device Physical Representation A short PRU of level 0 containing oneword deleted record pointing back to last I block boundary, followed by a control word with flag indicating parti tion boundary. W C A short PRU of level 0 containing a control word with a flag indicating partition boundary. A short PRU of level 0 followed by a zero-length PRU of level 17. D,F,R,S,T,U,Z S or L format tape Separate tape block containing as many deleted records of record length 0 as required to exceed noise record size, followed by a deleted one-word record pointing back to the last I block boundary, followed by a control word with a flag indicating a partition boundary. W C Separate tape block containing as many deleted records of record length 0 as required to exceed noise record size, followed by a control word with a flag indicating a partition boundary. D,F,T,R,S,U,Z CJK,E Tapemark. Any other tape format Undefined. Notice that in a file with W type records a short PRU of level 0 terminates both a section and a partition. 60497800 D E-3 PRIMARY OVERLAY - A second level overlay that is subordinate to the main overlay. A primary overlay can call its associated secondary overlays and can reference entry points and common blocks in the main overlay. sG@jk PROGRAM UNIT - A sequence of FORTRAN statements terminated by an END statement. The FORTRAN program units are main programs, subroutines, functions, and block data subprograms. PRU - Under NOS 1 and NOS/BE 1, the amount of information transmitted by a single physical operation of a specified device. The size of a PRU depends on the device: A PRU which is not full of user data is called a short PRU; a PRU that has a level terminator but no user data is called a zero-length PRU. Device Size in Number of 60-bit Words Mass storage 64 Tape in Sl format with coded data' 128 Tape in SI format with binary data 512 Tape in X' or I format 512 Tape in other format Undefined 'Not supported under NOS 1 PRU DEVICE - A mass storage device or a tape in SI (NOS 1 and NOS/BE 1), I (NOS 1 and NOS/BE 1), or X (NOS/BE 1 only) format, so called because records on these devices are written in PRU's. RECORD - Record Manager defines a record as a group of related characters. A record or a portion thereof is the smallest collection of information passed between Record Manager and a user program in a single read or write operation. Eight different record types exist, as defined by the RT field of the file information table. Other parts of the operating systems and their products might have additional or different definition of records. RECORD MANAGER - A generic term relating to the common products AAM and BAM that run under the NOS 1 and NOS/BE 1 operating systems and which allow a variety of record types, blocking types, and file organizations to be created and accessed. The execution time input/output of COBOL 5, FORTRAN Extended 4, Sort/Merge 4, ALGOL 4, and the DMS-170 products is implemented through CRM. Neither the input/output of the NOS 1 and NOS/BE 1 operating systems themselves nor any of the system utilities such as COPY or SKIPF is implemented through CRM. All CRM file processing requests ultimately pass through the operating system input/output routines. In this manual, the term CRM (or CYBER Record Manager) refers to the versions of Record Manager supported by NOS 1 and NOS/BE 1; the term Record Manager refers to these versions plus the SCOPE 2 Record manager. E-4 60497800 D 0^&&O\ 0^\ RECORD TYPE - The term record type can have one of several meanings, depending on the context. Record Manager defines eight record types established by an RT field in the file information table. REFERENCE MAP - A part of listing produced by a FORTRAN compilation, which displays some or all of the entities used by the program, and provides other information such as attributes and location of these entities. RELOCATION - Placement of object code into central memory in locations that are not predetermined and adjusting the addresses accordingly. SECONDARY OVERLAY — The third level of overlays. A secondary overlay is called into memory by its associated primary overlay. A secondary overlay can reference entry points and common blocks in boht of its associated primary overlay and the main overlay. SECTION - CYBER Record Manager defines a section as a division within a file with sequential organization. Generally, a section contains more than one record and is a division within a partition of a file. A section terminates with a physical representation of a section boundary. Device RT BT PRU device Deleted one-word record pointing back to last I block boundary followed by a control word with flags indicating a section boundary. At least the control word is in a short PRU of level 0. f*s©s W C Control word with flags indicating a section boundary. The control word is in a short PRU of level 0. D,F,R,T,U,Z Short PRU with level less than 17 octal. D,F,R,T,U,Z Undefined. S /$sp?\ Physical Representation Any S or L format tape Undefined. A separate tape block containing as many deleted records of record length 0 as required to exceed noise record size followed by a deleted one-word record pointing back to last I block boundary followed by a control word with flags indicating a section boundary. W C A separate tape block containing as many deleted records of record length 0 as required to exceed noise record size followed by a control word with flags indicating a section boundary. D,F,R,T,U,Z C,K,E Undefined. S Any Undefined. Any other tape format Undefined. The NOS 1 and NOS/BE 1 operating systems equate a section with a system-logical-record of level 0 through 16 octal. 60497800 D E-5 /^^N ,/^^V SEQUENTIAL - A file organization in which the location of each record is defined only as occurring immediately after the preceding record. A file position is defined at all times, which specifies the next record to be read or written. SOURCE CODE - Code written by the programmer in a language such as FORTRAN, and input to a compiler. SOURCE LISTING - A compiler-produced listing, in a particular format, of the user's original source program. SYSTEM-LOGICAL-RECORD - Under NOS/BE 1, a data grouping that consists of one or more PRUs terminated by a short PRU or zero-length PRU. These records can be transferred between devices without loss of " structure. TIME-SHARING MODE - One of the compilation modes in the FORTRAN Extended compiler, indicated by the TS control statement option. UNIT DESIGNATOR - An integer constant, or an integer variable with a value of either 0 to 99 or an L format logical file name. In input/output statements, indicates on which file the operation is to be performed. It is linked with the actual file name by the PROGRAM statement. WORD ADDRESSABLE - A file organization in which the location of each record is defined by the ordinal of the first word in the record, relative to the beginning of the file. /rf^w^V WORKING STORAGE AREA - An area within the user's field length intended for receipt of data from a file or transmission of data to a file. Transmission to or from a buffer intervenes, except for buffer statements. ZERO-BYTE TERMINATOR - 12 bits of zero in the low order position of a word that marks the end of the line to be displayed at a terminal or printed on a line printer. The image of cards input through the card reader or terminal also has such a terminator. X ^ fl V E-6 60497800 D fgffev INDEX /^** 0S\ A conversion, input and output 6-18 Abort Recovery 8-12 Suppression of (see SYSTEMC) ABS 8-2 ACOS 8-7 Actual arguments 7-7, 7-9, 7-12 AIMAG 8-5 AINT 8-2 ALOG 8-6 ALOGIO 8-6 AMAXO 8-2 AMAX1 8-2 AMINO 8-2 AM INI 8-2 AMOD 8-2 AND 8-3 AREA debug statement 9-23 Arguments Actual 7-12 Dummy or format 7-12 Arithmetic Assignment 2-15 Complex D-3 Double precision D-2 Expressions 2-1 IF statement 4-5 Integer D-3 Mode errors D-7 Operators 2-1 Statement function 7-10 Arrays Description 1-13 Dimensions 3-4 Element location 1-16 EQUIVALENCE 3-9 NAMELIST 5-17 Structure 1-16 In subprogram 7-14 Subscripts 1-15 Transmission 6-1 Type statements 3-1 ARRAYS debug statement 9-3 ASIN 8-7 ASSIGN statement 4-3 Assigned GO TO 4-4 Assignment statements Arithmetic 2-15 Logical 2-18 Masking 2-19 Multiple 2-19 Asterisk Comment 1-3 Hollerith 6-26 Multiplication 2-1 ATAN 8-7 ATAN2 8-7 ATANH 8-6.2 B suffix for octal 1-8 BACKSPACE 5-27 Basic external function 7-9, 8-1 Batch debugging 8-52 Binary I/O (see Unformatted) Program execution 18-7 60497800 H /**P^\ Blank Common 3-6 Line 1-4 Block Data subprogram 7-5 Common 3-6 Boolean (see Masking) Buffer Input/output 16-2 IN statement 5-20 OUT statement 5-22 In PROGRAM statement 7-4 C comment line 1-3 C/ listing control 12-2 C$ debug statement 9-3 CABS 8-7 CALL statement 7-16 Call-by-name 14-2, 17-1 Call-by-value 14-2, 17-2 Calling Overlay 7-23 Subroutine subprogram 7-16 Tracing subroutine calls 9-5 CALLS debug statement 9-5 Carriage control 6-31 CCOS 8-6 CEXP 8-6 Character set 1-1, A-l CHECKPTX 8-11 CID 8-51 CLOCK 8-10 CLOG 8-6 CLOSEM 8-42 CLOSMS 8-32 CMMALF 8-53 CMMFRF 8-53 CMPLX 8-5 Coding column significance 1-1 Column usage 1-1 Comment line 1-3 Common And equivalence 3-11 Block 3-5 Overlay communication 7-21 Statement 3-5 Using common 7-14 Common memory manager 8-52 COMPASS assembler Calling sequence 17-1 Program entry points 17-4 Subprogram 17-2 Compilation modes Characteristics 11-2 Listings 12-1 Compile time input/output 16-11 Compiler Call 10-1 Diagnostics B-l Supplied functions 8-1 COMPL 8-3 Complex Arithmetic D-3 Constants 1-7 Index-1 0$®^L Complex (Contd) Conversion 2-17 Type statement 3-2 Variables 1-13 Computed GO TO 4-2 CONJG 8-5 CONNEC 8-27 Constants Complex 1-7 Double precision 1-6 Hollerith 1-9 Integer 1-5 Logical 1-11 Octal 1-8 Real 1-5 Continuation FTN control statement 10-2 Line 9-3 Statement 1-3 CONTINUE statement 4-12 Control Carriage 6-31 Column (Tn) 6-32 Listing 12-2 Control card (see Control statement) Control statement DEBUG 8-51 FILE 16-6 Parameters for FTN 10-1 Conversion Data on input/output 6-6 Mixed mode 2-5 Octal to hexadecimal A-3 Specifications for input/output 6-7 COS 8-6 COSD 8-6.1 COSH 8-6 Cross reference map 13-1 CSIN 8-6 DSQRT 8-7 CYBER Record Manager interface 8-39 CYBER Interactive Debug interface 8-51 D conversion Input and output 6-16 Scaling 6-23 D double precision constant 1-6 DABS 8-2 DACOS 8-7 DASIN 8-7 Data conversion on input/output 6-6 DATA statement 3-15 DATAN 8-7 DATAN2 8-7 DATE 8-9 Dayfile messages 8-10 DBLE 8-5 DCOS 8-6 DCOSH 8-6 DEBUG statement 9-22 Debug Deck structures 9-17 Facility 9-1 Interface, FORTRAN-CYBER 8-50 Printing output 9-27 Statements 8-51, 9-3 Terminal output 8-52 STRACE entry point 9-28 User-debug interaction 8-52 • Index-2 Debugging aids Calls and functions 8-14 CYBER Interactive Debug 8-51 Debugging facility 9-1 ERRSET 8-20 Using reference map 13-14 Deck structure Debug 9-17 Program 18-1 Declarations 3-1 DECODE statement 5-25 DEXP 8-6 Diagnostics Compilation B-l Compiler output listing messages B-79 Execution B-79 Optimizing mode B-l Special compilation B-7 6 Time-sharing mode B-38 DIM 8-3 DIMENSION Statement 3-4 Adjustable 7-14 DISCON 8-29 DISPLA 8-10 Display code A-l Division By zero D-4 Operator 2-1 DLOG 8-6 DLOGIO 8-6 DLTE 8-43 DMAX1 8-2 DMIN1 8-2 DMOD 8-7 DO loops Implied in DATA list 3-19 Implied in I/O list 6-2 Nested DO loops 4-9 Range 4-8 DO statement 4-7 Dollar sign Comment column 1 1-3 Multiple statement separator 1-3 Double precision Arithmetic D-2 Constants 1-6 Conversion 2-16 Type declaration 3-2 Variables 1-13 DSIGN 8-3 DSIN 8-6 DSINH 8-6 DSQRT 8-7 DTAN 8-7 DTANH 8-6 DUMP 8-15 S&t0\ •f*^°\ E conversion, output and input 6-9 ECS/LCM/UEM LEVEL statement 3-12 Subprograms 8-26.1/8-26.2 ENCODE statement 5-22 END statement 4-14 ENDFILE 5-27, 8-43 END-OF-DATA 8-31 END-OF-SECTION 8-23 ENTRY statement 7-18 EOF function 8-24 Equals sign in FORMAT 6-34 /


Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
Page Count                      : 546
Creator                         : ScanSnap Manager
Producer                        : Mac OS X 10.5.8 Quartz PDFContext
Create Date                     : 2009:10:20 11:26:37Z
Modify Date                     : 2009:10:20 11:26:37Z
EXIF Metadata provided by
EXIF.tools

Navigation menu