<?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: Please explain me step by step in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904191#M357243</link>
    <description>&lt;P&gt;I think I found out why - another error in the macro:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let fmt=%upcase(%sysfunc(compress(&amp;amp;format,%str(.),d)));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This removes all digits from the format name, including the "8601" in "E8601DA.", so the format name becomes "EDA". The code does not flag this error though, as the&amp;nbsp; code&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let errormsg1=&amp;amp;format is not a valid format.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;does not&amp;nbsp; write the error message anywhere (and the variable is %LOCAL, unless it has been defined outside the macro).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For those who want to see what the macro does, here is a version in readable format:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro dt_date(date=,interval=,format=,offset=-1,alignment=B,quote=Y)/minoperator;
  %put Start macro dt_date(date=&amp;amp;date,interval=&amp;amp;interval,format=&amp;amp;format,offset=&amp;amp;offset,alignment=&amp;amp;alignment,quote=&amp;amp;quote);
  %local interval_temp;
  %local d fmt rc dsid;

  %if %superq(date)=%str() %then %let date=&amp;amp;dt_sas;
  
  %let interval=%upcase(&amp;amp;interval);
  %let quote=%upcase(&amp;amp;quote);
  %let alignment=%upcase(&amp;amp;alignment);
  
  %if &amp;amp;format ne %str() %then %do;
    %let fmt=%upcase(%sysfunc(compress(&amp;amp;format,%str(.),d)));
    %let dsid=%sysfunc(open(sashelp.vformat(where=(fmtname="&amp;amp;fmt"))));
    %let rc=%sysfunc(fetch(&amp;amp;dsid));
    %let dsid=%sysfunc(close(&amp;amp;dsid));
    %if &amp;amp;rc=-1 %then %do;
      %let errormsg1=&amp;amp;format is not a valid format.;
      %let jumptoexit=1;
      %let d=;
      %goto EXIT;
      %end;
    %end;
  %else %do;
    %let format=best.;
    %let quote=N;
    %end;

  %let interval_temp=%scan(&amp;amp;interval,1,%str(.));
  %let pos=%sysfunc(anydigit(&amp;amp;interval_temp));
  %if &amp;amp;pos %then %let interval_temp=%substr(&amp;amp;interval_temp,1,%eval(&amp;amp;pos-1));
  
  %if %eval(&amp;amp;interval_temp in YEAR QTR MONTH WEEK DAY YEARLY QUARTERLY MONTHLY WEEKLY DAILY)=0 %then %do;
    %let errormsg1=&amp;amp;interval is not a valid date interval.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;

  %if %sysfunc(inputn(&amp;amp;offset, best.))=%str() %then %do;
    %let errormsg1=&amp;amp;offset is not a valid offset.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;

  %if &amp;amp;quote ne Y and &amp;amp;quote ne N %then %do;
    %let errormsg1=&amp;amp;quote is not a valid Quote value. Must be Y or N.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;

  %if &amp;amp;alignment ne B and &amp;amp;alignment ne E and &amp;amp;alignment ne M and &amp;amp;alignment ne S %then %do;
    %let errormsg1=&amp;amp;alignment is not a valid alignment value. Must be B, E, M, S.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;

  %let date=%sysfunc(intnx(&amp;amp;interval,&amp;amp;date,&amp;amp;offset,&amp;amp;alignment));
  %let d=%sysfunc(putn(&amp;amp;date,&amp;amp;format));
  %if %superq(d)=%str() %then %do;
    %let errormsg1=&amp;amp;format is not a valid format.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;


  %if &amp;amp;quote=Y %then %let d=%unquote(%str(%')&amp;amp;d%str(%'));

  %EXIT:
%unquote(&amp;amp;d)

