有没有办法在获得用户输入后自动填充数组?

时间:2015-03-16 23:26:02

标签: cobol

我有一个包含5个元素的数组,每个元素都包含一个字符。我想在一行中接受用户输入。例如:ABCDE。我打算在数组的元素1中使A和元素2的数组有B等等。有人可以帮忙吗?我附上了以下代码的相关部分:

environment division.
input-output section.
file-control.
    select standard-input assign to keyboard.
    select standard-output assign to display.

data division.
file section.
fd standard-input.
    01 stdin-record   pic x(80).
fd standard-output.
    01 stdout-record  pic x(80).

working-storage section.

    01  input-area.
        02 inputCharacters  pic x(1) occurs 5 times. 

    01  print-line.
        02 inputCharacters  pic x(1) occurs 5 times. 

procedure division.
    open input standard-input, output standard-output.

        read standard-input into input-area 
            at end
            close standard-input, standard-output
        end-read.

        write 
            stdout-record from print-line after advancing 5 line
        end-write

    stop run. 

1 个答案:

答案 0 :(得分:0)

MOVE input-area TO print-line

对于您拥有的代码,您也可以这样做:

    write 
        stdout-record from input-area after advancing 5 line
    end-write

如果你不需要两张桌子副本(COBOL没有真正拥有"阵列"就像你可能习惯的那样)那么就不要这样做了。有两份。

如果您有两张桌子,我建议您将项目名称设置为不同。如果你不这样做,你就必须使用" qualancy"使参考文献独一无二。

MOVE inputCharacters ( 1 ) OF input-area 
                  TO inputCharacters ( 1 ) OF print-line

而不是

MOVE inputCharacters ( 1 )  
                  TO outputCharacters ( 1 )

如果你自己不介意资格,你可能会发现同事或未来的维护者都讨厌它。

我不太确定你想要发生什么:

    read standard-input into input-area 
        at end
        close standard-input, standard-output
    end-read.

你只做一个read,你只有在没有数据时才会得到at end(无论keyboard是什么意思)。在这种情况下,您没有数据可以执行任何操作。

您应该了解如何为每个文件使用FILE STATUS。每次IO后检查文件状态字段,我还建议使用文件状态字段进行文件结束检查,而不是繁琐的AT END。

然而,正如我所说,我不知道键盘的含义......所以也许这不会起作用: - )