OPEN

目的

OPEN ステートメントは既存の外部ファイルを装置に接続するため、 事前結合された外部ファイルを作成し、それを装置に接続するため、あるいは 外部ファイルと装置の間の接続に関する特定の指定子を変更するために使用できます。

構文



>>-OPEN--(--open_list--)---------------------------------------><
 
 

open_list
装置指定子 (UNIT=u) を必ず 1 つ 含んでいなければならないリストです。このリストには、許可されている他の指定子をそれぞれ 1 つずつ入れることができます。 有効な指定子は次のとおりです。

[UNIT=] u
装置指定子です。u は外部装置指定子で、 その値はアスタリスクであってはなりません。 外部装置識別子は、整数式 (0 から 2,147,483,647 までの範囲の値を持つ) で表される 外部ファイルを示します。 オプションの文字である UNIT= を省略する場合は、open_list の 最初の項目として u を指定しなければなりません。

ACCESS= char_expr
ファイルの接続のためのアクセス方式を指定します。 char_expr はスカラー文字式で、式の値は、後続ブランクを 除去すると、SEQUENTIALDIRECT、または STREAM のいずれかになります。 デフォルトは SEQUENTIAL です。 ACCESS=DIRECT の場合は、RECL= を指定しなければなりません。 ACCESS=STREAM の場合は、RECL= を指定してはなりません。

ACTION= char_expr
認められる入出力操作を指定します。 char_expr はスカラー文字式で、その値は、READWRITE、または READWRITE と評価されます。 READ を指定した場合、WRITE および ENDFILE ステートメントはこの接続を参照できません。 WRITE を指定した場合、READ ステートメントは この接続を参照できません。 READWRITE を指定した場合、どの入出力ステートメントもこの接続を 参照できます。 ACTION= 指定子を省略した場合、デフォルト値は 実際のファイル許可により決まります。

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

ASYNCH= char_expr
明示的に接続された装置が非同期 I/O 用に使用される かどうかを示す、非同期 I/O 指定子です。

char_expr はスカラー文字式で、 その値は YES または NO のいずれかになります。 YES は、この接続に非同期データ転送ステートメントを許可することを指定します。 NO は、この接続に非同期データ転送ステートメントを許可しないことを指定します。 指定される値は、そのファイルに対して許可される一連の転送方法になります。 この指定子が省略される場合、デフォルト値は NO です。

事前接続された装置は、ASYNCH= に値 NO を指定して接続されています。

暗黙接続される装置の ASYNCH= 値は、装置上で実行される 最初のデータ転送ステートメントによって決まります。 最初のステートメントが非同期データ転送を実行し、暗黙接続されるファイルが 非同期データ転送を許可する場合、ASYNCH= 値は YES になります。 そうでない場合、ASYNCH= 値は NO になります。

+------------------------------End of IBM 拡張-------------------------------+

BLANK= char_expr
形式仕様を使用する場合の、ブランクのデフォルトの解釈を制御します。 char_expr はスカラー文字式で、式の値は、 後続ブランクを除去すると NULL または ZERO のいずれかになります。 BLANK= を指定する場合、FORM='FORMATTED' を指定しなければなりません。 BLANK= を指定しないで、FORM='FORMATTED' を指定した場合、 デフォルトは NULL です。

DELIM= char_expr
区切り文字がある場合に、リスト指示または名前リスト形式設定により 書き込まれた文字定数を区切るために、どのような区切り文字を使用するかを指定します。 char_expr は、スカラー文字式で、 その値は、APOSTROPHEQUOTE、または NONE と評価されなければなりません。 APOSTROPHE を指定した場合、アポストロフィによって文字定数が区切られます。 文字定数の中のすべての アポストロフィは重ね書きします。 QUOTE を指定した場合、二重引用符によって文字定数が区切られます。 文字定数の中の二重引用符はすべて重ね書きします。 NONE を指定した場合、文字定数は区切られません。 また、文字定数の中のどの文字も重ね書きする必要はありません。 デフォルト値は NONE です。 DELIM= 指定子は定様式入出力用に接続されるファイルにのみ有効です。 ただし、定様式レコードの入力時には無視されます。

