On Tue, 6 Aug 2013 16:07:01 -0400, Tom Marchant <[email protected]>
wrote:

>On Tue, 6 Aug 2013 13:57:45 -0400, John Parke wrote:
>
>>Hi:
>>
>>The main Assembler routine is loading R1 with the
>>address of the parameter list and then branching to the Metal-C routine.
>
>Ok so far.
>
>>The
>>Metal-C routine abends with an 0C4. When I look to where R1 is pointing
>>in the
>>dump, it appears to be where a program would pick up a parm if executed in
>>batch; i.e, parm=’someparm.’
>
>What do you mean by that?  The system uses standard linkage to
>provide the PARM from the JCL to the program.  Register 1 contains
>the address of a parameter list.  The parameter list is one fullword
>containing the address of the parameter.
>
>>But the C program is not a “main” program.
>
>That doesn't make any difference for z/OS linkage conventions.
>
>>I have read the manual repeatedly
>
>What manual is that?  The Assembler Programmer's Guide, chapter 2?
>Preferably release 12 or later.
>
>--
>Tom Marchant

Manual(s) Read:
z/OS V1R13.0 Metal C Programming Guide and Reference
z/OS V1R13.0 XL C/C++ User’s Guide

The program I am referring to is written in Assembler and is calling a
metal-C subroutine (assembled with HLASM).

I execute the program like this:

//TESTDRV   EXEC PGM=TESTDRV  <= hand written test program in ASM

This program is supposed to set up the parm list address then branch to
Metal-C program. When the program TESTDRV is executed it abends with an 0C4.

I looked into the dump and saw R1 value of something like 00006FF8.

I thought that this address looked like it was rather low in storage, so I
re-submitted the job with:

//TESTDRV   EXEC PGM=TESTDRV,PARM='someparm'  <= not the way I want to
execute

Now when the program abends, I see the text "someparm" at the address
(preceded by half word length field).

This leads me to believe that the parm list is not being passed correctly.

I confirmed the instruction being executed at abend:

ACTIVE LOAD MODULE           ADDRESS=1E800000  OFFSET=0000A78E
NAME=TESTDRV
DATA AT PSW  1E80A788 - E3401000  0004E55C  40200001

Which corresponds to:
000000E8 E340 1000 0004          00000000    183          LG    4,@79plist
000000EE E55C 4020 0001 00000020             184          CHSI  32(4),1


Thanks for the help and suggestions.

John

Reply via email to