8. Intrinsics Module

The Greek word for leisure was scholê ( $ \sigma$$ \chi$o$ \lambda$$ \eta$), whence our school. For leisure meant to them opportunity for pursuits of intrinsic worth, such as a man would choose for his own sake - De Burgh

The Intrinsics Module provides a thin wrapper for the standard F90 intrinsic types (Integer, Real, Character, and Logical), giving them the fundamental procedures necessary to be considered a class (in the CÆSAR sense). These fundamental procedures are Initialize, Finalize, and Valid_State. The CÆSAR intrinsic types are the pointered versions of standard F90 intrinsic types for multi-dimensional arrays, and non-pointered (static) scalars. The Valid_State procedures also have a version for non-pointered arrays, which can be accessed by the name Valid_State_NP.

In addition to the fundamental class procedures, the Intrinsics Module provides some functions that are ``missing'' in F90:

Function Intrinsic Type
ALL Logical Scalars
ANY Logical Scalars
COUNT Integer/Logical Scalars
MaxVal Real and Integer Scalars
MinVal Real and Integer Scalars
SUM Real and Integer Scalars

and some useful functions involving intrinsics:

Function Description
.InInterval. True if argument is in the specified interval.
.InSet. True if argument is in the specified set.
.NotInInterval. True if argument is not in the specified interval.
.NotInSet. True if argument is not in the specified set.
.VeryClose. True if arguments are within 10 times the local spacing distance between variables.

In addition to the F90 standard intrinsic types, the Status Class is defined here. The Status Class is, in a way, even more basic than the intrinsic types, as it is used in the Initialization and Finalization of the intrinsic types themselves. Several procedures associated with the manipulation of Status objects are included.

The Intrinsics Module code listing contains additional documentation.

Michael L. Hall