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

データセット(メンバー)を編集して印刷する(IEBPTPCH)

順次データセットあるいは区分データセットのメンバーはIEBPTPCHユーティリティで印刷することができます。レコードの内容をべたで出力すればいいのならIEBGENERでSYSOUTにコピーする方法がお手軽ですが、PTPCHを使えば、タイトル行を付けたり、データ中のバイナリー部分を16進文字でダンプする、パック10進数をゾーン10進文字に変換したりの簡易編集ができます。


区分データセットのメンバーを印刷する

    //         JOB Statement
    //*********************************************************************
    //*        Sample JCL - IEBPTPCH
    //*        =====================
    //*********************************************************************
    //IEBPTPCH EXEC PGM=IEBPTPCH
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD DISP=SHR,DSN=MY.JCL
    //SYSUT2   DD SYSOUT=*
    //SYSIN    DD *
      PRINT TYPORG=PO,MAXNAME=10,MAXFLDS=10
      TITLE ITEM=('----+----1----+----2----+----3----+----4',1),
            ITEM=('----+----5----+----6----+----7----+----8',41)
      MEMBER NAME=DATA1
      RECORD FIELD=(80)
      MEMBER NAME=IEBGENER
      RECORD FIELD=(80)
    //
    //
    

    指定したメンバーの内容をそのまま出力します。MEMBERパラメーターで出力するメンバーを、RECORDパラメーターでレコード長を指定します。複数のメンバーを印刷する場合、MEMBERとRECORDパラメーターの対を印刷するメンバー数分定義します。


区分データセットのメンバー内容を編集して印刷する

    //         JOB Statement
    //*********************************************************************
    //*        Sample JCL - IEBPTPCH
    //*        =====================
    //*********************************************************************
    //IEBPTPCH EXEC PGM=IEBPTPCH
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD DISP=SHR,DSN=MY.DATA
    //SYSUT2   DD SYSOUT=*
    //SYSIN    DD *
      PRINT TYPORG=PO,MAXNAME=10,MAXFLDS=10
      TITLE ITEM=('PRINT OUR APPLICATION PROGRAM DATA')
      TITLE ITEM=('NAME       AMOUNT(PACK) ADDRESS'),
            ITEM=('DATA/HEX',46)
      MEMBER NAME=DATA1
      RECORD FIELD=(10,1,,1),FIELD=(6,15,PZ,12),
             FIELD=(20,30,,25),FIELD=(20,60,XE,46)
    //
    //
    

    指定したメンバーの内容をフィールドの内容によって編集して印刷します。RECORDパラメーターで編集するフィールドを4つ指定します。最初のFIELDパラメーターはレコードの先頭から10バイトをリストの1桁目から、2番目のFIELDパラメーターはレコードの15文字目から6バイトのパック10進数を編集してリストの12桁目から、3番目のFIELDパラメーターはレコードの30文字目から20バイトをリストの25桁目から、4番目のFIELDパラメーターはレコードの60文字目から20バイトを16進文字に編集してリストの46桁目から印刷します。


順次データセットの内容を印刷する

    //         JOB Statement
    //*********************************************************************
    //*        Sample JCL - IEBPTPCH
    //*        =====================
    //*********************************************************************
    //IEBPTPCH EXEC PGM=IEBPTPCH
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD DISP=SHR,DSN=MY.TESTDATA
    //SYSUT2   DD SYSOUT=*
    //SYSIN    DD *
      PRINT TYPORG=PS,MAXFLDS=10
      TITLE ITEM=('PRINT OUR APPLICATION PROGRAM DATA')
      TITLE ITEM=('NAME       AMOUNT(PACK) ADDRESS'),
            ITEM=('DATA/HEX',46)
      RECORD FIELD=(10,1,,1),FIELD=(6,15,PZ,12),
             FIELD=(20,30,,25),FIELD=(20,60,XE,46)
    //
    //
    

    同じ編集方法で区分データセットのメンバーではなく、順次データセットの印刷例です。PRINT文のTYPORGがPS、MAXNAMEパラメーターやMEMBER文を指定しない、ことを除けばPDSメンバーの印刷と同じです。

MVS3.8で実行した印刷例を以下に示します。最新のMVSでも同じです。
IEBPTPCH JCLサンプルの実行結果リスト [1]