サブファイルの使用

表示装置ファイルの DDS にサブファイルを指定することによって、画面上で同 じタイプの複数レコードを処理することができるようになります。 (図 187 を参照してください。) サブファイルは、 表示装置ファイルから読み取ったり、あるいは書き出したり するレコードのグループです。 例えば、プログラムはデータベース・ファイルからレコードを読み取って 、出力レコードのサブファイルを作成します。 サブファイル全体が書き出された時に、プログラムは 1 回の書き出し操作でサブ ファイル全体を表示装置に送ります。 ワークステーション・ユーザーは、サブファイル中のデータを変更したり、 サブファイルに追加のデータを入力したりすることができます。 その後で、プログラムはサブファイル全体を表示装置からプログラムに読み取 って、サブファイル中の各レコードを個別に処理します。

サブファイルに含めたいレコードは、ファイルの DDS で指定します。 サブファイルに含めることができるレコード数も、DDS で指定しなければなり ません。 1 つのファイルには、複数のサブファイルを含むことができ、最大 12 個のサ ブファイルを同時に活動状態にすることができます。 同時に 2 つのサブファイルを表示することができます。

サブファイルの DDS は、サブファイル・レコード様式と サブファイル制御レコード様式 の 2 つのレコード様式から構成されています。 サブファイル・レコード様式には、サブファイル制御レコード様式の制御の下で、 表示装置ファイルとの間で転送されるフィールド情報が入っています。 サブファイル制御レコード様式により、サブファイルの物理的な読み取り、書き出し、または制御操作が実行されます。 図 188 は、サブファイル・レコード様式の DDS の例を、 図 189 は、サブファイル制御レコード様式の DDS の例をそ れぞれ示しています。

サブファイル・キーワードを使用する方法の説明については、Web サイト http://www.ibm.com/eserver/iseries/infocenteriSeries Information Center の中の 『データベース』カテゴリーの『DB2 Universal Database for AS/400』の節を参照してください。

図 187. サブファイルの画面
Customer Name Search

Search Code _______

Number  Name                  Address               City                  State

XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX

RPG プログラム中で表示装置ファイルにサブファイルを使用するためには、 WORKSTN ファイルのファイル仕様書で SFILE キーワードを指定しなければなりません。 SFILE キーワードの形式は SFILE(レコード様式名:RECNO フィールド名) で す。 WORKSTN ファイルは、外部記述ファイル (22 桁目が E) でなければなりません 。

SFILE キーワードには、サブファイル・レコード様式 (制御レコード様式では ない) の名前と、サブファイルの処理に使用する相対レコード番号を含む フィールドの名前を指定しなければなりません。

RPG プログラムでは、相対レコード番号の処理は SFILE 定義の一部として定義 されます。 SFILE 定義は、サブファイル用の ADD を含む全手順更新ファイルを暗黙指定し ます。 したがって、サブファイルに有効なファイル操作は、メイン WORKSTN ファイルの定 義に依存しません。すなわち、WORKSTN ファイルを 1 次ファイルまたは全手順ファイル として定義することができます。

プログラムとサブファイル間でデータを転送信するためには、 サブファイル・レコード様式のある CHAIN、READC、UPDATE、 または WRITE 命令コードを使用し てください。 プログラムと表示装置間でデータを転送信するか、またはサブファイル制御操作 を処理するためには、サブファイル制御レコード様式のある READ、 WRITE、ま たは EXFMT 命令コードを使用してください。

サブファイル処理は、相対レコード番号処理の規則に従います。RPG プログラムは、READC 命令によって検索されたレコードの相対レコード番 号を SFILE キーワードの 2 番目の位置に指定されたフィールドに入れます。 このフィールドを使用して、サブファイルへの WRITE 命令または ADD を使用 する出力操作の場合に RPG プログラムが使用するレコード番号も指定 します。 SFILE キーワードに指定される RECNO フィールド名は小数点以下の桁数のない 数字として定義しなければなりません。 フィールドはファイルの最大レコード番号を入れるのに十分な 桁数をもっていなければなりません。 (SFLSIZ キーワードについては、Web サイト http://www.ibm.com/eserver/iseries/infocenteriSeries Information Center の中の『データベース』カテゴリーの『DB2 Universal Database for AS/400』の節を参照してください。) WRITE 命令コードおよび出力仕様書上の ADD 仕様書には、ファイル仕様書の SFILE キーワードの 2 番目の位置に相対レコード番号を指定することが必要で す。

WORKSTN ファイルに関連したサブファイルがある場合には、そのファイル名を 参照するすべての暗黙の入力操作および明示の演算命令がメイン WORKSTN ファイル に対して処理されます。 サブファイルとして指定していないレコード様式名を指定する操作は、すべて のメイン WORKSTN ファイルで処理されます。

指定された機能キーを非サブファイル・レコードの読み取り中に押した場合には 、サブファイル・レコードの後続の読み取りにより、対応する機能キー標識が再 びオフに設定されます。読み取りと読み取りの間に機能キー標識がオフに設定 された場合でも、そうなります。 これは、WORKSTN ファイルから非サブファイル・レコードが読み取られるまで 続きます。

図 188. サブファイル・レコード様式のデータ記述仕様書
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ..*
AAN01N02N03T.Name++++++RLen++TDpBLinPosFunctions++++++++++++++++++++*
A** 顧客名検索
A                                      REF(DSTREF)  1 
A          R SUBFIL                    SFL  2 
A                                      TEXT('Subfile Record')
A            CUST      R           7  3
A            NAME      R           7 10
A            ADDR      R           7 32  3 
A            CITY      R           7 54
A            STATE     R           7 77
A*

サブファイル・レコード様式のデータ記述仕様書 (DDS) は、サブファイルの レコードについて記述します。

 1 
このレコード様式のフィールドの属性は、REF キーワードによって指定 さたフィールド参照ファイル DSTREF に入っています。
 2 
SFL キーワードにより、このレコード様式はサブファイルとして識別され ます。
 3 
行と桁の指定によって、画面上におけるフィールドの位置が定義されます。

サブファイルの使用

サブファイルの代表的な使用法をいくつか次に示します。

次の図は、サブファイル制御レコード様式のデータ記述仕様書の例を示してい ます。 RPG プログラムでのサブファイルの使用例については、 郵便番号による検索を参照してください。

図 189. サブファイル制御レコード様式のデータ記述仕様書
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ..*
AAN01N02N03T.Name++++++RLen++TDpBLinPosFunctions++++++++++++++++++++*
A          R FILCTL                    SFLCTL(SUBFIL)
A N70                                  SFLCLR
A  70                                  SFLDSPCTL
A  71                                  SFLDSP
A                                      SFLSIZ(15)
A                                      SFLPAG(15)
A                                      TEXT('Subfile Control Record')
A                                      OVERLAY
A  71                                  ROLLUP(97 'Continue Search')
A                                      CA01(98 'End of Program')
A                                      HELP(99 'Help Key')
A                                  1  2'Customer Name Search'
A                                  3  2'Search Code'
A            SRHCOD   R         I  3 14PUTRETAIN
A                                  5  2'Number'
A                                  5 10'Name'
A                                  5 32'Address'
A                                  5 54'City'
A                                  5 76'State'
A*

サブファイル制御レコード様式は、サブファイルの属性、検索入力フィールド、固定情報、および 機能キーを定義します。 使用できるキーワードは次のとおりです。

サブファイル制御レコード様式は、これらの制御情報のほかに、サブファイル ・レコード様式の欄見出しとして使用される固定情報も定義します。