%put End macro dt_date - Date Value returned is %unquote(&amp;amp;d);
%mend dt_date;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 22 Nov 2023 08:51:28 GMT</pubDate>
    <dc:creator>s_lassen</dc:creator>
    <dc:date>2023-11-22T08:51:28Z</dc:date>
    <item>
      <title>Please explain me step by step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904014#M357174</link>
      <description>&lt;P&gt;%macro dt_date(date=,interval=,format=,offset=-1,alignment=B,quote=Y)/minoperator;&lt;BR /&gt;%put Start macro dt_date(date=&amp;amp;date,interval=&amp;amp;interval,format=&amp;amp;format,offset=&amp;amp;offset,alignment=&amp;amp;alignment,quote=&amp;amp;quote);&lt;/P&gt;&lt;P&gt;%local interval_temp;&lt;/P&gt;&lt;P&gt;%local d fmt rc dsid;&lt;/P&gt;&lt;P&gt;%if %superq(date)=%str() %then %let date=&amp;amp;dt_sas;&lt;/P&gt;&lt;P&gt;%let interval=%upcase(&amp;amp;interval);&lt;/P&gt;&lt;P&gt;%let quote=%upcase(&amp;amp;quote);&lt;/P&gt;&lt;P&gt;%let alignment=%upcase(&amp;amp;alignment);&lt;/P&gt;&lt;P&gt;%if &amp;amp;format ne %str() %then&lt;BR /&gt;%do;&lt;/P&gt;&lt;P&gt;%let fmt=%upcase(%sysfunc(compress(&amp;amp;format,%str(.),d)));&lt;/P&gt;&lt;P&gt;%let dsid=%sysfunc(open(sashelp.vformat(where=(fmtname="&amp;amp;fmt"))));&lt;/P&gt;&lt;P&gt;%let rc=%sysfunc(fetch(&amp;amp;dsid));&lt;/P&gt;&lt;P&gt;%let dsid=%sysfunc(close(&amp;amp;dsid));&lt;/P&gt;&lt;P&gt;%if &amp;amp;rc=-1 %then&lt;BR /&gt;%do;&lt;/P&gt;&lt;P&gt;%let errormsg1=&amp;amp;format is not a valid format.;&lt;/P&gt;&lt;P&gt;%let jumptoexit=1;&lt;/P&gt;&lt;P&gt;%let d=;&lt;/P&gt;&lt;P&gt;%goto EXIT;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%end;&lt;BR /&gt;%else&lt;BR /&gt;%do;&lt;/P&gt;&lt;P&gt;%let format=best.;&lt;/P&gt;&lt;P&gt;%let quote=N;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%let interval_temp=%scan(&amp;amp;interval,1,%str(.));&lt;/P&gt;&lt;P&gt;%let pos=%sysfunc(anydigit(&amp;amp;interval_temp));&lt;/P&gt;&lt;P&gt;%if &amp;amp;pos %then %let interval_temp=%substr(&amp;amp;interval_temp,1,%eval(&amp;amp;pos-1));&lt;/P&gt;&lt;P&gt;%if %eval(&amp;amp;interval_temp in YEAR QTR MONTH WEEK DAY YEARLY QUARTERLY MONTHLY WEEKLY DAILY)=0 %then&lt;BR /&gt;%do;&lt;/P&gt;&lt;P&gt;%let errormsg1=&amp;amp;interval is not a valid date interval.;&lt;/P&gt;&lt;P&gt;%let jumptoexit=1;&lt;/P&gt;&lt;P&gt;%let d=;&lt;/P&gt;&lt;P&gt;%goto EXIT;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%if %sysfunc(inputn(&amp;amp;offset, best.))=%str() %then&lt;BR /&gt;%do;&lt;/P&gt;&lt;P&gt;%let errormsg1=&amp;amp;offset is not a valid offset.;&lt;/P&gt;&lt;P&gt;%let jumptoexit=1;&lt;/P&gt;&lt;P&gt;%let d=;&lt;/P&gt;&lt;P&gt;%goto EXIT;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%if &amp;amp;quote ne Y and &amp;amp;quote ne N %then&lt;BR /&gt;%do;&lt;/P&gt;&lt;P&gt;%let errormsg1=&amp;amp;quote is not a valid Quote value. Must be Y or N.;&lt;/P&gt;&lt;P&gt;%let jumptoexit=1;&lt;/P&gt;&lt;P&gt;%let d=;&lt;/P&gt;&lt;P&gt;%goto EXIT;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%if &amp;amp;alignment ne B and &amp;amp;alignment ne E and &amp;amp;alignment ne M and &amp;amp;alignment ne S %then&lt;BR /&gt;%do;&lt;/P&gt;&lt;P&gt;%let errormsg1=&amp;amp;alignment is not a valid alignment value. Must be B, E, M, S.;&lt;/P&gt;&lt;P&gt;%let jumptoexit=1;&lt;/P&gt;&lt;P&gt;%let d=;&lt;/P&gt;&lt;P&gt;%goto EXIT;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%let date=%sysfunc(intnx(&amp;amp;interval,&amp;amp;date,&amp;amp;offset,&amp;amp;alignment));&lt;/P&gt;&lt;P&gt;%let d=%sysfunc(putn(&amp;amp;date,&amp;amp;format));&lt;/P&gt;&lt;P&gt;%if %superq(d)=%str() %then&lt;BR /&gt;%do;&lt;/P&gt;&lt;P&gt;%let errormsg1=&amp;amp;format is not a valid format.;&lt;/P&gt;&lt;P&gt;%let jumptoexit=1;&lt;/P&gt;&lt;P&gt;%let d=;&lt;/P&gt;&lt;P&gt;%goto EXIT;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%if &amp;amp;quote=Y %then %let d=%unquote(%str(%')&amp;amp;d%str(%'));&lt;/P&gt;&lt;P&gt;%EXIT:&lt;/P&gt;&lt;P&gt;%unquote(&amp;amp;d)&lt;/P&gt;&lt;P&gt;%put End macro dt_date - Date Value returned is %unquote(&amp;amp;d);&lt;BR /&gt;%mend dt_date;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Nov 2023 21:09:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904014#M357174</guid>
      <dc:creator>soujik</dc:creator>
      <dc:date>2023-11-20T21:09:43Z</dc:date>
    </item>
    <item>
      <title>Re: Please explain me step by step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904021#M357176</link>
      <description>&lt;P&gt;This code demonstrates why developers should spend the time to add inline comments with explanations.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I believe a "explain everything" is likely a too big ask for this forum.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I just tried and asked ChatGPT to explain the code. The answer wasn't too bad. I suggest you try this first and then come back here with some targeted detail questions should there still be a need. ....and of course if there are just some macro functions you don't understand first consult the SAS docu.&lt;/P&gt;</description>
      <pubDate>Mon, 20 Nov 2023 21:45:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904021#M357176</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2023-11-20T21:45:15Z</dc:date>
    </item>
    <item>
      <title>Re: Please explain me step by step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904036#M357182</link>
      <description>&lt;P&gt;Adding to&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12447"&gt;@Patrick&lt;/a&gt;&amp;nbsp;'s comment about lack of comments, there is a complete lack of proper code layout to make it at least readable. That includes having blank lines between sections and indenting %DO blocks.&lt;/P&gt;</description>
      <pubDate>Tue, 21 Nov 2023 01:19:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904036#M357182</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2023-11-21T01:19:00Z</dc:date>
    </item>
    <item>
      <title>Re: Please explain me step by step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904037#M357183</link>
      <description>&lt;P&gt;Adding to the other comments. Don't use the macro language when you can use ordinary SAS code. I wrote some multi-thousand line macros in my day. Of course they had macro code. That said, when ever possible, I used DATA _NULL_ DATA step code to process parameters and strings. It makes your life much easier.&lt;/P&gt;</description>
      <pubDate>Tue, 21 Nov 2023 01:40:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904037#M357183</guid>
      <dc:creator>WarrenKuhfeld</dc:creator>
      <dc:date>2023-11-21T01:40:41Z</dc:date>
    </item>
    <item>
      <title>Re: Please explain me step by step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904039#M357185</link>
      <description>&lt;P&gt;It is an over complicated way to call the INTNX() function.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%sysfunc(intnx(&amp;amp;interval,&amp;amp;date,&amp;amp;offset,&amp;amp;alignment),&amp;amp;format)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you are interested here is a partial list of the logic/coding mistakes:&lt;/P&gt;
