| IBL agent written by Martin King to implement the sample universe of discourse of Appendix B of ISO TR9007 See: http://www.aim.nl/weblog/ISO TR9007/B Example Universe of Discourse.doc Version at 2009-10-07 with rules and tables given numbers and some simplification DESIGN NOTES The objectives include: to represent all the things and happenings as described in B.3. to represent all the rules as described in B.2. in particular to enforce constraints on updates to tables to provide IBL 'questions' for adding new things and happenings obeying the rules CURRENT WORKING FUNCTIONS Tables with all of the example data in B.3. Enquiring or checking the current registered owner of a car on a particular date Register permission of a new manufacturer to operate Check fuel consumption limit non-compliance Register a new car model Register transfer of ownership Register a Person of interest Register a new Garage Register manufacture of a new car Register the cessation of operation of a manufacturer Register the death of a person Query to show group members as an indented list PLANNED FUNCTIONS Register a Group desiring ownership R ISO date eg-2008-02-29 is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day R25 eg-name is manufacturer in year eg-2008 not : R3 registered owner eg-name of any car at date eg-2008-02-29 add : T10 Manufacturer eg-name ceased to operate eg-2008 -------------------------------------------------------------------------------------------- R1 Register cessation of operation of manufacturer eg-name on date eg-2008-02-29 R27 registered owner eg-name of car eg-rgno at date eg-2008-02-29 --------------------------------------------------------------- R3 registered owner eg-name of any car at date eg-2008-02-29 T9 Manufacturer eg-name permitted to operate eg-year eg-10 is greater than or equal 4 eg-10 is less than or equal 25 not : R5 Existing model has name eg-modelname add : T11 Manufacturer eg-name has model eg-modelname consumption eg-10 litres -------------------------------------------------------------------------------------------- R4 Register new model of Manufacturer eg-name has model eg-modelname consumption eg-10 litres T11 Manufacturer eg-name has model eg-modelname consumption eg-any litres ----------------------------------------------------------------------- R5 Existing model has name eg-modelname T7 Average fuel consumption eg-1979 set as eg-no litres R25 eg-Ford is manufacturer in year eg-1979 avg eg-10 : R7 Car eg-Ford model eg-mod serial eg-ser produced eg-1979 consumption eg-10 = eg-Ford-avg eg-Ford-avg is greater than eg-no --------------------------------------------------------------------------------------------------------------- R6 consumption non-compliance in year eg-1979 by manufacturer eg-Ford : target eg-no litres achieved eg-Ford-avg T13 Car eg-Ford model eg-mod serial eg-ser produced eg-1979 registered eg-yr-mth-day number eg-rgno T11 Manufacturer eg-Ford has model eg-mod consumption eg-10 litres --------------------------------------------------------------------------- R7 Car eg-Ford model eg-mod serial eg-ser produced eg-1979 consumption eg-10 eg-rgno consists of eg-6 symbols letters and digits R ISO date eg-yr-mth-day is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day R25 eg-mfg is manufacturer in year eg-2008 T11 Manufacturer eg-mfg has model eg-mod consumption this-10 litres not : R12 This serial eg-ser already used by this manufacturer eg-mfg R13 check production year eg-prodyr valid on date for year eg-2008 month eg-mth not : R11 this registration number eg-rgno already registered add : T13 Car eg-mfg model eg-mod serial eg-ser produced eg-prodyr registered eg-yr-mth-day number eg-rgno --------------------------------------------------------------------------------------------------------------- R8 Register new car eg-mfg model eg-mod serial eg~ser produced eg~prodyr registered eg~yr-mth-day number eg~rgno max eg-yyyymmdd : R10 mfg eg-Ford registered new car model eg-Mustang on numeric date eg-yyyymmdd = eg-max-yyyymmdd R ISO date eg-max-yyyy-mm-dd is numeric date eg-max-yyyymmdd T13 Car eg-Ford model eg-Mustang serial eg-ser produced eg-prodyr registered eg-max-yyyy-mm-dd number eg-rgno T1 for demo purposes the current date and time is eg-1980-03-16 eg-1345 add : T13 Car eg-Ford model eg-Mustang serial eg-ser produced eg-prodyr registered eg-1980-03-16 number eg-rgno -------------------------------------------------------------------------------------------------------------------- R8 Register new car eg-Ford model eg-Mustang serial eg-ser produced eg-prodyr registered eg-1980-03-16 number eg-rgno T13 Car eg-Ford model eg-Mustang serial eg-ser produced eg-prodyr registered eg-yyyy-mm-dd number eg-rgno R ISO date eg-yyyy-mm-dd is numeric date eg-yyyymmdd ------------------------------------------------------------------------------------------------------- R10 mfg eg-Ford registered new car model eg-Mustang on numeric date eg-yyyymmdd T13 Car eg-mfg model eg-mod serial eg-ser produced eg-prodyr registered eg-yr-mth-day number eg-rgno -------------------------------------------------------------------------------------------------- R11 this registration number eg-rgno already registered T13 Car eg-mfg model eg-mod serial eg-ser produced eg-prodyr registered eg-yr-mth-day number eg-rgno -------------------------------------------------------------------------------------------------- R12 This serial eg-ser already used by this manufacturer eg-mfg eg-mth is greater than 0 eg-prodyr is equal eg-2008 ----------------------------------------------------------------------------- R13 check production year eg-prodyr valid on date for year eg-2008 month eg-mth eg-mth is equal 1 eg-prodyr + 1 = eg-2008 ----------------------------------------------------------------------------- R13 check production year eg-prodyr valid on date for year eg-2008 month eg-mth R ISO date eg-yyyy-mm-dd is numeric date eg-19990101 R27 registered owner eg-legent1 of car eg-rgno at date eg-yyyy-mm-dd R32 eg-legent1 is legal entity type eg-type1 R32 eg-legent2 is legal entity type eg-type2 T2 Transfer from legal entity type eg-type1 to type eg-type2 legitimate not : R16 transfer of car eg-rgno to eg-legent2 on eg-yyyy-mm-dd blows garage limit on makes in stock add : T14 transfer of car eg-rgno from eg-legent1 to eg-legent2 registered eg-yyyy-mm-dd --------------------------------------------------------------------------------------------------- R15 Register transfer of car eg-rgno from eg-legent1 to eg-legent2 on eg-yyyy-mm-dd R ISO date eg-yyyy-mm-dd is numeric date eg-19990101 R32 eg-legent2 is legal entity type Garage R32 eg-any-mfg is legal entity type Manufacturer count eg-any-mfg : R17 eg-legent2 is registered owner of some car make eg-any-mfg at date eg-yyyy-mm-dd = eg-count3 R18 car eg-rgno made by eg-mfg count eg-mfg : R17 eg-legent2 is registered owner of some car make eg-mfg at date eg-1999-01-01 = eg-count1 eg-count3 - eg-count1 = eg-count2 eg-count2 is less than 3 ----------------------------------------------------------------------------------------------------------------- R16 transfer of car eg-rgno to eg-legent2 on eg-yyyy-mm-dd blows garage limit on makes in stock R ISO date eg-yyyy-mm-dd is numeric date eg-19990101 R27 registered owner eg-legent2 of car eg-rgno at date eg-yyyy-mm-dd R18 car eg-rgno made by eg-mfg ------------------------------------------------------------------------------- R17 eg-legent2 is registered owner of some car make eg-mfg at date eg-yyyy-mm-dd T13 Car eg-mfg model eg-mod serial eg-ser produced eg-prodyr registered eg-yr-mth-day number eg-rgno -------------------------------------------------------------------------------------------------- R18 car eg-rgno made by eg-mfg R ISO date eg-2008-02-29 is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day not : R31 eg-name is legal entity any type add : T8 Garage eg-name commenced to operate eg-2008 -------------------------------------------------------------------------------------------- R19 Register Garage eg-name on date eg-2008-02-29 R ISO date eg-2008-02-29 is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day T5 Person eg-name registered eg-1980 eg-2008 is greater than or equal eg-1980 not : R21 death of person eg-name already registered add : T6 Person eg-name died eg-2008 -------------------------------------------------------------------------------------------- R20 Register death of Person eg-name on date eg-2008-02-29 T6 Person eg-name died eg-2008 -------------------------------------------- R21 death of person eg-name already registered R ISO date eg-2008-02-29 is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day not : R31 eg-name is legal entity any type add : T5 Person eg-name registered eg-2008 -------------------------------------------------------------------------------------------- R22 Register Person eg-name on date eg-2008-02-29 R ISO date eg-2008-02-29 is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day not : R25 eg-name is manufacturer in year eg-2008 count eg-Ford : R25 eg-Ford is manufacturer in year eg-2008 = eg-5 eg-5 is less than 5 add : T9 Manufacturer eg-name permitted to operate eg-2008 -------------------------------------------------------------------------------------------- R23 Register permission of manufacturer eg-name to operate from eg-2008-02-29 T9 Manufacturer eg-Ford permitted to operate eg-1910 eg-1910 is less than or equal eg-2008 not: R26 Manufacturer eg-Ford ceased to operate before eg-2008 ------------------------------------------------------------ R25 eg-Ford is manufacturer in year eg-2008 T10 Manufacturer eg-Ford ceased to operate eg-2007 eg-2007 is less than eg-2008 ------------------------------------------------------- R26 Manufacturer eg-Ford ceased to operate before eg-2008 R ISO date eg-1999-01-01 is numeric date eg-19990101 max eg-yyyymmdd : R30 before eg-1999-01-01 car eg-rgno was transferred eg-yyyymmdd = eg-max-yyyymmdd R ISO date eg-max-yyyy-mm-dd is numeric date eg-max-yyyymmdd T14 transfer of car eg-rgno from eg-legent1 to eg-name registered eg-max-yyyy-mm-dd R32 eg-name is legal entity type eg-any not: R29 Car eg-rgno was destroyed before eg-1999-01-01 -------------------------------------------------------------------------------------------------- R27 registered owner eg-name of car eg-rgno at date eg-1999-01-01 R ISO date eg-1999-01-01 is numeric date eg-19990101 T13 Car eg-name model eg-mod serial eg-ser produced eg-prodyr registered eg-yr-mth-day number eg-rgno eg-yr-mth-day is less than or equal eg-1999-01-01 not: R28 car eg-rgno transferred to a dealer before eg-1999-01-01 -------------------------------------------------------------------------------------------------- R27 registered owner eg-name of car eg-rgno at date eg-1999-01-01 T14 transfer of car eg-rgno from eg-legent1 to eg-legent2 registered eg-yyyy-mm-dd eg-yyyy-mm-dd is less than or equal eg-1999-01-01 -------------------------------------------------------------------------------------------------- R28 car eg-rgno transferred to a dealer before eg-1999-01-01 T15 Car eg-rgno was destroyed on eg-yr-mth-day eg-yr-mth-day is less than eg-yyyy-mm-dd ------------------------------------------------ R29 Car eg-rgno was destroyed before eg-yyyy-mm-dd R ISO date eg-1999-01-01 is numeric date eg-19990101 T14 transfer of car eg-rgno from eg-legent1 to eg-legent2 registered eg-yyyy-mm-dd eg-1999-01-01 is greater than eg-yyyy-mm-dd R ISO date eg-yyyy-mm-dd is numeric date eg-yyyymmdd -------------------------------------------------------------------------------- R30 before eg-1999-01-01 car eg-rgno was transferred eg-yyyymmdd R32 eg-name is legal entity type eg-any ------------------------------------- R31 eg-name is legal entity any type T9 Manufacturer this-name permitted to operate this-year ------------------------------------------------------- R32 eg-name is legal entity type Manufacturer T8 Garage eg-name commenced to operate eg-year --------------------------------------------- R32 eg-name is legal entity type Garage T5 Person eg-name registered eg-yr ------------------------------------- R32 eg-name is legal entity type Person T4 Group eg-name registered eg-yr --------------------------------- R32 eg-name is legal entity type Group T4 Group eg-gname registered eg-gyr T3 Group eg-gname has person eg-persname T5 Person eg-persname registered eg-pyr -------------------------------------------------- R36 Group eg-gname registered eg-gyr has person list eg-persname eg-pyr T1 for demo purposes the current date and time is eg-1980-03-16 eg-1345 ====================================================================== 1980-03-16 1345 T2 Transfer from legal entity type eg-type1 to type eg-type2 legitimate ====================================================================== Manufacturer Garage Garage Person Person Garage Garage Group Group Garage Group Person Person Group T3 Group eg-name has person eg-persname ====================================== MrMrs Soap Mr Soap MrMrs Soap Mrs Soap GEB Goedel GEB Escher GEB Bach EB Escher EB Bach T4 Group eg-name registered eg-yr ================================ GEB 1980 EB 1980 MrMrs Soap 1978 T5 Person this-name registered this-yr ====================================== Mr Johnson 1974 Mr Baker 1974 Mr Soap 1974 Mrs Soap 1974 Goedel 1974 Escher 1974 Bach 1974 T6 Person this-name died this-yr ================================ Goedel 1980 T7 Average fuel consumption eg-year set as eg-no litres ====================================================== 1979 12 T8 Garage this-name commenced to operate this-year ================================================== Smiths 1975 JonesBLtd 1978 RNCars 1978 SthStn 1980 NthStnGrg 1980 T9 Manufacturer this-name permitted to operate this-year ========================================================= Ford 1910 General-Motors 1920 Renault 1901 Jowett 1930 Volkswagen 1935 PSC 1980 T10 Manufacturer this-name ceased to operate this-year ======================================================= Jowett 1979 T11 Manufacturer this-name has model this-modelname consumption this-10 litres ============================================================================ Ford Mustang 15 Ford Granada 9 GM Impala 15 PSC Gasmiser 7 T13 Car this-mfg model this-mod serial this-ser produced this-prodyr registered this-y-m-d number this-rgno ========================================================================================================= Ford Mustang PCXX998 1975 1975-01-20 GMF-116 Ford Mustang PCXX999 1975 1975-01-21 GMF-117 GM Impala QGTM783F 1978 1978-04-09 ABC-653 GM Impala QAVP864B 1977 1978-01-21 PQR-456 PSC Gasmiser GAM1001 1979 1980-01-04 XYZ-101 PSC Gasmiser GAM1002 1979 1980-01-04 XYZ-102 PSC Gasmiser GAM1003 1979 1980-01-04 XYZ-103 Ford Mustang PCXX010 1979 1980-01-05 XYZ-109 PSC Gasmiser GAM1004 1980 1980-01-05 XYZ 104 T14 transfer of car this-rgno from this-legent1 to this-legent2 registered this-yyyy-mm-dd ========================================================================================= GMF-116 Ford Smiths 1975-01-28 GMF-117 Ford Smiths 1975-01-29 GMF-117 Smiths Mr Johnson 1975-03-15 GMF-117 Mr Johnson Mr Baker 1978-05-24 ABC-653 GM JonesBLtd 1978-xx-xx ABC-653 JonesBLtd Mr Johnson 1978-05-26 PQR-456 GM RNCars 1978-02-14 PQR-456 RNCars MrMrs Soap 1978-03-31 XYZ-101 PSC SthStn 1980-01-25 XYZ-102 PSC NthStnGrg 1980-01-20 XYZ-103 PSC NthStnGrg 1980-01-20 XYZ-102 NthStnGrg GEB 1980-01-26 XYZ-103 NthStnGrg GEB 1980-01-26 XYZ-102 GEB EB 1980-03-05 XYZ-102 EB Smiths 1980-03-15 XYZ-109 Smiths EB 1980-03-15 PQR-456 MrMrs Soap Smiths 1979-01-01 T15 Car eg-rgno was destroyed on eg-yr-mth-day ============================================ GMF-117 1980-01-13 ABC-653 1979-08-14 XYZ-101 1980-01-25 XYZ-103 1980-03-05 | An agent for handling dates and days of the week. DESIGN NOTES The basis is the ISO date format yyyy-mm-dd Calculations pivot on a table of dates of 29th February This is a design decision for computational efficiency and simplicity of handling leap years The rules cater for leap years including the exceptions of omission or not on century years The active working span of years is determined by the rows in a table As at 2008-03-04 this agent includes three pairs of closely similar rules when the rule resolution of IBL becomes more fully commutative, one of each pair may be dropped CURRENT WORKING FUNCTIONS Three-way conversion with validity checking between: - ISO dates yyyy-mm-dd - contiguous numeric yyyymmdd - separate numeric values for years, months and days Determination of the interval in days between two dates Determination of the day of the week of an ISO date ISO date eg-yyyy-mm-dd1 is eg-Monday offset eg-777 days ISO date eg-yyyy-mm-dd2 is eg-Tuesday offset eg-999 days eg-999 - eg-777 = eg-222 --------------------------------------------------------------------------- Interval between ISO dates eg-yyyy-mm-dd1 and eg-yyyy-mm-dd2 is eg-222 days Pivot eg-yyyy-mm-dd is numdate eg-yyyymmdd weekday eg-Monday offset eg-999 -------------------------------------------------------------------------- ISO date eg-yyyy-mm-dd is eg-Monday offset eg-999 days R ISO date eg-yyyy-mm-dd is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day not : date eg-yyyy-mm-dd is leap day max eg-yyyymmdd : pivot numdate eg-yyyymmdd is earlier than eg-yyyy-mm-dd = eg-max-yyyymmdd Pivot eg-2000-02-29 is numdate eg-max-yyyymmdd weekday eg-Friday offset eg-lpyroffset R ISO date eg-2000-02-29 is numeric date eg-20000229 is year eg-2000 month eg-02 day eg-29 eg-2008 - eg-2000 = eg-yrdiff eg-yrdiff gives eg-yroffset eg-mth eg-month has maximum eg-number days offset eg-mthoffset eg-day + eg-mthoffset = eg-subtot1 eg-subtot1 + eg-yroffset = eg-subtot2 eg-subtot2 + eg-lpyroffset = eg-999 eg-3 eg-Friday is a day of the week eg-subtot2 + eg-3 = eg-sum eg-sum divided by 7 = a-quotient remainder a-rem eg-rem eg-Monday is a day of the week -------------------------------------------------------------------------------------------- ISO date eg-yyyy-mm-dd is eg-Monday offset eg-999 days R ISO date eg-2008-02-29 is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day -------------------------------------------------------------------------------------------- R ISO date eg-2008-02-29 is numeric date eg-20080229 R hyphenated triple eg-2008-02-29 is eg-2008 month eg-mth day eg-day R numeric triple eg-20080229 is year eg-2008 month eg-mth day eg-day R is ISO eg-2008-02-29 numeric eg-20080229 triple year eg-2008 month eg-mth day eg-day valid -------------------------------------------------------------------------------------------- R ISO date eg-2008-02-29 is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day R numeric triple eg-20080229 is year eg-2008 month eg-mth day eg-day R hyphenated triple eg-2008-02-29 is eg-2008 month eg-mth day eg-day R is ISO eg-2008-02-29 numeric eg-20080229 triple year eg-2008 month eg-mth day eg-day valid -------------------------------------------------------------------------------------------- R ISO date eg-2008-02-29 is numeric date eg-20080229 is year eg-2008 month eg-mth day eg-day | eg-mth eg-m has maximum eg-maxnumber days offset eg-o eg-day is greater than 0 eg-day is less than or equal eg-maxnumber max eg-yyyymmdd : Pivot eg-p is numdate eg-yyyymmdd = eg-max-yyyymmdd Pivot eg-maxdate is numdate eg-max-yyyymmdd eg-2008-02-29 is less than eg-maxdate min eg-yyyymmdd1 : Pivot eg-pp is numdate eg-yyyymmdd1 = eg-min-yyyymmdd Pivot eg-mindate is numdate eg-min-yyyymmdd eg-2008-02-29 is greater than eg-mindate eg-20080229 consists of 8 symbols letters and digits eg-2008 consists of 4 symbols letters and digits -------------------------------------------------------------------------------------------- R is ISO eg-2008-02-29 numeric eg-20080229 triple year eg-2008 month eg-mth day eg-day valid eg-mth eg-m has maximum eg-maxnumber days offset eg-o eg-day is greater than 0 eg-day is less than or equal eg-maxnumber R eg-2008-02-29 is within future date range R eg-2008-02-29 is within past date range eg-20080229 consists of 8 symbols letters and digits eg-2008 consists of 4 symbols letters and digits -------------------------------------------------------------------------------------------- R is ISO eg-2008-02-29 numeric eg-20080229 triple year eg-2008 month eg-mth day eg-day valid Pivot eg-2008-02-29 is numdate eg-20080229 eg-2008 consists of 4 symbols letters and digits eg-mth consists of 2 symbols letters and digits eg-day consists of 2 symbols letters and digits -------------------------------------------------------------------------------------------- R is ISO eg-2008-02-29 numeric eg-20080229 triple year eg-2008 month eg-mth day eg-day valid eg-mth followed by eg-day separated by a symbol - = eg-mth-day eg-2008 followed by eg-mth-day separated by a symbol - = eg-2008-02-29 ---------------------------------------------------------------------- R hyphenated triple eg-2008-02-29 is eg-2008 month eg-mth day eg-day eg-2008 followed by eg-mth-day separated by a symbol - = eg-2008-02-29 eg-mth followed by eg-day separated by a symbol - = eg-mth-day ---------------------------------------------------------------------- R hyphenated triple eg-2008-02-29 is eg-2008 month eg-mth day eg-day eg-2008 followed by eg-mth-day = eg-20080229 eg-2008 consists of 4 symbols letters and digits eg-mth followed by eg-day = eg-mth-day eg-mth consists of 2 symbols letters and digits ---------------------------------------------------------------------- R numeric triple eg-20080229 is year eg-2008 month eg-mth day eg-day eg-mth followed by eg-day = eg-mth-day eg-2008 followed by eg-mth-day = eg-20080229 ---------------------------------------------------------------------- R numeric triple eg-20080229 is year eg-2008 month eg-mth day eg-day Pivot eg-2004-02-29 is numdate eg-20080229 eg-2004-02-29 is less than or equal eg-yyyy-mm-dd ----------------------------------------------------------- pivot numdate eg-20080229 is earlier than eg-yyyy-mm-dd Pivot eg-2008-02-29 is numdate eg-20080229 weekday eg-Friday offset eg-offset ------------------------------------------------------------------------------------- Pivot eg-2008-02-29 is numdate eg-20080229 Pivot eg-2008-02-29 is numdate eg-20080229 weekday eg-Friday offset eg-offset ------------------------------------------------------------------------------------- date eg-2008-02-29 is leap day T furthest future date recorded as eg-2008-03-22 eg-2008-02-29 is less than or equal eg-2008-03-22 ---------------------------------------------------- R eg-2008-02-29 is within future date range T furthest future date recorded as eg-2007-03-22 eg-2008-02-29 is greater than eg-2007-03-22 max eg-yyyymmdd : Pivot eg-p is numdate eg-yyyymmdd = eg-max-yyyymmdd Pivot eg-maxdate is numdate eg-max-yyyymmdd eg-2008-02-29 is less than eg-maxdate del : T furthest future date recorded as eg-2007-03-22 add : T furthest future date recorded as eg-2008-02-29 ---------------------------------------------------- R eg-2008-02-29 is within future date range T earliest past date recorded as eg-1975-01-01 eg-2008-02-29 is greater than or equal eg-1975-01-01 ---------------------------------------------------- R eg-2008-02-29 is within past date range T earliest past date recorded as eg-1975-01-01 eg-1970-01-01 is less than eg-1975-01-01 min eg-yyyymmdd1 : Pivot eg-pp is numdate eg-yyyymmdd1 = eg-min-yyyymmdd Pivot eg-mindate is numdate eg-min-yyyymmdd eg-1970-01-01 is greater than eg-mindate del : T earliest past date recorded as eg-1975-01-01 add : T earliest past date recorded as eg-1970-01-01 ---------------------------------------------------- R eg-1970-01-01 is within past date range T earliest past date recorded as this-1975-01-01 ================================================= 1975-01-01 T current status date recorded as eg-1980-03-15 =============================================== 1980-03-15 T furthest future date recorded as this-2008-03-22 =================================================== 2008-03-22 Pivot eg-2008-02-29 is numdate eg-20080229 weekday eg-Friday offset eg-offset ==================================================================================== 2012-02-29 20120229 Wednesday 99999 2008-02-29 20080229 Friday 98538 2004-02-29 20040229 Sunday 97077 2000-02-29 20000229 Tuesday 95616 1996-02-29 19960229 Thursday 94155 1992-02-29 19920229 Saturday 92694 1988-02-29 19880229 Monday 91233 1984-02-29 19840229 Wednesday 89772 1980-02-29 19800229 Friday 88311 1976-02-29 19760229 Sunday 86850 1972-02-29 19720229 Tuesday 85389 1968-02-29 19680229 Thursday 83928 1964-02-29 19640229 Saturday 82467 1960-02-29 19600229 Monday 81006 1956-02-29 19560229 Wednesday 79545 eg-mo-number eg-month has maximum eg-number days offset eg-offset ========================================================================= 01 January 31 0 02 February 28 31 03 March 31 59 04 April 30 90 05 May 31 120 06 June 30 151 07 July 31 181 08 August 31 212 09 September 30 243 10 October 31 273 11 November 30 304 12 December 31 334 eg-number eg-day is a day of the week ========================================= 0 Sunday 1 Monday 2 Tuesday 3 Wednesday 4 Thursday 5 Friday 6 Saturday eg-yrdiff gives eg-yroffset =============================== 0 -59 1 306 2 671 3 1036 4 1401 5 1766 6 2131 7 2496 8 2861 | This file is an application written in the language Executable English. | You can view, run and change it by pointing a browser | to www.reengineeringllc.com and selecting ISOTR9007example.