<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Set value of a variable determined at run-time (inverse of VVALUEX function) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522640#M141926</link>
    <description>Not as clean as one would want, but it works perfectly.&lt;BR /&gt;&lt;BR /&gt;Thanks!</description>
    <pubDate>Wed, 19 Dec 2018 17:26:55 GMT</pubDate>
    <dc:creator>cr2</dc:creator>
    <dc:date>2018-12-19T17:26:55Z</dc:date>
    <item>
      <title>Set value of a variable determined at run-time (inverse of VVALUEX function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522629#M141920</link>
      <description>&lt;P&gt;The VVALUEX function allows fetching the value of a variable determined at run-time, by passing as argument another variable, for each observation.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example, the following statement in a datstep:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;NEW_FIELD = vvaluex(DYN_FIELD);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Would produce the following result:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;DYN_FIELD&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;NEW_FIELD&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to perform the inverse: set a value of a variable determined at run-time, ideally, a function such as this, callable from within a datastep:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;call SETVALUEX(DYN_FIELD, SOURCE_FIELD);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;DYN_FIELD&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;SOURCE_FIELD&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;.&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;.&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;.&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;.&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;.&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Wed, 19 Dec 2018 16:52:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522629#M141920</guid>
      <dc:creator>cr2</dc:creator>
      <dc:date>2018-12-19T16:52:16Z</dc:date>
    </item>
    <item>
      <title>Re: Set value of a variable determined at run-time (inverse of VVALUEX function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522633#M141921</link>
      <description>&lt;P&gt;Why not just use an array?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let varlist=A B C ;
%let n=%sysfunc(countw(&amp;amp;varlist));
%let namelist="%sysfunc(tranwrd(&amp;amp;varlist,%str( )," "))";
data want ;
  set have ;
  array vars &amp;amp;varlist ;
  array varnames (&amp;amp;n) $32 _temporary_ (&amp;amp;namelist);
  vars(whichc(dyn_field,of varnames(*))=source_field;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You could generate the needed macro variables from the data.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
select distinct dyn_field,quote(trim(dyn_field))
  into :varlist separated by ' '
     , :varnames separated by ' '
  from have
;
%let n=&amp;amp;sqlobs;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Dec 2018 17:08:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522633#M141921</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-12-19T17:08:10Z</dc:date>
    </item>
    <item>
      <title>Re: Set value of a variable determined at run-time (inverse of VVALUEX function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522640#M141926</link>
      <description>Not as clean as one would want, but it works perfectly.&lt;BR /&gt;&lt;BR /&gt;Thanks!</description>
      <pubDate>Wed, 19 Dec 2018 17:26:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522640#M141926</guid>
      <dc:creator>cr2</dc:creator>
      <dc:date>2018-12-19T17:26:55Z</dc:date>
    </item>
    <item>
      <title>Re: Set value of a variable determined at run-time (inverse of VVALUEX function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522684#M141943</link>
      <description>&lt;P&gt;I had never came across these functions before. they are really interesting thanks.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I managed to get the desired result by adding the VVALUE function :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data HAVE;
	dyn_field='A';
	A = 1;
	B=.;
	C=.;
	OUTPUT;
	dyn_field='A';
	A = 2;
	B=.;
	C=.;
	OUTPUT;
	dyn_field='B';
	A = .;
	B=3;
	C=.;
	OUTPUT;
	dyn_field='C';
	A = .;
	B=.;
	C=4;
	OUTPUT;
RUN;

DATA WANT;
	SET HAVE;
	SOURCE_FIELD=STRIP(VVALUEX(STRIP(VVALUE(DYN_FIELD))));
RUN;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Dec 2018 20:22:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522684#M141943</guid>
      <dc:creator>34reqrwe</dc:creator>
      <dc:date>2018-12-19T20:22:00Z</dc:date>
    </item>
    <item>
      <title>Re: Set value of a variable determined at run-time (inverse of VVALUEX function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522859#M142004</link>
      <description>&lt;P&gt;SAS/IML has such function, check CALL SETVAL() .&lt;/P&gt;</description>
      <pubDate>Thu, 20 Dec 2018 13:37:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Set-value-of-a-variable-determined-at-run-time-inverse-of/m-p/522859#M142004</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-12-20T13:37:07Z</dc:date>
    </item>
  </channel>
</rss>

