如何用cobol显示国家字段?

如何用cobol显示国家字段?,cobol,Cobol,我喜欢在我编写的程序的测试驱动程序中显示,看看发生了什么。在我的例子中,我正在使用一个包含picn字段的copybook。 我想显示以下字段:05 MESSAGE-TEXT PIC N(20) 正常的在复印机中显示消息文本使我无法阅读。我是否必须定义一个新字段,例如PIC-X-field,使用将函数DISPLAY-OF(COPYBOOK中的消息文本)移动到PIC-X-field,然后显示该PIC-X-field?还是有更简单的方法 当您在输出中查看十六进制的国家(PICN)字段时,您看到的乱七八

我喜欢在我编写的程序的测试驱动程序中显示,看看发生了什么。在我的例子中,我正在使用一个包含picn字段的copybook。 我想显示以下字段:
05 MESSAGE-TEXT PIC N(20)


正常的
在复印机中显示消息文本
使我无法阅读。我是否必须定义一个新字段,例如PIC-X-field,使用
将函数DISPLAY-OF(COPYBOOK中的消息文本)移动到PIC-X-field
,然后显示该PIC-X-field?还是有更简单的方法

当您在输出中查看十六进制的国家(PICN)字段时,您看到的乱七八糟的内容是该国家字段的十六进制值。它是该字段的UTF-8值。对于“普通”字符,这将是一个字节的二进制零,后跟字符的“ASCII”代码

例如,大写字母“A”将是X'0041'

在使用国家字段时,通常不必使用函数National-OF进行转换。例如,对于picx到picn的简单移动,编译器知道您想要什么,并生成实现转换所需的代码

转换不是自动的一个地方是<代码>显示

但是,您可以在显示器中使用函数DISPLAY-OF(…)来获取输出

下面是一个简短的程序,说明了上述内容(同时还显示了一个参考修改函数的另一个用法,带显示):

输出为:

04/13/16 09.28.21                                                        
2016041309282183+0000                                                    
DATE COMPILED (YYYY-MM-DD): 2016-04-13 TIME: 09:28:21 OFFSET TO GMT:+0000
THE NATIONAL, NATIVE>  <                                                 
THE DISPLAY, NATIVE >?<                                                  
THE DISPLAY-OF FUNC >A<                                                  
THE NATIONAL, NATIVE>  <                                                 
THE DISPLAY, NATIVE >C<                                                  
THE DISPLAY-OF FUNC >C<                                                  
THE NATIONAL, NATIVE>  <                                                 
THE DISPLAY, NATIVE >D<                                                  
THE DISPLAY-OF FUNC >D<
04/13/16 09.28.21
2016041309282183+0000                                                    
编制日期(YYYY-MM-DD):2016-04-13时间:09:28:21 GMT偏移量:+0000
国家,本地><
显示,本机>?<
FUNC>A<
国家,本地><
显示,本机>C<
FUNC>C<
国家,本地><
显示,本机>D<
FUNC>D的显示<
以十六进制表示国家:

THE NATIONAL, NATIVE>  <
ECC4DCECDDCD64DCECEC6044
385051396513B0513955E01C
 -----------------------
THE NATIONAL, NATIVE>  <
ECC4DCECDDCD64DCECEC6044
385051396513B0513955E03C
 -----------------------
THE NATIONAL, NATIVE>  <
ECC4DCECDDCD64DCECEC6044
385051396513B0513955E04C
国家、本地人><
ECC4DCDDCD64DCECEC6044
385051396513B0513955E01C
-----------------------
国家,本地人><
ECC4DCDDCD64DCECEC6044
385051396513B0513955E03C
-----------------------
国家,本地人><
ECC4DCDDCD64DCECEC6044
385051396513B0513955E04C
注意,编译时函数的输出可能不同,我从未将其与COBOL for OS/390和VM一起使用过。此外,日期的格式可能不同,这是一个安装选项


另外,函数DISPLAY-OF(和NATIONAL-OF)不能作为第二个参数使用代码页。如果您碰巧要求National使用不同于默认值的代码页(并且无法/不希望将代码页指定为编译器选项,或者在同一程序中需要多个代码页输出),则可以在函数中指定代码页以获得正确的输出。在这些类型的情况下,您不能使用移动等的默认转换,但必须通过函数显式转换。

哈哈,是的,对不起,我应该澄清一下:我无法阅读它,当我打开十六进制时,它会显示很多胡言乱语。我用IN来指定copybook中使用的字段。
04/13/16 09.28.21                                                        
2016041309282183+0000                                                    
DATE COMPILED (YYYY-MM-DD): 2016-04-13 TIME: 09:28:21 OFFSET TO GMT:+0000
THE NATIONAL, NATIVE>  <                                                 
THE DISPLAY, NATIVE >?<                                                  
THE DISPLAY-OF FUNC >A<                                                  
THE NATIONAL, NATIVE>  <                                                 
THE DISPLAY, NATIVE >C<                                                  
THE DISPLAY-OF FUNC >C<                                                  
THE NATIONAL, NATIVE>  <                                                 
THE DISPLAY, NATIVE >D<                                                  
THE DISPLAY-OF FUNC >D<
THE NATIONAL, NATIVE>  <
ECC4DCECDDCD64DCECEC6044
385051396513B0513955E01C
 -----------------------
THE NATIONAL, NATIVE>  <
ECC4DCECDDCD64DCECEC6044
385051396513B0513955E03C
 -----------------------
THE NATIONAL, NATIVE>  <
ECC4DCECDDCD64DCECEC6044
385051396513B0513955E04C