Hi All,
I wanted to define an array with dynamic Dimension according the real data. I create a macro variable &MAXCYC, and I checked, it had 25 in my program. Now I want to define an array of &MAXCYC dimension with name as CYCLE_1-CYCLE_&MAXCYC. I used the following format, but I got error message:
ARRAY CYC_N{&MAXCYC} CYCLE_1-CYCLE_&MAXCYC;
MESSAGE:
NOTE: Line generated by the macro variable "MAXCYC".
1 CYCLE 5
-
22
200
ERROR: Missing numeric suffix on a numbered variable list (CYCLE1-CYCLE).
ERROR: Too few variables defined for the dimension(s) specified for the array CYC_N.
ERROR 22-322: Syntax error, expecting one of the following: a name, (, ;, _ALL_, _CHARACTER_, _CHAR_, _NUMERIC_.
ERROR 200-322: The symbol is not recognized and will be ignored.
How do I solve this issue?
Thanks,
Abdu.
Left-justify the macro variable when you create it - perhaps you used something like -
CALL SYMPUT('MAXCYC', PUT(n, 8.));
Use this instead:
CALL SYMPUT('MAXCYC', LEFT(PUT(n, 8.)));
Alternatively, left-justify when you invoke it:
ARRAY CYC_N{&MAXCYC} CYCLE_1-CYCLE_%LEFT(&MAXCYC);
Left-justify the macro variable when you create it - perhaps you used something like -
CALL SYMPUT('MAXCYC', PUT(n, 8.));
Use this instead:
CALL SYMPUT('MAXCYC', LEFT(PUT(n, 8.)));
Alternatively, left-justify when you invoke it:
ARRAY CYC_N{&MAXCYC} CYCLE_1-CYCLE_%LEFT(&MAXCYC);
Call symputX instead of call symput
or trim the variable in your SQL step:
proc sql;
select trim(count(*)) into :max_count
from blah;
quit;
You can also consider the wildcard operators if you only have the variables in cycle_1 - cycle_5 starting with cycle_ in the dataset. If you have other variables such as cycle_max then this won't work.
array cyc_n(*) cycle_:;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.