多数の特定データセット・プレフィックスを対象にログのレポートを取得するにはどうすれば良いでしょうか? 例えば、300個ほどのプレフィックスを対象にしたい場合です。
TSSUTILユーティリティには下記の制限があることが分かっています。
-DATASETキーワードに指定できるプレフィックスの最大数は8です。
-1つのTSSUTILジョブにREPORTステートメントを複数指定すると、各REPORTステートメントの処理毎にオーディット・ファイル全体が読み込まれるため、かなり時間がかかってしまいます。つまり、REPORTステートメントが3つ指定されていると、オーディット・ファイルが3回読み込まれることになります。
今回要望しているようなレポートを生成する良い方法はないでしょうか?
OS: z/OS
オーディット・ファイル内のログ・エントリはSORTを使って特定のデータセット名の分だけ抽出して、別のファイルに作成することが可能です。この別のファイルはTSSUTILユーティリティの入力として使用できます。
このような方法ならオーディット・ファイルの読み込みは1回で済み、プレフィックスは8個までという制約も問題になりません。
手順としては下記のようになります。
TSSUTIL EXTRACT処理を実行してオーディット・ファイルをPSファイルにコピーします。
SORTを使用して、特定のデータセット名に関連するログを抽出します。データセット名は178バイト目から始まるフィールドに格納されています。
TSSUTIL REPORT処理において抽出データセットを入力として使⽤します。
以下はサンプルのJCLです。
//.... JOB
//TSSUTIL EXEC PGM=TSSUTIL
//UTILOUT DD SYSOUT=*
//SMFOUT DD DISP=(,PASS),DSN=&&SMFOUT,
// UNIT=SYSDA,
// DCB=(RECFM=VB,LRECL=465),SPACE=(CYL,(10,5))
//SYSPRINT DD SYSOUT=*
//SMFIN DD DISP=SHR,DSN=tss.AUDIT
//UTILIN DD *
EXTRACT EVENT(ALL)
/*
//SORT EXEC PGM=SORT,REGION=4096K,PARM='SIZE(320000)'
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=&&SMFOUT,DISP=(OLD,DELETE)
//SORTOUT DD DSN=&&OUTDS,SPACE=(CYL,(10,5)),DISP=(,PASS),UNIT=SYSDA
//SORTWK01 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SORTWK02 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SORTWK03 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SORTWK04 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SORTWK05 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SORTWK06 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSIN DD *
SORT FIELDS=COPY
INCLUDE COND=(178,4,CH,EQ,C'SYS1',OR,
178,5,CH,EQ,C'TEST1',OR,
178,5,CH,EQ,C'TEST2',OR,
.
.
.
.
.
.
.
.
178,5,CH,EQ,C'PRODZ')
END
/*
//TSSUTIL2 EXEC PGM=TSSUTIL
//UTILOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SMFIN DD DISP=(OLD,DELETE),DSN=&&OUTDS
//UTILIN DD *
REPORT EVENT(ALL)
/*
補足:SMFOUTのレイアウトはPrefix.CAKOMAC0ライブラリの#SMF80及び#FLOGメンバーにて確認できます。最初のx'51'バイト(10進数の81バイト)はSMF80 DSECTにマップされており、残りのバイト分についてはFLOG DSECTにマップされています。
TSSUTILの詳細については「CA Top Secret Reporting」の’TSSUTIL Utility’をご覧下さい。
Old Japanese Knowledge document ID: JTEC000906
CA Top Secretのその他FAQについては、以下のリンクからご確認ください。