| Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]()
|
| 第8章 アプリケーションの開発(OOCOBOL) | > 8.8 データ型に対するマッピング |
IDL言語で固定小数点型fixedを指定した場合、数字項目(PICTURE句)でデータ宣言します。
有効桁数と小数点位置による数字項目の定義形式を以下に示します。
// fixed<digits,scale> とした場合 (digits=有効桁数,scale=小数点位置) typedef fixed <10,2> fixed1; // digits > scale > 0 のとき typedef fixed <2,10> fixed2; // 0 < digits < scale のとき typedef fixed <10,10> fixed3; // digits = scale のとき typedef fixed <10,0> fixed4; // scale = 0 のとき typedef fixed <10,-2> fixed5; // scale < 0 のとき
01 FIXED1 PIC S9(8)V9(2) PACKED-DECIMAL. 01 FIXED2 PIC SVP(8)9(2) PACKED-DECIMAL. 01 FIXED3 PIC SV9(10) PACKED-DECIMAL. 01 FIXED4 PIC S9(10) PACKED-DECIMAL. 01 FIXED5 PIC S9(10)P(2) PACKED-DECIMAL.
以降では、以下のIDL定義例をもとに説明します。
module ODsample {
typedef fixed <10,3> fixed0;
interface fixedtest {
fixed0 op1(
in fixed <5,10> fixed1,
out fixed <10,-3> fixed2,
inout fixed <10,10> fixed3 );
};
};
* データ型宣言(固定小数点)
01 FIXED0 PIC S9(7)V9(3) PACKED-DECIMAL.
クライアントアプリケーション例を以下に示します。
IDENTIFICATION DIVISION.
PROGRAM-ID. "CLIENT-MAIN".
*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
COPY CORBA--REP.
COPY COSNAMING--REP.
COPY SIMPLE--REP.
.
SPECIAL-NAMES.
SYMBOLIC CONSTANT
COPY CORBA--CONST.
COPY COSNAMING--CONST.
COPY SIMPLE--CONST.
.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CORBA--COPY.
COPY COSNAMING--COPY.
COPY SIMPLE--COPY.
*
01 ORB USAGE OBJECT REFERENCE CORBA-ORB.
01 OBJ USAGE OBJECT REFERENCE CORBA-OBJECT.
01 NAMING-CONTEXT USAGE OBJECT REFERENCE COSNAMING-NAMINGCONTEXT.
01 NAME TYPE COSNAMING-NAME.
01 NAME-COMPONENT USAGE OBJECT REFERENCE COSNAMING-NAMECOMPONENT.
01 NAME-ID USAGE OBJECT REFERENCE CORBA-STRING.
01 NAME-KIND USAGE OBJECT REFERENCE CORBA-STRING.
*
01 EXCEPTION-ID USAGE OBJECT REFERENCE CORBA-STRING.
01 EXCEPTION-ID-VALUE PIC X(50).
01 API-NAME PIC X(50).
*
01 TARGET-OBJ USAGE OBJECT REFERENCE ODSAMPLE-FIXEDTEST.
01 FIXED0 TYPE ODSAMPLE-FIXED0.
01 FIXED1 PIC SVP(5)9(5) PACKED-DECIMAL.
01 FIXED2 PIC S9(10)P(3) PACKED-DECIMAL.
01 FIXED3 PIC SV9(10) PACKED-DECIMAL.
*
PROCEDURE DIVISION.
*
DECLARATIVES.
*
OTHER-ERROR SECTION.
USE EXCEPTION CORBA-EXCEPTION.
DISPLAY "CORBA::Exception: " API-NAME.
SET EXCEPTION-ID TO IDL-ID OF EXCEPTION-OBJECT AS CORBA-EXCEPTION.
INVOKE EXCEPTION-ID "GET-VALUE" RETURNING EXCEPTION-ID-VALUE.
DISPLAY " Exception-id: " EXCEPTION-ID-VALUE.
EXIT PROGRAM.
END-OTHER-ERR.
*
END DECLARATIVES.
*
MAIN SECTION.
*
MOVE "CORBA::ORB_init" TO API-NAME.
INVOKE CORBA "ORB_INIT"
USING "simple_c"
FJ-OM_ORBID
RETURNING ORB.
*
MOVE "CORBA::ORB::resolve_initial_references" TO API-NAME.
INVOKE ORB "RESOLVE_INITIAL_REFERENCES"
USING CORBA-ORB-OBJECTID_NAMESERVICE
RETURNING OBJ.
*
INVOKE COSNAMING-NAMINGCONTEXT "NARROW"
USING OBJ
RETURNING NAMING-CONTEXT.
*
INVOKE CORBA-STRING "NEW-WITH-VALUE"
USING "ODsample::fixedtest"
RETURNING NAME-ID.
*
INVOKE CORBA-STRING "NEW-WITH-VALUE"
USING " "
RETURNING NAME-KIND.
*
INVOKE COSNAMING-NAMECOMPONENT "NEW"
RETURNING NAME-COMPONENT.
*
SET IDL-ID OF NAME-COMPONENT TO NAME-ID.
SET KIND OF NAME-COMPONENT TO NAME-KIND.
*
INVOKE SEQUENCE-NAMECOMPONENT-001 "NEW-WITH-LENGTH"
USING 1
RETURNING NAME.
*
INVOKE NAME "SET-VALUE"
USING 1
NAME-COMPONENT.
*
MOVE "CosNaming::NamingContext::resolve" TO API-NAME.
INVOKE NAMING-CONTEXT "RESOLVE"
USING NAME
RETURNING OBJ.
*
INVOKE ODSAMPLE-FIXEDTEST "NARROW"
USING OBJ
RETURNING TARGET-OBJ.
*
* ODsample::samplefix
*
* SET IN PARAMETER
MOVE 0. 23 TO FIXED1.
*
* SET INOUT PARAMETER
MOVE 0. 33 TO FIXED3.
*
MOVE "ODdemo::fixedtest::op1" TO API-NAME.
INVOKE TARGET-OBJ "OP1"
USING FIXED1
FIXED2
FIXED3
RETURNING FIXED0.
*
STOP RUN.
*
END-MAIN.
*
END PROGRAM "CLIENT-MAIN".
サーバアプリケーション例を以下に示します。
CLASS-ID. ODSAMPLE-FIXEDTEST-IMPL
INHERITS ODSAMPLE-FIXEDTEST.
*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
COPY CORBA--REP.
COPY SIMPLE--REP.
.
SPECIAL-NAMES.
SYMBOLIC CONSTANT
COPY CORBA--CONST.
COPY SIMPLE--CONST.
.
*
OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY CORBA--COPY.
COPY SIMPLE--COPY.
*
PROCEDURE DIVISION.
*
METHOD-ID. OP1 OVERRIDE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STR-WORK USAGE OBJECT REFERENCE CORBA-STRING.
LINKAGE SECTION.
01 FIXED0 TYPE ODSAMPLE-FIXED0.
01 FIXED1 PIC SVP(5)9(5) PACKED-DECIMAL.
01 FIXED2 PIC S9(10)P(3) PACKED-DECIMAL.
01 FIXED3 PIC SV9(10) PACKED-DECIMAL.
*
PROCEDURE DIVISION
USING FIXED1
FIXED2
FIXED3
RETURNING FIXED0
RAISING CORBA-SYSTEMEXCEPTION.
*
* SET OUT PARAMETER
MOVE 0 TO FIXED2.
*
* SET INOUT PARAMETER
MOVE 0. TO FIXED3.
*
* SET RESULT
MOVE 200.33 TO FIXED0.
*
END METHOD OP1.
*
END OBJECT.
*
END CLASS ODSAMPLE-FIXEDTEST-IMPL.
目次
索引
![]()
|