convert()

sysLib.convert() システム関数は、EBCDIC 形式 (ホスト) と ASCII 形式 (ワークステーション) の間でデータを変換したり、 単一の形式におけるコード・ページの変換を実行したりします。

構文

  sysLib.convert(
    target ANY inOut,
    [direction ConvertDirection in,
    conversionTable STRING in] )
target
変換対象のデータを収容する変数の名前。データは、ターゲット・オブジェクト内の最低レベルのフィールド (副構造のないフィールド) に関するフィールド定義に基づいて 変換されます。

可変長レコードは、現行レコードの長さの部分のみが変換されます。現行レコードの長さは、レコードからの numElementsItem を使用して計算されるか、レコードの lengthItem から設定されます。 可変長レコードが数値フィールドまたは DBCS 文字の途中で終わる場合は、変換エラーが発生し、プログラムは終了します。

direction
変換の方向。 conversionTable が指定された場合、direction は必須ですが、それ以外ではオプションです。 このパラメーターは、ConvertDirection 列挙型からの値を使用します。
remote
デフォルト値です。 データはリモート形式であると見なされ、ローカル形式に変換されます。
ローカル
データはローカル形式であると見なされ、(変換テーブルでの定義に従って) リモート形式に変換されます。
conversionTable
データ変換用の変換テーブルの名前を指定する変数またはリテラル。 デフォルト値は、プログラム生成時に targetNLS ビルド記述子オプションの各国語コードに関連付けられた変換テーブルです。

定義に関する考慮事項

リンケージ・オプション・パーツを使用して、以下のアクションを実行できます。
  • 自動データ変換機構がリモート呼び出しのために生成する要求
  • リモート非同期トランザクションの開始
  • リモート・ファイルへのアクセス
自動変換は、変換対象の引数に定義されているデータ構造を常に使用して行われます。引数に複数の形式が存在する場合は、自動変換を要求しないでください。 代わりに、引数の現行値を正しくマップするようにレコード宣言を再定義して、sysLib.convert() を明示的に呼び出すプログラムをコーディングしてください。

Record OrderRec
   10 record_type char(3);
   10 productName char(20); 
end 

Record NewOrderRec
   10 record_type char(3);
   10 productNumber bigint;
   10 unitCost decimal(7);
   10 skuNum char(8); 
end

Program ProgramX type basicProgram
   myOrderRec OrderRec;
   myNewOrderRec NewOrderRec {redefines = "myOrderRec"};
   myConvTable char(8);
   
   function main();
      myConvTable = "CSOX850"; // 米国英語 EBCDIC 用の変換テーブル
      if (myOrderRec.record_type == "00A")
         sysLib.convert(myOrderRec, ConvertDirection.local, myConvTable);
      else
         sysLib.convert(myNewOrderRec, ConvertDirection.local, myConvTable);
      end
     call ProgramY myOrderRec;
   end 
end

フィードバック