Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

...

日付表示再利用可能パーツEOEXAM04の機能を拡張するために、継承する再利用可能パーツで祖先のメソッドを変更します。このためには、メソッド・ルーチンと*REDEFINEオプションを使用します。

祖先の日付表示再利用可能パーツEOEXAM04には、日付を検証するメソッド・ルーチンValidateDateが含まれます。日付の検証を拡張し、その日が平日であるか確認します。

この動作を見るために、祖先のValidateDateメソッドをオーバーライドする継承再利用可能パーツ#EOEXAM05にメソッド・ルーチンを追加します。  
MTHROUTINE name

     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