Trailing-Edge
-
PDP-10 Archives
-
BB-4157E-BM
-
fortran-documentation/fortra.doc
There are 10 other files named fortra.doc in the archive. Click here to see a list.
FORTRAN-20 -- Changes from V5A(621) to V6(1144)
December 1981
COPYRIGHT (C) 1981 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.
FORTRA.DOC - FORTRAN-20 Version 6 Page 2
FORTRAN-20 -- Changes from V5A(621) to V6
July 1981
1.0 SUMMARY
Version 6 of the FORTRAN compiler is a development release. Also
included are the latest versions of FOROTS, FORLIB and FORDDT. This
compiler lays the groundwork for FORTRAN 77.
Fortran version 6 is Fortran version 5A with edits #621 through #1144
inclusive.
1.1 Bibliography
The FORTRAN language and this implementation are described in the
FORTRAN-20 Programmer's Reference Manual - AA-4158B-TM.
1.2 Monitors
This version of Fortran will run on release 4 monitors.
1.3 Related System Software
The following system software must be used with the FORTRAN compiler:
BLIS10 7E(227)
DBMS 5A
MACRO 53A(1152)
LINK 4A(1220)
FORDDT 6
FOROTS 6
FORLIB 6
GALAXY 4
SCAN 7B(572)
SORT 4C
HELPER 5(41)
2.0 EXTERNAL CHANGES
All KA support has been removed from the compiler. The switches /KA
and /KI have also been removed.
I/O statmenta can take keywords in their control information lists
(.e.g. READ( UNIT=1, FMT=100), TABLE ). New OPEN arguments and
FORMAT descriptors have also been added for FORTRAN 77. See the
manual and the ANSI FORTRAN 77 standard for further details.
Version 6 argument blocks are incompatible with V5A. Programs
compiled with the V6 compiler must use the V6 FOROTS and FORLIB.
Programs compiled with the V5A compiler must be relinked to get the V6
FORTRA.DOC - FORTRAN-20 Version 6 Page 3
FORLIB; V6 FOROTS supports both the new and old form of argument
blocks.
A new compiler switch '/GFLOATING' has been added to support an
extended range of exponent for double precision. This feature
requires new microcode and FORLIB which is not yet available. It
allows DP numbers with magnitudes of 1D+-308.
3.0 KNOWN BUGS AND DEFICIENCIES
No known problems.
4.0 INSTALLATION INSTRUCTIONS
See the file FORTRA.INS for information regarding installation.
5.0 INTERNAL CHANGES
The following is a list of all the edits made to version 5A(621) in
producing version 6.
#622 SPR11020 Internal compiler error with complex array
reference.
#623 ----- Fix QUALIFY to call ONLIST only if the DOCHNGL
exists (ie, we're not in an iolist. This is
necessary to use a BLIS10 newer than 7B(222).
#624 QAR2166 Reorder radix 10 and reloc 400000.
#625 SPR23122 Fix LHINREGALC to set INREGFLG when setting TARGTAC
to the reg on the LH of the assignment statement.
#626 SPR23169 Don't allow function names or array names without a
parenthesized argument list to be used in
expressions in function or subroutine argument
lists.
#627 SPR23755 Get variably-dimensioned arrays right when the first
two (or more) subscripts are constant and the
dimension statement appears before the D.P. or
COMPLEX statement.
#630 SPR10962 Fix ISOLATE to catch all iolists that cannot be made
into slists or elists. This includes cases like
a(-i), a(3*(i-1)), etc. This edit removes edits 406
and 612, which only caught some cases.
FORTRA.DOC - FORTRAN-20 Version 6 Page 4
#631 SPR10962 Teach VER5 how to zero out def points on iolists.
#632 SPR24245 When clobbering a reg, don't clear VARINREGFLG in
the symbol table if the variable is also in another
reg.
#633 SPR24236 Fix edit 433 to not clobber a constant table entry.
#634 SPR11277 Preload variables if they are first used in an
assignment statement that is the object statement of
a logical if.
#635 SPR24868 Make DATALIST return -1 if it gets E66, so CALLER
won't believe return value is a linked list and blow
up.
#636 SPR23066 Don't dump labels to the REL file if we don't know
their value. This happens if LABLADJ decides that
the label is unreferenced and deletes it.
#637 SPR24802 If some statements don't get postdominators, fix
GRAPH so they do instead of giving infinite loop
message and stopping optimization. Also make
inaccessible code algorithm look at predominators to
find more cases. This fixes edit 327.
#640 SPR24971 Fix DOTOHASGN to check to see if .O assignment is in
an implied do, not if .O usage is.
#641 SPR25010 Logical if statement with call statement as result
gives register allocation problems if it directly
precedes a do loop.
#642 SPR11409 Spurious page heading may be given if form feeds
occur in input program.
#643 SPR25201 Do not allow array ref to become part of two
potential common sub-expressions.
#644 SPR25390 In line functions with neg flags - bad common
subexpression.
#645 SPR25249 Extra lines per page in listing if entry points
present.
#646 SPR25250 Subroutine sixbit name should not be loc 0.
#647 SPR25315 Arrays in hash table need special treatment in
REDEFPT - internal compiler error otherwise.
#650 SPR25247 Make listings nicer for DP and string constants.
#651 SPQ25062 Iolist dependencies with .O vars.
#652 ----- Fix CHKOTHREGS (edit 632) to handle double word
FORTRA.DOC - FORTRAN-20 Version 6 Page 5
variable case.
#653 SPR25441 Unit number for find statement should be any array
reference.
#654 SPR25297 Switches in bad command line are too sticky.
#655 SPR25338 Empty REL file with syntax switch.
#656 SPR25246 Protection failures not reported.
#657 SPR11554 /DEB/OPT warning message kills flag register so no
listing file given.
#660 SPR11427 IF(FN(I))GOTO 10 gives bad code if I is living in
register.
#661 SPR24100 Do not throw away labeled statement.
#662 SPR25245 Inaccessible do loop can give internal compiler
error.
#663 SPR25643 Fix entry points with formal functions.
#664 QAR118 Neg flag on skewed expr spells bad code.
#665 QAR118 B/C(I) cannot be common subexpression from A/B/C(I).
#666 SPR25572 DATA (a(i), i=10,1,-1) loses due to negative
increment - fix this.
#667 SPR25664 Page mark at end of buffer with one following null
word (last in buffer) not treated right.
#670 SPR25571 Continuation line must have blank chars in label
field.
#671 ----- Def pts need to be swapped when the arguments are
swapped.
#672 SPR25725 Not flag on array ref can give problems.
#673 SPR25984 Report illegally nested do loops correctly.
#674 SPR11803 Increase nesting level for DO loops from 32 to 79,
do cleanup in GLOBAL, add test for larger stack
overflow, and add error message to ERROVG and
ERROUT.
#675 SPR26049 Rubout in source prog may give internal errors in
routine LEXICA - fix it.
#676 SPR11931 Change RESET to be RESETUUO.
#677 SPR25573 Add a DEBUG:PARAMETER switch this causes the
FORTRA.DOC - FORTRAN-20 Version 6 Page 6
compiler to generate code at entry points to check
the number of parameters passed. FOROTS edit 755
must be added at the same time as 677.
#700 ----- Remove EHSIZ declaration (after edit 674).
#701 SPR22582 2 ** .R cannot become .R ** 2.
#702 ----- Listing of subprograms is sloppy.
#703 ----- Listing of scalars and arrays can give blank page in
listing.
#704 SPR26390 Fix default buffer size (if DEVSIZ fails).
#705 SPR26442 Make name from program statement be an entry point
for main program.
#706 SPR27170 Optimizer gives bad code for big expression
involving do loop index.
#707 SPR27153 Reduce JOBFF when freeing space up.
#710 SPR12299 Fix edit 657 to initialize DEBOPT.
#711 SPR26754 Put out FIN call with ENCODE/DECODE to reclaim free
space.
#712 SPR26490 Illegally nested loops can give internal compiler
error when trying to print error message!
#713 SPR26658 <CR><CR><EOB><LF> kills LEXICA when processing
comment line.
#714 SPR26498 Bad constant propagation (chosen bad).
#715 SPR12743 Not flag in COMSUB gives bad code.
#716 SPR26409 Subroutines with alternate label returns cause
global register allocation problems. Pass on the
information so that the loops can be treated
properly.
#717 SPR26560 Give meaningful error message on redefinition of
parameter variable.
#720 SPR27830 Poor code generated for assign go to stmnt with no
list (optimized only).
#721 ----- a=a*b should invalidate register for a (in case some
other var lives there).
#722 SPR28072 Add /NOCREF switch to INCLUDE statement.
#723 ----- Add /NOWARN: selectivity to compiler switch list.
FORTRA.DOC - FORTRAN-20 Version 6 Page 7
Code is mainly in COMMAN (to process the switch and
modifiers) and in INOUT (where the message is
printed by FATLERR).
#724 ----- Prevent internal compiler error with n-ary logical
trees.
#725 SPR27403 Change CSTMNT before calling NEXTUP.
#726 SPR28283 Fix code for double precision (KA) and complex
parameters for statement function.
#727 SPR13247 Logical if with two labels can cause bad block
structure (incorrect label count).
#730 SPR28275 Bad register allocation for a=amin(a,expr).
#731 SPR28246 Bad code for common subexpression in i/o list
(common var).
#732 ----- Define SAVSTMNT for edit 731 (non-opt).
#733 ----- The "not" of an expression which resolves to a
constant at compile time has problems using the
optimier.
#734 ----- After edit 650, DP constants can get printed even
with CAMXX instructions!
#735 SPR28528 Output headings only when necessary.
#736 ----- Bad code for -(.r0-const) with V5 /opt.
#737 ----- Add the .NEQV. operator.
#740 SPR13537 Allocate registers for unit=array(i,j) in OPEN and
CLOSE statements.
#741 ----- Add warning message when we find an array declared
using the "/" to specify upper and lower bounds.
Also clean up the error modules so that we can add
error messages more easily in the future without
having to make changes to each module.
#742 ----- Change STOP/PAUSE constant from octal to decimal
constant (max 6 chars).
#743 ----- Fix up edit 651 to be not so ambitious. Keep the
optimization if possible.
#744 SPR28463 Double word array in SLIST/ELIST may use an
odd-numbered register twice.
#745 ----- Accomodate long arg lists (.gtr. 124).
FORTRA.DOC - FORTRAN-20 Version 6 Page 8
#746 SPR13673 Allow format labels to be assigned to variables in
assign statements.
#747 ----- Make all error messages lower case; also do some
cleanup work in the error message routines.
#750 ------ Remove DEBUG:PARAMETER switch from compiler (edit
677) and from FOROTS (edit 755).
#751 ----- Change the way the LOOKAHEAD table is formatted and
used. Make action routines occupy a field rather
than a bit (for expansion). Enhance MASK so that it
is faster and better, and able to handle the new
format. Fix up LEFT72 in many ways - error
detection and reporting, action routine handling,
etc. This also makes edit 741 work properly!
#752 SPR13736 If fatal errors are generated during compilation,
discard the .REL file.
#753 SPR29028 Check the I/O list implied loop initial value for .O
variables when removing .O assignment nodes.
#754 SPR29120 Make I/O dependency check work when common sub nodes
are involved.
#755 SPR13884 Allow lower case in INCLUDE/NOLIST/NOCREF for F20
version.
#756 ----- Addition to edit 751 so that more action routines
can be used.
#757 ----- Add extra checks and a new register allocation
routine to free up the last free register pair for a
node which is targetted for that pair.
#760 ----- Add new OPEN arguments, FORMAT descriptors, and
keywords for I/O control lists.
#761 ----- Add /GFLOATING support and remove KA support
(KA10FLG).
#762 ----- Split COMMAN.MAC in two; COMMAN.MAC contains
FTNCMD, and a new module, REVHST.MAC, contains the
revision history and .JBVER symbols.
#763 13913 Cause optimizer to consider ENTRY formals during
definition point determination
#764 29279 Do not alloacate a register for an immediate array
ref I/O list item
#765 ----- Add error message for future code (Expression
illegal in output list).
FORTRA.DOC - FORTRAN-20 Version 6 Page 9
#766 ----- Add error message for illegal use of an array.
#767 ----- Rewrite much of the command scanner for clarity, bug
fixes, etc. Fix bug with /GFL if GFL microcode not
present; redo /GFL processing. Add /F77 switch
(future use); also add secondary switch word.
#770 29339 Make the code to move simple assignments out of DOs
work. This also allows detection of uninitialized
variables from assignments that appeared in DO
loops.
#771 14108 Fix yet another case of mistaken STATEMENT FUNCTIONS
causing the compiler to die.
#772 29516 Generate fatal error when variable used as an
adjustable dimension is later found to be
dimensioned itself.
#773 14234 Keep expressions such as X+.R and Y=.R from moving
outside the DO loop after reduction in strength.
#774 14244 For READ *,K,(X(L,K),L=1,2), keep expressions
involving K from being common subed and moved off
the I/O stmnt node. Addition to edit 731.
#775 10-29566 Make sure .O propagation walks all the stmnt. nodes
on the second and subsequent passes.
#776 10-29609 Eliminate ICE during register substitution for
statements of the form IF()CALL ....
#777 ----- Eliminate bogus syntax error when parsing I/O unit
spec. which is an array reference. Example:
READ(I(1),20)K. Edit 751 must be installed for this
error to occur.
#1000 10-29620 Flag error if no name appears on a PROGRAM statement
#1001 ----- Rework product build command files. Eliminate
references to obsolete software and make handling of
SCAN, WILD, and HELPER easier.
#1002 ------ Add a new structure EVALTAB for the lookup of
argtype codes for argblock entries
#1003 ------ Add global symbol ..GFL. to REL block if compiled
/GFLOAT. Use binds for processor and compiler ids
in REL block
#1004 ------ Fix library function handling to choose the 'Dxxxxx'
or 'Gxxxxx' routines for DP based on /GFLOAT
#1005 ------ Fix OPENCLOSE to handle unit specs without the unit=
FORTRA.DOC - FORTRAN-20 Version 6 Page 10
#1006 ------ Remove copies of KISNGL from CGEXPR.BLI and
OUTMOD.BLI putting one copy in UTIL.BLI (where it
belongs). Fix immediate real constants printed in
listings. Give warning for constant overflows. Add
code for specops (p2mul, p2div, p21mul) for real and
DP numbers.
#1007 10-29681 Prevent PUTBAK from clobbering random words and
pointers when attempting to do common sub
replacement for a DATACALL I/O list node.
#1010 10-29839 Allow definition point detetction to happen for
NAMELIST elements.
#1011 ----- Allow TESTREPLACEMENT in implied loops (fix edit
577)
#1012 ----- REDUCE needs to be careful about non-integer
SPECOPs.
#1013 ----- If end-of-statement causes syntax error, get error
msg right.
#1014 Q10-04556 Allow list directed rereads, making reread just like
ACCEPT, TYPE, etc.
#1015 Q10-04743 FMT= is not optional for type, accept ,reread, etc.
#1016 Q10-04759 Report names for misspelled OPEN/CLOSE parameters
#1017 Q10-04733 Fix IOSTAT processing in OPEN/CLOSE
#1020 Q10-04575 Add synonms for PDP-11 FORTRAN compatibility to
OPEN/CLOSE.
INITIALSIZE= - FILESIZE=
NAME= - DIALOG=
TYPE= - STATUS=
Also fix ERR= processing. Only allow ERR=label.
#1021 Q10-04502 Fix E0, E2, and E3 to read found when expecting ...
(Remove 'a'.)
#1022 ------ Preserve bit patterns for octal and literal assigned
to real under GFLOATING. Rounding the DP value to
SP destroys the pattern.
#1023 ------ Fix optimizer so that we get ELISTS and SLISTS
again. Reduction in strength for variables of type
INDEX was not happening.
#1024 ------ Fix REGCLOBB to handle assignments of the form:
REAL='literal' when compiling /gfl. REGCLOBB had
assumed that if the first half of a literal was in
an AC the second half must be in an adjacent AC.
Edit 1022 changed this for /gfl, by not "converting"
FORTRA.DOC - FORTRAN-20 Version 6 Page 11
literals to real.
#1025 ------ Fix conversion of reals to logical under GFLOATING.
Just taking the high order word losses.
#1026 ------ Poor checking for I/O dependeicies in I/O lists (bad
routine name)
#1027 ------ Add various definitions for V7 DO loops
#1030 ------ Fix GFLOATING DP to INT conversion (use GFIX not
GFIXR). Also leave an edit history for the
ERR=label fix to OPENCLOSE
#1031 ------ Fix ABS for GFLOATING constants. Use DABS since low
word has significance When folding relationals,
chose low or high word of each constant based on
VALTP1 since octals are not converted to real under
GFLOATING.
#1032 SPR30251 When processing DATA statements free up the space
used by constant sets, constant options and repeat
lists.
#1033 ------ Expand size of DO node to include DOZTRLABEL
#1034 ------ Do Def points better for F(G(X)) - X may change...
#1035 ------ Put out count for calls to .IOLST - add COUNTARGS
routine.
#1036 Q-1348 Fix edit 1007 to make ALL backpointers availible -
even those in innermore loops. This makes insertion
of the IOLSTCALL node correct in the more obscure
cases.
#1037 SPR30396 Initialize LOGICAL variables in assignment
statements when dependent on relational expression.
#1040 SPR15381 Fix EXPRTYPER to step through NEGNOT nodes when
deciding if type conversion nodes are needed.
#1041 ------ Fix I/O Optimizer bug where ((A(I),I),J=1,2) does
not know that A(I) can depend on I (in a READ
statement)
#1042 ------ Prohibit list directed encode/decode.
#1043 SPR15466 Add 'Consecutive arithmetic operators illegal'
warning.
#1044 SPR15467 Add fatal error 'XXXXXXX type declaration out of
order' for the case where executable code preceeds
such a statement.
FORTRA.DOC - FORTRAN-20 Version 6 Page 12
#1045 ------ Fix OPENCLOSE so ERR= literal, etc. doesn't break
label processing. NONIOINIO and LOOK4LABELS were
not being reset.
#1046 ------ Replace edit 1040 to handle all cases of negated DP
.boolean. DP.
#1047 Q-5325 Add support for TOPS-10 execute only.
#1050 ------ Fix incorrect graph for a program containing an
arithmetic IF where all 3 branchs go to the same
label. Also, in that case, retain the IF expression
if there are any function calls in it.
#1051 ------ Global register allocator does not always note that
a DO loop index has been globally allocated. Also,
do not do global allocation on a loop containing
alternate returns from routines.
#1052 ------ Correct graph for extended range range brach out of
inner DO to main code, to terminus of inner DO.
#1053 ------ Make FORTRA a global symbol.
#1054 ------ Fix bug with common subs and non-existant parent
pointer (/OPT only)
#1055 ------ Fix bug in HAULASS where assignment stmnts moved
when they shouldn't
#1056 ----- Stick type conversion node beneath .NOT. node when
necessary to prevent awkward register allocation
problems to odd registers.
#1057 Q-01410 Check the initial value and upper limit when looking
for the index variable in I/O optimizations.
#1060 ------ Fix bug with const*negative-power-of-two (constant
folding)
#1061 ------ Add warning for used in random access.
#1062 SPR30950 Fix special case of SPECOP producing incorrect code.
The case of I=-1*I**2 should not be computed to
memory.
#1063 Q-5631 Add error detection for jumps into loops with no
exits.
#1064 Q-1483 Replace edit 1037. Incomplete code generated for
logical assignment statement. Bad code generated
during optimization.
#1065 Q-5053 Replace SCAN specific error macros with parallel
ones tailored for FORTRAN. Eliminates ICEs after
FORTRA.DOC - FORTRAN-20 Version 6 Page 13
errors, and strange ? FTNXXX prefixs.
#1066 Q-5202 Eliminate LINE:xxxxx in error messages where not
pertinent.
#1067 SPR31074 Do not allow register 1 to be made available for a
statement if common subexpressions have already been
allocated in it.
#1070 ------ (Removed)
#1071 ------ Remove TAPEMODE from OPEN/CLOSE parameter plit
#1072 ------ Remove %Consecutive arithmetic operators illegal
until it can be put under flagger switch
#1073 ------ Fix ORERROR so that REAL+ gives reasonable error
msg.
#1074 ------ Fix problems with folding logical IF's that have
A1NOTFLG set. The NOT was being ignored for REAL
and DP expressions.
#1075 ------ Add GFL equivalent functions for IDINT and SNGL.
#1076 ------ Allow list-directed reads and writes without an
iolist.
#1077 ------ Put in missing JFCL after GETPPN uuo in GETPPN
routine.
#1100 SPR31141 Add new error messages and make a statement label
definition entry even if an ENF error (E91) should
occur.
#1101 Q-5209 ELiminate bad placement of CSSE initialization when
expression containing CSSE immediately follows a DO
loop.
#1102 ------ Make .not.(-(-(.not x))) work. NOTOFNEG and
NEGOFNOT were not noticing the NEGFLG and NOTFLG
returned by the expression under them.
#1103 Q-1439 Eliminate bad code for LOGICAL=double-word
assignments. Also, make REAL=COMPLEX as efficient
as the code intended.
#1104 ------ Eliminate bad code during optimization constant
propagation. Negs in assignments were not being
carried with the constants.
#1105 ------ Addition to edit 1063. For nested loops, be sure
that the loop label keeps a correct label count
within LABLADJUST.
FORTRA.DOC - FORTRAN-20 Version 6 Page 14
#1106 ------ Correction to edit 1103. Restrict the REAL=COMPLEX
check to only COMPLEX variables (not for instance,
functions) to agree with what the register allocator
expects. Eliminates bad code.
#1107 ------ Give an error for the illegal constants 0H and ''.
They are prohibited by the 77 standard. The
compiler used to build 0H as a word of nulls and ''
as a a word of spaces followed by a word of nulls.
#1110 ------ Addition to edit 773. Do not consider implied DOs,
when modifying the 'variables changed in the DO'
list.
#1111 SPR31190 Fix optimizer bug so that ((A(J,K),J=1,2,I),K=1,2,I)
with I in common does not create a common
subexpression which is only used once. The CSE
would be allocated to a register and ALCIOLST would
re-allocate the register.
#1112 ------ Fix edit 1063 so that graphing does the right thing
by local label counts for nested DO loops with inner
references to outer labels.
#1113 ------ Fix code motion bug; don't put a CSE calculation
after a statement which has more than 1 successor.
(A statement with more than 1 successor has no
"after".) To do this, for any statement that has
more than 1 successor, set ACC bits for each
variable that the statement modifies in the
statement's postdominator and each successor.
#1114 ------ Set up R2 in STA0, prevents random "?FTNNIO Namelist
directed I/O with I/O list" messages
#1115 ------ Rework /NOWARn selectivety for expandibility and
maintainibility. Supercedes edit 723, alters edits
741,766,1061,1063.
#1116 ------ Rework FLTGEN to be more correct, and compatible
with FLIRT.
#1117 ------ Eliminate fixed high seg origin and other
restrictions for TOPS-10 EXO.
#1120 Q-6505 Fix edit 735 by always clearing a flag so that the
"EQUIVALENCED VARIABLES" header is produced again.
#1121 ------ Add GETTABs to determine full path and device for
GETSEGs
#1122 SPR31589 Fix PRIMITIVE to detect invalid complex expressions.
#1123 Q-1650 Make IOSTAT= work for arrays, formals and registers.
FORTRA.DOC - FORTRAN-20 Version 6 Page 15
#1124 Q-1651 Make the compiler realize that IOSTAT= and
ASSOCIATEVARIABLE= alter formals so that they are
stored at subprogram epilogue.
#1125 ------ Fix up local label counts one more time so that we
can better detect jumps into loops. Catch the more
obscure cases.
#1126 Q-1654 Remove last vestiges of CALL DEFINE FILE support.
#1127 ------ Change erroneous (and potentially dangerous) use of
IDTARGET to TARGADDR in ARRNARGBLK.
#1130 Q-1647,8 Fix bad Y field reference in PEEP02 by changing
PEEPPTR[0,PBFSYMPTR] to PEEPPTR[0,PBFADDR]. Also
insert missing dot before PEEPPTR[1,PBFSYMPTR] in
macro PRVNONEQNXT. (AHM)
#1131 Q-1671 Check for storing before the first word of an array
in DATA statements since we already check for
storing after the last word.
#1132 Q-6347 Change E150 (edit 1061) to refer to REC= as well as
'. Also, make the entries in the DUMDUM plit in
ACT1 have mixed case.
#1133 ------ Add /STATISTICS flag for in-house performance
measurement. It is disabled in the released V6.
#1134 SPR31654 Eliminate bad code produced for READ/WRITE/FIND with
both a subscripted record unit number and record
number, where a record number subscript has been
left in an AC prior to the I/O statement. Also
expand edit 376 to include FIND.
#1135 ------ Make conversion from DOUBLE PRECISION to COMPLEX do
rounding.
#1136 ------ Make graphing know about END= and ERR= for lots of
I/O statements. Also make global label ref counts
correct for END=/ERR=.
#1137 ------ Fix looping optimizer for inaccessible DO stmnt with
jumps into the loop.
#1140 ------ Same as 1137, but for nested inaccessible loops
where only the inner loop has an entrance (outer
loop does not get HASENT set).
#1141 SPR31686 Produce diagnostic when more than 24 significant
digits in an octal constant.
#1142 Q-6254 Eliminate ICE for an IO list complex enough to
require more than 63 registers (64 single precision
array references, for example).
FORTRA.DOC - FORTRAN-20 Version 6 Page 16
#1143 ------ More of edit 1136 to make "data transfer" statements
work as well as "device control" statements. Delete
code in IODOXPN that incremented the reference count
for labels used in END= and ERR= in "data transfer"
statements. BLDKEY now references those labels
correctly.
#1144 Q-06632 Eliminate obscure problems and ICEs when optimizing,
and hash table is such that the last hash entry
found in the table for a loop is for an array ref,
and the actual expression using that array ref now
points to the hash table. eliminates unwanted calls
to NEWCOPY.
9.0 SUGGESTIONS
None.
[End of FORTRA.DOC]