出力制限サポート

メインフレームでの実践方法に準じて、SYSOUT データセットに送信される出力の量を制限できます。JCL ジョブ カードに値を入力することで、制限をジョブ全体に適用できます。環境変数を使用して出力される行数のグローバルな制限を設定できます。

LINES、PAGES、CARDS、BYTES の制限

JCL ジョブ カードで LINES、PAGES、CARDS、BYTES キーワード パラメーターがサポートされます。PAGES、CARDS、BYTES は、次の値を使用して行数に変換されます。

  • PAGE ごとに 60 LINES
  • CARD ごとに 25 LINES
  • LINE ごとに 132 BYTES

たとえば、ジョブ カードに PAGES=(100,CANCEL) と入力すると出力が 6000 行に制限され、制限に達するとジョブがキャンセルされます。

OUTLIM パラメーターによる制限の指定

SYSOUT DD 文には OUTLIM パラメーターを含むことができ、これによりそのデータセットに出力される最大行数を指定します。制限に達すると、システムは次を行います。
  • もしあればユーザー出口を呼び出す
  • もしあればグローバル設定を処理する
  • S722 異常終了コードでステップを異常終了させる

SYSABEND、SYSMDUMP、SYSUDUMP の各データセットでは、OUTLIM 値は無視されます。

ユーザーは、出力制限に達した場合に呼び出す OUTLIM ユーザー出口を実装できます。これにより、ジョブを続行するか異常終了するかをシステムに伝えることができます。ユーザー出口プログラムの名前は MFJUSOXT にする必要があり、プログラムのサンプルが製品の source\enterpriseserver\exitssrc/enterpriseserver/exit フォルダーに含まれています。

環境変数によるグローバル制限の指定

グローバル制限は、エンタープライズ サーバー リージョンが起動された環境で、またはエンタープライズ サーバー リージョンの構成設定に値を入力することで、環境変数によって設定します。それらの値は、そのリージョンで実行するすべてのジョブに適用されます。

変数値のフォーマットは、JCL ジョブ カードのアカウント情報に入力するフォーマットに似ています。必ず制限値を含み、オプションで、制限に達したときに実行されるアクションを含みます。

ES_JES_***=NUMBER | (NUMBER,WARNING | CANCEL | DUMP)

詳細は次のとおりです。

  • *** は、LINES、PAGES、CARDS、BYTES、または OUTLIM のいずれかになります。
  • 指定できるアクションは、CANCEL、DUMP、または WARNING です。WARNING はデフォルトのアクションです。
  • CANCEL および DUMP ではジョブがその時点で異常終了し、WARNING ではメッセージが発行されますが処理は続行します。LINES、PAGES、CARDS、および BYTES にアクションを指定しないと、システムは警告を発行し処理を続行します。OUTLIM にアクションを指定しない場合、デフォルトのアクションで警告を発行します。
  • WARNING に設定すると、この値の倍数ごとに警告メッセージ JCLCM0010W が繰り返されます。たとえば、ES_JES_PAGES=10 は、ジョブ内の SYSOUT の 600 行ごとに警告を発行します。

ここで説明する動作は、DD 文の OUTLIM パラメーターではなく、ES_JES_OUTLIM 環境変数に適用されることに注意してください。DD 文の OUTLIM パラメーターを超えると、ES_JES_OUTLIM 環境変数で指定されたデフォルト アクションが実行されます。アクションが指定されていない場合は、警告が発行されます。

DD 文の OUTLIM パラメーターを使用して、ES_JES_OUTLIM 環境変数によって定義された VALUE はオーバーライドできますが、ES_JES_OUTLIM のアクションはオーバーライドできません。したがって、ES_JES_OUTLIM=50000,CANCEL の場合、DD 文で OUTLIM=100000 を指定すると、ジョブ ステップはジョブをキャンセルする前に SYSOUT に 100,000 行を書き込めます。

環境変数 値の範囲
ES_JES_LINES 0 から 99999999
ES_JES_LINES=(100,CANCEL)
出力される行数を 100000 に制限します。制限に達すると、ジョブがキャンセルされます。これにより、S722 Output limit exceeded システム異常終了コードが生成されます。
ES_JES_PAGES 0 から 99999999
ES_JES_PAGES=10
各ページ 60 行を前提にするため、600 行 (60×10) を処理すると警告が発行され、処理は続行します。
ES_JES_CARDS 0 から 99999999
ES_JES_CARDS=(30,WARNING)
各カード 25 行を前提にするため、750 行 (25×30) に達すると警告メッセージが発行され、処理は続行します。
ES_JES_BYTES 0 から 999999
ES_JES_BYTES=(100,DUMP)
バイトの値は千単位で、各行 132 バイトを前提にするため、100000/132 行に達するとジョブがキャンセルされます。
ES_JES_OUTLIM 1 から 16777215
ES_JES_OUTLIM=5000
上記を設定した場合、出力が 5000 行を超えると警告が発行されます。
ES_JES_OUTLIM=(1000,CANCEL)
上記を設定した場合、SYSOUT データセットの出力制限が 1000 行を超えると、S722 異常終了コードでステップが異常終了します。SYSOUT データセットごとに個別の OUTLIM 値を設定できます。例://SYSPRINT DD SYSOUT=*,OUTLIM=500

SYSPRINT の出力が 500 行を超え、ES_JES_OUTLIM=(1000,CANCEL) である場合、ステップは S722 異常終了コードでキャンセルされます。