OL20G: Control Language Programming Workshop for IBM i

IBM Systems Training

on February 14, 2022


4 min read

––– views

Table of Contents

  1. Short Summary
  2. Duration
  3. Content Description
  4. Objectives
  5. Agenda
  6. Audience
  7. Skill Level
  8. Labs?
  9. Keywords
  10. Prerequisites
  11. Enrollment
  12. Errata
  13. Follow-on Courses

Short Summary

This course teaches how to write and work with CL programs. CL is abbreviation for control language.

Duration in Hours ⌚


Content Description

Learn to write easy to use and efficient control language (CL) programs which may be used to perform a variety of system and application control functions. You are taught to write basic and intermediate level, interactive, and batch CL programs, user commands, and CL programs that function as user tools (programs that use the output of display commands as input).

You will learn to write Control Language (CL) programs which may be used to perform a variety of system and application control functions. You will be taught to write basic and intermediate level interactive and batch CL programs as well as programs that function as user tools (programs that use the output of display commands as input).


  • Create CL programs that incorporate the full range of language operations and functions:
    • Arithmetic, string, and boolean expressions
    • Relational operations
    • Built-in functions
    • File handling
    • Message handling
    • Retrieving IBM i information
    • Program interaction and parameter passing
  • Use the interactive source debugging facilities of STRDBG
  • Describe how to create and call Integrated Language Environment (ILE) modules, programs, and service programs
  • Create user-defined commands with and without parameters
  • Create a control language program that processes a database file
  • Create and invoke a program that is activated periodically and executes asynchronously from other jobs
  • State the purpose of the parameters on the CRTBNDCL command and each section of the control language compiler listing


CL programming concepts

  • Lab - Set up your environment (required)

Basic CL programming

  • Lab - Write a basic CL program (required)
  • Lab - Initial program (required)
  • Lab - Menu-like program (required)
  • Lab - Call/Transfer control (required)
  • Lab - Calculator (required)

Program creation and debugging

  • Lab - Debugging (required)

Intermediate CL programming

  • Lab - Data area retrieval (recommended)
  • Lab - External attributes CVAT, SST (recommended)

CL message programming (topic 1)

  • Lab - Basic message handling (required)
  • Lab - Send user message command (required)

CL message programming (topic 2)

  • Lab - Monitor message (required)
  • Lab - Message programming (required)
  • Lab - Inquiry messages (recommended)

User-written tools

  • Lab - User-written tool (optional)

Batch jobs

  • Lab - SBMJOB and LDA (recommended)
  • Lab - Data queues (recommended)


  • Lab - Commands (recommended)


This intermediate course is for application programmers, system programmers, and others who have a need to write control language programs.

Skill Level


Labs? 💻



CL programming concepts;Basic CL programming;OL20G; OL20; MBJ00


You should be able to:

  • Write simple programs in another programming language
  • Perform basic IBM i operations
  • Code the commands necessary to send inquiry and information messages
  • Use data description specifications (DDS) and the Rational Development Studio (formerly known as Websphere Development Studio, WDS) tools (Programming Development Manager (PDM) and source entry utility (SEU)) to create physical, logical, and display files
  • Use the WDS tools to enter CL source statements and create CL programs
  • Describe basic work management
  • Create a library, output queue, and a job description

These prerequisites can be met through successful completion of the following courses:

  • Introduction to IBM i for New Users (OL98G)
  • IBM i Technical Introduction (OL4AG)




None specified.

Follow-on Courses


View on GitHubView on IBM website

Designed and developed by Upendra Rajan