<?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: Array subscript out of range at line 33 column 3. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880716#M347982</link>
    <description>&lt;P&gt;Lol, I think I figured it out now.&lt;/P&gt;&lt;P&gt;This following code worked!&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data actpri.CMP_Final_ATA_ATU;
    set actpri.CMP_Final_ATA;
	by descending Period;
    array data_array[66] _temporary_; /* Assuming "data" is the variable you want to multiply */ 
	retain data_array;

	Age_To_Ultimate = 1;
  
	do i = 1 to _n_;
		data_array[_N_] = Age_To_Age;
		Age_To_Ultimate = Age_To_Ultimate * data_array[i];
	end;

	output;
	drop i;

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 14 Jun 2023 15:22:00 GMT</pubDate>
    <dc:creator>yp2609</dc:creator>
    <dc:date>2023-06-14T15:22:00Z</dc:date>
    <item>
      <title>Array subscript out of range at line 33 column 3.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880708#M347976</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yp2609_0-1686754539912.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/84983i051FC6DA23A7D918/image-size/medium?v=v2&amp;amp;px=400" role="button" title="yp2609_0-1686754539912.png" alt="yp2609_0-1686754539912.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Above is the original dataset: actpri.CMP_Final_ATA&lt;/P&gt;&lt;P&gt;I want to create a loop: for each row, I want the product of all values from this row towards the last value of variable Age_To_Age.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is my code, which works fine for a small/made-up dataset, but not for my code:&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data myData2;
    set actpri.CMP_Final_ATA;
    array data_array[*] Age_To_Age; /* Assuming "data" is the variable you want to multiply */ 
	retain data_array;

	product = 1;
  
	do i = 1 to _n_;
		data_array[_N_] = Age_To_Age;
		product = product * data_array[i];
	end;

	output;
	drop i;

run;


&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;It gives me error:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yp2609_1-1686754787869.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/84985iB4380507F4C1F213/image-size/medium?v=v2&amp;amp;px=400" role="button" title="yp2609_1-1686754787869.png" alt="yp2609_1-1686754787869.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 14 Jun 2023 15:02:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880708#M347976</guid>
      <dc:creator>yp2609</dc:creator>
      <dc:date>2023-06-14T15:02:36Z</dc:date>
    </item>
    <item>
      <title>Re: Array subscript out of range at line 33 column 3.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880714#M347980</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;array data_array[*] Age_To_Age;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There is absolutely no need to create an array for one variable. However, later _N_ has a value of 2, and so your code refers to&amp;nbsp;&lt;FONT face="courier new,courier"&gt;data_array[2]&lt;/FONT&gt;&amp;nbsp;and this will fail as there is no second element in the array.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Perhaps if you explained in words what you are trying to do, we might be able to help (as I said, arrays are not needed here).&lt;/P&gt;</description>
      <pubDate>Wed, 14 Jun 2023 15:22:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880714#M347980</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-06-14T15:22:42Z</dc:date>
    </item>
    <item>
      <title>Re: Array subscript out of range at line 33 column 3.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880716#M347982</link>
      <description>&lt;P&gt;Lol, I think I figured it out now.&lt;/P&gt;&lt;P&gt;This following code worked!&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data actpri.CMP_Final_ATA_ATU;
    set actpri.CMP_Final_ATA;
	by descending Period;
    array data_array[66] _temporary_; /* Assuming "data" is the variable you want to multiply */ 
	retain data_array;

	Age_To_Ultimate = 1;
  
	do i = 1 to _n_;
		data_array[_N_] = Age_To_Age;
		Age_To_Ultimate = Age_To_Ultimate * data_array[i];
	end;

	output;
	drop i;

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 14 Jun 2023 15:22:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880716#M347982</guid>
      <dc:creator>yp2609</dc:creator>
      <dc:date>2023-06-14T15:22:00Z</dc:date>
    </item>
    <item>
      <title>Re: Array subscript out of range at line 33 column 3.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880725#M347983</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
    do period=1 to 20;
        age_to_age=rand('normal', 1, 0.05);
        output;
    end;
run;

proc sort data=have;
    by descending period;
run;

data calcs;
    set have nobs=_nobs;
    retain running_mult 1;
    running_mult=running_mult*age_to_age;
run;

proc sort data=calcs;
    by period;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 14 Jun 2023 15:41:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Array-subscript-out-of-range-at-line-33-column-3/m-p/880725#M347983</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-06-14T15:41:34Z</dc:date>
    </item>
  </channel>
</rss>

