<?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: defining arrays using values from other fields in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348813#M63719</link>
    <description>&lt;P&gt;To some extent, that's what the posted code does.&amp;nbsp; The words START and END do not refer to the start and end of the array.&amp;nbsp; Rather, they refer to your DATA step variables START and END.&amp;nbsp; When START=5 and END=8, this means you will process the 5th through 8th variables using the DO loop.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want something more complex, it is possible to get the name of the variable as the loop proceeds.&amp;nbsp; For example, START=5, END=12, and you want to skip the variable price_10 while otherwise processing price_5 through price_12:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;do i=start to end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if upcase(vname(all{i})) ne 'PRICE_10' then ......&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm suspecting this is overkill and the original code is just what you are looking for.&lt;/P&gt;</description>
    <pubDate>Mon, 10 Apr 2017 17:48:12 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2017-04-10T17:48:12Z</dc:date>
    <item>
      <title>defining arrays using values from other fields</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348777#M63716</link>
      <description>&lt;P&gt;In the table below I want to define an array basd on the start and end value (first two columns). The array for the first row is start 1 and end 5 so the array will go from 101% to 116% (dimension 5); the array for the second row will go from 102% to 108% (dimension 2) and so on.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;can you create an array using the start and end variable names i.e.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;array temp{*} price_start --price_end&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;start&lt;/TD&gt;&lt;TD&gt;end&lt;/TD&gt;&lt;TD&gt;price_1&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;2&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;3&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;4&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;5&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;6&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;7&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;8&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;9&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;10&lt;/TD&gt;&lt;TD&gt;&lt;SPAN&gt;price_&lt;/SPAN&gt;11&lt;/TD&gt;&lt;TD&gt;12&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;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;101%&lt;/TD&gt;&lt;TD&gt;102%&lt;/TD&gt;&lt;TD&gt;107%&lt;/TD&gt;&lt;TD&gt;108%&lt;/TD&gt;&lt;TD&gt;116%&lt;/TD&gt;&lt;TD&gt;120%&lt;/TD&gt;&lt;TD&gt;128%&lt;/TD&gt;&lt;TD&gt;130%&lt;/TD&gt;&lt;TD&gt;139%&lt;/TD&gt;&lt;TD&gt;140%&lt;/TD&gt;&lt;TD&gt;146%&lt;/TD&gt;&lt;TD&gt;152%&lt;/TD&gt;&lt;TD&gt;157%&lt;/TD&gt;&lt;TD&gt;164%&lt;/TD&gt;&lt;TD&gt;167%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;101%&lt;/TD&gt;&lt;TD&gt;102%&lt;/TD&gt;&lt;TD&gt;108%&lt;/TD&gt;&lt;TD&gt;112%&lt;/TD&gt;&lt;TD&gt;114%&lt;/TD&gt;&lt;TD&gt;116%&lt;/TD&gt;&lt;TD&gt;122%&lt;/TD&gt;&lt;TD&gt;129%&lt;/TD&gt;&lt;TD&gt;133%&lt;/TD&gt;&lt;TD&gt;141%&lt;/TD&gt;&lt;TD&gt;146%&lt;/TD&gt;&lt;TD&gt;149%&lt;/TD&gt;&lt;TD&gt;158%&lt;/TD&gt;&lt;TD&gt;165%&lt;/TD&gt;&lt;TD&gt;172%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;101%&lt;/TD&gt;&lt;TD&gt;102%&lt;/TD&gt;&lt;TD&gt;110%&lt;/TD&gt;&lt;TD&gt;114%&lt;/TD&gt;&lt;TD&gt;115%&lt;/TD&gt;&lt;TD&gt;122%&lt;/TD&gt;&lt;TD&gt;129%&lt;/TD&gt;&lt;TD&gt;132%&lt;/TD&gt;&lt;TD&gt;136%&lt;/TD&gt;&lt;TD&gt;144%&lt;/TD&gt;&lt;TD&gt;153%&lt;/TD&gt;&lt;TD&gt;161%&lt;/TD&gt;&lt;TD&gt;166%&lt;/TD&gt;&lt;TD&gt;168%&lt;/TD&gt;&lt;TD&gt;175%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;101%&lt;/TD&gt;&lt;TD&gt;102%&lt;/TD&gt;&lt;TD&gt;108%&lt;/TD&gt;&lt;TD&gt;117%&lt;/TD&gt;&lt;TD&gt;127%&lt;/TD&gt;&lt;TD&gt;135%&lt;/TD&gt;&lt;TD&gt;144%&lt;/TD&gt;&lt;TD&gt;150%&lt;/TD&gt;&lt;TD&gt;155%&lt;/TD&gt;&lt;TD&gt;155%&lt;/TD&gt;&lt;TD&gt;157%&lt;/TD&gt;&lt;TD&gt;160%&lt;/TD&gt;&lt;TD&gt;162%&lt;/TD&gt;&lt;TD&gt;166%&lt;/TD&gt;&lt;TD&gt;170%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;101%&lt;/TD&gt;&lt;TD&gt;102%&lt;/TD&gt;&lt;TD&gt;107%&lt;/TD&gt;&lt;TD&gt;114%&lt;/TD&gt;&lt;TD&gt;118%&lt;/TD&gt;&lt;TD&gt;126%&lt;/TD&gt;&lt;TD&gt;130%&lt;/TD&gt;&lt;TD&gt;132%&lt;/TD&gt;&lt;TD&gt;136%&lt;/TD&gt;&lt;TD&gt;138%&lt;/TD&gt;&lt;TD&gt;138%&lt;/TD&gt;&lt;TD&gt;147%&lt;/TD&gt;&lt;TD&gt;152%&lt;/TD&gt;&lt;TD&gt;158%&lt;/TD&gt;&lt;TD&gt;162%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;101%&lt;/TD&gt;&lt;TD&gt;102%&lt;/TD&gt;&lt;TD&gt;111%&lt;/TD&gt;&lt;TD&gt;111%&lt;/TD&gt;&lt;TD&gt;120%&lt;/TD&gt;&lt;TD&gt;127%&lt;/TD&gt;&lt;TD&gt;129%&lt;/TD&gt;&lt;TD&gt;131%&lt;/TD&gt;&lt;TD&gt;137%&lt;/TD&gt;&lt;TD&gt;140%&lt;/TD&gt;&lt;TD&gt;149%&lt;/TD&gt;&lt;TD&gt;155%&lt;/TD&gt;&lt;TD&gt;162%&lt;/TD&gt;&lt;TD&gt;164%&lt;/TD&gt;&lt;TD&gt;173%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;101%&lt;/TD&gt;&lt;TD&gt;102%&lt;/TD&gt;&lt;TD&gt;110%&lt;/TD&gt;&lt;TD&gt;119%&lt;/TD&gt;&lt;TD&gt;126%&lt;/TD&gt;&lt;TD&gt;132%&lt;/TD&gt;&lt;TD&gt;138%&lt;/TD&gt;&lt;TD&gt;140%&lt;/TD&gt;&lt;TD&gt;147%&lt;/TD&gt;&lt;TD&gt;150%&lt;/TD&gt;&lt;TD&gt;151%&lt;/TD&gt;&lt;TD&gt;152%&lt;/TD&gt;&lt;TD&gt;159%&lt;/TD&gt;&lt;TD&gt;160%&lt;/TD&gt;&lt;TD&gt;164%&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 10 Apr 2017 16:32:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348777#M63716</guid>
      <dc:creator>brophymj</dc:creator>
      <dc:date>2017-04-10T16:32:06Z</dc:date>
    </item>
    <item>
      <title>Re: defining arrays using values from other fields</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348795#M63717</link>
      <description>&lt;P&gt;In a word, no.&amp;nbsp; Any arrays that you define must have exactly the same dimensions, for every observation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What you can do is define an array that includes all the percent variables, and then process just a subset.&amp;nbsp; For example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;array all {*} price_: ;&lt;/P&gt;
