はじめに
この記事は若手技術者コミュニティRiSINGのCグループHチームの成果物の一つです。
こちらでは、IBMiのオブジェクトについて取り上げます。
この記事はIBM i初心者向けに、オブジェクトの基本をわかりやすく解説することを目的としています。
私自身も新人・若手ですが、すでにたくさんの方がまとめてくださっているウェブサイトを参考に、私なりにオブジェクトについてまとめていきたいと思います。
よろしくお願いします!
目次
オブジェクトとは
プログラムには、オブジェクトというものがあります。
オブジェクトは、簡単に説明するなら「もの」のことで、プログラム自体も「もの」であり、プログラムを構成するデータや操作も含まれます。
IBMiでは、すべてのリソース(プログラム、ファイル、データなど)はオブジェクトとして管理されます。
Windowsなどのファイルとは異なり、IBM iのオブジェクトは種類ごとに厳密に分類され、システムがそれぞれの役割を理解しています。
Windowsのエクスプローラーでいえば、ファイルとは一つ一つの音楽や写真、文書などの様々なデータを指し、それらをまとめたものをフォルダと言います。
例えば、test.txtというファイルであれば、テキストファイルですし、test.xlsxというファイルであればExcelのファイルというように判別されます。
プログラムはすべてファイルの集まりで、拡張子を判別して、関連付けられたプログラムがどのように開かれるか判別します。
Windowsの場合、拡張子を変えればファイルの形式を変えることができますが、IBMiは作成した後にオブジェクトの形式を変更することはできません。
対して、IBMiではオブジェクトはシステムの中に存在して(スペースを占めて)おり、オペレーティングシステムはこれに対して操作を実行します。
オブジェクトはライブラリの中に格納され、一意の名前を持ちます。
*i1
ライブラリ内には同じ名前のオブジェクトを作成することはできませんが、ライブラリが異なれば共存可能です。
IBM iのオブジェクト指向
IBM iは、一般的なオブジェクト指向プログラミングとは異なりますが、システム全体が「オブジェクトベース」で設計されています。
すべてのリソース(動かすために必要な要素)がオブジェクトであるため、統一された管理が可能です。
オブジェクトにはアクセス制御(権限)や属性があり、セキュリティや運用管理がしやすいという利点があります。
オブジェクトの種類ごとに、システムが自動的に適切な処理を行います。
それは、各オブジェクトがオブジェクトタイプごとに用意されているコマンドを通して操作されるからです。
例えばCALLコマンドを使えば、プログラムを実行できますが、CALLで指定したプログラム名が存在しなければ実行されません。
CALL KEISAN
というコマンドを打ったとしたときに、「KEISAN」というプログラムが存在しなければ実行されません。
オブジェクトタイプの例
オブジェクトにはいくつかの種類があります。
データ処理システムの多くに共通しているオブジェクト
- FILE
データファイル、ソースファイルなど - PGM
プログラムオブジェクト(RPG、CLなど) - CMD
コマンドオブジェクト - LIB
ライブラリ - 待ち行列
- モジュール
- サービス・プログラム
他のシステムでは使用されないタイプ
- ユーザー・プロファイル
- ジョブ記述
- サブシステム記述
- 装置記述
CLプログラム(タイプ:CLP)、RPGプログラム(タイプ:RPG)、物理ファイル(PF)(タイプ:*FILE)や論理ファイル(LF)(タイプ:*FILE)、JOBなどがオブジェクトに分類されます。
オブジェクトの整理と管理
オブジェクトは、オブジェクトの名前・タイプ・格納場所(ライブラリ)・属性などによって構成されます。
IBM iでは、オブジェクトは以下のように整理されます。
| 名前 | 役割 | 例 |
|---|---|---|
| ライブラリ | 関連するオブジェクトをグループ化して分けることができる | 利用者ごとのライブラリ、業務ごとのライブラリ |
| オブジェクト | システム上で管理される個々の要素、PGMやFILE | 商品マスター |
| メンバー | オブジェクト内のデータ本体,具体的なデータ | 商品マスターの中の個々の商品情報 |
オブジェクトを識別するのに使用するのは、オブジェクト名とオブジェクトタイプです。
オブジェクト名はオブジェクトを作成するユーザーによって割り当てられます。
オブジェクトタイプは、オブジェクトの作成に使用されるコマンドによって決まります。
例 CRTPF、CRTLF、CRTLIBなど
CRTPFの場合、ソースファイルに入っているDDSから物理ファイルが作成され、CRTLFの場合、同じように論理ファイルが作成できます。
また、CRTLIBの場合、ライブラリを作成することができます。
オブジェクトはほかのオブジェクトから独立して存在しますが、オブジェクトによっては、ほかのオブジェクトに先だって作成しなければならないものもあります。
物理ファイルを作成した後ではないと論理ファイルが作れません。
そして、論理ファイルを削除した後でなければ、物理ファイルを削除できません。
物理ファイル、論理ファイルについてはこちらの記事で説明されています⇒ 【IBM i】~図解でわかる~ ファイルとソースの基礎
オブジェクトとライブラリの関係
ライブラリは、オブジェクトを格納するための「フォルダ」のような役割を果たします。
実際は、関連するオブジェクトをグループ化し、オブジェクトの使用時に名前で見つけられるようにするために使用するオブジェクトです。
ライブラリはオブジェクトそのものです(タイプ:*LIB)。
ライブラリ内には、同じ名前のオブジェクトは1つしか存在できません。
しかし同じ名前のオブジェクト(例「SHAIN(社員マスター)」)でもライブラリが異なれば作成することが可能です。
例えば、上の図の場合、USR1LIBとUSR2LIBというライブラリの中に「SHAIN」というオブジェクトがあります。
どちらも同じ「SHAIN」という名前の社員マスターですが、ライブラリが違うため重複せずに別のものとして判別されます。
USR1LIBとUSR2LIBはライブラリが違うため、一つのASの中に作成することができますが、USR1LIBにSHAINという同じ名前のオブジェクトは2つ以上作成できません。
ライブラリについてはこちらの記事で説明されています⇒【IBM i】ライブラリーについて
プログラムオブジェクトについて
ここからはプログラムオブジェクトについてまとめていきたいと思います。
STRSEUなどでプログラムのソースを記述し、コンパイルをするとプログラムソースは実行可能なプログラムの形式に変換されます。
CRTRPGPGM、CRTCLPGMをするとそれぞれRPGプログラム、CLプログラムが作成されます。
作成されたプログラムをCALL XXX(プログラム名)とすると実行できるようになります。
IBMiに必要な要素はすべてオブジェクトなので、それぞれRPG、CLPというオブジェクトタイプのオブジェクトになります。
RPGプログラムについて
RPGとは(Report Program Generator)のことです。
画面ファイル(DSPF)、データベース(物理ファイル(PF)、論理ファイル(LF))、プリントファイル(PRTF)などを参照してソースを作成します。
RPGプログラムについてはこの記事で説明しています⇒プログラム構造
CLについて
CLとは制御言語(control language)のことです。
CLコマンドはIBMiオブジェクト上で操作を実行します。
ほとんどのオブジェクトはCLコマンドが機能します。
動詞+動作の対象(対象となるオブジェクト名)を打つと機能します。
動詞の例
- CRT 作成
- DLT 削除
- CHG 変更
- DSP 表示
- WRK 処理
- CALL プログラム呼び出し
CLコマンドを画面下のコマンド入力画面に個々のコマンドとして入力すれば、それぞれ個別に処理されます。
また、CLコマンドをCLプログラムのソースファイルに入力して使用すれば、コマンドのグループを一貫して処理することができます。
CLプログラムはCLコマンドをグループ化してプログラムにしたものです。
コンパイルをすればプログラムオブジェクトとして取り扱えるので、RPGなどと同様の実行環境で使用できます。
例えば、一時的にデータベースファイルを作成したり、連続してRPGプログラムを呼び出したり、変数を変更したり、コピーしたり、保存したりすることができます。
CLコマンドを使えば単独の処理も、複数のオブジェクトを処理することも可能になります。
複数の処理をするときは、CLプログラムにまとめれば一つ一つのコマンドを単独で実行するよりも便利になります。
おわりに
今回は、IBMiのオブジェクト、またそれに関連する部分についてまとめました。
この記事を作成するにあたって、私自身も知らないこと、あいまいな部分があったと気づきました。
これからも勉強していきたいと思います。
良ければCグループの他の方の記事も見ていってください!
ご覧いただきありがとうございました!
ーーーー
当記事の著作権はIBMに帰属します。詳細はこちらを参照ください。
参考サイト
- 02 IBM iを知る6つの基本用語 https://www.imagazine.co.jp/imagazine-7151/ (最終閲覧日:2025年9月28日)
- 04 IBM i の基礎[CL設計・開発] ~一連の手順をバッチ処理化したCLプログラムで、日常運用を効率化 |新・IBM i入門ガイド[開発編]https://www.imagazine.co.jp/04-cl-development-of-ibm-i-nyumon-guide-kaihatsu/ (最終閲覧日:2025年9月28日)
- AS/400(iSeries、System i、Power Systems)のコマンド集 https://www.a-sol.co.jp/service/AS400_Command.html (最終閲覧日:2025年9月28日)
- IBM i オブジェクト https://www.ibm.com/docs/ja/i/7.6.0?topic=concepts-i-objects (最終閲覧日:2025年9月28日)
- IT用語辞典 e-words 「オブジェクト」 https://e-words.jp/w/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88.html
- 外部オブジェクト・タイプhttps://www.ibm.com/docs/ja/i/7.6.0?topic=objects-external-object-types (最終閲覧日:2025年9月28日)
- セキュリティ対策ツールサポート情報 ファイルとフォルダって何ですか https://f-security.jp/v6/support/faq2/300014.html (最終閲覧日:2025年9月28日)
- ソース物理ファイルの作成 (CRTSRCPF) https://www.ibm.com/docs/ja/i/7.6.0?topic=ssw_ibm_i_76/cl/crtsrcpf.html (最終閲覧日:2025年9月28日)
- プログラム開発管理機能(PDM)https://iroiro400.sakura.ne.jp/pdm.htm (最終閲覧日:2025年9月28日)
- ライブラリー・オブジェクト https://www.ibm.com/docs/ja/i/7.6.0?topic=objects-library (最終閲覧日:2025年9月28日)
*i1 Copilotにより作成

