【初心者向け】COMMNDxxとは?z/OS初期設定で使われるParmlibメンバーをわかりやすく解説!
この記事では、COMMNDxxメンバーについて、基本的な概念から具体例までを初心者にもわかりやすくまとめてみました。
アジェンダ
COMMNDとは
◆ 概要
COMMNDxx
は、z/OS の IPL(初期プログラムロード)時に自動で実行させたいコマンドを記述するParmlibメンバーです。
たとえば、毎回 IPL 時に VTAM や TSO を起動する必要がある場合、それらの START
コマンドを COMMNDxx
に記載しておけば、オペレーターが手動で入力しなくても、IPL中に自動的にコマンドが発行されるようになります。
⚠️ 注意点
- JESはCOMMNDxxでは起動できない
- 大量の
VARY
コマンドを記述すると07E
待ち状態になる可能性あり(パフォーマンスが低下の恐れあり -
SLIP
コマンドはIEASLPxx
を使う(COMMNDxxにはSET SLIP=xx
を記述)
◆ COMMNDの指定方法
どの COMMNDxx
メンバーを使うかは、IEASYSxx
メンバーの CMD=()
パラメーターで指定します。
- 例:
CMD=(01,02)
→COMMND01
とCOMMND02
が読み込まれる - 未指定時:
COMMND00
がデフォルトで使用される(存在すれば)
◆ コマンドの実行順序とタイミング
-
DISPLAY T
のような即時実行系 → COMMNDxx 内の順序通りに実行 -
DISPLAY A
のようなタスク作成系 → 初期化完了後に実行(順序保証なし)
このため、順序依存のあるコマンドはCOMMNDxxに入れるべきではありません。
◆ COMMNDの構文規則
COMMNDの基本的な構文規則は次の通りです。
COM='コマンド内容'
- 1行に1コマンド
-
COM=
は必須 - コマンドは 単一引用符
'
で囲む - 継続行は不可
- コメントは
*
から始める
コマンドの内容は、たとえば S TSO
のようにTSO を起動するといったものです。
また、&SYSNAME;
などのシステム・シンボルを使うことも可能です。
例:
COM='S NETVIEW,SUB=MSTR,CAT=&CATALOG;,SYS=&SYSNAME;'
COMMNDの例
以下に、実際によく使われるCOMMNDxxの記述例とその意味を紹介します。
◆記述例と意味
以下に、よく使われるCOMMNDxx記述例です。
COM='S VTAM'
COM='S DLF'
COM='DD ADD,VOL=AB12C3'
COM='DD NAME=SYS1.&SYSNAME..DMP&SEQ'
COM='DD ALLOC=ACTIVE'
COM='S SDSF'
COM='S NETVIEW'
-
S
: STARTコマンド。TSOやVTAMなどの指定されたジョブやサブシステムを IPL 時に起動 -
DD
: DUMPDSコマンド。システムダンプ用のダンプデータセットを定義
◆COMMNDxxを編集してIPLを実行してみた
実際に、COMMNDxx
メンバーを編集し、NetView を自動で起動するためのコマンドを追加してみました。
具体的には、以下のような行を COMMNDxx
に追記しました。
COM='S NETVIEW1'
この S NETVIEW1
は、NetView(ここでは仮名として "NETVIEW1")を起動するためのコマンドです。
これまでは IPL 後に手動でこのコマンドを入力していましたが、COMMNDxx に組み込むことで、IPL後に自動的にNetViewが起動されることを期待して設定しました。
IPLを実行した後、以下のようにして状態を確認しました:
D A,L
このコマンドでNETVIEW1が自動で立ち上がっていることが確認できました。
NETVIEW1 NETVIEW1 NETVIEW NSW SO
この結果から、
-
手動で行っていた作業が自動化された
-
IPL後の確認・起動操作の手間が軽減された
-
Parmlibによる自動化の効果を実感できた
といったメリットを感じました。
COMMNDxx はこのように、繰り返し発生するルーチン操作の自動化に非常に有効な手段です。
まとめ
COMMNDxx は、z/OSシステムのIPL時に必要な操作を自動化するための強力なツールです。定型的な手動コマンドの入力をなくすことで、運用ミスの削減や作業効率の向上に貢献できます。
特に、
-
必ず実行する初期化コマンドがある
-
手動入力を省略して信頼性を高めたい
-
システムごとの環境差異をシンボルで吸収したい
という場面では、ぜひ積極的に活用したい仕組みです。