Compaq Fortran
User Manual for
OpenVMS Alpha Systems


Previous Contents Index

7.3 List of Run-Time Messages

Table 7-1 lists the Fortran-specific errors processed by the Compaq Fortran RTL. For each error, the table shows the Fortran-specific message mnemonic (follows either FOR$_ or FOR$IOS_ for condition symbols), the Fortran-specific message number, the severity (fatal, error, or informational), the message text. For more detailed descriptions of errors processed by the Compaq Fortran RTL, see Table B-1.

Table 7-1 Summary of Run-Time Errors
Mnemonic Number1 Severity Message Text
NOTFORSPE 2 1 F not a Fortran-specific error
BUG_CHECK 8 F internal consistency check failure
SYNERRNAM 17 F syntax error in NAMELIST input
TOOMANVAL 18 F too many values for NAMELIST variable
INVREFVAR 19 F invalid reference to variable in NAMELIST input
REWERR 20 F REWIND error
DUPFILSPE 21 F duplicate file specifications
INPRECTOO 22 F input record too long
BACERR 23 F BACKSPACE error
ENDDURREA 24 F end-of-file during read
RECNUMOUT 25 F record number outside range
OPEDEFREQ 26 F OPEN or DEFINE FILE required
TOOMANREC 27 F too many records in I/O statement
CLOERR 28 F CLOSE error
FILNOTFOU 29 F file not found
OPEFAI 30 F open failure
MIXFILACC 31 F mixed file access modes
INVLOGUNI 32 F invalid logical unit number
ENDFILERR 33 F ENDFILE error
UNIALROPE 34 F unit already open
SEGRECFOR 35 F segmented record format error
ATTACCNON 36 F attempt to access non-existent record
INCRECLEN 37 F inconsistent record length
ERRDURWRI 38 F error during write
ERRDURREA 39 F error during read
RECIO_OPE 40 F recursive I/O operation
INSVIRMEM 41 F insufficient virtual memory
NO_SUCDEV 42 F no such device
FILNAMSPE 43 F file name specification error
INCRECTYP 44 F inconsistent record type
KEYVALERR 45 F keyword value error in OPEN statement
INCOPECLO 46 F inconsistent OPEN/CLOSE parameters
WRIREAFIL 47 F write to READONLY file
INVARGFOR 48 F invalid argument to Fortran Run-Time Library
INVKEYSPE 49 F invalid key specification
INCKEYCHG 50 F inconsistent key change or duplicate key
INCFILORG 51 F inconsistent file organization
SPERECLOC 52 F specified record locked
NO_CURREC 53 F no current record
REWRITERR 54 F REWRITE error
DELERR 55 F DELETE error
UNLERR 56 F UNLOCK error
FINERR 57 F FIND error
FMYSYN 58 I format syntax error at or near xxx
LISIO_SYN 3 59 F list-directed I/O syntax error
INFFORLOO 60 F infinite format loop
FORVARMIS 3 61 F or I 4 format/variable-type mismatch
SYNERRFOR 62 F syntax error in format
OUTCONERR 3,4 63 E or I 4 output conversion error
INPCONERR 3 64 F input conversion error
FLTINV 65 E floating invalid
OUTSTAOVE 66 F output statement overflows record
INPSTAREQ 67 F input statement requires too much data
VFEVALERR 3 68 F variable format expression value error
INTOVF 70 F integer overflow
INTDIV 71 F integer divide by zero
FLTOVF 72 E floating overflow
FLTDIV 73 E floating divide by zero
FLTUND 74 E floating underflow
SUBRNG 77 F subscript out of range
WRONUMARG 80 F wrong number of arguments
INVARGMAT 81 F invalid argument to math library
UNDEXP 5 82 F undefined exponentiation
LOGZERNEG 5 83 F logarithm of zero or negative value
SQUROONEG 5 84 F square root of negative value
SIGLOSMAT 5 87 F significance lost in math library
FLOOVEMAT 5 88 F floating overflow in math library
FLOUNDMAT 89 E floating underflow in math library
ADJARRDIM 6 93 F adjustable array dimension error
INVMATKEY 94 F invalid key match specifier for key direction
FLOCONFAI 95 E floating point conversion failed
FLTINE 140 F floating inexact
ROPRAND 144 F reserved operand
ASSERTERR 145 F assertion error
NULPTRERR 146 F null pointer error
STKOVF 147 F stack overflow
STRLENERR 148 F string length error
SUBSTRERR 149 F substring error
RANGEERR 150 F range error
INVREALLOC 151 F allocatable array is already allocated
RESACQFAI 152 F unresolved contention for Compaq Fortran RTL global resource
INVDEALLOC 153 F allocatable array is not allocated
UNFIO_FMT 256 F unformatted I/O to unit open for formatted transfers
FMTIO_UNF 257 F formatted I/O to unit open for unformatted transfers
DIRIO_KEY 258 F direct-access I/O to unit open for keyed access
SEQIO_DIR 259 F sequential-access I/O to unit open for direct access
KEYIO_DIR 260 F keyed-access I/O to unit open for direct access
OPERREQDIS 264 F operation requires file to be on disk or tape
OPEREQSEQ 265 F operation requires sequential file organization and access
ENDRECDUR 268 F end of record during read
FLOINCEXC 297 I nn floating invalid traps
FLOOVREXC 298 I nn floating overflow traps
FLODIV0EXC 299 I nn divide-by-zero traps
FLOUNDEXC 300 I nn floating underflow traps


