mirror of
https://github.com/sasjs/core.git
synced 2026-01-09 18:30:06 +00:00
Merge pull request #208 from sasjs/issue207
fix: removing LUA dependency from mv_webout to enable Viya 4 compatibility
This commit is contained in:
142
all.sas
142
all.sas
@@ -20497,7 +20497,7 @@ data _null_;
|
|||||||
put ' sasjs_tables SYS_JES_JOB_URI; ';
|
put ' sasjs_tables SYS_JES_JOB_URI; ';
|
||||||
put '%if %index("&_debug",log) %then %let _debug=131; ';
|
put '%if %index("&_debug",log) %then %let _debug=131; ';
|
||||||
put ' ';
|
put ' ';
|
||||||
put '%local i tempds; ';
|
put '%local i tempds table; ';
|
||||||
put '%let action=%upcase(&action); ';
|
put '%let action=%upcase(&action); ';
|
||||||
put ' ';
|
put ' ';
|
||||||
put '%if &action=FETCH %then %do; ';
|
put '%if &action=FETCH %then %do; ';
|
||||||
@@ -20512,60 +20512,35 @@ data _null_;
|
|||||||
put ' %end; ';
|
put ' %end; ';
|
||||||
put ' ';
|
put ' ';
|
||||||
put ' /* if the sasjs_tables param is passed, we expect param based upload */ ';
|
put ' /* if the sasjs_tables param is passed, we expect param based upload */ ';
|
||||||
put ' %if %length(&sasjs_tables.XX)>2 %then %do; ';
|
put ' %if %length(&sasjs_tables.X)>1 %then %do; ';
|
||||||
put ' filename _sasjs "%sysfunc(pathname(work))/sasjs.lua"; ';
|
|
||||||
put ' data _null_; ';
|
|
||||||
put ' file _sasjs; ';
|
|
||||||
put ' put ''s=sas.symget("sasjs_tables")''; ';
|
|
||||||
put ' put ''if(s:sub(1,7) == "%nrstr(")''; ';
|
|
||||||
put ' put ''then''; ';
|
|
||||||
put ' put '' tablist=s:sub(8,s:len()-1)''; ';
|
|
||||||
put ' put ''else''; ';
|
|
||||||
put ' put '' tablist=s''; ';
|
|
||||||
put ' put ''end''; ';
|
|
||||||
put ' put ''for i = 1,sas.countw(tablist) ''; ';
|
|
||||||
put ' put ''do ''; ';
|
|
||||||
put ' put '' tab=sas.scan(tablist,i)''; ';
|
|
||||||
put ' put '' sasdata=""''; ';
|
|
||||||
put ' put '' if (sas.symexist("sasjs"..i.."data0")==0)''; ';
|
|
||||||
put ' put '' then''; ';
|
|
||||||
put ' /* TODO - condense this logic */ ';
|
|
||||||
put ' put '' s=sas.symget("sasjs"..i.."data")''; ';
|
|
||||||
put ' put '' if(s:sub(1,7) == "%nrstr(")''; ';
|
|
||||||
put ' put '' then''; ';
|
|
||||||
put ' put '' sasdata=s:sub(8,s:len()-1)''; ';
|
|
||||||
put ' put '' else''; ';
|
|
||||||
put ' put '' sasdata=s''; ';
|
|
||||||
put ' put '' end''; ';
|
|
||||||
put ' put '' else''; ';
|
|
||||||
put ' put '' for d = 1, sas.symget("sasjs"..i.."data0")''; ';
|
|
||||||
put ' put '' do''; ';
|
|
||||||
put ' put '' s=sas.symget("sasjs"..i.."data"..d)''; ';
|
|
||||||
put ' put '' if(s:sub(1,7) == "%nrstr(")''; ';
|
|
||||||
put ' put '' then''; ';
|
|
||||||
put ' put '' sasdata=sasdata..s:sub(8,s:len()-1)''; ';
|
|
||||||
put ' put '' else''; ';
|
|
||||||
put ' put '' sasdata=sasdata..s''; ';
|
|
||||||
put ' put '' end''; ';
|
|
||||||
put ' put '' end''; ';
|
|
||||||
put ' put '' end''; ';
|
|
||||||
put ' put '' file = io.open(sas.pathname("work").."/"..tab..".csv", "a")''; ';
|
|
||||||
put ' put '' io.output(file)''; ';
|
|
||||||
put ' put '' io.write(sasdata)''; ';
|
|
||||||
put ' put '' io.close(file)''; ';
|
|
||||||
put ' put ''end''; ';
|
|
||||||
put ' run; ';
|
|
||||||
put ' %inc _sasjs; ';
|
|
||||||
put ' ';
|
put ' ';
|
||||||
put ' /* now read in the data */ ';
|
put ' /* convert data from macro variables to datasets */ ';
|
||||||
put ' %do i=1 %to %sysfunc(countw(&sasjs_tables)); ';
|
put ' %do i=1 %to %sysfunc(countw(&sasjs_tables)); ';
|
||||||
put ' %local table; %let table=%scan(&sasjs_tables,&i); ';
|
put ' %let table=%scan(&sasjs_tables,&i,%str( )); ';
|
||||||
|
put ' %if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1; ';
|
||||||
|
put ' data _null_; ';
|
||||||
|
put ' file "%sysfunc(pathname(work))/&table..csv" recfm=n; ';
|
||||||
|
put ' retain nrflg 0; ';
|
||||||
|
put ' length line $32767; ';
|
||||||
|
put ' do i=1 to &&sasjs&i.data0; ';
|
||||||
|
put ' if &&sasjs&i.data0=1 then line=symget("sasjs&i.data"); ';
|
||||||
|
put ' else line=symget(cats("sasjs&i.data",i)); ';
|
||||||
|
put ' if i=1 and substr(line,1,7)=''%nrstr('' then do; ';
|
||||||
|
put ' nrflg=1; ';
|
||||||
|
put ' line=substr(line,8); ';
|
||||||
|
put ' end; ';
|
||||||
|
put ' if i=&&sasjs&i.data0 and nrflg=1 then do; ';
|
||||||
|
put ' line=substr(line,1,length(line)-1); ';
|
||||||
|
put ' end; ';
|
||||||
|
put ' put line +(-1) @; ';
|
||||||
|
put ' end; ';
|
||||||
|
put ' run; ';
|
||||||
put ' data _null_; ';
|
put ' data _null_; ';
|
||||||
put ' infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ; ';
|
put ' infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ; ';
|
||||||
put ' input; ';
|
put ' input; ';
|
||||||
put ' if _n_=1 then call symputx(''input_statement'',_infile_); ';
|
put ' if _n_=1 then call symputx(''input_statement'',_infile_); ';
|
||||||
put ' list; ';
|
put ' list; ';
|
||||||
put ' data &table; ';
|
put ' data work.&table; ';
|
||||||
put ' infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd ';
|
put ' infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd ';
|
||||||
put ' termstr=crlf; ';
|
put ' termstr=crlf; ';
|
||||||
put ' input &input_statement; ';
|
put ' input &input_statement; ';
|
||||||
@@ -24329,7 +24304,7 @@ filename &fref1 clear;
|
|||||||
sasjs_tables SYS_JES_JOB_URI;
|
sasjs_tables SYS_JES_JOB_URI;
|
||||||
%if %index("&_debug",log) %then %let _debug=131;
|
%if %index("&_debug",log) %then %let _debug=131;
|
||||||
|
|
||||||
%local i tempds;
|
%local i tempds table;
|
||||||
%let action=%upcase(&action);
|
%let action=%upcase(&action);
|
||||||
|
|
||||||
%if &action=FETCH %then %do;
|
%if &action=FETCH %then %do;
|
||||||
@@ -24344,60 +24319,35 @@ filename &fref1 clear;
|
|||||||
%end;
|
%end;
|
||||||
|
|
||||||
/* if the sasjs_tables param is passed, we expect param based upload */
|
/* if the sasjs_tables param is passed, we expect param based upload */
|
||||||
%if %length(&sasjs_tables.XX)>2 %then %do;
|
%if %length(&sasjs_tables.X)>1 %then %do;
|
||||||
filename _sasjs "%sysfunc(pathname(work))/sasjs.lua";
|
|
||||||
data _null_;
|
|
||||||
file _sasjs;
|
|
||||||
put 's=sas.symget("sasjs_tables")';
|
|
||||||
put 'if(s:sub(1,7) == "%nrstr(")';
|
|
||||||
put 'then';
|
|
||||||
put ' tablist=s:sub(8,s:len()-1)';
|
|
||||||
put 'else';
|
|
||||||
put ' tablist=s';
|
|
||||||
put 'end';
|
|
||||||
put 'for i = 1,sas.countw(tablist) ';
|
|
||||||
put 'do ';
|
|
||||||
put ' tab=sas.scan(tablist,i)';
|
|
||||||
put ' sasdata=""';
|
|
||||||
put ' if (sas.symexist("sasjs"..i.."data0")==0)';
|
|
||||||
put ' then';
|
|
||||||
/* TODO - condense this logic */
|
|
||||||
put ' s=sas.symget("sasjs"..i.."data")';
|
|
||||||
put ' if(s:sub(1,7) == "%nrstr(")';
|
|
||||||
put ' then';
|
|
||||||
put ' sasdata=s:sub(8,s:len()-1)';
|
|
||||||
put ' else';
|
|
||||||
put ' sasdata=s';
|
|
||||||
put ' end';
|
|
||||||
put ' else';
|
|
||||||
put ' for d = 1, sas.symget("sasjs"..i.."data0")';
|
|
||||||
put ' do';
|
|
||||||
put ' s=sas.symget("sasjs"..i.."data"..d)';
|
|
||||||
put ' if(s:sub(1,7) == "%nrstr(")';
|
|
||||||
put ' then';
|
|
||||||
put ' sasdata=sasdata..s:sub(8,s:len()-1)';
|
|
||||||
put ' else';
|
|
||||||
put ' sasdata=sasdata..s';
|
|
||||||
put ' end';
|
|
||||||
put ' end';
|
|
||||||
put ' end';
|
|
||||||
put ' file = io.open(sas.pathname("work").."/"..tab..".csv", "a")';
|
|
||||||
put ' io.output(file)';
|
|
||||||
put ' io.write(sasdata)';
|
|
||||||
put ' io.close(file)';
|
|
||||||
put 'end';
|
|
||||||
run;
|
|
||||||
%inc _sasjs;
|
|
||||||
|
|
||||||
/* now read in the data */
|
/* convert data from macro variables to datasets */
|
||||||
%do i=1 %to %sysfunc(countw(&sasjs_tables));
|
%do i=1 %to %sysfunc(countw(&sasjs_tables));
|
||||||
%local table; %let table=%scan(&sasjs_tables,&i);
|
%let table=%scan(&sasjs_tables,&i,%str( ));
|
||||||
|
%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;
|
||||||
|
data _null_;
|
||||||
|
file "%sysfunc(pathname(work))/&table..csv" recfm=n;
|
||||||
|
retain nrflg 0;
|
||||||
|
length line $32767;
|
||||||
|
do i=1 to &&sasjs&i.data0;
|
||||||
|
if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");
|
||||||
|
else line=symget(cats("sasjs&i.data",i));
|
||||||
|
if i=1 and substr(line,1,7)='%nrstr(' then do;
|
||||||
|
nrflg=1;
|
||||||
|
line=substr(line,8);
|
||||||
|
end;
|
||||||
|
if i=&&sasjs&i.data0 and nrflg=1 then do;
|
||||||
|
line=substr(line,1,length(line)-1);
|
||||||
|
end;
|
||||||
|
put line +(-1) @;
|
||||||
|
end;
|
||||||
|
run;
|
||||||
data _null_;
|
data _null_;
|
||||||
infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;
|
infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;
|
||||||
input;
|
input;
|
||||||
if _n_=1 then call symputx('input_statement',_infile_);
|
if _n_=1 then call symputx('input_statement',_infile_);
|
||||||
list;
|
list;
|
||||||
data &table;
|
data work.&table;
|
||||||
infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd
|
infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd
|
||||||
termstr=crlf;
|
termstr=crlf;
|
||||||
input &input_statement;
|
input &input_statement;
|
||||||
|
|||||||
@@ -39,12 +39,6 @@
|
|||||||
"viya",
|
"viya",
|
||||||
"tests/viyaonly"
|
"tests/viyaonly"
|
||||||
],
|
],
|
||||||
"programFolders": [],
|
|
||||||
"binaryFolders": [],
|
|
||||||
"deployConfig": {
|
|
||||||
"deployServicePack": true,
|
|
||||||
"deployScripts": []
|
|
||||||
},
|
|
||||||
"contextName": "SAS Job Execution compute context"
|
"contextName": "SAS Job Execution compute context"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -71,7 +65,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "server",
|
"name": "server",
|
||||||
"serverUrl": "https://sas.analytium.co.uk:5000",
|
"serverUrl": "",
|
||||||
"serverType": "SASJS",
|
"serverType": "SASJS",
|
||||||
"httpsAgentOptions": {
|
"httpsAgentOptions": {
|
||||||
"allowInsecureRequests": false
|
"allowInsecureRequests": false
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
@brief Testing mp_hashdataset.sas macro
|
@brief Testing mp_hashdataset.sas macro
|
||||||
|
|
||||||
<h4> SAS Macros </h4>
|
<h4> SAS Macros </h4>
|
||||||
|
@li mf_nobs.sas
|
||||||
@li mp_hashdataset.sas
|
@li mp_hashdataset.sas
|
||||||
@li mp_assert.sas
|
@li mp_assert.sas
|
||||||
@li mp_assertscope.sas
|
@li mp_assertscope.sas
|
||||||
|
|||||||
@@ -1,15 +1,33 @@
|
|||||||
/**
|
/**
|
||||||
@file
|
@file
|
||||||
@brief Testing mm_webout macro
|
@brief Testing mv_webout macro
|
||||||
|
|
||||||
<h4> SAS Macros </h4>
|
<h4> SAS Macros </h4>
|
||||||
@li mf_getuniquefileref.sas
|
@li mf_getuniquefileref.sas
|
||||||
@li mv_webout.sas
|
@li mv_webout.sas
|
||||||
@li mp_assert.sas
|
@li mp_assert.sas
|
||||||
|
@li mp_assertdsobs.sas
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
/* testing FETCHing (WEB approach) */
|
||||||
|
|
||||||
|
data _null_;
|
||||||
|
call symputx('sasjs1data','area:$char4.'!!'0d0a'x!!'Adak');
|
||||||
|
call symputx('sasjs_tables','areas');
|
||||||
|
run;
|
||||||
|
%put &=sasjs1data;
|
||||||
|
|
||||||
|
%mv_webout(FETCH)
|
||||||
|
|
||||||
|
%mp_assertdsobs(work.areas,
|
||||||
|
desc=Test input table has 1 row,
|
||||||
|
test=EQUALS 1,
|
||||||
|
outds=work.test_results
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
%let fref=%mf_getuniquefileref();
|
%let fref=%mf_getuniquefileref();
|
||||||
%global _metaperson;
|
%global _metaperson;
|
||||||
data some datasets;
|
data some datasets;
|
||||||
@@ -38,4 +56,4 @@ run;
|
|||||||
%mp_assert(
|
%mp_assert(
|
||||||
iftrue=(%str(&checkval)=%str(&sysvlong)),
|
iftrue=(%str(&checkval)=%str(&sysvlong)),
|
||||||
desc=Check if the sysvlong value was created
|
desc=Check if the sysvlong value was created
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -461,7 +461,7 @@ data _null_;
|
|||||||
put ' sasjs_tables SYS_JES_JOB_URI; ';
|
put ' sasjs_tables SYS_JES_JOB_URI; ';
|
||||||
put '%if %index("&_debug",log) %then %let _debug=131; ';
|
put '%if %index("&_debug",log) %then %let _debug=131; ';
|
||||||
put ' ';
|
put ' ';
|
||||||
put '%local i tempds; ';
|
put '%local i tempds table; ';
|
||||||
put '%let action=%upcase(&action); ';
|
put '%let action=%upcase(&action); ';
|
||||||
put ' ';
|
put ' ';
|
||||||
put '%if &action=FETCH %then %do; ';
|
put '%if &action=FETCH %then %do; ';
|
||||||
@@ -476,60 +476,35 @@ data _null_;
|
|||||||
put ' %end; ';
|
put ' %end; ';
|
||||||
put ' ';
|
put ' ';
|
||||||
put ' /* if the sasjs_tables param is passed, we expect param based upload */ ';
|
put ' /* if the sasjs_tables param is passed, we expect param based upload */ ';
|
||||||
put ' %if %length(&sasjs_tables.XX)>2 %then %do; ';
|
put ' %if %length(&sasjs_tables.X)>1 %then %do; ';
|
||||||
put ' filename _sasjs "%sysfunc(pathname(work))/sasjs.lua"; ';
|
|
||||||
put ' data _null_; ';
|
|
||||||
put ' file _sasjs; ';
|
|
||||||
put ' put ''s=sas.symget("sasjs_tables")''; ';
|
|
||||||
put ' put ''if(s:sub(1,7) == "%nrstr(")''; ';
|
|
||||||
put ' put ''then''; ';
|
|
||||||
put ' put '' tablist=s:sub(8,s:len()-1)''; ';
|
|
||||||
put ' put ''else''; ';
|
|
||||||
put ' put '' tablist=s''; ';
|
|
||||||
put ' put ''end''; ';
|
|
||||||
put ' put ''for i = 1,sas.countw(tablist) ''; ';
|
|
||||||
put ' put ''do ''; ';
|
|
||||||
put ' put '' tab=sas.scan(tablist,i)''; ';
|
|
||||||
put ' put '' sasdata=""''; ';
|
|
||||||
put ' put '' if (sas.symexist("sasjs"..i.."data0")==0)''; ';
|
|
||||||
put ' put '' then''; ';
|
|
||||||
put ' /* TODO - condense this logic */ ';
|
|
||||||
put ' put '' s=sas.symget("sasjs"..i.."data")''; ';
|
|
||||||
put ' put '' if(s:sub(1,7) == "%nrstr(")''; ';
|
|
||||||
put ' put '' then''; ';
|
|
||||||
put ' put '' sasdata=s:sub(8,s:len()-1)''; ';
|
|
||||||
put ' put '' else''; ';
|
|
||||||
put ' put '' sasdata=s''; ';
|
|
||||||
put ' put '' end''; ';
|
|
||||||
put ' put '' else''; ';
|
|
||||||
put ' put '' for d = 1, sas.symget("sasjs"..i.."data0")''; ';
|
|
||||||
put ' put '' do''; ';
|
|
||||||
put ' put '' s=sas.symget("sasjs"..i.."data"..d)''; ';
|
|
||||||
put ' put '' if(s:sub(1,7) == "%nrstr(")''; ';
|
|
||||||
put ' put '' then''; ';
|
|
||||||
put ' put '' sasdata=sasdata..s:sub(8,s:len()-1)''; ';
|
|
||||||
put ' put '' else''; ';
|
|
||||||
put ' put '' sasdata=sasdata..s''; ';
|
|
||||||
put ' put '' end''; ';
|
|
||||||
put ' put '' end''; ';
|
|
||||||
put ' put '' end''; ';
|
|
||||||
put ' put '' file = io.open(sas.pathname("work").."/"..tab..".csv", "a")''; ';
|
|
||||||
put ' put '' io.output(file)''; ';
|
|
||||||
put ' put '' io.write(sasdata)''; ';
|
|
||||||
put ' put '' io.close(file)''; ';
|
|
||||||
put ' put ''end''; ';
|
|
||||||
put ' run; ';
|
|
||||||
put ' %inc _sasjs; ';
|
|
||||||
put ' ';
|
put ' ';
|
||||||
put ' /* now read in the data */ ';
|
put ' /* convert data from macro variables to datasets */ ';
|
||||||
put ' %do i=1 %to %sysfunc(countw(&sasjs_tables)); ';
|
put ' %do i=1 %to %sysfunc(countw(&sasjs_tables)); ';
|
||||||
put ' %local table; %let table=%scan(&sasjs_tables,&i); ';
|
put ' %let table=%scan(&sasjs_tables,&i,%str( )); ';
|
||||||
|
put ' %if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1; ';
|
||||||
|
put ' data _null_; ';
|
||||||
|
put ' file "%sysfunc(pathname(work))/&table..csv" recfm=n; ';
|
||||||
|
put ' retain nrflg 0; ';
|
||||||
|
put ' length line $32767; ';
|
||||||
|
put ' do i=1 to &&sasjs&i.data0; ';
|
||||||
|
put ' if &&sasjs&i.data0=1 then line=symget("sasjs&i.data"); ';
|
||||||
|
put ' else line=symget(cats("sasjs&i.data",i)); ';
|
||||||
|
put ' if i=1 and substr(line,1,7)=''%nrstr('' then do; ';
|
||||||
|
put ' nrflg=1; ';
|
||||||
|
put ' line=substr(line,8); ';
|
||||||
|
put ' end; ';
|
||||||
|
put ' if i=&&sasjs&i.data0 and nrflg=1 then do; ';
|
||||||
|
put ' line=substr(line,1,length(line)-1); ';
|
||||||
|
put ' end; ';
|
||||||
|
put ' put line +(-1) @; ';
|
||||||
|
put ' end; ';
|
||||||
|
put ' run; ';
|
||||||
put ' data _null_; ';
|
put ' data _null_; ';
|
||||||
put ' infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ; ';
|
put ' infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ; ';
|
||||||
put ' input; ';
|
put ' input; ';
|
||||||
put ' if _n_=1 then call symputx(''input_statement'',_infile_); ';
|
put ' if _n_=1 then call symputx(''input_statement'',_infile_); ';
|
||||||
put ' list; ';
|
put ' list; ';
|
||||||
put ' data &table; ';
|
put ' data work.&table; ';
|
||||||
put ' infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd ';
|
put ' infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd ';
|
||||||
put ' termstr=crlf; ';
|
put ' termstr=crlf; ';
|
||||||
put ' input &input_statement; ';
|
put ' input &input_statement; ';
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
sasjs_tables SYS_JES_JOB_URI;
|
sasjs_tables SYS_JES_JOB_URI;
|
||||||
%if %index("&_debug",log) %then %let _debug=131;
|
%if %index("&_debug",log) %then %let _debug=131;
|
||||||
|
|
||||||
%local i tempds;
|
%local i tempds table;
|
||||||
%let action=%upcase(&action);
|
%let action=%upcase(&action);
|
||||||
|
|
||||||
%if &action=FETCH %then %do;
|
%if &action=FETCH %then %do;
|
||||||
@@ -64,60 +64,35 @@
|
|||||||
%end;
|
%end;
|
||||||
|
|
||||||
/* if the sasjs_tables param is passed, we expect param based upload */
|
/* if the sasjs_tables param is passed, we expect param based upload */
|
||||||
%if %length(&sasjs_tables.XX)>2 %then %do;
|
%if %length(&sasjs_tables.X)>1 %then %do;
|
||||||
filename _sasjs "%sysfunc(pathname(work))/sasjs.lua";
|
|
||||||
data _null_;
|
|
||||||
file _sasjs;
|
|
||||||
put 's=sas.symget("sasjs_tables")';
|
|
||||||
put 'if(s:sub(1,7) == "%nrstr(")';
|
|
||||||
put 'then';
|
|
||||||
put ' tablist=s:sub(8,s:len()-1)';
|
|
||||||
put 'else';
|
|
||||||
put ' tablist=s';
|
|
||||||
put 'end';
|
|
||||||
put 'for i = 1,sas.countw(tablist) ';
|
|
||||||
put 'do ';
|
|
||||||
put ' tab=sas.scan(tablist,i)';
|
|
||||||
put ' sasdata=""';
|
|
||||||
put ' if (sas.symexist("sasjs"..i.."data0")==0)';
|
|
||||||
put ' then';
|
|
||||||
/* TODO - condense this logic */
|
|
||||||
put ' s=sas.symget("sasjs"..i.."data")';
|
|
||||||
put ' if(s:sub(1,7) == "%nrstr(")';
|
|
||||||
put ' then';
|
|
||||||
put ' sasdata=s:sub(8,s:len()-1)';
|
|
||||||
put ' else';
|
|
||||||
put ' sasdata=s';
|
|
||||||
put ' end';
|
|
||||||
put ' else';
|
|
||||||
put ' for d = 1, sas.symget("sasjs"..i.."data0")';
|
|
||||||
put ' do';
|
|
||||||
put ' s=sas.symget("sasjs"..i.."data"..d)';
|
|
||||||
put ' if(s:sub(1,7) == "%nrstr(")';
|
|
||||||
put ' then';
|
|
||||||
put ' sasdata=sasdata..s:sub(8,s:len()-1)';
|
|
||||||
put ' else';
|
|
||||||
put ' sasdata=sasdata..s';
|
|
||||||
put ' end';
|
|
||||||
put ' end';
|
|
||||||
put ' end';
|
|
||||||
put ' file = io.open(sas.pathname("work").."/"..tab..".csv", "a")';
|
|
||||||
put ' io.output(file)';
|
|
||||||
put ' io.write(sasdata)';
|
|
||||||
put ' io.close(file)';
|
|
||||||
put 'end';
|
|
||||||
run;
|
|
||||||
%inc _sasjs;
|
|
||||||
|
|
||||||
/* now read in the data */
|
/* convert data from macro variables to datasets */
|
||||||
%do i=1 %to %sysfunc(countw(&sasjs_tables));
|
%do i=1 %to %sysfunc(countw(&sasjs_tables));
|
||||||
%local table; %let table=%scan(&sasjs_tables,&i);
|
%let table=%scan(&sasjs_tables,&i,%str( ));
|
||||||
|
%if %symexist(sasjs&i.data0)=0 %then %let sasjs&i.data0=1;
|
||||||
|
data _null_;
|
||||||
|
file "%sysfunc(pathname(work))/&table..csv" recfm=n;
|
||||||
|
retain nrflg 0;
|
||||||
|
length line $32767;
|
||||||
|
do i=1 to &&sasjs&i.data0;
|
||||||
|
if &&sasjs&i.data0=1 then line=symget("sasjs&i.data");
|
||||||
|
else line=symget(cats("sasjs&i.data",i));
|
||||||
|
if i=1 and substr(line,1,7)='%nrstr(' then do;
|
||||||
|
nrflg=1;
|
||||||
|
line=substr(line,8);
|
||||||
|
end;
|
||||||
|
if i=&&sasjs&i.data0 and nrflg=1 then do;
|
||||||
|
line=substr(line,1,length(line)-1);
|
||||||
|
end;
|
||||||
|
put line +(-1) @;
|
||||||
|
end;
|
||||||
|
run;
|
||||||
data _null_;
|
data _null_;
|
||||||
infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;
|
infile "%sysfunc(pathname(work))/&table..csv" termstr=crlf ;
|
||||||
input;
|
input;
|
||||||
if _n_=1 then call symputx('input_statement',_infile_);
|
if _n_=1 then call symputx('input_statement',_infile_);
|
||||||
list;
|
list;
|
||||||
data &table;
|
data work.&table;
|
||||||
infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd
|
infile "%sysfunc(pathname(work))/&table..csv" firstobs=2 dsd
|
||||||
termstr=crlf;
|
termstr=crlf;
|
||||||
input &input_statement;
|
input &input_statement;
|
||||||
|
|||||||
Reference in New Issue
Block a user