13.4.6 非表示フィールド属性と選択フィールド属性

属性

説明

*HIDE *HIDDEN

この2つの属性は、同義です。
この属性を使用すると、フィールドは「非表示」になり、画面に表示されません。
この属性の主な目的は、フィールドをブラウズ・リストに追加するが、そのフィールドを実際には画面に表示しないようにすることです。リストとリスト処理の詳細については、DEF_LISTコマンドを参照してください。

*SEL *SELECT

この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プログラムでは、次の点に注意してください。

     Sel     Customer name
      _      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     
      _      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     
      _      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX     
 
      "Sel"列が入力可能であることに注意してください。これは、フィールド#CHOOSEに*SELECT属性を割り当てているためです。
      また、フィールド#CUSTNOが画面に表示されないことに注意してください。これは、フィールド#CUSTNOに属性*HIDDENが指定されているためです。このフィールドは表示されていませんが、各リスト・エントリーの一部であり、詳細を表示するのに必要な顧客レコードを取り込むために最終ループで使用されます。

      *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