メニューボタン
IBM i お役立ち情報2026.03.25

IBM i 基礎理解からRPG開発までの学習ステップ
- 第3回:DBについて( DDS利用でファイル作成方法、DBの利用方法~更新・参照について~ ) -

はじめに

松田:「前回は、ライブラリーやオブジェクト、OUTQなどIBM i 環境を利用するうえで切っても切り離せない、まさに基本のキを学びましたね。」

渡邊:「そうですね。今回は、さらにライブラリーやオブジェクトの中身に踏み込んで、DBファイルとその作り方を学んでいくというわけですね。」

松田:「そうです。前回、こちらの環境イメージ図を使って説明しましたが、今回はイメージ図の赤枠部分が対象です。」

渡邊:「DBファイルが作れるようになると、IBM i の環境にも慣れてきたと言えそうですね。オープン系技術者の立場からどう見えるのか興味があります。」

松田:「はい、今回の内容は実務を見据えて使う方にぜひ読んでほしいですね。」

物理ファイルと論理ファイル

松田:「IBM i のデータベースはDb2 for i と呼ばれます。Db2はリレーショナルデータベースとなります。リレーショナルデータベースはご存じですよね。」

渡邊:「はい。オープン系DBで広く利用されているMicrosoft SQL Server、Oracle Database、PostgreSQLもリレーショナルデータベースですね。リレーショナルデータベースは、データ項目間の関係を2次元のテーブルに表すことができて、複数のテーブルを組み合わせてデータを引き出せますし、情報に重複や欠落が無い、つまりは一貫性があるのも特徴です。以下はイメージ図です。」

渡邊:「また、以下のイメージ図の通り、レコードはテーブル上の行、カラムとはテーブル上の列を表しています。」

松田:「その通りです。IBM i のネイティブ・アクセスという旧来の方式ではDBを物理ファイル、論理ファイルと呼んでいます。」

渡邊:「オープン系DBでは聞きなれない呼び方ですね。オープン系で言うとテーブルやインデックスなのかな。」

松田:「IBM i のDBもDb2の一員なので、SQLインターフェースからもアクセスできます。SQL用語で言うと物理ファイルは、表(テーブル)、論理ファイルは、索引(インデックス)とビューになります。」

渡邊:「なるほど、SQL用語でIBM i DBを考えればオープン系技術者には解りやすいですね。」

松田:「ちなみにライブラリーはスキーマになります。IBM i のDBも当然SQLでアクセス可能なのですが、今回は、IBM i ユーザーの間で広く使われている『物理ファイル』『論理ファイル』という呼び名で説明を進めてまいります。」

渡邊:「オープン系からすると、用語が違うとなにを意味しているのか解らなくなるのでお互いの用語の理解が重要ですね。IBM i の世界で一般的な表現とSQL用語とを整理すると以下になりますね。」

 ポイント 
  • 物理ファイル|表(テーブル)
    実際のデータを記憶するためのファイル。
  • 論理ファイル|索引(インデックス)、ビュー
    単独では存在せず必ず物理ファイルに関連づけられ、 物理ファイルのデータの見方を定義するファイル。 実レコードは持たない。複数の物理ファイルを関連づけることも可能。
  • ライブラリ|スキーマ
    物理ファイル(表)や論理ファイル(索引、ビュー)を格納する、IBM iの場合はプログラムなどのオブジェクトも格納できる

松田:「ちなみに、物理ファイル、論理ファイルはOSの基本機能として提供されています。」

渡邊:「OSの基本機能なのですね!WindowsやLinuxではミドルウェアの位置づけになっているので、すごいですね。」

松田:「そうなんです。OSの基本機能としてのメリットは、DB 管理が OS 管理の中に統合されているので管理のためのワークロードが削減される点等が挙げられます。」

松田:「また、IBM i ではどちらのファイルもレコード様式を定義して作成します。レコード様式は、レコードがどのようなフィールドから構成されているか、各フィールドの文字のタイプや桁数を定義します。また、レコードの取り出し順序を決めるフィールドをキーフィールドと呼びますが、キーフィールドも定義します。」

渡邊:「また、物理ファイルと論理ファイルは作成すべき順が決まっているのですよね。」

