<?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 assign last obs using macro in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507205#M136085</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset like this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="dijitBorderContainer dijitContainer row-fluid dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="dijitBorderContainer dijitContainer row-fluid dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="tabs dijitBorderContainer dijitContainer sasStudioTabsParentContainer dijitLayoutContainer dojoDndContainerOver dojoDndSource dojoDndTarget"&gt;&lt;DIV class="dijitTabContainer dijitTabContainerTop dijitContainer dijitLayoutContainer tabStrip-disabled sasStudioTabsTabContainer sasStudioTabsTabContainerVertical sasStudioTabsTop dijitBorderContainer-child dijitBorderContainer-dijitTabContainerTop dijitBorderContainerPane dijitAlignCenter"&gt;&lt;DIV class="dijitTabPaneWrapper dijitTabContainerTop-container dijitAlignCenter"&gt;&lt;DIV class="dijitTabContainerTopChildWrapper dijitVisible"&gt;&lt;DIV class="dijitBorderContainer dijitContainer sasStudioTabsTabContainerChild dijitTabPane dijitTabContainerTop-child dijitTabContainerTop-dijitBorderContainer dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="dijitBorderContainer dijitContainer dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="dijitBorderContainer dijitContainer dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="dgrid dgrid-grid ui-widget"&gt;&lt;DIV class="dgrid-header dgrid-header-row ui-widget-header"&gt;n&amp;nbsp; &amp;nbsp; date&lt;BR /&gt;&lt;DIV class="dgrid-resize-handle resizeNode-1"&gt;1 31AUG2018&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class="dgrid-scroller"&gt;&lt;DIV class="dgrid-content ui-widget-content"&gt;&lt;DIV class=" dgrid-row ui-state-default dgrid-row-even"&gt;&lt;P&gt;2 30JUN2018&lt;BR /&gt;3 31MAR2018&lt;BR /&gt;4 31DEC2017&lt;BR /&gt;5 30SEP2017&lt;BR /&gt;6 30JUN2017&lt;BR /&gt;7 31MAR2017&lt;/P&gt;&lt;P&gt;proc sql noprint;/*assign macro variable as_of_date*/&lt;BR /&gt;select catx('', quote(put(date, date9.)), 'd'),catx('', quote(put(date, date9.)), 'd'),n&lt;BR /&gt;into :dates1-,&lt;BR /&gt;:as_of_date separated by ',',&lt;BR /&gt;:n1-&lt;BR /&gt;from z;&lt;BR /&gt;%let n=&amp;amp;n;&lt;BR /&gt;%let as_of_date=(&amp;amp;as_of_date);&lt;BR /&gt;%let dates=&amp;amp;dates;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to assign last obs n=7, date=&lt;SPAN&gt;31MAR2017. since last n will change, it's not a fix number, it can be any number, this example gives last n=7. So how can I assign last n return to corresponding date??&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thanks!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Wed, 24 Oct 2018 15:44:34 GMT</pubDate>
    <dc:creator>jojozheng</dc:creator>
    <dc:date>2018-10-24T15:44:34Z</dc:date>
    <item>
      <title>assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507205#M136085</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset like this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="dijitBorderContainer dijitContainer row-fluid dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="dijitBorderContainer dijitContainer row-fluid dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="tabs dijitBorderContainer dijitContainer sasStudioTabsParentContainer dijitLayoutContainer dojoDndContainerOver dojoDndSource dojoDndTarget"&gt;&lt;DIV class="dijitTabContainer dijitTabContainerTop dijitContainer dijitLayoutContainer tabStrip-disabled sasStudioTabsTabContainer sasStudioTabsTabContainerVertical sasStudioTabsTop dijitBorderContainer-child dijitBorderContainer-dijitTabContainerTop dijitBorderContainerPane dijitAlignCenter"&gt;&lt;DIV class="dijitTabPaneWrapper dijitTabContainerTop-container dijitAlignCenter"&gt;&lt;DIV class="dijitTabContainerTopChildWrapper dijitVisible"&gt;&lt;DIV class="dijitBorderContainer dijitContainer sasStudioTabsTabContainerChild dijitTabPane dijitTabContainerTop-child dijitTabContainerTop-dijitBorderContainer dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="dijitBorderContainer dijitContainer dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="dijitBorderContainer dijitContainer dijitLayoutContainer"&gt;&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;&lt;DIV class="dgrid dgrid-grid ui-widget"&gt;&lt;DIV class="dgrid-header dgrid-header-row ui-widget-header"&gt;n&amp;nbsp; &amp;nbsp; date&lt;BR /&gt;&lt;DIV class="dgrid-resize-handle resizeNode-1"&gt;1 31AUG2018&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class="dgrid-scroller"&gt;&lt;DIV class="dgrid-content ui-widget-content"&gt;&lt;DIV class=" dgrid-row ui-state-default dgrid-row-even"&gt;&lt;P&gt;2 30JUN2018&lt;BR /&gt;3 31MAR2018&lt;BR /&gt;4 31DEC2017&lt;BR /&gt;5 30SEP2017&lt;BR /&gt;6 30JUN2017&lt;BR /&gt;7 31MAR2017&lt;/P&gt;&lt;P&gt;proc sql noprint;/*assign macro variable as_of_date*/&lt;BR /&gt;select catx('', quote(put(date, date9.)), 'd'),catx('', quote(put(date, date9.)), 'd'),n&lt;BR /&gt;into :dates1-,&lt;BR /&gt;:as_of_date separated by ',',&lt;BR /&gt;:n1-&lt;BR /&gt;from z;&lt;BR /&gt;%let n=&amp;amp;n;&lt;BR /&gt;%let as_of_date=(&amp;amp;as_of_date);&lt;BR /&gt;%let dates=&amp;amp;dates;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to assign last obs n=7, date=&lt;SPAN&gt;31MAR2017. since last n will change, it's not a fix number, it can be any number, this example gives last n=7. So how can I assign last n return to corresponding date??&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thanks!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 24 Oct 2018 15:44:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507205#M136085</guid>
      <dc:creator>jojozheng</dc:creator>
      <dc:date>2018-10-24T15:44:34Z</dc:date>
    </item>
    <item>
      <title>Re: assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507226#M136102</link>
      <description>&lt;P&gt;I believe you simply need to retrieve the macrovar &amp;amp;SQLOBS, produced&amp;nbsp;by the proc sql.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I.e. simply use&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; %let n=&amp;amp;sqlobs;&lt;/P&gt;</description>
      <pubDate>Wed, 24 Oct 2018 16:29:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507226#M136102</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-10-24T16:29:58Z</dc:date>
    </item>
    <item>
      <title>Re: assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507229#M136104</link>
      <description>&lt;P&gt;Or do it in a data step which is trivial. Use either END if you want the last observeration only or use LAST. if you need the last by each group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
