AS400 Operating System Introduction

So what makes the AS/400 Operating System so special?

The AS400 Operating System is one of the most modern Operating Systems in wide spread use today.  I was at an interesting talk given by Doctor Frank Soltis the chief designer for the IBM AS/400 and the IBM System 38 that came before it. He explained that Windows can trace it’s roots back via Windows NT to VAX VMS, Unix, Linux and OSX can trace their roots back into the late 60’s. In comparison OS/400 or CPF (Control Program Function) as it was known on the System/38 was designed the ground up in the 1980’s.

In current terms OS/400 has more in common with the Java Virtual Machine (JVM) than operating systems like Windows. OS/400 has a machine independent layer that sits between it and the underlying processors and hardware.  Over the years the processors have changed many times, for example from CISC to RISC whilst marinating software compatibility. Software first compiled in the 1980’s on long forgotten hardware can still be run on the latest hardware today without being recompiled.

In addition to the Technology Independence Layer, OS/400 also features something called Single Level Storage.  In computer software the most expensive operation is the Branch operation. This is where the processor switches from one task to another.  OS/400 handles this by having a single continuous 128 bit  address range. This covers all the physical memory and disk storage. The Operating System then uses heretical storage management to move the most frequently used content into the fastest memory in the Single Level Storage. These days this will range from slow mass storage drives, SANS, fast drives, SSD’s to RAM.

OS/400 is not a truly Object Orientated Operating System in the current sense (i.e. inheritance and polymorphism) but it is Object Based and very much embraces Encapsulation. Being Object Based literally everything on the system is an Object. Each object has a set of interfaces and can only be accessed through those interfaces. This has made the platform incredible secure as most of the memory overrun and buffer attacks that hackers exploit on other platforms are not possible.

The other interesting thing about OS/400 is that it has a built in database. These days it’s called DB/2 and shares much of the DB/2 technology from other platforms. OS/400 uses this built in database for many of it’s own storage requirements. DB/2 on iSeries leverages the Single Level storage to be highly reliable and low maintenance.  Unlike on other platforms the AS/400 will run for years without any operator or DBA (Database Administrator) assistance.  For example I’m aware of several companies in the UK where AS/400 applications run for years on end with little to no operations support. I’d contrast this with Microsoft SQL Server based applications where performance degrades if not given regular attention.  IBM S/38 was the first commercial computer to implement a Relational Database using SQL. This took the conceptual work from Ted Codd at IBM and implemented it for real in the S/38.  At the time the S/38 CPF Operating System was ahead of the processing power really available for this type of processing. It was slow but successfully proved the vision of a Relational Database based on SQL. IBM had invested everything in the development of the S/38 and continued this investment as they improved the processors, hardware and Operating System and relaunched it in the 1990’s as AS/400.

The AS/400 as a whole is often perceived to be out of date (by people who don’t know better) because it still runs many Green Screen or Character based applications on dumb terminals or terminal emulation.  From a systems architecture perspective this is no more relevant than say the console interface on Mac OS (OSX) or the Terminal Interface on Windows. These days most modern applications are browser based and the users would never know that the backend is running on OS/400.

For anyone studying Systems Architecture or Computer Science OS/400 is something you really must study to get an alternative view of how well a fully integrated, single vendor system can work on an enterprise scale. Few doubt this today on the desktop or iPhone when they look at Apple products.


How to delete or change DB/2 SQL Stored Procedures with duplicate/same name.

Using DB/2 for IBM i (aka IBM AS/400 or iSeries) I was trying to drop a stored procedure using the command

DROP PROCEDURE TEST/TEST_FTP;

But was getting a message

Message: [SQL0476] Routine TEST_FTP in TEST not unique. Cause . . . . . : Function or procedure TEST_FTP in TEST was specified, not by signature or specific name, and more than one specific instance of the routine was found. Or the procedure was used in a DESCRIBE PROCEDURE or ASSOCIATE LOCATOR statement without a schema name specified while connected to a remote system, and more than one procedure has been called with that name. Recovery . . . : Request the routine either by its specific name, or by its signature (function or procedure name with parameter types). If this is for a DESCRIBE PROCEDURE or ASSOCIATE LOCATOR statement, specify the schema name for the procedure. Try the request again.

Using Ops Navigator, to view the stored procedures I was getting an idex array error message, if I used query to query SYSRoutine in QSYS2, I could see 2 entries for this with slightly different settings in the SPECIFIC_NAME, but the ROUTINE_NAME was the same as TEST_FTP.

After some investigation I found that you could drop and specify the parameters, so I tried

DROP PROCEDURE TEST/TEST_FTP(CHAR(13));

Which successfully make the name unique and allow me to delete one, then managed to call

DROP PROCEDURE TEST/TEST_FTP;

Which then deleted the other one of the same name.

Basically in DB/2 on IBM i and I guess most other SQL databases stored procedures can have the same name as long as they have different parameters. This is essentially the same as method overloading in Java and some other languages where the method (sub routine) names signature is composed of the name part + the parameter list that is passed into it.