%ECENTURY_METHOD
WSupported on Windows
|
USupported on Unix
|
VSupported on OpenVMS
|
NSupported in Synergy .NET
|
function ECENTURY_METHOD,^val a_data ,a a_type ,n a_today ,n a_year ,n a_month ,n a_day ,n
Return value
The two-digit century to use by default (for example, 19 or 20). (n)
Arguments
a_data
The data being decoded. (a)
a_type
One of the following date formats: (n)
YYPP.
YYJJJ.
YYMMDD.
YYYYPP.
YYYYJJJ.
YYYYMMDD.
a_today
The default to today flag. (n)
a_year
The two-digit year entered. (n)
a_month
The month entered. (n)
a_day
The day entered. (n)
Discussion
%ECENTURY_METHOD is a function that you write and name. The name of your function is registered with UI Toolkit using the E_METHOD subroutine. Your %ECENTURY_METHOD function must be declared as a ^VAL function.
%ECENTURY_METHOD is called whenever UI Toolkit needs to supply a default century.
You will never call %ECENTURY_METHOD directly; it is called only by UI Toolkit.
A_data is the string passed to U_DCDDAT. For input processing, a_data is the string typed in by the user.
A_type is one of the definitions defined in tools.def.
If a_today is true, the date defaults to today’s date.
A_year, a_month, and a_day are the decoded year, month, and day entered. Note that a_year is a two-digit year.
See also
- SYNCENTURY environment variable for more information about defining a sliding window used to determine the default century
- Overloading UI Toolkit routines for more information on creating this function
- Appendix D: Methods
The following example shows the default century method behavior when SYNCENTURY is used.
function mycentury,^val, reentrant ; ; Description: Century method implementing SYNCENTURY behavior ; ; Arguments: a_data ,a ;The date as entered a_type ,n ;The type of date field a_today ,n ;The "default to today" flag a_year ,n ;The two-digit year parsed from input a_month ,n ;The month parsed a_day ,n ;The day parsed ; Return value: ; The two-digit century ; .align stack record length ,i4 ;Length of contents of SYNCENTURY logical syncentury ,d2 ;Value contained in SYNCENTURY first_century ,d2 ;First of the two centuries in our sliding range group todays_ds ,a20 ;%datetime group today ,d8 ;The date portion thereof group yyyy ,d4 ;The year out of that cc ,d2 ;The century part yy ,d2 ;The year (non-century) endgroup mm ,d2 ;The month dd ,d2 ;The day endgroup endgroup string ,a80 ;String buffer for SYNCENTURY contents proc todays_ds = %datetime ;Load the current date to get the year ;Is SYNCENTURY defined? xcall getlog("SYNCENTURY", string, length) if (length) then ;Yes, use it begin onerror ($ERR_DIGIT) nosyncentury ;Catch conversion errors syncentury = string ;Convert from alpha to numeric end else ;No, SYNCENTURY is not defined begin ; or is defined non-numeric nosyncentury, clear syncentury ;Default to zero end offerror if (yy .ge. syncentury) then ;Are we on or after SYNCENTURY? first_century = cc ;Yes, later numbers are in this century else first_century = cc - 1 ;No, later numbers are in previous century if (a_year .ge. syncentury) ;Entered a year on or after? freturn first_century ;Yes, return the earlier century freturn (first_century + 1) ;No, return the later century endfunction