前: Patsubst, 上: Text handling


10.7 書式付き出力

書式付き出力はformatを使って行うことができます。

     format(format-string, ...)

このマクロはC言語の関数printfとよく似た動作をします。 最初の引数は書式指定文字列で`%'指定を含めることができます。 formatは展開されると書式付の文字列になります。

2, 3の例を使って説明するのが一番でしょう。

     define(`foo', `The brown fox jumped over the lazy dog')
     =>
     format(`The string "%s" is %d characters long', foo, len(foo))
     =>The string "The brown fox jumped over the lazy dog" is 38 characters long

See Loopsで定義されているforloopマクロを使って 表形式の出力をするときはformatを次のように使うことができます。

     forloop(`i', 1, 10, `format(`%6d squared is %10d
     ', i, eval(i**2))')
     =>     1 squared is	    1
     =>     2 squared is	    4
     =>     3 squared is	    9
     =>     4 squared is	   16
     =>     5 squared is	   25
     =>     6 squared is	   36
     =>     7 squared is	   49
     =>     8 squared is	   64
     =>     9 squared is	   81
     =>    10 squared is	  100

組み込みマクロformatはANSI Cの`printf'関数をモデルとしており、 次の標準的な`%'指定をサポートしています: `c', `s', `d', `o', `x', `X', `u', `e', `E', `f'。 またフィールド幅と精度指定、モディファイア `+', `-', ` ', `0', `#', `h', `l'をサポートしています。 printfの動作について更に詳しいことは C ライブラリマニュアルを見てください。