以下のようにすれば一応はできます。
が、安全性やメンテナンス性はあまり(ほとんど?)ありません。
ですので、別の方法に切り替えた方が良いかと思われます。
少し扱い方が特殊ですが、個人的にはモジュール変数を使用する方法がおすすめです。
// 変数の情報の取得、書き換えを行うモジュール
// あまり安全な方法ではないかも
#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)