タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

AS400

【AS400】 AS400のポート監視をZABBIXで行う

AS400+Zabbix連携ネタの続きです。 今度は、AS400が開いているポートを継続監視します。とりあえず、今回は、TELNETポート23を監視してみようと思います。 ①アイテム追加 設定→ホスト より、「AS400」ホストを選択し、アイテムのリンクより画面右上の「アイ…

【AS400】 SNMPを起動し、ZABBIXで監視を行う (2)

次にZABBIX側の設定になります。 (1) ホストの基本設定 (2) CPU使用率の監視設定 ①アイテム追加 ②グラフ追加 ③トリガー追加 ④グラフ表示結果 (3) ディスク使用率の監視設定 ①アイテム追加 ディスク総容量 ディスク使用容量 ディスク使用率(%) ②グラフ追加 ③…

【AS400】 SNMPを起動し、ZABBIXで監視を行う (1)

安定感抜群のAS400ではありますが、自動的に監視して、異常時にはアラートを発砲できるようにしたいと考えました。情報が少なく、かなり苦戦しましたが、とりあえず監視ができるようになりましたので、その手順を記しておこうと思います。 (1)AS400 SNMP設定…

【AS400】RPGLE-MOVEA命令をfreeでどう書くか

最近、RPGLEはほぼFree形式で書くようにしています。 しかしながら、MOVEA命令のfree置き換えが無いっぽいので、困っておりました。 MOVEA命令は、標識の一括セット/クリアなどで便利だったのですが・・・。 サンプル1 標識30~59までを一括でOFFに設定する…

【AS400】レコードロック検証

改めて、DB2 for iでのレコードロックを検証していきたいと思います。 (1) レコードロックとは? (2) RPGプログラムでレコードロックを発生させてみる 検証1用ソースPGM RPGLESRC/SAMPLE39 検証1 実行結果 レコードロックの確認方法 ロックウェイト時のWRKAC…

【AS400】SQLRPGLE-挿入、更新、削除件数を取得する

久しぶりにAS400のSQLRPGLEネタです。 SQLのINSERT文、UPDATE文、DELETE文実行後に、どうやって結果レコード数を取得するのか? という疑問が湧きました。 Javaであれば、下記のようにSQL実行結果の戻り値で結果レコード件数を取得できるのですが・・・。 in…

【AS400】RPGLE-数値→文字列変換

RPGLEでのキャスト処理(数値→文字列)についてです。 数値を文字列化して出力したいケースは、多くあると思います。 自分がわかる範囲で、そのバリエーションをまとめてみました。 (1) %CHAR関数を使う %CHARを使うことで、数値を簡単に文字列変換してくれ…

【AS400】デフォルト・ゲートウェイの変更

AS400セットアップ後、なかなか変更にならなそうなデフォルトゲートウェイの変更方法を記しておきます。 IBM iのVersionは、V7R1になります。 変更方法 例として、現在、「172.16.1.1」のデフォゲを、「172.16.1.254」へ変更する操作になります。 (1) 現状のルー…

【AS400】RPGLE-数値日付の妥当性チェック

タイトルの件、やはり便利な命令が用意されていました。 これまでは、DSで年、月、日に分けて、閏年判定を交えて、オリジナル関数で処理させていましたが、TEST命令を使えば簡単に判定できることがわかりました。 サンプルはこちらです。 サンプルPGM D MAIN…

【AS400】オペレーション・コンソールによる接続

久しぶりにAS400に関する投稿です。 オンプレミス系サーバーで最重要なものといえば、コンソールですよね。 AS400のコンソールについて、はるか昔は同軸ケーブルで接続のダム端で行っていましたが、今やPCベースで操作が可能です。 そういえば、最初からコン…

【AS400】RPGLE-文字列に半角¥が含んでいるかの判定処理

表題の処理をどうしてもやりたくて、BIF関数等をいろいろと試したのですが、うまくいかず。。。 さすがは、アメリカ産まれのAS400! そうは問屋は卸してくれませんね。 具体的には、%SCANを使って、半角¥の文字位置を取得しようとしたのですが、全角¥でも…

【AS400】RPGLE-一括レコード更新処理サンプル(UNLOCK命令を使用)

AS400でレコード更新を処理する場合、専用アプリ、SQL、DFUなど多くの方法がございますが、複雑な条件をつけて、1つ1つ判定したうえで、更新したい!という場合では、RPGでやるのが便利だと思っています。 そこでサンプルを。 サンプルは、単純に売上明細…

【AS400】RPGLEからCLコマンドを実行(ex.DLYJOB)

RPGプログラムからDLYコマンドを実行させたいケースがありましたので、まとめます。 下記のサイトを参考にさせていただきました。 Capturing QCMDEXC error codes | RPGPGM.COM - From AS400 to IBM i RPGプログラムからDLYJOBを実行するサンプル 単純にプロ…

【AS400】RPGLE-ポインターによるパラメータ渡し

RPGでもポインターを利用できるようです。 あまり詳しくないのですが、構造体をパラメータにして別プログラムへ渡すためにポインターを使ってみました。 呼出し元(MAIN)のプロシージャでの処理 DATA1という名称の構造体を準備しました。構造体では、ID,NAM…

【AS400】DSPF-ユーザー定義編集コード

