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 [email protected] with the message: INFO IBM-MAIN