Able-One Blog

What is Digital Transformation?

The way in which society operates is fundamentally changing due to the world becoming increasingly digital. Companies are under greater pressure than ever to innovate quickly or risk being disrupted.

"Digital transformation is the profound and accelerating transformation of business activities, processes, competencies and models to fully leverage the changes and opportunities of digital technologies and their impact across society in a strategic and prioritized way, with present and future shifts in mind."


Business APIs Are A Key Component of A Digital Transformation Strategy

Industry boundaries are being disrupted as new entrants and transformed businesses move into marketplaces or extend their capabilities outside of traditional categories. Uber has disrupted the taxi industry, Netflix the Movie rental industry while companies like Apple and Starbucks have incorporated digital payment options for consumer orders.  Banks, insurance companies and retailers continue to emerge without physical locations.  Without a doubt, the API economy is a key contributor to fueling this disruption.

Traditional APIs (Application Programming Interfaces) were extremely complicated and meant for connecting to other software programs or a limited internal or external audience. In the emerging API economy, thousands of secure and easily consumed business APIs should be leveraged and managed to extend business assets, data or services as well as to connect to external assets, data or services.

Digital Transformation Case Studies and Examples:

Goldman Sachs.gif  

Goldman Sachs

Used artificial intelligence to do forex trading. In 2001, they had 600 cash traders. In 2016, they had only 2.
canadian banks.jpg

Canadian banks

Are shifting towards digital. Consumer behaviour is moving increasingly towards convenience, and this is disrupting the traditionally brick and mortar banking industry. As a result, young startups who are digital first are gaining traction in the market.


Is one of the most recognizable and reputable worldwide brands. That isn’t stopping the company in being proactive in challenging competition. They are being aggressive in adopting and challenging Tesla in the electric vehicle space.


Steps for Launching Digital Initiatives: 

Step 1 - Gather feedback internally from clients, leadership, and staff. Ask them about what the company needs to do to be better? What is inefficient? What are other people doing? Where is the pain points?

Step 2 - Quick Win - Pick an initiative that is critical for the team to invest time into and pursue that with focused energy. Classic Team Psychology - Go after a quick win to gather support and momentum for the future.

Step 3 - Take a long-term approach from the beginning. Document the process for implementing this new initiative so that the learnings can be applied to future opportunities. Adapting to change isn’t a one time thing and therefore, change management is a skill to be developed.   

I need help with my Digital Transformation Strategy

Able-One Systems offers consultations for executives and companies looking to understand how technology can unlock extra value. Able-One Systems is a trusted partner when it comes adopting and implementing digital transformation initiatives within organizations. Consider leaning on Able-One Systems’ expertise. Digital transformation is a journey and not a destination.

Want More?

If you would like to learn more about ways companies are improving their customer experiences with digital transformation strategies pleasse join our webinar:

API economy - linked in.jpg



Or listen to our podcast on adopting process and leveraging technology to Succeed in the future:


Topics: Modernization

Top Ten Reasons for PHP on IBM i

By Eden Watt, Vice President, Application Innovation, Able-One Systems & Amy Anderson, DIrector of Business Development, Zend


In a previous blog - - we reviewed the myriad of reasons to use the PHP scripting language for your web and mobile applications.  In addition, we briefly reviewed how Zend makes this Open Source language a robust platform for enterprise application development.  But did you also know that Zend Server provides a native PHP solution for IBM i and that thousands of organizations are running PHP apps on IBM Power platforms?

Today, we share the Top Ten Reasons for using PHP from Zend Technologies to modernize your IBM i applications.


The IBM i integrated operating system lets you focus on your application instead of the underlying technology and, unlike other platforms, you don’t have to worry about the stack underneath it.

You’ve heard of LAMP (Linux, Apache, MariaDB or MySQL, PHP) and other stacks that come into play for deploying PHP but if you’re on IBM I, your database and application server should be all set.  Maybe we can call it iP or iAP..

The original architecture of AS/400 included integration of relational database, security, networking  and storage management with use of single-level storage to remove the necessity of customers managing storage.  Combine this with an object-based operating system to ensure integrity and reliability, the technology independent machine interface (“TIMI”) which allowed compiled programs to move from one release and one processor family to another without recompilation and expectations that multiple workloads can be run on the machine with load-balancing capabilities and you have a platform built to handle the most complex business applications.

