コマンドの属性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 かんぴょう木綿さん