2015-10-08 310 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等等。覆蓋這些東西的答案將會很有用。殿下。 –