DIGITAL_Fortran_90__________________________________ Release Notes for DIGITAL UNIX Systems September 1997 This document contains information about DIGITAL Fortran 90 (formerly DEC Fortran 90) for DIGITAL UNIX[R] (formerly DEC OSF/1) Alpha Systems. Software Version: DIGITAL Fortran 90 Version 5.0 Digital Equipment Corporation Maynard, Massachusetts ________________________________________________________________ First release, June 1994 Revision, September 1994 Revision, December 1994 Revision, March 1995 Revision, May 1995 Revision, March 1996 Revision, December 1996 Revision September 1997 Digital Equipment Corporation makes no representations that the use of its products in the manner described in this publication will not infringe on existing or future patent rights, nor do the descriptions contained in this publication imply the granting of licenses to make, use, or sell equipment or software in accordance with the description. Possession, use, or copying of the software described in this publication is authorized only pursuant to a valid written license from Digital or an authorized sublicensor. © Digital Equipment Corporation 1997. All Rights Reserved. The following are trademarks of Digital Equipment Corporation: AlphaGeneration, AXP, Bookreader, DEC, DECchip, DECwindows, DEC Fortran, DEC FUSE, DIGITAL, OpenVMS, and the DIGITAL logo. CRAY is a trademark of Cray Research, Inc. PostScript is a trademark of Adobe Systems, Inc. Microsoft is a registered trademark of Microsoft Corporation. Motif, OSF, and OSF/1 are trademarks of the Open Software Foundation, Inc. UNIX is a registered trademark in the United States and other countries licensed exclusively through X/Open Company Ltd. All other trademarks and registered trademarks are the property of their respective holders. This document was prepared using VAX DOCUMENT Version 2.1. _________________________________________________________________ Contents 1 DIGITAL Fortran 90 Version 5.0 Release Notes 1.1 Product Terminology Changes................... 1-1 1.2 Overview...................................... 1-1 1.3 Installation and Minimum Operating Systems Version....................................... 1-2 1.4 Software Versions............................. 1-2 1.5 New Features, Corrections, and Known Problems in Version 5.0................................ 1-4 1.5.1 Version 5.0 New Features.................. 1-4 1.5.2 Version 5.0 Corrections................... 1-8 1.5.3 Version 5.0 Known Problems ............... 1-14 1.6 New Features and Corrections in Version 4.1... 1-14 1.7 New Features in Version 4.0................... 1-22 1.8 Known Limitations............................. 1-29 1.8.1 Limitations on High Performance Fortran Specification Support..................... 1-31 1.8.2 Known Problems with High Performance Fortran Support........................... 1-31 1.9 Additional Information........................ 1-31 1.9.1 The DIGITAL Fortran 90 Home Page.......... 1-31 1.9.2 Parallel Directives....................... 1-32 1.9.3 Support for the Fortran 95 Standard Features.................................. 1-36 1.9.4 Preliminary Information on Support for Big Objects................................... 1-38 1.9.5 New Random Number Algorithm............... 1-40 1.9.6 DIGITAL Fortran 77 Pointers............... 1-42 1.9.7 Extended Precision REAL (KIND=16) Floating-Point Data....................... 1-42 1.9.8 Variable Format Expressions (VFEs)........ 1-42 iii 1.9.9 Notes on Debugger Support................. 1-43 1.9.9.1 DIGITAL Ladebug Debugger Support Notes................................... 1-44 1.9.9.2 dbx Debugger Support Notes.............. 1-45 1.9.10 Notes on Fast Math Library Routines....... 1-46 1.9.11 The DIGITAL Fortran 90 Array Descriptor Format.................................... 1-46 2 New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases 2.1 New Features in Version 2.0................... 2-1 2.2 New Features in Version 1.3................... 2-1 2.3 New Features in Version 1.2................... 2-4 2.4 New Features in Version 1.1................... 2-8 3 Documentation, Corrections, and Other Fortran 90 Documentation 3.1 DIGITAL Fortran 90 Documentation Corrections................................... 3-1 3.1.1 DIGITAL Fortran Installation Guide for DIGITAL UNIX Systems...................... 3-1 3.1.2 Digital Fortran 90 User Manual for Digital UNIX Systems.............................. 3-2 3.1.3 DIGITAL Fortran Language Reference Manual.................................... 3-2 3.2 DIGITAL Fortran 90 Documentation and Online Information................................... 3-2 3.3 DIGITAL Parallel Software Environment Documentation................................. 3-5 3.4 Other Sources of Information About Fortran 90............................................ 3-6 3.5 Online Readers Comments Form.................. 3-8 A Run-Time Messages iv Tables 1-1 Parallel Directives....................... 1-32 A-1 Run-Time Error Messages and Explanations.............................. A-2 v 1 _________________________________________________________________ DIGITAL Fortran 90 Version 5.0 Release Notes This chapter contains release notes for DIGITAL Fortran 90 Version 5.0 (changes for this release are described in Section 1.5). 1.1 Product Terminology Changes This document uses the following new or changed product name terminology: o The product name "DIGITAL Fortran 90" refers to the same product that was previously called "DEC Fortran 90". o The product name "DIGITAL Fortran 77" refers to the same product that was previously called "DEC Fortran". o The new product name "DIGITAL Fortran" refers to the combined packaging of the DIGITAL Fortran 90 and DIGITAL Fortran 77 products. It also refers to the DIGITAL Fortran 90 language. o Starting with Version 4.0, DIGITAL Fortran 90 version numbers are now consistent with DIGITAL Fortran 77 version numbers. o Beginning with Version 3.2C, the "DEC OSF/1" operating system is now called the "DIGITAL UNIX" operating system. 1.2 Overview DIGITAL Fortran 90 conforms to the Fortran 90 Standard (ISO/IEC 1539:1991(E) and ANSI X3.198-1992), includes support for High Performance Fortran (HPF), and contains many but not all of DIGITAL Fortran 77's extensions to the FORTRAN-77 standard. Except in rare instances, a valid FORTRAN-77 program is also a valid Fortran 90 program. DIGITAL Fortran 90 Version 5.0 Release Notes 1-1 The Digital Fortran 90 User Manual for Digital UNIX Systems contains a detailed description of DIGITAL Fortran 77 source language compatibility. Provided the types and shapes of the actual and formal arguments agree, routines compiled with DIGITAL Fortran 77 can call (or be called by) routines compiled with DIGITAL Fortran 90. 1.3 Installation and Minimum Operating Systems Version DIGITAL Fortran 90 Version 5.0 requires Version 4.0 (or later) of the DIGITAL UNIX operating system. For a detailed description of the installation procedure, see the DIGITAL Fortran Installation Guide for DIGITAL UNIX Systems. You may also send comments, questions and suggestions about the DIGITAL Fortran 90 product to the following mail address: fortran@digital.com Please note that this address is for informational inquiries and is not a formal support channel. 1.4 Software Versions The DIGITAL Fortran 90 Version 5.0 kit consists of the following setld sets: o DFABASE500-DIGITAL Fortran 90 and 77 T5.0 for DIGITAL UNIX Alpha Systems o DFADOC500 -DIGITAL Fortran T5.0 Release Notes and Man Pages o DFACOM500 - DIGITAL Fortran T5.0 Tools and their Manpages o DFARTL376 -DIGITAL Fortran Runtime Support for DIGITAL UNIX Systems o PSESHPF107-High Performance Fortran Run-Time Scalar (nonparallel) Library o OTABASE200-DIGITAL Compiled Code Support Library 1-2 DIGITAL Fortran 90 Version 5.0 Release Notes With Version 5.0, the DIGITAL Fortran DFABASE and DFACOM subsets include the DIGITAL Fortran 90 and DIGITAL Fortran 77 compilers and associated documentation. In addition to the subsets listed above, the DIGITAL Fortran kit includes the DIGITAL Fortran 77 subset DFARTL373. This release includes two versions of the DIGITAL Fortran Run-Time Library: o If you will use DIGITAL Fortran 90 (whether or not you also use DIGITAL Fortran 77), you must install DFARTL376. The DFARTL376 subset contains the latest Fortran 90 enhancements and is compatible with DIGITAL Fortran 77. o If you will use only DIGITAL Fortran 77 (not DIGITAL Fortran 90), you can consider installing DFARTL373. The DFARTL373 subset is slightly smaller than DFARTL374 since it does not contain certain new support needed by DIGITAL Fortran 90. o If you need to delete an older version of the DIGITAL Fortran Run-Time Library, delete the older subset before you install a new version. If you have installed multiple versions of the Run-Time Library and you delete one, you must reinstall the desired Run-Time Library version before you can correctly link Fortran programs. The DIGITAL Fortran kit again includes the OTABASE subset (DEC Compiled Code Support Library). The new OTABASE subset supports the use of parallel directives. If you are using DIGITAL UNIX Version 4.0, be aware of the following changes to the OSFCMPLRS operating system subset: o Beginning with DIGITAL UNIX Version 4.0, the OSFCMPLRS subset now consists of multiple subsets: OSFCMPLRS (required for program development), OSFSDE (profiling tools), OSFLIBA (archive libraries), OSFINCLUDE (include files), OSFATOM (atom tools) DIGITAL Fortran 90 Version 5.0 Release Notes 1-3 1.5 New Features, Corrections, and Known Problems in Version 5.0 Version 5.0 is a major release that also includes corrections to problems discovered since Version 4.1 was released. For the Version 5.0 subset numbers, see Section 1.4. For additional information added to these release notes for Version 5.0, see Section 1.9.4. The following topics are discussed: o Version 5.0 New Features o Version 5.0 Corrections o Version 5.0 Known Problems 1.5.1 Version 5.0 New Features The following new DIGITAL Fortran 90 features are now supported: o The -mp compiler option enables parallel processing using directed decomposition. Parallel processing is directed by inserting !$PAR directives in your source code. This type of parallel processing is for shared memory multiprocessor systems. To enable parallel processing across clusters of servers or workstations with !HPF$ directives, continue to use the -wsf compiler option. On a shared memory system, you can use both the -mp and the -wsf options for the same program. This combination provides improved performance for certain programs running mostly on shared memory systems. The new parallel directives: o Use the !$PAR prefix o Are recognized only if compiled with the -mp option o Some of the parallel !$PAR directives include: PARALLEL and END PARALLEL PDO PARALLEL DO PSECTIONS CRITICAL SECTION TASK COMMON 1-4 DIGITAL Fortran 90 Version 5.0 Release Notes o Environment variables control the run-time behavior. For example, MP_THREAD_COUNT specifies how many threads to create. To allow task-local thread storage, you must be using Version 4.0D (code name PTmin) of the DIGITAL UNIX operating system. For more information on these directives, see Section 1.9.2 in these release and the following online file: /usr/lib/cmplrs/fort90/cpar.ps o The -warning_severity keyword compiler option allows you to: - Specify -warning_severity errors to make all compiler warning messages error-level instead of warning-level messages. - Specify -warning_severity stderrors to make standards checking compiler warning messages (-std option) error-level instead of warning-level messages. o The -warn nogranularity compiler option allows you to suppress the NONGRNACC warning message: Unable to generate code for requested granularity. o An internal procedure can now be used as an actual argument. o Support for certain new language extensions for compatibility with DIGITAL Visual Fortran (and Microsoft[R] Fortran Powerstation). These features include the following: - # Constants-constants using other than base 10 - C Strings-NULL terminated strings - Conditional Compilation And Metacommand Expressions ($define, $undefine, $if, $elseif, $else, $endif) - $FREEFORM, $NOFREEFORM, $FIXEDFORM-source file format - $INTEGER, $REAL-selects size - $FIXEDFORMLINESIZE-line length for fixed form source - $STRICT, $NOSTRICT-F90 conformance DIGITAL Fortran 90 Version 5.0 Release Notes 1-5 - $PACK-structure packing - $ATTRIBUTES ALIAS-external name for a subprogram or common block - $ATTRIBUTES C, STDCALL-calling and naming conventions - $ATTRIBUTES VALUE, REFERENCE-calling conventions - \ Descriptor-prevents writing an end-of-record mark - Ew.dDe and Gw.dDe Edit Descriptors-similar to Ew.dEe and Gw.dEe - 7200 Character Statement Length - Free form infinite line length - $DECLARE and $NODECLARE == IMPLICIT NONE - $ATTRIBUTES EXTERN-variable allocated in another source file - $ATTRIBUTES VARYING-variable number of arguments - $ATTRIBUTES ALLOCATABLE-allocatable array - Mixing Subroutines/Functions in Generic Interfaces - $MESSAGE-output message during compilation - $LINE == C's #line - INT1 converts to one byte integer by truncating - INT2 converts to two byte integer by truncating - INT4 converts to four byte integer by truncating - COTAN returns cotangent - DCOTAN returns double precision cotangent - IMAG returns the imaginary part of complex number - IBCHNG reverses value of bit - ISHA shifts arithmetically left or right - ISHC performs a circular shift - ISHL shifts logically left or right 1-6 DIGITAL Fortran 90 Version 5.0 Release Notes The following new High Performance Fortran (HPF) features and corrections have been added for DIGITAL Fortran Version 5.0: o The new SHADOW directive, as defined in Version 2.0 of the HPF specification, is now supported. SHADOW is now a separate HPF directive, rather than a keyword inside the DISTRIBUTE directive. o Mapped variables with the POINTER attribute are now handled in parallel. This capability is an approved extension of the HPF specification. o Beginning with version 2.0 of the HPF specification (DIGITAL Fortran Version 5.0), the meaning of descriptive syntax has changed. Descriptive mapping is now a weak assertion that the programmer believes that no data communication is required at the procedure interface. If this assertion is wrong, the data communication will in fact occur. Existing programs with descriptive mapping directives will continue to compile and run with no modification and no performance penalty. o The following HPF Local Library routines are now supported: - GLOBAL_LBOUND - GLOBAL_UBOUND o The REDUCTION clause in INDEPENDENT directives is now supported. o Previous versions required procedures called from inside INDEPENDENT DO loops to HPF_SERIAL in order to obtain parallel execution. This restriction is now lifted. o Some bugs in implementing whole structure references in IO and assignment were fixed. o Aligning components of derived types is now supported. o The restriction that statements with scalar subscripts are not eligible for the nearest-neighbor optimization is now removed. Statements with scalar subscripts may now be eligible for the nearest-neighbor optimization if that array dimension is (effectively) mapped serially. DIGITAL Fortran 90 Version 5.0 Release Notes 1-7 o Nearest-neighbor assignments with derived types are now eligible for the nearest-neighbor optimization. 1.5.2 Version 5.0 Corrections Since Version 4.1, the following corrections have been made: o Fix SIGN intrinsic to handle -0. o Fix LOC intrinsic and %LOC of a derived type field. o Fixed debug information for dynamic character variable (such as character*(i) c). o Add debugging support for integer (Cray) pointers. o Fix storing to the return value of a function returning character in a containing internal routine. o Fix Nullification of a character*n pointer argument. o Fix using passed length argument in a containing internal routine. o Fix compiler abort when a source line is longer than 1024 characters in freeform source file. o Fix using IOLENGTH in a INQUIRE statement. o Fix FORALL problem of the form "X(X(I)) =." o Fix contained functions returning a implicitly initialized derived-type. o Better diagnostics for invalid programs. o Fix compiler abort when using Nullification of a pointer in a MODULE. o Fix a certain types of USE of a MODULE with rename list. o Fix using -extend_source:80 and -pad_source. o Fix compiler abort when using do-loop style implicitly initialized derived-types in a MODULE. o Sign-extending INTEGER*2 parameter constants. o Flag invalid nested internal procedures. o Fix compiler abort of USE of a MODULE with namelist variables in rename list. 1-8 DIGITAL Fortran 90 Version 5.0 Release Notes o Issue a warning message for a intrinsic with wrong argument type and treat it as an external. o Issue a warning message for having a SAVE common block data object. o Fix compiler abort of USE of a MODULE with namelists. o Fix using SIZEOF(common_block_array) in a PARAMETER statement. o Fix using READONLY keyword as first keyword in an OPEN statement. o Allow record name to be the same as a structure name. o Fix parameter character constant with embedded NULL character. o Fix compiler abort when same name used as a structure and derived type. o Allow BLOCKSIZE keyword in an INQUIRE statement. o Allow a record in a SAVE statement. o Allow a module to have the name "procedures". o Do not flag IABS intrinsic function as nonstandard. o Do not flag DOUBLE COMPLEX as nonstandard. o Treat POPCNT, POPPAR, LEADZ as external functions. o Put out an error message for ptr => pack(...). o Treat C$DOACROSS as a comment. o Issue an error message for invalid derived type parameter constant. o Fix compiler abort when passing an array constructor as an actual argument. o Fix using derived-type components that are same as intrinsic names. o Fix an incorrect warning about "explicit-shaped array is being passed to a routine that expects a pointer or assumed-shape array". o Fix a problem with -warn:errors and -stand:f90 options. Nonstandard messages should be error messages. DIGITAL Fortran 90 Version 5.0 Release Notes 1-9 o Fix incorrect results when compiled a program with - assume:dummy_aliasing. o Do not flag BOZ constant as nonstandard. o Do not flag Z format as nonstandard. o Allow 511 continuation lines. o Put out a standard warning for using character constant in DATA statement. o Fix using TRANSFER in initialization. o Fix a problem with user defined assignment statement. o Issue an error message when passing or receiving an optional argument by value. o Fix an invalid message about return value of a function is not defined when the function returns an initialized derived type. o Fix a compiler abort with "text handle table overflow" message. o Fix a compiler abort using a SAVE statement. o Fix a problem when an existing operator is overloaded. o Fix argument checking of intrinsic subroutines. o Fix generic interface of elemental functions. o Issue an argument mismatch warning message for using an integer with a statement function that takes real argument. o Fix compiler directives processing. o Fix a compiler abort using an invalid PARAMETER array. o Issue an error message for SAVE of an ENTRY result variable. o Fix using UNION within derive type. o Fix a compiler internal error when using C and REFERENCE attributes on a function name. o Fix a compiler internal error when using ASSOCIATED of a function returning a pointer. o Add support for passing complex by value. 1-10 DIGITAL Fortran 90 Version 5.0 Release Notes o Fix pointer assignment with a character substring. o Allow using ICHAR in an array constructor within the initialization part of an array declaration. o Fix a problem with using UNION declaration within the derived type. o Allow exporting of a module procedure which has a name that is the same as a generic name. o Fix a problem with using user defined assignment operation. o Allow specifying NaNs in the PARAMETER statement. o Allow D source line to continue a non-D source line. o Fix a problem in array initialization processing. o Cray pointees that were being allocated statically are now correctly given no storage class. o Using assume shape array within a contained routine no longer produces an internal compiler error. o An error message is now given for invalid keyword values given for an I/O statement's keyword. o Declarations of the type "character, allocatable :: field*7(:)", in which the array shape specifier comes after the length specification in a deferred-shape character array no longer produces an internal compiler error. o When assigning a derived type variable with a structure constructor, if a character scalar is supplied to an character array component, every elements of the array is assigned with the character scalar value. o The MVBITS intrinsic now gives correct result if its 4th argument is a non-lowerbound subscripted array element. o Reference of a character function, where the length of its return value is dependent on one or more of its arguments, no longer produces an internal compiler error. o Pointer assignment should now work properly when the target is a component of an allocatable array with a lower bound different of 1. DIGITAL Fortran 90 Version 5.0 Release Notes 1-11 o Long NAMELISTs no longer causes a compiler internal error. o The compiler now prints out better error messages for the PDONE directive. o When initializing a derived type variable with a structure constructor, if a scalar is supplied to an array component, every elements of the array is initialized with the scalar value. o Allow %fill in STRUCTURE declarations using F90 syntax, such as: integer :: %fill. o Using unary "-" operator with record fields should now give correct results. o Use of NEAREST with two different KIND REAL arguments no longer gets a nonstandard warning. o Allow SIZEOF of assumed size record field. o Module importing has been improved. If a module is USEd in both the host and its internal procedure, the module is now only imported once by the compiler. o A module that contains "PRIVATE" followed by "PUBLIC variable" no longer gets incorrect error message. o Optional comma in DO with label, such as: label: DO, JJ = 1, N, 1 no longer gets incorrect syntax error. o Allow a dummy argument to have the same name as a structure field. o A module that contains USE module, ONLY : var no longer gets internal compiler error. o A component of a derived-type with a name that starts with FILL no longer gets a syntax error. o A PDONE directive in a statically-scheduled PDO loop no longer gets an error message. o Allow a variable with '_' in its name to be used in a variable format expression. o Fix for array references in CRITICAL SECTION directive. o Set NOWAIT for paralleldo directive (the region waits, so do NOT make the loop wait as well). 1-12 DIGITAL Fortran 90 Version 5.0 Release Notes o Allow variables in COMMON/EQUIVALENCE on local, lastlocal, and reduction lists. Create and use new local variables in parallel do scopes for these variables. o Allow c$copyin of EQUIVALENCE/COMMON variables. o Fix -mp (ordered) bug. o No longer import any definitions if a module is used with the "USE module_name, ONLY:" statement. o Fix a compile time stack overflow problem. o Fix a "$IF DEFINED()" problem when a routine is defined between the conditional compilation. o Put out error message for an invalid use of "TYPE (type_ name)" statement. o Allow RECORD in a NAMELIST. o Fix using "# line_number" in DATA statement. o The -pad_source option now properly pads Hollerith literals that are continued across source records. o Add standards warning for using two consecutive operators in an expression. o Allow POINTER attribute for character entities whose length is specified by a variable expression or an * (assumed length character). o Do not flag as nonstandard when all of the objects in the EQUIVALENCE set are of type default integer, default real, double precision, default complex, default logical, or numeric sequence type. o Add standards warning for assignment to the host associated variable in a PURE function. o Add standards warning for using a dummy argument in a specification-expr as the argument of one of the intrinsic functions BIT_SIZE, KIND, LEN, or the numeric inquiry functions. o Compiling BLOCK DATA with -recursive no longer causes a compiler internal error. o A special usage of equivalenced variables in parallel no longer causes a compiler internal error. DIGITAL Fortran 90 Version 5.0 Release Notes 1-13 o DO loop variables are now set to be PRIVATE by default in a parallel region. o The scope of C$CHUNK and C$MP_SCHEDTYPE directives is restricted to one program unit. o Fix a bug in a special usage of passing internal procedure as argument. 1.5.3 Version 5.0 Known Problems The following know problem with DIGITAL Fortran exists in version 5.0: o Global variables referenced by statement functions inside parallel regions should not reference local instances of those variable names. The following example should print 42.0 {10 times} not 0.0: real x,y(10) statement(a) = a + x x = 41.0 !$par parallel local(x) x = -1.0 !$par pdo local(i) do i=1,10 y(i) = statement(1.0) end do !$par end parallel type *,y end 1.6 New Features and Corrections in Version 4.1 Version 4.1 is a maintenance release that contains a limited number of new features and corrections to problems discovered since Version 4.0 was released. For additional information added to these release notes for Version 4.1, see Section 1.9.4. The following new features have been added for DIGITAL Fortran 90 Version 4.1: o This release includes a partial implementation of the proposed Fortran 95 standard. 1-14 DIGITAL Fortran 90 Version 5.0 Release Notes The following features of the proposed Fortran 95 standard have been implemented by this version of DIGITAL Fortran 90 and are supported when using the f90 or f95 commands: - FORALL statement and construct (implemented prior to Version 4.1) - Automatic deallocation of ALLOCATABLE arrays (implemented prior to Version 4.1) - Dim argument to MAXLOC and MINLOC (implemented prior to Version 4.1) - PURE user-defined subprograms (implemented prior to Version 4.1) - ELEMENTAL user-defined subprograms (a restricted form of a pure procedure) - Pointer initialization (initial value) - The NULL intrinsic to nullify a pointer - Derived-type structure initialization - CPU_TIME intrinsic subroutine - Kind argument to CEILING and FLOOR intriniscs - Nested WHERE constructs, masked ELSEWHERE statement, and named WHERE constructs - Comments allowed in namelist input - Generic identifier in END INTERFACE statements - Detection of Obsolescent and/or Deleted features listed in the proposed Fortran 95 standard For more information on Fortran 95 features, see the Section 1.9.3. o The f95 command is now available for use with the -std option: - To perform standards conformance checking against the Fortran 90 standard, use the f90 command with -std. Using f90 with -std will issue messages for features (such as FORALL) that have recently been added to the proposed Fortran 95 standard (as well as other extensions to the Fortran 90 standard). DIGITAL Fortran 90 Version 5.0 Release Notes 1-15 - To perform standards conformance checking against the Fortran 95 standard, use the f95 command with -std. Using f95 with -std will not issue messages for features (such as FORALL) that have been added to the proposed Fortran 95 standard, but will issue messages for extensions to the Fortran 95 standard. For more information on Fortran 95 features, see the Section 1.9.3. o The -intconstant option has been added. Specify the -intconstant option to use DIGITAL Fortran 77 rather than Fortran 90 semantics to determine kind of integer constants. If you do not specify -intconstant, Fortran 90 semantics are used. Fortran 77 semantics require that all constants are kept internally by the compiler in the highest precision possible. For example, if you specify -intconstant, an integer constant of 14 will be stored internally as INTEGER(KIND=8) and converted by the compiler upon reference to the corresponding proper size. Fortran 90 specifies that integer constants with not explicit KIND are kept internally in the default INTEGER kind (KIND=4 by default). Similarly, the internal precision for floating-point constants is controlled by the -fpconstant option. o The -pad_source option has been added. Specify the -pad_source option to request that source records shorter than the statement field width are to be padded with spaces on the right out to the end of the statement field. This affects the interpretation of character and Hollerith literals that are continued across source records. The default is -nopad_source, which causes a warning message to be displayed if a character or Hollerith literal that ends before the statement field ends is continued onto the next source record. To suppress this warning message, specify the -warn nousage option. Specifying -pad_source can prevent warning messages associated with -warn usage. o The -warn usage option has been added. 1-16 DIGITAL Fortran 90 Version 5.0 Release Notes Specify the -warn nousage option to suppress warning messages about questionable programming practices which, although allowed, often are the result of programming errors. For example, a continued character or Hollerith literal whose first part ends before the statement field ends and appears to end with trailing spaces is detected and reported by -warn usage. The default is -warn usage. o The -arch keyword option has been added. This option determines the type of Alpha chip code that will be generated for this program. The -arch keyword option uses the same keywords as the -tune keyword option. Whereas the -tune keyword option primarily applies to certain higher-level optimizations for instruction scheduling purposes, the -arch keyword option determines the type of code instructions generated for the program unit being compiled. DIGITAL UNIX Version 4.0 and subsequent releases provide an operating system kernel that includes an instruction emulator. This emulator allows new instructions, not implemented on the host processor chip, to execute and produce correct results. Applications using emulated instructions will run correctly, but may incur significant software emulation overhead at runtime. All Alpha processors implement a core set of instructions. Certain Alpha processor versions include additional instruction extensions. Supported -arch keywords are as follows: - -arch generic generates code that is appropriate for all Alpha processor generations. This is the default. Running programs compiled with the generic keyword will run all implementations of the Alpha architecture without any instruction emulation overhead. - -arch host generates code for the processor generation in use on the system being used for compilation. DIGITAL Fortran 90 Version 5.0 Release Notes 1-17 Running programs compiled with this keyword on other implementations of the Alpha architecture might encounter instruction emulation overhead. - -arch ev4 generates code for the 21064, 21064A, 21066, and 21068 implementations of the Alpha architecture. Running programs compiled with the ev4 keyword will run without instruction emulation overhead on all Alpha processors. - -arch ev5 generates code for some 21164 chip implementations of the Alpha architecture that use only the base set of Alpha instructions (no extensions). Running programs compiled with the ev5 keyword will run without instruction emulation overhead on all Alpha processors. - -arch ev56 generates code for some 21164 chip implementations that use the byte and word manipulation instruction extensions of the Alpha architecture. Running programs compiled with the ev56 keyword might incur emulation overhead on ev4 and ev5 processors, but will still run correctly on DIGITAL UNIX Version 4.0 (or later) systems. - -arch pca56 generates code for the 21164PC chip implementation that uses the byte and word manipulation instruction extensions and multimedia instruction extensions of the Alpha architecture. Running programs compiled with the pca56 keyword might incur emulation overhead on ev4 and ev5 and ev56 processors, but will still run correctly on DIGITAL UNIX Version 4.0 (or later) systems. o In addition to ev4, ev5, generic, and host, The ev56 and pca56 keywords are now supported for the -tune option. The following new High Performance Fortran features have been added for DIGITAL Fortran 90 Version 4.1: o Transcriptive data distributions are now supported. 1-18 DIGITAL Fortran 90 Version 5.0 Release Notes o The INHERIT directive can now be used to inherit distributions, as well as alignments. o Distributed components of user-defined types are now handled in parallel. This is not part of standard High Performance Fortran (HPF), but is an approved extension. o The GLOBAL_SHAPE and GLOBAL_SIZE HPF Local Library routines are now supported. o There is a new compile-time option named -show hpf, which replaces the -show wsfinfo option. The -show hpf option provides performance information at compile time. Information is given about inter-processor communication, temporaries created at procedure boundaries, optimized nearest-neighbor computations, and code that is not handled in parallel. You can choose the level of detail you wish to see. o New example programs are available in the following directory: /usr/examples/HPF These new features are described in the DIGITAL High Performance Fortran 90 HPF and PSE Manual. The corrections made for DIGITAL Fortran 90 Version 4.1 include the following: o Fix compiler abort with certain types of pointer assignment. o Fix incorrect error message for nested STRUCTUREs. o Fix inconsistent severity for undeclared variable message with IMPLICIT NONE or command line switch. o Fix incorrect error about passing LOGICAL*4 to a LOGICAL*1 argument. o Add standards warning for non-integer expressions in computed GOTO. o Do not flag NAME= as nonstandard in INQUIRE. o Add standards warning for AND, OR, XOR intrinsics. o VOLATILE attribute now honored for COMMON variables. o Allow COMPLEX expression in variable format expression. DIGITAL Fortran 90 Version 5.0 Release Notes 1-19 o Allow adjustable array to be declared AUTOMATIC (AUTOMATIC declaration is ignored.) o Honor -automatic (/RECURSIVE) in main program. o Fix incorrect parsing error when DO-loop has bounds of -32768,32767. o Fix compiler abort when extending generic intrinsic. o Fix SAVEd variable in inlined routine that didn't always get SAVEd. o Fix compiler abort with initialization of CHARACTER(LEN=0) variable o Correct values of PRECISION, DIGITS, etc. for floating types. o Fix incorrect value of INDEX with zero-length strings. o Correct value for SELECTED_REAL_KIND in PARAMETER statement. o Correct compile-time result of VERIFY. o For OpenVMS only, routine using IARGPTR or IARGCOUNT corrupts address of passed CHARACTER argument. o Standards warning for CMPLX() in initialization expression. o Fix compiler abort when %LOC(charvar) used in statement function. o Fix incorrect initialization of STRUCTURE array. o Fix compiler abort with large statement function. o RESHAPE of array with a zero bound aborts at runtime. o For OpenVMS only, /INTEGER_SIZE now correctly processed. o SIZEOF(SIZEOF()) is now 8. o Fix error parsing a derived type definition with a field name starting with "FILL_". o With OPTIONS /NOI4, compiler complained of IAND with arguments of an INTEGER*4 variable and a typeless PARAMETER constant. o Fix incorrect standards warning for DABS. 1-20 DIGITAL Fortran 90 Version 5.0 Release Notes o Add error message for ambiguous generic. o Corrected error parsing field array reference in IF. o Bit constants in argument lists are typed based on value, not "default integer". o Allow module to use itself. o Fix standards warning for Hollerith constant. o For OpenVMS only, FOR$RAB is always INTEGER*4. o For OpenVMS only, wrong values for TINY, HUGE for VAX floating. o For OpenVMS only, EXPONENT() with /FLOAT=D_FLOAT references non-existent math routine. o The DIGITAL Fortran run-time library incorrectly failed to release previously allocated memory when padding Fortran 90 input. o The DIGITAL Fortran run-time library would incorrectly go into an infinite loop when an embedded NULL character value was found while performing a list-directed read operation. o The DIGITAL Fortran run-time library would incorrectly treat an end-of-record marker as a value separator while performing a list-directed read operation. o The DIGITAL Fortran run-time library incorrectly produced a "recursive I/O operation" error after a user has made a call to flush() to flush a unit which was not previously opened, then attempted to perform any I/O operation on the unit o The DIGITAL Fortran run-time library would incorrectly fail to return an end-of-record error for certain non- advancing I/O operations. This occurred when attempting to read into successive array elements while running out of data. o The DIGITAL Fortran run-time library, when it encountered the ":" edit descriptor at the end of the input record did not stop reading the next record, causing errors like "input conversion". DIGITAL Fortran 90 Version 5.0 Release Notes 1-21 o The DIGITAL Fortran run-time library did not handle implied DO loops on I/O lists when non-native file support (-convert or equivalent conversion method) was in use. The following are corrections for HPF users in this version: o Expanded I/O Support, including support for all features, including: complicated I/O statements containing function calls, assumed size arrays, or variables of derived types with pointer components, and array inquiry intrinsics using the implied DO loop index. In addition, non-advancing I/O (except on stdin and stdout) now works correctly if every PSE peer in the cluster has a recent version of the Fortran run-time library (fortrtl_371 or higher). o NUMBER_OF_PROCESSORS and PROCESSORS_SHAPE in EXTRINSIC(HPF_SERIAL) routines o Restriction lifted on user-defined types in some FORALLs o Declarations in the specification part of a module o EXTRINSIC(SCALAR) changed to EXTRINSIC(HPF_SERIAL) These new corrections are described in more detail in the Parallel Software Environment (PSE) release notes. 1.7 New Features in Version 4.0 The following f90 command options were added for DIGITAL Fortran 90 Version 4.0: o Specify the -assume byterecl option to:: - Indicate that the OPEN statement RECL unit for unformatted files is in byte units. If you omit - assume byterecl, DIGITAL Fortran 90 expects the OPEN statement RECL value for unformatted files to be in longword (four-byte) units. - Return the record length value for an INQUIRE by output list (unformatted files) in byte units. If you omit -assume byterecl, DIGITAL Fortran 90 returns the 1-22 DIGITAL Fortran 90 Version 5.0 Release Notes RECL value for an INQUIRE by output list in longword (four-byte) units. o The -check nopower option allows arithmetic calculations that result in 0**0 or a negative number raised to an integer power of type real (such as -3**3.0) to be calculated, rather than stop the program. If you omit - check nopower for such calculations, an exception occurs and the program stops (default is -check:power). For example, if you specified -check:nopower, the calculation of the expression 0**0 results in 1 and the expression -3**3.0 results in -9. o Specify -hpf_matmul to use matrix multiplication from the HPF library. Omitting the -hpf_matmul option uses inlined intrinsic code that is faster for small matrices. For nonparallel compilations, specifying - hpf_matmul to use the HPF library routine is faster for large matrices. o The -names keyword option controls how DIGITAL Fortran 90 handles the case-sensitivity of letters in source code identifiers and external names: - Using -names as_is requests that DIGITAL Fortran 90 distinguish between uppercase and lowercase letters in source code identifiers (treats uppercase and lowercase letters as different) and distinguish between uppercase and lowercase letters in external names. - Using -names lowercase (default) requests that DIGITAL Fortran 90 not distinguish between uppercase and lowercase letters in source code identifiers (treats lowercase and uppercase letters as equivalent) and force all letters to be lowercase in external names. - Using -names uppercase requests that DIGITAL Fortran 90 not distinguish between uppercase and lowercase letters in source code identifiers (treats lowercase and uppercase letters as equivalent) and force all letters to be uppercase in external names. DIGITAL Fortran 90 Version 5.0 Release Notes 1-23 o The -noinclude option prevents searching for include files in the /usr/include directory. This option does not apply to the directories searched for module files or cpp files. o The -O5 option activates both the software pipelining optimization (-pipeline) and the loop transform optimizations (-transform_loops). You can also specify -notransform_loops or -nopipeline with -O5. If you also specify the -wsf option to request parallel processing, you cannot use the -O5 option. o The -pipeline option activates the only software pipelining optimization (previously done only by - O5). The software pipelining optimization applies instruction scheduling to certain innermost loops, allowing instructions within a loop to "wrap around" and execute in a different iteration of the loop. This can reduce the impact of long-latency operations, resulting in faster loop execution. Software pipelining also enables the prefetching of data to reduce the impact of cache misses. In certain cases, software pipelining improves run-time performance (separate timings are suggested). o The following -reentrancy keyword options specify the level of thread-safe reentrant run-time library support needed: ________________________________________________________ Option_Name________Description__________________________ -reentrancy none Informs the DIGITAL Fortran RTL that the program will not be relying on threaded or asynchronous reentrancy. Therefore the RTL need not guard against such interrupts inside the RTL. This is the default. 1-24 DIGITAL Fortran 90 Version 5.0 Release Notes ________________________________________________________ Option_Name________Description__________________________ -reentrancy Informs the DIGITAL Fortran RTL that asynch the program may contain asynchronous handlers that could call the RTL. Therefore the RTL will guard against asynchronous interrupts inside its own critical regions. -reentrancy Informs the DIGITAL Fortran RTL threaded that the program is multithreaded, such as those using the DECthreads library. Therefore the RTL will use thread locking to guard its own critical regions. To use the threaded libraries, also specify -threads. -noreentrancy______The_same_as_-reentrancy_none.________ o The -S option generates a .s file, which can be assembled. This option is intended for systems running DIGITAL UNIX Version 4.0 or later, which has certain new Assembler features. Certain complex programs that use modules or common blocks compiled with -S may not generate code completely acceptable to the Assembler. o The -speculate keyword option supports the speculative execution optimization: o Use -speculate all to perform the speculative execution optimization on all routines in the program. All exceptions within the entire program will be quietly dismissed without calling any user- mode signal handler. o Use -speculate by_routine to perform the speculative execution optimization on all routines in the current compilation unit (set of routines being compiled), but speculative execution will not be performed for routines in other compilation units in the program. o Use -speculate none or -nospeculate to suppress the speculative execution optimization. This is the default. DIGITAL Fortran 90 Version 5.0 Release Notes 1-25 The speculative execution optimization reduces instruction latency stalls to improve run-time performance for certain programs or routines. This optimization evaluates conditional code (including exceptions) and moves instructions that would otherwise be executed conditionally to a position before the test, so they are executed unconditionally. Speculative execution does not support some run-time error checking, since exception and signal processing (including SIGSEGV, SIGBUS, and SIGFPE) is conditional. When the program needs debugging or while testing for errors, use -speculate none (default). o Specifying -threads requests that the linker use threaded libraries. This is usually used with - reentrancy threaded. o The -transform_loops option supports a group of optimizations that improve the performance of the memory system and can apply to multiple nested loops. The loops chosen for loop transformation optimizations are always counted loops (counted loops include DO or IF loops, but not uncounted DO WHILE loops). In certain cases, loop transformation improves run-time performance (separate timings are suggested). o Specify -nowsf_main to indicate that the HPF global routine being compiled will be linked with a main program that was not compiled with -wsf. For more information on f90 command options, see the Digital Fortran 90 User Manual for Digital UNIX Systems, Chapter 3, or f90(1). In addition to the f90 command-line options, the following new or changed features were added for Version 4.0: o The random_number() intrinsic (as of Version 4.0) uses two separate congruential generators together to produce a period of approximately 10**18, and produces real pseudorandom results with a uniform distribution in (0,1). It accepts two integer seeds, the first of which is reduced to the range [1, 2147483562]. The second seed is reduced to the range [1, 2147483398]. This means that the generator effectively uses two 31-bit seeds. 1-26 DIGITAL Fortran 90 Version 5.0 Release Notes The new algorithm behaves differently from one provided prior to Version 4.0 in the following ways: - Both seeds are active and contribute to the random number being produced. - If the given seeds are not in the ranges given above, they will be reduced to be in those ranges. - The sequences of random numbers produced by the new generator will be different from the sequences produced by the old generator. For more information on the algorithm, see: o Communications of the ACM vol 31 num 6 June 1988, entitled Efficient and Portable Combined Random Number Generators by Pierre L'ecuyer o Springer-Verlag New York, N. Y. 2nd ed. 1987, entitled A Guide to Simulation by Bratley, P., Fox, B. L., and Schrage, L. E. For an example program, see Section 1.9.5. o The implementation of the MATMUL intrinsic procedure was changed for this release. Previously the compiler called a routine in the scalar HPF library to perform the operation. As of this release, the compiler generates optimized inline code for the MATMUL intrinsic with a significant increase in the performance when the size of the array arguments are small. To use previous implementation of the MATMUL intrinsic (routine in the scalar HPF library), specify -hpf_ matmul. o The cDEC$ ALIAS directive The cDEC$ ALIAS directive is now supported in the same manner as in DIGITAL Fortran 77. This directive provides the ability to specify that the external name of an external subprogram is different than the name by which it is referenced in the calling subprogram. This feature can be useful when porting code between OpenVMS and UNIX systems where different routine naming conventions are in use. DIGITAL Fortran 90 Version 5.0 Release Notes 1-27 For more information on the cDEC$ ALIAS directive, see the Digital Fortran 90 User Manual for Digital UNIX Systems. o The cDEC$ ATTRIBUTES directive The cDEC$ ATTRIBUTES directive lets you specify properties for data objects and procedures. These properties let you specify how data is passed and the rules for invoking procedures. This directive is intended to simplify mixed language calls with DIGITAL Fortran 90 routines written in C or Assembler. For more information on the cDEC$ ATTRIBUTES directive, see Digital Fortran 90 User Manual for Digital UNIX Systems. o An additional math library allows use of optimizations for a series of square root calculations. The library file libm_4sqrt ships on the DIGITAL Fortran 90 Version 4.0 kit (and DIGITAL Fortran 77 Version 4.0). These optimizations improve run-time performance when a series of square root calculations occur within a counted loop. o Enhanced support for the FORALL statement and construct The FORALL construct now allows the following statements in the forall body: - Pointer assignment statement - FORALL statement or construct (nested FORALL) - WHERE statement or construct Please note that each statement in the FORALL body is executed completely before execution begins on the next FORALL body statement. The compiler now correctly defines the scope of a FORALL subscript name to be the scope of the FORALL construct. That is, the subscript name is valid only within the scope of the FORALL. Its value is undefined on completion of the FORALL construct. o OPTIONS statement options can now be abbreviated (for compatibility with DIGITAL Fortran 77). 1-28 DIGITAL Fortran 90 Version 5.0 Release Notes o The -vms option now supports use of /LIST or /NOLIST in an INCLUDE statement (for compatibility with DIGITAL Fortran 77). o To improve run-time performance, new optimizations are now available and certain improvements have been made, including: - Certain intrinsic procedures specific to Fortran 90 (not available in FORTRAN-77) - Subprogram calls with array arguments - New command-line options that activate new optimizations, including the loop transformation optimizations (-transform_loops or -O5) and the speculative execution optimization (-speculate keyword). The software pipelining optimization is now activated by using -pipeline or -O5. o Variable formats expressions (VFEs) are now allowed in quoted strings. o Invalid formats in quoted strings are now detected at compile-time rather than run-time. For more information on compatability with DIGITAL Fortran 77, see the revised Digital Fortran 90 User Manual for Digital UNIX Systems, Appendix A. 1.8 Known Limitations The following limitations exist Version 5.0: o When using the -mp option, if a user declares a parallel DO loop which accesses an INTEGER*1 array (one element at a time), the results may not be incorrect unless the user also specifies -granularity byte. In general, if a parallel loop tries to store things of "small" size into packed spaces, the granularity needs to be set to that size. However, while this "fixes" the program to do the right thing, it is a dreadful performance slowdown. It would be better to execute such code serially. DIGITAL Fortran 90 Version 5.0 Release Notes 1-29 o When using the -mp option, inside a DO that has been designated a "parallel DO", another DO of any form will be flagged as an error. This bug will be fixed in the next FT kit. o If you specify the -wsf option to request parallel processing, the following DIGITAL Fortran 90 language features are not supported: - REAL (KIND=16) (same as REAL*16) data type - DIGITAL Fortran 77 implementation of CRAY-style pointers - Variable format expressions (VFEs). For example: FORMAT(I4) - Initialization of DIGITAL Fortran 77 structures. For example: STRUCTURE /S/ INTEGER I / 100 / END STRUCTURE o If you previously installed the PSESHPF subset during a field test, delete that subset before you install DIGITAL Fortran 90. For information on using setld to check for and delete subsets, see the DIGITAL Fortran Installation Guide for DIGITAL UNIX Systems. The following limitations were fixed in Version 2.0 or previous releases: o The f90 command option -wsf and its related options are now supported. o Allocatable arrays that are allocated but not deallocated before routine exit are now deallocated upon exit from routine. o The f90 command options -cord and -feedback described in the documentation have now been implemented. 1-30 DIGITAL Fortran 90 Version 5.0 Release Notes 1.8.1 Limitations on High Performance Fortran Specification Support DIGITAL Fortran 90 implements full HPF as specified in the High Performance Fortran Language Specification Version 2.0, with the exception of the following features: o Nested FORALLs and WHERE constructs within FORALLs o The GRADE_UP and GRADE_DOWN library routines Also, there are some restrictions placed on the use of some HPF constructs; these restrictions are described in the DIGITAL High Performance Fortran 90 HPF and PSE Manual. DIGITAL Fortran 90 supports the -std option to check for Fortran 90 standard conformance. When the -std option is not specified, the following HPF V1.1 language features are checked for syntactic and semantic correctness, but are otherwise ignored. When the -std option is specified, these are not checked, and are always treated as comments: o The HPF DYNAMIC directive o The HPF INDEPENDENT directive o The HPF REALIGN directive o The HPF REDISTRIBUTE directive 1.8.2 Known Problems with High Performance Fortran Support For a list of known problems and suggested workarounds in HPF support, see the Parallel Software Environment (PSE) release notes. 1.9 Additional Information This section contains information that supplements the DIGITAL Fortran 90 documentation. 1.9.1 The DIGITAL Fortran 90 Home Page If you have Internet access and a World Wide Web (WWW) viewer, you are welcome to view the following: o The DIGITAL Fortran 90 home page, located at the following URL: http://www.digital.com/fortran DIGITAL Fortran 90 Version 5.0 Release Notes 1-31 o The Digital Equipment Corporation home page, located at the following URL: http://www.digital.com 1.9.2 Parallel Directives Table_1-1_Parallel_Directives______________________________ DirectInterpretation_______________________________________ c$PAR PARALLEL Specifies a region of a program that will be executed by multiple threads until c$PAR END PARALLEL is encountered. This region is referred to as a parallel region. Worksharing directives such as c$PAR PDO and c$PAR PSECTIONS are used to divide the execution of the statements in the parallel region into units of work and to distribute those units so that each unit is executed by a single thread. c$PAR PARALLEL takes an optional list of arguments that specifies whether the DIGITAL Fortran statements in the parallel region are to be executed in parallel by multiple threads or serially by a single thread and whether variables are SHARED or LOCAL. c$PAR PDO This worksharing directive specifies that each iteration of the enclosed DIGITAL Fortran iterated DO construct is a unit of work that can be scheduled on a single thread. This directive takes a list of arguments that specifies whether variables are LOCAL, LASTLOCAL, or REDUCTION; and how iterations are divided among threads and whether this is deferred until run time. When END PDO is encountered, an implicit BARRIER is erected and all threads must wait until the last thread finishes. This can be overridden using the NOWAIT option. [1]c_is_either_C,_c,_!,_or_*_______________________________ (continued on next page) 1-32 DIGITAL Fortran 90 Version 5.0 Release Notes Table_1-1_(Cont.)_Parallel_Directives______________________ DirectInterpretation_______________________________________ c$PAR PARALLEL DO This worksharing directive combines the functions of the c$PAR PARALLEL and the c$PAR PDO directives. It has the same function as a c$PAR PARALLEL directive immediately followed by a c$PAR PDO directive. For compatibility purposes, the c$DOACROSS directive name is a legal substitute for the c$PAR PARALLEL DO directive name. c$PAR PSECTIONS This noniterative worksharing directive specifies one or more sections of independent DIGITAL Fortran statements that are executed in parallel. Each section must be preceded by the c$PAR SECTION directive, but is optional for the first section. This directive takes an argument that lists LOCAL variables. When END PSECTIONS is encountered, an implicit BARRIER is erected and all threads must wait until the last thread finishes. This can be overridden using the NOWAIT option. c$PAR SINGLE PROCESS This worksharing directive specifies a block of DIGITAL Fortran statements that will be executed by a single thread. This directive takes an argument that lists LOCAL variables. When END SINGLE PROCESS is encountered, an implicit BARRIER is erected and all threads must wait until the last thread finishes. This can be overridden using the NOWAIT option. c$PAR CRITICAL SECTION [1]c_is_either_C,_c,_!,_or_*_______________________________ (continued on next page) DIGITAL Fortran 90 Version 5.0 Release Notes 1-33 Table_1-1_(Cont.)_Parallel_Directives______________________ DirectInterpretation_______________________________________ This synchronization directive specifies one or more DIGITAL Fortran statements, referred to as a crital section, that can be executed by only one thread at a time. When a thread enters the critical section, a latch variable is set to closed and all other threads are locked out. When the thread exits the critical section, the latch variable is set to open, allowing another thread access to the critical section. c$PAR BARRIER This synchronization directive, when reached by a thread, blocks further execution by that thread until all threads have reached the BARRIER. This directive is allowed only within a PARALLEL/END PARALLEL directive pair and is not allowed within any worksharing directive. c$PAR PDONE This directive specifies that the current parallel iterated DO loop be terminated early. Any iterations already assigned to threads are completed, but any iterations not already asigned to threads are not completed. This directive is allowed only within the PDO and PARALLEL DO directives. When the scheduling method is STATIC or INTERLEAVED, this directive has no effect because all loop interations are assigned before the DO loop is executed. c$PAR INSTANCE [1]c_is_either_C,_c,_!,_or_*_______________________________ (continued on next page) 1-34 DIGITAL Fortran 90 Version 5.0 Release Notes Table_1-1_(Cont.)_Parallel_Directives______________________ DirectInterpretation_______________________________________ This data environment directive specifies the availability of named common blocks. This directive takes a list of arguments that specifies one or more common block names and whether all threads share the same instance of the named common block or that each thread has a unique instance of the named common block. An INSTANCE directive must appear prior to the declaration of the referenced named common blocks. Blank common blocks cannot be referenced in this directive. c$PAR TASKCOMMON This data environment directive specifies the availability of named common blocks. This directive and the INSTANCE PARALLEL directive are semantically equivalent, and differ only in form. c$COPYIN This data environment directive specifies that the listed data objects be copied from the parent thread to the LOCAL data objects of the same name. This directive takes a list of one or more variables, array elements, or named common blocks to be copied. This directive is provided for compatibility reasons and is allowed only within the PDO and PARALLEL DO directives. c$MP_SCHEDTYPE This directive sets a user-specified default run- time scheduling method. The scheduling method does not affect the semantics of the program, but may affect performance. This directive is provided for compatibility reasons. c$CHUNK [1]c_is_either_C,_c,_!,_or_*_______________________________ (continued on next page) DIGITAL Fortran 90 Version 5.0 Release Notes 1-35 Table_1-1_(Cont.)_Parallel_Directives______________________ DirectInterpretation_______________________________________ This directive sets a default chunk size used to assign DO iterations to threads. The affect of the specified chunk size depends on the scheduling method. This directive is provided for compatibility [1]c_iseeither_C,_c,_!,_or_*_______________________________ ___________________________________________________________ 1.9.3 Support for the Fortran 95 Standard Features This section briefly describes the Fortran 95 language features that have been added to DIGITAL Fortran: o The FORALL statement and construct In Fortran 90, you could build array values element-by- element by using array constructors and the RESHAPE and SPREAD intrinsics. The Fortran 95 FORALL statement and construct offer an alternative method. FORALL allows array elements, array sections, character substrings, or pointer targets to be explicitly specified as a function of the element subscripts. A FORALL construct allows several array assignments to share the same element subscript control. FORALL is a generalization of WHERE. They both allow masked array assignment, but FORALL uses element subscripts, while WHERE uses the whole array. DIGITAL Fortran previously provided the FORALL statement and construct as language extensions. o PURE procedures Pure user-defined procedures do not have side effects, such as changing the value of a variable in a common block. To specify a pure procedure, use the PURE prefix in the function or subroutine statement. Pure functions are allowed in specification statements. DIGITAL Fortran previously allowed pure procedures as a language extension. o ELEMENTAL procedures 1-36 DIGITAL Fortran 90 Version 5.0 Release Notes An elemental user-defined procedure is a restricted form of pure procedure. An elemental procedure can be passed an array, which is acted upon one element at a time. To specify an elemental procedure, use the ELEMENTAL prefix in the function or subroutine statement. o Pointer initialization In Fortran 90, there was no way to define the initial value of a pointer or to assign a null value to the pointer by using a pointer assignment operation. A Fortran 90 pointer had to be explicitly allocated, nullified, or associated with a target during execution before association status could be determined. Fortran 95 provides the NULL intrinsic function that can be used to nullify a pointer. o Derived-type structure default initialization Fortran 95 lets you specify, in derived-type definitions, default initial values for derived-type components. o Automatic deallocation of allocatable arrays Arrays declared using the ALLOCATABLE attribute can now be automatically deallocated in cases where Fortran 90 would have assigned them undefined allocation status. DIGITAL Fortran previously provided this feature as a language extension. o CPU_TIME intrinsic subroutine This new intrinsic subroutine returns a processor- dependent approximation of processor time. o Enhanced CEILING and FLOOR intrinsic functions KIND can now be specified for these intrinsic functions. o Enhanced MAXLOC and MINLOC intrinsic functions DIM can now be specified for the MAXLOC and MINLOC intrinsic functions. DIM was allowed previously as a DIGITAL Fortran language extension. o Enhanced WHERE construct The WHERE construct has been improved to allow nested WHERE constructs and a masked ELSEWHERE statement. WHERE constructs can now be named. DIGITAL Fortran 90 Version 5.0 Release Notes 1-37 o Comments allowed in namelist input Fortran 95 allows comments (beginning with !) in namelist input data. DIGITAL Fortran previously allowed this as a language extension. o Generic identifier to END INTERFACE statement The END INTERFACE statement of an interface block defining a generic routine now allows a generic identifier. o New obsolescent features Fortran 95 deletes several language features that were obsolescent in Fortran 90, and identifies new obsolescent features. DIGITAL Fortran flags these deleted and obsolescent features, but fully supports them. 1.9.4 Preliminary Information on Support for Big Objects Big objects are data items whose size cannot be represented by a signed 32 bit integer. DIGITAL Fortran 90 supports larger objects than DIGITAL Fortran 77. Big objects are good for massive machines and clusters used for numerical analysis, such as weather forecasting and high energy physics problems. Both special knowledge and very large hardware configurations are needed to use this feature. Your system and its operating system must be configured to: o Allow a very large stack space. o Allow a very large data space. o Allow large values for parameters, such as vm-maxvas. o Unless huge amounts of physical memory are present, enable lazy swapping. o Check the size of page/swap files and create larger files if needed. For more information, see the DIGITAL UNIX system management documentation. For DIGITAL UNIX Version 4.0, you can use the following check list: 1-38 DIGITAL Fortran 90 Version 5.0 Release Notes 1. Either have a large swap space or use deferred swap allocation. This involves either: o Have more swap space than the address space used by the largest program you want to run. The following command shows swap allocation: $ /usr/sbin/swapon -s o Use the deferred mode of swap allocation. The following command displays the reference (man) page for swapon, which describes how to change the swap allocation $ man swapon 2. Reconfigure the UNIX kernel (for Version 4.0 or later) to change the following parameters as desired. For example, on one system, all values were set to 16 GB: ________________________________________________________ Parameter_____________Explanation_______________________ max-per-proc- Largest address space address-space max-per-proc-data- Largest data size size max-per-proc-stack- Largest stack size size vm-maxvas_____________Largest_virtual-memory____________ Also set the following per-process values: ________________________________________________________ Parameter_____________Explanation_______________________ per-proc-address- Default address space space per-proc-data-size Default data size per-proc-stack-size___Default_stack_size________________ The per-process limits can be checked and increased with the limit or ulimit commands. You can create big objects as static data, automatic data (stack), or dynamically allocated data (ALLOCATE statement or other means). DIGITAL Fortran 90 Version 5.0 Release Notes 1-39 The address space limitations depends on the Alpha processor generation in use: o Address space for ev4 Alpha generation processors is 2**42 o Address space for ev5 Alpha generation processors is 2**46 Although the compiler produces code that computes 63-bit signed addresses, objects and addresses larger than the hardware limitations will not work. Limitations of using big objects include: o Initializing big objects by using a DATA statement or a TYPE declaration is not supported. o Big objects cannot be passed by value as program arguments. o Debug support for big objects is limited. o I/O of entire big objects is not supported, but I/O of parts of an array should work. The following small example program allocates a big character object: character xx(2_8**31+100_8) integer*8 i i = 10 xx(i) = 'A' i = 2_8**31 + 100_8 xx(i) = 'B' print *,xx(10_8) print *,xx(i) end 1.9.5 New Random Number Algorithm A new random number generator algorithm replaces the one previously used in the random_number intrinsic. The test program below and its output allows you to determine if you are using the new generator. The expected output shows the default seeds you get if provide zeros or no seed values at all to random_seed. Also shown is the reduction of -1 (taken as the unsigned integer0xFFFFFFFF) to 171 and 499. This reduction is done by subtracting the 1-40 DIGITAL Fortran 90 Version 5.0 Release Notes upper limit for each seed from the given seed until the result is in range. program testrand intrinsic random_seed, random_number integer size, seed(2), gseed(2), hiseed(2), zseed(2) real harvest(10) data seed /123456789, 987654321/ data hiseed /-1, -1/ data zseed /0, 0/ call random_seed(SIZE=size) print *,"size ",size call random_seed(PUT=hiseed(1:size)) call random_seed(GET=gseed(1:size)) print *,"hiseed gseed", hiseed, gseed call random_seed(PUT=zseed(1:size)) call random_seed(GET=gseed(1:size)) print *,"zseed gseed ", zseed, gseed call random_seed(PUT=seed(1:size)) call random_seed(GET=gseed(1:size)) call random_number(HARVEST=harvest) print *, "seed gseed ", seed, gseed print *, "harvest" print *, harvest call random_seed(GET=gseed(1:size)) print *,"gseed after harvest ", gseed end program testrand When executed, the program produces the following output: % testrand size 2 hiseed gseed -1 -1 171 499 zseed gseed 0 0 2147483562 2147483398 seed gseed 123456789 987654321 123456789 987654321 harvest 0.6099895 0.9807594 0.2936640 0.9100146 0.8464803 0.4358687 2.5444610E-02 0.5457680 0.6483381 0.3045360 gseed after harvest 375533067 1869030476 DIGITAL Fortran 90 Version 5.0 Release Notes 1-41 1.9.6 DIGITAL Fortran 77 Pointers DIGITAL Fortran 77 pointers are CRAY[R] style pointers, an extension to the Fortran 90 standard. The POINTER statement establishes pairs of variables and pointers, as described in the DIGITAL Fortran Language Reference Manual. 1.9.7 Extended Precision REAL (KIND=16) Floating-Point Data The X_floating data type is a little endian IEEE-based format that provides extended precision. It supports the REAL*16 DIGITAL Fortran Q intrinsic procedures. For example, the QCOS intrinsic procedure for the generic COS intrinsic procedure. The value of REAL (KIND=16) data is in the approximate range: 6.475175119438025110924438958227647Q-4966 to 1.189731495357231765085759326628007Q4932. Unlike other floating-point formats, there is little if any performance penalty from using denormalized extended- precision numbers, since accessing denormalized numbers do not result in an arithmetic trap (extended-precision is emulated in software). (The smallest normalized number is 3.362103143112093506262677817321753Q-4932.) The precision is approximately one part in 2**112 or typically 33 decimal digits. The X_floating format is emulated in software. Although there is no standard IEEE little endian 16-byte REAL data type, the X_floating format supports IEEE exceptional values. For more information, see the revised Digital Fortran 90 User Manual for Digital UNIX Systems and the DIGITAL Fortran Language Reference Manual. 1.9.8 Variable Format Expressions (VFEs) By enclosing an arithmetic expression in angle brackets, you can use it in a FORMAT statement wherever you can use an integer (except as the specification of the number of characters in the H field). For example: J = 5 FORMAT (I) 1-42 DIGITAL Fortran 90 Version 5.0 Release Notes For more information, see the DIGITAL Fortran Language Reference Manual. 1.9.9 Notes on Debugger Support DIGITAL UNIX provides both the dbx and the DIGITAL Ladebug (formerly DECladebug) debuggers in the programming environment subsets. These debuggers are very similar and use almost identical set of commands and command syntax. Both have a command- line interface as well as a Motif windowing interface. A character-cell DIGITAL Ladebug (ladebug) interface is provided with Ladebug in the DIGITAL UNIX operating system Programmer's Development Toolkit. To use the character-cell interface, use one of the following: the ladebug command. The Parallel Software Environment supports debugging parallel HPF programs (see the DIGITAL High Performance Fortran 90 HPF and PSE Manual). This section addresses scalar (nonparallel) debugging. When using the f90 command to create a program to be debugged using dbx or ladebug, consider using the following options: o Specify -g or -g2 to request symbol table and traceback information needed for debugging. o Avoid requesting optimization. When you specify - g or -g2, the optimization level is set to -O0 by default. Debugging optimized code is neither easy nor recommended. o When using the Ladebug debugger, you should specify the -ladebug option. The -ladebug option allows you to print and assign to dynamic arrays using standard Fortran syntax. For example, the following command creates the executable program proj_dbg.out for debugging with Ladebug: % f90 -g -ladebug -o proj_dbg.out file.f90 You invoke the character-cell Ladebug debugger by using the ladebug command. DIGITAL Fortran 90 Version 5.0 Release Notes 1-43 For more information, see the debugger chapter in the revised Digital Fortran 90 User Manual for Digital UNIX Systems (Chapter 4). 1.9.9.1 DIGITAL Ladebug Debugger Support Notes The following improvements in Ladebug support for the DIGITAL Fortran 90 language were added for DIGITAL UNIX Version 4.0: o Ladebug now includes a graphical window interface. o Ladebug now supports the display of array sections. o Ladebug now displays Fortran data types using Fortran 90 name syntax rather than C names (such as integer rather than int). o Ladebug provides improved support for debugging mixed- language C and Fortran applications. o These and other improvements are described in the debugger chapter (Chapter 4) of the Digital Fortran 90 User Manual for Digital UNIX Systems. The following improvements in Ladebug support for the DIGITAL Fortran 90 language were added for DEC OSF/1 Version 3.2 (DECladebug V3.0-16): o Fortran and Fortran 90 language expression evaluation is built into the Ladebug command language, including: - Case-insensitive identifiers, variables, program names, and so on - Logical expressions, including: Relational operators (.LT., .LE., .EQ., .NE., .GT., .GE.) Logical operators (.XOR., .AND., .OR., .EQV., .NEQV., .NOT.) o Fortran 90 pointers o Fortran 90 array support, including: - Explicit-shape arrays - Assumed-shape arrays - Automatic arrays 1-44 DIGITAL Fortran 90 Version 5.0 Release Notes - Assumed-size arrays - Deferred-shape arrays o COMMON block support, including: - Display of whole common block - Display of (optionally-qualified) common block members o COMPLEX variable support, including the display, assignment, and use of arithmetic expressions involving COMPLEX variables o Alternate entry points, including breakpoints, tracepoints, and stack tracing (where command) o Mixed-language debugging For more information on using Ladebug, see the debugger chapter in the revised Digital Fortran 90 User Manual for Digital UNIX Systems (Chapter 4). 1.9.9.2 dbx Debugger Support Notes When using dbx with DIGITAL Fortran 90 programs, certain differences exist. For example, in dbx, assumed-shape arguments, allocatable arrays, and pointers to arrays are printed as a derived type. Consider the following program: module foo real x contains subroutine bar(a) integer a(:) a(1) = 1 end subroutine bar end module foo use foo integer b(100) call bar(b) end DIGITAL Fortran 90 Version 5.0 Release Notes 1-45 If the above program were stopped inside BAR, the following would occur: (dbx) print a common / dim = 1 element_length = 4 ptr = 0x140000244 ies1 = 4 ub1 = 10 lb1 = 1 / The meaning of the fields are: dim - dimension of the object element_length - the length of each element in bytes ptr - the address of the object iesn - distance (in bytes) between elements in the nth dimension ubn - upper bound in the nth dimension lbn - lower bound in the nth dimension 1.9.10 Notes on Fast Math Library Routines The f90 option -math_library fast provides alternate math routine entry points to the following: o SQRT, EXP, LOG, LOG10, SIN, and COS intrinsic procedures o Power (**) in arithmetic expressions 1.9.11 The DIGITAL Fortran 90 Array Descriptor Format In the Digital Fortran 90 User Manual for Digital UNIX Systems, Chapter 10, Section 10.1.7 describes the DIGITAL Fortran 90 array descriptor format. These notes are an initial attempt to provide a template for those C programmers creating an a .h file that lays out the DIGITAL Fortran 90 array descriptor format. There are two varying parameters for this descriptor format: o The element type (shown in this section as ) o The rank (shown in this section as ) 1-46 DIGITAL Fortran 90 Version 5.0 Release Notes Common information for all descriptors is the general layout of the header and the information for each dimension. One possible C @codefont(struct) definition for the per- dimension information is: struct _f90_array_dim_info { int inter_element_spacing; int pad1; int upper_bound; int pad2; int lower_bound; int pad3; }; The inter-element spacing is measured in 8-bit bytes, not in array elements. This presents a challenge in designing array descriptor definitions in C, since there is no completely clean way to interact with C's pointer arithmetic. One way to design the struct definition for an array descriptor is to use the template: struct _f90_array_desc_rank_ { unsigned char dim; unsigned char flags; unsigned char dtype; unsigned char class; int pad; long length; * pointer; long arrsize; void * addr_a0; struct _f90_array_dim_info dim_info[]; }; Where , and are the template parameters. Often and can be the same, but in cases where has non- identifier characters in it (for example, space or star) then a suitable should be devised. DIGITAL Fortran 90 Version 5.0 Release Notes 1-47 The problem with this approach is that the element addressing, which uses the inter-element spacing, generates an offset in bytes. In order to use C's native pointer arithmetic, either casts need to be done or a division. For example: o Casting: *(( *) (((char *) desc->pointer) + byte_offset)) o Division: (desc->pointer)[byte_offset/sizeof()] Another way to design the struct definition for an array descriptor is to use the template: struct _f90_array_desc_rank_general { unsigned char dim; unsigned char flags; unsigned char dtype; unsigned char class; int pad; long length; char * pointer; long arrsize; void * addr_a0; struct _f90_array_dim_info dim_info[]; }; An advantage to this approach is that the same definition can be used for all arrays of the same rank. The problem with this approach is that it forces the programmer to cast: *(( *) (desc->pointer + byte_offset)) Another approach is to remove from the template as well, yielding: 1-48 DIGITAL Fortran 90 Version 5.0 Release Notes struct _f90_array_desc_general { unsigned char dim; unsigned char flags; unsigned char dtype; unsigned char class; int pad; long length; char * pointer; long arrsize; void * addr_a0; struct _f90_array_dim_info dim_info[7]; }; On the last line, 7 is used since that is the maximum rank allowed by Fortran. Since the dim field should be checked, this definition can be used in many (perhaps most) of the places a rank-specific definition would be used, provided the programmer is aware that the dim_info fields beyond the actual rank are undefined. One place such a definition should NOT be used is when an object of this definition is used as part of an assignment. This usage is considered rare. For example: void ptr_assign_buggy(struct _f90_array_desc_general * ptr, struct _f90_array_desc_general * tgt) { *ptr = *tgt; } Example of Array Descriptor Format Use In this example, we have a 'struct tree' and a procedure prune_some_trees_() that takes a descriptor of a rank=3 array of such structs and calls prune_one_tree_() on each individual tree (by reference): DIGITAL Fortran 90 Version 5.0 Release Notes 1-49 void prune_some_trees(struct _f90_array_desc_general * trees) { if (trees->dim != 3) { raise_an_error(); return; } else { int x,y,z; int xmin = trees->dim_info[0].lower_bound; int xmax = trees->dim_info[0].upper_bound; int xstp = trees->dim_info[0].inter_element_spacing; int ymin = trees->dim_info[1].lower_bound; int ymax = trees->dim_info[1].upper_bound; int ystp = trees->dim_info[1].inter_element_spacing; int zmin = trees->dim_info[2].lower_bound; int zmax = trees->dim_info[2].upper_bound; int zstp = trees->dim_info[2].inter_element_spacing; int xoffset,yoffset,zoffset; for (z = zmin, zoffset = 0; z <= zmax; z+= 1, zoffset += zstp) { for (y = ymin, yoffset = 0; y <= ymax; y+= 1, yoffset += ystp) { for (x = xmin, xoffset = 0; x <= xmax; x+= 1, xoffset += xstp) { struct tree * this_tree = (struct tree *) (trees->pointer + xoffset+yoffset+zoffset); prune_one_tree_(this_tree); } } } } } DIGITAL would appreciate feedback on which definitions of array descriptors users have found most useful. Note that the format for array descriptors used by HPF is more complicated and is not described at this time. 1-50 DIGITAL Fortran 90 Version 5.0 Release Notes 2 _________________________________________________________________ New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases This chapter summarizes the new features for DIGITAL Fortran 90 Versions 1.1, 1.2, 1.3, and 2.0. 2.1 New Features in Version 2.0 New features for Version 2.0 include the LOC intrinsic function. LOC returns the internal address of its argument (same as the built-in function %LOC). In addition, the DIGITAL Ladebug debugger has added support for DIGITAL Fortran 90 language features (see Section 1.9.9.1). 2.2 New Features in Version 1.3 New features for Version 1.3 include the f90 command options that support the DIGITAL Parallel Software Environment. To request parallel execution, specify the -wsf or -wsf nn option . This compiles the program to run in parallel using the DIGITAL Parallel Software Environment product. The optional nn parameter specifies the number of processors on which the program is intended to execute. If not specified, the program will be compiled to execute on any number of processors. More efficient code is generated when nn is specified. If you specify the -wsf or -wsf nn option to request parallel execution, you can also use the following related options: o The -assume nozsize option assumes there are no zero- sized array sections. New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases 2-1 o The -nearest_neighbor or -nearest_neighbor nn option enables or disables the nearest neighbor parallel optimization. The optional nn parameter specifies the width of the shadow edge to use. If you omit nn, it is set to 1. o The -pprof string option allows parallel profiling of an application. Valid characters for string are s for sampling or i for interval. This option must be used with the -non_shared option (as well as -wsf or -wsf nn). This option must not be used with the -p1 option. o The -show wsfinfo option includes information about statements which cause interprocessor communication to be generated or are serialized in the listing file. Other Version 1.3 new features include the following: o Support for the DIGITAL Fortran 77 pointers (CRAY[R] style). This is an extension to the Fortran 90 and FORTRAN-77 standards. For more information, see the DEC Fortran Language Reference Manual and Section 1.9.6. o Bit constants with a trailing B or Z or leading X (a DIGITAL Fortran extension) are now supported for compatibility with DIGITAL Fortran 77: i = '001'B k = '0ff'Z j = X'00f' o The SYSTEM_CLOCK intrinsic procedure has been extended to allow integer arguments of any KIND rather than the default integer KIND . This allows the use of INTEGER*8 arguments to obtain a higher degree of magnitude and accuracy in timings (1,000,000 counts per second). For example: integer*8 count,count_max,count_rate call system_clock(count,count_rate,count_max) o When it is passed an INTEGER (KIND=4) value, the SYSTEM_ CLOCK intrinsic procedure now returns a value in terms of 10,000 instead of 1,000,000 counts per second. 2-2 New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases o Debugging support has been enhanced to allow breakpoints on CONTINUE, GOTO, and RETURN statements. Before Version 1.3, breakpoints could not be set on a CONTINUE statement and only on certain GOTO and RETURN statements. o The following DIGITAL Fortran 90 cDEC$ directives are now supported: - cDEC$ IDENT specifies a string that identifies the object file. - cDEC$ OPTIONS and cDEC$ END_OPTIONS controls alignment of fields in common blocks, record structures, and most derived-type structures. - cDEC$ PSECT modifies certain attributes of a common block, including the [NO]MULTILANGUAGE attribute for compatibility with DIGITAL Fortran 77. - cDEC$ TITLE and cDEC$ SUBTITLE specifies strings for the title and subtitle of a listing file header. o Any number raised to a floating point 2.0 (x ** 2.0) is now transformed to (x ** 2) for compatibility with DIGITAL Fortran 77. o The Bessel function 3f library (jacket) routines are now supported (see bessel(3f)) o The following f90 command options were added for Version 1.3: - The -fuse_xref option requests that DIGITAL Fortran 90 generate a data file that the DEC FUSE Database Manager uses to create a cross-reference database file. This improves the performance of the DEC FUSE Call Graph Browser and Cross-Referencer that use the database file for their operations. - The -inline speed and -inline size options have been added in place of -inline automatic to provide more control over procedure inlining: Use -inline size (same as -inline space) to inline procedures that will likely improve run-time performance where inlining will not significantly increase program size. This option is meaningful only at optimization levels -O1 and higher. New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases 2-3 Use -inline speed to inline procedures that will likely improve run-time performance where inlining may significantly increase program size. Using - inline speed often results in larger executable program sizes (than -inline size). This type of inlining occurs automatically with the -O4 or -O5 optimization levels. This option is meaningful only at optimization levels -O1 and higher. Other -inline xxxx options include -inline none, -inline manual, and -inline all (see Section 2.3). - The -ladebug option includes additional symbolic information in the object file for the Ladebug debugger (see ladebug(1) or decladebug(1)). This option enables Ladebug to print and assign to dynamic arrays using standard Fortran syntax, including array sections. - The -show map option includes a symbol map in the listing file (also specify -V). - The -version option displays DIGITAL Fortran 90 version number information. For more complete product information, see the DIGITAL Fortran 90 documentation and the f90(1) reference (man) page. 2.3 New Features in Version 1.2 DIGITAL Fortran 90 Version 1.2 contains the following changes since Version 1.1: o Support for REAL (KIND=16) (or REAL*16) X_floating (extended precision) data type and its associated intrinsics (a DIGITAL Fortran extension). For more information see Section 1.9. o Support for variable format expressions (VFEs), a DIGITAL Fortran extension (see Section 1.9). o Support for OPTIONS statements, which allow you to specify command-line options in your source files. The OPTIONS statement is a DIGITAL Fortran extension. o Intrinsic procedures FP_CLASS and IMAG (a DIGITAL Fortran extension). 2-4 New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases o STATIC and AUTOMATIC declaration attributes and statements (a DIGITAL Fortran extension). o The following f90 command options were added for Version 1.2: - The -convert fgx and -convert fdx options allow conversion of unformatted OpenVMS Alpha DIGITAL Fortran 77 data files. Similarly, the FDX and FGX keywords are recognized for the OPEN statement CONVERT keyword and the FORT_CONVERTn environment variable names. Specifying -convert fdx indicates the data contains:: - Little endian integer format (INTEGER declarations of the appropriate size) - REAL*4 and COMPLEX*8 data in VAX F_floating format - REAL*8 and COMPLEX*16 data in VAX D_floating format - REAL*16 data in native X_floating format Specifying -convert fgx indicates the data contains: - Little endian integer format (INTEGER declarations of the appropriate size) - REAL*4 and COMPLEX*8 data in VAX F_floating format - REAL*8 and COMPLEX*16 data in VAX G_floating format - REAL*16 data in native X_floating format - The -double_size 128 option specifies that DOUBLE PRECISION declarations are implemented as extended precision REAL (KIND=16) data rather than double precision REAL (KIND=8) data. - The -real_size 128 and -r16 options allow a REAL declaration to be interpreted using the REAL (KIND=16) data type. New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases 2-5 - The -inline xxxxx options can be used to specify the type of inlining done independent of the -On option (optimization level) specified: o To prevent inlining of procedures (except statement functions), use -inline none or -inline manual. This is the type of inlining done with -O0, -O1, -O2, or -O3. o The -inline automatic option was replaced at Version 1.3 with -inline size and -inline speed (see Section 2.2), allowing more control over inlining. o To inline every call that can possibly be inlined while generating correct code, including: statement functions, procedures that DIGITAL Fortran 90 thinks will improve run-time performance, and any other procedures that can possibly be inlined while generating correct code (certain recursive routines cannot be inlined), use -inline all. This option is meaningful only at optimization levels -O1 and higher. - The -gen_feedback option requests additional profiling information needed for feedback file use. You can use -gen_feedback with any optimization level up to -O3 (to avoid inlining procedures). If you omit a -On option, the -gen_feedback option changes the default optimization level to -O0. A typical command-line sequence to create a feedback file (profsample.feedback) follows: % f90 -gen_feedback -o profsample -O3 profsample.f90 % pixie profsample % profsample.pixie % prof -pixie -feedback profsample.feedback profsample - The -feedback option now works with -cord or separately without -cord to specify a previously- created feedback file. For example: % f90 -feedback profsample.feedback -o profsample -O3 profsample.f90 2-6 New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases The feedback file provides the compiler with actual execution information, which the compiler can use to perform such optimizations as inlining function calls. The same optimization level (-On option) must be specified for the f90 command with the -gen_feedback option and the f90 command with the -feedback name option. You can use the feedback file as input to the f90 compiler and cord, as follows: % f90 -cord -feedback profsample.feedback -o profsample -O3 profsample.f90 - The -tune keyword option selects processor-specific instruction tuning for implementations of the Alpha architecture. Regardless of the setting of -tune keyword, the generated code will run correctly on all implementations of the Alpha architecture. Tuning for a specific implementation can improve run-time performance; it is also possible that code tuned for a specific target may run slower on another target. Choose one of the following: o To generate and schedule code that will execute well for both types of chips, use -tune generic. This provides generally efficient code for those cases where both types of chips are likely to be used. If you do not specify any -tune keyword option, -tune generic is used (default). o To generate and schedule code optimized for the type of chip in use on the system being used for compilation, use -tune host. o To generate and schedule code optimized for the 21064, 20164A, 21066, and 21068 implementations of the Alpha chip, use -tune ev4. o To generate and schedule code optimized for the 21164 implementation of the Alpha chip, use -tune ev5. New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases 2-7 - The -check noformat option disables the run- time message (number 61) associated with format mismatches. It also requests that the data item be formatted using the specified descriptor, unless the length of the item cannot accommodate the descriptor (for example, it is still an error to pass an INTEGER (KIND=2) item to an E edit descriptor). Using -check noformat allows such format mismatches as a REAL (KIND=4) item formatted with an I edit descriptor. If you omit the -vms option, the default is -check noformat. If you specify -vms and omit -check noformat, -check format is used. - The -check output_conversion option disables the run-time message (number 63) associated with format truncation. The data item is printed with asterisks. Error number 63 occurs when a number could not be output in the specified format field length without loss of significant digits (format truncation). If you omit the -vms option, the default is -check nooutput_conversion. If you specify -vms and omit -check nooutput_ conversion, -check output_conversion is used. - The -vms option now sets defaults for -check output_ conversion and -check format. For more complete product information, see the DIGITAL Fortran 90 documentation and the f90(1) reference (man) page. 2.4 New Features in Version 1.1 DIGITAL Fortran 90 Version 1.1 contains the following changes since Version 1.0: o The following f90 command options were added for Version 1.1: - The -check bounds option generates additional code to detect out-of-bounds subscripts for array operations and character substring expressions at run-time. Use this option for debugging purposes. 2-8 New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases - The -Idir option specifies an additional directory to be searched for files specified with an INCLUDE statement or module files. For Version 1.0, this option specified an additional directory searched for module files only. - The -warn argument_checking option issues a warning message about argument mismatches between the calling and the called procedure when both program units are compiled together. o The fsplit command now accepts DIGITAL Fortran 90 free- form source files (see fsplit(1)). For example: % fsplit -f90 -free bigfile.f90 For more complete product information, see the DIGITAL Fortran 90 documentation and the f90(1) reference (man) page. New Features for DIGITAL Fortran 90 Version 2.0 and 1.n Releases 2-9 3 _________________________________________________________________ Documentation, Corrections, and Other Fortran 90 Documentation The sections in this chapter: o List known DIGITAL Fortran 90 documentation corrections (Section 3.1) o Describe DIGITAL Fortran 90 documentation and online information (Section 3.2) o Describe the main DIGITAL Parallel Software Environment documents (Section 3.3) o List other sources of information about Fortran 90 (Section 3.4) o Describes how you can send comments about DIGITAL Fortran 90 documentation and online information to DIGITAL (Section 3.5) 3.1 DIGITAL Fortran 90 Documentation Corrections This section contains information that does not appear in the DIGITAL Fortran 90 documentation. Included in each description is a notation of the first version to which it applies. 3.1.1 DIGITAL Fortran Installation Guide for DIGITAL UNIX Systems There are no known correction to this installation guide, order number AA-PW82D-TE (September 1997 on the inside title page). Documentation, Corrections, and Other Fortran 90 Documentation 3-1 3.1.2 Digital Fortran 90 User Manual for Digital UNIX Systems The following known correction applies to this user manual, order number AA-Q66TB-TE (March 1996 on the inside title page): o New options have been added to the f90 command; see Section 1.6. 3.1.3 DIGITAL Fortran Language Reference Manual The following corrections apply to the DIGITAL Fortran Language Reference Manual, order number AA-Q66SC-TE (April 1997 on the inside title page): o The following Fortran 95 features are listed in this manual but have not yet been implemented in Version 5.0: - Printing of -0.0 A floating-point value of minus zero (-0.0) can now be printed. (Not yet implemented.) - Zero-length formats On output, when using I, B, O, Z, and F edit descriptors, the specified value of the field width can be zero. In such cases, the compiler selects the smallest possible positive actual field width that does not result in the field being filled with asterisks (*). (Not yet implemented.) For a description of language features added since Version 1.0, see Section 1.5, Section 1.6, Section 1.7, and Chapter 2. 3.2 DIGITAL Fortran 90 Documentation and Online Information The DIGITAL Fortran 90 documentation set includes the following: o DIGITAL Fortran Installation Guide for DIGITAL UNIX Systems (AA-PW82D-TE) Explains how to install DIGITAL Fortran (DIGITAL Fortran 90 and DIGITAL Fortran 77) on a DIGITAL UNIX Alpha system, including requirements. 3-2 Documentation, Corrections, and Other Fortran 90 Documentation The installation guide is included with the DIGITAL Fortran 90 document kit, QA-MV2AA-GZ.5.n and the DIGITAL Fortran 77 kit, QA-MV2AB-GZ.5.n. It is also included in ASCII and PostScript[TM] form on the Software Product Library CD-ROM (media CD-ROM) and is on the Online Documentation Library CD-ROM in Bookreader and HTML form. o DIGITAL Fortran Language Reference Manual (AA-Q66SC-TE) Describes the DIGITAL Fortran 90 source language for reference purposes, including the format and use of statements, intrinsic procedures, and other language elements. It also provides an overview of new Fortran 90 features (not available in FORTRAN-77). It identifies extensions to the Fortran 90 standard by blue color in the printed document and by shading in Bookreader. When using Bookreader Version 4.0, note that the shading of extensions may be inaccurate. The DIGITAL Fortran Language Reference Manual is now included with the DIGITAL Fortran 90 document kit, QA- MV2AA-GZ. The DIGITAL Fortran Language Reference Manual is currently on the Online Documentation Library CD-ROM in Bookreader and HTML form. o Digital Fortran 90 User Manual for Digital UNIX Systems (AA-Q66TB-TE) Describes the DIGITAL Fortran 90 program development and run-time environment on DIGITAL UNIX Alpha systems. It describes compiling, linking, running, and debugging DIGITAL Fortran 90 programs, performance guidelines, run-time I/O and error-handling support, data types, numeric data conversion, calling other procedures and library routines, and compatibility with DIGITAL Fortran 77. It provides information common to DIGITAL Fortran 90 and the DIGITAL Parallel Software Environment. The printed version of this document is included with the DIGITAL Fortran 90 document kit, QA-MV2AA-GZ.5.n and is on the Online Documentation Library CD-ROM in Bookreader form. o Read Before Installing or Using DIGITAL Fortran Version 5.n for DIGITAL UNIX Systems (AV-PW83J-TE) Documentation, Corrections, and Other Fortran 90 Documentation 3-3 This cover letter contains information about installing DIGITAL Fortran (DIGITAL Fortran 90 and DIGITAL Fortran 77) that may not be included in the installation guide or in the release notes. This cover letter is included with the DIGITAL Fortran 90 document kit, QA-MV2AA-GZ.5.n and the DIGITAL Fortran 77 kit, QA-MV2AB-GZ.5.n. It is also included on the Software Product Library CD-ROM (media CD-ROM) in ASCII and PostScript form. The DIGITAL Fortran 90 Software Product Description (SPD) is provided as a file on the Software Product Library CD- ROM (media CD-ROM). The following DIGITAL Fortran 90 online information is available (once installed on the system): o DIGITAL Fortran 90 online reference pages Describe the DIGITAL Fortran 90 software components, including f90(1), fpr(1), fsplit(1), intro(3f), numerous Fortran library routines listed in intro(3f), and numerous parallel High Performance Fortran library routines listed in intro(3hpf). o DIGITAL Fortran 90 online release notes Provide more information on this version of DIGITAL Fortran 90, including known problems and a summary of the DIGITAL Fortran 90 run-time error messages. These release notes are also provided on the Software Product Library CD-ROM (media CD-ROM). Once installed, the online release notes are located in: /usr/lib/cmplrs/fort90/relnotes To view this file, use the more command (or view) on a system where DIGITAL Fortran 90 is installed: % more /usr/lib/cmplrs/fort90/relnotes To initiate a search within more, type a slash (/) followed by the appropriate topic. For information about using the more command, see more(1). o DIGITAL Fortran 90 online help file 3-4 Documentation, Corrections, and Other Fortran 90 Documentation This ASCII file provides online access to DIGITAL Fortran 90 information, which includes error message descriptions, a summary of the language elements (statements, intrinsic functions, and so on), a glossary, and other information. The DIGITAL Fortran 90 help file is located in: /usr/lib/cmplrs/fort90/decfortran90.hlp Use the more command or the view command to access the information available in these ASCII files. These help files are large and are not usually printed on a printer or read sequentially. The DIGITAL Fortran Installation Guide for DIGITAL UNIX Systems, these online release notes, the "read first" cover letter, and the SPD are available on the DIGITAL UNIX Software Product Library CD-ROM (media CD-ROM) in ASCII and PostScript format. All DIGITAL Fortran 90 documents except the cover letter, SPD, and these release notes are available on the DIGITAL UNIX Online Documentation Library CD-ROM in Bookreader format. 3.3 DIGITAL Parallel Software Environment Documentation The DIGITAL Parallel Software Environment product supports the parallel execution of Fortran 90 programs using High Performance Fortran constructs. For information on the DIGITAL Parallel Software Environment product, see the DIGITAL Parallel Software Environment document kit, QA-2ATAA-GZ. This kit includes the DIGITAL High Performance Fortran 90 HPF and PSE Manual. The DIGITAL High Performance Fortran 90 HPF and PSE Manual explains both the Parallel Software Environment (PSE) and the High Performance Fortran (HPF) programming language. It describes the installation, set up, administration, and general use of the PSE software, as well as hardware configuration for a parallel Alpha Farm. In addition, it also contains a tutorial describing how to write programs using the HPF extensions to DIGITAL Fortran 90 and describes how to run, debug, and profile HPF programs in the PSE. Documentation, Corrections, and Other Fortran 90 Documentation 3-5 3.4 Other Sources of Information About Fortran 90 This section lists sources of information about Fortran 90 other than the DIGITAL Fortran 90 documentation. The following publication is the copywritten standard for Fortran 90: o American National Standard Fortran 90, ANSI X3.198-1991, and International Standards Organization standard ISO /IEC 1539:1991. (Simply referred to in documentation as the "Fortran 90 Standard".) Tutorial information about the Fortran 90 language is available in commercially published documents at major book stores or from their publishers. DIGITAL Fortran 90 documentation does not usually provide such tutorial information. The following commercially published documents (listed in alphabetical order by title) in English provide reference or tutorial information about Fortran 90: o Fortran 90 by Counihan and Pitman, ISBN 0-273-03073-6. o Fortran 90 Explained by M. Metcalf and J. Reid, Published by Oxford University Press, ISBN 0-19-853772-7 o Fortran 90 for Scientists and Engineers by B. Hahn and E. Arnold, ISBN 0-340-60034-9. o Fortran 90 Handbook by J. Adams, W. Brainerd, J. Martin, B. Smith, and J. Wagener, Published by Intertext Publications (McGraw-Hill), ISBN 0-07-000406-x. o Fortran 90 Programming by T. Ellis, I. Philips, and T. Lahey, Published by Addison/Wesley, ISBN 0201-54446-6. o Migrating to Fortran 90 by J. Kerrigan, Published by O'Reilly and Associates, ISBN 1-56592-049-x. o Programmer's Guide to Fortran 90, Second Edition by W. Brainerd, C. Goldberg, and J. Adams, Published by Unicomp, ISBN 0-07-000248-7. o Programming in Fortran 90 by Morgan and Schonfelder, Alfred Waller, ISBN 1-872474-06-3. o Programming in Fortran 90 by I.M. Smith, Published by Wiley, ISBN 0471-94185-9 3-6 Documentation, Corrections, and Other Fortran 90 Documentation For information on High Performance Fortran (HPF), see the following: o High Performance Fortran Language Specification, Version 1.1, Technical Report CRPC-TR-92225, Center for Research on Parallel Computation, Rice University, Houston, TX USA. Also see the draft version of the Version 2.0 specification, which at the time of this writing is out for public comment, but has not been finally approved. These specifications are available online on the World Wide Web as follows: http://www.crpc.rice.edu/HPFF/home.html DIGITAL provides this list of Fortran 90 documents (books) for the sole purpose of assisting customers who want to learn more about the Fortran 90 language. This list of documents does not comment-either positively or negatively- on any of the documents listed or any not yet listed. Any omissions are not intentional. Publications that become available after the revision of a DIGITAL Fortran 90 document will be added at the next revision. To add or correct a publication on this list, use the Internet mail, FAX number, or address listed in Section 3.5. This list may be removed from these release notes at any time. Documentation, Corrections, and Other Fortran 90 Documentation 3-7 3.5 Online Readers Comments Form Use the following online form as a template for sending comments about DIGITAL Fortran documentation by Internet mail, FAX, or postal service. --------------------------------------------------------------------- Please complete this survey and send an online version (via Internet) or a hardcopy version (via FAX or postal service) to: Internet mail: fortran_docs@zko.mts.dec.com FAX: 603-881-0120 Attn: Languages Documentation, ZKO2-3/K35 Postal service: Digital Equipment Corporation, Languages Documentation, ZK02-3/K35 110 Spit Brook Road, Nashua, N.H. 03062-2698 USA Manual Title: ________________________________ Order Number: _________________ Fortran 90 Version: ________________ _____________________________________________________________________ We welcome any comments on this manual or any DIGITAL Fortran or Fortran 90 manual. 1. If you found any errors, please list them: Page Description ____ ___________________________________________________________ ____ ___________________________________________________________ 2. How can we improve the content, usability, or otherwise improve our documentation set? _________________________________________________________________ _________________________________________________________________ Your Name/Title ______________________________ Dept. _________ Company ________________________________________ Date _________ Electronic address or FAX number _________________________________ Mailing Address ________________________________________________ 3-8 Documentation, Corrections, and Other Fortran 90 Documentation __________________________________________ Phone ______________ Documentation, Corrections, and Other Fortran 90 Documentation 3-9 A _________________________________________________________________ Run-Time Messages This appendix lists DIGITAL Fortran 90 run-time messages. It is provided in ASCII form (only in the ASCII release notes) for quick look-up purposes. Table A-1 lists the errors processed by the DIGITAL Fortran 90 RTL. For each error, the table provides the error number, the severity code, error message text, condition symbol name, and a detailed description of the errors. To define the condition symbol values (PARAMETER statements) in your program, include the following file: /usr/include/foriosdef.f The severity of the message determines whether program execution continues: ___________________________________________________________ Severity_____Description___________________________________ severe Must be corrected. The program's execution is terminated when the error is encountered, unless the program's I/O statements use the END, EOR, or ERR branch specifiers to transfer control, perhaps to a routine that uses the IOSTAT specifier. error Should be corrected. The program might continue execution, but the output from this execution may be incorrect. warning Should be investigated. The program continues execution, but output from this execution may be incorrect. info For informational purposes only; the program _____________continues.____________________________________ When a severe error occurs for which no recovery method is specified, an error message is displayed and execution Run-Time Messages A-1 stops. To prevent program termination, you must include either an appropriate I/O error-handling specifier (see the user manual) and recompile or, for certain errors, change the default action of a signal (see the user manual) before you run the program again. In Table A-1, the first column lists error numbers returned to IOSTAT variables when an I/O error is detected. The DIGITAL Fortran 90 error numbers are compatible with DIGITAL Fortran 77. Certain messages are specific to DIGITAL Fortran on DIGITAL UNIX systems, including most signal-related errors (such as error number 79, Process quit (SIGQUIT) and errors 130-139) listed in Table A-1. The first line of the second column provides the message as it is displayed (following forrtl:), including the severity level, message number, and the message text. The following lines of the second column contain the status condition symbol (such as FOR$IOS_INCRECTYP) and an explanation of the message. If you have installed the DIGITAL Parallel Software Environment and compiled a program for parallel execution, additional messages specific to parallel execution may appear (see the DIGITAL High Performance Fortran 90 HPF and PSE Manual). Table_A-1_Run-Time_Error_Messages_and_Explanations_______________ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ None[1]info: Fortran error message number is nnn The DIGITAL Fortran 90 message catalog file was not found on this system. For information about the message file location, see the user manual or the DIGITAL Fortran installation guide. This error has no condition symbol. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) A-2 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ None[1]warning: Could not open message catalog: for_msg.cat The DIGITAL Fortran 90 message catalog file was not found on this system. See the user manual or your DIGITAL Fortran installation guide for further information. This error has no condition symbol. None[1]info: Check environment variable NLSPATH and protection of path-name/for_msg.dat The DIGITAL Fortran 90 message catalog file was not found. For more information, see the user manual or your DIGITAL Fortran installation guide. This error has no condition symbol. None[1]Insufficient memory to open Fortran RTL catalog: message 41 The DIGITAL Fortran 90 message catalog file could not be opened because of insufficient virtual memory. To overcome this problem, increase the per-process data limit by using the limit (C shell) or ulimit (Bourne and Korn shells) commands (see Chapter 1 of the user manual) before running the program again. For more information, see error 41. This error has no condition symbol. 1[1] severe (1): Not a Fortran-specific error FOR$IOS_NOTFORSPE. An error in the user program or in the RTL was not a DIGITAL Fortran 90-specific error and was not reportable through any other DIGITAL Fortran 90 run- time messages. If you call ERRSNS, an error of this kind returns a value of 1 (for more information on the ERRSNS subroutine, see the language reference manual). 8 severe (8): Internal consistency check failure FOR$IOS_BUG_CHECK. Internal error. Please check that the program is correct. Recompile if an error existed in the program. If this error persists, submit an SPR. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) Run-Time Messages A-3 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 9 severe (9): Permission to access file denied FOR$IOS_PERACCFIL. Check the mode (protection) of the specified file. Make sure the correct file was being accessed. Change the protection, specified file, or process used before rerunning program. 10 severe (10): Cannot overwrite existing file FOR$IOS_CAOVEEXI. Specified file xxx already exists when OPEN statement specified STATUS='NEW' (create new file) using I/O unit x. Make sure correct file name, directory path, unit, and so forth were specified in the source program. Decide whether to: o Rename or remove the existing file before rerunning the program. o Modify the source file to specify different file specification, I/O unit, or OPEN statement STATUS. 11 info (11)[1]: Unit not connected FOR$IOS_UNINOTCON. The specified unit was not open at the time of the attempted I/O operation. Check if correct unit number was specified. If appropriate, use an OPEN statement to explicitly open the file (connect the file to the unit number). 17 severe (17): Syntax error in NAMELIST input FOR$IOS_SYNERRNAM. The syntax of input to a namelist- directed READ statement was incorrect. 18 severe (18): Too many values for NAMELIST variable FOR$IOS_TOOMANVAL. An attempt was made to assign too many values to a variable during a namelist READ statement. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) A-4 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 19 severe (19): Invalid reference to variable in NAMELIST input FOR$IOS_INVREFVAR. One of the following conditions occurred: o The variable was not a member of the namelist group. o An attempt was made to subscript a scalar variable. o A subscript of the array variable was out-of-bounds. o An array variable was specified with too many or too few subscripts for the variable. o An attempt was made to specify a substring of a noncharacter variable or array name. o A substring specifier of the character variable was out-of-bounds. o A subscript or substring specifier of the variable was not an integer constant. o An attempt was made to specify a substring by using an unsubscripted array variable. 20 severe (20): REWIND error FOR$IOS_REWERR. One of the following conditions occurred: o The file was not a sequential file. o The file was not opened for sequential or append access. o The DIGITAL Fortran 90 RTL I/O system detected an error condition during execution of a REWIND statement. (continued on next page) Run-Time Messages A-5 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 21 severe (21): Duplicate file specifications FOR$IOS_DUPFILSPE. Multiple attempts were made to specify file attributes without an intervening close operation. A DEFINE FILE statement was followed by another DEFINE FILE statement or an OPEN statement 22 severe (22): Input record too long FOR$IOS_INPRECTOO. A record was read that exceeded the explicit or default record length specified when the file was opened. To read the file, use an OPEN statement with a RECL= value (record length) of the appropriate size. 23 severe (23): BACKSPACE error FOR$IOS_BACERR. The DIGITAL Fortran 90 RTL I/O system detected an error condition during execution of a BACKSPACE statement. 24[1] severe (24): End-of-file during read FOR$IOS_ENDDURREA. One of the following conditions occurred: o A DIGITAL Fortran 90 RTL I/O system end-of-file condition was encountered during execution of a READ statement that did not contain an END, ERR, or IOSTAT specification. o An end-of-file record written by the ENDFILE statement was encountered during execution of a READ statement that did not contain an END, ERR, or IOSTAT specification. o An attempt was made to read past the end of an internal file character string or array during execution of a READ statement that did not contain an END, ERR, or IOSTAT specification. This error is returned by END and ERRSNS. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) A-6 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 25 severe (25): Record number outside range FOR$IOS_RECNUMOUT. A direct access READ, WRITE, or FIND statement specified a record number outside the range specified when the file was opened. 26 severe (26): OPEN or DEFINE FILE required FOR$IOS_OPEDEFREQ. A direct access READ, WRITE, or FIND statement was attempted for a file when no prior DEFINE FILE or OPEN statement with ACCESS='DIRECT' was performed for that file. 27 severe (27): Too many records in I/O statement FOR$IOS_TOOMANREC. An attempt was made to do one of the following: o Read or write more than one record with an ENCODE or DECODE statement. o Write more records than existed. 28 severe (28): CLOSE error FOR$IOS_CLOERR. An error condition was detected by the DIGITAL Fortran 90 RTL I/O system during execution of a CLOSE statement. 29 severe (29): File not found FOR$IOS_FILNOTFOU. A file with the specified name could not be found during an open operation. (continued on next page) Run-Time Messages A-7 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 30 severe (30): Open failure FOR$IOS_OPEFAI. An error was detected by the DIGITAL Fortran 90 RTL I/O system while attempting to open a file in an OPEN, INQUIRE, or other I/O statement. This message is issued when the error condition is not one of the more common conditions for which specific error messages are provided. It can occur when an OPEN operation was attempted for one of the following: o Segmented file that was not on a disk or a raw magnetic tape o Standard I/O file that had been closed 31 severe (31): Mixed file access modes FOR$IOS_MIXFILACC. An attempt was made to use any of the following combinations: o Formatted and unformatted operations on the same unit o An invalid combination of access modes on a unit, such as direct and sequential o A DIGITAL Fortran 90 RTL I/O statement on a logical unit that was opened by a program coded in another language 32 severe (32): Invalid logical unit number FOR$IOS_INVLOGUNI. A logical unit number greater than 2,147,483,647 or less than zero was used in an I/O statement. (continued on next page) A-8 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 33 severe (33): ENDFILE error FOR$IOS_ENDFILERR. One of the following conditions occurred: o The file was not a sequential organization file with variable-length records. o The file was not opened for sequential or append access. o An unformatted file did not contain segmented records. o The DIGITAL Fortran 90 RTL I/O system detected an error during execution of an ENDFILE statement. 34 severe (34): Unit already open FOR$IOS_UNIALROPE. A DEFINE FILE statement specified a logical unit that was already opened. 35 severe (35): Segmented record format error FOR$IOS_SEGRECFOR. An invalid segmented record control data word was detected in an unformatted sequential file. The file was probably either created with RECORDTYPE='FIXED' or 'VARIABLE' in effect, or was created by a program written in a language other than Fortran or Fortran 90. 36 severe (36): Attempt to access non-existent record FOR$IOS_ATTACCNON. A direct-access READ or FIND statement attempted to access beyond the end of a relative file (or a sequential file on disk with fixed-length records) or access a record that was previously deleted in a relative file. 37 severe (37): Inconsistent record length FOR$IOS_INCRECLEN. An attempt was made to open a direct access file without specifying a record length. (continued on next page) Run-Time Messages A-9 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 38 severe (38): Error during write FOR$IOS_ERRDURWRI. The DIGITAL Fortran 90 RTL I/O system detected an error condition during execution of a WRITE statement. 39 severe (39): Error during read FOR$IOS_ERRDURREA. The DIGITAL Fortran 90 RTL I/O system detected an error condition during execution of a READ statement. 40 severe (40): Recursive I/O operation FOR$IOS_RECIO_OPE. While processing an I/O statement for a logical unit, another I/O operation on the same logical unit was attempted, such as a function subprogram that performs I/O to the same logical unit that was referenced in an expression in an I/O list or variable format expression. 41 severe (41): Insufficient virtual memory FOR$IOS_INSVIRMEM. The DIGITAL Fortran 90 RTL attempted to exceed its available virtual memory while dynamically allocating space. To overcome this problem, increase the per-process data limit by using the limit (C shell) or ulimit (Bourne and Korn shell) commands before you run this program again (see Chapter 1 of the user manual). Determine whether the maximum per-process data size is already allocated by checking the value of the maxdsiz parameter in the system configuration or sysconfigtab file. If necessary, increase its value. Changes do not take effect until the system has been rebooted (you do not need to rebuild the kernel if you modify sysconfigtab). For more information about system configuration parameters, see the DIGITAL UNIX System Tuning and Performance Management guide. Before you try to run this program again, wait until the new system resources take effect. (continued on next page) A-10 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 42 severe (42): No such device FOR$IOS_NO_SUCDEV. A pathname included an invalid or unknown device name when an OPEN operation was attempted. 43 severe (43): File name specification error FOR$IOS_FILNAMSPE. A pathname or file name given to an OPEN or INQUIRE statement was not acceptable to the DIGITAL Fortran 90 RTL I/O system. 44 severe (44): Inconsistent record type FOR$IOS_INCRECTYP. The RECORDTYPE value in an OPEN statement did not match the record type attribute of the existing file that was opened. 45 severe (45): Keyword value error in OPEN statement FOR$IOS_KEYVALERR. An improper value was specified for an OPEN or CLOSE statement specifier requiring a value. (continued on next page) Run-Time Messages A-11 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 46 severe (46): Inconsistent OPEN/CLOSE parameters FOR$IOS_INCOPECLO. Specifications in an OPEN or CLOSE statement were inconsistent. Some invalid combinations follow: o READONLY or ACTION='READ' with STATUS='NEW' or STATUS='SCRATCH' o READONLY with STATUS='REPLACE', ACTION='WRITE', or ACTION= 'READWRITE' o ACCESS='APPEND' with READONLY, ACTION='READ', STATUS='NEW', or STATUS='SCRATCH' o DISPOSE='SAVE', 'PRINT', or 'SUBMIT' with STATUS='SCRATCH' o DISPOSE='DELETE' with READONLY o CLOSE statement STATUS='DELETE' with OPEN statement READONLY o ACCESS='APPEND' with STATUS='REPLACE' o ACCESS='DIRECT' or 'KEYED' with POSITION='APPEND', 'ASIS', or 'REWIND' 47 severe (47): Write to READONLY file FOR$IOS_WRIREAFIL. A write operation was attempted to a file that was declared ACTION='READ' or READONLY in the OPEN statement that is currently in effect. 48 severe (48): Invalid argument to Fortran Run-Time Library FOR$IOS_INVARGFOR. The compiler passed an invalid or improperly coded argument to the DIGITAL Fortran 90 RTL. This can occur if the compiler is newer than the RTL in use. (continued on next page) A-12 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 51 severe (51): Inconsistent file organization FOR$IOS_INCFILORG. The file organization specified in an OPEN statement did not match the organization of the existing file. 53 severe (53): No current record FOR$IOS_NO_CURREC. Attempted to execute a REWRITE statement to rewrite a record when the current record was undefined. To define the current record, execute a successful READ statement. You can optionally perform an INQUIRE statement on the logical unit after the READ statement and before the REWRITE statement. No other operations on the logical unit may be performed between the READ and REWRITE statements. 55 severe (55): DELETE error FOR$IOS_DELERR. An error condition was detected by the DIGITAL Fortran 90 RTL I/O system during execution of a DELETE statement. 57 severe (57): FIND error FOR$IOS_FINERR. The DIGITAL Fortran 90 RTL I/O system detected an error condition during execution of a FIND statement. 58[1] info (58): Format syntax error at or near xx FOR$IOS_FMTSYN. Check the statement containing xx, a character substring from the format string, for a format syntax error. For information about FORMAT statements, refer to the language reference manual. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) Run-Time Messages A-13 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 59 severe (59): List-directed I/O syntax error FOR$IOS_LISIO_SYN[2]. The data in a list-directed input record had an invalid format, or the type of the constant was incompatible with the corresponding variable. The value of the variable was unchanged. 60 severe (60): Infinite format loop FOR$IOS_INFFORLOO. The format associated with an I/O statement that included an I/O list had no field descriptors to use in transferring those values. 61 severe or info[3] (61): Format/variable-type mismatch FOR$IOS_FORVARMIS[2]. An attempt was made either to read or write a real variable with an integer field descriptor (I, L, O, Z, B), or to read or write an integer or logical variable with a real field descriptor (D, E, or F). To suppress this error message, see the description of -check noformat in f90(1) or the user manual. 62 severe (62): Syntax error in format FOR$IOS_SYNERRFOR. A syntax error was encountered while the RTL was processing a format stored in an array or character variable. [2]The_ERR_transfer_is_taken_after_completion_of_the_I/O_________ statement for error numbers 59, 61, 63, 64, and 68. The resulting file status and record position are the same as if no error had occurred. However, other I/O errors take the ERR transfer as soon as the error is detected, so file status and record position are undefined. [3]For errors 61 and 63, the severity depends on the -check keywords used during compilation (f90 command). (continued on next page) A-14 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 63 error or info[3] (63): Output conversion error FOR$IOS_OUTCONERR[2]. During a formatted output operation, the value of a particular number could not be output in the specified field length without loss of significant digits. When this situation is encountered, the overflowed field is filled with asterisks to indicate the error in the output record. If no ERR address has been defined for this error, the program continues after the error message is displayed. To suppress this error message, see the description of -check nooutput_conversion in f90(1) or the user manual. 64 severe (64): Input conversion error FOR$IOS_INPCONERR[2]. During a formatted input operation, an invalid character was detected in an input field, or the input value overflowed the range representable in the input variable. The value of the variable was set to zero. 65 error (65): Floating invalid FOR$IOS_FLTINV. During an arithmetic operation, the floating-point values used in a calculation were invalid for the type of operation requested or invalid exceptional values. For example, when requesting a log of the floating-point values 0.0 or a negative number. For certain arithmetic expressions, specifying the -check nopower option can suppress this message (see f90(1) or the user manual) . For information on allowing exceptional IEEE values, see the user manual. ) [2]The_ERR_transfer_is_taken_after_completion_of_the_I/O_________ statement for error numbers 59, 61, 63, 64, and 68. The resulting file status and record position are the same as if no error had occurred. However, other I/O errors take the ERR transfer as soon as the error is detected, so file status and record position are undefined. [3]For errors 61 and 63, the severity depends on the -check keywords used during compilation (f90 command). (continued on next page) Run-Time Messages A-15 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 66 severe (66): Output statement overflows record FOR$IOS_OUTSTAOVE. An output statement attempted to transfer more data than would fit in the maximum record size. 67 severe (67): Input statement requires too much data FOR$IOS_INPSTAREQ. Attempted to read more data than exists in a record with an unformatted READ statement or with a formatted sequential READ statement from a file opened with a PAD specifier value of 'NO'. 68 severe (68): Variable format expression value error FOR$IOS_VFEVALERR[2]. The value of a variable format expression was not within the range acceptable for its intended use; for example, a field width was less than or equal to zero. A value of 1 was assumed, except for a P edit descriptor, for which a value of zero was assumed. 69[1] error (69): Process interrupted (SIGINT) FOR$IOS_SIGINT. The process received the signal SIGINT. Determine source of this interrupt signal (described in signal(3)). 70[1] severe (70): Integer overflow FOR$IOS_INTOVF. During an arithmetic operation, an integer value exceeded byte, word, or longword range. The result of the operation was the correct low-order part. See the Data Representation chapter in the user manual for ranges of the various integer data types. Consider specifying a larger integer data size. (modify source program or, for an INTEGER declaration, possibly use the f90 option -integer_size nn). [1]Identifies_errors_not_returned_by_IOSTAT._____________________ [2]The ERR transfer is taken after completion of the I/O statement for error numbers 59, 61, 63, 64, and 68. The resulting file status and record position are the same as if no error had occurred. However, other I/O errors take the ERR transfer as soon as the error is detected, so file status and record position are undefined. (continued on next page) A-16 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 71[1] severe (71): Integer divide by zero FOR$IOS_INTDIV. During an integer arithmetic operation, an attempt was made to divide by zero. The result of the operation was set to the dividend, which is equivalent to division by 1. 72[1] error (72): Floating overflow FOR$IOS_FLTOVF. During an arithmetic operation, a floating-point value exceeded the largest representable value for that data type. See the Data Representation chapter in the user manual for ranges of the various data types. 73[1] error (73): Floating divide by zero FOR$IOS_FLTDIV. During a floating-point arithmetic operation, an attempt was made to divide by zero. 74[1] error (74): Floating underflow FOR$IOS_FLTUND. During an arithmetic operation, a floating-point value became less than the smallest finite value for that data type. Depending on the values of the -fpen option (see the user manual), the underflowed result was either set to zero or allowed to gradually underflow. See the Data Representation chapter in the user manual for ranges of the various data types. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) Run-Time Messages A-17 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 75[1] error (75): Floating point exception FOR$IOS_SIGFPE. A floating-point exception occurred. Core dump file created. Possible causes include: o Division by zero o Overflow o Invalid operation, such as subtraction of infinite values, multiplication of zero by infinity (without signs), division of zero by zero or infinity by infinity o Conversion of floating-point to fixed-point format when an overflow prevents conversion 76[1] error (76): IOT trap signal FOR$IOS_SIGIOT. Core dump file created. Examine core dump for possible cause of this IOT signal. For more information about signals, see the user manual . ) 77[1] severe (77): Subscript out of range FOR$IOS_SUBRNG. An array reference was detected outside the declared array bounds. 78[1] error (78): Process killed (SIGTERM) FOR$IOS_SIGTERM. The process received the signal SIGTERM. Determine source of this software termination signal (described in signal(3)). 79[1] error (79): Process quit (SIGQUIT) FOR$IOS_SIGQUIT. The process received the signal SIGQUIT. Core dump file created. Determine source of this quit signal (described in signal(3)). [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) A-18 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 95[1] info (95): Floating-point conversion failed FOR$IOS_FLOCONFAI. The attempted unformatted read or write of nonnative floating-point data failed because the floating-point value: o Exceeded the allowable maximum value for the equivalent native format and was set equal to infinity (plus or minus) o Was infinity (plus or minus) and was set to infinity (plus or minus) o Was invalid and was set to not a number (NaN) Very small numbers are set to zero (0). This error could be caused by the specified nonnative floating-point format not matching the floating-point format found in the specified file. Check the following: o The correct file was specified. o The record layout matches the format DIGITAL Fortran 90 is expecting. o The ranges for the data being used (the Data Representation chapter in the user manual) o The correct nonnative floating-point data format was specified (the Unformatted Data Conversion chapter in the user manual). 108 severe (108): Cannot stat file FOR$IOS_CANSTAFIL. Attempted stat operation on the indicated file failed. Make sure correct file and unit were specified. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) Run-Time Messages A-19 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 120 severe (120): Operation requires seek ability FOR$IOS_OPEREQSEE. Attempted an operation on a file that requires the ability to perform seek operations on that file. Make sure the correct unit, directory path, and file were specified. 130[1] severe (130): User breakpoint (SIGTRAP) FOR$IOS_BRK_USERBP. Break exception generated a SIGTRAP signal (described in signal(3)). Core dump file created. Examine core dump for possible cause. 131[1] severe (131): Kernel breakpoint (SIGTRAP) FOR$IOS_BRK_KERNELBP. Break exception generated a SIGTRAP signal (described in signal(3)). Core dump file created. Examine core dump for possible cause. 135[1] severe (135): User single step (SIGTRAP) FOR$IOS_BRK_SSTEPBP. Break exception generated a SIGTRAP signal (described in signal(3)). Core dump file created. Examine core dump for possible cause. 136[1] severe (136): Overflow check (SIGTRAP) FOR$IOS_BRK_OVERFLOW. Break exception generated a SIGTRAP signal (described in signal(3)). Core dump file created. The cause is an integer overflow. Try recompiling with the -check overflow option (perhaps with the decfort_dump_flag environment variable set) or examine the core dump file to determine the source code in error. 137[1] severe (137): Divide by zero check (SIGTRAP) FOR$IOS_BRK_DIVZERO. Break exception generated a SIGTRAP signal (described in signal(3)). Core dump file created. Examine core dump file for possible cause. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) A-20 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 138[1] severe (138): Array index out of bounds (SIGTRAP) FOR$IOS_BRK_RANGE. Break exception generated a SIGTRAP signal (described in signal(3)). Core dump file created. The cause is an array subscript that is outside the dimensioned boundaries of that array. Either recompile with the -check bounds option (perhaps with the decfort_dump_flag environment variable set) or examine the core dump file to determine the source code in error. 139[1] severe (139): Array index out of bounds for index nn (SIGTRAP) FOR$IOS_BRK_RANGE2. Break exception generated a SIGTRAP signal (described in signal(3)). Core dump file created. The cause is an array subscript that is outside the dimensioned boundaries of the array index n. Either recompile with the -check bounds option (perhaps with the decfort_dump_flag environment variable set) or examine the core dump file to determine the source code in error. 140[1] severe (140): Floating inexact FOR$IOS_FLTINE. A floating-point arithmetic or conversion operation gave a result that differs from the mathematically exact result. This trap is reported if the rounded result of an IEEE operation is not exact. 144[1] severe (144): reserved operand FOR$IOS_ROPRAND. The DIGITAL Fortran RTL encountered an reserved operand. Please report the problem to DIGITAL. 145[1] severe (145): Assertion error FOR$IOS_ASSERTERR. The DIGITAL Fortran RTL encountered an assertion error. Please report the problem to DIGITAL. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) Run-Time Messages A-21 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 146[1] severe (146): Null pointer error FOR$IOS_NULPTRERR. Attempted to use a pointer that does not contain an address. Modify the source program, recompile, and relink. 147[1] severe (147): stack overflow FOR$IOS_STKOVF. The DIGITAL Fortran RTL encountered a stack overflow while executing your program. To increase your stack size limit, see the getting started chapter in the user manual. 148[1] severe (148): String length error FOR$IOS_STRLENERR. During a string operation, an integer value appears in a context where the value of the integer is outside the permissible string length range. Either recompile with the -check bounds option (perhaps with the decfort_dump_flag environment variable set) or examine the core file to determine the source code causing the error. 149[1] severe (149): Substring error FOR$IOS_SUBSTRERR. An array subscript is outside the dimensioned boundaries of an array. Either recompile with the -check bounds option (perhaps with the decfort_dump_flag environment variable set) or examine the core file to determine the source code causing the error. 150[1] severe (150): Range error FOR$IOS_RANGEERR. An integer value appears in a context where the value of the integer is outside the permissible range. 151[1] severe (151): Allocatable array is already allocated FOR$IOS_INVREALLOC. An allocatable array must not already be allocated when you attempt to allocate it. You must deallocate the array before it can again be allocated. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) A-22 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 152[1] severe (152): Unresolved contention for DEC Fortran RTL global resource FOR$IOS_RESACQFAI. Failed to acquire a DIGITAL Fortran 90 RTL global resource for a reentrant routine. For a multithreaded program, the requested global resource is held by a different thread in your program. For a program using asynchronous handlers, the requested global resource is held by the calling part of the program (such as main program) and your asynchronous handler attempted to acquire the same global resource. 153[1] severe (153): Allocatable array is not allocated FOR$IOS_INVDEALLOC. A Fortran-90 allocatable array or pointer must already be allocated when you attempt to deallocate it. You must allocate the array or pointer before it can again be deallocated. 256 severe (256): Unformatted I/O to unit open for formatted transfers FOR$IOS_UNFIO_FMT. Attempted unformatted I/O to a unit where the OPEN statement (FORM specifier) indicated the file was formatted. Check that the correct unit (file) was specified. If the FORM specifier was not present in the OPEN statement and the file contains unformatted data, specify FORM='UNFORMATTED' in the OPEN statement. Otherwise, if appropriate, use formatted I/O (such as list-directed or namelist I/O). [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) Run-Time Messages A-23 Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 257 severe (257): Formatted I/O to unit open for unformatted transfers FOR$IOS_FMTIO_UNF. Attempted formatted I/O (such as list-directed or namelist I/O) to a unit where the OPEN statement indicated the file was unformatted (FORM specifier). Check that the correct unit (file) was specified. If the FORM specifier was not present in the OPEN statement and the file contains formatted data, specify FORM='FORMATTED' in the OPEN statement. Otherwise, if appropriate, use unformatted I/O. 264 severe (264): operation requires file to be on disk or tape FOR$IOS_OPERREQDIS. Attempted to use a BACKSPACE statement on such devices as a terminal or pipe. 265 severe (265): operation requires sequential file organization and access FOR$IOS_OPEREQSEQ. Attempted to use a BACKSPACE statement on a file whose organization was not sequential or whose access was not sequential. A BACKSPACE statement can only be used for sequential files opened for sequential access. 266[1] error (266): Fortran abort routine called FOR$IOS_PROABOUSE. The program called abort to terminate the program. For more information on signals, see the user manual. 268[1] severe (268): End of record during read FOR$IOS_ENDRECDUR. An end-of-record condition was encountered during execution of a nonadvancing I/O READ statement that did not specify the EOR branch specifier. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ (continued on next page) A-24 Run-Time Messages Table_A-1_(Cont.)_Run-Time_Error_Messages_and_Explanations_______ Severity Level, Number, and Message Text; Condition Symbol Number_and_Explanation___________________________________________ 297[1] info (297): nn floating invalid traps FOR$IOS_FLOINVEXC. The total number of floating- point invalid data traps encountered during program execution was nn. This summary message appears at program completion. 298[1] info (298): nn floating overflow traps FOR$IOS_FLOOVFEXC. The total number of floating-point overflow traps encountered during program execution was nn. This summary message appears at program completion. 299[1] info (299): nn floating divide-by-zero traps FOR$IOS_FLODIV0EXC. The total number of floating- point divide-by-zero traps encountered during program execution was nn. This summary message appears at program completion. 300[1] info (300): nn floating underflow traps FOR$IOS_FLOUNDEXC. The total number of floating-point underflow traps encountered during program execution was nn. This summary message appears at program completion. [1]Identifies_errors_not_returned_by_IOSTAT._____________________ _________________________________________________________________ Run-Time Messages A-25