XL Fortran for AIX V8.1.1

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

READ

目的

READ ステートメントはデータ転送入力ステートメントです。

構文



>>-READ--+-name---------------------------------------+--------><
         +-format--+--------------------+-------------+
         |         '-,--input_item_list-'             |
         '-(--io_control_list--)--+-----------------+-'
                                  '-input_item_list-'
 
 

format
FMT=format の項で解説する形式識別子です。これはホレリス定数であってはなりません。

name
名前リストのグループ名です。

input_item
入力リスト項目です。入力リストには転送するデータを指定します。入力リスト項目には、次のものを指定できます。

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

[UNIT=] u
入力操作で使用する装置を指定する装置識別子です。 u は、外部装置識別子または内部ファイル識別子です。

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

外部装置識別子は外部ファイルを示します。それは次のうちの 1 つです。

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

内部ファイル識別子は内部ファイルを示します。これは、ベクトル添え字を持つ配列セクションにはならない文字変数の名前です。

オプションの文字である UNIT= を省略する場合、uio_control_list の最初の項目でなければなりません。オプションの文字である UNIT= を指定する場合、オプションの文字 FMT= またはオプションの文字 NML= もなければなりません。

[FMT=] format
入力操作で使用する形式を指定する形式指定子です。 format は形式識別子で、次のいずれかです。

オプションの文字である FMT= を省略する場合、io_control_list 内の 2 番目の項目は format でなければなりません。最初の項目は、オプションの文字 UNIT= を省略した装置指定子でなければなりません。 1 つの入力ステートメントに NML=FMT= の両方を指定することはできません。

POS=integer_expr
integer_expr はスカラー整数式で、式の値は 0 より大きくなければなりません。POS= はストリーム・アクセス用に接続されたファイル内で読み取られるファイル記憶単位のファイル位置を示します。 POS= は、位置決めを行うことができないファイルに使用してはなりません。

REC= integer_expr
直接アクセス用に接続されたファイルの中で読み取るレコードの番号を指定するレコード指定子です。 REC= 指定子を使用できるのは、直接入力の場合に限られます。 integer_expr は正の値を持つ整数式です。リスト指示または名前リスト形式設定を使用している場合、および装置指定子で内部ファイルを使用している場合、レコード指定子は有効ではありません。 END= 指定子を同時に用いることはできません。レコード指定子は、ファイル内のレコードの相対的な位置を示します。最初のレコードの相対位置番号は 1 です。ストリーム・アクセス用に接続された装置を指定するデータ転送ステートメントで REC= を指定してはなりません。また、POS= 指定子を使用してはなりません。

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

ID= integer_variable
データ転送が非同期に行われることを示します。 integer_variable は、INTEGER(4) またはデフォルト整数のタイプのスカラーです。エラーが検出されない場合、integer_variable は、非同期データ転送ステートメントの実行後に 1 つの値で定義されます。この値は、対応する WAIT ステートメント内で使用されなければなりません。

非同期データ転送は、直接不定様式、順次不定様式、ストリーム不定様式のいずれかでなければなりません。内部ファイルへの非同期 I/O は禁止されています。ロー文字装置への非同期 I/O (たとえば、テープまたはロー論理ボリュームへの非同期 I/O) は、禁止されています。 integer_variable を、データ転送 I/O リストのエンティティーや、データ転送 I/O リストの io_implied_dodo_variable に関連させることはできません。 integer_variable が配列エレメント参照の場合、その添え字値は、データ転送、io_implied_do 処理、または io_control_spec 内の他の指定子の定義や評価などによって影響を受けてはなりません。

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

IOSTAT= ios
I/O 操作の状況を示す I/O 状況指定子です。 ios は、INTEGER(4) またはデフォルト整数のタイプの変数です。 IOSTAT= 指定子は、エラー・メッセージを抑制します。ステートメントの実行が完了すると、ios の値は次のように定義されます。

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

END= stmt_label
エラーが発生せずにファイル終了レコードまで達した場合に、プログラムの実行を継続するステートメント・ラベルを指定するファイルの終わり指定子です。外部ファイルはファイルの最終レコードの後に位置付けられます。 IOSTAT= 指定子を指定した場合、この指定子には負の値が割り当てられます。 NUM= 指定子を指定した場合、この指定子には整数値が割り当てられます。エラーが発生した場合、そのステートメントに SIZE= 指定子が含まれていると、指定した変数は整数値で定義されます。END= 指定子をコーディングすると、ファイルの終わりに関するエラー・メッセージが抑止されます。この指定子は、順次アクセスまたは直接アクセス用に接続された装置に指定することができます。

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

NUM= integer_variable
入出力リストとファイルの間で転送されるデータのバイト数を指定する数指定子です。 integer_variable は、INTEGER(4) タイプ、64 ビットの INTEGER(8) タイプ、またはデフォルトの整数タイプのスカラー変数名です。 NUM= 指定子を使用できるのは、不定様式出力の場合に限られます。NUM パラメーターをコーディングすると、出力リストに表示されるバイト数が、レコードに書き込めるバイト数よりも大きい場合、出されるエラー表示は抑止されます。この場合、integer_variable の値は、書き込み可能な最大レコード長に設定されます。残りの出力リスト項目からのデータは、これ以後のレコードには書き込まれません。

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

