カスタムバッチ上書きルールの作成
スケジューラは、
[バッチ定義]
フォームで上書きルールを使用して、形成中のバッチが最小発行数に達していなくても、それらのバッチを発行するかどうか決定します。
注: カスタムルールの作成に必要な手順のサマリは、「カスタムスケジュールルールの作成」を参照してください。このトピックで説明した関数の詳細については、弊社サポートサイトからダウンロードできる
『Scheduling Customization Guide』
(スケジューリングカスタマイズガイド)を参照してください。
上書きルールの論理
カスタムバッチ上書きルールを作成し、対応するバッチ上書き関数を作成する前に、その上書き関数で使用する論理を理解しておく必要があります。このルールは、以下の 2 つの条件で呼び出されます。
- 上書き発行確認の追加が有効で、形成中のバッチにジョブが追加されるが、バッチがその最小発行数に達さなないか、その数を超えない場合
- 定期的な確認が有効なとき、バッチ定義で指定された間隔で定期的な上書き発行確認が行われた場合
バッチ上書き関数は、呼び出されると、形成中のバッチを発行するかどうかを決定します。
関数の命名
カスタム上書き関数には、ユーザによる呼び出し可能な標準の関数名 ではない任意の名前を付けることができます。
引数
#include "factor.h"
int borl(formbat, batch)
FORMBAT *formbat; /* pointer to the forming batch */
BATCHDEF *batch; /* pointer to the batch definition */
この上書き関数は、2 つの引数として、バッチ生成へのポインター(区分:FORMBAT *)とバッチへのポインター(区分: BATCHDEF *)を受け入れます。
戻り値
関数は、形成中のバッチを発行する場合は真(0 以外)を返し、形成中のバッチを発行しない場合は、偽(0)を返します(タイプ : int)。
以下に、上書き閾値以上の時間に基づくバッチ上書き関数の例を示します。
int borl (FORMBAT *formbat, BATCHDEF *batch)
/*-----------------------------------------------------------------
Batch override rule which determines that the forming batch should
be released if it has been waiting longer or equal to the override
threshold.
ARGS:
formbat - pointer to the arriving forming batch
batch - pointer to the batch that this load will follow
RETURNS: true, if it has been waiting too long
false, otherwise
-----------------------------------------------------------------*/
{
double x;
x = cstnow - formbat->fbsttim;
/* If the time the batch has been forming is at least the
threshold, then release the batch */
if (x >= batch->btovth)
{
return(1)
}
else
{
return(0)
}
{
カスタム関数のインストール
カスタム上書き関数をスケジューラで使用できるようにするには、sedfok 関数を呼び出すことにより、ucini1 からカスタム上書き関数を「インストール」する必要があります。この関数には、次の順序の 2 つの引数があります。
- 関数に含まれるカスタム論理のバッチ上書きルールの番号
- バッチ上書き関数のアドレス
たとえば、上記のルール例「borl」をルール位置 39 にインストールするには、以下のようにします。
sedfok (39, borl);