Page History
[ |../../index.htm#lansa/tgub5_0030.htm]
現在地:
...
13.4.6 非表示フィールド属性と選択フィールド属性
属性 | 説明 |
|---|---|
* |
HIDE | この2つの属性は、同義です。 |
この属性を使用すると、フィールドは「非表示」になり、画面に表示されません。 この属性の主な目的は、フィールドをブラウズ・リストに追加するが、そのフィールドを実際には画面に表示しないようにすることです。リストとリスト処理の詳細については、DEF_LISTコマンドを参照してください。 |
* |
SEL | この2つの属性は、同義です。 この属性を使用すると、フィールドを使用してリストからエントリーを「選択」することができます。この属性が指定されたフィールドは、表示モードに関係なく入力可能になります。リストとリスト処理の詳細については、DEF_LISTコマンドとSELECTLISTコマンドを参照してください。 |
...
例:
次のRDMLプログラムでは、*HIDDEN属性と*SELECT属性を使用して、ユーザーに顧客の総称名を入力するよう要求しています。入力条件に一致する顧客名がすべて表示され、その顧客名を選択すると、詳細を表示することができます。
DEFINE FIELD(#CHOOSE)
...
TYPE(*CHAR)
...
LENGTH(1)
...
COLHDG('Sel')
DEF_
...
LIST NAMED(#BROWSE) FIELDS((
...
#CHOOSE *SELECT)
...
#NAME (#CUSTNO *HIDDEN))
GROUP_
...
BY NAME(#CUSTOMER)
...
FIELDS(#CUSTNO #NAME #ADDR1 #ADDR2 #POSTCD)
REQUEST FIELDS(#NAME)
CLR_LIST NAMED(#BROWSE)
SELECT FIELDS(#BROWSE)
...
FROM_FILE(CUSMSTV1)
...
WITH_KEY(#NAME)
...
GENERIC(*YES)
ADD_ENTRY TO_LIST(#BROWSE)
...
ENDSELECT
DISPLAY BROWSELIST(#BROWSE)
...
SELECTLIST NAMED(#BROWSE)
...
GET_ENTRYS(*SELECT)
FETCH FIELDS(#CUSTOMER)
...
FROM_FILE(CUSMST)
...
WITH_KEY(#CUSTNO)
DISPLAY FIELDS(#CUSTOMER)
ENDSELECT
...
このRDMLプログラムでは、次の点に注意してください。
- 実行可能コマンドの最初のブロックでは、ユーザーに顧客名を入力するよう要求し、総称的に一致する名前を持つ全顧客のリストを作成します。
- 最初のDISPLAYコマンドでは、コードの最初のブロックによって作成されたリストを表示します。リストは、次のように表示されます。
...
Sel Customer name
_ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
_ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
_ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
"Sel"列が入力可能であることに注意してください。これは、フィールド#CHOOSEに*
...
SELECT属性を割り当てているためです。
...
また、フィールド#CUSTNOが画面に表示されないことに注意してください。これは、フィールド#CUSTNOに属性*HIDDENが指定されているためです。このフィールドは表示されていませんが、各リスト・エントリーの一部であり、詳細を表示するのに必要な顧客レコードを取り込むために最終ループで使用されます。
- SELECTLIST/ENDSELECTループによって、リスト内のエントリーが処理されます。GET_ENTRYS(*SELECT)パラメータによって、フィールド#CHOOSEでブランク以外の値を持つエントリーだけが処理のために選択されます。GET_ENTRYSパラメータとDEF_LISTコマンド内の*SELECT属性との間にリンクがあることに注意してください。
- SELECTLIST/ENDSELECTループ内では、リストには存在するがユーザーには非表示にするよう定義されたフィールド#CUSTNOは、詳細を表示するのに適切な顧客レコードを取得するために使用されます。この場合、フィールド#NAMEが関連する顧客に一意キーを提供しないため、このような操作を行う必要があります。
...
*
...
SELECT属性は、他にもさまざまな方法で使用することができます。次の例を検討してみましょう。
DEFINE FIELD(#CHOOSE)
...
TYPE(*CHAR)
...
LENGTH(3)
...
COLHDG('Sel')
...
DEF_LIST NAMED(#BROWSE)
...
FIELDS((
...
#CHOOSE *SELECT)
...
#ORDER #DATDUE)
...
REQUEST FIELDS(#DATDUE)
...
CLR_LIST NAMED(#BROWSE)
...
SELECT FIELDS(#BROWSE)
...
FROM_FILE(ORDHDRV3)
...
WITH_KEY(#DATDUE)
...
ADD_ENTRY TO_LIST(#BROWSE)
...
ENDSELECT
DISPLAY BROWSELIST(#BROWSE)
...
--
...
> SELECTLIST NAMED(#BROWSE)
...
GET_ENTRYS(*SELECT)
...
|
| CASE OF_FIELD(#CHOOSE)
...
|
| WHEN VALUE_IS('=
...
CUS')
...
| < display customer details >
| WHEN VALUE_IS('=
...
DET'
...
'=
...
LIN')
...
| < display line item details >
| WHEN VALUE_IS('=
...
HIS')
...
| < display customer payment history >
| WHEN VALUE_IS('=
...
STS')
...
| < display order status >
|
| ENDCASE
|
--- ENDSELECT
- 最初の例と同様に、コマンドは、「納期」を入力するよう要求します。関連するすべての受注のリストが作成され、表示されます。リストは、次のように表示されます。
Sel Order Date Due
- 最初の例と同様に、コマンドは、「納期」を入力するよう要求します。関連するすべての受注のリストが作成され、表示されます。リストは、次のように表示されます。
...
_ 9999999 99/99/99
...
_ 9999999 99/99/99
...
_ 9999999 99/99/99
...
_ 9999999 99/99/
...
99
- SELECTLIST/ENDSELECTループは、フィールド#CHOOSE内でブランク以外の値を持つリスト内の全エントリーを処理するよう要求しています。また、ループは、フィールド#CHOOSEの内容にも作用するため、受注に関する顧客、明細、支払い履歴、状況が表示されます。
...