------- Comment #2 from kendrick dot killian at colostate dot edu 2008-01-16 00:50 ------- Subject: Re: inquire statement , direct= specifier incorrectly returns YES
There is a three part definition of correct answer that mirrors arguments in the formatted/unformatted thread. Noting that the standard, 9.6.1.9, requires that DIRECT answer based on the "set of allowed access methods". Condition 1. (NOT the reported bug) inquire on a file NOT connected/opened INQUIRE(NAME=existing_file,...) Unless the file system maintains access methods or the runtime library has a documented way of determining those method, the correct answer is "UNKNOWN" as you stated. Assuming that nothing STOPS you from doing a direct open, YES might be acceptable but it is NOT the most informative answer as YES makes an affirmative statement about the file rather than indicating a lack of restriction. Condition 2 (The bug reported) inquire on a CONNECTED file INQUIRE(UNIT=...) Accessing a sequential unit with direct IO or sequential IO on a unit opened for direct access should be undefined and generate read errors. Errors should be sufficient to determine a unit's "allowed access methods". Even if the implementation does not generate fatal errors, as possible in the format/unformat discussion, then the data returned will be corrupt. Inquire (UNIT= should provide information needed to read/write the unit **AS OPENED** without corruption. Lastly Gfortran's response to the inquire direct= is INCONSISTENT with the response provided my other compilers. I tested Absoft OS X FORTRAN 77/90/95 Compilers 7.0b, (c) 1987-2002, Absoft Corp SUN Sun WorkShop 6 update 1 Fortran 77/90/95 6.1 2000/09/11 COMPAQ Compaq Visual Fortran Standard Edition 6.5.0 (c) 2000 g77 version 3.0.4 (Fortran Frontend version 0.5.26 20020220 (release)) With all eight the above compilers, the test program returns: default open drct=NO opened= T access=SEQUENTIAL Sequent open drct=NO opened= T access=SEQUENTIAL direct open drct=YES opened= T access=DIRECT The common response, when consistent with the standard, is certainly the preferred solution if not "correct" answer. On Jan 15, 2008, at 12:12 PM, burnus at gcc dot gnu dot org wrote: > > > ------- Comment #1 from burnus at gcc dot gnu dot org 2008-01-15 > 19:12 ------- > | correct output (produced by g77) > | default open drct=NO opened= T access=SEQUENTIAL > | Sequent open drct=NO opened= T access=SEQUENTIAL > | direct open drct=YES opened= T access=DIRECT > > How do you know which answer is correct? I think this is the same > problem as > formatted and unformatted: The answers are only correct with a certain > probability. > > One can even open an UNFORMATTED file as FORMATTED though reading > probably > produces only garbage. > > As starting point I would recommend to read: > http://groups.google.com/group/comp.lang.fortran/msg/b2ab0a6e106d977c > (and maybe also the complete thread). > > If you can then explain why a certain value is better than another, > we might > change it. (By the way, the only true answer is "UNKNOWN".) > > > -- > > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34795 > > ------- You are receiving this mail because: ------- > You reported the bug, or are watching the reporter. > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34795