ディスプレイ・ファイルのためのサブファイルの使用

ILE COBOL プログラムのディスプレイ・ファイルのためのサブファイルを使うには、入出力操作で SUBFILE 句を指定する必要があります。 有効なサブファイル操作は、次のとおりです。

サブファイルは、READ SUBFILE NEXT MODIFIED ステートメントを使って順次処理したり、相対キー値を指定してランダム処理したりすることができます。 相対キーは、ファイル中のレコードを検索するためにシステムが直接使用することのできる符号なし数値です。

TRANSACTION ファイルは、外部的に記述されたファイルでなければなりません。 ILE COBOL において、サブファイルへのアクセスは、READ SUBFILE NEXT MODIFIED を使用した場合を除き、相対レコード番号によってなされます。 TRANSACTION ファイルで SUBFILE 句を使用した場合、ENVIRONMENT DIVISION の SELECT ステートメントにおいて、ACCESS MODE IS DYNAMIC と記述し、RELATIVE KEY を指定しなければなりません。

ディスプレイ・ファイルが複数のディスプレイ装置を獲得している場合、各ディスプレイ装置ごとに別個のサブファイルが存在します。 TRANSACTION ファイルによって獲得された特定のディスプレイ装置のためにサブファイルが作成されている場合、 そのサブファイルのレコード様式を参照するすべての入力操作は、その装置に属しているサブファイルに対して実行されます。 サブファイルとして指定されていないレコード様式名を参照するすべての操作は、ディスプレイ装置に対する直接的な入出力操作として処理されます。

サブファイルの一般的な使用方法について表 28 にまとめています。

