如何使用COBOL在字符串的字符之间插入空格?

问题描述 投票:1回答:1

给出此MOVE语句在COBOL中:

    MOVE "ABCDEFGH" TO WORK-AREA. 

应该如何编码WORK-AREA,以便在每个源字符之间都出现一个空格(即WORK-AREA将包含“ A B C D E F G H”)?

01  WORK-AREA PIC ?
cobol
1个回答
1
投票

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万行错误:-)

© www.soinside.com 2019 - 2024. All rights reserved.