Chapter 7 |
7
|
Compaq Fortran Input/Output (I/O)
|
7.1
|
Logical I/O Units
|
7.2
|
Types of I/O Statements
|
7.3
|
Forms of I/O Statements
|
7.4
|
Types of Files and File Characteristics
|
7.4.1
|
File Organizations
|
7.4.2
|
Internal Files and Scratch Files
|
7.4.3
|
Record Types, Record Overhead, and Maximum Record Length
|
7.4.3.1
|
Portability Considerations of Record Types
|
7.4.3.2
|
Record Overhead
|
7.4.3.3
|
Maximum Record Length
|
7.4.4
|
Other File Characteristics
|
7.5
|
Opening Files: OPEN Statement
|
7.5.1
|
Using Preconnected Standard I/O Files
|
7.5.2
|
OPEN Statement Specifiers
|
7.5.3
|
Methods to Specify the Unit, File Name, and Directory
|
7.5.4
|
Accessing Files: Implied and Explicit File and Pathnames
|
7.5.5
|
How Compaq Fortran Applies a Default Pathname and File Name
|
7.5.6
|
Coding File Locations in an OPEN Statement
|
7.5.7
|
Using Environment Variables
|
7.6
|
Obtaining File Information: INQUIRE Statement
|
7.6.1
|
Inquiry by Unit
|
7.6.2
|
Inquiry by File Name
|
7.6.3
|
Inquiry by Output Item List
|
7.7
|
Closing a File: CLOSE Statement
|
7.8
|
Record Operations
|
7.8.1
|
Record I/O Statement Specifiers
|
7.8.2
|
Record Access Modes and File Sharing
|
7.8.2.1
|
Sequential Access
|
7.8.2.2
|
Direct Access
|
7.8.2.3
|
Limitations of Record Access by File Organization and Record Type
|
7.8.2.4
|
File Sharing
|
7.8.3
|
Specifying the Initial Record Position
|
7.8.4
|
Advancing and Nonadvancing Record I/O
|
7.8.5
|
Record Transfer
|
7.8.5.1
|
Input Record Transfer
|
7.8.5.2
|
Output Record Transfer
|
7.9
|
User-Supplied OPEN Procedures: USEROPEN Specifier
|
7.9.1
|
Restrictions of Called USEROPEN Functions
|
7.9.2
|
Example USEROPEN Program and Function
|
7.10
|
Format of Compaq Fortran Record Types
|
7.10.1
|
Fixed-Length Records
|
7.10.2
|
Variable-Length Records
|
7.10.3
|
Segmented Records
|
7.10.4
|
Stream File Data
|
7.10.5
|
Stream_CR and Stream_LF Records
|
Chapter 8 |
8
|
Run-Time Errors and Signals
|
8.1
|
Compaq Fortran Run-Time Library Default Error Processing
|
8.1.1
|
Run-Time Message Format
|
8.1.2
|
Message Catalog Location
|
8.1.3
|
Values Returned to the Shell at Program Termination
|
8.1.4
|
Forcing a Core Dump for Severe Errors
|
8.2
|
Handling Run-Time Errors
|
8.2.1
|
Using the END, EOR, and ERR Branch Specifiers
|
8.2.2
|
Using the IOSTAT Specifier
|
8.2.3
|
Using the 3f Library Routines to Return Operating System Errors
|
8.3
|
Signal Handling
|
8.4
|
Run-Time Error Messages
|
Chapter 9 |
9
|
Data Types and Representation
|
9.1
|
Summary of Data Types and Characteristics
|
9.2
|
Integer Data Representations
|
9.2.1
|
Integer Declarations and f90/fort Compiler Options
|
9.2.2
|
INTEGER (KIND=1) or INTEGER*1 Representation
|
9.2.3
|
INTEGER (KIND=2) or INTEGER*2 Representation
|
9.2.4
|
INTEGER (KIND=4) or INTEGER*4 Representation
|
9.2.5
|
INTEGER (KIND=8) or INTEGER*8 Representation
|
9.3
|
Logical Data Representations
|
9.4
|
Native IEEE Floating-Point Representations and Exceptional Values
|
9.4.1
|
REAL and COMPLEX Declarations and f90/fort Compiler Options
|
9.4.2
|
REAL (KIND=4) or REAL*4 Representation
|
9.4.3
|
REAL (KIND=8) or REAL*8 Representation
|
9.4.4
|
REAL (KIND=16) or REAL*16 Representation
|
9.4.5
|
COMPLEX (KIND=4) or COMPLEX*8 Representation
|
9.4.6
|
COMPLEX (KIND=8) or COMPLEX*16 Representation
|
9.4.7
|
COMPLEX (KIND=16) or COMPLEX*32 Representation
|
9.4.8
|
Exceptional Floating-Point Representations
|
9.5
|
Character Representation
|
9.6
|
Hollerith Representation
|
Chapter 10 |
10
|
Converting Unformatted Numeric Data
|
10.1
|
Endian Order of Numeric Formats
|
10.2
|
Little Endian Floating-Point Format
|
10.3
|
Native and Supported Nonnative Numeric Formats
|
10.4
|
Limitations of Numeric Conversion
|
10.5
|
Methods of Specifying the Unformatted Numeric Format
|
10.5.1
|
Environment Variable FORT_CONVERTn Method
|
10.5.2
|
Environment Variable FORT_CONVERT.ext Method
|
10.5.3
|
OPEN Statement CONVERT='keyword' Method
|
10.5.4
|
OPTIONS Statement /CONVERT=keyword Method
|
10.5.5
|
Command-Line -convert keyword Option Method
|
10.6
|
Additional Information on Nonnative Data
|
Chapter 11 |
11
|
Procedure Data Interfaces and Mixed Language Programming
|
11.1
|
Compaq Fortran Procedures and Argument Passing
|
11.1.1
|
Explicit and Implicit Interfaces
|
11.1.2
|
Types of Compaq Fortran Subprograms
|
11.1.3
|
Using Procedure Interface Blocks
|
11.1.4
|
Passing Arguments and Function Return Values
|
11.1.5
|
Passing Arrays as Arguments
|
11.1.6
|
Passing Pointers as Arguments
|
11.1.7
|
Compaq Fortran Array Descriptor Format
|
11.1.8
|
Argument-Passing Mechanisms and Built-In Functions
|
11.1.8.1
|
Passing Addresses --- %LOC Function
|
11.1.8.2
|
Passing Arguments by Immediate Value --- %VAL Function
|
11.1.8.3
|
Passing Arguments by Reference --- %REF Function
|
11.1.8.4
|
Examples of Argument Passing Built-in Functions
|
11.2
|
Using the cDEC$ ALIAS and cDEC$ ATTRIBUTES Directives
|
11.2.1
|
cDEC$ ALIAS directive
|
11.2.2
|
cDEC$ ATTRIBUTES Directive
|
11.2.2.1
|
C Property
|
11.2.2.2
|
ALIAS Property
|
11.2.2.3
|
REFERENCE and VALUE Properties
|
11.2.2.4
|
EXTERN and VARYING Properties
|
11.3
|
Calling Between Compaq Fortran and C
|
11.3.1
|
Compiling and Linking Files
|
11.3.2
|
Procedures and External Names
|
11.3.3
|
Invoking a C Function from Compaq Fortran
|
11.3.4
|
Invoking a Compaq Fortran Function or Subroutine from C
|
11.3.5
|
Equivalent Data Types for Function Return Values
|
11.3.6
|
Argument Association and Equivalent Data Types
|
11.3.6.1
|
Compaq Fortran Intrinsic Data Types
|
11.3.6.2
|
Equivalent Compaq Fortran and C Data Types
|
11.3.7
|
Example of Passing Integer Data to C Functions
|
11.3.8
|
Example of Passing Character Data Between Compaq Fortran and C
|
11.3.9
|
Example of Passing Complex Data to C Functions
|
11.3.10
|
Handling User-Defined Structures
|
11.3.11
|
Handling Scalar Pointer Data
|
11.3.12
|
Handling Arrays
|
11.3.13
|
Handling Common Blocks of Data
|
11.4
|
Calling Between Parallel HPF and Non-Parallel HPF Code
|
Chapter 12 |
12
|
Compaq Fortran Library Routines
|
12.1
|
Overview of Compaq Fortran Library Routines
|
12.2
|
3f Routines
|
12.3
|
3hpf Routines
|
12.4
|
Reference Pages for the 3f and 3hpf Routines
|
12.5
|
EXTERNAL or INTRINSIC Declarations
|
12.6
|
Example Using the 3f Library Routine shcom_connect
|
12.7
|
Example of the 3f Library Routines irand and qsort
|
Chapter 13 |
13
|
Using the Compaq Extended Math Library (CXML)
|
13.1
|
What Is CXML?
|
13.2
|
CXML Routine Groups
|
13.3
|
Using CXML from Fortran
|
13.4
|
CXML Program Example
|
13.5
|
CXML Documentation
|
Chapter 14 |
14
|
Controlling Floating-Point Exceptions
|
14.1
|
Overview of Controlling Floating-Point Exceptions
|
14.2
|
Using the for_fpe_flags.f File
|
14.2.1
|
Bit Definitions in File for_fpe_flags.f
|
14.3
|
Calling the for_get_fpe and for_set_fpe Functions
|
14.3.1
|
Calling for_get_fpe
|
14.3.2
|
Calling for_set_fpe
|
14.4
|
File fordef.f and Its Usage
|
Appendix A |
Appendix A
|
Compatibility: Compaq Fortran 77 and Compaq Fortran on Multiple Platforms
|
A.1
|
Compaq Fortran and Compaq Fortran 77 Compatibility on Various Platforms
|
A.2
|
Compatibility with Compaq Fortran 77 for Compaq Tru64 UNIX Systems
|
A.2.1
|
Major Language Features for Compatibility with Compaq Fortran 77 for Compaq Tru64 UNIX Systems
|
A.2.2
|
Language Features Provided Only by Compaq Fortran 77 for Compaq Tru64 UNIX Systems
|
A.2.3
|
Improved Compaq Fortran Compiler Diagnostic Detection
|
A.2.4
|
Compiler Command-Line Differences
|
A.3
|
Language Compatibility with Compaq Visual Fortran
|
A.4
|
Compatibility with Compaq Fortran 77 and Compaq Fortran for OpenVMS Systems
|
A.4.1
|
Language Features Specific to Compaq Fortran 77 and Compaq Fortran for OpenVMS Systems
|
A.4.2
|
OpenVMS Data Porting Considerations
|
A.4.2.1
|
Matching Record Types
|
A.4.2.2
|
Copying Files
|
A.4.3
|
Nonnative VAX Floating-Point Representations
|
A.4.3.1
|
VAX F_float REAL (KIND=4) or REAL*4
|
A.4.3.2
|
VAX G_float REAL (KIND=8) or REAL*8
|
A.4.3.3
|
VAX D_float REAL (KIND=8) or REAL*8
|
A.4.3.4
|
VAX F_float COMPLEX (KIND=4) or COMPLEX*8
|
A.4.3.5
|
VAX G_float and D_float COMPLEX (KIND=8) or COMPLEX*16
|
A.4.3.6
|
VAX H_float Representation
|
A.5
|
Calling Between Compaq Fortran 77 and Compaq Fortran
|
A.5.1
|
Argument Passing and Function Return Values
|
A.5.2
|
Using Data Items in Common Blocks
|
A.5.3
|
I/O to the Same Unit Number
|
Appendix B |
Appendix B
|
Compaq Fortran Environment Variables
|
B.1
|
Commands for Setting and Unsetting Environment Variables
|
B.1.1
|
Bourne Shell (sh) and Bourne Again Shell (bash) and Korn Shell (ksh) Commands
|
B.1.2
|
C Shell (csh) Commands
|
B.2
|
Compile-Time Environment Variables
|
B.3
|
Run-Time Environment Variables
|
Appendix C |
Appendix C
|
Compiler Output Listings
|
C.1
|
Source-Code Section of the Output Listing
|
C.2
|
Machine-Code Section of the Output Listing
|
C.2.1
|
How Generated Code and Data are Represented in Machine-Code Listings
|
C.2.2
|
Assembler Code Represented in Machine-Code Listings
|
C.3
|
Compilation Summary of the Output Listing
|
Appendix D |
Appendix D
|
Parallel Library Routines
|
D.1
|
OpenMP Fortran API Run-Time Library Routines
|
D.1.1
|
Library Routines That Control and Query the Parallel Execution Environment
|
D.1.1.1
|
omp_get_dynamic
|
D.1.1.2
|
omp_get_max_threads
|
D.1.1.3
|
omp_get_nested
|
D.1.1.4
|
omp_get_num_procs
|
D.1.1.5
|
omp_get_num_threads
|
D.1.1.6
|
omp_get_thread_num
|
D.1.1.7
|
omp_in_parallel
|
D.1.1.8
|
omp_set_dynamic
|
D.1.1.9
|
omp_set_nested
|
D.1.1.10
|
omp_set_num_threads
|
D.1.2
|
General-Purpose Lock Routines
|
D.1.2.1
|
omp_destroy_lock
|
D.1.2.2
|
omp_init_lock
|
D.1.2.3
|
omp_set_lock
|
D.1.2.4
|
omp_test_lock
|
D.1.2.5
|
omp_unset_lock
|
D.2
|
Other Parallel Threads Routines
|
D.2.1
|
_OtsGetMaxThreads or mpc_maxnumthreads
|
D.2.2
|
_OtsGetNumThreads or mpc_numthreads
|
D.2.3
|
_OtsGetThreadNum or mpc_my_threadnum
|
D.2.4
|
_OtsInitParallel
|
D.2.5
|
_OtsInParallel or mpc_in_parallel_region
|
D.2.6
|
_OtsSetNumThreads
|
D.2.7
|
_OtsStopWorkers or mpc_destroy
|
Index |
Index |
Examples |
1-1 |
Sample Main Program |
1-2 |
Sample Main Program that Uses a Module and Separate Function |
1-3 |
Sample Module |
1-4 |
Sample Separate Function Declaration |
4-1 |
Sample Program SQUARES |
4-2 |
Sample Debugging Session Using Program Squares |
5-1 |
Using the -assume dummy_aliases Option |
6-1 |
Aligned Loop |
6-2 |
Transformed Loop Using Code Replication |
6-3 |
Distributed Loop |
6-4 |
Decomposed Loop Using Locks |
6-5 |
Decomposed Loop Using a REDUCTION Clause |
6-6 |
Code Using Parallel Region |
6-7 |
Code Using Multiple Threads |
6-8 |
Code Using Multiple Processors |
6-9 |
Code Using Shared Variables |
6-10 |
Code Looking at a Shared Variable Value |
7-1 |
C Function Called by USEROPEN Procedure |
7-2 |
Compaq Fortran USEROPEN Main Calling Program |
8-1 |
Example of Stack Trace Information |
8-2 |
Error Handling OPEN Statement File Name |
11-1 |
Calling C Functions and Passing Integer Arguments |
11-2 |
Calling C Functions and Passing Integer Arguments |
11-3 |
C Functions Called by a Compaq Fortran Program |
11-4 |
Calling C Functions and Passing Integer Arguments |
11-5 |
Compaq Fortran Program Calling a C Function |
11-6 |
C Interface Function Called by Compaq Fortran |
11-7 |
Calling C Functions and Passing Complex Arguments |
11-8 |
Calling C Functions and Passing Pointer Arguments |
11-9 |
C Functions Receiving Pointer Arguments |
11-10 |
C Function That Receives an Explicit-Shape Array |
11-11 |
Compaq Fortran Program That Passes an Explicit-Shape Array |
12-1 |
Using the 3f Routine shcom_connect |
12-2 |
Using the 3f Routines irand and qsort |
13-1 |
Fortran Example Program Using CXML |
A-1 |
Compaq Fortran Program Calling a Compaq Fortran 77 Subroutine |
A-2 |
Compaq Fortran 77 Subroutine Called by a Compaq Fortran Program |
C-1 |
Sample Source Code Listing |
C-2 |
Sample Machine-Code Listing |
C-3 |
Sample Compilation Summary on Tru64 UNIX Systems |
C-4 |
Sample Compilation Summary on Linux Systems |
Figures |
2-1 |
Driver Programs and Software Components |
5-1 |
Common Block with Unaligned Data |
5-2 |
Common Block with Naturally Aligned Data |
5-3 |
Common Block with Naturally Aligned Reordered Data |
5-4 |
Derived-Type Naturally Aligned Data (in CATALOG_SPRING : ( ,)) |
5-5 |
Memory Diagram of REC for Naturally Aligned Records |
7-1 |
Fixed-Length Records |
7-2 |
Variable-Length Records Less Than 2 Gigabytes |
7-3 |
Variable-Length Records Greater Than 2 Gigabytes |
7-4 |
Segmented Records |
7-5 |
Stream File Records |
7-6 |
Stream_CR and Stream_LF Records |
9-1 |
INTEGER (KIND =1) or INTEGER*1 Representation |
9-2 |
INTEGER (KIND =2) or INTEGER*2 Representation |
9-3 |
INTEGER (KIND =4) or INTEGER*4 Representation |
9-4 |
INTEGER (KIND =8) or INTEGER*8 Representation |
9-5 |
LOGICAL Representations |
9-6 |
REAL (KIND =4) or REAL*4 Representation |
9-7 |
REAL (KIND =8) or REAL*8 Representation |
9-8 |
REAL (KIND =16) or REAL*16 Representation |
9-9 |
COMPLEX (KIND =4) or COMPLEX*8 Representation |
9-10 |
COMPLEX (KIND =8) or COMPLEX*16 Representation |
9-11 |
COMPLEX (KIND =16) or COMPLEX*32 Representation |
9-12 |
CHARACTER Data Representation |
10-1 |
Little Endian and Big Endian Storage of an INTEGER Value |
10-2 |
Sample Unformatted File Conversion |
A-1 |
VAX F_float REAL (KIND =4) or REAL*4 Representation |
A-2 |
VAX G_float REAL (KIND =8) or REAL*8 Representation |
A-3 |
VAX D_float REAL (KIND =8) or REAL*8 Representation |
A-4 |
VAX F_float COMPLEX (KIND =4) or COMPLEX*8 Representation |
A-5 |
VAX G_float COMPLEX (KIND =8) or COMPLEX*16 Representation |
A-6 |
VAX D_float COMPLEX (KIND =8) or COMPLEX*16 Representation |
A-7 |
VAX H_float REAL*16 Representation (VAX Systems) |
Tables |
1 |
Conventions Used in This Document |
1-1 |
Main Tools for Program Development and Testing |
2-1 |
File Suffixes Recognized as Fortran 95/90 Source Files |
2-2 |
Other File Name Suffixes |
2-3 |
Compiler Limits |
2-4 |
Libraries Automatically Searched When Using the f90 Command |
3-1 |
f90 and fort Command Categories and Options |
3-2 |
Interaction of File Suffix and the -free and -fixed Options on Source Form |
3-3 |
Summary of Floating-Point Exception Command-Line Options |
4-1 |
Command-Line Options Affecting Traceback and Symbol Table Information |
4-2 |
Summary of Debugger Commands |
4-3 |
Fortran Data Types and Debugger Equivalents |
5-1 |
Options That Affect Run-Time Performance |
5-2 |
Options that Slow Run-Time Performance |
5-3 |
Output Argument Array Types |
5-4 |
Levels of Optimization with Different -O n Options |
6-1 |
OpenMP Fortran API Compiler Directives |
6-2 |
Operators/Intrinsics and Initialization Values for Reduction Variables |
6-3 |
Compaq Fortran Parallel Compiler Directives |
6-4 |
OpenMP Fortran API Environment Variables |
6-5 |
Compaq Fortran Parallel Environment Variables |
7-1 |
Summary of I/O Statements |
7-2 |
Available I/O Statements and Record I/O Forms |
7-3 |
Compaq Fortran Record Types |
7-4 |
Bytes Required for Record Overhead |
7-5 |
Environment Variables and Preconnected Files |
7-6 |
OPEN Statement Functions and Specifiers |
7-7 |
Examples of Applying Default Pathnames and File Names |
7-8 |
Implicit Compaq Fortran Logical Units |
7-9 |
Allowed Record Access for File Organizations and Record Types |
8-1 |
Severity Levels of Run-Time Messages |
8-2 |
Signals Caught by the Compaq Fortran Run-Time Library |
8-3 |
Run-Time Error Messages and Explanations |
9-1 |
Compaq Fortran Intrinsic Data Types, Storage, and Numeric Ranges |
9-2 |
Exceptional Floating-Point Numbers |
10-1 |
Unformatted Numeric Formats, Keywords, and Supported Data Types |
11-1 |
Calling Conventions for ATTRIBUTES Options |
11-2 |
C Property and External Names |
11-3 |
C Property and Argument Passing |
11-4 |
Equivalent Function Declarations in C and Compaq Fortran |
11-5 |
Compaq Fortran and C Data Types |
12-1 |
Summary of Language Interface (" Jacket") 3f Library Routines |
12-2 |
Summary of 3f Library Routines Providing Special Functions |
12-3 |
3f Functions and Subroutines |
12-4 |
Compaq Fortran 3hpf HPF_LOCAL_LIBRARY Library Routines |
13-1 |
CXML Routine Groups |
14-1 |
Bit Definitions in File for_fpe_flags.f |
14-2 |
Symbols in File fordef.f |
A-1 |
Summary of Language Compatibility |
A-2 |
Equivalent Record Types for OpenVMS Fortran and Compaq Fortran on Compaq Tru64 UNIX or Linux Alpha Systems |
B-1 |
Compile-Time Environment Variables |
B-2 |
Run-Time Environment Variables |
D-1 |
OpenMP Fortran API Run-Time Library Routines |
D-2 |
Other Parallel Threads Routines |