<?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: Does anyone know how to change a Dashboard Range Dynamically? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-know-how-to-change-a-Dashboard-Range-Dynamically/m-p/94784#M257660</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Felixor or others with similar problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I got a solutions delivered from SAS (Falko Schulz), that can update the Dashboard Range. It is base SAS codes that can be scheduled to run monthly/daily etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code uses metadata to update the Dashboard Range:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*--------------------------------------------------------------------------*/&lt;BR /&gt;/* Program: update_bid_43_ranges.sas&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;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Purpose: updates existing range definitions based on a dataset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Author: &lt;A href="mailto:Falko.Schulz@sas.com"&gt;Falko.Schulz@sas.com&lt;/A&gt;, SAS Institute Australia, 5 Jul 2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Modified: &lt;A href="mailto:Falko.Schulz@sas.com"&gt;Falko.Schulz@sas.com&lt;/A&gt;, SAS Institute Australia, 23 Oct 2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/*--------------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;%let davRangeFile=Country Sale Range 2.rdx; &lt;BR /&gt;&lt;SPAN&gt;%let davPath=&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://localhost:8080/SASContentServer/repository/default/sasfolders/Projects/Dashboards/Sales"&gt;http://localhost:8080/SASContentServer/repository/default/sasfolders/Projects/Dashboards/Sales&lt;/A&gt;&lt;SPAN&gt; by Country/; &lt;/SPAN&gt;&lt;BR /&gt;%let &lt;A href="mailto:davUser=sasadm@saspw"&gt;davUser=sasadm@saspw&lt;/A&gt;; &lt;BR /&gt;%let davPass=Orion123; &lt;BR /&gt;%let locale=DK;&lt;/P&gt;&lt;P&gt;/* metadata server logon details */&lt;BR /&gt;options metaserver="localhost"&lt;BR /&gt;&amp;nbsp; metaport=8561&lt;BR /&gt;&amp;nbsp; metauser="&amp;amp;davUser."&lt;BR /&gt;&amp;nbsp; metapass="&amp;amp;davPass."&lt;BR /&gt;&amp;nbsp; metarepository="Foundation";&lt;/P&gt;&lt;P&gt;/* file reference to the range definition in webDAV */ &lt;/P&gt;&lt;P&gt;filename davfile webdav "&amp;amp;davPath." dir user="&amp;amp;davUser." pw="&amp;amp;davPass.";&lt;/P&gt;&lt;P&gt;/* sample - range data */&lt;BR /&gt;data rangedata;&lt;BR /&gt; input id label $ 4-32 ccode $ 33-47 color $ 48-53 lower upper;&lt;BR /&gt; datalines;&lt;BR /&gt;1&amp;nbsp; Well Below Target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; belowTarget&amp;nbsp;&amp;nbsp;&amp;nbsp; d06959 . 100 &lt;BR /&gt;2&amp;nbsp; Below Target&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; belowTarget&amp;nbsp;&amp;nbsp;&amp;nbsp; d06959 100 200 &lt;BR /&gt;3&amp;nbsp; On Target&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; onTarget&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f1dc63 200 300 &lt;BR /&gt;4&amp;nbsp; Above Target&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; aboveTarget&amp;nbsp;&amp;nbsp;&amp;nbsp; 84af5b 300 400 &lt;BR /&gt;5&amp;nbsp; Well Above Target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aboveTarget&amp;nbsp;&amp;nbsp;&amp;nbsp; 84af5b 400 . &lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* re-use first part of the existing file until we find the &amp;lt;Intervals&amp;gt; tag */ &lt;BR /&gt;data part1;&lt;BR /&gt; length doc $32576.;&lt;BR /&gt; infile davfile("&amp;amp;davRangeFile.(Range)");&lt;BR /&gt; input;&lt;BR /&gt; doc=_infile_;&lt;BR /&gt; output;&lt;BR /&gt; if (compress(_infile_) eq "&amp;lt;Intervals&amp;gt;") then stop; &lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* generate the second part based on the range data definition */ &lt;BR /&gt;data part2(keep=doc);&lt;BR /&gt; length doc $32576.;&lt;BR /&gt; set rangedata end=last;&lt;BR /&gt; &lt;BR /&gt; if _n_ eq 1 then do;&lt;BR /&gt;&amp;nbsp; doc='&amp;lt;Interval classificationCode="' || trim(ccode) || '" lowerBoundInclusive="false" upperBound="' &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; || compress(put(upper,8.)) || '" upperBoundInclusive="false" color="' || trim(color) || '"&amp;gt;';&lt;BR /&gt; end; else do;&lt;BR /&gt;&amp;nbsp; doc='&amp;lt;Interval classificationCode="' || trim(ccode) || '" lowerBound="' || compress(put(lower,8.)) || '"&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; lowerBoundInclusive="true" upperBound="' || compress(put(upper,8.)) || '"&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; upperBoundInclusive="false" color="' || trim(color) || '"&amp;gt;';&lt;BR /&gt; end;&lt;BR /&gt; output;&lt;/P&gt;&lt;P&gt; doc= '&amp;lt;LocalizedTextBundle&amp;gt;&amp;lt;LocalizedTextLists&amp;gt;&amp;lt;LocalizedTextList language="en" country="' || "&amp;amp;locale." || '"&amp;gt;&amp;lt;LocalizedTexts&amp;gt;&amp;lt;LocalizedText id="name"&amp;gt;';output;&lt;BR /&gt; doc= '&amp;lt;text&amp;gt;' || trim(label) || '&amp;lt;/text&amp;gt;';output;&lt;BR /&gt; doc= '&amp;lt;/LocalizedText&amp;gt;&amp;lt;/LocalizedTexts&amp;gt;&amp;lt;/LocalizedTextList&amp;gt;&amp;lt;/LocalizedTextLists&amp;gt;&amp;lt;/LocalizedTextBundle&amp;gt;&amp;lt;/Interval&amp;gt;';output;&lt;/P&gt;&lt;P&gt; if last then do;&lt;BR /&gt;&amp;nbsp; doc= '&amp;lt;/Intervals&amp;gt;';output;&lt;BR /&gt;&amp;nbsp; doc= '&amp;lt;/RangeDefinition&amp;gt;';output;&lt;BR /&gt; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* combine both parts and write back to webDAV */ &lt;BR /&gt;data _null_;&lt;BR /&gt; set part1 part2;&lt;BR /&gt; file davfile("&amp;amp;davRangeFile.(Range)");&lt;BR /&gt; put doc;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* update the metadata object timestamp to initiate refresh of the object in BID */ &lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; length uri $256 conuri $256 val $256 name $256 id $256;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nobj=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uri="";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do while (nobj &amp;gt;= 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nobj=metadata_getnobj("omsobj:Transformation?Transformation[@Name='&amp;amp;davRangeFile.' and @PublicType='Range']",n,uri);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nobj &amp;gt;= 0) then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc=metadata_getattr(uri, "Name", name);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; rc=metadata_getattr(uri, "Id", id);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; rc=metadata_setattr(uri, "Name", name);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put "Range definition '" name "' [" id "] updated.";&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; n = n + 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;/* DEBUG:: dump xml to the log for validation */ &lt;BR /&gt;data range;&lt;BR /&gt;&amp;nbsp; infile davfile("&amp;amp;davRangeFile.(Range)");&lt;BR /&gt;&amp;nbsp; input;&lt;BR /&gt;&amp;nbsp; put _infile_;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;filename davfile;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 06 Feb 2013 10:47:08 GMT</pubDate>
    <dc:creator>MDU_BRFkredit</dc:creator>
    <dc:date>2013-02-06T10:47:08Z</dc:date>
    <item>
      <title>Does anyone know how to change a Dashboard Range Dynamically?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-know-how-to-change-a-Dashboard-Range-Dynamically/m-p/94783#M257659</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P class="jive-rendered-content"&gt;Does anyone know how to change a Dashboard Range Dynamically? I need the numbers to display and they need to change each month. I can type them in manually, but it is very time consuming. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jun 2012 14:24:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-know-how-to-change-a-Dashboard-Range-Dynamically/m-p/94783#M257659</guid>
      <dc:creator>Felix</dc:creator>
      <dc:date>2012-06-28T14:24:33Z</dc:date>
    </item>
    <item>
      <title>Re: Does anyone know how to change a Dashboard Range Dynamically?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Does-anyone-know-how-to-change-a-Dashboard-Range-Dynamically/m-p/94784#M257660</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Felixor or others with similar problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I got a solutions delivered from SAS (Falko Schulz), that can update the Dashboard Range. It is base SAS codes that can be scheduled to run monthly/daily etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code uses metadata to update the Dashboard Range:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*--------------------------------------------------------------------------*/&lt;BR /&gt;/* Program: update_bid_43_ranges.sas&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;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Purpose: updates existing range definitions based on a dataset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Author: &lt;A href="mailto:Falko.Schulz@sas.com"&gt;Falko.Schulz@sas.com&lt;/A&gt;, SAS Institute Australia, 5 Jul 2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Modified: &lt;A href="mailto:Falko.Schulz@sas.com"&gt;Falko.Schulz@sas.com&lt;/A&gt;, SAS Institute Australia, 23 Oct 2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/*--------------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;%let davRangeFile=Country Sale Range 2.rdx; &lt;BR /&gt;&lt;SPAN&gt;%let davPath=&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://localhost:8080/SASContentServer/repository/default/sasfolders/Projects/Dashboards/Sales"&gt;http://localhost:8080/SASContentServer/repository/default/sasfolders/Projects/Dashboards/Sales&lt;/A&gt;&lt;SPAN&gt; by Country/; &lt;/SPAN&gt;&lt;BR /&gt;%let &lt;A href="mailto:davUser=sasadm@saspw"&gt;davUser=sasadm@saspw&lt;/A&gt;; &lt;BR /&gt;%let davPass=Orion123; &lt;BR /&gt;%let locale=DK;&lt;/P&gt;&lt;P&gt;/* metadata server logon details */&lt;BR /&gt;options metaserver="localhost"&lt;BR /&gt;&amp;nbsp; metaport=8561&lt;BR /&gt;&amp;nbsp; metauser="&amp;amp;davUser."&lt;BR /&gt;&amp;nbsp; metapass="&amp;amp;davPass."&lt;BR /&gt;&amp;nbsp; metarepository="Foundation";&lt;/P&gt;&lt;P&gt;/* file reference to the range definition in webDAV */ &lt;/P&gt;&lt;P&gt;filename davfile webdav "&amp;amp;davPath." dir user="&amp;amp;davUser." pw="&amp;amp;davPass.";&lt;/P&gt;&lt;P&gt;/* sample - range data */&lt;BR /&gt;data rangedata;&lt;BR /&gt; input id label $ 4-32 ccode $ 33-47 color $ 48-53 lower upper;&lt;BR /&gt; datalines;&lt;BR /&gt;1&amp;nbsp; Well Below Target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; belowTarget&amp;nbsp;&amp;nbsp;&amp;nbsp; d06959 . 100 &lt;BR /&gt;2&amp;nbsp; Below Target&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; belowTarget&amp;nbsp;&amp;nbsp;&amp;nbsp; d06959 100 200 &lt;BR /&gt;3&amp;nbsp; On Target&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; onTarget&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; f1dc63 200 300 &lt;BR /&gt;4&amp;nbsp; Above Target&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; aboveTarget&amp;nbsp;&amp;nbsp;&amp;nbsp; 84af5b 300 400 &lt;BR /&gt;5&amp;nbsp; Well Above Target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aboveTarget&amp;nbsp;&amp;nbsp;&amp;nbsp; 84af5b 400 . &lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* re-use first part of the existing file until we find the &amp;lt;Intervals&amp;gt; tag */ &lt;BR /&gt;data part1;&lt;BR /&gt; length doc $32576.;&lt;BR /&gt; infile davfile("&amp;amp;davRangeFile.(Range)");&lt;BR /&gt; input;&lt;BR /&gt; doc=_infile_;&lt;BR /&gt; output;&lt;BR /&gt; if (compress(_infile_) eq "&amp;lt;Intervals&amp;gt;") then stop; &lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* generate the second part based on the range data definition */ &lt;BR /&gt;data part2(keep=doc);&lt;BR /&gt; length doc $32576.;&lt;BR /&gt; set rangedata end=last;&lt;BR /&gt; &lt;BR /&gt; if _n_ eq 1 then do;&lt;BR /&gt;&amp;nbsp; doc='&amp;lt;Interval classificationCode="' || trim(ccode) || '" lowerBoundInclusive="false" upperBound="' &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; || compress(put(upper,8.)) || '" upperBoundInclusive="false" color="' || trim(color) || '"&amp;gt;';&lt;BR /&gt; end; else do;&lt;BR /&gt;&amp;nbsp; doc='&amp;lt;Interval classificationCode="' || trim(ccode) || '" lowerBound="' || compress(put(lower,8.)) || '"&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; lowerBoundInclusive="true" upperBound="' || compress(put(upper,8.)) || '"&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; upperBoundInclusive="false" color="' || trim(color) || '"&amp;gt;';&lt;BR /&gt; end;&lt;BR /&gt; output;&lt;/P&gt;&lt;P&gt; doc= '&amp;lt;LocalizedTextBundle&amp;gt;&amp;lt;LocalizedTextLists&amp;gt;&amp;lt;LocalizedTextList language="en" country="' || "&amp;amp;locale." || '"&amp;gt;&amp;lt;LocalizedTexts&amp;gt;&amp;lt;LocalizedText id="name"&amp;gt;';output;&lt;BR /&gt; doc= '&amp;lt;text&amp;gt;' || trim(label) || '&amp;lt;/text&amp;gt;';output;&lt;BR /&gt; doc= '&amp;lt;/LocalizedText&amp;gt;&amp;lt;/LocalizedTexts&amp;gt;&amp;lt;/LocalizedTextList&amp;gt;&amp;lt;/LocalizedTextLists&amp;gt;&amp;lt;/LocalizedTextBundle&amp;gt;&amp;lt;/Interval&amp;gt;';output;&lt;/P&gt;&lt;P&gt; if last then do;&lt;BR /&gt;&amp;nbsp; doc= '&amp;lt;/Intervals&amp;gt;';output;&lt;BR /&gt;&amp;nbsp; doc= '&amp;lt;/RangeDefinition&amp;gt;';output;&lt;BR /&gt; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* combine both parts and write back to webDAV */ &lt;BR /&gt;data _null_;&lt;BR /&gt; set part1 part2;&lt;BR /&gt; file davfile("&amp;amp;davRangeFile.(Range)");&lt;BR /&gt; put doc;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* update the metadata object timestamp to initiate refresh of the object in BID */ &lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; length uri $256 conuri $256 val $256 name $256 id $256;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nobj=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uri="";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do while (nobj &amp;gt;= 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nobj=metadata_getnobj("omsobj:Transformation?Transformation[@Name='&amp;amp;davRangeFile.' and @PublicType='Range']",n,uri);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nobj &amp;gt;= 0) then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc=metadata_getattr(uri, "Name", name);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; rc=metadata_getattr(uri, "Id", id);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; rc=metadata_setattr(uri, "Name", name);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put "Range definition '" name "' [" id "] updated.";&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; n = n + 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;/* DEBUG:: dump xml to the log for validation */ &lt;BR /&gt;data range;&lt;BR /&gt;&amp;nbsp; infile davfile("&amp;amp;davRangeFile.(Range)");&lt;BR /&gt;&amp;nbsp; input;&lt;BR /&gt;&amp;nbsp; put _infile_;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;filename davfile;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Feb 2013 10:47:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Does-anyone-know-how-to-change-a-Dashboard-Range-Dynamically/m-p/94784#M257660</guid>
      <dc:creator>MDU_BRFkredit</dc:creator>
      <dc:date>2013-02-06T10:47:08Z</dc:date>
    </item>
  </channel>
</rss>

