请问在COBOL中关键字REDEFINES的用法是什么?
我不明白手册的定义。

以下代码的含义是什么?

 01 WS_CHARGE_TXT_8X                             PIC X(08) VALUE "10000000".
 01 WS_CHARGE_NUM_8 REDEFINES WS_CHARGE_TXT_8X.
     05 WS_CHARGE_8                               PIC 9(05)V9(03).


谢谢!

最佳答案

基本上,重新定义会重用空间,因此在上面的示例中,WS_CHARGE_TXT_8XWS_CHARGE_8将指向相同的内存块。这样,您就可以以不同的方式查看一个内存块,在这种情况下,该变量可以视为文本PIC X和带符号的数字PIC S9。变量名中的-8X到-8只是风格上的指示变量正在被其他程序员重铸为另一种类型或格式。

在上面的例子中


WS_CHARGE_TXT_8X的值为
“ 10000000”
WS_CHARGE_8的值为
10000.000。


如果将123.456移动到WS_CHARGE_8,则WS_CHARGE_TXT_8X的值应为“ 00123456”。

一个更有用的例子是

  03 Birth-Date-YYYYMMDD    pic 9(8).
  03 filler redefines Birth-Date-YYYYMMDD.
     05 Birth-Date-YYYY     pic 9(4).
     05 Birth-Date-MM       pic 99.
     05 Birth-Date-DD       pic 99.


在这种情况下,您可以分别访问整个日期Birth-Date-YYYYMMDD或年/月/日(Birth-Date-YYYY等)。

关于cobol - COBOL关键字REDEFINES,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5269899/

10-12 04:05
查看更多