<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rainierio.dev</title>
    <description>The latest articles on DEV Community by Rainierio.dev (@rainierio-dev).</description>
    <link>https://dev.to/rainierio-dev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4206764%2Fb9de8030-61de-422d-9d7d-749e17877377.jpeg</url>
      <title>DEV Community: Rainierio.dev</title>
      <link>https://dev.to/rainierio-dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rainierio-dev"/>
    <language>en</language>
    <item>
      <title>Your free IBM i lab in 30 minutes: PUB400 + VS Code + Code for IBM i</title>
      <dc:creator>Rainierio.dev</dc:creator>
      <pubDate>Sun, 25 Oct 2026 15:27:36 +0000</pubDate>
      <link>https://dev.to/rainierio-dev/your-free-ibm-i-lab-in-30-minutes-pub400-vs-code-code-for-ibm-i-o1p</link>
      <guid>https://dev.to/rainierio-dev/your-free-ibm-i-lab-in-30-minutes-pub400-vs-code-code-for-ibm-i-o1p</guid>
      <description>&lt;p&gt;You do not need to buy hardware to learn IBM i. PUB400 gives you a free account on a real system, and VS Code with the Code for IBM i extension gives you a modern editor. This takes about 30 minutes, mostly waiting for your account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules of PUB400 first
&lt;/h2&gt;

&lt;p&gt;PUB400 is run by volunteers, so respect its terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free profile with about &lt;strong&gt;250 MB&lt;/strong&gt; of storage (verify current limit on the site).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No commercial use.&lt;/strong&gt; Learning and personal projects only. Do not put employer or customer code or data on it.&lt;/li&gt;
&lt;li&gt;One account per person.&lt;/li&gt;
&lt;li&gt;Runs IBM i 7.5 as far as I know; check the site.&lt;/li&gt;
&lt;li&gt;Do not store anything you cannot lose. There are no guarantees.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sign up&lt;/strong&gt;: Get a PUB400 profile by email&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install VS Code&lt;/strong&gt;: Add the Code for IBM i extension&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect over SSH&lt;/strong&gt;: Host pub400.com, your profile&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a library and source file&lt;/strong&gt;: Your workspace on the system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write hello world&lt;/strong&gt;: A short **FREE program&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compile and run&lt;/strong&gt;: CRTBNDRPG, then CALL&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 1: Sign up
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://pub400.com" rel="noopener noreferrer"&gt;pub400.com&lt;/a&gt; and follow the sign-up link.&lt;/li&gt;
&lt;li&gt;Fill in the form with a real email address. The password arrives by email, so check spam.&lt;/li&gt;
&lt;li&gt;Your profile name will be uppercase, up to 10 characters.&lt;/li&gt;
&lt;li&gt;On first sign-on you will be asked to change the password.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Approval is not always instant. Verify the exact process on the site; it may change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Install VS Code and the extension
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install VS Code from &lt;a href="https://code.visualstudio.com" rel="noopener noreferrer"&gt;code.visualstudio.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Open Extensions (Ctrl+Shift+X), search for &lt;strong&gt;Code for IBM i&lt;/strong&gt; (by Halcyon / Liam Allan and contributors), and install it.&lt;/li&gt;
&lt;li&gt;Documentation lives at &lt;a href="https://codefori.github.io/docs" rel="noopener noreferrer"&gt;codefori.github.io/docs&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An "IBM i" icon appears in the left activity bar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Connect over SSH
&lt;/h2&gt;

&lt;p&gt;Code for IBM i uses SSH to the IBM i. In the IBM i panel:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose &lt;strong&gt;New Connection&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Host: &lt;code&gt;pub400.com&lt;/code&gt;. Port: &lt;code&gt;2222&lt;/code&gt; (PUB400 uses a non-standard SSH port; verify on the site).&lt;/li&gt;
&lt;li&gt;Username: your profile. Password: yours.&lt;/li&gt;
&lt;li&gt;Connect.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If it works, you will see your connection and the panels for Object Browser, IFS Browser and Library List.&lt;/p&gt;

&lt;p&gt;To check SSH outside VS Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-p&lt;/span&gt; 2222 YOURUSER@pub400.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Create a library and a source file
&lt;/h2&gt;

&lt;p&gt;On the IBM i command line (Code for IBM i has a terminal, or use the 5250 session below):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight common_lisp"&gt;&lt;code&gt;&lt;span class="nv"&gt;CRTLIB&lt;/span&gt; &lt;span class="nv"&gt;LIB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;MYLIB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;'My&lt;/span&gt; &lt;span class="nv"&gt;learning&lt;/span&gt; &lt;span class="nv"&gt;library&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;CRTSRCPF&lt;/span&gt; &lt;span class="nv"&gt;FILE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;MYLIB/QRPGLESRC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;RCDLEN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;'RPG&lt;/span&gt; &lt;span class="nv"&gt;source&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;ADDLIBLE&lt;/span&gt; &lt;span class="nv"&gt;LIB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;MYLIB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On PUB400 you may not be allowed to create libraries with arbitrary names, and your home library may already exist. Use your own name-based library if &lt;code&gt;CRTLIB&lt;/code&gt; is refused (verify).&lt;/p&gt;

&lt;p&gt;Alternatively, work from the IFS (a Linux-like folder tree). &lt;code&gt;/home/YOURUSER&lt;/code&gt; is yours, and Code for IBM i can edit source stream files there. For beginners I suggest the IFS; compiled programs still go in a library.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Write hello world in &lt;code&gt;**FREE&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Create &lt;code&gt;hello.pgm.rpgle&lt;/code&gt; in &lt;code&gt;/home/YOURUSER/&lt;/code&gt; (or a member &lt;code&gt;HELLO&lt;/code&gt; in &lt;code&gt;MYLIB/QRPGLESRC&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**FREE
ctl-opt dftactgrp(*no) actgrp(*new);

dcl-s who varchar(30) inz('IBM i');

dsply ('Hello from ' + who);
return;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6: Compile and run
&lt;/h2&gt;

&lt;p&gt;In Code for IBM i, use the &lt;strong&gt;Compile&lt;/strong&gt; action on the file (command palette: &lt;em&gt;Run Action&lt;/em&gt; then choose a compile action). Or in a terminal, using &lt;code&gt;CRTBNDRPG&lt;/code&gt; for a source member:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight common_lisp"&gt;&lt;code&gt;&lt;span class="nv"&gt;CRTBNDRPG&lt;/span&gt; &lt;span class="nv"&gt;PGM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;MYLIB/HELLO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;SRCFILE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;MYLIB/QRPGLESRC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;SRCMBR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;HELLO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;CALL&lt;/span&gt; &lt;span class="nv"&gt;PGM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;MYLIB/HELLO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For an IFS stream file, use &lt;code&gt;CRTBNDRPG PGM(MYLIB/HELLO) SRCSTMF('/home/YOURUSER/hello.pgm.rpgle')&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;DSPLY&lt;/code&gt; writes to the job's message queue; in a 5250 session you see &lt;code&gt;Hello from IBM i&lt;/code&gt; on screen. Press Enter to dismiss it.&lt;/p&gt;

&lt;h2&gt;
  
  
  5250 emulator option
&lt;/h2&gt;

&lt;p&gt;You can use the traditional green screen as well. Two options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A TN5250 client, such as tn5250j or the one in Access Client Solutions (IBM's free tool), pointed at &lt;code&gt;pub400.com&lt;/code&gt;. The telnet port and TLS port are on the PUB400 site (verify).&lt;/li&gt;
&lt;li&gt;PUB400's own web access, if listed on the site.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn at least the basics of 5250: &lt;code&gt;WRKACTJOB&lt;/code&gt;, &lt;code&gt;WRKSPLF&lt;/code&gt;, &lt;code&gt;DSPJOBLOG&lt;/code&gt;. You will meet these in every real job. See &lt;a href="https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap" rel="noopener noreferrer"&gt;the roadmap&lt;/a&gt;, stage 1.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Connection refused / timeout:&lt;/strong&gt; check you used the SSH port from the PUB400 site, not 22. Corporate networks often block outgoing ports; try from home.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Login fails:&lt;/strong&gt; profile names are uppercase; passwords are case-sensitive. Passwords expire; reset via the site if you are locked out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;CPF2105 Object not found&lt;/code&gt;:&lt;/strong&gt; the library is not on your library list. Run &lt;code&gt;ADDLIBLE MYLIB&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;CPF9801&lt;/code&gt; / not authorized:&lt;/strong&gt; you tried to create or write something outside your own library. Use your own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compile fails with errors:&lt;/strong&gt; open the joblog or the Code for IBM i error panel. A common cause is the first line; &lt;code&gt;**FREE&lt;/code&gt; must start in column 1 with nothing before it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extension can't find tools:&lt;/strong&gt; Code for IBM i needs some open source packages on the server (like &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;bash&lt;/code&gt;); it normally offers to install them. If that fails, check the extension docs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source file record length:&lt;/strong&gt; QRPGLESRC members compile fine at 112; if you copy long lines they truncate. Keep lines short.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before you go deeper, &lt;a href="https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap" rel="noopener noreferrer"&gt;the roadmap&lt;/a&gt; shows where this lab fits, and &lt;a href="https://rainierio.dev/learn/start-here/as400-vs-iseries-vs-ibm-i" rel="noopener noreferrer"&gt;AS400 vs iSeries vs IBM i&lt;/a&gt; explains what you just signed on to. Once hello world compiles, read &lt;a href="https://rainierio.dev/learn/platform-concepts/ibm-i-mental-model-libraries-objects-jobs" rel="noopener noreferrer"&gt;the library and job mental model&lt;/a&gt;, then write something real in &lt;a href="https://rainierio.dev/learn/rpg/free-format-rpg-first-program" rel="noopener noreferrer"&gt;your first free-format RPG program&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on PUB400
&lt;/h2&gt;

&lt;p&gt;Make these three small changes and recompile each time:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Change the greeting and the variable.&lt;/li&gt;
&lt;li&gt;Add a loop that prints 1 to 5 using &lt;code&gt;dsply&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Introduce a deliberate typo and find the error in the compile output.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That cycle (edit, compile, fix, run) is the daily work. Do it ten times and you are no longer a beginner on tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://pub400.com" rel="noopener noreferrer"&gt;PUB400&lt;/a&gt;: free public IBM i; read the rules here&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://codefori.github.io/docs" rel="noopener noreferrer"&gt;Code for IBM i docs&lt;/a&gt;: install and connection guide&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/support/pages/coding-rpg-iv-beginners-tutorial" rel="noopener noreferrer"&gt;IBM RPG Cafe beginner tutorial&lt;/a&gt;: what to write next&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rpgtutorial.k3s.com" rel="noopener noreferrer"&gt;K3S RPG tutorial&lt;/a&gt;: practice exercises&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rpgpgm.com" rel="noopener noreferrer"&gt;RPGPGM.com&lt;/a&gt;: short examples when you get stuck&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://rainierio.dev/learn/platform-concepts/ibm-i-mental-model-libraries-objects-jobs" rel="noopener noreferrer"&gt;Libraries, objects and jobs mental model&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap" rel="noopener noreferrer"&gt;The IBM i learning roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/platform-concepts/ibm-i-mental-model-libraries-objects-jobs" rel="noopener noreferrer"&gt;Libraries, objects and jobs mental model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/rpg/free-format-rpg-first-program" rel="noopener noreferrer"&gt;Your first free-format RPG program&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://rainierio.dev/learn/start-here/free-ibm-i-lab-pub400-vscode" rel="noopener noreferrer"&gt;rainierio.dev&lt;/a&gt;. The full Learn IBM i track, with an Indonesian version, is at &lt;a href="https://rainierio.dev/learn" rel="noopener noreferrer"&gt;rainierio.dev/learn&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ibmi</category>
      <category>as400</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>AS400 vs iSeries vs IBM i: one page to settle it</title>
      <dc:creator>Rainierio.dev</dc:creator>
      <pubDate>Sun, 25 Oct 2026 15:27:32 +0000</pubDate>
      <link>https://dev.to/rainierio-dev/as400-vs-iseries-vs-ibm-i-one-page-to-settle-it-2cgb</link>
      <guid>https://dev.to/rainierio-dev/as400-vs-iseries-vs-ibm-i-one-page-to-settle-it-2cgb</guid>
      <description>&lt;p&gt;Job ads say "AS400", IBM says "IBM i", and someone on a forum says "iSeries". They all mean the same lineage. By the end of this page you will know the dates of each rename, the difference between the operating system and the hardware, and what to write on your CV.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short answer
&lt;/h2&gt;

&lt;p&gt;IBM renamed one platform several times. In 2026, call the operating system &lt;strong&gt;IBM i&lt;/strong&gt; and the hardware &lt;strong&gt;IBM Power&lt;/strong&gt;. Say "AS/400" when you talk about history, or when you want to match what a recruiter types into a search box.&lt;/p&gt;

&lt;h2&gt;
  
  
  The naming timeline
&lt;/h2&gt;

&lt;p&gt;Each step below is a rename, not a replacement. Version numbers carried straight through (V5R4, then 7.5), and programs written in the 1990s still run.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1988&lt;/strong&gt;: AS/400. Application System/400 launches, successor to System/38 and System/36. The OS is called OS/400.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2000&lt;/strong&gt;: iSeries. Rebrand to eServer iSeries during the e-business push.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2006&lt;/strong&gt;: System i. Rebrand again, tied to the merger of the System p and System i hardware lines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2008&lt;/strong&gt;: IBM i. OS renamed IBM i; the hardware line becomes Power Systems, running IBM i, AIX and Linux.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The OS had its own names too: OS/400, then i5/OS, then IBM i. Check the dates against IBM's own history page before you quote them in a document; I wrote them from my own knowledge of the product history.&lt;/p&gt;

&lt;h2&gt;
  
  
  OS versus hardware
&lt;/h2&gt;

&lt;p&gt;Most people miss this part.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hardware: IBM Power servers. The same physical family runs IBM i, AIX and Linux. Early AS/400s used a custom processor, later ones moved to PowerPC and then Power.&lt;/li&gt;
&lt;li&gt;Operating system: IBM i. This is what you log into and write programs on.&lt;/li&gt;
&lt;li&gt;Database: Db2 for i is built into the OS. You do not install it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So "an AS/400" in 2026 is wrong twice: the box is a Power server and the OS is IBM i. Nobody at a bank will correct you, but now you know.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Power server&lt;/strong&gt;: The hardware you can rack, run by IBM or a hosting partner&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PowerVM partition (LPAR)&lt;/strong&gt;: One slice of the server, with its own OS and memory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IBM i 7.5&lt;/strong&gt;: The operating system you sign on to&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Db2 for i, ILE RPG, CL, COBOL, C&lt;/strong&gt;: Database and compilers ship with the OS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IFS and open source tools&lt;/strong&gt;: Stream files, Node.js, Python, Git&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why job ads still say AS400
&lt;/h2&gt;

&lt;p&gt;Recruiters search by the name they learned, and experienced developers type "AS400" into job boards, so the ads follow. Some companies have run the same system since the 1990s and the name stuck internally.&lt;/p&gt;

&lt;p&gt;On your own CV, write "IBM i (AS/400)" once and use IBM i everywhere else. That matches both searches.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to call it in 2026
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Thing&lt;/th&gt;
&lt;th&gt;Say this&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operating system&lt;/td&gt;
&lt;td&gt;IBM i&lt;/td&gt;
&lt;td&gt;Also fine: "i", as in "the i"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hardware&lt;/td&gt;
&lt;td&gt;IBM Power&lt;/td&gt;
&lt;td&gt;Or Power Systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main language&lt;/td&gt;
&lt;td&gt;RPG (ILE RPG, RPGLE)&lt;/td&gt;
&lt;td&gt;Free-format is the modern style&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Casual talk with older colleagues&lt;/td&gt;
&lt;td&gt;the AS400&lt;/td&gt;
&lt;td&gt;Common and fine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Writing for new readers&lt;/td&gt;
&lt;td&gt;not iSeries, not System i&lt;/td&gt;
&lt;td&gt;Retired names&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Current releases and hardware
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Release&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Hardware&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IBM i 7.4&lt;/td&gt;
&lt;td&gt;Left standard support on 30 September 2026, so teams are upgrading or buying extended support&lt;/td&gt;
&lt;td&gt;Check IBM's model list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IBM i 7.5&lt;/td&gt;
&lt;td&gt;The release most shops run or are moving to&lt;/td&gt;
&lt;td&gt;Runs on a range of Power generations; check the model list for your box&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IBM i 7.6&lt;/td&gt;
&lt;td&gt;General availability April 2025&lt;/td&gt;
&lt;td&gt;Power10 and Power11 only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;IBM's lifecycle page is the authority for exact end-of-support terms and supported models, so read it before you plan an upgrade.&lt;/p&gt;

&lt;p&gt;PUB400, the free practice system, ran IBM i 7.5 when I last checked, which is a good target for learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick check on your own system
&lt;/h2&gt;

&lt;p&gt;Once connected, ask the system which release it runs. This SQL view exists on current releases; verify on yours:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;SYSIBMADM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ENV_SYS_INFO&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;OS_VERSION&lt;/code&gt; and &lt;code&gt;OS_RELEASE&lt;/code&gt; are in the result. The &lt;code&gt;DSPPTF&lt;/code&gt; command and the sign-on screen show it too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does the old knowledge still apply?
&lt;/h2&gt;

&lt;p&gt;Yes. Code written for the AS/400 in the 1990s often still runs on current IBM i, because IBM kept backward compatibility for decades. That is why banks keep these systems: the business logic is old and it works. It also means you will see fixed-format RPG, DDS-described files and green-screen menus sitting next to modern SQL, free-format RPG and REST services in the same shop. Learn the modern style first and learn to read the old one as you go.&lt;/p&gt;

&lt;p&gt;Once you know the naming, set up a place to practise with &lt;a href="https://rainierio.dev/learn/start-here/free-ibm-i-lab-pub400-vscode" rel="noopener noreferrer"&gt;the free PUB400 lab&lt;/a&gt;, then learn the platform's &lt;a href="https://rainierio.dev/learn/platform-concepts/ibm-i-mental-model-libraries-objects-jobs" rel="noopener noreferrer"&gt;library and job mental model&lt;/a&gt;. The full order is in &lt;a href="https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap" rel="noopener noreferrer"&gt;the learning roadmap&lt;/a&gt;. The old fixed-format code mentioned above is covered in &lt;a href="https://rainierio.dev/learn/rpg/reading-fixed-format-rpg-you-inherited" rel="noopener noreferrer"&gt;reading fixed-format RPG you inherited&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on PUB400
&lt;/h2&gt;

&lt;p&gt;Sign on to PUB400 and run these at the command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DSPSYSVAL SYSVAL(QSRLNBR)
DSPPTF
WRKACTJOB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first shows the serial number, the second lists installed fixes, and the third shows what the OS is doing right now. You are looking at IBM i on Power, not an AS/400, and you know why people still call it one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/products/ibm-i" rel="noopener noreferrer"&gt;IBM i product page&lt;/a&gt;: IBM's own current positioning&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://barrettotte.github.io/IBMi-Book" rel="noopener noreferrer"&gt;Barrett Otte, IBMi-Book&lt;/a&gt;: introduction with platform history and concepts&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nicklitten.com" rel="noopener noreferrer"&gt;nicklitten.com&lt;/a&gt;: long-running IBM i community site with many platform explainers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pub400.com" rel="noopener noreferrer"&gt;PUB400&lt;/a&gt;: free system to see IBM i for yourself&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://rainierio.dev/learn/start-here/free-ibm-i-lab-pub400-vscode" rel="noopener noreferrer"&gt;Free IBM i lab: PUB400 + VS Code&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap" rel="noopener noreferrer"&gt;The IBM i learning roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/start-here/free-ibm-i-lab-pub400-vscode" rel="noopener noreferrer"&gt;Free IBM i lab: PUB400 + VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/platform-concepts/ibm-i-mental-model-libraries-objects-jobs" rel="noopener noreferrer"&gt;Libraries, objects and jobs mental model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://rainierio.dev/learn/start-here/as400-vs-iseries-vs-ibm-i" rel="noopener noreferrer"&gt;rainierio.dev&lt;/a&gt;. The full Learn IBM i track, with an Indonesian version, is at &lt;a href="https://rainierio.dev/learn" rel="noopener noreferrer"&gt;rainierio.dev/learn&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ibmi</category>
      <category>as400</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The IBM i learning roadmap: from zero to modern RPG developer</title>
      <dc:creator>Rainierio.dev</dc:creator>
      <pubDate>Sun, 25 Oct 2026 15:27:27 +0000</pubDate>
      <link>https://dev.to/rainierio-dev/the-ibm-i-learning-roadmap-from-zero-to-modern-rpg-developer-5dk1</link>
      <guid>https://dev.to/rainierio-dev/the-ibm-i-learning-roadmap-from-zero-to-modern-rpg-developer-5dk1</guid>
      <description>&lt;p&gt;I work on IBM i core banking for a living, and the question I get most from newcomers is "where do I start, and in what order?" Most people lose months jumping between tutorials. This is the order I would follow if I started again today, using free resources only.&lt;/p&gt;

&lt;p&gt;The hour estimates are my own rough guesses for someone studying part-time. They are not benchmarks. Your pace will differ.&lt;/p&gt;

&lt;h2&gt;
  
  
  The roadmap at a glance
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The interactive roadmap diagram is on the original post: &lt;a href="https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap" rel="noopener noreferrer"&gt;https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Total: roughly 190 hours to be useful, longer to be good. Stages 2 to 4 overlap in practice; do not wait to "finish" one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 12 articles, in order
&lt;/h2&gt;

&lt;p&gt;The roadmap is a map; these are the articles that go with it, in reading order.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap" rel="noopener noreferrer"&gt;The IBM i learning roadmap&lt;/a&gt;: Start here: the staged path&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/start-here/as400-vs-iseries-vs-ibm-i" rel="noopener noreferrer"&gt;AS400 vs iSeries vs IBM i&lt;/a&gt;: Why the names differ and what to call it&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/start-here/free-ibm-i-lab-pub400-vscode" rel="noopener noreferrer"&gt;Free IBM i lab: PUB400 + VS Code&lt;/a&gt;: PUB400 account and VS Code setup&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/platform-concepts/ibm-i-mental-model-libraries-objects-jobs" rel="noopener noreferrer"&gt;Libraries, objects and jobs mental model&lt;/a&gt;: Libraries, library list, objects, jobs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/rpg/free-format-rpg-first-program" rel="noopener noreferrer"&gt;Your first free-format RPG program&lt;/a&gt;: Write and compile modern RPG&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/rpg/reading-fixed-format-rpg-you-inherited" rel="noopener noreferrer"&gt;Reading fixed-format RPG you inherited&lt;/a&gt;: Read the legacy code you will meet&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/cl/cl-programming-essentials" rel="noopener noreferrer"&gt;CL programming essentials&lt;/a&gt;: Chain and schedule jobs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/db2-for-i-sql/sqlrpgle-embedded-sql-done-properly" rel="noopener noreferrer"&gt;Embedded SQL in RPGLE, done properly&lt;/a&gt;: SQL inside RPG programs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/db2-for-i-sql/dds-to-sql-ddl-migration" rel="noopener noreferrer"&gt;DDS to SQL DDL migration&lt;/a&gt;: Move DDS files to SQL tables&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/ile/ile-modules-service-programs-binder" rel="noopener noreferrer"&gt;ILE modules, service programs and the binder&lt;/a&gt;: Modules, service programs, binding&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/modernization/expose-rpg-as-rest-api-iws" rel="noopener noreferrer"&gt;Expose RPG as a REST API with IWS&lt;/a&gt;: Call RPG from REST clients&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rainierio.dev/learn/core-banking/core-banking-on-ibm-i-what-it-does" rel="noopener noreferrer"&gt;Core banking on IBM i: what it does&lt;/a&gt;: The domain that makes you valuable&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Stage 0: Orientation (~3h)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn:&lt;/strong&gt; what IBM i is, how it relates to AS/400 and Power hardware, what kind of work exists (banking, insurance, retail, logistics), and what a modern day looks like (VS Code, Git, SQL).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;a href="https://rainierio.dev/learn/start-here/as400-vs-iseries-vs-ibm-i" rel="noopener noreferrer"&gt;AS400 vs iSeries vs IBM i&lt;/a&gt;, &lt;a href="https://rainierio.dev/learn/start-here/free-ibm-i-lab-pub400-vscode" rel="noopener noreferrer"&gt;Free IBM i lab: PUB400 + VS Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; you need to know the platform is alive and what you are signing up for. Also get a free place to practise now, not later. See &lt;a href="https://rainierio.dev/learn/start-here/as400-vs-iseries-vs-ibm-i" rel="noopener noreferrer"&gt;AS400 vs iSeries vs IBM i&lt;/a&gt; and the lab article below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/products/ibm-i" rel="noopener noreferrer"&gt;IBM i product page&lt;/a&gt;: official overview of the platform&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pub400.com" rel="noopener noreferrer"&gt;PUB400&lt;/a&gt;: free public IBM i system for practice&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://barrettotte.github.io/IBMi-Book" rel="noopener noreferrer"&gt;Barrett Otte, IBMi-Book&lt;/a&gt;: a developer-written book that covers the platform end to end&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 1: Platform concepts (~12h)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn:&lt;/strong&gt; everything is an object; libraries (like schemas/folders), source physical files, members, the IFS, jobs and subsystems, job logs, &lt;code&gt;WRKACTJOB&lt;/code&gt;, &lt;code&gt;WRKOBJ&lt;/code&gt;, &lt;code&gt;DSPLIB&lt;/code&gt;, authority basics, library list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;a href="https://rainierio.dev/learn/platform-concepts/ibm-i-mental-model-libraries-objects-jobs" rel="noopener noreferrer"&gt;Libraries, objects and jobs mental model&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; most beginner errors ("object not found", "not authorized") are platform errors, not RPG errors. If you understand the library list you will save yourself weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://barrettotte.github.io/IBMi-Book" rel="noopener noreferrer"&gt;Barrett Otte, IBMi-Book&lt;/a&gt;: clear explanations of objects, libraries and jobs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/support/pages/coding-rpg-iv-beginners-tutorial" rel="noopener noreferrer"&gt;IBM RPG Cafe beginner tutorial&lt;/a&gt;: walks through basics on a real system&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nicklitten.com" rel="noopener noreferrer"&gt;nicklitten.com&lt;/a&gt;: long-running community site with many beginner explainers&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 2: RPG free-format (~40h)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn:&lt;/strong&gt; &lt;code&gt;**FREE&lt;/code&gt; fully free-format RPG: variable declarations, data structures, &lt;code&gt;dcl-proc&lt;/code&gt;, built-in functions, &lt;code&gt;dcl-f&lt;/code&gt; file access, &lt;code&gt;READ&lt;/code&gt;/&lt;code&gt;CHAIN&lt;/code&gt;/&lt;code&gt;WRITE&lt;/code&gt;, error handling with &lt;code&gt;monitor&lt;/code&gt;, debugging. Skip fixed-format columns for writing; learn to read them later because old code uses them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;a href="https://rainierio.dev/learn/rpg/free-format-rpg-first-program" rel="noopener noreferrer"&gt;Your first free-format RPG program&lt;/a&gt;, &lt;a href="https://rainierio.dev/learn/rpg/reading-fixed-format-rpg-you-inherited" rel="noopener noreferrer"&gt;Reading fixed-format RPG you inherited&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; RPG is the language of the business logic on the platform. Free-format is what new code is written in and what teams expect from new hires.&lt;/p&gt;

&lt;p&gt;A first taste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**FREE
ctl-opt dftactgrp(*no) actgrp(*new);

dcl-s total packed(9:2) inz(0);
dcl-s i int(10);

for i = 1 to 3;
  total += i * 10.50;
endfor;

dsply ('Total: ' + %char(total));
return;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://learn.common.org/products/rpg-bootcamp-2" rel="noopener noreferrer"&gt;COMMON RPG Bootcamp&lt;/a&gt;: structured course on modern RPG&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rpgtutorial.k3s.com" rel="noopener noreferrer"&gt;K3S RPG tutorial&lt;/a&gt;: step-by-step RPG lessons&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rpgpgm.com" rel="noopener noreferrer"&gt;RPGPGM.com&lt;/a&gt;: hundreds of practical, short RPG articles by Simon Hutchinson&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/support/pages/coding-rpg-iv-beginners-tutorial" rel="noopener noreferrer"&gt;IBM RPG Cafe beginner tutorial&lt;/a&gt;: official starter tutorial&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 3: CL (~15h)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn:&lt;/strong&gt; Control Language: variables, &lt;code&gt;IF&lt;/code&gt;/&lt;code&gt;DO&lt;/code&gt;, &lt;code&gt;CALL&lt;/code&gt;, &lt;code&gt;CHGVAR&lt;/code&gt;, &lt;code&gt;MONMSG&lt;/code&gt;, &lt;code&gt;OVRDBF&lt;/code&gt;, &lt;code&gt;SBMJOB&lt;/code&gt;, &lt;code&gt;DSPJOBLOG&lt;/code&gt;, writing small CL programs that run RPG programs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;a href="https://rainierio.dev/learn/cl/cl-programming-essentials" rel="noopener noreferrer"&gt;CL programming essentials&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; CL is how jobs are chained and scheduled on IBM i. Every production batch cycle I have seen has CL in it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight common_lisp"&gt;&lt;code&gt;&lt;span class="nv"&gt;PGM&lt;/span&gt;
  &lt;span class="nv"&gt;DCL&lt;/span&gt; &lt;span class="nv"&gt;VAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;&amp;amp;LIB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;TYPE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;*CHAR&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;LEN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;VALUE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;'MYLIB&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nv"&gt;CALL&lt;/span&gt; &lt;span class="nv"&gt;PGM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;&amp;amp;LIB/HELLO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nv"&gt;MONMSG&lt;/span&gt; &lt;span class="nv"&gt;MSGID&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;CPF0000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;EXEC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;DO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;SNDPGMMSG&lt;/span&gt; &lt;span class="nv"&gt;MSG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;'HELLO&lt;/span&gt; &lt;span class="nv"&gt;failed,&lt;/span&gt; &lt;span class="nv"&gt;check&lt;/span&gt; &lt;span class="k"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;job&lt;/span&gt; &lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nv"&gt;ENDDO&lt;/span&gt;
&lt;span class="nv"&gt;ENDPGM&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/docs/en/i/7.5" rel="noopener noreferrer"&gt;IBM i documentation, CL topic&lt;/a&gt;: the official command reference (verify exact page for your release)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nicklitten.com" rel="noopener noreferrer"&gt;nicklitten.com&lt;/a&gt;: practical CL walk-throughs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://barrettotte.github.io/IBMi-Book" rel="noopener noreferrer"&gt;Barrett Otte, IBMi-Book&lt;/a&gt;: covers CL basics in context&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 4: Db2 for i SQL + SQLRPGLE (~30h)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn:&lt;/strong&gt; SQL &lt;code&gt;SELECT&lt;/code&gt;/&lt;code&gt;INSERT&lt;/code&gt;/&lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;CREATE TABLE&lt;/code&gt; (instead of DDS), joins, embedded SQL in RPG (SQLRPGLE), cursors, &lt;code&gt;SQLSTATE&lt;/code&gt;, &lt;code&gt;SELECT INTO&lt;/code&gt;, and IBM i Services (SQL views like &lt;code&gt;QSYS2.OBJECT_STATISTICS&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;a href="https://rainierio.dev/learn/db2-for-i-sql/sqlrpgle-embedded-sql-done-properly" rel="noopener noreferrer"&gt;Embedded SQL in RPGLE, done properly&lt;/a&gt;, &lt;a href="https://rainierio.dev/learn/db2-for-i-sql/dds-to-sql-ddl-migration" rel="noopener noreferrer"&gt;DDS to SQL DDL migration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; modern shops move data access to SQL. It is also the most transferable skill on this list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;mylib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;cust_id&lt;/span&gt;   &lt;span class="nb"&gt;INTEGER&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;cust_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**FREE
ctl-opt dftactgrp(*no);
dcl-s name varchar(50);
exec sql select cust_name into :name
         from mylib.customer where cust_id = 1;
if sqlcode = 0;
  dsply name;
endif;
return;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/docs/en/i/7.5" rel="noopener noreferrer"&gt;IBM Db2 for i documentation&lt;/a&gt;: the SQL reference (verify the current page)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rpgpgm.com" rel="noopener noreferrer"&gt;RPGPGM.com&lt;/a&gt;: many embedded SQL examples&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://barrettotte.github.io/IBMi-Book" rel="noopener noreferrer"&gt;Barrett Otte, IBMi-Book&lt;/a&gt;: SQL on IBM i chapter&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 5: ILE (~20h)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn:&lt;/strong&gt; Integrated Language Environment: modules, programs, service programs, binding directories, activation groups, prototypes, exported procedures, binder language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;a href="https://rainierio.dev/learn/ile/ile-modules-service-programs-binder" rel="noopener noreferrer"&gt;ILE modules, service programs and the binder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; real systems are made of service programs, not single giant programs. You will not be able to read a modern codebase without this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://learn.common.org/products/rpg-bootcamp-2" rel="noopener noreferrer"&gt;COMMON RPG Bootcamp&lt;/a&gt;: covers procedures and modular design&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/docs/en/i/7.5" rel="noopener noreferrer"&gt;IBM ILE documentation&lt;/a&gt;: official reference (verify the current page)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rpgpgm.com" rel="noopener noreferrer"&gt;RPGPGM.com&lt;/a&gt;: service program and binder articles&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 6: Modernization, APIs, open source (~30h)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn:&lt;/strong&gt; Git on IBM i, VS Code with Code for IBM i, &lt;code&gt;Bob&lt;/code&gt;/build tooling, &lt;code&gt;yum&lt;/code&gt; open source packages, Node.js/Python on IBM i, calling RPG from REST services, JSON in RPG (&lt;code&gt;DATA-INTO&lt;/code&gt;, &lt;code&gt;DATA-GEN&lt;/code&gt;), IBM i Services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;a href="https://rainierio.dev/learn/modernization/expose-rpg-as-rest-api-iws" rel="noopener noreferrer"&gt;Expose RPG as a REST API with IWS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; this is what makes a developer hireable in a modern team rather than a maintenance-only one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://codefori.github.io/docs" rel="noopener noreferrer"&gt;Code for IBM i docs&lt;/a&gt;: the VS Code extension for IBM i by Liam Allan&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/IBM/ibmi-oss-examples" rel="noopener noreferrer"&gt;IBM ibmi-oss-examples&lt;/a&gt;: GitHub examples for open source on IBM i&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.seidengroup.com/learn" rel="noopener noreferrer"&gt;Seiden Group learning resources&lt;/a&gt;: training material and modernization articles&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 7: Domain, core banking (ongoing)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn:&lt;/strong&gt; the business, not the syntax: accounts, ledgers, interest, end-of-day batch, ISO 20022 / SWIFT messages, reconciliation, audit trails, decimal precision, and why &lt;code&gt;packed&lt;/code&gt; is used for money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;a href="https://rainierio.dev/learn/core-banking/core-banking-on-ibm-i-what-it-does" rel="noopener noreferrer"&gt;Core banking on IBM i: what it does&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why:&lt;/strong&gt; at the banks I have worked in, the hardest part was understanding what the numbers mean. Language skill gets you in, domain knowledge makes you valuable. There is no single free course for this; read product documentation of any bank you can, and ask business analysts questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on PUB400
&lt;/h2&gt;

&lt;p&gt;Sign up for a free profile, open a source member and run the stage 2 program above. Each time you finish a stage, write one small program that uses it. Full setup is in the next article. Note PUB400 is for learning only; no commercial use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://learn.common.org/products/rpg-bootcamp-2" rel="noopener noreferrer"&gt;COMMON RPG Bootcamp&lt;/a&gt;: structured modern RPG course&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rpgtutorial.k3s.com" rel="noopener noreferrer"&gt;K3S RPG tutorial&lt;/a&gt;: free step-by-step lessons&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/support/pages/coding-rpg-iv-beginners-tutorial" rel="noopener noreferrer"&gt;IBM RPG Cafe beginner tutorial&lt;/a&gt;: IBM's own starter&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rpgpgm.com" rel="noopener noreferrer"&gt;RPGPGM.com&lt;/a&gt;: deep archive of practical examples&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nicklitten.com" rel="noopener noreferrer"&gt;nicklitten.com&lt;/a&gt;: community explainers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://barrettotte.github.io/IBMi-Book" rel="noopener noreferrer"&gt;IBMi-Book&lt;/a&gt;: free book by Barrett Otte&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://codefori.github.io/docs" rel="noopener noreferrer"&gt;Code for IBM i docs&lt;/a&gt;: your editor&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pub400.com" rel="noopener noreferrer"&gt;PUB400&lt;/a&gt;: free practice system&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://rainierio.dev/learn/start-here/as400-vs-iseries-vs-ibm-i" rel="noopener noreferrer"&gt;AS400 vs iSeries vs IBM i&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/start-here/as400-vs-iseries-vs-ibm-i" rel="noopener noreferrer"&gt;AS400 vs iSeries vs IBM i&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/start-here/free-ibm-i-lab-pub400-vscode" rel="noopener noreferrer"&gt;Free IBM i lab: PUB400 + VS Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rainierio.dev/learn/platform-concepts/ibm-i-mental-model-libraries-objects-jobs" rel="noopener noreferrer"&gt;Libraries, objects and jobs mental model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://rainierio.dev/learn/start-here/ibm-i-learning-roadmap" rel="noopener noreferrer"&gt;rainierio.dev&lt;/a&gt;. The full Learn IBM i track, with an Indonesian version, is at &lt;a href="https://rainierio.dev/learn" rel="noopener noreferrer"&gt;rainierio.dev/learn&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ibmi</category>
      <category>as400</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
