从COBOL中的stdin读取部分字节

时间:2017-01-20 15:24:53

标签: cobol acucobol-gt

我正在尝试使用ACUCOBOL-GT从stdin获取一部分字节。由于数据可以是任意长度,因此指定variable PIC X(n)然后使用ACCEPT variable将无效,因为读取了整行,并且输入行被截断为variable的长度。

例如,如果stdin包含:

Some line exceeding 10 caracters↵
and then another line↵
and at last a third line.

我有这段代码:

working-storage division.

 77 someLine pic X(10).

procedure division.

    perform 3 times
        accept someLine;
        display someLine;
    end-perform;

然后结果只是

Some line ↵
and then a↵
and at las

显然,每个ACCEPT读取直到找到换行符,然后将该行移动到指定的变量中,可能会截断该行的一部分。

现在我想只读取stdin的一部分,所以不会丢弃任何字节。我按照this post中的建议尝试使用SYSIN为stdin分配文件描述符:

    select sysin
        assign to keyboard
        organization binary sequential.

data division.
file section.

fd sysin.
01 inputByte pic X.

procedure division.

    open input sysin
    perform 3 times
        accept inputByte from sysin
        display inputByte
    end-perform
    close sysin.

但它以某种方式给出了文件错误35(找不到文件)。看起来像ACUCOBOL-GT

  

does not support直接分配到用户的屏幕或键盘。

我可以以某种方式强制ACCEPT读取指定数量的字节而不是扫描换行符吗?或者我可以以某种方式使用READ SYSIN NEXT

0 个答案:

没有答案