我正在尝试使用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
?