1Although most error numbers are returned as IOSTAT values, the following are not: 1, 24 (END specifier), 58, 70--75, 77, 80-89, 95, 140--150, 151, 153, 266, 268 (EOR specifier), 297, 298, 299, 300. You can use condition symbols (FOR$_mnemonic or FOR$IOS_mnemonic) to obtain the number (see Section 7.2.2).
2The FOR$_NOTFORSPE error (number 1) indicates an error not reportable through any other message. If you call ERRSNS, an error of this kind returns a value of 1. Use the fifth argument of the call to ERRSNS (condval) to obtain the unique system condition value that identifies the error.
3For error numbers 59, 61, 63, 64, and 68, the ERR transfer is taken after completion of the I/O statement. The resulting file status and record position are the same as if no error had occurred. Other I/O errors take the ERR transfer as soon as the error is detected, and file status and record position are undefined.
4For errors 61 and 63, the severity depends on the /CHECK keywords in effect during compilation (see Section 2.3.9). If no ERR address is defined for error number 63, the program continues and the entire overflowed field is filled with asterisks to indicate the error in the output record.
5Function return values for error numbers 82, 83, 84, 87, 88, and 89 can be modified by means of user-written condition handlers. (See Chapter 14 for information about user-written condition handlers.)
6If error number 93 (FOR$_ADJARRDIM) occurs and a user-written condition handler causes execution to continue, any reference to the array in question may cause an access violation.

The message mnemonic shown in the first column is part of the condition status code symbols signaled by the Compaq Fortran RTL I/O support routines. You can define these symbolic values in your program by including the library module $FORDEF or $FORIOSDEF from the system-supplied default library FORSYSDEF.TLB:

If you will be using the IOSTAT specifier for error handling, you should include the $FORIOSDEF library module (instead of $FORDEF) from the FORSYSDEF.TLB library (see Section 7.2.2).

The standard Compaq Fortran error numbers that are generally compatible with other versions of Compaq Fortran are shown in the second column. Most of these error values are returned to IOSTAT variables when an I/O error is detected.

The codes in the third column indicate the severity of the error conditions (see Section 7.1.2).

For more detailed descriptions of errors processed by the Compaq Fortran RTL, see Table B-1 or type the following DCL command to obtain a list of mnemonics (such as ADJARRDIM):


$ HELP FORTRAN ERROR RUN_TIME

For More Information:


Chapter 8
Data Types and Representation

This chapter describes the following topics:

In figures in this chapter, the symbol :A specifies the address of the byte containing bit 0, which is the starting address of the represented data element.

Compaq Fortran expects numeric data to be in native little endian order, in which the least-significant, right-most bit (bit 0) or byte has a lower address than the most-significant, left-most bit (or byte).

For More Information:

8.1 Summary of Data Types and Characteristics

Table 8-1 lists the intrinsic data types provided by Compaq Fortran, the storage required, and valid numeric ranges.

Table 8-1 Compaq Fortran Intrinsic Data Types, Storage, and Numeric Ranges
Data Type Bytes Description
BYTE (INTEGER*1) 1 (8 bits) A BYTE declaration is a signed integer data type equivalent to INTEGER*1 or INTEGER (KIND=1).
INTEGER 1, 2, 4, or 8 Signed integer whose size is controlled by a kind type parameter or, if a kind type parameter (or size specifier) is omitted, certain FORTRAN command qualifiers (see Section 8.2.1).
INTEGER (KIND=1)
INTEGER*1
1 (8 bits) Signed integer value from --128 to 127 (--2**7 to 2**7--1). Unsigned values from 0 to 255 (2**8-1) 1.
INTEGER (KIND=2)
INTEGER*2
2 (16 bits) Signed integer value from --32,768 to 32,767 (--2**15 to 2**15--1). Unsigned values from 0 to 65535 (2**16-1) 1.
INTEGER (KIND=4)
INTEGER*4
4 (32 bits) Signed integer value from --2,147,483,648 to 2,147,483,647 (--2**31 to 2**31--1). Unsigned values from 0 to 4,294,967,295 (2**32-1) 1.
INTEGER (KIND=8)
INTEGER*8
8 (64 bits) Signed integer value from --9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 (--2**63 to 2**63--1).
LOGICAL 1, 2, 4, or 8 Logical value whose size is controlled by a kind type parameter or, if a kind type parameter (or size specifier) is omitted, certain FORTRAN command qualifiers (see Section 8.3).
LOGICAL (KIND=1)
LOGICAL*1
1 (8 bits) Logical values .TRUE. or .FALSE. 2
LOGICAL (KIND=2)
LOGICAL*2
2 (16 bits) Logical values .TRUE. or .FALSE. 2
LOGICAL (KIND=4)
LOGICAL*4
4 (32 bits) Logical values .TRUE. or .FALSE. 2
LOGICAL (KIND=8)
LOGICAL*8
8 (64 bits) Logical values .TRUE. or .FALSE. 2
REAL 4 or 8 Real floating-point numbers whose size is controlled by a kind type parameter or, if a kind type parameter (or size specifier) is omitted, by using the FORTRAN command /REAL_SIZE qualifier. To control the floating-point format used in memory, use the FORTRAN command /FLOAT qualifier.
REAL (KIND=4)
REAL*4
4 (32 bits) Single-precision real floating-point values in IEEE S_float or VAX F_float formats.

