ここでは、Fortran 2003 規格には含まれていませんが、f95 コンパイラで受け入れら Fortran 95 入出力処理の拡張機能について説明します。FORTRAN 77 コンパイラ、f77 の入出力拡張機能の一部は、Fortran コンパイラに組み込まれています。
2 つの新機能によって、ユーザーは独自に論理ユニットの書式付き入力のエラー処理ルーチンを指定できます。書式エラーが検出されると、実行時入出力ライブラリが、エラーの原因となった入力中の文字を表すデータを付けて、指定されたユーザー定義のハンドラを呼び出します。ハンドラルーチンは、代わりの文字を提供してエラーが検出された時点から入出力処理を続けるか、デフォルトの Fortran エラー処理を実行することができます。
この新しいルーチン、SET_IO_ERR_HANDLER(3f) と GET_IO_ERR_HANDLER(3f) はモジュールサブルーチンであり、これらを呼び出すルーチンの中には USE SUN_IO_HANDLERS が必要です。これらのルーチンの詳細については、マニュアルページを参照してください。
FORTRAN 77 では、ある書式の整定数を、山カッコで囲まれた任意の式に置き換えることができました。
1 FORMAT( … < expr > … )
nH… 編集記述子の n として、あるいは ASSIGN 文の参照する FORMAT 文、または並列化領域内の FORMAT 文では、可変フォーマット式は使えません。
この機能は f95 で可能になり、-f77 互換性オプションフラグは不要です。
入力時にグループ名の先頭に $ または & が付きます。& は、Fortran 95 の規格だけが受け付ける形式であり、NAMELIST 出力によっても書き込まれます。
入力の終了を表す記号として $ を受け入れます。ただし、グループ内の最後のデータ項目が CHARACTER データである場合は別です。その場合、$ は、入力データとして扱われます。
NAMELIST 入力は、記録の最初の桁から開始することができます。
ファイルを開くときに FORM='BINARY' と指定すると、レコード長がファイルに組み込まれないことを除いて、FORM='UNFORMATTED' とほぼ同じ結果になります。このデータがなければ、1 レコードの開始点と終了点を示す方法がありません。このように、後退する場所を知らせることができないので、FORM='BINARY' ファイルに対して BACKSPACE を実行できません。'BINARY' ファイルに対して READ を実行すると、入力リストの変数を設定するために必要な量のデータが読み込まれます。
WRITE 文。データはバイナリでファイルに書き込まれ、出力リストで指定された量のバイトが転送されます。
READ 文。入力リストの変数にデータが読み込まれ、リストで必要なだけのバイトが転送されます。ファイルにはレコードマークがないので、「レコードの終端」エラーは検出されません。検出されるエラーは、「ファイルの終端」または異常システムエラーだけです。
INQUIRE 文。FORM='BINARY' で開いたファイル上の INQUIRE は、次の結果を返します。
FORM=”BINARY”ACCESS=”SEQUENTIAL”DIRECT=”NO”FORMATTED=”NO” UNFORMATTED=”YES”RECL=AND NEXTREC= は未定義です。
BACKSPACE 文。許可されていません。エラーが返されます。
ENDFILE 文。通常どおり、現在の位置でファイルを切り捨てます。
REWIND 文。通常どおり、ファイルの位置をデータの先頭に変更します。
さまざまな装置に対し再帰的な入出力が可能です (これは、f95 の入出力ライブラリが「MT-Warm」だからです)。
RECL=2147483646 (231-2) は、順番に書式化された、並びによる変数群出力上のデフォルトの記録長です。
ENCODE および DECODE は、『FORTRAN 77 言語リファレンスマニュアル』で説明するように認識され、実装されています。
次に示すように、ADVANCE=’NO’ で非前進入出力が可能になります。
write(*,’(a)’,ADVANCE=’NO’) ’n= ’ read(*,*) n