Cobol 如何将空格与字母组合

Cobol 如何将空格与字母组合,cobol,Cobol,我尝试在Cobol中创建一个字符串,其中包含单独的字母。直到我尝试插入一个 空间,一切都正常。你知道我怎样才能创造e.x.这个字符串吗 " ee ee" 那会做你想做的 这是很难确定的,因为你没有显示你得到了什么结果,也不清楚是什么,直到我尝试插入一个空格,一切都正常,但 01 S1 PIC X(10) VALUE SPACE. 如果S1没有值,并且假定您没有使用为图片设置默认值的编译器,则由空格分隔的图片将占用整个10个字节,由字符串添加的值永远不会出现在S1中,除非它以

我尝试在Cobol中创建一个字符串,其中包含单独的字母。直到我尝试插入一个 空间,一切都正常。你知道我怎样才能创造e.x.这个字符串吗

"  ee  ee"

那会做你想做的

这是很难确定的,因为你没有显示你得到了什么结果,也不清楚是什么,直到我尝试插入一个空格,一切都正常,但

   01    S1 PIC X(10) VALUE SPACE.
如果S1没有值,并且假定您没有使用为图片设置默认值的编译器,则由空格分隔的图片将占用整个10个字节,由字符串添加的值永远不会出现在S1中,除非它以空格值开头。使用空格的值,您的四个字符串应该可以工作。犯错误不,它不会,因为有空格,而空格是由空格分隔的

当然,您也可以使用引用修改:

MOVE "  " TO S1 ( 1 : 2 )
MOVE "ee" TO S1 ( 3 : 2 )
MOVE "  " TO S1 ( 3 : 2 )
MOVE "ee" TO S1 ( 5 : )  
或者,如果您不想在默认情况下将字段的最后一部分填充为空格,请将最后一部分更改为5:2,这将使S1的字节9和10保持不变

如果你能澄清你想要实现什么,以及为什么你认为字符串是用来实现它的动词,你可能会得到更好的答案

那会做你想做的

这是很难确定的,因为你没有显示你得到了什么结果,也不清楚是什么,直到我尝试插入一个空格,一切都正常,但

   01    S1 PIC X(10) VALUE SPACE.
如果S1没有值,并且假定您没有使用为图片设置默认值的编译器,则由空格分隔的图片将占用整个10个字节,由字符串添加的值永远不会出现在S1中,除非它以空格值开头。使用空格的值,您的四个字符串应该可以工作。犯错误不,它不会,因为有空格,而空格是由空格分隔的

当然,您也可以使用引用修改:

MOVE "  " TO S1 ( 1 : 2 )
MOVE "ee" TO S1 ( 3 : 2 )
MOVE "  " TO S1 ( 3 : 2 )
MOVE "ee" TO S1 ( 5 : )  
或者,如果您不想在默认情况下将字段的最后一部分填充为空格,请将最后一部分更改为5:2,这将使S1的字节9和10保持不变


如果您能澄清您想要实现的目标,以及为什么您认为字符串是用于实现该目标的动词,您可能会得到更好的答案。

如果您试图实现一个过程,即每次将一个字符添加到 字符变量,则类似于以下内容的内容可能会对您更好一些:

   IDENTIFICATION DIVISION.
   PROGRAM-ID. EXAMPLE.
   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01  S1             PIC X(10) VALUE SPACE.
   01  S1-SUB         PIC S9(4) BINARY VALUE ZERO.
   PROCEDURE DIVISION.
       PERFORM INSERT-SPACE 2 TIMES
       PERFORM INSERT-E     2 TIMES
       PERFORM INSERT-SPACE 2 TIMES
       PERFORM INSERT-E     2 TIMES
       DISPLAY '>' S1 '<'
       GOBACK
       .
   INSERT-SPACE SECTION.
       COMPUTE S1-SUB = S1-SUB + 1
       MOVE SPACE TO S1 (S1-SUB : 1)
       .
   INSERT-E SECTION.
       COMPUTE S1-SUB = S1-SUB + 1
       MOVE 'E' TO S1 (S1-SUB : 1)
       .

如果您试图实现一个过程,其中一次将一个字符添加到 字符变量,则类似于以下内容的内容可能会对您更好一些:

   IDENTIFICATION DIVISION.
   PROGRAM-ID. EXAMPLE.
   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01  S1             PIC X(10) VALUE SPACE.
   01  S1-SUB         PIC S9(4) BINARY VALUE ZERO.
   PROCEDURE DIVISION.
       PERFORM INSERT-SPACE 2 TIMES
       PERFORM INSERT-E     2 TIMES
       PERFORM INSERT-SPACE 2 TIMES
       PERFORM INSERT-E     2 TIMES
       DISPLAY '>' S1 '<'
       GOBACK
       .
   INSERT-SPACE SECTION.
       COMPUTE S1-SUB = S1-SUB + 1
       MOVE SPACE TO S1 (S1-SUB : 1)
       .
   INSERT-E SECTION.
       COMPUTE S1-SUB = S1-SUB + 1
       MOVE 'E' TO S1 (S1-SUB : 1)
       .

您可能还需要尝试将s1初始化为空格。它的开头可能有十六进制零。此外,outputGNU Cobol还添加了一个扩展内在函数CONCATENATE,这在运行时构建字符串时非常方便。这不是一个答案,只是一个注释。您可能还想尝试将s1初始化为空格。它的开头可能有十六进制零。此外,outputGNU Cobol还添加了一个扩展内在函数CONCATENATE,这在运行时构建字符串时非常方便。这不是一个答案,只是一个评论。
   INSERT-E SECTION.
       COMPUTE S1-SUB = S1-SUB + 1
       IF S1-SUB > LENGTH OF S1
          PERFORM ERROR-ROUTINE
       END-IF
       MOVE 'E' TO S1 (S1-SUB : 1)
       .