詳細は、製品より提供されている RPG ソース・ファイル QRPGLRSRC、および QCLSRC ソース・ファイルの CRTDEMO プログラムのソースを参照してください。
このHTTP 例では、JSMDIRECT 構成、および、サンプル HTML ファイルのホストとなる HTTP サーバーが必要です。
H OPTION(*SRCSTMT : *NODEBUGIO) DFTACTGRP(*NO) ACTGRP(*CALLER) H BNDDIR('JSMBNDDIR') * * V6R1 - Limits * Maximum data structure size is 16,773,104 bytes * Data structure size = element size * occurrence * D ListDef1 S 60A DIM(2) CTDATA D ListDefSize S 10I 0 INZ(0) D ListEntSize S 10I 0 INZ(0) D ListCount S 10I 0 INZ(0) D ListMaxCount S 10I 0 INZ(0) * D JSMHDL S 4A INZ(*BLANKS) D JSMSRV S 50A INZ(*BLANKS) D JSMSTS S 20A INZ(*BLANKS) D JSMMSG S 512A INZ(*BLANKS) D JSMCMD S 512A INZ(*BLANKS) D ZEROLENGTH S 10I 0 INZ(0) * D LST1 DS OCCURS(10) D NAME 50A D VALUE 100A * * JSMX_BEGIN * C CALLB(D) 'JSMX_BEGIN' C PARM *OMIT C PARM ZEROLENGTH * * JSMX_OPEN - USE JSMCLTDTA FOR SERVER * C CLEAR JSMSRV C EVAL JSMSRV = '' C CALLB(D) 'JSMX_OPEN' C PARM JSMHDL C PARM JSMSRV C PARM JSMSTS C PARM JSMMSG C CALLP checkSTS(JSMSTS:JSMMSG) * * SERVICE_LOAD - BIND LIST * * Reset list to beginning C 1 OCCUR LST1 C EVAL ListDefSize = %SIZE(ListDef1:*ALL) C EVAL ListEntSize = %SIZE(LST1) C EVAL ListCount = 0 C EVAL ListMaxCount = %ELEM(LST1) C CALLB(D) 'JSMX_BINDLST' C PARM JSMHDL C PARM ListDef1 C PARM ListDefSize C PARM LST1 C PARM ListEntSize C PARM ListCount C PARM ListMaxCount C PARM JSMSTS C PARM JSMMSG C CALLP checkSTS(JSMSTS:JSMMSG) * * SERVICE_LOAD * C CLEAR JSMCMD C EVAL JSMCMD = 'SERVICE_LOAD' + C ' SERVICE(HTTPService)' + C ' SERVICE_CONTENT(*HTTP)' + C ' BIND(*LIST)' + C ' TRACE(*YES)' C CALLB(D) 'JSMX_COMMAND' C PARM JSMHDL C PARM JSMCMD C PARM JSMSTS C PARM JSMMSG C CALLP checkSTS(JSMSTS:JSMMSG) * * RECEIVE HANDLER * C CLEAR JSMCMD C EVAL JSMCMD = 'RECEIVE' + C ' HANDLER(InboundMultiPart)' + C ' FIELD(SONUMBER)' C CALLB(D) 'JSMX_COMMAND' C PARM JSMHDL C PARM JSMCMD C PARM JSMSTS C PARM JSMMSG C CALLP checkSTS(JSMSTS:JSMMSG) * * RECEIVE HANDLER * C CLEAR JSMCMD C EVAL JSMCMD = 'RECEIVE' + C ' HANDLER(InboundMultiPart)' + C ' FILE(FILE1)' + C ' TO(demo.txt)' C CALLB(D) 'JSMX_COMMAND' C PARM JSMHDL C PARM JSMCMD C PARM JSMSTS C PARM JSMMSG C CALLP checkSTS(JSMSTS:JSMMSG) * * SEND HANDLER * C CLEAR JSMCMD C EVAL JSMCMD = 'SEND' + C ' HANDLER(InboundFile)' + C ' FILE(receipt.pdf)' + C ' CONTENT(*PDF)' + C ' UACACHE(5)' C C CALLB(D) 'JSMX_COMMAND' C PARM JSMHDL C PARM JSMCMD C PARM JSMSTS C PARM JSMMSG C CALLP checkSTS(JSMSTS:JSMMSG) * * JSMX_CLOSE * C CALLB(D) 'JSMX_CLOSE' C PARM JSMHDL C PARM JSMSTS C PARM JSMMSG C CALLP checkSTS(JSMSTS:JSMMSG) * * JSMX_END * C CALLB(D) 'JSMX_END' * C SETON LR ******************************** * Procedure to check JSM status ******************************** P checkSTS B D checkSTS PI N D csJSMSTS CONST LIKE(JSMSTS) D csJSMMSG CONST LIKE(JSMMSG) D csMSGTXT S 512A C IF csJSMSTS <> 'OK' C EVAL csMSGTXT = %TRIM(csJSMSTS) + ' ' + C %TRIM(csJSMMSG) C CALLP sendMSG(csMSGTXT) C RETURN *OFF C ENDIF C RETURN *ON P E ************************************** * Procedure to send a program message ************************************** P sendMSG B D sendMSG PI D smMSGTXT 512A VALUE D smMSGT S 10A INZ('*DIAG') D smMSGI S 7A INZ('CPF9897') D smMSGF S 20A INZ('QCPFMSG *LIBL ') D smMSGL S 10I 0 INZ(%SIZE(smMSGTXT)) D smSTKE S 10A INZ('*') D smSTKC S 10I 0 INZ(1) D smMSGK S 4A INZ(*BLANK) D smERRC S 10I 0 INZ(0) C CALL 'QMHSNDPM' C PARM smMSGI C PARM smMSGF C PARM smMSGTXT C PARM smMSGL C PARM smMSGT C PARM smSTKE C PARM smSTKC C PARM smMSGK C PARM smERRC P E **CTDATA ListDef1NAME A000005000VALUE A000010000
HTML ブラウザ クライアント
以下の HTML は、上記の HTTP サービス例のクライアント側のコードです。
<!DOCTYPE html><html> <form method="POST" action="http://lansa01:1099/cgi-bin/jsmdirect?service=demohttp&mode=order" enctype="multipart/form-data"> <table> <tr><td>Order#</td><td><input name="SONUMBER" type="text" value="12345"/></td></tr> <tr><td>Customer</td><td><input name="CUSTNAME" type="text" value="ABC Industries"/></td></tr> <tr><td>Street</td><td><input name="STREET" type="text" value="123 Main St"/></td></tr> <tr><td>City</td><td><input name="CITY" type="text" value="Chicago"/></td></tr> <tr><td>PostCode</td><td><input name="POSTCODE" type="text" value="60609"/></td></tr> </table> <br/> <input name="FILE1" type="file"/> <br/> <br/> <input type="SUBMIT" value="Send order"/> </form> </html>