When most gamers hear “RPG,” they think turn-based combat, character builds, and loot drops. But mention RPG to a systems programmer, and they’ll picture something entirely different: lines of code running on IBM mainframes, processing millions of transactions for banks, airlines, and Fortune 500 companies. RPG programming, short for Report Program Generator, has been powering critical business systems since 1959, and it’s still very much alive today even though the rise of Python, JavaScript, and other modern languages.

If you’ve stumbled onto this guide hoping for RPG game mechanics, you’re in for a different kind of grind. But stick around, there’s an unexpected connection between gaming communities and this legacy programming language. Modding platforms and game development often intersect with older systems in surprising ways, and understanding the fundamentals of RPG programming opens doors to niche career opportunities that pay surprisingly well. Whether you’re a developer curious about legacy systems or someone looking to diversify their programming skillset, this complete guide breaks down everything you need to know about IBM’s RPG language in 2026.

Key Takeaways

  • RPG programming (Report Program Generator) is a high-level IBM language developed in 1959 that remains essential for processing millions of transactions daily in financial, retail, and healthcare sectors despite competition from modern languages like Python and JavaScript.
  • RPG developers command premium salaries ranging from $65,000 for entry-level positions to over $150,000 for senior architects, driven by a significant talent shortage as experienced programmers retire and fewer newcomers learn the RPG language.
  • Modern RPG programming emphasizes free-format syntax and modular design through subprocedures, REST API integration, and embedded SQL, enabling legacy IBM i systems to bridge traditional and contemporary architectures effectively.
  • Learning RPG programming requires access to an IBM i system (employer-provided, cloud-based, or free via PUB400.com) and tools like Rational Developer for i, with a typical learning timeline of 3-6 months for basic proficiency and 1-2 years to reach intermediate expertise.
  • The future of RPG code lies in hybrid integration rather than replacement—organizations preserve decades of tested business logic on IBM i while building modern front-ends and APIs that allow RPG systems to communicate with web and cloud technologies.
  • File processing and database operations form the heart of RPG programming, with native file operations offering exceptional performance for transaction processing and keyed access, making AS/400 RPG distinctly efficient for high-volume batch operations.

What Is RPG Programming?

RPG programming is a high-level programming language originally developed by IBM in 1959 for their System/3 midrange computers. The RPG programming language was designed with one clear purpose: generating business reports quickly and efficiently without requiring extensive coding knowledge. Over the decades, it’s evolved from a simple report generator into a full-featured programming language capable of complex business logic, database operations, and modern application development.

Today’s RPG code runs primarily on IBM i (formerly AS/400, iSeries) systems, handling everything from inventory management to financial transactions. Even though its age, the language remains remarkably relevant, IBM continues to update and support it, with the latest iteration known as RPG IV or ILE RPG (Integrated Language Environment RPG) offering free-format syntax and modern programming constructs.

The History and Evolution of RPG

The RPG language has gone through several major revisions since its inception. RPG I debuted in 1959, followed by RPG II in 1969, which introduced more sophisticated control structures. RPG III arrived in 1979 with the System/38, but the most significant leap came with RPG IV in 1994.

RPG IV transformed the language from its rigid, column-dependent format into something far more flexible. The introduction of free-format RPG code in the early 2000s made the syntax look closer to modern languages like C or Java. This evolution kept AS400 RPG relevant when many predicted its demise.

The IBM RPG platform continues to receive updates in 2026, with enhanced support for JSON, REST APIs, and cloud integration. IBM’s commitment to the language ensures that the thousands of companies running mission-critical applications on IBM i systems won’t be forced into expensive migrations anytime soon.

RPG vs. Modern Programming Languages

Comparing RPG to languages like Python or JavaScript feels like comparing a tank to a sports car, they’re built for completely different purposes. The rpg language excels at high-volume transaction processing and database operations on IBM i systems, offering tight integration with DB2 and exceptional performance for batch processing.

Modern languages prioritize flexibility, cross-platform compatibility, and rapid development cycles. Python’s syntax is cleaner, JavaScript dominates web development, and both have massive ecosystems of libraries and frameworks. RPG, by contrast, is domain-specific: it shines in the mainframe environment but struggles outside it.

