brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · c2577e7 Raw
130 lines · cpp
1//===-- lib/runtime/iostat.cpp ----------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "flang-rt/runtime/iostat.h"10 11namespace Fortran::runtime::io {12RT_OFFLOAD_API_GROUP_BEGIN13 14const char *IostatErrorString(int iostat) {15  switch (iostat) {16  case IostatOk:17    return "No error";18  case IostatEnd:19    return "End of file during input";20  case IostatEor:21    return "End of record during non-advancing input";22  case IostatUnflushable:23    return "FLUSH not possible";24  case IostatInquireInternalUnit:25    return "INQUIRE on internal unit";26  case IostatGenericError:27    return "I/O error"; // dummy value, there's always a message28  case IostatRecordWriteOverrun:29    return "Excessive output to fixed-size record";30  case IostatRecordReadOverrun:31    return "Excessive input from fixed-size record";32  case IostatInternalWriteOverrun:33    return "Internal write overran available records";34  case IostatErrorInFormat:35    return "Bad FORMAT";36  case IostatErrorInKeyword:37    return "Bad keyword argument value";38  case IostatEndfileDirect:39    return "ENDFILE on direct-access file";40  case IostatEndfileUnwritable:41    return "ENDFILE on read-only file";42  case IostatOpenBadRecl:43    return "OPEN with bad RECL= value";44  case IostatOpenUnknownSize:45    return "OPEN of file of unknown size";46  case IostatOpenBadAppend:47    return "OPEN(POSITION='APPEND') of unpositionable file";48  case IostatWriteToReadOnly:49    return "Attempted output to read-only file";50  case IostatReadFromWriteOnly:51    return "Attempted input from write-only file";52  case IostatBackspaceNonSequential:53    return "BACKSPACE on non-sequential file";54  case IostatBackspaceAtFirstRecord:55    return "BACKSPACE at first record";56  case IostatRewindNonSequential:57    return "REWIND on non-sequential file";58  case IostatWriteAfterEndfile:59    return "WRITE after ENDFILE";60  case IostatFormattedIoOnUnformattedUnit:61    return "Formatted I/O on unformatted file";62  case IostatUnformattedIoOnFormattedUnit:63    return "Unformatted I/O on formatted file";64  case IostatListIoOnDirectAccessUnit:65    return "List-directed or NAMELIST I/O on direct-access file";66  case IostatUnformattedChildOnFormattedParent:67    return "Unformatted child I/O on formatted parent unit";68  case IostatFormattedChildOnUnformattedParent:69    return "Formatted child I/O on unformatted parent unit";70  case IostatChildInputFromOutputParent:71    return "Child input from output parent unit";72  case IostatChildOutputToInputParent:73    return "Child output to input parent unit";74  case IostatShortRead:75    return "Read from external unit returned insufficient data";76  case IostatMissingTerminator:77    return "Sequential record missing its terminator";78  case IostatBadUnformattedRecord:79    return "Erroneous unformatted sequential file record structure";80  case IostatUTF8Decoding:81    return "UTF-8 decoding error";82  case IostatUnitOverflow:83    return "UNIT number is out of range";84  case IostatBadRealInput:85    return "Bad REAL input value";86  case IostatBadScaleFactor:87    return "Bad REAL output scale factor (kP)";88  case IostatBadAsynchronous:89    return "READ/WRITE(ASYNCHRONOUS='YES') on unit without "90           "OPEN(ASYNCHRONOUS='YES')";91  case IostatBadWaitUnit:92    return "WAIT(UNIT=) for a bad or unconnected unit number";93  case IostatBOZInputOverflow:94    return "B/O/Z input value overflows variable";95  case IostatIntegerInputOverflow:96    return "Integer input value overflows variable";97  case IostatRealInputOverflow:98    return "Real or complex input value overflows type";99  case IostatCannotReposition:100    return "Attempt to reposition a unit which is connected to a file that can "101           "only be processed sequentially";102  case IostatOpenAlreadyConnected:103    return "OPEN of file already connected to another unit";104  case IostatBadWaitId:105    return "WAIT(ID=nonzero) for an ID value that is not a pending operation";106  case IostatTooManyAsyncOps:107    return "Too many asynchronous operations pending on unit";108  case IostatBadBackspaceUnit:109    return "BACKSPACE on unconnected unit";110  case IostatBadUnitNumber:111    return "Negative unit number is not allowed";112  case IostatBadFlushUnit:113    return "FLUSH attempted on a bad or unconnected unit number";114  case IostatBadOpOnChildUnit:115    return "Impermissible I/O statement on child I/O unit";116  case IostatBadNewUnit:117    return "NEWUNIT= without FILE= or STATUS='SCRATCH'";118  case IostatBadListDirectedInputSeparator:119    return "List-directed input value has trailing unused characters";120  case IostatNonExternalDefinedUnformattedIo:121    return "Defined unformatted I/O without an external unit";122  default:123    return nullptr;124  }125}126 127RT_OFFLOAD_API_GROUP_END128 129} // namespace Fortran::runtime::io130