PGM PARM(&HNSFROM &HNSEND &SHFROM &SHEND &OUTPUT) /*-------------------------------------------------------------------*/ /* PGM106CL : 商品マスター一覧表 */ /* */ /* この CLP:PGM106CL はコマンド PGM106 から呼び出されて */ /* 実行されます。 */ /* */ /* この適用業務は 5250 環境 / AUTOWEB 環境のどちらでも */ /* 実行することができます。 */ /* */ /* 5250 環境で実行した場合は印刷出力イメージは OUTQ に保管され */ /* ますが AUTOWEB 環境で実行した場合や PDF が指定された場合は */ /* PDF がブラウザ上に表示されます。 */ /* ブラアザへの表示は SPOOL ライターの HTTP サーバーによって */ /* リダイレクトされて表示されます。 */ /* */ /* [ 注 ] PDF 変換には SPOOL ライターが導入されている必要が */ /* あります。 */ /*-------------------------------------------------------------------*/ DCL VAR(&HNSFROM) TYPE(*CHAR) LEN(4) DCL VAR(&HNSEND) TYPE(*CHAR) LEN(4) DCL VAR(&SHFROM) TYPE(*CHAR) LEN(10) DCL VAR(&SHEND) TYPE(*CHAR) LEN(10) DCL VAR(&SHEND) TYPE(*CHAR) LEN(10) DCL VAR(&OUTPUT) TYPE(*CHAR) LEN(8) 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(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&TOMSGQ) TYPE(*CHAR) LEN(10) /*( PDF 出力に必要な変数 )*/ DCL VAR(&DEV) TYPE(*CHAR) LEN(10) DCL VAR(&OPT) TYPE(*CHAR) LEN(4) VALUE(X'00000002') DCL VAR(&ERR) TYPE(*CHAR) LEN(1) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&JOB) TYPE(*CHAR) LEN(10) DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6) DCL VAR(&PDF_FILE) TYPE(*CHAR) LEN(48) DCL VAR(&PCCMD) TYPE(*CHAR) LEN(123) DCL VAR(&IPADDR) TYPE(*CHAR) LEN(15) /*( IFS の削除に必要な変数 )*/ DCL VAR(&DATE) TYPE(*CHAR) LEN(6) DCL VAR(&TIME) TYPE(*CHAR) LEN(6) DCL VAR(&HH) TYPE(*DEC) LEN(2 0) DCL VAR(&HHC) TYPE(*CHAR) LEN(2) DCL VAR(&MM) TYPE(*DEC) LEN(2 0) DCL VAR(&MMC) TYPE(*CHAR) LEN(2) DCL VAR(&SS) TYPE(*DEC) LEN(2 0) DCL VAR(&SSC) TYPE(*CHAR) LEN(2) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVJOBA JOB(&JOB) TYPE(&TYPE) IF COND(&TYPE *EQ '0') THEN(DO) /* バッチ */ CHGVAR VAR(&TOMSGQ) VALUE('*SYSOPR ') ENDDO /* バッチ */ ELSE CMD(DO) /* 対話式 */ CHGVAR VAR(&TOMSGQ) VALUE('*TOPGMQ ') ENDDO /* 対話式 */ RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATE) RTVSYSVAL SYSVAL(QTIME) RTNVAR(&TIME) CHGJOB STSMSG(*NORMAL) IF COND(%SWITCH(XXXXXXX0)) THEN(DO) /*( 作業進行中メッセージの表示 )*/ SNDPGMMSG MSGID(CPF9800) MSGF(QSYS/QCPFMSG) + MSGDTA(' 商品一覧表を印刷中。 ') + TOPGMQ(*EXT) MSGTYPE(*STATUS) ENDDO /*-------------------------------------------------------------*/ /*( 1 ) 印刷プログラム PGM106 を呼び出して実行する */ /*-------------------------------------------------------------*/ IF COND(&OUTPUT *EQ '*PDF ') THEN(DO) OVRPRTF FILE(QPRINT) HOLD(*YES) SECURE(*YES) + OVRSCOPE(*JOB) ENDDO OVRDBF FILE(SHOHINL1) TOFILE(QTRFIL/SHOHINL1) + SECURE(*YES) OVRSCOPE(*JOB) CALL PGM(QTROBJ/PGM106) PARM(&HNSFROM &HNSEND + &SHFROM &SHEND) DLTOVR FILE(SHOHINL1) LVL(*JOB) /*-------------------------------------------------------------------*/ /* *PDF が要求された場合 PDF に変換して */ /* さらに PDF を WEB 表示する */ /*-------------------------------------------------------------------*/ IF COND(&OUTPUT *EQ '*PDF ') THEN(DO) /*-------------------------------------------------------------*/ /*( 2 ) QPRTJOB の JOB 番号を検索する */ /*-------------------------------------------------------------*/ RTVJOBA JOB(&JOB) USER(&USER) NBR(&JOBNBR) CALL PGM(SPOOLWTR/PRTJOBNO) PARM(&USER &JOBNBR) /*-------------------------------------------------------------*/ /*( 3 ) SPOOL ライターによって PDF に変換して IFS に保管する */ /*-------------------------------------------------------------*/ CHGVAR VAR(&PDF_FILE) VALUE('PDF' *CAT &JOBNBR + *TCAT '.PDF') /*------------------------------------------------*/ /* 印刷 PDF の場合は PDF を表示しないで */ /* そのまま印刷する */ /*------------------------------------------------*/ IF COND(&OUTPUT *EQ '*PRINT ') THEN(DO) SPOOLWTR/CVTSPLF SPLF(QPRINT) JOB(&JOBNBR/&USER/&JOB) + SPLNO(*LAST) OUTPUT(*PDF) OPTION(*PRINT) + TOSTMF(&PDF_FILE) + TODIR('/SPOOLWTR/TEMP') ENDDO /*------------------------------------------------*/ /* 表示 PDF の場合は IFS に保管した PDF を */ /* PC オーガナイザーで表示する。 */ /*------------------------------------------------*/ ELSE CMD(DO) SPOOLWTR/CVTSPLF SPLF(QPRINT) JOB(&JOBNBR/&USER/&JOB) + SPLNO(*LAST) OUTPUT(*PDF) OPTION(*IFS) + TOSTMF(&PDF_FILE) + TODIR('/SPOOLWTR/TEMP') ENDDO DLTSPLF FILE(QPRINT) JOB(&JOBNBR/&USER/&JOB) + SPLNBR(*LAST) /*-------------------------------------------------------------*/ /*( 4 ) IFS に保存されている PDF を表示する */ /*-------------------------------------------------------------*/ /* GETIPADDR IBM iの IP アドレスの取得 */ /* エラーがあれば E に 'E' が入る */ CHGVAR VAR(&DEV) VALUE(&JOB) CALL PGM(SPOOLWTR/GETIPADDR) PARM(&DEV &IPADDR + &MSG &ERR &OPT) IF COND(&ERR *EQ 'E') THEN(DO) GOTO SNDMSG ENDDO CHGVAR VAR(&PCCMD) VALUE('START HTTP://' *CAT + &IPADDR *TCAT ':3007/SPOOLWTR/TEMP/' *CAT + &PDF_FILE) /**************************************************/ /* PDF 印刷出力の場合は *PRINT を付加しておくと */ /* VT5250 が印刷 PDF であると判断する */ /**************************************************/ IF COND(&OUTPUT *EQ '*PRINT ') THEN(DO) CHGVAR VAR(&PCCMD) VALUE(&PCCMD *TCAT ' *PRINT') ENDDO STRPCO PCTA(*NO) MONMSG MSGID(IWS4010) STRPCCMD PCCMD(&PCCMD) PAUSE(*NO) /*-------------------------------------------------------------*/ /*( 5 ) 10 分後に PDF を削除するように SBMJOB する */ /*-------------------------------------------------------------*/ CHGVAR VAR(&HH) VALUE(%SST(&TIME 1 2)) CHGVAR VAR(&MM) VALUE(%SST(&TIME 3 2)) CHGVAR VAR(&SS) VALUE(%SST(&TIME 5 2)) CHGVAR VAR(&MM) VALUE(&MM + 10) IF COND(&MM >= 60) THEN(DO) CHGVAR VAR(&HH) VALUE(&HH + 1) CHGVAR VAR(&MM) VALUE(1) ENDDO CHGVAR VAR(&HHC) VALUE(&HH) CHGVAR VAR(&MMC) VALUE(&MM) CHGVAR VAR(&SSC) VALUE(&SS) CHGVAR VAR(&TIME) VALUE(&HHC *CAT &MMC *CAT &SSC) SBMJOB CMD(RMVLNK OBJLNK(&PDF_FILE)) JOB(DLTPDF) + SCDDATE(&DATE) SCDTIME(&TIME) MSGQ(*NONE) ENDDO /*-------------------------------------------------------------------*/ /* 5250 エミュレータで実行されている場合は完了メッセージを出力して */ /* 終了する。 */ /*-------------------------------------------------------------------*/ ELSE CMD(DO) SNDPGMMSG MSG(' 商品マスター一覧表を出力しました。 ') + MSGTYPE(*DIAG) ENDDO RETURN 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(&TOMSGQ) MSGTYPE(*ESCAPE) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(&TOMSGQ) + MSGTYPE(*ESCAPE) ENDDO ENDPGM