<?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: SAS - Write to CSV file using DO loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453754#M114693</link>
    <description>&lt;P&gt;Got it working! Had to switch from "CATX" to "CATS" to solve the quote issue. Also, the DOLLAR10. was not displaying the whole figure due to extra spaces generated from the "VVALUEX" function.....so I had to add a "COMPRESS". Below is the working code. Thank you&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt; for your input and help, a total team effort!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA _NULL_; /* DLR HIS */
	FILE DLRHIS DELIMITER = ',';
	SET DHISF;
	
	C = ',';
	
	IF _N_ = 1 THEN PUT "&amp;amp;DHISNAMES"; /*COLUMN HEADER */
	
	LENGTH RECD $3000.; 
	
	DO i = 1 TO COUNTW("&amp;amp;DHISV");
		VRBL = SCAN("&amp;amp;DHISV", i);
			IF INDEX(VNAMEX(VRBL), 'PAY') &amp;gt; 0 THEN DO;
				RECD = CATS(RECD,QUOTE(PUT(
					INPUT(COMPRESS(VVALUEX(VRBL)),DOLLAR10.),DOLLAR10.))||C);
			END;
			IF INDEX(VNAMEX(VRBL), 'PAY') = 0 THEN DO;
				RECD = CATS(RECD, COMPRESS(VVALUEX(VRBL))||C);
			END;	
	END;
		
	PUT RECD;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output.png" style="width: 230px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/19762i0E16E7BC029EC9B2/image-size/large?v=v2&amp;amp;px=999" role="button" title="output.png" alt="output.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 12 Apr 2018 20:45:52 GMT</pubDate>
    <dc:creator>DonnieJ</dc:creator>
    <dc:date>2018-04-12T20:45:52Z</dc:date>
    <item>
      <title>SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453376#M114555</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am trying to write to an external JCL file using a DO loop. I have a dataset where the columns increase overtime, so I cannot just simply PUT the variable names 1 by 1. I also can't do a PUT (_ALL_)(+0) because I need to investigate the variable names for a particular string and change the format to DOLLAR10 if it passes the test.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I work with Loops in Macros and many other cases, but when writing to an external file it seems to be a different ballgame. Thanks for the help!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA _NULL_; /* DLR HIS */
 FILE DLRHIS DELIMITER = ',';
 SET DHISF;
 
 C = ',';
 Q = '"';
 
 IF _N_ = 1 THEN PUT "&amp;amp;DHISNAMES"; /*COLUMN HEADER */
 
 RECD = 
 
  DO i = 1 TO COUNTW("&amp;amp;DHISV");
   VRBL = SCAN("&amp;amp;DHISV", i);
    IF INDEX(VNAME(VRBL), 'PAY') &amp;gt; 0 THEN DO;
     Q||PUT(VRBL, DOLLAR10.)||Q||C||;
    ELSE
     VRBL ||C||;
    END; 
  END;
  
 PUT RECD;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;LOG ----------------------------------------------------&lt;/P&gt;&lt;P&gt;2692&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DO i = 1 TO COUNTW("&amp;amp;DHISV");&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;&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; 202&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;ERROR 22-322: SYNTAX ERROR, EXPECTING ONE OF THE FOLLOWING: !,&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;amp;, (, *, **, +, -, /, ;, &amp;lt;, &amp;lt;=, &amp;lt;&amp;gt;, =, &amp;gt;, &amp;gt;&amp;lt;,&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;gt;=, AND, EQ, GE, GT, IN, LE, LT, MAX, MIN, NE,&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; NG, NL, NOTIN, OR, Ý, ¬=, {, |, ||, ~=.&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;&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;ERROR 388-185: EXPECTING AN ARITHMETIC OPERATOR.&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;&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;ERROR 202-322: THE OPTION OR PARAMETER IS NOT RECOGNIZED AND&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; WILL BE IGNORED.&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;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 21:24:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453376#M114555</guid>
      <dc:creator>DonnieJ</dc:creator>
      <dc:date>2018-04-11T21:24:35Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453380#M114557</link>
      <description>&lt;P&gt;Can you post an example of what's the value of your&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token string"&gt;&amp;amp;DHISV&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;resolving to?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 21:58:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453380#M114557</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-04-11T21:58:19Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453381#M114558</link>
      <description>&lt;P&gt;It's resolving to all 173 variables. Below is part of it...Getting a warning as well..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; MACRO VARIABLE DHISV RESOLVES TO DEALER DT_STAR&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; DT_TERM RGN AREA DIST DLR FY16Q1_APR_PAY&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; FY16Q1_APR_SALES FY16Q1_APR_QTY FY16Q1_APR_LVL1&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; FY16Q1_APR_LVL2 FY16Q1_APR_LVL3 FY16Q1_MAY_PAY&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; FY16Q1_MAY_SALES FY16Q1_MAY_QTY FY16Q1_MAY_LVL1&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; FY16Q1_MAY_LVL2 FY16Q1_MAY_LVL3 FY16Q1_JUN_PAY&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; FY16Q1_JUN_SALES FY16Q1_JUN_QTY FY16Q1_JUN_LVL1&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; FY16Q1_JUN_LVL2 FY16Q1_JUN_LVL3 FY16Q1_PAY&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; FY16Q1_SALES FY16Q2_JUL_PAY FY16Q2_JUL_SALES&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; FY16Q2_JUL_QTY FY16Q2_JUL_LVL1 FY16Q2_JUL_LVL2&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; FY16Q2_JUL_LVL3 FY16Q2_AUG_PAY FY16Q2_AUG_SALES&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; FY16Q2_AUG_QTY FY16Q2_AUG_LVL1 FY16Q2_AUG_LVL2&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; FY16Q2_AUG_LVL3 FY16Q2_SEP_PAY FY16Q2_SEP_SALES&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; FY16Q2_SEP_QTY FY16Q2_SEP_LVL1 FY16Q2_SEP_LVL2&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; FY16Q2_SEP_LVL3 FY16Q2_PAY FY16Q2_SALES&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; FY16Q3_OCT_PAY FY16Q3_OCT_SALES FY16Q3_OCT_QTY&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; FY16Q3_OCT_LVL1 FY16Q3_OCT_LVL2 FY16Q3_OCT_LVL3&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; FY16Q3_NOV_PAY FY16Q3_NOV_SALES FY16Q3_NOV_QTY ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;WARNING: THE QUOTED STRING CURRENTLY BEING PROCESSED HAS BECOME&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MORE THAN 262 characters LONG.&amp;nbsp; YOU MIGHT HAVE&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; UNBALANCED QUOTATION MARKS.&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;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 22:02:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453381#M114558</guid>
      <dc:creator>DonnieJ</dc:creator>
      <dc:date>2018-04-11T22:02:34Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453382#M114559</link>
      <description>&lt;P&gt;This statement is invalid.&amp;nbsp; It does not accumulate text into RECD:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;RECD &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; DO i &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; TO &lt;SPAN class="token function"&gt;COUNTW&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"&amp;amp;DHISV"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;To accumulate text into RECD, you need to assign it a length, then inside the DO loop add text to it along the lines of:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;length RECD $ 3000; 
 
  DO i &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; TO &lt;SPAN class="token function"&gt;COUNTW&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"&amp;amp;DHISV"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
   VRBL &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;SCAN&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"&amp;amp;DHISV"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token keyword"&gt;IF&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;INDEX&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;VNAME&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;VRBL&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'PAY'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;THEN&lt;/SPAN&gt; DO&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
     RECD = catx(' ', RECD, Q&lt;SPAN class="token operator"&gt;||&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;PUT&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;VRBL&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; DOLLAR10&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;||&lt;/SPAN&gt;Q&lt;SPAN class="token operator"&gt;||&lt;/SPAN&gt;C&lt;SPAN class="token operator"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token keyword"&gt;ELSE&lt;/SPAN&gt;
     RECD = catx(' ', RECD, VRBL &lt;SPAN class="token operator"&gt;||&lt;/SPAN&gt;C)&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    END&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; 
  END&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 11 Apr 2018 22:08:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453382#M114559</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-04-11T22:08:05Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453397#M114566</link>
      <description>&lt;P&gt;You would be much better off copying the entire log of the data step with errors and pasting into a code box opened with the forum {I} icon to preserve formatting.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You have more errors that that. Please see below.&lt;/P&gt;
&lt;PRE&gt;  DO i = 1 TO COUNTW("&amp;amp;DHISV");
   VRBL = SCAN("&amp;amp;DHISV", i);
    IF INDEX(VNAME(VRBL), 'PAY') &amp;gt; 0 THEN DO;   &amp;lt;= vname is incorrect function g 
     Q||PUT(VRBL, DOLLAR10.)||Q||C||;   &amp;lt;= invalid you are not assigning anything to a variable or calling a function
    ELSE
     VRBL ||C||;                       &amp;lt;= invalid you are not assigning anything to a variable or calling a function
    END; 
  END;&lt;/PRE&gt;
&lt;P&gt;Also you are using the wrong function in VNAME, I think you want VNAMEX. Please see this example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data junk;
   x= 3;
   vrbl='X';
   c = vname(vrbl);
   d = vnamex(vrbl);
run;&lt;/PRE&gt;
&lt;P&gt;But the function choice is sort of irrelevant as&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;IF INDEX(SCAN("&amp;amp;DHISV", i), 'PAY') &amp;gt; 0&lt;/PRE&gt;
&lt;P&gt;Also in your concatenation such as&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;VRBL ||C||&lt;/P&gt;
&lt;P&gt;you would be better off using one of the CAT functions, likely: Cats(q,"somevalue",q) as the || operator is almost certainly going to have a large number of blanks appear in the result.&lt;/P&gt;
&lt;P&gt;Also&lt;/P&gt;
&lt;PRE&gt;PUT(VRBL, DOLLAR10.)&lt;/PRE&gt;
&lt;P&gt;by itself is going to be a type mismatch problem. VRBL is a text variable from the SCAN function result and since you intend it to have a variable name then dollar10 is an inappropriate format.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You would want: put(vvaluex(vrbl), dollar10.) to get the numeric value of the variable whose name is in vrbl.&lt;/P&gt;
&lt;P&gt;A better way to get quotes around a value is to use the quote function instead of concatenating a constant anyway&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;quote( put(vvaluex(vrbl), dollar10.)&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;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 22:34:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453397#M114566</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-04-11T22:34:03Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453410#M114572</link>
      <description>&lt;P&gt;Using input from the last 2 posts, my code is now ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA _NULL_; /* DLR HIS */
	FILE DLRHIS DELIMITER = ',';
	SET DHISF;
	
	C = ',';
	
	IF _N_ = 1 THEN PUT "&amp;amp;DHISNAMES"; /*COLUMN HEADER */
	
	LENGTH	RECD	$3000.; 
	
	DO i = 1 TO COUNTW("&amp;amp;DHISV");
		VRBL = SCAN("&amp;amp;DHISV", i);
			IF INDEX(VNAMEX(VRBL), 'PAY') &amp;gt; 0 THEN DO;
				RECD = CATX(' ', RECD, QUOTE(PUT(VVALUEX(VRBL), DOLLAR10.))||C);
			ELSE
				RECD = CATX(' ', RECD, VRBL||C);
			END;	
	END;
		
	PUT RECD;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;I received the below error...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;2693          IF INDEX(VNAMEX(VRBL), 'PAY') &amp;gt; 0 THEN DO;      
2694           RECD = CATX(' ', RECD, QUOTE(PUT(VVALUEX(VRBL),
2694     ! DOLLAR10.))||C);                                   
           _________                                          
           48                                                 
2695          ELSE                                            
              ____                                            
              160                                             
ERROR 48-59: THE FORMAT $DOLLAR WAS NOT FOUND OR COULD NOT BE 
             LOADED.                                          
                                                              
ERROR 160-185: NO MATCHING IF-THEN CLAUSE.                    &lt;/PRE&gt;</description>
      <pubDate>Wed, 11 Apr 2018 23:26:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453410#M114572</guid>
      <dc:creator>DonnieJ</dc:creator>
      <dc:date>2018-04-11T23:26:44Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453419#M114576</link>
      <description>&lt;P&gt;One message for each error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For the first one, VVALUEX returns a character string.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://documentation.sas.com/?docsetId=lefunctionsref&amp;amp;docsetTarget=n1x70jnnpttwy0n1gf5rvuivgyry.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en" target="_blank"&gt;http://documentation.sas.com/?docsetId=lefunctionsref&amp;amp;docsetTarget=n1x70jnnpttwy0n1gf5rvuivgyry.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Character strings cannot be expressed using a DOLLAR format.&amp;nbsp; A more complex expression could apply the INPUT function to the string returned by VVALUEX, before trying to use the DOLLAR10. format.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The second error?&amp;nbsp; You have an IF THEN DO expression that is missing an END statement.&amp;nbsp; So the ELSE statement is out of place.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 01:09:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453419#M114576</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-04-12T01:09:23Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453612#M114646</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;One message for each error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For the first one, VVALUEX returns a character string.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://documentation.sas.com/?docsetId=lefunctionsref&amp;amp;docsetTarget=n1x70jnnpttwy0n1gf5rvuivgyry.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en" target="_blank"&gt;http://documentation.sas.com/?docsetId=lefunctionsref&amp;amp;docsetTarget=n1x70jnnpttwy0n1gf5rvuivgyry.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Good catch on the vvaluex &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;&amp;nbsp;I haven't used the function for something like 15 years so forgot to check the output.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 15:31:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453612#M114646</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-04-12T15:31:31Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453624#M114652</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;I am trying to write to an external JCL file using a DO loop. I have a dataset where the columns increase overtime, so I cannot just simply PUT the variable names 1 by 1. I also can't do a PUT (_ALL_)(+0) because I need to investigate the variable names for a particular string and change the format to DOLLAR10 if it passes the test.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;Why not just apply the format?&amp;nbsp;One way is to use PROC TRANSPOSE&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=DHISF(obs=0) out=names ; 
  var _all_ ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now that you have the names you can use it to write the header and also check whether there are any variables that need to have the DOLLAR10. format attached to them.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let format_statement= ;
DATA _NULL_; 
  FILE DLRHIS DSD DLM= ',';
  set names end=eof ;
  put _name_ @ ;
  length varlist $1000 ;
  if index(upcase(_name_),'PAY') then varlist=catx(' ',varlist,_name_);
  if eof then do;
    put;
    if not missing(varlist) then varlist=catx(' ','format',varlist,'dollar10.');
    call symputx('format_statement',varlist);
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;Then you can just append the data after the header.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA _NULL_; 
  FILE DLRHIS DSD DLM= ',' MOD;
  set DHISF ;
  put (_all_) (+0) ;
  &amp;amp;format_statement ;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note that if you don't want to write all of the variables (or you want to change the order) you could create a&amp;nbsp;variable list into a macro variable and use it in the VAR statement of the PROC TRANSPOSE and the PUT statement of the last step in place of the _ALL_ keyword.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 17:37:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453624#M114652</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-04-12T17:37:45Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453662#M114668</link>
      <description>&lt;P&gt;With the below code I'm not getting any errors. However, the output for the "PAY" columns is not outputting in dollar format. Also surprised the ' ="" ' is being outputted. Usually this does not happen.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA _NULL_; /* DLR HIS */
	FILE DLRHIS DELIMITER = ',';
	SET DHISF;
	
	C = ',';
	
	IF _N_ = 1 THEN PUT "&amp;amp;DHISNAMES"; /*COLUMN HEADER */
	
	LENGTH RECD $3000.; 
	
	DO i = 1 TO COUNTW("&amp;amp;DHISV");
		VRBL = SCAN("&amp;amp;DHISV", i);
			IF INDEX(VNAMEX(VRBL), 'PAY') &amp;gt; 0 THEN DO;
			RECD = CATX(' ',RECD,'='||QUOTE(INPUT(VVALUEX(VRBL),DOLLAR10.))||C);
			END;
			IF INDEX(VNAMEX(VRBL), 'PAY') = 0 THEN DO;
				RECD = CATX(' ', RECD, VVALUEX(VRBL)||C);
			END;	
	END;
		
	PUT RECD;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output.png" style="width: 109px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/19754i359B580564E7863C/image-size/large?v=v2&amp;amp;px=999" role="button" title="output.png" alt="output.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 17:05:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453662#M114668</guid>
      <dc:creator>DonnieJ</dc:creator>
      <dc:date>2018-04-12T17:05:47Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453669#M114670</link>
      <description>&lt;P&gt;The code you posted shows how to remove the commas from the displayed value of the variable. Remember you use an INFORMAT to convert text into values and a FORMAT to convert values into text.&lt;/P&gt;
&lt;P&gt;So the INPUT() function using the DOLLAR. informat would convert a string like '9,647' to the number 9647.&amp;nbsp; You might want to keep using the DOLLAR informat just in case the PAY variable already had the DOLLAR or COMMA format attached to it.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You just need to add a PUT() function call to convert the number you have created back into a text string.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;RECD = CATX(' ',RECD,'='||QUOTE(put(INPUT(VVALUEX(VRBL),DOLLAR10.),dollar10.))||C);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PS Why are you adding the equal sign in front of the value?&amp;nbsp; Why aren't you just generating a normal CSV file?&amp;nbsp; Use the code in my other post that show a method to conditionally generate the needed FORMAT statement.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 17:27:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453669#M114670</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-04-12T17:27:52Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453735#M114689</link>
      <description>&lt;P&gt;No errors.... looks like we're getting warmer. Below is the output.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA _NULL_; /* DLR HIS */
	FILE DLRHIS DELIMITER = ',';
	SET DHISF;
	
	C = ',';
	Q = '"';
	
	IF _N_ = 1 THEN PUT "&amp;amp;DHISNAMES"; /*COLUMN HEADER */
	
	LENGTH RECD $3000.; 
	
	DO i = 1 TO COUNTW("&amp;amp;DHISV");
		VRBL = SCAN("&amp;amp;DHISV", i);
			IF INDEX(VNAMEX(VRBL), 'PAY') &amp;gt; 0 THEN DO;
				RECD = CATX(' ',RECD,QUOTE(
						PUT(INPUT(VVALUEX(VRBL),DOLLAR10.),DOLLAR10.))||C);
			END;
			IF INDEX(VNAMEX(VRBL), 'PAY') = 0 THEN DO;
				RECD = CATX(' ', RECD, VVALUEX(VRBL)||C);
			END;	
	END;
		
	PUT RECD;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output.png" style="width: 131px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/19760iFE8FE2008FFFBFD3/image-size/large?v=v2&amp;amp;px=999" role="button" title="output.png" alt="output.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 19:57:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453735#M114689</guid>
      <dc:creator>DonnieJ</dc:creator>
      <dc:date>2018-04-12T19:57:20Z</dc:date>
    </item>
    <item>
      <title>Re: SAS - Write to CSV file using DO loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453754#M114693</link>
      <description>&lt;P&gt;Got it working! Had to switch from "CATX" to "CATS" to solve the quote issue. Also, the DOLLAR10. was not displaying the whole figure due to extra spaces generated from the "VVALUEX" function.....so I had to add a "COMPRESS". Below is the working code. Thank you&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt; for your input and help, a total team effort!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA _NULL_; /* DLR HIS */
	FILE DLRHIS DELIMITER = ',';
	SET DHISF;
	
	C = ',';
	
	IF _N_ = 1 THEN PUT "&amp;amp;DHISNAMES"; /*COLUMN HEADER */
	
	LENGTH RECD $3000.; 
	
	DO i = 1 TO COUNTW("&amp;amp;DHISV");
		VRBL = SCAN("&amp;amp;DHISV", i);
			IF INDEX(VNAMEX(VRBL), 'PAY') &amp;gt; 0 THEN DO;
				RECD = CATS(RECD,QUOTE(PUT(
					INPUT(COMPRESS(VVALUEX(VRBL)),DOLLAR10.),DOLLAR10.))||C);
			END;
			IF INDEX(VNAMEX(VRBL), 'PAY') = 0 THEN DO;
				RECD = CATS(RECD, COMPRESS(VVALUEX(VRBL))||C);
			END;	
	END;
		
	PUT RECD;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="output.png" style="width: 230px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/19762i0E16E7BC029EC9B2/image-size/large?v=v2&amp;amp;px=999" role="button" title="output.png" alt="output.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Apr 2018 20:45:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Write-to-CSV-file-using-DO-loop/m-p/453754#M114693</guid>
      <dc:creator>DonnieJ</dc:creator>
      <dc:date>2018-04-12T20:45:52Z</dc:date>
    </item>
  </channel>
</rss>