&lt;P&gt;do i=start to end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; * some logic that works with all{i};&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;</description>
      <pubDate>Mon, 10 Apr 2017 16:54:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348795#M63717</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-04-10T16:54:54Z</dc:date>
    </item>
    <item>
      <title>Re: defining arrays using values from other fields</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348810#M63718</link>
      <description>Thanks astounding. I think that could work but is there a way of referencing the field name of variables in the array you want to exclude I.e. If number corresponding to field name is less than start than skip ... that kind of thing</description>
      <pubDate>Mon, 10 Apr 2017 17:39:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348810#M63718</guid>
      <dc:creator>brophymj</dc:creator>
      <dc:date>2017-04-10T17:39:59Z</dc:date>
    </item>
    <item>
      <title>Re: defining arrays using values from other fields</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348813#M63719</link>
      <description>&lt;P&gt;To some extent, that's what the posted code does.&amp;nbsp; The words START and END do not refer to the start and end of the array.&amp;nbsp; Rather, they refer to your DATA step variables START and END.&amp;nbsp; When START=5 and END=8, this means you will process the 5th through 8th variables using the DO loop.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want something more complex, it is possible to get the name of the variable as the loop proceeds.&amp;nbsp; For example, START=5, END=12, and you want to skip the variable price_10 while otherwise processing price_5 through price_12:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;do i=start to end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if upcase(vname(all{i})) ne 'PRICE_10' then ......&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm suspecting this is overkill and the original code is just what you are looking for.&lt;/P&gt;</description>
      <pubDate>Mon, 10 Apr 2017 17:48:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/defining-arrays-using-values-from-other-fields/m-p/348813#M63719</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-04-10T17:48:12Z</dc:date>
    </item>
  </channel>
</rss>

