cobol中accept的用法和循环
我不知道怎么用accept,然后通过键盘输入数据.好像要用alloc之类的玉器锯,具体是在哪里用呢?还有,我写了一个双重循环,输出乘法表,但总多出9*10=90这一条,应...
我不知道怎么用accept,然后通过键盘输入数据.好像要用alloc之类的玉器锯,具体是在哪里用呢?
还有,我写了一个双重循环,输出乘法表,但总多出9*10=90这一条,应该怎么删呢?
请各位大虾们帮帮忙.我在这里谢过了.
积分少,只能给出10分,谢谢了!
原来是j>i啊,真是一语惊醒梦中人.谢谢啦高手!就凭这个,分一定要给你,虽然有点少,呵呵.
至于accept这个,是在IBM主机环境下的,没有在JCL里写,发邮件问老师好像是说用ALLOC DD(SYSIN) DS(*),这句话是在JCL里写的吗?我上次看演示的时候是见老师从键盘输的字符.由于没时间去上实验,发邮件很麻烦,只能在这问了.
请问高手这句语句应该如何执行呢?谢谢你了.
回答很仔细,万分感谢.
呵呵,高手,我真不知TSO在哪里.是在命令面板里先输这个ALLOC这类的,然后再sub JCL作业,然后call作业吗?
我这样试过,但异常中断. 展开
还有,我写了一个双重循环,输出乘法表,但总多出9*10=90这一条,应该怎么删呢?
请各位大虾们帮帮忙.我在这里谢过了.
积分少,只能给出10分,谢谢了!
原来是j>i啊,真是一语惊醒梦中人.谢谢啦高手!就凭这个,分一定要给你,虽然有点少,呵呵.
至于accept这个,是在IBM主机环境下的,没有在JCL里写,发邮件问老师好像是说用ALLOC DD(SYSIN) DS(*),这句话是在JCL里写的吗?我上次看演示的时候是见老师从键盘输的字符.由于没时间去上实验,发邮件很麻烦,只能在这问了.
请问高手这句语句应该如何执行呢?谢谢你了.
回答很仔细,万分感谢.
呵呵,高手,我真不知TSO在哪里.是在命令面板里先输这个ALLOC这类的,然后再sub JCL作业,然后call作业吗?
我这样试过,但异常中断. 展开
1个回答
展开全部
这个要看你是在什么环境下了,如果是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?
具体你还是问你们老师吧。
举个例子吧,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?
具体你还是问你们老师吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询