All IDL system routines must supply the same calling interface to the system, differing only in that system functions must return an IDL_VPTR to the IDL_VARIABLE that contains the result, while system procedures do not return anything. Typical system routine definitions are:

IDL_VPTR my_function(int argc, IDL_VPTR argv[], char *argk)
void my_procedure(int argc, IDL_VPTR argv[], char *argk)

System routines that do not accept keywords are called with two arguments:


The number of elements in argv.


An array of IDL_VPTRs. These point to the IDL_VARIABLEs which comprise the arguments to the function.

System routines that accept keywords are called with an additional third argument:


The keywords which were present when the routine was called. argk is an opaque object—the called routine is not intended to understand its contents. argk is provided to the function IDL_KWProcessByOffset(), which processes the keywords in a standard way. For more information on keywords, see IDL Internals: Keyword Processing.