When Default KIND Isn't Good Enough

Technical Specification and Syntax

To:	J3

From:	Craig Dedo

Date:	December 14, 2000

Subject:	When Default KIND Isn't Good Enough - Technical Specification and Syntax

Rationale

Within the last few years, 64-bit computers have become much more available and many more Fortran compilers offer a 64-
bit integer data type. However, in most such cases the default KIND for integers is 32 bits. The current Fortran standard requires the use of default integers for the results of some inquiry functions and use in some input/output operations. This requirement limits the usefulness of these features with Fortran processors which support integer KINDs larger than 32 bits.

In many important cases, it is necessary or desirable to use numbers larger than 2**32 for the results of certain inquiry functions or input/output operations. This is particularly true in programs that use very large arrays or files with a very large number of records.

An analysis of the current specifications for input/output specifiers that use integer values reveals several irregularities. For example, the NUMBER and RECL specifiers in the INQUIRE statement are limited to default integer values. However, the unit number and the RECL specifier in the OPEN statement can use any KINDs of integer.

The Fortran standard should remove these limitations and irregularities.

Technical Specification and Syntax

Allow the use of any integer KIND that is defined on the processor for the results of intrinsic procedures that return integer values and for the I/O specifiers that use integer values.

Add an optional KIND=scalar-integer-initialization-expr argument to the following intrinsic procedures.

COUNT	LEN	MINLOC	SHAPE
INDEX	LEN_TRIM	SCAN	UBOUND
LBOUND	MAXLOC	SIZE	VERIFY

Extend all keywords for I/O specifiers to use any integer KIND. This includes the keyword specifiers in the following list.

ID	IOSTAT	NUMBER	RECL
IOLENGTH	NEXTREC	POS	SIZE

References

00-007r3, Fortran 2000 Draft

00-308, When Default KIND Isn't Good Enough

[End of J3 / 00-350]