<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Patrick Tracker</title>
    <link>https://communities.sas.com/kntur85557/tracker</link>
    <description>Patrick Tracker</description>
    <pubDate>Sun, 19 Apr 2026 06:29:47 GMT</pubDate>
    <dc:date>2026-04-19T06:29:47Z</dc:date>
    <item>
      <title>Re: SAS online on mainframe -   Is there a way to prevent execution of a DELETE command via SCL code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-online-on-mainframe-Is-there-a-way-to-prevent-execution-of-a/m-p/986527#M379958</link>
      <description>&lt;P&gt;Copy/paste your question into MS Copilot 365.&lt;/P&gt;
&lt;P&gt;I can't fully validate the answer I've got, but it looked sensible to me.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Be aware that SAS/AF, SAS/FSP have been discontinued under SAS Viya (as well as "PC SAS") and though whatever you build using this technology becomes "technical debt".&lt;/P&gt;</description>
      <pubDate>Sat, 18 Apr 2026 09:37:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-online-on-mainframe-Is-there-a-way-to-prevent-execution-of-a/m-p/986527#M379958</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2026-04-18T09:37:40Z</dc:date>
    </item>
    <item>
      <title>Re: Bulk loading</title>
      <link>https://communities.sas.com/t5/Administration-and-Deployment/Bulk-loading/m-p/986526#M30793</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/481217"&gt;@Wiki-Ben&lt;/a&gt;&amp;nbsp;The screen shot looks like DI Studio. Correct?&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;I've asked Copilot 365 about performance when using bulkload=yes with SAS Access to ODBC and the answer was interesting (though don't know if correct):&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1776503449212.png" style="width: 585px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/114308i53620BFD828EA200/image-dimensions/585x171?v=v2" width="585" height="171" role="button" title="Patrick_0-1776503449212.png" alt="Patrick_0-1776503449212.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So just based on the Copilot answers, it's likely better to go with what&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13976"&gt;@SASKiwi&lt;/a&gt;&amp;nbsp;proposed (increase the insertbuff value, set dbcommit=0). &lt;BR /&gt;If you are using SAS Access to SQL Server then of course bulkload=yes could might make a difference, especially when loading into an empty table.&lt;BR /&gt;&lt;BR /&gt;Bulkload=yes can be a libname or even a dataset option and though I would assume setting it in DIS will be sufficient on any level.&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 18 Apr 2026 09:16:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Administration-and-Deployment/Bulk-loading/m-p/986526#M30793</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2026-04-18T09:16:27Z</dc:date>
    </item>
    <item>
      <title>How to improve performance copying a huge table while also creating additional indexes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-improve-performance-copying-a-huge-table-while-also/m-p/983487#M379494</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm dealing with a case where analysts/modellers are dealing with Base SAS analytical tables that can get up-to 2.5TB in volume (compressed) with up-to 1000 variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Obviously such volumes are not ideal for adhoc analysis especially because there aren't many indexes on these tables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I can't do anything about these source tables and though what I'm thinking:&lt;/P&gt;
&lt;P&gt;Write a macro that allows these users to create a copy of such tables under their user folder with ideally only a sub-set of columns and added indexes of their choice.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Because even reading a 2.5TB table also takes really long, I'm trying to come-up with a table copy approach that performs as good as possible.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The environment is a SAS Grid, SAS 9.4M5, rhel with 32 cpu's per node (actual). The default for an EG session the users spawn are 4 nodes.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below demo code is the best I could come up with and I'd love your advise if there is anything else I could do to improve performance both for creating the copy as well as query performance using where clauses.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I assume for the copy and index creation process it's all about minimizing i/o and passes through the data.&lt;/P&gt;
&lt;P&gt;For this reason, I've added creation of new indexes as data set option to the append base table ...but I don't really know if SAS will actually create these indexes via a single pass through the data together with the copy process or if creating the indexes later on via a proc datasets create index would perform the same.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm creating the target table using the spde engine. I don't have a lot of hands-on experience with this engine but I believe because the data copy needs to be under a user folder, there is no use for more than one data or index folder.&lt;/P&gt;
&lt;P&gt;About the number of partitions: Based on what I've read in the docu, I'm thinking about defining them as "size of source tables/number of actual cpu". Not sure if I got that right though.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And here the sample code (self contained and fully executable as is).&lt;/P&gt;
&lt;PRE&gt;options fullstimer msglevel=i dlcreatedir;
%let root_path=%sysfunc(pathname(work));
%let tbl      =analytical_table;

