2016-01-13 60 views
0

我的字符串为'#$ rahul',我必须计算不使用检查动词的字母数量。还没有使用ord子句的ASCII值。我的教练告诉我使用空数组,但它是如何使用的?我尝试过,但它也适用于符号。计算数据中字母字符的数量

DATA DIVISION. 
    WORKING-STORAGE SECTION. 
    01 WS-TABLE. 
     05 WS-A OCCURS 3 TIMES INDEXED BY I. 
     10 WS-B PIC A(2). 
     10 WS-C OCCURS 2 TIMES INDEXED BY J. 
      15 WS-D PIC X(3). 

PROCEDURE DIVISION. 
    MOVE '@#@#DEF34GHIJKL56MNOPQR' TO WS-TABLE. 
    PERFORM A-PARA VARYING I FROM 1 BY 1 UNTIL I >3 
    STOP RUN. 

    A-PARA. 
    PERFORM C-PARA VARYING J FROM 1 BY 1 UNTIL J>2. 

    C-PARA. 
    if ws-table(1) equals to spaces 
    continue 
    else 
    add +1 to ws-count 
    end-if 
    DISPLAY WS-C(I,J). 
+0

请显示您尝试过的代码,它会让我们更好地理解您错过的内容。 –

+0

我添加了我的代码,但我的教练想要使用另一个空的数组,这是我无法理解的。 –

回答

3

除了你的表定义和实际使用的表,你已经基本得到了主意已,除非你是不知道,具体而言,以测试。

你需要做的是找到你的COBOL文档中的部分上类条件类测试

我怀疑这段代码:

if ws-table(1) equals to spaces 
continue 
else 
add +1 to ws-count 
end-if 

已急速增加了。使用您的数据,ws-table(1)将永远不会占用空间,并且ws-count未定义。

回到你的定义。您正在定义一个由三部分组成的结构(WS-A OCCURS 3),每部分由两字节字母字段和两个三字节字母数字字段组成。该定义对您的任务没有直接用处。

01 the-data. 
     05 FILLER OCCURS 24 TIMES 
      INDEXED BY data-byte-index. 
      10 the-data-byte    PIC X. 

这将允许您单独查看每个字节。请注意,你总是可以使用好的名字,这会让你的程序更容易理解,减少不小心错误的机会,并让人们的生活,包括你自己的生活,一段时间后返回程序一般更容易。

请注意,您也可以使用引用修改,并减少可读性,以减少输入的好处。你的程序的

格式

除非是决定你(虽然我从来没有见过它之前在超过30年,我已经看到了一对夫妇的时间最近)也绝对没有点在“缩进”如WORKKING-STORAGE部分,甚至段落/ SECTION标签中。他们已经拥有了他们所需要的所有缩进,并且进一步的缩进没有增加任何内容,这需要更多的输入,并且还会让有经验的COBOL程序员想知道为什么要这样做。

自从1985年的COBOL标准以来,使用PROCEDURE DIVISION中的全站/句点大大放松。由于在错误的地方进行一站式/定期可能会导致错误,这是一件好事。如果你充分利用它,它也会很好。逗号看起来非常像完全停止/句号,在代码中有任何用处。他们永远不必在那里,所以没有任何好处。也可以/应该避免使用噪音词THEN。与逗号不同,间距可以是程序格式的福音。

这里是上面的代码,重新格式化:

 MOVE '@#@#DEF34GHIJKL56MNOPQR' 
            TO WS-TABLE 
     PERFORM      A-PARA 
     VARYING     I 
      FROM      1 
      BY      1 
      UNTIL     I > 3 
     STOP RUN 
     . 

    A-PARA. 
     PERFORM      C-PARA 
     VARYING     J 
      FROM      1 
      BY      1 
      UNTIL     J > 2 
     . 
    C-PARA. 

     if ws-table (1) equal to space 
      continue 
     else 
      add +1     to ws-count 
     end-if 

     DISPLAY 
       WS-C (I J) 
     . 

使用一些专有名词,它的开始看起来像一个真正的程序。

请注意,并非所有人都同意如何格式化程序。认真。

+0

是的比尔伍德我一定会照顾你的建议,这对我很有帮助,我定义ws-count,但忘记写在工作存储部分。其实我的教练说,这将通过采取空阵列来解决,但它不能达到我的知识水平。再次感谢你。 –

+0

@RahulMurade我不知道他们的意思是“在这种情况下的空阵列 –

+0

是的,我也没有得到他真正想要的东西,他只是说使用空阵列,即使用空表,但它不能满足要求,如果我得到了一些东西,或者他会告诉我我发布了答案。 –