きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

WMQやDB2などのCPF(Command Prefix)について

CPFについて調べてあることを書いてみる。
CPFは、WMQやDB2にコマンドを打つ時に使うやつだ。


いきなりで申し訳ないが、CPFというアセンブラのマクロがある。
どうやらこのマクロでCPFを登録しているようだ。


CPFは、IEFSSNxxで登録する。普通はSYS1.PARMLIBにある。
IEFSSNxxがCPFの登録機能を有しているかというと正確には否だと思う。


WMQの場合はこんな行を追加。
SUBSYS SUBNAME(ssid) INITRTN(CSQ3INI) INITPARM('CSQ3EPX,cpf,scope')
DB2の場合はこんな行を追加。
SUBSYS SUBNAME(ssname) INITRTN(DSN3INI)
INITPARM('DSN3EPX,cmd-prefix<,scope<,group-attach<,subgroup-attach>>>')


INITRTNが初期化ルーチン、INTPARMはそれに渡す引数。
INITRTNがCPFを登録する機能を有していると考えた方がよかろう。


いつか触ったことないz/OSを触ることになるだろうから、次のことは当然押さえてある。
まあきっとデータセットにアクセス出来ないだろうけどな。
/D IPLINFO
これでLOADメンバの所在を確認。
LOADメンバから、SYSPLEX名や、PARMLIB、IEASYM、SYSPARMなどが分かる。
IEFSSNxxを調べるには、SYSPARMを追いかける。
PARMLIBのデータセットの中で、IEASYSxxを探すのに、このSYSPARMが必要。
IEASYSxx内のSSNステートメントで、IEASSNxxが決定する。
もしもここがシンボルだったら、先にIEASYMxxを見る必要がある。


SETSSIコマンドというMVSシステムコマンドがある。
これは動的にサブシステムテーブルを書きかえるそうだ。
これを使うとCPFも変えられる。
なんだろうね、たぶん初期導入時に使うのかな。
IEFSSNxxの確認は次のIPLで確認するとして、とっととSETSSIで登録して動作確認してしまうとか?


REXXにもCPFが存在するようだ。
AXRxxの中で登録されている。これは知らなかったな。
IEASYSxxにAXR=で登録出来るようだ。
省略した場合はAXR00が使われる。
/F AXR,SYSREXX,STATUSを打ってみた。
なんか、IEFSSNxxには無いのに、この子(AXR)はサブシステム扱いに?


AXRZARGという構造体を発見。
どうやらSYSTEM REXXで使用する模様。
んー、あんまりダンプから拾う機会はなさそうなんで深追いはやめとこう。