http://www-06.ibm.com/jp/domino01/mkt/cnpages3.nsf/page/default-002416B5
V6R1では次のバージョンからWindows7がサポートされるそうです。V5R4はサポートされないけど、リフレッシュ・オーダー(無償)でV6R1版が入手できるらしいです。
http://www-06.ibm.com/jp/domino01/mkt/cnpages3.nsf/page/default-002416B5
V6R1では次のバージョンからWindows7がサポートされるそうです。V5R4はサポートされないけど、リフレッシュ・オーダー(無償)でV6R1版が入手できるらしいです。
AS400をDBとしてしか使っていないので、もっと活用しようとrs6000の日記を読ませてもらっているが基礎知識が無さ過ぎてJavaの開発環境の構築からできていない。
もっとAS400の基礎から学ばなくてはと思い、探してみたところInside the AS/400-日本語版に辿り着く。読んでみたいと思ったがそもそも注文ができないorz
どうもゲストもしくは会員としてログインしないとバスケットが正常に機能しない模様。
それにしてもAS400って公式マニュアル以外の書籍が圧倒的に少ないよなぁ。
7/7からV5R4M0向けにSI35287が提供開始されてた。
http://www-06.ibm.com/jp/domino01/mkt/cnpages3.nsf/page/default-002416B5
参照を追加したらフォームにdataGridView1とbutton1を追加。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using IBM.Data.DB2.iSeries;
namespace DB2Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
const string CN_STRING_DB2 = "DataSource=(ホスト名);USERID=(ユーザー名);PASSWORD=(パスワード);";
StringBuilder sqlbldr = new StringBuilder();
sqlbldr.AppendLine("select");
sqlbldr.AppendLine(" COUNT(*)");
sqlbldr.AppendLine("FROM");
sqlbldr.AppendLine(" TESTLIB.TEST");
using (iDB2Connection cn = new iDB2Connection(CN_STRING_DB2))
{
cn.Open();
iDB2Command cmd = cn.CreateCommand();
cmd.CommandText = sqlbldr.ToString();
using (iDB2DataAdapter da = new iDB2DataAdapter(cmd))
{
DataTable dt = new DataTable();
dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
da.Fill(dt);
dataGridView1.DataSource = dt;
}
}
}
}
}その後、iSeriesナビゲーターがインストールされていないXP上で実行すると・・・
だめでした。エラーメッセージのせておきます。
|
See the end of this message for details on invoking ************** Exception Text ************** ************** Loaded Assemblies ************** ************** JIT Debugging ************** For example: <configuration> When JIT debugging is enabled, any unhandled exception |
MySQLみたいな設計なら、iSeriesナビゲーターに含まれる.Net Providorでも同じ事ができるんじゃね?ということで、試してみました。
| C:Program FilesIBMClient Access 以下にあるIBM.Data.DB2.iSeries.dllをコピー | |
| C#のプロジェクト内へコピー。その後、参照設定でDLLを指定。 | |
| こんな風にする。 |
AS400上のクエリで日付演算するには・・・
CAST(’2009-05-07′ as DATE) as TEST
CAST(’2009-05-07′ as DATE) – 7 DAY as TEST
前に調べたけど、忘れてしまいかなり探しました。区切り文字の’-'はAS400のバージョンに依存するかもしれません。この表記はV5R4で確認。
前回のように設定すると4つほど問題が発生。
| RUNRMTCMD CMD(’D:\CMDS\AS400MAIL 1.BAT’) RMTLOCNAME(’192.168.xxx.xxx’ *IP) CCSID(943) |
| RUNRMTCMD CMD(’D:\CMDS\AS400MAIL 1.BAT’) RMTLOCNAME(’192.168.xxx.xxx’ *IP) RMTUSER(TEST) RMTPWD(TEST) CCSID(943) |
| RUNRMTCMD CMD(’D:/CMDS/AS400MAIL 1.BAT’) RMTLOCNAME(’192.168.xxx.xxx’ *IP) RMTUSER(TEST) RMTPWD(TEST) CCSID(943) |
| Microsoft (R) Windows Script Host Version 5.7 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. |
| cscript //B AS400Mail.vbs |
前回の続きです。
| AS400Mail.vbsとAS400MAIL.BATを設置したサーバーにて「」サービスを起動します。 | |
| 再起動時にも開始されるように自動にします。 | |
| デスクトップとの「対話サービスの許可」が無くてもOKでした。 | |
| 空白などが含まれないパスにAS400Mail.vbsとAS400MAIL.batをコピーします。 ここでは「D:\cmds」としました。 |
| 監視するメッセー ジ対象とRUNRMTCMDを指定。 RUNRMTCMD CMD(’D:\CMDS\AS400MAIL 1.BAT’) RMTLOCNAME(’192.168.xxx.xxx’ *IP) CCSID(943) これでいけました。 |
|
| メッセージ監視間隔を指定。 | |
| この辺は特に触ってません。 | |
| AS400のIPL時にメッセージのモニタが停止してしまう場合は、この辺をチェックすると治る。 |
| RUNRMTCMD CMD(’D:\CMDS\AS400MAIL.BAT’) RMTLOCNAME(’192.168.xxx.xxx’ *IP) CCSID(943) |
| RUNRMTCMD CMD(’D:\CMDS\AS400MAIL.BAT 1′) RMTLOCNAME(’192.168.xxx.xxx’ *IP) CCSID(943) |
AS400の異常をメールで通知する方法を探していたが、
| 外部のSMTPサーバーを利用してメールを送信する事はできない。 |
| SMTPサーバーを立てても日本語は扱えない。 |
| SMTPサーバーを立ててもユーザーが無いと送信できない |
などの諸事情と自身のAS400に対するスキルの無さを踏まえた上で下記の方法を取った。
こうしてしまえばあとはWindowsの領域に無理矢理引きずり出せる。VBScriptは起動時に
| cscript AS400Mail.vbs |
としなくてはならないので、呼び出し用のbatファイルを組み合わせました。メールのSubjectとBodyをvbs内で設定するようにしたのは、batファイルから渡せなかった為の妥協です(汗)。
Set a = CreateObject("CDO.Message")
a.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
a.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.xxx.xxx"
a.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
a.Configuration.Fields.Update
a.From = "xxxx@exsample.com"
a.To = "test@exsample.com"
a.Subject = "[AS400]エラー通知"
a.TextBody = "AS400にてエラーしました。" & vbCrLf
'// 送信パターン指定があるか?
If WScript.Arguments.Named.Exists("I") Then
iSendMode = 0
If WScript.Arguments.Named("I") <> "" Then
iSendMode = CInt(WScript.Arguments.Named("I"))
End If
SELECT CASE iSendMode
CASE "1"
' 01 ファイルロックモニタ用
a.Subject = "[AS400]ファイルロック発生通知"
a.TextBody = "AS400にてファイルロック発生通知が発生したようです。" & vbCrLf
CASE ELSE
a.Subject = "[AS400]エラー通知"
a.TextBody = "AS400にてエラーしました。" & vbCrLf
END SELECT
End If
'// 時刻を末尾に追加
a.TextBody = a.TextBody & Now
'// メール送信
a.Send
cscript D:\cmds\As400Mail.vbs /I:%1
SELECT
CURRENT_DATE,
CURRENT_TIME
FROM
TESTLIB.TEST