7.1 ストリーム入出力
ストリームファイルはACCESS='STREAM'指定子を指定してオープンされたファイルです。 ストリームファイルには書式付きストリームと書式なしストリームの2種類があります。
書式付きストリームファイルはCのテキストストリームと同等です。
通常の順アクセスファイルとほぼ同じように振舞いますが、レコード長に制限がないという点が異なります。
Cにおけると同様、書式付きストリームに書き出す場合には、
データに埋め込まれた改行文字により新たなレコードが生成されることになります。
新たな組込み調査関数NEW_LINE(A)はAの種別(文字セット)としてのこの文字を返します。
文字セットがASCIIの場合の値はIACHAR(10)です。
例:
OPEN(17,FORM='formatted',ACCESS='stream',STATUS='new') WRITE(17,'(A)'), 'This is record 1.'//NEW_LINE('A')//'This is record 2.'
書式なしストリームファイルはCのバイナリストリームと同等で、レコード境界を持ちません。 そのためBACKSPACEを書式なしストリームで使うことはできません。 書式なしストリームに書かれるデータは書式整形を伴わずにファイルに転送され、 書式なしストリームから読み込まれるデータはファイル上の形のまま変数に直接転送されます。
ストリームファイルを読んだり書いたりする場合、 ファイルのどこにデータを書くかを指定するためにPOS=指定子を使用することができます。 ファイルの最初の文字は位置1です。 POS=指定子はINQUIRE文の中でも利用可能で、 その場合にはファイル上における現在の位置が応答として返されます。 書式付きストリームを読んだり書いたりする場合には、READもしくは WRITEにおけるPOS=は1(つまりファイルの最初)、または以前の INQUIREにより得られた値になっています。
書式なしの順アクセスファイルとは異なり、 書式なしストリームファイルに対しファイル終端より前の位置に書き込む場合にはファイルの切詰めは行われない点に注意して下さい。 (しかし書式付きストリームの場合にはこの切詰めが行われます。)
最後にSTREAM=指定子がINQUIRE文に追加されています。
この指定子はスカラのデフォルト文字変数を取り、
ファイルがストリーム入出力用にオープンできる場合(ACCESS='STREAM')にはそれに対し値'YES'を、
ファイルがストリーム入出力用にオープンできない場合には値'NO'を、
ファイルがストリーム入出力用にオープンできるかどうか判別できない場合には値'UNKNOWN'を代入します。
ナビゲーション:前へ 上へ 次へ