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.