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;