オブジェクトの所属する権限リストを検索する

あるオブジェクトがどの権限リストに属しているかをチェックするプログラムの一部分です。

システム API でヘッダーセクションへアクセスするサンプルがなかったので、そのためにちょっと作ってみました。

ソースはこんなかんじです。

             PGM        PARM(&OBJ &LIB &TYPE) 
             DCL        VAR(&ERR) TYPE(*CHAR) LEN(10) 
             DCL        VAR(&USPNAME) TYPE(*CHAR) LEN(10) 
             DCL        VAR(&LIB) TYPE(*CHAR) LEN(10) 
             DCL        VAR(&OBJ) TYPE(*CHAR) LEN(10) 
             DCL        VAR(&TYPE) TYPE(*CHAR) LEN(10) 
             DCL        VAR(&AUTLNAME) TYPE(*CHAR) LEN(10) 
             DCL        VAR(&OBJLIB) TYPE(*CHAR) LEN(20) 
             DCL        VAR(&USRSPC) TYPE(*CHAR) LEN(20) + 
                          VALUE('OBJAUTL   QTEMP     ') 
             DCL        VAR(&GENHDR) TYPE(*CHAR) LEN(140) 
             DCL        VAR(&LSTSTS) TYPE(*CHAR) LEN(1) 
             DCL        VAR(&HDRLENB) TYPE(*CHAR) LEN(4) 
             DCL        VAR(&HDROFFB) TYPE(*CHAR) LEN(4) 
             DCL        VAR(&HDRINFO) TYPE(*CHAR) LEN(81) 
             CHGVAR     VAR(%SST(&OBJLIB 1 10)) VALUE(&OBJ) 
             CHGVAR     VAR(%SST(&OBJLIB 11 10)) VALUE(&LIB) 
             CHGVAR     VAR(&USPNAME) VALUE(%SST(&USRSPC 1 10)) 
             DLTUSRSPC  USRSPC(QTEMP/&USPNAME) 
             MONMSG     MSGID(CPF0000) 
             CALL       PGM(QUSCRTUS) PARM(&USRSPC 'OBJAUTL   ' X'00000100' ' ' '*ALL      ' 'OBJAUTL   TEMPORARY USER SPACE') 
             CALL       PGM(QSYLUSRA) PARM(&USRSPC 'USRA0100' &OBJLIB &TYPE &ERR) 
        /* x'8c'は&GENHDRの長さの140バイト */ 
             CALL       PGM(QUSRTVUS) PARM(&USRSPC X'00000001' X'0000008C' &GENHDR) 
             CHGVAR     VAR(&LSTSTS) VALUE(%SST(&GENHDR 133 4)) 
             IF         COND(&LSTSTS = 'I') THEN(GOTO CMDLBL(BADLIST)) 
        /* 117はHeaderセクションへのオフセット */ 
             CHGVAR     VAR(&HDROFFB) VALUE(%SST(&GENHDR 117 4)) 
        /* 117はHeaderセクションの長さ */ 
             CHGVAR     VAR(&HDRLENB) VALUE(%SST(&GENHDR 121 4)) 
             CALL       PGM(QUSRTVUS) PARM(&USRSPC &HDROFFB &HDRLENB &HDRINFO) 
             CHGVAR     VAR(&AUTLNAME) VALUE(%SST(&HDRINFO 41 10)) 
             GOTO       CMDLBL(ENDPGM) 
 BADLIST:    SNDPGMMSG  MSG('Retrived List is imcomplete') 
 ENDPGM:     ENDPGM 

権限リストを作成して確認してみましょう。

APITEST というライブラリーに、上で作成した権限リストを関連づけます。

上述のプログラムをコンパイルします。

デバッグモードで見てみましょう。

停止点を定義します。

プログラムを実行します。

停止点で &AUTLNAME というフィールドの内容を見てみると、ちゃんと "API" が入っていることが確認できます。

[Top Pageに戻る]

Ads by TOK2