松田:「そうです。論理ファイルは物理ファイルの見方をまとめているので、物理ファイルが存在しないとそもそも作成できません。」

渡邊:「レコード様式はどこに記載して作るのでしょうか?」

松田:「データ記述仕様書(DDS)に記載します。DDSはIBM i が扱うデータのいわゆるメタ情報(データの属性をまとめた情報)とでも言うべきもので、物理ファイルや論理ファイルのレコード構成を定義するためにも使用され、SQL 用語で言うところの DDL に相当する専用ファイルです。また、DDSは、画面ファイルや帳票ファイル作成時にも使用します。DDSはソースファイルと呼ばれる保存するための専用ファイルに登録します。」

渡邊:「DDSがソースファイルではないのですね。」

松田:「はい。IBM i では、DDSを保存するためのファイルをソースファイルと呼び、DDSはソースメンバーと呼びます。IBM i におけるファイルとは、複数の情報を束ねたものです。例えば、Windowsだと個別のファイルを用意してから ZIP ファイルに束ねますよね。IBM i ではその逆で、ファイル(ZIP ファイル相当)を用意してからメンバー(個別のファイル相当)を作ると考えるとわかりやすいかもしれません。」

物理ファイルと論理ファイルの作成

渡邊:「では、早速物理ファイルを作成したいと思います。」

松田:「ここからの内容は初心者の方には難易度が高いかと思います。まずは、細かい情報は気にせず書かれているコマンドの通りに画面を見ながら進めることをお勧めします。物理ファイル・論理ファイル共通のソースファイルを作る部分は、下記コマンドで作成できますね。ソースファイルの名称は任意で作成できますが、ここでは分かりやすくQDDSSRCとしています。」

CRTSRCPF FILE(SAMPLE1/QDDSSRC) RCDLEN(92) IGCDTA(*YES) TEXT('サンプル用DDSソース')

渡邊:「物理ファイルや論理ファイル作成前にはソースファイルが必須なのですね。ここからどのように各ファイルを作成するのかみていきましょう。」

松田:「作成したQDDSSRCにて【F6:作成】にてメンバー作成を行うことが可能です。ここでは、ソース・メンバー名、ソース仕様タイプ、テキストを任意で設定しましょう。」

渡邊:「ここからは、実際のカラム情報を入力していくのですね。」

松田:「そうです。ファイルのカラムは下記の通り設定します。」

※ソースファイル作成の詳細は、以下をご覧ください。
なお、SEUコマンドはユーザー権限に依存します。ご自身のユーザーでコマンドが実行不可の場合は、管理者に問い合わせ、コマンドの実行権限付与を依頼してください。
SEU操作手順.pdf

<会社マスタファイル>
カラム:会社番号、会社名、会社名カナ、売上高、従業員数、仕入額、平均給与額

<会社マスタファイル (BDCMPF) 説明表>

 <物理ファイルメンバー作成時に出てくる専門用語について> 
  • レコード様式:
    DBのレコードを構成するデータ項目およびそれらの並び順、文字か数字かの属性、桁数などの情報をまとめたもの。
  • キーフィールド名:
    DBのレコード検索順序を決めるために使用されるフィールド名。
  • 画像2行目のUNIQUE:キーフィールドで指定したフィールドに重複する値を持つレコードがあってはならないことを指定するために入力します。
  • 画像3行目のR:レコード様式名を表す際に入力します。
  • 画像3行目のTEXT:レコードまたはフィールドの説明を記載します。
  • COLHDG:フィールドのカラム見出しを付ける際に入力します。
  • 画像16行目のK:キーフィールド名を表す際に入力します。

渡邊:「作成完了しました!ファイル作成についてはこれで以上ですかね?」

松田:「実は、物理ファイル、論理ファイルはプログラム同様でコンパイルが必要なんです。コンパイルも忘れずに実行しましょう。」

渡邊:「コンパイル必須でしたね。コマンドは下記ですね。」

CRTPF FILE(SAMPLE1/BDCMPF)

松田:「作成できたメンバーは【BDCMPF】です。環境イメージ図でいうと、QDDSSRCの中に入っていますね。ちなみに、コンパイルも完了しているので、ライブラリーSAMPLE1の中にオブジェクトとしても存在しています。」

