mirror of
https://github.com/sasjs/core.git
synced 2026-06-08 20:10:20 +00:00
fix: issue with running jobs in viya2026 (all params must be strings)
This commit is contained in:
@@ -12,6 +12,8 @@
|
|||||||
/* location in metadata or SAS Drive for temporary files */
|
/* location in metadata or SAS Drive for temporary files */
|
||||||
%let mcTestAppLoc=/Users/&sysuserid/testresults/sasjs_core/%mf_uid();
|
%let mcTestAppLoc=/Users/&sysuserid/testresults/sasjs_core/%mf_uid();
|
||||||
|
|
||||||
|
%let mcTestContext=SAS Job Execution compute context;
|
||||||
|
|
||||||
/* set defaults */
|
/* set defaults */
|
||||||
%mp_init()
|
%mp_init()
|
||||||
|
|
||||||
|
|||||||
@@ -33,19 +33,19 @@ data _null_;
|
|||||||
;
|
;
|
||||||
run;
|
run;
|
||||||
|
|
||||||
%mv_createjob(path=/Public/temp,name=demo1,code=testprog)
|
%mv_createjob(path=&mcTestAppLoc,name=demo1,code=testprog)
|
||||||
%mv_createjob(path=/Public/temp,name=demo2,code=testprog)
|
%mv_createjob(path=&mcTestAppLoc,name=demo2,code=testprog)
|
||||||
|
|
||||||
data work.inputjobs;
|
data work.inputjobs;
|
||||||
_contextName='SAS Job Execution compute context';
|
_contextName="&mcTestContext";
|
||||||
do flow_id=1 to 2;
|
do flow_id=1 to 2;
|
||||||
do i=1 to 4;
|
do i=1 to 4;
|
||||||
_program='/Public/temp/demo1';
|
_program="&mcTestAppLoc/demo1";
|
||||||
macrovar1=10*i;
|
macrovar1=10*i;
|
||||||
macrovar2=4*i;
|
macrovar2=4*i;
|
||||||
output;
|
output;
|
||||||
i+1;
|
i+1;
|
||||||
_program='/Public/temp/demo2';
|
_program="&mcTestAppLoc/demo2";
|
||||||
macrovar1=40*i;
|
macrovar1=40*i;
|
||||||
macrovar2=44*i;
|
macrovar2=44*i;
|
||||||
output;
|
output;
|
||||||
|
|||||||
@@ -29,19 +29,19 @@ data _null_;
|
|||||||
;
|
;
|
||||||
run;
|
run;
|
||||||
|
|
||||||
%mv_createjob(path=/Public/temp,name=demo1,code=testprog)
|
%mv_createjob(path=&mcTestAppLoc,name=demo1,code=testprog)
|
||||||
%mv_createjob(path=/Public/temp,name=demo2,code=testprog)
|
%mv_createjob(path=&mcTestAppLoc,name=demo2,code=testprog)
|
||||||
|
|
||||||
data work.inputjobs;
|
data work.inputjobs;
|
||||||
_contextName='SAS Job Execution compute context';
|
_contextName="&mcTestContext";
|
||||||
do flow_id=1 to 2;
|
do flow_id=1 to 2;
|
||||||
do i=1 to 4;
|
do i=1 to 4;
|
||||||
_program='/Public/temp/demo1';
|
_program="&mcTestAppLoc/demo1";
|
||||||
macrovar1=10*i;
|
macrovar1=10*i;
|
||||||
macrovar2=4*i;
|
macrovar2=4*i;
|
||||||
output;
|
output;
|
||||||
i+1;
|
i+1;
|
||||||
_program='/Public/temp/demo2';
|
_program="&mcTestAppLoc/demo2";
|
||||||
macrovar1=40*i;
|
macrovar1=40*i;
|
||||||
macrovar2=44*i;
|
macrovar2=44*i;
|
||||||
output;
|
output;
|
||||||
|
|||||||
+34
-19
@@ -121,7 +121,7 @@
|
|||||||
@li mf_nobs.sas
|
@li mf_nobs.sas
|
||||||
@li mp_abort.sas
|
@li mp_abort.sas
|
||||||
@li mf_getplatform.sas
|
@li mf_getplatform.sas
|
||||||
@li mf_getuniquefileref.sas
|
@li mf_getvarlist.sas
|
||||||
@li mf_existvarlist.sas
|
@li mf_existvarlist.sas
|
||||||
@li mv_jobwaitfor.sas
|
@li mv_jobwaitfor.sas
|
||||||
@li mv_jobexecute.sas
|
@li mv_jobexecute.sas
|
||||||
@@ -234,14 +234,12 @@ data _null_;
|
|||||||
if last then call symputx('flowcnt',cnt,'l');
|
if last then call symputx('flowcnt',cnt,'l');
|
||||||
run;
|
run;
|
||||||
|
|
||||||
/* prepare temporary datasets and frefs */
|
/* prepare temporary datasets */
|
||||||
%local fid jid jds jjson jdsapp jdsrunning jdswaitfor jfref;
|
%local fid jid jds jdsapp jdsrunning jdswaitfor;
|
||||||
data;run;%let jds=&syslast;
|
data;run;%let jds=&syslast;
|
||||||
data;run;%let jjson=&syslast;
|
|
||||||
data;run;%let jdsapp=&syslast;
|
data;run;%let jdsapp=&syslast;
|
||||||
data;run;%let jdsrunning=&syslast;
|
data;run;%let jdsrunning=&syslast;
|
||||||
data;run;%let jdswaitfor=&syslast;
|
data;run;%let jdswaitfor=&syslast;
|
||||||
%let jfref=%mf_getuniquefileref();
|
|
||||||
|
|
||||||
/* start loop */
|
/* start loop */
|
||||||
%do fid=1 %to &flowcnt;
|
%do fid=1 %to &flowcnt;
|
||||||
@@ -259,23 +257,39 @@ data;run;%let jdswaitfor=&syslast;
|
|||||||
&dbg. if _n_= 1 then putlog "Loop &fid";
|
&dbg. if _n_= 1 then putlog "Loop &fid";
|
||||||
&dbg. putlog (_all_)(=);
|
&dbg. putlog (_all_)(=);
|
||||||
run;
|
run;
|
||||||
|
/* build list of char and num vars in json format */
|
||||||
|
/* Viya 2026 expects all values to be strings */
|
||||||
|
%local nvars cvars ii _vnm;
|
||||||
|
%let cvars=%mf_getvarlist(&jds,typefilter=C);
|
||||||
|
%let nvars=%mf_getvarlist(&jds,typefilter=N);
|
||||||
%put exporting job variables in json format;
|
%put exporting job variables in json format;
|
||||||
%do jid=1 %to &jcnt;
|
%do jid=1 %to &jcnt;
|
||||||
data &jjson;
|
|
||||||
set &jds;
|
|
||||||
if _n_=&jid then do;
|
|
||||||
output;
|
|
||||||
stop;
|
|
||||||
end;
|
|
||||||
run;
|
|
||||||
proc json out=&jfref;
|
|
||||||
export &jjson / nosastags fmtnumeric;
|
|
||||||
run;
|
|
||||||
data _null_;
|
data _null_;
|
||||||
infile &jfref lrecl=32767;
|
set &jds;
|
||||||
input;
|
if _n_=&jid;
|
||||||
jparams=cats('jparams',symget('jid'));
|
length _param $32767;
|
||||||
call symputx(jparams,substr(_infile_,3,length(_infile_)-4));
|
_param='';
|
||||||
|
%if %length(&cvars)>0 %then %do ii=1 %to %sysfunc(countw(&cvars,%str( )));
|
||||||
|
%let _vnm=%scan(&cvars,&ii,%str( ));
|
||||||
|
if _param ne '' then _param=cats(_param,',');
|
||||||
|
_param=cats(_param,'"'
|
||||||
|
,"%lowcase(&_vnm)"
|
||||||
|
,'":'
|
||||||
|
,quote(trim(&_vnm))
|
||||||
|
);
|
||||||
|
%end;
|
||||||
|
%if %length(&nvars)>0 %then %do ii=1 %to %sysfunc(countw(&nvars,%str( )));
|
||||||
|
%let _vnm=%scan(&nvars,&ii,%str( ));
|
||||||
|
if _param ne '' then _param=cats(_param,',');
|
||||||
|
_param=cats(_param,'"'
|
||||||
|
,"%lowcase(&_vnm)"
|
||||||
|
,'":"'
|
||||||
|
,strip(put(&_vnm,best32.))
|
||||||
|
,'"'
|
||||||
|
);
|
||||||
|
%end;
|
||||||
|
call symputx(cats('jparams',&jid),_param,'l');
|
||||||
|
stop;
|
||||||
run;
|
run;
|
||||||
%local jobuid&jid;
|
%local jobuid&jid;
|
||||||
%let jobuid&jid=0; /* used in next loop */
|
%let jobuid&jid=0; /* used in next loop */
|
||||||
@@ -320,6 +334,7 @@ data;run;%let jdswaitfor=&syslast;
|
|||||||
,paramstring=%superq(jparams&jid)
|
,paramstring=%superq(jparams&jid)
|
||||||
,outds=&jdsapp
|
,outds=&jdsapp
|
||||||
,contextname=&&context&jid
|
,contextname=&&context&jid
|
||||||
|
,mdebug=&mdebug
|
||||||
)
|
)
|
||||||
data &jdsapp;
|
data &jdsapp;
|
||||||
format jobparams $32767.;
|
format jobparams $32767.;
|
||||||
|
|||||||
Reference in New Issue
Block a user