Friday, April 4, 2025

Patron saint of IT's day

In the western Christian calendar today is a special day for everyone working in information Technology, as it is Saint Isidore of Seville saint's day.

St Isidore of Seville is special to the IT community as in 1997 he was made patron saint of all things related to computers and IT by Pope John Paul II. You can learn more about Isidore here.

Happy St Isidore of Seville day, and let's hope for a little divine intervention so all of our IT projects in the next year complete successfully, on time, and on budget.



"Looking at this example it looks so easy. Gratias tibi RPGPGM.COM!"

Wednesday, April 2, 2025

Easier way to check if member exists

I was asked: What is the easiest way to check if a member exists in a file?

They had been recommended to perform the check in a CL program, but wondered if there was a way to do the same in a RPG program.

In a "pre-SQL" world I would have used the Allocate Object command, ALCOBJ, in a CL program to check if the member exists. My program would look something like this:

Tuesday, April 1, 2025

April's presentations

I have two online speaking engagements this month.

The first is with the IBM i Midwest User Group, iMWUG, on Tuesday April 8 at 12:00 PM (ET). I will be discussing how to maximize the benefits of embedding SQL into your RPG. Something we should all be doing.

The meeting is free to attend, all you have to do is register by clicking on this link here.


On Wednesday April 16, at 8:30 AM (ET), I will be talking to the West Michigan IBM i User Group, WMSUG, about my favorite RPG Built in Functions (BiFs).

The meeting is free to attend. Click on this link here, then click on the "email-me" icon to register. Your link to the event will be sent to you the day before the meeting.

Thursday, March 27, 2025

One thousand posts

Yesterday another milestone was reached for this website, its one thousandth post!

Personally I think this is a remarkable achievement, to have been able to provide you with information about IBM Power and IBM i for the past 11 years, 9 months, and 17 days.

I want to thank all of you for helping make this possible. Without your encouragement, via social media, email or in-person, this blog would not have become what it has.

Wednesday, March 26, 2025

For RPG program where can I see the path name?

This post is in answer to a question I was asked:

We have compiled an RPG program from an IFS location but we are unable to determine the source of the compilation. We attempted the DSPPGM command and APIs, but they only show the member location when the program is compiled from a library, not for the IFS.

All modern RPG programs contain modules, even if I used the CRTBDNRPG command to create the program object. In this example I have a program TESTRPG, that is in the library MYLIB, that I created using CRTBDNRPG.

Wednesday, March 19, 2025

MTI_INFO now includes member name

As part of the latest round of Technology Refreshes, IBM i 7.5 TR5 and 7.4 TR11, the MTI_INFO Table function was enhanced with the addition of the member or Table partition name the MTI was created over. I have to admit I was surprised this was not included when the Table function was first introduced.

The new column is called TABLE_PARTITION, it is the third column in the results, and is a VARCHAR of a maximum of 128 characters.

If I just wanted to view all of the MTIs in my partition I would use the following statement:

01  SELECT TABLE_SCHEMA,TABLE_NAME,FILE_NAME,
02         TABLE_PARTITION
03    FROM TABLE(QSYS2.MTI_INFO())
04   ORDER BY 1,2
05   LIMIT 5

Wednesday, March 12, 2025

New parameter added to Audit Data Mart procedure

Audit Data Marts were added to IBM i in the previous round of TRs, and in the latest round of TRs comes what I can think is a significant improvement.

IMHO Audit Data Marts are a big improvement in the way I can manage Audit journal data. It allows me to copy the data from the QAUDJRN journal into a series of Audit Data Mart Tables. Each Audit Data Mart Table contains the data for one particular audit journal entry types. I am not going to go into more detail about creating Audit Data Marts as I wrote, in detail, about how to use them in my post: Audit Journal Data Mart in October of last year.

An additional parameter was added to the procedure MANAGE_AUDIT_JOURNAL_DATA_MART that makes it possible to select the information when I create or reload the Audit Data Mart. It is the DATA_MART_FILTER parameter. With this I can add additional selection criteria, in SQL format, to the MANAGE_AUDIT_JOURNAL_DATA_MART statement. Up to a thousand characters can be entered. Be warned the statement entered here is not validated, therefore, if what you enter is not valid it will cause an SQL syntax error when the statement is executed.

Monday, March 10, 2025

RPGPGM.COM-unity reaches India

I handed out a lot of RPGPGM.COM-unity ribbons at last month's COMMON India conference in Pune.

You can see who I gave them to here.

And you can learn about what the RPGPGM.COM-unity is here.

Wednesday, March 5, 2025

Deleting all spool files with a certain form type

The idea for this post came from a question I was asked in a presentation last month. The more I think about the solution I developed I am of the opinion that many of you might find this useful.

The question was: Is there a way, using SQL, to delete all the spool files that have a particular form type?

I have been using the DELETE_OLD_SPOOLED_FILES SQL procedure to delete old spool files on my partition. Alas, the Procedure does not have a parameter for form type.

Another idea sprung to mind, I could use the OUTPUT_QUEUE_ENTRIES_BASIC SQL View to select the spool files I want to delete, and do the deleting in the same statement using the appropriate CL command in the QCMDEXC Scalar function. I am sure some of you are wondering why I picked OUTPUT_QUEUE_ENTRIES_BASIC View rather than OUTPUT_QUEUE_ENTRIES View. The "basic" version has less columns than the "full" version, which makes it faster to return results.

The crucial part of my design is that I must get the selection criteria correct when I use the OUTPUT_QUEUE_ENTRIES_BASIC.

Tuesday, March 4, 2025

Inaugural Common India a great success

Last week, Monday 24 – Wednesday 26 February, was a truly historic event. The first COMMON event in India. I was lucky to be invited to make some presentations at the event.

I was most impressed by the attendees' thirst for knowledge for the latest about the IBM Power server and the IBM i operating system. While helping at the registration desk I was surprised how many people recognized me and the other USA based IBM Champions who were attending the conference. I soon lost count of the number of times I was asked to appear in someone's selfie. There was a range of experience there, from people who has been working with IBM i for decades, to students who want to learn about whether this was an environment they could have a career in.


IBM Champions: Gajendar Tyagi, Simon Hutchinson, Ranga Deshpande,
Marina Schwenk, Nirmal Kumar Khatri, Charlie Guarino