Here’s the practical breakdown:

  • Performance: RPG on IBM i handles transaction processing faster than most modern languages on equivalent hardware
  • Learning curve: RPG’s fixed-format syntax is notoriously difficult for newcomers: free-format helps but doesn’t eliminate the challenge
  • Community: Python and JavaScript have millions of developers: RPG has thousands
  • Job security: Fewer RPG programmers exist, driving up salaries for those who know it
  • Tooling: Modern IDEs dominate newer languages: RPG development tools are improving but still lag behind

The reality? RPG isn’t competing with modern languages, it’s coexisting with them. Many organizations use RPG for core business logic while building front-ends with web technologies.

Why RPG Programming Still Matters Today

The persistence of rpg programming in 2026 isn’t about nostalgia, it’s economics and reliability. Companies running IBM i systems have millions of lines of tested, stable RPG code handling critical operations. Rewriting these systems in modern languages would cost tens of millions of dollars and introduce significant risk. When your RPG application has been processing payroll without errors for 20 years, migration becomes a hard sell.

More importantly, IBM i systems power infrastructure that can’t afford downtime. Banks processing ACH transfers, airlines managing reservations, manufacturers coordinating supply chains, these operations demand the kind of reliability that IBM RPG on IBM i delivers. The platform boasts uptime rates exceeding 99.9%, something even modern cloud providers struggle to match consistently.

Industries and Companies Using RPG

The rpg programming language dominates in sectors where stability trumps trendiness. Financial services lead the pack, major banks, credit unions, and insurance companies run core banking platforms on IBM i with RPG handling everything from account management to fraud detection.

Retail and distribution companies rely heavily on as400 rpg for inventory management and order processing. Walmart, for example, has historically used IBM i systems for supply chain operations. Manufacturing firms use RPG for production scheduling, quality control tracking, and just-in-time inventory systems.

Other key industries include:

  • Healthcare: Patient records, billing systems, insurance claims processing
  • Government: Tax processing, social services management, pension administration
  • Logistics: Shipping coordination, warehouse management, route optimization
  • Utilities: Billing systems, infrastructure monitoring, service dispatch

Many of these organizations don’t advertise their use of RPG, it’s infrastructure, not a differentiator. But visit job boards and you’ll find hundreds of openings for RPG developers, particularly in the Midwest and regions with high concentrations of Fortune 500 headquarters.

Career Opportunities for RPG Developers

Here’s where things get interesting for developers: rpg programming skills command premium salaries because supply doesn’t meet demand. As older programmers retire, fewer young developers learn the language, creating a talent shortage that drives compensation upward.

Entry-level RPG developers with 1-2 years of experience typically earn $65,000-$80,000 annually in the US. Mid-level developers with 5+ years pull $90,000-$120,000, while senior RPG architects and specialists can exceed $150,000. Contract rates often range from $75-$150 per hour depending on expertise and location.

The work itself varies significantly. Some RPG roles involve pure maintenance, keeping existing systems running and making minor modifications. Others focus on modernization projects, wrapping rpg code with web services or integrating IBM i applications with cloud platforms. The most interesting positions combine RPG expertise with modern technologies, building APIs that let legacy systems communicate with contemporary applications.

Career longevity is another consideration. While some worry about RPG becoming obsolete, the timeline for that obsolescence keeps extending. Companies continue investing in IBM i infrastructure, and IBM shows no signs of abandoning the platform. For developers willing to learn both RPG and modern languages, the combination creates unusual career stability, you’re valuable for maintaining legacy systems while also building the bridges to future technologies.

Core Concepts and Syntax in RPG Programming

Understanding rpg programming means grappling with concepts that feel foreign to developers raised on C-style languages. The language’s evolution from punched-card systems created quirks that persist even in modern free-format code. But once you grasp the fundamentals, the logic becomes clear, RPG is ruthlessly efficient at what it does.

Fixed-Format vs. Free-Format RPG

Fixed-format RPG is what gives the language its intimidating reputation. Code is organized in rigid columns, with specific operation codes occupying exact positions. A calculation might look like:


C TOTAL ADD SUBTOTAL NEWTOTAL

