> FreeBASIC MetaDynamic
> https://makoto-watanabe.main.jp/freebasic/PgMetaDynamic.html#start
> このページの解説が近いような気がします。
なるほど、理解できました。
N-BASICとかN88-BASICでは、DIMで配列宣言をしないで配列を使うと、デフォルトで
配列の添え字は10まで使えたはず。OPTION BASEで添え字の0が使えるかどうかを決定
するという、あまり使われていない機能もありますが。
だけど、これを宣言しておけば、デフォルトで11以降の添え字が使えるということの
ようですね。
ただ、N88-BASICの場合、DIMで配列宣言をしない配列を使うと、例えば要素数が3個
しか必要ない配列でも10個分の要素のメモリが確保されてしまい、メモリが無駄に
なるから必ず配列宣言をしましょう、みたいな事が言われていました。当然、大きな
配列が必要なときは配列宣言は必須でしたし、結論としては、いついかなる場合も
配列宣言をしましょう、みたいな話になっていたように記憶しています。
そういう環境に慣れていたので、AWKやPerlのような、動的に配列がみょ〜んと確保
されるような処理系に始めて触れたときには違和感が強かったものです。もし私が
N88-BASICからいきなりこの$DYNAMIC構文のあるBASICに触れたら、そんな比ではない
ほどの違和感を感じまくったことでしょう。
ところで、この構文が使われているということからの推測すると、元々のコードは
QuickBASICで書かれていたということでしょうか。
そして、REMは必須であったと。
> なるほど、PEEK関数でメモリは読めるかもしれないので、チャレンジしてみます。
FreeBASICのサイトを検索したところ、この処理系だと、COMMAND(0)という関数で
実行ファイル名が取得できるようです。ただ、フルパスが取得できるかは、私には
よくわかりませんでした。
また、このページのQuickBASICとの違いの注記で、QBは引数をとらないとある。
ということは、TIME$で時刻の全体が取得できるように、COMMANDでコマンドライン
の引数全体が取得できるようになっているらしい。
ターボBASICがどうなっているかわかりませんが、QB同様であった場合、例えば空白
の入ったフォルダから起動したようなときに、実行ファイルのパスの取得は難しく
なるかもしれない。