Update: An IBM i Service, using DB2 and SQL, provides the TR level more cleanly than with other approaches. I read of the improved approach in an article by Tim Rowe: https://systemideveloper.com/blogs/db2-for-i-services-use-sql-instead-of-system-apis/ by way of Club Seiden member PHP Dave.
IBM i services comprise a collection of DB2 and SQL objects that provide a wealth of system information. The GROUP_PTF_INFO view, for example, will display an IBM i’s Technology Refresh (TR) level to the user who runs this SQL:
SELECT CURRENT SERVER CONCAT ' is running ' CONCAT PTF_GROUP_TARGET_RELEASE CONCAT ' with TR level: ' CONCAT PTF_GROUP_LEVEL AS TR_LEVEL FROM QSYS2.GROUP_PTF_INFO WHERE PTF_GROUP_DESCRIPTION = 'TECHNOLOGY REFRESH' AND PTF_GROUP_STATUS = 'INSTALLED' ORDER BY PTF_GROUP_TARGET_RELEASE DESC FETCH FIRST 1 ROWS ONLY
When run on my server, the result was a single column, TR_LEVEL, with the value:
SEIDENI is running V7R2M0 with TR level: 3
Time for me to upgrade, yes?
Here was the original post with older techniques:
I recently needed to know if a client’s IBM i 7.1 system had Technology Refresh 4 (TR4). If it did, I could use the relatively new INSERT with remote SUBSELECT technique, which allows a single SQL statement to copy DB2 data from one partition to another. Such are the benefits of keeping current with Technology Refreshes.
After reading an article on TRs by Steve Will, I decided to document how to determine which TRs are installed on an IBM i system.
TRs, which were introduced with IBM i 7.1, are packaged as Program Temporary Fixes (PTFs). They can be found with the DSPPTF command.
First, determine the product number of the licensed internal code of your system. For 7.1, the product number is 5770999.
Then use the DSPPTF command followed by this product number. For example:
When run on my test system, this command produced a list of PTFs that included MF99007, MF99006, MF99005, MF99004, MF99003, MF99002, and MF99001.
Because Technology Refresh PTF numbers follow the format MF99nnn, where nnn is the TR number (bolded above), I knew that TR7, TR6, TR5, TR4, TR3, TR2, and TR1 were available. I was pleased to learn I could use TR4’s enhancements to DB2.