#module
// Pval対象変数の決定
#deffunc pvalsel var v, local hspctx, local adr
mref hspctx, 68
dupptr adr, hspctx.207, 4
dupptr pval, adr, 48
return
// 型の取得
#defcfunc getvartype local type
type = "extra", "str", "double", "int", "module"
repeat 4, 2
// vartype と同じ
if (pval & 0xFFFF) = cnt {
type = type(cnt - 1)
}
loop
return type
// サイズの取得
#defcfunc getvarsize
return pval.6
// 次元数の取得
#defcfunc getdimentions local i
repeat 4, 2
// length, length2, length3, length4 と同じ
if pval.cnt : i++
loop
return i
// 指定次元のサイズ取得
#defcfunc getdiminfo int dnum
return pval(dnum + 2)
#global
sdim s, 12, 6, 4
pos 10, 10 : mes "★変数s(12, 6, 4)の情報"
// 取得変数を指定
pvalsel s
// 型の取得
pos 20, 50 : mes "型:"
pos 100, 50 : mes getvartype()
// 合計サイズ
pos 20, 80 : mes "サイズ:"
pos 100, 80 : mes getvarsize()
// 総次元
pos 20, 110 : mes "次元数:"
pos 100, 110 : mes getdimentions()
// 各次元サイズ(4次元までチェック)
pos 20, 140 : mes "各次元:"
repeat 4
tmp = str(getdiminfo(cnt))
if cnt + 1 < 4 : tmp += ","
pos cnt * 30 + 100, 140 : mes tmp
loop
|