A file is “crash-resistant” if, after a system crash, it is still in a consistent state and the results of all operations successfully executed beforehand have not been corrupted.
After a system crash, write operations started beforehand will be either complete or not executed at all. In both cases, however, the file is still consistent as far as ISAM is concerned.
When the system crashes, files which are open cannot be closed normally, which means that the LASTPG pointer is no longer correct. A subsequent OPEN detects this and permits the user program to start an error routine (OPENC exit of the EXLST macro) to rectify the problem (VERIF macro). If no such error routine exists, the program is aborted with an error message to this effect (DMS0DD1, DMS0D1A
). The last-page pointer of a file can be updated by means of the VERIF macro or the REPAIR-DISK-FILES command (see section "File recovery"). Crash-resistance as described above is guaranteed for WROUT=YES or WRITE-IMMEDIATE=*YES and when a file is processed with PUT macros with an I/O area in the program.
Crash behavior with WROUT=NO or WRITE-IMMEDIATE=*NO
If WROUT=NO or WRITE-IMMEDIATE=*NO is specified, changes to records which have not yet been written back to disk may be lost. File consistency can be restored by means of the VERIF macro (operand REPAIR=ABS) or the REPAIR-DISK-FILES command. However, the user data may still be inconsistent. It is the user's responsibility to restore the necessary data consistency.
PUT (sequential write) with an I/O area in the program
If an I/O area is used for PUT macro operations, output to disk is initiated only when the amount of space left in the buffer drops below the specified PAD value. If a system crash occurs before this, all records still in the buffer, but not yet written to disk, are lost. From the user's point of view, the data is inconsistent and/or incomplete, but ISAM regards the file as consistent.