08-130 To: J3 From: Dan Nagle Subject: Rework Forward Date: 2008 February 12 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 programming is introduced in an single-program-multiple-data model via coarrays, which is within the partitioned global address space family of parallel programming languages. o Other performance enhancements include the DO CONCURRENT form of a DO-loop and the CONTIGUOUS attribute for pointers and dummy arguments. o Enhancements to data declarations and handling include MOLD= in allocate statements, allowing a pointer to be initialized to point to a target, allocatable components of recursive type, and extending the maximum rank to 15. A processor must 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 may be accessed with a component-like syntax. A constant array's extents may now be inferred from its value. New means of selecting kind values are provided. Polymorphic allocatable variables are allowed in intrinsic assignment. Provision is made for requesting a decimal real type where these are supported. o Input/output enhancements include allowing an OPEN statement to select an unit number without interfering with other unit numbers selected by the program, the new G0 edit descriptor, and new form of position control intended to ease the writing of formats used to create records to be read as comma-separated-value (CSV) files by other applications. Recursive transfers are allowed to different files. o Enhancements to execution control include a new BLOCK construct allowing nested declaration and use of data items. An empty section below a CONTAINS statement is allowed to ease program development and the use of source file templates without error. Internal subprograms may be used as actual arguments. Pointer functions may appear on the left-hand side to indicate the location to receive the result of an expression. Allocatable and pointer attributes are now used in generic resolution. A null pointer may be used to signal a missing non-pointer optional argument. An EXIT statement may transfer control from within any named construct. o Enhancements to the mathematical library include extending the hyperbolic trigonometric functions to allow arguments of type complex, new mathematical functions, and a generic form of the ATAN2 function allowing it to be referenced by the name ATAN. o Enhancements to the intrinsic library include a new FINDLOC function and adding a BACK= argument to MINLOC and MAXLOC to return the last value rather than the first. Other new intrinsics include a STORAGE_SIZE and a C_SIZEOF. o Execution enhancements include enhancing the STOP statement to encourage allowing a program to provide a termination status (where that makes sense), and an EXECUTE_COMMAND intrinsic to allow a program to start another program. o Miscellaneous enhancements include new COMPILER_VERSION and COMPILER_OPTION intrinsics to enable reporting of the translation phase of a program unit. Impure elemental procedures are allowed to enable array processing in storage order where the calculation would otherwise violate the strict definition of a pure procedure.