bug-gnucobol
[Top][All Lists]
Advanced

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

[Bug-GnuCOBOL] COPY STATEMENT Differences with IBM Mainframe


From: Michael Potter
Subject: [Bug-GnuCOBOL] COPY STATEMENT Differences with IBM Mainframe
Date: Sun, 8 Jul 2018 18:43:51 -0400

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

reply via email to

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