Skip Navigation Links | |
Exit Print View | |
Oracle Solaris Studio 12.3: Fortran User's Guide Oracle Solaris Studio 12.3 Information Library |
2. Using Solaris Studio Fortran
2.2.2 Command-Line File Name Conventions
2.2.4 Source File Preprocessors
2.2.5 Separate Compiling and Linking
2.2.6 Consistent Compiling and Linking
2.2.7 Unrecognized Command-Line Arguments
2.3.1.2 The IGNORE_TKR Directive
2.3.1.6 The PIPELOOP[=n] Directive
2.3.1.7 The PREFETCH Directives
2.3.2 Parallelization Directives
2.3.2.1 OpenMP Parallelization Directives
2.3.2.2 Legacy Sun/Cray Parallelization Directives
2.5.1 Determining Hardware Platform
2.5.2 Using Environment Variables
2.5.3.3 Control of Virtual Memory
2.6 User-Supplied Default Options File
4. Solaris Studio Fortran Features and Extensions
5. FORTRAN 77 Compatibility: Migrating to Solaris Studio Fortran
The Fortran compiler provides an include file, system.inc, that defines the interfaces for most non-intrinsic library routines. Declare this include file to insure that functions you call and their arguments are properly typed, especially when default data types are changed with -xtypemap.
For example, the following may produce an arithmetic exception because function getpid() is not explicitly typed:
integer(4) mypid mypid = getpid() print *, mypid
The getpid() routine returns an integer value but the compiler assumes it returns a real value if no explicit type is declared for the function. This value is further converted to integer, most likely producing a floating-point error.
To correct this you should explicitly type getuid() and functions like it that you call:
integer(4) mypid, getpid mypid = getpid() print *, mypid
Problems like these can be diagnosed with the -Xlist (global program checking) option. The Fortran include file ”system.inc’ provides explicit interface definitions for these routines.
include ’system.inc’ integer(4) mypid mypid = getpid() print *, mypid
Including system.inc in program units calling routines in the Fortran library will automatically define the interfaces for you, and help the compiler diagnose type mismatches. (See the Fortran Library Reference for more information.)