From e5a305360035acc54cc70ad1096a2c548a595334 Mon Sep 17 00:00:00 2001 From: Allan Bowe Date: Mon, 15 Aug 2022 17:21:00 +0000 Subject: [PATCH 1/2] fix: removing automatic dump of WORK tables in mX_webout macros. Closes 298 --- all.sas | 69 ++++++++++++++++++++++------------ meta/mm_createwebservice.sas | 10 +++-- meta/mm_webout.sas | 13 +++++-- server/ms_createwebservice.sas | 10 +++-- server/ms_webout.sas | 13 +++++-- viya/mv_createwebservice.sas | 10 +++-- viya/mv_webout.sas | 13 +++++-- 7 files changed, 90 insertions(+), 48 deletions(-) diff --git a/all.sas b/all.sas index c41afe3..0bd4aeb 100644 --- a/all.sas +++ b/all.sas @@ -15566,7 +15566,7 @@ data _null_; put ' '; put '%mend mf_getuser; '; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL '; - put ' ,showmeta=N,maxobs=MAX '; + put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug '; put ' sasjs_tables; '; @@ -15639,8 +15639,8 @@ data _null_; put '%else %if &action=CLOSE %then %do; '; put ' /* To avoid issues with _webout on EBI we use a temporary file */ '; put ' filename _sjsref temp lrecl=131068; '; - put ' %if %str(&_debug) ge 131 %then %do; '; - put ' /* if debug mode, send back first 10 records of each work table also */ '; + put ' %if %str(&workobs) > 0 %then %do; '; + put ' /* if debug mode, send back first XX records of each work table also */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; @@ -15664,7 +15664,9 @@ data _null_; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; - put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10) '; + put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 '; + put ' ,maxobs=&workobs '; + put ' )) '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put "}"; '; put ' %end; '; @@ -19125,6 +19127,9 @@ run; such as the column formats and types. The metadata is contained inside an object with the same name as the table but prefixed with a dollar sign - ie, `,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}` + @param [in] workobs= (0) When set to a positive integer, will create a new + output object (WORK) which contains this number of observations from all + tables in the WORK library. @param [in] maxobs= (MAX) Provide an integer to limit the number of input rows that should be converted to output JSON @@ -19140,7 +19145,7 @@ run; **/ %macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL - ,showmeta=N,maxobs=MAX + ,showmeta=N,maxobs=MAX,workobs=0 ); %global _webin_file_count _webin_fileref1 _webin_name1 _program _debug sasjs_tables; @@ -19213,8 +19218,8 @@ run; %else %if &action=CLOSE %then %do; /* To avoid issues with _webout on EBI we use a temporary file */ filename _sjsref temp lrecl=131068; - %if %str(&_debug) ge 131 %then %do; - /* if debug mode, send back first 10 records of each work table also */ + %if %str(&workobs) > 0 %then %do; + /* if debug mode, send back first XX records of each work table also */ data;run;%let tempds=%scan(&syslast,2,.); ods output Members=&tempds; proc datasets library=WORK memtype=data; @@ -19238,7 +19243,9 @@ run; put " ""&wt"" : {"; put '"nlobs":' nlobs; put ',"nvars":' nvars; - %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10) + %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 + ,maxobs=&workobs + )) data _null_; file _sjsref mod encoding='utf-8'; put "}"; %end; @@ -20514,7 +20521,7 @@ data _null_; put '%mend mf_getuser; '; put ' '; put '%macro ms_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL '; - put ' ,showmeta=N,maxobs=MAX '; + put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug '; put ' sasjs_tables; '; @@ -20577,8 +20584,8 @@ data _null_; put ' ) '; put '%end; '; put '%else %if &action=CLOSE %then %do; '; - put ' %if %str(&_debug) ge 131 %then %do; '; - put ' /* if debug mode, send back first 10 records of each work table also */ '; + put ' %if %str(&workobs) > 0 %then %do; '; + put ' /* if debug mode, send back first XX records of each work table also */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; @@ -20603,7 +20610,9 @@ data _null_; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; - put ' %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10) '; + put ' %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10 '; + put ' ,maxobs=&workobs '; + put ' ) '; put ' data _null_; file &fref mod encoding=''utf-8'' termstr=lf; '; put ' put "}"; '; put ' %end; '; @@ -21488,6 +21497,9 @@ run; such as the column formats and types. The metadata is contained inside an object with the same name as the table but prefixed with a dollar sign - ie, `,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}` + @param [in] workobs= (0) When set to a positive integer, will create a new + output object (WORK) which contains this number of observations from all + tables in the WORK library. @param [in] maxobs= (MAX) Provide an integer to limit the number of input rows that should be converted to output JSON @@ -21506,7 +21518,7 @@ run; **/ %macro ms_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL - ,showmeta=N,maxobs=MAX + ,showmeta=N,maxobs=MAX,workobs=0 ); %global _webin_file_count _webin_fileref1 _webin_name1 _program _debug sasjs_tables; @@ -21569,8 +21581,8 @@ run; ) %end; %else %if &action=CLOSE %then %do; - %if %str(&_debug) ge 131 %then %do; - /* if debug mode, send back first 10 records of each work table also */ + %if %str(&workobs) > 0 %then %do; + /* if debug mode, send back first XX records of each work table also */ data;run;%let tempds=%scan(&syslast,2,.); ods output Members=&tempds; proc datasets library=WORK memtype=data; @@ -21595,7 +21607,9 @@ run; put " ""&wt"" : {"; put '"nlobs":' nlobs; put ',"nvars":' nvars; - %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10) + %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10 + ,maxobs=&workobs + ) data _null_; file &fref mod encoding='utf-8' termstr=lf; put "}"; %end; @@ -22969,7 +22983,7 @@ data _null_; put ' '; put '%mend mf_getuser; '; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL '; - put ' ,showmeta=N,maxobs=MAX '; + put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name '; put ' sasjs_tables SYS_JES_JOB_URI; '; @@ -23076,8 +23090,8 @@ data _null_; put ' ) '; put '%end; '; put '%else %if &action=CLOSE %then %do; '; - put ' %if %str(&_debug) ge 131 %then %do; '; - put ' /* send back first 10 records of each work table for debugging */ '; + put ' %if %str(&workobs) > 0 %then %do; '; + put ' /* send back first XX records of each work table for debugging */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; @@ -23100,7 +23114,9 @@ data _null_; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; - put ' %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10) '; + put ' %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y '; + put ' ,maxobs=&workobs '; + put ' ) '; put ' data _null_; file &fref mod;put "}"; '; put ' %end; '; put ' data _null_; file &fref mod;put "}";run; '; @@ -26757,6 +26773,9 @@ filename &fref1 clear; `,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}` @param [in] maxobs= (MAX) Provide an integer to limit the number of input rows that should be converted to output JSON + @param [in] workobs= (0) When set to a positive integer, will create a new + output object (WORK) which contains this number of observations from all + tables in the WORK library.

