[J3] For review: Official US position on features for F202X

Steve Lionel 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 
assembling this!


-------------- 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:
        19-157r2, uc)

  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:
        19-139r1, uc)

  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. 
        (m218:19-156r1, uc)

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:
        18-277r1, uc)

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 mailing list