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