以下のようにすれば一応はできます。
が、安全性やメンテナンス性はあまり(ほとんど?)ありません。
ですので、別の方法に切り替えた方が良いかと思われます。
少し扱い方が特殊ですが、個人的にはモジュール変数を使用する方法がおすすめです。
// 変数の情報の取得、書き換えを行うモジュール
// あまり安全な方法ではないかも
#module
#define SIZE_OF_PVAL 32 // 32Bit版ランタイムの場合は32、64Bit版ランタイムの場合は40(のはず)
// 変数の管理情報のポインタを取得
#defcfunc get_pval var var, \
local pval_var
mref pval_var, 0
return pval_var
// 変数の管理情報を書き換えてクローンを作成する
#deffunc clone_var var var, int pval, \
local pval_var, local val, local val_var
mref pval_var, 0
dupptr val, pval, SIZE_OF_PVAL, 2
dupptr val_var, pval_var, SIZE_OF_PVAL, 2
memcpy val, val_var, SIZE_OF_PVAL
return
#global
#module
#deffunc A var org
// 元の変数の情報を_aliasに入れておく
// こうすることによっていつでも元の変数を変更できる様になる
_alias = get_pval(org)
// 元の変数のクローンを作成しておく
// 元の変数を参照する際に必要となるため
dup alias, org
return
#deffunc B int p
// 拡張とかしてみる
t = alias // 一度バックアップを取ってから
dim alias, 4 // 変数を拡張して
alias = p, p*3, t, t*3 // 代入する
// オリジナルの変数に変更を反映させる
clone_var alias, _alias
return
#global
var = 10
A var
mes var
mes
B 20
mes var(0)
mes var(1)
mes var(2)
mes var(3)