The COBOL 5.1.1 Migration Guide contains an example of how to test for it. 
Compile this program 4.2 and message “Incompatible wrong length read behavior” 
will display.  (At least it did when I did it)





      *********************************************************

      ** **

      ** DESCRIPTION: This testcase tests if a compiler exhibits **

      ** corrected COBOL V5 var length READ behavior. **

      ** **

      *********************************************************

       IDENTIFICATION DIVISION.

       Program-id. READVAR.

       Environment division.

       Input-output section.

       File-control.

            Select File1

            Assign to ddvar1

            Access mode is sequential.

            Select File2

            Assign to ddvar1

            Access mode is sequential

            File status is fs2.

       I-O-control.

       Data division.

       File section.

       Fd file1

            Record is varying

            Recording mode V.

       01 Record1a pic x(20).

       01 Record1b pic x(40).

       Fd file2

            Record is varying 10 to 40

            Recording mode V.

       01 Record2a pic x(25).

       01 Record2b PIC x(35).

       Working-storage section.

       01 fs2 pic 99.

       01 fs3 pic 99.

       01 Errflag pic x value "N".

       Procedure division.

            Display "Starting READVAR".

      *--------------------------------------------------------

      * Create file1 with 1 20-byte record and 1 40-byte record

      *--------------------------------------------------------

            Open output file1

            Move all "a" to record1a

            Write record1a

            Move all "b" to record1b

            Write record1b

            Close file1.

      *--------------------------------------------------------

      * Read file2 with 25 and 35 byte records defined

      * First READ should get FS=4 because 20 byte record is

      * shorter than the smallest record description

      * Second READ should get FS=4 because 40 byte record is

      * longer than the longest record description

      *--------------------------------------------------------

            Open input file2

            Read file2

            If fs2 = 4 then

            Display " Corrected COBOL V5 behavior"

              Else

            Display " Incompatible wrong length read behavior"

            End-If

            Read file2

            If fs2 = 4 then

            Display " Corrected COBOL V5 behavior"

              Else

            Display " Incompatible wrong length read behavior"

            End-If

            Close file2.

            Goback.





HTH,

Greg Shirey

Ben E. Keith Company



-----Original Message-----

From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Frank Swarbrick

Sent: Friday, April 03, 2015 1:50 PM

To: IBM-MAIN@LISTSERV.UA.EDU

Subject: Re: migrating compiler versions



The RECORD CONTAINS clause is not required in either V4 or V5.  It (if not 
present) is determined from the smallest and largest 01 level fields in the 
FD.Both V4 and V5 give a compiler error if there is a RECORD CONTAINS clause 
that does not match what would have been assumed had it not been present.

I cannot figure out how to create a situation where COBOL V4 returns status 
'00' when there is a size mismatch.  I always get '04'.

Frank



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to