AS400
今週、久しぶりにAS400でストアド・プロシージャを定義しました。 これまでは、シンプルRPGLEをストアド化するばかりでしたが、今回はSQLRPGLEをストアド化してみたのです。 そこでの学びをまとめておきます。 まず、今回発生したエラーについてのJOBJOGの中…
今更ではありますが、AS400の物理ファイルのフィールドの定義で設定できる「デフォルト値」について検証してみました。 まずはテスト用として、下記のようなテーブルを準備。 SECTIONS.pf A UNIQUE A R RECSEC TEXT(' 部門マスタ ') A* (FIELDS) A ACTIVE_FL…
久しぶりに、DB2 for i ネタになります。 A5:SQL Mk-2とは? 最高のSQLクライアントツールに、「A5:SQL Mk-2」というものがございます。 a5m2.mmatsubara.com ODBCドライバーを経由して、DB2 for iの操作も可能! ホント、軽量でして、毎日愛用させていただ…
AS400の数あるコマンドの中で、上位3本の指に入る好きなコマンドが「CPYFコマンド」です。CPYF、つまりファイルをコピーするコマンド。 テーブルなどのオブジェクトを別環境に複製することが容易にできるようになります! よく使うコマンド例 丸ごとコピー …
明日は 3月11日。 東日本大震災があった日。あれから 11年も経つのですね。 福島県で暮らす者として、あの日の記憶は、これからの人達にも伝えていく必要があると思っています。 先日、たまたま過去の別ブログを読む機会がありました。 せっかくなので、こち…
業務の中で、下記のような集計処理を行う機会があり、 少しハマってしまったので、公開しておきます。 ちなみにRDBは、DB2 for IBM i (V7R3M0) になります。 やりたいことは、テーブルAを集計した結果とテーブルBを集計した結果を統合したものを さらにグル…
RPGLEで日付、時間の各値(年や時間など)を取得する方法です。 それにしても、BIF関数は便利ですね。 昔は、TIME命令で得た14桁の数値から日時情報を取得していましたから。 C TIME W@TIME 14 0 今回のサンプルはこちら。 サンプルPGM D YEAR S 4S 0 // YEA…
「Python」や「JS」など、VSCode を取り扱う機会が増えてきました。 ふと、AS400系のコードもVSCodeで操作できないかな?と思ってしまい、調べてみたところ、次のような拡張機能を見つけてしまいました! Code for IBM i 拡張機能を使って、ダイレクトにAS40…
概要 前回の続きです。 tigertaizo.hatenablog.com テーマは「スキーマ変更した後、Viewはどうなるか?」です。 DB2 for iでの動作確認 前回同様、実際に「手を動かして試す」ことにしました。 検証用テーブルの準備 今回は「果物テーブル」を作ってみました…
概要 ビューとは? DB2 for iでの動作確認 事前準備 ビューの作成 ビューの調査 ビューを使用する ビューSQLの確認 ビューの書き込みテスト DSPDBRコマンドで確認 WRKOBJコマンドで確認 マテリアライズドビュー まとめ 概要 今回、RDBのビューを検証すること…
AS400のデータベース、すなわち「DB2 for i」についてです。 AS400のテーブルのレコードを物理削除していくと、削除レコードがどんどん増えていくことになりますが、その場合、バッチ処理等で「RGZPFM(物理ファイル・メンバー再編成)」をすれば、削除レコ…
久しぶりのAS400のネタです。 業務上で、テーブル1とテーブル2の集計結果を照合して「金額などが合致しているか?」を確認したいケースがたまにあります。 シンプルなテーブル構成であれば、SQL文1本で照合できるのですが、複数のテーブルを参照したり、…
久しぶりにAS400関連のネタです。 ついこの間まで、時間のかかるバッチ処理や別セッションでの対話処理のJOBの状態を確認するのに、WRKACTJOBコマンドで活動JOBの一覧を表示させ、その後に F10キーを連打しておりました。 しかしながら、先日協力会社様の方…
AS400内のアプリは、5250エミュレータで接続することで操作可能になりますが、AS400の外にApplication Server(Web, Java)を立て、AS400(DB2 for i)をDB Serverで運用する場合、JDBCドライバーを使って、Web・DB間のやり取りを行うようになります。 この…
先日、一括プログラム用のCLLEプログラムを書いてみました。 その中で、CPYSRCF コマンドで、ライブラリーAからライブラリーBへソース・コードの複写を実施したのですが、PDMで表示されるテキスト名が複写されていないことを発見しました。 ソース・ファイ…
AS400、つまりは「DB2 for i」の新機能であります「テンポラル・テーブル」を試してみたので、まとめておきます。 当機能は、V7R03から利用可能とのこと。 テンポラル・テーブルとは? そもそも、テンポラル・テーブルとは何か? ベルさんのサイトに詳しく書…
サーバを安定運用したい。より安心を手に入れたい!! というわけで、AS400でのチーミング設定方法になります。 自動で予備の方に切り替わる機能「フェイルオーバー」となります。 つまり、1つの物理IPは、ホットスタンバイです。 OSはV7R03。手順は下記の…
基本はSQLでの操作が中心ではありますが、AS400歴20年以上になると、QRYやDFUをついつい使ってしまいます。 DFUは、STRDFUでメニューを出して、そこでDFUプログラムを作ったり、実行してデータメンテしたり。 そんな使い方をしていたのですが、本日、直接コ…
先日、仮想テープでの日次バックアップ化を進めた中で、発生したトラブルをまとめておきたいと思います。 AS400のIFS上には、仮想テープへの保管により、複数の仮想テープ・ボリュームを作成することになり、それら仮想テープ・ボリュームをFTPで別サイトへ…
AS400のバックアップでは、物理テープ(LTO)を使うシーンもまだまだありますが、物理テープ装置がシングルの場合では、テープの入替の手間も発生し、SAVFを使う選択肢もあったかと思います。 ただし、SAVFでは1つのライブラリーしかやり取りできず、複数の…
またも、ACSネタです。 これまでは、Oracle Javaを使って記事を書いてきましたが、OpenJDK8でもACSを試してみました。 (Windows10 PC上です) OpenJDK8のダウンロード、インストール 下記のサイトを参照させていただきました(RedHatアカウントが必要とのこ…
前回の記事の通り、ACSはJavaVMの上で動作します。 となりますと、管理者は Javaの知識が必要になるかと思います。 例えば、次のようなケースでは、コマンドからACSを起動してやる必要がありそうです。 初期ヒープサイズ、最大ヒープサイズなどを指定したい…
Windows7環境では、AS400へアクセスするために5250エミュレーターソフトは「IBM i Access for Windows」のものを利用していました。 しかし、Windows10環境では「IBM i Access for Windows」が使用不可とのことで、その代わりのソフトウェアとして「IBM i Ac…
SNTPとは? マシーン構成 AS400設定 (1) SNTP設定変更 パラメータについて 実行結果 (2) 手動開始/終了 (3) 起動確認 (4) ログ確認(正常) 起動Option ACTLOG(*POLL) について SNTPとは? SNTPとは、何でしょうか? SNTPとは、TCP/IPネットワークを通じて…
AS400+Zabbix連携ネタの続きです。 今度は、AS400が開いているポートを継続監視します。とりあえず、今回は、TELNETポート23を監視してみようと思います。 ①アイテム追加 設定→ホスト より、「AS400」ホストを選択し、アイテムのリンクより画面右上の「アイ…
次にZABBIX側の設定になります。 (1) ホストの基本設定 (2) CPU使用率の監視設定 ①アイテム追加 ②グラフ追加 ③トリガー追加 ④グラフ表示結果 (3) ディスク使用率の監視設定 ①アイテム追加 ディスク総容量 ディスク使用容量 ディスク使用率(%) ②グラフ追加 ③…
安定感抜群のAS400ではありますが、自動的に監視して、異常時にはアラートを発砲できるようにしたいと考えました。情報が少なく、かなり苦戦しましたが、とりあえず監視ができるようになりましたので、その手順を記しておこうと思います。 (1)AS400 SNMP設定…
最近、RPGLEはほぼFree形式で書くようにしています。 しかしながら、MOVEA命令のfree置き換えが無いっぽいので、困っておりました。 MOVEA命令は、標識の一括セット/クリアなどで便利だったのですが・・・。 サンプル1 標識30~59までを一括でOFFに設定する…
改めて、DB2 for iでのレコードロックを検証していきたいと思います。 (1) レコードロックとは? (2) RPGプログラムでレコードロックを発生させてみる 検証1用ソースPGM RPGLESRC/SAMPLE39 検証1 実行結果 レコードロックの確認方法 ロックウェイト時のWRKAC…
久しぶりにAS400のSQLRPGLEネタです。 SQLのINSERT文、UPDATE文、DELETE文実行後に、どうやって結果レコード数を取得するのか? という疑問が湧きました。 Javaであれば、下記のようにSQL実行結果の戻り値で結果レコード件数を取得できるのですが・・・。 in…