プログラミングユーティリティ

条件付きテスト

任意の条件付きテストを、組み込みマクロ ifelse() を使用して実行することができます。このマクロの簡単な例を以下に示します。

ifelse(a,b,c,d)

この例では、文字列 ab が比較されます。ab が等しければ ifelse() は文字列 c を返します。等しくなければ d を返します。たとえば、2 つの文字列を比較して、等しい場合は yes、等しくない場合は no を返す compare() というマクロを定義するには、以下のようにします。

define(compare, `ifelse($1, $2, yes, no)')

ifelse() の評価を遅らせるために、引用符を使用している点に注目してください。最後の引数が省略されている場合は、結果は NULL になります。たとえば以下に示した例では、ab が等しい場合は c、等しくない場合は NULL という結果になります。

ifelse(a,b,c)

ifelse() は、実際には任意の数の引数を持つことができ、単純な条件を判定して処理を分岐する機能も備えています。たとえば以下の例では、文字列 a と 文字列 b が等しければ結果は c になります。等しくない場合は de を比較して、等しければ結果は f になります。de が等しくない場合は、結果は g になります。

ifelse(a,b,c,d,e,f,g)