1

我有两个简单的宏:

%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 回答