最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

11.4.1. DSPD解説

[ HOME ] [ Upper ] [ Next ]


コマンドDSPDは、Display Dataの略です。ネーミングにもっと一ひねりしたかった。誕生は、System38の上でした。今はバージョン8です。

機能の概説(売り)

  • これにより、物理ファイルと論理ファイルのデータを表示します。
  • 結合論理ファイル(Join file)の表示できます。
  • 文字は、DBCS ; Double Byte Character String , SBCS ; Single Byte Character Stringに対応しています。
  • 数字は、ゾーン、パック、バイナリに対応しています。通常の小数点表示できます。
  • 数字は、必ず符号表示しています。もし符号がおかしい場合、(RPGでデシマルエラーとなるはず)は、符号は「?」の表示になります。
  • ここでの例は、到着順ですが、もちろんキー付き検索も可能です。この場合、キーに漢字やパックが入っているときは、16進数の指定になります(手抜き)。
  • フィールドリスト(F4)やデータリスト表示(F11)も可能です。この2つは、相互に関連して、フィールドリストで選択したもの(10個まで)は、データリストで出てきます。但し、一画面に収まる範囲です。また、データリストには、キーとなるデータが必ず出ます。
  • F22で、表示中のデータの16進数ダンプリストが出ます。このときプリンターファイルQPRT198が必要です。CPI15で長さ198です。

できないこと

プログラム構成

オブジェクト名 タイプ、属性 内容
DSPD CMD CPPはDSPDR8C
DSPDR8C CLP DSPDR8の起動準備
DSPDR8 RPG 本体
DSPDR8D DSPF 本体の画面ファイル
DSPDR81 RPG フィールド情報画面
DSPDR81D DSPF
DSPDR82 RPG データリスト画面
DSPDR82D DSPF
DSPMBRL RPG メンバー選択画面
DSPMBRLD DSPF
SZAPSB2 RPG 印刷プログラム(スナップショット)

※CPPとは、Command Process Programのことで、早い話、コマンドに定義されるプログラムのことです。

ロジック

最初は、DSPFFDと、DSPFD *ACCPTHのOUTFILEでやってましたが、DSPFFDをAPIに置き換えたら、劇的に速くなりました。ただし、*ACCPTHはまだ、OUTFILEのままです。

指定したファイルから、一件読み出して、配列にセットして、フィールド情報から、フィールド単位にまとめて、前後に表示属性をつけて、サブファイルにセットして、表示する。漢字は分解されても、0e0fが壊れないように0e0fを埋め込んでいますが、最初から壊れたデータはテストしたことありません。

画面サンプル

DSPD + [F4]
dspdprompt.gif (16658 バイト)

  • File Nameは検索したいファイル名。
  • Member nameは検索したいメンバー名。*SELECTにすると、メンバー選択画面が出ます。
  • Indexedはキー付きファイルを到着順に見たい場合に指定します。キー付き物理ファイルのことです。

ここから以下は、初期画面の表示形式の指定です。機能キーで変わります。

  • Textはデータの前につけるテキストの指定。
  • One filed per one line は、一行一フィールド表示です。
  • Zero Suppressは数字の表示のゼロサプレスです。
  • Display attribute of fields ファイルの属性表示です。

あまり使わないパラメータです。

  • Use DBCS character DBCS表示ルーチンの有効/無効です。無効だと速いはずですが、有効のままで気になったことありません。

DDMFを照会したい場合b_debug.gif (341 バイト)

以下のように(赤字の部分)、DSPDR8Cを修正してください。また、DDMFをみたい場合は、メンバーに*SELECTは指定しないでください。

 /* QPRT198 */

    CHKOBJ  QTEMP/QPRT198 *FILE

       MONMSG CPF9800 *N +
       CRTPRTF  QTEMP/QPRT198 IGCDTA(*YES) PAGESIZE(66 198) CPI(15)
       OVRPRTF  QPRT198 QTEMP/QPRT198


 /* CHECK EXISTENCE OF MEMBER IN THE FILE */

   IF (&SYSTEM='*LCL')  CHKOBJ  &FLIB/&FILE *FILE &MBR
      ELSE              CHKOBJ  &FLIB/&FILE *FILE

 /* SET RECORD-FORMAT INFORMATION INTO USER SPACE */

         CALL QUSLRCD  (&USRSPC 'RCDL0100' &FILLIB '0')

                         

画面サンプル

[初期画面(F13)] データのみ(上記コマンドの省略値)
dspd1.gif (15615 バイト)

[F6] カラムヘディング
dspdf6.gif (16568 バイト)

[F7] テキスト
dspdf7.gif (19197 バイト)

[F8]フィールド名
dspdf8.gif (15957 バイト)

[F9] テキスト+フィールド名
dspdf9.gif (20534 バイト)

[F10] カラムヘディング+フィールド名
dspdf10.gif (19296 バイト)

[F4] フィールドリスト(ここで選択すると、データ表示画面では、高輝度になり、F11でそのフィールドが出てきます。)
dspdf4.gif (16931 バイト)

[F11] データリスト(キー項目は、必ず出ます。F4で選択したフィールドのデータが出ます。この画面の左端に何か入力すると、選択されます。でも、重複キーでは、うまく動きません。)
dspdf11.gif (18143 バイト)

[F14] 1行1データ表示
dspdf14.gif (15186 バイト)

[F15] データ属性表示
dspdf15.gif (17430 バイト)


[ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送