Sun Studio 12: Fortran ライブラリ・リファレンス

1.4.44.1 制限事項

入出力ハンドラでできる処理は、1 文字をほかの文字に置き換えることだけです。1 文字を 複数の文字に置き換えることはできません。

エラーリカバリのアルゴリズムでは、読み取り中の不正な文字を置き換えることのみ可能で、別のコンテキストですでに不正な文字として読み取られた文字を置き換えることはできません。たとえば、並びによる読み取りで、正しい入力が "1.2345 9.8765" である場合に入力が "1.234509.8765" であると、これは有効な数字でないため、入出力ライブラリは 2 つめのピリオドでエラーになります。ただし、その時点までは、後ろに戻って '0' を空白に戻すことはできません。

現在は、このエラー処理の機能は、namelist のとおりに読み取った入力に対しては機能していません。namelist のとおりに読み取った入力を処理している場合は、エラーが発生しても、指定した入出力エラーハンドラは呼び出されません。

入出力エラーハンドラは、(内部ファイルではなく) 外部ファイルに対してのみ設定されます。これは、内部ファイルには、関連付けられる論理装置がないためです。

入出力エラーハンドラは、構文エラーに対してのみ呼び出されます。システムエラーやセマンティックエラー (入力値のオーバーフローなど) では呼び出されません。

ユーザー定義の入出力エラーハンドラが、入出力ライブラリに不正な文字を渡すようになっている場合は、ユーザー定義の入出力エラーハンドラを繰り返し呼び出すことになり、無限ループが発生することがあります。ファイルの同じ位置でエラーが発生する場合、エラーハンドラは終了するべきです。このようにするには、CORR_ACTION をゼロに設定する方法があります。このようにすると、入出力ライブラリは通常のエラー処理を続行します。