コマンドszapは、SuperZapの略です(作った当初はSmallZapと呼んでいました)。昔、zapperというソフトが有って、内容は違いますが、その名前がかっこいいので、貰いました。誕生は、System38の上でした。今はバージョン9です。BRWPFM(DSPPFM)の漢字版を作るつもりが、だんだんバージョンアップして、変更、追加、削除も出来るようにしました。OPNQRYFもサポートしました。SQLなんて無い頃から、出来ています。ちなみに、zapはテレゲーで敵をやっつけることです。
注意
このユーティリティは、変更モードの際、データベースを書き換えます。
もし、バグがありデータが破壊されても、一切の責任は負いかねます。
変更は、デバッグデータなど、破壊されても、業務に影響のないものに限って使用してください。
機能の概説(売り)
- これにより、物理ファイルと論理ファイルのデータを表示、変更します。
- OPNQRYFによる、データの選択が出来ます。
- 文字は、DBCS ; Double Byte Character String , SBCS ; Single Byte Character Stringに対応しています。
- 数字は、ゾーン、パック、バイナリに対応しています。
- ここでの例は、到着順ですが、もちろんキー付き検索も可能です。この場合、キーに漢字やパックが入っているときは、(F10)16進数の指定になります(手抜き)。
- フィールドリスト(F4)も可能です。これは、表示パートと相互に関連して、フィールドリストで選択したものは、表示開始桁として反映しますので、便利です。
- 変更時のログとして、データの書き出しや、データの印刷が可能ですが、この場合、レスポンスが悪くなります。
- 保管ファイルの表示が可能です。(表示のみです。保管ファイルの解析にどうぞ。)
できないこと
- 複合論理ファイル(物理ファイルをまとめた奴)は表示できません。
- 浮動小数点は対応していません。
- ヘルプはありません。これも手抜き。
- DDMFには使用しないでください。
- 結合ファイル(join)は変更できません。
- 降順キーでは、動きがおかしくなります。(SETLLをしているためのバグです)。
プログラム構成
オブジェクト名 |
タイプ、属性 |
内容 |
szap |
CMD |
CPP※はszapc2 |
szapc2 |
CLP |
szap2の起動準備 |
szap2 |
RPG |
本体 |
szapd2 |
DSPF |
本体の画面ファイル |
dspdr81 |
RPG |
フィールド情報画面 |
dspdr81d |
DSPF |
szapsb1 |
RPG |
ウィンドウにSZAP形式のデータ画面表示 |
szapsb1d |
DSPF |
dspmbrl |
RPG |
メンバー選択画面 |
dspmbrld |
DSPF |
szapsb2 |
RPG |
印刷プログラム(変更ログ印刷) |
savfcvt |
RPG |
保管ファイル表示編集用 |
#srstscl |
CLP |
ステータスメッセージの表示用外サブ |
※CPPとは、Command Process Programのことで、早い話、コマンドに定義されるプログラムのことです。
ロジック
指定データを、複数レコード表示します。この際、漢字の先頭から、最後まで、または途中から最後まで、または最初から途中まで、途中から途中まで、を画面の右端と左端に、補助の0eと0fを埋め込むことで解決しています。従って、変更モードの場合、画面の左端と右端に、無駄な1バイトが出来てしみまいます。これは無視してください。
これは、と思う機能はすべて付けたつもりですが、OPNQRYFのKFLDサポートはしていません。多分出来ると思うのですが、中身をかなりいじる事になるのです。つまりは、キー値の表示でSETLLが出来ないかもしれないことを、気にしています。(QRYSLTが到着順のみサポートしているのは、そのためです。)
数字は、ゾーンやパックなどの符号も検査しています。フィールドタイプLやTはテストして使えるのですが、HEXはまだ不明です。(昼休みだけではテストしてられない)。
尚、論理ファイルで、表示のみフィールドが有る場合は、画面で変更しても、実行キーをたたくとエラーとなるはずです。
画面サンプル
SZAP + [F4]
- File Nameは検索したいファイル名。
- Member nameは検索したいメンバー名。*SELECTにすると、メンバー選択画面が出ます。
- Indexedはキー付きファイルを到着順に見たい場合に指定します。キー付き物理ファイルや論理ファイルのことです。
- DBCSは漢字の検査をするか否かですが、*YESのままにしてください。昔、英語端末でエラーが出るのを避ける目的も兼ねていました(尚、英語端末で表示するときは、*NOにしてください)。
ごめんなさい。このパラメータは*CALCをおすすめします。(イメージを間違えてしまった。)
もし、手動でセットする場合は、ファイルのレコード長+21バイトです。落ちるデータは、
相対レコード番号(7)+日付時間(12)+追加変更識別子(1)+「;」の計21バイトが、ファイルの先頭につきます。追加変更識別子は、追加はA、変更前がB、変更後がC、削除がDです。
画面サンプル
[初期画面](上記コマンドの省略値)
- F4で、フィールドリストが出ます。ここでフィールドを指定しすると、表示がその指定したフィールドをから表示を開始します。なにげなく付けた機能ですが、便利です。
- F5で再表示します。
- F6で、レコードのDSPD表現です。(DSPDは自作コマンドの事です)。カーソルをどこかのレコードに併せて、F6を押します。
- F9はレコード追加モードです。変更モードのみサポートです。入力し終わったら、必ず、F9を再び押してください。(実行キーでは有りません。F9以外は追加モード解除を意味します)。
- F10で、キャラクタと16進数表示の切り替えです。
- F13はフィールド単位に右に移動します。
- F16は検索機能です。これは、到着順のみの場合指定できます。(指定の値はキャラクタのみです。)SEARCH
STRINGに検索文字を入れて、F16を押します。SEARCH STRINGの後の開始位置と終了位置が、検索範囲の桁です。また、SEARCH
MAXは、最大レコード件数です。(この機能は、残念ながらパフォーマンスが悪いです。出来れば、QRYSLTをコマンドププロンプトで指定してください。)
- F19は、SIDEWARD STEPに指定された値で左へ、F20は同じく右へ、スライドします。
- F21はメンバー情報ウインドウの表示です。
- F23はレコード削除です。カーソルで、削除したいレコードを指定して、F23を押します。すると、削除確認としてレコードがブリンク(赤)になります。カーソルを動かさず再びF23を押すと、削除されます。もし、この時に、カーソルを動かして、実行キーもしくはファンクションキー(何でも)を押すと、削除モード解除となります。
カーソルを、どこかに合わせて、実行キーを押すと、その部分のフィールド情報が画面下に出ます。
どこかのレコードで、F6を押すと、そのレコードをDSPD表示します。
16進数の表示は、F10で可能です。
コマンドのプロンプトで、INDEXEDを*NOにして、OPNQRYFを*YESにすると、QRYSLTを指定できます。(キー項目はサポートしていません)
QRYSLTの例
上記のQRYSLTの反映したデータ
漢字の表示例
便利ですけど、修正は気をつけてください。おかしくなっても、責任は持ちませんからね!それが、こまるなら、表示にみにしてください。表示のみならば、ファイルを更新オープンしませんので、安心です。
|