> Is it just an undocumented alternative to _character_
I thought _CHAR_was documented but cannot find documentation in relation to SAS Variable List used in data/proc steps.
It would appear to me that the "data step team" at SAS thinks _CHAR_ is "something".
Perhaps _CHARACTER_ is allowed to provide some backward compatibility from days of old.
Further fiddling with _CHARACTER_ produced interesting context sensitive results.
2614 options stimer=0 fullstimer=0 missing=.;
2615 data test(keep=_character_);
2616 if 0 then set sashelp.class;
2617 *_char_ = 1233;
2618 _character_ = '9';
2619 cm = cmiss(of _character_);
2620 put _character_;
2621 put (_character_)(=);
2622 put _character_=;
2623 *_numeric_ = '0';
2624 array c
We don't seem to have a solid explanation, so I guess it's time to put this in front of Tech Support.
The point is that _CHARACTER_ is *not* reserved, at least not in the way _ALL_ is.
Also notice that enforcement is more or less limited to the DATA step. Here is a PROC step which is happy to permit use of variable names which are not allowed (or at least discouraged) in the DATA step.
proc summary data=sashelp.class(obs=3) nway ;
class sex ;
output out=badnames(rename = (_freq_ = _n_ _type_=_error_) )
min(age) = _numeric_
max(age) = _character_
Of course referencing these names will be a problem.
Another slightly interesting bit of evidence. When this code
proc print ;
var _numeric_ _character_ _char_ _all_ _notmetoo_ ;
is placed in the enhanced editor, the first four specs in the VAR statement are recognized and thus colored blue rather than black.