Wednesday, July 23, 2025

Retrieve the SQL statements from multiple QM queries

The germ for this post came from a message I received:

Is there any way to retrieve sources for all QMQRY objects available inside a library in one go? My objective is, there are 100's of QMQRY objects(SQL type) inside a library but they don't have predefined source members. I need search for particular string inside all those SQL queries used inside the QMQRY objects.

I decided to work out a way I could do this.

I did not create "100's" of Query Management, QM, queries as what will work for two will work for many more too.

It is possible to retrieve the SQL statement from a QM query object by use of the Retrieve Query Management Query command, RTVQMQRYM. That command copies the retrieved statement into a source member.

Monday, July 21, 2025

CPW ratings for Power11 servers

When the IBM Power11 servers were announced, July 8, several people contacted me if I had the CPW rating for the new servers.

What is CPW? It is a number that is frequently mentioned, but I have never seen its definition. After some digging I found the following:

The CPW, Commercial Processing Workload, rating provides a measure to show how on-line transactions processing, OLTP, workloads perform on systems that run IBM i. The CPW rating is built using workloads that can utilize the full processing power of the system.

Below is a summary of the Power11 CPW. I have included the top of range Power10 equivalent too, its column is gray.

Wednesday, July 16, 2025

Moving one person's spool files to a different output queue

I was asked if there was a simple way to check an output queue, and if there is a spool file of a certain name for one user, to move it to another output queue.

Fortunately this is not as complicated as it sounds as I can use a SQL Table function to retrieve a list of those spool files, and a scalar function to move the spool file.

In this example I am going to be the user, my profile is SIMON, and whenever I find a spool file QPQUPRFIL in the output queue MYOUTQ I want to move it to the output queue OUTQ2.

First I need to produce a list of eligible spool files. Here I can use the SPOOLED_FILE_INFO SQL Table function:

Monday, July 14, 2025

Some Power11 performance and efficiency information

I had been unable to find any information comparing the performance and efficiency of the new IBM Power11 to previous IBM Power servers. I reached out for this information to people I know and they shared with me an IBM document, whose information I have copied into this post.

Before we get started I need to briefly explain what rPerf is. It is a method to approximate the difference in performance between two Power servers. rPerf is only for AIX. For IBM i performance CPW is used. I found an IBM page explaining what rPerf is here.

All of the quotes I giving below are from the document I received. They are divided into Performance and IT Efficiency. While the document did not group them together I am doing so. I am not including the disclaimers with the quotes, as that will make it difficult to read. The disclaimers can be found at the bottom of this post.

Tuesday, July 8, 2025

IBM Power11 chips and servers are announced

Today is the day! The new IBM Power servers using the new Power11 chips have been announced.

Over the years IBM has developed increasingly more power Power, chips that have been significant improvements from the previous one.

Monday, July 7, 2025

New Modernization Techniques Redbook from IBM

On May 20, 2025, IBM published a Redbook with the title "Modernization Techniques for IBM Power".

The abstract that accompanies the Redbook on their website states:

This IBM Redbook offers a high-level overview of modernization, including key concepts and terminology to guide your modernization journey. It explores the components and architectural layers of the IBM Power ecosystem, demonstrating how they create an ideal platform for running mission-critical applications in today's world. The content is designed for business leaders, architects, and application developers.

It devotes a chapter, chapter 9, to the IBM i. I think it is worth downloading this document even if you only read chapter 9.

You can download this Redbook from the link here.

Wednesday, July 2, 2025

SQL table function to list all imports for ILE program or service program

This is one of the IBM i enhancements that was released in version 7.6, but not in 7.5 TR6. This new table function, PROGRAM_RESOLVED_IMPORTS, allows me to get a list of all the imports for an ILE program or service program.

This Table function has four parameters:

  1. PROGRAM_LIBRARY:  Library that contains the ILE program or service program. "*LIBL" is not supported.
  2. PROGRAM_NAME:  Name of the ILE program or service program.
  3. OBJECT_TYPE*PGM for ILE program, *SRVPGM for ILE service program.
  4. IGNORE_ERRORS:  Optional. NO when an error is encounter an error is returned. YES a warning is returned, this is the default.

This looks like:

Wednesday, June 25, 2025

How to identify flat files

The question was is there an easy way to identify "flat files" without having to use the DSPFD command. The answer, of course, is "Yes".

The questioner explained that a "flat file" was a file that was generated without the use of DDS or DDL. In other words, just with the Create Physical File command, CRTPF. For example:

  CRTPF FILE(MYLIB/FLATFILE) RCDLEN(100)

The questioner was finding he could identify these "flat files" with the Display File Description command, DSPFD, like this:

  DSPFD FILE(MYLIB/FLATFILE)

Tuesday, June 24, 2025

Michiganders join the RPGPGM.COM-unity

At the MiTec conference earlier this month more people joined 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.

Friday, June 20, 2025

Happy birthday to IBM Power and IBM i

Tomorrow, Saturday June 21 2025, is the 37th anniversary of when the IBM AS/400 was first announced. You can watch the video of the announcement in the UK here.

What a wonderful journey we have all been on all these years as the AS/400 (1988 – 2000) begat the iSeries (2000 – 2006), which in turn gave way to the System i (2006 – 2008), and finally IBM Power server running the IBM i operating system (2008 – Present). All the time being IBM's premier server and operating system providing modern functionality, stability and robustness to their customers.

Today the AS/400 looks dated, which it is. But IBM Power can hold its own compared to any comparable business system.

I think I did a good job describing this history for the 35th anniversary. If you are interested in learning more what AS/400 was, and what it has become, read the story here.

Happy birthday IBM Power and IBM i! May you have many more!

Wednesday, June 18, 2025

IBM makes it easier to delete old journal receivers

Old journal receivers can quickly become one of the big wasters of storage on any IBM i partition. I have written before how to identify receivers I think can be deleted. In IBM i 7.6 and 7.5 TR6 comes a new SQL procedure that makes it easy to delete the old receivers.

I need to define what I mean by "old receivers". An "old" journal receiver has been detached from its journal and saved. In my mind if it is detached and been saved, I can delete it. If I need the information contained within it, I can restore it.

I would not use the new procedure to look if I have old receivers, I would use the JOURNAL_RECEIVER_INFO View to get to the information I would want, before using the new procedure.

For example, if I want to find the ten oldest journal on my partition, I would use the following statement: