TSTRやLOCALSのおかげで使いどころが減ったSTRを有効に使おう、という話。
もし「STRをバリバリ活用しているぜ」ということだと、今回はあんまり役に立たないかもしれない。maker時代は文字列変数は貴重だったので……。
さて、STR.csvにはSTR変数の初期値を書き込める。STRNAME.csvでSTR.csvの番号に名前をつけられる。ということはSTR.csvに数値を書いておいて、STRNAMEにその値の名前を書けば、定数のように使えるのではないか……という発想。STRは文字列変数なのでTOINTしなきゃいけないのだけど。
LOCAL = TOINT(STR:ENUM名)
みたいな。
で、ここまで考えたんだけど、文字列を添え字に使うときってアルファベットだけだったりするとまずいのでは?
文字列リテラルの展開の仕様がどうなっているのか分からないが、おそらくアルファベットだけだと変数とバッティングするから引用符を省略できないような気がする。
LOCAL = TOINT(STR:"ENUM")
こういうふうに書けば大丈夫なのかな。
*追記*
()を省略した場合、アイテム名と変数名が同一になる場合があります。その場合は変数が優先されます。
"()を省略"は多分()じゃなくて""のことだと思うのだが、変数名と被るときは引用符をつける、とすればいいかもしれない。今度試す。
そもそも添字にリテラルを直接渡さなければ問題にならないかもしれない。
@NUM, ARGS
#FUNCTION
LOCAL = TOINT(STR:ARGS)
RETURNF LOCAL
ARGSは文字列型だから、中身がなんであれ間違いなく文字列で参照できるだろう。試してないので分からないけれど。
そういえばeraSQNにNUMという関数があったのだが、中身はSELECTCASE文だった。まさしくこういう処理をすればいいような気がする。STR.csv使ってないようだったし。