Trailing-Edge
-
PDP-10 Archives
-
BB-4157E-BM
-
fortran-documentation/fortra.bwr
There are 10 other files named fortra.bwr in the archive. Click here to see a list.
This file contains warnings regarding FORTRAN V6.
1.0 FOROTS/FORLIB:
1. Transition from FORTRAN V5A to FORTRAN V6
The version 6 FORTRAN system contains many new IO keywords
provided for FORTRAN-77. The subroutine calls generated for
IO statements by the version 6 compiler are hence not
understood by FOROTS version 5A.
Therefore, note the following compatibility restriction:
PROGRAMS COMPILED WITH THE VERSION 6 COMPILER MUST BE LINKED
WITH THE VERSION 6 FORLIB.
This is the only restriction. We have changed the name of
FOROTS version 6 to FOROT6.EXE to provide an orderly
mechanism for preventing programs linked with version 6
FORLIB from using FOROTS version 5. The version 6 FORLIB and
FOROTS routines can handle code generated by the version 5A
compiler, and programs compiled with 5A and linked with the
5A FORLIB will execute correctly using FOROTS version 5A.
Since FOROTS version 6 has a different name (FOROT6.EXE), you
should merely keep FOROTS version 5A (FOROTS.EXE) in your
system area for this purpose.
Recommended transition procedure:
Keep current versions of FORTRAN, FOROTS, FORLIB, FORDDT on
OLD:.
Keep FOROTS version 5A as SYS:FOROTS.EXE
To execute program with old FORTRAN system,
@DEFINE SYS: OLD:,SYS:
@EX/COMPILE PROG
2. TWOSEG pseudo-ops have been used in FORLIB. This is
necessary on TOPS-10 so that sharable FORTRAN programs can be
run execute-only. This change has the following
consequences:
- Link version 4A will load FORLIB code and data into the low
segment as it does for FORTRAN programs. LINK version 4A is
required for this reason.
- If you explicitly search FORLIB, say to get the SIN routine
for a Macro program, LINK will not load FORLIB's code into
the low segment by default unless a FORTRAN program is
Page 2
present. If you want it to, you must say
"SYS:FORLIB/SEARCH/SEGMENT:LOW".
The attached LINK patch will cause LINK to load with
/SEGMENT:LOW as a default whenever FORLIB is searched.
3. If site-specific changes are made to modules of FOROTS, you
may cause the PSECTs to overlap, which is fatal. To fix this
problem, F20OTS.CCL can be changed to move the PSECTS out of
the way of each other (relocatable PSECTs are not yet
supported by LINK). The only restriction is that PSECT
F.DATA must start on a page boundary.
PSECT F.DATA must start at the same place as PSECT F.EES.
LINK 4A(1220), this will generate a PSECT overlap warning
which can be ignored.
4. If you use RANDOM files in version 6 and do not specify the
BUFFERCOUNT parameter in the OPEN statement, more memory is
used than with version 5A. This is because the default
BUFFERCOUNT has been changed such that four pages are used in
V6 where one was used in V5A. This was done to increase the
performance of these files. However, if your program uses a
lot of RANDOM files which are opened simultaneously and you
want to keep the allocated memory size down, you should
modify the OPEN statements in the program to include the
"BUFFERCOUNT=1" specifier.
5. In version 6, an OPEN statement specifying a magnetic tape,
but without any MODE or FORM specifier, will default to
FORM=FORMATTED (*). Thus the blocksize specified (or default
used) will be in characters, whether or not the data transfer
operations that follow are formatted or unformatted. Thus
for unformatted data transfers, the blocksize will be
one-fifth of the size expected.
(*) See "Future incompatibilities" section.
2.0 OVERLAYS
The following two patches are required in OVRLAY.MAC version 4A(50)
for overlayed programs to work correctly:
[this is OVRLAY edit 51]
on page 75, at LNKNO + 2 lines, replace
PUSHJ P,TIME ;RUNTIME
with
PUSHJ P,RNTIME ;[51] RUNTIME
Page 3
on page 78, at TIME, replace
TIME: SPUSH <T2,T3>
with
RNTIME: SPUSH <T2,T3>
[this is OVRLAY edit 52]
on page 79, at RESTART + 20 lines, replace
SKIPE T2 ;GCVEC% RETURNS T2=0 IF PAT NOT AROUND
with
SKIPLE T2 ;[52] GCVEC% RETURNS T2 .LE. 0 IF PAT NOT AROUND
There exists a problem with loading an overlaid program with symbols
and using FOROTS V6. If you do this and at runtime you get the
message:
%OVLSTS OTS reserved space too small
the suggested workaround is to not specify the /SYMSEG switch when the
program is loaded. (Then the overlaid program will NOT be loaded with
symbols and it should execute correctly).
A patch will be published in the Software Dispatch in early 1982 to
correct this problem in FOROTS's memory manager.
3.0 SORT
Since SORT on TOPS-20 (version 4 and up) uses a different command
string than its predecessor (version 3), and since FORTRAN V6 requires
the newest version of SORT, FORTRAN programs which call SORT must be
changed to reflect the new command string.
4.0 DBMS
See the INSTALLATION GUIDE for specific instructions to build FORTRAN
for use with DBMS. See the end of this BEWARE file for the required
LINK patches.
Page 4
5.0 QUASAR
QSRMAC.UNV has been included on the tape, since FOROTS interfaces with
QUASAR with the CLOSE parameters (e.g. 'PRINT'). However, this is a
vanilla-flavored QSRMAC.UNV, using only the defaults specified in the
released version. If site-specific parameters have been changed, and
especially if your site has changed the length of the IPCF packets
sent to QUASAR, you must substitute your own version of QSRMAC.UNV and
rebuild FOROTS (see the Installation Guide).
6.0 GIGI PRODUCTS
The GIGI Package A products (Graphics Editor, Character Set Editor,
and Slide Projection System) will not run with FORTRAN version 6. The
EXE files (GE.EXE, CSE.EXE and SPS.EXE) will run if the old Object
Time System (FOROTS.EXE) is kept on SYS:. They cannot be re-compiled
with FORTRAN version 6 at all, however, they can still be re-compiled
with FORTRAN version 5A if needed. These problems will be corrected
with the next release of the GIGI products.
7.0 FUTURE INCOMPATIBILITIES
1. OPEN statement with no FORM specifier:
In V6, if no FORM was specified, FORMATTED is the default
unless a MODE of 'BINARY' or 'IMAGE' was specified in the
OPEN statement. V6 allowed the program to do UNFORMATTED I/O
even though the FORM was defaulted to FORMATTED, as long as
the only I/O done to the file after it was open is
UNFORMATTED.
In future versions of FORTRAN, the default FORM will be
changed to UNFORMATTED if the file has ACCESS of RANDOM,
DIRECT, or RANDIN (otherwise the default form will continue
to be FORMATTED). This is necessary to support the FORTRAN
77 standard. In addition, future versions of FORTRAN may not
allow the user to do FORMATTED or UNFORMATTED I/O to a file
opened with an OPEN statement where the form was specified or
defaulted to the opposite format.
As a result, in future releases of FORTRAN, programs that do
the following sequence may get a run-time error:
1. OPEN (u,ACCESS='RANDOM' or 'RANDIN' or 'DIRECT') with no
FORM specifier..
...then do FORMATTED I/O
Page 5
2. OPEN (u,ACCESS= anything not mentioned above, or no
ACCESS specifier) with no FORM specifier..
...then do UNFORMATTED I/O
The fix is to modify the OPEN statement to include the FORM
specifier. Note that by doing this, your programs will also
gain some tranportability to other FORTRAN-77 systems by
conforming more closely to the standard.
8.0 PATCH TO NOT SUPPRESS LF AFTER "$" FORMAT.
FOROTS version 6 works the same way as FOROTS version 5A with patches
and FOROTS version 4 with regard to the suppression of
Carriage-return-Line-Feed after the "$" FORMAT character is used. For
people who prefer the way FOROTS version 5 and field image 5A worked,
we are supplying the patch necessary to make FOROTS 6 work that way.
FOROTS version 5 suppressed only the Carriage-return; to suppress the
Linefeed also the next output format had to use the carriage-control
character "+".
The patch is as follows:
In module FORIO.MAC, at label NLF + 6, change:
TXO T4,D%SICR+D%SILF ;YES, SUPPRESS INITIAL CRLF OF NEXT LINE
to:
TXO T4,D%SICR ;YES, SUPPRESS INITIAL CR OF NEXT LINE
[end of FTN6.BWR]
Page 6
[SYMPTOM]
Undeserved LNKHCL errors when loading an overlaid program. The two
most common cases are:
1. Loading FORTRAN programs when /OTS:NONSHARABLE was
specified.
2. Loading COBOL programs when /R was specified to COBOL.
**********
[DIAGNOSIS]
1. Normally, the FORTRAN compiler generates two-segment code.
By default, LINK ignores the two segments, loading all
code into the low segment, so that FOROTS may be shared
with other users at run time. However, if /OTS:NONSHARABLE
is specified, LINK sees no reason to continue forcing all
code into the low segment. This leads to LNKHCL messages
in overlaid programs.
2. The COBOL compiler can be coaxed to generate two-segment
code, which can then lead to LNKHCL messages in overlaid
programs.
**********
[CURE]
Note that both problems can by solved simply by specifying
/SEGMENT:LOW in the proper places in the LINK command line.
However, if the overlay structure is large and is not specified
with continuation lines, then this switch must be typed many times.
Also, overlays were only intended to work with all nonroot code
loaded into the low segment. Therefore, for both of these reasons,
force /SEGMENT:LOW in all links but the root in an overlaid
program.
Page 7
[FILCOM]
File 1) DSKC:LNKHST.MAC[30,4507] created: 1326 26-Oct-1979
File 2) DSKC:LNKHST.MAC[12,4700] created: 1650 12-Nov-1979
1)1 SUBTTL D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN 26-Oct-7
9
1)
****
2)1 SUBTTL D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN 12-Nov-7
9
2)
**************
1)1 DECEVR==1225 ;DEC EDIT VERSION
1)
****
2)1 DECEVR==1226 ;DEC EDIT VERSION
2)
**************
1)6 SUBTTL THE END
****
2)5 ;1226 DZN 12-Nov-79 SPR 20-13384
2) ; Default /SEGMENT:LOW in all non-root overlay links. This
keeps users
2) ; from having to type it all the time, especially if /OTS:
NONSHAR was
2) ; specified (/OTS:NONSHAR defaults to /SEGMENT:DEFAULT for
FORTRAN
2) ; programs, frequently causing high segment code in non-ro
ot links).
2) ; Routines: LNKOV1, LNKLOD
2)
2)6 SUBTTL THE END
**************
File 1) DSKC:LNKLOD.MAC[30,4507] created: 1448 30-Oct-1979
File 2) DSKC:LNKLOD.MAC[12,4700] created: 1710 12-Nov-1979
1)1 SUBTTL D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN 26-Oct-7
9
1)
****
2)1 SUBTTL D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN 12-Nov-7
9
2)
**************
1)1 DECEVR==1225 ;DEC EDIT VERSION
1)
****
2)1 DECEVR==1226 ;DEC EDIT VERSION
2)
**************
1)6
****
2)6 ;1226 Remove now redundant test for non-root link in FORNAM.
Page 8
2)
**************
1)62 IFN FTOVERLAY,<
1) SKIPGE LNKMAX ;ONLY IF WE ARE IN ROOT TEST
1) >
1) SKIPN HC.LB ; IF ANY HIGH LOADED
****
2)62 ;**;[1226] Delete @FORSEG+2L DZN 12-Nov-79
2) SKIPN HC.LB ; IF ANY HIGH LOADED
**************
[FILCOM]
File 1) DSKC:LNKOV1.MAC[30,4507] created: 1624 24-Aug-1979
File 2) DSKC:LNKOV1.MAC[12,4700] created: 1657 12-Nov-1979
1)1 SUBTTL D.M.NIXON/DMN/JLd/RKH/JBC/JNG/MCHC/DZN 24-Aug-79
1)
****
2)1 SUBTTL D.M.NIXON/DMN/JLd/RKH/JBC/JNG/MCHC/DZN 12-Nov-79
2)
**************
1)1 DECMVR==1 ;DEC MINOR VERSION
1) DECEVR==1220 ;DEC EDIT VERSION
1)
****
2)1 DECMVR==2 ;DEC MINOR VERSION
2) DECEVR==1226 ;DEC EDIT VERSION
2)
**************
1)4 SUBTTL ENTRY POINT
****
2)3 ;START OF VERSION 4B
2) ;1226 Default /SEGMENT:LOW after loading the root.
2)
2)4 SUBTTL ENTRY POINT
**************
1)13 MOVX W1,PT.SGN!PT.SYM ;FLAG BITS FOR A SYMBOL
****
2)13 ;**;[1226] Insert before LNKT0+2L DZN 12-Nov-79
2) MOVSI T1,L.FNS!L.FHS ;[1226] TURN OFF /SEG:DEF AND /S
EG:HIGH
2) ANDCAM T1,FLAGS ;[1226] IN GLOBAL (ACCROSS LIN
ES) SWITCHES
2) ANDCAM T1,S.LHFL ;[1226] AND GLOBAL KLUDGE FLAG
S
2) MOVSI T1,L.FLS ;[1226] TURN ON /SEGMENT:LOW FOR
DURATION
2) IORM T1,FLAGS ;[1226] ..
2) IORM T1,S.LHFL ;[1226] ..
2) TXZ FL,<L.FNS!L.FHS,,R.FNS!R.FHS> ;[1226] FIX /SEG:L
OW NOW TOO
2) TXO FL,<L.FLS,,R.FLS> ;[1226] ..
2) MOVX W1,PT.SGN!PT.SYM ;FLAG BITS FOR A SYMBOL
**************
[END OF PCO 20-LINK -016]
Page 9
[SYMPTOM]
If FORTRAN subroutines are loaded with a main program that is not a
FORTRAN program, FORLIB (version 6 only) code will be loaded into the
high segment. This happens because LINK does not check where the code
should go if loading FORLIB unless the main program is FORTRAN.
[CURE]
Test to see whether there is a high segment. If there is not, and the
/OTSEGMENT:NONSHAR has not been given, load FORLIB in the low segment.
Note that the tag offsets (which apply to filed image LINK 4A(1220))
are slightly different if edit 1225 has been installed.
[FILCOM]
File 1) DSKC:LNKHST.MAC[30,4507] created: 2209 04-Sep-80
File 2) DSKC:LNKHST.MAC[30,5526] created: 0846 08-Oct-80
1)1 SUBTTL D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB
4-Sep-80
1)
****
2)1 SUBTTL D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB
7-Oct-80
2)
**************
1)1 DECEVR==1220 ;DEC EDIT VERSION
1)
****
2)1 DECEVR==1271 ;DEC EDIT VERSION
2)
**************
1)5
****
2)5 ;1271 PY 7-Oct-80
2) ; Make FORLIB load into the low segment by default if the
main
2) ; program is not a FORTRAN program.
2) ; Routine: LNKLOD
2)
2)
**************
[FILCOM]
File 1) DSKC:LNKLOD.MAC[30,4507] created: 1945 10-Aug-80
File 2) DSKC:LNKLOD.MAC[30,5526] created: 0853 08-Oct-80
1)1 SUBTTL D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN/PY 10-Aug-8
0
1)
****
2)1 SUBTTL D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN/PY 7-Oct-80
2)
**************
1)1 DECEVR==1220 ;DEC EDIT VERSION
Page 10
1)
****
2)1 DECEVR==1271 ;DEC EDIT VERSION
2)
**************
1)6
****
2)6 ;1271 Cause FORLIB to load /SEG:LOW if main program is not FOR
TRAN.
2)
**************
1)92 JRST FOR.L1 ;NO
1) MOVX W1,PT.SGN!PT.SYM
****
2)92 ;**;[1271] Replace 1 Line at FORL01+2 Lines PY 7-Oct-80
2) ;**;[1271] ***** at FORL01+3 lines if edit 1225 is installed
2) JRST FORL03 ;[1271] NO
2) MOVX W1,PT.SGN!PT.SYM
**************
1)92 PUSHJ P,FOR.L1 ;[1200] PUT FORLIB IN LIST OF LI
BRARIES
1) ; ..
****
2)92 ;**;[1271] Replace 1 Line at FORL01+7 Lines PY 7-Oct-80
2) ;**;[1271] ***** at FORL01+9 lines if edit 1225 is installed
2) PUSHJ P,FORL03 ;[1271] PUT FORLIB IN LIST OF LI
BRARIES
2) ; ..
**************
1)93 MOVE P2,F.NXZR ;[1200] LAST LIBRARY PUT ON LIST
1) CAMN P1,F.NAME(P2) ;[1200] WAS IT FORLIB?
****
2)93 ;**;[1271] Replace 1 Line at FORL01+13 Lines PY 7-Oct-80
2) ;**;[1271] ***** at FORL01+14 lines if edit 1225 is installed
2) FORL04: MOVE P2,F.NXZR ;[1271] LAST LIBRARY PUT ON LIST
2) CAMN P1,F.NAME(P2) ;[1200] WAS IT FORLIB?
**************
1)93
1) FOR.L1: SKIPL FORLIB ;TEST FOR USER SCREW-UP
1) JRST FORL10 ;NO
****
2)93 ;**;[1271] Replace at FOR.L1 PY 7-Oct-80
2) FOR.L1: PUSHJ P,FORL03 ;[1271] LOAD THE LIBRARY
2) SKIPE T1,OTSEG ;[1271] GET THE /OTS: SWITCH
2) CAIE T1,1 ;[1271] /OTS:NONSHAR?
2) SKIPE HL.S2 ;[1271] NO - HIGH SEG EXIST?
2) POPJ P, ;[1271] LEAVE IT TWOSEG
2) PJRST FORL04 ;[1271] MAKE IT /SEG:LOW
2) FORL03: SKIPL FORLIB ;[1271] TEST FOR USER SCREW-UP
2) JRST FORL10 ;NO
**************
[End FILCOMs]