Compared to IBM i, most open source stacks require a “Do It Yourself” approach that is prone to configuration errors and component mis-matches.  This forces the developer, who wants to focus on building great applications, to deal with operating system settings and load balancers.  On IBM i, these things are handled, giving the developer more time for innovation.


PHP Runs Best on POWER8

As is well documented, the POWER8 processor is significantly faster than POWER7, and improves user throughput.  Among its many advantages, POWER8 handles dynamic languages, including PHP, more efficiently than POWER7.  So without any modification to the app and without changing and settings on the processor, POWER8 will just be faster.

At the same time, the open source PHP community has released PHP7, which provides a 2x performance improvement over its predecessor, PHP 5.6.  So between a faster processor and a faster PHP kernel, IBM i customers will find that tremendous performance gains when they run PHP7 on POWER8.


"Cadillac support" at open source prices

IBM i service and support has long been the envy of the tech industry.  IBM i support has consistently ranked in the top 5 for customer satisfaction.  Many customers would even agree that they have been somewhat spoiled by IBM’s long term support for the software and operating system.

Zend has followed IBM’s lead in providing extended support for older versions of PHP that the open source community has dropped.  For example, both PHP 5.3 and 5.4 are no longer supported by the community, but Zend has a multi-year commitment to supporting those versions. 

When running business-critical applications, slow and incompetent support is not an option, no matter how it’s priced.  Both IBM and Zend deliver fast response times and expert level support so that businesses can operate smoothly and confidently.


Your web & mobile apps will be easier to manage and fast to deploy

Zend Server is an enterprise PHP application server powering deployment for web and mobile development.   In PHP, deploying an application is the process of copying, configuring and enabling a specific application to a specific base URL on Zend Server or on a cluster. Once the deployment process has finished, the application becomes publicly accessible on the base URL. Zend Server automates the deployment process, providing productivity gains as well as minimizing human error in the deployment process.

But the biggest productivity gains come from using Z-Ray, which gives developers real-time, non-intrusive insight into their website and mobile applications, improving performance and speeding time-to-delivery.  Z-Ray is available in Developer, Professional, and Enterprise Editions.


Leverage your IT assets and deliver leading edge solutions

The prevailing assumption at most businesses is that analytics, content management, and mobile apps must all be built on the x86 platform.  If you run your core business applications on IBM i, that assumption forces you into an expensive and labor intensive exercise of building and maintaining an extract and transfer process to move data from IBM i to your new applications. 

But the x86 platform is not a requirement for your new applications.  Zend Server runs natively on IBM I, and it is the very same code base that runs on x86 platforms.  By building your web & mobile applications on IBM i, you can avoid the hassles and expense of maintaining a data transfer process.

Zend lets you better leverage the resources you've already bought and enable new technologies with minimal disruption to the business.


Easier Systems Management

As every IBM i customer knows, the integration of the hardware, operating system, database, and storage drastically simplifies systems management.  Your PHP applications can enjoy the same level of integration and simplicity when you deploy them on IBM i. Just  as IBM i manages the system components on behalf of your core business applications, so will it manage the same for your web & mobile applications when you build them with PHP on IBM i.


Procedural or OO Development – It’s your Choice

Many of the development languages currently in use for web & mobile applications require an object oriented development approach.  While this is a proven technique for app development, it can be a daunting step for IBM i shops, where the development team is steeped in procedural programming .

PHP helps you bridge that gap.  With Zend Server on IBM i, you can start with a procedural approach that will be comfortable and familiar to your RPG and COBOL developers.  As your organization grows in its familiarity with PHP, you can start using some of the objects in the Zend Framework.  And if you have developers who are eager to go all in on object-oriented, they can easily go there with Zend Server.

No one is forcing you into a new development paradigm, but it's there if you want to go there.  ie, procedural to OO programming; go when you want, if ever.

Take advantage of a programming language with millions of developers worldwide, used by some of the most popular online content management systems

Use Zend Studio PHP IDE, which allows developers to edit code and with debug and build automation tools. 


Easy to secure, less vulnerable to hacks

People in the x86/open source world don't know what they’re missing but those of us that have managed this platform for years, know that this true..

