On Thursday, 01/12/2006 at 02:26 EST, Steve Gentry
<[EMAIL PROTECTED]> wrote:
> New program, mode'ing old ones. This is the one I asked about last
week,
> regarding example about loading table(s) above 16m line.
> Looks like CMSSTOR, in part, will help. Is there a macro or DIAG
to
> tell me the length(size) in bytes of a module? What about a TEXT deck?
> This has to be able to be done in an assembler pgm.
Look at the MVS LOAD macro. It will load a text deck into memory and
return the address & length in R0 & R1. Make sure the your table is
assembled with RMODE ANY so that it can be placed above the 16MB line. The
DELETE macro will unload the TEXT deck.
If you want to do this with native CMS services, issue the NUCXLOAD
command to load the text deck and use the NUCEXT QUERY macro to return
address & length information (extracted from the SCBLOCK). Starting the
program name with an asterisk (e.g. "NUCXLOAD *TABLE MYTEXT") will make
sure you don't accidentally try to "run" the program. Use "NUCXDROP DROP
*TABLE" to unload the table. While this isn't particularly hard, I kind
of like the MVS LOAD macro better.
Snippet for NUCXLOAD and NUCEXT:
LA R9,NUCXLOAD_Error
CMSCALL PLIST=PgmLoad,ERROR=(R9)
LA R9,NUCEXTQUERY_Error
NUCEXT QUERY,NAME=PgmName,ERROR=(R9)
USING SCBLOCK,R1
* At this point SCBXORG has address. SCBXLEN has length.
:
PgmLoad DS 0D
DC CL8'NUCXLOAD'
PgmName DC CL8'*TABLE'
DC CL8'MYTEXT' <-- filename of TEXT deck
DC 8X'FF'
LTORG
SCBLOCK
Alan Altmark
z/VM Development
IBM Endicott