C400

100. 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

通常は 1 を指定する

【TESTAUT: *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 権限がありません。

というエラー・メッセージが戻されます。