「変数か文字列かの判別」というのはかなり厳しそうですが、たとえば
「引数に整数や実数を指定した場合は文字列に変換して処理を行う」とか、
「引数の型を判別して処理を分岐させる」ようなことは
マクロを噛ませることで可能なのではないでしょうか?
たとえば前者の例、
#module
//文字列の左右を入れ替えて返す。引数は文字列だけでなく整数や実数でも可。
#define global ctype swaptext(%1) _swaptext(str(%1))
#defcfunc _swaptext str _text
text=_text : l=strlen(text)
sdim res,l+1
repeat l
poke res,cnt,peek(text,l-cnt-1)
loop
return res
#global
mes swaptext(12345678) //整数
mes swaptext(M_PI) //実数
mes swaptext("abcdefg") //文字列
後者の例、
#module
#define global hoge(%1) _tmp_=%1 : _hoge _tmp_
#deffunc _hoge var v
mes v
switch vartype(v)
case 2
mes "これは文字列です"
swbreak
case 3
mes "これは実数です"
swbreak
case 4
mes "これは整数です"
swbreak
swend
return
#global
hoge 123
hoge 3.14
hoge "あいうえお"