1
0
mirror of https://github.com/sasjs/core.git synced 2026-06-10 20:50:22 +00:00

Compare commits

...

10 Commits

Author SHA1 Message Date
Allan Bowe bb6aced478 Merge pull request #422 from sasjs/exectasks
Exectasks
2026-05-12 14:03:31 +01:00
github-actions 96d42b9f66 chore: updating all.sas 2026-05-12 13:02:35 +00:00
4gl 59f8303b19 chore: ensuring mv_createwebservice is rebuilt on mv_webout change 2026-05-12 14:01:38 +01:00
github-actions 0599c4d597 chore: updating all.sas 2026-05-12 12:43:06 +00:00
4gl 356d3644e5 feat: support for Viya Compute Tasks 2026-05-12 13:42:37 +01:00
4gl ef7e8e051f chore: updating tests around mv_createfolder 2026-05-12 13:25:36 +01:00
4gl aa35317126 fix: doc header invocation for sidebar 2026-05-01 17:14:31 +01:00
4gl f474076a41 fix: doc site html side bar 2026-05-01 16:55:48 +01:00
4gl 98bd198dfc fix: adding maintainers attribute to package json (not a real fix, just triggering a build) 2026-05-01 15:38:13 +01:00
4gl 15e3a560b0 chore: docs build script fix 2026-05-01 15:33:10 +01:00
13 changed files with 91 additions and 34 deletions
+18 -2
View File
@@ -71,5 +71,21 @@ jobs:
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y doxygen sudo apt-get install -y doxygen
export GITHUB_TOKEN=${{ secrets.CORESASJSIO_PAT }} npx @sasjs/cli doc -t docsonly
npm run docs git clone https://x-access-token:${{ secrets.CORESASJSIO_PAT }}@github.com/sasjs/core.github.io.git
cd core.github.io
rm -rf *.html
rm -rf *.js
rm -rf *.png
rm -rf *.dot
rm -rf *.css
rm -rf *.svg
rm -rf search
cp -R ../sasjsbuild/docs/* .
ls
git config user.name sasjs
echo 'core.sasjs.io' > CNAME
git add .
git commit -m "core pipeline build on $(date +%F:%H:%M:%S)"
git push
echo "check it out: https://sasjs.github.io/core.github.io/files.html"
+1
View File
@@ -26,6 +26,7 @@ jobs:
git config user.email github-actions@github.com git config user.email github-actions@github.com
python3 build.py python3 build.py
git add all.sas git add all.sas
git add viya/mv_createwebservice.sas
git commit -m "chore: updating all.sas" --allow-empty git commit -m "chore: updating all.sas" --allow-empty
git push git push
-2
View File
@@ -5,8 +5,6 @@
![npm](https://img.shields.io/npm/dt/@sasjs/core) ![npm](https://img.shields.io/npm/dt/@sasjs/core)
![GitHub top language](https://img.shields.io/github/languages/top/sasjs/core) ![GitHub top language](https://img.shields.io/github/languages/top/sasjs/core)
[![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/sasjs/core)](https://github.com/sasjs/core/issues?q=is%3Aissue+is%3Aclosed) [![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/sasjs/core)](https://github.com/sasjs/core/issues?q=is%3Aissue+is%3Aclosed)
[![GitHub issues](https://img.shields.io/github/issues-raw/sasjs/core)](https://github.com/sasjs/core/issues)
![total lines](https://tokei.rs/b1/github/sasjs/core)
Much quality. Many standards. The **Macro Core** library exists to save time and development effort! Herein ye shall find a veritable host of MIT-licenced, production quality SAS macros. These are a mix of tools, utilities, functions and code generators that are useful in the context of [Application Development](https://sasapps.io) on the SAS platform (eg https://datacontroller.io). [Contributions](https://github.com/sasjs/core/blob/main/.github/CONTRIBUTING.md) are welcome. Much quality. Many standards. The **Macro Core** library exists to save time and development effort! Herein ye shall find a veritable host of MIT-licenced, production quality SAS macros. These are a mix of tools, utilities, functions and code generators that are useful in the context of [Application Development](https://sasapps.io) on the SAS platform (eg https://datacontroller.io). [Contributions](https://github.com/sasjs/core/blob/main/.github/CONTRIBUTING.md) are welcome.
+14 -7
View File
@@ -25291,7 +25291,6 @@ options noquotelenmax;
run; run;
%end; %end;
%if &SYS_PROCHTTP_STATUS_CODE=200 %then %do; %if &SYS_PROCHTTP_STATUS_CODE=200 %then %do;
%*put &sysmacroname &newpath exists so grab the follow on link ;
data _null_; data _null_;
set &libref1..links; set &libref1..links;
if rel='createChild' then if rel='createChild' then
@@ -26312,7 +26311,7 @@ data _null_;
put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put ' ,showmeta=N,maxobs=MAX,workobs=0 ';
put '); '; put '); ';
put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name '; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name ';
put ' sasjs_tables SYS_JES_JOB_URI; '; put ' sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS; ';
put '%if %index("&_debug",log) %then %let _debug=131; '; put '%if %index("&_debug",log) %then %let _debug=131; ';
put ' '; put ' ';
put '%local i tempds table; '; put '%local i tempds table; ';
@@ -26367,8 +26366,12 @@ data _null_;
put ' %end; '; put ' %end; ';
put ' %else %do i=1 %to &_webin_file_count; '; put ' %else %do i=1 %to &_webin_file_count; ';
put ' /* read in any files that are sent */ '; put ' /* read in any files that are sent */ ';
put ' /* this part needs refactoring for wide files */ '; put ' %if &_EXECUTIONTASKS=true %then %do; ';
put ' filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999; '; put ' filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999; ';
put ' %end; ';
put ' %else %do; ';
put ' filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999; ';
put ' %end; ';
put ' data _null_; '; put ' data _null_; ';
put ' infile indata termstr=crlf lrecl=32767; '; put ' infile indata termstr=crlf lrecl=32767; ';
put ' input; '; put ' input; ';
@@ -30429,7 +30432,7 @@ filename &fref1 clear;
,showmeta=N,maxobs=MAX,workobs=0 ,showmeta=N,maxobs=MAX,workobs=0
); );
%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name %global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name
sasjs_tables SYS_JES_JOB_URI; sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;
%if %index("&_debug",log) %then %let _debug=131; %if %index("&_debug",log) %then %let _debug=131;
%local i tempds table; %local i tempds table;
@@ -30484,8 +30487,12 @@ filename &fref1 clear;
%end; %end;
%else %do i=1 %to &_webin_file_count; %else %do i=1 %to &_webin_file_count;
/* read in any files that are sent */ /* read in any files that are sent */
/* this part needs refactoring for wide files */ %if &_EXECUTIONTASKS=true %then %do;
filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999; filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;
%end;
%else %do;
filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;
%end;
data _null_; data _null_;
infile indata termstr=crlf lrecl=32767; infile indata termstr=crlf lrecl=32767;
input; input;
+5 -2
View File
@@ -31,5 +31,8 @@
"test": "npx @sasjs/cli test -t server", "test": "npx @sasjs/cli test -t server",
"lint": "npx @sasjs/cli lint", "lint": "npx @sasjs/cli lint",
"prepare": "git rev-parse --git-dir && git config core.hooksPath ./.git-hooks || true" "prepare": "git rev-parse --git-dir && git config core.hooksPath ./.git-hooks || true"
} },
} "maintainers": [
"https://sasapps.io"
]
}
+6 -5
View File
@@ -21,6 +21,7 @@
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css" /> <link href="$relpath^tabs.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="$relpath^jquery.js"></script> <script type="text/javascript" src="$relpath^jquery.js"></script>
<script type="text/javascript" src="$relpath^dynsections.js"></script> <script type="text/javascript" src="$relpath^dynsections.js"></script>
<script type="text/javascript" src="$relpath^cookie.js"></script>
$treeview $search $mathjax $treeview $search $mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" /> <link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="$relpath^favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="$relpath^favicon.ico" type="image/x-icon" />
@@ -39,6 +40,10 @@
g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s);
})(); })();
</script> </script>
<noscript>
<p><img referrerpolicy="no-referrer-when-downgrade" src="https://analytics.4gl.io/matomo.php?idsite=6&amp;rec=1"
style="border:0;" alt="" /></p>
</noscript>
<!-- End Matomo Code --> <!-- End Matomo Code -->
</head> </head>
@@ -79,8 +84,4 @@
</table> </table>
</div> </div>
<!--END TITLEAREA--> <!--END TITLEAREA-->
<!-- end header part --> <!-- end header part -->
</div>
</body>
</html>
+1 -4
View File
@@ -25,10 +25,7 @@
}, },
"testConfig": { "testConfig": {
"initProgram": "tests/testinit.sas", "initProgram": "tests/testinit.sas",
"termProgram": "tests/testterm.sas", "termProgram": "tests/testterm.sas"
"macroVars": {
"mcTestAppLoc": "/Public/temp/macrocore"
}
}, },
"defaultTarget": "server", "defaultTarget": "server",
"targets": [ "targets": [
+1 -1
View File
@@ -8,7 +8,7 @@
# refresh github pages site # refresh github pages site
rm -rf sasjsbuild/docsite rm -rf sasjsbuild/docsite
git clone https://x-access-token:$GITHUB_TOKEN@github.com/sasjs/core.github.io.git sasjsbuild/docsite git clone git@github.com:sasjs/core.github.io.git sasjsbuild/docsite
rm -rf sasjsbuild/docsite/*.html rm -rf sasjsbuild/docsite/*.html
rm -rf sasjsbuild/docsite/*.js rm -rf sasjsbuild/docsite/*.js
rm -rf sasjsbuild/docsite/*.png rm -rf sasjsbuild/docsite/*.png
+1 -1
View File
@@ -10,7 +10,7 @@
**/ **/
/* location in metadata or SAS Drive for temporary files */ /* location in metadata or SAS Drive for temporary files */
%let mcTestAppLoc=/Public/testresults/sasjs_core/%mf_uid(); %let mcTestAppLoc=/Users/&sysuserid/testresults/sasjs_core/%mf_uid();
/* set defaults */ /* set defaults */
%mp_init() %mp_init()
+30 -3
View File
@@ -5,6 +5,7 @@
<h4> SAS Macros </h4> <h4> SAS Macros </h4>
@li mf_uid.sas @li mf_uid.sas
@li mp_assert.sas @li mp_assert.sas
@li mp_assertscope.sas
@li mv_createfolder.sas @li mv_createfolder.sas
@li mv_deleteviyafolder.sas @li mv_deleteviyafolder.sas
@li mv_getfoldermembers.sas @li mv_getfoldermembers.sas
@@ -15,7 +16,11 @@
%let folder=%mf_uid(); %let folder=%mf_uid();
/* create a folder */ /* create a folder */
%mp_assertscope(SNAPSHOT)
%mv_createfolder(path=&mcTestAppLoc/temp/&folder/&folder) %mv_createfolder(path=&mcTestAppLoc/temp/&folder/&folder)
%mp_assertscope(COMPARE, ignorelist=MC0_JADP1LEN MC0_JADP2LEN MC0_JADPNUM
MC0_JADVLEN MC2_JADP1LEN MC2_JADP2LEN MC2_JADPNUM MC2_JADVLEN
)
%mv_getfoldermembers(root=&mcTestAppLoc/temp/&folder, outds=work.folders) %mv_getfoldermembers(root=&mcTestAppLoc/temp/&folder, outds=work.folders)
@@ -32,17 +37,39 @@ run;
) )
/* create a folder without output dataset as part of the original macro */ /* create a folder without output dataset as part of the original macro */
%mv_createfolder(path=&mcTestAppLoc/temp/&folder/folder2,outds=folders2) %mv_createfolder(path=&mcTestAppLoc/temp/&folder/f2
,outds=folders2,mdebug=&sasjs_mdebug
)
%let test=0; %let test=0;
data _null_; data _null_;
set work.folders2; set work.folders2;
putlog (_all_)(=); putlog (_all_)(=);
if not missing(self_uri) and not missing(parent_uri) if not missing(self_uri) then call symputx('test2',1);
then call symputx('test2',1);
run; run;
%mp_assert( %mp_assert(
iftrue=(&test2=1), iftrue=(&test2=1),
desc=Check if outds param works desc=Check if outds param works
)
/* create a folder with full stops */
%let newfolder=%mf_uid().2.1;
%mv_createfolder(path=&mcTestAppLoc/temp/&newfolder
,outds=work.folders3
,mdebug=&sasjs_mdebug
)
%mv_getfoldermembers(root=&mcTestAppLoc/temp, outds=work.folders3)
%let test3=0;
data _null_;
set work.folders3;
putlog (_all_)(=);
if name="&newfolder" then call symputx('test3',1);
run;
%mp_assert(
iftrue=(&test3=1),
desc=Check if folder with full stops can be successfully created
) )
-1
View File
@@ -145,7 +145,6 @@ options noquotelenmax;
run; run;
%end; %end;
%if &SYS_PROCHTTP_STATUS_CODE=200 %then %do; %if &SYS_PROCHTTP_STATUS_CODE=200 %then %do;
%*put &sysmacroname &newpath exists so grab the follow on link ;
data _null_; data _null_;
set &libref1..links; set &libref1..links;
if rel='createChild' then if rel='createChild' then
+7 -3
View File
@@ -594,7 +594,7 @@ data _null_;
put ' ,showmeta=N,maxobs=MAX,workobs=0 '; put ' ,showmeta=N,maxobs=MAX,workobs=0 ';
put '); '; put '); ';
put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name '; put '%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name ';
put ' sasjs_tables SYS_JES_JOB_URI; '; put ' sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS; ';
put '%if %index("&_debug",log) %then %let _debug=131; '; put '%if %index("&_debug",log) %then %let _debug=131; ';
put ' '; put ' ';
put '%local i tempds table; '; put '%local i tempds table; ';
@@ -649,8 +649,12 @@ data _null_;
put ' %end; '; put ' %end; ';
put ' %else %do i=1 %to &_webin_file_count; '; put ' %else %do i=1 %to &_webin_file_count; ';
put ' /* read in any files that are sent */ '; put ' /* read in any files that are sent */ ';
put ' /* this part needs refactoring for wide files */ '; put ' %if &_EXECUTIONTASKS=true %then %do; ';
put ' filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999; '; put ' filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999; ';
put ' %end; ';
put ' %else %do; ';
put ' filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999; ';
put ' %end; ';
put ' data _null_; '; put ' data _null_; ';
put ' infile indata termstr=crlf lrecl=32767; '; put ' infile indata termstr=crlf lrecl=32767; ';
put ' input; '; put ' input; ';
+7 -3
View File
@@ -55,7 +55,7 @@
,showmeta=N,maxobs=MAX,workobs=0 ,showmeta=N,maxobs=MAX,workobs=0
); );
%global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name %global _webin_file_count _webin_fileuri _debug _omittextlog _webin_name
sasjs_tables SYS_JES_JOB_URI; sasjs_tables SYS_JES_JOB_URI _EXECUTIONTASKS;
%if %index("&_debug",log) %then %let _debug=131; %if %index("&_debug",log) %then %let _debug=131;
%local i tempds table; %local i tempds table;
@@ -110,8 +110,12 @@
%end; %end;
%else %do i=1 %to &_webin_file_count; %else %do i=1 %to &_webin_file_count;
/* read in any files that are sent */ /* read in any files that are sent */
/* this part needs refactoring for wide files */ %if &_EXECUTIONTASKS=true %then %do;
filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999; filename indata "%sysfunc(pathname(&&_webin_fileref&i))" lrecl=999999;
%end;
%else %do;
filename indata filesrvc "&&_webin_fileuri&i" lrecl=999999;
%end;
data _null_; data _null_;
infile indata termstr=crlf lrecl=32767; infile indata termstr=crlf lrecl=32767;
input; input;