<?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 ERROR: The macro MYLOOP generated CARDS (data lines) for the DATA step. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/ERROR-The-macro-MYLOOP-generated-CARDS-data-lines-for-the-DATA/m-p/868568#M343123</link>
    <description>&lt;P&gt;Hey guys, I keep getting error while I try to run my macro in a do loop.&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;ERROR: The macro MYLOOP generated CARDS (data lines) for the DATA step, which could cause incorrect results. The DATA step and&amp;nbsp;the macro will stop executing.&lt;/DIV&gt;&lt;DIV class=""&gt;I read in a few places that I cannot use datalines in a macro definition. I thought of a way to make this into a table and then use the table instead of datalines.&amp;nbsp;&lt;BR /&gt;What can be done here?&lt;PRE&gt;&lt;CODE class=""&gt;%MACRO MYLOOP;
  %DO I=-12 %TO -6;

%LET CM_DATE=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.,E),DATE7.);

%LET LM_DATE=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.-1,E),DATE7.);

%LET CM_BG=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.,B),DATE7.);

DATA D_&amp;amp;LM_DATE.;
INFILE DATALINES DELIMITER=','; 
LENGTH BRANCH_CODE $20. PRODUCT_FLG $30. CUST_REMOVE_FLG $11.;
FORMAT BRANCH_CODE $20. PRODUCT_FLG $30. CUST_REMOVE_FLG $11.;
INPUT BRANCH_CODE $ COUNT PRODUCT_FLG $ CUST_REMOVE_FLG $ A_BALANCE Daily_AVG_Balance;
DATALINES;
9000,0,SA ROYALE,D.NORMAL,0,0
9000,0,CA ROYALE,D.NORMAL,0,0
9000,0,SA NTB,D.NORMAL,0,0
9000,0,SA PLATINUM,D.NORMAL,0,0
9000,0,CA MAX,D.NORMAL,0,0
9000,0,CA NTB,D.NORMAL,0,0
9000,0,CA POWER,D.NORMAL,0,0
9000,0,CA PLATINUM,D.NORMAL,0,0
;


  %END;
%MEND MYLOOP;

%MYLOOP;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 07 Apr 2023 08:02:54 GMT</pubDate>
    <dc:creator>Discaboota</dc:creator>
    <dc:date>2023-04-07T08:02:54Z</dc:date>
    <item>
      <title>ERROR: The macro MYLOOP generated CARDS (data lines) for the DATA step.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-The-macro-MYLOOP-generated-CARDS-data-lines-for-the-DATA/m-p/868568#M343123</link>
      <description>&lt;P&gt;Hey guys, I keep getting error while I try to run my macro in a do loop.&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;ERROR: The macro MYLOOP generated CARDS (data lines) for the DATA step, which could cause incorrect results. The DATA step and&amp;nbsp;the macro will stop executing.&lt;/DIV&gt;&lt;DIV class=""&gt;I read in a few places that I cannot use datalines in a macro definition. I thought of a way to make this into a table and then use the table instead of datalines.&amp;nbsp;&lt;BR /&gt;What can be done here?&lt;PRE&gt;&lt;CODE class=""&gt;%MACRO MYLOOP;
  %DO I=-12 %TO -6;

%LET CM_DATE=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.,E),DATE7.);

%LET LM_DATE=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.-1,E),DATE7.);

%LET CM_BG=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.,B),DATE7.);

DATA D_&amp;amp;LM_DATE.;
INFILE DATALINES DELIMITER=','; 
LENGTH BRANCH_CODE $20. PRODUCT_FLG $30. CUST_REMOVE_FLG $11.;
FORMAT BRANCH_CODE $20. PRODUCT_FLG $30. CUST_REMOVE_FLG $11.;
INPUT BRANCH_CODE $ COUNT PRODUCT_FLG $ CUST_REMOVE_FLG $ A_BALANCE Daily_AVG_Balance;
DATALINES;
9000,0,SA ROYALE,D.NORMAL,0,0
9000,0,CA ROYALE,D.NORMAL,0,0
9000,0,SA NTB,D.NORMAL,0,0
9000,0,SA PLATINUM,D.NORMAL,0,0
9000,0,CA MAX,D.NORMAL,0,0
9000,0,CA NTB,D.NORMAL,0,0
9000,0,CA POWER,D.NORMAL,0,0
9000,0,CA PLATINUM,D.NORMAL,0,0
;


  %END;
%MEND MYLOOP;

%MYLOOP;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 07 Apr 2023 08:02:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-The-macro-MYLOOP-generated-CARDS-data-lines-for-the-DATA/m-p/868568#M343123</guid>
      <dc:creator>Discaboota</dc:creator>
      <dc:date>2023-04-07T08:02:54Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR: The macro MYLOOP generated CARDS (data lines) for the DATA step.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-The-macro-MYLOOP-generated-CARDS-data-lines-for-the-DATA/m-p/868571#M343124</link>
      <description>&lt;P&gt;For your example, the data are the same for each&amp;nbsp; iteration of the macro, so you can create the data outside the loop and use a SET statement inside the loop:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA D;
INFILE DATALINES DELIMITER=','; 
LENGTH BRANCH_CODE $20. PRODUCT_FLG $30. CUST_REMOVE_FLG $11.;
FORMAT BRANCH_CODE $20. PRODUCT_FLG $30. CUST_REMOVE_FLG $11.;
INPUT BRANCH_CODE $ COUNT PRODUCT_FLG $ CUST_REMOVE_FLG $ A_BALANCE Daily_AVG_Balance;
DATALINES;
9000,0,SA ROYALE,D.NORMAL,0,0
9000,0,CA ROYALE,D.NORMAL,0,0
9000,0,SA NTB,D.NORMAL,0,0
9000,0,SA PLATINUM,D.NORMAL,0,0
9000,0,CA MAX,D.NORMAL,0,0
9000,0,CA NTB,D.NORMAL,0,0
9000,0,CA POWER,D.NORMAL,0,0
9000,0,CA PLATINUM,D.NORMAL,0,0
;

%MACRO MYLOOP;
%DO I=-12 %TO -6;

%LET CM_DATE=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.,E),DATE7.);
%LET LM_DATE=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.-1,E),DATE7.);
%LET CM_BG=%SYSFUNC(INTNX(MONTH,%SYSFUNC(TODAY())-1,&amp;amp;I.,B),DATE7.);

DATA D_&amp;amp;LM_DATE.;
   set D;
run;
%END;
%MEND MYLOOP;

%MYLOOP;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 07 Apr 2023 09:58:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-The-macro-MYLOOP-generated-CARDS-data-lines-for-the-DATA/m-p/868571#M343124</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2023-04-07T09:58:40Z</dc:date>
    </item>
  </channel>
</rss>

