Dave's IPCS page :: Verbexit
Dierdre: What exactly were you doin' back here? |
Sam: Lady, I never walk into a place I don't know how to walk out of.
-- From the movie Ronin
Writing IPCS Verbexits in Assembler
I guess most sane people write dump analysis code in Rexx and if you're one of
them, this isn't the page for you. If you don't know what an IPCS verbexit is,
read no further.
The Assembler samples and source programs here will probably not work
without tweaking. They are meant to be examples and not guaranteed even to
assemble succesfully. They are provided to help you see ways to use the IBM
You communicate with IPCS using the ABDPL control block which is passed in
register 1 on entry to your verbexit. It is mapped by the BLSABDPL macro in
SYS1.MACLIB. You will use this control block when you write messages out
to IPCS output, read storage, do symbol processing, etc.
The dreaded "Hello World" program. This is the most basic IPCS verbexit: it
prints one line on the IPCS output area. This isn't meant to be useful, it
just shows how you put text into the IPCS output.
Source is ivxHello.
Now we add accessing storage in the dump by displaying the system name from
the MVS CVT.
Source is ivxSName.
I've found that each time you invoke the ADPLSACC service, it uses the same
buffer as before. So you will want to save any information obtained from the
ADPLSACC call before calling the service again.
Process the VERBEXIT parameter list
You can optionally give some text to a verbexit:
IP VERBX MYEXIT 'parameters'
Here is same sample code to get to the parameters:
L R1,X_ABDPL Locate ABDPL
ICM R3,B'0011',ADPLOPLN-ABDPL(R1) Get length of parms
L R1,ADPLEXT-ABDPL(R1) ABDPL Extension
ICM R2,B'1111',ADPLOPTR-ADPLEXTN(R1) Get addr of parms
Here are some helpful subroutines to use in your IPCS verbexits. Some of
these examples work because of assistance of Bob Wright, the author of IPCS,
who was very helpful in personal emails to me and to the IBM-Main newsgroup.
I share these to help others.
These are examples and may not be the optimum way of doing things, they are
a way of doing this. They will take tweaking to work in your program.
You can create your own equates to save values for easy access later in the
dump analysis. You use IBM's ADPLSEQS service routine to create equates
in the dump.|
Your dump will have a number of equates and your IPCS verb exit can get their
value by calling IBM's ADPLSGTS service routine followed by calling the ADPLSSYM
Retrieving storage from a dataspace into a local data area so you can process it.
I probably figured out how to do this from this
Robert Wright post on IBM-Main.
IBM has a nice API for sharing pointers to data with the Name/Token pair. These
pairs are at the system, home (address space) and task levels.
Although I've had good luck find the name/token pairs when not setting the NTKPLCODE value,
it's probably best to set it to the task, home or system level in case there is a pair with the
same name at an unintended level.
Sometimes you would like to invoke IPCS commands to include their output
in your verb exit's output area. This is done by calling the IBM ADPLSECT
You can create control block models for your own data areas that display
like the "CBF" command, for example: "CBF CVT". When you want to
display them in your verbexit, you can use the ADPLSFMT service
Return to the main IPCS page.
Last Updated: 2009-06-19
This web page is © 2009+ by
All Rights Reserved.