mirror of
https://github.com/sasjs/core.git
synced 2026-01-09 18:30:06 +00:00
chore(merge): merging with main
This commit is contained in:
80
all.sas
80
all.sas
@@ -22680,6 +22680,82 @@ run;
|
|||||||
|
|
||||||
%mend ml_json;
|
%mend ml_json;
|
||||||
/**
|
/**
|
||||||
|
@file
|
||||||
|
@brief Returns the length of a numeric value
|
||||||
|
@details
|
||||||
|
Returns the length, in bytes, of a numeric value. If the value is
|
||||||
|
missing, then 0 is returned.
|
||||||
|
|
||||||
|
The function itself takes the following (positional) parameters:
|
||||||
|
|
||||||
|
| PARAMETER | DESCRIPTION |
|
||||||
|
|---|---|
|
||||||
|
| var | variable (or value) to be tested|
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
%mcf_length(wrap=YES, insert_cmplib=YES)
|
||||||
|
|
||||||
|
data _null_;
|
||||||
|
ina=1;
|
||||||
|
inb=10000000;
|
||||||
|
inc=12345678;
|
||||||
|
ind=.;
|
||||||
|
outa=mcf_length(ina);
|
||||||
|
outb=mcf_length(inb);
|
||||||
|
outc=mcf_length(inc);
|
||||||
|
outd=mcf_length(ind);
|
||||||
|
put (out:)(=);
|
||||||
|
run;
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
> outa=3 outb=4 outc=5 outd=0
|
||||||
|
|
||||||
|
@param [out] wrap= (NO) Choose YES to add the proc fcmp wrapper.
|
||||||
|
@param [out] insert_cmplib= (NO) Choose YES to insert the package into the
|
||||||
|
CMPLIB reference.
|
||||||
|
@param [out] lib= (work) The output library in which to create the catalog.
|
||||||
|
@param [out] cat= (sasjs) The output catalog in which to create the package.
|
||||||
|
@param [out] pkg= (utils) The output package in which to create the function.
|
||||||
|
Uses a 3 part format: libref.catalog.package
|
||||||
|
|
||||||
|
<h4> Related Macros </h4>
|
||||||
|
@li mcf_length.test.sas
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
%macro mcf_length(wrap=NO
|
||||||
|
,insert_cmplib=NO
|
||||||
|
,lib=WORK
|
||||||
|
,cat=SASJS
|
||||||
|
,pkg=UTILS
|
||||||
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
|
%if &wrap=YES %then %do;
|
||||||
|
proc fcmp outlib=&lib..&cat..&pkg;
|
||||||
|
%end;
|
||||||
|
|
||||||
|
function mcf_length(var);
|
||||||
|
if missing(var) then len=0;
|
||||||
|
else if trunc(var,3)=var then len=3;
|
||||||
|
else if trunc(var,4)=var then len=4;
|
||||||
|
else if trunc(var,5)=var then len=5;
|
||||||
|
else if trunc(var,6)=var then len=6;
|
||||||
|
else if trunc(var,7)=var then len=7;
|
||||||
|
else len=8;
|
||||||
|
return(len);
|
||||||
|
endsub;
|
||||||
|
|
||||||
|
%if &wrap=YES %then %do;
|
||||||
|
quit;
|
||||||
|
%end;
|
||||||
|
|
||||||
|
%if &insert_cmplib=YES %then %do;
|
||||||
|
options insert=(CMPLIB=(&lib..&cat));
|
||||||
|
%end;
|
||||||
|
|
||||||
|
%mend mcf_length;/**
|
||||||
@file
|
@file
|
||||||
@brief Provides a replacement for the stpsrv_header function
|
@brief Provides a replacement for the stpsrv_header function
|
||||||
@details The stpsrv_header is normally a built-in function, used to set the
|
@details The stpsrv_header is normally a built-in function, used to set the
|
||||||
@@ -22750,7 +22826,7 @@ run;
|
|||||||
%if %mf_existfunction(stpsrv_header)=1 %then %return;
|
%if %mf_existfunction(stpsrv_header)=1 %then %return;
|
||||||
|
|
||||||
%if &wrap=YES %then %do;
|
%if &wrap=YES %then %do;
|
||||||
proc fcmp outcat=&lib..&cat..&pkg;
|
proc fcmp outlib=&lib..&cat..&pkg;
|
||||||
%end;
|
%end;
|
||||||
|
|
||||||
function stpsrv_header(name $, value $);
|
function stpsrv_header(name $, value $);
|
||||||
@@ -22828,7 +22904,7 @@ endsub;
|
|||||||
)/*/STORE SOURCE*/;
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
%if &wrap=YES %then %do;
|
%if &wrap=YES %then %do;
|
||||||
proc fcmp outcat=&lib..&cat..&pkg;
|
proc fcmp outlib=&lib..&cat..&pkg;
|
||||||
%end;
|
%end;
|
||||||
|
|
||||||
function mcf_string2file(filepath $, string $, mode $);
|
function mcf_string2file(filepath $, string $, mode $);
|
||||||
|
|||||||
77
fcmp/mcf_length.sas
Normal file
77
fcmp/mcf_length.sas
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
/**
|
||||||
|
@file
|
||||||
|
@brief Returns the length of a numeric value
|
||||||
|
@details
|
||||||
|
Returns the length, in bytes, of a numeric value. If the value is
|
||||||
|
missing, then 0 is returned.
|
||||||
|
|
||||||
|
The function itself takes the following (positional) parameters:
|
||||||
|
|
||||||
|
| PARAMETER | DESCRIPTION |
|
||||||
|
|---|---|
|
||||||
|
| var | variable (or value) to be tested|
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
%mcf_length(wrap=YES, insert_cmplib=YES)
|
||||||
|
|
||||||
|
data _null_;
|
||||||
|
ina=1;
|
||||||
|
inb=10000000;
|
||||||
|
inc=12345678;
|
||||||
|
ind=.;
|
||||||
|
outa=mcf_length(ina);
|
||||||
|
outb=mcf_length(inb);
|
||||||
|
outc=mcf_length(inc);
|
||||||
|
outd=mcf_length(ind);
|
||||||
|
put (out:)(=);
|
||||||
|
run;
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
> outa=3 outb=4 outc=5 outd=0
|
||||||
|
|
||||||
|
@param [out] wrap= (NO) Choose YES to add the proc fcmp wrapper.
|
||||||
|
@param [out] insert_cmplib= (NO) Choose YES to insert the package into the
|
||||||
|
CMPLIB reference.
|
||||||
|
@param [out] lib= (work) The output library in which to create the catalog.
|
||||||
|
@param [out] cat= (sasjs) The output catalog in which to create the package.
|
||||||
|
@param [out] pkg= (utils) The output package in which to create the function.
|
||||||
|
Uses a 3 part format: libref.catalog.package
|
||||||
|
|
||||||
|
<h4> Related Macros </h4>
|
||||||
|
@li mcf_length.test.sas
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
%macro mcf_length(wrap=NO
|
||||||
|
,insert_cmplib=NO
|
||||||
|
,lib=WORK
|
||||||
|
,cat=SASJS
|
||||||
|
,pkg=UTILS
|
||||||
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
|
%if &wrap=YES %then %do;
|
||||||
|
proc fcmp outlib=&lib..&cat..&pkg;
|
||||||
|
%end;
|
||||||
|
|
||||||
|
function mcf_length(var);
|
||||||
|
if missing(var) then len=0;
|
||||||
|
else if trunc(var,3)=var then len=3;
|
||||||
|
else if trunc(var,4)=var then len=4;
|
||||||
|
else if trunc(var,5)=var then len=5;
|
||||||
|
else if trunc(var,6)=var then len=6;
|
||||||
|
else if trunc(var,7)=var then len=7;
|
||||||
|
else len=8;
|
||||||
|
return(len);
|
||||||
|
endsub;
|
||||||
|
|
||||||
|
%if &wrap=YES %then %do;
|
||||||
|
quit;
|
||||||
|
%end;
|
||||||
|
|
||||||
|
%if &insert_cmplib=YES %then %do;
|
||||||
|
options insert=(CMPLIB=(&lib..&cat));
|
||||||
|
%end;
|
||||||
|
|
||||||
|
%mend mcf_length;
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
%if %mf_existfunction(stpsrv_header)=1 %then %return;
|
%if %mf_existfunction(stpsrv_header)=1 %then %return;
|
||||||
|
|
||||||
%if &wrap=YES %then %do;
|
%if &wrap=YES %then %do;
|
||||||
proc fcmp outcat=&lib..&cat..&pkg;
|
proc fcmp outlib=&lib..&cat..&pkg;
|
||||||
%end;
|
%end;
|
||||||
|
|
||||||
function stpsrv_header(name $, value $);
|
function stpsrv_header(name $, value $);
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
)/*/STORE SOURCE*/;
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
%if &wrap=YES %then %do;
|
%if &wrap=YES %then %do;
|
||||||
proc fcmp outcat=&lib..&cat..&pkg;
|
proc fcmp outlib=&lib..&cat..&pkg;
|
||||||
%end;
|
%end;
|
||||||
|
|
||||||
function mcf_string2file(filepath $, string $, mode $);
|
function mcf_string2file(filepath $, string $, mode $);
|
||||||
|
|||||||
269
package-lock.json
generated
269
package-lock.json
generated
@@ -10,35 +10,55 @@
|
|||||||
"ts-loader": "^9.2.6"
|
"ts-loader": "^9.2.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@sasjs/cli": "^3.4.1"
|
"@sasjs/cli": "3.6.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sasjs/adapter": {
|
"node_modules/@sasjs/adapter": {
|
||||||
"version": "3.3.1",
|
"version": "3.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sasjs/adapter/-/adapter-3.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sasjs/adapter/-/adapter-3.4.1.tgz",
|
||||||
"integrity": "sha512-rmdOG+sjmwGipq1AHczwEXNUlzRFV5efj89neVVJWQMZR6JBC1O6Dr9HjEyJHPKcnQ6z3vzH9rRA2PGi5lgMhA==",
|
"integrity": "sha512-FbsvYDaoJAuH8FMidXhX3Kh4Eb8qIcxy5iiCxHgcSRWM89W29W21WfCqCw0F28yFr+V5vZkvphwXMKFdOGGxlw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sasjs/utils": "^2.32.0",
|
"@sasjs/utils": "2.32.0",
|
||||||
"axios": "^0.21.4",
|
"axios": "0.25.0",
|
||||||
"axios-cookiejar-support": "^1.0.1",
|
"axios-cookiejar-support": "1.0.1",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "4.0.0",
|
||||||
"https": "^1.0.0",
|
"https": "1.0.0",
|
||||||
"tough-cookie": "^4.0.0"
|
"tough-cookie": "4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sasjs/adapter/node_modules/@sasjs/utils": {
|
||||||
|
"version": "2.32.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.32.0.tgz",
|
||||||
|
"integrity": "sha512-xnvdEuI4PhTtulcdDEIMK7IxVj9bOMU1JTnxRuSEKWcsclY9P9Fw3cnMOOEgXCDffrOPn3f54DP7Wb1GXd+f8g==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/fs-extra": "^9.0.11",
|
||||||
|
"@types/prompts": "^2.0.13",
|
||||||
|
"chalk": "^4.1.1",
|
||||||
|
"cli-table": "^0.3.6",
|
||||||
|
"consola": "^2.15.0",
|
||||||
|
"csv-stringify": "^5.6.5",
|
||||||
|
"fs-extra": "^10.0.0",
|
||||||
|
"jwt-decode": "^3.1.2",
|
||||||
|
"prompts": "^2.4.1",
|
||||||
|
"rimraf": "^3.0.2",
|
||||||
|
"valid-url": "^1.0.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sasjs/cli": {
|
"node_modules/@sasjs/cli": {
|
||||||
"version": "3.4.1",
|
"version": "3.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sasjs/cli/-/cli-3.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sasjs/cli/-/cli-3.6.0.tgz",
|
||||||
"integrity": "sha512-voc0/h8bkRAqrj7Pu1egYfCOSFLlLrrh9bXVLuGvSvWK81MezRZnWciTHlQGc9BgO2wU+LrQ0baIMd6u/HMB5Q==",
|
"integrity": "sha512-px5aFXNoTlML7g4TvP92q/uqWnHGbxnwEzy+4D+sJbXgpzLlCyyuUU7rbd/9sXT+/Pi7vjfHfBCv0JhoGYr6gw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sasjs/adapter": "3.3.1",
|
"@sasjs/adapter": "3.4.1",
|
||||||
"@sasjs/core": "^3.8.0",
|
"@sasjs/core": "3.10.0",
|
||||||
"@sasjs/lint": "1.11.2",
|
"@sasjs/lint": "1.11.2",
|
||||||
"@sasjs/utils": "2.34.1",
|
"@sasjs/utils": "2.35.0",
|
||||||
"chalk": "4.1.2",
|
"chalk": "4.1.2",
|
||||||
"csv-stringify": "5.6.5",
|
"csv-stringify": "5.6.5",
|
||||||
"dotenv": "10.0.0",
|
"dotenv": "10.0.0",
|
||||||
@@ -53,7 +73,7 @@
|
|||||||
"node-graphviz": "0.1.0",
|
"node-graphviz": "0.1.0",
|
||||||
"ora": "5.4.1",
|
"ora": "5.4.1",
|
||||||
"rimraf": "3.0.2",
|
"rimraf": "3.0.2",
|
||||||
"shelljs": "0.8.4",
|
"shelljs": "0.8.5",
|
||||||
"xml": "1.0.1",
|
"xml": "1.0.1",
|
||||||
"yargs": "17.2.1"
|
"yargs": "17.2.1"
|
||||||
},
|
},
|
||||||
@@ -61,10 +81,31 @@
|
|||||||
"sasjs": "build/index.js"
|
"sasjs": "build/index.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@sasjs/cli/node_modules/@sasjs/utils": {
|
||||||
|
"version": "2.35.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.35.0.tgz",
|
||||||
|
"integrity": "sha512-q9ZKV+TXqwiaj+0z5U7/00eBpp2QpjKfC9BKx7A6rQjBl10WtoWd5C9Em+RQULWVEdRbVS2XcnNsWelbKq/Zsw==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/fs-extra": "^9.0.13",
|
||||||
|
"@types/prompts": "^2.0.13",
|
||||||
|
"chalk": "^4.1.1",
|
||||||
|
"cli-table": "^0.3.6",
|
||||||
|
"consola": "^2.15.0",
|
||||||
|
"csv-stringify": "^5.6.5",
|
||||||
|
"find": "0.3.0",
|
||||||
|
"fs-extra": "^10.0.0",
|
||||||
|
"jwt-decode": "^3.1.2",
|
||||||
|
"prompts": "^2.4.1",
|
||||||
|
"rimraf": "^3.0.2",
|
||||||
|
"valid-url": "^1.0.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@sasjs/core": {
|
"node_modules/@sasjs/core": {
|
||||||
"version": "3.8.1",
|
"version": "3.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sasjs/core/-/core-3.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sasjs/core/-/core-3.10.0.tgz",
|
||||||
"integrity": "sha512-Yxak+WZwh8Z9IKcbi7aDDTRCcKlI6IUp7Ujavkec5pWMj3a2FSlLxu23lY2ERTBe7wMCGiaU7AseWlKcgd5joA==",
|
"integrity": "sha512-lgLxDYpIvwSrXFaUaTFCR0KXHQEc5QIOL4DU87TvBHEUUAWNQHzuVQWkavLtW5hbvLGnPXnyvspzoSzmBojXzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ts-loader": "^9.2.6"
|
"ts-loader": "^9.2.6"
|
||||||
@@ -138,9 +179,9 @@
|
|||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/fs-extra": {
|
"node_modules/@types/fs-extra": {
|
||||||
"version": "9.0.12",
|
"version": "9.0.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
|
||||||
"integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==",
|
"integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
@@ -455,12 +496,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "0.21.4",
|
"version": "0.25.0",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz",
|
||||||
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
|
"integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.14.0"
|
"follow-redirects": "^1.14.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/axios-cookiejar-support": {
|
"node_modules/axios-cookiejar-support": {
|
||||||
@@ -1057,9 +1098,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/follow-redirects": {
|
"node_modules/follow-redirects": {
|
||||||
"version": "1.14.6",
|
"version": "1.14.7",
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
|
||||||
"integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
|
"integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1341,9 +1382,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-core-module": {
|
"node_modules/is-core-module": {
|
||||||
"version": "2.4.0",
|
"version": "2.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
|
||||||
"integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
|
"integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"has": "^1.0.3"
|
"has": "^1.0.3"
|
||||||
@@ -1893,13 +1934,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/resolve": {
|
"node_modules/resolve": {
|
||||||
"version": "1.20.0",
|
"version": "1.21.0",
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz",
|
||||||
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
|
"integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-core-module": "^2.2.0",
|
"is-core-module": "^2.8.0",
|
||||||
"path-parse": "^1.0.6"
|
"path-parse": "^1.0.7",
|
||||||
|
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"resolve": "bin/resolve"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
@@ -2025,9 +2070,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/shelljs": {
|
"node_modules/shelljs": {
|
||||||
"version": "0.8.4",
|
"version": "0.8.5",
|
||||||
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
|
||||||
"integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
|
"integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob": "^7.0.0",
|
"glob": "^7.0.0",
|
||||||
@@ -2117,6 +2162,18 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/supports-preserve-symlinks-flag": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/symbol-tree": {
|
"node_modules/symbol-tree": {
|
||||||
"version": "3.2.4",
|
"version": "3.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
||||||
@@ -2587,29 +2644,50 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sasjs/adapter": {
|
"@sasjs/adapter": {
|
||||||
"version": "3.3.1",
|
"version": "3.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sasjs/adapter/-/adapter-3.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sasjs/adapter/-/adapter-3.4.1.tgz",
|
||||||
"integrity": "sha512-rmdOG+sjmwGipq1AHczwEXNUlzRFV5efj89neVVJWQMZR6JBC1O6Dr9HjEyJHPKcnQ6z3vzH9rRA2PGi5lgMhA==",
|
"integrity": "sha512-FbsvYDaoJAuH8FMidXhX3Kh4Eb8qIcxy5iiCxHgcSRWM89W29W21WfCqCw0F28yFr+V5vZkvphwXMKFdOGGxlw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sasjs/utils": "^2.32.0",
|
"@sasjs/utils": "2.32.0",
|
||||||
"axios": "^0.21.4",
|
"axios": "0.25.0",
|
||||||
"axios-cookiejar-support": "^1.0.1",
|
"axios-cookiejar-support": "1.0.1",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "4.0.0",
|
||||||
"https": "^1.0.0",
|
"https": "1.0.0",
|
||||||
"tough-cookie": "^4.0.0"
|
"tough-cookie": "4.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@sasjs/utils": {
|
||||||
|
"version": "2.32.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.32.0.tgz",
|
||||||
|
"integrity": "sha512-xnvdEuI4PhTtulcdDEIMK7IxVj9bOMU1JTnxRuSEKWcsclY9P9Fw3cnMOOEgXCDffrOPn3f54DP7Wb1GXd+f8g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/fs-extra": "^9.0.11",
|
||||||
|
"@types/prompts": "^2.0.13",
|
||||||
|
"chalk": "^4.1.1",
|
||||||
|
"cli-table": "^0.3.6",
|
||||||
|
"consola": "^2.15.0",
|
||||||
|
"csv-stringify": "^5.6.5",
|
||||||
|
"fs-extra": "^10.0.0",
|
||||||
|
"jwt-decode": "^3.1.2",
|
||||||
|
"prompts": "^2.4.1",
|
||||||
|
"rimraf": "^3.0.2",
|
||||||
|
"valid-url": "^1.0.9"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sasjs/cli": {
|
"@sasjs/cli": {
|
||||||
"version": "3.4.1",
|
"version": "3.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sasjs/cli/-/cli-3.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sasjs/cli/-/cli-3.6.0.tgz",
|
||||||
"integrity": "sha512-voc0/h8bkRAqrj7Pu1egYfCOSFLlLrrh9bXVLuGvSvWK81MezRZnWciTHlQGc9BgO2wU+LrQ0baIMd6u/HMB5Q==",
|
"integrity": "sha512-px5aFXNoTlML7g4TvP92q/uqWnHGbxnwEzy+4D+sJbXgpzLlCyyuUU7rbd/9sXT+/Pi7vjfHfBCv0JhoGYr6gw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sasjs/adapter": "3.3.1",
|
"@sasjs/adapter": "3.4.1",
|
||||||
"@sasjs/core": "^3.8.0",
|
"@sasjs/core": "3.10.0",
|
||||||
"@sasjs/lint": "1.11.2",
|
"@sasjs/lint": "1.11.2",
|
||||||
"@sasjs/utils": "2.34.1",
|
"@sasjs/utils": "2.35.0",
|
||||||
"chalk": "4.1.2",
|
"chalk": "4.1.2",
|
||||||
"csv-stringify": "5.6.5",
|
"csv-stringify": "5.6.5",
|
||||||
"dotenv": "10.0.0",
|
"dotenv": "10.0.0",
|
||||||
@@ -2624,15 +2702,37 @@
|
|||||||
"node-graphviz": "0.1.0",
|
"node-graphviz": "0.1.0",
|
||||||
"ora": "5.4.1",
|
"ora": "5.4.1",
|
||||||
"rimraf": "3.0.2",
|
"rimraf": "3.0.2",
|
||||||
"shelljs": "0.8.4",
|
"shelljs": "0.8.5",
|
||||||
"xml": "1.0.1",
|
"xml": "1.0.1",
|
||||||
"yargs": "17.2.1"
|
"yargs": "17.2.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@sasjs/utils": {
|
||||||
|
"version": "2.35.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sasjs/utils/-/utils-2.35.0.tgz",
|
||||||
|
"integrity": "sha512-q9ZKV+TXqwiaj+0z5U7/00eBpp2QpjKfC9BKx7A6rQjBl10WtoWd5C9Em+RQULWVEdRbVS2XcnNsWelbKq/Zsw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/fs-extra": "^9.0.13",
|
||||||
|
"@types/prompts": "^2.0.13",
|
||||||
|
"chalk": "^4.1.1",
|
||||||
|
"cli-table": "^0.3.6",
|
||||||
|
"consola": "^2.15.0",
|
||||||
|
"csv-stringify": "^5.6.5",
|
||||||
|
"find": "0.3.0",
|
||||||
|
"fs-extra": "^10.0.0",
|
||||||
|
"jwt-decode": "^3.1.2",
|
||||||
|
"prompts": "^2.4.1",
|
||||||
|
"rimraf": "^3.0.2",
|
||||||
|
"valid-url": "^1.0.9"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@sasjs/core": {
|
"@sasjs/core": {
|
||||||
"version": "3.8.1",
|
"version": "3.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sasjs/core/-/core-3.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sasjs/core/-/core-3.10.0.tgz",
|
||||||
"integrity": "sha512-Yxak+WZwh8Z9IKcbi7aDDTRCcKlI6IUp7Ujavkec5pWMj3a2FSlLxu23lY2ERTBe7wMCGiaU7AseWlKcgd5joA==",
|
"integrity": "sha512-lgLxDYpIvwSrXFaUaTFCR0KXHQEc5QIOL4DU87TvBHEUUAWNQHzuVQWkavLtW5hbvLGnPXnyvspzoSzmBojXzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ts-loader": "^9.2.6"
|
"ts-loader": "^9.2.6"
|
||||||
@@ -2702,9 +2802,9 @@
|
|||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"@types/fs-extra": {
|
"@types/fs-extra": {
|
||||||
"version": "9.0.12",
|
"version": "9.0.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
|
||||||
"integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==",
|
"integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
@@ -2986,12 +3086,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"axios": {
|
"axios": {
|
||||||
"version": "0.21.4",
|
"version": "0.25.0",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz",
|
||||||
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
|
"integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"follow-redirects": "^1.14.0"
|
"follow-redirects": "^1.14.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"axios-cookiejar-support": {
|
"axios-cookiejar-support": {
|
||||||
@@ -3433,9 +3533,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follow-redirects": {
|
"follow-redirects": {
|
||||||
"version": "1.14.6",
|
"version": "1.14.7",
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
|
||||||
"integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
|
"integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"form-data": {
|
"form-data": {
|
||||||
@@ -3639,9 +3739,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"is-core-module": {
|
"is-core-module": {
|
||||||
"version": "2.4.0",
|
"version": "2.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
|
||||||
"integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
|
"integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"has": "^1.0.3"
|
"has": "^1.0.3"
|
||||||
@@ -4063,13 +4163,14 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"resolve": {
|
"resolve": {
|
||||||
"version": "1.20.0",
|
"version": "1.21.0",
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz",
|
||||||
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
|
"integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"is-core-module": "^2.2.0",
|
"is-core-module": "^2.8.0",
|
||||||
"path-parse": "^1.0.6"
|
"path-parse": "^1.0.7",
|
||||||
|
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"resolve-dir": {
|
"resolve-dir": {
|
||||||
@@ -4150,9 +4251,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"shelljs": {
|
"shelljs": {
|
||||||
"version": "0.8.4",
|
"version": "0.8.5",
|
||||||
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
|
||||||
"integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
|
"integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^7.0.0",
|
"glob": "^7.0.0",
|
||||||
@@ -4224,6 +4325,12 @@
|
|||||||
"has-flag": "^4.0.0"
|
"has-flag": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"supports-preserve-symlinks-flag": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"symbol-tree": {
|
"symbol-tree": {
|
||||||
"version": "3.2.4",
|
"version": "3.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
|
||||||
|
|||||||
@@ -33,9 +33,6 @@
|
|||||||
"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"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@sasjs/cli": "^3.4.1"
|
"@sasjs/cli": "3.6.0"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"ts-loader": "^9.2.6"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
50
tests/crossplatform/mcf_length.test.sas
Normal file
50
tests/crossplatform/mcf_length.test.sas
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
/**
|
||||||
|
@file
|
||||||
|
@brief Testing mcf_length.sas macro
|
||||||
|
|
||||||
|
<h4> SAS Macros </h4>
|
||||||
|
@li mcf_length.sas
|
||||||
|
@li mp_assert.sas
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
%mcf_length(wrap=YES, insert_cmplib=YES)
|
||||||
|
|
||||||
|
data test;
|
||||||
|
call symputx('null',mcf_length(.));
|
||||||
|
call symputx('three',mcf_length(1));
|
||||||
|
call symputx('four',mcf_length(10000000));
|
||||||
|
call symputx('five',mcf_length(12345678));
|
||||||
|
call symputx('six',mcf_length(1234567890));
|
||||||
|
call symputx('seven',mcf_length(12345678901234));
|
||||||
|
call symputx('eight',mcf_length(12345678901234567));
|
||||||
|
run;
|
||||||
|
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%str(&null)=%str(0)),
|
||||||
|
desc=Check if NULL returns 0
|
||||||
|
)
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%str(&three)=%str(3)),
|
||||||
|
desc=Check for length 3
|
||||||
|
)
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%str(&four)=%str(4)),
|
||||||
|
desc=Check for length 4
|
||||||
|
)
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%str(&five)=%str(5)),
|
||||||
|
desc=Check for length 5
|
||||||
|
)
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%str(&six)=%str(6)),
|
||||||
|
desc=Check for length 6
|
||||||
|
)
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%str(&seven)=%str(7)),
|
||||||
|
desc=Check for length 3
|
||||||
|
)
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(%str(&eight)=%str(8)),
|
||||||
|
desc=Check for length 8
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user