- 「メインフレーム・コンピューター」で遊ぼう - http://www.arteceed.net -

カタログと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))     
    //