<?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: Macro Do Loops in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503866#M134732</link>
    <description>&lt;P&gt;There are many differences between these two data steps, it's hard to see exactly what your question is, or why you think they should act the same.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Maybe you should state what you are actually trying to do and then someone here will have a solution, or can point you in the right direction.&lt;/P&gt;</description>
    <pubDate>Fri, 12 Oct 2018 19:33:24 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2018-10-12T19:33:24Z</dc:date>
    <item>
      <title>Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503845#M134720</link>
      <description>&lt;P&gt;Can somebody explain to me the difference for these two data steps within a macro? One uses a macro do loop and the other uses a data step do loop. I don't understand how these two are acting differently. I got this from the internet so I'm trying to fully understand it so I can create my own triangles using real data.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Paul&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%MACRO Create_Triangle();&lt;/P&gt;&lt;P&gt;DATA Loss_Triangle;&lt;BR /&gt;DO n = 1 to &amp;amp;Cols.;&lt;BR /&gt;Col_1 = 10000*(1+UNIFORM(_n_));&lt;BR /&gt;OUTPUT;&lt;BR /&gt;END;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;DATA LOSS_TRIANGLE;&lt;BR /&gt;SET LOSS_TRIANGLE;&lt;BR /&gt;%DO s=1 %TO &amp;amp;Cols. - 1;&lt;BR /&gt;%LET x = %EVAL(&amp;amp;Cols. - &amp;amp;s. + 1);&lt;BR /&gt;%LET t = %EVAL(&amp;amp;s. +1);&lt;BR /&gt;IF &amp;amp;x. &amp;gt; _n_ THEN&lt;BR /&gt;Col_&amp;amp;t. = Col_&amp;amp;s. * RAND("UNIFORM", (1/&amp;amp;t.)**0.5, (1 / &amp;amp;t.)**0.1);&lt;BR /&gt;ELSE col_&amp;amp;t. = .;&lt;BR /&gt;%END;&lt;BR /&gt;RUN;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 19:02:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503845#M134720</guid>
      <dc:creator>pchappus</dc:creator>
      <dc:date>2018-10-12T19:02:26Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503865#M134731</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/212034"&gt;@pchappus&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Can somebody explain to me the difference for these two data steps within a macro? One uses a macro do loop and the other uses a data step do loop. I don't understand how these two are acting differently. I got this from the internet so I'm trying to fully understand it so I can create my own triangles using real data.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Paul&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%MACRO Create_Triangle();&lt;/P&gt;
