<?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: Splitting a database in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100959#M21135</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="2746" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;: for the OP's needs, I think that yours is the easiest to understand solution.&amp;nbsp; However, I'm going to continue recommending using a hash for such tasks, so that one doesn't have to be concerned with macro variable or line length limitations.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 16 Dec 2012 15:08:07 GMT</pubDate>
    <dc:creator>art297</dc:creator>
    <dc:date>2012-12-16T15:08:07Z</dc:date>
    <item>
      <title>Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100950#M21126</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I have a database who looks like this:&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 820px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="17" width="80"&gt;Years&lt;/TD&gt;&lt;TD width="80"&gt;pf1&lt;/TD&gt;&lt;TD width="80"&gt;pf2&lt;/TD&gt;&lt;TD width="80"&gt;pf3&lt;/TD&gt;&lt;TD width="80"&gt;pf4&lt;/TD&gt;&lt;TD width="80"&gt;pf5&lt;/TD&gt;&lt;TD width="80"&gt;pf6&lt;/TD&gt;&lt;TD width="80"&gt;pf7&lt;/TD&gt;&lt;TD width="80"&gt;pf8&lt;/TD&gt;&lt;TD width="20"&gt;…&lt;/TD&gt;&lt;TD width="80"&gt;pf119&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="17"&gt;2006&lt;/TD&gt;&lt;TD align="right"&gt;0,99995&lt;/TD&gt;&lt;TD align="right"&gt;0,99984&lt;/TD&gt;&lt;TD align="right"&gt;0,99969&lt;/TD&gt;&lt;TD align="right"&gt;0,99954&lt;/TD&gt;&lt;TD align="right"&gt;0,99939&lt;/TD&gt;&lt;TD align="right"&gt;0,99924&lt;/TD&gt;&lt;TD align="right"&gt;0,99909&lt;/TD&gt;&lt;TD align="right"&gt;0,99894&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,99864&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="17"&gt;2007&lt;/TD&gt;&lt;TD align="right"&gt;0,90419475&lt;/TD&gt;&lt;TD align="right"&gt;0,86805513&lt;/TD&gt;&lt;TD align="right"&gt;0,95407293&lt;/TD&gt;&lt;TD align="right"&gt;0,8676255&lt;/TD&gt;&lt;TD align="right"&gt;0,9106782&lt;/TD&gt;&lt;TD align="right"&gt;0,89055109&lt;/TD&gt;&lt;TD align="right"&gt;0,99534984&lt;/TD&gt;&lt;TD align="right"&gt;0,82628474&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,85245713&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="17"&gt;2008&lt;/TD&gt;&lt;TD align="right"&gt;0,9547502&lt;/TD&gt;&lt;TD align="right"&gt;0,86854718&lt;/TD&gt;&lt;TD align="right"&gt;0,80312147&lt;/TD&gt;&lt;TD align="right"&gt;0,94014155&lt;/TD&gt;&lt;TD align="right"&gt;0,92665103&lt;/TD&gt;&lt;TD align="right"&gt;0,97910746&lt;/TD&gt;&lt;TD align="right"&gt;0,95293207&lt;/TD&gt;&lt;TD align="right"&gt;0,94262974&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,86068283&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="17"&gt;2009&lt;/TD&gt;&lt;TD align="right"&gt;0,84331363&lt;/TD&gt;&lt;TD align="right"&gt;0,81522629&lt;/TD&gt;&lt;TD align="right"&gt;0,98906643&lt;/TD&gt;&lt;TD align="right"&gt;0,88725626&lt;/TD&gt;&lt;TD align="right"&gt;0,94812541&lt;/TD&gt;&lt;TD align="right"&gt;0,85975439&lt;/TD&gt;&lt;TD align="right"&gt;0,93789548&lt;/TD&gt;&lt;TD align="right"&gt;0,98424024&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,82137827&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="17"&gt;2010&lt;/TD&gt;&lt;TD align="right"&gt;0,83663445&lt;/TD&gt;&lt;TD align="right"&gt;0,84507837&lt;/TD&gt;&lt;TD align="right"&gt;0,91888898&lt;/TD&gt;&lt;TD align="right"&gt;0,95447863&lt;/TD&gt;&lt;TD align="right"&gt;0,87323238&lt;/TD&gt;&lt;TD align="right"&gt;0,98027643&lt;/TD&gt;&lt;TD align="right"&gt;0,93558909&lt;/TD&gt;&lt;TD align="right"&gt;0,85553856&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,97474632&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="17"&gt;2011&lt;/TD&gt;&lt;TD align="right"&gt;0,86543087&lt;/TD&gt;&lt;TD align="right"&gt;0,9058221&lt;/TD&gt;&lt;TD align="right"&gt;0,80951478&lt;/TD&gt;&lt;TD align="right"&gt;0,97289518&lt;/TD&gt;&lt;TD align="right"&gt;0,80704643&lt;/TD&gt;&lt;TD align="right"&gt;0,94382676&lt;/TD&gt;&lt;TD align="right"&gt;0,89678733&lt;/TD&gt;&lt;TD align="right"&gt;0,93423198&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,89965292&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="17"&gt;2012&lt;/TD&gt;&lt;TD align="right"&gt;0,91703081&lt;/TD&gt;&lt;TD align="right"&gt;0,88559104&lt;/TD&gt;&lt;TD align="right"&gt;0,8006615&lt;/TD&gt;&lt;TD align="right"&gt;0,89746979&lt;/TD&gt;&lt;TD align="right"&gt;0,96224727&lt;/TD&gt;&lt;TD align="right"&gt;0,93283978&lt;/TD&gt;&lt;TD align="right"&gt;0,99704944&lt;/TD&gt;&lt;TD align="right"&gt;0,95622047&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,92032314&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="17"&gt;…&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="17"&gt;2056&lt;/TD&gt;&lt;TD align="right"&gt;0,91923551&lt;/TD&gt;&lt;TD align="right"&gt;0,98895088&lt;/TD&gt;&lt;TD align="right"&gt;0,94733737&lt;/TD&gt;&lt;TD align="right"&gt;0,88924355&lt;/TD&gt;&lt;TD align="right"&gt;0,84496988&lt;/TD&gt;&lt;TD align="right"&gt;0,88136723&lt;/TD&gt;&lt;TD align="right"&gt;0,86645268&lt;/TD&gt;&lt;TD align="right"&gt;0,88707045&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,9918978&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to create a single database for each line (without the first column, which is the name of the file), i.e.:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2006.sas7bdat:&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 820px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="80"&gt;pf1&lt;/TD&gt;&lt;TD width="80"&gt;pf2&lt;/TD&gt;&lt;TD width="80"&gt;pf3&lt;/TD&gt;&lt;TD width="80"&gt;pf4&lt;/TD&gt;&lt;TD width="80"&gt;pf5&lt;/TD&gt;&lt;TD width="80"&gt;pf6&lt;/TD&gt;&lt;TD width="80"&gt;pf7&lt;/TD&gt;&lt;TD width="80"&gt;pf8&lt;/TD&gt;&lt;TD width="20"&gt;…&lt;/TD&gt;&lt;TD width="80"&gt;pf119&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right"&gt;0,99995&lt;/TD&gt;&lt;TD align="right"&gt;0,99984&lt;/TD&gt;&lt;TD align="right"&gt;0,99969&lt;/TD&gt;&lt;TD align="right"&gt;0,99954&lt;/TD&gt;&lt;TD align="right"&gt;0,99939&lt;/TD&gt;&lt;TD align="right"&gt;0,99924&lt;/TD&gt;&lt;TD align="right"&gt;0,99909&lt;/TD&gt;&lt;TD align="right"&gt;0,99894&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,99864&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;2007.sas7bdat:&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 820px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="80"&gt;pf1&lt;/TD&gt;&lt;TD width="80"&gt;pf2&lt;/TD&gt;&lt;TD width="80"&gt;pf3&lt;/TD&gt;&lt;TD width="80"&gt;pf4&lt;/TD&gt;&lt;TD width="80"&gt;pf5&lt;/TD&gt;&lt;TD width="80"&gt;pf6&lt;/TD&gt;&lt;TD width="80"&gt;pf7&lt;/TD&gt;&lt;TD width="80"&gt;pf8&lt;/TD&gt;&lt;TD width="20"&gt;…&lt;/TD&gt;&lt;TD width="80"&gt;pf119&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right"&gt;0,90419475&lt;/TD&gt;&lt;TD align="right"&gt;0,86805513&lt;/TD&gt;&lt;TD align="right"&gt;0,95407293&lt;/TD&gt;&lt;TD align="right"&gt;0,8676255&lt;/TD&gt;&lt;TD align="right"&gt;0,9106782&lt;/TD&gt;&lt;TD align="right"&gt;0,89055109&lt;/TD&gt;&lt;TD align="right"&gt;0,99534984&lt;/TD&gt;&lt;TD align="right"&gt;0,82628474&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD align="right"&gt;0,85245713&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there a way to do this with a macro or something. Otherwise, it's not very efficient to do it manually.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 15 Dec 2012 01:30:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100950#M21126</guid>
      <dc:creator>Demographer</dc:creator>
      <dc:date>2012-12-15T01:30:33Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100951#M21127</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input year p1;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;2005 234.1&lt;/P&gt;&lt;P&gt;2006 456.4&lt;/P&gt;&lt;P&gt;2007 786.1&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;select year into:key separated by ' '&lt;/P&gt;&lt;P&gt;from have;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro dist;&lt;/P&gt;&lt;P&gt;%do i=1 %to %sysfunc(countw(&amp;amp;key));&lt;/P&gt;&lt;P&gt;%let dsn=%scan(&amp;amp;key,&amp;amp;i);&lt;/P&gt;&lt;P&gt;data _&amp;amp;dsn;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;where year=&amp;amp;dsn;&lt;/P&gt;&lt;P&gt;drop year;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%dist&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 15 Dec 2012 02:40:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100951#M21127</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-12-15T02:40:41Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100952#M21128</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would have done it this way.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; %Macro temp;&lt;/P&gt;&lt;P&gt; Data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Set Temp end = eof;&lt;/P&gt;&lt;P&gt;&amp;nbsp; count+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if eof then call symput('c_yr', compress(count));&lt;/P&gt;&lt;P&gt; Run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Proc sql;&lt;/P&gt;&lt;P&gt;select years into : yr1 - :yr&amp;amp;c_yr&amp;nbsp;&amp;nbsp; from temp;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %do i= 1 %to &amp;amp;c_yr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Data Y&amp;amp;&amp;amp;yr&amp;amp;i.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set temp ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where years eq &amp;amp;&amp;amp;yr&amp;amp;i.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt; %Mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; %temp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 15 Dec 2012 07:37:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100952#M21128</guid>
      <dc:creator>bnarang</dc:creator>
      <dc:date>2012-12-15T07:37:26Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100953#M21129</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The macro solutions are great for such problems.&lt;/P&gt;&lt;P&gt;Incidentally, the hash-of-hashes (HOH) technique was first demonstrated by Richard DeVenezia for dataset splitting.&lt;/P&gt;&lt;P&gt;I have used a similar HOH approach, using dataset functions to read in data:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;data&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;infile&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; datalines &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;dsd&lt;/SPAN&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;dlm&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;" "&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;input&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; Years $ (pf1-pf8) ($); &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;datalines&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 9pt;"&gt;2006 0,99995 0,99984 0,99969 0,99954 0,99939 0,99924 0,99909 0,99894&amp;nbsp; 0,99864 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 9pt;"&gt;2007 0,90419475 0,86805513 0,95407293 0,8676255 0,9106782 0,89055109 0,99534984 0,82628474&amp;nbsp; 0,85245713 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 9pt;"&gt;2008 0,9547502 0,86854718 0,80312147 0,94014155 0,92665103 0,97910746 0,95293207 0,94262974&amp;nbsp; 0,86068283 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 9pt;"&gt;2009 0,84331363 0,81522629 0,98906643 0,88725626 0,94812541 0,85975439 0,93789548 0,98424024&amp;nbsp; 0,82137827 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 9pt;"&gt;2010 0,83663445 0,84507837 0,91888898 0,95447863 0,87323238 0,98027643 0,93558909 0,85553856&amp;nbsp; 0,97474632 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 9pt;"&gt;2011 0,86543087 0,9058221 0,80951478 0,97289518 0,80704643 0,94382676 0,89678733 0,93423198&amp;nbsp; 0,89965292 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: #ffffc0; color: black; font-size: 9pt;"&gt;2012 0,91703081 0,88559104 0,8006615 0,89746979 0,96224727 0,93283978 0,99704944 0,95622047&amp;nbsp; 0,92032314 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;data&lt;/STRONG&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;_null_&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;length&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; pf $&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;15&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;(&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;1&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;=&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;2&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;declare&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; hash p (ordered:&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"a"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.defineKey(&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"years"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.defineData(&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"years"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"ObjPF"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.defineDone();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;declare&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; hiter hip(&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"p"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;declare&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; hash ObjPF;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 9pt;"&gt;*****Bring in data using data access functions**********************;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsid=open(&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"have"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nrows=attrn(dsid,&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"NOBS"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ncols=attrn(dsid,&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"NVAR"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;do&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; x=&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;1&lt;/STRONG&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;to&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; nrows;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; rc=fetchobs(dsid,x);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; years=getvarc(dsid,&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;1&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; nametext=&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"YR"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;||strip(left(years));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; rc=fetchobs(dsid,x);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&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;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;do&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; y=&lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;2&lt;/STRONG&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;to&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; ncols;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; pf=getvarc(dsid,y);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&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;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 9pt;"&gt;***** Create Hash-of-Hashes*********************************;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&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;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; p.find() ne &lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;0&lt;/STRONG&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;then&lt;/SPAN&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;do&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; ObjPF=_new_ hash(ordered:&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"a"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;,multidata:&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"y"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; ObjPF.defineKey(&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"y"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; ObjPF.defineData(&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;"pf"&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; ObjPF.defineDone();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; p.replace();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&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;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;; &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 9pt;"&gt;*for p.find;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&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; ObjPF.replace();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&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;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;; &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 9pt;"&gt;*for y;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;; &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 9pt;"&gt;*for x;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 9pt;"&gt;****hash-of-hashes readout and dataset creation*********************;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;do&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; rc = hip.first() &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;by&lt;/SPAN&gt; &lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;0&lt;/STRONG&gt; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;while&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt; (rc = &lt;/SPAN&gt;&lt;STRONG style="color: teal; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;0&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObjPF.output (dataset:&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: purple; font-size: 9pt;"&gt;'YR_'&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;||years);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = hip.next();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;; &lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: green; font-size: 9pt;"&gt;*for hip.first;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: blue; font-size: 9pt;"&gt;stop&lt;/SPAN&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; font-size: 9pt; background: white; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-family: 'Courier New'; background: white; color: black; font-size: 9pt;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 15 Dec 2012 19:49:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100953#M21129</guid>
      <dc:creator>joehinson</dc:creator>
      <dc:date>2012-12-15T19:49:06Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100954#M21130</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This might be an easier hash solution:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select cats("'",name,"'")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; into :vars&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; separated by ","&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from dictionary.columns&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where libname="WORK" and&lt;/P&gt;&lt;P&gt;&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; memname="HAVE" and&lt;/P&gt;&lt;P&gt;&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; upcase(name) ne "YEARS"&lt;/P&gt;&lt;P&gt;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_ ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; dcl hash hid (ordered: 'a') ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; hid.definekey ('years') ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; hid.definedata (&amp;amp;vars. ) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; hid.definedone ( ) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do until ( last.years ) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by years ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hid.add() ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; hid.output (dataset: "_"||put (years, best.-l)) ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 15 Dec 2012 20:09:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100954#M21130</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-12-15T20:09:51Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100955#M21131</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks all. This forum is wonderful. Hopefully I would be as good programer as you are in the next years.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 15 Dec 2012 21:31:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100955#M21131</guid>
      <dc:creator>Demographer</dc:creator>
      <dc:date>2012-12-15T21:31:41Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100956#M21132</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think if you move the WHERE statements to the DATA statement as a data set options for each data set name you generate you could create all the data sets with one pass of the data. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 16 Dec 2012 02:08:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100956#M21132</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2012-12-16T02:08:37Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100957#M21133</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Another way, inspired by Linlin's :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input year p1;&lt;BR /&gt;cards;&lt;BR /&gt;2005 234.1&lt;BR /&gt;2006 456.4&lt;BR /&gt;2007 786.1&lt;BR /&gt;;&lt;BR /&gt; &lt;BR /&gt;proc sql noprint;&lt;BR /&gt;select &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cats("_",year), &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cats("when(",year,") output _",year) &lt;BR /&gt;into &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :dts separated by ' ', &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :when separated by ';'&lt;BR /&gt;from have;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data &amp;amp;dts.;&lt;BR /&gt;set have;&lt;BR /&gt;select (year);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;when.;&lt;BR /&gt;end;&lt;BR /&gt;drop year;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 16 Dec 2012 02:27:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100957#M21133</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2012-12-16T02:27:55Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100958#M21134</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, Data_null_ , you are right. that would make it fast.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 16 Dec 2012 07:08:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100958#M21134</guid>
      <dc:creator>bnarang</dc:creator>
      <dc:date>2012-12-16T07:08:07Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100959#M21135</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="2746" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;: for the OP's needs, I think that yours is the easiest to understand solution.&amp;nbsp; However, I'm going to continue recommending using a hash for such tasks, so that one doesn't have to be concerned with macro variable or line length limitations.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 16 Dec 2012 15:08:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100959#M21135</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-12-16T15:08:07Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100960#M21136</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Bhpinder,&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;You can combine your two steps:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Set Temp end = eof;&lt;/P&gt;&lt;P&gt;&amp;nbsp; count+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if eof then call symput('c_yr', compress(count));&lt;/P&gt;&lt;P&gt;Run;&lt;/P&gt;&lt;P&gt;Proc sql;&lt;/P&gt;&lt;P&gt;select years into : yr1 - :yr&amp;amp;c_yr&amp;nbsp;&amp;nbsp; from temp;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;into one:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Set Temp end = eof;&lt;/P&gt;&lt;P&gt;&amp;nbsp; call symputx(cats('yr',_n_),years);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if eof then call symputx('c_yr',_n_);&lt;/P&gt;&lt;P&gt;Run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Dec 2012 03:05:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100960#M21136</guid>
      <dc:creator>Linlin</dc:creator>
      <dc:date>2012-12-20T03:05:02Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting a database</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100961#M21137</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you so much Linlin. I did not know about call symputx. It's&amp;nbsp; such a great place to learn.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Dec 2012 03:40:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-a-database/m-p/100961#M21137</guid>
      <dc:creator>bnarang</dc:creator>
      <dc:date>2012-12-20T03:40:00Z</dc:date>
    </item>
  </channel>
</rss>

