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