Column positions determine what each element means, factor 1, operation, factor 2, result. This format made sense for punched cards but is nightmarish for modern developers accustomed to flexible syntax.

Free-format RPG, introduced with RPG IV, changed everything. The same operation becomes:


NEWTOTAL = TOTAL + SUBTOTAL:

Free-format code uses familiar syntax with semicolons, clearer operation codes, and no column restrictions. Modern rpg code development almost exclusively uses free-format for new programs, though you’ll encounter fixed-format when maintaining legacy applications.

The transition between formats can be jarring. Many shops have mixed codebases where newer modules use free-format while core programs remain fixed-format. Understanding both is essential for professional RPG work, similar to how veteran game developers might know both modern engines and legacy systems that power classic titles.

Data Types and Variable Declarations

The rpg programming language offers several core data types, declared in the Definition Specifications (D-Specs) section. Key types include:

  • Character (A): Text strings, fixed or variable length
  • Numeric (P, S, B, I): Packed decimal, signed, binary, integer
  • Date (D): Date values with various formats
  • Time (T): Time values
  • Timestamp (Z): Combined date and time
  • Indicator (*IN): Boolean flags, traditionally used for program control

Variable declarations in free-format look like:


Dcl-S CustomerName Char(50):

Dcl-S OrderTotal Packed(15:2):

Dcl-S OrderDate Date(*ISO):

The Dcl-S keyword declares a standalone variable, with data type and length/precision following. IBM RPG also supports data structures (Dcl-DS), which group related fields similar to structs in C, critical for handling database records and complex data operations.

One quirk that surprises newcomers: indicators. Traditional RPG used numbered indicators (*IN01 through *IN99) as boolean flags to control program flow. While modern code favors named boolean variables, you’ll encounter indicators extensively in legacy systems. They’re similar to bit flags in game programming, efficient but potentially confusing without proper documentation.

Operation Codes and Control Structures

RPG’s operation codes (opcodes) handle calculations, logic, and flow control. Common opcodes include:

  • EVAL: Evaluate expressions (often implicit in free-format)
  • IF/ELSE/ENDIF: Conditional logic
  • DOW/ENDDO: Do while loops
  • FOR/ENDFOR: For loops
  • CALLP: Call procedures
  • RETURN: Return from procedure
  • CHAIN: Random read from database file
  • READ: Sequential read from file

A typical control structure in free-format rpg code looks like:


If OrderTotal > 1000:

DiscountPercent = 10:

ElseIf OrderTotal > 500:

DiscountPercent = 5:

Else:

DiscountPercent = 0:

EndIf:

File operations are where RPG’s business-oriented design shines. The language treats files as first-class citizens, with opcodes optimized for database operations:


Chain (CustomerID) CustomerFile:

If %Found(CustomerFile):

// Process customer record

EndIf:

The CHAIN operation performs a random read using the key value, while %Found() is a built-in function checking if the record exists. This tight integration between language and database operations is why as400 rpg handles high-volume transaction processing so efficiently, there’s minimal overhead between code and data.

Getting Started with RPG Programming

Learning rpg programming presents a practical challenge: you need access to an IBM i system. Unlike Python or JavaScript, which you can install on any laptop in minutes, RPG requires either employer access to an IBM i server or a cloud-based development environment. This barrier to entry is partially why fewer developers learn the language, but several options exist for beginners.

Setting Up Your Development Environment

The modern rpg programming language development stack centers on Rational Developer for i (RDi), IBM’s Eclipse-based IDE. RDi provides syntax highlighting, code completion, integrated debugging, and database tools, essential features for productive development. A license costs around $1,000 annually, though many employers provide it.

For access to an IBM i system, options include:

  1. Employer systems: If you’re learning RPG for work, your company likely has development partitions available
  2. IBM cloud: IBM offers cloud-based IBM i instances through various providers, with costs ranging from $200-$500 monthly for development environments
  3. PUB400.com: A free public IBM i system for learning and experimentation, limited resources but perfect for beginners
  4. Academic programs: Some universities with IBM partnerships provide student access

Your toolkit should also include:

  • SEU (Source Entry Utility): Traditional green-screen editor, still used in many shops
  • IFS tools: For managing the Integrated File System and modern file operations
  • SQL tools: For database development and testing
  • Version control: Git integration is increasingly common for rpg code, though some organizations still use traditional source physical files

