RSX 11M V1 Fortran IV_Users_Guide IV Users Guide

RSX-11M-V1-Fortran-IV_Users_Guide RSX-11M-V1-Fortran-IV_Users_Guide

User Manual: RSX-11M-V1-Fortran-IV_Users_Guide

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

RSX-11M
FORTRAN-IV User's Guide
Order No. DEC-II-LMFUA-A-D
RSX-IIM
Version
1
Order
additional
copies
as
directed
on
the
Software
Information
page
at
the
back
of
this
document.
digital equipment. corporation · maynard. massachusetts
The
information
in
this
document
is
subject
to
change
without
notice
and
should
not
be
construed
as
a
commitment
by
Digital
Equipment
Corporation.
Digital
Equipment
Corporation
assumes
no
responsibility
for
any
errors
that
may
appear
in
this
manual.
The
software
described
in
thi
..
s
document
is
furnished
to
the
purchaser
under
a
license
for
use
on
a
single
computer
system
and
can
be
copied
(with
inclusion
of
DIGITAL's
copyright
notice)
only
for
use
in
such
system,
except
as
may
otherwise
be
provided
in
writing
by
DIGITAL.
Digital
Equipment
Corporation
assumes
no
responsibility
for
the
use
or
reliability
of
its
software
on
equipment
that
is
not
supplied
by
DIGITAL.
ASSOCIATED
DOCUMENTS
Refer
to
User's
Guide
to
RSX-llM
Manuals,
DEC-ll-OMUGA-A-D.
Copyright
~
1974,
by
Digital
Equipment
Corporation,
Maynard,
Mass.
The
HOW
TO
OBTAIN
SOFTWARE
INFORMATION
page,
located
at
the
back
of
this
document,
explains
the
various
services
available
to
DIGITAL
software
users.
The
postage
prepaid
READER'S
COMMENTS
form
on
the
last
page
of
this
document
requests
the
user's
critical
evaluation
to
assist
us
in
preparing
future
documentation.
The
following
are
trademarks
of
Digital
Equipment
Corporation:
COP
DIGITAL
INDAC
PS/8
COMPUTER
LAB
DNC
KA10
QUICKPOINT
COMSYST
EDGRIN
LAB-8
RAD-8
COMTEX
EDUSYSTEM
LAB-8/e
RSTS
DOT
FLIP CHIP
LAB-K
RSX
DEC
FOCAL
OMNIBUS
RTM
DECCOMM
GLC-8
OS/8
RT-ll
DECTAPE
IDAC
PDP
SABR
DIBOL
IDACS
PHA
TYPESET
8
UNI~US
(
CHAPTER
1
1.1
1.1.1
1.1.2
1.2
1.2.1
1.2.2
1.2.2.1
1.2.2.2
1.2.2.3
1.2.3
1.3
1.3.1
1.3.2
1.3.2.1
1.3.2.2
1.3.2.3
1.3.2.4
1.3.2.5
1.3.2.6
1.3.2.7
1.3.2.8
1.3.2.9
1.3.2.10
1.3.3
1.3.3.1
1.3.3.2
1.3.3.3
1.3
ct
3.4
1.3.4
1.4
1.5
1.6
CHAPTER
2
2.1
2.3
2.4
2.5
CHAPTER
3
3.1
3.2
CONTENTS
OPERATING
PROCEDURES
USING
THE
FORTRAN-IV
SYSTEM
Command
Strinq
File
Specifications
USING
THE
FORTRAN-IV
COMPILER
Compiler
Switches
/
List
Formats
Source
Listing
Storaqe
Map
Listinq
Generated
Code
Listinq
Compiler
Memory
Requirements
USING
THE
TASK
BUILDER
TO
LINK
FORTRAN
PROGRAMS
Task
Builder
Switch
Options
for
FORTRAN
Proqrams
Task
Builder
Options
for
FORTRAN
Proqrams
ACTFIL
COMMON
LIBR
MAXBUF
TASK
UIC
UNITS
FMTBUF
ASG
PAR
FORTRAN
Library
Usage
Re1ocatab1e
Libraries
Shared
Libraries
System
Libraries
User
Libraries
Overlays
USING
MCR
TO
INITIATE
TASK
EXECUTION
EXAMPLES
DEBUGGING
A
FORTRAN
PROGRAM
FORTRAN-IV
OPERATING
ENVIRONMENT
FORTRAN-IV
OBJECT
TIME
SYSTEM
OBJECT
CODE
SUBROUTINE
LINKAGE
SUBPROGRAM
REGISTER
USAGE
VECTORED
ARRAYS
RSX-11M
FORTRAN-IV
SPECIFIC
CHARACTERISTICS
VARIABLE
NAMES
INITIALIZATION
OF
COMMON
iii
1-1
1-1
1-2
1-4
1-6
1-7
1-7
1-7
1-8
1-10
1-10
1-11
1'!'"11
1-12
1-12
1-12
1-13
1-13
1-13
1-13
1-13
1-14
1-14
1-14
1-14
1-15
1-15
1-15
1-15
1-17
1-18
1-19
2-1
2-1
2-3
2-4
2-5
3-1
3-1
3.3
3.4
3.5
3.6
APPENDIX
A
A.l
A.2
A.2.l
A.2.2
A.
2.3
A.3
A.4
A.5
A.6
APPENDIX
B
B.l
B.2
B.5
B.6
B.?
B.8
B.9
B.10
B.ll
B.12
B.13
B.14
B.15
B.16
B.l?
CONTINUATION
LINES
DEFAULT
LOGICAL
UNIT-DEIVCE!FILE
NAMES
STATEMENT
ORDERING
RESTRICTIONS
OTS/FCS FILE
OPEN
CONVENTIONS
FORTRAN
DATA
REPRESENTATION
INTEGER
FORMAT
FLOATING-POINT
FORMATS
Real
Format
Double-Precision
Format
Complex
Format
LOGICAL*l
HOLLERITH
FORMAT
LOGICAL
FORMAT
RADIX-50
FORMAT
SYSTEM
SUBROUTINES
SYSTEM
SUBROUTINE
SUMMARY
ASSIGN
CLOSE
DATE
I
DATE
ERRSET
ERRSNS
ERRTST
EXIT
USEREX
FDBSET
RAD50
lRAD50
R50ASC
RANDU,
RAN
SECNDS
TIME
iv
3-1
3-1
3-2
3-3
A-l
A-l
A-l
A-2
A-2
A-3
A-3
A-3
A-4
A-4
B-1
B-1
B-2
B-3
B-3
B-4
B-4
B-5
B-6
B-6
B-6
B-?
B-8
B-8
B-9
B-10
B-10
B-ll
(
"
(
APPENDIX C
C.l
C.l.l
C.l.2
C.l.3
C.l.4
C.2
C.2.l
C.2.2
C.2.2.l
C.2.3
C.2.3.l
C.2.3.2
C.2.4
APPENDIX 0
0.1
0.1.1
0.1.2
0.1.3
0.1.4
0.2
APPENDIX E
E.l
E.l.l
E.l.2
E.l.3
E.l.4
E.2
APPENDIX F
FORTRAN
ERROR
DIAGNOSTICS
COMPILER
ERROR
DIAGNOSTICS
Errors
Reported
by
the
Initial
Phase
of
the
Compiler
Errors
Reported
by
Secondary
Phases
of
the
Compiler
Warning
Diagnostics
Fatal
Compiler
Error
Diagnostics
OBJECT TIME
SYSTEM
ERROR
DIAGNOSTICS
Error
Processing
Algorithm
Object
Time
System
Error
Message
Format
Short
Message
File
Object
Time
System
Error
Codes
Initial
Control
Bit
Settings
Error
Messages
Notes
on
OTS
Error
Processing
Implementation
COMPATIBILITY
WITH
OTHER
PDP-II
FORTRANS
COMPATIBILITY
WITH
PDP-II
FORTRAN
V08.04
UNDER
C-l
C-l
C-3
C-4
C-8
C-9
C-lO
C-lO
C-12
C-13
C-13
C-13
C-lS
C-2·1
D-l
RSX-IID
V4A
0-1
Language
Differences
0-1
Object
Time
System
Differences
0-2
Implementation
Differences
D-2
Operational
Differences
D-3
COMPATIBILITY
WITH
PDP-II
FORTRAN
IV-PLUS
BIT
STRING
MANIPULATIONS
LOGICAL
OPERATIONS
Inclusive
OR
Logical
Product
Logical
Complement
Exclusive
OR
SHIFT OPERATIONS
SOFTWARE
PERFORMANCE
REPORTS
v
0-4
E-l
E-l
E-l
E-l
E-l
E-2
E-2
F-l
(
,-
P~F~E
This
document
provides
information
necessary
to
compile,
task
build,
execute,
and
debug
a
FORTRAN
program
under
the
RSX-llM
operating
system.
Chapter
one
describes
the
operational
procedures.
Chapter
two
provides
information
about
the
Object
Time
System
(OTS).
This
system
is
a
collection
of
routines
selectively
linked
to
the
user's
program
which
perform
certain
arithmetic
input/output,
and
system
dependent
service
operations.
It
also
detects
and
reports
run-time
error
conditions.
Chapter
three
describes
system
dependent
information
not
included
in
the
PDP-ll
FORTRAN
Language
Reference
Manual.
The
Appendices
provide
reference
information
about
internal
data
representations,
system
subroutines,
error
diagnostics,
and
compatibility
of
FORTRAN-IV
with
otherPDP-ll
FORTRAN
processors.
This
manual
should
be
used
only
after
some
knowledge
of
the
FORTRAN
Language,
as
implemented
on
the
PDP-ll,
has
been
acquired.
The
associated
document
which
may
be
used
for
this
purpose
is
titled
PDP-ll
FORTRAN
Reference
Manual (DEC-ll-LFLRA-A-D). The
user
should
also
be
familiar
with
the
RSX-llM
Operating
System
as
described
in
the
RSX-llM
Operations
Procedure
Manual (DEC-ll-OMOGA-A-D).
NOTE
Subroutines
are
provided
in
the
FORTRAN
library
to
enable
real-time
process
control,
process
I/O,
and
RSX-llM
system
directives
to
be
performed
by
means
of
FOR~RAN.
These
routines
and
their
ISA-standard
calls
are
fully
described
in
the
RSX-llM
Executive
Reference
Manual
and
the
RSX-llM
I/O
Drivers
Manual.
DOCUMENTATION
CONVENTIONS
All
RSX-llM
executive
and
system
program
command
lines
are
terminated
by
a
RETURN.
Since
this
is
a
non-printing
character,
at
certain
places
in
the
text
the
notation
<CR>
represents
the
RETURN
key.
Some
special
keyboard
characters
require
that
the
CTRL
(control)
key
be
pressed
simultaneously
with
a
second
character.
These
characters
are
denoted
by
t
(up
arrow):
e.g.,
tz
(CTRL
Z).
In
all
examples,
text
printed
by
the
RSX-llM
executive
or
system
program
is
underlined,
text
typed
by
the
user
is
not
underlined.
vii
(
\.
CHAPTER
1
OPERATING
PRocEDURES
1.1
USING
THE
FORTRAN~IV
SYSTEM
Three
steps
are
required
to
transform
a
F()RTRAN
source
program
int.o
an
executing
Task.
These
steps
are:
1.
Compilation
2.
Task
Build
(or
Linkage)
3.
Initiation
of
Execution
Compilation
is
accomplished
by
invoking
the
FORTRAN-IV
C:o*,plle:r.
Next,
the
Task
Builder
is
used
to
construct
a
task
image.
Finally,
task
execu~ion
is.
ini
tiated
by
using.
th~,.
~ppropri~te
Monitor
Console
Routine
(MCR)
commands. Each
step
in
this
procedure
involves
several
required
and
optional
command
inputs
and
produces
an
output
to
be
used
in
the
next
step.
Other
optionaL
outputs
are
also
possible.
A di.agram
depicting
this
process
is
giveh
in
Figure
l-l.The
remainder
of
this
chapter
discusses
each
step
of'
the
process
ih
detail
and
gives
some
simple
examples.
Figure
i-l
MeR
COMMANDS
Preparing
a
FORTRAN
Source
for
Execution
1.1.1
Command
String
System
programs
rUnning
under
RSX-llM
usually
require
a
command
string
to
specify
such
things
as
input
files
and
various
options.
A
standard
command
string
has
one
of
the
following
formsi
output-files-listminput-files-list
or
@command-file
1-1
CHAPTER
1.
OPERATING PROCEDURES
Both
output-files-list
and
input-files-list
are
strings
consisting
of
file
specifications
separated
by
commas. Each
file
specification
selects
a
file
to
be
used
as
an
output
or
input
file
by
the
system
program.
A @command-file
is
an
indirect
command
file
which
contains
multiple
command
strings.
Any
number
of
file
specifiers
is
possible,
the
actual
number
being
determined
by
the
system
program
which
will
use
the
file
command
string.
1.1.2
File
Specifications
Each
file
specifier
(whether
input
or
output)
has
the
following
format:
where:
dev:[g,o]filename.type;version!switchl
•••
/switchn
dev:
[g
,0]
filename
type
version
/switch
= The
physical
device
unit
on
which
the
volume
containing
the
desired
file
is
mounted,
e.g.,
ORO:. The name
consists
of
two ASCII
characters
followed
by
an
optional
one
or
two
digit
(octal)
unit
number and a
colon.
The
default
value
is
SY:,
the
system
disk.
Table
1-1
depicts
the
legal
device
list.
= The
User
Identification
Code (UIC)
associated
with
the
user
file
directory
containing
the
desired
file.
This
consists
of
a
group
number
and
a
user
number.
The
default
value
of
UIC
is
the
identification
code
under
which
the
system
program
is
running,
usually
[200,200]
= The name
of
the
file.
In
RSX-llM, a
filename
can
be
up
to
nine
alphanumeric
characters
in
length.
Filename
and
type
are
always
separated
by
a
period
(.).
= A means
of
distinguishing
among
forms
of
one
file.
System
programs
default
the
file
type
to
an
appropriate
standard
type,
(e.g.,
FTN)
so
the
typical
user
will
not
need
to
explicitly
specify
it.
File
type
and
version
are
always
separated
by
a
semicolon
(;).
m
An
octal
number
used
to
differentiate
among
versions
of
a
file.
When
a
file
is
first
created
using
the
editor,
it
is
assigned
a
version
number
of
1.
If
the
file
is
subsequently
opened
for
editing,
the
file
system
retains
the
original
file
for
backup
and
creates
a
new
file
with
the
same
filename
and
type,
but
with
a
version
number
of
2.
Version
is
in
the
range
0-77777.
= A
one
or
two
character
ASCII name
identifying
the
switch
option.
The
switch
itself
may
1-2
(
CHAPTER
1.
OPERATING
PROCEDURES
have
three
forms.
If
the
switch
designator,
for
example,
is
SW.
Then:
/SW
sets
the
switch
action;
/-SW,
negates
the
switch
action,
and
/NOSW
also
negates
the
switch
action.
in
addition
the
switch
identifier
may
be
followed
by
any
number
of
values.
The
permitted
values
are
ASCII
strings,
octal
numbers,
and
decimal
numbers.
The
default
for
a
value
is
octal.
Decimal
values
must
be
terminated
by
a
decimal
point.
Values
preceded
by
a
number
sign
(I)
are
octal;
the
octal
option
is
included
for
explicit
documentation
purposes.
Any
numeric
value
may
be
preceded
with
a +
or
-
sign;
if
the
number
sign
(I)
is
used,
the
+
or
must
precede
it.
The
following
are
valid
switch
specifications.
/SW:27:MAP:29.
/-SW
/NOSW:NOSWITCH:-#50
Although
the
filename
command
string
interpretation
of
the
string
and
dependent.
1-3
has
a
standard
syntax,
the
permissible
options
is
program
CHAPTER
1.
OPERATING
PROCEDURES
Table
1-1
RSX-llM
Devices
PERIPHERAL
DEVICES
Analog
to
Digital
Converter
(ADO
I-D)
Analog
to
Digital
Converter
(AFCll)
Card
Reader
(CRll)
Cassette
(TAll)
DECtape
(TCll)
Disk
(RP04)
(RFll)
(RKll)
(RPOJ)
(RSOJ/RS04)
Laboratory
Peripheral
System
(LPSll)
Line
Printer
(LPll/LSll/LVll)
Magtape
(TU16)
Magtape
(TMll)
Synchronous
Line
Interface
(DP-ll)
(DU-ll)
Asynchronous
Line
Interface
(DLIl-E)
Terminal
(DLll/DHll/DJll)
Universal
Digital
Controller
(UDell)
PSEUDO
DEVICES
Console
Listing
Console
Output
Pseudo
Input
Terminal
System
Default
Device
1.2
USING
THE
FORTRAN-IV
COMPILER
DEVICE-UNIT
ADnn:
AFnn:
CRnn:
CTnn:
DTnn:
DBnn:
DFnn:
DKnn:
DPnn:
DSnn:
LSnn:
LPnn:
MMnn:
MTnn:
XPnn:
XUnn:
XLnn:
TTnn:
UDnn:
CL:
CO:
TI:
SY:
The
FORTRAN-IV
Compiler
is
an
RSX-llM
system
program
initiated
via
the
FOR
MCR-command.
It
produces
relocatable
object
modules
from
FORTRAN
source
programs.
1-4
-
(
CHAPTER
1.
OPERATING
PROCEDURES
To
invoke
the
Compiler
enter
the
following
MCR
command.
(All
characters
typed
by
the
system
are
underlined).
tC
MCR)FOR<CR)
The
FORTRAN-IV
Compiler
then
prints
"FOR)ft
to
indicate
that
it
is
ready
to
accept
a command
string.
A
standard
command
string
as
described
in
Section
1.1.1
is
used
to
specify
input
and
output
files
to
the
Compiler.
None,
one
or
two
output
files
may
be
specified.
The
first
output
file
is
the
object
module
file
and
the
second
is
the
listing
file.
Only
one
input
file
may
be
specified.
This
is
the
FORTRAN
source
file.
It
may
contain
one
or
more
FORTRAN
program
units
(Main
Program
and/or
Subprograms).
File
types
default
as
shown
in
Table
1-2.
Table
1-2
FORTRAN
Compiler
Default
File
Types
File
Default
Type
Object
OBJ
Listing
LST
Source
FTN
Command
CMD
Up
to
two
levels
of
indirect
command
files
are
permitted.
An
example
FORTRAN
command
sequence
is
shown
below:
2FOR
FOR)OBJECT,LIST=FILEl
This
command
string
directs
the
Compiler
to
take
the
source
file
FILE1.FTN
from
the
system
device
and
output
the
files
LIST.LST and
OBJECT.OBJ
to
the
system
device.
When
the
compilation
is
complete
the
Compiler
again
prompts
with
ftFOR)ft.
At
this
point
another
command
string
may
be
entered
or
tZ
may
be
typed
to
cause
the
Compiler
to
terminate
execution.
An
alternate
way
to
specify
a
single
command
line
is
to
enter
the
command
string
on
the
line
containing
the
MCR
command.
For
example
the
following
performs
the
same
function
as
the
example
above:
2FOR OBJECT,LIST=FILEl
Only
a
single
compilation
per
FOR
command
may
be
specified
in
this
manner.
Upon
completion
of
the
compilation
the
compiler
exits
to
the
RSX-llM
Executive
which
will
prompt
with
a)".
Either
of
the
output
files
can
be
omitted
by
omitting
specification
from
the
command
string.
For
example:
)FOR
FOR)FlLE1=FlLEl
produces
FlLE1.OBJ
on
the
system
device
but
no
listing
file.
1-5
the
file
CHAPTER
1.
OPERATING
PROCEDURES
~,LP:=FlLEl
produces
a
listing
on
the
line
printer,
but
no
object
module.
1.2.1
Compiler
Switches
The
FORTRAN
Compiler
command
strings
may
contain
switch
options
on
the
input
and
output
file
specifications.
The
switches
are
as
follows:
Switch
ILl:n
Description
Specifies
the
listing
options.
encoded
as
follows:
The
argument
n
is
ILl:O
or
I-Ll
list
d~agnostics
only
ILl:l
or
ILl:SRC
list
source
program
and
diagnostics
only
ILl:2
or
ILl:MAP
list
storage
map
and
diagnostics
only
ILl:4
or
ILl:COD
list
generated
code
and
diagnostics
only
Any
combination
of
the
above
list
options
may
be
specified
by
summing
the
numeric
argument
values
for
the
desired
list
options.
For
example:
ILI:7
or
ILI:ALL
or
ILl
requests
a
source
listing,
a
storage
map
listing,
and
a
generated
code
listing.
If
this
switch
is
omitted
the
default
list
option
is
ILI:3,
source
and
storage
map.
(See
section
1.2.2.)
If
no
listing
output
is
specified
the
following
is
assumed:
TI:LIST.LST/-LI
ISP
Automatically
spool
listing
file.
The
default
(/SP)
is
to
spool.
IDE
Compile
lines
with
a 0
in
column
one.
These
lines
are
treated
as
comment
lines
by
default
(I-DE)
(see
section
1.6).
lEX
Read a
full
80
columns
of
each
record
in
the
source
file.
Only
the
first
72
columns
are
read
by
default
(I-EX).
lID
Print
FORTRAN
identification
and
version
number.
The
default
(/-ID)
causes
the
identification
and
version
number
not
to
be
printed.
lOP
Enable
the
Common
Subexpression
(CSE)
Optimizer.
In
general
the
CSE
optimizer
will
make
the
program
run
faster.
However,
the
size
of
the
program
may
be
different
than
with
no
optimization
(/-OP).
The
default
is
to
optimize
(lOP).
1-6
(
CHAPTER
1.
OPERATING
PROCEDURES
/SN
Include
internal
sequence
numbers
(ISN) The
/-SN
option
reduces
storage
requirements
for
generated
code
and
slightly
increases
execution
speed
but
disables
line
number
information
during
Traceback.
The
default
(/SN)
is
to
use
ISNs.
/14
Two
word
default
allocation
for
integer
variables.
Normally,
single
storage
words
will
be
the
default
allocation
for
integer
variables
not
given
an
explicit
length
specification
(i.e.,
INTEGER*2
or
INTEGER*4).
Only
one
word
is
used
for
computation.
/-14
is
the
default.
IVA
Enable
vectoring
of
arrays
(see
section
2.5).
The
default
(/VA)
is
to
vector
arrays.
/WR
Enable
compiler
warning
diagnostics.
(/WR)
is
to
issue
warning
diagnostics.
Switch
default
summary:
/LI:3/SP/-DE/-EX/-ID/OP/SN/-I4/VA/WR
1.2.2
List
Formats
The
default
There
are
three
optional
sections
that
may
be
included
in
the
list
file.
By
default
the
source
program
and
the
storage
map
are
included.
The
generated
code
may
also
be
included.
Any
combination
of
these
sections
can
be
requested
by
using
switches
in
the
Compiler
command
string
(see
section
1.2.1).
A
description
of
each
section
is
given
below.
Figure
1-2
provides
a
sample
of
the
information
included
in
each
section.
1.2.2.1
Source
Listing
-The
source
program
unit
is
listed
in
this
sec~ion
as
it
appeared
in
the
input
file.
Internal
sequence
numbers
are
added
by
the
compiler
for
easy
reference.
Note
that
internal
sequence
numbers
are
not
always
incremental.
For
example
the
statement
following
a
logical
IF
will
have
an
internal
sequence
number
2
greater
than
that
of
the
IF.
The
IF
statement
has
internally
been
assigned
2
sequence
numbers:
one
for
the
comparison
and
one
for
the
associated
statement.
Comments,
uncompiled
statements,
and
continuation
lines
do
not
receive
internal
sequence
numbers.
1.2.2.2
Storag~p'
Listin~-
This
section
includes
a
list
of
all
symbolic
names
referenced
in
the
program
unit.
A
location
offset
from
the
base
of
the
program
unit
(subject
to
relocation
during
task
building)
is
given
for
all
local
symbols.
There
is
also
a
description
of
the
symbolic
name
including
usage,
data
type,
and
in
the
case
of
COMMON
blocks
and
array
names,
the
defined
size.
Blank
BLOCK
COMMON
/ /
in
NOTE
is
described
as
COMMON
the
storage
map,
but
is
1-7
CHAPTER
1.
OPERATING
PROCEDURES
located
on
a
Task
Builder
map
under
the
Program
Section
named
.$$$$.
1.2.2.3
Generated
Code
Listin9L
-
This
section
of
the
list
file
contains
a
symbolic
representation
of
the
object
code
generated
by
the
compiler
(see
section
2.2)
including
a
location
offset
from
the
base
of
the
program
unit,
the
symbolic
Object
Time
System
(OTS)
routine
name,
and
routine
arguments.
The
code
generated
for
each
statement
is
labeled
with
the
same
internal
sequence
number
as
that
in
the
source
program
listing,
providing
easy
cross
reference.
1-8
(
(
l
CHAPTER
1.
OPERATING PROCEDURES
FORTRAN
IV
ISN
'0006
000066
LSNS
000012
MorSMS
000016
CHISIS
000102 CPt!SM
000106
eFIS
000110
AnFSIS
00011.
MOFI8M
ISN
.0001
000120
rSNS
000122
MO'SMS
000126
otF~IS
000132
AOFSMS
00013e
CO'S
11100140
MO"SSM
ISN
.0008
0e0t44
ISNS
00111146
RfLS
0001!52
RELI
000te6
CALS
000164
MODIRM
ISN
'0009
Ul"17"
ISNS
000112
MOISMS
000176
COIS
000200
AODSMS
000204 MOFSI!
000210
CDFS
000212
AODtSS
000214
MOOISM
ISN
'0010
PlIU220
I·SNS
00111222
RELS
000226
RELS
01U232 IFill!
000234
RELS
0002'121
TVel
11100242
MOFSI!
0002'6
CDFS
1110.02150
MUDSMS
0002154
MOOISM
000260
~ELS
00026.
TVOS
000266 fOLI
ISN
*0012
00021111
LSNS
000214 STPt
ISN
.0013
000276
ISNS
000300
RETS
GENERATED
CODE
*000006
FORTRAN
IV
M01-"!
SOURCE
LISTING
~000~!
*000002
0001
INTEGER
tNT
ClI000e4
00"2
REAL.
REAL
0OO3
COMPLEX
1M"
*040640
IIJ0fU
DOUBLE
PRECISION
D8L.E
000030 000S
DATA
INT/10Q11
0006
REAL.
INT/2
S.
0001
OSL.E
R[AL./2
••
3.1415g682516
121008
IMA'
CMPL~(REAL.,
3,21)
000030 0009
OBL.E
DeL.E
+
tNT/2
5,
*0.0400
0010
PRINT
10,I~AG,DBL[
10,
12100020
0011 10 FORMAT(lx,3F12.6)
0012
STOP
e000.4
0013
END
e00024
000030
*000002
CMPLX.'000000
Cl.I00034
000064
000044
UJ40640
000044
000016
000010
000034
*041040
000044
000C'!'e.t
9000!4
.000014
FORTRAN
IV
INT
000006
REAL
000030
1M',
000034
DBI.E
0000.'
CMPL)(
00121000
Figure
1-2
Sample
Listings
1-9
STORAGE
MAP
INTEGER.2
VARIABLl
REAL.4
VARIABL.E
COMPL[X·8
VARIABLE
REAL·8
VARIABLE
COMPLEX.!
PROCfDURE
CHAPTER
1.
OPERATING
PROCEDURES
.'__
-l...
2
~
Compiler
Memory
Requirements
The
FORTRAN
Compiler
runs
in
a minimum
partition
of
7K
words.
If
run
in
a
larger
partition
it
uses
the
extra
space
for
program
and
symbol
storage.
If
available
storage
is
exceeded
during
the
compilation
process,
a
FATAL
ERROR
T
is
issued.
1.3
USING
THE
TASK
BUILDER
TO
LINK
FORTRAN
PROGRAMS
The
Task
Builder
links
relocatable
object
modules
together
to
create
a
task
image.
The
object
modules
may come
from
user
specified
input
files,
user
libraries,
or
system
libraries.
References
to
global
symbols
defined
in
one
module
and
referenced
in
other
modules
are
resolved.
The
system
object
module
library
(SY:[l,l]SYSLIB.OLB)
is
automatically
searched
to
resolve
any
remaining
undefined
symbols.
References
to
resident
common
blocks
and
shared
libraries
are
also
,,-- .
resolved.
Thus,
the
task
image
produced
is
ready
to
be
run
under
the
qz'~~~
RSX-llM
executive.
The
Task
Builder
also
allows
the
building
of
tasks
with
overlay
structures.
For
a more
complete
description
of
the
Task
Builder
refer
to
the
Task
Builder
reference
manual
(DEC-ll-OMTBA-A-D).
The
Task
Builder
is
a
system
program
invoked
by
the
TKB
MCR
command.
The
user
initiates
it
by
typing
>TKB
The
Task
Builder
then
prints
"TKB)"
to
indicate
that
it
is
ready
to
accept
a command
string.
Alternatively
the
command
string
may
be
typed
on
the
same
line
as
the
TKB
MeR
command. The command
string
should
be
a
standard
string
as
described
in
Section
1.1.1.
The
first
output
file
specifies
the
task
image
file.
A
second
file
may
be
specified
if
a memory
allocation
map
is
desired.
A
third
file
may
be
specified
to
contain
the
program
sections
and
global
symbol
definitions
in
relocatable
object
module
format.
This
file
is
described
in
the
RSX-llM
Task
Builder
Reference
Manual.
The
input
files
contain
the
object
modules
to
be
linked.
Additional
lines
of
input
file
specifications
may
also
be
entered.
After
all
input
files
have
been
typed,
the
user
should
type
a
line
consisting
only
of
"II"
(unnecessary
if
command
string
is
specified
as
part
of
MCR
command).
The
Task
Builder
will
then
build
the
task
image.
The
default
file
types
used
by
the
Task
Builder
are
shown
in
Table
1-3.
Standard
indirect
command
file
specifications
are
also
acceptable
to
the
Task
Builder.
1-10
(
CHAPTER
1.
OPERATING
PROCEDURES
Table
1-3
Task
Builder
Default
File
Types
File
Default
Type
Task
Image
TSK
Map
MAP
Input
OBJ
Library
OLB
Overlay
Description
ODL
Command
CMD
The
following
simple
example
builds
a
task
image
for
the
object
file
OBJECT.OBJ
created
by
the
first
example
in
Section
1.2.
HCIDTKB
~TASK,LP:-OBJECT
TKB>/I
or
2TKB
TASK
,LP:
-OBJECT
This
creates
the
task
image
file
TASK.TSK
on
the
system
device
and
lists
the
memory
allocation
map
on
the
line
printer.
Any
references
,
in
OBJECT.OBJ
to
FORTRAN
OTS
routines
are
resolved
automatically
because
the
OTS
resides
in
the
system
object
module
library.
1.3.1
Task
Builder
Switch
options
for
FORTRAN
Programs
A
FORTRAN
programmer
should
be
aware
of
several
Task
Builder
options.
Some
of
these
are
necessary
for
correct
linking
of
programs.
Others
select
options
which
some
users
may
find
Detailed
descriptions
of
these
switches
and
other
Task
switches
may
be
found
in
the
Task
Builder
Reference
Manual.
switch
FORTRAN
useful.
Builder
The lEA
switch
must
be
used
on
the
task
image
file
if
the
task
uses
the
KEll
Extended
Arithmetic
Element.
The
/FP
switch
must
be
used
on
the
task
image
file
if
the
task
uses
the
PDP-ll/45
Floating
Point
Processor.
An
abbreviated
form
of
memory
allocation
map may
be
selected
by
specifying
ISH
on
the
map
file.
See
the
Task
Builder
Reference
Manual
for
a
description
of
both
the
long
and
short
map
formats.
The ILB
and
/MP
switches
when
specified
with
an
input
file
indicate
an
object
module
library
and
overlay
description
file,
respectively.
These
two
switches
will
be
discussed
in
more
detail
in
the
following
sections.
The
/SP
switch
may
be
used
to
cause
automatic
spooling
of
the
Task
Builder
map
file.
1.3.2
Task
Builder
Options
for
FORTRAN
Programs
The
Task
Builder
allows
numerous
keyword
options
to
be'
specified
in
addi
tion
to
the
swi
tches
described
above.
Several
of
these
are
of
particular
interest
to
the
FORTRAN
user.
1-11
CHAPTER
1.
OPERATING
PROCEDURES
If
keyword
options
are
to
be
specified,the
user
must
not
specify
the
command
string
with
the
MCR
command
and
must
terminate
his
command
input
with
a
line
consisting
of
a
single
slash,
"I",
instead
of
a
double
slash
as
described
previously.
This
causes
the
Task
Builder
to
solicit
option
information
by
printing:
ENTER
OPTIONS:
~
At
this
point
Task
Builder
options
may
be
entered,
one
option
per
line.
After
each
option
is
entered
the
Task
Builder
prompts
with
"TKB)"
indicating
that
it
is
ready
to
accept
the
next
option.
After
specifying
the
desired
options
a
single
slash,
"I",
should
be
entered
to
indicate
no
more
options.
The Task
Builder
then
proceeds
to
build
the
task
and
produce
the
requested
output
files.
When
it
has
finished
it
again
types
"TKB)"
and
is
ready
to
accept
a new
command
string.
To
exit
from
the
Task
Builder
type
tz
(Control
Z).
The
Task
Builder
options
particularly
relevant
to
FORTRAN
programmers
are
described
below.
1.3.2.1
ACTFIL
-The number
of
files
that
may
be
simultaneously
open
by
a
task
is
defaulted
to
4.
Buffer
space
is
allocated
in
the
task
image
for
this
many
files.
When
multibuffering
is
used
via
a
call
to
FDBSET,
the
number
of
buffers
needed
by
the
FORTRAN
task
will
be
greater
than
the
number
of
files.
The number
of
buffers
may
be
made
smaller
to
conserve
memory
or
larger
to
allow
more
files
to
be
open
simultaneously
by
means
of
the
Task
Builder
option:
ACTFIL
..
n
where
n
is
the
decimal
number
of
buffers
desired.
(An
attempt
to
open
a
file
when
space
is
not
available
may
cause
a
fatal
error
at
run-time.)
1.3.2.2
COMMON
-
If
a
shared
common
block
is
to
be
referenced
by
the
FORTRAN
program
this
intention
must
be
declared
by
specifying
the
following
option:
COMMON
a
name:access
where
name
is
the
name
associated
with
the
resident
common
block
and
access
is
either
RO
for
Read
Only
(meaningful
for
mapped
systems
only)
or
RW
for
Read/Write.
The
FORTRAN
common
with
the
same name
is
used
to
refere~ce
the
data
in
the
resident
common.
1.3.2.3
LIBR -
If
a
shared
library
is
to
be
referenced
by
the
FORT~
program
the
following
option
must
be
used:
LIBR-
name:access
where
name
is
the
library'
s name
and
access
is
either
RO
for
Read Only
(meaningful
for
mapped
systems
only)
or
RW
for
Read/Write.
Libraries
are
discussed
in
more
detail
in
Section
1.3.3.
1-12
(
CHAPTER
1.
OPERATING PROCEDURES
1.3.2.4
MAXBUF
-The
maximum
record
size
that
can
be
handled
by
the
FORTRAN
object
time
system
for
input/output
is
defaulted
to
132
(decimal)
bytes.
This
may
be
increased
by
specifying
the
Task
Builder
option:
MAXBUF = n
where
n
is
the
number
of
bytes.
The
default
generally
is
adequate
for
formatted
input/output.
If
direct
access
operations
are
performed
using
records
larger
than
132
bytes,
the
user
must
employ
this
option
to
specify
the
size
of
the
largest
record
which
will
be
handled.
1.3.2.5
TASK
-The
task
image
being
built
may
be
given
an
explicit
task
name
by
specifying
the
following
option:
TASK
==
name
where
name
may
be
from
one
to
six
alphanumeric
characters
the
first
of
which
must
be
alphabetic.
If
no
task
name
is
specified
at
task
build
time,
it
may
be
explicitly
specified
at
install
time,
or
the
Task
Builder
will
use
the
first
six
characters
of
the
task
image
file
name
as
the
task
name.
1.3.2.6
UIC
-The
default
Ule
under
which
the
task
will
execute
may
be
set
by
specifying
the
option:
Ule
-
[g,o]
where
g,o
is
a
valid
group
and
owner number
combination.
option
is
not
specified
the
default
Ule
is
[200,200].
If
this
1.3.2.7
UNITS
-The
default
number
of
logical
units
available
to
the
FORTRAN
program
is
6,
that
is,
logical
units
1
through
6
inclusive.
This
number
may
be
set
explicitly
smaller
or
larger
at
task
build
time
by
specifying
the
option:
UNITS
=-
n
where
n
is
the
number
of
logical
units
desired.
The
default
device
and
file
name
associated
with
a
logical
unit
number
is
discussed
in
Section
3.4.
If
a
smaller
number
of
units
than
the
default
is
desired,
a
UNITS
command
must
be
given
before
any
ASG
commands.
1.3.2.8
FMTBUF
-The
default
size
(32
words)
of
the
buffer
used
for
object
time
format
compilation
may
be
changed
by
use
of
the
following
Task
Builder
option:
1-13
CHAPTER
1.
OPERATING
PROCEDURES
FMTBUF -n
where
n
is
the
decimal
size,
in
words,
of
the
object
time
format
compilation
buffer.
The
total
size
needed
for
format
compilation
is
approximately
equal
to
the
number
of
characters
in
the
largest
object
time
format
used
by
the
program.
1.3.2.9
ASG
-
Logical
unit
numbers
may
be
assigned
to
physical
device
units
by
use
of
the
following
option:
ASG
-
devl:nlln21
•••
,dev2:ml:m2:
•••
,
•••
where
each
dev
is
a
physical
device
unit
name and
each
n
and
m
i8
a
valid
logical
unit
number. The
default
device
assignments
would
appear
as:
ASG
-
SY:l:2:3:4,TI:5,CL:6
1.3.2.10
PAR
- A
task
may
be
built
to
execute
in
a
specific
partition
by
use
of
the
following
option:
where:
pname
start
PAR
-
pname[:start:length]
-
is
the
name
of
the
partition
for
which
this
task
is
being
built.
In
unmapped
systems,
the
task
must
run
in
this
partition.
-
the
octal
starting
address
of
the
partition.
This
address
must
be
on
a 32-word
boundary
if
unmapped,
4K
boundary
if
mapped.
length
-
the
octal
length
of
the
partition
in
bytes.
The
specified
length
must
be
divisible
by
64.
The
optional
argument's
start
and
length
must
be
specified
when
the
task
is
being
built
on a
system
that
does
not
have
the
partition
named
by
the
pname
parameter.
Normally
a
task
is
built
to
execute
from
the
default
partition
GEN.
When
PAR
is
not
specified
the
default
assumed
is:
1.3.3
FORTRAN
Library
Usage
An
RSX-llM
Library
consists
of
a
collection
of
object
modules.
Two
kinds
of
libraries
exist,
shared
and
relocatable.
The
Task
Builder
is
used
to
include
modules from
relocatable
libraries
in
a
task
image.
1.3.3.1
Relocatable
Libraries
-
Relocatable
libraries
are
stored
in
files
on
a
file
structured
volume
such
as
a
disk.
Object
modules
from
1-14
CHAPTER
1.
OPERATING
PROCEDURES
relocatable
libraries
are
copied
into
the
task
image
of
each
task
referencing
the
module.
A
relocatable
library
may
be
specified
as
an
input
file
to
the
Task
Builder.
Such a
file
specification
must
include
the
/LB
switch
to
indicate
that
the
file
is
a
library
file.
When
a
library
specification
is
encountered,
those
modules
in
the
library
which
contain
definitions
of
any
currently
undefined
global
symbols
are
included
in
the
task
image.
1.3.3.2
Shared
Libraries
-
Shared
libraries
are
located
in
main
memory
and
a
single
copy
of
each
library
is
utilized
by
all
referencing
tasks.
Access
to
a
shared
library
is
gained
by
using
the
LIBR
option
as
described
in
Section
1.3.2.3.
Shared
libraries
are
built
by
the
user
with
the
Task
Builder;
they
must
contain
shareable
(reentrant)
code.
1.3.3.3
§ystem
Libraries
-
Each
RSX-llM
system
has
a
system
re10catable
library.
The
system
relocatable
library,
SY:[l,l]
SYSLIB.OLB
is
automatically
searched
by
the
Task
Builder
if
any
undefined
global
references
are
left
after
processing
all
user
specified
input
files.
If
the
definition
of
one
of
these
undefined
global
symbols
is
found,
the
appropriate
object
module
is
included
in
the
task.
The
FORTRAN
OTS
is
included
in
the
system
object
library
and
hence
is
loaded
automatically
with
FORTRAN
programs.
1.3.3.4
User
Libraries
-The
user
can
construct
his
own
relocatab1e
libraries
of
assembly
language
and
FORTRAN
routines
by
using
the
RSX-llM
Librarian.
These
libraries
are
accessed
by
using
the
/LB
switch
as
described
in
preceding
sections.
If
MATRIXLIB.OLB
is
a
relocatable
library
containing
matrix
manipulation
routines
and
PROG.OBJ
is
the
object
file
of
a
compiled
FORTRAN
program
which
calls
the
matrix
routines,
the
following
command
string
might
be
given
to
the
Task
Builder:
'
TKB>PROG,LP:aPROG.OBJ,MATRIXLIB.OLB/LB
TKB>//
1.3.4
Overlays
The
ov~rlay
facility
supplied
by
RSX-llM
allows
large
programs
to
be
executed
in
relatively
small
partitions
of
main
memory. The
overlay
system
is
virtually
invisible
to
the
FORTRAN
programmer.
All
he
must
do
is
specify
the
overall
overlay
structure,
indicate
which
subprograms
are
to
reside
in
various
parts
of
the
structure
and
specify,
using
the
overlay
description
language
COOL),
which
routines
are
to
be
autoloadable.
Overlay
loading
may
be
performed
automatically
(autoload)
or
via
explicit
load
requests
(manual
load).
A
complete
description
of
manual
loading
can
be
found
in
the
Task
Builder
Reference
Manual.
The
overlay
structure
is
specified
as
a
tree
structure
in
terms
of
the
Task
Builder's
Overlay
Description
Language'
(ODL).
If
an
overlay
structure
is
to
be
built
then
only
one
input
file
can
be
specified
to
1-15
CHAPTER
1.
OPERATING
PROCEDURES
the
Task
Builder.
This
file
must
contain
the
appropriate
ODL
statements.
The
specification
of
this
file
in
a
command
string
must
be
followed
by
the
IMP
switch
to
identify
it
as
an
ODL
file.
Simple
overlay
structures
may
be
constructed
using
only
two
ODL
statements,
.ROOT
and
.END. The
following
short
examples
demonstrate
how
to
build
overlays.
For
a more
detailed
explanation
of
this
facility
refer
to
the
Task
Builder
Reference
Manual.
Suppose
a
FORTRAN
program
consists
of
a
main
program
(MAIN.OBJ)
which
performs
input
and
output
and
calls
three
subroutines,
one
which
does
pre-processing
of
the
data
(PRE.OBJ),
one
which
performs
the
primary
processing
function
of
the
program
(PROC.OBJ),
and
one
which
does
post-processing
of
the
data
(POST.OBJ). The
following
ODL
statements
specity
an
overlay
structure
which
has
a
resident
portion
which
consists
of
the
main
program
and
three
overlays
which
share
the
same
memory
locations.
Each
overlay
contains
a
single
subroutine.
Figure
1-4
is
a
diagram
of
the
overlay
structure.
The
ODL
statements
to
create
this
structure,
are
as
followS1
ROOT
.END
MAIN-*
(PRE,PROC,POST)
The
.ROOT
statement
is
used
to
declare
the
tree
structure.
The
END
statement
indicates
the
end
of
the
ODL
statements.
The names
specify
object
file
names
(default
file
type
is
OBJ).
Commas
separate
descriptions
of
overlay
segments
which
occupy
the
same
storage.
Parentheses
are
used
to
group
these
descriptions.
Dashes
separate
descriptions
of
modules
which
are
concatenated.
If
automatic
loading
of
overlays
is
desired,
an
asterisk
must
precede
the
name
of
each
file
which
contains
a
subprogram
invoked
from
a
point
in
the
overlay
structure
which
is
closer
to
the
root
of
the
structure
than
the
subprogram.
If
all
files
within
a
pair
of
parentheses
are
to
be
automatically
loaded,
a
single
asterisk
placed
in
front
of
the
opening
parenthesis
may
be
used
instead.
This
indicates
that
the
segment
containing
the
module
will
be
automatically
loaded
whenever
a
call
is
made
to
a
subroutine
in
the
file.
MAIN
B
------~-------~
PRE
PROC
POST
Figure
1-3
Simple
OVerlay
Structure
1-16
/
d
\
/
\
CHAPTER
1.
OPERATING
PROCEDURES
A
path
of
an
overlay
structure
is
any
route
from
the
root
of
the
structure
which
follows
a
series
of
branches
to
an
outermost
segment
of
the
tree.
Figure
1-4
has
only
three
short
paths,
MAIN-PRE,
MAIN-PROC,
and
MAIN-POST.
A
program
in
one
overlay
segment
may
call
a
subprogram
in
another
segment
if
and
only
if
the
two
segments
occur
on
a
common
path.
Thus,
MAIN
may
call
PRE,
PROC
or
POST,
but
the
three
subroutines
cannot
call
each
other.
A more complex
structure
is
given
in
Figure
1-5
and
is
specified
by
the
ODL
statements
ROOT
A-B-*(C,D-(E,F,G»
END
The
paths
in
this
structure
are
A-B-C, A-B-D-E, A-B-D-F, and A-B-D-G.
A
possible
sequence
of
calls
is
the
following,
A
calls
G,
A
B
I
I
c
G
calls
B,
B
calls
D
I
E
Figure
1-4
OVerlay
Structure
1.4
USING
MCR
TO
INITIATE
TASK
EXECUTION
I
0
I
F
G
Once a
task
image
has
been
built,
MCR
may
be
utilized
to
start
the
execution
of
that
task.
First,
the
task
must
be
installed
in
the
system
by
typing
1-17
CHAPTER
1.
OPERATING
PROCEDURES
lINS
Filespec
where
Filespec
is
a
specification
of
the
file
containing
the
task
image.
The
default
device
is
the
system
disk
and
the
default
file
type
is
TSK.
The
task
is
installed
in
the
partition
to.
which
it
is
bound.
In
an
unmapped
system
it
may
be
installed
in
this
partition
only.
In
a mapped
system
the
/pAR
-
pamame
keyword
may
be
used
to
install
the
task
in
any
partition
of
sufficient
size.
An
error
will
result
if
the
partition
is
larger
than
the
checkpoint
area
in
which
the
task
was
built.
The
default
task
priority
is
50.
The
task
name
may
be
specified
by
using
the
/TASK-name
switch.
The
execution
of
an
installed
task
is
initiated
by
typing
the
RUN
MeR
command:
2RUN
tsk
where
tsk
is
the
task
name
which
was
specified
when
the
task
was
installed
or,
if
none was
given
then,
the
name
specified
when
the
task
was
built,
or
if
none was
given
then,
the
first
six
characters
of
the
task
image
filename.
A
task
may
be
terminated
prior
to
its
normal
termination
by
typing
the
ABORT
MeR
commands
1ABO
tsk
Execution
of
a
task
may
be
suspended
by a
FORTRAN
pause
statement,
or
ended
by
a
STOP
statement.
When
this
occurs,
the
Object
Time
System
will
type
a
line
with
the
task
name,
the
statement
which
caused
the
execution
halt,
and
the
contents
of
the
display
(text
following
STOP
or
PAUSE).
To
continue
execution
after
a
pause,
type
in
the
RESUME
MeR
conunand,
which
takes
the
form s
>RES
ts~
A
task
which
terminates
as
a
result
of
a
CALL
EXIT
statement
will
not
produce
any
output
indicating
it
is
terminating.
1.5
EXAMPLES
The
following
sequence
might
be
used
to
compile,
link
and
execute
a
FORTRAN
task
consisting
of:
a.
the
FORTRAN
main
program
MAIN.FTN,
b.
the
FORTRAN
subroutine
SOORl. FTN ,
c.
several
FORTRAN
subroutines
in
the
file
UTILITY
.FTN,
d.
some
subroutines
in
the
object
module
library
MATLIB.OLB,
and
e.
the
resident
common
block
named
PARM.
,2
FOR
FOR)MAIN,MAIN-MAIN
~SUBR1,SOORl-SUBRl
ZQB}UTILITY,UTILITY-UTILITY
1-18
CHAPTER
1.
OPERATING
PROCEDURES
FOR>tz
>TKB
TKB>TSKIMAGE=MAIN,SUBRl,UTILITY,MATLIB.OLB/LB
TKB>/
ENTER
OPTIONS:
TKB>COMMON=PARM:RO
TKB>TASK=FSYS
TKB>//
2INS
TSKIMAGE
2RUN
FSYS
The
listing
files
produced
by
the
Compiler,
MAIN.LST, SUBRl.LST
and
UTILITY.LST,
are
automatically
printed
by
the
line
printer
spooler
task
and
are
deleted
after
printing.
All
files
reside
or
are
created
on
the
system
disk.
The
preceding
procedure
could
be
accomplished
through
the
use
of
indirect
command
files.
Suppose
the
file
COMPILE.CMD
contains
the
following:
MAIN,MAIN=MAIN
SUBR1,SUBR1=SUBR1
UTILITY,UTILITY=UTILITY
and
the
file
TASKBLD.CMD
contains
the
following:
TSKIMAGE=MAIN,SUBR1,UTILITY,MATLIB.OLB/LB
/
COMMONaaPARM:RO
The
following
is
then
equivalent
to
the
previous
example.
2FOR
@COMPILE
>TKB
~@TASKBLD
TKB>TASK=FSYS
TKB>//
2INS
TSKIMAGE
2RUN
FSYS
1.6
DEBUGGING
A
FORTRAN
PROGRAM
The
RSX-11M
debugging
program,
ODT,
usually
cannot
be
effectively
used
with
a
FORTRAN
program
due
to
the
nature
of
the
object
code
generated
by
the
FORTRAN
Compiler
(see
section
2.2).
However,
in
addition
to
the
FORTRAN
OTS
error
diagnostics
which
include
the
Traceback
Feature
(see
section
2.5),
there
is
another
debugging
tool
available
to
the
FORTRAN
programmer.
Placing
a D
in
column
one
of
a
FORTRAN
statement
allows
that
statement
to
be
conditionally
compiled.
These
statements
are
considered
comment
lines
by
the
FORTRAN
Compiler
unless
the
/DE
switch
is
used
in
the
Compiler
command
string.
In
this
case
the
lines
are
compiled
as
reg~lar
FORTRAN
statements.
Liberal
use
of
PAUSE
statements
and
selective
variable
printout
can
provide
the
user
with
a
method
of
monitoring
program
execution.
This
feature
allows
the
inclusion
of
debugging
aids
that
can
be
compiled
in
the
early
program
development
stages
and
later
treated
as
comment
lines.
1-19
CHAPTER
2
FORTRAN-IV
OPERATING
ENVIRONMENT
2.1
FORTRAN-IV
OBJECT
TIME
SYSTEM
The
FORTRAN
Object
Time
System
(OTS)
is
composed
of
the
following:
1.
Math
routines,
including
the
FORTRAN
library
functions
and
other
arithmetic
routines
(e.g.,
floating
point
routines),
2.
Miscellaneous
utility
routines
(ASSIGN,
DATE,
ERRSET,
etc.),
3.
Routines
which
handle
various
types
of
FORTRAN
I/O,
4.
Error
handling
routines
which
process
arithmetic
errors,
I/O
errors,
and
system
errors,
5.
Miscellaneous
routines
required
by
the
compiled
code,
6.
Process
I/O
routines
(AFC,
UDC,
etc),
7.
Laboratory
Peripheral
Routines
(LPS), and
8.
RSX-1IM
executive
directives.
The
FORTRAN
Library
is
designed
as
a
collection
of
many
small
modules
so
that
unnecessary
routines
can
be
omitted
during
task
building.
For
example,
if
the
user
program
performs
only
sequential
formatted
I/O,
none
of
the
direct
access
I/O
routines
are
included
in
the
task.
2.2
OBJECT
COPE
Typical
FORTRAN
operations
often
require
common
sequences
of
PDP-ll
machine
instructions.
For
example,
at
the
end
of
any
DO-loop,
the
index
variable
must
be
incremented,
compared
with
the
limit
value,
and
a
conditional
branch
taken.
Other
standard
sequences
might
be
generated
to
locate
an
element
of
a
multidimensional
array,
initialize
an
input/output
operation,
or
simulate
a
floating-point
operation
not
supported
by
the
hardware
configuration.
These
common
sequences
of
PDP-ll
instructions
are
contained
in
a
library
known
as
the
Object
Time
System.
The
FORTRAN
Compiler
selects
2-1
CHAPTER
2.
OPERATING
ENVIRONMENT
a
certain
combination
of
these
instruction
sequences
to
implement
a
FORTRAN
program.
During
program
execution,
these
sequences
are
threaded
together
and
effect
the
desired
result.
The
Compiler
references
a
library
instruction
sequence
by
generating
a
word
containing
the
address
of
the
first
instruction
in
the
sequence,
followed
by
information
upon
which
the
instructions
are
to
operate.
In
the
case
of
the
end-of-Do-loop
sequence
the
information
required
is
the
location
of
the
index
variable,
the
limit
value,
and
the
address
of
the
beginning
of
the
loop.
At
runtime,
register
R4
is
used
to
thread
together
the
various
references
to
library
instruction
sequencesJ
the
last
instruction
executed
by
each
instruction
sequence
is
JMP
@(R4)+,
which
transfers
control
to
the
next
library
instruction
sequence.
The mnemonics
(global
names)
used
for
the
library
routine
names
follow
a
logically
consistent
format.
The mnemonics
are
usually
six
characters
in
length.
The
first
two
characters
specify
an
operation.
The
third
character
specifies
the
mOde
of
the
operation,
i.e.,
integer,
floating,
double
precision,
complex,
or
logical.
The
fourth
character
is
always
a
dollar
sign
($).
The
fifth
and
sixth
characters,
if
present,
specify,
respectively,
a
source
and
destination
for
the
operation.
The
source
element
for
the
operation
can
be
a memory
location,
the
hardware
stack,
the
hardware
registers,
or
an
in-line
argument
which
can
be
referenced
through
R4. The
destination
element
for
an
operation
can
be
a memory
location,
the
hardware
stack,
or
a
location
specified'
as
an
in-line
argument
which
can
be
referenced
through
R4.
The
library
routines
perform
arithmetic
operations,
compare
values,
test
values,
calculate
subscripts,
convert
from
one
mode
type
to
/
another,
and
trans~.er
program
control.
There
are
special
routines
to
\
handle
internal
statement
numbers
(ISNs),
enabling
the
FORTRAN
Traceback
feature,
a
routine
to
handle
subprogram
control
transfer,
~d
a
routine
to
push
the
address
of
variables
on
the
hardware
stack.
There
are
also
sever~l
routines
to
handle
special
FORTRAN
runtime
operations
such
as
PAUSE,
STOP,
I/O
initialization,
and
I/O
data
transfers.
For
example,
the
following
FORTRAN
program:
0001
0002
0003
0004
0005
0006
c
C
PROGRAM
TO
DEMONSTRATE
THE
CODE
GENERATED
BY
C
THE
FORTRAN
COMPILER.
C
DIMENSION
RARRAY
(10,10)
I - (3*2 -5) + I
J =
(I+100)*(N**2)
A -
2.0
RARRAY(2,1) = RARRAY(l,l)
END
I
ALLOCATE
A
REAL*4
ARRAY
I
ADD
ONE
TO
I
I
COMPUTE
AN
EXPRESSION
I
ASSIGN
A
VALUE
TO
A
REAL
+ A I
SUM
OF
TWO
REAL
VALUES
would
generate
object
code
that
can
be
symbolically
represented
as
follows
(the
storage
map
is
included
for
reference):
FORTRAN
NAME
RARRAY
I
OFFSET
000006
000626
STORAGE
MAP
ATTRIBUTES
REAL
* 4
INTEGER*2
ARRAY
(10,10)
VARIABLE
2-2
(
CHAPTER
2.
OPERATING
ENVIRONMENT
J
N
A
FORTRAN
ISN 10002
000630
000632
000634
IN'l'EGER*2
INTEGER*2
REAL
* 4
000640 ICI$M 000626
ISN 10003
000644
MOI$MS
000626
000650 ADI$IS
'000144
000654
MOI$MS
000632
000660
MUI$MS
000632
000664
MUI$SS
000666
MOI$SM
000630
ISN 10004
000672
MOF$IM
1040400 000634
ISN 10005
000700
MOF$MM
000006
000012
000706
ADF$MM
000634 000012
ISN 10006
000714
RET$
2.3
SUBROUTINE
LINKAGE
VARIABLE
VARIABLE
VARIABLE
GENERATED
CODE
1
INCREMENT
THE
INTEGER
WHOSE
ADDRESS
,
IS
000626
(I)
MOVE
VALUE
OF
INTEGER
I
ONTO
STACK
;
ADD
100
TO
VALUE
ON
TOP
OF
STACK
;
MOVE
VALUE
OF
INTEGER
N
ONTO
STACK
,
AND
SQUARE
IT
(MULTIPLY
BY
ITSELF)
,
MULTIPLY
(I+100)
AND
(N**2)
1
STORE
VALUE
ON
TOP
OF
STACK
INTO
J
,
MOVE
AN
IMMEDIATE
FLOATING
CONSTANT
,
(2.0)
TO
A
1
MOVE
RARRAY
(1,1)
TO
RARRAY
(2,1)
,
AND ADD
A
TO
RARRAY
(2,1)
RETURN
TO
RSX-11M
(EXIT
FROM
PROGRAM)
All
instances
of
subprogram
linkage
are
performed
in
the
same
manner,
including
linkage
of
user
written
FORTRAN
subprograms,
and
Assembly
language
subprograms.
Control
is
passed
to
the
subprogram
via
the
following
instruction:
JSR
PC,routine
Register
5
(RS)
contains
the
address
of
an
argument
list
having
the
following
formatz
2-3
CHAPTER
2.
OPERATING
ENVIRONMENT
R5 ,
Undefined
I I
of
arquments
address
of
argument
11
address
of
argument
12
·
·
·
address
of
argument
In
The
value
-1
is
stored
in
the
argument
list
as
the
address
of
any
null
arguments.
Null
argwnents
in
CALL
statements
appear
as
successive
commas,
e.g.,
CALL
SUB
(A"B)
Control
is
returned
to
the
calling
program
via
the
instruction
I
RTS
PC
An
assembly
language
subroutine
to
find
the
sum
of
any
number
of
integers
using
the
following
calli
CALL
IADD
(numl,num2,
•••
,numn,isum)
might
look
like
the
following:
TITLE
lADDER
IADD:
:
MOV
(RS)
+,RO
,GET
t
OF
ARGUMENTS
CLR
Rl
,
PREPARE
WORKING
REG.
DECB
RO
I
CALCULATE
t
OF
TERMS
TO
ADD
1$:
ADD
-@
(R5)
+,Rl
,ADD
NEXT
TERM
DECB
RO
,
DECREMENT
COUNTER
BNE
1$
, LOOP
IP
NOT
DONE
MOV
Rl,@(RS)+
,RETURN
RESULT
RTS
PC
,
RETURN
CONTROL
.END
2.4
SUBPROGRAM
REGISTER
USAGE
A
subprogram
that
is
called
by
e
FORTRAN
program
need
not
preserve
any
registers.
However,
the
contents
of
the
hardwar~
stack
must
be
kept
such
that
each
'push'
onto
the
stack
will
be
matched
by
a
'pop'
from
the
stack
prior
to
exiting
the
routine.
User-written
assembly
language
programs
that
call
FORTRAN
subprograms
must
preserve
any
pertinent
registers
before
calling
the
PORT
RAN
routine
and
restore
the
registers,
if
necessary,
upon
return.
Function
subprograms
return
a
single
result
in
the
hardware
registers.
The
register
assignments
for
returning
the
different
variable
types
are
listed
below:
2-4
f
~,
CHAPTER
2.
OPERATING ENVIRONMENT
Integer
and
Logical
functions
-
result
in
RO
Real
functions
-
high
order
result
in
RO,
low
order
result
in
Rl
Double
Precision
functions
-
result
in
RO-R3,
lowest
order
result
in
R3
Complex
functions
-
high
order
real
result
in
RO,
low
order
real
result
in
Rl,
high
order
imaginary
result
in
R2,
low
order
imaginary
result
in
R3
2.5
VECTORED
ARRAYS
Array
vectoring
is
a
process
which
decreases
the
time
necessary
to
reference
elements
of
a
multidimensional
array
by
using
additional
memory
to
store
the
array.
Multidimensional
arrays,
which
are
actually
stored
sequentially
in
memory,
require
certain
address
calculations
to
determine
the
location
of
individual
elements
of
the
array.
Typically,
a mapping
function
is
used
to
perform
this
calculation.
For
example
to
locate
the
element
LIST(1,2,3)
in
an
array
dimensioned
LIST(4,5,6)
a
function
equivalent
to
the
following
may
be
used.
This
function
identifies
a
location
as
an
offset
from
the
origin
of
the
array
storage.
(sl-l)
+
dl
*
(s2
-1) +
dl
* d2 *
(s3
-1) -
(
0)
+ 4 * ( 1 ) + 4 * 5 * ( 2 ) -
44
where
si
-
subscript
i
di
-
dimension
i
Since
such
a mapping
function
requires
multiplication
operation(s),
and
since
some
PDP-ll
hardware
configurations
do
not
have
the
MOL
instruction,
the
compiler
may
'vector'
some
arrays
and
thereby
reduce
execution
time
at
the
expense
of
memory
storage.
,-
If
an
array
is
vectored,
a
particular
element
in
the
array
can
be
located
by
a
simplified
mapping
function,
without
the
need
for
multiplication.
Instead,
a
table
lookup
is
performed
to
determine
the
location
of
a
particular
element.
For
example,
a
vectored,
two
dimensional
array
B(5,5)
automatically
has
associated
with
it
a
one
dimensional
vector
that
would
contain
relative
pointers
to
each
column
of
array
B. The
location
of
the
element
B(m.n),
relative
to
the
beginning
of
the
array,
could
then
be
computed
as:
Vector(n)
+ m
using
only
addition
operations.
Figure
2-2
graphically
depicts
the
array
vectoring
process.
The
compiler
decides
whether
to
vector
a
multi-dimensional
array
based
on
the
ratio
of
the
amount
of
space
required
to
vector
the
array
to
the
total
storage
space
required
by
the
array.
If
this
ratio
is
greater
than
251,
the
array
is
not
vectored
and
a
standard
mapping
function
is
used
instead.
Arrays
with
adjustable
dimensions
are
never
vectored.
vectored
arrays
are
noted
as
such
in
the
storage
map
listing.
2-5
CHAPTER
2.
OPERATING
ENVIRONMENT
The
Compiler
I-VA
switch
can
be
used
to
suppress
all
array
vectoring.
The amount
of
memory
required
to
vector
an
array
can
be
computed
as
the
sum
of
all
array
dimensions
except
the
first.
Por
example,
the
array
X(50,10,30)
requires
10+30-40
words
of
vector
table.
Note
that
the
array
V(5,100)
requires
100
words
of
vector
storage,
whereas
the
array
Y(lOO,S)
requires
only
5
words
of
vector
storage.
It
is
therefore
advantageous
to
place
an
array's
largest
dimension
first
if
it
is
to
be
vectored.
Wherever
possible,
vector
tables
are
shared
among
several
different
arrays.
The
compiler
arranges
sharable
vectors
under
the
following
conditions:
1.
Arrays
are
in
the
same
program
unit
2.
For
the
i
th
dimension
vector
to
be
shared
by
the
arrays,
dimensions
to
the
left
of
the
ith
dimension
must
be
equivalent
in
each
array_
For
example,
given
the
statement
DIMENSION
A(10,10),B(10,20),
A and B
share
a 20 word
vector
for
the
second
dimension
that
contains
the
values
0,
10,
20,
30,
40,
SO,
60,
70,
80,
90,
100, 110,
120, 130, 140,
150,
160,
170,
180,
190,
of
which
the
array
A
uses
only
the
first
ten
elements.
Array
B
B (1
,1)
P1
B(2,1)
B(3,1)
B(4,1)
B (5
,1)
B(1,2)
P2
B(2,2)
B(3,2)
·
B(1,5)
P5
B(2,5)
B(3,5)
B(4,5)
B(5,5)
Associated
Vector
P1
P2
P3
P4
P5
The
location
of
element
Vector(n)
+ m
Figure
2-2
Array
Vectoring
2-6
B(m,n) -
CHAPTER
3
~X-llM
FORTRAN-IV
SPECIFIC
CHARACTERISTICS
'l'hie
chapter
deals
with
information
specific
to
RSX-llH
FORTRAN-IV
that
~s
Q~i.tted
from
or
relaxes
r.est~iQtion8
included
in
the
PDP-ll
FORTRAN
Language
Referenqe
Manual.
It
S~9~~d
b~
noted
that
d~vi,ations
f~om
FORTRAN
syntax
requirements
outlil.l~d
ip
the
PDP-ll
FORT~
Lanqu~ge
Reference
Manual,
even
if
accept~~~
~n
RSX-llM
FORTRAN,
4ecrease
the
portability
of
the
prog;am,
and
may
J?~Ohibit
successful
execution
on
another
PDP-ll
system.
~
4!
~
VNUMLEf
..
~~s.
~.~~l..~.r.t
'QR'l'~
~.llQWt:I
v~~i.~le
names t.o
extend
Past
six
characters
in
~@l.lg1;~.
flow,'VEtl;',
Qnly the.
ti,rsi;
si.x Qhaxoaoters
are
significant
and
should
be
upi,q~e.
~Qng·
~ll
var-iable
n8Jlles
in
the
program
unit.
A
warning
diagnostic
is
given
for
each
variable
name
which
exceeds
six
characters
in
length.
The
diagnostic
will
be
suppressed
if
(/-WR)
is
included
in
the
compiler
command
string'.
3.2
INITIALIZATION
OF
COMMON
VARIABLES
RSX-llM
FORTRAN
CO~o~,
to
be
~tatement.
allows
any
variables
in
COMMON,
i.ncluding
blank
ini.ti_lize.d
i.n any
program
uni.t
by
use
of
the
DATA
3~~
CONTINUATION
LINES
RSX-llM
FORTRAN
does
not
place
any
limi.ts
on
the
number
of
continuation
iines
that
a
statement
may
oont.ain.
~.~
4
DEFAUL~'
LOGI.CAL
WIT
..
J):EVl.CEIFlLE
ASS·I,GNMBNTS
Liste.d:
in
table
3-1
axe
the
default
109ica.l.
unit.
-
device
and
filename
assignments.
. The
default
device
assignments
may
be
changed
at
task
build
time
via
the
ASG
keyword
option
or
prior
to
execution
via
the
REASSIGN
MCR
command.
For
example
the
command:
2REA
tsk
3 LP:
3-1
CHAPTER
3.
SPECIFIC
CHARACTERISTICS
connects
logical
unit
3
to
the
physical
device
unit
line
printer
in
the
task
named
tsk.
The
device
and/or
filename
assignments
may
be
changed
at
execution
time
by
use
of
the
ASSIGN
library
routine
(see
section
B.2).
The
default
filename
conventions
hold
for
logical
units
not
listed
below,
i.e.,
unit
number 12
will
have
a
default
filename
of
FOR012.DAT.
Table
3-1
FORTRAN
Logical
Device
Assignments
Logical
unit
Default
Device
Default
Filename
Number
1
System
disk,
SY:
FOROO1.DAT
2
System
disk,
SY:
FOROO2.DAT
3
System
disk,
SY:
FOROO3.DAT
4
System
disk,
SY:
FOROO4.0AT
5
Requestor
terminal,TI:
FOROO5.0AT
6
Console
listing,
CL:
FOROO6.0AT
Although
any
combination
of
valid
logical
unit
numbers
may
be
used,
there
is
an
imposed
maximum
number
of
units
which
may
be
simultaneously
active.
By
default,
four
file
structured
logical
units
may
be
concurrently
active,
i.e.,
four
files
may
be
open
simultaneously.
The number
may
be
changed
by
use
of
the
ACTFIL
Task
Builder
option
(see
section
1.3.2.1).
It
should
be
noted
that
logical
unit
numbers
are
allocated
consecutively.
For
example,
if
logical
units
2
and
17
are
used,
units
1
through
17
will
be
allocated.
A
formatted
READ
statement
of
the
form:
READ
f,list
is
equivalent
to:
READ
(l,f)list
For
all
purposes
these
two
forms
function
identically.
Assigning
logical
unit
number 1
to
the
terminal,
for
example,
in
both
cases
causes
input
to
come
from
the
terminal.
The
ACCEPT,
TYPE,
and
PRINT
statements
also
have
similar
functional
analogies.
Assigning
devices
to
logical
units
5,
5,
and
6
affects
respectively
the
ACCEPT,
TYPE,
and
PRINT
statements.
3.5
STATEMENT
ORDERING
RESTRICTIONS
RSX-llM
FORTRAN
does
not
impose
requirements
as
those
outlined
Reference
Manual.
There
are
requirements
that
must
be
met:
as
strict
statement
in
the
PDP-ll
FORTRAN
ordering
Language
ordering
only
three
statement
3-2
CHAPTER
3.
SPECIFIC
CHARACTERISTICS
1.
In
a
Subprogram,
the
first
non-comment
line
must
be
a
FUNCTION,
SUBROUTINE
or
BLOCK
DATA
statement.
2.
The
last
line
in
a
program
unit
must
be
an
END
statement.
3.
Statement
Functions
must
be
defined
referenced.
before
they
are
However,
if
the
statement
ordering
requirements
as
outlined
in
the
POP-ll
FORTRAN
Language
Reference
Manual
are
not
followed,
a
warning
diagnostic
will
be
included
with
the
source
listing.
A /-WR
specified
in
the
Compiler
command
will
surpress
the
diagnostic.
3.6
FCS/OTS
FILE
OPEN
CONVENTIONS
A
file
or
device
is
opened
for
I/O
activity
(if
no
file
or
device
is
already
open
on
that
logical
unit)
by
the
execution
of
a
READ
or
a
WRITE
statement.
The
type
of
File
Control
Services
(FCS)
open
operation
invoked
depends
upon
the
type
of
file
being
opened.
The
file
may
be
explicitly
specified
as
"OLD"
or
"NEW"
in
a
call
to
FDBSET;
these
specifications
are
implicit
in
the
use
of
the
READ
and
WRITE
statements.
When
no
explicit
specification
is
made, and a
READ
is
the
first
I/O
operation
performed
on
a
unit,
"OLD"
is
assumed.
If
a
WRITE
is
the
first
I/O
operations,
then
"NEW"
is
assumed.
3-3
(
\
{
\
(
APPENDIX
A
FORTRAN
DATA
REPRESENTATION
A.l
INTEGER
FORMAT
Sign
15 14
B-inary number
o
Integers
are
stored
in
a
two's
complement
representation.
If
the
/I4
compiler
switch
(see
section
1.2.1)
is
used,
an
integer
is
assigned
two
words,
although
only
the
high-order
word
(i.e.,
the
word
having
the
lower
address)
is
significant.
By
default,
integers
will
be
assigned
to
a
single
storage
word.
Explicit
length
integer
specifications
(INTEGER*2
and
INTEGER*4)
will
always
take
precedence
over
the
setting
of
the
/14
switch.
Integer
constants
must
lie
in
the
range
-32768
to
+32767.
For
example:
+22
=
00026
8
-7
= 177718
A.2
FLOATING-POINT
FORMATS
The
exponent
for
both
2-word
and
4-word
floating-point
formats
is
stored
in
excess
128
(12008)
notation.
Binary.
exponents
from
-128
to
+127
are
represented
by
the
binary
equivalents
of
0
through
255 (0
through
3778
).
Fractions
are
represented
in
sign-magnitude
notation
with
the
binary
radix
point
to
the
left.
Numbers
are
assumed
to
be
normalized
and,
therefore,
the
most
significant
bit
is
not
stored
because
it
is
redundant
(this
is
called
-hidden
bit
normalization-).
This
bit
is
assumed
to
be
a 1
unless
the
exponent
is
0
(corresponding
to
2-
128)
in
which
case
it
is
assumed
to
be
O.
The
value
0
is
represented
by
two
or
four
words
of
zeros.
For
example,
+1.0
would
be
represented
by:
40200
o
in
the
2-word
format,
or:
40200
o
o
o
A-I.
APPENDIX
A.
DATA
REPRESENTATION
in
the
4-word
format.
-5
would
be:
140640
0
in
the
2-word
format,
or:
140640
0
0
0
in
the
4-word
format.
A.2.1
Real
Format
(2-Word
Floating
Point)
word
1:
word
2:
Low-order
mantissa
15 o
since
the
high-order
bit
of
the
mantissa
is
always
1,
it
is
discarded,
giving
an
effective
precision
of
24
bits,
or
approximately
7
digits
of
accuracy.
The
magnitude
range
lies
between
approximately
.29
X
10-
38
and
.17
X 1039
A.2.2
Double
Precision
Format
(4-Word
Floating
Point)
word
1:
word
2:
I
Low-order
mantissa
I
15
0
word
3:
I
Lower-order
mantissa
I
15
0
word
4:
I
Lowest-order
mantissa
I
15
0
The
effective
precision
is
56
bits
or
approximately
17
decimal
digits
of
accuracy.
The
magnitude
range
lies
between
.29
X
10-
8
and
.17
X
1039
A-2
f
i
\
(
"-
APPENDIX
A.
DATA
REPRESENTATION
A.2.3
Complex
Format
word
1:
Si~n
10-
B~nary
excess
1= 1 8
~xeQngnt
H!:h-order
m
t;L&UIA
15 14 7 6 °
Real
Part
word
2:
I
Low-order
mantissa
I
15 °
word
3:
Sir
10=
Binary
excess
1-
1~8
eX2Qngnt I
H~~-or:er
m
;Las
15 14 7 6 °
Imaginary
Part
word
4:
I
Low-order
mantissa
I
15 °
A.3
LOGI'CAL*l
I
Data
item
I
7 °
Any
non-zero
value
is
considered
to
have
a
logical
value
of
.TRUE.
The
range
of
numbers
from
+127
to
-128
can
be
represented
in
LOGICAL*l
Format.
LOGICAL*l
array
elements
are
stored
in
adjacent
bytes.
A.4
HOLLERITH
FORMAT
word
1:
I
char
2 I
char
1 I
15 8 7 0
word
2:
is
char
4 ]
char
3 I
8 7 0
I b1ank=
4O
a
Ichar
n
(n~255)1
15
8 7 0
A-3
APPENDIX
A.
DATA
REPRESENTATION
Hollerith
constants
are
stored
internally
one
charac~er
per
byte.
Hollerith
values
are
padded
on
the
right
with
blanks
to
fill
the
associated
data
item
if
necessary.
Hollerith
constants
can
only
be
used
in
DATA,
FORMAT,
and
CALL
statements.
Only
the
quoted
form
of
Hollerith
constants
can
be
used
in
STOP
and
PAUSE
statements.
A.5
LOGICAL
FORMAT
True:
word 1 I 112121212111
15 0
word 2 I
uns~cIfIed
I
15 0
False:
word 1 I 01010101010 I
t5 0
word 2
unsEecified
I
15 0
Logical
(LOGlCAL*4)
data
items
are
treated
as
LOGICAL*l
values
for
use
with
arithmetic
and
logical
operators.
Any
non-zero
value
in
the
low
order
byte
is
considered
to
have
a
logical
value
of
true
in
logical
expressions.
A.6
RADIX-50
FORMAT
Radix-50
character
set
Character
Octal
Radix-50
ASCII
Equivalent Equivalent
space
40
0
A-Z
101-132
1-32
$ 44 33
56
34
unused
35
0-9
60-71
36-47
The
following
table
provides
a
convenient
means
of
translating
between
the
ASCII
character
set
and
its
Radix-50
equivalents.
For
example,
given
the
ASCII
string
X2B,
the
Radix-50
equivalent
is
(arithmetic
is
performed
in
octal):
X-113000
2=002400
B-000002
X2B=-115402
A-4
APPENDIX
A.
DATA.
REPRESENTATION
Single
Char.
or
Second
Third
First
Char.
Character
Character
------------
--------
--------
A
003100
A
000050
A
000001
B
006200
B
000120
B
000002
C 011300 C 000170 C
000003
D 014400 D 000240 D
000004
E
017500
E
000310
E
000005
F 022600 F 000360 F 000006
G
025700
G
000430
G
000007
H
031000
H
000500
H 000010
I 034100 I 000550 I
000011
J
037200
J 000620 J
000012
K 042300 K
000670
K
000013
L 045400 L 000740 L
000014
M
050500
M 001010 M
000015
N
053600
N
001060
N 000016
o
056700
o 001130 o
000017
P
062000
P
001200
P 000020
Q 065100 o 001250 Q
000021
R 070200 R 001320 R
000022
S
073300
S 001370 S
000023
T
076400
T 001440 T 000024
U
101500
U 001510 U
000025
V
104600
V
001560
V
000026
W
107700
W
001630
W
000027
x
113000
x
001700
x
000030
y
116100
Y 001750 Y
000031
z
121200
z
002020
z
000032
$
124300
$ 002070 $
000033
127400
002140
000034
132500
002210
000035
0
135600
0
002260
0
000036
1
140700
1
002330
1
000037
2
144000
2
002400
2 000040
3
147100
3 00245'0 3
000041
4
152200
4 002520 4
000042
5
155300
5
002570
5
000043
6
160400
6
002640
6
000044
7
163500
7 002710 7
000045
8
166600
8
002760
8 000046
9
171700
9
003030
9
000047
A-5
-j"'
...
t_>~
/
(
\.
APPENDIX
B
LIBRARY
SUBROUTINES
B.l
LIBRARY
SUBROUTINE
SUMMARY
In
addition
to
the
functions
intrinsic
to
the
FORTRAN
system,
there
are
subroutines
in
the
FORTRAN
library
which
the
user
may
call
in
the
same manner
as
a
user-written
subroutine.
These
subroutines
are:
ASSIGN
CLOSE
DATE
I
DATE
ERRSET
ERRSNS
ERRTST
EXIT
USEREX
FDBSET
RADSO
IRADSO
RSOASC
Allows
specification
at
run-time
of
filename
or
device
and
filename
to
be
associated
with
a
FORTRAN
logical
unit
number.
Allows
the
file
on
a
specified
logical
unit
to
be
closed.
Returns
a
9-byte
string
containing
representation
of
the
current
date.
the
ASCII
Returns
three
integer
values
representing
the
current
month,
day
and
year.
Allows
the
user
to
specify
the
action
to
be
taken
on
detection
of
certain
errors.
Allows
the
user
to
obtain
information
about
the
most
recently
detected
error
condition.
Allows
monitoring
of
certain
error
types
during
program
execution.
Terminates
the
execution
of
a
program
and
returns
control
to
the
RSX-I1M
executive.
Allows
specification
of
a
routine
to
be
invoked
as
part
of
program
termination.
Allows
specification
of
special
I/O
options
to
be
associated
with
a
logical
unit.
Performs
conversion
of
up
to
six
character
Hollerith
strings
and
returns
the
result
as
a
function
value.
Performs
conversion
of
Hollerith
strings
to
Radix-50
representation.
Converts
Radix-50
strings
to
Hollerith
strings.
B-1
APPENDIX
B.
SYSTEM·
SUBROUTINES
RANDU,
RAN
SECNDS
TIME
Returns
a random
real
number
with
a
uniform
distribution
between
0
and
1.
Provides
system
time
of
day
or
elapsed
time
as
a
floating
point
value
in
seconds.
Returns
an
representation
seconds.
a-byte
string
containing
the
ASCII
of
the
current
time
in
hours,
minutes
and
B.2
ASSIGN
The
ASSIGN
subroutine
allows
the
association
of
filename
information
with
a
logical
unit
number. The
ASSIGN
call,
if
present,
must
be
executed
before
the
logical
unit
is
opened
for
I/O
operations
(by
READ
or
WRITE)
for
sequential
access
files,
or
before
the
associated
DEFINE
FILE
statement
for
random-access
files.
The
device
assiqnment
remains
in
effect
until
a new
CALL
ASSIGN
is
performed.
The
filename
assignment
remains
in
effect
only
until
the
file
is
closed
by
a
CALL
CLOSE.
The
call
to
ASSIGN
has
the
general
form:
CALL
ASSIGN
(n,
name,
icnt)
CALL
ASSIGN
requires
only
the
first
argument,
all
others
are
optional,
and
if
omitted
are
replaced
by
the
default
values
as
noted
in
the
argument
descriptions.
However,
if
any
argument
is
to
be
included,
all
arguments
that
precede
it
must
also
be
included.
A
description
of
the
arguments
to
the
ASSIGN
routine
follows:
name
ient
logical
unit
number
expressed
as
an
integer
constant,
variable,
or
expression.
Hollerith
or
literal
string
containing
any
standard
RSX-llM
device/filename
specification.
If
the
device
is
not
specified,
then
the
device
remains
unchanged
from
the
d~fault
assignments,
or
the
MeR
REASSIGN
command.
If
a
filename
is
not
specified,
the
default
names
as
described
in
section
3.4
are
used.
specifies
the
number
of
characters
in
the
string
'name'.
If
'icnt'
is
zero,
the
string
'name'
will
be
processed
until
the
first
null
character
is
encountered.
An
argument
is
allowed
after
icnt
to
be
compatible
with
previous
forms
of
CALL
ASSIGN.
For
example,
in
the
following
program:
CALL
ASSIGN
(3,
'TT:')
WRITE
(3,-)
••••
CALL
CLOSE
(3)
WRITE
(3,-)
••••
B-2
- I
~I
I
I
I
I
~
~
APPENDIX
B.
SYSTEM
SUBROUTINES
both
WRITE
operations
will
occur
on
the
terminal.
WRITE
to
revert
back
to
SY:,
another
CALL
explicitly
setting
SY:
to
unit
3.
B.3
CLOSE
To
cause
the
second
ASSIGN
must
be
used,
The
CLOSE
subroutine
allows
the
currently
open
file
on
a
logical
unit
to
be
closed.
The
form
of
the
call
is:
CALL
CLOSE
(n)
where
n
is
an
integer
value
specifying
the
logical
unit.
When
the
close
is
completed
the
buffers
and
FDB
associated
with
the
file
are
again
available
for
use.
B.4
The
DATE
subroutine
can
be
used
in
a
FORTRAN
program
to
obtain
the
current
date
as
maintained
within
the
system.
The
DATE
subroutine
is
called
as
follows:
CALL
DATE
(array)
where
array
is
an
array
capable
of
holding
a
9-~te
string.
The
array
specification
in
the
call
may
be
expressed
as
the
array
name
alone:
CALL
DATE
(a)
in
which
the
first
three
elements
of
the
real
array
a
are
used
to
hold
the
date
string,
or
as:
CALL
DATE
(a(i»
which
causes
the
9-byte
string
to
begin
at
the
i(th)
element
of
the
array
a.
The
date
is
returned
as
a
9-~te
(9-character)
string
in
the
form:
where:
dd-mrnm-yy
dd
is
the
2-digit
date
mmm
is
the
3-letter
month
specification
yy
is
the
last
two
digits
of
the
year
B-3
APPENDIX
B.
SYSTEM
SUBROU'l'INES
For
example:
l5-NOV-75
In
the
case
where
the
array
is
a
real
array,
4-1/2
words
are
used
to
contain
the
data
string
with
the
remaining
array
storage
being
untouched.
Therefore,
the
date
string
is
stored
in
the
first
nine
bytes
in
the
elements
a(i),
a(i+l),
and
a(i+2).
The
last
three
bytes
of
a(i+2)
are
untouched
and
should
be
filled
with
blanks
by
the
user
if
he
intends
to
print
the
date
with
a
JA4
format.
B.5
I
DATE
IDATE
returns
three
integer
values
representing
the
current
month,
day,
and
year.
The
call
has
the
form:
CALL
IDATE
(i,
j,
k)
If
the
current
date
were
March
19,
1975
the
values
of
the
integer
variables
upon
return
would
be:
i = 3
j = 19
k = 75
B.6
ERRSET
The
ERRSET
subroutine
allows
specification
of
the
action
to
be
taken
when
an
error
is
detected
by
the
OTS. The
error
action
to
be
taken
is
specified
individually
for
each
error,
independent
of
other
errors.
The
general
form
of
the
call
is:
where
CALL
ERRSET
(number,
contin,
count,
type,
log,
maxlim)
number
con
tin
count
type
is
an
integer
value
specifying
the
error
number
to
which
the
following
parameters
apply.
is
a
Logical
value
specifying
whether
or
not
to
continue
after
an
error.
.TRUE. means
continue,
.FALSE. means
exit
if
this
error
occurs.
is
a
Logical
value
specifying
whether
to
count
this
error
against
the
task
maximum
error
limit
TRUE.
means
count,
FALSE. means
don
t
count
it.
is
a
logical
value
specifying
the
type
of
continuation
to
perform.
TRUE.
means
that
an
ERR
a
transfer
is
to
be
taken
if
available.
If
this
action
is
indicated
and
an
ERR
-
keyword
is
not
specified
in
the
I/O
statement,
then
the
task
will
exit
when
the
error
occurs.
.FALSE. means
B-4
APPENDIX
B.
SYSTEM
SUBROUTINES
log
maxlim
return
to
the
routine
that
detected
the
error
for
default
error
recovery.
is
a
logical
value
specifying
whether
to
produce
an
error
message
for
this
error.
.TRUE. means
produce
message,
.FALSE. means
don't
produce
a
message.
is
a
positive
integer
value
used
to
set
the
task's
maximum
error
limit.
The
default
value
is
set
to
31
at
task
initialization.
Consult
section
C.2,
OTS
Error
Processing,
for
a
complete
description
of
the
allowed
values
and
meanings
of
these
arguments.
Null
arguments
are
permitted
for
all
but
the
first
argument
and
cause
no
change
in
the
current
state
of
that
control
code.
B.7
ERRSNS
The
ERRSNS
subroutine
allows
the
user
to
obtain
information
about
the
most
recent
error
that
has
occurred
during
program
execution.
The
general
form
of
the
call
is:
where
num
CALL
ERRSNS
(nurn,
fcserr,
fcserl,
iunit)
is
an
INTEGER*2
variable
or
array
element
into
which
will
be
stored
the
most
recent
error
number.
(A
zero
will
be
returned
if
no
error
has
occurred.)
If
the
last
error
occurred
as
a
result
of
an
error
indication
from
File
Control
Services,
then
the
next
three
parameters
will
receive
selected
values
from
the
file
descriptor
block
(FOB).
Otherwise,
values
of
zero
will
be
returned.
Consult
the
I/O
Operations
Reference
Manual (DEC-ll-OXFSA-A-D)
for
definitions
of
the
interpretation
of
the
FCS
error
return
codes.
fcserr
is
an
INTEGER*2
variable
or
array
element
into
which
will
be
stored
the
F.ERR
field
of
the
FOB.
fcserl
is
an
INTEGER*2
variable
or
array
element
into
which
will
be
stored
the
F.ERR+l
field
of
the
FOB
iunit
is
an
INTEGER*2
variable
or
array
element
into
which
will
be
stored
the
logical
unit
number.
From
zero
to
four
arguments
may
be
specified.
arguments
serves
to
clear
ERRSNS
from
previous
calls.
an
error
occurs
in
a
given
section
of
a
program,
technique
is
suggested;
Specifying
zero
To
determine
if
the
fol~owing
1.
Call
ERRSNS
immediately
prior
to
the
segment
in
order
to
clear
any
previous
error
data:
2.
Execute
the
section
B-5
APPENDIX
B.
SYSTEM
SUBROUTINES
3.
Call
ERRSNS
again
and
branch
on
a
non-zero
argument
to
error
analysis
code.
For
example:
CALL
ERRSNS
CALL
ASSIGN
(1,
'NAME.DAT')
CALL
FDBSET
(l,'OLD','SHARE')
CALL
ERRSNS
(IERR)
IF
(IERR.NE.O)
GO
TO
100
B.8
ERRTST
The
ERRTST
subroutine
allows
the
user
program
to
monitor
the
types
errors
detected
during
program
execution.
The
call
is
of
the
form:
CALL
ERRTST
(i,
j)
where
i
is
the
error
number
and
the
value
of
j
is
returned
as:
j=l
if
an
error
number i
has
occurred
j=2
if
an
error
number i
has
not
occurred
The
sequence:
CALL
ERRTST
(43,J)
GO
TO
(lO,20),J
20
CONTINUE
transfers
control
to
statement
10
if
an
error
43
has
occurred.
section
C.2.3.
for
a
discussion
of
error
codes
and
messages.
of
See
The
ERRTST
routine
also
resets
to
0
the
error
flag
for
that
error
class
(but
not
the
error
count
used
by
ERRSET).
For
example:
CALL
ERRTST
(I,J)
CALL
ERRTST
(I,J)
The
second
call
is
guaranteed
to
return
J-2.
The
ERRTST
subroutine
is
independent
of
the
ERRSET
subroutine;
neither
directly
influences
the
other
except
that
ERRSET
can
cause
execution
to
terminate.
B.9
EXIT
A
call
to
the
EXIT
subroutine,
in
the
form:
CALL
EXIT
terminates
execution.
It
causes
all
files
to
be
closed
and
the
issuing
task
to
be
terminated.
B-6
(
"
(
APPENDIX
B.
SYSTEM
SUBROUTINES
B.lO
USEREX
USEREX
is
a
subroutine
which
allows
specification
of
a
routine
to
be
invoked
as
part
of
program
termination.
This
allows
clean
up
operations
in
non-FORTRAN
routines.
The
form
of
the
subroutine
call
is:
CALL
USEREX
(name)
Where
'name'
is
the
routine
which
will
be
called
at
exit
time
and
should
appear
in
an
EXTERNAL
statement
somewhere
in
the
program
unit.
Control
is
transferred
with
a JSR PC,name
instruction
after
all
procedures
required
for
FORTRAN
program
termination
have
been
completed.
The
transfer
of
control
takes
place
instead
of
the
normal
exit
to
the
RSX-llM
executive.
The
routine
specified
by
USEREX
may
perform
the
exit
procedure
itself
or
return
with
an
RTS
PC.
Boll
FDBSET
The
FDBSET
subroutine
permits
specification
of
special
input/output
options
available
through
File
Control
Services
under
RSX-llM.
where
CALL
FDBSET
(unit,
mode,
share,
numbuf,
initsz,
extend)
unit
mode
share
is
an
integer
value
specifying
the
logical
unit
to
which
the
subsequent
arguments
apply
is
one
of
the
following
literals
specifying
the
type
of
access
to
be
used
(only
the
first
letter
is
checked
for
validity):
'READONLY'
'NEW'
'OLD'
'APPEND'
'UNKNOWN'
'MODIFY'
'ISUP'
For
read
only
access
For
creating
a new
file
For
accessing
an
existing
file
For
appending
to
an
existing
file
(meaningful)
for
sequential
files
only)
When
it
is
not
known
whether
a
file
exists:
this
option
searches
for
it,
opens
it
if
it
already
exists,
or
creates
the
file
if
it
does
not.
Open
an
old
file
for
updating.
The
file
can
not
be
extended.
Open a new
file
(for
output)
but
inhibit
superseding
of
the
previous
version.
This
file
will
replace
the
current
version.
If
this
argument
is
omitted
the
default
is
determined
by
the
first
I/O
operation
performed
on
that
unit.
If
a
WRITE
operation
is
the
first
I/O
operation
performed
on
that
unit,
'NEW'
is
assumed.
If
a
READ
operation
is
the
first
I/O
operation
performed
on
that
unit,
'OLD'
is
assumed.
is
the
literal
'SHARE'
indicating
the
FCS
shared
access
bit
should
be
set.
B-7
APPENDIX
B.
SYSTEM
SUBROUTINES
numbuf*
initsz
extend
is
an
integer
value
indicating
the
number
of
internal
buffers
to
be
used
for
multibuffered
input/output.
If
this
argument
is
omitted,
one
internal
buffer
is
used.
The
ACTFIL
option
in
the
Task
Builder
command
sequence
is
used
to
extend
the
buffer
area.
is
an
integer
value
indicating
the
initial
allocation,
in
disk
blocks,
of
a new
file.
is
an
integer
value
specifying
the
number
of
blocks
by
which
to
extend
a
file.
FDBSET
may
only
be
called
prior
to
opening
the
unit
specified
in
the
first
argument.
CALL
FDBSET,
CALL
ASSIGN,
and
the
DEFINEFILE
statement
may
be
used
together.
The
unit
number
argument
is
required.
All
other
arguments
may
be
null
or
missing
to
indicate
no
specification
for
that
argument.
B.12
RADSO
The
RADSO
function
subprogram
provides
a
simplified
way
to
encode
RSX-ILM
task
names
in
Radix-50
notation.
The form
of
the
call
is
where
RADSO
(name)
name
is
the
variable
name
or
array
element
corresponding
to
an
ASCII
string.
Note
that
the
RADSO
function
may
be
used
as
an
argument
to
an
RSX-llM
system
directive
sUbroutine,
e.g.,
DATA
A/'JOE'/
CALL
REQUES
(RADSO(A),
•••
)
THE
RADSO
function
is
equivalent
to
the
following
FORTRAN
function
subprogram:
FUNCTION
RADSO(A)
CALL
IRADSO
(6,A,RADSO)
RETURN
END
B.13
IRADSO
The
IRADSO
subprogram
performs
conversions
between
strings
and
Radix-50
representation.
Radix-50
Hollerith
(text)
representation
is
*Multi-buffering
is
not
implemented
in
the
current
release
of
RSX-llM.
It
will
be
included
in
a
subsequent
release.
B-8
APPENDIX
B.
SYSTEM
SUBROUTINES
required
by
the
ISA
Process
Control
and
System
Directives
Subroutines
for
the
specification
of
task
names
within
the
RSX-llM
system.
(See
the
PDP-II
FORTRAN
Language
Manual
for
details
of
the
Radix-50
representation.)
lRADSO
may
be
called
as
a
FUNCTION
subprogram
if
the
return
value
is
desired,
or
as
a
SUBROUTINE
subprogram
if
no
return
value
is
desired.
The
form
of
the
call
is
n a
lRADSO
(icnt,
input,
output)
or
CALL
lRADSO
(icnt,
input,
output)
where
icnt
is
the
(integer)
maximum number
of
characters
to
convert.
input
is
an
ASCII
(Hollerith)
text
string
to
be
converted
to
Radix-50.
output
is
the
location
for
storing
the
results
of
the
conversion.
n
is
the
number
of
characters
actually
converted.
Three
characters
of
text
are
packed
into
each
word
of
output.
The
number
of
output
words
modified
is
computed
by
the
expression
(in
integer
mode)
(ICNT+2)
/3
Thus
if
a
count
of
four
is
specified,
two
words
of
output
will
be
written
even
if
only
a
l-character
input
string
is
given
as
an
argument.
Scanning
of
input
characters
will
terminate
on
the
first
non-radix-SO
character
encountered
in
the
input
string.
B.14
RSOASC
The
RSOASC
subprogram
provides
decoding
of
Radix-50
encoded
values
into
ASCII
strings.
The
form
of
the
call
is:
where
CALL
RSOASC
(icnt,
input,
output)
icnt
input
is
the
number
of
output
converted.
characters
to
be
is
the
variable
or
array
containing
the
encoded
input.
Note
that
(icnt+2)/3
words
will
be
read
for
conversion.
B-9
APPENDIX
B.
SYSTEM
SUBROUTINES
output
is
the
variable
or
array
into
characters
(bytes)
will
be
placed.
which
icnt
If
the
undefined
Radix-50
code
is
detected,
or
the
Radix-50
word
exceeds
the
maximum
value
174777
(octal)
then
question
mark(s)
(ft?ft)·
will
be
placed
in
the
output.
B.15
RANDU,RAN
The random number
generator
can
be
called
as
a
subroutine,
RANDU,
or
as
an
intrinsic
function,
RAN.
The
subroutine
call
is
performed
as
follows:
CALL
RANDU
(iI,
i2,
x)
where
il
and
i2
are
previously
defined
integer
variables
and
x
is
the
real
variable
name
in
which
is
returned
a random number
between
0
and
1.
il
and
i2
should
be
initially
set
to
O.
II
and
i2
are
updated
to
a
new
generator
base
during
each
call.
Resetting
il
and
i2
to
0
repeats
the
random number
sequence.
The
values
of
il
and
i2
have
a
special
form;
only
0
or
saved
values
of
il
and
i2
should
be
stored
in
these
variables.
Use
of
the
random number
subroutines
is
similar
to
the
use
of
the
RAN
function
where:
x =
RAN
(iI,
i2)
is
the
functional
form
of
the
random number
generator.
B.16
SECNDS
The
SECNDS
FUNCTION
subprogram
returns
the
system
time
as
a
single
precision
floating
point
value
less
the
value
of
its
single
argument.
For
example:
TIM=SECNDS
(0.)
will
return
the
number
of
seconds
since
midnight,
that
is,
the
current
time
of
day.
It
may
be
called
with
a
non-zero
argument
for
performing
elapsed
time
computations
as
in
C
C
C
C
START
OF
TIMED
SEQUENCE
Tl
II:
SECNDS(O.)
CODE
TO
BE
TIMED
DELTA
= SECNDS(Tl)
where
DELTA
will
give
the
elapsed
time.
B-lO
(
APPENDIX
B.
SYSTEM
SUBROUTINES
The
value
of
SECNDS
is
accurate
to
not
less
than
the
resolution
of
the
system
clock:
0.0166
•••
seconds
for
a
60-cycle
clock
and
0.02
seconds
for
a
50-cycle
clock.
Systems
with
a
programmable
clock
have
resolu-
tion
not
less
than
the
clock
tick
as
set
at
SYSGEN.
With
24
bits
of
precision
for
accurate
to
the
clock
tick
duration.
B.17
TIME
real
for
values,
values
this
up
to
representation
is
about
two
days
in
The
TIME
subroutine
allows
the
user
to
access
the
current
system
time
as
an
ASCII
String.
Its
form
is
as
follows:
CALL
TIME
(a)
The
TIME
call
returns
the
time
as
an
8-byte
(8-character,
including
colons)
ASCII
string
of
the
form:
where
hh:mm:ss
hh
is
the
two-digit
hour
indication
mm
is
the
two-digit
minute
indication
ss
is
the
two-digit
second
indication
For
example:
10:45:23
A
24-hour
clock
is
used.
This
quantity
is
typically
output
with
a
2A4
format
specification.
B-ll
(
\
(
\.
APPENDIX
C
FORTRAN
ERROR
DIAGNOSTICS
C.l
COMPILER
ERROR
DIAGNOSTICS
The RSX-llM
FORTRAN
Compiler,
while
reading
and
processing
the
FORTRAN
source
program,
can
detect
syntax
errors
(or
errors
in
general
form)
such
as
unmatched
parentheses,
illegal
characters,
unrecognizable
key
words,
missing
or
illegal
statement
parameters.
The
error
diagnosti'cs
are
generally
clear
in
specifying
the
exact
nature
of
the
error.
In
most
cases,
a
check
of
the
general
form
of
the
statement
in
question
as
described
in
the
PDP-II
FORTRAN
Language
Reference
Manual
will
help
determine
the
location
of
the
error.
Some
of
the
most
common
causes
of
syntax
errors,
however,
are
typing
mistakes.
A
typing
mistake
can
sometimes
cause
the
Compiler
to
give
very
misleading
error
diagnostics.
The
user
should
be
careful
of
the
following
common
typing
mistakesl
1.
Missing
commas
or
parentheses
in
a
complicated
expression
or
FORMAT
Statement.
2.
Misspelling
of
particular
instances
of
variable
names.
If
the
Compiler
does
not
detect
this
error
(it
usually
cannot),
execution
may
also
be
affected.
3.
An
inadvertent
line
continuation
signal
on
the
line
following
the
statement
in
error.
4.
If
the
user
terminal
does
not
clearly
differentiate
between
0
(zero)
and
the
letter
0,
what
appear
to
be
identical
spellings
of
variable
names
may
not
appear
so
to
the
Compiler,
and
what
appears
to
be
a
constant
expression
may
not
appear
so
to
the
Compiler.
If
any
errors
were
detected
in
a
compilation,
the
message:
ERRORS
DETECTED:
n
will
be
printed
on
the
initiating
terminal;
n
is
the
number
of
errors,
not
including
warnings,
detected
by
the
compiler.
The
next
three
sections
describe
the
initial
phase
and
secondary
phase
error
diagnostics
and
the
fatal
FORTRAN
Compiler
error
diagnostics.
C-l
APPENDIX
C.
ERROR
DIAGNOSTICS
The
following
is
an
example
of
a
FORTRAN
program
with
diagnostics
issued
by
the
Compiler.
FORTRAN
IV
0001
0002
0003
0004
0005
10
0006 10
.*
•• * M
0007 C
.*
•• * E
FORTRAN
IV
M01-01
SOURCf
LISTING
PAGE
001
DOUBLE
P~!CIStON
OBlE
D8l£2
MISSING
COMMA
DATA
INT/100/0BLE/500.1
MISSING
COMMA
OBLE2
INT/2.
5
••
0SlE
WRITE,(6,10) DeLE,oelE
EXTRA
COMMA
FORMAT(lX,2F12.6) .
STOP
lABEL
DEFINEO
PREVIOUSLY
INTEGER
INT
NOT
STANDARD
ORDERING
END
NO
END
STATEMENT
DIAGNOSTICS
tN
lINE 0002
MSG
*030
I~
lINE
0004
MSG
*049
[
~'RNING]
MSG
*091
[
WARNING
J
MSG
*093
EXTRA
CHARACTERS
AT
END
OF
STATEMENT
SYNTAX
ERROR
VA~I'BlE
"DBlEOB"
NAME
EXCEEOS
6
C~'RACTERS
NON-STANDARD
STATEMENT
ORDERING
C-2
APPENDIX
C.
ERROR
DIAGNOSTICS
C.l.l
Errors
Reported
by
the
Initial
Phase
of
the
Compiler
Some
of
the
easily
recognizable
FORTRAN
syntax
errors
are
detected
by
the
initial
phase
of
the
Compiler.
These
errors
are
reported
in
the
source
program
listing.
They
are
not
reported
if
a
source
listing
is
not
requested.
The
error
diagnostics
are
printed
after
the
source
statement
to
which
they
apply
(the
L
error
diagnostic
is
an
exception).
The
general
form
of
the
diagnostic
is
as
follows:
***** c
Where c
i2
a
code
letter
whose meaning
is
described
below:
Code
Letter
B
C
E
H
I
K
L
M
P
S
u
INITIAL
PHASE
ERROR
DIAGNOSTICS
Description
Columns
1-5
of
continuation
line
are
not
blank.
Columns
1-5
of
a
continuation
line
must
be
blank
except
for
a
possible
'0'
in
column
1.
Illegal
continuation.
Comments
cannot
be
continued
and
the
first
line
of
any
program
unit
cannot
be
a
continuation
line.
Missing
END
supplied
by
encountered.
statement.
An
the
Compiler
END
statement
if
end-of-file
is
is
Hollerith
string
or
quoted
literal
string
longer
than
255
characters
or
longer
than
the
remainder
of
the
statement.
Non-FORTRAN
character
used.
The
line
contains
a
character
that
is
not
in
the
FORTRAN
character
set
and
is
not
used
in
a
Hollerith
string
or
comment
line.
Illegal
statement
label
definition.
Illegal
(non-numeric)
character
in
statement
label.
Line
too
long
to
print.
There
are
more
than
80
characters
(including
spaces
and
tabs)
in
a
line.
Note:
this
diagnostic
is
issued
preceding
the
line
containing
too
many
characters.
Multiply
defined
label.
Statement
contains
unbalanced
parentheses.
Syntax
error.
Statement
not
form.
Multiple
equal
signs,
etc.
of
the
general
FORTRAN
statement
Statement
could
not
be
identified
as
a
legal
FORTRAN
statement.
C-3
APPENDIX
C.
ERROR
DIAGNOSTICS
C.l.2
Errors
Reported
by
Secondary
Phases
of
the
Compiler
Those
Compiler
error
diagnostics
not
reported
by
the
initial
phase
of
the
Compiler
will
appear
immediately
after
the
source
listing
and
immediately
before
the
storage
map.
Since
the
diagnostics
appear
after
the
entire
source
program
has
been
listed,
they
must
reference
the
statement
to
which
they
apply
by
using
the
internal
sequence
numbers
assigned
by
the
Compiler.
The
general
form
of
the
diagnostic
is:
IN
LINE
nnnn'MSGlm
text
Where
nnnn
is
the
internal
sequence
number
of
the
statement
in
question,
m
is
an
integer
constant
specifying
the
error
number,
and
text
is
a
short
description
of
the
error.
Below,
listed
alphabetically,
are
the
error
diagnostics.
Included
with
each
diagnostic
is
a
brief
explanation.
Refer
to
the
PDP-ll
FORTRAN
Language
Reference
Manual
for
information
to
help
correct
the
error.
The
notation
****
signifies
that
a
particular
variable
name
or
statement
label
will
appear
at
that
place
in
the
text.
SECONDARY
PHASE
ERROR
DIAGNOSTICS
ADJUSTABLE
DIMENSIONS
ILLEGAL
FOR
ARRAY
****
All
arrays
must
be
dimensioned
with
integer
constants
except
as
specified
in
the
Language
Reference
Manual.
ARRAY
****
HAS
TOO
MANY
DIMENSIONS
An
array
can
have
up
to
seven
dimensions.
ATTEMPT
TO
EXTEND
COMMON
BACKWARDS
While
attempting
to
equivalence
arrays
in
COMMON,
an
attempt
was made
to
extend
COMMON
past
the
recognized
beginning
of
COMMON
storage.
COMMON
BLOCK
EXCEEDS
MAXIMUM
SIZE
An
attempt
was made
to
allocate
more
space
to
COMMON
than
is
physically
addressable
()32k
words).
DANGLING
OPERATOR
An
operator
(+,-,*,/,
etc.)
is
missing
an
operand.
Example:
I=J+
DEFECTIVE
DOTTED
KEYWORD
A
dotted
relational
operator
was
not
recognized.
Also,
possible
misuse
of
decimal
point.
DO
TERMINATOR
****
PRECEDES
DO
STATEMENT
The
statement
specified
as
the
terminator
of
a
DO
loop
must
come
after
the
DO
statement.
EXPECTING
LEFT
PARENTHESES
AFTER
****
An
array
name
or
Function
name
reference
is
not
followed
by
a
left
parenthesis.
C-4
APPENDIX
C.
ERROR
DIAGNOSTICS
EXTRA
CHARACTERS
AT
END
OF
STATEMENT
All
the
necessary
information
for
a
syntactically
correct
FORTRAN
statement
has
been
found
on
this
line,
but
more
information
exists.
Possibly
due
to
inadvertent
continuation
signal
on
next
line,
or
a
missing
comma.
FLOATING
CONSTANT
TOO
SMALL
A
floating
constant
in
an
expression
is
too
close
to
zero
to
be
represented
in
the
internal
format.
Use
zero
if
possible.
ILLEGAL
ADJACENT
OPERATOR
Two
operators
(*,/,
logical
operators,
etc.)
are
illegally
placed
next
to
each
other.
Example I
I/*J.
ILLEGAL
ELEMENT
IN
I/O
LIST
An
item,
expression,
or
implied
DO
specifier
in
an
I/O
list
is
of
illegal
syntax.
ILLEGAL
DO
TERMINATOR
STATEMENT
****
A
DO
statement
terminator
must
not
be
a
GO
TO,
arithmetic
IF,
RETURN,
or
DO
statement
or
logical
IF
containing
one
of
these
statements.
ILLEGAL
STATEMENT
ON
LOGICAL
IF
The
statement
contained
in
a
logical
IF
must
not
be
another
logical
IF
or
DO
statement.
ILLEGAL
TYPE
FOR
OPERATOR
An
illegal
variable
type
has
been
used
with
an
exponentiation
or
logical
operator.
ILLEGAL
USAGE
OF
OR
MISSING
LEFT
PARENTHESIS
A
left
parenthesis
was
required
but
not
found,
or
a
variable
reference
or
constant
is
illegally
followed
by
a
left
parenthesis.
INTEGER
OVERFLOW
An
integer
constant
or
expression
value
must
not
fall
outside
the
range
-32767
to
+32767.
INVALID
COMPLEX
CONSTANT
A
complex
constant
has
been
improperly
formed.
INVALID
DIMENSIONS
FOR
ARRAY
An
attempt
was made
while
dimensioning
an
array
to
explicitly
specify
zero
as
one
of
the
dimensions.
INVALID
DO
TERMINATOR
ORDERING
AT
LABEL ****
Do
loops
are
incorrectly
nested.
INVALID
EQUIVALENCE
Illegal
equivalence,
or
equivalence
contradictory
to
a
previous
equivalence.
INVALID
FORMAT
SPECIFIER
that
is
A
format
specifier
is
not
the
label
of
a
FORMAT
statement
or
an
array
name.
c-s
APPENDIX
C.
ERROR
DIAGNOSTICS
INVALID
IMPLICIT
RANGE
SPECIFIER
Illegal
implicit
range
specifier,
i.e.,
non-alphabetic
specifier,
or
specifier
range
is
in
reverse
alphabetic
order.
INVALID
LOGICAL
UNIT
A
logical
unit
reference
must
be
an
integer
variable
or
constant
in
the
range
1
to
99.
INVALID
OCTAL
CONSTANT
An
octal
constant
is
too
large
or
contains
a
digit
other
than
0-7.
INVALID
OPTIONAL
LENGTH
SPECIFIER
A
data
type
declaration
optional
length
specifier
is
illegal.
For
example,
REAL*4
and
REAL*8
are
legal,
but
REAL*6
is
not.
INVALID
RADIXSO
CONSTANT
Illegal
character
detected
in
a
RADIXSO
constant.
INVALID
RECORD
FORMAT
The
third
parenthetical
argument
in
a
DEFINE
FILE
statement
must
be
the
single
character
U.
INVALID
STATEMENT
IN
BLOCK
DATA
It
is
illegal
to
have
any
executable
or
FORMAT
statements
in
a
BLOCK
DATA
Subprogram.
INVALID
STATEMENT
LABEL
REFERENCE
Reference
has
been
made
to
a
statement
number
that
is
of
illegal
construction.
GO
TO
999999
is
illegal
since
the
statement
number
is
too
long.
INVALID
SUBROUTINE
OR
FUNCTION
NAME
A name
used
in
a
CALL
statement
or
function
reference
is
not
valid.
Example:
use
of
an
array
name
in
a
CALL
statement
routine
name
reference.
INVALID
TARGET
FOR
ASSIGNMENT
The
left
side
of
an
arithmetic
assignment
statement
is
not
a
variable
name
or
array
element
reference.
INVALID
TYPE
SPECIFIER
An
unrecognizable
data
type
was
used.
INVALID
USAGE
OF
FUNCTION
OR
SUBROUTINE
NAME
A
function
name
cannot
appear
in
a
DIMENSION,
COMMON,
DATA,
OR
EQUIVALENCE
statement.
INVALID
VARIABLE
NAME
A
variable
name
contains
an
illegal
character.
LABEL
ON
DECLARATIVE
STATEMENT
It
is
illegal
to
place
a
label
on
a
declarative
statement.
MISSING
ASSIGNMENT
OPERATOR
The
first
operator
seen
in
an
arithmetic
assignment
statement
was
not
an
equal
sign
(=).
Example:
I+J=K.
C-6
APPENDIX
C.
ERROR
DIAGNOSTICS
MISSING
COMMA
The conuna
See
the
describes
question.
delimiter
was
expected
but
was
not
found.
section
of
the
FORTRAN
Reference
Manual
that
the
general
form
of
the
statement
in
MISSING
DELIMITER
IN
EXPRESSION
Two
operands
have
been
placed
next
to
each
other
in
an
expression
with
no
operator
between
them.
MISSING
LABEL
Expecting
a
statement
label
but
one
was
not
found.
Example:
ASSIGN
J
TO
I.
A
valid
statement
label
reference
should
precede
'TO'
but
does
not.
MISSING
RIGHT
PARENTHESIS
Expecting
a
right
parenthesis
Example:
READ(5,100,).
The
after
the
format
reference
parenthesis
but
is
not.
MISSING
QUOTATION
MARK
but
one
was
not
found.
first
non-blank
character
should
be
a
right
In
a
FIND
statement,
the
logical
unit
number
and
record
number
must
be
separated
by
a
single
quotation
mark.
MISSING
VARIABLE
Expecting
a
variable,
but
one
was
not
found.
Example:
ASSIGN
100
TO
1.
A
variable
name
should
follow
the
'TO'
but
one
does
not.
MISSING
VARIABLE
OR
CONSTANT
Looking
for
an
operand
(variable
or
constant)
but
found
a
delimiter
(comma,
parenthesis,
etc.).
Example:
WRITE(). A
unit
number
should
follow
the
open
parenthesis,
but
a
delimiter
(close
parenthesis)
is
encountered
instead.
MODES
OF
VARIABLE
****
AND
DATA
ITEM
DIFFER
The
data
type
of
each
variable
and
its
associated
data
list
item
must
agree
in
a
DATA
Statement.
MULTIPLE
DECLARATION
FOR
VARIABLE
****
A
variable
cannot
appear
in
more
than
one
data
type
declaration
statement
or
dimensioning
statement.
Subsequent
declarations
are
ignored.
NUMBER
IN
FORMAT
STATEMENT
NOT
IN
RANGE
An
integer
constant
in
a
FORMAT
statement
is
greater
than
255
or
is
zero.
PARENTHESES
NESTED
TOO
DEEPLY
Group
repeats
in
a
FORMAT
statement
have
been
nested
too
deeply.
P-SCALE
FACTOR
NOT
IN
RANGE
-127
TO
+127
P-scale
factors
must
fall
in
the
range
-127
to
+127.
REFERENCE
TO
INCORRECT
TYPE
OF
LABEL
****
A
statement
label
reference
that
should
be
a
label
on
a
FORMAT
statement
is
not
such
a
label,
or
a
statement
label
reference
that
should
be
a
label
on
an
executable
statement
is
not
such
a
label.
C-7
REFERENCE
TO
UNDEFINED
STATEMENT
LABEL
A
reference
has
been
made
to
a
statement
number
that
has
not
been
defined
anywhere
in
the
program
unit.
STATEMENT
MUST
BE
UNLABELED
A
DATA,
SUBROUTINE,
FUNCTION,
BLOCK
DATA,
arithmetic
statement
function
definition,
or
declarative
statement
must
not
be
labeled.
STATEMENT
TOO
COMPLEX
An
arithmetic
statement
function
has
more
than
10
dummy
arguments.
Or
the
statement
is
too
long
to
compile.
Break
it
up
into
2
or
more
smaller
statements.
SUBROUTINE
OR
FUNCTION
STATEMENT
MUST
BE
FIRST
A
SUBROUTINE,
FUNCTION
or
BLOCK
DATA
Statement,
if
present,
must
be
the
first
statement
in
a
program
unit.
SYNTAX
ERROR
Check
the
general
form
of
the
statement
with
the
general
form
outlined
in
the
Language
Reference
Manual
section
that
describes
that
type
of
statement.
TARGET
MUST
BE
ARRAY
The
third
argument
in
an
ENCODE
or
DECODE
statement
must
be
an
array
name.
SYNTAX
ERROR
IN
INTEGER
OR
FLOATING
CONSTANT
An
integer
or
floating
constant
has
been
incorrectly
formed.
For
example,
1.23.4
is
an
illegal
floating
constant
because
it
contains
two
decimal
points.
UNLABELED
FORMAT
STATEMENT
All
FORMAT
Statements
must
be
labeled.
USAGE
OF
VARIABLE
****
INVALID
An
attempt
was made
to
EXT!RNAL
a
common
variable,
an
array
variable,
or
a
dummy
argument.
Or
an
attempt
was
made
to
place
in
COMMON
a
dummy
argument
or
external
name.
VARIABLE
****
INVALID
IN
ADJUSTABLE
DIMENSION
A
variable
used
as
an
adjustable
dimension
must
be
an
integer
dummy
argument
in
the
subprogram
unit.
WRONG
NUMBER
OF
SUBSCRIPTS
FOR
ARRAY
****
An
array
reference
does
not
have
the
same number
of
subscripts
as
specified
when
the
array
was
dimensioned.
C.l.3
Warning
Diagnostics
Warning
diagnostics
report
conditions
which
are
not
true
error
conditions,
but
which
may
be
potentially
dangerous
at
execution
time,
or
which
may
present
compatibility
problems
with
FORTRAN
Compilers
running
on
other
PDP-ll
Operating
Systems.
The
warning
diagnostics
are
normally
enabled,
but
may
be
suppressed
by
use
of
the
/-WR
C-8
(
(
APPENDIX
C.
ERROR
DIAGNOSTICS
Compiler
switch.
The
form
and
placement
of
the
warning
diagnostics
are
the
same
as
those
for
the
secondary
phase
error
diagnostics
(see
section
C.l.2)
except
that
the
line
number
reference
is
replaced
with
"WARNING".
A
listing
of
the
warning
diagnostics
follows:
ADJUSTABLE
DIMENSIONS
ILLEGAL
FOR
ARRAY
****
Adjustable
arrays
must
be
a
dummy
argument
in
a
subprogram,
and
the
adjustable
dimensions
must
be
integer
dummy
arguments
in
the
subprogram.
Any
variation
from
this
rule
will
cause
a
dimension
of
1
to
be
used
and
this
warning
message
to
be
issued.
NON~STANDARD
STATEMENT
ORDERING
Although
the
RSX-llM
FORTRAN
IV
Compiler
has
less-restrictive
statement
ordering
requirements
than
those
outlined
in
chapter
7
of
the
PDP-ll
FORTRAN
Language
Reference
Manual,
non-adherence
to
the
stricter
requirements
may
cause
error
conditions
on
other
FORTRAN
Compilers.
See
section
3.5
of
this
document.
VARIABLE
****
IS
NOT
WORD
ALIGNED
Placing
a non-LOGICAL*l
variable
or
array
after
a
LOGICAL*l
variable
or
array
in
COMMON
or
equivalencing
non-LOGICAL*l
variables
or
arrays
to
LOGICAL*l
variables
or
arrays
may
cause
this
condition.
An
attempt
to
reference
the
variable
at
runtime
will
cause
an
error
condition.
VARIABLE
****
NAME
EXCEEDS
SIX
CHARACTERS
A
variable
name
of
more
than
six
characters
was
specified.
The
first
six
characters
were
used
as
the
true
variable
name.
Other
FORTRAN
Compilers
may
treat
this
as
an
error
condition.
See
section
3.1
of
this
document.
C.l.4
Fatal
Compiler
Error
Diagnostics
Listed
below
are
the
fatal
Compiler
error
diagnostics.
These
diagnostics,
which
are
sent
directly
to
the
initiating
terminal,
report
hardware
error
conditions,
conditions
which
may
require
rewriting
of
the
source
program,
and
conditions
which
may
require
attention
from
DEC
Software
Support.
The
form
of
the
diagnostic
is:
FATAL
ERROR
n
where
n
is
an
error
code
having
one
of
the
following
values:
Code
Meaning
C
Constant
subscript
overflow.
Too
many
constant
subscripts
have
been
employed
in
a
statement.
SOLUTION
-
simplify
the
statement
L More
than
80
characters
in
input
record.
SOLUTION
-
simplify
statement
or
lines.
C-9
use
continuation
APPENDIX
C.
ERROR
DIAGNOSTICS
o
Unrecoverable
error
occurred
while
the
Compiler
was
writing
the
object
file
(.OBJ).
Possibly,
insufficient
output
file
space.
SOLUTION
-
rectify
hardware
problem,
or
make more
space
available
for
output
by
deleting
unnecessary
files.
P
Optimizer
push
down
overflow
-
statement
too
complex,
or
too
many
common
subexpressions
occurred
in
one
basic
block
of
a
program.
R
S
SOLUTION
-
simplify
complex
statements;
report
the
error
to
your
local
software
support
representative.
Unrecoverable
hardware
error
occurred
Compiler
was
reading
,source
file.
SOLUTION
-
rectify
hardware
problem.
while
the
Subexpression
stack
overflow
-
statement
too
complex.
SOLUTION
-
simplify
complex
statements.
T
Memory
Overflow
w
SOLUTION
-
break
up
program
into
subprograms
or
compile
in
a
larger
partition.
Unrecoverable
error
occurred
while
the
Compiler
was
writing
listing
file.
Possibly,
listing
file
space
is
not
large
enough.
SOLUTION
-
rectify
hardware
problem,
or
make more
space
available
for
listing
file
by
deleting
unnecessary
files.
Y Code
generation
stack
overflow
-
statement
too
complex.
SOLUTION
-
simplify
complex
statements.
Z
Compiler
error
SOLUTION
-
report
this
error
to
your
local
support
representative.
Please
include
listing.
C.2
OBJECT
TIME
SYSTEM
ERROR
DIAGNOSTICS
C.2.l
Error
Processing
Algorithm
software
program
The
Object
Time
System
detects
many
Input/Output,
arithmetic,
invalid
argument
and
other
kinds
of
errors
and
reports
them on
the
user's
terminal
via
logical
device
TI:.
The
action
taken
for
each
error
is
determined
by
an
error
control
table
within
the
OTS.
(This
table
may
be
modified
during
program
execution
by
means
of
the
ERRSET
subroutine,
see
section
B.S.)
C-10
(
\
APPENDIX
C.
ERROR
DIAGNOSTICS
Error
processing
for
each
error
is
controlled
by
a
control
byte.
Significant
bits
are
as
followsz
Continuation
Bit
Count
Bit
Continuation
Type
Bit
If
not
set,
this
bit
directs
the
task
to
exit
as
a
result
of
this
error.
If
set,
the
task
will
continue
provided
certain
other
conditions
are
met.
If
set,
this
error
is
counted
against
the
task
error
count
limit.
If
that
limit
is
exceeded,
the
task
will
exit.
Two
types
of
continuation
action
are
possible:
1)
Return
to
routine
that
reported
the
error
to
take
appropriate
recovery
action
and
proceed,
or
2)
Take
an
ERR-
transfer
in
an
I/O
statement.
If
an
ERR
=
transfer
is
specified
for
the
error
and
none
was
included
in
the
Input/Output
statement,
the
task
will
exit.
The
above
three
conditions
must
all
be
satisfied
for
the
task
to
continue.
Log
Bit
If
the
task
continues,
then
the
log
bit
is
tested.
If
the
bit
is
set,
an
error
message
is
produced
before
continuing;
otherwise,
the
task
continues.
If
any
of
the
above
conditions
is
not
satisfied,
the
task
will
exit
~d
an
error
message
will
always
be
produced.
In
this
case,
the
additional
text
"EXITING DUE
TO"
is
included
in
the
error
message
so
that
it
is
clear
why
a
task
is
abnormally
terminating.
Two
additional
bits
are
of
interest
here
since
they
control
the
acceptability
of
ERRSET
arguments.
Return
permitted
bit
ERRa
permitted
bit
If
set,
then
the
continuatio~
type
bit
may
be
set
by
ERRSET
to
specify
return.
If
set,
then
the
contination
type
bit
may
be
set
by
ERRSET
to
specify
that
an
ERR-
transfer
is
to
occur.
These
two
bits
are
used
by
ERRSET
to
check
the
validity
of
ERRSET
arquments.
At
least
one
of
these
must
be
set
in
order
to
set
the
continuation
bit.
Also
the
continuation
type
argument
is
checked
against
these
bits
for
acceptability.
All
four
combinations
of
these
two
bits
occur
in
the
OTS,
although
most
errors
are
in
one
of
two
groups.
1)
2)
I/O
errors
generally
permit
ERR-
return
continuation.
Most
other
errors
per.mit
return
transfer
continuation
(even
statement
processing.)
C-ll
continuation
type
but
continuation
but
not
if
they
occur
during
not
ERRa
I/O
APPENDIX
Cs
ERROR
DIAGNOSTICS
Notable
exceptions
are
the
synchronous
system
trap
errors
(numbers
3
through
10)
and
recursive
Input/Output
error
(number 40)
which
will
always
result
in
task
termination,
and
the
Input
and
Output
Formatted
Conversion
Errors
(numbers 63
and
64)
which
allow
both
types
of
continuation.
The
initial
setting
of
the
error
control
bits
is
shown
together
with
error
messages
in
section
C.2.3.
C.2.2
Object
Time
System
Error
Message
Format
An
OTS
error
message
consists
of
several
lines
of
information
formatted
as
follows:
tsknarn
[EXISTING
DUE
TO]
ERROR
number
text
[AT
PC
=
address]
[FCS:
f.err
f.errl
filename
unit]
IN
xxxxxx
AT
yyy
FROM
xxxxxx
AT
yyy
•••
FROM
MAIN.
AT
yyy
(In
the
above
message
prototype,
fixed
parts
of
the
message
are
shown
in
capital
letters
and
variable
parts
in
lower
case
letters.)
The
variable
parts
of
the
message
are:
tsknam
-the
name
of
the
task
in
which
the
error
occurred.
number
-the
error
number
text
-a
one-line
description
of
the
error.
If
the
OTS
error
resulted
from
one
of
the
synchronous
system
traps,
then
the
program
counter
will
be
shown
in
the
line
"AT
PC
=".
This
line
is
only
produced
for
errors
numbered
5
through
12.
If
the
OTS
error
resulted
from
an
error
reported
to
it
by
File
Control
Services,
the
line
beginning
"FCS:"
will
be
included.
Consult
the
I/O
Operations
Reference
Manual
for
a
description
of
the
FCS
error
codes.
f.err
f.errl
filename
unit
the
value
of
the
F.ERR
field
of
the
File
Descriptor
Block
(FDB).
the
value
of
the
F.ERR+l
field
of
the
FDB.
the
name
of
the
file
(not
including
type
or
version)
the
logical
unit
on
which
this
error
occurred.
Next
follows
a
traceback
of
the
subprogram
calling
nest
at
the
time
of
the
error.
Each
line
represents
one
level
of
subprogram
call
and
shows
xxxxxx
the
name
of
the
subprogram.
C-12
(
(
(
APPENDIX
C.
ERROR
DIAGNOSTICS
The name
of
the
main
program
is
shown
as
.MAIN.
The name
of
a
subprogram
is
the
same
as
the
name
used
in
the
SUBROUTINE
or
FUNCTION
statement.
Arithmetic
statement
functions,
OTS
system
routines
and
routines
written
in
assembly
language
will
not
be
shown
in
the
traceback.
the
internal
sequence
number
of
the
subprogram
at
which
the
error,
call
statement,
or
function
reference
occurred.
A
question
mark,
"?",
instead
of
a number
indicates
that
the
subprogram
was
compiled
with
the
/-SN
compiler
switch
(suppress
sequence
number
accounting)
in
effect
and
hence
the
line
number
is
not
known
for
that
program
unit.
C.2.2.1
Short
Message
File
-
In
order
to
save
space,
a
short
message
file
may
be
included
which
prints
only
the
error
number.
This
may
be
used
by
specifying
the
module
$SHORT
at
task
build
time;
e.g.,
>TKB
TKB>MAIN=[l,l]SYSLIB/LB:$SHORT,MAIN
C.2.3
Object
Time
System
Error
Codes
C.2.3.1
Initial
Control
Bit
Settings
-The
following
table
shows
the
initial
settings
of
the
significant
bits
in
the
error
control
byte
as
described
in
section
C.2.l.
C-13
APPENDIX
C.
ERROR DIAGNOSTICS
Table
C-l
Error
Control
Bit
Settings
ERROR
CONTINUE?
COUNT?
CONTINUE
L.OG?
PERMITTED
NUMBER
TYPE
ERRa?
RETURN?
1
NO NO
FATAL
YES
NO NO
2
NO
NO
FATAL
YES
NO
NO
3
NO
NO
FATAL
YES
NO
NQ
4
NO
NO
FATAL.
VES
NO NO
5
NO
NO
FATAL,
VES
NO NO
ft
NO
NO
FATAL.
YES
NO
NO
7
NO NO
FATAL
YES
NO
NO
8
NO
NO
FATAL
YES
NO NO
q
NO NO
FATAL
YES
NO NO
10
NO NO
FATAL
YES
NO
NO
20
YES YES
ERR-
VES
YES
NO
21
VES
YES
ERR=
VES
VES
NO
22
VES
YES
ERR.
YES YES
NO
23
YES
YES
ERR.
YES YES
NO
24
YES
YES
ERRa
YES YES
NO
25
YES
YES
ERR.
VES
YES
NO
2ft
YES
YES
ERR-
YES
YES
NO
27
VES
YES
ERR.
VES
YES
NO
28
YES
YES
ERR=
YES YES
NO
2q
VES
YES
ERR-
YES
YES
NO
30
YES
VES
ERR_
YES
VES
NO
31
YES
YES
ERR=
YES
YES
NO
32
VES
YES
ERR.
YES
YES
NO
33
YES
NO
RETURN
YES
NO
¥€S
34
VES
YES
ERRD
YES
YES
NO
37
YES
YES
ERR.
YES
YES
NO
38
YES
VES
ERR-
YES
YES
NO
3q
YES
VES
ERR.
YES YES
NO
40
NO NO
FATAL.
YES
NO
NO
41
VES
YES
ERR=
YES
YEI
NO
42
VES
YES
ERR=
VES
YES
NG
43
VES
YES
RETURN
YES
NO
YES
44
YES YES
ERR.
YES
YEI
NO
C-14
APPENDIX
C.
ERROR
DIAGNOSTICS
Table
C-l
(Cont.)
Error
Control
Bit
Settings
ERROR
CONTINUE?
NUMBER
60
YES
61
YES
6c
YES
63
YES
64
YES
65
YES
66
YES
67
YES
70
YES
71
YES
72
YES
73
YES
74
YES
80
YES
81
YES
8e
YES
83
YES
84
YES
85
YES
86
YES
q0
NO
CJl
YES
100
NO
101
NO
C.2.3.2
Error
Messages
Group 0 -
Severe
Errors
COUNT?
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO
CONTINUE
1.0G?
TYPE
ERRc
YES
ERRc
YES
ERR:
YES
RETURN
NO
ERR=
YES
ERRc
YES
ERR-
YES
ERRI:
YES
RETURN
YES
RETURN
YES
RETURN
YES
RETURN
YES
RETURN
NO
RETURN
YES
RETURN
YES
RETURN
YES
RETURN
YES
RETURN
YES
RETURN
YES
RETURN
YES
FATAl.
YES
RETURN
NO
FATAl.
YES
FATAl.
YES
P(RMITTEO
ERR:?
RETURN?
YES
NO
YES
YES
YES
NO
YES
YES
YES YES
YES
NO
YES
NO
YES
NO
NO
YES
NO
YES
NO
YES
NO
YES
NO
YES
NO
YES
NO
YES
NO
YES
NO
YES
NO
YES
NO
YES
NO
YES
NO NO
NO
YES
NO
NO
NO
NO
These
messages
result
from
severe
error
conditions
for
which
no
error
recovery
is
possible.
Consult
the
RSX-llM
Executive
Reference
Manual
for
details
of
what
error
conditions
will
cause
traps
to
the
System
Synchronous
Trap
Table
entries
cited
below.
C-lS
APPENDIX
C.
ERROR
DIAGNOSTICS
1
2
3
4
5
6
7
8
9
10
11
12
INVALID
ERROR
CALL
A
TRAP
instruction
has
been
executed
whose
low
byte
is
within
the
range
used
by
the
OTS
for
error
reporting
(see
Section
C.2.4)
but
for
which
no
error
condition
is
defined.
TASK
INITIALIZATION FAILURE
Task
start
up
has
failed
for
one
of
the
following
reasons:
1.
The
directive
to
initialize
synchronous
system
trap
handling
(SVTK$S)
has
returned
an
error
indication.
2.
The
executive
directive
to
enable
the
FPP
asynchronous
trap
(SFPA$S)
has
returned
an
error
indication.
3.
The
File
Control
Services
initialization
call
(FINIT$)
has
returned
an
error
indication.
ODD
ADDRESS
TRAP
(SST 0)
SEGMENT
FAULT
(SST
1)
This
is
most
likely
due
to
a
subscript
value
out
of
range
on
an
array
reference.
T-BIT
OR
BPT
TRAP
(SST 2)
lOT
TRAP
(SST 3)
RESERVED
INSTRUCTION (SST 4)
The
program
has
attempted
to
execute
an
illegal
instruction.
This
may
be
caused
by
task
building
with
the
wrong
FORTRAN
library
for
the
given
hardware
configuration.
Hardware
may
have
been
linked.
NON-RSX
EMT
(SST
5)
The
program
has
executed
an
EMT
instruction
whose
low
byte
is
not
in
the
range
used
by
the
RSX-llM
executive.
TRAP
INSTRUCTION
TRAP
(SST
6)
A
trap
instruction
has
been
executed
whose
low
byte
is
outside
the
range
used
for
OTS
error
messages
(see
C.2.4
below).
PDPll/40
FIS
TRAP
(SST
7)
A
module
using
FIS
was
linked
with
a
non-FIS
FORTRAN
library.
FPP
HARDWARE
FAULT
The
FPP
Floating
Exception
Code
(FEC)
register
contained
the
value
0
following
an
FPP
interrupt.
This
is
probably
a
hardware
malfunction.
FPP ILLEGAL
OPCODE
TRAP
The
FPP
has
detected
an
illegal
floating
point
instruction.
C-16
(
APPENDIX
C.
ERROR
DIAGNOSTICS
13
14
FPP
UNDEFINED
VARIABLE
TRAP
The
FPP
loaded
an
illegal
value
(-0.0).
This
trap
should
not
occur
since
the
OTS
initialization
routine
does
not
enable
this
trap
condition.
A
negative
zero
value
should
never
be
produced
by
any
FORTRAN
operation.
FPP
MAINTENANCE
MODE
TRAP
The
FPP
has
interrupted
with
a
Floating
Point
Exception
Code
register
value
of
14
(octal).
This
is
probably
a
hardware
malfunction.
Group 1 -
General
Input/Output
Errors
These
messages
result
from
errors
related
to
the
file
system.
20
21
22
23
24
25
26
REWIND
ERROR
An
error
condition
was
detected
by
FCS
during
the
.POINT
operation
used
to
position
to
the
beginning
of
a
file.
DEFINEFILE
ALREADY
DONE
A
DEFINEFILE
statement
was
attempted
on
which
one
has
already
been
done.
DEFINEFILE
is
ignored.
To
change
a
specification
a
CLOSE
operation
may
be
RECORD
TOO
LONG
a
unit
for
The
second
DEFINEFILE
performed.
A
record
has
been
read
which
is
too
large
to
fit
into
the
buffer
specified
by
the
MAXBUF
TKB
option.
Rebuild
the
task
using
a
larger
MAXBUF
specification.
BACKSPACE
ERROR
One
of
the
following
errors
has
occurred:
a.
BACKSPACE
was
attempted
on
a
file
opened
for
appending
b.
FCS
has
detected
an
error
condition
during
the
.POINT
operation
used
to
rewind
the
file
c.
FCS
has
detected
an
error
condition
while
reading
forward
to
the
desired
record.
END-OF-FILE
DURING
READ
Either
an
end-file
record
produced
by
the
ENDFILE
statement
or
the
FCS
end-of-file
condition
has
been
encountered
during
a
READ
statement
and
no
END=
transfer
specification
was
provided.
INVALID
RECORD
NUMBER
A
direct-access
READ,
WRITE,
or
FIND
statement
has
specified
a
record
number
outside
the
rang~
from
one
to
the
value
specified
in
a DEFINEFILE
statement.
DEFINEFILE
NOT
DONE
A
direct
access
READ,
WRITE,
or
FIND
operation
was
attempted
before
a
DEFINE
FILE was
performed.
C-17
APPENDIX
C.
ERROR
DIAGNOSTICS
27
28
29
30
31
32
33
34
37
38
39
40
41
MORE
THAN
ONE
RECORD
An
attempt
was made
to
read
or
write
more
than
a
single
record
in
an
ENCODE
or
DECODE
statement.
CLOSE
ERROR
An
error
condition
has
been
detected
by
FCS
during
a
CLOSE
operation
when
attempting
to
close
a
file.
NO
SUCH
FILE
A
file
with
the
specified
name
could
not
be
found
during
an
open
operation.
OPEN
FAILURE
FCS
has
detected
an
error
condition
during
an
open
operation.
(This
message
is
used
when
the
error
condition
is
not
one
of
the
more
common
conditions
for
which
specific
error
messages
are
provided.)
MIXED
ACCESS
MODES
An
attempt
was made
to
use
both
formatted
and
unformatted
operations,
or
both
sequential
and
direct
access
operations,
on
the
same
unit.
INVALID
LOGICAL
UNIT
NUMBER
A
logical
unit
number was
used
which
is
outside
the
range
specified
by
the
TKB
UNITS=
option.
ENDFILE
TO
DIRECT
ACCESS
FILE
An
end-file
record
may
not
be
written
to
a
direct
access
file.
UNIT
ALREADY
OPEN
A DEFlNEFlLE
statement,
CALL
ASSIGN,
or
CALL
FDBSET
was
attempted
which
specified
a
logical
unit
already
opened
for
input/output.
INCONSISTENT
RECORD
LENGTH
An
existing
direct
access
file
has
been
opened
whose
record
length
attribute
is
not
the
same
as
specified
in
the
DEFINEFILE
or
OPEN
statement.
The
record
length
is
not
changed.
ERROR
DURING
WRITE
FCS
has
detected
an
error
condition
while
writing.
ERROR
DURING
READ
FCS
has
detected
an
error
condition
while
reading.
RECURS
lVE
I/O
ATTEMPT
An
expression
in
the
I/O
list
of
a
READ
or
WRITE
statement
has
caused
initiation
of
another
READ
or
WRITE
operation.
This
can
happen
if
a
FUNCTION
that
performs
I/O
is
referenced
in
an
expression
in
a
READ
or
WRITE
statement
I/O
list.
NO
FCS
BUFFER
ROOM
There
is
not
enough
free
core
left
in
the
File
Control
Services
buffer
area
to
set
up
required
I/O
buffers
•.
Rebuild
the
task
with
a
larger
ACTFIL
declaration
or
reduce
the
level
of
multibuffering.
C-18
(
APPENDIX
C.
ERROR
DIAGNOSTICS
42
43
44
DE~CE
HANDLER
NOT
RESIDENT
During
open
operation,
the
filename
specifiction
included
a
device
for
which
no
handler
task
is
resident.
FILE
NAME
SPECIFICATION
ERROR
The
file
name
string
used
in
a CALL
ASSIGN
is
syntactically
invalid,
contains
a
switch
specification,
references
an
undefined
device
mnemonic
-,
or
is
_
otherwise
not
acceptable
to
the
RSX-IIM
operating
system.
RECORDSIZE
TOO
BIG
FOR
'MAXBUF'
A
DEFINEFILE
statement
has
specified
a
record
size
which
exceeds
the
size
available
in
the
record
buffer.
Rebuild
the
task
using
a
larger
TKB
MAXBUF
specification.
Group 2 -
Element
Transmission
Errors
These
messages
result
from
errors
related
to
transmitting
data
between
a
FORTRAN
program
and
an
internal
record.
60
61
62
63
64
65
66
INFINITE
FORMAT
LOOP
The
format
associated
with
an
I/O
statement
that
includes
an
I/O
list
has
no
field
descriptors
to
use
in
transferring
those
variables.
FORMAT/VARIABLE
-
TYPE
MISMATCH
An
attempt
was made
to
output
a
real
variable
with
an
integer
field
descriptor
or
an
integer
variable
with
a
real
field
descriptor.
SYNTAX
ERROR
IN
FORMAT
A
syntax
error
was
encountered
while
the
OTS
was
scanning
format
specifications
stored
in
an
array.
OUTPUT
CONVERSION
ERROR
During
a
formatted
output
operation,
the
value
of
a
particular
number
could
not
be
output
in
the
specified
field
length
without
loss
of
significant
digits.
The
field
is
filled
with
·'s.
INPUT
CONVERSION
ERROR
During
a
formatted
input
operation
an
illegal
character
was
detected
in
an
input
field
or
the
input
value
overflowed
the
range
representable
in
the
input
variable.
The
value
of
the
variable
is
set
to
zero.
FORMAT
TOO
BIG
FOR
'FMTBUP'
The OTS
has
run
out
of
memory
while
scanning
an
array
format
that
was
generated
at
run
time.
The
default
internal
format
buffer
length
is
64
bytes.
This
may
be
increased
by
using
the
FMTBUF
TKB
option
(see
section
1.3.2.8).
RECORD
TOO
BIG
FOR
'MAXBUP'
During
an
output
operation
a
record
was
specifie~
that
was
longer
than
the
maximum
record
length.
The
default
maximum
record
length
is
132
(decimal)
C-l9
APPENDIX
C.
ERROR
DIAGNOSTICS
67
bytes.
This
may
be
changed
by
use
of
the
MAXBUF
Task
Builder
option
(see
section
1.3.2.4).
RECORD
TOO
SMALL
FOR
I/O
LIST
A
READ
statement
has
attempted
to
input
more
data
than
existed
in
the
record
being
read.
For
example,
the
I/O
list
might
have
too
many
elements.
Group
3 -
Arithmetic
Errors
These
messages
result
from
arithmetic
conditions.
overflow
and
underflow
70
71
72
73
74
75
INTEGER
OVERFLOW
During
an
arithmetic
operation
magnitude
has
exceeded
32767.
INTEGER
ZERO
DIVIDE
an
integer's
During
an
integer
mode
arithmetic
operation
an
attempt
was
made
to
divide
by
zero.
FLOATING
OVERFLOW
During
an
arithmetic
operation
a
real
value
has
exceeded
the
largest
representable
real
number.
The
result
of
the
operation
is
set
to
zero.
FLOATING
ZERO
DIVIDE
During
a
real
mode
arithmetic
operation
an
attempt
was
made
to
divide
by
zero.
The
result
of
the
operation
is
set
to
zero.
FLOATING
UNDERFLOW
During
an
arithmetic
operation
a
real
value
has
become
less
than
the
smallest
representable
real
number,
and
has
been
replaced with
a
value
of
zero.
FPP FLOATING
TO
INTEGER
CONVERSION
OVERFLOW
During
a
type
conversion,
an
FPP
overflow
trap
occurred.
Group
4 -
Argument
Errors
These
messages
result
from
incorrect
calls
to
FORTRAN-IV
supplied
functions
or
subprograms.
80
81
82
WRONG
NUMBER
OF
ARGUMENTS
An
improper
number
of
arguments
were
used
in
a
call
to
a
FORTRAN
library
function
or
system
subroutine.
INVALID
ARGUMENT
One
of
the
FORTRAN
Library
Subroutines
has
detected
value.
See
Appendix
B.
UNDEFINED
EXPONENTIATION
Functions
or
System
an
invalid
argument
An
exponentiation
has
been
attempted
which
is
mathematically
undefined:
e.g.,
0.**0.
C-20
APPENDIX
C.
ERROR
DIAGNOSTICS
83
84
85
86
LOGARITHM
OF
NEGATIVE
VALUE
An
attempt
was made
to
take
the
logarithm
of
a
negative
number.
The
result
returned
is
zero.
,SQUARE
ROOT
OF
NEGATIVE
VALUE
An
attempt
was made
to
evaluate
the
square
root
of
a
negative
value.
Zero
is
returned
as
the
result.
INVALID
ARGUMENT
TO
LIBRARY
FUNCTION
An
invalid
argument
was
used
in
a
call
to
a
FORTRAN
library
function.
INVALID
ERROR
NUMBER
The
error
number
argument
to
one
of
the
subroutines
ERRSET
or
ERRTST
is
not
a
valid
error
number.
Group 7 -
Miscellaneous
Errors
90
91
COMPILER
DETECTED
ERROR
If
an
attempt
is
made
to
link
and
run
an
object
file,
with
errors
reported
during
compilation,
generated
by
the
FORTRAN
Compiler,
this
error
will
result
when
the
illegal
source
statement
is
executed.
COMPUTED
GO
TO
OUT
OF
RANGE
The
integer
variable
or
express~on
in
a
computed
GO
TO
statement
was
less
than
1
or
greater
than
the
number
of
statement
label
references
in
the
list.
Control
is
passed
to
the
next
executable
statement
(see
the
PDP-II
FORTRAN
Language
Reference
Manual).
Group 8 -
System
Directive
Subroutine
Errors
These
messages
result
from
incorrect
calls
to
RSX-lIM
system
directive
subroutines.
100
101
DIRECTIVE:
MISSING
ARGUMENTS
A
call
to
a
system
directive
subroutine
was made
in
which
one
or
more
of
the
arguments
required
for
directive
execution
was
not
given.
DIRECTIVE:
INVALID
EVENT
FLAG
NUMBER.
A
call
to
a
system
directive
subroutine
was made
in
which
the
argument
used
for
event
flag
specification
was
not
in
the
valid
range
(1
to
64)
C.2.4
Notes
on
OTS
Error
Processing
Implementation
OTS
error
reports
are
initiated
by
execution
of
a
TRAP
instruction
in
which
the
low
byte
of
the
instruction
contains
the
internal
error
code.
Internal
error
codes
are
128
(decimal)
greater
than
the
externally
printed
error
code.
C-2l
APPENDIX
C.
ERROR
DIAGNOSTICS
UsaX's
who
wish
to
do 110
may
use
the
fir.t
128
(0
to
127)
trap
codes
.a
follows.
TRAP
instruetions
tran.fer
control
to
the
OTS
error
proce.sor
by
means
of
a
System
Synohronou8
Trap
Table
locAted
in
the
O'l'S
impure
work
area.
The
first
word
of
this
table
ha~
the
q10bal
symbol $SST. Codin9
similar
to
the
following
miqht
be
used
to
interoept
aontrol.
,
, INITIALIZATION
,
INtTI
MOV
MOV
•••
SST61
WORD
•••
,
,
TRAP
HANDLER
,
INTCEP.
CMP
BHI
JMP
1$.
•••
TST
RTI
$SST+14,S~T6
ItfrCEP
, $S8T+14
0
f128.*2,@SP
1$
@SST6
(SP)+
,SAVE
a~s
TRAP
ADDR
,
PU'l'
NEW
ADDR
IN
SST
TABLE
,LOW
BYTE
*2
OF
TRAP
INSTRC.
,BRANCH
IF
USER
CODE
,00'1'0
OTS
,USER
PROCESSING
,DISCARD
EXTRA
WORD
,EXIT
INTERRUPT
Similar
techniques
could
be
used
to
intercept
the
other
synchronous
traps.
OTS
error
m8S8aqes
are
output
to
loqical
devic.e
TI.
by means
of
a
LON
automatically
provided
by
the
task
builder
in
addition
to
those
specified
by
the
UNITS
direotive.
If
for
any
reason
the
QIO
direotive
used
to
write
the
error
lines
reoeives
an
error
condition
return,
then
an
immediate
exit
is
taken
to
the
RSX-1IM
Executive.
C-22
APPENDIX
0
COMPATIBILITY
WITH
OTHER
PDP-II
FORTRANS
0.1
COMPATIBILITY
WITH
PDP-II
FORTRAN
V08.04
UNDER
RSX-IID
V4A
FORTRAN
IV
(FOR)
is
a
new
implementation
of
FORTRAN
for
the
PDP-II.
It
has
been
designed
to
be
compatible
with
the
earlier
FORTRAN
(MOP,
FTN)
on RSX-IID. However, some
differences
exist
as
a
result
of
1.
Correcting
deficiencies
in
FTN
FORTRAN.
2.
Language
specification
decisions
necessary
to
promote
the
goal
of
an
upward
compatible
line
of
FORTRANs,
including
FORTRAN
IV
under
RT-ll
and
RSX-IIM,
FORTRAN
IV-PLUS
under
RSX-IID,'
and
FORTRAN-IO
on
the
DECsystem-lO.
3.
Providing
significant
extensions
to
FTN
FORTRAN
in
a manner
consistent
with
the
remainder
of
the
FORTRAN
language.
This
section
summarizes
the
differences
that
may
affect
conversion
of
programs
from
FTN
to
FOR.
0.1.1
Language
Differences
1.
FTN
permits
transfer
of
control
to
FORMAT'
statements,
which
execute
as
CONTINUE
statements.
FOR
does
not,
and
will
issue
compile-time
error
messages.
2.
FTN
V07.14
provides
an
uncounted
form
for
Radix-SO
constants
used
in
DATA
statements.
V08.04
added
the
counted
form and
promised
de-support
of
the
uncounted
form.
Only
the
counted
form
is
provided
in
FOR.
3.
FTN
logical
tests
treat
any
non-zero
bit
pattern
as
.TRUE.
and
an
all-zero
bit
pattern
as
.FALSE
••
FOR
tests
only
the
lowest-order
byte
of
a
variable.
4.
The FTN
BYTE
statement
and
data
type
do
not
exist'
in
FOR.
LOGI
CAL
* 1
is
equivalent
to
BYTE
in
most
respects,
LOGICAL
* 1
does
not
force
alignment
on
a word
boundary.
S.
The
syntax
of
the
IMPLICIT
statement
is
not
the
same
in
FOR
and
FTN.
0-1
APPENDIX
D. COMPATIBILITIES
6.
FTN
provides
expressions
in
FORMAT
statements
variable
format
expressions):
FOR
does
not.
(called
7.
FTN
permits
Hollerith
strings
in
certain
expressions:
FOR
does
not.
DATA
statements
may
be
used
to
initialize
variable
with
strings
to
achieve
the
same
result.
D.l.2
Object
Time
System
Differences
1.
FTN
allows
both
formatted
and
unformatted
records
in
the
same
file
by
means
of
the
MXDFUF
subroutine
call.
This
is
not
supported
by
FOR.
2.
The
FTN
service
subroutines
PDUMP
and
SETPDU
are
not
provided
in
FOR.
Similar
but
more
flexible
debugging
output
may
be
obtained
by
using
WRITE
statements
in
debug
lines.
3.
The
TRCLIB
library
for
statement
level
execution
tracing
is
not
available
in
FOR.
4.
Some
FTN
service
subroutines
are
not
available,
but
their
function
is
provided
in
a
different
manner:
FTN
FOR
SETERR
ERRSET
subroutine
TSTERR
ERRTST
subroutine
APPEND
FDSSET
subroutine
5.
Default
format
width
and
number
of
digits
for
A,
0,
E,
F,
G,
I,
L,
and
0
formats
are
supported
in
FTN.
There
are
no
format
defaults
under
FOR.
6.
Under
FTN, Q
format
returns
the
number
of
characters
in
the
input
record
(i.e.,
the
record
length)
independent
of
the
current
scan
position.
Under
FOR,
Q
format
returns
the
number
of
characters
remaining
in
the
input
record
following
the
scan
position.
The
record
length
may
be
obtained
by
using
the
Q
format
first
in
the
format
specification.
0.1.3
Implementation
Differences
1.
FTN
performs
the
following
actions
when
opening
a
unit
for
direct
access
I/O:
first
check
if
a
file
already
exists:
if
so,
use
it.
If
not,
create
a new
file
for
use.
In
FOR
the
type
of
open
depends
on
whether
a
READ
or
WRITE
statement
is
causing
the
open
operation.
If
it
is
a
READ,
then
the
file
must
already
exist,
or
an
error
will
result.
If
it
is
a
WRITE,
then
a new
file
is
created.
The
action
sequence
described
above
for
FTN
may
by
using
'UNKNOWN'
as
the
second
argument
FDBSET.
be
obtained
in
a
call
to
2.
The
implementation
of
error
handling
in
FOR
is
significantly
different
from
that
in
FTN.
In
particular,
the
use
of
error
0-2
F
-"
(
/
{
'\
(
APPENDIX
D.
COMPATIBILITIES
classes
fo~
controlling
error
handling
is
replaced
by
control
over
each
individual
error
condition.
FOR
provides
much more
complete
error
information
to
the
executing
program
if
desired.
3.
The
FTN
ASSIGN
service
subroutine
returns
a
success/error
indication
in
its
fourth
argument.
The
FOR
ASSIGN
subroutine
ignores
the
fourth
argument.
Errors
may
be
detected
by
means
of
CALL
ERRTST
or
CALL
ERRSNS.
4.
FTN
does
not
compile
format
specifications
for
use
at
run-time,
whereas
FOR
does.
Two
differences
result:
a.
A
special
internal
buffer
is
provided
in
FOR
to
contain
the
compiled
form
of
format
specifications
stored
in
arrays
which
must
be
compiled
at
run-time.
This
may
require
the
use
of
the
FMTBUF
TKB
option
to
obtain
a
sufficiently
large
buffer
area
for
this
purpose.
b.
Format
specifications
stored
in
arrays
are
re-compiled
at
run-time
each
time
they
are
used.
If
an
H
format
is
used
in
a
READ
statement
to
read
data
into
the
format
itself,
that
data
does
not
get
copied
back
into
the
original
array.
Hence,
it
will
not
be
available
on
a
subsequent
use
of
that
array
as
a
format
specification
in
FOR.
These
considerations
do
not
apply
to
format
specifications
defined
in
FORMAT
statements.
5.
FTN
does
'not
enforce
the
restriction
against
using
a
DEFlNEFILE
statement
referring
to
an
existing
file
to
designate
a
record
size
different
from
that
specified
when
the
file
was
created.
Most
of
the
time
the
new
record
size
appeared
to
work
as
expected,
but
it
was
subject
to
obscure
errors
if
references
were
made
to
records
nearly
at
the
end-of-file.
This
restriction
is
detected
and
enforced
by
FOR.
6.
7.
FTN
implements
REWIND
as
repositions
the
file
at
.POINT
operation.
a
close,
open
sequence.
FOR
its
beginning
by
means
of
an
FCS
FTN
implements
the
ENDFILE
statement
as
a
close
FOR
implements
the
ENDFILE
statement
by
end-of-file
record
on
a
file.
operation.
writing
an
8.
FOR
checks
that
the
labels
used
in
an
assigned
GO
TO
are
valid
labels
in
the
program
unit,
but
it
does
not
check
at
run
time
whether
an
assigned
label
is
in
the
list
in
the
GO
TO
statement.
FTN
checks
at
run
time.
0.1.4
Operational
Differences
1.
Under
FTN
a
task
which
has
suspended
execution
as
a
result
of
a
PAUSE
statement
resumes
execution
by means
of
the
CON
(continue)
MeR command. Under
FOR,
the
RES
(reswne)
MCR
command
must
be
used.
0-3
APPENDIX
D.
COMPATIBILITIES
2.
The
default
device
assignments
for
logical
units
5
and
6
are
CL:
and
TI:
respectively
on
RSX-llD
V4A.
The
default
assignments
on RSX-llM
are
TI:S
and
CL:6.
D.2
COMPATIBILITY
WITH
PDP-II
FORTRAN
IV-PLUS
1.
FORTRAN
IV-PLUS (F4P)
logical
tests
check
only
the
highest-order
bit
of
the
value,
and
it
treats
a
one
as
.TRUE.
and
a
zero
as
FALSE.
FOR
treats
any
non-zero
bit
pattern
in
the
lowest-order
byte
of
a
variable
as
.TRUE. and
an
all-zero
bit
pattern
as
.FALSE
••
2.
The
FOR
implementation
of
DO
loops
does
not
enforce
the
restrictions,
stated
in
the
language
manual,
concerning
changing
DO
loop
parameters,
including
the
control
variable,
within
the
range
of
the
loop.
FORTRAN
IV-PLUS
permits
DO
parameters
other
than
the
control
variable
to
be
changed.
Such
changes
do
not
affect
the
number
of
times
the
loop
is
executed
(the
iteration
count
computed
at
the
start
for
the
loop).
FORTRAN
programs
which
violate
the
FOR
rules
but
execute
as
desired
may
behave
differently
under
F4P.
3.
FOR
defines
named
common
blocks
in
terms
of
named .CSECTs.
F4P
uses
.PSECTs
with
an
explicit
D
attribute.
Since
.CSECTs
are
equivalent
to
.PSECTs
with
I
attribute
specification
assembly
language
programs
which
communicate
with
FORTRAN
programs
by means
of
COMMON
blocks
must
be
changed
in
order
to
be
successfully
linked
by
TKB.
(TKB
treats
such
conflicting
attribute
specifications
as
non-fatal
errors.)
4.
In
F4P,
INTEGER*4
causes
both
32
bit
allocation
and
32
bit
computation.
Only 16
bits
are
used
for
computation
in
FOR.
S.
F4P
provides
the
BYTE
statement
and
data
type
as
a synonym
for
LOGICAL*l; F4P
also
provides
LOGlCAL*27
FOR
does
not.
6.
F4P
checks
the
label
list
in
an
assigned
GO
TO
at
run
time;
FOR
checks
only
for
the
validity
of
the
labels.
D-4
APPENDIX
E
BIT
STRING
MANIPULATIONS
Realtime
Process
Control,
Process
I/O,
and
most
of
the
RSX-IIM
system
directives
may
be
performed
by
means
of
FORTRAN
callable
subroutines.
These
routines
are
described
in
the
RSX-llM
Executive
Reference
Manual,
DEC-ll-OMERA-A-D.
Two
types
of
bit
string
~anipulations
are
provided
in
order
to
support
these
calls:
logical
and
shifting.
In
order
to
process
words from
arrays
it
is
necessary
to
be
able
to
manipulate
information
on a
bit
by
bit
basis.
E.l
LOGICAL
OPERATIONS
These
operations
are
implemented
as
function
subprograms.
In
the
following
functions,
m
and
n
specify
integer
variables
or
array
elements.
Operations
are
performed
on
a
full
word,
bit
by
bit.
These
operations
are
supported
for
compatibility
purposes
only.
The
FORTRAN
logical
operators
.AND.,
.OR.,
.XOR., X!QV.,
and
,NOT.
are
simpler
to
use
and
generate
better
code.
E.l.l
Inclusive
OR
lOR
(m, n)
Where m
and
n
designate
arguments
which
are
logically
added.
E.l.2
Logical
Product
lAND
(m, n)
Where m
and
n
designate
arguments
which
are
logically
multiplied.
E-I
APPENDIX
E.
BIT
STRING
MANIPULATIONS
E.l.3
Logical
Complement
NOT
(m)
Where m
designates
the
argument
which
is
logically
complemented.
E.l.4
Exclusive
OR
IEOR (m, n)
Where m
and
n
designate
arguments
which
are
exclusively
added.
E.2
SHIFT
OPERATIONS
The
logical
shift
is
implemented
as
a
function
subprogram.
A
right
or
left
shift
can
be
specified.
Zeros
are
propagated
following
the
shifted
value
and
the
argument's
sign
is
not
extended.
ISHFT (m, n)
m
designates
the
argument
to
be
shifted
n n
specifies
the
number
of
positions
to
be
shifted
and
the
direction
of
the
shift:
n)O
shift
right
n(O
shift
left
naO
no
shift
The
absolute
value
of
n,
n,
should
not
exceed
fifteen.
If
it
does,
the
function
result
will
be
zero.
E-2
APPENDIX
F
SOFTWARE
PERFORMANCE
REPORTS
From
time
to
time
problems
and/or
errors
will
be
encountered
in
the
use
of
the
FORTRAN-IV
Compiler
or
Object
Time
System.
These
should
be
communicated
to
Digital
Equipment
Corporation
by
means
of
a
Software
Performance
Report
(SPR).
Software
Performance
Report
Forms,
such
as
the
one
shown
at
the
end
of
this
section,
may
be
obtained
from
the
local
Digital
office.
Software
Performance
Reports
should
be
submitted
directly
to
Software
Communications,
P.
O.
Box
F,
Maynard,
Mass.,
01754
for
handling.
Software
Support
Specialists
in
each
Digital
office
receive
regular
reports
on known
software
problems
and
will
in
many
cases
be
able
to
provide
software
·patches
for
correcting
the
problem
and/or
an
alternate
programming
technique
for
temporarily
avoiding
the
problem.
Reports
which
appear
to
be
new
will
be
dealt
with
by
the
appropriate
group
within
the
Software
Engineering
Department.
Every
SPR
will
be
acknowledged
upon
receipt,
and
every
SPR
will
be
answered
in
writing.
SPR's
that
are
of
general
i~terest
will
be
published
so
that
other
Software
Specialists
and
customers
may
benefit.
In
preparing
a
Software
Performance
Report,
the
following
guidelines
are
recommended:
1.
Give
as
complete
a
description
as
possible
of
the
problem
encountered.
Often
a
detail
that
may
seem
irrelevant
will
give
a
clue
to
solving
the
problem.
2.
If
possible,
isolate
the
problem
to
a
small
example.
Large,
unfamiliar
programs
are
difficult
to
work
with
and
may
result
in
a
misunderstanding
of
what
the
problem
is
or
an
inability
to
duplicate
the
problem.
3.
Include
console
samples,
listings,
link
maps,
and
so
on
with
the
SPR.
Annotations
showing
where
the
error
occurred
are
extremely
helpful.
4.
If
a
program
reads
input
data,
include
sample
input
listings
and,
if
possible,
sample
output.
S.
If
an
error
example
cannot
be
isolated
to
a
single
program
unit,
include
listings,
etc.,
on
all
program
units
involved.
F-l
APPENDIX
F.
SOFTWARE
PERFORMANCE
REPORTS
Experience
shows
that
as
many
as
one-third
of
all
SPR's
db
not
contain
sufficient
information
to
duplicate
the
problem.
Complete
and
concise
information
will
help
Digital
give
accurate
and
timely
service
to
software
problems.
The
OTS
version
and
edit
number
should
be
specified
when
communicating
with
DEC
Software
Support
concerning
the
OTS.
The
version
and
edit
numbers
can
be
found
in
the
Task
Builder
map. They
~ill
appear
as
a
symbol
and
associated
value
in
the
<.
ABS.)
program
section
of
the
$OTI
module
map
listing
and
will
have
the
following
form:
VOOxc
where
nnnnnn
x - a
decimal
digit
c =
an
alphabetic
character
n =
an
octal
digit
The
Compiler
version
number
appears
in
the
<.
ABS.)
section
of
the
module
$FORT,
and
takes
the
form MF4xxx,
where
x
is
a
decimal
digit.
A
system
may
crash
if
Task
Builder
switches
such
as
IFP
or
lEA
are
used
which
do
not
match
the
hardware
configuration.
F-2
APPENDIX
F.
SOFTWARE PERFORMANCE REPORTS
SOFTWARE
PERFORMANCE
REPORT
Page
___
of
____
_
mamalma
SPR
#
_______
_
Field #
_______
_
Name
Saftware Specialist
Company Office Cost Center
Address Report type
o Logic/coding error'
Zip o Documentation error
o Suggestion
Phone /Date sent o Inquiry
Computer ISystem device IMemory Other hardware
System program & version / Monitor & version Document Page
Attachments . 0 terminal o obJect o source o Jlstlng o example
printout tape tape
~«,
....
~V
~'
C-.
(
-J
FOR
SOFTWARE
SPECIALIST
USE
ONLY
FOR
SOFTWARE
COMMUNICATIONS
USE
ONLY
DATE
REC'O
TO
S.C"
DATE
REC'O
TO
MAINTAINER
DATE
ANS'O
TO
CUSTOMER
DATE
ANS"D
TO
Y'
__
,
••
'
DEC 7-(380)-1044B-R373 UARCO FORM NO. 81-307-34
F-3
(
INDEX
ABORT,
1-19
ACCEPT,
3-2
Accessing
an
existing
file,
B-8
ACTFIL
(task
builder
option),
1-12
Algorithm,
error
processing,
C-12
Appending
to
a
file,
B-8
Arrays,
multi-dimensional,
2-5
Arrays,
vectored,
2-5
ASG
(task
builder
option),
1-14
Assembly
language
programs,
2-5
Assembly
language
subprograms,
2-3
ASSIGN
subroutine,
3-2,
B-2
Assignments,
logical
device,
3-2
Assignment,
logical
unit,
3-2
Asterisk
used
in
ODL,
1-17
Bit
string
manipulations,
E-l
Blank
COMMON,
1-8
Buffers,
1-12
CALL
EXIT
statement,
1-19
Clock,
programmable,
B~12
Clocks,
line
frequency,
B-12
CLOSE,
B-3
Command
string,
1-1
Command
file,
indirect,
1-2
Command
files
example,
indirect,
1-20
COMMON
(task
builder
option),
1-12
COMMON,
blank,
1-8
COMMON,
initialization,
3-1
Compatibility
with
other
FORTRANs,
D-l
Compiler,
1-5
Error
diagnostics,
C-l
Memory
requirements,
1-10
Switches,
1-6
See
also
Switches,
compiler
Version
number,
F-2
Complex
format,
A-3
Continuation
lines,
3-1
Control
returned
to
calling
program,
2-4
Conventions,
documentation,
vii
Conversion
from
FTN
to
FOR,
D-l
from
F4P
to
FOR,
D-l
Creating
a new
file,
B-8
Data
representation,
A-I
DATE,
B-3
IDE
switch,
1-6,
1-20
Debugging,
1-20
Default
file
types,
1-5
DEFINEFILE,
B-9
Devices,
Peripheral,
1-4
Pseudo,
1-4
Diagnostics
Error,
C-l
Warning,
C-lO
Documentation
conventions,
v~~
Double
precision
format,
A-2
lEA
switch,
1-11
11/45
Floating
point
processor,
1-11
.END
statement,
1-16
ERR=transfer,
C-12
Error
action,
B-4
Error
codes,
OTS, C-15
Error
control
bits,
C-12,
C-15
Error
diagnostics,
Compiler,
C-l
Fatal,
C-lO
Initial
Phase,C-3
OTS, C-12
Secondary
phase,
C-4
Warning,
C-lO
Error
handling,
OTS,
B-4,
B-6
Error
message,
OTS, C-13
Short
file,
C-14
Error
processing,
Algorithm,
C-12
Implementation,
C-22
Errors,
syntax,
C-l
ERRSET
subroutine,
B-4
ERRSNS
subroutine,
B-5
ERRTST
subroutine,
B-6
lEX
switch,
1-7
EXIT
subroutine,
B-7
Extended
arithmetic
element,
1-11
Fatal
error
diagnostics,
C-lO
FCS,
B-8,
C-14
FCS
file
control
conventions,
3-3
FDBSET
subroutine,
B-8
File
control
services
(FCS) ,
B-8,
C-14
File
control
conventions,
FCS,
3-3
File
descriptor
block
(FOB),
C-14
Filename,
1-2
File
search,
B-8
File
specifications,
1-2
File
type,
1-2
INDEX-l
File
types,
default,
1-5
File
updating,
B-8
Floating-point
formats,
A-I
Floating
point
processor,
11/45,
1-11
FMTBUF
(task
bui1d~r
option),
1-14
FOR
MCR
command,
1-5
Format
compilation,
object
time,
1-14
FORTRAN
libraries,
1-15
FORTRAN
subprograms,
2-3
FTN, D-1
Function
subprograms,
2-5
F4P,
D-1
Generated
code
listing,
1-8
Hollerith,
Format,
A-4
Strings,
B-9
/I4
switch,
1-7,
A-I
lAND,
E-1
/ID
switch,
1-7
IDATE
subroutine,
B-4
lEaR,
E-2
Image,
task,
1-10
Implementation
differences,
FTN-FOR, D-2
Implementation,
error
processing,
C-22 '
Ipdirect
command
file,
1-2
example,
1-20
Initial
phase
error
diagnostics,
C-3
Input
file,
1-5
Installing
a
task,
1-18
Integer
.format,
A-I
Internal
buffers,
B-8
Internal
Sequence
Numbers
(ISN),
1-8,
2-2
lOR,
E-1
lRAD50
subroutine,
B-9
ISNs,
internal
sequence
numbers,
1-8,
2-2
Keyword
options,
1-12
Languages
differences,
FTN-FOR,
D-l
/LB
switch,
1-11,
1-15
/LI
switch,
1-6
LIBR
option,
1-15
Libraries,
1-13,
1-15
Relocatable,
1-15
Shared,
1-13,
1-15
System,
1-15
User,
1-15
Library
subroutines,
B-1
Summary,
B-1
List
file,
1-7
List
formats,
1-7
Listing
Generated
code,
1-8
Source,
1-8
Storage
Map,
1-8
Local
symbols,
1-8
LOGICAL*l, A-3
Logical
device
assignments,
3-2
Logical
format,
A-4
Logical
operations,
E-1
Logical
operators,
E-1
Logical
shift,
E-2
Logical
unit
numbers,
1-14,
B-2
Logical
units,
1-13
LUN
assignments,
1-14,
3-2,
B-2
Map, memory
allocation,
1-10
MAXBUF
(task
builder
option),
1-13
Maximum
record
size,
1-13
MCR,
monitor
console
routine,
1-1,
1-5,
1-10
Memory
allocation
map,
1-10
Memory
requirements,
compiler,
1-10
IMP
switch,
1-11,
1-16
Monitor
console
routine,
(MCR),
1-1,
1-5,
1-10
Multi-dimensional
arrays,
2-5
NOT,
E-2
Null
arguments,
2-4
Object
code,
2-1
Object
time
format
compilation,
1-14
Object
time
system
(OTS),
2-1,
see
OTS
ODL,
overlay
description
language,
1-16
ODT,
(on-line
Debugging
Technique)
,
1-20
/Op
switch,
1-7
Operational
differences,
FTN-FOR,
0-4
Operations
,.
Logical,
E-1
Shift,
E-2
Operators,
logical,
E-1
Options,
keyword,
1-12
Options,
task
builder,
1-12
COTS),
object
time
system,
2-1
Differences,
FTN-FOR, D-2
Edit
number,
F-2
Error
codes,
C-15
Error
diagnostics,
C-12
Error
handling,
B-4,
B-6
Error
message
format,
C-13
Version
number,
F-2
Output
file,
1-5
INDEX-2
[.-
..
-
:',
~
r---:..
.'
\.
j
'-
Overlays,
1-16
Overlay
description
language
(ODL)
I
1-16
Overlay
structure,
1-16
Overlay
structure,
examples,
1-17,
1-18
Object
code,
2-1
Object
time
format
compilation,
1-14
Object
time
system
(OTS)
,
2-1
See
OTS
ODL,
overlay
description
language,
1-16
ODT,
(On-line
Debugging
Technique)
,
1-20
lop
switch,
1-7
Operational
differences,
FTN-FOR,
0-4
Operations,
Logical,
E-1
Shift,
E-2
Operators,
logical,
E-l
Options,
keyword,
1-12
Options,
task
builder,
1-12
(OTS)
,
object
time
system,
2-1
Differences,
FTN-FORm
0-2
Edit
number,
F-2
Error
codes,
C-15
Error
diagnostics,
C-12
Error
handling,
B-4,
B-6
Error
message
format,
C-13
Version
number,
F-2
Partition,
1-14
PAUSE
statements,
1-20
Peripheral
devices,
1-4
PRINT,
3-2
Program
termination,
B-7
Pseudo
devices,
1-4
R50ASC
subroutine,
B-10
RAD50
subroutine,
B-9
RADIX-50
Character
set,
A-4
Format,
A-4
Notation,
B-9
RANDU,
RAN
subroutine,
B-11
REASSIGN,
3-2,
B-2
Read
only
access,
B-8
Real
format
(2-word
floating
point),
A-2
Record
size,
maximum,
1-13
Relocatable
libraries,
1-15
Register
usage,
subprogram,
2-4
RESUME,
1-19
RETURN,
vii
.ROOT
statement,
1-16
RUN,
1-19
INDEX-3
SECNDS
subroutine,
B-ll
Secondary
phase
error
diagnostics,
C-4
ISH
switch,
1-11
Shared
access,
B-8
Shared
library,
1-13,
1-15
Shift,
logical,
E-2
Shift
operati9ns,
E-2
Short
message
file,
C-14
ISN
switch,
1-7
Software
performance
reports,
F-1
Source
listing,
1-8
ISP
switch,
1-6,
1-11
Statement
ordering,
3-3
STOP,
1-19
Storage
map
listing,
1-8
Subprograms,
Assembly
language,
2-3
Function,
2-5
FORTRAN,
2-3
Register
usage,
2-4
Subroutines,
library,
B-1
Subroutine
linkage,
2-3
Switches,
compiler,
1-6
IDE,
1-6
lEX,
1-7
lID,
1-7
1I4,
1-7,
A-I
ILl,
1-6
lop,
1-7
ISN,
1-7
Isp,
1-6
IVA,
1-7,
2-6
IWR,
1-7,
C-10
Switch
default
summary,
1-7
Switch
format,
1-3
Switch
options,
task
Builder,
1-11
lEA,
1-11
IFP,
1-11
ILB,
1-11,
1-15
IMP,
1-11,
1-16
ISH,
1-11
Isp,
1-11
Syntax
errors,
C-1
SYSLIB.OLB
(system
object
library),
1-10,
1-15
System
Libraries,
1-15
TASK
(task
builder
option),
1-13
Task
builder,
1-10
Exit,
1-10
Task
builder
options,
1-12
ACTFIL,
1-12,
3-2
ASG,
1-14
COMMON,
1-12
FMTBUF,
1-14
LIBR,
1-13
MAXBUF,
1-13
PAR,
1-14
TASK,
1-13
Ule,
1-2,
1-13
UNITS,
1-13
Task
Builder
switch
options,
1-11
See
also
Switch
options,
Task
Builder
Task
execution,
1-19
Task
image,
1-10
Task
Image
file,
1-10
Task
name,
1-13
TIME
subroutine,
B-12
TYPE,
3-2
Ule
(task
builder
option),
1-13
UNITS
(task
builder
option),
1-13
Units,
logical,
1-13
Unit
numbers,
logical,
1-14
USEREX
subroutine,
B-7
User
libraries,
1-15
/VA
switch,
1-7,
2-6
Variable
names,
3-1
Vectored
arrays,
2-5
Version,
1-2
Warning
diagnostics,
e-10
/WR
switch,
1-7,
e-10
INDEX-4
{
\
HOW
TO
OBTAIN
SOFTWARE
INFORMATION
SOFTWARE
NEWSLETTERS,
MAILING
LIST
The
Software
Communications
Group,
located
at
corporate
headquarters
in
Maynard,
publishes
newsletters
and
Software
Performance
Summaries
(SPS)
for
the
various
Digital
products.
Newsletters
are
published
monthly,
and
contain
announcements
of
new
and
revised
software,
programming
notes,
software
problems
and
solutions,
and
documentation
corrections.
Software
Performance
Summaries
are
a
collection
of
existing
problems
and
solutions
for
a
given
software
system,
and
are
published
periodi-
cally.
For
information
on
the
distribution
of
these
documents
and
how
to
get
on
the
software
newsletter
mailing
list,
write
to:
Software
Communications
P.
O. Box F
Maynard,
Massachusetts
01754
SOFTWARE
PROBLEMS
Questions
or
problems
relating
to
Digital's
software
should
be
reported
to
a
Software
Support
Specialist.
A
specialist
is
located
in
each
Digital
Sales
Office
in
the
United
States.
In
Europe,
software
problem
reporting
centers
are
in
the
following
cities.
Reading,
England
Paris,
France
The
Hague,
Holland
Tel
Aviv,
Israel
Milan,
Italy
Solna,
Sweden
Geneva,
Switzerland
Munich,
West
Germany
Software
Problem
Report
(SPR)
forms
are
available
from
the
specialists
or
from
the
Software
Distribution
Centers
cited
below.
PROGRAMS
AND
MANUALS
Software
and
manuals
should
be
ordered
by
title
and
order
number.
In
the
United
States,
send
orders
to
the
nearest
distribution
center.
Digital
Equipment
Corporation
Software
Distribution
Center
146 Main
Street
Maynard,
Massachusetts
01754
Digital
Equipment
Corporation
Software
Distribution
Center
1400
Terra
Bella
Mountain
View,
California
94043
Outside
of
the
United
States,
orders
should
be
directed
to
the
nearest
Digital
Field
Sales
Office
or
representative.
USERS
SOCIETY
DECUS,
Digital
Equipment
Computer
Users
Society,
maintains
a
user
ex-
change
center
for
user-written
programs
and
technical
application
in-
formation.
A
catalog
of
existing
programs
is
available.
The
society
publishes
a
periodical,
DECUSCOPE,
and
holds
technical
seminars
in
the
United
States,
Canada,
Europe,
and
Australia.
For
information
on
the
society
and
membership
application
forms,
write
to:
DECUS
Digital
Equipment
Corporation
146
Main
Street
Maynard,
Massachusetts
01754
DECUS
Digital
Equipment,
S.A.
Sl
Route
de
l'Aire
1211
Geneva
26
Switzerland
F
(
READER'S
COMMENTS
RSX-IIM
FORTRAN-IV
USER'S
GUIDE
DEC-II-LMFUA-A-D
NOTE:
This
form
is
for
document
comments
only.
Problems
with
software
should
be
reported
on
a
Software
Problem
Report
(SPR)
form
(see
the
HOW
TO
OBTAIN
SOFTWARE
INFORMATION
page).
Did
you
find
errors
in
this
manual?
If
so,
specify
by
page.
Did
you
find
this
manual
understandable,
usable,
and
well-organized?
Please
make
suggestions
for
improvement.
Is
there
sufficient
documentation
on
associated
system
programs
required
for
use
of
the
software
described
in
this
manual?
If
not,
what
material
is
missing
and
where
should
it
be
placed?
Please
indicate
the
type
of
user/reader
that
you
most
nearly
represent:
o
Assembly
language
programmer
o
Higher-level
language
programmer
[]
Occasional
programmer
(experienced)
o
User
with
little
programming
experience
o
Student
programmer
o
Non-programmer
interested
in
computer
concepts
and
capabilities
Name.,...,..---,...,---.....-
________________
Oat.e
____________
_
Organization
__
--_._-.....--
___
---------------------
Street_.....-,---
___
-----------------------------
Ci
ty_~-.,..----~-----
State
____
---
Zip
Code
______
_
or
Country
If
you
do
not
require
a
written
reply,
please
check
here.
0
-------------------------------------------------------------Fold lIere------------------------------------------------------------
----------------------------------------------
..
-
Do
Not
Tear
-
Fold
lIere
and
Staple
------------------------------~----------------
BUSINESS REPLY MAIL
NO POSTAGE STAMP NECESSARY
IF
MAILED IN
THE
UNITED STATES
Postage will be paid by:
Software
Communications
P.
O. Box F
Maynard,
Massachusetts
01754
FIRST CLASS
PERMIT NO. 33
MAYNARD, MASS.

Navigation menu