// All articles

Articles

103 posts — sorted by latest first

IBM i Application Maintenance and Change Management
Good IBM i maintenance is about managing change safely: source control, review, testing, documentation, and predictable releases.
CL Programming Explained
A practical introduction to CL programming on IBM i, including what it is used for and why it matters in…
SQL on IBM i for Beginners
SQL on IBM i is the modern way to query and manage Db2 for i data. Beginners can start with…
Introduction to RPGLE for Beginners
A beginner-friendly introduction to RPGLE on IBM i, including what it is, why it is still used, and how to…
IBM i Performance Tuning Basics
Performance tuning on IBM i starts with measurement, workload understanding, and small changes that improve real bottlenecks.
IBM i Job Scheduling and Batch Processing Explained
IBM i batch work runs on schedules, queues, and jobs. Understanding that flow helps beginners see how the platform handles…
IBM i Libraries, Objects, and Members Explained
A practical introduction to the IBM i object model, including libraries, objects, members, and how they are used every day.
Debugging on IBM i: A Beginner’s Guide
Debugging on IBM i starts with logs, messages, and the right tools. Beginners can learn to isolate problems without guessing.
IBM i Architecture Explained
A beginner-friendly explanation of the IBM i architecture, including the operating system, integrated database, objects, and the server layer.
How IBM i Uses Files, Libraries, and Data Access
IBM i organizes data through libraries, files, members, and SQL access. Understanding those layers makes the platform much easier to…
IBM i vs Mainframe: What’s the Difference?
IBM i and mainframe systems both support serious enterprise workloads, but they are different platforms with different operating models, scale…
IBM i Modernization Basics
Modernizing IBM i does not mean replacing the platform. It usually means exposing existing systems through APIs, SQL, better interfaces,…
IBM i Message Queues and CL Error Handling: SNDPGMMSG, RCVMSG, MONMSG, and Message Files in 2026
Master IBM i message queues and CL error handling in 2026: create message files with CRTMSGF and ADDMSGD, send informational…
History of AS400 and IBM Power Systems
A short history of the AS/400 platform lineage and how it evolved into the IBM i environments that run on…
DB2 for i Stored Procedures: CREATE PROCEDURE, IN OUT Parameters, Cursors, and Error Handling in 2026
Master DB2 for i stored procedures in 2026: create SQL procedures with CREATE PROCEDURE, define IN, OUT, and INOUT parameters,…
IBM i HTTP Client from RPG: QSYS2 HTTP_GET, HTTP_POST, and Calling REST APIs with JSON in 2026
Call external REST APIs from IBM i in 2026: use QSYS2.HTTP_GET and QSYS2.HTTP_POST SQL table functions to make HTTP requests,…
AS400 vs IBM i: What’s the Difference?
AS400 is the common historical name, while IBM i is the current operating system. This article explains what each term…
ILE RPG Service Programs and Binding Directories: CRTSRVPGM, Export and Import, Activation Groups in 2026
Master ILE RPG service programs in 2026: compile RPG modules with CRTRPGMOD, create service programs with CRTSRVPGM, export and import…
IBM i Save and Restore: SAVOBJ, RSTOBJ, SAVLIB, SAVCHGOBJ, Save Files, and Backup Strategy in 2026
Master IBM i save and restore in 2026: save and restore individual objects with SAVOBJ and RSTOBJ, save entire libraries…
What Is AS400 (IBM i)? A Complete Beginner’s Guide
AS400 usually means IBM i running on IBM Power hardware. This beginner's guide explains AS/400, IBM i, and IBM Power…
DB2 for i Triggers: CREATE TRIGGER, BEFORE and AFTER, Transition Variables, and Audit Logging on IBM i in 2026
Master DB2 for i triggers in 2026: create BEFORE and AFTER triggers with CREATE TRIGGER, use FOR EACH ROW and…
IBM i Commitment Control and Transaction Management: STRCMTCTL, COMMIT, ROLLBACK, Savepoints, and Multi-File Updates in 2026
Master IBM i commitment control in 2026: start and end commitment definitions with STRCMTCTL and ENDCMTCTL, control DB2 transaction scope…
IBM i Job Scheduling with ADDJOBSCDE: Recurring Jobs, Schedule Calendars, Exception Calendars, RTVJOBSCDE, WRKJOBSCDE, and Monitoring in 2026
Master IBM i job scheduling in 2026: add recurring batch jobs with ADDJOBSCDE, manage schedules with WRKJOBSCDE and CHGJOBSCDE, create…
AI-Driven Anomaly Detection on IBM i Operational Data: DB2 Statistical Baselines, Python in PASE, Isolation Forest, and Automated Alerting in 2026
Build AI-driven anomaly detection for IBM i operational data in 2026: query QSYS2 system views for job and performance metrics,…
IFS Permissions and Security on IBM i: CHGAUT, CHGOWN, ACLs, PASE umask, Authority Auditing, and Stream File Security Best Practices in 2026
Secure the IBM i Integrated File System (IFS) in 2026: manage stream file and directory authorities with CHGAUT and WRKOBJAUT,…
IBM MQ Messaging from IBM i: Queue Managers, Channels, MQPUT, MQGET, Triggering, Dead Letter Queues, and RPG Integration in 2026
Integrate IBM MQ with IBM i in 2026: create and configure queue managers, define local and remote queues, set up…
IBM i Output Queue and Print Management: WRKOUTQ, CHGOUTQ, Spooled Files, CPYSPLF, SNDNETSPLF, PDF Conversion, and Printer Writers in 2026
Master IBM i output queue and print management in 2026: create and configure output queues with CRTOUTQ and CHGOUTQ, work…
DB2 for i CTEs and Recursive SQL: WITH Clause, Anchor and Recursive Members, Hierarchical Queries, Bill of Materials, and Cycle Detection on IBM i in 2026
Master DB2 for i common table expressions (CTEs) and recursive SQL in 2026: use the WITH clause to name intermediate…
ILE RPG String Handling: %SCAN, %SUBST, %REPLACE, %TRIM, VARCHAR Fields, Delimited Parsing, and CCSID-Safe String Operations on IBM i in 2026
Master ILE RPG string handling on IBM i in 2026: use %SCAN, %SUBST, %REPLACE, %TRIM, %TRIMR, and %TRIML for text…
IBM i TCP/IP Configuration and Troubleshooting: CFGTCP, ADDTCPIFC, NETSTAT, PING, TRACEROUTE, DNS, Virtual Ethernet, and Line Descriptions in 2026
Configure and troubleshoot IBM i TCP/IP networking in 2026: use CFGTCP to manage interfaces and routes, add IP addresses with…
Strangler Fig Pattern for IBM i Application Modernization: Decomposing Monolithic RPG, API Gateway Routing, Incremental Migration, and Coexistence Strategies in 2026
Apply the strangler fig pattern to IBM i modernization in 2026: identify seams in monolithic RPG applications, build a facade…
Building a REST API Server on IBM i with Node.js and Express: DB2 Access via ODBC, Routing, JSON Responses, Middleware, and Running as a Batch Job in 2026
Build a production REST API server on IBM i in 2026 using Node.js and Express in PASE: connect to DB2…
IFS Stream File I/O from RPG on IBM i: Qp0lOpen, Qp0lRead, Qp0lWrite, Open Flags, CSV File Generation, and Config File Parsing in 2026
Read and write IFS stream files from ILE RPG programs on IBM i in 2026: use Qp0lOpen, Qp0lRead, Qp0lWrite, and…
IBM i CL Data Areas and Data Queues: CRTDTAARA, RTVDTAARA, CHGDTAARA, CRTDTAQ, SNDDTAQ, RCVDTAQ, and Inter-Program Communication in 2026
Master IBM i data areas and data queues for inter-program communication in 2026: create and manage data areas with CRTDTAARA,…
DB2 for i Window Functions: ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, FIRST_VALUE, LAST_VALUE with OVER and PARTITION BY on IBM i in 2026
Master DB2 for i window functions in 2026: use ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD, FIRST_VALUE, and LAST_VALUE with the…
ILE RPG Date, Time, and Timestamp Handling: %DATE, %DIFF, %ADDUR, %SUBUR, Format Conversion, and CEE Date APIs on IBM i in 2026
Master ILE RPG date and time handling in 2026: declare date, time, and timestamp fields, convert between formats using %DATE…
IBM watsonx on Power for IBM i: AI Inference Near Your Data, Granite Models, RPG and Python Integration in 2026
Bring AI inference to IBM i in 2026 with IBM watsonx on Power: deploy Granite foundation models co-located with your…
IBM i Memory Pools and Pool Sizing: WRKSHRPOOL, Activity Levels, Automatic Performance Adjustment, and Paging Fault Diagnosis in 2026
Tune IBM i memory performance in 2026: understand the *BASE, *INTERACT, and *SPOOL shared pool structure, set pool sizes and…
IBM i Outbound Email in 2026: SNDDST, SMTP Configuration, SNDSMTPEMM, HTML Email from RPG, and PASE Sendmail
Send email from IBM i in 2026 using every available method: configure the SMTP server with CHGSMTPA, send plain-text alerts…
IBM i Job Scheduling: ADDJOBSCDE, WRKJOBSCDE, IBM Advanced Job Scheduler, Notifications, and Batch Automation in 2026
Automate IBM i batch jobs in 2026: add recurring schedule entries with ADDJOBSCDE, manage and monitor schedules with WRKJOBSCDE, set…
DB2 for i CTEs and Recursive SQL: WITH Clause, Recursive Queries, BOM Explosion, and Organizational Hierarchy in 2026
Unlock the power of DB2 for i CTEs and recursive SQL in 2026: write readable multi-step queries using the WITH…
IBM i RPG Subfile Programming: SFLCTL, SFLPAG, SFLDSP, Loading Records, Paging, and Cursor Positioning in 2026
Master IBM i RPG subfile programming in 2026: design subfile and subfile control record formats in DDS with SFLPAG and…
IBM i IFS Permissions and Security: CHGAUT, CHGOWN, Access Control Lists, Symbolic Links, and QAUDJRN Auditing in 2026
Secure the IBM i Integrated File System in 2026: understand the IFS authority model, control *PUBLIC access, use CHGAUT and…
IBM i Journal Management: STRJRNOBJ, Journal Receivers, DSPJRN, Remote Journaling, and the QAUDJRN Security Audit Journal on IBM i in 2026
Master IBM i journal management in 2026: create journals and journal receivers with CRTJRN, start and end object journaling with…
AI-Assisted RPG Modernization on IBM i in 2026: CVTRPGSRC, IBM Merlin Converter, LLM Code Explanation, Automated Refactoring, and AI-Generated RPG Tests
Modernize fixed-format RPG on IBM i using AI tools in 2026: convert with CVTRPGSRC and IBM Merlin, use LLMs like…
OAuth 2.0 and JWT Authentication from IBM i: Client Credentials Flow, Bearer Token Management, and Calling OAuth-Protected REST APIs from ILE RPG in 2026
Implement OAuth 2.0 authentication from IBM i in 2026: the client credentials flow using HTTPAPI and DB2 HTTP functions, storing…
DB2 for i Query Optimization: Visual Explain in ACS, SQE vs CQE, Index Design, Encoded Vector Indexes, STRDBMON, and Reading the SQL Plan Cache on IBM i in 2026
Optimize DB2 for i query performance in 2026: understand SQE vs CQE query engines, use Visual Explain in ACS to…
CL Error Handling and Exception Management on IBM i: MONMSG, Escape Messages, Condition Handlers, SNDPGMMSG, and Robust CL Procedure Design in 2026
Build robust IBM i CL programs with proper exception handling: IBM i message types, MONMSG command patterns, program message queue…
RPG Data Structures in Depth: LIKEDS, Qualified DS, Template Data Structures, DS Arrays, EXTNAME, and LIKEREC in ILE RPG on IBM i
Master ILE RPG data structures: dcl-ds syntax, qualified data structures with dot notation, LIKEDS for cloning a structure, template data…
IBM i PASE Deep Dive: AIX Binary Compatibility, PASE vs QShell, Environment Variables, Process Management, and ILE Integration in 2026
Understand the IBM i PASE runtime in depth: AIX binary compatibility, how PASE differs from QShell, managing environment variables, PASE…
IBM Merlin and VS Code for IBM i Development in 2026: Modern IDE Setup, RPG and CL Editing, Git Integration, and the IBM i Developer Workstation
Set up a modern IBM i development environment in 2026: install the Code for IBM i VS Code extension, edit…
IBM i Work Management in Depth in 2026: Subsystem Design, Routing Entries, Job Queue Priorities, Class Objects, and Performance Diagnosis
A complete guide to IBM i work management in 2026: create custom subsystem descriptions, configure routing entries and class objects,…
IBM i Integration with Microsoft Azure in 2026: Azure Event Hubs, Blob Storage, Service Bus, and Azure SQL from PASE
Learn how to integrate IBM i with Microsoft Azure in 2026 using the Azure Python and Node.js SDKs in PASE.…
DB2 for i JSON and XML Support in 2026: JSON_VALUE, JSON_TABLE, FOR JSON, XMLTABLE, and Building REST Responses in SQL
A comprehensive guide to DB2 for i JSON and XML functions in 2026: extracting scalars with JSON_VALUE, shredding arrays with…
IBM i ILE Binding, Activation Groups, and Service Programs in 2026: BNDDIR, CRTPGM, *NEW vs *CALLER, and Designing for Reuse
A deep dive into the IBM i ILE binding model: how modules, programs, service programs, and binding directories relate, how…
IBM i Message Files and Exception Handling in CL in 2026: SNDPGMMSG, MONMSG, RCVMSG, Message Types, and Robust Error Handling
Master IBM i CL exception handling in 2026: message file architecture, CRTMSGF and ADDMSGD to define messages, SNDPGMMSG for escape…
IBM i Security Hardening in 2026: QSECURITY Levels, User Profile Auditing, Special Authority, Network Security, and QSYS2 Security Views
A practical guide to IBM i security hardening in 2026: QSECURITY levels 10–50, auditing user profiles with QSYS2.USER_INFO, removing excessive…
DB2 for i SQL Stored Procedures and User-Defined Functions in 2026: CREATE PROCEDURE, Cursors, UDFs, and Reusable Business Logic in DB2
A comprehensive guide to DB2 for i SQL stored procedures and user-defined functions in 2026: CREATE PROCEDURE syntax, IN/OUT parameters,…
AI-Assisted Legacy Code Documentation on IBM i in 2026: Using LLMs to Document RPG Programs, Extract Business Rules, and Build a Knowledge Base
A practical guide to using AI and large language models to document legacy IBM i RPG programs in 2026: extracting…
IBM i System Startup and Shutdown Procedures in 2026: QSTRUP, STRTCP, STRSBS, ENDSBS, PWRDWNSYS, and IPL Modes
A complete guide to IBM i system startup and shutdown procedures in 2026: understanding the IPL sequence, configuring QSTRUP, starting…
Calling REST APIs from IBM i RPG in 2026: HTTPAPI by Scott Klement, HTTP GET and POST, JSON Parsing with YAJL, and OAuth 2.0
HTTPAPI by Scott Klement is the standard open source library for making outbound HTTP calls from IBM i RPG programs.…
DB2 for i Triggers in 2026: SQL and External Triggers, BEFORE and AFTER Timing, Audit Logging, and Calling RPG from a Trigger
DB2 for i triggers fire automatically on INSERT, UPDATE, and DELETE, enforcing rules that application code cannot bypass. This post…
RPG Unit Testing with RPGUnit in 2026: Writing Test Cases for ILE RPG Service Programs, Test Suites, and CI Integration
A complete guide to RPGUnit for ILE RPG in 2026: install the framework, write test cases and test suites for…
IBM i Application Modernisation Roadmap in 2026: Strategies from API Wrapping to Full Rewrite and How to Choose
A practical IBM i application modernisation roadmap for 2026: compare six strategies from screen transformation and API wrapping to selective…
Vector Search and Embeddings on IBM i in 2026: Storing Vectors in DB2 for i, Cosine Similarity in SQL, and Semantic Search over IBM i Data
Vector search and text embeddings bring semantic search to IBM i in 2026 — converting DB2 for i text fields…
DB2 for i Replication in 2026: Journal-Based CDC, Q-Replication, MIMIX, and Designing a Replication Strategy
DB2 for i replication in 2026 is built on IBM i journals — the same journal receivers that underpin HA…
IBM i and Apache Kafka in 2026: Journal-Based CDC to Kafka Topics, PASE Producers, and Event-Driven IBM i Integration
A hands-on guide to connecting IBM i with Apache Kafka in 2026 — running kafkajs and confluent-kafka-python producers in PASE,…
IBM i Display Files and 5250 UX Modernisation in 2026: DDS, Subfiles, RPG Screen I/O, and Modern Web Front-Ends
A practical guide to IBM i display files in 2026 — DDS syntax, CRTDSPF, RPG EXFMT screen I/O, subfile programming…
IBM i PTF Management and OS Upgrades in 2026: Ordering Cumulative PTFs, Managing SF99xxx Groups, and Planning an OS Upgrade
IBM i PTF management in 2026 spans four distinct fix types — individual PTFs, cumulative PTF packages, SF99xxx group PTFs,…
IBM i High Availability and Disaster Recovery in 2026: Geographic Mirroring, Switchable ASPs, and HA Tools Compared
IBM i high availability and disaster recovery in 2026 requires understanding the full stack: geographic mirroring at the storage layer,…
Python on IBM i in 2026: Running Python in PASE, Accessing DB2 for i, Calling IBM i Programs with itoolkit, and AI Integration
Python runs natively on IBM i in PASE with direct DB2 access via ibm_db and pyodbc, IBM i program calls…
Advanced ILE RPG in 2026: System Pointers, IBM i OS APIs, Dynamic Program Calls, and User Spaces
The IBM i OS API layer accessible from ILE RPG: QCMDEXC for running CL commands at runtime, the list API…
IBM i IFS Advanced in 2026: Journalling Stream Files, NetServer SMB Shares, IFS Backup, Large Files, and CCSID Encoding
Advanced IBM i IFS topics for production environments: enabling journalling on IFS directories for recovery and replication, sharing IFS directories…
IBM i System Operations with CL in 2026: Subsystem Management, Job Control, Data Queues, Output Queues, and Job Scheduling
The operational CL commands IBM i administrators use every day: WRKACTJOB status codes explained (RUN, DSKW, LCKW, MSGW), CHGJOB and…
DB2 for i Advanced SQL in 2026: SQE vs CQE, Index Advisor, Column Statistics, Materialized Query Tables, and Query Performance Patterns
Advanced DB2 for i query performance: the SQE versus CQE split and what it means for your queries, column statistics…
IBM i Performance Tuning in 2026: Memory Pools, Reading WRKACTJOB, Collection Services, and Diagnosing Slow Batch Jobs
IBM i performance problems are almost always paging (undersized memory pools) or SQL without indexes. This post covers the IBM…
IBM i and Node.js in 2026: Running Node.js in PASE, Accessing DB2 for i, and Building REST APIs on IBM i
Node.js runs natively on IBM i in PASE with direct in-process access to DB2 for i via idb-connector and to…
AI for IBM i in 2026: Calling AI APIs from RPG and SQL, Integrating watsonx, and What AI Can Realistically Do for IBM i Modernisation
AI intersects with IBM i in three ways: as an integration target (calling OpenAI or watsonx from RPG and SQL…
IBM i IFS in 2026: The Integrated File System, Stream Files, Git in the IFS, and Working with IFS from RPG and CL
The IBM i Integrated File System is the foundation of modern IBM i development — Git, open-source packages, Node.js, Python,…
IBM i Security in 2026: User Profiles, Object Authority, Adopted Authority, and Practical Security Patterns
IBM i security is object-based and OS-enforced — bypassing the application does not bypass security. This post covers QSECURITY levels,…
DB2 for i in 2026: IBM i’s Integrated Database, System Naming vs SQL Naming, Physical Files, the Query Optimiser, and How It Differs from Standalone Databases
DB2 for i is not a database running on IBM i — it is part of the operating system. This…
RPG in 2026: Modern Free-Format RPG IV, Prototyped Procedures, SQL Integration, and What Current RPG Actually Looks Like
Modern RPG is not the fixed-format column-dependent code that gave the language its reputation. This post covers fully free-format RPG…
CL in 2026: ILE Control Language, MONMSG Error Handling, Batch Orchestration, and Where CL Fits in a Modern IBM i Stack
CL is not a legacy language waiting to be replaced — it is the correct tool for controlling the IBM…
Connecting IBM i to the Cloud: Azure, AWS, Power Virtual Server, and Hybrid Integration Patterns That Actually Work
IBM i can integrate with Azure, AWS, and SaaS platforms without custom adapters or protocol gymnastics. This post covers five…
IBM i Observability in 2026: Collection Services, QSYS2 Health Queries, Structured Logging, and Prometheus Dashboards
IBM i has collected detailed performance data for decades — most shops only look at it when something breaks. This…
IBM i in a DevOps Pipeline: Git, Bob, Automated Builds, and CI/CD for RPG in 2026
IBM i DevOps is not theoretical — Git, Bob, RPGUnit, and GitHub Actions all run on IBM i 7.3+. This…
Building REST APIs on IBM i: Node.js in PASE, IAS REST, and connecting modern front ends to your RPG business logic
REST APIs are the bridge between IBM i and modern front ends. This post covers every practical option — IAS…
IBM i and the cloud: modernisation strategies, hybrid architectures, and what staying on IBM i actually means in 2026
The "should we leave IBM i?" conversation has been happening for twenty years. The shops that handled it well are…
Source control for IBM i: managing your RPG and CL source with Git and RDi
Most IBM i shops still manage source the same way they did in the 1990s — members in source physical…
CL job scheduling on IBM i: SBMJOB, WRKJOBSCDE, and automating batch work
IBM i batch jobs are the ones nobody watches — until one fails. This post covers SBMJOB, WRKJOBSCDE, job queues,…
Debugging RPG programs: the ILE debugger, source-level debugging, and reading dumps
Every RPG developer eventually writes a program that does something it should not. The calculation is wrong. The loop runs…
Error handling in RPG: building programs that fail gracefully
Most RPG programs are written to handle the happy path. The file exists, the record is found, the calculation succeeds,…
Security on IBM i: object authority, user profiles, and keeping your data safe
IBM i has a reputation for being secure. That reputation is earned — the security model is granular, well-designed, and…
Performance tuning on IBM i: finding bottlenecks and reading query plans
Performance problems on IBM i tend to fall into a small number of categories. A query that reads every record…
Operations and admin on IBM i: job queues, output queues, and keeping the system running
Every IBM i developer eventually ends up doing some administration. A job gets stuck. The output queue fills up. A…
Modern integrations on IBM i: calling REST APIs and working with JSON
IBM i has been talking to other systems for decades. EDI over AS/400 communications, FTP file drops, MQ message queues…
IFS and stream files on IBM i: the bridge to the outside world
Most IBM i developers spend their entire careers working with physical files and never touch the IFS. That is understandable…
DB2 for i: the database hiding in plain sight
Every physical file you have ever defined in DDS, every CHAIN and READ in your RPG programs, every logical file…
CL commands for RPG programmers: the system layer you cannot ignore
If you write RPG, you already use CL whether you realise it or not. Every time you submit a job,…
Embedded SQL in RPGLE: query your data the way you think about it
You already know how to read files with READ and CHAIN. They work. But the moment your query involves a…
Subprocedures and Service Programs in RPGLE: write once, call everywhere
Subprocedures let you break logic into reusable blocks inside a single program. Service programs take it further — compile your…
Free-format RPG: A practical guide for intermediate developers
You already write RPG. Free-format does not replace what you know — it removes the straitjacket. No more counting columns,…
IBM i Modernization: Cut Legacy AS400 Costs by 30%
A practical enterprise guide to IBM i modernization covering APIs, RPG transformation, AI-assisted modernization, and legacy system evolution.