IEEE S_float normalized values range from 1.17549435E--38 to 3.40282347E38. Values between 1.17549429E--38 and 1.40129846E--45 are denormalized 3.

VAX F_float values range from 0.293873588E--38 to 1.7014117E38.

DOUBLE PRECISION
REAL (KIND=8)
REAL*8
8 (64 bits) Double-precision real floating-point values in IEEE T_float, VAX G_float, or VAX D_float formats.

IEEE T_float normalized values range from 2.2250738585072013D--308 to 1.7976931348623158D308. Values between 2.2250738585072008D--308 and 4.94065645841246544D--324 are denormalized 3.

VAX G_float values range from 0.5562684646268004D--308 to 0.89884656743115785407D308.

VAX D_float values range from 0.2938735877055719D--38 to 1.70141183460469229D38.

You can change the data size of DOUBLE PRECISION declarations from REAL (KIND=8) to REAL (KIND=16) with the FORTRAN command /DOUBLE_SIZE qualifier.

REAL (KIND=16)
REAL*16
16 (128 bits) Extended-precision real floating-point values in Alpha IEEE-like X_float format ranging from 6.4751751194380251109244389582276465524996Q-4966 to 1.189731495357231765085759326628007016196477Q4932. The smallest normalized number is 3.362103143112093506262677817321753Q-4932.
COMPLEX 8 or 16 Complex floating-point numbers whose size is controlled by a kind type parameter or, if a kind type parameter (or size specifier) is omitted, the FORTRAN command /REAL_SIZE qualifier. To control the floating-point format used in memory, use the FORTRAN command /FLOAT qualifier.
COMPLEX (KIND=4)
COMPLEX*8
8 (64 bits) Single-precision complex floating-point values in a pair of floating-point parts: real and imaginary. Use the IEEE S_float or VAX F_float format.

IEEE S_float real and imaginary parts range from 1.17549435E--38 to 3.40282347E38. Values between 1.17549429E--38 and 1.40129846E--45 are denormalized 3.

VAX F_float real and imaginary parts range from 0.293873588E--38 to 1.7014117E38.

DOUBLE COMPLEX
COMPLEX (KIND=8)
COMPLEX*16
16 (128 bits) Double-precision complex floating-point values in a pair of parts: real and imaginary. Use the IEEE T_float, VAX G_float, or VAX D_float format.

IEEE T_float format real and imaginary parts each range from 2.2250738585072013D-308 to 1.7976931348623158D308. Values between 2.2250738585072008D--308 and 4.94065645841246544D--324 are denormalized 3.

VAX G_float format real and imaginary parts each range from 0.5562684646268004D--308 to 0.89884656743115785407D308.

VAX D_float format real and imaginary parts each range from 0.2938735877055719D--38 to 1.70141183460469229D38.

CHARACTER 1 byte (8 bits) per character Character data represented by character code convention. Character declarations can be in the form CHARACTER(LEN= n), CHARACTER( n), or CHARACTER* n, where n is the number of bytes or n can be (*) to indicate passed-length format.
HOLLERITH 1 byte (8 bits) per Hollerith character Hollerith constants.


1This range is allowed for assignment to variables of this type, but the data type is treated as signed in arithmetic operations.
2Logical data type ranges correspond to their comparable integer data type ranges. For example, in LOGICAL (KIND=2) L, the range for L is the same as the range for INTEGER (KIND=2) integers.
3You cannot write a constant for a denormalized number. For more information on floating-point underflow, see Section 2.3.21.

In addition to the intrinsic numeric data types, you can define nondecimal (binary, octal, or hexadecimal) constants as explained in the Compaq Fortran Language Reference Manual.


Previous Next Contents Index