gfortran: Why does this fail to compile?

Arjen Markus arjen.markus895@gmail.com
Tue Jan 22 14:30:00 GMT 2013


Hi Mark,

there is a small flaw in the X1 part of your format: it should be 1X.

gfortran is reporting the wrong part, which is rather confusing.

Regards,

Arjen

2013/1/22 Mark Hounschell <markh@compro.net>:
> Can someone tell me why this fails to compile in gfortran? I've used this
> type of format specification in many different fortran compilers.
>
> gfortran -v
> Using built-in specs.
> COLLECT_GCC=gfortran
> COLLECT_LTO_WRAPPER=/usr/lib/gcc/i586-suse-linux/4.7/lto-wrapper
> Target: i586-suse-linux
> Configured with: ../configure --prefix=/usr --infodir=/usr/share/info
> --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib
> --enable-languages=c,c++,objc,fortran,obj-c++,java,ada
> --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7
> --enable-ssp --disable-libssp --disable-libitm --disable-plugin
> --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux'
> --disable-libgcj --disable-libmudflap --with-slibdir=/lib --with-system-zlib
> --enable-__cxa_atexit --enable-libstdcxx-allocator=new
> --disable-libstdcxx-pch --enable-version-specific-runtime-libs
> --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex
> --without-system-libunwind --with-arch-32=i586 --with-tune=generic
> --build=i586-suse-linux
> Thread model: posix
> gcc version 4.7.1 20120723 [gcc-4_7-branch revision 189773] (SUSE Linux)
>
>
>
>       program test_c3
>       IMPLICIT NONE
> c
> c     The first read below, reads a line of ascii text
> c     containing 20 space separated, 4 char, hex fields
> c     into a buffer.
> c     The format of the file is
> c       1    2    3    4              17   18   19   20
> c     0002 0002 3130 0052 .... .... ff4b 0000 1024 b070
> c
> c     The second read is to read the text fields into
> c     an array of integer*2s but the "valid" format
> c     specifier in that read is invalid to gfortran
> c     for some reason. Why????
> c
>
>       INTEGER*4     WYPTUNIT/100/
>       INTEGER*2     WYPTBUFF(20)
>       CHARACTER*100 READBUFF
>
>       OPEN(UNIT = WYPTUNIT, FILE = 'waypthex.txt')
>       READ(WYPTUNIT, '(A100)') READBUFF
>       READ(READBUFF, '(19(Z4,X1),Z4)') WYPTBUFF
>
>       STOP
>       END
>
> #gfortran test_c3.f
> test_c3.f:23.37:
>
>       READ(READBUFF, '(19(Z4,X1),Z4)') WYPTBUFF
>                                      1
> Error: Unexpected element ')' in format string at (1)
>
> Thanks in advance
> Mark



More information about the Fortran mailing list