bug-gnucobol
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-GnuCOBOL] COPY STATEMENT Differences with IBM Mainframe


From: Ron Norman
Subject: Re: [Bug-GnuCOBOL] COPY STATEMENT Differences with IBM Mainframe
Date: Mon, 9 Jul 2018 06:38:05 -0400

The test case has problems with Micro Focus COBOL...

cob -P -Ox -C "NOWARNING ODOSLIDE "   -k tstcpy.bat -o tstcpy
    11 01 cp-vars1.
* 217-S**                                                              (   0)**
**    Preceding item at this level has zero length
    15 01 cp-vars2.
* 217-S**                                                              (   1)**
**    Preceding item at this level has zero length
cob64: error(s) in compilation: tstcpy.bat           


If I correct as follows:
       01 ws-vars1   COPY BAR1 REPLACING ==01== BY ==03==.

       01 ws-vars2.  COPY BAR2 REPLACING ==01== BY ==03==.

The output is:
ws-vars1 LENGTH = 16
ws-vars2 LENGTH = 16
cp-vars1 LENGTH = 16
cp-vars2 LENGTH = 16
ws-vars3 LENGTH = 16
ws-vars4 LENGTH = 16   

With GnuCOBOL I get the following errors:
cobc -Wall -std=default -debug -fstatic-call -fimplicit-init -frelax-syntax  -fmf-files -x -o tstcpy tstcpy.bat
BAR1: 1: Error: syntax error, unexpected Literal, expecting EXTERNAL or GLOBAL
BAR1: 2: Error: Level number must begin with 01 or 77
BAR3: 2: Error: syntax error, unexpected Literal, expecting EXTERNAL or GLOBAL
tstcpy.bat: 23: Error: 'cp-vars1' is not defined 


On Sun, Jul 8, 2018 at 6:43 PM, Michael Potter <address@hidden> wrote:
I stumbled on some mainframe code that is using COPY statements on the same line as the 01 level tag.

I have found four different ways this code does this, but only one works on GnuCOBOL.

In the code below, only the 4th one will compile on GnuCOBOL.

I don't have access to a IBM mainframe to tell me how this would react on the MF.

How is this working on the mainframe?  Assuming it is.



address@hidden copy1]$ cat *cbl

       IDENTIFICATION DIVISION.
       PROGRAM-ID. foo.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
          SOURCE-COMPUTER.
             pi3 WiTH DEBUGGING MODE .

       DATA DIVISION.
       WORKING-STORAGE SECTION.

          01 ws-vars1   COPY bar1.

          01 ws-vars2.  COPY bar2.

          01 ws-vars3   COPY bar3
             REPLACING ==01 cp-vars3.== BY ====.

          01 ws-vars4.  COPY bar4
             REPLACING ==01 cp-vars4.== BY ====.

       PROCEDURE DIVISION.
          DISPLAY "ws-vars1 LENGTH = " LENGTH OF ws-vars1.
          DISPLAY "ws-vars2 LENGTH = " LENGTH OF ws-vars2.
          DISPLAY "cp-vars1 LENGTH = " LENGTH OF cp-vars1.
          DISPLAY "cp-vars2 LENGTH = " LENGTH OF cp-vars2.
          DISPLAY "ws-vars3 LENGTH = " LENGTH OF ws-vars3.
          DISPLAY "ws-vars4 LENGTH = " LENGTH OF ws-vars4.

           GOBACK.

       END PROGRAM foo.

      * --------------------------------------------------------------
address@hidden copy1]$ cat foo.cbl

       IDENTIFICATION DIVISION.
       PROGRAM-ID. foo.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
          SOURCE-COMPUTER.
             pi3 WiTH DEBUGGING MODE .

       DATA DIVISION.
       WORKING-STORAGE SECTION.

          01 ws-vars1   COPY bar1.

          01 ws-vars2.  COPY bar2.

          01 ws-vars3   COPY bar3
             REPLACING ==01 cp-vars3.== BY ====.

          01 ws-vars4.  COPY bar4
             REPLACING ==01 cp-vars4.== BY ====.

       PROCEDURE DIVISION.
          DISPLAY "ws-vars1 LENGTH = " LENGTH OF ws-vars1.
          DISPLAY "ws-vars2 LENGTH = " LENGTH OF ws-vars2.
          DISPLAY "cp-vars1 LENGTH = " LENGTH OF cp-vars1.
          DISPLAY "cp-vars2 LENGTH = " LENGTH OF cp-vars2.
          DISPLAY "ws-vars3 LENGTH = " LENGTH OF ws-vars3.
          DISPLAY "ws-vars4 LENGTH = " LENGTH OF ws-vars4.

           GOBACK.

       END PROGRAM foo.

      * --------------------------------------------------------------
address@hidden copy1]$ cat *.cpy
         01 cp-vars1.
            05 cp-var1 PIC X(16).

         01 cp-vars2.
            05 cp-var2 PIC X(16).

         01 cp-vars3.
            05 cp-var3 PIC X(16).

         01 cp-vars4.
            05 cp-var4 PIC X(16).

address@hidden copy1]$ cat *.bash

cobc foo.cbl

cobcrun foo



--
Cheers
Ron Norman

reply via email to

[Prev in Thread] Current Thread [Next in Thread]