<?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: Arrays - Nested do loops to compare two rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357622#M83996</link>
    <description>&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;. Hello - I have the data step format listed, its below the question and display.</description>
    <pubDate>Wed, 10 May 2017 18:17:22 GMT</pubDate>
    <dc:creator>tobyfarms</dc:creator>
    <dc:date>2017-05-10T18:17:22Z</dc:date>
    <item>
      <title>Arrays - Nested do loops to compare two rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357613#M83989</link>
      <description>&lt;P&gt;Hello.&lt;/P&gt;&lt;P&gt;&amp;nbsp; I have a dataset where each row is different but has a matching date/city/state.&amp;nbsp; 2 rows per for each date (1 sunrise &amp;amp; 1 sunset).&amp;nbsp; I am trying to create by-hour calculations for sunrise and sunset over the course of a 24hr period. The current code runs but what I &lt;EM&gt;now&lt;/EM&gt; need is to have the 'sunset' factor begin where the sunrise ends.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;state&lt;/TD&gt;&lt;TD&gt;city&lt;/TD&gt;&lt;TD&gt;fmtname&lt;/TD&gt;&lt;TD&gt;start&lt;/TD&gt;&lt;TD&gt;label&lt;/TD&gt;&lt;TD&gt;hour2&lt;/TD&gt;&lt;TD&gt;minute&lt;/TD&gt;&lt;TD&gt;hour_0&lt;/TD&gt;&lt;TD&gt;hour_1&lt;/TD&gt;&lt;TD&gt;hour_2&lt;/TD&gt;&lt;TD&gt;hour_3&lt;/TD&gt;&lt;TD&gt;hour_4&lt;/TD&gt;&lt;TD&gt;hour_5&lt;/TD&gt;&lt;TD&gt;hour_6&lt;/TD&gt;&lt;TD&gt;hour_7&lt;/TD&gt;&lt;TD&gt;hour_8&lt;/TD&gt;&lt;TD&gt;hour_9&lt;/TD&gt;&lt;TD&gt;hour_10&lt;/TD&gt;&lt;TD&gt;hour_11&lt;/TD&gt;&lt;TD&gt;hour_12&lt;/TD&gt;&lt;TD&gt;hour_13&lt;/TD&gt;&lt;TD&gt;hour_14&lt;/TD&gt;&lt;TD&gt;hour_15&lt;/TD&gt;&lt;TD&gt;hour_16&lt;/TD&gt;&lt;TD&gt;hour_17&lt;/TD&gt;&lt;TD&gt;hour_18&lt;/TD&gt;&lt;TD&gt;hour_19&lt;/TD&gt;&lt;TD&gt;hour_20&lt;/TD&gt;&lt;TD&gt;hour_21&lt;/TD&gt;&lt;TD&gt;hour_22&lt;/TD&gt;&lt;TD&gt;hour_23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DE&lt;/TD&gt;&lt;TD&gt;Wilmington&lt;/TD&gt;&lt;TD&gt;sunrise&lt;/TD&gt;&lt;TD&gt;06Apr2017&lt;/TD&gt;&lt;TD&gt;05:38&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;38&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;0.633333206&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DE&lt;/TD&gt;&lt;TD&gt;Wilmington&lt;/TD&gt;&lt;TD&gt;sunset&lt;/TD&gt;&lt;TD&gt;06Apr2017&lt;/TD&gt;&lt;TD&gt;18:32&lt;/TD&gt;&lt;TD&gt;18&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;TD&gt;0.533333302&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;**Here is my current code, thanks to &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13868"&gt;@AhmedAl_Attar&lt;/a&gt;.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data want(drop=i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array hours {24} 4 hour_0-hour_23;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;format hour_: BEST8.4;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set all Hours to 0 */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to dim(hours);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hours[i]=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (fmtname='sunrise') then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Assign the Subsequent Hours the factors (minutes/60) */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=(hour+2) to (12+hour-1);&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; hours[i]=minute/60;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (fmtname='sunset') then&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Assign the Hours prior 8:00 am the factors (minutes/60) */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=8 to 1 by -1;&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; hours[i]=minute/60;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Assign the Subsequent Hours the factors (minutes/60) */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=(hour+2) to dim(hours);&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; hours[i]=minute/60;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Wed, 10 May 2017 18:41:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357613#M83989</guid>
      <dc:creator>tobyfarms</dc:creator>
      <dc:date>2017-05-10T18:41:19Z</dc:date>
    </item>
    <item>
      <title>Re: Arrays - Nested do loops to compare two rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357620#M83994</link>
      <description>&lt;P&gt;Please provide data in the form of a data step. Instructions here: &lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-data-AKA-generate/ta-p/258712" target="_blank"&gt;https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-data-AKA-generate/ta-p/258712&lt;/A&gt; will show how to turn an existing SAS data set into data step code that can be pasted into a forum code box using the {i} icon or attached as text to show exactly what you have and that we can test code against.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Many users here don't want to download Excel files because of virus potential, others have such things blocked by security software. Also if you give us Excel we have to create a SAS data set and due to the non-existent constraints on Excel data cells the result we end up with may not have variables of the same type (numeric or character) and even values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It will also help to post what the desired output should look like. I am not real sure if the two rows posted are what you are starting with or not.&lt;/P&gt;</description>
      <pubDate>Wed, 10 May 2017 18:15:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357620#M83994</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2017-05-10T18:15:18Z</dc:date>
    </item>
    <item>
      <title>Re: Arrays - Nested do loops to compare two rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357622#M83996</link>
      <description>&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;. Hello - I have the data step format listed, its below the question and display.</description>
      <pubDate>Wed, 10 May 2017 18:17:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357622#M83996</guid>
      <dc:creator>tobyfarms</dc:creator>
      <dc:date>2017-05-10T18:17:22Z</dc:date>
    </item>
    <item>
      <title>Re: Arrays - Nested do loops to compare two rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357635#M84001</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;&amp;nbsp;I agree with you Sir. First of all, i am too lazy to open attachments no matter how excited i am when there is a prospect for coding. Second of all, If i try to open any external attachment from my corporate environment, it's pretty certain i may have to face severe consequences. So it's best for anybody to post in the form of&lt;STRONG&gt; HAVE&lt;/STRONG&gt; and &lt;STRONG&gt;WANT&lt;/STRONG&gt; not necessarily as a datastep but atleast as clear and smaller lines with a few bullet points explaining the convert logic and requirement.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 10 May 2017 18:33:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/357635#M84001</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-05-10T18:33:46Z</dc:date>
    </item>
    <item>
      <title>Re: Arrays - Nested do loops to compare two rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/358242#M84159</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think this new version of the code, will give you what you are looking for,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA have;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Length&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;state $2&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;city $10&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fmtname $7&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;start 8&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;label $5&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hour 4&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;minute 4;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;INPUT state city fmtname start :date9. label hour minute;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FORMAT start date9. label $5.;&lt;BR /&gt;DATALINES;&lt;BR /&gt;MD Baltimore sunrise 17Jan2017 07:24 7 24&lt;BR /&gt;MD Baltimore sunset 17Jan2017 17:10 17 10&lt;BR /&gt;DE Dover sunrise 13JUL2017 04:47 4 47&lt;BR /&gt;DE Dover sunset 13JUL2017 19:28 19 28&lt;BR /&gt;;&lt;BR /&gt;RUN;&lt;BR /&gt;&lt;BR /&gt;/* Sort the Data in preparation for consalidation into single line per state/city/date */&lt;BR /&gt;PROC SORT data=have out=have_srtd;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;BY state city start label hour;&lt;BR /&gt;RUN;&lt;BR /&gt;&lt;BR /&gt;/* --------------------------------------------------------- */&lt;BR /&gt;/* The step below will:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* - Consolidate data into single record per state/city/date */&lt;BR /&gt;/* - Collect numbers &amp;amp; calculate factor for sunrise &amp;amp; sunset */&lt;BR /&gt;/* - Output a record for sunrise and record for sunset.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* --------------------------------------------------------- */&lt;BR /&gt;DATA want(KEEP=state city fmtname start label hour_:);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ARRAY init_hrs [24] _temporary_ (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LENGTH&amp;nbsp;&amp;nbsp; &amp;nbsp;state $2&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;city $10&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fmtname $7&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;start 8&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;label $5&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hour 4&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;minute 4;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LENGTH &amp;nbsp;&amp;nbsp; &amp;nbsp;sunrise $5 &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sunset $5&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rise_hr 4&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set_hr 4&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rise_min 4&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set_min 4 &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rise_factor 8&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set_factor 8;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ARRAY hours {24} 4 hour_0-hour_23;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FORMAT hour_: BEST8.4;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;RETAIN init_rb8_str hr1_addr sunrise rise_hr set_hr rise_min rise_factor;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;IF (_n_ = 1) THEN&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Get the String representation of the array elements */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;init_rb8_str = put (peekclong (addrlong(init_hrs[1]), 192), $192.);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Get the memory address of the first element of the hours array */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hr1_addr = addrlong(hours[1]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;END;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* - Consolidate data into single record per state/city/date */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* - Collect numbers &amp;amp; calculate factor for sunrise &amp;amp; sunset */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DO UNTIL (last.start);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SET have_srtd;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BY state city start label hour;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (lowcase(fmtname)='sunrise') then&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Process SunRise Time */ &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sunrise = label;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rise_hr&amp;nbsp; = hour; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rise_min = minute;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rise_factor = rise_min/60;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Process SunSet Time */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sunset = label;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set_hr&amp;nbsp; = hour; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set_min = minute;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;set_factor = set_min/60;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;END;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* ---------------------------------------------------- */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* - Output a record for sunrise and record for sunset. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* ---------------------------------------------------- */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* --- Output the SunRise Record --- ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fmtname = 'sunrise';&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;label&amp;nbsp;&amp;nbsp; = sunrise;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Set all Hours to 1 in a single command */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CALL POKELONG (init_rb8_str, hr1_addr, 192);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Assign the SunRise factor hours */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;do i=(rise_hr+2) to (set_hr+1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hours[i]=rise_factor;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;OUTPUT;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* --- Output the SunSet Record --- ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fmtname = 'sunset';&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;label&amp;nbsp;&amp;nbsp; = sunset;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Reset all Hours to 1 in a single command */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CALL POKELONG (init_rb8_str, hr1_addr, 192);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Deals with the hours prior to sunRise */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;do i=1 to (rise_hr+1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hours[i]=set_factor;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Deals with the hours after sunSet */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;do i=(set_hr+2) to dim(hours);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hours[i]=set_factor;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;OUTPUT; &lt;BR /&gt;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="div_bd0fa687-d4e6-43ad-9de6-b99d50fa0055" class="c body"&gt;
