
ユーザによるジョブ開始指定
BP_START_DATE_EDITOR
汎用モジュールを使用して、ユーザにジョブの開始日時とその方法を指定させることができます。この汎用モジュールは、即時開始、開始ウィンドウ、先行ジョブ、イベントなどの標準スケジュールトランザクションを使用した場合と同様のスケジュール時の選択肢をユーザに提供します。
サンプルプログラム
このセクションでは
BP_START_DATE_EDITOR
および
JOB_CLOSE
に関する例を紹介します。
* BP_START_DATE_EDITOR
が返すデータ構造
*
DATA STARTSPECS LIKE TBTCSTRT.
DATA START_MODIFY_FLAG LIKE BTCH0000-INT4.
*
* BP_START_DATE_EDITOR:
ユーザに対し、ジョブ開始に関する指定を依頼する
*
ポップアップウインドウを表示ユーザは以下から選択することができます
* -
即時開始、
* -
開始日時、最終日時、
* -
特定イベント後の開始、
* -
新規操作モードの有効化後の開始、
* -
先行ジョブ終了後の開始
* -
月のうちの特定稼動日に開始、月初または月末から起算
* -
開始日付が休日になる場合のジョブの取扱い方の指定
*
*
ユーザは開始日付オプションのすべてを選択することができます。ユーザが利用できる
*
選択肢を制限するには、独自の入力ウインドウを
*
プログラムする必要があります。あるいは、
TBTCSTRT-STRTDTTYP
を評価してユーザ
*
が適切な開始指定を選択したかどうかを調べることができます
(
下記参照
)
。
*
* BP_START_DATE_EDITOR
はユーザの指定の妥当性と、その他エラーがないかどうかを
*
チェックし、問題があればエラーを発行します。
*
以下の例に示す、
TBTCSTRT
項目だけを使用します。その他の
*
項目は内部使用のために予約されています。直接
TBTCSTRT
*
項目を設定しないでください。
*
CALL FUNCTION 'BP_START_DATE_EDITOR'
EXPORTING
STDT_DIALOG = BTC_YES “
対話モードのモジュール
STDT_OPCODE = BTC_EDIT_STARTDATE “
編集モード
STDT_INPUT = STARTSPECS “
ユーザ選択用テーブル
STDT_TITLE = 'Title' “
ポップアップ画面のタイトル
IMPORTING
STDT_OUTPUT = STARTSPECS “
ユーザ選択
STDT_MODIFY_TYPE = START_MODIFY_FLAG
“
ユーザが開始指定を変更したか
* “
どうかを示すフラグ。値
:
“ - BTC_STDT_MODIFIED,
“
ユーザは指定を変更
“ - BTC_STDT_NOT_MODIFIED,
“
ユーザは指定を変更しない
EXCEPTIONS
OTHERS = 99.
*
* JOB_CLOSE
に即時開始を指定するフラグ
:
*
即時開始を指定する場合に限って、
JOB_CLOSE
にユーザと通信するための
*
フラグを設定しなければなりません。その他の場合はすべて、
* BP_START_DATE_EDITOR
が返した値を単純に
JOB_CLOSE
に渡すだけです。
*
ユーザが設定していない値は
SPACE
となり、
JOB_CLOSE
*
では全く効果がありません。
*
* JOB_CLOSE
パラメータをすべて設定することができるのは、
* BP_START_DATE_EDITOR
を使用している場合だけです。その他の場合は、
* JOB_CLOSE
のコールで必要なパラメータだけを設定してください。
*
データ
: STARTIMMEDIATE LIKE BTCH0000-CHAR1
CASE STARTSPECS-STARTDTTYP.“
可能なタイプを以下に一覧表示します。
WHEN BTC_STDT_IMMEDIATE.“
即時開始を選択
STARTIMMEDIATE = 'X'.
WHEN BTC_STDT_DATETIME.“
開始日時を入力
WHEN BTC_STDT_EVENT.“
イベントと使用可能な引数を入力、
“
または特定操作モードの
“
有効化時に開始を選択
“ (
この場合もイベントによって
“
ジョブを開始
)
<
オプションのエラー処理、ユーザがイベントに依存したジョブのスケジュールを行
えないようにしたい場合
>
WHEN BTC_STDT_AFTERJOB.“
先行ジョブを入力
<
オプションのエラー処理、ユーザが先行ジョブに依存したジョブのスケジュールを行
えないようにしたい場合
>
WHEN BTC_STDT_ONWORKDAY “
その月の特定稼動日の
“
ジョブ開始を選択
ENDCASE.
*
* JOB_CLOSE
で指定した開始指定の利用。
*
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBNAME = JOBNAME
JOBCOUNT = JOBNUMBER
STRTIMMED = STARTIMMEDIATE
SDLSTRTDT = STARTSPECS-SDLSTRTDT
SDLSTRTTM = STARTSPECS-SDLSTRTTM
LASTSTRTDT = STARTSPECS-LASTSTRTDT
LASTSTRTTM = STARTSPECS-LASTSTRTTM
PRDDAYS = STARTSPECS-PRDDAYS “ PRD*
項目がゼロでない場合は
PRDHOURS = STARTSPECS-PRDHOURS “
ジョブが定期的に
PRDMINS = STARTSPECS-PRDMINS “
繰り返される周期を示す。
PRDMONTHS = STARTSPECS-PRDMONTHS “
PRDWEEKS = STARTSPECS-PRDWEEKS “
“
TARGETSYSTEM = STARTSPECS-INSTNAME
* AT_OPMODE =
ユーザ指定を取り込む場合はこのパラメータを省略。
“
これは
BP_START_DATE_EDITOR
により自動設定。
AT_OPMODE_PERIODIC = STARTSPECS-PERIODIC “
テーブル
TBTCSTRT
に
“
ジェネリックな定期実行フラグを設定
“
PRED_JOBNAME = STARTSPECS-PREDJOB
PRED_JOBCOUNT = STARTSPECS-PREDJOBCNT
PREDJOB_CHECKSTAT = STARTSPECS-CHECKSTAT
EVENT_ID = STARTSPECS-EVENTID
EVENT_PARAM = STARTSPECS-EVENTPARM
EVENT_PERIODIC = STARTSPECS-PERIODIC “
テーブル
TBTCSTRT
に
“
ジェネリックな定期実行フラグを設定
CALENDAR_ID = STARTSPECS-CALENDARID
STARTDATE_RESTRICTION = STARTSPECS-PRDBEHAV
START_ON_WORKDAY_NOT_BEFORE = STARTSPECS-NOTBEFORE
START_ON_WORKDAY_NR = STARTSPECS-WDAYNO
WORKDAY_COUNT_DIRECTION = STARTSPECS-WDAYCDIR
“ PRDMONTHS
が設定されている場合、
“ START_ON_WORKDAY
ジョブは
“
定期的に実行されるよう自動的にスケジュールされます。
IMPORTING
JOB_WAS_RELEASED = JOB_RELEASED
EXCEPTIONS
OTHERS = 99.