Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Delphi/400 プログラム実行中のジョブ情報取得方法

今回はDelphi/400から、実行中のジョブ情報を取得する方法をご紹介いたします。


概要・設定方法

IBM i(AS/400)コマンドの RTVJOBA を使用すると、
サインオンユーザー名やジョブ名などを取得することができます。

戻り値のあるコマンドを実行する場合、
Delphi/400ではTCmd400コンポーネントを使用します。

例えばサインオンユーザー名を取得し、
Labelコンポーネントに表示するには次のようなコードになります。
設計画面ではCmd400コンポーネントに文字10桁のパラメータを1つ用意します。

  Cmd4001.CommandLine.Text := 'RTVJOBA USER(&P.1)';
  Cmd4001.Execute;
  Label1.Caption := Cmd4001.Value[0]; 

 

ユーザー名を取得するのでパラメータは「USER」としていますが、
ジョブ名であれば「JOB」、ジョブ番号であれば「NBR」となります。

使用できるパラメータや属性/桁数については、
エミュレータで RTVJOBA コマンドを入力してF4を押すと確認できます。

 


 

上記を発展させると、他のコマンドのJOBパラメータでよく使用する

JOB(ジョブ番号/ユーザー名/ジョブ名)

という書式のジョブ情報を、エミュレータのWRKACTJOBを使用しなくても
Delphi/400のジョブ内から直接取得することが可能です。

以下に手順を記載します。

 

①:
画面やデータモジュールにTCmd400コンポーネント(例ではCmd4001)を配置し、
「AS400」プロパティに接続に使用するTAS400コンポーネントを、
「Params」プロパティに以下のようにパラメータを設定します。

 

②:
Cmd4001の「CommandLine」プロパティに以下のようにコマンド文を指定します。
(オブジェクトインスペクタでの指定、ソースコードでの指定いずれでも構いません)

RTVJOBA JOB(&P.1) USER(&P.2) NBR(&P.3)

 

③:
ソースコードで IBM i に接続した後、
次のようにロジックを記述してコマンドを実行させれば、
画面上に取得したJOBパラメータの値を表示・確認することができます。

  // ジョブ情報取得
  Cmd4001.Execute;
  Edit1.Text := 'JOB(' + Trim(Cmd4001.Value[2]) +      // ジョブ番号(NBR)
                   '/' + Trim(Cmd4001.Value[1]) +      // ユーザー(USER)
                   '/' + Trim(Cmd4001.Value[0]) + ')'; // ジョブの名前(JOB)

 

(取得結果のイメージ)

デバッグ時のSTRSRVJOBコマンドや、スプール出力時のCPYSPLFコマンド等で
必要な「JOB」パラメータの値が、このロジックで取得可能です。

 

   
タイトルとURLをコピーしました