RPG

209. API: QSYCUSRS ユーザー特殊権限の検査

特殊権限を持っている特別なユーザーにだけ実行を許可したいジョブを
構成するには、ユーザーに与えられている特殊権限を検査する必要がある。
ここでは API: QSYCUSRS を使ってユーザーの特殊権限を検査する方法を
紹介する。

ユーザー特殊権限の検査 ( QSYCUSRS )

パラメータ

必須パラメータ:

1.権限標識出力Char(1)
2.ユーザー・プロフィール名入力Char(10)
3.特殊権限入力Char(*)
4.権限の数入力Binary(4)
5.呼び出しレベル入力Binary(4)
6.エラー・コード入出力Char(*)

QSYCUSRSはユーザーが指定された特殊権限を持っているかどうかを検査します。

権限標識

Y・・・・・・ユーザーは、指定された特殊権限を所有している。
N・・・・・・ユーザーは、指定された特殊権限を所有していない。

ユーザー・プロフィール名

特殊値 *CURRENT ・・・・・・現在、実行中のユーザー

特殊権限

検査する特殊権限を一個または、複数個(最大8個まで)指定することができます。
それぞれ 10 文字のフィールドの配列として指定します。

*ALLOBJ・・・・・・すべてのオブジェクト特殊権限
*AUDIT・・・・・・監査特殊権限
*IOSYSCFG・・・・・・入出力システム構成の特殊権限
*JOBCTL・・・・・・ジョブ制御特殊権限
*SAVSYS・・・・・・システム保管特殊権限
*SECADM・・・・・・機密保護管理者特殊権限
*SERVICE・・・・・・保守特殊権限
*SPLCTL・・・・・・スプール制御特殊権限

権限の数

特殊権限パラメータで指定されている権限の数。

呼び出しレベル

通常は 1 を指定する

【 TESTAUT: *SECADM を検査するRPGサンプル・ソース 】
0001.00 H DFTNAME(TESTAUT) DATEDIT(*YMD/)                                              
0002.00 F**********  ユーザー権限の検査 ***************************************        
0003.00 F*                                                                             
0004.00 F*     API: QSYCUSRS を使ってユーザーの特殊権限を                              
0005.00 F*           調査する                                                          
0006.00 F*                                                                             
0007.00 F**********************************************************************        
0008.00 D INFDSP         SDS                                                           
0009.00 D  USER                 254    263                                             
0010.00                                                                                
0011.00 D APIERR          DS                                                           
0012.00 D  GETBYT                 1      4B 0 INZ(160)                                 
0013.00 D  AVLBYT                 5      8B 0 INZ(0)                                   
0014.00 D  MSGID                  9     15                                             
0015.00 D  MSGDTA                17    160                                             
0016.00                                                                                
0017.00 D MSG             S             40A                                            
0018.00 D MSGE            C                   CONST(' には *SECADM 権限は -            
0019.00 D                                      ありません。 ')                         
0020.00 D AUTSU           S              4B 0 INZ(1)                                   
0021.00 D LVL             S              4B 0 INZ(1)                                   
0022.00                                                                                
0023.00 C*----------------------------------------------------+                        
0024.00 C                   CALL      'QSYCUSRS'                           99               
0025.00 C                   PARM                    TOKSHU            1            |        
0026.00 C                   PARM                    USER                           |        
0027.00 C                   PARM      '*SECADM   '  SPCAUT           10            |        
0028.00 C                   PARM                    AUTSU                          |        
0029.00 C                   PARM                    LVL                            |        
0030.00 C                   PARM                    APIERR                                  
0031.00 C*----------------------------------------------------+                             
0032.00 C                   IF        TOKSHU = 'N'                                          
0033.00 C                   EVAL      MSG = ' ユーザー ' + USER + MSGE                      
0034.00 C     MSG           DSPLY                   ANS               1                     
0035.00 C                   ENDIF                                                           
0036.00 C                   SETON                                        LR                 
0037.00 C                   RETURN                                                          
			
【コンパイル】
CRTBNDRPG PGM(MYLIB/TESTAUT) SRCFILE(MYSRCLIB/QRPGLESRC) AUT(*ALL)
【解説】

API: QSYCUSRS を使って現在のユーザーが *SECADM 権限を持っているかどうかを
検査します。
*SECADM 権限がないときだけには「ユーザー xxxx には *SECADM 権限がありません。
というエラー・メッセージが戻されます。