COBOL85インタフェース
OTMの各機能はオブジェクト指向プログラミングのクラスとして実現されています。そのため,C++およびJavaでは,各機能を使用するアプリケーションプログラミングインタフェースはクラスのメソッドとして提供されます。一方,COBOL85インタフェースでは,アプリケーションプログラミングインタフェースは副プログラムとして提供されます。
副プログラムによるクラスの使用
C++またはJavaでは,「TSCxxxクラスのyyyメソッド」の形式で機能が提供されます。COBOL85インタフェースでは,多くの場合,「TSCxxx-yyy副プログラム」の形式で機能が提供されます。幾つかの機能は,「TSCaaa-bbb副プログラム」の形式で提供されます。この場合,aaaおよびbbbは,xxxおよびyyyと異なる文字列です。
TSCxxxクラスのインスタンスを生成する副プログラムとしてTSCxxx-NEWが提供されます。また,インスタンスを削除する副プログラムとしてTSCxxx-DELETEが提供されます。
TSCxxx-yyyの第1引数にTSCxxx-NEWの戻り値を指定することによって,該当するインスタンスに対するメソッド呼び出しと同じ働きをします。
例外処理
副プログラム実行中に例外が発生したかどうかを検知するために,呼び出し元では例外情報集団項目を利用します。例外情報集団項目は,各副プログラムの最終引数です。例外情報集団項目を利用することで,ユーザ定義IDLインタフェースのオペレーション呼び出し時にユーザ例外が発生したかどうかも検知できます。
ユーザ例外を発生しないオペレーションを呼び出した場合でも,システム例外が発生することがあります。そのため,例外情報集団項目によって例外の有無を必ず確認してください。詳細は,この章の「TSCSystemException(COBOL)」を参照してください。
文字列の扱い
COBOL85インタフェースとアプリケーションプログラムとのインタフェースで使用される文字列は,16進表示の(00)16で表される文字で終了する文字列です。そこで,COBOL adapter for TPBrokerで提供される文字列操作ラッパー関数を使用して,次のように処理する必要があります。
ユーザがCOBOL adapter for TPBrokerの文字列操作ラッパー関数を使用して得た,16進表示の(00)16で表される文字で終了する文字列の領域は,特に断りがないかぎり,ユーザの責任で解放してください。また,ユーザが確保したのではない領域は,特に断りがないかぎりユーザが解放してはいけません。ただし,ユーザオペレーション引数のメモリ管理は,以降に示す規則に従ってください。なお,文字列領域の解放にはCOBOL adapter for TPBrokerのラッパー関数を使用してください。文字列操作ラッパー関数の使用方法については,マニュアル「COBOL adapter for TPBroker ユーザーズガイド」を参照してください。
ユーザオペレーション引数のメモリ管理規則
OTMのCOBOL85インタフェースでは,ユーザ定義IDLインタフェースのオペレーション引数のうち,可変長の引数(string型およびsequence型)は,COBOL adapter for TPBrokerのラッパー関数を使用して領域を取得および解放する必要があります。領域の取得および解放の規則を次の表に示します。
表7-1 領域の取得および解放(呼び出し元)
領域 | 取得者 | 解放者 |
---|---|---|
in属性 | ユーザ | ユーザ |
out属性 | OTM | ユーザ |
inout属性の入力引数 | ユーザ | OTM(必要に応じて) |
inout属性の出力引数 | OTM(必要に応じて) | ユーザ |
戻り値 | OTM | ユーザ |
表7-2 領域の取得および解放(呼び出し先)
領域 | 取得者 | 解放者 |
---|---|---|
in属性 | OTM | OTM |
out属性 | ユーザ | OTM |
inout属性の入力引数 | OTM | ユーザ(必要に応じて) |
inout属性の出力引数 | ユーザ(必要に応じて) | OTM |
戻り値 | ユーザ | OTM |