7.2.3 ADD_ENTRY の使用例

ブラウズ・リストに項目を定義、追加して、ブラウズ・リストを表示する

データベース・ファイルからブラウズ・リストに情報を取り込む

ブラウズ・リストの先頭または末尾に項目を追加する

作業リストを使用してブラウズ・リストの項目をソートする

ブラウズ・リストに項目を定義、追加して、ブラウズ・リストを表示する

#EMPBROWSEというブラウズ・リストに2つの項目を定義、追加して、そのブラウズ・リストを表示するには、以下のようにコマンドを使用します。

DEF_LIST   NAME(#EMPBROWSE) FIELDS(#EMPNO #GIVENAME #SURNAME)
           
CHANGE     #EMPNO    'A0001'
CHANGE     #GIVENAME 'JOHN'
CHANGE     #SURNAME  'SMITH'
ADD_ENTRY  TO_LIST(#EMPBROWSE)
           
CHANGE     #EMPNO    'A0002'
CHANGE     #GIVENAME 'MARY'
CHANGE     #SURNAME  'BROWN'
ADD_ENTRY  TO_LIST(#EMPBROWSE)
           
DISPLAY    BROWSELIST(#EMPBROWSE)  
 

データベース・ファイルからブラウズ・リストに情報を取り込む

以下の例では、ユーザーに部門コード(ADM、MKTなど)を入力するよう要求します。

指定の部門に属しているすべての社員が#EMPBROWSEという名前のブラウズ・リストに追加されます。その後、結果のブラウズ・リストがユーザーに表示されます。

DEF_LIST   NAME(#EMPBROWSE) FIELDS(#SECTION #EMPNO #SURNAME #GIVENAME)
BEGIN_LOOP 
REQUEST    FIELDS(#DEPTMENT) BROWSELIST(#EMPBROWSE)
CLR_LIST   NAMED(#EMPBROWSE)
SELECT     FIELDS(#EMPBROWSE) FROM_FILE(PSLMST1) WITH_KEY(#DEPTMENT)
ADD_ENTRY  TO_LIST(#EMPBROWSE)
ENDSELECT  
END_LOOP 
 

ブラウズ・リストの先頭または末尾に項目を追加する

この例では、社員の一連の詳細を入力するようユーザーに要求します。

社員の一連の詳細それぞれがブラウズ・リストに追加されます。

これらの社員の詳細は、ブラウズ・リストの先頭または末尾に追加できます。

ブラウズ・リストの先頭には項目を追加できないため、詳細を保持するために作業リストが使用され、詳細を表示するためにブラウズ・リストが使用されます。

DEFINE     FIELD(#WHERE) TYPE(*CHAR) LENGTH(1) LABEL('Top or Bottom') DEFAULT(B)
DEF_LIST   NAME(#EMPBROWSE) FIELDS(#EMPNO #SURNAME #GIVENAME)
DEF_LIST   NAME(#EMPWORKNG) FIELDS(#EMPNO #SURNAME #GIVENAME) TYPE(*WORKING) ENTRYS(9999)
           
BEGIN_LOOP 
REQUEST    FIELDS(#WHERE #EMPNO #SURNAME #GIVENAME) BROWSELIST(#EMPBROWSE)
IF         COND('#WHERE = B')
ADD_ENTRY  TO_LIST(#EMPWORKNG)
ELSE       
ADD_ENTRY  TO_LIST(#EMPWORKNG) AFTER(*START)
ENDIF      
           
EXECUTE    SUBROUTINE(VISIBLE)
END_LOOP 
 

以下のサブルーチンは、作業リスト(#EMPWORKNG)の内容を、表示されるブラウズ・リスト# EMPBROWSEにコピーするために使用されます。

SUBROUTINE NAME(VISIBLE)
CLR_LIST   #EMPBROWSE
SELECTLIST NAMED(#EMPWORKNG)
ADD_ENTRY  TO_LIST(#EMPBROWSE)
ENDSELECT  
ENDROUTINE
 

作業リストを使用してブラウズ・リストの項目をソートする

この例では、社員の一連の詳細を入力するようユーザーに要求します。

社員の一連の詳細それぞれがブラウズ・リストに追加されます。

ブラウズ・リストをさまざまな方法でソートするためのファンクション・キーが用意されています。

ブラウズ・リストの項目はソートできないため、ソート済みの詳細を保持するために作業リストが使用され、ソート順で表示するためにブラウズ・リストが使用されます。

DEF_LIST   NAME(#EMPBROWSE) FIELDS(#EMPNO #SURNAME #GIVENAME)
DEF_LIST   NAME(#EMPWORKNG) FIELDS(#EMPNO #SURNAME #GIVENAME) TYPE(*WORKING) ENTRYS(9999)
           
DEFINE     FIELD(#UK_EMPNO) REFFLD(#IO$KEY) DEFAULT('''09''')
DEFINE     FIELD(#UK_SURNME) REFFLD(#IO$KEY) DEFAULT('''10''')
DEFINE     FIELD(#UK_GVNNME) REFFLD(#IO$KEY) DEFAULT('''11''')
           
BEGIN_LOOP 
REQUEST    FIELDS(#EMPNO #SURNAME #GIVENAME) BROWSELIST(#EMPBROWSE) USER_KEYS((09 EMPNO *NEXT)(10 'SURNAME' *NEXT)(11 'GIVNAME '))
           
CASE       OF_FIELD(#IO$KEY)
WHEN       VALUE_IS('= #UK_EMPNO')
SORT_LIST  NAMED(#EMPWORKNG) BY_FIELDS(#EMPNO)
WHEN       VALUE_IS('= #UK_SURNME')
SORT_LIST  NAMED(#EMPWORKNG) BY_FIELDS(#SURNAME)
WHEN       VALUE_IS('= #UK_GVNNME')
SORT_LIST  NAMED(#EMPWORKNG) BY_FIELDS(#GIVENAME)
OTHERWISE  
ADD_ENTRY  TO_LIST(#EMPWORKNG)
ENDCASE    
           
EXECUTE    SUBROUTINE(VISIBLE)
END_LOOP   
           
SUBROUTINE NAME(VISIBLE)
CLR_LIST   NAMED(#EMPBROWSE)
SELECTLIST NAMED(#EMPWORKNG)
ADD_ENTRY  TO_LIST(#EMPBROWSE)
ENDSELECT  
ENDROUTINE 
RETURN