sysLib.convert

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


sysLib.convert 構文図
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
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.(C) Copyright IBM Japan 2005.