[patch, fortran]PR25829 Add support for F2003 I/O features
Tobias Burnus
burnus@net-b.de
Tue Apr 1 11:47:00 GMT 2008
Jerry DeLisle wrote:
> The attached updated patch incorporates all constraints and checks
> listed above in the front end. It also implements the DP and DC format
> specifiers.
>
Thanks. Some more issues and remarks. I will try to review the patch later.
* There should be a "Fortran 2003:" in the error message.
+ if (gfc_notify_std (GFC_STD_F2003, "DP format specifier not
allowed "
* decimal= in INQUIRE does not seem to be supported:
inquire(unit=99, decimal=d)
Same for:
inquire(99,encoding=str)
I also think the error messages can be improved:
inquire(99, BLANK='foo')
1
Error: Syntax error in INQUIRE statement at (1)
NAG has a better error message: "Item for i/o keyword BLANK is not a
variable"
* write(99,decimal=foo) 4.4, 3.3
This gives a run-time error message, but it can be detected at compile
time. NAG f95 has:
Error: DECIMAL= is incompatible with unformatted i/o
Actually, the run-time error message is also a bit misleading:
Fortran runtime error: Missing format for FORMATTED data transfer
* Analogously for the following:
write(99,DELIM=str)
which is also not allowed for unformatted I/O
* "Error: F2003 Feature: SIGN=specifier at (1) not implemented"
Can you add a space after the "=" sign?
* write(99,id=id)
This is invalid as asynchronous="yes" needs to be specified as well.
However, this is not enforced in the front end (or library).
* The following program crashes in _gfortran_st_wait (transfer.c:2966)
("Invalid write of size 4"):
integer :: id
open(99, asynchronous='yes')
write(99,asynchronous='yes',id=id,fmt=*)
wait(99,id=id)
end
* The following program is invalid, but only detectable at run time.
Should there be a run-time check? Maybe one should postpone this until
the real asynchronous is available:
integer :: id
open(99, asynchronous='no')
write(99,asynchronous='yes',id=id,fmt=*)
end
But I think we need such a check for the real implementation.
I played a bit around with the decimal comma support and it nicely works :-)
Tobias
More information about the Fortran
mailing list