特殊権限を持っている特別なユーザーにだけ実行を許可したいジョブを
構成するには、ユーザーに与えられている特殊権限を検査する必要がある。
ここでは 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 を指定する
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
権限がありません。」
というエラー・メッセージが戻されます。