55%macro mx_testservice(program,
63 viyaresult=WEBOUT_JSON,
64 viyacontext=SAS Job Execution compute context
66%local dbg pcnt fref1 fref2 webref webrefpath i webcount var platform;
67%
if &mdebug=1 %then %
do;
68 %put &sysmacroname entry vars:;
75%
if &inputparams ne 0 %then %
do;
78 if not nvalid(name,
'v7') then putlog (_all_)(=);
80 'program','inputfiles','inputparams','debug','outlib','outref'
81 ) then putlog (_all_)(=);
84 call symputx(name,quote(cats(value)),'l');
85 call symputx(cats('pval',x),name,'l');
86 call symputx('pcnt',x,'l');
89 %mp_abort(iftrue= (%mf_nobs(&inputparams) ne &pcnt)
91 ,msg=%str(Invalid values in &inputparams)
96%if "&inputdatasets" ne "0" %then %do;
97 %if %quote(&inputfiles)=0 %then %let inputfiles=;
98 %do i=1 %to %sysfunc(countw(&inputdatasets,%str( )));
99 %let var=%scan(&inputdatasets,&i,%str( ));
101 %let dsref&i=%mf_getuniquefileref();
102 %mp_ds2csv(&var,outref=&&dsref&i,headerformat=SASJS)
103 %let inputfiles=&inputfiles &&dsref&i:%scan(&var,-1,.);
107%let platform=%mf_getplatform();
108%let fref1=%mf_getuniquefileref();
109%let fref2=%mf_getuniquefileref();
110%let webref=%mf_getuniquefileref();
111%let webrefpath=%sysfunc(pathname(work))/%mf_getuniquename();
113filename &webref "&webrefpath";
115%if &platform=SASMETA %then %do;
118 %if %quote(&inputfiles) ne 0 %then %do;
119 %let webcount=%sysfunc(countw(&inputfiles));
121 %do i=1 %to &webcount;
122 %let var=%scan(&inputfiles,&i,%str( ));
123 %local webfref&i webname&i;
124 %let webref&i=%scan(&var,1,%str(:));
125 %let webname&i=%scan(&var,2,%str(:));
126 %put webref&i=&&webref&i;
127 %put webname&i=&&webname&i;
130 %else %let webcount=0;
132 proc stp program="&program";
133 inputparam _program="&program"
134 %do i=1 %to &webcount;
135 %if &webcount=1 %then %do;
136 _webin_fileref="&&webref&i"
137 _webin_name="&&webname&i"
140 _webin_fileref&i="&&webref&i"
141 _webin_name&i="&&webname&i"
144 _webin_file_count="&webcount"
148 &&pval&i=&&&&&&pval&i
151 %do i=1 %to &webcount;
152 inputfile &&webref&i;
154 outputfile _webout=&webref;
162 if index(_infile_,'>>weboutBEGIN<<') then do;
163 line=tranwrd(_infile_,'>>weboutBEGIN<<','');
166 else if index(_infile_,'>>weboutEND<<') then do;
167 line=tranwrd(_infile_,'>>weboutEND<<','');
178 %if &outlib ne 0 %then %do;
179 libname &outlib json (&fref1);
181 %if &outref ne 0 %then %do;
182 filename &outref temp;
183 %mp_binarycopy(inref=&webref,outref=&outref)
187%else %if &platform=SASVIYA %then %do;
191 %let ds1=%mf_getuniquename();
192 %if "&inputparams" ne "0" %then %do;
193 proc transpose data=&inputparams out=&ds1;
203 %local webcount i var sasjs_tables;
204 %if %quote(&inputfiles) ne 0 %then %do;
205 %let webcount=%sysfunc(countw(&inputfiles));
207 %do i=1 %to &webcount;
208 %let var=%scan(&inputfiles,&i,%str( ));
209 %local webfref&i webname&i sasjs&i.data;
210 %let webref&i=%scan(&var,1,%str(:));
211 %let webname&i=%scan(&var,2,%str(:));
212 %put webref&i=&&webref&i;
213 %put webname&i=&&webname&i;
215 %let sasjs_tables=&sasjs_tables &&webname&i;
217 infile &&webref&i lrecl=32767;
219 if _n_=1 then call symputx("sasjs&i.data",_infile_);
221 "sasjs&i.data",cats(symget("sasjs&i.data"),'0D0A'x,_infile_)
223 putlog "&sysmacroname infile: " _infile_;
227 length sasjs&i.data $32767 sasjs_tables $1000;
228 sasjs&i.data=symget("sasjs&i.data");
229 sasjs_tables=symget("sasjs_tables");
233 %else %let webcount=0;
236 retain _program "&program";
237 retain _contextname "&viyacontext";
239 putlog "&sysmacroname inputparams:";
243 %mv_jobflow(inds=&ds1
258 call symputx('uri',uri);
259 putlog "&sysmacroname: fetching results for " uri;
262 %mv_getjobresult(uri=&uri,
270%else %if &platform=SASJS %then %do;
272 %ms_testservice(&program
273 ,inputfiles=&inputfiles
274 ,inputdatasets=&inputdatasets
275 ,inputparams=&inputparams
284 %put %str(ERR)OR: Unrecognised platform: &platform;
287%if &mdebug=0 %then %do;
288 filename &fref1 clear;
289 %if &platform ne SASJS %then %do;
290 filename &fref2 clear;
291 filename &webref clear;
295 %put &sysmacroname exit vars:;