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 [warning: Documents this large are best viewed by clicking the View PDF Link!]

60497800
/ff^y
CONTROL DATA
CORPORATION
r
FORTRAN EXTENDED
VERSION 4
REFERENCE MANUAL
CDC® OPERATING SYSTEMS:
NOS 1
NOS 2
NOS/BE 1
SCOPE 2
REVISION RECORD
/f*3S*j\
Revision
A (11/01/75)
B (03/05/76)
C (04/15/77)
0 (03/31/78)
E (07/20/79)
F (08/22/80)
G (01/15/81)
H (08/13/82)
J (06/10/83)
Description
Original release.
This revision documents Version 4.6 of FORTRAN Extended. Features documented include
CP155, Compiler Enhancements, and CP079, Math Library Upgrade.
Revised to include feature F7540, CYBER 170 Model 176 Support, as well as miscellaneous
technical corrections, at PSR level 446.
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.
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.
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.
This revision documents release of Post Mortem Dump and STATIC option under SCOPE 2.
Numerous technical changes are included. PSR level 533.
This revision documents numerous technical changes and corrections. PSR level 552.
This revision documents numerous technical and editorial corrections. PSR level 577.
REVISION LETTERS I, 0, Q, AND X ARE NOT USED
©COPYRIGHT CONTROL DATA CORPORATION
1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983
All Rights Reserved
Printed in the United States of America
Address comments concerning this manual to:
CONTROL DATA CORPORATION
Publications and Graphics Division
P. 0. BOX 3492
SUNNYVALE, CALIFORNIA 94088-3492
or use Comment Sheet in the back of this manual
n60497800 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.
ijfpSN
/*$RN
/0S\
r
Page Revision Page Revision Page Revision
Front Cover 5-11 thru 5- 19 8-7
Inside Front Cover 5-20 8-8
Title Page 5-21 8-9
ii 5-22 8-10
iii 5-23 8-11 thru 8-16
iv 5-24 8-16.1/8-16.2
vd5-25 thru 5- 28 8-17
vi 6-1 8-18
v i i / v i i i 6-2 8-19
ix 6-3 8-20
XJ6-4 8-21
xi 6-5 8-22
xii 6-6 thru (5-8 8-23
1-1 thru 1-4 6-9 8-24
1-5 6-10 8-25
1-6 thru 1-9 6-11 thru 6- 17 8-26
1-10 6-18 8-26.1/8-26.2
1-11 thru 1-17 6-18.1/6-18.2 8-27
2-1 6-19 thru 6- 21 8-28
2-2 6-22 8-29
2-3 6-23 8-30
2-4 6-24 8-31
2-5 6-25 thru 6- 27 8-32
2-6 6-28 8-32.1 /8-32.2
2-7 thru 2-20 6-29 8-33 thru 8-35
3-1 thru 3-9 6-30 8-36
3-10 6-31 8-37
3-11 6-32 8-38
3-12 6-33 8-39
3-13 6-34 8-40
3-14 6-35 thru 6- 37 8-41
3-15 7-1 8-42
3-16 7-2 8-43
3-17 7-3 8-44
3-18 7-4 8-45 thru 8-47
3-19 7-5 thru 7-S 8-48 thru 8-51
3-20 7-10 8-52
3-21 7-11 8-53
4-1 7-12 8-54
4-2 7-13 thru 7- 15 8-55
4-3 7-16 8-56
4-4 7-17 8-56.1/8-56.2
4-5 thru 4-9 7-18 8-57 thru 8-61
4-10 7-19 9-1
4-11 7-20 9-2 thru 9-4
4-12 7-21 9-5
4-13 7-22 9-6
4-14 thru 4-16 7-23 9-7
5-1 7-24 thru 7- 28 9-8
5-2 8-1 9-9
5-3 8-2 9-10
5-4 thru 5-6 8-3 9-11 thru 9-29
5-7 8-4 10-1
5-8 8-5 10-2
5-9 8-6 10-3
5-10 8-6.1/8-6.2 10-4
5-10.1
5-10.2
60497800 J i i i
Revision Page Revision Page 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
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-6
D-7
D-8
E-l thru
Index-1
D-5
E-6
Index-2
Index-3
Index-4
Index-5
Index-6
Comment Sheet
Mailer
Back Cover
yfS&Sv
.**^^\
I V 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 DATCYBER 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
NOS/BE 1 for the CDC CYBER 170 Series, CYBER 70 Models 71, 72, 73, 74, and 6000 Series Computer |
0s\ 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
f specification of the FORTRAN Extended language; later sections describe the implementation of these
specications and shading is not used.
/*"5Rx
r Extended memory for the CYBER 170 Model 176 is large central memory (LCM) or large central memoryextended (LCME). Extended memory for the CYBER 170 800 Series Computer Systems is unied 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.
rThe Software Publications Release History is a guide for determining which revision level of software
documentation corresponds to the Programming System Report (PSR) level of installed site software.
/*"fSS
/^n
60497800 J
The following publications are of primary interest:
Publication
Publication Number
FORTRAN Common Library
Mathematical Routines
Reference Manual 60498200
FORTRAN Extended Version 4
DEBUG User's Guide 60498000
FORTRAN Extended Version 4
User's Guide 60499700
NOS Version 1 Reference Manual
Volume 1 of 2 60435400
NOS Version 2 Reference Set
Volume 3, System Commands 60459680
NOS/BE Version 1
Reference Manual 60493800
SCOPE Version 2
Reference Manual 60342600
The following publications are of secondary interest:
Publication
Publication
Number
Common Memory Manager
Version 1 Reference Manual 60499200
COMPASS Version 3
Reference Manual 60492600
CYBER Interactive Debug
Version 1 Reference Manual 60481400
CYBER Interactive Debug
Version 1 Guide for Users
of FORTRAN Extended Version 4 60482700
CYBER Loader Version 1
Reference Manual 60429800
CYBER Record Manager
Advanced Access Methods
Version 2 Reference Manual 60499300
CYBER Record Manager
Advanced Access Methods
Version 2 User's Guide 60499400
CYBER Record Manager
Basic Access Methods
Version 1.5 Reference Manual 60495700
CYBER Record Manager
Basic Access Methods
Version 1.5 User's Guide 60495800
NOS1 NOS 2 NOS/BE 1 SCOPE 2
X
X
X
X
X
X
X
X
X
X
X
X X
X0£&$$\
X
X
NOS1 NOS 2 NOS/BE 1 SCOPE 2 ,<*^*\
X
X
X
X
X
X
X
X
X
X.y<S^^V
/•/5-^V
X
X
X
VI 60497800 H
0^\
Publication
DMS-170
DDL Version 3 Reference Manual
Volume 1: Schema Denition
for Use With:
COBOL
FORTRAN
Publication
Number NOS1 NOS 2 NOS/BE 1 SCOPE 2
Query Update 60481900
FORTRAN Data Base Facility
Version 1 Reference Manual 60482200
INTERCOM Interactive Guide
for Users of FORTRAN Extended 60495000
INTERCOM Version 5
Reference Manual 60455010
Loader Version 1 User's Guide 60482300
Network Products
Interactive Facility Version 1
Reference Manual 60455250
NOS Version 1 Diagnostic Index 60455720
NOS Version 1 Manual Abstracts 84000420
NOS Version 2 Diagnostic Index 60459390
NOS Version 2 Manual Abstracts 60485500
NOS Version 2 Reference Set
Volume 1, Introduction to
Interactive Usage 60459660
NOS/BE Version 1
Diagnostic Index 60456490
NOS/BE Version 1
Manual Abstracts 84000470
SCOPE Version 2 Loader
Reference Manual 60454780
SCOPE Version 2 Record Manager
Reference Manual 60495700
Software Publications
Release History 60481000
Sort/Merge Versions 4 and 1
Reference Manual 60497500
CDC manuals can be ordered from Control Data Corporation, Literature and Distribution Services,
308 North Dale Street, St. Paul, Minnesota 55103.
This product is intended for use only as described in this document. Control
Data cannot be responsible for the proper functioning of undescribed features
or parameters.
60497800 H vii/viii
/"PN
CONTENTS
1. FORTRAN LANGUAGE ELEMENTS
Coding FORTRAN Statements
FORTRAN Character Set
Column Usage
Comments
Statement Labels
Continuation
Columns 73-80
Statement Separator
Blank Lines
Data
Ordering of Statements
Constants
Integer Constant
Real Constant
Double Precision Constant
Complex Constant
Octal Constant
Hollerith Constant
nHf and #?*
nRf and nLf
Logical Constant
Variables
Integer Variables
Real Variables
Double Precision Variables
Complex Variables
Logical Variables
Arrays
Subscripts
Array Structure
1-1
1-1
1-1
1-1
1-3
1-3
1-3
1-3
1-3
1-4
1-4
1-4
1-5
1-5
1-5
1-6
1-7
1-8
1-9
1-10
1-11
1-11
1-11
1-12
1-12
1-13
1-13
1-13
1-13
1-15
1-16
IMPLICIT Type Statement
DIMENSION Statement
COMMON Statement
EQUIVALENCE Statement
EQUIVALENCE and COMMON
LEVEL Statement
EXTERNAL Statement
DATA Statement
Implied DO in Data List
4. FLOW CONTROL STATEMENTS
GO TO Statement
Unconditional GO TO Statement
Computed GO TO Statement
ASSIGN Statement
Assigned GO TO Statement
Arithmetic IF Statement
Three-Branch Arithmetic IF Statement
Two-Branch Arithmetic IF Statement
Logical IF Statement
Standard-Form Logical IF Statement
Two-Branch Logical IF Statement
DO Statement
DO Loops
Nested DO Loops
CONTINUE Statement
PAUSE Statement
STOP Statement
END Statement
RETURN Statement
3-3
3-4
3-5
3-8
3-11
3-12
3-14
3-15
3-19
4-1
4-1
4-1
4-2
4-3
4-4
4-5
4-5
4-5
4-6
4-6
4-7
4-7
4-8
4-9
4-12
4-13
4-14
4-14
4-15
2. EXPRESSIONS AND ASSIGNMENT
STATEMENTS 2-1
Expressions
Arithmetic Expressions
Evaluation of Expressions
Type of Arithmetic Expressions
Exponentiation
Relational Expressions
Logical Expressions
Masking Expressions
Assignment Statements
Arithmetic Assignment Statements
Conversion to Integer
Conversion to Double Precision
Conversion to Complex
Conversion to Real
Logical Assignment
Masking Assignment
Multiple Assignment
3. SPECIFICATION STATEMENTS
Type Statements
Explicit Type Declarations
INTEGER
REAL
COMPLEX
DOUBLE PRECISION
LOGICAL
2-1 5. INPUT/OUTPUT STATEMENT
2-1
2-2 Formatted Input/Output
2-5 Formatted Output Statements
2-6 PRINT
2-7 PUNCH
2-9 WRITE
2-12 Formatted READ
2-14 Unformatted Input/Output
2-15 Unformatted WRITE
2-16 Unformatted READ
2-16 List Directed Input/Output
2-17 List Directed Input
2-18 List Directed Output
2-18 NAMELIST
2-19 Input
2-19 Output
Arrays in NAMELIST
Buffer Statements
3-1 BUFFER IN
BUFFER OUT
3-1 ENCODE and DECODE
3-1 ENCODE
3-1 DECODE
3-2 File Manipulation Statements
3-2 REWIND
3-2 BACKSPACE
3-3 ENDFILE
5-1
5-2
5-3
5-3
5-4
5-5
5-5
5-7
5-7
5-7
5-8
5-8
5-10.2
5-13
5-14
5-15
5-17
5-20
5-20
5-22
5-22
5-22
5-25
5-27
5-27
5-27
5-27
60497800 H
/^$$K
6. INPUT/OUTPUT LISTS AND FORMAT Miscellaneous Utility Subprograms 8-8
STATEMENTS 6-1 Random Number Generator 8-8
Operating System Interface Routines 8-9
Input/Output Lists 6-1 Debugging Aids 8-14
Implied DO in I/O List 6-2 Input/Output Status Checking 8-23
FORMAT Statement 6-5 Other Input/Output Subprograms 8-25
Data Conversion 6-6 ECS/LCM/UEM Subprograms 8-26.1/
Conversion Specification 6-7 8-26.2
Iw and Iw.z Input 6-7 Terminal Interface Subprograms 8-27
Iw and Iw.z Output 6-8 Mass Storage Input/Output 8-29
Ew.d, Ew.dEe and Ew.dDe Output 6-9 Random File Access 8-29
Ew.d, Ew.dEe and Ew.dDe Input 6-10 Mass Storage Subroutines 8-30
Fw.d Output 6-13 Opening a File 8-30
Fw.d Input 6-13 Writing Records 8-31
Gw.d Input 6-14 Reading Records 8-32
Gw.d Output 6-14 Closing a File 8-32
Dw.d Output 6-16 Specifying a Different Index 8-32.1/
Dw.d Input 6-16 8-32.2
Ow Input 6-17 Index Key Types 8-33
Ow Output 6-17 Master Index 8-33
Zw Input and Output 6-18 Sub-Index 8-33
Aw Input 6-18.1/ Multi-Level File Indexing 8-33
6-18.2 Compatibility With Previous Mass
Aw Output 6-19 Storage Routines 8-39
Rw Input 6-20 FORTRAN-CYBER Record Manager Interface 8-39
Rw Output 6-21 Parameters 8-39
Lw Input 6-21 Subroutines 8-42
Lw Output 6-21 Error Checking 8-44
Scale Factors 6-21 Multiple Index Processing 8-45
Fw.d Scaling 6-22 FORTRAN-Sort/Merge Interface 8-46
Ew.d and Dw.d Scaling 6-23 FORTRAN-CYBER Interactive Debug Interface 8-51
Gw.d Scaling 6-23 Control Statement 8-51
X Specification 6-24 User-CID Interaction 8-52
nH Output 6-25 CID Output 8-52
nH Input 6-26 Batch Debugging 8-52
End of Record Slash 6-28 Interface to Common Memory Manager 8-52
Repeated Format Specification 6-29 Post Mortem Dump 8-53
Printer Control Character 6-31
Tn Specification 6-32
V Specification 6-34 9. DEBUGGING FACILITY 9-1
Equals Sign 6-34
Execution Time Format Specification 6-36 Debugging Statements 9-3
7. PROGRAM UNITS, PROCEDURES,
AND OVERLAYS
Main Programs
PROGRAM Statement Format
PROGRAM Statement Usage
Block Data Subprogram
Procedures
Subroutine Subprogram
Function Subprogram
Basic External Function
Intrinsic Function
Statement Function
Procedure Communication
Passing Values to a Procedure
Using Arguments
Using Common
Using Arrays
Referencing a Function
Calling a Subroutine Subprogram
Using the ENTRY Statement
Overlays
Overlay Communication
Creating an Overlay
Calling an Overlay
8. FORTRAN EXTENDED SUPPLIED
PROCEDURES
Intrinsic Functions
Basic External Functions
7-1
7-2
7-2
7-3
7-5
7-6
7-6
7-8
7-9
7-10
7-10
7-12
7-12
7-12
7-14
7-14
7-15
7-16
Continuation Line
ARRAYS Statement
CALLS Statement
FUNCS Statement
STORES Statement
Variable Names
Relational Operators
Checking Operators
Hollerith Data
GOTOS Statement
TRACE Statement
NOGO Statement
Debug Deck Structure
DEBUG Statement
AREA Statement
OFF Statement
Printing Debug Output
STRACE Entry Point
10. FTN CONTROL STATEMENT
9-3
9-3
9-5
9-7
9-10
9-11
9-12
9-13
9-13
9-14
9-15
9-17
9-17
9-22
9-23
9-26
9-27
9-28
10-1
7-18 Parameters 10-1
7-19 A Exit Parameter 10-2
7-21 B Binary Object File 10-2
7-21 BL Burstable Listing 10-2
7-23 C COMPASS Assembly
CC Control Statement Continuation 10-2
Parameter 10-2
8-1 D Debugging Mode Parameter 10-3
DB CYBER Interactive Debug Parameter 10-3
8-1 E Editing Parameter 10-3
8-1 EL Error Level 10-4
60497800 J
/<^!v
/*e$!\
>^V
/<SsV
0^*-
ER Error Recovery 10-4
G Get System Text File 10-4
GO Automatic Execution (Load and Go) 10-4
I Source Input File 10-5
L List Output File 10-5
LCM Level 2 and Level 3 Storage Access 10-5
ML Modlevel 10-5
OL Object List 10-5
OPT Optimization Parameter 10-6
P Pagination 10-6
PD Print Density 10-6
PL Print Limit 10-6
PMD Post Mortem Dump 10-6
PS Page Size 10-6
PW Page Width 10-7
Q Program Verification 10-7
R Symbolic Reference Map 10-7
ROUND Rounded Arithmetic Computations 10-7
S System Text (Library) File 10-8
SEQ Sequenced Input 10-8
SL Source List 10-8
STATIC Static Loading 10-8
SYSEDIT System Editing 10-8
T Error Traceback 10-9
TS Timesharing Mode 10-9
UO Unsafe Optimization 10-9
X External Text Name 10-9
Z Zero Parameter 10-9
FTN Control Statement Examples 10-10
Time-Sharing Mode
R=l Maps
R=2, R=3 Maps
Common Blocks
Entry Points
External References
Statement Labels
Variables
14. OBJECT CODE
Optimizing Mode
Subroutine and Function Structure
Main Program Structure
Renaming Conventions
Register Names
External Procedure Names
Listing Format
Time-Sharing Mode
Listing Format
15. EXECUTION CONTROL STATEMENT
Alternate File Name Specification
Print Limit Specification
Post Mortem Dump Parameters
13-15
13-16
13-17
13-18
13-18
13-18
13-19
13-20
14-1
14-1
14-1
14-2
14-2
14-2
14-2
14-3
14-3
14-3
15-1
15-1
15-2
15-2
11. COMPILATION MODES AND
OPTIMIZATION 11-1
Optimizing Mode 11-2
/0S\ Object Code Optimization 11-2
OPT=0 11-2
OPT=l 11-2
OPT=2 11-2
UO 11-3
Source Code Optimization 11-4
Time-Sharing Mode 11-6
TS Listings 11-7
/f|S\ Sequenced Line Format 11-7
12. COMPILER LISTINGS 12-1
0^\ Optimizing Mode Listings 12-1
Time-Sharing Mode Listings 12-2
0 S \
Listing Control Directives 12-2
13. CROSS REFERENCE MAP 13-1
/i^N Optimizing Compilation Mode 13-1
Source Program 13-2
R=l Maps 13-3
R=2/R=3 Maps 13-4
0O&\ Entry Points 13-5
Variables 13-6
File Names 13-7
External References 13-8
Inline Functions 13-9
J*$^N Namelists 13-10
Statement Labels 13-10
DO Loops 13-11
Common Blocks 13-12
/""S"N Equivalence Classes 13-13
Program Statistics 13-14
Error Messages 13-14
Debugging (Using the Reference Map) 13-14
16. INPUT/OUTPUT IMPLEMENTATION
Execution-Time Input/Output
File and Record Definitions
Structure of Input/Output Files
Sequential Files
Mass Storage Input/Output
FILE Control Statement
Sequential File Operations
BACKSPACE/REWIND
ENDFILE
Input/Output Restrictions
Record Manager Error Suppression
Compile-Time Input/Output
Source Input File Structure
Coded Output File Structure
Binary Output File Structure
17. COMPASS SUBPROGRAM LINKAGE
Call by Name and Call by Value
Call by Name Sequence
Call by Value Sequence
Intermixed COMPASS Subprograms
Entry Point
Restrictions on Using Library Function
Names
18. SAMPLE DECK STRUCTURES
FORTRAN Source Program with Control
Statements
Compilation Only
TS Mode Compilation Only
Compilation and Execution
FORTRAN Compilation With COMPASS
Assembly and Execution
Compile and Execute With FORTRAN Sub
routine and COMPASS Subprogram
16-1
16-1
16-1
16-2
16-2
16-6
16-6
16-8
16-8
16-10
16-11
16-11
16-11
16-12
16-13
16-13
17-1
17-1
17-1
17-2
17-2
17-4
17-4
18-1
18-1
18-2
18-2
18-3
18-4
18-5
60497800 H xi
Compile and Produce Binary Cards
Load and Execute Binary Program
Compile and Execute With Relocatable
Binary Deck
Compile Once and Execute With Different
Data Decks
Preparation of Overlays
Compilation and 2 Executions With Overlays
19. SAMPLE PROGRAMS
Program OUT
Program B
Program MASK
Program EQUIV
Program COME
Program UBS
Program PIE
Program ADD
DECODE (READ)
ENCODE (WRITE)
Program PASCAL
Program X
Program VARDIM
Program VARDIM2
SUBROUTINE IOTA
SUBROUTINE SET
Function AVG
Function PVAL
Function MULT
Main Program - VARDIM2
Program CIRCLE
Program OCON
List Directed Input/Output
20. STATIC OPTION
18-6
18-7 APPENDIXES
A Standard Character Set
18-8 B FORTRAN Diagnostics
C Statement Forms
18-9 D Arithmetic
18-10
18-11
E Glossary
19-1 INDEX
A-l
B-l
C-l
D-l
E-l
/f**"^?*\
19-1
19-3
19-5 FIGURES
19-7
19-9 1-1 Program PASCAL 1-2 s ^ \
19-11 9-1 Example of Interspersed Debugging
19-13 Statements 9-18
19-15 9-2 External Debugging Deck 9-19 /*^\
19-15 9-3 Example of Internal Debugging Deck 9-20
19-15 9-4 Example of External Deck on Separate
19-18 File 9-21
19-19
19-21 /<*S"X
19-23 TABLES
19-23
19-23 2-1 Mixed Type Arithmetic Expressions ^*^\
19-23 With + - * / Operators 2-5
19-24 7-1 Differences Between a Function and
19-25 Subroutine Subprogram 7-1
19-25 7-2 Procedure and Subprogram Inter /Cc£$V
19-28 relationships 7-2
19-30 8-1 Intrinsic Functions 8-2
19-33 8-2 Basic External Functions 8-6
8-3 LABINFO Block Content 8-26 *r*^\
16-1 Defaults for FIT Fields Under FORTRAN
20-1 Extended 16-3
/®ft\
>«"»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 gure 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 A to Z
Numeric 0 to 9
Special = equal ) right parenthesis
+ plus , comma
- minus . decimal point
* asterisk $ dollar sign
/ slash blank
(left parenthesis £ or " quote
In addition, any character (Appendix A) may be used in Hollerith constants and in comments. Blanks are not
signicant except in Hollerith elds.
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 t c
« ta
tc S
Ul 3
SS
»
te
is
s
f-
z
Ul
£
Ul
ca
1
SC
f
a
o
IL
IM
<
IN lil
<
u.£
Z -1
o <
o
oi
a S
N <
a
ota.
r-
s
3
5
s
8
S
8
S
10
3
3
S
8
S
8
a
a
K
8
ID
S
a
t-l
l-
<
i
i"-
3
3
X
a
s
s
V
CO
*•»
•*
**2
V
h
•*
s
8
8
8
S
a
a
2
t-
?!
8
R
8
a
3
8
8•a
1
J)
"2
z
oa
.-
<5
. "5
^ -
IN
8
.n"
ST
S"
i
-SS
/-
*»
Vw
Ui
»' /■■;
*>»
-4
•*
1 ~
•*+
* 1
<<" »
.-
iT
it
"5
ii
'-5
jLo
F
»
.-
o
•a
i-i 61 tv
ii
. i n
M
• ri
Ti
IS)
a
^
11 13
.*2 . Z
H
' Oi
a
cv
a.
•5
UJ
01
o o z t-= tfl- ID
s *
fesz. . cvt "2
f > tu 111 •o
^$*\
<^*fi$\
<
o
<
B
to
kf
eo
O
Ui
cu
a
£
,/t^^v
1-2 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 STATEMENT LABELS
A statement label (any 1- to 5-digit integer) uniquely identies 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 signicant. 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.
/fSV
/fp**»
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:
ACUM=24.$I=0 $ IDIFF-1970-1626
is the same as
ACUM =. 24.
I -. '0'
IDIFP = 1970-1626
$ 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.
DATA
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, specied in the PROGRAM
statement. If r is not specified, a default value of 150 is used.
^^s
/""^v
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
"""3^
1OVERLAY
2
PROGRAM*
FUNCTION*
SUBROUTINE*
BLOCK DATA
3IMPLICIT
4
type
COMMON
DIMENSION
EQUIVALENCE
EXTERNAL*
LEVEL
5Statement function*
definitions
in
§§
nt
lit
IS
iii
Hi
6
ENTRY*
Executable
statements*
7 END
F<S^N.
Not allowed in BLOCK DATA Subprograms
Namelist group name must be defined before it is used
,**fs§\
x*"S"X
1^1 60497800 A
ffspN
CONSTANTS
A constant is a xed quantity. The seven types of constants are: integer, real, double precision, complex,
octal, Hollerith, and logical.
INTEGER CONSTANT
n1 n2 ' nm
n is a decimal digit (0-9)
1 <m < 18
pies:
237 -74 +136772 -0024
An integer constant is a string of 1-18 decimal digits written without a decimal point. It may be positive,
negative or zero. If the integer is positive, the plus sign may be omitted; if it is negative, the minus sign
must be present. An integer constant must not contain a comma. The range of an integer constant is
- (259-l) to 2s9-1 (2S9-1 = 576 460 752 303 423 487).
Examples of invalid integer constants:
46. (decimal point not allowed)
23A (letter not allowed)
7,200 (comma not allowed)
When an integer constant is used as a subscript, or as an index in a DO statement or implied DO, the maximum
value is 217-1 (217-1 = 131 071), and the minimum is 1.
Integers used in multiplication, division, and exponentiation, whether constant or variable, should be in the range
- (248 -1) to 248 -1 (248 -1 = 281 474 976 710 655). The result of such operations also should be in this
range. If an integer constant exceeding this range is used, a fatal diagnostic is issued. Any other cases are not
diagnosed, and the results are unpredictable. For integer addition and subtraction (where both operands are
integers), the full 60-bit word is used.
When values are converted from real to integer or from integer to real (in an expression or assignment state
ment), the valid range is also from - (248-l) to 248-l . For values outside this range, the high order bits
are lost and no diagnostic is provided.
REAL CONSTANT
n.n .n n. n.nE±s .nE±s n.E±s nE±s
/*$ps\
n Coefcient < 15 decimal digits
E±s Exponent (base 10)
60497800 B 1-5
/*""SsS\
A real constant consists of a string of decimal digits written with a decimal point or an exponent, or both.
Commas are not allowed. If the exponet is positive, the plus sign is optional. >*«%
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)
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.
/**S"j\
*^*^s
Examples:
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 Coefficient )
D±s Exponent (base 10)
1-6 60497800 A
/SfPV,
Double precision constants are written in the same way as real constants except the exponent is specied 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.
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* COMPLEX CONSTANT
(M,r2)
rl Real part
r2 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 . 0 i
(O., -l.) 0.0 - l.Oi
60497800 A 1-7
The rst 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
(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 underow or overow (see Appendix D) even when this range is not exceeded.
/*"3!"\
OCTAL CONSTANT .«*\
0f&$\
n1 •••nmB
i m
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 non-octal digits. '■■ ',;.:;•; **•»&
77000000007777752525252B exceeds 20 digits i. . .
07766 O not allowed
1-8 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 specied, the digits are right justied and zero
lled. 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 specied.
They can be used in DO statements, expressions, and DATA statements, and as dimension specications.
,|p\
Examples:
BAT - (I * 5252B) . OR. JAY masking expression
J = jMAXO (I, iooob , J, K+40B) octal constant used as parameter in function
masking expression
arithmetic expression
dimension specication
NAME -.1 ..AND. 77700000B
J = (5252B + N)/K
DIMENSION BUF(IOOOB)
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
j*$pn
>ip£\
/*^\
0&>\
nHf
nRf
nLf
=£f-v±
f
H
L
R
Unsigned decimal integer representing number of characters in string including blanks;
must be greater than zero.
String of characters; must contain at least one character
String delimiter
Left justied with blank fill
Left justied with binary zero fill
Right justied with binary zero ll
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 specication 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 A
L = * A B C D E F # ^
PRINT It ItI»J»JfK»K»L»L ^' '
1 FORMAT <024tA15) ^
- S T O P ^
END
/**"^"\
Stored Internally: Display Code:
01020304050655555555 ABCDEF H format ^
01020304050600000000 ABCDEF:::: I-format ?
00000000010203040506 ::::ABC0EF R format'
01020304050655555555 ABCDEF •* format ^
nHf and •J6f*?fe ^\
These two forms produce left-justied display code constants with 10 characters per word. If the string length
is not a multiple of 10, the nal word is blank lled.
y-^-W^V
nHf Examples:
18HTHIS IS A CONSTANT
7HTHE END ^
19HRESULT NUMBER THREE
0 t E x a m p l e s : " - . , , " . ' ';" '''V'-.-V'.y:..'_ " -".r « . " ' _ ' " ^
.F(V.EQ.¥Y,ES-# Y»Y+1. '_','., ? •*.'..,." ."' .".„."•-•- '" '-'•''•
PRINTI^SQRT^.SQRTR) =,. . ;; .
1 FORMAT (A10.F10.2) " "*
PRI NT 2, =# TEST PASSED-?*- ..': ■■ > • . ; ' * • ^
2 FORMAT (2A10)
INTEGER LINEC7), N1THRU9 . /=%>
LOGICAL NEWPAGE, ', '
IF (NEWPAGE) LINE{7);= -£PAGE0-£ + N1 THRU 9
/***^\
-**s^^.
/cr^\
1-10 60497800 E '
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 nal word is zero-lled, and justied; nRf indicates right justication 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 identied 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 specied 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 rst 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
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.
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:
A V A R S U M 3 R E S U L T T O T A L 2 B E T A X X X X
1-12 60497800 A
/**^S*v
/-"SsX
/f"SS"v
00$$^
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
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\
\ Example:
r LOGICAL L33,PRAVDA,VALUE
_ A R R A Y 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) value 10
N(2) value 55
N(3) value 11
N(4) value 72
N(5) value 91
N(6) value 7
Example 2:
The two-dimensional array TABLE (4,3) has four rows and three columns.
Column 1 Column 2 Column 3
Row 1 44 10 105
Row 2 72 20 200
Row 3 11 30
Row 4 91 76 714
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 <OUTPUT•TAPE6=bUTPUT>
COMMON X<4*3)
'"' ' -REAL Y<6)
CALL IOTA <Xil2>
CALL IOTA <Y*6>
WRITE (6fl00) X*Y
100 FORMAT (* ARRAY X « *tl2E9„l»5X»*ARRAY Y * *6E9.1>
STOP
E N D .
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
i*lip\
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.
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
C o M C o l 2 C o l 3
Plane 2
Col 1 Col 2 Col 3
22 51
098
3207 99
the single
subscript
NEXT (3):
represents
NEXT (3,1,1)
NEXT (3,2)V-NEXT (2,2)
represents represents
NEXT (3,2,1) NEXT (2,2,1)
Plane 3
Col 1 Col 2 Col 3
2 1 552
77 60
85 100
Row 1
Row 2
Row 3
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 rst subscript increases most rapidly, and the value of
the last increases least rapidly.
Example:
/"""SIS
In an array declared as A(3,3,3), the elements of the array are stored by columns in ascending locations.
Plane 1
Col 1 Col 2 Col 3
Plane 2
Col 1 Col 2 Col 3
/Ss?K
Row 1 A111 [-A121 i*A131
\1 1
Row 2 A211 A221 A231
j,1 i
Row 3 A311-1 A 3 2 1 J A331
Row 1
Row 2
Row 3
A112 rA122 r*A132
J1\
A212 t A222 , A232
\1\
A312-J A322-1 A332
Plane 3
Col 1 Col 2 Col 3
N*.
Row 1
Row 2
Row 3
A113 r~A123 r-A133
1\\
A213 A223 A233
11 1
A313-1 A323J A333
The array is stored in linear sequence as follows:
Location Relative
Element to first 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) 10
A(3,l,2) 11
A( 1,2,2) 12
A(2,2,2) 13
Location Relative
Element to first Element
A(3,2,2) 14
A( 1,3,2) 15
A(2,3,2) 16
A(3,3,2) 17
A(l,l,3) 18
A(2,l,3) 19
A(3,l,3) 20
A( 1,2,3) 21
A(2,2,3) 22
A(3,2,3) 23
A(l,3,3) 24
A(2,3,3) 25
A(3,3,3) 26
0*&fa\
^m$\
1-16 60497800 A
"%
To nd 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
1ALPHA(K) ALPHA(k) (k-1)XE
2ALPHA(K.M) ALPHA(k,m) (k-1+KX(m-1) )XE
3ALPHA(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 specied 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.
Expression Value
3.78542 Real constant 3.78542
A ( 2 * J ) Array element A (2*J)
BILL Variable BILL
SQRT(5.0) xTT
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
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.
3. Subexpressions delimited by parentheses are evaluated, beginning with the innermost subexpressions.
4. Subexpressions dened by arithmetic, relational, and logical operators are evaluated according to the
following precedence hierarchy:
(exponentiation)
/(division or multiplication)
+(addition or subtraction)
GT. .GE. XT. .LE. .EQ. .NE. (relational)
.NOT. (logical)
.AND. (logical)
.OR. (logical)
-f**^*\\
Ajfi^\
'e^\
^ S K
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 n e g a t e 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
^^\
0^$$\
The expression A/B-C*D**E is evaluated as follows:
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 rst 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 « 4 J = 3 K = 2 J
J/K*I 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 = 2 4 M = 2 7 K = 2
R/M*K
24/27*2 - 0
Examples of valid expressions:
3.14159
B + 16.427
( X B A R +( B ( I , J + I , K ) /3 . 0 ) )
- ( C + D E L T A * A E R O ) ^
2-4 60497800 A
/*"S\
(-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
Double Precision
Real
Integer
Table 2-1. Mixed Type Arithmetic Expressions with + - * / Operators
\ . 2 n d
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 oating point arithmetic.
60497800 E 2-5
EXPONENTIATION
In exponentiation, the following types of base and exponent are permitted:
Base
Integer
Real
Double Precision
Complex
Typeless
Exponent
Integer, Real, Double Precision, Complex, Typeless
Integer, Real, Double Precision, Complex, Typeless
Integer, Real, Double Precision, Complex, Typeless
Integer, Typeless
Integer, Real, Double Precision, Complex, Typeless
/""SSi"!
.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 Type of Result
of A**B
Integer Integer
Real
Double
Complex .
Typeless
Integer
Real
Double
Complex
Integer
Real Integer
Real
Double
Complex
"Typeless
Real
Real
Double
Cpmplex
Real -,'.
Double Integer
Real
Double
Complex
Typeless
Double
Double
Double
Complex
Double
Complex Integer
Typeless
Complex
Complex
Typeless Integer
Real ,
Double
Cornplex >
Typeless
Integer* .
Real
Double
Complex
Integer
The expression -2**2 is equivalent to 0-2**2. An exponent may be an expression. The following examples are all
acceptable.
B**2.
B**N
B**(2*N-1)
(A+B)**(-J)
A negetive exponent must be enclosed in parentheses:
A**(-B)
NSUM**(-J)
2-6 60497800 D
**f*^a\
/*f^\
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<Mx))
/*f^\
where In is the natural logarithm function.
•fjf^V Examples:
Expression Type
0$^s CVAB**(I-3) Real**Integer
Jp\ D**B
C**I
Real** Real
Complex** Integer
JsP^V BASE(M,K)**2.1 Double Precision
**Real
/fPN K**5 Integer* *Integer
314D-02**3.14D-02 Double Precision
**Double Precision
Result
Real
Real
Complex
Double Precision
Integer
Double Precision
RELATIONAL EXPRESSIONS
'1 o p a .
a|,a2
op
Arithmetic or masking expression
Relational operator
A relational expression is constructed from arithmetic or masking expressions and relational operators.
Arithmetic expressions may be type integer, real, double precision, or complex. The relational operators are:
.GT. Greater than
.GE. Greater than or equal to
.LT. Less than
.LE. Less than or equal to
.EQ. Equal to
.NE. Not equal to
The enclosing decimal points are part of the operator and must be present.
60497800 A 2-7
Two expressions separated by a relational operator constitute a basic logical element. The value of this
element is either true or false. If the expressions satisfy the relation specified by the operator, the value is
true; if not, it is false. For example:
X+ Y .G T. 5 . 3
If X + Y is greater than 5.3 the value of the expression is true. If X + Y is less than or equal to
5.3 the value of the expression is false.
A relational expression can have only two operands combined by one operator, a, op a2 op a3 is not valid.
Relational operands may be of type integer, real, double precision, or complex, but not logical. With complex
operands, the relational operators .EQ. and .NE. test for equality oh both the real and imaginary parts; for all
other relational operators only the real parts are compared.
Examples:
J.LT.ITEM
580.2 .GT. VAR
B . GE. (2.7,5. 9E3) real part of cornplex number is used in evaluation
E.EQ..5
(I) .EQ. (J(K))
C . LT. 1 . 5 D 4 m o s t s ig n i c an t p ar t o f d o u b l e p r e c i s i o n n u mb e r i s u s ed i n
evaluation
Relational expressions are evaluated according to the rules governing arithmetic expressions. Each
expression is evaluated and compared with zero to determine the truth value. For example, the expression
p.EQ.q is equivalent to the question, does p - q = 0? q is subtracted from p and the result is tested for zero. ^%
If the difference is zero or minus zero the relation is true. Otherwise, the relation is false.
I f p i s 0 a n d q i s - 0 t h e r e l a t i o n i s t r u e . . - * * * %
Expressions are evaluated from left to right. Parentheses enclosing an operand do not affect evaluation; for
example, the following relational expressions are equivalent: **®\
A.GT.B
<**^K
A.GT.(B) '
(A).GT.B
(A).GT.(B)
ySSsEX
>^*^\
2-8 60497800 A
Examples:
JPN
REAL A
A.GT.720
INTEGER I,J
I . E Q . J ( K )
(I).EQ.(N*J)
B.LE.3.754
Z.LT.35.3D+5
Examples of invalid expressions:
A .GT. 720 .LE. 900
B .LE. 3.754 .EQ. C
DOUBLE PRECISION BILL, PAY
BILL .LT. PAY
A+B.GE.Z**2
300.+B.EQ.A-Z
.5+2. .GT. .8+AMNT
2 relational operators must not appear in a relational expression
LOGICAL EXPRESSIONS
L. op L, op L, op ...L,
L,...Ln
op
logical operand or relational expression
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.
.AND. or ,A.
.OR. or .0.
logical negation
logical multiplication
inclusive OR
The enclosing decimal points are part of the operator and must be present.
60497800 A 2-9
The logical operators are dened as follows (p and q represent LOGICAL expressions):
.NOT.p
p.AND.q
p.OR.q
If p is true, .NOT.p has the value false. If p is false, .NOT.p has the
value true.
If p and q are both true, p.AND.q has the value true. Otherwise, false.
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
TT T T F
TF F T F
FT FT T
FFF F T
If precedence is not established explicitly by parentheses, operations are executed in the following order:
.NOT. .AND. .OR.
Example:
C
c
c
c
PROGRAM L0GIC,(0UTPUTtTAPE6=0UTPUT)
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 A T < 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
LOGNEG = .NOT. TAbLE<I*2)
LOGMLT = TA6LE<I»D -AND. TABLE(I»2>
LOGSUM = TA6LEU»1) .OR. TABLE(I»2>
20 WRITE(6»30) (TABLE(I 9J),J=l»2>t LOGNEG, LOGMLT* LOGSUM
30 FORMATUH0* 5(L1D)
STOP
END
>**^v
/*""*s*\
2-10 60497800 A
''""a^k
0SS,
Output:
p U . N O T . Q P . A N D U P . O K . Q
T T F T T
T F T F T
F T F F T
F F T F F
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 2-11
>#sv
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.
.AND. or .A.
.OR. or .0.
Complement the operand
Form the bit-by-bit logical product (AND) of two operands
Form the bit-by-bit logical sum (OR) of two operands
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 Alternative Form
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))) (.N.(.N.(.N. A.OR. B)))
/fSofev
/r*^\
'*t*^?X
2-12 60497800 A
The operands may be any type variable, constant, or expression (other than logical).
Examples:
0m\ TAX .AND. INT
\ . N O T . 5 5
734 .OR. 82
rA .AND. 77B Extract the low order 6 bits of A
B . O R . C L o g i c a l s u m o f t h e c o n t e n t s o f B a n d C
M .A N D. . N O T. 77B C l ea r t he l o w o rd e r 6 bi t s of 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 0101011101 /_,',
I 1100110101
ifs^V
0*&S
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
.NOT. I
I 1100110101
0011001010 Result after masking
.NOT. must not immediately precede .AND. or .OR.
60497800 A 2-13
,<eS8\
Using vthe following values:
';-:;;'/.;-*'/. v?X 77770060600000000000
^.V.\''JV". .".'.;'^-.- D 00000000777777777777
.'.,_,. B 00000000000000001763
; , ; C 20045000000000000000
Masking operations produce the following octal results:
octal constant ;
octal constant
octal form of integer constant
octal form of real constant
y«£#&\
^ N O T ^ A / - ^
; A A N D i . C " -
' A\aND;";N,QT..C"
' '^^OJt.:'^OT.''D- ;
Invalid example:
;:'; LOGICAL. A
A .AND. B .OR. C
is. : 00007777777777777777
is . -20040000000000000000
is 57730000000000000000.
is 77777777000000001763
masking expression must not contain logical operand
Example:
1
PROGRAM MASK CINPUT,OUTPUT)
FORMAT <iHi»5X»^HNAM///>
PRINT i
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 FORMAT<5X,2A10>
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
^3k£V
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
N=J-100*20
WAGE=PAY-TAX
VAR=VALUE+(7/4)*32
B(4)=B(1)+B(2)
replace the value of A with the value of A + I
replace N with the value of J-100*20
replace WAGE with the value of PAY less TAX
replace the value of VAR with the value of VALUE+ (7/4)*32
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
Integer = Integer Value of integer
expression re
places v.
IFORM = 10/2
Integer = Real Value of real
expression, trun
cated to 48-bit
integer, replaces
v.
IS^Hl^^^^^^^S
Integer = Double Precision Value of double
precision expres
sion, truncated to
48-bit integer,
replaces v.
IFORM = 3141.593D3 3141593
9St^UlU^S&^fMl8SifilliliHBiiiift
Blii^iiiiiiiBi
p||^^i|i|ii|§i
^^Si^^^BMii^K
;S^Bitl9^S^S^S
r5$"N
CONVERSION TO DOUBLE PRECISION
Value of SUM
Value Assigned Example After Evaluation
Double Precision = Integer Value of integer
expression, trun
cated to 48 bits,
is converted to
real and replaces
most significant
part. Least sig
nificant part set
toO.
SUM = 7*5 35.D0
Double Precision = Real Value of real
expression re IIBttl^Sili^iBlIililSSiS^M 15.D0
places most ffiSSv^ifiiiRll^^^^iS^^?
significant part; ^i^%y;::H':^y-;)'^
least significant
part is set to 0.
2-16 60497800 A
CONVERSION TO DOUBLE PRECISION (CONTINUED)
Value of SUM
Value Assigned Example After Evaluation
Double Precision Value of double SUM = 7.322D2 - 32.D -1 7.29D2
= Double Precision precision expres
sion replaces v.
Double Precision = Complex Value of real
part of complex
expression re
places v. Least
significant part
is set to 0.
SUM = (3.2,7.6)+ (5.5,1.0) 8.7D0
CONVERSION TO COMPLEX
Value of AFORM
Value Assigned Example After Evaluation
! Complex-3 Integer Value of integer
expression, trun
cated to 48 bits,
is converted to
real, and replaces
real part of v.
Imaginary part is
set to 0.
AFORM=2+3 (5.0,0.0)
Complex = Real Value of real
expression re
places real part
ofv. Imaginary
part set to 0.
AFORM=2.3 + 7.2 (9.5,0.0)
Complex = Double Precision Most significant
part of double
precision expres
sion replaces real
part ofv. Imag
inary part set to
0.
AFORM = 20D0 + 4.4D1 (64.0,0.0)
Complex = Complex Value of complex
expression replaces
AFORM = (3.4,1.1) + (7.3,4.6) (10.7,5.7)
variable.
60497800 A 2-17
CONVERSION TO REAL
Value Assigned Example
Value of AFORM
After Evaluation
Real = Integer Value of integer
expression, trun
cated to 48 bits,
is converted to
real and replaces
V.
AFORM =200+ 300 500.0
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
places v.
AFORM = 3421.D - 04 .3421
:! Real % Complex
i * ' ' ' ^ Value of real
part of complex/
.expression re
places v.
AFORM = (9.2,1.1}- (2.1,5.0) .
1 y 1 )
7,1
LOGICAL ASSIGNMENT
Logical variable or array element = Logical or relational expression
<<*K§\
<"**»S^
>*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
0$B\
jf|S5\
NSUM is assigned the value .FALSE.
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
/?$^y
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 rst word of the variable; and the least signicant 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 , = V o = v = expression
60497800 A 2-19
Replace the value of several variables or array elements with the value of the expression. For example,
X = Y = Z = ( 1 0 + 2 ) / S U M ( l ) i s e q u i v a l e n t t o t h e f o l l o w i n g s t a t e m e n t s : ^
Z = ( 1 0 + 2 ) / S U M ( l ) r
Y = ' Z "....,,'_",
X - Y ' ^
The value of the expression is converted to the type of the variable or array element during each
replacement. ^N
Examples:
NSUM :- BS U M - ISUM - TOTAL = 10.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 - * !
4. NSJJM is. assigned the value 7
Multiple assignment is legal in .all types of! assignment statements.
/^$\
1
^S^rv
ytC*^\
2-20 60497800 A
SPECIFICATION STATEMENTS
J0$\
0$t$$?\
Specication statements are non-executable; they dene 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, dene methods
of sharing storage, and assign initial values to variables and arrays. The specication statements are:
IMPLICIT
Type
DIMENSION
COMMON
EQUIVALENCE
EXTERNAL
ievei;'
Tte IMPLICIT statement must precedeJother/specication statements.
If any of these statements appears after the rst executable statement or
statement function denition, the specication statement is ignored and a
fatal diagnostic is printed.
The DATA statement, which is not a specication statement, is also described in this section. The DATA state
ment must follow all other specication statements except statement function denitions and FORMAT statements;
it can occur after the rst executable statement.
TYPE STATEMENTS
A type statement denes 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 rst 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 ve explicit type statements: INTEGER, REAL, COMPLEX, DOUBLE PRECISION, and LOGICAL.
INTEGER
nINTEGER name., name0 ,.. ..name
1 2 n
60497800 A 3-1
The symbolic names listed are declared as type integer.
Example:
INTEGER SUM, RESULT, ALIST
The variables SUM, RESULT and ALIST are all declared as type integer.
REAL
REAL name., name.,,..., name„
1 2 n
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:
COMPLEX ALPHA, NAM, MASTER, BETA
The variables ALPHA, NAM, MASTER, BETA are declared as type complex.
DOUBLE PRECISION
7
DOUBLE PRECISION name,, name0,..., name
l 2 n
The symbolic names listed are declared as type double precision. DOUBLE can be used instead of
DOUBLE PRECISION.
/*S"v
>f*St^*\
I
/tUe^.
y*=^£y
^*^?s
^
3-2 60497800 A
Jf»S
0$&K
0S$s
0^\
Example:
DOUBLE PRECISION ALIST, JUNR, BOX4
The variables ALIST, JUNR, BOX4 are declared as type double precision.
LOGICAL
LOGICAL name., name,,,..., name
1 ' 2 ' ' n
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
type
IMPLICIT type, (ac, acn) type^ac, acn)
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.
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 specication 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 specification. /'
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 "E>t3*4? ^
OOHMON All>tBfCfO» Ft6»H }
EQUIVALENCE <A#£#I>
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 C, D, F, H, and I are of type' integer; G is type real. ^
DIMENSION STATEMENT
rDIMENSION name,(d,),...,namen(dn)
/rfS^sv
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 array. ^i
The DIMENSION statement is a nonexecutable statement which denes 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 specied within a procedure subprogram can have adjustable dimension specications.
(A further explanation of adjustable dimension specications appears under Procedure Communication in section
7). Within the same program unit, only one definition of an array is permitted. '"^
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 BETA ^
DIMENSION BETA (2,3)
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
COMMON/ N. v
i n
COMMON/blkname^v,, . . . ^/blknanr^/v.., . . .vn. . ./blknamen/v1, . . . ,vp
/fRv
0Sfc\
blkname;
C O M M O N v v
1 ' ' n
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.
60497800 A 3-5
// Denotes a blank common block. If blank common is the first block in the
statement, slashes can be omitted.
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 specication.
Example:
C0MM0N/BLACK/A(3)
DATA A/l.,2.,3./
COMMON ; 1,00/1 (4.)
DATA l/4;5"r,B,7/
COMMON M,N/CAT/ALPHA,BINGO//ADD
f**§S^k
y<*"$^\
/*s*\
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)
conicting 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 rst.
Data may not be entered into blank common blocks by the DATA declaration.
The COMMON statement may contain one or more block specications:
COMMON/X/RAG,TAG/APPA/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:
COMMON A,B,C/X/Y,Z,D//W,R
.flC^MtSV
3-6 60497800 A
/f*S5s
ZfpN
/*$S\
These statements have the same effect as the single statement:
COMMON A,B,C,W,R,M,N,ADD/X/Y,Z,D/CAT/ALPHA,BINGO
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:
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)
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).
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 program '
C0MM0N/SUM/E(3) ,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 ONE J
COMPLEX A |
C0MM0N/TEST/A(10),G(10),K(10)
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)
3-8 60497800 A
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^
gram unit. If it appears after the first executable statement, a fatal diagnostic is printed. )
*c^\
**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^ EQUIVALENCE (IRON,MAT,ZERO), (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, dened also.
0^\
0$>\
Example:
DIMENSION Y(4), B(3,2)
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' -'
EQUIVALENCE (ZEBRA,TIGER) ' " . - •**^%\
means the same as the statements:.
DIMENSION ZEBRA(10) , ' ^
EQUIVALENCE (ZEBRA(l),TIGER)
A logical, integer, or real entity equivalenced to a double precision or complex entity shares the same location yfi^\
as the real or most signicant 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
jf$S^
/fS^v
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)
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):
/HAT/ Origin A(l)
A(2) B(D
A(3) B(2)
A(4) B(3)
CB(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 A 3-11
/*I"SN
The above EQUIVALENCE statement is illegal because H(l) and H(2) extend the start of the common
block DESK: <**s^v
/DESK/
Origin
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,
in COMMON must not be equivalenced to each other.
Two elements
Examples:
COMMON A,B,C
EQUIVALENCE (A,B) illegal
COMMON /HAT/ A(4),C /X/ Y,Z
EQUIVALENCE (C,Y) illegal
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.
/«**^k
10
COMMON/ /A(4), B, D, E
DIMENSION AA(4>
EQUIVALENCE (AA, A{2))
D=2.
E=2.
DO 10 1=1,6
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
LI
LEVEL n, at ,...,an
'< !
<**^s!\
3-12
<****^V
60497800 C
00&\
'_..--Vi"-!a| : Variables or array names. " -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 species 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 rst 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
/*PN
/$$?\
{
/$^\
No dimension or type information is included in the LEVEL statement.
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' ; , . ""
^.dimension BC6O9),B(5o6),,0M(^boo)
, AycOMMbX/^CSBL'K/'y^V - \ t " .
/***SSy
' 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 rst 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
MOVLEV, ''*•,>"*• ' -'••--- ' « . . - ' - ' -
EXTERNAL STATEMENT
0£w%\
nEXTERNAL name , name.
name,,...,namen Subprogram names
^'^^^k
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.
0^%K
3-14 60497800 H
Example:
Calling Program
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
STOP
END
Subprogram
SUBROUTINE SUBRT (A,B,C)
X=A+3.14159/2.
C=B(X)
RETURN
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 rst 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 Subprogram
C A L L S U B R T ( S I N ( X ) , R E S U LT ) SUBROUTINE SUBRT(A,B)
/f$B\
B=A
END
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
DATA vlist1/dlistl/,vlist2/dlist2/ vlistn/dlistn/
vlist
DATA (vlist == dlist),..., (vlist = dlist)
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.
60497800 H 3-15
^*e^K
dlist One or more of the following forms separated by commas:
/»"*"3!**»
X~-u&&\
constant
(constant list) -
rf*constant
rf*(consfarit list)
rf(constarit list)
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.
The data statement is non-executable and must follow all specication statements except statement function
denitions, NAMELIST statements, and FORMAT statements. It can occur after the rst executable statement.
It assigns initial values to variables or array elements. Only variables assigned values by the DATA statement have
specied 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 dened, 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, real constant) , ! "^
and: "'.'.*;,._. ^.
rf (real constant, real constant) ; . /^
are interpreted as a repeated specicationr'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\.
/jSES^
00^\
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:
77B
64B
5B
5B
5B
200B
200B
200B
200B
200B
0&\
Example*
/"15\
10
PROGRAM OATA C (OUTPUT,TAPE6=0UTPUT)
COMPLEX Z(3),Z1
REAL Mk)
LOGICAL L
N4MEL I S T / 0 UT/I,L,X,Z1 , A , Z
DATA I,L,X,Zl,A,Z/5,.TRUE.,3.i'+159£6536,(2.i,-3.),2*(i.,2.)>
i 3*(<l.,-i.5*)/
W*ITE<6,0UT)
STOP
END
J0$&\ SOUT
I
j0&\ \L-
;'x
00$£\ Zl
L:A'
J0^\ $ -
T^eno1
= 5f
s T ' » ' " : . - ; .
■■ •3l41S926536E*01t
« (.21E*>01»-.3E*01)»
* •lE*>pit »2E***01» .1E*01, .2E*0l»
= «.iE*0i»-.l5E*01>*» <.lE*01»-.l5E*0l>t (.lE*01t-.l5E*0l) t
60497800 A 3-17
0$3a\
Example: ''" - ', . 'A-.,.' ;' '• , '*' ''-'"' "'- '•-;••'•_"•.
the following are examples of alternative (nonstandard) forms of the DATA statement:
. DATA (X-3.)*(Y»5.)
Subsequent explicit setting of elements in the array, however, overrides implicit setting by means of a lengthy
Hollerith.constant. , , ' . .'-'" - , ,
INTEGER ARAY(5)
DATA (A-=7.)»(B=200.),(ARAY-1,2,7,50,3) **k
COMMON/BOX/ARAY4(3,4,5)
DATA (ARAY4(1,3,5)=22.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
lled by the constant.
Example:
DIMENSION JEF(IO) ^
DATA JEF(3) / 40HI THINK, THEREFORE I AM, I THINK/
T h e t h i r d t h r o u g h s i x t h e l e m e n t s o f t h e a r r a y J E F a r e s e t a s f o l l o w s : ' ' ]
, . - i
JEF(3) * 10HI THINK, T j
'JEF(4) - 10HHEREF0RE I '-•
" f J E F ( 5 ) > X 0 H A M , . , . . * ' " : , ; - ' - \
, J E F ( 6 ) = 1 G H . . I T H I N K . ' " * , . ^
•Example:' ' .'.. , *.__' , ; ',,'-' '-,'''"","..
: : I N T E G E R A B C ( 5 ) ' - J ' . - ' " ' . ' - ' . ' \ . ' ' - V . :
: ' '• DATA ABC(3), ABG(4) /30HONCE UPONA MIDNIGHT DREARY , ^
, +10HA TIME .../ ' .--..-.•-•-,..:-.> - ;
"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 rst data list item sets the rst array
element, the second data list item sets the second array element, and so forth.
r**&£\
3-18 60497800 E
00$?\
yg^y
/5^KuJrr\
/p$\
/£$^N
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
J(2) = 10HKLMNOPQRST
J(3) •=• 10HUWXYZ+-*$
J (4) == undefined
The rst 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 undened.
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 specied 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:
(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
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 redened.
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.
2.
3.
2.5
2.5
2.5
2.5
2.5
ir2.5
ANAR/-YY(IO) 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. ,'' . [ ' * ' ' - ^ , * ' ",'","
E x a m p l e 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)
DATA (AMASS(6,K,3),K=l,10)/4*(-2.,5.139),6.9|,10./
DATA (A(I),I=5,7)/2*(4.1),5.0/ ***\
DATA B/5*0.0/
3-20 60497800 A
f»SB\
ijfJI^N
These statements dimension arrays AMASS, A, and B and preset elements as follows:
ARRAY AMASS: ARRAY A
i#^
AMASS(6,1,3) = -2. A( 5) = 4.1
AMASS(6,2,3) = 5.139 A ( 6 ) - 4.1
AMASS(6,3,3) = -2. A ( 7 ) - 5.0
AMASS(6,4,3) = 5.139
AMASS(6,5,3) = -2. ARRAY B
AMASS(6,6,3) = 5.139
AMASS(6,7,3) = -2. B ( l ) = 0 . 0
AMASS(6,8,3) = 5.139 B ( 2 ) - 0 . 0
AMASS(6,9,3) =6.9 B ( 3 ) = 0 . 0
AMA SS(6, 10,3) - 10 . B ( 4 ) = 0 . 0
B ( 5 ) = 0.0
ypp-\
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)
DATA (D3 = 5.,6.,7.,8.),(((P0Q(I,J),I=l,5),J=l,5)=25*O. )
Initialize:
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 ow control statements provide a means of altering, interrupting, terminating, or otherwise modifying
the normal sequential ow of execution:
ASSIGN PAUSE
GO TO STOP
IF END
DO RETURN
CONTINUE
Control can be transferred only to an executable statement. .
A statement can be identied 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.
fjfPN
This statement transfers control to the statement labeled sn which must be an executable statement in the
current program unit. -*
Example:
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
Transfers control to statement 10
60497800 A 4-1
COMPUTED GO TO STATEMENT
nGO TO (sn1 ,sn2 ,..., snm), iv
>f*^**\
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^.
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 specied by an ASSIGN statement. If it is specied 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 undened and a fatal error results at execution time.
Example 1:
GO T0(10,20,30,20),L
.^^*s
/4SS\
'*aa%i
4-2 60497800 A
/*$p^\
The next statement executed is:
10 if L = 1
20 if L = 2
30 if L = 3
20 if L = 4
Example 2:
K=2
GO T0(100,150,300),K
Example 3:
Statement 150 is executed next.
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.
/0$v\
60497800 E 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)
". ) •7.-..K ->
M ^ :
. t V*- GO TO jv (sry. •vsn') t.
\;> '. ;
IV
(sn-,. ..,snm)
nv
is an integer variable.
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 dened 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.
Example:
-•"^ v
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
'*-•*%
/*|PN
ARITHMETIC IF STATEMENT
The arithmetic IF statement has a three-branch and a two-branch form. In both cases, zero is dened 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 4-5
r
^«fesJ\
The two-bjranch IF statement transfers control to one of two executable^statem]etttsrControl is transferred to
the,
sri2
Example-- v-'*,,V
statement labeled sn-j if the value of the expression is not equal to zero and 'to the statement labeled,
if ib'is* equal to-zero. *-. ', !" ^ * *\{ "-1' *.*,~ * V,; .*<"!' " .-", !~ " -"
H* s -V5
- 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.
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
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.
y^x
>«^x
4-6 60497800 A
TWO-BRANCH LOGICAL IF STATEMENT
/0^s
f 1- - .
1
1
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.
0^\
IV
ml
m2
m-,
Control variable; an integer variable.
Initial parameter.
Terminal parameter.
Incrementation parameter.
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 specied, its value is assumed to be 1.
0S\
60497800 A 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 satised, the control variable becomes undened, 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 dene 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
redefinition 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
0$$$£\
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
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 A 4-9
/fP*,
"^^•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.
0Illegal -3 Legal
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.
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:
rD1 r-D1
iD2
D3
n3
•—n2
D4
[n4
L-r»1
rD1
D2
n2
— D3
n3
In1
D2
D3
L— n1=n2 = n3
r*^\
(••s^v
/•^V
4-10 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:
0S&\
DO 1- 1 = 1,10,2
DO 2 J=l,5
DO 3 K=2,8
-3 CONTINUE
2 CONTINUE
CDO 4 L=l,3
4 CONTINUE
1 CONTINUE
DO 100 L=2,LIMIT
DO 10 J=l,10
1-10 CONTINUE
DO 20 K=K1,K2
1-20 CONTINUE
100 CONTINUE
DO 5 1=1,5
DO 5 J=I,10
DO 5 K=J,15
1—5 A = B*C
Example 3:
DO 10 J=l,50
DO 10 1=1,50
DO 10 M=l,100
GO TO 10
/fPN
10 CONTINUE
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 undened results.
60497800 A 4-11
Example 4:
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
GO TO (101,102,50),INDEX
101 TEST=TEST+1
GO TO 104
103 TEST=TEST-1
DATA(K)=DATA(K)*2.0
JS^\
f**^S\
/*"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
5 7
/T 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
PAUSE STATEMENT
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
fPAUSE
fPAUSE n
rPAUSE •* 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
nSTOP
STOP n ff-^SsfX
STOP *c..,c*
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 dayle, 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.
,/3\
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 ows into or branches to an END statement, it is treated as if a
RETURN statement had preceded the END statement.
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.
/^iV
END
.FIDT3
END
-s 4
r*£$>Z\
4-14 60497800 A
/8»fcV
RETURN STATEMENT
/ffS^i. /T
RETURN
RETURN i
0$r\
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.
/*S©\
In a subroutine subprogram, a RETURN statement transfers control to the next executable statement
following the CALL statement in the calling program unit.
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 4-15
. Example 2: ;
Calling Program Subprogram
CA1X;?GMI(A,B,C)>
XBTUR^S (5,10)
5 B*SQRT(A*C)
10'1 >G^'fJ3W-&>iy >
SUBROUTINE PGM1(X,Y»Z),
, XRETURNS <M,N) '-'>'/' . :' \
> . <u*x**r , ' r ' -.'""- : y;y y ',"* ' " :-
' ' x =z +x * Y. " ,, ' - " - *" y * , * ' - A
, 2 0 I F ( X l + x ) , 2 5 , 3 0 . , 3 5 , - . y ' ' j :
; 25 RETURN M Return is to statement 5 in calling program.
.30 RETURNReturn is to statement 10 in calling program.
35 Z*Z+(X*Y) .
RETURN , Jteturn is to statement following CALL PGML
••' "END- y y* >.* .*.-•".- * ^ '••", y
* y . -j *y'vV '*
f *.*
* ^*,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
JPN
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)
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 letters and digits, the first a letter. The logical file name is defined only for the
current job, and is the name by which the file is referred to in control statements.
rFor batch jobs (jobs not executed interactively at a terminal), certain file names have a predefined origin or
destination. These 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
The files INPUT, OUTPUT, and PUNCH should be processed only by formatted, list-directed, or namelist input/
(' output 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 B 5-1
/$$&2y
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).
iolist Input/output list specifying items to be transmitted (section 6).
FORMATTED INPUT/OUTPUT
5-2 60497800 C
XS£*\
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.
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 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 le name of the le 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 variable name with a value of: )
0 - 99 or
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.
/fiS^v
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.
FORMATTED OUTPUT STATEMENTS
PRINT
/T PRINT fn,iolist
/"S5\
PRINT fn
PRINT(u.fn) iolist
/^t\
r
PRINT(u.fn)
This statement transfers information from the storage locations named in the input/output list to the le
named OUTPUT (if u is omitted) or the le specified by u, according to the specication in the format
designator fn. At the end of a job, if the user has not specied an alternate assignment, the le OUTPUT
is sent to the printer.
5
PROGRAM PRINT (OUTPUT)
A=1.2
L=3HYES
N=19
PRINT 4,A,L,N
4FORMAT (G20.6,A10,I5)
The iolist can be omitted. For example,
PRINT 20
20 FORMAT (30H THIS IS THE END OF THE REPORT)
/fsS\
60497800 F 5-3
,jf£^JV
PUNCH ..-f^X
PUNCH fn.iolist
rPUNCH fn
PUNCH(u,fn) iolist
PUNCH (u,fn)
Data is transferred from the storage locations specied by iolist to the le PUNCH (if u is omitted) or the
le specied by u. At the end of a job, if the user has not specied an alternate assignment, the le PUNCH
is output on the standard punch unit as Hollerith codes, 80 characters or less per card in accordance with
format specication fn. If the card image is longer than 80 characters, a second card is punched with the
remaining characters.
0%8$>\
,XS^!\
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
0 S \
>*pS\
0S\
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)
FORMATTED READ
READ (urfn) iolist
60497800 C 5-5
READ (u,fn)
fjf READ fhjolist
READ fn
These statements transmit data from unit u, or the le INPUT (if, u is omitted), to storage locations
named in iolist according to FORMAT specication fn. The number of words in the list and the FORMAT
specications 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 specications in the FORMAT
statement, the data in the records skipped is ignored.
The user should test for an end-of-le 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:
^^\
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
>*"8"*\
"^S *\
The READ statement transfers data from logical unit 4 (externally, the le INPUT) to the variables A,
B, and C, according to the specications 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
5-6
The READ statement transfers data from the le INPUT to the variables X, Y, and Z, according to
the specications in the FORMAT statement labeled 5.
60497800 C
,-fSv
UNFORMATTED INPUT/OUTPUT
Unformatted READ and WRITE statements do not use format specications 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 specied 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.
j-*$iSS\
UNFORMATTED READ
7
READ (u) iolist
P^^N,
READ (u)
60497800 A 5-7
One record is transmitted from the specied 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 le in
the form in which it exists on the le. 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 specied 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
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.
/>3™\
LIST DIRECTED INPUT
Data is transmitted from unit u or the le INPUT (if u is omitted) to the storage locations named in iolist. The
input data items are free-form with separators rather than in xed-size elds.
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 les. For les referenced in list
directed READ statements, the maximum record length in characters should be specied in the PROGRAM state
ment (section 7). This specication creates a separate working storage area for the le, 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.
>*S^v
,+^^$£\
5-8 60497800 D
f*sev
j0&*\
00Z\
0$$\
r
r*
0^.
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.
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.
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.
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 E 5-9
Example.1:. ..,.,>
PROGRAM LDR <INPUT ^OUTPUT tTAPE5=INPUTTAPE6«0UTPUT)
NAMELlST/OUT/CAT»8IRDtDO(5
READ<5t*>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
Example. 2'-" '"', y ". ' ': '. -- ' '<
PROGRAM LDiN.(INPUT=100/80,OUTPUT=100) " J
CALL CONNEC(5LINPUT) •- , (
CALL CONNEC(6LOUTPUT)
. . , W R I T E , 8 . ,
8 FORMATP INPUT:'M4X,"OUTPUT:"//) ^
1 1 , R E A D * , 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 .-<***.
>*£^^\
5-10 60497800 E
j*jj3S*\
INPUT: OUTPUT:
1 2 A pair of numbers
12
3/ Comma divides 2 and 3
3 2
4/ Null before comma (after previous slash)
Two nulls
Two nulls
/
/
One delimiter, one null
Second input value
Terminates for the null and 6
Null list
1 * , 7 One null, then a 7
2*8 Two8's
3 6
3 7
8 8
s0&\
0$$£\
0$$£\
1 2 ,3/, 4/,, , , , 5 , , 6/1* , 7 2*8 All together how
60497800 E 5-10.1
^"*^\
/^^K
/^§\
5-10.2 60497800 E
WRITE*,iolist
PRINT (u,*) iolist
PRINT*,iolist
rPUNCH(u,*) iolist
PUNCH*,iolist
Data is transferred from storage locations specied by the iolist to the designated le in a manner consistent
with list directed input.
PRINT and WRITE both output data to the le OUTPUT if no unit designator is specied. PUNCH outputs to
the le PUNCH if no unit designator is specied.
/*$^\
For les referenced in list directed WRITE, PRINT, and PUNCH statements, the maximum record length in char
acters should be specied in the PROGRAM statement (section 7).
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.
/3 S \
/^\
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-justied 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 rst character (carriage control) of each record and
also as the rst character when a long record is continued on another line; for list directed WRITE statements, a
blank is output as the rst 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 le 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:
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
Output: ^
THE VALUE OF SQRT (3,6) IS =1.897366596131
/SAME WITH WRITE, SQRTC* 3.6 *> IS -t 1.897366596101 ^
Example 2:
PROGRAM LUW (OUTPUT=/80*TAPE6»OUTPUT) ^
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
,/^KS
NAMELIST
The NAMELIST statement permits input and output of groups of variables and arrays with an identifying name.
No format specification is used.
rNAMELIST/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.
a1 ,...,an List of variables or array names separated by commas. Arrays with adjustable dimensions can-
#^ not appear.
The NAMELIST group name identies 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 NAME-
LIST 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 <INPUTt0UTPUTtTAPE5*INPUT,TAPE6»0UTPUT)
f NAMELIST/SHIP/A,8»C»11,12
READ<5tSHIP)
A IF <E0F(5>> 10t20
f^ 10 PRINT*, * NO DATA FOUND *
STOP
20 IF (C .LE. 0.) 40,30
f * 3 0 A . « 8 C
II =12 II
_ WRITE (6tSHIP)
f* " 40 STOP-.-.'
END
Input record:
'" 2 •:>1-^;' - .-)'-'' ...■■■ ' . -
fj$SHIP 'i&?$2 2, ?=20., C*3.4,11=8,12=50$
60497800 C 5-13
/$fe\
Output:
SSHIP
A•234E+02,
B=•2E*02,
Cs.34E*01t
11 58t
12 50,
SEND
^\
INPUT
READ (u,group name)
j*«S|\
READ group name
When a READ statement references a NAMELIST group name, input data in the format described below is
read from the designated le. If the specied group name is not found before ehd-of-le, a fatal error occurs.
If the le is empty, control returns to the statement following the READ; however, a subsequent read on the
same le will result in a fatal error. Consequently, a NAMELIST read should be followed by a test for end-of-
file, '
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 rst 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 nal comma. >^^\
5-14 60497800 C
A sample format for NAMELIST data on cards is as follows:
terminator
00$t\
0&\
/£$&\
/a$
/karray name(n) = constant,... .constant,
Aarray name=constant,..., constant,
/a vanabie=constant,
/*$group name
data items
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 WRITE(u,group name)
60497800 C 5-15
/!PSy
/T PRINT(u,group name)
/"^^\
-^^V
,**~%\
PUNCH(u.group name)
WRITE group name
f
PRINT group name
PUNCH; group name
All variables and arrays, and their values, ih the list associated with the NAMELIST group name are output on
the designated le, OUTPUT, or PUNCH. They are output in the order of specication in the NAMELIST
statement; Output consists of at least three records. The rst 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:
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
*£^t
Output
SVALUES
f^ TOTAL = .58889999999999E*02»
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 specied in the PROGRAM statement). Logical constants appear as T or F. Elements
of an array are output in the order in which they are stored.
y^f^N,
ui aii array arc uuipui m uie uiuei in wiuun uiey aie siuicu.
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
Output record:
pSITEHS
X » ,73*2E*03»
/SSN 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 A Y 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 C 5-17
j ® \
Example:
2
INTEGER BAT(10) y
NAMELIST/HAT/BAT,DOT
READ (5,HAT) ,,,,.> - \ ^ v
/j$ HAT BAT=2,3, 8*4, D0T= 1.05 $END
I ' ' . / * S n
The value of DOT becomes 1.05, the array BAT is as follows:
B A T ( 1 ) 2 y « x
B A T ( 2 ) 3
B A T ( 3 ) 4
B AT ( 4 ) 4
B A T ( 5 ) 4
B AT ( 6 ) 4
B AT ( 7 ) 4
B AT ( 8 ) 4
BAT(9) .4
BAT(10) 4 .
Example:
**^^\
DIMENSION GAY(5) ;
NAMELIST/DAY/GAY,BAY,RAY j
READ (5,DAY) j
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) ,
NAMELIST/BETA/ALPHA,DELTA,X,Y ^
READ (5,BETA)
Input record: ; . , ^^\
rJ$BETA ALPHA(3)-=7.,S.,9.,,DELTA=2.$ . '.- 1 -,.-•, ,.
5-18 60497800 C
0*
\
J0&S
0S\
y$^N
^
0$^\,
0$®*\
In storage
ALPHA(3) 7.
ALPHA(4) 8.
/ffl-*v ALPHA(5) 9.
D E L T A 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)
DATA TAX,INT,ACCUM,ANET/23.,10,500.2,17.0/
NAMELIST/RECORDS/TAX,INT,ACCUM,ANET
FIRST - TAX + INT
SECOND - FIRST * SUM
READ(5; RECORDS)
Input Record
2
7
f
Example:
•$RECORDS TAX-27.', ACCUM=666.2$
I
DIMENSION Y(3,5)
LOGICAL L
COMPLEX Z
NAMELIST/HURRY/I1,I2,I3,K,M,Y,Z,L
READ (5,HURRY)
Input record:
$HURRY 11=1,L=.TRUE.,12=2,13=3.5,Y(3,5)=26,Y(1,1)=11,
12.0E1,13,4*14,Z=(1.,2.),K=16,M=17$
produce the following values:
11=1 Y(l,2)=14.0
12=2 Y(2,2)=14.0
13=3 Y(3,2)=14.0
Y(3,5)=26.0 Y(l,3)=14.0
Y(l,l)=11.0 K=16
Y(2,l)=120.0 M=17
*s± Y(3,l)=13.0 Z=(l.,2.) The rest of Y is unchanged.
L-.TRUE.
60497800 C 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.
Ale 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 specication in the PROGRAM statement (section 7) should
be set to zero for these files; field length requirements are reduced for each le 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 rst 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 rst and last words do not satisfy one of these relation
ships, their relative position is undened 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.
BUFFER IN
BUFFER IN (u,p) (a,b)
5-20 60497800 J
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
same file without an intervening reference to UNIT, the results are undefined, "]
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 specied 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
.ffl^
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 le 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.
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.
For files with record type S, if the end of a system-logical-record (end-of-section) is encountered on a le 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))
/£ S \
/^&N
/!^\
/"*S\
Coded information is transferred from logical unit 1 into storage beginning at the rst 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 TF (UNTTflM 3,5,5
3 k-st CNGTHf 1 \
' 1ENGTH RFTIJPNS (MUMPER OF ViORDS TR/-MS FFRRFP BY fMJFFFR TN
t\ prtk't 1CCRNUMP, (RFC ft>» I" 1*K)
30^ FORMAT f7HCRECPPDtT5/«1*,10U0»1
5 S T n p
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
r*~«t™Qr\
• ® \
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 specied 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
Example:
/*9\
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)
STOP
END
/iS^s
In memory after ENCODE statement has been executed:
Xpw\
ABCDKLMNUV WXYZ12345
ALPHA (1) ALPHA (2) ALPHA (3) ALPHA (4)
If the list and the format specication transmit more than the number of characters specied per record, an
execution error message is printed. If the number of characters transmitted is less than the length specied
by c, remaining characters in the record are blank lled.
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 lled. B and C are written into the second record with the specication 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
INTEGER
DATA A,
ENCODE
FORMAT
PRINT 2
FORMAT
STOP
EMU
TWO (OUTPUT)
A(2)»ALPHA<8)
B»C/10HABCDEFGHIJ,l0HKLMNOPQRST,5HUVWXY,7HZ123456/
(40,1,ALPHA)A,B,C
(2A4/A5,A6)
,ALPHA
(20H1CO'NTENTS OF ALPHA =,6A10)
60497800 E 5-23
UVWXYZ12345
Output:
CONTENTS OF ALPHA =ABCOKLMN
If this same ENCODE statement is altered to:
ENCODE (33,1,ALPHA)A,B,C
1 FORMAT (2A4/A5.A6)
the contents 6f ALPHA remain the same. When a record ends in the middleof a word the remainder
of the word is blank lled (each new record starts at the beginning of the word).
y^Sv
>5l^?V
Record 1 Record 2
ABCDKLMN blank
fill UVWXYZ1234 5 blank
fill
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 specied 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 specication A10, and the quantity J under specication 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 specications 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 specication, 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 specied 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 specied by
the list and the format specication exceeds the number of characters per record, an execution error message
is printed. DECODE processing an illegal character for a given conversion specication produces a fatal error.
If DECODE is processing an A or R format specication 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 1
W o r d 1 W o r d 2
GAMMA
Record 2
W o r d 1 W o r d 2
A = blank
Data transmitted under this DECODE specication would appear in storage as follows
Last 4 characters of the second
word in each record are ignored.
IX=HEADER 1
L=21HEAD
M=HEADER 1
N=22HEAD
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 rst 5 characters of
ITEMP. The ENCODE statement packs the rst 5 characters of LOC(l) and ITEMP into NAME.
Using the R specication, the example above could be shortened to:
ENC0DE(10,1,NAME)L0C(1),L0C(6)
1 FORMAT(A5,R5)
5-26 60497800 E
/«S^\
ifsP^S
0S>S\
FILE MANIPULATION STATEMENTS
Three statements can be used to manipulate les: REWIND, BACKSPACE, and ENDFILE.
REWIND
/T REWIND u
The REWIND operation positions a le at beginning of information so that the next input/output operation
references the rst record in the le, even though several ENDFILE statements may have been issued to that
unit since the last REWIND. If the le 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 le is positioned at beginning of information, this statement acts
as a do-nothing statement. If BACKSPACE is the rst operation on a le positioned at beginning-of-information,
a non-fatal Record Manager error results. A backspace operation should not follow a list directed read on a le.
Example:
DO 1 LU N = 1 , 1 0 , 3
1 BACKSPACE LUN
Files TAPE1, TAPE4, TAPE7, and TAPE 10 are backspaced one record.
ENDFILE
ENDFILE u
An end of partition is written on the designated unit.
Note: When ENDFILE is used on a le dened 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 le integrity, ENDFILE should not be the rst operation on a le.
Meaningful results are not guaranteed if ENDFILE is used on a file processed by mass storage subroutines. '
Example:
IOUT - 6L0UTPUT .
END FILE IOUT
End of partition is written on the le OUTPUT.
End of partition is the le 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.
/f^*^"X
5-28 60497800 E
j0&\ INPUT/OUTPUT LISTS AND FORMAT STATEMENTS
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 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)
f^ READ (2,202)DELTA
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.
^^ An implied DO specification takes one of the following forms:
i = m . . . m ^ r r i . , i = m 1 , 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 A 6-1
Jps.
yf^^V
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 specication
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
IOC 223456712/lOC22
x^^x
./^fsX
^J^y
/ * ^ y
100 is read into the variable L under the specification 13, 22 is read into M under the specication
12, and 3456712 is read into N under specication 17.
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)
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 specication is dened only within that specication; it should not be
referenced outside the specification. ^^^
The first control variable (ij) defined in the list is incremented rst, ij is set equal to mj and the
associated list is transmitted; then ij is incremented by m3, until m2 is exceeded. When the rst
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 MATRIXC3.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:
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 species the format of the data input and determines when a new record will be read.
READ (12,13) B
is equivalent to
READ (12,13) ((BO,J),I=1,10),J=1,15)
6-4 60497800 A
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), C(5,2)... 1
...A(10,5,8), B(10,l), C(5,2),...A(10,5,8), B(10,15), C(5,2)...
Data can be read into or written from part of an array by using the implied DO loop. ""^
Examples:
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
statement reads at least one record regardless of the FORMAT statement. >«5*\
READ (5,100) (MATRIX(I),I=1,10)
100 FORMAT (F7.2)
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) ^
The entire array B will be transmitted in both cases. ***$,
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
f s K
sn FORMAT (fsr .K)
Statement label which must appear
Set of one or more field specications 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.
/*fp\,
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.
Generally, each item in an input/output list is associated with a corresponding field specication 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 eld specications. Double variables correspond to one
oating point field specication (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 6-5
/*P*N
-iCS^\
DATA CONVERSION
The following types of data conversions are available:
srEw.d Single precision floating point with exponent
srEw.dEe «... Single precision floatingpoint with explicitly specified exponent length *1
sr Ew.dDe Single precision floating point with explicitly specified exponent length
srFw.d Single precision floating point without exponent *j
srGw.d Single precision floating point with or without exponent
srDw.d Double precision floating point with exponent "^)
rlw Decimal integer conversion
rlw.z Decimal integer with minimum number of digits specified '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. /^^1)
d Unsigned integer constant specifying the number of digits to the right of the decimal point
within the field. On output all numbers are rounded. >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
a s s u m e d t o b e z e r o , w m u s t b e > d . ^
.»* ■■* IWJfV
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 specication 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 rst 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.
I w I w . 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 rst digit in
the eld. Blanks are interpreted as zeros. An all blank eld is considered to be minus zero. Decimal points
are not permitted. The value is stored in the specied variable. Any character other than a decimal digit,
blank, or the leading plus or minus sign in an integer eld 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 ? 2 3 2 4
In storage:
I contains 139
J contains -1500
K contains 18
L contains 7
M contains -0
N contains 104
Iw and lw,z OUTPUT
The I specication 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 eld 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 eld when the value is positive, and the eld will be too short for any negative value. Not
specifying z produces the same results as z=l.
The specication 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 justied with blanks on the left.
r^%S\
<^SS\
.^^"*\
If the eld is too short, all asterisks occupy the eld.
Example:
PRINT 10,U,K
10 FORMAT (19,110.15.3)
I contains -3762
J contains +4762937
K contains + 13
/*5gv
6-8 60497800 A
Result:
/IPN
/f|St*s
/|P^\
Example:
WRITE (6.100)N,M,I
100 FORMAT (15,16,19)
Result:
1st blank taken
as printer control
character
Ew.d, Ew.dEe and Ew.dDe OUTPUT
1st blank taken as
printer control character
N contains +20
M contains -731450
I contains +205
bb20[••••••bbbbbb205I
specification too
small5* indicates field
is too short
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.
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.
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 signicant digits of the value correctly rounded
60497800 E 6-9
/**sgjw
When the specication Ew.dEe or .Ew.dDe is,used, the exponent is denoted by E or D and the number of
digits, used for the exponent eld not counting the letter and sign is determined by e. If e is specied too
small for the value being output, the entire eld width as specied by w will be lled with asterisks.
Examples:
WRITE (2,10)A A contains -67.32 or +67.32
10 FORMAT (E10.3)
Result: -.673E+02 or b.673E+02
WRITE (2,10)A
10 FORMAT (E13.3)
Result: bbb-.673E+02 or bbbb.673E+02
6-10 60497800 C
>fl3?^s
X^tv
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 species 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 <exP°nent subfieid) ^
For example, if the specification is El0.8, the input quantity 3267E + 05 is converted and stored as:
3267X10"8X 105 = 3.267. ^
If an external decimal point is provided, it overrides d. If d does not appear it is assumed to be zero. % if
specified, has no effect oh input. "^
In the input data, leading blanks are not significant; other blanks are interpreted as zeros. ^^
An input eld consisting entirely of blanks is interpreted as minus zero.
The following diagram illustrates the structure of the input field: )
^~*S
input field
+
digit E or D
integer .
subfield
fraction
subfield
exponent
The integer subfield begins with a + or - sign, a digit, or a blank; and it may contain a string of digits. The
integer field is terminated by a decimal point, E, +, - or the end of the input field.
The fraction subfield begins with a decimal point and terminates with an E, +, - or the end of the input
field. It may contain a string of digits.
The exponent subfield may begin with E, + or -. When it begins with E, the + is optional between E and
the string of digits in the subfield.
For example, the following are valid equivalent forms for the exponent 3:
E + 03 E 03 E03 EO E3 •> 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
-32.7216
+ 328 + 5
.629E-1
+ 136
136
.07628431
E-06 (interpreted as zero)
Integer-fraction-exponent
integer-fraction
integer-exponent
fraction-exponent
integer only
integer only
fraction only
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 elds, columns 1-24:
+6 .47E-01J-2.36 f 5. 321E+02
, * — * *
9 5 1 0
9 7 1 0
|+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 specication E7.2 exceeds
the width of the second eld by two characters. The number -2.36 + 5 is read instead of -2.36. The
specication 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 specication 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 specications:
Input Field Specification Converted Value Remarks
+143.26E-03 E11.2 .14326 All subfields present
327.625 E7.3 327.625 No exponent subfield
4.376 E5 4.376 . No d in specification
-.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
1 ,
E6.3 10. Blanks are interpreted as zeros
f**s3$&v
"^
6-12 60497800 A
<**,*\
/Jfcv
Fw.d OUTPUT
The F specication outputs a real number without a decimal exponent.
Fw.d
w is an unsigned integer which designates the total number of characters in the eld including the
sign (if negative) and decimal point, w must be > d + 2.
d species 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 eld is too short, all asterisks appear in the output eld.
If the eld is longer than required, the number is right justied 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 specication 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:
Value of A FORMAT Statement PRINT Statement Printed Result
+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 specication 1H is the carriage control character.
Fw.d INPUT
On input F specication is treated identically to the E specication.
60497800 A 6-13
Examples of the F format specication:
Input Field Specification Converted Value Remarks
367.2593 F8.4 367.2593 Integer and fraction field
-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
««3^\
.-^^*\
Gw.d INPUT
Input under control of G specication is the same as for the E specication. The rules which apply to the E
specication apply to the G specication.
Gw.d
w
d
Example:
Unsigned integer which designates the total number of characters in the eld including
E, digits, sign, and decimal point
Number of places to the right of the decimal point
READ (5,11) A,B,C
11 FORMAT (G13.6.2G12.4)
/^^\
<^S5\
Gw.d OUTPUT
Output under control of the G specication 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.
6-14 60497800 A
>S^V
Jp"*»\
Gw.d
wUnsigned 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)
YES contains 77.132
Output: b77.1bbbb 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)
EXIT contains 1214635.1
Output: .121E+07
Example:
READ (5,50) SAMPLE
WRITE (6,20) SAMPLE
20 FORMAT (1X,G17.8)
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
0^r\ 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
indenite, an I is printed in the eld; 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)
.11111111111D+06 .22222222222D+06 .33333333333 D+06
The specication Dw.d produces output in the following format:
- 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
Most signicant digits
Digits in the exponent
a...a
ee
Dw.d INPUT
D conversion corresponds to E conversion except that D replaces E at the beginning of the exponent
subeld.
The following diagram illustrates the structure of the input eld:
^^K
0*3^k
^§N
r^*^\
input field
+
digit D or E .
integer
subfield
fraction
subfield
exponent
6-16 60497800 A
/ S ^ v
Ow INPUT
Octal values are converted under the O specication.
Ow
w is an unsigned integer designating the total number of characters in the eld. The input eld may contain
a maximum of 20 octal digits (0 through 7). Blanks are allowed and a plus or minus sign may precede the rst
octal digit. Blanks are interpreted as zeros and an all blank eld 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 1 0 1 2 2
Input storage (octal representation):
P00000000003737373737
00000000666066440444
77777777777777777777
Ow OUTPUT
The O specication is used to output the internal representation in octal.
Ow O w.d
w is an unsigned integer designating the total number of characters in the eld. 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
100 FORMAT (1X,04)
location P 00000000003737373737
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 specied, 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.
Example:
I =-11
WRITE (6,200) I
{AC53F93D
,/r^^\
Output would appear as follows:
bb77777777777777777764 ^
The specication Ow produces a string of up to 20 octal digits. Two octal specications must be used for variables
whose type is complex or double precision. /s^
Zw INPUT and OUTPUT ^
Hexadecimal values are converted under the Z specication.
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 rst hexadecimal digit.
Input values are stored right justied with zero ll. 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:
1 6 8
/ ^ s \
6-18 60497800 E
JP\
Location A:
O0OOOOO0OAC53F9
<§&&*.
WRITE 30,A,B
30 FORMAT (1X,Z3.1X,Z3)
0&\
Output:
0^\ 3F9 03D
Aw INPUT
/SEN
0iS\
jfftSav
Location B:
00000000000003D
The A specification is used to input character data
Aw
w is an unsigned integer designating the total number of characters in the field.
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)
60497800 E 6-18.1/6-18.2
/&^.
/$^ \
Z^
Input record:
jp\
/^K
/example
When EXAMPLE is read it is stored left justied 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 1 3
f'SPECIFICATION
In storage:
12345678910
|(Ml|C|VW0iN|
READ (5,10) L,M,N
10 FORMAT (A10.A10.A5)
Input record:
THIS IS AN EXAMPLE
^l
f
| 1 0 1 0
In storage:
12345678910
Me|x|a[mf^e
N| tKJNfOJW
Aw OUTPUT
The A specication 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 eld. 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)
In storage:
r"^S5\
Characters EXAM are output
If w is greater than 10, the characters are output right-justied in the eld, with blanks on the left. For
example, if M in the previous example is output with the following statements:
WRITE (6,400)M
400 FORMAT (1X,A12)
<<<R"\
Output is as follows:
bbEXAMPLEbbb b = blank
Rw INPUT
w is an unsigned integer designating the total number of characters in the eld. The R specication is the
same as the A specication unless w is less than 10. If w is less than 10, the input characters are stored
right-justied, with binary zero ll on the left.
Example: . ,
READ (5,600) MOO.JAY "
600,FORMAT(R10,R5)
Input record: , .,
/!^V
'RESULTS m
\'ib
In storage:'.
rJTEST|
MQO, |E}E|SlUrjIlSjb|0|F|
JAY [ft b = blank
/K ? \
6-20 60497800 E
Rw OUTPUT
Rw
w is an unsigned integer designating the total number of characters in the eld.
This specication is the same as the A specication unless w is less than 10. If w is less than 10, the right
most characters are output. For example, if JAY from the previous example is output with the following
statements:
WRITE (6,700) JAY
700 format (1X,R3) Characters EST are output.
Lw INPUT
The L specication is used to input logical variables.
Lw
w is an unsigned integer designating the total number of characters in the eld.
If the rst non-blank character in the eld is T, the logical value TRUE, is stored in the corresponding list
item, which should be of type logical. If the rst non-blank character is F, the value .FALSE, is stored. If the
rst non-blank character is not T or F. a diagnostic is printed. An all blank field has the value .FALSE.
Lw OUTPUT
Lw
w is an unsigned integer designating the total number of characters in the eld.
Variables output under the L specification should be of type logical. A value of .TRUE, or .FALSE, in
storage is output as a right justied T or F with blanks on the left.
^ Example:
/m\ LOGICAL l,J,K
\ I = . T R U E .
J = .FALSE.
K = .TRUE.
r WRITE (4,5) l,J,K
5 FORMAT (3L3)
0^* Output:
bTbbFbbT
SCALE FACTORS
The scale factor P is used to change the position of a decimal point of a real number when it is input or
output. Scale factors may precede D. E. F and G format specications.
60497800 E 6-21
nPDw.d nPDw.dEe nPDw.dDe
nPEw.d nPEw.dEe nPEw.dDe
nPFw.d
nPGw.d.
rip
Fw.d SCALING
INPUT
The number in the input eld is divided by 10n and stored. For example, if the input quantity 314.1592 is
read under the specication 2PF8.4, the internal number is 314.1592 X IO"2 = 3.141592. However, if an
exponent is read the scale factor is ignored.
rffrsifev
n is the scale factor which can be any integer constant, w is an unsigned integer constant designating the
total width of the field, d determines the number of digits to the right of the decimal point. ''*%.
A scale factor of zero is established when each FORMAT statement is rst referenced; it holds for all F,E,G,
and D field descriptors until another scale factor is encountered. 'm\
Once a scale factor is specied, it holds for all D, E, F, and G specications in that FORMAT statement
until another scale factor is encountered. To nullify this effect for subsequent D, E, F, and G specifications, ***\
a zero scale factor (OP) must precede a specication.
Example: ^
15 FORMAT(2PE14.3,F10.2.G16.2,0P4F13.2)
The 2P scale factor applies to the El4.3 format specication and also to the F10.2 and G16.2 format
specification. The OP scale factor restores normal scaling (10° = 1) for the subsequent specification I
4F13.2. |
"*l
6-22 60497800 A
OUTPUT
The number in the output field is the internal number multiplied by 10n. In the output representation, the
decimal point is fixed; the number is adjusted to the left or right, depending on whether the scale factor is plus or
minus. For example, the internal number-3.1415926536 may be represented on output under scaled F specifications
as follows:
(-
c
c
(
-1PF13.
F13.
1PF13.
3PF13,
6)
6)
6)
6 > -
•«
-3«
-31.
3141.
>314159
.141593
•415927
,592654
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 4) -.0003E+04
(-1PE20. 4) -.0314E+02
( E 2 0 . < ) -.3142E+C1
( 1PE20. 4) -3.1416E+G0
( 3PE20, 4) -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)
( 6 2 0 . 6 1
( 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<ii59
<-3PG20. 6)
(-1PG20. 6)
( G 2 0 . 6 )
C 1PG20. 6)
( 3PG20. 6)
( 5PG20. 6)
-.0G0314E+Q0
-.031416E-02
-.314159E-03
-3.141593E-04
-314.1593E-06
-31415.93F-08
X SPECIFICATION
The X specication is used to skip characters in an input line or output line. On output, any character
positions not previously lled during this record generation will be set to blank. It is not associated with a
variable in the input/output list.
nX Number of characters, n, to be skipped. An optional plus sign may precede n.
OX is ignored, X is interpreted as IX. The comma following X in the specication list is optional.
-nX Back up n characters, will not back up beyond the rst column.
Example:
WRITE (6,100) A,B,C
100 FORMAT (F9.4,4X,F7.5,4X,I3)
Output record:
-342.743bbbb1.53190bbbbb22
on input n columns are skipped.
Example:
READ (3,11) R,S,T
11 FORMAT (F5.2, 3X, F5.2, 6X, F5.2)
or
11 FORMAT (F5.2, 3XF5.2, 6XF5.2)
Input record:
A = -342.743
B = 1.53190
C = 22
b is a blank
/ ^ £ \
/l4.62bb$13. 78bC0STbl5.97
6-24 60497800 D
.rfS^V
/f^S
In storage:
R 14.62
S 13.78
T 15.97
Example:
INTEGER A
WRITE (1,10) A,B,C
10 FORMAT (I2.6X,F6.2,6X,E12.5)
Result:
A contains 7
B contains 13.6
C contains 1462.37
7bbbbbbb13.60bbbbbbb.146237E+04
0S\
nH OUTPUT
The H specication is used to output strings of alphanumeric characters and, like X, H is not associated with
a variable in the input/output list.
nH
n Number of characters in the string including blanks.
H Denotes a Hollerith field. The comma following the H specification is optional.
For example, the statement:
WRITE (6,1)
1 FORMAT (15HbENDbOFbPROGRAM)
can be used to output the following on the output listing.
END OF PROGRAM
Examples:
Source program:
WRITE (3,20)
20 FORMAT (28HbBLANKSbCOUNTblNbANbHbFIELD.)
produces output record:
BLANKSbCOUNTbl NbANbHbFI ELD.
Source program:
WRITE (2,30)A
30 FORMAT (6HbLMAX=.F5.2)
A contains 1.5
/8sSS>
60497800 A 6-25
produces output record:
LMAX=b1.50
nH INPUT
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 eld. This specication need not be separated from
other specications by commas. If the Hollerith eld is empty, or invalidly delimited a fatal execution error
occurs, and an error message is printed.
An asterisk cannot be output using the specication * *. 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
/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 (2,10) '^
10 FORMAT (27Hbbbbbbbbbbbbbbbbbbbbbbbbbbb)
Input record: "^
r
/*^\
/fiS^s
The H specication or-?*..; -^ could be used to output this correctly:
/0Ofc\t
PRINT 1
1 FORMAT (7H ABC*DE)
Output appears as follows: ABC*DE
PRINT 2
2 FORMAT (=#= ABC*DE=#
Output appears as follows: ABC*DE
^ can be represented within #... # by two consecutive -j* symbols.
Example:
PRINT 3
f^ 3 FORMAT (^ DON =£#T=£)
Output examples:
0^\
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:
S Q R T 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 specication 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*...-^ specication.
60497800 A 6-27
t
Jh IfOkMAT statements,^Ihe";*...* or $& specification is changed to"rill;., at compile jtoe;.'T^s;c^nversion
does^ not;ocbur with-,variable format s^pecificatioris. '"*',, ' '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
eld specication 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:
r**m$\
WRITE (2,10) 1
10 FORMAT (6X, 7HHEADING / / / 1X, 5HINPUT, 7H OUTPUT)
Output:
HEADING line I
(bl a nk) l ine 2
(bl a nk) l ine 3
input OUTPUT line 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:
/S^\
/|K\
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.
WRITE (3,11) A,B,C,D
11 FORMAT (2E10.2/2F7.3)
In storage:
A -11.6
B .325
C 46.327
D -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 line I
(bl a nk) lin e 2
46.327-14.261 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 specications can be repeated by enclosing the group in parentheses and prefixing it with the repeti-
zpg\ 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
f*^\
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.;
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 nal 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:
RESULTS _____ line 1
(blank) line 2
3.62 -4.03 -9.78
-6.33 7.12 3.49
6.21 -6.74 -1.18
(blank) line 3
(blank) line 4 ^^s
line 5
line 6
l i n e 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
0s\
The rst 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
rst character is listed as data.
The printer control characters are as follows':
J0^\
Character Action
Blank Space vertically one line then print
0Space vertically two lines then print
1Eject to the first line of the next
page before printing
+No advance before printing; allows
overprinting
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)
/|SS!\
FORMAT (1H1,I5*RESULT = \F8.4)
FORMAT (*1\!4,2(F7.3) )
FORMAT (1X,I4,G16.8)
'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</>)
D O 3 0 I * 2 t 8 ^
IF (I EQ* 4 »OR» I .EQ. 6) 40*50
50 PRINT 60
6 0 F O R M A T ( 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 A T ( l H O t 5 X » * B E G 1 N T I C T A C T O E * ) ^
STOP
END
Output
HE*E WE ARE AT THE TOP OF A NEW PAGE
BEGIN TIC TAC TOE
Tn SPECIFICATION
This specication is tabulation control.
Tn
n Unsigned integer. If n = zero, column 1 is assumed.
8 8
S18S8S88SS
. 8 8 . / ' s % .
SSSS888S88 '
IS
8 8 ySSs
//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*®*.
6-32 60497800 A
,«ffl-s
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.
0^s,
0^*>.
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:
5 7
PROGRAM TEST (0UTFUT)
1FORMAT <12(10H0123456789)1
PRINT 1
PRINT 60
60 FORMAT <T8Q,*COMMENTS*,T60,*HEA0ING4*,T40t
( *HEADING3*,T20,*HEADING2*,T2>*HEAOING1*>
FRIMT 10
10 FORMAT <20X»THIS IS T^E ENO OF THIS RUN*T52*.«
FRIKT 1
STOP
END
HONEST*)
lf3f-»S67Mtimm69O1234S6ramm:WI9liC34S6?690m^
HEAQXN61 HEADINGS HEA0INSI HEAOXMC* COMENTS
1HXS XS THE CN0 OP THIS RUN ...HONEST
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 specication 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*
O U T P U T S A S " • • V 5 / ) _
PRINT 20» RFORMAT* NUM ^
20 FORMAT (T8* "FORMAT SPECIFICATION TAKEN FROM VARIA6LE RFORMAT* NUM
- OUTPUTS AS * V5)
STOP <*>^\
E N D J
Output: i
FORMAT SPECIFICATION TAKEN FROM VARIABLE AFORMAT! NUM OUTPUTS AS 01234
FO R M AT S P E C I FI C AT IO N TAK E N F R O M VA R I A B LE RF O R M AT I N U M OU 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 specication.
'.■■ " ' ' ^ \
Example:
PROGRAM EQUALS (OUTPUT)
0*^\
'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 rst repetition, and retains that value until the current
repetition count is completed.
6-34 60497800 H
PROGRAM EQUALS (OUTPUT)
INTEGER WHO)
DATA »iVl*2*3*4*5»6*7*8*9*«0/
NUM = 1 OHO123456789
00 10 I « 1*10
10 PRINT 20* WU>9 NUM
20 FORMAT (T30» A>)
STOP
END
/$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:
PROGRAM VEQUALS (OUTPUT)
INTEGER FORMATS)* W(10)
DATA FORMAT/IRA* 1RR/* W/lt2t394f5*6t79899»]0/
/SSN
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>*
20 FORMAT (T20* V*>
STOP
END
NUM
0^s
60497800 A 6-35
Output: 0
01 t*^mP\
0 1 2 " >
0123
012345 1
0123456
01234567 ^
012345678 1
0123456789
0123456789 ^
123456789 1
23456789
3456789
456789
56789
6789
789
89
9
EXECUTION TIME FORMAT SPECIFICATION
Variable format specications 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 specication 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 specications enclosed in parentheses, but
without the word FORMAT or the statement label.
For example, an input record could consist of the characters:
f<E7.2.G20.5,F7.4,I3)
The name of the array containing the specications is used in place of the FORMAT statement number in the
associated input/output statement. The array name species the location of the rst word of the format
information.
For example, assume the following format specications:
(E12.2,F8.2.I7,2E20.3,F9.3,I4)
This information on an input record can be read by the statements of the program such as: ^^s.
DIMENSION IVAR(3)
READ (2,1) IVAR ^^
1 FORMAT (3A10) '
6-36 60497800 A
/I-*\
/ff^^.
/sp^\
j^\
The elements of the input record are placed in storage as follows:
IVAR(1) (E12.2.F8
IVAR(2) 2.I7.2E20.
IVAR<3) 3.F9.3.I4)
A subsequent output statement in the same program can refer to these format specications as:
WRITE (2.IVAR) A,B,I,C,D,E,J
Which produces exactly the same result as the statements:
WRITE (2,10) A,B,I,C,D,E,J
10 FORMAT (E12.2,F8.2,I7,2E20.3,F9.3,I4)
60497800 A 6-37
/^
<*%
r*
1
^
PROGRAM UNITS, PROCEDURES, AND OVERLAYS
j**8fcv A program unit consists of FORTRAN statements, with optional comments, terminated by an END statement.
A main program is a program unit that does not begin with a SUBROUTINE, FUNCTION, or BLOCK DATA
statement. Normally, a main program begins with a PROGRAM statement, but this statement can be omitted.
A subprogram is a program unit that begins with a SUBROUTINE, FUNCTION, or BLOCK DATA statement.
An executable program contains one main program with or without subprograms. A program unit containing
no FORTRAN statements other than an END statement is considered a null program; it is diagnosed and
ignored.
/P^v
A subprogram is defined separately and can be compiled independently of a main program. If the subprogram
begins with a SUBROUTINE or FUNCTION statement, it is a procedure subprogram and can accept and use
zero, one, or more values through a list of arguments, through common, or both. If the subprogram begins
with a BLOCK DATA statement, it is a specification subprogram.
A procedure is a procedure subprogram, statement function, intrinsic function, or basic external function.
Intrinsic functions and basic external functions are FORTRAN supplied procedures and are available to any
programmer (see section 8). Statement functions and procedure subprograms are supplied by the programmer.
The differences between function and subroutine specification and use are summarized in table 7-1.
TABLE 7-1. DIFFERENCES BETWEEN A FUNCTION AND SUBROUTINE SUBPROGRAM
/0^\
Function Subroutine
How Used The name appearing in an expression is A CALL statement is used as
used as the reference. the reference.
Arguments One or more arguments must be included. Arguments need not be present.
How Typed Name is typed implicitly by first letter No type is associated with the
or explicitly by the type designation name.
appearing before the word FUNCTION.
Functions return a single value through the function name. Function subprograms defined by the programmer
also can return values through a list of arguments, through common, or both.
Table 7-2 summarizes the terminology of the overlapping categories of procedures and subprograms.
60497800 A 7-1
TABLE 7-2. PROCEDURE AND SUBPROGRAM INTERRELATIONSHIPS
/*^5\
Statement Intrinsic Basic
External
Function
Function Subroutine Block Data
Function Function Subprogram Subprogram Subprogram
Procedure yes yes yes yes yes no
External procedure no no yes yes yes N/A
Subprogram no no no yes yes yes
Function yes yes yes yes no no
External function no no yes yes N/A N/A
Who defines user compiler compiler user user user
Where defined within
program unit
compiler library external to
calling pro
gram unit
external to
calling pro
gram unit
external to
calling pro
gram unit
N/A = not applicable
/£*~*$\
S0*S*$\
Programmer written procedures (statement functions, function subprograms, and subroutine subprograms) are
discussed below as a group. FORTRAN supplied procedures (intrinsic functions and basic external functions)
are discussed in detail in section 8. The only subprogram that is not a procedure is the block data subpro
gram. Since it is not executable, it is discussed separately.
MAIN PROGRAMS
A main program can contain any FORTRAN statements except FUNCTION, SUBROUTINE, ENTRY or BLOCK
DATA; it should have a PROGRAM statement and an END statement: it must have at least one executable state
ment. One main program is required in any executable FORTRAN program. No program can have more than one
main program, except an overlay structured program, which has one main program in each overlay.
PROGRAM STATEMENT FORMAT
PROGRAM name (fpar1ffpar2,.... ,fpar_)
/ffSigjf.
name Symbolic name (1 to. 7 letters and digits, beginning with a letter). Cannot be used elsewhere
in the program as a user-dened name.
fparj The fpar can be any of the following forms:
7-2 60497800 D
/SB\
j#3N
/^^\
file File name (1-6 letters or digits beginning with a letter) for each file required by the main
program or its subprograms; the maximum number of file names is 50.
file=n n' is an integer or octal constant specifying the buffer length; default length is 2003 octal
words.
file=/r r is the maximum length in characters for list directed, formatted, and NAMELIST records;
default limit is 150 characters.
file=n/r n/r defines both buffer and record lengths.
file^file^ Filea is made equivalent to previously defined fileu.
In a program structured for overlays, the fparj parameter list is used only in the PROGRAM statement for the
main overlay. It is not used in primary and secondary overlay PROGRAM statements.
PROGRAM STATEMENT USAGE
The PROGRAM statement defines the program name that is used as the entry point name and the object deck
name for the loader. Optionally, the PROGRAM statement can declare files that are used in the program and
0^ in any subprograms that are called. If this statement is omitted from the main program, the program is as
sumed to have the name START, and two files named INPUT and OUTPUT.
rAll file names used in standard FORTRAN input/output statements (including mass storage subroutines) must
be listed in the PROGRAM statement. File names referenced by CYBER Record Manager interface subroutines
t must not be listed in the PROGRAM statement. If a file name is referenced in a standard FORTRAN input/
[ output statement in a main program, but is not specified in the PROGRAM statement, a warning diagnostic is
issued at compile time. If a file name is referenced in a standard FORTRAN input/output statement in a sub
program, but is not specified in the PROGRAM statement of the main program, a diagnostic is issued when
f^ the file is used at execution time.
File names on the PROGRAM statement must satisfy the following conditions:
0&\
' The le name INPUT must be declared if a READ statement without a unit designator is included
in the program.
f The le name OUTPUT must be declared if a PRINT statement without a unit designator is
included in the program.
0^ The file name PUNCH must be declared if a PUNCH statement without a unit designator is in
cluded in the program.
The file name TAPEu (u is an integer constant 0-99) must be declared if any input/output state
ment involving unit u appears in the program, and u is an integer value. At execution time, if u
is a variable, there must be a file name TAPEu for each integer value u assumes.
FORTRAN input/output routines add the characters TAPE as a prefix to the unit number to form the file
name. TAPE3 is the file name assigned to unit;number 3 and TAPES is the file name assigned to unit
number 5. TAPE5 and TAPE05 do not specify the same file name.
rn is ignored if specified in a program run under SCOPE 2.
60497800 B 7-3
ySSsiy
TAPEu refers to a le located on rotating mass storage unless specied otherwise in the job deck before the
program is executed. The le is temporary unless made permanent by the user.
FORTRAN input/output statements use the buffer areas established by the le name specied in the PROGRAM
statement. The buffer length can appear only with the rst reference to the le in the PROGRAM statement.
A buffer length of zero should be specied for a le referenced by a buffer statement, unless the le is a con
nected le or the le description has been changed by a FILE control statement. Since buffered records are
transmitted directly into and out of central memory, eld length of the program is reduced for each le
declared with zero buffer length in the PROGRAM statement.
For les not referenced by BUFFER statements, the following values of n^ are minimal if default record and
block types are usedT^
n=number of words in the largest record plus one.
Large records and sequential reading/writing execute faster with a larger
Minimum Value of n
For terminals: n=number of
| For mass storage
input/output les:
n>65. Large
buffer.
For sequential les: Format
SI tape
I, X tape
S tape
L tape
mass storage
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 specied for les referenced in list-directed input/output statements. This
specication creates a separate working storage area for the le, which is different from the default area. If
the default area is used, input/output to other les destroys any data remaining after a list directed read.
Care should be taken when specifying a record length for le OUTPUT that the length is not so short as to
inhibit output of any run-time diagnostics.
When le names are made equivalent, the buffer length and record size specied apply to both les.
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 le 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 le
INPUT.
^Z£%\
^
^
fDoes not apply to SCOPE 2.
ttSee section 16 Input/Output Implementation.
7-4 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
/fp^v
BLOCK DATA
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:
j"*-"**.
BLOCK DATA ANAME
COMMON/CAT/X,Y,Z/DEF/R.S.T
COMPLEX X,Y
DATA X,Y/2*((1.0,2.7))/,R/7.6543/
END
Z is in block CAT and S and T are in DEF, although no initial data values are defined for them.
/fSsv 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)
SUBROUTINE name (pvp2r.'..#pn), RETURNS (b^b. V'bm>
SUBROUTINE name, RETURNS (b^b- ,..., bj
y^^v
(•^iaN
z<^sy
name
Pi
Symbolic name of the subroutine.
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 RETURN
10 CALL ERR0R1 END
20 RESULT=(A*CAT) +375.2-ZER0
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 Subprogram yf^^V
.CALL PGM1(A,B,C)
.XRETURNS (5,10)
5 B=SQRT(A*C)
10 CALL PGM2 (D,E)
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
This example illustrates the use of the RETURNS list as well as the use of the; normal
:RETURN'-statefnerit.'-:;' ""'"-';
FUNCTION SUBPROGRAM
7
/
name
FUNCTION name (p1 pn)
type FUNCTION name (p, ..... pn)
Symbolic name of the subprogram.
XSs^V
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).
/"J"-a\
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.
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 Subprogram
DIMENSION ARY (5,5)
10 RES=DIAG(ARY,5)**2
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 7-9
/fSraPy
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.
STATEMENT FUNCTION
^f^v
n
name
Pi' .P,
expression
name (p1 ,p2,p3,..., pn) = expression
Type of the function is determined by the type of the function name.
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
XS"\
A statement function is a user-dened, single-statement computation and applies only to the program unit containing
the definition. Since the statement function only denes the function, the value is computed when the function is
referenced and the actual arguments are substituted for the dummy arguments in the denition.
During compilation, the statement function denition 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 efciency.
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)
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.
/*^i^\
0^^K
7-10 60497800 E
/p*\
Examples:
Statement Function Definitions Statement Function References
ADD(X,Y,C,D)=X+Y+C+D RES1=GR0SS-ADD(TAX,FICA,INS,RES3)
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)
COMPLEX Z RESULT=(Z(BETZ,GAMMA(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:
ROOT (A,B,C)=(-B+SQRT(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
not appear in COMMON, EQUIVALENCE, or DATA statements within a program unit. *^
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 denition of either in the referenced subpro
gram is prohibited.
7-12 60497800 C
0^
Example 1:
Calling Program Subprogram
/|S!S
W(I,J)=FA+FB-GRATER(C-D,3*AX/BX)
FUNCTION GRATER(A.B)
IF (A.GT.B)1,2
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
Example:
PROGRAN 1 CMN <INPUTtOUTPUT)
COMMON NED (10)
READ 3* NED
3 FORMAT. (10X3) •:-•'- *.':'.'-'. •" - .-
- >CALti:JA\/&: ,'.•' '<'•-'., .' K
-.'. STOP * % ; , ^ ( i <
-: END-;-!
SUBROUTINE JAVG
CTHIS, SUBROUTINE COMPUTES THE AVERAGE
cCOMMON (I * * ' *<'**''**'
COMMON N(IO) ;
ISTORE » 0 - ' ' -
DO 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
OF THE FIRST 10 ELEMENTS IN
AVERAGE 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
Common can be used to transfer values between a calling program unit and a subprogram. Passing values )
through common is more efcient 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 subpro-
gram, the definition of either is prohibited.
/ssx
"SJ5ijk\
/S^s
,««%.
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 xed dimension
specications.
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-J0E(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
CALLING A SUBROUTINE SUBPROGRAM
,<fi^«S\
CALL name
CALL name (p1 ,..., pn)
CALL name (pt,...,pn), RETURNS (b., ,...,bm)
CALL name, RETURNS (^ ,....bm)
name
Pl« »Pr
,bm
Name of subroutine called.
Actual arguments which must correspond in order, number, type, and level -with those
specied in the SUBROUTINE statement.
Actual statement labels in the calling program unit that correspond in order and number
with the dummy statement label arguments in the SUBROUTINE statement. This
specication can be omitted if control returns to the statement immediately following
the CALL statement.
The total number of arguments of both kinds must not exceed 63.
A subroutine subprogram is executed when a CALL statement is encountered in a program unit. A subroutine
must not directly or indirectly call itself. The CALL statement transfers control to the subroutine and either
a RETURN or a RETURN i in the subroutine returns control to the calling program unit. If a RETURN is
encountered, control is transferred to the rst executable statement following the CALL statement. If
RETURN i is encountered, control is transferred to the statement corresponding to i in the RETURNS list.
(The RETURN statement is section 4 and Subroutine Subprogram in this section contain further details on
the RETURNS list.)
The CALL statement can contain actual arguments and statement labels. They must correspond in order,
number, type, and memory level to those in the subroutine subprogram denition.
The name in the CALL statement can be an alternate entry point in a subroutine subprogram, as specied in
an ENTRY statement, or a subroutine name. The subroutine name must not appear in any specication state
ment in the calling program except an EXTERNAL statement.
Actual arguments in a subroutine subprogram call can be any of the following: expression, constant, variable,
array name, array element name, subroutine subprogram name, basic external function name (not an intrinsic
y<^\
7-16 60497800 C
or statement function name), function reference (the function reference is a special case of an arithmetic
expression).
Example 1:
Calling Program
DO 5 I = 1,20
5 CALL GRATER (STACK(I),TEMP(I))
Subprogram
SUBROUTINE GRATER (A,B)
IF (A.LE.B) GO TO 2
1 B = A - B
RETURN
2 B = A + B
RETURN
END
#j*$^s
The subroutine subprogram GRATER is called 20 times since the CALL statement as the last statement in
a DO loop causes looping to continue until the DO loop terminal parameter, 20, is satisfied.
Example 2:
Calling Program
PROGRAM MAIN(INPUT.OUTPUT)
Subroutine Subprogram
10 CALL XC0MP(A,B,C),
XRETURNS(101,102,103,104)
101 CONTINUE
SUBROUTINE XCOMP (B1.B8.G),
XRETURNS(Al,A2,A3,A4)
. IF(B1*B2-4.159)10,20,30
10 CONTINUE
GO TO 10
102 CONTINUE
RETURN Al
20 CONTINUE
Return to 101
GO TO 10
103 CONTINUE
RETURN A2
3Q CONTINUE
Return to 102
0^*. GO TO 10
104 CONTINUE
END
IF (Bl)40,50
40 RETURN A3
50 RETURN A4
END
Return to 103
Return to 104
The values of A, B, and C in the CALL statement replace Bl, B2, and G in the SUBROUTINE statement
for use in the subprogram XCOMP. Statement numbers 101, 102, 103, and 104 replace Al, A2, A3, and
A4 in the SUBROUTINE and RETURN i statements.
60497800 A 7-17
USING THE ENTRY STATEMENT
ENTRY name
name is an entry point in a procedure subprogram.
The ENTRY statement defines an alternate entry point, which is other than the first executable statement, in
a procedure subprogram. The ENTRY statement can appear anywhere an executable statement can appear in
the subprogram except as the object of a logical IF or within the range of a DO where it is ignored and a
warning diagnostic is issued. A procedure subprogram can contain any number of ENTRY statements. The
first executable statement following ENTRY becomes the alternate entry point to the subprogram. ENTRY
statements cannot be labeled and cause a fatal-to-execution error in a main program unit.
In the subprogram, the entry name can appear only in the ENTRY statement and each name must appear
in a separate statement. A function entry name must be the same type as the name in the FUNCTION
statement. The entry name must be unique within the program.
In the calling program, the reference to the entry name is made just as if reference were being made to
the function subprogram or subroutine subprogram in which the entry name is contained. itie nahie can appear
in an EXTERNAL statement, and if it is a function subprogram entry name, in a type statement.
The dummy arguments, if any, appearing with the FUNCTION statement or SUBROUTINE statement do not
appear with Ae ENTRY statement, but.are assumed to be the same as for the main entry, point. .
to a function subprogram, the value of the function is the last value assigned to the name of the function,
regardless of which ENTRY statement was used to enter the subprogram. The function name is used to
returii results to the calling program even, though the reference was through an entry -name,, r
j*S^Sv
/*^\
. Example;;!:
Calling Program
COMMON VsiTi; (25)
Subroutine Subprogram
*]Main .entry point-
SUBROUTINE CLEAR (ARAY) .
\ » : . , ; V ' - y y " : - ' \ y , ; . ' / . ; - P p e n s i o n ; a r a y : ( 2 5 j
;. *\ '.'---''","...' v" '''"*",' do 10G ± - 1,25'^ ---
CALL CLEAR (SET1) .100 ARAY (I) - 0.0 '„"..-
.-"•-'.''-*•/ .' "" / '," ' ENTRY F I L L '- - ' ' , _ - : "' " - " ~ ' _.-" . '
".,.'..' '. 3."READ 2, VALUE, IPLACE-*——— Alternate entry point
CALL FILL (SET1)
2' FORMAT (10X, F7.2, 14)
ARAY (IPLACE) - VALUE
IF (IPLACE .GT. 24) RETURN
GO TO 3
END
7-18 60497800 A
00**\
00&\
00*^\
At some point in the calling program, a call is made to the subroutine: CALL CLEAR (SET1). The
array SET1 is set to zero and values are read into the array. Later in the program, a call is made again
to the subroutine CLEAR; but this time it is entered at the entry point FILL. When FILL is called,
further values are read into the array SET1 without rst setting the array to zero.
Example 2:
Calling Program Subprogram
RESULT=FSHUN(X,Y,Z) FUNCTION FSHUN(A,B,C)
RES2=FRED(R,S,T) 3 FSHUN=A*B/C**2
RETURN
ENTRY FRED
IF(A .LE. 702.) GO TO 3
FSHUN=-(C+A)/B
RETURN
END
When the FUNCTION FSHUN is entered at the beginning of the function, or through the ENTRY FRED,
the result will be returned to the calling program through the function name FSHUN.
Example 3:
FUNCTION CAT(A,B)
D0G-1O.+3.2
ENTRY DOG
The entry point name DOG is not valid because it has been used as a variable.
OVERLAYS
To reduce the amount, of storage required, and to make efcient use of eld length, a user can divide a
program into overlays. Prior to execution, the object modules of an overlay program are linked by the loader
^^^ arid placed on a mass storage device in their absolute form; no time is required for linking at execution time.
f (See Loader Reference Manual for more details.)
An overlay is a portion of a program written on a file in absolute form and loaded at execution time
C without relocation. As a result, the size of the resident loader for overlays can be reduced substantially.
Overlays can be used when the organization of core can be dened prior to execution.
S*v&\
f When each overlay is generated, the loading operation is completed by loading library and user
subprograms and linking them together. The resultant overlay is in fixed format, in that internal references
are fixed in their relationship to one another. The entire overlay has a xed origin address within the eld
f" length and, therefore, is not relocatable. The overlay loader simply reads the required overlay from the
overlay le andloads it starting at its pre-established origin in the user's eld length.
60497800 E 7-19
Overlays are loaded into memory at three levels: zero, primary, and secondary.
~7
Fixed starting
address for
primary overlays
Fixed starting
address for (1,n)
secondary overlays
Zero overlay (0,0)
Primary overlay (1,0)
Secondary overlay (1,1)
The zero or main overlay is loaded rst and remains in core at all times. A primary overlay may be loaded
immediately following the zero overlay, and a secondary overlay immediately following the primary
overlay. Overlays may be replaced by other overlays. For example, if a different secondary overlay is
required, the overlay loader simply reads it from the overlay file and places it in memory at the same
starting address as the previously loaded overlay.
Fixed starting address
for primary overlay
Starting address for
secondary overlay
(4,2)
Fixed starting address
Secondary
overlay
(3,1)
for secondary overlay
Zero (0,0)
Primary
overlay (4,0)
7-20 60497800 E
00^\_
/0$&\
/ ^ N
/sP^v
For example, (1.0) (2,0) (3,0) (4.0) are primary overlays. (3,1) (3,2) (3,5) (3,7) are secondary overlays
associated with primary overlay (3,0). Secondary overlays are denoted by the primary number and a non
zero secondary number. For example, (1,3) denotes that secondary overlay number 3 is related to primary
overlay (1,0). (2,5) denotes secondary overlay 5 is related to primary overlay (2,0).
A secondary overlay can be called into core only by its primary overlay. Overlay (1,0) can call (1,2); but overlay
(2,0) should not call (1,2), nor should overlay (0,0) call overlay (1,1).
Overlay numbers (0,n) are not valid (n > 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 rst 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.
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 sufcient eld length is reserved to accommodate the largest loaded over-
lav in addition to blank common.
Blank common is located at the top (highest address) of the rst 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 rst 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 le 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 le 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 le, 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 rst. 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
fname
iJ
origin
OVERLAY (fname,i,j,origin,OV=m)
Name of the le on which the generated overlay is to be written.
Overlay level numbers in octal without the B sufx. The numbers specied are not checked or
converted by FORTRAN.
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 specied 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 rst overlay directive must have a le name and ij must be 0,0. Subsequent directives can omit le name indicating
that the overlays are to be written on the same le. 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.
y^
^
^
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
/SSN
fname
recall
k
The name of the file or overlay in H format.
Overlay level numbers in octal with the B suffix, or the decimal equivalent.
Optional recall parameter.
Optional parameter specifying where the overlay is located; can be zero, non-zero,
or L format Hollerith constant.
60497800 D 7-23
r
^^\
/*^§v
If the k, parameter is zero or not specied, the overlay is included in the le named by fname. If a non-zero .
k parameter is specied, 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).
If 6HRECALL is specied 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 overlay. ;
The three parameters fname, i, and j must be specied 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.
E x a m p l e 1 : - • ' ~ " . : > . . • ' y ; " _ " ' ' " " . ' )
"CALLOyERLAY(lHA,l,0) '"'.'•',, '.'-' ' • ' • , V ; ! ' " " < " %
This statement causes a primary; overlay to be,loaded from the le harried A.
Example 2; ' '"*' , ' ' <' -' ' y '- * V ' , . ' ; ' - ', '* , f, " ;: . . -. . ' .1 V .
CALL OVERLAY(3HBJR,0,0,0,1) ...
This statement, which species the k parameter as a non-zero value, causes a main overlay with
' , ' the name BJ& to.be loaded from the global, library set. ,
-^
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 A 7-25
j^N
/<"S5s.
Example:,
Secondary Overlay
(1.1)
Source Deck
Primary Overlay
(1.0)
Source Deck
Main Overlay
(0,0)
Source Deck
Call to
Primary Overlay
FRANK 1,0
/S5N
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 le FRANK.
The LOAD(LGO) and NOGO control statements request the loader to load the program from the le LGO.
As the loader reads le 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 le 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 JOHN-
FTN.
f^ LOAD(LGO)
NOGO.
FRANK.
f^ 7/8/9
; OVERLAY (FRANK,0,0)
( PROGRAM LEO (INPUT.OUTPUT,TAPE1)
0 S \ 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 le in the absolute form. The control statement CATALOG creates a permanent le OVRLY
60497800 A 7-27
where the absolute form of the program will be kept. When the program is required again, the permanent le
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)
END.
SUBROUTINE B
')
""I
Main
Overlay
E N D ,
FUNCTION C
END
SUBROUTINE D
**\
END
REAL FUNCTION E
END
6/7/8/9
Main program A and the subroutines and functions B-E reside on the le REPEAT in absolute f< rm
They can be called and executed without recompilation by the control statements:
job card
ATTACH(REPEAT,OVRLY,ID=IBB)
REPEAT.
7/8/9
data
6/ 7 / 8 / 9
The operating system and Loader reference manuals give full details of the control statements which appear in
the program above.
7-28
V^Sv
/Ej^SV
y^^v
>lute f( rm.
yfjCWT^X
s
;h appear in
60497800 A
FORTRAN EXTENDED SUPPLIED PROCEDURES 8
J0$$&\
FORTRAN Extended provides certain procedures that are of general utility or difficult to express in
FORTRAN; they are referenced in the same way as user-written procedures. The three classes of FORTRAN
Extended supplied procedures are: intrinsic functions, basic external functions, and utility subprograms.
Utility subprograms include operating system interface routines and subroutine packages such as the mass
storage input/output routines, the CYBER Record Manager interface routines, and the Sort/Merge interface
routines.
INTRINSIC FUNCTIONS
0i^\
\ An intrinsic function is a compiler-defined procedure that returns a single value. It is inserted in the refer
encing program at compile time. The form of the intrinsic function reference is the same as the statement
-g^ function reference outlined in section 7.
When a variable, array, or statement function is defined with the same name as that of an intrinsic function,
-^ the user-supplied definition prevails.
t0£"s.
When a function subprogram is defined with the same name as that of an intrinsic function, the user definition
prevails only if, in the calling program unit, the name of the function appears either in an EXTERNAL state
ment or in an explicit type statement that changes the type associated with the intrinsic function.
Table 8-1 lists the intrinsic functions provided by FORTRAN Extended. The results of functions with the
type listed as no mode assume the type of the expression in which they are used; such functions cannot be
used as operands in logical expressions.
In tables 8-1 and 8-2, a single argument is denoted by A and multiple arguments by Al, A2, .... The
symbol 0 denotes a very small positive quantity; 0~ denotes a very small negative quantity.
BASIC EXTERNAL FUNCTIONS
A basic external function is a predefined procedure included with the FORTRAN Common Library. These
procedures are used to evaluate standard mathematical functions such as sine, cosine, square root, etc. A
basic external function is referenced by the appearance of the function name with appropriate arguments in
an expression.
A basic external function ordinarily is called by value; however, it is called by name 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 function, or if option T, D, or OPT=0 is specified on the FTN
control statement. (Section 17 contains a description of call by value and call by name.)
When a variable, array, or statement function is defined with the same name as that of a basic external func
tion, the user definition overrides the system definition.
60497800 D 8-1
/*^\
00
Z
O
P
<_>
p
a
0)
a
E
to
X
Y=ABS(X) J=IABS(I) DOUBLE A,B B=DABS(A) Y=AINT(X) l=INT(X) DOUBLE Z J=IDINT(Z) B=AM0D(A1,A2) J=M0D(I1,I2) X=AMAXO(l,J,K) A=AMAX1(X,Y,Z) L=MAX0(l,J,K,N) l=MAX1(AfB) DOUBLE W,X.Y,Z W=DMAX1(X,Y,Z) Y=AMIN0(l,J) Z=AMIN1(X,Y) L=MIN0(l,J) J=MIN1(X,Y) DOUBLE A,B,C C=DMIN1(A,B)
r-
<
O
_i
IX.
ii
T—
X
o o
|i
^ " I L Real Integer Double Real Integer Integer Real Integer
l _ _ O J
9 1 0 1
_ _ en o> -Q
( 0 C O O J » 3
<» cu +" {_ o
oc cc £ £ q Real Real Integer Integer Double
"5
O)
cc
Type of Argument
Real Integer Double Real Real Double Real Integer
_ _ . C D
c u a > - r
e n _ O ) _ - 3
Q J m O J C O - J
•_ 3 _ 8 o
£ cc £ oc Q Integer Real Integer Real Double
_,
CU
OJ
to
f
c
^ 2
•2 •=
E «
> z
CO ABS IABS DABS 1NI0IINI
IN IV
4-
4 - 4 —
Q 4
O Q
2 O
< 2 AMAXO AMAX1 MAXO MAX1 DMAX1 AMINO AMIN1 MINO MINI DMIN1
4-
4—
4—
r-
<
o
-J
u_
Number of Arguments
CM
CO
CO
I
CM
CO
CO
1
CM
—"
c
o
c
!S
Q
Sign of A times largest integer < | A1 for |A|< 248-1
Al (mod A2)
T"*"■■
< ;
* X «
CO CM
2 <
< :
2 < Conversion from integer to real
. _ §
f . _
c *->
S
H
0>
t->
3
~ ; o >
v t _ ;
_ 3 c o
< >
't*
CO
u
c
3
_. Remainder ing t Choosing largest value
OJ
_3
CD
O J >
.E tt
V I O i
O
O C O
C J i n
CO
o
li.
CO
CM
OJ
"O
3ro
u
OJ
cu
U
X
cu S3
OCO
c~"
v> ..
cu
OS3
"D ro
Ti ''
CO
SZ
Ti
/*s?*v
cu O f^
O) is
*- s. 00
C O I M •«* 00
JV>
CU <»-
c £
CM
o
-i*
CM
f- f c •M
'" E ro
rr 3
X o> D"
CO CT
u. CD
2: •_
91 C
c o
5 w ro
SZ
fCO
a, v>
</>
CD
sz
« c vt
cu
J3
u
CD
S3
ro-O CO
TJ o>
t u c
a> V)
3
\zz o)
CD T3
V)
3
Er-
« o
-l
C
s s
r o r o
«/>
O si
: > _
to
+-
C
CU <JJ
< c u fc
of o> _.
§*' ro
OJ
CO
cu
_ * C O
SZ sz
\- \-
^^v
8-2 60497800 J
/0^\
/fS\
CJ
CO
Z
O
H
O
(X.
O
CO
z
2
H
z
3
CQ
<
cu
a
E
CO
X
Ul LL
II
>
. N
— CM yT >-
> - £ x
O m z
2 ^ - o
__ S2 e° 55
w_2q
I I ~ O i i
n - ■■ > a n A=DIM(C,D) J=IDIM(I1,I2)
oc
o
11
<
oc
O
X
4
_J
CL
2
O
O
II
03
o o
l_T 3
• ^ U L
_.
CU
&
*-•
c
t - O J
o> ~z
_ a> -2
C O 0 ) 3
cu «_ o
DC £ Q
_.
CU
_ O )
C O «
0 ) £
oc £
CU
TJ
O
E
o
c
0J
T>
O
e
o
c
0J
TJ
O
E
o
e
CD
TJ
O
E
o
c
Type of Argument 75
cu
QC
_ c u
® X 3
~ 5 0 ? 3
OJ *_ O
OC £ Q
0J
"co cij
£_=
4-
a>
a
>
>.
c
CO
' 4 -
<D
a
>
T*
c
CO
4—
0J
a
>
c
C3
4—
OJ
a
• 4 -
>
c
ca
u
If
M
CO
u.
z z
Z g (5 _i
59 OC
O
oc
o
X
-1
0.
2
O
o
Number of Arguments
<- CM CM
CO
CO
1
CM
CO
CO
1
CM
CO
CD
1
CM
1—
c
.2
"E
OJ
a
E ,_•
o 1—
§ = 'O r o
_ B 0)
§ J_ E
S i C O C O
O _ w
O
.9?
'so
_:
4-"
5 4-
Ze CM
<<
C U T -
< 0 J
A CM £
< J- <
it: < V/
o <
Q £
.12 Z o)
I ** o
>
-?.<_£
__<
o <
SCO).
•? ;§ J.
T * O J
__<
DC <.
"~ ° 4t
S 2 =
I .-.2 o
> OT _. -
"._: x. «-
03 LU <
at
X t T -
o o
° +*
C O c
V a>
b3 8
.2 §
(A .2".
£ S
C 3
— u_
u.
0 1 -
t n O )
rrj W
1— O
cu
o
Ji
._. ^
' 3 5 $ Z
O 1 ^
a . Q
__ *-
1?
1 O -
o> E
- 1 C / 5
OC
O
OJ
>
'tn
3
CJ
X
UJ
OJ
E
a>
a
E
o
o
4-
o
§c
OJ
(1) x:
c-$.
oOJ
OT OJ *->
a</9
3o
Oa
cu
sz
CD
TJ
E
3
O.
TJ
C
o
O
>c
cO)
oOT
f-f" OJ
r sz
cu ft
F»
-j
O) CD
eo CO
XQ
OJ
a.
E
TJ
c
CO CO
o
uZ3
_.
oCO
>
(0
t_ 91
oSZ
OT u
OJ
Q. CO
CD
SZ
01 CD
S3
3->
OuCO
T7 CD
OOF
U . L L < 5
60497800 F 8-3
«**^v
c
o
CO
§
tu
o
I—I
CO
z
H
Z
a
CQ
<
' / > - " . * ' ' - y . > * " . < ' * ' . "
"*»- * j v ( * J . t * ! %
JM ,<?' .' .'•'"' ' y , ! tf^*''. 1 .^ ' x<
UJ _l
"5. . u . > - . t , y < , . t o * ' ' . " " s -1 <
E
CO
X
111
~ 3 C y « " , ' A ' Q - i n
^^
O I I
' « , . "> " - ' ' ' * , ' ' , s
.,< *. *t O 03
* > y. - s * '- 7 < x * .' ; y «
o o " ' - " t o - ' ' ' - V. , * ' , ' \ . . * ' < ; » ' ,
"^so. : - < i * - y * * * »* •' ><- ".to* "
' S - X *
. o -r\
: i . . . « •
"5i
cu
OC OC
' y*4*'\ * y '»''•*** " '"** * -. * v"*- - <.~'* y « * i , . ' < <
' " t ~ ~ " i ' ' V » * < ~ » " . " ' " ' - i " * ' ' . ' > .
! " O f . J * ' 1 * * ^ - 1 ' > ' < > , ' ' " * ' > * > ' -.
O cu * > . * ~ ^ * / f 1 ^ J ~ i < / t « V , V J . * f . * * " . * . *
Type Argum . to ! !.S'y . .',-'." *'** > „r v ^
* * ' ' ' s
S i . ; . " 0J
S3
3
cu
Q.
E
O
Qo
O
U* " % . ' - ' J » * ' ^ * ' ' * - ? ' ' • * ' '
' i " *
E
>2
i_' . _J -J
-2? ^ <- ., UJ
CO - j w y ^ i y , ' * « _ , , ! , ; 2 . ; , \ \ CO QC
,* r"y>:7* -.', '' - - _ -, - \;r> "' i *! " r
!i c - i ' ' « ' > ! ' ^ - , < '
- s i
Ii' c m - ; ' ' / , ' : . . - ; « - c ^_ __
, . i
3 w
z < •.; '",'." :.'
c
o
,cm " ,11 i*- c!,t 3 » - " _ Tf
< , « . ? = § * j » - s q » 4 ,
( 0 J O S - < / C 3 . c j j « c f , 0 ' . ; _ ; ,
c
OJ
Q
*2J cu _ -to o' fS ,OT *0 J_ tn
E ot ct +; $
ft ~" (0 4 - 11
' - ( ,
cu cu
.2 §
OT ..
c **O T 3 " C O E
9 1 O i - i
•c 2
_ §
— u.
_E
CO
_*
2
M £ 11
.— h- o ot —:
iS "E +- "o 2.
g S S _ ff
O CO CL CL <
cc o g
S tr a
o _ ! <
/ f S % .
a
3
O
/!^S
^S^v
TJ
C
3
O
jQ
S 3
3*—
OTJ
_.
OT
c
CD
E
-j
OT
at
_. aj
sz
_. +->
o
*-
TJ
CU
c
(1)
TJ OJ
cb
33
CD O)
(0 ro
1-
LL
X
CO
TJ
tl
ro
-1
CO
<'o
2CD
u.
*- O.
oCD
OT
3
to
a> TJ
ro
cu i_
-Z
HLL
/<f<^S
/^^v
8-4 60497800 C
z*-fe».
jJS8\.
0m*K
0^\
N_^
CO
§
>—l
H
U
U
t—<
C/3
Z
2
H
z
a
cu
a
E
CO
X
UJ
COMPLEX A D=AIMAG(A)
>- X
" J U J ,
ni -
3 Q
O ii
Q > COMPLEX C C=CMPLX(A1,A2) COMPLEX X,Y Y=C0NJG(X)
u.
z
<
QC
II
>
a .
LL.
O
o
_l
II
-5
o o
91 **P
M
•^ u. CO
cu
OC
a*
-3
3
o
a
cu
a
E
o
(J
cu
a
E
o
CJ OC
_.
OJ
OJ
OJ
•M
c
Type of Argument
cu
a
E
o
CJ
"<0
0)
OC
To
cu
OC
cu
a
E
o
O
cu
Q.
+-»
>•
C
CO
OJ
a
>•
M
c
CO
O
^ c
_5 E
E z
CO
UJ
—I
CO
a
-J
a.
2
CJ
CD
—j
z
o
CJ
1—
Z
<
U-
O
o
_J
Number of Arguments
-CM -—•»
^ 4 n *
c
o
|<S>
O
—- 1
II
*N_
CM CU
< t » -
15
4-
CD
II
<
CU
_.
OJ
C O
. _ ; C - ~
_ , a >
O T £ j . O J C - - .
, 3> ._"_: E .-
§ > . - * p 5 ? .- * X T " 5 > C O T 3
2 E o o >. g>
1 o "fi a, E g
K§_.*g;.., ;
''• «''& ''• '
-,S2 *; 2 _. J3
* J ° m o ~
c oj ro ° *"
fi- E a £
E <2 jo £ 2
|jglB.I«g
< . + 3 > a > c u Q .
*_
= 1
U
Ol i+-
co o
E " x c
- C O J |
a- a E
5 ro o «-
O c ( J <
1 C U t -
9 1 3 — ; c
CT £• 3 o
.E < O u_
co c Q c
8 o c o
9 1 O T ^ O T
Q . O C C J
H- CD CU CD
- a . E d .
OT 4-
c
o 22
*=: E x
l* 5 -2r o i a
Jft < E
£ _ o p
a ro o E
X O J _ o
LU cc £ u.
3 E g
o c j |
C J r o o ,
f °<
2 CU X
O §> Q.
1 o3 +-
z 2
C O J
E c
O O J
T J C O
r o c u
O C j Q
OT « ^_.
* •_ J > g OJ
« = C O O J U ; O J 0
T O > > C X Q .
M C O C O O J c u _ 5 *
i ; « 4 - t » _ > * - 3
O O c o O O o t
60497800 A 8-5
.0 )
a.
E
CO
' O Q
_ x x x <
£, uji ST uj 2:
STrJ X -J x
X * U J S : j * j
ii O ii O ii
N Q >- CJ oo
0Q
> xxx <
CD UJ CD. UJ (j
O * - O - J o
_j co _3 a. 3
< 2 Q ,2 o
ii 2 ii On
N Q >- O CQ
< LU 3
O Q,Q
CD UJ, 5
odo
-i 2} -J
II O ii,
00 Q LU
]-' '. LL
X UJ. s UJ Z
* " ' _ . _ J T Z
_=S°CO%CJ
CO 2 Q g n
ii O ii o q
*> a lu o o
- H"_
8s°8g8
° 5 a il »
ii Q ii O o
XOtUUU
: i
"JlJJ
<QX
XUJZ
z ^ <
i-2 Q
ii 2 A
OQ Q Q
d?u|
^uj75
S 2-55
w 2 Q
"2 A
m a q
' ui
S"i
< . 5c
xUjco
CO « O
o 2 Q
n O ii
CQ. Q Q
e
H fa
O J o >
- _ P
C O 3 C
c u O O
O C Q O
0 J O J
_ 5 a
c o = £
0 J O o
O C D o
CD
S3
« 2
_ O
OC o
0 ) C D
re 2 E
0 J o o
O C Q ( J
0 ) 0 )
c o = E
O J o o
O C Q C J
QJ
S3
« 2
QJ O
QC Q
0 J
•J3
ro 2
C D O
oc a
';-' cu
S3
15 3
C D O
oc a
S 1
91 I
t o O J
c o = E
Q J O O
O C Q O
t o 9 1
_ 3 a
c o 3 E
C D O O
0 C Q O
CD
S3
« 2
a j O
0C Q
O J O J
r o 2 E
Q J O O
O C Q C J
C D 0 J
C O = E
C D O o
O C Q C J
QJ
_t
o j O
O C Q
cu
« 2
c u O
OC Q
0 J i
S3
» 2
cu O
O C Q -
"o
X) o >
51 Q . Q _
Q . X X
X u j u j
O l d C J
CD CD "'cb
O o o
-l-l _J
< a o
O O
CD CD
33
< Q
z z
_ CO CO
c o Q o
CO CO
C O O o
o O C J
C J Q C J
X z
z < X ',.,
X z
£: CO
CO O
'" X *
X C O
co O
oo
- c u
2 i
If
C O C O _ _
,.
C ' ^ ' .
o
•v
•a
- -
«o- <**
C M C M X
0 0 C O ^
£ >- £v/
C D C U
*C cn
o j < c t X
_ 2 £ O J <
_o
C M C M C O
s v/ iv/v
O T O T
* * f c
C M C M C D
x £ x 5
I ? : x f c : 1 ^
< V/ x V/ V
* £ < " S T X >
o o
o o
.JZ
c
CO
4->
CO
CO
CM
• E <
," co
co
*_t
8<
13
E
OJ
C Q f a
To
'£<
c
CD
c
o
a
X
LU
i - _ .
3 ro
P O J
co o
Z _ l
b o i
o o
O - J
o *£
• - C O
+-• ._
is
oi o>
'i- .E
r- CO
CD
E c
c ' g _
O c r5
o> „> •-
r - O 2
•9 c
_ S,
1 =
1 1 =
"o
xt
—. 0 >
q. a>
> . E
X CO
"o
e »
c u c
> o
X O
CO 91
c3
OJ CO
ro
ECO
cx:
i->
CO
OT c
_.3CO
M
0J a.
_•
aro
4-
XO)
(U
CD
O
_J
OCO
^OT
QJ
u. _,
O3
M- 4->
a> QJ
_. l_
0J
x:
o
V
XCD
_.o-J
LL
,~3
—_fe CO
fe fc:
+
CU
o>
c91
CO
CO
cu
,c
f
rM
O T §
?* u.
CO f"
cCO
O)
CO O)
i- CO
h
ic
F4-
3
(1>
1-
CD CD
OQ
/£^5V
/C^V
^ci«^v
CJ CJ
8-6 60497800 F
(rfCS^w
0$£\
CO
Z
o
H
U
fa
<:
z
c-
H
X
fa
u
>—i
CO
CQ
fa
CQ
<
^^
1- UL CJ
LL CO
OC OC \-
sUJ LU CO H-
xII II II II II II
fa >- >-
<~ S
o .2
•«— ro CO ro CO ro CO
4 J O OJ OJ CD CD CD CD
OC OC OC QC OC OC
H fa
»—
«- s
° s ro CO CO ro ro ro
OJ a> CD CD CD CD
a, 3, CC cc CC OC OC OC
>. s
H <
.o 4—
"o CJ
x> <u LL LL CO
E | rr OC
& z LU LU CO CJ 1-
o *—
^ s
x> E ,_ ,- —. X- *- T - '
§ s,
£X
i-i
-rj *->
G
oCN
t - »
T J C O
C M C M
r-f
<*4*
•43 < * C D
C M | ^
* - > © X? r- CM CM CM
'3
ta 8. oj in"
<—^<CM
CM|^^
r 5 V
a <C O
< V
•E <
t o
< v
i / >
O <
< v
c
ro <.
?<=
aC O O
S
X B
*zt +=
c o
1 i _! -
o o>
f
CD
E
+-<
OJ
E .E 9 3 C
E z
u .2
i— si CD LL
9 r -
E 2
g c JS
o S
O ) J D D )
O O T
C O J 9 3
O c o >
O ) ' J fl O )
g c 3
0 S, o)
0 1 c O )
c 3 3 t 3 o £ > _ * Z c Q J ~ O 0 > " _ . r o Q >
oa fa LU LL O LU X < I-WQ r- CJ Q 1- 1- Q
o>
3
E
T)
TJ
O
<
I-
60497800 F 8-6.1/8-6.2
/*%
^
^
^
^
igKN
PQ
<
/f"^\
CD
a
E
CO
X
Ul
LL
S § 8 g 8
co 2 Q ^ ii
i i O t i o c j
>- Q UJ O CJ Y=ATAN(X) DOUBLE D,E E=DATAN(D) B=ATAN2(A1,A2) DOUBLE D,D1,D2 D=DATAN2(D1,D2) DOUBLE DM.D1.D2 DM=DM0D(D1,D2) COMPLEX C CM=CABS(C)
couj o
O J o
oca <-
<2 o
" O H
X Q L U
—.UJQ
£.o"z
E|_co
O I'
X O U I X=TAN(Y) DOUBLE D,E E = DTAN(D)
o .2
*->
C D U
a c
> 3
1- u-
C D O J
i 3 E
Q J O O
O C Q O
Q J Q J
_ - C J _ X I
C O 3 C O " 3
Q j O O J O
O C Q O C Q
cu
S3
3
O
Q
CO
OJ
OC
CD
_ J _
c o 3
CD O
Q C Q
QJ
XI
m 2
C D O
oc a
cu
XI
« 2
cu O
OC O
Type of Argument
C D O J
_ 5 a
C O 3 E
O J O o
O C Q O
Q J O J
_ - Q _ S 3
r o 3 r o " 3
0 ) 0 Q J O
OC Q oc a
cu
S3
3
O
Q
ru
a
E
O
CJ
Xi
« 2
Q J O
oc a
. .OJ ■■:'
: xi '
« 2
o j O
O C Q
CD -
S3
15 2
cu O
oc a
o
"o
S 3 0 )
11
C O Z
•*—
1 - H -
h- on oc
oc a o
a c o c o
c o a o
4—
*- ±~
4 — 4 — 4 —
. $ _ 4 4 C M
4 — Z C M Z
z < z <
< b < b
r - < 1 - <
< q < a
aas
a
O
2
Q
CO
OQ
<
CJ
MP
•Up MP
MP CO
co O
o <
< a
MP
ajjtMfl
MP MP
M P Z
..co
co <
< O
z <
< t
h* o
Number of Arguments
t - t - C M C M CM t—• -
c
2
I"j
91
Q
. 1 1
l - t - " o - —
8 $ S _ J
S c 2 3 §
o
£ A \
,-• cm
< < <
c c "
c o c o ^
t - i t - t «
O C J ^
i -
C O C O
CM
<
TJ
O
S
<
^ +
S3 CO
4- I I
CN
S5
OTO <
o _
cj
i_
CD
.E < .
OT _
CO
I s -
tl
<<
c
(0
Basic External Function
CD
Is
co oc
Ti
c
cu
OJ
c
ro
o
I-
<
O)
c
1_
QJ
Tt
C
to
E
OJ
OC
OT
_3
3
T>
O
2
CU
c
'ot
O
U
CJ
—.<
cu
c
"w
u
<
4o
| _ OT
E C D C
O OJ CO
co T2
. < u
+
oC
OJ
CM OT
zx:
<+-•
r- •i
<X
fc:
4- OJ
II o,__,
OJ fcs|CM
3 C
O) Ncm
E
t=|(M
. fc:
fc:|CM_.
C
i_
3
*-»OJ
i_
"x
o
CM
z
<
<
CO
c u x
1 _ t - i
t n C D
_ o >
5 3 a >
- = c
" ._
O O T
OJ
v _•
co
_ »
o ' S
- ; » . 2
^ OJ '
=! X
« > _
Q J c o
O >
s £
5 3
f c : _ ! X
- 5
CO
<
o
TJ
c
co
. <
O MP
" MP
MP
QJ
CO
J, CU OT §
O)
«* S
O ) r o
C U £ «
_§ QJ *-
Q. £ E
S C «"
CO CU
• C O T 3
£35
." ro _
- > £
£ c =
x : r - f
i-t bz to
c 5 -
- _ C M
OT' 1^
QJ _ 2.
3 Z <
"co < I-
3 T J
!- ro cm
oc z z
a < <
co 1- \-
o < <
Ex.
S5
»- ro
"x ro
1 * O T
O c o
3.2
^~ 3
<-o
OT
CO Xl^
« co'
fc:
+ 8
* s
cd Q
ro 0
CO CJ
3 C U
-, x;
MP
§ O
E "
O J O )
ro ro
_.
X3
c cu
0 x
cj *-
_ C D
_3
I 2
5 E
.E £
CO
T J O
V t °
OT
3 C O
OT £ CO
• 8
60497800 G 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.
Table 8-2 lists the basic external functions.
/-s®\
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 denes 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:
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 a unit designator (as defined in section 5). <
H is a Hollerith specification. /!^_
RANDOM NUMBER GENERATOR ^
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.
/^"§s
'RANF is an intrinsic function. /!y
8-8 60497800 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 DATE (a) or CALL DATE(a)^
rThe current date is returned as the value of argument a or of the function in the form lOHbmm/dd/yyb (under
NOS/BE 1, SCOPE 2) or lOHbyy/mm/dd. (under NOS 1), where B denotes a blank, mm is the number of 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.
JS~*N
SECOND(t) or CALL SECOND(t)^
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
Example:
CALL DISPLA (7H TIME = , STOP-START)
CALL REMARK (H)
Places a message in the dayle. 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 dayle, but they are replaced by blanks when displayed at the operator's console. If the rst character
is $, the message will ash at the console, except under NOS 1, which allows ashing messages only for system
origin jobs.
CALL SLITET(i,j)
'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
/^^\
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 rst character is $,
the message will ash at the console except under NOS 1, which allows ashing messages only for system origin jobs.
/s^s
/^^\
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. '"^
,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
i t i s o n . " ^
^^N
/J-*N
0^S
(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).
CALL OVERLAY(fname, primary, secondary, recall,k)
See section 7.
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
/*f^\
Word 1
Word 2
Word 3
Word n + 1 lfn.
1 7 1 1
noooo
lfn1 f 1 *
lfn2 f 2 *
' n *
FDoes not apply to SCOPE 2.
60497800 J 8-11
SP
n
lfn.
fn
Example:
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.
Number of files in following list, to a maximum of 42.
Name (in left-justified display code) of user mass storage files to be processed.
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.
DIMENSION IFILES(4)
IFILESO) = 30000B
IFILES(2) = 5LTAPE1 .OR. 10000B
IFILESO) = 5LTAPE2 .OR. 30000B
IFILES(4) = 5LTAPE3
CALL CHEKPTX(IFILES,1)
/C-JP^V
j^$$\
The names defined in the array passed to CHEKPTX must be the actual file names used at run time.
For more information, refer to the operating system reference manual checkpoint/restart discussions.
CALL RECOVR(name,ags,checksum,addr1,addr2)
**^i^?\
name
flags
Name of subroutine to be executed if flagged conditions occur (must be specified in an
EXTERNAL statement).
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.
/iSS\
:Not available under SCOPE 2.
8-12 60497800 J
/$p°^\
r
/ ^ \
004 Time or storage limit exceeded.
010 Operator drop, kill, or rerun.
020 System abort.
040 CP abort.
100 Normal termination.
200 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).
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 appro-
jiSN priate operating system reference manual for detailed information.
/ | E \
60497800 J 8-13
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.
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
entry chksum determines end of code to be checksummed
END
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
#*%$\
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.
/fS^K
0^^\
0£~$?K
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 r e a l d u m p
f = 2 i n t e g e r d u m p
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 # )
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.
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.
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:
X^\
y£I~£V
y^^sv
59 51 43 31 2 0 1 7
print
frequency
frequency
increment
print frequency
frequency increment
print limit detection
total NN user-specified
recovery address
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.
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.
jr-CE&SV
>+^$\
I 8-16 60497800 J
/eSffl.
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 species 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^- the specified severity. The severity of any error can be changed by a call
to SYSTEMC, however.
vjfpN
0$^\
60497800 J 8-16.1/8-16.2 |
./*%
1
^
^
^
1
^
^
~
0^\
rA/NA The A/NA bit is ignored unless a non-standard recovery address is specified;
it can be set only during assembly of SYSTEMC. When this bit is set, the
address in an auxiliary table is passed in the third word of the secondary
r argument list to the recovery routine. Each word in the auxiliary table must
have the error number in its upper 10 bits, so that the address of the first
error number match is passed to the recovery routine. An entry in the aux-
^sn iliary table for an error is not limited to any specific number of words.
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. A user-specified error recovery routine activated by a call to SYSTEMC can be canceled by a sub
sequent call with word 5 of the speclist set to zero.
rlf SYSTEMC has been called, an error summary is issued at job termination indicating the number of times
each error occurred since the first call to SYSTEMC.
^^ 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!®\
/!p"N
/ ^ \
i # ^ N
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.
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:
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:
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.
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:
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:
PROGRAM EXPECT(OUTPUT)
DIMENSION IRAY(6)
DATA IRAY /6 * (-0)/
C SET PRINT LIMIT TO ZERO
IRAY(4)=0
X = EXP(800.0>
X = EXP(-800.0)
C CALL SYSTEMC TO INHIBIT PRINTING OF ERROR 115
C. AND START ERROR SUMMARY ACCUMULATION
CALL SYSTEMC (115.IRAY)
PRINT *. jtjt
PRINT *,******SYSTEMC IS CALLED TO SUPPRESS PRINTING*,
+ j * O F E R R O R 1 1 5 *
X = EXP(800.0)
X = EXP'-SOO.O)
8-18 60497800 C
y^Ss
/*~Is
/^ZlK
^**\
••-®*N
Jfl~*\
/*J"©\
J^fei&S.
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
ERROR SUMMARY
ERROR TIMES
0030 0001
0115 0001
Program EXPECT illustrates a standard error recovery in a math library routine and how to suppress the print
ing of error message 115.
Example 2:
PROGRAM FXAMPL(TAPEUOUTPUT)
EXTERNAL ITSOK
DIMENSION NARRAY(6)
DATA NApqAY/6<M-1)/
NARRAY(l) * 0
NARRAY<5) = LOCF(ITSOK)
NARRAY(6) ~ 1
CALL SYSTEMC<6NARRAY)
NAMELIST/DATAI/A-jB
READ (It DATA!)
REWIND 1
NAMELIST/DATA2/AtB
READ (!• DATA2)
NAMELIST/DATAOUT/AtB
PRINT DATAOUT
STOP
END
SUBROUTINE ITSOK
PRINT 10
10 FORMAT (oODATA SET NAMED ABOVE NOT USED»)
RETURN
END
Input:
»DATA2
A - 3 . - *
B = 4 . »
J
60497800 C 8-19
j^SN
Output:
NAMELIST NAME NOT FOUND - DATA!
ERROR NUMBER 0066 DETECTED BY NAMIN« AT ADDRESS 000435
DATA SET NAMED ABOVE NOT USED
0*~$\
SDATAOUT
A " .3E*01»
B - .4E+01t
SEND
ERROR SUMMARY ^
ERROR TIMES
0066 0001
CALL LIMERR(lim) ^
lim Integer value; the program does not terminate when data errors are encountered until the
number of errors occurring after the call exceeds the value of lim.
NUMERR(n) A function that returns the number of errors since the last LIMERR call. Result type is
integer, n is a dummy argument which is ignored.
The subroutine LIMERR and function NUMERR enable the user to input data without the risk of termination
when improper data is encountered.
LIMERR can be used to inhibit job termination when data is being input with a formatted, NAMELIST, or list
directed read, or with DECODE statements. It operates only when data is encountered that would ordinarily
cause job termination under error number 78 ("ILLEGAL DATA IN FIELD") or error number 79 ("DATA
OVERFLOW"). LIMERR has no effect on the processing of errors in data input from a connected (terminal) le.
LIMERR initializes an error count and specifies a maximum limit (lim) on the number of data errors
allowed before termination. LIMERR continues in effect for all subsequent READ statements until the limit
is reached. LIMERR can be reactivated with another call, which will reinitialize the error count location and
reset the limit. A LIMERR call with lim specified as zero nullifies a previous call; improper data will then
result in job termination as usual.
When improper data is encountered in a formatted or NAMELIST read or in a DECODE statement with LIMERR
in effect, the bad data field is bypassed, and processing continues at the next field. When improper data is
encountered in a list directed read, control moves to the statement immediately following the READ statement. "^)
NUMERR returns the number of errors since the last LIMERR call. The previous error count is lost when
LIMERR is called, and the count is reinitialized to zero.
8-20 60497800 G
Example:
00?\
The following example illustrates the use of LIMERR and NUMERR to suppress normal fatal termination
when large sets of data are being processed.
/"~N
CALL LIMERR (200)
READ(1,125)(ARAY(I),I=1,1500)
125 FORMAT (3F10.5,E10.1)
IF (NUMERR(O).GT.O) GO TO 500
500 CALL LIMERR(200)
READd,125)(BRAY(I),I=1,1500)
IF (NUMERR(O).GT.O) GO TO 600
/"~J\
600 CALL LIMERR(100)
READ(1,230)(LRAY(I),I=1,500)
PRINT 99, NUMERR(O)
READ(4,127)(MRAY(I),I=1,500)
PRINT 99, NUMERR(O)
READ(4,225)(NRAY(I),I=1,50)
IF (NUMERR(O).GT.O) GO TO 700
700 STOP
END
When LIMERR is called, a limit of 200 errors is established. The number of errors is reset to zero. After
ARAY is read, NUMERR(O) is checked. If errors occur, the following statements are not processed and a
branch is made to statement 500. Had LIMERR not been called, fatal errors would have terminated the pro-
rgram before the branch to statement 500. At statement 500, LIMERR once more initializes the error count,
and ftYftmitinn rnntinni»c
i^^V
\ 60497800 E 8-21
Example:
i:
s:
/^§\
program exahpluape1,output)
dimension acard(5)
oata acard /-i. ,-2.,-3. , -4. ,-5./
:all limerr(2)
read(1,10) (acard(i),1=1,5)
FORMAT (F4.1)
PRINT 2u, NUMERR(fl)
FORMAT
PRINT
FORMAT
STOP
END
MHu, II, DATA ERRORS
;G, (ACARDCI),I=i,5)
( IX, F4.1)
FOUND*//) /^3^\
Input:
4 7 . 1
25./
48.3
24,6
91.2
Output: 25./
...t 12345a739u1234567S9012345679901234567ft90
ERROR OATA INPUT ILLLGAL DATA IN FIELD
ERROR NUMBER 7ft DETECTED BY INCOM= AT
3ALLEO FROM KRAKER= AT ADDRESS ii0Q345
CALLED FROM INPC= . AT ADDRESS 300075
CALLED FROM EXAMPL AT .INE 5
4 2 4 , 6
ADDRESS 300215
i^^\
,••....•12345b739C123456789u12345678931234567890
ERROR DATA INPUT
ERROR NUMBER 78
CALLED FROM KRAKER=
FROM INPC=
FROM EXAMPL
GALLED
CALLED
ILLEGAL DATA IN FIELD
DETECTED BY INCPM= AT
AT ADDRESS 000345
AT ADDRESS S0QG75
AT L I N E 5
*!•**
ADDRESS 000215
2 3ATA ERRORS FOUND
4 7 . 1
-2.Q
49.3
-4. ii
9 1 . 2
8-22 60497800 D
j|~Sy
I N P U T / O U T P U T S TAT U S C H E C K I N G
rFORTRAN Extended provides the capability of checking for an end-of-file or a parity error condition following
read operations via the functions UNIT, EOF, and IOCHEC
^\
Any of the following conditions encountered during a read returns an end-of-file status via the functions UNIT
or EOF:
End of section (in the case of file INPUT only)
^pes End of Partition
End of information
Non-deleted W format flag record
f Embedded tape mark
Terminating double tape mark
^ Terminating end-of-file label
Embedded zero length level 17 block
v The functions UNIT and IOCHEC return a parity error indication for every record within or spanning a block
containing a parity error; however, such an indication does not necessarily refer to the immediately preceding
^ operation because of the record blocking/deblocking performed by the Record Manager input/output routines,
c
8 Parity status can be checked on write operations that access mass storage files when the write check option
has been specified on the REQUEST statement for the file (SCOPE 2 Reference Manual). Write parity errors
for other types of devices (such as staged/on-line tape) are detected by the operating system, and a message
to this effect is written in the dayfile.
f^ UNIT(u,a.b)
The UNIT function is used to check the status of a BUFFER IN or BUFFER OUT operation for an end-of-
^ file or parity error condition on logical unit u. Parameters a and b are the first and last variable or array
elements, respectively, of the block of memory specified in the preceding BUFFER IN or BUFFER OUT
statement. When UNIT is referenced, the user program does not regain control until input/output operations
f* on the unit are complete. The function returns the following values:
-1. Unit ready, no end-of-file or parity error encountered on the previous operation
+0. Unit ready, end-of-file encountered on the previous operation
+1. Unit ready, parity error encountered on the previous operation
Example:
BUFFER IN(5,1)(B(1),B{100))
IF (UNIT(5,B(1),B(100)) 12,14,16
'Applies only to SCOPE 2.
60497800 J 8-23
/t^\
Control transfers to the statement labeled 12, 14 or 16 if the value returned was -1., 0., or +1., respectively.
Parameters a and b should always be included. If these parameters are omitted (as in most older programs),
there is a slight chance that at OPT=2, execution errors will result or that the elements between a and b will
not contain the expected values. j
If 0. or +1. is returned, the condition indicator is cleared before control is returned to the program. UNIT
should only be called for a file processed by buffer statements. "^
EOF(u)
The EOF function is used to test for an end-of-file condition on unit u following a formatted, list-directed,
NAMELIST, or unformatted read. Zero is returned if no end-of-file is encountered, or a non-zero value if
end-of-file is encountered. '"i
Example:
IF (EOF(5)) 10.20
returns control to the statement labeled 10 if the previous read encountered an end-of-file; otherwise,
control goes to statement 20.
If an end-of-file is encountered, EOF clears the indicator before returning control.
The EOF function returns a zero value following read or write operations on random access files (files
accessed by READMS/WRITMS), and also following write operations on all types of files, regardless of
whether an end-of-file condition has been detected; therefore, the EOF function should not be used in
those circumstances.
The user should test for an end-of-file after each READ statement to avoid input errors. If an attempt
is made to read on unit u and an EOF was encountered on the previous read operation on file, execution
terminates and an error message is printed.
IOCHEC(u)
The IOCHEC function tests for parity error on unit u following a formatted, list-directed, NAMELIST, or
unformatted read. The value zero is returned if no error has been detected.
Example:
J = IOCHEC(6)
IF (J) 15,25
Zero value would be returned to J if no parity error occurred and non-zero if an error had occurred;
control would transfer to the statement labeled 25 or 15 respectively.
If a parity error occurs, IOCHEC clears the parity indicator before returning. Parity errors are handled in
this way regardless of the type of the external device.
/3§H
/£Ss\
8-24 60497800 J
OTHER INPUT/OUTPUT SUBPROGRAMS
LENGTH(u) or CALL LENGTHX(u,nw,ubc)
^ Returns information regarding the previous BUFFER IN or READMS call of the file designated by u. nw or
the value of LENGTH is set to the number of 60-bit words read, ubc is set to the number of unused bits in
the last word of the transfer, nw, ubc, and value returned are type integer.
After an unformatted BUFFER IN on a 9-track S or L tape, the unused bit count parameter of LENGTHX
is rounded down so as to indicate a whole number of 6-bit characters. For example, a BUFFER IN of a
l#^ record of 23 8-bit frames returns a length of four words with an unused bit count of 54, even though the
actual unused bit count is 56.
/^ If an odd number of words is written to a 9-track S or L tape by an unformatted BUFFER OUT, the record
on the tape contains four additional zero bits at the right so as to be a whole number of 8-bit characters. If
such a record is subsequently read by BUFFER IN, the length indication in LENGTH or LENGTHX is one
/pn word greater than the number of words originally written.
For a file accessed by buffer statements, LENGTH or LENGTHX should be called only after a call to UNIT
/pa* ensures that input/output activity is complete; otherwise, file integrity might be endangered.
Example:
NW = LENGTH(5>
CALL LENGTHX(5,NW,NUBC)
CALL LABEL(u,labinfo) *
u Logical unit number.
0$$$*\
labinfo Name of 4-word array containing label information in the format shown in table 8-3.
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
Character
Length
Contents Default for Output
1 59 Ihru 0 10 File identifier None. Entire field must be sup
plied by the user.
2 59 thru 18
17 thru 0
File identifier continued
File sequence number
None. Entire field must be sup
plied by the user.
001+
3 59 thru 48
47 thru 30
29 thru 0
Generation version number
Retention cycle
Creation date (YYDDD)
oot
000+
Today's Julian date.
4 59 thru 24
23 thru 0
Set identifier (VSN)
File section number
Blanks (field can be blank or
zero filled.
0001+
'Field must be display code zero filled.
../S^V
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:
Passing the address and length of the user label block to CYBER Record Manager
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
/^^V
^^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,
^ t h e d a t a r e m a i n s r e a l .
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
^
0^\
/jpN
0$£S
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)
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:
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 les to be accessed through the terminal must be formally associated with the terminal at the time
of execution.
In particular, the le 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 le 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 les 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 le can be connected to the terminal by the CONNECT command.
Under all operating systems, the user can connect any le from within the program by using the CALL CONNEC
statement.
A le 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 le is returned.
Under NOS, if CONNEC species an existing local le, the buffers for the file are flushed (if it is an output file) and the
le is returned. A subsequent DISCON for the le causes the connected le to be returned, but the pre-existing le is
not reassociated with the le 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 specied, it is set to 0. If display code is selected, input/output operations must be formatted, list-directed,
NAMELIST, 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 species a le already connected with the character set specied, the call is ignored. If the le
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 ve 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 justied in each byte with binary zero ll. 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 le used for BUFFER IN and
BUFFER OUT must be of record type S. A
For a FORTRAN program run under NOS, any le can be connected to the terminal by the ASSIGN command.
In addition, the user can connect any le 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 le specied in a CALL CONNEC exists as a local le but is not connected at the time of
the call, the le's buffer is ushed before the le is connected to the terminal; under NOS, the le is returned.
/ d ^ \
8-28 60497800 H
CALL DISCON (u)
This subroutine disconnects a file from within a FORTRAN program.
0^\ This request is ignored if the specified file is not connected. After execution of this statement under NOS/BE 1,
the specified file remains local to the terminal. In addition, if the file existed prior to connection, the 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)
K = PLAGES
^ CALL CONNEC (K)
CALL COiMNEC (6,2)
^ CALL CONNEC <4LDATA,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 le 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 identied 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 key. /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 sub-
index 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
file 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 le 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 OPENMS (u,ix,lngth,t) J
u Unit designator. <e^s^
ix Name of the array containing the master index.
lngth Length of master index "1
for a number index: lngth > (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
/PSN
J0PrA.l
0^
/P^S
t T y p e o f i n d e x .
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 Unit designator.
fwa Name of the array in central memory (address of first word).
n Number of 60-bit words to be transferred.
k Record key.
for number index: 1 < k < lngth - 1
for name index k = any 60-bit quantity except +0
Rewrite,
r = 1
r = -1
Rewrite in place. Unconditional request; fatal error occurs if new record
length exceeds old record length.
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).
Sub-index flag,
s = 1
s = 0
Write sub-index marker flag in index control word for this record.
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 file to central memory. /=*%.
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
f o r n u m b e r i n d e x : k = 1 < k < l n g t h - 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,DATAMOR,25,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 DATAMOR. 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
J0$\
/^fi\
Example:
CALL CLOSMS (2)
This statement closes the le 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 Unit designator.
ix Name of the array in central memory containing the sub-index (first word address).
lngth Length of sub-index
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
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 C 8-32.1/8-32.2
/Si^V
/ ^ \
f^l\
l/fi^1
/^ts
.s^tf.
0&&\
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.
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 le as additional data records.
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 modies a random le using a number index:
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
8-34 60497800 A
The sub-index is read from and written to the le 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 le is being manipulated and the sub-index already exists on the le, 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 le 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
z^^^V
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 (3,INDEX,13,0) ^
>c^v
/£?p&2\
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)
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
ZIP(J)=0
DO 96 NRZ=1,NRZIP
READ ll.ZIP(NRZ)
41
96
97
98
99
CALL WRITMS (9,ZIP,NRZIP,CITYNAM)
CALL STINDX (9 , COUNTY,501)
CALL WRITMS (9,CITY,501,CNTYNAM)
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
10^
/flS\
r
0mHi\
J0^K
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)
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)
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)
DO 99 MAJ0R=1,4
/*SS\
8-36 60497800 E
COMPATIBILITY WITH PREVIOUS MASS STORAGE ROUTINES
0$&\.
FORTRAN Extended mass storage routines and the les 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.
** FORTRAN-CYBER RECORD MANAGER INTERFACE
0 S \
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 specied 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 le 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 le 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 F 8-39
/ ^ v
Values 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 '**%
elds
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 positioning at open time: '")
1LR Rewind
1LN No file positioning
ILE Extend; file is positioned immediately before end of information
cf File positioning after close:
1LR Rewind ^
1LN No positioning
1LU Unload /*-**.
3LRET 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.
id FIT identifier.
'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 t, are paired. The rst parameter in each pair is the name of a le information
table eld, 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)
STOREF specifies a value for a single le information table eld. It can be called before or after the le is opened.
The keyword is the name of a le information table field, in L format, and value is the value to be placed in that field.
IFETCH(fit,field) or CALL IFETCH(fit,field,value) ^
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 specied as the
third parameter.
CALL OPENM(fit,pd,of)
OPENM opens a le and prepares it for further processing. Only FILExx, STOREF, and IFETCH can precede
execution of CALL OPENM.
CALL CLOSEM (fit,cfftype)
CLOSEM closes the le after all processing has been completed. Only STOREF and IFETCH can follow execution
of CLOSEM.
CALL GET(fit,wsa, <ka >,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(t,wsa,ptl,skip,dx)
GETP reads a partial record. The number of characters to be read is indicated by ptl.
8-42 60497800 F
r^^\
/ftw^TV
/{SN
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)
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 (t)
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.
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
/ ^ t x
«£^»
0^s
0$Z\
/a$&\
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 cross-
reference 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:
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.
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^ kt Key type: 0 = symbolic, 1 = signed integer, 2 = unsigned
ks Substructure for each primary key list in the index; I = index-sequential; F = FIFO;
^ U (default) = unique; specified as L format Hollerith constant
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 STARTM(fit,ka,kp,mkl,ex)
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$\
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
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.
SMSORTB calls for a balanced tape sort. SMTAPE (see below) must also be called. /^,
CALL SMSORTPtmrLba)*
<<*~|\
0$S\
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.
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.
CALL SMFILE(dis,i/o,lfn,action)
dis File disposition:
-^SORT* File to be sorted.
=£MERGE=£ File to be merged.
-v^OUTPUT-J6 File to receive output.
i/o Mode of le 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).
J?"-X
/"™N
JP*N
£0&i"\
lfn File name indicator:
( u Logical unit number, 0 to 99.
nLfilename File name left justified with zero fill.
jssn fit* When i/o is specified as 0, an array containing the file information
f table.
sg^ action File disposition following sort or merge:
=£REWIND*
^UNLOAD^
=£NONE=£ (default)
8Applies only to SCOPE 2.
^Applies only to NOS 1 and NOS/BE 1.
60497800 J 8-47
SMFILE must be called for each le to be sorted or merged, and once for the le 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 rst character of sort key, considering the rst 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.
code Coding identifier:
t^SEPARATE-t-^TRAILINGt6 Numeric data in display code; sign is a separate character
at end of field.
/f^\
v^-DISPLAYS Internal display code.
t^FLOAT^ Floating point data.
^INTEGER-* Signed integer data. . ^
^LOGICAL-?5- Unsigned integer data (default).
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 field. j
v^SIGN-^^TRAILlNG^ Numeric data in display code; sign present as an overpunch I
a t e n d o f e l d . )
t^SEPARATE^-v^LEADINGt6 Numeric data in display code; sign is a separate character at
beginning 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,
sequence Name of a collating sequence specified in a call to SMSEQ (see below). ^^
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* Ascending (default).
zfrD^z Descending.
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.
8-48 60497800 F
ys^X
—^ CALL SMSEQ (seqname,seqspec)
r
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
{ equal to the last character, which must be included in colseq.
SMEQU specifies that two or more characters in the collating sequence are equal for comparison purposes.
CALL SMOPT (opt., optn)
\ opt Non-ordered options separated by commas:
VERIFY^ Check output for correct sequencing (important for insertions
(^ " 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.
f -^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.
j0&\.
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.
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
Each subname specified in a call to SMOWN must appear in an EXTERNAL statement in the calling program.
For each subname specied, 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
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
/Cff^5\
<*C^V
.»^S^!\
^ s i - 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 specied 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 STATEMENT
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 with the binary object code. The CID package is loaded along with the compiled code and
becomes part of the user's field 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 eld length, except when using the static loading
options. CMM ensures that the eld 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
iHPN
0®>*
The calling sequence for CMMALF is:
CALL CMMALF(IBLKSZ,ISZCDE.IGRPID,IBLFWA)
IBLKSZ Number of words required for the block.
ISZCDE Size code:
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:
0 Item does not belong to a group (normal usage).
>0 The block is assigned to this group. The group number is determined by
^ calling CMMAGR (see 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.
/"PN
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
60497800 G 8-53
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 specied:
LDSET(IVIAP=SBEX)
LOAD (LGO)
EXECUTE.
However, the loader always writes a block and statistics map to le ZZZZZMP for PMD's use. It is the user's
responsibility to rewind and copy this le 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.
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.
//Ss\
/^*5^N
^^\
Any user LDSET(PRESET=) loader specication is overridden.
PMD reloads the user eld length before it aborts to allow a subsequent octal dump of the user's program if one has
been specied.
To use PMD, the PMD parameter must be specied 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 eld 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 specied 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 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 first binary zero printed as a colon. "^
,_^~^y
8~54 60497800 G
^^v
jm*
/P*v
The column headed COMMENTS ags undened 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.
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 conict 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 dened 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 trace-
back, 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:
PMD discovers a routine name that occurred earlier in the traceback. For example, the descendent of an
ancestor routine has called the ancestor again.
/fit^k
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 address ^
JP B6
to perform the equivalent of the standard calling sequence: /S3?^
RJ address
that a function or subroutine reference generates.
/S g \
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 PMDARRY(i) '
CALL PMDARRY(ij)
CALL PMDARRY(i,j,k)
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 rst, 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). ^\
LGO,*DA=I+J Corresponds to call PMDARRY(I,J).
LGO,*DA=I+J+K Corresponds to call PMDARRY(I,J,K). ^
where I, J, and K represent the rst, second, and third dimensions, respectively.
8-56 60497800 H
/|KN
/I-N
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 rst 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:
60497800 H 8-56.1/8-56.2
^
1
/$PN
0H&S.
^8? $^*\
rTiKXTfxrTrXTffxxn^Txx
uju*uj^ujuj^>ti;ujujujuitij^^U'UJU;u.uju*UiUi
CO
Ulltf,
eo
ujiu
I T .
<rir«EH«r>wr-oO'r><
o o e o o
V*VM/<'/,V)UJU.'UiUIVfV<V*l*JVl
u.u.u.u.u.zzzzuu.u.zu.
U'tUUHUtUMfl— MI1.U. lU—UI
Of'fcoccrau.u.u.u.ercrcru.at
ttU^UJlU UJ
e c e e o
- « Z 3 u -
r t u
f— -JfX
~ _ » 3
-.cr-t—t*.
/PSN
—i- w<r—ma o—
« ^^.orv—>-r- «o oaso
TTltl 0fO--*«J «»—.*_HJJf- O-*"—
<IL *4^»OUjaf UJ«/*yl»l».*.*l/l
tt » JU«»Okj42Z»K-l
oa oJifiiN »T*tx«ifmec
cr o«»Lui-i-----«u.o_i«T-«fc-
are mjw _i«~—~» ,H(fiifi«rx
as uj«^Z'*«»«m i « u j
a JU2C> v^^—«Mf*l*-*
c o a . * - u j X r - * * a c r r a i c r x a a i ( - l a .
—UJ rOIt3h«444«fl4irjao
xx co"-oo<a>»»»«4t-r
«-i- u jcuiuc 4ua^MMi»Nir uvtiu
fVCM
ee<rtrtr
fV—o*
«j-»^f»»
TfOf
orof
U l U l
o T-i -ftatataacr-iat
T ** uiujuJujUIUIUI^lLi
Ul -J Ul JOOUOOUUO
ac a^-jaiuujujuuujuj—u>^^_i
ui u> X4ri-^Ki->-i-OK<i«
u. ui i-ujiuoi rriTTCtiuujui
ui o aatUHMfM.MMjM«a(a
om o-"4
OO
nrui •KU1
Ul uiuia Ull/l
aa.o>- XIM -13
>• >Ulf- f—«>
»— »—f— OIM ZJT
ZO CO
—SE Ul E l O
Vt •••• to em
0 4 U r > o
J _ i - M M V « M t — V t I O * t r i S O N
O oa V>^4>f4Nm«riMXH ^3i4«1 « t- KY JTuiZUim
co •-* -««acafcraccirararor waCf* 3awui or o s* ou »-_.ui-j.o
r at"« <xrr*atac* + M*Mm**et v\a.t-a.a. t- r>-irt oo wio ->uj
V morac>«o>»»«rx WZ344 vim 3T4 _i_ <_>» - c d
vt Out ui«<uMMwwMH^ra(0(> ChBp-i- _juj u,»-C coco wec«or«
a j « « k . 4 w u i - i
c o z a t u i X v i f c - o u .
vn> «o«t-fr^ir\e^<\jcn«^«r>4r o-4-o<r ac ar o «»iou.x
atf* -fin.O'O'O.e-o.Atn.o.cjtfi.o ui inmin ui « *c r-xcsu
f-«M OT m<Mf\IIMr\lf\lfMf\JfMf\lfMfMf>l _ 0-.0 f-l tC ««/»atOV»
Z 4 * 4)'0<o<e«<e4)4)««««4) t- «v^»v w ar o i—
u i a » u . u i * • o v »
60497800 F 8-57
y ^ ^ w
-Jf-f_l JJ -JM-JMM
0.-J0. a a a a u i a~*a^-»
•••-ar rxrrtrfrff 1-hIKrt
4 V - 4 4 44444VI4I/1ISI _l VIVf4VI4 4
MU.-M xyyHrxuiKlbili —J UJUIMUJMM
Ujfr Ul — . u - u r u i i - u . ^ uj f c * * ( • i - t t - * - u . t - u j u i
z s
>IJJV1
mxm
u j v - X
o » -
aU . Z
ac 0 ( M
e1—
X>**x
aOJUI
T t - O
a—ac
"" »7UI
-i •U.UI
-i Ul .UfO
4-a •o
Oaazuv
O m
Of XUIt
Ul Ul a»o
o(9 —4UI
Ul Ch«
l/l ac M M M
Z3 «V V»V»M
Tfc. _iOi-3
Z) _ » a a
*> or 4*>uiac
IM Ul O 3
><* -«JZ
or or c* 4C40
at Ul SM/1
4ar t_>«- M
IZOVtOC
1-MOM4
ZVI orOT-
Ul u ' O i - r
VUl i s o o
4or OOU.U
at •o •—OV>
or orOSUI
4CM VI <o u> -04T
Veot—
•Man ri O U I
^oror u. ><car
4 4 V) a r * i m O
4 ) f - » U l
U. U.U.
Ul UIUI
e o o
o e o o
i/ii/iuiviviujvii/icoviiuiui/i coo
UUZU.UZU.U.*4U7?U.
IX-Ui—UlUI*—>UIU> UJMMUI
arctuacoruacar aruu._e
u i u i u j u i
o e c o
vt
ui ui
- > » T
— e . i - o r « - > o x . a r m
V I " « 1 9 4 O O r « e *
4 z z z v t a o u i o u . o
O r C ? — U l » » M O 1 » I Z I —
> - - . > - _ J 4 - » T » 4 K M O
xi«« _; ot- (M »-ac>-fc.ui O
ui—cy o O w4J 4iuUil/*v
c a r o C o * 4 9 f W t v o a — o f
u!iu4 o _i-> m«» a oro _icu»-jui z,—
z a r > - - j c c • « . 4 o - % u . a x u i o
fc-a <o >.—../j*. >vi*4 uj uio vi
ft* ri w-» MO* Zt-UI_l ceo
S u j u i Z X — O f »M Mwagiui 4uiX
c_o o a zui4 on—i >ov>z_j4ce—m .oc
vcui x tc-h't .ocarm 1—41— * . + _ j - » 3
*3r- ac r«i-B("(fi44«i m.>ak.x>«j~f-o
: o Z O O - u a a i i » m z < 0 fCauiZ
vom o uairs.H>iHoa^^M4>7><xuHVUi
0 _ t «
m o a a a a
m c . . . »
4-1 U.U.U. U.
oco
O f U l
I M U J t «- O C
U . I M f V > - U .
O C U l 4 4 4 U l
o r o r e v e r o
a r a c a r z
v > v > o z o r
QUI ZtfltftCO M UJ-OO
41- UJtVMM _l U.<Uf->
u j m a t u i
o r o r U l u » o r
* J » U . U l
U l o
arat
44
orac
arm
yft^^v
OOHri 19-4
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.
C90
X U I
u.i/1
-13
:v»
V I u .
fat
T O C S
O U l 4 ( 9 O
O _(_)«> 1/14 fc-ZO"M
Ul f*4» Z»- f-*« 4 *-? XuiUItt*
v i u i u i w a r u 4 - j 0 0 0 h j j «
3 v » o . a v > o x a r e 0 0 a o v i e u i
Mar UI44 VKOVIM 3_i »->oo -j-i o*--cp
zasx r^i> -I40VI u.11. z-*-4 ccco wo4«
4 4 U l ^ - 4 0 t _ l
a a e x u i a e z v > f c > c 9
ki <o«ooooe ohoo or x ui*»m o hioz
O C M 4 9 ) 4 > f » f * » 4 9 U l U l f - l b - M I O X W > - O T O
* • O C _ » • - I 4 X « V K i M
- . V f M
V-4 4V<fl4)
4oc arorocat
x T H o r 4 o r o r 4 4
>> mm viar> 44»>
(/I QUI UI4SHHHHH
Ul M V I VI
>c^\
y
8-58 60497800 F
M O M U l U l
f M I u . w M
I U l Z m M
• V M 4 Z X O
t r o o r m m
«•» O 4 U, U.
cc in a z z
M 1 * 1 M M
in cm u.
i M j f t r u i u i
• y f a . >
CM N> M M
m w> v* m t—
o O- ui M M
m 4'ac vi vi
> . « c O O
> i a a a
f * > i * - o x
M I * . O M
m «r> o u.
i m m o z
M O M
- 4 - O
K O U l
n o r *
O M
o m
O M
. 1/1
« m o *
> o a o
> M 4 > u -
< o r o i < v n r
a r 4 a a r a
o r > 4 4 r »
/$^\
CO CC CC GQ CC CO OJT CO cocococccccccccc
UJ r^oo4>Mooo OOmOMOOO
OOOONOOO OOOOl-OOO
4••-oOf-if^-ooo oomof»ooo -1
•OOOmOOOO © O f - 0 . 0 0 0 0
O OOOCMOOOO oooooooo
CuiOOO<0OOOO ec ujoooooooo
VI 3000<n0000 CT300000000 4:
v-jooomoooo u. -joooooooo
44ooomoooo 4 0 0 . T O O O O O 1-
>ooo-.oooo >oooooooo 19
ooiriMoooo U: oooooooo
-tooor-oooo VI -JOOOOOOOO UJ
4 0 0 M . O O O O O 400000000 _l
h-OO^-MOOOO MOOOOOOOO
oooomoooo ooooooooo VI
OOOOMOOOO V>C000004300 -J
00©«r©h-f>-0 ar r-6©00-«i».o UJ
000430r>-*.Q Ul r—OOOOCMf-O
oo*ooi«-r-o h-OOOO^f-O u.
OOOOOmmo «/l cnOOOO-.«no
O
Orfrvf-ftn^N Ul
1
OOM«\.c«*iri«h-
or
-1
VI
V U l
VI
tr re 4 ~ . r * f a t i w _ c
0H^\
O U .
4 U l 1 9 Z or
C " » X m
-1 UJ
-1 - 1 X or
- 1 4 »—
4 Z ««. «
I- or Z X
4 U l r i u j
U M x -i Ul
1 »* x VI
Z UJ TT CM
i > tn
z o «» CM
•JJ Ul
19 m 19 co
X U .
VI -.
31 m * X Ul
«"1 e* »- 1-
- 1 4 -1 19
-J V t -1 z
e z O U l
U . 3 u. _
O M X
• - o 3 e
v i t u a x
4 V » * » M
- I 3 1 - - »
Z 3 u i
3 a a r
O 4 * -
X » - 3 4 } m
3 a ui ui
x a m a a
4X344
o c M O f f
V I O 4
0 9 » O
e 4 m
MOM m O M m m
o r o r or
o O
VI O o. . o
4 X f/> 4
VI Ul C o
V) 1— f- O O M
Ul VI Z Z VI
oc M 4 «M
o-J VI VI -J
oU.
4or O er ec
Ul X X Ul Ul
XJf-inMMM
O ui vt x x Ul Ul
4ca X Ul M M X
MX 4 0( M m 4 M M
Xvxaisoi or
o vi 4 a
oa. 4
jocjoeddcisd
c/i 4 * ' r » ^ t n c * t . f - * a 4
or » 4 M 45 N -r -r ».
Ul
>-1- « r» M M 4) I*- P. 4>
VI OOOM M O O O O
OOOOOOOOO
o
Ul O O M «M m m 4) f*.
oc
1Ul 4 4
oc 4 4 4 4 4
ocimooocMO
4 m C M H H
> 4 9 O - O
_COCOC0CDCCCO0CD
40tnooo«M~ro
>OOOOOMOO
OMOOOOOO
MO^JSOOOM©
OOOiwOOOmO
ooooooooo
m
r » c
O 4 - a .
4 J a k
. r ^ * fi 4 m
4 : f f » - » - j
. P U o 4
C 4) ri -i —
• { * ~ » « - I —
C M I
> 4 - J - >
4 M 4 4 u . ^ >
Or 4- ar a r 3 O
or . * v a r i 7
4 M 4 4 4
5 »
rllfllfl"
a . a . a . 7
u . u . u . X
u i a o c a c i
x u i U J u j u i
m J H O O
M UJ —I * UJ UJ UJ I
3 a 4 3 » - f t - i
O > - u i O Z Z Z
ac m tt o M M M I
Q MM M X M
0&\ 60497800 F 8-59
/*"~**SL
m — z a 3 m
NOOOCZ
m m o o r m
_ l O u . u .
M C T o r 4
4 a c
- i a c
O 4
a u. u. u.
I Ui Ul
l c.fj o
I Ul Ul
u i O
a m
o 3
M O
M Ul
4 4 4
Ul Ul Ul
> or or oe
:m xo. 3 m m
>- V M 4' VMIM«n«Mf4 SC
4 4 o r o r o r o r o r o r o r o r 5 » * v >
a t e r 4 a c o r 4 4 4 4 4 v > 4
O t O t > 4 4 > > > > > 4 X
V I V I
z X
o o
o o
o o
c v t
4 4
/"S^\
/f^^V
I (
•D SO
4 * *
* »
# JJ>
CM IM
A A
at or
ui ui
o o
u i u i f a .
f f X r ,
z z 4 c r
m m o r o r
4 ) O X U l 1 z
O c m m r w CM O • * M 01
4 5 O f M M O o> t* r - i -
0003-1 o o 0 » 3
K r n O M O 4 m o 4f m o UJ
w o a t m rM m ec —1
O M in _l
O O m cm e
O U l X UJ 49 Ul
V > - O V - J M fW VI 0 » _ l
4 4 . 4 - 1 -J 4 5 _ Ul
o r o t m a t 4 » - » 4
ar or nuaij U. CMO
4 4 m 4 T t a f t
Ul Ul U l o z
x 3 X M
a r c
u.*
V I K .
u i m x
k i o r u i
M 4 U l
MU l V I ac Ul 4 9 M
Ul O X V I
U l M Ul 4) u .
xatMototatotoi_ior4 r- at ar 3
X Ul lb X Ul Ul ID 111 ID 4 IV r> V U l U l Ul r^. e » f * l
4 O m O O i I O O o O X 4 O O U l
OC Ul Jjaui uiuiuiuiuiMuio_vi-i -i x ui uj m o r CM
o o. 44XMXH-MMMh-0MO4 4 X 4 M M
o > » U l U I a X 4 Z X . X X X O X U l U l 4 U l X X 4 - 1
or » - a c a t o m m m m m m j m u j o r u i o t a c MMM at a t i or
a V I _ -J 1/1 OC 4 oc
m c a CO
4 4 ac
X M l/l >>•
Xu i a t ac Ul X f - l -
t - 4 O T X ar ar
f 4 N ^ M N > O 4 4 ot ac
vt >VM4 VHNn#Hf4 X M M
Ul Ul 44atot»-ocatotatararirr-v»*-or^-MfflAM
-IX « a f 4 0 ( M e r 4 4 4 4 4 V I M 4 M 4 M o r M X X
c e 4 a r a t > 4 u i 4 > > > » » 4 u j x Ul > u i 4 u i e o VI
4X 44oMXMMMMM^xzatza(Z>xoo
jttcfSSsV
i .
j * t f ^ V
0ti$$\
8-60 60497800 F
0mS,,
/SSN.
/0^\
00^\ V " . V )
I — I -
X X
U l U l
X X
U l U l
- I - I
u i u i
u i u i
V I v >
u i u i
o t
0$^\
60497800 F 8-61
'I
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:
A r r a y b o u n d s F u n c t i o n r e f e r e n c e s a n d t h e v a l u e s r e t u r n e d
Assigned GO TO Values stored into variables and arrays
Subroutine calls and returns Program flow
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.
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.
FTN(D)
jjfll^ LGO.
REWIND(DEBUG)
COPYCF(DEBUG,OUTPUT)
y^®V EXIT(S)tor EXIT.ft
REWIND(DEBUG)
COPYCF(DEBUG,OUTPUT)
"•"NOS/BE 1 and SCOPE 2
"""NOS 1*
""""""NOS/BE 1
J0\
60497800 E
Abnormal termination
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 (dened in Appendix B)
Any missing (undened) 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
eld 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 specied 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 ow at execution time.
Example:
PROGRAM TEST (OUTPUT,DEBUG=OUTPUT)
GO TO 4
C$ (DEBUGGING OPTION)
C$ (DEBUGGING OPTION)
4 CONTINUE
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
/ ^ 3 \
DEBUGGING STATEMENTS
/pp^\
ds
Pi
C$ids(p., pn)
Type of option, beginning after column 6: DEBUG, AREA, ARRAYS, CALLS,
FUNCS, GOTOS, NOGO, OFF, STORES, TRACE
Argument list; details extent of the option, ds (not used with NOGO, GOTOS; required
for AREA, STORES; optional for other options)
/fp3Sy
CONTINUATION LINE
1 6 7
P
C$
I<Pr rPj
Debugging statements are written in columns 7-72, as in a normal FORTRAN statement, but columns 1 and
2 of each statement must contain the characters C$. Any character, other than a blank or zero, in column
6 denotes a continuation line. Columns 3, 4, and 5 of any debugging statement must be blank. A maximum
of 19 continuation lines is allowed.
Comment lines may be interspersed with debugging statements. The statement separator ($) cannot be used
with debugging statements. When the debug mode is not selected, all debugging statements are treated as
comments.
Example:
C$ ARRAYS (A, BNUMB,Z10, C, DLIST, MATRIX,
C$ *NSUM, GTEXT,
C$ *TOTAL)
fJSN
ARRAYS STATEMENT
/c$"
1
i
ARRAYS (aifa0f...,a )
1 ' 2 ' ' n
ARRAYS
a,,...,an array names
60497800 C 9-3
The ARRAYS statement initiates subscript checking on specified arrays. If no argument list is specified, all arrays in
the program unit are checked. Each time a specified or implied element of an array is referenced, the calculated
subscript is checked against the dimensioned bounds. The address is calculated according to the method described in
section 1. Subscripts are not checked individually. If the address is found to be greater than the storage allocated
for the array or less than one, a diagnostic is issued. The reference then is allowed to occur. Bounds checking is
not performed for array references in input/output statements, or in ENCODE/DECODE statements. In a subprogram,
the bounds that are checked are those in effect in the subprogram, including variable dimensions.
Example:
PROGRAM ARRAYS <OUTPUT,DEBUG=OUTPUT)
INTEGER AC2)* B<*-»>« C<6>» D(2t3*<»>
PRINT 1
1 FORMAT<«0 ARRAYS EXAMPLE'///)
* T U R N O N A R R A Y S F O R A R R A Y S A A N D D ^
Cl ARRAYS (A* 0*)
«
* A(3) IS OUT OF BOUNDS AND ARRAYS IS ON FOR A* SO A DIAGNOSTIC ^
* 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
* < I L«(J-I MMK-1)))
* FOR THE ELEMENT U<-S*U»b) IhE SUBSCRIPT APPEARS TO
* BE OUT OF BOUNDS btCAUSE Tht INDIVIDUAL SUoSCRIPTS ARE OUT
* OF BOUNDS. HOWEVER* 22* THt COMPUTEO ADDRESS* IS (_ESS THAN .-^
* 24* THE STORAGE ALLOCATED. AND NO DIAGNOSTIC IS ISSUED. ^
o
«
* T U R N O N A R R A Y S F O R A L L A R R A Y S A
C$ ARRAYS
o
* W I T H T H I S F O R M A L L A R R AY R E F E R E N C E S W I L L B E C H E C K E D . T H E R E w I L L / m ^
* BE DIAGNOSTICS I OR B<5>> 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
P R I N T 2 * A ( 4 > ' _ .
FORMATtlX* A10) "y
E N D '
9-4 60497800 C
/jls\
ARRAYS EXAHPLC
/DEBUG/ ARRAYS AT LINE
/0E8UG/ AT ITNC
/OEOUG/ .. AT Line
/OEBUG/ AT LT'ir.
itxrtaic,/ «t i tnp
u - t h *
?0- T»"£
*.r- TMt
W - T H "
i.a-j«£
;ii3?':».:',T
"5!J'»sr<i^T
'.uti-.r^iPT
SUP<>Mt"»T
SUB'.CP.IPT
v » l t r
viL'ir
v»ui«"
v»u«r
VALUE
Of
p«"
tr
0"
-1
-B
I'M
IN
IN
IN
I»1T
»?°»Y
»o»»Y
ARUAY
""VCEtl'S
r»rrios
EXCEEDS
fxfErns
EJ>CEEOS
OI-tNSinurO
PiriHSinm n
oif-tNsinnto
nifENSioNfn
DIMENSIONED
» m m o r
pound or
qouNO of
bound or
BOUND OF
<•
6
CALLS STATEMENT
1
c§T
c$ CALLS (a 'an>
CALLS
/fss
/*JS!\
a,,...,an subroutine names
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.
level 0
level 1
level 2
MAIN -call
return SUB A - call
return 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<CALLS1» CALLS2)
X = 1.
CALL CALLS1 <X.Y)» RETURNS (10)
10 IF (X .EQ. 1.) CALL CALLS2U)
CALL SUBNOT
CALL CALLS1E (X*V) ^
• DEBUG MESSAGES WILL BE PRINTED FOR CALLS TO AND RETURNS FROM
* CALLS1 AND CALLS2. SINCE l"HE CALLS ARE FROM THE MAIN PROGRAM*
* THEY ARE AT LEVEL 0. THE CALLS TO SUBNOT AND THE ALTERNATE
ENTRY POINT CALLS1E ARt NOT TRACED BECAUSE THEY DO NOT APPEAR
IN THE ARGUMENT LIST OF THt C* CALLS STATEMENT.
* TURN ON CALLS FOR ALL SUBROUTINES
C» " CALLS
CALL SUBNOT ^%
CALL CALLS2CX)
CALL CALLS1E (X*Y)
* DEBUG MESSAGES WILL BE PRINTED FOR CALLS TO AND RETURNS FROM
SUBNOT* CALLS2* AND CALLS1E* SINCE ALL CALLS ARE TO BE >^*\
TRACED.
E N D J
SUBROUTINE CALLS1U,Y), RETURNS(A)
Y = -X
IF (Y .NE. X) RETURN A
RETURN
ENTRY CALLS1E
RETURN
END
SUBROUTINE CALLS2CX)
CALL CALLSHXtY)* RETURNSC5) sms*
5 R E T U R N 1
END
SUBROUTINE SUBNOT
X - -1.
CALL CALLSKXtY)* RETURNS(S) ^
5 R E T U R N ^
END
9-6 60497800 H
/DEBUG/ CALLS AT LINE 9- ROUTINE CALLS1 CALLED AT LEVEL
/DEBUG/ AT LINE 10- ROUTINE CALLS1 RETURNS TO LEVEL
/DE8UG/ AT LINE 10- ROUTINE CALLS2 CALLED AT LEVEL
/DEBUG/ AT LINE 11- ROUTINE CALLS2 RETURNS TO LEVEL
/DEBUG/ AT LINE Zk- ROUTINE SUBNOT CALLED AT LEVEL
/DEBUG/ AT LINE 25- ROUTINE SUBNOT RETURNS TO LEVEL
/DEBUG/ AT LINE 25- ROUTINE CALLS2 CALLED AT LEVEL
/DEBUG/ AT LINE 26- ROUTINE CALLS2 RETURNS TO LEVEL
/DEBUG/ AT LINE 26- ROUTINE CALLS1E CALLED AT LEVEL
/OEBUG/ AT LINE 27- ROUTINE CALLS1E RETURNS TO 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
s u b p r o g r a m s , o n l y m a i n p r o g r a m f u n c t i o n r e f e r e n c e s w i l l b e t r a c e d . / - a a ^
PROGRAM VAR0IM2COUTPUT,TAPE6=0UTPUT,DEBUG=0UTPUT>
C THIS PROGRAM USES VARIABLE DIMENSIONS AND MANY SUBPROGRAM CONCEPTS
COMMON X(i»,3l _
REAL YC6) ^%
5 E X T E R N A L M U L T , A V G
PVALSF<X,Y) = PVALCX,Y>
C $ C A L L S ^
CALL SETCY,6,0.1 ^
CALL I0TA(X,12)
10 CALL INC(X,12,-5.)
C
C ALL EXTERNAL CALLS ARE DIAGNOSED. ^
C
C$ FUNCS
15 AA = PVALSF«12,AVG)
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.
2 5 C STOP
END ^^5\
SUBROUTINE SET (A,M,V) ^
C SET PUTS THE VALUE V INTO EVERY ELEMENT OF THE ARRAY A
DIMENSION AfH)
0011*1,M
5 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 ^
10 2 A<I)=A<I)+V
RETURN
END
9"8 60497800 A
/*f"^\
/pftv
0^\
SUBROUTINE IOTA CA,M>
C IOTA PUTS CONSECUTIVE INTEGERS STARTING AT 1 IN EVERY ELEMENT OF
C T H E A R R A Y A
DIMENSION ACM)
0011=1,M
1 A<I)=I
RETURN
END
FUNCTION PVAL(SIZE,HAY)
C PVAL COMPUTES THE POSITIVE VALUE OF WHATEVER REAL VALUE IS RETURNED
C BY A FUNCTION SPECIFIED WHEN PVAL WAS CALLEO. SIZE IS AN INTEGER
C VALUE PASSED ON TO THE FUNCTION.
5 INTEGER SIZE
C$ PUNCS<ABS)
PVAL-=ABS(WAY(SIZE>)
C
C WAY DOES NOT APPEAR IN THE ARGUMENT LIST FOR THE FUNCS STATEMENT,
10 C SO ONLY THE REFERENCE TO ABS IS DIAGNOSED.
0O&\
RETURN
END
1 0 C
FUNCTION AVG(J)
C AVG COMPUTES THE AVERAGE OF THE FIRST J ELEMENTS OF COMMON.
COMMON A(100)
AVG=0.
D01I=1,J
1 AVG=AVG«*A(I>
CS FUNCS
C
C ALL EXTERNAL FUNCTION REFERENCES WILL BE DIAGNOSED.
1 0 C
AVG*AVG/FLOAT<J)
RETURN
END
REAL FUNCTION MULTCJ)
C MULT COMPUTES A STRANGE AVERAGE. IT MULTIPLIES THE FIRST AND 12TH
C ELEMENTS OF COMMON AND SUBTRACTS FROM THIS THE AVERAGE CCOMPUTEO
C BY THE FUNCTION AVG) OF THE FIRST J/2 WOROS IN COMMON.
C
COMMON ARRAYC12)
C$ FUNCS
C
C ALL EXTERNAL FUNCTION REFERENCES WILL BE DIAGNOSED.
MULT=ARRAY(12) "ARRAY<1)-AVGfJ/2)*
RETURN
E N D
60497800 A 9_9
/^^v
/OEeuf./ VAPUTM? AT LINE 3- ROL'TTNF. SET CALLED AT L E V E L
/OFftUG/ AT LINE 9- KOLTINE SET RE TURNS TO LEV EL
/OEOUG/ AT LINE 9- ROUTINE I O TA CALLED AT L E V E L
/OEOUG/ AT L I N E 1 U - cOUTINE I O TA RETURNS TO L EV EL
/OEP.UG/ AT LINE 10- FOUTINE INC CALLED A T L c V t l
/OEOUG/ AT L I N E 1 1 - ROUTINE INC .<ETUKNS T O L f V E L
/HEPUG/ AT LINE .'.5- f-EiV. FUNCTION P VAL C A L L E D AT LEVEL
/OEOUG/ AT LINE lS- REAL FUNCTION P VA L RETURNS VALUE OF l.SUUUUQodO AT LEVEL
/DEBUG/ AT LINE 16- ttCM FUNCTION P VA L C A L L t G .\T LEVEL
/OECUG/ MULT AT LINE 1 1 - REAL FUNCTION AV G CALLEO ULEVEL
/OEPUG/ AT LINE 1 1 - RtAL" FUNCTION AV3 Kf T'MHS VALUE OF -1.500000000 AT LEVEL
/OEBUG/ VAROIM2 AT LINE ltS- REAL FUNCTION P VA L RtT URN S VA LUE OF 2b.i>G0iiiiuJ0 AT LEVEL
STORES STATEMENT
1
i
i
i
S T O R E S ( c v c 2 c n ) ^^\
An argument list must be specied 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 specied 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
0^\
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.
/ D E B U G / S T O R E S A T L I N E < » - T H E N E W V A L U E O F T H E V A R I A B L E N S U M I S 2 0
/OEBUG/ AT LINE 5- THE NEW VALUE OF THE VARIABLE DGAMP IS .5008000000
/DEBUG/ AT LINE 6- THE NEW VALUE OF THE VARIABLE AX IS 7.700000008
/*?i&£\
60497800 A 9-11
Array elements should not be specied 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:
10
PROGRAM STORAR <INPUT,OUTPUT,DEBUGsOUTPUT>
REAL AI101, B(t»,2)
CS STORES CA,B>
B(i,2) - 5.5
B<<t,2) = 0.
DO 4 N * i,3
4 A 1 N ) s N + 1
PRINT 5
5 FORMAT (1H0I
STOP
END
/*^\
/ ^ \
/OEBUG/ STORAR AT LINE 4- THE NEW VALUE OF THE VARIABLE B
/DEBUG/ AT LINE 5- THE NEW VALUE OF THE VARIABLE B
/OEBUG/ AT LINE 7- THE NEW VALUE OF THE VARIABLE A
/OEBUG/ AT LINE 7- THE NEW VALUE OF THE VARIABLE A
/DEBUG/ AT LINE 7- THE NEW VALUE OF THE VARIABLE A
IS 5.500000000
I S 0 .
IS 2.000000000
IS 3.000000000
IS *.ooooooooo
•^^K
The values stored into array elements B(l,2) and B(4,2) appear in the debug output under the array
name B in both cases, and array elements A(l), A(2), and A(3) appear under the array name A.
RELATIONAL OPERATORS
In the second form of the C$ STORES statement, a message is printed only when the stored value satises the
relation specied in the argument list. The two components of the relational expression must be of the same type.
/*^S\
PROGRAM ST3 (INPUTOUTPUTtDEBUG*OUTPUT)
5 FORMAT (1H0)
PRINT 5
M a 5
CS STORES Cl.EQ.3tN.LE.MffANT)
1 = 3
I s 4
N = 4
N = 6
J B 10
ANT = 77.0
END
/DEBUG/ ST3 AT LINE 6- THE NEW VALUE OF THE VARIABLE I
/DEBUG/ AT LINE 8- THE NEW VALUE OF THE VARIABLE N
/DEBUG/ AT LINE 11- THE NEW VALUE OF THE VARIABLE ANT
I S 3
I S 4
IS 77.00000000
0*~^\
9-12 60497800 A
0z?i&§?\
/"asss
ygfe\
I appears in the debug output when it is equal to 3; N appears when it is less than or equal to M.
Since no relational operator is specied with ANT, it is printed whenever the value changes.
CHECKING OPERATORS
In the third form of the STORES statement, a message is issued only when the stored value is out of range,
indenite, or invalid as specied by the checking operator.
Out of range
Indefinite
Out of range or indenite
RANGE
INDEF
VALID
For example:
C$ STORES (ROWSUM .RANGE., COLSUM .VALID.)
Whenever the value to be stored into ROWSUM is out of range, a message is printed. Whenever the
value to be stored into COLSUM is out of range or indenite, a message is printed.
J$0&\
HOLLERITH DATA
Hollerith data stored in a variable of type integer is interpreted by the STORES statement as an integer
number. Hollerith data stored in a variable of type real or double precision is interpreted as a real or
double precision number.
In the following example, the three integer variables IHOLL, IRIGHT and ILEFT contain the characters
PA in display code (20 and 01).
IHOLL 20015555555555555555
P A b l a n k l l
IRIGHT 00000000000000002001
z e r o fi l l P A
ILEFT 20010000000000000000
P A z e ro ll
60497800 A 9-13
Example:
10
PROG RAM OEri O L UNf UT.OUTPU T.D EaUG«O UTPUT>
CS DEBUS
CS STGRGSdMOLL.IRIGHT.ILEfTthOLLJ
IMOLL«2rn?A
1RIGHT»2«PA
ILEFT»2lPA
H0LL«2m?A
PaiNT 1
1 FORMAT (IhO)
STOP
END
/OEoUG/ DEMOi.
/DtaUG/
/OtSOG/
/OcdUG/
AT LIKE 6- TMt NEW VALUE Of Trl£ VARIABLE IhOcL Ii ••••••••<•••••
AT LINE 7- TrlE NEW VALUE Of TMSi VAkUBLE 1HIGHC IS 102S
AT LINE 8- ThE NEW VALUE OF THE VARIABLE ILEFT IS •••••••*<.•••••
AT LIME 9- THE MEU VALUE OF THE VARIABLE KOLL IS .<fC21071096E«fl5
The variables IHOLL, IRIGHT, and ILEFT are interpreted as integer numbers. Since the field width allocated
by the STORES option (14 digits) is insufficient to contain the converted quantities represented by IHOLL
and ILEFT, these fields are filled with asterisks. The variable IRIGHT is converted and printed out by the
STORES option as 1025.
The variable HOLL is interpreted as a real number, and its value is printed out.
/*^*\
GOTOS STATEMENT
1
CS
I
I
GOTOS
No argument list can be specified with the C$ GOTOS statement. The GOTOS statement initiates checking
of all assigned GO TO statements to ensure that the statement label assigned to the integer variables is in the
GO TO statement list. If no match is found, a message is printed and transfer of control continues.
PROGRAM GO TO«5 (OUTPUT,OERUGsOUTPUTI
INTEGER A
CS GOTOS
(GOTOS NEVER USES AN ARGUMENT LIST)
*
ASSIGN 1 TO A
GO TO A (1, 2, 3)
«
• IN THIS CASE NO MESSAGE IS PRINTED SINCE THE LABEL ASSIGNED TO
» A I S I N T H E G O T O L I S T.
*» PRINT 10
10 FORMAT*.** CONTROL TRANSFERED TO STATEMENT LABEL «--•)
STOP
1 ASSIGN « TO A
GO TO A (1, 2, 3)
IN THIS CASE A MESSAGE TS PRINTED SINCE THE LABEL «• IS NOT IN
THE GOTO LIST. CONTROL THEN TRANSFERS TO LABEL *.
*
2 CONTINUE
3 CONTINUE
END
/OEBUG/ GOtOS AT LINE 16- ASSIGNEO GOTO INDEX CONTAINS THE A0ORESS 002151. NO MATCH FOUNO IN STATEMENT LABEL ADOPFSS LIST
CONTROL TRANSFEREO TO STATEMENT LAOEL *--
9-14 60497800 A
TRACE STATEMENT
/c$" TRACE (Iv)
TRACE
/$P^N
Iv is a level number 0-49. If lv = 0, tracing occurs only outside DO loops. If Iv = n, tracing occurs up to
and including level n in a DO nest. If no level is specied, tracing occurs only outside DO loops.
The C$ TRACE statement traces the following transfers of control within a program unit:
GOTO
Computed GO TO
Assigned GO TO
Arithmetic IF
True side of logical IF
Transfers resulting from a return specied in a RETURNS list are not traced. (These can be checked by the
CS CALLS statement.)
If an out-of-bound computed GO TO is executed, the value of the incorrect index is printed before the job
is terminated.
Messages are printed each time control transfers during execution. The message contains the routine name,
the line where the transfer took place, and the number of the line to which the transfer was made, as well
as the statement number of this line, if present.
A message is printed each time control transfers at a level less than or equal to the one specied by lv. For
example, if a statement CS TRACE(2) appears before a sequence of DO loops nested four deep, tracing
takes place in the two outermost loops only.
TRACE messages are produced at execution time, but TRACE levels are assigned at compile time;
therefore, the compile time environment determines the tracing status of any given statement. For example,
a DO loop TRACE statement applies only to control transfers occurring between the DO statement and its
terminal statement at compile time (physically between the two in the source listing).
60497800 A 9-15
Example:
level 0
r level 1
10
15
20
25
r level 2
r level 2
PROGRAM P<OUTPUT,OEBUG=OUTPUT>
OATA J/0/
C $ T PA C E t l )
IF (J .EQ. 0) GO TO 11
11 DO 1 II = 1, 3
IF ( <J*1» .EQ. II 1 GO TO 12
12 J = 1
OO 2 12 = 1, 5
J = J 12
GO TO 2
2 CONTINUE
C$ TPACE(3>
OO 20 12 = 1, 3
IF ( 12 .EQ. 3 ) GO TO 20
J = 2
DO 3 13 = 1, 4
IF < J .GT. 13 ) GO TO 31
T31 OO 4 14 = 1» ?
level 4 I GO TO 4
L 4 CONTINUE
3 CONTINUE
20 CONTINUE
J = 0
1 CONTINUE
ENO
r- level 3
><S^V
/0E8UG/ P AT LINE 4- CONTROL
/DEBUG/ AT LINE t*' CONTROL
/DEBUG/ AT LTNE 6- CONTROL
/DEBUG/ AT LINE 6- CONTROL
/DEBUG/ AT LTNE 17- CONTROL
/DEBUG/ AT LINE 17- CONTROL
/OEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 14- CONTROL
/DEBUG/ AT LINE 14" CONTPOL
/DEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 14- CONTROL
/OEBUG/ AT LINE 14- CONTPOL
/DEBUG/ AT LINE 17- CONTROL
/OEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 17- CONTROL
/DEBUG/ AT LINE 14- CONTROL
/DEBUG/ AT LINE 14- CONTROL
TRANSFERRED TO THE TRUE SIDE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 11
TRANSFERRED TO THE TRUE SIDE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 12
TRANSFERRED TO THE TRUE SIDE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 31
TRANSFERRED TO THE TRUE SIOE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 31
TRANSFERRED TO THE TRUE SIOE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 20
TRANSFERRED TO THE TRUE SIDE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 31
TRANSFERRED TO THE TRUE SIOE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 31
TRANSFERRED TO THE TRUE SIDE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 20
TRANSFERRED TO THE TRUE SIOE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 31
TRANSFERRED TO THE TRUE SIDE OF LOGIC
WILL r)£ TRANSFERRED TO STATEMENT 31
TRANSFERRED TO THE TRUE SIOE OF LOGIC
WILL BE TRANSFERRED TO STATEMENT 20
AL IF EXPRESSION
A T L I N E 5
AL IF EXPRESSION
A T L I N E 7
AL IF EXPRESSION
AT L I N E 1 8
AL IF EXPRESSION
AT L I N E 1 8
AL IF EXPRESSION
AT L I N E 2 2
AL IF EXPRESSION
AT L I N E 1 8
AL IF EXPRESSION
AT L I N E 1 8
AL IF EXPRESSION
AT L I N E 2 2
AL IF EXPRESSION
AT L I N E 1 8
AL IF EXPRESSION
AT L I N E 1 8
AL IF EXPRESSION
A T L I N F 2 2 yfl^V
In the rst level 2 loop no debug messages are printed since the TRACE(l) statement is in effect. However,
when the TRACE(3) statement becomes effective, ow is traced up to and including level 3. There are no
messages for transfers within the level 4 loop. To trace only inner loops, for example levels 3 and 4 in the
above example, a CS TRACE(4) statement is placed immediately before the DO statement for the level 3
loop (line 16). A CS OFF (TRACE) statement is placed after the terminal line for the level 3 loop, so that
subsequent program ow in levels 0, 1. and 2 is not traced.
j*38*\
,<SSg\
9-16 60497800 A
/s^\
The level number applies to the entire program unit; it is not relative to the position of the C$ TRACE
statement in the program. For example, to trace the level 4 DO loop in Program P:
C$ TRACE(4)
must be specied. Positioning the statement C$ TRACE(l) before statement 31 would not achieve the same
result.
Care must be taken with the use of debugging statements within DO loops. Since nested loops are executed
more frequently, the quantity of debug output may quickly multiply.
The C$ TRACE (lv) statement traces transfers of control within DO loops; however, transfers between the
terminal statement and the DO statement are not traced.
Example:
DO 100 I = 1,10
100 CONTINUE
Transfers from statement 100 to the DO statement are not traced.
NOGO STATEMENT
i
"ci"
i
l
NOGO
No argument list is specied with this statement. The NOGO statement suppresses partial execution of a pro
gram containing compilation errors.
If a NOGO statement is present anywhere in the program, it applies to the entire program. It is therefore
not affected by an OFF statement or by bounds in an AREA statement.
DEBUG DECK STRUCTURE
Debugging statements may be interspersed with FORTRAN statements in a program unit (main program, sub
routine, function). The debugging statements apply to the program unit in which they appear. Interspersed
debugging statements (gure 9-1) change the FORTRAN generated line numbers for a program.
60497800 A 9-17
Debugging statements also may be grouped to form a debugging deck in one of the following ways:
As a deck placed immediately after the PROGRAM, SUBROUTINE or FUNCTION statement heading
the routine to which the deck applies (internal debugging deck, gure 9-3). Any names specied in
the DEBUG statement, other than the name of the enclosing routine, are ignored.
As a deck immediately preceding the rst source deck in the source input le (external debugging deck,
gure 9-2).
As one or more decks on the le specied by the D parameter on the FTN control statement (external
debugging deck, gure 9-4). When no name is specied by the D parameter, the INPUT le is assumed.
All debugging decks must be headed by a C$ DEBUG statement. In an internal debugging deck, the C$
DEBUG statement is used without an argument list, since the deck can only appear to the routine in which
it is inserted. In an external debugging deck, a C$ DEBUG may be used with or without an argument list.
The statements in the external debugging deck apply to all program units in the compilation.
jOUk
j^^\
/5.'f&$\
Debug
Statements
Debug
Statements
Data Deck
LExecutable Statements
C$ OFF (FUNCS)
C$ STORES(A)
LExecutable Statements
C$ CALLS
C$ FUNCS
LExecutable Statements
Specification Statements
PROGRAM Statement
7
8 r
FTN(D)
/ Job Statement
Debugging statements are interspersed; they are inserted at the point in the program where they will be activated.
Figure 9-1. Example of Interspersed Debugging Statements
i*33*\
9-18 60497800 A
/^k^V
i$s\
Data Deck
Cr, Subroutine B
r
0i^\ External
Debugging
Deck
Program A
C
C$ DEBUG
/ FTN(D)
/ Job Statement
00&\,
The external debugging deck is placed immediately in front of the rst source line. All program units (here,
Program A and Subroutine B) will be debugged (unless limiting bounds are specified in the deck). This
positioning is particularly useful when a program is to be run for the first time, since it ensures that all
program units will be debugged.
Figure 9-2. External Debugging Deck
60497800 A 9-19
Data Deck /^5V
Source Deck
internal
Debugging
Deck C$ DEBUG
PROGRAM Statement
fr
/^^\
FTN(D)
/ Job Statement
/ J * ^ \
When the debugging deck is placed immediately after the PROGRAM statement and before any specication
statements, all statements in the program unit will be debugged (unless limiting bounds are specied in the
deck); no statements in other program units will be debugged. This positioning is best when the job is
composed of several program units known to be free of bugs and one unit that is new or known to have
bugs.
Figure 9-3. Example of Internal Debugging Deck
0&~%\
9-20 60497800 A
0^-K
/$$&b
FTN (l=TAPE1,D)
Compiler
/*p!\
/ D e b u g \
( D e c k j
V TA P E 1 J
Source Deck (INPUT file)
r
/0\
0l~^\i
FTN (D= TAPED
Compiler
The debugging deck is placed on a separate le (external debugging deck) named by the D parameter on
the FTN control statement and called in during compilation. All program units will be debugged (unless the
program units to be debugged are specied in the deck). This positioning is useful when several jobs can be
processed using the same debugging deck.
Figure 9-4. Example of External Deck on Separate File
60497800 A 9-21
/fS®S\
DEBUG STATEMENT
/k
c$
iDEBUG
DEBUG (name , namen) 0i^\
name ,namen routines to which the debugging deck applies
Internal and external debugging decks start with a DEBUG statement and end with the rst line other than
a debugging statement or comment. Interspersed debugging statements do not require a DEBUG statement.
In an internal debugging deck, the rst form of the statement (without an argument list) is generally used,
since the deck can apply only to the program unit in which it appears. If a name is specied it must be the
name of the routine containing the debugging deck; if any other name is specied, an informative diagnostic
is printed.
In an external. debugging deck, if no names are specified, the deck applies to all routines compiled.
Otherwise, it will apply to only those program units specified by name,,...,namen; if any other name is
specied, an informative diagnostic is printed.
Example:
In the following program, a DEBUG statement is not required since the debugging statement, CS
STORES (A,B), is interspersed.
0*^K
/*^\
10
PROGRAM STORAR CINPUTfOUTPUT,0EBUG=0UTPUT)
R E A L A ( 1 0 ) , 8 ( 4 , 2 )
C $ S T O R E S C A , B )
B<1,2) = 5.5
Bf^,2) =0.
DO i* N = 1,3
l * A - t N ) s N + 1
PRINT 5
5 FORMAT (1H0)
STOP
END
,^^\
^^v
9-22 60497800 A
/SPA,
However, if the C$ STORES statement immediately follows the PROGRAM statement, this is an internal debugging
deck, and a C$ DEBUG statement must appear.
/*SN
10
PROGRAM OEHOL (INPUT,OUTPUT,0EBLTG=OUTPUT)
CS OEBUG
C$ STORESdHOL,IRIGHT, ILEFT,HOLD
IH0L=2HPA
IRIGHT=2RPA
ILEFT=2LPA
H0LL=2HPA
PRINT 1
1 FORMAT (1H0)
STOP
END
There can be several DEBUG statements in an external deck, and a routine can be mentioned more than
once.
C$ DEBUG
C$ STORES(I,J)
C$ DEBUG(MAIN,EXTRA,NAMES)
C$ ARRAYS(VECTAB.MLTAB)
C$ DEBUG(MAIN)
C$ TRACE
C$ CALLS(EXTRA,NAMES)
AREA STATEMENT
rc$
l
i
A REA/name./bounds, ,..., bounds., .... /name /bounds.,... .bounds
i n n 1 ' ' r
CS AREA(bounds,,...,boundsn) is used in internal debugging decks only.
name,,name, namen are the names of routines to which the bounds apply.
bounds are line positions dening the area to be debugged.
60497800 A 9-23
/**^S\
bounds can be written in one of the following forms
(n,,n2)
(n3)
(n„*)
(*,n2)
n, Initial line position.
n2 Terminal line position.
n3 Single line position to be debugged.
n, Initial line position.
* Last line of program.
* First line of program.
n2 Terminal line position.
* First line of program.
* Last line of program.
Line positions can be:
nnnnn Statement label.
Lnnnn Source program line number as printed on the source listing by the FORTRAN
Extended compiler (source listing line numbers change when debugging statements are
interspersed in the program).
id.n UPDATE line identifier (defined in the UPDATE Reference Manual); id must begin with
an alphabetic character and contain no special characters.
A comma must be used to separate the line positions, and embedded blanks are not permitted. Any of the
line position forms can be combined and bounds can overlap.
The AREA statement is used to specify an area to be debugged within a program unit. All debugging
statements applicable to the program areas designated by the AREA statement must follow that statement.
Each AREA statement cancels the preceding program AREA statement. An AREA statement (or contiguous
set of AREA statements) specifies bounds for all debugging statements that occur between it and the next
C$ DEBUG, AREA statement, or FORTRAN source statement.
AREA statements may appear only in an external or an internal debugging deck (figures 9-2, 9-3, and 9-4).
If they are interspersed in a FORTRAN source deck, they will be ignored.
^"^isV
^SS&K
9-24 60497800 A
00^\
0$$r\
In an external debugging deck, the following form, with /name/ specied, must be used. It can be used
with both forms of the DEBUG statement.
C$
lAREA/name./bounds.,..., bounds,,,... /name /bounds .bounds
i n n i n
0^!\
or
C,$
I
I
i
AREA/name./bounds. .....bounds .... /name /bounds .bounds
i l ' n n 1 ' ' n
If /name/ is omitted, or names in the /name/ list do not appear in (name,,...,namen) in the DEBUG
statement, the AREA statement is ignored.
In an internal debugging deck, the following form is used, and the bounds apply to the program unit that
contains the deck.
0^\,
0$&\
AREA bounds.,,... .bounds,
1 ' r
60497800 A 9-25
Example:
External deck
C$ DEBUG
C$ AREA/PROGA/(XNEW.10,XNEW.30)/SUB/*,L50)
C$ ARRAYS (TAB,TITLE,DAYS)
C$ AREA/SUB/(15,99)
C$ STORES (DAYS)
Internal deck
C$ DEBUG
C$ AREA (LIO,*)
C$ FUNCS (ABS)
,i*^$\
/S!V
OFF STATEMENT
1
C$"
I
OFF
OFF(x ' * n >
x,,...,xn debug options
The OFF statement deactivates the options specied 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:
/$>Bv
CS
cs
cs
10
15
20
cs
PROGRAM OFF COUTPUT,DEBUG*OUTPUTI
OEBUG
STORES(C)
INTEGER A, B, C
STORESU, B)
A = 1
B = 2
C = 3
MESSAGES HILL BE PRINTED FOR STORES INTO A, B, AND C.
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
0Sb\
/0E8UG/ OFF AT LINE T- THE HEW VALUE OF THE VARIABLE A
/0E3UG/ AT LINE 8- THE NEW VALUE OF THE VARIABLE B
/DEBUG/ AT LINE 9- THE NEW VALUE OF THE VARIABLE C
/DEBUG/ AT LINE 17- THE NEW VALUE OF THE VARIABLE C
IS
IS
IS
IS
PRINTING DEBUG OUTPUT
Debug messages produced by the object routines are written to a file named DEBUG. The le 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,
compile time when debugging is selected.
These routines are called by code generated at
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
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 le 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
SUBROUTINE SUB1
CALL SUB2
RETURN
END
SUBROUTINE SUB2
I = FUNC1(2)
RETURN
END
FUNCTION FUNC1 (K)
FUNC1 = K ** 10
CALL STRACE
RETURN
END
/^s?\
i f f j ^ v
J?WH$\
ff$!is\
9"28 60497800 A
Output from STRACE:
3- TRACE ROUTINE CALLED
FUNC1 CALLEO BY SUB2 AT L I N I 2, FRON LEVELS BACK
SU82 CALLEO BY SUB1 AT LINE 2, FROH LEVELS BACK
SUB1 CALLEO BY MAIN AT LINK 2, FROH LEVELS BACK
/OEBUG/ FUNC1 AT LINE
—^ 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
/*%
^
^
FTN CONTROL STATEMENT 10
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
1
FjTN. comments
I
I
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 le 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 dayle.
A EXIT PARAMETER (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)
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 BURSTABLE 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.
BL = 0 Generates listings in compact format.
C COMPASS ASSEMBLY (Default: C = 0)
C Selects the COMPASS assembler to process the symbolic object code generated by
FORTRAN Extended. When the C parameter is specied, 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 specied 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 conicts with the TS, Q, and E options.
C C C O N T R O L S TA T E M E N T C O N T I N U AT I O N P A 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:
>*^^K
>^V
^^Sv
/^^\
FTN,I=INPUT,CC.
L=OUTPUT,CC.
B=LGO. ^
10-2 60497800G
/&~§K
/fPSN
/*|S*N
D DEBUGGING MODE PARAMETER (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 PARAMETER (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 PARAMETER (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.
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) (Default: EL = I)
EL= A
EL= 1
EL = N
EL= W
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.
Lists informative and fatal diagnostics if compiling under OPT = 0, 1, or 2; lists
note, warning, and fatal diagnostics if compiling in TS mode.
Lists note, warning, and fatal diagnostics if compiling in TS mode; lists fatal
diagnostics if compiling under OPT =0, 1, or 2.
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 (Default: ER if in TS or OPT=0 mode
ER=0 if in OPT=l or 2 mode)
ER
ER=0
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.
No code is generated for object time reprieve.
s^s.
/*S*\
>*ffi^v
G GET SYSTEM TEXT FILE
G = lfn
G = lfn/ovl
G
G= 0
(Default: G = 0)
Loads the first system text overlay from the sequential binary file, lfn.
Searches the sequential binary file, lfn, for a system text overlay with the name
ovl and loads the first such overlay encountered.
Implies G = SYSTEXT
Prevents system text loading from sequential binary le.
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.
y-iC&fcSy
/^^\
GO AUTOMATIC EXECUTION (LOAD AND GO) (Default: GO = 0)
GO
10-4
Binaiy object file (B option) is loaded and executed at end of compilation; file is
not rewound before compilation.
60497800 E
/S^\
0$x\
GO = 0 Binary object le is not loaded and executed.
The GO option conflicts with the Q, E, and B = 0 options.
I SOURCE INPUT 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.
I Implies I = COMPILE
f^ L LIST OUTPUT FILE (SECTION 12) (Default: L = OUTPUT)
L = lfn Listable output (specified by list control options BL, EL, OL, R, and SL) is to be
f^- written onto file lfn. If list control options are not specified, the listing consists
of the source program, informative and fatal diagnostics, and a short reference
map.
t L I m p l i e s L = O U T P U T
^^^^ L = 0 Fatal diagnostics and the statement that caused them are listed on the file
\'' OUTPUT. All other compile-time output, including intermixed COMPASS, is
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 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.
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 OPTIMIZATION PARAMETER (SECTION 11) (Default: OPT = 1) *1
OPT = 0 Fast compilation (automatically activates T and ER options).
OPT = 1 Standard optimization ^
OPT = 2 Maximum optimization
O P T I m p l i e s O P T = 2 ^ S
The OPT option conflicts with the TS and SEQ options.
P PAGINATION (Default: P = 0) ^
P Page numbering of output listing is continuous from subprogram to subprogram,
including intermixed COMPASS 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. ^^)
P D I m p l i e s P D = 8 .
I The job default print density is assumed upon entry. If print density is changed from job default, it will be
returned to job default when finished.
/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 files are generated. **m)
I PS PAGE SIZE (Default: job default)
_ PS = n n is the maximum number of lines per page for compiler listings (including headers).
I I f n < 4 , t h e d e f a u l t v a l u e i s u s e d . ^ _
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 if a terminal output file)
P W I m p l i e s P W = 7 2
\ PW = n n is the number of characters on a line of listable output. Values less than 50
or greater than 136 are diagnosed and ignored.
( Tlie PW option is valid only with TS mode.
f^ Q PROGRAM VERIFICATION (Default: Q = 0)
^k\ Q Quick mode: compiler performs full syntactic scan of the program, but no object
\ c o d e i s p r o d u c e d . N o c o d e a d d r e s s e s a r e p r o v i d e d i f a r e f e r e n c e m a p i s r e q u e s t e d .
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 conicts with the B, C, GO, OL, TS, and E options.
0** R SYMBOLIC REFERENCE MAP (SECTION 13) (Default: R = 1)
R = 0 N o m a p
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
R I m p l i e s R = 2
In TS mode, R = 3 is identical to R = 2; common and equivalence classes are not listed.
ROUND ROUNDED ARITHMETIC COMPUTATIONS (Default: ROUND = 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.
0$$sg\
/S$&£\
ROUND = 0 Computation is not rounded.
RO U N D I mp l i es RO U N D = + - * /
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 J 10-7
/"K\
S SYSTEM TEXT (LIBRARY) FILE (Default: S = SYSTEXT if G parameter = 0
S = 0 if G parameter is other than G = 0) 1
S = ovl System text overlay, ovl, is loaded from the job's current library set. ^^
S = lib/ovl System text overlay, ovl, is loaded from the user library file or system library, lib.
S = 0 System text file is not loaded when COMPASS is called to assemble any inter- }
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.
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.
STATIC STATIC LOADING (NOS 1, NOS/BE 1 only) (Default: STATIC = 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.
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.
/*~^l\
/«N
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
le name.
10-8 60497800 D
This option is used when building libraries that contain more than one relocatable main program. It is
ralso necessary when compiling subroutines containing input/output references to files declared in COBOL
4 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 are made with the more efficient call-by-value sequence. A saving in memory
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 & \ T S I n t i m e - s h a r i n g m o d e , c o m p i l a t i o n s p e e d a n d e l d l e n g t h a r e o p t i m i z e d a t t h e' e x p e n s e o f e x e c u t i o n s p e e d a n d e l d l e n g t h . T i m e - s h a r i n g m o d e i s p r e f e r a b l e t o
the optimizing compilation modes (OPT = 0, 1, or 2) for the debugging stages of
ra program. Specifying option TS together with option C, D, E, Q, or OPT con
stitutes a fatal control statement error.
/$>$$$\
J0~£>\
UO UNSAFE OPTIMIZATION (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 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 I m p l i e s X = O P L .
This feature is for COMPASS subprograms only.
Z ZERO PARAMETER (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
/<!Sr^v
FTN CONTROL STATEMENT EXAMPLES
Example 1:
FTN (A,EL=F,GO,L=SEE,R=2,S=0,SL=0)
Selects the following options:
ASkip to an EXIT (NOS 1) or EXIT(S) (NOS/BE 1 and SCOPE 2) control statement
if fatal errors occur during compilation.
Fatal diagnostics only are listed.
Generated binary object le is loaded and executed at end of successful compilation.
Listed output appears on le SEE.
Long reference map is listed.
When COMPASS is called to assemble an intermixed COMPASS subprogram, it does
not read in a system text le.
Source program is not listed.
Source program on INPUT le; object code on LGO; source program, short map, informative and fatal
diagnostics listed on le OUTPUT; call-by-name sequence generated for calls to basic external functions; no
debug package; optimizing compilation mode; and unrounded arithmetic. Program is executed if no fatal
errors occur.
Example 3:
FTN.
Selects the following options (unless option default values are changed by the installation):
EL=F
GO
L=SEE
R= 2
S^O
SL=0
pie 2:
FTN (GO,T)
A=0 I=INPUT R=l
B=LGO L=OUTPUT ROUND=0
BL=0 LCM=D S=SYSTEXT
C=0 ML=yyddd SEQ=0
CC=0 OL=0 SL
D=0 OPT=l STATIC=0
DB=0 P=0 SYSEDIT=0
E=0 PD=6 T=0
EL=I PL=5000 TS=0
ER=0 PS=60 UO=0
G=0 PW=126 (if not connected file) X=OLDPL
GO=0 Q=0 Z=0
0^K
10-10 60497800 G
gfRN
COMPILATION MODES AND OPTIMIZATION 11
yf#=\
FORTRAN Extended provides several alternative modes for compilation. Their characteristics, together with
the FTN control statement parameter required to activate them, are as follows:
Q Fastest compilation; compiler performs full syntactic scan of source code, but produces
no object code. Minimum field length required for compilation approximates that of OPT=0.
OPT=0, OPT=l, and OPT=2 are ignored if specified. Expedient for finding errors in a pro
gram before attempting to execute it.
TS
OPT-0
OPT=l
OPT=2
D
UO
Very fast, one-pass compilation. Little optimization of object code; execution time of
object code approximates that of OPT=0. Minimum field length* for compilation is
40000$ or 35000§. Expedient for a program which is recompiled before each execution,
unless execution time is over twice as large as compilation time.
Fast, two-pass compilation; little optimization of object code. Most programs can be com
piled in the minimum field length of 460001 or 43000 §.
Two-pass compilation; moderate optimization of object code. Most programs can be com
piled in the minimum field length of 46000 T or 43000 §. Expedient for programs which
are recompiled before each execution but require excessive execution time in TS mode.
Relatively slow, two-pass compilation; extensive optimization of object code; fastest execution.
Minimum field length required for compilation is 5 40001 or 5100. Programs in which the
longest program unit consists of less than about 600 statements can be compiled in a field
length of 60000; above that, field length required for compilation is proportional to the
number of executable statements in, and the complexity of, the longest program unit. This
optimization level is expedient for programs whose code is executed many times per com
pilation; it should not be used for undebugged programs since code redistribution in opti
mization renders debugging difficult if the executing program terminates abnormally.
Activates FORTRAN Extended debugging facility (see section 9). Minimum field length
required for compilation is 63000$ or 61000§. Automatically activates OPT=0; OPT=l
and OPT=2 are ignored if specified. Specification of TS is a fatal error. Necessary for
programs in which execution-time debugging is desired.
Provides additional potentially unsafe object code optimization when both the OPT=2 and
UO options are specified.
'Field lengths are given in octal.
$ Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2.
60497800 C 11-1
OPTIMIZING MODE
When TS is not present on the FTN control statement (OPT=0, 1, or 2) the compiler functions in optimizing
mode. Time-sharing mode and optimizing mode differ not only in the kinds of optimizations performed, but
also in the listing format produced. Source listings are described in section 12, reference map format in
section 13, object code format in section 14, and diagnostics in Appendix B.
In optimizing mode, optimizations can be performed in two ways: by the compiler and by the user. User
optimization includes not only the standard methods that represent good programming practice, but also cer
tain specic methods that enable the compiler to optimize more effectively. Source code optimization and
object code optimization are discussed below.
OBJECT CODE OPTIMIZATION
OPT=0
In the OPT=0 compilation mode, compile time evaluations are made of constant subexpressions, redundant
instructions and expressions within a statement are eliminated, and PERT critical path scheduling is done to
utilize the multiple functional units efciently.
OPT=1
In the OPT=l compilation mode, the following optimizations take place in addition to those in OPT=0:
1. Redundant instructions and expressions within a sequence of statements are eliminated.
2. Subscript calculations are simplied, and values of simple integer variables are stored in machine
registers throughout loop execution, for innermost loops satisfying all of the following conditions:
No entries other than by normal entry at the beginning of the loop.
No exits other than by normal termination at the end of the loop.
No external references (user function references or subroutine calls; input/output, STOP, or
PAUSE statements, or basic external function references) iri the loop.
No IF or GOTO statement in the loop branching backward to a statement appearing
previously in the loop.
OPT=2
In the OPT=2 compilation mode, the compiler collects information about the program unit as a whole and
the following optimizations are attempted in addition to those in both OPT=0 and OPT=l:
0$$$\
1. Values of simple variables are not retained when they are not referenced by succeeding statements. ^
2. Invariant (loop-independent) subexpressions are evaluated prior to entering the loops containing
them. 6kb ^
11-2 60497800 A
3. For all loops, the evaluation of subscript expressions containing a recursively defined integer var
iable (such as I when 1=1+1 appears within the loop) is reduced from multiplication to addition.
4. Array addresses, values of simple variables in central memory, and subscript expressions are stored
in machine registers throughout loop execution for all loops.
5. In all loops and in complicated sections of straight-line code, array references and subscript values
are stored in machine registers.
6. In small loops, indexed array references are prefetched after safety checks are made to ensure that
the base address of the array and its increment are reasonable and should not cause an out-of-
bounds reference (mode 1 error).
UO
In unsafe optimization mode, the optimizations listed below are made, in addition to the optimizations made
f under OPT=2, since OPT=2 must also be selected. If OPT=2 is omitted, UO is not invoked.
1. In small loops, indexed array references are prefetched unconditionally without any safety checks.
Example:
REAL B(100,100)
DO 20 I = 1,100,10
20 S = S + B(J,I)
When the compiler prefetches the reference to B, the last reference to B in the loop is B(J,110)
which might cause an out-of-bounds error at execution time if the array B is stored near the end
of the field length.
2. When a basic external function is referenced, the compiler assumes that the contents of certain B
registers are preserved for use following the function processing.
Example:
REAL A(10),C(10)
DO 10 I = 1,N
10 C(J) = EXP(A(I))
The compiler might assign I and N to B registers during the loop.
In a loop, the registers available for assignment are determined by the presence or absence of external ref-
f^ erences. External references are user function references and subroutine calls, input/output statements, and
basic external functions (SIN, COS, SQRT, EXP, and so on).
60497800 D H_3
When UO is not selected, the compiler assumes that any external reference modifies all the registers; therefore
it does not expect any register contents to be preserved across function calls. /S%
If a math library other than the FORTRAN Common Library is used at an installation to supply basic external
functions, the B register portion of the UO option must be deactivated by an installation option in order to ^\
ensure correct object code.
0<&$!$K
SOURCE CODE OPTIMIZATION
To achieve maximum object code optimization regardless of optimization level, the user should observe the "^
following practices for programming source code:
1. Since arrays are stored in column major order, DO loops (including implied DO loops in input/ ^%
output lists) which manipulate multi-dimensional arrays should be nested so that the range of the
DO loop indexing over the first subscript is executed first.
r4£~%\
Example: >
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:
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
/*S3|V
/PN
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)
Likewise, invariant and constant expressions should be grouped appropriately.
Example:
DO 10 I = 1,50
10B(I)= 1. + A(I) + X
is less efficient than
DO 10 I = 1, 50
10B(I) = (1. + X) + A(I)
Example:
f X = 1 0 2 4 . * B * 3 . 1 4 1 5 9
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.
0Ss<
08\
Example:
Y = ALOG(A) + ALOG(B)
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 directly. '*ss*\
Example:
DO 100 K = 1,N
1 0 0 S = S + A ( I , K ) * B ( K , J ) ^
C(I,J) = S
is more efficient 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 LINE FORMAT
0m\
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
d blank First line of a statement \
0 ^ s I
( , /-,'...,. ( 1 column immediately following
+ Continuation line > .
/ sequence number
f^ Any other 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^ 00130+ C(200)
1 00140 10 CALL SUB(A,B,C,100)
00150 STOP
0^ 00160 END
/**^^.
60497800 B 11-7
")
^%
1
~
/#*^
/$P\
/p S \
COMPILER LISTINGS 12
rThe listings produced by FORTRAN Extended during compilation are affected by control statement options
(the defaults are SL, EL=I, OL=0, R=l, and L=OUTPUT). The types 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.
Object code Includes generated object code, listed as assembly language instructions (see section
^^ 14). Selected by OL control statement option.
C" 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
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.
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
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 specied 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.
. x ^ y
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:
LIST.option
C/
option
must appear in columns 1 and 2 with columns 3 through 6 blank
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.
are allowed; continuation is not permitted. Leading, trailing, and embedded blanks /^\
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\
jtjp**.
/flN
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.
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.
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:
PROGRAM P
C/ COMMENT
C/ LIST.NONE
C/ COMMENT
DIMENSION A(l
INTEGER B/C
C/ LISTtALL
00 100 1 = 19 10
100 A(I>=0.
C/ 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 P R O - A M P
0/ nOM-iEMT
ANSI * STATEMENT IS NOT OFFINEO TN AMSI
C / L I S T, N O N - 7
ft TMTTQpp p./C
FATAL * frVD5r"TF0 COMMA FOUND ■■ >/
C/ LIST,ALL
n o 1 0 0 i = t » i o ^
1 0 0 A ( T ) = 0 . '
10 C LTSTfNONF
11 prj'JPM
ANST * R7TIKN IN MAIS PROGRAM
NOTE * R-TURM ArTS AS FMH
1 F O R T R A N ^ R R O R T N 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 P 74/74 OPT»l
10
PROGRAM P
c/ COMMENT
c/ LIST.NONE
INTEGER f./C
c/ LIST.ALL
DO 100 1*1*10
100 A<I)»0.
c/ LIST.NONE
1ANSI
6FE
8 I
11
CARD NR. SEVERITY OETAILS DIAGNOSIS OF PROBLEM
THIS STATEMENT TYPE IS NON-ANSI.
ILLEGAL SYNTAX AFTER INITIAL KEYWORD OR NAME.
THIS STATEMENT REDEFINES A CURRENT LOOP CONTROL VARIABLE OR PARAMETER.
RETURN STATEMENT APPEARS IN MAIN PROGRAM.
A full error summary is produced since a fatal error was detected at line 6.
Example 4:
Example 4 shows the listing produced by a compilation resulting from the control statement: f^ki
FTN,TS,OL,R=0,PW=50.
12-4 60497800 B
0$fc\
0^\
The listing is as follows:
FTN H-.6 + -V20 02/10/76 15.32.26 PAGE 1
73/7-4 TS
1 SUBROUTINE INIT (A,M,V>
C I N I T ° U T S T H E V A 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 A Y A
IDENT INIT
0 N E I N I T
3 B L . 5 B S S 0
3B S<30 B2-LEN.
S30 B2+L.0 TRACE.
DO 1 T= 1 ,M
* * B B S S 0
kB SRO B2+0+3
1 A ( I ) = V
5 C
F STATEMENT FUNCTION DEFINITION MUST OCCUR
>>>> BEFORE FIRST EXECUTABLE
W * STATEMENT LA1EL IGNORED
ENTRY AODIT
j ^ C A O D T T A D D S T H E V A L U E V T O E V E R Y E L F .
> » > M E N T I N A R R A Y A
W * ENTRY INSIDE OO LOOP IS IGNORED
rQ L.ll
DO 2 T = 1,M
F * INDEX OF OUTER OO REDEFINEO BY CURRENT DO
C/ LIST,NONE
1 0 2 A ( I ) = A ( I ) + V
F * STATEMENT FUNCTION DEFINITION MUST OCCUR
>>>> BEFORE FIRST EXECUTABLE
W * STATEMENT LABEL IGNORED
C/ LIST,ALL
END
F * STATEMENT LABEL .2 REFEPENCFD BUT
>>>> NOT DEFINED
F * STATEMENT LABEL .1 REFERENCED BUT
>»> NOT DEFINED
F * DO LOOP .1 MOT TERMINATED BEFORE END
>>» OF PROGRAM
F * D O L O O P . 2 N O T T E R M I N A T 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\
/*"S"\
J$#^*\
0$^\
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.
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 eld 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.
60497800 A 13_1
SOURCE PROGRAM
Main Program
to
is
PROGRAM MAPS
1<INPUT.0UTPUT»TAPE5*INPUT.TAPE6»0UTPUT)
INTEGER SIZE1* Sit SIZE2. SZ .STRAY
EQUIVALENCE(SIZEltSl).(SIZE2fS2)
NAMELIST/PARAMS/SIZE11SIZE2
OATA S1.S2/12.12/
100 REAOO.PARAMS)
WHITE(6.PARAMS)
PK1NT1
1 FORMATUOSAMPLE PROGRAM TO ILLUSTRATE THE VARIOUS
CALL PASCAL(SI)
PRINT2
2 FORMATt#OTHE FOLLOWING WILL HAVE NO HEADINGS.**)
CALL N0HEADCS2)
STOP
END
MAPS 00b
HAPS 00*
MAPS 007
MAPS 006
HAPS 009
MAPS 010
MAPS OU
HAPS 012
MAPS 013
COMPILER MAPS.i*)MAPS 014
HAPS 015
HAPS OU
HAPS 017
HAPS 016
HAPS 019
MAPS 020
jr^im^s.
Block Data Subprogram
BLOCK OATA
COMMON/ANARRAY/X(22)
INTEGER X
DATA XI22I/1/
END
HAPS 021
NAPS 022
HAPS 023
HAPS 024
HAPS 02S
Subprogram with
second entry /<*«%
10
IS
SUBROUTINE PASCAL(SIZE)
INTEGER L(22).SIZE
COMMON/ANARrtAY/L
PRINT-,, (ltl'l.SIZE)
FORMAT(44H0COHBINATI0NS OF H THINGS TAKEN N AT
S22I6)
ENTRY NOKEAO
M«MIN0(2l*MAX0<2*>SIZE-m
D021M.M
K«22-l
L(K)»l
D01J3K.21
L(J)»L(J)»L(J»1)
PRINT3.(L(J)*J'K.22)
FORMAT(2216)
RETURN
ENO
MAPS 026
MAPS 027
MAPS 028
MAPS 029
A TIME.//20X.3H-N-/MAPS 030
MAPS 031
HAPS 032
HAPS 033
HAPS 034
HAPS 035
HAPS 036
HAPS 037
HAPS 038
HAPS 039
HAPS 040
HAPS 041
HAPS 042
/ffi^
13-2 60497800 A
R=1 MAPS
SYMBOLIC REFERENCE HAP (R«l)
ENTRY POINTS
4111 MAPS
VARIABLES SN
4176 SIZEl
4175 STKAV
4177 S2
TYPE
INTEGER
INTEGER
INTEGER
RELOCATION
•UNOEF
4177 SIZE2
41/6 SI INTEGER
INTEGER
FILE NAMES
0 INPUT MODE
2041 OUTPUT F M T 0 TAPES NAHE
EXTEhNALS
NOHEAO TYPE ARGS
1PASCAL
NAMEL1STS
PARANS
STATEMENT LABELS
4 1 5 3 1 F M T 4166 2 F M T
STATISTICS
PROGRAM LENGTH
BUFFER LENGTH 75B
4103B 61
2115
2041 TAPE6 NAHE
0 100 INACTIVE
j«JK\ BLOCK DATA 74/74 OPT«l
SYMBOLIC REFERENCE HAP (R>1)
VARIABLES
0 X SN TYPE
INTEGER
COMMON BLOCKS
ANARRAY LENGTH
22
STATISTICS
PROGRAM LENGTH
CM LABELEO COMMON LENGTH
RELOCATION
ARRAY ANARRAY
OB
268 22
FTN 4.4»»EL. 0 2 /? e / 7 S 0 9 . 3 2. 5 7 . PAGE
SUBROUTINE. PASCAL 74/ 74 O PT "! FTN 4.4.oFL. 0 2 / ? 8 / 7 5 0 9 . 3 2 . 5 7 . PAGE
0$^\
0 S \
ENTRY POINTS
27 NOHEAU
SYMBOLIC REFERENCE MAP (l)
3 PASCAL
VARIABLES
11 5 I
117 K
116 H
FILE NAMES
OUTPUT
SN TYPE
INTEGER
INTEGER
INTEGER
MODE
FMT
INLINE FUNCTIONS TYPE
MAXO INTEGER
STATEMENT LABELS
0 1
7 6 4 F M T
LOOPS LABEL INDEX
2 1 I
4 4 2 I
5 2 1 J
COMMON BLOCKS
ANARRAY
LENGTH
22
RELOCATION
ARGS
0 INTR1N
FROM-TO
4 4
9 14
12 13
STATISTICS
PROGRAH LENGTH 123b
CM LABELEO COMMON LENGTH 26B
0 2
LENGTH
4B
24B
3B
83
22
120 J
0 L
0 SIZE
MINO
PROPERTIES
INTEGER
INTEGER ARRAY ANARRAY
INTEGER F,P,
INTEGER 0 INTRIN
1 1 3 3 F H T
EXT REFS
EXT REFS
INSTACK
NOT INNER
60497800 F 13-3
R=2/R=3 MAPS
SYMBOLIC REFERENCE MAP |R>3>
ENTRY POINTS
41)1 HAPS
VARIABLES
•176 SI7FI
4177
ITS
4176
4I7T
St7E2
STRAY
SI
S2
FILE NAMES
o Input
204! OUTPUT
0 TAPES
?04l TAPFA
EXTERNALS
NOMEAD
PASCAL
NAMELiST*
PAUAMS
OFF LINE
1
TYPE
integer
INTEGER
INTEGER
INTEGER
INTEGER
MODE
FMT
NAME
NAME
REFERENCES
RELOCATION
ARCS
I
WRITES
HEADS
WRITES
REFERENCES
14
II
OFF LINE
5
STATEMENT LABELS
4 I S 3 1 F M T
4 1 6 6 2 F M T
0 1 0 0 INACTIVE
REFERENCES
T
OL'F LINE
10
13
T
REFS
REFS
REFS
REFS
REFS
OEFINEO
DCFINEO
/"53S,
HEFERFNCES
'9
12
COUtV CLASSES
SIZEl
SI7E2
LENGTH
I
I
MEMBERS •BIAS NAME'LENGTH!
0 S i I I I
0 S 2 U l omitted from R=2 map
STATISTICS
PROGRAM LENGTH
BU*TER LENOTH
TSB
4103R
61
21 IS
BLOCK OATA 74/7 4 OPT- 1
SYMBOLIC REFERENCE MP |3I
VARIABLES
0 X
SN TYPE
INTEGER RELOCATION
ARRAY ANARRAY REFS
COMMON BLOCKS LENGTH
ANARRAY 22
MEMBERS - BIAS NAKEILCNOTHl
t a . 1 2 2 1
FTN 4.4.REL. 02/28/75 09.36.38. PAGE 2
t 3 D C F I N E O 4
omitted from R=2 map
PROGRAM LENGTH
CN LABCLCO COMMON LENOTH 2 6 B M
lUHHOUtJNE PASCAL T«/7* <IPT»| FTN 4.4* OIL. 0?/?H/f<, 09. 36. 3
SYMBOLIC MEFEKENCl MAP (R-31
ENTRY POINTS DEF LINE
27 NOKEAO 7
3 P A S C A L 1
REFEHCNCLS
16
VA RIAII .C S SN TYP E
lib 1 1NIEGCR
129 J INTEGER
117 K INTEGER
0 L INTEGER
116 M INTEGER
0 SUE INTEGER
RELOCATION
ARRAY ANARRAY
F. P,
REFS
REFS
REFS
REFS
REFS
REFS
3*13
II
2
9
2
10
14
12
3
OEFINEO
4
DEFINED
DCFINEO
1*
2*13
0
12
DEFINED
14
DEFINED
1 4
10
DEFINED
1
F I L E N A M E S M O D E
INLINE FUNCTIONS TYPE ARGS OEF LINE REFERENCES
MAXO INTEGER 0 INTRIN B
MINO INTEGER 0 INTRIN 6
STATEMENT LABELS
0 I
0 2
1 1 3 3 F M T
7 6 4 F M T
DEF LINE
13
14
IS
S
REFERENCES
12
9
14
LOOPS
21
LABEL
COMMON BLOCKS
ANARRAY
INDEX
I
I
J
LENGTH
22
FROM-TO
4 4
9 14
12 13
LENGTH
4B
24a
3B
PROPERTIES
INSTACK
EXT REFS
EXT REFS NOT INNER
MEMBERS - BIAS NAHCILCNOTH)
L ( 2 2 1 omitted from R=2 map
STATISTICS
PROGRAM LENGTH
CM LABELED COMMON LENOTH
1238
26(1
83
22
jSBv
13-4 60497800 F
/**^\
General Format:
Each class of symbol is preceded by a subtitle line that species the class and the properties listed.
Formats for each symbol class are different, but printouts contain the following information:
The octal address associated with each symbol relative to the origin of the program unit.
Properties associated with the symbol
List of references to the symbol (for R=2 and R=3 only)
All line numbers in the reference list refer to the line of the statement in which the reference occurs. Multiple refer
ences in a statement are printed as n*i where n is the number of references on line i.
All numbers to the right of the name are decimal integers unless they are suffixed with B to indicate octal.
Names of symbols generated by the compiler (such as system library routines called for input/output) do not appear
in the reference map.
r
ENTRY POINTS
Entry point names include program and subprogram names and names appearing in ENTRY statements. The format
of this map is:
addr
name
def
ref
ENTRY POINTS
addr name
DEFINITION
def
REFERENCES
ref
Relative address assigned to the entry point.
Entry point name as dened in FORTRAN source.
Line number on which entry point name is dened (PROGRAM statement, SUBROUTINE
statement, ENTRY statement, etc.). (Not on R=l maps.)
In subprograms only, line number of RETURN statements. (Not on R=l maps.)
/$p>\
R=l
EMTRY POINTS
27 NOHEAD PASCAL
andR=3:
ENTRY POINTS
27 NOHEAO
3 PASCAL
OEF LINE
7
1
. REFERENCES
16
60497800 A 13-5
VARIABLES
Variable names include local and COMMON variables and arrays, formal parameters, RETURNS names, and for
FUNCTION subprograms, the dened function name when used as a variable. The format of this map is:
VARIABLES SN TYPE RELOCATION
addr name * 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 agged 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 undened; however variables which
are used (in arithmetic expressions, etc.) before they are defined (by an
assignment statement or subprogram call) are not flagged. /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.
13-6 60497800 A
^s^S
j-jSp&K
refs (Does not appear in short map, R=l.)
References and denitions 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.
rR=l: This map form uses a double column format to conserve space. Headings appear only on the rst columns.
VARIABLES
U S I
117 K
116 H
SN TYPE
INTEGER
INTEGER
INTEGER
RELOCATION 120 J
0 L
o size
INTEGER
INTEGER
INTEGER ARRAY ANARRAY
F. P.
R=2 and R=3:
VARIABLES
0^\ IIS
120
117
0
116
0SIZE
SN TYPE
INTEGER
INTEGER
INTEGER
Ir-HbLH
INTEGER
INTEGER
RELOCATION
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
DEFINED
14
10
DEFINED 13
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.
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
UNFMT
NAME
BUF
MDCED
blank
list Directed I/O READ(2,*)
Unformatted I/O READ(2)
Namelist Name I/O READ(2,NAMEIN)
Buffer I/O BUFFER IN(2,0)
Some combination of the above.
Mode cannot be determined.
(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 le name.
>G&^V
/^ErjjV
R=l:
FILE NAMES
0 INPUT
R=2 and R=3:
20 41 OUTPUT FM T 2041 TAPE6 NAME
F I L E N A M E S H O O E
0 INPUT
2041 OUTPUT FHT
0 T A P E S N A M E
2041 TAPE6 NAME
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:
name
13-8
EXTERNALS
name
TYPE
type
ARGS
prop
REFERENCES
refs
External name as it appears in source listing.
60497800 A
/ ^ H
j<^^\
rG&e$\
0S5$K
type
/"sn prop
refs
R=l:
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.
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.)
Line number on which name is referenced. (Does not appear in short map, R=l.)
EXTERNALS
NOKEAD
TYPE ARGS
1
:=2andR=3:
EXTERNALS
NOHEAO
PASCAL
TYPE ARGS
1
1
REFERENCES
14
11
0Ss.
INLINE FUNCTIONS
Inline functions include names of intrinsic and statement functions appearing in the subprogram. The subtitle line is:
name
mode
args
ftype
def
refs
INLINE FUNCTIONS TYPE ARGS DEF LINE REFERENCES
name mode args ftype def refs
Symbol name as it appears in the listing.
Arithmetic mode, NO TYPE means no conversion in mixed mode expressions.
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.
INTRIN Intrinsic function.
SF Statement function.
Blank for intrinsic functions; the definition line for statement functions.
Lines on which function is referenced.
60497800 C 13-9
j-|pi\
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
name
def
refs
R=l:
NAMELISTS
name
DEF LINE
def
REFERENCES
refs
Namelist group name as dened in FORTRAN source.
Line on which namelist is defined. \
(Does not appear in short map.)
Line numbers of references to name.
NAMELISTS
PAR4HS
R=2 and R=3:
NAMELISTS OEF LINE REFERENCES
P A R A H S S 7 8
y * ^ - V
^*sVfV
STATEMENT LABELS
The statement label map includes all statement labels defined in the program or subprogram. The format of this map
is:
addr
label
type
13-10
STATEMENT LABELS
addr label type
DEF LINE
act def
REFERENCE
refs
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.
Statement label from FORTRAN source program. Statement labels are listed in nu
merical order.
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.
60497800 A
yfSSN
act
def
refs
R=l:
STATEMENT LABELS
0 1
7 6 4 F H T
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.
Line number on which label was defined. (Does not appear in short map.)
Line numbers on which label was referenced. (Does not appear in short map.)
1 I J 3
00&\
R=2 and R=3:
STATEMENT LABELS
0 1
0 2
1 1 3 3 F H T
7 6 4 F H T
OEF LINE REFERENCES
1 3 1 2
1 4 9
1 5 1 4
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:
fwa
term
LOOPS LABEL INDEX FROM-TO LENGTH PROPERTIES
fwa term index first-last len prop
Relative address assigned to the start of loop body.
Statement label defined as end of loop, or blank for implied DO loops in input/output
statements.
index
first-last
Variable name used as control index for loop, as dened by DO statement.
Line numbers of the rst and last statements of the loop.
60497800 E 13-11
len
prop
R=1,R=2, and R=3:
LOOPS LABEL INDEX
2 0 I
4 3 2 I
5 2 1 J
Number of words generated for the body of the loop (octal).
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.
FROM-TO LENGTH PROPERTIES
4 4 B E X T R E F S
9 14 208 EXT REFS NOT INNER
1 2 1 3 2 8 I N S T A C K
/£$$\
/S""\
xV^v
COMMON BLOCKS
The common block map lists common blocks and their members as dened in the source program. The format of this
map is:
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.
>c^^v
* 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 dened 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
ANARRAY 22
R=3:
COMMON BLOCKS LENGTH MEMBERS - BIAS NAME(LENGTH)
ANARRAY 22 01 <22>
0$S\
/ # ^ S
cbase
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)
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 rst 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.
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.
Number of words allocated for base (considered the class length).
Position of member relative to base; bias is in decimal.
Variable name dened 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:
base
clen
member
EQUIV CLASSES
SIZEl
SIZE2
LENGTH MEMBERS - BIAS NAME (LENGTH!
1 9 S I ( I I
1 0 S 2 ( I J
60497800 E 13-13
/SS*\
PROGRAM STATISTICS
At the end of the reference map, the statistics are printed in octal and decimal. The format is:
STATISTICS ^
PROGRAM LENGTH Length of program including code, storage for local variables, arrays, constants,
temporaries, etc., but excluding buffers and common blocks. *^\
0$$$\
0&wO\
BUFFER LENGTH Total space occupied by input/output buffers and file information table.
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:
STATISTICS
PROGRAM LENGTH 1238 S3
CH LABELEO COMMON LENGTH 268 22
ERROR MESSAGES
The following error messages are printed if sufcient 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 verier and correcting the FE
errors until the program compiles. /tS^>^
Using the listing, the R=3 reference map, and the original owcharts, the following information should be checked by
the programmer: ^i^
)
Names incorrectly punched
Stray name flag in the variable map 1
Functions that should be arrays
Functions that should be inline instead of external
,*G5v
13-14 60497800 A
i^^^V
f" '
j?P^V
Variables or functions with incorrect type
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 N o m a p
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
<Or-tOO'^Ttt\lt'>^ll\tDr.rOfJiOrit\l
cutvtMCianmrimtorrmnpttiJt&jT
OQOOOOOQOOOOOOOOO
(/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.
<<x<t««t«x«xct.x.x<tct<i«t«t««x
xxxxxxxxxxxxxxxxx
/^ &^ V
> - n _ J
« V t « x
O f Z 7
kh>-o;>
< acitrujar
z f f f f
1 2 2 X Z
S H U 1 U J U .
fl) CO
>«%.
O - I
«r or «
clilOO
X I f v t
< O Z3*t
- 1 - I T Z O O L
j/^Sv
4 H J M H < \ J *
u n \ • « ) - h i i
in f>-tiz o +">
< : . < t i i o x " s »
a w o r m o o « i » • - . * .
C \ J Q * o « I X — I " } * D
U J W 0 M X U l « • + w | x
r J 7 » J X ^ 4 r < - J M
l - l < t J - O N X C J " J * » C M
f a t v . - t . z t . » . . W . . . »
3UIZJI- OfHM^^JMhZ
O O O I - o - > Z I I I I I I I I t f « O f
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
«/- <I cj
zzz
»-• or or
Of UJ Ul
cr. <» cd
.-I C\J CM
,_, |_ i | _ ! | _ ! | | M
j«SX
13-16 60497800 B
jfJ^N
R=2, R=3 MAPS
S&Q^S
lONOO,OHr\IKl<tiriltlNa>0>Orl(U
CMCvjcvjMMioroiofOfjrjwiowj'J-*
0OOOOOOOOOOOOOOQO
VHAVKAIAdVIHI/IIAinlAmlOI/IIA'/)
aa.ao.aa.aa.aa.a.a.a.ao.a.&
xxxxxxxxxxxx xxxxx
V t o
o u i o < i
<T> IO «M -i
X CO CO G O
j - f o t h k > c r
X X
J- J -
L ' G I I O I I 4 b l X x x u «a
J - J -
- i - a _ j _ j
« l-f _J CO f-l
. 4 I I O
CLCUCHO o <t
3 Ul z J- I-
O O O I - « s -
o r u < x ? t * £ c y
IUHBHI-
3 2 o a O tt 2
COI—C1CJ.U.CMUJ
II
+ - I
_i -> «c
+ • - f H
ft -J CM
CM -) «» l\J
HHN«1-?r3
XCVJCVJiCfi—JH-Q i-o
HOII-O^ttOli z
xov_ig_iq u vin
N O > J J - >- l - l l - l _ l - j - i
<x
Ot'
Of
«I
z
«
N.
t o V I < t
Z Z z
h h j - a
o f o f a i u
i - 1 - i - i -
Z Z Z X
H H L : I i )
Z Z
c r o r > -
u i u j o r
XXX
Ui UJ Ul
cr cr cr> cr
c *£S CM CM CD cr. CO or c r c o
j o f - r- CM <r vC «=
l\ CM CM *c
c o u. u.
•X t-
o a u o
X Z X I-
<t M O Z3
* _ J X X 2 Z O
CJ 0 O U i
f - I - f N <
33«fM
c o a co
60497800 B 13-17
y^Sv
COMMON BLOCKS
The common block map lists common blocks as defined in the source program. The format of this map is:
- - COMMON BLOCKS - -
length /block/
length Length (in octal) of common block.
block Common block name as defined in COMMON statement.
// represents blank common.
R=l, R=2, R=3:
COMMON BLOCKS--
'63 /ANAP=>AY/
ENTRY POINTS
This map lists names of program units, names appearing in ENTRY statements, and (for a main program) all
file names dened 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 PASCAL
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
**?^N
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
/0^\
This map includes all statement labels defined in the program or subprogram. The format is:
- - STATEMENT LABELS - -
label properties addr references
label
properties
addr
Statement label, preceded by a period. Labels are listed in ascending numerical order.
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.
Relative address (in octal) assigned to this label. Some inactive labels will have an
addr of zero.
/$S\
references
R=l:
—STATEMENT L49ELS—
. 1 T O
Line number and type of reference to statement label,
the short map (R=l). The type can be:
References do not appear in
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.
oa .2 10 102B 72 B
R=2, R=3:
•STATEMENT LABELS
. 1 T O OR 12 13 L
. 2 1 0 u<fB !«• L
. 3 c lfl?D 1*. w 15 L
. « . F 7?B C M S L
60497800 B 13-19
X3|\
VARIABLES
All symbolic names referenced in the program unit are listed here. The format of this map is:
-- VARIABLE MAP - -
name type properties addr block length references
name
type
addr
block
length
references
13-20
Name of variable as it appears in source listing.
Variable type:
1INTEGER
RREAL
DDOUBLE PRECISION
ZCOMPLEX
LLOGICAL
NNAMELIST name
-No type
properties Properties as follows:
A Variable is used as a formal parameter.
U Variable is undefined.
= Variable is equivalenced to a defined variable,
blank None of the above.
Relative address (in octal) assigned to this variable.
Name of common
description of the
ENTRY
SUBROUTINE
INTRINSIC
STAT-FUNC
B.E.F.
FUNCTION
EXTERNAL
block in which variable appears, or (if no address is specified) a
type of symbolic name:
name is an entry point.
name is a user supplied SUBROUTINE subprogram or a library
utility subprogram,
name is an intrinsic function.
name is a statement function.
name is a basic external function,
name is a user supplied FUNCTION subprogram,
name appears in an EXTERNAL statement or is a compiler
generated external reference.
Array length (in decimal) for dimensioned variables.
Line number and type of reference to variable,
in the short map (R=l),. The type can be: References do not appear
A
C
D
E
F
Variable appears as argument to subroutine or function.
Variable appears as DO loop control variable.
Variable appears in specication statement.
Variable used as entry point.
Variable appears in IF statement.
60497800 B
/SSI^l
j/^$£y
0^^\
0&i&^\
jpJBftK
/?S8y
blank
/gs*», R=l:
Variable appears in DATA statement.
Variable appears in READ statement.
Variable appears in subscript.
Variable appears in WRITE or PRINT statement.
Variable appears as an external reference.
Variable appears on the left side of an arithmetic replacement statement.
Variable appears in ENCODE or DECODE statement.
Variable appears on the right side of an arithmetic replacement statement.
VARIABLE MAP—
jjfSPv
11 7 B I u 120 B
K I 121B 0 8 /ANARRAY/
M I 1228 MAXO INTRINSIC
MINO INTRINSIC NOHEAO 168 ENTRY
OUTCI. EXTERNAL. OUTCR. EXTERNAL.
OUTPUTE EXTERNAL. PASCAL 668 ENTRY
size AU OB
R=2, R=3:
22
VARIABLE NAP—
I [ I J l t 7 B
J 1r U 1*>C9
K 1 121B
L 1 CB / A N A RPAY /
H 1 1?2B
H A X O ] INTRINSIC
M I N O ] INTRINSIC
NOHEAD 16B FNTRY
OUTCT. EXTERNAL.
">?.
t* c ' u w 10
12 C 13' S 13 13 S 1<4
10 = 11 S 12 1* C
2 n 3 0 11 13 13
8 = 9 C
<\ A
9
7 c
l * W 1<* w
14 S
13 = !< H
/sSS\
60497800 C 13-21
">
n
^
^
^
^
J0^\ OBJECT CODE 14
/SP*x
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.
/fl^N
SUBROUTINE AND FUNCTION STRUCTURE
The code within subprograms is arranged in the following blocks (relocation bases) in the order given.
START.
VARDIM.
ENTRY.
CODE.
0^\
DATA.
DATA..
Code for the primary entry and for saving AO
Address substitution code and any variable dimension initialization code
Either a full word of NO's (46000.. . 46000B) or no storage used for this block
Code generated by compiling:
Executable statements
Parameter lists for external procedure references within the current procedure
Storage for compiler-generated temporary entities
Storage for simple variables, FORMAT statements, and program constants
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.)
EXTERNAL PROCEDURE NAMES
X-^ff^V
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
specified 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
if option T, D, or OPT=0 is specified on the FTN control statement. ^
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.
CODE
LITERAL
FORMAT
TEMP
ARG
NAMELIST
VARIABLE
BUFFER
Code resulting from compilation of executable statements, and parameter list for
current subprogram (not used in main programs)
Storage for constants of all kinds
Compressed versions of FORMAT declarations (interpreted at execution time)
Compiler-generated temporary entities
Argument lists for external subprograms called in this program unit
Argument lists for calls to NAMELIST input/output
Storage for variables and arrays not declared in common or in ECS/LCM
Input/output buffers
/"sS^S.
0$\
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 14-3
/T^N
r\
1
^
EXECUTION CONTROL STATEMENT 15
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:
INPUT... fit address INPUT
OUTPUT.. fit address OUTPUT
TAPE1... fit address TAPE1
TAPE2 ... fit address TAPE2
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 specied 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 specied 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 le name substitution.
The print limit parameter (specified either at compilation-time or at execution-time) is operative only on
les with the name OUTPUT in the first word of its corresponding le information table. Thus, if a le
name declared in the PROGRAM statement is superseded at execution-time by the le name OUTPUT as
described previously, the print limit parameter will be operative on the original file name. Conversely, if 'y
the le name OUTPUT is superseded at execution-time by another le 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
c a u s e t h e l i n e c o u n t f o r t h e p r i n t l i m i t t e s t t o b e r e s e t ^ %
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 le
OUTPUT connected. This option is valid for interactive jobs only. ^
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 le PMDUMP when the job is executed from a terminal
with le 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* *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 respectively.
/**S^N
Example:
LGO(*DA=2+5)
DIMENSION RAY(20,20)
As a result of these statements, PMD will print the following elements of the array RAY:
RAY(1,1), RAY(2,1)
RAY(1,2), RAY(2,2)
RAY(1,3), RAY(2,3)
RAY(1,4), RAY(2,4)
RAY(1,5), RAY(2,5)
60497800 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
ifsjpSV
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 les 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.
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 le organizations, for standard input/output statements, and
CYBER Record Manager Advanced Access Methods Version 2 (AAM) for indexed sequential, direct access, and
actual key le 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.
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:
rOne execution of an unformatted READ or WRITE.
One card image or a print line defined within a formatted, list directed, or NAMELIST READ or WRITE.
_ O n e c a l l t o R E A D M S o r W R I T M S .
One execution of BUFFER IN or BUFFER OUT.
0s^\
\ 60497800 D 16-1
0^\
* Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2.
16-2 60497800 D
On storage, a le may have records in one of 8 formats (record types) dened 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 prexed 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 eld 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 "^
specied 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 le structure. Table 16-1 lists these values for their respective FIT elds;
all except those marked with an asterisk (*) can be overridden at execution-time by a FILE control state-
ment. (Numbers in parentheses refer to notes listed following the table.)
/^^X
SEQUENTIAL FILES
The following information is valid, unless the FIT eld 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 les named INPUT, OUTPUT, and PUNCH always have record type Z and block type C
,These les 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 le types; blocking is I for tape les, and un
blocked for all other les.
PRINT and PUNCH statements produce Z? type records with C type blocks or 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
TABLE 16-1. DEFAULTS FOR FIT FIELDS UNDER FORTRAN EXTENDED
FIT Fields
Formatted, NAMELIST, & List-Directed READ/WRITE Unformatted READ/WRITE BUFFER IN/ BUFFER OUT Mass Storage Input/Output
Meaning Mnemonic
CIO buffer size (words) (OBFS* 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 n/a
Conversion mode CM YES +/NO NO (2) n/a
Beginning character position of
trailer count field, numbered from
zero (T type records only)
CP n/a
Length field (D type records) or
trailer count field (T type records)
is binary
Cl* NO NO NO n/a
Type of information to be
listed in dayfile
DFC
Type of information to be
listed on error file
EFC
Error options EO AD AD AD AD
Trivial error limit ERL
Length in characters of an F or Z
type record (same as MRL)
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 n/a
Length of user's label area
(number of characters)
(7) LBL 0 * 0 * 0 * n/a
$ Applies only to NOS 1 and NOS/BE 1
§ Applies only to SCOPE 2.
60497800 G 16-3
/p**\
^^a
TABLE 16-1. DEFAULTS FOR FIT FIELDS UNDER FORTRAN EXTENDED (Contd)
FIT Fields
Formatted, NAMELIST, & List-Directed READ/WRITE Unformatted READ/WRITE BUFFER IN/ BUFFER OUT Mass Storage Input/Output
Meaning Mnemonic
Logical file name LFN (3) (3) (3) (3)
Length in characters of record LL n/a
length field (D type records)
Beginning character position of LP n/a
record length, numbered from zero
(D type records)
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 (5) MRL n/a 223-l (8)* n/a
Multiple of characters per K, E type MUL t n/a
block
Open flag (positioning of file after (7) OF N* N* N* N*/R§*
open)
Padding character for K, E type PC t 76B 76B 76B n/a
blocks
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 \
00$?\,
/$^N
TABLE 16-1. DEFAULTS FOR FIT FIELDS UNDER FORTRAN EXTENDED (Contd)
FIT Fields
Formatted, NAMELIST, & List-Directed READAVRITE Unformatted READ/WRITE BUFFER IN/ BUFFER OUT Mass Storage Input/OutputMeaning Mnemonic
Record mark character (R records) RMK 62B n/a 62B n/a
Record type RT Z*/W§(10) W (6) st/w§
Length field (D type records) or SB t NO NO NO n/a
trailer count field (T type records)
has sign overpunch
Suppress buffering SBF * NO NO YES(ll) NO
Suppress read ahead SPR NO NO NO n/a
Character length of trailer portion TL n/a
of T type records
User label processing (7) ULP NO NO NO NO
End of volume flag (positioning VF
of file at volume CLOSEM time)
/^v
/s^N
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.
(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.
60497800 J 16-5
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.
field FIT field mnemonic
value Symbolic or integer value
'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
r*^^\
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.
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.
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
change the type of Record Manager information listed in the dayfile. ^^
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: '^S
FILE(lfn,field=value, ... )
0H\P®?2\
-**^\
y^\
+*wixf\
0k&\
0i^\
0S£\
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 le 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 = xed length
Record length =100 characters
Conversion mode = YES
Data Deck
FORTRAN source program
IL
/lgq.
/ file(tape1,bt=c,rt=f,fl=100,cm=yes)
W REQUEST(TAPE1.MT,HY,VSN=HAVEN)
FTN.
Accounting Statements
Job Statement
'As required by the operating system.
"^Format applicable to NOS/BE 1.
60497800 D 16-7
SEQUENTIAL FILE OPERATIONS
BACKSPACE/REWIND
Backspacing on FORTRAN les repositions them so that the previous record becomes the next record.
SBACKSPACE is permitted only for les with F, S, or W record type or tape les 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 le so that the next FORTRAN input/output operation
references the rst record. A mass storage le is positioned to the beginning of information.
The following table details the actions performed prior to positioning.
Condition Device Type Action
Last operation was
WRITE or BUFFER
OUT
Mass Storage 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
Tape
Any unwritten blocks for the file are written.
If record format is W, a deleted zero length re
cord is written.
Two file marks are written.
Labeled Magnetic
Tape
Any unwritten blocks for the file are written.
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
/$!&\
00&S
Condition Device Type Action
Last operation was
WRITE or BUFFER
OUT
Mass Storage 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
Mass Storage None
Unlabeled
Magnetic Tape
None
Labeled
Magnetic Tape
None
No previous
operation
§ 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
REWIND request causes the file to be rewound
when first referenced.
Previous
operation was
REWIND
Current REWIND is ignored.
* Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2.
60497800 A 16-9
ENDFILE
/*SI&k
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 le resides.
Record Type
Device Type
S or L Tape Other Device
W
Other
An end-of-partition flag is written.
The block is terminated.
The block is terminated.
A tape mark is written.
An end-of-partition flag is written.
The block is terminated with a short
PRU of level 0.
The block is terminated with a short
PRU of level 0.
A zero length PRU of level 17 is written.
/5a2$$tu
Record Type Blocking
Blocked Unblocked
W An end-of-partition flag is written.
The block is terminated.
An end-of-partition flag is written.
zIf 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.
A tape mark recovery control word is
written.
Ignored.
Others on
Magnetic Tape
The block is terminated.
A tape mark is written.
Not applicable.
y^^v
/^s^\
$ Applies only to NOS 1 and NOS/BE 1.
§ Applies only to SCOPE 2
16-10 60497800 A
/$0P\
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
le (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 le without the intervening execution of a
UNIT function call.
4. Failing to close a mass storage input/output le 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-le 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 specied in the PROGRAM statement. If the record read from the le exceeds this value,
Record Manager automatically reports an RM142 error condition to the FORTRAN input/output routines and
sends a message to the job dayle. 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 dayle.
COMPILE-TIME INPUT/OUTPUT
The compiler expects source input les to have certain characteristics and it produces coded and binary les
which must be structured in specic 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 le 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 les read by the compiler is described in the COMPASS Version 3 reference manual.
SCOPE 2 structure is identied in the tables below by the equivalent SCOPE 2 Record Manager parameters.
60497800 H 16-11
j^^iv
SOURCE INPUT FILE STRUCTURE
A source input le must have the following structure. Only the rst 90 characters of each record are proc
essed or reproduced in the listing output le.
File Characteristics NOS/BE 1 and NOS 1 SCOPE 2
File organization 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)
0&>Xmtf\
a£%M$\
J^^S.
/^^r\
16-12 60497800 C
-<^\
CODED OUTPUT FILE STRUCTURE
Two coded output les may be produced: the listing le and the le of COMPASS line images. Format is
as follows:
/jJfP^
File Characteristics 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 le is as follows: (the content of the le differs, depending on the
loader supported by the operating system)
File Characteristics NOS/BE 1 and NOS 1 SCOPE 2
File organization Sequential operating system default
format with file terminated by a
zero length PRU which is then
backspaced over
Sequential (FO=SQ) unblocked
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
/$^\
COMPASS SUBPROGRAM LINKAGE 17
/$P**V
0$^s
/*SPS\
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
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.
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
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 J 17-1
0$$?&\
CALL BY VALUE SEQUENCE **)
For increased efciency 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 1 1 1 6
.:-:$:-:-:-x-: blank ::&
IDENT
:*« 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
/ps&*\
Source Deck
job card
MAP(OFF)
FTN(R=0)
LGO.
7/8/9 in column 1.
POOGPAM NPSAMP(OUTPUT)
INTEGER PF, PVAL(?4)
0011 = 1, 2<*
I PVAL(I)=PF(I)
PPINT?, (1,1 = 1,24) ,P\/AL
? FOPMATHPHOINTEGFRS AND THEIR PARITY RELOW/(2413))
STOP
PF
PF
Otto
man! program
END
IHENT PF
ENTRY PF
TITLE PF -
COMMENT
SPACE 4,11
PF - COMPUTE PARITY OF WORD,
COMPUTE PARITY OF WORD.
COMPUTE PARITY OF WORD.
FORTRAN SOURCE CALL
DARITY = PF (ARG)
PESULT = 1, IFF ARG HAS ODD NUMRF.R OF RITS SET,
= 0, OTHERWISE.
ENTPY
EXIT
(XI) = ADDRESS OF ADGUMENT.
(X6) = RESULT.
PF FO
SA2
CX3
MXO
PX6
EQ
»*>1S17
Xl-«
X2-«
-1--J
-X0*»X3
PF
END
6/7/8/9 in column 1.
ENTPY/EXIT...
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
EXIT..
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
1101G011001011010010110G
60497800 A 17-3
0Ss
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
END
6/7/8/9 in column 1
!7-4 60497800 A
/GfflKljK
/ ^ 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 rst is a trace
word for the subprogram; it contains the subprogram name in left justied 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
A O w o r d : D A T A 0
Entry point: DATA 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.
.«**S8\
/P£\
IDENT SUBLNK
USEBLK
LDSET LIB=FORTRAN
USE START.
oooooo 000005 START. LOCAL
000005 oooooo VAPDIM. LOCAL
000005 oooooo ENTRY. LOCAL
000005 000O11 CODE. LOCAL
000016 000004 DATA. LOCAL
000022 000;00 DATA.. LOCAL
000022 oooooo HOL. LOCAL
EXTERNALS
7EUS SQRT. 02NTRY.
>#S\
000000 START.
000001 START.
00000? START.
000003 START.
000004 START.
000005 CODE.
000016 DATA.
000016 DATA.
000017 DATA.
000020 DATA.
000021 OATA.
000006
000007
000010
000011
00001?
000013
000013
000014
000015
CODE.
CODE.
CODE.
CODE.
CODE.
CODE.
CODE.
CODE.
CODE.
2Q000000000000000003
00000000000000011610
oooooooooooooooooooo
oooooooooooooooooooo
23250214161355000005
5110000000 START.
0100000000 <EXT>
17227000000000000000
172Q4000000000000000
5110000016
5f60000020
0100000000
OtOOOOOOOO
5160000021
0400000000
5110000013
I
0003000004
5110000004
00000000000000000020
00000000000000000017
oooooooooooooooooooo
DATA.
<EXT>
OATA.
CODE.
<EXT>
DATA.
STARr,
<EXT>
DATA.
DATA.
LIRLNK. BSS OB
LIBLNK 0B.11610B
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 constant table
EXT
EXT
EXT
EXT
I API
Z.
END.
ZEUS
SORT.
Q2NTRY.
BSS IB
BSS IB
USE
SA1
RJ
SA6
SAl
RJT
SA6
SAl
EO
BSS
APL
APL
APL
END
source line number
CODE.
C O N . - *
LINE 2-
get actual parameter
into XI
get address of parameter
list into Al
parameter address list
SUBLNK
0^^\
60497800 D 17-5
OOOOOO
000006
000006
000006
000013
000014
000014
000014
000014
IDENT ZEUS
USEBLK
LDSET LIBsFORTRAN
USE START.
000006 START. LOCAL
ooonoo VARDIM. LOCAL
oooooo ENTRY. LOCAL
OOO-'OS CODE. LOCAL
000001 DATA. LOCAL
oooooo DATA.. LOCAL
oooooo HOL. LOCAL
oooooo ARG1 LOCAL
oooooo ARG2 LOCAL
y"8§v
000000 START.
000001 START.
00000? START.
000003 START.
000004 START.
000005 START.
FXTERNALS
SPA.
3P052523555555000004'
oooooooooooooooooooo-
USE DATA.
USE START.
TRACE ZEUS.ZEUS.2B
4name of program unit
and entry point address
• cell to save AO in
51400000131064446000)
51300000015203000000/
04004000046100046000-*—
74600540105160000001——
PENTRY ZEUS .ENTRY.. 1.0 restores A0 0n exit
FORPAR ARG1
FORPAR ARG2
USE DATA..
USE OATA.
FXT SPA.
000013 DATA. VALUE.. BSS IB
«USE CODE.
000006 CODE. 54500
504000000153350
SAS
SA4
SA3
AO
A0*>1B
X5
000007 CODE. 51240
31032
137?3
21073
SA2
FXO
BX7
AXO
X4
X3-X2
X2-X3
73B
000010 CODE. 11670 13063
22700
21773
BX6
BXO
LX7
AX7
X7«X0
X6-X3
BO.XO
73B
000011 CODE. 11670
13760
BX6
BX7
X7»X0
X6-X0
5170000013 DATA. SA7 VALUE
00001? CODE. 040000000? START. EO EXIT.
000014 ARG2 z. END
.entry point
saves AO and sets AO
to the new Al
LIME
f ^ $ S
17-6 60497800 D
V^SlV
Jp*\
SAMPLE DECK STRUCTURES 18
FORTRAN SOURCE PROGRAM WITH CONTROL STATEMENTS
Refer to the operating system reference manual for details of control statements.
END
7FORTRAN statements
SUBROUTINE RVIE (C,J,L)
fEND
-L FORTRAN statements
FUNCTION RTSM (A,B)
fEND
-r
FORTRAN statements
PROGRAM MAIN
Control
Statements
9 /Tax
Accounting statements
Job statement
f'As applicable for operating system or installation.
FORTRAN
> SOURCE
PROGRAM
/§S\ 60497800 D 18-1
COMPILATION ONLY
FORTRAN source deck
zFTN (Q,EL=A)
Job statement
EL=A- All diagnostics (including
ANSI) listed on file
OUTPUT
Q - Full syntactic error
scan of program
jjiCei&K
.^^•k
TS MODE COMPILATION ONLY
18-2
'A
FORTRAN source deck
/FTN<TS,B=0)
Job statement
T S -
B=0 -
TS compilation mode is
desired, or optimizing
compilation modes are
not available
Binary object file is
not produced *~&\
60497800 A
*^\
COMPILATION AND EXECUTION
0$^\
data
LFORTRAN source deck
/LGO.
/Vtn.
/ Job statement
/*JP\
0 S \
/fS"\
zl^Kv
60497800 A 18-3
0$$i9\
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.
>*f:sfe\
/ S ^ t
Ldata
COMPASS source deck
JL
(FORTRAN source deck
,/LGO.
( FTN(L,EL=A)
Job statement
L - Source program and
short reference map
on file OUTPUT
EL=A- All diagnostics (including
ANSI) listed on file
OUTPUT
^^\
18-4 60497800 A
/«ffi*\
COMPILE AND EXECUTE WITH FORTRAN SUBROUTINE AND
COMPASS SUBPROGRAM
j^\
0^\
Data will be written
to OUTPUT rather
than TAPE2.
/0Ry
60497800 A 18-5
COMPILE AND PRODUCE BINARY CARDS
»t=^\
source deck
£PROGRAM BOB(INPUT,OUTPUT,TAPE1)
FTN (B=PUNCHB,OPT=2)
/ Job statement
~ ^ J T
OPT=2 specifies
full optimization
^fflSv
/f^S\
f^ ^& K
^S^Pv
18-6 60497800 A
j«*^\
/*38\
/fP\
jfjSSi\
jj*Jp!\
LOAD AND EXECUTE BINARY PROGRAM+
data
binary deck
INPUT.
MAP(OFF)
/ j o b 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.
60497800 D 18-7
/iPiN,
COMPILE AND EXECUTE WITH RELOCATABLE BINARY DECK+
/*s^\
data
7
9 / 7
8
9 A
Lbinary deck
source deck
/ PROGRAM ALFRED(INPUT,OUTPUT,TAPE1,TAPE5,TAPE6)
\f
EXECUTE.
/ LOAD(LGO)
'—/ LOAD(INPUT)
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
•^*^\
/*^$y
/*^\
/ S * \
>^\
0$s
COMPILE ONCE AND EXECUTE WITH DIFFERENT DATA DECKS
data #2
data #1
/*$i&V f/
/ 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
PREPARATION OF OVERLAYS
/*^R'
Primary Overlay
(1,0)
Source Deck.
Main Overlay
(0,0)
Source Deck
/6
8 j £
£
9 f/Data
cEND
PROGRAM MLT
OVERLAY(FRANK,1,i;
Secondary Overlay
(1,1)
Source Deck
END
cCALL OVERLAY (5HFRANK,1,1,0)
^
PROGRAM RDY
OVERLAY(FRANK,1,0)
END
SUBROUTINE GROUCH(X)
END
\c / CALL OVERLAY(5HFRANK,1,0,0) -4
CALL GROUCH(40,0)
PROGRAM LEO(INPUT,OUTPUT,TAPE1
OVERLAY(FRANK,0,0)
FRANK.
/NOGO.
/LOAD(LGO)
/FTN.
/Jobstatement
Call to
Primary Overlay
FRANK 1,0
/**^r#?\
>£^|\
y^^v
y*^^V
18-10 60497800 A
00$&\
00$H£\
COMPILATION AND 2 EXECUTIONS WITH OVERLAYS
/$^\
ZfPN
9 A
source deck
LOVERLAY(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
00^\
60497800 A 18-11
/^%
/^k
f^h
/fR\
SAMPLE PROGRAMS 19
a PROGRAM OUT
Program OUT illustrates the WRITE and PRINT statements.
\ Features:
/•sn Control statements for batch execution
WRITE and PRINT statements
0^\
' Carriage control
^ PROGRAM statement
^ P N P A T , 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 species 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
every job deck (INPUT file), indicating to the system the end of this particular job. >
y^&sv
^•••ffiN
19-2 60497800 A
/ffSEiv
/jisKv
Complete Job Deck:
PAT»T10
FTN.
LGO,
7/8/9 in column 1
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 <I5»* = INK OUTPUT BY WRITE STATEMENT')
PRINT 300, INK
300 FORMAT (lH »I4«30H = OUTPUT FROM PRINT STATEMENT)
STOP
END
6/7/8/9 in column 1
Output:
THIS WILL PRINT AT THE TOP OF A PAGE
60 00 = INK OUTPUT BY WRITE STATEMENT
6000 = OUTPUT FROM PRINT STATEMENT
PROGRAM B
Program B generates a table of 64 characters indicating the character set being used. The internal bit config
uration of any character can be determined by its position in the table. Each character occupies six bits.
Features:
Octal constants
Simple DO loop
PRINT statement
FORMAT with H,/,I,X and A elements
NCHAR= OO Ol 02 03 04 05 06 07 00 OOB
The print statement PRINT 1 has no input/output list; it prints out the heading at the top of the page using
the information provided by the FORMAT statement labeled 1. 25H specifies a Hollerith field of 25 char
acters, 1 is the carriage control character, and the two slashes cause one line to be skipped before the next
Hollerith field is printed. The slash at the end of the FORMAT specification skips another line before the
program output is printed.
60497800 D 19-3
DO 3 1=1,8
J = I-1
These statements generate numbers 0 through 7 (a DO index cannot be a zero).
PRINT 2t J, NCHAR
Prints 0 through 7 (the value of J) on the left and the 8 characters in NCHAR on the right. The first iteration
of the DO loop prints NCHAR as it appears on line 4. The octal value 01 is a display code A, 02 is a B, 03 is
a C, etc.
NCHAR=NCHAR + 10 10 10 10 10 10 10 10 00 00B
The octal constant 10101010101010100000B is added to NCHAR; when this is printed on the second iteration
of the DO loop, the octal value 10 is printed as a display code H, 11 as I, 12 as J, etc. Compare these values
with the character set listed in Appendix A.
Program:
PROGRAM B (OUTPUT)
PRINT 1
FORMAT (25H1TABLE OF INTERNAL VALUES//12H 01234567**/)
NCHAR= 00 01 02 03 04 05 06 07 00 008
DO 3 I = 1*8
J=I-1
PRINT J»NCHAR
F0RMAT(I3,1X»A8)
NCHAR=NCHAR*10 10 10 10 10 10 10 10 00 00B
STOP
END
Output:
TABLE OF INTERNAL VALUES
01234567
0SAHCOEFG
1HIJKLMNO
2PQRSTUVW
3XY701234
4567eci+-*
5/<)$= ,.
6 =r ]y.**vA
7 4.<><>"*2
/SS5X
/ ^ § \
^APW^V
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 22 16 11 01
Bit 000011 000001 001100 001001 000110 001111 010010 001110 001001 000001
/*JS\
/3p<=V
60497800 A 19-5
/3gffi\
Constant CA
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
^SSv
^SiX
Mask
Octal
Bit
77
111111
77
111111
00
oooooo
00
oooooo
00
oooooo
00
oooooo
00
oooooo
00
oooooo
00
oooooo
00
oooooo
When the masking expression (ISTATE.AND.77770000000000000000B) is completed, the rst two charac
ters of CALIFORNIA remain the same and last eight characters are zeroed out. The AND operation
follows:
000011 000001 001100 001001 000110 001111 010010 001110 001001 000001
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 rst two characters of both words. If the result of the mask is true, the last name and rst 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(<ISTATE.ANO.7777000O0U00O000 0 0 00B).N£.<2hCA.AND.77/7GOUOO
KOOOOOUOOOOOb)) GO TO 3
11 FORMAT(SX,2A10)
10 PRINT ll»LNAMEtFNAME
GO Tu 3
END
••jrf^y
19-6 60497800 A
j*$^*S
/$p^\
Data records:
bKOWN* PHILLIP M.CA
BlLAKDl, R. J. KENTUCKY
CROWi\U SYLVIA CAL
hlGENBLKi- •ZELOA MAINt
MUMCh* bARY g. CALIF.
SMITH SIMUN CA
DEAN ROGER GEORGIA
RIPPLE SALLY NE\n YORK
JO.MtS STAN OREGON
HtAfh blLL NtW YOkK
Output:
NAME
BROWN9
CROHN,
MUNCH,
SMITH
PHILLIP M.
SYLVIA
GARY G.
SIMON
0$$&\
PROGRAM EOUIV
Program EQUIV places values in variables that have been equivalenced and prints these values using the
NAMELIST statement.
Features:
EQUIVALENCE statement
NAMELIST statement
EQUIVALENCE (X,Y),(Z,I)
Two real variables X and Y are equivalenced; the two variables share the same location in storage, which
can be referred to as either X or Y. Any change made to one variable changes the value of the others in an
equivalence group as illustrated by the output of the WRITE statement, in which both X and Y have the
value 2. The storage location shared by X and Y contains first 1. (X = 1.), then 2. (Y = 2.).
The real variable Z and the integer variable I are equivalenced, and the same location can be referred to as
either real or integer. Since integer and real internal formats differ, however, the output values will not be
the same.
For example, the storage location shared by Z and I contained first 3. (real value), then 4 (integer value).
When I is output, no problem arises; an integer value is referred to by an integer variable name. However,
when this same integer value is referred to by a real variable name, the value 0.0 is output, because the
internal format of real and integer values differ.
60497800 A 19-7
59 58
Sign—1
59 58 48 47
Real
Sign
Biased
Exp Fraction(m)
48
Although they can be referred to by names of different types, the internal bit conguration does not change.
An integer value output as a real variable has a zero exponent and its value will be small.
When variables of different types are equivalenced, the value in the storage location must agree with the
type of the variable name, or unexpected results may be obtained.
WRITE(6,OUTPUT)
This NAMELIST WRITE statement outputs both the name and the value of each member of the NAME-
LIST group OUTPUT dened in the statement NAMELIST/OUTPUT/X,Y,Z,I. The NAMELIST group is
preceded by the group name, OUTPUT, and terminated by the characters $END.
Program
PROGRAM EOUIV (OUTPUT,TAPE6=0UTPUT)
EQUIVALENCE (X,Y),(Z,I>
NAMELIST/OUTPUT/X,Y,Z,I
X=l.X=l.
Y = 2 .
Z * 3 .
1'k
WRITE(6,0UTPUTI
STOP
ENO
j<#^<
/CSV
y*tf^£V
/ S ^ V
19-8 60497800 F
/^ftv
0^r\
00$*\
/&>V
Output:
SOUTPUT
X= .2E*0lt
Y= .2E*01t
Z= O . O t
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:
COMMON and EQUIVALENCE statements
NAMELIST statement
COMMON 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.
INTEGER A,B,C,D,E(3,4),F,H
All variables with the exception of G are declared integer. G is implicitly typed real.
EQUIVALENCE(A,E,I)
The EQUIVALENCE statement assigns the rst 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:
60497800 A 19-9
Relative
Address 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 0 + 1 1
I
EI1.1) E12.1) E(3.1) E(1,2) E(2,2) E(3,2) E{1,3) E(2,3) E(3,3) E(1,4) E(2.4) E(3,4)
A(1)
A{2) A(3) A<4> A(5) A(6) A(7) A(8) A(9) A(10) A(11) A(12)
/ ! ^ S
DO 1 J=l,12
1 A(J)=J
The DO loop places values 1 through 12 in array A. The rst element of array A shares the same storage
location with the rst 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.
>U3Sv
NAMELIST/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 dened. 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).
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).
Program:
x^^v
/S35^V
PROGRAM COME (OUTPUT,TAPE6=0UTPUT>
C O MM O N A ( i) , B , C , D , F, G , H
INTEGER A,B,C,D,E<3,<+),F, H
EQUIVALENCE (A,E,I)
NAMELIST/V/A,B,C,D,E,F,G,H,I
0 0 1 J = i , 12
1 A(J)=J
WRITE (6,V)
STOP
END
.jfSS^V
19-10 60497800 A
i$^N
/ f $ $ \
Output:
sv
AIf
B=
Cs3,
D3<f»
E=1 » 2 ,
Fs5,
Gs0.0,
H=7,
I=It
SEND
1 0 , 1 1 , 1 ?
PROGRAM LIBS
Program LIBS illustrates library subroutines provided by FORTRAN Extended.
Features:
EXTERNAL used to pass a library subroutine name as a parameter to another library routine.
Division by zero.
LEGVAR used to test for overow or divide error conditions.
v"" Library functions used:
LOCF
/$^\ LEGVAR
0$8&r\ Library subroutines used
rDATE
/$^\ TIME
SECOND
>5#*v RANGET
4S\ 60497800 A 19-11
Y=0.0
W0W-7.2/Y
IF(0.NE. LEGVAR(WOW))PRINT4,WOW
!9-12 60497800 C
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 xed; 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. „~
L0CATN=L0CF(DATE) A
DATE is not a variable name as it appears in an EXTERNAL statement. ;I
Library function LOCF returns the address of DATE. I
CALL RANGET(SEED) ^
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 A T ( * 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 A T 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 difcult to follow.
, ^ \
v**»Sy
j^P^
ijfPN
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*,.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/Y-
TF(0 .NE. LEGHAR(WOW) >PRINTS,WOW
STOP
« PC = MAT(1HG,53 (2-)/» CIV/IOE ERROR, WOW PRINTS AS=*,GiG.2>
ENO
Output:
xjii*Y- 07/31/74 CLOCK* 1&.47.33.
Tnt LL^'-ty CPU TlMi: IS 1.00.30 SLCONUS.
LOC ATION O r D ATE R O l iTl ' stT I S = O OOO o n00 0 0 033 4 7 O h 279 1 I N O ECI M AL.
T"C..INITIAL VAHJE. O THr: *&tlF Stf.n IS 1717127'. 32147741JlbS. OH . 170**,*639«V044023 IN 630.15 FORMAT,
«_«-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
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/
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:
Pl=<f.*CIRCLri/10000.
WRITE(6»0UT)
STOP
END
Output:
SOUT
PI = •315E*01»
SEND
19-14 60497800 A
0$$Ql
P-<ObKAM Pit (OUTPUT»TAPtb=UUlPUT)
DATA CIRCLE*OUU/2*0.0/
IMAMEL1ST/0UT/PI I
UO 1 I = 1»10000
X=KANF(UUD) "*)
Y=RANF(DUD)
IF(X»X*Y«Y,Lt.l.)CIRCLL=CIkCLt+l.,
CONTINUE ^
^^\
0&*>
j$"$S\
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.
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.
rWith the DECODE statement, when the FORMAT statement indicates a new record is to be processed (by a
slash or final right parenthesis), the next part of the array is used as the input buffer. The record length in-
, dicates the number of words to move into the array.
IENCODE (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 ^ l e n g t h o f 7 1 r e q u i r e s 8 w o r d s .
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.
10 KEADritlDKEYfCARD
11 FOKMAT.I1, /A10,A9)
GOTO10
Goes back to process the next record.
19-16 60497800 A
/^"^ V
The rst 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^
-^v
IF(EOF(b).NE.OJSTOP
Tests for the end of data in which case the program simply stops.
KEY=MAX0(1»MIN0(KEY,3))
Guarantees that 1 < KEY < 3. "*^
4 0 T O T A L = 0 " * \
00411=1.N
41 TOTAL=TOTAL*IN(I)
Adds up the items and leaves the total in TOTAL.
WRITE(6tl2)T0TAL»N»K£Y»CARD»<lN(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.
/§M^\
/sS*\
0m®\
j$P£V
/fW\
Program:
HrfUORAM AUU
i (INPUT,OUTPUT,TAPEbs-lN^UT.TAPtbsOUTRUT)
INTEGER CAi*U(b),IN(79),TOTAL
1U rctAD(b»ll).\EY.LAkD
11 r(jKMAr(£l,/A10,A9)
IF (EOF(b).NE.0)STUP
NtY=MAAO(l,MINO(KEY.J.)
outO( 1,2, J) ,m£Y
1 ULC0DE(/V,91«CAR0)In
9 1 f - O H M A T i . / V I l l
N.= 79
GOT040
2 UtC0Dt(7b,92,CAr<U) (IN(I) »1=1.39)
92 FORMAT(3912)
N=39
OOTO40
3 ULCOUt<7b,93.CARD)<IN(I).I-1db)
93 rGHMAT(2bI3>
N = 2b
40 IOTAL=0
U0411=1,N
41 TOTAL=TurAL'-lN(I)
WKirE(b,12)ToTAL»N,r,tYtCARu* ( IN( 1 > » I- l.N)
12 FORMAT</I6.20H IS THE TOTAL OF THE «13,20rl NUMbtkS ON THE CARD/
li2.7A10.A9/16H THE NUMBERS AKt/( 20 !<) >
OOTO10
End
Input:
2132255H76b988775533210332245b668779655412334221123b547tt9b54123bbb47H9654i23b028
302144bbb998774b6632214455666655233655222I444b5bb332b5bbt>99bbbb6b5b477b8b4ba7 029
5556b66322366bb523322144b5b6699887 7655222 l4«VH55bl122330332445b6699887 7455b89b03U
10234bbb6888998877b996b55444455b665b3J222lll233023333bb99655bb2221l44447778d5031
Output:
1900 IS THt TCTAL OF THE 39 NUMEERS OK THE CARD
213223547619887755332103322456668779655412333221123654789654123655478 565 <il226 028
THfc NLfEfcRS ARE
1 3 c c i i k l 6 6 9 8 8 7 7 o 5 3 3 2 1 0 3 3 2 2 4 5 6 6 6 8 7 7 9 6 5 5 4 1
2 3 3 3 2 2 1 1 2 3 6 5 4 7 8 9 6 5 4 1 2 3 6 5 5 4 7 8 9 6 5 4 1 2 3 6 2
14380 IS THE TCTAL OF THE 26 NUMBERS ON THE CARD
30214*.56 65 Se 7745 66 322144556 66655233 65522214445566 33255 66699 88566655*778 85*t 8 67 029
THE NLFEERS ARE
21 445 6c5 987 745 663 221 445 566 665 »23 365 522 214 445 566 332 556 669 988
566 655 k77 88s 486 702
13840 IS TKE TCTAL OF THE 2b NUMBERS ON THE CARD
35566663 22366655 23 322144556669988776552 221444556112233 0 3324456669988 774558856 030
THE NUf-EERS ARE
566 666 322 566 655 233 221 445 566 699 887 765 522 214 445 561 122 330 352 *4i>
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 555222114<i44 7 77 885 031
Tl-E NLfEEfiS ARE
8 5 9
2 2 2
5 5 5
60497800 A 19-17
02345666888c98877
65et4 4 4 4 5 5 6 6 6 5 5 3 3
1 1 1 2 3 3 C 2 3 3 3 •a
5222114 4k 4 7 7
0&$!&\
PROGRAM PASCAL
Program PASCAL produces a table of binary coefcients (Pascal's triangle).
Features: ^
Nested DO loops
DATA statement '
Implied DO loop
INTEGER L(ll)
L is dened as an 11-element integer array.
DATA L(ll)/1/
19-18 60497800 A
>lS8v
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.
PRINT 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, ^
D O 2 1 = 1 , 1 0 ^ %
K=ll-l
provides a legal method of writing the illegal statement DO 2 K = 10,1,-1. ^
/*PN
0$^\
DO 1 J=K,10
1 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 A T A L ( l l ) / l /
PRINT4, (1,1=1,11)
FORMA T(44HC0MBINATI0NS OF M THINGS TAKEN N AT A TIME.//20X, 3H-N-/
£1115)
DC 2 I = 1 , 10
K=ll-I
L(K)=1
O C I J = K , 1 0
1L(J)=L(J)+L(J+1)
2PRINT3, (L(J),J=K,11)
3 F0RMAT(11I5)
STOP
ENO
Output:
COMBINATIONS OF M THINGS TAKEN N AT A TIME.
- N -
1 2 3 4
2 1
3 3 1
46 4 1
510 10
615 20 15
/21 35 35 21
828 56 70 56 28
936 84 126 126 84 36
10 45 120 210 252 210 120 45 10
1 0 1 1
1 1 5 5 1 6 5 3 3 0 4 6 2 4 6 2 3 3 0 1 6 5 5 5 1 1 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 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:
19-20 60497800 A
£*<&$\
PROGRAM X (OUTPUT)
C WITH EXTRAC DECLARED INTEGER ThE RESULT SHOULD 8E 49, OTHERWISE IT
C W I L L B E Z E R O
K = EXTRAC(7) ^
PRINT It K
1 FORMAT U H ltlS)
5T0r /*s^v
E N D 1
/5gf»X
INTEGER FUNCTION EXTRAC (K) ^
EXTRAC =K«K
RETURN
End ,^^s
. ^ f fi j v
/$ S \
Output:
0
f^- Second program:
FROGRAM X (OUTPUT)
C WITH EXTRAC DECLARED INTEGER THE RESULT SHOULD BE 49, OTHERWISE IT
C W I L L B E Z E R O
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.
R E A L Y ( 6 )
Array Y dimensioned (6) is explicitly typed real. It is not in common.
CALL I0TA(X,12)
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
-^^^v
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.
DO 1 1=1,M
1 A(I)=I
The DO loop places the numbers 1 through 12 in consecutive elements of array X.
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.
The WRITE statement outputs the arrays X and Y.
Program VARDIM:
PROGRAM VARDIM (OUTPUT, TAPE6=0UTPUT)
COMMON X(4,3)
REAL V(6)
CALL I0TA(X,12)
CALL I0TA(Y,6)
WRITE (6,100) X,Y
100 FORMAT (*1ARRAY X = * ,12F6.0/»OARRAY Y = 6F6.Q) ^
S T O P 1
END
Subroutine IOTA: ^
SUBROUTINE IOTA (A,M)
C IOTA STORES CONSECUTIVE INTEGERS IN EVERY ELEMENT CF THE ARRAY A ^
C S T A R T I N G A T 1
DIMENSION A(M)
OO 1 I = 1,M
1 A ( I ) = I ^
RETURN
END
^^s
*Jh^V
i9-22 60497800 A
Output:
/0&\
0g^\
/p&V
A R FAY X = 1. 2. 3. L. 5 • 6.
A R FAY Y = 1. 2. ?. i. 5 • 6.
7 . 8 . 9 . 1 0 . 1 1 . 1 2 .
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.
SUBROUTINE IOTA
SUBROUTINE IOTA is described in program VARDIM.
SUBROUTINE SET
j 0 & \
\ 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 FUNCTION AVG
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 A 19_23
00$\
^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))
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 nds the average. The library function FLOAT is used to convert the integer 12 to a oating
point (real) number to avoid mixed mode arithmetic.
The average is returned to the statement PVAL = ABS(WAY(SIZE)) in function PVAL.
FUNCTION PVAL
19~24 60497800 A
.rfSSSs
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 AVG 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. '7
PVAL=ABS(WAY(SIZE)) ^
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.
«»^^?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
#*^ value returned by AVG.
0*\ AM=PVAL(12,MULT)
In this statement in the main program, PVAL is referenced again. This time the function MULT replaces
/ P N W A Y .
/0^\
j$0&\
FUNCTION MULT
MULT multiplies the rst and twelfth words in COMMON and subtracts the product from the average
(computed by the function AVG) of the rst J/2 words in common.
COMMON ARRAY(12)
Common is declared 12; MULT shares the rst 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.
R E A L 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
CALL SET(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.
CAL L IN C ( 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)
DO 2 1=1,12
2 X ( I ) = X ( I ) + - 5 .
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.
'^*^*\
>**i^V
-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 ^
19"26 60497800 A
Complete program:
J*53«\
PROGRAM VAR0IM2<OUTPUT,TAPE6*0UTPUT,DEBUG=0UTPUT>
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<i2,MULT)
WRITE(6,V)
STOP
ENO
SUBROUTINE SET <A,M,V>
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 T H E A R R A Y A
DIMENSION ACM)
0011=1, M
1 A(I)=I
RETURN
ENO
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<SIZE>)
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.
D O 1 I = i * J ^ \
1 AVG=AVG+A(I>
AVG=AVG/FLOAT(J)
RETURN ^
END
REAL FUNCTION MULT(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
CCOMMON ARRAX12)
MULT=ARRAY(12)*ARRAY(l)-AVG<J/2) 1
RETURN
END
8V
X = •».<>£» Cl, -.3E+01, -.2£*01, -.H-TfrQl, li.O, .lE^Ol, .2c*tjl, .3E*Ol, .«.£*>t)l, .sE^Ol, /gr
. ot*>01, . 7Ef01,
Y = 0.0, 0.0, 0.0, 0.3, 0.0, 0.0,
AA = .fiEfOl,
AH - .26«5EH?,
'8£NO /a
PROGRAM CIRCLE
Program CIRCLE nds the area of a circle which circumscribes a rectangle.
Features:
Denition 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 nd it.
A programmer wrote the following program to nd 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.
Output:
PROGRAM CIRCLE (OUTPUT)
A=4.0
B = 3.0
A^EA=3.1416/4.0*DIM<A»B>**2
PRINT 1* AREA
FORMAT(G20.10>
STOP
END
FUNCTION OIMU.Y)
UI(v)=SuRT(X*X*Y*Y)
RETURN
END
.7854000000
The programmer was completely bafed 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
E=B+I+10B
The compiler, in scanning the above expression left to right, encounters the real variable B and uses real arithmetic
to evaluate the expression. Again, the octal constant 10B has the real value of zero.
If the expression were written as:
E=10B+I+B or E=I+10B+B
The rst two terms would be added using integer arithmetic; then that result would be converted to real and
added to B. In this case, the octal constant 10B would effectively have the value eight.
This is similar to the mode conversion which occurs in:
X=Y*3/5 or Z=3/5*Y
These expressions would give different values for X and Z. More information on the evaluation of mixed mode
expressions is in section 2.
19-30 60497800 A
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.
C=B+10B
Floating point arithmetic is used to evaluate the expression; and the octal constant 10B is used without type con
version, making its value zero. Note in the output from OCON, the values of B and C are equal.
D=I+10B ***)
No problem arises in the above expression as it is evaluated with integer arithmetic; then the result is converted
to real and stored in D. '^
<lrfS3SrV
/CiSiW&V
i**^V
^*&\
0 S \
F=A.EQ.77B
Real arithmetic is used to compare (he value because A is a type real name. The value in A and the constant
77B both have nil zeros in the leftmost 12 bits: both have value zero for real arithmetic; therefore, the value
assigned to F is .TRUE.
To avoid the confusion illustrated in this example, simply use integer names for values that come from octal
or Hollerith constants or character data that is input using A or R format elements. To illustrate, this program
was rerun with the names A. B. C. D. and fi all as type integer.
All these examples use octal constants; however, the same problem occurs with Hollerith, especially when it
is right-justified. The following coding illustrates the point:
REAL ANS
READ 2, ANS
2 FORMAT(R3)
IF(ANS .EQ. 3RNO )PRINT3
3 FORMAT (*-NEGATIVE RESPONSE*)
PRINT3 of the logical IF is always executed independently of information in the data records.
With real variables:
PROGRAM OCON(OUTPUT,TAPE6=0UTPUT>
LOGICAL F
NAHELIST/OUT/A,BjC,D,E,F
A=2QB
5 B=lOB+10B
C=B*H0B
1=5
DsH-lOB
E=B*fI*10B
10 FsA.EQ.77B
HR I T£ < b,O UT)
STOP
ENO
60497800 A 19_31
Output:
$0UT
A0.0,
B=•16E+02,
Cs 16EK12,
0s13EI-02,
E=•21E*Q2,
F=T,
SEND
With integer variables:
10
Output:
$OUT
A= 16,
B= 16,
C= Z k y ,
0= 13,
E= 29,
F= F,
SEND
PROGRAM OCON(OUTPUT,TAPE6=0UTPUT1
INTEGER A,B,C,0,E
LOGICAL F
.MAMELIST/OUT/A,B,C,D,E,F
A=2 0B
B=10B*HQB
C=B*i9B
1=5
0=I»iOB
E=B*I«-10B
F=A.EQ.77B
HRITE(6,0UT)
STOP
EMO
>«sv
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 SIDES C 3 )
?lQUI./ALtNC£< SIDES ll) ,A) ,(SI0ES(2) ,3) , (SIOESt 3) ,i)
N4MELlSr/0JT/SI)ES,AREA,RADIUS
3 RiAD<5,»>SIDES
I F < E 0 F < 5 ) . N E . Q I S T O P
S=<AfrBO)/2.
A R E A = s a U ( S M S - f t > * < S - 6 > M S - 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
AREA
RADIUS
SEND
= .6E«01» .7E*01, .8E*01f
= .a0333162567589E*02t
t ,19364916731037E*01,
/<3^y
><^^\
SOUT
SIDES
AREA
RADIUS
SEND
= .1E*01, .1E*01, .1E*>01,
= .43301270l89222E*»00t
= .28867513459481E*00,
**^\
SOUT
SIDES
AREA
RADIUS
SEND
= .4E-XU, .5E*>01, *6E*>01»
« .99215674164922E*01,
a .13228756555323E*01,
'*s^\
SOUT
SIDES
AREA
RADIUS
SENO
= .125321452E*02, .224536E*02, .25E*02t
= .14040422058737E*03,
= .46812528562998E*>01,
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
STATIC 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
^
/$$^\
vpSV
0$f$\,
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 specied 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.
60497800 A A-l
FORTRAN Display
Code
(octal)
CDC ASCII
Graphic
Hollerith
Punch
(026)
External
BCD
Code
Graphic
Subset
Punch
(029)
Code
(octal)
: (colon) OO1 : (colon)tt 8-2 00 : (colon) ft 8-2 072
A01 12-1 61 12-1 101
B02 12-2 62 12-2 102
C03 12-3 63 12-3 103
D04 124 64 12-4 104
E05 12-5 65 12-5 105
F06 12-6 66 12-6 106
G07 12-7 67 127 107
H10 12-8 70 12-8 110
111 12-9 71 12-9 111
J12 11-1 41 11-1 112
K13 11-2 42 11-2 113
L14 11-3 43 11-3 114
M15 11-4 44 11-4 115
N16 11-5 45 11-5 116
017 11-6 46 11-6 117
P20 11-7 47 11-7 120
Q21 11-8 50 11-8 121
R22 11-9 51 11-9 122
S23 0-2 22 0-2 123
T24 0-3 23 0-3 124
U25 0-4 24 0-4 125
V26 0-5 25 0-5 126
w27 0-6 26 0-6 127
X30 0-7 27 0-7 130
Y31 0-8 30 03 131
z32 0-9 31 0-9 132
033 12 060
134 01 061
235 02 062
336 03 063
437 04 064
540 05 065
641 06 066
742 07 067
843 10 070
g44 11 071
+ (plus) 45 12 60 12-8-6 053
- (minus) 46 11 40 11 055
* (asterisk) 47 11-8-4 54 11-8-4 052
/ (slash) 50 0-1 21 0-1 057
( (left paren) 51 0-8-4 34 12-8-5 050
) (right paren) 52 12-8-4 74 11-8-5 051
$ (currency) 53 11-8-3 53 11-8-3 044
= (equals) 54 8-3 13 8-6 075
blank 55 blank no punch 20 blank no punch 040
, (comma) 56 , (comma) 0-8-3 33 , (comma) 03-3 054
. (decimal point) 57 . (period) 12-8-3 73 . (period) 12-8-3 056
60 0-8-6 36 8-3 043
61 8-7 17 12-8-2 133
62 0-8-2 32 11-8-2 135
63 %™ 8-6 16 %" 03-4 045
" (quote) 64 s>* 8-4 14 " (quote) 8-7 042
65 r~ 0-8-5 35 (underline) 03-5 137
66 11-0 52 12-8-7 041
67 03-7 37 12 046
1 (apostrophe) 70 11-8-5 55 ' (apostrophe) 8-5 047
71 11-8-6 56 03-7 077
72 12-0 72 12-8-4 074
73 11-8-7 57 033 076
74 8-5 15 84 100
75 12-8-5 75 03-2 134
76 -1 12-8-6 76 (circumflex) 113-7 136
77 ; (semicolon) 12-8-7 77 ; (semicolon) 113-6 073
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).
<*ES\
yrfS^V
/>^"\
^*S\
A-2 60497800 F
HEXADECIMAL-OCTAL CONVERSION TABLE
/*$$$**«
0S&S,
First
0
Hexac
1
ecimal
2
Digit
3
Second
Hexadecimal
Digit
000 020 040 060 100 120 140 160 200 220 240 260 300 320 340 360
1001 021 041 061 101 121 141 161 201 221 241 261 301 321 341 361
2002 022 042 062 102 122 142 162 202 222 242 262 302 322 342 362
3003 023 043 063 103 123 143 163 203 223 243 263 303 323 343 363
4004 024 044 064 104 124 144 164 204 224 244 264 304 324 344 364
5005 025 045 065 105 125 145 165 205 225 245 265 305 325 345 365
6006 026 046 066 106 126 146 166 206 226 246 266 306 326 346 366
7007 027 047 067 107 127 147 167 207 227 247 267 307 327 347 367
8010 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
A012 032 052 072 112 132 152 172 212 232 252 272 312 332 352 372
B013 033 053 073 113 133 153 173 213 233 253 273 313 333 353 373
C014 034 054 074 114 134 154 174 214 234 254 274 314 334 354 374
D015 035 055 075 115 135 155 175 215 235 255 275 315 335 355 375
E016 036 056 076 116 136 156 176 216 236 256 276 316 336 356 376
F017 037 057 077 117 137 157 177 217 237 257 277 317 337 357 377
Octal 000-
037
040-
077
100-
137
140-
177
200-
237
240-
277
300-
337
340-
377
60497800 A 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.
^ COMPILATION DIAGNOSTICS
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.
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
/sSP^S
ixl
-<*«S\
O
UJ
ui
o
/Ss^v
o
T*
x
o
or
u.
vi
t*
Ui.
CO
x
$
M
ar ne
0. 0.
u. UJ
oX
00 u.
Ma
Ja
4
Oi Ui
Ol
M I
i
IU
X
ta UJ 1-
z
MXco
3 C ' <t
O f . : ro Of
- J M * «. (1 tA
- J X
o H .* (Xt
u. » •» IS. ex. t-
X CM 00 CM «»
« » X o » »o » '~i x.
- » X
CO CM -H - > i u h or. (Vj -X ^% •> uO «-l
» L f » S . rm, U J « . CO p. fw Ti * f O
v O H M O W tX •^ «3 i W {i © w
I **I I X 1 •H *^ 3 10 «rf
»-> x4 t— * U J i n ? H. i3 w# !»
uj «* •> oi :*i*'*ouj4<vjfHuj««uj«r
I- X X CT ^\ JI-r-E +w|-ri-X(>.
f * f H ( T » U N f t t A < X M w J H Q f M W ^ W O i O Q
OrTOHll II II IIOIIItOO'OllU.^OQ'Oi.Z
XU.^H<fnQJHUlU.HH3;ti.3tU.(flUJ
IA
o oo r\j fo ji> it, vo is.
* 4 o o o a o a
M3
cm to -i- en is.
I/) go
a
aj o
UJ
O UJ
•4
UJ o
X z
M
z z
U J 7
X « *
2 O
<A
a
UJ
x
=)
tA
(A 00
oo
* H
- . X
▶■»
n oo
a. •-<
I- C O
O X
t A
V- Ul
Z CO
UJ=)
X
uj v%
«t o
r m f t
t A " >
UJ -36
u. *y o
O 0 - - I
UJ
U J I f t .
oo •- tn
a e M
ujoooo j
uzuxi
( t l - H U l
c t : j m
« t z u .
x o z *
o o « .
UJO 00
-I Z «t -J «J
Ul «t Z UJ UJ
co x m en co
j - 3 : i - < r x « t * *
3ujz-ioij;jj
C L r x u j o i x l
Zdlt-Hr-VJw
HQ.UI2 HZ
so- »- IU CO I- X UJ
Ufiztf our
it-urz uj
f ~ 1 3 < / ) t - U . M
0 ! " M i f U J > 0 4
« f ( V O U t c t » - .
I- UJUXtXUJO)
t O _ l I M Z 0 0
l u i - i i u Q . r > q
x » z » - . o o i u
«UIU<HOI-Z
OijpOJJZH
L D O H O U J U .
o o iu -j ra o '/j ixl
«: a; m a. i ^ uj q
ft.WZ3>- Of* Z
* n a a f / i « t o . 3
a,
6
to
X
W
* f H
o
arr
cm ro tti a* x-t xO t*
X-4 f * M
-J CM CO
•-« CO
or UJ _J
t— Ul UJ
UJ tt OQ
ra «*
CM u j r w -1
N. •90 *•
>• ra
Min
z
<V
il Ixl Ixl UJ Ixl UJ Ul UJ U.
»M i l U . II. U . u . U . u . Ul
B-2 60497800 D
/*^N
>.
OQ
jtjpssv
00
o
H
00
O
Z
o
<
ui
Q
O
1
N
I
OQ
W
OQ
<
/^*s
CO
•a
o
E
00
.s
a.
O
-a
co
•a
Cj.
E
o
•a
o
E
00
c
CL,
o
a,
•a
o
E
00
c
a.
O
•a
y
T3
'?
o
c
Ul
eo
cd
o
00 f->C3
i-i 93
1—
Q>
Cx,
o.S oo *->
X<l>
93
T3
93 h-> oo •?
Oi
i-i
<D
E
o
i-i
Of J.
OJ 93
Ua. <u CO
S
s
o
<S
CO
Z
<
CO
Z
1=.
Z
o
z
•a
o
E
00
.S
o.
O
-a
"2
co
o. Oh Oh Oh
E E E E
o o oo
oUo
<u <u
•a XI 4)
T3
Oo o o
E E EE
00 oo 00 00
.s
I
a, «-»CU
.s
N
|
Oh Of
OO O O
+
Xc*
o
•a
Of-t
fZU 93
S o
OO
X> 93
3 - O
oo
oo2
C
"S *o
.S 3 91
E 3
Q3 oo
( X c d
CO
<Uh
£2 CO
U C O
Z ~
~^
C O *
tL,
w
f - l
~ O
Q Q<
0-1
o w
r ~ ' r U
CO
3
UT STA IS NON
CO OQ
w »
c* *
<Ssy <o
uj w w s H*w
Oi. f-J Oi __ Cri co H oi
Cu,
< S ^ C O PQ zg
* * U h Z 3
*< D oi
<
oO t-i J d nr.
CJ Z O CO ~3 5 <
o >
zJ< CO
z< & gHz w tfl
z
<< < <
-Ui S
a
w
s
LU
OQ
-J
-1
H
U -J
co W
Ui
<
z
f>
<
SS
Q
CJ
^ W
< D-1
W
Uh
« U i
CO C
Z
<
£ o
O ' £
O c d
93
ca
E
c
93
93
S3
T3
C
o
>>
cu
ca XX
J3 93
O
Oh cd
EOh
oo
<L>
*-> cd
X)
t"i
"•*.
Uh
o
H
<
Z
- 2
5 ^ sJ
co w S
C Q 5 K
S S C <
c o Q <
Uh
H
H
<
-1
O
CJ
UJ
oi
o
UL,
UJ
OQ
Uh
z
o
z
1
o
u
H
<;
H
W
CO
OQ
33
c
CO
Z
<
« J £
" E
X
ac
Ou
D
O
z
o
<
OQ
(J
CJ
w
y^^^V
60497800 D B-3
CJ
co
CJ
I—I
fc
S
O
<
I—,
Q
ui
Q
O
S
o
z
N
>,
OQ
d
,5
r-t *G
PQ oo
UJ CO
-J
OQ
<
H
<u
rzi
Oh
T3
O
00
c
o,
O
-o
o
eo
c
Oh
o
oo
.S
N
Oh
O
Oh
E
o
T3
o
E
00
.3
Oh
o
T3
O
S
OO
.s
Oh
O
T3
*?
CO
•I
<4H
CO
I—I
Q
CO
Y .5
a I -
. O c d
d " "
& d
.52 & o1 cd -,
*-•
a > . m 3
d o < - >
- h £ « >
Qh_> a>
, 0 0
w E °
S **» ^
-^ d .2
a>
d a j
q xi
c a j z i
- f - d
O > JO
9 3 9 3 r O
O, 93 .s
H d h 5 3 »
t o C O
C .
*->
*zt d
« E
00 "ti
2 5
E "
d w
C J e d
UJ
O Q
sp Uh
hJ
Q Cm OQ
PL, Pm < ffi
<*<
J fc
o^ Z >s
0 2
< H H
H 0 Z
^ Z <
U _ J Q ^ H
CO CO
w z
O.
E
o
-a
o
E
00
.S
.a
E
-f->
Oh
O
CO
H-l
f - H
<
H
UJ
Q
•a
co
91 2
S s
c d d d
f - i 5 a >
£ o 2-
g o c d
> O h
O
H0 13
d .3
O•i 6
._; +->
d d
Va> "O
an exp lowing missing
co
•0 CU
H->
3
-a
">
IJOh
E
O
O
a>
CO co .J5 <B .22 a>
CO
CO UJ
Z W
<
r - i o o
g Q C J
*<
Qh
o
H .
Z 2 O
h5 5J <
S b C O
00 W p
O h M _
< [ h W
. J g Z
•J PLl <•
Q W s
< z
Ui ^
H
CO
Q
Z
w
UJ
UJ
H
H
co
UJ
CO
Z
i
g
UJ
U
W
S3 w
rt
o
s
U, 2
o
CO
H H W
oi
Ui
Uh Ui
< Q
w _
2 0 0
S3
<5
co o
H co
O S co
O < u i
H H O C O
ig O D
"2
co
3
S
d
o .
"cd *S
o d
&
a -°
si
ffi si
HH
rt
H
co
CO
ffi
rt OQ
H-l Q Z
hh" W <
O H , 1
ffi B Z
^ O
J z
00
Z
UJ
Q rO
<;
y*^\
B-4 60497800 D
><-^N
co
O
i-
co
O
Z
o
<
UJ
Q
O
o
z
N
J0SN
OQ
UJ
H-1
OQ
<
60497800 E
l-l tS l-l i-i Ih
_0J 9J 91 93 jU Uh Uh Uh Uh* Uh Uh
«jj 93 <U <U
Oh Oh O. O. rd
PE E E E' a , 'cl 'Of Oh
>x
CO
<L>
cj cj
<u
cj
a>
CJ
93
CJ CJ CJ
~o TD -a T3 "O Ti a> 0J a> <u <u Ql
93 T3 •a -a T3 T3 -a
3
oo
oo
00 ec 00 00 00 00 oo oo 00 00 00
!0 !E1 'n _d
'n 'H 'n _d
'n 'n 'n
d£ 6 IEEJ||E|
o. o. Oh Oh Oh o. CU Oh O- Oh o,
Oo o O O O OoO O O
iz
o I *
« - o oi
U h Z Zt
9 3 Q
*ri C*. Oi
o
c d o o
.5 c d C
S Z \ - d
" o ~
U h H
< Q _3
<d . 2
o *-, H-l
g * w- _• s is
3 < ~
oo
cu
c
CJ
O
OQ
<u
03
t r j
0J
•a 93
73,
93
72 93
72
d o
e"2 cd
cd
d
<u
72 CJ CJ
*2
'> '> '> '> '> ° 5 Ti oo '> UJ *> ">
zl
93
00
93
CO
zl
93
00
93
CO
93
00
c j d
T 3 3
5 o oo
_d
CQ
<u
oo
D
op
' o o
oo
cd
93
zzz
~Q3
CO
OJ
CO
<U
J.
IU
CO
•IC^H
"o>
CO
03
00
<U
ECO Oh"
oT3
_d oo'
U* QJ cd *- z 93
<U
CJ
d
cd
cj
C^
'd
00
£
Ui
93
o-
o
d
cd
Ui
<D
Oh
o
"cd
cj
'oo
o
^J
d
.2
00
<o
u - o o
a, <u
14
CJ
3
Oi
H
rt
o
UL,
00
Z
<'ATA statemen permitted by A nnot terminate hose object is
CO
ti
Z
tt)
zf
rt
D
UJ
rt
<u
E
OJ
*-"
ed
H-f
00
o
Q
cd
o
•3
d
<u
d
•4-J
d
a>
E
E
o
00
CO
oo
<U
O
T3
l-l <u
T3 93
tzt IU
• - d
0 3 j — OQ
E
Q « -
o> o
* i d
Cf-I
OCJ
c
z
<
o
ca
i—
cd
SZ
cj
'>
-J *>
93
r~
'>
1
• - h c d
zQ d
Id
>
•^
C ^
U h C d
<u *-
'?
<U o
O c d
C J CO
CJ
00
to
CO
93
CO
*a3
CO
<u
00 3 «
< , c d 43 oo * - \ d
^ >> r t t
"U
CO
O 'ob
Q £ >>
S3
93
OO
cd
oo
oo
IU
s
NSI IMPLICIT STATEMENT IS NON-ANSI.
rt
o
w
0h
O
H-l
CO
UJ
O
<
CO
00
CO
UJ
rt
ft
UJ
LE REPLACE MENT IS
UJ
S
UJ
H
H
CO
H
CO SI BLANK RED IN THIS fc SI FORM OF STATEMENT.
I NON-ANSI FORM OF ATA STATEMENT. I NON-ANSI FORM OF VTE DECLARATION.
DF LOGICAL ,D0
Uh
O
CO
UJ
o
Z
UJ DOLLAR SI COMMENT
<
u
o
3
Z
<
H
CO
Z
o
CJ
Oi
00
Z
«f
z
oI MASKIN 1 NON-ANSI.
Cu, UJ
r Z H
' H H U J
00
Z
<f
z
o
H-l
UJ
<
z
00
Z
2
o
zI NON-AN INES OCCUR R0GRAM UN
iti
CJ
3
NSI OBJECT ( IF IS ILLEGAL
oi
o
<
z
UJ I OCCURR STERISK OR GN NON-AN [NES.
00
ZC O % >
ZPz 00
ZLO <* > hJ
zCu, 00
zOQ C O Q
z M gH 00
Z< o o h 4
< < < < < < < < < < <
B-5
/ < ^ k
>.
OQ
P
£
o
cj
CO
u
g
O
z
o
<
Q
UJ
Q
O
S
o
z
HH
N
HH
s
HH
o
I
CQ
a
OQ
<
'J3o
<
CO
B-6
Of
E
o
CJ
CJ
13
O
£
00
d
•a
Oh
O
d
o
"«-> cd
cj
«3
Oh
•n
CO
=,
ffi ^j
ffi B
c -^
> • d
JT CO
O O h
Oh
£
o
o
00
d
Oh
O
y
o
00
oo
3
£Ti
tn
cd
Esi
-t->
EUh
o
oS3
n
<x
oi x
£&*
kr0ir$
Zi trj Z
fc^-7
S2 O 5
SfS
o rr z
Ufeco
J O H H
cj rt <!
°2&S
SS * c j
Oh
t3
O
00
d
'43
Oh
O
Td Td
Oh Oh
E £
o o
CJ CJ
CJ CJ
tZ* •"d
O O
£ E
00 00
d d
N•fl
'g '{3
H-> •43
Oh Oh
O O
flJ CO
aTd
Oh Oh
E £
o o
OCJ
a> CO
T3 tZi
oO
£ £
oo oo
N
'43 ' * - t
Oh Oh
oO
Oh
E
o
O
CO
T3
O
£
00
•I
o.
O
CO <v
Td Id
Oh CU
E£
oo
CJ
CO CO
tn T3
oO
E £
00 00
.s .s
N N
o- Ou
Oo
,/^5\
d
CO
t r j
V
1
tf-i
"o
CO
CO
T3
CO
U H «
0 0 i _
2 °
O h d
S 3 O
d * 4 3
o o o
c o d
x J , d C O + J
« U , g ^ H
c o c d - r * e o
"22?
s s.s y
T S - Z 2 * 3
5 52 --•
S rt P
co
in
.V
rt '53 00
co c d
co
CO
CO
T3
*4H
"33
co
<4H
q3
co
cd
d
o
"*->Of
d*
r t c d
% g
r t a > d
H " t i O
2 83
5 8|
r cjhS
O + - c o
Z + oo
CO
T3
•?
cl
U-i
.2
*o
HH
00
Z
•<
00
co
*->
c d 2
II
9i .a
0 0 u -
£ 2h
•&T3
bo
oo
oo
CO
d . .
O O J -
v i c d
> c o
So g .H
z .2 -*-1
fl, oo C
d gl
U J v J - f H
> - y > S U h
2 u c d
CO
13
V
CO
S3
*aj
CO
Oh
X!
UJ
uj 22
t — t f t
?**
fe uj
O E-
5 r U h
C O p
5 H
ou
f ^ C j J
ES co
Uh
2ffi
HH
CO
ffi . Uh
n
b&3 UJ
rt Z
l3
Liz
SQ HH
ffiZ CO
Z
<
co
UJ
O
Q
co
Z
z
o
z
co
&s
hOfH
oi
uj S
«<:
H Q
I—I
CO
HH UJ
C O Q
z w
O co
H H H H
M f - l
oo C
UJ z .
r t W X
UJ H-l
H C U
<s
H O
CO QJ
60497800 G
/jjpfcy
CJ
CO
U
HH
H
CO
O
Z
o
UJ
Q
O
z
OQ
UJ
hJ
OQ
<
0^*
0^\
>>
OQ
d
o
o
d
op
co
'o. 'o.
E E
oo
CJ CJ CJ
CO <u CO
T3 T3 •a
Ooo
EE £
00 00 00
d.S
N N
EE
.-*
Oh Oh Oh
OO O
>
y
o
dT3*
(Tl 93
C)
CO f-l
.S
^
(-4 Uh
^O
UJ •o
CO
CO CO
ZS3
<cd
DU
O
H
<
rt
o
Uh
UJ
ffi
H
co
Z
<
O
H
co
T3
">
>—<
Uh
o
2o «•
a>
Of
>.
91
T3
>
o
Uh
z
o
o
H
O
z
co
z
g
<
o
Pu
r-i
u
UJ
Oh
CO
<S2
H
Z
UJ
UJ
H
<
H
co
<
<?
Z
o
z
uj
ffi
H
hhS
CO
z
Z
O
z
—4
CQ
s
o
u
UJ
Oh
H
W
ffi
H
UJ
CU
o
UJ
ffi
H
u.
O
Z
o
oo
Z
<
IE
2 °
^^
hJ H
UJ UJ
Oi S
< H
u. S
o <
Oh
E
o
TJ
o
oo
d
Oh
O
><
<
3.
T t C O
U. OO
H - > O
O-
>>
CO
CO
cj
UJ H-l
art
uj O
<
Oi
UJ
Oh
o
Oh
E
o
o
E
00
Oh
O
X
Uh
Uh
o
HCO
<
O
Of
f-f
H-l
U. 00
CO
J3
hJ
-a
'>
y
< 0 0
Z Q
OQ
S
O
CJ
UJ
£ 2 £
UJ
ffi
rt
UJ
Oh
o
UJ
ffi
H
Uh
o
z
O
a, Oh Oh
£ E E
oo o
oCJ CJ
co CO co
TJ "O TJ
O O O
E E E
00 00 oo
d.3
N.a
E
+->
Oh Oh o.
oO O
<
H
Z
UJ
Z
O
a
Ui
Z
<
Uh
O
CO
Z
Z
o
z
uj
ou
O
T3
CJ CJ
2CO
hJ
HH
<CH
UJ UJ
QQ
tr a
'>
zHH
CO
<ro
rx, UJ
o
s
rt
CJ
Q
H
Z
H .
CJ UJ rt o
Uh
CO
ffi
UJ
HONFO ICATI
HHo u,
CO
OI - H ^
<J Oh
00 HH* Z C O
^ c o
2 •-h
* Z
tt, 2
f 2
<J
H H U J
C O Q
z w
U J ^
£ z
< T
^ Z
o o o
c o Z
ffi co
H ~
UJ
<
60497800 D B-7
>>
OQ
Q
H
Z
o
u
oo
CJ
H
co
O
Z
o
<
5
UJ
Q
O
o
z
I
CQ
UJ
H-)
OQ
2
Vj
CJ
.5°
oo
oo
d
Oh
O
x>
'i>
1<H-f
co
XJ
CfH
co
Oh
X>
o
E
00
N
a,
o
d
CO
Xt
'>
•a
CO
Td
Oh
*CJ
O
E
00
.s
Oh
O
co
Td
Oh
E
o
CJ
XJ
o
00
I
fH Oh
O
CO
x>
O
OO
d
Of
O
CO 91
rd TZ}
Ou 0-
£ E
o o
CJ CJ
CO co
xi Xt
oo
£ E
00 00
d
.a .a
E £
H-"
Oh 0,
O O
•a
£
I
•acd
si
i-t
o
00
d
si
u
Uh
Uh
co
O-
£
o
>> CJ
dCO
cd Uh
EX)
00
cd cd
CO
CJ
co S3
Uh
O
CJ Oh
d .
O o o
o t O
d °
<H <*
o
61
eo 5
* - > 3
^ d
oo CO
Q. CO
£ "
. 3 U H
C O O
I H ° -
co £
d 2
d
3 ~
Oi o
COo
•d
Xt
93
t-t
.2
'3
o
3 «
X 3 c o
2 E
"a 2
> «
co S
>> 2$
H en
's .
-> +J
2 <=
£ 5
VI
-£ G
2 o
d o
Uh rl
Uh +J
CO
>^
d
cd X)
£CO
•f-J
o
o
oCO
M
CO
HXJ
'+-•
oCJ
cd ,3
rl C<
Oh
£Uh
co
oCO
<J co
3
=1
CO
•f->
cd t?
T - >
d43
d
o
CJ
3
£
cd
CJ
H-J
co
CO
£
o
d
£XJ
Uh
on si CO
oo
o
Uh
Oh CJ
1-4
<cd
O
« " e *
>> E
c d o
t : o
CO
>
o .
d 2 -d
c d 0 0 ^
O f - >
• ^ U h c d
o * • §
2 f."1 £
" • " ^ U h U h
H . < " ^
C O O O H H
* d
. . < 0 O
9 1 r i " H I
£ *5 -«3
5 > r t
H -S Of
00
.a
.a
.1.
-4—1
Of
O
o
Td
Oh
C O { -
1?
g S
d c d
Uh
Q 3 0 0
•S o
c j c o
3 j d
x» *-
o>
rt
* £
8 >.
_ H 3
o «-»
d *
d U h
r t c d
o.
CO co
.a »
Uh
e d e o
3 3
XJ XJ
o o
£ £
o.
S3 *j
Hd
fr XJ
£
cd
CO
t - t
>. cd
d d
cd
£00
O
Uh
Oh co
oH->
o00
f-l CO
QJ 00
Uh
Cd cd
Td
CO
Uh
CO
Oh
£
si .sHCJ
5 £
00 CO
C O ^
r t o o
X J _
d
co
00 ti
cd
CO
Uh h-1
CJ Uh
U
>—i Oi
Td
Oh
£
o
XJ
d
cd
Ld
<u
JO
cd
•f-"
co •d
:d CO
Oh fS
fo
oc
CJ Uh
co
>
<O
co
Z
I3
z
o
z
5s2
H
S
w
H
CO
oi CO
UJ
HUJ
<I
ffi CJ
CJ hJ
r- OQ
S
00 ><
CO
CO
Z
o
z
CO CO
UJ Z
H H O O
gQU
UJ
H-l
OQ
<
rtS
§g
«|
o
u
tt*
So
y? s H>.
^ol O UJ < UJ
gft ^ S ^ Q
& o > « z
H-)
3
k_ Uh y h o < o
>^ 00 L ) c o C J i = J
S^
NOT ENO WORKING HOLD ALL CONTROL INFORMAT
so
uj Z
S 2
Q
OQ
CO
UCJ CJ
Uh U. tt.
Uh
rt
Ph
rt
gy
O tt,
W UJ
H-l CO
2
rt
CJ
z
CJ
Uh
B-8 60497800 D
^^i
CO
U
H
CO
O
Z
a
UJ
Q
O
o
N
OQ
ttl
•-J
OQ
<
OQ
cj
d
op
co
Oh
E
o
cj
XI
o
E
a,
O
j 4
Oi g
d ©
. d c
"5 rt
w » _
c c
J-, 5
2 i
eo £
4 f H * J
oo
CO
« g
s ~
5 s
d o
-5 o
Td
Oh
E
o
XJ
o
£
00
Oh
O
O
Q
«4H
o .
UH 93
93 Td
S 3 O ,
E E
3 O
d o
CO
e o -
co cd
o
• H 0 0
c o O
o i £ co
a.
Oh
00
cd Oh
oo
Mo
CO
•d
Oi
Of
E
o
u
If o
*** c-l
H e o co
CO
ffi
Oh
E
o
xt
o
E
00
.a
E
Oh
O
xt
Oh
X
XI
o
E
00
•S
Oh
O
3
<
H
UJ
Q
ed
-d
O h U h '
x 3 o
0 * t
- H J * 9 3
c d r t
f J3
oo C3
d
O c o
O 3
Xt
'?
< >
r t X
Oh
,1Oi
UJ
> . oi
O - > Pu
w U-
co
UJ UJ oo
hJ ««
CQ < CO
< S ffi
H 9^
o
z
u
u. tt,
CO
Oh
o
s
o
Q
>
Z
<
o
o
H
< Z
o
Oh
£
o
XJ
o
£
0.
O
3
H
UJ
a
<1> CO
£o
cd
Uh
cd
H->
3
Oh
on CO
.s
X
fl)
xt CO
U! on
TJ
Oh
o
o
CO cd
Uh
cd
00 OJJ
ocd CO
Q
<
00
cd
15
co
si
•f-f
m 0 5
- - £
o
Ou
f U J
fc >
rto
tt.
UJ Qy
« S
i n Q
UJ
Uh UJ
Uh
co
UJ
rt
ui
o
z
<
rt
co
Z
o
cj
UJ
Uh
Oi
ttl
Oh
s
cu
rt
O
H CJ
Z ID
< rt
H H
CO CO
Z Z
o o
u o
Of
£
o
xt
o
£
00
d
Oh
O
3
<
ttl
Q
>
co
Td
Oh
T3
O
£
00
.s
N
Of
O
CO
H-l
HH
<
H
UJ
Q
cd
00
CO
'-*
d
cd
«/> •^3
cd rd
si Uh
a>
+-. Oh
dO
cd
00
d
O
co
si
H-l
CJ co
co
X!
H
c d d
«H Q £2
CO
NT MAY .OWED BY GN, NAME CONST AN
< §
NT DO MUST BE AN OR AND LES UAL TO
O i O
ttl c
ft 5 *
° 2 °
*- 5? uj
Z 9s ft
< . f fi , - h a
f c ° r ! H U J
C O [ j j o
Z h oi h rt NSTA FOLl AL SI THER
A CONST A
OF A REAL C OUT OF RAN( INDEFINITE.
p UJ w ^ o p W D O
O S H h J W ° £ az
< rt w p < . - . U J <
3 rt affi CO O Z r t
cu a uj h z < o
UJ UJ uj
Uh Uh tt.
60497800 F B-9
/*S5S*j.
CQ
Td :d Td r~i
O. o. Oh Of
£ E £s
oooo
CJ CJ CJ CJ
CO CO CO CO
13 13 xt XJ
OOo o
£E £ £
00 00 oo 00
d.£ .5
M N N M
E E "£.
-M
Oh Oh Oh o.
O O O O
CO CO CO CO
Td "•fH
O. o. 0,
£ E £ E
o o o o
oCJ CJ CJ
CO CO CO CO
XJ XJ XJ "3
oOoO
E E E E
00 00 00 00
.s .s
N.a .a
§ E E E
•HJ *->
Oh Of Oh o.
OoOo
<*®BV
o
u
CO
CJ
t—i
H
co
O
z
o
<
ui
Q
O
S
o
z
HH
N
HH
s
rZ
o
I
OQ
UJ
i-i
"I
co
co
xt
'>
y
xt
co
•d
y
Hi
co
-d
>
•s CO
CO
XJ
>
CJ co
•tt ed
00
d
cd
CfH
o"a3
XJ
OO
CO
cd Oh
ri —4 >>
cd
00
CO co
H-l
Uh
CO
Of
Uh
cd
00 Uh
Oh
U|H cd Uh >,
MdO
h-"
c?
CJ
co CJ
CO
si
CJ CO
f-J Uh
OOh
CO
XI
>
1
id
CO
CO
XJ
CO
>
co
XI xj
'>
y
*d
y
XJ
>
CO
CO
OO
cd
00
CO
Tl .s
CO
oo CO
3Oh
>>
Uh HH
9)
CO
id
cd
Uh VI
ttl
Oh T - t
, , Oh
cd
ECJ
o
Ct.
S3
3
UJ
IRECTIVE OLLOWED ATION LIN
zg
> tt.
!<=
Q iu g
H ttJ §
£J_. /<*H
o o
00 OQ ilh Q UJ H
C/ LI NOT CON DO L INAT EMEN
<>* <
S OQ TERM STAT
ttl UJ
tt. Uh
f-tj w
UJ >
H f ,
a
o
Q
< U
z
h rt
CO UJ
Z CJ
O u j
UJ
Uh
UJ
OQ
E-
S
s
OQ
<
HH
rt
UJ
Sz
uj S
tt. 5
~ O
Oi
2 ^
H <
Z"
rt hJ
uj
tt.
UJ
CQ
H
o
z
I*
<
UJ
<
z
UJ
uj
H
<,
H
CO (J
UJ
UJ
tt,
>*
OQ
Q
UJ
3
H-l
O
tt, CJ Ul
Uh
H-l
UJ
OQ
CO
ffi
H
O
H
rt
UJ
Uh
•sa
d
HH
z
ttl
co
!D
O
HH
UJ
&
H
H
o
z
^?^v
y^v
^
/ S ^ .
UJ
tt.
H co
J < *
rt uj
CJ o
r£ W -^^H
B-10 60497800 F
./*3s$!V
0$&s
/i$^**\
0S\
HH
H
z
O
cj
^-^
co
cj
H
00
o
Z
O
<
UJ
Q
O
2
O
z
N
HH
s
I
OQ
UJ
H-l
OQ
<
OQ
d
op
CO
Oh
E
o
XJ
o
oo
Of
O
xj
co
CO
Oh Oh
EE
o o
Oo
CO co
xt xt
o o
E E
00 00
N.a
§ E
•4-*
Oh Oh
O O
CJ CJ
CO co
-d XJ
O O
E£
00 00
d
N.a
£ E
h - >
Oh Oh
O O
Uh
CO d3
Of Oh
£ E
o o
oCJ
co co
Xt tn
Oo
E E
OO 00
.5
N N
£ E
o. Oh
O O
co co CO
X!
oo HH
9 3 2
*-> £
9 3 ~
£ oo
r t - H ;
eo d
O . U H
w d
l _ 9 )
i t i h
2 2 d
£ .2
ed h->
U H " H
c d d
OhG
Oh CO
O h S i
c d [ _ ,
d i >
c d . _ o
° E «
S 2 53
i- x)
r j e o
r t o o
o o 2
3 ^
•5' co
cd S3
, 9 3 0 3 a
C f H X " H
d o <
03 XX
U h O O
£ b £ -2
s
3 3
d
C O C O
x . x .
- ? d d d . _ ;
^ » c d
^ U h
5 U -
O c d
v i d
u h * "
O f £
1 * r r l
U H " O
oo CO
CO
2 S
Oh
T 3 O h
c o r t
Uh
e d * -
o S
<u d
X I d
£
B <-*
^ C N
e d ,
• d «
>
U H ; . h _ >
° i d =
d co
d £ E
w d d
£ « SP
<u « rt
«T5
2 -S
d
O O h
° - § £
c d o o 3
0 0 - f
.£ .S S3 £
Q
UJ
C O U r r l CO
NCE TO THI STATEMENT IS UNBALAN WITHIN THI
t-1 yq
H
HH
JNCE TO ARAMET
U J S C O uj ou
oi P ffi ~ rt o i .
REFE EiMETI TION NTHEJ UJ REFE HAS A NG.
<t_\t\$\$ < t r
tt. CO
Oh ZD < -< CO UH
< tt, Oh cu < S
ttl UJ
tt, Uh
Uh
O
U J t n
D H *
ortg
O Q O ^
fc rt
a o
UJ
Uh
CO
Si
ro <
CN
H-l
ttl
>
UJ
H-l
<
<
s
rt
O
tt.
ui
OQ
UJ
Uh
oi
o
tn
f c 0 *
£ U J
h J U - i
s 5
C O U h
O c o
* E
S- 2 -d
u h C C O
O u ,
o o t - i c d
•§3*33 z u
u - d
c o c o
S3
E
3
d
X,
H
«2 -2
82 |
rt „.
U h C O
• h x ;
c d t 3
CO
W fc
cj 23
Z r t
uj u
& £
uj £?
u- P
U J V 5
rt
UJ
Uh
^. w
< H
, O
UJ UJ
O i '
Ui
ffi
Ui
tt.
60497800 D B-ll
/-"^k
OQ
co
Td
Oh
£
o
CJ
CO
xt
o
£
oo
d
.a£
'*t
Oh
O
:d
Oh
£
o
•d
o
£
oo
3
.a
E
H->
Oh
o
Td
Oh
XJ
o
E
oo
3
N
o,
O
rd
I
O
XJ
o
E
00
.3
.a
H->
Oh
O
Td Td
o, Oh
E E
oo
CJ CJ
co CO
XI xt
OO
E £
00 oo
.3
N•|
t - t H->
Oh Oh
OO
Td
Oh
E
o
CJ
CO
XJ
O
E
oo
3
N
Oh
O
CO CO
rd Td
Of Oh
E E
8O
CJ
CO CO
xt XJ
oo
EE
00 00
3 3
N.a
£E
H-l
Oh Oh
O O
Q
H
Z
o
CJ
co
CJ
HH
H
oo
O
Z
o
<
UJ
Q
§
o
z
HH
N
i-^
s
H
Oh
O
OQ
3
OQ
<
.2
HH
CJ
<
d
cd
CJ
d
oo
'>
co
x)
y
UJ
Q
CO
XI
CO
8 d
3 eo
!. S
U h C d
U h h - »
C d V I
d Z
* O
CO
x> CO
Z
s 3
H H C O
Xt
C+H
co
CO
•d
co
xt x>
> >
YY
<+H <HH
co CO
CO CO
HH
•< <:
H H
UJ UJ
Q Q
CO CO
,5 fi
£. '§
.2 d
±i .d
«HH
CO
rt «*.
CO
dCO
+->
ocd
H-> H->
d
cd
X!
00
co co
XI
H-> S>
a> OO
UH
OCO id
S3 hJ
> <
O ul
u a
U h C d
O
>.-s
2 "
cd
co
E
OJ
cd
co
-5 B* -2
< , c d o o
X)
UJ
u
,1
a <
«» >
*P- XJ
, o —H
"S w
«- s
Oh «»
5 3 -H>
2 +»
5
0 0 / j j
CO
E
<o £ CO
X h a > ed
H "53 H->
00
-d
1
0|H
CO
/"SV
XJ
'?
-ICfH
CO
/«^??>\
XJ
't>
Z
> 2
<! co
S co
UJ
u- rt
H <
O W
3 «
O
z
UJ
Uh
rt
o
^ S 55
O O pq
Z u a
*- r ro £ +
« 3 fc
ri °
O 1-H
tt. rt
UJ
tt,
uj
iP
CO
00 co rt
fc JhQ
2
CJ
CO
CQ
UJ UJ
fc S t5
D< d
CO cu <
UJ
Uh
X .
0^ Q
< * > r ! H UJ
© fc z rt
h5 S > UJ
co £ co e-h
CO *7
1& \>\
CQ £> oq y
a z
UJ UJ
UJ UJ
Uh Uh
rt-
o
hJ
I
UJ
HH
H
CJ
ffi
U J t r ;
Uh
CJ
00
OQ Oi
H
Z
UJ ~
tt.
Cj£
2 Q
Z uj
HH*
hJ
<,
o
UJ
/^?^\
B-12 60497800 D
j^P^N
/5P\
S0M£*i,
/0$\
CQ
/S®\
f
co
cj
H
CO
O
Z
o
UJ
Q
O
s
o
z
1-^
N
fc
O
I
CQ
UJ
hJ
OQ
<
00
co
Of
E
o
XI
o
E
oo
3
.a
£
•fH
Of
O
rd rd
Oh Oh
E E
o o
oCJ
CO co
XJ xt
oO
E E
00 00
3 3
N N
E E
Oh Oh
O O
Oh
E
o
XJ
o
Of
O
Oh
E
o
XJ
o
E
00
d
Oh
O
:d
Oh
XJ
O
£
a,
O
Td
o.
XJ
o
£
00
d
.a
f-l
Oh
o
•o
.Y '>
co
13
9 3 t : d
9 3 9 3 £ O
3 c d § O
O 0 B .
u f H M 3
rt 5*2 d C.
-a to
t*d £ <*- 93
° _ o £
e ,r
d -2" H H 3 "^
d eo
3
d c o * * h
.3 x: JS£ CO
Uh
cd
Oh >
Oh
cd
oCJ
d
d
cd
o
CO
d
o
CO
rd
S3
cd X!
HH
Uh
cd CO
>Uh
O
Xt
d .
ed *->
oo
z -
» A C O
o
u
3
oo
o
< E
-cj5 Oh
•§•§
Z E
o -S
d .52
3 *
i i £
" c d M
rt <2
> 3
O u-J
E w
C O , >
E uj
hJ
d
• • h Q 3
r r S Z
CO
CJ
co
Oh
XJ
CO
<-i
O
Q
£
Uh
CO
eo
£
•d Uf
ed
CO
Id CO
Oh
£CO
XJ
CO
•f-J
ed
00
d
93
znd
Of Oh
£ E
o o
CJ CJ
eo eo
*d XJ
OO
EE
00 00
3 3
N N
'g "g
+J -fH
Oh Oh
O O
CO
H-l
<
H
UJ
Q
3
co
H
Z
UJ
rt
<
H
O
UJ
Oi
oi
o
u
Uh S
ffi
H
O
z
ui
u-J
CJ
3
OQ
z
o
s
s
o
CJ
UJ
Uh
00
O
sa oi
w °
-" rt
Of*. ttJ
z
o
I
o
u 3
o
w
Uh
UH
s
u
UJ
Q
15co
o
>
UJ
rt
Ou
hJ
<
o
UJ
oi
o
z
o
s
o
u
ri
UJ
>
a
o
z
H
CJ
tt, Ou S
UJ
<
z
is
UJ
Uh
OQ
z
o
£
o
CJ
UJ
H
<
Q
H
Z
<
fe W ( *
Z m O
u Eo
O Q * * •
5 t o
C O Q
UJ
CO
ZS-.
UJ
Uh
l - H ^ 4
C UJ
^ " - C O
u^ -^ r=i
few o
£ w z
R D w
< s
,> Q
UJ
Uh
UJ
H-l
OQ
<
2
<
<
Q
+n
ed
rd
Oh
E
o
CJ
Uh
<1>
co
rd
xs o.
oE
o
.H CJ
C> CO
CO
Uh
Uh
OXJ
r*
Ucd
. 2 C O
~ I
e d r t
O h M S Z
»4 £? v>
2 ^ U h
5 o
*"^ >H
d U h
e o o < u
3 ~ H H
2 O " 3
£ o £
30^
- f c o e o .
<a d ^3
x J o o
co co
d X O h
h h C O 0 0
UJ
tt.
Oi
o
oi
oi
UJ
<
Z
-00
UJ
>
o
OQ
<
Uh CO'
O r ^ ,
gco
OQ
UJ
Q
UJ
tt,
oi
oi
ttl
hJ
<
<
60497800 D B-l 3
CJ
^^
co
CJ
HH
H
CO
O
Z
o
<
ttl
Q
O
5S
O
z
HH
N
I
OQ
3
OQ
UH Uh Uh Uh Uh Uh Uh Uh Uh
CO CO CO CO CO CO CO CO
rd rd rd dTd rd rd id
Oh Oh Oh "o. O. O. S* Oh Oh
E E £ E E £ E E E
o o o o o o oOo
CJ CJ CJ CJ CJ CJ CJ
>>
OQ CO CO CO co CO CO CO CO CO
•d xt XJ Xt XI XJ xt d*d
xt
CO
3
oo 00 oo oo 00 00 00 oo 00 00
HH
.a !a .a .a .a .a .a .a
E£.1
v> HH *n 't-i H-> +J '•fH
o, Of Oh Oh o. Oh Of Oh Of
OOO O O O O O O
d
00
fHd
CO
U-,
o
CO
UH
3
Ti
CJ
2
oEv>
3
<£
cd
HH
oo
Uh
CO
•d
UH
Y
HH
d
CO
XJ
V
1
tfH
fH d
CO
xt
2.
U-i
HH
d
CO
XJ
V
1
<4H
Uh
M
d
o
o
•8
CO
H-»
d
UH
00
H-i
d
CO
3
id
CO
XJ
'?
•ItfH
h - >
d
CO
3
>
I
HH
HH
d
CO
3
>
2U-i
CO
Oi X,CO CO "<3 Uh CO "ei3 CO "co
CO CO CO CJ Oh CO co CO CO
uired order ements.
HH
d
CO
£
CO
fH cd
cd
3
CO
t - i
S
o
Uh
3
CJ
CJ
o
c*
H->
CO
£
HH
1t * H
xi
CO
CO
o
cr *->
C O t o
UH "HJ" O O
sn
3
Uh
CO
T - t
d
CJ
"1 rt
§Uh
xs
HH
' u h
ed
eo
XJ
d
"o.
E
d
cd
o
d
00
CO
ee section 1 foi f nonexecutable
+-t
d
CO
V
1
CO
fH d
CO
3
>
1
U-,
+ j '
d
CO
XJ
V
1Cuh
CO
Uh
CO
+H
O
t - i
si
CJ
d
cd
Uh
cd
£
o
ct.
00
Uh
3
CJ
oo
Uh
3
CJ
o
Uh
CO
•IH
CO
E
cd
Uh
cd UNCTION or S1 atement.
CO
1
cd
Ih
cd
O,
E?
3
cd
3
8
d
o
3
.2
HH
CJ
d
t-i
d
CO
£
CO
H->
cd
H->
d
CO
E
CO
HH
cd
•in
sn
<
<
Uh
O
Uh
HH
d
CO
3
>
2
4>
C O o CO V3 CO CQ Oh t t . t o tn CO CO
[VE STATE- SEQUENCE. HOLLERITH HECK FOR OUNT ERROR,
oi
O
Oi
ttl
H-,
H-l CJ
CO
Z
O
u
><
ttl
Oi
Oi
UJ
CQ
Z^
u z
H-^
< -
Sz
°g
rt £
O H
Ul
\-^
H4
z
HH
UJ
H
UJ
oi
<
r-i
UJ
H
00
UJ
Z
h-1
rt
r—t
tt.
Ul
Q
>-
H-l
r t '
uj
H
ttl
s
oi
UJ
H
UJ
2
rt
>*
Z .
O u j
Ui
Oh
O
3ffi
CJ
s
ttl
hJ
OQ
<
2
ttl
s
ttl
H
<
H
CO
co
00
tn
CO
. DECLARATl MENT OUT OF , DEFECTIVE CONSTANT. C CHARACTER C
UJ
QHH
OQ
Z
o
»—H
f - , r Q
S H H
CO
Oh
o
o
UJ
CQ
5
HH
z
HH
tt,
UJ
Q
tt,
CO
<
Z
HH
5-
H
Q
a
rt
CJ
CJ
O
t t J S <
H ' >
O Z H
UJ
H
<;
CJ
s1
CO
CO
s
CJ
3
CO
HH
> .
Q oi
UJ
N
hJ
o
Q
Oi
O
H
CJ
-<
tt.
rt
UJ
O
w
g
CQ
C O - '
ri
o
Q
CO
a
H
Z
o
ui
Oh
O
Oi
Oh
s
OQ
ID
o
Q
H-l
o
tt.
H-l CO
ttl
O
Q
Oi
o
CO
CQ
uD
CO
ML| U-l UJ UJ UJ UJ UJ tt) UJ
tt, tt. tt, Uh u- Uh Uh tt, Uh
y^$*v
xSSfe.
<*^*N
/T^k^s
B-14 60497800 D
J^^\
/fS\
J#f^\
CQ
Q
H
Z
o
o,
co
U
HH
H
CO
O
z
o
<:
UJ
Q
o
s
o
z
N
H
Oh
o
I
CQ
UJ
hJ
OQ
<
xt
o
E
o.
O
xt
O.
X
H - l 3
UJ
o
Z
UJ
oi
UJ
tt.
UJ
rt
S <
H^UJ
"~— OQ
C O ^
UJ Eo
D
UJ
tt,
o.
E
o
XJ
o
E
oo
d
Oh
O
-d
">
I
CO
CO
3
>
uj
Z
UJ
UJ
CO
UJ
S
•<
Z
o.
E
o
XJ
o
E
O,
O
—3 Td
Of Oh
EE
o o
CJ CJ
eo CO
•d XJ
o o
EE
00 00
dd
NN
E E
•*-» +-*
Oh o,
oO
Oh
£
o
XJ
o
E
oo
d
.a
E
o,
O
•d
O
E
00
_d
Oh
O
rd
Of
xt
o
E
Oh
O
3
y
3
'>
CO
eo
•d
'>
.Y
uZ
co
xt
?
CO
Oi co
a
o.
cd
d *
c d P
u S3
Uh
tZ °0
d o
C O U h
d O f
5 -2
uS 3
c d o o HH
d
o o e g CO
> < d
o i -
Z 3 CO
UJ o CO
_ CO *»
S d x :
< c: .SP
O h t i
•S £
3
00
d
' C d
cd oo
9 1 ^
Oh
Of
S3 *t
cd c j
' C O
o-g
d r t
ed *o
.2 .d'-0
*ri "C *->
£ d
c £ 2 &
eo £ £ «
d « C O C h
t t . » 5 X > O
^ 2
M * ! N
.£ x "oo
c j e o
e o d
O h d
O h c
c d ^
3 £
§ i.g
31 s
8 E
Uh
X>
d
cr
ttl
"H-l
<
Z
»--
tti
H
cd UJ
trj um
3 OQ
aoo
gffi
£ OQ
UJ £ C O
2 ffi
UJ
Uh
Z Z uj
HH
tt]
OQ
1
2 K
zfco
UJ -1 UJ fe: Q
S rt
w <
^ fc
UJ
H
S . a *
fc £ <
H 5 Uh
< eu <: < CJ o
H Ou ttl HUW
w < S CO CQ oo o UJ
ENTRY AY NOT PROGRA NTRY NOT RANG
Sz
Ul >- fc >* UJ
< < x
2 < S H
UJ UJ
Uh tt, Uh
u-l
fc S3
UJ
S
UJ
H
<
H
00
UJ
H
<
a
UJ
UJ
Uh
> .
f c Q
oi 53
o Ul
z a
82
CO
Q ~
fc co
zQ
m W
3 f c
> U J
5 ^ w'
" E*
UJ
Uh
OQ
»-> hJ
rt 5
w S
Si
fc o
oi
<
Ui
tt.
Ul
S
UJ
H
<
E-
co
/»JJP*\
60497800 F B-l 5
CJ
co
CJ
H
CO
8
UJ
Q
O
O
z
HH
N
I
OQ
3
CQ
d
oo
CO
co
oo
ed
oo
oo
CO
Td
Oh
£
O
o
CO
XJ
o
£
00
3
.a
.§.
G
Of
o
2
UJ
Q
CO
co
UJ
r i ] ^f * r - 1
ffi •z
H H H H
£ H
Q r t
H- l f c
UJ f"1
fc u3
oi
O
UJ
tt,
co
rd
I
o
o
xt
o
£
00
s
•9
Of
O
•d
'?
cz>
co
:d
o,
E
o
XI
o
E
00
3
N
Oh
O
rd
Oh
E
o
CJ
XJ
o
£
00
3
.a
Of
O
rd rd
o. O,
E E
o o
CJ CJ
CO eo
XI XI
oO
E E
00 00
3 3
N N
'3 £
+H
Of Oh
O O
•d
O.
E
o
XJ
o
s
00
s
.a
£
HH
Of
o
d
X)
UJ
CJ
2i-t
<d
Hxt
UJ
CA
CO *HH
eo CO
CO co
oo
d
CO
E•£
' l H
ed
d
3
<i> OO CO +j
Ti
cd
-|H
oo
;d
£O
ffi
Ho00
<CO
Uh <2 "oo
O
O
O
.3 .2
tt.
co
Xh
<J
r2
cd
o
00
00
O
Oh
CJ
CO
O,
VI
Uh
t - i
tn
d
.2 <J
. - , d
r - C O
« E
c o c o
^ 3
0 > c o
3o
o . O
Q O h
-s 1-S
a2SiS
P cd 00 HH
h h " d j a "
0 0 ! * H
c d c o
X J
•d
< d
c d O
H - > 0 0
o o C O
.tl "5
M " 1 C O
£3
H e d
r t X I <
* - i C d H H
ed
d
ed !>
UJ
^ >
O ~
xt
CO
£ *
3 o o
E?.S
ed
>> i
E S
e o o
E o
d U h
HH
a .
[Tl t-t
^ d
u h f o
o £
z -
S fc
^ U J
C d H - l
Oh
j + J
c d d
Oh
3
3
fi * «
w E «
t h r t S
O Q O . o o
rt
w
Is
co
ou
O
H
co
2
O
00
fc I
UJ ^o
fc 3
UJ
Uh
HH
>
tt)
rt
Ou
ttl
< .
Uh
UJ
tt,
CO
Oi
UJ
S
s
2S
UJ
tt,
CO
H
s
H
2co
~ >
Uh HH
UJ
UJ
H
hU
H
rt
o
tt.
z
uj
ffi
<
H
CO
ttl
ttl
Oh
rt
HCO
Oh
o
HO f fi <;
<tt, CO
It Ul
OQ fTl rt
CJ CO H-l o s
Uh r-\ rt rt
ZOrt o
ttl UL! ui tt.
Ul
Uh
>*^^v
j^^^V
,«*^?V
B-16 60497800 D
/i<S%s
/$£^N
/?P^\
^-^
oo
cj
H
CO
O
Z
o
UJ
Q
O
s
o
z
N
3
E
o
I
CQ
UJ
r-\
OQ
<:
OQ
d
o
HH
o
d
op
co
o,
E
o
XJ
o
E
00
d
Oh
O
o o Z Z
*-> o
d ' 1 Z
9 3 e d
P C J
co u-, .s
ta '§ E
,_, CO
" O , w,
^ 0 0
d
o
Uh
CO
00
CO
§ §
• ^ H £
U 3 ffi
J- r t
£ o o
3 3
X J _ H
eo X, c
o - «
"^ >2 -2
oo * ^5
0 « H
0 0 <
o 3 S
I- S3 S
eo g O
d o f c
< O h e d
X)
o
E
00
d
E
o,
O
XI
o
E
Oh
O
Oh
E£
o o
oCJ
co CO
XJ X)
o o
EE
00 00
d d
NN
£ E
o. Of
O O
o.
E
o
o
xt
o
Oh
O
d3 2
Ed
o o C O
3
"o S E
d C O
03 "d
d t o
CO
H-l Oh
d
CO 3 H
O CO
xt
">
2H-f
CO CO
UJ
a
CO
0 0 J
• H H f c
.8?
CO CO CO cj Z
•d
">
£
CO
CO
E
2 93
OO
o _
Of!
S CO"
a> 3
E a
c d • *
c d
•d
co co
M O U
60 3 £
d r t j j
3* £ 3
c d O h h
d « "
^ d 1 — I
^.2 w
o-
d
o
« * h O C O
' £ ! d
e d c j o p
_ £ "^
h h « * -, e d
ff .2 S
rt § <
c | 2
< f T 3 e d
Xt
JEi+-i
3
co
C O e o
3
H-l
UJ
s
< eo
Z x j
Oh
£
o
XI
o
E
.aE
o-
o
X3 oo
Uh
Ooo
oo
OE
3sn
OCO
co
Uh
cd
OO
ri
CO uj
C O o
Z c J
2 s - &
P g c g
^ 3 e o ^
C to •£ 9i
3 x !
t t , U J U h "
z £ <*-
S f - H «
rt O <u 2
O r t S £
o oq g H-i
rt d 8 «
C U C O O s o
CO CO
CO
tt)
o
Q
UJ
Z
o
HH
H
U
Uh
ttl
tt.
OQ
D
CO
<00
HH
CO ffi
<H
oi
<
ttl
Oh 3s
§5
H2o
O<(Vi
Z > CU
uj
H-l
CQ
S
Oi
$
ffi
£ 2
cu Z
U h * f c
UJ
Uh
UJ
H
<
H
00
H
oo
UJ
<
z
UJ
S
UJ
<
Z
ttl
s
CO oz\
H x
o g
CO
ui
<
z
UJ
Uh
UJ
Uh
OQ
Q
UJ
g
8
rt
UJ
<J
Z
£
UJ
r r J f c
U J r r l
s £
<
Z >
- f c
O h C O
s
ui
Uh
CJ
Oi
tt)
ffi
s
<
rt
UJ
Q
<
UJ
ffi
UJ
S
UJ
H
<
H
oo
H
CO
rt
UJ
Uh
XJ
o
£
00
d
Oh
O
CO
H-l
)—l
<
H
ttl
Q
CJ
Z
D
Uh
2 o
o S
oi ?
£ co ^
d o
. d u o
«- Z fi
>~ {.j *zi
U h h h C C J
UJ H tS
co
§
cj
rt
UJ
Q
<
UJ
ffi
UJ
Uh
60497800 D B-l 7
cj
co
u
HH
H
co
O
Z
o
H^
Q
UJ
Q
O
S
N
I
OQ
UJ
fc
OQ
<
Ih Uh Uh Uh Uh Uh* UH Uh
CO CO CO CO CO CO CO CO
Td Td rd Td ?d rd
Oh '3h 'S. Oh Oh Oh Oh Oh
E £ E £ E E E E
Oo o o o o o o
o o o CJ CJ CJ CJ
CQ CO CO eo CO eo CO eo CO
XJ •d XJ xt •d XJ XJ •d
xt
CO
-a
sn
sn 00
3
.a
.1
00
3
.a
00
d
.a
00
3
.a
E
•a
00
3.a
£
00
.3
.a
E
00
3
.a
£
HH HH 't-t HH >a t - t T^
O, Oh Oh Oh Oh o. Oh Oh
O O O O O oO O
d d d* d*
CO
HH
cd
HH
OO
UJ
U
z
ttl
op
'3
d
CO
1
3
ST »
C O C O
E E £E E U h 3
3dj __2 J3 co cd
S-'S
d3"3 ,_)
o
•a
o
<M
d
CO
HH
d
CO
CJ
f - i
<
CJ
HH
<
CJ
l—i
<
CO
H-l
r—l
HH
O e d
Oh
§5 Z,:q o
s s
o2 s
•d XJ ttJ
'? '>Ul tt) UJ UJ UJ
2hh < H H CO CO CO eo CO CO
oo O
3o
d t «
E o
3 3 eo eo CO CO eo
CO co CO CO 00 CO CO CJ
00 +H
• " * d
9 1 n
2 '^
S rt
Cd ft-,
«fi b
CO
Uh
CO
t - t
ei
Uh
cd
X5
cd
3
T 3 c d
CO
•*; d
ed
3
XJ
CO
t - t
cd
CJ
tin
"o
CO
°*sn
CO
E
eo
HH
cd
HH
00
V3
Xt
Uh
cd
3 &
'~ 2
o ^
co
CJ O O h
HH
00
Uh
o . 3
CO
f a
9 3 «
CO
E
CJ
HH
eo
Xt ta
Uh
3•8 X)
CO
xt
CJ *d F"! ta *h3 CO Cb Xt
03 o O o o c d cd tn +H
tt.
CO
3
op HH
d
t—i
•o ic1
d Ou
eo
•S
c d c j HH
co cd CO
HH
o
CO
•H
dHH
d
t - t
X
CO
co CO
XJ
j>
•I
CfH
3
co
o s
C O r t
00
eo
Xt
8
CO
UH
O,
• H C O
2 ^
°3
d C O tt,
• H U -
2 g>
U h d
e o ^
C O
< <a
cd
3
d
o
HH
-in
CO
XJ
Uh
O
Uh
Uh
UJ
tJ
d
CO
£
eo
-h>
ed
00
CO
3
">
dCfH
3
CO
CO
XJ
V
£
eo
CO
CO
eo
X)
00
ed
X!
UJ rt
UJ oi
UJ <• rt
UJ rt
UJ
HH
CO CO
co
Ou
o
CO
oi
Ui
' H H
UJ
H-.
ffi
H
tt,
O
Oi
Ul
ttJ
CQ
z
U
O
H-l
CJ
a-i fc
r x f c
H - l ~
o «
f c / - s
f u Oi
rt
s
rt
uj
Uh
CO
HH
UJ
u
Oi
o
rt
rt
ui
tt,
CO
O Oi
^ r t
g UJ
CO
H
<
s
rt
o
u.
CO
a
H
CJ
HH
H
rt
ui
H
rt
00
00
tt)
ffi
CJ
2h-l
hJ
CO
z
UJ
KtH
u
3
CO
a>oo
oo
CO
s
OQ
J
O
UJ ttl
s
ttl
U UJ "
fcQH*
< ! -
O 62 °
U J ^ -
a o fc
rt'
o
s
2
ffi
rt
o
tt,
UJ
oi
=
CO
H-l
<
o
UJ
h-1
UJ
rt
OU
CO
O
cu
O
z
HH
oi
o
HH
Oi
ffi
H
rt
O
tt,
UJ
ffi
CO
CJ
HH
<
o
a
Oh
CO
q
oi
Ul
H
CJ
2
CJ
H-l
a
UJ
_J
UJ
oi
<
Oh
LEGAL Cl REMAIND EMENT W LETED.
Ui
<
o
UJ
H-l
OQ
z
o
s z
r-i hJ 5 <• fc H
H H -T CJ
CO Z O h
< o H-l
HH H-l
hJ CJ
CO Z Oh
<: o H-l
HH rt 2 hJ UJ
Hj-J UJ
Ou j-4
oHo.. UJ H-l ttl CJ o w tt. ffi Uh 2
tt, CO tt, <1 CO CO tt, tt. CO 00 Uh CJ U h f fi CJ o o
tt) UJ ttl UJ ttl UJ ttJ ttJ
tt. Uh tt, Uh tt. tt. Uh tt,
ySv
"•,
>^^\
,**S\
B-l 8 60497800 F
«^^\
,i*ie^\
0&*K
j j t P ^
CJ
co
U
o
z
o
<
UJ
Q
O
o
z
HH
N
CQ
uj
hJ
CQ
l-i Uh Uh Uh Uh Uh Uh Uh Uf Uh Ih
co CO CO CO CO CO CO CO eo CO
rd rd rd td rd rd ra Td rd
oo. Oh Oh Of o. Oh 'Bf Oh 'cx Oh
E E E E E E E E E E E
Oo o o o o o o o o o
>. CJ CJ CJ CJ CJ CJ CJ
OQ CO
xt CO
•d CO
XJ
CO
*d eo
X) eo
XJ
eo
•d
<u
X) CO
X) eo
•d
CO
XJ
*d
CO
3
OO 00 00 00 00 00 00 oo 00 00 oo oo
3
N
1
Of
o
t - t
Oh
O
.a
£
Of
oo.
O
.3
'•fH
Oh
O
.3
.a
E
in
Oh
O
i-t
Oh
O
.3
.a
E
t-t
Oh
o
*-»Oh
O
.3
.a
•4-»
Oh
o
dc: ci fi" ci
£ £ E E E EsE £
3d d d j3 J3 =] _d
d
.2 CJ CJ CJ CJ cj CJ
-< 00
HH
<
H
UJ
Q
CO
co
CO
H-J
d
CO
3
">
2IfH
3
CO
CO
xt
>
2
3
CO
tt)
Q
<u
CO
CO
CO
H-l
HH
<
Q
CO
co
CO
tt)
Q
CO
eo
CO
CO
H-l
HH
H
UJ
Q
CO
CO
CO
CO
H-l
<
H
ttJ
Q
CO
eo
CO
co
hJ
<
H
ttl
Q
CO
co
CO
tt)
Q
CO
co
00
HH
<
H
UJ
Q
CO
CO
CO
CO
zUh co
rt ed
15
D d
f c
•~^.
cd CO
si
rt g ^_;
cd t - t ed
CO
E
CO
CO
o
d
cd
<° 3
5 o
CJ
Xh
t - t
Uh
CO
cd
Uh
cd
Oh
eo
st
Uh
co
Uh
O
fHcd
cd
o.3 ~ Hd
oo XJ
t - t Uh
cd i-i
d
doed Of sn
t - t i-i H->" H-l ^J u h C O
£ E Uh oo
ed Uh co
oo H-l +j t - i ^J
op CO
oi
t-
co co
3
">
CO
•d
">
co
3
">
CO
3
>
eo
3
>
CO CO
E 3
2 oo
cd
Uh
Xt
eo
oo ed
Uh
ed
oo
cd
CO
3
">
eo
3
'>
CO
3
YyYY Y S .. »-cd
x! ed
x. ttl c2*H^f
<H < 4 H C*H Ch (fif O h r o CJ •d oj,
3 3 3 3 3 j 0 0 £ * cd CO
00 CO CO
co CO CO CO CO < t X J e o ttl CO CO co
Oi
9
UJ
I - ,
tt.
h-1
UJ
OQ
3
Uh fc Ui
H
CO
oo tt.
Ul
CO
D
ttl
ffi
H
HH
CO
hJ
UJ
OQ
H
ttl z
H <
r * h h
00 UJ
o
z
ttl
00
ttj
<
z
CO
z
rt
kJ
H
ttJ
Oi
o
§
UJ
CO
Oi
O
H
2
<
Oh
tt)
CO
UJ
S
UJ
H
<
H
CO
H-)
<
Z
rt
uj
a
uj
Uh
< 0 i
X o
£ 2
C O ^
HH
X
<
z
CO
ttl
z z
~ o
z 3
^ fc
co cj
cd JJ5- H-l H-l f_' fc ^ H-l h J r t H-l rt H-l _) UJ hJ tt)
H
<
H
CO
^ i f c
00
CO <j fc tt) < £ UJ •<
O
ttl UJ UJ
UJ o fc
U J ^ H-l
OQ
CD t- 1 ttJ \z UJ Ul ttl Q z
^1
H-l JH-l H-l tt) CO H-l <! U-J H-l _) H - . f cH-l
HH i? <, hJ hJ
HH fc o J-l hJ hJ hJ hJ H-3
H-)
tt, CO Z <
a z
oCO UJ hJ Oh ttJ
UJ UJ UJ UJ Ul UJ UJ UJ UJ UJ uj
ttf tt, tt. tt. Uh tt. Uh tt, Uh tt. Uh
60497800 D B-19
J^^\
CQ
OJ
rd
O.
E
o
cj
eo
XJ
o
E
oo
d
•a
Oh
E
o
X)
o
E
oo
d
a
rd
o.
£
o
•d
o
E
oo
d
•a
Oh
£
o
o
CO
X)
o
£
00
.3
.a
rd
Oh
E
o
cj
XJ
o
E
00
.3
.a
rd
Oh
£
o
CJ
•d
o
£
00
.3
.a
rd
Oh
XJ
O
E
00
.3
:d
Oh
E
o
XJ
o
E
rd
Oh
E
o
XI
o
s
oo
.3
.a
yfS^\
Oh
O
Of
O
Oh
O
Oh
O
Oh
oOh
OOh
O
Of
O
Oh
O
P
H
Z
O
CJ
w
CO
CJ
HH
S
<
Ui
Q
O
o
N
o
•i-i
+->
ta
co
3 2
Ui
Q
CO
XJ
V
2U-i
CJ
2• 2
1-^ l—i
<<
HH
ttl tt)
Qa">
CO
XI
CO
XJ
J3
O
CJ
HH
<
Q
CO
CO
CO
XJ
E
o
CJ
f,
<
UJ
Q
co
^*fSS\
/^^^*\
CJ
ed
CJ
i
OQ
a
CQ
<
CO CO
xt
V
y
CO
XJ
V
2
<+H
CO
xt
"S
•I
.ds
CO
3
>
co
eo
3
>
I
co
CO
Xt
V
2
3
co
CO
3
">
y
CO
'>
CO
CO
XJ
co
'>
CO
XJ
co
Q
ttl
HH
fc <_!
eg
fc w
ui
H-l
<
o
UJ
hJ
H-l
tt)
tt.
tt,
o
ttl w
Q r%
o <
J2
< z
<3 o
SP
fc y
UJ
Uh
Ul
ffi
H
Uh
O
ttl
00
O .
r Z
3 2
O co
uj
tt)
u-
hJ
s
a
UJ
si
2 o
<zo
fc9§
5 fc z
uj fc Eo
dfc<
< rt
z o
UJ
tt.
tt.
O
ttl
Uh
tt)
tt,
H-l <«3
OQ *5
< s
s ^
«, g
:* fc
o £2
co
H
CJ
tt)
rt
rt
o
CJ
Z
uj
tt.
HH F-H
£ z
o w
fc s
fc UJ
O fc
Uh ttl
rt
o
z
o
HH
H
<
CJ
J3
&3
H
oo
^1-
CO
Q
UJ
ttl
u
X
tt)
ttl
ttn
rt
o
uu ui
Uh
ttl
CO
D
H
O
Z
<:
s
tti
CJ
Z
CO
«,
ui
s
<
z
z
o
HH
H
U
/^ssn
ttl
tt- o
rt
<: <
B-20 60497800 F
0F*\
(0$\
J$§<&\
CO
CJ
H
co
O
Z
o
<
ul
Q
O
S
o
z
N
o
OQ
Ul
ri
CQ
<
CQ
d
o
o
XJ
o
£
00
d
o,
O
CO
CO
^ U H
T 3 O
o '
Sf §
HH T3
s -
83
S o
3 5>
f c £
• ^ d
U J _
hJ <u
•d
o
S
00
.3
O
<
H
tt)
Q
xt
co
Oi
ttJ
OQ
r-i
ttl
>
ttl
H-l
Q
hJ
>
Z
o,
E
o
XI
o
E
00
d
Oh
O
xt
o
o,
O
X)
o
£
00
.3
Oh
O
2 2
<
H
tt)
Q
CO
CO
XJ
>
y.Y
co
tt, O
O Z
W g
co H
jb co
tt)
Uh
rt
tt)
H
u
<
rt
CJ
I—H
u
z
UJ
sg
Q g,
U J c j
> f c
>*
fc S Q
Z * 3
w UJ o
£ O Z
w < tt)
o i '
o
H
CO
Of
E
o
XJ
o
E
00
d
o.
O
3
*>
co
Q H >
UJ
Uh
>-
oi
o
H
O
tt)
Uh
Uh
O
UJ
>
ttJ
H-J
uj
uj
OQ
H
o
z
ttl
CJ
Ou
t t l 0 0
oi ~
O tu
UJ S
S fc
oo .<
Uh f-1 H-l"
f c ^ ^
ttl h O
fc Z rU
ttl fc
s ri
tt)
tt.
ttl
>
ttl
u
z
UJ
D
rt uj
UJ oo
a
rt
Oh
Q
UJ
Uh
UJ
Q oi
U J U J
UJ <*
»J uj
fc ffi
co C
^ z
S 5
XJ
o
E
00
d
o.
O
t o U J
2 Z
C O r - >
directiv OGRAM SUBRO
> * O i r *
< O h °
H-l
rt J2Z
ttJ *- o HH CO
r > Q 3 t Z CO
he 0 reced UNC CO
i-i
ed I
H Ofttn 00 CO
*d
o
E
oo
d
3
E
Oh
O
XJ
o c d
3 .S
xt
d
ed
00
X3 eo
i s d
2 o -
. 4 ) M
> 1 U h U h
• d O f S 3
• " " b f * I
O 9 3 C O
z
o
oo
CO
UJ
oi
f c r n
ffi
fc U
< z
o
o
3
< UJ
CQ UJ
1 H
<
co
Z H
M C O
Td
o.
XJ
o
E
00
.3
Oh
O
t - i e o
C d O h
.2 >>
oo *-"
£ t n
91
- U h
o o e d
O "
. S i c o
fH -jn
cd
•3 .8
C J * ^
a> hh
X J o o
3
<u .
O , J
^ 0 0 ^ - H
H J S H
° 2 o
si o, O
CJ O H-l
t t - h J
3
•I
Q
ttl
co
D
a
ttl '*"'
° O
h J ^ c o *
< z rt
2o o
3 f*
rr* Oh
ES O
UJ
Uh
60497800 D B-21
/•5S&S
OQ
xJ
CO
3
rd
Oh
XJ
o
E
00
.3
Oh
O
-—> rd
O. Oh
E £
o o
oCJ
CO co
XJ XJ
o o
sE
00 00
.3 .3
N.a
§ E
Oh Oh
O O
o.
£
o
XJ
o
E
00
d
3
E
*aOh
o
Oh
£
o
o
XJ
o
00
d
o.
O
CO
Td
Oh
•d
o
£
00
.3
Oh
O
Oh
£
o
o
co
xt
o
E
00
.3
0.
O
/*^\
y*5^$^\
"1
O
CJ
co
cj
H
co
O
Z
o
<
ui
Q
O
S
O
Z
S3
i
CQ
ttl
OQ
<
oo
2
oo OO
3 «
§ 2
6 o
CO o
•2* ti
c d d
oo
d
cd
U H ° *
o <=>
a o
s? ^
^ J - d
d
O 2
O r C 3 Of
3 3 o §
CO
•cj3
•fi S
cj c2 elC f H U H
O S3
"i>
CO
XI
>
X t t- t
eo o.
1 s
<u eo
c o c o
S 3 o o
d
"K to
O U h
f i «
d £
cd » H
eo
•^ 3
O o o
£ 3
o °
Q £
o
< t H
d .3
o
XJ "cj1
co cd
a -°
CO
c&
« Jg
2 *-
" " ' X J
CO
00
d
cd
-5 «4H
1st o
xt
's>
CO
•d
"?
§
tt.
HH
H
tt)
O
co
00
3 r ,
55 O
00
E ".3
5 £
<HH d
£ C O 0 0
£ f i ^
* - J C O
O O h C
CJ oo
(~s 'd •*-•
u-> E cj
CO
^ - e
C J — f U h
C O C O O
, 2 h O C J
U iS 3
XI
>
CO
d a
eo yd
HH
= &
< " « H
|-> 5
ed cd
0 0 0 3
< .-a
Q .3
-8
t2
.2 O
CO
w d
^ O h
3 E
-2 °
ed cj
U H ^
5 g
•d -S?
C Q c d
XJ
'>
.Y
xt
'*>
CO
Z u j
H
Z
Ula u j r t
w Ou
££
go
o
UJ
CQ
Ou
O
3
UJ
Ui
00
H
ttl
O
coZ
H co
O ffi
CO
H
HH
UJ
Q
CO
cu
O
3
tt)
Uh
HH
H
CJ
tt,
ttl
CQ
H
O
z
<
rt
o
Uh
r-f
Sh3
UJ
H CQ
35
_)
tt)
03
H
o
z
co
uj
tt.
UJ Z
ttl CQ
Z o i
u i
- h U h
co rt CO
s q z
2 rt <:
r t r t
ttJ h
uj
tt,
O . U J
•< fc S
2 <3 s
o ^ <
Z ^ H
0 0 tt,
£ O
tt)
Uh
UJ
Uh
Oi
o
H-l
<
Z
o
W 52
/^^s
X)
"j >
Z
o
rt 00
ttl
rt
ft
ui
co
CO
fc oi
r i O
tt, Q
z u
si
uj O
r t Q
/*^\
UJ
tt.
oi
cu
z
o
CO
<
Z
OUh
CO
Oi
ttl
rt
o
Hm
ttl
S
<
rt sg
<! 9 <
Oh rt cj
y^^ \ ^
B-22 60497800 F
>^S\
ifP?N
r
CJ
tn
cj
HH
H
co
O
Z
o
ttl
Q
O
s
o
z
3
s
HH
B
o
OQ
ttl
H-)
OQ
<
OQ
d
o
HH
o
<
CJ
d
cd
o
£
d
op
oo
o- Oh Oh Oh
E E E E
o o o o
CJ CJ CJ CJ
eo CO eo eo
XJ XI tn •d
Ooo o
EEE £
oo 00 oo 00
.3
N(M (M
EEE
*H t - t
Of Oh Oh Oh
OOO O
XJ
y
XI
>
CO
CO
uj
rt
9
oi
<
Ui
oi
o
S
uj
tt.
uj
s
XJ
XJ
"J>
eo
CO
H
Z
ui
S
UJ
H
<
fc rt'
CO g
H O i
£2 rt
hJ w
uj
Of
E
o
•d
o
E
oo
d
3
E
HH
Oh
O
Of o-
E£
oo
CJ CJ
CO eo
•d XJ
OO
E£
oo oo
dd
•a
£
Oh Oh
OO
o.
£
o
XJ
o
E
00
.3
Oh
O
Oh
E
o
CJ
CO
XI
o
E
00
d
Oh
O
CO
'>
en
*>
co co CO
xt
V
co co CO
XJ XI
'>
2
3
co
UJ
tt.
tn
tt,
tt)
hJ
O
Z
ffi
o
H
tt)
U-
a i co
Sh^
5^
- _ J I H ^ - f
s £ uj
3 rt
cu <
UJ
Uh
ffi
u
H
s
O
z
ttl
tt.
ttl
s
<:
Z > H
Qm
fc Q
Z UJ
2 £
co Q
Z f c
uj fc
S tt-
ui
tt.
CO
rt
Oh
UJ
rt
Q
rt
<
g
<:
J
<
D
H
<j oo
< 3
rd
Of
XJ
o
E
00
.3
Oh
O
Uh
< S
z S
o
z
tt)
Uh
ou
co
tt,
O
Oi
UJ
OQ
f c
OU ttJ
u
« ttJ
52
ttJ
Uh
ss
CO
z
rt
D
H
eo
CO
3
>
CO
CO
oi
ttl
H
CJ
3
UJ
Q
O
O
ttl
uQ
tt, ttl
O Q
oi C )
ui
OQ UJ
5 Z
z <
UJ
Uh
< rt
ui°
OQ H
s z
H °
Z^tti
a rt fc
S W OQ
w o <
£ fc 2
co a >
60497800 D B-23
0$®\
OQ
Oh
E
o
o
eo
XJ
O
E
00
d
Oh
O
Oh
E
o
CJ
eo
•d
O
E
00
3
Of
O
rd
Oh
£
o
cj
xt
O
E
00
.3
Of
o
rd rd
Oh Of
E £
o o
CJ CJ
CO eo
•d Xt
oO
£ £
oo 00
3.3
N N
•g 'g
t - t t - t
Oh Oh
Oo
Oh
s
o
CJ CJ
CO eo
XJ xt
o o
E£
00 oo
.3 .3
N
1'g
t - t
Of Oh
oO
» t f i $ K
/^ ffJ X
o
CJ
co
CJ
r—i
H
co
O
Z
o
<
tt)
Q
i
o
z
r-,
N
l
OQ
a
OQ
<
8-
ed
o
ia
3
.SP
co
C O d
3,-2
E rt
o 2
2 3
.3 -*3 d
U H O
HH
d
xt CfH
00
clCh.
3
CO
M d
fi *d
c j E
CO
XJ
'i>
-ICO
CO co
HH
<:
J3
3
cj
<
H
ttl
Q
co
•a E
oo CO
t-t t-t
O h r t
Jh t-t
3 .2
3 0 0
o<
uh
o x t
-fi ^
h h U h
CO
M X )
O O f -
eo O
, - j
a l d
»n *~ co
a
UJ
xt
- fi Y
Oh
Oh
cd
d
CJ
XI
o
S3
u h X J
cd
. C O U h
o B* co
fi rt £
-, cd
c d o o 2
d c d
£ £ a
CO
d >.
c d X 3
C O t J
O C O
~ r5
3 .2
6 .3
E ^ p
cd
E ^
c o . 3
O f e d O h
"fi _
e o d r t
XJ
>
-I
r-\
CO
CO
co eo
si *z)
H 3
<
<
S
Q 2 O
22 < <
f c H H H
C O f fi
> * r _ H
f=% Oh
2 uj
ri <->
2 £
OQ UJ
S fc
5
a
UJ
uj
Uh
ttl
CO
UJ
z
o
z
o
tt)
tt.
rt
UJ
H
CJ
2
rt
uj
S3s
Ul
Uh
h tt, rt
z f c
2 CO H
aia
£ p ^
< f c «
H S <U
C O r t O h
UJ
ffi ffi
•d XJ
CO CO
xS X!
CJ CJ
d d
d d
Oh Oh
o d
C O 3
C J o
3
co
Oi O
Ou ttJ
fc
hJ
t t J ^
tt.
rtg
H f fi
co H
o d
eo 5
r H O
C J o
c
eo
XJ
"J>
y
H
2
tti
hJ
hJ
o
ffi
r^^\
«*S3"*V
H
O
z
O c o
Z - 1
UJ
rt
UJ
ffi
uj
tt.
«0h"
OQ co
Oi U
Oh CO
7 B-24 60497800 D
jfJf^V
^P%
CJ
co
u
HH
H
co
O
z
o
<
2
uj
Q
O
O
z
HH
N
>,
OQ
OQ
ttl
H-)
OQ
<
op
co
Oh
E
o
•d
o
£
oo
.3
Oh
O
XJ
o
E
00
d
Oh
o
rd zzi
Oh Oh
E E
o o
oCJ
eo CO
XJ XI
Oo
£E
oo 00
d d
.a
£
Oh Oh
O O
XI
o
00
d
'n
Oh
O
Oh a,
£E
o o
CJ CJ
eo CO
XJ XJ
O O
EE
oo 00
.3
N
"g
Oh Oh
oO
rd rd
o. Of
E E
oo
CJ CJ
eo <u
tn XI
oo
EE
oo 00
d.3
NN
£E
Oh Oh
O O
d
CO
XI
"i>
.Y
XI
>
00 CO
cd
t - t
C
>.
oo t - t
Ih
c2 Uh
co
t - t
CO
xt
CO
oE<H
Xh ed CO
OOh CO
3
">
CO
xt XJ
tn
xt
co
Uh E£
°co
s B ««
o j f c
H z °
§ O co
f c j 2
oi uj *>
fc S w
OQ
co
oi
O
s
<
oi
O
O
rt
Oh
UJ
<
z
UJ
z
3* UJ
Uh
ttl
•ttJ
Z H
S <
q fe
uj
CJ t tl
z >
tu <
Cat H-l
ttl ttl
OQ Q
CO
r-i
ffi
H
o
z
ttl
fc ei
p ui
Oi PL,
rt
o
ttJ
LU
co
H-l
UJ
OQ
<
fc og
Q>
UJ ul
Z Z
UJ <?
rt ffi
uj p
uu ^
UJ UJ
rt oi ^
O £
S cj
UJ
tt.
ttl
S
ttl
<
H
co
si
CO
Z
rt
D
w < n
rt fc 2
fc rt
< Oh
tt)
tt.
rt
O
Oi
oi
UJ
H
CO
00
Z
UJ
rt
UJ
tt,
hJ
'ERNA PEAR CO tff
oo S
C ^ t t J < H
X <
UJ ffi z fc
(-H ttJ
RETURNS OR MES MAY NOT DECLARATIVE
00
Z
UJ
UJ
H
<* RIGHT PAREN LLOWED BY A NSTANT, OR L RENTHESIS.
5 z o o <
z a CO Uh U Oh
UJ ttl
Uh tt.
'>
.Y
3
co
Oi &
o
fc s
h J ^
<* q co
a ri fc
Oif-\X
< o h
> fc z
r t t )
ri 5i <
£ , ^ O h
§ fcl' CO Uh
5/3 z £
O uj
CJ hJ
tt)
Uh
60497800 D B-25
/pten
/"SsV
o
u
tn
U
HH
H
oo
O
Z
o
ttl
Q
O
o
z
HH
N
I
OQ
ttl
OQ
<
Uh Uh Ih Uh Uh Ih Uh Uh Uh Uh Uh
CO CO CO CO CO CO CO CO CO CO CO
rd rd rd rd rd rd rd rd rd rd
Oh 'o, Oh Of Of Oh o< Oh Oh Of Oh
££ ££ E £ E E £ E E
oo oo o o o o o o o
CJ CJ CJ CJ CJ CJ CJ CJ
>.
OQ eo
XJ
CO
XJ
CO
XJ
CO
X)
eo
tn
CO
XI
CO
XJ
co
XJ
CO
X)
eo
X)
CO
XJ
•d
CO
3
00 00 00 oo 00 00 00 00 00 00 oo 00
HH .3
'n .3 .£ .3
N
,d
3.3
.a
s
.3 .3 .3
E11JIE E
t - t •*—> -T> HH t - >
Oh o< Oh Of Oh Oh Oh Oh Of Of
O O O O oO O oO O O
in
ed
d
eo
sn
3
CO
E
cd
d
d* ci
eo
c
_d J3 ja
dd3 3 o 3 3
ooCO* CJ CJ CJ CJ CJ CJ
<H
d
CO
XI
>
2CfH
en
Uh
c2
M
o
eo
X!
cd
d
93
S3
.2
*a
cd
>
HH
d
CO
3
">
dU-i
CO
XI
>
2CfH
CO
j-J
<
H
tt)
Q
CO CO
r-i
<
H
UJ
Q
eo
ttl
Q
CO
•<
H
UJ
Q
CO
ttl
a
CO
UJ
Q
eo
3 3 3 CO CO co CO co eo CO
CO ed CO CO CO CO CO CO CO CO CO
d
osn
't-t
cd sn
Uh
O
Uh
3Uh Uh
,fi CO
y
CO
eo
t - t
ded
Uh ^j
CJ cd
dCJ X, CO in
cd
CJ
3o\ CJ
CO
t - t
.3
cd
H
3
d
CfH
oXt
CO t - t
CfH
O
cd
sn
CJ H - < H-> HH HH t-t
,00
CO ^o
3
CO
3
>xi eo
E.2
co
3
'>
CO
3
>
CO
X)
CO
XJ
';>
CO
3
>
CO
X)
eo
XJ
" j 5
ed
00
CO <H-f
cd Cf-f <2 -d U-i CfH HH cl
id CUH
s3CO
CO CO
xt CO
CO
CO CO CO CO
CO
CO co
CO
00
cd
co
oo
co
s
H-l
o
o
H
ttJ
s
UJ
H
CO
: SUBROUTINE NAME REFERRED TO BY CALL IS USED ELSEWHERE AS A NON-SUBROUTINE NAME.
CO
a
Ui
S
a
u
1—1
H-l
o
OQ
CO
co'
oi
UJ
H
CJ
CJ
>-
z
<
s
o
o
H
Uh
CO
<
Z
HH
Cxi
s
rt
uj
X
<
H
CO
z*
O
t—i
H
z
Uh
UJ
Q
SYNTAX ERROR IN
DATA ITEM LIST.
>-^
oi
8
oi
tt)
X
<
H
CO
ttl
s
ttl
H
<
H
CO
<
Q
SYNTAX ERROR IN
DUMMY ARGUMENT JJST OF STATEMENT FUNCTION.
i-^
Oi
s
oi
ttl
X
<
><
CO
ttl
ttl
ScH
CO
ttl
o
Z
ttl
H-l
5
a
UJ
r-i
Oi
o
UJ
X
<
s
CO
CO
UJ
z
O
Q
Q
UJ
CU
rt
o
rt
oi
uj
X
<:
H
z
00
Ou
S
OUJ
UJ
H
<
H
CO
HH
rt
§
oi
Ui
X
<H
CO
CJ
ttJ
H^
Q
rt
ttJ
%
3
UJ tu tt) UJ uj ttl UJ ttJ UJ ttl ttJ
Uh tt. Uh tt. Uh tt. tt. tt, Uh tt, tt-
yS£v
/^^\
/^Sv
jt^^^S
B-26 60497800 D
/pus.
>.
CQ
/f$$&K.
/$$&\
/ $ ^ V
CJ
*rrS
tn
U
H
co
O
Z
o
<
S
UJ
Q
O
S
o
S
N
I
OQ
ttl
hJ
OQ
<
cd
O
<a
3
00
XI
o
E
00
.3
Of
O
2
<
H
ttl
Q
XJ
>
y
UJ
tt.
ttl
OQ
s
s
H
co
oi
#
fH
z
o
u
s
o
ttn £!
XJ
o
E
Oh
O
•d
o
£
00
.3
Oh
O
Oh
£
o
cj
eo
Xt
O
£
Oh
O
Oh
E
o
CJ
Xt
o
Oh
O
Oh
E
o
XJ
o
E
Oh
O
3
'>
2Cf-f
3
co
•d
CO
3
'>
.Y
CO
d
cd
t n &
C O o
3 « =
U h * - *
S co
d
O G
c j c d
X 3 v i
c d , d
* " ' c d
H c j
3 £
o o o
Si o
o £
co *'
Uh
f V U h
X £
° o ,
2 E
£ °
cd
* I
«> .2
oo «a
3 U h
c d f o
° g
CO
.3 2
d .2
» -2
E 5
CO
t - t U h
c d c o
t-t r—J
" a
2 £
H o
xt
eo
d
ed
CJ
«3
Uh
oo
ed
x:
d
oco
00 XJ
cd
eo
Uh
Oh
X
Uh
CO
93 Oh
co
x;
H
• d i t
8 g
o o O
-fi 2
o -2
"a *s
o o c o
C O * - "
Uh
x .2
S E
H c j
rt
UJ
H
<
UJ
Oi
o
Uh
Oi
CO £
CQ "" .
S 2
3 h f - H
H co
uj
tt.
£§
ttj
hJ
9
ttl
Uh
Ul
Ui
tn
oi
O
Z
o
31
f c ^
Q / C O
I
is
I £ CO
uj oi
-1
CQ
<
ttl
tt,
ttl
ttl
CO
oi
O
£
ttJ
S
tt)
H
«,
CO
tt. uj
w
CO
o•-1
H-)
tt. §.
Oi
ttl
>
CO
1
rt
o
o z
ttl CQ
nHCO
OQ
<
CO CO
rt
ft
a. ft
ttl
ttl
tt.
T3
Oh
XJ
O
E
OO
.3
O.
o
dHH
oo
00
00
eo cd
Uh S3
Oh
Xtn
CO CO
. f . XJ
cd
d
CO cd
£>
CO
t - i
cd
Uh
CO
00
00 eo
t - t
od
d
o
d
Xt"
eo
oo
CJ
CO XJ
Xh co
CJ cd S3
Xt
>
O
H-l
tt.
rt
uj
>
o
H
co
H
<
z
u i '
fc rr
oq fc
UJ
tt.
Ul
UJ
CO
oi
o
z
O
00
CO
UJ
oi
ft
UJ
CO
>
<
rd
Oh
£
o
cj
•d
o
£
00
c
o.
O
3
•d
>
co
H-)
VARIAB MPLIED SIMPLE
< UJ
UJ
z £
5 H
fH-l 2o
oo Z
CO
UJ oo
O i ~
ONTROL OR DO ST BE A
OQ
<
2
uo£rt w J J
w O 2 Ul t t J < <
s<§ x u u
Ul
H
Z
H O O
u- o
O H-l 33
UJ UJ
tt. Uh
/^*\
60497800 F B-27
OQ
O,
£
O
X)
O
E
00
.3
N
Oh
O
O.
E
o
eo
tn
o
E
00
.3
Oh
O
rd
Oh
•d
o
£
00
.3
.a
|o.
O
eo CO CO CO
rd Td Td
Cu Oh Oh Oh
£ E E E
o o o o
CJ CJ CJ CJ
CO CO eo CO
XI XI xt XI
ooOo
£E E E
oo oo oo 00
.3 .3 .3
.a
E'g 'g
fH
Oh Oh Oh Oh
OOO O
00
d
Q
H
Z
o
(J
co
cj
HH
H
CO
O
Z
O
<
ttl
Q
O
S
o
N
s
HH
e
o
I
OQ
ttl
hJ
OQ
<
' t J
cj
<
"3
.SP
co
'>
co
xt
CO
•d
'>
XJ
'i>
CO
•d
*J>
£
eo
CO
CO
x;
o
CO
3
>
.Y
•d
'>
co
3
>
co
XJ
tn
• h : >
C O >
B o
a d
§ _ - f HOh d
£ o < o
co - 45
XI O ed
H Q t o
o o . 2
* r i
"^ I
.2 £ **"'
53 5 _!
o o o d
£ d c o
s* * i
£ 3 «
d « »
• ~ x j
CO ,d <"
oo U-,
e o S 3
E .2
Z.S *
XJ
.Y
^Jf^V
/*^8\
oo
HH
Ul
OQ
qH
CO
H-l
H-l
O
tt. UJ
9
ttl
CO
tt, rt
ttl
ffi
HOh
O
H
00
UJ
tt,
CO
rt tt)
2fc
< ttj
E-1 Q
U T
o fc
~^ H
co o
co 5
fc ?-V
oi<%
•r, O co
j*~^ s.
* >*
* O Q
U J P
g Q tt,
O t t l
C_.
rt
o
u i
< CO
z f
fc ttJ
w < M
UJ
rt
2
uj
tt.
CO
Z
O H
U t t .
ttl
< fc
y*?^|V
B-28 60497800 F
/p^
CJ
tn
CJ
w
o
z
o
<
ttl
Q
O
O
z
N
OQ
ttl
H-l
OQ
<
/s^sfeV
OQ
d
op
co
•d
o
E
oo
G
Oh
O
3
*>
CO
xt
Td rd
Oh
E
o
CJ CJ
CO eo
•d Xt
OO
EE
00 00
d d
NN
£
i-t
Oh Of
O O
d
>>
tn
>
C O O
- ^ 1 - 1
X J U H
cd OO
•a O
rt fc*
>^
3 S
eo
£ o
eo
3 E
s n r t
Uh
. 00
< &1
Q .23 d
H
O
z
<
s
ttJ
s
•<
z
co
<
<
Q
ttl
tt.
ui
co
UJ
OQ
CO
D
rt
O
/—\
< >
HZOQ
5
uj ttl
Ou < $
oH-l
UJ H-)
co
HH
ffi
H
rt
<
hh*
o
tt.
oi ttl
oOQ
ttl
tt,
xt
o
E
00
c
Oh
O
rd
Oh
XJ
o
E
00
c
Oh
o
Td
Oh
•d
o
E
00
d
!a
£
Oh
o
'I 8
3 c d
Xi
3
P
3 °
8 -a
r ; » c
2 -fi tS
G t - t C . H
,d -fie1
rt 'I I
* . . 3
Cm
j*-: CO
CJ Uh
eo
x:
oCkH
CO
Uh
co
si
XI
>
b y
° £ -d
G -5 o
-1 -o
co 5 2 G
* d e o 2
ed
H H O
O ~ ~
d
d
ed
d "
**sz
o ±:
O
^ Q
oo
X ! d
«•§
S 2
£ x:
00
G
Xt
.Y
H
tt.
ttl
H-l
ttf
s
<:
z
H
Z +
C O t t J
z rt
o <
U O u
2 .
rt fc
fc£
CO '"",
<
o
ttl
Uh
•d
o
E
00
.3
.a
£
t - t
Oh
O
3
>
y
tn
ttJ
Q >\ r%
uj fc Q
h J Z f c
fc o d
^ "^fttj
S _ C J
z o
003
OSffl
UJ
Uh
o.
E
o
XJ
o
E
00
.3
3
Oh
O
3
CO
CO
<2 x
0 x.
hh eo
d , 2
d c j
c d 4 )
O XJ
CO
u h d
eo eo
X i '
E
C J O
XJ
co 0 0
eo fc .2
U h - j V i
>> = S
2 co £
d x: £
2w
00 z
CQ UJ
D r t
CO UJ
. f c
>> tt)
Z oi
l>
o §
o rt
ttJ
Uh
60497800 D B-29
/0$£\
,/^^*\
>.
OQ
O,
E
o
o
XI
o
E
oo
3
N
Oh
O
Oh
E
o
o
co
•d
o
£
00
.3
N
Oh
O
CO
Td
o.
£
o
cj
XJ
o
£
oo
.3
N
Oh
O
Oh
£
O
O
CO
xt
o
£
oo
.3
Of
O
CU rd
HOh
ofc
CJ
CJ
CO
XI
o
CO
xt
Eo
E
oo 00
.2 .3
.a
Oh Oh
oO
CO CO
rd rd
Oh Oh
£ £
o o
CJ CJ
eo co
Xt •d
Oo
£ E
oo 00
.3 .3
NN
E'g
Oh Oh
O O
rd
Oh
E
o
XJ
o
E
00
.3
Oh
O^S\
o
cj
xn
u
t—i
H
CO
O
Z
o
<
UJ
Q
O
S
o
z
HH
N
I
OQ
a
OQ
<
a
CJ
<
o
d
3
3
00
CO
eo oo si
*-t sn 00
9 3 * d ' d
Q E E CO
•d
'>
CO
XJ
CO
X)
"i>
y
tn
Uh
o
CJ .3 HH
co
Uh
rd xt
CO
oo tr)
cd CO
X! oo CO +j
Uh -*i
IH <fH S3
XJ
5
G
ed
o?
c o G
UH co
8 g
/—\ 9>
' w ' c d
•—• t-t
C O 0 0
XJ
« X I
— * o
93 S
r i C d
r ' M
H x>
S 3 .
£ E
cd on
o
Uh UH
ed Oh
co
Oh (0
Oh
cd •S
'>
CO
CO
CfH
3
co
CO
XJ
V
y
C O
C J U h
'&) £
o O
a .a
ra «
. I h U h
a CO
e d O f
tn °
CO r-i
*-t ed
e d d
•2 2 -d
XJ " hh CO
.3 .3 «a
eo T5
eo K
H o
5 5 >
Oh c55
eo
3
$
ff i
§5
fc,«
H - l r H
§
o
u
a
<
H
O
H
uj
tt.
z .
<! co
ffi fc
~2
oi co
UJ
O
Ix
H
r-i
Oi
< Z
Oh <
2£ fc
O oa
Oi H
W co
S 2
s s
15 5 rt
^ o
HH H H
3s <
5 2
CJ
UJ
tt.
rt
o
<:
H
co
z
o
Uui
fc 5
o S
fc 2
g5
rt
o
H
tt)
Oh
o
a
UJ
N
z
o
o
u
tt)
rt
UJ
Uh
UJ
H
<
H
co
Q
UJ
N
HH
z
o
o
cj
tt)
rt
S §
2
ttJ
tt,
uj
O ttl
rt rt
OQ Ou
i=q 5 w
^rt z
ttl
Uh
/*5$|jV
3
'>
•IC*-f
3
co
/ 3 ^ \
X)
d
CfH
3
oo
tt)
tt,
0%$&K
a ==
o/^Sv
B-30 60497800 E
,/^&X
/#^S
/sP^V Uh Uh Uh Uh Uh Uh Uh u4 Uh Uh
CO CO CO CO CO co CO 93 eo CO
73 rd rd rd 73 rza ZZ- ra
O, Oh o. Ui Oh Oh 'Of Oh 'Of
EEE £ E £ E £ £ £
ooo o o o o o o o
CJ CJ CJ CJ CJ CJ CJ CJ
CQ CO eo CO co CO eo CO CO eo CO
XJ XI X) •d XI XJ X) •d Xt T3
•d
CO
d
oo 00 00 oo OO 00 oo 00 00 00 00
HH _d .3 _c .3 .3 .3 .3
*N .a .a .a :s
E £ fc
+-» fH *-t
Oh Oh o. Oh Oh Oh Of Of Oh Oh
oO O O O O O O oO
0&\
<J
CO
CJ
H
CO
O
Z
o
<
tt)
Q
O
o
z
HH
N
0$\ CQ
tt)
t-i
CQ
<
J0^\
0O^\
't-t
O
<
d
ed
cj
«
3
00
'>
Oh
Oh
cd
oo
3
S3 2
c d f c
— i C J
3 «d H H
CO s n
eo Z
3 £2
t o C O
CO
>»<
Ss
H-l
<
o
tt)
H-l
8co
2 H
ttJ
tt.
ttl
Z
o
HH
CO
CO
<
CO
*d
CO
CO
o .
o o O
c o X
o Q
O
Uh f O
Oh CO
^ d 3
*- O h
G
C O G
<
Q
co
2
CJ
co
OQ
H H - ,
C O U J
Cu
Oi
<
a
OQ
<
HH
Oi
ttl
Uh
Oh
<
8
s
HH
<
H
tt)
Q">
.Y
X)
'> 'i>
co
'> XJ
>
<
O 2
cd E—
.E°" " C O
3-°
ed .,_,
e o h h
x : «
f"H {/]
XJ ">
SX
G
D
•d
.V Cf-f
3
co
CO
OU
O
O
hJ
O
Q
UJ
fc.
co
CO
O
Oi
UJ
N
cj
co
tt)
tt.
CJ
H
<
tt)
OU
ffiO
Of,
rt£
fc s
uj **
> £2
w Eo
H-l [Tj
UJ
tt,
00
Oh
O
H
CO
O
Z
z
z
<
o
co
H-l
o
UJ
d
§2
tt)
tt.
tt)
OQ
UJ
OQ
H
CO
S
z
o
tt)
Uh
co
Z
o
o
>-
CQ
Q
tt)
£
O
h4
hJ
O
tt,
w a
CQ S
O
z
>H
<u
s
H
O
z
UJ
Uh
rt
o
z
<
co
Z
o
cj
CO
Z
O
o
rt
o
H
ffi
H
rt rt
uj uj
H-l Oh
UJ
Oh
O
H-l
O
ffi
tt)
S
ffi
H
HH
Oi
<
tn
'>
Uh
O
E.2
cd
XJ Uh
rd
CO
Uh
cd <1)
CJ XI
<i>
XJ 00
oo ca
co CO
O- XJ xi
CO
eo"
CJ
cd
Uh 00
oed
uj rt
rt O
<
hJ
u
UJ
Q
co
<
tt)
Oh
><
H
UJ
rt
o
z
co O
s z
H Z
O
S3
Z U
D U J
Uh Q
60497800 D B-31
OQ
rd
Oh
XJ
O
E
Oh
O
CO
rd
Oh
E
o
CJ
XJ
o
E
oo
.3
N
Oh
O
rd
Oh
E
o
o
xt
o
op
Oh
O
rd
Oh
£
o
X)
o
£
00
d
o,
O
rd rd
aOh
£ E
o o
CJ CJ
eo CO
•d XJ
Oo
£ E
op oo
.3 .3
.a .a
£ g
*-t t-i
Oh Oh
O O
rd
Oh
E
o
O
CO
•d
o
oo
c
3
Oh
O
rd
Oh
E
o
cj
XJ
o
E
00
d
.a
E
HH
O.
O
Q
o
CJ
^-^
co
CJ
HH
H
CO
§
<
UJ
Q
O
s
r—l
N
OQ
3
CQ
<
.SP
co
XJ
2
C+H
3
co
CO
C
co
cd
X!
h-j
cd XJ
CO
sn XJ
tt,
u^ CJ O.
E
Gt - i
CJ
cd eo
X?X!
nCJ
CO
UH
sn
cd
CJ
oo
00
H> G
CO eo
E
uj
G00 co
ed eo t - t
t - t H-> cd
cd t - t
CO Uh tn
CJ 91
G
l—i
CO
oo
CN
cd
XJ XJ
CO
eo
E .
' S i 9 3
X J C J
_ ^ G
x t e o
C O U i
U H . 9 1
e d C f H
— 3 C O
C J U h
CO
X J C O
eo£
eo
Ih 8
CJ
G • - " 93
a'
HH
<
H
UJ
Q
•d
co
.. rt
• 2 U H
d O h
c d d
CJ CO
Uh
CO JJ
.3 13
3"°
O c d
•2 ««
d r t _
CO XJ cd
Xt
Uh
O
£
"ob
si
G•d
eo
Ec!d
ou
Uh
CO X)
cd
.Weo XI
CO
00 Uh
Of
XJ
H
X)
ed
XJ-
Oh
>*
<
OQ
o s
u uj
<
H
co
O
H
O
O
Q
ttl
ffi
CJ
Z
OQ
< O h
rt
o
2
OU
fc ffi
! 1 H H
UH
H Z
z fc
Si"'
UJ
oi
o
tt,
ttl
CQ
I
CO
CO
ttl
H
<
CJ
HH
Q
Z
HH
tt)
H-l
OQ
2
oo
d e o
4> X!
• — ' H H
d '*-'
3 °
.t-
° 3
» rt
2 O f
£ e d
H c j
z
O co
f c H
xt
">
CO
o
UH
CO cd
3
Oh
E
CfH
O
OCO
O
CQ
ti
tt)
z
S ttJ
f2
CO
3
Z
o
X!
H
s
( J e o
h
e d r t
t - t
3 ul
§ z
O f f c
O h f c
c d • <
M >
G *~*
CO H->
sa
«> w
2 a
uj
H
CQ
Xt
CO
c
co
XJ
CO
Q
ttl
ttJ CO
cj co
><S ti
H « n
3fe§
S
tti
H
Jco
ttJ fc!
«** °9 **
S < H
H m w
^ 5 Z
Q < O
> CJ
'fS^\
yr^v
B-32 60497800 D
CJ
co
CJ
H
co
O
Z
o
<
3
w
Q
O
S
o
z
N
CQ
ttJ
hJ
OQ
<
op
tn
Of
E
o
TJ
O
£
o.
O
3
O
x:
-a
E 9 3
Uh
CO CO
r H t n
P .3
3
>
CO
H
co
H-l ro
rri (/J UJ
_) H-l H-l
mOQ
<* s <
rt ui
i-H
<f ,<
>co
<Q
tt) CO
CO
Httl ttl
<! CJ
a x x
ttl ttl
Of
E
o
•d
o
E
Oh
O
Oh
E
o
cj
XJ
o
Oh
O
XJ
CO CO
sn tn
d . - d
<u uJ
c j a
O eo tn
U h C O
°* "d. 52
52 ed
fl l G c o
_eo d -d
ed co
> £ £
ttJ Cd JJ CO
Of
£
o
CJ
eo
•d
o
£
00
c
"3
Oh
o
'Sf T^H
Oh
E£
oo
CJ
eo eo
Xt XJ
OO
£ £
oo 00
G.3
NN
£ £
Oh Oh
O O
d
cr
0 0 .
2 -
Oh oo
d
C O C O
C J
tn "°
eo "oi
Oi ea co
3
*>
2
3
co
">
CJ
CO
H-l
<
ttl
Q
cd
o
£ 3
cj c o
c o G
~* £
0 0 9 3
r - t O
X S T J
+ H 0 0
•d
ca o
T i t t ,
o
C O C
I h . d
Uh
° c
c .2
Q
ttl
N
H-l
<
ttl
o
z
H-l
<
z
' co
S 43
r t |
CO
ttl
CJ
HH
>
Ul
Q
cj
Uh
2 Q z
So fc a
tt) Z Z
Q x •<
uj >
ac
QS fc
* ffi
3 Q S
< ttl CJ
rt ui <
< q fc
ffi X <
CJ Ul CJ
t t i r t
E2h h r *
CJ Oh
£2
OO U
00
ttJ «
rt
o
H
Oh
2
CJ
00
W
Q
Z
gfcSH
z o
^ So
O rt
" c o
a
ttl
Q
f tt l
H O
8 5
rt
o
Uh
tt.
CQ
O
o
o
"ri
tt , W
°B
f fi H
Jj c o
Z OQ
f c D
hJ CO
CJ
H
2
s
h4
<
z
o
5 o
UJ
o
CJ
o
oi
Uh
H c o f c
CJ
2CO
fc£
tn
o
E
00
.3
Oh
O
CO
XJ
CO
Uh
Of
G
d
d
xt
o
Oh .2
ul
H
o
z
<
Q
Z
<
<;
u.
<J
3
OQ
e Z
5 o
uj
rt
o
w8
s <
< fc
CO CJ
60497800 D B-33
>.
OQ
rd
Oh
£
o
o
CO
XI
o
E
00
d
•fl
a
Oh
o
rd
Oh
£
o
CJ
eo
•d
o
E
00
d
•fl
Oh
o
rd
Oh
E
o
o
eo
x)
O
S
oo
Oh
O
rd
Oh
£
xt
o
E
00
.3
N
Oh
O
CO
rd
I
O
CJ
eo
xt
O
£
00
•fl
Oh
O
CO CO
rd
Oh Oh
£ E
o o
CJ CJ
eo CO
XI XJ
Oo
£ E
oo oo
.3 .3
N N
3'g
HH
Of Of
o o /f^s^V
p
H
Z
o
u
^/
CO
CJ
HH
H
CO
O
Z
H
Q
UJ
Q
O
S
o
z
N
r-t
rt
I—I
OQ
300*
XJ
eo
co
CJ
CJ
d x i
OO 5J
C f H >
• r t U h
-C ! 9 3
.=5 JO
HH S3
3 ~
cd o o
" g
8 5
3 *
CO CJO
rt .3
o>
n
f-H
oCO
oo
t - i
Oh
3ed
CJ
G
3G
cd
o
4H
G
O
00
2
uH
G,
cd 00
c> Uh
CO
XJ HH
Uh CJ
oed
acd
XJ
<, CJ
CJ
G
eo
3
cr
M
6
.drt <<h
a o
© o «
2P «
C O
a o
o "
H H 3
00 00
.eo
O* t-t
« o
oo -»H
rt >
•> CO
? CJ
£ O
8 S
a 2
cd -G
1 '
=2
.2 ^
8 c
ta «
3 o
.a s
00 CO
u- S3
•in «
d-2
CO £
X)
V
2
xt
•?
2Ut
3Ut
1%
•d
dG
cd
£
d£
00
oG
CJ eo
^XI
CO
«, ta
HCO
ttl sn
Qcd
CO
x^?v
co
XJ
CO
H> ed
co
Uh CO
..Em
*d co S?
o >
,S3 C eo
eo eo d
X ^ " d d
H - " r t c d> o o
Xt
y
.3
•d
co
Uh
£
3 .
CO *->
x t d
CO
CO £
CO CO
Jo -a
£ O
B o
soOi
XJ Ou
H t o
XJ
•s
CUH
CfH
3
co
xi
V
2Ut
CO
XJ
V
y
zn
S3
3
O
O.
9 > r r t
*o 3
r t 9 >
8 .a
Oh £
2 '-J3
3 &
^5!"\
U i
uio
Ou :z
co
is
H
O
z
3Sa
rt
uj
Uh
fez
£ o
OQ m
r-< (J
U h t t ,
ttl
Z
HH
Uh
ttl
Q
H
tt.
f fi f c
H Z Z
S O S
5 w uj
OQhJ
fcS^
£2^
'^ > a
uj fc
S o
a
oi
Ui
Oh
Oh
o
Sg
u-i
sz*
o
N
aQ
uj rt
ct, ou _
afe*
S \T co
>" UJ
OQ O
. j t f S ^ K
^H^H
B-34 60497800 G
fjjttS^SV
/•jlSy
0!®\
/•J^N
CO
U
H
CO
O
Z
o
ttJ
Q
O
s
o
z
N
I
OQ
ttl
hJ
OQ
<
/~£P\
X)
o
E
00
G
Of
O
3
xt
CO
3
ttl
5
X
Q
ttl
Q
UJ
u
UJ
oi
Ot
2
3
o
z
Oh
£
o
•d
o
E
00
.3
O,
o
3
'•>
co
xt
00
ttl
Z
Q
Z
ttl
a"
Q<?
ttl
B
tn
tn ttl
<• <)
X Z
XI
o
00
d
3
Oh
o
Oh
E
o
XI
o
E
00
G
"fl
Oh
o
Oh
£
o
XI
o
£
00
c
Oh
o
o.
£
o
XI
o
E
00
.3
o.
O
O,
E £
o o
CJ
eo eo
XJ •d
O O
E E
00 oo
.3
N
'g 'g
o. Oh
Oo
o.
E
o
XJ
o
E
00
c
'fl
Oh
O
00
c
3
">
co UJ Oh
cd xt
X! <u
t-i S3
eo
Uh CO
dn
oo
c
Ul
;n
3
CJ
t - t
<
E-
ttJ
Q
CO
c
co *2
sa E
_ 9 i
• r t t - t
• d r t
3 t - t
o °»
f o O
0,0
2 rt
o
T t J - .
2 *
a 2
X J *
£ £
o
•5 s
oo
o o C O
* .fi
o o + J
" " U h
3 °
> o o
9 3 e
E
rt «
C O C
'> Xt
>
£
93
CO
XJ
>
.Y
XJ
O
z .
z Q
6 ui
HH 0i
O uj
Q
UJ
B
in
tn
<
UJ
Q
rt
•<
u
CO
I f
CO
ffi
CO
s
tt)
t-J.
hJ
rt
O
8 co
°£
i*! fc
o fc
H-l
o
Uh
3
53
ECo
2
UJ
uj uj
H hJ
5 OQ
z <
3*
ID uj
o z
H UJ O
HH*
ttJ
CJu
2g
rt £
uj
Z *
Uh
rt S
N oo
tt. ttn
ffi
H
a
Q
H-l
uj
tt,
o
z
3
ttl
CJ
tt)
rt
Ou
ffi
H
Q
ttl
ffi
H
3
ttl
H-1
tt,
o
z
3
UJ
UJ
£ffi
CO
rt
o
H
^ fc
^ O r - ,
t t , c
ttJ
H-l
u fc
C O [ j j
ffi
H
HH
fc £
z
O
H
<
H
w fc
c o Z
UJ ss
Oh q
§
CO
cd
XJ
CO oo
£X
cd
G
CO
3
eo
.3
HH XJ
dco
oX
XJ
d
co
OX)
CO CO
S3
cd
> - - a ,X5
So
zz
O co
u w
w fc 2
CO
H
s
H
oo
O
CQ
UJ
a
CO
UJ
CJ
Z
Ul
rt
60497800 D B-35
OQ
Q
H
Z
o
o
co
CJ
r-i
H
CO
O
Z
O
<
Oh
XJ
o
E
00
d
Oh
O
z
O tn
g §>
55 2
w £
S 2
Q c o
XJ
eo *d
fi 3
3 o
-fi ffi
9 > r -
6 §
3 *
5 U h
X J r t
z z l 3
5 e o
< X J
rd rza.
Of Oh
£ £
o o
o o
CO CO
tn •d
o o
£ £
oo 00
.3 .3
N N
£E,
t - i t - t
U, o,
OO
3
'>
co
IC+H
3
CVj
Oh
E
o
XJ
o
E
oo
.3
Oh
O
Oh
>,
t - i
X
ttl
o
CJ
3
i I oo
CO *r3
D-3
Td rd
Oh Oh
E E
oO
CJ CJ
CO CO
•d xt
o o
£ E
00 00
.3 .3
N.a
E
tt HH
Of Oh
Oo
rd
Oh
£
o
XJ
o
E
00
.3
Oh
o
rd
Oh
E
o
•d
o
E
oo
.3
N
Of
O
d3ob
o
CJ CJ .3
HH
t - i
2
ut
<ut
<
CO
oo
X>
cd
HH
d
Hft XJ
UJ ttl CO
PQCJ
3
CO CO Xt •ni
Oh
E
o
cj
eo
xl
O
E
00
G
Oh
O
CO oi
Ui
o
•a
o
,o —J
C | H c o
a a
eo
cj .3
ttl
Q
O
S
o
z
ut
N
/^^S
OQ
tt)
hJ
OQ
<
00
co
eo
s
eo
•d
•?
CO
CO
Z
O
HH
CO
Z
UJ
S
00
G
o
xt
.Y
H H M
H
00
p
O
II
Qh.S
a
UJ
OQ
H-)
UJ
rt
uj
ffi
oQ
z
HH
ttl
CO
ro HH
HH CO
sCO
<
rt
o
H
oi
o
<
Oi
ttj ft
CO U-l
CO
UJ
CQ
CO g
eo
3.
81
eO t N
eo eo
3 •«
O G "
Q 2
CO
XI
CO
ea
Uh
CO
d ^
o o C O
Uh
c o O
'>
2
Ut
3
co
2
Oi
<
H
Uh
HH
ffi
CO
z .
< f c
ffi vo
eg tt)
O hJ
xt
y
tn
Oi
ttl
H
U
2
ttl
rt
o
z
2
Ul
Z
H
Z
o
CJ
oi
tt)
H
tt,
ttl
H-)
<
CJ
CO
CO
O
3
hJ
tt.
rt
UJ
u rt
o
H
CJ
<
Uh
3
<
tt) CJ
CQ CO
X!
B-36 60497800 D
^SSrtV
yp^\
J0^\
0OS\
0S>\
0&&S
0$k\
i $ $ t f \
>.
CQ
Q
H
Z
o
cj
v-*
tn
cj
H
oo
O
Z
tt)
Q
O
£
o
z
ut
N
fc
o
I
OQ
3
OQ
<
cd
cj
ta
3
op
OO
rd
Oh
E
o
XI
o
E
00
d
o.
O
XJ
C G
cd e o
« £
.,_, CO
§ r t
E "
£ O
« f_
OO
38
H c d
o
b cu
Z E
coH
tt)
H
<
Oi
ttl
z
ttl
°, <
rd •^3
Oh Oh
E E
0 0
0 0
CO CO
XJ XJ
0 0
E E
00 00
G d
N N
'1
Oh Oh
O O
rd
Of
>
2u—
3
co
00
.3
N
E
Oh
O
co
XJ t - t
t - i
Uh
cS
CO
E
co
co rd
S3 00
cd
cd X!
>tt
Uh
CO
£co
0
d
cd
x>
ed
<i> cd
•it
3
S3
3
CO CJ
<D co
7^3 rd
Of a,
££
00
CJ CJ
CO eo
xt X)
0 O
E E
00 00
Gc
NM
*j2
tt •Ui
0. 0.
O 0
<u
X ! - J
* * G
U h 9 1
U t n j
e o c d
X) to
cd
r t X J
> + 3
9 3 . 3
• f i H .
t ^ C O
c 2
c d . - ;
Uh
e o r t
IH >
3 _ XJ
•2 0
00 is
•2 fi CfH
3 0 CO
C O c j CO
o.
E
o
XJ
o
E
00
d
Oh
O
—g Td
Of Oh
£E
0 0
CJ
eo CO
XI XJ
O 0
£E
00 00
N
HH t - t
Oh Oh
0 O
3
*>
y
00
G
3
cd
Oh
Uh tt-f
d .
2 o -
s 2
C O O
<s
"o «v e o
s s
c d c o
C O
0 Ul
E rrj
2 £
2 «
^ c j
O O h
o
« -2
CO
~ o
.go
XJ
HH CJ
CUH
OOh
O
«O
ed
cd
. g o
. * i s
o c j
3 ^
(U
d x>
3 -
sn
cd cd
co
-5 XI
X j e o
. 3 - t
£ <"'
h . 2 2
eo
X h X )
X> eo
c d 0 0
•a fi
0 O
00
eo 13
XJ
H .S3
ed
~Uh
cd
>
CO
EZ
s 2
2 S
00 s
Of0
3 .3
CJ
z
HH
tt,
s
<
rt
o
o
rt
ou
CO
x:
H
3 o
O C O
0 { -
3 £
eo o
e d e o
O
H
Oi
f c ~
tt, Q
co uj
Z H
<
CJ
QS^
fc uj
.-. fc
ffi
H
hJ
UJ
OQ
H
CO
ttJ
ffi
(J
Z
$
OQ
ttl
s
ttl
<
H
co
S fc
r t w
o >
U h W
hJ
tt,
H-)
£2 «a
ffi fc
tt)
S
UJ
H
<
H
co tt)
s
ttl
H
<
ft
fc £
tt) <->
fc fc
CO >-
rt
ttj
H
ttl
s
o <
CJ Oh
CO
Oi
D
cj
CJ
O
O
Z
HH
CJ
fc Eo
cu Q
Z
9
w o
tt, oi
^L fc
X K )
I"
z ffi
. Q
H UJ
< s
H co
co co
S^
r t b
oi fc
fc S
* o
Oh
£
o
XJ
o
E
0,
O
o
Oh
c
cd eo
Erd
Oh
00
cd
tt CJ
OCO
CO Uh
u. XJ
0ft
0ed
U h " d
. O C O
C .00
Q
Ul
H
H
s
o
oi
o
UJ
e:
H
<J
tt)
. U h
ttl tt)
ffi Q
H
Z
ttl
s
ttl
H
<
ft
rt
UJ
Q
tt)
CO
O
ffi
H
H
z
o
ffi uj
H
O
Z
co
rt
o
rt
oi
uj
fc uj
Hfc
< <
fc ttl
uj rt
60497800 F B-37
TIME-SHARING MODE DIAGNOSTICS
When time-sharing mode is selected, compilation error messages are intermixed with the source listing as they are
detected. The format of the error message is:
severity * text
The severity indicator is truncated to the first letter if page width (as specified by the PW control statement option)
is less than 126. The indicators are:
FATAL Error is fatal to execution.
WARNING Error is severe, but not fatal. Syntax is incorrect, but probable meaning is presumed.
NOTE Minor syntax error or omission.
ANSI Usage does not conform to ANSI X3.9 - 1966 FORTRAN specification. Listed only if
EL=A list option is specified on the FTN control statement.
In addition to the above, certain unsuppressible nonfatal diagnostics are always listed regardless of the EL specifica
tion on the FTN control statement; they are indicated by five dashes as the severity indicator.
The compilation diagnostics produced in time-sharing mode are shown in table B-2. Ellipses denoted by are
replaced in an actual message by items from the relevant source statement, distinguished by a preceding r^ (or ).
Micro names delimited by =£ pairs (such as ^MAX.SARG^) are replaced by numerical values supplied by the system.
/*^*\
^-^\
J**wK
/^§\
B-38 60497800 D
/i§^S
Example:
f a t a l
WARNING
ANSI
ANSI
ANSI
NOTE
ANSI
FATAL
FATAL
SUBROUTINE SUB(A,B!
DIMENSION A (2)
COMMEN B(<f)
MISSPELLED KEYWORD r»COMMON ASSUMED
USAGE CONFLICT r»B IS DUMMY-ARG AND CANNOT BE COMMON
DO 10, 1 = 1,-V
COMMA AFTER 00 L»BEL IGNORED
COMMA NOT PERMITTED AFTER 00 LABEL
WRITEO.ll) A,B
11 FORMATC2A10)
VARIABL=A*B
ARRAY *fl MISSING SUBSCRIPT FIRST ELEMENT ASSUMEO
ARRAY -.B HISSING SUBSCRIPT FIRST ELEMENT ASSUMED
CONTINUE
CONTINUE WITH NO STATEMENT LABEL -- IGNORED
ENO LINE ABSENT
CONTROL FLOW INTO END LINE NOT PERMITTED
STATEMENT LABEL .10 REFERENCED BUT NOT OEFINEO
n o L O O P . 1 0 N O T T E R M I N A T E D B E F O R E E N D O F P R O G R A M
•COMMON BLOCKS-
O B / /
—EXTERNALS—
—STATEMENT LABELS
. 1 0 O U
VARIABLE MAP
O U T C I . T A P E « i =
03 . 1 1 F
A R AU OB
IIU13B
SUB OB ENTRY
VARIA8L 1*VB
k*
B R A U O B <
OUTCI. - EXTERNAL.
TAPE<f= - EXTERNAL.
j^s&V
15B PROGRAM-UNIT LENGTH 9 SYMBOLS
UIO008 CM STORAGE USED .028 SECONOS
3 FORTRAN ERROPS IN SUB
j0^\
60497800 D B-39
/^%»
<u
•d
oj
•d
OJ
•d OJ
tn OJ
•d OJ
•d QJ
•d OJ
•d OJ
nd OJ
•d OJ
•d OJ
•d
Oooooo o o o Oo o
>>
CQ
•d
•jj
00 00 00 00 00 00 oo 00 oo 00 oo 00
.s
Uh ' u h " u.
lH
' i h .
C d U h
"uh
C Q U h
U h .
C O U h
' u h
r t U h
.fi
'uh
eO Uh
Uh
rt Uf
U h .
r t v h
I h .
e O U h
.s
Uh
r t U h
d
sn X f £ , X5
c o r d XJ
00 in - i i
o p r d
•fi .S-
op rd
f i i n
0 0 T d •fi i2
v i r d J3
oo J2 X,
sn OJ
:d X 2 o j
o o r G X * « J
¥ 3 X h a j
o p ^ J
sn i O h
E E
fi o
H c j
A O h 93 'Of O J O h OJ £< 9 3 & a j O f OJ 'Of OJ Of a &r i £ < U O f
E S
•.fi o
H c j
H 8
E E
fi o
H o
S E
H c j H c j |i CJ CJ
Z
O
CO
ut
CJ
ttJ
rt
Cu"
O
CU CO
dUJ
oi-i Ih
o
HH
o
<
CQ
o
HH HH H-J ^j H-> HH HH H->
G .
<o OJ OJ OJ <u OJ OJ OJ OJ OJ ttl
CO •d •d •d *d -d T3 •o •d rt
CJ [> '> UJ
00
S3
X)
"> "? ?'? '? ".> 'i>
0—H
H
CO CfH Ut id CfH •2
<HH <2
<HH <2CfH u2 «s OJ
uL Uh
OJ
00
O
z
3 3 0J OJ OJ Cj
CO co cj CO CO CO CO 00 CO co co
o
<hh" •d
QCO
zOJ
HH
HH
Ul
Ql_l
Oo93
2dOh
oVI
OJ*
+H
o
z
l-t
oi
3'
d
8
CfH
G
op
tt
d
OJ
E
OJ
tt
Rl
00
o.
>.
t - t
t - t
o
OJ
Uh
Uh
O
'S
oo
OJ
Uh
Oh
UJ CO tt)
,_)
CJ
COJ
HH tt H-J t - i t - i t-i ui HH t-i Uh
f-H CQ Ut
O
93 93 OJ 91 OJ o> OJ OJ OJ
CN*
tn
tn
V•d
>•d
'? •d "> sn rt •d
'?
1V V •v OJ OJ 93 OJ OJ tt OJ
CQ id Ut OJ
X!
Ut r t i C*H U-, id Sa OJ
*d .4
ttl
ui
CQ
<
OJ 93 OJ OJ
ut
OJ
co tn CO CO CO CO CO CO CJ CO
OJ
00
CO
V
fc
2
CJ
CO
Z fc
CO
HI
O
z
<
CO
tt)
rt
IS
rt
o
ttl
S3
H
CO
ttl
Oi
3
fc
2
CJ
CO
CQ
H H
CO Q
o a
z 5
• H
Z
tt)
>* s
gfc
UJ
cu
s
HH
IS
$
H
CO
D
UJ
3 «
Z uj
al
Pfj oi
<, co
> '"'
oi 2
H O
tt, o
ttl
S
Z pq
a|
CQ —"
3 ttJ
2 rt
£s
SS
fc S
u j u
Oi
ui
iz
<
Q
ttl
H
ttl
CU
H
O
tt,
Z
<
Z
ut
z
o
HH
CO
CO
UJ
oi
ft
UJ
CO
P
S
X
ttJ
Q
s
o
H
O
o
Q
HH
rt
tti
H-l
H-l
O
IC
ttn
O
ttJ
CO
H
s
s
X
UJ
Q
Z
O
H
O
o
UJ
z
Q
z
UJ
o
H
Z
o
hJ
Uh
'-' o o>
< ttJ
r t Z
s o
O co
CQ Q ttJ o g tt) hJ
s fc
rt b
w a rt
Z
ttl
oi
CO
Z
Z*
O
CO rt
.ft- fc
is
11 H-i
UJ
CQ
5
UJ
hJ
Pu
S
o
tt)
ttl
H
<
fc; rt
fc o
S ttl
O h
Eu fc
S C Q
r t Q
H UJ
Z H
O fc
< o <, •< *< H < & H O CO o o CJ U §
oi
zgo<(J z z rt
co fo HH HH •-5 o tn § CO § ^^ f—i hh ug o o r - , < i t U Q
CO CO Cu ES fc SG fc CO tn CO £5 CQ O C J t n > £2 Eu
ZZZZzZzZ Z Z Z z
<<,
/^^,
B-40 60497800 D
0£™$K
/"f§N
r
/J*B\
^S*\
OJ OJ OJ OJ OJ OJ OJ OJ OJ OJ OJ <u 0)
•d *d •d •d •d •d •d •d •d •d •d -d d
oooooooo ooooo
CO 00 oo oo oo oo oo oo oo 00 00 00 00 oo
d G cGGccGc3_c .s
•d Ui U h . I h . Uh I h . Uh I h . U h . U h . Uh Uh U h . Uh
OJ r t u . C O U h C O U h r t I h C C I h C J U h r t U h r t U h S O U h eO !-. C C l U h r t I h C Q U h
dS i 9 1 X ! o ; G OJ X * O J X < o X I 9 3 X I O J s i o j s i o j s: OJ X , O J x : O J X " Q J
oo v t 7 G oo rG t n T G s n 7 3 oo rzz s n r d oo r~S o o 7 ~ i o o r z i sn 7^ o o r d o o : d oo : G
Jz2 0 3 O , i O . 0 3 O h O J O f 0 3 O h 9 3 O h 91 f-T" 9 1 t z * 0 3 O , 93 a, o j O h C J O h 0 ) O h
E £ E E E E E E £" s 6 g E E £ E £ £ E E E E E E
: — O :** O : — O ;-* o ; - O : - O ; - O ; - O ;-* o •fi o d o - o
H o H o H o H c j H o H O H o H o H c j CJ H " H o H o
d
o
oj
H-?
_c
OJ
Of
>>
Ih
p
o
<OJ
Of
o
z * ^ J
H°* C OJ OJ aj OJ OJ OJ OJ OJ OJ OJ OJ Q>
2•d •d •d •d •d •d •d •d •d
oJ3 E
a j "> "> '> ">
uyOJ
, 1 93 a>
N»/ C J h 2 Ut Cm ui. Ut <H CfLf *HH C*H <4H C f H
o j r t
Q to"
-d
CO 93 OJ 93 93 OJ OJ OJ OJ OJ
CJ tn CO tn tn CO CO CO CO CO CO CO CO
Oc
eO
Uh
cS •d
QJ
00
Z93 •d
OJ
co
oS3
<rt T3 U h O J
i t s m
o i 2
3
UJ
Ih
a
Vi
d
E
OJ
rt
CJ
C
d
OJ
OJ
XJ
Q
Ih
O
Uf
,o oo P ^
OOJ
o
d
tt
eo
CJ
tH
tt
03
fc ^
" d d
o j • -
3 «
Ort
CJ
Ih
Ih -d
e; rt rt
rt
UJ
S
HH
H
C.H
3
op
CO HH
c
QJ
X
rt
i.
" £
rt
E
Ih
c2
HH
c
oo
OJ
o
rt
Uh
«
oo
C
o
CJ
Xj
4 > o o
X
UJ "to
Z ^
OJ
3
'>
OJ
uL
3
OJ
*d
>
OJ
Ut
3
9 3 «
3 £
e d U t
O O J
J -1 O,
aj
-d
">
a>
<*
OJ
aj
•d
'>
2
93
OJ
3 .
.2 >>
I h r t
R J U h
r > r t
OJ
•d
*>
2
OJ
OJ
3
">
OJ
-H
3
x:
CJ
sn
sn
OJ
O
X
Ih
£
3
X
'sn
G
OJ
E
-3
OJ
•d
OJ
OJ
OJ
3
'>
QJ
Ut
93
21
tt, £
7
CQ
CO CO CU oo CO tn CO CO uj eO CO tn
HUl
uj
-l
CQ
<
CO
UJ
O
Q
UJ
E
o
U J
c u
co w
9 o
Oi
o
Ut
Q
ttJ
E
HH
u
ttl
CU
ttJ
E
ut
o
U J
& f c
22o
ttl
CQ
H
CO
sCO
i
uj
S
D
O
Oi
<
as
H
Oi
tt)
hJ
H-l
CO
UJ
oi
ft
UJ
Z
H
z
oi
UJ
O
Z
s
z
Oi
o
Uh
Z
o
CO
Z
Z
o
z
CO
CO
z
<f
Z
O
oi
o
Uh
Q
ttJ
E
D
.' ui Z u
EXPONENT LENGTH THE CONVERSION C
fc rt <c ut
CO ui
cu
OJ
oo
rt
oo
oo
OJ
fc c
h J H
CQ H
< z
22
^ 53
> z
<: °
DECIMAL POINT IS THE CONVERSION
CO
CO
II
Z
o
HH
CO
H-l
3
—1 oi
u
<n
O h ^
r O C O
C O z
tt, <!
oz
r t Q
HH
H
rt
HOLLERITH CONST 1 NON-ANSI.
CO
Z
o
CJ
E .
ICQ
rt rt
uj o
uj
S
—i
Q
JC
H
2
UJ
H-l
h)
UJ
H
O
ttJ
rt
S
H
CO
CO
ttJ
oi
ft
ttl
CO
c o ;
C O ' .
few
O Q
a C J
il
< as a . o S
fc 5 o > O r t CO
Q CJ tt ) H tt. < E fc x z s >
Hoi HH
ooi Uh oi CO
u t O
HH *5 -2 O *A O h h U J u t O i - . Z H - f fi >_, _^ , , o
co S EG u. EG Q EG fc EG Q EG < co <* EG co £G H CO CO CO go
ZZZZZZzZ Z ^
<<<«,
60497800 D B^U
CQ
G
O
'tt
CJ
<
•d
o
E
oo
3
Uh
2 i h '
x: o>
QJ Oh
I I
H 8
d
o
E
oo
3
Uh
2 Ul
XI CO
T -fi
a , O h
§ I
H 8
d
o
oo
3
Uh
2 u -
h G Q J
T ~
Q J O h
I |
H 8
•d
o
oo
G
*d
o
E
00
3
2 UH
Si 93
T ^
0 3 U i
E £
j d o
x i a j
Q J O f
H c j
•d
o
2 u h *
XI QJ
Q J O f
H o
"3
O
E
00
G
c .
C O U h
xi a>
^ TZ*
Q J O f
H c j
*d
O
oo
G
2 »-'
fi oj
T ^
Q J O h
|iH o
•d
O
E
00
•§
S s
T -fi
Q > O h
6
H 8
-d
o
E
oo
.S
•d
o
S
eO
si Uf
OJ
eo
Si Uh
0)
?T r * rd
OJ Oh 93 Oh
£EEE
oo
HCJ
•d
o
E
00
.s
03 'S-
H 8
aj
O
E
00
.s
Uh
rt
X! OJ
Q J O h
H c j
OJ
•d
o
E
oo
G
*Uh
a b
Q J O f
H 8
3
">
OJ
d
oo
CJ
X!
t - t
•a
OJ
-d
- | H
rt
Uh
eO
o
ffi ffi
o
HH
G
o>
OJ
*d
93
Ui
H->
d
qj
tt
d
OJ
fis 2 t=) OJ tt •d *d
'i> Oh tt "5!
SP,° tt CJ
OJ
CfH OJ Ut CfH
. 2
0 6 OJ
co CJ
OJ
CO
OJ
CO
OJ QJ OJ
•d -d tn
VVV
yOJ
, 1
OJ
, 1
aCO
X5
tn
y
tn
y
tn
V
y
tt.
HH
CO
Z
<
G
X)
•d
IJ co
d Z
r t I
o < j j
Of 3
8 *
tt.
o -
Q E
eo
S - v - £
oj eo
•fi &
H 3
d o
Q J r t
nd
•d
y
*d
o -"
H H O
3 ~
<u tn
E S
«J 3
eo G
00 , _,
H H X )
QJ + J
fi °
H G
•d
y
tn
V
2
id
tn
y
eO
si
tn
G
aj
t - t
O
G
d
E
Oh
O
o
Q
<
B +>
>> to
U h 0 0 - 3
tn
OJ
00
d
cr
<■■>00
ftX>
CO
ZOO
ui rt
SG
E §
.2 .S -S
? P
oo rt
t t t a
d
T * G
0>
CJ
rt
uj
cu
UJ
S
ttl
ti
co
Z
<
i
z
o
z
1-1
ttJ
co
z
CQ
tt.
O
s
rt
o
u,
HH
tn
Z r
< g
Z ttl
2 S
Z ui
H
Oh
rt
o
tt,
ffi
H
2
a
§
HH
CO
Z
<,
i
z
o
z
CO
z
ttl
Z
HH
tt,
ttl
Q
H
O
Z
ttl
%
H
<,
H
Q
H-l
OEg
<
tn §
Z
<
rt
CO
h3
Q
hJ
H
CJ
O
co
co
HH
<
ttl
cu
ttl
oi
fc w
rt h
ttl
H
O
Q
<d
uj
CQ
H
s
<
UJ
co
D
2
co
Z
Ss
Oi
o
CJ
HH
Q
Z
2
tt,
o
z
o
H
z
fc ^
UJ Q
fc EG
oi S
CO
z
/ ^ \
B-42 60497800 E
/*$S*V
CJ
co
CJ
HH
H
co
O
Z
o
<:
3
UJ
Q
o
s
o
z
rt
CO
I
tt)
CN
I
CQ
tt)
H-l
CQ
a
Oh
E
o
cj
QJ
•d
o
E
00
c
Ou
•d
o
E
oo
G
E
•d
O
oo
G
E
rzi
U.
tn
o
oo
G
E
H
•d
o
oo
d
E
H
Oh
E E
o o
o o
OJ aj
•d •d
Oo
EE
00 oo
d G
Uh Ih
rt rt
x: si
T f
E
OJ OJ QJ <SJ OJ OJ aj
.d ^$ d3 ^H :G •d
aOh Oh Oh Oh Of Oh
E£E££ £ E
ooooo o o
oCJ CJ CJ CJ CJ
OJ OJ OJ OJ OJ aj QJ
*d tn •d -d -d tn -d
OoOoo o o
£E E EE E E
oo oo 00 oo oo oo 00
d d G G G G c
Uh tr •a Uh
eO
XI eo
si .3 rt
X, rt
XI
eo
X,
eo
si
f f T T 1?
a> 93 aj OJ aj QJ QJ
EEEEEEE
H H H H H H H
CU
O
H
co
£ + 1 X j X I
1rt
S3
drt
00 Uh eo
a> OJ sn
X5 si eo
QJ OJ OJ
.s
3
CJ
G
qj rt
kf r>
,91
CfH OJJ Ih
oGXJ
,3
'>
y> >
. ? y ">
.V '>
y
tn
tn .ss
CO CO
zZ
<.
d
ooo
QJ
tt
GeO
oo
OJ
•d QJ
oOt
Vrt
co li
CO
co
HH
H
CJ
tt.
CO
<
Q
tt)
CO
*tti
Sz
CO CO
Q
- 2 j
CO <t
Z ^
X)
-d
.Y CfH
3
co
Uh
OJ
C J 1 -
rt o>
u l 0 0
r t o j
x t - f
o .s
• d - d
. Y Y
CO CO co
3*
^ o
H h " Z
O h
Qz
fc <
Uh H
O £
|o
grt
tt, o
rt rt _•
r t Q
tti fc
hh Oh f c
z ° <
tn
uj
Q
O
o
X
rt
o
tu
h :
z
K tti
CJ
tt)
HH PtJ
EG £
tt)
Z
HH
tt,
tt)
Q
H
8
ttl
tt)
H
55
~ z
tt)
zM
><
CQ CQ
QQ
tt) ttl
Q Q
ttJ Ul
<J <~> X
UJ ttJ Q
Oi rt S
Ot cu oi
w R w 9
Q w, « ^
O g
CJ D o ^
X co xS
<o
u t X __ u
W - H EG X
•$
3 ^
"> ">
Y Y
CO CO
CO
z
<:
z
o
z
ffi
cj
z
H-)
o
CQ
co
Oi
Ui
H
U
a f c o
o ZCQ
tn
Z
<:
-I3
z
M O
EG Z
QJ *i
CJ
rt rt
Uh
rt X>
XI
CJ
VO u-
>* 93
d
oO
fH *t oo
CGti
OJ 93 93
•d tn
*d
OJ HH
<', CO CO
35 CO
UJ
rt
uj
CO
H
Z
tt)
ttl
<
&3
31
cq rt
: O
: Z
z~
60497800 G B-43
OJ OJ OJ OJ QJ OJ <jj aj OJ OJ OJ
•d •d •d Td •d •d -d •d •d •d tn
oooo o o o o o o o
E E S E EEEE£ s£
CQ 00 00 00 00 oo 00 00 00 00 00 00
.s .s .3 .5 •S
•d Uh U h . Uh 'C Uh U h . Uh UH U h . U h . Uh
OJ C t t t r t U h r t U h C O U h C Q U h e d u i C 9 t t e o t t e O t t C O U h r t i h
ds i o j X ! O J h G o j X I 4 > X h 9 1 S i 9 3 X I 0 > S i 9 3 s i o j X 3 9 3 -fi JJ
00 o p r d s n T Z i <n rzi i? rd s n r d vi 7 -* o o r d sn T- . oo rd s n r z i ? 3
£q j O h Q J O f 0 3 O f O J O f Q J 9 * q > O h 0 3 O , q j O h o j O . Q J O f q j O h
E E £ E £ E £ £ E E E E £* i 6 6 •fi § 6 g 6 g
•fi o fi o •d o • d O ;-* o -,"* o i - 1 o ; - < O "••^ o : « O 1 - " O
H 8 H O E - i o H o H o H c j H o H o H o H o H *->
OJ
O O h
^ h ^ P
d ^
•2 3
IS
, d d
c * h 0 0
uT
C | H f -
O
G
O
tt
HH
G °
.2 2
CJ i t u -
<^J ^j t - i H^j ^j •fH t - i 3 8 HH
G G G d G G d d G ^ 8 1
OJ <u OJ QJ QJ OJ 93 OJ OJ o j 2 OJ
•d •d •d tn .E •d
•? •? *> '> '> '> - i d £ '?
VVVQJ
Ut <,-< <HH C f H <HH Ja !d Uh U-, OJ « J Uh
•H "*—'
XI QJ93 OJ <D qj 93 OJ
tn CO CO CO CO CO CO CO tn U - d co
d
o
'sn
sn
OJ
Uh
Oh
X
.O
£ § | o
E ' t t
r t P J
tt
G
aj
s s
O a j
HH
<N £
93 « G " i . o o
OJ
o
s
CJ
9 1 A
S 3 g
, , 0 0
3 9 >
O H H
d c
G •*"*
C J §
T 3 Z
O J <
Ǥ s
3 fc
Q J ( 1 4
•d
OJ
z
; — i f t
o j <
y&
u h r ^
"i rt
d"
o
'it
ed
o
o
OJ
^ H Q J
0 0 U h
«
£ C O
o
< * H ( N
U t • »
O " - 1
CfH
3
op
<h XI
Q J H
•H
Q J U h
oo
d e o
t n x i
dO
•dfc
Of
00
t - t
w o o
i5 2
CO f t 0 3
5 •*
e o t t
53 °
OJ . "HJ
" e o f t
o> rt eo
E
UH
a
HH 4-> • -ui ^j ui ^j h h a
00 xs
. § * OJ OJ OJ QJ aj OJ 11
O h q j
x £
qj 4S»
*d
d - «
w H o o
* d + H
3 -a "fi 'S
3 ? •d •d -d
"i> ">
r r * 9 3
2 c §
r f i O « 3
s n 9 3
iM i oo
£
•Y
Ut
3
OJ
3
93
Ut
93 OJ OJ
c2
CfH
OJ
O • > o o
q j < N 7 5
• r — i V I 9 3
x? _r xj
M O Hog H G-. c ut CO co tn CO CO CO O 3 x,
UJ ttl
aCJ C Q w - h J ; CO
D
S
Z
UJ
ttluH—.
CO ut H Z < .
UMENT MODE MUST AGRE DEFINED FOR LIBRARY
EX PARAMETER NOT SB ARIABLE OR CONSTANT.
HH
CO
<
CQ
<
HH
rt 22 UJ
o
o
CO
<
Q
UJ
E
HH
u
UJ
cu
CO
ut
rt
o
z z
< o
ay
w 55
hS
Q rt
ttl
H
H
CO
OJ
00
rt
sn
sn
OJ
Ui
CQ
O
^Z
Q O
fc c
tt. z
ttl Lj
Q u\
ui
CQ
O
H
§
z
HH
Uh
UJ
Q
rt
rt
UJ
z «
£ <
t n 2
O
. O
Q
ttl Q
p ttJ
ttl <
> o
61
Ul g
£ o
5^
H <
f c C Q
H S
§ rt
c j f c
z fc
u i Z
£h hh
D ui
O O
CJ ai
C co
W X
HH
CJ
H
tt)
s
ffi
Q > £2 fc 00 CO O Q q h a * O u j ^
& f e o
<: F 2
H H
2 b
hJO
<! co
< - <
S rt
. u j
O
~ <•
U J
Q
u t O
go
^ fc
< oi
o
< * C O
< Q
ttl
U J
co <£<
Z ~
<
UJ
<
55
z
z a
O
, fc
H U -
<H CQ
<
i f c
fc u
< X
H ttJ
•<
< fc S
H t3= Uh
<<f CJ tt, ttl tt. tt. Uh tt.
J^^\
B-44 60497800 D
/*a^l
/SpPv
0$£\
co
O
co
O
Z
o
<
•d
o
£
00
c
H
d
O
E
00
c
•d
o
E
oo
c
Ih eH Uh SO Ih
OJ si QJ x: 0>
r- sn 7^j 00 rd
u, QJ Oh Oh
EEEEE
ooo
CJ CJ
•d
o
E
00
3
Uh
rt
XI
Oh
E
o
•d
o
E
00
c
Ih
« U h
_c oj
o o r d
Q J O f
If
-d
O
oo
c
Uh
C d U h
-fi *Z
o o r d
Q J O h
ill
•d
o
oo
c
rt
H Q J
*•» rzi
o j O f
il
•d
o
00
.S
> H .
r t U h
X I 0 J
s n r d
Q j O h
•d
o
E
oo
G
fl j O h
•d
o
E
00
c
> H .
C 3 U h
X I W
O O r - *
Q J O h
•d
o
E
00
3
Uh
rt Uh
X I 9 3
s n r d
Q J O f
Ii
•d
">
.V
•d
*?
cY
Cf-f
3
co
oi
O
tt,
Z
o
H
<!
rt
5
U
ttJ
Q
r t s o i S r t r t 5
O
2
o
z
co
co
•d
">
.V
3
OJ
co
i
<
CJ
3
z
HH
z
o
ut
tn
Z
ttl
*>
y
ta
•s QJ
CO
•d
y'>
.V '> ">
y
Uh
3
co
tn
,Y
QJ
Oh
>1
tt S3
O . .
O , o o C
X T i
9 1 j - t o
- -2 §
S 3 s ~
a c
d
3
">
c2CfH
3
co
'>
.V
co
*>
co
.is oo
o o O
eo
O . X r . C
S o 3 . 2
^ £ t - i i t
£ . 2 © 2
o 0*
o t t l
.. tt,
oj » -5
Uh CQ
G ~
S oi
G [Tj
s £
2 tt,
oi fc
UJ .52
f c r -
fc E
D o
CQ c2
E .
" o
O J " S
S i v t
t n q j
*S o,
« o ,
r t h h
f c S
U - 5
f T . 0 0
^ G
o
CQ
I
Z
O
oo
Z
UJ
S
< O
z
h-l
tt.
Oi
<
ui
<
<
tt,
CO
Q
Pu
tt)
X
u j .
co
"Z
"O
>l
tt)
rt h
ttJ
hJ
CQ
<
2
<
>
-j*
tt,
on
cu
O
O
ui
Q
tt)
cu
S
o
z
ffi
ttJ
N
rt
c
H-l
H-l
HH
z
2
Oi
<
oi
o
H
<
CJ
HH
Q
Z
Z
o
oo
Z
Ul
S
CO
Q
Ul CJ
ttl fc if'
CJ
X££
UJ H H
UJ z z
No o
co co H
C O u
fc Z
Oi §
>H £tt.
2
r t . ASF E WITH
< 7
ri CO
H
fc * fc y
$ * < r A
H C N H U u
< <
Uh Uh
Oi
O
H
<
CJ
Q
Z
HH
z
o
ut
H
U
UJ
rt
rt
o
UJ
CQ
H
CO
s
tt)
CQ
H
s
s
CO
CO
UJ
oi
Q
Q
<
Oi
tt)
tt,
tt,
;=>
0Q
UJ ut
OQ
s
3
tt)
hJ
<
2
5
fc ffi
£^
to oi
CQ UJ
H
Oi
Ui
oi
o
•d
o
E
00
c
X: 93
sn rd
03 Oh
H c j
•d
.Y
•d
"i>
rt
o
H
grt
H O
Z
<
H
CO
Z
O
CJ
o rt
HH" ttl
rtg
tti c
fc z
fc 6 ui
fc S cq
H-) CO
< 2
H-S
tt.
60497800 D B-45
QJ OJ QJ 0) QJ OJ OJ OJ CJ QJ QJ OJ
*d •d Th •d tn *d •d •d •d *d -d •d
oOOo o o o Oo o o o
sEEE EEEsE E E E
>>
CQ oo 00 00 00 00 00 00 00 00 00 00 OO
G3.s .s
T3 Uh U h . Uh Uh * U h . Uh U h . Uh U h . Uh U h , UH
OJ
d
oo
e s S t t r t U h r t U h r t I h e d i - , e O u t r t U h r t U h r t U h eo Uh r t U h C O I h
X I o >
o p r d
X h < * >
e p r d
X I 9 3
e n r d - J 2
op rd
f i i n
oo rd x) <o
1? rd X I 9 3
s n r d •fi .22
« p r d
X,
vi aj
G3 X I 9 3
o o r d S ^
00 Q J O h Q J O h q j O h qj O h qj O h o j O , 0 3 O f Q J O f Q J O f QJ O, 9 3 & sa &1—1 £ E E £ £ E £ E £ E E E E £ 6 % 6 § 6 g 6 g
5 o • d o
H c j H 8 H 8 H 8 H 8 H * - > H c j H *-> CJ H 8 H 8
G
.2
UJ
CJ
Z
s
/—\
Qtt HH HH H - > HH tt fc HH
HG G d G G d G G oo
z
oOJ OJ OJ QJ OJ OJ OJ OJ =fi 3 QJ QJ QJ
•d d•d •d •d *d T) •d •d •d
"j5 QJ
> > ':> "> "> *i>
- c , 6
C J A J
OJ OJ 93
. I
CO
Ut «4H Ut id X) Uh id Q J H - J
x ) t o
C«H Ut C f H
3333 OJ QJ OJ
CJ CO CO CO CO CO CO CO CO C J t o CO CO CO
co " d .
OB d
ZC J o rt
o
<•
r-i
Q
gn 3
o , G
H H O
XI
U J *
Uh
•d
QJ
ttl
QOJ
CJ
e
Q J C
E * OJ
Oh
Z H H
U J d
S k o o
H - , «
5 8
tt)
Uh
QJ
X
OJ
•d
d
d
d
rt
oo
OG
eo
CJ
h \ O O
Q > — 1
*- 2
r t O
t o * *
U t t o
HH
HH
o
QJ
uj
H-l
eo
tt
G >.
00
zop o £ Uh O1 e <! oo
ri
2CO T H . X
X J Q J U J ~
oo Ut Uh
QJ
N
>,
° G
3S tt tt ui Q J 0 0
cHH
_G
U-,
• d ' "
£ c
*? QJ OJ OJ OJ QJ
f " d
o B qj S -2 uj .2
IH CJ
QJ
ni •d
'? •d
'i>
•d
V
V"t>
d
'?
¥
e s s 5
E 8
G Q J
, 9
•d
'?
V
oo
X
3 S
3 «
o o r t
^ £
.2 5 HH
00
c .2
* o o 2
-d
V
y
Ut
3
HCfH
3-d
3ui,
3id
3Ut
3id
3
93
tn h2 "S > ' o
OJ <u
U h c s .
U i v 7
, tt
> O J
5 U ,
S5
CO CO co co CO CJ X! co CJ Q o CO
CQ
tt)
h-1
CQ
«,
H
Oi
o
<
oi
uj
H
tt.
<
q <
ttl C J
g CO
E Q
H-l
Ul
>
tt)
H-l
h-1
o
tt.
CO
3UJ
CJ
co
HH
ut
O .
ttl 2 ui ttl
U t r t
> o i
co
CO
HH
s
TAL CHARACTER . . . NOT D! IN STANDARD FORTRAN - CA] STOPPED.
hJ
CO
D
CQ
H
z
o
H
C O .
HH QC.
fc S
f H O i
2 w
ttl
Q
Z
HH
uj
H-l ttl
CQ
H
><
OQ
W t t l
CO
Z
S
Cu
Z
z
HH
<
H
OJ
00
eo
tn
in
OJ
s
TFER I/O PARIT UST BE ZERO 0
tt)
s
ttl
fc z
t t l
rt
rt °*
w H
O O
S2
a! ^
m h . r r
^Z
Ut
fc 2
H-)
o
tt,
H
s
s
<
CO
d
tti
rt fc
1 fc
<•« CO
R J'
fc <
§ o
TAL CONFLICT IN EQUI SPECIFICATION FOR . . .
CJ
<
H
CO
ZQ*
ttl NSTANT DIVIDE SET TO INFINIT
CQ
UJ 5g
HH 8rt"
w
CQ
fc §
c j f c
t-l.
fcg
o o
CJ ttJ
~
o fc
C J w
CQ
f c H H-l
ttl
>
z
O co
f t t n fc fc,
^
< o
H r t <! w
fc H < 5
fc * 5a
fc H
< O
H Z CJ
< t t l
H 2 Sfc
H f
.< <, *< •< *< <J
tt. tt, tt. Ut tt. Ut tt. tt, Ut tt. Uh Uh
y^HMJ^V
B-46 60497800 D
/ $ S \
/p»"\
0^\
/5*\
CO
j0^\ CJ
H
CO
O
Z
o
ip*N
tt)
Q
O
S
o
z
2
pa
CQ
ttJ
CQ
<
CQ
•d
o
E
00
r t I h
-__
s n Z ZX
Q J O f
|i
i - * c j
•d
o
£
o o r d
Q J O f
E-1 o
•d
o
E
00
c
Uh
rt
o o 7 3
<u O-
|iH c j
tn
o
E
oo
G
£ -fi .£*,
E
•d •d
o o
E E
on oo
c c
>— Ih
SO Uh ra
GQJ X!
oo rG tn
QJ Oh 93
EE E
o
H o H
o.
E
o
CJ
•d
o
E
00
c
)H
C O I h
i — Q J
v i r d
QJ Oh
•d
o
E
00
c
Q J O f
Ii
•d tn tn
o o o
EEE
00 oo oo
3c3
Ih Uh Uh
ra Uh ed Uh eO Uh
XI OJ f-H OJ si QJ
oo rG oo 73 sn ;«-,'
QJ Oh QJ O, 93 o.
EEEEEE
o o n
HCJ CJ CJ
3
'>
o
Oh
J S 0 0
— I Q J U - ,
£ c 3
f . 5 t n
tn
co
•d
'>
.Y
•d
">
co
QJ
V)
d
Ih
oIh
cS
cQJ
0)
EXJ
rt
0>
fH to
Vi
93
QJ
•d
."d QJ
Ih
QJ cY
u-i •d QJ
COOi tn
">
,Y
tn
I h C
O h e d
x -
o w
C QJ
5 fc
ed >,
c j £ ?
x »=:
QJ O
•d
C HH
sn
d
o
">
•d •d
CO
O U f
QJ
- 0 0
G o j
•2 3
%
X ) o j
.2 E
QJ Si
si «
Eoo
00
G
Oh
O
_o
o
Q
O,
Oh
fi. «-
5 Z
t O t Z \ Q J
° 9 E
3 P -
5 cj
£ £
d
00
Uh
rt
rt
o
Q
OJ
X*
•d
*>
y
'tt, fc
z
fl J M
|^H
I-s§
•d 8 CQ
< o co
rt
o
oH-)
<fc
oi >•
ttl Ul co tn
t t l .
H-)
H-l
Ut CO CO
Q Q 00 hJ rA
o w
o f c
^ O h fc Ul
H-l
ffi o rt CQ
rt oo
o z
fT. <**-H
CJ
CO
§
co
Oi
d? ^ <
5 i
o ' ,<
<J o •H3
zrt
o
_ J C O H-l h-1 rt H-l
<: *< Oi
fc ^ ui
<<<
tt, Uh tt, tt.
><
hJ
CO
D
O
HH
UJ
rt
Ou
CU
o
3
O
Q
H-l
<
<
Ut
CO
ui
Z
H-)
<
o
ttl
hJ
H-l
co uj
5^
UJ
uj
H
<
H
co
O
Q
hJ
O
Oi
H
Z
8 ^
S fc"
C J &
uj zi
X O
U J U h
CO
D
UJ
3^
UJ
^ H O u j C5
^ y rt h Oi
^>- H-l >H
as
e z
Q ^
rt
fc o H-l
< CJ < t t l
fc o H 0Q
< <
Ut Uh Uh
UJ
Z
E
UJ
Q
H
CO
O
>
ttJ
Oi
Oh
60497800 D B^7
>>
CQ
*d
o
E
00
G
' u h .
e d U i
- i-
op rd
qj O h
Ii
•d
o
E
00
3
U h ,
eo Uh
X I Q J
sn rd
O J O h
Ii
•d
o
E
00
d
*d
o
E
00
d
•d
o
E
tn
o
E
00
3
rt ed Uh ed Uh rt Uh
rj QJ XI OJ XI OJ XI OJ
oo rd oo rd oo •d sn ;Lh
91 Of OJ Oh OJ Of 91 Oh
fi.
HCJ CJ
d
o
E
00
3
UH
e d t t
XI OJ
oo rd
is
H 8
•d
o
E
00
3
Uh
r t U h
X I O J
op rd
Q J O f
Ii
*d
O
E
oo
3
-d
o
oo
c
ed Uh eo Uh
r, OJ Xh OJ
Vi rG 00 7^
OJ Oh OJ Ui
EEE£
o o
HCJ CJ
•d
o
E
00
G
t t .
e d u h
•fi JJ
oo 77^
0 3 O h
Ii
00
3
U h .
e d U t
-fi -2-
oo rd
93 B*
S E
j d o
H cj
/^Su
Q
H
Z
o
cj
co
u
ut
H
CO
O
Z
o
ttl
Q
O
2
uj
I
CQ
tt)
H-l
OQ
<
oo
•d
"?
<Y
Ut
3
co
Q
tt)
1
hJ
o .
fcffi
fc 22
H co
$%
Z rt
o w
ut CO
C O K
fc D
< Z
& .
aw
fc s
H CQ
<
Ut
tn
"P
.Y
3
>
.Y
H
CO
ttl
H-l
CO
CO
ttl
O
X
tt)
HH*
<
Uh
QJ
3
'>
.V
co
•d
'i>
2
QJ
CO
•d
.Y
QJ OJ
•d •d
.>
¥
Uh iS
•d
"?
yUt
3
co
•d
"S
3
co
•d
*i>
cY
id
OJ
co
Uh
O
E00
G
sn
to
Xh
a>
Th
fl> T)
Sa QJ
eo
Uh rt
rt
>OJ
UJ •d
oG
Zrt
xl
Ul tt
H-)
$
ut
uJ
tt
£r
'ut
CJ
oo
UJ
XJ
d
00
•d
co
•d
V
y
Ut
3
co
*d
y
tn
V
yUt
3
co
Z
uj
oi
H
tt.
3
co
a
ui
H-l
<
<
tt.
ss
H
ffi
o
2
CO
CO
UJ
o
X
UJ
co tt)
ui
CQ
<:
2
$
vx fc
c o r j
fc z
E-h
co
3
CJ
X
tti
ui
<
tt.
UJ
H-l
5
a
UJ
UJ
S
UJ
fc <
<< E-
CO g
<; g*
5 » s
w s 2
fc 3 «
< 3 S
H ffi co
<
Ut
CJ
Ch
ttl
H
O
ttl
ft
ttl
H-l
<
Uh
Ut
3
CO
3
'>
CO
O
Uh
">
co
Z
Oi
o
H
UJ
Oi
G
CO
O
fc
Oi
oi
o
co'
6
ui
Q
UJ
rD
o
tt.
uj oi
' U i
ft
fc S3
fc s
< <;
H fc
<
tt.
^ S f \
^
^*£s
B-48 60497800 D
/"S^v
fjfjjSN
/gmn>\
0^\,
j$$$r\
oa
•d
o
00
d
rt
XI
oo ra
Q J O f
|l
H cj
•d
o
E
00
c
Uh
r t I h
>fi in
op rG
Q J O f
H c j
•d
o
E
oo
c
e d U h
x : _
o o r d
« ! > O f
-d
o
E
00
.s
£ E E £
H 8
-d
o
E
00
3
Ih
e d i t
s i q j
«p rd
o j a
Ii
•d
o
E
00
G
Uh
r t I h
• f i _ H
o o 7 3
O J O h
i-
E-1 o
*d
o
E
00
3
I h .
e d w .
XJ OJ
oo rG
Q J O f
E E
£ °
E-» cj
•d
o
E
00
3
•d
"?
,Y
CfH
3
co
oo
3
3•d
>
y
Ut
3
oo
C-f tn
rx
CJ
0> I*..
XI sn QJ
Oin CO
*>
U Oi
3
'>
y
Ut
3
co CO
•d
o
oo
c
x: OJ XS QJ
Vi rd 00 '<-*
OJ Oh QJ O,
EEE £
o n
HCJ
CO T - t
c
3QJ
E
Uh QJ
Ott
CO
OJ
Uh UJ
aZ•d
f-H
oB.V
OJ
si CfH
3
CO
3
">
oi
O
a a
H
tt.
ttl
-)
Q
ttl
E-
CJ
ttl
ft
ttl
H-l
<
tt.
Oh
H
tt.
ttl
hJ
Q
ttl
H
U
ttl
ttl
hJ
<
<
tt,
tt.
ttl
<
z
Q
tt)
H
CJ
ttl
ft
tt)
_)
<
E-
<
tt,
tt,
co
Z
rt
H^
Oi
Q
ttl
ttl
ft
ttl
hJ
<:
<
Ut
tn •d •d
o o o
E £ E
00 00 oo
c3.5
Uh Ih Uh
C C J I h rt Uh rt Uf
Xi OJ XI OJ XI OJ
oo 73 00 rd 00 r3
Q J O h QJ Oh QJ Oh
£ E
: O
H o CJ E- CJ
•d •d •d
>>>
y y ¥
Uh U-, Uh,
OJ OJ OJ
CO co CO
•d
Oi
O
z
ttl ttl
oi oi
<<
Oh 0,
HH
f . ffi
O .
2 oi
w Z tt)
f- 2
CJ O CJ
ttJ tt. ttl
f t 1 ft
W< ttl
s
fc s rA
< o
fc CJ
60497800 D B-49
OJ
•o OJ
•d
QJ
•d OJ
•d OJ
•d QJ
•d
93
tn
93
tn
OJ
•d
QJ
•d
oj
*d
ooooooo o o o o
££sEEESE E E E
>>
CQ
•d
OJ
d
00
.s
U h .
e d u h
£ £
00
.2
U h .
r t U h
S i 9 3
V i r t
00
3
U h .
e d i h
X I O J
o o r d
oo
3
U h .
C O U h
. fi 9 3
s n r d
00
3
Uh
e d U i
•S £
00
.s
Uh
e d U h
00
.s
Uh
r t U h
X h 1 >
« 5 r d
00
3
I h .
r t U h
- fi J h
o o r d
oo
3
Uh
C O I h
H h O J
00
,G
it
e d u h
fi £
s n r d
00
.s
U h .
e d
& -3
C/J 0 3 ' U , 0 3 O h
E E 0 3 O f
Ii O J O h
E E
• d o
H O
Q J O ,
E E
•fi o
H o
Q J O h
Ii ft
P 8
0 3 O f
Ii Q J O f
II Q J O h
Q J O f
Ii
XI
HH
'C
3
ffi
tt
CJ
/\ +H
CJ
QJ
Uh
Uh
O
CJ
Q<H-> ^j ^j +j fH H-I t - i HH H - >
^G
QJ QJ OJ
Uh
oQJ QJ OJ OJ OJ OJ OJ
o33tn c2 •d
CJ
•*rf
*> '> *i>
o d
'> "i> "> '> "> "> 'i>
¥ ¥ ¥ ¥ ¥ ¥ y y ^.2
CfH CfH ul Q J 3
3 o
< H H CfH id CfH Ut Uh < H H
tn QJ QJ OJ OJ
CJ
ut CO CO CO C J o CO CO CO CO CO co CO
H
CO
ot t + j
S2 G
Z
U H 0 J r ^ - i
2 9 3
E £ •d
of G 2
G f i ^ I h -
QJ
oo
HH
Q
Ul rt
o
o > G U l
0 0 I — i
> H U h F >
o « X
t t . S U h
d - rt
O K l Q
• d q j t n
v i u ,
O f £
d"
O Q J t o
t - i
G
G r t
OJ +'QJ
X>
Q
O
OJ
o
G.2
QJ
E
QJ
rt <
00 ^
tt
o
d
o
z
HH
rt
CfH
G
.op
CO
t - i
v i ,
s n h h
OJ oo
Uh 13
O h " ^
X O
q j i r i
o ~
' 3 G
q j r t
HH
ed
tt
tn
Ut
O
"d
d .
q j t n H-I
*-' tt,
< 1 > — f
X h Q J
- * X )
C fH , 2
ott
C UJ
Ȥ
2 - C J
S fc
la
l - H «
l^
^ tt)
<
Z 3
HH •ui HH
2
HH
H
OJ
tn
>
<2
C|H
3
CO
J.s
tt
• — " i h
G «
r t q j
d f c
<, rt
•*- fi. d
G * |
3
c d 3 < s
U t ° ° °
H H O h X I
OJ
O J I h
U h q j
t S
" G "
£ 8
O J C J
£ fi
O h O J
QJ
3
*>
•Y
CfH
3
CO
s n o
£_, fc
C - 1 0 0
0J
•d
V
y
id
OJ
CO
OJ
•d
"?
cY
ClH
3
CO
QJ
3
'>
cY
CfH
3
CO
OJ
•d
'>
2
QJ
CO
OQ
UJ
h-1
CQ CO
ut z uj
° rr HH < f c
h J r j j
^ c o
>*
<
CN
en
CO
3
s
HH
z
o
HH
CO
CO
ttJ
oi
Bj
trj •—I
O
Uh
o
11 tt,
2D
Z W
CO
CO
2
oi
00 h4
2 fc
> m f c t J .
> fc
QJ
00
ed
sn
tn
OJ
s
CO
Q
UJ
UJ
UJ
O
ft
UJ
uA
<
si
hJ uj
§ ^
U J Q
H W
X Z
U J H H
^ tt.
ttl
j Q
< uj
H CQ
ttl
ttl
Oi h
tt. ^
«8
"2 ffi
Qfc
w oi
tt)
o fc
°g
tt, ^
o rt
ffiO
fc o
Q r t
> fc
•> N
Q co
uA *—*
U J
HH
f c !
ttl
3 o
fc <->
tl
z
o
00
UJ
Q
H
<
O
tt.
H-)
<
rt
o
H
H-4
H Z
<l o
' v . u - i
S co
2 co
JW
< f t t l
rt
O
H
<
CJ
~ ui
fc s
^ <
s z
S £2
hJ
uj
f c r %
< <
fc z
W h J
? o
fc rt
fc fc
ui Z
C Q O
• - * C O
H <
|q
rt S
p z
fc fc .
K u i
. UJ UJ
fc t t. CQ
S 3 h
rn fc
s fc
cu <
h J C O
fc ^
OQ O
>-* m
H <
i Q
s fc
f c U J .
K u A
, U J ttl
fc t t. CQ
< : u j < j -
H r t u - J
f W
H S
a o
S rt
Z > H
cj 5
p w
U h
H
=!<
<<! <: H(
tt, tt. Uh tt, U, Ut Ut u. tt, Uh u-
^33|k
/ t ^ \
/f^Sty
f/mk&K
S^h
B-50 60497800 F
/£fe^
00^\
0$$&>>\
op
CO
•d
o
E
00
t t .
r t U h
X" OJ
oo r3
Q J O h
|1
H c j
•d
o
oo
d
Uh
r t U h
- i-
oo rd
Q J O h
II
•d
o
£
oo
.s
Ih
rt Uh
X* 91
cp :—.
OJ U,
E S
n
H o
•d
o
£
00
c
f , .
t O U h
XI OJ
oo rd
Q J O f
H c j
•d
o
oo
.5
U h .
e d i h
J t ( J J
o o r d
Q J O f
IIE - 1 c j
•d
o
oo
•S
•d
o
00
d
XI QJ XI QJ
00 73 sn ^4
QJ Oh OJ Of
E E EE
oo
HCJ CJ
•d
o
E
00
G
<H
r t U h
f i S h
o o 7 3
Q J O f
II
E-1 o
•d
o
E
00
c
sn rd
aj O h
Jl
H c j
•d
o
E
ed uh
-G QJ
oo 73
03 Oh
Ii
H c j
•d
o
E
00
c
U h .
r t U h
X h 1 >
o ? 7 3
Q J O f
Ii
3
*>
CO
cS
id
"> •d
'>
y
CfH
3
co
tn
'>
•d
'> '>
•d
Uhh
3
co
* * ^ . H
x » f i
* ^ o
G
5
QJ OJ
C G
3 '?
8 |
S " >H
? r t
t 03
2 G
ed ed
9 1 _
fc S
O. ""
r t U h
Q J °
6 3
ag
O. OJ
r \ t d C
P - f 9 3
Uh o o e
60 „. E
OJ QJ
o j e - i n
•fi S iS
H r t h ho o o o
tt) co
§~
CQ t5
oo E
s
o u 2
O Z Oh
rt p C^h
cu tt, o CO
O O l - H
o fc
U H-l
QJ OJ
oo 3
9 1 " S
h h r a
o j r
S 3 u ,
93
t on
d £
S 3
*d
'>
chYUL
3
co co
•d
">
co
H
CO
O
O
E-
O
z
CO Oh
ut
tt)
s
z D tt)
z fc «,
O <
CJ <
§ Q rt
E fc
z
o
H oo H-l
< co
fc <
<
Uh tt.
^ UJ
§rto
< z
c j o
Q
tt)
z
HH
tt,
ttl
Q
Si
§£
a w
uj
fc <£
H co
<H
tt.
ttl
s
u
3
CQ
H-)
<
o
ttl
HH*
H-l
oi
UJ
H
CJ
<
ffi
CJ
hJ
O
ttl
ul
hJ
H-l
<
Uh
-J
O
tt.
<
H
co
Z
o
u
rA
<
o
tt)
-A
h-1
UJ
ffi
H
O
z
s
o
s
rt
o
tt,
H-l
<
o
tt)
hJ
oi
ohJ
<
Ut
tt,
O
ttl
CO
hO
ttl
z
o
tt)
tt,
o
s
o
Uh
h-1
<
o
UJ
H-l
hJ
<
<
Uh
ttl
ttl
<
H
CO
Uh
HH
Jz
O °Q
fc -0
fc S
H - l ^
tn
'>
x > .
T i O
g Q
E »-
* h Q 3
° 2
- S
o j r t
C h
& O
C * * >
oo -fi
c + -
"I
i2l
H
U
tt)
•—»
OQ
O
OO
cu
O
O
H-l
O
Q
Uh
o
O
z
H
co
tt)
Z
hJ
<
O
tt)
H-l
hJ
hJ
<
U,
•d
o
E
00
c
Uh
r t > h
• C o j
o o r d
q j O -
II
H c j
3
CO
3
">
CO
tt,
tt,
O ;
^ u h '
w fc
tti <
Q
UJ
CQ
O
h4
<
O
ttl co
fc 3
I—I HH^
CQ
J o
< rt
H=H
Uh
60497800 D B-51
0 S \
QJ QJ QJ OJ QJ OJ OJ QJ OJ QJ QJ OJ
*d •d *d T3 •d •d •d *d •d •d •d •d
oooOoOoooo oo
CQ 00 00 00 oo 00 00 00 00 oo 00 00 00
*d §.s
U h . J — J
.S
Uh Uh Uh Uh .a
Uh Uh •S
Uh Uh Uh
OJ r a U h C O U h C Q I h e d t t e d U h r t U h e d i t C d i h r t U h e d u h r t U h r t U h
d
CO X I »
o5 r3 r - Q J s -s ■■fi J,
c p r d
- i i
o o r d - f i £
t n r d X 3 9 3
s n 7 3 X h 9 >
o3 rd X h «
^ 3 X I < U
o o r d - f i £
s n r d X h O J
^ 5 r d
HH Q J O f Q J O f q j O h Q J O h 0 3 f c QJ O. q j O . i f c Q , O h 1 . & 2 £< & fc
II
E - > c j II £ E
; fi O E £
; fi O E £
H c j II E E
•.fi o
H o II
E - h o H 8 E E
H c j 11
E - H C J
E £
. d o
H c j
p
G
O
o
<
Hd d G G d dd G G G d c
zQJ QJ OJ OJ OJ OJ OJ QJ OJ OJ QJ OJ
o3 3 3 3 •d •d *d •d T3 •d •d
CJ "> "> '> '>
¥¥ ¥
id id <+H id id id id C+H id C f H Ut Cf-f
CO
CJ
g
O
Z
o
<
. O J OJ OJ OJ QJ
CO CO CO co CO tn CO CO 00 CO CO CO
Ort
E-
O
O
00
rt
•d
OJ
H 3
< t * t d
Zi »-»
5 *->
ed
O
*t
£Oh
G ttn'
+3 ^*H
dO h o j r" O
Q
UJ
Q
O
s
OJ
o
Ih
O
d
.2
cG
QJ
*d
O x
rt g Uh
O^
CO
OJ
Xh
CJ
d
»r cannot be de the DO lo
> t t
. r . O
T 3 Q J
£ x ?
%
o
fS
G
op
'•JO
oo
QJ
UH
Of
s
tn
d
o
>
QJ
Uh
« o
• d _
Q J Q J
d r t
QJ
X>
ed
Uh
S3
tt
G
OJ
ci
op
'oo
3
d
O J o
X)
« o o
— t r a
X > q j
2
CO
uS.
S
ut
H
CO OJ
•O
HH
00
d
E
t - t
CJ
OJ
HH
G
QJ
3
*>
cY
Cf-H
OJ
f c r - i
3 f c
S 3 <
£ S
Q J f c
x i O The label refere: appears as the 1; statement.
tt
d
QJ
3
'>
OJ
uL
QJ
QJ
3
'>
y
Ut
OJ
tt
sn
d
E
Uh
O
t - t
rt
Uh
rt
Oh
OJ Indicated statem DO loop.
DO terminate ferenced outsit
t - i
G
QJ
•d
">
cY
<1>
a4
aj
Ut
o
93
sn
d
3
00
QJ
HH
MTRY cannot nge of DO; us
CN CO H Uh CO CO CO < S i CO u l 2
1
OQ
UJ
H-l
Uh
hJ
CO
CO
UJ
hJ HH
tti
2
O
ut
Oi
UJ
OQ
<.
E- CJ
HH
o
o
H-)
IJU
o1' ci
tt.
O
H
ttl
O
Z
og
£3
CO
Z
o
u
Oi
uj
tt.
<
Oi
o
K - )
o
tt,
oi
o
E-H
oi
uj rt
UJ
UJ
1
O
HH
co
CO
rt
UJ
ttl
AL RANGE TRUNCATE
tt)
r t .
f c .
U J .
o i .
U J . UJ
uj
co
hJ
<
w .
Uh
CO
Z
tt.
CO
Z
tt,
att,
O
Uh
o
OJ
sp
00
00
OJ
CQ
O
fc
f c ,
cu fc
35
f c 1
ttl fc
2 fc
, fc
35
cu
a
H-l
<hJ ul H-l
<
UJ
s
hJ
<
tt)
S
<
s<-> I
3 z
d fc
o fc
UJ
fc a UJ
H-l uj £5
fc 5 Sfc Ui
rA s^ ttl
H-)
HH h J h-1
HH fc
HH ^8 H-l
HH
f c r ^
>-H z dg jj
h-1 < s
si tt)
H-l H-l fc£
HH
fc s fc 2 H , ^fc tt)
*< Ou
H-l
<: 3 H <f <, < < <j tt. < ttJ < o
Hfc H H co H oo f c Q H O H H H t t , H O E-H
<! <H
Ul Uh tt, Uh tt. Uh tt. tt. Uh tt, tt. tt.
0 f ^ \
<^^\
/**^5\
B-52 60497800 D
/$0&\
0S^y
0Sf\
cj
CO
CJ
H
CO
O
Z
o
<
UJ
Q
O
S
o
z
HH
rt
CQ
3
op
CO
•d
o
E
•d
o
E
•d
o
E
-d
o
E
•d
o
E
•d
o
£
00 00 00 00 00 00
cG c c c G
Ih Uh
to Uh rt I— ed Ih ed rt
Si
sn
OJ Xh
oo 93 -G
00 si
sn si
sn Xi
CO
OJ
r3
QJ Uf OJ tt, OJ u, QJ Ui OJ Of Oh
£GEEEEE £ fi,
oooo
—i CJ CJ CJ CJ CJ CJ
CO
oi
O
H
uj
Oh
O
tt.
O
tt)
co
D
hJ
<
o
3
-1
T3
*d
'>
">
">
-d
'?
yUt
3
co co
•d
CO
•d
'i>
2
3
co
H
CO
DCO
ttl
>
<
rt
CJ
ttJ
Q
sa
o
Uh
ttl
OQ
g
CJ
CJ
O
CO
s
ttl
ttl
rt
CJ
z
o
Q
Q
u i
tt)
CQ
H
CO
HH
s
X
UJ
H-)
<
<
Uh
§hJ
H H <
z ^
Q UJ
Q > H
fc CQ
oj Q
^ u
a £
^3
fc H-l
H U-
<
tt,
CO
D
rt
uj
3
o
Q
Q
tt)
!-,
Oh
J-h CO
X,
CJ
•d
">
Q
ttl
H
<
Z
hjZ
< u i
H CQ
<
Uh
•d
o
E
oo
d
•S3 G3
Q J O f
Ii
•d
o
E
00
d
Uh
«Ih
Xh QJ
CO rd
fl) Of
E E
Ho
o
•d
o
E
oo
3
Uh
r t U h
X S o j
o o r d
Q J O h
Ii
H c j
•d
o
oo
.S
Uh
r t I h
j t 0 3
sn rzs
03 O.
•d •d
o o
E E
00 00
d c
Uh Uh
ed Uf rt Ih
si OJ XI OJ
00 Tt* CO 7^
OJ Of OJ Oh
£EEE
o o
HoHCJ
d
y
3
*>
H
00
D
rt
UJ
cu
O
Q
§
O h r t
< ttl
<
tt.
>
2
OJ
CO
tn
'?
*>
OJ
CO
">
OJ
HH
d
Uh
OJ
•f->
ott
G
00
rt CJ oo
QJ
OJ
s
rt OJ
CO TJ
00 QJ QJ
—'
X.3 XS
CJ
Oh
rt
tn
GIh
O-G
•5
O
Q
X
QJ OJ
•d QJ •d
Uh fc
(I) QJ
G
Gort
t-H tt
sn
-d
rt
Uh
QJ
Of
oQJ
Ut
O
co CJ
**) rt
d
co
Oi o
rt z
w UJ
fc rt
S fc"
O d
O > H
X M
fc Q
9 fc
z z
Uf
ttl
Q
ttl
oi
tn
'>
y
Cf-f
3
co
CO
CO
H
H-l
ttl
Z Q 7. co
RTHA RDIVI
ffi
rt 00
co
UJ
rt
Z
o
CO
s
en
REATE IPLY 0
Ul
H
rt
ttl
Oi
ft
ttl UJ
CU
rt
o
(N
fc 3 hJ •^
oi <.
ttl
rt
oi rt fc
u j s uj
oui
oit*
ouj tu
a >
fc z ttl 7ttl 11 UJ uj
z ^ Uh
Oi
UJ
>
00 OO
^ * H-) H-l <J fc d
c ^ * < o
H (N CN H u.
<<<<
tt, Uh Uh tt.
60497800 D B-53
OJ
•d
o
E
QJ
TJ
O
E
OJ
TJ
O
E
OJ
tn
o
E
QJ
TJ
O
E
QJ
•d
o
E
OJ
TJ
O
E
QJ
TJ
O
E
QJ
TJ
O
E
OJ
•d
o
S
OJ
•d
o
S
QJ
tn
o
E
OQ
•d
QJ
d
co
CO
HH
00
•S
Uh
eO
£
1
OJ
E
H
Uh
OJ
'o.
E
o
CJ
00
.S
Uh
ed
XS
V
QJ
E
Uh
OJ
rd
Oh
E
o
CJ
00
£
Uh
ed Uh
X S 9 1
% r d
Q J O f
E E
H o
00
d
' l H
ed
s
1
OJ
E
P
Uh
OJ
rd
Of
E
o
CJ
oo
3
Uh
e d t t
X i Q J
1? a
Q J O -
E E
. d o
H o
00
.s
Uh
r t u h
X I 9 3
13 *d
O J f c
II
H « j
oo
.S
U h .
ed uh
X i 9 3
13 rd
Q , O h
Ii
00
3
Uh
r t U h
q , O ,
E E
: fi o
00
£
Uh
ed
£
QJ
H
Uh
^QJ
'S,
E
o
CJ
00
d
U h ,
e d t t
J t Q J
vi rd
Q J O ,
E E
f i o
H c j
00
d
<*H
Uh
r t U H
13 rd
q j O h
Ii
oo
3
tt
e d t t
X S 9 3
o3 rd
0 3 O h
E £
H c j
OO
3
UH
r t u h
•S £
It
• . f i O
H o
t?
o
E
§d
G
. rt
r t o
Uh
.2 G>
/—"\ HH
CJ 9 3 U l
o
CJ
CO
<: HH
G
OJ
tj OJ
3
tt
G
OJ
3
HH
d
QJ
3
">
° H-l
o >
* O
cS S
QJ
TJ
>
OJ
3
>
f-i
G
QJ
3
>
+-«
d
QJ
3
>
HH
G
OJ
•d
'>
+H
G
aj
•d
V
HH
G
OJ
3
'>
t - i
G
OJ
•d
'i>
y
QJ sS QJ
Ut
QJ id
aj
CO
5 -fi
r a t t
UH 'J-*
cYUh
QJ
Uh.
3id
QJ
cY
C|H
3C|-f
3
HH
3Ut
3
cY
Cm
3
CJ
HH
H
CO CO CO CO - ? H i * CO CO CO CO CO CO CO CO
CO
O
Zen
<
ut
QUh . T J
rt
*Uh
Uh
o
ul Uh
rt QJ
00 rt <>>
id
CJ
QJ
Oh
oo
iQJ
CJ
G
ed
CJ
Uh
O
G
OJ
E
rt
CO
QJ
x>
QJ
tt
sn
o
z
2
3
op
CO
.2
' o o
co
QJ
Uh
Oh
CJ
rt
CfH
O
HH
-d
QJ
G
t - l
o
G
ra
CJ
HH
G
tt
sn
1
3•*-*> OJ sn
Ih ,00
'sn rt
2 rA HH
00
UT
rt
tu
O
3
t - i t - i ui t - i
Uh
HH
H-J
2G
QJ
•d
'S
OJ
OJ
X>
4H
o
OJ
TJ
'$
y
CfH
3
CO
QJ
1
OJ
E
ed
93
S3
tt
e d 2
•° §
m 'io
oo
I Q J
OJ Uh
> O h
3 g
QJ
TJ
1
OJ
3
">
¥
QJ
•d
¥
OJ
tn
"E
ti
QJ
XI
3
OJ
'tt
QJ
6 C O
XS -S3
QJ
TJ
>
¥
id
3
CO
rt
U
sn
Iid
3
CO
Ut
3
CO
id
3
CO
CjH
3
CO
id
3
CO
d < "
C XJ
< £
id
3
CO
CQ
attl
CQ UJ
CQ
HH
ott)
CQ ffi CJ
HH
H
CO
D
co
i-t
Z
o
CO
• Ul
* S
uj S
3 <
5 fc
Z c o
ttl
CQ H-l
<
C J .
og
ttl
OQ
H
O
Z
H
3
s
u.
HH
UJ
OJ
«°CO
tn
oi
O
H
o
00
ttl
Q
rt
o
H
CO
UJ
Qui
rA
H-l
H
a
uj
u,
o
uj
CJ
z
HH
H
CJ
tt.
z
o
u
-J
ttl
HH
H
CJ
tt)
r t
^ z
££
f c C O
Z w
ttl ttl
9 fc
oi
< oi
U t °
3><
si*
O UJ
Z CQ
Q H
Z Q
<; Z
LU
ut
ul
<
CJ
ut
r t < £
f c K
o £
rt
S
o
u
rt
•<
z
H-l
tti
CQ
H
uj
Cxi
<
OU
H
tt,
3
OJ
00
C O C O
H-l 2
ttJ H
f c > j
•< < hJ
<
CJ r-i HH HH
<Uh
UJZ
Oi
fcB
< H O H O c o Uh o y tn
tn CO
CO
CO
CO
O
ut
ul
oi
ttl
O
ttl
f c y
h J f c
o
H-l fc,
H f fi
H-l
*4
u
o
o fc
fc «^ h J
h J K
< f c
35
H
fc Z fc ttl h4
CJ
UJ
u - >
q o
J Z H-l H-l hJ
< fc <: < u < O < J , C U CQ < Q itt.
HQ H CO E- •OQ fc o fc ^ fc <-> H O H Z
•< «, <t. •< <: <*<
Uh Uh tt. Uh tt, tt, tt. Uh tt. Uh Uh Uh Uh
/Sri^V
/^V
B-54 60497800 D
jpSN
.jJiPX
0S&\
QJ OJ QJ QJ OJ OJ QJ QJ OJ QJ OJ qj
TJ TJ TJ •d -d TJ tn •d T3 T3 T3 TJ
OOOooooo OO O O
>.
OQ 00 00 00 00 00 00 00 00 OO 00 oo 00
TJ .5 .E .5 .d _c .G
Ih U h , Ih Ih h . Uh It • h , Uh Uh UH
QJ r t I h ed U h C CJ Uh r t U h r t U h e d u h r a U h C O U h C 3 U h C O U h r t U h e d u .
d
CO X I 9 3
s n r d X I O J
c o r d X S O J
oo rd •S 7G X I 9 3
s n r d X h « J
^oo rd X S 9 3
s n r d -fi. £
v i r d oo rd X S O J
v i r d X S 9 3
s n r G • G 9 3
o 3 7 3
r-l i o . Q J O . QJ O, i O . Q J O h Q J O f Q J O h Q J O h « B* Q J f c Q J f c q j O h
E E E £ E E E E E E E £ 6 g £* ii E E E £ E E E E
• t o .-, o : - • O • t o ; - O . n O ;-* o ; - " O .-. o ; fi O - 1 o •fi o
H c j H o H o H o H o H o H o H o H o H o H o H o
oo
3
CO
CO
co
+H
G
EQJ
E
OJ OJ
tt
ed
t t ,
s n _ h
cco QJ
oOJ H -2
/_N tt < -2
QCJ
<CO
oo ui tt tt HH
S O J
ft/ ~*H
O h r t
o .a H - > .j HH
.-H
ZU h 2 3 QJ QJ OJ OJ QJ OJ OJ QJ OJ QJ
Or d £
tzf
E ?>
f c O f
o"> "> '> "> "> "> '> "> '> '>
>«_• QJ OJ QJ
< 4 H C f H ul, Uli Cm Sa CJ cJL, CfH ui. Sa
w/ H . U h
r ^ O
CJ
H
CO
O
z
r 9 S QJ QJ 93 OJ QJ OJ OJ OJ
C J O h CO CO tn CO CO CO cj -i! CO CO CO CO
it
ed co 00
o
<: tn
CD
it
ra
00
£G G
• G QJ
u £
S
UJ
CJ
OJ
Oh
X .
OO
G
Uh
O
Oh
d
u - 5
e d - a
O h I h
O h r t
oOJ
CJ
G
rt
CJ
Q J t t
ss 5
" o o
00
CO
ra
oo o
U J U H
c «
* H C
o o G
P
e i
+H
1at
3
.00
" ^ O J
.22 rt
O O H H
Q J C O
QJ
si
tt
xs
cr t q j
. G "
oi CO fi <»
.,_, flJ
sn OJ
£
QJ
ra
d _
a * q j
r a o o
•a ra
£fi £
QJ *-'
U h ,
O f °
H - J
OJ
CO
3 C O t - i ^J ut Ht-^
O J >
OJ
C "~'
»H-. *-'
CO tt r t Q 3 5ziOJ Uh 'iK QJ QJ sn QJ OJ OJ QJ a E
. 3 e o
Ul t t - d .2 •d uA TJ TJ c n §
H
j s d
00 OJ
' G O J
"i>
id
OJ
CO
'|3
E f>
o S3
CJ Oh
">
QJ
id
3
CO
C f L f
3
CO
fc 3
> E
ui 3
H - l C
OJ
id
3
CO
QJ
id
3
CO
93
tn
OJ
id
3
CO
00
CO
E s
« > i d
a xs
Ih S
u O
fc u
CQ
UJ
hJ
CQ
<
rt
tt)
H
tt.
oi
ttl
H
tt,
<
Oi
UJ
*< . Sso
Oi
o
<
Z
O
CO
UJ
Q
H
2
I D .
7 z
Z u j
>**
rt Uh
o
ttl
rt
o
z
o
ttl
S
ttl
H
<
oi
a
ttJ
CQ
H
OJ
00
ed
tn
tn
93
ttl
rt
f c Q
Sa
u t i £
rt 5
O CO
z <
ttl
rt
o
ut
oi
%.
c o O
2 q^ u j
o s
Z D
oi
o
z
o
ffi
co
CO
O
Z
ut
tn
oi
o
UJ
-J
5
fc H
rt 22
gg
CO
CQ
D
CO
co
Z
H
ttl
rt
o «^
g UJ
fc fc
Z g
f c ' Z
U i * *
Q H
t t l <
f c S
O h r t
fc o
S fc
ll
UJ H
h rt
WQ
uj
fc ^
O h t t )
fc Q
CO
Q
tt)
Z
tti
CJ
H
CU
HH
> ' .
fc o
r r l H - l
tt,
z z
« o
00 CJ
". fc
. tt)
. >
, fc
ttl H-)
W
- h h ;
fc 5
tti *
fc§
fc <
W\ fc
0 0 o
r-t * ;
. rt
. o
ttl
uj y
-5 fc •
^ fc z
Et s
fc 5 2
t n u t
<
fc 2
£2 q
uj
£2 <c
2, CO
fcfc
<n
ut
S
ui
fc £
W t t l
* <
H
C O ^
tt)
fc s hJ
H H h
s z
s
fc Oi
rt
. fc
f c H
H H
s
hJ
, fc
fc OQ
< o < t $ ^ h < <: o < < < D < tt, S3 < ffi <: ao
H U h H D fc Z H ir fc z H O H <H H H UJ CJ
<, <: <c
tt, Uh u. Uh tt. tt. tt, Uh tt, Ut Uh Uh
60497800 D B-55
/*8|\
2
CN
I
CQ
a
CQ
<
OQ
•d
OJ
d
G
8
id
S
oo
3
ed
si OJ
vi GS
OJ Oh
sE
O
Ho
TJ
O
s
00
.s
Uh
e d u i
H Q J
13 rd
Q J O f
TJ
o
E
oo
3
Uh
r t U h
X S « >
1 3 r d
Q J O .
Bo
H c j
TJ
o
E
00
.3
U h ,
t O I h
- f i £
s n r d
q j O h
I
H 3
tn
o
E
00
3
e d h n
•fi iS
U P d l
o j O .
i s
H 8
•d
o
E
00
3
Uh
r t l - i
Q J O ,
E E
H 8
d
o
E
00
.s
Uh
r t U h
Q J O ,
E £
.d o
H o
QJ
tn
o
E
00
G
Uh
t O I h
•fi --
v i r d
Q J O ,
E E
fi o
H o
QJ
TJ
O
S
00
3
U h ,
e d U i
XI cu
13 rd
0 3 f c
•d
o
E
oo
G
U h .
e d U h
•fi £
vi rd
9 1 &
Ii
H c j
*d
sS3
co
-d
•d
"?
TJ
oY
Chi
3
co
'i>
co
TJ
y'>
TJ
58 S
fc ^
s-l
T t e d
s n 9 3
d xs
dtt
tn .%
QJ —<
i §
9 5
fc§
h rt
OJ
3
'>
•d
"?
CO
TJ
>
CO
c2
Sa
OJ
CO
TJ
'?
•Y
Sa
OJ
CO
OJ
- O s n
t t O h
CO V-H
G c o
X 3
3 S
ed T3
'c s
r t « J
X
QJ OJ
S 3
«j .s
o o "
H 5
sa
o,
H
O
z
UJ
rt
o
u,
z
o
HH
CO
s
co
tt)
zE-
CO
oi
UJ
3
rt
w
o
u
o
z
hJ
•<
H
<
tt,
rt
o
tt,
p
H-l
<
<
tt,
CQ
<
ut
rt
uj
Z
3
5
a
uj
tti
Oh
O
3
tt,
O
ffi
o
S
o
zco
fc Q
< Z
tt,
HH
CO
co
O
H
O
O
tt.
O
H
U
ttl
t- »
CQ
O
H-)
<
<
tt,
*d
O
E
00
G
W J k H
X h 9 3
13 rd
Q j O ,
Ii
•d
tn
tt
oQJ
cQJ
oo xi ed
a> 00
O
•d S3
tt
ed
OJ
G3
Oed ed co t-i
HHH fc OJ
TJ
OG
Si CJ
OJ
OE E
0> QJ
t-i QJ QJ Ut
XS
Hed
sn
XS
Hed
tt
tn QJ
CO
ttl
s
tt)
H
co
tt,
hJ
ttl
OQ
H
z
o
H-)
<
tt.
*d
o
£
00
3
Uh
C d I n
J t ( J J
13 rd
Q J O h
E E
; fi O
H o
TJ
>
TJ
"P
y
U-,
3
co
co
ul
tt)
>
3
z
ttl
oi
5
z
o
ul
<
tt,
>S^v
/*^\
>fi^\
B-56 60497800 D
0^\
0Sr\ QJ OJ QJ 93 QJ OJ QJ 93 93 93 QJ QJ QJ
•d •d •d tn dTJ •d tn TJ tn •d tn *d
o ooooOooOo o o o
>,
OQ oo oo 00 00 00 00 00 00 oo 00 OO oo 00
•d 'C Uh ' u h Uh .s
*Uh *Uh Uh .s
Uh Uh Ih * U h . .s
OJ C O U h r t I h t O I h e d u . e d u . C d I h ed Uh C O I h e d t - f
d
00 a oj
o o 7 3 X S O J
o 3 r d X S o j
13 rd - S.
s n r 3 s i o j
c o r d fi i-
c r d si X ! O J
o o r G X I o j
o o 7 3 xs j3
e o r 3 xs jB
s n r d • f i o j
o p r d X o j
c o r d
ut S h & O J O h Q J O h i O h i O , Q J O f QJ ' U i g j O h Q J O h o j O h Q J O f Q J O h Q J O f
Ii E £
H 8 £ £
H 8 Ii Ii
E-h o Ii §3 6
H 8 Ii i s
H 8 ill
H-J
G
QJ OJ QJ
E£ECO
OJ
QJ QJ OJ CJ
tt tt HH
ed ed rt QJ
tt
sn en •fH
00 Ih
QJ
OJ QJ 93 QJ CfH
OJ
HH tt tt
QJ OJ QJ
G
.2
Oh O. 3. 3h 00
d
o
EEEE
Q
H
Z
o
CJ CJ QJ
U h
O f Q J
_ S 3
^ £
<G
QJ
3
H-J
G
OJ
3QJ
3
t - i
G
QJ
3
>
OJ
uL
.s
U h + J
a «" * - • Q J
QJ
3QJ
3
Uh
,G
Uh
aUH
c2 OJ
3QJ
3
u">
.Y ,Y *>
y-* £
O q j '>
y">
,Y J»H
CJ «CJ hG
*>
y'>
¥
C f H <4H Ut Q J H H CfH Cflf QJ QJ OJ Q J * J Sa Sa
CO ttJ . f i « XI si XS - fi o
c j 2 OJ
CJ
fc
CO CO CO CO cj £ CO CO CJ CJ CO CO
CO
•d
QJ
00
eo U h O J
O
«,
Q
Ul 00
Jhh
o
t j "
QJ
Uh
OJ
t/
QJ
U.
QJ
Uh
O
tn
93
tt
93
tt
G
f - >
G
CJ
G
QJ
Ih
CfH
QJ
Ih
TJ
QJ
c
sit
93
•d
« o .
E G U i
Q J Q J O
t t t t r >
i t U - ,
t n O J . - j
Q
O
QJ
CJ
G
OJ
E
QJ
ob
Gd .S3
O o o
OJ
E
QJ
OJ
E
OJ
OJ
S3 >>
'vi
— . X I
r t o j * * *
3 * O J
o
z
rt
o
Uh
3
HH
ra
it
sn
Ut
Q J Q J
+ - 3 ,
CJ
G
QJ
O Q J
fi £
w 3
H O J
-H»
rt
00
Uh
tt
eO
sn
Ut
t t .
O O h
G O
H H O O J - J
E-3
U h O C O
d "S
* * G
«) « °.op § E
E 8
Q J
3 - s
fH HH
M G
C f _ Q J
o E
~ H H
d «
f i £ 00 U i x )
en JS
«
- <
Q J " ^
i s r t
jag
2
uj
CO
it
G
QJ
3
">
2
Sri
3
rt
E
o
o
OJ
3
*>
QJ
Sa
3
tt
d
OJ
3
">
OJ
Sa
3
•d
d
QJ
QJ
Hi
3
ed
E
QJ
Ih
QJ
E
QJ
tt
ed
sn
CfH
O
TJ
d
OJ
E
OJ
HH
ed
tt
tn
C-f
O
Uh
ra
Q J 5
E *
5 3
2 .00
C O U h
c + h o o
° 3
w E
TJ
C
OJ
QJ
Uh
d
rt
E
d>
TJ
G
OJ
QJ
Uh
3
tt
eO
E
|_4
£ Q
" q j Q J
S 3 s i
£ * *~ " O J
O "
Q '.£-.
. 3
-G ° HH
~ fc s
o o E
_ ^ — f q j
JS o S
Q J « W
• f i C H > ,
oi CO co CO Oh ttl Vt UJ Of Oh Oh < O H « l H o x >
l
CQ
ttl CO
ut
tn
CO
ul
CQ
<CO
CJ
o
r - \ Q
fc UJ
Z . r t
uj >-t
z
oi
ttl
Q
o
ttl
H
U
UJ
H
CJ
HO
H
tt)
Ou
O .
* <
82
CJ
Z
ttl
tn
stt)
ft
UJ
ft ° fc'
o
HH fc oS2
^ c o
< 0 0
S h f c
>* CJ
S X
s fc
1—1 rt
o
CO
d
ui
ttl UJ ttl u i O ttl
HCQ U U l CJ
QJ
OO
ed CJ
CO*
CD
tti
ttl
CO*
d
tti
uj
co*
O*
ui
uj
00*
6
tti
tti
CO
d
ui
ttl
ttl fc
t t , <
t t l o
oi Ul
Z f c
UJ fc
o i ~
S :
tt)
r t .
S3
o ^
^ £2
sn
sn
OJ
s
C J .
S w
Oi
D
H E-
oi
D
H
oi
D
oi r ^ f c
O co
C 3 , '
^ j f c
o a
ifc fc
u j i j
e-
> H H
f c « H
z §
> H .
HH
5* S w « < Z
s fc
ttl oi
f c ^
< UJ
UJ h
fe o ttl
oi f c Q
rt o ttl
Oi
u j 3
e ^ Z
O h ^
fee.
ttl
r t < UJ
o i '
f c h J
r t u j
Ol, Oh
° Z CU Oh (_j
UJ
CU
CJ
O h f c O u H - )
ocu
HH*
f c C Q
<
H- ) U J f c ^ H-l UJ fc £5 H-l hJQ uA tn
S^ J w ^3 OQ
f c 2 . fc
fc CQ fc 2 r A J
< rt " < [ £ ) < O i < 2 < o i < s S3 < o < o
f c < H Cu f c < H S fc o tn H Oi H OQ H c o H t t . H Q
<«,
Ut tt. Ut Uh Uh Uh Ut LU Ut u- Uh Uh tt.
60497800 D B-57
z*s^v
QJ OJ OJ OJ QJ OJ OJ QJ 93 93 OJ
TJ tn T3 •d •d -d Tl tn tn tn d
OoOO OoOo o o o
>>
CQ OO 00 00 00 00 00 00 00 oo 00 00
dGGG G G
*d c . c . •c c . U h . U h . U h . c . r t U h
tt Uh
QJ t O U h r a h , ed Uf' r t U h C O U h C d U h e d U h CCJ Uh e o U f e d C
d
00 •fi £
vi r d s i &
Cf Gh *? OJ X h « >
T? rd fi £
t n r d X I 1 >
T? Gh
£ Q J X) « >
V I T r * , X I 9 3 • f i O J
«? rd
H O J
c3 rd
ut Q J O f Q J f c OJ O J f c Q J O h QJ O. Q J f c Q J f c Q J f c Q J O f Q j O h
E E £ % E E £ £ £ S E E £ E E E i s § 1
P 8 P 8 P 8 P 8 P 8 P 8 P 8 P 8 H 8 H 8
.2
Th
QJ
>
o
HH
G
H H G
rt o
OJ
CO
d
O J C J
Oh
Q J j t
U h + 3
Uh f 'it tz
OO « 5
c* O J - H — f
O£» H f t H H »
U " B j
O f fi O'tt rt
ti
<HH
Uh
00
oHJ ° ~ U t
tt tt t-i H-> HH H-J HH
dUh
u , . ^ O o j
n ' i t 1 %
cS « M
QJ OJ QJ QJ OJ OJ QJ QJ QJ
TJ <L>
-t *d •d •d *d " h , tn T3 T3
o I ,
>Q J 3 ^ C , r t
8 o E
'> "> 'i> ';> '?
¥U h C J OJ QJ
Ch. O 3 Sa Sa Sa Ut Sa Cf-f CfH Ut
S S Q J I h
QJ - it QJ "oj "qj "oj "oj OJ OJ 93
CO t n t o CO c j v ? a CO CO CO CO CO CO tn
HH CO
QJ .2
HH
o
I fc
c d O
rd
x>
rt
O.
'co
rC
*hh
o
G
cH ed
•d
^ 9 1
H * t
O e *
o t o j
si -
h 5 3
93
C J £
f c o j
rt
o
QJ
S3 "Td
G
sn
QJ
Uh
t t " o
fc^
r c r
> Q J
lH
CJ
G
ed
CJ
O J H
O +3
, - * 9 1
•S
XI
CJ CO
Uh
QJ
* t - l
"3
o-
QJ
3 HH
la . 7 » f
v ) O
d c
CfH
G
,op
CO
O tn
Q "j*
x ; o j
. H f C J
eo
E
co
TJ
OJ
0J
CJ
xt - i tt
Uh
ed
OJ
O h .
f c C
r t o o
G "
O H H to basic e gument lis +j t - i
Uh
OJ
CJ
G
OJ
Uh
Ut
OJ le has a si ist but is r function
S g
*•§
G * -
3 j h
O * 3
s
• > Q J
Uh
© c « J
r t U h
< X )
QJ
1
Uh
OO
O
Uh
OU
OJ
tn
>
<Y
CfH
" q j
CO
OJ
TJ
>
<Y
CfH
" q j
CO The functi of an equj Reference requires ar
QJ
tj
'>
c2CfH
" q j
CO
OJ
-d
'?
2
QJ
CO Function r parameter. The variab argument 1 an array o A repeat c descriptor one.
Q
CO tt)
O
CO
a
uj
ui
CJ
X
ttl
X
Hrt
o
) LENGTH EXCEEDS MNS.
tt,
O
z
o
ut
H "
HH
z .
Ut
* H
CO
tt.' fc
ui h
C Q Z
O Uh"
f * $ 2
Z
t t i z INTRINSIC . . . NT LIST.
NCE TO STATEMENT HAS A NULL
uj
H-)
OQ
< .
2 >
IS NOT ALLOW SCRIPTOR . . .
OJ
00
rt
00
CO
QJ
sUS TRAN E CURRE HH
fc z
ttJ g
Q —•
ttl o
> Z
S fc
-. fc
Si
u j q
u o i
z <
tt)
*- ID
tti q
CJ oi
z <c
u i q
o r t
z < NCE TO N OR AR COUNT IELD DE!
O Q
u t S UJ
£
H-)
oi S fc S z S z UJ
S z a : . §2
TAL REPEAT BEFORE THE F
> £
SS
Cu o
=*°
& - A
"rt
ttl
H
HC J r j
ti
T—1
< *
<-> z"
as
TAL REFE REQUIRES A al refe: equires a TAL refe: REQUIRES A TAL REFE] FUNCTION . PARAMETER AL REFE] S A FUNCT
H tt,
<H C N HJ OQ H <N H co H r t H <
<H <! <«,
tt. tt. tt. tt, tt. Uh tt, Ut Ut tt. Uh
0^Q\
0^^K
B-5 8 60497800 D
/BiSu
y^r(^»y
/fpSS\
/ * P N
CJ
co
CJ
H
CO
O
Z
o
ul,
7
OQ
UJ
HH*
OQ
<
/*^^.
CQ
G
op
CO
TJ TJ T>
OO O
EE £
00 00 00
cG G
lH Uh •d
ra Ih rt rt
"oo 91 X!
CO
QJ
rd XI
00
OJ
rd
QJ O, QJ Oh OJ Oh
Eh££EE
Ho
CJ CJ CJ
•d
>
TJ
G
d
Oh
o
•d
d
Q
ttl
w rt
D o
£-* ttl
UJ
Oh
O UJ
. E-
HH
z
U t
H H f c
ffi ttl
OJ
T)
O
E
00
c
u-
r a u ,
X I «
oo rd
oj O h
e I
P 8
QJ
TJ
O
E
OO
c
' U h .
e d U h
XI _?>
oo rd
QJ Of
e §
P 8
•d
o
E
00
G
f i i n
oo TG
II
P 8
QJ
•d
o
E
00
.s
Uh
ed 1—
,fi OJ
CO rd
9> Of
E E
o
t- CJ
TJ
Otn
otn
o
00 oo OO
cG d
Uf •c •c
rt Uh eo Ih rt Uh
Xh QJ Si OJ XI QJ
co rd sn -. ,_J oo rd
0) Of OJ Of QJ Oh
EE£E£E
o o n
HCJ CJ CJ
TJ
O
E
00
G
' C .
CC] Uh
XI <u
c£ rd
QJ Oh
£ E
H c j
•d
'>
•d
'>
co
•d
>
<Y
CfH
QJ
CO
tn
>•d
">
2
QJ
CO
•d
E
Uh
OJ
Oh
/ J 0 0
§§
^2 XJ
t t ) 3
C>h. *»
d Z
ra o
r l
c o Z
c?.s
"2
'>
ed
9>
U,
Ut CJ
ed
d
ort
CO CfH
Ih
Oh tt
sn
QJ un
Uh
O
tt
91
QJ
G
rt ed
G
O
ed
U,
it
G
< £ t n
ed
HH
G
CO
tn*
91
Ui
E
Ih
o
C f H
QJ
CS3
QJ ed
£"^
QJ tt
G
rt QJ
it
tn
OJ
93
r- ed
Hsn tn
Q
tt)
H
ttl
Oh
H
O
Ztt)
H^
w w
fc <
co H
Z
§§
rt
UJ
H rA
fc w
CQ
S3 2
tt.
r t §
P
fc 2?
< 2
H"S
tt.
' H
fc s
ttl ttl
H
co
co
ffi
H
2
co
Z
H
tt) Q
Ot, ttl
><
h-1
z
o
Q
ttl
3
rl
<
5 o
u x
R rt
f c o
z °
O 0,
fc l-H
fc &
Q rt
Z
o
H
CJ
Z
tt,
Z
tt.
ttl
rt
o
tt,
uj
CQ
Oi
D
O hJ
C Oh
CJ S
Z C O
D
tt.
ttl u
S <->
uj
H
<
H
CO
3
H-l tt,
ttl
CQ
UJ
CQ
<
U
ttl
X
uj
w ;
s .
tti
H r t
^ f c O Q
fc oi oi
< < <
H f c >
tt.
oo
. CO
HH
' S
z -
o ^
H Oi
an
* f
££
w »
s I
ttl
H U J
< C J
E-
UJ
H
CJ
tt)
co ttJ
rt
ttJ
tt,
tti
HH
HH-)
CJ 2'
§ S2
ttJ
OQ
5Uh CO
h d
z -<
ttl D ttJ
s a
ttl w ttl
<9
M f c
53 o &;
5
h J f c
<3
hJ
<
H S
<
u, Uh
tt.
H
O
z
OQ
rt
tti
N
-J
tt)
OQ
<
rA
ttl
ttl
H
co
TJ
O
E
00
c
• c .
CO Ih
- ^ £
en TG
a> O.
E £
H cj
TJ
>
-J
<
<
Uh
60497800 D B-59
QJ 9) OJ OJ OJ QJ OJ OJ QJ QJ OJ QJ
•d TJ *d TJ T3 TJ TJ TJ tn TJ •d TJ
ooooOOOOoooO
>,
OQ 00 00 00 00 00 00 oo 00 oo oo 00 oo
G G £_G
•d ' C . ' C . Ui "uh * C . ' \ * C . •c . ' C l . " C . ' . ' C .
OJ r t U f r a U h ed Uh e d u . Cd Uh r t U h e d U h C O U h r t U h t O U h C C l U h Cd Uh
3h G 9 >
T? rd xi «> X I 9 3 -fi. £ X h 9 > X h 9 > X h « > X i 1 > X I 9 3 X h « > X f » H h « >
co v i r d s n r d s n " d C? *d t n r a ? G 3 1? Gh o3 G3 ^ G 3 c p I dt ^ 8 «
o j O f Q J O f O J O h 2 J & O J O f O J f c O J f c o j f c a > O f Q J f c Q J O h Q J O f
P 8 6 1
P 8 i 6
H 8 15
E - i o
£ £
c o § i
P 8 £ £
P 8 1 §
P 8 £ £
P 8 £ 2
H o
E £
P-8 r-ji
H o
G
.2
" q j
x>
rt
00
G
CO
HH
/ — V 'co
p0
<HH-»" H-i HH HH - » H-i
QJ
£
d
00
Ih
H-> H - J H-i
cG G |h
QJ QJ OJ QJ OJ QJ QJ OJ QJ
o_H
•d TJ «H=J *d ' h , TJ •d rt -d TJ *d
CJ '? •? 8'> '> '> •a "> '> ">
v»^ cY .2
co <fH Sd QJ
x! Sd Sd Sd Sd Sa OJ Sd Ut Sd
CJ OJ OJ " q j " q j " o j OJ OJ XI " q j "o ' q j
ut
HCO CO CJ CO CO CO CO CO CJ CO CO CO
CO
OQJ
Z53 6
oOJ
f c G
O f - fi
ut
Q« O J
+-> }ri
ttl O 8
Q8
CJ
OS C
osti • H O J
z
HH ,00
Q J o
rt C ^ ^ ^
CO
T J G
QJ QJ
IHH H-» 1 l H - > HH tt t - i H - J t - i •w
G G ddddG G d G d
OJ QJ QJ OJ OJ QJ QJ QJ OJ QJ QJ
•d
>*d
> d rt P.
£ « a
•d
>•d
"? •d
>-d
>"> -d
"S>
•d
'> •d TJ
H•Y
CfH
QJ
Sa
" ^ U H
Q J r t « >
r » i u
cY
Ut Sd
QJ
Sd CiH
OJ
Sd cY
<4H c2
CfH
OJ
cJh Sd
QJ QJ " q j " o j " o j " q j " q j " q j " q j OJ QJ
oi CO CO H r t O h CO CO CO CO co CO CO oo CO
CQ
tt)
hJ
PQ
CO
Q
ttl
tt) UJ
CO
Ah-
ui
<
<CJ CJ o z ttl
HX
ttl UJ
ttl
OQ
UJ
tt.
UJ
Oi
r% CO
z <
O Q 2
c o ^
2 rt
2 UJ
..! z u t E-
2? w Oi
ul
ttl
CQ
H-l
Ul
CQ
tt,
^ 1 f c
uj fc
CQ H t n u - \
tn tn
UJ
UJ HH
CQ
ZHH
< < 3 g O rt rt rt rt
OJ
op
H-l hJ . UJ
ttJ ttl
Q O UJ rt rt rt
ed
sn
sn
QJ
si| < Z
r n t t l
z s
! » h
ut
rt <-> ut
oi
CJ
CO
CQ
§2
C O W
CQ S
13 P
rt
tti
X
rt
X
tt) .
x fe
rt
UJ
X
ttl
f c C O
gcj
< 2
H t t )
ttJ Q
H ttJ §5 c j o
03 Q
ID fc >* Z H
>^ z
< .
>* u j
ut
ulS
co jg
hJZ 5 3
u - j « r t
co w
OQ
fc E-
co 7
,-H
fc *
c o z
fc §
< UJ
CO
h J h
tn
rA
co <;
H
, co
d z
^ o
H CJ
co s
ttJ
^^
E—• co
< t t l SS < o i < < CO < O < * < £2
<H OQ H < > ^ ^ ^ f c E-; cm H N H hJ
<<c •< <: <c
Ut Uh tt. tt, tt. Uh Ut tt. tt. tt. tt, Uh
B-60 60497800 D
/*JPS
J**P\
OJ OJ OJ OJ OJ OJ 93 OJ OJ OJ QJ OJ 93
•d TJ tJ TJ T> -d TJ •d TJ TJ •d •d •d
oOoOOoOoO O ooo
>>
OQ 00 00 co 00 00 00 00 00 OO 00 00 00 00
d G cdcdc_G .d _c
•d ' C . c . ' C . c . U- ' C . * U h . *Uh Uh Uh Ih Uh Uh
QJ r t I h r t b . ed U h C d U h C d U h C Q U h C Q I h e d i _ C d I h r t i _ e d h H e d I h C Q U h
3X I 9 3 X I 9 3 X h Q J X h 4 > X i 9 3 - G 9 3 X I O J X I o j X I Q J s i o j J Z * 9 3 X o j X O J
co s n r d en TG ? d a c o r d s n r d s n T d c o r d oo TG ? -a C O r G sn r—> oo rG o o r d
Q J O f Q J O f o j 0 . Q J O h Q J O , O J O h o j O . Q J O , o j O f o j f c 0 3 O - Q J O f i a
£ £ £ E £ £ E E E E E E £ § fi" § E E E £ E E E E E E
p t o f fi o f fi o f fi o ; o f fi o ; O ;- O ;-* o ; o o fi o fi o
H o H c j H o H o H o H o H o H c j H o H o E - o H o H o
Z
H
Uh
c
o
Ih
QJ
tt
OJ
G
#o ra
e—N HH lH
Po
<
rt
Oh
HHH tt H-i hj_j .J 4_l HH tt -I-* H-i HH ^j
ZcGGd d G G G cGcd
QJ OJ QJ OJ QJ OJ OJ OJ OJ OJ tt, OJ QJ
o•d TJ •d TJ TJ *d 72 TJ "S •d tn TJ
u"> '> '? >"? '> *> '> '>
">•—• '' .V OJ Sd
CO C f H Ut CHf C f H ui, ci <H C f H Sa Sa a "2 Sa Sa
CJ QJ QJ QJ QJ QJ OJ QJ QJ "qj *4J fc rt "qj *QJ
HH
E- CO CO CO CO CO co CO CO CO CO C O O CO CO
CO
O
Z
O
«, •d
Uh
3CJ H-i
c
uj S ttl OJ
E
QQJ < z
O
o
z
O
G
«
o
Uh
'c
op
r on PROGR , SUBROUTI
OJ
tt
ed
tt
tn
o
Q
2
uj
CO
Uh
it t - i t - i *»-» n•*-* •4-* 2 z
u t o
Q J ^
tt H-i tt +"•*
d
QJ
TJ
OJ
•d QJ
TJ
QJ
TJ
QJ
•d OJ
3
QJ
•d QJ
£
Uh
Uh
QJ QJ
T3
OJ
•d QJ
•d
HQJ
Uli
'>
<Y
C|H •Y
CfH
'r>
QJ
Cf-,
*>
OJ
CfH
'>
QJ
CfH
rt Si
c z
Up
">
cY
Cf-f
tt
G
'>
OJ
Sa
OJ
Ctii
OJ 0J QJ QJ OJ OJ QJ "qj >. "oj "oj "oj
tN
1
CO CO CO CO CO CO CO t n U t CO CO CO CZ) CO
CQ
ttl
uA
OQ
<:
ttJ
O
co
ZUJ
tt)
fc ti
H-1
00
ZII
HH
CO
<
ttl
rt
Ul E- HH
H-l
CU
UJ O
O
Ul UJ
CQ Ul
s
z
a
cu
zHH HH
o i .
Ot
Z <
HH
rt
Ou
Z
HH
CO
£ rt
o fc
h J O i
Ut
Oi
UJ
H
s
UJ
Q
oi
<
ou
oi
o& r A
o Z rt
ooi
ort
qrt
ocz Q
O cu rt
ort
o . ffi
O
OJ
00 rt oi £ Oi oi rt rt r t O h rt r t . oi O
rt rt
NTAX ER STATEM]
oi oi oi oi q Z O rt r t . tt, ^J u j Z
CO
QJ
2
ui
X
ttl
X
UJ
X
ttj
X
UJ
X
YNTAX E SCAN ST
UJ
X
UJ rt
X o OS
x fc" °ffi H-)
<
Z
hJ
<
z
< . < . «, < tt. < s U J H
z z z z fc ui
^z
Z* s °- f c O
CQ Z tt! rt
>< ttl > fc >- ttl
t- J C O
;> >* >< P > o < UJ U J . U J .
c o S
UJ
CO CJ
Z
ttl
hJ h-1
co 5
fc
CO
- J .
tn
ul
C O |
fc 3:
TAL S INDICAT
C O «
r*-j H fc H O
Z
h J c o
H O
Z
hJ So
r< £ <: uj < O < < < 5 < 2 < a < £2 < S2
E- lo h 2 > H co h 3 z 2 Q *i 3 H 5 H S H tt. H S H S
<<<, <j
tt. Uh tt, tt. Uh Ut u. tt. Uh tt, Uh Uh Uh
60497800 D B-61
i0S\
/ f f ^ S
OJ QJ QJ QJ QJ OJ QJ QJ OJ QJ QJ
TJ TJ *d T> •d TJ* *d TJ TJ TJ TJ
OOoOoOoO O O O
>>
OQ 00 00 00 00 00 00 00 00 OO 00 00
GGG
TJ •c . •c . 'G U h . •c . "lH •fi . •c . c . c . ' .
OJ C O U h r a U h C O U h t O U h C O U h e d u t O U h e d U h eo Uh C O U h C C l U h
d
oo X h 9 }
s n r d XI ._>
s n T d X h 9 3
T ? T G
•fi <u
^3 rd XI <i>
«3 rd X J o j
s $ r d
X i < »
T « G h X h « >
H5 G3
X h « >
ep rd fi xi
v i r d fi £
s n T d
£o j O . Q J O , Q J O . < L > O h O J Q . Q J Q , Q J O h O J O h Q J O . Q J O f 2 &
E £ E £ £ % E E E E £ B £ 6 £ £ s i 6 § £ §
P 8 P 8 . a o
H c j P 8 P 8 P 8 P 8 P 8 P 8 P 8 P 8
OJ
TJ
d
2o O
Q
1 - 1 I h
° c£
t t ^ h
G d Q J
oQ J X i
HH
oE -S
<^j HH tt ra rt HH HH ^j HH tt HH HH
cGcK >
OJ QJ OJ co OJ OJ QJ QJ OJ OJ OJ
*d TJ TJ H*
o j d •d TJ TJ TJ TJ •d TJ
'> ?. a oj *> '> '? "51 't> ">
¥¥¥ •5 «2 QJ .V .V
Sa Sa Sa Sa Sa C f H C f H Ut C f H cm
" q j
CO 00
" q j
CO (2 t3 " q j
CO
" o j
CO
QJ
00
QJ
00
QJ
CO
QJ
CO
OJ
CO
"•So
•fi s z
m"
CO
g 2 W CO
w x > tt
HH o Z Of
2 1* rt
OJ HH G + - J ^ CO
S3
oGa o h
GQJ <> ° tti oo
rt
CJ c o « J p / C f H
ut
g
op
OJ
ra
tt
en
tt •-*,
Q J . - T
QJ £ O
£ i, H Uh
O
U,
OJ
S3
CO
H-i
93
3
ra
.a
- 3 o
O t U t * u J
t o r t O
ttf
co
ID H-i t - i t - i
G2> cLttT
•£ o "-1 <:
QJ QJ QJ OJ QJ OJ OJ OJ
TJ oo Oh TJ TJ T> TJ TJ -d •d
O
Q> o
> o "d
>•* *i> '? '> '>
¥OJ o « Ou OJ
sa
QJ
CO
Uh Sa Sa Sa Sa Sa Sa Sa ><
5*o O 'go
tt. Q -9 co QJ
00 " o j
CO
" o j
CO
" o j
CO
"qj
CO
" q j
CO
" q j
CO
ra
Ut\t
o2 tt)
OQ
hJ
<
Htn CJ
OJ
oo
ed
tn
sn
OJ
IS
ttl Q
2 UJ
2 Q
Oi
O
Ut
<
H
O
z
ttJ
s
tt)
Sfc
co Z
UJ
Z
E
UJ
Q
tt)
oi
H
Z
f c K >
tn
UJ
oi
5
a
a
g
s
tt)
5
Ul
£ 1
tt)
r t r t
f c Q h
tt, w
fc. :*
£ fc
tt)
rt
ol
H
ffi
o
2
W RIGHT PAREN OR TAX ERROR - SCAN
UJ
CQ
;>
z
CO
2
o
CO
g
C O
;*
z
fc W
h q CO
HH C O _ ) CO UJ
Uh
t t i Z .
fc > ^ tt. t t l Z .
P L , > * , -|
, fc
S rt ffi Ul
Ul
C 3 £
H H J J CO
a .
H H
CO
<: o
co H
O . . < °Z<
f fi O h
H .
u l '
< o ^ ° >-lU
^ 9 H-l
<TAL TO PREVIOUS STOPPED
H-l
•<
^ O t tl
u t c l ,
j > E
H Ou co
H-l H-l
<
£ Q H co b ^ h 3 q b ~ h a
r< <! •< <: <1 <;
Uh tt. Uh Uh pu tt. Ut tt. Uh Uh fc
B-62
<^S5X
>^^^\
yfV!twX
^^^\
-*«!\
60497800 D
jff^S
QJ OJ QJ OJ OJ QJ QJ QJ 93 QJ aj
dd•d TJ TJ •d -d TJ tn •d TJ
oOoOoooOo o o
>,
CQ 00 00 00 00 00 00 00 00 00 00 OO
c c .5
TJ I h . Ih >H 'C Uh Uh Uh U h . Uh
OJ r a i - i r a u . 0 3 I h e d I h r a u . e d I - , e d u \ r a u . ed _C O I h rt C
3S i O J X t O J X 5 o j • G Q J S t 9 3 X J 0 J S i Q J X I O J X I Q J X J O J S Z O J
00 o o r s c o r d v i r d o o r d o o r d o o r d o o r d v a r d o o r d CO 73 oo rG
_H Q J O , O J 9 / O J f c Q J O , QJ Oh 0 3 O f O J O f i o . Q J O f 0 3 O f o j O f
E £ E E £ £ E E £ £ E £ £ £ E £ E E E E E £
fi o fi o fi o ; - O .-. o : - O ; - O • r * O ;-* o • t o ; - O
H o H o E- o H o H o H o H o H o H o H o H c j
CfH
O
OJ
CO
o £
' r * S 3
O r t
d '5
VH
O
CfH
d r a
a >
- oo
c o c -
oo
Oh
93
G
O
O| v \
* d
Q
E-
z
HH
o
<HH -*-» tt - f H
co
d
o
" > — i
q j ~ m
tt
U h „ ,
1-8
o o c
Gcd C GcG
QJ OJ OJ QJ OJ QJ 5 £ OJ OJ QJ
oTJ -d •d •d 72 TJ fc-S T> 13 E & -d TJ
CJ '> "> '> '> '>
C J O J
"> h . u 2
o S i ; '> '>
^ w < 93 OJ
C f H Cfl Sa c-f Sa CLL s z £ C f H o j | r t Ut ui.
wo
CJ QJ QJ *QJ OJ " q j QJ OJ — - • r t I h 93 93
CO CO CO CO CO CO U C O CO O c o tn tn
CO ed
oC c o
zO " h
. _ ; o j ed rt
If-
o11 en
rt TJ
OJ
S
uj
Q
O
%
OJ
CJ
G
ra
CJ
O J X H H
G UJ O
- 6a fc
J- o z
tt
«
E
Uh
a
, 3 3
* * - G
T J O O
Q J J J
cj it;
tn
OJ
oo
3
>,
In
d
QJ
E
rt
C
c .
O O J
Ot
QJ
-d
_>>
~vi
3
OO f U 0
C r ^
ed
sn
• — 0 0
CJ o o
z
2
2
G
op
CO
§ rt £2
o U J C J
•£ o ttj _.•
co ttl oi %
H fc £
QJ
Uh
3
cr
2 c
e-S
I h r a
O c j
it
a .s
q j r t
U h h h
d c o
S o «
O C J 9 3
QJ
Uh
Oh
CO
« ^ J
> q j
13C h h 0 0
a §
OJ
Uh
O f _ ;
OJ
53 s\
CO
1
ttJ g S w g f
E h-J oq •-
- < 2 fc
« ui O <
co rt Q CJ
QJ
TJ
QJ
TJ
OJ
TJ
h h Q J
C J c c
C O G
OJ
•d
S3
X i _
r t q j
^ H f c
•d
OJ
•d X J <
pC m £ £
o o " o
IS <*>
, O h
Cf-f
" q j
Cf-f
" q j
CfH
" q j
,3 ,*; 2
* * - " ' d «
q j ( S f c
x : o j c h .
">
QJ
Sa
" q j
4 2 r t
Q J G
! * O
. S r t
O J * 5
t^3 -s 93
i2 2
oi
i
H Jo CO CO tn H T 3 o CO H c2 H i * tn H tt-
CQ
Ul
hJ
OQ
><
CQ CO
Q
UJ
ttl
ttl
1 .
. oi
. o
E-
O
<a
ttl
15:
o
H-)
O Z
Z UJ
Z*
O
. UJ q 2
IS
rt o
UJ H
2J.
. O : o
Uh
tn
ut s
rt
o
H-l
O
tt. O [ L ) oi
o
. fc
r t C Q
o <,
C O 1 C O 1 z
h9 i tt,
H <
QJ
OO
ra
ttl
OQ
fc o
2 <
2 < j
H o o
52
o >
rt fc
o z
f c f _
z<
j £ C O
^ fc
f H
q <
fc§ 3^
fcg fc %
Uh Z
Z r?
CJ
Z '
tt. *
z
S^co
h J <
f c f - V
z q
00
co
QJ
s
I h . f t
Z% f
HH
CO
UJ 00 Oi
tt) tt) o fc
8g
UJ
o fc
8g
UJ ,.
o fc O ttl
CJ CQ o fc
UJ* Z Q O o fc fc H tt) Z UJ H
O O
< z
CJ
fc Q
W Q
Ou
< H
o S
tt,
5 w
fcS
» > C O
f c H
h4^
. t t l
, o l < * >
H < H f c
Z co
5 f c
fc Oi
^ CJ
< C O
fc D f c t t j r t
is
f c U J
o fc
OT fc
H
h - 1 e o
" 3 f c
f c U J O Q
< fc ^ o < r t t ti < rt < t t l < z H Cu fc
fc < fc < f c < N E^ Eo CJ fc co H U fc fc H f c O h H O Q H <
<•<
tt. tt. Uh tt, Uh Uh uu Ut tt. tt. Uh
60497800 D B-63
0 S \
/T^\
OJ OJ OJ QJ qj QJ OJ 93 OJ QJ QJ
TJ dTJ TJ TJ *d TJ TJ TJ TJ TJ
OooOOoOOOO O
>>
OQ
*d
00 00 oo 00 00 00 00 00 00 00 oo
.s .s
U h . .s
C v I h ' u t . •§ ' C . .s
Uh
QJ C d k H C 3 % - , C O I h ed Uh e d t t r t U f r a U h eel Uh R l U h CC) U h
3
en •S rd X h C D
^5 rd • f i Q J
op rd X h C O
T? rd Xi <u
t5 Gh •fi «>
^5 Td XJ «>
sn rd X h O J
^ 3 v d J - > 9 3 XJ «»
en
ft Q J O , O J f c 0 3 f c fl j O , Q J O . Q J O , Q J f c o j o , Q J O h q j O h Q J f c
6
H 8 H c j
£ £
H 8 18 £ S
P 8 % 1
P 8 P 8 6 %
P 8 g 6
P 8 l£ 1
P 8 P 8
G
O
+3
o
<:
bHH HH HH H-i H - J +j H-i HH HH t-i tt
Gd G GGGddGGG
ZOJ OJ QJ QJ OJ QJ QJ OJ OJ QJ QJ
o£TJ •d TJ TJ TJ •d TJ TJ TJ TJ
"> '> 'i> '? "? *j5 '?
^ — f
C f H Sa Sa C f H Sa CfH Sa Sa CfH Ut Ut
tn
CJ
ut
" a j "qj OJ "qj OJ "qj "oj " q j QJ 93 QJ
CO CO CO CO CO CO CO CO CO tn CO
H
CO Uh
ed XI
C J j .
O
ZOJ
Of
Oh 5.
2 o
or t t t QJ
<
38 E H-i
d""3
BU £
ui
Q
O
OJ
CJ
G
ra
u
> » T J
2 S
U h C «
ra
G E
00
Uh
rt
8
X h O J
OJ
O
Q g j
o( t t O e d
• h U h d1 rt ra
z'1 0 0 O O
G o O J *
2
3
CO
H-i
O J U h
G Oh
.5 S3
t n d
co
TJ
rt t - i t - i H-i H-J H-i tt t - i tt
3 >.
co "co
. S .
o u ,
MGO J _ X J > O
O Q J O
G u h — h
QJ r - , r a co OJ QJ QJ QJ OJ OJ OJ QJ
ui £ ' S3 rt •d •d •d TJ TJ TJ TJ TJ
s*> S -s UH "> '? '? '? '? 0 8 f c Q J
HH ,Y > X >
rt
Oh
S 3 t t X I
HSa Sa Sa ui. Sa Sa Sa Sa < 4 H C O H H
H E o
OJ h .
* < O
Oh "oj "qj *QJ OJ QJ "qj "qj "qj
cs CO ed CO CO CO CO CO CO CO CO
CQ
a
CQ
<
1 ;
oi
oi
<
§£'
K UJ
CO s
z s
oi
ttl
O E-
00 §
Z §
O Q
H H ^
a UJ
A i O Q
UJ W
S fc
ut tn
O h^
u j ^
-) *
C Q
s -
OiOir?
* - H ,
2 H
Z co
ut
fc
o
UJ
UJ
Ou
s
CO
<
Q
UJ
tt)
ut
tt,
u
ttJ
Oh
RANCH IF NOT DEFINED CAL RESULTS.
ttl
H
Oi
ttl
Uh
CO
Si 2
H 9
QJ
00
ra
co
CO
QJ
Sh CO
fc <
fc ^
z
o fc
fc ^
3 <:
u j >
fc s
CQ §
^ S3
2 Q
t t l ^
.
CQ
<
2 rt
a fc
B f c
2 Q
ul
ut
z
<:
§
uj
UJ
CQ
fc t_?
UJ
fc
CO
CO
O
Oi
UJ
N .
fc P
< O AL ZERO LENGTH S OLLERITH CONSTANT
II
O H
< o i
o fe
^ fc
H ttJ
f fi C O
, 3
. CJ
^ o 5 w^ O Q
H
fc £_>
< 5
fc S
fc rl
HI
c j &
fc 5 o
«, 9 rt
fc « <
H < U J
> H^ H
HH
H - l ^
0< ttl
r o u t
o
n Q
H-l
< o
z g
~~~rt
Hi0
< o
; <' UJ
ui£
<z
h e
fc fc fc « fc CU f c ^ H CJ H f fi H t t . H ^ H ~
<! «< <; <J
Pu tt. tt. Uh tt. Pu Ut tt. tt. fc U,
B-64
,/*^^S
60497800 D
r***&\
QJ OJ QJ OJ OJ QJ QJ OJ QJ QJ QJ OJ
•d T> TJ TJ t; tn TJ TJ TJ •d TJ •d
oO O OooOoO OOo
>>
OQ 00 00 00 00 00 00 00 00 00 00 00 oo
d•S _c .d _c .S
' i n Uh Ih ' u h Uh 'C 'm it I h . Uh Uh
OJ e d t i r a m C O I h r a m r a h . r t i _ r t u . r t i _ e d u . r a t _ r a k - r a v -
dX i 9 3 • G o j x : o j X Z Q J X i O J X I Q J S i 9 3 X J O J S Z Q J • G o j X I o j X I « J
co v i r z x oo T73 oo T73 c o r G o o r d e n r d s n r a e p r a e n r d c o r G c o r d c o r d
•-H o j O f Q J f c Q J O h o j O f Q J f c Q J f c O J O f o j f c Q J f c o j f c < D O f i O ,
£ § £ E E E E E E E s g £ £ E £ E E E £ E £ E £
; - O • - * O ; - O ; - * O ; ~ O ; - O : - O ; - O ; - O • t o ; fi O fi o
H C J H o H o H o H o H c j E - c j H o H o H o H o H -->
>* r t J 4
<-> fi
tt) o JS rt
y « ^ s
f c ^ J2 o
h J " -
< c 8.s
G
O r A C J
X 3 T 3
O J
^-^ ut Z > t t . *d S *fi
2 «»
E £
E
« Q J
8 -°
ta
<C c 2 M
f c . 5
QJ
*t tt
_ « o tHH
r a J _ o j
QJ OJ OJ OJ QJ QJ OJ QJ QJ
OTJ TJ dTJ •d TJ -d "d TJ
QJ
tto^ £ gC J Q J . C , Ui >
Vn' ,Y OJ
Q J * t - 3
r t e s t Z Z - 93 Ut ci, Cf-f CfH Ut Ut Cf-f ci, Sa
Vj r - d
ur , 2 c f OJ QJ OJ QJ OJ OJ OJ r r r t QJ OJ " q j
C J c o O J CO CO CO CO CO CO CO C J o CO CO CO
H
CO
OIh
O
ZV i r -
e d . 5 OJ
oX J o p
<t t * t ed ed rt
C ° rt ' C d
3
Ul
Q93
CJ
Q J O
t t r Z ,
e d S 3
r-
o
ro OJ
TJ
OJ
X>
« '
> Q J
t n r O
B Q J
O
sG
rt
o
tt **
~ C
f c 2 V/
S3
o
r a " o
.-. "ra
"2 'c
o
z
HH
rt
CfH
op
CO
c j £
Z £
t t l o
u l o
OJ
S3
sn
rt
CJ
ed
CJ
z
o
s
s
o
C J .
^ *s
S "fi
r a c o
CQ 5
•£ S
O J o j
5 £
as <?
UJ
S
P
The EQUIVA extended the backwards.
OJ
•d
">
OJ
Sa
*QJ
CO
QJ
TJ
.G
o
Q
QJ
TJ
">
cY
Cf-f
" q j
CO
QJ
tj
">
2
QJ
CO
OJ
S3
rt
'G S
« O
> -m
. s n
X Q J
Q J U H
t n 0 .
d x
u t O J
HH
c
OJ
TJ
">
QJ
Sa
" q j
CO
U t ^
O r a
r-
93 "~Z
OO
r a c o
S 2-
r - C T
H 2
TJ
93
" q j
SI
ra
QJ
TJ
'>
2
QJ
CO
OJ
-d
'>
OJ
Sa
*QJ
CO
OJ
•d
">
sSOJ
CO
i
CQ u- tt) ttl
ttl
H-)
OQ
<
HH
CO
z
t t ) .
SI
fc S2
UJ
S
UJ
hJ
tt)
H
CO
H^
CO
Oi
tt)
ttl
<
rt
CQ
D
2
rt
tti
H
ttJ
CQ
E-
CO
HH
s
rt
ui
H
tt)
s
<
rt
ttl
OQ
Oi
UJ
H
UJ
S
2
ui
t*
H
hJ
<
O
UJ
hJ
ttl
h4
Ul
OQ
H
ci
UJ
CJ
<
ul
Ot
tn
S
H
Z
UJ
S
ttJ
H
r-t
#
#
CO
Q
ttJ
tt)
uj
2
u
CO SCRIPT LESS THAN 1 OR NSION.
OJ
00
ed
sn
sn
QJ
h J r t
< o
U J «
H-l
<
o
tt)
ss
X
ttl X H
U J O
as
X
ttl
cu
fc CQ
CQ
So
tti
£2 tf
o
Z
S3
<
CO 00
Sh J ^
U t H - l
rA Q O
Srt 9 <
S 2 CO CO C O —'
. CQ
z o
* 0 0
. o
rt ui '$ ' Z C O
o CO
Ul
, O i
' tti UJ
o
H - l f c
<z
>
H-l
' O Q
UJ
. fc
f c C J
d s U.S d <* fc. co f c ^ fc H hJ fc % -J
^ P 25 3 o << a < < < o < X
f c u H U J fc cu H c o H Q H C J E- t-1 UJ
<:
tt. Uh tt. Ut tt. Ut Uh tt. Uh Uh tt. Ut
60497800 F B-65
OQ
tn
o
E
00
.s
Uf
CC) Uh
x ; »
c o r d
O,
E
o
OJ
E
P
TJ
O
E
00
Uh
Cd Uh
X ! o j
u p r d
o j O .
00
.a
U h .
Cd Uh
X h 9 3
e n r d
i f c
|i
H c j
T)
o
00
.3
Uh
C4 Uh
X ) < u
c o r d
0 3 f c
H o
TJ
o
E
00
.s
r t i h
X J O J
op rd
Q J O h
TJ
O
E
00
•S
Uh
ccl uh
TJ
O
E
00
.a
Uh ra Uh
QJ XJ QJ
ri CO V^h
Oh 0.
E
oE
o
o H CJ
QJ
TJ
O
E
00
.a
Uh
C4 UH
X J 9 3
t o r d
o j f c
T)
o
E
00
.a
r t U h
X J o j
% t h
03 O,
a s
h 8
*d
o
£
oo
.a
U h .
r t U h
- fi - h "
s n r d
Q J O f
B l
T>
O
oO
.a
r a U h
S i 9 3
s n r d
Oh
E
o
o
QJ
QJ
TJ
O
E
00
.a
Uh
Cd Uh
X J O J
v i r d
Q J f c
•d
o
E
00
.a
U h ,
C4 Uh
-fi .2,
so rd
o j f c
•^^v
O
CJ
CO
CJ
P
co
O
Z
o
ttl
Q
O
s
o
z
HH
rt
ttl
CN
I
CQ
UJ
HH*
CQ
<
.2
HH
CJ
<
G
00
*d
>
Sa
" q j
CO
TJ
'>
00
G
3 £
'oo op
£ £
QJ OJ
Of°
> , H H
f oo
*1
I g
i t . 5
CJ o o
e t n
5 o j
, d U h
U t d ,
C f H X
Z
o
ut
tn
tn
ui
oi
tt)
co
co
a
Uh
H-l
rt
UJ
H
tt.
<
QJ
T>
V
y
•d
co
TJ
cY
C+H
" q j
CO
° fi
f c d
<3 E
~ t Q J
> £
o t o
*-* Uh
* 'I
QJ Oh
•fi 5
c j a
OJ
TJ
V
y
<*H
" q j
CO
TJ
"?
TJ
'i>
TJ
'?
y
CfH
" q j
CO
*d
'i>
y
Ut
*QJ
CO
OJ TJ
O,
ECfH
oQJ
TJ
'>
ci
Sa
TJ
tn
TJ
>
OJ
CO
•d
'?
cY
CfH
" q j
CO
Q
tt)
rA
Z
Oi
o
tt.
ffi
H
O
z
ttl y
13
PU
CO
<
z
HH
z
rt
ttl fo
hJ I
oi OQ
fc s
fc §
f c o
tD vo
C Q < ^
CO
og
ISAi S**1
J
ttJ
OQ
ffi
H
HH
H
z
ttl
a
<
H
CO
Z
O
s
s
o
CJ
O £2
Z co
ui
O
Z
2
b
HH
H-l
tt.
z
o
cj
ttl
Z
HH
«H
H
H
00
rt
<:
H
CO
Z
O
cj
o.
ttl
H
CJ
Z
D
rt
H
ra
xi
~ T J "
QJ Q J
T J t S
.oo 2
rt ra
d " o
• a ' d
OJ HH
co
UH
Ut
TJ
<1)
ra CJ
CfH
HH
o
z
o
ttl
Z
H
ttl
Oi
Ut
O
Z
o
ut >r
co js
z 2
t t J C O
O
z
HH
z
rt
ttl
OJ
TJ
co
A^^v
/*"%v
Jr**^il)L
B-66 60497800 D
jgp***.
/*|8\
/*5"*\
QJ QJ 93 QJ OJ QJ QJ OJ 91 OJ
•d TJ TJ TJ TJ TJ T> TJ tn TJ
oOoO O O oOoO
>,
CQ 00 00 00 00 oo 00 00 oo 00 00
c c c c .a CJ .a
TJ u* Uh Uh Uh Uh hUh Uh Uh Uh
OJ e d i — e d u . C Q I h r a u - e d i _ e d u . e d i _ r t I h « l I h e d u l
dS Z \ 9 3 X I Q J X I Q J sz oj X I 9 3 S Z Q J X J O J S Z Q J s t o j x ; o j
co co rzt oo ZZZ. en r_* eo rZ3 sn rd oo rG sn tz z oo rd co r a sn rd
9 1 & 9 1 f c i O f Q J O f o j O f 91 S - Q J O f o j O f O J O h q j f c
E £ E £ E £ E E E £ E E E £ E E E £ £ £
o ; - O ; - O ; - O ; - O ; - O : - O ; - o f i o • d 0
H c j H o H o H o H c j H o H o E - c j E-h o H o
00
,G CfaH
'oo
CO
Etion o encies WA. "ob "fi
•If £
OJ
XJ % .a J £ 11
.2
fH
oo
QJ
E
clarative s for incons FWA and
3 o o
ZZ sn
IE
Q
H
Z
CJ
<CO
C O .
r t . c o r pre is or S.
QJ OJ QJ OJ OJ 1 - 0 9 > r , n OJ QJ a s z
x j r t
H . S D
8 s fc
o
CJ
CO
o
TJ
'>
sl
TJ
*>
sS
TJ
'>
QJ
Sa
•d
2
d
2E P.
* £ .a
^ op o
TJ
">
2
TJ
>
cY
Chh
QJ OJ OJ QJ OJ O i o xi 2 >
cj o. .a 93 "qj £S«
H
CO CO CO CO CO CJ o , tn CO cj o,rt
CO
OtT
Z
o
<
S
uj
Q
O
s
M
ut
ai
OJ
CJ
c
ed
o
at
c
.00
CO 1/0 statement must . PROGRAM statemeni
e le was not declared on the OGRAM statement, lea = leb ored.
oi
CU
c
o
93
at
tn character appeared parenthesis was dress and last word be in same COMMON ence class, or array.
ed
>>
S3
tn
93
CJ
xi
"Hh
QJ
Uh
QJ fer length was specie s, negative number.
ms appearing after argument list ignored; processing continues.
tn
i
UJ
S
HH
E-
r -
.a o
Q J O J
e a
raC XJ
CJ
OJ *zt
*t
d
QJ
£
>
y
Ut
OJ
c
a:
QJ
•d
_>>
XJ
d - d
OJ
TJ
">
sl The indicated where a right expected. First word ad address must block, equival
S3
C
3
tt,
OJ illegal buf ., character
7
r d *
£ £ *QJ
CO •fi oi E
H £ .SP Q S QJ
CO
G O p
< J o j
O J O J
T t U -
r t e d
CQ
UJ UJ Oi
H-l E- Ui
CQ *2 ffi
<
Q
ttl
z
ut
tt,
ttl
Uf
NOT IN Sj :lass, or
ttl
u l .
tt,
<
tt) Q
ARNING EXTRANEOUS COMMA IGNORED.
H-)
CO
O
i-t
ttl
>
<
ffi
Uh
Oi
UJ
H
OU
HH
OO
<
ARNING ILLEGAL BUFFER LEN FOR FILE ... - 2003B USED.
Oi
Ul
H
CJ
<
QJ
00
ed
en
en
OJ
s
ffi ~
CJ ttl
-I
X t t l
W f c
ut
tt,
Z uj
z H
ARNING FILE . . . NOT ] EQUIVALENCE IGNORED. ARNING FILE . . . PREV DEFINED - IGNORED. ARNING FORMAT MUST STATEMENT LABEL. ARNING FOUND . . . AF ASSUMED RIGHT PAREN. ARNING FWA AND LWA ARRAY, EQUIVALENCE C COMMON BLOCK. ARNING IF RESULTS IN TRANSFER. ARNING ILLEGAL CHAR RIGHT PAREN.
£ £ £ £ £ £ £ £ £ £
60497800 D B-67
CJ
co
CJ
ut
H
CO
O
Z
o
rS
Q
ttl
Q
O
o
z
2
CO
I
ttl
CQ
3
OQ
*<
H
CQ
TJ
00
d
•c
QJ
dh
CO
liS OJ
Id
fc
£E
Po
o
o
at
G
op
CO
TJ
O
E
2 A
f i Q J
fd
Q J O f
H 8
d
o
E
00
.if
Uh
2 uh'
•fi OJ
T *=
Q J O h
E £
H o
QJ
TJ
O
£
00
.aUh
2 >-•
H H Q J
o j O .
H 8
QJ
T>
1
00
.3
Uh
r fi C U
Q J O ,
6 i
P 8
TJ
O
s
00
2 ul
II
tT Z O -
QJ
TJ
o
E
00
.a
Uh
2 -h'
X J Q J
i O.
a s
P 8
G
aj
TJ
V
2
CfH
TJ
2
CfH
3
Uh
O Q J
Q J O
TJ
.Y -4 CO
ooUh
0J OJ
6S
tj
'>
c!CfH
" q j
CO
OJ
TJ
.Y
CO
OJ QJ
TJ TJ
V V
y y
tn
TJ
V
2Ut
" q j
CO
ra
xi
CJ
ttl
Z
ut
tt,
ttl
Q
H
i
tti
H-)
HH
Uh
O
8
2
rt
t
TJ
ed
•ad
o
HH
OJ
TJ
Xi
>.Xh
TJ
c!CfH
.art
G ^« O J
O I h
qj "o
r - t O J
u- d
C J "
rtB
ttl 0 .
f c r % G
D S oj
O'E J
ttl £ t3
£ Ih
a •*
« >>
U h C U
O J ^ j
C f H Q J
o o f
d c o
h « .
eo tn tn
93 QJ >-jr
Uit-trC,
£ OJ oi
HH
u
3
Ohhh1
U h L h
.art
cu
TJ
•2
Ut
1
I
<
ut
z
HH
z
X
H
CO
CO
rt
H
15tt)
H-l
a
3 3
ttl
Z
o
ez
co o
CO H-,
tt)
tt)
UJ
lo
uj
Ou
CO
00 CO
23
CO
ttl
rt
O
Z
o
^
/ ^ \
B-68 60497800 G
•^
y$pc*\,
/fPN
CQ
•d
o
r t I h
S Z 9 3
co TZ1
O i f c
H c j
-3 £
a: *
§ c
« >.
s fc
-g fc
8 o j
- *-
U H
TJ
O
E
00
c
TJ
O
00
d
TJ
O
£
00
G
ir-i QJ .fl OJ ..fi OJ
sn rzj CO rG 00 .r4
93 Oh OJ OJ Of
EE£EEE
ooo
HCJ CJ
•d
o
£
00
c
Uh
r t I h
s i o j
Of
E
o
TJ
O
P
00
G
Ih
e d u .
X J Q J
o o r G
o j O f
|i
E - h c j
TJ TJ T3
O O O
E£E
00 00 OO
c c G
Uh Ih Uh
ed ed I-. ra
aj QJ QJ
en rG en '.'I oo r^5
93 Oh QJ Oh QJ O.
EEEEEE
ooo
HCJ CJ CJ
TJ
O
E
00
.G
Uh
e d i n
s i o j
o o r d
a > O h
H c j
TJ
O
OO
'uh
r t I n
sz OJ
oo rG
a j f c
E £
E - h c j
oo
G
OO
o
u x>
c j
QJ OJ
X I x >
C J £
tn
'> tn
">
sS OJ
CO
TJ
>
2
QJ
CO
CJ
c
tt
cG d d
oOJ aj OJ aj
Chh JJ •d TJ TJ TJ
M ' i t
CJ CJ QJ
QJ OJ C.JL ui, C f H cJh
fi .d OJ QJ QJ QJ
O t n CO CO CO CO
o-
o
o
XJ
o
G
QJ
£
q j < y q j
oo C J
Q J q j
3 S.
r t C
O
cr
CJ
Z
HH
Uh
O J t t
82 fi »* H . - H C O
js fc
E V
QJ XJ oj x;
CO XJ t-
H*
Z
ttl
>H
Ul
Oi ttl
H
f c H
CO g rT.
2 fc ttl CO
*H « ttl CO
HH
> H ffi ffi
S5
Ou H
CO
* > H ffi ffi
rt
ui fc
2S Z
< « r r l Oh
O
Ot
O
Z 1 Uh
QQ O
ofc
z 2 ttl
rt
o
z
o
HH
ttl
z o
5 fc
5 ui rt
<
HH
z
rt
<
&£ £
Q J O
TJ
E I
a c ss
ul J2 xi
w g £
a ) * *
5, E W
tn
"> •a TJ
">
00
5
CO
tt ,<-,
G
OJ
E
d
on
Uh
ed CQ
D
Ut QJ ro
OQJ
Ih Ih
Uh
OJ 00
rt
x>
£
d
Z
CO
d
EE-h
H q j
o -s
o -g
•o £
QJ
d U h
OO OJ
s oo
"fi
O o j
f * O h
° G
QJ _C
IcT "^
O ed
Q J G
Uh OJ
O J C
zt
.> QJ
QJ S
E M
I S
£o
° 9
Qfc
5*" Z
P I
tt, 2
rt8
UJ
O Q I
2 z
z m
uu S
cj fc
ui <
HH 1 H
g CO
ttl o
c o g
ul
r l f c
Z t u
-)
<
H
<J
O
9 a
tt)
s
ttl
H
<
H
CO
<
<
Q
h-1
h-1
D
Z
£a
S Q
UJ
>
H
CJ
ttl
Oi
Oi
uj
Q
<
3
hJ
hJ
D
Z
ffi
H
>-t
£ Q
, W
co
S
UJ
z
o
G O
ttl
s
ttj
E-h
<
H
co
rA
ul
to
z
z
oi
<
E-h
O
a
u,
o
E-h
CJ
ttl
>
OQ
O
CO
Ul
UJ
hJ
CQ
<
WW <
>
oi
UJ
a
uj
E-*
z
TJ
O
£
oo
G
Uf
r t I h
-fi £
v i r d
O J O .
E - h c j
Oh
£
o
c2
o
QJ
CJ
H H U h
t j > -
fi j
Ul g
UJ
K 0
q z
OL
o
rt o
< -1 <*> .
f c C O O
. CO
X fc u j
< u fc 93
1 ><
* ttl fc o
o bi
+ a ^s
>! UJ
Iv fc
f c C O
Oh
Z H
° s
z ^ z d
S UJ
rt £
ist
60497800 D B-69
CQ
QJ
TJ
O
E
00
.3
U h .
A U ,
X J O J
s n r d
Q j O h
H 8
•d
o
E
00
.a
Uh
ed
£rd
Oh
E
o
QJ
TJ
O
E
oo
.a
U h .
e d I h
• f i O J
? Tn
Q J O f
E £
E - h c j
•d
o
E
00
.a
'in
e d i h
"3 ta
Q J O .
E - h c j
TJ
o
E
00
d
£ £
QJ '5.
E E
•.fi o
OJ
TJ
O
E
oo
.aUh
ed
£
Q J O f
E £
TJ
o
E
00
.a
C d I h
-fi £
e n r d
q j O h
Bo
E - h c j
QJ
TJ OJ
TJ OJ
TJ QJ
TJ
O O O O
££ E £
00 00 00 00
.a .a
Uh Uh Uh
rt ed ed Uh ra Uh
XI
oo QJ
rd •? QJ
rd XJ
OJ
91 Oh QJ Of QJ Oh Oh
E £ £ £EE£E
oo o O
HCJ CJ
c
o
tt
rt
Uh Xh
OO
OCJ Uh
4*JS!>X
G
O
HH
o
-d
>
"2
">
cY
CfH
" q j
CO
H > U
Q J f c «
d
QJ
TJ
co
00
d
TJ
Uh
o
d
TJ
QJ
rt
TJ
>
JrJ
ra
o w
co Uj
TJ H - <
O J 0
•a ^
r a u t
° y ld
•alia
u .a ui
CJ
... o
O ' e o
uh *-h
Q J c
N i fi ,
>> -
X ) d
vS
2 3
•a 2
45^
u , "
O
U t j - J
.* -2
o a
O J n - j
f^3 "fi
CJ ra
V . ^ H
uh tn
d
Q J H H
C O • _ *
O d
X h « >
S ^ E
I-a
+-*«<N
CJCN
H H f H
E O
*d
">
•d
">
2
QJ
CO
.a h
•^ 5
O J o
•fi 2
cj .a
OJ
£
d
00
co
r a o o
* H £
rS.fi
1 «
£ 2
o 3
C J O h
/ S i ^ y
d
.op
CO
O h
O Q J
g fc
~ a
G Q
o
.a
B .2
*d
c
ttl
tt
r - ,
" 2
O + 3
S|
n H ' « H
T J Q J
Q J T 3
cS -
o j G
t n g
c o O J
« f
£ T i" ^ e o
a §
o E
c .fi
.a
OJ
- t j
a
o .a
8 © £
tj
>
TJ
'?
cY
CfH
" q j
CO
TJ
'>
xi
•a fi
« .2
*H
o j r t
C O r t
_ C J
• f i r -
* .a
c o t 3
• d o j
* C O
H d
x:
Si
x
I
o
Z
TJ
cY
ClH
" q j
CO
•d
">
rt
OJ eo
O,
Of
rt sn
en
QJ QJ
tt •G
CJ
ra
ra
XJ
QJ
Uh
rt
CJ
Ti
O.
tt
OJ Xh
nn
rt
O
-d rt TJ
0)
dUi
QJ
OJ
XI OJ OJ
0.
X
QJHs
/*3>\
tt,
o
9 co
tt.
W Z
Q o
£ H
££
3 z
oi f-, ui
fc Z Q
W Q
^ W §
Z h rt
z«£
rt o
o h
CJ
2
UJ 3
o rt
Z H
I
rt
UJ
H
hJ
00
Q
fc,
gO
X ~
W Q
f c > H
hJ
o
CJ
r-
ro
UJ
U
HH
>
tt)
Q
w .Q tti
2
fe2
So
°\%
CJ O
tt. fc
O f c
co fc
h J - .
<*> "7 c
fc ^ z
rt ^ 6
H tt,
Z fc g
%toi
UJ
tt,
oo
Z
'2
ttl
s
ttl
H
<:
H
CO
HH
z
rt
z^i^v
/ ^ \
B-70 60497800 D
/0i&\
/*3"^"\
CJ
CO
u
ft
E-<
CO
O
z
o
<
CN
I
CQ
ul
H-l
CQ
<
>.
OQ
CJ
op
CO
TJ
O
E
00
G
Ih
«
si OJ
sn i-H
93 Of
EE
o
H o
•d
O
E
oo
.aUh
S O I h
f c £
e n r d
o j O f
E E
E-h o
•d
o
£
oo
.a
Uh
C Q I h
f i £
e n r d
0 3 O f
E E
E-h o
TJ
O
E
00
c
ft
e d i _
- G O J
«f> rd
o j O f
M
E-h o
TJ
O
E
00
#G
Uh
e d i n
XJ a>
TJ
O
E
00
c
• f i _ H
ep ra
O J O h
E-h o
TJ
O
E
00
.c
Uh
e d U f
X I O J
e n r d
a > O h
E E
E - h c j
TJ
o
E
00
zz
It
eO | h
X I 9 3
e n r d
O J f c
II
E - h o
Tl
o
E
oo
.a
Uh
e d I n
X J 9 3
c? rd
Q J O h
|i
H c j
TJ
O
E
00
d
In
ed
OJ
co a
fl) Oh
EE
o
HCJ
TJ
O
E
00
.s
>H
r t u .
s i Q J
op rd
Q J O f
E - h c j
00
c
ed
Si rt
CJ
oo
Uf
O
Uh
Ih
CJ C) . r, OJ
In 93 CO QJ
O.a S3
ed S3
rt HH
In' Uh
QJ
<1>
OJ
Eed
>ed
>
OJ
it
ed
•ut
en
93
si tn n
a
raIn
ra CO
tt
G
tt
93
OJ
Eh QJ
XQJ
TJ
U, OJ rt
CJ
OJ
In
In
O
U
QJ
TJ
.a
OJ
ra
*t
en
tt
£
tt
£
G
d
QJ
oo
d
ed
CJ
cY
CfH
" q j
CO
72
'> TJ TJ tj
'>
-d
">
CO
CO
Ui
Z
z
tt)
Q
ttl
oi
Z oi
w uj
eg
22
CO Oh
TJ
V
y
CN
G
rt
C
o
CJ
co
d
E
QJ
CJ
G
OJ
ed
>
G- Uh
fl)
tnf S3
91
dOJ
<:
TJ
GOJ
rt fc
d
^J
XI OJ
OJ CO
rt OJ
oOJ tt
EOh rt
>^ CO
Gtt
Utn
TJ
HH
CO
QJ
Uh
rt
OJ
CfH1 In
Of
Oh QJ QJ
ed X)
OJ rt
Oed
en
S3
ECO
>. OJ
CO Of CJ
0) >> In
Xh LJ
H~H fc
TJ
'>
sl
OJ
CO
TJ
">
x>
« .fc
CO
OJ S3
S 3 d
ra t*5
" C r a
> S i 9 3
t n . - < =
« & .2
S -d
. S O J O J
T J C J C
G - fi
• G Q J T J
O J Q J h h * * —
J J ' S o " 3
E - h s c c o
HH
co
co
<
X C
e d G
t- *>
_ i
i3
CO to
co
>H
<
s
f c H H
Z rt
tu uj
£ J
fc
«
o y
U h C O j
fc ^
fc 3
0§H,
Z fc z
s rt ~
5 > cq
hJ
HH
a
uj
H-)
<
>
oi
H E
rt
ttl
oi
o
z
o
ttl
co
ttl
a
z
2
>
H
a
z
H--4
z
rt
rt
o
z
o
ut
Q
ttl
Z
HH
tt, <
O H
r U «
o
z
H O u
H
rt
§2
<fc
15:
PI
hJ
OQ
oi
o
Uh
Z
o
z
i-H
z
D
ott)
S
D
co
CO
<
oi
ttJ
O
ttl
H
Z
H
O
Z
ttJ
hJ
OQ
<
i-t
Oi
$
a
z
z
rt
<
=4
ttl
u
Z
W
oi
tti
Pu
UJ
rt
UJ
ui
OQ
rt
$
UJ
Z
H
Z
ttl
Oi
z
3
8rt
C O u
ttl o
co z
u j ^
rt
uj
Q
O
O
a
z
z
rt
>H
2
rt
*<
CO
rt
UJ
>
o
oi
o w
Z H
a z
Oi 9
Oi
o
tt,
Q
tt)
S
D
oo
CO
*
O
O
Z
z
rt
<
TJ
O
E
00
c
Uf
X J 0 )
co ra
o j C u
f -H C J
G
m O
o -a
^ «
~~ o
oo fc
S
C O O J
C O O f
E w
U h X
HH
c
O H H OJ QJ
C f - f O TJ TJ
OJ
_ n U h OJ QJ
O J O CfH C f H
-fi 2
cj .a QJ
CO
OJ
CO
£ 5
op to
G
OJ _co
o j . a
XJ
~ X J
«« .-,
"fi XI
x 2
o d
« X .
c .2
o «
» O J
o
Z
o
l-l
o
o
E-*
<
H
co
Z
O
CJ
Q
u j
H
<
O c j
z z
rt
60497800 D B-71
y ^ \
QJ OJ OJ QJ OJ QJ QJ OJ OJ OJ QJ OJ
TJ TJ TJ •d •d TJ TJ TJ •d TJ TJ TJ
O O o o o o OoOOO O
>,
CQ 00 00 00 00 00 00 00 00 00 00 00 00
TJ .a .3 .a .a .a .a .3
*Uh 'tt Uf
r t i h
U h . U h . Uh Uh Uh Uh f> U h .
QJ C C ) U h rt ^. e d i n e O U h e d t t r t U h r t I n r t i n ra In e d A t O I n
d
oo
CO
- f i £
sn ra XJ <u
oo ra X I O J
c o r d X J 9 3
s n r d -fa £
s n r d f i £
s n r d
i t o j
c o r d X I O J
oo ra X J Q J
o o r d • f i £
s o r d X I < u
«<5 rd
HH Q J fi * Q J O h o j f c o j O . Q J O , O J O , Q J O . 0 , O h Q J O , QJ q j O h a , O f
£ E £ E E E E E E E E £ E E E E E E E £ s §
•.fi o f i o . n , O ; * h o • - H O ; - O ; - h O ; - • O ; - h O ; - h O ; - • O
H o H o H o H o H c j H O H o H o E-h cj H o H o
p
G
O
•n
O
<
"«H
CJ
G
a
G
In
O
In
HGcOJ
Z
o0J QJ , f i QJ QJ OJ OJ OJ OJ OJ OJ OJ
TJ •d O J o 72 "2 •d TJ •d "2 TJ •d
CJ S 3 t t '> '> "> '> "i> '> *> '>
yQJ rt
x> .S OJ
*hL Un CHf Sa Sa Sa ui, Sa Sa Sa Cflf
CO O C f H
OJ OJ U h O J QJ *QJ " q j "oj 93 " q j " q j " q j " q j
CJ
H
CO
O
CO 00 O h T J CO CO CO CO tn CO CO CO CO
ZOh
<TJ rt
QJ X!
Gtt
Qat In
tt) OJ
TJ QJ
tt
Q
O8
G
G
d
C f H
O
eo
93
It
oo
Sra
CJ ed
it
G00
o
z
HH
rt
n
CO
C f H
00
Uh
OJ
N
>,
S3
OJ
£
QJ
rt "fi
S Q J
o o u tm O J
^ n H
r t d
d d
" fi o o
d Q J
H H ^ .
fif
8 g
<HH r^.
o o
1OJ OJ OJ OJ QJ OJ OJ OJ QJ fi. o
£ S-
ft
ttl TJ
"> TJ
>TJ
'> '>
TJ •d
>
tn
'> T>
' i t '> HH
• h I n
11
£ %
OJ QJ OJ QJ
C f H
OJ QJ 'vi ra Q J Q J
HSa Sa Sa Sa Sa Ut Sa Sa [> Uh
OJ o «
"qj " q j " q j " q j *QJ " q j "oj " q j " q j Oh
CQ
00 CO CO CO CO CO CO CO CO Z » Z d
q1
ttl
ul
CQ
<
E-h
uA
tt)
ut Tt E-h CO UJ
OJ
00
rt
00
co
OJ
s
u,
ttl
81
§1
II
O H
<•-> CO
. C O
a .
co Sj
sis
ill
H-l
<
O
Ul
ul
<
H
O
z
CO
UJ
CO
O
E-
O
z
CO
ut
H
Z .
w .
* 9
< H
O
, z
9 d
o
CO
hH
O
ut
O
CO
CO
Q
ttl
ttl
%
ttl
UJ
Z
O
ft
ttl
i|
oo 2
co 5
S co
« C O
5 o
oi
ttl
N
CQ
H
hJ oi
to tt)
SN
z H
Oi
ttl
N
Uh
o
Ul
E-h
tt)
s
ttl
H
•<
E-h
CO
O
Z
ffi
E - h .
t t i r t
i - j o
UJ
rt
o
z
o
ut
1
;*
CQ
S3rt
I
§
tti
N
O
ut
ul
ut
o
CJ
E-h
O
5*
o rt
CO o i
l~} Ui
fc z
ti
S
o
z
o
CO
<
H
CO
Z
O
CJ
o o
* ' S h
la
5d
o <
CJ u
z
fc Oi
2H
HH^
E-> trj
2H
O 1
°3
w a
9
< h
H t t l
C O C O
5 CO
O c _ i
U h J
H 2
S
CO
sa
o
Ul ?
o
z z
fc ~
o i
ttl
CQ
tt)
Q
HH
>
HH
Q
ttl
H
o
ttl
Q
[>
5
tti
H
o
ttl
N
O
H
£
oo
z 2
O H
°z
§fc
Q t i l
Q
u j O
O
CO
CO
ttl
a
uj
E-
o
1-5: Mt
**3^v
r* && \
.^S8\
^
B-72 60497800 D
/jS^Vv
/$P"\
/*J^\
OJ QJ QJ QJ OJ OJ OJ OJ OJ QJ QJ OJ
TJ TJ TJ TJ TJ •d TJ T) TJ TJ TJ TJ
OOO OOoOo o O O O
CQ 00 00 OO 00 OO 00 00 00 00 00 00 00
TJ .a .3 .3 .3 #c .3
1-4 In Uh ' u t , U h . In Uh Uh 'uh Uh Uh
OJ d k - r rt r t i n rt In e d i n S O I t e d i n e d i n C d U h e d i n C C l I n C O I n
d
co •fi _-
<p ra X I O J
o p r a
x : Q J
o o z - j OJ f i £
sn rd - f i £
c o r d X J O J
o p r G
X I o j
o 3 r d £ £ •fi ,52
e o r G X J O J
c o r G • f i £
e n r G
HH Q J O h 0 3 U t Q J f c OJ 'o. i O f Q J O f 9 3 f c q j O h Q J O f 9 3 & i O , Q J O f
E E £ £ E £ E E E E £ £ E E E E E E £ E 6 §
• f i O d o G o ; — O ; fi o ; — O p t o p t o : - * O p t o ; - O
H o H o H o CJ H C J H o H o H o E - h o H o H o H O
<-— >tt
Uh
rt
CO
CO
OJ
poOJ
<G^J
i~
QJ QJ QJ OJ QJ OJ OJ OJ QJ OJ OJ
oTJ Th TJ TJ 72 TJ TJ •d TJ TJ TJ
CJ '> '? "> '>
V w J OJ rt
CO C f H C f H C f H CfH Sa Sa uU Ui, C f H CfH Cf-f
O
Z
u
HH
H
OJ QJ QJ OJ "qj "qj 93 OJ QJ QJ OJ
CO CO CO CO CO CO tn tn CO CO CO
CO
S
o
<TJ
CO
tt
.9*
' i n
O
T>*
OJ
E
d
QJ
•fi
tt
o
tt
ut
Q
tt
d
ed QJ E-h
CO
S3
a
CO
00
rt sn
QJ
tt) tn
d
d
TJ
QJ
Uh
oo
OJ
X) QJ
TJ CO CO CO
In
XI
CJ
Q
O
o
CU
o
CJ
CfH
•aop
CO
T3
OJ
t - i
co
rt
XI
a,
O
HH
CO
QJ
rt
CO
OJ
E
ed
G
-d
Uh
9 3 _ •
1-2U h , c o
OJ
X)
E
OJ
E
Uf
S3
t t ,
3 £
z
HH
rt
ui
s
HH
t - i
c
OJ
TJ
">
QJ
ed
CJ
G
d
Uh
00
tt
G
rt
*j
en
QJ
E
OJ
it
ed
sn
tt.
£ f c
O ' e o
O rt
• d 0
£ *-*
" O f t >
C Q J
. 3 o
In
OJ
N
•° G
fi .2
O t t
' e n r t
H - J
G
OJ
TJ
'S>
2
QJ
CO
tt
c
OJ
•d
V
93
OJ
G
op
'eo
oo
ed
sn
E
rt
Uh
5 1
QJ 13
CJ
C T l
OJ QJ
U h I h
#22 w
O J " o
UL QJ
H-J
c
QJ
TJ
">
OJ
"e3
Uh
cS
" q j
>
£
93
o j d
E 8
Q J G
"S 52r a h h
t o w
CO
o M
E - h c
o 1
E-h
CN
1
Sa
" q j
CO CJ
QJ
XJ
E-h
TJ
QJ
In
Z l i t
> O J
• f i O h
Q O
Sa
" q j
CO
00
O
Uh
CU
r t c
S 2
< s Sa
" q j
co rt
CO
O i2
CQ
ttl
hJ
CO*
oi
CQ
<
cu
oo
ra ARGUMENT MUST CHARACTERS. CONSTANT IN EEDS 10 CHARACTE
;ULTS IN A TRANSFER TO THE LINE.
ti
tt)
CJ
P
Q
§
CO
HH
Ou
O
Oi
ttl
N
>h
03
f c r <
H t t )
*< N
tt)
CQ
E-h
co
S
uj
> Q
H H - 1
ttl CJ
oi OGRAM STATEMENT ASSUMED. BSCRIPTS ON . . . ALUE OF ONE.
Q*
ttl
Oi
o
Z
o
1
>H
OQ
t\
Oh
5
s
NAME IN COMMON A LEVEL
NULL TRANSFER STATEMENT - SFER IGNORED.
CO
en
eu ffi
ft °
t t ? -
* > a
u l H
d fc
O °
fc ttl
ffi CJ
ft X
**>
ttl z
X t t l
ttj
hJ
Ou
Z t-
tt) E-4
o fc
U J w
E-h co
* C O
* t t l
O i *
f c 1
w fc
H Z
Z <
^ H £ _
Qz
C - n . O
fc n>
fc <
O i H
ou oi
r i <
Z c o
c75 s
CO *= j
2 2
D >
o m
z z
co O
22 w
« ^ C O
oi a
f c r *
> u _ } .
fc fc
o i f c
2 H H t t l
rt HH CO E—i
«3S
E-1 CQ CO
E-h
ttl o
fc 2 fc w
ttl
fc rt fc§
f c O
ttl o
fc CJ ei tti
fc rt
fc < tt)
E- fc ol
z
o
zS&g O w
Z
60497800 D B-73
/**^S\
QJ QJ QJ OJ OJ OJ QJ OJ OJ QJ OJ
TJ TJ tn Tl TJ TJ TJ TJ TJ •d T> TJ
OooO O O O oOooo
>>
CQ 00 oo 00 00 00 00 00 oo 00 oo 00 00
TJ .3 .3 .3 .3 .3 .3 .3 .3 .a .a .3
QJ Uh "in UH Uh Uh u h ,
r t U h
Uh •H Uh HI Uh
w
sn
e d i n ed Uf e d i n C O I n e d i n e d i n r t | n r t I n e d U h r t I n r t I n
XI OJ
co rd CU
Gq •fi -2
op rd
s i 9 >
en rd r f i « >
e#S rd ?3 XJ <u
«3 :d S £ •?«s h G O J
«? rd •fi <u
T? TZi X h 9 >
c? id
"H QJ O, QJ Oh o j O . 0 3 O h 0) Oh Q J O h i f c o j f c Q J f Q J O f Q J O h Q J f c
6 w E g a s E E £ E E E E E E £ E £ £ £ £
p t o p t o ; O . d o ; * h o P * o ; - h o f i o - fi o fi o fi o
H c j ft CJ E -h o H o E-h o H o H o E- h o H o H 8 H 8 H 8
G
.2 ed
Uh
0 0
O OJ
CJ
COh G
G
O
tt
Oh'
O
a u
c
3 22
u h £
O J J
" a «
M O J
°1
CJ U h t j O J U h
<ui Si
Ui *j
U h r a AH - J H - J HH
c o r a
d > HH H - J HH
d'^ U h _ , U h C O
OJ OJ O 3 QJ OJ QJ OJ c 2 c o QJ OJ OJ
TJ OJ TJ c ; o "2 TJ TJ •d TJ "2" TJ
2
QJ
ed
"E,
oj
rt
Ut
" o j
CJ G
22 <2
fi QJ
">
cY
C+H
" q j
cY
<4H
" fl J
•Y
Ut
" q j
cY
CfH
" q j
ra
•in
15 22
22 E
fi ra CfH
*0J
">
Sa
" q j
«Y
Sa
OJ
CO CO CJ TJ CO CO CO co C J G CO co CO
TJ*
Q J O J
co
QJ
CJ
d
TJ
ra
.3
1 s
d h
QJ
Uh •52
3TJ
2 *d rt' tt OJ
U H - J
"fi s 'co
H-l
3ra
Ih ra
OJ
cu
u
eo
CJ
Sa
d
,00
CO
9 3 2
T J
d «
h S d
x J C U
r t e o
0 0 e d
O J , £ -
tt
G
OJ
E
OJ
- h >
ed
tt
sn
ed
M
oo
O
Uh
Oh
G
£
x%
o j 5
§ &
•2 ""i
H H C O
o
g _y
OJ
X
QJ
o
d
co
.3
ed
Uh
Uh
OJ
o
" h h
OJ
£ 2 2
Oh
f c r i
Z 2
£ ea
&"§
" d
* -
o .22
Oh3
CO
< .3
HH-
<
.3
TJ
QJ
CO
d
QJ
X)
OJ
*d
>
<Y
Cf-f
" q j
CO
d " fi
c S O
o
=3
8
2 2 m
h r a
ra
55 2
H-l
d
OJ
TJ
'?
cY
HH
* 0 J
CO
HH
d
QJ
TJ
>
QJ
Sa
" q j
00
o .
O t o "
HH
O , G
O OJ
£ E
QJ
O 3
q -a
•a E
ra -#
|'i
! |
TJ
93 _l
f \ h
C J ^
" S
3 uj
H ttl
H
c
OJ
TJ
'£>
cY
Ut
" o j
CO
H-J
G
QJ
T>
. "i>
cY
CfH
" q j
co
tt
G
QJ
"-.
>
OJ
Sa
" q j
CO
Ort
oi 1 Q
. tti
co ttl
ui Oi
ttl
tt,
CO
Z
2
H
Z
<
u
H
§
s
UJ
H
UJ
oi
OJ
00
rt
eo
CO
OJ
2
ISSIBLE ILLEGAL TRANS] IUTSIDE CURRENT DO.
ttl
CO
<
CO
G
tt)
H
O
TEMENT FUNCTION . . L DEFINITION - IGNOR
ttl
N
H-l
Ul
CQ
UJ
S
tti
H .
gg
. °
5 rt
2 h
6 i
HH
1
Oh
O
s
o
Q
hJ
<
HH
>
Ut
tn
§
1
S
ttl
N
*
*
o f c
HH
Uh
tt)
Q
H
S
o
HH
ttl
o i .
f c m l
Ul
CO
CQ
UJ
t-H
•<
Q
ttl
rt
o
z
o
i
tt)
s
UJ
H
<
H
CO<< r A < Q •- : UJ
cog
UJ
UJ fc
h a
Q
* < Q t i
CJ CJ
Oh
ttl §
o
f-1 r *
CO tt,
hJ
ttl
ttl co
H f t
O
kg
tn
O
[ T l Z
Oi
E-h
ttl
E-h
o
u j Z
n e
UJ
u j 9
o
:S
ttl
H
fc k
O
tt)
z
a
Q
ttl
W t t l
tti 5
fc C O
co 52
C O <
HH
UJ
H-l
hJZ
fcw
zZzzzzzzz s s
/*=^5v
B-74 60497800 D
, / ^ r
>«^^\
/*gjS"\
/0i$^H
OJ OJ
T) TJ
O O
EE
>.
OQ 00
£00
.3
UhTJ
OJ C O t n ra In
dx: oj XJ CU
eo o o r d co
CO O J O f QJ Of
H c j CJ
G
.o
p
tt
u
<HH
C
QJ
tt
G
QJ
oTJ 72
o">
QJ
Sa
'?
«Y
Cf-f
CO
CJ " q j
CO
" q j
ft
co
O
Z
o
<
HH
QTJ
OJ
+H
ttl
QOJ
o
ra
Ih
OJ
Os
CJ
QJ
00
OsCO
eO
z5
00 si
HH
rt CO -u>
G
d
QJ*
T>
£HH
2G
QJ
72
'>
OJ
ed
Uh
00
ort
Tt
d
ft Ch, O, cu
" q j
CO OJ
CN*
I
03
^
H-l
OQ
<
H
CO
oi
uj
H
CJ
2
ti
3
S
o
H
HH
OJ £ :
CO
eo
QJ
s
NAME EXCEEDS 7 C
TRUNCATED TO .
rt
OU
<
2
E-
60497800 D B-75
XJ
H
OJ
Uh CO
rt QJ
QJ XJ
Oh tt
Oh
rt tn
<? OJ
tt
CQ
£QJ
S3
eO
•Ui Uh
.3 QJ
XJ
tt
o
CO
oCO
XI OJ
G
eo
OJ
00
rt
CO
QJ
£Uh
QJ
OJ
si 'ed
G
Uh
Ut
O
QJ
HH
.3
QJ
Uh
OOJ
£in
ed
oTJ
OJ >.
cX>
oTJ
CO OJ
Gd
Ora
ed CJ
93
to
UQJ
Uh
QJ ed
I— .3 ed
mUh si
Oa93
Ztn
£at
>,
rt
TJ
©ed
<it XI
tt
t ^ ^ B tt .3
•>.
"g
o
o
z"oj
Uh
a
tt fl)
oE
OJ
Uh
ed
OJ
O.
TJ
O
E
<
Oh
Uh
O
Oh
rt
tt
to
00
d
'n
—1 TJ
QJ Si
tt £*
+J
0. en
OJ Oh
o
•O
ra
en
G
OO
ed
sn
sn
OJ
£
.3
x>
"d
o
uOoo
QJ
ra TJ
<
:d
O.
E
o
J3
"o
.3
ed
cu
Oh
Oh
rt
MB CJ
ura oo
"id QJ
on
LU
Q. OJ
•fi S3
rt
CO
co
QJ
V) ist
ut
3
EC
s
o
CJ
H-l
<
ut
CJ
ttJ
Oh
CO
?
CQ
3
CQ
<
OQ
C
op
CO
*c^v
Oh Oh
£ £
oO
Z u Z u
< TJ
e-s <; tj
e-s
H G fc
9$ ^ «
o x o *
Uh ttl u. uj ^ S e s S v
x>
"rt
GId
tn
TJ
s I
r , U h
£ &
O J r i
t t * t
OO "
G f c
"3 £
2 °
Q J O
O 4>
fc"S
S Q J
ti
s I
< o
CO
" 9 r
so
U h ,
U h T )
OJ CJ
O J «
U h , -
ra CO
*** E
X I e d
Uh
u . 0 0
O O
Uh
£ -Ch
fi «>
o o 5
-a
a> E
.3 o
O J ^ H
#, ^
U h _ h
Q J ^
r d < u
• • 2 I n , — N
O . U h O J
P T J
5 8 2
u o £
rt
z
ed
d
oo
o
TJ
q j Q J
C X J
0 0 t t
93
ed
'S3 fc
i i
is o
_ } f ,
uh XJ
•a* *
f c U H
G q j
o £
o E
a
o j d
u>e d q j
'X "^
O O J
U H O
Q J 0 0
.a u
U h q j
52
o.
q j ' q j
£s
x? 2
d < * -
O c o
c: g
Sa o
T J + 3
OJ
d
^TJ
Z rt
f c O f
co
9 > X J
X I ^
~ Q J
h T - °
2 2 f
£ -fi
o .SP
E
r t » h
o S
^ X J
a 6
o g
+ 3 G
QJ >•*>
O r t
O J + j t t
"fi -fi 3
_ H M - S
a s d
r t ^ 2 . - H
G « O
O
QJ ed
.3 • d c o
JJ rt
U H - & 5
o j d
r d t i
O f °
e O
.3
o
0,
O e d
U h q j
* Z t * t
d e d
O c # o
-a si
w T )
.a *h
oo 5
5 °
O c j
9 tJ
° o
C f H X J
O e d
Q J O J O
rt .fi <
Z £ rt
TJ
TJ
TJ
TJ
TJ
TJ
TJ
O - r t ' - * «
S d U h
rt
d
sOJ
Uh
ECO
ocu
CJ Uh
TJ
S3 •d
O
•—>
Q J j h
X ) U h
g-3
, Q J
^ T \ U h
£ c2
£ o j
x>
& ^
« Q J
t j t j
d r a
o o
o —*
Q J h h
oo t5
Tl -2
-*.
e d > > . .
^ £ T J
!•»> U h q j
S 32 Uh
£ o 3
' i n C f c H C J
O h O O
•r? -d
C O r i
s .2
3
Q J . 3
E
+ j G
o o
O
1 " . 5
I-3 S
° £ o
o
o"
/«®n
2
S
rt
ui
H
OQ
tt)
CO
CO
<
00
o
It
^ i f fi ^ k
B-76 60497800 D
0^\
/ $ P \
/*f*N
CJ
co
CJ
ft
co
O
Z
o
HH
Q
Z
o
co
'a,
£
o
Zu
< tn
g-s
f c
rt «>
O x
tt, uj
< T »
g-S
H c
rt «2
o x
U h t t l
Oh
E
o
CJ
2
t _ " fi
f c
rt .22
O x
Pu tt)
O
z
4z
- H Z
So
* r r ]
CQ
£ c o
£ Z
UJ
S
H-)
CO
^ M ffi £ .
o rt n ^ cj
AT THE BEL UNE NUMBE ARE UNREA( ABLE (DEAD CODE), AND NOT BE PRO
UJ
00
ro
tt)
"ra
G
Otn
cT
O
CJ
HH
CO
o
TJ
C
«CQ
tt)
QJ
o
cQJ
TJ
sn
en
93
CJ
£
In
XJ
CJ
tt
ed
Uh
o
it
rt
In
QJ
c o r t
rt N OO
ra co
CO
OJ
In
aHH
Uh
O
>
o
S3
C
co
In
ed
OJ
00
04 1
"S
.2 £
TJ
C
rt
Oh
CJ
QJ
"FT
QJ
X>
co o U- OJ t - l
QJ
QJ
•it rt
ed rt rt r a - h ra
Uh
OJ
ra rt o
£'o. rG
Ol rt
o00 r d r a
O h °
££ 'Of 'Of 'Sf rt
Oh UJ
OJ
00
OJ
*d
S3 QJ TJ
C
ed
£
«
XJ
CJ
b
o
CJ
CJ
00
CJ
00
rt
CJ
*x OJ
° T J
° C
0 0 e d
CJ
00
00
d
CJ
CJ
00
CJ
00
tt
ed
sn
«
XJ
o.
QJ
TJ
O
£
.3 Uh
£
"o
Uh
eu
TJ
OJ
E
•S -a
.a jg
P o
CJ
•Ut
CJ
'n
E
CJ
o
<*rf
QJ
CO
ed
r*
<N .a 'n
93
c
OJ
00
x>
£
iHH HH Uf QJ
oo ed
CO a. Oh to o.s-/ 'r? OL fc S3 o. rt 93
HCJ CJ Oh ,c O CN Oh O- O O f ed
o o f-H CN CO •^ in en
CN CN CN CN CN CN 93
TJ
O
CJ
CfH
O
c
o
00
o
Uh
Oh
z
HH
ttJ
Q
O
CJ
Q
Oh
E
o
u
Z
< T J
g-s
f c
r t £
O x
tt. uj
d00
O
S
Of QJ
o o TJ
Uh
a
CO
c
CJ
CJ
O
Uh >>
OcG
G
In
OJ TJ
rt
UQJ
In
rt
QJ
In
w
In
d
CJ
CJ
2CO
o•d
rt rt
OJ XJ
>>
it
Uh ttl
OOi In
In
Uh
In
OJ
rt
0U
Uh
o
OJ .-.
*zi >. co TJ
Ui
it
In
o
oo TJ ed
OO
.a rt
co
rt
TJ fl) CJ
ed
QJ CN
II Oh co
d
Uh ed
"Pi fc CJ Oh
tt
aO
Uh
OJ
'Sh S3
ed
O C N
^ 2 " I I
CO
uTJ
G
S3
Ofcfc
tt) CJ Oh £ O
Oi
o
rt
rt
ui
Q
<
O i *
og
rt °5
tt)
rt
HH
u
w w
Q f c
3 H CQ
**£ TJ
§1 CQ
tt.
OT CO
CJ CJ f - H
ttl ttl tt.
60497800 F B-77
0s^\
/•"SSI
OQ
TJ
QJ
d
CO
•4
TJ
O
s
60
• d U h
N C U
•a Tz*
£ O f
f c o
o u
Of
E
o
zCJ
2*d
OJ
Tt
HG
Oi
oQJ
tt
X
tt, UJ
Oh
EOh
E
oO
Zu Zu
<t *d < T J
f c « fc «
Q2 QJ esj
O X O X
ttf ttl tt, tti
Oh
E
0
zu
5tJ
oj
TJ
HG
rt QJ
OX
tt, ttl
' 0 , rd
Ui
E
0
z <->
•< T3 < T>
fc fc
Oi 93
S t t
O X Cd QJ
0 3
Uh ttl Uh UJ
/Jl«l\
d
o
HH
3
p
O
CJ
CO
CJ
HH
H
CO
£
H
Q
Z
o
o
CJ
CJ
ttl
fc
00
CQ
a
3
'o,
£ o
'^ .a
•a
3 M
ttl OhS
OJ
E
rt
CO
0 0 i t
.3 5
W QJ
. 2 h o
f c c o
QJ ^. OJ
0 0 a 0 0
t o 5 r t
0 0 O . c o
C O H H C O
Q J 3 O J
E O S
>.
"ra
co
ed
Uh
00
O
Uh
Of
QJ
XJ
rzi
Ut
£
o
CJ
ed
6b &
5 P *
OJ
S c f c c a t nO Q j Q J o
! n + - » x J £ « j - :
g -i c>- 2 fi «
O C T d O Q J
"'& o 5 8 §•
»-• er c o .fi oj
r t O G c o + 3 c o
TJ
V
y
g f c
£ £
QJ _ > OT
t3 3 o
XJ
3
rt
•fi #-? ^
00
.3
G f c
O
s a
G 0 J C f H
Oh TO
Oh Uh.
r t O
Q J C
C U
2 5
to 22
• h a
r t O h
&22
QJ T3
S
s ft
.3 w
t-s
o o
C J H H
" ^ . - 2 c
w l a 9 3
* H
O c j & >
S x 00
5? ° fi
O Q " H
r t r ? C C J
r t G m
* O h
s- 1 °H H r t n
U h G Q J
9 3 o r a
• f i U o ,
f G
o a
w o o
~ « u .
G « . 2
a T J q j o j
* O * ° i J
2 2 & it
fc g'.a £
< Oh .-a - .
is
T)
00
.3
Oh
o
0.
E
o
u
rt
ui
E-h
Uh
<
Q
ttl
oi
O
z
o
s
2
0
0
rt
cu
H-l rt
H-) 00
HH
zOh
HH
co
00
ttl
Z
Q
Z
tt)
ttl
Q
O
CJ
d
uj
•—j
CQ
o
Uh
Oi
ttl
>
o
>H
Oi
o
s
w
s
CO
OT
o j * d
Uh ^n
rt
1
In
rt
OJ
-QJ
CO
CO
00
c
J3
Uh
S3
t - t
n
tt,
ut
G
ra
XJ ro QJ
Uh H-I
Uh QJ
O
£
OJ
Uh
O
CN
II
Uh
O
Uh
rt
<H
h3
1
QJ
QJ
E
OJ
tt
ed
tt rt *'TJ tt
>, *H nn
CO ri OJ
X)
ed
'+->
ed
OJ
XJ .a
rt
H>
QJ
E
>> HH
ra OJ
QJ
Of
O
CJ
£
CO
CfH
OQJ
HH
rt
tt
O
ed rt
d
0
Uh CO HH
00 CU CO
'Of Uh
Of 4J
rt QJ
E
hdOJ §< X> OJ
Oed Xh Oi rt
CJ CO CO
z
o
tt.
o
fc
ui fc
oi fc
tt,
I
fc
<
S
tt.
uj
oi
D
a
CJ
S^
CO »-H
r t G
it o
C * 9 3
!*§
S E
So OT
C h H
?~
c I
QJ _C
Uh ,.
°.G
G -*-*
O " h h
2 °
+ j * d
U h «
ra qj
O f U h
O U h
I Ch
"go
cu £
-18
ui
H-l
Ut
U t .
S O
t u C J
QJ
O
a
Tt
rt
CO
1—I
•3
TJ
TJ
<
3
t-H
rt
o
uu
Q
tti
rt ^
ut
O tn
ao
ttJ ttl
*8
S X
CJ t tl
/!^u
#^^\
J^^^k
B-78 60497800 H
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 THE NEXT STATEMENT CANNOT BE EXECUTED.
A=A+1.
3 0 S T O P
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 THE NEXT STATEMENT CANNOT BE EXECUTED, BECAUSE
C ITS LABEL DOES NOT APPEAR IN TH E GO-TO TRANSFER
C L I S T .
60 A=A+1.
4 0 S T O P
5 0 S T O P
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
CQ
Oh
6
o
TJ
$
^
Oi QJ
O x
ttf ttl
x i
+ 3 O
00 -r*
sl
^ O f
£ S
Q J O
( - J C J
99 22
Q J U H
U h . O
O,
s
o
zU
•< TJ
rt OJ
Tl
HG
oi OJ
oX
ttf ttl
XI
00
Grt
£'o.
tn
OJ
C f H CJ
OJ
OJ Uh
00
ed OJ
OJ
Uh ,o
Oh
S
o
U
2
•". fi
Oi 9 3
O x
ttf ttl
a
o.
6
o
Zu
TJ
OJ
Oi 9 3
O x
tt. ttl
2
Oh
6
o
z(J
2TJ
OJ
HG
rt OJ
oX
tt. ttl
° G
U h ( O
£ '*t
" O J O f
i s o
O j Q J
v t o o
n j r t
QJ 22 J
3 S S>
c j » S
x J
i t . o
£ T~Z
ed oj
9 3 r t
U h . O
•d
y
o
O O J
H H H H
rt
_ H P
r t e o
G J e u
> G
ed 3
•fi .a
H "H
00 On
G 53
JJ tt
£ .
- Q J O h
a s
8 8
C/5 G
oj *d
G Q J
O O h
* H C O
U h " h
8 o
0 0 I I
OJ #!>
o r t
£ -fi
6 a
O J t j1
v t a j
o o C
r t t n
— H > » O J
S o "
« fi SS
<o op
a a
O o o
CfH
00 O
zz1 -, oo
U h H H H H
£ 'Si g
2 5
£ 3 8
. 5 2 U h
C m O
fi S S
6 0
XJ
00
W
V - O
at oi d
8 rt °
>>*
Uh
O
5 o
O
rO —Z!
X <
oo
.a
.a
s
HH
Of
o
rt
Oh
rt
6
OJ
XJ
tt
QJ
X)
HH
OJ CfH
Xo
oOJ
Uh
Oh
Oh
ed
93
XJ
IH
XI
a
Uh
QJ
XJ
fi.
QJ
rt
s
OJ
dXI
G00
CJ o
G O «
2 22 £ tj
^ « Q " H
OJ
X I M
^ J r t
O O J
"S
QJ 2
t t 9 3
Z Q J00
tt. g
,CJ
rt
G
O
TJ
Tl rt
rt
J-H
o
CJ .22, o
- ^ **
• f i O u
0 0 W
3 X O
O U H T t
d
O J . S ' s n
t * £ £
Z o >
h 2 n
S £.-,;§
q j r t + - > n d
• 3 O . - d
fi d ^
G fi _ _ .
o j O " s
o o o o j
oo
G
.22 G
tj 2 •!:-1
d G 5 2
£ u i o
3 2 «
- 9 U h C - J
U Q J X J
h 3 O h
G°g
CJ
tn
S
o
t
o
G
0, d fc
93 £
o «2
§ .§> o
Uh o o U H
q j c o r t
C h r t
£ i > >
QJ Xi
oo sd d
C O h O
o -fi
ca o *d
o j c
• G Q J
•«-* XJ
oo it
£* Xf
2
Q J o
S r ,Q J - H
00 g
•H ,V
.2 °
C|H
r - i «
T ) «
Q J o
" ^
O J M
o j O
< H U H
• H I H
X J "
oj E-h o
OJ
QJ
d U
r t G
2 o
0 0 .
fc<g
s 6
Q oo
OJ Oh
S T ) o o
fl l " H
QJ TJ
Oh
fc g .52
13 qj ro
G t t i
I £ S
- I H O .
tj s v
T J O " j
r t C J h h
h2 3
C O C U
QJ QJ
ttJ
Q
O
cj
Q
<
tt)
Q
OJ
oo
rt
CO
CO
oj E,
O. O J
6 a
o > ,
c j r t
TJ
>,
X-
X)
•5
x>rt
HH S3
3
QJ
X
Ui
QJ
ttl
O T )
CJ OJ
-m 'S
c j r t
QJ Cm
O O
o 8
Z <
S -
r t q j
Sb o
o ^2
a qj
O h o o
3
CQ
<
H
fc $t
Oat
CQ >*
CQ
00 H-l
Httf
rt ttl
C) iva
c#o -<
gS
<
CJ HH
<!
tt,
I
s
tt.
rt
tti
>
o
it:
oi
o
#
#
in
rt
t5
s
ttf (J
Oi
Ul
>HH
oG
G
>*
rt
ottl
Sg
m_1
Sttl
CN
53
oi
o
o
Oh C/3
ttl
zUt
at
a>
rt CQ
tti ul
HUt
tt. ttl
tn
C/i
ttl
U
ZCJ
tti
rt Tt
tti
tt. c^
tti
oi
ttl
X
H
H
<
HH
z
z
HH
o
ttl
U t f t
ttl
Q
O
cj
Q
<
tti
00
oo
ttl
o
Q f c
tti
ttl CQ
ttl
s
ttl
H fc
C O C Q
O.
o
zCJ
2TJ
OJ
n
HG
rt QJ
oX
tt. ttl
G
O
ut
II
r ^ l sd
CJ f J
H-l Uf
£> OJ
td
O.
QJ
o,
c#o CJ
s
H
G
.2
'tt
d
CJ
QJ
X X.
Q J T J
Uh
O
15
QJ
XI
-fi 2
QJ
'3
Q J C O
fc V,
sn 93
OJ
Q J C J
S 3 X
=3 •f-
2 •-,
d o o
G
ut O J
II '
h J «
Q f c
« i \ t
tti !=;
ui ^d^ r t
ttn
B-80 60497800 F
0^*
/*$^**»
Example:
PROGRAM FXERR 74/74 OPT=l
PROGRAM EXEPR(INPUTOUTPUT)
N=<5
GO TO <1,2»3)»N
1N=N*1
?N=N*2
3STOP
ENO
* CARD N*. SEVERITY OETAILS DIAGNOSIS OF PROBLEM
3 1 A N I F S T A T E M E N T M A Y B E M O R E E F F I C I E N T
* T m A N A 2 O R 1 B R A N C H C O M P U T E D G O T O
STATEMENT.
N ERROR IN COMPUTFD GOTO STATFMENT- INDEX VALUE INVALID
ERROR NUMRFR 1 DETECTED BY GOTOFR= AT ADDRESS 000004
^ CALLED FROM EXERR AT LINE 3
In the list of execution diagnostics shown in table B-5, the letters under class are interpreted as follows:
F = Fatal D = Debug (diagnostic issued only in debug mode)
I = Informative, non-fatal T = Trace (diagnostic issued only in trace mode)
A = Always (diagnostic always issued)
rx The severity level (fatal or non-fatal) of any error except for erroneous data input from a connected
file can be changed by a call to SYSTEMC (section 8).
s\ In the messages, X and Y are real numbers, D is a double precision number, I is an integer, and Z is a
complex number.
NOTE
For some execution time errors, only a dayfile message of
FTN — FATAL ERRORn is issued; n contains a meaning
less value such as zero. This type of error usually indicates
an erroneous branch into the FORTRAN library routines.
For example, a missing END card on an intermixed
COMPASS subprogram could cause this type of error.
60497800 E B-81
PQ 00
O
•d
QJ
CO
<
dII V H < -Hn/
00
oo tti
II
zII
zCN
oc#o C.0 CO
Ho o Oo< < CQ
oCJ h-1 H-l CJ
O<<<<
C
c
OJ
tj
.9 '> H— -J— • u - H- -*h— H—
CJ .V
<cLL
QJ
tn
C/I
CJ CO
In
f- c— QJ
CU
CJ O °
v_#
Zrt r — O J
o
<CJ y -° -1— -1— H— -5-i— !H—
az * 1 -1•i— -r— •I— H— H— H—
cGQJ
-H sp oj
z
o
In Is OJ
ed
fH
CO
H
3
<J
UJ
X
UJ
**? uj
i
CO uj
UJ
-1
CQ
<00
H
OJ
00 oi
oo
oo ° O f c f c ttJ ttl UJ ttJ ttl ttl K f c
OJ fc 3
fc 2
3 ~ t t l H
SSfcS
Sz-SS
t t l H E-H i-t
s
> fi; tt.
i-H W
m fc °
u ~ t f - H f t
O < z §
^gfc 5
> z
S fc
PU
UJ
Q
tt!
ttl
Q& fc
I—<
z
Q
-HH « 5
^ H 5
fc S tt.
o s fc
2 tt. Q
o w
CJ P Sss £§§£ f c *r ttl hjr
> 2 Sss
hJ zzz f-1 fc fc f-1'
z z z z H H H H
z z z z z z g g ^ f c H
ZZZ
~ > w uj tti ttl ttl ttl ttl ttl ttl ttl ttJ ttJ ttl ttJ ttJ ttl ttl ttl ttl ttl ttl
rt s <-
9 w
oi S
s 11 § § !§ § B D § H § B B B i Is
q q q oooo OOOO ooo ooo ooo
rt g rt rt rt rt rt rt rt rt rt rt rt rt rt oi oi oi oi rt oi oi oi
ni a < < < < < < < < < < < <: < < < <; < < <
CO
CO
rt
<«,
0ttn ut -4 Hh
o-H CN ro d- in MD r- oo
z
oo
d
oo
"I
d
.o
'co
->
TJ
£ 2
•.
G
TJ
C
ed
Uh rt
S3
O
OJ Ui
Oh
o93
N
1CO 00
rt
00
QJ TJ
>
HH
In TJ T)
oTJ
ed ^>
TJ X>
QJ
G
QJ >, QJ
TJ S3 Uf
d
dUh
O
OJ
c
OJ
m00
c2 In >.
-~ ed
Od
QJ >.
I n < U
t J U h
OJ
TJ
d
N
i ^ ^
d
o
C O J
« £
oo 5
•S
-d £
> d
-3 o
CO
>> rt
,j*388\
/^^k
Uh
«g(N
o j r o / t ^ & \
'U G O
O J T — ,
G00
Ch
OJ 9 > c d
TJ -° -G
G
dc
O Q J
.j^Ssv
c2 oo S?
^j . d 0 0
o
QJ
OInfin was
>s^>
-I••—
•h-
/H*»^k
B-82 60497800 D
jifpSN
/jp^V
CQ
oo
O
U
CJ ttl
cj
oo
O
u
II
co
O
CJ
zoo
o
ttl ul
rt
tti
o o
z z
tti fc
es uj LARGE LARGE OF RA OF RA
f c c z 9 °
22 BB
ERO EGA' [ENT UME
H ttJ H ttJ o o H t t l
z 2
tti 5 ui 5 fc CO
ttJ
z s
ttl 5
n z -_h q
, O oi ss fc rt (REA (IMAI
£ o
fc oi
ttl ttl o <
X rC Oi n< 0 , a , 9 <
t*>H 9 <
rt
0 TO T 0 TO T NITE A EFINITE NITE A EFINITE (REAL (IMAG
INFINITE Al INDEFINITE
UMENT UMENT
rt
<
o
< t t l
H
ttl 5
f-H a
z fc
tt. Q
z z
u t u t
ZER ZER INFI INDl INFI INDl
CO CO
PQ OQ
< <
o o
oi oi
< <
rt
w
N
co
O
rl
u
<C
rt
D
CJ
CJ
<
^ f c
S fc
-5 fc z
^ h a
fc 5; tt.
^ a fc
S fc Q
g z z
fc fc ^",
z z z
www
lis
000
rt rt rt
< < <
u j w
q o
r t 0 *
E-
Z
ttl
s
O
Oi
<
Ui
H
Z
uZ
tti
Q
Z
hJ
o
o
E-h
HH1
<
ttJ
rt
CO 00
CQ 03
< <
Oi
a
tn
cj
H
Z
UJ
I
O
Oi
<
ttJ
E-h
ttJ
s
o
oi
<
ttl
H
tt.
UJ
Q
Z
' 0 0
">
d
E
QJ
N
TJ >.
C
w0
S3
In r>
QJ •—
O^QJ
_CO en
rt
00
QJ TJ
>
!— TJ TJ
OTJ
rt «>.
•d -O
OJ
rt rt d
OJ
TJ S3
3_r
13
•_ Cfj
,0 >.
OJ
^N
0
0J >> co
CJ S3 "?
._
•d QJ rt
0J —T\
rt 0)
3
CJ CT
rt
OU-
OJ TJ
CO r—
•rt
d
OJ QJ
fc"
3rt
00 00
In
rt •d OJ
CfH -^
. ~ TJ
C
0J SX rt
br
dtn
00 QJ
tJrs
ed 2<M
TJ
OJ
o j r o
C 0
QJ
d00
0t rt
0J OJ
TJ S3
d
dG
rt
Uh CJ QJ
cS
nn
00
OJ QJ
Uh
on
OC
QJ
Gat 00
CJ l*
60497800 F B-83
>* PN
/^%l
x3$v
Q
E-
Z
o
B
CO
u
HH
H
CO
O
Z
o
<
z
o
<J
s
ttJ
in
CO
a
CQ
<
>>
CQ <—> /—\ /—\
X Q ,—>,
TJ
QJ
oo
HH
CN
z
X< < ut
oHHO O
E-h <:
Q Q Q
d
o
HH -*— +- - j — H— ••— H—
CJ
<
OJ
CJ
d
ed
o4— -c•j— +- -i— •J—
Cm -t -t— -s-tH— -S—
G
op
00
Oi
ttl
=5
WER SfTIATION
rt
UJ
oi £
g2 rt
UJ
=5
82
r - l O i
# <
Q U J t t l r H
OJ
oi P ttl
Sfc z *23 *2
U l ^
oo
ed
sn
sn
OJ
s
OVERFLOW HE ZERO POW HE NEGATIVE BASE IN EXPO RGUMENT ; ARGUMENT
ttl
H
~ H H
z fc
e uj
tt. Q
z z
H H H H VECTOR 0,0 INFINITE INDEFINITE OVERFLOW HE ZERO POW HE NEGATIVE TO THE DOUB RGUMENT ARGUMENT HE ZERO POW HE NEGATIVE RGUMENT ARGUMENT OVERFLOW IN HE ZERO OR : ro THE COMP] G(D) TOO LAR RGUMENT ARGUMENT
i - t M h ? - ttj H H fc H H E - h H n a - t t l H H h< tt l H Q < t t l
O _ t t l z z ZZZ O _ _ ttl ^ E-h ^ H C O U h ! ^ h
FLOATIN ZERO TC ZERO TC NEGATIV INFINITE
H-l
z
tt.
ttl
ttl ttl
Oi Oh ARGUMEi ARGUME] ARGUME] FLOATIN ZERO TO ZERO TO NEGATIV INFINITE INDEFINI ZERO TO ZERO TO INFINITE INDEFINI FLOATINi ZERO TO NEGATIV IMAG(Z)* INFINITE INDEFINI'
co
CO
rt «,
0ut HH
QVO r^ 00 ON
znH CN <N
•d
a
G
O
QJ
G ~ N
O > ,
'tt si
o
U h f O
Q J h h U h
O h ~ ~
O
TJ
d
" o o
.S
oo
QJ TJ
>
tt
Uh TJ TJ
oTJ
rt r*~l
T) S3
OJ
eg
OJ
ed TJ
>> QJ
tt
TJ X) Uh
dOJ
dUh
OOJ
UH 00
£O
Uh >.
MNed
od
OJ
si
CJ S3
CO
d
tj" Uh
OJ
S3
OJ
Uh
ed
HH
rt c'
d
sn
OJ
HH
d
CJ
rt at
oUh
OJ TJ
CO
r- rt
o
dG,
OJ OJ
eed
d
00 OO
In
rt TJ OJ
CfH
. ^ TJ
•W
G
OJ
s
d
>.
S3
•O
rt
tn .s
00 93
Uh tJCN
rt 2cn
TJ
QJ
G
QJC**j
c o
QJ
OO
C, rt
r*
QJ QJ
TJ S3
CHH
dc
nm
QJ
rt
•-H
OJ
tt Uh
on
oG
OJ
si
Uat CO
«
B-84 60497800 F
/$?&£\
/sps\
/S^N
c#o ftO
CJ hJ t!
QQ Q aEo
rt
a
00
Q Q Q
E-
oo
3
>-
O
<
Oi
D
CJ
o
<
ttf
o
fc ttJ
°§
go^ rt
ttl W 5?
^ : ^ ^ h h
5 z fc
to ~ w
rt £°
ttl
o
rt
3
O
O
i-t
H
z
UJ ttl ttl
uj
E-h
Z
--
tt)
Q
Z
E-h
Z
OOO
rt rt rt
< < <
i-t
z
w
fc 9
s J
O u i
<%
oi q
fc £
N Z
f-H
z
Httl
z S
ttl
s
fc rt
o<
rt
<f
ttl
zttJ
tt. fc
zZ
ttl
H B
§ o
s *
o<
o w
d o
fc fc.
N Z
ttl
Z S
tti HH
Bo
rt
o <c
rt
<r ttl
H
w
Hz
zttf
UJ
tt, fc
z z
CO
H
CQ
VhO
o\
co O
Q Oi
Ul ttl
ttl N
CJ E-h
Z
ttJ
rt
t t l 5
q o
~ Q
f c Z
ttl
o
rt
<
tti
H
co
O
hJ
>-
o
D
o
u
<
ttl"
o
rt
3
O
o
E-
fc <
Z
ttl w
ii
< a
ttJ
o
rt
<
U-i
H
z
Bu
ttj
Q
Z
ttJ
s
H^
o
oi
<
i
<
O
ttJ
z
rt
<
ttJ
H
E-
Z
ttJ
s
O
rt
<
tti
H
tt,
ttl
Q
Z
CO
CN CN tn
CN (N 00
CN CN
UJ
d
">
y
S
tt,
oi
UJ
>
O
o
z
H
<
o
hJ
Uh
3 f c
^ fc z
< h a
fc 5 tt.
S fc Q
P z z
e-h a a
TJ
C
3
fc H H
ZZZ
ttl ttl ttl
HH HH D
OOO
rt rt rt
< < <
o
00
E
3
00
TJ
c
d
hG
cj
_o
"co
'>
TJ
c
2 >»
it S3
CJ
r t o
Q J I t
93
SI
3 "
" 0 0
- c
~ .G
-3 *d
r t h S
X>
c
r t T J
J3
O O J
00
2 >
( U _
N r t
3
>, 2
OJ
S3
E
3
C
QJ "G
N C
C " "
o
c
00 >
c
'B 3
> d
T J O
co
T> -S
OJ
2<N
QjC.
d o
Q J - H
00
« > d
Q J 9 3
•d oo
c
« «
60497800 D B-85
,^8!\
>>
CQ #—\ /•~s
z
TJ
QJ
d
CO
00
i—»
o
HH
o#>
o
00
II
CO
O
CJ
Z
00
ttl
H
00
ttl
H
CO
4-idHH
G
OJ OJ
CTJ T)
O
-i— -H-- •I— H— '>
<CfH
*QJ
00
CfH
*QJ
CO
/—-\ OJ QJ
Q
H
oo
Uh
00
G
rt
Uh
Z
O
O
QJ
CJ
C
eo •H HH
G t t
• t o
H H G
d t t
• t O
t t G
00
CJ
id OJ OJ C " §2
CJ
op
TJ
'> •i— -1
•i—
- J —
•*— TJ
'> rH
9 3 . S . O J S3§"S
E-h
CO CO OJ •2 "^ S)
E ,vr c e &
E .vr c
O
Z
O
<
nd
CO " o j
CO
a vo rt
5 1 -G
A , t t c j
a vo «
£ i l g
Z h C J
Q
z
oH
CO
CJ
ttl #>
Xoi
ttl rt tti
rt £ rt rt rt
UJ w o UJ uj uj
"? ES: ou. ^H rt
UJ
OQ
s
rt
uj
03
1
CQ
QJ U J ^ gsa tf 2
t t j ^ £22
UJ
H-l
CQ
<
E-h
00 £ fc S t W f c
E ZERO POW E NEGATIVE GUMENT ARGUMENT \RGUMENT ARGUMENT
S f c t t l h J •>
CO
00
QJ
2
o>
fcp
S<*P
gNZ ERFLOW ZERO PO NEGATIV THE DOL UMENT RGUMENT ERFLOW ZERO PO NEGATIV THE REA UMENT RGUMENT rOO LARGI [NFINITE [NDEFINITE
Ul
H
ttl
ttJ
H
a
tti
ttl ttl ttl >MWOO< > ttl UJ o O < CO
CO
CO
Z
tt)
CO
> H H f fi O X X E-h Oi .Tl X X Oi .., " sfc O X X H Oi rT,
OHH oHHw«£
0 TO T 0 TO T NITE A EFINITE RFLOW •ERFJjO1
0HHttl«£ ssg
r t Q O
ATIN 0 TO 0 TO ATIV NITE SFINI
FLOATIN ZERO TO ZERO TO NEGATIV INFINITE INDEFINI
ttl ttl UJ H-l
INTEGE ZERO T ZERO T
<:
o
FLO ZER ZER NEG INFI INDl ZER ZER INFI INDl OVE UNE
999
rt rt rt H-l
HH
ft
CO
co
eo
CJ ut ut ut ut HH HH HH
O* co "d- tn VO P- oo
Zco CO CO CO CO co co
co
>
TJ
Uh
o
G
O
ed
CJ
Cu
HH
d
EIn
OJ
N
c
TJ >,
C
ed CJ
ed
93 it
U,
OS3
d
93
,_, CO 00
ed
00
QJ TJ
">
-HI
Uf Tt TJ
OTJ >.
ed
TJ -£J
OJ
Grt TJ
CJ
QJ >> OJ
TJ hO Ih
cOJ
dM
OG
OJ
Uh OO
c2 Uh >.
nNed
CJ
QJ
•s S3
00
d
tj"
OJ
rt
Uh
QJ
S3
£
d
OJ
Uh
ed
en
OJ
HH
dc
0%
CJ
rt
OJ tn
co
'rt
tt
c
OJ OJ
6ed
3to
oo 00
Uh
rt .a
TJ OJ
Ut t>
^TJ
G
OJ
6
d
JO
J3
rt
TJ
00 QJ
Uh _.<N
rt 2<N
•d
QJ
ojco
cO
OJ
.a OG
cG
OJ
dOJ
S3
G
d G
ed Uh
oOJ
c2
.in
CO
QJ
•w
ed
QJ
o
J, i — i
CO
rt
/Os(*>^\
/ T ^ V
j^^V
B-86 60497800 H
#<lfp>>
/***\
OQ
Oi
a
tn oo
co
ac
z
<
H
ff
X
o
fc
CJ
o
Z
•d
'#>
Inn
Cf-f
"qj
CO
6 0 4 h
G o j
2 E
2 c
G >-
d
Q J O J
X * - O
a . r . t t
5 vo „_,
Z -I «
j«hi •—f CO
UJ
H
HH
z
tt,
ttl
Q
Z
£ z S
U l U l t t l
OOO
rt rt rt
< <: <
rt
uj
CQ
s
z
HH
(J
H
CO
ttJ
CO
§
CO
ml
<
o
3
ul
O
H-l
f c n n
rt
UJ
o
a.
UJ
H-l
oi
UJ
^O
N O h
£g
u, O
q tti
ttl ju
Z h
ttj
ttl
>
o
o
z
H
3
a a a a t t , n
o ^
rt q
fc H3
n z
" " ' U M > 7
HH tn J*'
o
rt
<
ui
H
fc 5
rt
ttj
*2
t t j ^
o >
Oh —'
^ H
oi q
ttj
z
>
o
o
z
ttl ttl
ac ac
H H
SS
HH
<
q
H-l UJ tt)
t t . N N
O
rt
oi
ui
sfc
O
Ou
hJ
<
UJ
rt
w
ac
H
o
H
tt)
>
ttl
ttl
s
9
rt
tti
H
ttl ttl
< fc
P x
tti
UJ
Z
rt
o
f c u i
oi K
hJ
Oh
S
o
oi uj" ac
uj
o
oi
3
O
o
H
i w 7 / h > - • - -
t - H f - H < * H H H f - H H H
ttl
>
o
o
z
z fc
a tti
tt. Q
z z
UJ
H
o <
ori q
fc S
N) z
* ^ t t j
N f c
9 5 fc
^ fe ~
s z
Uh
CN
•t VO
si
it
G
O
'vi
'g
tn
3
EIn
OJ
,,
c
tn
c
rt
.o
o
rt
X)
O
Ui
oSi
3
93
N
, ( oo 00
ed .y
£
00
QJ
In -d TJ
O
TJ
TJ
«S3
QJ
£rt tn
93
OJ >. ed
TJ
d
3Uh
Uh
QJ
c
OJ
QJ >,
oXQJ
Uh
TJ OJ
Xrt
•n c' 00
OJ
3
d
oCG
ed at
CJ OJ TJ
NG
C1 '
T-
c
0J oj
Ert
d
00 00 rt
>
In
rt OJ
d
C f n
. > Tt
c>, rt
EX
G
dTJ
00 *N
rt
QJ
rN
ro
TJ
C00
c:
QJ QJ ed
dsi
Git
3c
In QJ
,o rt
en
0J
,-i *z\ ot
CJ
XJ
r ^
CfH
Crt
60497800 F B-87
/|fWN
>,
OQ
O
u
Nn.•
00
CJ
HH
H
co
O
Z
o
z
o
CJ
ttl
I
CQ
UJ
ul
OQ
op
oo
QJ
s
3
o
o
Z
Sn^
N
O
5<
Oi
Oi
Ui
Z
H
tt.
Q J C
SfS-giS
t5t3 s g;
£ 2-uh E
fc: E o
oot:
CJ CJ QJ
II
z
HH
s
-<
z
I
ttl
<3 -*
Z f c m
•SJ3
< - > H - f
S 0u-1t1
oi
tn
>
o
H H O C ^
O h-5 cj
» 1 )
D L D h c
o o r t . d
£ E g
co
d d
Q J Q J
T J T J
y y
t n t n
en
>*
m
oi
O
tt.
OO
•5^
oo
G <=!
•d a oj
G 2*^
QJ cJOTJ
X I n 0 J V H | _ . # n r S t t
uj utot o o.£c2rt
?-d E^Q
Q m UJ Z
oo
Tt
CO
'd
[ H C O
Uh to
d oj
TJ CJ
o
OJ O f
°ttl
wZ
00
d
d
TJ
O tJ
it to
ui £
<d
T>
QJ
G
Q Q
^ZfcrtP
g°8o«
sisSfc
£NHxH
>WO ><
oacH55rt
ZO>* ttJ
qrtp^E
fcfcttJSZ
tt.NZea
tt.
ort
ui
5S §
. O J
O U J
s s*S
m m~
H H .£
co co.2
> H > * £
tn tn ^
U h U h " " *
O O T J
h h »
"5! HH
<5 co
Ul'Si
S S
cofc
a
H
co
CO
HQWPS
<uih§ w
Zw H.-3S
S .S ed
+> - m X
d d + 3
° ° U h
tt. O S O
O Z u
CO
ed
x
d St* .
"•-hCN
. 2 c o ^
Uh X 2
g C U h
22 d QJ
S3
^ G c u
. C E
X U h g
O o
H H j n O
$ttlx
ttl
g
ttl
s
o
co
rt
o
tt.
ul
Ut
X
8
o
z
ttl
H
o
z
CN CO
SO E
Q
tt.
<<
u.
< <
f t U t u. Uh
oo On
•-r f - H C N
i n « n
CO
X!
1$
G
O
'co
'S
Tt
CJ
TJ* >,
d
rt
Uh
HH
CJ
ed
QJ
Oh
O
t - >
S3
d
Uh
QJ
N
_^ oo 00
rt
00
OJ g"
oTJ
"g
rd tt
Uh TJ TJ
oTJ
ed r*s
TJ
OJ
OJ
rt *d
>> QJ
tt
(Tl
TJ UH
GOJ
dUh
oOJ
Uh oo
ao
Uh
OJ _->
:=!
•HH ed
CJ
OJ
•8
T>"
QJ
tt
ed
Uh
QJ
t
d
QJ
Uh
ed
sn
9)
d
CJ
d
no
Uh
ta
QJ
OJ Tt
en
"*
tt
C
QJ o>
Ert
ded
oo 00
UH .a1
TJ
CO QJ
Ut ;g
. fS TJ
G
OJ
s
d
>>
X
-d .S
00 QJ
u7 _J<N
ed 2CN
TJ
OJ
G
Q J C O
Go
QJ
00
«
•n.
OJ OJ
Tt
G
drt Uh
CJ QJ
cS 00
OJ
tt
rt
QJ
Uh
00
o
QJ
X
r i
oo
«
>
/*^s
/ ^ B j \
/SS*i
B-88 60497800 H
0$£\
0 S \
oa
o
o
tn
cj
ut
H
co
O
Z
o
<
z
o
o
UJ
X
UJ
«n
i
CQ
UJ
H-l
3
/ ^ k >
co
rt
o
-8
II
z
b
D
CQ
HH
B
OQ
II
O
HH
ttj
CQ
II
o
ut
Uh tt.
S3
OQ OQ
:*
CO
oi
O
tt.
Uh
H
ttJ
o
II
OQ
I I H H
a z
E
rt
Uh
OO
o
X o O f
"d oo h h
C Q u
' j * - d B £
o j r t a o o
TJ
2
CfH
TJ
2
3
TJ
•15
Cf-H
TJ
'J?
CO
tt.
OQ
o ta
T i ^
d u
eo ul
C J H H
ta tt.
TJ
'S
y
o 2
£ o
t a j ?
G o
' S £ o
rt 8 £
- I
o g
r r t W >
d O
ta j=:^ D f
"2 «-
G c j
'5 £ o
S S 5b
rt 8 o
Tt at
u, (2.
E 9
H T J
< . Q J
ttl
<
z
a
ut
Ut
ti
Ul
on
Ul
o
cj
z
UJ
a
HH
tt.
tt.
9
uj
tt.
v i e
O l U h
T O - H C
O d , g
is
o e s
^ r t a ^ .
Tt «> *g 1 «
q j J h a r Z >
U , h h O G o j
C 2 H H > C ~
C ( H C O Q >
3 5 * - O J c
a 2 s c o o o c
"J i TJ TJ qj
C h2 G TJ X
— I e o e d r t h 3
*d
2™
O o j
if 83
5 33
C O f e
C O " ^
•i-H CO
rt t t l
T J _ )
Uh
O Q J
£ -O en*
t t t 9 3
«» S3 t3
.- 2 2
a |2
fc ~ o
t j w r t
Q J t t . O h
a irj
O f z
O, co r
J h 7 f- * H
CO So Uh
•sss
2 . 2 r Q
Of
o
cj
HH
Sc
H
CO
fdgTj JS fl£n c
U h G r t P O H « . a
S*d
r t U h
G «
£ o
d q j
Uh T3
2 £
T t t a
fccJL
So
h h » r t
HJ. fH
"5
z
a
H-1
Uh CO
3
ttl
co
Z
*<
rt cu
r*
tt)
Q
tt) <c
£ >• i t >
3*5 f c
fc id o
o ?< u j
t t . r< f c
CO
tt)
ttl
[i rt
OQ
Z
o
HH
z
9
UJ
Q
rt
ttl
Uh
Uh
OQ
Ut
OQ
Z
o
HH
CJ
HH
Uh
I—i
u
Ul
fc
co
rt
uj
Uh
tt.
OQ
tt)
OO
o
H
<
H
co
Q
tt)
H
<
(J
hJ
<
CO
Q
tti
tti
O
X
ttl
CO
ttf
OQ
rt
cj
tti
Q
H
§
tti
a
ut
Ut
< <
tt. tt.
VO r~
in en
*<
Uh Uh LU
00 o\
in »n VO
ttn Urn
VO CO
VO
ed
Oh
TJ
rt
h h t a
o, y
E o
«> J.
t t f r j
- H J a
< s
QQ
Ul ttl
rt rt
tti tti
H H
§§
O x*
^ X CJ
Z 8
ttj a ttJ
bj 8 tt)
fc T H-l
lC w
^1
HH
Uh
9
§a
u tt. uj
Uh
m
VO
60497800 F B-89
CO
cj
ut
H
CO
O
Z
o
<
z
o
UJ
in
I
CQ
a
CQ
<
H
OQ
G
op
CO
s
rt
O
O
Z
UJ
z
o H
2- co
* 3 V M
ul T)
d
TJ
UJ
Uh
Of
H
CO
ut
fc
UJ
s
$
ttl
Q
O
cj
ttl
Q
TJ
'J>
8! %
tt. tt.
II
Cm
<
H
S
Uh
d G c
QJ QJ OJ
TJ TJ •d
>i>
¥ V
CfH C|H ta
QJ QJ QJ
CO 00 00
QJ HH
* t 2 -
o E § co"
I UH
« * ^ u - ^
Q J O f _ l « « S
U L S / - , Q J l — 1 U h O
R J g O - 2 * . f y J , r - t - T j
o i t i t
oo g q
O Oh Oh oo S
O,
O
Uh
Oh
Oh
ed
II
Oh
H
a
Uh
G G
Q J Q J
Tt TJ,
'? ">
Oh
<
tt.
QJ £,
^ ^ u « u r j
( H < H U t U
tn f c x
CJ £
H
o
tt.
£ « 2 *
0 h O a Q J
Z r t
og
UJ
uJ
ul
<
Z
o
HH
H
«J
8
CJ
HH
H
co
tt)
Z
CO
HH
co
tt)
DC
ttl
oi
£
oi
uj
Ch
O
Oi
ttl
N
ut
tn
O
CJ
ui
rt
Q
ttl
Q
ttl
ttl
X
ttl
< < <C < <t <t <
t t f t t f U h t t f t t f t t f t t f
VO
VO *>
VO
«,
Ut ttf ttf tt.
oo
VO VO
00
O G
G
X O h
T J C
G 93
o E
J J r t
U h T i
*nJ QJ
U h t a ^
f H O J
£ fc 5
t — ' 0 0 t t
o
rt
ui
N
DC
H
Q
cfc
Q r t
fc o
ttl tt.
Uh UJ
HH
H-)
<
Ut
ut
u
ttJ
Ok
tn cq
* #
<
Ut Ut tt.
CN
cj oo
G
ttl QJ
ul
Ut Tl
Uh
o
93 CJ
XQJ
G
ad
y ^ \
xi^v
G
QJ Q3
#*"5*\
S -5
Q J * ^
t O 9 3
e n e d
93 /S^\
i
O o
O e
r t H H
O h d
X
QJ
X o j
+ - > C O
ed
G «
O C J '
s^tys.
QJ
t i * d
OJ
t a d
•rt rt
Q J °
,<^K
Oh hh
0/5 G
■■ 1
t - i e d
& In
. > S 5 \
S nn
*--' o
_ i U H
X f
+ H G
op 5 /^^\
G o
OJ
"" U J
- d u l
° tt,
C J w
2 O J
/ ^ S K
X
E ~
j*^-\
2 -^
E ..
•d
OJ QJ
X o o
T S 3 #^S*V
U t I n .
u t r z i
S&$\
B-90 60497800 D
/*$^\
i-t
Z
o
CJ
co
U
H
co
O
Z
o
<
>.
CQ
II
o
o
z
II
H
O
<
z
UJ
Q
O
u
Z
ttJ
II ii
oa CQ
Ou OU
Zz
II
CQ
Cu
z
II
u
Oh
z
3
o.
_c
X
tu
a,
c
X
c c
o 5 j
h J E
OZ £ 0 0 ^ c o
c g q j
2 r t
c j 2 : c j
Q 3 * T T
Q . H u .
CO tt. o O f O f
. . . 3
G O h
: s-s
O H H
. " X f O J
^ _ ? u ,
1 5 T t u ,
Q J O
X 0 0 C J * h
0 £ £ •£
. = T 3
C O .
O G
rt -:-
= E
r t 3
d c
cu ri
3 ro
« «
S3
o, ri
c
- g f c h t a
o. 2 o
o o • " * X
hh QJ
O 'E oo
E5 rt
t t - i t
d .E fc
O J m J _ J
TJ 0,0,
O J T J f c
£ , S §
rt tt)
OfQ
2 8
<a z
t t j
fc ^
fcg
£ P.
UJ £
r t o
_ n c o Q J
•-?f c/i hh
« 2 < c °
m H n n
OJ OJ J j* HH
S i X 2 i
~ | o
o o c X
O - « - rj
O T J c o
z i q j r t o
(It Xi 93
0 3 7 Z Z i t m
i n C J
Q O J f H Q J Q J
• 5 O f . 2 X G 5
« £ C O X H H C f n
CO
•d
QJ
X
« ._
2 » h
U h I h
O u O J
o fc Z
c H _.
9 - -
t t l 5 v i
- 7 . S c o
rt J2 ,«i
h o S
< c£- 3
3
ttl
I*
Uh
<
H
<
Q
hJ
<
O
UJ
H-l
h-1
Uh
rt
Ul
>
o
<
H
<
tt)
Q
ttl
ttl
CJ
X
ttl
ttj
Z
UJ
ul
I*-**
Uh
5
Ou
S
O
CO
oi
tt)
H
U
<
r - i O i Ul
o < rA
X
' o
U.
z
o
Q
P, H
rt oi
UJ o
ui
rt
><
CQ
h «->
ac o
UJ
3
, 1
O h J
ttl ttl Uh
Q Q UJ
O O
O U ut
z z oi
t t l U l !#
tt)
S
<
Z
ttJ
uA
tt,
<
H
<
a
tn
Q
ttl
ttl
CJ
X
tt)
H
CO
UJ
H-l
>* ttf
oi
<
Z
OQ
Ottl
zrt
Q>*
<CQ
tti
oi ttl
oi
o .
O i 0
t t l X
u-i
o
xUh
> H X
H X ttl
OU tt.
a z
C O TJ
>
" >, OJ <* £
Q J r t q j e d
Q J C OJ O J C
C O r t oo C O r t
o
•-.
CO
tj
X
o
Q
tt)
Q
O
O
O
z
3
<
oi
rt s
W x
^ x
> H X
fc ^
§3
OU Uh
<
Ut Ut Ut Ut Ut Ut Ut Ut
o
Z
OV ro
oo 00
00
ON
oo CN
ON
60497800 D B-91
>.
OQ
II
CO
II
co II
CO ii
CO
sS
Zz
5<
rt
CO
s
Z
<
rt
CO Ji ii
CO
Z tt.
rt C Q
II
CO
S
z
2 2 oo
Q
H
z
o
CJ
co
CJ
ut
\n
O
z
o
<
z
o
o
s
ttl
OQ
a
OQ
<
H
QJ
HH
CT* oo
q j " r t
Q J G
CO ed
•d
o j e d
9 3 G
C O r t
CO
UJ
Ou
o
CJ
Tt
'£>
y
c .a
E oj
rt rd
Uh CfH
00
O OJ
t t t t
r\ . e d
f " Q J
a s
e 2
rt
Oh TJ
In
OJ
rt
G O OJ
OCJ Uh TJ
QJ OJ
«
OJ
In
CJ
c
rt
o
O
Oi
QJ
QJ eO
«rH
CfH
" q j
£ £
e d " >
3 3 X t d
Q J . * H O J
c o U t t n
'>
y
• O U h
o 2
-2 »
rt
•S
2 O h
PU HH
-3 -•
o j 2
•S «
O O h
PU -HJ
* ft
T J ©
S TJ
QJ
£S
O J O
f aj
S S O h o )
X £
V qj fc
§ £ -o
z $.g
U t O
' T * U h
OJ « J
a°fc
s o
£ 2
TJ
>
y
Ut
" q j
oo
SO nH
.s ^
X
>
o
E
to
tt
oo
O
£ £
TJ
>
.2
<HH
*0J
CO
TJ
U h .
° ft
O O
Q J U h
~ J U h
tj
'i>
.2
CfH
" o j
CO
QJ
tj
>
y
CfH
*QJ
CO
7~* oo
H eo
Oi •&
O QJ
W .S
O £
- 5 .
t t U i - j
*fc|
E O U
d oi
O 0 r r . T J
tn
y
Ut
" q j
co
s
z
ou
o
H
O
z
ttl
hJ
HH
Uh
oi
O
rt
rt
uj
z
o
HH
H
<
N
HH
z
«,
9
oi
o
tti
hJ
ut
Uh
ttl
H
X
ttl
CJ
3
_J
<
Ul
oo
t-fc
hJ tn
qtn
rt ttl
ttl
o
iJ ttl
X
UJ acH
P
ut
ss HH
UJ
Uh
tt) ui
Qrt
rt
uj
CQ
ttl
>
ut
H
<
9
uj
z
ac
I
a
o
gas
uj
H-l
Oi
Ul
s
H-l
<
o
ttl
H-l
ul
/*Ss|y
<
Ut tt. tt. Uh Ut Ut Ut Ut tt, Ut Ut Uh Ut
o%.
o
Z
CO
ON
SJ-
o\ oo
ON
ON
ON
CN
oCO
o•<r
o00
o
B-92 60497800 H
X*ga?H
/^v
j$PN
fjf^v
Jf0f^\
if
t t l
g"
t t l f t
o"
UJ
a
>. £-">
OQ
Tt
OJ
d
co
oo
II
X
X
Q -
II
i f f c rt
- o Ul
f-H
ttJ
Q
CO
s
ac
CO
O
o
II
Z '
tn
ttl
XX2 o
O Z b| oi ttJ Si t-
co CO O ttl o > oi UJ ac ac
oo CO tn
HH
CJ
Q J h h
U h Q J
G G E E E /-* ft «"
o o
cOJ OJ OJ QJ OJ * n C J i n
.o •d
'?
OJ
•d
">
OJ
a5
Si* c
tt
s n ^ j
5 > c o
X>
tt OJ
d - - t e d
-I-»- -•— -i—
«, Uh
OJ
CO
<H
" q j
CO
q j " r t
O J G
co c5
Q J " «
O J G
C O e 5
o j " r t
o j r -
0 0 r t
G C J U h
x S 2
0 & - S
Q
H
Z
O
<J
•>tS
QJ
CJ
G
equence (SMSORT, MSORTB, SMSORTP,
3E), (other GE calls), : SMABT) d.
tt
o
Uh
OJ
Uh
ed
it
TJ
HH
G .
g <J
5 w
•3 z
£?g
rtO
tn
V
H
O
z
rt
o
ta
G
op
CO
QJ
TJ
'?
OJ
" q j r SMMER( ORT/MER SMEND oi ot foUowe
Uh
O
Uh
In
QJ
tt
"C
rt
QJ
QJ
Uh
ed
it
tn
Ih
ed
Uh
ed
X
£
x
v i 2
O i n Bad second in CALL C
HJ
TJ
'>
*QJ
•r-
H—
fi
G
QJ
TJ
V
2
CfH
oco C O C O O C O w C CU DC O h O J CO CO
<
3
Z=fc
o
S
ttl
uj'
o
Z
ttl
D
a
ut
tn
ut
00
Oi
Ul
>
UL,
rt tt,
Oi
Ul
o
rA
«n
1ci tti
co oi
O
Lin-
OQ HH
H-l
$
X
X
tt,
OOi H^
CO
13
CO
3
CQ
<
H
OJ
00
rt
CO
CO
QJ
2
H-)
<
u
ttl
Z
rt
§
Oi
tt)
>H
Pu
O
CJ
HH
CJ
s
OQ
S UNIT HAS LOST P0WE JNTENANCE MODE.
rt
o
Oi
oi
UJ
H
2
<
OU
Q
NEC CHARACTER COD] UT OF RANGE
NT INFINITE NT" TOO SMALL, RE NT INFINITE NT INDEFINITE NT TOO LARGE NT INFINITE NT INDEFINITE NT TOO LARGE
CO
O
O
H
rt tti ttJ Ul UJ ttl tt) uj tti tt)
osD 5 B B B SSI
r** rt CO z o q o q q q ooo
Ul o 5 CJ O r n rt rt 0i Oi 0i oi oi oi oi
HH H-l ttl s UJ o h3 < < < < < < < <
CO
CO
rt •<
O. Uh Ut Uh tt. Ut Uh T^
O
Z
ON CN "fr tn vO •> 00
O-H I—H nn f-H »-H i-H nH nH
11—1
TJ
G
rt
Uh
OJ
O.
O
73
oo
OJ
£
OJ
T3
G
d
i U h
•8OJ
•3
G
QJ
E
d
oo
E
a
00
TJ
QJ
G
at
93
TJ
G
3
*
X
CJ
v)
o
X
I*
d
.2
'eo
'>
TJ
d
E .
o
rS UH
O N
i >>
rt .o
U h " ^
** «
•2 2
s a
c" sp
.2 .S
tt tn
•S -*H
o O J
• " t t
f t " H
O Q J
G
r < ~ 9 3
o tax
t t v "
9 1 ^
N , > »
e d " «
x|
X p
S 2
x rt
E co
p t t
C|
U h O J
Q J T J
ff C
C ^
o
C Q j
« £
G 3 ^
^ G Q J
72 f>
T J O
co
•d .s
QJ
2<N
Q J C O
G O
QJ f
00
C J Q J
tt
S 8
1 °°
<a «2
r60497800 E B-93
CJ
co
CJ
H
co
O
Z
3
z
o
cj
ttJ
CQ
a
CQ
<
H
CQ
3C
co
O
O
Q
II
ac
Q
DC
Z
oo
Q
V
cu
X
Q
ac
z
<
H
Q
CO
<
Q
oo
cj
Z
co
«,
Q
CO
O
CJ
<
Q
co'
CJ
Z
CO
/"~N CJ
tt. U-, ttf
rt oi rt
wttl uj
^rf •Sn.* >>_•
Ut tt. Uh
oi Oi rt
ttl ttl UJ
ac
z
<:
G
00
UJ
H
Uh
z
tt)
o
rt
H
o
o
H
H
z
t t ) t t l u j u j t t l t t l
9 9 9
oi oi Oi
< < <
q o o
rt rt rt
< < <
uj
H
HH
tt.
ttl
H
9
rt
<
fc 8
h 9
ui s rt
h a ^
s u, fc
r-t W --,
fc o 8
z z g
H H H H M
ttl ttl ttl
q o o
oi oi oi
< < <
ttl
H
tt)
H
HH
z
HH
zUh
ttl
I—1
ttn
zut
ttl
H
ttl
H
HH
So
tt)
H
ttl
9
oi
Ut
z
ttf
ttl
E H - l
H
O
ZZZ
ttl ttl ttl
OOO
rt rt rt
< < <
ttl ttl UJ
OOO
Oi oi Oi
< < <
ttJ ttl
9 9
r t r t
< <
o
Z
o
(N
t t < N
C N < N
CO
CN -4-
<N in
CN
VO
CN CN
ttl
H
ttl
H
§o
tt) ttl ttl
9 9 9
oi oi oi
< < <
oo
CN
it
G
O
_ o
S <"
Tj'
O N ^S^K
Gr t x
ed
.Uh
CO
Of
O
g" oo
/^^\
«
00 o c
OJ t t - e n
TZl T J >
Uh
o13 3
G > ^ <**)
T) r t X
d>>£
«X «
OJ rt
TJ f t » H
GO Q J
d
Uh o &
U h
£9 3 - ^
nn r t e d
CJ
OJ
X
CJ
> . 2
X ^
t j "
QJ
tt
rt
•- 8
Q J G
X w
E M
3 £
t^s^S
d
CJ « C
ed o *a
CJ
CO
Uh OJ
QJ TJ
N C
/*5*S*)l
"H c ~
tt
G
OJ QJ
c'
d
00
rt J3
00 £ -^^\
Ih
rt 'S oj
C f H .g 3
tt
G
OJ
E
d
T J O
oo
£«
T. . S
^^%
00 OJ
Uh
rt 2CN
QJCO
/ r i ^ L
*d
QJ c o
Q J T t
.ti OO
<a ft
0J
TJ
G
d
22
tt
G
r t U f
/ S ^ g s
C J Q J
cS «> s
t n 0 0
G
*/tirt&sS
QJ
X
O
ca 52
T J e d
£ i t
B-94 60497800 D
/C-^Sv
y*jR"*\
Sn.'
CO
QJ
H
00
O
Z
o
z
o
cj
ttj
CQ
3
CQ
<:
H
i f f P N
CQ
at
'S
op
CO
O
Z
oo
O
O
ttl
H
ttl
CO
a
tti
CO
s
CO
00 QJ
d>*
TJ
o
CJ OJ CU
OJ ta CO
dGQ
G
UJ
OJ
TJ n
Uh
O J 0 0
o o e
3 .§
• h t i
oj qj rt
•56-3
O O
O J c
U « 3 j j
0 0 C l o t o
n H Q J
O
oa t r - t
t n d
QJ o
S £
^ j Q J
O O u .
° I
r * * U h
f c £ V
l - H * ^
S cr
C O e o
ttl
S 3
QJ
a* o
Q J C J
f
n n * d
O i d
c j e O
£ £
- d 3
QJ
ta *-
ti c
CJ QJ
QJ ed
O h s -
C O >
"5 H f
_ , U U
T J h h O J
£ 93 tr*
SEB
c j r t G
Q J U h j ;
O f g T J
o o O f - G
H - . Q J
§ s
t t l G
* i Q J
C / ) o
O* cu
UJ =-
t ^ c r
CO r t
oo
.3
i §
o a
O r j
tn «j
TJ
c 5f?
2 E
0 0 _ f
rt
Q J G
X
H H Q J
« - G
O Q J
91 Sh
f t C T 1
f t O J
O c o
CQ §
fc ta
X t 9 3
fi n T J
s~r qj
- > , U h
§ s.
al
vO *-•
h - 1 «
8.s
o
Uh
O
a
ttl fc ni fc ttJ W £-.
H O H O
INFINITE INDEFINIT TOO LARG ODD MULT
INFINITE INDEFINI TOO LAR INFINITE INDEFINI TOO LAR
in
z
H
Uh
ttl
CJ
Z
ui
O
a
b- b-< H fc fc H
ZZZ bt b, i- H In ui
ZZZ z z z z •P CO
ttl ttl ttl ttl ttl ttl ttl ttl ttl ttl
rA
Z
HH
1B B h§ B B B B B B TJ
OJ
>
ooo ooo oooo QJ
rt rt rt rt rt rt
•< < < oi oi oi oi OJ
< < < < < < < Oi
tti
CO
-1
o
o
Q
uj
>
rt
UJ
CO
tt)
rt
•n
Z
H
Uh
rt
Uh tt.
ON
CN ro (N <*-
CO vo VO
VO r- r
V O r t
r - t < N
O.
O
G
ta
QJ
TJ
G
d
•-<
cj
QJ
X
TJ
QJ
4H
ed
3
•tr o
• h > ,
•> X
d
O O
' £ O J
H 0 0
>
d ^
o
' i t > »
^3 x
"S »
G r t
* Q J
U t - ^
o s>
- ~ed
o d
I n 0 0
Q J 3
X -• " Q J
Q J G
x t a
E «*
d
G H d
"S 2
E « d
H - - f
T>
OJ
d
ta
OJ
TJ
G
d
X
u
G 1
O >
G q j
r t 3
00 O
.5 x
T J r t
£ G
-°co
•< > 2
Q J ~ *
HH
ft «
G £
93
0 0 U h
OJ
r i e o
" ^ Q J
_ . U h
G 0 0
rt
O c o
G Q J
60497800 F B-95
at
O
V)
to
u
o
fit
Q.
LU
fi£
QJ
QJ
X
co
ed
X
rt
LA
QJ
O O _
r t T J
C O Q J
C O H H
OJ oo
E fc
H £.
p r t
o j G
TJ QJ
W «
U h t o
OO
o
CO
oo
QJ
>
QJ
'C
Oh
OJ
X
S * * "
G w
55 O .S
d tj 15
8 g o
S ta fc
«> ° *
Sr> qj
> O . o o
£»B
o. g 2
qj 5 £
U h O J H
X G
QJ
C O O J
2
f o / O
O O U - j H
O J t t l £
S ? u t §
TK id oj
° X
S w
i ~ > O
^fc 2
>°°
8 "Si
o. i *-
4 ) O
QJ
z
n
II
fc
o
H
rt .a Tt
oTJ
d
LL,
QJ
Xrt
t-> Uh
X
d
OJ
E
QJ
OJ
TJ
G
tn
93
ded TJ
.co tn
OJ
In
rt
CO tt
r* JB
£
'ft
CO TJ
Oz
HX
O
.2 PU • f - i
TJ
OJ
OJ
X
wJh
tt
'tt VO
1
cr- CQ
oTJ <1>
tt
dQJ
ta HH
HH
o
QJ CJ
QJ
rt
CO
o
ut
o
z
o
Q
tt)
>
ttl
ut
oi
cu
tt)
rt
tti
tti
•—i
CQ
O
CO
a
CQ
<
H
ttl .S3 .S
.2
*a
G
rt
CJ
ta
I
CO
•H
rt
Uh
OJ td
Uf
oHH
CO
Q J T J
Q J T J
U h Q J
T J O J
"S x
o
o
rt
X
ed.
5 XJ
QJ .a
TJ
G
QJ
Of
Of
ed
rt
Uh
00
O
G £*?
3
Oi
rt
~ G
•* .2
8{
i 6 t j 6
o ^
2 -^ •.
S S3 3
X £ >
_. OO OJ
d t i
o c o d
.Is 1? ©
• d > e n
£ x
TJ r ti eo
ft 3 S
O QJ -*
Uh
id 93Q\
s? 07
I* —1
T J r t
q j x
c o " * h
d
?? fc
C J o
c o O
rt
' i n .
r t Q J
> N
T J ' S
8 * H
N Q J
is *s
tl X
/*^V
£ £
•* o
-'-, rt
C X
.2 <3
4 3 d
ca co
d »
£ S
3 H H
uh 52
k > o o
• i n - W
Q J Q J
V - ' Q J la
" e O B
"rt
G
.tn
si
o S
O J • "
6 2
ft OJ
4 J • • H
*G HH
a u-
OcS
f>
CJ
r t q j
ed CJ
*d
G
Oh
Of
Oi
O
I
T3
OJ
TJ
rt
X
6
r t X .
00 QJ
2 S
cu -a
§
O
ttl
ttl
o
X
Ul
ttl
S
rt TJ
-HJ QJ
3Uh
O.
EQJ
O
CJ
CJ
o
CJ
'fHOJ
tn
QJ
tt
ed
CO
rt
X
6£o
TJ Uh
*a .s OJ
wOJ OJ
TJ rt
is
71 fH
>ed
OJ
d
TJ
.s ed
X
93 QJ
s
Uh
O
CfH CfH
Uf Uh
OJ QJ
Of Of
CO CO
eo rt
it
d
oit
rt eo
Uh OJ Uh OJ
QJ
Oh
O
OJ
Of
Osi
CJ tn
OJ
-d
OJ
QJ ed OJ rt
pCJ ft
.P, TJ t3
Ui .s
Uh •a
eo OJ rt QJ
73 tt 73 tt
00
QJ
B
Uh
ed
93
G
00
OJ
Gh
Uh
rt
OJ
G
OJ
h ! s
eo
O n
o >,
I h U h
Oh O
OJ E 93
< o < o P E
.2 ob
tS -S
C ^ C O
_. o o
, d q j
C h . C J
E 2
§ fc
tS OJ
> st
C O Q J
U h O f
O OJ
C O U h
co
Q J 0 0
r i G
2 'c
o. =
^TJ
Ih
QJ B
si H
Ut o
'-* £
93 eO
O- t n
TJ
OJ
Uh
tt
d
o
o
O
CO
eO
X
.S
O J n d
^ — t
o t n
E -SM rt
-2
*a 'rj
a -hj
rt
T3
ed
X
o.
o.
*d
ed
X
/**^\
G
G
II
ttl
Q
O
J>H
H
HH
oi
rt
o
S
uj
3
tt)
fc
Z
tt!
CO
CO
Ui
oi
Q
Q
<
CO
CQ
<
cu
tti
Q
O
u
rt
o
rt
rt
uj
cu
Q
CQ
B-96 60497800 E
/$ffi&\
0$&\
Nn.f
tn
CJ
s
O
UJ
>
tt)
ut
rt
Oh
Ul
Oi
Ui
S
H
O
ttl
u-»
CQ
O
VO
I
CQ
a
3
0S*\
In i—
o o o
HH
rt
Uh rt
Uh rt
u-
en
tn ^J
QJ QJ OJ rt 00 CJ
Oh
O
Of
O
Oh
O
en
Ert fc In
co
In
EEEQJ
tt
en
frt tt
O
«a ca >> -
sn OJ
tt
00
EOJ
tt
00
d
X
TJ
£
* « » O J
00
d
.X
OJ
00
rt
co
CO
QJ
OJ
oo
rt
co
CO
QJ
OJ
00
«
CO
co
QJ
co
G
O
tt
In
00
OJ
CO
>.
CO
tt
'f,
it
00
OJ
Q
OJ
Uh
Q J f J J
Oh a
0 0 T T *
C O > »
• d r t
E -d
9 3
O o
Uh
Q J U h
> Q J
EEECJ
'5 '5 ed
Ih
Uh «-* ft
O o « X
Uh Uh Uh U. Ih QJ
U h *-^
£cS c2 eo ed QJ
tt QJ E c c j «2 QJ
G
O
"hh
CJ
<
QJ OJ QJ QJ
In
•Ui
CO
CJ •w
ed ut
•rt
ed §, s H d «
a
>>
rt rt
ta
rt
Uh
O
In it
sn
tn
CfH
ott
tn
Uh
o
o
TJ
< * n
oHH
oo
oi
ttl
CJ
O
o
Of
E
00
o t n
ft. *
G * O
CYBER mp to loc
TJ
Uh
O
TJ
Uh
o
TJ
Uh
o
Uh
QJ
CfH
Ut rt rt
tt
G
d
o
>%
3
c
rt CJ
X . —
3 8
00 CO
Uh
O
HH
ed
In
o
tt
eo
Uh
o
it
ed
CO
Ert co
srt
Ged
CO
s* c o
C O Q J Bf
Uh
OJ
Oh
O
In
OJ
Oh
O
In
OJ
Oh
o
ed
Uh
00
O
Uh
QJ
tt
en
co
OJ
X
QJ
tt
en
17
Uh
Uh
c2
, - H
QJ
X
H
QJ
tt
en
>>
en
CQ
Ul
QOJ
Uh
E 6
I n G
^ j 2
C Q G
ttJ §
Q t .
3 3 3
O f .
tt
f Z > e n
3 > >
OJ
3 QJ'
O J O Q
•w
3
OJ
CO
ed
QJ CJ C J " ^
co co CO CO U h r t sn CJ CO 1?
dC d t t * d ° ft <y OJ C/3 o j t o
Oo o £ %
Oi e d
Q J O OJ Jf? j O
CJ CJ Q -55 CJ CJ H^ O O h HH £
tn co
TJ
G
d
G*
o
U
UJ Uh
OJ
X
Of
•a
QJ
QJ
X
HH
QJ rt
Uh
o
tt
U,
o
tt
00
.s
CO
TJ
QJ
TJ
tt
>>
S3 TJ
OJ >.
ed
Uh
Uh
rt
TJ
«
E
QJ
Oh
O
ed
Uh
OJ
Of
O
ed
tn
OJ
Of
o
oo
OJ
CJ
CJ
rt
QJ
QJ
CJ
X
QJ
Oh
HH
G
OJ
TJ
QJ
X
co
TJ
OJ
OJ
CJ
X
co
ed
it CJ
*a
ed
OJ
XOJ
X
tt
OJ
it
co
G
tt
tn
•a
QJ
G
•si
X
ed
tt
en
OJ
QJ
CO
rt
X
QJ
£
'tn
tt
d
o
G
.2
'tt
eo
CJ
O
ed
tn
QJ
n d Q j '
QJ
rt
OJ
o
G
rt
CJ
ta
CO
TJ
OJ
•ft
ed
£
S
Uh
OJ
tt
d
TJ
QJ
HH
ed
G
E
In
OJ
tt
G
S3
o
•r—l
OJ
X
tt
G
d
Uh
OJ
Uh
co
TJ
OJ
Uh
Uh
d
o
CJ
o
co
ed
X
Uh
Uh
O
In
In
QJ
A mass storage output operatio available mass storage. Program attempted to call a nc processor (system function).
co
tt
TJ
QJ
TJ
QJ
OJ
CJ
X
C-T
Uh
O
G
In
O
Uh
Uh
QJ
QJ
Uh nal reference, unction at subr
OO
QJ
rd
G
rt
TJ
QJ
QJ
QJ
X
co
•-H
X
o
• T - l
91
X
H
QJ
OJ
X
CO
rt
X
X
O
•r-t
OJ
X
H
Uh
O
tt
eo
Uh
QJ
Of
o
QJ
tt
tt
OJ
OJ
Ui
rt
1
Uh
<
CJ
QJ
In
CJ
'tt
eo
E
O
tt
d
< I/O operations e site. A write operatio available LCM.
rt
a
TJ
In
£
S3
rt
X
O
Uh
CU
CJ
G
OJ
Uh
Ut
93
Uh
E
eO
In
00
o
HH Unsatised exter a non-existent
tt
Oh
S
OJ
tt
tt
eo
E
rt
feb
O
£
>*
Q<;
QQUJ oi
UJ tt) oi
QQtt)
QJ
oo ttl tt) ttl
UJ ttl Oi ttl
ed CJ CJ
Oi
Oi
ttJ
tt)
sn uj
91
ttl
cu
§
oi rA
CJ
UJ
fc 5*"
tt)
fc
ttl tt)
I—H
tt,
CO
hJ
CO
rA
H-)
HH-
Oi
oa.
H-l
HH
H-l
nJ >*
H
ut
oi
1—4
H
<
ttl
oi
oi CO hJ ttl 00
Ul CO pj
CQ
Q2oi UJ HH
60497800 E B-97
^\
STATEMENT FORMS
J^\.
/*$^?y sn
iv
0 S \
name
0$^\_
0H^\ fn
iolist
j^P^N
The following symbols are used in the descriptions of FORTRAN Extended statements:
variable or array element
statement label
integer variable
unsigned integer or octal constant or integer variable
symbolic name
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
input/output list
Other forms are dened individually in the following list of statements.
ASSIGNMENT STATEMENTS
v = arithmetic expression
logical v = logical or relational expression
v -masking expression
MULTIPLE ASSIGNMENT
v- = v2 =... vn = expression
FLOW CONTROL STATEMENTS
GO TO sn
GO TO (sn*.,...,snm).iv
GO TO {sn-,..; ,snm)iv
GO'TO .sn.-,... fsnm).expression
GO TO -(sn.j,... ,snm)expression
Page
Numbers
2-15
2-18
2-19
2-19
4-1
4-2
4-2
4-2
4-2
60497800 A C-l
GOTO iv,(sn1 ,...,snm)
GO-TO iv{jsnr,...'.snm)
ASSIGN sn TO iv
IF (arithmetic or masking expression) sn- ,sn2,sn3
IF (arithmetic or masking expression) sn-,sn2
IF (logical or relational expression) stat
IF (logical or relational expression) sn1#sn2 (
DOsn iv = m1,m2#m3
DO sn iv = m1fm2
CONTINUE
PAUSE
PAUSE n
PAUSE ^c.c*
STOP
STOPn
STOP-^c.f.c-?--
END
TYPE DECLARATION
INTEGER name......name„
i ' ' n
TYPE INTEGER name-,...,namen
Page
Numbers
44
44
4-3
4-5
4-5
4-6
4-7
4-7
4-7
4-12
/**"\
4-13 f & ^ K
4-13
4-13 ^Stv
4-14
y^w^V
4-14
4-14 A*m\
4-14
/S^S&K
3-1
V^^X
3-1
C-2 60497800 A
/ ^ ^ S
/$i$\
Page
Numbers
REAL name- name., 3.7
I n - » n .
TYPE R EAL name.,..., name 3.7
I n * - •
COMPLEX name-,...,name 3-2
1 ' ' n J * * •
TYPE COMPLEX name,...., namen 3 -2
DOUBLE PRECISION name, namen 3-2
DOUBLE name,,...,name 3-2
TYPE DOUBLE PRECISION name. namen 3-2
TYPE DOUBLE name, namen 3-2
LOGICAL name,,.. ..name 3-3
in
TYPE LOGICAL namer...,namen 3-3
( IMPLICIT type, (ac, acm) ,...,typen (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 A T I O N
EXTERNAL name-,..., name 3-14
STORAGE ALLOCATION
type name., (d,-) 3-1
{* TYPE type name, (dj) 3-1
^ DIMENSION name, (d,) namen (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
/#£*.
type INTEGER, REAL, COMPLEX, DOUBLE, DOUBLE PRECISION or LOGICAL
0S?t\
\ 60497800 A C-3
0 S \
Page
Numbers /£*E$SS
3-5
3-5
ySJ^K
3-5 / * S \
/C S !^.
COMMON v, vr)
COMMON/blkname-/v-, . . . , v ... /blkname /v- v
1 1 ' ' n n 1 n
COMMON//v, vn
blkname symbolic name or I - 7 digits
II blank common )
DATA vlist,/dlist,/ vlistn/dlistn/ 3-15 ^
DATA (vlist^dlist*,),.. . , (vlistn=dlistn) 3-15
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
EQUIVALENCE (glist.,) (glistj ^
3-8
L E V E L n , a , , . ' . . , a n " " . . * 3 - 1 2 ^ ^ \
n - ~: Unsigned integer 1,2 or 3
- a- ' Variable* array element, array name -^
fd^fyx
^t-tk^V
C"4 60497800 A
>^^\
MAIN PROGRAMS
PROGRAM name
PROGRAM nameffpar.,, fpar2,.... fpark)
SUBPROGRAMS
FUNCTION name (p, pj
type FUNCTION name (p, ,..., pn)
type INTEGER, REAL, COMPLEX, DOUBLE, DOUBLE PRECISION
or LOGICAL
/i&N
SUBROUTINE name (p,,..., pp)
SUBROUTINE name
SUBROUTINE name (p, pn), RETURNS (b, bm)
SUBROUTINE name,RETURNS (b. b )
ENTRY POINT
ENTRY name
STATEMENT FUNCTIONS
name (p,,..., pn) = expression
SUBPROGRAM CONTROL STATEMENTS
CALL name
CALL name (p,,..., p )
CALL name (p,,..,, pn),RETURNS (b, bm)
CALL name.RETURNS (b, bm)
RETURN
RETURN i
i is a dummy argument in a RETURNS list
Page
Numbers
7-2
7-2
7-8
7-8
7-6
7-6
7-6
7-6
7-18
7-10
7-16
7-16
7-16
7-16
4-15
4-15
60497800 A C-5
/"S^V
Page
Numbers
SPECIFICATION SUBPROGRAMS
B L O C K D A T A 7 - 5
BLOCK DATA name 7-5
INPUT/OUTPUT
PRINT fn,iolist
PRINT fn
PRINT (u,fn) iolist
PRINT*,iolist
PRINT (u,fn)
PRINT (ii,*) iolist
PUNCH fnjolist
PUNCH fn
PUNCH (u,fn) iolist
PUNCH *,iolist
PUNCH (u,fn)
PUNCH (u,*) iolist
WRITE (u,fn) iolist
WRITE (u,fn)
WRITE fn,iolist
WRITE fn
WRITE (u) iolist
WRITE (u)
WRIJE (u,*) iolist
WRITE*,iolist
C-6
/^S*\
5-2
5-2
/^^sv
5-3 0^K
5-10
5-3
/"•E^^v
5-10 /tSx
5-3
5-3
5-4 ^S^s
5-10
5-4
^^K
5-10 0Z&fe^
5-4
54 f*^^\
5-5 /*9\
5-5
5-7 /*^H
5-7 >*i3ȴJX
5-10
5-10 ,*^$K
60497800 A
^&$\
Page
Numbers
!N READ (u,fn)iolist 5-5
READ (u,fn) 5-5
READ fnjolist 5-5
r s R E A D f n 5 - 6
READ (u) iolist 5-7
READ (u) 5-7
«s READ (u/) iolist 5-8
READ*,iolist 5"8
BUFFER IN (u,p) (a,b) 5-19
te, BUFFER OUT (u,p) (a,b) 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,,..., an/.../group namen/a,,...,an 5-11
READ (u.group name) 5-13
V READ group name 5-13
^psv WRITE (u,group name) 5-14
WRITE group name 5-15
0 ^ \
V PRINT (u, group name) 5-15
Hp-^ PRINT group name 5-15
PUNCH (u, group name) 5-15
\ PUNCH group name 5-15
y^v aj array names or variables
group name symbolic name identifying the group a,,...-, a
60497800 A C-7
INTERNAL TRANSFER OF DATA
ENCODE (c,fn,v) iolist
DECODE (c,fn,v) iolist
starting location of record. Variable or array name
length of record in characters. Unsigned integer constant or simple
integer variable
FILE MANIPULATION
REWIND u
BACKSPACE u
ENDFILE u
FORMAT SPECIFICATION
sn FORMAT (fsv . .., fsn)
fsj one or more field specifications separated by commas and/or grouped by
parentheses
DATA CONVERSION
srEw.d Single precision floating point with exponent
srEw.dEe Floating point with specified exponent length
srEw.dDe Floating point with specified exponent length
srFw.d Single precision floating point without exponent
srGw.d Single precision floating point with or without exponent
srDw.d Double precision floating point with exponent
Decimal integer conversion
Integer with specified minimum digits
Logical conversion
Alphanumeric conversion
Alphanumeric conversion
Octal integer conversion
rlw
rlw.z
rLw
rAw
rRw
rOw
C-8
Page
umbers t^^fS
5-21
5-24
./t*^\
y^^jy
.^ ^y
5-26
y^fcjV
5-26 /*^S
5-26
^^K
6-5
/ f ^ * y
6-9
6-9 /«S^*K
6-9
6-13
<<^k"\
6-14 y^^\
6-16
6-7
/ S ^ V
6-7 /*^V
6-21
6-18
r*SS%S.
6-20 st^\
6-17
60497800 A
S^\
/^$\
rOw.z
rZw
nX
nH
«
/
Tn
V
Integer with specified minimum digits
Hexadecimal conversion
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
Intraline spacing
Hollerith
Format field separator; indicates end of FORTRAN record
Column tabulation
Display code substitution
Numeric substitution
Page
Numbers
6-17
6-18
6-24
6-25
6-28
6-32
6-34
6-34
i^N
0®*^
j#^\
OVERLAYS
CALL OVERLAY (fname,i,j,recall,k)
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)
fname name of file
ij overlay numbers
Cn n is a 6-digit octal number indicating start of load relative to blank common
7-23
7-22
60497800 C C-9
/*SS"*v
DEBUG
C$ DEBUG
C$ DEBUG (name,
C$ AREA bounds.
, name )
n
, bounds^
C $ D E B U G )
C$ AREA/name,/bounds,,.... boundsn
C$ DEBUG (name, ..... namej
or
C$ DEBUG
bounds
within program unit
. /name_/bounds. boundsn ' external
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
Page
Numbers ,^S!S
9-22 f**^\
9-22
9-23
9-23
C $ A R R AY S ( a , a n )
C$ ARRAYS
a, array names
C$ CALLS (s,,...,sn)
C$ CALLS
Sj subroutine names
C $ F U N C S ( f - | f n )
C$ FUNCS
fs
C$ GOTOS
function name
9-3
9-3
9-5
9-5
9-7
9-7
9-14
0^^\
C-10 60497800 C
/C-?&\
/"SSN
j0!*\
C$ NOGO
C$ STORES (c cn>
variable name
variable name .relational operator, constant
variable name .relational operator, variable name
variable name .checking operator.
checking operators:
RANGE out of range
INDEF indefinite
VALID out of range or indefinite
c$ TRACE (Iv)
c$ TRACE
lv level number:
0
n
tracing outside DO loops
tracing up to and including level n in DO nest
C $ O F F
C$ OFF(x, xn)
Xj any debug option
COMPASS SUBPROGRAM IDENTIFICATION
IDENT name (in column 11)
END indicates end of COMPASS subprogram
LISTING CONTROL DIRECTIVES
C/ LIST, NONE
C / L I S T, A L L
Page
Numbers
9-17
9-10
9-15
9-15
9-26
9-26
17-2
17-2
12-2
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 48-bits
Sign Biased
Exponent 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 coefcient signs resulting
from each combination.
60497800 E D-l
TABLE D-l. BITS 58 AND 59 COMBINATIONS
Bit 59 Coefficient Sign Bit 58 Exponent Sign
0Positive Positive
0Positive Negative
1Negative Positive
1Negative Negative
Some examples of oating point numbers, as they would appear in octal format, are as follows:
Number Octal Representation
+1.
+100.
-100.
1.E64
-l.E-64
0.
1720 4000 0000 0000 0000
1726 6200 0000 0000 0000
6051 1577 7777 7777 7777
2245 6047 4037 2237 7733
6404 2570 0025 6605 5317
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 signicant
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
7.834926843D137
-2348585858574758224D12
0.0D0
192837465192837465D256
-0.0D0
1.234234234234234234234234234234 DO
First Word
26334153710320065255
57120455517237124716
oooooooooooooooooooo
35347102140424723427
77777777777777777777
17204737554312750737
Second Word
25530330560116025671
57721332647630553777
OOOOOOOOOOOOOOOOOOOO
34542402521200675526
77777777777777777777
16405543127507375543
D-2 60497800 A
0O&\
/#^\
COMPLEX NUMBERS
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:
f"
Octal Representation
Number
(5.7,6.3)
(764E45,-12.2E45)
(36.567985456983,2E-110)
First Word
17225546314631463146
21604135136170411021
17254444263576544542
Second Word
17226231463146314632
63013513153413026764
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
247-l
12131214121312
-2
Octal Representation
00003777777777777777
00000260420455254540
77777777777777777775
f
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).
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 Octal Representation
9RORNOT2B 00172255161724553502
234 .OR. 4LYECH 31050310000000000352
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 oating 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 overow.
Complete overow 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 coefcient is set to all zero bits. The sign of the operand is the same as if the number had not exceeded the
oating point range. Further action depends on the computer being used.
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.
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 ag causes an underflow message to be listed and the program to
abort.
D-4 60497800 C
f ^ ^ V
i-^^K
s4^$\
TABLE D-2. FLOATING POINT REPRESENTATION
0&\
Positive Operand Negative Operand
OVERFLOW Complete Overow 37770 . . .Og
Partial Overflow 3777X . . .Xg
4000 . . .0g
4000X . . .Xg
LARGEST
ABSOLUTE
VALUE
£1.265014083171E+322 = 37767 . . .7g
= 1.265014083171E+322 = 37767 . . .7g
S-1.265014083171E+322 =40010 . . .Og
s-1.265014083171 E+322 =40010 . . .0g
SMALLEST
NORMALIZED
ABSOLUTE
VALUE
S3.131513062514E-294 = 000140 . . .0g S-3.131513062514E-294 = 777637 . . .7g
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.
/£P*\
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
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
X2
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
*^*\
TABLE D-4. NON-STANDARD SUBTRACT
XI = X2 - X3
X3
X2
+00 —00 ±IND
w--00 +00 IND
+00 +00 IND +00 IND
-00 -00 -00 IND IND
+IND IND IND IND IND
/^®t\
TABLE D-5. NON-STANDARD MULTIPLY
X 1 = X2 * X3
X2
D-6
X3
+N -N +0 -0 4-00 —00 ±IND
+N +00 -00 IND
-N -00 +00 IND
+0 IND IND IND
-0 IND IND IND
+00 +00 —00 IND IND +00 -00 IND
-00 —00 +00 IND IND -00 +00 IND
±IND IND IND IND IND IND IND IND
60497800 A
yStf^sv
.^^s
yri^v
/s^v
.(IfslpSS
0^\
/"fi^N
X2
TABLE D-6. NON-STANDARD DIVIDE
XI = X2 / X3
X3
+N -N +0 -0 +00 -00 ±IND
+N +00 -00 IND
-N —00 +00 IND
+0 IND IND IND
-0 IND IND 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
01
02
03
04
05
06
07
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.
Address out of range. A storage location outside the user's eld 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.
Infinite operand (dened above)
Innite operand and address out of range
Indefinite operand
Indefinite operand and address out of range
Infinite or indefinite operand
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.
nnn Index number of the message.
MESSAGE AND MEANING The message and an interpretation (if necessary) are printed.
LEVEL
X
F
W
I
Indicates the level of severity of the error as follows:
Job terminates. No EXIT processing occurs.
Job terminates. EXIT processing occurs.
Warning is printed, and error is ignored. Processing continues, although the portion of the
program containing the error may not be executed.
Informative message is printed.
,rfS^V
CODE
SC001
SC002
SC003
SC004
SC005
SC006
SC007
SC008
SC009
SCO 10
scon
scon
SC040
MESSAGE AND MEANING LEVEL
L C M P A R I T Y F
S C M P A R I T Y F
LCM BLOCK RANGE F
SCM BLOCK RANGE F
LCM DIRECT RANGE F
SCM DIRECT RANGE F
PROGRAM RANGE F
BREAKPOINT F
STEP CONDITION F
INDEFINITE CONDITION F
OVERFLOW CONDITION F
UNDERFLOW CONDITION F
JOB MAKING 6000 REQUEST IN RAS+1; F
RAS+1 of user area is non-zero.
/rti^S
D-8 60497800 A
GLOSSARY
jsP\
0HS>i\
Tliis glossary does not include terms defined in the ANSI standard for FORTRAN, X3.9-1966.
ADVANCED ACCESS METHODS (AAM) - Ale 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) - Ale 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.
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 section (for INPUT file only) '
End of partition
t^™$\
End of information (EOI) 1
W type record with flag bit set and delete bit not set
Tape mark /=s^
Trailer label
Embedded zero length level 17 block
.y^nv
ENTRY POINT — A location within a program unit that can be branched to from other program units.
Each entry point has a unique name.
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 EQUIVALENCE 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 specied 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 Physical Representation
PRU device A short PRU of level 0 containing one-
word deleted record pointing back to
last I block boundary, followed by a
control word with flag indicating parti
tion boundary.
WC A short PRU of level 0 containing a
control word with a flag indicating
partition boundary.
D,F,R,S,T,U,Z A short PRU of level 0 followed by a
zero-length PRU of level 17.
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.
WCSeparate 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.
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.
sG@jk
Device Size in Number
of 60-bit Words
Mass storage
Tape in Sl format with
coded data'
Tape in SI format with
binary data
Tape in X' or I
format
Tape in other
format
64
128
512
512
Undened
'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.
0^&&O\
E-4 60497800 D
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.
ff*s©s
/$sp?\
Device RT BT Physical Representation
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.
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 Undened.
SAny Undened.
S or L A separate tape block containing as
format tape 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.
SAny 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
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.
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.
/^^N
, / ^ ^ V
/rf^w^V
E-6 60497800 D
X^flV
fgffev
INDEX
/^**
0 S \
/**P^\
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
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
60497800 H 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
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
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
S&t0\
•f*^°\
/<S\
Index-2 60497800 J
EQUIVALENCE
And COMMON 3-11
LEVEL 3-12
Statement 3-8
ERF 8-6.1
ERFC 8-6.1
Error codes
Execution time B-79
Mode error D-7
Error numbers B-81
Error processing
After abort (see RECOVR)
By record manager 8-44
Suppression of execution abort (see SYSTEM)
SYSTEM or SYSTEMC 8-15
User dened processing (see SYSTEM, SYSTEMC)
Errors, arithmetic mode D-7
Evaluation of expressions 2-2
Execution diagnostics B-82
Execution control statement
Alternative file name 15-1
Print limit specification 15-2
Post mortem dump parameters 15-2
Execution time
Diagnostics B-29
File name handling 15-1
FORMAT 6-36
Input/output 16-1
EXIT 8-11
Exponentiation 2-6
Expressions
Arithmetic 2-1
Definition 2-1
Logical 2-9
Masking 2-12
Relational 2-7
Subscripts 1-15
Extended range of DO loop 4-8
External
Function, basic 8-1
Statement 3-14
FORTRAN-CYBER Interactive Debug
Batch debugging 8-52
Control statement 8-51
Debug output 8-52
Interface 8-51
User-debug interaction 8-52
FTN control statement 10-1
FUNCS debug statement 9-7
Function
Basic external 7-9, 8-1
Intrinsic 7-10, 8-1
Referencing a 7-15
Statement 7-10
Subprogram 7-8
Tracing a reference 9-7
G conversion
Input and output 6-14
Scaling 6-23
GET 8-42
GETN 8-43
GETP 8-42
Glossary E-l
GO TO statements
Assigned GO TO 4-4
Computed GO TO 4-2
Types 4-1
Unconditional GO TO 4-1
GOTOS debug statement 9-14
H specification
FORMAT specification 6-25
Hollerith constant 1-10
Hexadecimal/octal conversion A-3
Hierarchy in expressions 2-2
Hollerith
Constant 1-9
Data interpreted by STORES 9-13
Format element 6-25
00$^\
F conversion
Output and input 6-13
Scaling 6-22
FALSE 1-11
File
Alternate name specification 15-1
Control statement 16-6
Definition 16-1
Labeled 8-25
Name handling 15-1
Name (TAPEu) 7-3
Structure 16-2
File information table (FIT)
Defaults for standard I/O 16-3
Direct call by record manager 8-39
FILExx 8-42
FLOAT 8-2
Floating point
Indefinite results D-5
Internal format D-l
Overflow D-4
Underflow D-4
Formal argument (parameter) (see Dummy argument)
FORMAT
Execution time 6-36
Repeat specification 6-29
Slash 6-28
Statement 6-5
Formatted input/output 5-2
FORTRAN compiler call 10-1
I conversion, input and output 6-7
IABS 8-2
IDIM 8-3
IDINT 8-2
IF statements
Arithmetic 4-5
Standard-form logical 4-6
Three-branch arithmetic 4-5
Two-branch arithmetic 4-5
Two-branch logical 4-7
IFETCH 8-42
IFIX 8-3
IMPLICIT
Statement 3-3
Typing of variables 1-11
Implied DO in
DATA list 3-19
I/O list 6-2
Indefinite result, floating point D-5
Index
DO loop 4-7
Mass storage files 8-29
Multiple (record manager) files 8-44
Infinite result, floating point D-4
InputBUFFER IN 5-20
File 7-3
List directed 5-8
NAMELIST 5-14
60497800 H Index-3
J0^\
Input/output
BUFFER 16-11
Compile time 16-11
Execution time 16-1
Lists 6-1
Mass storage 8-29
Statements 5-1
Status checking 8-23
IOCHEC 8-24
IO time limit 10-4
INT 8-2
Integer
Arithmetic D-3
Constants 1-5
Conversion 2-16
Statement 3-1
Variables 1-12
INTERCOM, terminal I/O 8-27
Intrinsic functions 7-18, 8-1
ISIGN 8-3
JDATE 8-9
Job decks, sample 18-1
L conversion, input and output 6-21
L in Hollerith constant 1-11
LABEL 8-25
Labels
RETURNS list 7-7
Statement number 1-3
Labeled
Common 3-6
Files 8-25
LABINFO 8-26
LEGVAR 8-15
LENGTH, LENTHX 8-25
LCM, see ECS
Level
OVERLAY 7-20
Statement 3-12
LGO 15-1
Library functions 8-1
LIMERR 8-20
List directed
Input data forms 5-9
Output data forms 5-11
READ 5-8
WRITE 5-10
Listings
Compiler 12-1
Control 12-2
Map 13-1
LOCF 8-5
Logical
Assignment statement 2-18
Constants 1-11
Expressions 2-9
File names 15-1
IF statement 4-6
Statement 3-3
Unit number 7-3
Variables 1-13
Loops
DO 4-8
Nested DO 4-9
Main program 7-2
Map symbolic or cross reference
Optimizing mode 13-1
TS mode 13-15
MASK 8-4
Masking
Assignment statement
Expression 2-12
Mass storage
CLOSMS 8-32
Input/output 8-29
OPENMS 8-30
READMS
STINDX
2-19
8-32
8-32.1
8-31
f^^V
WRITMS
MAXO 8-2
MAX1 8-2
Messages
Execution diagnostics B-29
Optimizing mode diagnostic B-l
Special compilation B-3
TS mode diagnostic B-4
MINO 8-2
MINI 8-2
Mixed-mode arithmetic conversion 2-5
MOD 8-2
Mode
Arithmetic errors D-7
Debug 9-1
Optimizing 11-2
Time-sharing (TS) 11-6
MOVLEV 8-26
Multiple
Assignment statement 2-19
Index processing 8-44
Statement separator $ 1-3
NAMELIST
Parameters 5-13
READ 5-14
WRITE 5-15
Names
Common block 3-6
File 7-3
PROGRAM 7-2
Variable 1-11
Nesting
DO loops 4-9
Parentheses 6-2
NOGO debug statement 9-17
Number
Common block 3-6
Formats (see Constants)
Statement label 1-3
NUMERR 8-20
O conversion, input and output 6-17
Object code 14-1
Octal
Constants 1-8
Hexadecimal conversion A-3
OFF debug statement 9-26
OPENM 8-42
OPENMS 8-30
Operands
Evaluation 2-2
Nonstandard floating point D-5
Operating system interface routines 8-9
Operators 2-1
Optimization
Object code 11-2
Source code 11-4
Unsafe 11-3
Options FTN control statement 10-1
OR 8-3
Order, statements in program unit 1-4
/ S l * ^ \
/*SS^k
Index-4 60497800 H
^SE75\
0^\
/fR"V
Output
BUFFER OUT 5-22
FUe 7-3
List directed data forms 5-11
NAMELIST data form 5-16
Print limit specification 15-3
Record length 5-2
Overflow, arithmetic D-4
Overlays
Calling 7-23
Description 7-19
Directive 7-22
Sample deck 7-26
P scale factors 6-21
Parameter, see argument
Parentheses, nesting 6-2
PAUSE statement 4-13
PDUMP 8-15
Post mortem dump
Description 8-53
Dump disposition 8-55, 15-2
Traceback 8-55
Precedence of operators 2-2
Print
Control characters 6-31
Limit specification 15-3
Statement 5-3
Procedure communication
Passing values 7-12
Using arguments 7-12
Program
Maps 13-1
Sample 19-1
Units 7-1
PROGRAM statement 7-2
Punch
Codes A-2
FUe 7-3
Statement 5-4
PUT 8-42
PUTP 8-43
R conversion, input and output 6-20
R in Hollerith constant l-ll
Random
Access 8-29
Number routines 8-8
RANF 8-5,8-8
Range of DO loop 4-8
READ statements
Formatted 5-5
List directed 5-8
NAMELIST 5-14
Unformatted 5-7
READEC 8-26.1/8-26.2
READMS 8-32
REAL 8-5
Real
Constant 1-5
Conversion 2-18
Statement 3-2
Variable 1-12
Record
Definition 16-1
I/O record length 5-2, 7-3
Types 16-1
Record manager (see also CYBER)
Error suppression 16-11
File handling 16-1
Files/direct handling 8-39
Recovery 8-12
RECOVR 8-12
Reference, function 7-15
Reference maps 13-1
Register names 14-2
Relational
Evaluation 2-8
Expressions 2-7
Operators 2-7
REMARK 8-10
REPLC 8-43
Reprieve 10-4
RETURN statement 4-15
RETURNS list 4-15, 7-7
REWIND 5-27
REWND 8-43
RMKDEF 8-45
RMOPNX 8-45
ROUND 10-7
Sample
Coding form 1-2
COMPASS subprogram 17-2
Decks 18-1
FTN control statement 10-9
Programs 19-1
Scale factors 6-21
Scaling 6-22
SECOND 8-9
Sense
Light 8-10
Switch 8-11
Separator
Slash and comma
$ statement 1-3
Sequenced line format
Sequential file structure
SHIFT 8-4
SIGN 8-3
SIN 8-6
SIND 8-6.1
SINH 8-6
Slash in FORMAT statement 6-28
SLITE 8-10
SMFILE 8-47
SMKEY 8-48
SMMERGE 8-47
SMSORT 8-46
SMSORTB 8-46
SMSORTP 8-46
SNGLE 8-4
Sort/Merge interface 8-46
Specification statements 3-1
SSWTCH 811
Standard, FORTRAN ANSI v
Statement
Format 1-1
FORTRAN (see Individual statement name)
Function 7-10
Labels or numbers 1-3
Order in program unit 1-4
Separator, multiple 1-3
STATIC option 20-1
STINDX 8-32.1
STOP statement 4-14
STOREF 8-42
STORES debug statement 9-10
STRACE 8-15, 9-28
Structure
Debug decks 9-17
Memory 14-4
Program units 1-4
6-7
11-7
16-2
60497800 J Index-5
f^\
Subprograms
Block data 7-5
Function 7-8
Miscellaneous utility 8-8
Subroutine 7-6
Subroutine
Calling 7-16
Statement 7-6
Subscripts
And arrays 1-13
Definition 1-15
Checking in debug 9-3
Symbolic
Or cross reference map 13-1
Name 1-11
Syntax C-l
SYSTEM 8-15
SYSTEMC 8-16
TAN 8-7
TAND 8-6.1
TANH 8-6
TAPEu 7-3
Terminal interface 8-27
Texts, system 10-7
TIME 8-10
Time-Sharing (TS) mode
Characteristics 11-6
Compilation diagnostics B-14
Cross reference map 13-15
Tn (tab) specification 6-32
TRACE debug statement 9-15
Traceback (see Post mortem dump)
Traceback mode 9-28
TS mode 11-6
TRUE 1-11
Type of
Arithmetic expressions 2-5
Function 7-8, 8-1
. Masking expression 2-19
Variable 1-11
Type statements
Dimension information in 3-1
Explicit 3-1
Implicit 3-3
UEM, see ECS
Unary operators and evaluation
Unconditional GO TO 4-1
Underflow, arithmetic D-4
Unformatted
READ 5-7
WRITE 5-7
UNIT 8-23
Unit number 7-3
2-3
User-Debug interaction 8-52
Utility subprograms 8-8
V specification 6-34
Variable
Dimensions in a subprogram
FORMAT statements 6-36
Name and type 1-11
Variables
Complex 1-13
Definition 1-11
Double precision 1-13
Integer 1-12
Logical 1-13
Real 1-12
WEOR 8-43
WRITE statement
Formatted 5-5
List directed 5-10
NAMELIST 5-15
Unformatted 5-7
WRITEC 8-27
WRITMS 8-31
WTMK 8-43
7-7, 7-14
X specification
XOR 8-3
6-24
6-18Z conversion, input and output
Zero operand D-4
.AND. 2-9
.EQ. 2-7
.FALSE. 1-11
.GE. 2-7
•LE. 2-7
.LT. 2-7
.NE. 2-7
.NOT. 2-9
.OR. 2-9
.TRUE. 1-11
$ 1-3
* 1-3, 2-1, 6-26
*
Hollerith constant 1-10
FORMAT specification 6-27
/ 6-28
= in FORMAT 6-34
j($$$\
• Index-6 60497800 J
j^S^N
/S*N
COMMENT SHEET
MANUAL TITLE: FORTRAN Extended Version 4 Reference Manual
PUBLICATION NO.: 60497800 REVISION: J
NAME:
COMPANY:
STREET ADDRESS:
CITY: STATE: ZIP CODE:
This form is not intended to be used as an order blank. Control Data Corporation welcomes your evaluation of
this manual. Please indicate any errors, suggested additions or deletions, or general comments below (please
include page number references).
Please reply No reply necessary
0S\
/^\
NO POSTAGE STAMP NECESSARY IF MAILED IN U.S.A.
FOLD ON DOTTED LINES AND TAPE
TAPE TAPE /^$i \
y^^v
FOLD FOLD
NO POSTAGE
NECESSARY
IF MAILED
IN THE
UNITED STATES
FIRST CLASS
BUSINESS REPLY MAIL
PERMIT NO. 8241 MINNEAPOLIS, MINN.
POSTAGE WILL BE PAID BY
CONTROL DATA CORPORATION
Publications and Graphics Division
P.O. BOX 3492
Sunnyvale, California 94088-3492
FOLD FOLD

Navigation menu