Google
 

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]