¿ªÔÆÌåÓý

Re: How Big/Long is a CMS Module


 

¿ªÔÆÌåÓý

One more remark, BTW:

when I tested my Pascal compiler - including XRUNPARM - on modern z/VM,
I found out that XRUNPARM with its current coding doesn't work there, because the layout
of the module description areas have changed, and the length information of the modules
(which is read by XRUNPARM to retrieve the needed length for GETMAIN) isn't at the place any more
where it used to be).

So XRUNPARM on modern VM constantly failed with this error message:

BADSIZE? DS??? 0H
???????? LA??? R2,1024-1(,R2) CONVERT REQUIRED SIZE TO 'K'
???????? SRL?? R2,10
???????? LINEDIT TEXT='"...................." REQUIRES ....K MORE STORA*
?????????????? GE',DOT=NO,RENT=NO,SUB=(CHAR8A,MODNAME,DEC,(R2))
???????? LA??? R15,104????????????? SET RETURN CODE

which gives (for example):

MODULE XXXXXXXX REQUIRES 192K MORE STORAGE

no matter how many storage you allocated to your VM/CMS session.

I found a way to overcome this error message, but don't recall what it was;
because z/VM doesn't belong to my regulary working environments, I didn't pay much
attention (this was a user's request, and I didn't find an easy way to make XRUNPARM
run on the old VM/370 R6 system and on z/VM at the same time ... and I don't have the resources
to support different environments, which I do not use myself).

I'm sorry to say that MVS 3.8 and current z/OS are no problem in this respect,
although I'd prefer working on VM, when preparing new mainframe versions of the Pascal compiler.

Sorry, kind regards

Bernd


Am 05.02.2024 um 00:57 schrieb Bernd Oppolzer via groups.io:

I have written XRUNPARM some years ago (2016), based on a routine called RUNPARM,
which IMO is or was part of the COBOL runtime or came with the COBOL compiler
(which, AFAIK, is an MVS compiler, which can be used with VM, too, and the objects
created by this compiler have to be started using RUNPARM).

IIRC, I created XRUNPARM to start my Pascal programs
look here:
same story as with the Cobol compiler above.

Because XRUNPARM changed its size several times, the origin where the Pascal programs start is now 20700.

You can look at the PASRUN EXEC (which should be on the S or Y drive of the VM CE edition);
there you find:

...
&L1 = PASMONN
&L2 = PASLIBX
&L3 = PASUTILS
&L4 = PASSNAPC
&O1 = ORIGIN
&O2 = 20700
&O3 = RESET
&O4 = $PASENT
&O5 = CLEAR
LOAD &L1 &L2 &L3 &L4 &M1 &M2 &M3 &M4 &1 ( &O1 &O2 &O3 &O4 &O5
&IF &RETCODE NE 0 &GOTO -NOLOAD
*-----------------------------------------------------------
GENMOD &1
&IF &RETCODE NE 0 &GOTO -NOMOD
*-----------------------------------------------------------
FILEDEF QRD DISK &1 DBGINFO (RECFM F
XRUNPARM &1 &R1 &R2 &R3 &R4 &R5 &R6 &R7 &R8 &R9 &R10 &R11 &R12 &R13 &R14
...

I also tried to get rid of XRUNPARM completely and link the startup code in XRUNPARM together with the
generated code coming from the Pascal compiler to build one single module, but when I did so, my programs failed
by unknown reasons ... so I was stuck with the XRUNPARM solution.

At the moment, the code generated by the Pascal compiler is the same for MVS and CMS, and this is fine
and I don't want to change this. If I could find a solution where only the runtime libraries are different,
this would be OK for me. But at the moments the runtimes are the same, too (only one minor difference,
concerning the allocation of the debug information data: on MVS a member in a library DBGINFO with the member
name of the Pascal program (say: PROGNAME), and on VM a file PROGNAME DBGINFO.

If you want to know more about the reasons, why I had to write an own version of RUNPARM
or how I found out the length of XRUNPARM, contact me offline (I guess it was by looking at
the LOAD MAP after building the XRUNPARM MODULE - the source code should be on the S or Y drive, too;
if not, I can send you the actual version, which is from August 2023, BTW.

HTH, kind regards

Bernd


Am 05.02.2024 um 00:06 schrieb Mark A. Stevens via groups.io:
On Sun, Feb 4, 2024 at 04:42 PM, Dave Wade wrote:
Not sure what you are planning, but if your program has issued any storage requests, the space at the end of the program will have been used to satisfy those requests so not available to load a second program.
There is a modules called RUNPARM and XRUNPARM, which is on the Y-Disk. There is also WMSASM from the CBT. All three are supposed to be a 'front end' for programs that are by nature MVS code. They take command line parameters and fix up the PLIST to be something the MVS program will be able to understand.

My few examples show something like:

RUNPARM MYPROG ...

Where MYPROG is a MODULE. So I am attempting to set the load address for MYPROG to be beyond the end of RUNPARM.

Do I really know what I am doing. Nope. Just trying to figure it all out.

?... Mark S.

Join [email protected] to automatically receive all group messages.