forked from OSchip/llvm-project
118 lines
4.5 KiB
C++
118 lines
4.5 KiB
C++
//===-- 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";
|
|
default:
|
|
return nullptr;
|
|
}
|
|
}
|
|
|
|
} // namespace Fortran::runtime::io
|