IBM i security plus Zend Guard to protect PHP applications with encoding and obfuscation, prevent reverse engineering and to secure website intellectual property.  


Lowest Total Cost of Ownership in the industry

You’ve heard it before.  Managing enterprise applications on IBM i has been reported as the most economical platform.  The vast majority of IBM I shops believe the platform delivers better ROI than other servers.

So now you can take advantage of this for your web and mobile interfaces too with PHP Zend for i.


Native Integration to extend your legacy applications

Zend has an open source PHP toolkit for the IBM i that enables native integration with all IBM i objects – RPG, ILE, CL, C, data areas, DB2/400…

Topics: Modernization, PHP

Modernization and The Third Platform

By Eden Watt, Vice President, Application Innovation, Able-One Systems

Gartner, IDC and other industry analysts produce compelling research which drives organizations towards technology innovations which transform business. A key concept in this research involves what they call the Third Platform, also known as SMAC (Social, Mobile, Analytics, Cloud), which is defined as consisting of the inter-dependencies between mobile computingsocial media, cloud computing, big data/analytics, and now the Internet of Things (IoT).

According to this terminology, the first platform refers to mainframes, which began in the 1950’s and continue today, for example with IBM i, z, p servers. The second platform represents the client/server architecture, which became popular in the 90’s and also continues today with desktop applications interfacing with back-end servers (including ‘mainframes’). 

Figure 1 below is a graphical representation of the Third Platform, from IDC. For a great summary of this material, including videos, check out


It’s important to note that if your platform is considered ‘first’, this doesn’t necessarily mean it needs to go or be replaced, however, it’s important to consider how one incorporates newer capabilities and technologies with existing applications and infrastructures. This leads us to the ever popular topic of modernization.

Modernize means to enhance something to make it current. Some organizations may not consider their projects to be ‘modernization’ projects but if you’ve extended your enterprise systems to enable mobile or web interfaces, perhaps enabling customers to order online, perform web inquiries, fill out e-forms… or used web services to automate business processes or interfaces between systems… or upgraded your DB2/400 database to SQL… or mined your data sources to perform business intelligence or advanced analytics… or provided more advanced tools for your developers… or re-engineered business processes to reduce manual steps or increase automation… well, you get the idea. If you have enhanced your business applications and application management in any of these areas, then this is typically considered a modernization project.

Some object to the term because it implies that what you’re starting with is old or out of date. And we typically refer to modernization of ‘first platform’ systems as legacy systems or some, who do not want to offend, have called them heritage systems. The bottom line is that if the core of the application, including the user interface design, database, and application code was developed in the 90’s or earlier, then it fits in this category. It’s not a bad thing and it doesn’t mean that it hasn’t served the business well, both in the past and today, however, it’s probably a safe bet that the original architecture was not designed to take advantage of current technologies in the “third platform” which is important to remain competitive and support your business goals.

The specific business drivers for a modernization project can be varied, ranging from the need to deliver applications to customers and partners, integrate applications after acquisitions or line of business changes, reduce manual, paper-based or redundant processes, deliver operational efficiencies and workflow improvements, streamline, automate, assist executives in analyzing business trends, enable roaming employees to do their jobs from mobile devices and so on.

The technology evolution we’ve seen in the 2000’s is leading to, “Nothing less than the reinvention and continuous transformation of every industry in the world,” according to IDC’s Chief Research Officer, Crawford del Prete. 

So, whether you are reacting to a specific, upcoming business challenge and related modernization project or are working with your organization to plot a strategic direction for the future, IT leadership is critical to business success in this Third Platform Era.

On December 2, 2015, we’re hosting an event for Application Managers to collaborate on the latest strategies and technologies for modernization on IBM i.

Modernization has been stated as a top concern with organizations, particularly those with mission-critical applications on IBM i servers, in numerous studies. IBM i has a solid reputation in areas such as low cost of ownership, power, scalability, reliability, and security but because of its initial, widespread growth in the 1990’s via software applications developed in that timeframe, many organizations today are working with systems that may need to be updated or extended to take advantage of current technologies.

The key goal of any modernization project must be to leverage your investment in key enterprise systems by extending them to align with current business goals and technology innovations.

The IBM Power Systems running the IBM i operating system, previously known as AS/400 or iSeries, can continue to be a strategic platform to operate your business for years to come but we believe ongoing application modernization, extensions, and/or retooling are key to ensuring that the rest of your organization believes this too.

