Mark Vollmer wrote on 09/08/2005 12:02:35 PM:

> I am interested in creating my own user defined control block formatting
> for use under IPCS.
>
> I've read the manuals, and I find the information very daunting.  I
> think I feel that way because the information is spread out so much over
> the manuals, I never found a short simple example to start my learning.
>
> I'll need to know now to build such formatting definitions.  Even a
> simple one that gives the field name and a hex representation would be a
> nice start.   I can work on fancier ones once I start to get better at
> this task.
>
> And then I'll need to know how to get these new definitions installed so
> that I can begin to use them.
>
> If anyone can explain to me the basics, and show a simple example, I
> would certainly appreciate it.
>
> Perhaps there is a third party book out there somewhere that might be of
> some help?
>
> Anything to help get me moving to understand this whole process would be
> appreciated.
>
> Otherwise, I'll just have to spend time going over the manuals again.
>

You will find yourself spending some time in the manuals.  However, if your
sole goal is to put together some formatters that can be directly or
indirectly invoked via the IPCS CBFORMAT subcommand, you can circumvent the
bulk of the complexity.

Your formatter program will receive control with two formal parameters:
ABDPL and ADPLPFMT.  Both are described by mapping macro BLSABDPL.  The 2nd
structure will contain the address of an ADPLPFXT structure, and it can
expect that the first entry in the array of address pairs will be
populated.  The address of that 1st BLSRESSY structure will be present, and
the address of the pre-buffered data can be ignored or, if present,
exploited.  CBFORMAT doesn't lie about where to get the data from the dump.
Use the BLSRESSY, amended if appropriate to describe the amount of data
spanned by your block, to retrieve an image of it.   Then either format
lines of output and pass them directly to print services or pass the image
of what you've retrieved to the model processor service with a model that
you've put together.  (You can ask the model processor to retrieve what is
described by the model being passed, but you don't need to write a
formatter to accomplish that.)  Mixing the two methods has been made to
work, but getting it right is harder than sticking with one technique or
the other.

The API is very complex because of multiple ways to say the same thing and
the option to supply pre-buffered images of dump data.  Complexity is
augmented by, in principle, the ability to pass no less than 16 distinct
dump data descriptions to your code.  Saying that the code will gain
control from CBFORMAT or via a similar invocation simplifies things a lot.

The CBFORMAT subcommand will permit you to just name your formatter module
via its FORMAT option.  If you want to make it available to be used to
format little blocks contained in larger ones, you need to get IPCS to
process a DATA statement containing a FORMAT option during IPCS session
initialization.  E.g.

    DATA STRUCTURE(A1To31CharacterName) FORMAT(Epname)

If your installation doesn't have a BLSCUSER parmlib member, creating one
of your own with the statement(s) in it will work.  Otherwise, you can copy
and extend the installation member or get an IMBED statement added to it
for a member of your own.  If your parmlib member isn't in a library in the
system parmlib concatenation, you need to allocate FILE(IPCSPARM) to a good
concatenation before starting the IPCS session.

Bob Wright - z/OS MVS Service Aids

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to