Chris Blaicher has 35 years of experience as a systems programmer and systems utilities developer. He is currently a developer at BMC Software and is involved in DB2® utilities development, specializing in I/O routines, sorting, and performance tuning. Chris Blaicher has worked for BMC Software for nine years, with previous experience at companies such as SyncSort and United Parcel Service. BMC Software is a leading provider of enterprise management solutions that empower companies to manage their IT infrastructure from a business perspective.

Cole Software’s® product, the Extended Debugging Controller® (XDC/SE), used for the development and debugging of Assembler language programs that execute in the OS/390 (MVS) operating system environment, has proven its usefulness to BMC Software time and time again.

This product has been used by most, if not all of its mainframe software development over the past few years. While XDC/SE has offered much in the way of development performance, BMC Software needed the tool to run just as well in a z/OS environment and wanted to see improvements in the areas of 64-bit addressing and setting breakpoints within an expanded instruction set. With over 100 mainframe products and hundreds of distributed products all focused on keeping the IT department meeting the business needs of their customers, BMC Software needed Cole Software® to provide a version of XDC that let its developers fully explore their code.

Cole Software® answers that call with its new z/XDC offering. For BMC Software, the z/XDC debugger is just what the doctor ordered. With previous experience on XDC/SE, development using z/XDC is a snap. Even with other debugger experience, this tool can be learned in minutes. BMC Software’s mainframe support group installed it and from day one, it worked almost flawlessly. After four months and 90,000 lines of code, we found only two minor problems. In each case, the problem was resolved quickly – within 48 hours.

z/XDC provides full access to all registers and memory. You can choose whether you want to see 32-bit or 64-bit versions of the registers. Following is an example of the two types of register displays for the start of a program named IEFBR14.

Z12 ===> L PSW;L EPSW;L REGS
_ PSW  078D1000 00066CFC (cc-LO) - PRIVATE+64CFC
_ EPSW 078D1000 00066CC2 (cc-LO) - PRIVATE+64CC2
_ R0   00009B88 0007EF90 E7C4C3C3 C1D3D340 *...h....XDCCALL *
_ R4   C9C5C6C2 D9F1F440 80FDC9CE 000650CD *IEFBR14 ..I...&.*
_ R8   00000000 00013600 00018BF0 00066718 *...........0....*
_ R12  000640CE 00063DD0 80066CFE 00CE5000 *.. ....}..%...&.*
Z12 ===> L PSW;L EPSW;L RWREGS
_ PSW  078D1000 00066CFC (cc-LO) - PRIVATE+64CFC
_ EPSW 078D1000 00066CC2 (cc-LO) - PRIVATE+64CC2
_ RW0  00000000_00009B88 00000000_0007EF90 *.......h........*
_ RW2  00000000_E7C4C3C3 00000000_C1D3D340 *....XDCC....ALL *
_ RW4  00000000_C9C5C6C2 00000000_D9F1F440 *....IEFB....R14 *
_ RW6  00000000_80FDC9CE 00000000_000650CD *......I.......&.*
_ RW8  00000000_00000000 00000000_00013600 *................*
_ RW10 00000000_00018BF0 00000000_00066718 *.......0........*
_ RW12 00000000_000640CE 00000000_00063DD0 *...... ........}*
_ RW14 00000000_80066CFE 00000000_00CE5000 *......%.......&.*

Some of the nicer features of this product include the new SET BANG 64 command; the support of non-standard display terminals; the display of code, comments, and processing on one screen; and the use of deferred breakpoints.

XDC has always used the register naming convention of Rn, such as R10 for register 10 and the modifiers of %, ?, !, meaning respectively, use the 24-bit address at the current location (%), use the 31-bit address at the current location (?), or base the addressing upon the current PSW addressing mode (!). Cole Software® has added the command ‘SET BANG 64′ so that the ! character will always mean to use the 64-bit address. I found this very helpful when in a non-64- bit routine and I wanted to check things in 64-bit storage based off a register and/or storage. Using a command such as D R5?+28! gets you from the control block pointed to by R5 to a 64-bit address in the control block at location +28 to the storage above the bar.

Another really nice feature is the support of non-standard display terminals. I use IBM’s Personal Communications for terminal emulation and some of my screens are defined as 43 x132 and other extraneous sizes and everything works and looks right.

For assembler debugging, you can use either the TEST and/or the ADATA options of the assembler. Some of the BMC Software products use just the TEST option. I was working on a new product and chose to use just the ADATA option as an experiment since I have never used this option before. The first thing I noted was that the program binder is much faster without TEST. Second, when using ADATA with z/XDC and a big terminal emulator, your program, comments, and processing is displayed on one screen.

BMC Software developers also tend to load and delete a lot of modules. Deferred breakpoints are great in that you can set a breakpoint in a CSECT in a module that is not even in storage yet. Using deferred breakpoints, you can set up breakpoints in several modules that may not be called for an extended period of time without having to do several intermediate steps.

To me, z/XDC is a must for anyone planning to do 64-bit development.

Chris Blaicher – BMC Software