When a program terminates normally, the fclose function is
automatically called for all open files.
The fclose function tries to write buffered data by using an
implicit call to fflush.
If the write fails (because the disk is full or the user's quota
is exceeded, for example), fclose continues executing. It closes
the OpenVMS channel, deallocates any buffers, and releases the
memory associated with the file descriptor (or FILE pointer). Any
buffered data is lost, and the file descriptor (or FILE pointer)
no longer refers to the file.
If your program needs to recover from errors when flushing
buffered data, it should make an explicit call to fsync (or
fflush) before calling fclose.