//===-- runtime/iostat.cpp ------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "flang/Runtime/iostat.h" namespace Fortran::runtime::io { const char *IostatErrorString(int iostat) { switch (iostat) { case IostatOk: return "No error"; case IostatEnd: return "End of file during input"; case IostatEor: return "End of record during non-advancing input"; case IostatUnflushable: return "FLUSH not possible"; case IostatInquireInternalUnit: return "INQUIRE on internal unit"; case IostatGenericError: return "I/O error"; // dummy value, there's always a message case IostatRecordWriteOverrun: return "Excessive output to fixed-size record"; case IostatRecordReadOverrun: return "Excessive input from fixed-size record"; case IostatInternalWriteOverrun: return "Internal write overran available records"; case IostatErrorInFormat: return "Bad FORMAT"; case IostatErrorInKeyword: return "Bad keyword argument value"; case IostatEndfileDirect: return "ENDFILE on direct-access file"; case IostatEndfileUnwritable: return "ENDFILE on read-only file"; case IostatOpenBadRecl: return "OPEN with bad RECL= value"; case IostatOpenUnknownSize: return "OPEN of file of unknown size"; case IostatOpenBadAppend: return "OPEN(POSITION='APPEND') of unpositionable file"; case IostatWriteToReadOnly: return "Attempted output to read-only file"; case IostatReadFromWriteOnly: return "Attempted input from write-only file"; case IostatBackspaceNonSequential: return "BACKSPACE on non-sequential file"; case IostatBackspaceAtFirstRecord: return "BACKSPACE at first record"; case IostatRewindNonSequential: return "REWIND on non-sequential file"; case IostatWriteAfterEndfile: return "WRITE after ENDFILE"; case IostatFormattedIoOnUnformattedUnit: return "Formatted I/O on unformatted file"; case IostatUnformattedIoOnFormattedUnit: return "Unformatted I/O on formatted file"; case IostatListIoOnDirectAccessUnit: return "List-directed or NAMELIST I/O on direct-access file"; case IostatUnformattedChildOnFormattedParent: return "Unformatted child I/O on formatted parent unit"; case IostatFormattedChildOnUnformattedParent: return "Formatted child I/O on unformatted parent unit"; case IostatChildInputFromOutputParent: return "Child input from output parent unit"; case IostatChildOutputToInputParent: return "Child output to input parent unit"; case IostatShortRead: return "Read from external unit returned insufficient data"; case IostatMissingTerminator: return "Sequential record missing its terminator"; case IostatBadUnformattedRecord: return "Erroneous unformatted sequential file record structure"; case IostatUTF8Decoding: return "UTF-8 decoding error"; case IostatUnitOverflow: return "UNIT number is out of range"; case IostatBadRealInput: return "Bad REAL input value"; case IostatBadScaleFactor: return "Bad REAL output scale factor (kP)"; case IostatBadAsynchronous: return "READ/WRITE(ASYNCHRONOUS='YES') on unit without " "OPEN(ASYNCHRONOUS='YES')"; case IostatBadWaitUnit: return "WAIT(UNIT=) for a bad or unconnected unit number"; case IostatBOZInputOverflow: return "B/O/Z input value overflows variable"; case IostatIntegerInputOverflow: return "Integer input value overflows variable"; case IostatRealInputOverflow: return "Real or complex input value overflows type"; case IostatCannotReposition: return "Attempt to reposition a unit which is connected to a file that can " "only be processed sequentially"; case IostatOpenAlreadyConnected: return "OPEN of file already connected to another unit"; case IostatBadWaitId: return "WAIT(ID=nonzero) for an ID value that is not a pending operation"; case IostatTooManyAsyncOps: return "Too many asynchronous operations pending on unit"; case IostatBadBackspaceUnit: return "BACKSPACE on unconnected unit"; case IostatBadUnitNumber: return "Negative unit number is not allowed"; case IostatBadFlushUnit: return "FLUSH attempted on a bad or unconnected unit number"; case IostatBadOpOnChildUnit: return "Impermissible I/O statement on child I/O unit"; default: return nullptr; } } } // namespace Fortran::runtime::io