2016年7月27日水曜日

マクロ言語入門10:マクロ変数と&&



「&&マクロ変数」という指定方法を紹介します。





例1

%let  VAR1 = abcde;
%let  X = 1;

%put  &&VAR&X ;

ログ
abcde



「&&」と書くと、「&」を1つに置き換える命令になります。
この機能の何が便利なのか解説していきます。


  • もし「&VAR&X」と書いた場合「&VAR」「&X」という2つのマクロ変数が指定されていると解釈されますが、
  • 「&&VAR&X」とすると初手では「&&」「VAR」「&X」という3つに分けて解釈されて、以下のように展開されます。
    • 「&&」→「&
    • 「VAR」→「VAR
    • 「&X」→「1
    • この3つの展開結果をくっつけると「&VAR1」になって、これがさらに展開されて「abcde」が返されます。


初手で「VAR」の部分がマクロ変数として解釈されないようにするテクニックです。




例2

%let  VAR1 = aaa;
%let  VAR2 = bbb;
%let  VAR3 = ccc;

%macro TEST;
    %do i = 1 %to 3;
          %put  &&VAR&i ;
    %end;
%mend;

%TEST;

ログ
aaa
bbb
ccc

%DOループと&&マクロ変数の組み合わせはよく用います。




実践例

以下に&&の実践的な使い方の記事リンクを貼っておきます。
慣れるまでややこしい感じのプログラムなので、余裕があったらそのうち、、という感じで参考にして頂ければと思います。

変数値をマクロ変数に格納する方法「CALL SYMPUTX編」




記事一覧

1. マクロ変数とは
2. マクロの登録と実行
3. 定位置パラメータ
4. キーワードパラメータ
5. クォート処理
6. クォート処理2
7. ループ処理
8. 条件分岐処理
9. ドット
10. &&
11. 演算評価
12. 補足


0 件のコメント:

コメントを投稿