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