サポートチーム便り2013.02.20
コマンド毎の妥当性検査プログラムを一覧で確認するための方法
現 象
OS/400上で、あるコマンドを実行すると、権限が無い旨のエラーメッセージを表示してサインオフしてしまいました。OS/400側でのコマンドの権限設定ではなく、コマンドに組込まれた妥当性検査プログラムでユーザープログラムを呼出して、独自の検査をしているようです。
どうやらそのような設定がされているコマンドは複数あるようなのですが、かなり昔に組み込まれているようで、一体どのコマンドに設定してあるのか社内で記録が見つかりませんでした。
DSPCMDやWRKCMDを使うと、一つずつしか確認できず手間です。全コマンドの妥当性検査プログラムを一覧で確認するために、何か便利な方法はありませんでしょうか。
解決方法
IBMから提供されているコマンドではそのような機能は残念ながらございません。簡単なプログラムを作成すると可能です。
DSPCMDの出力パラメータには*OUTFILEがございませんので少し長くなりますが、概要のロジックは以下のとおりです。
- DSPOBJDでコマンドを抜粋し、OUTFILEを作成します。
- そのOUTFILEを読み込み、DSPCMDを*PRINTで出力します。
- 出力されたDSPCMDの結果をCPYSPLFで物理ファイルにします。
- 物理ファイル化されたDSPCMDの情報から必要な情報を抜き出し、結果の物理ファイルを作成します。
- 結果の物理ファイルをQUERYで表示します。
ポイントとなるのはDSPCMDを*PRINTで作成したスプールファイルを消すことと、各所で作る 物理ファイルをQTEMPに作成し、処理が終わった後に不要なファイルを残さないことです。
※コマンドとしてCLプログラムを登録しておくことも可能です。
また、パラメータを使用して調べたいライブラリーやコマンドをプログラムに渡してあげると汎用性が高くなります。