関数のカスタマイズ例

ここでは、移行済み DB2 データベースが、数学の組み込み関数である atanh (これは、SQL Server データベースではサポートされていません) を使用するシナリオを例として示します。このシナリオでは、Microsoft SQL Server Management Studio を使用して SQL Server データベースのデフォルト dbo スキーマに関数を作成し、HCOSS を使用して DB2 関数を新規作成した SQL Server のユーザー定義関数にマップします。

  1. SQL Server Management Studio で、次の Transact-SQL を実行し、DB2 の atanh 関数に相当するユーザー定義関数を SQL Server データベースに作成します。
    create function atanh (@in float) returns float
    begin
            return log((1 + @in) / (1 - @in)) / 2
    end
    go
    
  2. dbo スキーマを使用して、SQL Server Management Studio の関数を修飾します。これには、次を実行します。
    declare @x float = 0.75
    select dbo.atanh(@x)
  3. 新しく定義した dbo.atanh SQL Server 関数を DB2 atanh にマップします。
    1. HCOSS インターフェイスで [Customize SQL Name Mappings] をクリックし、ページの一番下の空白行に次の内容を追加します。
      • [DB2 Function/Special Register] 列に、atanh と入力します。
      • [SQL Server Equivalent] 列に、dbo.atanh と入力します。
      • [Is Function] チェックボックスをオンにします。
    2. [Save] をクリックします。
  4. DIALECT 指令を MAINFRAME に設定し、アプリケーションをビルドします。
       $set sql(targetdb=mssqlserver db=HCODemo dialect=mainframe, init)
    identification division.
    program-id. Program1.
    
    environment division.
    configuration section.
    
    data division.
    working-storage section.
    
    exec sql include sqlca end-exec.
    
    01  mfsqlmessagetext    pic x(200).
    
    01  x           comp-2.
    
    01  atanh       comp-2.
    01  digits      comp-2
    
    procedure division.
    
    move 0.25 to x
    exec sql
    select atanh(:x)
    into :atanh
    end-exec
    
    display atanh
    
    goback.