The learning curve is steep initially. Navigating IBM i’s command-line interface feels archaic compared to modern development tools, but the system’s power becomes apparent once you understand the architecture.

Writing Your First RPG Program

A classic first program in free-format ibm rpg displays output to the screen or generates a simple report. Here’s a minimal example:

**FREE

Dcl-S Message Char(50):


Message = 'Hello from RPG Programming':

Dsply Message:

*INLR = *On:

Return:

Breaking this down:

  • **FREE at the top declares the entire source as free-format
  • Dcl-S declares a standalone character variable
  • Dsply displays the message (in an interactive environment or job log)
  • *INLR = *On sets the Last Record indicator, signaling program completion
  • Return exits the program

Compiling and running involves IBM i commands:


CRTBNDRPG PGM(MYLIB/HELLO) SRCFILE(MYLIB/QRPGLESRC)

CALL MYLIB/HELLO

A more practical first program might read a database file and produce output. The gaming community, particularly those who enjoy modding, would appreciate the parallel, just as modding communities build tools to manipulate game data, RPG developers create programs that manipulate business data with similar precision:

**FREE

Dcl-F CustomerFile Disk(*Ext) Usage(*Input) Keyed:

Dcl-S TotalCount Int(10):


TotalCount = 0:


Dow Not %Eof(CustomerFile):

Read CustomerFile:

If Not %Eof(CustomerFile):

TotalCount += 1:

EndIf:

EndDo:


Dsply ('Total Customers: ' + %Char(TotalCount)):

*INLR = *On:

Return:

This program opens a customer database file, reads through all records sequentially, counts them, and displays the total. It demonstrates file handling, looping, and basic logic, fundamental skills for any rpg programming work.

Essential RPG Programming Techniques

Moving beyond basic syntax, productive rpg programming requires mastering techniques that leverage the language’s integration with IBM i’s architecture. These patterns separate hobbyist-level code from production-quality applications that process millions of transactions daily.

File Processing and Database Operations

File operations are the heart of rpg code. The language distinguishes between several file types:

  • Physical files (PF): Actual database tables containing data
  • Logical files (LF): Views or indexes over physical files
  • Display files (DSPF): Screen definitions for interactive programs
  • Printer files (PRTF): Report layouts and formatting

A typical database operation chain looks like:


Dcl-F OrderHeader Disk(*Ext) Usage(*Update) Keyed:

Dcl-F OrderDetail Disk(*Ext) Usage(*Input) Keyed:


Chain (OrderNumber) OrderHeader:

If %Found(OrderHeader):

OrderStatus = 'SHIPPED':

Update OrderHeaderRec:


SetLL (OrderNumber) OrderDetail:

Dow Not %Eof(OrderDetail):

Read OrderDetail:

If Not %Eof(OrderDetail) And OrderNum = OrderNumber:

// Process detail line

EndIf:

EndDo:

EndIf:

Key opcodes for file handling:

  • CHAIN: Direct read by key
  • SETLL: Position file pointer
  • READ/READP: Sequential read forward/backward
  • UPDATE: Modify current record
  • WRITE: Add new record
  • DELETE: Remove current record

The as400 rpg file architecture offers exceptional performance because the database and language are tightly coupled. There’s no translation layer or ORM overhead, RPG operations map directly to DB2 for i operations at the system level.

Subprocedures and Modular Programming

Modern rpg programming emphasizes modular design through subprocedures. A subprocedure is similar to a function in other languages, encapsulating logic for reuse:


Dcl-Proc CalculateDiscount:

Dcl-PI *N Packed(15:2):

OrderAmount Packed(15:2) Const:

CustomerType Char(10) Const:

End-PI:


Dcl-S Discount Packed(15:2):


Select:

When CustomerType = 'PREMIUM' And OrderAmount > 1000:

Discount = OrderAmount * 0.15:

When CustomerType = 'PREMIUM':

Discount = OrderAmount * 0.10:

When OrderAmount > 1000:

Discount = OrderAmount * 0.05:

Other:

Discount = 0:

EndSl:


Return Discount:

End-Proc:

