XL Fortran for AIX V8.1.1

ランゲージ・リファレンス

+----------------------------------IBM 拡張----------------------------------+


条件および IOSTAT 値

IOSTAT 値は、I/O ステートメントの実行時にファイルの終わり条件、レコードの終わり条件、またはエラー条件が発生した場合、 IOSTAT= 指定子の変数に割り当てられます。エラー条件には、次に示す 5 つのタイプのものがあります。致命的エラー、重大なエラー、回復可能なエラー、変換、Fortran 90 および Fortran 95 言語。

レコードの終わり条件

I/O ステートメントに IOSTAT= 指定子および EOR= がある場合、レコードの終わり条件により、IOSTAT= 指定子が -4 に設定され、EOR= ラベルが分岐します。 IOSTAT= および EOR= 指定子が I/O ステートメントにない場合にレコードの終わり条件が検出されると、プログラムは停止します。

表 6. レコードの終わり条件の IOSTAT 値

IOSTAT 値 レコードの終わり条件の記述
-4 外部ファイルの非アドバンス、形式指示 READ で検出されたレコードの終わり

ファイルの終わり条件

ファイルの終わり条件は、入力リストおよび形式の相互作用により複数のレコードが必要とされるときに、入力ステートメントの実行開始時または定様式または入力ステートメントの実行時に発生します。入力ステートメントに IOSTAT= 指定子および END= 指定子がある場合、レコードの終わり条件により、IOSTAT= 指定子が以下に定義された値のいずれかに設定され、END= ラベルが分岐します。 IOSTAT= および END= 指定子が入力ステートメントにない場合にファイルの終わり条件が検出されると、プログラムは停止します。

ストリーム・アクセスの場合、ファイルの終わりを超えて読み取りを行おうとすると、ファイルの終わり条件が発生します。ファイルの終わり条件は、入力ステートメントの実行開始時、またはストリーム入力ステートメントの実行時に発生します。

ファイルの終わり条件は、定様式アクセス用に接続されたストリーム・ファイルの最終レコードを超えて読み取りを行おうとした場合にも発生します。

表 7. ファイルの終わり条件の IOSTAT 値

IOSTAT 値 ファイルの終わり条件の記述
-1 外部ファイルの順次またはストリーム READ でファイルの終わり、または直接アクセス読み取りで END= が指定されているか、レコードが存在しない。
-2 内部ファイルの READ で検出されたファイルの終わり。

エラー条件

致命的エラー

致命的エラーは、実行システム内で検出されるシステム・レベルのエラーで、このエラーが発生すると、プログラムを実行できなくなります。致命的エラーが発生すると、短い (翻訳されていない) メッセージが装置 0 に書き込まれ、その後に、C ライブラリー・ルーチン abort() に対する呼び出しが行われます。メモリー・ダンプの結果は、どのような実行環境が構成されているかによって異なります。

重大なエラー

重大なエラーは、ERR_RECOVERY 実行時オプションの値を YES に指定していた場合でも、回復させることはできません。 I/O ステートメントに IOSTAT= 指定子および ERR= がある場合、重大なエラーにより、 IOSTAT= 指定子が以下に定義された値のいずれかに設定され、ERR= ラベルが分岐します。 I/O ステートメントに IOSTAT= および ERR= 指定子がない場合に重大エラー条件が検出されると、プログラムは停止します。

表 8. 重大なエラー条件の IOSTAT 値

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= 指定子で指定されたスカラー変数の範囲外である。

回復可能エラー

回復可能エラーは、回復できるエラー状態のことです。 I/O ステートメントに IOSTAT= 指定子および ERR= がある場合、回復可能エラーが発生すると、 IOSTAT= 指定子が以下に定義された値のいずれかに設定され、ERR= ラベルへ分岐します。 I/O ステートメントに IOSTAT= および ERR= 指定子がなく、ERR_RECOVERY 実行時オプションが YES に設定されていると、回復処理が行われ、プログラムは継続します。 I/O ステートメントに IOSTAT= および ERR= 指定子がなく、ERR_RECOVERY オプションが NO に設定されていると、プログラムは停止します。

表 9. 回復可能エラー条件の IOSTAT 値

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 ストリーム・アクセス用に装置が接続されていないため、その装置上でストリーム I/O ステートメントを実行できない。
197 I/O ステートメントの POS= 指定子が、検出できないファイルに接続されている装置を指定した。
198 未接続の装置でのストリーム I/O ステートメント。

変換エラー

データが無効であるか、データ転送ステートメントでデータの長さが正しくないと、変換エラーが発生します。 I/O ステートメントに IOSTAT= 指定子および ERR=ラベルがあり、 CNVERR オプションが YES に設定されている場合、変換エラーが発生すると、IOSTAT= 指定子が以下に定義した値のいずれかに設定され、ERR= ラベルに分岐します。 I/O ステートメントに IOSTAT= および ERR= 指定子がなく、CNVERR および ERR_RECOVERY の両オプションが YES に設定されていると、回復処理が行われ、プログラムは継続します。 I/O ステートメントに IOSTAT= および ERR= 指定子がなく、CNVERR オプションが YES に設定され、ERR_RECOVERY オプションが NO に設定されていると、プログラムは停止します。 CNVERR オプションが NO に設定されると、ERR ラベルには分岐せずに、以下に示すように IOSTAT= 指定子が設定される場合があります。

表 10. 変換エラー条件の 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 95 言語エラー

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 が指定されると、そのエラー条件はエラーとは見なされません。

表 11. Fortran 90 および Fortran 95 言語エラー条件の 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= に有効な値ではない。

+--------------------------------IBM 拡張の終り-------------------------------+


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]