C/400

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 権限がありません。
というエラー・メッセージが戻されます。