The procedure interface (Dcl-PI) defines parameters and return type. The Const keyword prevents modification of input parameters, a best practice for data integrity.

Calling the procedure is straightforward:


DiscountAmount = CalculateDiscount(OrderTotal : CustType):

Service programs bundle multiple procedures into reusable modules, similar to libraries in other languages. This approach transforms monolithic rpg code into maintainable, testable components, essential for modern development practices.

Error Handling and Debugging Strategies

Traditional ibm rpg error handling relied heavily on indicators and result indicators. Modern approaches use error-handling opcodes and monitor groups:


Monitor:

Chain (CustomerID) CustomerFile:

If Not %Found():

// Handle missing record

EndIf:

On-Error:

ErrorMessage = 'Database error occurred':

// Log error, notify user, etc.

EndMon:

The Monitor block catches runtime errors, preventing program crashes. The On-Error section handles exceptions, allowing graceful degradation.

Debugging techniques include:

  • DSPLY statements: Quick output for checking variable values (similar to console.log in JavaScript)
  • STRDBG command: Interactive debugger with breakpoints and variable inspection
  • Job logs: Detailed execution traces and error messages
  • SQL logging: Tracking database operations and performance

RDi’s integrated debugger provides modern conveniences like watch expressions and conditional breakpoints. For complex issues, analyzing job logs and using the DSPJOBLOG command reveals what happened at the system level, invaluable for tracking down file lock issues or authority problems that aren’t immediately obvious in code.

Advanced RPG Features and Best Practices

Mastering rpg programming at an advanced level means bridging legacy systems with modern architectures. Today’s RPG developers aren’t just maintaining code, they’re building APIs, consuming web services, and integrating IBM i applications with cloud platforms and contemporary front-ends.

Integrating RPG with Web Services and APIs

The rpg programming language gained powerful HTTP client capabilities in recent versions, enabling direct consumption of REST APIs. Using the HTTPAPI open-source toolkit or native RPG IV features, you can make web service calls directly from rpg code:


Dcl-S Request Varchar(5000):

Dcl-S Response Varchar(50000):

Dcl-S StatusCode Int(10):


Request = 'https://api.example.com/customers':

StatusCode = http_get(Request : Response):


If StatusCode = 200:

// Parse JSON response using DATA-INTO or JSON parsing procedures

Data-Into CustomerData %DATA(Response : 'case=any'):

EndIf:

The DATA-INTO opcode (introduced in RPG 7.1) parses JSON directly into RPG data structures, a game-changer for integration work. Previously, developers needed custom parsing logic or external tools.

Exposing ibm rpg programs as web services involves creating REST endpoints using frameworks like ILEastic or IBM’s Integrated Web Services Server. A simple REST service might look like:


Dcl-Proc GetCustomerInfo Export:

Dcl-PI *N Varchar(5000):

CustomerID Int(10) Value:

End-PI:


Dcl-DS CustomerData Qualified:

Name Varchar(100):

Email Varchar(100):

Balance Packed(15:2):

End-DS:


Chain (CustomerID) CustomerFile:

If %Found():

CustomerData.Name = CustName:

CustomerData.Email = CustEmail:

CustomerData.Balance = AcctBalance:

Return %ToJson(CustomerData):

Else:

Return '{"error":"Customer not found"}':

EndIf:

End-Proc:

This pattern allows web applications to call RPG business logic through standard HTTP requests, preserving decades of tested code while modernizing the interface. Similar to how gaming platforms increasingly rely on game journalism sites for coverage that bridges classic and modern gaming cultures, RPG modernization bridges legacy and contemporary architectures.

SQL Embedding in RPG Programs

Embedded SQL transforms how rpg programming handles complex database operations. While native file operations excel at sequential processing, SQL embedded directly in rpg code handles complex queries, joins, and set-based operations:


Exec SQL

SELECT CustomerName, SUM(OrderTotal) INTO :CustName, :TotalOrders

FROM Orders

JOIN Customers ON Orders.CustID = Customers.CustID

WHERE Orders.OrderDate BETWEEN :StartDate AND :EndDate

GROUP BY CustomerName

ORDER BY TotalOrders DESC

FETCH FIRST 10 ROWS ONLY:

