User-defined functions may be invoked in most places that intrinsic functions may be invoked.
If you are invoking a user-defined functions without using the FUNCTION keyword, its name must be specified in the REPOSITORY paragraph.
The following example shows a compilation group containing a user-defined function definition called usedef and a program containing the function invocation:
Identification division.
Function-id. usedef.
Data division.
Linkage section.
01 Bal pic 999v999.
01 Spend pic 999v999.
01 res pic 999v999.
Procedure division
using Bal Spend
returning res.
compute res = Bal - Spend
goback.
End function usedef.
Identification division.
Program-id. 'caller'.
Environment division.
Configuration section.
Data division.
Working-storage section.
01 result pic 999v999 usage display.
01 dis-res pic 999v999.
Procedure division.
compute result = function usedef(10 9.99).
move result to dis-res.
display "Current balance = " dis-res.
goback.
End program 'caller'.
After compilation, and running the 'caller' program, the output is as follows:
Current balance = 000.010