diff --git a/meta/mm_webout.sas b/meta/mm_webout.sas index a108803..ea29399 100644 --- a/meta/mm_webout.sas +++ b/meta/mm_webout.sas @@ -26,7 +26,8 @@ @param action Either FETCH, OPEN, ARR, OBJ or CLOSE @param ds The dataset to send back to the frontend @param dslabel= value to use instead of the real name for sending to JSON - @param fmt= set to N to send back unformatted values + @param fmt=(Y) Set to N to send back unformatted values + @param fref=(_webout) The fileref to which to write the JSON @version 9.3 @author Allan Bowe @@ -91,7 +92,7 @@ %end; %else %if &action=ARR or &action=OBJ %then %do; - %mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt + %mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt,jref=&fref ,engine=DATASTEP,dbg=%str(&_debug) ) %end; @@ -150,6 +151,8 @@ put ",""SYSHOSTNAME"" : ""&syshostname"" "; put ",""SYSJOBID"" : ""&sysjobid"" "; put ",""SYSSITE"" : ""&syssite"" "; + sysvlong=quote(trim(symget('sysvlong'))); + put ',"SYSVLONG" : ' sysvlong; put ",""SYSWARNINGTEXT"" : ""&syswarningtext"" "; put ',"END_DTTM" : "' "%sysfunc(datetime(),datetime20.3)" '" '; put "}" @; @@ -159,4 +162,4 @@ run; %end; -%mend; +%mend mm_webout; diff --git a/sasjs/sasjsconfig.json b/sasjs/sasjsconfig.json index abee80c..96d4481 100644 --- a/sasjs/sasjsconfig.json +++ b/sasjs/sasjsconfig.json @@ -5,7 +5,8 @@ "meta", "metax", "viya", - "lua" + "lua", + "tests/base" ], "docConfig": { "displayMacroCore": false, @@ -16,6 +17,13 @@ "readMe": "../../README.md" } }, + "testConfig": { + "initProgram": "tests/testinit.sas", + "termProgram": "tests/testterm.sas", + "macroVars": { + "mcTestAppLoc": "/Public/temp/macrocore" + } + }, "defaultTarget": "viya", "targets": [ { @@ -27,22 +35,18 @@ "deployServicePack": true }, "macroFolders": [ - "base", - "meta", - "metax", - "viya", - "lua", - "tests/base", "tests/viya" ], - "contextName": "SAS Job Execution compute context", - "testConfig": { - "initProgram": "tests/testinit.sas", - "termProgram": "tests/testterm.sas", - "macroVars": { - "mcTestAppLoc": "/Public/temp/macrocore" - } - } + "contextName": "SAS Job Execution compute context" + }, + { + "name": "sas9", + "serverUrl": "https://sas.analytium.co.uk:8343", + "serverType": "SAS9", + "appLoc": "/Shared Data/temp/macrocore", + "macroFolders": [ + "tests/meta" + ] } ] } \ No newline at end of file diff --git a/tests/meta/mm_webout.test.sas b/tests/meta/mm_webout.test.sas new file mode 100644 index 0000000..1eff425 --- /dev/null +++ b/tests/meta/mm_webout.test.sas @@ -0,0 +1,35 @@ +/** + @file + @brief Testing mm_webout macro + +

SAS Macros

+ @li mf_getuniquefileref.sas + @li mm_webout.sas + @li mp_assert.sas + +**/ + + +%let fref=%mf_getuniquefileref(); +%global _metaperson; +data some datasets; + x=1; +run; +%mm_webout(OPEN,fref=&fref) +%mm_webout(ARR,some,fref=&fref) +%mm_webout(OBJ,datasets,fref=&fref) +%mm_webout(CLOSE,fref=&fref) + +libname test JSON (&fref); +data root; + set test.root; + call symputx('checkval',sysvlong); +run; +data alldata; + set test.alldata; +run; + +%mp_assert( + iftrue=(%str(&checkval)=%str(&sysvlong)), + desc=Check if the sysvlong value was created +) \ No newline at end of file diff --git a/tests/viya/mv_webout.test.sas b/tests/viya/mv_webout.test.sas new file mode 100644 index 0000000..2be9b3a --- /dev/null +++ b/tests/viya/mv_webout.test.sas @@ -0,0 +1,41 @@ +/** + @file + @brief Testing mm_webout macro + +

SAS Macros

+ @li mf_getuniquefileref.sas + @li mv_webout.sas + @li mp_assert.sas + +**/ + + +%let fref=%mf_getuniquefileref(); +%global _metaperson; +data some datasets; + x=1; +run; +%mv_webout(OPEN,fref=&fref,stream=N) +%mv_webout(ARR,some,fref=&fref,stream=N) +%mv_webout(OBJ,datasets,fref=&fref,stream=N) +%mv_webout(CLOSE,fref=&fref,stream=N) + +data _null_; + infile &fref; + input; + putlog _infile_; +run; + +libname test JSON (&fref); +data root; + set test.root; + call symputx('checkval',sysvlong); +run; +data alldata; + set test.alldata; +run; + +%mp_assert( + iftrue=(%str(&checkval)=%str(&sysvlong)), + desc=Check if the sysvlong value was created +) \ No newline at end of file diff --git a/viya/mv_webout.sas b/viya/mv_webout.sas index 6b3f77b..b6c40cb 100644 --- a/viya/mv_webout.sas +++ b/viya/mv_webout.sas @@ -23,9 +23,10 @@ @param action Either OPEN, ARR, OBJ or CLOSE @param ds The dataset to send back to the frontend @param _webout= fileref for returning the json - @param fref= temp fref + @param fref=(_mvwtemp) Temp fileref to which to write the output @param dslabel= value to use instead of the real name for sending to JSON - @param fmt= change to N to strip formats from output + @param fmt=(Y) change to N to strip formats from output + @param stream=(Y) Change to N if not streaming to _webout

SAS Macros

@li mp_jsonout.sas @@ -35,7 +36,7 @@ @author Allan Bowe, source: https://github.com/sasjs/core **/ -%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=Y); +%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=Y,stream=Y); %global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name sasjs_tables SYS_JES_JOB_URI; %if %index("&_debug",log) %then %let _debug=131; @@ -214,14 +215,16 @@ put ",""SYSERRORTEXT"" : ""&syserrortext"" "; put ",""SYSHOSTNAME"" : ""&syshostname"" "; put ",""SYSSITE"" : ""&syssite"" "; + sysvlong=quote(trim(symget('sysvlong'))); + put ',"SYSVLONG" : ' sysvlong; put ",""SYSWARNINGTEXT"" : ""&syswarningtext"" "; put ',"END_DTTM" : "' "%sysfunc(datetime(),datetime20.3)" '" '; put "}"; - %if %upcase(&fref) ne _WEBOUT %then %do; + %if %upcase(&fref) ne _WEBOUT and &stream=Y %then %do; data _null_; rc=fcopy("&fref","_webout");run; %end; %end; -%mend; +%mend mv_webout;