物理ファイルへのレコード登録・挿入・削除

松田:「物理ファイルへのレコード登録・更新・削除はすべてSQL文で実施したり、IBM i の中のコマンドで実施可能です。今回は、DFUメニューの5番【一時プログラムを使用したデータの更新】を利用してデータ更新しましょう。」

~DFU機能について、すでにメーカーのサポートは終了しており、最新IBM i バージョン 7.6向けにも新規での出荷はされません。ただし、DFUメニューの1と5は利用可能な状況です。DFUの代わりにSQLスクリプトを使用する方法もありますが、今回はデータ参照方法のQUERYをご紹介したく、5250画面でデータ更新を行うDFUを扱う内容をご紹介しております。~

渡邊:「登録の際はどのようなオペレーションが必要でしょうか?」

松田:「まずは、コマンド『STRDFU』を実行します。すると、DFUのメニューが表示されます。」

渡邊:「メニュー内の5番:【一時プログラムを使用したデータの更新】を選択するのですね。」

松田:「そうです。5番を選択し、ライブラリー、データ・ファイルに必要な値を入れます。今回はライブラリーに『SAMPLE1』、データ・ファイルに『BDCMPF』、メンバー名に『BDCMPF』を入れます。」

渡邊:「実行すると、何やら見慣れない画面が出ましたね。」

松田:「この画面こそがデータの更新・削除・編集を行う画面です。それぞれのカラム情報が表示されていますので、必要な値を入れていきましょう!桁数や小数点以下の桁数など各カラムによって異なるので、最初に作成したQDDSSRC内のメンバー【BDCMPF】の桁数も一緒に確認するのがポイントです。」

<再掲:会社マスタファイル(BDCMPF)>

<必要なカラムに値を入力する>

松田:「必要な値を入力する際には画面右側が【入力モード】になっている必要があります。【変更モード】の場合は、『F10』キーで【入力モード】に切替えましょう。」

<入力完了後、入力データが入ったことを確認>

渡邊:「更新できました!さらに4件ほど追加します。」

松田:「続けて更新する際も同じ要領で進めます。」

渡邊:「はい、全部で5件のデータ入力が完了しました。」

松田:「順調ですね。入力時に画面右側のモードが【入力モード】になっていることを確認したかと思いますが、更新や削除も同様にそれぞれのモードになっているかを確認して操作します。モードの変換は画面下部にあるファンクションキーで行います。挿入は『F9』、削除は『F23』です。」

オブジェクト記述とファイル記述について(更新前後の比較)

松田:「ここまでDBファイルを作成し、さらに実際のデータを入力・更新してきましたが、システムの中にはたくさんのファイルやオブジェクトがあるのでこのファイルはいつ作られたのか、サイズは?、データ件数は?などオブジェクトやファイルの様々な情報を確認したいこともありますよね。こういったシチュエーションで出てくるコマンドが何かわかりますか?」

渡邊:「たしかにWindows上のファイルでも、右クリックしてプロパティから作成情報などの情報をよく見ることがありますね。そういった情報を調べるコマンドは『DSPOBJD』でしょうか。」

松田:「正解です!オブジェクト単位での検索として『DSPOBJD』があります。さらに、ファイル単位でいうとコマンド『DSPFD』もあります。」

渡邊:「実際にそれぞれのコマンドで検索してみます。」

<DSPOBJD>
・コマンド
DSPOBJD OBJ(SAMPLE1/BDCMPF) OBJTYPE(*FILE)

・実行後のオブジェクト選択画面(同名のタイプ別オブジェクトがあるとここで一覧表示されます。)

松田:「『DSPOBJD』を実行すると、該当オブジェクトの名前や変更日、タイプ、サイズなどが確認できます。」

・ライブラリー「SAMPLE1」のファイル「BDCMPF」の属性情報 (オプションで5番:【全属性の表示】を選択)

<DSPFD>
・コマンド
DSPFD FILE(SAMPLE1/BDCMPF)

松田:「DSPFDは、主にDBファイル(物理/論理ファイル)や装置ファイルを対象として、ファイルの構造や内部属性を表示・確認することが可能です。例えば、レコード長、キーフィールド、アクセスパスなどが確認できます。」

