错误:语法错误意外'('我是COBOL

时间:2013-10-30 13:32:00

标签: compiler-errors cobol gnucobol

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

  

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作为编译器。

1 个答案:

答案 0 :(得分:2)

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

如果删除它们,将修复该特定类型的错误。

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

您在display-data-tabel中也遇到问题。您正在添加总计,但在测试后如果要显示它,则无条件地将其设置为零。在IF中,MOVE 0应该是有条件的。可能。

如果您使用范围分隔符,例如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语句并更改文字和数据名称,并在必要时扩展该数字。 “&gt;”的要点和“&lt;”是准确显示哪些字节是数据的一部分(例如,您可以选择尾随空格)。多年来为我节省了很多时间。

相关问题