However, modernization is used to describe a wide range of tactics and strategies and not every approach makes sense for every organization. We will continue to share customer stories, the latest technologies and strategies on this blog, at our events, and in our dealings with our customers. If this is of interest to you, we’d love to see you at our event which we plan to make both informative and collaborative so you can determine what make sense for your business.

To explore options for modernizing your applications, join us in-person for a special event on Wednesday December 2, 2015 from 12 PM to 3 PM in Toronto. Register today.

Register Now!

Topics: Modernization

To SQL Or Not To SQL? That Is The Question That Faces Today’s RPGLE Programmer

By Chuck Luttor, IBM i Software Developer at Able-One Systems inc.

SQL has been a standard for relational database management and access since the 80’s across platforms, and it has been offered for IBM i for almost 20 years, however it is still not in use by many IBM i shops. This is because DB2/400 was originally released with DDS and it wasn’t until the early 2000’s that SQL started to perform better on IBM i.

In the past 15 years, IBM has invested heavily in SQL on IBM I and is incorporating all new advances in the database into SQL.

On top of that, IBM provided the Generate Data Definition Language (QSQGNDDL) API to generate the SQL data definition language statements from DDS years ago and there are many complimentary tools available to make this easy.

So, why are so many shops still using DDS? After all, how can we, as IBM i developers, hold our heads high and claim that we are doing the best jobs possible if we are missing out on the last 15 years of DB advances which IBM has incorporated into SQL for i? We can be much more productive by using all the great additional capabilities that today’s SQL provides. As an aside I recently heard Frank Soltis state that almost all DB enhancements for the i were made to SQL and that with only a few exceptions, DDS has not been enhanced since 2000. I will take his word for it.

As an RPG programmer, I believe that it is not only desirable but necessary to replace both DDS and RPGLE op codes with SQL Data Definition Language (DDL) and SQL input/output statements. However they are separate steps within the SQL project. Which is best done first? DDL redefinition of the existing database in and of itself is useful only for some hardware performance gains. SQL I/O in RPGLE programs can help programmers be more productive. So the latter step should come first because they are much more valuable and costly than the hardware. And that step can be accomplished by the programmers themselves without anything more than management’s agreement and a measure of initiative. How many IT projects are that low cost and high return?

To achieve the next step, DDL database redefinition, IBM has kindly arranged the i’s Database so that this can be done without any recompiling of the existing RPGLE programs. DB management tools are available to automate the tedious job of creating SQL to update and reformat DB objects by providing “select the options” GUIs which provide both documentation/cross reference and promotion tools. DB administrators still not required. However, that topic is for another blog.

My Plan

It will be my task in this blog to demonstrate beyond any reasonable doubt that the average RPGLE developer can quickly become proficient in replacing RPGLE DB operation codes with their SQL equivalents when new programming is undertaken.

In each installment of this blog I will visit an op code or set of op codes in order to prove my contention. I used the IBM i which was handy for me, to generate and test my examples. It is at V7R1 with the latest Technology Refresh level and my example code is fully free-format. I believe that every RPGLE programmer will understand the examples even if they do not yet have access to V7R1 and/or full free-format.


First up today is CHAIN. I remember this op code from System/3 Model 6 and Model 10 disk days. Yes I have been around for a long, long time. It has been used extensively by every RPGLE programmer since then. It is the basic op code for random access. In the “old days” it was used extensively to access disk records by relative record number as well as by key. Probably no longer.

Let us discuss its keyed disk access merits vs the merits of its SQL equivalent, SELECT INTO.

Part 1 - File Definition (see part1 in col. 1 at line 000105 of example 1)

Explicit definition of files is required by RPGLE and not required by SQL. In fact each SQL SELECT INTO can specify its own lock and isolation parameters which we will review briefly in the SELECT’s clauses. If CHAIN(N) and UNLOCK are also used then this is a wash as far as locking is concerned.

Part 2 - Data Definition (see part2 in col. 1 at line 000109 of example 1)

