From 58614e9a3ddf1f1d6de8e1b87a5fa5b6aecdd0cb Mon Sep 17 00:00:00 2001 From: munja Date: Sat, 16 Apr 2022 21:30:18 +0100 Subject: [PATCH] fix: using findc instead of regex for faster parsing --- all.sas | 18 +++--------------- base/mp_jsonout.sas | 6 +----- meta/mm_createwebservice.sas | 6 +----- viya/mv_createwebservice.sas | 6 +----- 4 files changed, 6 insertions(+), 30 deletions(-) diff --git a/all.sas b/all.sas index 8cca97b..c41c7ed 100644 --- a/all.sas +++ b/all.sas @@ -8441,11 +8441,7 @@ options format _numeric_ bart.; %do i=1 %to &numcols; %if &&typelong&i=char or &fmt=Y %then %do; - if prxmatch( - 'm/\"|\x0A|\x0D|\x09|\x00|\x0E|\x0F|\x01|\x02|\x10|\x11|\\/o', - &&name&i - )>0 - then do; + if findc(&&name&i,'"\'!!'0A0D09000E0F01021011'x) then do; &&name&i='"'!!trim( prxchange('s/"/\\"/',-1, /* double quote */ prxchange('s/\x0A/\n/',-1, /* new line */ @@ -14974,11 +14970,7 @@ data _null_; put ' format _numeric_ bart.; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; - put ' if prxmatch( '; - put ' ''m/\"|\x0A|\x0D|\x09|\x00|\x0E|\x0F|\x01|\x02|\x10|\x11|\\/o'', '; - put ' &&name&i '; - put ' )>0 '; - put ' then do; '; + put ' if findc(&&name&i,''"\''!!''0A0D09000E0F01021011''x) then do; '; put ' &&name&i=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ '; @@ -20473,11 +20465,7 @@ data _null_; put ' format _numeric_ bart.; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; - put ' if prxmatch( '; - put ' ''m/\"|\x0A|\x0D|\x09|\x00|\x0E|\x0F|\x01|\x02|\x10|\x11|\\/o'', '; - put ' &&name&i '; - put ' )>0 '; - put ' then do; '; + put ' if findc(&&name&i,''"\''!!''0A0D09000E0F01021011''x) then do; '; put ' &&name&i=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ '; diff --git a/base/mp_jsonout.sas b/base/mp_jsonout.sas index eca1c3b..bcb0a25 100644 --- a/base/mp_jsonout.sas +++ b/base/mp_jsonout.sas @@ -199,11 +199,7 @@ format _numeric_ bart.; %do i=1 %to &numcols; %if &&typelong&i=char or &fmt=Y %then %do; - if prxmatch( - 'm/\"|\x0A|\x0D|\x09|\x00|\x0E|\x0F|\x01|\x02|\x10|\x11|\\/o', - &&name&i - )>0 - then do; + if findc(&&name&i,'"\'!!'0A0D09000E0F01021011'x) then do; &&name&i='"'!!trim( prxchange('s/"/\\"/',-1, /* double quote */ prxchange('s/\x0A/\n/',-1, /* new line */ diff --git a/meta/mm_createwebservice.sas b/meta/mm_createwebservice.sas index 32c3e6c..adf0997 100644 --- a/meta/mm_createwebservice.sas +++ b/meta/mm_createwebservice.sas @@ -232,11 +232,7 @@ data _null_; put ' format _numeric_ bart.; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; - put ' if prxmatch( '; - put ' ''m/\"|\x0A|\x0D|\x09|\x00|\x0E|\x0F|\x01|\x02|\x10|\x11|\\/o'', '; - put ' &&name&i '; - put ' )>0 '; - put ' then do; '; + put ' if findc(&&name&i,''"\''!!''0A0D09000E0F01021011''x) then do; '; put ' &&name&i=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ '; diff --git a/viya/mv_createwebservice.sas b/viya/mv_createwebservice.sas index 768de38..9f52d43 100644 --- a/viya/mv_createwebservice.sas +++ b/viya/mv_createwebservice.sas @@ -376,11 +376,7 @@ data _null_; put ' format _numeric_ bart.; '; put ' %do i=1 %to &numcols; '; put ' %if &&typelong&i=char or &fmt=Y %then %do; '; - put ' if prxmatch( '; - put ' ''m/\"|\x0A|\x0D|\x09|\x00|\x0E|\x0F|\x01|\x02|\x10|\x11|\\/o'', '; - put ' &&name&i '; - put ' )>0 '; - put ' then do; '; + put ' if findc(&&name&i,''"\''!!''0A0D09000E0F01021011''x) then do; '; put ' &&name&i=''"''!!trim( '; put ' prxchange(''s/"/\\"/'',-1, /* double quote */ '; put ' prxchange(''s/\x0A/\n/'',-1, /* new line */ ';