マクロ %if とデータステップ if ステートメントで、●● < ▲▲ < ★★ の動作が異なる
SASのデータステップでは、if の条件分岐にて、if ●● まず、●● つぎに、▲▲ 書いている通り、数学で出てくる条件文みたいな動作をしてくれます。他の言語だとあまり見ない動きです。 では、データステップ以外の条件分岐、マクロの %if でも同じ動作をしてくれるかというと、そんなことはない、というのが今回のお話です。 マクロ %if にて、同じように %if ●● まず、●● つぎに、直前の評価結果(falseなら 0 , trueなら 1) こちらの動きの方が他の言語でよく見る論理式の動きではないでしょうか。 2つ目の処理の仕方が違うので、一見して同じような書き方でも、データステップとは処理結果が異なることになります。 この動きの違いがどんなことを起こすのか。試しに、データステップ、マクロのサンプルコードを作ってみましょう。 62 /* データステップの例 */ 63 data _null_ ; 64 if 10 < 20 < 30 then putlog "TRUE" ; else putlog "FALSE" ; 65 if 10 < 20 < 10 then putlog "TRUE" ; else putlog "FALSE" ; 66 if 10 < 20 = 1 then putlog "TRUE" ; else putlog "FALSE" ; 67 if 20 < 10 = 0 then putlog "TRUE" ; else putlog "FALSE" ; 68 if 1 < 2 = 2 then putlog "TRUE" ; else putlog "FALSE" ; 69 run ; TRUE FALSE FALSE FALSE TRUE NOTE...