(1)パラメタリストの生成
CORBA-ORB-CREATE-LISTメソッドにより、サーバアプリケーションに渡すパラメタを格納するための領域を保持するリストオブジェクトを生成します。このとき、パラメタとして、何個のパラメタを格納するかを指定します。その結果、NVListオブジェクトリファレンスが返されます。NVListオブジェクトインタフェースの詳細については、“12.2 NVListオブジェクト”を参照してください。
DATA DIVISION. WORKING-STORAGE SECTION. 01 COPY ANY IN CORBA REPLACING CORBA-ANY BY PARAM-ANY. 01 COPY PARDESCRIPTIONSEQ IN CORBA REPLACING CORBA-PARDESCRIPTIONSEQ BY PARAMS. 01 COPY NVLIST IN CORBA REPLACING CORBA-NVLIST BY ARG-LIST. LINKAGE SECTION. 01 COPY CONTAINED-DESCRIPTION IN CORBA REPLACING CORBA-CONTAINED-DESCRIPTION BY TMP-DESC. 01 COPY OPERATIONDESCRIPTION IN CORBA REPLACING CORBA-OPERATIONDESCRIPTION BY TMP-OPR-DESC. PROCEDURE DIVISION. * Contained-Description構造体からパラメタ構造体の抽出 SET ADDRESS OF TMP-DESC TO DESCRIPTION. MOVE IDL-VALUE OF TMP-DESC TO PARAM-ANY. * パラメタ情報の抽出 SET ADDRESS OF TMP-OPR-DESC TO ANY-VALUE OF PARAM-ANY. MOVE PARAMETERS OF TMP-OPR-DESC TO PARAMS. MOVE LENGTH OF PARAMS TO NUM. * リストオブジェクトの生成 CALL "CORBA-ORB-CREATE-LIST" USING ORB NUM ARG-LIST ENV RET-VAL.
(2)パラメタリストの設定
CORBA-NVLIST-ADD-ITEMメソッドにより、サーバアプリケーションに渡すパラメタをリストオブジェクトに設定します。パラメタとして、CORBA-NVLISTオブジェクトリファレンス、サーバアプリケーションのパラメタの名前、型、値、および長さを設定します。
DATA DIVISION. WORKING-STORAGE SECTION. 01 01 STRING-POINTER USAGE POINTER. 01 COPY TYPECODE IN CORBA REPLACING CORBA-TYPECODE BY TMP-TYPE. 01 01 PARAM-POINTER USAGE POINTER. 01 COPY FLAGS IN CORBA REPLACING CORBA-FLAGS BY FLAG. 01 COPY ULONG IN CORBA REPLACING CORBA-UNSIGNED-LONG BY RET-VAL. PROCEDURE DIVISION. MOVE FUNCTION ADDR(PARAMS) TO SEQ-POINTER. MOVE "in_p" TO STR-BUF. MOVE FUNCTION LENG (STR-BUF) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING STRING-POINTER STRING-LENGTH STR-BUF. MOVE FUNCTION LENG (TC-LONG) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TEMP-BUF STRING-LENGTH TC-LONG. CALL "CORBA-ORB-TYPECODE-FROM-CGEN-TC" USING TEMP-BUF TMP-TYPE. CALL "CORBA-FREE" USING TEMP-BUF. MOVE 1234 TO IN-P. MOVE FUNCTION ADDR( IN-P ) TO PARAM-POINTER. MOVE LSIZE OF TMPDATA TO NUM. SET CORBA-ARG-IN OF FLAG TO TRUE. CALL "CORBA-NVLIST-ADD-ITEM" USING ARG-LIST STRING-POINTER TMP-TYPE PARAM-POINTER NUM FLAG ENV RET-VAL.