From 055e8d2f13dcef0663d28e62eae59705020c9567 Mon Sep 17 00:00:00 2001 From: Allan Bowe Date: Tue, 7 Jun 2022 14:01:54 +0000 Subject: [PATCH] fix: setting header in mp_abort for sasjs server --- all.sas | 23 +++++++++++++++++------ base/mp_abort.sas | 23 +++++++++++++++++------ 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/all.sas b/all.sas index 894b28a..4712777 100644 --- a/all.sas +++ b/all.sas @@ -2248,7 +2248,8 @@ Usage: , mode=REGULAR )/*/STORE SOURCE*/; - %global sysprocessmode sysprocessname; + %global sysprocessmode sysprocessname sasjs_stpsrv_header_loc; + %local fref fid i; %if not(%eval(%unquote(&iftrue))) %then %return; @@ -2342,7 +2343,7 @@ Usage: %end; %if %symexist(SYS_JES_JOB_URI) %then %do; - /* setup webout */ + /* setup webout for Viya */ OPTIONS NOBOMFILE; %if "X&SYS_JES_JOB_URI.X"="XX" %then %do; filename _webout temp lrecl=999999 mod; @@ -2352,6 +2353,18 @@ Usage: name="_webout.json" lrecl=999999 mod; %end; %end; + %else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do; + /* set up http header for SASjs Server */ + %let fid=%sysfunc(fopen(&fref,A)); + %if &fid=0 %then %do; + %put %str(ERR)OR: %sysfunc(sysmsg()); + %return; + %end; + %let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json))); + %let rc=%sysfunc(fwrite(&fid)); + %let rc=%sysfunc(fclose(&fid)); + %let rc=%sysfunc(filename(&fref)); + %end; /* send response in SASjs JSON format */ data _null_; @@ -2372,9 +2385,7 @@ Usage: msg=cats('"',msg,'"'); if symexist('_debug') then debug=quote(trim(symget('_debug'))); else debug='""'; - if symexist('sasjsprocessmode') - and symget('sasjsprocessmode')='Stored Program' - then mode='SASJS'; + if symget('sasjsprocessmode')='Stored Program' then mode='SASJS'; if mode ne 'SASJS' then put '>>weboutBEGIN<<'; put '{"SYSDATE" : "' "&SYSDATE" '"'; put ',"SYSTIME" : "' "&SYSTIME" '"'; @@ -2407,7 +2418,7 @@ Usage: syswarningtext=quote(trim(symget('syswarningtext'))); put ",""SYSWARNINGTEXT"" : " syswarningtext; put ',"END_DTTM" : "' "%sysfunc(datetime(),E8601DT26.6)" '" '; - put "}" @; + put "}" ; if mode ne 'SASJS' then put '>>weboutEND<<'; run; diff --git a/base/mp_abort.sas b/base/mp_abort.sas index bb04cc8..adee415 100644 --- a/base/mp_abort.sas +++ b/base/mp_abort.sas @@ -63,7 +63,8 @@ , mode=REGULAR )/*/STORE SOURCE*/; - %global sysprocessmode sysprocessname; + %global sysprocessmode sysprocessname sasjs_stpsrv_header_loc; + %local fref fid i; %if not(%eval(%unquote(&iftrue))) %then %return; @@ -157,7 +158,7 @@ %end; %if %symexist(SYS_JES_JOB_URI) %then %do; - /* setup webout */ + /* setup webout for Viya */ OPTIONS NOBOMFILE; %if "X&SYS_JES_JOB_URI.X"="XX" %then %do; filename _webout temp lrecl=999999 mod; @@ -167,6 +168,18 @@ name="_webout.json" lrecl=999999 mod; %end; %end; + %else %if %sysfunc(filename(fref,&sasjs_stpsrv_header_loc))=0 %then %do; + /* set up http header for SASjs Server */ + %let fid=%sysfunc(fopen(&fref,A)); + %if &fid=0 %then %do; + %put %str(ERR)OR: %sysfunc(sysmsg()); + %return; + %end; + %let rc=%sysfunc(fput(&fid,%str(Content-Type: application/json))); + %let rc=%sysfunc(fwrite(&fid)); + %let rc=%sysfunc(fclose(&fid)); + %let rc=%sysfunc(filename(&fref)); + %end; /* send response in SASjs JSON format */ data _null_; @@ -187,9 +200,7 @@ msg=cats('"',msg,'"'); if symexist('_debug') then debug=quote(trim(symget('_debug'))); else debug='""'; - if symexist('sasjsprocessmode') - and symget('sasjsprocessmode')='Stored Program' - then mode='SASJS'; + if symget('sasjsprocessmode')='Stored Program' then mode='SASJS'; if mode ne 'SASJS' then put '>>weboutBEGIN<<'; put '{"SYSDATE" : "' "&SYSDATE" '"'; put ',"SYSTIME" : "' "&SYSTIME" '"'; @@ -222,7 +233,7 @@ syswarningtext=quote(trim(symget('syswarningtext'))); put ",""SYSWARNINGTEXT"" : " syswarningtext; put ',"END_DTTM" : "' "%sysfunc(datetime(),E8601DT26.6)" '" '; - put "}" @; + put "}" ; if mode ne 'SASJS' then put '>>weboutEND<<'; run;