Find the Technology Refresh (TR) level of an IBM i

Update: I have since learned that the “PTF” IBM i Service (DB2 and SQL) provides one’s 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:

DSPPTF 5770999

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.

ZendCon+Tutorial discount expires Aug. 31

ZendCon, the premier PHP conference, October 27-30, 2014, in Santa Clara, California, has a discount expiring August 15 31 (extended!). When you register, be sure to include the tutorial day (Oct. 27). If you already registered but forgot to add the tutorial day, you can contact the organizers via a link at the bottom of the registration page. Among other half-day tutorials, I’ll be presenting two focused on IBM i:

  • PHP Performance on IBM i
    • If you’re interested in performance of PHP, or IBM i generally, in order to scale your application up to meet increased user demand, or if you have specific performance needs right now, you’ll want to attend.
    • Additional insight to be provided by IBM’er Tony Cairns (see below)
    • Testimonial from last year: “Our process now runs 30-50% faster, thanks to one tip from Alan’s presentation.”
      —Mike Meszaros, Software Developer, Specialty Pipe & Tube
  • DB2 with PHP in Depth
    • DB2 on IBM i has received major enhancements over the past year, including a dozen new settings in the PHP ibm_db2 middleware. Hear  how they can help improve security, performance, and stability. Other topics will include, but not be limited to:
      • Basic topics (with added commentary to make it interesting for everyone) such as library lists, prepared queries for security, persistent connections
      • DB2 in frameworks
        • Zend Framework 2
          • Including pagination (page-at-a-time logic)
        • Status of PDO and how it can be used in Laravel and other frameworks
      • The real scoop about modernization and the DDS vs. DDL (SQL) debate
      • Connecting to IBM i’s DB2 from Windows and Linux and other IBM i partitions
      • How to link MySQL-based applications (WordPress, etc.) to DB2 with the DB2 Storage Engine, with special tips
      • Using DB2’s HTTP features to make PHP-based web services even more accessible, including to allow RPG to call PHP and get results back
      • How to optimize queries
      • Strategies to safely open your application to the public
      • Topics and questions that YOU request (contact me in advance if you wish)

My co-presenter for tutorials will be IBM’s Tony Cairns, who helped bring PHP to the IBM i in the first place. He also created XMLSERVICE (toolkit back-end) and is a maintainer of ibm_db2 on the IBM i. One reason Tony comes to ZendCon is to hear from attendees such as yourselves. Normally he stays locked up in his lab. Take advantage of this opportunity to meet him. Watch Tony and me argue and debate in front of the class!

I’m also presenting a session during the regular conference about the PHP Toolkit for IBM i. I’ve updated my presentation with new features of the toolkit and best practices for calling RPG and COBOL.

ZendCon‘s topics are generally advanced ones to enable professional, enterprise-ready development practices. There’s also an IBM i track and plenty of networking time so that IBM i users of PHP can learn from speakers and each other, making the conference appropriate for intermediate users of PHP on IBM i as well.

Hope to see you there, October 27-30, 2014! Remember to register for tutorial day when you register for the conference. Get in touch with questions you’d like answered during my presentations.

ZF2 and DB2 for IBM i

I’d like to address questions about DB2 support in Zend Framework 2.x. Because I helped create the IBM i-friendly DB2 adapter for Zend Framework 1.x, I’ve followed the development of a similar adapter for ZF2.

(updated January 30, 2013, upon the release of ZF 2.1)

Q. Does ZF 2 include an adapter for DB2?
A. Yes! Starting with ZF 2.1, which was released today.

Q. Is Alan’s IBM i-friendly DB2 adapter for Zend Framework 1.x needed in 2.x?
A. No. Because ZF’s Zend_Db equivalent in 2.x works differently than in 1.x, my 1.x component is not needed in 2.x.

Q. Does ZF 2.1’s DB2 adapter work with IBM i?
A. Yes! Please try it and provide feedback to the ZF team.