我想知道如何在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。有谁给我一个例子或提示如何做到这一点?
答案 0 :(得分:4)
+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
对于这种情况,您可能希望为缺失/未知数据添加一些代码。
<强>更新强>
我添加了一些代码来处理丢失/未知数据。