EBCDIC から ANSI へのセグメントの変換

Mainframe Subsystem Support には、IMSDBUEA というセグメント出口ルーチンが含まれています。このルーチンを使用すると、セグメントを EBCDIC から ANSI に変換できます。このルーチンは、次の 3 つの方法で使用できます。

  • アンロード時に、出力を ANSI で書き込みます。
  • ロード時に、ファイルを変換してからロードします。
  • セグメントの追加時に、セグメントを変換してから追加します。

IMSDBUEA は、セグメント レイアウト ファイル (.slf) を使用して、各セグメントのどのフィールドを変換する必要があるかを判別します。そのため、IMSDBUEA を使用する前に、IMS データベース エディタを使用して .slf ファイルを作成しておく必要があります。.slf ファイルは ES_IMSDAT 環境変数で指定したディレクトリに配置する必要がありますが、ES_IMSDAT 環境変数が設定されていない場合は、.slf ファイルを現在のディレクトリに格納する必要があります。

IMSDBUEA の使用方法は、データベース管理ユーティリティまたはコマンド ラインのどちらを使用しているかによって、以下のように異なります。

  • データベース管理ユーティリティを使用している場合は、セグメントの追加時またはデータベースのロード/アンロード時に SEGEXIT フィールドで IMSDBUEA を指定します。
  • コマンド ラインを使用している場合は、パラメーター segexit=imsdbuea を追加します。
IMSDBUEA でユーザーのセグメント出口ルーチンのいずれかを呼び出すことはできません。ただし、EBCDIC から ANSI に変換する前に何らかの追加処理を実行する必要がある場合は、必要な処理を実行してから IMSDBUEA を呼び出す独自のセグメント出口ルーチンを記述できます。実質的にエントリ ポイントになるこの出口をプログラムから直接呼び出すには、最初にその親プログラム (MFIMSDBU) をロードして DBUPARMS.CPY を使用します。次に例を示します。
       PROCEDURE DIVISION.                                              
      *=========================================================*       

***** Load the MFIMSDBU module first.

     set ws-ptr to entry "MFIMSDBU"
     if ws-ptr = null
         display "Cannot Load MFIMSDBU DLL"
         display "Need to Die gracefully."
         stop run
      end-if


           MOVE 02                     TO SEGEXIT-VERSION       
           MOVE 00                     TO SEGEXIT-FUNC       
           MOVE 'P155'                 TO SEGEXIT-DBD       
           MOVE 'P155SEG'              TO SEGEXIT-SEGM       
           MOVE 10                     TO SEGEXIT-SEGM-LTH       
           MOVE 10                     TO SEGEXIT-SEGM-MAX-LTH       
           MOVE P155SEG                TO SEGEXIT-DATA       
           
           CALL 'IMSDBUEA' USING SEGEXIT-PARMS
                                 SEGEXIT-DATA.      
           
mftech     MOVE 02                     TO SEGEXIT-VERSION
mftech     MOVE 01                     TO SEGEXIT-FUNC
mftech     MOVE 'P155'                 TO SEGEXIT-DBD
mftech     MOVE 'P155SEG'              TO SEGEXIT-SEGM
mftech     MOVE 10                     TO SEGEXIT-SEGM-LTH
mftech     MOVE 10                     TO SEGEXIT-SEGM-MAX-LTH
mftech     MOVE P155SEG                TO SEGEXIT-DATA
mftech
mftech     CALL 'IMSDBUEA' USING SEGEXIT-PARMS
mftech                           SEGEXIT-DATA.
注:
  • IMSDBUEA という名前の別のセグメント出口を作成することはできません。
  • IMSDBUEA は、COBOL プログラムの _CODESET を使用して変換を実行します。デフォルトでは、_CODESET は、ユーザーの PC で使用されている EBCDIC および ANSI コード ページを使用します。別のコード ページを使用して変換する必要がある場合は、codecomp ユーティリティを使用して、カスタマイズしたマッピング テーブルを作成してください。詳細については、「Codecomp ユーティリティ」、および「データ ファイルの変換」トピックの「EBCDIC と ASCII 間の変換」セクションを参照してください。