给出此MOVE语句在COBOL中:
MOVE "ABCDEFGH" TO WORK-AREA.
应该如何编码WORK-AREA,以便在每个源字符之间都出现一个空格(即WORK-AREA将包含“ A B C D E F G H”)?
01 WORK-AREA PIC ?
COBOL提供了一组图片编辑字符,可用于在将数据移动到字段中时修改数据(格式化数字或将某些字符插入文本字段时,如左零抑制或逗号之类的东西)。其中之一是用于空格的简单插入字符B
,这意味着您应该可以使用:
PIC XBXBXBXBXBXBXBX
对于更复杂的修改(尽管在这种特定情况下不需要,但是您可能想要做一些重新排序),为防万一,我将使用move corresponding
(用于大规模传输命名字段)提出另一种可能性:
01 COMP-AREA-UNION.
03 COMP-AREA PIC X(8).
03 COMP-AREA-NAMED REDEFINES COMP-AREA.
05 AREA-A PIC X.
05 AREA-B PIC X.
05 AREA-C PIC X.
05 AREA-D PIC X.
05 AREA-E PIC X.
05 AREA-F PIC X.
05 AREA-G PIC X.
05 AREA-H PIC X.
01 WORK-AREA-UNION.
03 WORK-AREA PIC X(15).
03 WORK-AREA-NAMED REDEFINES WORK-AREA.
05 AREA-A PIC X.
05 FILLER PIC X VALUE SPACE.
05 AREA-B PIC X.
05 FILLER PIC X VALUE SPACE.
05 AREA-C PIC X.
05 FILLER PIC X VALUE SPACE.
05 AREA-D PIC X.
05 FILLER PIC X VALUE SPACE.
05 AREA-E PIC X.
05 FILLER PIC X VALUE SPACE.
05 AREA-F PIC X.
05 FILLER PIC X VALUE SPACE.
05 AREA-G PIC X.
05 FILLER PIC X VALUE SPACE.
05 AREA-H PIC X.
与大多数COBOL程序一样,它的数据划分约为80%,并且代码相对简单:
MOVE "ABCDEFGH" TO COMP-AREA.
MOVE CORRESPONDING COMP-AREA-NAMED TO WORK-AREA-NAMED.
此时,WORK-AREA
应包含A B C D E F G H
。除非我在某个地方错过了我的代码的全部时间,否则在这种情况下,编译器将给您12万行错误:-)