[J3] For review: Official US position on features for F202X
steve at stevelionel.com
Wed Mar 6 14:45:30 EST 2019
Attached is a draft of a paper listing all of the features that J3 has
approved for being on the F202X request list. This ends up being the US
National Body list for WG5 consideration in Tokyo. Please look it over
and let me know of any omissions or errors. I'll make this a WG5 paper
on Monday (assuming no further edits.) Special thanks to Bill Long for
-------------- next part --------------
To: J3 J3/##-###
From: Bill Long & Steve Lionel & Dan Nagle & Malcolm Cohen
Subject: US Feature list proposals for F202X at the end of M218
This paper summarizes the US National Body list of requested features
for the next revision of the Fortran standard, aka F202X. Many of these
proposals have J3 papers with detailed requirements, descriptions and/or
edits. No priority order is implied.
I. Source Form changes.
US01. Allow much longer statement lines and overall statement
length. (m218: 19-138r1, 11-1)
US02. Require the processor to report cases where over-long lines or
statements result in lost information. (m218: 19-149r1, uc)
II. Intrinsic Library Routines and Modules.
US03. New ISO_FORTRAN_STRINGS intrinsic module containing procedures
1. EXTRACT() Extract a substring of a string.
2. INSERT() Insert a string into a string at a location.
3. REMOVE() Remove a substring from a string.
4. REPLACE() Replace characters by a substring.
5. SPLIT() Split a string into two strings where a character from
a set is found.
The intent is that these replace functionality lost when Part 2
of the old Fortran standard was deleted. (m218: 19-160, uc)
US04. Trig functions with arguments in degrees and arc versions with
results in degrees. (m218: 19-145r3, uc)
US05. Trig functions with arguments implicitly scaled by PI. (m218:
US06. SELECTED_LOGICAL_KIND to return a KIND of logical based on its
minimum storage size. (m218: 19-147r1, uc)
US07. Additional named constants, LOGICAL8, LOGICAL16, LOGICAL32,
LOGICAL64, in ISO_FORTRAN_ENV to specify KINDS supported for type
LOGICAL. (m218: 19-139r1, uc)
US08. Additional named constant, REAL16, in ISO_FORTRAN_ENV to specify
whether the processor supports a 16-bit REAL KIND. (m218:
US09. CSTRING and FSTRING for converting between Fortran and C
strings. (m217: 18-258r2, uc)
III. I/O formatting capabilities.
US10. AT format editing specifier. Has the effect of TRIM on the
corresponding character list item before output. (m218: 19-137,
US11. Control over leading zeros in output of REAL values.
IV. Coarray / parallel processing.
US12. Allow an array of a type that has an allocatable coarray
component. (m217: 18-280r1, uc)
US13. Syntax and semantics for a "Put with Notify" operation. (m217:
V. Misc smallish features.
US14. Allow deferred-length character variables in more locations,
including as actual arguments corresponding to IOMSG and ERRMSG
arguments for similar variables in specifiers. Also allow for
internal I/O. (m217: 18-279r1, uc)
US15. VIRTUOUS procedures. A form of Super-Pure that disallows
references to global data. (m217: 18-273r1, uc)
VI. Declaration and Syntax aids for Generic Programming
US16. TYPEOF and CLASSOF type declarations to indicate the object being
declared has the same type/class as another object. Useful to
ensure a local variable in a procedure has the same type as a
dummy argument, or that two dummy arguments have the same
type. (m218: 19-142r1, uc)
US17. Syntax to specify an element or section of an array with
arbitrary rank. (m218, 19-150, uc)
US18. Syntax for generic specification of rank and bounds of an
object. (m218: 19-152r1, uc)
VII. Incomplete or Undecided Features.
US19. Protected Components:
1. Choice of protected components over protected types (m218: 19-135r1, uc)
2. Technical issues to be resolved for protected components (m218: 19-161)
US20. Reduction specifier for DO CONCURRENT (m218: 19-158). Generally
supported, but details of the specification and syntax need more
US21. Typed enums. M217 paper 18-256r1 contains extensive discussion of
this feature along with a list of still-open questions.
US22. Conditional expressions. Permits conditional evaluation of parts
of the logical expression in an IF statement. M217 paper 18-274
contains extensive discussion and alternatives for syntax and
semantics. Generally supported, but needs more work.
US23. BITS data type. M218 paper 19-132 observed inconsistent
extensions by compilers in the allowed use of boz constants. It
was suggested that a more general solution involving BITS type
and specific conversion rules would clarify the issue. (m218:
19-146r1, uc). Additionally, the BITS feature provides an alternative
to the use of unsigned integers for bit-manipulation use
cases. The BITS type has been previously specified for Fortran
2008. (m218: 19-159, info only.)
US24. Generics / templates / macros / containers for generic
programming. (m217: 18-281r1, uc (templates)), and (m218: 18-154
US25: Exceptions. Discussions continue on the J3 email list. (m218:
More information about the J3