The : prefix marks RPG variables used in SQL statements. The compiler translates embedded SQL into native DB2 operations, optimizing performance automatically.

Cursors handle result sets with multiple rows:


Exec SQL

DECLARE C1 CURSOR FOR

SELECT ProductID, ProductName, Price

FROM Products

WHERE Category = :SelectedCategory:


Exec SQL OPEN C1:


Dow SQLCODE = 0:

Exec SQL FETCH C1 INTO :ProdID, :ProdName, :Price:

If SQLCODE = 0:

// Process each product

EndIf:

EndDo:


Exec SQL CLOSE C1:

Best practices for embedded SQL include:

  • Use parameter markers to prevent SQL injection in dynamic queries
  • Monitor SQLCODE and SQLSTATE for error handling
  • Leverage indexes by understanding query execution plans
  • Close cursors explicitly to free resources
  • Commit/rollback appropriately for transaction integrity

The combination of native file operations for simple CRUD and embedded SQL for complex queries gives as400 rpg remarkable flexibility. Developers can choose the right tool for each operation rather than forcing everything through a single paradigm.

Common Challenges and How to Overcome Them

Every rpg programming developer encounters similar obstacles, especially when transitioning from modern languages or maintaining legacy code written before current best practices emerged. Understanding these challenges and their solutions accelerates the learning curve significantly.

Legacy code maintenance is perhaps the most common challenge. You’ll inherit programs written in fixed-format rpg code with minimal comments, cryptic variable names, and logic that made sense 30 years ago but is opaque today. Approach this systematically:

  • Document as you learn: Add comments explaining what each section does
  • Refactor incrementally: Don’t attempt a full rewrite: improve small sections as you modify them
  • Use RDi’s visualization tools: Flow charts and call graphs help map program structure
  • Ask veterans: Senior RPG developers often know the historical context that explains odd design choices

Performance optimization surfaces when programs that ran fine with 1,000 records struggle with 100,000. Key techniques:

  • Replace sequential reads with keyed access where possible
  • Use SQL for set-based operations instead of iterating with READ loops
  • Leverage indexes, check with DSPFD or database monitoring tools
  • Consider commitment control and transaction batching for write-heavy operations
  • Profile with system tools (STRPFRMON) to identify actual bottlenecks rather than guessing

Modernization pressure creates tension between preserving working code and adopting new approaches. Organizations often want mobile apps or web interfaces but can’t afford full rewrites. The solution is typically a hybrid architecture:

  • Keep core ibm rpg business logic on IBM i
  • Expose that logic through REST APIs
  • Build modern front-ends in JavaScript/React/whatever that call the APIs
  • Gradually refactor RPG code to free-format and modular design as you touch it

This approach mirrors strategies in game development where studios preserve engine core functionality while updating graphics and interfaces, keep what works, modernize what’s visible.

Finding help and community is harder for rpg programming than mainstream languages. Stack Overflow has limited RPG content compared to Python or Java. Solutions:

  • MIDRANGE-L mailing list: Active community of IBM i professionals
  • RPG-L mailing list: Focused specifically on RPG language questions
  • IBM forums: Official support and discussion
  • LinkedIn groups: Several IBM i developer groups with thousands of members
  • Local user groups: Many regions have IBM i user groups with regular meetings
  • Consulting networks: When stuck, RPG consultants often provide quick answers for reasonable fees

The tight-knit community means experienced developers are often willing to help newcomers, there’s a vested interest in growing the talent pool.

Tool limitations frustrate developers used to modern IDEs and ecosystems. RDi is powerful but expensive: free alternatives exist but have limitations. Navigate this by:

  • Investing in RDi if serious about RPG development, the productivity gains justify the cost
  • Using PUB400.com with VS Code and RPG extensions for learning and side projects
  • Advocating for proper tooling with management, cheap tools cost more in lost productivity
  • Building custom utilities and scripts to automate repetitive tasks

Many shops also struggle with version control. RPG code traditionally lived in source physical files without proper versioning. Modern practice uses Git, with source stored in the IFS and deployed to libraries as needed. If your organization hasn’t made this transition, championing it can significantly improve development workflow, similar to how gaming communities thrive when they have proper forums and tools for sharing builds and strategies.

