XL Fortran for AIX V8.1.1

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


ファイル

ファイルとは、一連の内部レコードおよび外部レコードが並んだものです。外部ファイルには、以下の 3 つの方法でアクセスできます。

外部ファイル

外部ファイルとは、ディスク、テープ、または端末装置のような I/O 装置に関連したファイルのことです。

あるプログラムが外部ファイルを読み取り用または書き込み用に使用できるとき、またはプログラムが外部ファイルを作成したとき、実行可能プログラムの外部ファイルが存在するといいます。外部ファイルは、作成すると存在するようになります。外部ファイルは削除されると、存在しなくなります。何も入っていない外部ファイルが存在する可能性もあります。

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

外部ファイルをファイル名で識別する場合、 AIX オペレーティング・システムのファイル名として有効であるためには、各ファイル名の長さを 255 文字以下に、絶対パス名の合計長を 1023 文字以下にする必要があります (ただし、絶対パス名は指定しなくてもかまいません)。

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

外部ファイルの位置は、通常、先行する I/O 操作によって設定されます。外部ファイルの位置は次のいずれかになります。

外部ファイル・アクセス・モード: 順次、直接、およびストリーム

XL Fortran は、外部ファイルの定数にアクセスする次の 3 つの方法を提供します。

ファイルを装置に接続するときのアクセス方式を決定できます。

順次アクセス用に接続されたファイルには、レコードは書き込まれた順に入ります。レコードは、全部が定様式レコードか、全部が不定様式レコードのいずれかでなければなりません。最後のレコードは、ファイル終了レコードでなければなりません。ファイルが順次アクセス用に接続されている間は、直接アクセスまたはストリーム・アクセス I/O ステートメントを使って、レコードを読み取ったり書き込んだりしてはなりません。

直接アクセス用に接続されたファイルのレコードは、任意の順序で読み取りまたは書き込みを行うことができます。レコードは、全部が定様式レコードか、全部が不定様式レコードのいずれかでなければなりません。そのファイルが以前に順次アクセス用に接続されていた場合、ファイルの最後のレコードがファイル終了レコードになる場合があります。この場合、ファイル終了レコードは、そのファイルが直接アクセスまたはストリーム・アクセス用に接続されたときには、ファイルの一部と見なされません。順次またはストリーム・アクセス、リスト指示形式設定、名前リスト形式設定、または非アドバンス I/O ステートメントを使って、レコードの読み取りや書き込みを行うことはできません。

直接アクセス用に接続されているファイルでは、各レコードには、ファイルのレコードの順序を識別するためのレコード番号が付いています。レコード番号は整数値で、レコードの読み取りまたは書き込み時に指定する必要があります。レコードには順に番号が付けられています。最初のレコードが 1 番になります。レコードの読み取りまたは書き込みは、レコード番号順に行う必要はありません。たとえば、9 番、5 番、11 番のレコードを、間にあるレコードを書き込まずに、この順序で書き込むこともできます。

直接アクセス用に接続されたファイル内のレコードは、すべて同じ長さになります。この長さは、ファイルに接続するときに、OPEN ステートメント (OPENを参照) で指定します。

直接アクセス用に接続されたファイル内のレコードを削除することはできませんが、新しい値に書き直すことはできます。まずレコードを書き込まなければ、レコードを読み取ることはできません。

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

ストリーム・アクセス用のファイルは、定様式としても不定様式としても接続できます。どちらの形式も、1 バイト・ファイル記憶単位で構成される外部ストリーム・ファイルを使用します。不定様式ストリーム・アクセス用に接続されたファイルはストリーム構造のみを持ちますが、定様式ストリーム・アクセス用に接続されたファイルはレコードとストリーム構造の両方を持ちます。これらの二重構造ファイルには以下の特性があります。

定様式ストリーム・アクセス用に接続されたファイルの最初のファイル記憶単位の位置が 1 になります。後続の各記憶単位の位置は、直前の記憶単位よりも大きくなります。一連の記憶単位の位置は必ずしも連続するとは限らず、位置指定可能なファイルの読み取りまたは書き込みを位置順に行う必要はありません。定様式ストリーム・アクセス用に接続されたファイル記憶単位の位置を判別するには、INQUIRE ステートメントの POS= 指定子を使用します。ファイルを位置指定できない場合は、INQUIRE ステートメントを使用して取得した値を使って、そのファイルを位置指定することができます。ファイル作成以降、記憶単位が書き込まれ、接続が READ ステートメントを許可する限り、ファイルに接続されている間はファイルからの読み取りを行います。定様式ストリーム・アクセス用に接続されたファイルのファイル記憶単位は、定様式ストリーム・アクセス I/O ステートメントによってのみ、読み取りまたは書き込みを行うことができます。

不定様式ストリーム・アクセス用に接続されたファイルの最初のファイル記憶単位の位置が 1 になります。連続する記憶単位の位置の値は、順番に 1 ずつ増えていきます。位置指定可能なファイルの読み取りまたは書き込みを位置順に行う必要はありません。ファイル作成以降、記憶単位が書き込まれ、接続が READ ステートメントを許可する限り、ファイルに接続されている間はファイルから記憶単位を読み取ることができます。不定様式ストリーム・アクセス用に接続されたファイルのファイル記憶単位は、ストリーム・アクセス I/O ステートメントによってのみ、読み取りまたは書き込みを行うことができます。

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

内部ファイル

内部ファイルは、ベクトル添え字を持つ配列セクションではない文字変数です。内部ファイルは常に存在します。

内部ファイルがスカラー文字変数の場合、ファイルは、そのスカラー変数と等しい長さを持つ 1 つのレコードから成ります。内部ファイルが文字配列の場合、配列の各エレメントは、ファイルのレコードとなり、各レコードの長さは同一になります。

レコードの読み取りおよび書き込みは、順次アクセス定様式 I/O ステートメントによって行われます。内部ファイルを指定できる I/O は、 READ および WRITE だけです。

WRITE ステートメントによって書き込まれたものが、レコード全体より小さい場合、レコードの残りの部分にブランクが埋め込まれます。

入力において、ブランクは、BLANK=NULL を指定してオープンされた外部ファイルの場合と同様に扱われます。レコードには、必要に応じてブランクが埋め込まれます。ただし、これは、-qxlf77 コンパイラー・オプションの noblankpad サブオプションが指定されない場合に限ります。このサブオプションは、レコードに対して埋め込みが行われないことを示します。

内部ファイルのレコードになっているスカラー文字変数は、出力ステートメント以外の方法でも、定義状態または未定義状態にすることができます。たとえば、文字割り当てステートメントを使っても定義状態にすることができます。


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