こちらの記事でご質問頂いた件、
IBM i サービス NETSTAT_JOB_INFO ビュー のマニュアルページ(こちら)に記載のある、システム名 ってなに?という質問です。
上記の反転個所の記載です。
IBM i に精通していないといきなりわからないですよね。
この場合の「システム名」とは何を指すか?
答えはこの場合、「システム名」=「IBM i OS上でのオブジェクト名」です。
なぜこういう事が起こるかというと、IBM i OS上のオブジェクト名は10桁まで、というOS/400時代の名残?仕様?制約?があるからです。
IBM i サービスでは分かりやすくするために長い(10文字以上128文字までの)ビュー名、テーブル名、関数名を多用しているのですが、それらの実体としてのオブジェクトは10桁以内の名前を付けないといけない、という制約があるんですね。
IBM i サービス NETSTAT_JOB_INFO ビューで確認してみる
それでは実際に確認してみます。
マニュアルページに記載からIBM i OS上のオブジェクト名は QSYS2/NS_JOB と分かっていますので、DSPFDコマンドでファイルの属性、DSPFFDコマンドでカラム属性を確認してみます。
DSPFDコマンドでLF QSYS2/NS_JOB のファイル属性を確認する。
DSPFD QSYS2/NS_JOB
結果はこちら。1ページ下にスクロールしたものを転記しています。
上記のようにこのLFはSQLで作成されていることが確認できます。作成するDDLでNET_STAT_JOBINFO というビュー名が指定されていることがわかります。このビュー名はSQLで使用できる別名として指定されることになります。非SQLからは使用できない名前、とも言えます。RPGⅢのF仕様書のPF名等で指定したい場合は、実体オブジェクト名であるNS_JOBを指定する必要があります。
DSPFFDコマンドでLF QSYS2/NS_JOB のカラム属性を確認する。
DSPFFD QSYS2/NS_JOB
上記コマンドの結果がこちら。
同様に1ページ下にスクロールした画面です。
フィールド名 CONN_TYPE : LF上のフィールド名です。RPGⅢなどで非SQLで扱う場合はこのカラム名を指定します。SQLからも使用可能です
代替名 CONNECTION_TYPE : SQLからだけ使用可能な別名です。RPGⅢなどでは使用できません。
代替名はSQLで10桁よりも長いカラム名、フィールド名を使用したい、というニーズから追加されたものです。
IBM i OSシステム名(IBM i オブジェクト名)を使用したSQL実行例
ビュー名をNS_JOBに変えています。
SELECT * FROM QSYS2.NS_JOB
WHERE CONNECTION_TYPE = 'IPV4' ;
結果は下記のようにSQL別名を指定した場合と同じ結果が返ります。
カラム名にシステム名 CONN_TYPE を指定してみます。
SQL別名と同様に結果が返ります。