2016年7月27日水曜日

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



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





例1

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

%put  &&VAR&X ;

ログ
abcde



「&&WORD」みたいに「&」が2つある場合、直後のワード(WORD)をマクロ変数として展開させないようにする事が出来ます。具体的な動きは以下の通り。



「&&VAR&X」 の展開手順

①「&&」というように「&」が2つあると、「&」を1つに置き換える。
&&VAR&X  →  &VAR&X


②「&&」の直後のワード「VAR」は一旦読み飛ばす
&VAR&X


③ 続いて展開できるマクロ変数があれば展開していく。
&VAR&X  →  &VAR1


④ こうして全部展開したらまた最初に戻って展開しなおす。
&VAR1  →  abcde




例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 件のコメント:

コメントを投稿