<?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 parameter in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429718#M106149</link>
    <description>&lt;P&gt;The error message is very clear about what the problem is:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;ERROR 117-185: There was 1 unclosed DO block.&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 22 Jan 2018 18:12:56 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2018-01-22T18:12:56Z</dc:date>
    <item>
      <title>macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429715#M106148</link>
      <description>&lt;P&gt;I tried to call macro using parameter which is variables, so I cannot write it directly in macro call.&amp;nbsp; I want pass the value of the variable memname...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;154&amp;nbsp; options mprint;&lt;BR /&gt;155&amp;nbsp; %macro readdata(mname);&lt;BR /&gt;156&amp;nbsp; filename datafile "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\&amp;amp;mname..xml" ;&lt;BR /&gt;157&amp;nbsp; filename mapfile&lt;BR /&gt;157! "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&lt;BR /&gt;158&lt;BR /&gt;159&amp;nbsp; libname datafile xmlv2 xmlmap=mapfile automap=replace;&lt;BR /&gt;160&lt;BR /&gt;161&amp;nbsp; proc copy in=datafile out=work;&lt;BR /&gt;162&amp;nbsp; run;&lt;BR /&gt;163&amp;nbsp; %mend;&lt;BR /&gt;164&lt;BR /&gt;165&amp;nbsp; data _null_;&lt;BR /&gt;166&amp;nbsp; memname = compress (memname, ".xml");&lt;BR /&gt;167&amp;nbsp; call symput('mname',memname);&lt;BR /&gt;168&amp;nbsp; do i = 1 to &amp;amp;mcount;&lt;BR /&gt;169&amp;nbsp;&amp;nbsp; %readdata(&amp;amp;&amp;amp;mname)&lt;BR /&gt;WARNING: Apparent symbolic reference MNAME not resolved.&lt;BR /&gt;ERROR: The text expression &amp;amp;MNAME contains a recursive reference to the macro variable MNAME.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The macro variable will be assigned the null value.&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; filename datafile&lt;BR /&gt;"e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\.xml" ;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; filename mapfile&lt;BR /&gt;"e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; libname datafile xmlv2 xmlmap=mapfile automap=replace;&lt;BR /&gt;ERROR: With the AUTOMAP= option, the specified XML document must exist.&lt;BR /&gt;ERROR: Error in the LIBNAME statement.&lt;/P&gt;&lt;P&gt;NOTE: Line generated by the invoked macro "READDATA".&lt;BR /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filename datafile "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\&amp;amp;mname..xml"&lt;BR /&gt;1&amp;nbsp; !&amp;nbsp; ; filename mapfile&lt;BR /&gt;1&amp;nbsp; ! "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&amp;nbsp; libname&lt;BR /&gt;1&amp;nbsp; ! datafile xmlv2 xmlmap=mapfile automap=replace;&amp;nbsp; proc&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 117&lt;BR /&gt;ERROR 117-185: There was 1 unclosed DO block.&lt;/P&gt;&lt;P&gt;NOTE: Numeric values have been converted to character values at the places given by:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Line):(Column).&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 166:21&amp;nbsp;&amp;nbsp; 167:21&lt;BR /&gt;NOTE: Character values have been converted to numeric values at the places given by:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Line):(Column).&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 166:11&lt;BR /&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00 seconds&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; proc copy in=datafile out=work;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; run;&lt;BR /&gt;ERROR: Libref DATAFILE is not assigned.&lt;BR /&gt;NOTE: Statements not processed because of errors noted above.&lt;BR /&gt;NOTE: PROCEDURE COPY used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00 seconds&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;BR /&gt;170&amp;nbsp; end;&lt;BR /&gt;171&amp;nbsp; run;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:09:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429715#M106148</guid>
      <dc:creator>mhollifi</dc:creator>
      <dc:date>2018-01-22T18:09:39Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429718#M106149</link>
      <description>&lt;P&gt;The error message is very clear about what the problem is:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;ERROR 117-185: There was 1 unclosed DO block.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:12:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429718#M106149</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-01-22T18:12:56Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429721#M106151</link>
      <description>&lt;P&gt;At a minimum, you have two issues to fix.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Where does &amp;amp;MCOUNT come from?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The DATA step that uses CALL SYMPUT to create &amp;amp;MNAME ... it has to execute CALL SYMPUT in order to create &amp;amp;MNAME.&amp;nbsp; But the DATA step has not yet executed by the time &amp;amp;MNAME is needed.&amp;nbsp; This actually requires some in-depth knowledge about the timing of actions in the DATA step vs. macro language.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The other issue is that COMPRESS does not work the way you hope.&amp;nbsp; It does not look for the word ".xml" and remove it.&amp;nbsp; It looks for all instances of "." and all instances of "x" and all instances of "m" and all instances of "l" and removes any and all of them.&amp;nbsp; You need a better way to remove ".xml" from the end of your file names, assuming that is&amp;nbsp;your intention.&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:18:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429721#M106151</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-01-22T18:18:17Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429724#M106153</link>
      <description>&lt;P&gt;thank you for your quick reply.&lt;/P&gt;&lt;P&gt;I cannot find unclosed do loop anywhere.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;17&amp;nbsp;&amp;nbsp; options mprint;&lt;BR /&gt;18&amp;nbsp;&amp;nbsp; %macro readdata(mname);&lt;BR /&gt;19&amp;nbsp;&amp;nbsp; filename datafile "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\&amp;amp;mname..xml" ;&lt;BR /&gt;20&amp;nbsp;&amp;nbsp; filename mapfile&lt;BR /&gt;20 ! "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&lt;BR /&gt;21&lt;BR /&gt;22&amp;nbsp;&amp;nbsp; libname datafile xmlv2 xmlmap=mapfile automap=replace;&lt;BR /&gt;23&lt;BR /&gt;24&amp;nbsp;&amp;nbsp; proc copy in=datafile out=work;&lt;BR /&gt;25&amp;nbsp;&amp;nbsp; run;&lt;BR /&gt;26&amp;nbsp;&amp;nbsp; %mend;&lt;/P&gt;&lt;P&gt;27&amp;nbsp;&amp;nbsp; data _null_;&lt;BR /&gt;28&amp;nbsp;&amp;nbsp; set contents;&lt;BR /&gt;29&amp;nbsp;&amp;nbsp; memname = compress (memname, ".xml");&lt;BR /&gt;30&amp;nbsp;&amp;nbsp; call symput('mname',memname);&lt;BR /&gt;31&amp;nbsp;&amp;nbsp; do i = 1 to &amp;amp;mcount;&lt;BR /&gt;32&amp;nbsp;&amp;nbsp;&amp;nbsp; %readdata(&amp;amp;&amp;amp;mname)&lt;BR /&gt;WARNING: Apparent symbolic reference MNAME not resolved.&lt;BR /&gt;ERROR: The text expression &amp;amp;MNAME contains a recursive reference to the macro variable MNAME.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The macro variable will be assigned the null value.&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; filename datafile&lt;BR /&gt;"e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\.xml" ;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; filename mapfile&lt;BR /&gt;"e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; libname datafile xmlv2 xmlmap=mapfile automap=replace;&lt;BR /&gt;ERROR: With the AUTOMAP= option, the specified XML document must exist.&lt;BR /&gt;ERROR: Error in the LIBNAME statement.&lt;/P&gt;&lt;P&gt;NOTE: Line generated by the invoked macro "READDATA".&lt;BR /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filename datafile "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\&amp;amp;mname..xml"&lt;BR /&gt;1&amp;nbsp; !&amp;nbsp; ; filename mapfile&lt;BR /&gt;1&amp;nbsp; ! "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&amp;nbsp; libname&lt;BR /&gt;1&amp;nbsp; ! datafile xmlv2 xmlmap=mapfile automap=replace;&amp;nbsp; proc&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 117&lt;BR /&gt;ERROR 117-185: There was 1 unclosed DO block.&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.12 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.06 seconds&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;NOTE: Writing HTML Body file: sashtml.htm&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; proc copy in=datafile out=work;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; run;&lt;BR /&gt;ERROR: Libref DATAFILE is not assigned.&lt;BR /&gt;NOTE: Statements not processed because of errors noted above.&lt;BR /&gt;NOTE: PROCEDURE COPY used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.30 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.18 seconds&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;BR /&gt;33&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;34&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:20:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429724#M106153</guid>
      <dc:creator>mhollifi</dc:creator>
      <dc:date>2018-01-22T18:20:47Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429727#M106155</link>
      <description>&lt;P&gt;Post your code as well. Reading it with the line numbers is problematic.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:22:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429727#M106155</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-01-22T18:22:49Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429728#M106156</link>
      <description>&lt;P&gt;thank you for your reply.&lt;/P&gt;&lt;P&gt;the first step of the program is like this and the memname and memcount has been created in this step.&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; filename inzip ZIP "e:\Users\mhollifi\Desktop\Jotikasthira\USA_FO_Active_2016-04.zip";&lt;BR /&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp; data contents;&lt;BR /&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length memname $200;&lt;BR /&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fid=dopen("inzip");&lt;BR /&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUT 'fid: ' fid=;&lt;BR /&gt;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fid=0 then&lt;BR /&gt;7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop;&lt;BR /&gt;8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcount=dnum(fid);&lt;BR /&gt;9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUT 'Memcount: ' memcount=;&lt;BR /&gt;10&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to memcount;&lt;BR /&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memname=dread(fid,i);&lt;BR /&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;13&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;14&amp;nbsp;&amp;nbsp;&amp;nbsp; rc=dclose(fid);&lt;BR /&gt;15&amp;nbsp;&amp;nbsp;&amp;nbsp; call symput('mcount',memcount);&lt;BR /&gt;16&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;NOTE: Numeric values have been converted to character values at the places given by:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Line):(Column).&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15:23&lt;BR /&gt;fid: fid=1&lt;BR /&gt;Memcount: memcount=4172&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:23:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429728#M106156</guid>
      <dc:creator>mhollifi</dc:creator>
      <dc:date>2018-01-22T18:23:48Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429730#M106157</link>
      <description>&lt;P&gt;my code is&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;filename inzip ZIP "e:\Users\mhollifi\Desktop\Jotikasthira\USA_FO_Active_2016-04.zip";&lt;BR /&gt;data contents;&lt;BR /&gt;&amp;nbsp;length memname $200;&lt;BR /&gt;&amp;nbsp;fid=dopen("inzip");&lt;BR /&gt;&amp;nbsp;PUT 'fid: ' fid=;&lt;BR /&gt;&amp;nbsp;if fid=0 then&lt;BR /&gt;&amp;nbsp; stop;&lt;BR /&gt;&amp;nbsp;memcount=dnum(fid);&lt;BR /&gt;&amp;nbsp;PUT 'Memcount: ' memcount=;&lt;BR /&gt;&amp;nbsp;do i=1 to memcount;&lt;BR /&gt;&amp;nbsp; memname=dread(fid,i);&lt;BR /&gt;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp;end;&lt;BR /&gt;&amp;nbsp;rc=dclose(fid);&lt;BR /&gt;&amp;nbsp;call symput('mcount',memcount);&lt;BR /&gt;run;&lt;BR /&gt;options mprint;&lt;BR /&gt;%macro readdata(mname);&lt;BR /&gt;filename datafile "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\&amp;amp;mname" ;&lt;BR /&gt;filename mapfile&amp;nbsp; "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&lt;/P&gt;&lt;P&gt;libname datafile xmlv2 xmlmap=mapfile automap=replace;&lt;/P&gt;&lt;P&gt;proc copy in=datafile out=work;&lt;BR /&gt;run;&lt;BR /&gt;%mend;&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;set contents;&lt;BR /&gt;call symput('mname',memname);&lt;BR /&gt;do i = 1 to &amp;amp;mcount;&lt;BR /&gt;&amp;nbsp;%readdata(&amp;amp;&amp;amp;mname)&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:30:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429730#M106157</guid>
      <dc:creator>mhollifi</dc:creator>
      <dc:date>2018-01-22T18:30:23Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429732#M106159</link>
      <description>&lt;P&gt;thank you all for your help.&lt;/P&gt;&lt;P&gt;When I put run after call symput statement, it reads only the last observation.&amp;nbsp; I want go through variables after variables.&lt;/P&gt;&lt;P&gt;So the solution with symput doesn't work...How to use variable name as macro parameter?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;126&amp;nbsp; options mprint;&lt;BR /&gt;127&amp;nbsp; %macro readdata(mname);&lt;BR /&gt;128&amp;nbsp; filename datafile "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\&amp;amp;mname" ;&lt;BR /&gt;129&amp;nbsp; filename mapfile&lt;BR /&gt;129! "e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&lt;BR /&gt;130&lt;BR /&gt;131&amp;nbsp; libname datafile xmlv2 xmlmap=mapfile automap=replace;&lt;BR /&gt;132&lt;BR /&gt;133&amp;nbsp; proc copy in=datafile out=work;&lt;BR /&gt;134&amp;nbsp; run;&lt;BR /&gt;135&amp;nbsp; %mend;&lt;BR /&gt;136&lt;BR /&gt;137&amp;nbsp; data _null_;&lt;BR /&gt;138&amp;nbsp; set contents;&lt;BR /&gt;139&amp;nbsp; call symput('mname',memname); run;&lt;/P&gt;&lt;P&gt;NOTE: There were 4172 observations read from the data set WORK.CONTENTS.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;ERROR: The %DO statement is not valid in open code.&lt;BR /&gt;140&amp;nbsp; %do i = 1 %to &amp;amp;mcount;&lt;BR /&gt;141&amp;nbsp;&amp;nbsp; %readdata(&amp;amp;&amp;amp;mname)&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; filename datafile&lt;BR /&gt;"e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\999845-2016-04-30.xml" ;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; filename mapfile&lt;BR /&gt;"e:\Users\mhollifi\Desktop\Chotibhak\USA_FO_Active_2016-04\5-2016-04-30.map" ;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; libname datafile xmlv2 xmlmap=mapfile automap=replace;&lt;BR /&gt;ERROR: With the AUTOMAP= option, the specified XML document must exist.&lt;BR /&gt;ERROR: Error in the LIBNAME statement.&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; proc copy in=datafile out=work;&lt;BR /&gt;MPRINT(READDATA):&amp;nbsp;&amp;nbsp; run;&lt;BR /&gt;ERROR: Libref DATAFILE is not assigned.&lt;BR /&gt;NOTE: Statements not processed because of errors noted above.&lt;BR /&gt;NOTE: PROCEDURE COPY used (Total process time):&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;BR /&gt;ERROR: The %END statement is not valid in open code.&lt;BR /&gt;142&amp;nbsp; %end;&lt;BR /&gt;143&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:38:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429732#M106159</guid>
      <dc:creator>mhollifi</dc:creator>
      <dc:date>2018-01-22T18:38:18Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429735#M106161</link>
      <description>&lt;P&gt;That missing part of the program turns out to be important.&amp;nbsp; Try replacing this DATA step:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data _null_;&lt;BR /&gt;set contents;&lt;BR /&gt;call symput('mname',memname);&lt;BR /&gt;do i = 1 to &amp;amp;mcount;&lt;BR /&gt;&amp;nbsp;%readdata(&amp;amp;&amp;amp;mname)&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Instead, use:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data _null_;&lt;BR /&gt;set contents;&lt;/P&gt;
&lt;P&gt;call execute('%nrstr(%readdata(' || memname || '))' ) ;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's untested (obviously?), but I think I got the quotes in the proper place.&lt;/P&gt;</description>
      <pubDate>Mon, 22 Jan 2018 18:43:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429735#M106161</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-01-22T18:43:57Z</dc:date>
    </item>
    <item>
      <title>Re: macro parameter</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429742#M106166</link>
      <description>thank you. it worked.</description>
      <pubDate>Mon, 22 Jan 2018 19:00:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro-parameter/m-p/429742#M106166</guid>
      <dc:creator>mhollifi</dc:creator>
      <dc:date>2018-01-22T19:00:31Z</dc:date>
    </item>
  </channel>
</rss>

