DIM命令での配列の宣言はサブルーチンの中で行うのを止めて プログラムの冒頭で行った方が良いと思います。 Undefined variableは宣言をせずに配列変数を使用した場合に出ます。 これは推測ですが@MAP01のサブルーチンの中でDIM命令による 配列変数の宣言をしているため@MAP02のサブルーチンの中でも DIM命令による配列変数の宣言を行うとDuplicate variableになってしまい @MAP02のサブルーチンの中でDIM命令による配列変数の宣言を しないようにすると@MAP02を先に呼び出しした場合に undefine variableになってしまうという状況になっていませんか?