<?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 Compare between rows to output all or nothing in the block of observations. Can this be done in SAS? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Compare-between-rows-to-output-all-or-nothing-in-the-block-of/m-p/375825#M90139</link>
    <description>&lt;P&gt;Hi everyone,&lt;/P&gt;
&lt;P&gt;Here's a sample&amp;nbsp;dataset.&lt;/P&gt;
&lt;TABLE width="353"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;Obs&lt;/TD&gt;
&lt;TD width="87"&gt;SeqNum&lt;/TD&gt;
&lt;TD width="67"&gt;Amount&lt;/TD&gt;
&lt;TD width="68"&gt;NegSign&lt;/TD&gt;
&lt;TD width="84"&gt;CES_APPL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10400&lt;/TD&gt;
&lt;TD width="87"&gt;1700553755&lt;/TD&gt;
&lt;TD width="67"&gt;1035 72&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;FCD&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10401&lt;/TD&gt;
&lt;TD width="87"&gt;1700553756&lt;/TD&gt;
&lt;TD width="67"&gt;53760 90&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10402&lt;/TD&gt;
&lt;TD width="87"&gt;1700553757&lt;/TD&gt;
&lt;TD width="67"&gt;27746 05&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10403&lt;/TD&gt;
&lt;TD width="87"&gt;1700553758&lt;/TD&gt;
&lt;TD width="67"&gt;65240 21&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;AGL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10404&lt;/TD&gt;
&lt;TD width="87"&gt;1700553759&lt;/TD&gt;
&lt;TD width="67"&gt;5910 97&lt;/TD&gt;
&lt;TD width="68"&gt;-&lt;/TD&gt;
&lt;TD width="84"&gt;ABC&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10405&lt;/TD&gt;
&lt;TD width="87"&gt;1700553760&lt;/TD&gt;
&lt;TD width="67"&gt;91130 71&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;FCD&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10406&lt;/TD&gt;
&lt;TD width="87"&gt;1700553761&lt;/TD&gt;
&lt;TD width="67"&gt;10888 23&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10407&lt;/TD&gt;
&lt;TD width="87"&gt;1700553762&lt;/TD&gt;
&lt;TD width="67"&gt;2622 13&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10408&lt;/TD&gt;
&lt;TD width="87"&gt;1700553763&lt;/TD&gt;
&lt;TD width="67"&gt;124066 24&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10409&lt;/TD&gt;
&lt;TD width="87"&gt;1700553764&lt;/TD&gt;
&lt;TD width="67"&gt;7067 77&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10410&lt;/TD&gt;
&lt;TD width="87"&gt;1700553765&lt;/TD&gt;
&lt;TD width="67"&gt;40 21&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10411&lt;/TD&gt;
&lt;TD width="87"&gt;1700553766&lt;/TD&gt;
&lt;TD width="67"&gt;5831 73&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10412&lt;/TD&gt;
&lt;TD width="87"&gt;1700553767&lt;/TD&gt;
&lt;TD width="67"&gt;1030 98&lt;/TD&gt;
&lt;TD width="68"&gt;-&lt;/TD&gt;
&lt;TD width="84"&gt;AGL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10413&lt;/TD&gt;
&lt;TD width="87"&gt;1700553768&lt;/TD&gt;
&lt;TD width="67"&gt;43648 52&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10414&lt;/TD&gt;
&lt;TD width="87"&gt;1700553769&lt;/TD&gt;
&lt;TD width="67"&gt;18695 12&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;FCD&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10415&lt;/TD&gt;
&lt;TD width="87"&gt;1700553770&lt;/TD&gt;
&lt;TD width="67"&gt;9439 83&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;XYZ&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10416&lt;/TD&gt;
&lt;TD width="87"&gt;1700553771&lt;/TD&gt;
&lt;TD width="67"&gt;12219 36&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10417&lt;/TD&gt;
&lt;TD width="87"&gt;1700553772&lt;/TD&gt;
&lt;TD width="67"&gt;7256 50&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10418&lt;/TD&gt;
&lt;TD width="87"&gt;1700553773&lt;/TD&gt;
&lt;TD width="67"&gt;40698 54&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10419&lt;/TD&gt;
&lt;TD width="87"&gt;1700553774&lt;/TD&gt;
&lt;TD width="67"&gt;16211 15&lt;/TD&gt;
&lt;TD width="68"&gt;-&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10420&lt;/TD&gt;
&lt;TD width="87"&gt;1700553775&lt;/TD&gt;
&lt;TD width="67"&gt;600 00&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10421&lt;/TD&gt;
&lt;TD width="87"&gt;1700553776&lt;/TD&gt;
&lt;TD width="67"&gt;53760 90&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&lt;BR /&gt;I'd like to output some rows which meet the following logic (in this case,&amp;nbsp;obs#10404 through obs#10411) :&lt;/P&gt;
&lt;P&gt;(1) The first row to output: If NegSign = (-) and&amp;nbsp;CES_APPL = ABC or AGL&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(2) And then ALL following rows:&amp;nbsp;&lt;SPAN&gt;CES_APPL = DDA or FCD. If it contains something else other than these 2 codes, don't output the whole chunk.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;For example:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-Obs#10400 through obs#10403 will NOT be outpout since there is no starting row with NegSign = (-).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-Obs#10404 through obs#10411 will be OUTPUT&amp;nbsp;since obs#10404 NegSign=(-) and CES_APPL = ABC, and then ALL the following rows CES_APPL = DDA or FCD.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-However, obs#10412 through obs#10418 will NOT be output even though obs#10412 NegSign = (-) and CES_APPL = AGL, but one of the following rows (obs#10415) CES_APPL = XYZ. Not ALL CES_APPL = DDA or FCD. It has to be ALL or NOTHING within the block.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-Obs#10419 through obs#10421 will NOT be output since obs#10419 NegSign = (-), but CES_APPL ≠ ABC or AGL.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;So, my idea is to mark the starting row which meet the criteria (NegSign = (-) and CES_APPL = ABC or AGL.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Then, check criteria (2) for the next row only if (1) is met. Then output, otherwise, don't output.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Stop when the next row NegSign = (-), then go back to check (1) again.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I use Base SAS 9.4.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I'm not sure this logic could be done in SAS or not. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Any help would be greatly appreciated.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Jeff&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 13 Jul 2017 20:27:36 GMT</pubDate>
    <dc:creator>Teslator</dc:creator>
    <dc:date>2017-07-13T20:27:36Z</dc:date>
    <item>
      <title>Compare between rows to output all or nothing in the block of observations. Can this be done in SAS?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-between-rows-to-output-all-or-nothing-in-the-block-of/m-p/375825#M90139</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;
