Systemwalker Operation Manager リファレンスマニュアル - UNIX共通 -
目次 索引 前ページ次ページ

第10章 API情報> 10.1 カレンダAPI

10.1.4 カレンダ情報取得API

カレンダ情報取得API(Mp_GetCalendar2)について説明します。

■記述形式

int Mp_GetCalendar2 (char *APL_name,
           char *cal_name,
           short mode,
           CALENDAR_RDAT2 *cal_dat2) ;

■機能説明

Mp_GetCalendar2関数は、カレンダ情報を取得します。第何週目の何曜日といった、年ごとに変動する休日および振替休日の情報も取得できます。

APL_name

要求元アプリケーション名(64バイト以内)の格納領域アドレスを指定します。

終わりはNULLを指定してください。“Mp_”および“_CAL_”の文字列で始まる名前は、使用しないでください。

cal_name

カレンダ情報を取得するカレンダ名の格納領域アドレスを指定します。カレンダ名は、24バイト以内で終わりにNULLを指定してください。

mode

0を指定します。

cal_dat2

カレンダ参照情報構造(CALENDAR_RDAT2)のアドレスを指定します。

■復帰値

復帰値

意 味

0

正常終了しました。

-1

カレンダが存在しません。

-10

カレンダデーモンが動作していません。

-11

メモリ不足です。

-16

ファイル操作に失敗しました(readエラー)。

-17

カレンダ名長が不当です。

■カレンダ参照情報構造体(CALENDAR_RDAT2)の形


typedef struct CALENDAR_RDAT2_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[4][12][31] ; // 4年分(year-1年から)のカレンダ情報 } CALENDAR_RDAT2 ;

◆year

設定される4年分のカレンダ情報の基準の年(4年分の2年目)が西暦4桁で設定されます。通常は、今年が基準として設定されます。

◆sub_holiday

振替休日が有効かどうかが設定されます。以下の値が設定されます。

振替休日の有効/無効

0

無効

1

有効

◆holiday_w

毎年の曜日情報(12ヶ月分の配列)です。毎年の休日にする曜日が設定されます。先頭から1ビット目を日曜日、2ビット目を月曜日とし、以降3ビット目から7ビット目まで順に、それぞれ火曜日から土曜日までに対応します。毎年、配列に指定した月のビットをオンにした曜日が休日になります。

◆holiday_d

毎年の日付情報(12ヶ月分の配列)です。毎年の休日にする日付が設定されます。先頭から1ビット目を1日、2ビット目を2日とし、以降3ビット目から31ビット目まで順に、ぞれぞれ3日から31日までに対応します。毎年、配列に指定した月のビットをオンにした日付が休日になります。

◆holiday_m

毎年の週情報(12ヶ月分×6週分の配列)です。第何週目の何曜日といった、毎年日付が変動する休日が設定されます。1番目の配列を何月(1〜12)、2番目の配列を何週目(1〜5は第1〜第5週目、6は最終週)として対応します。先頭から1ビット目を日曜日、2ビット目を月曜日とし、以降3ビット目から7ビット目まで順に、それぞれ火曜日から土曜日までに対応します。毎年、1番目の配列に指定した月の2番目の配列に指定した週のビットをオンにした曜日が休日になります。

◆cal_dat

yearの前年から4年分のカレンダ情報が設定されます。設定される情報を以下に示します。

カレンダ情報

0

あり得ない日(2月30日など)

1

休日とする日

2

運用日とする日

■プログラム例

カレンダ情報取得APIのプログラムを以下に示します。

 

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#include <f3crhcap.h>

extern  void put_cal_dat2( CALENDAR_RDAT2*) ;

void main() {

        int ret ;
        CALENDAR_RDAT2 cal_dat2 ;

        /*.......... 初期化 ..........*/
        memset( &cal_dat2, 0x00, sizeof( CALENDAR_RDAT2) ) ;

        /* カレンダ情報の取得 */
        ret = Mp_GetCalendar2( "Test Pro", "calendar_1", 0, &cal_dat2 ) ;

        printf( "ret= %d\n", ret ) ;

        if ( ret == 0 )
                put_cal_dat2( &cal_dat2 ) ;

        exit ( 0 ) ;
}

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1995-2005