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

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

AS400

【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)は現役バリバリです。 せっか…

【AS400】SQLRPGLE-リモートAS400へのアクセス

AS400が複数台存在する場合に、リモートのRDBSへアクセスすることが可能です。 簡単ですが、その方法をまとめます。 準備作業 (1) ローカル:遠隔RDBの登録 WRKRDBDIREコマンドでリモートAS400のRDBを登録します。 リレーショナル・データベース・ディレクトリー 項目の処理 位…

【AS400】SQLRPGLE-カーソルを使った集計処理

SQLカーソル処理にて、集計処理させるプログラムについてです。 はっきり言って、SQLは超・便利です。 CRUD処理はもちろん、複雑な照会であっても、副問い合わせなどで簡単にデータの取り出しが可能です。 ただ、複雑なSQL文は、解読するのに一苦労します(…

【AS400】SQLRPGLE-RPGでSQL文を使う

RPGにてシンプルなSQL文を書く機会があったので、簡単なサンプルを書いてみました。 SQLRPGLEサンプル D MAIN PR EXTPGM('SAMPLE28') D 7P 0 D* D MAIN PI D P@QCNT 7P 0 D* D C@QCNT S 7P 0 D* D******************************************************* D…

【AS400】RPG-CALL文での数値パラメータ渡し

コマンドラインから、直接、CALL命令(プログラム呼び出し)を実行する場合、数値パラメータを渡す必要がある場合の対処方法です。 パック10進数であれば、パラメータにて数値を渡すことが可能です。 下記のようなサンプルを作成してみました。 TIGER/RPGLES…

【AS400】CL-システム値の取り出し

CLからシステム値を取得する方法を書いてみました。 日付、時間であれば、RPGからだと、便利な組込関数の%DATE()や%TIME()でサクッと取り出せるのですが、それをCL上でやるにはどうするかという話になります。 RPGでの日付、時間の取得方法 C EVAL W@DAT = %…

【AS400】RPGLE-日付・時刻型フィールド

DB2/400の日付・時間系のデータ項目を調査しましたので、まとめておきたいと思います。 まず、DB2/400で定義できるデータタイプは、下記の通り。 今回、サンプルテーブルを準備し、RPG、Java(AS400内部ではなく、自分のローカルPCより実行)からその項目に…