On Fri, 23 Dec 2016 10:07:28 -0500, scott Ford <[email protected]> wrote:

>Peter,
>
>Thank you  for the explanation . I am trying to understand what i am seeing
>..
>My exposure to LE has been through writing in Cobol since 3.4 but I want to
>know more to
>broaden my techniques. Looks like i have some reading to do.
>
>Regards,
>Scott
>
>On Fri, Dec 23, 2016 at 9:38 AM, Peter Relson <[email protected]> wrote:
>
>> >i know i can re-locate the DCBS above the line. I
>>
>> No you don't know that. DCBs are required to be below 16M. AMODE is not
>> relevant.
>>
>> I have no idea how COBOL "calls" another module. I don't believe that LE
>> has any support for calling modules in AMODE 24.
>> You can obviously accomplish doing a "LINK" of your own. And you can
>> accomplish getting storage below 16M .
>>
>> It seems somewhat unlikely that you can get the language to do a BASSM or
>> to get the language to do a BSM to return.
>>
>> Peter Relson
>> z/OS Core Technology Design

COBOL Calls are basically the same as the Assembler CALL Macro, no AMODE 
switching occurs.  COBOL programs today are always AMODE 31.  RMODE can be set 
via Compiler Parm or via the Binder of course.  The default for the RMODE COBOL 
Compiler option is AUTO, which means make the program RMODE ANY if the RENT 
option is also specified, if NORENT them make the RMODE 24.  The DATA COBOL 
Compiler option specifies where COBOL Working Storage is allocated if the RENT 
option is specified, it has no affect if NORENT is specified.  The default for 
DATA is 31 to allocate the storage above the line.

COBOL programs can call AMODE 24 programs if no parameters are passed or the 
parameters are below the line.  If any above the line parameters are passed, 
you will most likely get a U4038 ABEND and message IGZ0033S will be issued. 
 
http://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.ceea900/cs00470.htm

IGZ0033S
An attempt was made to pass a parameter address above 16 megabytes to AMODE(24) 
program program-name.

Explanation
An attempt was made to pass a parameter located above the 16-megabyte storage 
line to a program in AMODE(24). The called program will not be able to address 
the parameter.

System action
The application was terminated.

Programmer response
If the calling program is compiled with the RENT option, the DATA(24) option 
may be used in the calling program to make sure that its data is located in 
storage accessible to an AMODE(24) program. If the calling program is compiled 
with the NORENT option, the RMODE(24) option may be used in the calling program 
to make sure that its data is located in storage accessible to an AMODE(24) 
program. Verify that no linkedit, binder or genmod overrides are responsible 
for this error.
-----------------------------------------------------------------------

The other option not mentioned above would be to change the called program to 
run AMODE 31 so it can access parameters above the line.  Because you are not 
currently passing parameters to the called program, you are not having any 
problems calling it.

-- 
Dale R. Smith

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to