分析制御ユーザー出口

分析制御ユーザー出口について、以下で説明します。

目的

この出口を使用して、以下のオプションの現行設定を確認し、オーバーライドできます。

DataSets
以下の ddname のデータ・セットが指定されます。
  • IDIADATA
  • IDIHIST
  • IDILANGX
  • IDILC
  • IDILCOB
  • IDILCOBO
  • IDILPLI
  • IDILPLIE
  • IDISYSDB
IDIADATAIDILANGXIDILCIDILCOBIDILCOBOIDILPLIIDILPLIE、および IDISYSDB DDname の場合、現行データ・セットが以下のように指定されます。
事前割り振りデータ・セット
これは、JCL DD ステートメントなどから Fault Analyzer を起動する前に 割り振られたデータ・セットです。各 DDname のデータ・セットは、CTL.ddname_PRE フィールドに提供されます。

事前割り振りデータ・セット名フィールドは読み取り専用で、変更は Fault Analyzer により無視されます。

ジョブ割り振りデータ・セット
これは、ユーザー・オプション・ファイル (IDIOPTS) からの DataSets オプション指定です。各 DDname のデータ・セットは、CTL.ddname_JOB フィールドに提供されます。

ジョブ割り振りデータ・セット名フィールドへの変更は、Fault Analyzer がデータ・セットのこのリストを 割り振るときに受け入れられます。

構成データ・セット
これは、IDICNFxx 構成メンバーからの DataSets オプション指定です。各 DDname のデータ・セットは、CTL.ddname_CFG フィールドに提供されます。

構成データ・セット名フィールドへの変更は Fault Analyzer により受け入れられます。

データ・セットの最終連結順序は次のとおりです。

  1. 事前割り振りデータ・セット
  2. ジョブ割り振りデータ・セット
  3. 構成データ・セット

IDIHIST DDname の場合、現行ヒストリー・ファイルは ENV.IDIHIST データ域フィールドに指定されます。ユーザー出口はこのデータ・セット名を変更することを選択できます。この場合、指定されたデータ・セット名は現行の障害のヒストリー・ファイルとして使用されます。

DataSets オプション (DataSets オプションのデータ・セット名の置換シンボルを参照) に適用されるデータ・セット名内の置換シンボルの利用に関する同じ規則が、分析制御ユーザー出口により返されるデータ・セット名にも適用されます。

DeferredReport
DeferredReport オプションが有効かどうかの状態は、「Y」(DeferredReport が有効) または「N」(DeferredReport が有効でない) のいずれで CTL.DEFERREDREPORT_OPT データ域フィールドに示されます。このフィールドへの変更が有効な場合、現行オプション設定がオーバーライドされます。

リアルタイム処理にのみ適用できます。

Detail
有効な Detail オプションの省略フォームは、CTL.DETAIL_OPT データ域フィールドに指定されます。このフィールドへの変更が有効な場合、現行オプション設定がオーバーライドされます。

対話式再分析には適用されません。

Exclude
最後に一致する Exclude 基準は、CTL.EXCLUDE_CRITERION データ域フィールドに指定されます。一致する Exclude 基準に基づき、障害が分析から除外された場合、CTL.EXCLUDE データ域フィールドは「Y」に初期化されます。このフィールドは出口により修正可能です。

リアルタイム処理にのみ適用できます。

Include
最後に一致する Include 基準は、CTL.INCLUDE_CRITERION データ域フィールドに指定されます。ブランクの Include 基準は、すべてを組み込むことを示します。これは、暗黙的製品デフォルトです。

リアルタイム処理にのみ適用できます。

Locale
現行のロケール名は、CTL.LOCALE データ域フィールドに指定されます。このフィールドへの変更が有効な場合、現行オプション設定がオーバーライドされます。

LOCALE オプションのサブオプション FADATE は、CTL.FADATE データ域フィールドに指定されます。このフィールドへの変更が有効な場合、現行オプション設定がオーバーライドされます。

RetainDump
有効な RetainDump オプションの値は、CTL.RETAINDUMP_OPT データ域フィールドに 指定されます (このフィールドに指定される値は、RetainDump オプションの実際のサブオプションである「AUTO」または「ALL」です)。このフィールドへの変更が有効な場合、現行オプション設定がオーバーライドされます。

このオプションは、後ほど、End Processing ユーザー出口 (終了処理ユーザー出口を参照) によってオーバーライドされることがあります。

リアルタイム処理にのみ適用できます。

Source
有効な Source オプションの状態は、「Y」(Source が有効) または「N」(Source が有効でない) のいずれかで、CTL.SOURCE_OPT データ域フィールドに示されます。このフィールドへの変更が有効な場合、現行オプション設定がオーバーライドされます。

リアルタイム処理にのみ適用できます。

さらに、分析制御ユーザー出口は、オプションにより指定されない、または渡されたデータ域で指定される可能性があるその他のデータ・セットの割り振りを実行できます。リアルタイムでは、このような割り振りは IDIREPRT で実行可能です。これにより、インストール環境で SYSOUT クラスなどのレポート宛先属性を制御できます。このタイプの IDIREPRT 割り振りについて、詳細はFault Analyzer リアルタイム・レポートの結合リアルタイム・レポートの SYSOUT クラスを制御、およびリアルタイム・レポートの抑止を参照してください。

CTL.IDITRACE data areaフィールドを使用して、IDITRACE 処理を動的に開始または停止することができ、またトレースの出力先をデータ・セットにすることができます。

呼び出されるタイミング

この出口は、オプション処理が完了した後で、障害分析の開始前に呼び出されます。

パラメーター

パラメーターがどのように出口に渡されるかは、出口タイプ (REXX またはロード・モジュール) によって異なります。

Fault Analyzer は、分析制御ユーザー出口を呼び出す前に、特定の障害および有効な処理オプションの現行値を使用してパラメーター・リストを初期化します。

REXX

出口は、以下の 2 つのステムを使用できます。

定義された変数名は、フィールド名と同じです。例えば、ENV データ域のフィールド VERSION にアクセスするには、REXX 変数 ENV.VERSION を使用します。

ロード・モジュール

この出口へのエントリーで、R1 には以下の 2 つのフルワードを構成するパラメーター・リストの 31 ビット・アドレスが含まれます。

以下は、REXX で書かれた分析制御ユーザー出口の例です。
1. サンプル REXX 分析制御ユーザー出口
/* REXX */
/* Check data areas used */
if ENV.VERSION <> 5 then
  say 'Note: ENV data area version change - field usage review required!'
if CTL.VERSION <> 2 then
  say 'Note: CTL data area version change - field usage review required!'
if ENV.REALTIME = 'Y' then do  /* Exclude all MVSA jobs from analysis */
  if ENV.SYSTEM_NAME = 'MVSA' then
    CTL.Exclude = 'Y'
  /* Select a separate history file for DB2, IMS, and other jobs
     based on jobname */
  if SUBSTR(ENV.JOB_NAME,1,3) = 'DB2' then
    ENV.IDIHIST = 'MY.DB2.HIST'
  else if SUBSTR(ENV.JOB_NAME,1,3) = 'IMS' then
    ENV.IDIHIST = 'MY.IMS.HIST'
  else
    ENV.IDIHIST = 'MY.OTHER.HIST'
end
exit 0
上記のサンプル出口がデータ・セット X.Y.Z のメンバー ABC として存在する場合、IDICNFxx 構成メンバーまたは IDIOPTS ユーザー・オプション・ファイルのいずれかに次のオプションを指定すると、このサンプル出口が呼び出されます。
DataSets(IDIEXEC(X.Y.Z))
Exits(CONTROL(REXX(ABC)))