&lt;P&gt;Here's a sample&amp;nbsp;dataset.&lt;/P&gt;
&lt;TABLE width="353"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;Obs&lt;/TD&gt;
&lt;TD width="87"&gt;SeqNum&lt;/TD&gt;
&lt;TD width="67"&gt;Amount&lt;/TD&gt;
&lt;TD width="68"&gt;NegSign&lt;/TD&gt;
&lt;TD width="84"&gt;CES_APPL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10400&lt;/TD&gt;
&lt;TD width="87"&gt;1700553755&lt;/TD&gt;
&lt;TD width="67"&gt;1035 72&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;FCD&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10401&lt;/TD&gt;
&lt;TD width="87"&gt;1700553756&lt;/TD&gt;
&lt;TD width="67"&gt;53760 90&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10402&lt;/TD&gt;
&lt;TD width="87"&gt;1700553757&lt;/TD&gt;
&lt;TD width="67"&gt;27746 05&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10403&lt;/TD&gt;
&lt;TD width="87"&gt;1700553758&lt;/TD&gt;
&lt;TD width="67"&gt;65240 21&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;AGL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10404&lt;/TD&gt;
&lt;TD width="87"&gt;1700553759&lt;/TD&gt;
&lt;TD width="67"&gt;5910 97&lt;/TD&gt;
&lt;TD width="68"&gt;-&lt;/TD&gt;
&lt;TD width="84"&gt;ABC&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10405&lt;/TD&gt;
&lt;TD width="87"&gt;1700553760&lt;/TD&gt;
&lt;TD width="67"&gt;91130 71&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;FCD&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10406&lt;/TD&gt;
&lt;TD width="87"&gt;1700553761&lt;/TD&gt;
&lt;TD width="67"&gt;10888 23&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10407&lt;/TD&gt;
&lt;TD width="87"&gt;1700553762&lt;/TD&gt;
&lt;TD width="67"&gt;2622 13&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10408&lt;/TD&gt;
&lt;TD width="87"&gt;1700553763&lt;/TD&gt;
&lt;TD width="67"&gt;124066 24&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10409&lt;/TD&gt;
&lt;TD width="87"&gt;1700553764&lt;/TD&gt;
&lt;TD width="67"&gt;7067 77&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10410&lt;/TD&gt;
&lt;TD width="87"&gt;1700553765&lt;/TD&gt;
&lt;TD width="67"&gt;40 21&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10411&lt;/TD&gt;
&lt;TD width="87"&gt;1700553766&lt;/TD&gt;
&lt;TD width="67"&gt;5831 73&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10412&lt;/TD&gt;
&lt;TD width="87"&gt;1700553767&lt;/TD&gt;
&lt;TD width="67"&gt;1030 98&lt;/TD&gt;
&lt;TD width="68"&gt;-&lt;/TD&gt;
&lt;TD width="84"&gt;AGL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10413&lt;/TD&gt;
&lt;TD width="87"&gt;1700553768&lt;/TD&gt;
&lt;TD width="67"&gt;43648 52&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10414&lt;/TD&gt;
&lt;TD width="87"&gt;1700553769&lt;/TD&gt;
&lt;TD width="67"&gt;18695 12&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;FCD&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10415&lt;/TD&gt;
&lt;TD width="87"&gt;1700553770&lt;/TD&gt;
&lt;TD width="67"&gt;9439 83&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;XYZ&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10416&lt;/TD&gt;
&lt;TD width="87"&gt;1700553771&lt;/TD&gt;
&lt;TD width="67"&gt;12219 36&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10417&lt;/TD&gt;
&lt;TD width="87"&gt;1700553772&lt;/TD&gt;
&lt;TD width="67"&gt;7256 50&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10418&lt;/TD&gt;
&lt;TD width="87"&gt;1700553773&lt;/TD&gt;
&lt;TD width="67"&gt;40698 54&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10419&lt;/TD&gt;
&lt;TD width="87"&gt;1700553774&lt;/TD&gt;
&lt;TD width="67"&gt;16211 15&lt;/TD&gt;
&lt;TD width="68"&gt;-&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10420&lt;/TD&gt;
&lt;TD width="87"&gt;1700553775&lt;/TD&gt;
&lt;TD width="67"&gt;600 00&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="47"&gt;10421&lt;/TD&gt;
&lt;TD width="87"&gt;1700553776&lt;/TD&gt;
&lt;TD width="67"&gt;53760 90&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="84"&gt;DDA&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&lt;BR /&gt;I'd like to output some rows which meet the following logic (in this case,&amp;nbsp;obs#10404 through obs#10411) :&lt;/P&gt;
&lt;P&gt;(1) The first row to output: If NegSign = (-) and&amp;nbsp;CES_APPL = ABC or AGL&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(2) And then ALL following rows:&amp;nbsp;&lt;SPAN&gt;CES_APPL = DDA or FCD. If it contains something else other than these 2 codes, don't output the whole chunk.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;For example:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-Obs#10400 through obs#10403 will NOT be outpout since there is no starting row with NegSign = (-).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-Obs#10404 through obs#10411 will be OUTPUT&amp;nbsp;since obs#10404 NegSign=(-) and CES_APPL = ABC, and then ALL the following rows CES_APPL = DDA or FCD.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-However, obs#10412 through obs#10418 will NOT be output even though obs#10412 NegSign = (-) and CES_APPL = AGL, but one of the following rows (obs#10415) CES_APPL = XYZ. Not ALL CES_APPL = DDA or FCD. It has to be ALL or NOTHING within the block.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-Obs#10419 through obs#10421 will NOT be output since obs#10419 NegSign = (-), but CES_APPL ≠ ABC or AGL.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;So, my idea is to mark the starting row which meet the criteria (NegSign = (-) and CES_APPL = ABC or AGL.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Then, check criteria (2) for the next row only if (1) is met. Then output, otherwise, don't output.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Stop when the next row NegSign = (-), then go back to check (1) again.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I use Base SAS 9.4.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I'm not sure this logic could be done in SAS or not. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Any help would be greatly appreciated.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Jeff&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jul 2017 20:27:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-between-rows-to-output-all-or-nothing-in-the-block-of/m-p/375825#M90139</guid>
      <dc:creator>Teslator</dc:creator>
      <dc:date>2017-07-13T20:27:36Z</dc:date>
    </item>
    <item>
      <title>Re: Compare between rows to output all or nothing in the block of observations. Can this be done in</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-between-rows-to-output-all-or-nothing-in-the-block-of/m-p/375829#M90141</link>
      <description>&lt;P&gt;It helps to make two passes through the data.&amp;nbsp; For example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data pass1;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;if NegSign = '-' then block + 1;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then make a second pass, using BLOCK to determine which observations "belong" together:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;output_flag = 'Y';&lt;/P&gt;
&lt;P&gt;do until (last.block);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set pass1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; by block;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.block then do;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if NegSign = ' ' then output_flag = 'N';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if CES_APPL not in ('ABC', 'AGL') then output_flag = 'N';&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; else if CES_APPL not in ('DDA', 'FCD') then output_flag = 'N';&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;do until (last.block);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set pass1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; by block;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if output_flag = 'Y' then output;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;drop output_flag block;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jul 2017 20:46:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-between-rows-to-output-all-or-nothing-in-the-block-of/m-p/375829#M90141</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-07-13T20:46:46Z</dc:date>
    </item>
    <item>
      <title>Re: Compare between rows to output all or nothing in the block of observations. Can this be done in</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-between-rows-to-output-all-or-nothing-in-the-block-of/m-p/376598#M90410</link>
      <description>&lt;P&gt;Thanks so much, Astounding. It works perfectly ^_^&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jul 2017 15:07:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-between-rows-to-output-all-or-nothing-in-the-block-of/m-p/376598#M90410</guid>
      <dc:creator>Teslator</dc:creator>
      <dc:date>2017-07-17T15:07:50Z</dc:date>
    </item>
  </channel>
</rss>

