Additional Topics > External Development Guide > Callable IDL > Calling IDL as a Subroutine

# Calling IDL as a Subroutine

You can call IDL as a subroutine from other programs. This capability is referred to as Callable IDL to distinguish it from the more common case of calling your code from IDL (as with CALL_EXTERNAL or as a system routine (LINKIMAGE, Dynamically Loadable Modules)).

## How Callable IDL is Implemented

IDL is built in a sharable form that allows other programs to call it as a subroutine. The specific details of how IDL is packaged depend on the platform:

- IDL for UNIX has a small driver program linked to a sharable object library that contains the actual IDL program.
- IDL for Windows consists of a driver program that implements the user interface (known as the IDE) linked to a dynamic-link library (DLL) that contains the actual IDL program.

In all cases, it is possible to link the sharable portion of IDL into your own programs. Note that Callable IDL is not a separate copy of IDL that implements a library version of the language. It is in fact the same code, being used in a different context.