PHP 8.2 for IBM i Now Available — PHP 7.4 Frozen

It’s time to upgrade your PHP! If it seems like you just heard this from us, you’re not wrong.

By gradually deprecating features and techniques that no longer represent best practices, PHP nudges developers to keep their applications current, ready to address new business needs.

That’s why the PHP committee recently announced PHP 8.2 and froze PHP 7.4. Even PHP 8.0 now receives only security fixes until it enters end-of-life on November 26, 2023.

If you’re feeling helplessly behind, you can relax. Our support team knows how to ease the transition from PHP 7.4, 7.3, 7.2, 7.1—and yes, even PHP 5.x! We can help get you back on track for smaller, easy-to-manage PHP upgrades. And if you opt for SmartSupport, we will walk you through regular PHP tune-ups, making your next upgrade that much easier.

PHP.Net’s calendar of supported versions

So yes, it’s time to upgrade your PHP! Let’s put the legacy of technical debt behind us.

PHP 8.2 Now Available in Seiden CP+ PHP

As part of our commitment to keep PHP applications on IBM i up-to-date, we released our CommunityPlus+ PHP 8.2 for IBM i on December 8, 2022, the day the PHP community announced general availability.

Key changes are highlighted below. For details on PHP 8.2 features, we recommend this coverage by PHP.Watch.

New Features in PHP 8.2

Improvements to ODBC connection string handling (submitted by our own Calvin Buckley)
Readonly Classes: PHP 8.2 builds on PHP 8.1’s ability to declare readonly for class properties to let you declare an entire class as readonly
Allow null, false, and true as stand-alone types
New “Random” extension

Deprecated Features

Dynamic Properties
utf8_encode() and utf8_decode() Functions
Mbstring: Base64, Uuencode, QPrint, and HTML Entity Encodings
${var} String Interpolation

Installing/Upgrading PHP 8.2 on IBM i

While PHP.net offers migration guides, they are not IBM i-specific. Contact us if you’d like our advice on upgrading PHP for use with IBM i applications.

Db2 for IBM i: Confounding and Constricting Concatenations

 This month’s title is a bit of a tongue twister, but the
title does capture a problematic SQL coding practice with concatenations that
has been popping up in recent SQL Performance Assessments performed by our IBM
Technology Services team. Speaking of tongue twisters, did you know that MIT
researchers developed the toughest tongue twister in the world of “Pad kid poured curd pulled pod”? I have no
idea what this phrase means, but I do know about the confusion and poor
performance that can be caused by suboptimal usage of the SQL concatenation
support. 

Let’s start by looking at the concatenation coding practices
that we’ve been finding when analyzing customer’s SQL requests. The following
two SELECT statements contain the subpar coding pattern of comparing the concatenation
of two column values with the concatenated result of two other columns. This
concatenated comparison shows up on the join condition of the first query and
the WHERE clause of the second query.

SELECT * FROM tab1 a INNER JOIN tab2 b
ON a.c1 || a.c2 = b.c1 || b.c2

SELECT * FROM tab1 a
WHERE CONCAT(a.c1, a.c2) IN
(SELECT CONCAT(b.c1, b.c2) FROM tab2 b)

The
alternative to the concatenated column comparisons is comparing the individual
columns and then logically ANDing the results of those individual comparisons
(e.g., a.c1 = b.c1 AND a.c2 = b.c2). When comparing the two approaches, I
believe that the individual column comparisons are easier to read and
understand. While this opinion can be debated as programmer preference, there’s
no debating that the concatenated column comparison will result in slower query
performance.

There
are a couple of reasons that this concatenation coding practice is a poor
performer. First of all, comparisons that include an expression or derivation
severely limit the query optimizer’s ability to estimate how many rows in the table
will be selected or processed. When this number of rows estimate generated by
the query optimizer is inaccurate, there is a greater chance for poor query
performance. Second, the concatenated columns comparison prevents the use of
normal indexes to speed up the query execution. Indexes are often the fastest
way to perform the specified column comparison, but normal indexes are not an
option due to the concatenated expressions in these two examples. Yes, a
derived key index could be created that includes the concatenation in the
column example. However, there’s a good chance that you already have a normal
index created over the columns being concatenated. 

Now that
you understand the drawbacks of the concatenated column comparisons, let’s look
at the optimal way of coding these two example queries. As you can see, the
join query can be rewritten in one of two ways to improve performance and
readability.

SELECT *
FROM tab1 a INNER JOIN tab2 b
ON a.c1 = b.c1 AND a.c2 = b.c2

SELECT *
FROM tab1 a INNER JOIN tab2 b
ON (a.c1, a.c2) = (b.c1, b.c2)

The
second join query utilizes a row value expression to simplify the join condition by removing the need to include
the logical AND operator. These two queries will perform exactly the same, so
this is strictly a programming style preference when deciding which syntax to
use.

The
rewrite of our second example SELECT statement also uses the row value
expression syntax to eliminate the concatenated column comparison. 

SELECT * FROM tab1 a
WHERE (a.c1, a.c2) IN
(SELECT b.c1, b.c2 FROM tab2 b)

Like many programming languages, SQL offers more than one
way to get your work done. While this flexibility can be a good thing, you have
also now learned that not all SQL solutions are created equal in terms of
performance.

This is my last entry for 2022 – have a Merry Christmas
& wonderful holiday season and we’ll talk in 2023!

How To Renovate And Reuse IBM i Software – Analytics Insight

Many businesses have been actively using digital technologies to automate their functions in recent years. However, many companies use old IBM i software that performs all the necessary functions.

