如何测试项目是否合理?

时间:2015-01-26 01:22:06

标签: cobol

我无法弄清楚如何测试读入项是否合理。例如,如果我有一个WORD-IN PIC X(8),我该如何创建一个测试,测试是否有任何空白或" b'"读入。

Word read in = _____CAT
WORD-IN then equals bbbbbCAT 

我可以测试领先的b?这样做是为了验证数据。如果存在,则会有随机数量的前导b,但只有一个会使其不合理。

3 个答案:

答案 0 :(得分:1)

05   word-in.
   07 word-in-x      pic x(01) occurs 8.


if word-in-x(1) is equal to space ...

答案 1 :(得分:1)

一些变种:

01  word-in.
    05  FILLER                          PIC X.
        88  word-in-data-not-left-just  VALUE SPACE.
    05  FILLER                          PIC X(7).

IF word-in-data-not-left-just
    ....
END-IF

定义数据以隔离第一个字节,并在其上使用88,以便读者知道它的含义。

01   word-in.
     05 FILLER                          pic x(01) occurs 8.
        88  word-in-data-not-left-just  VALUE SPACE.

if word-in-data-not-left-just ( 1 ) 
    ....
END-IF

作为Magoo的,88也可以完全按照他们的解决方案,但不需要给数据命名,只需88.

01  word-in                             PIC X(8).

IF word-in ( 1 : 1 ) EQUAL TO SPACE
    ....
END-IF

参考修改。遇到时,只需打电话到办公室"当word-in的第一个字节是空格时它意味着什么?"有人肯定知道。如果没有,您可以在知道自己是否需要知道之前获得额外的乐趣。

从上述所有内容生成的代码(IBM Enterprise COBOL)/应该是相同的,因此选择哪个是为了人类理解,编译器并不关心。根据解决方案的不同,即使需要花费更多的时间来解决这个问题,它也可以做到这一点。

答案 2 :(得分:0)

您可以使用INSPECT语句。对于领先的空间使用:

01  WS-CNT    PIC S9(5)  COMP-3.

INSPECT WORD-IN TALLYING WS-CNT FOR LEADING SPACES

要计算尾随空格,您可以:

Inspect function reverse(word-in) tallying ws-cnt for leading spaces

变量ws-cnt将具有空格数。