ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

6.9 any型、sequence型のリリースフラグ

  可変長データは、データをクライアントへ返却後、スケルトン中で自動的に解放します。
  そのため、解放したくないデータについては、そのデータをどこか別の領域に複写しておく必要があります。文字列(string)を例に説明します。



  しかし、any、sequenceのような複雑な型の場合には、コピーする処理が複雑なため、リリースフラグを設定し、解放する/しないを設定できるようになっています。
  リリースフラグの設定方法について述べます。

変数型

設定方法

any

CORBA-ANY-SET-RELEASEを使用。デフォルトはCORBA-FALSE-VALUE(注)
例)CALL "CORBA-ANY-ALLOC" USING
          ANY-VAL.
    CALL "CORBA-ANY-SET-RELEASE" USING
          ANY-POINTER
          REL-FLAG.

sequence

CORBA-SEQUENCE-SET-RELEASEを使用。デフォルトはCORBA-FALSE-VALUE(注)
例)struct sequence<long> data;
    ->
    CALL "CORBA-DATA-ALLOC" USING
          SEQ-POINTER.
    CALL "CORBA-SEQUENCE-SET-RELEASE" USING
          SEQ-POINTER
          REL-FLAG.

) CORBA-TRUE-VALUEのとき解放されます。CORBA-FALSE-VALUEのときは解放されません。