1
0
mirror of https://github.com/sasjs/core.git synced 2025-12-10 14:04:36 +00:00

fix: supporting LATIN1 as well as WLATIN1 in mm_webout

This commit is contained in:
Allan Bowe
2021-06-17 16:31:29 +03:00
parent 120ad9a7da
commit 5a2968e798
3 changed files with 96 additions and 4 deletions

96
all.sas
View File

@@ -9041,7 +9041,7 @@ data _null_;
put '%local i tempds jsonengine; ';
put ' ';
put '/* see https://github.com/sasjs/core/issues/41 */ ';
put '%if "%upcase(&SYSENCODING)"="WLATIN1" %then %let jsonengine=PROCJSON; ';
put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON; ';
put '%else %let jsonengine=DATASTEP; ';
put ' ';
put ' ';
@@ -12534,7 +12534,7 @@ run;
%local i tempds jsonengine;
/* see https://github.com/sasjs/core/issues/41 */
%if "%upcase(&SYSENCODING)"="WLATIN1" %then %let jsonengine=PROCJSON;
%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;
%else %let jsonengine=DATASTEP;
@@ -12703,6 +12703,98 @@ data _null_;
run;
%mend;/**
@file
@brief Get metadata permissions for a particular folder
@details Uses the metadata batch tools to fetch the permissions for a
particular folder. For security, the username / password are expected to have
been provided in a protected directory.
Usage:
%* import the macros (or make them available some other way);
filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas";
%inc mc;
%* create sample text file as input to the macro;
%* password must be in single quotes if it has special chars;
filename creds temp;
data _null_;
file creds;
put " -user 'sasdemo' -password 'Mars321' ";
run;
filename outref "%sysfunc(pathname(work))";
%mmx_getmetaperms(
metaloc=/some/meta/folder
,secureref=creds
,outds=work.perms
)
<h4> SAS Macros </h4>
@li mf_loc.sas
@li mf_getuniquefileref.sas
@li mp_abort.sas
@param metaloc= the metadata folder for which to export permissions
@param secureref= fileref containing the username / password (should point to
a file in a secure location)
@param outds= (work.mmx_getmetaperms) The output table containing the perms
@param effective= (YES) Displays effective access. If set to NO, only direct
access controls are displayed. Effective access is the net effect of all
applicable permission settings (both direct access controls and inherited
permissions).
@param onlyGroup= (0) Display access for only the specified user group.
@param onlyUser= (0) Display access for only the specified user.
@version 9.4
@author Allan Bowe
**/
%macro mmx_getmetaperms(metaloc=
,secureref=
,outds=work.mmx_getmetaperms
,effective=YES
,onlygroup=0
,onlyuser=0
);
%local host port path mmxuser mmxpass eff filt;
%let host=%sysfunc(getoption(metaserver));
%let port=%sysfunc(getoption(metaport));
%let path=%mf_loc(POF)/tools/sas-show-metadata-access;
%if &effective=YES %then %let eff=-effective;
%if "&onlygroup" ne "0" %then %let filt=-onlyGroup ""&onlygroup"";
%else %if "&onlyuser" ne "0" %then %let filt=-onlyUser ""&onlyuser"";
%local fref1;
%let fref1=%mf_getuniquefileref();
data _null_;
file &fref1 lrecl=32767;
infile &secureref;
input;
put 'data _null_;';
put "infile '&path -disableX11 -host &host -port &port " _infile_ @;
put " ""&metaloc"" &eff &filt 2>&1' pipe lrecl=10000;";
put 'input;putlog _infile_;run;';
run;
data _null_;
infile &fref1;
input;list;run;
%inc &fref1/nosource;
%mp_abort(iftrue= (&syscc ne 0)
,mac=&sysmacroname
,msg=%str(syscc=&syscc on exit)
)
%mend mmx_getmetaperms;/**
@file mmx_spkexport.sas
@brief Exports everything in a particular metadata folder
@details Will export everything in a metadata folder to a specified location.

View File

@@ -269,7 +269,7 @@ data _null_;
put '%local i tempds jsonengine; ';
put ' ';
put '/* see https://github.com/sasjs/core/issues/41 */ ';
put '%if "%upcase(&SYSENCODING)"="WLATIN1" %then %let jsonengine=PROCJSON; ';
put '%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON; ';
put '%else %let jsonengine=DATASTEP; ';
put ' ';
put ' ';

View File

@@ -39,7 +39,7 @@
%local i tempds jsonengine;
/* see https://github.com/sasjs/core/issues/41 */
%if "%upcase(&SYSENCODING)"="WLATIN1" %then %let jsonengine=PROCJSON;
%if "%upcase(&SYSENCODING)" ne "UTF-8" %then %let jsonengine=PROCJSON;
%else %let jsonengine=DATASTEP;