WRITE

目的

WRITE ステートメントはデータ転送出力ステートメントです。

構文



>>-WRITE--(--io_control_list--)--+------------------+----------><
                                 '-output_item_list-'
 
 

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

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

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

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

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

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

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

オプションの文字である UNIT= を省略する場合は、io_control_list の最初の項目として u を指定しなければなりません。UNIT= を指定する場合、FMT= も指定する必要があります。

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

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

POS=integer_expr
FORTRAN 2003 の開始 integer_expr は 0 より大きい整数式です。 POS= はストリーム・アクセス用に接続されたファイル内で書き込まれるファイル記憶単位のファイル位置を指定します。POS= は、位置決めを行うことができないファイルに使用してはなりません。 FORTRAN 2003 の終了

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

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

IOSTAT= ios
入出力操作の状況を示す入出力状況指定子です。 ios は整変数です。IOSTAT= 指定子をコーディングすると、エラー・メッセージは抑制されます。ステートメントの実行が完了すると、ios の値は次のように定義されます。

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

ID= integer_variable
データ転送が非同期に行われることを示します。 integer_variable は整変数です。 エラーが検出されない場合、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 内の他の指定子の定義や評価などによって 影響を受けてはなりません。

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

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

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

NUM= integer_variable
入出力リストとファイルの間で転送されるデータの バイト数を指定する数指定子です。 integer_variable は整変数です。NUM= 指定子を使用できるのは、不定様式出力の場合に限られます。NUM パラメーターをコーディングすると、出力リストに表示されるバイト数が、レコードに書き込める バイト数よりも大きい場合、出されるエラー表示は抑止されます。 この場合、integer_variable の値は、書き込み可能な最大レコード長に設定されます。 残った出力リスト項目のデータは後続のレコードには書き込まれません。非同期データ転送ステートメントと、対応する WAIT ステートメントとの間で非同期データ転送ステートメントを実行するプログラムの一部 では、NUM= 指定子の integer_variable または それに関連するすべての変数を、参照したり、定義したり、定義を削除したり してはなりません。

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

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

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

暗黙 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 変数のその時点の値に応じた適切な値に置き換えられます。

規則

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

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

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

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

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

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

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

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

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

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

PRINT formatWRITE(*,format) と同じ働きをします。

WRITE (6,FMT='(10F8.2)') (LOG(A(I)),I=1,N+9,K),G

関連情報

IBM Copyright 2003