前のページ|次のページ

MINOPERATORシステムオプション

マクロプロセッサが論理演算子IN (#)を認識し評価するかどうかを制御します。

該当要素: 構成ファイル、OPTIONSウィンドウ、OPTIONSステートメント、SAS起動時
カテゴリ: マクロ
PROC OPTIONS GROUP= MACRO
種類: システムオプション
デフォルト: NOMINOPERATOR
注: マクロIN演算子を式で使用するためには、MINOPERATORシステムオプションをデフォルト値のNOMINOPERATORからMINOPERATORに変更しておく必要があります。詳細については、MINOPERATORシステムオプションおよび%MACROステートメントを参照してください。

構文

MINOPERATOR | NOMINOPERATOR

必須引数

MINOPERATOR

マクロプロセッサが、ニーモニック演算子INまたは特殊文字# >の両者を式における論理演算子として認識し、それらを評価するようにします。

NOMINOPERATOR

マクロプロセッサが、ニーモニック演算子IN >および特殊文字#の両者を通常の文字として認識するようにします。

詳細

IN (#)を式の中で演算子として使用したい場合、MINOPERATORシステムオプションを使用するか、または%MACROステートメント内で同オプションを使用します。
options minoperator;
特定のマクロの実行時に評価される式の中でINまたは#を演算子として使用したい場合、そのマクロ定義内でMINOPERATORキーワードを指定します。
%macro macroname / minoperator;
マクロ演算子INはDATAステップのIN演算子に似ていますが、両者は同じものではありません。両者の違いを次に示します。
  • マクロ演算子INでは、数値配列を検索できません。
  • マクロ演算子INでは、文字配列を検索できません。
  • コロン(: >)は、範囲を指定する簡略表記(たとえば、1~10までの範囲を表す場合1:10と表記する)としては認識されません。範囲を表すには、マクロ内で次のように指定する必要があります。
    %eval(3 in 1 2 3 4 5 6 7 8 9 10);
  • リスト要素のデフォルトの区切り文字は空白になります。詳細については、MINDELIMITER=システムオプションを参照してください。
  • IN演算子にはその前後に2つのオペランドがありますが、これら両方のオペランドに値を含める必要があります。
    %put %eval(a IN a b c d); /*Both operands are present. */
    どちらかのオペランドにヌル値が含まれている場合、エラーが生成されます。
    %put %eval(  IN a b c d); /*Missing first operand. */
    と入力するか
    %put %eval(a IN); /*Missing second operand. */
    IN演算子の前後に指定するオペランドのどちらにヌル値が含まれていた場合でも、同じエラーがSASログに書き込まれます。
    Error:Operand missing for IN operator in argument to %EVAL function.
次の例では、マクロ演算子INを使用して文字列を検索しています。
%if &state in (NY NJ PA) %then %let &region = %eval(&region + 1);
詳細については、演算式と論理式の定義 を参照してください。
前のページ|次のページ|ページの先頭へ