表 28. サブファイルの使用方法
用途 意味
表示専用 ワークステーション・ユーザーが表示画面を見る。
選択して表示 表示画面上の 1 つの項目の詳細情報をユーザーが要求する。
修正 ユーザーが 1 つまたは複数のレコードを修正する。
入力専用 (妥当性検査なし) サブファイルはデータ入力機能として使われる。
入力専用 (妥当性検査あり) サブファイルはデータ入力機能として使われ、同時にレコードが検査される。
複数のタスクの組み合わせ サブファイルを修正可能な表示画面として使える。
図 141. サブファイル・レコード様式のデータ記述仕様
 ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
      A* THIS IS THE DISPLAY DEVICE FILE FOR PAYUPDT ** PAYUPDTD
      A* ACCOUNTS RECEIVABLE INTERACTIVE PAYMENT UPDATE
      A*
      A
      A          R SUBFILE1                  SFL  1 
      A                                      TEXT('SUBFILE FOR CUSTOMER PAYMENT'
      A*
      A            ACPPMT         4A  I  5  4TEXT('ACCEPT PAYMENT')
      A                                  2   VALUES('*YES' '*NO')  3 
      A  51                                  DSPATR(RI MDT)
      A N51                                  DSPATR(ND PR)
      A*
      A            CUST           5   B  5 15TEXT('CUSTOMER NUMBER')
      A  52                          4       DSPATR(RI)
      A  53                                  DSPATR(ND)
      A  54                                  DSPATR(PR)
      A*
      A            AMPAID         8 02B  5 24TEXT('AMOUNT PAID')
      A                                      CHECK(FE)  5 
      A                                      AUTO(RAB)  6 
      A                                      CMP(GT 0)  7 
      A  52                                  DSPATR(RI)
      A  53                                  DSPATR(ND)
      A  54                                  DSPATR(PR)
      A*
      A            ECPMSG        31A  O  5 37TEXT('EXCEPTION MESSAGE')
      A  52                                  DSPATR(RI)
      A  53                                  DSPATR(ND)
      A  54                                  DSPATR(BL)
      A*
      A            OVRPMT         8Y 2O  5 70TEXT('OVERPAYMENT')
      A                                      EDTCDE(1)  8 
      A  55                                  DSPATR(BL)  9 
      A N56                                  DSPATR(ND)
      A*
      A            STSCDE         1A  H      TEXT('STATUS CODE')
      A          R CONTROL1                  TEXT('SUBFILE CONTROL')
      A                                      SFLCTL(SUBFILE1)  10 
      A                                      SFLSIZ(17)  11 
      A                                      SFLPAG(17)  12 
      A  61                                  SFLCLR  13 
      A  62                                  SFLDSP  14 
      A  62                                  SFLDSPCTL  15 
      A                                      OVERLAY
      A                                      LOCK  16 
      A*
      A                                      HELP(99 'HELP KEY')  17 
      A                                      CA12(98 'END PAYMENT UPDATE')
      A                                      CA11(97 'IGNORE INPUT')
      A*                                      18 
      A  99                                  SFLMSG(' F11 - IGNORE INVALID INPUT+
      A                                                      F12 - END PAYMENT +
      A                                      UPDATE')
      A*
      A                                  1  2'CUSTOMER PAYMENT UPDATE PROMPT'
      A                                  1 65'DATE'
      A                                  1 71DATE EDTCDE(Y)
      A  63                              3  2'ACCEPT'
      A  63                              4  2'PAYMENT'
      A                                  3 14'CUSTOMER'
      A                                  3 26'PAYMENT'
      A  64                              3 37'EXCEPTION MESSAGE'
      A*
      A          R MESSAGE1                  TEXT('MESSAGE RECORD')
      A                                      OVERLAY
      A                                      LOCK
      A*
      A  71                             24  2' ACCEPT PAYMENT VALUES: (*NO
*YES)
DSPATR(RI)

サブファイル・レコード様式のデータ記述仕様 (DDS) は、サブファイルの中のレコードを次のように記述します。

 1 
SFL キーワードによって、そのレコード様式がサブファイルとして識別されます。
 2 
行および位置の項目によって、ディスプレイ装置上でのフィールドの位置が識別されます。
 3 
VALUES キーワードは、ACPPMT フィールドの値としてユーザーが指定できるのが *YES または *NO だけであることを指定します。
 4 
使用法項目は、名前の指定されたフィールドが出力 (O)、入力 (I)、入出力 (B)、または隠し (H) フィールドになることを定義します。
 5 
項目 CHECK(FE) は、いずれかのフィールド終了キーを押さなければ、 ユーザーが次の入力フィールドにスキップできないように指定します。
 6 
項目 AUTO(RAB) は、AMPAID というフィールドに入力されたデータが自動的に右寄せされ、先行文字がブランクで埋められるように指定します。
 7 
項目 CMP(GT 0) は、AMPAID フィールドに入力されたデータがゼロと比較され、それがゼロよりも大きいようにすることを指定します。
 8 
EDTCDE キーワードは、出力フィールド OVRPMT のための編集を指定します。 EDTCDE(1) は、フィールド OVRPMT 印刷時にコンマと小数点を使用し、 符号は付けないで印刷することを示します。 また、残高ゼロも印刷され、先行ゼロは消去されます。
 9 
DSPATR キーワードは、名前の指定されたフィールドに対応する標識の状況が真であるときに、 そのフィールドの表示属性を指定するために使用されています。 指定される属性は、次のとおりです。

サブファイル制御レコード様式は、サブファイル、検索入力フィールド、定数、およびコマンド・キーの属性を定義します。 使用されるキーワードは、次のものを示します。

 10 
SFLCTL は、このレコードがサブファイル制御レコードであることを識別し、 関連付けられたサブファイル・レコード (SUBFILE1) の名前を指定します。
 11 
SFLSIZ は、サブファイルに含まれるレコードの合計数を示します (17)。
 12 
SFLPAG は、1 ページ中のレコードの合計数を示します (17)。
 13 
SFLCLR は、サブファイルがクリアされる場合 (標識 61 がオンになる場合) を示します。
 14 
SFLDSP は、サブファイルを表示する場合 (標識 62 がオンになる場合) を示します。
 15 
SFLDSPCTL は、 サブファイル制御レコードを表示する場合 (標識 62 がオンになる場合) を示します。
 16 
LOCK キーワードは、CONTROL1 レコード様式が最初に表示された時点でワークステーション・ユーザーがキーボードを使えないようにします。
 17 
HELP を指定すると、ユーザーはヘルプ・キーを押して標識 99 をオンに設定できるようになります。
 18 
SFLMSG は、標識 99 がオンである場合に表示されるメッセージとして定数を指定します。

サブファイル制御レコード様式は、制御情報に加えて、 サブファイル・レコード様式の列見出しとして使用される固定情報を定義します。 サブファイル制御レコード様式の例については 図 141 を参照してください。