ERR= stmt_label
エラーが発生した場合に制御が移される同じ有効範囲単位内の 実行可能ステートメントのステートメント・ラベルを指定するエラー指定子です。 ERR= 指定子をコーディングすると、エラー・メッセージは抑制されます。

FILE= char_expr

指定した装置に接続するファイルの名前を指定するファイル指定子です。

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

char_expr はスカラー文字式で、この式の後続ブランクを除去した後の値は、 有効な Linux オペレーティング・システム・ファイル名です。 ファイル指定子が必要であるときにそれを省略した場合は、装置は (デフォルトにより) fort.u に暗黙に接続されます。 ここで、u は先行ゼロを除去して指定した装置です。 暗黙接続されるファイルに代替ファイル名を使用できるように するには、UNIT_VARS 実行時オプションを使用してください。

注:
Linux オペレーティング・システム・ファイル名が有効であるためには、 各ファイル名の長さが <=255 文字以下で、絶対パス名の合計長が <=1023 文字以下でなければなりません (ただし、絶対パス名は指定しなくてもかまいません)。

+------------------------------End of IBM 拡張-------------------------------+

FORM= char_expr
ファイルを定様式入出力用に接続するのか、 あるいは不定様式入出力用に接続するのかを指定します。 char_expr はスカラー文字式で、式の値は、後続ブランクを 除去すると FORMATTED または UNFORMATTED のいずれかになります。 ファイルを順次アクセス用に接続する場合、デフォルトは FORMATTED です。 ファイルを直接アクセス FORTRAN 2003 の開始またはストリーム・アクセス FORTRAN 2003 の終了で接続する場合、デフォルトは UNFORMATTED です。

IOMSG= iomsg_variable
入出力操作によって戻されるメッセージを指定する入出力状況指定子です。 iomsg_variable は、デフォルトのスカラー文字変数です。これを、使用関連付けされた非ポインター保護変数にすることはできません。 この指定子を含む入出力ステートメントの実行が完了すると、iomsg_variable は以下のように定義されます。

IOSTAT= ios
入出力操作の状況を示す入出力状況指定子です。 ios は変数です。この指定子を含む入出力ステートメントの実行が完了すると、ios は 以下の値に定義されます。

PAD= char_expr
入力レコードをブランクで埋め込むかどうかを指定します。 char_expr はスカラー文字式で、式の値は、YES または NO の いずれかに評価される必要があります。YES を指定した場合、入力リストが指定され、かつ、定様式仕様で レコードに含まれるものよりも多くのデータが必要なときは、定様式入力レコードはブランクで埋め込まれます。NO を指定した場合、入力リストと定様式仕様に対して レコードに含まれるものよりも多くの文字を与えることはできません。 デフォルト値は YES です。 PAD= 指定子は定様式入出力用に接続されるファイルにのみ有効です。ただし、定様式レコードの出力時には無視されます。

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

-qxlf77 コンパイラー・オプションに noblankpad サブオプションを指定し、ファイルが定様式直接入出力用に接続される場合、PAD= 指定子を省略すると、デフォルト値は NO になります。

+------------------------------End of IBM 拡張-------------------------------+

POSITION= char_expr
順次アクセス用またはストリーム・アクセス用に接続されたファイルのファイル位置を指定します。 以前に存在していなかったファイルは、その初期点に位置付けられます。 char_expr はスカラー文字式で、式の値は、後続ブランクを 除去すると、ASISREWINDAPPEND のいずれかになります。 REWIND はファイルを初期点に位置付けます。APPEND はファイルをファイル終了レコードの前に位置付けます。 ファイル終了レコードが存在しない場合は、終端点に位置付けます。 ASIS は位置を変更しません。 以下の場合を除き、デフォルト値は ASIS です。

このような場合、WRITE ステートメントが 実行されると、POSITION= 指定子のデフォルト値は APPEND になります。

RECL= integer_expr

直接アクセス用に接続するファイル内の各レコードの長さ、 あるいは順次アクセス用に接続するファイル内のレコードの最大長を指定します。 integer_expr は整数式で、その値は正でなければなりません。 ファイルを直接アクセス用に接続する場合、この指定子を指定しなければなりません。 定様式入出力の場合、長さは文字データを含むすべてのレコードの文字数です。 不定様式入出力の場合、長さはデータの内部形式に必要なバイト数です。 不定様式の順次レコードの長さには、そのデータを 取り囲む 4 バイト・フィールドは考慮しません。

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

