convert()

システム関数 SysLib.convert は、EBCDIC 形式 (ホスト) と ASCII 形式 (ワークステーション) の間でデータを変換したり、または単一の形式内でコード・ページの変換を実行します。SysLib.convert は、関数呼び出し文の中で関数名として使用することができます。

  SysLib.convert(
    target anyFixedItemOrRecordOrFormVariable inout,
    direction enumerationConversionDirection in,
    conversionTable CHAR(8) in)
target
変換対象の形式を持つレコード、データ項目、または書式の名前。 データは、ターゲット・オブジェクト内の最低レベルの項目 (副構造のない項目) に関する項目定義に基づいて変換されます。

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

direction
変換の方向。有効な値は "R" および "L" のみです (引用符を含む)。conversionTable が指定されている場合には必須、それ以外の場合はオプションです。
"R"
デフォルト値。データはリモート形式であると見なされ、ローカル形式に変換されます。
"L"
データはローカル形式であると見なされ、(変換テーブルでの定義に従って) リモート形式に変換されます。
conversionTable
データ変換に使われる変換テーブルの名前を指定するデータ項目またはリテラル (8 文字、オプション)。デフォルト値は、プログラム生成時に指定された各国語コードに関連付けられた変換テーブルです。

定義に関する考慮事項

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

Record RecordA
   record_type char(3);
   item1 char(20); 
end

Record RecordB
   record_type char(3);
   item2 bigint;
   item3 decimal(7);
   item4 char(8); 
end

Program ProgramX type basicProgram
   myRecordA RecordA;
   myRecordB RecordB {redefines = "myRecordA"};
   myConvTable char(8);
   
   function main();
      myConvTable = "ELACNENU"; // conversion table for US English
      if (myRecordA.record_type == "00A")
         SysLib.convert(myRecordA, "L", myConvTable);
      else;
         SysLib.convert(myRecordB, "L", myConvTable);
      end
     call ProgramY myRecordA;
   end
end

関連する概念
EGL 関数の構文図

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.