【问题标题】:using numeric or alphabetic codes in statements; for use in "if" statements在语句中使用数字或字母代码;用于“if”语句
【发布时间】:2012-05-18 06:13:19
【问题描述】:

我想知道如何在 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。可以有人给我一个例子或提示如何做到这一点?

【问题讨论】:

  • 请向我们展示现在的代码。
  • 请不要在您的标题前加上“COBOL:”等。这就是标签的用途。

标签: if-statement cobol


【解决方案1】:

+1 用于了解 88 年代。它们非常有用。

与您的值相对应的标签表(数组)就是您要查找的内容。如果您使用字母代码,如您的 88 MALE VALUE 'M' case,那么你的表有一个值和标签的条目。

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

对于这种情况,您可能需要为丢失/未知数据添加一些代码。

更新

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

【讨论】:

  • 这非常有帮助。谢谢你:))))
  • 为什么不只是评估甚至如果?
猜你喜欢
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2014-06-18
  • 2018-08-08
相关资源
最近更新 更多