PGM
/*---------------------------------------------------------*/
/* SMPRINTCL : サンプル・データの印刷 */
/* */
/* この CLP は CGI として呼びだされて */
/* RPG : SMPRINT を実行して印刷出力を行います。 */
/* 印刷出力の結果は SPOOL ライターによって */
/* 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(120) +
VALUE('CONTENT-TYPE: TEXT/HTML*')
DCL VAR(&DTA002) TYPE(*CHAR) LEN(120) VALUE(' ')
DCL VAR(&DTA003) TYPE(*CHAR) LEN(120) +
VALUE('
印刷 CLP')
DCL VAR(&DTA004) TYPE(*CHAR) LEN(120) +
VALUE('')
DCL VAR(&DTA005) TYPE(*CHAR) LEN(120) +
VALUE('')
DCL VAR(&DTA009) TYPE(*CHAR) LEN(120) +
VALUE('| ')
DCL VAR(&DTA010) TYPE(*CHAR) LEN(120) +
VALUE(' しばらくお待ちください . . +
. |
')
DCL VAR(&DTA011) TYPE(*CHAR) LEN(120) +
VALUE('')
DCL VAR(&DTA012) TYPE(*CHAR) LEN(120) +
VALUE('')
DCL VAR(&DATA) TYPE(*CHAR) LEN(1440)
DCL VAR(&HTML) TYPE(*CHAR) LEN(120)
DCL VAR(&N) TYPE(*DEC) LEN(4 0) VALUE(3)
DCL VAR(&POS) TYPE(*DEC) LEN(4 0) VALUE(241)
DCL VAR(&OUTLN) TYPE(*CHAR) LEN(4)
DCL VAR(&CRLN) TYPE(*CHAR) LEN(2) VALUE(X'1500')
DCL VAR(&OUTPUT) TYPE(*CHAR) LEN(20)
DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6) VALUE('096165')
DCL VAR(&JOB) TYPE(*CHAR) LEN(10)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
ADDLIBLE LIB(SPOOLWTR)
MONMSG CPF2100
RTVJOBA JOB(&JOB) USER(&USER) NBR(&JOBNBR)
CHGVAR VAR(&OUTPUT) VALUE('P' *CAT &JOBNBR *TCAT +
'.HTM')
/*( ブラウザからの入力値を取得 )*/
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)
CHGVAR VAR(&FRMCOD) VALUE(%SST(&ENBUFF 8 10))
/*---( 印刷プログラム SMPRINT の実行 )------------------------*/
OVRDBF FILE(SHOHIN) TOFILE(QTRFIL/SHOHIN) +
OVRSCOPE(*JOB)
OVRPRTF FILE(QPRINT) HOLD(*YES) SECURE(*YES) +
OVRSCOPE(*JOB)
CALL PGM(R520OBJ/SMPRINT) PARM(&FRMCOD)
DLTOVR FILE(SHOHIN) LVL(*JOB)
/*( SPOOLWTR/CVTSPLF による HTML 変換 )*/
SPOOLWTR/CVTSPLF SPLF(QPRINT) JOB(&JOBNBR/&USER/&JOB) +
SPLNO(*LAST) OUTPUT(*HTML) OPTION(*IFS) +
TOSTMF(&OUTPUT) +
TODIR('/AS400-NET.USR/PROJECT/SMPRINT')
/*( 変換後の保管場所にリダイレクト )*/
CHGVAR VAR(&DATA) VALUE(&DTA001 *CAT &DTA002 *CAT +
&DTA003 *CAT &DTA004 *CAT &DTA005 *CAT +
&DTA006 *CAT &DTA007 *CAT &DTA008 *CAT +
&DTA009 *CAT &DTA010 *CAT &DTA011 *CAT +
&DTA012)
CHGVAR VAR(%BIN(&OUTLN)) VALUE(120)
LOOP: CHGVAR VAR(&HTML) VALUE(%SST(&DATA &POS 120))
IF COND(&N *EQ 5) THEN(DO)
CHGVAR VAR(&HTML) VALUE(&HTML *TCAT &OUTPUT *TCAT +
'">')
ENDDO
CHGVAR VAR(&HTML) VALUE(&HTML *TCAT &CRLN)
CALLPRC PRC(QホテクWネSホナマホ) PARM(&HTML &OUTLN &APIERR)
IF COND(&N < 12) THEN(DO)
CHGVAR VAR(&N) VALUE(&N + 1)
CHGVAR VAR(&POS) VALUE(&POS + 120)
GOTO LOOP
ENDDO
/*( 処理完了すればスプールを削除する。 )*/
DLTSPLF FILE(QPRINT) JOB(&JOBNBR/&USER/&JOB) +
SPLNBR(*LAST)
RMVLIBLE SPOOLWTR
RETURN
ERROR: RCVMSG RMV(*NO) MSG(&MSG)
SNDMSG: SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP)
DSPJOBLOG OUTPUT(*PRINT)
ENDPGM