2015-10-08 186 views
0

我对COBOL相当陌生,正试图实现一个涉及基本算术运算的程序。在一个声明中所产生的错误对我来说是:为变量赋值

Move (MULTIPLY UPrice BY OrdAmt) TO OrdCost 

使我有以下错误:

Move (MULTIPLY UPrice BY OrdAmt) TO OrdCost. 
........^ 
%COBOL-W-BLKPREEND, Unreachable statement 
at line number 36 in file USR$ROOT3B:[GPY]CLASS5A.COB;13 

Move (MULTIPLY UPrice BY OrdAmt) TO OrdCost. 
.............^ 
%COBOL-F-SYN7, Missing literal or data-name 
at line number 36 in file USR$ROOT3B:[GPY]CLASS5A.COB;13 

Move (MULTIPLY UPrice BY OrdAmt) TO OrdCost. 
.......................................^ 
%COBOL-F-MISSING, "." required at this point 

这种说法就在于,如果报表的结构中。 Missing literal or data-name是什么意思?

+0

欢迎来到Stack Overflow!我编辑了你的问题以匹配你所问的确切的错误信息。 –

回答

3

您可能是新的COBOL,但并不从以下它的语法免除你。由非常困惑编译器产生

的误差。

有许多方法可以做到你仿佛想:

Do calculation storing result 
Copy result to where you want it to go 

Do calculating, storing result where you want it to go 

二是更加正常的COBOL程序员:

MULTIPLY UPrice    BY OrdAmt 
    GIVING      OrdCost. 

我已经离开了句号/期间的声明,因为我认为你有一个旧的'74标准编译器。

然而,如果像你说的,这个代码是那么句号/期要打破你的结构,所以把它关闭“if语句的结构”中。

你需要获得一个COBOL手动/你的课程,笔记/一个很好的COBOL书的保持,并获得了语言的基础知识牢固的抓地力。

注意,乘以基于B某处产生的结果,并将其存储,没有它在某些类型的赋值语句可能的方式产生“结果”的概念。

也知道,A加B,减去从B,DIVIDE a被b也这样做,所有允许使用给这使结果在其他地方的。

也有COMPUTE动词,其是分配型。在这五个动词之间,你可以获得很大的细微差别。的确,在这里搜索“COBOL细微差别”以获得最近的答案,了解更多细节。

0

更简单的方法是使用谓词COMPUTE。例如:

COMPUTE RESULTVAR = VAR1 * VAR2. 

这样,您可以使用更简单的符号,如* + - /。希望它有帮助。

+0

比什么或以什么方式更简单?如果@ user209396有一份工作与COBOL程序一起工作,那么你会建议他们更改所有现有程序库以使用COMPUTE,还是什么?那些可怕的数据名称,为什么你不是那个问题的人? –

+0

这只是一个例子,所以任何人都可以理解。显然我没有这么做,对不起,COBOL王子。 – Rodrigo

+0

那么,如果你扩展它,并使用原来的名称,并指出它不能在MOVE中使用,那么这将是一个值得的贡献。我们的OP对COBOL非常不确定(他们已经离开了该建筑),我不认为他们会意识到COMPUTE包含隐式MOVE,或者目标可以进行数值编辑,并且可以指定ROUNDED等等。覆盖这些东西的答案将会很有用。殿下。 –