Previous: Patsubst, Up: 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 ライブラリマニュアルを見てください。