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