†REXXのどろぬま†

サブルーチンの外部化

作成開始日 2014.05.25
最終更新日 2014.05.25

単純に、サブルーチン名のREXXファイルを作り、組み込み関数同様に呼び出せば良い。 ただし、一つの外部ファイルに複数のサブルーチンを作成することはできない。いわゆるライブラリ化は不可能(だと思う;少なくとも私はやり方を知らない)。また、当然パスが通ってないと使えない。コマンドラインのときはカレントに置いてあれば良いが、アイコンから起動する時は作業ディレクトリの設定を忘れずに。

【注意】外部サブルーチンは、内部サブルーチンよりもかなり遅くなる。使用頻度の高いものは要再考。

変数は原則的に全てローカライズされる(特殊なものは除く)。引数の受け取りは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;


【REXXのどろぬま目次】 【ホーム】