上記のソースを流せば分かるとおり、modmes1は真っ当に動いても、modmes2は真っ当に
#module #deffunc modmes1 str エイリアス ローカル変数=エイリアス mes strmid(ローカル変数,2,8) return #deffunc modmes2 str エイリアス mes strmid(エイリアス,2,8) return #global 文字列="ひゃっはぁーっ" modmes1 文字列 modmes2 文字列 stop
動きません。modmes1とmodmes2の違いはエイリアスをstrmidに直に入れているかいないかの
違いだけです。
この現象はstrmid関数ばかりで起きるのではありません。instr関数でも確認しています。
この両者は旧版(ver3未満)では疑似関数命令(命令の形を取りながらも、関数に近い挙動を
見せる命令。現在ではnoteget命令等の一部命令に見られるのみ)だったものです。
おそらく、旧版の命令の因数受取条件として、旧疑似関数命令には変更される因数(大体の
場合は第1因数)はエイリアスではならないという条件が付けられており、その条件がver3
以降にも引き継がれた為にこのような挙動を起こすのではないかと邪推しています。
正直、現在のstrmidやinstrはその性質上、直にエイリアスをぶち込みたい命令の一種です。
そしてぶち込んでみてエラーが起きられると、仕様の分からない初見組としては右往左往する
しかありません。
まして、エラーの内容が『Error23 変数名が指定されていません』なのです。これでは解決
し辛いと思います。次回の更新の際には、このエイリアス禁止仕様の説明をどこかに入れて
もらえないでしょうか。