November 21, 2001 

====================================================================
>From the Edge: Add Your Own Functions to R:BASE
Section:                Stored Procedures and Triggers
Chapter:                Running R:BASE Your Way! 
Platform:               R:BASE 2000 (ver 6.5++) for DOS/Windows
Build:                  1.842xRT03 and Higher 
====================================================================

With the enhancements and major bug-fixes in the recent versions 
of R:BASE 2000 (version 6.5) and higher, sometimes you wonder 
what you could do to take advantage of powerful features, such as 
creating your own functions using Stored Procedures and Triggers. 

Well, here is just a simple example to show you how you can use 
the POWER of R:BASE Features to create your own function.

Instead of bugging R:Team to include small functions like how to 
find the Integer Week from any given date, you could create your 
own function. 

The following example shows how to create a Stored Procedure to 
make this work, and how you can effectively "Add Your Own Functions" 
to R:BASE.

Put the following in a file called IWK.PRO 

*(IWK.PRO - Stored Procedure to find Integer Week)
-- Date in question is in the parameter p1

-- Extract the Current Year
   SET VAR vYear INTEGER = (IYR4(.p1))

-- Create the date of January 1 for this year
   SET VAR vJan01 DATE = (RDATE(1,1,.vYear))

-- Get the day of the week for January 1
   SET VAR vDwk INTEGER = (IDWK(.vJan01))

-- Compute the number of days between January 1 and our date
   SET VAR vDiff INTEGER = (.p1 - .vJan01)

-- Adjust this difference to compensate for the day of the 
-- week for January 1
   SET VAR vDiff = (.vDiff - .vDwk + 1)

-- Now compute the week for our date
   SET VAR vIWK INTEGER = ((.vdiff/7) + 1)
   CLEAR VAR vYear, vJan01, vDwk, vDiff
   RETURN .vIWK

At the R> prompt enter the following command to store this 
procedure in the database:

PUT IWK.PRO AS IWK p1 DATE RETURN INTEGER

To use this procedure you can do things like this: 

Example 01:

SET VAR vWeek = (CALL IWK(.#DATE))
vWeek will return the value of 47 (based on 11/21/2001)
STP_RETURN will also return the value of 47.

Example 02:

SET VAR vMyDate DATE = 04/19/2002
SET VAR vWeek = (CALL IWK(.vMyDate))
vWeek will return the value of 16
STP_RETURN will also return the value of 16

Additional Notes:

The STP_RETURN is a system variable that contain the value 
returned by a Stored Procedure. This return value is set by 
using the RETURN command. The STP_RETURN variable will be 
whatever type is needed by the RETURN statement within the 
Stored Procedure. 

Enjoy the Power and Flexibility of R:BASE 2000 (ver 6.5)!

---

Download PDF version of this article at: 

http://www.rbase.com/FromTheEdge/AddYourOwnFunctions.pdf

Send your constructive comments to:  mailto:[EMAIL PROTECTED] 

Very Best Regards,

Razzak.

===================================-============================
Official R:BASE List Server:    mailto:[EMAIL PROTECTED]
RBTI Events/Training:        http://www.rbase2000.com/events
R:DCC Members:               http://www.rbase2000.com/rdcc
================================================================
R:BASE, Oterro & R:Tango are registered trademarks of RBTI.
==================================-=============================

Reply via email to