Trailing-Edge
-
PDP-10 Archives
-
AP-D480B-SB_1978
-
ftn5a.doc
There is 1 other file named ftn5a.doc in the archive. Click here to see a list.
FORTRAN-10 -- Changes from V5(515) to V5A(621)
October 1977
COPYRIGHT (C) 1975,1977 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
TRANSFERRED.
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
FTN5A.DOC - FORTRAN-10 Page 2
FORTRAN-10 -- Changes from V5(515) to V5A(621)
October 1977
1.0 SUMMARY
Version 5A of the FORTRAN compiler is a maintenance release to fix
known bugs that have been reported in version 5. Also included are
the latest versions of FOROTS, FORLIB and FORDDT. The purpose of the
release is to provide a tested version with all of the patches to date
incorporated.
Fortran version 5A is Fortran version 5 with edits #516 through #621
inclusive.
1.1 Bibliography
The FORTRAN language and this implementation are described in the
Software Notebooks and in the FORTRAN-10 Programmer's Reference Manual
- AA-0944E-TB.
1.2 Monitors
This version of Fortran will run under any monitor supported by DEC
for the DECsystem-10. It has been tested under 5.07, 6.01, 6.02 and
6.03. It conforms to DATE75 standards.
1.3 Related System Software
The following system software must be used with the FORTRAN compiler:
BLIS10 7B(222)
LINK any version
FOROTS 4B or later
FORLIB 4B or later
SCAN 7B
2.0 EXTERNAL CHANGES
The processing of an initial tab has been fixed to correspond in all
cases with the documentation. It was incorrectly handled if in column
6.
A new syntax error is detected: if an implied DO loop index is the
same as a currently active DO index (implied or otherwise), an error
is reported.
Only non-blank lines are outputted in the line-number/octal-loctation
map generated under /LNMAP.
In addition a large number of SPRs have been answered since version
FTN5A.DOC - FORTRAN-10 Page 3
5(515). All of these edits plus a number of bug fixes are included in
version 5A.
3.0 KNOWN BUGS AND DEFICIENCIES
Deeply nested expressions might get "stack overflow" in FORTB.
4.0 INSTALLATION INSTRUCTIONS
There are no changes in the installation instructions. This version
of the compiler requires version 7B(222) of the BLISS compiler and
version 52 of MACRO.
See the file FTN5A.FIG for information regarding installation.
5.0 INTERNAL CHANGES
The following is a list of all the edits made to version 5(515) in
producing version 5A.
#516 SPR-21215 Find files with blank extensions in SFDs.
#517 SPR-21238 Make SFDs in command strings work.
#520 SPR-21271 Prohibit negations in relational COMSUBs.
#521 QAR-900 Fix params to FATLEX in OPENCLOSE.
#522 SPR-20819 Check negflgs for arrayrefs in iolists.
#523 QAR-1038 Fix default flag settings for SCAN: switches count
from left not right.
#524 QAR-876 Put back array ref in STPRECLUDE so hash entry taken
out of tree; call STPRECLUDE before CMNMAK so can
hash skewed tree with neg flags unchanged.
#525 QAR-949 Do correct TYPECNV in DOTOFIX only if necessary.
#526 QAR-1035 In CHKDOM if FNARY and no match on "func(arrayref)",
put back arrayref so hash tbl entry not in tree.
#527 SPR-20317 Bad code for ASSOCIATE VARIABLEs in COMMON.
#530 SPR-21606 Bad code for DOUBLE PRECISION SPECOPs which
generated FSC instructions.
#531 SPR-20323 Give warning when subroutine parameter is used as
FTN5A.DOC - FORTRAN-10 Page 4
ASSOCIATE VARIABLE.
#532 SPR-20323 Fix code generation for an array element used as an
ASSOCIATE VARIABLE.
#533 SPR-21796 INCLUDE stmnt destroys locs 4400-4402.
#534 SPR-21817 Internal compiler errors in FORTB caused by badly
structured statement functions.
#535 SPR-21809 Inaccessible code with zero line number.
#536 SPR-none Add RCHAR to err name plit.
#537 SPR-21811 Bad printing of error continuation line.
#540 SPR-22191 Bad COMMON stmnt gives ICE.
#541 SPR-none -20 only: clear LASTCHARACTER in READTXT after ^Z
seen so more TTY: input may be done.
#542 SPR-22147 Make a NOT imply type LOGICAL always.
#543 SPR-none Fix binary search for library name.
#544 SPR-10290 FIND stmnt node too small - expand it.
#545 SPR-22096 Function values must go into really free regs.
#546 SPR-22030 Fix problems with operations which clobber following
register (IDIV).
#547 SPR-21280 (QAR-863) Fix initial tab in column 6 to go to col 7
on an initial line or col 6 if a continuation line.
#550 SPR-21824 Fix reg allocation for big expression.
#551 SPR-21826 Fix type conversion during code generation.
#552 SPR-21826 Generate better code for type conversion of array
reference.
#553 SPR-21826 Type conversion may be necessary if LOGICAL
operation above it is liquidated.
#554 SPR-22324 AND node with the negation of a function call below
it gives bad code.
#555 SPR-22281 Fix line number/octal map with ENTRY points.
#556 SPR-none Put /L in heading of page if octal map requested.
#557 SPR-none Catch wild PPN or SFD as error.
#560 SPR-none -20 only: handle PPNs in the command line
FTN5A.DOC - FORTRAN-10 Page 5
correctly.
#561 SPR-10429 Allow continuation lines after page marks and form
feeds.
#562 SPR-22540 Iolists in optimizations may kill reg 0.
#563 SPR-22541 Spurious errors if first arg to lib fn is of
unacceptable type.
#564 SPR-22693 Make CGREAD == CGWRIT: generate FIN call on
unformatted WRITE with no iolist.
#565 SPR-21810 Extended range DO loops gives bad graph.
#566 SPR-22701 Bad COMSUBs with many NOT flags and shape SKEW.
#567 SPR-22284 EXTERNAL stmnt not remembered at ENTRY points.
#570 SPR-22703 Bad stmnt fn gives ice (FN(2,3)).
#571 SPR-22378 Add IDUSECNT definition; add ARALINK definition;
fix V5 opt that shares 2nd offset of formal array if
1st dims = so all will work if array subsequently
typed different number of words than when sharing
1st done; define and call CLERIDUSECNT at end of
MRP1.
#572 SPR-21825 Check implied DO index for already active (from
enclosing implied or real DO).
#573 SPR-none New REQUIRE file to hold DBUGIT flag; remove "BIND
DBUGIT=" in IOFLG; REQUIRE DBUGIT.REQ in DRIVER,
INOUT, LEXICA and LEXSUP.
#574 SPR-none Rewrite binary search in SRCHLIB to work after edit
543.
#575 SPR-22820 Rewrite ZAPLEVEL to prevent stack overflow for very
large branching program.
#576 SPR-22796 Fix line number given for infinite loop
#577 SPR-22352 DO loop with a CALL statement inside must
materialize loop variable if it is in COMMON.
#600 SPR-22990 More efficient stack usage in FORTE.
#601 QAR-20-26 Fix edit 572 to check implied DO index in DATA
statements for "ALREADY ACTIVE" from enclosing
implied DO.
#602 SPR-22700 Optimized iolists with skewed expressions may
generate ELISTs incorrectly.
FTN5A.DOC - FORTRAN-10 Page 6
#603 SPR-23442 Add * as initial char for label constant.
#604 SPR-23425 Fix listing of COMMON block so that we do not get an
extra carriage return.
#605 SPR-23478 Bad code with /OPT for asgmnt stmnt with lhs like
A(I/2) or A(I**5).
#606 SPR-22795 Some overflows during constant folding not detected
and poor code given.
#607 SPR-22685 Generate zero argument block only if needed.
#610 SPR-23333 Bad code for COMSUB with neg flag. Replaces edit
345.
#611 SPR-23662 Immediate size complex constants cause trouble for
code generation.
#612 SPR-23263 Initialize ARRCOUNT in IOCLEAR (this completes edit
406).
#613 QAR-2114 Ignore indirect bit in formal function target in
entry prologue.
#614 SPR-23760 Output only non-blank lines on /LNMAP.
#615 SPR-23116 Be careful with labels when preloading.
#616 SPR-22345 /O list under register scarcity gives ICE.
#617 QAR-2121 Only try to substitute the subscript of an arrayref
if it isn't a constant.
#620 SPR-23720 D.P. array ref in io list causes problems during
optimization (IOLSCLS node ptrs).
#621 QAR-2120 Account for page marks at end of file.
6.0 SUGGESTIONS
None.
[End of FTN5A.DOC]
[FTN5.DOC is appended as an integral part of FTN5A.DOC]
FTN5.DOC - FORTRAN-10 Page 7
FORTRAN-10 -- Changes From V4A(317) to V5(515)
November 1976
1.0 SUMMARY
Version 5 of the FORTRAN compiler is a development release
incorporating improved optimizations that will increase program
execution speed for matrix multiplication plus many bug fixes and SPRs
fixing known problems. In addition, an optional LINE NUMBER/OCTAL
LOCATION map has been added to the listing output by the compiler.
Also included are the latest versions of FOROTS, FORLIB and FORDDT.
New functionality has been added to FORTRAN, FOROTS and FORLIB to
allow user-handling of soft and hard I/O errors on OPEN, CLOSE, READ
and WRITE using ERR=. The purpose of the release is to provide a
tested version with all of the patches to date incorporated.
This version of Fortran will run under any monitor supported by DEC
for the DECsystem-10. It has been tested under 5.07, 6.01, and 6.02.
It conforms to DATE75 standards.
The FORTRAN language and this implementation are described in the
Software Notebooks and in the FORTRAN-10 Programmer's Reference Manual
- AA-0944E-TB.
2.0 EXTERNAL CHANGES
The major improvement in version 5 is to recognize certain new
expressions as candidates for optimization. One specific class of
programs which will be favorably affected is matrix multiplication.
Common sub-expression elimination and motion of constant expressions
are performed again after reduction in strength and propagation of
constants in order to optimize expressions of the form .R + X as well
as expressions containing propagated constants. Also array references
containing common sub-expressions are optimized in certain
circumstances; extraneous optimizer variables are not allocated;
register allocation of computations to memory has a higher priority
than index usage; improved packaging techniques are incorporated;
variable offsets for formal arrays are shared to allow common
sub-expression optimization.
In addition a large number of SPRs have been answered since version
4A(317). All of these edits plus a number of bug fixes are included
in version 5.
FTN5.DOC - FORTRAN-10 Page 8
A LINE NUMBER/OCTAL LOCATION map, under the control of the /LNMAP
switch, has been added to the listing generated by the FORTRAN
compiler if no MACRO listing is requested. The default is NO line
number map. The /LNMAP switch with NO /MACRO switch enables the line
number map. If BOTH /LNMAP and /MACRO are specified, no line number
map will be produced since all of the information from the map is on
the MACRO listing. The map appears as a matrix, with the rows being
line numbers in increments of 10 and the columns being line numbers in
increments of 1. The values of the matrix entries are octal locations
where the line numbers (specified by the row and column intersections)
start. On the MACRO listing, more than one octal location can be
associated with a line number, eg, a logical IF generates code for the
Boolean expression and the "THEN" statement (all of which may take up
more than one octal location but the IF statement may be on one line
and therefore one line number is associated with more than one octal
location). The LINE NUMBER/OCTAL LOCATION map contains only the first
such octal location for a given line number. Notice that the matrix
can be large and sparse for line-numbered files with a large increment
(like those created by SOS).
The following functionality has been added to FOROTS/FORLIB:
1. ERR= has been added to OPEN and CLOSE as an argument. See
6.0 for the additional syntax of the OPEN and CLOSE
statements.
2. The ERR= branch will be taken for hard and soft errors on
OPEN, CLOSE, READ and WRITE and any I/O operation on which
the ERR= option is permitted. This applies to ASCII and
BINARY files.
3. A subroutine has been added to FORLIB called ERRSNS. It
takes one or two arguments, each of which is an integer
variable in which to return an integer value that reflects
the status of the last I/O operation done by FOROTS. The
value returned in the first argument is a
Fortran-standardized indicator of what error occurred. The
value returned in the second argument (if present) is a more
processor-dependent indication of the error. Zero always
means satisfactory completion. The other integers returned
are unique within the FORTRAN system and are documented in
the Fortran Programmer's Reference Manual. See 7.0 for the
list of values returned by ERRSNS.
4. The status of FOROTS will be left so that the operation which
caused the error may be repeated, if possible, except for
sequential input operations where only the last record may be
re-input. The values of the data items on an input list are
undefined when the ERR= branch is taken. See 8.0 for a
discussion of the unit's status after an I/O error.
5. This extension is compatible with the proposed ANSI 76
FORTRAN standard in the use of ERR= in both OPEN and CLOSE
and on I/O statements.
FTN5.DOC - FORTRAN-10 Page 9
3.0 KNOWN BUGS AND DEFICIENCIES
Deeply nested expressions might get "stack overflow" in FORTB.
A formal parameter to a subroutine used as an ASSOCIATE VARIABLE in an
OPEN statement inside the subroutine generates incorrect code.
ASSOCIATE VARIABLEs are not always detectable by the compiler (eg, if
the OPEN is in another subroutine): it may erroneously assume that
the ASSOCIATE VARIABLE may remain in a register around a random I/O
that changes the value of that ASSOCIATE VARIABLE.
4.0 CHANGES IN INSTALLATION INSTRUCTIONS
There are no changes in the installation instructions. This version
of the compiler requires version 5A(206)-1 of the BLISS compiler and
version 50A of MACRO. See the file FTN10.FIG for information
regarding installation.
5.0 INTERNAL CHANGES
The following is a list of all the edits made to version 4A(317) in
producing version 5.
begin Version 4B, 26-Aug-75
#320 SPR-16787 catch COMMON /X/A(5)B(5) as error
#321 SPR-17005 scan for induction variable in OPEN/CLOSE
when /OPT
#322 SPR-16688 check for disjoint iolists before
collapsing
#323 SPR-16729 change name of temps used to save regs in
function pro/epi-logue from .xxxnn to
.A00nn to avoid conflict.
#324 SPR-16750 clean up symbol table entries after bad
statement function.
#325 SPR-17044 check for overflow of stk caused by long
argument lists, and remedy situation.
#326 SPR-17086 fix register targeting for assignment
statements with AND/OR nodes and function
calls.
#327 SPR-16688 prevent optimizer from dying on programs
with potentially infinite loops
FTN5.DOC - FORTRAN-10 Page 10
#330 SPR-7150 ensure that the optimizer does not consider
ENTRY statements to be inaccessible
#331 SPR-17091 fix propagation of negation for special
operator: raise to an odd constant integer
power cannot absorb a negate from below.
#332 SPR-17045 fix ASSIGN statements within DO loops
#333 SPR-17045 fix up code generated for assigned GOTO
statements within DO loops.
#334 SPR-17420 correct format of DO statement (add LINEND)
#335 SPR-17377 fix FATLERR so that it does not destroy the
content of NAME for LEXICA.
#336 SPR-17259 check for iolist with NAMELIST directed I/O
#337 SPR-17305 round up immediate real constants before
listing them
#340 SPR-16989 do not allow call to MATCHER to change
value of PHI - optimizer bug
#341 SPR-17770 fix register allocation for exponentiation
inside function
#342 SPR-17876 make long unclassifiable statements work
properly - several minor patches
#343 SPR-17636 fix end of statement processing so that the
line number is correct.
#344 SPR-17768 fix propagation of FNCALL flag to a NEG/NOT
node.
#345 SPR-17554 fix common subs involving exponentiation to
even powers something with a NEG flag
#346 SPR-17928 pass out RETURN information to outer DO
loops
#347 SPR-17545 in global register allocation, prevent bad
preloads caused by logical IFs.
#350 SPR-17545 common subs must also cause preloads of
registers on occasion - fix this.
#351 SPR-none fix edit 342 properly
#352 SPR-18007 fix edit 266 for case with one
materialization
#353 SPR-18004 fix two CALLs generating bad code
FTN5.DOC - FORTRAN-10 Page 11
#354 SPR-18015 bad code involving reduction in strength
#355 SPR-18132 core management insufficient for large DATA
statement
#356 SPR-18105 make MAIN. global symbol for main progs.
#357 SPR-18191 fix OPEN error reporting
#360 SPR-18243 fix RETURN stmnt at end of DO loop
#361 SPR-18451 fix GOTO end of DO loop
#362 SPR-18245 fix up argument block types for logical and
octal and double octal constants
#363 SPR-18269 check A1NOTFLG before remembering reg
contents
#364 SPR-18251 correct EQUIVALENCE processing
#365 SPR-18857 take care of form feeds between routines
#366 SPR-18210 SAVLINE cannot clobber name: X=.123EQ.A
and X=1.1HABC are illegal
#367 SPR-18239 WRITE(u) generates wrong code
#370 SPR-17938 remove [244]: real fix is in REDUCE
(TSTR); fix code motion for .R variables
#371 SPR-18471 fix CSE for straight case in MATCHER
#372 SPR-18314 fix assign GOTO inside loops
#373 SPR-18242 correct register allocation for large
assignment statements
#374 SPR-none fix mis-spelled macro name
#375 SPR-18450 use .O instead of .R for dp temporary
#376 SPR-18398 fix WRITE stmnt with DEBUG set
#377 SPR-18476 fix reg allocation for COS(X)*A(I)
#400 SPR-18704 fix logical IF before nested loops
#401 SPR-17813 fix A(I)=B(I)+B(I)+1.0
begin Version 5, 7-May-76
#402 SPR-18917 restore FLGREG properly after INCLUDE
#403 SPR-18961 bad reg allocation for I=I/J
FTN5.DOC - FORTRAN-10 Page 12
#404 SPR-18869 make associate variable list correct and
don't let them live in registers
#405 SPR-18967 fix A(P(I)) in iolist
#406 SPR-18978 fix CHAR(K(I,J)) in iolist
#407 version 5 add ERR= on OPEN/CLOSE
#410 QAR-00568 make DTABPTR global for BLDDIM
#411 SPR-19537 don't swap args for MAX or MIN if first arg
is negative
#412 version 5 node with arg1 = double array ref for KA10
must have complexity at least 3; use
subscript reg for double array ref value
except on KA10
#413 SPR-none don't use FADL in INTDP if not on KA10
#414 QAR-00625 fix .I offset sharing so only shares dim2
.I if dim1 same
#415 SPR-18964 don't destroy symbol table entry for formal
function when ENTRY statmnt seen with the
function as a param.
#416 QAR-00650 fix MOVCNST so hash entry ignored on next
pass if .R+X can't be moved as .O
#417 QAR-00637 fix bad statement function from clobbering
things on cleanup in 324
#420 QAR-00637 after bad st fn, clean up the name so that
it does not cause trouble later
#421 QAR-00651 don't propagate .O if came from .R
#422 SPR-18493 imbedded nulls cause low level looping
#423 QAR-00709 fix patch 414: DIMNUM is 1-relative
#424 QAR-00690 error if DIRECTORY= not literal or array
name in OPENCLOSE
#425 QAR-00714 call ZTREE to clear DEFPTS if optimizations
discontinued in OPTERR
#426 SPR-18816 set FNCALLSFLG for implicit fn calls, so
0,1, and 16 are known to be clobbered
#427 SPR-18871 fix comsubs in iolists
#430 SPR-18876 make arith if nodes absorb negs right.
FTN5.DOC - FORTRAN-10 Page 13
#431 SPR-19121 materialize varibles that have been
allocated to registers during a
doubly-nested DO loop correctly.
#432 SPR-19037 fix conversion of logical array ref
#433 SPR-19130 make DO n I=10,1 execute once
#434 SPR-19211 check function call containing DO index as
a parameter after constant folding.
#435 SPR-18964 fix io lists with variable increment
#436 SPR-19427 catch EQUIVALENCE violation when building
equivalence classes.
#437 QAR-00771 don't let DOTOHASGN move .O = expr if .O
came from .R; mark subsuming .O if
subsumee .O came from .R in dotofix
#440 QAR-00771 don't NEXTUP .O if came from .R in MOVCNST
#441 SPR-19231 fix register allocation for a d.p.
arrayref as a fn call paramter.
#442 SPR-19233 make the deletion of hash element work if
element is first in its list
#443 QAR-00656 warning + opt stopped if discover illegal
DO nesting in LNKEXTND; add warning
message E140
#444 SPR-19484 fix to 246 - don't force preload of
compiler variables if GOTO encountered.
#445 SPR-19632 use fewer locals on stack during recursive
calls to P2SKARITH
#446 SPR-20652 bad code for I=I*3 and I=I**7 (QAR753)
#447 SPR-19547 negatives propagated too much in FORTG
#450 QAR-00784 don't NEXTUP arrayref if inside iolist
#451 SPR-19610 correct spelling in error message
#452 SPR-19610 NUL: causes problems as output dev
#453 SPR-19695 don't make DO be DEFPT of all vars modified
inside the loop.
#454 SPR-19699 don't place preloads 1 statement too late
when placing after a DO loop.
#455 QAR-00784 can't move expressions out of implied DO if
FTN5.DOC - FORTRAN-10 Page 14
inside logical IF
#456 QAR-00784 fix FINDTHESPOT so caller tells it where to
stop; add new routine FINDPA for GLOBMOV
and DOTOHASGN; call FINDTHESPOT with 2nd
param in GLOBMOV and DOTOHASGN; give
GLOBMOV entire hash entry in CMNMAK for
FINDPA; call FINDTHESPOT with 2nd param =
TOP in HAULASS; call FINDTHESPOT with 2nd
param = TOP in REDUCE
#457 SPR-19805 try harder not to request a reg in REGAL2
unless we really need it - might run out
early.
#460 SPR-19477 change DIMENSION processing to be more
thorough and less apt to exit early
#461 SPR-19477 detect when program is too large; add E142
#462 SPR-19960 fix MRP1 to leave SREG<LEFT> with the same
value it found in it
#463 SPR-19989 fix implied DOs whose initial value or step
size come from an outer AOBJN DO.
#464 QAR-00754 add line-number/octal-location map if macro
listing not requested; add 3 globals for
line-handling
#465 SPR-20657 clear INDVAR before calling REDUCE for
statements before the DO loop; we might
find some reductions otherwise.
#466 version 5 delete code to zero DEFPTS between LENTRY
and TOP (remove 465 and more)
#467 version 5 take out FORSWI.REQ; require FTTENX.REQ;
require FT1SEG.REQ
#470 SPR-20744 make sure the high seg starts at least a
page above the end of the low seg.
#471 SPR-20309 lhs a logical equivalenced var may generate
bad code
#472 SPR-20494 incorrect EQUIVALENCE processing when last
element of group in COMMON
#473 SPR-20478 scalars and arrays listing too wide
#474 SPR-20479 output CRLF after last COMMON block name
#475 SPR-20813 don't collapse ELISTs that we shouldn't
FTN5.DOC - FORTRAN-10 Page 15
#476 QAR-00754 make MAPFLG from STATFLG in FLGREG; make
/MAP a switch to SCAN; make line
number/octal location map optional under
/MAP switch
#477 QAR-00831 make message NAMLEXs more readable
#500 SPR-20818 don't see if a node is an I/O statement
unless it's a statement.
#501 SPR-21113 don't reduce .Os in outer DO loops.
#502 SPR-20463 sort saved vs non-saved regs correctly in
FLIPCODES; fake ITMCT also; remove XLISTs
for FTTENEX
#503 SPR-19976 for A(I) = func. call, don't leave I in
reg 1 when calculating lh first.
#504 QAR-00815 fix edit 412 to not allow fetches of
complex numbers into an AC which is also
the index reg. Negated fetches use two
instructions (even on KIs), and NEGFLGs can
sneak in much later.
#505 QAR-00815 in DOTORFIX don't move .R init if it's
already in the correct place
#506 SPR-10056 linesequenced files kill low level
buffering
#507 SPR-none fix edit 440 to allow NEXTUP of .O which
came from .R in MOVCNST if mom is
arithmetic
#510 SPR-none don't test ALCRETREGFLG in DATAOPR nodes
#511 SPR-none fix E37,E79,E100 to agree with ERROVD; fix
and move E140 from [443]; fix spelling in
E74; fix E140
#512 SPR-none make /MAP from [476] called /LNMAP since
/MAP/LMAP are LOAD COMPIL switches
#513 QAR-00771 in MOVCNST when .O is created, pass up
ORFIXFLG from any .O being subsumed;
change [507] to free varaible T in MOVCNST
#514 QAR-00806 in MOVCNST if NARY insure .R is 1st arg
since [V5] code assumes .R+X
#515 QAR-00815 remove "TEMP [EXPRUSE] _ 1" in DOTORFIX
FTN5.DOC - FORTRAN-10 Page 16
6.0 OPEN AND CLOSE SYNTAX
The syntax for the OPEN and CLOSE statements may include an optional
error specifier of the form:
ERR = s
where s is the statement label of an executable statement (that
appears in the same program unit as the error specifier) to which
control is transferred when an error is detected during the processing
of the OPEN or CLOSE statement.
7.0 ERRSNS VALUES
This section lists the integer values returnable by the subroutine
ERRSNS. ERRSNS takes one or two integer variable arguments and places
values in them that describe the status of the last I/O operation
performed by FOROTS. The following values can be returned in the
first (standardized) argument. Along with each value is listed the
error category for this standardized indicator. Under each category
are listed the specific processor-dependent errors which reside in the
category. Numbers in brackets (ie. [ and ]) refer to footnotes at
the end of the section.
value explanation
arg1 arg2
0 no error detected
0 satisfactory completion, ie, no error detected
101 normal end of job [1]
1 invalid error call
243 unidentified entry in FORERR [3]
246 unidentified entry in FORERR [3]
300 unidentified entry in FORERR
23 backspace error
312 BACKSPACE illegal for device [9]
24 end-of-file during read
308 attempt to READ beyond valid input [8]
25 invalid record number
302 LSCW illegal in binary record or reading ASCII
attempt to read unwritten ASCII RANDOM ACCESS record
or unwritten or destroyed record number
26 direct access not specified
311 cannot RANDOM ACCESS a SEQUENTIAL file
FTN5.DOC - FORTRAN-10 Page 17
28 CLOSE error
252 DTA directory is full
protection error
254 RENAME file name already exists
262 no room or quota exceeded
268 cannot DELETE or RENAME a non-empty directory
29 no such file
250 file was not found
30 OPEN failure
237 DUMP mode RANDOM or APPEND access not implemented
try IMAGE mode
238 DIALOG file cannot be opened [3]
240 record length missing for RANDOM access
242 too many devices open: fifteen maximum
245 device not available
248 illegal ACCESS for device
249 illegal MODE or MODE switch
251 no directory for project,programmer number
253 file was being modified
255 Illegal Sequence of Monitor Calls [11]
256 bad UFD or bad RIB
259 device not available
265 partial allocation only
266 block not free on allocation
267 cannot supersede an existing directory
269 SFD not found
270 search list empty
271 SFD nested too deeply
272 "no create" flag on for specified UFD
274 file cannot be updated
277 LOOKUP ENTER or RENAME error
31 mixed access modes
315 cannot do SEQUENTIAL ACCESS on a RANDOM file
32 invalid logical unit number
239 illegal FORTRAN unit number
39 error during read
310 REREAD before first READ is illegal [1]
42 device handler not resident
244 no such device
260 no such device
45 OPEN statement keyword error
241 switch error during DIALOG or OPEN statement scan
47 WRITE on READonly file
263 write lock error
59 list-directed I/O syntax error
313 illegal delimiter in LIST DIRECTED input
FTN5.DOC - FORTRAN-10 Page 18
62 syntax error in FORMAT
301 illegal character in FORMAT statement [4]
306 input/output list without data conversion in FORMAT
314 missing width field for A or R on input
63 output conversion error
305 optional * fill: unidentified entry in FORERR [7]
64 input conversion error
303 checksum error reading binary records [5]
307 illegal character in data
67 record too small for I/O list
304 input/output list greater than record size [6]
81 invalid argument
102 argument block not in correct format
261 argument block not in correct format
699 unclassifiable error on open
247 FOROTS system error [3]
257 FOROTS system error
258 FOROTS system error
264 not enough monitor table space
273 FOROTS system error
275 FOROTS system error
276 FOROTS system error
799 unclassifiable data error
309 variable cannot be found in NAMELIST block
899 unclassifiable device error
400 write protected
401 device error
402 parity error
403 block too large, quota exceeded or file structure full
403 nonexistent CDR reader
Spooled CDR file does not exist
404 end of file [10]
407 end of tape
999 unclassifiable system error
100 FOROTS system error
103 monitor not built to support FOROTS
104 fatal error
105 user program has requested more core than is available
106 runtime memory management error
FTN5.DOC - FORTRAN-10 Page 19
The second (optional) integer variable argument is a more
processor-dependent indicator of the error. The value is an integer
of the form
etnn
where
e = 0 means I/O reset was successful so that the I/O
statement causing the error is repeatable
e = 1 means I/O reset was unsuccessful so that any further
I/O on the unit in error is undefined
e = 2 means another I/O error occurred during I/O reset so
that any further I/O on the unit in error is undefined
t = 0 means satisfactory completion, ie, no error detected
t = 1 means a system error occurred
t = 2 means an open error occurred
t = 3 means a data error occurred
t = 4 means a device error occurred
nn = 0 means satisfactory completion, ie, no error detected
(and e = t = 0)
nn > 0 specifies a particular error
Below are listed the specific values for the second (optional)
argument returned by ERRSNS. The integer in the second column
(labeled arg1) is the Fortran-standardized error value returned in the
first argument to ERRSNS. Numbers in brackets (ie, [ and ]) refer to
footnotes at the end of the section.
value explanation
arg2 arg1
0 0 satisfactory completion, ie, no error detected
system errors
100 999 FOROTS system error
101 0 normal end of file [1]
102 81 argument block not in correct format
103 999 monitor not built to support FOROTS
104 999 fatal error
105 999 user program has requested more core than is available
FTN5.DOC - FORTRAN-10 Page 20
106 999 runtime memory management error
open errors [2]
237 30 DUMP mode RANDOM or APPEND access not implemented
try IMAGE mode
238 30 DIALOG file cannot be opened [3]
239 32 illegal FORTRAN unit number
240 30 record length missing for RANDOM access
241 45 switch error during DIALOG or OPEN statement scan
242 30 too many devices open: fifteen maximum
243 1 unidentified entry in FORERR [3]
244 42 no such device
245 30 device not available
246 1 unidentified entry in FORERR [3]
247 699 FOROTS system error [3]
248 30 illegal ACCESS for device
249 30 illegal MODE or MODE switch
250 29 file was not found
251 30 no directory for project,programmer number
252 28 DTA directory is full
protection error
253 30 file was being modified
254 28 RENAME file name already exists
255 30 Illegal Sequence of Monitor Calls [11]
256 30 bad UFD or bad RIB
257 699 FOROTS system error
258 699 FOROTS system error
259 30 device not available
260 42 no such device
261 81 argument block not in correct format
262 28 no room or quota exceeded
263 47 write lock error
264 699 not enough monitor table space
265 30 partial allocation only
266 30 block not free on allocation
267 30 cannot supersede an existing directory
268 28 cannot DELETE or RENAME a non-empty directory
269 30 SFD not found
270 30 search list empty
271 30 SFD nested too deeply
272 30 "no create" flag on for specified UFD
273 699 FOROTS system error
274 30 file cannot be updated
275 699 FOROTS system error
276 699 FOROTS system error
277 30 LOOKUP ENTER or RENAME error
data errors
300 1 unidentified entry in FORERR
301 62 illegal character in FORMAT statement [4]
302 25 LSCW illegal in binary record or reading ASCII
FTN5.DOC - FORTRAN-10 Page 21
attempt to read unwritten ASCII RANDOM ACCESS record
or unwritten or destroyed record number
303 64 checksum error reading binary records [5]
304 67 input/output list greater than record size [6]
305 63 optional * fill: unidentified entry in FORERR [7]
306 62 input/output list without data conversion in FORMAT
307 64 illegal character in data
308 24 attempt to READ beyond valid input [8]
309 799 variable cannot be found in NAMELIST block
310 39 REREAD before first READ is illegal [1]
311 26 cannot RANDOM ACCESS a SEQUENTIAL file
312 23 BACKSPACE illegal for device [9]
313 59 illegal delimiter in LIST DIRECTED input
314 62 missing width field for A or R on input
315 31 cannot do SEQUENTIAL ACCESS on a RANDOM file
device errors
400 899 write protected
401 899 device error
402 899 parity error
403 899 block too large, quota exceeded or file structure full
nonexistent CDR reader
Spooled CDR file does not exist
404 899 end of file [10]
407 899 end of tape
footnotes
[1] error not currently trappable
[2] OPEN errors 251 through 276 map directly onto error numbers
returned by the OPEN UUO: see Appendix E "Error Codes" in
Sotfware Notebook 4 "DEC-10 Monitor Calls" DEC-10-OMCMA-B-DN3
[3] error cannot currently occur
[4] in runtime FORMAT
[5] checksumming controlled by compile-time variable CHKSUM
[6] occurs when a type 2 LSCW is found in a FORSE binary record
[7] * fill controlled by compile-time variable ASTFL
[8] occurs when simulating mag tape output: SKIP RECORD and SKIP
FILE are illegal. Also occurs when a non-existent file is
opened MODE='SEQINOUT' and the first operation on that file is
a READ.
[9] can occur if OPEN output on BACKSPACE is not on a mag tape or
disk
[10] trappable if there is no END= clause
[11] can occur on OPEN (...MODE='APPEND'...) when file is found in
LIB: or on [1,4] when device specified was SYS: and /NEW was
in your search list
FTN5.DOC - FORTRAN-10 Page 22
8.0 OPERATIONS AFTER AN I/O ERROR
The following comments deal with I/O operations to a unit on which an
error has occurred.
1. OPEN RANDOM on a non-existent file creates an empty file when
the error is trapped.
2. OPEN SEQOUT with an invalid MODE to a spooled device spools
an empty file when the error is trapped.
3. one way for data error recovery to fail is if the BACKSPACE
routine finds an illegal LSCW.
4. on end of file (device error 404):
a. END= takes precedence over ERR=
b. ERR= will trap an end of file if no END= is present
c. ERRSNS will return the pair 899, 404 for either END= or
ERR=
9.0 SUGGESTIONS
None.
[End of FTN5.DOC]