Menu

#880 error compiling abbreviated conditions in GC3.2 RC2

GC 3.2
closed
nobody
cobc (106)
5 - default
2023-07-04
2023-02-28
No

consider the following source:

       IDENTIFICATION DIVISION. CHECKBOOL.
       PROGRAM-ID.    CHECKBOOL.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  VAR1                    PIC X(16) VALUE "#0001".
       01  VAR2                    PIC X(16) VALUE "#0002".
       01  VAR3                    PIC X(16) VALUE "#0003".
       01  VAR4                    PIC X(16) VALUE "#0004".
      PROCEDURE DIVISION.
       MAIN-PROGRAM SECTION.
       INIZIO.
           IF VAR1 NOT = (VAR2 AND VAR3 AND VAR4)
              DISPLAY "TRUE" UPON STDERR
           ELSE
              DISPLAY "FALSE" UPON STDERR
           END-IF           
           GOBACK.

Compiling with GC3.1.2 is error-free and program execution is correct (display TRUE).

Compiling with gc3.2 gives the following error:

              INIZIO.
                  IF VAR1 NOT = (VAR2 AND VAR3 AND VAR4)
     error: invalid expression
                        DISPLAY ........... 
2 Attachments

Related

Bugs: #875
Discussion: compile error: picture clause required for 'ch-9'

Discussion

  • Denis HUGONNARD-ROCHE

    Hi Rocco
    I think it's a bug in the condition parsing that is not related to boolean .
    The same error is occurring with this program (pic 9 fields) :

           IDENTIFICATION DIVISION.
           PROGRAM-ID.    CHECKCOND.
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01  VAR1                    PIC 9(04) VALUE 1.
           01  VAR2                    PIC 9(04) VALUE 2.
           01  VAR3                    PIC 9(04) VALUE 3.
           01  VAR4                    PIC 9(04) VALUE 4.
    
           PROCEDURE DIVISION.
           MAIN-PROGRAM SECTION.
           INIZIO.
               IF VAR1 NOT = (VAR2 AND VAR3 AND VAR4)
                  DISPLAY "TRUE" UPON STDERR
               ELSE
                  DISPLAY "FALSE" UPON STDERR
               END-IF           
               GOBACK.
    
     
  • Simon Sobisch

    Simon Sobisch - 2023-03-22
    • labels: --> cobc
    • summary: error compiling boolean comparison in GC3.2 RC2 --> error compiling abbreviated conditions in GC3.2 RC2
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,4 +1,6 @@
     consider the following source:
    +
    +```cobol
            IDENTIFICATION DIVISION. CHECKBOOL.
            PROGRAM-ID.    CHECKBOOL.
            DATA DIVISION.
    @@ -16,13 +18,15 @@
                   DISPLAY "FALSE" UPON STDERR
                END-IF           
                GOBACK.
    +```
    
     Compiling with GC3.1.2 is error-free and program execution is correct (display TRUE).
    
     Compiling with gc3.2 gives the following error:
    -            .......
    +
    +```
                   INIZIO.
                       IF VAR1 NOT = (VAR2 AND VAR3 AND VAR4)
          error: invalid expression
                             DISPLAY ........... 
    -
    +```
    
    • status: open --> accepted
     
  • Simon Sobisch

    Simon Sobisch - 2023-05-05

    Possibly the same reason (or not, but then still related) that the following bad code compiles:

           IDENTIFICATION DIVISION.
           PROGRAM-ID.    CHECKCOND.
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01  VAR1                    PIC X.
                    88 VAR1-K VALUE 'K'
           01  VAR2                    PIC X.
                    88 VAR2-K VALUE 'K'
    
           PROCEDURE DIVISION.
           MAIN-PROGRAM SECTION.
           BUG.
               IF VAR1-K AND NOT = VAR2-K
                  DISPLAY "INVALID" UPON STDERR.
               GOBACK.
    
     
  • Simon Sobisch

    Simon Sobisch - 2023-07-04
    • status: accepted --> closed
     
  • Simon Sobisch

    Simon Sobisch - 2023-07-04

    fixed by [r5093]

     

    Related

    Commit: [r5093]


Log in to post a comment.