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.