Sunday, 2 August 2026

What Is a Subsystem in AS400 (IBM i)?

 If you've spent any time on an AS400 — or IBM i, as it's officially called today — you've probably run the command WRKSBS or WRKACTJOB and seen a bunch of names like QINTER, QBATCH, and QCTL sitting there. Those are subsystems. And if you're new to the platform, that word alone can be confusing, because "subsystem" doesn't map cleanly onto anything in Windows or Linux. So let's break down exactly what a subsystem is, why IBM designed things this way, and why it still matters today.

The simple definition

A subsystem is an operating environment within IBM i where jobs run. Think of it as a container — a dedicated space with its own memory pool, its own set of resources, and its own rules about what kind of work is allowed to run inside it.

Here's the important part: IBM i doesn't run all your jobs in one big shared space. Instead, it divides work into categories, and each category gets its own subsystem. Interactive jobs — the ones where a user is sitting at a 5250 screen typing commands — run in one subsystem. Batch jobs, the background processes that don't need a user watching them, run in another. Communications jobs, like the ones handling TCP/IP or FTP connections, often run in yet another.

Why does this separation exist?

This goes back to how IBM designed the System/38 and later the AS/400 in the first place. The idea was resource control and stability. If interactive users and batch jobs shared the exact same pool of memory and processing priority, a heavy batch job could easily choke out everyone typing on their terminals, and the whole system would feel sluggish for everyone.

By splitting work into subsystems, the system administrator can control exactly how much memory, how many active jobs, and what priority each type of work gets. Interactive users get responsiveness. Batch jobs get the resources they need without stepping on anyone's toes. And if one subsystem has a problem, it typically doesn't take down the entire machine.

The common subsystems you'll see

On a typical IBM i system, you'll usually find:

QCTL – the controlling subsystem. This is usually the first one that starts up, and it manages the console and overall system control.

QINTER – handles interactive jobs, meaning the sessions where users are actively working on 5250 screens.

QBATCH – handles batch jobs, the background processing work like report generation, data transfers, or scheduled jobs.

QCMN or QSYSWRK – handles communications-related work, like TCP/IP jobs, sockets, and various system tasks depending on the OS version.

QSPL – manages spooling, which is how the system handles print output and spooled files.

Many shops also create their own custom subsystems for specific applications, so that a particular piece of software gets its own isolated resource pool, separate from everything else running on the box.

How subsystems relate to jobs and job queues

Here's where it clicks together. When a batch job is submitted, it doesn't go straight into a subsystem. It first lands in a job queue. The subsystem is configured to look at specific job queues and pull work from them, based on rules the administrator has set up — like how many jobs can run at once, and what priority they get.

So the flow looks like this: a job gets submitted, it sits in a job queue, and the subsystem monitoring that job queue picks it up and runs it, provided there's room in the subsystem's active job pool.

This is also why you'll sometimes see a batch job sitting in a queue for a while, not doing anything. It's not stuck — it's just waiting for the subsystem to have available capacity to actually execute it.

Why this still matters in 2026

Even though IBM i has evolved a lot — with support for Java, PHP, open-source tooling, and integration with Linux partitions — the subsystem architecture is still the backbone of how work gets managed on the platform. If you're troubleshooting performance issues, tracking down why a job won't start, or trying to isolate a runaway application, understanding subsystems is often the first place to look.

Commands like WRKSBS, WRKSBSJOB, and WRKACTJOB are your window into this world, letting you see what's running, where, and how busy each subsystem's active job pool actually is.

Once you understand subsystems, a lot of AS400 job management suddenly makes a lot more sense — because almost everything the system does happens inside one.

Saturday, 25 July 2026

What is a Job in AS400 (IBM i)? Jobs, Job Queues & Job Logs Explained

If you're new to AS400, or IBM i, you may have heard terms like jobs, batch jobs, job queues, subsystems, and job logs. But what exactly is a job, and how does IBM i actually process the work we perform?

We'll understand the basics of IBM i jobs and look at interactive jobs, batch jobs, job queues, subsystems, and job logs. We'll also take a look at commands like WRKACTJOB, WRKJOB, and SBMJOB.

What Is a Job in IBM i?

The simplest way to understand a job is:

A job is a unit of work that IBM i manages and processes.

When you log in to IBM i using a 5250 terminal, your interactive session is associated with a job. When you run commands or programs, that work is performed in the context of your job.

Similarly, when you submit a batch process, IBM i creates a job to handle that work.

A job has identifying information such as a job number, user name, and job name. For example:

123456/USER1/MYJOB

This information is useful when troubleshooting because it allows us to identify and investigate a specific job.

Interactive Jobs

An interactive job is generally associated with a user directly interacting with the IBM i system.

For example, when you connect to IBM i using a 5250 emulator and enter commands or work with an application, you are working through an interactive job.

Batch Jobs

A batch job performs work without requiring continuous interaction from a user.

Batch jobs are commonly used for tasks such as:

  • Nightly processing
  • Generating reports
  • Billing
  • Database updates
  • Large-scale data processing

The SBMJOB command can be used to submit work as a batch job.

For example:

SBMJOB CMD(CALL PGM(MYLIB/MYPGM))

The exact command depends on the program or task you want to run, but the basic idea is that the work is submitted for batch processing.

What Is a Job Queue?

When a batch job is submitted, it may not start running immediately.

The job may first be placed on a job queue, where it waits until it can be processed.

A simple way to think about this is:

Submit Job → Job Queue → Job Processing

So, if someone says, "My batch job isn't running," one of the first things to determine is whether the job is actually running or whether it is waiting on a job queue.

What Is a Subsystem?

A subsystem provides an environment where jobs are processed and managed.

IBM i systems can have subsystems for different types of workloads, including interactive and batch processing.

You may have heard of subsystems such as:

QINTER

and

QBATCH.

The exact configuration varies between IBM i systems, but the important thing to remember is that jobs are processed within subsystems.

WRKACTJOB

One of the most useful commands for viewing jobs is:

WRKACTJOB

This stands for Work with Active Jobs.

It displays information about active jobs on the system, including details such as the job name, user, job number, job type, status, and subsystem.

You may see interactive jobs, batch jobs, and various system jobs.

WRKACTJOB is particularly useful when investigating what's currently happening on an IBM i system.

WRKJOB

Another useful command is:

WRKJOB

This stands for Work with Job.

It allows you to investigate a particular job and access information related to it.

Depending on the available options, you can examine details such as the job status, job log, call stack, and other job-related information.

What Is a Job Log?

The job log is one of the most important tools for troubleshooting IBM i applications.

During the life of a job, IBM i and the applications running within that job can generate messages.

These messages may indicate problems such as:

  • An object that doesn't exist
  • A file that cannot be found
  • A decimal data error
  • An authority problem
  • A record lock
  • Other application or system errors

If a program fails, one of the first things you should do is identify the relevant job and check its job log.

The job log can often provide the information needed to understand what actually happened.

The Big Picture

A simple way to understand IBM i job processing is:

User → Job → Job Queue → Subsystem → Processing → Job Log

An interactive session runs through an interactive job. A batch process can be submitted as a batch job, which may wait on a job queue before being processed by a subsystem.

If something goes wrong, the job and its job log can provide valuable information for troubleshooting.