EDTCDEについて AS400の画面ファイルにて、EDTCDE(編集コード)をよく使われることと思います。 EDTCDEは、数値を読みやすくするためのカンマ編集などを記述するためのコードのこと。 iSeries Infomation Center - DDS 解説書: 表示装置ファイル - 表示装置…

【AS400】QRYプログラムからSQL文を生成する方法

昨日、同僚から教えていただいたネタをひとつご紹介します。 私は、知らない機能だったので、衝撃でした。 SQLがよくわかっていなかった10年前に知りたかった機能でしたよ!!! と、こぼしていても始まらないので、さっそく試してみました。 QRYプログラム…

【AS400】コネクションプールの確認

GlassfishなどのAP Serverでコネクションプールの登録した場合、AS400ではどうなっているかの話です。 P-COMMでは、ネットワークの状況の照会にて、確認可能です。 ネットワークの状況の確認 WRKTCPSTSコマンド、またはNETSTATコマンドを実行します。 WRKTCP…

【AS400】DSPF-画面幅を超えるフィールドの取り扱い方法

5250エミュレータ画面は、基本的に80×24のサイズになっていて、小規模な業務系アプリではまったく問題なく、必要なフィールドを画面へ配備できるのですが、コメントなど画面幅を超える長さをフィールドをメンテする場合、どうしたらいいのだろう? という疑…

【AS400】ワークステーションIDを指定しない端末について

地味なネタで恐縮ですが・・・。 Client Access(P-COMM)にて、ワークステーションIDを指定しない端末については、Server側が自動的にIDを割り当ててくれます。 では、どのようなIDが割り当てられるのか? 下記のコマンドにて確認できます。 WRKCFGSTS *CTL QP…

【AS400】ClientAccessエミュレータ初回起動時のパスワード要求を回避する方法

ClientAccessのエミュレータを使用すると、毎回、下記のような「IBM iサインオン」接続認証画面が起動するかと思います(P-COMM単体のソフトウェアには無かったかと思いますが・・・)。 (1) batファイル作成 IBMiLogOn.bat echo off cd C:\Program Files\IB…

【AS400】UPDDTAコマンドにて主キーを編集する方法

マニアックなネタです。 AS400のVersionは、V7R01です(V5R04でも同様でした)。 前回、取り上げましたUPDDTAコマンドでは、キーも編集できたりしてしまいます。 しかし、時々、「あれ? キーが編集できないぞ!」となってしまうときがあります。 これはいっ…

【AS400】DFU・UPDDTAコマンドによるデータ保守

簡単に、データを保守した場合に重宝しているコマンド、それは「UPDDTA」です!! これは、AS400のユーティリティ「DFU(データ・ファイル・ユーティリティー)」で提供されているもので、メニューから、もしくは簡単にコマンドから呼び出して利用することが…

【DB2/400】登録済みストアド・プロシージャの確認

ちょうど、DB2 for i上に展開しているストアド・プロシージャを確認する必要があり、通常ならiナビで確認するのですが、P-COMMからサクっと調査する方法はないか検索していましたら、下記のサイトと廻り合えました! AS/400のとなりで-ストアードプロシージ…

【DB2/400】AutoNumber IDのテーブル作成

正直、ずっとDDSでのテーブルばかり扱ってきたので、DDLのテーブルについてはなじみがありません。 これではいかん!ということで、少しずつスキルアップを進めていこうと考えます。 まずは、AutoNumberの主キーから!!!(なぜか? 理由は特にありません)…

【RAD】Rational Developer for i 9.1のインストール

私は、AS400での開発において「P-COMM」をメインに使用していますが、Java開発や新規のRPG開発などで、Rational Developer for iのお世話になっています。 Rational Developer製品は有償です。略して「RDi」と呼ぶようですが、私は「Rational Application Deve…

【AS400】特定のオブジェクトを参照するプログラムの調査方法

前回では、フィールド等の使用状況調査についてを書きましたが、今回は、特定のオブジェクト(テーブルやプログラム)を参照するプログラムを確認する方法を書きます。 あるプログラムが、どのプログラムで呼び出されているか? あるテーブルが、どのプログ…

【AS400】複数ソースプログラムでのフィールド利用調査方法

ソースプログラム内で、このフィールドがどこで使われているかな?と調査するケースがよくあるかと思います。 IDEであれば、プロジェクト内でキーワード検索をかければ一発なのですが、P-COMMオンリーでは厳しいものがありますね。 しかしながら、PDMのオプ…

【AS400】RPGLE-金額計算時の端数処理

計算時の端数処理(四捨五入、切捨て、切り上げ)は、業務系ではかかせない処理かと思います。 しかしながら、RPGでは、この基本処理を簡単に記述できない苦悩があります。 いつものように、単に私が知らないだけなのかもしれませんが・・・。 税込み金額の…

【AS400】RPGLE-有効文字列の長さを調べる方法

自分が知らなかったことで、はまってしまったので、アップしておきます。 入力されている文字列の長さを調べる方法は、BIF関数「%LEN」で簡単に取得できるものだと思っていました。 しかし、DB2 for iでは、DDSで定義したテーブルの文字列は、CHARになるので…

【P-COMM】プログラム開発にて画面を広く使う方法

AS400の開発ツールも、だいぶバラエティー豊かになってきましたが、P-COMM端末での操作が一番落ち着くのはなぜなんでしょうか!? 最近では、RDiを使う機会も増えてはおりますが、まだまだClient Accessのエミュレータ(P-COMM)は現役バリバリです。 せっか…