LoginSignup
1
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

IBM i Services Directory : QSYS2.QCMDEXCプロシージャー と IBM i 実行時ユーザーIDの確認法

Last updated at Posted at 2024-06-23

概要

■プロシージャー名:QSYS2.QCMDEXC
■カテゴリ:アプリケーションサービス
■サポート:IBM i 7.2以降
■参照URL(IBM i 7.5):https://www.ibm.com/docs/ja/i/7.5?topic=services-qcmdexc-procedure

IBM i CLコマンドを実行します。

使用例

CALL QSYS2.QCMDEXC('ADDLIBLE PRODLIB2');

ADDLIBLEが実行するCLコマンド例です。

ACSのSQLスクリプト実行画面からQCMDEXC実行と、その結果の確認例

手順①
基本のキですが、ACSのSQLスクリプト実行からIBM i に接続すると、メッセージ欄にIBM i 側のジョブ名が表示されます。

image.png

上記の例だと、ジョブ名は 244530/QUSER/QZDASOINITですね。
(あえて)5250 WRKACTJOBで確認してみると、、

image.png

一番下のQZDASOINITがそれっぽいです、詳細を 5 で表示すると、同じジョブ番号だと分かりました。

image.png

このジョブのライブラリー・リストを 13 で確認すると、下記が表示されました。ライブラリーが7つリストされています。

image.png

手順② SQLスクリプト実行からADDLIBLEコマンドを実行してみる

上の方のCLコマンドサンプルを実行します。*LASTに追加してみます。下記のようにPOSITIONパラメーターを追加します。

CALL QSYS2.QCMDEXC('ADDLIBLE LIB(GOMALIB) POSITION(*LAST) ');

image.png

正常に実行された、とメッセージがでます。

手順③ 5250で再度ライブラリー・リストを調べてみる

SQLスクリプト実行画面のIBM i OS側ジョブ、244530/QUSER/QZDASOINIT のライブラリー・リストを上記①の手順で改めて確認すると下記になりました。

image.png

***最下部(*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画面で確認できます。

image.png

最上部のユーザー:QUSER : ジョブQZDASOINITが事前開始ジョブから開始された際のユーザー・プロファイル
現行ユーザー・プロファイル、ジョブ・ユーザー識別:GOMA : SQLスクリプト実行画面でサインオンしたユーザー・プロファイル

です。
したがって、ジョブ 244530/QUSER/QZDASOINIT はユーザー・プロファイル GOMA の権限を参照して実行される ことになります。

1
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0