Cobol破折号令我困惑

时间:2011-09-26 09:12:07

标签: cobol

  

可能重复:
  cobol difference with Picture having a dash (-) and a having a X

我想要掌握Cobol并且在格式化数字时无法理解破折号。我有这个例子:

- 9

我对以下内容是否正确?
第一个破折号 - 如果数字为负数则放入破折号,否则不执行。
第二次破折号 - 我对此感到困惑。在开始时已经有一个短暂的指定是否为负面或正面。
9 - 数字数字(0-9)

一个例子就是好的。 :S

由于

2 个答案:

答案 0 :(得分:1)

来自stackoverflow:cobol-difference-with-picture-having-a-dash-and-a-having-a-x

  

短划线表示如果您有一个负数,则表示短划线   显示在数字旁边(左侧)。只有一个破折号   显示。如果数字为正数,则会显示每个空格   破折号。

答案 1 :(得分:1)

鉴于您previous question,我不确定您遇到了什么问题。但是让我们再试一次......

在COBOL中,数字显示字段可能包含各种类型的“标点符号”。这个“标点符号”在PICTURE子句中定义。您可以使用的“标点符号”类型的一些示例是:显式小数点,加号/减号,CR / DR指示符和thousnads分隔符(北美逗号)。有一套定义明确的规则可以确定PICTURE子句中可能出现的“标点符号”类型以及位置。此PICTURE CLAUSE编辑链接解释了如何构建(或读取)任何给定的PICTURE子句。

您和其他许多新手对COBOL有兴趣的一点是,COBOL中的数据定义指定了两种截然不同的有关数字显示数据的信息。一个是它可能持有的价值范围,另一个是如何 可以显示该值范围。您的示例:PICTURE --9告诉我有关数据项的两件事:1)值是-99到+99范围内的整数,以及2)显示此项将占用3个空格。如果数字为正数,则空格将出现在第一个非零数字之前。如果数字为负数,则减号将立即出现在第一个非零数字的左侧。请考虑以下COBOL DISPLAY语句:

 DISPLAY '>' DISP-NBR '<'

如果DISP-NBR有一个PICTURE子句:--9这就是各种值的显示方式。

  0 displays as: >  0<
 -1 displays as: > -1<
-11 displays as: >-11<
 10 displays as: > 10<

请注意,所有显示都需要3个字符位置。将始终显示至少1位数(由于PICTURE子句中的“9”),除此之外,不显示前导零。减号将仅显示负值。减号(如果显示)将显示在第一个显示数字的左侧。

现在回答您的具体问题:显示数字显示数据项所需的字符位置总数由PICTURE的长度决定。你有一个3个字符的图片,所以需要3个字符的位置。什么时候 在PICTURE中指定了一个符号,总是为它保留一个空格。这是将整数范围限制为最多包含2位数的范围。第二个减号表示“零抑制”。零抑制只意味着不打印前导零。只打印1个减号,它将显示在第一个显示数字的左侧。

COBOL在显示数字方面具有很多灵活性。理解数字显示PICTURE子句是理解这一切是如何工作的关键。