|Written in||C++, C, PL/MI, Java and Assembly language, Modula-2, PL/MP|
|OS family||IBM CPF|
|Source model||Closed source|
|Initial release||August 26, 1988|
|Latest release||7.4 / April 23, 2019|
|Marketing target||Minicomputer, midrange computer and enterprise server|
|Update method||Program temporary fixes (PTFs)|
|Package manager||RPM and YUM for open source packages|
|Platforms||IBM Power Systems, AS/400 IMPI and PowerPC|
|Kernel type||shares many Microkernel (SLIC) and Virtual machine (TIMI) design philosophies|
|Default user interface||Text-based user interface|
|Preceded by||System Support Program, Control Program Facility|
|Official website||IBM i|
IBM i (the i standing for integrated) is an operating system developed by IBM for IBM Power Systems. It was originally released in 1988 as OS/400, alongside the IBM AS/400 line of systems. It was renamed to i5/OS in 2004, before being renamed a second time to IBM i in 2008. It is an evolution of the System/38 CPF operating system, with compatibility layers for System/36 SSP and AIX applications. It inherits a number of distinctive features from the System/38 platform, including the Machine Interface, the implementation of object-based addressing on top of a single-level store, and the tight integration of a relational database into the operating system.
Fort Knox and Silverlake
In the early 1980s, IBM management became concerned that IBM's large number of incompatible midrange computer systems were hurting the company's competitiveness, particularly against Digital Equipment Corporation's VAX. In 1982, a project named Fort Knox commenced, which was intended to consolidate the System/36, the System/38, the IBM 8100, the Series/1 and the IBM 4300 series into a single product line based around the IBM 801 processor, while retaining backwards compatibility with all the systems it was intended to replace. This project proved to be overly ambitious, and ran into multiple delays and changes of scope before being cancelled in 1985.
During this time, a skunkworks project was started at IBM Rochester by engineers who believed that Fort Knox's failure was inevitable. These engineers developed code which allowed System/36 applications to run on top of the System/38, and when Fort Knox was cancelled, their project was given official approval in December 1985. The project became known as Silverlake (named for Silver Lake in Rochester, Minnesota). Silverlake's goal was to deliver a replacement for the System/36 and System/38 in as short of a timeframe as possible, as the Fort Knox project had stalled new product development at Rochester, leaving IBM without a competitive midrange system.
The Silverlake system built upon IBM Rochester's attempts to consolidate the System/38 and System/36, and was essentially an evolution of the System/38 which reused some of the hardware and software developed for the Fort Knox project. The operating system for Silverlake was codenamed XPF (Extended CPF), and had originally begun as a port of CPF to the Fort Knox hardware. In addition to adding support for System/36 applications, some of the user interface and ease-of-use features from the System/36 were carried over to the new operating system.
Silverlake was available for field test in June 1988, and was officially announced in August of that year. By that point, it had been renamed to the Application System/400, and the operating system had been named Operating System/400.
The move to PowerPC
In 1990, IBM Rochester began work to replace the AS/400's original System/38-derived 48-bit CISC processors with a 96-bit architecture known as C-RISC (Commercial RISC). Rather than being a clean-slate design, C-RISC would have added RISC-style instructions to the AS/400's processor, while maintaining backwards compatibility with the System/370-style Internal Microprogrammed Interface (IMPI) instruction set and the microcode used to implement it. In 1991, at the insistence of IBM president Jack Kuehler, a team at IBM Rochester under the leadership of Frank Soltis delivered a proposal to adapt the 64-bit PowerPC architecture to support the needs of the AS/400 platform. Their derivative of the PowerPC, known Amazon and later as IBM RS64, was approved by IBM management instead of the C-RISC design, and formed the basis of the RISC AS/400 hardware.
The port to PowerPC required a rewrite of most of the code below the TIMI. Early versions of OS/400 inherited the Horizontal and Vertical Microcode layers of the System/38, although they were renamed to the Horizontal Licensed Internal Code (HLIC) and Vertical Licensed Internal Code (VLIC) respectively. The port to the new hardware replaced IMPI and the associated microcode, which required the VLIC to be rewritten to target PowerPC instead of IMPI, and for the operating system functionality previously implemented in the HLIC microcode to be re-implemented elsewhere. This lead to the HLIC and VLIC being replaced with a single layer named the System Licensed Internal Code (SLIC). The SLIC was implemented in an object oriented style with over 2 million lines of C++ code, replacing all of the HLIC code, and most of the VLIC code. Due to the amount of work needed to implement the SLIC, IBM Rochester hired several hundred C++ programmers for the project, who worked on the SLIC in parallel to new revisions of the VLIC for the CISC AS/400 systems. The first release of OS/400 to support PowerPC-based hardware was V3R6.
The AS/400 product line was rebranded multiple times throughout the 1990s and 2000s. As part of the 2004 rebranding to eServer i5, OS/400 was renamed to i5/OS; the 5 signifying the use of POWER5 processors. The first release of i5/OS, V5R3, was described by IBM as "a different name for the same operating system".
In 2006, IBM rebranded the AS/400 line one last time to System i. In April 2008, IBM consolidated the System i with the System p platform to create IBM Power Systems. At the same time, i5/OS was renamed to IBM i, in order to remove the association with POWER5 processors. The two most recent versions of the operating system at that time, which had been released as i5/OS V5R4 and V6R1, were renamed to IBM i 5.4 and 6.1.
Along with the rebranding to IBM i, IBM changed the versioning nomenclature for the operating system. Prior releases used a Version, Release, Modification scheme, e.g. V2R1M1. This was replaced with a Version.Release scheme, e.g. 6.1. Beginning with IBM i 7.1, IBM replaced the Modification releases with Technology Refreshes. Technology Refreshes are delivered as optional PTFs for specific releases of the operating system which add new functionality or hardware support to the operating system.
|Version||Branding||Release date||End of Program|
|Old version, no longer maintained: V1R1[n 1]||OS/400||1988-08-26||1993-05-31|
|Old version, no longer maintained: V1R1M2[n 2]||1988-11-25|
|Old version, no longer maintained: V1R2||1989-10-27|
|Old version, no longer maintained: V1R3||1990-09-28|
|Old version, no longer maintained: V2R1||1991-05-24||1994-06-30|
|Old version, no longer maintained: V2R1M1||1992-03-06|
|Old version, no longer maintained: V2R2||1992-09-18||1995-03-31|
|Old version, no longer maintained: V2R3||1993-12-17||1996-05-31|
|Old version, no longer maintained: V3R0M5||1994-05-04||1997-05-31|
|Old version, no longer maintained: V3R1||1994-11-25||1998-10-31|
|Old version, no longer maintained: V3R2||1996-06-21||2000-05-31|
|Old version, no longer maintained: V3R6||1995-12-22||1998-10-31|
|Old version, no longer maintained: V3R7||1996-11-08||1999-06-30|
|Old version, no longer maintained: V4R1||1997-08-29||2000-05-31|
|Old version, no longer maintained: V4R2||1998-02-27||2000-05-31|
|Old version, no longer maintained: V4R3||1998-09-11||2001-01-31|
|Old version, no longer maintained: V4R4||1999-05-21||2001-05-31|
|Old version, no longer maintained: V4R5||2000-07-28||2002-07-31|
|Old version, no longer maintained: V5R1||2001-05-25||2005-09-30|
|Old version, no longer maintained: V5R2||2002-08-30||2007-04-30|
|Old version, no longer maintained: V5R3||i5/OS||2004-06-11||2009-04-30|
|Old version, no longer maintained: V5R4 / 5.4||i5/OS
Later IBM i
|Old version, no longer maintained: V6R1 / 6.1||2008-03-21||2015-09-30|
|Old version, no longer maintained: 6.1.1||IBM i||2009-10-23|
|Old version, no longer maintained: 7.1||2010-04-23||2018-04-30|
|Old version, no longer maintained: 7.2||2014-05-02||2021-04-30|
|Older version, yet still maintained: 7.3||2016-04-15||TBA|
|Current stable version: 7.4||2019-06-21||TBA|
IBM i is split into two layers, the hardware-dependent System Licensed Internal Code (SLIC) and the hardware-independent Extended Control Program Facility (XPF). These are divided by a hardware abstraction layer called the Technology Independent Machine Interface (TIMI). IBM often uses different names for the TIMI, SLIC and XPF in documentation and marketing materials, for example, the IBM i 7.4 documentation refers to them as the IBM i Machine Interface, IBM i Licensed Internal Code and IBM i Operating System respectively.
The TIMI isolates users and applications from the underlying hardware. This isolation is more thorough than the hardware abstractions of other operating systems, and includes abstracting the instruction set architecture of the processor, the size of the address space and the specifics of I/O and persistence. This is accomplished through two interrelated mechanisms:
- Compilers for IBM i do not generate native machine code directly, instead they generate a high level intermediate representation defined by the TIMI. When a program is run, the operating system carries out ahead-of-time translation of the TIMI instructions into native machine code for the processor, and stores the generated machine code for future execution of the program. If the translation process changes, or a different CPU instruction set is adopted, the operating system can transparently regenerate the machine code from the TIMI instructions without needing to recompile from source code.
- Instead of operating on memory addresses, TIMI instructions operate on objects. All data in IBM i, such as data files, source code, programs and regions of allocated memory, are encapsulated inside objects managed by the operating system (c.f. the "Everything is a file" model in Unix). IBM i objects have a fixed type, which defines the set of applicable operations which may be carried out on them (for example, a Program object can be executed, but cannot be edited). The object model hides whether data is stored in primary, or secondary storage. Instead, the operating system automatically handles the process of retrieving and then storing the changes to permanent storage.
The TIMI is a backwards-compatible extension of the System/38 Machine interface, and allows IBM i applications to be completely independent of the underlying hardware. The hardware isolation provided by the TIMI allowed IBM to replace the AS/400's 48-bit IMPI architecture with the 64-bit RS64 architecture in 1995. Applications compiled on systems using the IMPI instruction set could run on top of the newer RS64 systems without any code changes, recompilation or emulation, while also allowing those applications to avail of 64-bit addressing.
The SLIC consists of the code which implements the TIMI on top of the IBM Power architecture. In addition to containing most of the functionality typically associated with an operating system kernel, it is responsible for translating TIMI instructions into machine code, and it also implements some high level functionality which is exposed through the TIMI, such as IBM i's integrated relational database. The SLIC implements IBM i's object-based storage model on top of a single-level store addressing scheme, which does not distinguish between primary and secondary storage, and instead manages all types of storage in a single virtual address space. The SLIC is primarily in C++, and replaced the HLIC and VLIC layers used in versions of OS/400 prior to V3R6.
The XPF consists of the code which implements the hardware-independent components of the operating system, which are compiled into TIMI instructions. Components of the XPF include the user interface, the Control Language, data management and query utilities, development tools and system management utilities. The XPF also contains the System/36 Environment and System/38 Environment, which provide backwards compatibility APIs and utilities for applications and data migrated from SSP and CPF systems. The XPF is IBM's internal name for this layer, and as the name suggests, began as an evolution of the System/38 Control Program Facility. The XPF is mostly implemented in PL/MI, although other languages are also used.
The Portable Application Solutions Environment (originally known as the Private Address Space Environment) is an AIX compatibility layer for IBM i. It provides binary compatibility for user mode executables which do not interact directly with the AIX kernel, and supports the 32-bit and 64-bit AIX Application Binary Interfaces. PASE was first included in a limited and undocumented form in the V4R3 release of OS/400 to support a port of Smalltalk. It was first announced to customers at the time of the V4R5 release, by which time it had gained significant additional functionality.
PASE consists of the AIX userspace running on top of a system call interface implemented by the SLIC. The system call interfaces allows interoperability between PASE and native IBM i applications, for example, PASE applications can access the integrated database, or call native IBM i applications, and vice versa. During the creation of PASE, a new type of single level storage object named a Teraspace was added to the operating system, which allows each PASE process to have a private 1TiB space which is addressed with 64-bit pointers. This was necessary since all IBM i jobs (i.e. processes) typically share the same address space. PASE applications do not use the hardware-independent TIMI instructions, and are instead compiled directly to Power machine code.
IBM i features an integrated relational database currently known as IBM Db2 for IBM i. The database evolved from the non-relational System/38 database, gaining support for the relational model and SQL. The database originally had no name, instead it was described simply as "data base support". It was given the name DB2/400 in 1994 to indicate comparable functionality to IBM's other commercial databases. Despite the Db2 branding, Db2 for IBM i is an entirely separate codebase to Db2 on other platforms, and is tightly integrated into the SLIC layer of IBM i as opposed to being an optional product.
IBM i provides two mechanisms for accessing the integrated database - the so-called native interface, which is based on the database access model of the System/38, and SQL. The native interface consists of the Data Description Specifications (DDS) language, which is used to define schemas and the
OPNQRYF command or
QQQQRY query API. Certain Db2 for i features such as object-relational database management require SQL and cannot be accessed through the native interface. IBM i has two separate query optimizers known as the Classic Query Engine (CQE) and SQL Query Engine (SQE). These are implemented inside the SLIC alongside a Query Dispatcher which selects the appropriate optimizer depending on the type of the query. Remote access through the native interface and SQL is provided by the Distributed Data Management Architecture (DDM) and Distributed Relational Database Architecture respectively.
A storage engine for MySQL and MariaDB named
IBMDB2I allows applications designed for those databases to use Db2 for i as a backing store. Other open source databases have been ported to IBM i, including PostgreSQL, MongoDB and Redis. These databases run on the PASE environment, and are independent of the operating system's integrated database features.
IBM i systems were historically accessed and managed through IBM 5250 terminals attached to the system with twinax cabling. With the decline of dedicated terminal hardware, modern IBM i systems are typically accessed through 5250 terminal emulators. IBM provides two terminal emulator products for IBM i:
- IBM i Access Client Solutions is a Java-based client that runs on Linux, macOS and Windows to provide 5250 emulation.
- IBM i Access for Web/Mobile provides web-based 5250 emulation.
In addition, IBM provides a web-based management console and performance analysis product named IBM Navigator for i.
Open source software for IBM i is typically packaged using the RPM package format, and installed with the YUM package manager. YUM and RPM replaced the 5733-OPS product, which was previously used to install open source software on IBM i.
Programming languages available from IBM for IBM i include RPG, Control Language, C, C++, Pascal, Java, EGL, Smalltalk, COBOL, BASIC, PL/I and REXX. The Integrated Language Environment (ILE) allows programs from ILE compatible languages (C, C++, COBOL, RPG, and CL), to be bound into the same executable and call procedures written in any of the other ILE languages.
IBM systems may also come with programming and development software such as the Programming Development Manager. IBM provides an Eclipse-based integrated development environment for IBM i named IBM Rational Developer for i.
In IBM i, disk drives may be grouped into an auxiliary storage pool (ASP) in order to organize data to limit the impact of storage-device failures and to reduce recovery time. If a disk failure occurs, only the data in the pool containing the failed unit needs to be recovered. ASPs may also be used to improve performance by isolating objects with similar performance characteristics, for example journal receivers, in their own pool.
By default, all disk drives are assigned to pool 1. The concept of IBM i pools is similar to the Unix/Linux concept of volume groups; however, with IBM i it is typical for all disk drives to be assigned to a single ASP.
- Frank G. Soltis (1997). Inside the AS/400, Second Edition. Duke Press. ISBN 978-1882419661.
- Leif Svalgaard (2003-10-08). "Re: Re: MI emulator". MI400 (Mailing list). Retrieved 2021-02-26.
- John Vriezen (2018-07-30). "What language(s) is the IBM i operating system written in?". quora.com. Retrieved 2021-02-26.
- "Reader Feedback on AS/400 to i Mystery Solved". itjungle.com. 2011-02-21. Retrieved 2021-03-12.
- Frank G. Soltis (2001). Fortress Rochester: the Inside Story of the IBM iSeries. System iNetwork. ISBN 978-1583040836.
- Alex Woodie (2020-05-13). "Where is IBM i?". itjungle.com. Retrieved 2021-03-01.
- "IBM i: A platform for innovators, by innovators". ibm.com. International Business Machines. Retrieved 22 September 2020.
- Steve Will; Tom Huntington (2020-07-16). "IBM i in 2020: It's Not Just AS/400". youtube.com. HelpSystems. Retrieved 2021-03-21.
- "IBM i5/OS V5R3 — the next generation of OS/400". IBM. 2004-05-04. Retrieved 2021-02-24.
- Roy A. Bauer; Emilio Collar; Victor Tang (1992). The Silverlake Project: Transformation at IBM. Oxford University Press. ISBN 9780195067545. Retrieved 2021-03-06.
- Schleicher, David L. (2006-01-24). "An Interview with DAVID L. SCHLEICHER" (PDF). conservancy.umn.edu (Interview). Interviewed by Arthur L. Norberg. Charles Babbage Institute. Retrieved 2021-03-05.
- Tom Huntington (2018-06-21). "Happy 30th Anniversary, IBM i!". helpsystems.com. Retrieved 2021-03-05.
- Eric J. Wieffering (1992-05-23). "The brave new world of IBM Rochester". postbulletin.com. Retrieved 2021-03-06.
- "Silverlake". wiki.midrange.com. 2006-08-21. Retrieved 2021-03-06.
- John Paul Shen; Mikko H. Lipasti (30 July 2013). Modern Processor Design: Fundamentals of Superscalar Processors. Waveland Press. ISBN 978-1-4786-1076-2.
- Tom Van Looy (January 2009). "The IBM AS/400: A technical introduction" (PDF). scss.tcd.ie. Retrieved 2021-03-13.
- Berg, William; Cline, Marshall; Girou, Mike (1995). "Lessons learned from the OS/400 OO project". Communications of the ACM. Association for Computing Machinery (ACM). 38 (10): 54–64. doi:10.1145/226239.226253. ISSN 0001-0782. S2CID 7492851. Retrieved 2021-03-13.
- Dave McKenzie (2004-09-01). "RE: Dave McKenzie's UNDELete utility - a LifeSaver!". Midrange Archive MI400. Retrieved 2021-05-24.
- Timothy Prickett Morgan (2007-08-20). "TFH Flashback: The Joy of V3R6". itjungle.com. Retrieved 2021-03-13.
- "5763-SS1 IBM Operating System/400 (OS/400) Version 3". 4props.ddns.net. IBM. Retrieved 2021-03-13.
- Denny Insell (2004). "Introducing IBM eServer i5 & i5/OS" (PDF). IBM. Retrieved 2021-03-14.
- "IBM i5/OS V5R3 — the next generation of OS/400". ibm.com. 2004-05-04. Retrieved 2021-03-14.
- Alex Woodie (2017-10-11). "IBM i Slow to Catch On, But What Does It Mean?". itjungle.com. Retrieved 2021-03-15.
- Niccolai, James (April 2, 2008). "IBM merges System i and System p server lines". InfoWorld.
- "IBM Introduces the First in a New Generation of Power Systems". IBM. 2008-04-02. Retrieved 2021-03-15.
- "IBM i5/OS V5R4 improves system availability and price performance". IBM. 2006-01-31. Retrieved 2021-03-16.
- "IBM i5/OS V6R1 delivers the next step for efficient, resilient business processing". IBM. 2008-01-29. Retrieved 2021-03-15.
- Alex Woodie (2008-09-23). "IBM Gives i5/OS V5R4 a New Name–i 5.4". itjungle.com. Retrieved 2021-03-16.
- Timothy Prickett Morgan (2008-04-07). "It's Official: Now We're Power Systems and i for Business". itjungle.com. Retrieved 2021-03-15.
- Justin C. Haase; Dwight Harrison; Adam Lukaszewicz; David Painter; Tracy Schramm; Jiri Sochr (December 2014). "IBM i 7.1 Technical Overview with Technology Refresh Updates" (PDF). IBM.
- "IBM i: A history in numbers". seasoft.com. 2019-05-21. Retrieved 2021-03-15.
- "IBM i Technology Refresh". ibm.com. Retrieved 2021-03-05.
- "OS 400 - Complete History of the IBM OS/400". history-computer.
- "Release life cycle". IBM Support. Retrieved 2021-02-25.
- "IBM AS/400 OPERATING SYSTEM/400 AND RELATED LICENSED PROGRAMS RELEASE 3". IBM. 1990-08-21. Retrieved 2021-04-06.
- "APPLICATION SYSTEM/400 LICENSED PROGRAMS RELEASE 2 AVAILABILITY". IBM. 1989-09-05. Retrieved 2021-04-06.
- "IBM OPERATING SYSTEM/400 (TM) AVAILABILITY". IBM. 1988-11-01. Retrieved 2021-04-01.
- "IBM OPERATING SYSTEM/400 VERSION 2". IBM. 1991-04-22. Retrieved 2021-04-06.
- "DSPHMCINF/DSPSMDTA: Querying the Current Status of Every HMC or SM Straight from the Command Line". IBM. 2019-12-18. Retrieved 2021-03-20.
- Lars Johanneson (2013-09-04). "Future of Power: IBM Power". IBM. Retrieved 2021-03-20.
- Frank G. Soltis; Adam T. Stallman (2003-09-01). "What Is an iSeries?". systeminetwork.com. Archived from the original on 2021-04-15. Retrieved 2021-03-20.
- "IBM i 7.4 Documentation". IBM. 2019. Retrieved 2021-03-20.
- Woodie, Alex. "Frank Soltis Discusses A Possible Future for Single-Level Storage". itjungle.com. IT Jungle. Retrieved 4 December 2020.
- Jim Hoskins; Roger Dimmick (1998). Exploring IBM AS/400 Computers. Maximum Press. ISBN 978-1-885068-19-4.
- Dan Hicks (1998-08-21). "UNIX vs AS/400?". Newsgroup: comp.sys.ibm.as400.misc.
- "IBM PASE for i". IBM. Retrieved 13 May 2020.
- Erwin Earley (2019-01-16). "What Is IBM i Architecture? Plus an Overview of IBM PASE". Zend. Retrieved 2021-05-24.
- Peter Helgren (2018-10-11). "Exploring Open Source on IBM i: The PASE Environment". MC Press Online. Retrieved 2021-05-24.
- Mark Funk (2014-08-04). "IBM i and Capability Addressing". Retrieved 2021-05-24.
- Holt, Ted; Kulack, Fred (February 1, 2004). Qshell for iSeries. MC Press. ASIN B00C4GRJ4S. ISBN 1-58347-046-8.
- "IBM OPERATING SYSTEM/400(TM) LICENSED PROGRAM". IBM. 1988-07-05. Retrieved 2021-03-23.
- James Hamilton (December 2017). "Four DB2 Code Bases?". Retrieved 2021-03-23.
- "DB2 database -> does it continue to be platform-specific? (iSeries, LUW, z/OS)".
- Gene Cobb (March 2008). "Moving from OPNQRYF to SQL" (PDF). IBM. Retrieved 2021-03-27.
- Jarek Miszczyk; Bronach Bromley; Mark Endrei; Skip Marchesani; Deepak Pai; Barry Thorn (February 2000). "DB2 UDB for AS/400 Object Relational Support" (PDF). IBM. Retrieved 2021-03-27.
- "SQE and CQE engines". ibm.com. Retrieved 2021-03-27.
- Scholerman, S.; Miller, L.; Tenner, J.; Tomanek, S.; Zolliker, M. (1993). "Relational database integration in the IBM AS/400". ACM SIGMOD Record. 22 (4): 5–10. doi:10.1145/166635.166639. ISSN 0163-5808. S2CID 783512.
- Hernando Bedoya; Brad Bentley; Xie Dan Dan; Sadamitsu Hayakawa; Shirley Pintos; Guo Qi; Morten Buur Rasmussen; Satid Singkorapoom; Wang Yun (March 2009). "Using IBM DB2 for i as a Storage Engine of MySQL" (PDF). IBM. Retrieved 2021-03-28.
- "ibmdb2i". github.com. Zend Technologies. 2020-10-13. Retrieved 2021-03-28.
- Woodie, Alex (2020-06-15). "More Open Source Databases Coming To IBM i". itjungle.com. Retrieved 2021-03-28.
- Alex Woodie (2020-08-12). "Man-DB Brings Documentation to IBM i". itjungle.com. Retrieved 2021-03-28.
- "TCP/IP". IBM. Retrieved 13 May 2020.
- "IBM I Access Client Solutions". IBM. Retrieved 13 May 2020.
- "IBM Navigator for i". IBM. Retrieved 13 May 2020.
- "Open Source Support for IBM i". www.ibm.com. 2019-05-30. Retrieved 2019-11-18.
- Woodie, Alex. "MariaDB Now Available Via RPM". itjungle.com. IT Jungle. Retrieved 9 December 2020.
- "Open Source Has Never Tasted So Good!". IBM Systems Magazine - Open Your i.
- "IBM i Open Source using yum". IBM i Open Source.
- "5733-OPS Open Source software support statement". ibm.com. 2019-12-18. Retrieved 2021-03-05.
- "IBM Rational Developer for i". ibm.com. Retrieved 2021-03-05.
- "UCS-2 and its relationship to Unicode (UTF-16)". ibm.com. Retrieved 2021-03-06.
- "IBM i ASP". IBM Knowledge Center. IBM. Retrieved 2018-03-06.