Friday, March 27, 2026

Update to the technical resources roadmap

Yesterday an updated version of the IBM i technical resource roadmap was published. This web page contains a list of useful links for all things IBM i, from both IBM and other sources too. You will even find a link to this website in the Blogs section.

You can visit the page using the link here.

I have also updated the link, number 6 in the "Links to useful sites", on the right.

I am sure you will find something of interest on that page.

Wednesday, March 25, 2026

Using SQL to view system problems

Just a few weeks ago someone asked me if there was a way, using SQL, he could view problems on his system. What we mean by "problems" are not just error messages. These are the kinds of problems/errors that create a "problem" on your partition that you would use the DSPRPB, Display Problem, command to view.

Fortunately in the Fall 2025 Technology Refreshes, IBM i 7.6 TR1 and 7.5 TR7, was a new SQL View that displays this information: PROBLEM_INFO

Before I describe PROBLEM_INFO, I want to explain the methodology that was used before. IBM i has a Problem Management function that alerts when there are issues with hardware and system software. If I wanted to see what problems there are on this partition I would use the DSPPRB, Display Problem, command. I can enter the following on any command line:

 DSPPRB

Tuesday, March 24, 2026

Wisconsinites join the RPGPGM.COM-unity

At my first conference of the year, WMCPA iCon, I handed out 51 ribbons to the newest members of the RPGPGM.COM-unity.

You can see photographs of these new members here.

If you see me at an IBM i event feel free to introduce yourself to me. In all likelihood I will have a RPGPGM.COM-unity ribbon on me, and you can become a member. All I ask in return is a photograph of you with it.

If you would like to learn more about the RPGPGM.COM-unity click here.

Wednesday, March 18, 2026

Reducing the amount of unnecessary Index Advisor data

I do check the Index Advisor on a regular basis to see what is recommended. I have found that this perspective can become overwhelmed by old data. Who cares what index were advised over a year ago? I either addressed that advice, or the program(s) were changed that used the files in that way.

Every six months I go into the tool and clear the data. This way I will only see the recent recommendations. I have an entry in my calendar to remind me to do this. Wouldn't it be nice if this could be automated.

As part of the latest Technology Refreshes, IBM i 7.6 TR1 and 7.5 TR7 a new Global variable is introduced that will automate the purging for me.

Tuesday, March 17, 2026

Limiting the amount of data SELF retains

While I love the amount of information that the IBM i will retain for us, there are times where it can become overwhelming, or redundant. An example of this is how much SELF, SQL Error Logging Facility, data do I wish to retain.

Prior to the latest Technology Refreshes, IBM i 7.6 TR1 and 7.5 TR7, I was responsible for purging the SELF error log table, QSYS2/SQL_ERRORT. As part of these TRs a new Global variable was introduced.

Wednesday, March 11, 2026

Finding Table functions with SYSFUNCS

In every IBM i recent release and Technology Refresh a few new Audit Journal Table extract functions are added. I wanted to see which one were on the IBM i partition I was using. I was tempted to use the OBJECT_STATISTICS Table function to get a list of them:

01  SELECT OBJNAME,OBJLONGNAME
02  FROM TABLE(QSYS2.OBJECT_STATISTICS('SYSTOOLS','*ALL','AUD*'))

Line 1: I am only interested in the system object name, OBJNAME, and the long (SQL) object name, OBJLONGNAME.

Line 2: The Audit Journal Table functions are in the SYSTOOLS library. I am using the wild card for the object name, in the third parameter, to find all the objects that start with 'AUD'.

The results were:

Wednesday, March 4, 2026

Retrieving the description for the Audit Journal Entry Types

I have, to date, been disappointed that I could not programmatically retrieve a description for the 420 Audit journal entry types. Referring to IBM's documentation was just not practical. A new SQL View in the Fall 2025 Technical Refreshes has given me what I wanted, a list of all the journal entry types with their descriptions.

The View is JOURNAL_CODE_INFO, which is found in the library QSYS2. It contains the following columns:

  1. JOURNAL_CODE:  The journal code
  2. JOURNAL_CODE_DESCRIPTION:  Description of the Journal code
  3. JOURNAL_ENTRY_TYPE:  Journal entry type
  4. JOURNAL_ENTRY_TYPE_DESCRIPTION:  Description for the journal entry type

The journal codes are for a specific "action", while the Journal Entry Type is the type of information. You can see this with the new View with the following statement:

Tuesday, February 24, 2026

IBM Bob formally announced

On Friday February 20 IBM's AI Bob was formally announced with a planned availability date of March 24.

You can read the announcement here.

Monday, February 23, 2026

IBM document: IBM i 7.5 vs 7.6 comparison

On January 30, IBM Support published a page called "IBM i V7R5 versus V7R6 comparison" (shame on IBM Support for not using the proper names of 7.5 and 7.6).

The page is to answer the question: What are the differences between 7.5 and 7.6?

I thought it was something useful to share because, as well as the comparison, there are links to many useful pages of information. You can reach the page here

I hope you find it as interesting as I did.

Wednesday, February 18, 2026

Find all the services programs used by a program

Most of the time it is my curiosity, but there have been occasions, where I needed to know if a program calls a particular service program. It is easy to discover which service a programs call a service program, but what about the service programs that that those service programs calls? Now there is way to do that.

A new SQL Table function, PROGRAM_RESOLVED_ACTIVATIONS, has been added to IBM i as part of latest Technology Refreshes, IBM i 7.6 TR1 and IBM i 7.5 TR7.

PROGRAM_RESOLVED_ACTIVATIONS has five parameters:

  1. PROGRAM_LIBRARY:  Library that contains the object
  2. PROGRAM_NAME:  Name of the program or service program
  3. OBJECT_TYPE*PGM if the object is a program, *SRVPGM if it is a service program
  4. DEFERRED_SERVICE_PROGRAMSNO do not follow deferred activations, these are service programs that had *DEFER in the BNDSRVPGM parameter of the CRTPGM or CRTSRVPGM command. YES follow the deferred activations, this is the default
  5. IGNORE_ERRORSNO if an error is found an error happens. YES a warning is returned; this is the default

I have only used the first three.

Wednesday, February 11, 2026

Using SQL TRANSLATE in place of REGEXP_REPLACE

I encountered something last week that I think may be a "bug" in either RPG or in Db2 for i. I was using the REGEXP_REPLACE scalar function, and I received an error message that made no sense. I ran out of ideas of how to overcome this error using REGEXP_REPLACE, and I went on to use the TRANSLATE scalar function. Before I tell you what the error is I need to explain my situation.

I was working upon a partition which was running IBM i 7.5 with the latest PTFs for Technology Refresh 7, TR7, and the latest PTFs for Database and RPG:

  • Database (SQL) = SF99950 Level 11
  • RPG = 5770WDS SJ08064

The partition's CCSID is:

01  SELECT SYSTEM_VALUE_NAME,SYSTEM_VALUE
02    FROM QSYS2.SYSTEM_VALUE_INFO
03   WHERE SYSTEM_VALUE_NAME = 'QCCSID'

SYSTEM_VALUE_NAME   SYSTEM_VALUE
-----------------   ------------
QCCSID              273