Search code examples
cobolmainframe

Is there a performance hit for using EXTERNAL working storage variables


This question is regarding IBM Enterprise COBOL 4.2.

I have a program that requires a change and an increase to a working storage buffer. Unfortunately, this increase in buffer size has put me over the 128M max for the working storage section. My plan was to take some of the bigger 01 variables and make them EXTERNAL, but I am concerned that this will impact system performance.

Does anyone know if making working storage variables external will slow down system performance?

I have been told that in about a year we will be switching to COBOL 6.1, so if it is a small performance decrease, we should be able to handle it until we get 6.1 (where the working storage limits have been increased to 2G)


Solution

  • As a practical matter, using EXTERNAL is no different than the system calling a program with each external data item as if it were a linkage section data item. I suggest compiling a small program and examining the generated code to see what the differences are.

    working-storage section.
    01 ws-data pic x(8).
    01 ext-data pic x(8) external.
    linkage section.
    01 ls-data pic x(8).
    procedure division using ls-data.
    begin.
        move spaces to ws-data
        move spaces tp ext-data
        move spaces to ls-data
        goback
        .
    

    I suspect there is no difference between accessing ext-data and ls-data.

    This would provide specific information on how much of a "hit" to expect.