&lt;SECTION data-sec-type="proc" data-name="Print"&gt;
&lt;ARTICLE id="IDX"&gt;
&lt;TABLE class="table" style="border-spacing: 0;"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col"&gt;Obs&lt;/TH&gt;
&lt;TH class="header" scope="col"&gt;state&lt;/TH&gt;
&lt;TH class="header" scope="col"&gt;city&lt;/TH&gt;
&lt;TH class="header" scope="col"&gt;fmtname&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;start&lt;/TH&gt;
&lt;TH class="header" scope="col"&gt;label&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_0&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_1&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_2&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_3&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_4&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_5&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_6&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_7&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_8&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_9&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_10&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_11&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_12&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_13&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_14&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_15&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_16&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_17&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_18&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_19&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_20&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_21&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_22&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;hour_23&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;1&lt;/TH&gt;
&lt;TD class="data"&gt;DE&lt;/TD&gt;
&lt;TD class="data"&gt;Dover&lt;/TD&gt;
&lt;TD class="data"&gt;sunrise&lt;/TD&gt;
&lt;TD class="r data"&gt;13JUL2017&lt;/TD&gt;
&lt;TD class="data"&gt;04:47&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;0.783333&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;2&lt;/TH&gt;
&lt;TD class="data"&gt;DE&lt;/TD&gt;
&lt;TD class="data"&gt;Dover&lt;/TD&gt;
&lt;TD class="data"&gt;sunset&lt;/TD&gt;
&lt;TD class="r data"&gt;13JUL2017&lt;/TD&gt;
&lt;TD class="data"&gt;19:28&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;TD class="r data"&gt;0.466666&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;3&lt;/TH&gt;
&lt;TD class="data"&gt;MD&lt;/TD&gt;
&lt;TD class="data"&gt;Baltimore&lt;/TD&gt;
&lt;TD class="data"&gt;sunrise&lt;/TD&gt;
&lt;TD class="r data"&gt;17JAN2017&lt;/TD&gt;
&lt;TD class="data"&gt;07:24&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r rowheader" scope="row"&gt;4&lt;/TH&gt;
&lt;TD class="data"&gt;MD&lt;/TD&gt;
&lt;TD class="data"&gt;Baltimore&lt;/TD&gt;
&lt;TD class="data"&gt;sunset&lt;/TD&gt;
&lt;TD class="r data"&gt;17JAN2017&lt;/TD&gt;
&lt;TD class="data"&gt;17:10&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;TD class="r data"&gt;0.166667&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/ARTICLE&gt;
&lt;/SECTION&gt;
&lt;/DIV&gt;</description>
      <pubDate>Fri, 12 May 2017 14:19:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Arrays-Nested-do-loops-to-compare-two-rows/m-p/358242#M84159</guid>
      <dc:creator>AhmedAl_Attar</dc:creator>
      <dc:date>2017-05-12T14:19:22Z</dc:date>
    </item>
  </channel>
</rss>

