ファイルの構造

ファイルの形式も機種によりかなり異なるが, FIOLIB は固定長レコードのファイルに限って 異機種間のデータ転送を可能にするためのユーティリティーである.

FORTRAN規格におけるファイルの属性は基本的に, 書式のありなし(FORMATTED/UNFORMATTED)と アクセス方法(SEQUENTIAL/DIRECT) の組み合せで決る. 書式のありなしは,例えばWRITE文を実行するときに, 内部表現を文字に変換するか,内部表現をそのまま出力するかということを 指定するものであり, いわば「ファイルの中身」を指定するものである. 一方, アクセス方法の指定は文字どおり解釈すれば, 順番に読み書きするか,ランダムに読み書きするかという指定であるが, 実際には「アクセス方法」よりも, そのアクセス方法を実現する「ファイルの構造」の方が問題となる場合が多い.

規格上, DIRECT ファイルではレコード長を指定するRECL指定子を書かなければならず, SEQUENTIAL ファイルの場合には,これを.書.い.て.は.い.け.な.い. つまり,「アクセス方法」の指定は, DIRECT ファイルは固定長レコードのファイルであり, SEQUENTIAL ファイルは可変長レコードのファイルであるという 「ファイル構造」を暗黙のうちに指定することになる.

FORTRANプログラム上の論理的なレコードが, 実際に記録媒体の上でどのように記録されるかということに関しても, 大きく分けてメインフレーム系(IBM系)とUNIX系の2種類あり, それぞれファイルの扱い方がかなり異なる.

メインフレーム系

メインフレーム系の計算機では, アクセス方法とファイルの構造は,ほとんど独立した概念として扱われる. ファイルの構造としては, 固定長(F), 可変長(V), ブロック化固定長(FB), ブロック化可変長(VB), さらに,スパンドブロック化可変長(VBS) などがあるが, これらの概念はFORTRANにはないので, FORTRANプログラム以外の部分(DD文など)で指定することになる.

これらのファイル構造のうち,固定長ファイル(F, FB)が最も単純で, 決った長さのデータが並んでいるだけで, 余分なコードは入っていない. これに対して,スパンドブロック化可変長(VBS)形式は, 最も複雑な構造をしているが,どんな長さのレコードも記録できる 真の可変長レコード形式である (V, VBは可変長といってもレコード長の上限がある).

また,一般に計算機が読み書きする時には, できるだけ大きな単位にまとめて行う方が効率がよいので, ブロック化された形式の方が処理は早い.

UNIX系

UNIX系の計算機が扱うファイルは 基本的に全て可変長レコードのファイルであり, 表向きブロック化という概念はない. 実際には,何等かのブロック化が計算機内部で行われているものと 思われるが, それは,FORTRANユーザーのレベルではわからない.


Back to Main


Latex Source


地球流体電脳倶楽部 : 95/6/9 (Version 5.0)

NUMAGUTI Atusi <a1n@gfdl.gov>
Last Modified: Thu Aug 31 13:03:51 EDT 1995