-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmm__createapplication_8sas_source.html
More file actions
129 lines (126 loc) · 24.4 KB
/
Copy pathmm__createapplication_8sas_source.html
File metadata and controls
129 lines (126 loc) · 24.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!-- HTML header for doxygen 1.8.14-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MacroCore: meta/mm_createapplication.sas Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link REL="icon" HREF="https://boemskats.com/wp-content/uploads/2018/05/favicon.png">
<link href="new_stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea" style='background-color:white' >
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 26px;">
<td id="projectlogo"></td>
<td>
<div id="projectname">
<a href=".">
<img alt="Macro Core" src="https://boemskats.com/wp-content/uploads/2018/05/boemska2014retina_V2.png" height=60/>
</a>
<a href=".">
<img alt="Macro Core" src="./Macro_core_website_1.png" height=60/>
</a>
</div>
</td>
<td>
<table style="padding-left: 2em;" cellspacing="0" cellpadding="0">
<tr><td> Production Ready Macros for SAS Application Developers</td></tr>
</table>
</td>
<div class="header">
<div class="headertitle">
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('mm__createapplication_8sas_source.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">mm_createapplication.sas</div> </div>
</div><!--header-->
<div class="contents">
<a href="mm__createapplication_8sas.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/**</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> @file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> @brief Create an Application object in a metadata folder</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> @details Application objects are useful for storing properties in metadata.</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> This macro is idempotent - it will not create an object with the same name</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> in the same location, twice.</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> usage:</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> %mm_createapplication(tree=/User Folders/sasdemo</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> ,name=MyApp</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> ,classidentifier=myAppSeries</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> ,params= name1=value1&#x0a;name2=value2&#x0a;emptyvalue=</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> )</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"></span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> @warning application components do not get deleted when removing the container folder! be sure you have the administrative priviliges to remove this kind of metadata from the SMC plugin (or be ready to do to so programmatically).</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> <h4> Dependencies </h4></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> @li mf_abort.sas</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> @li mf_verifymacvars.sas</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> @param tree= The metadata folder uri, or the metadata path, in which to</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> create the object. This must exist.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> @param name= Application object name. Avoid spaces.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> @param ClassIdentifier= the class of applications to which this app belongs</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> @param params= name=value pairs which will become public properties of the</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> application object. These are delimited using &#x0a; (newline character)</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> @param desc= Application description (optional). Avoid ampersands as these</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> are illegal characters (unless they are escapted- eg &amp;)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> @param version= version number of application</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> @param frefin= fileref to use (enables change if there is a conflict). The</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> filerefs are left open, to enable inspection after running the</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> macro (or importing into an xmlmap if needed).</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> @param frefout= fileref to use (enables change if there is a conflict)</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> @param mDebug= set to 1 to show debug messages in the log</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> @author Allan Bowe</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">**/</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> %macro mm_createapplication(</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  tree=/User Folders/sasdemo</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ,name=myApp</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ,ClassIdentifier=mcore</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ,desc=Created by mm_createapplication</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ,params= param1=1&#x0a;param2=blah</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ,version=</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ,frefin=mm_in</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  ,frefout=mm_out</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  ,mDebug=1</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  );</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> %local mD;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> %<span class="keywordflow">if</span> &mDebug=1 %then %let mD=;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> %<span class="keywordflow">else</span> %let mD=%str(*);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> %&mD.put Executing &sysmacroname..sas;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> %&mD.put _local_;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> %mf_verifymacvars(tree name)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">/**</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment"> * check tree exists</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment"> */</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> data _null_;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  length type uri $256;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  rc=metadata_pathobj(<span class="stringliteral">""</span>,<span class="stringliteral">"&tree"</span>,<span class="stringliteral">"Folder"</span>,type,uri);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  call symputx(<span class="stringliteral">'type'</span>,type,<span class="charliteral">'l'</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  call symputx(<span class="stringliteral">'treeuri'</span>,uri,<span class="charliteral">'l'</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> run;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> %mf_abort(</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  iftrue= (&type ne Tree)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  ,mac=mm_createapplication.sas</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  ,msg=Tree &tree does not exist!</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> )</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">/**</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"> * Check object does not exist already</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"> */</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> data _null_;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  length type uri $256;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  rc=metadata_pathobj("","&tree/&name","Application",type,uri);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  call symputx('type',type,'l');</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  putlog (_all_)(=);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> run;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> %mf_abort(</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  iftrue= (&type = SoftwareComponent)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  ,mac=mm_createapplication.sas</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  ,msg=Application &name already exists in &tree!</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> )</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"></span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">/**</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> * Now we can create the application</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> */</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> filename &frefin temp;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">/* write header XML */</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> data _null_;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  file &frefin;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  name=quote(symget('name'));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  desc=quote(symget('desc'));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  ClassIdentifier=quote(symget('ClassIdentifier'));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  version=quote(symget('version'));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  params=quote(symget('params'));</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  treeuri=quote(symget('treeuri'));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  put "<AddMetadata><Reposid>$METAREPOSITORY</Reposid><Metadata> "/</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  '<SoftwareComponent IsHidden="0" Name=' name ' ProductName=' name /</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  ' ClassIdentifier=' ClassIdentifier ' Desc=' desc /</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  ' SoftwareVersion=' version ' SpecVersion=' version /</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  ' Major="1" Minor="1" UsageVersion="1000000" PublicType="Application" >' /</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ' <Notes>' /</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  ' <TextStore Name="Public Configuration Properties" IsHidden="0" ' /</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  ' UsageVersion="0" StoredText=' params '/>' /</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  ' </Notes>' /</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  "<Trees><Tree ObjRef=" treeuri "/></Trees>"/</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  "</SoftwareComponent></Metadata><NS>SAS</NS>"/</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  "<Flags>268435456</Flags></AddMetadata>";</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> run;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> filename &frefout temp;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> proc metadata in= &frefin out=&frefout verbose;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> run;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> %if &mdebug=1 %then %do;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">/* write the response to the log for debugging */</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  data _null_;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  infile &frefout lrecl=1048576;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  input;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  put _infile_;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  run;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> %end;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> %put NOTE: Checking to ensure application (&name) was created;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> data _null_;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  length type uri $256;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  rc=metadata_pathobj("","&tree/&name","Application",type,uri);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  call symputx('apptype',type,'l');</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  %if &mdebug=1 %then putlog (_all_)(=);;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> run;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> %if &apptype ne SoftwareComponent %then %do;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  %put %str(ERR)OR: Could not find (&name) at (&tree)!!;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  %return;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> %end;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> %else %put NOTE: Application (&name) successfully created in (&tree)!;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> %mend;</div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<li class="footer"><b>Generated by</b>
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a>
<i> For more information visit the </i> <a href="https://github.com/Boemska/macrocore">Boemska MacroCore library</a>.</li>
</ul>
</div>
</body>
</html>