COBOL中是否存在一种“等待”功能?我写了一个计算器,为了使它超过50年代,我打印了“计算”。 “正在计算..”例如:
DISPLAY "SECONDO NUMERO"
ACCEPT B
COMPUTE C= A * B
DISPLAY "Computing"
DISPLAY "Computing."
DISPLAY "Computing.."
DISPLAY "Computing..."
DISPLAY "Computing...."
DISPLAY "Computing....."
DISPLAY "Computing......"
DISPLAY A "x" B " FA..."
DISPLAY C
现在,有没有办法在我放置“计算”部分的COBOL上稍加延迟(半秒)?谢谢!!!
我们没有任何命令,例如sleep或cobol中的wait。编码一些Dummy语句不是一个比WAIT或SLEEP停止更好的主意。就像它是DB2程序一样,COMMIT可以用于获得良好的通过时间。问候,
标准COBOL中没有等待或延迟语句。对于GnuCOBOL,可能会有CALL "SYSTEM"
来引起延迟。
[我获取了一些用于经过时间测量的代码,并修改了代码以创建一个延迟过程。
[需要延迟的地方,插入语句PERFORM timed-delay
。当然,延迟可以改变。即使延迟超过午夜,此代码也可以正常工作。
代码:
working-storage section.
01 t pic 9(8).
01 t-start.
03 t-start-hour pic 99.
03 t-start-minute pic 99.
03 t-start-second pic 99v99.
01 t-end.
03 t-end-hour pic 99.
03 t-end-minute pic 99.
03 t-end-second pic 99v99.
77 t-elapsed pic 9(7)v99.
procedure division.
xxx section.
begin.
accept t from time
display t
perform timed-delay
accept t from time
display t
stop run
.
timed-delay.
accept t-start from time
move 0 to t-elapsed
perform until t-elapsed > 0.5 *> one-half second
accept t-end from time
perform get-elapsed
end-perform
.
get-elapsed section.
begin.
if t-start > t-end
move 86400 to t-elapsed
else
move 0 to t-elapsed
end-if
compute t-elapsed = t-elapsed
+ (t-end-hour - t-start-hour) * 3600
+ (t-end-minute - t-start-minute) * 60
+ (t-end-second - t-start-second)
end-compute
.
输出:(显示0.55秒的延迟)
21424364
21424419