set sashelp.stocks (where=(stock='IBM')) end=eof;
if eof then 
call symputx('last_date', put(date, date9.));
run;

%put &amp;amp;last_date.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Note in the sashelp.stocks data set the dates are in reverse order, so the last date on record is actually the earliest date.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/215650"&gt;@jojozheng&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a dataset like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="dijitBorderContainer dijitContainer row-fluid dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="dijitBorderContainer dijitContainer row-fluid dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="tabs dijitBorderContainer dijitContainer sasStudioTabsParentContainer dijitLayoutContainer dojoDndContainerOver dojoDndSource dojoDndTarget"&gt;
&lt;DIV class="dijitTabContainer dijitTabContainerTop dijitContainer dijitLayoutContainer tabStrip-disabled sasStudioTabsTabContainer sasStudioTabsTabContainerVertical sasStudioTabsTop dijitBorderContainer-child dijitBorderContainer-dijitTabContainerTop dijitBorderContainerPane dijitAlignCenter"&gt;
&lt;DIV class="dijitTabPaneWrapper dijitTabContainerTop-container dijitAlignCenter"&gt;
&lt;DIV class="dijitTabContainerTopChildWrapper dijitVisible"&gt;
&lt;DIV class="dijitBorderContainer dijitContainer sasStudioTabsTabContainerChild dijitTabPane dijitTabContainerTop-child dijitTabContainerTop-dijitBorderContainer dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="dijitBorderContainer dijitContainer dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="dijitBorderContainer dijitContainer dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="dgrid dgrid-grid ui-widget"&gt;
&lt;DIV class="dgrid-header dgrid-header-row ui-widget-header"&gt;n&amp;nbsp; &amp;nbsp; date&lt;BR /&gt;
&lt;DIV class="dgrid-resize-handle resizeNode-1"&gt;1 31AUG2018&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="dgrid-scroller"&gt;
&lt;DIV class="dgrid-content ui-widget-content"&gt;
&lt;DIV class=" dgrid-row ui-state-default dgrid-row-even"&gt;
&lt;P&gt;2 30JUN2018&lt;BR /&gt;3 31MAR2018&lt;BR /&gt;4 31DEC2017&lt;BR /&gt;5 30SEP2017&lt;BR /&gt;6 30JUN2017&lt;BR /&gt;7 31MAR2017&lt;/P&gt;
&lt;P&gt;proc sql noprint;/*assign macro variable as_of_date*/&lt;BR /&gt;select catx('', quote(put(date, date9.)), 'd'),catx('', quote(put(date, date9.)), 'd'),n&lt;BR /&gt;into :dates1-,&lt;BR /&gt;:as_of_date separated by ',',&lt;BR /&gt;:n1-&lt;BR /&gt;from z;&lt;BR /&gt;%let n=&amp;amp;n;&lt;BR /&gt;%let as_of_date=(&amp;amp;as_of_date);&lt;BR /&gt;%let dates=&amp;amp;dates;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to assign last obs n=7, date=&lt;SPAN&gt;31MAR2017. since last n will change, it's not a fix number, it can be any number, this example gives last n=7. So how can I assign last n return to corresponding date??&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thanks!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 24 Oct 2018 16:35:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507229#M136104</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-10-24T16:35:29Z</dc:date>
    </item>
    <item>
      <title>Re: assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507230#M136105</link>
      <description>&lt;P&gt;You could separate the n/as of date from the other date query as&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;select n, date&lt;BR /&gt;into :n, :as_of_date&lt;BR /&gt;from z &lt;BR /&gt;where n = (select max(n) from z);&lt;/P&gt;</description>
      <pubDate>Wed, 24 Oct 2018 16:41:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507230#M136105</guid>
      <dc:creator>DBailey</dc:creator>
      <dc:date>2018-10-24T16:41:00Z</dc:date>
    </item>
    <item>
      <title>Re: assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507241#M136115</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
