†REXXのどろぬま†
作成開始日 2016.09.16
最終更新日 2016.09.16
流石にこれでは不便なので、ディレクトリ構造を取得するスクリプトを作って、途中経過を表示させることにした。処理時間が同じでも、進捗状況が見えれば気が楽になる。ポイントは、ディレクトリの深さ(階層)は不定かつ未知であること。したがって、予め決まった深さのループで処理するわけにいかない。どうしても、再帰的なプログラミングが必要になる。
再帰的なアルゴリズムでは、変数のローカル化がきちんとできているか否かが重要なポイントになる。自分自身を呼び出したときに、変数領域がバッディングしてしまうと再帰処理が壊れる。まっとうな言語であれば全く気にすることはないが、簡易的なスクリプト言語であるREXXでそれが可能かどうか…が、一番の気掛かりだったのだが、結果的には上手く行っているようだ。
/* 再帰的ディレクトリ構造検索 */ Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' Call SysLoadFuncs CALL RecurDirs('*.*') EXIT RecurDirs: PROCEDURE; dpath=arg(1) rc=SysFileTree(dpath, dirs, 'DO') Do n=1 to dirs.0 SAY dirs.n CALL RecurDirs(dirs.n'\*.*') End RETURN 0;