Compaq Fortran
User Manual for
Tru64 UNIX and Linux Alpha Systems


Previous Contents Index


Appendix B
Compaq Fortran Environment Variables

Compaq Fortran recognizes certain environment variables at compile-time and run-time.

B.1 Commands for Setting and Unsetting Environment Variables

The commands used to set and unset environment variables vary with the shell in use.

To view the previously set environment variables, use the printenv command (see printenv(1)).

B.1.1 Bourne Shell (sh) and Bourne Again Shell (bash) and Korn Shell (ksh) Commands

With the Bourne shell (sh), Bourne Again Shell (bash) (L*X ONLY), and Korn shell (ksh), use an export and an assignment statement to set an environment variable:


$ export environment-variable-name
$ environment-variable-name=value

For example, to associate the environment variable TMPDIR with the directory /usr/users/smith/ , type:


$ export TMPDIR
$ TMPDIR=/usr/users/smith/

To remove the association of an environment variable and its value with the Bourne or Korn shell or bash shell (L*X ONLY), use the unset command:


$ unset environment-variable-name

B.1.2 C Shell (csh) Commands

With the C shell (csh), use the setenv command to set an environment variable value:


% setenv environment-variable-name value

For example, to associate the environment variable FORT8 with the file located at /usr/users/smith/test.dat , type:


% setenv FORT8 /usr/users/smith/test.dat

To remove the association of an environment variable and its value with the C shell, use the unsetenv command:


% unsetenv environment-variable-name

B.2 Compile-Time Environment Variable

Table B-1 describes environment variables that Compaq Fortran recognizes at compile-time.

Table B-1 Compile-Time Environment Variable
Environment Variable Description
TMPDIR Specifies an alternate working directory where temporary files are created during preprocessing or compilation.

To specify an alternate working directory for temporary files, set the TMPDIR environment variable to the desired directory name. If TMPDIR is not set, temporary files created during preprocessing or compilation reside in the /tmp directory.

For large applications, you might set this variable to balance disk I/O during compilation. For performance reasons, use a local disk (rather than using a NFS mounted disk) to contain the temporary files.