[NML=] name
事前に定義した名前リストの名前を指定する名前リスト指定子です。オプションの文字の NML= を指定しない場合、リストの 2 番目のパラメーターは名前リストの名前でなければなりません。また、最初の項目は UNIT= を省略した装置指定子でなければなりません。 NML=UNIT= の両方を指定する場合、すべてのパラメーターを任意の順序で指定することができます。 NML= 指定子は FMT= の代替指定子です。1 つの入力ステートメントに NML=FMT= の両方を指定することはできません。

ADVANCE= char_expr
このステートメントについて非事前入力が発生するかどうかを決定する事前指定子です。 char_expr はスカラー文字式で、式の値は、YES または NO のいずれかに評価されます。 NO を指定した場合、非事前入力が発生します。 YES を指定した場合、事前定様式順次入力、または事前ストリーム入力が発生します。デフォルト値は YES です。ADVANCE= を指定できるのは、内部ファイル単位指定子を指定しない明示的な形式仕様を持つ定様式の順次 READ ステートメントまたはストリーム READ ステートメント内だけです。

SIZE= count
現在の入力ステートメントの実行中にデータ編集記述子によって転送される文字数を決定する文字カウント指定子です。 count は、デフォルトの整数タイプ、

IBM 拡張の開始 INTEGER(4) タイプ、または 64 ビットの INTEGER(8) タイプのスカラー変数です。 IBM 拡張の終了 埋め込みとして挿入されるブランクはカウントされません。

EOR= stmt_label
レコードの終わり指定子です。この指定子を指定し、レコードの終わりが検出され、ステートメントの実行中にエラーが発生しなかった場合は、以下のとおりです。 PAD= がある場合、次のようになります。
  1. PAD= 指定子の値が YES の場合、レコードはブランクで埋め込まれ、入力リスト項目と、レコードが含む文字よりも多くの文字を必要とするデータ編集記述子を満たします。
  2. READ ステートメントの実行が終了します。
  3. READ ステートメントに指定されているファイルが現在のレコードの後ろに置かれます。
  4. IOSTAT= 指定子を指定している場合、指定した変数はファイルの終わりの値と異なる負の値で定義されます。
  5. SIZE= 指定子を指定している場合、指定した変数は整数値で定義されます。
  6. EOR= 指定子によって指定されているステートメント・ラベルを含むステートメントの実行が継続されます。
  7. レコード終わりに関するメッセージが抑止されます。

暗黙 DO リスト



>>-(--do_object_list-- , --------------------------------------->
 
>--do_variable = arith_expr1arith_expr2----------------------->
 
>--+---+--+-------------+--)-----------------------------------><
   '-,-'  '-arith_expr3-'
 
 

do_object
出力リスト項目です。

do_variable
整数、または実数タイプのスカラー変数です。

arith_expr1arith_expr2、 および  arith_expr3
スカラー数式です。

暗黙 DO リストの範囲は do_object_list です。繰り返し回数および DO 変数の値は、DO ステートメントの場合と同様に arith_expr1arith_expr2、および arith_expr3 で決まります。暗黙 DO リストが実行されると、暗黙 DO リストの繰り返しごとに、do_object_list 内の項目が 1 つ指定され、DO 変数のその時点の値に応じた適切な値に置き換えられます。

DO 変数または関連するデータ項目を入力リスト項目として do_object_list に指定することはできません。ただし、暗黙 DO リストの外にある同じ READ ステートメント内では DO 変数または関連するデータ項目を読み取ることができます。

規則

ERR=EOR= および END= 指定子によって指定されるステートメント・ラベルは READ ステートメントと同じ有効範囲単位内にある分岐ターゲット・ステートメントを参照していなければなりません。

EOR= 指定子または SIZE= 指定子を用いた場合は、値 NO を持つ ADVANCE= 指定子も指定する必要があります。

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

NUM= 指定子を指定した場合は、形式指定子も名前リスト指定子も指定することはできません。

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

IOSTAT=SIZE=NUM= 指定子に指定された変数を、入力リスト項目、名前リストのリスト項目、および暗黙 DO リストの DO 変数に関連付けることはできません。このような指定子変数が配列エレメントの場合、データ転送、暗黙 DO 処理、または他の指定子の定義または評価が、その添え字値に影響を与えてはいけません。

io_control_list を指定していない READ ステートメントは、外部装置識別子がアスタリスクである io_control_list を指定した READ ステートメントと同じ装置を指定します。

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

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

ERR=IOSTAT= 指定子が設定され、非同期データ転送中にエラーが検出されると、対応する WAIT ステートメントの実行は要求されません。

END=IOSTAT= 指定子が設定され、非同期データ転送中にファイルの終わり条件が検出されると、対応する WAIT ステートメントの実行は要求されません。

変換エラーが検出され、 CNVERR 実行時オプションが NO に設定されている場合、 IOSTAT= は設定されますが、 ERR= には分岐しません。

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

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

INTEGER A(100)
CHARACTER*4 B
READ *, A(LBOUND(A,1):UBOUND(A,1))
READ (7,FMT='(A3)',ADVANCE='NO',EOR=100) B
     
  ·
  ·
  ·
100 PRINT *, 'end of record reached' END

関連情報


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