In Dec., an accountant wanted to refer to the age of his client.  To
accurately show the age of anyone on a given date, the precise determination
of leap year comes into play.  A Stored proc was created of the following:

Procedure    : sp_age
Description  :
ID           : 3
Last Modified: December 13, 2001   6:17 PM
Version      : 1

  Parameter Name       Parameter Attributes
  -------------------- -----------------------------------------------------
----
  vdatein              Type       : DATE

  Procedure has 1 parameters.
  Return Value:        Type       : INTEGER

The Code of the Procedure is this:

--Begin Code:
*(spAge mod 121301 mbyerley)
*(returns int years)
  CLEAR VAR MICRORIM_RETURN,stp_return,vage,vagedays,vageyr, +
  vlp,vthisdays,vthisyr,vyr
  SET VAR vdatein DATE
  SET VAR vage INTEGER = NULL
  IF vdatein IS NULL THEN
    SET VAR vage = 0
  ELSE
    SET VAR vthisyr INTEGER = (INT((SGET((CTXT((JDATE(.#DATE)))),4,1))))
    SET VAR vthisdays INTEGER  = (INT((SGET((CTXT((JDATE(.#DATE)))),3,5))))
    SET VAR vageyr INTEGER = (INT((SGET((CTXT((JDATE(.vdatein)))),4,1))))
    SET VAR vagedays INTEGER  = (INT((SGET((CTXT((JDATE(.vdatein)))),3,5))))
    -- check for leap year
    SET VAR vyr = (IYR(.vdatein))
    SET VAR vlp INTEGER = NULL
    IF ((MOD(.vyr,4)) = 0 AND (MOD(.vyr,100)) <> 0) +
    OR (MOD(.vyr,400)) = 0 THEN
      -- True
      SET VAR vlp = 1
    ELSE
      -- False
      SET VAR vlp = 0
    ENDIF
    SET VAR vagedays = (.vagedays - .vlp)
    -- dayofyear is < birthday age is year minus birthyear minus 1
    IF vthisdays < .vagedays  THEN
      SET VAR vage = ((.vthisyr - 1) - .vageyr)
      -- dayofyear is after or on birthday age is year minus birthyear
    ELSE
      --dayofyear is on birthday or after age is year minus birthyear
      SET VAR vage = (.vthisyr - .vageyr)
    ENDIF
  ENDIF
  CLEAR VAR vagedays,vageyr,vdatein,vlp,vthisdays,vthisyr,vyr
  RETURN .vage

--End Code:


It is called by the following:
The Var vDateIN is set as a Date DataType to the Birthdate

Set Var vDateIN date = 04/17/1944

Then:

Set Var vAge = (call Sp_Age(.vDateIn))

Var vAge is returned properly.....



================================================
TO SEE MESSAGE POSTING GUIDELINES:
Send a plain text email to [EMAIL PROTECTED]
In the message body, put just two words: INTRO rbase-l
================================================
TO UNSUBSCRIBE: send a plain text email to [EMAIL PROTECTED]
In the message body, put just two words: UNSUBSCRIBE rbase-l
================================================
TO SEARCH ARCHIVES:
http://www.mail-archive.com/rbase-l%40sonetmail.com/

Reply via email to