Learning Resources for RPG Programmers

Quality rpg programming learning resources are less abundant than for mainstream languages, but several excellent options exist for developers serious about mastering the rpg language.

Official IBM documentation is comprehensive but dense. The IBM i Information Center contains the complete RPG reference, including:

  • RPG IV Language Reference manual
  • ILE RPG Programmer’s Guide
  • DB2 for i SQL Programming guide
  • Rational Developer for i documentation

These are free and authoritative but read like technical specifications rather than tutorials. Use them as references once you understand basics.

Books worth reading:

  • Programming in ILE RPG, Fifth Edition by Jim Martin and Bryan Meyers, the definitive modern RPG textbook
  • Free-Format RPG IV by Jim Martin, focused specifically on modern syntax
  • SQL for IBM i: A Database Modernization Guide by Kent Milligan, essential for embedded SQL
  • Modernizing IBM i Applications by various authors, covers integration patterns and modernization strategies

Online courses and platforms:

  • System i Developer (now part of HelpSystems training): Paid courses covering RPG fundamentals through advanced topics
  • Udemy: Several RPG courses, quality varies but some are solid introductions
  • PUB400.com tutorials: Free hands-on exercises on a real IBM i system
  • IBM developerWorks: Occasional articles and tutorials on modern RPG techniques

Blogs and websites:

  • RPG programming blog by Susan Gantner and Jon Paris, regular posts on modern RPG features and best practices
  • ITJungle.com: News and articles about IBM i ecosystem, including RPG development
  • Code400.com: Forums and articles focused on IBM i development
  • RPGpgm.com: Various tutorials and code samples

Practice projects accelerate learning more than reading alone. Build:

  • Simple CRUD applications (Create, Read, Update, Delete) for practice data
  • Report generators that demonstrate file reading and formatting
  • REST API wrappers that call external services
  • Modernization projects that expose existing programs through web services

If you have access to an IBM i system at work, volunteer for small rpg code maintenance tasks before tackling complex projects. Real business requirements teach faster than theoretical exercises.

Mentorship matters enormously in RPG development. The language’s quirks and the IBM i ecosystem’s complexity mean having an experienced developer review your code and explain architectural decisions is invaluable. If your organization has senior RPG programmers, request regular code reviews and pair programming sessions.

Certifications exist but matter less than practical experience. IBM offers certification programs for IBM i and RDi, which can help with credibility early in your career but aren’t necessary for experienced developers with a solid portfolio.

The learning path for as400 rpg is steeper than modern languages, but the supply/demand imbalance for skilled developers means the investment pays off. Most developers become productive with basic tasks within 3-6 months and reach intermediate proficiency in 1-2 years of regular work. Mastery, understanding the deep architectural integration between RPG, DB2, and the IBM i operating system, takes longer but opens up the most interesting and highest-paying opportunities.

Conclusion

RPG programming in 2026 sits at a fascinating crossroads. The rpg programming language that began as a simple report generator in 1959 has evolved into a sophisticated tool for building and maintaining business-critical applications. While it’ll never match Python’s versatility or JavaScript’s ubiquity, ibm rpg excels in its niche, and that niche includes thousands of organizations processing billions of dollars in transactions daily.

For developers, rpg code represents an unusual opportunity. The barrier to entry creates scarcity value: fewer programmers learn it, driving up compensation for those who do. The combination of legacy system maintenance and modernization projects means work is both stable and increasingly interesting as organizations bridge as400 rpg systems with contemporary technologies.

The path forward isn’t about RPG replacing modern languages or vice versa. It’s about integration, using rpg language for what it does best (reliable, high-volume transaction processing on IBM i) while building modern interfaces and integrations with web technologies, APIs, and cloud platforms. Developers who master both worlds command premium positions because they can speak both languages, literally and figuratively.

If you’re considering learning RPG, approach it pragmatically. The language isn’t trendy, the tooling isn’t glamorous, and you won’t find RPG meetups in every city. But you will find stable, well-compensated work maintaining systems that genuinely matter to the organizations running them. And in an industry obsessed with the next framework or platform, there’s something refreshing about mastering a language where the fundamentals you learn today will still be relevant a decade from now, because they’ve already been relevant for sixty years.