JP1 Version 8

JP1/Base 機能拡張

解説・手引・文法書

3020-3-K08-60

目　　次

前書き

変更内容

はじめに

第1編　概要

1.　機能拡張の概要

1.1　特長

1.2　関数のサンプルソースファイルの提供

第2編　運用

2.　JP1イベントを発行および取得する

2.1　機能の解説

2.1.1　前提条件

2.2　JP1イベントを発行および取得する手順

2.2.1　JP1イベントを発行する手順

2.2.2　JP1イベントを取得する手順

2.2.3　ソースファイルをコンパイルする

2.3　旧バージョンから移行する

2.3.1　再コンパイルしないで移行する

2.3.2　再コンパイルして移行する

3.　JP1/SES形式のイベントを変換する

3.1　機能の解説

3.2　JP1/SES形式のイベントを変換する手順

3.2.1　対象イベント，付加する拡張属性，メッセージを決める

3.2.2　定義ファイルを作成する

第3編　リファレンス

4.　関数

関数の記述形式

各関数共通の注意事項

関数一覧

JevFreeEvent

JevGetArrivedTime

JevGetBaseID

JevGetClose

JevGetCodeSet

JevGetDestinationAddress

JevGetDestinationServer

JevGetDetailInformation

JevGetEvent

JevGetExtAttrDirect

JevGetExtID

JevGetFirstExtAttr

JevGetMessage

JevGetNextExtAttr

JevGetOpen

JevGetProcessID

JevGetRegistFactor

JevGetRegistGroupID

JevGetRegistGroupName

JevGetRegistTime

JevGetRegistUserID

JevGetRegistUserName

JevGetSequenceNumber

JevGetSourceAddress

JevGetSourceSequenceNumber

JevGetSourceServer

JevRegistEvent

付録

付録A　JP1イベントの属性の設定基準

付録A.1　基本属性

付録A.2　拡張属性

付録B　サンプルソースファイル

付録B.1　サンプルソースファイルの詳細

付録C　互換用ライブラリー

索引