Because technology is constantly evolving, the task of IBM application modernization becomes essential. This article will explain how to renovate and reuse old IBM i software.

 

What Is IBM i Software?

IBM i is a multi-user operation system created by IBM. It has an object-oriented architecture, an integrated DBMS, and high security. Also, IBM i has tight hardware integration.

IBM i is used for running integrated applications. It handles hardware and software resources and provides an interface that we can use to interact with the system. IBM i software has high performance and low price.

 

Why Do We Need To Keep Legacy Applications?

Legacy applications enable mission-critical business operations and features customized to meet the company’s needs. They are reliable and proven, as they have been used for a long time to automate the company’s work.

In addition, legacy applications meet the company’s needs, as they have been updated and modified during the life cycle and have survived waves of technological changes. It will be difficult for new applications to offer the same functionality.

It is challenging to replace legacy applications, as they are built on legacy technologies, require special maintenance skills, and do not have integration points.

 

Why Do We Need To Renovate Legacy Applications?

Almost all applications are constantly maintained and improved. The main reasons for this are changing business requirements and the emergence of new technologies.

When an outdated application cannot effectively support current or new business goals, it is time to upgrade. IBM i modernization provides an opportunity to upgrade legacy applications and continue to use them while taking advantage of modern technologies.

 

Let’s list other reasons to modernize a legacy application:

Does not have the ability to integrate with new applications
High maintenance and support costs
Lack of employees who know how to work with outdated technologies
Uses hardware or operation system that is no longer supported
Does not comply with government regulations and standards

After modernization, legacy applications will be able to work with new business models (for example, selling on the Internet). Their quality increases, maintenance costs are reduced, and access to information is simplified.

 

Which Layers Of The Software Do We Need To Renovate? 

You can modernize the entire application or just individual levels of it. For example, you can divide the application architecture into three layers: the presentation layer, the business layer, and the data layer. Below, we will consider the features of modernizing each level separately.

 

Presentation Layer

The presentation layer is the user interface. During its upgrade, we replace the green screen terminal display with a graphical display that we can create via a computer or mobile device or render through a browser.

Modernization at this level makes it possible for a legacy application to look and work at the presentation layer like a modern application. However, this does not need any changes to the legacy application.

 

Business Layer

At the business level, we implement algorithms that automate business processes. We perform data processing and implementation of business rules at this level.

Modernization at the business layer involves extracting business rules and enabling other applications to access them. Therefore, we can do this by restructuring the code or creating web services.

 

Data Layer

The data access process is often mixed with other processes in legacy applications. Modernizing the data layer means separating the database from the application and creating new data access mechanisms. Thus, this process makes the data more accessible to other applications.

 

How To Renovate Legacy Applications?

We can divide application modernization methods into several categories. Usually, we use several methods simultaneously during the modernization process.

 

Screen Scraping

This method takes the legacy application’s original screen and converts it to a graphical one, such as an application or a browser. At the same time, the main logic of the application remains unchanged; only its external display changes.

 

Adding a New User Interface

This method is similar to screen scraping. It can allow you to expand the content available on the screen and change the way we display the parts of the screen. In addition, developers write scripts recognizing screens, their purpose, and content.

With scripting, you can turn the original screen content into a new presentation and hide and augment the screen content to make the screen more useful. However, it is difficult to modernize business processes using this technique since the application logic still needs to be updated.

 

Exposing Business Functions as Callable Services

Turning legacy applications into callable services makes the functionality of the legacy application available to other applications. This method also allows you to detect business functions in a legacy application. After that, you can create web services that implement the selected functions using modern development tools.

 

Application Migration

This method applies modernization to business functions rather than the entire application. Migration allows you to move or replace discrete functionality blocks in a legacy application. Thus, the advantage of this approach is a phased modernization.

 

Application Re-Hosting

Re-hosting is the process of moving an outdated application to another platform. This method uses new equipment, operation systems, and software. At the same time, legacy applications retain their functions and work without changes.

This method does not upgrade the legacy application but allows you to retire older hardware and unsupported operating systems.

 

Outsourcing

Outsourcing is a technique in which an outsourcing company takes over the maintenance and improvement of a legacy application. Therefore, you can keep your legacy application running smoothly.

 

Application Rewrite

Finally, rewriting a legacy application allows you to create a new application using modern technologies based on the functionality of the legacy application. You can use legacy application functions as a guide for writing equivalent functions in a contemporary programming language.

Rewriting allows you to modernize the application architecture. You can also expand its functionality. However, adding additional features increases the load on the project, which requires more careful management.

 

How To Modernize IBM i Software With LANSA?

In conclusion, LANSA provides many solutions to support different techniques and stages in your old IBM i software renovation process.

LANSA’s aXes is one of the most important solutions for modernizing old IBM i software. aXes also allows you to quickly and easily upgrade the application at all considered levels by any method.

aXes allows you to quickly provide secure Internet access to any application on any device connected to the Internet. It converts 5250 applications into web pages on the fly. Also, it can add additional features to green screens.

Using aXes, you also get access to many web user interface controls. In addition, you can improve the efficiency of your application using new business processes.

aXes also allows you to access spooled files and query a DB2 database remotely without any code.

Additionally, it provides many other fabulous solutions to support various techniques used in the renovation process. They include:

Visual to create new applications
RAMP to combine new & old applications
Dynamic secure access to IBM i resources via .NET Applications

Tags: Axes, IBM i, IBM i Application Modernization, IBM I Modernization, IBM I Software, LANSA

IBM United States Announcement Letters

Verified by MonsterInsights