1

2 つの単純なマクロがあります。

%macro One(mvStr);
      /*some code here to replace varOne -> stringOne*/     

%mend One;

%macro Two;
    %local mvStr;
    %let mvStr = "String varOne StringvarOneString";
    %One(&mvStr);
%mend Two;

varOneでは、すべての部分文字列をに置き換える方法はstringOne?

4

2 に答える 2

2

これはあなたが望むことをするはずです...

%macro One(mvStr);
  /*some code here to replace varOne -> stringOne*/     
  %Sysfunc(tranwrd(&mvStr, varOne, StringOne));
%mend One;

%macro Two;
    %local mvStr;
    %let mvStr = "String varOne StringvarOneString";
    %let mvStr = %One(&mvStr);

    %put &mvStr; 
%mend Two;

%two;
于 2012-07-12T10:38:58.630 に答える
0
Did not know if you have to have two macros, but would the following suffice?


%macro one(mvStr, From, To);
  %local mvStr From To;
  %let &mvStr. = "String &From. String&From.String";
  %put  %Qsysfunc(prxchange(s/&From./&To./,-1,&mvStr.));
  %*put &mvStr.; 
%mend;

options mprint;
%one(mvStr,varOne,StringOne)
于 2012-08-01T05:36:45.503 に答える