PGM PARM(&MENU &MNULIB &RTNCOD) /*-------------------------------------------------------------------*/ /* WINDOWS : THE WINDOWS ライター・メニュー */ /* */ /* 2021/05/06 作成 */ /*-------------------------------------------------------------------*/ DCL VAR(&PNLGRP) TYPE(*CHAR) LEN(10) DCL VAR(&PNLPNLLIB) TYPE(*CHAR) LEN(10) DCL VAR(&PNLGRPLIB) TYPE(*CHAR) LEN(20) + VALUE('WINDOWS WINDOWS ') DCL VAR(&MENU) TYPE(*CHAR) LEN(10) DCL VAR(&MNULIB) TYPE(*CHAR) LEN(10) DCL VAR(&RTNCOD) TYPE(*CHAR) LEN(2) /* + 戻りコード */ 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(&HANDLE) TYPE(*CHAR) LEN(8) /* + 摘要業務ハンドル */ DCL VAR(&HNDCHR) TYPE(*CHAR) LEN(24) DCL VAR(&FNCTON) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') /* 2 進数 */ DCL VAR(&PANEL) TYPE(*CHAR) LEN(10) + VALUE('DSPMNU ') 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(&CF10) TYPE(*CHAR) LEN(4) + VALUE(X'0000000A') /* 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(&SQLRCD) TYPE(*CHAR) LEN(10) 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(&AREA) TYPE(*CHAR) LEN(4) + VALUE(X'FFFFFFFF') /* 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) DCL VAR(&PANELNAM) TYPE(*CHAR) LEN(10) DCL VAR(&NXTPNL) TYPE(*CHAR) LEN(10) DCL VAR(&BEFPNL) TYPE(*CHAR) LEN(10) VALUE('*NONE') DCL VAR(&B_EXTPGM) TYPE(*LGL) LEN(1) VALUE('0') + /* *PNLGRP */ DCL VAR(&PGMINFO) TYPE(*CHAR) LEN(48) DCL VAR(&PGMBUFF) TYPE(*CHAR) LEN(48) DCL VAR(&USRDFN) TYPE(*CHAR) LEN(10) DCL VAR(&DTALEN) TYPE(*CHAR) LEN(4) + VALUE(X'00000014') /* 2 進数 */ DCL VAR(&UPDWINMOD) TYPE(*CHAR) LEN(20) + VALUE('UPDWINMOD WINDOWS ') DCL VAR(&APIERR) TYPE(*CHAR) LEN(116) + VALUE(X'000074') /* 2 進数 */ DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') DCL VAR(&SNDPRM) TYPE(*CHAR) LEN(70) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) /*( QUIOPNDA : パネル・グループのオープン )*/ OPNPNL: CALL PGM(QUIOPNDA) PARM(&HANDLE &PNLGRPLIB &AREA + &EXITPG 'N' &APIERR) IF COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO) SNDPGMMSG MSG('WINDOWS(1)API: + QUIOPNDA の実行で次のエラーが発生しました。 + ') MSGTYPE(*DIAG) GOTO APIERR ENDDO /*( USREXITPGM を指定 )*/ CALL PGM(QUIPUTV) PARM(&HANDLE &UPDWINMOD &DTALEN + 'UPDMODRCD ' &APIERR) /*( 最初の DSPMOD を更新 )*/ CHGVAR VAR(%SST(&SNDPRM 17 8)) VALUE(&HANDLE) CALL PGM(WINDOWS/UPDWINMOD) PARM(&SNDPRM) /*-------------------------------------*/ /* QUIDSPP: パネルの表示 */ /*-------------------------------------*/ 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(DO) RETURN ENDDO ENDDO /*----------------------*/ /* 機能キー */ /*----------------------*/ /*( CF03 )= 終了 */ CF03: IF COND(&FNCTON *EQ &CF03) THEN(DO) CHGVAR VAR(&RTNCOD) VALUE(X'FFFF') /* 終了要求 */ GOTO CLOSE ENDDO /*( CF12 )= 取消し */ CF12: IF COND(&FNCTON *EQ &CF12) THEN(DO) CHGVAR VAR(&RTNCOD) VALUE(X'FFFF') /* 終了要求 */ GOTO CLOSE ENDDO /*( 適用業務のクローズ )*/ 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) + MSGTYPE(*ESCAPE) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(*TOPGMQ) + MSGTYPE(*ESCAPE) ENDDO ENDPGM