> Since your CALL SYMPUT is executed within a macro,
> the macro variables created will be local.
That is not exactly right. There are a few "depends on" that affect the action. Consider the following example. You can get the exact action you desire with SYMPUTX when you specify the symbol table option.
CALL SYMPUTX(macro-variable, value <,symbol-table>);
Having said that I don't think GLOBAL macro variables are the best choice here. I would think about keeping the data in a SAS data set would be better. I would need to see how these variables are being used to make a recomendation.
[pre]
161 options nostimer;
162 %symdel a;
163
164 %macro test(arg);
165 data _null_;
166 call symput('A','What is my scope');
167 run;
168 %put _global_;
169 %put _local_;
170 %mend;
171
172 %test
173
174 %symdel a;
TEST ARG
TEST A What is my scope
WARNING: Attempt to delete macro variable A failed. Variable not found.
175 %macro test;
176 data _null_;
177 call symput('A','What is my scope');
178 run;
179 %put _global_;
180 %put _local_;
181 %mend;
182
183 %test
GLOBAL A What is my scope
184
185
186 %symdel a;
187 %global a;
188 %macro test(arg);
189 data _null_;
190 call symput('A','What is my scope');
191 run;
192 %put _global_;
193 %put _local_;
194 %mend;
195
196 %test();
GLOBAL A What is my scope
TEST ARG
[/pre]