http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53796
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-06-28 15:42:32 UTC --- For comparison, for formatted and unformatted sequential, I get the following result with different compilers: NAG f95: 1024 / unformatted: 65536 Crayftn: 1024 / -1 (with int64 variable: 9223372036854775807) g95: 1000000000 / 1000000000 ifort 132 / 510 PGI -14920 (with int64 variable: 140737488340408) / as formatted gfortran -1 / -1 When exceeding an explicitly given RECL=: NAG f95: Buffer overflow on output g95: Writing more data than the record size (RECL) gfortran: End of record ifort: no error - but starts new record after recl is exceeded* crayftn: as ifort pgi: no error - but a single record* * For formatted; writing a longer string to unformatted will yield a single record. * * * gfortran has: ./libgfortran.h:#define DEFAULT_RECL 1073741824 which gets used with ./runtime/environ.c: {"GFORTRAN_DEFAULT_RECL", DEFAULT_RECL, &options.default_recl, and in io/unit.c's init_units for stdin, stdout and stderr. Others get set via io/open.c's new_unit: u->recl = opp->recl_in; And in transfer, one finds code like: /* For preconnected units with default record length, set bytes left to unit record length and proceed, otherwise error. */ ... && dtp->u.p.current_unit->recl == DEFAULT_RECL)) dtp->u.p.current_unit->bytes_left = dtp->u.p.current_unit->recl;