数字长度验证



在COBOL400程序中,我想在屏幕上的数字字段上进行验证,当输入的数字小于10时,将发生错误
问题是当我输入一些数字时,例如12345678该值将像这样放置在长度为15的数值变量中

000000012345678

因此,从第一个不是0的数字开始计数不会一直有效,因为在用户输入0的情况下,例如001234567

有没有一种方法可以在不使用FUNCTION的情况下做到这一点

下面是一些代码片段。如果我正确理解评论线程,用户的响应来自一个10个字符的字段,所以它不能比这个长,但可能会更短(你想阻止的情况);并且用户的响应被移动到程序中的一个15个字符的数字字段中(response-AS-numeric)。

WORKING-STORAGE SECTION.
01  RESPONSE-AREA.
    05  RESPONSE-AS-NUMERIC              PIC 9(15).
    05  RESPONSE-AS-ALPHANUMERIC
        REDEFINES RESPONSE-AS-NUMERIC.
        10      FILLER                   PIC X(5).
        10  FIRST-DIGIT                  PIC X(1).
        10      FILLER                   PIC X(9).
* * * 
PROCEDURE DIVISION.
    MOVE SCREEN-FIELD TO RESPONSE-AS-NUMERIC
    IF FIRST-DIGIT = "0"
        reject the user's input
    END-IF

简而言之,你只需要检查第一个数字。

这里有一些代码可以让你确定事情是否正常

05  your-input-field.
    10  first-ten-digits-of-input          PIC 9(10).
    10  FILLER                             PIC X(5).
        88  no-more-than-10-digits         VALUE ZERO.
IF  ( first-ten-digits-of-input NUMERIC )
AND ( no-more-than-10-digits )
    user has entered exactly 10 numeric digts
ELSE
    user has misentered, it is too long, short, or not numeric
END-IF

请记住,我不知道您是如何定义"输入"字段的,也不知道您在定义输入时有哪些选项。您必须将字段定义为"字符",而不是"数字"。如果您将其定义为数字,那么无论处理输入的是什么,都可能右对齐(字段最右位置的最右数字)和左零填充。对于字符字段,它将左对齐(字段最左边位置的最左边数字),并用尾随空格填充字段长度。

然而,如果您能够定义一个输入字段,该字段只能包含数字(没有其他内容,没有符号、小数点或任何内容),并且可以定义为左对齐,并且只有10个字符长,那么您只需要测试NUMERIC,因为其他一切都可以有效地为您完成。但我不知道你在用什么输入。

COBOL400本身没有任何功能,无论如何都可以用来做这件事。

相关内容

  • 没有找到相关文章

最新更新