/*-- source table: existing analytical table with up to 2.5TB (compressed) and up to 1000 variables --*/
libname src "&amp;amp;root_path.\src";
data src.&amp;amp;tbl.;
  set sashelp.class;  
  array var_ {20} 8 ;
  do k=1 to 10000;
    do i=1 to dim(var_);
      var_[i]=i*_n_;
    end;
    output;
  end;
run;
proc sort data=src.&amp;amp;tbl. out=src.&amp;amp;tbl.(index=(name age n_a=(name age)));
  by name;
run;


/*-- target table: copy of analytical table with added indexes and reduced number of columns --*/

/* create required folders */
libname trg "&amp;amp;root_path.\trg"; 
libname trg "&amp;amp;root_path.\trg\spde_&amp;amp;tbl";

/* assign target library using spde engine */ 
libname trg spde "&amp;amp;root_path.\trg" datapath=("&amp;amp;root_path.\trg\spde_&amp;amp;tbl") indexpath=("&amp;amp;root_path.\trg\spde_&amp;amp;tbl") compress=char /*partsize=&amp;amp;gb_part_size.G*/;

/* create target table with added indexes and less columns */
proc datasets lib=trg nolist nowarn;
  delete &amp;amp;tbl.;
  run;
  append
    base=trg.&amp;amp;tbl.(index=(var_1 var_2 idx_01=(var_1 var_2)))
    data=src.&amp;amp;tbl.(keep=name--var_4)
    getsort
    ;
  run;
quit;

/* list indexes on target table */
proc sql;
  select *
  from dictionary.indexes
  where libname='TRG' and memname=%upcase("&amp;amp;tbl.")
  ;
quit;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks, Patrick&lt;/P&gt;</description>
      <pubDate>Sat, 14 Feb 2026 06:01:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-improve-performance-copying-a-huge-table-while-also/m-p/983487#M379494</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2026-02-14T06:01:01Z</dc:date>
    </item>
    <item>
      <title>Re: send  email +attach log file only in case of error or warning</title>
      <link>https://communities.sas.com/t5/SAS-Programming/send-email-attach-log-file-only-in-case-of-error-or-warning/m-p/982116#M379241</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;Thank you both for your explanations.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So if SAS doesn't catch all errors and return them as error condition to the shell then one can't trust any scheduled process flow (lsf, airflow, ...) where child nodes only execute if all parent nodes executed without error.&lt;/P&gt;
&lt;P&gt;Do I get this right? And if yes how are you scheduling jobs?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 18 Jan 2026 00:57:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/send-email-attach-log-file-only-in-case-of-error-or-warning/m-p/982116#M379241</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2026-01-18T00:57:44Z</dc:date>
    </item>
    <item>
      <title>Re: send  email +attach log file only in case of error or warning</title>
      <link>https://communities.sas.com/t5/SAS-Programming/send-email-attach-log-file-only-in-case-of-error-or-warning/m-p/982112#M379238</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;Why did you have to scan the SAS log and couldn't just check for the exit code of the process?&lt;/P&gt;
&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159549"&gt;@Ronein&lt;/a&gt;&amp;nbsp;Please provide more detail how you run your daily job? Are you using a scheduler or are you just submitting the job every day? Which environment are you using (OS and potentially scheduler), is it a SAS grid or a single machine, ideally share your batch command with us.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 17 Jan 2026 03:22:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/send-email-attach-log-file-only-in-case-of-error-or-warning/m-p/982112#M379238</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2026-01-17T03:22:06Z</dc:date>
    </item>
    <item>
      <title>Re: How to switch between different projects using EG?</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-switch-between-different-projects-using-EG/m-p/981607#M46349</link>
      <description>&lt;P&gt;If you're talking about the server side SAS sessions then with EG you can only have one session at a time per server you connect to.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can always disconnect/reconnect to the server to spawn a new session.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can connect to different app servers (if available) with separate sessions and you can select on which app server to execute a program.&lt;/P&gt;
