Hi Jerry!

Am 03.06.26 um 10:42 PM schrieb Jerry D:
The following implements the last of the EX formatting work. The attached patch has been regression tested on x86_64. The test case provided round trip testing to ensure what we read is what we wrote.

OK for mainline?

Works here, LGTM.  OK for mainline.

The only missing piece seems to be for list-directed read,
see in particular F2023:13.7.2.3.2 F editing, clause (7).

(Intel and NAG support this.)

Thanks for the great work!

Harald

Best regards,

Jerry
---
Fortran: [PR93727] Add EX format READ (read_ex)

Implement read_ex in libgfortran to handle EX edit-descriptor input
per Fortran 2023 13.7.2.3.6.  The input field may contain:

   * a hexadecimal-significand form (0X<sig>P<exp>) passed directly
     to the C strtod/strtold family for exact bit-for-bit conversion;
   * any form acceptable for Fw.d input (decimal fallback), including
     INF and NAN representations.

For decimal input without a decimal point the d field of the EX.w.d
descriptor adjusts the exponent exactly as for Fw.d.  BN/BZ blank
handling and the kP scale factor are also supported via the shared
decimal path.

Assisted by: Claude Sonnet 4.6

     PR fortran/93727

libgfortran/ChangeLog:

     * io/read.c (read_ex): New function implementing EX format read.
     * io/io.h (read_ex): Declare.
     * io/transfer.c (formatted_transfer_scalar_read): Add FMT_EX case
     dispatching to read_ex.

gcc/testsuite/ChangeLog:

     * gfortran.dg/EXformat_4.F90: New test covering EX format read
     for kind=4 and 8 (always) and kind=10, 16 (when available):
     hex-significand literals, lowercase prefix, negative binary
     exponent, decimal fallback, d-field adjustment, INF/NAN, zero
     field, and round-trips through write_ex.
---


Reply via email to