Page History
日付表示再利用可能パーツ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