38 %macro mv_webout(action,ds,fref=_mvwtemp,dslabel=,fmt=Y);
39 %global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name
40 sasjs_tables SYS_JES_JOB_URI;
41 %
if %index(
"&_debug",log) %then %let _debug=131;
44 %let action=%upcase(&action);
46 %
if &action=FETCH %then %
do;
47 %
if %upcase(&_omittextlog)=FALSE or %str(&_debug) ge 131 %then %
do;
48 options mprint notes mprintnest;
51 %
if not %symexist(_webin_fileuri1) %then %
do;
52 %let _webin_file_count=%eval(&_webin_file_count+0);
53 %let _webin_fileuri1=&_webin_fileuri;
54 %let _webin_name1=&_webin_name;
58 %
if %length(&sasjs_tables.XX)>2 %then %
do;
59 filename _sasjs
"%sysfunc(pathname(work))/sasjs.lua";
62 put
's=sas.symget("sasjs_tables")';
63 put
'if(s:sub(1,7) == "%nrstr(")';
65 put
' tablist=s:sub(8,s:len()-1)';
69 put
'for i = 1,sas.countw(tablist) ';
71 put
' tab=sas.scan(tablist,i)';
73 put
' if (sas.symexist("sasjs"..i.."data0")==0)';
76 put
' s=sas.symget("sasjs"..i.."data")';
77 put
' if(s:sub(1,7) == "%nrstr(")';
79 put
' sasdata=s:sub(8,s:len()-1)';
84 put
' for d = 1, sas.symget("sasjs"..i.."data0")';
86 put
' s=sas.symget("sasjs"..i.."data"..d)';
87 put
' if(s:sub(1,7) == "%nrstr(")';
89 put
' sasdata=sasdata..s:sub(8,s:len()-1)';
91 put
' sasdata=sasdata..s';
95 put
' file = io.open(sas.pathname("work").."/"..tab..".csv", "a")';
96 put
' io.output(file)';
97 put
' io.write(sasdata)';
98 put
' io.close(file)';
104 %
do i=1 %to %sysfunc(countw(&sasjs_tables));
105 %local table; %let table=%scan(&sasjs_tables,&i);
107 infile
"%sysfunc(pathname(work))/&table..csv" termstr=crlf ;
109 if _n_=1 then call symputx(
'input_statement',_infile_);
112 infile
"%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd termstr=crlf;
113 input &input_statement;
117 %
else %
do i=1 %to &_webin_file_count;
120 filename indata filesrvc
"&&_webin_fileuri&i" lrecl=999999;
122 infile indata termstr=crlf lrecl=32767;
124 if _n_=1 then call symputx(
'input_statement',_infile_);
125 %
if %str(&_debug) ge 131 %then %
do;
126 if _n_<20 then putlog _infile_;
133 data &&_webin_name&i;
134 infile indata firstobs=2 dsd termstr=crlf ;
135 input &input_statement;
137 %let sasjs_tables=&sasjs_tables &&_webin_name&i;
140 %
else %
if &action=OPEN %then %
do;
143 %
if "X&SYS_JES_JOB_URI.X"=
"XX" %then %
do;
144 filename _webout temp lrecl=999999 mod;
147 filename _webout filesrvc parenturi=
"&SYS_JES_JOB_URI"
148 name=
"_webout.json" lrecl=999999 mod;
152 %
if %upcase(&fref) ne _WEBOUT %then %
do;
153 filename &fref temp lrecl=999999 permission=
'A::u::rwx,A::g::rw-,A::o::---' mod;
157 data _null_;file &fref;
158 put
'{"START_DTTM" : "' "%sysfunc(datetime(),datetime20.3)" '"';
161 %
else %
if &action=ARR or &action=OBJ %then %
do;
162 %mp_jsonout(&action,&ds,dslabel=&dslabel,fmt=&fmt
163 ,jref=&fref,engine=PROCJSON,dbg=%str(&_debug)
166 %
else %
if &action=CLOSE %then %
do;
167 %
if %str(&_debug) ge 131 %then %
do;
170 data;run;%let tempds=%scan(&syslast,2,.);
171 ods output Members=&tempds;
172 proc datasets library=WORK memtype=data;
173 %local wtcnt;%let wtcnt=0;
174 data _null_;
set &tempds;
175 if not (name =:
"DATA");
177 call symputx(
'wt'!!left(i),name);
178 call symputx(
'wtcnt',i);
179 data _null_; file &fref mod; put
",""WORK"":{";
182 proc contents noprint data=&wt
183 out=_data_ (keep=name type length format:);
184 run;%let tempds=%scan(&syslast,2,.);
185 data _null_; file &fref mod;
186 dsid=open(
"WORK.&wt",
'is');
187 nlobs=attrn(dsid,
'NLOBS');
188 nvars=attrn(dsid,
'NVARS');
190 if &i>1 then put
','@;
192 put
'"nlobs":' nlobs;
193 put
',"nvars":' nvars;
194 %mp_jsonout(OBJ,&tempds,jref=&fref,dslabel=colattrs,engine=DATASTEP)
195 %mp_jsonout(OBJ,&wt,jref=&fref,dslabel=first10rows,engine=DATASTEP)
196 data _null_; file &fref mod;put
"}";
198 data _null_; file &fref mod;put
"}";run;
202 data _null_;file &fref mod;
203 _PROGRAM=quote(trim(resolve(symget(
'_PROGRAM'))));
204 put
",""SYSUSERID"" : ""&sysuserid"" ";
205 put
",""MF_GETUSER"" : ""%mf_getuser()"" ";
206 SYS_JES_JOB_URI=quote(trim(resolve(symget(
'SYS_JES_JOB_URI'))));
207 put
',"SYS_JES_JOB_URI" : ' SYS_JES_JOB_URI ;
208 put
",""SYSJOBID"" : ""&sysjobid"" ";
209 put
",""_DEBUG"" : ""&_debug"" ";
210 put
',"_PROGRAM" : ' _PROGRAM ;
211 put
",""SYSCC"" : ""&syscc"" ";
212 put
",""SYSERRORTEXT"" : ""&syserrortext"" ";
213 put
",""SYSHOSTNAME"" : ""&syshostname"" ";
214 put
",""SYSSITE"" : ""&syssite"" ";
215 put
",""SYSWARNINGTEXT"" : ""&syswarningtext"" ";
216 put
',"END_DTTM" : "' "%sysfunc(datetime(),datetime20.3)" '" ';
219 %
if %upcase(&fref) ne _WEBOUT %then %
do;
220 data _null_; rc=fcopy(
"&fref",
"_webout");run;