
IBM i Access サービス・パック情報
http://www-06.ibm.com/jp/domino01/mkt/cnpages3.nsf/page/default-002416B5 V6R1では次のバージョンからWindows7がサポートされるそうです。V5R4はサポートされないけど、リフレッシュ・オーダー(無償)でV6R1版が入手できるらしいです。 #AS400 #i5
http://www-06.ibm.com/jp/domino01/mkt/cnpages3.nsf/page/default-002416B5 V6R1では次のバージョンからWindows7がサポートされるそうです。V5R4はサポートされないけど、リフレッシュ・オーダー(無償)でV6R1版が入手できるらしいです。 #AS400 #i5
7/7からV5R4M0向けにSI35287が提供開始されてた。 http://www-06.ibm.com/jp/domino01/mkt/cnpages3.nsf/page/default-002416B5 #AS400 #i5
AS400上のクエリで日付演算するには・・・ 文字→日付 CAST(‘2009-05-07’ as DATE) as TEST 日付演算(DATEADD関数の代わり) CAST(‘2009-05-07’ as DATE) – 7 DAY as TEST 前に調べたけど、忘れてしまいかなり探しました。区切り文字の’-‘はAS400のバージョンに依存するかもしれません。この表記はV5R4で確認。 #AS400 #DATEADD #i5
前回のように設定すると4つほど問題が発生。 1. 前回指定したコマンドが動かないRUNRMTCMD CMD(’D:CMDSAS400MAIL 1.BAT’) RMTLOCNAME(’192.168.xxx.xxx’ *IP) CCSID(943) これでエミュレータ上では正常に呼び出せていたが、iSeriesナビゲータを経由するせいなのか、「必要なユーザー ID がないかまたは無効です。」と言われる。結局、下記のように修正した。RUNRMTCMD CMD(’D:CMDSAS400MAIL 1.BAT’) RMTLOCNAME(’192.168.xxx.xxx’ *IP) RMTUSER(TEST) RMTPWD(TEST) CCSID(943) 2. パスが認識されない 困ったことに、iSeriesナビゲータ上のコマンド呼び出しでは¥(ほんとは半角)が使えない模様。 物は試しということで、/(スラッシュ)にしたらOKだった。RUNRMTCMD CMD(’D:/CMDS/AS400MAIL 1.BAT’) RMTLOCNAME(’192.168.x
前回の続きです。 iSeries Access for Windows リモート・コマンドの設定 iSeries Access for Windows リモート・コマンドの設定 RUNRMTCMD CMD(‘D:CMDSAS400MAIL 1.BAT’) RMTLOCNAME(‘192.168.xxx.xxx’ *IP) CCSID(943) これでいけました。 上の’D:CMDSAS400MAIL.BAT’部分をRUNRMTCMD CMD(‘D:CMDSAS400MAIL.BAT 1’) RMTLOCNAME(‘192.168.xxx.xxx’ *IP) CCSID(943) などにするとAS400Mail.vbsのCASE文のメッセージでメールが送信されます。 ちなみにメッセージをモニタする方法はiSeriesナビゲーターでしか無いらしい。あと、AS400MAIL.BATに@ECHO OFFを設定しないと標準出力のプリンタからなんか出てきます。 以上がAS400をDBとしてしか使えない人によるAS400の監視方法でした。また、より良い方法を求
AS400の異常をメールで通知する方法を探していたが、外部のSMTPサーバーを利用してメールを送信する事はできない。SMTPサーバーを立てても日本語は扱えない。SMTPサーバーを立ててもユーザーが無いと送信できない などの諸事情と自身のAS400に対するスキルの無さを踏まえた上で下記の方法を取った。 AS400自身からメールを送信することは諦めて、RUNRMTCMDを使う こうしてしまえばあとはWindowsの領域に無理矢理引きずり出せる。VBScriptは起動時にcscript AS400Mail.vbs としなくてはならないので、呼び出し用のbatファイルを組み合わせました。メールのSubjectとBodyをvbs内で設定するようにしたのは、batファイルから渡せなかった為の妥協です(汗)。 AS400Mail.vbs Set a = CreateObject("CDO.Message") a.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/s
SELECT CURRENT_DATE, CURRENT_TIME FROM TESTLIB.TEST こんなSQLを流してみると、ODBCとiSeries Access for Windowsで時刻の区切り文字が違う事を発見。日付を数値で格納しているカラムへ現在の日時を保存するためのクエリが接続方式によって若干変わります。 現在時刻→数値(hhmmss) ODBC CAST(REPLACE(CAST(CURRENT_TIME AS VARCHAR(10)), ‘:’ , ”) as INTEGER) iSeries Access for Windows CAST(REPLACE(CAST(CURRENT_TIME AS VARCHAR(10)), ‘.’ , ”) as INTEGER) iSeries Access for Windowsでの確認はC:Program FilesIBMClient AccessSharedcwbundbs.exeを使いました。※iSeries Access for Windowsインスト
i5(AS400)に対してODBC経由でSELECTはもちろん、INSERT,UPDATEなどのクエリも問題なく処理できるのですがプログラムのインストールとは別にIBM iSeries Access for WindowsをインストールしODBCの接続設定をしないと動作しません。しかもODBCの接続設定名も間違っていてはいけません。 そのためiSeries Access for Windowsに含まれるIBM.Data.DB2.iSeries(.Netプログラミングサポート時にインストールされる)を利用してクエリを実行するにはどうすればよいか悩んでました。 というのも、@@TESTというカラムが存在していた場合にODBCなら[@@TEST]と記述すれば問題なかったが、iSeries Access for Windowsで同じように記述するとエラーとなる。 結局、"(ダブルクォテーション)を使えばうまく行くことがわかった。実際には"@@TEST"となる。"(ダブルクォテーション)はC#上でも特殊文字なので記述が面倒だけど。 public void
ちょっと時間がかかるクエリを投げたら、「SQL0666 – SQL QUERYが指定された時間制限または記憶制限を超えています。 」とi5に言われた。 前に解決方法を書いていたが、画像のリンクが切れていたので再度投稿。 ※iSeries Access for WindowsのODBCドライバを利用しています。 パフォーマンスタブを選択し、下部にある拡張ボタンを押す #AS400 #i5 #ODBC
回避するには、ODBCの「照会タイムアウトを使用可能にする」のチェックボックスをOFFにすればよい。 どうもi5から有効になった機能らしい。 http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/db2/rzajqmst71.htm#Header_129 #AS400 #i5