34 %macro mm_updateappextension(app=
37 ,paramdesc=Created by mm_updateappextension
38 ,frefin=inmeta,frefout=outmeta
44 %let appuri=stopifempty;
45 %let exturi=createifempty;
48 format type uri tsuri value $200.;
49 call missing (of _all_);
50 paramname=symget(
'paramname');
51 path=
"&app(Application)";
53 if metadata_pathobj(
"",path,
"Application",type,uri)>0 then
do;
55 call symputx(
'appuri',uri,
'l');
57 do while (metadata_getnasn(uri,
"Extensions",cnt,tsuri)>0);
58 rc=metadata_getattr(tsuri,
"Name",value);
60 if value=paramname then
do;
61 putlog
"&sysmacroname: found existing param - " tsuri;
62 rc=metadata_getattr(tsuri,
"Id",value);
63 call symputx(
'exturi',value,
'l');
72 %
if &appuri=stopifempty %then %
do;
73 %put WARNING: &app.(Application) not found!;
80 outstr=symget(
'paramdesc');
81 outstr=tranwrd(outstr,
'&',
'&');
82 outstr=tranwrd(outstr,
'<',
'<');
83 outstr=tranwrd(outstr,
'>',
'>');
84 outstr=tranwrd(outstr,
"'",
''');
85 outstr=tranwrd(outstr,
'"',
'"');
86 outstr=tranwrd(outstr,
'0A'x,
' ');
87 outstr=tranwrd(outstr,
'0D'x,
' ');
88 outstr=tranwrd(outstr,
'$',
'$');
89 call symputx(
'paramdesc',outstr,
'l');
92 filename &frefin temp;
94 %
if &exturi=createifempty %then %
do;
98 pname=quote(trim(symget(
'paramname')));
99 pdesc=quote(trim(symget(
'paramdesc')));
100 pvalue=quote(trim(symget(
'paramvalue')));
101 put
"<UpdateMetadata><Reposid>$METAREPOSITORY</Reposid><Metadata>"/
102 " <SoftwareComponent id='&appuri' ><Extensions>" /
103 ' <Extension Name=' pname
' Desc=' pdesc
' value= ' pvalue
' />' /
104 ' </Extensions></SoftwareComponent>'/
105 '</Metadata><NS>SAS</NS><Flags>268435456</Flags></UpdateMetadata>';
112 pdesc=quote(trim(symget(
'paramdesc')));
113 pvalue=quote(trim(symget(
'paramvalue')));
114 put
"<UpdateMetadata><Reposid>$METAREPOSITORY</Reposid><Metadata>"/
115 " <Extension id='&exturi' Desc=" pdesc
' value= ' pvalue
' />' /
116 '</Metadata><NS>SAS</NS><Flags>268435456</Flags></UpdateMetadata>';
120 filename &frefout temp;
122 proc metadata in= &frefin out=&frefout verbose;
125 %
if &mdebug=1 %then %
do;
128 infile &frefout lrecl=1048576;