2010年8月11日水曜日

OFMT = printを使って数値1つだけを書き出す時の書式 - AWK

AWKの数値計算関数と関連機能
AWKの文字列操作関数と関連機能
AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
printを使って数値1つだけを書き出す時の書式です。

o それ以外の自動変換でも同じ書式を使いたい時は、変数CONVFMTにも同じ値を設定します。


**** 書式
--------
OFMT
もしくは
OFMT = "表示用書式"
--------

o OFMTは変数です。初期値は"%.6g"、パーセント記号の後ろにピリオドが入っています。
o 表示用書式 -- printfで指定出来る書式の中から、実数を変換出来るものを選びます。例。"%.10g"


**** 使用例
--------
BEGIN {
  OFMT = "%.10g";
  print "名前", "食べたケーキの量";
  print "ミクさん", 1/3;
  print "リンちゃん", 1/3;
  print "レン君", "作る時に味見。";
  print "ルカ様", 1/3;
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
printを使って数値1つだけを書き出す時の書式です。
   + それ以外の自動変換では、変数CONVFMTを使います。
o 初期値は"%.6g"、パーセント記号の後ろにピリオドが入っています。
o カンマで区切った時は、カンマの間に数値1つだけが入っている所に対して、この書式を使います。
o OFMTに従って変換するのは、printを使って次のように書いた時です。
   + print 1/3;
   + print "ミクさん", 1/3; # カンマで区切る場合は、カンマ間に数値1つだけを指定した所だけ、OFMTを使って変換します。
o 上記以外の書き方では、OFMTの効き目はありません。変数CONVFMTを使います。


**** メモ
o OFMTが正しく動かない時の原因
   + OFMTの設定が効いていない様に見える場合 = 変数CONVFMTにも、OFMTと同じ値を入れてみます。
   + 整数の値が変になる = 実数にも対応出来る値を指定します。例外はGawk。変数CONVFMTににおける書式"%d"(整数値で出力)をサポートしている模様です。


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKの数値計算関数と関連機能▼ABC順
    ▼AWKの文字列操作関数と関連機能▼ABC順
    ▼AWKの入出力関数とコマンド実行機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > CONVFMT = 数値を文字列に自動変換する時の書式
    ?: = 条件演算子
    IGNORECASE = 文字列比較の時に、大文字小文字を区別させない
    > FIELDWIDTHS = 固定長ファイルを読み込む為の設定(Gawk専用)
    BINMODE = バイナリモードで読み書きする(mawk,Gawk専用)
    +
    print = ファイルなどに書き出す