[英]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.