メニューボタン
サポートチーム便り2025.10.08

IBM i で同じ名前のソースメンバーが他のライブラリー/ファイルに存在するか調査したい

Question

ソースファイルが色々なライブラリーに存在しており、同じ名前のソースメンバーが存在しています。

ソースメンバーを整理する為、同じ名前のソースメンバーがどのライブラリーに存在するのかを検索(確認)する方法はありますでしょうか。

Answer

ソースメンバー情報を検索するには、「QSYS2.SYSMEMBERSTAT」と「QSYS2.SYSFILES」ビューを使用する事で可能です。

「SYSMEMBERSTAT view」
https://www.ibm.com/docs/en/i/7.4.0?topic=services-sysmemberstat-view

「QSYS2.SYSFILES」
https://www.ibm.com/docs/ja/i/7.5.0?topic=services-sysfiles-view

※このビューを使用する為の前提グループPTFレベル(各OSのグループPTF DB2 for IBM i レベル)

Db2 for IBM i
V7.6 SF99960 level 1
V7.5 SF99950 level 7
V7.4 SF99704 level 28
→ グループPTFレベルは WRKPTFGRP コマンドでご確認ください。


  1. まず、下記SQLを実行しソースメンバーの情報DBを作成します。

    下記SQLを実行し、ライブラリーBELLTESTにファイルMYSRCSRCHを作成します。

           CREATE OR REPLACE VIEW BELLTEST.MY_SOURCE_SEARCH 
            FOR SYSTEM NAME "MYSRCSRCH"
          (LIBRARY,FILE,MEMBER,TYPE,ROWS,CREATED,LAST_CHANGED,LAST_UPDATED,MEMBER_TEXT)
          AS 
          SELECT A.SYSTEM_TABLE_SCHEMA,
                A.SYSTEM_TABLE_NAME,
                A.SYSTEM_TABLE_MEMBER, 
                A.SOURCE_TYPE,
                TO_CHAR(A.NUMBER_ROWS,'999G999'),
                TO_CHAR(A.CREATE_TIMESTAMP,'YYYY-MM-DD HH.MI.SS'),
                TO_CHAR(A.LAST_CHANGE_TIMESTAMP,'YYYY-MM-DD HH.MI.SS'),
                TO_CHAR(A.LAST_SOURCE_UPDATE_TIMESTAMP,'YYYY-MM-DD HH.MI.SS'),
              A.TEXT_DESCRIPTION
          FROM QSYS2.SYSMEMBERSTAT A, QSYS2.SYSFILES B 
          WHERE (A.SYSTEM_TABLE_SCHEMA,A.SYSTEM_TABLE_NAME) = 
                  (B.SYSTEM_TABLE_SCHEMA,B.SYSTEM_TABLE_NAME)
          AND B.FILE_TYPE = 'SOURCE' ;
  2. 作成されたDBより、対象のメンバー名がどのライブラリーにあるかを検索します。

    ※以下ではメンバー名「QSTRUP」を対象としています。

          SELECT * FROM BELLTEST.MY_SOURCE_SEARCH
             WHERE FILE = 'QCLSRC'
             AND MEMBER LIKE 'QSTRUP%'
             ORDER BY LIBRARY,FILE,MEMBER

この例では、ソースファイル名がQCLSRC内にあるメンバー名を検索しましたが、ソースファイル名が曖昧な時(例えば、QCLSRC, QCLPSRC, QCLLESRCなど)には、2行目の WHERE FILE = 'QCLSRC' の部分を WHERE FILE LIKE 'QCL%' へ変更すると、ファイル名がQCLで始まるソースファイル内を検索します。

よって、WHERE FILE LIKEを使用すればソースファイル名が曖昧でも検索する事も可能です。

時々、テストのために別のライブラリーにソースメンバーをコピーし、そのままにしてしまったなどでソース管理があいまいになってしまうことがあるかもしれません。

この際に、メンバーの整理をしてみてはいかがでしょうか。

by . あすと

あわせて読みたい記事

PAGE TOP