|
141 | 141 | <a href="mm__getdetails_8sas.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/**</span></div>
|
142 | 142 | <div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> @file mm_getdetails.sas</span></div>
|
143 | 143 | <div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> @brief extracts metadata attributes and associations for a particular uri</span></div>
|
144 |
| -<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div> |
145 |
| -<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> @param [in] uri the metadata object for which to return</span></div> |
146 |
| -<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> attributes / associations</span></div> |
147 |
| -<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> @param [out] outattrs= (work.attributes)</span></div> |
148 |
| -<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> The dataset to create that contains the list of attributes</span></div> |
149 |
| -<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> @param [out] outassocs= (work.associations)</span></div> |
150 |
| -<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> The dataset to contain the list of associations</span></div> |
151 |
| -<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"></span> </div> |
152 |
| -<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> @version 9.2</span></div> |
153 |
| -<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> @author Allan Bowe</span></div> |
154 |
| -<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"></span> </div> |
155 |
| -<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">**/</span></div> |
156 |
| -<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div> |
157 |
| -<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span>%macro mm_getdetails(uri</div> |
158 |
| -<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> ,outattrs=work.attributes</div> |
159 |
| -<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> ,outassocs=work.associations</div> |
160 |
| -<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span>)<span class="comment">/*/STORE SOURCE*/</span>;</div> |
161 |
| -<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div> |
162 |
| -<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span>data &outassocs;</div> |
163 |
| -<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> keep assoc assocuri name;</div> |
164 |
| -<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> length assoc assocuri name $256;</div> |
165 |
| -<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> call missing(of _all_);</div> |
166 |
| -<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> rc1=1;n1=1;</div> |
167 |
| -<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">do</span> <span class="keywordflow">while</span>(rc1>0);</div> |
168 |
| -<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="comment">/* Walk through all possible associations of this object. */</span></div> |
169 |
| -<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> rc1=metadata_getnasl(<span class="stringliteral">"&uri"</span>,n1,assoc);</div> |
170 |
| -<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> rc2=1;n2=1;</div> |
171 |
| -<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keywordflow">do</span> <span class="keywordflow">while</span>(rc2>0);</div> |
172 |
| -<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="comment">/* Walk through all the associations on this machine object. */</span></div> |
173 |
| -<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> rc2=metadata_getnasn(<span class="stringliteral">"&uri"</span>,trim(assoc),n2,assocuri);</div> |
174 |
| -<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keywordflow">if</span> (rc2>0) then <span class="keywordflow">do</span>;</div> |
175 |
| -<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> rc3=metadata_getattr(assocuri,<span class="stringliteral">"Name"</span>,name);</div> |
176 |
| -<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> output;</div> |
177 |
| -<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> end;</div> |
178 |
| -<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> call missing(name,assocuri);</div> |
179 |
| -<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> n2+1;</div> |
180 |
| -<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> end;</div> |
181 |
| -<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> n1+1;</div> |
182 |
| -<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> end;</div> |
183 |
| -<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span>run;</div> |
184 |
| -<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span>proc sort;</div> |
185 |
| -<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> by assoc name;</div> |
186 |
| -<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>run;</div> |
187 |
| -<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div> |
188 |
| -<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>data &outattrs;</div> |
189 |
| -<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> keep type name value;</div> |
190 |
| -<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> length type $4 name $256 value $32767;</div> |
191 |
| -<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> rc1=1;n1=1;type=<span class="stringliteral">'Prop'</span>;name=<span class="stringliteral">''</span>;value=<span class="stringliteral">''</span>;</div> |
192 |
| -<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">do</span> <span class="keywordflow">while</span>(rc1>0);</div> |
193 |
| -<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> rc1=metadata_getnprp(<span class="stringliteral">"&uri"</span>,n1,name,value);</div> |
194 |
| -<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">if</span> rc1>0 then output;</div> |
195 |
| -<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> n1+1;</div> |
196 |
| -<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> end;</div> |
197 |
| -<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> rc1=1;n1=1;type=<span class="stringliteral">'Attr'</span>;</div> |
198 |
| -<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">do</span> <span class="keywordflow">while</span>(rc1>0);</div> |
199 |
| -<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> rc1=metadata_getnatr(<span class="stringliteral">"&uri"</span>,n1,name,value);</div> |
200 |
| -<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">if</span> rc1>0 then output;</div> |
201 |
| -<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> n1+1;</div> |
202 |
| -<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> end;</div> |
203 |
| -<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>run;</div> |
204 |
| -<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>proc sort;</div> |
205 |
| -<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> by type name;</div> |
206 |
| -<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>run;</div> |
207 |
| -<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div> |
208 |
| -<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span>%mend mm_getdetails;</div> |
| 144 | +<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> @param [in] uri the metadata object for which to return</span></div> |
| 145 | +<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> attributes / associations</span></div> |
| 146 | +<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> @param [in] sortoptions Enables sorting of the output datasets, for example,</span></div> |
| 147 | +<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> `SORTSEQ=LINGUISTIC`</span></div> |
| 148 | +<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> @param [out] outattrs= (work.attributes)</span></div> |
| 149 | +<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> The dataset to create that contains the list of attributes</span></div> |
| 150 | +<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> @param [out] outassocs= (work.associations)</span></div> |
| 151 | +<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> The dataset to contain the list of associations</span></div> |
| 152 | +<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">**/</span></div> |
| 153 | +<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div> |
| 154 | +<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span>%macro mm_getdetails(uri</div> |
| 155 | +<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> ,outattrs=work.attributes</div> |
| 156 | +<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> ,outassocs=work.associations</div> |
| 157 | +<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> ,sortoptions=</div> |
| 158 | +<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span>)<span class="comment">/*/STORE SOURCE*/</span>;</div> |
| 159 | +<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div> |
| 160 | +<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span>data &outassocs;</div> |
| 161 | +<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> keep assoc assocuri name;</div> |
| 162 | +<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> length assoc assocuri name $256;</div> |
| 163 | +<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> call missing(of _all_);</div> |
| 164 | +<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> rc1=1;n1=1;</div> |
| 165 | +<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keywordflow">do</span> <span class="keywordflow">while</span>(rc1>0);</div> |
| 166 | +<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="comment">/* Walk through all possible associations of this object. */</span></div> |
| 167 | +<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> rc1=metadata_getnasl(<span class="stringliteral">"&uri"</span>,n1,assoc);</div> |
| 168 | +<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> rc2=1;n2=1;</div> |
| 169 | +<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keywordflow">do</span> <span class="keywordflow">while</span>(rc2>0);</div> |
| 170 | +<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="comment">/* Walk through all the associations on this machine object. */</span></div> |
| 171 | +<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> rc2=metadata_getnasn(<span class="stringliteral">"&uri"</span>,trim(assoc),n2,assocuri);</div> |
| 172 | +<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keywordflow">if</span> (rc2>0) then <span class="keywordflow">do</span>;</div> |
| 173 | +<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> rc3=metadata_getattr(assocuri,<span class="stringliteral">"Name"</span>,name);</div> |
| 174 | +<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> output;</div> |
| 175 | +<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> end;</div> |
| 176 | +<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> call missing(name,assocuri);</div> |
| 177 | +<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> n2+1;</div> |
| 178 | +<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> end;</div> |
| 179 | +<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> n1+1;</div> |
| 180 | +<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> end;</div> |
| 181 | +<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>run;</div> |
| 182 | +<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span>proc sort &sortoptions;</div> |
| 183 | +<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> by assoc name;</div> |
| 184 | +<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span>run;</div> |
| 185 | +<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div> |
| 186 | +<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span>data &outattrs;</div> |
| 187 | +<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> keep type name value;</div> |
| 188 | +<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> length type $4 name $256 value $32767;</div> |
| 189 | +<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> rc1=1;n1=1;type=<span class="stringliteral">'Prop'</span>;name=<span class="stringliteral">''</span>;value=<span class="stringliteral">''</span>;</div> |
| 190 | +<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">do</span> <span class="keywordflow">while</span>(rc1>0);</div> |
| 191 | +<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> rc1=metadata_getnprp(<span class="stringliteral">"&uri"</span>,n1,name,value);</div> |
| 192 | +<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">if</span> rc1>0 then output;</div> |
| 193 | +<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> n1+1;</div> |
| 194 | +<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> end;</div> |
| 195 | +<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> rc1=1;n1=1;type=<span class="stringliteral">'Attr'</span>;</div> |
| 196 | +<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">do</span> <span class="keywordflow">while</span>(rc1>0);</div> |
| 197 | +<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> rc1=metadata_getnatr(<span class="stringliteral">"&uri"</span>,n1,name,value);</div> |
| 198 | +<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">if</span> rc1>0 then output;</div> |
| 199 | +<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> n1+1;</div> |
| 200 | +<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> end;</div> |
| 201 | +<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span>run;</div> |
| 202 | +<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span>proc sort &sortoptions;</div> |
| 203 | +<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> by type name;</div> |
| 204 | +<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>run;</div> |
| 205 | +<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div> |
| 206 | +<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>%mend mm_getdetails;</div> |
209 | 207 | </div><!-- fragment --></div><!-- contents -->
|
210 | 208 | </div><!-- doc-content -->
|
211 | 209 | <!-- HTML footer for doxygen 1.8.17-->
|
|
0 commit comments