我无法弄清楚如何测试读入项是否合理。例如,如果我有一个WORD-IN PIC X(8)
,我该如何创建一个测试,测试是否有任何空白或" b'"读入。
Word read in = _____CAT
WORD-IN then equals bbbbbCAT
我可以测试领先的b?这样做是为了验证数据。如果存在,则会有随机数量的前导b,但只有一个会使其不合理。
答案 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将具有空格数。