informat ID 8. date date9.;
input ID date;
cards;
1 31AUG2018 
2 30JUN2018
3 31MAR2018
4 31DEC2017
5 30SEP2017
6 30JUN2017
7 31MAR2017
;
run;

data want;
set have end=eof;
call symputx(catt('dates', put(_n_, 8. -l)), catt(quote(put(date, date9.)), 'd'));
if eof then do;
call symputx('n', put(_n_, 8. -l));
call symputx('as_of_date', catt(quote(put(date, date9.)), 'd'));
end;
run;

%put &amp;amp;dates1.;
%put &amp;amp;dates7.;
%put &amp;amp;n.;
%put &amp;amp;as_of_date.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;Full data step approach&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/215650"&gt;@jojozheng&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a dataset like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="dijitBorderContainer dijitContainer row-fluid dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="dijitBorderContainer dijitContainer row-fluid dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="tabs dijitBorderContainer dijitContainer sasStudioTabsParentContainer dijitLayoutContainer dojoDndContainerOver dojoDndSource dojoDndTarget"&gt;
&lt;DIV class="dijitTabContainer dijitTabContainerTop dijitContainer dijitLayoutContainer tabStrip-disabled sasStudioTabsTabContainer sasStudioTabsTabContainerVertical sasStudioTabsTop dijitBorderContainer-child dijitBorderContainer-dijitTabContainerTop dijitBorderContainerPane dijitAlignCenter"&gt;
&lt;DIV class="dijitTabPaneWrapper dijitTabContainerTop-container dijitAlignCenter"&gt;
&lt;DIV class="dijitTabContainerTopChildWrapper dijitVisible"&gt;
&lt;DIV class="dijitBorderContainer dijitContainer sasStudioTabsTabContainerChild dijitTabPane dijitTabContainerTop-child dijitTabContainerTop-dijitBorderContainer dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="dijitBorderContainer dijitContainer dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="dijitBorderContainer dijitContainer dijitLayoutContainer"&gt;
&lt;DIV class="dijitContentPane dijitBorderContainer-child dijitBorderContainer-dijitContentPane dijitBorderContainerPane dijitAlignCenter dijitContentPaneSingleChild"&gt;
&lt;DIV class="dgrid dgrid-grid ui-widget"&gt;
&lt;DIV class="dgrid-header dgrid-header-row ui-widget-header"&gt;n&amp;nbsp; &amp;nbsp; date&lt;BR /&gt;
&lt;DIV class="dgrid-resize-handle resizeNode-1"&gt;1 31AUG2018&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="dgrid-scroller"&gt;
&lt;DIV class="dgrid-content ui-widget-content"&gt;
&lt;DIV class=" dgrid-row ui-state-default dgrid-row-even"&gt;
&lt;P&gt;2 30JUN2018&lt;BR /&gt;3 31MAR2018&lt;BR /&gt;4 31DEC2017&lt;BR /&gt;5 30SEP2017&lt;BR /&gt;6 30JUN2017&lt;BR /&gt;7 31MAR2017&lt;/P&gt;
&lt;P&gt;proc sql noprint;/*assign macro variable as_of_date*/&lt;BR /&gt;select catx('', quote(put(date, date9.)), 'd'),catx('', quote(put(date, date9.)), 'd'),n&lt;BR /&gt;into :dates1-,&lt;BR /&gt;:as_of_date separated by ',',&lt;BR /&gt;:n1-&lt;BR /&gt;from z;&lt;BR /&gt;%let n=&amp;amp;n;&lt;BR /&gt;%let as_of_date=(&amp;amp;as_of_date);&lt;BR /&gt;%let dates=&amp;amp;dates;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to assign last obs n=7, date=&lt;SPAN&gt;31MAR2017. since last n will change, it's not a fix number, it can be any number, this example gives last n=7. So how can I assign last n return to corresponding date??&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thanks!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 24 Oct 2018 17:16:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507241#M136115</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-10-24T17:16:11Z</dc:date>
    </item>
    <item>
      <title>Re: assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507255#M136126</link>
      <description>&lt;P&gt;If you just need to access the last obs you can point to it directly.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;34   data _null_;
