2016-01-13 39 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

是的,我也沒有得到他真正想要的東西,他只是說使用空陣列,即使用空表,但它不能滿足要求,如果我得到了一些東西,或者他會告訴我我發佈了答案。 –