Next: Routine Information Sources, Previous: Sources of Routine Info, Up: Sources of Routine Info

### A.1 Routine Definitions

Routines which can be used in an IDL program can be defined in several places:

1. Builtin routines are defined inside IDL itself. The source code of such routines is not available, but instead are learned about through the IDL documentation.
2. Routines which are part of the current program, are defined in a file explicitly compiled by the user. This file may or may not be located on the IDL search path.
3. Library routines are defined in files located on IDL's search path. When a library routine is called for the first time, IDL will find the source file and compile it dynamically. A special sub-category of library routines are the system routines distributed with IDL, and usually available in the `lib` subdirectory of the IDL distribution.
4. External routines written in other languages (like Fortran or C) can be called with `CALL_EXTERNAL`, linked into IDL via `LINKIMAGE`, or included as dynamically loaded modules (DLMs). Currently IDLWAVE cannot provide routine info and completion for such external routines, except by querying the Shell for calling information (DLMs only).