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.


Difference between revisions of "Parse sysparm"

From sasCommunity
Jump to: navigation, search
m (polishing: changed pre to source, added categories)
m (changed category Sysparm to upcase(SYSPARM))
Line 50: Line 50:
 
[[Category:Passing_Values]]
 
[[Category:Passing_Values]]
 
[[Category:SAS Code]]
 
[[Category:SAS Code]]
[[Category:Sysparm]]
+
[[Category:SYSPARM]]
 
[[Category:Testing]]
 
[[Category:Testing]]

Revision as of 13:56, 27 November 2013

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;

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

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