<?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: Dynamically creating datasets in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546193#M151197</link>
    <description>&lt;P&gt;First of all, such splitting of datasets is usually a sign of not really understanding how SAS works with regards to where conditions or by-group-processing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You put a series of variable names into &amp;amp;sc, and use the whole macro varaible in a place where you only need one item out of it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's much easier (IMO) to create the code directly from the dataset with call execute():&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data sub_channel;
input sub_channel :$3.;
datalines;
ALO
ATM
CAO
;
run;

data _null_;
call execute('data ');
do until (eof1);
  set sub_channel end=eof1;
  call execute(strip(sub_channel) !! '_loaded ');
end;
call execute('; set dsin;');
do until (eof2);
  set sub_channel end=eof2;
  call execute(
    "if strip(sub_channel)='" !!
    strip(sub_channel) !!
    "' then output " !!
    strip(sub_channel) !!
    '_loaded;'
  );
end;
call execute("run;");
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 26 Mar 2019 17:04:03 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2019-03-26T17:04:03Z</dc:date>
    <item>
      <title>Dynamically creating datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546173#M151187</link>
      <description>&lt;P&gt;Hi -&lt;/P&gt;&lt;P&gt;I am trying to create 45 datasets in one go. So below is the sub_channel that actually creates two macro variables. One(macro variable sc)&amp;nbsp;to use it as a condition which is a 4 char variable(populated with 2, 3 or 4 char. So it has trailing spaces). and other (macro variable scds) to use it for the dataset creation. I tried using compress and strip but neither is working to remove the space when using in the IF clause below. what am I missing here when I am doing the output to the dataset name? A sample of which dataset it needs to write is commented in the below code.Else IF would be apt if it works.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;sql&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="3"&gt; ;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;select&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; strip(sub_channel), strip(sub_channel)||&lt;/FONT&gt;&lt;FONT color="#800080" face="Courier New" size="3"&gt;"_loaded "&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;into&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; :sc, :scds separated by &lt;/FONT&gt;&lt;FONT color="#800080" face="Courier New" size="3"&gt;' '&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; sub_channel;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;quit&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&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;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; &lt;STRONG&gt;&lt;I&gt;sbg&lt;/I&gt;&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;data &lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;&amp;amp;scds load;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;set dsin;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%do&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; i=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%to&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;(countw(&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%superq&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;(sc),&lt;/FONT&gt;&lt;FONT color="#800080" face="Courier New" size="3"&gt;' '&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;if compress(sub_channel)=compress(&amp;amp;&lt;/FONT&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;sc.&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;) then output &amp;amp;sc._loaded;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*if compress(sub_channel)='OM' then output Om_loaded;&lt;/P&gt;&lt;P&gt;if compress(sub_channel)='SAHP' then output sahp_loaded;&lt;/P&gt;&lt;P&gt;if compress(sub_channel)='MHP' then output mhp_loaded;&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;else output &lt;/FONT&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;load&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;%end&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%&lt;STRONG&gt;&lt;I&gt;sbg&lt;/I&gt;&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data sets to be created using&lt;/P&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &lt;TABLE cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ALO&lt;/TD&gt;&lt;TD&gt;ALO_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ATM&lt;/TD&gt;&lt;TD&gt;ATM_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CAO&lt;/TD&gt;&lt;TD&gt;CAO_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CCMS&lt;/TD&gt;&lt;TD&gt;CCMS_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CMC&lt;/TD&gt;&lt;TD&gt;CMC_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DCC&lt;/TD&gt;&lt;TD&gt;DCC_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DM&lt;/TD&gt;&lt;TD&gt;DM_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DMS&lt;/TD&gt;&lt;TD&gt;DMS_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EM&lt;/TD&gt;&lt;TD&gt;EM_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;HLMS&lt;/TD&gt;&lt;TD&gt;HLMS_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;IVR&lt;/TD&gt;&lt;TD&gt;IVR_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;LDR&lt;/TD&gt;&lt;TD&gt;LDR_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;MCD&lt;/TD&gt;&lt;TD&gt;MCD_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;MHP&lt;/TD&gt;&lt;TD&gt;MHP_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;MSO&lt;/TD&gt;&lt;TD&gt;MSO_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;MTA&lt;/TD&gt;&lt;TD&gt;MTA_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;OM&lt;/TD&gt;&lt;TD&gt;OM_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Othe&lt;/TD&gt;&lt;TD&gt;Othe_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SAHP&lt;/TD&gt;&lt;TD&gt;SAHP_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SAS&lt;/TD&gt;&lt;TD&gt;SAS_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SFSB&lt;/TD&gt;&lt;TD&gt;SFSB_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;SLR&lt;/TD&gt;&lt;TD&gt;SLR_loaded&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Error message:&lt;/P&gt;&lt;P&gt;SYMBOLGEN: Macro variable SC resolves to ALO&lt;/P&gt;&lt;P&gt;SYMBOLGEN: Macro variable SC resolves to ALO&lt;/P&gt;&lt;P&gt;NOTE: Line generated by the macro variable "SC".&lt;/P&gt;&lt;P&gt;120 ALO _loaded&lt;/P&gt;&lt;P&gt;___ _______&lt;/P&gt;&lt;P&gt;455 455&lt;/P&gt;&lt;P&gt;MPRINT(SBG): else if compress(sub_channel)=compress(ALO ) then output ALO _loaded;&lt;/P&gt;&lt;P&gt;SYMBOLGEN: Macro variable LIVEDATE resolves to 032419&lt;/P&gt;&lt;P&gt;MPRINT(SBG): else output load;&lt;/P&gt;&lt;P&gt;MLOGIC(SBG): %DO loop index variable I is now 2; loop will not iterate again.&lt;/P&gt;&lt;P&gt;MPRINT(SBG): run;&lt;/P&gt;&lt;P&gt;ERROR 455-185: Data set was not specified on the DATA statement.&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Tue, 26 Mar 2019 14:43:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546173#M151187</guid>
      <dc:creator>Tanvi99</dc:creator>
      <dc:date>2019-03-26T14:43:34Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically creating datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546183#M151192</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/262838"&gt;@Tanvi99&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi -&lt;/P&gt;
&lt;P&gt;I am trying to create 45 datasets in one go. So below is the sub_channel that actually creates two macro variables. One(macro variable sc)&amp;nbsp;to use it as a condition which is a 4 char variable(populated with 2, 3 or 4 char. So it has trailing spaces). and other (macro variable scds) to use it for the dataset creation. I tried using compress and strip but neither is working to remove the space when using in the IF clause below. what am I missing here when I am doing the output to the dataset name? A sample of which dataset it needs to write is commented in the below code.Else IF would be apt if it works.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#000080"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT face="Courier New" size="3" color="#000080"&gt;sql&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="3"&gt; ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#0000ff"&gt;select&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; strip(sub_channel), strip(sub_channel)||&lt;/FONT&gt;&lt;FONT face="Courier New" size="3" color="#800080"&gt;"_loaded "&lt;/FONT&gt; &lt;FONT face="Courier New" size="3" color="#0000ff"&gt;into&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; :sc, :scds separated by &lt;/FONT&gt;&lt;FONT face="Courier New" size="3" color="#800080"&gt;' '&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#0000ff"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; sub_channel;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#000080"&gt;&lt;STRONG&gt;quit&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&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;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#000080"&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; &lt;STRONG&gt;&lt;I&gt;sbg&lt;/I&gt;&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;data &lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;&amp;amp;scds load;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;set dsin;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#0000ff"&gt;%do&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; i=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT face="Courier New" size="3" color="#008080"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT face="Courier New" size="3" color="#0000ff"&gt;%to&lt;/FONT&gt; &lt;FONT face="Courier New" size="3" color="#0000ff"&gt;%sysfunc&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;(countw(&lt;/FONT&gt;&lt;FONT face="Courier New" size="3" color="#0000ff"&gt;%superq&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;(sc),&lt;/FONT&gt;&lt;FONT face="Courier New" size="3" color="#800080"&gt;' '&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;));&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;if compress(sub_channel)=compress(&amp;amp;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3" color="#008080"&gt;sc.&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;) then output &amp;amp;sc._loaded;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;/*if compress(sub_channel)='OM' then output Om_loaded;&lt;/P&gt;
&lt;P&gt;if compress(sub_channel)='SAHP' then output sahp_loaded;&lt;/P&gt;
&lt;P&gt;if compress(sub_channel)='MHP' then output mhp_loaded;&lt;/P&gt;
&lt;P&gt;*/&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;else output &lt;/FONT&gt;&lt;FONT face="Courier New" size="3" color="#008080"&gt;load&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#0000ff"&gt;%end&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3" color="#000080"&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%&lt;STRONG&gt;&lt;I&gt;sbg&lt;/I&gt;&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Data sets to be created using&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;
&lt;TABLE cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;ALO&lt;/TD&gt;
&lt;TD&gt;ALO_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;ATM&lt;/TD&gt;
&lt;TD&gt;ATM_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CAO&lt;/TD&gt;
&lt;TD&gt;CAO_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CCMS&lt;/TD&gt;
&lt;TD&gt;CCMS_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CMC&lt;/TD&gt;
&lt;TD&gt;CMC_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;DCC&lt;/TD&gt;
&lt;TD&gt;DCC_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;DM&lt;/TD&gt;
&lt;TD&gt;DM_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;DMS&lt;/TD&gt;
&lt;TD&gt;DMS_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;EM&lt;/TD&gt;
&lt;TD&gt;EM_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;HLMS&lt;/TD&gt;
&lt;TD&gt;HLMS_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IVR&lt;/TD&gt;
&lt;TD&gt;IVR_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;LDR&lt;/TD&gt;
&lt;TD&gt;LDR_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;MCD&lt;/TD&gt;
&lt;TD&gt;MCD_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;MHP&lt;/TD&gt;
&lt;TD&gt;MHP_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;MSO&lt;/TD&gt;
&lt;TD&gt;MSO_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;MTA&lt;/TD&gt;
&lt;TD&gt;MTA_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;OM&lt;/TD&gt;
&lt;TD&gt;OM_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Othe&lt;/TD&gt;
&lt;TD&gt;Othe_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SAHP&lt;/TD&gt;
&lt;TD&gt;SAHP_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SAS&lt;/TD&gt;
&lt;TD&gt;SAS_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SFSB&lt;/TD&gt;
&lt;TD&gt;SFSB_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;SLR&lt;/TD&gt;
&lt;TD&gt;SLR_loaded&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Error message:&lt;/P&gt;
&lt;P&gt;SYMBOLGEN: Macro variable SC resolves to ALO&lt;/P&gt;
&lt;P&gt;SYMBOLGEN: Macro variable SC resolves to ALO&lt;/P&gt;
&lt;P&gt;NOTE: Line generated by the macro variable "SC".&lt;/P&gt;
&lt;P&gt;120 ALO _loaded&lt;/P&gt;
&lt;P&gt;___ _______&lt;/P&gt;
&lt;P&gt;455 455&lt;/P&gt;
&lt;P&gt;MPRINT(SBG): else if compress(sub_channel)=compress(ALO ) then output ALO _loaded;&lt;/P&gt;
&lt;P&gt;SYMBOLGEN: Macro variable LIVEDATE resolves to 032419&lt;/P&gt;
&lt;P&gt;MPRINT(SBG): else output load;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#FF0000"&gt;MLOGIC(SBG): %DO loop index variable I is now 2; loop will not iterate again.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;MPRINT(SBG): run;&lt;/P&gt;
&lt;P&gt;ERROR 455-185: Data set was not specified on the DATA statement.&lt;/P&gt;
&lt;/DIV&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;There may be other errors, however, as highlighted above in red, you are only looping through your loop one time.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To fix this, you want&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql ;
    select strip(sub_channel), strip(sub_channel)||"_loaded " into :sc separated by ' ',
        :scds separated by ' '
    from sub_channel;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now, another error, in my opinion, is that there is usually little value in splitting up data set DSIN into 45 different data sets. Not only do you have to do the work to split it up, but then you have to write macros to loop through any analysis of all the 45 data sets. This is often easily handled by using the BY feature of most SAS PROCs and the BY feature of the SAS data step.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So, the global solution, and probably the easiest solution, is to not do this (unless you have a very strong justification to do this).&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2019 15:09:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546183#M151192</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-03-26T15:09:40Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically creating datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546188#M151194</link>
      <description>&lt;P&gt;When you use code like:&lt;/P&gt;
&lt;PRE&gt;if compress(sub_channel)=compress(&amp;amp;sc.) then output &amp;amp;sc._loaded;&lt;/PRE&gt;
&lt;P&gt;EVERY single value of &amp;amp;sc._loaded you are going to use needs to appear on the DATA statement.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you look very closely at the MPRINT output you will see that&lt;/P&gt;
&lt;PRE&gt;ALO _loaded;&lt;/PRE&gt;
&lt;P&gt;has a space between ALO and _loaded. So that isn't going to be a name match.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2019 15:05:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546188#M151194</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2019-03-26T15:05:43Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically creating datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546193#M151197</link>
      <description>&lt;P&gt;First of all, such splitting of datasets is usually a sign of not really understanding how SAS works with regards to where conditions or by-group-processing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You put a series of variable names into &amp;amp;sc, and use the whole macro varaible in a place where you only need one item out of it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's much easier (IMO) to create the code directly from the dataset with call execute():&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data sub_channel;
input sub_channel :$3.;
datalines;
ALO
ATM
CAO
;
run;

data _null_;
call execute('data ');
do until (eof1);
  set sub_channel end=eof1;
  call execute(strip(sub_channel) !! '_loaded ');
end;
call execute('; set dsin;');
do until (eof2);
  set sub_channel end=eof2;
  call execute(
    "if strip(sub_channel)='" !!
    strip(sub_channel) !!
    "' then output " !!
    strip(sub_channel) !!
    '_loaded;'
  );
end;
call execute("run;");
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2019 17:04:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546193#M151197</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-03-26T17:04:03Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically creating datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546214#M151204</link>
      <description>&lt;P&gt;the input dataset is 8MM records which I need to do a cross join on. It needs to iterate 45 times. so thought rather split into 45 datasets and do a cross join on it. any other input is greatly appreciated when handling such huge data.&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2019 15:52:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546214#M151204</guid>
      <dc:creator>Tanvi99</dc:creator>
      <dc:date>2019-03-26T15:52:36Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically creating datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546220#M151206</link>
      <description>&lt;P&gt;exactly, it is not compressing the space.&amp;nbsp; not sure why&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2019 16:04:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546220#M151206</guid>
      <dc:creator>Tanvi99</dc:creator>
      <dc:date>2019-03-26T16:04:01Z</dc:date>
    </item>
    <item>
      <title>Re: Dynamically creating datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546381#M151283</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/262838"&gt;@Tanvi99&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;exactly, it is not compressing the space.&amp;nbsp; not sure why&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Your source variable contains spaces, and these end up in the macro variable. That's why we make use of trim() and strip() functions to get rid of these blanks.&lt;/P&gt;
&lt;P&gt;By having your source dataset sorted along your sub_channel, you can do all your processing using "by" in one step.&lt;/P&gt;
&lt;P&gt;If your analysis is more complex, let us know, but my data-step created split should work.&lt;/P&gt;
&lt;P&gt;It would also be of great help if you supplied example data in usable, unambigious form (data step with datalines, see my code example).&lt;/P&gt;</description>
      <pubDate>Wed, 27 Mar 2019 06:37:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Dynamically-creating-datasets/m-p/546381#M151283</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-03-27T06:37:10Z</dc:date>
    </item>
  </channel>
</rss>

