配列の括弧指定
今日ソースレビューをしていて気がつきました。
sasの配列は
配列名{i}
という形で表現しますが、この括弧が()でもでもいい、ということは知られていると思います。
[https://documentation.sas.com/?docsetId=lestmtsref&docsetTarget=p08do6szetrxe2n136ush727sbuo.htm&docsetVersion=9.4&locale=en:title=参照>SAS ステートメントリファレンス]
でも、{}とって組み合わせられるんですって、奥さん。
なのでこれは正常に処理されます。
data _null_; array arr1[5} 8; do i=1 to dim(arr1); arr1{i]=i; arr1[i}=i; end; run;
レビュー中に、なんでこれでコンパイル通ってんだ!となりました。
ただ、()と{}[]は扱いが違うようで、()と他の組み合わせは構文エラーとなります。
array arr1{5) 8;
なら[か}を指定しろ、と
array arr1(5} 8;
なら)を指定しろ、と出ます。
いくつか組み合わせを試したんですが、配列宣言では、先頭の括弧が先に評価されるのに対し、
割当ステートメントでは後ろの括弧が先に評価されてました。面白い。
arr1(i]=i;
だと[か{を指定しろ、と
arr1{i)=i;
だと、(を指定しろ、と。
え?知ってた?