In article 
<of17633908.15f1866d-on80257eb9.003d5cc9-80257eb9.003f9...@uk.ibm.com> you 
wrote:
> IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> wrote on 
> 06/09/2015 07:26:21:

> > From: "nitz-...@gmx.net" <nitz-...@gmx.net>
> > > Plus when you're displaying register contents or stack traces, the 
> > > addresses are displayed as links.
> > IPCS has been doing that since I started working with it. Use %, ? 
> > and (forgot the 64bit-address character) when displaying active 
> > storage. Equate some address with a symbol, and you can list it 
> > using the symbolic name. IPCS automatically gives you a lot of 
> > symbols, generated when the dump is initialized.

> I know, but how do you go back to where you were? Say you're following a 
> chain of linked addresses and you want to go back. Typing in stuff to 
> remember the addresses would be a pain. Web browsers give you all that for 
> free.

You can always set equates with easy to remember names. e.g. when you're
looking at the start of the chain:

eq a1   

Then whenever you want to get back there, do:

l a1

I like to also set a "bookmark" so I can have a list of addresses that I
can just select. e.g. right after I set that equate above I do:

stack

Then I hit F3 and type a comment on the bookmark I just set. You can do all
this programmatically and set as many bookmarks as you want. Besides REXX
and CLIST, you can write IPCS verbexits in any language. I wrote a 64-bit
verbexit in C to analize SAS dumps. I won't pretend it was easy, but once
it was done, it was easy to add stuff to. The ability to use header files
to map storage makes it a lot easier to maintain than the earlier stuff I
had done with REXX. Here's a sample (I had to write the i* functions to talk
to IPCS. 
https://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.ieac700/toc.htm
is where most of this info is "documented")

---
   char *__ptr32        ascb;      /* ascb derived from IP STATUS */
   char *__ptr32        prax;      /* above the bar control block */
   RAX                  rax;       /* same */
   char                 line[133]; /* print line */

   iprintf("SAS VERBX - Storage map:");
   iprintf(" ");
   icmd("IGVVSMIN");         // print vsmdata memory layout box
   memset(line, '_', 132);
   line[132] = 0;
   iprintf(line);
   iprintf("SAS VERBX - High Storage info:");
   iprintf(" ");
   imemcpy(&prax, ascb+0x16c, 4);            // get the RAX address
   imemcpy(&rax, prax, sizeof(RAX));         // copy it
   iprintf("MEMLIM (in megabytes): %12llu", rax.raxlvmemlim);
   iprintf(" Allocated (in bytes): %12llu", rax.raxlvabytes);
   iprintf("    Hidden (in bytes): %12llu", rax.raxlvhbytes);
   iprintf("High Water (in bytes): %12llu", rax.raxlvgbytes);
   iprintf("     # Memory Objects: %12llu", rax.raxlvnmomb);
   switch(rax.raxlvmemlims)
   {
     case 1:
       iprintf("MEMLIMIT set by SMF either in SMFPRMxx or by use of SMF default 
value=0");
       break;
     case 2:
       iprintf("MEMLIMIT set by the JCL");
       break;
...
---
 
 
> Cheers,

> Dave Griffiths

-- 
Don Poitras - SAS Development  -  SAS Institute Inc. - SAS Campus Drive
sas...@sas.com           (919) 531-5637                Cary, NC 27513

----------------------------------------------------------------------
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