这个要看你是在什么环境下了,如果是DOS、WINDOWS、UNIX类的操作系统,你可以用它们的字符界面,ACCEPT对应于键盘输入,DISPLAY对应于屏幕输出。
举个例子吧,ACCEPT一个数值,然后求它的平方,DISPLAY出来,
working-storage section.
77 x pic x(10).
77 XasNum pic s9(09).
77 x2 pic 9(18).
77 x2-edit pic z(17)9.
procedure division.
display "请输入一个数值(最大9位,可以为负数): "
with no advancing.
accept x.
move function numval(x) to XasNum.
compute x2 = XasNum ** 2.
move x2 to x2-edit.
display "这个数值的平方是: " x2-edit.
stop run.
如果是MAINFRAME环境,你要在JCL中的SYSIN中指定X的数值,至于DISPLAY的输出结果,你要到JOB LOG中去看。
至于输出乘法表,如下:
working-storage section.
77 i pic 99.
77 j pic 99.
77 k pic 99.
procedure division.
perform varying i from 1 by 1 until i > 9
perform varying j from 1 by 1 until j > i
compute k = i * j
display i "*" j "=" k " " with no advancing
end-perform
display " "
end-perform.
stop run.
这两个程序,只要是符合COBOL ANSI 85标准的编译器都支持,还有,我只是把必要的代码列了出来,像DATA DIVISION,ENVIRONMENT DIVISION, IDENTIFICATION DIVISION这些我都没有写。
补充如下:
你问的SYSIN,在IBM MAINFRAME系列JCL里面的格式如下:(以上面ACCEPT一个数值,求其平方并DISPLAY为例)
//SYSIN DD *
+1000
/*
由于那个例子只ACCEPT一次,求得其平方即输出,所以SYSIN如上。
你可以把那个程序改一下,做一个循环,依次ACCEPT并DISPLAY其平方,直到ACCEPT的数值等于9999为止,程序中止。
此时,SYSIN的格式如下:
//SYSIN DD *
100
+1000
-20300
9999
/*
这样,程序共处理了三个数值,正的100,正的1000和负的20300。
至于你问的ALLOC DD(SYSIN) DS(*),这是个TSO命令,这种用法是把你的终端做为SYSIN。
你们老师是怎么回答的啊?你提到了CALL,我想大概是这么用的吧:
在JCL里面指定SYSTSIN:
//SYSTSIN DD *
ALLOC DD(SYSIN) DS(*)
CALL (你的可执行模块)
或者你们老师编写了一个CLIST?
具体你还是问你们老师吧。