As the first step in the decommissioning of sasCommunity.org the site has been converted to read-only mode.


Here are some tips for How to share your SAS knowledge with your professional network.


Parse sysparm

From sasCommunity
Jump to: navigation, search

Q: How can I pass multiple named values to a program?

A: use command-line or sas statement option sysparm with comma-separated values.

  • batch: command-line option: -sysparm 'value'
  • program: option statement: options sysparm = 'value';
 /*    name: parse-sysparm.sas
description: parse the text in option sysparm into macro variables
    purpose: support batch processing command-line parameter passing
;/* testing in program ****** **
options source2;%* for put _global_;
options sysparm = 'a=1;b=2;d=4';
;/***** ********************* */
 
DATA _Null_;
     attrib Stmnt   length = $132
            Testing length =    4;
     retain Testing %eval(0
            or "%sysfunc(getoption(Source2))"
                               eq "SOURCE2"
            or "%sysfunc(getoption(Verbose))"
                               eq "VERBOSE"  );
if "&SysParm." ne "" then do;
   putlog "SysParm: &SysParm.";
   do I = 1 to %*number of equal-signs;
          length(compress("&SysParm",'=','k'));
      Stmnt= catx(' ' %*separated by space;
                 ,'%let '
                 ,scan("&SysParm.",I,';')
                 ,';');
      if   Testing then putlog Stmnt=;
      call execute(cat('%nrstr(',Stmnt,')'));
      end; %*do I;
   if Testing then
      call execute('%nrstr(%put _global_;)');
   end; %*if "&SysParm." ne "";
stop;
run;    *calls execute here;
run;

References

see also How to pass parameters to a SAS Program

-- created by User:Rjf2 10:22, 14 June 2007 (EDT)

--Ronald_J._Fehd macro.maven == the radical programmer