08-130r2 To: J3 From: Dan Nagle Subject: Rework Introduction Date: 2008 February 14 UTI 080 complains that we haven't yet rewritten the Introduction to fit f08. Of course we haven't, since the contents were set only very recently. This paper attempts to make the needed update. Editor: rewrite the bullet list of the second paragraph of the Introduction, on page xv, as follows: (I use o to indicate a bullet.) o Parallel Execution: Coarrays and synchronization constructs support parallel programming using single the program multiple data (SPMD) model. o Performance Enhancements: The DO CONCURRENT form of a DO-loop permits a processor greater freedom to schedule loop iterations. When using pointers and dummy arguments, the CONTIGUOUS attribute permits more optimizations. o Data Declarations and Usage: MOLD= in allocate statements can give a polymorphic variable the shape and type of another variable without copying data. A pointer can be initially associated with a target. Allocatable components can be of recursive type. The maximum rank is increased to 15. A processor is required to support at least one kind of integer with a range of at least 18 decimal digits. The real and imaginary parts of a complex entity can be accessed independently with a component-like syntax. A named constant array's shape can be inferred from its value. Further means of selecting kind values are provided. Polymorphic allocatable variables can appear on the left-hand side of intrinsic assignment. Provision is made for requesting a real kind with a specified radix. Pointer functions can denote a variable in any variable definition context. o Input/output: An OPEN statement can select a unit number that does not interfere with other unit numbers selected by the program. The G0 edit descriptor and unlimited format control ease writing records to be read in comma-separated-value (CSV) files by other applications. Recursive transfers are allowed on distinct units. o Execution control: A BLOCK construct supports block-scope declaration and use of data items. An empty CONTAINS section is allowed. Internal subprograms can be used as actual arguments. Allocatable and pointer attributes are used in generic resolution. A null pointer can be used to signal a missing non-pointer optional argument. An EXIT statement transfers control from within more named executable constructs. o Mathematical procedures: The hyperbolic trigonometric functions can have arguments of type complex. There are more mathematical functions. The ATAN2 function can be referenced by the name ATAN. o Intrinsic procedures: A FINDLOC function searches an array for a value. A BACK= argument has been added to MINLOC and MAXLOC. Further intrinsic procedures include STORAGE_SIZE and C_SIZEOF. o Programs: The STOP statement has been changed to encourage a program to provide the integer stop code (if present) as a termination status (where that makes sense). An EXECUTE_COMMAND subroutine allows a program to start another program. o Miscellaneous: COMPILER_VERSION and COMPILER_OPTION intrinsic procedures return information about the program translation phase. Impure elemental procedures process arrays in array element order.