PGM PARM(&MSGTXT &TONETID) /*---------------------------------------------------------*/ /* SNDWINMSG : WINDOWS へのメッセージの送信 */ /*---------------------------------------------------------*/ /*--------------------------------------------------------*/ /* Dオウツアネオヘ トオオエオエ カナネ ホクケヘ ニネナキネアテ */ /*--------------------------------------------------------*/ DCL VAR(&MSGTXT) TYPE(*CHAR) LEN(128) DCL VAR(&TONETID) TYPE(*CHAR) LEN(700) DCL VAR(&NETSYSNAME) TYPE(*CHAR) LEN(30) DCL VAR(&NETWORK) TYPE(*CHAR) LEN(15) DCL VAR(&SYSTEM) TYPE(*CHAR) LEN(15) DCL VAR(&INDEX1) TYPE(*DEC) LEN(4) VALUE(1) DCL VAR(&INDEX2) TYPE(*DEC) LEN(4) VALUE(1) DCL VAR(&NBRTOSEND) TYPE(*DEC) LEN(4) DCL VAR(&NEXTOFFLOC) TYPE(*DEC) LEN(4) DCL VAR(&NEXTOFFSET) TYPE(*DEC) LEN(4) DCL VAR(&IPADR) TYPE(*CHAR) LEN(15) DCL VAR(&OS400) TYPE(*CHAR) LEN(6) DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&RTNVALUE) TYPE(*CHAR) LEN(256) DCL VAR(&MSG) TYPE(*CHAR) LEN(80) /*--------------------------------------------------------*/ /* Cナトヘホアトホヘ トオオエオエ カナネ ホクケヘ ニネナキネアテ */ /*--------------------------------------------------------*/ DCL VAR(&BLANK) TYPE(*CHAR) LEN(1) VALUE(' ') DCL VAR(&HEXZERO) TYPE(*CHAR) LEN(1) VALUE(X'00') /*--------------------------------------------------------*/ /* Sホアネホ ナカ ホクオ オメオウマホアイツオ ウナエオ カナネ ホクオ ニネナキネアテ. */ /*--------------------------------------------------------*/ MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVJOBA TYPE(&TYPE) RTVDTAARA DTAARA(QGPL/QSS1MRI (1 6)) RTNVAR(&OS400) IF COND(&OS400 *LT 'V5R1M0') THEN(DO) CHGVAR VAR(&MSG) + VALUE('SNDWINMSG の実行は V5R1M0 以上が必 + 要です。 ') IF COND(&TYPE *EQ '0') THEN(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP) ENDDO ELSE CMD(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) ENDDO RETURN ENDDO /*--------------------------------------------------------*/ /* Bネオアチ ホクオ TOUSER ニアネアテオホオネ ケトホナ ホクオ トオホムナネチ トアテオ アトエ */ /* ヘモヘホオテ トアテオ ニアネホヘ. Oトツモ テナミオ ホクオ トナト-イツアトチ ニアネホ ナカ */ /* ホクオ トオホムナネチ アトエ ヘモヘホオテ トアテオヘ. */ /*--------------------------------------------------------*/ CHGVAR &NBRTOSEND %BINARY(&TONETID 1 2) IF (&NBRTOSEND = 0) THEN(GOTO SENDALL) CHGVAR &NEXTOFFLOC 3 LOOP1: IF (&INDEX1 > &NBRTOSEND) THEN(GOTO SENDDONE) CHGVAR &NEXTOFFSET %BINARY(&TONETID &NEXTOFFLOC 2) CHGVAR &NEXTOFFSET (&NEXTOFFSET+3) CHGVAR &NETSYSNAME %SST(&TONETID &NEXTOFFSET 30) CHGVAR &INDEX2 1 LOOP2: IF (&INDEX2 > 30) THEN(GOTO ENDLOOP) IF (%SST(&NETSYSNAME &INDEX2 1) = &BLANK) + THEN(CHGVAR %SST(&NETSYSNAME &INDEX2 1) &HEXZERO) CHGVAR &INDEX2 (&INDEX2+1) GOTO LOOP2 ENDLOOP: CHGVAR &IPADR %SST(&NETSYSNAME 1 15) CHGVAR &SYSTEM %SST(&NETSYSNAME 16 15) IF COND(&IPADR *EQ '*IPADR') THEN(DO) ASNET.COM/GETENV ENV(REMOTE_ADDR) VALUE(&RTNVALUE) CHGVAR VAR(&IPADR) VALUE(%SST(&RTNVALUE 1 15)) ENDDO ADDENVVAR ENVVAR(REMOTE_ADDR) VALUE(&IPADR) MONMSG MSGID(CPFA980) EXEC(DO) CHGENVVAR ENVVAR(REMOTE_ADDR) VALUE(&IPADR) ENDDO CHGVAR VAR(&NETWORK) VALUE(&IPADR) IF (%SST(&SYSTEM 1 5) = '*NONE') + THEN(CALL PGM(QZLSMAINT) PARM('30' &NETWORK &MSGTXT)) ELSE (CALL PGM(QZLSMAINT) PARM('37' &NETWORK &SYSTEM &MSGTXT)) CHGVAR &NEXTOFFLOC (&NEXTOFFLOC+2) CHGVAR &INDEX1 (&INDEX1+1) GOTO LOOP1 SENDDONE: IF COND(&TYPE *EQ '1') THEN(DO) /* 対話式 */ CHGVAR VAR(&MSG) VALUE(' メッセージを ' *CAT + &IPADR *TCAT ' に送信しました。 ') GOTO SNDMSG ENDDO /* 対話式 */ RETURN SENDALL: CALL PGM(QZLSMAINT) PARM('30' *ALL &MSGTXT) RETURN ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) SNDMSG: IF COND(&TYPE *EQ '0') THEN(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP) ENDDO ELSE CMD(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) ENDDO ENDPGM