DECF90 The location of the f90 compiler to invoke.
DECF90_CC The location of the cc command.
DECF90_INIT Initial options for the f90 (or f95 ) command. If this variable is defined, its value must have the form: [[ pre] [:: [ post]]

The items enclosed in square brackets ([]) are optional and can be empty. The pre and post variables are strings to be added to the command line:

  • The pre string is added to the front of the command line, before any characters the user types
  • The post string is added to the end of the command line
DECFORT_FPP The name of the preprocessor for FORTRAN 77 files.

B.3 Run-Time Environment Variables

Table B-2 describes the environment variables Compaq Fortran recognizes at run-time. Environment variables used with OpenMP Fortran API (multi-threaded parallel processing) are described in Table 6-4.

Table B-2 Run-Time Environment Variables
Environment Variable Description
decfort_dump_flag Requests that a core dump ( core file) be created when any severe Compaq Fortran run-time error occurs. Most severe Compaq Fortran run-time errors do not result in a core dump, unless accompanied by certain operating system messages.

To request that a core file be created for all severe Compaq Fortran run-time errors, set the environment variable decfort_dump_flag to the character Y or y and then run the erroneous program for which you need a core file created. For more information, see Section 8.1.4.

FORTn Allows the user to specify the directory and file name at run-time for a logical unit ( n) for which the OPEN statement does not specify a file name. If the appropriate environment variable is not set and the OPEN statement does not specify a file name for that logical unit, a default file name of fort. n is used. For more information, see Section 7.5.1.7.
FOR_READ For programs compiled with the f90 command -vms option, specifies the name of a file to receive input from a READ statement instead of stdin . For more information, see Section 7.5.1.7.
FOR_ACCEPT For programs compiled with the f90 command -vms option, specifies the name of a file to receive input from an ACCEPT statement instead of stdin . For more information, see Section 7.5.1.7.
FOR_PRINT For programs compiled with the f90 command -vms option, specifies the name of a file to receive output from a PRINT statement instead of stdout . For more information, see Section 7.5.1.7.
FOR_TYPE For programs compiled with the f90 command -vms option, specifies the name of a file to receive output from a TYPE statement instead of stdout . For more information, see Section 7.5.1.7.
FORT_CONVERTn For an unformatted file, specifies the nonnative numeric format of the data at run-time for a logical unit ( n). Otherwise, the nonnative numeric format of the unformatted data must be specified at compile-time by using the f90 command -convert type option. For more information, see Section 10.4.1.
FORT_CONVERT.ext For an unformatted file, specifies the nonnative numeric format of the data at run-time for a file whose suffix is ext. Otherwise, the nonnative numeric format of the unformatted data must be specified at compile-time by using the f90 command -convert type option. For more information, see Section 10.4.2.
MP_* (TU*X ONLY) Compaq Fortran Environment Variables, used with directed parallel processing. For more information, see Table 6-5.
NLSPATH If the run-time message catalog file cannot be located, the Compaq Fortran run-time system attempts to open the message catalog file at the location indicated by the NLSPATH environment variable. For more information, see Section 8.1.2.
OMP_* (TU*X ONLY) OpenMP Fortran API environment variables, used with directed parallel processing. For more information, see Table 6-4.
TMPDIR Specifies an alternate working directory where scratch files are created. To specify an alternate working directory for scratch files, set the TMPDIR environment variable to the desired directory name. For performance reasons, use a local disk (rather than using a NFS mounted disk) to contain the scratch files.

If TMPDIR is not set, scratch files are created in the directory specified in the OPEN statement DEFAULTFILE (if specified).

In addition to the environment variables recognized by Compaq Fortran, the Compaq Tru64 UNIX operating system recognizes other environment variables. For example, you can use the PROFDIR environment variable to request a different profile data file name (than mon.out ) during pixie command execution on a Compaq Tru64 UNIX system and you can set the LD_LIBRARY_PATH environment variable to install a private shared library.


Appendix C
Compiler Output Listings

To request a listing file, use the -V option. You can then print the listing (or source) files using the lpr command. For example:


% f90 -V peak.f90
% lpr  peak.l

An output listing produced by the Compaq Fortran compiler consists of the following sections:

C.1 Source-Code Section

The source-code section of a compiler output listing displays the source program as it appears in the input file, with the addition of sequential line numbers generated by the compiler. Example C-1 shows a sample of a source-code section of a compiler output listing.

Example C-1 Sample Source Code Listing

RELAX2 Source Listing 29-Nov-1999 11:01:55   Compaq Fortran  V5.x-xxx  Page 1 
                      29-Nov-1999 11:01:31   listing.f90 
 
              1      SUBROUTINE RELAX2(EPS) 
              2      INTEGER, PARAMETER :: M=40 
              3      INTEGER, PARAMETER :: N=60 
              4      COMMON X (M,N) 
              5      LOGICAL DONE 
              6  1   DONE = .TRUE. 
              7      DO J=1,N-1 
              8        DO I=1,M-1 
              9          XNEW = (X(I-1,J)+X(I+1,J)+X(I,J-1)+X(I,J+1))/4 
             10          IF (ABS(XNEW-X(I,J)) > EPS) DONE = .FALSE. 
             11          X(I,J) = XNEW 
             12        END DO 
             13      END DO 
             14      IF (.NOT. DONE) GO TO 1 
             15      RETURN 
             16      END SUBROUTINE 
 
 

The first heading line contains "Source Listing", the date and time the listing file was created, and the version of Compaq Fortran.

The second line contains the creation date of the source file and its file name.

Compiler-generated line numbers appear in the left margin.

Compile-time error messages that contain line numbers refer to these compiler-generated line numbers. See Section 2.3 for a explanation of error messages.

C.2 Machine-Code Section

The machine-code section of a compiler output listing provides a symbolic representation of the compiler-generated object code. The representation of the generated code and data is similar to that of assembler language.

The machine-code section is optional. To create a listing file with a machine-code section, specify both the -V and -show code options.

NOTE

The machine code listing resembles Alpha machine language code and is for reference purposes only. Such code is not intended to be assembled and run.

Example C-2 shows a sample of a machine-code section of a compiler output listing for an Alpha system.

Example C-2 Sample Machine-Code Listing

RELAX2        Machine Code Listing    29-Nov-1999 11:22:31   Compaq Fortran V5.x-xxx    Page 2 
                                      15-Feb-1996 15:01:31   listing.f90 
 
                                           .text 
                                           .globl  relax2_ 
                                           .ent  relax2_ 
                                           .eflag 16 
             0000       relax2_:                                                           # 000001 
27BB0001     0000               ldah    gp, relax2_                  # gp, (r27) 
2FFE0000     0004               unop 
23BD81D0     0008               lda     gp, relax2_                  # gp, (gp) 
2FFE0000     000C               unop 
                                .frame  $sp, 0, $26 
                                .prologue 1 
             0010      L$1: 
A79D8010     0010               ldq     r28, (gp)                                          # 000009 
88100000     0014               lds     f0, (r16)                                          # 000010 
883C0000     0018               lds     f1, (r28)                                          # 000009 
A43D8018     001C               ldq     r1, var$0004                  # r1, 8(gp) 
             0020      .1:                                                                 # 000006 
205FFFFF     0020               mov     -1, DONE                      # -1, r2 
47E77403     0024               mov     59, var$0002                  # 59, r3             # 000007 
47F41404     0028               mov     160, r4                                            # 000011 
2FFE0000     002C               uno 
             0030      lab$0004:                                                           # 000007 
40240405     0030               addq    r1, r4, r5                                         # 000009 
47E4F406     0034               mov     39, var$0003                  # 39, r6             # 000008 
20A5FF5C     0038               lda     r5, -164(r5)                                       # 000009 
2FFE0000     003C               unop 
             0040      lab$0008:                                                           # 000008 
89650000     0040               lds     f11, (r5)                                          # 000009 
89450008     0044               lds     f10, 8(r5) 
8985FF64     0048               lds     f12, -156(r5) 
89A500A4     004C               lds     f13, 164(r5) 
 . 
 . 
 . 
Routine Size: 448 bytes,    Routine Base: $CODE$ + 0000 
 
                                .rdata 
                        $$1: 
00000000     0000               .quad   .lit4 
00000000     0008               .quad   _BLNK__ 
                                .rconst 
                        $$2: 
3E800000     0000               .long   0x3E800000 # .float 0.2500000 
                                .data 
                        $$3: 
                                .data 
                        $$4: 
             0000               ; Code range descriptor for relax2_ 
                                beginaddress        :     0000 
                                rpd_offset          :     ---- 
                                flags               : Standard 
                                .comm   _BLNK__ 9600 

How Generated Code and Data are Represented in Machine-Code Listings

The following notes give a detailed explanation of how generated code and data are represented in machine-code listings.

Like a source listing, the first heading line contains the name of the program, subroutine, or function; the date and time the listing file was created; and the version of Compaq Fortran.

The second heading line contains "Machine Code Listing," the creation date of the source file, and the name of the source file.

The third heading line contains a .section Assembler directive, indicating the attributes of the machine-code program unit. The $CODE$ shown in Example C-2 indicates a code section.

The lines following each data program section provide information such as the contents of storage initialized for FORMAT statements, DATA statements, constants, and subprogram argument call lists.

The lines following $CODE$ show the machine instructions represented in the form of Alpha Assembler mnemonics and syntax. Each line contains compiler-generated object code starting at the left margin, followed by the hexadecimal byte offset (four hexadecimal digits), followed by the actual assembler code.

Assembler Code Represented in Machine-Code Listings

General registers (0 through 31) are represented by r0 through r31 and floating-point registers are similarly represented by fn.

Variables and arrays defined in the source program are shown as they were defined in the program. Offsets from variables and arrays are shown in decimal. Optimization frequently places variables in registers, so variable names may be missing.

Fortran source labels referenced in the source program are shown with a period (.) prefix. For example, if the source program refers to label 300, the label appears in the machine-code listing as .300. Labels that appear in the source program, but are not referenced or are deleted during compiler optimization, are ignored. They do not appear in the machine-code listing unless you specified -O0 .

The compiler may generate labels for its own use. These labels appear as L$n or lab$000n, where the value of n is unique for each such label in a program unit.

Integer constants are shown as signed integer values.

Addresses are represented by the program section name plus the hexadecimal offset within that program section. Changes from one program section to another are indicated by lines.

C.3 Compilation Summary Section

The final entries on the compiler listing are the compiler options and compiler statistics.

The options shown include the ones specified on the f90 command line and the ones in effect as defaults during the compilation. The compiler statistics are the machine resources used by the compiler.

Example C-3 shows how compiler options and command-line options and compilation statistics appear on the listing.

Example C-3 Sample Compilation Summary

 
COMPILER OPTIONS BEING USED 
 
  no   -align commons                   no   -align dcommons 
       -align records                   no   -align sequence 
  no   -align rec1byte                  no   -align rec2byte 
  no   -align rec4byte                  no   -align rec8byte 
       -altparam                             -arch generic 
       -assume accuracy_sensitive       no   -assume bigarrays 
  no   -assume buffered_io              no   -assume byterecl 
  no   -assume dummy_aliases            no   -assume gfullpath 
  no   -assume minus0                   no   -assume pthreads_lock 
       -assume underscore               no   -assume 2underscores 
       -assume source_include                -assume zsize 
  no   -automatic                            -call_shared 
  no   -check bounds                    no   -check format 
  no   -check omp_bindings              no   -check output_conversion 
  no   -check overflow                       -check power 
  no   -check underflow                      -convert native 
  no   -D                                    -double_size 64 
  no   -d_lines                              -error_limit 30 
  no   -extend_source                   no   -f66 
  no   -fast                            no   -fpscomp logicals 
  no   -fpscomp general                 no   -fpscomp ioformat 
  no   -fpscomp filesfromcmd            no   -fpconstant 
       -fpe0                                 -fprm nearest 
       -free                                 -g1 
       -granularity quadword            no   -hpf_matmul 
  no   -intconstant                          -integer_size 32 
  no   -ladebug                              -machine_code 
       -math_library accurate                -mixed_str_len_arg 
  no   -module                               -names lowercase 
       -nearest_neighbor                no   -nowsf_main 
  no   -non_shared                      no   -noinclude 
       -numnodes 0                           -O4 
       -inline speed                    no   -transform_loops 
  no   -pipeline                             -speculate none 
       -tune generic                         -unroll 0 
  no   -pad_source                           -parallel manual 
  no   -pg                                   -real_size 32 
  no   -recursive                            -reentrancy none 
       -shadow_width 0                  no   -shared 
  no   -show include                         -show map 
  no   -show wsfinfo                    no   -show hpf_all 
  no   -show hpf_punt                   no   -show hpf_nearest 
  no   -show hpf_comm                   no   -show hpf_temps 
  no   -show hpf_indep                  no   -show hpf_dev 
  no   -show hpf_default                no   -std 
  no   -synchronous_exceptions          no   -syntax_only 
  no   -vms                                  -warn alignments 
  no   -warn argument_checking          no   -warn declarations 
       -warn general                         -warn granularity 
  no   -warn hpf                        no   -warn truncated_source 
       -warn uncalled                        -warn uninitialized 
  no   -warn unused                          -warn usage 
       -warning_severity warning        no   -wsf 
  no   -fuse_xref 
 
       -I    path : /usr/lib/cmplrs/hpfrtl/,/usr/include/ 
       -V    filename : listing.l 
       -o    filename : listing.o 
 
COMPILER: Compaq Fortran V5.x-xxx-xxxx 
 

A summary of compilation statistics appear at the end of the listing file. Note that certain options are not available on Linux Alpha systems, such as the -fuse_xref option, and appear only in a listing on a Compaq Tru64 UNIX (TU*X) system.


Previous Next Contents Index