>引数の型に「int型またはstr型」みたいな指定はできないのでしょうか。
・int は整数定数かint型変数から数値のみを受け取ります。
・str は文字列定数かstr型変数から文字列のみを受け取ります。
よって、「int型の定数・変数 または str型の定数・変数」を受け取る引数の型はありません。
しかし、
・var は変数を受け取ります。型は問われません。
ということを利用して、次のような記述が出来ます。
#module
#define global multarg(%1) tmp=%1: _multarg tmp
#deffunc _multarg var p1
mes p1
return
#global
multarg 100: multarg 1.23456: multarg "test"
n = 200: d = 1.7320508: s = "TEST"
multarg n: multarg d: multarg s
指定された引数の型によって処理を分けたい場合はvartype()関数を使って、引数の型を調べます。
これがやっている事というのは本来のmultarg命令( _multarg )が『引数は変数でなければならない』という約束事をユーザーに強要する部分を、
モジュールが『ユーザーが変数を用意する手間を省いてあげる』ためのインターフェース( multarg )を提供しているということです。
パラメータの省略も、#defineマクロの『デフォルト値』を利用することで行えます。
詳しくはプログラミングガイドの「#defineマクロについて 」をゆっくり読んで、
実際に書かれていることを動かしてみてください。
よく分からなかったら、分からなかったことを説明してくれれば、分かる範囲で教えます。