带 V 和逗号的 COBOL PICTURE

COBOL PICTURE with V and Comma

我正在学习 open COBOL 的一些基础知识,这是我关于 PICTURE 的问题:

999V99 价值 12.4 显示“012.40”

我也期待 99,999V99 VALUE 12.4 产生一些合理的输出,但输出是“00,01240”。

99,999V99 价值 1234.56 还显示“01,23456”而不是我期望的“01,234.56”。

怎么了?从 1234.56 获取“01,234.56”的正确掩码是什么?

正确的掩码是99,999.99。看看评论中建议的 link Gilbert

Common mask characters 

    9 - 0 -> 9
    Z - 0 -> 9 + space for leading zero's
    V - Assumed decimal place not actually represented
    . - actual decimal place
    , - comma 

So
    Cobol definition           Display value
    ----------------           -------------
    99,999V99 VALUE 1234.56    01,23456 
    99,999.99 VALUE 1234.56    01,234.56 
    ZZ,ZZ9.99 VALUE 1234.56     1,234.56
    --,--9.99 VALUE 1234.56     1,234.56
    --,--9.99 VALUE -1234.56   -1,234.56
    ++,++9.99 VALUE 1234.56    +1,234.56

一旦您使用像 Z , . - + / 这样的字符,该字段就是 edited numeric 字段而不是 numeric 字段。某些编译器可能允许您在数值计算中使用 edited numeric,而其他编译器则不允许。 已编辑数字 用于显示值。

数字字段

数值字段定义如下,可用于数值计算

      03 num-1         pic s9(5)v99.
      03 num-2         pic s9(5)v99 comp.
      03 num-3         pic s9(5)v99 comp-3.