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 間の変換』の節を参照してください。