目的
FORMAT ステートメントは I/O ステートメントに形式仕様を提供します。
構文
>>-FORMAT--(--+------------------+--)-------------------------->< '-format_item_list-' |
>>-+-+---+--data_edit_desc---------+--------------------------->< | '-r-' | +-control_edit_desc-------------+ +-+---+--(--format_item_list--)-+ | '-r-' | '-char_string_edit_desc---------' |
形式 | 使途 | ページ |
---|---|---|
A Aw | 文字値を編集します。 | "A (文字) 編集" |
Bw Bw.m | 2 進値を編集します。 | "B (2 進) 編集" |
Ew.d Ew.dEe Ew.dDe * Ew.dQe * Dw.d ENw.d ENw.dEe ESw.d ESw.dEe Qw.d * | 指数付き実数および複素数を編集します。 | "E、D、および Q (拡張精度) 編集" |
Fw.d | 指数なしの実数および複素数を編集します。 | "F (指数なし実数) 編集" |
Gw.d Gw.dEe Gw.dDe * Gw.dQe * | データのタイプに出力形式を適用し、組み込みタイプのデータ・フィールドを編集ます。また、データのタイプが実数の場合、データの絶対値を編集します。 | "G (一般) 編集" |
Iw Iw.m | 整数を編集します。 | "I (整数) 編集" |
Lw | 論理値を編集します。 | "L (論理) 編集" |
Ow Ow.m | 8 進値を編集します。 | "O (8 進数) 編集" |
Q * | 入力レコード内に残っている文字のカウントを戻します。 * | "Q (文字カウント) 編集" |
Zw Zw.m | 16 進値を編集します。 | "Z (16 進) 編集" |
それぞれの意味は次のとおりです。
ただし、出力で、I、B、O、Z、および F 編集記述子でこれにゼロを指定できる、 Fortran 95 は例外です。
w、m、d、e は、以下のように表すこともできます。
+----------------------------------IBM 拡張----------------------------------+
+--------------------------------IBM 拡張の終り-------------------------------+
w、m、d、または e に対して kind パラメーターを指定することはできません。
+----------------------------------IBM 拡張----------------------------------+
Q データ編集記述子には 2 つのタイプがあります (Qw.d および Q)。
+--------------------------------IBM 拡張の終り-------------------------------+
形式 | 使途 | ページ |
---|---|---|
/ r / | 現在のレコードに関するデータ転送の終わりを指定します。 | "/ (スラッシュ) 編集" |
: | I/O リスト内にこれ以上項目がない場合に、形式制御の終わりを指定します。 | ": (コロン) 編集" |
$ * | 出力でレコードの終わりを抑制します。* | "$ (ドル記号) 編集" * |
BN | 数値入力フィールド内の非先行ブランクを無視します。 | "BN (ブランク・ヌル) および BZ (ブランク・ゼロ) 編集" |
BZ | 数値入力フィールド内の非先行ブランクをゼロとして解釈します。 | "BN (ブランク・ヌル) および BZ (ブランク・ゼロ) 編集" |
kP | 実数および複素数項目に対してスケール因数を指定します。 | "P (スケール因数) 編集" |
S SS | 正符号を書き込まないように指定します。 | "S、SP、および SS (符号制御) 編集" |
SP | 正符号を書き込むように指定します。 | "S、SP、および SS (符号制御) 編集" |
Tc | 次の文字の転送先または転送元のレコード内での絶対位置を指定します。 | "T、TL、TR、および X (定位置) 編集" |
TLc | 次の文字の転送先または転送元のレコード内での相対位置 (レコード内の現在の位置の左側の位置) を指定します。 | "T、TL、TR、および X (定位置) 編集" |
TRc | 次の文字の転送先または転送元のレコード内での相対位置 (レコード内の現在の位置の右側の位置) を指定します。 | "T、TL、TR、および X (定位置) 編集" |
oX | 次の文字の転送先または転送元のレコード内での相対位置 (レコード内の現在の位置の右側の位置) を指定します。 | "T、TL、TR、および X (定位置) 編集" |
それぞれの意味は次のとおりです。
+----------------------------------IBM 拡張----------------------------------+
r、k、c、および o は、整数値に計算される不等号括弧 (< と >) で囲まれた算術式としても表すことができます。
+--------------------------------IBM 拡張の終り-------------------------------+
r、k、c、o に対して kind 型付きパラメーターを指定することはできません。
形式 | 使途 | ページ |
---|---|---|
nHstr | 文字ストリング (str) を出力します。 | "H 編集" |
'str' "str" | 文字ストリング (str) を出力します。 | "アポストロフィ / 二重引用符編集 (文字ストリング編集記述子)" |
規則
定様式の READ、WRITE、または PRINT ステートメント内の形式識別子が、ステートメント・ラベルであるか、あるいはステートメント・ラベルが割り当てられた変数である場合、ステートメント・ラベルは FORMAT ステートメントを識別します。
FORMAT ステートメントには、ステートメント・ラベルを付けなければなりません。 FORMAT ステートメントを、 ブロック・データ・プログラム単位、インターフェース・ブロック、モジュールの有効範囲、または派生型定義に指定することはできません。
コンマは編集記述子を分離します。 P 編集記述子と、その直後に続く F、E、 EN、ES、D、G、または Q (拡張精度と文字カウントの両方) 編集記述子との間のコンマ、オプションの繰り返し指定がない場合の、スラッシュ編集記述子の前のコンマ、スラッシュ編集記述子の後のコンマ、およびコロン編集記述子の前後のコンマは省略できます。
FORMAT 仕様を I/O ステートメントの中で文字式として指定することもできます。
XL Fortran は形式仕様の中で大文字と小文字を同じものとして取り扱います。ただし、文字ストリング編集記述子の場合はその限りではありません。
定様式の READ、WRITE、または PRINT ステートメント内の形式識別子 (READを参照) が文字配列名または文字式の場合、その配列または式の値が文字配列仕様です。
形式識別子が文字配列エレメント名の場合、形式仕様は、その配列エレメントの中に完全に入っていなければなりません。形式識別子が文字配列名の場合、形式仕様は、最初のエレメントから後続のエレメントにまたがっていてもかまいません。
形式仕様の前にブランクがあってもかまいません。形式仕様の終了を示す右括弧の次に文字データを指定してもかまいません。そのようにしても、形式仕様には何の影響もありません。
+----------------------------------IBM 拡張----------------------------------+
編集記述子が整定数を必要とするときは、いつでも FORMAT ステートメントに整数式を指定することができます。整数式はかぎ括弧 (< と >) で囲まなくてはなりません。変数形式設定式の外側に符号を使用することはできません。次に、使用可能な形式仕様を示します。
WRITE(6,20) INT1 20 FORMAT(I<MAX(20,5)>) WRITE(6,FMT=30) INT2, INT3 30 FORMAT(I<J+K>,I<2*M>)
整数式は、有効であれば関数呼び出しおよび仮引き数への参照を含むどんな Fortran 式であってもかまいません。ただし、次の制約があります。
READ、WRITE、または PRINT ステートメントの実行中に I/O 項目を処理するたびに、式の値は再計算されます。
+--------------------------------IBM 拡張の終り-------------------------------+
CHARACTER*32 CHARVAR CHARVAR="('integer: ',I2,' binary: ',B8)" ! Character format M = 56 ! specification J = 1 ! OUTPUT: X = 2355.95843 ! WRITE (6,770) M,X ! 56 2355.96 WRITE (6,CHARVAR) M,M ! integer: 56 ! binary: 00111000 WRITE (6,880) J,M ! 1 ! 56 770 FORMAT(I3, 2F10.2) 880 FORMAT(I<J+1>) END
関連情報