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
