File 使用COBOL将Unicode字符串写入文件

File 使用COBOL将Unicode字符串写入文件,file,unicode,cobol,utf-16,ebcdic,File,Unicode,Cobol,Utf 16,Ebcdic,我们正在更新运行在IBM大型机(z/OS)上的COBOL程序,以支持非拉丁字符 我正在努力理解COBOL如何处理定义为PICN的UTF-16字符 我需要将当前定义为PIC X的字段更新为PIC N。然后将该字段写入文件 例如: 01 RecordToWrite PIC X(20). 我知道picn需要的空间是picx的两倍。我不知道的是如何定义相应的picn字段 我猜COBOL会自行处理转换: 01 RecordToWrite PIC N(20). 但我真的不确定是不是那么简单 我可以简单地

我们正在更新运行在IBM大型机(z/OS)上的COBOL程序,以支持非拉丁字符

我正在努力理解COBOL如何处理定义为PICN的UTF-16字符

我需要将当前定义为PIC X的字段更新为PIC N。然后将该字段写入文件

例如:

01 RecordToWrite PIC X(20).
我知道picn需要的空间是picx的两倍。我不知道的是如何定义相应的picn字段

我猜COBOL会自行处理转换:

01 RecordToWrite PIC N(20).
但我真的不确定是不是那么简单

我可以简单地将旧字段定义为picn,而不必担心我的文件看起来仍然一样吗?我需要采取哪些措施?

您所在的领域:

01 RecordToWrite PIC N(20).
将消耗40个字节的20个字符。因此,您需要从X到N进行相应的调整


您可能还需要使用NATIONAL-of和DISPLAY-of函数将其转换为UTF-16或CCSID 1200。一旦您转换了数据,您就不需要再处理这些数据了,您的40字节/20字符PICN将像您以前的PICX字段一样工作——除非您必须与系统中未转换的部分进行对话。

试试看;看看发生了什么我通常会这么做。不幸的是,我们的开发环境还没有设置合适的测试数据,我们的过程在升级到更高的测试级别时非常严格。在我的一个程序中,我只使用了一个PICX字段,该字段的大小是我所需的双字节字符的两倍