First Thanks to al who responded.
I see I need to read more.
An I understand that CSRSI can only be called in 31/24 bit mode.

If I understand Peter Relsons response.
Lets says the program to be called is capable of Handling 64 Bit addresses.

My program would need to execute a sequence of Instructions similar to this:
SYSSTATE AMODE64=YES,ARCHLVL=2
SAM64                       Switch Into 64 Bit Addressing Mode
IARV64 REQUEST=GETSTOR .... Obtain A Memory Object
LG    R0,ORIGIN             Get Starting Address Of Memory Object
L     R15,PGM@              Load R15 with Other Programs Load
CALL  (R15),(P1,ORIGIN,P2,RC)

ORIGIN DS AD
PGM@   DS A                 Address Of Program to be called
P1     DS A                 Parameter 1
P2     DS A                 Parameter 2
RC     DS A                 Response Code

Do I have the basic flow of commands correct ?
Is My Understanding correct ?

Paul D'Angelo









---------- Original Message ----------
From: Peter Relson <[email protected]>
To: [email protected]
Subject: Re: 64Bit  Addressing and CALL
Date: Fri, 21 Dec 2012 08:08:01 -0500

While our books certainly have their flaws, they tend to be pretty good
about identifying acceptable AMODEs.
CSRSI says
AMODE:   24- or 31-bit when using the CALL CSRSI form  (or csrsi in C),
31-bit when using an alternate form

If a service supports AMODE 24/31 only, it would only be upon specifically
stating so that it supported any parameter data above 2G.

I will also point out that the sequence
         IARV64 REQUEST=GETSTOR,SEGMENT==AD(MAXSIZE),
               ORIGIN=ORIGIN,MF=E,IARV64,COMPLETE)  *
         LG    R0,ORIGIN               Get Starting Address Of Memory
Object
         STG   R0,CSRSI_INFO@          Store Mem-Obj Address for CSRSI
         SYSSTATE AMODE64=YES,ARCHLVL=2
         L     R15,CSRSI@                       Load R15 with CSRSI
Address
         CALL  (R15),(CSRSI_TYPE,CSRSI_INFOLEN,CSRSI_INFO@,CSRSI_RC)

Can never be absolutely correct since it asserts that you are in AMODE 64
at the time of the CALL but, since there was no AMODE switch shown, you
were also in AMODE 64 at the time of the IARV64 yet had not identified so
via SYSSTATE. It is important that SYSSTATE be set correctly if invoking
just about any macro in AMODE 64.


Peter Relson
z/OS Core Technology Design

Reply via email to