&lt;LI-SPOILER&gt;Adds the / MINOPERATOR option to the %MACRO statement and then does not use IN as an operator (even in places where it would make sense in this program).&lt;BR /&gt;&lt;BR /&gt;Use of "magic" macro variables.&amp;nbsp; Referencing a macro variable in the middle of the macro that not an input and has no comment or other code explaining where its value should come from.&lt;BR /&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%if %superq(date)=%str() %then %let date=&amp;amp;dt_sas;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BR /&gt;Assumes that just removing the period from a format specification will result in the bare format name.&lt;BR /&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;  %let fmt=%upcase(%sysfunc(compress(&amp;amp;format,%str(.),d)));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BR /&gt;Using BEST as the name of an INFORMAT&amp;nbsp;&lt;BR /&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%if %sysfunc(inputn(&amp;amp;offset, best.))=%str() %then %do;&lt;/CODE&gt;&lt;/PRE&gt;
Assuming that PUTN() will return an empty string when the value is missing instead of the normal single period.&lt;BR /&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let d=%sysfunc(putn(&amp;amp;date,&amp;amp;format));
%if %superq(d)=%str() %then %do;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BR /&gt;Unquoting a value that was never quoted.&lt;BR /&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%unquote(&amp;amp;d)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BR /&gt;And for something that is going to a lot (too much really) trouble to validate its input it will stop the macro when the first invalid input is detected.&amp;nbsp; So if a user has made mistakes on multiple inputs they will have to make many calls to discover all of the parameter errors they have made.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/LI-SPOILER&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Nov 2023 02:23:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904039#M357185</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-11-21T02:23:44Z</dc:date>
    </item>
    <item>
      <title>Re: Please explain me step by step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904040#M357186</link>
      <description>&lt;P&gt;Note it does not handle this format:&lt;/P&gt;
