前のページ|次のページ

演算式と論理式の定義

演算式と論理式の評価

特定のマクロ関数やステートメントで、演算式および論理式を使用できます。次の表を参照してください。これらの関数やステートメントにおいて演算式および論理式を使用して、マクロの実行時に生成されるテキストを制御できます。
演算式と論理式を評価するマクロ言語要素
%DOmacro-variable=expression %TO expression<%BY expression>;
%DO %UNTIL(expression);
%DO %WHILE(expression);
%EVAL (expression);
%IF expression %THEN statement;
%QSCAN(argument,expression<,delimiters>)
%QSUBSTR(argument,expression<,expression>)
%SCAN(argument,expression,<delimiters>)
%SUBSTR(argument,expression<,expression>)
%SYSEVALF(expression,conversion-type)
テキスト式を使用して、演算式または論理式の一部または全部を生成することができます。マクロプロセッサは、テキスト式を置換してから、演算式と論理式を評価します。たとえば、次のステートメントをサブミットすると、マクロプロセッサは、%EVAL関数においてマクロ変数&A、&B、および&OPERATORを置換してから式2 + 5を評価します。
%let A=2;
%let B=5;
%let operator=+;
%put The result of &A &operator &B is %eval(&A &operator
&B).;
これらのステートメントをサブミットすると、%PUTステートメントによって次のメッセージがログに書き込まれます。
The result of 2 + 5 is 7.

オペランドと演算子

演算式または論理式のオペランドは、常にテキストです。ただし、数値を表すオペランドは、式が評価されるときに一時的に数値に変換できます。デフォルトでは、マクロプロセッサは整数演算を実行します。そのため、整数を表す整数値および16進値のみが、数値に変換可能です。ピリオドの文字を含むオペランド(たとえば、1.0)は変換されません。ただし、%SYSEVALF関数を除きます。この関数は、引数に含まれるピリオドの文字を小数点として解釈し、そのオペランドを、使用しているオペレーティングシステムでの浮動小数点値に変換します。
注: 数値式の値は、–2**64から2**64–1までの範囲に制限されます。
マクロ式の演算子 は、DATAステップに含まれる演算子のサブセットです(マクロ言語演算子参照)。ただし、マクロ言語にはMAX演算子やMIN演算子がなく、DATAステップが認識する':'をマクロ言語は認識しません。マクロ言語では、式が評価されたときに実行される演算の順序は、DATAステップと同じです。かっこ内の演算が最初に実行されます。
注: 比較演算子に囲まれたマクロ式を含む式(10<&X<20など)は、DATAステップの複合式と等価である場合があります(ただし、式の置換結果によって変わります)。安全のためには、演算子の結合を、式10<&X AND &X<20のように指定します。
注: 日次定数は、BEST12.出力形式を使用して内部的に変換されます。
マクロ言語演算子
演算子
ニーモニック
優先順位
定義
**
1
累乗
2**4
+
2
正の値を表す接頭語
+(A+B)
-
2
負値を表す接頭語
-(A+B)
¬^~
NOT
3
論理否定*
NOT A
*
4
乗算
A*B
/
4
除算
A/B
+
5
加算
A+B
-
5
減算
A-B
<
LT
6
より小さい
A<B
<=
LE
6
以下
A<=B
=
EQ
6
等しい
A=B
#
IN
6
リスト内のいずれかと等しい**
A#B C D E
¬= ^= ~=
NE
6
等しくない*
A NE B
>
GT
6
より大きい
A>B
>=
GE
6
以上
A>=B
&
AND
7
論理積
A=B & C=D
|
OR
8
論理和
A=B | C=D
* 使用するシンボルはキーボードによって異なります。
** リスト要素のデフォルトの区切り文字は空白です。詳細については、MINDELIMITER=システムオプションを参照してください。
** IN (#)演算子を使用する前に、MINOPERATORシステムオプションを参照してください。
** IN演算子を使用する場合、両方のオペランドが値を含んでいる必要があります。オペランドにnull値が含まれていると、エラーが発生します。
注意:
整数式が累乗演算子、乗算演算子、または除算演算子を含み、-9,007,199,254,740,992から9,007,199,254,740,992までの範囲を超える値を使用または計算すると、不正確な結果が得られる場合があります。
前のページ|次のページ|ページの先頭へ