ファイルを 32 ビットの順次アクセス用に接続するときに RECL= を省略した場合、 その長さは 2**31-1 からレコード・ターミネーターの長さを引いたものです。 32 ビットの定様式順次ファイルの場合、デフォルトのレコードの長さは 2**31-2 です。 32 ビットでアクセス可能な不定様式ファイルの場合、 デフォルトのレコードの長さは 2**31-9 です。

32 ビットでランダムにアクセスできないファイルの場合、デフォルトの長さは 2**15 (32,768) です。

ファイルを 64 ビットの順次アクセス用に接続するときに RECL= を省略した場合、その長さは 2**63-1 からレコード・ターミネーターの長さを引いたものです。 UWIDTH 実行時オプションが 64 に 設定されるとき、64 ビットの定様式順次ファイルの場合、 デフォルトのレコードの長さは、2**63-2 です。 64 ビットの不定様式のファイルの場合、デフォルトのレコードの 長さは 2**63-17 です。

+------------------------------End of IBM 拡張-------------------------------+

STATUS= char_expr
ファイルのオープン後の状況を指定します。 char_expr はスカラー文字式で、この式の後続ブランクを 除去した後の値は、以下のうちの 1 つです。

デフォルトは UNKNOWN です。

規則

装置が既存のファイルに接続している場合、 その装置に対して OPEN ステートメントを実行することができます。 OPEN ステートメントに FILE= 指定子を 指定しない場合、その装置に接続されるファイルは、 その装置が現在接続されているファイルと同じものになります。

装置に接続されるファイルが、その装置が現在接続されているファイルと 異なる場合は、OPEN ステートメントの実行の直前に、STATUS= 指定子を指定せずに CLOSE ステートメントを その装置に対して実行した場合と同じ結果になります。

装置に接続されるファイルが、その装置が現在接続されているファイルと同じ である場合は、現在有効な値と異なる値をとることのできる 指定子は、BLANK=DELIM=PAD=ERR=、および IOSTAT= だけです。 OPEN ステートメントを実行すると、BLANK=DELIM=、または PAD= 指定子の新しい値が有効になります。 しかし、未指定の指定子およびファイルの位置は何の影響も受けません。 事前に実行された OPENERR=IOSTAT= 指定子 は、現在の OPEN ステートメントには効果がありません。 STATUS= 指定子を指定する 場合、値 OLD がなければなりません。 現在装置に接続されているファイルと同一のファイルを指定するには、 同一のファイル名を指定するか、FILE= 指定子を省略するか、 または同一のファイルにシンボリック・リンクされているファイルを指定します。

ファイルが装置に接続されている場合、そのファイルおよび異なる 装置に対する OPEN ステートメントは実行されません。

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

STATUS= 指定子の値が OLDNEW、または REPLACE の場合、FILE= 指定子はオプションです。

事前接続ファイルと標準エラー・デバイス以外のファイルに装置 0 を接続する ことはできません。しかし、BLANK=DELIM=、およ び PAD= 指定子の値を変更することはできます。

+------------------------------End of IBM 拡張-------------------------------+

ERR=IOSTAT= 指定子が設定されているときにエラーが 検出されると、ERR= 指定子によって指定されたステートメントに対して 転送が行われ、正の整数値が ios に割り当てられます。

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

IOSTAT=ERR= も指定していない場合は、以下のとおりです。

+------------------------------End of IBM 拡張-------------------------------+

!   Open a new file with name fname
 
CHARACTER*20 FNAME
FNAME = 'INPUT.DAT'
OPEN(UNIT=8,FILE=FNAME,STATUS='NEW',FORM='FORMATTED')
 
OPEN (4,FILE="myfile")
OPEN (4,FILE="myfile", PAD="NO")  ! Changing PAD= value to NO
 
!   Connects unit 2 to a tape device for unformatted, sequential
!   write-only access:
 
OPEN (2, FILE="/dev/rmt0",ACTION="WRITE",POSITION="REWIND", &
&   FORM="UNFORMATTED",ACCESS="SEQUENTIAL",RECL=32767)

関連情報

IBM Copyright 2003