CL
先日、一括プログラム用のCLLEプログラムを書いてみました。 その中で、CPYSRCF コマンドで、ライブラリーAからライブラリーBへソース・コードの複写を実施したのですが、PDMで表示されるテキスト名が複写されていないことを発見しました。 ソース・ファイ…
RPGプログラムからDLYコマンドを実行させたいケースがありましたので、まとめます。 下記のサイトを参考にさせていただきました。 Capturing QCMDEXC error codes | RPGPGM.COM - From AS400 to IBM i RPGプログラムからDLYJOBを実行するサンプル 単純にプロ…
前回では、フィールド等の使用状況調査についてを書きましたが、今回は、特定のオブジェクト(テーブルやプログラム)を参照するプログラムを確認する方法を書きます。 あるプログラムが、どのプログラムで呼び出されているか? あるテーブルが、どのプログ…
ソースプログラム内で、このフィールドがどこで使われているかな?と調査するケースがよくあるかと思います。 IDEであれば、プロジェクト内でキーワード検索をかければ一発なのですが、P-COMMオンリーでは厳しいものがありますね。 しかしながら、PDMのオプ…
CLからシステム値を取得する方法を書いてみました。 日付、時間であれば、RPGからだと、便利な組込関数の%DATE()や%TIME()でサクッと取り出せるのですが、それをCL上でやるにはどうするかという話になります。 RPGでの日付、時間の取得方法 C EVAL W@DAT = %…
GitなどのVersion管理システム(IBMならば、Team Concertでしょうか)で運用していれば、表題のような問題は発生しないかもしれませんが、 個人的にちょくちょくこういうことがありました(本来あってはいけません)。 修正したはずのプログラムが反映されて…
前回のRPG例外処理に続き、今度はCLでの例外処理です。 方法は、MONMSG命令により実行プログラムが例外扱いと判定するので、その際に吐き出されるメッセージIDをキャッチし、その例外処理を実装する、そんな感じでしょうか。 実際に、サンプルを見ます。 下…
概要 サブストリング組み込み関数(%SST)を使用します。 サンプルソース DCL VAR(&YYMD) TYPE(*CHAR) LEN(8) VALUE('20081231') DCL VAR(&MMMM) TYPE(*CHAR) LEN(2) DCL VAR(&DDDD) TYPE(*CHAR) LEN(2) CHGVAR VAR(&MMMM) VALUE(%SST(&YYMD 5 2)) CHGVAR VAR(…
概要 文字ストリング式とは、2つの文字列を連結(結合)する命令です。操作対象の変数は、いずれも文字ストリングでなければなりません。 命令の種類 (1) *CAT演算子 (連結、記号||) 普通に2つの文字列を連結します。 (2) *BCAT演算子(ブランク挿入連結、…
概要 CL言語と言っても、パラメータを制御したり、カウンターなどを演算したり、必要に応じてプログラム制御を行う必要があります。ここでは、変数の定義方法と演算方法を記載しておきたいと思います。 CL変数の定義 文字変数(*CHAR) 最大桁数 9999 省略時の…
概要 CLプログラムを実行した場合、WindowsのDOS窓のように変数の値や計算の結果などを「コマンドラインへ表示して確認したい!」となるケースがあります。その場合、SNDPGMMSGコマンドを使って実現します。メッセージタイプ(MSGTYPE)は、出力結果のため「完…
概要 RPGからソースファイルのメンバを参照することも可能です。ソースの行を更新することもできます(あまり意味がないかな!?)。 ソースファイルをRPGで指定するためには、CLで事前に参照したいメンバを別名で指定しておく必要あります。(OVRDBF) サンプ…