If statement 在语句中使用数字或字母代码;用于“如果”语句

If statement 在语句中使用数字或字母代码;用于“如果”语句,if-statement,cobol,If Statement,Cobol,我想知道如何用COBOL做一些事情。我试图编写一个程序,使用if语句从数据文件输出匹配的数据记录。但我还没有这样做,我需要做的是为不同的数据类型编写代码 蓝色=1 布朗=2 所以我试着这样做,但不起作用。我已在主记录中声明: 01 COLOR-IN PIC (9) 05 BLUE VALUE 1. 05 BROWN VALUE 2. 然后我想我可以写一个if语句,比如 IF COLOR-IN = BLUE PERFORM

我想知道如何用COBOL做一些事情。我试图编写一个程序,使用if语句从数据文件输出匹配的数据记录。但我还没有这样做,我需要做的是为不同的数据类型编写代码

蓝色=1 布朗=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男性值'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
对于这种情况,您可能需要为丢失/未知数据添加一些代码

更新


我添加了一些代码来处理丢失/未知的数据。

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

您需要的是与您的值对应的标签表数组。如果您使用字母代码,如 88男性值'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
对于这种情况,您可能需要为丢失/未知数据添加一些代码

更新


我添加了一些代码来处理丢失/未知的数据。

请按原样显示代码。请不要在标题前加上COBOL:之类的前缀。这就是标签的用途。请按现在的样子向我们显示代码。请不要在标题前加上COBOL:之类的前缀。这就是标签的作用。这非常有用。谢谢:为什么不只是评估一下,或者即使是评估一下呢?这非常有帮助。谢谢:为什么不只是评估一下,或者即使是?