Hi:
I agree with Scott that your use of terms like "local array" and "global array" show a misunderstanding of the fundamentals of SAS -- both about arrays and about macro variables.
A SAS DATA step program allows you to treat a group of variables as members of an array for ease of processing and reference. So these are all valid DATA step array references:
[pre]
array lovelucy $ fred ethel lucy ricky;
array regsl regsale1 regsale2 regsale3 regsale4;
[/pre]
In a DATA step program you could use a DATA step DO loop to iterate through an array in order to perform some kind of processing.
The SAS Macro facility does NOT have any such construct. Although the Macro facility allows you to build numbered macro variables and although you can use a %DO loop to generate code from those numbered macro variables, there is no such thing in the SAS Macro facility as a "local array" or a "global array". There is only the GLOBAL symbol table and the LOCAL symbol table (if you are using LOCAL macro variables within a Macro program).
Sadly, as with many other knowledge areas, at some point, you do have to "read the manual". If the Macro facility documentation is not attractive, then you will have to read user group papers or books about the SAS Macro facility in order to do what you want to do. It is indeed possible to write a SAS macro program which would iterate through a list of numbered macro variables (one for each region) , generate a PROC SORT and then generate whatever other report code needed to be generated. Some people call this ability a macro "array" because, it acts -LIKE- an array, but technically, the macro facility does not have any explicit %ARRAY statement -- it is unnecessary given the fact that you can use %DO to iterate over a group of numbered Macro variables.
Also confusing in your post is the reference to SCL?? Without knowing the context for using SCL (SAS/AF? BI Java application using Eclipse and SCL with Java beans?) it is hard to even start to talk about passing information from Base SAS to an SCL application, because SCL sometimes uses lists to hold information to be used for processing and that is an entirely separate topic.
I don't understand your parting shot where you said:
but my solutions will be good until the next release, it's the kind of flexibility that workers hate
The SAS Macro facility has been around since the early days of SAS and macro programs that I wrote back in Version 5 and Version 6 are still running in Version 9.2 -- the underlying SAS code generated from the Macro programs has changed a bit to take advantage of new features and options, but the Macro facility, itself continues to work like a champ in my opinion.
This paper is a very good introduction to the SAS Macro facility and fundamental concepts:
http://www2.sas.com/proceedings/sugi28/056-28.pdf
And here are some other useful papers:
http://www.lexjansen.com/pnwsug/2004/c_cc_storing_and_using_a_lis.pdf
http://www.wuss.org/proceedings08/08WUSS%20Proceedings/papers/cod/cod06.pdf
http://www2.sas.com/proceedings/sugi29/070-29.pdf
http://www2.sas.com/proceedings/sugi31/040-31.pdf ( in this paper, one user explains how he wrote his own %ARRAY macro program)
Finally, some info on SCL lists:
http://www2.sas.com/proceedings/sugi23/Appdevel/p10.pdf
http://support.sas.com/documentation/cdl/en/sclref/59578/HTML/default/a000147897.htm
http://support.sas.com/documentation/cdl/en/sclref/59578/HTML/default/a000147904.htm
cynthia