[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.

前書き

■ 対象製品

適用OSのバージョン，JP1/Baseが前提とするサービスパックやパッチなどの詳細についてはリリースノートで確認してください。

P-242C-6L84　 JP1/Base　 08-50（適用OS：Windows Server 2003，Windows Server 2003（x64），Windows XP Professional）
P-282C-6L84　 JP1/Base　 08-50（適用OS：Windows Server 2003（IPF））
P-2A2C-6L84　 JP1/Base　 08-50（適用OS：Windows Vista，Windows Server 2008）
P-2D2C-6L84　 JP1/Base　 08-50（適用OS：Windows Server 2008（IPF））
P-1B2C-6L81　 JP1/Base　 08-50（適用OS：HP-UX（PA-RISC））
P-1J2C-6L81　 JP1/Base　 08-50（適用OS：HP-UX（IPF））
P-9D2C-6L81　 JP1/Base　 08-50（適用OS：Solaris）
P-1M2C-6L81　 JP1/Base　 08-50（適用OS：AIX）
P-9S2C-7L81　 JP1/Base　 08-50（適用OS：Linux AS 4（x86），Linux ES 4（x86），Linux 5（x86），Linux AS 4（AMD64 & Intel EM64T），Linux ES 4（AMD64 & Intel EM64T），Linux 5（AMD/Intel 64））
P-9V2C-6L81　 JP1/Base　 08-50（適用OS：Linux AS 4（IPF），Linux 5（IPF））

■ 輸出時の注意

本製品を輸出される場合には，外国為替および外国貿易法ならびに米国の輸出管理関連法規などの規制をご確認の上，必要な手続きをお取りください。
なお，ご不明な場合は，弊社担当営業にお問い合わせください。

■ 商標類

Active Directoryは，米国Microsoft Corporationの，米国およびその他の国における登録商標または商標です。
AIXは，米国における米国International Business Machines Corp.の登録商標です。
AMDは，Advanced Micro Devices, Inc.の商標です。
BackOfficeは，米国Microsoft Corp.の登録商標です。
HP-UXは，米国Hewlett-Packard Companyのオペレーティングシステムの名称です。
IBMは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
Internet Explorerは，米国Microsoft Corp.の米国及びその他の国における登録商標または商標です。
Itaniumは，アメリカ合衆国および他の国におけるインテル コーポレーションまたはその子会社の登録商標です。
Java 及びすべてのJava関連の商標及びロゴは，米国及びその他の国における米国Sun Microsystems, Inc.の商標または登録商標です。
JDKは，米国 Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
Linuxは，Linus Torvaldsの米国およびその他の国における登録商標あるいは商標です。
Microsoftは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
OpenViewは，ヒューレット・パッカード社の商標です。
PA-RISCは，米国Hewlett-Packard Companyの商標です。
POSIXは，the Institute of Electrical and Electronics Engineers, Inc. (IEEE)で制定された標準仕様です。
Red Hatは，米国およびその他の国でRed Hat, Inc. の登録商標若しくは商標です。
Solarisは，米国Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
すべてのSPARC商標は，米国SPARC International, Inc. のライセンスを受けて使用している同社の米国およびその他の国における商標または登録商標です。SPARC商標がついた製品は，米国Sun Microsystems, Inc. が開発したアーキテクチャに基づくものです。
UNIXは，X/Open Company Limited が独占的にライセンスしている米国ならびに他の国における登録商標です。
Visual C++は，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windowsは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windows NTは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windows Serverは，米国Microsoft Corporationの米国及びその他の国における登録商標です。
Windows Vistaは，米国Microsoft Corporationの米国及びその他の国における登録商標です。
XPG4は，X/Open Company Limitedの規格名称です。
プログラムプロダクト「P-9D2C-6L81」には，UNIX System Laboratories, Inc.が著作権を有している部分が含まれています。
プログラムプロダクト「P-9D2C-6L81」には，米国Sun Microsystems, Inc.が著作権を有している部分が含まれています。

■ 発行

2006年7月（第1.2版）3020-3-K08-02
2008年3月（第4版）3020-3-K08-60

■ 著作権

All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.

変更内容

変更内容（3020-3-K06-60，3020-3-K07-60，3020-3-K08-60）　JP1/Base　08-50

追加・変更内容
変更個所

新プラットフォームに対応した。
運用ガイド：1.2，1.6，2.3.4，4.2.5，4.2.6，4.2.7，4.3，6.8.7，7.3，7.4.2，13.コマンド一覧，14.3，15.2.5，15.3.1，15.4.1，付録A
メッセージ：－
機能拡張：－

KAJP1037-Eメッセージの出力を抑止できるようにした。
運用ガイド：6.4.2，付録A
メッセージ：1.2.1
機能拡張：－

API設定ファイルにパラメーターを追加した。
運用ガイド：6.4.3
メッセージ：－
機能拡張：－

イベントフィルターに除外条件を指定できるようにした。
運用ガイド：6.5.2，6.5.3
メッセージ：－
機能拡張：2.2.2，3.2.2

ログファイルトラップのコマンドに監視名を指定できるようにした。
運用ガイド：7.2.1，7.2.4，13. jevlogreload，
13. jevlogstart，13. jevlogstat，13. jevlogstop
メッセージ：－
機能拡張：－

新プラットフォームに対応するため，コマンドの説明を変更した。
運用ガイド：13.コマンド一覧，13. cpysvprm，
13. hntr2getname，13. jbs_log.bat，13. jbs_spmd_reload，13. jbs_spmd_status，13. jbs_spmd_stop，13. jbsacllint，13. jbsaclreload，13. jbsadduser，13. jbsblockadesrv，
13. jbschgpasswd，13. jbsgetcnf，13. jbsgetumap，
13. jbshostsexport，13. jbshostsimport，13. jbslistacl，
13. jbslistsrv，13. jbslistuser，13. jbsmkpass，
13. jbsmkumap，13. jbsrmacl，13. jbsrmumap，
13. jbsrmumappass，13. jbsrmuser，13. jbssetacl，
13. jbssetcnf，13. jbssetumap，13. jbsumappass，
13. jbsunblockadesrv，13. jbsunsetcnf，13. jcocmdconv，13. jevdbinit，13. jevdbswitch，13. jevdef_distrib，
13. jevdef_get，13. jeveltreload，13. jevlogreload，
13. jevlogstart，13. jevlogstat，13. jevlogstop，
13. jevregsvc，13. jevreload，13. jevstat，13. Jischk，
13. Jiscond，13. Jisconv，13. Jiscpy，13. Jisext，
13. Jisinfo，13. Jiskeymnt，13. Jisktod，13. Jislckclear，13. Jislckext，13. Jislckfree，13. Jismlcktr，13. Jisprt
メッセージ：－
機能拡張：－

資料採取コマンドの操作性を向上させるため，オプションを追加した。
運用ガイド：13. jbs_log.bat，13. jbs_log.sh
メッセージ：－
機能拡張：－

次のJP1/Integrated Management用JP1イベントの説明を変更した。
00003A10
運用ガイド：14.3
メッセージ：－
機能拡張：－

次のメッセージを追加した。
KAIU083-E，KAIU989-E，KAJP1074-I，KAVA3647-E，KAVA3648-W，KAVA3650-I，KAVA3651-I
運用ガイド：－
メッセージ：1.2.1，1.2.4，1.4，1.5.1，1.5.4，1.5.12
機能拡張：－

次のメッセージを変更した。
KAVA3600-I，KAVA3601-I，KAVA3618-E，KAVA3619-I，KAVA3621-W，KAVA3629-I，KAVA3632-E，KAVA3633-E，KAVA3634-E，KAVA3635-W，KAVA3636-W，KAVA3637-I，KAVA3638-E，KAVA3639-E，KAVA3640-W，KAVA3641-W，KAVA3642-E
運用ガイド：－
メッセージ：1.5.4
機能拡張：－

ユーザーアプリケーションをC言語で記述できるようにした。
運用ガイド：付録A
メッセージ：－
機能拡張：2.1.1，2.2，2.3，付録B，付録B.1，付録C

（凡例）

運用ガイド：マニュアル「JP1/Base 運用ガイド」

メッセージ：マニュアル「JP1/Base メッセージ」

機能拡張：マニュアル「JP1/Base 機能拡張」

－：該当なし。

単なる誤字・脱字などはお断りなく訂正しました。

第4版では第3版の内容の一部を統合し，目次の構成を変更しました。第3版との対応は次のようになっています。

第3版
第4版

【第1編　概要】

1.3　関数を使用するための前提条件
2.1.1　前提条件

【第2編　運用】

2. 　独自イベントを発行する
2.1　機能の解説
2.2　独自イベントを発行する手順
3. 　JP1イベントを取得する
3.1　機能の解説
3.2　JP1イベントを取得する手順
2. 　JP1イベントを発行および取得する
2.1　機能の解説
2.2　JP1イベントを発行および取得する手順

はじめに

このマニュアルは，JP1/IMとJP1/Baseを使ってJP1/IMと連携するシステムを開発する際に必要な，JP1/Baseで実施する作業の手順について説明したものです。このマニュアルは各OS共通のマニュアルです。OSごとに差異がある場合は，本文中でそのつど内容を書き分けています。

なお，このマニュアルは，マニュアル「JP1 Version 7i JP1/Integrated Manager - Console 機能拡張編」からJP1/Baseの機能だけを抜粋して，マニュアル「JP1 Version 8 JP1/Base 機能拡張」として発行しました。

対象読者

このマニュアルは，JP1/IMとJP1/Baseを使ってJP1/IMと連携するシステムを開発するソフトウェア開発者の方を対象としています。また，JP1/IMおよびJP1/Baseの機能を理解していることを前提としています。

マニュアルの構成

このマニュアルは，次に示す編から構成されています。

第1編　概要

JP1/Baseの機能を拡張してできることの概要について説明しています。

第2編　運用

JP1/Baseの機能を拡張する方法について説明しています。

第3編　リファレンス

JP1/Baseの関数についてリファレンス形式で説明しています。

関連マニュアル

関連マニュアルを次に示します。必要に応じてお読みください。

JP1 Version 8 JP1/Base　運用ガイド（3020-3-K06）

JP1 Version 8 JP1/Base　メッセージ（3020-3-K07）

JP1 Version 8 JP1/Integrated Management - Manager　システム構築・運用ガイド（3020-3-K01）

JP1 Version 8 JP1/Integrated Management - Manager　リファレンス（3020-3-K02）

JP1 Version 8 JP1/Integrated Management - Manager　機能拡張（3020-3-K03）

JP1 Version 8 JP1/Integrated Management - Central Information Master　システム構築・運用ガイド（3020-3-K04）

JP1 Version 8 JP1/Integrated Management - Central Information Master　リファレンス（3020-3-K05）

JP1 Version 8 JP1/Integrated Management - Rule Operation　システム構築・運用ガイド（3020-3-K10）

JP1 Version 8 JP1/Integrated Management - Rule Operation　GUIリファレンス（3020-3-K11）

JP1/Baseマニュアルの使い分けについて

JP1/Baseのマニュアルは3冊に分かれています。次に示す表で各マニュアルの記載内容をご確認の上，利用目的に合わせてマニュアルをお読みください。

マニュアル名
記載内容

JP1/Base 運用ガイド

JP1/Baseの機能概要

各機能の設定

リファレンス

トラブルシューティング

付録

JP1/Base メッセージ
メッセージ

JP1/Base 機能拡張
JP1/IMと連携してJP1/Baseの機能を拡張する方法

このマニュアルでの表記

このマニュアルでは，日立製品およびそのほかの製品の名称を省略して表記しています。次に，製品の正式名称と，このマニュアルでの表記を示します。

このマニュアルでの表記 | 正式名称
AIX | AIX 5L | AIX 5L V5.2/V5.3
AIX | AIX V6.1
HNTRLib2 | Hitachi Network Objectplaza Trace Library 2
HP-UX | HP-UX（IPF） | HP-UX 11i V2 (IPF)
HP-UX（PA-RISC） | HP-UX 11i/11i V2(PA-RISC)
JP1/AJS | JP1/Automatic Job Scheduler
JP1/AJS2 | JP1/AJS2 - Agent | JP1/Automatic Job Management System 2 - Agent
JP1/AJS2 - Manager | JP1/Automatic Job Management System 2 - Manager
JP1/AJS2 - View | JP1/Automatic Job Management System 2 - View
JP1/AJS2 for Mainframe | JP1/AJS2 - Agent for Mainframe | JP1/Automatic Job Management System 2 - Agent for Mainframe
JP1/AJS2 - Manager for Mainframe | JP1/Automatic Job Management System 2 - Manager for Mainframe
JP1/AJS2 - View for Mainframe | JP1/Automatic Job Management System 2 - View for Mainframe
JP1/AJS - EE | JP1/Automatic Job Scheduler - Enterprise Edition
JP1/AOM | JP1/Automatic Operation Monitor
JP1/AOM - EE | JP1/Automatic Operation Monitor - Enterprise Edition
JP1/Cm2/OAA | JP1/Cm2/Operations Assist Agent
JP1/Cm2/OAM | JP1/Cm2/Operations Assist Manager
JP1/Cm2/SSO | JP1/Cm2/SNMP System Observer
JP1/Performance Management/SNMP System Observer
JP1/Integrated ManagementまたはJP1/IM | バージョン8製品
JP1/IM - Central Information Master | JP1/Integrated Management - Central Information Master
JP1/IM - Manager | JP1/Integrated Management - Manager
JP1/IM - Rule Operation | JP1/Integrated Management - Rule Operation
JP1/IM - View | JP1/Integrated Management - View
バージョン7以前の製品
JP1/IM - Central Console | JP1/Integrated Manager - Central Console
JP1/IM - Central Information Master | JP1/Integrated Manager - Central Information Master
JP1/IM - Central Scope | JP1/Integrated Manager - Central Scope
JP1/IM - View | JP1/Integrated Manager - View
JP1/NETM/Audit | JP1/NETM/Audit - Manager
JP1/NETM/DM | JP1/NETM/DM Client
JP1/NETM/DM Manager
JP1/OJE | JP1/Open Job Entry
JP1/SES | JP1/System Event Service
Linux | Linux 5（AMD/Intel 64） | Red Hat Enterprise Linux 5 (AMD/Intel 64)
Linux 5 Advanced Platform （AMD/Intel 64） | Red Hat Enterprise Linux 5 Advanced Platform (AMD/Intel 64)
Linux 5（IPF） | Red Hat Enterprise Linux 5 (IPF)
Linux 5 Advanced Platform （IPF） | Red Hat Enterprise Linux 5 Advanced Platform (IPF)
Linux 5（x86） | Red Hat Enterprise Linux 5 (x86)
Linux 5 Advanced Platform （x86） | Red Hat Enterprise Linux 5 Advanced Platform (x86)
Linux AS 4（AMD64 & Intel EM64T） | Red Hat Enterprise Linux AS 4 (AMD64 & Intel EM64T)
Linux AS 4（IPF） | Red Hat Enterprise Linux AS 4 (IPF)
Linux AS 4（x86） | Red Hat Enterprise Linux AS 4 (x86)
Linux ES 4（AMD64 & Intel EM64T） | Red Hat Enterprise Linux ES 4 (AMD64 & Intel EM64T)
Linux ES 4（x86） | Red Hat Enterprise Linux ES 4 (x86)
Microsoft Cluster Server | Microsoft(R) Cluster Server
Microsoft Internet Explorer | Microsoft(R) Internet Explorer(R)
NNM | HP OpenView NNM | hp OpenView network node manager
hp OpenView network node manager Starter Edition
JP1/Cm2/NNM | JP1/Cm2/Network Node Manager
JP1/Cm2/Network Node Manager Starter Edition 250
JP1/Cm2/Network Node Manager Starter Edition Enterprise
Solaris | Solaris | Solaris 9/10
Windows Server 2003 | Windows Server 2003 | Microsoft(R) Windows Server(R) 2003, Datacenter Edition
Microsoft(R) Windows Server(R) 2003, Enterprise Edition
Microsoft(R) Windows Server(R) 2003, Standard Edition
Windows Server 2003（IPF） | Microsoft(R) Windows Server(R) 2003, Datacenter Edition for Itanium-based Systems
Microsoft(R) Windows Server(R) 2003, Enterprise Edition for Itanium-based Systems
Windows Server 2003（x64） | Microsoft(R) Windows Server(R) 2003, Datacenter x64 Edition
Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition
Microsoft(R) Windows Server(R) 2003, Standard x64 Edition
Windows Server 2008 | Windows Server 2008 | Microsoft(R) Windows Server(R) 2008 Enterprise
Microsoft(R) Windows Server(R) 2008 Standard
Windows Server 2008（IPF） | Microsoft(R) Windows Server(R) 2008 for Itanium-based Systems
Windows Vista | Microsoft(R) Windows Vista(R) Business
Microsoft(R) Windows Vista(R) Enterprise
Microsoft(R) Windows Vista(R) Ultimate
Windows XP Professional | Microsoft(R) Windows(R) XP Professional Operating System

Windows Server 2003，Windows Server 2008，Windows Vista，およびWindows XP Professionalを総称してWindowsと表記することがあります。

AIX，HP-UX，Linux，およびSolarisを総称してUNIXと表記することがあります。

Linux 5（AMD/Intel 64）およびLinux 5 Advanced Platform （AMD/Intel 64）を総称してLinux 5（AMD/Intel 64）と表記することがあります。

Linux 5（IPF）およびLinux 5 Advanced Platform （IPF）を総称してLinux 5（IPF）と表記することがあります。

Linux 5（x86）およびLinux 5 Advanced Platform （x86）を総称してLinux 5（x86）と表記することがあります。

プログラムプロダクトの実行中にメッセージなどでプログラムプロダクト名称が表示される場合も略称を使用しています。

このマニュアルで使用する英略語

このマニュアルで使用する英略語を次に示します。

英略語 | 正式名称
AMD | Advanced Micro Devices
API | Application Programming Interface
CSV | Comma Separated Value
DB | Database
DNS | Domain Name System
EUC | Extended Unix Code
FD | Floppy Disk
FQDN | Fully Qualified Domain Name
FTP | File Transfer Protocol
GUI | Graphical User Interface
HTML | Hyper Text Markup Language
IP | Internet Protocol
IPF | Itanium(R) Processor Family
ISAM | Indexed Sequential Access Method
JIS | Japanese Industrial Standards
LAN | Local Area Network
LDAP | Lightweight Directory Access Protocol
NAT | Network Address Translator
NIC | Network Interface Card
NTP | Network Time Protocol
OS | Operating System
OU | Organization Unit
POSIX | Portable Operating System Interface for UNIX
RFC | Request For Comments
SNMP | Simple Network Management Protocol
SSL | Secure Socket Layer
TCP/IP | Transmission Control Protocol/Internet Protocol
UAC | User Account Control
UTC | Universal Time Coordinated
UTF | UCS Transformation Format
WWW | World Wide Web

バージョン8での製品体系変更について

バージョン8では，JP1/IMの製品体系に次の変更がありました。

JP1/IMの製品体系

JP1/IM - Central Console，JP1/IM - Central Scopeが統合されてJP1/IM - Managerになりました。

JP1/IM - Central Console 10 Nodeが廃止されました。

JP1/IM - Central Console アップグレードが廃止されました。

JP1/IM - Rule Operationが追加されました。詳細については，マニュアル「JP1/Integrated Management - RuleOperation システム構築・運用ガイド」を参照してください。

このマニュアルで使用する記号

このマニュアルで使用する記号を次に示します。

記号
意味

［　］
メニュー項目，ダイアログボックス，ダイアログボックスのボタンなどを示す。
（例）
［ファイル］－［新規作成］を選択する。
メニューバーの［ファイル］を選んで，プルダウンメニューの［新規作成］を選択することを示す。

コマンドの文法で使用する記号

コマンドとパラメーターの説明で使用する記号を，次のように定義します。

記号
意味

｜
(ストローク)
複数の項目に対し，項目間の区切りを示し，「または」の意味を示す。
（例）
「A｜B｜C」は，「A，BまたはC」を示す。

｛　｝
この記号で囲まれている複数の項目の中から，必ず1組の項目を選択する。項目の区切りは｜で示す。
（例）
｛A｜B｜C｝は「A，BまたはCのどれかを指定する」ことを示す。

[　]
この記号で囲まれている項目は任意に指定できる（省略してもよい）。
複数の項目が記述されている場合には，すべてを省略するか，どれか一つを選択する。
（例）
[A]は「何も指定しない」か「Aを指定する」ことを示す。
[B｜C]は「何も指定しない」か「BまたはCを指定する」ことを示す。

…
(点線)
この記号の直前に示された項目を繰り返して複数個，指定できる。
（例）
「A，B，…」は「Aの後にBを必要な個数だけ指定する」ことを示す。

（　）
この記号で囲まれている項目をグループ化したことを示す。
（例）
（A|B）は，AまたはBを１個以上指定することを示す。

△
空白を空けることを意味する。
（例）
AAA△BBBは「AAA」と「BBB」の間に１個の空白を入れることを示す。

¥
上記の文字を指定値として使用する場合には，「¥」を前に付けて表現する。
（例）
「|」の文字を指定値として使いたい場合には「¥|」と表記する。

図中で使用する記号

このマニュアルの図中で使用する記号を，次のように定義します。

Windows版JP1/Baseのインストール先フォルダの表記

このマニュアルでは，Windows版JP1/Baseのインストール先フォルダを次のように表記しています。

製品名 | インストール先フォルダの表記 | デフォルトインストール先フォルダ※
JP1/Base | Baseパス | システムドライブ:¥Program Files¥HITACHI¥JP1Base

注※

各製品をデフォルトのままインストールした場合のインストール先フォルダを表しています。

（例）

ソースファイルのコンパイル時に必要なヘッダーファイル，JevApi.hのフルパス表記は，マニュアルでは次のようになります。

　Baseパス¥include¥JevApi.h

デフォルトインストールの場合，実際にはシステムドライブ:¥Program Files¥HITACHI¥JP1Base¥include¥JevApi.hとなります。

このマニュアルで使用する「Administrators権限」について

このマニュアルで表記している「Administrators権限」とは，ローカルPCに対するAdministrators権限です。ローカルPCに対してAdministrators権限を持つユーザーであれば，ローカルユーザー，ドメインユーザー，およびActive Directory環境で動作に違いはありません。

常用漢字以外の漢字の使用について

このマニュアルでは，常用漢字を使用することを基本としていますが，次に示す用語については，常用漢字以外の漢字を使用しています。

個所（かしょ）

桁（けた）

閾値（しきいち）

同梱（どうこん）

貼り付ける（はりつける）

必須（ひっす）

閉塞（へいそく）

KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

1.　機能拡張の概要

この章では，JP1/Baseの機能を拡張してできることの概要と，JP1/Baseが提供する関数のサンプルについて説明します。

＜この章の構成＞

1.1　特長

1.2　関数のサンプルソースファイルの提供

1.1　特長

JP1/Baseの関数や定義ファイルを利用することによって，次のことができるようになります。

ユーザー独自のJP1イベントを発行する

システムで発生する事象を，JP1/Baseでユーザー独自のイベント属性を付加したJP1イベントとして定義して，ユーザーアプリケーションから発行するように設定できます。ユーザーが定義するこのようなJP1イベントを，独自イベントと呼びます。独自イベントの属性は自由に定義できます。

独自イベントを発行できるようにするには，JP1イベント発行関数を使用します。JP1イベント発行関数を使用して独自イベントを発行する方法については，「2.　JP1イベントを発行および取得する」を参照してください。

なお，独自イベントに付加したユーザー独自のイベント属性をJP1/IM - Viewで表示するには，ユーザー独自のイベント属性を記述した定義ファイルを作成する必要があります。詳細については，マニュアル「JP1/Integrated Management - Manager　機能拡張」を参照してください。

JP1イベントを取得する

JP1/Baseのイベントデータベースに登録されたJP1イベントを，ほかのJP1プログラムやユーザーアプリケーションが直接取得するように設定できます。ユーザーアプリケーションから独自イベントをJP1/Baseに発行し，JP1イベントとしてイベントデータベースに登録した後，そのJP1イベントを別のユーザーアプリケーションで利用するなどの運用ができます。

JP1イベントを取得するには，JP1イベント取得関数を使用します。

JP1イベント取得関数を使用してJP1イベントを取得する方法については，「2.　JP1イベントを発行および取得する」を参照してください。

JP1/SES形式のイベントに拡張属性やメッセージを追加する

JP1/SES形式のイベントとは，バージョン5以前のJP1シリーズのプログラムであるJP1/SESで処理されていたイベントのことです。JP1/SES形式のイベントには拡張属性がないため，JP1/IMの［イベントコンソール］画面に表示できません。しかし，JP1/BaseでJP1/SES形式のイベントに拡張属性を追加することによって，JP1/IMの［イベントコンソール］画面上でJP1イベントとして監視できるようになります。また，拡張属性とともにメッセージも追加できます。

イベントに拡張属性やメッセージを追加するには，定義ファイルを使用します。

定義ファイルを使用してJP1/SES形式のイベントに拡張属性やメッセージを追加する方法については，「3.　JP1/SES形式のイベントを変換する」を参照してください。

1.2　関数のサンプルソースファイルの提供

JP1/Baseは，関数のサンプルソースファイルを提供しています。サンプルソースファイルを簡単に編集してコンパイルすることによって，自社業務に合わせてJP1イベントを発行したり，JP1イベントを取得したりできます。なお，サンプルソースファイルの詳細については，「付録B　サンプルソースファイル」を参照してください。

2.　JP1イベントを発行および取得する

この章では，独自のイベント属性を付加したJP1イベントをユーザーアプリケーションから直接発行する機能およびJP1イベントをほかのJP1プログラムやユーザーアプリケーションで直接取得する機能の概要，前提条件，作業手順について説明します。

＜この章の構成＞

2.1　機能の解説

2.2　JP1イベントを発行および取得する手順

2.3　旧バージョンから移行する

2.1　機能の解説

JP1イベントを発行する

JP1/IMでは，アプリケーション固有のログファイル，SNMPトラップ，WindowsのイベントログなどをJP1イベントに変換してイベント監視ができます。しかし，個々のアプリケーションのイベント属性値などを独自にきめ細かく設定することはできません。

JP1/BaseのJP1イベント発行関数を使用することによって，ユーザー独自のイベント属性（拡張属性の固有情報）を付加した独自イベントをユーザーアプリケーションから直接，発行できるようになります。

JP1/IMでは，定義ファイルを作成することによって，独自イベントのユーザー独自のイベント属性（拡張属性の固有情報）を［イベント詳細］画面に表示できます。

JP1（独自）イベントの発行からユーザー独自のイベント属性の表示までの概要を次の図に示します。

図2-1　JP1（独自）イベントの発行からユーザー独自のイベント属性の表示までの概要

JP1イベントを取得する

JP1/Baseでは，システム内で発生するさまざまな事象をJP1イベントとしてイベントデータベースに登録，管理しています。しかし，ユーザーアプリケーションでは，このJP1イベントを直接利用することはできません。

JP1/BaseのJP1イベント取得関数を利用することによって，ユーザーアプリケーションが，JP1/BaseのイベントデータベースからJP1イベントを直接取得し，利用できるようになります。

JP1イベントの取得の概要を次の図に示します。

図2-2　JP1イベントの取得

＜この節の構成＞

2.1.1　前提条件

2.1.1　前提条件

JP1/Baseが提供する関数（JP1イベント発行関数，JP1イベント取得関数）を使用するための前提条件を次に示します。

関数（JP1イベント発行関数，JP1イベント取得関数）を使用したソースファイルをコンパイルするための環境
次のものが必要です。

各OS用のJP1/Base

各OS用のコンパイラー

＜この項の構成＞

(1)　JP1/Baseのインストール

(2)　コンパイラーのインストール

(1)　JP1/Baseのインストール

JP1/Baseが提供する関数を使用したソースファイルをコンパイルおよび実行するには，JP1/Baseが必要です。これは，コンパイルおよび実行時にJP1/Baseが提供するライブラリーおよびヘッダーファイルを利用するためです。コンパイルおよび実行をするマシンに，あらかじめJP1/Baseをインストールしておいてください。

(2)　コンパイラーのインストール

JP1/Baseが提供する関数を使用したソースファイルをコンパイルするには，次の表に示すどれかのコンパイラーが必要です。コンパイル作業をするマシンに，あらかじめコンパイラーをインストールしておいてください。

表2-1　コンパイラーの種類

OS
コンパイラー

Windows XP Professional
Windows Vista
Windows Server 2003
Windows Server 2008
Visual C++ .NET 2003
Visual C++ 2005

Windows Server 2003(IPF)
Windows Server 2008(IPF)
Microsoft Platform SDK February 2003

HP-UX (PA-RISC)
HP aC++ V3（B3910B A.03.65以降）
HP C Compiler B.11.11.28706.GP(HP92453-01)以降

HP-UX (IPF)
HP C Compiler, HP aC++ V6（B3910B A.06.05以降）

Solaris
Sun Studio 10 C/C++ 5.7 Compiler

AIX
XL C/C++ Enterprise Edition V7.0 for AIX
XL C/C++ Enterprise Edition V8.0 for AIX
XL C/C++ Enterprise Edition V9.0 for AIX

Linux (x86, IPF)
gcc version 3.4.3
gcc version 3.4.5
gcc version 4.1.2

2.2　JP1イベントを発行および取得する手順

JP1イベントを発行および取得するための作業手順を説明します。また，それぞれの手順について，JP1イベント発行関数やJP1イベント取得関数を利用したコーディング例を示します。

＜この節の構成＞

2.2.1　JP1イベントを発行する手順

2.2.2　JP1イベントを取得する手順

2.2.3　ソースファイルをコンパイルする

2.2.1　JP1イベントを発行する手順

JP1イベントを発行するための作業手順を示します。

作業の流れは次のとおりです。

発行するJP1イベントの種類とイベント属性を決める

JP1イベント発行関数を使用してコーディングする

ソースファイルをコンパイルする

なお，JP1イベントに付加したユーザー独自のイベント属性をJP1/IM - Viewに表示できるようにするには，このあとJP1/IMで，JP1/IM - Managerがインストールされたマシン上に，次の定義ファイルを作成する必要があります。

イベント拡張属性定義ファイル

オブジェクトタイプ定義ファイル

JP1/IMでこれらの定義ファイルを作成する方法については，マニュアル「JP1/Integrated Management - Manager 機能拡張」を参照してください。

＜この項の構成＞

(1)　発行するJP1イベントの種類とイベント属性を決める

(2)　JP1イベント発行関数を使用してコーディングする

(1)　発行するJP1イベントの種類とイベント属性を決める

JP1（独自）イベントを発行するためには，まず，どんな事象をJP1イベントとして発行するのかを決めます。JP1/Baseのイベントサービスでは，発行するJP1イベントの数によって性能劣化が発生します。このため，JP1（独自）イベントはJP1/IMでシステム監視をするために必要なJP1イベントだけに絞り込む必要があります。

次に，イベント属性をどのように設定するかを決めます。イベント属性を決めるときは，JP1/IMでイベント監視をする際にそのアプリケーションの情報として何が必要かを考えます。アプリケーション単位で，発行するすべてのJP1（独自）イベントのイベント属性をあらかじめ決めておきます。

JP1イベントの属性値は，JP1/IMで自動アクション機能およびモニター画面呼び出しの際の引数として使用できます。次の例で記述するイベント属性の詳細については，「付録A　JP1イベントの属性の設定基準」を参照してください。

ここでは，Windows上で動作する「SAMPLE」という名称のアプリケーションについて，開始イベントと異常終了イベントを発行する例について説明します。（ ）内は，JP1イベント発行関数の引数名です。

発行するJP1イベントの種類

アプリケーションの開始時にJP1イベントを発行する（開始イベント）
イベントID（BaseID）：0x00000001
メッセージ（message）：「SAMPLEアプリケーションを開始します。」

アプリケーションの異常終了時にJP1イベントを発行する（異常終了イベント）
イベントID（BaseID）：0x00000002
メッセージ（message）：「SAMPLEアプリケーションが異常終了しました。」

イベント属性定義（拡張属性(extattrs)）：開始イベント

SAMPLEアプリケーションの開始イベントには，次の属性を定義します。

表2-2　開始イベントの属性

属性の種別
項目
属性名
内容

基本属性
イベントID
－
0x00000001

メッセージ
－
「Starts the SAMPLE application.」

拡張属性
(共通情報)
重大度
SEVERITY
Notice

ユーザー名
USER_NAME
SAMPLE_USER

プロダクト名
PRODUCT_NAME
/COMPANY/APP1/SAMPLE_PRODUCT
（プロダクトの名称）

オブジェクトタイプ
OBJECT_TYPE
SAMPLE

オブジェクト名
OBJECT_NAME
SAMPLE_NAME

登録名タイプ
ROOT_OBJECT_TYPE
ROOT_SAMPLE

登録名
ROOT_OBJECT_NAME
ROOT_SAMPLE_NAME

オブジェクトID
OBJECT_ID
SAMPLE_ID

事象種別
OCCURRENCE
START

開始時刻
START_TIME
SAMPLEアプリケーションの開始時刻。UTC 1970年1月1日 00:00:00からの秒数。

プラットフォーム種別
PLATFORM
NT

バージョン情報
ACTION_VERSION
0600

拡張属性
(固有情報)
SAMPLE共通属性１
COMMON_ATTR1
NATIVE

SAMPLE共通属性2
COMMON_ATTR2
TRUE

SAMPLE開始属性1
START_ATTR1
SAMPLE1

SAMPLE開始属性2
START_ATTR2
SAMPLE2

イベント属性定義（拡張属性(extattrs)）：異常終了イベント

SAMPLEアプリケーションの異常終了イベントには，次の属性を定義します。

表2-3　異常終了イベントの属性

属性の種別
項目
属性名
内容

基本属性
イベントID
－
0x00000002

メッセージ
－
「The SAMPLE application terminated abnormally.」

拡張属性
(共通情報)
重大度
SEVERITY
Error

ユーザー名
USER_NAME
SAMPLE_USER

プロダクト名
PRODUCT_NAME
/COMPANY/APP1/SAMPLE_PRODUCT
（プロダクトの名称）

オブジェクトタイプ
OBJECT_TYPE
SAMPLE

オブジェクト名
OBJECT_NAME
SAMPLE_NAME

登録名タイプ
ROOT_OBJECT_TYPE
ROOT_SAMPLE

登録名
ROOT_OBJECT_NAME
ROOT_SAMPLE_NAME

オブジェクトID
OBJECT_ID
SAMPLE_ID

事象種別
OCCURRENCE
END

終了時刻
END_TIME
SAMPLEアプリケーションの終了時刻。UTC 1970年1月1日 00:00:00からの秒数。

終了コード
RESULT_CODE
SAMPLEアプリケーション終了時の終了コード

プラットフォーム種別
PLATFORM
NT

バージョン情報
ACTION_VERSION
0600

拡張属性
(固有情報)
SAMPLE共通属性１
COMMON_ATTR1
NATIVE

SAMPLE共通属性2
COMMON_ATTR2
TRUE

SAMPLE終了属性1
END_ATTR1
SAMPLE1

SAMPLE終了属性2
END_ATTR2
SAMPLE2

(2)　JP1イベント発行関数を使用してコーディングする

前の項で説明したSAMPLEアプリケーションで，開始イベントを発行する場合のコーディング例を次に示します。

#include <stdio.h>
#include <time.h>
#include "JevApi.h"

int regist_start_event()
{
   int rc;                    /* リターンコード */
   long status = 0;           /* 詳細エラーコード */
   const char* server;        /* イベントサーバ名 */
   long baseID;               /* イベントID */
   const char* message;       /* メッセージ */
   char starttime[32];
   const char* extattrs[16];  /* 拡張属性を格納するための配列 */

   /* 登録先イベントサーバ名を設定します */
   server = NULL;

   /* イベントIDを設定します */
   baseID = 0x00000001;

   /* メッセージを設定します */
   message = "Starts the SAMPLE application.";

   /* 拡張属性を設定します */
   extattrs[0]  = "SEVERITY=Notice";
   extattrs[1]  = "USER_NAME=SAMPLE_USER";
   extattrs[2]  = "PRODUCT_NAME=/COMPANY/APP1/SAMPLE_PRODUCT";
   extattrs[3]  = "OBJECT_TYPE=SAMPLE";
   extattrs[4]  = "OBJECT_NAME=SAMPLE_NAME";
   extattrs[5]  = "OBJECT_ROOT_TYPE=ROOT_SAMPLE";
   extattrs[6]  = "OBJECT_ROOT_NAME=ROOT_SAMPLE_NAME";
   extattrs[7]  = "OBJECT_ID=SAMPLE_ID";
   extattrs[8]  = "OCCURRENCE=START";
   sprintf(starttime, "START_TIME=%ld", time(NULL));
   extattrs[9]  = starttime;
   extattrs[10] = "PLATFORM=NT";
   extattrs[11] = "VERSION=0600";
   extattrs[12] = "COMMON_ATTR1=NATIVE";
   extattrs[13] = "COMMON_ATTR2=TRUE";
   extattrs[14] = "START_ATTR1=SAMPLE1";
   extattrs[15] = "START_ATTR2=SAMPLE2";

   /* JP1イベントを登録します */
   rc = JevRegistEvent(&status,
                       server,
                       baseID,
                       message,
                       extattrs,
                       16);
   if(rc < 0) {
       fprintf(stderr,
               "JevRegistEvent() failed. status = %ld¥n",
                status);
       return -1;
   }

   return 0;
}

2.2.2　JP1イベントを取得する手順

JP1イベントを取得するための作業手順を示します。

作業の流れは次のとおりです。

取得するJP1イベントの種類とイベント属性を決める

取得するJP1イベントをイベント取得フィルターによって指定する

JP1イベント取得関数を使用してコーディングする

ソースファイルをコンパイルする

＜この項の構成＞

(1)　取得するJP1イベントの種類とイベント属性を決める

(2)　取得するJP1イベントをイベント取得フィルターによって指定する

(3)　JP1イベント取得関数を使用してコーディングする

(1)　取得するJP1イベントの種類とイベント属性を決める

JP1/Baseでは，さまざまな種類の事象がJP1イベントとしてイベントデータベースに登録されます。まず，このイベントデータベースの中からどのような種類のJP1イベントを取得するかを決めます。

次に，そのJP1イベントからどのイベント属性を取得すればよいかを決めます。取得するイベント属性を決めるときは，そのアプリケーションの情報として何が必要かを考えます。アプリケーション単位で，取得するすべてのJP1イベントのイベント属性をあらかじめ決めておきます。

ここでは，「2.2.1(1)　発行するJP1イベントの種類とイベント属性を決める」でJP1イベントとして発行したSAMPLEアプリケーションの「開始イベント」の取得を例に説明します。

(2)　取得するJP1イベントをイベント取得フィルターによって指定する

必要なJP1イベントだけを取得するには，イベント取得フィルターを定義する必要があります。イベント取得フィルターの文法の詳細については，マニュアル「JP1/Base 運用ガイド」の，フィルターの文法の項を参照してください。ここでは，「2.2.1(1)　発行するJP1イベントの種類とイベント属性を決める」で示したSAMPLEアプリケーションの「開始イベント」を取得するためのイベント取得フィルターの例を次に示します。

まず，「開始イベント」を取得するために，次に示す条件を付けたイベント取得フィルターを作成することを検討します。

イベントID：0x00000001

拡張属性「SEVERITY」の値：Notice

拡張属性「PRODUCT_NAME」の値：/COMPANY/APP1/SAMPLE_PRODUCT

上記条件に合致するJP1イベントを取得対象にすることで，「開始イベント」が取得できるようになります。上記条件に合致するイベント取得フィルターの例を次に示します。

B.ID IN 00000001
E.SEVERITY IN Notice
E.PRODUCT_NAME IN /COMPANY/APP1/ SAMPLE_PRODUCT

注意事項

イベント取得フィルターの条件として日本語文字列を指定する場合，その文字コードは，JP1イベント取得関数実行時のロケール情報（環境変数LANGなど）と合致させてください。イベント取得フィルターの条件として指定した文字列の文字コードとJP1イベント取得関数実行時のロケール情報（環境変数LANGなど）が異なる場合，JP１イベントは取得できません。

イベント取得フィルターに除外条件を定義するときは，08-50以降のイベントサーバに接続してください。08-11以前のイベントサーバに接続するとエラー（JEV_S_FILTER_ERROR）になります。

(3)　JP1イベント取得関数を使用してコーディングする

ほかのJP1プログラムやユーザーアプリケーションがJP1イベントを取得する場合，JP1イベント取得関数を利用します。JP1/BaseのイベントデータベースからJP1イベントを取得するには，次の順序でJP1イベント取得関数を発行します。

JP1イベントの取得開始を要求する関数を発行する
イベントサーバに対して関数（JevGetOpen）を使ってJP1イベントの取得開始を要求し，イベントサーバに接続します。なお，取得開始を要求するユーザーは，あらかじめJP1/Baseのイベントサーバ設定（conf）ファイルのusersパラメーターで設定する必要があります。

JP1イベントの取得を要求する関数を発行する
さまざまな関数を使ってJP1イベントを取得したり，JP1イベントに設定されたさまざまなイベント属性を取得したりします。

JP1イベントの取得終了を通知する関数を発行する
イベントサーバに対して関数（JevGetClose）を使ってJP1イベントの取得終了を通知し，イベントサーバとの接続を切断します。

JP1イベント取得関数の詳細については，「4.　関数」を参照してください。また，取得できるイベント属性がどのようなものであるかについては，「付録A　JP1イベントの属性の設定基準」を参照してください。

ここでは，「2.2.1(1)　発行するJP1イベントの種類とイベント属性を決める」に示したSAMPLEアプリケーションの「開始イベント」を取得するためのコーディング例を次に示します。

#include <stdio.h>
#include <string.h>
#include "JevApi.h"

int get_start_event()
{
   int rc;               /* リターンコード */
   long position;        /* イベントDB内の通し番号 */
   long status;          /* 状態コードアドレス */
   char filter[256];     /* フィルター文バッファー */
   const char *server;   /* イベントサーバ名 */
   const char *message;  /* メッセージへのポインターのアドレス */
   const char *name;     /* 拡張属性名へのポインターのアドレス */
   const char *value;    /* 拡張属性値へのポインターのアドレス */
   JEVGETKEY key;        /* JP1イベント取得用ハンドル */
   JP1EVENT event;       /* JP1イベントアクセス用ハンドル */
   JEVACCESSTYPE access; /* JP1イベントが存在しない場合の動作 */

   /* 必要なJP1イベントを取得するためのフィルター文を設定します */
   strcpy(filter, "B.ID IN 00000001¥n");
   strcat(filter, "E.SEVERITY IN Notice¥n");
   strcat(filter,
          "E.PRODUCT_NAME IN /COMPANY/APP1/SAMPLE_PRODUCT");

   /* 物理ホストのイベントサーバに接続します */
   status = 0;
   /* 接続先は物理ホストのイベントサーバ */
   server = NULL;
   /* 取得の基点はイベントDB内の通し番号0以降から */
   position = 0;
   key = JevGetOpen(&status, server, filter, position);
   if(key == NULL){
       fprintf(stderr,
               "JevGetOpen() failed. Status = %ld¥n",
               status);
       return -1;
   }

   /* フィルターに合致するJP1イベントを全件取得します */
   while(1) {
       status = 0;
       /* 該当するJP1イベントがなければエラーリターン */
       access = JEVGET_NOWAIT;
       event = JevGetEvent(&status, key, access);
       if(event == NULL){
           if(status == JEV_S_NO_EVENT) {
               /* 該当するJP1イベントはこれ以上存在しません */
               break;
           }
           else {
               /* JP1イベント取得時にエラーが発生しました */
               fprintf(stderr,
                       "JevGetEvent() failed. Status = %ld¥n",
                       status);
               JevGetClose(&status, key);
               return -1;
           }
       }

       /* メッセージを取得します */
       status = 0;
       rc = JevGetMessage(&status, event, &message);
       if(rc < 0){
           fprintf(stderr,
                   "JevGetMessage() failed. Status = %ld¥n",
                   status);
           JevFreeEvent(&status, event);
           JevGetClose(&status, key);
           return -1;
       }
       else{
           printf("JevGetMessage() message = %s¥n", message);
       }

       /* (最初の)拡張属性を取得します */
       status = 0;
       rc = JevGetFirstExtAttr(&status, event, &name, &value);
       if(rc < 0){
           fprintf(stderr,
                   "JevGetFirstExtAttr() failed. Status = %ld¥n",
                   status);
           JevFreeEvent(&status, event);
           JevGetClose(&status, key);
           return -1;
       }
       else{
           printf("JevGetFirstExtAttr() name = %s¥n", name);
           printf("JevGetFirstExtAttr() value = %s¥n", value);
       }

       /* (継続の)拡張属性を取得します */
       while(1) {
           status = 0;
           rc = JevGetNextExtAttr(&status, event, &name, &value);
           if(rc < 0 ){
               if(status == JEV_S_EXTATTR_EOD) {
               /* 拡張属性はこれ以上存在しません */
                   break;
               }
               else {
                   /* 拡張属性の取得でエラーが発生しました */
                   fprintf(stderr,
                           "JevGetNextExtAttr() failed.
                           Status = %ld¥n", status);
                   JevFreeEvent(&status, event);
                   JevGetClose(&status, key);
                   return -1;
               }
           }
           else {
               printf("JevGetNextExtAttr() name = %s¥n", name);
               printf("JevGetNextExtAttr() value = %s¥n", value);
           }
       }

       /* 取得したJP1イベント用メモリーを解放します */
       rc = JevFreeEvent(&status, event);
       if(rc < 0){
           fprintf(stderr,
                   "JevFreeEvent() failed. Status = %ld¥n",
                   status);
           JevGetClose(&status, key);
           return -1;
       }
   }

   /* イベントサーバから切断します */
   rc = JevGetClose(&status, key);
   if(rc < 0){
       fprintf(stderr,
               "JevGetClose() failed. Status = %ld¥n",
               status);
       return -1;
   }

   return 0;
}

2.2.3　ソースファイルをコンパイルする

JP1イベントを発行および取得するには，コーディングしたソースファイルをコンパイル・リンクする必要があります。

[コンパイル時に必要なファイル]

ヘッダーファイル（JP1/Baseインストール時にインストールされます）

CまたはC++で作成したソースファイル（ユーザーが作成するものです）

ヘッダーファイルの格納先は次のとおりです。

Windows：Baseパス¥include¥JevApi.h

UNIX：/opt/jp1base/include/JevApi.h

[リンク時に必要なファイル]

ライブラリー（JP1/Baseインストール時にインストールされます）

必要となるライブラリーは，各OS，コンパイラーによって異なるため，注意が必要です。各OSで必要なライブラリーを次の表に示します。

表2-4　各OSで必要なライブラリー

OS
必要なライブラリー

Windows XP Professional
Windows Vista
Windows Server 2003
Windows Server 2008
Baseパス¥lib¥libJevApiA.lib（32bitマルチスレッド用）

Windows Server 2003(IPF)
Windows Server 2008(IPF)
Baseパス¥lib¥libJevApiA.lib（64bitマルチスレッド用）

HP-UX (PA-RISC)
Solaris
AIX
Linux (x86)
/opt/jp1base/lib/libJevApiAst.a（32bitシングルスレッド用）
/opt/jp1base/lib/libJevApiAmt.a（32bitマルチスレッド用）

HP-UX (IPF)
/opt/jp1base/lib/libJevApiAst32.a（32bitシングルスレッド用）
/opt/jp1base/lib/libJevApiAmt32.a（32bitマルチスレッド用）
/opt/jp1base/lib/libJevApiAst64.a（64bitシングルスレッド用）
/opt/jp1base/lib/libJevApiAmt64.a（64bitマルチスレッド用）

Linux (IPF)
/opt/jp1base/lib/libJevApiAst.a（64bitシングルスレッド用）
/opt/jp1base/lib/libJevApiAmt.a（64bitマルチスレッド用）

各OSでのコンパイル，リンク時に指定するオプションを次の表に示します。

注意事項

WindowsのVisual Studio統合開発環境（GUI）上でコンパイルやリンクをする場合，次の表に示すコンパイルオプションやリンクオプションから，該当するオプションを使用して環境を設定してください。

表2-5　コンパイルオプション

OS
コンパイルオプション

Windows XP Professional
Windows Vista
Windows Server 2003
Windows Server 2008
（32bitマルチスレッド）
/MD /I "Baseパス¥include"

Windows Server 2003(IPF)
Windows Server 2008(IPF)
（64bitマルチスレッド）
/MD /G2 /I "Baseパス¥include"

HP-UX (PA-RISC)
（32bitシングルスレッド）
-Aa -I/opt/jp1base/include

HP-UX (PA-RISC)
（32bitマルチスレッド）
-Aa -D_REENTRANT -D_THREAD_SAFE -I/opt/jp1base/include

HP-UX (IPF)
（32bitシングルスレッド）
-Aa -I/opt/jp1base/include

HP-UX (IPF)
（32bitマルチスレッド）
-Aa -mt -I/opt/jp1base/include

HP-UX (IPF)
（64bitシングルスレッド）
+DD64 -Aa -I/opt/jp1base/include

HP-UX (IPF)
（64bitマルチスレッド）
+DD64 -Aa -mt -I/opt/jp1base/include

Solaris
（32bitシングルスレッド）
-I/opt/jp1base/include

Solaris
（32bitマルチスレッド）
-mt -D_THREAD_SAFE -I/opt/jp1base/include

AIX
（32bitシングルスレッド）
-I/opt/jp1base/include

AIX
（32bitマルチスレッド）
-D_REENTRANT -D_THREAD_SAFE -I/opt/jp1base/include

Linux (x86)
（32bitシングルスレッド）
-I/opt/jp1base/include

Linux (x86)
（32bitマルチスレッド）
-D_REENTRANT -D_THREAD_SAFE -I/opt/jp1base/include

Linux (IPF)
（64bitシングルスレッド）
-I/opt/jp1base/include

Linux (IPF)
（64bitマルチスレッド）
-D_REENTRANT -D_THREAD_SAFE -I/opt/jp1base/include

注意事項

HP-UXの-Aaオプションは，Cコンパイラー（cc）でコンパイルする場合だけ必要です。-Aeオプションに置き換えられますが，-Acオプションは指定しないでください。なお，C++コンパイラー（aCC）を使用する場合は省略できます。

表2-6　リンクオプション

OS
リンクオプション

Windows XP Professional
Windows Vista
Windows Server 2003
Windows Server 2008
（32bitマルチスレッド）
"Baseパス¥lib¥libJevApiA.lib"

Windows Server 2003(IPF)
Windows Server 2008(IPF)
（64bitマルチスレッド）
"Baseパス¥lib¥libJevApiA.lib"

HP-UX (PA-RISC)
（32bitシングルスレッド）
/opt/jp1base/lib/libJevApiAst.a

HP-UX (PA-RISC)
（32bitマルチスレッド）
/opt/jp1base/lib/libJevApiAmt.a -lpthread

HP-UX (IPF)
（32bitシングルスレッド）
/opt/jp1base/lib/libJevApiAst32.a

HP-UX (IPF)
（32bitマルチスレッド）
-mt /opt/jp1base/lib/libJevApiAmt32.a

HP-UX (IPF)
（64bitシングルスレッド）
+DD64 /opt/jp1base/lib/libJevApiAst64.a

HP-UX (IPF)
（64bitマルチスレッド）
+DD64 -mt /opt/jp1base/lib/libJevApiAmt64.a

Solaris
（32bitシングルスレッド）
/opt/jp1base/lib/libJevApiAst.a -ldl

Solaris
（32bitマルチスレッド）
/opt/jp1base/lib/libJevApiAmt.a -ldl -lpthread

AIX
（32bitシングルスレッド）
/opt/jp1base/lib/libJevApiAst.a -ldl

AIX
（32bitマルチスレッド）
/opt/jp1base/lib/libJevApiAmt.a -ldl -lpthread

Linux (x86)
（32bitシングルスレッド）
/opt/jp1base/lib/libJevApiAst.a -ldl

Linux (x86)
（32bitマルチスレッド）
/opt/jp1base/lib/libJevApiAmt.a -ldl -lpthread

Linux (IPF)
（64bitシングルスレッド）
/opt/jp1base/lib/libJevApiAst.a -ldl

Linux (IPF)
（64bitマルチスレッド）
/opt/jp1base/lib/libJevApiAmt.a -ldl -lpthread

注意事項

JP1/Baseが提供するライブラリーは，スタティックライブラリー（UNIXの場合はアーカイブ）です。DLL用のインポートライブラリーや共有ライブラリーではありません。

JP1/Baseが提供するライブラリーは，JP1/Baseに同梱されているDLL（UNIXの場合は共有ライブラリー）をダイナミックロードします。このため，JP1/Baseがインストールされていない環境でも，作成されたプログラムは動作しますが，その場合，関数がJEV_NO_LIBRARYで失敗します。

Windows用のJP1/Base提供ライブラリーからダイナミックロードされるDLLは，Side by sideアセンブリーでパッケージ化されたライブラリーとの依存関係がないため，マニフェストは提供していません。

UNIXでJP1/Base提供ライブラリーをリンクするときは，-lオプションでリンクしないでください。

UNIXでリンクするときは，ldではなく，コンパイラーと同じリンケージエディター（ccなど）を使用することを推奨します。ldでリンクする場合は，コンパイラーが自動的にldに引き渡すオプションと同じものを同じ順序で指定してください。

2.3　旧バージョンから移行する

旧バージョンのJP1/Baseで作成したユーザーアプリケーションを移行する手順について説明します。

＜この節の構成＞

2.3.1　再コンパイルしないで移行する

2.3.2　再コンパイルして移行する

2.3.1　再コンパイルしないで移行する

JP1/Baseでは，旧バージョンで作成したユーザーアプリケーションとのバイナリ互換性を保証しています。したがって，ユーザーアプリケーションを再コンパイルすることなく，最新のJP1/Base上で動作します。

なお，ユーザーアプリケーションのバイナリ互換性を保証しているのは，実行環境のJP1/Baseが開発環境のJP1/Baseと同じバージョン，または上位バージョンの場合です。そのため，一つのユーザーアプリケーションを複数バージョンのJP1/Baseで実行させる場合は，開発環境のJP1/Baseを実行環境の最下位バージョンに合わせてください。

開発環境と実行環境とでJP1/Baseのバージョンが異なる場合，バイナリ互換性の保証範囲の例を次の表に示します。

表2-7　バイナリ互換性の保証範囲の例

開発環境
実行環境
ユーザーアプリケーションのバイナリ互換性

次のような開発環境で，ユーザーアプリケーションを開発した場合

JP1/Base 07-51

コンパイラー

ユーザーアプリケーション

JP1/Baseが上位バージョンである場合

JP1/Base 08-00以降

○

JP1/Baseが同じバージョンである場合

JP1/Base 07-51

○

JP1/Baseが下位バージョンである場合

JP1/Base 07-50以前

×

（凡例）

○：保証している。

×：保証していない。

注意

上記の表では，使用するコンパイラーで生成するユーザーアプリケーションの動作が保証されているOSのバージョンについて考慮していません。例えば，JP1/Base 7-51でサポートしているコンパイラーで生成したユーザーアプリケーションが，JP1/Base 08-00で新たにサポートされたOS上で動作できるとは限りません。コンパイラーで生成するユーザーアプリケーションの動作が保証されているOSバージョンについては，コンパイラーのマニュアルなどで確認してください。

2.3.2　再コンパイルして移行する

JP1/Baseでは，旧バージョンで作成したソースコード互換性を保証しています。したがって，ユーザーアプリケーションのソースコードを変更することなく，再コンパイルすることで，最新のJP1/Base上で動作します。

08-00～08-11で作成したユーザーアプリケーションを08-50へ移行する場合の注意事項

JP1/Base 08-50では，ユーザーアプリケーションをC言語でもコンパイルできるように拡張されました。このため，コンパイルおよびリンクオプションが変更されています。

ただし，コンパイルおよびリンクオプションを変更しなくても，リンク可能な互換用ライブラリーが提供されています。互換用ライブラリーの一覧については，「付録C　互換用ライブラリー」を参照してください。

互換用ライブラリーを使用する場合の，コンパイルおよびリンクオプションについては，旧バージョン（08-00～08-11）のマニュアル「JP1/Base 機能拡張」を参照してください。

3.　JP1/SES形式のイベントを変換する

この章では，JP1/SES形式のイベントに拡張属性やメッセージを付加してJP1イベントに変換する方法について説明します。JP1/SES形式のイベントをJP1イベントに変換すれば，JP1/IMでそのイベントを［イベントコンソール］画面から監視できるようになります。

＜この章の構成＞

3.1　機能の解説

3.2　JP1/SES形式のイベントを変換する手順

3.1　機能の解説

JP1/SES形式のイベントとは，バージョン5以前のJP1 シリーズのプログラムであるJP1/SESで処理されていたイベントのことです。該当するイベントには次のものがあります。

バージョン5以前の製品であるJP1/SESが提供するイベント関数またはコマンドによって登録されたイベント

バージョン5以前の製品であるJP1/AJS（Windows版）が提供するコマンドによって登録されたイベント

バージョン5以前の製品であるJP1/SESまたはJP1/AJS（Windows版）にイベントを登録するように設計されたプログラムによって登録されたイベント

他ホストで稼働しているJP1/SESまたはJP1/AJS（Windows版）によって自ホストに転送されたイベント

JP1/SES形式のイベントには基本属性（イベントIDやメッセージなど）だけがあり，拡張属性（重大度，ユーザー名，プロダクト名，オブジェクトタイプなど）がありません。

JP1/IMでイベントを［イベントコンソール］画面に表示するには，イベントに拡張属性が設定されている必要があります。したがって，JP1/SES形式のイベントはそのままでは［イベントコンソール］画面に表示することができません。しかし，JP1/Baseの定義ファイルを使用してJP1/SES形式のイベントに重大度などの拡張属性を付加すれば，JP1/IMで［イベントコンソール］画面に表示できるようになります。このように，JP1/SES形式のイベントに拡張属性を付加してJP1イベントに変換することを，JP1/SES形式のイベントの変換といいます。

JP1/SES形式のイベントの変換の概要を次の図に示します。

図3-1　JP1/SES形式のイベントの変換

3.2　JP1/SES形式のイベントを変換する手順

JP1/SES形式のイベントに拡張属性を付加してJP1イベントに変換するための作業手順を次に示します。なお，必要であれば，拡張属性とともにメッセージも付加できます。

作業の流れは次のとおりです。

対象イベント，付加する拡張属性，メッセージを決める

定義ファイルを作成する
JP1/Baseがインストールされたマシン上に，次の定義ファイルを作成します。

拡張属性マッピング設定ファイル

イベントサービス（JP1/Base）を再起動する
JP1/IMが起動している場合は，JP1/IMを終了させてからJP1/Baseを再起動してください。このあと，必要であればJP1/IMを起動してください。

＜この節の構成＞

3.2.1　対象イベント，付加する拡張属性，メッセージを決める

3.2.2　定義ファイルを作成する

3.2.1　対象イベント，付加する拡張属性，メッセージを決める

まず，どのJP1/SES形式のイベントをJP1イベントに変換するのかを決めます。対象イベントは，フィルター指定によって絞り込むことができます。フィルターには，対象イベントのイベントIDや発行元サーバ名などを指定できます。それによって，特定のイベントIDを持つJP1/SES形式のイベントや，特定のサーバから発行されたJP1/SES形式のイベントだけをJP1イベントに変換できます。フィルターの記述方法については，マニュアル「JP1/Base 運用ガイド」の，フィルターの文法の項を参照してください。

次に，JP1/SES形式のイベントに付加する拡張属性およびメッセージを決めます。JP1/IMでイベント監視をするためには，そのイベントに少なくとも拡張属性「SEVERITY」を付加しなければなりません。それ以外の拡張属性やメッセージは，JP1/IMでイベント監視をするために有用なものを付加します。拡張属性を設定する際の指針としては，「付録A　JP1イベントの属性の設定基準」を参照してください。

3.2.2　定義ファイルを作成する

JP1/SES形式のイベントに拡張属性およびメッセージを付加するためには，定義ファイル（拡張属性マッピング設定ファイル）を作成する必要があります。次に，拡張属性マッピング設定ファイルの作成方法について説明します。

＜この項の構成＞

(1)　定義する内容

(2)　格納場所

(3)　形式

(4)　注意事項

(5)　定義例

(1)　定義する内容

拡張属性マッピング設定ファイルには，対象となるJP1/SES形式のイベントを絞り込むためのフィルター，およびJP1/SES形式のイベントに付加する拡張属性とメッセージを定義します。

(2)　格納場所

拡張属性マッピング設定ファイルは，JP1/Baseがインストールされたマシン上の次のディレクトリに作成します。

Windowsの場合

イベントサーバインデックスで指定されたディレクトリ¥sesmap¥

デフォルトのイベントサーバインデックスでは次のようになります。

Baseパス¥conf¥event¥servers¥default¥sesmap¥

UNIXの場合

イベントサーバインデックスで指定されたディレクトリ/sesmap/

デフォルトのイベントサーバインデックスでは次のようになります。

/etc/opt/jp1base/conf/event/servers/default/sesmap/

sesmapディレクトリは，標準インストールの状態では存在しません。まずsesmapディレクトリを作成し，その直下に，次の形式のファイル名を持つテキストファイルを作成してください。

会社名_製品名_map.conf

「製品名」は，「シリーズ名_製品名」とすることもできます。JP1イベント発行時の「PRODUCT_NAME」に指定する値の「/」を「_」に変更してファイル名に使用することをお勧めします。また，標準提供ファイル名称用に「hitachi」を使用しているため，「会社名」には「hitachi」以外の名称を使用してください。

なお，拡張属性マッピング設定ファイルは複数作成することもできます。sesmapディレクトリの直下に異なる名称の複数の拡張属性マッピング設定ファイルを作成すれば，それらのファイルの定義に基づいて，該当するJP1/SES形式のイベントが変換されます。複数の拡張属性マッピング設定ファイルを作成した場合，それらの定義は，ファイル名によって昇順に解析されます。

注意事項

sesmapディレクトリには，定義ファイル以外のファイルは格納しないでください。

バックアップファイルやモデルファイルを格納している場合，それらのファイルにより変換が行われることがあります。

(3)　形式

拡張属性マッピング設定ファイルは，マッピング設定ブロックの集合体です。マッピング設定ブロックの形式を次に示します。

[コメント]
map
[フィルターブロック]
[メッセージ指定]
[拡張属性指定1]
[拡張属性指定2]
      ：
[拡張属性指定n]
end-map
[コメント]

nは，最大100です。

コメントは，「#」で開始する改行を含まない行です。コメントは，マッピング設定ブロックとマッピング設定ブロックの間に記述できますが，マッピング設定ブロックの内部には記述できません。

「map」および「end-map」は，それぞれ，マッピング設定ブロックの開始および終了を宣言します。

マッピング設定ブロックを構成するほかの要素について，次に説明します。

(a)　フィルターブロック

フィルターブロックには，JP1イベントに変換するJP1/SES形式のイベントを絞り込むためのフィルターを設定します。フィルターブロックの形式を次に示します。

filter
イベントフィルター
end-filter

フィルターブロックを省略した場合は，すべてのJP1/SES形式のイベントが変換の対象となります。

イベントフィルターの指定形式に関しては，マニュアル「JP1/Base 運用ガイド」の，フィルターの文法の項を参照してください。

(b)　メッセージ指定

JP1/SES形式のイベントのイベント情報にメッセージを付加する場合に指定します。形式を次に示します。

B.MESSAGE区切り文字 メッセージ文字列

「B.MESSAGE」に続く区切り文字の後ろからその行末の改行までの間に存在する文字列が，メッセージとして付加されます。

イベント情報に最初からメッセージがある場合は，このパラメーターで指定されたメッセージ文字列に置き換えられます。ただし，このメッセージ文字列を付加することによって，元から設定してある詳細情報との合計サイズが1,024バイトを超える場合には，メッセージは付加されません。

この指定を省略した場合，メッセージは付加されません。

(c)　拡張属性指定

イベント情報に拡張属性を付加する場合に指定します。形式を次に示します。

E.拡張属性名 区切り文字 拡張属性値

「E.」に続けて，付加する拡張属性の名称を指定します。区切り文字の後ろから行末の改行までの間にある文字列が，拡張属性の値として扱われます。この指定では，拡張属性値の指定は必須です。値を空（NULL文字列）にした拡張属性の指定はできません。また，拡張属性値には，改行を含む値は指定できません。

一つのJP1/SES形式のイベントに複数の拡張属性を付加する場合は，この指定を複数回繰り返します。ただし，一つのマッピング設定ブロックで，同一名称を持つ拡張属性は指定できません。また，一つのJP1/SES形式のイベントに付加できる拡張属性の数は最大100個で，すべての拡張属性値の合計サイズは10,000バイトに制限されます。これらの制限に反した場合は，そのマッピング設定ブロック全体が無視されます。

(4)　注意事項

拡張属性マッピング設定ファイルでは，１レコードが最大1,024バイトに制限されます。

フィルターブロック，メッセージ指定，拡張属性指定はそれぞれ省略できますが，指定する場合はこの順番に指定しなければなりません。誤った順番で指定した場合，または拡張属性指定以外のブロックを２回以上指定した場合は，そのマッピング設定ブロック全体が無効になります。

フィルターブロックで定義するフィルターに日本語文字列を指定した場合，その文字コードとJP1/SES形式で登録されたイベントの文字コードが異なると，そのイベントは変換されません。

拡張属性マッピング設定ファイルでは，除外条件はサポートされていません。フィルターブロックで定義するフィルターに除外条件を指定しないでください。

(5)　定義例

(a)　単一のマッピング設定

ここでは，「raysol」という名前のホストで稼働しているJP1/SESから自ホストに転送されたJP1/SES形式のイベントのうち，イベントIDが111のものを対象にして，拡張属性「SEVERITY」を「Information」に設定し，「Informational Message」というメッセージを付加する例を示します。

テキストエディターを使って，「company_sample_map.conf」という名前の拡張属性マッピング設定ファイルを作成します。この拡張属性マッピング設定ファイルでの定義を次に示します。

図3-2　拡張属性マッピング設定ファイルの定義例（単一のマッピング）

(b)　複数のマッピング設定

一つの拡張属性マッピング設定ファイルに，複数のマッピング定義を記述することもできます。

例えば，「(a)　単一のマッピング設定」で設定した定義に，イベントIDが222のJP1/SES形式のイベントの重大度を「Warning」にするという設定を追加できます。その場合の定義は次のようになります。

図3-3　拡張属性マッピング設定ファイルの定義例（複数のマッピング）

なお，一つの拡張属性マッピング設定ファイルに複数のマッピングを定義した場合には，ファイル内で上位に定義されたものから順に解析されます。

4.　関数

この章では，JP1イベントを発行および取得するために使用できる関数について説明します。

＜この章の構成＞

関数の記述形式

各関数共通の注意事項

関数一覧

JevFreeEvent

JevGetArrivedTime

JevGetBaseID

JevGetClose

JevGetCodeSet

JevGetDestinationAddress

JevGetDestinationServer

JevGetDetailInformation

JevGetEvent

JevGetExtAttrDirect

JevGetExtID

JevGetFirstExtAttr

JevGetMessage

JevGetNextExtAttr

JevGetOpen

JevGetProcessID

JevGetRegistFactor

JevGetRegistGroupID

JevGetRegistGroupName

JevGetRegistTime

JevGetRegistUserID

JevGetRegistUserName

JevGetSequenceNumber

JevGetSourceAddress

JevGetSourceSequenceNumber

JevGetSourceServer

JevRegistEvent

関数の記述形式

JP1イベント発行関数やJP1イベント取得関数の説明で使用する見出しについて説明します。

このマニュアルでは，次に示す見出しを使って関数の使い方を説明しています。

機能

関数の機能について説明します。

定義ヘッダー

関数を定義するヘッダーを示します。

形式

関数の記述形式を示します。

引数

関数の引数に指定できる値とその意味について説明します。

戻り値

関数の実行後に戻される値とその意味を示します。

注意事項

各関数を使用するときに注意が必要な事柄について説明します。なお，各関数で共通の注意事項については，次節の「各関数共通の注意事項」を参照してください。

各関数共通の注意事項

ここでは，JP1/Baseが提供する各関数に共通の注意事項について説明します。各関数に共通する注意事項を次に示します。

Windows版，UNIX版ともに，マルチスレッドプログラムから呼ばれたときの動作を保証しています。

Windows版，UNIX版のマルチスレッドプログラムで各関数を利用する場合，最初に呼び出す関数よりも前に生成されたスレッドで，各関数を利用することはできません。

関数一覧

JP1/Baseが提供する関数にはJP1イベント発行関数とJP1イベント取得関数があります。JP1/Baseが提供するこれらの関数とその機能について次の表に示します。なお，JP1イベント発行関数，JP1イベント取得関数で利用するJP1イベントのイベント属性の詳細については，「付録A　JP1イベントの属性の設定基準」を参照してください。

表4-1　JP1イベント発行関数

機能 | 関数名
JP1/BaseのイベントサーバにJP1イベントを発行する。 | JevRegistEvent

表4-2　JP1イベント取得関数

機能 | 関数名
JP1イベントを取得するためにJP1/Baseのイベントサーバに接続する。 | JevGetOpen
JP1イベントを1件取得する。 | JevGetEvent
JP1イベントの基本属性(イベントDB内の通し番号)を取得する。 | JevGetSequenceNumber
JP1イベントの基本属性(イベントIDの基本部)を取得する。 | JevGetBaseID
JP1イベントの基本属性(イベントIDの拡張部)を取得する。 | JevGetExtID
JP1イベントの基本属性(登録要因)を取得する。 | JevGetRegistFactor
JP1イベントの基本属性(発行元プロセスID)を取得する。 | JevGetProcessID
JP1イベントの基本属性(登録時刻)を取得する。 | JevGetRegistTime
JP1イベントの基本属性(到着時刻)を取得する。 | JevGetArrivedTime
JP1イベントの基本属性(発行元ユーザーID)を取得する。 | JevGetRegistUserID
JP1イベントの基本属性(発行元グループID)を取得する。 | JevGetRegistGroupID
JP1イベントの基本属性(発行元ユーザー名)を取得する。 | JevGetRegistUserName
JP1イベントの基本属性(発行元グループ名)を取得する。 | JevGetRegistGroupName
JP1イベントの基本属性(発行元イベントサーバ名)を取得する。 | JevGetSourceServer
JP1イベントの基本属性(送信先イベントサーバ名)を取得する。 | JevGetDestinationServer
JP1イベントの基本属性(発行元IPアドレス)を取得する。 | JevGetSourceAddress
JP1イベントの基本属性(送信先IPアドレス)を取得する。 | JevGetDestinationAddress
JP1イベントの基本属性(発行元別通し番号)を取得する。 | JevGetSourceSequenceNumber
JP1イベントの基本属性(コードセット)を取得する。 | JevGetCodeSet
JP1イベントの基本属性(メッセージ)を取得する。 | JevGetMessage
JP1イベントの基本属性(詳細情報)を取得する。 | JevGetDetailInformation
JP1イベントの拡張属性を取得する。 | JevGetExtAttrDirect
JP1イベントの最初の拡張属性を取得する。 | JevGetFirstExtAttr
JP1イベントの次の拡張属性を取得する。 | JevGetNextExtAttr
取得したJP1イベント用のメモリーを解放する。 | JevFreeEvent
イベントサーバから切断する。 | JevGetClose

なお，各関数の詳細説明は，次の節以降にアルファベット順に記載しています。

JevFreeEvent

機能

JevGetEvent()関数で返された値で，アクセスできるJP1イベントの格納領域を解放します。

定義ヘッダー

JevApi.h

形式

int JevFreeEvent(long* lplStatus,
                JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-3　状態コードと意味（JevFreeEvent）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 0を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatus で指定された領域に格納する。

JevGetArrivedTime

機能

JP1イベントの基本属性(到着時刻)を取得します。到着時刻は，UTCの1970-01-01 00:00:00からの通算秒で表されます。

定義ヘッダー

JevApi.h

形式

long JevGetArrivedTime(long* lplStatus,
                      JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-4　状態コードと意味（JevGetArrivedTime）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントの到着時刻を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetBaseID

機能

JP1イベントの基本属性(イベントIDの基本部)を取得します。イベントIDの基本部とは，イベントID（8バイト）の上位4バイトを指します。

定義ヘッダー

JevApi.h

形式

long JevGetBaseID(long* lplStatus,
                 JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-5　状態コードと意味（JevGetBaseID）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントのイベントIDの基本部を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetClose

機能

イベントサーバから切断し，JevGetOpen()関数の戻り値で返されたJP1イベント取得用ハンドルを閉じます。

JevGetOpen()関数の戻り値で返されたJP1イベント取得用ハンドルは，必ずこの関数を使って閉じる必要があります（Windowsでは，この関数を呼び出さずにプロセスが終了してしまうとシステムリソースリークとなります）。

定義ヘッダー

JevApi.h

形式

int JevGetClose(long* lplStatus,
              JEVGETKEY key);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-6　状態コードと意味（JevGetClose）

状態コード | 意味
JEV_S_CONNECT_ERROR | イベントサービスに接続できません。
JEV_S_PARAM_ERROR | パラメーターが不正です。
JEV_S_MAXOPEN | ファイルオープン数が限界に達しました。
JEV_S_NOMEMORY | メモリー不足です。
JEV_S_IO_ERR | 入出力エラーです。
JEV_S_SYSTEM_ERROR | システムエラーです（システムリソース不足です）。

key

JP1イベント取得用ハンドル(JevGetOpen()関数の戻り値)を指定します。

戻り値

正常終了 | 0を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetCodeSet

機能

JP1イベントの基本属性(コードセット)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetCodeSet(long* lplStatus,
                 JP1EVENT event,
                 const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-7　状態コードと意味（JevGetCodeSet）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lppszValue

取得したコードセットへのポインターを保存するための領域を示すポインターを指定します。該当するデータがない場合，NULLポインターが設定されます。

戻り値

正常終了 | 0を返す。また，コードセットへのポインターをlppszValueで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetDestinationAddress

機能

JP1イベントの基本属性(送信先IPアドレス)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetDestinationAddress(long* lplStatus,
                            JP1EVENT event,
                            int* lpnSize,
                            const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-8　状態コードと意味（JevGetDestinationAddress）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lpnSize

送信先IPアドレス長を格納する領域へのポインターを指定します。

lppszValue

取得した送信先IPアドレスへのポインターを保存するための領域を示すポインターを指定します。

戻り値

正常終了 | 0を返し，送信先IPアドレスへのポインターをlppszValueで指定された領域に格納する。また，送信先IPアドレス長をlpnSizeで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetDestinationServer

機能

JP1イベントの基本属性(送信先イベントサーバ名)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetDestinationServer(long* lplStatus,
                           JP1EVENT event,
                           const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-9　状態コードと意味（JevGetDestinationServer）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lppszValue

取得した送信先イベントサーバ名へのポインターを保存するための領域を示すポインターを指定します。該当するデータがない場合，NULLポインターが設定されます。

戻り値

正常終了 | 0を返す。また，送信先イベントサーバ名へのポインターをlppszValueで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetDetailInformation

機能

JP1イベントの基本属性(詳細情報)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetDetailInformation(long* lplStatus,
                           JP1EVENT event,
                           long* lplSize,
                           const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-10　状態コードと意味（JevGetDetailInformation）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lplSize

詳細情報の長さを格納する領域へのポインターを指定します。

lppszValue

取得した詳細情報へのポインターを保存するための領域を示すポインターを指定します。該当するデータがない場合，NULLポインターが設定されます。

戻り値

正常終了 | 0を返し，詳細情報へのポインターをlppszValueで指定された領域に格納する。また，詳細情報の長さをlplSizeで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetEvent

機能

JevGetOpen()関数で指定した条件に合致するJP1イベントを１件取得します。この関数を繰り返し呼び出すことによって，JevGetOpen()関数で指定したフィルターに合致するJP1イベントを，イベントデータベースに登録された順に取得できます。

定義ヘッダー

JevApi.h

形式

JP1EVENT JevGetEvent(long* lplStatus,
                    JEVGETKEY key,
                    JEVACCESSTYPE access);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-11　状態コードと意味（JevGetEvent）

状態コード | 意味
JEV_S_CONNECT_ERROR | イベントサービスに接続できません。
JEV_S_INVALID_SERVER | イベントサーバ名が不正です。
JEV_S_PARAM_ERROR | パラメーターが不正です。
JEV_S_NO_EVENT | フィルターに一致するJP1イベントが存在しません。
JEV_S_MAXOPEN | ファイルオープン数が限界に達しました。
JEV_S_NOMEMORY | メモリー不足です。
JEV_S_IO_ERR | 入出力エラーです。

key

JP1イベント取得用ハンドル(JevGetOpen()関数の戻り値)を指定します。

access

JP1イベントを取得するときに，該当するJP1イベントが存在しない場合の動作を指定するための値を指定します。値は，次に示すどちらかです。

JEVGET_WAIT

該当するJP1イベントが発生するまで制御を戻しません。

JEVGET_NOWAIT

該当するJP1イベントがなければ，すぐにエラーリターンします。

戻り値

正常終了 | JP1イベントアクセス用ハンドルを返す。
異常終了 | NULLポインターを返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetExtAttrDirect

機能

JP1イベントの拡張属性を取得します。

定義ヘッダー

JevApi.h

形式

const char*JevGetExtAttrDirect(long* lplStatus,
                              JP1EVENT event,
                              const char* lpszName);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-12　状態コードと意味（JevGetExtAttrDirect）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。
JEV_S_NOT_DEFINED | 指定した属性は未登録です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lpszName

拡張属性名を指定する文字列へのポインターを指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントの拡張属性値を返す。
異常終了 | NULLポインターを返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetExtID

機能

JP1イベントの基本属性(イベントIDの拡張部)を取得します。イベントIDの拡張部とは，イベントID（8バイト）の下位4バイトを指します。

定義ヘッダー

JevApi.h

形式

long JevGetExtID(long* lplStatus,
                JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-13　状態コードと意味（JevGetExtID）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントのイベントIDの拡張部を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetFirstExtAttr

機能

JP1イベントの最初に指定されている拡張属性を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetFirstExtAttr(long* lplStatus,
                      JP1EVENT event,
                      const char** const lppszName,
                      const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-14　状態コードと意味（JevGetFirstExtAttr）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。
JEV_S_EXTATTR_EOD | このJP1イベントにはこれ以上拡張属性は含まれていません。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lppszName

取得した拡張属性名へのポインターを保存するための領域を示すポインターを指定します。

lppszValue

取得した拡張属性値へのポインターを保存するための領域を示すポインターを指定します。該当するデータがない場合，NULLポインターが設定されます。

戻り値

正常終了 | 0を返し，拡張属性名へのポインターをlppszNameで指定された領域に格納する。また，拡張属性値へのポインターをlppszValueで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetMessage

機能

JP1イベントの基本属性(メッセージ)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetMessage(long* lplStatus,
                 JP1EVENT event,
                 const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-15　状態コードと意味（JevGetMessage）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lppszValue

取得したメッセージへのポインターを保存するための領域を示すポインターを指定します。該当するデータがない場合，NULLポインターが設定されます。

戻り値

正常終了 | 0を返す。また，メッセージへのポインターをlppszValueで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetNextExtAttr

機能

JP1イベント取得関数（JevGetFirstAttr()関数またはJevGetNextAttr()関数）を使って取得した拡張属性の次に指定されているJP1イベントの拡張属性を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetNextExtAttr(long* lplStatus,
                     JP1EVENT event,
                     const char** const lppszName,
                     const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-16　状態コードと意味（JevGetNextExtAttr）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。
JEV_S_EXTATTR_EOD | このJP1イベントにはこれ以上拡張属性は含まれていません。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lppszName

取得した拡張属性名へのポインターを保存するための領域を示すポインターを指定します。

lppszValue

取得した拡張属性値へのポインターを保存するための領域を示すポインターを指定します。

戻り値

正常終了 | 0を返し，次の拡張属性名へのポインターをlppszNameで指定された領域に格納する。また，次の拡張属性値へのポインターをlppszValueで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetOpen

機能

JP1イベントを取得するためにJP1/Baseのイベントサーバに接続します。

定義ヘッダー

JevApi.h

形式

JEVGETKEY JevGetOpen(long* lplStatus,
                    const char* lpszServer,
                    const char* lpszFilter,
                    long lPosition);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-17　状態コードと意味（JevGetOpen）

状態コード | 意味
JEV_NO_LIBRARY | ライブラリーが見つかりません※1，またはファイルオープン数が限界に達しシェアードライブラリーが検索できません。
JEV_S_CONNECT_ERROR | イベントサービスに接続できません。
JEV_S_PARAM_ERROR | パラメーターが不正です。
JEV_S_MAXOPEN | ファイルオープン数が限界に達しました。
JEV_S_NOMEMORY | メモリー不足です。
JEV_S_IO_ERR | 入出力エラーです。
JEV_S_SYSTEM_ERROR | システムエラーです（システムリソース不足です）。
JEV_S_NO_AUTHORITY | JP1プログラムまたはユーザーアプリケーションにはイベントサーバに接続する権限がありません※2。
JEV_S_FILTER_ERROR | フィルターに誤りがあります（正規表現の誤り部分を除きます）。
JEV_S_REGEX_ERROR | フィルター中で指定している正規表現に誤りがあります。
JEV_S_REGEX_CANNOY_USED | 正規表現ライブラリーが使用できません。

注※1　誤って必要なファイルを削除したか，またはコンパイルオプションに誤りがあるおそれがあります。必要なファイルを削除していた場合は，JP1/Baseを再インストールしてください。コンパイルオプションが誤っていた場合は，再設定してください。

注※2　イベントサーバに接続する権限は，JP1/Baseのイベントサーバ設定（conf）ファイルのusersパラメーターで設定してください。

lpszServer

接続先イベントサーバ名を表す「¥0」で終わる文字列へのポインターを指定します。NULLポインターを指定すると，自ホスト名と同じ名称のイベントサーバに接続します。イベントサーバ名は，「¥0」を含めて256バイト以下でなければなりません。

lpszFilter

マニュアル「JP1/Base 運用ガイド」の，フィルターの文法の項で説明しているフィルターを示す「¥0」で終わる文字列へのポインターを指定します。NULLポインターを指定した場合，すべてのJP1イベントが取得対象になります。

lPosition

JP1イベントの取得開始位置をイベントDB通し番号で指定します。-1が指定された場合は，この関数の発行以降に登録されたJP1イベントを取得できます。

戻り値

正常終了 | JP1イベント取得用ハンドルを返す。
異常終了 | NULLポインターを返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetProcessID

機能

JP1イベントの基本属性(発行元プロセスID)を取得します。

定義ヘッダー

JevApi.h

形式

long JevGetProcessID(long* lplStatus,
                    JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-18　状態コードと意味（JevGetProcessID）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントの発行元プロセスIDを返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetRegistFactor

機能

JP1イベントの基本属性(登録要因)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetRegistFactor(long* lplStatus,
                      JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-19　状態コードと意味（JevGetRegistFactor）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントの登録要因を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetRegistGroupID

機能

JP1イベントの基本属性(発行元グループID)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetRegistGroupID(long* lplStatus,
                       JP1EVENT event,
                       long* lplSize);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-20　状態コードと意味（JevGetRegistGroupID）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lplSize

発行元グループIDを格納する領域へのポインターを指定します。

戻り値

正常終了 | 0を返す。また，発行元グループIDをlplSizeで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetRegistGroupName

機能

JP1イベントの基本属性(発行元グループ名)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetRegistGroupName(long* lplStatus,
                         JP1EVENT event,
                         const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-21　状態コードと意味（JevGetRegistGroupName）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lppszValue

取得した発行元グループ名へのポインターを保存するための領域を示すポインターを指定します。該当するデータがない場合，NULLポインターが設定されます。

戻り値

正常終了 | 0を返す。また，発行元グループ名へのポインターをlppszValueで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetRegistTime

機能

JP1イベントの基本属性(登録時刻)を取得します。登録時刻はUTCの1970-01-01 00:00:00からの通算秒で表されます。

定義ヘッダー

JevApi.h

形式

long JevGetRegistTime(long* lplStatus,
                     JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-22　状態コードと意味（JevGetRegistTime）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントの登録時刻を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetRegistUserID

機能

JP1イベントの基本属性(発行元ユーザーID)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetRegistUserID(long* lplStatus,
                      JP1EVENT event,
                      long* lplSize);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-23　状態コードと意味（JevGetRegistUserID）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lplSize

発行元ユーザーIDを格納する領域へのポインターを指定します。

戻り値

正常終了 | 0を返す。また，発行元ユーザーIDをlplSizeで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetRegistUserName

機能

JP1イベントの基本属性(発行元ユーザー名)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetRegistUserName(long* lplStatus,
                        JP1EVENT event,
                        const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-24　状態コードと意味（JevGetRegistUserName）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lppszValue

取得した発行元ユーザー名へのポインターを保存するための領域を示すポインターを指定します。該当するデータがない場合，NULLポインターが設定されます。

戻り値

正常終了 | 0を返す。また，発行元ユーザー名へのポインターをlppszValueで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetSequenceNumber

機能

JP1イベントの基本属性(イベントDB内通し番号)を取得します。

定義ヘッダー

JevApi.h

形式

long JevGetSequenceNumber(long* lplStatus,
                         JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-25　状態コードと意味（JevGetSequenceNumber）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントのイベントDB内通し番号を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetSourceAddress

機能

JP1イベントの基本属性(発行元IPアドレス)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetSourceAddress(long* lplStatus,
                       JP1EVENT event,
                       int* lpnSize,
                       const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-26　状態コードと意味（JevGetSourceAddress）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lpnSize

発行元IPアドレス長を格納する領域へのポインターを指定します。

lppszValue

取得した発行元IPアドレスへのポインターを保存するための領域を示すポインターを指定します。

戻り値

正常終了 | 0を返し，発行元IPアドレスへのポインターをlppszValueで指定された領域に格納する。また，発行元IPアドレス長をlpnSizeで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetSourceSequenceNumber

機能

JP1イベントの基本属性(発行元別通し番号)を取得します。

定義ヘッダー

JevApi.h

形式

long JevGetSourceSequenceNumber(long* lplStatus,
                               JP1EVENT event);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-27　状態コードと意味（JevGetSourceSequenceNumber）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

戻り値

正常終了 | 指定されたハンドルで参照できるJP1イベントの発行元別通し番号を返す。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevGetSourceServer

機能

JP1イベントの基本属性(発行元イベントサーバ名)を取得します。

定義ヘッダー

JevApi.h

形式

int JevGetSourceServer(long* lplStatus,
                      JP1EVENT event,
                      const char** const lppszValue);

引数

lplStatus

この関数の異常終了時の状態コードを返す領域へのポインターを指定します。状態コードとその意味は次のとおりです。

表4-28　状態コードと意味（JevGetSourceServer）

状態コード | 意味
JEV_S_PARAM_ERROR | パラメーターが不正です。

event

JP1イベントアクセス用ハンドル(JevGetEvent()関数の戻り値)を指定します。

lppszValue

取得した発行元イベントサーバ名へのポインターを保存するための領域を示すポインターを指定します。

戻り値

正常終了 | 0を返す。また，発行元イベントサーバ名へのポインターをlppszValueで指定された領域に格納する。
異常終了 | -1を返す。また，失敗時の詳細エラーコードをlplStatusで指定された領域に格納する。

JevRegistEvent

機能

JP1/BaseのイベントサーバにJP1イベントを発行します。この関数が正常終了した時点で，自イベントサーバでのJP1イベントの受付が完了していることが保証されます。

定義ヘッダー

JevApi.h

形式

int  JevRegistEvent(long* status ,
                   const char* server,
                   long baseID,
                   const char* message,
                   const char** extattrs,
                   int extcount);

引数

status

この関数の異常終了時の状態コードを返す領域のアドレスを指定します。状態コードとその意味は次のとおりです。

表4-29　状態コードと意味（JevRegistEvent）

状態コード | 意　味
JEV_NO_LIBRARY | ライブラリーが見つかりません※，またはファイルオープン数が限界に達しシェアードライブラリーが検索できません。
JEV_S_CONNECT_ERROR | イベントサービスに接続できません。
JEV_S_INVALID_ID | イベントIDが不正です。
JEV_S_INVALID_SERVER | イベントサーバ名が不正です。
JEV_S_INVALID_EXT_NAME | 拡張属性名が不正です。
JEV_S_OVER_EXT_COUNT | 拡張属性数が上限を超えています。
JEV_S_OVER_EXT_SIZE | 拡張属性の合計サイズが上限を超えています。
JEV_S_OVER_MESSAGE | メッセージの長さが上限を超えています。
JEV_S_PARAM_ERROR | パラメーターが不正です。
JEV_S_NOT_SUPPORT | サポートされていません。
JEV_S_MAXOPEN | ファイルオープン数の限界に達しました。
JEV_S_NOMEMORY | メモリー不足です。
JEV_S_IO_ERR | 入出力エラーです。
JEV_S_SYSTEM_ERROR | システムエラーです。

注※　誤って必要なファイルを削除したか，またはコンパイルオプションに誤りがあるおそれがあります。必要なファイルを削除していた場合は，JP1/Baseを再インストールしてください。コンパイルオプションが誤っていた場合は，再設定してください。

server

自ホストで稼働する接続先イベントサーバ名を表す「¥0」で終わる文字列へのポインターを指定します。NULLポインターを指定すると，自ホスト名と同じ名称のイベントサーバに接続します。イベントサーバ名は，「¥0」を含めて256バイト以下でなければなりません。

baseID

登録するイベントIDの基本部を表す数値を指定します。指定できる値の範囲は，0x00000000，0x00000001～0x00001FFF，または0x7FFF8000～0x7FFFFFFFです。

message

登録するメッセージを表す「¥0」で終わる文字列へのポインターを指定します。メッセージは，「¥0」を含めて1,024バイト以下でなければなりません。

extattrs

登録する拡張属性文字列を格納した文字列配列を指定します。配列の中の個々の拡張属性文字列は，「拡張属性名=拡張属性値」の形式の，「¥0」で終わる文字列です。

拡張属性名は，属性の意味を表す文字列です。拡張属性名には，英数字またはアンダーライン（_）から成る最大32バイトの文字列を指定できます。英字は大文字だけを使用できます。文字列の先頭は英字でなければなりません。

拡張属性値は，属性の内容を表す0～10,000バイトの文字列です。

拡張属性は，最大100個指定できます。すべての属性値の長さの合計（「¥0」を含まない）は，10,000バイトに制限されます。

引数としてNULLポインターを指定した場合，拡張属性は登録されません。

拡張属性の詳細については，「付録A　JP1イベントの属性の設定基準」を参照してください。

extcount

登録する拡張属性の個数を指定します。「拡張属性」にNULLポインターが指定された場合，この値は無視されます。

戻り値

正常終了 | 0を返す。
異常終了 | -1を返す。

注意事項

拡張属性を指定するときに，同一の拡張属性名を持つ文字列を複数指定した場合は，最後に指定した文字列が有効になります。

付録

＜この付録の構成＞

付録A　JP1イベントの属性の設定基準

付録B　サンプルソースファイル

付録C　互換用ライブラリー

付録A　JP1イベントの属性の設定基準

JP1イベントの属性の設定基準を示します。独自イベントを発行する際，またはJP1/SES形式のイベントを変換する際は，ここに示す基準に基づいてイベント属性を設定してください。また，JP1イベントを取得する際は，ここに示す基準を参考にして，その属性を取得するかどうか検討してください。

＜この節の構成＞

付録A.1　基本属性

付録A.2　拡張属性

付録A.1　基本属性

JP1イベントの基本属性を次に示します。なお，独自イベントを発行する際，またはJP1/SES形式のイベントを変換する際に利用する基本属性は，イベントIDとメッセージです。そのほかの基本属性については，主にJP1イベントを取得する際の参考にしてください。

表A-1　基本属性

属性の項目
説　明

イベントDB内の通し番号
発行元によらないでこのイベントサーバに到達した順番（ローカルイベントも含む）。この属性はJP1イベントのイベントサーバ間の転送時に保存されない。主にJP1イベントをユーザーアプリケーションが取得したときやほかのイベントサーバへ転送したときの漏れ・重複の防止に用いる。

イベントID
発行元のアプリケーションや事象の内容を表す８バイトの値。各日立プログラムおよびユーザーアプリケーションには，イベントのIDの範囲が割り当てられている。ユーザーアプリケーションに指定できる値の範囲は，0～0x1FFFおよび0x7FFF8000～0x7FFFFFFFである。イベントIDは，システム全体でユニーク性を保持できるように割り当てる必要がある。なお，メッセージIDの8バイトのうち上位4バイトが基本部，下位4バイトが拡張部となっている。

登録要因
JP1イベントがこのイベントサーバに登録された要因。この属性はJP1イベントのイベントサーバ間転送時に保存されない。登録要因を次に示す。
1：自イベントサーバから自イベントサーバあての発行
2：自イベントサーバから他イベントサーバあての発行
3：他イベントサーバから自イベントサーバあての発行
4：環境設定の指定による他イベントサーバから自イベントサーバへの転送

プロセスID
発行元アプリケーションプログラムのプロセスID。

登録時刻
発行元イベントサーバでの登録時刻（発行元ホストの時計に基づく。UTCの1970-01-01 00:00:00からの秒数）。

到着時刻
自イベントサーバでの登録時刻（UTCの1970-01-01 00:00:00からの秒数）。この属性はJP1イベントのイベントサーバ間転送時に保存されない。

発行元ユーザーID
発行元プロセスのユーザーID。WindowsとJavaでは環境設定による固定値（-1～65,535）。

発行元グループID
発行元プロセスのグループID。WindowsとJavaでは環境設定による固定値（-1～65,535）。

発行元ユーザー名
発行元プロセスのユーザー名。

発行元グループ名
発行元プロセスのグループ名。WindowsとJavaではNULL文字列。

発行元イベントサーバ名
発行元のイベントサーバ名。JP1イベントが転送された場合でもこのJP1イベントが発生したホストのイベントサーバ名が入る。

送信先イベントサーバ名
発行元アプリケーションが他イベントサーバへの転送を明示して指定した場合に，他イベントサーバの名称が入る。

発行元IPアドレス
発行元イベントサーバに対応するIPアドレス（NATやプロキシを経由した場合および環境設定で転送したJP1イベントについては正確な値ではない）。

送信先IPアドレス
送信先イベントサーバに対応するIPアドレス（NATやプロキシを経由した場合および環境設定で転送したJP1イベントについては正確な値ではない）。

発行元別通し番号
発行元ホストでのイベントDB内通し番号（転送によって値は変化しない）。

コードセット
メッセージ・詳細情報・拡張属性が記述されている文字コードセット名。

メッセージ
メッセージは次の規則に基づいて指定する。

事象の内容をわかりやすく説明する。

改行コードを含めないで１行で書く。

詳細情報
任意のデータ。

付録A.2　拡張属性

JP1イベントの拡張属性を次に示します。拡張属性には，共通情報と固有情報があります。

＜この項の構成＞

(1)　共通情報

(2)　固有情報

(1)　共通情報

拡張属性の共通情報を次に示します。

表A-2　拡張属性（共通情報）

属性名
項目
内容

SEVERITY
重大度
次に示す重大度がある。
Emergency，Alert，Critical，Error，Warning，
Notice，Information，Debug
重大度の詳細については，「表A-3　重大度の意味」を参照のこと。

USER_NAME
ユーザー名
ユーザー名。業務を実行しているユーザーの名前。

PRODUCT_NAME
プロダクト名
プロダクト名。プロダクト名は，スラント「/」で区切られた半角英数字列となる。次のどちらかの形式に従い，会社ごとにユニークな文字列となるようにする。
/会社名/シリーズ名/プロダクト名
または
/会社名/プロダクト名
なお，会社名「HITACHI」は予約されているため，使用できない。

OBJECT_TYPE
オブジェクトタイプ
オブジェクトタイプには，イベント発行元のオブジェクトの種類を指定する。デフォルトでは，次のオブジェクトタイプが登録されている。このタイプを使用してJP1イベントのフィルタリングおよび検索を実行するため，同じ意味を持つJP1イベントは，できるだけ同じオブジェクトタイプとして扱えるように指定する。
新しいオブジェクトタイプを追加する場合は，ユニークな名称を指定する。オブジェクトタイプを追加した場合は，オブジェクトタイプ定義ファイルを作成する必要がある。
JOB：ジョブ
JOBNET：ジョブネット
ACTION：アクション
ACTIONFLOW：アクションフロー
PRINTJOB：印刷ジョブ
PRINTQUEUE：プリントキュー
PRINTER：プリンタ
BATCHQUEUE：バッチキュー
PIPEQUEUE：パイプキュー
JOBBOX：ジョブボックス
LOGFILE：ログファイル
LINK：リンク（下位層の通信レイヤーの事象通知用）
SERVICE：サービス（デーモンプロセスなど）
PRODUCT：プロダクト（プログラム固有のそのほかの事象通知用）
CONFIGRATION：構成定義
SERVER：サーバ
BACKUP：バックアップ
RESTORE：リストア
MEDIA：メディア

OBJECT_NAME
オブジェクト名
オブジェクト名。オブジェクトタイプを特定するための名称を指定する。例えば，オブジェクトタイプが「JOB」の場合はジョブ名称などを指定する。

ROOT_OBJECT_TYPE
登録名タイプ
登録名タイプ。オブジェクトタイプの親オブジェクトのタイプを指定する。これは，オブジェクトが階層を持つ場合などに有効である。例えば，オブジェクトタイプが「JOB」の場合，ルートオブジェクトタイプは「JOBNET」となる。ルートオブジェクトタイプが存在しない場合は，オブジェクトタイプと同じ種別を指定すること。デフォルトでは，オブジェクトタイプと同じ値が定義されている。

ROOT_OBJECT_NAME
登録名
登録名。上記のルートオブジェクトタイプを特定するための名称を指定する。例えば，ジョブネット名称などを指定する。

OBJECT_ID
オブジェクトID
オブジェクトID。
PRODUCT_NAMEとの組み合わせによってオブジェクトのインスタンスを統合システム内で一意に意識できる文字列（形式は他製品に依存する。この情報はJP1/IMの［統合機能メニュー］画面から各製品のモニターを呼び出すときに使用する）。

OCCURRENCE
事象種別
特定のオブジェクトについて，イベントの発行契機となる事象を設定する。デフォルトでは次のものがある。基本的には，オブジェクトタイプとこの事象種別によってフィルター設定などをすることで，特定のオブジェクトの特定の事象を選択できるようになる。
ACTIVE：アクティブになった
INACTIVE：非アクティブになった
START：開始した
END：終了した
NOTSTART：開始できなかった
CANCEL：キャンセルされた
LATESTART：開始予定時刻を過ぎた
LATEEND：終了予定時刻を過ぎた
SUBMIT：サブミットされた
UNSUBMIT：サブミットが取り消された
ENQUEUE：キューに登録された
DEQUEUE：キューから削除された
PAUSE：一時停止（保留）
RELEASE：一時停止の解除（保留解除）
RESTART：再実行を開始した
CREATE：作成された
DELETE：削除された
MODIFY：更新された
RETRY：リトライを開始した
STOP：停止中
MOVE：移動した
COPY：コピーした
NOTICE：通知した（オペレーターなどへの通知結果）
REPLY：応答された
CONNECT：接続した
DISCONNECT：切り離した
EXCEPTION：そのほかのエラーが発生した

START_TIME
開始時刻
実行開始または再実行開始の時刻。UTC 1970年1月1日 00:00:00からの秒数で指定する。事象種別がSTART，RESTART，PAUSE，RELEASE，またはENDの場合だけに指定する。

END_TIME
終了時刻
実行終了の時刻。UTC 1970年1月1日 00:00:00からの秒数で指定する。事象種別がENDの場合だけに指定する。

RESULT_CODE
終了コード
10進数文字列の終了コード。事象種別がENDの場合だけに指定する。

PLATFORM※
－
イベント拡張属性定義ファイル，モニター画面呼び出し定義ファイルなどでプラットフォーム種別として指定する任意の文字列を指定する。省略した場合は，「base」が指定されたものとして扱われる。

ACTION_VERSION※
－
モニター画面呼び出しのときのバージョン情報として使用する。複数バージョンが混在していて，それぞれの場合に呼び出す画面などが異なる場合に必要である。指定しない場合は，モニター画面呼び出し定義でバージョン指定を使用しないこと。

注※

これらの属性はJP1/IMのイベント詳細情報には表示されません。ただし，JP1/IMでイベント拡張属性定義ファイルに定義した場合はJP1/IMのイベント詳細情報に表示されます。

「重大度」の意味

拡張属性の共通情報「重大度」の意味を次の表に示します。独自イベントやJP1/SES形式のイベントの「重大度」を設定するときには，ここに示す基準を指針としてください。なお，発行時に「重大度」が指定されていないイベントは，JP1/IMの［イベントコンソール］画面に表示されません。

表A-3　重大度の意味

重大度 | 表示名称 | 意　味
Emergency | 緊急 | パニック状態。通常すべてのユーザーにブロードキャストするもの
Alert | 警戒 | システムやデータベースの破壊など，直ちに修復が必要な状態
Critical | 致命的 | ハードデバイスのエラーなどの危険な状態
Error | エラー | エラー
Warning | 警告 | 警告メッセージ
Notice | 通知 | エラー状態ではないが，特別な扱いが必要な状態
Information | 情報 | 通知メッセージ
Debug | デバッグ | 通常，プログラムのデバッグ時だけに使用する情報を含むメッセージ。メッセージ量の問題が発生するので，JP1イベント発行の対象としない

(2)　固有情報

共通情報のほかに，JP1イベントに付加して利用価値のある情報をプログラムごとに固有情報として設定します。拡張属性の固有情報を設定した場合は，JP1/IMでイベント拡張属性定義ファイルに定義する必要があります。

固有情報を設定するときの規則を次に示します。

属性名は意味のない記号名でもよい。

属性名と意味は，同じ「PRODUCT_NAME」の拡張属性を持つ各プログラムで１対１で対応するようにする。

付録B　サンプルソースファイル

JP1/Baseでは，Cで作成したファイルを，次に示すサンプルソースファイルとして提供しています。

sender.c

receiver.c

これらのサンプルソースファイルは，次に示すディレクトリに格納されています。必要に応じてご利用ください。

Windows：Baseパス¥tools¥event¥

UNIX：/opt/jp1base/tools/event/

サンプルソースファイルの文字コードは，OSごとに異なります。OSと文字コードの対応を次の表に示します。

表B-1　サンプルソースファイルの文字コード

OS | 文字コード
Windows | シフトJIS
HP-UX | シフトJIS
Solaris | 日本語EUC
AIX | シフトJIS
Linux | 日本語EUC

次にサンプルソースファイルの詳細について説明します。

＜この節の構成＞

付録B.1　サンプルソースファイルの詳細

付録B.1　サンプルソースファイルの詳細

＜この項の構成＞

(1)　サンプルソースファイルで扱うイベント

(2)　サンプルソースファイルのコーディング内容

(1)　サンプルソースファイルで扱うイベント

サンプルソースファイルで扱うイベントは次のとおりです。

表B-2　サンプルソースファイルで扱うイベント

属性の種別 | 項目 | 属性名 | 内容
基本属性 | イベントID | － | 0x00000001
メッセージ | － | 「Starts the SAMPLE application.」
拡張属性(共通情報) | 重大度 | SEVERITY | Notice
ユーザー名 | USER_NAME | アプリケーション実行ユーザー名
プロダクト名 | PRODUCT_NAME | /COMPANY/APP1/SAMPLE_PRODUCT(プロダクトの名称)
オブジェクトタイプ | OBJECT_TYPE | SAMPLE
オブジェクト名 | OBJECT_NAME | SAMPLE_NAME
登録名タイプ | ROOT_OBJECT_TYPE | ROOT_SAMPLE
登録名 | ROOT_OBJECT_NAME | ROOT_SAMPLE_NAME
オブジェクトID | OBJECT_ID | SAMPLE_ID
事象種別 | OCCURRENCE | START
開始時刻 | START_TIME | SAMPLEアプリケーションの開始時刻。UTC 1970年1月1日00:00:00からの秒数。
プラットフォーム | PLATFORM | NT
バージョン情報 | ACTION_VERSION | 0600
拡張属性(固有情報) | SAMPLE共通属性1 | COMMON_ATTR1 | NATIVE
SAMPLE共通属性2 | COMMON_ATTR2 | TRUE
SAMPLE開始属性1 | START_ATTR1 | SAMPLE1
SAMPLE開始属性2 | START_ATTR2 | SAMPLE2

(2)　サンプルソースファイルのコーディング内容

sender.c，receiver.cそれぞれのコーディング内容を次に示します。

(a)　sender.cのコーディング内容

#include <stdio.h>
#include <time.h>
#include "JevApi.h"

int regist_start_event()
{
     int rc;                    /* リターンコード */
     long status = 0;           /* 詳細エラーコード */
     const char* server;        /* イベントサーバ名 */
     long baseID;               /* イベントID */
     const char* message;       /* メッセージ */
     char starttime[32];
     const char* extattrs[16];  /* 拡張属性を格納するための配列 */

     /* 登録先イベントサーバ名を設定します */
     server = NULL;

     /* イベントIDを設定します */
     baseID = 0x00000001;

     /* メッセージを設定します */
     message = "Starts the SAMPLE application.";

     /* 拡張属性を設定します */
     extattrs[0]  = "SEVERITY=Notice";
     extattrs[1]  = "USER_NAME=SAMPLE_USER";
     extattrs[2]  = "PRODUCT_NAME=/COMPANY/APP1/SAMPLE_PRODUCT";
     extattrs[3]  = "OBJECT_TYPE=SAMPLE";
     extattrs[4]  = "OBJECT_NAME=SAMPLE_NAME";
     extattrs[5]  = "OBJECT_ROOT_TYPE=ROOT_SAMPLE";
     extattrs[6]  = "OBJECT_ROOT_NAME=ROOT_SAMPLE_NAME";
     extattrs[7]  = "OBJECT_ID=SAMPLE_ID";
     extattrs[8]  = "OCCURRENCE=START";
     sprintf(starttime, "START_TIME=%ld", time(NULL));
     extattrs[9]  = starttime;
     extattrs[10] = "PLATFORM=NT";
     extattrs[11] = "VERSION=0600";
     extattrs[12] = "COMMON_ATTR1=NATIVE";
     extattrs[13] = "COMMON_ATTR2=TRUE";
     extattrs[14] = "START_ATTR1=SAMPLE1";
     extattrs[15] = "START_ATTR2=SAMPLE2";

     /* JP1イベントを登録します */
     rc = JevRegistEvent(&status,
                         server,
                         baseID,
                         message,
                         extattrs,
                         16);
     if(rc < 0) {
         fprintf(stderr,
                 "JevRegistEvent() failed. status = %ld¥n",
                  status);
         return -1;
     }

     return 0;
}

int main()
{
     return regist_start_event();
}

(b)　receiver.cのコーディング内容

#include <stdio.h>
#include <string.h>
#include "JevApi.h"

int get_start_event()
{
     int rc;               /* リターンコード */
     long position;        /* イベントDB内の通し番号 */
     long status;          /* 状態コードアドレス */
     char filter[256];     /* フィルター文バッファー */
     const char *server;   /* イベントサーバ名 */
     const char *message;  /* メッセージへのポインターのアドレス */
     const char *name;     /* 拡張属性名へのポインターのアドレス */
     const char *value;    /* 拡張属性値へのポインターのアドレス */
     JEVGETKEY key;        /* JP1イベント取得用ハンドル */
     JP1EVENT event;       /* JP1イベントアクセス用ハンドル */
     JEVACCESSTYPE access; /* JP1イベントが存在しない場合の動作 */

     /* 必要なJP1イベントを取得するためのフィルター文を設定します */
     strcpy(filter, "B.ID IN 00000001¥n");
     strcat(filter, "E.SEVERITY IN Notice¥n");
     strcat(filter,
            "E.PRODUCT_NAME IN /COMPANY/APP1/SAMPLE_PRODUCT");

     /* 物理ホストのイベントサーバに接続します */
     status = 0;
     /* 接続先は物理ホストのイベントサーバ */
     server = NULL;
     /* 取得の基点はイベントDB内の通し番号0以降から */
     position = 0;
     key = JevGetOpen(&status, server, filter, position);
     if(key == NULL){
         fprintf(stderr,
                 "JevGetOpen() failed. Status = %ld¥n",
                 status);
         return -1;
     }

     /* フィルターに合致するJP1イベントを全件取得します */
     while(1) {
         status = 0;
         /* 該当するJP1イベントがなければエラーリターン */
         access = JEVGET_NOWAIT;
         event = JevGetEvent(&status, key, access);
         if(event == NULL){
             if(status == JEV_S_NO_EVENT) {
                 /* 該当するJP1イベントはこれ以上存在しません */
                 break;
             }
             else {
                 /* JP1イベント取得時にエラーが発生しました */
                 fprintf(stderr,
                         "JevGetEvent() failed. Status = %ld¥n",
                         status);
                 JevGetClose(&status, key);
                 return -1;
             }
         }

         /* メッセージを取得します */
         status = 0;
         rc = JevGetMessage(&status, event, &message);
         if(rc < 0){
             fprintf(stderr,
                     "JevGetMessage() failed. Status = %ld¥n",
                     status);
             JevFreeEvent(&status, event);
             JevGetClose(&status, key);
             return -1;
         }
         else{
             printf("JevGetMessage() message = %s¥n", message);
         }

         /* (最初の)拡張属性を取得します */
         status = 0;
         rc = JevGetFirstExtAttr(&status, event, &name, &value);
         if(rc < 0){
             fprintf(stderr,
                     "JevGetFirstExtAttr() failed. Status = %ld¥n",
                     status);
             JevFreeEvent(&status, event);
             JevGetClose(&status, key);
             return -1;
         }
         else{
             printf("JevGetFirstExtAttr() name = %s¥n", name);
             printf("JevGetFirstExtAttr() value = %s¥n", value);
         }

         /* (継続の)拡張属性を取得します */
         while(1) {
             status = 0;
             rc = JevGetNextExtAttr(&status, event, &name, &value);
             if(rc < 0 ){
                 if(status == JEV_S_EXTATTR_EOD) {
                 /* 拡張属性はこれ以上存在しません */
                     break;
                 }
                 else {
                     /* 拡張属性の取得でエラーが発生しました */
                     fprintf(stderr,
                             "JevGetNextExtAttr() failed. Status = %ld¥n",
                             status);
                     JevFreeEvent(&status, event);
                     JevGetClose(&status, key);
                     return -1;
                 }
             }
             else {
                 printf("JevGetNextExtAttr() name = %s¥n", name);
                 printf("JevGetNextExtAttr() value = %s¥n", value);
             }
         }

         /* 取得したJP1イベント用メモリーを解放します */
         rc = JevFreeEvent(&status, event);
         if(rc < 0){
             fprintf(stderr,
                     "JevFreeEvent() failed. Status = %ld¥n",
                     status);
             JevGetClose(&status, key);
             return -1;
         }
     }

     /* イベントサーバから切断します */
     rc = JevGetClose(&status, key);
     if(rc < 0){
         fprintf(stderr,
                 "JevGetClose() failed. Status = %ld¥n",
                 status);
         return -1;
     }

     return 0;
}

int main()
{
     return get_start_event();
}

付録C　互換用ライブラリー

08-00～08-11のJP1/Baseでは，ユーザーアプリケーションをコンパイルおよびリンクする場合のための，互換用ライブラリーを提供しています。

各OSで必要な互換用ライブラリーを次の表に示します。

表C-1　互換用ライブラリー

OS
互換用ライブラリー

Windows 2000
Windows XP Professional
Windows Server 2003※
Baseパス¥lib¥libJevApi.lib

Windows Vista※
Baseパス¥lib¥libJevApi80.lib

Windows Server 2003(IPF)
Baseパス¥lib¥libJevApi.lib

HP-UX(PA-RISC)
/opt/jp1base/lib/libJevApi32.a（シングルスレッド用）
/opt/jp1base/lib/libJevApi32MT.a（マルチスレッド用）

HP-UX (IPF)
/opt/jp1base/lib/libJevApi32.a（32ビット シングルスレッド用）
/opt/jp1base/lib/libJevApi32MT.a（32ビット マルチスレッド用）
/opt/jp1base/lib/libJevApi64.a（64ビット シングルスレッド用）
/opt/jp1base/lib/libJevApi64MT.a（64ビット マルチスレッド用）

Solaris
/opt/jp1base/lib/libJevApi60.a（シングルスレッド用）
/opt/jp1base/lib/libJevApi60MT.a（マルチスレッド用）

AIX
/opt/jp1base/lib/libJevApi42.a（シングルスレッド用）
/opt/jp1base/lib/libJevApi42MT.a（マルチスレッド用）

Linux (x86, IPF)
/opt/jp1base/lib/libJevApi34.a（シングルスレッド用）
/opt/jp1base/lib/libJevApi34MT.a（マルチスレッド用）

注※　x64版(64ビット)のネイティブアプリケーションを作成することはできません。x86版(32ビット)アプリケーションを作成してWOW64上で動作させてください。

注意事項

UNIX版で各関数を使用する場合は，main()関数をC++で記述およびコンパイルし，最終的なリンケージをC++ドライバープログラムで実行しなければなりません。

索引

[Ｊ][Ｒ][Ｓ]
[ア行][カ行][サ行][タ行][ラ行]

(英字)

(Ｊ)

JevFreeEvent

JevGetArrivedTime

JevGetBaseID

JevGetClose

JevGetCodeSet

JevGetDestinationAddress

JevGetDestinationServer

JevGetDetailInformation

JevGetEvent

JevGetExtAttrDirect

JevGetExtID

JevGetFirstExtAttr

JevGetMessage

JevGetNextExtAttr

JevGetOpen

JevGetProcessID

JevGetRegistFactor

JevGetRegistGroupID

JevGetRegistGroupName

JevGetRegistTime

JevGetRegistUserID

JevGetRegistUserName

JevGetSequenceNumber

JevGetSourceAddress

JevGetSourceSequenceNumber

JevGetSourceServer

JevRegistEvent

JP1/Base

インストール

JP1/SES形式のイベント

JP1/SES形式のイベントとは

変換する

変換手順

変換の概要

JP1イベント

JP1/SES形式イベントの変換手順

JP1/SES形式イベントへの拡張属性，メッセージの付加

JP1/SES形式イベント変換の概要

イベント取得フィルターを指定する

拡張属性

機能の解説

基本属性

取得関数（JP1/Base提供）

取得する手順

取得の概要

種類と属性を決める

種類と属性を決める

前提条件

属性の設定基準

発行および取得する

発行関数（JP1/Base提供）

発行する手順

発行の概要

JP1イベント取得関数

JevFreeEvent

JevGetArrivedTime

JevGetBaseID

JevGetClose

JevGetCodeSet

JevGetDestinationAddress

JevGetDestinationServer

JevGetDetailInformation

JevGetEvent

JevGetExtAttrDirect

JevGetExtID

JevGetFirstExtAttr

JevGetMessage

JevGetNextExtAttr

JevGetOpen

JevGetProcessID

JevGetRegistFactor

JevGetRegistGroupID

JevGetRegistGroupName

JevGetRegistTime

JevGetRegistUserID

JevGetRegistUserName

JevGetSequenceNumber

JevGetSourceAddress

JevGetSourceSequenceNumber

JevGetSourceServer

使用してコーディングする

JP1イベント発行関数

JevRegistEvent

使用してコーディングする

(Ｒ)

receiver.c（JP1イベント取得用サンプルソースファイル）

コーディング内容

(Ｓ)

sender.c（JP1イベント発行用サンプルソースファイル）

コーディング内容

SEVERITY（重大度）

(ア行)

(い)

イベント属性

(カ行)

(か)

概要

拡張属性

共通情報

固有情報

拡張属性マッピング設定ファイル

定義例（単一のマッピング）

定義例（複数のマッピング）

関数

JevFreeEvent

JevGetArrivedTime

JevGetBaseID

JevGetClose

JevGetCodeSet

JevGetDestinationAddress

JevGetDestinationServer

JevGetDetailInformation

JevGetEvent

JevGetExtAttrDirect

JevGetExtID

JevGetFirstExtAttr

JevGetMessage

JevGetNextExtAttr

JevGetOpen

JevGetProcessID

JevGetRegistFactor

JevGetRegistGroupID

JevGetRegistGroupName

JevGetRegistTime

JevGetRegistUserID

JevGetRegistUserName

JevGetSequenceNumber

JevGetSourceAddress

JevGetSourceSequenceNumber

JevGetSourceServer

JevRegistEvent

一覧

記述形式

共通の注意事項

サンプルソースファイルの提供

(き)

基本属性

旧バージョンから移行する

共通情報

(こ)

コーディング例（JP1イベント取得用）

コーディング例（JP1イベント発行用）

互換用ライブラリー

固有情報

コンパイラーのインストール

コンパイル

コンパイルオプション

必要ファイル（JP1イベント取得用）

必要ファイル（JP1イベント発行用）

方法（JP1イベント取得用）

方法（JP1イベント発行用）

(サ行)

(さ)

再コンパイルして移行する

再コンパイルしないで移行する

サンプルソースファイル

扱うイベント

コーディング内容

詳細

(し)

「重大度」の意味

(そ)

ソースファイルをコンパイルする

(タ行)

(と)

独自イベント

特長

(ラ行)

(ら)

ライブラリー（JP1イベント取得用）

ライブラリー（JP1イベント発行用）

(り)

リンクオプション

■ 商標類

Active Directoryは，米国Microsoft Corporationの，米国およびその他の国における登録商標または商標です。
AIXは，米国における米国International Business Machines Corp.の登録商標です。
AMDは，Advanced Micro Devices, Inc.の商標です。
BackOfficeは，米国Microsoft Corp.の登録商標です。
HP-UXは，米国Hewlett-Packard Companyのオペレーティングシステムの名称です。
IBMは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
Internet Explorerは，米国Microsoft Corp.の米国及びその他の国における登録商標または商標です。
Itaniumは，アメリカ合衆国および他の国におけるインテル コーポレーションまたはその子会社の登録商標です。
Java 及びすべてのJava関連の商標及びロゴは，米国及びその他の国における米国Sun Microsystems, Inc.の商標または登録商標です。
JDKは，米国 Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
Linuxは，Linus Torvaldsの米国およびその他の国における登録商標あるいは商標です。
Microsoftは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
OpenViewは，ヒューレット・パッカード社の商標です。
PA-RISCは，米国Hewlett-Packard Companyの商標です。
POSIXは，the Institute of Electrical and Electronics Engineers, Inc. (IEEE)で制定された標準仕様です。
Red Hatは，米国およびその他の国でRed Hat, Inc. の登録商標若しくは商標です。
Solarisは，米国Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
すべてのSPARC商標は，米国SPARC International, Inc. のライセンスを受けて使用している同社の米国およびその他の国における商標または登録商標です。SPARC商標がついた製品は，米国Sun Microsystems, Inc. が開発したアーキテクチャに基づくものです。
UNIXは，X/Open Company Limited が独占的にライセンスしている米国ならびに他の国における登録商標です。
Visual C++は，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windowsは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windows NTは，米国およびその他の国における米国Microsoft Corp.の登録商標です。
Windows Serverは，米国Microsoft Corporationの米国及びその他の国における登録商標です。
Windows Vistaは，米国Microsoft Corporationの米国及びその他の国における登録商標です。
XPG4は，X/Open Company Limitedの規格名称です。
プログラムプロダクト「P-9D2C-6L81」には，UNIX System Laboratories, Inc.が著作権を有している部分が含まれています。
プログラムプロダクト「P-9D2C-6L81」には，米国Sun Microsystems, Inc.が著作権を有している部分が含まれています。