Did the title of this article get your attention? I hope so. It certainly grabbed my attention as the subject of an email I received from Howard Arner back in early October. He forwarded a clipping to me from an IBM press release in case I hadnt seen it. (I hadnt.)
Ill share the clipping with you in just a moment, but first, let me summarize it for you: IBM will not provide native access to new features of the iSeries database after V4R5. You must use SQL.
This news was not surprising to me. I was already aware that there is no way to define binary large objects (BLOBs) in DDS. Also, in mid-May I had a phone conversation with two IBMers about the features that would be coming out in V4R5. They would tell me about a new database feature and I would ask, Is that available through the native interfaces? The reply was either No or Well have to check on it and get back to you. A month later, I attended a briefing at the IBM center in Rochester, Minnesota, where one of those two IBMers announced that IBM was putting money into SQL, not into the native interfaces.
Here is the announcement, in its entirety. For some time now, SQL has been the strategic interface for the industry and the AS/400 database, DB2 Universal Database for AS/400. IBM has focused the database investment on SQL and has made some new database functionality (e.g., BLOBs, ROUND & DAYOFWEEK scalar functions, Derived Tables, etc.) available only on SQL interfaces. As a result, non-SQL interfaces such as OPNQRYF were not enhanced to access these new database features. Although its not a common practice, native opens (OPNQRYF, OPNDBF, high-level language opens) currently can reference most SQL Views (an SQL View is just a logical file), so it is possible to create an SQL View that uses some of the newer database functionality and then have a native open reference that SQL View to access these newer features.
To focus more investment on the SQL interface, IBMs plans dictate that after V4R5 new SQL database features and functions must be accessed directly using SQL
interfaces. The opening of SQL Views via a native open interface will continue to be supported but will be limited to views that use database features available in V4R5 and earlier releases. However, if a new SQL view is created or an existing SQL View is recreated to use a new database feature delivered in a release after V4R5, the open will fail.
Native opens also may fail against SQL Views created and shipped by software vendorsif their view uses a database feature not available in V4R5.
The Case for SQL Interfaces
SQL has the advantage of being an industry-standard database access language. That is, learn to use SQL on the iSeries, and youll know how to use SQL on other platforms and with other databases like Oracle, SQL Server, or Sybase. An SQL interface can be used natively and from many different clients. This allows tools such as Client Access/400, Operations Navigator, ODBC, and Java Database Connectivity (JDBC) to manipulate OS/400 data and objects. But the best thing about SQL, in my opinion, is that it helps move data access logic out of programs and into databases. User-defined functions and stored procedures are coded routines that can be implemented by any client that communicates with the database through SQL. SQL views can be created that repackage and redeploy your data in ways not possible with DDS logical files. Combine them with triggers and constraints and youve got one powerful database with integrity thats not dependent on application programs.
Its also very easy to use SQL to access data in complex ways with a minimum understanding of how the data is to be processed. This can get you into trouble, but it is also very powerful.
The Case for Native Interfaces
The first relational database management system I ever used was Oracle. To access the database from a COBOL program, I had to embed calls using the Call Level Interface (CLI). Those calls passed SQL commands through parameters to Oracle. It was more cumbersome than using the COBOL I/O verbsREAD, WRITE, REWRITEbut I assumed that that was the way it had to be when accessing relational databases from a high- level language.
Then I got a job in a S/38 shop. I was amazed that I could access a database table or view as I had accessed files on the S/34 and S/36. I could even use the RPG cycle. From that point on, I had no more use for Oracles CLI than I did for #GSORT.
The database didnt even have a name. It was just a built-in relational database, tightly integrated with the rest of the system. Native access to the database was one of the reasons the S/38 was such a wonderful system on which to develop applications.
IBMs decision to promote the SQL interface to the database means that what I consider to be the most distinctive feature of iSeries database accessthe native interfacewill be reduced in importance. Instead of using iSeries, maybe IBM should have chosen YAS/400 as the new name for the AS/400. (YAS would, of course, stand for yet another server.)
And the Winner Is...
Youll have to make up your own mind, but I believe the move to SQL is a good one. I believe that iSeries shops that are not using SQL to build applications should rethink their development methodology.