A ? as input should dump the variable names of the namelist to standard output. Like PR 18874, but with libfortran. $ cat namelist.f90 program main namelist /foo/ a read (*,foo) end $ gfortran namelist.f90 && ./a.out ? At line 3 of file namelist.f90 Fortran runtime error: Invalid character in namelist $ gfortran -v Reading specs from /home/ig25/lib/gcc/i686-pc-linux-gnu/4.0.0/specs Configured with: ../gcc/configure --prefix=/home/ig25 --enable-languages=c,c++,f95 --disable-shared : (reconfigured) ../gcc/configure --prefix=/home/ig25 --disable-shared --with-gcc-version-trigger=/home/ig25/gcc/gcc/version.c --enable-languages=c,c++,f95 --no-create --no-recursion Thread model: posix gcc version 4.0.0 20041206 (experimental)
Is this a language extension? Seems likely, as the standard has no concept of stdin and stdout. Could you point to someplace where this extension is specified?
(In reply to comment #1) > Is this a language extension? Seems likely, as the standard has no concept of > stdin and stdout. Could you point to someplace where this extension is specified? It's in the comments to io.h (line 76 ff): Even more complex, during the execution of a program containing a namelist READ statement, you can specify a question mark character(?) or a question mark character preceded by an equal sign(=?) to get the information of the namelist group. By '?', the name of variables in the namelist will be displayed, by '=?', the name and value of Also, check out http://h18009.www1.hp.com/fortran/docs/lrm/lrm0372.htm . It's specified in green, which I suppose means that it is an extension. Googling for "namelist fortran question mark" will lead to other examples. Offhand, I can't find a UNIX compiler that doesn't support it. g77 also tries, but the support there is buggy (see PR 18874).
(In reply to comment #2) This is indeed and extension. See http://h18009.www1.hp.com/fortran/docs/lrm/lrm0372.htm#nm_in for the Digital/Compaq/HP specification > (In reply to comment #1) > > Is this a language extension? Seems likely, as the standard has no concept of > > stdin and stdout. Could you point to someplace where this extension is specified? > It's in the comments to io.h (line 76 ff): > Even more complex, during the execution of a program containing a > namelist READ statement, you can specify a question mark character(?) > or a question mark character preceded by an equal sign(=?) to get > the information of the namelist group. By '?', the name of variables > in the namelist will be displayed, by '=?', the name and value of > Also, check out http://h18009.www1.hp.com/fortran/docs/lrm/lrm0372.htm . > It's specified in green, which I suppose means that it is an extension. > Googling for "namelist fortran question mark" will lead to other > examples. > Offhand, I can't find a UNIX compiler that doesn't support it. g77 also > tries, but the support there is buggy (see PR 18874).
This is an extension indeed, and is incorporated in mainline by Paul's recent namelist patch. Will be included in 4.0 when it reopens.
Subject: Bug 18879 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: tobi@gcc.gnu.org 2005-06-05 23:33:52 Modified files: gcc/fortran : ChangeLog gfortran.texi trans-io.c gcc/testsuite : ChangeLog gcc/testsuite/gfortran.dg: namelist_1.f90 libgfortran : ChangeLog libgfortran/io : io.h list_read.c lock.c transfer.c write.c Added files: gcc/testsuite/gfortran.dg: namelist_11.f namelist_12.f namelist_13.f90 namelist_14.f90 namelist_15.f90 namelist_16.f90 namelist_17.f90 namelist_18.f90 namelist_19.f90 namelist_2.f90 namelist_20.f90 namelist_3.f90 pr12884.f pr17285.f90 pr17472.f pr18122.f90 pr18210.f90 pr18392.f90 pr19467.f90 pr19657.f Log message: gcc/fortran/ 2005-06-05 Jakub Jelinek <jakub@redhat.com> Backport from the mainline: 2005-04-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/17472 PR fortran/18209 PR fortran/18396 PR fortran/19467 PR fortran/19657 * fortran/trans-io.c (gfc_build_io_library_fndecls): Create declaration for st_set_nml_var and st_set_nml_var_dim. Remove declarations of old namelist functions. (build_dt): Simplified call to transfer_namelist_element. (nml_get_addr_expr): Generates address expression for start of object data. New function. (nml_full_name): Qualified name for derived type components. New function. (transfer_namelist_element): Modified for calls to new functions and improved derived type handling. libgfortran/ 2005-06-05 Jakub Jelinek <jakub@redhat.com> Backport from the mainline: 2005-04-18 Paul Thomas <pault@gcc.gnu.org> Jerry DeLisle <jvdelisle@verizon.net> * io/write.c (nml_write_obj): Provide 1 more byte for ext_name. * io/list_read.c (nml_get_obj_data): Put extra brackets in get_mem call for ext_name. These fix the bug reported by Jerry DeLisle to the fortran list and are based on his suggested fix. 2005-04-18 Paul Thomas <pault@gcc.gnu.org> * io/list_read.c (nml_touch_nodes, nml_read_obj, nml_get_obj_data): Fix memory leaks in code for derived types. 2005-04-17 Paul Thomas <pault@gcc.gnu.org> * io/list_read.c (eat_separator): at_eol = 1 replaced (zapped at some time?). 2005-04-17 Paul Thomas <pault@gcc.gnu.org> PR libgfortran/12884 PR libgfortran/17285 PR libgfortran/18122 PR libgfortran/18210 PR libgfortran/18392 PR libgfortran/18591 PR libgfortran/18879 * io/io.h (nml_ls): Declare. (namelist_info): Modify for arrays. * io/list_read.c (namelist_read): Reduced to call to new functions. (match_namelist_name): Simplified. (nml_query): Handles stdin queries ? and =?. New function. (nml_get_obj_data): Parses object name. New function. (touch_nml_nodes): Marks objects for read. New function. (untouch_nml_nodes): Resets objects. New function. (parse_qualifier): Parses and checks qualifiers. New function (nml_read_object): Reads and stores object data. New function. (eat_separator): No new_record on '/' in namelist. (finish_separator): No new_record on '/' in namelist. (read_logical): Error return for namelist. (read_integer): Error return for namelist. (read_complex): Error return for namelist. (read_real): Error return for namelist. * io/lock.c (library_end): Free extended namelist_info types. * io/transfer.c (st_set_nml_var): Modified for arrays. (st_set_nml_var_dim): Dimension descriptors. New function. * io/write.c (namelist_write): Reduced to call to new functions. (nml_write_obj): Writes output for object. New function. (write_integer): Suppress leading blanks for repeat counts. (write_int): Suppress leading blanks for repeat counts. (write_float): Suppress leading blanks for repeat counts. (output_float): Suppress leading blanks for repeat counts. gcc/testsuite/ 2005-06-05 Jakub Jelinek <jakub@redhat.com> Backport from the mainline: 2005-04-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/17472 PR fortran/18209 PR fortran/18396 PR fortran/19467 PR fortran/19657 * fortran/trans-io.c (gfc_build_io_library_fndecls): Create declaration for st_set_nml_var and st_set_nml_var_dim. Remove declarations of old namelist functions. (build_dt): Simplified call to transfer_namelist_element. (nml_get_addr_expr): Generates address expression for start of object data. New function. (nml_full_name): Qualified name for derived type components. New function. (transfer_namelist_element): Modified for calls to new functions and improved derived type handling. PR libfortran/12884 gfortran.dg/pr12884.f: New test PR libfortran/17285 gfortran.dg/pr17285.f90: New test PR libfortran/17472, 18396, 18209 gfortran.dg/pr17472.f: New test PR libfortran/18122, 18591 gfortran.dg/pr18122.f90: New test PR libfortran/18210 gfortran.dg/pr18210.f90: New test PR libfortran/18392 gfortran.dg/pr18392.f90: New test PR libfortran/19467 gfortran.dg/pr19467.f90: New test PR libfortran/19657 gfortran.dg/pr19657.f90: New test * gfortran.dg/namelist_1.f90: Correct comment (PUBLIC and PRIVATE wrong way round). * gfortran.dg/namelist_2.f90: Variables with INTENT(IN) cannot be in namelists. New test * gfortran.dg/namelist_3.f90: Pointers cannot be in namelists. New test * gfortran.dg/namelist_11.f: Tests reals and qualifiers in namelist. New test * gfortran.dg/namelist_12.f: Tests integers and qualifiers in namelist. New test * gfortran.dg/namelist_13.f90: Tests derived types in namelist. New test * gfortran.dg/namelist_14.f90: Tests trans-io.c namelist support. New test * gfortran.dg/namelist_15.f90: Tests arrays of derived types in namelist. New test * gfortran.dg/namelist_16.f90: Tests complex in namelist. New test * gfortran.dg/namelist_17.f90: Tests logical in namelist. New test * gfortran.dg/namelist_18.f90: Tests charcter delimiters in namelist. New test * gfortran.dg/namelist_19.f90: Tests namelist errors. New test * gfortran.dg/namelist_20.f90: Tests negative bounds for explicit arrays. New test Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.335.2.70&r2=1.335.2.71 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.texi.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.10.8.2&r2=1.10.8.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/trans-io.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.33.2.2&r2=1.33.2.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.233&r2=1.5084.2.234 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_11.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_12.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_13.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_14.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_15.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_16.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_17.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_18.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_19.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_2.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_20.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_3.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr12884.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr17285.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr17472.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr18122.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr18210.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr18392.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr19467.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/pr19657.f.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.6.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gfortran.dg/namelist_1.f90.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1&r2=1.1.18.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.163.2.47&r2=1.163.2.48 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/io.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.16.10.1&r2=1.16.10.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/list_read.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.14.2.1&r2=1.14.2.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/lock.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5&r2=1.5.12.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/transfer.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.32.2.4&r2=1.32.2.5 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libgfortran/io/write.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.23.2.7&r2=1.23.2.8
Fixed in 4.0.1 and above.