PGM PARM(&PNLGRPLIB &PANEL &PGMOBJLIB) /*-------------------------------------------------------------------*/ /* DSPPNLCL : パネル・グループ表示 */ /* */ /* 2020/01/02 作成 */ /*-------------------------------------------------------------------*/ DCL VAR(&PNLGRLIB) TYPE(*CHAR) LEN(20) DCL VAR(&PNLGRP) TYPE(*CHAR) LEN(10) DCL VAR(&PNLLIB) TYPE(*CHAR) LEN(10) DCL VAR(&PANEL) TYPE(*CHAR) LEN(10) DCL VAR(&PGMOBJLIB) TYPE(*CHAR) LEN(20) DCL VAR(&PGM) TYPE(*CHAR) LEN(10) DCL VAR(&OBJLIB) TYPE(*CHAR) LEN(10) 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(&ERR) TYPE(*CHAR) LEN(1) DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') DCL VAR(&APIERR) TYPE(*CHAR) LEN(116) + VALUE(X'000074') /* 2 進数 */ /*( パネル・グループの変数 )*/ DCL VAR(&HANDLE) TYPE(*CHAR) LEN(8) /* + 摘要業務ハンドル */ DCL VAR(&FNCTON) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') /* 2 進数 */ DCL VAR(&PANEL) TYPE(*CHAR) LEN(10) DCL VAR(&AGAIN) TYPE(*CHAR) LEN(1) VALUE(Y) DCL VAR(&USRTSK) TYPE(*CHAR) LEN(1) VALUE(N) DCL VAR(&STACK) TYPE(*CHAR) LEN(4) + VALUE(X'00000001') /* 2 進数 */ DCL VAR(&UIMMSG) TYPE(*CHAR) LEN(10) VALUE(*CALLER) DCL VAR(&MSGKEY) TYPE(*CHAR) LEN(4) DCL VAR(&CSROPT) TYPE(*CHAR) LEN(1) VALUE(D) DCL VAR(&LASLST) TYPE(*CHAR) LEN(4) VALUE(NONE) DCL VAR(&ERRLST) TYPE(*CHAR) LEN(4) DCL VAR(&WAITTIME) TYPE(*CHAR) LEN(4) + VALUE(X'FFFFFFFF') /* 2 進数 */ DCL VAR(&CF03) TYPE(*CHAR) LEN(4) + VALUE(X'FFFFFFFC') /* 2 進数 */ DCL VAR(&CF05) TYPE(*CHAR) LEN(4) + VALUE(X'00000005') /* 2 進数 */ DCL VAR(&CF06) TYPE(*CHAR) LEN(4) + VALUE(X'00000006') /* 2 進数 */ DCL VAR(&CF12) TYPE(*CHAR) LEN(4) + VALUE(X'FFFFFFF8') /* 2 進数 */ DCL VAR(&CF13) TYPE(*CHAR) LEN(4) + VALUE(X'0000000D') /* 2 進数 */ DCL VAR(&CF14) TYPE(*CHAR) LEN(4) + VALUE(X'0000000E') /* 2 進数 */ DCL VAR(&CF15) TYPE(*CHAR) LEN(4) + VALUE(X'0000000F') /* 2 進数 */ DCL VAR(&CF17) TYPE(*CHAR) LEN(4) + VALUE(X'00000011') /* 2 進数 */ DCL VAR(&CF18) TYPE(*CHAR) LEN(4) + VALUE(X'00000012') /* 2 進数 */ DCL VAR(&VARDTA) TYPE(*CHAR) LEN(1024) DCL VAR(&VARRCD) TYPE(*CHAR) LEN(10) DCL VAR(&DTALEN) TYPE(*CHAR) LEN(4) + VALUE(X'0000003C') /* 2 進数 =60 */ DCL VAR(&CSRVAR) TYPE(*CHAR) LEN(10) + VALUE('OPT ') DCL VAR(&CSRPOS) TYPE(*CHAR) LEN(2) VALUE(X'0001') DCL VAR(&CSRLST) TYPE(*CHAR) LEN(10) + VALUE('SFL ') DCL VAR(&CSRNAME) TYPE(*CHAR) LEN(10) + VALUE(' ') DCL VAR(&PNLGRPLIB) TYPE(*CHAR) LEN(20) + VALUE('WRKWINWTR WINDOWS ') DCL VAR(&AREA) TYPE(*CHAR) LEN(4) /* 2 進数 */ DCL VAR(&EXITPG) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') /* 2 進数 */ DCL VAR(&OPT) TYPE(*CHAR) LEN(2) VALUE(X'0000') DCL VAR(&DEC08) TYPE(*DEC) LEN(8 0) 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(&PNLGRP) VALUE(%SST(&PNLGRPLIB 01 10)) CHGVAR VAR(&PNLLIB) VALUE(%SST(&PNLGRPLIB 11 10)) CHGVAR VAR(&PGM) VALUE(%SST(&PGMOBJLIB 01 10)) CHGVAR VAR(&OBJLIB) VALUE(%SST(&PGMOBJLIB 11 10)) /*( QUIOPNDA : パネル・グループのオープン )*/ START: CHGVAR VAR(&DEC08) VALUE(-1) CHGVAR VAR(%BIN(&AREA)) VALUE(&DEC08) CALL PGM(QUIOPNDA) PARM(&HANDLE &PNLGRPLIB &AREA + &EXITPG 'N' &APIERR) IF COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO) SNDPGMMSG + MSG('API: QUHDSPH の実行で次のエラーが発生 + しました。 ') MSGTYPE(*DIAG) GOTO APIERR ENDDO /*( 実行キープログラムを指定 )*/ CALL PGM(QUIPUTV) PARM(&HANDLE &PGMOBJLIB &DTALEN + 'PGMRCD ' &APIERR) /*( リスト不完全出口プログラムを指定 )*/ CALL PGM(QUISETLA) PARM(&HANDLE 'SFL ' 'TOP + ' 'EXITPGM ' 'SAME' 'N' &APIERR) CALL PGM(QUIPUTV) PARM(&HANDLE &PGMOBJLIB &DTALEN + 'EXITRCD ' &APIERR) DSPLY: CALL PGM(QUIDSPP) PARM(&HANDLE &FNCTON &PANEL + &AGAIN &APIERR &USRTSK &STACK &UIMMSG + &MSGKEY &CSROPT &LASLST &ERRLST &WAITTIME) IF COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO) CHGVAR VAR(&MSGID) VALUE(%SST(&APIERR 9 7)) IF COND(&MSGID *EQ 'CPF6A13') THEN(RETURN) SNDPGMMSG + MSG('API: QUIDSPP の実行で次のエラーが発生 + しました。 ') MSGTYPE(*DIAG) GOTO APIERR ENDDO CHGVAR VAR(&MSGKEY) VALUE(' ') CHGVAR VAR(&CSROPT) VALUE('D') /*( CF03 )= 終了 */ IF COND(&FNCTON *EQ &CF03) THEN(DO) GOTO CLOSE ENDDO /*( CF12 )= 取消し */ IF COND(&FNCTON *EQ &CF12) THEN(DO) GOTO CLOSE ENDDO /*( 実行キー )*/ GOTO DSPLY /*( 適用業務のクローズ )*/ CLOSE: CALL PGM(QUICLOA) PARM(&HANDLE 'M' &APIERR) 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) MONMSG MSGID(CPF2400) EXEC(RETURN) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) + MSGTYPE(&MSGTYPE) MONMSG MSGID(CPF2400) EXEC(RETURN) ENDDO ENDPGM