PGM /*---------------------------------------------------------*/ /* CLPCGI : CLP による CGI のサンプル */ /* */ /* この CLP は CGI として呼びだされて */ /* 結果の HTML をブラウザへ戻します。 */ /* */ /*---------------------------------------------------------*/ DCL VAR(&MSG) TYPE(*CHAR) LEN(80) DCL VAR(&ENBUFF) TYPE(*CHAR) LEN(2048) DCL VAR(&ENBUFFLN) TYPE(*CHAR) LEN(4) DCL VAR(&ENVARNAME) TYPE(*CHAR) LEN(20) + VALUE('QUERY_STRING') DCL VAR(&ENACTLN) TYPE(*CHAR) LEN(4) DCL VAR(&ENVARLN) TYPE(*CHAR) LEN(4) DCL VAR(&APIERR) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') /* 2 進数 */ DCL VAR(&FRMCOD) TYPE(*CHAR) LEN(10) DCL VAR(&DTA001) TYPE(*CHAR) LEN(80) + VALUE('CONTENT-TYPE: TEXT/HTML') DCL VAR(&DTA002) TYPE(*CHAR) LEN(80) VALUE(' ') DCL VAR(&DTA003) TYPE(*CHAR) LEN(80) + VALUE('CLP による CGI</T+ ITLE></HEAD><BODY>') DCL VAR(&DTA004) TYPE(*CHAR) LEN(80) + VALUE('<CENTER><H1> あなたが入力したのは </+ H1></CENTER>') DCL VAR(&DTA005) TYPE(*CHAR) LEN(80) + VALUE('<HR><P><PRE>') DCL VAR(&DTA006) TYPE(*CHAR) LEN(80) + VALUE('</PRE></P><HR>') DCL VAR(&DTA007) TYPE(*CHAR) LEN(80) + VALUE('<BR><A + HREF="javascript:history.back()"> 元の画面 + に戻る </A>') DCL VAR(&DTA008) TYPE(*CHAR) LEN(80) + VALUE('</BODY></HTML>') DCL VAR(&DATA) TYPE(*CHAR) LEN(640) DCL VAR(&HTML) TYPE(*CHAR) LEN(80) DCL VAR(&N) TYPE(*DEC) LEN(4 0) VALUE(1) DCL VAR(&M) TYPE(*DEC) LEN(4 0) VALUE(8) DCL VAR(&POS) TYPE(*DEC) LEN(4 0) VALUE(1) DCL VAR(&OUTLN) TYPE(*CHAR) LEN(4) DCL VAR(&CRLN) TYPE(*CHAR) LEN(2) VALUE(X'1500') MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) /*( ブラウザからの入力値を取得 )*/ CHGVAR VAR(%BIN(&ENBUFFLN)) VALUE(2048) CHGVAR VAR(%BIN(&ENACTLN)) VALUE(0) CHGVAR VAR(%BIN(&ENVARLN)) VALUE(12) CALLPRC PRC(QホテクGオホEトミ) PARM(&ENBUFF &ENBUFFLN + &ENACTLN &ENVARNAME &ENVARLN &APIERR) GETLOOP: IF COND((%SST(&ENBUFF &M 1) *NE '&') *AND &M < + 18) THEN(DO) CHGVAR VAR(&FRMCOD) VALUE(&FRMCOD *TCAT + %SST(&ENBUFF &M 1)) CHGVAR VAR(&M) VALUE(&M + 1) GOTO GETLOOP ENDDO /* CHGVAR VAR(&FRMCOD) VALUE(%SST(&ENBUFF 8 10)) */ /*( ブラウザに HTML を戻す )*/ CHGVAR VAR(&DATA) VALUE(&DTA001 *CAT &DTA002 *CAT + &DTA003 *CAT &DTA004 *CAT &DTA005 *CAT + &DTA006 *CAT &DTA007 *CAT &DTA008) CHGVAR VAR(%BIN(&OUTLN)) VALUE(80) CHGVAR VAR(&N) VALUE(1) LOOP: CHGVAR VAR(&HTML) VALUE(%SST(&DATA &POS 80)) IF COND(&N *EQ 5) THEN(DO) CHGVAR VAR(&HTML) VALUE(&HTML *TCAT &FRMCOD *TCAT + ' です。 ') ENDDO CHGVAR VAR(&HTML) VALUE(&HTML *TCAT &CRLN) CALLPRC PRC(QホテクWネSホナマホ) PARM(&HTML &OUTLN &APIERR) IF COND(&N < 8) THEN(DO) CHGVAR VAR(&N) VALUE(&N + 1) CHGVAR VAR(&POS) VALUE(&POS + 80) GOTO LOOP ENDDO RETURN ERROR: RCVMSG RMV(*NO) MSG(&MSG) SNDMSG: SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP) ENDPGM