Provided by: manpages-posix_2.16-1_all bug

NAME

       fort77 - FORTRAN compiler (FORTRAN)

SYNOPSIS

       fort77 [-c][-g][-L directory]... [-O optlevel][-o outfile][-s][-w]
               operand...

DESCRIPTION

       The fort77 utility is the interface to the FORTRAN compilation system; it shall accept the
       full FORTRAN-77 language defined by the ANSI X3.9-1978 standard. The  system  conceptually
       consists  of a compiler and link editor. The files referenced by operands are compiled and
       linked to produce an executable  file.  It  is  unspecified  whether  the  linking  occurs
       entirely within the operation of fort77; some implementations may produce objects that are
       not fully resolved until the file is executed.

       If the -c option is present, for all pathname operands of the form file .f, the files:

              $(basename pathname.f).o

       shall be created or overwritten as the result of successful compilation.  If the -c option
       is  not  specified, it is unspecified whether such .o files are created or deleted for the
       file .f operands.

       If there are no options that prevent link editing (such as -c) and  all  operands  compile
       and link without error, the resulting executable file shall be written into the file named
       by the -o option (if present) or to the file a.out.  The executable file shall be  created
       as specified in the System Interfaces volume of IEEE Std 1003.1-2001, except that the file
       permissions shall be set to:

              S_IRWXO | S_IRWXG | S_IRWXU

       and that the bits specified by the umask of the process shall be cleared.

OPTIONS

       The fort77 utility shall conform to the Base Definitions volume  of  IEEE Std 1003.1-2001,
       Section 12.2, Utility Syntax Guidelines, except that:

        * The -l library operands have the format of options, but their position within a list of
          operands affects the order in which libraries are searched.

        * The order of specifying the multiple -L options is significant.

        * Conforming applications shall specify each option separately; that is, grouping  option
          letters (for example, -cg) need not be recognized by all implementations.

       The following options shall be supported:

       -c     Suppress the link-edit phase of the compilation, and do not remove any object files
              that are produced.

       -g     Produce symbolic information in the object or executable files; the nature of  this
              information   is   unspecified,  and  may  be  modified  by  implementation-defined
              interactions with other options.

       -s     Produce object or  executable  files,  or  both,  from  which  symbolic  and  other
              information  not  required  for proper execution using the exec family of functions
              defined in the System Interfaces volume of IEEE Std 1003.1-2001  has  been  removed
              (stripped). If both -g and -s options are present, the action taken is unspecified.

       -o  outfile
              Use  the  pathname  outfile,  instead of the default a.out, for the executable file
              produced. If the -o option is present with -c, the result is unspecified.

       -L  directory
              Change the algorithm of searching for the libraries named in -l operands to look in
              the  directory  named by the directory pathname before looking in the usual places.
              Directories named in -L options shall be searched in the specified order. At  least
              ten  instances  of  this  option  shall  be  supported  in  a single fort77 command
              invocation. If a directory specified by a -L option contains a file  named  libf.a,
              the results are unspecified.

       -O  optlevel
              Specify  the  level  of  code  optimization. If the optlevel option-argument is the
              digit '0' , all special code optimizations shall be disabled. If it  is  the  digit
              '1'  ,  the nature of the optimization is unspecified. If the -O option is omitted,
              the nature of the system's default optimization is unspecified. It  is  unspecified
              whether  code  generated  in  the  presence  of the -O 0 option is the same as that
              generated when -O is omitted. Other optlevel values may be supported.

       -w     Suppress warnings.

       Multiple instances of -L options can be specified.

OPERANDS

       An operand is either in the form of a pathname or  the  form  -l  library.  At  least  one
       operand  of  the  pathname  form  shall  be  specified.  The  following  operands shall be
       supported:

       file.f The pathname of a FORTRAN source file to be compiled and optionally passed  to  the
              link editor. The filename operand shall be of this form if the -c option is used.

       file.a A library of object files typically produced by ar, and passed directly to the link
              editor. Implementations may recognize implementation-defined suffixes other than .a
              as denoting object file libraries.

       file.o An  object  file  produced  by  fort77  -c  and passed directly to the link editor.
              Implementations may recognize implementation-defined  suffixes  other  than  .o  as
              denoting object files.

       The processing of other files is implementation-defined.

       -l  library
              (The letter ell.) Search the library named:

              liblibrary.a

       A  library  is  searched when its name is encountered, so the placement of a -l operand is
       significant. Several standard libraries can be specified in this manner, as  described  in
       the  EXTENDED  DESCRIPTION  section.  Implementations may recognize implementation-defined
       suffixes other than .a as denoting libraries.

STDIN

       Not used.

