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