&lt;P&gt;DATA Loss_Triangle;&lt;BR /&gt;DO n = 1 to &amp;amp;Cols.;&lt;BR /&gt;Col_1 = 10000*(1+UNIFORM(_n_));&lt;BR /&gt;OUTPUT;&lt;BR /&gt;END;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;DATA LOSS_TRIANGLE;&lt;BR /&gt;SET LOSS_TRIANGLE;&lt;BR /&gt;%DO s=1 %TO &amp;amp;Cols. - 1;&lt;BR /&gt;%LET x = %EVAL(&amp;amp;Cols. - &amp;amp;s. + 1);&lt;BR /&gt;%LET t = %EVAL(&amp;amp;s. +1);&lt;BR /&gt;IF &amp;amp;x. &amp;gt; _n_ THEN&lt;BR /&gt;Col_&amp;amp;t. = Col_&amp;amp;s. * RAND("UNIFORM", (1/&amp;amp;t.)**0.5, (1 / &amp;amp;t.)**0.1);&lt;BR /&gt;ELSE col_&amp;amp;t. = .;&lt;BR /&gt;%END;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;When questioning what any macro does a good starting point is to use OPTION MPRINT; before the macro call so the log will display the generated code. You may also need MLOGIC to trace macro logic.&lt;/P&gt;
&lt;P&gt;Something like:&lt;/P&gt;
&lt;P&gt;options mprint;&lt;/P&gt;
&lt;P&gt;%create_triangle&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BTW that example macro has what is often a very bad for debugging code style: Use of&lt;/P&gt;
&lt;P&gt;Data result;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set result;&lt;/P&gt;
&lt;P&gt;&amp;lt;other code&amp;gt;&lt;/P&gt;
&lt;P&gt;means that with the single resulting data set for the macro you cannot tell which data set may have an error.&lt;/P&gt;
&lt;P&gt;I would actually suggest modifying the macro so the second data creates LOSS_TRIANGLE2 so you can actually see differences between the initial LOSS_TRIANGLE and the final result.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 19:31:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503865#M134731</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-10-12T19:31:27Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503866#M134732</link>
      <description>&lt;P&gt;There are many differences between these two data steps, it's hard to see exactly what your question is, or why you think they should act the same.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Maybe you should state what you are actually trying to do and then someone here will have a solution, or can point you in the right direction.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 19:33:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503866#M134732</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-10-12T19:33:24Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503869#M134735</link>
      <description>&lt;P&gt;I understand that the first do loop is creating the rows. The second %DO loop creates the columns. I don't understand why the first datastep doesn't use %DO. I'm still learning SAS and think I have something stuck in the back of my head from somebody telling me to use DO within data steps and %DO outside of data steps.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is my first instance seeing a %DO within a data step&amp;nbsp;so&amp;nbsp;I'm trying to understand how a %DO acts differently than a DO.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 19:37:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503869#M134735</guid>
      <dc:creator>pchappus</dc:creator>
      <dc:date>2018-10-12T19:37:33Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503876#M134739</link>
      <description>&lt;P&gt;PROC COMPARE can compare the datasets (if you don't overwrite the first one with the second one).&lt;/P&gt;
&lt;PRE&gt;(Method=EXACT)

Data Set Summary

Dataset                        Created          Modified  NVar    NObs

WORK.LOSS_TRIANGLE    12OCT18:15:39:29  12OCT18:15:39:29     2       3
WORK.LOSS_TRIANGLE_2  12OCT18:15:39:29  12OCT18:15:39:29     4       3


Variables Summary

Number of Variables in Common: 2.
Number of Variables in WORK.LOSS_TRIANGLE_2 but not in WORK.LOSS_TRIANGLE: 2.

The COMPARE Procedure
Comparison of WORK.LOSS_TRIANGLE with WORK.LOSS_TRIANGLE_2
(Method=EXACT)

Observation Summary

Observation      Base  Compare

First Obs           1        1
Last  Obs           3        3

Number of Observations in Common: 3.
Total Number of Observations Read from WORK.LOSS_TRIANGLE: 3.
Total Number of Observations Read from WORK.LOSS_TRIANGLE_2: 3.

Number of Observations with Some Compared Variables Unequal: 0.
Number of Observations with All Compared Variables Equal: 3.

NOTE: No unequal values were found. All values compared are exactly equal.
&lt;/PRE&gt;
&lt;P&gt;Looks like the main difference is the second step is adding additional variables.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 140px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/23982i8821CF9F56C55F8F/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 257px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/23983i6C84372D7E3BCFB9/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 19:44:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503876#M134739</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-10-12T19:44:20Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503878#M134741</link>
      <description>&lt;P&gt;It is NOT using a %DO inside a data step.&amp;nbsp; It is using %DO inside a macro to generate lines of code that form PART of a data step.&lt;/P&gt;
&lt;PRE&gt;MPRINT(CREATE_TRIANGLE):   data loss_triangle_2;
MPRINT(CREATE_TRIANGLE):   set loss_triangle;
MPRINT(CREATE_TRIANGLE):   if 3 &amp;gt; _n_ then col_2 = col_1 * rand("uniform", (1/2)**0.5, (1 / 2)**0.1);
MPRINT(CREATE_TRIANGLE):   else col_2 = .;
MPRINT(CREATE_TRIANGLE):   if 2 &amp;gt; _n_ then col_3 = col_2 * rand("uniform", (1/3)**0.5, (1 / 3)**0.1);
MPRINT(CREATE_TRIANGLE):   else col_3 = .;
MPRINT(CREATE_TRIANGLE):   run;
&lt;/PRE&gt;
&lt;P&gt;You could generate those statements into the first data step instead.&amp;nbsp; Just make sure to reference your iteration variable from your DO loop instead of the automatic data step loop iteration variable.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data loss_triangle;
  do n = 1 to &amp;amp;cols.;
    col_1 = 10000*(1+uniform(_n_));
%do s=1 %to &amp;amp;cols. - 1;
  %let x = %eval(&amp;amp;cols. - &amp;amp;s. + 1);
  %let t = %eval(&amp;amp;s. +1);
    if &amp;amp;x. &amp;gt; N  then
      col_&amp;amp;t. = col_&amp;amp;s. * rand("uniform", (1/&amp;amp;t.)**0.5, (1 / &amp;amp;t.)**0.1);
    else col_&amp;amp;t. = .;
%end;
    output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 19:50:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503878#M134741</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-10-12T19:50:12Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503880#M134743</link>
      <description>&lt;P&gt;Okay that makes sense. If I'm trying to loop through observations use DO, if I'm trying to create new columns, use %DO.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 19:48:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503880#M134743</guid>
      <dc:creator>pchappus</dc:creator>
      <dc:date>2018-10-12T19:48:48Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503890#M134750</link>
      <description>&lt;P&gt;You don't really need to generate any code for that problem. Just use an ARRAY.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let cols=3;
%let seed=1234;

data loss_triangle_4;
  array col_ (&amp;amp;cols);
  do n = 1 to dim(col_);
    col_(1) = 10000*(1+uniform(&amp;amp;seed));
    do j=2 to dim(col_)-n+1 ;
      col_(j) = col_(j-1) * rand("uniform", (1/J)**0.5, (1 / j)**0.1);
    end;
    output;
    call missing(of col_(*));
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;But you do need to figure out how you are generating your random numbers and keep track of your seeds.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 20:06:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503890#M134750</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-10-12T20:06:36Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503897#M134756</link>
      <description>&lt;P&gt;&lt;FONT color="#008000"&gt;&lt;SPAN&gt;*** This program uses a data step to create the&amp;nbsp;first column of random data with &amp;amp;Cols observations, then uses a macro do-loop to add the remaining columns based on the values from each consecutive column. ***&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000"&gt;&lt;SPAN&gt;/* This step creates the first column (Col_1) of your Loss_Triangle table, where &amp;amp;Cols is the number of observations. So macro &amp;amp;Cols is kind of like data-step _n_. */&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#800080"&gt;&lt;SPAN&gt;DATA Loss_Triangle;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#800080"&gt;&lt;SPAN&gt;DO n = 1 to &amp;amp;Cols.;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#800080"&gt;&lt;SPAN&gt;Col_1 = 10000*(1+UNIFORM(_n_));&amp;nbsp;&amp;nbsp;&lt;FONT color="#008000"&gt;* assigning random values based on the _n_&amp;nbsp;observation counter;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#800080"&gt;&lt;SPAN&gt;OUTPUT;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#800080"&gt;&lt;SPAN&gt;END;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#800080"&gt;&lt;SPAN&gt;RUN;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#800080"&gt;&lt;SPAN&gt;&lt;FONT color="#008000"&gt;/* This step creates the rest of the columns based on the values of the first column. */&lt;/FONT&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#800080"&gt;DATA LOSS_TRIANGLE;&lt;BR /&gt;SET LOSS_TRIANGLE;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color="#008000"&gt;&amp;nbsp;* setting initial table with one column of random data;&lt;/FONT&gt;&lt;BR /&gt;%DO &lt;STRONG&gt;s&lt;/STRONG&gt;=1 %TO &lt;EM&gt;&amp;amp;Cols. - 1&lt;/EM&gt;;&amp;nbsp; &amp;nbsp;&lt;FONT color="#008000"&gt;&amp;nbsp;*&amp;nbsp; s-counter goes through observations, it is a macro variable, even though no ampersand;&lt;/FONT&gt;&lt;BR /&gt;%LET x = %EVAL(&amp;amp;Cols. - &amp;amp;s. + 1);&amp;nbsp;&amp;nbsp;&lt;FONT color="#008000"&gt;*&amp;nbsp;&lt;I&gt;&amp;nbsp;&lt;/I&gt;x checks the distance between s and t, so&amp;nbsp;that last calculation is at at&amp;nbsp;second-to-the-last observation (that leaves room for t = EVAL(&amp;amp;s + 1));&lt;/FONT&gt;&lt;BR /&gt;%LET&lt;STRONG&gt; t&lt;/STRONG&gt; = %EVAL(&amp;amp;s. +1);&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color="#008000"&gt; * t is one observation number ahead of the s-counter,&amp;nbsp;first value of t is 2, it also numbers new columns;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#800080"&gt;&lt;SPAN&gt;&lt;BR /&gt;IF &amp;amp;x. &amp;gt; _n_ THEN&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;FONT color="#008000"&gt; * from the first data part, data-step _n_ is like macro variable &amp;amp;Cols., so &amp;amp;x = _n_ when s=1, this says to skip Col1 that's already there;&lt;/FONT&gt;&lt;BR /&gt;Col_&amp;amp;&lt;FONT color="#800080"&gt;&lt;STRONG&gt;t&lt;/STRONG&gt;&lt;/FONT&gt;. = Col_&amp;amp;&lt;FONT color="#800080"&gt;&lt;STRONG&gt;s&lt;/STRONG&gt;&lt;/FONT&gt;. * RAND("UNIFORM", (1/&amp;amp;t.)**0.5, (1 / &amp;amp;t.)**0.1);&amp;nbsp;&amp;nbsp;&lt;FONT color="#008000"&gt;* first column Col_2 calculated&amp;nbsp;from Col_1, Col_3 on Col_2 and so on;&lt;/FONT&gt;&lt;BR /&gt;ELSE col_&amp;amp;t. = .;&amp;nbsp;&lt;FONT color="#008000"&gt; * this is the loss part of the loss triangle;&lt;/FONT&gt;&lt;BR /&gt;%END;&lt;BR /&gt;RUN;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 12 Oct 2018 20:37:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/503897#M134756</guid>
      <dc:creator>pink_poodle</dc:creator>
      <dc:date>2018-10-12T20:37:50Z</dc:date>
    </item>
    <item>
      <title>Re: Macro Do Loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/504005#M134812</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/212034"&gt;@pchappus&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Okay that makes sense. If I'm trying to loop through observations use DO, if I'm trying to create new columns, use %DO.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;No,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/212034"&gt;@pchappus&lt;/a&gt; that's not it. If you are trying to loop through COLUMNS in a data set, you can use a DO (along with an ARRAY as suggested by &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;). You can also DO within an observation if you need to perform something iterative.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DO does not loop through observations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can create new columns in a data step without a %DO.&lt;/P&gt;</description>
      <pubDate>Sat, 13 Oct 2018 12:32:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-Do-Loops/m-p/504005#M134812</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-10-13T12:32:36Z</dc:date>
    </item>
  </channel>
</rss>