INPUT FILES

       The input file shall be one of the following: a text file containing FORTRAN source  code;
       an  object  file in the format produced by fort77 -c; or a library of object files, in the
       format produced by archiving zero or more object  files,  using  ar.  Implementations  may
       supply  additional  utilities that produce files in these formats.  Additional input files
       are implementation-defined.

       A <tab> encountered within the first six characters on a line of source code  shall  cause
       the  compiler  to interpret the following character as if it were the seventh character on
       the line (that is, in column 7).

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of fort77:

       LANG   Provide a default value for the internationalization variables that  are  unset  or
              null.  (See  the  Base  Definitions  volume  of  IEEE Std 1003.1-2001, Section 8.2,
              Internationalization Variables for the precedence of internationalization variables
              used to determine the values of locale categories.)

       LC_ALL If  set  to  a  non-empty  string  value,  override  the  values  of  all the other
              internationalization variables.

       LC_CTYPE
              Determine the locale for the interpretation of sequences of bytes of text  data  as
              characters  (for  example,  single-byte  as  opposed  to  multi-byte  characters in
              arguments and input files).

       LC_MESSAGES
              Determine the locale that should be used to  affect  the  format  and  contents  of
              diagnostic messages written to standard error.

       NLSPATH
              Determine the location of message catalogs for the processing of LC_MESSAGES .

       TMPDIR Determine  the  pathname  that  should override the default directory for temporary
              files, if any.

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       Not used.

STDERR

       The standard error shall be used only for diagnostic  messages.  If  more  than  one  file
       operand  ending  in  .f  (or  possibly other unspecified suffixes) is given, for each such
       file:

              "%s:\n", <file>

       may be written to allow identification of the  diagnostic  message  with  the  appropriate
       input file.

       This  utility  may  produce  warning messages about certain conditions that do not warrant
       returning an error (non-zero) exit value.

OUTPUT FILES

       Object files, listing files,  and  executable  files  shall  be  produced  in  unspecified
       formats.

EXTENDED DESCRIPTION

   Standard Libraries
       The fort77 utility shall recognize the following -l operand for the standard library:

       -l f   This library contains all functions referenced in the ANSI X3.9-1978 standard. This
              operand shall not be required to be present to cause a search of this library.

       In the absence of options that inhibit invocation of the link  editor,  such  as  -c,  the
       fort77  utility  shall  cause  the  equivalent  of a -l f operand to be passed to the link
       editor as the last -l operand, causing it to be searched after all other object files  and
       libraries are loaded.

       It  is unspecified whether the library libf.a exists as a regular file. The implementation
       may accept as -l operands names of objects that do not exist as regular files.

   External Symbols
       The FORTRAN compiler and link editor shall support the significance of external symbols up
       to  a  length  of  at  least  31  bytes;  case folding is permitted. The action taken upon
       encountering  symbols  exceeding  the  implementation-defined  maximum  symbol  length  is
       unspecified.

       The compiler and link editor shall support a minimum of 511 external symbols per source or
       object file, and a minimum of 4095 external symbols total. A diagnostic message is written
       to  standard  output  if  the  implementation-defined limit is exceeded; other actions are
       unspecified.

EXIT STATUS

       The following exit values shall be returned:

        0     Successful compilation or link edit.

       >0     An error occurred.

CONSEQUENCES OF ERRORS

       When fort77 encounters a compilation error, it shall write a diagnostic to standard  error
       and  continue  to  compile  other  source  code  operands. It shall return a non-zero exit
       status, but it is implementation-defined whether an object module is created.  If the link
       edit  is unsuccessful, a diagnostic message shall be written to standard error, and fort77
       shall exit with a non-zero status.

       The following sections are informative.

APPLICATION USAGE

       None.

EXAMPLES

       The following usage example compiles xyz.f and creates the executable file foo:

              fort77 -o foo xyz.f

       The following example compiles xyz.f and creates the object file xyz.o:

              fort77 -c xyz.f

       The following example compiles xyz.f and creates the executable file a.out:

              fort77 xyz.f

       The following example compiles xyz.f, links it with b.o, and creates the executable a.out:

              fort77 xyz.f b.o

