Cobol破折号把我弄糊涂了

Cobol破折号把我弄糊涂了,cobol,Cobol,可能重复: 我正在努力掌握Cobol,在格式化数字时无法理解破折号。我举了一个例子: --九, 我的以下说法正确吗 第一个破折号-如果数字是负数,请划一个破折号,否则不要划 第二次冲刺-我对此感到困惑。在开始处已经有一个破折号来指定它是负数还是正数 9-数字(0-9) 举个例子就好了 谢谢 破折号意味着,如果你有一个负数,破折号将是 显示在号码旁边(左侧)。只需要一个破折号 显示。如果数字为正数,则会为每个数字显示一个空格 破折号 鉴于你的情况,我不确定你有什么问题。但是让我们再试一次 在CO

可能重复:

我正在努力掌握Cobol,在格式化数字时无法理解破折号。我举了一个例子:

--九,

我的以下说法正确吗
第一个破折号-如果数字是负数,请划一个破折号,否则不要划
第二次冲刺-我对此感到困惑。在开始处已经有一个破折号来指定它是负数还是正数
9-数字(0-9)

举个例子就好了

谢谢

破折号意味着,如果你有一个负数,破折号将是 显示在号码旁边(左侧)。只需要一个破折号 显示。如果数字为正数,则会为每个数字显示一个空格 破折号

鉴于你的情况,我不确定你有什么问题。但是让我们再试一次

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

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

 DISPLAY '>' DISP-NBR '<'
请注意,所有显示均采用3个字符的位置。至少会显示1位数字(因为PICTURE子句中的“9”),除此之外,不会显示前导零。减号将仅对负值显示。减号(如果显示)将位于第一个显示数字的正左边

现在回答您的特定问题:显示数字显示数据项所需的字符位置总数由
图片的长度决定。您有一张3个字符的图片,因此需要3个字符的位置。什么时候
图片中指定了一个标志,始终为其保留一个空间。这就是将整数范围限制为最多包含2个数字的整数的原因。第二个减号表示“零抑制”。零抑制意味着不打印前导零。只打印过1个减号,它将位于第一个显示数字的最左边


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

我看到了。我的示例是否意味着数字最多可以有3个字符长。数字范围应该是-99到99,因此只有2个字符长,请参阅
  0 displays as: >  0<
 -1 displays as: > -1<
-11 displays as: >-11<
 10 displays as: > 10<