2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Db2の検索機能とSQLの比較

Last updated at Posted at 2025-10-16

READ/CHAIN 等 IBM i 固有機能と SQL の違いまとめ

当記事は、「IBM i RiSING」2025年Aチームの成果物となる記事の一つです。
まとめはこちら


どうしてこうなった?

  • 弊社と新しい形式を扱う他社で大きな違いがあったから
    • 詳細を省いて結論だけを述べるとSQLを使ったほうが良い
  • 新しくプログラムを作成するのなら旧来の方法を使う利点はない
  • 慣れるためにも新しいものに早く入り浸ったほうが良い
  • ザックリまとめると次の通り……
観点 READ/CHAIN 等 (従来型) SQL (集合指向)
新旧 かなり古い 古い
模範 手続き型 宣言型
アクセス方式 レコード指向 (1 件ずつ) 集合指向 (複数件まとめて)
主な命令 READ, READE, READP, CHAIN, SETLL, SETGT, WRITE, UPDATE, DELETE SELECT, INSERT, UPDATE, DELETE, DECLARE CURSOR, FETCH
コード量 多くなりがち 簡潔に書ける
パフォーマンス 単純処理では軽快 最適化エンジンで効率的
柔軟性 ファイル定義に依存 複雑な条件・結合が可能
学習コスト RPG/COBOL経験者には馴染みやすい SQL標準知識が活かせる

両者の詳細

  • READ/CHAIN 等

    • SQLができる前から存在
    • 手続き型
    • 1ライン毎に検索するため極単純な場合は高速
      • 小規模処理や単純な検索ではオーバーヘッドが少ない
        • だが記録媒体が磁気テープの時代はともかく現在の筐体では誤差
        • 1件ずつ処理するため大規模処理には不向き
    • ジャーナルが不要
      • 当然巻き戻しはできなくなる
      • ジャーナルを無くせばその分データ量を軽くできる
        • ただし現在でそこまでデータ量が切羽詰めることはないと思いたい
    • RPG/COBOL プログラマにとって直感的で分かりやすい
      • 現在ではこれらしか扱えないプログラマの方が珍しいだろう
    • ファイル構造の影響を強く受けるため柔軟な操作が難しい
      • 論理ファイルに定義されていないレコード順ソートなどが不可
      • 複雑な定義なども苦手とする
  • SQL

    • 方言こそあるが様々な環境で使うことが可能
      • プログラマーの育成や募集が行いやすい
      • 可読性が高く引き継ぎや保守も容易
    • 宣言型
    • 柔軟な処理が可能
      • 複数のデータベースを合わせてなども用意
      • 複雑な命令も機械が勝手に最適化して動かす

実際に RPGIV と類似したコードを RPGIII で作成した際に思ったこと

RPGIV は SQLRPGLE で記述されていたが弊社では OS のバージョンが古いままで RPGIII メインかつ SQL 自体が特殊な方法でしか使えないという前提だと……

  • あいまい検索の難易度が違いすぎる
    • SQL 不使用では別途 CL でコードを作成する必要あり
    • SQL はメタ文字で容易に実装可能
  • 論理ファイルで定義されたキー以外での検索は SQL でないと厳しい
以下 RPGIII と IV に起因する違い
  • 変数やレコード名、プログラム名に使える名前の文字数制限が違う
    • 当然厳しいのは RPGIII、変数名をかなり略す必要があり可読性は低い
    • RPGIV と変数名やレコード名を揃えたかったが無理だった
  • GOTO が難しくて怖い
    • 他言語では半ば禁じて伴っている GOTO は RPGIII では今も必須

当記事の著作権はIBMに帰属します。詳細はこちらを参照ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?