Systemwalker Operation Manager リファレンスマニュアル - UNIX/Windows(R)共通 - |
目次 索引 |
第17章 API情報 | > 17.1 カレンダAPI |
カレンダ登録API(Mp_AddCalendar2)について説明します。
int Mp_AddCalendar2 (char *APL_name, |
Mp_AddCalendar2関数は、新規にカレンダを登録します。
第何週目の何曜日といった、年ごとに日付が変動する休日および振替休日も登録できます。
過去の日付は、設定できません。
要求元アプリケーション名(64バイト以内)の格納領域アドレスを指定します。
終わりはNULLを指定してください。“Mp_”および“_CAL_”の文字列で始まる名前は、使用しないでください。
登録するカレンダ名の格納領域アドレスを指定します。カレンダ名は24バイト以内で終わりはNULLを指定してください。
カレンダ更新情報構造体(CALENDAR_WDAT2)のアドレスを指定します。
復帰値 |
意 味 |
0 |
正常終了しました。 |
-2 |
同一カレンダ名がすでに存在しています。 |
-5 |
SYSTEM_CALENDARが指定されました。 |
-6 |
システム管理者(Administratorsグループに属するユーザまたはスーパーユーザ)ではありません。 |
-8 |
カレンダ情報に誤りがあります。 |
-10 |
カレンダサービス/カレンダデーモンが動作していません。 |
-11 |
メモリ不足です。 |
-15 |
カレンダ名に指定できない文字を指定しました。 |
-16 |
ファイル操作に失敗しました(writeエラー)。 |
-17 |
カレンダ名長が不当です。 |
過去の日付は、すべて運用日として設定されます。
ジョブスケジューラでカレンダを引用する場合は、その日は運用日として計算されます。
typedef struct CALENDAR_WDAT2_TAG { short year ; // 本年の年4桁 short sub_holiday ; // 振替休日の有無を指定 unsigned char holiday_w[12] ; // 毎年の曜日情報(12カ月分) unsigned long holiday_d[12] ; // 毎年の日付情報(12カ月分) unsigned char holiday_m[12][6] ; // 毎年の週情報(12カ月分×6週 // 分) short cal_dat[3][12][31] ; // 3年分(year年から)のカレン // ダ情報 }CALENDAR_WDAT ;
3年分のカレンダ情報を設定する基準の年(3年分の先頭の年)を西暦4桁で設定します。
振替休日が有効かどうかを指定します。以下の値を指定してください。
値 |
振替休日の有効/無効 |
0 |
無効 |
1 |
有効 |
毎年の曜日情報(12カ月分の配列)です。毎年の休日にする曜日を指定します。先頭から1ビット目を日曜日、2ビット目を月曜日とし、以降3ビット目から7ビット目まで順に、それぞれ火曜日から土曜日までに対応します。毎年、配列に指定した月のビットをオンにした曜日が休日になります。
毎年の日付情報(12カ月分の配列)です。毎年の休日にする日付を指定します。先頭から1ビット目を1日、2ビット目を2日とし、以降3ビット目から31ビット目まで順に、それぞれ3日から31日までに対応します。毎年、配列に指定した月のビットをオンにした日付が休日になります。
毎年の週情報(12カ月分×6週分の配列)です。第何週目の何曜日といった、毎年日付が変動する休日を指定します。1番目の配列を何月(1〜12)、2番目の配列を何週目(1〜5は第1〜第5週目、6は最終週)として対応します。先頭から1ビット目を日曜日、2ビット目を月曜日とし、以降3ビット目から7ビット目まで順に、それぞれ火曜日から土曜日までに対応します。毎年、1番目の配列に指定した月の2番目の配列に指定した週のビットをオンにした曜日が休日になります。
yearで指定した年から3年分のカレンダ情報です。毎年の休日の情報を反映したものを指定します。以下の値を指定してください。
値 |
カレンダ情報 |
0 |
あり得ない日(2月30日など) |
1 |
休日とする日 |
2 |
運用日とする日 |
カレンダ登録APIのプログラム例を以下に示します。
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #include <f3crhcap.h> extern void set_cal_dat2( CALENDAR_WDAT2 *) ; void main() { int ret ; int count ; CALENDAR_WDAT2 cal_dat2 ; /*.......... 初期化 ..........*/ memset( &cal_dat2, 0x00, sizeof( CALENDAR_WDAT2) ) ; /*.......... カレンダ情報の設定 ..........*/ /* 今年を設定 */ cal_dat2.year = 2000 ; /* 振替休日を有効にする */ cal_dat2.sub_holiday = 1 ; /* 毎週土日を休日にする */ for ( count = 0 ; count < 12 ; count++ ) { cal_dat2.holiday_w[count] = (unsigned char)0x82 ; } /* 3年分のカレンダ情報を設定する */ set_cal_dat2( &cal_dat2 ) ; /* カレンダの登録 */ ret = Mp_AddCalendar2( "Test Pro", "calendar_1", &cal_dat2 ) ; printf( "ret= %d\n", ret ) ; exit ( 0 ) ; }
目次 索引 |