†REXXのどろぬま†
作成開始日 2014.05.25
最終更新日 2014.05.25
【注意】外部サブルーチンは、内部サブルーチンよりもかなり遅くなる。使用頻度の高いものは要再考。
変数は原則的に全てローカライズされる(特殊なものは除く)。引数の受け取りはPARSE ARGで、戻り値はRETURNで指定すればよい。なお、配列の受け渡しは不可能だが、キューで仲介する方法はある。
たとえば、外部ルーチン側でarray.1〜array.100という配列データを作成/処理した場合;
DO n=1 to 100 QUEUE array.n ENDとして、配列データをキューに入れる。 これを受け取るメインルーチン側では;
DO n=1 to 100 PARSE PULL array.n ENDとして取り出せば良い。キューはプログラム間(と言うよりシステム全体)で共有できる。
なお、プログラムの不正終了などでキューにデータが残った場合、自動的なクリアは行われないので、事前に次のような方法で初期化しておくと良い。
q=QUEUED(); DO n=1 TO q; PULL dmy; END;