[AIX] errptにテストデータを書き込む方法。

ラベル:OPMSGで良い場合はerrloggerコマンドが使用できます。
```
# errlogger "This is test message"
```
```
---------------------------------------------------------------------------
ラベル:         OPMSG
ID:             AA8AB241

日付/時刻:       XXXXX
順序番号:        XXX
マシン ID:       XXXXX
ノード ID:       XXXXX
クラス:          O
タイプ:          TEMP
WPAR:            Global
リソース名:      OPERATOR

説明
オペレーター通知

ユーザー側の原因
errlogger コマンド

        推奨される処置
        詳細データを検討してください

詳細データ
errlogger コマンドからのメッセージ
This is test message
---------------------------------------------------------------------------
```

ラベル指定したい場合はras_loggerコマンドがあります。
```
# /usr/lib/ras/ras_logger << EOF^JSC_DISK_ERR4^JTESTDISK^J0^J8^JEOF
```
※^JはCtrl+V->Jで入力する改行コードです。
```
---------------------------------------------------------------------------
ラベル:         SC_DISK_ERR4
ID:             DCB47997

日付/時刻:       XXXXX
順序番号:        XXX
マシン ID:       XXXXX
ノード ID:       XXXXX
クラス:          H
タイプ:          TEMP
WPAR:            Global
リソース名:      TESTDISK
リソース・クラス: NONE
リソース・タイプ: NONE
ロケーション:

説明
ディスク操作エラー

考えられる原因
メディア
DASD 装置

ユーザー側の原因
メディアに欠陥

        推奨される処置
        除去可能なメディアの場合は、メディアを変更して再試行してください
        問題判別手順を実行してください

障害の原因
メディア
ディスク・ドライブ

        推奨される処置
        除去可能なメディアの場合は、メディアを変更して再試行してください
        問題判別手順を実行してください

詳細データ
パス ID
           8
センス・データ

---------------------------------------------------------------------------
```

detail_data(センスデータ)までこだわりたい場合は、errlogサブルーチンになります。
```
# cat errlogtest.c
/*

/usr/lpp/devices.fcp.disk/inst_root/devices.fcp.disk.rte.err
+ SC_DISK_ERR4:
    Comment = "CD-ROM, disk, or read/write optical recovered error"
    catname = "scdisk.cat"
    Class = H
    Report = TRUE
    Log = TRUE
    Alert = FALSE
    Err_Type = TEMP
    Err_Desc = 1312
    Prob_Causes = 5000, 6310
    User_Causes = 5100
    User_Actions = 1601, 00E1
    Fail_Causes = 5000, 6310
    Fail_Actions = 1601,00E1
    Detail_Data = 2, {3, 2, "PATH ID"}, DEC
    Detail_Data = 302, 11, HEX

# ibm-clang -g -lrts -o errlogtest errlogtest.c
*/

#include <stdio.h>
#include <stdlib.h>
#include <sys/err_rec.h>
#include <sys/errids.h>
#include <string.h>
#include <memory.h>

int main(int argc, char *argv[]){

char *detail_data = "This is test data.";
char path_id = 6;
struct err_rec *err_record;

err_record = (struct err_rec *)calloc(1,sizeof(ERR_REC(ERR_REC_MAX)));
memset(err_record, 0x00, sizeof(ERR_REC(ERR_REC_MAX)));

err_record->error_id = 0xDCB47997;
strncpy(err_record->resource_name, "TESTDSIK", 9);
err_record->detail_data[1] = path_id;
strncpy(&err_record->detail_data[2], &detail_data[0], ERR_REC_MAX-2);

errlog(err_record, sizeof(ERR_REC(ERR_REC_MAX)));

exit(0);

}
```
error_idに指定するIDはerrpt -tコマンドで確認できます。
```
# ./errlogtest
```
```
---------------------------------------------------------------------------
ラベル:         SC_DISK_ERR4
ID:             DCB47997

日付/時刻:       XXXXX
順序番号:        XXX
マシン ID:       XXXXX
ノード ID:       XXXXX
クラス:          H
タイプ:          TEMP
WPAR:            Global
リソース名:      TESTDSIK
リソース・クラス: NONE
リソース・タイプ: NONE
ロケーション:

説明
ディスク操作エラー

考えられる原因
メディア
DASD 装置

ユーザー側の原因
メディアに欠陥

        推奨される処置
        除去可能なメディアの場合は、メディアを変更して再試行してください
        問題判別手順を実行してください

障害の原因
メディア
ディスク・ドライブ

        推奨される処置
        除去可能なメディアの場合は、メディアを変更して再試行してください
        問題判別手順を実行してください

詳細データ
パス ID
           6
センス・データ
5468 6973 2069 7320 7465 7374 2064 6174 612E 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000
---------------------------------------------------------------------------
```
なお、センスデータが不要なラベルを使用する場合は下記のようにerr_rec0構造体を使用できます。
```
#include <stdio.h>
#include <stdlib.h>
#include <sys/err_rec.h>
#include <sys/errids.h>
#include <string.h>
#include <memory.h>

int main(int argc, char *argv[]){

struct err_rec0 err_record;

memset(&err_record, 0x00, sizeof(struct err_rec0));

err_record.error_id = 0xDCB47997;
strncpy(err_record.resource_name, "TESTDSIK", 9);

errlog(&err_record, sizeof(struct err_rec0));

exit(0);

}
```
### 注意:
今回は方法の紹介のみですので、エラーテンプレートの内容などはAIXのマニュアルを参照ください。