IBM Bob Premium Package for i v2.0.0 で Understand という機能が追加されていたので、実際にセットアップしてアプリケーションの分析を行ってみた内容を備忘録代わりに記載します。
日本語環境ではそのままではスキャンが失敗したため、その回避方法についてもあわせて記載しています。
サマリー
- Understand は、IBM i のライブラリーをオブジェクト単位でスキャンし、オブジェクト同士の関係をメタデータとして登録しておく機能です(ソースは参照しません)
- 日本語環境には未対応で、日本語を含むオブジェクトがあるとスキャンが失敗します。メタデータ格納用テーブルの CCSID を 1399 に変換することで回避できました(自己責任での対応になります)
- Understand を利用すると、同じ分析でも Bob コインの消費量が 2.61 → 0.520(約 1/5) に抑えられました
はじめに
Understand とは
新しい Understand ダッシュボードを使用して IBM i アプリケーションライブラリーのオブジェクトレベルスキャンを実行し、コンパイル済みオブジェクトをインデックス化してそれらの関係をマッピングする機能です。Bob はオブジェクトスキャンのメタデータから直接、影響分析、アプリケーション概要、プログラム関係などの構造的なクエリーに回答できるようになります。
セットアップ手順
Understand ダッシュボードを開く
Workflow のボタンの横に Understand のボタンが追加されています。
ボタンを押下すると Overview が表示されます。すでに IBM i と接続済みのため、最初のステップは完了している状態です。
メタデータ格納用ライブラリーを作成する
Choose an install library を選択し、メタデータを格納するためのライブラリーを指定します。ここでは空のライブラリーを新規で作成する必要があります。
IBM Bob でライブラリーを作成するには、OBJECT BROWSER で New Library を選択します。
画面上部に入力欄が表示されるので、ライブラリー名を入力して Enter を押下します。今回は MYUNDLIB を作成しました。
インストールライブラリーを設定する
作成したら Set install library を選択し、メタデータを格納するライブラリー(今回は MYUNDLIB)を入力します。
下記画像のように表示されない場合はIBM Bob を再起動すると表示されることがあります。
入力が完了したら × ボタンを押下し、Overview 画面の Install Understand を選択します。MYUNDLIB が空になっているかの確認が表示されますが、今回はそのまま続行ボタンを押下します。
ここでは、クライアントの PC を経由して IBM i に必要なオブジェクトがインストールされます。
スキャン対象のアプリケーションを登録する
インストールが完了したら +Add application を押下して、スキャン対象のライブラリーを選択します。
下記の項目を入力して Add application を押下します。
| 項目 | 内容 |
|---|---|
| Display name | 表示名(任意) |
| Description | 記述(任意) |
| Library | スキャン対象のライブラリー名(複数選択可能) |
Q から始まるライブラリー、名前に SYS が含まれるライブラリーはスキャン対象外となりますので注意してください。
下記のように表示されれば、アプリケーションの登録は完了です。この時点ではまだスキャンは行われていないので、Scan を押下してスキャンを開始します。
日本語環境でスキャンが失敗する
発生したエラー
スキャンを実行すると、下記のエラーメッセージが表示されてスキャンが失敗しました。
Scan error: [SQL0438] MYUNDLIB.SCAN_APP failure: SQLSTATE=22021, SQLCODE=-438, APP_ID=1: Step 1 (OBJECT_STATISTICS inventory) failed for library IMAO1399 ロSQLSTATE=22021, SQLCODE=-330ワ: MEMOBJ, 22021, -438
SQLCODE=-330 は文字変換ができなかったことを示すエラーです。原因は恐らく、MYUNDLIB に作成されたメタデータ格納用テーブルの CCSID が 37 になっており、日本語の文字を含むオブジェクトの情報を格納できずにスキャンが失敗しているものと考えられます。
そこで、テーブルの文字列列の CCSID を 1399 に変換します。
現時点では日本語環境への対応はされていないため、ここからの作業を実施される場合はご自身の責任の下で実施してください。
CCSID を変換する
CCSID 37 から 1399 への直接変換は、システムのデータ損失チェックで拒否されるため、37 → 65535 → 1399 の2段階で変換しています。
また、下記の列については対応を変えています。
- CCSID 1399 での最小バイト長の制約があるため、サイズを拡張した列
-
OBJ_CMD_INFO.ALLOW_LIMITED_USERVARCHAR(3) → VARCHAR(6) -
OBJ_EXPORTED_SYMBOLS.IS_DETERMINISTICVARCHAR(3) → VARCHAR(6) -
OBJ_TRIGGERS.OPERATIVEVARCHAR(1) → VARCHAR(4) -
OBJ_TRIGGERS.ENABLEDVARCHAR(1) → VARCHAR(4)
-
- Y/N などの英数字フラグを格納する CHAR 列は、CCSID 65535 までの変換にとどめています(CHAR(1) は CCSID 1399 では最小バイト長の制約により定義できないため)
実行した SQL は下記になります。
実行した SQL(クリックで展開)
-- =============================================================
-- MYUNDLIB CCSID 1399 変換スクリプト
-- 対象: MYUNDLIB ライブラリの全物理ファイルの文字列列
-- 手順: CCSID 37 -> 65535 -> 1399 の2段階変換
-- (37->1399 の直接変換はシステムのデータ損失チェックで拒否されるため)
-- 注意1: 以下の列はCCSID 1399 での最小バイト長制約のためサイズを拡張
-- OBJ_CMD_INFO.ALLOW_LIMITED_USER VARCHAR(3) -> VARCHAR(6)
-- OBJ_EXPORTED_SYMBOLS.IS_DETERMINISTIC VARCHAR(3) -> VARCHAR(6)
-- OBJ_TRIGGERS.OPERATIVE VARCHAR(1) -> VARCHAR(4)
-- OBJ_TRIGGERS.ENABLED VARCHAR(1) -> VARCHAR(4)
-- 注意2: 以下のCHAR列はY/N等の英数字フラグのため CCSID 65535 止まり
-- (CHAR(1) CCSID 1399 は最小バイト長制約で不正のため)
-- OBJ_CMD_INFO.TARGET_RELEASE
-- OBJ_COLUMNS.IS_NULLABLE
-- OBJ_COLUMNS.HAS_DEFAULT
-- OBJ_OBJECTS.ADOPTED_AUTHORITY
-- OBJ_OBJECTS.TERASPACE_ENABLED
-- OBJ_OBJECTS.HAS_DYNAMIC_SQL
-- OBJ_OBJECTS.OBJECT_CONTROL_LEVEL
-- OBJ_TRIGGERS.SECURE
-- =============================================================
-- -------------------------------------------------------------
-- APPS
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.APPS ALTER COLUMN DISPLAY_NAME SET DATA TYPE VARCHAR(100) CCSID 65535;
ALTER TABLE MYUNDLIB.APPS ALTER COLUMN DISPLAY_NAME SET DATA TYPE VARCHAR(100) CCSID 1399;
ALTER TABLE MYUNDLIB.APPS ALTER COLUMN DESCRIPTION SET DATA TYPE VARCHAR(500) CCSID 65535;
ALTER TABLE MYUNDLIB.APPS ALTER COLUMN DESCRIPTION SET DATA TYPE VARCHAR(500) CCSID 1399;
ALTER TABLE MYUNDLIB.APPS ALTER COLUMN STATUS SET DATA TYPE VARCHAR(30) CCSID 65535;
ALTER TABLE MYUNDLIB.APPS ALTER COLUMN STATUS SET DATA TYPE VARCHAR(30) CCSID 1399;
-- -------------------------------------------------------------
-- LIBRARIES
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.LIBRARIES ALTER COLUMN NAME SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.LIBRARIES ALTER COLUMN NAME SET DATA TYPE VARCHAR(10) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_BNDDIR_ENTRIES
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_BNDDIR_ENTRIES ALTER COLUMN ENTRY_LIBRARY SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_BNDDIR_ENTRIES ALTER COLUMN ENTRY_LIBRARY SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_BNDDIR_ENTRIES ALTER COLUMN ENTRY_ACTIVATION SET DATA TYPE VARCHAR(6) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_BNDDIR_ENTRIES ALTER COLUMN ENTRY_ACTIVATION SET DATA TYPE VARCHAR(6) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_CMD_INFO
-- ALLOW_LIMITED_USER: VARCHAR(3)->VARCHAR(6) (CCSID 1399 最小長制約のため拡張)
-- TARGET_RELEASE: CHAR(6) - 英数字フラグのため CCSID 65535 止まり
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN CPP_NAME_CHAR SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN CPP_NAME_CHAR SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN THREADSAFE SET DATA TYPE VARCHAR(5) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN THREADSAFE SET DATA TYPE VARCHAR(5) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN MULTITHREADED_JOB_ACTION SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN MULTITHREADED_JOB_ACTION SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN TARGET_RELEASE SET DATA TYPE CHAR(6) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN SOURCE_FILE_LIBRARY SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN SOURCE_FILE_LIBRARY SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN SOURCE_FILE SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN SOURCE_FILE SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN SOURCE_FILE_MEMBER SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN SOURCE_FILE_MEMBER SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN ALLOW_LIMITED_USER SET DATA TYPE VARCHAR(6) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CMD_INFO ALTER COLUMN ALLOW_LIMITED_USER SET DATA TYPE VARCHAR(6) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_COLUMNS
-- IS_NULLABLE: CHAR(1) - 英数字フラグのため CCSID 65535 止まり
-- HAS_DEFAULT: CHAR(1) - 英数字フラグのため CCSID 65535 止まり
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_COLUMNS ALTER COLUMN COLUMN_NAME SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_COLUMNS ALTER COLUMN COLUMN_NAME SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_COLUMNS ALTER COLUMN DATA_TYPE SET DATA TYPE VARCHAR(50) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_COLUMNS ALTER COLUMN DATA_TYPE SET DATA TYPE VARCHAR(50) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_COLUMNS ALTER COLUMN IS_NULLABLE SET DATA TYPE CHAR(1) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_COLUMNS ALTER COLUMN HAS_DEFAULT SET DATA TYPE CHAR(1) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_COLUMNS ALTER COLUMN COLUMN_TEXT SET DATA TYPE VARCHAR(50) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_COLUMNS ALTER COLUMN COLUMN_TEXT SET DATA TYPE VARCHAR(50) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_CONSTRAINTS
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN CONSTRAINT_NAME SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN CONSTRAINT_NAME SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN FK_COLUMN SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN FK_COLUMN SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN PK_COLUMN SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN PK_COLUMN SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN DELETE_RULE SET DATA TYPE VARCHAR(20) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN DELETE_RULE SET DATA TYPE VARCHAR(20) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN UPDATE_RULE SET DATA TYPE VARCHAR(20) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_CONSTRAINTS ALTER COLUMN UPDATE_RULE SET DATA TYPE VARCHAR(20) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_DEPENDENCIES
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_DEPENDENCIES ALTER COLUMN DEP_KIND SET DATA TYPE VARCHAR(30) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_DEPENDENCIES ALTER COLUMN DEP_KIND SET DATA TYPE VARCHAR(30) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_DEPENDENCIES ALTER COLUMN CONSTRAINT_NAME SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_DEPENDENCIES ALTER COLUMN CONSTRAINT_NAME SET DATA TYPE VARCHAR(128) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_EXPORTED_SYMBOLS
-- IS_DETERMINISTIC: VARCHAR(3)->VARCHAR(6) (CCSID 1399 最小長制約のため拡張)
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN SYMBOL_NAME SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN SYMBOL_NAME SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN SPECIFIC_NAME SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN SPECIFIC_NAME SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN SYMBOL_KIND SET DATA TYPE VARCHAR(20) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN SYMBOL_KIND SET DATA TYPE VARCHAR(20) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN RETURN_TYPE SET DATA TYPE VARCHAR(200) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN RETURN_TYPE SET DATA TYPE VARCHAR(200) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN IS_DETERMINISTIC SET DATA TYPE VARCHAR(6) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN IS_DETERMINISTIC SET DATA TYPE VARCHAR(6) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN SQL_DATA_ACCESS SET DATA TYPE VARCHAR(8) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN SQL_DATA_ACCESS SET DATA TYPE VARCHAR(8) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN ROUTINE_DEFINER SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_EXPORTED_SYMBOLS ALTER COLUMN ROUTINE_DEFINER SET DATA TYPE VARCHAR(128) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_JOURNAL_OBJECTS
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_JOURNAL_OBJECTS ALTER COLUMN FILE_TYPE SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_JOURNAL_OBJECTS ALTER COLUMN FILE_TYPE SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_JOURNAL_OBJECTS ALTER COLUMN JOURNAL_IMAGES SET DATA TYPE VARCHAR(6) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_JOURNAL_OBJECTS ALTER COLUMN JOURNAL_IMAGES SET DATA TYPE VARCHAR(6) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_JOURNAL_OBJECTS ALTER COLUMN OMIT_JOURNAL_ENTRY SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_JOURNAL_OBJECTS ALTER COLUMN OMIT_JOURNAL_ENTRY SET DATA TYPE VARCHAR(10) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_LIB_SUGGESTIONS
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_LIB_SUGGESTIONS ALTER COLUMN LIB_NAME SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_LIB_SUGGESTIONS ALTER COLUMN LIB_NAME SET DATA TYPE VARCHAR(10) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_MESSAGES
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_MESSAGES ALTER COLUMN TEXT SET DATA TYPE VARCHAR(1000) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_MESSAGES ALTER COLUMN TEXT SET DATA TYPE VARCHAR(1000) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_MESSAGES ALTER COLUMN MSG_TYPE SET DATA TYPE VARCHAR(20) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_MESSAGES ALTER COLUMN MSG_TYPE SET DATA TYPE VARCHAR(20) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_MODULE_BINDINGS
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_MODULE_BINDINGS ALTER COLUMN SRVPGM_ACTIVATION SET DATA TYPE VARCHAR(8) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_MODULE_BINDINGS ALTER COLUMN SRVPGM_ACTIVATION SET DATA TYPE VARCHAR(8) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_MODULE_BINDINGS ALTER COLUMN MODULE_ATTRIBUTE SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_MODULE_BINDINGS ALTER COLUMN MODULE_ATTRIBUTE SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_MODULE_BINDINGS ALTER COLUMN LANGUAGE_ID SET DATA TYPE VARCHAR(7) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_MODULE_BINDINGS ALTER COLUMN LANGUAGE_ID SET DATA TYPE VARCHAR(7) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_MODULE_BINDINGS ALTER COLUMN STORAGE_MODEL SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_MODULE_BINDINGS ALTER COLUMN STORAGE_MODEL SET DATA TYPE VARCHAR(10) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_OBJECTS
-- ADOPTED_AUTHORITY: CHAR(1) - 英数字フラグのため CCSID 65535 止まり
-- TERASPACE_ENABLED: CHAR(1) - 英数字フラグのため CCSID 65535 止まり
-- HAS_DYNAMIC_SQL: CHAR(1) - 英数字フラグのため CCSID 65535 止まり
-- OBJECT_CONTROL_LEVEL: CHAR(8) - 英数字フラグのため CCSID 65535 止まり
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN SYSTEM_NAME SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN SYSTEM_NAME SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN LONG_NAME SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN LONG_NAME SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN OBJECT_TYPE SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN OBJECT_TYPE SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN SQL_OBJECT_TYPE SET DATA TYPE VARCHAR(20) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN SQL_OBJECT_TYPE SET DATA TYPE VARCHAR(20) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN SQL_PROGRAM_TYPE SET DATA TYPE VARCHAR(20) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN SQL_PROGRAM_TYPE SET DATA TYPE VARCHAR(20) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN TEXT_DESC SET DATA TYPE VARCHAR(50) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN TEXT_DESC SET DATA TYPE VARCHAR(50) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN RELATIVE_PATH SET DATA TYPE VARCHAR(512) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN RELATIVE_PATH SET DATA TYPE VARCHAR(512) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN EXTENSION SET DATA TYPE VARCHAR(20) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN EXTENSION SET DATA TYPE VARCHAR(20) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN FILE_SUBTYPE SET DATA TYPE VARCHAR(20) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN FILE_SUBTYPE SET DATA TYPE VARCHAR(20) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN OWNER SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN OWNER SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN DEFINER SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN DEFINER SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN ACTIVATION_GROUP SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN ACTIVATION_GROUP SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN ADOPTED_AUTHORITY SET DATA TYPE CHAR(1) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN TERASPACE_ENABLED SET DATA TYPE CHAR(1) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN LAST_USED_OBJECT SET DATA TYPE VARCHAR(4) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN LAST_USED_OBJECT SET DATA TYPE VARCHAR(4) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN COMPILER SET DATA TYPE VARCHAR(7) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN COMPILER SET DATA TYPE VARCHAR(7) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN COMPILER_VERSION SET DATA TYPE VARCHAR(9) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN COMPILER_VERSION SET DATA TYPE VARCHAR(9) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN OBJECT_CONTROL_LEVEL SET DATA TYPE CHAR(8) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN CREATED_SYSTEM_VERSION SET DATA TYPE VARCHAR(9) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN CREATED_SYSTEM_VERSION SET DATA TYPE VARCHAR(9) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN HAS_DYNAMIC_SQL SET DATA TYPE CHAR(1) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN DYNAMIC_SQL_PATS SET DATA TYPE VARCHAR(200) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_OBJECTS ALTER COLUMN DYNAMIC_SQL_PATS SET DATA TYPE VARCHAR(200) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_RESOLVED_IMPORTS
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN BOUND_SERVICE_PROGRAM SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN BOUND_SERVICE_PROGRAM SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN BOUND_SRVPGM_LIBRARY SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN BOUND_SRVPGM_LIBRARY SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN RESOLVED_SRVPGM_LIBRARY SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN RESOLVED_SRVPGM_LIBRARY SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN RESOLVED_SYMBOL_NAME SET DATA TYPE VARCHAR(256) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN RESOLVED_SYMBOL_NAME SET DATA TYPE VARCHAR(256) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN RESOLVED_SYMBOL_USAGE SET DATA TYPE VARCHAR(8) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_RESOLVED_IMPORTS ALTER COLUMN RESOLVED_SYMBOL_USAGE SET DATA TYPE VARCHAR(8) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_SCAN_TIMESTAMPS
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_SCAN_TIMESTAMPS ALTER COLUMN STEP_COUNTS SET DATA TYPE VARCHAR(200) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_SCAN_TIMESTAMPS ALTER COLUMN STEP_COUNTS SET DATA TYPE VARCHAR(200) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_SYMBOL_PARAMETERS
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_SYMBOL_PARAMETERS ALTER COLUMN PARAMETER_NAME SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_SYMBOL_PARAMETERS ALTER COLUMN PARAMETER_NAME SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_SYMBOL_PARAMETERS ALTER COLUMN DATA_TYPE SET DATA TYPE VARCHAR(100) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_SYMBOL_PARAMETERS ALTER COLUMN DATA_TYPE SET DATA TYPE VARCHAR(100) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_SYMBOL_PARAMETERS ALTER COLUMN PARAMETER_MODE SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_SYMBOL_PARAMETERS ALTER COLUMN PARAMETER_MODE SET DATA TYPE VARCHAR(10) CCSID 1399;
-- -------------------------------------------------------------
-- OBJ_TRIGGERS
-- OPERATIVE: VARCHAR(1)->VARCHAR(4) (CCSID 1399 最小長制約のため拡張)
-- ENABLED: VARCHAR(1)->VARCHAR(4) (CCSID 1399 最小長制約のため拡張)
-- SECURE: CHAR(1) - 英数字フラグのため CCSID 65535 止まり
-- -------------------------------------------------------------
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN TRIGGER_NAME SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN TRIGGER_NAME SET DATA TYPE VARCHAR(128) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN EVENT_MANIPULATION SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN EVENT_MANIPULATION SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN ACTION_TIMING SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN ACTION_TIMING SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN TRIGGER_MODE SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN TRIGGER_MODE SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN SECURE SET DATA TYPE CHAR(1) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN TRIGGER_KIND SET DATA TYPE VARCHAR(10) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN TRIGGER_KIND SET DATA TYPE VARCHAR(10) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN OPERATIVE SET DATA TYPE VARCHAR(4) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN OPERATIVE SET DATA TYPE VARCHAR(4) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN ENABLED SET DATA TYPE VARCHAR(4) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN ENABLED SET DATA TYPE VARCHAR(4) CCSID 1399;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN TRIGGER_DEFINER SET DATA TYPE VARCHAR(128) CCSID 65535;
ALTER TABLE MYUNDLIB.OBJ_TRIGGERS ALTER COLUMN TRIGGER_DEFINER SET DATA TYPE VARCHAR(128) CCSID 1399;
IBM Bob から SQL を実行する
IBM Bob のアプリケーションで Ctrl + Alt + N を押下すると SQL の実行画面が開きますので、上記の SQL をコピーして貼り付けます。
Ctrl + Shift + A を押下するか、画面上部の Run SQL statement を押下して実行します。
画面下部に下記のように表示されれば実行完了です。
Statement executed with no result set returned. Rows affected: 0
再度スキャンを実行する
テーブルの変換が完了したので、再度 Scan を押下してスキャンを実行します。
下記のように表示されればスキャン完了です。
以上でアプリケーションのメタデータの登録が完了しました。
Object のタブを選択して任意のオブジェクトを選択すると、そのオブジェクトの依存関係も確認できます。
Understand を使用してアプリケーションを分析する
追加された Tools と Skills
最新のアップデートで、Understand 用の Tools や Skills も追加されています。詳しくは下記を参照してください。
- Tools:https://bob.ibm.com/ja/docs/ide/premium-packages/bob-for-i/tools#understand-tools
- Skills:https://bob.ibm.com/ja/docs/ide/premium-packages/bob-for-i/skills#understand
また、Bob のチャット欄の権限設定に、Understand の自動承認のボタンも追加されていました。
実際に使用してみる
IBM Bob に下記のように依頼してみました。
IMAO1399のアプリケーションの依存関係を分析してください
依頼した結果、分析が完了しました。
実行結果を見ると、新規で追加された Skills や Tools を使用して分析していることがわかります。
Bob コインの消費量
ここで注目したいのが、消費した Bob コインの量です。
今回使用したライブラリーのオブジェクトは合計 67 個でしたが、Understand を利用した場合と利用しなかった場合で、同様の操作の消費量を比較すると下記のようになりました。
| 条件 | 消費 Bob コイン |
|---|---|
| Understand を利用した場合 | 0.520 |
| Understand を利用しない場合 | 2.61 |
Understand を使用することで、コインの消費量を約 1/5 に削減できました。
感想
事前にスキャンしたメタデータを参照して回答するため、AI が都度オブジェクトの情報を取得しに行く必要がなくなることが、コイン削減に効いているのだと思います。
Understand を使うことでアプリケーション全体の構造を事前に把握させておけるため、分析の精度だけでなく Bob コインの消費も大きく抑えられるのは便利だと感じました。
一方で、日本語環境にはまだ対応していないため、日本語を含むオブジェクトがあるライブラリーではそのままではスキャンが失敗します。今回の CCSID 変換はあくまで暫定的な回避策ですので、正式な対応を待つのが安全だと思います。
※注意:本記事の内容は検証時点(IBM Bob Premium Package for i v2.0.0)のもので、画面やテーブル構造は今後変更される可能性があります。














