ユーザー・インターフェースが完了したので、コードを記述します。ソースタブをクリックし、フォームにソース・コードを表示します。フォームに置いたコントロールとフィールドのDEFINE_COMステートメントがエディターに自動的に作成されていることに注目してください。これらのステートメントは、コンポーネントに定義されたプロパティを示します。
社員の詳細フィールドを簡単に処理できるよう、グループ化します。
GROUP_BY NAME(#ALLFLDS) FIELDS(#EMPNO #SURNAME #GIVENAME #ADDRESS1 #ADDRESS2 #ADDRESS3 #POSTCODE #PHONEHME #PHONEBUS #STARTDTE #TERMDATE #DEPTMENT #SECTION #SALARY #MNTHSAL)


EVTROUTINE HANDLING(#GET.Click)
change #surname #partname
clr_list #ltvW_1
SELECT FIELDS(#ltvw_1) FROM_FILE(PSLMST2) WITH_KEY(#SURNAME) GENERIC(*YES)
add_entry #ltvw_1
endselect
ENDROUTINE
EVTROUTINE HANDLING(#LTVW_1.ItemGotSelection)
FETCH FIELDS(#ALLFLDS) FROM_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES)
ENDROUTINE
EVTROUTINE HANDLING(#NEW.Click)
change #allflds *Null
ENDROUTINE
EVTROUTINE HANDLING(#DELETE.CLICK)
DELETE FROM_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES)
ENDROUTINE
EVTROUTINE HANDLING(#SAVE.CLICK)
check_for in_file(pslmst) with_key(#empno) val_error(*next)
if_status is(*EQUALKEY)
UPDATE FIELDS(#ALLFLDS) IN_FILE(PSLMST) WITH_KEY(#EMPNO) ISSUE_MSG(*YES)
IF_STATUS IS(*OKAY)
MESSAGE MSGTXT('Employee details have been updated.')
endif
else
INSERT FIELDS(#ALLFLDS) TO_FILE(PSLMST) ISSUE_MSG(*YES)
IF_STATUS IS(*OKAY)
MESSAGE MSGTXT('Employee details have been added.')
endif
endif
ENDROUTINE
イベント・ルーチンでは、最初に社員が存在するかどうかをチェックします。存在する場合は、社員の詳細を更新します。社員番号に一致するレコードがない場合は、社員の詳細を挿入します。メッセージは、更新と挿入の後に表示されます。