特殊権限を持っている特別なユーザーにだけ実行を許可したいジョブを
構成するには、ユーザーに与えられている特殊権限を検査する必要がある。
ここでは API: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
| 通常は 1 を指定する |
*SECADM を検査するCサンプル・ソース】
0001.00 #include <stdio.h>
0002.00 #include <stdlib.h>
0003.00 #include <string.h>
0004.00 #include <QSYCUSRS.h>
0005.00
0006.00 /*---------------------------------------------------------*/
0007.00 /* TESTAUT : ユーザー特殊権限の検査 */
0008.00 /* */
0009.00 /* API: QSYCUSRS を使ってユーザーの特殊権限を */
0010.00 /* 調査する。 */
0011.00 /*---------------------------------------------------------*/
0012.00 #define TRUE 0
0013.00 #define FALSE -1
0014.00 typedef struct {
0015.00 int BYTESPRO;
0016.00 int BYTESAVL;
0017.00 char MSGID[7];
0018.00 char RESRVD;
0019.00 char EXCPDATA[100];
0020.00 } ERRSTRUCTURE; /* Define the error return structure */
0021.00 ERRSTRUCTURE errcode;/* Error Code Structure for RCVMSG */
0022.00
0023.00 void main(void){
0024.00 char AUTO[2];
0025.00 int NoAUT = 1, LVL = 1;
0026.00
0027.00 printf("TESTAUT: ユーザー特殊権限の検査 \n");
0028.00 getchar();
0029.00
0030.00 errcode.BYTESPRO = errcode.BYTESAVL = 0;
0031.00 QSYCUSRS(AUTO, "*CURRENT ", "*SECADM ", &NoAUT, &LVL, &errcode);
0032.00 if(AUTO[0] == 'N'){
0033.00 printf(" このユーザーには *SECADM 権限はありません。 \n");
0034.00 getchar();
0035.00 }
0036.00 }
CRTBNDC PGM(MYLIB/TESTAUT) SRCFILE(MYSRCLIB/QCSRC) AUT(*ALL)
API: QSYCUSRS を使って現在のユーザーが *SECADM 権限を持っているかどうかを
検査します。
*SECADM 権限がないときだけには「ユーザー xxxx には *SECADM 権限がありません。」
というエラー・メッセージが戻されます。