0

我在这个程序中有一些错误。当我编译时,代码显示这样的错误

prak.cob:在“isi-data-tabel”段落中:

prak.cob:34:错误:语法错误,意外'('

请检查下面的代码,这是第 34 行中的错误:

 isi-data-tabel. 
       DISPLAY ( , ) 'cabang ', subscript-cabang, bulan ', subscript-bulan, ' : '.   
       ACCEPT ( , ) jumlah-unit-terjual (subscript-cabang, subscript-bulan).
       DISPLAY SPACE.

这个完整的代码


  IDENTIFICATION DIVISION.
   PROGRAM-ID. tabel2.
   ENVIRONMENT DIVISION.
   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01  ws-subscript.
       02  subscript-cabang  PIC 9.
       02  subscript-bulan  PIC 9.
   01  tabel-penjualan-mobil.
       02  cabang  OCCURS 4 TIMES.
       03  bulan   OCCURS 3 TIMES.
           04 jumlah-unit-terjual PIC 99.
   77 total-penjualan-cabang PIC 99 VALUE 0. 
   SCREEN SECTION. 
   01 hapus-layar.
       02  BLANK SCREEN.
   PROCEDURE DIVISION.

  program-utama. 
       PERFORM entry-tabel. 
       PERFORM tampilkan-tabel. 
       STOP RUN.

  entry-tabel. 
       DISPLAY ' Pemasukan data ke dalam tabel dimensi dua: '. 
       PERFORM isi-data-tabel
       VARYING subscript-cabang FROM 1 BY 1 
       UNTIL subscript-cabang > 4
       AFTER subscript-bulan FROM 1 BY 1 
       UNTIL subscript-bulan > 3.

   isi-data-tabel. 
       DISPLAY ( , ) 'cabang ', subscript-cabang, bulan ', subscript-bulan, ' : '.   
       ACCEPT ( , ) jumlah-unit-terjual (subscript-cabang, subscript-bulan).
       DISPLAY SPACE.

   tampilkan-tabel. 
       DISPLAY hapus-layar. 
       DISPLAY ' Menampilkan isi tabel berdimensi dua : '.

       PERFORM display-data-tabel 
         VARYING subscript-cabang FROM 1 BY 1 
         UNTIL subscript-cabang > 4 
         AFTER subscript-bulan FROM 1 BY 1 
         UNTIL subscript-bulan > 3.

   display-data-tabel. 
         DISPLAY ( , ) 'cabang ', subscript-cabang,
              'bulan ', subscript-bulan, ' : ',
               jumlah-unit-terjual (subscript-cabang, subscript-bulan). 
         DISPLAY SPACE.
         ADD jumlah-unit-terjual (subscript-cabang, subscript-bulan) 
               TO total-penjualan-cabang.
         IF (subscript-bulan = 3) 
               DISPLAY '*** Total penjualan per cabang = ', total-penjualan-cabang.

         MOVE 0 TO total-penjualan-cabang.

我在 Mac 环境中使用 OpenCOBOL 1.1.0 作为编译器。

4

1 回答 1

2

我不知道您认为他们会做什么,或者您的特定 COBOL 是否支持类似的东西,但我从未遇到过 DISPLAY 或 ACCEPT 中的“(,)”。

如果您删除这些,则该特定类型的错误将得到修复。

您应该更新您的问题以包括编译器名称或供应商,以及标签(如果可用)。

您在显示数据表中也有问题。您正在添加总数,但在测试后是否要显示它,您无条件地将其设置为零。MOVE 0 应该是有条件的,在 IF 内。大概。

如果您使用范围分隔符,例如 END-IF 而不是句点/句号,您将获得一个更好的程序。

根据您的进一步信息,您确实在 DISPLAY 中遇到了另一个问题:

DISPLAY ( , ) 'cabang ', subscript-cabang, bulan ', subscript-bulan, ' : '.

如果您计算引号 ('),您会找到五个。他们应该永远是平的。看起来你想要这个:

DISPLAY 'cabang ', subscript-cabang, ' bulan ', subscript-bulan, ' : '.

甚至这个:

DISPLAY 'cabang ', subscript-cabang, ' bulan ', subscript-bulan, ' : '

甚至这个:

DISPLAY 'cabang ' subscript-cabang ' bulan ' subscript-bulan ' : '

所有这些标点符号都是可选的。意味着你不需要它。意味着如果你把它放进去,更多的错误,更多的看,更多的疑惑。它不会造成任何伤害,但看看最后一个有多“清洁”。

更进一步,这就是我的做法:

DISPLAY 
      'cabang' 
      '>' 
      subscript-cabang 
      '<' 
      'bulan' 
      '>' 
      subscript-bulan 
      '<' 

当我想显示时,我只需粘贴任何旧的 DISPLAY 语句并更改文字和数据名称,并在必要时扩展数字。">" 和 "<" 的重点是准确显示哪些字节是数据的一部分(例如,您可以选择尾随空格)。这些年来为我节省了很多时间。

于 2013-10-30T14:00:26.550 回答