annotate flang/runtime/iostat.cpp @ 266:00f31e85ec16 default tip

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