IOSTAT= 指定子値は、入出力ステートメントの 実行時にファイルの終わり条件、レコードの終わり条件、 またはエラー条件が発生した場合に、値を変数に割り当てます。 IOSTAT= 指定子は、以下のタイプのエラー条件を報告します。
アプリケーションが IOSTAT= 指定子を指定してレコードの終わり条件を検出した場合、
値を -4 に設定し、EOR= ラベルがある場合には、そのラベルに分岐します。
I/O ステートメントに IOSTAT= および EOR= 指定子がない場合に、
アプリケーションがレコードの終わり条件を検出すると、アプリケーションは停止します。
IOSTAT 値 | レコードの終わり条件の記述 |
---|---|
-4 | 外部ファイルの非アドバンス、形式指示 READ で検出されたレコードの終わり |
以下のインスタンスでファイルの終わり条件が発生する可能性があります。
ストリーム・アクセスの場合、ファイルの終わりを超えて読み取りを行おうとすると、
ファイルの終わり条件が発生します。
ファイルの終わり条件は、定様式アクセス用に接続されたストリーム・ファイルの
最終レコードを超えて読み取りを行おうとした場合にも発生します。
入力ステートメントに IOSTAT= 指定子および END= 指定子がある場合、
ファイルの終わり条件により、IOSTAT= 指定子が以下の定義された値のいずれかに
設定され、ファイルの終わり条件は END= ラベルに分岐します。
IOSTAT= および END= 指定子が入力ステートメント
にない場合に、ファイルの終わり条件が検出されると、プログラムは停止します。
IOSTAT 値 | ファイルの終わり条件の記述 |
---|---|
-1 | 外部ファイルの順次またはストリーム READ でファイルの終わり、または 直接アクセス読み取りで END= が指定されているか、レコードが存在しない。 |
-1(1) | 内部ファイルの READ で検出されたファイルの終わり。 |
-2 | 内部ファイルの READ で検出されたファイルの終わり。 |
注:
Fortran 2003 ドラフト標準. 詳細については、IOSTAT_END 実行時オプションを参照してください。
致命的エラーは、実行システム内で検出されるシステム・レベルの エラーで、このエラーが発生すると、プログラムを実行できなくなります。 致命的エラーが発生すると、短い (翻訳されていない) メッセージが 装置 0 に書き込まれ、その後に、C ライブラリー・ルーチン abort() に対する呼び出しが行われます。 メモリー・ダンプの結果は、実行環境がどのように構成されているかによって異なります。
重大なエラーは、ERR_RECOVERY 実行時オプションの
値を YES に指定していた場合でも、回復させることはできません。
入出力ステートメントに IOSTAT= 指定子
および ERR= がある場合、重大なエラーにより、
IOSTAT= 指定子が以下に定義された値のいずれかに設定
され、ERR= ラベルが分岐します。
入出力ステートメントに IOSTAT= および ERR= 指定子
がない場合、重大エラー条件が検出されると、プログラムは停止します。
IOSTAT 値 | エラー記述 |
---|---|
1 | END= が直接アクセス READ 指定されていない。また、 レコードが存在しない。 |
2 | 内部ファイルの WRITE で検出されたファイルの終わり。 |
6 | ファイルが見つからず、'OLD' が OPEN ステートメント に指定されている。 |
10 | 直接ファイルでの読み取りエラー。 |
11 | 直接ファイルでの書き込みエラー。 |
12 | 順次ファイルまたはストリーム・ファイルでの読み取りエラー。 |
13 | 順次またはストリーム・ファイルでの書き込みエラー。 |
14 | オープン・ファイル・エラー。 |
15 | ファイルで検出された永久 I/O エラー。 |
37 | 動的メモリーの割り振り障害 - メモリー不足。 |
38 | REWIND エラー。 |
39 | ENDFILE エラー。 |
40 | BACKSPACE エラー。 |
107 | ファイルが存在し、STATUS='NEW' が OPEN ステートメント に指定された。 |
119 | テープ装置に接続された装置で、BACKSPACE ステートメント を実行しようとした。 |
122 | 直接アクセス READ 時に不完全なレコードが検出された。 |
130 | パイプに接続するための OPEN ステートメント に ACTION='READWRITE' が指定された。 |
135 | ユーザー・プログラムが、サポートされないバージョンの XL Fortran ランタイム環境の呼び出しを行っている。 |
139 | ACTION= 指定子に正しい値を使ってファイルがオープンされ なかったため、I/O 操作が装置上で許可されない。 |
142 | CLOSE エラー。 |
144 | INQUIRE エラー。 |
152 | 順次アクセスしかできないファイルに対して、ACCESS='DIRECT' が OPEN ステートメントで指定された。 |
153 | POSITION='REWIND' または POSITION='APPEND' が OPEN ステートメントで指定されたが、 ファイルがパイプである。 |
156 | OPEN ステートメントでの RECL= 指定子に対する無効値。 |
159 | 関連するデバイスが見つからないため、外部ファイル入力を フラッシュできなかった。 |
165 | 次に読み取りまたは書き込みの可能なレコードのレコード番号は、 INQUIRE ステートメントの NEXTREC= 指定子で指定された変数の範囲外である。 |
169 | 装置は同期 I/O 専用で接続されているため、 非同期 I/O ステートメントを完了できない。 |
172 | ファイルは非同期 I/O 不可であるため、接続は失敗した。 |
173 | 同じ装置で非同期 WRITE ステートメントの保留中に非同期 READ ステートメント が実行されたか、または同じ装置で非同期 READ ステートメントの保留中に 非同期 WRITE ステートメントが実行された。 |
174 | 前の非同期 I/O ステートメントが完了していないため、 同期 I/O ステートメントを完了できない。 |
175 | ID= 指定子の値が無効であるため、WAIT ステートメントを完了できない。 |
176 | 対応する非同期 I/O ステートメントが別の範囲指定装置内にある ため、WAIT ステートメントを完了できない。 |
178 | 同じレコードの前の非同期直接 WRITE ステートメントがまだ完了 していないため、レコードの非同期の直接 WRITE ステートメントは実行できない。 |
179 | 装置上に未完了の非同期 I/O 操作があるため、 その装置で I/O 操作はできない。 |
181 | 複数接続は同期 I/O でしか許可されないため、ファイルを装置に 接続できない。 |
182 | UWIDTH= オプションの値が無効。 この値は、32 または 64 でなければならない。 |
183 | 装置の最大レコード長は、INQUIRE ステートメント の RECL= 指定子で指定されたスカラー変数の範囲外である。 |
184 | 送信データのバイト数は、I/O ステートメント の SIZE= または NUM= 指定子で指定されたスカラー変数の範囲外である。 |
185 | ファイルを、それぞれ異なる UWIDTH 値を持つ 2 つの装置に 接続できない。 |
186 | 装置番号は、0 〜 2,147,483,647 の間になければならない。 |
192 | ファイル位置の値が、INQUIRE ステートメントの POS= 指定子で 指定されたスカラー変数の範囲外である。 |
193 | ファイル・サイズの値が、INQUIRE ステートメントの SIZE= 指定子で 指定されたスカラー変数の範囲外である。 |
回復可能エラーは、回復できるエラー状態のことです。
入出力ステートメントに IOSTAT= 指定子
および ERR= がある場合、回復可能エラーが発生すると、
IOSTAT= 指定子が以下に定義された値のいずれかに設定
され、ERR= ラベルに分岐します。
入出力ステートメントに IOSTAT= および ERR= 指定子
がなく、ERR_RECOVERY 実行時オプションが YES に設定
されていると、回復処理が行われ、プログラムが継続します。
入出力ステートメントに IOSTAT= および ERR= 指定子
がなく、ERR_RECOVERY オプションが NO に設定されている
と、プログラムは停止します。
IOSTAT 値 | エラー記述 |
---|---|
16 | 直接 I/O で REC= 指定子の値が無効。 |
17 | 直接ファイルで I/O ステートメントが許可されない。 |
18 | 未接続の装置での直接 I/O ステートメント。 |
19 | 定様式ファイルで不定様式 I/O を行おうとした。 |
20 | 不定様式ファイルで定様式ファイル I/O を行おうとした。 |
21 | 直接ファイルで順次 I/O またはストリーム I/O を行おうとした。 |
22 | 順次ファイルまたはストリーム・ファイルで直接 I/O を行おうとした。 |
23 | すでに別の装置に接続済みのファイルに接続しようとした。 |
24 | OPEN 指定子が接続されたファイルの属性と一致しない。 |
25 | 直接ファイルについて、OPEN ステートメントで RECL= 指定子が 省略された。 |
26 | OPEN ステートメントの RECL= 指定子が負の値をとる。 |
27 | OPEN ステートメントの ACCESS= 指定子が無効である。 |
28 | OPEN ステートメントの FORM= 指定子が無効である。 |
29 | OPEN ステートメントの STATUS= 指定子が無効である。 |
30 | OPEN ステートメントの BLANK 指定子が無効である。 |
31 | OPEN または INQUIRE ステートメントの FILE= 指定子が無効である。 |
32 | STATUS='SCRATCH' および FILE= 指定子が 同一の OPEN ステートメントに指定された。 |
33 | ファイルが STATUS='SCRATCH' によってオープンされたとき に、STATUS='KEEP' が CLOSE ステートメントに指定された。 |
34 | CLOSE ステートメントの STATUS= 指定子の値が無効である。 |
36 | I/O ステートメントで誤った装置番号が指定された。 |
47 | 名前リスト入力項目がゼロ以外のランクの 1 つ以上のコンポーネントで指定された。 |
48 | 名前リスト入力項目がゼロ・サイズの配列で指定された。 |
58 | 様式指定のエラー。 |
93 | エラー装置 (装置 0) で I/O ステートメントが許可されなかった。 |
110 | 定様式 I/O のデータ項目で、無効な編集記述子が使用された。 |
120 | NLWIDTH の設定値がレコードの長さを超えた。 |
125 | 不定様式ファイルの OPEN ステートメント で、BLANK= 指定子が指定された。 |
127 | 直接ファイルの OPEN ステートメントで、POSITION= 指定子が指定された。 |
128 | OPEN ステートメントの POSITION= 指定子の値が無効である。 |
129 | OPEN ステートメントの ACTION= 指定子が無効である。 |
131 | 不定様式ファイルの OPEN ステートメントで、DELIM== 指定子が指定された。 |
132 | OPEN ステートメントの DELIM= 指定子の値が無効である。 |
133 | 不定様式ファイルの OPEN ステートメントで、PAD= 指定子が指定された。 |
134 | OPEN ステートメントの PAD= 指定子の値が無効である。 |
136 | READ ステートメントの ADVANCE= 指定子の値が無効である。 |
137 | SIZE= が READ ステートメントに指定されるときに、 ADVANCE='NO' が指定されていない。 |
138 | EOR= が READ ステートメントに指定されるときに、 ADVANCE='NO' が指定されていない。 |
145 | ファイルがファイル終了レコードの後に位置付けられているとき に、READ または WRITE を実行しようとした。 |
163 | 非ランダム・アクセス装置上にあるファイルへの複数の接続は行えない。 |
164 | ACTION='WRITE' または ACTION='READWRITE' を指定した 複数の接続は行えない。 |
170 | OPEN ステートメントの ASYNCH= 指定子の値が無効である。 |
171 | FORM= 指定子が FORMATTED に設定されているため、OPEN ステートメントに 指定された ASYNCH= 指定子は無効である。 |
177 | 未完了の非同期 I/O 操作があるときに、装置がクローズされた。 |
191 | ACCESS='STREAM' のある OPEN ステートメントに RECL= 指定子が指定されている。 |
194 | BACKSPACE ステートメントが不定様式ストリーム I/O 用に接続された装置を指定した。 |
195 | I/O ステートメントの POS= 指定子が 1 よりも小さい。 |
196 |
![]()
|
197 | I/O ステートメントの POS= 指定子が、検出できないファイルに接続されている装置を 指定した。 |
198 | 未接続の装置でのストリーム I/O ステートメント。 |
データが無効であるか、データ転送ステートメントでデータの長さ
が正しくないと、変換エラーが発生します。
入出力ステートメントに IOSTAT= 指定子
および ERR=ラベルがあり、
CNVERR オプションが YES に設定されている
場合、変換エラーが発生すると、IOSTAT= 指定子が以下に定義した
値のいずれかに設定され、ERR= ラベルに分岐します。
入出力ステートメントに IOSTAT= および ERR= 指定子
がなく、CNVERR および ERR_RECOVERY の両オプション
が YES に設定されていると、回復処理が行われ、プログラムが継続します。
入出力ステートメントに IOSTAT= および ERR= 指定子
がなく、CNVERR オプションが YES に設定
され、ERR_RECOVERY オプションが NO に設定されていると、
プログラムが停止します。
CNVERR オプションが NO に設定される
と、ERR ラベルには分岐せずに、以下に示すように IOSTAT= 指定子
が設定される場合があります。
IOSTAT 値 | エラー記述 | CNVERR=NO の場合の IOSTAT の設定 |
---|---|---|
3 | 不定様式ファイルでレコードの終わりが検出された。 | なし |
4 | アドバンス I/O を使用する定様式外部ファイルでレコードの終わりが検出された。 | なし |
5 | 内部ファイルでレコードの終わりが検出された。 | なし |
7 | 外部ファイルで誤った形式のリスト指示入力が検出された。 | あり |
8 | 内部ファイルで誤った形式のリスト指示入力が検出された。 | あり |
9 | 内部ファイルに対してリスト指示または NAMELIST データ項目が 長すぎる。 | あり |
41 | 外部ファイルで有効な論理入力が検出されなかった。 | なし |
42 | 内部ファイルで有効な論理入力が検出されなかった。 | なし |
43 | 外部ファイルでリスト指示または NAMELIST 入力の使用が予想 される複素数値が検出されなかった。 | なし |
44 | 内部ファイルでリスト指示または NAMELIST 入力の使用が予想 される複素数値が検出されなかった。 | なし |
45 | NAMELIST 入力で、不明または誤った派生型のコンポーネント名 で NAMELIST 項目名が指定された。 | なし |
46 | NAMELIST 入力で、誤ったサブストリング範囲で NAMELIST 項目名が指定された。 | なし |
49 | リスト指示または名前リスト入力で誤って区切られた文字 ストリングが入っていた。 | なし |
56 | 誤った数字が B、O、または Z 形式の編集記述子の入力で 検出された。 | なし |
84 | 外部ファイルで NAMELIST グループ・ヘッダーが検出されなかった。 | あり |
85 | 内部ファイルで NAMELIST グループ・ヘッダーが検出されなかった。 | あり |
86 | 外部ファイルで誤った NAMELIST 入力値が検出された。 | なし |
87 | 内部ファイルで誤った NAMELIST 入力値が検出された。 | なし |
88 | NAMELIST 入力で誤った名前が検出された。 | なし |
90 | 入力で、NAMELIST グループまたは項目名に誤った文字がある。 | なし |
91 | NAMELIST の入力構文が無効である。 | なし |
92 | 入力で、NAMELIST 項目に対して添え字リストが無効である。 | なし |
94 | 外部ファイルで、リスト指示または NAMELIST 入力に対して 繰り返し指定子が無効である。 | なし |
95 | 内部ファイルで、リスト指示または NAMELIST 入力に対して 繰り返し指定子が無効である。 | なし |
96 | 入力での整数のオーバーフロー。 | なし |
97 | 入力で 10 進数字が無効である。 | なし |
98 | B、O、または Z 形式の編集記述子に対して入力データが 長すぎる。 | なし |
121 | NAMELIST 項目名または NAMELIST グループ名の出力長が、 最大レコード長または NLWIDTH オプションで指定した出力幅よりも長い。 | あり |
Fortran 90 言語のエラーは、コンパイル時に検出できない Fortran 90 言語に対して、 XL Fortran の拡張機能を使用することによって起こります。 LANGLVL 実行時オプションが 90STD という値で指定されていて、 ERR_RECOVERY 実行時オプションが設定されていないか、 NO に設定されている場合に、Fortran 90 言語エラーは、 重大なエラーと見なされます。 LANGLVL=90STD および ERR_RECOVERY= YES が両方とも 指定されている場合には、エラーは回復可能エラーと見なされます。 LANGLVL= EXTENDED が指定されると、 そのエラー条件はエラーとは見なされません。
Fortran 95 言語のエラーは、コンパイル時に検出できない Fortran 95 言語に対して、 XL Fortran の拡張機能を使用することによって起こります。 LANGLVL 実行時オプションが 95STD という値で 指定されていて、ERR_RECOVERY 実行時オプションが設定されて いないか、NO に設定されている場合に、Fortran 95 言語エラー は、重大なエラーと見なされます。LANGLVL=95STD およ び ERR_RECOVERY= YES が両方とも指定されている場合 には、エラーは回復可能エラーと見なされます。 LANGLVL= EXTENDED が指定されると、 そのエラー条件はエラーとは見なされません。
Fortran 2003 ドラフト標準言語エラーは、コンパイル時に検出できない
Fortran 2003 言語のドラフト標準に対して、XL Fortran の拡張を使用することによって起こります。
LANGLVL 実行時オプションが 2003STD という値で
指定されていて、ERR_RECOVERY 実行時オプションが設定されて
いないか、NO に設定されている場合に、Fortran 2003 言語エラーは、
重大エラーと見なされます。LANGLVL=2003STD および
ERR_RECOVERY= YES が両方とも指定されている場合には、
エラーは回復可能エラーと見なされます。
LANGLVL= EXTENDED が指定されると、
そのエラー条件はエラーとは見なされません。
表 15. Fortran 90、95、および 2003 ドラフト標準の言語エラー条件の IOSTAT 値
IOSTAT 値 | エラー記述 |
---|---|
53 | 定様式 I/O での編集記述子と項目型の不一致。 |
58 | 様式指定のエラー。 |
140 | I/O ステートメントを実行しようとしたときに、 装置が接続されていない。 これは、READ、WRITE、PRINT、REWIND、および ENDFILE の場合のみ。 |
141 | 装置の REWIND または BACKSPACE の介入なし に 2 つの ENDFILE ステートメントがある。 |
151 | FILE= 指定子が抜けており、OPEN ステートメント で STATUS= 指定子が 'SCRATCH' の値を持っていない。 |
187 | NAMELIST コメントは Fortran 90 標準では使用不可。 |
199 | STREAM が、Fortran 90 または Fortran 95 での OPEN ステートメントの ACCESS= 指定子に有効な値ではない。 |