I, for one, always define my normalized records with an external data structure, that way in debug I can see the whole record with one eval command. But this is not necessary in RPGLE and is necessary in SQL if we are to conveniently access the row’s data. Otherwise, we must individually specify each column. Now if we have a 1000 column row which is quite possible in a VIEW or LF with extensive joins then it may well be to our program’s performance advantage to specify only the columns we want if they are few enough. Beyond a dozen columns or so, I say use a data structure, my time is valuable. Now such a VIEW or LF could save many CHAINs and SELECTs.

Although the logical purists among will argue that this is a requirement of SQL and not of RPGLE, I say that there is no meaningful program which does not require some debugging of input/output and therefore this DS is also a requirement in RPGLE. I say part2 is a push (betting term for a draw) between opponents.

Part 3 – Record or Row Access (see part3 in col. 1 at line 000121 of example 1)

We have arrived at the heart of the matter. Compare, if you will, the CHAIN statement at line 122 with the SELECT INTO statement stating at line 127. Clearly the SELECT is more complex and for the unfamiliar will require some learning. Now also consider the effort that is required with CHAIN to accomplish the same things that this SELECT statement is capable of. We will consider each row as shown below.






I think we can all learn immediately that “select *” reads all the columns of a TABLE or VIEW and that we can specify individual fields separated by commas, just as easily. For example: “select vendno, vendname”. This is very similar to RPGLE where by default we read all fields and must specify the input record fields if we wish to read a subset.



Host program variables are distinguished from SQL variables/column names by putting a semi-colon in front of them. Not at all different however than an op code with a data structure as its result. But consider, if you are accessing a master record in order to place some field(s) into a transaction record if and only if the master file row with the specified key exists then you could do this “select vendname into :transvname where vendno = :transvno”.



Usually we would use the IBM i object location rules. Then this would be taken as *LIBL/VENDFILE. We could specify LIBRARY/FILE also. We could opt for SQL rules but that is unlikely.


vendno = :vendno

This is the KLIST or as in our example CHAIN, the key parameter. A bit of extra keying but surely no effort to learn. Again this where clause can be very powerful. Many IF statements following the CHAIN can sometimes be replaced.

For example, suppose there were many types of vendors and we needed to add transaction fields only for type ‘A’. Consider “select vendname into :transvname where vendno = :transvno and vendtype = ‘A’”. But keeping it simple the where clause is really the equivalent of an IF TRUE statement.



Simply, this means no commit control and no lock. It is the default but may not be what you want when concurrent access is an issue (you may not want to read uncommitted rows). Each SQL statement can have its own locking and isolation parameters. If you want exclusive locking you would code “with RR use and keep exclusive locks”. Then you would need to issue an UPDATE, DELETE or INSERT followed by COMMIT or a ROLLBACK. Isn’t it time to use commitment control anyway?

Finally, omitting this clause will default the SQL statement to the commitment control and isolation level set previously. We will deal with isolation, row locking and commitment control in another installment as it is too extensive a topic to adequately discuss here.


first row only

Always include this clause for compatibility with CHAIN’s behaviour for duplicates. You can omit this clause if you want to check that the SELECT returns one and only one row. The multiple rows returned error, SQLSTATE = ‘21000’ or SQLCODE=-811, assigns variables unpredictably.

Part 4 – Exception Handling (see part4 in col. 1 at line 000134 of example 1)

For the straightforward found or not found condition is there really anything to choose from? SQLCODE will be something other than zero for any conditions other than row found and all data transfer successful. SQL does however give the programmer access to a wide range of warnings as shown above.

Exception handling will be another day’s topic. There will be no substitute for familiarizing oneself with the SQL Reference Manual and the SQL Messages and Codes Manual in the same way as the RPGLE Reference Manual. They are all available on-line.

Replacing CHAIN with SELECT INTO

In conclusion, the learning required to replace the typical CHAIN is remarkably easy (except for isolation and that is not easy in any context) and I venture to suggest that within the first 20 SELECTs a considerable majority of programmers will have it in hand.

I have kept it simple by considering only the CHAIN equivalence. If we had considered all the other capabilities of a SELECT INTO statement this article would be both orders of magnitude longer and so confusing that no one would want to convert.

Stay tuned for our next blog post, when we discuss SETLL and READE vs DECLARE CURSOR and FETCH.

If your company needs assistance with deciding on an SQL vs no SQL approach, contact us today for a free consultation.

Topics: Modernization

Written by


Signup for Our Monthly Newsletter