Working with User-Written Functions

In addition to the functions built into Enrichment, you can write or use existing subroutines within rule files as functions. These functions can be written in COBOL, Assembler, or C. You identify the user-written subroutine for use within the rule file by adding the USERFUNCTION declaration in that file. Once you define a function, you can use it in the same manner as any other Enrichment function.

The following diagram illustrates how the interface for the user-written function works.

The rules shown below define a user-written function called ims_database—COBOL load module FNIMS2—that uses an account number to look up a client’s age in an IMS database. Either field %%Account or %%Account2 can contain the customer account. FNIMS2 is a normal user-written function subroutine with an input string of up to 25 bytes that returns an output string (%%Age) of up to 3 bytes. The Input call area (maxin) is 65 bytes (25+40) and the Output call area (maxout) is 43 bytes (3+40).

USERFUNCTION ims_database FNIMS2 COBOL N 65 43
IF %%Account <> ' ' THEN
   %%Age = ims_database(%%Account)
ELSE
   %%Age = ims_database(%%Account2)
ENDIF

The USERFUNCTION keyword identifies the function within the rule file. Once identified, Enrichment can access the function using the same syntax as with built-in functions, with one exception: you can pass only one variable to and from the user-written function.

To pass or receive more than one variable, concatenate multiple arguments into one and use the built-in RGET or SUBSTR functions to split data into multiple variables for the function's return value.