An error in the FORTRAN "CLOSE" statement causes the operating system to
mishandle the disk file space. If, within a program, even the smallest data
file is created, closed, and reopened, then the system will report that there
is no room left on the volume because the CLOSE statement does not release
blocks not used in closing the file. When FORTRAN first goes to OPEN a file
with STATUS="NEW", FORTRAN looks for, finds, and reserves all unused blocks in
the largest available space for the new file. The CLOSE statement does not
release the blocks that really are unused after the close, so the second time
the OPEN statement (with STATUS="NEW") looks for all unused blocks in the
largest available space, OPEN doesn't find any.
One way to avoid this problem is to "Make" a file of the size you will be
needing on the given disk; this file will then have STATUS="OLD" and when
accessing it, OPEN will not reserve records CLOSE can't release. For example,
your program might be creating a data file (by the name of "MYFILE") which
will eventually occupy 100 blocks on your data disk (let's call the disk
"DATA"). From the Filer, type "M" (for Make), followed by "DATA:MYFILE[100]".
This will create the directory entry, reserving 100 blocks for the data file.
The FORTRAN program can then OPEN the data file with STATUS="OLD", and the
space will be managed correctly. When all the blocks are actually filled, the
expected error messages will occur.