08-130r1 To: J3 From: Dan Nagle Subject: Rework Introduction Date: 2008 February 13 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 program multiple data (SPMD) within a partitioned global address space (PGAS). 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. o Input/output: An OPEN statement can select a unit number without interfering 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. Pointer functions can denote a variable anywhere. 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 any named executable construct. 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 intrinsics include STORAGE_SIZE and C_SIZEOF. o Programs: The STOP statement has been changed to further encourage a program to provide the integer stop code (if present) as a termination status (where that makes sense). An EXECUTE_COMMAND intrinsic to allow 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 are allowed to process arrays in storage order.