ユーザによるジョブ開始指定 

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.