簡體   English   中英

在陳述中使用數字或字母代碼; 用於“ if”語句中

[英]using numeric or alphabetic codes in statements; for use in “if” statements

我想知道如何在COBOL中做某事。 我正在嘗試編寫一個使用if語句從數據文件輸出匹配數據記錄的程序。 但是我還沒有做到這一點,但是我需要做的是為不同數據類型編寫代碼。

blue = 1
brown = 2

所以我像這樣嘗試了,但是沒有用。 我已經在主記錄中聲明了這一點:

01  COLOR-IN    PIC (9)
    05    BLUE         VALUE 1.
    05    BROWN        VALUE 2.

然后我想我可以寫一個if語句,例如

IF COLOR-IN = BLUE 
   PERFORM 200-OUTPUT.

所以我要問的是如何使顏色等於數字或字母代碼。 我應該寫什么樣的陳述。

我想到了。 我使用了88條語句。 像這樣

88      MALE     VALUE 'M'.

但是我還有另一個問題。 輸出確實列出了滿足'if'語句條件的記錄,但是,我需要在程序中編碼實際的頭發和眼睛顏色,以便在程序執行時打印頭發和眼睛的顏色,而不是1或2。有人給我一個例子或提示如何做嗎?

+1了解88s。 它們非常有用。

尋找與您的值相對應的標簽表(數組)。 如果您使用字母代碼,例如在88 MALE VALUE'M'的情況下,則表中將包含該值和標簽的條目。

01  INPUT-VALUE                 PIC X(1).
    88  MALE                    VALUE "M".
    88  FEMALE                  VALUE "F".

01  LABELS-AND-VALUES-AREA.
    05  LABELS-AND-VALUES.
        07  ONE-LABEL-AND-VALUE OCCURS 2.
            09  ONE-LABEL       PIC X(6).
            09  ONE-VALUE       PIC X(1).
    05      FILLER REDEFINES LABELS-AND-VALUES
                                VALUE "MALE  MFEMALEF".
01  I                           PIC S9(4) COMP.
01  DISPLAY-LABEL               PIC x(6).

    MOVE "?" TO DISPLAY-LABEL
    PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
        IF INPUT-VALUE = ONE-VALUE(I)
            MOVE ONE-LABEL(I) TO DISPLAY-LABEL
        END-IF
    END-PERFORM 

如果將數字用作輸入值,則可以跳過查找並直接轉到所需的標簽。

01  INPUT-VALUE                 PIC 9(1).
    88  MALE                    VALUE "1".
    88  FEMALE                  VALUE "2".
    88  VALID-INPUT             VALUE "1", "2".

01  LABELS-AND-VALUES-AREA.
    05  LABELS-AND-VALUES.
        07  ONE-LABEL-AND-VALUE OCCURS 2.
            09  ONE-LABEL       PIC X(6).
    05      FILLER REDEFINES LABELS-AND-VALUES
                                VALUE "MALE  FEMALE".
01  DISPLAY-LABEL               PIC x(6).

   IF VALID-INPUT
       MOVE ONE-LABEL(INPUT-VALUE) TO DISPLAY-LABEL
   ELSE
       MOVE "?" TO DISPLAY-LABEL
   END-IF

對於這種情況,您可能需要添加一些代碼來缺失/未知數據。

更新

我添加了一些代碼來處理丟失/未知的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM