Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Client for .NET Framework 使用の手引


4.4.2 バイナリデータを使用する場合のCallメソッドの使用例

バイナリデータを使用する場合のCallメソッドの使用例を次に示します。

この例で呼び出すSPPのサービスの情報は次のとおりです。

〈この項の構成〉

(1) Callメソッドの使用例(CUP.NET,C#の場合(リモートAPI機能未使用時))

using System;
using Hitachi.OpenTP1;
using Hitachi.OpenTP1.Client;
 
namespace MyCompany
{
  public class MyApplication1
  {
    …
    public static void Main(string[] args) 
    {
      try {
        TP1Client clt = new TP1Client();  // TP1Clientの生成
        clt.OpenRpc("TP1Host1");          // RPCオープン
 
        int    maxInLen = 512;      // 入力データ格納領域長
        int    maxOutLen = 512;     // 応答データ格納領域長
        int    inLen = 0;           // 入力データ長
        int    outLen = maxOutLen;  // 応答データ最大長
        byte[] inData;              // 入力データ格納領域
        byte[] outData;             // 応答データ格納領域
        String inStr = "Say Hello to OpenTP1!";  // 入力データ
        String outStr = null;                    // 応答データ
        byte[] inDataTemp;
 
        inData = new byte[maxInLen];
        System.Text.Encoding enc = System.Text.Encoding.Default;
        inDataTemp = enc.GetBytes(inStr);
        System.Array.Copy(          // 入力データの設定
            inDataTemp, 0, inData, 0, inDataTemp.Length);
        inLen += inDataTemp.Length;
        outData = new byte[maxOutLen];
        // RPC実行
        clt.Call("SVGRP1", "SERV1", inData, inLen, 
            outData, ref outLen, TP1ClientFlags.DCNOFLAGS);
        outStr = enc.GetString(outData, 0, outLen);
 
        clt.CloseRpc();                   // RPCクローズ
      } catch (TP1ClientException exp) {
        // Client .NETが検知したエラー
      } catch (TP1Exception exp) {
        // Client .NET(OpenTP1共通クラス)が検知したエラー
      } catch (Exception exp) {
        // 予期しない例外
      }
    }
  }
}

(2) Callメソッドの使用例(CUP.NET,Visual Basicの場合(リモートAPI機能未使用時))

Imports System
Imports Hitachi.OpenTP1
Imports Hitachi.OpenTP1.Client
 
Namespace MyCompany
  Public Class MyApplication1
    …
    Public Shared Sub Main(ByVal args() As String)
      Dim clt As TP1Client
      Dim maxInLen As Integer = 512       ' 入力データ格納領域長
      Dim maxOutLen As Integer = 512      ' 応答データ格納領域長
      Dim inLen As Integer                ' 入力データ長
      Dim outLen As Integer               ' 応答データ最大長
      Dim inData(maxInLen - 1) As Byte    ' 入力データ格納領域
      Dim outData(maxOutLen - 1) As Byte  ' 応答データ格納領域
      Dim inStr As String                 ' 入力データ
      Dim outStr As String                ' 応答データ
      Dim inDataTemp() As Byte
      Dim enc As System.Text.Encoding
      Try
        clt = New TP1Client()             ' TP1Clientの生成
        clt.OpenRpc("TP1Host1")           ' RPCオープン
 
        inLen = 0
        outLen = maxOutLen
        inStr = "Say Hello to OpenTP1!"
        enc = System.Text.Encoding.Default
        inDataTemp = enc.GetBytes(inStr)
        System.Array.Copy(inDataTemp, 0, inData,  _
            0, inDataTemp.Length)         ' 入力データの設定
        inLen += inDataTemp.Length
        ' RPC実行
        clt.Call("SVGRP1", "SERV1", inData, inLen,  _
            outData, outLen, TP1ClientFlags.DCNOFLAGS)
        outStr = enc.GetString(outData, 0, outLen)
 
        clt.CloseRpc()                    ' RPCクローズ
      Catch exp As TP1ClientException
        ' Client .NETが検知したエラー
      Catch exp As TP1Exception
        ' Client .NET(OpenTP1共通クラス)が検知したエラー
      Catch exp As Exception
        ' 予期しない例外
      End Try
    End Sub
  End Class
End Namespace