On Wed, 11 Oct 2023 at 03:59, Joseph Reichman <reichman...@gmail.com> wrote:

That was very helpful back to my first beef
>
> The EVAL….. subcommands particular to Rexx clist are interspersed among
> those IPCS subcommands done by hand
>
> The reason I think I cannt get around verbx assembler exit is because I
> want to create a structure to be used in the run chain command and I think
> that necessitates the use of the BLSQS assembler macros
>

A few observations. First, like Binyamin, I don't know why you don't just
use REXX to format your own (or anyone's) control blocks. I, and I'm sure
others, have written many thousands of lines of REXX to go through dumps.
It's not just formatting CBs, but having the REXX take different actions
based on what it finds in some of those blocks. So e.g. we have a product
that has a notion of transactions, and a transaction is represented by a
single CB that points to various other CBs, and that transaction CB is
always on one of many possible queues, or it's being processed by a
specific module. So the REXX can go through the queues and format the
status and history of all or a single transaction, chase down and report on
the linked CBs with their various pieces of information, and so on. Or it
can start with a transaction ID (perhapssupplied by the dump reader as an
argument), find where it's queued, and report on things unique to the queue
it's on. And it can prompt the dump reader based on things found during
processing, e.g. "Transaction x has 7 sub-transactions that have not
completed - report on them? Reply Yes, No, or Details". That kind of thing.

RUNCHAIN is one of the easiest things to write in REXX. It doesn't have to
exactly mimic the IPCS command, but it probably needs notions like the
offset of the chain pointer, how end-of-chain is marked, how to format some
fields in each block encountered (the eyecatcher?), whether there are
errors that make a CB instance suspicious (maybe the "in use" and "has been
freed" flags are both on), and so on. Just make it a subroutine, and then
you can call it from anywhere in your larger REXX program.

Write yourself a few generalized REXX subroutines - one to manage storage
fetching requests with perhaps different types of input (hex or decimal or
character string for the address, since you may conveniently have any of
those available), one to format output like one line of a dump (in my case
I can optionally format EBCDIC/ASCII or both) and ensure that you don't
pass things like a single quote to the IPCS NOTE command, perhaps one to
manipulate addresses (you pass it a hex string and a decimal offset, or
whatever), and of course routines that are more specific to your own code
and CBs.

There's another aspect... You can indeed use the BLSQ... macros to define a
control block in a format that IPCS can format from. These macros are not
very easy to use, imho, but still can be useful. You can do two things with
them: use them to define your own control blocks to IPCS (since obviously
IPCS doesn't come with these mappings) so that you can use CBF and such on
them, but also you can interpret the macro output in your own REXX routines
if you like, without using the IBM IPCS commands. Fiddly, but potentially a
way to do more than the IBM formatters do.

[BTW, if you want a lot of examples of use of the BLSQ... macros, look at
the JES2 source code that should be on your system. HASM.... modules are
all related to IPCS, and most are CB definitions. I imagine IBM has a tool
to take the assembler definitions (or maybe ADATA) and churn out the BLSQM
stuff. Or maybe they're all hand written.]

Tony H.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to