<?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: add, drop and rename field macros in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/add-drop-and-rename-field-macros/m-p/442973#M278923</link>
    <description>&lt;P&gt;what is the issue here? do you have a an ERROR from the log?&lt;/P&gt;</description>
    <pubDate>Tue, 06 Mar 2018 17:29:25 GMT</pubDate>
    <dc:creator>saspert</dc:creator>
    <dc:date>2018-03-06T17:29:25Z</dc:date>
    <item>
      <title>add, drop and rename field macros</title>
      <link>https://communities.sas.com/t5/SAS-Programming/add-drop-and-rename-field-macros/m-p/403319#M278922</link>
      <description>&lt;P&gt;I wrote these macros to add, drop or rename fields.&amp;nbsp; Each checks to see if the field already exists.&amp;nbsp; For addfield, 4th parameter is length for character field or format for numeric field.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%macro AddField(ds, field, type, lenfmt);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%local rc dsid result resx;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let dsid = %sysfunc(open(&amp;amp;ds));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let resx = %sysfunc(varnum(&amp;amp;dsid, &amp;amp;field));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let rc = %sysfunc(close(&amp;amp;dsid));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%if %upcase(&amp;amp;type)=C %then %let spec=char(&amp;amp;lenfmt); %else %let spec=num;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*%LET FIND_period = %INDEX(&amp;amp;lenfmt,%str(.)) ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%IF %upcase(&amp;amp;type)=N and %eval(&amp;amp;FIND_period) = 0 %THEN %LET lenfmt= &amp;amp;lenfmt.%str(.);*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%if %upcase(&amp;amp;type)=N and %length(&amp;amp;lenfmt)&amp;gt;1 %then %let lenfmt=%str(format=)&amp;amp;lenfmt; %else %let lenfmt=;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%if &amp;amp;resx &amp;gt; 0 %then %do;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let result = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%put NOTE: field &amp;amp;field already exists in &amp;amp;ds;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%else %do;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let result = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%put NOTE: field &amp;amp;field does not exist in &amp;amp;ds and will be added;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;proc sql;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;alter table &amp;amp;ds&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;add &amp;amp;field &amp;amp;spec &amp;amp;lenfmt&lt;BR /&gt;&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;quit;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;%mend AddField;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;/* ********************************************************************** */&lt;BR /&gt;&lt;BR /&gt;%macro DropField(ds, field);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%local rc dsid result resx;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let dsid = %sysfunc(open(&amp;amp;ds));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let resx = %sysfunc(varnum(&amp;amp;dsid, &amp;amp;field));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let rc = %sysfunc(close(&amp;amp;dsid));&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%if &amp;amp;resx &amp;gt; 0 %then %do;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let result = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%put NOTE: field &amp;amp;field exists in &amp;amp;ds and will be dropped;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;proc sql;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;alter table &amp;amp;ds&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;drop &amp;amp;field ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;quit;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%else %do;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let result = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%put NOTE: field &amp;amp;field does not exist in &amp;amp;ds;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;%mend DropField;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;/* ********************************************************************** */&lt;BR /&gt;&lt;BR /&gt;%macro RenameField(ds, field, newname);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%local rc dsid result resx;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let dsid = %sysfunc(open(&amp;amp;ds));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let resx = %sysfunc(varnum(&amp;amp;dsid, &amp;amp;field));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let rc = %sysfunc(close(&amp;amp;dsid));&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%if &amp;amp;resx &amp;gt; 0 %then %do;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let result = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%put NOTE: field &amp;amp;field exists in &amp;amp;ds and will be renamed to &amp;amp;newname ;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data &amp;amp;ds;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set &amp;amp;ds;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/*&amp;amp;newname = &amp;amp;field ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;drop &amp;amp;field ; */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rename &amp;amp;field = &amp;amp;newname ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;run;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%else %do;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%let result = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%put NOTE: field &amp;amp;field does not exist in &amp;amp;ds;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;%end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;%mend RenameField;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Oct 2017 19:40:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/add-drop-and-rename-field-macros/m-p/403319#M278922</guid>
      <dc:creator>tomrvincent</dc:creator>
      <dc:date>2017-10-11T19:40:33Z</dc:date>
    </item>
    <item>
      <title>Re: add, drop and rename field macros</title>
      <link>https://communities.sas.com/t5/SAS-Programming/add-drop-and-rename-field-macros/m-p/442973#M278923</link>
      <description>&lt;P&gt;what is the issue here? do you have a an ERROR from the log?&lt;/P&gt;</description>
      <pubDate>Tue, 06 Mar 2018 17:29:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/add-drop-and-rename-field-macros/m-p/442973#M278923</guid>
      <dc:creator>saspert</dc:creator>
      <dc:date>2018-03-06T17:29:25Z</dc:date>
    </item>
    <item>
      <title>Re: add, drop and rename field macros</title>
      <link>https://communities.sas.com/t5/SAS-Programming/add-drop-and-rename-field-macros/m-p/443732#M278924</link>
      <description>&lt;P&gt;No 'issue' at all.&amp;nbsp; These are macros I wrote that I'm sharing.&lt;/P&gt;</description>
      <pubDate>Thu, 08 Mar 2018 13:04:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/add-drop-and-rename-field-macros/m-p/443732#M278924</guid>
      <dc:creator>tomrvincent</dc:creator>
      <dc:date>2018-03-08T13:04:00Z</dc:date>
    </item>
  </channel>
</rss>

