Migaro. 技術Tips

                       

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


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

今回のSmartPad4i Tipsでは、CLプログラムやRPG(ILE RPG)/COBOLプログラム実行中のジョブ情報取得方法をご紹介いたします。
ジョブを実行中のユーザープロファイル情報やジョブ番号をSmartPad4iプログラム側で取得することにより、例えば、データの登録、変更、削除を行う際に更新者情報を書き込むことなどに使用できます。
また、接続元のユーザーによって処理を分岐するようなアプリを作成することもできます。

ジョブ情報を取得する方法

Tipsでは、IBMi側のプログラムでジョブ情報を取得する方法を利用している言語ごとにご紹介いたします。ジョブを実行しているユーザープロファイル名とジョブ番号を取得する例とします。

RPGプログラムでジョブ情報を取得する方法

RPGプログラムやILE PRGプログラムでは、プログラム状況データ構造を取得してジョブの情報を取得できます。

プログラム状況データ構造(Program Status Data Structure)はプログラム実行時の情報が格納されている構造体です。
SmartPad4iのRPGⅢプログラムでは、メイン・ソース・セクションに定義します。

RPGⅢでの記述

I(プログラム状況データ構造) IINFDSP SDS I プログラム名
I 1 10 PGM
I* ジョブ名
I 244 253 JOB
I* ユーザー名
I 254 263 USER
I* ジョブ番号
I 264 269 JOBNBR

USERフィールドにプログラムを実行しているユーザープロファイルが格納されます。
ジョブ番号JOBNBRフィールドに格納されます。
また、プログラム状況データ構造からは、他にも、
プログラム名やジョブ名など様々な情報も取得できます。

ILE RPGでの記述

ILERPGでは、ジョブ実行時のユーザープロファイルとジョブの現行ユーザープロファイルを取得することができます。

ジョブ実行時のユーザープロファイルはRPGⅢと同じく254~263桁目に格納されています。
ILERPGでは、さらに拡張として現行のユーザープロファイルを取得することができます。
358~367桁目に格納されています。

D                SDS                                    
D  SPLIBC                81     90                      
 *                                                      
 * DATA STRUCTURES                                      
 * <YOURCODE>                                           
 * YOUR D SPECIFICATIONS (2)                            
D  USER                 254    263                      
D  JOBNBR               264    269  0                   
D  USER2                358    367                      
 * </YOURCODE>                                          

COBOLプログラムでジョブ情報を取得する方法

COBOLプログラムではプログラム状況データ構造を使用できないため、CLプログラムを利用してジョブ情報を取得する必要があります。
CLプログラム中ではRTVJOBAコマンドでジョブの情報を取得できます。

PGM        PARM(&USER &JOBNBR)                  
DCL        VAR(&USER) TYPE(*CHAR) LEN(10)       
DCL        VAR(&JOBNBR) TYPE(*CHAR) LEN(6)      
RTVJOBA    USER(&USER) NBR(&JOBNBR)             
ENDPGM