若梅 秀美
株式会社アイエステクノポート
ソリューション営業部
DXおよびモダナイゼーションを推進していくにあたり、「DBデータの整合性が取れていること」は、実は非常に重要です。
アプリケーションの最新化に際して、「今まで問題なく動いていたのだから、データにも不具合はない。整合性は取れている」と判断していると、思わぬ落とし穴に陥る危険性があります。長期にわたり安定稼働しているアプリケーションでも、不整合データが潜在化していることがたまにあり、不整合データを含むデータを最新化したアプリケーションで利用したりクラウド環境で送受信すると、エラーとなり異常終了することがあるからです。そのため、IBM iを活用したDX/モダナイゼーションでは、その計画の過程で「現行のDBデータにエラーがないか、整合性が取れているか」を確認すべきです。
ただし、大量に蓄積されたデータの整合性を検証し、必要に応じて修正を行うには多大な工数と時間を要します。
そこで今回は、当社の「i-T4db」を活用してデータの品質向上・活用を効率的に行う方法についてご紹介します。
i-T4dbとは?
T4dbは、当社が2018年に販売を開始した製品で、下図のような効果を提供します。
利用シーンとしては、次のようなケースが想定されます。
これらのユースケースに対応するため、i-T4dbでは2つのデータ保守機能を提供しています。
CHKPFDTA(物理ファイルデータチェック)
物理ファイルのデータ整合性チェック機能
・シフト文字、フィールドの整合性をチェック
・不正文字を検出し、監査ログを出力
・シフト補正や不整合データ初期化などの自動修復
EDTDTA(データベースレコードの編集)
高機能データ編集機能
・DFUで編集できない不正データも編集可能
・16進数、文字のいずれでも編集可能
・132桁画面で編集が可能
i-T4dbでは多くの画面でキーボード/マウスを使って容易に操作を行えます。データベース一覧画面からRUNQRYやUPDDTAなどデータに関連するOSコマンドを右クリックで呼び出して実行もできます。主要な機能はコマンド化されており、ユーザーアプリケーションに組み込むことも可能です。
また、当社は自社で100%開発を行っているため、製品のマニュアルはもちろん、画面、印刷出力などすべてが日本語で表記されています。


ヘルプ画面の例。すべて日本語で表示される
IBM iのDX/モダナイゼーションにおけるデータベース視点の課題に対応
次に、これらの機能がどのようにDX/モダナイゼーションに影響するか、データベースのデータ整合性の観点から具体例を挙げて解説します。
モダナイゼーションの実施にあたり、Db2 for iのデータ取得を従来のRLA(Record Level Access:レコードレベルアクセス)+DDSからSQLに変えるケースも増えています。
業界標準であるSQLは、RPGやCOBOLの組み込みSQLや、多くのオープン系言語からJDBC/ODBCなどのDBドライバー経由で、一貫性のあるデータベース操作を行うことができます。また、IBM iのSQLはJSONやWebサービスに対応しているため、先進機能を実装したアプリケーションの開発が容易になります。
しかしSQLの利用にあたり、データの不整合が問題になるケースがあります。以下のようなケースです。
①不正な十進数
1つ目の例として、全フィールドの中で1フィールドだけ「不正な十進数」を含むレコードを読み取る場合、SQLとRLAではどのように処理がなされるのかを具体的なコードで確認しましょう。
SQLの場合、レコードのFETCH(1行読み取り)でエラーとなり、転送先変数(例では:tokmsp_rec)のすべての変数が更新されません。
このエラーを回避するには、SELECT文に「正常な」データを含むフィールドのみを記述する、あるいは「正常な」データを含むフィールドのみのViewを作成する、といった対応が考えられます。
RLAの場合は、プログラムで使用されている変数のみが参照されるため、不整合データのあるフィールドをプログラムで使用していなければエラーにならず、処理はそのまま続行されます。

不正データを含むフィールドを参照した時点でエラーになるのはSQL/RLAとも同様です。しかし、SQLではどのフィールドに不整合データがあるのかが事前にわかっていないと対応は困難です。
潜在化した不整合データを発見するのは至難の業であり、エラーが発生するまで存在に気づかないケースも多いでしょう。また、不整合データはDFUを用いてもデータ編集できないことがあるため、仮に大量のデータの中からそうしたデータを見つけられても、修正のために別途プログラムを書いて対応するという、手間も時間もかかる対応が求められる場合があります。
②不正な文字
2つ目の例として、「不正な文字」のアプリケーションへの影響を見てみます。この例ではフィールドTKNAKJ(得意先名(漢字))にシフト文字が欠けたデータが登録されています。
データベースのCCSIDが5026(日本語カタカナ)で、ジョブのCCSIDが1399の場合、OSによる暗黙のCCSID変換(5026→1399)が行われます。前掲のプログラムを実行すると、データベースの文字フィールドに不整合データが存在しているため、変換エラーとなって処理は正しく行われません。

RLAの場合もSQLと同様に、READした時点でデータ・マッピング・エラーとなり、データを読み込むことはできません。