&lt;P&gt;You can also have two EG projects open (=EG started twice) and they will create separate sessions.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 07 Jan 2026 04:09:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/How-to-switch-between-different-projects-using-EG/m-p/981607#M46349</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2026-01-07T04:09:40Z</dc:date>
    </item>
    <item>
      <title>Re: Download Dataset From SAS Server to Local Folder</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Download-Dataset-From-SAS-Server-to-Local-Folder/m-p/981593#M46352</link>
      <description>&lt;P&gt;Below a Gemini answer when using Google Chrome that looks right to me:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1767739362593.png" style="width: 624px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/112520iD3C7D86AA22DDDF0/image-dimensions/624x297?v=v2" width="624" height="297" role="button" title="Patrick_0-1767739362593.png" alt="Patrick_0-1767739362593.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Jan 2026 22:47:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Download-Dataset-From-SAS-Server-to-Local-Folder/m-p/981593#M46352</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2026-01-06T22:47:23Z</dc:date>
    </item>
    <item>
      <title>Re: Need help with merging two different data sets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-merging-two-different-data-sets/m-p/981358#M379090</link>
      <description>&lt;P&gt;Not really sure if that's the ideal data structure for your t-test but below what you've been asking for.&lt;/P&gt;
&lt;P&gt;Please note that I've changed the year in the last row for data A so it matches what you show us as desired result.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data A;
    infile datalines dsd truncover dlm=' ';
    length TICKER $5;
    input TICKER $ YEARP BSIZEP;
datalines;
ACGN 2019 8
ACRS 2019 8
ADAP 2018 10
;
run;

proc sort data=a;
  by ticker yearp;
run;

data B;
    infile datalines dsd truncover dlm=' ';
    length TICKER $5;
    input TICKER $ YEAR DBSIZE;
datalines;
ACGN 2020 7
ACGN 2021 7
ACMR 2021 5
ACRS 2020 9
ADAP 2020 9
;
run;

proc sort data=b;
  by ticker year;
run;

data want;
  merge a b;
  by ticker;
  output;
  call missing(of _all_);
run;

proc print data=want;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1767055211203.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/112452iCD761CFE748070CA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Patrick_0-1767055211203.png" alt="Patrick_0-1767055211203.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Dec 2025 00:41:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-with-merging-two-different-data-sets/m-p/981358#M379090</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-30T00:41:25Z</dc:date>
    </item>
    <item>
      <title>Re: Sub-String Theory: Reducing duplicate substrings to single substrings</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sub-String-Theory-Reducing-duplicate-substrings-to-single/m-p/981355#M379088</link>
      <description>&lt;P&gt;Below a possible approach.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile datalines truncover;
  input have_string $200.;
  datalines;
Los Lunas/Corona/Corona/White Mountain/White Mountain
;

data want(drop=_:);
  if _n_=1 then
    do;
      length _term $50;
      dcl hash h1();
      h1.defineKey('_term');
      h1.defineDone();
      
    end;
    
  set have;
  
  if 0 then want_string=have_string;
    
  do _i=1 to countc(have_string,'/')+1;
    _term=scan(have_string,_i,'/');
    if h1.check() ne 0 then
      do;
        want_string=catx('/',want_string,_term);
        _rc=h1.add();
      end;
  end;
  
  _rc=h1.clear();
 run;
 
 proc print data=want;
 run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1767052952578.png" style="width: 671px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/112451i14281179FDA8C661/image-dimensions/671x57?v=v2" width="671" height="57" role="button" title="Patrick_0-1767052952578.png" alt="Patrick_0-1767052952578.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Dec 2025 00:02:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sub-String-Theory-Reducing-duplicate-substrings-to-single/m-p/981355#M379088</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-30T00:02:56Z</dc:date>
    </item>
    <item>
      <title>Re: Code to search for .zipx files in a Windows directory and export list to Excel?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Code-to-search-for-zipx-files-in-a-Windows-directory-and-export/m-p/980939#M379013</link>
      <description>&lt;P&gt;Can you run dos commands out of SAS in your environment? If you don't know then run below. If it shows XCMD in the SAS log then you can, if it's NOXCMD then you can't.&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc options option=xcmd;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you can run dos commands then something like below gets you the list.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* list all .zipx files under c:\temp and sub-folders */ 
data work.my_zipx;
  infile 'dir "C:\temp\*.zipx" /S /B' pipe truncover;
  input myfiles:$1000.;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And once you've got the files in a SAS table, you can use Proc Export or ODS EXCEL to write the table to Excel.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or even "lazier" just write the found files to a .csv text file that you can open directly via Excel.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* list all .zipx files under c:\temp and sub-folders and write records to C:\temp\zipx_files.csv */ 
data _null_;
  file "C:\temp\zipx_files.csv";
  infile 'dir "C:\temp\*.zipx" /S /B' pipe truncover;
  input;
  put _infile_;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 18 Dec 2025 01:09:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Code-to-search-for-zipx-files-in-a-Windows-directory-and-export/m-p/980939#M379013</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-18T01:09:52Z</dc:date>
    </item>
    <item>
      <title>Re: Exam 000-240 – Am I Ready?</title>
      <link>https://communities.sas.com/t5/SAS-Software-for-Learning/Exam-000-240-Am-I-Ready/m-p/980751#M2781</link>
      <description>&lt;P&gt;It's long since I've done a SAS cert but at that time passing the practice exam was a very good indication how I'll be doing at the exam.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Dec 2025 00:19:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Software-for-Learning/Exam-000-240-Am-I-Ready/m-p/980751#M2781</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-15T00:19:12Z</dc:date>
    </item>
    <item>
      <title>Re: LAG function bad for copilot...shall I trust copilot?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/LAG-function-bad-for-copilot-shall-I-trust-copilot/m-p/980741#M378986</link>
      <description>&lt;P&gt;What Copilot tells you is true for:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;pay=cum_pay - lag(cum_pay);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;But in your logic you then populate variable pay again with start_pay whenever the condition becomes true - and the condition will always be true&amp;nbsp;if there is a&amp;nbsp;&lt;STRONG&gt;different ID/employerID/tax year &lt;/STRONG&gt;and though the issue Copilot flags won't come into effect.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;if personid~= lag(personid)
   or employerid~= lag(employerid) 
   or tax_year_start~=lag(tax_year_start)
then pay=start_pay; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You could consider to express your logic as below.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data pay_data;
  set sorted_data;
  by personID employerid tax_year_start payment_date;
  pay=cum_pay - lag(cum_pay);
  if first.tax_year_start then pay=start_pay;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Note: lag(cum_pay) needs to execute for every row and though can't get moved to an else condition.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 14 Dec 2025 02:20:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/LAG-function-bad-for-copilot-shall-I-trust-copilot/m-p/980741#M378986</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-14T02:20:49Z</dc:date>
    </item>
    <item>
      <title>Re: add single quotes to all macro var components</title>
      <link>https://communities.sas.com/t5/SAS-Programming/add-single-quotes-to-all-macro-var-components/m-p/980357#M378930</link>
      <description>&lt;P&gt;The code I've posted &lt;A href="https://communities.sas.com/t5/SAS-Programming/sas-add-single-quotes-for-each-argument-in-macro-variable/m-p/980268" target="_self"&gt;here&lt;/A&gt; will also work for this macro variable. I wouldn't directly change the macro var itself but create a new one.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let allv_y2=%sysfunc(prxchange(s/(\w+)/'$1'/,-1,&amp;amp;allv_y));
%put &amp;amp;=allv_y2;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And if you also want to replace multiple blanks with a single blank then below should do.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let allv_y3=%sysfunc(prxchange(s/(\w+)( *)/'$1' /,-1,&amp;amp;allv_y));
%put &amp;amp;=allv_y3;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For your data step syntax: Just assign the max length of 32767. It's only one iteration of a data _null_ step and though performance impact of a too long var will be minimal.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Dec 2025 07:44:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/add-single-quotes-to-all-macro-var-components/m-p/980357#M378930</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-08T07:44:28Z</dc:date>
    </item>
    <item>
      <title>Re: sas add single quotes for each argument in macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-add-single-quotes-for-each-argument-in-macro-variable/m-p/980278#M378924</link>
      <description>&lt;P&gt;Here one way to go&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let My1=X Y Z;
%let My2=%sysfunc(prxchange(s/(\w+)/'$1'/i,-1,&amp;amp;My1));
%put &amp;amp;=My2;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt; 69         %let My1=X Y Z;
 70         %let My2=%sysfunc(prxchange(s/(\w+)/'$1'/i,-1,&amp;amp;My1));
 71         %put &amp;amp;=My2;
 MY2='X' 'Y' 'Z'&lt;/PRE&gt;</description>
      <pubDate>Sun, 07 Dec 2025 11:02:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-add-single-quotes-for-each-argument-in-macro-variable/m-p/980278#M378924</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-07T11:02:00Z</dc:date>
    </item>
    <item>
      <title>Re: Prevent warning whgen var not exist</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Prevent-warning-whgen-var-not-exist/m-p/980267#M378919</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159549"&gt;@Ronein&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;Let's say i want to prevent warning only on specific code and when continue other codes warning will behave normally&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;already shared how this can be done.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Another option is to build your list of vars to keep dynamically to only contain variable names that actually exist in your source table.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
  select name into :keeplist separated by ' '
  from dictionary.columns
  where libname='SASHELP' and memname='CARS'
    and upcase(name) in ('MODEL','MAKE','INVOICE','COLOR')
  ;
quit;
 
data cars;
  set sashelp.cars(KEEP=&amp;amp;keeplist);
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 07 Dec 2025 04:50:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Prevent-warning-whgen-var-not-exist/m-p/980267#M378919</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-07T04:50:21Z</dc:date>
    </item>
    <item>
      <title>Re: Extract Number From String and Convert to Number</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-Number-From-String-and-Convert-to-Number/m-p/980175#M378896</link>
      <description>&lt;P&gt;Something like below should do.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input var1 $ var2 $;
datalines;
ROOMA 	DESK01A 	
ROOMA 	DESK01B 	
ROOMA 	DESK05B 	
ROOMA 	DESK06A 	
ROOMB 	DESK09A 	
ROOMB 	DESK09B 	
ROOMC 	DESK01B 	
ROOMC 	DESK05A 	
ROOMD 	DESK10B 	
ROOME 	DESK15A 	
ROOME 	DESK15B 	
ROOME 	DESK16 	
ROOME 	DESK 	
;

proc format;
	value range
	.   			= 'missing'
	low - 5 	= 'Range 1'
	5 -  10 	= 'Range 2'
	10 - high	= 'Range 3'
	;
run;

data want;
	set have;
	nums=input(scan(var2,1,,'kd'),best32.);
run;

proc sql;
	select var1, var2, nums as nums1 format=best32., nums as nums2 format=range.
	from want
	;
quit;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1764888160946.png" style="width: 358px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/111898iB25CEC025F9C8198/image-dimensions/358x306?v=v2" width="358" height="306" role="button" title="Patrick_0-1764888160946.png" alt="Patrick_0-1764888160946.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Dec 2025 22:43:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-Number-From-String-and-Convert-to-Number/m-p/980175#M378896</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-04T22:43:00Z</dc:date>
    </item>
    <item>
      <title>Re: Installing a Postgresql instance inside a SAS environment (Windows Installation)</title>
      <link>https://communities.sas.com/t5/Administration-and-Deployment/Installing-a-Postgresql-instance-inside-a-SAS-environment/m-p/979830#M30488</link>
      <description>&lt;P&gt;One indication that installing another instance shouldn't create any issues:&amp;nbsp;&lt;BR /&gt;SAS Risk Solutions also use Postgres and it's not the WIP server but a separate instance (with likely separate binaries).&lt;/P&gt;</description>
      <pubDate>Mon, 01 Dec 2025 22:27:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Administration-and-Deployment/Installing-a-Postgresql-instance-inside-a-SAS-environment/m-p/979830#M30488</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-12-01T22:27:30Z</dc:date>
    </item>
    <item>
      <title>Re: Newbie data processing question - frequency across two columns?</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Newbie-data-processing-question-frequency-across-two-columns/m-p/978998#M11522</link>
      <description>&lt;P&gt;In my opinion CAS is not really the place for data prep and though if it was me, I'd use Compute to read the Excel files and prepare a table that's suitable for VA. It's then this table that I'd load into CAS for VA reporting.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can create such a process using SAS Studio flow and then schedule the flow.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You also need to look up/skill up how to define your CAS based reporting data so the VA report autoloads the data into CAS after server restart (which will wipe-out all CAS memory based tables).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Did you already try to adopt any of the proposed solutions to your environment? If not then that's what you eventually should be doing next so you can ask targeted follow-up questions if you get stuck.&lt;/P&gt;</description>
      <pubDate>Tue, 18 Nov 2025 08:39:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Newbie-data-processing-question-frequency-across-two-columns/m-p/978998#M11522</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-11-18T08:39:12Z</dc:date>
    </item>
    <item>
      <title>Re: Newbie data processing question - frequency across two columns?</title>
      <link>https://communities.sas.com/t5/SAS-Studio/Newbie-data-processing-question-frequency-across-two-columns/m-p/978884#M11515</link>
      <description>&lt;P&gt;Are your Have tables already loaded into CAS or are these just normal SAS files and data prep could also happen under Compute?&lt;BR /&gt;What volumes are you dealing with?&lt;/P&gt;
