このステップでは、データベース・ファイル DEPTAB にアクセスして部門の記述を取得 (FETCH) する RDMLX を作成します。クライアント要求に応答する、サーバー側の送信 (SEND) RDMLX を作成します。
#DEPTDESC := *NULLFETCH FIELDS(#DEPTDESC) FROM_FILE(DEPTAB) WITH_KEY(#DEPTMENT) IO_ERROR(*NEXT) VAL_ERROR(*NEXT)IF_STATUS IS_NOT(*OKAY)#DEPTDESC := '部門が見つかりません'ENDIF


FUNCTION OPTIONS(*DIRECT)* 次のフィールドが xml バインド・マップにより使用されます。*#DEPTMENT*次のフラグメントが xml バインド・マップにより使用されます。GROUP_BY NAME(#DEPTREQ) FIELDS(#DEPTMENT)*サービスのオープンUSE BUILTIN(JSMX_OPEN) TO_GET(#JSMXSTS #JSMXMSG #JSMXHDLE1)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*サービスのロードCHANGE FIELD(#JSMXCMD) TO('SERVICE_LOAD SERVICE(HTTPInboundXMLBindService) SERVICE_CONTENT(*HTTP) TRACE(*YES)')USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMXSTS #JSMXMSG)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*サービスをバインドして HTTP 要求コンテンツを読み込むCHANGE FIELD(#JSMXCMD) TO('BIND SERVICE(IIIPRO04_REQUEST) TYPE(*INBOUND) BINDTRACE(*YES)')USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMXSTS #JSMXMSG)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*フラグメントの取得 - DEPTREQCHANGE FIELD(#JSMXCMD) TO('GET FRAGMENT(DepartmentRequest) SERVICE_EXCHANGE(*FIELD)')USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMXSTS #JSMXMSG)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*部門記述のための要求を処理#deptdesc := *blanksFETCH FIELDS(#deptdesc) FROM_FILE(deptab) WITH_KEY(#deptment) IO_ERROR(*NEXT) VAL_ERROR(*NEXT)IF_STATUS IS_NOT(*OKAY)#deptdesc := ('部門が見つかりません')ENDIF*<<< アウトバウンドのバインド・ロジックはここに記述 >>>*サービスをバインドして HTTP 要求コンテンツを作成CHANGE FIELD(#JSMXCMD) TO('BIND SERVICE(IIIPRO04_RESPONSE) TYPE(*OUTBOUND)')USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMXSTS #JSMXMSG)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*フラグメントの設定 - DEPARTMENTRESPONSECHANGE FIELD(#JSMXCMD) TO('SET FRAGMENT(DEPARTMENTRESPONSE) SERVICE_EXCHANGE(*FIELD)')USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMXSTS #JSMXMSG)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*コンテンツ書き込みCHANGE FIELD(#JSMXCMD) TO('WRITE INDENT(*YES) BINDTRACE(*YES)')USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMXSTS #JSMXMSG)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*HTTP 応答コンテンツ送信CHANGE FIELD(#JSMXCMD) TO('SEND')USE BUILTIN(JSMX_COMMAND) WITH_ARGS(#JSMXHDLE1 #JSMXCMD) TO_GET(#JSMXSTS #JSMXMSG)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*サービスのクローズUSE BUILTIN(JSMX_CLOSE) WITH_ARGS(#JSMXHDLE1) TO_GET(#JSMXSTS #JSMXMSG)EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMXSTS #JSMXMSG)*Check ルーチンSUBROUTINE NAME(CHECK) PARMS((#JSMXSTS *RECEIVED) (#JSMXMSG *RECEIVED))IF COND('#JSMXSTS *NE OK')USE BUILTIN(JSMX_CLOSE) WITH_ARGS(#JSMXHDLE1) TO_GET(#JSMXSTS #JSMXMSG)ABORTENDIFENDROUTINE