>Area39さま
「これで動くのは理解できるのですが、ここの配列変数が400近くあり、命令が読み出されるたびに、
毎回変数を代入したくないと思い、お聞きしました」より指摘事項の整理です。
"ここの配列変数が400近くあり"という配列変数は、モジュール内で用意した配列変数aのことでしょうか?
"命令が読みだされるたび"という命令は、newfunc_initのことでしょうか。
nayaさまが記述されたスクリプトでは、最初に提示されたArea39さまのプログラムから
モジュール内にnewfunc_init命令が追加されており、newfunc関数と併せて2つあります。
以下、nayaさまのスクリプトの解説です。
/*モジュール--------------------------------------------------------*/
#module
/*モジュール内で共有される変数(配列変数)を初期化(準備)する自作命令*/
#deffunc newfunc_init
//配列変数が400近くあるというのが、aという配列変数のことと仮定
//400近くの配列変数というものがはここで代入します。
dim a, 4
a(0) = 4
a(1) = 5
a(2) = 6
a(3) = 7
return
//モジュール内の自作関数newfunc(何らかな処理結果を返す)
#defcfunc newfunc int p1, int p2
return p1+p2+a(p1)
#global
/*メインプログラム--------------------------------------------------*/
newfunc_init //モジュールの初期化
//(最初に1回だけ配列変数aを初期化して代入まで処理する)
*main //メイン
a = 2 //newfuncの引数aで使う変数2を代入
b = 10 //newfuncの引数bで使う変数に10を代入
dialog newfunc(a, b) //newfuncの結果をダイアログで表示
//初期化したモジュール内配列変数aは既に代入されているので
//再度モジュール内配列変数aに代入する処理(newfunc_init)はしていません。
end