<?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 help with embedded do loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191700#M36148</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sorry ... I didn't notice the colon snuck into the middle to left-hand justify the written messages.&amp;nbsp; Here's what you asked for originally:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do i=1 %to 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %if i=1 %then %let newpointer=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %else %let newpointer = %eval(&amp;amp;newpointer + ... same as before but using &amp;amp;i-1 instead of &amp;amp;i ...);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; %let newput = &amp;amp;newput @&amp;amp;newpointer ... same as before but omit final @%eval ... ;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 01 Dec 2014 21:32:12 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2014-12-01T21:32:12Z</dc:date>
    <item>
      <title>Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191693#M36141</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So I need to write a macro that replicates this when executed with the appropriate arguments:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data_null_ ;&lt;/P&gt;&lt;P&gt;set books.list;&lt;/P&gt;&lt;P&gt;file "list3.data";&lt;/P&gt;&lt;P&gt;put @1 bookid 4. @5 author $30. @35 isbn isbn18. @43 yearpub comma6.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The macro is %macro writeoutC (dataset,datafile,variables,formatlist);&lt;/P&gt;&lt;P&gt;Appropriate arguments are %writeoutC (books.list,list3.data,bookid author isbn yearpub,4. $30. isbn18. comma6.);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you can see the numbers after the @ are a running total of the numbers in the formatting &amp;lt;&amp;lt; this is what is giving me trouble.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is what I have at the moment&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro writeoutC (dataset,datafile,variables,formatlist);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let newput= ;&lt;/P&gt;&lt;P&gt;%let newpointer= ;&lt;/P&gt;&lt;P&gt;%do i=1 %to 4;&lt;/P&gt;&lt;P&gt;%let newpointer=%sysfunc(scan(&amp;amp;formatlist,&amp;amp;i,' $',ap));&lt;/P&gt;&lt;P&gt;%let newput=&amp;amp;newput @%sysfunc(sum(&amp;amp;newpointer+%sysfunc(scan(&amp;amp;formatlist,&amp;amp;i,' $',ap)))) %sysfunc(scan(&amp;amp;variables,&amp;amp;i,'&lt;/P&gt;&lt;P&gt;')):%sysfunc(scan(&amp;amp;formatlist,&amp;amp;i,' '));&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;set &amp;amp;dataset;&lt;/P&gt;&lt;P&gt;file "&amp;amp;datafile";&lt;/P&gt;&lt;P&gt;put &amp;amp;newput; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend writeoutC;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Which is obviously not working...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 05:44:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191693#M36141</guid>
      <dc:creator>zkreflex</dc:creator>
      <dc:date>2014-12-01T05:44:11Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191694#M36142</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you use formatted output, and you have no whitespace/delimiter, you don't need the position indicator.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And consider to use a data_null step for the creation of your newput macro variable. You then have the full flexibility of the data step at hand. Also use "do until" logic for your list of variables/formats (flexibilty!) and check that both lists have the same number of items.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 09:22:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191694#M36142</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2014-12-01T09:22:14Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191695#M36143</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Darn, ninja'd.&amp;nbsp; Was just writing this, same thing as KurtBremser mentioned, use datasets rather than parameter lists (i.e. imagine having to deal with datasets with hundreds of variables):&lt;/P&gt;&lt;P&gt;data template;&lt;BR /&gt;&amp;nbsp; length var_name pos var_fmt $200;&lt;BR /&gt;&amp;nbsp; infile datalines;&lt;BR /&gt;&amp;nbsp; input var_name pos var_fmt;&lt;BR /&gt;datalines;&lt;BR /&gt;NAME&amp;nbsp; @1&amp;nbsp; $8.&lt;BR /&gt;SEX&amp;nbsp;&amp;nbsp; @9&amp;nbsp; $1.&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;&amp;nbsp; set template end=last;&lt;BR /&gt;&amp;nbsp; if _n_=1 then call execute('data _null_; set sashelp.classfit; file="s:\temp\rob\classfit.txt"; put ');&lt;BR /&gt;&amp;nbsp; call execute(strip(pos)||' '||strip(var_name)||' '||strip(var_fmt));&lt;BR /&gt;&amp;nbsp; if last then call execute('; run;');&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 09:26:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191695#M36143</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-12-01T09:26:56Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191696#M36144</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You don't need to parse anything as long as the format list and name list have the same number of words.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The syntax you would use is.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;put (variable-list)(format-list);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;put (bookid author isbn yearpub)(4. $30. isbn18. comma6.);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;put (&amp;amp;vars)(&amp;amp;formats);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;As mentioned by &lt;A __default_attr="828210" __jive_macro_name="user" class="jive_macro jive_macro_user" href="https://communities.sas.com/"&gt;&lt;/A&gt; you don't need to use column position @n syntax.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 12:35:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191696#M36144</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-12-01T12:35:47Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191697#M36145</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Perhaps a mildly interesting twist on the problem (using my second favorite CALL routine) would be to let SAS do most of the work.&amp;nbsp; You could have a parameter (VARS) for the variable list and another to modify any formats (FMTS) a parameter that has the same syntax as the FORMAT statement.&amp;nbsp; Then there is no need for synchronized lists.&amp;nbsp; You can also create a SAS data set that contains information that describes the record layout of the file.&amp;nbsp; The result with default file attributes are fixed length delimited records.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; data=sashelp.shoes;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; vars=Region Inventory Product Returns;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; fmts=Region $12.-r Returns dollar12.2;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;filename&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; FT66F001 &lt;/SPAN&gt;&lt;SPAN style="color: #800080; background-color: #ffffff;"&gt;'~/example.dat'&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;data&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; recordlayout(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;keep&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;=_name_ _vtype_ _w_ _fmt_ _col_);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;retain&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &amp;amp;vars;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;length&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _NAME_ $&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;32&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _VTYPE_ $&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _COL_ _W_ &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;8&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _FMT_&amp;nbsp; $&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;32&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _VALUE_ $&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;128&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &amp;amp;data(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;obs&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;=&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;10&lt;/STRONG&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;keep&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;=&amp;amp;vars);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;file&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; FT66F001 &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;col&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;=_col;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;do&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;while&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;call&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; vnext(_name_);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _name_ eq &lt;/SPAN&gt;&lt;SPAN style="color: #800080; background-color: #ffffff;"&gt;'_NAME_'&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;then&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; leave;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _w_&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = vformatwx(_name_);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _value_ = vvaluex(_name_);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _col_&amp;nbsp;&amp;nbsp; = _col;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;put&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _value_ &lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;$varying128.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _w_ @;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; _n_ eq &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;do&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _vtype_ = vtypex(_name_);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _fmt_&amp;nbsp;&amp;nbsp; = vformatx(_name_);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;output&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;put&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;format&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &amp;amp;fmts;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;print&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;;&lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;IMG alt="12-1-2014 9-02-17 AM.png" class="jive-image-thumbnail jive-image" src="https://communities.sas.com/legacyfs/online/8114_12-1-2014 9-02-17 AM.png" width="450" /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;IMG alt="12-1-2014 9-04-20 AM.png" class="jive-image" src="https://communities.sas.com/legacyfs/online/8115_12-1-2014 9-04-20 AM.png" /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 15:11:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191697#M36145</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-12-01T15:11:50Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191698#M36146</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I appreciate all these creative responses, but I really need to write a macro that produces exactly what is shown at the beginning and none of you have addressed the biggest problem I'm having which is getting the column pointer value to work.&amp;nbsp; Since I posted I've gotten really close, but I'm getting an extra column pointer value after the last variable/format that I don't want...any ideas?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Part 9*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro writeoutC (dataset,datafile,variables,formatlist);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let newput= ;&lt;/P&gt;&lt;P&gt;%let newpointer=1;&lt;/P&gt;&lt;P&gt;%do i=1 %to 4;&lt;/P&gt;&lt;P&gt;%let newpointer=&amp;amp;newpointer+%sysfunc(scan(&amp;amp;formatlist,&amp;amp;i,' $',ap));&lt;/P&gt;&lt;P&gt;%let newput=&amp;amp;newput %sysfunc(scan(&amp;amp;variables,&amp;amp;i,'&lt;/P&gt;&lt;P&gt;')):%sysfunc(scan(&amp;amp;formatlist,&amp;amp;i,' ')) @%eval(&amp;amp;newpointer);&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt; set &amp;amp;dataset;&lt;/P&gt;&lt;P&gt; file "&amp;amp;datafile";&lt;/P&gt;&lt;P&gt; put @1 &amp;amp;newput;&amp;nbsp; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend writeoutC;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Part 10*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%writeoutC (books.list,list2.txt,bookid author isbn yearpub,4. $30. isbn18. comma6.);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 17:30:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191698#M36146</guid>
      <dc:creator>zkreflex</dc:creator>
      <dc:date>2014-12-01T17:30:35Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191699#M36147</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think what the other posters have been trying to tell you is this.&amp;nbsp; You don't need a complicated PUT statement.&amp;nbsp; This combination would work equally well.&amp;nbsp; Use the macro variables to generate:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;format bookid 4. author $30. isbn isbn18. yearpub comma6.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then your PUT statement can be simple:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;put bookid author isbn yearpub;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 21:19:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191699#M36147</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2014-12-01T21:19:45Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191700#M36148</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sorry ... I didn't notice the colon snuck into the middle to left-hand justify the written messages.&amp;nbsp; Here's what you asked for originally:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do i=1 %to 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %if i=1 %then %let newpointer=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %else %let newpointer = %eval(&amp;amp;newpointer + ... same as before but using &amp;amp;i-1 instead of &amp;amp;i ...);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; %let newput = &amp;amp;newput @&amp;amp;newpointer ... same as before but omit final @%eval ... ;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 21:32:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191700#M36148</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2014-12-01T21:32:12Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191701#M36149</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I did not notice the colon either but then I did not look at the code. :smileysilly: However using the colon changes the PUTting from FORMATTED to LIST which doesn't make sense to me.&amp;nbsp; Seems like the -L format modified would be a more logical approach unless there is more the OP is not disclosing.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Dec 2014 22:13:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191701#M36149</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-12-01T22:13:47Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191702#M36150</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I tried this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Part 9*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro writeoutC (dataset,datafile,variables,formatlist);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do i=1 %to 4;&lt;/P&gt;&lt;P&gt;%if &amp;amp;i=1 %then %let newpointer=1;&lt;/P&gt;&lt;P&gt;%else %let newpointer=%eval(&amp;amp;newpointer+&amp;amp;sysfunc(scan(&amp;amp;formatlist,%eval(&amp;amp;i-1),' $',ap)));&lt;/P&gt;&lt;P&gt;%let newput=&amp;amp;newput @&amp;amp;newpointer %sysfunc(scan(&amp;amp;variables,&amp;amp;i,' ')):&lt;/P&gt;&lt;P&gt;%sysfunc(scan(&amp;amp;formatlist,&amp;amp;i,' '));&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;set &amp;amp;dataset;&lt;/P&gt;&lt;P&gt;file "&amp;amp;datafile";&lt;/P&gt;&lt;P&gt;put @1 &amp;amp;newput; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend writeoutC;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*Part 10*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%writeoutC (books.list,list2.txt,bookid author isbn yearpub,4. $30. isbn18. comma6.);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And again, I'm trying to exactly produce the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data_null_ ;&lt;/P&gt;&lt;P&gt;set books.list;&lt;/P&gt;&lt;P&gt;file "list3.data";&lt;/P&gt;&lt;P&gt;put @1 bookid 4. @5 author $30. @35 isbn isbn18. @43 yearpub comma6.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But I'm getting the following errors:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference NEWPOINTER not resolved.&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference SYSFUNC not resolved.&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference NEWPOINTER not resolved.&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference SYSFUNC not resolved.&lt;/P&gt;&lt;P&gt;ERROR: A character operand was found in the %EVAL function or %IF condition&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where a numeric operand is required. The condition was:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;newpointer+&amp;amp;sysfunc(scan(4. $30. isbn18. comma6.,0,' $',ap))&lt;/P&gt;&lt;P&gt;ERROR: The macro WRITEOUTC will stop executing.&lt;/P&gt;&lt;P&gt;71&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 00:46:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191702#M36150</guid>
      <dc:creator>zkreflex</dc:creator>
      <dc:date>2014-12-02T00:46:52Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191703#M36151</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;%if i=1 should be %if &lt;STRONG&gt;&amp;amp;&lt;/STRONG&gt;i=1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%sysfunc not &amp;amp;sysfunc&amp;nbsp; in the %else&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Those may be the cause of the %eval error.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 00:52:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191703#M36151</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2014-12-02T00:52:03Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191704#M36152</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Made the change..now I'm getting the following errors:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference NEWPUT not resolved.&lt;/P&gt;&lt;P&gt;ERROR: The text expression &amp;amp;NEWPUT @1 BOOKID:&amp;nbsp; 4. contains a recursive &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reference to the macro variable NEWPUT.&amp;nbsp; The macro variable will be &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assigned the null value.&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference SYSFUNC not resolved.&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference SYSFUNC not resolved.&lt;/P&gt;&lt;P&gt;ERROR: A character operand was found in the %EVAL function or %IF condition &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where a numeric operand is required. The condition was: &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1+&amp;amp;sysfunc(scan(4. $30. isbn18. comma6.,1,' $',ap)) &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 01:27:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191704#M36152</guid>
      <dc:creator>zkreflex</dc:creator>
      <dc:date>2014-12-02T01:27:24Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191705#M36153</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK I fixed your program, so that it produces this confusing mixture of pointer controlled put and list put that would be more easily accomplished almost any other way like adding -L format modifier to each format so that you don't need the : or @col.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@1 bookid:4. @5 author:$30. @35 isbn:isbn18. @53 yearpub:comma6.&lt;/P&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt; &lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt; &lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt; &lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;%macro&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; writeoutC (&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;dataset&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;datafile&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;variables&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;formatlist&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%local&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newput i newpointer; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%do&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; i=&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%to&lt;/SPAN&gt; &lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;4&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &amp;amp;i=&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%then&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newpointer=1;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%else&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newpointer=&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%eval&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;newpointer+&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysfunc&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(scan(&amp;amp;formatlist,&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%eval&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;i-1),$str( $),ap)));&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newput=&amp;amp;newput @&amp;amp;newpointer &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysfunc&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(scan(&amp;amp;variables,&amp;amp;i,&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%str&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)):&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysfunc&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(scan(&amp;amp;formatlist,&amp;amp;i,&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%str&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;));&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%put&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; NOTE: &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%superq&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;newput&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;/* &lt;BR /&gt;&amp;nbsp;&amp;nbsp; data _null_;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; set &amp;amp;dataset;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; file "&amp;amp;datafile";&lt;BR /&gt;&amp;nbsp;&amp;nbsp; put @1 &amp;amp;newput;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; run;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;%mend&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; writeoutC;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;/*Part 10*/&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt; &lt;BR /&gt;%&lt;/SPAN&gt;&lt;STRONG&gt;&lt;EM style="color: #000000; background-color: #ffffff;"&gt;writeoutC&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; (books.list,list2.txt,bookid author isbn yearpub,&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;4.&lt;/STRONG&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;$30.&lt;/SPAN&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;isbn18.&lt;/SPAN&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;comma6.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;52&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;53&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %&lt;/SPAN&gt;&lt;STRONG&gt;&lt;EM style="color: #000000; background-color: #ffffff;"&gt;writeoutC&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; (books.list,list2.txt,bookid author isbn yearpub,&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;4.&lt;/STRONG&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;$30.&lt;/SPAN&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;isbn18.&lt;/SPAN&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;comma6.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;NOTE: @&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; bookid:&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;4.&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; @&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;5&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; author:&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;$30.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; @&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;35&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; isbn:&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;isbn18.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; @&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;53&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; yearpub:&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;comma6.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;54&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;55&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 13:59:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191705#M36153</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-12-02T13:59:28Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191706#M36154</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Getting closer.&amp;nbsp; "scan" should become "%scan" in two places, and the hard-coded @1 is not needed.&amp;nbsp; It will be part of &amp;amp;NEWPUT.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 02 Dec 2014 14:01:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191706#M36154</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2014-12-02T14:01:40Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191707#M36155</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you so much, works perfectly!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Oddly enough I think you made a mistake typing:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%eval&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;i-1),$str( $),ap)));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;I'm guessing it should be:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%eval&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;i-1),%str( $),ap)));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;but, it works both ways...&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Dec 2014 20:06:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191707#M36155</guid>
      <dc:creator>zkreflex</dc:creator>
      <dc:date>2014-12-03T20:06:32Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191708#M36156</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mistakes are not odd at all for me. :smileysilly:&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Dec 2014 20:24:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191708#M36156</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-12-03T20:24:19Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191709#M36157</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This might be asking to much, but the last step asks me to use a format width in the put statement for arguments without a format.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I need to produce the following output with the macro:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data_null_ ;&lt;/P&gt;&lt;P&gt;set books.list;&lt;/P&gt;&lt;P&gt;file "list4.data";&lt;/P&gt;&lt;P&gt;put @1 bookid 4. author 5-34 @35 isbn isbn18. @43 yearpub comma6.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;with the a macro call of : %writeoutD (books.list,list4.data,bookid author isbn yearpub,4. 30 isbn18. comma6.);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried changing it to the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%local newput i newpointer;&lt;/P&gt;&lt;P&gt;%do i=1 %to 4;&lt;/P&gt;&lt;P&gt; %if &amp;amp;i=1&lt;/P&gt;&lt;P&gt; %then %let newpointer=1;&lt;/P&gt;&lt;P&gt; %else %let newpointer=%eval(&amp;amp;newpointer+%sysfunc(scan(&amp;amp;formatlist,%eval(&amp;amp;i-1),%str( $),ap)));&lt;/P&gt;&lt;P&gt; %let newput=&amp;amp;newput @&amp;amp;newpointer %sysfunc(scan(&amp;amp;variables,&amp;amp;i,%str( ))) %sysfunc(scan(&amp;amp;formatlist,&amp;amp;i,%str( )));&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; %if %sysfunc(findc("scan(&amp;amp;formatlist,&amp;amp;i)",'.'))=0&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; %then %let newput=&amp;amp;newput %sysfunc(scan(&amp;amp;variables,&amp;amp;i,%str( ))) %eval(&amp;amp;newpointer)-%eval(&amp;amp;newpointer+%sysfunc(scan(&amp;amp;formatlist,&amp;amp;i,%str( $),ap))+1);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;but it was a no-go, not sure if its in the wrong spot or something...any ideas?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Dec 2014 21:06:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191709#M36157</guid>
      <dc:creator>zkreflex</dc:creator>
      <dc:date>2014-12-03T21:06:51Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191710#M36158</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This looks to be working.&amp;nbsp; I created more macro variables, too hard to work with all those nested functions for me, I'm too old.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000080; background-color: #ffffff;"&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; writeoutC (&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;dataset&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;datafile&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;variables&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;formatlist&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%local&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newput i newpointer f d w v wm1; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; wm1=0;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%do&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; i=&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%to&lt;/SPAN&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;4&lt;/STRONG&gt;&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; f=&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%scan&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;formatlist,&amp;amp;i,&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%str&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; d=&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysevalF&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%index&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;f,.),boolean); &lt;/SPAN&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;/*Format or width*/&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; w=&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%substr&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(_&amp;amp;f,&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysfunc&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(findc(_&amp;amp;f,$.,dkb)));&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%put&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; NOTE: &amp;amp;=f &amp;amp;=w;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; w=&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysfunc&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(compress(&amp;amp;f,&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%str&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,DK)); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; v=&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%scan&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;variables,&amp;amp;i,&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%str&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%put&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; NOTE: &amp;amp;=f &amp;amp;=d &amp;amp;=w &amp;amp;=v &amp;amp;=wm1;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &amp;amp;i eq &lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%then&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newpointer=1;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%else&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newpointer=&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysevalf&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;newpointer+&amp;amp;wm1,INTEGER);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%if&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &amp;amp;d &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%then&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newput=&amp;amp;newput @&amp;amp;newpointer &amp;amp;v:&amp;amp;f;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%else&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; newput=&amp;amp;newput &amp;amp;v &amp;amp;newpointer-&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysevalf&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;w+&amp;amp;newpointer-1);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; wm1 = &amp;amp;w;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%put&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; NOTE: &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%superq&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;newput&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;/* &lt;BR /&gt;&amp;nbsp;&amp;nbsp; data _null_;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; set &amp;amp;dataset;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; file "&amp;amp;datafile";&lt;BR /&gt;&amp;nbsp;&amp;nbsp; put @1 &amp;amp;newput;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; run;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #000080; background-color: #ffffff;"&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; writeoutC;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; &lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;/*Part 10*/&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt; &lt;BR /&gt;%&lt;/SPAN&gt;&lt;STRONG style="color: #000000; background-color: #ffffff;"&gt;&lt;EM&gt;writeoutC&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; (books.list,list2.txt,bookid author isbn yearpub,&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;4.&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;30&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;isbn18.&lt;/SPAN&gt; &lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;comma6.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;NOTE: @&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; bookid:&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;4.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; author &lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;5&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;34&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; @&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;35&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; isbn:&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;isbn18.&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; @&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;&lt;STRONG&gt;53&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; yearpub:&lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;comma6.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: data _null_&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Dec 2014 22:17:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191710#M36158</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-12-03T22:17:32Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191711#M36159</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You're the best.&amp;nbsp; A few questions:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysevalF&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(not not &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%index&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;f,.)) &amp;lt; what is this going to return? I understand the index function finds the character position of the . in each format argument, but the double not is confusing me..&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;2) You use the structure "_&amp;amp;f" &amp;lt; what does this do?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;3) Is the %sysevalF function just an alternative to %eval?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;Thanks for everything, enjoy the holiday!&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 00:04:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191711#M36159</guid>
      <dc:creator>zkreflex</dc:creator>
      <dc:date>2014-12-04T00:04:45Z</dc:date>
    </item>
    <item>
      <title>Re: Macro help with embedded do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191712#M36160</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;zkreflex wrote:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;You're the best.&amp;nbsp; A few questions:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;1) &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%sysevalF&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(not not &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%index&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;f,.)) &amp;lt; what is this going to return? I understand the index function finds the character position of the . in each format argument, but the double not is confusing me..&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;Not not just make it a Boolean I should have use the Boolean option.&amp;nbsp; %let d=%sysevalF(%index(&amp;amp;f,.),boolean);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;2) You use the structure "_&amp;amp;f" &amp;lt; what does this do?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="color: #008000;"&gt;We need to have something the FIND when the format has only numbers and dot.&amp;nbsp; For example 10. would return 0 and we don't want that.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;3) Is the %sysevalF function just an alternative to %eval?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #008000; background-color: #ffffff;"&gt;Sort of but it does floating point arithmetic and has options like INTEGER and BOOLEAN.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="color: #008000;"&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;Thanks for everything, enjoy the holiday!&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 00:20:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-help-with-embedded-do-loop/m-p/191712#M36160</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-12-04T00:20:31Z</dc:date>
    </item>
  </channel>
</rss>

