<?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: My code &amp;quot;p=max() to min()&amp;quot; does not provide repeated overlaps, which I want to get in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800996#M315201</link>
    <description>Oh, hi, Ballardw, &lt;BR /&gt;&lt;BR /&gt;Thank you for your codes. I will keep them and use them for a future research. &lt;BR /&gt;I wish you a very good week! &lt;BR /&gt;&lt;BR /&gt;KS -,</description>
    <pubDate>Wed, 09 Mar 2022 05:10:38 GMT</pubDate>
    <dc:creator>KS99</dc:creator>
    <dc:date>2022-03-09T05:10:38Z</dc:date>
    <item>
      <title>My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800750#M315059</link>
      <description>&lt;P&gt;Hi, SAS Community,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am sorry if I am bothering you guys with many questions today.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But your help is much more effective than my own creation of hours and hours.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am dealing with a large dataset of&amp;nbsp;US daily stock returns. A variable "Trading Day" indicates specific days in which firm insiders traded their stocks.&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="188"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="57px"&gt;DATE&lt;/TD&gt;
&lt;TD width="82.1763px" height="57px"&gt;CUSIP&lt;/TD&gt;
&lt;TD width="64.6429px" height="57px"&gt;Trading Day&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;9/21/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;9/24/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;9/25/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;9/26/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;9/27/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;9/28/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/1/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/2/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/3/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/4/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/5/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="36px"&gt;10/8/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="36px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="36px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/9/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/10/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/11/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/12/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/15/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/16/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/17/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/18/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/19/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/22/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/23/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/24/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/25/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/26/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/29/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/30/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="91.0603px" height="30px"&gt;10/31/1990&lt;/TD&gt;
&lt;TD width="82.1763px" height="30px"&gt;00002130&lt;/TD&gt;
&lt;TD width="64.6429px" height="30px"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="3" width="237.879px" height="30px"&gt;…......&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now, I want to extract days +2 to +22 from the specific date Trading Day=1 (when insiders traded). For this, I used the following codes:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Temp; 
set Us_stock; 
BY CUSIP; 
if TradingDay&amp;gt;. then do p=max(_n_+2,1,p+1) to min(_n_+22,nobs);&amp;nbsp;
        set Us_stock point=p nobs=nobs; 
        output; 
