Failure during I/O operation
A system error that indicates the data transfer was incorrect was returned during an I/O operation. One possible reason is that the I/O statement tried to access a terminal device that wasn’t ready. (Perhaps the device was offline, the modem hung up, the device was a network device that had been disconnected, and so forth.)
To access the underlying system error that caused $ERR_IOFAIL, we recommend that you capture %SYSERR immediately after the error is trapped and use that value in the diagnosis process.
For ISAM files, see the stv argument of %ERROR for further clarification. In most cases, an $ERR_IOFAIL error indicates ISAM file corruption. Use isutl -vi to detect corruption and follow the repair recommendations. If the problem persists and you are not aborting programs abnormally and have not had system crashes, contact Synergy/DE Developer Support.
On OpenVMS, you might get this error with the SS$_DATAOVERUN system error code if the type-ahead buffer is filled and the terminal is set nohostsync (a normal OpenVMS error condition). To avoid this error, either include an error list in your ACCEPT statements or ensure that the terminal is set hostsync. If the terminal cannot be set hostsync, you can set the terminal altype to reduce the occurrence of this error. You can retrieve additional information for RMS files using the stv argument of the ERROR routine. (See %ERROR.)
For a telnet terminal connection, $ERR_IOFAIL will occur on any terminal input or output to a disconnected telnet session. If the I/O is repeated several times, the error is translated into an $ERR_DEVNOTRDY error. We recommend adding an ONERROR ($ERR_CATCH) or an outer level TRY-CATCH statement for $ERR_DEVNOTRDY and $ERR_IOFAIL to detect disconnected telnet sessions.