SQL/RLAのいずれのケースでも、プログラムの実行前にコマンド「CHGJOB CCSID(65535)」(65535は「無変換」を示す特殊CCSID)を実行すれば暗黙の変換が抑止され、不整合データが不整合のままプログラムに渡されるのでエラーを回避できます。しかしWebサービスなどの変換が必要な処理では、エラーの回避は不可能です。
i-T4dbの機能紹介
当社のi-T4dbは、ここまでに説明したような、モダナイゼーションを進めるうえで発生する不整合データに関する困り事を解決できます。
i-T4dbは、主に2つの機能を提供しています。
1. CHKPFDTAコマンド
これは、物理ファイルのデータの整合性をチェックする機能です。CHKPFDTAは下記の項目をチェックします。
確認したいデータベース・ファイルやライブラリー、フィールドなどデータチェック時の条件指定が可能です。また、不整合データを修復またはクリアし、別ライブラリーに複写する(*1)かも選択できます。
*1:軽微な不整合を修復しますが、複合的な不整合など自動修復不能なデータがあります。

上図のようにCHKPFDTAコマンドは3種類の出力を作成します。
1つ目の結果レポートの出力は、データチェックを行った物理ファイルにどのような不整合データがあったのか、それが何桁目か、自動修復が行われたのか、などのログを確認するためのものです。

2つ目の修復データの出力は、CHKPFDTAコマンドで「データの修復」の実施を指定した場合に作成されます。既存データに変更を行わず、新しいライブラリーに修復されたデータを出力します。これにより、意図しないデータの修正を防ぐとともに、修復前後のデータを比較できます。
3つ目は検査ログのファイル出力です。CHKPFDTAコマンドで「検査ログファイル」を指定した場合に作成され、不整合が検出されたファイル、メンバー、相対レコード番号(RRN)、フィールド、エラー種別などが出力されます。大量の不整合が発生している場合は、このファイルをSQLなどで分析すると効率的です。
CHKPFDTAコマンドを活用すれば、必要なものを選択して効率的にチェックでき、データの品質向上を実現できます。
2. EDTDTA
EDTDTAコマンドは、物理ファイルのデータ(レコード)を編集する高機能なデータ編集機能です。
一覧表示/単一レコード表示を自由に切り替えて、データベースレコードを表示・編集可能です。既存データの編集に加え、新規レコードの追加や既存レコードの複写、レコードの削除も行えます。


EDTDTAコマンドはデータの更新という観点ではDFUと類似していますが、想定される用途は異なります。
i-T4dbの導入メリット
i-T4dbの活用により得られるメリットは、主に以下の3点です。
1つ目は、「基幹システムに必要なデータの信頼性の向上」です。
データの信頼性向上は今後ますます重要になります。DX/モダナイゼーションの推進、サーバー間のデータ連携、JIS2004対応(CCSID1399への移行)による利用可能文字の拡大などは、データが健全であることが前提であり、不整合データの確認なしにこれらプロジェクトを進めるのは大きなリスクを伴います。i-T4dbを用いてデータのチェック・修正を行うことでデータの信頼性を確保でき、次のステップへ進めるのです。
2つ目は、「データ不整合による障害の防止」です。
前述のとおり、システム内に不整合データが存在すると、コーディングや実行環境によってはプログラム・エラーが発生する場合があります。わずか1レコードのデータ不整合が、深刻なアプリケーション障害を引き起こす可能性があるのです。i-T4dbを用いてデータ不整合の有無を確認・修正すれば、このような障害を低減できます。
3つ目は、「開発者の作業軽減」です。
データチェックを手作業で行うには限界があります。長年運用してきたシステムであれば尚更です。i-T4dbは一括でデータの不整合を検出し、レポートやファイルへ出力できるので、効率的な作業が可能です。データチェックの工数が削減されれば、そのぶんの工数をほかのタスクへの割り振ることができ、全体の最適化が図れます。
効率的なモダナイゼーションを目指して
DX/モダナイゼーションを考えるうえでシステム担当が考慮すべき事項は非常に多く、特に人員不足が叫ばれている今、細かなデータチェックを都度行うことは困難でしょう。i-T4dbによるデータの整合性チェック・編集を行うことで、少ない人数であっても、効率的にモダナイゼーションを進めることが可能になります。
前回のコラム(CGU同等機能製品「i-CGU」 ~外字を今後も快適に使い続けるための強力なツール)でも触れたように、ADTSの一部機能の廃止によってCGUが使えなくなることが大きな話題となりました。
IBM i 7.6以降で外字を使い続けるには、当社のi-CGUなどの外字・漢字管理ツールを利用したり、CCSIDを1399へ移行し使用可能な拡張文字を増やすことが必要です。その際に、i-T4dbを利用して不正なデータを洗い出せば、CCSID1399への移行が効率的に進められます。
今の時代に合ったシステムの構築を、IBM iで--。
そうお考えの方にこそ、i-T4dbはお奨めです。DX/モダナイゼーションを進めるにあたってIBM iのデータチェックを行いたいというお客様は、ぜひ気軽にお問い合わせください。
⋆本コラムは、iWorldに寄稿した記事を改稿したものです。
[iS Technoport]








