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 ビルド記述子オプションの各国語コードに関連付けられた変換テーブルです。
定義に関する考慮事項
リンケージ・オプション・パーツを使用して、以下のアクションを実行できます。
- 自動データ変換機構がリモート呼び出しのために生成する要求
- リモート非同期トランザクションの開始
- リモート・ファイルへのアクセス
例
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