&lt;PRE&gt;461  %put %dt_date(date='01JAN2023'd,interval=month,format=e8601da.,offset=-1,alignment=B,quote=Y);
Start macro dt_date(date='01JAN2023'd,interval=month,format=e8601da.,offset=-1,alignment=B,quote=Y)
End macro dt_date - Date Value returned is

462  %put %sysfunc(intnx(month,'01JAN2023'd,-1,b),e8601da.);
2022-12-01
&lt;/PRE&gt;</description>
      <pubDate>Tue, 21 Nov 2023 02:35:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904040#M357186</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-11-21T02:35:05Z</dc:date>
    </item>
    <item>
      <title>Re: Please explain me step by step</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904191#M357243</link>
      <description>&lt;P&gt;I think I found out why - another error in the macro:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let fmt=%upcase(%sysfunc(compress(&amp;amp;format,%str(.),d)));&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This removes all digits from the format name, including the "8601" in "E8601DA.", so the format name becomes "EDA". The code does not flag this error though, as the&amp;nbsp; code&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let errormsg1=&amp;amp;format is not a valid format.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;does not&amp;nbsp; write the error message anywhere (and the variable is %LOCAL, unless it has been defined outside the macro).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For those who want to see what the macro does, here is a version in readable format:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro dt_date(date=,interval=,format=,offset=-1,alignment=B,quote=Y)/minoperator;
  %put Start macro dt_date(date=&amp;amp;date,interval=&amp;amp;interval,format=&amp;amp;format,offset=&amp;amp;offset,alignment=&amp;amp;alignment,quote=&amp;amp;quote);
  %local interval_temp;
  %local d fmt rc dsid;

  %if %superq(date)=%str() %then %let date=&amp;amp;dt_sas;
  
  %let interval=%upcase(&amp;amp;interval);
  %let quote=%upcase(&amp;amp;quote);
  %let alignment=%upcase(&amp;amp;alignment);
  
  %if &amp;amp;format ne %str() %then %do;
    %let fmt=%upcase(%sysfunc(compress(&amp;amp;format,%str(.),d)));
    %let dsid=%sysfunc(open(sashelp.vformat(where=(fmtname="&amp;amp;fmt"))));
    %let rc=%sysfunc(fetch(&amp;amp;dsid));
    %let dsid=%sysfunc(close(&amp;amp;dsid));
    %if &amp;amp;rc=-1 %then %do;
      %let errormsg1=&amp;amp;format is not a valid format.;
      %let jumptoexit=1;
      %let d=;
      %goto EXIT;
      %end;
    %end;
  %else %do;
    %let format=best.;
    %let quote=N;
    %end;

  %let interval_temp=%scan(&amp;amp;interval,1,%str(.));
  %let pos=%sysfunc(anydigit(&amp;amp;interval_temp));
  %if &amp;amp;pos %then %let interval_temp=%substr(&amp;amp;interval_temp,1,%eval(&amp;amp;pos-1));
  
  %if %eval(&amp;amp;interval_temp in YEAR QTR MONTH WEEK DAY YEARLY QUARTERLY MONTHLY WEEKLY DAILY)=0 %then %do;
    %let errormsg1=&amp;amp;interval is not a valid date interval.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;

  %if %sysfunc(inputn(&amp;amp;offset, best.))=%str() %then %do;
    %let errormsg1=&amp;amp;offset is not a valid offset.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;

  %if &amp;amp;quote ne Y and &amp;amp;quote ne N %then %do;
    %let errormsg1=&amp;amp;quote is not a valid Quote value. Must be Y or N.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;

  %if &amp;amp;alignment ne B and &amp;amp;alignment ne E and &amp;amp;alignment ne M and &amp;amp;alignment ne S %then %do;
    %let errormsg1=&amp;amp;alignment is not a valid alignment value. Must be B, E, M, S.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;

  %let date=%sysfunc(intnx(&amp;amp;interval,&amp;amp;date,&amp;amp;offset,&amp;amp;alignment));
  %let d=%sysfunc(putn(&amp;amp;date,&amp;amp;format));
  %if %superq(d)=%str() %then %do;
    %let errormsg1=&amp;amp;format is not a valid format.;
    %let jumptoexit=1;
    %let d=;
    %goto EXIT;
    %end;


  %if &amp;amp;quote=Y %then %let d=%unquote(%str(%')&amp;amp;d%str(%'));

  %EXIT:
%unquote(&amp;amp;d)

%put End macro dt_date - Date Value returned is %unquote(&amp;amp;d);
%mend dt_date;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 22 Nov 2023 08:51:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Please-explain-me-step-by-step/m-p/904191#M357243</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2023-11-22T08:51:28Z</dc:date>
    </item>
  </channel>
</rss>