渡邊:「レコード長ということは、実データの件数に合わせて表示内容が変わるということですね。」

松田:「その通りです!1件の時はこのような表示です。」

渡邊:「5件になると【現在のレコード数】が異なりますね。」

渡邊:「つまり、DSPOBJDではそのオブジェクトの概要を把握でき、DSPFDでは主にファイルに対して詳細情報をチェックすることができるということですね。」

松田:「はい、その通りです。」

物理ファイルと論理ファイルの参照

渡邊:「作った物理ファイルや論理ファイルを参照するためにはどうしたらよいでしょうか?」

松田:「QUERYという照会プログラムを使用します。QUERY定義を作り、実行することで報告書を作成してくれます。また、とりあえず物理ファイルと論理ファイル(以下DBと省略記載)をみたい場合には、QUERY定義を作らずに、RUNQRYコマンドで参照することもできます。」

渡邊:「QUERY定義を作るということはコーディングするのですか?大変そうです。報告書とはどのようなものですか?」

松田:「QUERY定義については、コーデイング不要で、対話形式で作成できます。物理ファイルの結合(JOIN)や計算もできますよ。また、報告書には以下の2つがあります。」

明細リスト サマリーリスト
DBの明細レコードの印刷 明細レコードを特定の単位で分類して、それぞれの単位での合計を印刷

渡邊:「コーディング不要なのですね。対話形式ということは、SQLの知識が無くてもできそうですね。報告書の種類は理解できました。」

松田:「はい。QUERYを使ってゆく上ではSQLの知識は不要です。では、QUERY定義を作らずにRUNQRYコマンドを使う方法から、試してみましょう。コマンド入力でRUNQRYと入力してF4をお願いします。」

渡邊:「入力しました。QUERYとQUERYファイルの項目がありますね。」

松田:「はい。QUERYにはプログラム定義を入力するのですが、今回は作っていないので、何も入力せず、QUERYファイルに物理ファイルか論理ファイル名、ライブラリーに各ファイルがあるライブラリーを指定して実行します。ここでは、先ほど作成した、物理ファイル『BDCMPF』、ライブラリー『SAMPLE1』を指定して実行しましょう。」

渡邊:「実行しました。物理ファイルが参照できました。」

松田:「QUERY定義を作るにはSTRQRYコマンドでQUERYを起動して作ります。作った定義はSTRQRY、もしくはRUNQRYで実行できますよ、詳細な手順はPDFファイルを参照してください。」

QUERY定義作成と実行.pdf

次回予告

渡邊:「今回は、物理ファイルの作成とデータ更新、さらに、QUERYでデータ参照を行うところまで確認できました。これで私も様々なファイルを自分で作成できそうです。」

松田:「そうですね!ここまできたら、実際に作成したファイルを使ってさらにステップアップしてみませんか?」

渡邊:「ぜひやりましょう!!」

松田:「では、次回は早速プログラムのお話をしましょう。まずは、プログラムでどのように演算を行うか学び、最終的には今回作った物理ファイルの内容をもとに計算できるところをゴールとしましょう。また、RPGLEには独特のルールもあるので一緒に学んでいきましょう!!」

渡邊:「次回はいよいよプログラムなのですね!楽しみです。」


渡邊 隆
ベル・データ株式会社 アプリケーションマネージメントサービス本部 AMSデジタルイノベーション部

ネットワーク、オープン、セキュリティ、DX関連のプリセールス、構築、サポートを経て、現在はAMSデジタルイノベーション部に所属。工場DXソリューションを担当しながら、初挑戦のIBM i に格闘中。休日は、クラッシックピアノの練習や仲間との弾き合い会を楽しんでいます。

松田 三奈
ベル・データ株式会社 アプリケーションマネージメントサービス本部 AMSデジタルイノベーション部

新卒よりインフラエンジニアとしてPowerサーバーのリプレイスに従事し、現在はAMSデジタルイノベーション部に所属。休日は、カフェ巡りや旅行など天候に関わらず外に出てアクティブに活動することが好きです。

あわせて読みたい記事

PAGE TOP