2.9.8.12 ファイルでのリストの保存と復元

この例では、ファイルにリストの内容を保存したりロードする方法を説明します。従業員の詳細のリスト・ビューを表示します。

DBMSからロードがクリックされると、PSLMSTテーブルから従業員のリストがロードされます。Zipファイルからロードボタンがクリックされると、タブ区切り形式のc:\Employee_List.datという名前のファイルから従業員のリストがロードされます。ファイルへ保管ボタンがクリックされると、タブ区切り形式でc:\Employee_List.datという名前のファイルに従業員のリストが保存されます。  


例の動作を見るには、このコードをフォーム・コンポーネントにコピーします。

FUNCTION options(*DIRECT)
BEGIN_COM role(*EXTENDS #PRIM_FORM) HEIGHT(346) LEFT(327) TOP(120) WIDTH(620)
DEFINE_COM class(#PRIM_LTVW) name(#EMPLIST) DISPLAYPOSITION(1) FULLROWSELECT(True) HEIGHT(285) LEFT(16) PARENT(#COM_OWNER) TABPOSITION(1) TOP(16) WIDTH(481)
DEFINE_COM class(#PRIM_LVCL) name(#LVCL_1) DISPLAYPOSITION(1) PARENT(#EMPLIST) SOURCE(#EMPNO) WIDTH(22)
DEFINE_COM class(#PRIM_LVCL) name(#LVCL_2) DISPLAYPOSITION(2) PARENT(#EMPLIST) SOURCE(#SURNAME) WIDTH(22)
DEFINE_COM class(#PRIM_LVCL) name(#LVCL_3) DISPLAYPOSITION(3) PARENT(#EMPLIST) SOURCE(#GIVENAME) WIDTH(29)
DEFINE_COM class(#PRIM_LVCL) name(#LVCL_4) DISPLAYPOSITION(4) PARENT(#EMPLIST) SOURCE(#SALARY) WIDTH(25)
DEFINE_COM class(#PRIM_PHBN) name(#PB_DBMS) CAPTION('Load from DBMS') DISPLAYPOSITION(2) LEFT(512) PARENT(#COM_OWNER) TABPOSITION(2) TOP(128) WIDTH(90)
DEFINE_COM class(#PRIM_PHBN) name(#PB_FILE) CAPTION('Load from File') DISPLAYPOSITION(3) LEFT(512) PARENT(#COM_OWNER) TABPOSITION(3) TOP(176) WIDTH(88)
DEFINE_COM class(#PRIM_PHBN) name(#PB_SAVE) CAPTION('Save to File') DISPLAYPOSITION(4) LEFT(512) PARENT(#COM_OWNER) TABPOSITION(4) TOP(226) WIDTH(90)
DEFINE_COM class(#PRIM_PHBN) name(#PB_CLEAR) CAPTION('Clear List') DISPLAYPOSITION(5) LEFT(514) PARENT(#COM_OWNER) TABPOSITION(5) TOP(272) WIDTH(87)
DEFINE field(#RETCODE) type(*CHAR) length(2)
EVTROUTINE handling(#com_owner.Initialize)
ENDROUTINE
EVTROUTINE handling(#PB_DBMS.Click)
CLR_LIST named(#EMPLIST)
SELECT fields(#EMPLIST) from_file(PSLMST)
ADD_ENTRY to_list(#EMPLIST)
ENDSELECT
ENDROUTINE
EVTROUTINE handling(#PB_FILE.Click)
CLR_LIST named(#EMPLIST)
USE builtin(TRANSFORM_FILE) with_args(#EMPLIST 'C:\EMPLOYEE_LIST.DAT' O) to_get(#RETCODE)
ENDROUTINE
EVTROUTINE handling(#PB_SAVE.Click)
USE builtin(TRANSFORM_LIST) with_args(#EMPLIST 'C:\EMPLOYEE_LIST.DAT' O) to_get(#RETCODE)
ENDROUTINE
EVTROUTINE handling(#PB_CLEAR.Click)
CLR_LIST named(#EMPLIST)
ENDROUTINE
END_COM