SAS Macros

@li mp_jsonout.sas @@ -26771,7 +26790,7 @@ filename &fref1 clear; **/ %macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL - ,showmeta=N,maxobs=MAX + ,showmeta=N,maxobs=MAX,workobs=0 ); %global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name sasjs_tables SYS_JES_JOB_URI; @@ -26878,8 +26897,8 @@ filename &fref1 clear; ) %end; %else %if &action=CLOSE %then %do; - %if %str(&_debug) ge 131 %then %do; - /* send back first 10 records of each work table for debugging */ + %if %str(&workobs) > 0 %then %do; + /* send back first XX records of each work table for debugging */ data;run;%let tempds=%scan(&syslast,2,.); ods output Members=&tempds; proc datasets library=WORK memtype=data; @@ -26902,7 +26921,9 @@ filename &fref1 clear; put " ""&wt"" : {"; put '"nlobs":' nlobs; put ',"nvars":' nvars; - %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10) + %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y + ,maxobs=&workobs + ) data _null_; file &fref mod;put "}"; %end; data _null_; file &fref mod;put "}";run; diff --git a/meta/mm_createwebservice.sas b/meta/mm_createwebservice.sas index 47ba7a9..72245c1 100644 --- a/meta/mm_createwebservice.sas +++ b/meta/mm_createwebservice.sas @@ -447,7 +447,7 @@ data _null_; put ' '; put '%mend mf_getuser; '; put '%macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL '; - put ' ,showmeta=N,maxobs=MAX '; + put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug '; put ' sasjs_tables; '; @@ -520,8 +520,8 @@ data _null_; put '%else %if &action=CLOSE %then %do; '; put ' /* To avoid issues with _webout on EBI we use a temporary file */ '; put ' filename _sjsref temp lrecl=131068; '; - put ' %if %str(&_debug) ge 131 %then %do; '; - put ' /* if debug mode, send back first 10 records of each work table also */ '; + put ' %if %str(&workobs) > 0 %then %do; '; + put ' /* if debug mode, send back first XX records of each work table also */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; @@ -545,7 +545,9 @@ data _null_; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; - put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10) '; + put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 '; + put ' ,maxobs=&workobs '; + put ' )) '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put "}"; '; put ' %end; '; diff --git a/meta/mm_webout.sas b/meta/mm_webout.sas index 6976b26..8791817 100644 --- a/meta/mm_webout.sas +++ b/meta/mm_webout.sas @@ -34,6 +34,9 @@ such as the column formats and types. The metadata is contained inside an object with the same name as the table but prefixed with a dollar sign - ie, `,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}` + @param [in] workobs= (0) When set to a positive integer, will create a new + output object (WORK) which contains this number of observations from all + tables in the WORK library. @param [in] maxobs= (MAX) Provide an integer to limit the number of input rows that should be converted to output JSON @@ -49,7 +52,7 @@ **/ %macro mm_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL - ,showmeta=N,maxobs=MAX + ,showmeta=N,maxobs=MAX,workobs=0 ); %global _webin_file_count _webin_fileref1 _webin_name1 _program _debug sasjs_tables; @@ -122,8 +125,8 @@ %else %if &action=CLOSE %then %do; /* To avoid issues with _webout on EBI we use a temporary file */ filename _sjsref temp lrecl=131068; - %if %str(&_debug) ge 131 %then %do; - /* if debug mode, send back first 10 records of each work table also */ + %if %str(&workobs) > 0 %then %do; + /* if debug mode, send back first XX records of each work table also */ data;run;%let tempds=%scan(&syslast,2,.); ods output Members=&tempds; proc datasets library=WORK memtype=data; @@ -147,7 +150,9 @@ put " ""&wt"" : {"; put '"nlobs":' nlobs; put ',"nvars":' nvars; - %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10) + %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 + ,maxobs=&workobs + )) data _null_; file _sjsref mod encoding='utf-8'; put "}"; %end; diff --git a/server/ms_createwebservice.sas b/server/ms_createwebservice.sas index b61626b..7038fa2 100644 --- a/server/ms_createwebservice.sas +++ b/server/ms_createwebservice.sas @@ -449,7 +449,7 @@ data _null_; put '%mend mf_getuser; '; put ' '; put '%macro ms_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL '; - put ' ,showmeta=N,maxobs=MAX '; + put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileref1 _webin_name1 _program _debug '; put ' sasjs_tables; '; @@ -512,8 +512,8 @@ data _null_; put ' ) '; put '%end; '; put '%else %if &action=CLOSE %then %do; '; - put ' %if %str(&_debug) ge 131 %then %do; '; - put ' /* if debug mode, send back first 10 records of each work table also */ '; + put ' %if %str(&workobs) > 0 %then %do; '; + put ' /* if debug mode, send back first XX records of each work table also */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; @@ -538,7 +538,9 @@ data _null_; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; - put ' %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10) '; + put ' %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10 '; + put ' ,maxobs=&workobs '; + put ' ) '; put ' data _null_; file &fref mod encoding=''utf-8'' termstr=lf; '; put ' put "}"; '; put ' %end; '; diff --git a/server/ms_webout.sas b/server/ms_webout.sas index 5c158d7..1b44e64 100644 --- a/server/ms_webout.sas +++ b/server/ms_webout.sas @@ -31,6 +31,9 @@ such as the column formats and types. The metadata is contained inside an object with the same name as the table but prefixed with a dollar sign - ie, `,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}` + @param [in] workobs= (0) When set to a positive integer, will create a new + output object (WORK) which contains this number of observations from all + tables in the WORK library. @param [in] maxobs= (MAX) Provide an integer to limit the number of input rows that should be converted to output JSON @@ -49,7 +52,7 @@ **/ %macro ms_webout(action,ds,dslabel=,fref=_webout,fmt=N,missing=NULL - ,showmeta=N,maxobs=MAX + ,showmeta=N,maxobs=MAX,workobs=0 ); %global _webin_file_count _webin_fileref1 _webin_name1 _program _debug sasjs_tables; @@ -112,8 +115,8 @@ ) %end; %else %if &action=CLOSE %then %do; - %if %str(&_debug) ge 131 %then %do; - /* if debug mode, send back first 10 records of each work table also */ + %if %str(&workobs) > 0 %then %do; + /* if debug mode, send back first XX records of each work table also */ data;run;%let tempds=%scan(&syslast,2,.); ods output Members=&tempds; proc datasets library=WORK memtype=data; @@ -138,7 +141,9 @@ put " ""&wt"" : {"; put '"nlobs":' nlobs; put ',"nvars":' nvars; - %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10) + %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10 + ,maxobs=&workobs + ) data _null_; file &fref mod encoding='utf-8' termstr=lf; put "}"; %end; diff --git a/viya/mv_createwebservice.sas b/viya/mv_createwebservice.sas index cc5cfb0..9766247 100644 --- a/viya/mv_createwebservice.sas +++ b/viya/mv_createwebservice.sas @@ -590,7 +590,7 @@ data _null_; put ' '; put '%mend mf_getuser; '; put '%macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL '; - put ' ,showmeta=N,maxobs=MAX '; + put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put '); '; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name '; put ' sasjs_tables SYS_JES_JOB_URI; '; @@ -697,8 +697,8 @@ data _null_; put ' ) '; put '%end; '; put '%else %if &action=CLOSE %then %do; '; - put ' %if %str(&_debug) ge 131 %then %do; '; - put ' /* send back first 10 records of each work table for debugging */ '; + put ' %if %str(&workobs) > 0 %then %do; '; + put ' /* send back first XX records of each work table for debugging */ '; put ' data;run;%let tempds=%scan(&syslast,2,.); '; put ' ods output Members=&tempds; '; put ' proc datasets library=WORK memtype=data; '; @@ -721,7 +721,9 @@ data _null_; put ' put " ""&wt"" : {"; '; put ' put ''"nlobs":'' nlobs; '; put ' put '',"nvars":'' nvars; '; - put ' %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10) '; + put ' %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y '; + put ' ,maxobs=&workobs '; + put ' ) '; put ' data _null_; file &fref mod;put "}"; '; put ' %end; '; put ' data _null_; file &fref mod;put "}";run; '; diff --git a/viya/mv_webout.sas b/viya/mv_webout.sas index 02659a8..78611a1 100644 --- a/viya/mv_webout.sas +++ b/viya/mv_webout.sas @@ -35,6 +35,9 @@ `,"$tablename":{"formats":{"col1":"$CHAR1"},"types":{"COL1":"C"}}` @param [in] maxobs= (MAX) Provide an integer to limit the number of input rows that should be converted to output JSON + @param [in] workobs= (0) When set to a positive integer, will create a new + output object (WORK) which contains this number of observations from all + tables in the WORK library.

