カタログとALIAS
データセットに対するデフォルトのカタログ
JOBCAT/STEPCATがあろうがなかろうが、第1修飾子が例えば「USR1」であれば、Catalog DSN = USR1 のように修飾子と同名のカタログで運用していれば、ALIASなしでカタログにアクセスすることができます。これはMVSの元々の仕様であって、ALIASを理解する上でも重要な機能です。
※MVSでは、z/OS v1r7からJOBCAT/STEPCATが廃止されました。
// JOB //JOBCAT DD DISP=SHR,DSN=USR1 ※実際には必要なし //* //STEP1 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=USR1.PSFILE1 //SYSUT2 DD DISP=(,CATLG),DSN=USR1.PSFILE2, // UNIT=SYSDA,VOL=SER=WORK10,SPACE=(TRK,1) //SYSIN DD DUMMY //
データセットに対するデフォルトのカタログへの別名登録
第1修飾子が「USR1」である、データセットに対して、例えば、Catalog DSN = ICFCAT.USERCAT のみを使っているなら、単純にALIAS追加でカタログにアクセスできます。
// JOB ※別名登録のためのサンプルJCL //* //IDCAMS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE ALIAS(NAME(USR1) RELATE(ICFCAT.USERCAT)) //
これによって、JCLに、//JOBCAT DD DISP=SHR,DSN=USR1 を定義する必要がなくなります。
カタログに対するALIAS(別名登録)とは、あたかも第1修飾子と同じ名前(DSN)のカタログデータセットがあるかのように見せかけることです。
元々MVSは第1修飾子と同じ名前のカタログデータセットを探して、それを参照する仕様になっていますから、カタログデータセットに別名を付けることによって、結果として「第1修飾子が○○○であれば、カタログ○○○を見に行く」となるのです。
本来ALIAS自体はデータセット名に別名を付ける機能であって、特定の修飾子とカタログを結びつける機能ではありません。しかしカタログデータセットに対しては、ALIASをつけることによって、元々のMVSの機能(第1修飾子と同名カタログを見に行く)が有効になるため、特定の修飾子とカタログが結びつくように見えるのです。
使用するデータセットの第1修飾子と、同名のカタログを使用して運用しているセンターは少なく、多くがALIASを付けるか、JOBCAT/STEPCATを使っての運用です。JOBCATの場合は、使用するカタログを明示しているので、データセットとカタログの関係がJCLを見ればわかります。
JOBCATを省略すると通常はマスターカタログが参照されますが、本当はその前に第1修飾子と同名のカタログがないかをOSは探しているのですが、そのカタログがないのでマスターカタログが使われるのです。何故ALIASを付けるとマスターカタログではなく、特定のカタログが参照されるかは、このようなしくみによるのです。
// JOB ※第1修飾子と同名カタログを作るためのサンプルJCL //* //IDCAMS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE USERCATALOG - USR1で始まるデータセットを作る前に (NAME(USR1) - カタログを作ること。 TRACKS(1 0) - VOLUME(WORK10)) //