PGM /*-------------------------------------------------------------------*/ /* TETSHLP HELP の内容をバッファーとして取り出す */ /* */ /* 2026/03/24 作成 */ /*-------------------------------------------------------------------*/ DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(1024) DCL VAR(&RCVLEN) TYPE(*INT) STG(*DEFINED) LEN(4) + DEFVAR(&RCVVAR 1) DCL VAR(&RCVAVL) TYPE(*INT) STG(*DEFINED) LEN(4) + DEFVAR(&RCVVAR 5) DCL VAR(&FMTNAM) TYPE(*CHAR) STG(*DEFINED) + LEN(8) DEFVAR(&RCVVAR 9) DCL VAR(&OFFSET) TYPE(*INT) STG(*DEFINED) LEN(4) + DEFVAR(&RCVVAR 17) DCL VAR(&NBRENT) TYPE(*INT) STG(*DEFINED) LEN(4) + DEFVAR(&RCVVAR 21) DCL VAR(&SIZE) TYPE(*INT) STG(*DEFINED) LEN(4) + DEFVAR(&RCVVAR 25) DCL VAR(&VALUE) TYPE(*CHAR) LEN(1024) DCL VAR(&RCVSIZ) TYPE(*CHAR) LEN(4) DCL VAR(&TITLE) TYPE(*CHAR) LEN(10) VALUE('*YES') DCL VAR(&TXTFMT) TYPE(*CHAR) LEN(32767) /* + 受入れテキスト */ DCL VAR(&TXTLEN) TYPE(*INT) STG(*DEFINED) LEN(4) + DEFVAR(&TXTFMT 1) DCL VAR(&TXTAVL) TYPE(*INT) STG(*DEFINED) LEN(4) + DEFVAR(&TXTFMT 5) DCL VAR(&TXTSIZ) TYPE(*CHAR) LEN(4) DCL VAR(&DATA) TYPE(*CHAR) LEN(32767) DCL VAR(&HLPIDEN) TYPE(*CHAR) LEN(200) DCL VAR(&NUMID) TYPE(*CHAR) LEN(4) 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(&PNLGRP) TYPE(*CHAR) LEN(20) + VALUE('QHCDCMD QSYS ') DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&ERR) 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'0000007400000000') /* 2 進数 */ DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') 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 /* 対話式 */ /*( 初期ルーチン )*/ /*---------------------------*/ CALLSUBR SUBR(INZSUBR) /*---------------------------*/ IF COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO) GOTO APIERR ENDDO IF COND(&MSG *NE ' ') THEN(DO) GOTO SNDMSG ENDDO IF COND(&ERR = 'E') THEN(DO) GOTO ERROR ENDDO /*( API の実行 )*/ CHGVAR VAR(%SST(&HLPIDEN 1 32)) VALUE('DSPCMD') CHGVAR VAR(%SST(&HLPIDEN 33 10)) VALUE('QHCDCMD') CHGVAR VAR(%SST(&HLPIDEN 43 10)) VALUE('QHLPSYS') CHGVAR VAR(%SST(&HLPIDEN 53 10)) VALUE('*PNLGRP') CHGVAR VAR(%BIN(&RCVSIZ)) VALUE(1024) CHGVAR VAR(%BIN(&NUMID)) VALUE(1) CHGVAR VAR(%BIN(&TXTSIZ)) VALUE(32767) /*-----------------------------------------------------------*/ CALL PGM(QUHRHLPT) PARM(&RCVVAR &RCVSIZ + 'RHLP0100' &HLPIDEN &NUMID &TXTFMT &TXTSIZ + &APIERR) /*-----------------------------------------------------------*/ IF COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO) SNDPGMMSG + MSG('API: QUHRHLPT の実行で次のエラーが発生 + しました。 ') MSGTYPE(*DIAG) GOTO APIERR ENDDO CHGVAR VAR(&DATA) VALUE(%SST(&TXTFMT 6 &TXTAVL)) SNDPGMMSG MSG(&DATA) MSGTYPE(*DIAG) 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 /******************************/ SUBR SUBR(INZSUBR) /******************************/ ENDSUBR ENDPGM