PGM PARM(&OBJOBJLIB &OBJTYPE &MBR &AUT) /*---------------------------------------------------------*/ /* CHKOBJCL : オブジェクトの存在チエック */ /*---------------------------------------------------------*/ DCL VAR(&OBJOBJLIB) TYPE(*CHAR) LEN(20) DCL VAR(&OBJ) TYPE(*CHAR) LEN(10) DCL VAR(&OBJLIB) TYPE(*CHAR) LEN(10) DCL VAR(&OBJTYPE) TYPE(*CHAR) LEN(7) DCL VAR(&OBJTYPEC) TYPE(*CHAR) LEN(8) DCL VAR(&MBR) TYPE(*CHAR) LEN(10) DCL VAR(&AUT) TYPE(*CHAR) LEN(102) DCL VAR(&AUTS) TYPE(*CHAR) LEN(2) DCL VAR(&AUTC) TYPE(*CHAR) LEN(100) DCL VAR(&AUT10) TYPE(*CHAR) LEN(10) DCL VAR(&AUT100) TYPE(*CHAR) LEN(100) DCL VAR(&MSG) TYPE(*CHAR) LEN(132) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132) DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&TOPGMQ) TYPE(*CHAR) LEN(10) DCL VAR(&MSGTYPE) TYPE(*CHAR) LEN(10) + VALUE('*ESCAPE ') DCL VAR(&APIERR) TYPE(*CHAR) LEN(116) + VALUE(X'000074') /* 2 進数 */ DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') DCL VAR(&N) TYPE(*DEC) LEN(4 0) DCL VAR(&POS) TYPE(*DEC) LEN(4 0) VALUE(3) DCL VAR(&POT) TYPE(*DEC) LEN(4 0) VALUE(1) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) /*( 環境の取得 )*/ RTVJOBA TYPE(&TYPE) IF COND(&TYPE *EQ '0') THEN(DO) /* バッチ */ CHGVAR VAR(&TOPGMQ) VALUE('*SYSOPR ') ENDDO /* バッチ */ ELSE CMD(DO) /* 対話式 */ CHGVAR VAR(&TOPGMQ) VALUE('*TOPGMQ ') ENDDO /* 対話式 */ /*( パラメータの取得 )*/ CHGVAR VAR(&OBJ) VALUE(%SST(&OBJOBJLIB 01 10)) CHGVAR VAR(&OBJLIB) VALUE(%SST(&OBJOBJLIB 11 10)) IF COND(%SST(&OBJTYPE 1 1) *EQ '*') THEN(DO) CHGVAR VAR(&OBJTYPEC) VALUE(&OBJTYPE) ENDDO ELSE CMD(DO) CHGVAR VAR(&OBJTYPEC) VALUE('*' *TCAT &OBJTYPE) ENDDO CHGVAR VAR(&AUTS) VALUE(%SST(&AUT 1 2)) IF COND(%BIN(&AUTS) *GT 0) THEN(DO) CHGVAR VAR(&N) VALUE(1) LOOP: CHGVAR VAR(&AUT10) VALUE(%SST(&AUT &POS 10)) CHGVAR VAR(%SST(&AUT100 &POT 10)) VALUE(&AUT10) IF COND(&N < %BIN(&AUTS)) THEN(DO) CHGVAR VAR(&N) VALUE(&N + 1) CHGVAR VAR(&POS) VALUE(&POS + 10) CHGVAR VAR(&POT) VALUE(&POT + 10) GOTO LOOP ENDDO ENDDO /*( CHKOBJ の検査 )*/ CHKOBJ OBJ(&OBJLIB/&OBJ) OBJTYPE(&OBJTYPEC) + MBR(&MBR) AUT(&AUT100) RETURN APIERR: CHGVAR VAR(&MSGID) VALUE(%SST(&APIERR 9 7)) CHGVAR VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100)) CHGVAR VAR(&MSGF) VALUE('QCPFMSG ') CHGVAR VAR(&MSGFLIB) VALUE('QSYS ') GOTO SNDMSG ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) + MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) + MSGFLIB(&MSGFLIB) SNDMSG: IF COND(&MSGID *EQ ' ') THEN(DO) SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) + TOMSGQ(&TOPGMQ) MSGTYPE(&MSGTYPE) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) + MSGTYPE(&MSGTYPE) ENDDO ENDPGM