RATIONALE

       The name of this utility was chosen as fort77 to parallel the renaming of the C  compiler.
       The  name  f77  was  not  chosen  to  avoid  problems with historical implementations. The
       ANSI X3.9-1978 standard was selected as a normative reference because the ISO/IEC  version
       of FORTRAN-77 has been superseded by the ISO/IEC 1539:1990 standard (Fortran-90).

       The  file  inclusion and symbol definition #define mechanisms used by the c99 utility were
       not included  in  this  volume  of  IEEE Std 1003.1-2001-even  though  they  are  commonly
       implemented-since   there   is  no  requirement  that  the  FORTRAN  compiler  use  the  C
       preprocessor.

       The -onetrip option was not included in this volume of IEEE Std 1003.1-2001,  even  though
       many  historical  compilers  support  it,  because it is derived from FORTRAN-66; it is an
       anachronism that should not be perpetuated.

       Some implementations produce compilation listings. This aspect of FORTRAN  has  been  left
       unspecified  because  there  was  controversy  concerning the various methods proposed for
       implementing it: a -V option overlapped with  historical  vendor  practice  and  a  naming
       convention  of  creating  files  with .l suffixes collided with historical lex file naming
       practice.

       There is no -I option in this version of this volume of IEEE Std 1003.1-2001 to specify  a
       directory  for  file  inclusion.  An  INCLUDE  directive has been a part of the Fortran-90
       discussions, but an interface supporting that standard is not in the current scope.

       It is noted that many FORTRAN compilers produce an object  module  even  when  compilation
       errors  occur;  during  a subsequent compilation, the compiler may patch the object module
       rather than recompiling all the code. Consequently, it is left to the implementor  whether
       or not an object file is created.

       A  reference  to  MIL-STD-1753 was removed from an early proposal in response to a request
       from the POSIX FORTRAN-binding standard developers.  It  was  not  the  intention  of  the
       standard   developers   to   require   certification   of   the   FORTRAN   compiler,  and
       IEEE Std 1003.9-1992 does not specify the military standard or any  special  preprocessing
       requirements.  Furthermore,  use  of  that  document  would have been inappropriate for an
       international standard.

       The specification of optimization has been subject to changes through early proposals.  At
       one  time,  -O  and  -N  were  Booleans: optimize and do not optimize (with an unspecified
       default).  Some historical practice led this to be changed to:

       -O 0   No optimization.

       -O 1   Some level of optimization.

       -O  n  Other, unspecified levels of optimization.

       It is not always clear whether "good code generation" is the same thing  as  optimization.
       Simple  optimizations  of  local actions do not usually affect the semantics of a program.
       The -O 0 option has been included to accommodate the very particular nature of  scientific
       calculations  in  a  highly  optimized  environment; compilers make errors. Some degree of
       optimization is expected, even if it is not documented here, and the ability  to  shut  it
       off completely could be important when porting an application. An implementation may treat
       -O 0 as "do less than normal" if it wishes, but this is only  meaningful  if  any  of  the
       operations  it  performs can affect the semantics of a program.  It is highly dependent on
       the implementation whether doing less than normal is logical. It is not the intent of  the
       -O  0  option  to  ask  for  inefficient  code  generation,  but rather to assure that any
       semantically visible optimization is suppressed.

       The  specification  of  standard  library  access  is  consistent  with  the  C   compiler
       specification.   Implementations  are  not  required  to  have  /usr/lib/libf.a,  as  many
       historical implementations do, but if not they are required to recognize f as a token.

       External symbol size limits are in normative text; conforming applications  need  to  know
       these  limits.  However, the minimum maximum symbol length should be taken as a constraint
       on a conforming application, not on an implementation, and consequently the  action  taken
       for  a symbol exceeding the limit is unspecified. The minimum size for the external symbol
       table was added for similar reasons.

       The CONSEQUENCES OF ERRORS section clearly specifies the behavior  of  the  compiler  when
       compilation or link-edit errors occur.  The behavior of several historical implementations
       was examined, and the choice was made to be silent on the status  of  the  executable,  or
       a.out,  file  in  the face of compiler or linker errors. If a linker writes the executable
       file, then links it on disk with lseek()s and write()s, the  partially  linked  executable
       file  can be left on disk and its execute bits turned off if the link edit fails. However,
       if the linker links the image in memory before writing the file to disk, it need not touch
       the  executable  file  (if  it  already  exists)  because  the link edit fails. Since both
       approaches are historical practice, a conforming application shall rely on the exit status
       of fort77, rather than on the existence or mode of the executable file.

       The  -g  and  -s  options are not specified as mutually-exclusive.  Historically these two
       options have been mutually-exclusive, but because both are so loosely specified, it seemed
       appropriate to leave their interaction unspecified.

       The  requirement  that  conforming  applications specify compiler options separately is to
       reserve the multi-character option name space for vendor-specific compiler options,  which
       are known to exist in many historical implementations. Implementations are not required to
       recognize, for example, -gc as if it were -g -c; nor are they forbidden from doing so. The
       SYNOPSIS   shows   all  of  the  options  separately  to  highlight  this  requirement  on
       applications.

       Echoing filenames to standard error is considered a diagnostic message  because  it  would
       otherwise  be  difficult  to  associate  an  error  message with the erring file. They are
       described with "may" to allow implementations to use other methods  of  identifying  files
       and to parallel the description in c99.

FUTURE DIRECTIONS

       A  compilation  system  based  on  the  ISO/IEC 1539:1990  standard  (Fortran-90)  may  be
       considered for a future version; it may have a different utility name from fort77.

SEE ALSO

       ar , asa , c99 , umask() , the System Interfaces volume of IEEE Std 1003.1-2001, exec

COPYRIGHT

       Portions of this text are reprinted and  reproduced  in  electronic  form  from  IEEE  Std
       1003.1,  2003  Edition,  Standard  for Information Technology -- Portable Operating System
       Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003  by
       the  Institute  of  Electrical  and  Electronics Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE  and  The  Open  Group
       Standard,  the  original  IEEE  and  The  Open Group Standard is the referee document. The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .