<?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>topic Re: Great PROG now useless after hitting 65534 limit in New SAS User</title>
    <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598812#M16362</link>
    <description>&lt;P&gt;Tom, thanks.&amp;nbsp; Indeed, the string will likely never exceed 300 characters, let alone 32K, so making minimal changes is attractive.&amp;nbsp; However, when I tried your code I got an error message when SAS tried to evaluate &amp;amp;i.&amp;nbsp; Note that my dataset of combinations is called testcomb2 and the variable is called combos2 rather than iso.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;when I run it, I get the following error:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data _null_;&amp;nbsp;&amp;nbsp; set testcomb2;&amp;nbsp;&amp;nbsp; where list_number = &amp;amp;i ;&amp;nbsp;&amp;nbsp; call symputx('changelist',combos2); run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; ! %US13_TARGET_ANALYSIS;&lt;/P&gt;&lt;P&gt;ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, a numeric constant,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a datetime constant, a missing value, INPUT, PUT.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;NOTE: Line generated by the invoked macro "TEST".&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data _null_;&amp;nbsp;&amp;nbsp; set testcomb2;&amp;nbsp;&amp;nbsp; where list_number = &amp;amp;i ;&amp;nbsp;&amp;nbsp; call symputx('changelist',combos2); run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 76&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; ! %US13_TARGET_ANALYSIS;&lt;/P&gt;&lt;P&gt;ERROR 76-322: Syntax error, statement will be ignored.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference I not resolved.&lt;/P&gt;&lt;P&gt;MPRINT(TEST):&amp;nbsp;&amp;nbsp; where list_number = &amp;amp;i ;&lt;/P&gt;&lt;P&gt;ERROR: Syntax error while parsing WHERE clause.&lt;/P&gt;&lt;P&gt;MPRINT(TEST):&amp;nbsp;&amp;nbsp; call symputx('changelist',combos2);&lt;/P&gt;&lt;P&gt;MPRINT(TEST):&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;</description>
    <pubDate>Wed, 13 Nov 2019 01:09:32 GMT</pubDate>
    <dc:creator>texasmfp</dc:creator>
    <dc:date>2019-11-13T01:09:32Z</dc:date>
    <item>
      <title>Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598292#M16278</link>
      <description>&lt;P&gt;&lt;STRONG&gt;I had a great prog running in SAS 9.3 for years that substituted a series of quoted strings in a changelist into another program, ran a regression analysis, appended the results to a datafile, and repeated that process for the next string.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The strings are various combinations of subsets of a main database.&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;In&amp;nbsp; a nutshell, the program tests which combinations of subsets give the best (or worst) results.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;It worked great with a small string length and limited number of strings.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I greatly expanded the number of strings (from 1,000 to millions) and quickly got this message:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ERROR: The text expression length (65536) exceeds maximum length (65534). The text expression has been truncated to 65534 characters.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What alternatives can I try to get around this limitation?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Thoughts would be appreciated.&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Nov 2019 01:05:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598292#M16278</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-11-13T01:05:09Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598324#M16279</link>
      <description>&lt;P&gt;Store your changelist in a dataset, and use any join method to work with subsets.&lt;/P&gt;
&lt;P&gt;Also note that the subsetting if you used will have worse performance than using a where condition.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 06:01:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598324#M16279</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-10-22T06:01:06Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598327#M16280</link>
      <description>&lt;P&gt;PS a GREAT program would be written in a way that scales until you simply run out of computing resources like disk space or RAM.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It is never a sustainable solution to store &lt;EM&gt;mass&lt;/EM&gt; data in macro variables. For this, SAS provides datasets.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 06:22:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598327#M16280</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-10-22T06:22:15Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598405#M16284</link>
      <description>&lt;P&gt;Assuming you construct a data set with a variable named Iso that holds the values you want to keep then that data step could be replaced with&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;proc sql;
   create table data as
   select b.*
   from datasetwithchangelistvalues as a
        left join
        data1 as b
        on a.iso = b.iso&lt;BR /&gt;   where not missing(b.iso)
   ;
run;&lt;/PRE&gt;
&lt;P&gt;And unless you have a terribly feeble computer won't puke on several million values of ISO&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 14:32:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598405#M16284</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2019-10-22T14:32:57Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598481#M16293</link>
      <description>&lt;P&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;Thanks ballardw .&amp;nbsp; And yes, ISO is a field in Data1 and I can certainly call in ISO in your "&lt;/STRONG&gt;&lt;STRONG&gt;datasetwithchangelistvalues".&amp;nbsp; B&lt;/STRONG&gt;&lt;STRONG&gt;ut, I am just using the ISO field as a selector to cull the data I want to run through the regression loop (ISO is just one of about 30 variables by a few thousand observations).&amp;nbsp; I don't understand - probably because I have a limited knowledge.&amp;nbsp; How does your suggested code result in the quoted changelist string created in the &lt;/STRONG&gt;&lt;FONT color="#3366FF"&gt;&lt;STRONG&gt;%macro&lt;EM&gt; test; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;&lt;EM&gt;which then gets inserted, one at a time, followed by a regression analysis, and then the regression analysis gets looped for the dataset created by culling the ISOs in the next quoted string value in changelist?&amp;nbsp; Or are you suggesting that the solution is to abandon the entire &lt;FONT color="#3366FF"&gt;%macro test&lt;/FONT&gt;; as well as the start of the &lt;FONT color="#3366FF"&gt;%MACRO TARGET_ANALYSIS;?&lt;/FONT&gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Nov 2019 01:05:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598481#M16293</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-11-13T01:05:44Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598493#M16295</link>
      <description>&lt;P&gt;Just do the subsetting differently.&lt;/P&gt;
&lt;P&gt;So change the macro&amp;nbsp;&lt;CODE class=" language-sas"&gt;TARGET_ANALYSIS&lt;/CODE&gt;&amp;nbsp;to NOT do this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA REGDATA;
  SET REGDATA1;
  IF ISO IN (%unquote(&amp;amp;val));
RUN;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And instead do something that is scalable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note that it is possible to create a macro (not a macro variable) that would emit a list of values from a dataset.&amp;nbsp; But it is probably gong to be easier to just fix the places where you need to do the subsetting to use the dataset directly instead.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 19:19:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598493#M16295</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-10-22T19:19:40Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598499#M16297</link>
      <description>Thanks Tom. I have no idea what you just said. Subsetting, scalable are meaningless terms to me. I am a novice.</description>
      <pubDate>Tue, 22 Oct 2019 19:27:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598499#M16297</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-10-22T19:27:31Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598516#M16300</link>
      <description>&lt;P&gt;Those are just English words and mean what they sound like.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You are currently trying to stuff a lot of information into a macro variable.&amp;nbsp; You have found out that macro variables only hold 64K bytes.&amp;nbsp; So your solution didn't scale. As the amount of data grew the program could not handle it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So change to using a DATASET to store the information.&amp;nbsp; Take your %LET statement&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%LET changelist 
='1','2','3','4','5'
|'1','2','3','4','6'
|'1','2','3','4','7'
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;and change it into a DATA step.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So if the variable ISO is 10 characters long then the data step might look like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data changelist ;
  length list_number 8 ISO $10 ;
  list_number +1 ;
  infile cards truncover ;
  do until (iso='&amp;nbsp;');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;input&amp;nbsp;iso&amp;nbsp;@;
   if iso ne ' ' then output;
  end;
cards;
1 2 3 4 5
1 2 3 4 5 6 7
1 2 3 4 
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then&amp;nbsp; change your method for selecting what data to use to be based on the DATASET instead of the macro variable.&lt;/P&gt;
&lt;P&gt;So the subset just of the first set of ISO values you could use:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;...
proc sql ;
  create table REGDATA as 
    select *
    from regdata1
    where iso in (select iso from changelist where list_number = 1)
  ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now if you want to select different subsets of the REGDATA you just need to change which value of LIST_NUMBER you select.&lt;/P&gt;
&lt;P&gt;You could use the macro variable I that you had before in place of the hardcoded 1 in the code just above.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note you might be able to eliminate the macro completely and just change your other steps use LIST_NUMBER as a BY variable in their processing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 20:21:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598516#M16300</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-10-22T20:21:04Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598535#M16301</link>
      <description>&lt;P&gt;Tom:&amp;nbsp; thanks. The 1st part (creating the dataset of changelist values) works like a charm.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code I used that works great:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, the 2nd part of your suggest code, creating a subset from the larger dataset, failed.&amp;nbsp; Zero were selected.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Perhaps I was not clear, there is no ISO value of 1 2 3 4 or&lt;/P&gt;&lt;P&gt;1 2 3 4 5 6 7.&amp;nbsp; Those are, in that case, four individual ISO values: an ISO of 1, of 2, of 3, and of 4.&amp;nbsp; So the database currently has 10-years of data for each ISO and, there are 38 ISOs (a total of 380 lines).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In reality, the ISO is a 3-character string representing countries within the larger database.&amp;nbsp; For example:&lt;/P&gt;&lt;P&gt;'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN','FIN','FRA','DEU','NZL','NOR','POL','PRT','RUS','SVK','ESP','SWE','CHE','USA','GBR'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So when the line&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;where iso in (select iso from changelist where list_number = 1) &lt;/PRE&gt;&lt;P&gt;executes, the program should populated it with&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In fact, I did it manually and the SQL code you suggested works great.&amp;nbsp; I am calling that a partial solution.The REGDATA just created runs through a regression analysis for that particular combination of countries.&amp;nbsp; I am calling that a partial solution.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, that is one loop.&amp;nbsp; 2nd loop uses a different combination of countries in the "where iso in" statement (i.e., the string in the 2nd observation in the changelist).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;etc, etc until the last combination in the changelist is run.&amp;nbsp; There are millions of combinations, so I can't do that manually.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The sticking point in the program now is to tell SAS to fill in that "where" statement automatically and run the regression with each subsequent combination.... millions of times without hitting that 65534 macro limit.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Nov 2019 01:06:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598535#M16301</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-11-13T01:06:53Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598562#M16309</link>
      <description>&lt;P&gt;An example using a data set you should have access to.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First create a data set of the variables whose values you want to keep (or exclude about the same difficulty).&lt;/P&gt;
&lt;P&gt;This data set will contain a value that I know does not actually exist in the data set I am going to extract from:&lt;/P&gt;
&lt;PRE&gt;data work.names;
    length name  $ 8;
    input name;
datalines;
Alice
Judy
Henry
Jacques
;
run;
&lt;/PRE&gt;
&lt;P&gt;Now use proc sql to find the values that have matching names.&lt;/P&gt;
&lt;PRE&gt;data work.names;
    length name  $ 8;
    input name;
datalines;
Alice
Judy
Henry
Jacques
;
run;
&lt;/PRE&gt;
&lt;P&gt;If you look at the data set work.want you will find that only records with matching values of Name are in the output.&lt;/P&gt;
&lt;P&gt;Which is exactly what your example no longer working data step:&lt;/P&gt;
&lt;PRE&gt;DATA DATA;
SET DATA1;
IF ISO IN (%unquote(&amp;amp;val));
RUN;
&lt;/PRE&gt;
&lt;P&gt;does. I admit that Proc Sql is likely to change the order of the records but since your current code doesn't work at all I think that might be a small trade off.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is one exactly one of the methods to get around the limitation of the macro "list" approach. The data set work.names could contain millions of records.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If there is something related to what goes on inside the macro TARGETANALYSIS then you have to share the code for that macro as saying an approach does not work with out details as to why is pretty pointless.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you need to call some code for every value then CALL Execute with the data set will do that as well.&lt;/P&gt;</description>
      <pubDate>Tue, 22 Oct 2019 23:16:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598562#M16309</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2019-10-22T23:16:51Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598571#M16313</link>
      <description>&lt;DIV class="lia-quilt-column lia-quilt-column-20 lia-quilt-column-right lia-quilt-column-main-right"&gt;&lt;DIV class="lia-quilt-column-alley lia-quilt-column-alley-right"&gt;&lt;DIV class="lia-message-body lia-component-body"&gt;&lt;DIV class="lia-message-body-content"&gt;&lt;P&gt;&lt;FONT color="#993366"&gt;"If you need to call some code for every value then CALL Execute with the data set will do that as well."&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ballardw,&amp;nbsp; Thanks.&amp;nbsp; I think that sums up the situation as of now.&amp;nbsp; I am interested in understanding the Call execute function.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I may have been unclear in originally explaining the goal and function of my original programming. I have a database with data for 35 countries.&amp;nbsp; Each country is identified by a 3-character field (ISO).&amp;nbsp; For example 'DEU' is Germany.&amp;nbsp; I want to run a regression analysis of all countries, but I also want to determine if I get a better result using only a subset of the 35.&amp;nbsp; Lets say I want to test all combinations of 28 countries from within the master dataset of 35.&amp;nbsp; That is 6.7 million possible combinations (order does not matter).&amp;nbsp; Today, I created a program that generates all 6.7 million combinations as a text string.&amp;nbsp; For example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN',&lt;/P&gt;&lt;P&gt;'FIN','FRA','DEU','NZL','NOR'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My program generating the combination strings is equivalent to your first datastep and, the text string above, would be one row in the&lt;/P&gt;&lt;PRE&gt;data work.names;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Using your example, I can manually take each of those rows in data.names and insert that string into the PROC SQL, or another one of the suggested datasteps, or my original program in place of the &lt;FONT color="#339966"&gt;(%unquote(&amp;amp;val)&lt;/FONT&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Doing so will create a subset of data, that runs through the regression analysis.&amp;nbsp; The results are captured in an appending database.&amp;nbsp; That is one loop.&amp;nbsp; I am good on programming all of those steps. &amp;nbsp; However, I can't manually enter the string of combinations 6.7 million times and, my old macro-based change list capped out after just a few hundred lines of those long character string combinations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The only thing going on in the TARGET_ANALYSIS is 1) creating the subset, 2) regression analysis, 3) creating a database of results, which includes the combination that generated each result for easy identification.&amp;nbsp; In this last step, the %unquote(&amp;amp;val) is invoked again, so that it gets recorded along with the result.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Call Execute is interesting and it may be exactly what I need.&amp;nbsp; Can you tell me more about how I could use call execute to generate the character string values for&amp;nbsp; %unquote(&amp;amp;val) one at a time (followed by the regression analysis) and looping back for each of the 6.7 million rows in the list of combinations?&amp;nbsp; Thanks&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 23 Oct 2019 01:28:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598571#M16313</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-10-23T01:28:00Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598616#M16322</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/296215"&gt;@texasmfp&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;Thanks Tom. I have no idea what you just said. Subsetting, scalable are meaningless terms to me. I am a novice.&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Subsetting: taking a part out of a greater amount of data, which may be variables within an observation, or a dataset. In SAS parlance, "subsetting" is often used in "subsetting if", which is this construct:&lt;/P&gt;
&lt;PRE&gt;if &amp;lt;condition&amp;gt;;&lt;/PRE&gt;
&lt;P&gt;an "if" statement without a "then". It means that if the condition is not met, the rest of the data step iteration (including any output) is skipped. This is used similar to a where condition, but can use variables created in the data step.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Scalable: means that a process will work for any conceivable amount of data, with no consequences except more resource usage and longer run times. In your case, the process did not scale, because you used a very limited tool (64K is really small nowadays) along the way.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Oct 2019 06:14:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598616#M16322</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-10-23T06:14:13Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598690#M16343</link>
      <description>&lt;P&gt;Instead of making each observation have one value of ISO you have made each observation have a LIST of ISO values.&lt;/P&gt;
&lt;P&gt;So you have changed your limit from 64K to the full list of lists to 32K for any single list.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you will never have a list of ISO values that is longer than 32K then your method might work with less modifications to your original program.&amp;nbsp; Instead of using %SCAN() to pull one list from the larger list of list use CALL SYMPUTX() to push one observation from your dataset.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
  set changelist ;
  where list_number = &amp;amp;i ;
  call symputx('changelist',iso);
run;  &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then you can continue to use&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;if iso in (&amp;amp;changelist);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Or, probably more correctly:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;where iso in (&amp;amp;changelist);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Otherwise change your data step to read each ISO value, like the code I posted.&amp;nbsp; Just add the DSD option to your INFILE statement.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data changelist ;
  length list_number 8 ISO $280 ;
  list_number +1 ;
  infile cards dsd truncover ;
  do until (iso=' ');
    input iso @;
   if iso ne ' ' then output;
  end;
cards;
'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN','FIN','FRA','DEU','NZL','NOR','POL','PRT','RUS','SVK','SVN','ESP','SWE','CHE','USA','GBR'|
'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN','FIN','FRA','DEU','NZL','NOR','POL','PRT','RUS','SVK','SVN','ESP','SWE','CHE','USA'|
'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN','FIN','FRA','DEU','NZL','NOR','POL','PRT','RUS','SVK','SVN','ESP','SWE','CHE','GBR'|
'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN','FIN','FRA','DEU','NZL','NOR','POL','PRT','RUS','SVK','SVN','ESP','SWE','USA','GBR'|
'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN','FIN','FRA','DEU','NZL','NOR','POL','PRT','RUS','SVK','SVN','ESP','CHE','USA','GBR'|
'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN','FIN','FRA','DEU','NZL','NOR','POL','PRT','RUS','SVK','SVN','SWE','CHE','USA','GBR'|
'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN','FIN','FRA','DEU','NZL','NOR','POL','PRT','RUS','SVK','ESP','SWE','CHE','USA','GBR'|
;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 23 Oct 2019 12:56:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598690#M16343</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-10-23T12:56:02Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598769#M16357</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/296215"&gt;@texasmfp&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;DIV class="lia-quilt-column lia-quilt-column-20 lia-quilt-column-right lia-quilt-column-main-right"&gt;
&lt;DIV class="lia-quilt-column-alley lia-quilt-column-alley-right"&gt;
&lt;DIV class="lia-message-body lia-component-body"&gt;
&lt;DIV class="lia-message-body-content"&gt;
&lt;P&gt;&lt;FONT color="#993366"&gt;"If you need to call some code for every value then CALL Execute with the data set will do that as well."&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ballardw,&amp;nbsp; Thanks.&amp;nbsp; I think that sums up the situation as of now.&amp;nbsp; I am interested in understanding the Call execute function.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I may have been unclear in originally explaining the goal and function of my original programming. I have a database with data for 35 countries.&amp;nbsp; Each country is identified by a 3-character field (ISO).&amp;nbsp; For example 'DEU' is Germany.&amp;nbsp; I want to run a regression analysis of all countries, but I also want to determine if I get a better result using only a subset of the 35.&amp;nbsp; Lets say I want to test all combinations of 28 countries from within the master dataset of 35.&amp;nbsp; That is 6.7 million possible combinations (order does not matter).&amp;nbsp; Today, I created a program that generates all 6.7 million combinations as a text string.&amp;nbsp; For example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;'IND','KOR','TUR','AUS','AUT','BRA','CAN','CHL','CHN','CZE','DNK','EST','FIN','FRA','DEU','GRC','HUN','ISL','IDN','IRL','ISR','ITA','JPN',&lt;/P&gt;
&lt;P&gt;'FIN','FRA','DEU','NZL','NOR'&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My program generating the combination strings is equivalent to your first datastep and, the text string above, would be one row in the&lt;/P&gt;
&lt;PRE&gt;data work.names;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Using your example, I can manually take each of those rows in data.names and insert that string into the PROC SQL, or another one of the suggested datasteps, or my original program in place of the &lt;FONT color="#339966"&gt;(%unquote(&amp;amp;val)&lt;/FONT&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Doing so will create a subset of data, that runs through the regression analysis.&amp;nbsp; The results are captured in an appending database.&amp;nbsp; That is one loop.&amp;nbsp; I am good on programming all of those steps. &amp;nbsp; However, I can't manually enter the string of combinations 6.7 million times and, my old macro-based change list capped out after just a few hundred lines of those long character string combinations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The only thing going on in the TARGET_ANALYSIS is 1) creating the subset, 2) regression analysis, 3) creating a database of results, which includes the combination that generated each result for easy identification.&amp;nbsp; In this last step, the %unquote(&amp;amp;val) is invoked again, so that it gets recorded along with the result.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Call Execute is interesting and it may be exactly what I need.&amp;nbsp; Can you tell me more about how I could use call execute to generate the character string values for&amp;nbsp; %unquote(&amp;amp;val) one at a time (followed by the regression analysis) and looping back for each of the 6.7 million rows in the list of combinations?&amp;nbsp; Thanks&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Since you say you have code to generate the combinations then show us that.&lt;/P&gt;
&lt;P&gt;And we would NOT be creating any macro variable but an actual Where (or IF though where usually is faster) &amp;nbsp;statement like&lt;/P&gt;
&lt;PRE&gt;if Iso in ('IND' 'KOR' 'TUR' 'AUS' 'AUT' 'BRA' );&lt;/PRE&gt;
&lt;P&gt;Here is an example to creates ONE such statement with a data set you should have that selects 3 names from SASHELP.CLASS and prints on those records.&lt;/P&gt;
&lt;PRE&gt;/* these two steps genarate a data set with all the values of the 
   name variable as a single record to demonstrate
*/
Proc sort data=sashelp.class (obs=3) out=work.class;
   by name;
run;

proc transpose data=work.class out=work.trans (drop=_name_)
   prefix=Name
   ;
   var name ;
run;
/* an example of building a where statement for a proc call*/
data junk;
   set work.trans;
   array n Name: ;
   /* string variable to hold the values
   the name variable is 8 characters so need to add 2 for quotes and a space to separate
   3 values (maximum in this case) so 3*(8+2+1) = 33*/
   length nstr $33;
   do _i_=1 to dim(n);
      nstr= catx(' ',nstr,quote(strip(n[_i_])));
   end;
   call execute ("Title 'Names to use are "||nstr||"';");

   call execute ("Proc print data=sashelp.class noobs; where name in (");
   call execute (nstr);
   call execute ("); run;title;");
run;
   &lt;/PRE&gt;
&lt;P&gt;Depending on exactly how you go about creating your combinations it may be easy or not to modify the above example.&lt;/P&gt;
&lt;P&gt;Note two different ways of using the list with concatenating into a string on the fly in the Title statement or referencing alone in the body. The later leaves the where statement open from the previous call execute line and then closes afterward. The Log shows the generated code.&lt;/P&gt;
&lt;P&gt;Or instead of call execute you can use PUT statements to write to a file and %include that file.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Oct 2019 16:27:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598769#M16357</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2019-10-23T16:27:34Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598812#M16362</link>
      <description>&lt;P&gt;Tom, thanks.&amp;nbsp; Indeed, the string will likely never exceed 300 characters, let alone 32K, so making minimal changes is attractive.&amp;nbsp; However, when I tried your code I got an error message when SAS tried to evaluate &amp;amp;i.&amp;nbsp; Note that my dataset of combinations is called testcomb2 and the variable is called combos2 rather than iso.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;when I run it, I get the following error:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data _null_;&amp;nbsp;&amp;nbsp; set testcomb2;&amp;nbsp;&amp;nbsp; where list_number = &amp;amp;i ;&amp;nbsp;&amp;nbsp; call symputx('changelist',combos2); run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; ! %US13_TARGET_ANALYSIS;&lt;/P&gt;&lt;P&gt;ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, a numeric constant,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a datetime constant, a missing value, INPUT, PUT.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;NOTE: Line generated by the invoked macro "TEST".&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data _null_;&amp;nbsp;&amp;nbsp; set testcomb2;&amp;nbsp;&amp;nbsp; where list_number = &amp;amp;i ;&amp;nbsp;&amp;nbsp; call symputx('changelist',combos2); run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 76&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; ! %US13_TARGET_ANALYSIS;&lt;/P&gt;&lt;P&gt;ERROR 76-322: Syntax error, statement will be ignored.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference I not resolved.&lt;/P&gt;&lt;P&gt;MPRINT(TEST):&amp;nbsp;&amp;nbsp; where list_number = &amp;amp;i ;&lt;/P&gt;&lt;P&gt;ERROR: Syntax error while parsing WHERE clause.&lt;/P&gt;&lt;P&gt;MPRINT(TEST):&amp;nbsp;&amp;nbsp; call symputx('changelist',combos2);&lt;/P&gt;&lt;P&gt;MPRINT(TEST):&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Nov 2019 01:09:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598812#M16362</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-11-13T01:09:32Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598813#M16363</link>
      <description>In your previous code the %SCAN() function call was nested inside a %DO I= macro loop.  The code you just posted is missing that loop.&lt;BR /&gt;</description>
      <pubDate>Wed, 23 Oct 2019 19:47:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598813#M16363</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-10-23T19:47:19Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598818#M16364</link>
      <description>&lt;P&gt;almost there, it looks like the counter step is not functioning.&amp;nbsp; Note that I dropped the "|" stop delimiter from the character string, since we moved to a dataset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I get this error message:&lt;/P&gt;&lt;P&gt;13341&amp;nbsp; %test&lt;/P&gt;&lt;P&gt;MLOGIC(TEST):&amp;nbsp; Beginning execution.&lt;/P&gt;&lt;P&gt;MLOGIC(TEST):&amp;nbsp; %LET (variable name is N)&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference CHANGELIST not resolved.&lt;/P&gt;&lt;P&gt;WARNING: Apparent symbolic reference CHANGELIST not resolved.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable N resolves to 0&lt;/P&gt;&lt;P&gt;MLOGIC(TEST):&amp;nbsp; %DO loop beginning; index variable I; start value is 1; stop value is 0; by value is 1.&amp;nbsp; Loop will not&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; be executed.&lt;/P&gt;&lt;P&gt;MPRINT(TEST):&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;MLOGIC(TEST):&amp;nbsp; Ending execution.&lt;/P&gt;</description>
      <pubDate>Wed, 13 Nov 2019 01:07:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598818#M16364</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-11-13T01:07:48Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598819#M16365</link>
      <description>&lt;P&gt;So before you where counting the number of lists in your list of lists.&lt;/P&gt;
&lt;P&gt;Now you need to count the number of observations in your dataset of lists.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
 select count(*) into :n
  from testcomb2
&amp;nbsp;;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 23 Oct 2019 20:03:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598819#M16365</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-10-23T20:03:50Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598829#M16366</link>
      <description>&lt;P&gt;YAHTZEE!!!!&amp;nbsp; Much thanks Tom.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Oct 2019 20:30:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598829#M16366</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-10-23T20:30:44Z</dc:date>
    </item>
    <item>
      <title>Re: Great PROG now useless after hitting 65534 limit</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598851#M16368</link>
      <description>&lt;P&gt;Just ran 6546 combinations in 41 minutes (need a faster computer!).&amp;nbsp; I learned a lot from this discussion.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks to all.&lt;/P&gt;</description>
      <pubDate>Wed, 23 Oct 2019 22:11:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Great-PROG-now-useless-after-hitting-65534-limit/m-p/598851#M16368</guid>
      <dc:creator>texasmfp</dc:creator>
      <dc:date>2019-10-23T22:11:49Z</dc:date>
    </item>
  </channel>
</rss>

