The COMPILE_CODE procedure creates and compiles an IDL function or procedure from a scalar string or string array.
Note: Since the code is compiled at run-time, this can be slower than having the code saved in a file. However, COMPILE_CODE can be useful to avoid having to create a new file for a small algorithm, or in cases where you want to dynamically generate a function or procedure from user inputs or variables.
Example
Create an IDL function from a user-supplied math equation:
equation = "sin(x^x)/2^((x^x - !pi/2)/!pi)"
COMPILE_CODE, "function xyzzy,x & return," + equation + " & end"
print, xyzzy([0.5, 1.5, 1.854, 2, 2.257, 2.4])
IDL prints:
0.786014 0.909691 0.000380822 -0.442807 -0.00132630 0.220963
Syntax
COMPILE_CODE, Code
Arguments
Code
A scalar string or string array containing the IDL code for the function or procedure. If Code is a scalar string, then the code should consist of a series of IDL statements separated by ampersand "&" characters. If Code is a string array, then each element should contain a single line of code.
Tip: When passing in a scalar string (consisting of IDL statements separated by "&"), you should avoid using IDL comments, which will cause syntax errors.
Tip: For string arrays, blank lines and IDL comments will be automatically ignored.
Keywords
None.
Examples
Create an IDL function using a string array containing the lines of code:
COMPILE_CODE, [ $
"function xyzzy,x", $
" ; lines with comments will be ignored", $
"return, x + 2", $
"end"]
xyzzy(10)
IDL prints:
12
Now create two IDL procedures on the fly:
COMPILE_CODE, "pro myprint1,x & print,'Hello, '+x & end"
COMPILE_CODE, [ $
"pro myprint2,x", $
" ", $
"print,'Hello, ' + x", $
"end"]
myprint1, "world"
myprint2, "IDL users"
IDL prints:
Hello, world
Hello, IDL users
Version History
See Also
CALL_FUNCTION, CALL_PROCEDURE, CALL_METHOD, EXECUTE