概要
■プロシージャー名:QSYS2.QCMDEXC
■カテゴリ:アプリケーションサービス
■サポート:IBM i 7.2以降
■参照URL(IBM i 7.5):https://www.ibm.com/docs/ja/i/7.5?topic=services-user-info-view
IBM i ユーザー・プロファイルの設定値やログイン失敗回数などのステータスを取得・表示します。
使用例
CALL QSYS2.QCMDEXC('ADDLIBLE PRODLIB2');
ADDLIBLEが実行するCLコマンド例です。
ACSのSQLスクリプト実行画面からQCMDEXC実行と、その結果の確認例
手順①
基本のキですが、ACSのSQLスクリプト実行からIBM i に接続すると、メッセージ欄にIBM i 側のジョブ名が表示されます。
上記の例だと、ジョブ名は 244530/QUSER/QZDASOINITですね。
(あえて)5250 WRKACTJOBで確認してみると、、
一番下のQZDASOINITがそれっぽいです、詳細を 5 で表示すると、同じジョブ番号だと分かりました。
このジョブのライブラリー・リストを 13 で確認すると、下記が表示されました。ライブラリーが7つリストされています。
手順② SQLスクリプト実行からADDLIBLEコマンドを実行してみる
上の方のCLコマンドサンプルを実行します。*LASTに追加してみます。下記のようにPOSITIONパラメーターを追加します。
CALL QSYS2.QCMDEXC('ADDLIBLE LIB(GOMALIB) POSITION(*LAST) ');
正常に実行された、とメッセージがでます。
手順③ 5250で再度ライブラリー・リストを調べてみる
SQLスクリプト実行画面のIBM i OS側ジョブ、244530/QUSER/QZDASOINIT のライブラリー・リストを上記①の手順で改めて確認すると下記になりました。
***最下部(*LAST)にライブラリー GOMALIB が追加されました。
おまけ:QZDASOINITのユーザーIDについて
SQLスクリプト実行や、WINDOWSほかからのODBCジョブ、JAVAからのJDBCジョブはすべてQZDASOINITサーバージョブが受け口になります。QZDASOINITジョブはサブシステムQUSRWRKが起動する際、サブシステムの事前開始ジョブ項目(Pre-Start job項目)を参照して(そこに登録されているので)、起動します。
※WRKSBSDコマンド → QUSRWRKのオプション10 事前開始ジョブ項目から確認できます。
この時、QZDASOINITジョブはすべてQUSER ユーザー・プロファイルで起動されます。
このままですと、実行権限が不足する、個々の接続ユーザーIDに応じたセキュリティ権限を参照できないなど問題が出ますので、今回の例ではACSでSQLスクリプト実行画面にログインした際のユーザー(例では GOMA)のユーザー・プロファイルの権限を引き継いで実行することになります。
それが、下記のWRKACTJOB画面で確認できます。
最上部のユーザー:QUSER : ジョブQZDASOINITが事前開始ジョブから開始された際のユーザー・プロファイル
現行ユーザー・プロファイル、ジョブ・ユーザー識別:GOMA : SQLスクリプト実行画面でサインオンしたユーザー・プロファイル
です。
したがって、ジョブ 244530/QUSER/QZDASOINIT はユーザー・プロファイル GOMA の権限を参照して実行される ことになります。