SAS Macros

@li mp_jsonout.sas @@ -49,7 +52,7 @@ **/ %macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=N,stream=Y,missing=NULL - ,showmeta=N,maxobs=MAX + ,showmeta=N,maxobs=MAX,workobs=0 ); %global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name sasjs_tables SYS_JES_JOB_URI; @@ -156,8 +159,8 @@ ) %end; %else %if &action=CLOSE %then %do; - %if %str(&_debug) ge 131 %then %do; - /* send back first 10 records of each work table for debugging */ + %if %str(&workobs) > 0 %then %do; + /* send back first XX records of each work table for debugging */ data;run;%let tempds=%scan(&syslast,2,.); ods output Members=&tempds; proc datasets library=WORK memtype=data; @@ -180,7 +183,9 @@ put " ""&wt"" : {"; put '"nlobs":' nlobs; put ',"nvars":' nvars; - %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y,maxobs=10) + %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,showmeta=Y + ,maxobs=&workobs + ) data _null_; file &fref mod;put "}"; %end; data _null_; file &fref mod;put "}";run; From 7b7759e1cec205d71138b277ec687642393354fe Mon Sep 17 00:00:00 2001 From: Allan Bowe Date: Mon, 15 Aug 2022 17:44:24 +0000 Subject: [PATCH 2/2] chore: fix renegade closing bracket --- all.sas | 4 ++-- meta/mm_createwebservice.sas | 2 +- meta/mm_webout.sas | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/all.sas b/all.sas index 0bd4aeb..361d499 100644 --- a/all.sas +++ b/all.sas @@ -15666,7 +15666,7 @@ data _null_; put ' put '',"nvars":'' nvars; '; put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 '; put ' ,maxobs=&workobs '; - put ' )) '; + put ' ) '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put "}"; '; put ' %end; '; @@ -19245,7 +19245,7 @@ run; put ',"nvars":' nvars; %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 ,maxobs=&workobs - )) + ) data _null_; file _sjsref mod encoding='utf-8'; put "}"; %end; diff --git a/meta/mm_createwebservice.sas b/meta/mm_createwebservice.sas index 72245c1..6b8fe10 100644 --- a/meta/mm_createwebservice.sas +++ b/meta/mm_createwebservice.sas @@ -547,7 +547,7 @@ data _null_; put ' put '',"nvars":'' nvars; '; put ' %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 '; put ' ,maxobs=&workobs '; - put ' )) '; + put ' ) '; put ' data _null_; file _sjsref mod encoding=''utf-8''; '; put ' put "}"; '; put ' %end; '; diff --git a/meta/mm_webout.sas b/meta/mm_webout.sas index 8791817..7904f86 100644 --- a/meta/mm_webout.sas +++ b/meta/mm_webout.sas @@ -152,7 +152,7 @@ put ',"nvars":' nvars; %mp_jsonout(OBJ,&wt,jref=_sjsref,dslabel=first10rows,showmeta=Y,maxobs=10 ,maxobs=&workobs - )) + ) data _null_; file _sjsref mod encoding='utf-8'; put "}"; %end;