&lt;P&gt;Is your WANT a table or a report?&lt;BR /&gt;&lt;BR /&gt;For creating a table something like below could work. I can't test it but I believe if all your tables are in CAS then the whole process will execute within CAS.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data writer;
  infile datalines truncover dsd dlm='|';
  input writer:$40.;
  datalines;
Joe
Mac
Maggie
Sam
;

data lead_assistant_project;
  infile datalines truncover dsd dlm='|';
  input Lead_Writer:$40. Assistant_Writer:$40. Project:$40.;
  datalines;
Joe|Mac,Maggie|Earwax for Dummies
Joe||Clock Repair
Sam|Joe|Desk Fans: A Celebration
;

/* restructure your data into a form that's easier to work with */
data writer_role_project;
  length writer $40 role $10;
  set lead_assistant_project;
  keep writer role project;
  
  role='Lead';
  do i=0 to countc(Lead_Writer,',');
    writer=scan(Lead_Writer,i+1,',');
    if not missing(writer) then output;
  end;
 
  role='Assistant';
  do i=0 to countc(Assistant_Writer,',');
    writer=scan(Assistant_Writer,i+1,',');
    if not missing(writer) then output;
  end;
 
run;

proc fedsql;
/*   create table want as */
  select 
    coalesce(t1.writer,t2.writer) as writer
    ,sum(case when t1.project='' then 0 else 1 end) as Total_Projects
    ,sum(case when t1.role='Lead' then 1 else 0 end) as Lead
    ,sum(case when t1.role='Assistant' then 1 else 0 end) as Assistant
  from writer_role_project t1
  full join writer t2 
    on t1.writer=t2.writer
  group by coalesce(t1.writer,t2.writer)
  ;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 15 Nov 2025 00:48:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/Newbie-data-processing-question-frequency-across-two-columns/m-p/978884#M11515</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-11-15T00:48:52Z</dc:date>
    </item>
    <item>
      <title>Re: Subject: ERROR: File not in correct format for engine (X_CUSTOMISED_CODE.ECL_DATA_PART.DATA) in</title>
      <link>https://communities.sas.com/t5/Administration-and-Deployment/Subject-ERROR-File-not-in-correct-format-for-engine-X-CUSTOMISED/m-p/978851#M30447</link>
      <description>&lt;P&gt;Suggest you move your question under Solutions/Risk and Fraud/SAS Risk Management&lt;/P&gt;
&lt;P&gt;From what I understand and based on the error message, I believe you are on the right track. My first question would be: Has it ever worked before? What changed since?&lt;BR /&gt;&lt;BR /&gt;If you can amend the code and add %include ...../&lt;STRONG&gt;source2;&amp;nbsp;&lt;/STRONG&gt;and also try to run in debug mode and with options mprint&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I the Viya version is now called ACL and that IRM has been replaced so you must be running a solution version under SAS 9.4. CAS is Viya only.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's too long ago that I actually did hands-on IFRS9 work and it's certainly a specialty skill. Eventually ask SAS Tech Support directly because I don't expect too many people here in the forums to know the solution in the depth needed to support you.&lt;/P&gt;</description>
      <pubDate>Fri, 14 Nov 2025 07:47:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Administration-and-Deployment/Subject-ERROR-File-not-in-correct-format-for-engine-X-CUSTOMISED/m-p/978851#M30447</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2025-11-14T07:47:18Z</dc:date>
    </item>
  </channel>
</rss>

