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