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')
DCL VAR(&DTA004) TYPE(*CHAR) LEN(80) +
VALUE(' あなたが入力したのは +
H1>
')
DCL VAR(&DTA005) TYPE(*CHAR) LEN(80) +
VALUE('
')
DCL VAR(&DTA006) TYPE(*CHAR) LEN(80) +
VALUE('
')
DCL VAR(&DTA007) TYPE(*CHAR) LEN(80) +
VALUE('
元の画面 +
に戻る ')
DCL VAR(&DTA008) TYPE(*CHAR) LEN(80) +
VALUE('')
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