やっぱり、ユーティリティの第一歩はソースファイルを扱うことでしょう。もし、更新を含むときは「必ず」じっくりテストしてからにすること!でないと、ソースが壊れてしまいますよ!さて、ここではソースファイルを扱う上でのポイントを説明します。
ソースファイルの正体
- QRPGSRCやQDDSSRCなどのソースファイルは、実はただの物理ファイルの一種です。フィールドは3つ。SEQと日付とデータです。このデータ部分にソースが入っています。レコード長は、92(日付6+順序6+データ80)です。
- フィールドはSRCSEQ 6S 2(1-6), SRCDAT 6S 0(7-12),SRCDTA 80(13-92) ;or
ILE=100(13-112)
ソースファイルメンバー
- 目的のソースメンバーをRPGで読み込むときは、ファイルオープン前に必ずメンバー名を指定すること。
内部記述
- データの中身は外部フィールド一つに格納されているので、例えばC-SPECの「演算項目1」とか「結果のフィールド」などは、それを参照するプログラム内部で切り出します。いわゆる内部記述(プログラム記述)となります。
「**」に気を付ける
- C-SPECの「C」とかI-SPECの「I」とかで、プログラムソースを判定する場合、配列の先読みデータやテーブルの記述部分の前の行の「**」に気を付けること。更新するときは、**以降を壊さないようにしてください。
テスト
- 自分のソースでテストするだけでなく、いろいろな人のソースでテスト(テストライブラリーにコピーして、STRDBGしてから!)してください。以前、ソースのH-SPECの前にコメントで**
** **とかを入れた人がいて、動きませんでした。こういう人もいるのです。
ソースタイプ
- RTVMBRDのSRCTYPEフィールドでソースタイプを取り出したり、CHGPFMのSRCTYPEで、作成したメンバーのソースタイプを変更できます。昔これはなかったのでSEUで変更したりしてました。
利用例
ソースリストを1ページあたり2列で印刷。
- CPI15ならば、198桁なので、92 X 2でも184なので、2列にできるわけです。でもILEではできなくなってしまった。
- 印刷するときはRPLUNPRTを*YESにした印刷装置ファイルに書き出すこと。
ソースを自動生成してしまう。
- KLISTやフィールドを初期化するコードを普通の物理ファイルに書き出す要領です。その時、順序フィールドをカウントアップしておくこと。
- ファイルを指定して、オプションで*EXTとすると、I仕様書のフィールドリネームのソースが出来て、*INTにすると、I仕様書に入力バッファの桁位置の入ったソースができると便利です。配列のリネームや、どうしても内部記述の入力バッファを外部記述から持ってきたいときに使います。
参照フィールド辞書。
- ソースの演算項目1、演算項目2、結果のフィールド、DS、Inputフィールド、Outputフィールドをすべて抜き出し、参照フィールド辞書を作る。実はやろうと思っていてまだ作っていません。2000年修正に役立つでしょう。
- まだまだアイデアはたくさん出てくると思います。要は、メンバーをたくさん持っている物理ファイルだと考えればいいのです。
|