Grab my small assembler program to do this:
http://dinomasters.com/coolstuff/bsttezsp.txt

Tony Thigpen

Bernd Oppolzer wrote on 10/1/21 10:27 AM:
Sorry, forgot to mention:

I'm on VSE, the Compiler release is COBOL for VSE/ESA 1.1.1;
this Compiler definitely only allows items from the Linkage Section.

Nice to know about later version on other OSes.
So there is no danger in applying an ASSEMBLER workaround
and probably no other (simple and performant) COBOL-only fix.

Kind regards

Bernd


Am 01.10.2021 um 16:18 schrieb Joe Monk:
Depends on the release of the COBOL compiler. Later releases support
working-storage items, earlier releases only allow linkage items.

Joe

On Fri, Oct 1, 2021 at 8:50 AM Bernd Oppolzer <bernd.oppol...@t-online.de>
wrote:

Probably asking a COBOL question for the first time :-)

I am thinking about writing a general sub-program using COBOL which does
several different computations, each of them needing different input and
output data
of different size.

Because this should work with Batch and CICS, I am thinking about a
single communication area
with fixed size, which points to another communiation area of variable
size.

The area looks like this:

01  COMMAREA.
      05  CA-FUNCTION_CODE   PIC X(8).
      05  CA-STATUS          PIC 99.
      05  CA-AREA-ADDR       USAGE POINTER.
      05  CA-AREA-LEN        PIC S9(4) COMP.

I managed to write the called subroutine; the COMMAREA is in the LINKAGE
SECTION there,
and I can use the address in the CA-AREA-ADDR and read and write the values
in the variable comm-area, which is linked to the fixed area. No problem
so far.

But:

in the calling program, when setting up the COMMAREA.
I cannot put the address of a WORKING-STORAGE FIELD into the
CA-AREA-ADDR. Because simply it is not allowed to use
SET CA-AREA-ADDR TO ADDRESS OF field on WS fields.

Why? IMO there is no danger in passing the address of a WS field to a
subprogram.
Even if the WS field were in automatic storage (which it is not, IMO),
there would be no problem. In fact, this is done implicitly using
call-by-reference,
but I want to do it now sort of explicitly (this way  overcoming some
restrictions
with CICS and fixed lengths of COMMAREAs).

I recall having seen the DB2 precompiler generating ASSEMBLER routine calls
to do just this (getting the address of a WS field to feed it into the
DB2 interface
DSNHLI). Is this the only possible way to go?

Thank you, kind regards

Bernd

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

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

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

----------------------------------------------------------------------
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