sysLib.convert() システム関数は、EBCDIC 形式 (ホスト) と ASCII 形式 (ワークステーション) の間でデータを変換したり、 単一の形式におけるコード・ページの変換を実行したりします。
sysLib.convert(
target ANY inOut,
[direction ConvertDirection in,
conversionTable STRING in] )
可変長レコードは、現行レコードの長さの部分のみが変換されます。現行レコードの長さは、レコードからの numElementsItem を使用して計算されるか、レコードの lengthItem から設定されます。 可変長レコードが数値フィールドまたは DBCS 文字の途中で終わる場合は、変換エラーが発生し、プログラムは終了します。
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