[patch, libgfortran] Fix PR20257 End of record occurs when writing large arrays

Jerry DeLisle jvdelisle@verizon.net
Sat Apr 22 22:46:00 GMT 2006


Brooks Moses wrote:
> FX Coudert wrote:
> 
>>> We can reserve a few numbers for internal use - say, 2**31-1024 to 
>>> 2**31-1
>>> (the maximum positive GFC_INTEGER_4).  Attempts to open or otherwise use
>>> these should be an error, and inquire(exist) could return false, like
>>> negative numbers right now.
>>
>>
>> It might be a stupid suggestion (I don't have access to the code right 
>> now): why not use negative numbers?
> 
> 
> This seems like a very parallel case to user-defined derived-type I/O 
> procedures in Fortran 2003 (Section 9.5.3.7.2).  When such a procedure 
> is called for an internal file, "the UNIT argument shall have a 
> processor-dependent negative value".  (Note that this is the argument 
> that's passed by the processor to a user-defined subroutine, not the 
> other way around.)  So, once we implement that, we'll have to be doing 
> something involving identifying internal files by a negative unit number 
> anyway; might as well go ahead and do it now and make things consistent.
> 
> ...
> 
> Also, on a slightly related note (but I wrote this all before I realized 
> that the above case existed, so I might as well send it), we'll 
> eventually be connecting negative unit numbers to external files as 
> well.  There's an addition to the Fortran syntax for the standard after 
> f2003 that would allow for automatic allocation of unit numbers, and in 
> particular uses negative unit numbers for this allocation (to avoid any 
> possible conflicts with unit numbers in existing code).  More info in 
> this thread on comp.lang.fortran, and in the actual J3 work item:
> 
> http://groups.google.com/group/comp.lang.fortran/browse_frm/thread/5c2aebdfc608c23d/ 
> 
> http://j3-fortran.org/doc/year/06/06-138r2.txt
> 
> How this affects the present case, in my opinion, is that gfortran will 
> eventually need to support negative unit numbers whether it currently 
> does or not, so there's no harm in crossing that bridge now.  Also, it 
> appears to me that there should be no future problem with blocking out 
> chunks of negative unit numbers for internal use, as they will only be 
> automatically assigned rather than user-assigned so we don't have to 
> worry about conflicts with user code even in future Fortran versions.
> 
> - Brooks
> 
> 
My first attempt at this was to use a negative number for unit.  IIRC there was 
specific existing code that generates an error for negative unit numbers.  I 
will explore this a bit and come back with something.

Thanks for all the comments!

Regards,

Jerry



More information about the Fortran mailing list