You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

[ |../../index.htm#lansa/l4wdev06_1015.htm]
現在地:

2.16.3.4 祖先のメソッドの再定義

日付表示再利用可能パーツEOEXAM04の機能を拡張するために、継承する再利用可能パーツで祖先のメソッドを変更します。このためには、メソッド・ルーチンと*REDEFINEオプションを使用します。
祖先の日付表示再利用可能パーツEOEXAM04には、日付を検証するメソッド・ルーチンValidateDateが含まれます。日付の検証を拡張し、その日が平日であるか確認します。
この動作を見るために、祖先のValidateDateメソッドをオーバーライドする継承再利用可能パーツ#EOEXAM05にメソッド・ルーチンを追加します。
 
MTHROUTINE name(ValidateDate) options(*REDEFINE)
ENDROUTINE
再定義された検証ルーチンでは、その日が平日かどうかをチェックし、曜日を表示します。以下の継承する日付表示再利用可能パーツのソースから、このコードをコピーできます。
再利用可能パーツをコンパイルして実行します。
継承する日付表示再利用可能パーツのソース
FUNCTION options(*DIRECT) BEGIN_COM role(*EXTENDS #EOEXAM04) HEIGHT(29) WIDTH(492)   * Override ancestor date validation add additional rules * to ensure that the date is not just a valid date but * also a valid day of the week ..... MTHROUTINE name(ValidateDate) options(*REDEFINE) DEFINE field(#RETCODE) type(*CHAR) length(1) desc('Return Code') DEF_COND name(*NOTOKAY) cond('#RetCode *ne Y') DEFINE field(#CVTDATE) type(*CHAR) length(20)   * Do standard ancestor validaton INVOKE method(#Com_Ancestor.ValidateDate)   * If a date exists and it is valid so far, check that it is a week day IF cond('(#Showdate.Value *ne *Blanks) and (#Com_Owner.uInError = False)')   CHANGE field(#CVTDATE) to(*NULL) CHANGE field(#DATEC) to('#SHOWDATE.VALUE')   USE builtin(CONVERTDATE) with_args(#DATEC F R) to_get(#CVTDATE #RETCODE)   CASE of_field(#CVTDATE) WHEN value_is('= Mon' '= Tue' '= Wed' '= Thu' '= Fri') USE builtin(CONVERTDATE) with_args(#DATEC F S) to_get(#CVTDATE #RETCODE) USE builtin(TCONCAT) with_args(#SHOWTEXT.CAPTION ' (' #CVTDATE ')') to_get(#STD_TEXTL) OTHERWISE SET com(#Com_Owner) UINERROR(TRUE) USE builtin(TCONCAT) with_args(#SHOWTEXT.CAPTION ' (Not a week day!)') to_get(#STD_TEXTL) ENDCASE   SET com(#ShowText) CAPTION(#Std_Textl) ENDIF ENDROUTINE   END_COM
 
[ |../../index.htm#lansa/l4wdev06_1015.htm]

  • No labels