組み込みモジュールでは提供されない変換が必要なために独自のデータ変換モジュールを作成する場合のモジュールについて、次のとおりです。
linkage section. 01 lk-function pic x(3). *> PUT or GET 01 lk-len pic 9(5). *> len of lk-data 01 lk-data. *> data to translate 05 lk-bytes pic x(1) occurs 32767 times. procedure division using lk-function lk-len lk-data. ...
モジュールの目的が ASCII から EBCDIC への変換を実行することである場合、lk-function を「PUT」に設定する必要があります。EBCDIC から ASCII への変換を実行する場合は、lk-function を「GET」に設定する必要があります。
変換モジュールから戻ったら、lk-len は返されたデータの長さを保持する必要があります。シングルバイト文字セットの場合、これらの値は変更されませんが、ダブルバイト文字セットの場合は長さが異なることがあります。MFFTP は戻り値を使用して出力レコードを書き込みます。
Micro Focus 製品はすでに多くの異なるコードセットをサポートしていますが、Micro Focus 開発製品で、追加のコードセットをインストールできます。開発ドキュメントの「コードセットの変換」セクションの「Codecomp ユーティリティ」を参照してください。MFFTP で変換用に作成するモジュールは、提供されているサンプルの CSnnnn.cbl プログラムを使用して説明されているモジュールに似ています (「文字セット変換をカスタマイズするには」を参照)。大きな違いの 1 つは、上記のインターフェイスは MFFTP からのみ呼び出されるため、「NOCANCEL」としてコンパイルしてはいけない、ということです。
専門のコードセット変換モジュールについて、より一般的な必要性があり、CSnnnn プログラムを作成する場合、MFFTP 変換モジュールをコーディングして、そのモジュールを呼び出すことができます。
変換モジュールは、使用されるジョブ ステップごとに MFFTP によって少なくとも 2 回呼び出されます。最初の 2 つの呼び出しで、「ラウンド トリップ」変換が機能することが確認されます。
次に、GET 呼び出しからの戻り値が PUT 呼び出しへの入力と同じであることを確認するために比較が行われます。モジュールがこのチェックに失敗すると、警告メッセージが発行され、MFFTP_TRANSLATE_SAFETY = OFF の設定が設定されていない限り、モジュールは使用されません。
モジュールへの 3 回目以降の呼び出しは、レコードごとのデータ セットの変換です。