Page History
[ |../../index.htm#lansa/l4wdev06_1015.htm]
現在地:
...
日付表示再利用可能パーツ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)OTHERWISESET 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)ENDIFENDROUTINE
...
END_COM
...