35      set have point=nobs nobs=nobs;
36      put _all_;
37      stop;
38      run;

nobs=7 ID=7 date=31MAR2017 _ERROR_=0 _N_=1
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Deleted records disclaimer given.&lt;/P&gt;</description>
      <pubDate>Wed, 24 Oct 2018 17:50:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507255#M136126</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2018-10-24T17:50:15Z</dc:date>
    </item>
    <item>
      <title>Re: assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507258#M136129</link>
      <description>Agreed, except OP also wants a macro variable for each obs.</description>
      <pubDate>Wed, 24 Oct 2018 17:56:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507258#M136129</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-10-24T17:56:25Z</dc:date>
    </item>
    <item>
      <title>Re: assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507683#M136289</link>
      <description>&lt;P&gt;I am not quite sure that I understand your requirements, but from your code it looks like you are trying to do something like this:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
  select n,date into :n1-:n999,:date1-:date999
  from have
  order by n;
quit;

%let last=&amp;amp;sqlobs;
%let last_n=&amp;amp;&amp;amp;n&amp;amp;last;
%let as_of_date=&amp;amp;&amp;amp;date&amp;amp;last;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 26 Oct 2018 09:41:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/507683#M136289</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2018-10-26T09:41:37Z</dc:date>
    </item>
    <item>
      <title>Re: assign last obs using macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/508364#M136530</link>
      <description>thank you ! it works!</description>
      <pubDate>Mon, 29 Oct 2018 14:59:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-last-obs-using-macro/m-p/508364#M136530</guid>
      <dc:creator>jojozheng</dc:creator>
      <dc:date>2018-10-29T14:59:40Z</dc:date>
    </item>
  </channel>
</rss>

