メニューボタン
サポートチーム便り2020.05.27

コマンドの属性PRXについて

Question

IBM i (AS/400)に存在するコマンドを確認するために、オブジェクト・タイプ「*CMD」のものを一覧表示して確認していました。その中のいくつかのコマンドの属性が「PRX」とつくものがありました。

この属性は、どういった意味のものになるのでしょうか。

Answer

属性PRXは、プロキシーコマンドであることを示すもので、実際には別のコマンドを呼び出しているものです。

例えば、コマンド「WRKQRY」を例にしてみます。

WRKOBJ OBJ(*ALL/WRKQRY) OBJTYPE(*CMD)

スクリーンショット

いくつかコマンドが表示されるかと思いますが、その中に、属性PRXのコマンドがあるかと思います。

このコマンドを、DSPCMDで見てみましょう。

DSPCMD CMD(QSYS/WRKQRY)

スクリーンショット

ターゲットコマンドは「QQRYLIB/WRKQRY」であることが分かります。

つまり、属性PRXのコマンドは実体ではなく、実際には別のコマンドを呼び出しているというものになります。

比較の為、実際のコマンドも見てみましょう。

DSPCMD CMD(QQRYLIB/WRKQRY)

スクリーンショット

実体のほうは、呼び出されるプログラム等の情報が見えてくるかと思います。

このプロキシーコマンドは、コマンド「CRTPRXCMD」で作成することができます。

スクリーンショット

時々、OSのコマンドをコピーして使用するケースがありますが、その場合、OSのバージョンアップやPTFの適用などによってコマンドの仕様が変更になった場合、必須パラメータの数や桁数などの違いによりコマンド実行時にエラーになることがあります。

プロキシーコマンドであれば、実コマンドではありませんので、OSのバージョンアップやPTFの適用での影響を受けることはありません。

使用するにあたり注意点としては、コマンド属性やパラメータのデフォルト値を変更したい場合です。

プロキシーコマンドを指定して変更した場合、実際には実コマンドが変更されますので、例えば、QSYSのコマンドは変更せずに、別ライブラリーに作成したコマンドを変更したい場合は、プロキシーコマンドではなく、コマンドをコピーして対応することになります。

ユーザーライブラリーにOSコマンドを設置される際には、コマンドのコピーが良いのか、プロキシーコマンドが良いのかをよく検討いただければと思います。

by かんぴょう木綿さん

あわせて読みたい記事

PAGE TOP