end; 
run;&amp;nbsp;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But what I obtained is the following:&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="200"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="77"&gt;DATE&lt;/TD&gt;
&lt;TD width="63"&gt;CUSIP&lt;/TD&gt;
&lt;TD width="60"&gt;Cluster&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;9/28/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/1/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/2/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/3/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/4/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/5/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/8/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/9/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/10/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/11/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/12/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/15/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/16/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/17/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/18/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/19/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/22/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/23/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/24/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/25/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/26/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10/30/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11/1/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11/2/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11/5/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11/6/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11/7/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11/8/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11/9/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11/12/1990&lt;/TD&gt;
&lt;TD&gt;00002130&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="3"&gt;…......&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Never mind the variable "Cluster." I created it to do proc means by group.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For the trading day 09/26/1990 (Cusip: 00002130), I have successfully extracted the days from&amp;nbsp;09/28/1990 to 10/26/1990. And, for the next trade on 09/28/1990, I am supposed to have&amp;nbsp;10/02/1990 to&amp;nbsp;10/30/1990. However, my codes is giving me something else, from&amp;nbsp;10/30/1990 ~. How should I get out of this? Should I abandon&amp;nbsp;"p=max() to min()"?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Many thanks in advance!!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sincerely,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;KS -,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Mar 2022 02:01:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800750#M315059</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-08T02:01:38Z</dc:date>
    </item>
    <item>
      <title>Re: My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800754#M315062</link>
      <description>&lt;P&gt;You have not provided any example of Us_stock_1, no example data step code for the one you do show (here's one)&lt;/P&gt;
&lt;PRE&gt;data us_stock;
   infile datalines missover;
   input DATE:mmddyy10. 	CUSIP $ 	TradingDay;&lt;BR /&gt;   format date mmddyy10.; 
datalines;
9/21/1990 	00002130 	 
9/24/1990 	00002130 	 
9/25/1990 	00002130 	 
9/26/1990 	00002130 	1
9/27/1990 	00002130 	 
9/28/1990 	00002130 	1
10/1/1990 	00002130 	 
10/2/1990 	00002130 	 
10/3/1990 	00002130 	 
10/4/1990 	00002130 	 
10/5/1990 	00002130 	 
10/8/1990 	00002130 	 
10/9/1990 	00002130 	 
10/10/1990 	00002130 	 
10/11/1990 	00002130 	 
10/12/1990 	00002130 	 
10/15/1990 	00002130 	 
10/16/1990 	00002130 	 
10/17/1990 	00002130 	 
10/18/1990 	00002130 	1
10/19/1990 	00002130 	 
10/22/1990 	00002130 	1
10/23/1990 	00002130 	1
10/24/1990 	00002130 	 
10/25/1990 	00002130 	 
10/26/1990 	00002130 	1
10/29/1990 	00002130 	 
10/30/1990 	00002130 	1
10/31/1990 	00002130 	1
;
&lt;/PRE&gt;
&lt;P&gt;so without the Us_stock_1 there isn't really any way to test this code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would expect some problem if you expect sequential records (from the _n_) to match dates of trading activity as I understand there are many days without trading. The way you show your TradingDay variable it appears that you are asking for many overlaps and that might be an issue. I also don't see any actual attempt to use the BY Cuspid (has to be a dental joke in there somewhere). So perhaps that is an issue with resetting P at some point but I haven't a clue what as I'm not sure I understand this process to begin with.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Mar 2022 00:12:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800754#M315062</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2022-03-08T00:12:59Z</dc:date>
    </item>
    <item>
      <title>Re: My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800755#M315063</link>
      <description>&lt;P&gt;Thank you, Ballardw,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It was my mistake.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Us_stock_1 is actually&amp;nbsp;Us_stock.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I revised it.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Mar 2022 00:33:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800755#M315063</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-08T00:33:25Z</dc:date>
    </item>
    <item>
      <title>Re: My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800781#M315078</link>
      <description>&lt;P&gt;So you want to convert 1 observation into 21 observations?&lt;/P&gt;
&lt;P&gt;You do realize that means some of the observations will be output more than once. Unless that is a large gap between records with TRADING_DAY=1.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What is the variable that will indicate which block/period/group those 21 observations belong to?&amp;nbsp; You don't seem to have created one and you cannot use any of the existing variables since they will get overwritten when you run the SET POINT= statement in the loop.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What are you going to do with these groups of 21 observations once you have them?&lt;/P&gt;</description>
      <pubDate>Tue, 08 Mar 2022 03:35:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800781#M315078</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-03-08T03:35:23Z</dc:date>
    </item>
    <item>
      <title>Re: My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800788#M315083</link>
      <description>&lt;P&gt;So I would recommend first finding the first/last point= value for each CUSIP.&lt;/P&gt;
&lt;P&gt;Then you can use those in your calculations of the range of observations to replicated.&lt;/P&gt;
&lt;P&gt;You probably also want to keep something to indicate which particular "trade day" you results are for.&lt;/P&gt;
&lt;P&gt;First let's adjust your data to have more than one CUSIP value.&amp;nbsp; I also shortened you "TRADE DAY" column header into use DAY for the variable name.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile cards truncover;
  input DATE :mmddyy. CUSIP $ Day ;
  format date date9.;
cards;
9/21/1990 00002130  
9/24/1990 00002130  
9/25/1990 00002130  
9/26/1990 00002130 1
9/27/1990 00002130  
9/28/1990 00002130 1
10/1/1990 00002130  
10/2/1990 00002130  
10/3/1990 00002130  
10/4/1990 00002130  
10/5/1990 00002130  
10/8/1990 00002130  
10/9/1990 00002130  
10/10/1990 00002130  
10/11/1990 00002130  
10/12/1990 00002130  
10/15/1990 00002130  
10/16/1990 00002130  
10/17/1990 00002130  
10/18/1990 00002130 1
10/19/1990 00002130  
10/22/1990 00002130 1
10/23/1990 00002130 1
10/24/1990 AAAAAAAA
10/25/1990 AAAAAAAA  
10/26/1990 AAAAAAAA 1
10/29/1990 AAAAAAAA  
10/30/1990 AAAAAAAA 1
10/31/1990 AAAAAAAA 1
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now we can use a double DOW loop.&amp;nbsp; The first will find the start and stop record number (point= values) for each CUSIP.&amp;nbsp; Then the second will look for the DAY=1 records and then output multiple observations relative to that date.&amp;nbsp; I used a range of 5 observations from -2 to +2 just for illustration.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data want;
* find first/last obs for CUSIP ;
  start=stop+1;
  retain stop 0;
do stop=stop+1 by 1 until(last.cusip);
  set have end=eof nobs=nobs;
  by cusip;
end;
put (_n_ nobs cusip start stop ) (=);
* Look for trading days ;
tradeno=0;
do obs=start to stop;
  set have;
  if day=1 then do;
    tradeno+1;
    tradedate=date;
    format tradedate date9.;
    do p=max(obs-2,start) to min(obs+2,stop);
      offset=p-obs;
      set have point=p;
      output;
    end;
  end;
end;
run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Results:&lt;/P&gt;
&lt;PRE&gt;Obs    start    stop         DATE     CUSIP      Day    tradeno    obs    tradedate    offset

  1       1      23     24SEP1990    00002130     .        1         4    26SEP1990      -2
  2       1      23     25SEP1990    00002130     .        1         4    26SEP1990      -1
  3       1      23     26SEP1990    00002130     1        1         4    26SEP1990       0
  4       1      23     27SEP1990    00002130     .        1         4    26SEP1990       1
  5       1      23     28SEP1990    00002130     1        1         4    26SEP1990       2
  6       1      23     26SEP1990    00002130     1        2         6    28SEP1990      -2
  7       1      23     27SEP1990    00002130     .        2         6    28SEP1990      -1
  8       1      23     28SEP1990    00002130     1        2         6    28SEP1990       0
  9       1      23     01OCT1990    00002130     .        2         6    28SEP1990       1
 10       1      23     02OCT1990    00002130     .        2         6    28SEP1990       2
 11       1      23     16OCT1990    00002130     .        3        20    18OCT1990      -2
 12       1      23     17OCT1990    00002130     .        3        20    18OCT1990      -1
 13       1      23     18OCT1990    00002130     1        3        20    18OCT1990       0
 14       1      23     19OCT1990    00002130     .        3        20    18OCT1990       1
 15       1      23     22OCT1990    00002130     1        3        20    18OCT1990       2
 16       1      23     18OCT1990    00002130     1        4        22    22OCT1990      -2
 17       1      23     19OCT1990    00002130     .        4        22    22OCT1990      -1
 18       1      23     22OCT1990    00002130     1        4        22    22OCT1990       0
 19       1      23     23OCT1990    00002130     1        4        22    22OCT1990       1
 20       1      23     19OCT1990    00002130     .        5        23    23OCT1990      -2
 21       1      23     22OCT1990    00002130     1        5        23    23OCT1990      -1
 22       1      23     23OCT1990    00002130     1        5        23    23OCT1990       0
 23      24      29     24OCT1990    AAAAAAAA     .        1        26    26OCT1990      -2
 24      24      29     25OCT1990    AAAAAAAA     .        1        26    26OCT1990      -1
 25      24      29     26OCT1990    AAAAAAAA     1        1        26    26OCT1990       0
 26      24      29     29OCT1990    AAAAAAAA     .        1        26    26OCT1990       1
 27      24      29     30OCT1990    AAAAAAAA     1        1        26    26OCT1990       2
 28      24      29     26OCT1990    AAAAAAAA     1        2        28    30OCT1990      -2
 29      24      29     29OCT1990    AAAAAAAA     .        2        28    30OCT1990      -1
 30      24      29     30OCT1990    AAAAAAAA     1        2        28    30OCT1990       0
 31      24      29     31OCT1990    AAAAAAAA     1        2        28    30OCT1990       1
 32      24      29     29OCT1990    AAAAAAAA     .        3        29    31OCT1990      -2
 33      24      29     30OCT1990    AAAAAAAA     1        3        29    31OCT1990      -1
 34      24      29     31OCT1990    AAAAAAAA     1        3        29    31OCT1990       0
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Mar 2022 04:13:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800788#M315083</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-03-08T04:13:43Z</dc:date>
    </item>
    <item>
      <title>Re: My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800874#M315124</link>
      <description>&lt;P&gt;Maybe something like this? Which identifies the "groups" and creates separate output groups for each including overlaps. Start data set is small and has no output data for some of the groups because no dates exist for given cusip.&lt;/P&gt;
&lt;PRE&gt;data have;
  infile cards truncover;
  input DATE :mmddyy. CUSIP $ Day ;
  format date date9.;
cards;
9/21/1990 00002130  
9/24/1990 00002130  
9/25/1990 00002130  
9/26/1990 00002130 1
9/27/1990 00002130  
9/28/1990 00002130 1
10/1/1990 00002130  
10/2/1990 00002130  
10/3/1990 00002130  
10/4/1990 00002130  
10/5/1990 00002130  
10/8/1990 00002130  
10/9/1990 00002130  
10/10/1990 00002130  
10/11/1990 00002130  
10/12/1990 00002130  
10/15/1990 00002130  
10/16/1990 00002130  
10/17/1990 00002130  
10/18/1990 00002130 1
10/19/1990 00002130  
10/22/1990 00002130 1
10/23/1990 00002130 1
10/24/1990 AAAAAAAA
10/25/1990 AAAAAAAA  
10/26/1990 AAAAAAAA 1
10/29/1990 AAAAAAAA  
10/30/1990 AAAAAAAA 1
10/31/1990 AAAAAAAA 1
;

data helper;
   set have;
   by cusip;
   if first.cusip then call missing(group);
   if day then do;
      startdate = date+2;
      enddate   = date+22;
      group+1;
      output;
   end;
   format startdate enddate date9.;
run;


proc sql;
   create table want as 
   select b.date, b.cusip, a.group
   from helper as a
        left join
        have as b
        on a.cusip=b.cusip
  where a.startdate le b.date le a.enddate
  order by b.cusip,a.group,b.date
  ;
quit;&lt;/PRE&gt;</description>
      <pubDate>Tue, 08 Mar 2022 15:52:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800874#M315124</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2022-03-08T15:52:12Z</dc:date>
    </item>
    <item>
      <title>Re: My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800985#M315194</link>
      <description>Hi, Tom, &lt;BR /&gt;Sorry for my late reply. &lt;BR /&gt;Once I get 21 observations, I was going to calculate the means of them for each Cusip-Cluster. &lt;BR /&gt;&lt;BR /&gt;KS -, &lt;BR /&gt;</description>
      <pubDate>Wed, 09 Mar 2022 03:48:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800985#M315194</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-09T03:48:36Z</dc:date>
    </item>
    <item>
      <title>Re: My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800986#M315195</link>
      <description>&lt;P&gt;Dear Tom,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Furthermore: I applied your codes created above, and they worked more than perfectly!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I applied them to my subsequent analysis also, and they work still more than perfectly and robustly!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for helping me with this.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I really appreciate your help-out, and&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I wish you a very good night!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sincerely,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;KS -,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 09 Mar 2022 03:54:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800986#M315195</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-09T03:54:35Z</dc:date>
    </item>
    <item>
      <title>Re: My code "p=max() to min()" does not provide repeated overlaps, which I want to get</title>
      <link>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800996#M315201</link>
      <description>Oh, hi, Ballardw, &lt;BR /&gt;&lt;BR /&gt;Thank you for your codes. I will keep them and use them for a future research. &lt;BR /&gt;I wish you a very good week! &lt;BR /&gt;&lt;BR /&gt;KS -,</description>
      <pubDate>Wed, 09 Mar 2022 05:10:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/My-code-quot-p-max-to-min-quot-does-not-provide-repeated/m-p/800996#M315201</guid>
      <dc:creator>KS99</dc:creator>
      <dc:date>2022-03-09T05:10:38Z</dc:date>
    </item>
  </channel>
</rss>

