HSP3ではモジュールに関連する変数は主に2種類あります。
1つは従来から存在していたモジュール内のグローバル(?)変数です。
これはモジュール毎に存在する変数でこの変数の正確な記述は
変数名@モジュール名(添字)
となります。
呼び出し元と同じモジュール内の場合は「@モジュール名」は省略できます。
また、配列の1番目(0)の場合は添字も省略できます。
メインモジュール空間は空(名前なし)なので
変数名@(添字)
が正確な記述です。
メインモジュール内で
a = 1
とした場合は
a@(0)
という意味です。
モジュール空間名がmodの場合に
a = 1
とあれば、
a@mod(0)
とします。
モジュール(空間)名を省略した場合は省略したモジュール毎に上から自動で「m」+0からの
連番数字が割り当てられます。
#module
#deffunc func
a = 1
return
#global
func
mes a@m0(0)
stop
もう1つはHSP3から実装されたモジュール変数(struct型)です。
こちらはC++などのクラスに近い機能を持っていて複数の変数をまとめて管理できます。
ただし、構造体とは内部的な仕様が異なり、そのままファイルなどに保存することは
できません。
(保存して再度読み込むとデータは破壊されます)
こちらは、#modfuncで定義した命令内でしかモジュール変数にアクセスできません。
他にもローカル変数などの関連するものがありますが、これらは一時的に保持されるだけで
命令や関数から抜けるとメモリから破棄されてしまうので外部からアクセスすることも
内容を保持することもできません。
(戻り値などとして外部に返した場合は別)