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