GDL – GNU Data Language a free/libre/open-source implementation of IDL/PV-WAVE*

developed by Marc Schellens and The GDL team documentation maintained by Sylwester Arabas and Alain Coulais

August 24, 2011

* IDL (Interactive Data Language) and PV-WAVE (Precision Visuals - Workstation Analysis and Visualization Environment) are/wereDRAFT registered trademarks of Research Systems, Inc./ITT Visual Information Solutions and Precision Visuals/Visual Numerics/Rogue Wave Software, respectively Chapter 3. Interpreter commands and built-in Misc...... 23 debugging facilities ...... 17 Chapter 7. Interaction with host OS ...... 24 Chapter 4. Maths ...... 18 Executing external commands (via shell or not).. 24 Basic Scalar, vector and array operations..... 18 Filesystem operations...... 24 Basic and special function library...... 18 Network operations...... 24 Linear algebra...... 18 Command-line options and environmental variables 24 Statistics...... 18 Chapter 8. Manipulating strings ...... 25 Contents Interpolation...... 18 Polynomials...... 18 Chapter 9. Representing date & time ...... 26 About GDL...... 7 Geometric calculations...... 19 Chapter 10. Image processing ...... 27 License...... 7 Bitwise operations...... 19 Chapter 11. Parallel processing ...... 28 Credits...... 7 Function fitting...... 19 Built-in features (OpenMP)...... 28 Providing fedback...... 7 Fourier analysis...... 19 Semaphores and shared memory (library routines). 28 Organization of this document...... 8 Multidimensional root-finding...... 19 ImageMagick’s features...... 28 Random numbers...... 19 MPI and GDL...... 28 I. User’s guide Ordinary differential equations...... 19 Chapter 12. GUI programming (widgets) ..... 29 Chapter 1. Obtaining, installing, and invoking GDL 11 Wavelet analysis...... 19 Mathematical and physical constants...... 19 Chapter 13. Dynamic loading ...... 30 Requirements and supported environments.... 11 Availability of pre-compiled packages...... 11 Chapter 5. Input/output, supported data formats 20 Chapter 14. The Python bridge ...... 31 Compiling GDL from source...... 11 Basics – accessing files and io streams...... 20 calling Python code from GDL...... 31 Installation layout...... 11 ASCII...... 20 calling GDL code from Python...... 31 Command-line options...... 11 CSV...... 20 Chapter 15. Alphabetical list of library routines . 32 Influential environmental variables...... 11 Binary data (raw access)...... 20 ABS() function...... 32 FITS...... 20 Chapter 2. Language reference ...... 12 ACOS() function...... 32 netCDF...... 20 Syntax basics...... 12 ALOG() function...... 32 HDF4...... 20 Datatypes...... 12 ALOG10() function...... 32 HDF5...... 20 Operators...... 12 APPLEMAN procedure...... 32 raster images (TIFF, PNG, JPEG, . . . )...... 21 Flow control structures...... 12 ARG_PRESENT() function...... 32 DICOM...... 21 Variable scoping rules...... 14 ARRAY_EQUAL() function...... 32 GRIB...... 21 Functions and procedures...... 14 ARRAY_INDICES() function...... 32 IDL save files...... 21 Argument passing...... 14 ASIN() function...... 33 Arrays...... 15 Chapter 6. Plotting and mapping ...... 22 ASSOC() function...... 33 Structures...... 15 2D plots...... 22 ATAN() function...... 33 System variables (global)...... 15 3D plots...... 22 AXIS procedure...... 33 Heap variables (pointers)...... 15 Plotting raster data...... 22 BESELI() function...... 33 The HELP procedure...... 15 Managing multiple windows...... 22 BESELJ() function...... 33 Object-oriented programming...... 15 Map projections...... 22 BESELK() function...... 33 Handling Overflows, Floating Point Special Values 15 Output terminals...... 22 BESELY() function...... 33 Error handling...... 15 Working with colours...... 22 BETA() function...... 33 CompileDRAFT options...... 15 Fonts, symbols and text formatting...... 23 BINDGEN() function...... 33 Contents 3

BROYDEN() function...... 33 DIALOG_PICKFILE() function...... 40 GAMMA() function...... 44 BYTARR() function...... 33 DINDGEN() function...... 40 GAUSSINT() function...... 44 BYTE() function...... 34 DIST() function...... 40 GAUSS_CVF() function...... 44 BYTEORDER procedure...... 34 DOUBLE() function...... 40 GAUSS_PDF() function...... 44 BYTSCL() function...... 34 EOF() function...... 40 GDL_ERFINV() function...... 45 CALDAT procedure...... 34 ERASE procedure...... 40 GETENV() function...... 45 CALENDAR procedure...... 34 ERF() function...... 40 GET_DRIVE_LIST() function...... 45 CALL_EXTERNAL() function...... 34 ERFC() function...... 41 GET_KBRD() function...... 45 CALL_FUNCTION() function...... 36 ERRORF() function...... 41 GET_LOGIN_INFO() function...... 45 CALL_METHOD procedure...... 36 ESCAPE_SPECIAL_CHAR() function...... 41 GET_LUN procedure...... 45 CALL_METHOD() function...... 36 EXECUTE() function...... 41 GET_SCREEN_SIZE() function...... 45 CALL_PROCEDURE procedure...... 36 EXIT procedure...... 41 GRIBAPI_CLONE() function...... 45 CATCH procedure...... 36 EXP() function...... 41 GRIBAPI_CLOSE_FILE procedure...... 45 CD procedure...... 36 EXPAND_PATH() function...... 41 GRIBAPI_COUNT_IN_FILE() function...... 45 CDF_EPOCH procedure...... 36 EXPINT() function...... 41 GRIBAPI_GET procedure...... 45 CEIL() function...... 37 FACTORIAL() function...... 41 GRIBAPI_GET_DATA procedure...... 45 CHECK_MATH() function...... 37 FFT() function...... 42 GRIBAPI_GET_SIZE() function...... 46 CINDGEN() function...... 37 FILEPATH() function...... 42 GRIBAPI_NEW_FROM_FILE() function..... 46 CLOSE procedure...... 37 FILE_BASENAME() function...... 42 GRIBAPI_OPEN_FILE() function...... 46 COMMAND_LINE_ARGS() function...... 37 FILE_COPY procedure...... 42 GRIBAPI_RELEASE procedure...... 46 COMPLEX() function...... 37 FILE_DELETE procedure...... 42 GSL_EXP() function...... 46 COMPLEXARR() function...... 37 FILE_DIRNAME() function...... 43 H5A_CLOSE procedure...... 46 CONJ() function...... 37 FILE_EXPAND_PATH() function...... 43 H5A_GET_NAME() function...... 46 CONTOUR procedure...... 37 FILE_INFO() function...... 43 H5A_GET_NUM_ATTRS() function...... 46 CONVERT_COORD() function...... 37 FILE_LINES() function...... 43 H5A_GET_SPACE() function...... 46 CONVOL() function...... 38 FILE_MKDIR procedure...... 43 H5A_GET_TYPE() function...... 46 CORRELATE() function...... 38 FILE_SAME() function...... 43 H5A_OPEN_IDX() function...... 46 COS() function...... 38 FILE_SEARCH() function...... 43 H5A_OPEN_NAME() function...... 46 COSH() function...... 38 FILE_TEST() function...... 43 H5A_READ() function...... 46 CPU procedure...... 39 FILE_WHICH() function...... 43 H5D_CLOSE procedure...... 46 CREATE_STRUCT() function...... 39 FINDEX() function...... 43 H5D_GET_SPACE() function...... 47 CROSSP() function...... 39 FINDFILE() function...... 43 H5D_GET_TYPE() function...... 47 CURSOR procedure...... 39 FINDGEN() function...... 44 H5D_OPEN() function...... 47 DBLARR() function...... 39 FINITE() function...... 44 H5D_READ() function...... 47 DCINDGEN() function...... 39 FIX() function...... 44 H5F_CLOSE procedure...... 47 DCOMPLEX() function...... 39 FLOAT() function...... 44 H5F_IS_HDF5() function...... 47 DCOMPLEXARR() function...... 39 FLOOR() function...... 44 H5F_OPEN() function...... 47 DEFSYSV procedure...... 39 FLTARR() function...... 44 H5G_CLOSE procedure...... 47 DERIV() function...... 39 FLUSH procedure...... 44 H5G_OPEN() function...... 47 DEVICE procedure...... 39 FREE_LUN procedure...... 44 H5S_CLOSE procedure...... 47 DIALOG_MESSAGE()DRAFT function...... 39 FSTAT() function...... 44 H5S_GET_SIMPLE_EXTENT_DIMS() function. 47 4 Contents

H5T_CLOSE procedure...... 47 IMSL_CONSTANT() function...... 52 MAGICK_EXISTS() function...... 58 H5T_GET_SIZE() function...... 47 IMSL_ERF() function...... 53 MAGICK_FLIP procedure...... 58 H5_GET_LIBVERSION() function...... 48 IMSL_ZEROPOLY() function...... 53 MAGICK_INDEXEDCOLOR() function...... 58 HDF_CLOSE procedure...... 48 IMSL_ZEROSYS() function...... 54 MAGICK_INTERLACE procedure...... 58 HDF_OPEN() function...... 48 INDGEN() function...... 54 MAGICK_MAGICK() function...... 58 HDF_SD_ADDDATA procedure...... 48 INTARR() function...... 54 MAGICK_MATTE procedure...... 58 HDF_SD_ATTRFIND() function...... 48 INTERPOL() function...... 54 MAGICK_OPEN() function...... 58 HDF_SD_ATTRINFO procedure...... 48 INTERPOLATE() function...... 54 MAGICK_PING() function...... 58 HDF_SD_CREATE() function...... 48 INVERT() function...... 54 MAGICK_QUALITY procedure...... 58 HDF_SD_DIMGET procedure...... 48 ISHFT() function...... 54 MAGICK_QUANTIZE procedure...... 58 HDF_SD_DIMGETID() function...... 48 JOURNAL procedure...... 54 MAGICK_READ() function...... 59 HDF_SD_END procedure...... 48 KEYWORD_SET() function...... 54 MAGICK_READCOLORMAPRGB procedure... 59 HDF_SD_ENDACCESS procedure...... 48 KURTOSIS() function...... 54 MAGICK_READINDEXES() function...... 59 HDF_SD_FILEINFO procedure...... 48 L64INDGEN() function...... 54 MAGICK_ROWS() function...... 59 HDF_SD_GETDATA procedure...... 49 LAGUERRE() function...... 54 MAGICK_WRITE procedure...... 59 HDF_SD_GETINFO procedure...... 49 LAST_ITEM() function...... 54 MAGICK_WRITECOLORTABLE procedure.... 59 HDF_SD_NAMETOINDEX() function...... 49 LA_TRIRED procedure...... 54 MAGICK_WRITEFILE procedure...... 59 HDF_SD_SELECT() function...... 49 LEGENDRE() function...... 55 MAGICK_WRITEINDEXES procedure...... 59 HDF_SD_START() function...... 49 LINDGEN() function...... 55 MAKE_ARRAY() function...... 59 HDF_VD_ATTACH() function...... 49 LINKIMAGE procedure...... 55 MAP_CLIP_SET procedure...... 59 HDF_VD_DETACH procedure...... 49 LL_ARC_DISTANCE() function...... 55 MAP_CONTINENTS procedure...... 59 HDF_VD_FIND() function...... 49 LMGR() function...... 55 MAP_PROJ_FORWARD() function...... 59 HDF_VD_GET procedure...... 49 LNGAMMA() function...... 55 MAP_PROJ_INVERSE() function...... 59 HDF_VD_READ() function...... 49 LOADCT procedure...... 55 MATRIX_MULTIPLY() function...... 60 HDF_VG_ATTACH() function...... 49 LOADCT_INTERNALGDL procedure...... 56 MAX() function...... 60 HDF_VG_DETACH procedure...... 49 LOCALE_GET() function...... 56 MEAN() function...... 60 HDF_VG_GETID() function...... 49 LOGICAL_AND() function...... 57 MEANABSDEV() function...... 60 HDF_VG_GETINFO procedure...... 49 LOGICAL_OR() function...... 57 MEDIAN() function...... 60 HDF_VG_GETTRS procedure...... 50 LOGICAL_TRUE() function...... 57 MEMORY() function...... 60 HEAP_GC procedure...... 50 LON64ARR() function...... 57 MESSAGE procedure...... 60 HELP procedure...... 50 LONARR() function...... 57 MIN() function...... 60 HELPFORM() function...... 50 LONG() function...... 57 MOMENT() function...... 60 HISTOGRAM() function...... 50 LONG64() function...... 57 NCDF_ATTCOPY() function...... 60 HIST_2D() function...... 50 LUDC procedure...... 57 NCDF_ATTDEL procedure...... 60 HIST_ND() function...... 50 MACHAR() function...... 57 NCDF_ATTGET procedure...... 60 IDENTITY() function...... 51 MAGICK_ADDNOISE procedure...... 57 NCDF_ATTINQ() function...... 60 IDL_BASE64() function...... 51 MAGICK_CLOSE procedure...... 57 NCDF_ATTNAME() function...... 60 IDL_VALIDNAME() function...... 51 MAGICK_COLORMAPSIZE() function...... 57 NCDF_ATTPUT procedure...... 61 IGAMMA() function...... 51 MAGICK_COLUMNS() function...... 58 NCDF_ATTRENAME procedure...... 61 IMAGINARY() function...... 51 MAGICK_CREATE() function...... 58 NCDF_CLOSE procedure...... 61 IMSL_BINOMIALCOEF()DRAFT function...... 51 MAGICK_DISPLAY procedure...... 58 NCDF_CONTROL procedure...... 61 Contents 5

NCDF_CREATE() function...... 61 POLY_AREA() function...... 66 READ_XWD() function...... 69 NCDF_DIMDEF() function...... 61 POPD procedure...... 66 REAL_PART() function...... 69 NCDF_DIMID() function...... 61 PREWITT() function...... 66 REBIN() function...... 70 NCDF_DIMINQ procedure...... 61 PRIMES() function...... 66 RECALL_COMMANDS() function...... 70 NCDF_DIMRENAME procedure...... 61 PRINT procedure...... 66 REFORM() function...... 70 NCDF_EXISTS() function...... 61 PRINTD procedure...... 66 REPLICATE() function...... 70 NCDF_INQUIRE() function...... 61 PRINTF procedure...... 66 REPLICATE_INPLACE procedure...... 70 NCDF_OPEN() function...... 61 PRODUCT() function...... 66 RESOLVE_ROUTINE procedure...... 70 NCDF_VARDEF() function...... 61 PTRARR() function...... 66 RESTORE procedure...... 70 NCDF_VARGET procedure...... 62 PTR_FREE procedure...... 67 RETALL procedure...... 70 NCDF_VARGET1 procedure...... 62 PTR_NEW() function...... 67 REVERSE() function...... 70 NCDF_VARID() function...... 62 PTR_VALID() function...... 67 RK4() function...... 70 NCDF_VARINQ() function...... 62 PUSHD procedure...... 67 RK4JMG() function...... 70 NCDF_VARPUT procedure...... 62 PYTHON procedure...... 67 ROBERTS() function...... 70 NCDF_VARRENAME procedure...... 62 PYTHON() function...... 67 ROTATE() function...... 70 NEWTON() function...... 62 PY_PLOT procedure...... 67 ROUND() function...... 71 NORM() function...... 62 PY_PRINT procedure...... 67 ROUTINE_INFO() function...... 71 N_ELEMENTS() function...... 62 QUERY_BMP() function...... 67 ROUTINE_NAMES() function...... 71 N_PARAMS() function...... 62 QUERY_DICOM() function...... 68 RSTRPOS() function...... 73 N_TAGS() function...... 62 QUERY_GIF() function...... 68 SAVE procedure...... 73 OBJARR() function...... 62 QUERY_IMAGE() function...... 68 SCOPE_VARFETCH() function...... 73 OBJ_CLASS() function...... 63 QUERY_JPEG() function...... 68 SEM_CREATE() function...... 73 OBJ_DESTROY procedure...... 63 QUERY_PICT() function...... 68 SEM_DELETE procedure...... 73 OBJ_ISA() function...... 63 QUERY_PNG() function...... 68 SEM_LOCK() function...... 73 OBJ_NEW() function...... 63 QUERY_PPM() function...... 68 SEM_RELEASE procedure...... 73 OBJ_VALID() function...... 64 QUERY_TIFF() function...... 68 SETENV procedure...... 73 ON_ERROR procedure...... 64 RADON() function...... 68 SET_PLOT procedure...... 73 OPENR procedure...... 64 RANDOMN() function...... 68 SHIFT() function...... 73 OPENU procedure...... 64 RANDOMU() function...... 68 SHOWFONT procedure...... 73 OPENW procedure...... 64 READ procedure...... 68 SIN() function...... 81 OPLOT procedure...... 64 READF procedure...... 69 SINDGEN() function...... 81 PARSE_URL() function...... 65 READS procedure...... 69 SINH() function...... 81 PATH_SEP() function...... 65 READU procedure...... 69 SIZE() function...... 82 PLOT procedure...... 65 READ_ASCII() function...... 69 SKEWNESS() function...... 82 PLOTERR procedure...... 65 READ_BINARY() function...... 69 SKIP_LUN procedure...... 82 PLOTS procedure...... 65 READ_BMP() function...... 69 SMOOTH() function...... 82 PM procedure...... 65 READ_DICOM() function...... 69 SOBEL() function...... 82 POINT_LUN procedure...... 66 READ_JPEG procedure...... 69 SOCKET procedure...... 82 POLY() function...... 66 READ_PICT procedure...... 69 SORT() function...... 82 POLYFILL procedure...... 66 READ_PNG() function...... 69 SPAWN procedure...... 82 POLY_2D()DRAFT function...... 66 READ_TIFF() function...... 69 SPHER_HARM() function...... 82 6 Contents

SPL_INIT() function...... 82 TEMPLATE_BLANK procedure...... 87 WIDGET_INFO() function...... 89 SPL_INIT_OLD() function...... 82 TEMPORARY() function...... 87 WIDGET_LABEL() function...... 89 SPL_INTERP() function...... 82 TETRIS procedure...... 87 WIDGET_TEXT() function...... 90 SPL_INTERP_OLD() function...... 82 TOTAL() function...... 87 WINDOW procedure...... 90 SQRT() function...... 83 TRACE() function...... 87 WRITEU procedure...... 90 STDDEV() function...... 83 TRANSPOSE() function...... 87 WRITE_BMP procedure...... 90 STOP procedure...... 83 TRIGRID() function...... 87 WRITE_JPEG procedure...... 90 STRARR() function...... 83 TV procedure...... 87 WRITE_PICT procedure...... 90 STRCMP() function...... 83 TVLCT procedure...... 87 WRITE_PNG procedure...... 90 STRCOMPRESS() function...... 83 TVRD() function...... 87 WSET procedure...... 90 STREGEX() function...... 83 TVSCL procedure...... 87 WSHOW procedure...... 90 STRING() function...... 83 T_PDF() function...... 87 WTN() function...... 90 STRJOIN() function...... 83 UINDGEN() function...... 87 XYOUTS procedure...... 90 STRLEN() function...... 84 UINT() function...... 88 STRLOWCASE() function...... 84 UINTARR() function...... 88 II. Developer’s guide STRMID() function...... 84 UL64INDGEN() function...... 88 Chapter 16. General remarks and coding guidelines 92 STRPOS() function...... 84 ULINDGEN() function...... 88 STRPUT procedure...... 84 ULON64ARR() function...... 88 Chapter 17. The library-routine API ...... 93 STRSPLIT() function...... 84 ULONARR() function...... 88 Chapter 18. Extending the documentation .... 94 STRTOK() function...... 84 ULONG() function...... 88 Chapter 19. Extending the testsuite STRTRIM() function...... 85 ULONG64() function...... 88 (testsuite/README) ...... 95 STRUCT_ASSIGN procedure...... 85 UNIQ() function...... 88 STRUPCASE() function...... 85 VALUE_LOCATE() function...... 88 Chapter 20. A short overview of how GDL works STR_SEP() function...... 85 VARIANCE() function...... 88 internally ...... 96 SURFACE procedure...... 85 VOIGT() function...... 88 Chapter 21. How to make use of OpenMP in GDL 97 SVDC procedure...... 86 WAIT procedure...... 88 Chapter 22. Notes for packagers ...... 98 SWAP_ENDIAN() function...... 86 WDELETE procedure...... 88 SWAP_ENDIAN_INPLACE procedure...... 86 WHERE() function...... 89 Optional features of PLplot and ImageMagick... 98 SYSTIME() function...... 86 WIDGET_BASE() function...... 89 The HDF4-netCDF conflict...... 98 TAG_NAMES() function...... 86 WIDGET_BUTTON() function...... 89 III. Indices TAN() function...... 86 WIDGET_CONTROL procedure...... 89 TANH() function...... 86 WIDGET_DROPLIST() function...... 89 Subject Index ...... 101 TEMPLATEDRAFT procedure...... 86 WIDGET_EVENT() function...... 89 Bibliography ...... 126 Credits 7

About GDL Credits

GDL have been developed by a team of volunteers led by Marc Schellens – the GNU Data Language (GDL) is a free/libre/open source incremental compiler compat- project’s founder and maintainer. As of 2011 the core team consists additionally of ible with IDL and to some extent with PV-WAVE. Together with its library routines Sylwester Arabas, Alain Coulais and Jeol Gales. it serves as a tool for data analysis and visualization in such disciplines as astronomy, geosciences and medical imaging. Among many good folks who provided patches and valuable feedback (in alphabetical order) there are: Médéric Bocquien, Justin Bronn, Pierre Chanial, Christoph Fuchs, GDL as a language is dynamically-typed, vectorized and has object-oriented program- Nicolas Galmiche, Greg Huey, Gaurav Khanna, Christopher Lee, Maxime Lenoir, Pe- ming capabilities. GDL library routines handle numerical calculations, data visual- ter Messmer, Gregory Marchal, Thibaut Mermet, Lea Noreskal, Orion Poplawski, isation, signal/image processing, interaction with host OS and data input/output. Rene Preusker, Mateusz Turcza, Joanna Woo, H Xu, . . . GDL supports several data formats such as netCDF, HDF4, HDF5, GRIB, PNG, TIFF, DICOM, etc. Graphical output is handled by X11, PostScript, SVG or z-buffer GDL contains snippets of code borrowed from other free and open-source projects terminals, the last one allowing output graphics (plots) to be saved in a variety of credited to: Deepak Bandyopadhyay, Sergio Gelato, Lutz Kettner, Craig B. Mark- raster graphics formats. GDL features integrated debugging facilities. GDL has also wardt, Paul Ricchiazzi, Danny Smith, J.D. Smith, Richard Schwartz, Paul Wessel, a Python bridge (Python code can be called from GDL; GDL can be compiled as a Bob Withers, . . . Python module). Pre-compiled or pre-configured packages of GDL are available for numerous sys- Packaged versions of GDL are available for several and BSD flavours as well tems thanks to: Juan A. Añel, Axel Beckert, Markus Dittrich, Takeshi Enomoto, as Mac OS X. The source code compiles as well on other UNIX systems, including Sébastien Fabbro, Orlando Garcia Feal, Gaurav Khanna, Justin Lecher, Sebastien Maret, Solaris. GDL source code is available for download from Sourceforge.net at: http: Lea Noreskal, Orion Poplawski, Marius Schamschula, Gürkan Sengün, Thierry Thomas, //sourceforge.net/projects/gnudatalanguage/. ... Other open-source numerical data analysis tools similar to GDL include: GDL is written in ++ using the Terence Parr’s ANTLR language-recognition frame- work. Most of the library routines are implemented as interfaces to open-source — GNU Octave: http://www.gnu.org/software/octave/ packages such as GNU Scientific Library, PLPlot, FFTW, ImageMagick, and many — NCL – NCAR Command Language: http://www.ncl.ucar.edu/ many more. — PDL – Data Language: http://pdl.perl.org/ —R: http://www.r-project.org/ Last but not least, we would like to acknowledge the designers of IDL and PV-WAVE. — : http://www.scilab.org/ Please do report any missing name on the lists above in the same way as any other — SciPy: http://www.scipy.org/ bug in GDL (see section below). — Yorick: http://yorick.sourceforge.net/

Providing fedback License Your comments are welcome! Let us know what you use GDL for. Or if you don’t, why not. Which functionality are you missing/would appreciate most for comming versions. GDL is a free, libre and open-source software released under the GNU General Public Please send your bug reports, complaints, suggestions, comments and patches using License version 2 Fundation [1]. It basicaly means that any GDL user has the freedom the trackers or forums available at GDL’s project website at SourceForge: http: to run,DRAFT copy, distribute, study, change and improve GDL. //sourceforge.net/projects/gnudatalanguage/. 8 Contents

Organization of this document

This document is divided into two parts: — User’s guide: intended for users developing programs written in GDL, — Developer’s guide: intended for those interested in developing or packaging GDL. Most of GDL functionalities are exemplified with short GDL scripts. For each such script there are two listings provided: a source code listing with line numbers to the left and a log of output below, e.g.:

1 print , ’Hello world!’

Hello world!

All scripts are run by invoking gdl script.pro what is equivalent to loading the script with the @ operator or typing every line of script at the GDL’s interactive mode command prompt. While GDL itself reached a beta status of development, the hereby documentation is Often the scripts contain lines beginning with a dollar sign ”$” which is the GDL far from reaching an alpha status – help is very welcome! syntax for executing shell commands, e.g.

1 $ echo "Hello world!"

Hello world!

If a script involves creation of a plot, the resultant postscript file is displayed below the output listing, e.g.:

1 plot, wtn([fltarr(9), 1, fltarr(1014)], 4, /inverse) 2 xyouts,DRAFT 480, .02, ’Hello world!’, charsize=2 Part I

User’s guide DRAFT DRAFT Chapter 1

Obtaining, installing, and invoking GDL

Requirements and supported environments

Availability of pre-compiled packages

Compiling GDL from source

Compiler requirements

GNU g++ clang Intel C++

Autotools

Cmake

Installation layout

Command-line options InfluentialDRAFT environmental variables Chapter 2

Language reference

Syntax basics 1 a = 10 IDL_VALIDNAME() TEMPORARY() 2 i f agt5 then print, ’a> 5’ else print, ’a<= 5’

Datatypes a > 5 ASSOC() BYTE() COMPLEX(), DCOMPLEX()( CONJ(), ATAN(), IMAGINARY(), REAL_PART()) DOUBLE() FIX() FLOAT() LONG() LONG64() UINT() ULONG() ULONG64() contrary to... cannot be used in interactive mode nor in batch scripts, but only within ... SIZE()

1 $ cat replace_with_nans.pro Operators 2 x = [1.1, 2.1, −3.3 , 4 . 1 , −999, 6 ] 3 replace_with_nans , x, −999

LOGICAL_AND() LOGICAL_OR() LOGICAL_TRUE() 4 p r i n t , x SQRT()

Flow control structures pro replace_with_nans , x, val whr = where(x eq val, cnt) i f cnt gt 0 then begin Conditional execution x [ whr ] = !VALUES .F_NAN message, ’nan count: ’ + strtrim(cnt, 2), /conti IF e n d i f end

1 a = 10 % Compiled module : REPLACE_WITH_NANS.

2 i f agt5 then print, ’a is greater than 5’ % REPLACE_WITH_NANS: nan count : 1 1.10000 2.10000 −3.30000 4.10000 nan 6.00000 a isDRAFT greater than 5 Flow control structures 13

data type size constants min max casting array allocation index array alloc. freeing 8b 1b 0 255 BYTE() BYTARR() BINDGEN() 16b 1u 0 65535 UINT() UINTARR() UINDGEN() natural numbers incl. zero (unsigned) TEMPORARY() 32b 1ul 0 4·109 ULONG() ULONARR() ULINDGEN() 64b 1ull 0 1,8·1019 ULONG64() ULON64ARR() UL64INDGEN() 16b 1 -32768 32767 FIX() INTARR() INDGEN() integer numbers (signed) 32b 1l -2·109 2·109 LONG() LONARR() LINDGEN() TEMPORARY() 64b 1ll -9·1018 9·1018 LONG64() LONG64ARR() L64INDGEN() 32b 1. -1038 1038 FLOAT() FLTARR() FINDGEN() real numbers TEMPORARY() 64b 1d -10308 10308 DOUBLE() DBLARR() DINDGEN() 64b complex(1,0) 2x float 2x float COMPLEX() COMPLEXARR() CINDGEN() complex numbers TEMPORARY() 128b dcomplex(1,0) 2x double 2x double DCOMPLEX() DCOMPLEXARR() DCINDGEN() character (byte) strings variable ’one’ – – STRING() STRARR()– TEMPORARY() structures variable {a:1, b:1} – – – REPLICATE()– TEMPORARY() pointers n/a ptr_new(1) – – – PTRARR()– PTR_FREE() objects n/a obj_new(’One’) – – – OBJARR()– OBJ_DESTROY()

CASE As with index variables in FOR loops, the lifetime of the ”loop variables” in FOREACH statements extends beyond the loop execution (see example below). Both BREAK SWITCH and CONTINUE statements work in FOREACH in the same way as in other loop constructs:

Loops 1 $ cat example.pro 2 example FOR pro example letters = [’a’, ’b’, ’c’, ’d’, ’e’] FOREACH f o r e a c h l, letters do begin if l eq ’c’ then continue FOREACH statement allows to simplify loop constructs when the array index is not if l eq ’d’ then break used within the loop: print, ’trying to replace ’+ l + ’ with ’’x’’’

1 tocompare = [’apples ’, ’orrages ’] l = ’ x ’

2 foreach a, tocompare do help, a e n d f o r e a c h print , letters p r i n t , l A STRING =’apples’ end ADRAFT STRING =’orrages’ % Warning: Assignment to loop variable detected. 14 Chapter 2. Language reference

% Compiled module: EXAMPLE. Other trying to replace a with ’x’ trying to replace b with ’x’ EXECUTE() a b c d e d Variable scoping rules

Loop variables in FOREACH statements contain copies of the array elements thus assigning them a value within the loop does not change contents of the array and as a potentially bug-prone situation causes a compiler warning (see example above).

REPEAT Functions and procedures

WHILE There may exist a function and a procedure of the same name (e.g. PYTHON() and PYTHON, CALL_METHOD() and CALL_METHOD) EXPAND_PATH(), FILEPATH() Jumps CALL_FUNCTION() CALL_PROCEDURE() GOTO Argument passing Highly deprecated as it usually make the code difficult to read and prone to errors. Anyhow, the syntax is as follows N_PARAMS() KEYWORD_SET() ARG_PRESENT() N_ELEMENTS() SIZE()

1 $ cat example.pro _EXTRA _STRICT_EXTRA _REF_EXTRA 2 example when by reference, when by value... Keyword name abbreviations are allowed if unambiguous, e.g.: pro example x = 0 1 help, strpos(’kayak’, ’a’, /reverse_search) goto , a 2 help, strpos(’kayak’, ’a’, /reverse_s) x++ 3 help, strpos(’kayak’, ’a’, /rev) a: print, ’x= ’, x 4 help, strpos(’kayak’, ’a’, 2, /reverse_search , /reverse_offset) end % Compiled module: EXAMPLE. LONG = 3 x = 0 LONG = 3 % STRPOS: Ambiguous keyword abbreviation: REV As most of the flow control operator described in this section GOTO is usable only % Execution halted at: $MAIN$ within a GDL routine – not within a batch script which is equivalent to a series of LONG = 1 statementsDRAFT in the interactive mode. Object-oriented programming 15

Arrays Object-oriented programming

PRINT(TV)PM CALL_METHON CALL_METHON() OBJARR() N_ELEMENTS() SIZE() OBJ_CLASS() OBJ_DESTROY OBJ_ISA() OBJ_NEW() OBJ_VALID() REFORM() REBIN() REVERSE() ROTATE() TRANSPOSE() SORT() UNIQ() Handling Overflows, Floating Point Special Values

WHERE() ARRAY_INDICES() CHECK_MATH() FINITE() MACHAR() ARRAY_EQUAL() MAKE_ARRAY() REPLICATE() REPLICATE_INPLACE Error handling BYTARR() COMPLEXARR() DBLARR() DCOMPLEXARR() FLTARR() IN- TARR() LON64ARR() LONARR() OBJARR() PTRARR() STRARR() UIN- MESSAGE CATCH ON_ERROR ON_IOERROR EXECUTE TARR() ULON64ARR() ULONARR() BINDGEN() CINDGEN() DCINDGEN() DINDGEN() FINDGEN() INDGEN() Compile options L64INDEGEN() LINDEGEN() SINDGEN() UINDGEN() UL64INDGEN() ULIND- GEN() 1 $ cat example.pro IDENTITY() 2 help , 1 3 example Structures pro example CREATE_STRUCT() N_TAGS() STRUCT_ASSIGN TAG_NAMES() compile_opt idl2 help , 1 end System variables (global) INT = 1 % Compiled module: EXAMPLE. DEFSYSV (checking if running GDL) LONG = 1

1 $cat example.pro Heap variables (pointers) 2 example HEAP_GC PTRARR PTR_FREE PTR_NEW() PTR_VALID() pro example_helper compile_opt hidden The HELP procedure print , ’example procedure helper ’ end HELPDRAFTpro example 16 Chapter 2. Language reference

example_helper end % Compiled module: EXAMPLE. example procedure helper

DRAFT Chapter 3

Interpreter commands and built-in debugging facilities

MESSAGE RETALL STOP .COMPILE .STEP .CONTINUE CHECK_MATH JOURNAL RECALL_COMMANDS MEMORY( TEMPORARY()) RESOLVE_ROUTINE ROUTINE_INFO() ROUTINE_NAMES() SCOPE_VARFETCH() DRAFT Chapter 4

Maths

Basic Scalar, vector and array operations Linear algebra

LA_TRIRED LUDC SVDC TOTAL() SQRT() REVERSE() SHIFT() MAX() MIN() MEAN() NORM() IDENTITY() REPLICATE() REPLICATE_INPLACE CONVOL() PRODUCT() CROSSP() DERIV() INVERT() MATRIX_MULTIPLY() TRACE() TRANSPOSE()( ROTATE()) Statistics UNIQ()? CORRELATE() HISTOGRAM() HIST_2D() (implemented using HIST_ND()) Basic and special function library IMSL_BINOMIALCOEF() GAUSSINT() GAUSS_CVF() GAUSS_PDF() T_PDF() ABS() CEIL() FLOOR() (aka the Gauss’ symbol) ROUND() KURTOSIS() SKEWNESS() MEAN() MIN() MAX() MEDIAN() MEANABS- ALOG() ALOG10() EXP()( GSL_EXP()) DEV() MOMENT() STDDEV() VARIANCE() ACOS() ASIN() ATAN() COS() COSH() SIN() SINH() TAN() TANH() LL_ARC_DISTANCE() Interpolation BESELI() BESELJ() BESELK() BESELY() ERF() IMSL_ERF() ERFC() ERRORF() EXPINT() INTERPOL() (implemented using FINDEX()) INTERPOLATE() LAGUERRE() LEGENDRE() REBIN() SPHER_HARM() DERIV() GAUSSINT() GAUSS_CVF() GAUSS_PDF() SPL_INIT() SPL_INTERP() T_PDF() VALUE_LOCATE() FACTORIAL() GAMMA() BETA() IGAMMA() LNGAMMA() PRIMES() Polynomials VOIGT()DRAFTIMSL_ZEROPOLY() POLY() Mathematical and physical constants 19

Geometric calculations

POLY_AREA() TRIGRID()

Bitwise operations

ISHFT() BYTEORDER SWAP_ENDIAN() SWAP_ENDIAN_INPLACE

Function fitting

Markwardt [3]

Fourier analysis

FFT() DIST()

Multidimensional root-finding

BROYDEN() IMSL_ZEROPOLY() NEWTON()

Random numbers

RANDOMN() RANDOMU()

Ordinary differential equations

RK4()

Wavelet analysis

WTN()

Mathematical and physical constants !PI !DPIDRAFT IDL_CONSTANT() Chapter 5

Input/output, supported data formats

Basics – accessing files and io streams netCDF

PRINTPM GET_KBRD READ NCDF_ATTCOPY() NCDF_ATTDEL NCDF_ATTGET NCDF_ATTINQ() NCDF_ATTNAME() NCDF_ATTPUT NCDF_ATTRENAME NCDF_CLOSE NCDF_CONTROL NCDF_CREATE() BYTEORDER CLOSE EOF NCDF_DIMDEF() NCDF_DIMID() NCDF_DIMINQ NCDF_DIMRENAME NCDF_EXISTS() READ WRITE NCDF_INQUIRE() NCDF_OPEN() NCDF_VARDEF() NCDF_VARGET NCDF_VARGET1 READF READS READU NCDF_VARID() NCDF_VARINQ() NCDF_VARPUT NCDF_VARRENAME GET_LUN FREE_LUN POINT_LUN SKIP_LUN OPENR OPENU OPENW HDF4 HDF_CLOSE HDF_OPEN() ASCII HDF_SD_ADDDATA HDF_SD_ATTRFIND() HDF_SD_ATTRINFO HDF_SD_CREATE() HDF_SD_DIMGET HDF_SD_DIMGETID() HDF_SD_END HDF_SD_ENDACCESS PRINTF READF READ_ASCII HDF_SD_FILEINFO HDF_SD_GETDATA HDF_SD_GETINFO HDF_SD_NAMETOINDEX() HDF_SD_SELECT() HDF_SD_START() HDF_VD_ATTACH() HDF_VD_DETACH HDF_VD_FIND() HDF_VD_GET CSV HDF_VD_READ() HDF_VG_ATTACH() HDF_VG_DETACH HDF_VG_GETID() HDF_VG_GETINFO HDF_VG_GETTRS Binary data (raw access)

READ_BINARY() HDF5 BYTEORDER SWAP_ENDIAN() SWAP_ENDIAN_INPLACE H5A_CLOSE H5A_GET_NAME() H5A_GET_NUM_ATTRS() H5A_GET_SPACE() H5A_GET_TYPE() H5A_OPEN_IDX() H5A_OPEN_NAME() H5A_READ() H5D_CLOSE H5D_GET_SPACE() H5D_GET_TYPE() H5D_OPEN() H5D_READ() FITS H5F_CLOSE H5F_IS_HDF5() H5F_OPEN() H5G_CLOSE H5G_OPEN() H5S_CLOSE H5S_GET_SIMPLE_EXTENT_DIMS() H5T_CLOSE H5T_GET_SIZE() H5_GET_LIBVERSION() AstronDRAFT IDL save files 21 raster images (TIFF, PNG, JPEG, . . . ) see chapter in Image Processing

DICOM

GRIB

GRIBAPI_CLONE() GRIBAPI_CLOSE_FILE GRIBAPI_COUNT_IN_FILE() GRIB- API_GET GRIBAPI_GET_DATA GRIBAPI_GET_SIZE() GRIBAPI_NEW_FROM_FILE() GRIBAPI_OPEN_FILE() GRIBAPI_RELEASE

IDL save files

RESTORE SAVE DRAFT Chapter 6

Plotting and mapping

2D plots Working with colours

AXIS CONTOUR OPLOT PLOT PLOTERR PLOTS POLYFILL XYOUTS

3D plots LOADCT SURFACE PLOTS

Plotting raster data 1 device , /color , decomposed=0 BYTSCL() TV() TVLCT() TVRD() TVSCL() 2 l o a d c t , 1 3 plot, [0,1], thick=20

4 oplot , [1,0], color=200, thick=20 Managing multiple windows

WDELETE WINDOW WSHOW WSET

Map projections

MAP_CONTINENTS MAP_PROJ_FORWARD MAP_PROJ_INVERSE LL_ARC_DISTANCE() % Compiled module: LOADCT. MAP_CLIP_SET % LOADCT: Loading t a b l e BLUE/WHITE

Output terminals SET_PLOTDRAFT DEVICE CURSOR ERASE FLUSH Fonts, symbols and text formatting 23

Fonts, symbols and text formatting

SHOWFONT Harshey fonts [8]

1 device , /color , decomposed=1 Misc

2 plot, [0,1], thick=20 CONVERT_COORD() GET_SCREEN_SIZE() 3 oplotDRAFT , [1,0], color=’ff0000 ’x, thick=20 Chapter 7

Interaction with host OS

CD POPD PUSHD PRINTD EXIT WAIT

Executing external commands (via shell or not)

SPAWN (while EXECUTE() ...)

Filesystem operations

CD FILE_BASENAME() FILE_COPY FILE_DELETE FILE_DIRNAME() FILE_EXPAND_PATH() ( EXPAND_PATH()) FILE_INFO() FILE_LINES() FILE_MKDIR FILE_SAME() FILE_SEARCH() FILE_TEST() FILE_WHICH() FINDFILE() FSTAT() PATH_SEP()

Network operations

SOCKET PARSE_URL()

Command-line options and environmental variables COMMAND_LINE_ARGS()DRAFT SETENV GETENV() LOCALE_GET() Chapter 8

Manipulating strings

STRCMP() STRCOMPRESS() STREGEX() STRJOIN() STRLEN() STRLOWERCASE() STRUPCASE() STRMID() STRPOS() RSTRPOS() STRPUT() STRSPLIT() STRTOK() STR- TRIM() STR_SEP() READS() STRARR() STRING() SINDGEN() IDL_BASE64() IDL_VALIDANEM() SORT() UNIQ() PARSE_URL() DRAFT Chapter 9

Representing date & time

CALDAT CALENDAR SYSTIME()

DRAFT Chapter 10

Image processing

QUERY_BMP() QUERY_DICOM() QUERY_GIF() QUERY_IMAGE() QUERY_JPEG() QUERY_PICT() QUERY_PNG() QUERY_PPM() QUERY_TIFF() READ_BMP() READ_DICOM() READ_JPEG READ_PICT READ_PNG() READ_TIFF() READ_XWD() WRITE_BMP WRITE_JPEG WRITE_PICT WRITE_PNG BYTSCL() CONVOL() MEDIAN() POLY_2D() PREWITT() RADON() ROBERTS() ROTATE() REBIN() SMOOTH() SOBEL() DRAFT Chapter 11

Parallel processing

Built-in features (OpenMP)

CPU

Semaphores and shared memory (library routines)

SEM_CREATE() SEM_DELETE SEM_LOCK() SEM_RELEASE

ImageMagick’s features

MPI and GDL DRAFT Chapter 12

GUI programming (widgets)

DIALOG_MESSAGE() DIALOG_PICKFILE() WIDGET_BASE() WIDGET_BUTTON() WIDGET_CONTROL WIDGET_DROPLIST() WIDGET_EVENT() WIDGET_INFO() WIDGET_LABEL() WIDGET_TEXT() DRAFT Chapter 13

Dynamic loading

CALL_EXTERNAL() LINKIMAGE()

DRAFT Chapter 14

The Python bridge van Rossum and Fred L. Drake [6] calling Python code from GDL

PYTHON() PYTHON calling GDL code from Python DRAFT Chapter 15

Alphabetical list of library routines

ABS() function ALOG10() function

positional arguments: 1 positional arguments: 1 keywords: none keywords: none

Returns absolute value of a number passed as the first argument or an array of absolute values if argument is an array. For complex arguments the length of the argument in the complex APPLEMAN procedure plane is returned (the phase of a complex number may be obtained using ATAN()).

1 p r i n t , abs( −2.2) positional arguments: 2 2 p r i n t , abs([ − 1 , 1 , 0 ] ) keywords: RESULT 3 p r i n t , abs(.5 ∗ s q r t ( 2 ) ∗ complex(1, 1)) Mandelbrot set

2.20000 1 1 0 ARG_PRESENT() function 1.00000 positional arguments: 1 keywords: none multi-threading: this routine uses GDL thread pool if working on large array, see the...

ACOS() function ARRAY_EQUAL() function

positional arguments: 1 positional arguments: 2 keywords: none keywords: NO_TYPECONV

multi-threading: this routine uses GDL thread pool if working on large array, see the... ARRAY_INDICES() function

ALOG() function positional arguments: 2 keywords: none positional arguments: 1 keywords:DRAFTnone see also: WHERE() ASIN() function 33

ASIN() function BESELJ() function positional arguments: 1 positional arguments: 2 keywords: none keywords: DOUBLE, HELP, ITER multi-threading: this routine uses GDL thread pool if working on large array, see the... BESELK() function ASSOC() function positional arguments: 2 keywords: DOUBLE, HELP, ITER positional arguments: 3 keywords: PACKED BESELY() function ATAN() function positional arguments: 2 keywords: DOUBLE, HELP, ITER positional arguments: 2 keywords: PHASE BETA() function multi-threading: this routine uses GDL thread pool if working on large array, see the... positional arguments: 2 keywords: DOUBLE AXIS procedure positional arguments: 3 BINDGEN() function keywords: CHARSIZE, CHARTHICK, COLOR, DATA, DEVICE, FONT, NODATA, NOERASE, NORMAL, SAVE, SUBTITLE, T3D, THICK, TICKLEN, XAXIS, positional arguments: 8 XCHARSIZE, XGRIDSTYLE, XLOG, XMARGIN, XMINOR, XRANGE, XSTYLE, keywords: none XTHICK, XTICKFORMAT, XTICKINTERVAL, XTICKLEN, XTICKNAME, XTICKS, XTITLE, XTYPE, YAXIS, YCHARSIZE, YGRIDSTYLE, YLOG, YMARGIN, YMI- NOR, YNOZERO, YRANGE, YSTYLE, YTHICK, YTICKFORMAT, YTICKIN- BROYDEN() function TERVAL, YTICKLEN, YTICKNAME, YTICKS, YTITLE, YTYPE, ZCHARSIZE, ZGRIDSTYLE, ZMARGIN, ZMINOR, ZRANGE, ZSTYLE, ZTHICK, ZTICKFOR- positional arguments: 2 MAT, ZTICKLEN, ZTICKNAME, ZTICKS, ZTITLE, ZVALUE keywords: DOUBLE, ITMAX, TOLF, TOLX

BESELI() function BYTARR() function positional arguments: 2 positional arguments: 8 keywords:DRAFTDOUBLE, HELP, ITER keywords: NOZERO 34 Chapter 15. Alphabetical list of library routines

BYTE() function

positional arguments: 10 keywords: none

BYTEORDER procedure

positional arguments: any number keywords: DTOXDR, FTOXDR, HTONL, HTONS, L64SWAP, LSWAP, NTOHL, NTOHS, SSWAP, SWAP_IF_BIG_ENDIAN, SWAP_IF_LITTLE_ENDIAN, XDR- TOD, XDRTOF

BYTSCL() function

positional arguments: 3 keywords: MAX, MIN, NAN, TOP

CALDAT procedure CALL_EXTERNAL() function

positional arguments: 7 positional arguments: any number keywords: none keywords: ALL_GDL, ALL_VALUE, B_VALUE, D_VALUE, F_VALUE, I_VALUE, L64_VALUE, L_VALUE, RETURN_TYPE, STRUCT_ALIGN_BYTES, S_VALUE, UI_VALUE, UL64_VALUE, UL_VALUE, UNLOAD, VALUE CALENDAR procedure Calls a routine from a sharable object library. The first argument should be a string containing positional arguments: 2 the filename of the sharable object to load (standard library paths are searched). The second keywords: none argument should be a string with the name of the routine in the image to ba called. All subsequent arguments are passed to the routine. An interface to the UNIX cal command. Displays a calendar using the current graphics Here is a, hopefully concise, example covering all the steps one could take to write, build device (i.e. X, PS, . . . ). The two optional arguments allow to specify a month, or a month and call a C routine from GDL: and a year. 1 $ echo ’$ cat libexample.c’ 1 c a l e n d a r, 9, 1983 2 $ cat libexample.c 3 $ echo ’$ cat CMakeLists.txt’ 4 $ cat CMakeLists.txt % Compiled module: CALENDAR. 5 $ echo ’$ cmake .’ DRAFT6 $ cmake .|awk ’{print (length($0)>50?substr($0,0,50) "...":$0)}’ CALL_EXTERNAL() function 35

7 $ echo [100%] Building C object CMakeFiles/example.dir/libexample.o 8 $ echo ’$ make’ Linking C shared library libexample.dylib 9 $ make [100%] Built target example 10 $ echo 11 % $MAIN$: 1d308 vs. a next representable double: 12 img = ’libexample.’+(!VERSION.OS_NAME eq ’Darwin’?" dylib ":"so") 1.0000000000000000E+308 13 message, ’1d308 vs. a next representable double:’, /continue 1.0000000000000002E+308 14 print , format=’(E)’, 1d308, $ 15 call_external(img, ’c_nextafter ’, 1d308, 2d308, /d_value) 16 RETURN_TYPE keyword 17 $ make c l e a n Indicates the type of the return value of the called routine, this value will be returned by $ cat libexample.c CALL_EXTERNAL to GDL. The value of the keyword is interpreted in the same way as the #include type field of the SIZE() function. Possible values for it are those for numeric types except double c_nextafter(int argc, void ∗ argv [ ] ) { COMPLEX and DCOMPLEX. The default value is 3 (GDL type LONG, which corresponds return nextafter( ∗ ( double ∗) argv [ 0 ] , ∗( double ∗) argv [ 1 ] ) ; to C type int). Alternatively one of the following keywords may be used: } B_VALUE keyword $ cat CMakeLists.txt project(libexaple C) equivalent to RETURN_TYPE=1 (BYTE) cmake_minimum_required (VERSION 2 . 0 ) add_library(example SHARED libexample .c) I_VALUE keyword s e t _ d i r e c t o r y _ p r o p e r t i e s (PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "Makefile ;CMakeCache. txt ; cmake_install .cmake;CMakeFiles") equivalent to RETURN_TYPE=2 (INTEGER)

$ cmake . L_VALUE keyword −− The C compiler identification is GNU −− Checking whether C compiler has −i s y s r o o t equivalent to RETURN_TYPE=3 (LONG) −− Checking whether C compiler has −i s y s r o o t − y e s This correspodns to the default behaviour. −− Checking whether C compiler supports OSX deploy... −− Checking whether C compiler supports OSX deploy... F_VALUE keyword −− Check for working C compiler: /usr/bin/gcc −− Check for working C compiler: /usr/bin/gcc −− w . . . equivalent to RETURN_TYPE=4 (FLOAT) −− Detecting C compiler ABI info −− Detecting C compiler ABI info − done D_VALUE keyword −− Configuring done −− Generating done equivalent to RETURN_TYPE=5 (DOUBLE) −− Build files have been written to: /Users/slayoo... UI_VALUE keyword $ make ScanningDRAFT dependencies of target example equivalent to RETURN_TYPE=12 (UINT) 36 Chapter 15. Alphabetical list of library routines

UL_VALUE keyword CALL_FUNCTION() function equivalent to RETURN_TYPE=13 (ULONG) positional arguments: any number keywords: _REF_EXTRA L64_VALUE keyword equivalent to RETURN_TYPE=14 (LONG64) CALL_METHOD procedure

UL64_VALUE keyword positional arguments: any number keywords: _REF_EXTRA equivalent to RETURN_TYPE=15 (ULONG64)

S_VALUE keyword CALL_METHOD() function equivalent to RETURN_TYPE=6 (STRING, the called function should return char*) positional arguments: any number keywords: _REF_EXTRA ALL_VALUE keyword

The default is to pass all parameters by reference. If this keyword is set, all parameters are passed by value. CALL_PROCEDURE procedure positional arguments: any number UNLOAD keyword keywords: _REF_EXTRA If set (/UNLOAD or UNLOAD=1) the shared object will be unloaded after calling the routine.

STRUCT_ALIGN_BYTES keyword CATCH procedure

If set to an integer n, CALL_EXTERNAL assumes that structures in the shared object are positional arguments: 1 aligned at boundaries of n bytes, where n should be a power of 2. If n=0 or if this keyword keywords: CANCEL is not given, the default machine dependent alignment is assumed (normally 4/8 bytes on 32/64 bit systems). It should only be necessary to use this keyword if the called shared object has been compiled with a different alignment, e.g. with #pragma pack(n) CD procedure implementation details: This routine uses the dlopen/dlsym/dlclose calls, and thus is avail- positional arguments: 1 able only on systems that support them. It has been tested on Linux, Apple OS X and keywords: CURRENT Solaris. see also: LINKIMAGE CDF_EPOCH procedure disclaimer: CALL_EXTERNAL was implemented in GDL by Christoph Fuchs, who also positional arguments: 8 wrote the documentation for it which was the base for this entry. Copyright: (C) 2010 keywords: BREAKDOWN_EPOCH, COMPUTE_EPOCH byDRAFT Christoph Fuchs. The original file was licensed under GNU GPL v>=2. CEIL() function 37

CEIL() function COMPLEXARR() function positional arguments: 1 positional arguments: 8 keywords: L64 keywords: NOZERO multi-threading: this routine uses GDL thread pool if working on large array, see the... CONJ() function CHECK_MATH() function positional arguments: 1 positional arguments: 2 keywords: none keywords: MASK, NOCLEAR, PRINT

multi-threading: this routine uses GDL thread pool if working on large array, see the... CINDGEN() function positional arguments: 8 CONTOUR procedure keywords: none positional arguments: 3 keywords: BACKGROUND, CHARSIZE, CHARTHICK, CLIP, COLOR, C_CHARSIZE, C_COLORS, C_LINESTYLE, DATA, DEVICE, FILL, FOLLOW, FONT, CLOSE procedure ISOTROPIC, LEVELS, MAX_VALUE, MIN_VALUE, NLEVELS, NOCLIP, NO- DATA, NOERASE, NORMAL, OVERPLOT, POSITION, SUBTITLE, T3D, positional arguments: any number THICK, TICKLEN, TITLE, XCHARSIZE, XGRIDSTYLE, XLOG, XMARGIN, keywords: ALL, EXIT_STATUS, FILE, FORCE XMINOR, XRANGE, XSTYLE, XTHICK, XTICKFORMAT, XTICKLEN, XTICK- NAME, XTICKS, XTICKV, XTICK_GET, XTITLE, XTYPE, YCHARSIZE, YGRID- STYLE, YLOG, YMARGIN, YMINOR, YRANGE, YSTYLE, YTHICK, YTICKFOR- COMMAND_LINE_ARGS() function MAT, YTICKLEN, YTICKNAME, YTICKS, YTICKV, YTICK_GET, YTITLE, YTYPE, ZCHARSIZE, ZGRIDSTYLE, ZLOG, ZMARGIN, ZMINOR, ZRANGE, positional arguments: none ZSTYLE, ZTHICK, ZTICKFORMAT, ZTICKLEN, ZTICKNAME, ZTICKS, ZTICKV, keywords: COUNT ZTICK_GET, ZTITLE, ZTYPE, ZVALUE

COMPLEX() function CONVERT_COORD() function positional arguments: 10 keywords: none positional arguments: 3 keywords: DATA, DEVICE, DOUBLE, NORMAL, T3D, TO_DATA, TO_DEVICE, TO_NORMAL multi-threading:DRAFTthis routine uses GDL thread pool if working on large array, see the... 38 Chapter 15. Alphabetical list of library routines

CONVOL() function 1 x=[1, 2, 3, 4, 5] positional arguments: 3 2 y= [1.1, 1.9, 3.1, 3.9, 5, 6, 7, 8, 9] keywords: CENTER, EDGE_TRUNCATE, EDGE_WRAP 3 help, correlate(x, y) 4 help, correlate(x, y, /double)

% Compiled module: CORRELATE. CORRELATE() function % Compiled module: MEAN. FLOAT = 0.99813 positional arguments: 2 DOUBLE = 0.9981310 keywords: COVARIANCE, DOUBLE

When called with two vector arguments x and y it returns the correlation coefficient r defined COVARIANCE keyword as: cov(x, y) r = (15.1) If called with the COVARIANCE keyword, the covariance cov(x, y) of the two vectors is stdev(x) · stdev(y) returned instead. where N−1 1 x = [ −1 , 0 , 1 . ] 1 X cov(x, y) = (x[i] − x) · (y[i] − y) (15.2) 2 y = [ −2 , 0 , 2 . ] N − 1 i=0 3 print, correlate(x, y, /covariance) v u N−1 u 1 X % Compiled module: CORRELATE. stdev(x) = t [x[i] − x]2 (15.3) N − 1 % Compiled module: MEAN. i=0 2.00000 and N−1 X x[i] x = (15.4) N i=0 COS() function (N is the length of the longer vector). positional arguments: 1 keywords: none 1 p r i n t , correlate([ − 1,0,1], [1,0, −1])

multi-threading: this routine uses GDL thread pool if working on large array, see the... % Compiled module: CORRELATE. % Compiled module: MEAN. −1.00000 COSH() function

positional arguments: 1 keywords: none DOUBLE keyword ForcesDRAFT double-precision calculations and output value type. multi-threading: this routine uses GDL thread pool if working on large array, see the... CPU procedure 39

CPU procedure DCOMPLEXARR() function positional arguments: none positional arguments: 8 keywords: RESET, RESTORE, TPOOL_MAX_ELTS, TPOOL_MIN_ELTS, keywords: NOZERO TPOOL_NTHREADS, VECTOR_ENABLE

CREATE_STRUCT() function DEFSYSV procedure positional arguments: any number keywords: NAME positional arguments: 3 keywords: EXISTS CROSSP() function positional arguments: 2 keywords: none DERIV() function

positional arguments: 2 CURSOR procedure keywords: HELP, NO_CHECK, TEST positional arguments: 3 keywords: CHANGE, DATA, DEVICE, DOWN, NORMAL, NOWAIT, UP, WAIT DEVICE procedure DBLARR() function positional arguments: none positional arguments: 8 keywords: CLOSE_FILE, COLOR, DECOMPOSED, FILENAME, GET_DECOMPOSED, keywords: NOZERO GET_SCREEN_SIZE, GET_VISUAL_DEPTH, INCHES, LANDSCAPE, PORTRAIT, SET_CHARACTER_SIZE, SET_RESOLUTION, WINDOW_STATE, XSIZE, YSIZE, Z_BUFFERING DCINDGEN() function positional arguments: 8 keywords: none DIALOG_MESSAGE() function

positional arguments: 1 DCOMPLEX() function keywords: CANCEL, CENTER, DEFAULT_CANCEL, DEFAULT_NO, DIA- LOG_PARENT, DISPLAY_NAME, ERROR, HELP, INFORMATION, QUESTION, positional arguments: 10 RESOURCE_NAME, TITLE, ZENITY_NAME, ZENITY_PATH keywords:DRAFTnone 40 Chapter 15. Alphabetical list of library routines

DIALOG_PICKFILE() function

positional arguments: none keywords: DEBUG, DEFAULT_EXTENSION, DIALOG_PARENT, DIRECTORY, DIS- PLAY_NAME, FILE, FILTER, FIX_FILTER, GET_PATH, GROUP, HELP, MUL- TIPLE_FILES, MUST_EXIST, OVERWRITE_PROMPT, PATH, READ, RE- SOURCE_NAME, TEST, TITLE, VERBOSE, WRITE, ZENITY_NAME, ZEN- ITY_PATH

DINDGEN() function

positional arguments: 8 keywords: none DOUBLE() function

positional arguments: 10 keywords: none

DIST() function EOF() function

positional arguments: 1 positional arguments: 2 keywords: none keywords: none

ERASE procedure

1 s u r f a c e , dist(25) positional arguments: 1 keywords: none

ERF() function % Compiled module: DIST. positional arguments: 1 DRAFTkeywords: DOUBLE ERFC() function 41

ERFC() function STATUS keyword

positional arguments: 1 1 spawn, ’../../../../src/gdl −q u i e t −e " e x i t , status=44" 1>/dev/null ’, $ keywords: DOUBLE 2 exit_status=s 3 print , ’spawned GDL process exited with code ’, strtrim(s, 2)

ERRORF() function spawned GDL process exited with code 44 positional arguments: 1 keywords: DOUBLE EXP() function ESCAPE_SPECIAL_CHAR() function positional arguments: 1 keywords: none positional arguments: 1

keywords: HELP, LIST_OF_SPECIAL_CHAR, SHOW_LIST, TEST, VERBOSE 1 p r i n t , exp([0, 1, −!VALUES. F_INFINITY ]) 2 print , alog(exp([!PI]))

EXECUTE() function 1.00000 2.71828 0.00000 3.14159 positional arguments: 2 keywords: none multi-threading: this routine uses GDL thread pool if working on large array, see the... Executes the statement passed in the first arguement, returns 1 if no error occured or 0 if the execution failed, e.g.

1 s t a t u s = execute(’print , "Hello world!"’) EXPAND_PATH() function 2 help, status positional arguments: 1 3 s t a t u s = execute(’print , Hello world!)’) keywords: ALL_DIRS, ARRAY, COUNT 4 help, status

Hello world! EXPINT() function STATUS INT = 1 % Parser syntax error: unexpected token: HELLO positional arguments: 2 STATUS INT = 0 keywords: DOUBLE

EXIT procedure FACTORIAL() function

positional arguments: none positional arguments: 1 keywords:DRAFTNO_CONFIRM, STATUS keywords: STIRLING, UL64 42 Chapter 15. Alphabetical list of library routines

FFT() function 1 p r i n t , file_basename(’/etc/passwd ’) positional arguments: 2 keywords: DIMENSION, DOUBLE, INVERSE, OVERWRITE % Compiled module : FILE_BASENAME . % Compiled module : ESCAPE_SPECIAL_CHAR . 1 X − 2πi mk F [m] = f[k] · e N (15.5) % Compiled module: STRSPLIT. N k % Compiled module: UNIQ. passwd 1 $ tail stddev ∗ . pro 2 x = [1.31, 2.44, 2.51, 3.01, 2.96, 2.50, 0.05, 3.24, 0.13] 1 p r i n t , file_basename(’/etc/resolv.conf’, ’.conf’) 3 print , stddevsum(x), stddevfft(x)

% Compiled module : FILE_BASENAME . ==> stddevfft .pro <== % Compiled module : ESCAPE_SPECIAL_CHAR . function stddevfft , x % Compiled module: STRSPLIT. return , sqrt(total((abs(fft(x))^2)[1: − 1 ] ) ) % Compiled module: UNIQ. end r e s o l v ==> stddevsum . pro <== function stddevsum, x 1 p r i n t , file_basename(file_search ( ’../../../../ src/gdl ∗ . g ’ ) ) return , sqrt(mean(x^2) − mean ( x )^2) end % Compiled module : FILE_BASENAME . % Compiled module: STDDEVSUM. % Compiled module : ESCAPE_SPECIAL_CHAR . % Compiled module: MEAN. % Compiled module: STRSPLIT. % Compiled module: STDDEVFFT. % Compiled module: UNIQ. 1.15258 1.15258 gdlc.g gdlc.i.g gdlc.tree.g

multi-threading: this routine uses GDL thread pool if working on large array, see the... see also: FILE_DIRNAME(), PATH_SEP()

implementation details: FFTW vs. GSL - TODO FILE_COPY procedure

FILEPATH() function positional arguments: 2 keywords: ALLOW_SAME, HELP, NOEXPAND_PATH, OVERWRITE, QUIET, RE- positional arguments: 1 CURSIVE, REQUIRE_DIRECTORY, TEST, VERBOSE keywords: ROOT_DIR, SUBDIRECTORY, TERMINAL, TMP FILE_DELETE procedure

FILE_BASENAME() function positional arguments: 30 keywords: ALLOW_NONEXISTENT, HELP, NOEXPAND_PATH, QUIET, RECUR- positional arguments: 2 SIVE, TEST, VERBOSE keywords:DRAFTFOLD_CASE, HELP FILE_DIRNAME() function 43

FILE_DIRNAME() function FILE_SAME() function

positional arguments: 1 positional arguments: 2 keywords: HELP, MARK_DIRECTORY keywords: NOEXPAND_PATH

FILE_EXPAND_PATH() function FILE_SEARCH() function positional arguments: 2 positional arguments: 1 keywords: COUNT, EXPAND_ENVIRONMENT, EXPAND_TILDE, FOLD_CASE, keywords: none FULLY_QUALIFY_PATH, ISSUE_ACCESS_ERROR, MARK_DIRECTORY, MATCH_ALL_INITIAL_DOT, MATCH_INITIAL_DOT, NOSORT, QUOTE

FILE_INFO() function FILE_TEST() function positional arguments: 2 keywords: NOEXPAND_PATH positional arguments: 1 keywords: BLOCK_SPECIAL, CHARACTER_SPECIAL, DIRECTORY, EXECUTABLE, GET_MODE, NAMED_PIPE, NOEXPAND_PATH, READ, REGULAR, SOCKET, FILE_LINES() function SYMLINK, WRITE, ZERO_LENGTH

positional arguments: 1 keywords: COMPRESS, NOEXPAND_PATH FILE_WHICH() function

positional arguments: 2 1 p r i n t , file_lines ( ’../../../../ChangeLog’) keywords: INCLUDE_CURRENT_DIR

% Compiled module: FILE_LINES. 5290 FINDEX() function

positional arguments: 2 keywords: none FILE_MKDIR procedure

positional arguments: any number FINDFILE() function keywords: NOEXPAND_PATH positional arguments: 1 implementation details: Current implementation uses the system() call and executes the keywords: COUNT, HELP, QUIET, SH_LOCATION, SPAWN_OPTIONS, TEST, VER- mkdirDRAFT using using a shell subprocess BOSE 44 Chapter 15. Alphabetical list of library routines

FINDGEN() function FLUSH procedure positional arguments: 8 positional arguments: any number keywords: none keywords: none

FREE_LUN procedure FINITE() function positional arguments: any number positional arguments: 1 keywords: EXIT_STATUS, FORCE keywords: INFINITY, NAN

FSTAT() function

FIX() function positional arguments: 1 keywords: none positional arguments: 10 keywords: PRINT, TYPE GAMMA() function

FLOAT() function positional arguments: 1 keywords: DOUBLE positional arguments: 10 keywords: none GAUSSINT() function

positional arguments: 1 FLOOR() function keywords: DOUBLE positional arguments: 1 keywords: L64 GAUSS_CVF() function

positional arguments: 1 multi-threading: this routine uses GDL thread pool if working on large array, see the... keywords: none

FLTARR() function GAUSS_PDF() function positional arguments: 8 positional arguments: 1 keywords:DRAFTNOZERO keywords: none GDL_ERFINV() function 45

GDL_ERFINV() function GET_LUN procedure

positional arguments: 1 positional arguments: 1 keywords: DOUBLE keywords: none

GET_SCREEN_SIZE() function GETENV() function positional arguments: 1 positional arguments: 1 keywords: RESOLUTION keywords: ENVIRONMENT

GRIBAPI_CLONE() function GET_DRIVE_LIST() function positional arguments: 1 keywords: none positional arguments: none keywords: COUNT GRIBAPI_CLOSE_FILE procedure GET_KBRD() function positional arguments: 1 keywords: none positional arguments: 1 keywords: none GRIBAPI_COUNT_IN_FILE() function

positional arguments: 1 GET_LOGIN_INFO() function keywords: none

positional arguments: none keywords: none GRIBAPI_GET procedure

Returns a structure with current username and hostname: positional arguments: 3 keywords: none 1 help , get_login_info(), /structure

∗∗ Structure , 2 tags , data length=16: GRIBAPI_GET_DATA procedure MACHINE_NAME STRING ’ e y r i e . prac . i g f ’ USER_NAME STRING ’ s l a y o o ’ positional arguments: 4 DRAFTkeywords: none 46 Chapter 15. Alphabetical list of library routines

GRIBAPI_GET_SIZE() function H5A_GET_NUM_ATTRS() function positional arguments: 2 positional arguments: 1 keywords: none keywords: none

GRIBAPI_NEW_FROM_FILE() function H5A_GET_SPACE() function positional arguments: 1 positional arguments: 1 keywords: none keywords: none

GRIBAPI_OPEN_FILE() function H5A_GET_TYPE() function positional arguments: 1 positional arguments: 1 keywords: none keywords: none

GRIBAPI_RELEASE procedure H5A_OPEN_IDX() function positional arguments: 1 positional arguments: 2 keywords: none keywords: none

GSL_EXP() function H5A_OPEN_NAME() function positional arguments: 1 positional arguments: 2 keywords: none keywords: none

H5A_CLOSE procedure H5A_READ() function positional arguments: 1 positional arguments: 1 keywords: none keywords: none

H5A_GET_NAME() function H5D_CLOSE procedure positional arguments: 1 positional arguments: 1 keywords:DRAFTnone keywords: none H5D_GET_SPACE() function 47

H5D_GET_SPACE() function H5G_CLOSE procedure positional arguments: 1 positional arguments: 1 keywords: none keywords: none

H5D_GET_TYPE() function H5G_OPEN() function positional arguments: 1 keywords: none positional arguments: 2 keywords: none H5D_OPEN() function positional arguments: 2 H5S_CLOSE procedure keywords: none positional arguments: 1 keywords: none H5D_READ() function positional arguments: 1 keywords: none H5S_GET_SIMPLE_EXTENT_DIMS() function

positional arguments: 1 H5F_CLOSE procedure keywords: none positional arguments: 1 keywords: none H5T_CLOSE procedure

H5F_IS_HDF5() function positional arguments: 1 keywords: none positional arguments: 1 keywords: none

H5T_GET_SIZE() function H5F_OPEN() function positional arguments: 1 positional arguments: 1 keywords:DRAFTnone keywords: none 48 Chapter 15. Alphabetical list of library routines

H5_GET_LIBVERSION() function HDF_SD_CREATE() function

positional arguments: none positional arguments: 3 keywords: none keywords: BYTE, DFNT_CHAR, DFNT_FLOAT32, DFNT_FLOAT64, DFNT_INT16, DFNT_INT32, DFNT_INT8, DFNT_UINT16, DFNT_UINT32, DFNT_UINT8, Returns a string containing the version number of the HDF5 library. DOUBLE, FLOAT, HDF_TYPE, INT, LONG, SHORT, STRING

1 help , h5_get_libversion()

STRING = ’1.8.6’ HDF_SD_DIMGET procedure

positional arguments: 1 HDF_CLOSE procedure keywords: COUNT, NAME, NATTR, SCALE

positional arguments: 1 keywords: none HDF_SD_DIMGETID() function

positional arguments: 2 HDF_OPEN() function keywords: none positional arguments: 2 keywords: ALL, CREATE, NUM_DD, RDWR, READ, WRITE HDF_SD_END procedure

HDF_SD_ADDDATA procedure positional arguments: 1 keywords: none positional arguments: 2 keywords: COUNT, START, STRIDE

HDF_SD_ENDACCESS procedure HDF_SD_ATTRFIND() function positional arguments: 1 positional arguments: 2 keywords: none keywords: none

HDF_SD_ATTRINFO procedure HDF_SD_FILEINFO procedure

positional arguments: 2 positional arguments: 3 keywords:DRAFTCOUNT, DATA, HDF_TYPE, NAME, TYPE keywords: none HDF_SD_GETDATA procedure 49

HDF_SD_GETDATA procedure HDF_VD_FIND() function positional arguments: 2 positional arguments: 2 keywords: COUNT, START, STRIDE keywords: none

HDF_SD_GETINFO procedure HDF_VD_GET procedure positional arguments: 1 positional arguments: 1 keywords: COORDSYS, DIMS, FORMAT, HDF_TYPE, LABEL, NAME, NATTS, keywords: CLASS, COUNT, NAME, REF, TAG NDIMS, TYPE, UNIT

HDF_VD_READ() function HDF_SD_NAMETOINDEX() function positional arguments: 2 positional arguments: 2 keywords: FIELDS, FULL_INTERLACE, NO_INTERLACE, NRECORDS keywords: none

HDF_SD_SELECT() function HDF_VG_ATTACH() function positional arguments: 2 positional arguments: 2 keywords: READ, WRITE keywords: none

HDF_SD_START() function HDF_VG_DETACH procedure positional arguments: 2 positional arguments: 1 keywords: CREATE, RDWR, READ keywords: none

HDF_VD_ATTACH() function HDF_VG_GETID() function positional arguments: 2 positional arguments: 2 keywords: READ, WRITE keywords: none

HDF_VD_DETACH procedure HDF_VG_GETINFO procedure positional arguments: 1 positional arguments: 1 keywords:DRAFTnone keywords: CLASS, NAME, NENTRIES, REF, TAG 50 Chapter 15. Alphabetical list of library routines

HDF_VG_GETTRS procedure HIST_ND() function positional arguments: 3 positional arguments: 2 keywords: none keywords: MAX, MIN, NBINS, REVERSE_INDICES

Performs an N-dimensional histogram, also known as the joint density function of N variables. HEAP_GC procedure The first argument is an N×P array representing P data points in N dimensions. The second argument is optional, and it may be used to specify the size of the bin to use. Either an N positional arguments: none point vector specifying a separate size for each dimension, or a scalar, which will be used for keywords: OBJ, PTR, VERBOSE all dimensions. If BINSIZE is not passed, the NBINS keyword must be set (see below). The function returns the N-Dimensional histogram, an array of size N1×N2×N3×... ×ND where the Ni’s are the number of bins implied by the data, and/or the optional inputs (see HELP procedure below). positional arguments: any number MIN keyword keywords: BRIEF, CALLS, FUNCTIONS, INFO, LIB, MEMORY, OUTPUT, PROCE- DURES, RECALL_COMMANDS, ROUTINES, STRUCTURES The minimum value for the histogram. Either a P point vector specifying a separate minimum for each dimension, or a scalar, which will be used for all dimensions. If omitted, the natural minimum within the dataset will be used. HELPFORM() function MAX keyword positional arguments: 2 The maximum value for the histogram. Either a P point vector specifying a separate max- keywords: FULL_STRUCT, SHORTFORM, SINGLE, SIZE, STRUCTURE_NAME, immum for each dimension, or a scalar, which will be used for all dimensions. If omitted, TAGFORM, WIDTH the natural maximum within the dataset will be used.

NBINS keyword HISTOGRAM() function Rather than specifying the binsize, you can pass NBINS, the number of bins in each dimen- positional arguments: 1 sion, which can be a P point vector, or a scalar. If BINSIZE it also passed, NBINS will be keywords: BINSIZE, INPUT, LOCATIONS, MAX, MIN, NBINS, OMAX, OMIN, ignored, otherwise BINSIZE will then be calculated as binsize=(max-min)/nbins. REVERSE_INDICES REVERSE_INDICES keyword HIST_2D() function Set to a named variable to receive the reverse indices, for mapping which points occurred in a given bin. Note that this is a 1-dimensional reverse index vector (see HISTOGRAM()). positional arguments: 2 E.g., to find the indices of points which fell in a histogram bin [i,j,k], look up: keywords: BIN1, BIN2, MAX1, MAX2, MIN1, MIN2 ind=[i+nx*(j+ny*k)] ri[ri[ind]:ri[ind+1]-1] implementation details: this routine is implemented as a wrapper to the HIST_ND() functionDRAFTSee also ARRAY_INDICES() for converting in the other direction. IDENTITY() function 51

see also: HISTOGRAM(), HIST_2D() IMSL_BINOMIALCOEF() function disclaimer: Entry based on J.D. Smith’s documentation for his implementation of HIST_ND which was included in GDL unchanged. Copyright (C) 2001-2007, J.D Smith. This positional arguments: 2 software is provided as is without any warranty whatsoever. Permission to use, copy, keywords: DOUBLE modify, and distribute modified or unmodified copies is granted, provided this copyright and disclaimer are included unchanged. Returns the binomial coefficient defined as: IDENTITY() function n n! positional arguments: 1 = for 0 ≤ k ≤ n (15.6) k k!(n − k)! keywords: DOUBLE

where n and k are the first and second arguments, respectively. IDL_BASE64() function The routine can be used for example to construct the Pascal’s trangle: positional arguments: 1 keywords: none 1 $ cat pascal.pro 2 p a s c a l , 8 disclaimer: the name of this GDL routine includes the IDL_ prefix for compatibility with IDL, it has no ...

IDL_VALIDNAME() function pro pascal, n positional arguments: 1 tri = replicate(’ ’, 2 ∗ n − 1 , n ) keywords: none f o r i =0, n−1 do for j=0, i do tri[2 ∗ j + ( n−i ) −1 , i ] = $ s t r i n g (imsl_binomialcoef(i, j), f=’(I3)’) p r i n t , t r i IGAMMA() function end % Compiled module: PASCAL. positional arguments: 2 1 keywords: DOUBLE 1 1 1 2 1 1 3 3 1 IMAGINARY() function 1 4 6 4 1 1 5 10 10 5 1 positional arguments: 1 1 6 15 20 15 6 1 keywords: none 1 7 21 35 35 21 7 1 multi-threading:DRAFTthis routine uses GDL thread pool if working on large array, see the... 52 Chapter 15. Alphabetical list of library routines

DOUBLE keyword 20 imsl_constant(’ElectronCharge ’) 21 print, ’Massofthe electron [kg]: ’,$ Forces double precision: 22 imsl_constant(’ElectronMass ’) 23 print, ’The energy of 1 electron volt, eV [J]: ’, $ 1 help , imsl_binomialcoef(1000, 20) 24 imsl_constant(’ElectronVolt ’) 2 help , imsl_binomialcoef(1000, 20, /double) 25 print , ’Euler −Mascheroni (gamma) constant [1]: ’, $ 26 imsl_constant(’Euler ’) FLOAT = inf 27 p r i n t , ’ −||− ’ , $ DOUBLE = 3.3948281e+41 28 imsl_constant ( ’Gamma’ ) 29 print, ’Molar charge of 1 Faraday [C/mole]: ’, $ 30 imsl_constant(’Faraday ’) implementation details: this routine is a wrapper to the GSL’s gsl_sf_choose() function 31 print , ’Electromagnetic fine structure constant [1]:’, $ [2] 32 imsl_constant(’FineStructure ’) 33 print, ’The molar gas constant [J/mole/K]: ’, $ disclaimer: the name of this GDL routine includes the IMSL_ prefix for compatibility with 34 imsl_constant(’Gas’) IDL, it has no ... 35 print , ’The gravitational constant [N∗m2/kg2]: ’,$ 36 imsl_constant(’Gravity ’) IMSL_CONSTANT() function 37 print, "Planck’s constant divided by 2 pi [J∗ s ] : " , $ 38 imsl_constant(’Hbar’) positional arguments: 2 39 print, ’The standard gas volume [m3 / mole]: ’, $ keywords: DOUBLE 40 imsl_constant(’PerfectGasVolume ’) 41 print,’Pi[1]: ’,$ 42 imsl_constant(’Pi’) 1 print, ’Unified atomic mass, amu. [kg]: ’, $ 43 print , "Planck’s constant [J∗ s ] : " , $ 2 imsl_constant(’amu’) 44 imsl_constant(’Planck ’) 3 print, ’Pressure of 1 standard atmosphere [Pa]: ’, $ 45 print, ’Massoftheproton[kg]: ’,$ 4 imsl_constant(’atm’) 46 imsl_constant(’ProtonMass ’) 5 p r i n t , ’ −||− ’ , $ 47 print, "Rydberg’s constant [1/m]: ",$ 6 imsl_constant(’StandardPressure ’) 48 imsl_constant(’Rydberg ’) 7 print, ’Astronomicalunit[m]: ’,$ 49 print , ’Standard gravitational acc. on Earth [m/s2]:’, $ 8 imsl_constant(’AU’) 50 imsl_constant(’StandardGravity ’) 9 print, "Avogadro’s number [1/mole]: ", $ 51 print , ’Stefan −Boltzmann radiation const. [W/K4/m2]:’ , $ 10 imsl_constant(’Avogadro ’) 52 imsl_constant(’StefanBoltzman ’) 11 print, ’Boltzmann constant [J/K]: ’,$ 53 print, ’Triple point temperature for water [K]: ’, $ 12 imsl_constant(’Boltzman ’) 54 imsl_constant(’WaterTriple ’) 13 print, ’Speed of light in vacuum [m/s]: ’, $ 14 imsl_constant(’C’) 15 p r i n t , ’ −||− ’ , $ Unified atomic mass, amu. [kg]: 1.66054e−27 16 imsl_constant(’Speedlight ’) Pressure of 1 standard atmosphere [Pa]: 101325. 17 print, ’Base of the natural logarithm [1]: ’, $ −||− 101325. 18 imsl_constant(’E’) Astronomical unit [m]: 1.49598e+11 19 print,DRAFT ’Chargeof the electron [C]: ’,$ Avogadro’s number [1/mole]: 6.02214e+23 IMSL_ERF() function 53

Boltzmann constant [J/K]: 1.38065e−23 Speed of light in vacuum [m/s]: 2.99792e+08 1 c = [ −1 ,2 ,3 , −4] −||− 2.99792e+08 2 x = −1 + findgen(100) / 40 Base of the natural logarithm [1]: 2.71828 3 device , /color , /decomposed Chargeof the electron [C]: 1.60218e−19 4 plot, x, c[0] + c[1] ∗ x + c [ 2 ] ∗ x^2 + c [ 3 ] ∗ x ^3 , $ Massofthe electron [kg]: 9.10938e−31 5 xtitle=’X’, ytitle=’Y’, thick=3 The energy of 1 electron volt, eV [J]: 1.60218e−19 6 oplot , x, replicate(0,n_elements(x)), color=’ff0000 ’x Euler −Mascheroni (gamma) constant [1]: 0.57722 7 f o r e a c h z , imsl_zeropoly(c) do $ −||− 0.57722 8 plots , z, 0., psym=6, thick=3, color=’0000ff ’x Molar charge of 1 Faraday [C/mole]: 96485.3 Electromagnetic fine structure constant [1]: 0.00730 The molar gas constant [J/mole/K]: 8.31447 The gravitational constant [N∗m2/kg2]: 6.67300e−11 Planck’s constant divided by 2 pi [J∗ s]: 1.05457e−34 The standard gas volume [m3/ mole]: 0.02271 Pi[1]: 3.14159 Planck’s constant [J∗ s]: 6.62607e−34 Massoftheproton[kg]: 1.67262e−27 Rydberg’s constant [1/m]: 1.09737e+07 Standard gravitational acc. on Earth [m/s2]: 9.80665 Stefan −Boltzmann radiation const. [W/K4/m2]: 5.67040e−08 Triple point temperature for water [K]: 273.160 implementation details: this routine uses the GSL’s constants catalogue [2], the unit con- version is implemented using the UDUNITS-2 library disclaimer: the name of this GDL routine includes the IMSL_ prefix for compatibility with IDL, it has no ...

IMSL_ERF() function positional arguments: 1 keywords: DOUBLE, INVERSE

implementation details: this routine is a wrapper to the GSL’s gsl_poly_complex_solve() IMSL_ZEROPOLY() function function [2] positional arguments: 1 disclaimer: the name of this GDL routine includes the IMSL_ prefix for compatibility with keywords: COMPANION, DOUBLE, JENKINS_TRAUB DRAFTIDL, it has no ... 54 Chapter 15. Alphabetical list of library routines

IMSL_ZEROSYS() function JOURNAL procedure positional arguments: 2 positional arguments: 1 keywords: DOUBLE, ERR_REL, FNORM, ITMAX, JACOBIAN, XGUESS keywords: none

INDGEN() function KEYWORD_SET() function positional arguments: 8 positional arguments: 1 keywords: BYTE, COMPLEX, DCOMPLEX, DOUBLE, FLOAT, L64, LONG, STRING, keywords: none TYPE, UINT, UL64, ULONG

KURTOSIS() function INTARR() function positional arguments: 1 positional arguments: 8 keywords: DOUBLE, NAN keywords: NOZERO

INTERPOL() function L64INDGEN() function positional arguments: 8 positional arguments: 3 keywords: none keywords: LSQUADRATIC, QUADRATIC, SPLINE

INTERPOLATE() function LAGUERRE() function positional arguments: 4 positional arguments: 3 keywords: CUBIC, GRID, MISSING keywords: COEFFICIENTS, DOUBLE

INVERT() function LAST_ITEM() function positional arguments: 2 positional arguments: 1 keywords: DOUBLE keywords: none

ISHFT() function LA_TRIRED procedure positional arguments: 2 positional arguments: 3 keywords:DRAFT_EXTRA keywords: DOUBLE, UPPER LEGENDRE() function 55

LEGENDRE() function LOADCT procedure positional arguments: 3 keywords: DOUBLE positional arguments: 1 keywords: BOTTOM, FILE, GET_NAMES, NCOLORS, SILENT LINDGEN() function positional arguments: 8 Loads a colour table that defines the RGB values corresponding to given colour indices (used keywords: none when a plotting terminal is not set to the decomposed mode). The first argument may be used to chose from one of the 41 predefined colour tables, see example below for a graphical list of the colour predefined tables. LINKIMAGE procedure positional arguments: 4 keywords: none 1 $ cat listct.pro 2 l i s t c t see also: CALL_EXTERNAL()

LL_ARC_DISTANCE() function positional arguments: 3 pro l i s t c t keywords: DEGREES !X . STYLE=5 !Y . STYLE=5 Snyder [eqs. 5-5 and 5-6 in5] !P.MULTI=[0,3,14] !X . MARGIN=[10 ,0] !Y . MARGIN=[1 ,0] LMGR() function device , /color for i=0, 40 do begin positional arguments: none l o a d c t, i, /silent keywords: CLIENTSERVER, DEMO, EMBEDDED, EXPIRE_DATE, FORCE_DEMO, contour , [[indgen(255)],[indgen(255)]], nlevels=256, /fill INSTALL_NUM, LMHOSTID, RUNTIME, SITE_NOTICE, STUDENT, TRIAL, xyouts , −77, .5, strmid(i, 2) VM e n d f o r end % Compiled module: LISTCT. LNGAMMA() function % Compiled module: LOADCT. positional arguments: 1 keywords:DRAFTDOUBLE 56 Chapter 15. Alphabetical list of library routines

1 1 : BLUE−RED 1 2 : 16 LEVEL 1 3 : RAINBOW 1 4 : STEPS 15: BOW SPECIAL 1 6 : Haze 1 7 : Blue − P a s t e l − Red 1 8 : P a s t e l s 19: Hue Sat Lightness 1 20: Hue Sat Lightness 2 21: Hue Sat Value 1 22: Hue Sat Value 2 2 3 : Purple −Red + Stripes 2 4 : Beach 2 5 : Mac S t y l e 2 6 : Eos A 2 7 : Eos B 28: Hardcandy 2 9 : Nature 3 0 : Ocean 31: Peppermint 3 2 : Plasma GET_NAMES keyword 3 3 : Blue−Red 3 4 : Rainbow When set to a variable, a list of colour table names (string array) is assigned to that variable. 35: Blue Waves

1 l o a d c t , get_names=names 3 6 : Volcano 2 for i=0, n_elements(names)−1 do $ 3 7 : Waves 3 print , i , names[i], format=’(%"%d: %s")’ 38: Rainbow18 39: Rainbow + white 40: Rainbow + black % Compiled module: LOADCT. 0 : B−WLINEAR 1 : BLUE/WHITE 2 : GRN−RED−BLU−WHT LOADCT_INTERNALGDL procedure 3 : RED TEMPERATURE 4 : BLUE/GREEN/RED/YELLOW positional arguments: 1 5 : STD GAMMA−II keywords: GET_NAMES 6 : PRISM 7 : RED−PURPLE 8 : GREEN/WHITE LINEAR LOCALE_GET() function 9 : GRN/WHT EXPONENTIAL 1 0 :DRAFT GREEN−PINK positional arguments: none LOGICAL_AND() function 57

keywords: none LONG() function

positional arguments: 10 keywords: none LOGICAL_AND() function positional arguments: 2 LONG64() function keywords: none positional arguments: 10 keywords: none multi-threading: this routine uses GDL thread pool if working on large array, see the...

LOGICAL_OR() function LUDC procedure positional arguments: 3 positional arguments: 2 keywords: none keywords: none multi-threading: this routine uses GDL thread pool if working on large array, see the... MACHAR() function

positional arguments: none LOGICAL_TRUE() function keywords: DOUBLE positional arguments: 1 keywords: none MAGICK_ADDNOISE procedure

positional arguments: 1 multi-threading: this routine uses GDL thread pool if working on large array, see the... keywords: GAUSSIANNOISE, IMPULSENOISE, LAPLACIANNOISE, MULTIPLICATIVE- GAUSSIANNOISE, NOISE, POISSONNOISE, UNIFORMNOISE LON64ARR() function MAGICK_CLOSE procedure positional arguments: 8 keywords: NOZERO positional arguments: 1 keywords: none

LONARR() function MAGICK_COLORMAPSIZE() function positional arguments: 8 positional arguments: 2 keywords:DRAFTNOZERO keywords: none 58 Chapter 15. Alphabetical list of library routines

MAGICK_COLUMNS() function MAGICK_MAGICK() function positional arguments: 1 positional arguments: 2 keywords: none keywords: none

MAGICK_CREATE() function MAGICK_MATTE procedure positional arguments: 3 keywords: none positional arguments: 1 keywords: none

MAGICK_DISPLAY procedure MAGICK_OPEN() function positional arguments: 1 keywords: none positional arguments: 1 keywords: none MAGICK_EXISTS() function positional arguments: none MAGICK_PING() function keywords: none positional arguments: 2 keywords: CHANNELS, DIMENSIONS, GAUSSIANNOISE, HAS_PALETTE, IM- MAGICK_FLIP procedure AGE_INDEX, IMPULSENOISE, INFO, LAPLACIANNOISE, MULTIPLICATIVEG- AUSSIANNOISE, NOISE, NUM_IMAGES, PIXEL_TYPE, POISSONNOISE, TYPE, positional arguments: 1 UNIFORMNOISE keywords: none

MAGICK_QUALITY procedure MAGICK_INDEXEDCOLOR() function positional arguments: 2 positional arguments: 1 keywords: none keywords: none

MAGICK_INTERLACE procedure MAGICK_QUANTIZE procedure positional arguments: 1 positional arguments: 2 keywords:DRAFTLINEINTERLACE, NOINTERLACE, PLANEINTERLACE keywords: DITHER, GRAYSCALE, TRUECOLOR, YUV MAGICK_READ() function 59

MAGICK_READ() function MAGICK_WRITEINDEXES procedure positional arguments: 1 positional arguments: 2 keywords: MAP, RGB, SUB_RECT keywords: none

multi-threading: this routine uses GDL thread pool if working on large array, see the... MAGICK_READCOLORMAPRGB procedure positional arguments: 4 MAKE_ARRAY() function keywords: none positional arguments: 8 keywords: BYTE, COMPLEX, DCOMPLEX, DIMENSION, DOUBLE, FLOAT, INDEX, MAGICK_READINDEXES() function INTEGER, L64, LONG, NOZERO, OBJ, PTR, SIZE, STRING, TYPE, UINT, UL64, ULONG, VALUE positional arguments: 1 keywords: none MAP_CLIP_SET procedure

MAGICK_ROWS() function positional arguments: none keywords: CLIP_PLANE, CLIP_UV, RESET, SPLIT, TRANSFORM positional arguments: 1 keywords: none MAP_CONTINENTS procedure

MAGICK_WRITE procedure positional arguments: none keywords: COLOR, COUNTRIES, FILL_CONTINENTS, HIRES, RIVERS positional arguments: 2 Wessel and Smith [7] keywords: RGB

MAP_PROJ_FORWARD() function MAGICK_WRITECOLORTABLE procedure positional arguments: 3 positional arguments: 4 keywords: CONNECTIVITY, FILL, MAP_STRUCTURE, POLYGONS, POLYLINES, keywords: none RADIANS

MAGICK_WRITEFILE procedure MAP_PROJ_INVERSE() function positional arguments: 3 positional arguments: 3 keywords:DRAFTnone keywords: RADIANS 60 Chapter 15. Alphabetical list of library routines

MATRIX_MULTIPLY() function MIN() function positional arguments: 2 positional arguments: 2 keywords: ATRANSPOSE, BTRANSPOSE keywords: DIMENSION, MAX, NAN, SUBSCRIPT_MAX

MAX() function MOMENT() function positional arguments: 2 positional arguments: 1 keywords: DIMENSION, MIN, NAN, SUBSCRIPT_MIN keywords: DOUBLE, MAXMOMENT, MDEV, NAN, SDEV

MEAN() function NCDF_ATTCOPY() function positional arguments: 1 positional arguments: 5 keywords: DOUBLE, NAN keywords: IN_GLOBAL, OUT_GLOBAL

MEANABSDEV() function NCDF_ATTDEL procedure positional arguments: 1 positional arguments: 3 keywords: DOUBLE, NAN keywords: GLOBAL

MEDIAN() function NCDF_ATTGET procedure positional arguments: 2 positional arguments: 4 keywords: DIMENSION, DOUBLE, EVEN keywords: GLOBAL

MEMORY() function NCDF_ATTINQ() function positional arguments: 1 keywords: CURRENT, HIGHWATER, L64, NUM_ALLOC, NUM_FREE, STRUCTURE positional arguments: 3 keywords: GLOBAL

MESSAGE procedure NCDF_ATTNAME() function positional arguments: 1 keywords: CONTINUE, INFORMATIONAL, IOERROR, NONAME, NOPREFIX, NO- positional arguments: 3 PRINTDRAFT, RESET, TRACEBACK keywords: GLOBAL NCDF_ATTPUT procedure 61

NCDF_ATTPUT procedure NCDF_DIMINQ procedure positional arguments: 4 positional arguments: 4 keywords: BYTE, CHAR, DOUBLE, FLOAT, GLOBAL, LENGTH, LONG, SHORT keywords: none

NCDF_ATTRENAME procedure NCDF_DIMRENAME procedure positional arguments: 4 positional arguments: 3 keywords: GLOBAL keywords: none

NCDF_CLOSE procedure NCDF_EXISTS() function positional arguments: 1 positional arguments: none keywords: none keywords: none

1 print , ’GDL compiled with netCDF support: ’ $ NCDF_CONTROL procedure 2 + (ncdf_exists() ? ’yes’ : ’no’) positional arguments: 1 keywords: ABORT, ENDEF, FILL, NOFILL, NOVERBOSE, OLDFILL, REDEF, SYNC, GDL compiled with netCDF support: yes VERBOSE

NCDF_CREATE() function NCDF_INQUIRE() function positional arguments: 1 positional arguments: 1 keywords: none keywords: CLOBBER, NOCLOBBER

NCDF_DIMDEF() function NCDF_OPEN() function positional arguments: 3 positional arguments: 1 keywords: UNLIMITED keywords: NOWRITE, WRITE

NCDF_DIMID() function NCDF_VARDEF() function positional arguments: 2 positional arguments: 3 keywords:DRAFTnone keywords: BYTE, CHAR, DOUBLE, FLOAT, LONG, SHORT 62 Chapter 15. Alphabetical list of library routines

NCDF_VARGET procedure NEWTON() function positional arguments: 3 positional arguments: 2 keywords: COUNT, OFFSET, STRIDE keywords: DOUBLE, HYBRID, ITMAX, TOLF, TOLX

Galassi et al. [2] NCDF_VARGET1 procedure NORM() function positional arguments: 3 keywords: OFFSET positional arguments: 1 keywords: DOUBLE

NCDF_VARID() function N_ELEMENTS() function positional arguments: 2 keywords: none positional arguments: 1 keywords: none

NCDF_VARINQ() function N_PARAMS() function positional arguments: 2 keywords: none positional arguments: 1 keywords: none

NCDF_VARPUT procedure N_TAGS() function positional arguments: 3 keywords: COUNT, OFFSET, STRIDE positional arguments: 1 keywords: DATA_LENGTH, LENGTH NCDF_CONTROL with SYNC to force...

NCDF_VARRENAME procedure OBJARR() function positional arguments: 3 positional arguments: 8 keywords:DRAFTnone keywords: NOZERO OBJ_CLASS() function 63

OBJ_CLASS() function beer has 1 direct superclass[es]: ALCOHOLIC_DRINK

positional arguments: 1 keywords: COUNT, SUPERCLASS A list of all known classes is returned if called without any argument:

1 c l a s s e s = obj_class() Returns the name of the class of an object passed as the first argument. 2 help, classes 3 print , classes SUPERCLASS keyword

Returns instead an array of all direct superclasses of the object passed as the first argument. CLASSES STRING =Array[23] In this case the first argument may be a string defining the object name. !PLT !GNUDATALANGUAGE ! AXIS ! VERSION !MOUSE !ERROR_STATE !VALUES !MAP !CPU !WARN IDL_SIZE FSTAT64 FSTAT FILE_INFO IDL_MEMORY IDL_MEMORY64 MACHAR DMACHAR WIDGET_BUTTON WIDGET_DROPLIST WIDGET_TEXT WIDGET_VERSION ! DEVICE COUNT keyword

Allows to pass a reference to a variable into which the number of direct superclasses will be stored. OBJ_DESTROY procedure

1 $ t a i l ∗ __define.pro positional arguments: any number 2 bottle = obj_new(’beer ’) keywords: _REF_EXTRA 3 print, ’bottle is a[n] ’, obj_class(bottle) 4 s p r = obj_class(’beer’, /superclass , count=cnt) 5 print, ’beer has ’, strtrim(cnt,2) , ’ direct superclass[es]: ’, strjoin(spr, ’,’) OBJ_ISA() function ==> alcoholic_drink__define .pro <== pro alcoholic_drink__define positional arguments: 2 struct = {alcoholic_drink , proof : 0, inherits drink} keywords: none end

==> beer__define .pro <== pro beer__define OBJ_NEW() function struct = {beer, inherits alcoholic_drink} end positional arguments: any number keywords: _REF_EXTRA ==> drink__define .pro <== pro drink__define Beware that values of object fields may only be initialised in the constructor, and not while struct = {drink, color : 0} defining the object structure, i.e.: end 1 $ cat test__define.pro % Compiled module : BEER__DEFINE . 2 a = obj_new(’test ’) % Compiled module : ALCOHOLIC_DRINK__DEFINE . 3 a−>printXY % Compiled module : DRINK__DEFINE . bottleDRAFT is a[n] BEER 64 Chapter 15. Alphabetical list of library routines

4 s = ’ ’ pro test ::printXY 5 readu , u , s print, self.x, self.y 6 f r e e _ l u n , u end 7 p r i n t , s function test:: init 8 $ rm file.txt.gz s e l f . x = 10 r e t u r n , 1 end pro test__define GDL r o c k s ! struct ={test, x : 5, y : 5} end % Compiled module : TEST__DEFINE . 10 0 OPENU procedure

OBJ_VALID() function positional arguments: 3 keywords: APPEND, BINARY, BLOCK, BUFSIZE, COMPRESS, DELETE, ERROR, positional arguments: 1 F77_UNFORMATTED, GET_LUN, MORE, NOAUTOMODE, STDIO, STREAM, keywords: CAST, COUNT SWAP_ENDIAN, SWAP_IF_BIG_ENDIAN, SWAP_IF_LITTLE_ENDIAN, VAX_FLOAT, WIDTH, XDR

ON_ERROR procedure

positional arguments: 1 OPENW procedure keywords: none

positional arguments: 3 keywords: APPEND, BINARY, BLOCK, BUFSIZE, COMPRESS, DELETE, ERROR, OPENR procedure F77_UNFORMATTED, GET_LUN, MORE, NOAUTOMODE, STDIO, STREAM, SWAP_ENDIAN, SWAP_IF_BIG_ENDIAN, SWAP_IF_LITTLE_ENDIAN, positional arguments: 3 VAX_FLOAT, WIDTH, XDR keywords: APPEND, BINARY, BLOCK, BUFSIZE, COMPRESS, DELETE, ERROR, F77_UNFORMATTED, GET_LUN, MORE, NOAUTOMODE, STDIO, STREAM, SWAP_ENDIAN, SWAP_IF_BIG_ENDIAN, SWAP_IF_LITTLE_ENDIAN, VAX_FLOAT, WIDTH, XDR OPLOT procedure COMPRESS keyword positional arguments: 2

1 $ echo "GDL rocks!" > file.txt keywords: CLIP, COLOR, LINESTYLE, MAX_VALUE, MIN_VALUE, NOCLIP, NSUM, 2 $ g z i p −f f i l e . t x t POLAR, PSYM, SYMSIZE, T3D, THICK 3 openr,DRAFT u, ’file.txt.gz’, /get_lun, /compress PARSE_URL() function 65

PARSE_URL() function PLOTERR procedure

positional arguments: 1 positional arguments: 4 keywords: none keywords: BAR_COLOR, HAT, HELP, LENGTH_OF_HAT, PSYM, TEST, TYPE, XLOG, XRANGE, YLOG, YRANGE, _EXTRA Returns a structure describing components of the URL passed as an argument, e.g.:

1 help , parse_url(’http://root:[email protected]:666/?hack’) , /stru PLOTS procedure

positional arguments: 3 ∗∗ Structure , 7 tags , data length=56: keywords: CLIP, COLOR, CONTINUE, DATA, DEVICE, LINESTYLE, NOCLIP, NOR- SCHEME STRING ’http’ MAL, PSYM, SYMSIZE, T3D, THICK USERNAME STRING ’ root ’ PASSWORD STRING ’ qwerty ’ HOST STRING ’kgb.ru’ PORT STRING ’666’ PM procedure PATH STRING ’/’ QUERY STRING ’hack’ positional arguments: any number keywords: FORMAT, TITLE

1 arr = indgen(4,4) PATH_SEP() function 2 fmt = ’(4I3)’ 3 p r i n t , ’PM’ positional arguments: none 4 pm, arr, format=fmt keywords: PARENT_DIRECTORY, SEARCH_PATH, TEST 5 print , ’PRINT:’ 6 p r i n t , a r r , format=fmt

PLOT procedure PM 0 4 8 12 1 5 9 13 positional arguments: 2 2 6 10 14 keywords: BACKGROUND, CHARSIZE, CHARTHICK, CLIP, COLOR, DATA, DE- 3 7 11 15 VICE, LINESTYLE, MAX_VALUE, MIN_VALUE, NOCLIP, NODATA, NOERASE, PRINT: NORMAL, POSITION, PSYM, SUBTITLE, SYMSIZE, THICK, TICKLEN, TI- 0 1 2 3 TLE, XCHARSIZE, XLOG, XMARGIN, XMINOR, XRANGE, XSTYLE, XTHICK, 4 5 6 7 XTICKFORMAT, XTICKLEN, XTICKS, XTITLE, XTYPE, YCHARSIZE, YLOG, 8 9 10 11 YMARGIN, YMINOR, YNOZERO, YRANGE, YSTYLE, YTHICK, YTICKFORMAT, 12 13 14 15 YTICKLEN, YTICKS, YTITLE, YTYPE, ZCHARSIZE, ZGRIDSTYLE, ZMARGIN, ZMINOR, ZRANGE, ZSTYLE, ZTHICK, ZTICKFORMAT, ZTICKLEN, ZTICKS, ZTITLE, ZVALUE DRAFTsee also: ORDER keyword inTV, TVRD(), ... (TODO: section on # and ## ops.) 66 Chapter 15. Alphabetical list of library routines

POINT_LUN procedure PRIMES() function positional arguments: 2 positional arguments: 1 keywords: none keywords: none

POLY() function PRINT procedure positional arguments: 2 keywords: none positional arguments: any number keywords: AM_PM, DAYS_OF_WEEK, FORMAT, MONTH, STDIO_NON_FINITE

POLYFILL procedure PRINTD procedure positional arguments: 3 keywords: CLIP, COLOR, DATA, DEVICE, LINESTYLE, LINE_FILL, NOCLIP, NOR- positional arguments: none MAL, ORIENTATION, SPACING, THICK keywords: none

POLY_2D() function PRINTF procedure positional arguments: 6 keywords: CUBIC, MISSING positional arguments: any number keywords: AM_PM, DAYS_OF_WEEK, FORMAT, MONTH, STDIO_NON_FINITE

POLY_AREA() function PRODUCT() function positional arguments: 2 keywords: DOUBLE, SIGNED positional arguments: 2 keywords: CUMULATIVE, INTEGER, NAN, PRESERVE_TYPE POPD procedure multi-threading: this routine uses GDL thread pool if working on large array, see the... positional arguments: none keywords: none PTRARR() function

PREWITT() function positional arguments: 8 keywords: ALLOCATE_HEAP, NOZERO positional arguments: 1 keywords: HELP DRAFTmulti-threading: this routine uses GDL thread pool if working on large array, see the... PTR_FREE procedure 67

PTR_FREE procedure PYTHON() function

positional arguments: any number positional arguments: any number keywords: none keywords: ARGV, DEFAULTRETURNVALUE

PTR_FREE can also be used to deallocate a variable: Executes a python function whose name is specified using the second argument, the first argument defines the package (e.g. numpy). All other argument are passed as positional 1 a = 1 arguments to the function. 2 p t r _ f r e e , ptr_new(a, /no_copy)

3 help , a 1 p r i n t , python(’numpy’, ’arange’, 4.)

A UNDEFINED = 0.0000000 1.0000000 2.0000000 3.0000000

see also: PTR_NEW(), PTR_VALID() PY_PLOT procedure PTR_NEW() function positional arguments: 2 positional arguments: 1 keywords: GRID, TITLE, XLABEL, YLABEL keywords: ALLOCATE_HEAP, NO_COPY

PY_PRINT procedure PTR_VALID() function positional arguments: 1 positional arguments: 1 keywords: none keywords: CAST, COUNT

QUERY_BMP() function PUSHD procedure positional arguments: 2 positional arguments: 1 keywords: none keywords: none

1 $ wget −−quiet http://wikipedia.org/favicon.ico 2 $ convert favicon.ico favicon.bmp PYTHON procedure 3 ok = query_bmp(’favicon.bmp’, info) 4 if ok then help, info, /structure else print, ’query failed!’ positional arguments: any number 5 $ rm favicon. ∗ keywords:DRAFTARGV 68 Chapter 15. Alphabetical list of library routines

QUERY_PNG() function % Compiled module: QUERY_BMP. ∗∗ Structure , 7 tags , data length=32: positional arguments: 2 CHANNELS LONG 4 keywords: none DIMENSIONS LONG Array [ 2 ] HAS_PALETTE INT 0 IMAGE_INDEX LONG 0 QUERY_PPM() function NUM_IMAGES LONG 1 PIXEL_TYPE INT 1 positional arguments: 2 TYPE STRING ’BMP’ keywords: none

QUERY_DICOM() function QUERY_TIFF() function positional arguments: 2 positional arguments: 2 keywords: IMAGE_INDEX keywords: none

RADON() function QUERY_GIF() function positional arguments: 1 positional arguments: 2 keywords: BACKPROJECT, DOUBLE, DRHO, DX, DY, GRAY, LINEAR, NRHO, keywords: none NTHETA,NX,NY, RHO, RMIN, THETA, XMIN, YMIN

QUERY_IMAGE() function RANDOMN() function positional arguments: 2 positional arguments: 8 keywords: _REF_EXTRA keywords: BINOMIAL, DOUBLE, GAMMA, LONG, NORMAL, POISSON, UNIFORM

QUERY_JPEG() function RANDOMU() function positional arguments: 2 positional arguments: 8 keywords: none keywords: BINOMIAL, DOUBLE, GAMMA, LONG, NORMAL, POISSON, UNIFORM

QUERY_PICT() function READ procedure positional arguments: 2 positional arguments: any number keywords:DRAFTnone keywords: AM_PM, DAYS_OF_WEEK, FORMAT, MONTH, PROMPT READF procedure 69

READF procedure READ_JPEG procedure positional arguments: any number positional arguments: 3 keywords: AM_PM, DAYS_OF_WEEK, FORMAT, MONTH, PROMPT keywords: BUFFER, COLORS, DITHER, GRAYSCALE, ORDER, TRUE, TWO_PASS_QUANTIZE, UNIT READS procedure positional arguments: any number READ_PICT procedure keywords: AM_PM, DAYS_OF_WEEK, FORMAT, MONTH positional arguments: 5 keywords: none READU procedure positional arguments: any number keywords: TRANSFER_COUNT READ_PNG() function

positional arguments: 4 READ_ASCII() function keywords: ORDER, TRANSPARENT, VERBOSE positional arguments: 1 keywords: COMMENT_SYMBOL, COUNT, DATA_START, DELIMITER, HEADER, MISSING_VALUE, NUM_RECORDS, RECORD_START, TEMPLATE, VERBOSE READ_TIFF() function

positional arguments: 4 READ_BINARY() function keywords: CHANNELS, GEOTIFF, IMAGE_INDEX, INTERLEAVE, ORIENTATION, PLANARCONFIG, SUB_RECT, VERBOSE positional arguments: 1 keywords: DATA_DIMS, DATA_START, DATA_TYPE, ENDIAN, TEMPLATE READ_XWD() function READ_BMP() function positional arguments: 4 positional arguments: 4 keywords: none keywords: RGB

READ_DICOM() function REAL_PART() function positional arguments: 4 positional arguments: 1 keywords:DRAFTIMAGE_INDEX keywords: none 70 Chapter 15. Alphabetical list of library routines

REBIN() function RETALL procedure positional arguments: 9 positional arguments: none keywords: SAMPLE keywords: RETALL

RECALL_COMMANDS() function REVERSE() function positional arguments: none keywords: none positional arguments: 2 keywords: OVERWRITE REFORM() function positional arguments: 8 keywords: OVERWRITE RK4() function

positional arguments: 5 REPLICATE() function keywords: DOUBLE, ITER positional arguments: 9 keywords: none RK4JMG() function

REPLICATE_INPLACE procedure positional arguments: 5 keywords: DOUBLE positional arguments: 6 keywords: none

ROBERTS() function RESOLVE_ROUTINE procedure positional arguments: 1 positional arguments: 1 keywords: HELP keywords: none

RESTORE procedure ROTATE() function positional arguments: 1 keywords: DESCRIPTION, FILENAME, RELAXED_STRUCTURE_ASSIGNMENT, RE- positional arguments: 2 STORED_OBJECTSDRAFT, VERBOSE keywords: none ROUND() function 71

ROUND() function 1 $ cat library.pro positional arguments: 1 2 .compile library.pro keywords: L64 3 p r i n t , routine_names() multi-threading: this routine uses GDL thread pool if working on large array, see the... pro a_procedure print , ’Hello world!’ ROUTINE_INFO() function end function a_function positional arguments: 1 return , ’Hello world!’ keywords: DISABLED, ENABLED, FUNCTIONS, PARAMETERS, SYSTEM end % Compiled module : A_PROCEDURE. % Compiled module : A_FUNCTION . ROUTINE_NAMES() function $MAIN$ A_FUNCTION A_PROCEDURE positional arguments: any number keywords: ARG_NAME, FETCH, LEVEL, STORE, S_FUNCTIONS, S_PROCEDURES, ROUTINE_NAMES can be invoked in several other ways, which are detailed below together VARIABLES with keyword descriptions.

Examines variables and parameters of procedures and the call stack Using ROU- S_PROCEDURES keyword TINE_NAMES a subroutine can interrogate, and in some cases change, the values and names of variables and parameters in its calling routine, or at the $MAIN$ level. The lists of system procedures is returned, as a string array. The list does not cover procedures ROUTINE_NAMES uses a notion of the current "call level," which is the numerical stack written in GDL itself which are also part of GDL’s routine library (e.g. WRITE_PNG). depth of the currently executing routine. At each procedure or function call, the call level becomes one deeper, and upon each RETURN, the call level becomes one shallower. The 1 print , (routine_names(/s_pro))[0:5] call stack always begins at the $MAIN$ level. The current call stack can always be printed by executing HELP. AXIS BYTEORDER CALDAT CALL_METHOD CALL_PROCEDURE CATCH When specifying the call level to ROUTINE_NAMES, one can use one of two numbering systems, depending on whichever is most convenient. In the absolute numbering system, the $MAIN$ level starts at number 1, and becomes deeper with increasing numbers. In the relative numbering system, the current (deepest) call level is number 0, and becomes shal- S_FUNCTIONS keyword lower with more negative numbers. Hence, if the deepest level is N, then the correspondence is thus: The lists of system functions is returned, as a string array. The list does not cover functions VALUE MEANING written in GDL itself which are also part of GDL’s routine library (e.g. READ_PNG()). 1 or -N+1 $MAIN$ level 2 or -N+2 NEXT deeper level 1 help , routine_names(/s_functions) ...... N or 0 DEEPEST (currently executing) level STRING = Array[250] When called without any keyword ROUTINE_NAMES returns a string array containing a list ofDRAFT currently compiled functions and procedures, e.g.: 72 Chapter 15. Alphabetical list of library routines

LEVEL keyword 1 $ cat procedure.pro The call level of the calling routine is returned, e.g.: 2 str = ’Hello world!’ 3 arr = [’Hello’, ’world’, ’!’] 1 $ cat func.pro 4 i n t = 0 2 print , routine_names(/level), func() 5 p r o c e d u r e

function func pro procedure return , routine_names(/level) print , routine_names(variables=−1) end end % Compiled module: FUNC. % Compiled module: PROCEDURE. 1 2 STR ARR INT

ARG_NAME keyword FETCH keyword

The names of variables passed as positional arguments at call level specified with the The value of a variable which name is passed in the first argument (string) at call level spec- ARG_NAME keyword are returned, as a string array. Note that the arguments passed ified with the FETCH keyword is returned. If the value is undefined, then the assignment are the actual parameters, not strings containing their names. All of the arguments must be will cause an error. Therefore, the only safe way to retrieve a value is by using a variant of parameters that have been passed to the calling procedure. Variables that are unnamed at the following: the specified call level will return the empty string. 1 if n_elements(routine_names(’a’, fetch=0)) gt 0 $

1 $ cat procedure.pro 2 then value = routine_names(’a’, fetch=0) $ 2 a1 = 1 3 else message, ’a is not defined!’ 3 a2 = ’2 ’ 4 a3 = [ 3 b ] % $MAIN$: a is not defined! 5 procedure, a1, a2, a3 % Execution halted at: $MAIN$

pro procedure, arg0, arg1, arg2 print , routine_names(arg1, arg2, arg_name=0) STORE keyword print , routine_names(arg1, arg2, arg_name=−1) end The value specified with the second argument is stored into the variable which name is passed % Compiled module: PROCEDURE. in the first argument (string) at the call level specified with the STORE keyword. Note that ARG1 ARG2 there is no way to cause the named variable to become undefined. The value returned can A2 A3 be ignored.

1 a = 1 2 dummy = routine_names(’a’, 2, store=0) VARIABLES keyword 3 p r i n t , a

The names of variables at call level specified with the VARIABLES keyword are returned, as a stringDRAFT array, e.g.: 2 RSTRPOS() function 73

see also: ROUTINE_INFO(), ARG_PRESENT(), SCOPE_VARFETCH() SEM_LOCK() function disclaimer: Entry based on Craig Markwardt’s documentation for ROUTINE_NAMES: positional arguments: 1 Copyright (C) 2000, Craig Markwardt. This software is provided as is without any war- keywords: none ranty whatsoever. Permission to use, copy, modify, and distribute modified or unmodified copies is granted, provided this copyright and disclaimer are included unchanged. SEM_RELEASE procedure RSTRPOS() function positional arguments: 1 keywords: none positional arguments: 3 keywords: none SETENV procedure

positional arguments: 1 SAVE procedure keywords: none positional arguments: 30 keywords: ALL, APPEND, COMPATIBLE, DATA, ERRMSG, FILENAME, MTIMES, SET_PLOT procedure NAMES, NOCATCH, PASS_METHOD, QUIET, STATUS, TEST, USEUNIT, VARSTATUS, VERBOSE, XDR positional arguments: 1 keywords: COPY, INTERPOLATE

SCOPE_VARFETCH() function SHIFT() function positional arguments: 1 positional arguments: 9 keywords: LEVEL keywords: none

SEM_CREATE() function SHOWFONT procedure positional arguments: 1 positional arguments: 2 keywords: DESTROY_SEMAPHORE keywords: BASE, BEG, ENCAPSULATED, FIN, TT_FONT Displays a table of fonts for a give font number (first argument) in the current graphics terminal, e.g.:

SEM_DELETE procedure 1 showfont, 3, ’Simplex Roman’ positional arguments: 1 % Compiled module: SHOWFONT. keywords:DRAFTnone 74 Chapter 15. Alphabetical list of library routines

1 showfont, 4, ’Simplex Greek’ 1 showfont, 5, ’Duplex Roman’

% CompiledDRAFT module: SHOWFONT. % Compiled module: SHOWFONT. SHOWFONT procedure 75

1 showfont, 6, ’Complex Roman’ 1 showfont, 7, ’Complex Greek’

% CompiledDRAFT module: SHOWFONT. % Compiled module: SHOWFONT. 76 Chapter 15. Alphabetical list of library routines

1 showfont, 8, ’Complex Italic ’ 1 showfont, 9, ’Math and Special’

% CompiledDRAFT module: SHOWFONT. % Compiled module: SHOWFONT. SHOWFONT procedure 77

1 showfont, 11, ’Gothic English’ 1 showfont, 12, ’Simplex Script’

% CompiledDRAFT module: SHOWFONT. % Compiled module: SHOWFONT. 78 Chapter 15. Alphabetical list of library routines

1 showfont, 13, ’Complex Script ’ 1 showfont, 14, ’Gothic Italian ’

% CompiledDRAFT module: SHOWFONT. % Compiled module: SHOWFONT. SHOWFONT procedure 79

1 showfont, 15, ’Gothic German’ 1 showfont, 16, ’Cyrilic ’

% CompiledDRAFT module: SHOWFONT. % Compiled module: SHOWFONT. 80 Chapter 15. Alphabetical list of library routines

1 showfont, 17, ’Triplex Roman’ 1 showfont, 18, ’Triplex Italic ’

% CompiledDRAFT module: SHOWFONT. % Compiled module: SHOWFONT. SIN() function 81

SIN() function

positional arguments: 1 keywords: none

1 showfont, 20, ’Miscellaneous ’ multi-threading: this routine uses GDL thread pool if working on large array, see the...

SINDGEN() function

positional arguments: 8 keywords: none

% Compiled module: SHOWFONT. SINH() function

positional arguments: 1 DRAFTkeywords: none 82 Chapter 15. Alphabetical list of library routines

multi-threading: this routine uses GDL thread pool if working on large array, see the... SORT() function

positional arguments: 1 SIZE() function keywords: L64 positional arguments: 1 keywords: DIMENSIONS, FILE_LUN, L64, N_DIMENSIONS, N_ELEMENTS, STRUC- SPAWN procedure TURE, TNAME, TYPE positional arguments: 3 keywords: COUNT, EXIT_STATUS, NOSHELL, PID,SH, UNIT SKEWNESS() function positional arguments: 1 SPHER_HARM() function keywords: DOUBLE, NAN positional arguments: 4 keywords: DOUBLE SKIP_LUN procedure positional arguments: 2 SPL_INIT() function keywords: EOF, HELP, LINES, TEST, TRANSFER_COUNT positional arguments: 2 keywords: DOUBLE, HELP, YP0, YPN_1 SMOOTH() function positional arguments: 2 SPL_INIT_OLD() function keywords: EDGE_TRUNCATE, HELP, NAN, TEST, VERBOSE positional arguments: 2 keywords: DEBUG, DOUBLE, YP0, YPN_1 SOBEL() function positional arguments: 1 SPL_INTERP() function keywords: HELP positional arguments: 4 keywords: DOUBLE, HELP SOCKET procedure positional arguments: 3 SPL_INTERP_OLD() function keywords: CONNECT_TIMEOUT, ERROR, GET_LUN, READ_TIMEOUT, STDIO, SWAP_ENDIAN, SWAP_IF_BIG_ENDIAN, SWAP_IF_LITTLE_ENDIAN, WIDTH, positional arguments: 4 WRITE_TIMEOUTDRAFTkeywords: DOUBLE SQRT() function 83

SQRT() function STREGEX() function positional arguments: 1 positional arguments: 2 keywords: none keywords: BOOLEAN, EXTRACT, FOLD_CASE, LENGTH, SUBEXPR multi-threading: this routine uses GDL thread pool if working on large array, see the... STRING() function

STDDEV() function positional arguments: any number keywords: AM_PM, DAYS_OF_WEEK, FORMAT, MONTH, PRINT positional arguments: 1 keywords: DOUBLE, NAN PRINT keyword

1 help , string(55b) STOP procedure 2 help , string(55b, /print) 3 help , string(findgen(2,2)) positional arguments: any number 4 help , string(findgen(2,2), /print) keywords: AM_PM, DAYS_OF_WEEK, FORMAT, MONTH, STDIO_NON_FINITE 5 help , string(findgen(2), /print)

STRING = ’7’ STRARR() function STRING = ’ 55’ STRING = Array[2, 2] positional arguments: 8 STRING = Array[2] keywords: NOZERO STRING = ’ 0.00000 1.00000’

STRCMP() function STRJOIN() function positional arguments: 3 positional arguments: 2 keywords: FOLD_CASE keywords: SINGLE

1 arr = [’a’, ’b’, ’c’] STRCOMPRESS() function 2 s t r = strjoin(arr) 3 help, arr, str positional arguments: 1 keywords: REMOVE_ALL ARR STRING =Array[3] STR STRING =’abc’ multi-threading:DRAFTthis routine uses GDL thread pool if working on large array, see the... 84 Chapter 15. Alphabetical list of library routines

STRMID() function 1 arr = [[’a’, ’b’, ’c’], [’d’, ’e’, ’f’]] 2 s t r = strjoin(arr, ’ − ’) positional arguments: 3 3 help, arr, str keywords: REVERSE_OFFSET 4 print , str[0] 5 print , str[1] multi-threading: this routine uses GDL thread pool if working on large array, see the... ARR STRING =Array[3,2] STR STRING =Array[2] a−b−c STRPOS() function d−e−f positional arguments: 3 keywords: REVERSE_OFFSET, REVERSE_SEARCH SINGLE keyword multi-threading: this routine uses GDL thread pool if working on large array, see the... 1 arr = [[’a’, ’b’, ’c’], [’d’, ’e’, ’f’]] 2 str = strjoin(arr, ’ − ’,/single) 3 help, arr, str STRPUT procedure

ARR STRING =Array[3,2] positional arguments: 3 STR STRING =’a−b−c−d−e−f ’ keywords: none

multi-threading: this routine uses GDL thread pool if working on large array, see the... STRLEN() function

positional arguments: 1 STRSPLIT() function keywords: none positional arguments: 2 multi-threading: this routine uses GDL thread pool if working on large array, see the... keywords: COUNT, ESCAPE, EXTRACT, FOLD_CASE, HELP, LENGTH, PRE- SERVE_NULL, REGEX, TEST

STRLOWCASE() function

positional arguments: 1 STRTOK() function keywords: none positional arguments: 2 keywords: ESCAPE, EXTRACT, LENGTH, PRESERVE_NULL, REGEX multi-threading:DRAFTthis routine uses GDL thread pool if working on large array, see the... STRTRIM() function 85

STRTRIM() function YTITLE, YTYPE, ZCHARSIZE, ZGRIDSTYLE, ZLOG, ZMARGIN, ZMINOR, ZRANGE, ZSTYLE, ZTHICK, ZTICKFORMAT, ZTICKINTERVAL, ZTICKLAY- positional arguments: 2 OUT, ZTICKLEN, ZTICKNAME, ZTICKS, ZTICKUNITS, ZTICKV, ZTICK_GET, keywords: none ZTITLE, ZTYPE, ZVALUE multi-threading: this routine uses GDL thread pool if working on large array, see the... AX keyword STRUCT_ASSIGN procedure positional arguments: 2 1 !P.MULTI = [0,3,3] keywords: NOZERO, VERBOSE 2 d = d i s t (10) 3 f o r ax=0, 90, 11 do $ 4 s u r f a c e , d , ax=ax, title=’ax=’ + strtrim(ax,2) STRUPCASE() function positional arguments: 1 % Compiled module: DIST. keywords: none multi-threading: this routine uses GDL thread pool if working on large array, see the...

STR_SEP() function positional arguments: 2 keywords: ESC, HELP, REMOVE_ALL, TEST, TRIM

. . . STR_SEP separates the string on any of the characters of the 2nd string. . . .

SURFACE procedure positional arguments: 3 keywords: AX,AZ, BACKGROUND, CHARSIZE, CHARTHICK, CLIP, COLOR, DATA, DEVICE, FONT, LINESTYLE, MAX_VALUE, MIN_VALUE, NO- CLIP, NODATA, NOERASE, NORMAL, POSITION, SUBTITLE, T3D, THICK, TICKLEN, TITLE, XCHARSIZE, XGRIDSTYLE, XLOG, XMARGIN, XMINOR, XRANGE, XSTYLE, XTHICK, XTICKFORMAT, XTICKINTERVAL, XTICKLAY- OUT, XTICKLEN, XTICKNAME, XTICKS, XTICKUNITS, XTICKV, XTICK_GET, XTITLE, XTYPE, YCHARSIZE, YGRIDSTYLE, YLOG, YMARGIN, YMINOR, YRANGE, YSTYLE, YTHICK, YTICKFORMAT, YTICKINTERVAL, YTICKLAY- OUTDRAFT, YTICKLEN, YTICKNAME, YTICKS, YTICKUNITS, YTICKV, YTICK_GET, 86 Chapter 15. Alphabetical list of library routines

AZ keyword keywords: SWAP_IF_BIG_ENDIAN, SWAP_IF_LITTLE_ENDIAN

1 !P.MULTI = [0,3,3] 2 d = d i s t (10) SWAP_ENDIAN_INPLACE procedure 3 f o r az=0, 90, 11 do $ 4 s u r f a c e , d , az=az, title=’az=’ + strtrim(az,2) positional arguments: 1 keywords: SWAP_IF_BIG_ENDIAN, SWAP_IF_LITTLE_ENDIAN % Compiled module: DIST. SYSTIME() function

positional arguments: 2 keywords: JULIAN, SECONDS, UTC

TAG_NAMES() function

positional arguments: 1 keywords: STRUCTURE_NAME

TAN() function

positional arguments: 1 keywords: none

multi-threading: this routine uses GDL thread pool if working on large array, see the...

TANH() function

positional arguments: 1 SVDC procedure keywords: none

positional arguments: 4 multi-threading: this routine uses GDL thread pool if working on large array, see the... keywords: COLUMN, DOUBLE, ITMAX TEMPLATE procedure

SWAP_ENDIAN() function positional arguments: none keywords: none positionalDRAFT arguments: 1 TEMPLATE_BLANK procedure 87

TEMPLATE_BLANK procedure TRIGRID() function positional arguments: none positional arguments: 6 keywords: none keywords: MAP, MAX_VALUE, MISSING,NX,NY

TV procedure TEMPORARY() function positional arguments: 4 positional arguments: 1 keywords: CHANNEL, DEVICE, NORMAL, ORDER, TRUE, XSIZE, YSIZE keywords: none

TVLCT procedure

TETRIS procedure positional arguments: 4 keywords: GET, HLS, HSV positional arguments: none keywords: none TVRD() function

TOTAL() function positional arguments: 5 keywords: CHANNEL, ORDER, TRUE, WORDS positional arguments: 2 keywords: CUMULATIVE, DOUBLE, INTEGER, NAN, PRESERVE_TYPE TVSCL procedure multi-threading: this routine uses GDL thread pool if working on large array, see the... positional arguments: 3 keywords: NAN, _EXTRA

TRACE() function T_PDF() function positional arguments: 1 keywords: DOUBLE positional arguments: 2 keywords: none

TRANSPOSE() function UINDGEN() function positional arguments: 2 positional arguments: 8 keywords:DRAFTnone keywords: none 88 Chapter 15. Alphabetical list of library routines

UINT() function ULONG64() function positional arguments: 10 positional arguments: 10 keywords: none keywords: none

UINTARR() function UNIQ() function positional arguments: 8 positional arguments: 2 keywords: NOZERO keywords: none

UL64INDGEN() function VALUE_LOCATE() function positional arguments: 8 positional arguments: 2 keywords: none keywords: L64

ULINDGEN() function VARIANCE() function positional arguments: 8 positional arguments: 1 keywords: none keywords: DOUBLE, NAN

ULON64ARR() function VOIGT() function positional arguments: 8 positional arguments: 2 keywords: NOZERO keywords: DOUBLE, ITER

ULONARR() function WAIT procedure positional arguments: 8 positional arguments: 1 keywords: NOZERO keywords: none

ULONG() function WDELETE procedure positional arguments: 10 positional arguments: any number keywords:DRAFTnone keywords: none WHERE() function 89

WHERE() function WIDGET_CONTROL procedure positional arguments: 2 positional arguments: 1 keywords: COMPLEMENT, NCOMPLEMENT keywords: DESTROY, EVENT_PRO, FUNC_GET_VALUE, GET_UVALUE, GET_VALUE, MANAGED, MAP, NO_COPY, PRO_SET_VALUE, REAL- IZE, SENSITIVE, SET_BUTTON, SET_DROPLIST_SELECT, SET_UNAME, see also: ARRAY_INDICES() SET_UVALUE, SET_VALUE, XMANAGER_ACTIVE_COMMAND multi-threading: this routine uses GDL thread pool if working on large array, see the... WIDGET_DROPLIST() function

positional arguments: 1 WIDGET_BASE() function keywords: DYNAMIC_RESIZE, EVENT_FUNC, EVENT_PRO, FONT, FRAME, FUNC_GET_VALUE, GROUP_LEADER, KILL_NOTIFY, NOTIFY_REALIZE, NO_COPY, PRO_SET_VALUE, RESOURCE_NAME, SCR_XSIZE, SCR_YSIZE, positional arguments: 1 SENSITIVE, TAB_MODE, TITLE, TRACKING_EVENTS, UNAME, UNITS, keywords: ALIGN_BOTTOM, ALIGN_CENTER, ALIGN_LEFT, ALIGN_RIGHT, UVALUE, VALUE, XOFFSET, XSIZE, YOFFSET, YSIZE ALIGN_TOP, BASE_ALIGN_BOTTOM, BASE_ALIGN_CENTER, BASE_ALIGN_LEFT, BASE_ALIGN_RIGHT, BASE_ALIGN_TOP, COLUMN, CONTEXT_EVENTS, CONTEXT_MENU, DISPLAY_NAME, EVENT_FUNC, EVENT_PRO, EX- CLUSIVE, FLOATING, FRAME, FUNC_GET_VALUE, GRID_LAYOUT, WIDGET_EVENT() function GROUP_LEADER, KBRD_FOCUS_EVENTS, KILL_NOTIFY, MAP, MBAR, positional arguments: 1 MODAL, NONEXCLUSIVE, NOTIFY_REALIZE, NO_COPY, PRO_SET_VALUE, keywords: DESTROY, XMANAGER_BLOCK RESOURCE_NAME, RNAME_MBAR, ROW, SCROLL, SCR_XSIZE, SCR_YSIZE, SENSITIVE, SPACE, TITLE, TLB_FRAME_ATTR, TLB_ICONIFY_EVENTS, TLB_KILL_REQUEST_EVENTS, TLB_MOVE_EVENTS, TLB_SIZE_EVENTS, TOOLBAR, TRACKING_EVENTS, UNAME, UNITS, UVALUE, XOFFSET, XPAD, WIDGET_INFO() function XSIZE, X_SCROLL_SIZE, YOFFSET, YPAD, YSIZE, Y_SCROLL_SIZE positional arguments: 1 keywords: CHILD, MANAGED, MODAL, VALID, VERSION, XMANAGER_BLOCK

WIDGET_BUTTON() function WIDGET_LABEL() function positional arguments: 1 positional arguments: 1 keywords: ACCELERATOR, ALIGN_CENTER, ALIGN_LEFT, ALIGN_RIGHT, keywords: ALL_EVENTS, CONTEXT_EVENTS, EDITABLE, EVENT_FUNC, BITMAP, CHECKED_MENU, DYNAMIC_RESIZE, EVENT_FUNC, EVENT_PRO, EVENT_PRO, FONT, FRAME, FUNC_GET_VALUE, GROUP_LEADER, FONT, FRAME, FUNC_GET_VALUE, GROUP_LEADER, HELP, KILL_NOTIFY, IGNORE_ACCELERATORS, KBRD_FOCUS_EVENTS, KILL_NOTIFY, NO- MENU, NOTIFY_REALIZE, NO_COPY, NO_RELEASE, PRO_SET_VALUE, TIFY_REALIZE, NO_COPY, NO_NEWLINE, PRO_SET_VALUE, RE- PUSHBUTTON_EVENTS, SCR_XSIZE, SCR_YSIZE, SENSITIVE, SEPARATOR, SOURCE_NAME, SCROLL, SCR_XSIZE, SCR_YSIZE, SENSITIVE, TAB_MODE, TAB_MODE, TOOLTIP, TRACKING_EVENTS, UNAME, UNITS, UVALUE, TRACKING_EVENTS, UNAME, UNITS, UVALUE, VALUE, WRAP, XOFFSET, VALUEDRAFT, XOFFSET, XSIZE, X_BITMAP_EXTRA, YOFFSET, YSIZE XSIZE, YOFFSET, YSIZE 90 Chapter 15. Alphabetical list of library routines

WIDGET_TEXT() function WRITE_PICT procedure positional arguments: 1 positional arguments: 5 keywords: ALL_EVENTS, CONTEXT_EVENTS, EDITABLE, EVENT_FUNC, keywords: none EVENT_PRO, FONT, FRAME, FUNC_GET_VALUE, GROUP_LEADER, IGNORE_ACCELERATORS, KBRD_FOCUS_EVENTS, KILL_NOTIFY, NO- TIFY_REALIZE, NO_COPY, NO_NEWLINE, PRO_SET_VALUE, RE- WRITE_PNG procedure SOURCE_NAME, SCROLL, SCR_XSIZE, SCR_YSIZE, SENSITIVE, TAB_MODE, TRACKING_EVENTS, UNAME, UNITS, UVALUE, VALUE, WRAP, XOFFSET, positional arguments: 5 XSIZE, YOFFSET, YSIZE keywords: ORDER, TRANSPARENT, VERBOSE

WINDOW procedure WSET procedure positional arguments: 1 positional arguments: 1 keywords: COLORS, FREE, PIXMAP, RETAIN, TITLE, XPOS, XSIZE, YPOS, YSIZE keywords: none

WRITEU procedure WSHOW procedure positional arguments: any number positional arguments: 2 keywords: TRANSFER_COUNT keywords: none

WTN() function WRITE_BMP procedure positional arguments: 2 positional arguments: 5 keywords: COLUMN, DOUBLE, INVERSE, OVERWRITE keywords: FOUR_BIT, HEADER_DEFINE, IHDR, RGB

XYOUTS procedure WRITE_JPEG procedure positional arguments: 3 positional arguments: 2 keywords: ALIGNMENT, CHARSIZE, CHARTHICK, CLIP, COLOR, DATA, DEVICE, keywords:DRAFTORDER, PROGRESSIVE, QUALITY, TRUE, UNIT NOCLIP, NORMAL, ORIENTATION, WIDTH,Z Part II

Developer’s guide DRAFT Chapter 16

General remarks and coding guidelines

... such as the CERN C++ Coding Standard Specification [4] or other similar docu- ments. DRAFT Chapter 17

The library-routine API

TODO: extract it using Doxygen or some similar tool.

DRAFT Chapter 18

Extending the documentation

LATEX gdldoc.sty Natbib: DRAFT Chapter 19

Extending the testsuite (testsuite/README)

The list of GDL routines to be executed during the make-check run is _success_! (GDL exits normally in this case). Any GDL error causing defined in the testsuite/Makefile.am file. After adding a new item GDL to stop execution on an other-than-$MAIN$ level will bring the (filename) to the list, please rerun "automake" being in the root GDL interpreter prompt. folder of the source tree. CMake also uses the list in Makefile.am. The name of the file must match the name of the test routine, e.g. Each test routine is invoked using the GDL "-e" command-line option testsuite/test_dummy.pro for by the "try" shell script in the testsuite directory (and in an analogous manner for the case of CMake/CTest). "make" decides pro test_dummy on the status of a test basing on the exit code of this script: ... - "success" for exit code 0 end - "ignorable failure" for code 77 - "failure" for any other exit code, e.g. 1 GDL segfaults, assertion-exits, std::terminate() exits, etc. are The "try" script should, in principle, exit with the GDL exit code. handled as failures by make. Therefore, a failure of a GDL test should be indicated by e.g.: The "try" script always uses the gdl binary in the build tree - if ( ...true if test failed... ) begin not the one installed in the system. The "try" script also sets message, ’reason for the failure’, /continue appropriate env. variables so that the GDL-written library routines exit, status=1 are taken from the source tree as well (e.g. src/pro/mean.pro). endif Regardless if the autotools or the CMake/CTest configuration An ignorable failure can be indicated by e.g.: mechanism, the testsuite run is invoked by "make check" (not the default CMakes’s "make test"). if (!XXX_exists()) then begin message, ’GDL was built w/o support for XXX - skipping’, /conti exit, status=77 endif

Any GDL error (e.g. parser error or library-routine-triggered error) causingDRAFT GDL to return to the $MAIN$ level will cause make to assume Chapter 20

A short overview of how GDL works internally

Programs (*.pro files) or command line input is parsed (GDLLexer.cpp, GDLParser.cpp generated with ANTLR from gdlc.g). These results in an abstract syntax tree (AST) consisting of ’DNode’ (dnode.hpp). This systax tree is further manipulated (com- piled) with a tree parser (GDLTreeParser.cpp generated with ANTLR from gdlc.tree.g, dcompiler.hpp). Here the AST is splitted into the different functions/procedures and the DNode(s) are annotated with further information and converted to ProgNode(s). Then these compiled (ProgNode) ASTs are interpreted (GDLInterpreter.cpp generated with ANTLR from gdlc.i.g, dinterpreter.cpp). DRAFT Chapter 21

How to make use of OpenMP in GDL

DRAFT Chapter 22

Notes for packagers

Optional features of PLplot and ImageMagick

The HDF4-netCDF conflict DRAFT Part III

Indices DRAFT DRAFT Subject Index

.COMPILE, 17 ALIGN_LEFT keyword AM_PM keyword .CONTINUE, 17 in WIDGET_BASE() function, 89 in PRINT procedure, 66 .STEP, 17 in WIDGET_BUTTON() function, 89 in PRINTF procedure, 66 $MAIN$, 71 ALIGN_RIGHT keyword in READ procedure, 68 _EXTRA, 14 in WIDGET_BASE() function, 89 in READF procedure, 69 _REF_EXTRA, 14 in WIDGET_BUTTON() function, 89 in READS procedure, 69 _STRICT_EXTRA, 14 ALIGN_TOP keyword in STOP procedure, 83 _EXTRA keyword in WIDGET_BASE() function, 89 in STRING() function, 83 in ISHFT() function, 54 ALIGNMENT keyword APPEND keyword in PLOTERR procedure, 65 in XYOUTS procedure, 90 in OPENR procedure, 64 in TVSCL procedure, 87 ALL_DIRS keyword in OPENU procedure, 64 _REF_EXTRA keyword in EXPAND_PATH() function, 41 in OPENW procedure, 64 in CALL_FUNCTION() function, 36 ALL_EVENTS keyword in SAVE procedure, 73 in CALL_METHOD procedure, 36 in WIDGET_LABEL() function, 89 APPLEMAN procedure, 32 in CALL_METHOD() function, 36 in WIDGET_TEXT() function, 90 ARG_NAME keyword in CALL_PROCEDURE procedure, 36 ALL_GDL keyword in ROUTINE_NAMES() function, 71 in OBJ_DESTROY procedure, 63 in CALL_EXTERNAL() function, 34 ARG_PRESENT() function, 14, 32, 73 in OBJ_NEW() function, 63 ALL_VALUE keyword ARGV keyword in QUERY_IMAGE() function, 68 in CALL_EXTERNAL() function, 34 in PYTHON procedure, 67 ALL keyword in PYTHON() function, 67 in CLOSE procedure, 37 ARRAY_EQUAL() function, 15, 32 abbreviated keyword names, 14 in HDF_OPEN() function, 48 ARRAY_INDICES() function, 15, 32, 50, 89 ABORT keyword in SAVE procedure, 73 ARRAY keyword in NCDF_CONTROL procedure, 61 ALLOCATE_HEAP keyword in EXPAND_PATH() function, 41 ABS() function, 18, 32 in PTR_NEW() function, 67 ASIN() function, 18, 33 ACCELERATOR keyword in PTRARR() function, 66 ASSOC() function, 12, 33 in WIDGET_BUTTON() function, 89 ALLOW_NONEXISTENT keyword ATAN() function, 12, 18, 32, 33 ACOS() function, 18, 32 in FILE_DELETE procedure, 42 ATRANSPOSE keyword ALIGN_BOTTOM keyword ALLOW_SAME keyword in MATRIX_MULTIPLY() function, 60 in WIDGET_BASE() function, 89 in FILE_COPY procedure, 42 AX keyword ALIGN_CENTER keyword ALOG() function, 18, 32 in SURFACE procedure, 85 in WIDGET_BASE() function, 89 ALOG10() function, 18, 32 AXIS procedure, 33 DRAFTin WIDGET_BUTTON() function, 89 102 Subject Index

AXISprocedure, 22 BIN2 keyword in OPENR procedure, 64 AZ keyword in HIST_2D() function, 50 in OPENU procedure, 64 in SURFACE procedure, 85 BINARY keyword in OPENW procedure, 64 in OPENR procedure, 64 BYTARR() function, 13, 15, 33 in OPENU procedure, 64 BYTE() function, 12, 13, 34 B_VALUE keyword in OPENW procedure, 64 BYTE keyword in CALL_EXTERNAL() function, 34 BINDGEN() function, 13, 15, 33 in HDF_SD_CREATE() function, 48 BACKGROUND keyword BINOMIAL keyword in INDGEN() function, 54 in CONTOUR procedure, 37 in RANDOMN() function, 68 in MAKE_ARRAY() function, 59 in PLOT procedure, 65 in RANDOMU() function, 68 in NCDF_ATTPUT procedure, 61 in SURFACE procedure, 85 BINSIZE keyword in NCDF_VARDEF() function, 61 BACKPROJECT keyword in HISTOGRAM() function, 50 BYTEORDER procedure, 34 in RADON() function, 68 BITMAP keyword BYTEORDERprocedure, 19, 20 BAR_COLOR keyword in WIDGET_BUTTON() function, 89 BYTSCL() function, 22, 27, 34 in PLOTERR procedure, 65 BLOCK_SPECIAL keyword BASE_ALIGN_BOTTOM keyword in FILE_TEST() function, 43 in WIDGET_BASE() function, 89 C_CHARSIZE keyword BLOCK keyword BASE_ALIGN_CENTER keyword in CONTOUR procedure, 37 in OPENR procedure, 64 in WIDGET_BASE() function, 89 C_COLORS keyword in OPENU procedure, 64 BASE_ALIGN_LEFT keyword in CONTOUR procedure, 37 in OPENW procedure, 64 in WIDGET_BASE() function, 89 C_LINESTYLE keyword BOOLEAN keyword BASE_ALIGN_RIGHT keyword in CONTOUR procedure, 37 in STREGEX() function, 83 in WIDGET_BASE() function, 89 cal (UNIX), 34 BOTTOM keyword BASE_ALIGN_TOP keyword CALDAT procedure, 34 in LOADCT procedure, 55 in WIDGET_BASE() function, 89 CALDATprocedure, 26 BREAK BASE keyword CALENDAR procedure, 34 in CASE statement, 13 in SHOWFONT procedure, 73 CALENDARprocedure, 26 in FOR statement, 13 BEG keyword CALL_EXTERNAL() function, 30, 34, 55 in FOREACH statement, 13 in SHOWFONT procedure, 73 CALL_FUNCTION() function, 14, 36 in REPEAT statement, 14 BEGIN, 14 CALL_METHOD procedure, 36 in SWITCH statement, 13 in CASE statement, 13 CALL_METHOD() function, 14, 36 in WHILE statement, 14 in FOR statement, 13 CALL_METHODprocedure, 14 BREAKDOWN_EPOCH keyword in IF/THEN/ELSE statement, 12 CALL_METHON() function, 15 in CDF_EPOCH procedure, 36 in SWITCH statement, 13 CALL_METHONprocedure, 15 BRIEF keyword in WHILE statement, 14 CALL_PROCEDURE procedure, 36 in HELP procedure, 50 BESELI() function, 18, 33 CALL_PROCEDURE() function, 14 BROYDEN() function, 19, 33 BESELJ() function, 18, 33 CALLS keyword BTRANSPOSE keyword BESELK() function, 18, 33 in HELP procedure, 50 in MATRIX_MULTIPLY() function, 60 BESELY() function, 18, 33 CANCEL keyword BUFFER keyword BETA() function, 18, 33 in CATCH procedure, 36 in READ_JPEG procedure, 69 BIN1 keyword in DIALOG_MESSAGE() function, 39 BUFSIZE keyword DRAFTin HIST_2D() function, 50 CASE, 13 103

CAST keyword CHILD keyword in WINDOW procedure, 90 in OBJ_VALID() function, 64 in WIDGET_INFO() function, 89 COLUMN keyword in PTR_VALID() function, 67 CINDGEN() function, 13, 15, 37 in SVDC procedure, 86 CATCH procedure, 36 CLASS keyword in WIDGET_BASE() function, 89 CATCHprocedure, 15 in HDF_VD_GET procedure, 49 in WTN() function, 90 CD procedure, 36 in HDF_VG_GETINFO procedure, 49 COMMAND_LINE_ARGS() function, 24, 37 CDF_EPOCH procedure, 36 CLIENTSERVER keyword COMMENT_SYMBOL keyword CDprocedure, 24 in LMGR() function, 55 in READ_ASCII() function, 69 CEIL() function, 18, 37 CLIP_PLANE keyword COMPANION keyword CENTER keyword in MAP_CLIP_SET procedure, 59 in IMSL_ZEROPOLY() function, 53 in CONVOL() function, 38 CLIP_UV keyword COMPATIBLE keyword in DIALOG_MESSAGE() function, 39 in MAP_CLIP_SET procedure, 59 in SAVE procedure, 73 CHANGE keyword CLIP keyword COMPLEMENT keyword in CURSOR procedure, 39 in CONTOUR procedure, 37 in WHERE() function, 89 CHANNEL keyword in OPLOT procedure, 64 COMPLEX() function, 12, 13, 37 in TV procedure, 87 in PLOT procedure, 65 COMPLEX keyword in TVRD() function, 87 in PLOTS procedure, 65 in INDGEN() function, 54 CHANNELS keyword in POLYFILL procedure, 66 in MAKE_ARRAY() function, 59 in MAGICK_PING() function, 58 in SURFACE procedure, 85 COMPLEXARR() function, 13, 15, 37 in READ_TIFF() function, 69 in XYOUTS procedure, 90 COMPRESS keyword CHAR keyword CLOBBER keyword in FILE_LINES() function, 43 in NCDF_ATTPUT procedure, 61 in NCDF_CREATE() function, 61 in OPENR procedure, 64 in NCDF_VARDEF() function, 61 CLOSE procedure, 37 in OPENU procedure, 64 CHARACTER_SPECIAL keyword CLOSE_FILE keyword in OPENW procedure, 64 in FILE_TEST() function, 43 in DEVICE procedure, 39 COMPUTE_EPOCH keyword CHARSIZE keyword CLOSEprocedure, 20 in CDF_EPOCH procedure, 36 in AXIS procedure, 33 COEFFICIENTS keyword CONJ() function, 12, 37 in CONTOUR procedure, 37 in LAGUERRE() function, 54 CONNECT_TIMEOUT keyword in PLOT procedure, 65 COLOR keyword in SOCKET procedure, 82 in SURFACE procedure, 85 in AXIS procedure, 33 CONNECTIVITY keyword in XYOUTS procedure, 90 in CONTOUR procedure, 37 in MAP_PROJ_FORWARD() function, 59 CHARTHICK keyword in DEVICE procedure, 39 CONTEXT_EVENTS keyword in AXIS procedure, 33 in MAP_CONTINENTS procedure, 59 in WIDGET_BASE() function, 89 in CONTOUR procedure, 37 in OPLOT procedure, 64 in WIDGET_LABEL() function, 89 in PLOT procedure, 65 in PLOT procedure, 65 in WIDGET_TEXT() function, 90 in SURFACE procedure, 85 in PLOTS procedure, 65 CONTEXT_MENU keyword in XYOUTS procedure, 90 in POLYFILL procedure, 66 in WIDGET_BASE() function, 89 CHECK_MATH() function, 15, 37 in SURFACE procedure, 85 CONTINUE CHECK_MATHprocedure, 17 in XYOUTS procedure, 90 in CONTINUE statement, 14 CHECKED_MENU keyword COLORS keyword in FOR statement, 13 DRAFTin WIDGET_BUTTON() function, 89 in READ_JPEG procedure, 69 in FOREACH statement, 13 104 Subject Index

in WHILE statement, 14 CREATE keyword in PRINTF procedure, 66 CONTINUE keyword in HDF_OPEN() function, 48 in READ procedure, 68 in MESSAGE procedure, 60 in HDF_SD_START() function, 49 in READF procedure, 69 in PLOTS procedure, 65 CROSSP() function, 18, 39 in READS procedure, 69 CONTOUR procedure, 37 CUBIC keyword in STOP procedure, 83 CONTOURprocedure, 22 in INTERPOLATE() function, 54 in STRING() function, 83 CONVERT_COORD() function, 23, 37 in POLY_2D() function, 66 DBLARR() function, 13, 15, 39 CONVOL() function, 18, 27, 38 CUMULATIVE keyword DCINDGEN() function, 13, 15, 39 COORDSYS keyword in PRODUCT() function, 66 DCOMPLEX() function, 12, 13, 39 in HDF_SD_GETINFO procedure, 49 in TOTAL() function, 87 DCOMPLEX keyword COPY keyword CURRENT keyword in INDGEN() function, 54 in SET_PLOT procedure, 73 in CD procedure, 36 in MAKE_ARRAY() function, 59 CORRELATE() function, 18, 38 in MEMORY() function, 60 DCOMPLEXARR() function, 13, 15, 39 COS() function, 18, 38 CURSOR procedure, 39 DEBUG keyword COSH() function, 18, 38 CURSORprocedure, 22 in DIALOG_PICKFILE() function, 40 COUNT keyword in SPL_INIT_OLD() function, 82 in COMMAND_LINE_ARGS() function, 37 DECOMPOSED keyword D_VALUE keyword in EXPAND_PATH() function, 41 in DEVICE procedure, 39 in CALL_EXTERNAL() function, 34 in FILE_SEARCH() function, 43 DEFAULT_CANCEL keyword DATA_DIMS keyword in FINDFILE() function, 43 in DIALOG_MESSAGE() function, 39 in READ_BINARY() function, 69 in GET_DRIVE_LIST() function, 45 DEFAULT_EXTENSION keyword DATA_LENGTH keyword in HDF_SD_ADDDATA procedure, 48 in DIALOG_PICKFILE() function, 40 in N_TAGS() function, 62 in HDF_SD_ATTRINFO procedure, 48 DEFAULT_NO keyword DATA_START keyword in HDF_SD_DIMGET procedure, 48 in DIALOG_MESSAGE() function, 39 in READ_ASCII() function, 69 in HDF_SD_GETDATA procedure, 49 DEFAULTRETURNVALUE keyword in READ_BINARY() function, 69 in HDF_VD_GET procedure, 49 in PYTHON() function, 67 DATA_TYPE keyword in NCDF_VARGET procedure, 62 DEFSYSV procedure, 39 in READ_BINARY() function, 69 in NCDF_VARPUT procedure, 62 DEFSYSVprocedure, 15 DATA keyword in OBJ_CLASS() function, 63 DEGREES keyword in AXIS procedure, 33 in OBJ_VALID() function, 64 in LL_ARC_DISTANCE() function, 55 in CONTOUR procedure, 37 in PTR_VALID() function, 67 DELETE keyword in CONVERT_COORD() function, 37 in READ_ASCII() function, 69 in OPENR procedure, 64 in CURSOR procedure, 39 in SPAWN procedure, 82 in OPENU procedure, 64 in HDF_SD_ATTRINFO procedure, 48 in STRSPLIT() function, 84 in OPENW procedure, 64 in PLOT procedure, 65 COUNTRIES keyword DELIMITER keyword in PLOTS procedure, 65 in MAP_CONTINENTS procedure, 59 in READ_ASCII() function, 69 in POLYFILL procedure, 66 COVARIANCE keyword DEMO keyword in SAVE procedure, 73 in CORRELATE() function, 38 in LMGR() function, 55 in SURFACE procedure, 85 CPU procedure, 39 DERIV() function, 18, 39 in XYOUTS procedure, 90 CPUprocedure, 28 DESCRIPTION keyword DAYS_OF_WEEK keyword CREATE_STRUCT() function, 15, 39 in RESTORE procedure, 70 DRAFTin PRINT procedure, 66 105

DESTROY_SEMAPHORE keyword DIMENSION keyword in ERRORF() function, 41 in SEM_CREATE() function, 73 in FFT() function, 42 in EXPINT() function, 41 DESTROY keyword in MAKE_ARRAY() function, 59 in FFT() function, 42 in WIDGET_CONTROL procedure, 89 in MAX() function, 60 in GAMMA() function, 44 in WIDGET_EVENT() function, 89 in MEDIAN() function, 60 in GAUSSINT() function, 44 DEVICE procedure, 39 in MIN() function, 60 in GDL_ERFINV() function, 45 DEVICE keyword DIMENSIONS keyword in HDF_SD_CREATE() function, 48 in AXIS procedure, 33 in MAGICK_PING() function, 58 in IDENTITY() function, 51 in CONTOUR procedure, 37 in SIZE() function, 82 in IGAMMA() function, 51 in CONVERT_COORD() function, 37 DIMS keyword in IMSL_BINOMIALCOEF() function, 51 in CURSOR procedure, 39 in HDF_SD_GETINFO procedure, 49 in IMSL_CONSTANT() function, 52 in PLOT procedure, 65 DINDGEN() function, 13, 15, 40 in IMSL_ERF() function, 53 in PLOTS procedure, 65 DIRECTORY keyword in IMSL_ZEROPOLY() function, 53 in POLYFILL procedure, 66 in DIALOG_PICKFILE() function, 40 in IMSL_ZEROSYS() function, 54 in SURFACE procedure, 85 in FILE_TEST() function, 43 in INDGEN() function, 54 in TV procedure, 87 DISABLED keyword in INVERT() function, 54 in XYOUTS procedure, 90 in ROUTINE_INFO() function, 71 in KURTOSIS() function, 54 DEVICEprocedure, 22 DISPLAY_NAME keyword in LA_TRIRED procedure, 54 DFNT_CHAR keyword in DIALOG_MESSAGE() function, 39 in LAGUERRE() function, 54 in HDF_SD_CREATE() function, 48 in DIALOG_PICKFILE() function, 40 in LEGENDRE() function, 55 DFNT_FLOAT32 keyword in WIDGET_BASE() function, 89 in LNGAMMA() function, 55 in HDF_SD_CREATE() function, 48 DIST() function, 19, 40 in MACHAR() function, 57 DFNT_FLOAT64 keyword DITHER keyword in MAKE_ARRAY() function, 59 in HDF_SD_CREATE() function, 48 in MAGICK_QUANTIZE procedure, 58 in MEAN() function, 60 DFNT_INT16 keyword in READ_JPEG procedure, 69 in MEANABSDEV() function, 60 in HDF_SD_CREATE() function, 48 DO in MEDIAN() function, 60 DFNT_INT32 keyword in FOR statement, 13 in MOMENT() function, 60 in HDF_SD_CREATE() function, 48 in FOREACH statement, 13 in NCDF_ATTPUT procedure, 61 DFNT_INT8 keyword in WHILE statement, 14 in NCDF_VARDEF() function, 61 in HDF_SD_CREATE() function, 48 DOUBLE() function, 12, 13, 40 in NEWTON() function, 62 DFNT_UINT16 keyword DOUBLE keyword in NORM() function, 62 in HDF_SD_CREATE() function, 48 in BESELI() function, 33 in POLY_AREA() function, 66 DFNT_UINT32 keyword in BESELJ() function, 33 in RADON() function, 68 in HDF_SD_CREATE() function, 48 in BESELK() function, 33 in RANDOMN() function, 68 DFNT_UINT8 keyword in BESELY() function, 33 in RANDOMU() function, 68 in HDF_SD_CREATE() function, 48 in BETA() function, 33 in RK4() function, 70 DIALOG_MESSAGE() function, 29, 39 in BROYDEN() function, 33 in RK4JMG() function, 70 DIALOG_PARENT keyword in CONVERT_COORD() function, 37 in SKEWNESS() function, 82 in DIALOG_MESSAGE() function, 39 in CORRELATE() function, 38 in SPHER_HARM() function, 82 in DIALOG_PICKFILE() function, 40 in ERF() function, 40 in SPL_INIT() function, 82 DIALOG_PICKFILE()DRAFT function, 29, 40 in ERFC() function, 41 in SPL_INIT_OLD() function, 82 106 Subject Index

in SPL_INTERP() function, 82 ENDCASE, 13 EVENT_FUNC keyword in SPL_INTERP_OLD() function, 82 ENDEF keyword in WIDGET_BASE() function, 89 in STDDEV() function, 83 in NCDF_CONTROL procedure, 61 in WIDGET_BUTTON() function, 89 in SVDC procedure, 86 ENDELSE, 12 in WIDGET_DROPLIST() function, 89 in TOTAL() function, 87 ENDFOR, 13 in WIDGET_LABEL() function, 89 in TRACE() function, 87 ENDFOREACH, 13 in WIDGET_TEXT() function, 90 in VARIANCE() function, 88 ENDIAN keyword EVENT_PRO keyword in VOIGT() function, 88 in READ_BINARY() function, 69 in WIDGET_BASE() function, 89 in WTN() function, 90 ENDIF, 12 in WIDGET_BUTTON() function, 89 DOWN keyword ENDREP, 14 in WIDGET_CONTROL procedure, 89 in CURSOR procedure, 39 ENDSWITCH, 13 in WIDGET_DROPLIST() function, 89 DRHO keyword ENDWHILE, 14 in WIDGET_LABEL() function, 89 in RADON() function, 68 ENVIRONMENT keyword in WIDGET_TEXT() function, 90 DTOXDR keyword in GETENV() function, 45 EXCLUSIVE keyword in BYTEORDER procedure, 34 EOF() function, 40 in WIDGET_BASE() function, 89 DX keyword EOF keyword EXECUTABLE keyword in RADON() function, 68 in SKIP_LUN procedure, 82 in FILE_TEST() function, 43 DY keyword EOFprocedure, 20 EXECUTE() function, 14, 24, 41 in RADON() function, 68 ERASE procedure, 40 EXECUTEprocedure, 15 DYNAMIC_RESIZE keyword ERASEprocedure, 22 EXISTS keyword in WIDGET_BUTTON() function, 89 ERF() function, 18, 40 in DEFSYSV procedure, 39 in WIDGET_DROPLIST() function, 89 ERFC() function, 18, 41 EXIT procedure, 41 ERR_REL keyword EXIT_STATUS keyword in IMSL_ZEROSYS() function, 54 in CLOSE procedure, 37 EDGE_TRUNCATE keyword ERRMSG keyword in FREE_LUN procedure, 44 in CONVOL() function, 38 in SAVE procedure, 73 in SPAWN procedure, 82 in SMOOTH() function, 82 ERROR keyword EXITprocedure, 24 EDGE_WRAP keyword in DIALOG_MESSAGE() function, 39 EXP() function, 18, 41 in CONVOL() function, 38 in OPENR procedure, 64 EXPAND_ENVIRONMENT keyword EDITABLE keyword in OPENU procedure, 64 in FILE_SEARCH() function, 43 in WIDGET_LABEL() function, 89 in OPENW procedure, 64 EXPAND_PATH() function, 14, 24, 41 in WIDGET_TEXT() function, 90 in SOCKET procedure, 82 EXPAND_TILDE keyword ELSE ERRORF() function, 18, 41 in FILE_SEARCH() function, 43 in CASE statement, 13 ESC keyword EXPINT() function, 18, 41 in IF/THEN/ELSE statement, 12 in STR_SEP() function, 85 EXPIRE_DATE keyword in SWITCH statement, 13 ESCAPE_SPECIAL_CHAR() function, 41 in LMGR() function, 55 EMBEDDED keyword ESCAPE keyword EXTRACT keyword in LMGR() function, 55 in STRSPLIT() function, 84 in STREGEX() function, 83 ENABLED keyword in STRTOK() function, 84 in STRSPLIT() function, 84 in ROUTINE_INFO() function, 71 EVEN keyword in STRTOK() function, 84 ENCAPSULATED keyword in MEDIAN() function, 60 DRAFTin SHOWFONT procedure, 73 107

F77_UNFORMATTED keyword in CONTOUR procedure, 37 in WIDGET_BUTTON() function, 89 in OPENR procedure, 64 in MAP_PROJ_FORWARD() function, 59 in WIDGET_DROPLIST() function, 89 in OPENU procedure, 64 in NCDF_CONTROL procedure, 61 in WIDGET_LABEL() function, 89 in OPENW procedure, 64 FILTER keyword in WIDGET_TEXT() function, 90 F_VALUE keyword in DIALOG_PICKFILE() function, 40 FOR, 13 in CALL_EXTERNAL() function, 34 FIN keyword FORCE_DEMO keyword FACTORIAL() function, 18, 41 in SHOWFONT procedure, 73 in LMGR() function, 55 FETCH keyword FINDEX() function, 18, 43 FORCE keyword in ROUTINE_NAMES() function, 71 FINDFILE() function, 24, 43 in CLOSE procedure, 37 FFT() function, 19, 42 FINDGEN() function, 13, 15, 44 in FREE_LUN procedure, 44 FIELDS keyword FINITE() function, 15, 44 FOREACH, 13 in HDF_VD_READ() function, 49 FIX() function, 12, 13, 44 FORMAT keyword FILE_BASENAME() function, 24, 42 FIX_FILTER keyword in HDF_SD_GETINFO procedure, 49 FILE_COPY procedure, 42 in DIALOG_PICKFILE() function, 40 in PM procedure, 65 FILE_COPYprocedure, 24 FLOAT() function, 12, 13, 44 in PRINT procedure, 66 FILE_DELETE procedure, 42 FLOAT keyword in PRINTF procedure, 66 FILE_DELETEprocedure, 24 in HDF_SD_CREATE() function, 48 in READ procedure, 68 FILE_DIRNAME() function, 24, 42, 43 in INDGEN() function, 54 in READF procedure, 69 FILE_EXPAND_PATH() function, 24, 43 in MAKE_ARRAY() function, 59 in READS procedure, 69 FILE_INFO() function, 24, 43 in NCDF_ATTPUT procedure, 61 in STOP procedure, 83 FILE_LINES() function, 24, 43 in NCDF_VARDEF() function, 61 in STRING() function, 83 FILE_LUN keyword FLOATING keyword FOUR_BIT keyword in SIZE() function, 82 in WIDGET_BASE() function, 89 in WRITE_BMP procedure, 90 FILE_MKDIR procedure, 43 FLOOR() function, 18, 44 FRAME keyword FILE_MKDIRprocedure, 24 FLTARR() function, 13, 15, 44 in WIDGET_BASE() function, 89 FILE_SAME() function, 24, 43 FLUSH procedure, 44 in WIDGET_BUTTON() function, 89 FILE_SEARCH() function, 24, 43 FLUSHprocedure, 22 in WIDGET_DROPLIST() function, 89 FILE_TEST() function, 24, 43 FNORM keyword in WIDGET_LABEL() function, 89 FILE_WHICH() function, 24, 43 in IMSL_ZEROSYS() function, 54 in WIDGET_TEXT() function, 90 FILE keyword FOLD_CASE keyword FREE_LUN procedure, 44 in CLOSE procedure, 37 in FILE_BASENAME() function, 42 FREE_LUNprocedure, 20 in DIALOG_PICKFILE() function, 40 in FILE_SEARCH() function, 43 FREE keyword in LOADCT procedure, 55 in STRCMP() function, 83 in WINDOW procedure, 90 FILENAME keyword in STREGEX() function, 83 FSTAT() function, 24, 44 in DEVICE procedure, 39 in STRSPLIT() function, 84 FTOXDR keyword in RESTORE procedure, 70 FOLLOW keyword in BYTEORDER procedure, 34 in SAVE procedure, 73 in CONTOUR procedure, 37 FULL_INTERLACE keyword FILEPATH() function, 14, 42 FONT keyword in HDF_VD_READ() function, 49 FILL_CONTINENTS keyword in AXIS procedure, 33 FULL_STRUCT keyword in MAP_CONTINENTS procedure, 59 in CONTOUR procedure, 37 in HELPFORM() function, 50 FILLDRAFT keyword in SURFACE procedure, 85 FULLY_QUALIFY_PATH keyword 108 Subject Index

in FILE_SEARCH() function, 43 in FILE_TEST() function, 43 GRIBAPI_OPEN_FILE() function, 21, 46 FUNC_GET_VALUE keyword GET_NAMES keyword GRIBAPI_RELEASE procedure, 46 in WIDGET_BASE() function, 89 in LOADCT procedure, 55 GRIBAPI_RELEASEprocedure, 21 in WIDGET_BUTTON() function, 89 in LOADCT_INTERNALGDL procedure, 56 GRID_LAYOUT keyword in WIDGET_CONTROL procedure, 89 GET_PATH keyword in WIDGET_BASE() function, 89 in WIDGET_DROPLIST() function, 89 in DIALOG_PICKFILE() function, 40 GRID keyword in WIDGET_LABEL() function, 89 GET_SCREEN_SIZE() function, 23, 45 in INTERPOLATE() function, 54 in WIDGET_TEXT() function, 90 GET_SCREEN_SIZE keyword in PY_PLOT procedure, 67 FUNCTIONS keyword in DEVICE procedure, 39 GROUP_LEADER keyword in HELP procedure, 50 GET_UVALUE keyword in WIDGET_BASE() function, 89 in ROUTINE_INFO() function, 71 in WIDGET_CONTROL procedure, 89 in WIDGET_BUTTON() function, 89 GET_VALUE keyword in WIDGET_DROPLIST() function, 89 in WIDGET_CONTROL procedure, 89 in WIDGET_LABEL() function, 89 GAMMA() function, 18, 44 GET_VISUAL_DEPTH keyword in WIDGET_TEXT() function, 90 GAMMA keyword in DEVICE procedure, 39 GROUP keyword in RANDOMN() function, 68 GET keyword in DIALOG_PICKFILE() function, 40 in RANDOMU() function, 68 in TVLCT procedure, 87 GSL_EXP() function, 18, 46 Gauss symbol, 18 GETENV() function, 24, 45 GAUSS_CVF() function, 18, 44 GLOBAL keyword GAUSS_PDF() function, 18, 44 H5_GET_LIBVERSION() function, 20, 48 in NCDF_ATTDEL procedure, 60 Gaussian probability function, 18 H5A_CLOSE procedure, 46 in NCDF_ATTGET procedure, 60 GAUSSIANNOISE keyword H5A_CLOSEprocedure, 20 in NCDF_ATTINQ() function, 60 in MAGICK_ADDNOISE procedure, 57 H5A_GET_NAME() function, 20, 46 in NCDF_ATTNAME() function, 60 in MAGICK_PING() function, 58 H5A_GET_NUM_ATTRS() function, 20, 46 in NCDF_ATTPUT procedure, 61 GAUSSINT() function, 18, 44 H5A_GET_SPACE() function, 20, 46 in NCDF_ATTRENAME procedure, 61 GDL_ERFINV() function, 45 H5A_GET_TYPE() function, 20, 46 GOTO statement, 14 GEOTIFF keyword H5A_OPEN_IDX() function, 20, 46 GRAY keyword in READ_TIFF() function, 69 H5A_OPEN_NAME() function, 20, 46 in RADON() function, 68 GET_DECOMPOSED keyword H5A_READ() function, 20, 46 GRAYSCALE keyword in DEVICE procedure, 39 H5D_CLOSE procedure, 46 in MAGICK_QUANTIZE procedure, 58 GET_DRIVE_LIST() function, 45 H5D_CLOSEprocedure, 20 in READ_JPEG procedure, 69 GET_KBRD() function, 45 H5D_GET_SPACE() function, 20, 47 GRIBAPI_CLONE() function, 21, 45 GET_KBRDprocedure, 20 H5D_GET_TYPE() function, 20, 47 GRIBAPI_CLOSE_FILE procedure, 45 GET_LOGIN_INFO() function, 45 H5D_OPEN() function, 20, 47 GRIBAPI_CLOSE_FILEprocedure, 21 GET_LUN procedure, 45 H5D_READ() function, 20, 47 GRIBAPI_COUNT_IN_FILE() function, 21, 45 GET_LUN keyword H5F_CLOSE procedure, 47 GRIBAPI_GET procedure, 45 in OPENR procedure, 64 H5F_CLOSEprocedure, 20 GRIBAPI_GET_DATA procedure, 45 in OPENU procedure, 64 H5F_IS_HDF5() function, 20, 47 GRIBAPI_GET_DATAprocedure, 21 in OPENW procedure, 64 H5F_OPEN() function, 20, 47 GRIBAPI_GET_SIZE() function, 21, 46 in SOCKET procedure, 82 H5G_CLOSE procedure, 47 GRIBAPI_GETprocedure, 21 GET_LUNprocedure, 20 H5G_CLOSEprocedure, 20 GRIBAPI_NEW_FROM_FILE() function, 21, 46 GET_MODEDRAFT keyword H5G_OPEN() function, 20, 47 109

H5S_CLOSE procedure, 47 HDF_VD_DETACHprocedure, 20 in SPL_INTERP() function, 82 H5S_CLOSEprocedure, 20 HDF_VD_FIND() function, 20, 49 in STR_SEP() function, 85 H5S_GET_SIMPLE_EXTENT_DIMS() function, 20, 47 HDF_VD_GET procedure, 49 in STRSPLIT() function, 84 H5T_CLOSE procedure, 47 HDF_VD_GETprocedure, 20 in WIDGET_BUTTON() function, 89 H5T_CLOSEprocedure, 20 HDF_VD_READ() function, 20, 49 HELPFORM() function, 50 H5T_GET_SIZE() function, 20, 47 HDF_VG_ATTACH() function, 20, 49 HELPprocedure, 15, 71 HAS_PALETTE keyword HDF_VG_DETACH procedure, 49 HIGHWATER keyword in MAGICK_PING() function, 58 HDF_VG_DETACHprocedure, 20 in MEMORY() function, 60 HAT keyword HDF_VG_GETID() function, 20, 49 HIRES keyword in PLOTERR procedure, 65 HDF_VG_GETINFO procedure, 49 in MAP_CONTINENTS procedure, 59 HDF_CLOSE procedure, 48 HDF_VG_GETINFOprocedure, 20 HIST_2D() function, 18, 50, 51 HDF_CLOSEprocedure, 20 HDF_VG_GETTRS procedure, 50 HIST_ND() function, 18, 50 HDF_OPEN() function, 20, 48 HDF_VG_GETTRSprocedure, 20 HISTOGRAM() function, 18, 50, 51 HDF_SD_ADDDATA procedure, 48 HEADER_DEFINE keyword HLS keyword HDF_SD_ADDDATAprocedure, 20 in WRITE_BMP procedure, 90 in TVLCT procedure, 87 HDF_SD_ATTRFIND() function, 20, 48 HEADER keyword HSV keyword HDF_SD_ATTRINFO procedure, 48 in READ_ASCII() function, 69 in TVLCT procedure, 87 HDF_SD_ATTRINFOprocedure, 20 HEAP_GC procedure, 50 HTONL keyword HDF_SD_CREATE() function, 20, 48 HEAP_GCprocedure, 15 in BYTEORDER procedure, 34 HDF_SD_DIMGET procedure, 48 HELP procedure, 50 HTONS keyword HDF_SD_DIMGETID() function, 20, 48 HELP keyword in BYTEORDER procedure, 34 HDF_SD_DIMGETprocedure, 20 in BESELI() function, 33 HYBRID keyword HDF_SD_END procedure, 48 in BESELJ() function, 33 in NEWTON() function, 62 HDF_SD_ENDACCESS procedure, 48 in BESELK() function, 33 HDF_SD_ENDACCESSprocedure, 20 in BESELY() function, 33 I_VALUE keyword HDF_SD_ENDprocedure, 20 in DERIV() function, 39 in CALL_EXTERNAL() function, 34 HDF_SD_FILEINFO procedure, 48 in DIALOG_MESSAGE() function, 39 IDENTITY() function, 15, 18, 51 HDF_SD_FILEINFOprocedure, 20 in DIALOG_PICKFILE() function, 40 IDL_BASE64() function, 25, 51 HDF_SD_GETDATA procedure, 49 in ESCAPE_SPECIAL_CHAR() function, 41 IDL_CONSTANT() function, 19 HDF_SD_GETDATAprocedure, 20 in FILE_BASENAME() function, 42 IDL_VALIDANEM() function, 25 HDF_SD_GETINFO procedure, 49 in FILE_COPY procedure, 42 IDL_VALIDNAME() function, 12, 51 HDF_SD_GETINFOprocedure, 20 in FILE_DELETE procedure, 42 IF, 12 HDF_SD_NAMETOINDEX() function, 20, 49 in FILE_DIRNAME() function, 43 IGAMMA() function, 18, 51 HDF_SD_SELECT() function, 20, 49 in FINDFILE() function, 43 IGNORE_ACCELERATORS keyword HDF_SD_START() function, 20, 49 in PLOTERR procedure, 65 in WIDGET_LABEL() function, 89 HDF_TYPE keyword in PREWITT() function, 66 in WIDGET_TEXT() function, 90 in HDF_SD_ATTRINFO procedure, 48 in ROBERTS() function, 70 IHDR keyword in HDF_SD_CREATE() function, 48 in SKIP_LUN procedure, 82 in WRITE_BMP procedure, 90 in HDF_SD_GETINFO procedure, 49 in SMOOTH() function, 82 IMAGE_INDEX keyword HDF_VD_ATTACH() function, 20, 49 in SOBEL() function, 82 in MAGICK_PING() function, 58 HDF_VD_DETACH procedure, 49 in SPL_INIT() function, 82 DRAFTin QUERY_TIFF() function, 68 110 Subject Index

in READ_DICOM() function, 69 in READ_TIFF() function, 69 in WIDGET_LABEL() function, 89 in READ_TIFF() function, 69 INTERPOL() function, 18, 54 in WIDGET_TEXT() function, 90 IMAGINARY() function, 12, 51 INTERPOLATE() function, 18, 54 KEYWORD_SET() function, 14, 54 IMPULSENOISE keyword INTERPOLATE keyword KILL_NOTIFY keyword in MAGICK_ADDNOISE procedure, 57 in SET_PLOT procedure, 73 in WIDGET_BASE() function, 89 in MAGICK_PING() function, 58 INVERSE keyword in WIDGET_BUTTON() function, 89 IMSL_BINOMIALCOEF() function, 18, 51 in FFT() function, 42 in WIDGET_DROPLIST() function, 89 IMSL_CONSTANT() function, 52 in IMSL_ERF() function, 53 in WIDGET_LABEL() function, 89 IMSL_ERF() function, 18, 53 in WTN() function, 90 in WIDGET_TEXT() function, 90 IMSL_ZEROPOLY() function, 18, 19, 53 INVERT() function, 18, 54 KURTOSIS() function, 18, 54 IMSL_ZEROSYS() function, 54 IOERROR keyword IN_GLOBAL keyword in MESSAGE procedure, 60 L64_VALUE keyword in NCDF_ATTCOPY() function, 60 ISHFT() function, 19, 54 in CALL_EXTERNAL() function, 34 INCHES keyword ISOTROPIC keyword L64 keyword in DEVICE procedure, 39 in CONTOUR procedure, 37 in CEIL() function, 37 INCLUDE_CURRENT_DIR keyword ISSUE_ACCESS_ERROR keyword in FLOOR() function, 44 in FILE_WHICH() function, 43 in FILE_SEARCH() function, 43 in INDGEN() function, 54 INDEX keyword ITER keyword in MAKE_ARRAY() function, 59 in MAKE_ARRAY() function, 59 in BESELI() function, 33 in MEMORY() function, 60 INDGEN() function, 13, 15, 54 in BESELJ() function, 33 in ROUND() function, 71 INFINITY keyword in BESELK() function, 33 in SIZE() function, 82 in FINITE() function, 44 in BESELY() function, 33 in SORT() function, 82 INFO keyword in RK4() function, 70 in VALUE_LOCATE() function, 88 in HELP procedure, 50 in VOIGT() function, 88 L64INDEGEN() function, 15 in MAGICK_PING() function, 58 ITMAX keyword L64INDGEN() function, 13, 54 INFORMATION keyword in BROYDEN() function, 33 L64SWAP keyword in DIALOG_MESSAGE() function, 39 in IMSL_ZEROSYS() function, 54 in BYTEORDER procedure, 34 INFORMATIONAL keyword in NEWTON() function, 62 L_VALUE keyword in MESSAGE procedure, 60 in SVDC procedure, 86 in CALL_EXTERNAL() function, 34 INPUT keyword LA_TRIRED procedure, 54 in HISTOGRAM() function, 50 JACOBIAN keyword LA_TRIREDprocedure, 18 INSTALL_NUM keyword in IMSL_ZEROSYS() function, 54 LABEL keyword in LMGR() function, 55 JENKINS_TRAUB keyword in HDF_SD_GETINFO procedure, 49 INT keyword in IMSL_ZEROPOLY() function, 53 LAGUERRE() function, 18, 54 in HDF_SD_CREATE() function, 48 joint density function, 50 LANDSCAPE keyword INTARR() function, 13, 15, 54 JOURNAL procedure, 54 in DEVICE procedure, 39 INTEGER keyword JOURNALprocedure, 17 LAPLACIANNOISE keyword in MAKE_ARRAY() function, 59 JULIAN keyword in MAGICK_ADDNOISE procedure, 57 in PRODUCT() function, 66 in SYSTIME() function, 86 in MAGICK_PING() function, 58 in TOTAL() function, 87 KBRD_FOCUS_EVENTS keyword LAST_ITEM() function, 54 INTERLEAVE keyword DRAFTin WIDGET_BASE() function, 89 LEGENDRE() function, 18, 55 111

LENGTH_OF_HAT keyword LOADCT procedure, 55 MAGICK_MATTE procedure, 58 in PLOTERR procedure, 65 LOADCT_INTERNALGDL procedure, 56 MAGICK_OPEN() function, 58 LENGTH keyword LOADCTprocedure, 22 MAGICK_PING() function, 58 in N_TAGS() function, 62 LOCALE_GET() function, 24, 57 MAGICK_QUALITY procedure, 58 in NCDF_ATTPUT procedure, 61 LOCATIONS keyword MAGICK_QUANTIZE procedure, 58 in STREGEX() function, 83 in HISTOGRAM() function, 50 MAGICK_READ() function, 59 in STRSPLIT() function, 84 LOGICAL_AND() function, 12, 57 MAGICK_READCOLORMAPRGB procedure, 59 in STRTOK() function, 84 LOGICAL_OR() function, 12, 57 MAGICK_READINDEXES() function, 59 LEVEL keyword LOGICAL_TRUE() function, 12, 57 MAGICK_ROWS() function, 59 in ROUTINE_NAMES() function, 71 LON64ARR() function, 15, 57 MAGICK_WRITE procedure, 59 in SCOPE_VARFETCH() function, 73 LONARR() function, 13, 15, 57 MAGICK_WRITECOLORTABLE procedure, 59 LEVELS keyword LONG() function, 12, 13, 57 MAGICK_WRITEFILE procedure, 59 in CONTOUR procedure, 37 LONG64() function, 12, 13, 57 MAGICK_WRITEINDEXES procedure, 59 LIB keyword LONG64ARR() function, 13 MAKE_ARRAY() function, 15, 59 in HELP procedure, 50 LONG keyword MANAGED keyword LINDEGEN() function, 15 in HDF_SD_CREATE() function, 48 in WIDGET_CONTROL procedure, 89 LINDGEN() function, 13, 55 in INDGEN() function, 54 in WIDGET_INFO() function, 89 LINE_FILL keyword in MAKE_ARRAY() function, 59 Mandelbrot set, 32 in POLYFILL procedure, 66 in NCDF_ATTPUT procedure, 61 MAP_CLIP_SET procedure, 59 LINEAR keyword in NCDF_VARDEF() function, 61 MAP_CLIP_SETprocedure, 22 in RADON() function, 68 in RANDOMN() function, 68 MAP_CONTINENTS procedure, 59 LINEINTERLACE keyword in RANDOMU() function, 68 MAP_CONTINENTSprocedure, 22 in MAGICK_INTERLACE procedure, 58 LSQUADRATIC keyword MAP_PROJ_FORWARD() function, 59 LINES keyword in INTERPOL() function, 54 MAP_PROJ_FORWARDprocedure, 22 in SKIP_LUN procedure, 82 LSWAP keyword MAP_PROJ_INVERSE() function, 59 LINESTYLE keyword in BYTEORDER procedure, 34 MAP_PROJ_INVERSEprocedure, 22 in OPLOT procedure, 64 LUDC procedure, 57 MAP_STRUCTURE keyword in PLOT procedure, 65 LUDCprocedure, 18 in MAP_PROJ_FORWARD() function, 59 in PLOTS procedure, 65 MAP keyword in POLYFILL procedure, 66 in MAGICK_READ() function, 59 MACHAR() function, 15, 57 in SURFACE procedure, 85 in TRIGRID() function, 87 MAGICK_ADDNOISE procedure, 57 LINKIMAGE procedure, 55 in WIDGET_BASE() function, 89 MAGICK_CLOSE procedure, 57 LINKIMAGE() function, 30 in WIDGET_CONTROL procedure, 89 MAGICK_COLORMAPSIZE() function, 57 LINKIMAGEprocedure, 36 MARK_DIRECTORY keyword MAGICK_COLUMNS() function, 58 LIST_OF_SPECIAL_CHAR keyword in FILE_DIRNAME() function, 43 MAGICK_CREATE() function, 58 in ESCAPE_SPECIAL_CHAR() function, 41 in FILE_SEARCH() function, 43 MAGICK_DISPLAY procedure, 58 LL_ARC_DISTANCE() function, 18, 22, 55 MASK keyword MAGICK_EXISTS() function, 58 LMGR() function, 55 in CHECK_MATH() function, 37 MAGICK_FLIP procedure, 58 LMHOSTID keyword MATCH_ALL_INITIAL_DOT keyword MAGICK_INDEXEDCOLOR() function, 58 in LMGR() function, 55 in FILE_SEARCH() function, 43 MAGICK_INTERLACE procedure, 58 LNGAMMA() function, 18, 55 MATCH_INITIAL_DOT keyword DRAFTMAGICK_MAGICK() function, 58 112 Subject Index

in FILE_SEARCH() function, 43 in CONTOUR procedure, 37 in ASIN() function, 33 MATRIX_MULTIPLY() function, 18, 60 in OPLOT procedure, 64 in ATAN() function, 33 MAX() function, 18, 60 in PLOT procedure, 65 in CEIL() function, 37 MAX1 keyword in SURFACE procedure, 85 in COMPLEX() function, 37 in HIST_2D() function, 50 MIN keyword in CONJ() function, 37 MAX2 keyword in BYTSCL() function, 34 in COS() function, 38 in HIST_2D() function, 50 in HIST_ND() function, 50 in COSH() function, 38 MAX_VALUE keyword in HISTOGRAM() function, 50 in EXP() function, 41 in CONTOUR procedure, 37 in MAX() function, 60 in FFT() function, 42 in OPLOT procedure, 64 MISSING_VALUE keyword in FLOOR() function, 44 in PLOT procedure, 65 in READ_ASCII() function, 69 in IMAGINARY() function, 51 in SURFACE procedure, 85 MISSING keyword in LOGICAL_AND() function, 57 in TRIGRID() function, 87 in INTERPOLATE() function, 54 in LOGICAL_OR() function, 57 MAX keyword in POLY_2D() function, 66 in LOGICAL_TRUE() function, 57 in BYTSCL() function, 34 in TRIGRID() function, 87 in MAGICK_WRITEINDEXES procedure, 59 in HIST_ND() function, 50 MODAL keyword in PRODUCT() function, 66 in HISTOGRAM() function, 50 in WIDGET_BASE() function, 89 in PTRARR() function, 66 in MIN() function, 60 in WIDGET_INFO() function, 89 in ROUND() function, 71 MAXMOMENT keyword MOMENT() function, 18, 60 in SIN() function, 81 in MOMENT() function, 60 MONTH keyword in SINH() function, 81 MBAR keyword in PRINT procedure, 66 in SQRT() function, 83 in WIDGET_BASE() function, 89 in PRINTF procedure, 66 in STRCOMPRESS() function, 83 MDEV keyword in READ procedure, 68 in STRLEN() function, 84 in MOMENT() function, 60 in READF procedure, 69 in STRLOWCASE() function, 84 MEAN() function, 18, 60 in READS procedure, 69 in STRMID() function, 84 MEANABSDEV() function, 18, 60 in STOP procedure, 83 in STRPOS() function, 84 MEDIAN() function, 18, 27, 60 in STRING() function, 83 in STRPUT procedure, 84 MEMORY() function, 60 MORE keyword in STRTRIM() function, 85 MEMORY keyword in OPENR procedure, 64 in STRUPCASE() function, 85 in HELP procedure, 50 in OPENU procedure, 64 in TAN() function, 86 MEMORYprocedure, 17 in OPENW procedure, 64 in TANH() function, 86 MENU keyword MTIMES keyword in TOTAL() function, 87 in WIDGET_BUTTON() function, 89 in SAVE procedure, 73 in WHERE() function, 89 MESSAGE procedure, 60 MULTIPLE_FILES keyword MUST_EXIST keyword MESSAGEprocedure, 15, 17 in DIALOG_PICKFILE() function, 40 in DIALOG_PICKFILE() function, 40 MIN() function, 18, 60 MULTIPLICATIVEGAUSSIANNOISE keyword MIN1 keyword in MAGICK_ADDNOISE procedure, 57 N_DIMENSIONS keyword in HIST_2D() function, 50 in MAGICK_PING() function, 58 in SIZE() function, 82 MIN2 keyword multithreading N_ELEMENTS() function, 14, 15, 62 in HIST_2D() function, 50 in ABS() function, 32 N_ELEMENTS keyword MIN_VALUE keyword in ACOS() function, 32 DRAFTin SIZE() function, 82 113

N_PARAMS() function, 14, 62 NCDF_ATTINQ() function, 20, 60 in CONTOUR procedure, 37 N_TAGS() function, 15, 62 NCDF_ATTNAME() function, 20, 60 NO_CHECK keyword NAME keyword NCDF_ATTPUT procedure, 61 in DERIV() function, 39 in CREATE_STRUCT() function, 39 NCDF_ATTPUTprocedure, 20 NO_CONFIRM keyword in HDF_SD_ATTRINFO procedure, 48 NCDF_ATTRENAME procedure, 61 in EXIT procedure, 41 in HDF_SD_DIMGET procedure, 48 NCDF_ATTRENAMEprocedure, 20 NO_COPY keyword in HDF_SD_GETINFO procedure, 49 NCDF_CLOSE procedure, 61 in PTR_NEW() function, 67 in HDF_VD_GET procedure, 49 NCDF_CLOSEprocedure, 20 in WIDGET_BASE() function, 89 in HDF_VG_GETINFO procedure, 49 NCDF_CONTROL procedure, 61 in WIDGET_BUTTON() function, 89 NAMED_PIPE keyword NCDF_CONTROLprocedure, 20, 62 in WIDGET_CONTROL procedure, 89 in FILE_TEST() function, 43 NCDF_CREATE() function, 20, 61 in WIDGET_DROPLIST() function, 89 NAMES keyword NCDF_DIMDEF() function, 20, 61 in WIDGET_LABEL() function, 89 in SAVE procedure, 73 NCDF_DIMID() function, 20, 61 in WIDGET_TEXT() function, 90 NAN keyword NCDF_DIMINQ procedure, 61 NO_INTERLACE keyword in BYTSCL() function, 34 NCDF_DIMINQprocedure, 20 in HDF_VD_READ() function, 49 in FINITE() function, 44 NCDF_DIMRENAME procedure, 61 NO_NEWLINE keyword in KURTOSIS() function, 54 NCDF_DIMRENAMEprocedure, 20 in WIDGET_LABEL() function, 89 in MAX() function, 60 NCDF_EXISTS() function, 20, 61 in WIDGET_TEXT() function, 90 in MEAN() function, 60 NCDF_INQUIRE() function, 20, 61 NO_RELEASE keyword in MEANABSDEV() function, 60 NCDF_OPEN() function, 20, 61 in WIDGET_BUTTON() function, 89 in MIN() function, 60 NCDF_VARDEF() function, 20, 61 NO_TYPECONV keyword in MOMENT() function, 60 NCDF_VARGET procedure, 62 in ARRAY_EQUAL() function, 32 in PRODUCT() function, 66 NCDF_VARGET1 procedure, 62 NOAUTOMODE keyword in SKEWNESS() function, 82 NCDF_VARGET1procedure, 20 in OPENR procedure, 64 in SMOOTH() function, 82 NCDF_VARGETprocedure, 20 in OPENU procedure, 64 in STDDEV() function, 83 NCDF_VARID() function, 20, 62 in OPENW procedure, 64 in TOTAL() function, 87 NCDF_VARINQ() function, 20, 62 NOCATCH keyword in TVSCL procedure, 87 NCDF_VARPUT procedure, 62 in SAVE procedure, 73 in VARIANCE() function, 88 NCDF_VARPUTprocedure, 20 NOCLEAR keyword NATTR keyword NCDF_VARRENAME procedure, 62 in CHECK_MATH() function, 37 in HDF_SD_DIMGET procedure, 48 NCDF_VARRENAMEprocedure, 20 NOCLIP keyword NATTS keyword NCOLORS keyword in CONTOUR procedure, 37 in HDF_SD_GETINFO procedure, 49 in LOADCT procedure, 55 in OPLOT procedure, 64 NBINS keyword NCOMPLEMENT keyword in PLOT procedure, 65 in HIST_ND() function, 50 in WHERE() function, 89 in PLOTS procedure, 65 in HISTOGRAM() function, 50 NDIMS keyword in POLYFILL procedure, 66 NCDF_ATTCOPY() function, 20, 60 in HDF_SD_GETINFO procedure, 49 in SURFACE procedure, 85 NCDF_ATTDEL procedure, 60 NENTRIES keyword in XYOUTS procedure, 90 NCDF_ATTDELprocedure, 20 in HDF_VG_GETINFO procedure, 49 NOCLOBBER keyword NCDF_ATTGET procedure, 60 NEWTON() function, 19, 62 in NCDF_CREATE() function, 61 NCDF_ATTGETprocedure,DRAFT 20 NLEVELS keyword NODATA keyword 114 Subject Index

in AXIS procedure, 33 in RANDOMN() function, 68 in RADON() function, 68 in CONTOUR procedure, 37 in RANDOMU() function, 68 NSUM keyword in PLOT procedure, 65 in SURFACE procedure, 85 in OPLOT procedure, 64 in SURFACE procedure, 85 in TV procedure, 87 NTHETA keyword NOERASE keyword in XYOUTS procedure, 90 in RADON() function, 68 in AXIS procedure, 33 NOSHELL keyword NTOHL keyword in CONTOUR procedure, 37 in SPAWN procedure, 82 in BYTEORDER procedure, 34 in PLOT procedure, 65 NOSORT keyword NTOHS keyword in SURFACE procedure, 85 in FILE_SEARCH() function, 43 in BYTEORDER procedure, 34 NOEXPAND_PATH keyword NOTIFY_REALIZE keyword NUM_ALLOC keyword in FILE_COPY procedure, 42 in WIDGET_BASE() function, 89 in MEMORY() function, 60 in FILE_DELETE procedure, 42 in WIDGET_BUTTON() function, 89 NUM_DD keyword in FILE_INFO() function, 43 in WIDGET_DROPLIST() function, 89 in HDF_OPEN() function, 48 in FILE_LINES() function, 43 in WIDGET_LABEL() function, 89 NUM_FREE keyword in FILE_MKDIR procedure, 43 in WIDGET_TEXT() function, 90 in MEMORY() function, 60 in FILE_SAME() function, 43 NOVERBOSE keyword NUM_IMAGES keyword in FILE_TEST() function, 43 in NCDF_CONTROL procedure, 61 in MAGICK_PING() function, 58 NOFILL keyword NOWAIT keyword NUM_RECORDS keyword in NCDF_CONTROL procedure, 61 in CURSOR procedure, 39 in READ_ASCII() function, 69 NOINTERLACE keyword NOWRITE keyword NX keyword in MAGICK_INTERLACE procedure, 58 in NCDF_OPEN() function, 61 in RADON() function, 68 NOISE keyword NOZERO keyword in TRIGRID() function, 87 in MAGICK_ADDNOISE procedure, 57 in BYTARR() function, 33 NY keyword in MAGICK_PING() function, 58 in COMPLEXARR() function, 37 in RADON() function, 68 NONAME keyword in DBLARR() function, 39 in TRIGRID() function, 87 in MESSAGE procedure, 60 in DCOMPLEXARR() function, 39 NONEXCLUSIVE keyword in FLTARR() function, 44 OBJ_CLASS() function, 15, 63 in WIDGET_BASE() function, 89 in INTARR() function, 54 OBJ_DESTROY procedure, 63 NOPREFIX keyword in LON64ARR() function, 57 OBJ_DESTROY() function, 13 in MESSAGE procedure, 60 in LONARR() function, 57 OBJ_DESTROYprocedure, 15 NOPRINT keyword in MAKE_ARRAY() function, 59 OBJ_ISA() function, 15, 63 in MESSAGE procedure, 60 in OBJARR() function, 62 OBJ_NEW() function, 15, 63 NORM() function, 18, 62 in PTRARR() function, 66 OBJ_VALID() function, 15, 64 NORMAL keyword in STRARR() function, 83 OBJ keyword in AXIS procedure, 33 in STRUCT_ASSIGN procedure, 85 in HEAP_GC procedure, 50 in CONTOUR procedure, 37 in UINTARR() function, 88 in MAKE_ARRAY() function, 59 in CONVERT_COORD() function, 37 in ULON64ARR() function, 88 OBJARR() function, 13, 15, 62 in CURSOR procedure, 39 in ULONARR() function, 88 OF in PLOT procedure, 65 NRECORDS keyword in CASE statement, 13 in PLOTS procedure, 65 in HDF_VD_READ() function, 49 in SWITCH statement, 13 in POLYFILL procedure, 66 NRHO keyword DRAFTOFFSET keyword 115

in NCDF_VARGET procedure, 62 in FILE_COPY procedure, 42 in RANDOMN() function, 68 in NCDF_VARGET1 procedure, 62 in REFORM() function, 70 in RANDOMU() function, 68 in NCDF_VARPUT procedure, 62 in REVERSE() function, 70 POISSONNOISE keyword OLDFILL keyword in WTN() function, 90 in MAGICK_ADDNOISE procedure, 57 in NCDF_CONTROL procedure, 61 in MAGICK_PING() function, 58 OMAX keyword POLAR keyword PACKED keyword in HISTOGRAM() function, 50 in OPLOT procedure, 64 in ASSOC() function, 33 OMIN keyword POLY() function, 18, 66 PARAMETERS keyword in HISTOGRAM() function, 50 POLY_2D() function, 27, 66 in ROUTINE_INFO() function, 71 ON_ERROR procedure, 64 POLY_AREA() function, 19, 66 PARENT_DIRECTORY keyword ON_ERRORprocedure, 15 POLYFILL procedure, 66 in PATH_SEP() function, 65 ON_IOERRORprocedure, 15 POLYFILLprocedure, 22 PARSE_URL() function, 24, 25, 65 OPENR procedure, 64 POLYGONS keyword Pascal’s triangle, 51 OPENRprocedure, 20 in MAP_PROJ_FORWARD() function, 59 PASS_METHOD keyword OPENU procedure, 64 POLYLINES keyword in SAVE procedure, 73 OPENUprocedure, 20 in MAP_PROJ_FORWARD() function, 59 PATH_SEP() function, 24, 42, 65 OPENW procedure, 64 POPD procedure, 66 PATH keyword OPENWprocedure, 20 POPDprocedure, 24 in DIALOG_PICKFILE() function, 40 OPLOT procedure, 64 PORTRAIT keyword PHASE keyword OPLOTprocedure, 22 in DEVICE procedure, 39 in ATAN() function, 33 ORDER keyword POSITION keyword PID keyword in READ_JPEG procedure, 69 in CONTOUR procedure, 37 in SPAWN procedure, 82 in READ_PNG() function, 69 in PLOT procedure, 65 PIXEL_TYPE keyword in TV procedure, 87 in SURFACE procedure, 85 in MAGICK_PING() function, 58 in TVRD() function, 87 PRESERVE_NULL keyword PIXMAP keyword in WRITE_JPEG procedure, 90 in STRSPLIT() function, 84 in WINDOW procedure, 90 in WRITE_PNG procedure, 90 in STRTOK() function, 84 PLANARCONFIG keyword ORIENTATION keyword PRESERVE_TYPE keyword in READ_TIFF() function, 69 in POLYFILL procedure, 66 in PRODUCT() function, 66 PLANEINTERLACE keyword in READ_TIFF() function, 69 in TOTAL() function, 87 in MAGICK_INTERLACE procedure, 58 in XYOUTS procedure, 90 PREWITT() function, 27, 66 PLOT procedure, 65 OUT_GLOBAL keyword PRIMES() function, 18, 66 PLOTERR procedure, 65 in NCDF_ATTCOPY() function, 60 PRINT procedure, 66 PLOTERRprocedure, 22 OUTPUT keyword PRINT keyword PLOTprocedure, 22 in HELP procedure, 50 in CHECK_MATH() function, 37 PLOTS procedure, 65 OVERPLOT keyword in FIX() function, 44 PLOTSprocedure, 22 in CONTOUR procedure, 37 in STRING() function, 83 PM procedure, 65 OVERWRITE_PROMPT keyword PRINTD procedure, 66 PMprocedure, 15, 20 in DIALOG_PICKFILE() function, 40 PRINTDprocedure, 24 POINT_LUN procedure, 66 OVERWRITE keyword PRINTF procedure, 66 POINT_LUNprocedure, 20 in FFT() function, 42 PRINTFprocedure, 20 DRAFTPOISSON keyword 116 Subject Index

PRINTprocedure, 15, 20 QUADRATIC keyword READ_PICTprocedure, 27 PRO_SET_VALUE keyword in INTERPOL() function, 54 READ_PNG() function, 27, 69, 71 in WIDGET_BASE() function, 89 QUALITY keyword READ_TIFF() function, 27, 69 in WIDGET_BUTTON() function, 89 in WRITE_JPEG procedure, 90 READ_TIMEOUT keyword in WIDGET_CONTROL procedure, 89 QUERY_BMP() function, 27, 67 in SOCKET procedure, 82 in WIDGET_DROPLIST() function, 89 QUERY_DICOM() function, 27, 68 READ_XWD() function, 27, 69 in WIDGET_LABEL() function, 89 QUERY_GIF() function, 27, 68 READ keyword in WIDGET_TEXT() function, 90 QUERY_IMAGE() function, 27, 68 in DIALOG_PICKFILE() function, 40 PROCEDURES keyword QUERY_JPEG() function, 27, 68 in FILE_TEST() function, 43 in HELP procedure, 50 QUERY_PICT() function, 27, 68 in HDF_OPEN() function, 48 PRODUCT() function, 18, 66 QUERY_PNG() function, 27, 68 in HDF_SD_START() function, 49 PROGRESSIVE keyword QUERY_PPM() function, 27, 68 in HDF_VD_ATTACH() function, 49 in WRITE_JPEG procedure, 90 QUERY_TIFF() function, 27, 68 in HDF_VG_ATTACH() function, 49 PROMPT keyword QUESTION keyword READF procedure, 69 in READ procedure, 68 in DIALOG_MESSAGE() function, 39 READFprocedure, 20 in READF procedure, 69 QUIET keyword READprocedure, 20 PSYM keyword in FILE_COPY procedure, 42 READS procedure, 69 in OPLOT procedure, 64 in FILE_DELETE procedure, 42 READS() function, 25 in PLOT procedure, 65 in FINDFILE() function, 43 READSprocedure, 20 in PLOTERR procedure, 65 in SAVE procedure, 73 READU procedure, 69 in PLOTS procedure, 65 QUOTE keyword READUprocedure, 20 PTR_FREE procedure, 67 in FILE_SEARCH() function, 43 REAL_PART() function, 12, 69 PTR_FREE() function, 13 REALIZE keyword PTR_FREEprocedure, 15 in WIDGET_CONTROL procedure, 89 RADIANS keyword PTR_NEW() function, 15, 67 REBIN() function, 15, 18, 27, 70 in MAP_PROJ_FORWARD() function, 59 PTR_VALID() function, 15, 67 RECALL_COMMANDS() function, 70 in MAP_PROJ_INVERSE() function, 59 PTR keyword RECALL_COMMANDS keyword RADON() function, 27, 68 in HEAP_GC procedure, 50 in HELP procedure, 50 RANDOMN() function, 19, 68 in MAKE_ARRAY() function, 59 RECALL_COMMANDSprocedure, 17 RANDOMU() function, 19, 68 PTRARR() function, 13, 15, 66 RECORD_START keyword RDWR keyword PTRARRprocedure, 15 in READ_ASCII() function, 69 in HDF_OPEN() function, 48 PUSHBUTTON_EVENTS keyword RECURSIVE keyword in HDF_SD_START() function, 49 in WIDGET_BUTTON() function, 89 in FILE_COPY procedure, 42 READ procedure, 68 PUSHD procedure, 67 in FILE_DELETE procedure, 42 READ_ASCII() function, 69 PUSHDprocedure, 24 REDEF keyword READ_ASCIIprocedure, 20 PY_PLOT procedure, 67 in NCDF_CONTROL procedure, 61 READ_BINARY() function, 20, 69 PY_PRINT procedure, 67 REF keyword READ_BMP() function, 27, 69 PYTHON procedure, 67 in HDF_VD_GET procedure, 49 READ_DICOM() function, 27, 69 PYTHON() function, 14, 31, 67 in HDF_VG_GETINFO procedure, 49 READ_JPEG procedure, 69 PYTHONprocedure, 14, 31 REFORM() function, 15, 70 READ_JPEGprocedure, 27 REGEX keyword DRAFTREAD_PICT procedure, 69 117

in STRSPLIT() function, 84 RETALL keyword RUNTIME keyword in STRTOK() function, 84 in RETALL procedure, 70 in LMGR() function, 55 REGULAR keyword RETALLprocedure, 17 in FILE_TEST() function, 43 RETURN_TYPE keyword S_FUNCTIONS keyword RELAXED_STRUCTURE_ASSIGNMENT keyword in CALL_EXTERNAL() function, 34 in ROUTINE_NAMES() function, 71 in RESTORE procedure, 70 REVERSE() function, 15, 18, 70 S_PROCEDURES keyword REMOVE_ALL keyword REVERSE_INDICES keyword in ROUTINE_NAMES() function, 71 in STR_SEP() function, 85 in HIST_ND() function, 50 S_VALUE keyword in STRCOMPRESS() function, 83 in HISTOGRAM() function, 50 in CALL_EXTERNAL() function, 34 REPEAT, 14 REVERSE_OFFSET keyword SAMPLE keyword REPLICATE() function, 13, 15, 18, 70 in STRMID() function, 84 in REBIN() function, 70 REPLICATE_INPLACE procedure, 70 in STRPOS() function, 84 SAVE procedure, 73 REPLICATE_INPLACEprocedure, 15, 18 REVERSE_SEARCH keyword SAVE keyword REQUIRE_DIRECTORY keyword in STRPOS() function, 84 in AXIS procedure, 33 in FILE_COPY procedure, 42 RGB keyword SAVEprocedure, 21 RESET keyword in MAGICK_READ() function, 59 SCALE keyword in CPU procedure, 39 in MAGICK_WRITE procedure, 59 in HDF_SD_DIMGET procedure, 48 in MAP_CLIP_SET procedure, 59 in READ_BMP() function, 69 SCOPE_VARFETCH() function, 17, 73 in MESSAGE procedure, 60 in WRITE_BMP procedure, 90 SCR_XSIZE keyword RESOLUTION keyword RHO keyword in WIDGET_BASE() function, 89 in GET_SCREEN_SIZE() function, 45 in RADON() function, 68 in WIDGET_BUTTON() function, 89 RESOLVE_ROUTINE procedure, 70 RIVERS keyword in WIDGET_DROPLIST() function, 89 RESOLVE_ROUTINEprocedure, 17 in MAP_CONTINENTS procedure, 59 in WIDGET_LABEL() function, 89 RESOURCE_NAME keyword RK4() function, 19, 70 in WIDGET_TEXT() function, 90 in DIALOG_MESSAGE() function, 39 RK4JMG() function, 70 SCR_YSIZE keyword in DIALOG_PICKFILE() function, 40 RMIN keyword in WIDGET_BASE() function, 89 in WIDGET_BASE() function, 89 in RADON() function, 68 in WIDGET_BUTTON() function, 89 in WIDGET_DROPLIST() function, 89 RNAME_MBAR keyword in WIDGET_DROPLIST() function, 89 in WIDGET_LABEL() function, 89 in WIDGET_BASE() function, 89 in WIDGET_LABEL() function, 89 in WIDGET_TEXT() function, 90 ROBERTS() function, 27, 70 in WIDGET_TEXT() function, 90 RESTORE procedure, 70 ROOT_DIR keyword SCROLL keyword RESTORE keyword in FILEPATH() function, 42 in WIDGET_BASE() function, 89 in CPU procedure, 39 ROTATE() function, 15, 18, 27, 70 in WIDGET_LABEL() function, 89 RESTORED_OBJECTS keyword ROUND() function, 18, 71 in WIDGET_TEXT() function, 90 in RESTORE procedure, 70 ROUTINE_INFO() function, 17, 71, 73 SDEV keyword RESTOREprocedure, 21 ROUTINE_NAMES() function, 17, 71 in MOMENT() function, 60 RESULT keyword ROUTINES keyword SEARCH_PATH keyword in APPLEMAN procedure, 32 in HELP procedure, 50 in PATH_SEP() function, 65 RETAIN keyword ROW keyword SECONDS keyword in WINDOW procedure, 90 in WIDGET_BASE() function, 89 in SYSTIME() function, 86 RETALL procedure, 70 RSTRPOS() function, 25, 73 DRAFTSEM_CREATE() function, 28, 73 118 Subject Index

SEM_DELETE procedure, 73 SHORTFORM keyword SPL_INIT() function, 18, 82 SEM_DELETEprocedure, 28 in HELPFORM() function, 50 SPL_INIT_OLD() function, 82 SEM_LOCK() function, 28, 73 SHOW_LIST keyword SPL_INTERP() function, 18, 82 SEM_RELEASE procedure, 73 in ESCAPE_SPECIAL_CHAR() function, 41 SPL_INTERP_OLD() function, 82 SEM_RELEASEprocedure, 28 SHOWFONT procedure, 73 SPLINE keyword SENSITIVE keyword SHOWFONTprocedure, 23 in INTERPOL() function, 54 in WIDGET_BASE() function, 89 SIGNED keyword SPLIT keyword in WIDGET_BUTTON() function, 89 in POLY_AREA() function, 66 in MAP_CLIP_SET procedure, 59 in WIDGET_CONTROL procedure, 89 SILENT keyword SQRT() function, 12, 18, 83 in WIDGET_DROPLIST() function, 89 in LOADCT procedure, 55 SSWAP keyword in WIDGET_LABEL() function, 89 SIN() function, 18, 81 in BYTEORDER procedure, 34 in WIDGET_TEXT() function, 90 SINDGEN() function, 15, 25, 81 START keyword SEPARATOR keyword SINGLE keyword in HDF_SD_ADDDATA procedure, 48 in WIDGET_BUTTON() function, 89 in HELPFORM() function, 50 in HDF_SD_GETDATA procedure, 49 SET_BUTTON keyword in STRJOIN() function, 83 STATUS keyword in WIDGET_CONTROL procedure, 89 SINH() function, 18, 81 in EXIT procedure, 41 SET_CHARACTER_SIZE keyword SITE_NOTICE keyword in SAVE procedure, 73 in DEVICE procedure, 39 in LMGR() function, 55 STDDEV() function, 18, 83 SET_DROPLIST_SELECT keyword SIZE() function, 12, 14, 15, 35, 82 STDIO_NON_FINITE keyword in WIDGET_CONTROL procedure, 89 SIZE keyword in PRINT procedure, 66 SET_PLOT procedure, 73 in HELPFORM() function, 50 in PRINTF procedure, 66 SET_PLOTprocedure, 22 in MAKE_ARRAY() function, 59 in STOP procedure, 83 SET_RESOLUTION keyword SKEWNESS() function, 18, 82 STDIO keyword in DEVICE procedure, 39 SKIP_LUN procedure, 82 in OPENR procedure, 64 SET_UNAME keyword SKIP_LUNprocedure, 20 in OPENU procedure, 64 in WIDGET_CONTROL procedure, 89 SMOOTH() function, 27, 82 in OPENW procedure, 64 SET_UVALUE keyword SOBEL() function, 27, 82 in SOCKET procedure, 82 in WIDGET_CONTROL procedure, 89 SOCKET procedure, 82 STIRLING keyword SET_VALUE keyword SOCKET keyword in FACTORIAL() function, 41 in WIDGET_CONTROL procedure, 89 in FILE_TEST() function, 43 STOP procedure, 83 SETENV procedure, 73 SOCKETprocedure, 24 STOPprocedure, 17 SETENVprocedure, 24 SORT() function, 15, 25, 82 STORE keyword SH_LOCATION keyword SPACE keyword in ROUTINE_NAMES() function, 71 in FINDFILE() function, 43 in WIDGET_BASE() function, 89 STR_SEP() function, 25, 85 SH keyword SPACING keyword STRARR() function, 13, 15, 25, 83 in SPAWN procedure, 82 in POLYFILL procedure, 66 STRCMP() function, 25, 83 SHIFT() function, 18, 73 SPAWN procedure, 82 STRCOMPRESS() function, 25, 83 SHORT keyword SPAWN_OPTIONS keyword STREAM keyword in HDF_SD_CREATE() function, 48 in FINDFILE() function, 43 in OPENR procedure, 64 in NCDF_ATTPUT procedure, 61 SPAWNprocedure, 24 in OPENU procedure, 64 DRAFTin NCDF_VARDEF() function, 61 SPHER_HARM() function, 18, 82 in OPENW procedure, 64 119

STREGEX() function, 25, 83 in FILEPATH() function, 42 in SWAP_ENDIAN_INPLACE procedure, 86 STRIDE keyword SUBEXPR keyword SWITCH, 13 in HDF_SD_ADDDATA procedure, 48 in STREGEX() function, 83 SYMLINK keyword in HDF_SD_GETDATA procedure, 49 SUBSCRIPT_MAX keyword in FILE_TEST() function, 43 in NCDF_VARGET procedure, 62 in MIN() function, 60 SYMSIZE keyword in NCDF_VARPUT procedure, 62 SUBSCRIPT_MIN keyword in OPLOT procedure, 64 STRING() function, 13, 25, 83 in MAX() function, 60 in PLOT procedure, 65 STRING keyword SUBTITLE keyword in PLOTS procedure, 65 in HDF_SD_CREATE() function, 48 in AXIS procedure, 33 SYNC keyword in INDGEN() function, 54 in CONTOUR procedure, 37 in NCDF_CONTROL procedure, 61 in MAKE_ARRAY() function, 59 in PLOT procedure, 65 SYSTEM keyword STRJOIN() function, 25, 83 in SURFACE procedure, 85 in ROUTINE_INFO() function, 71 STRLEN() function, 25, 84 SUPERCLASS keyword SYSTIME() function, 26, 86 STRLOWCASE() function, 84 in OBJ_CLASS() function, 63 STRLOWERCASE() function, 25 SURFACE procedure, 85 T3D keyword STRMID() function, 25, 84 SURFACEprocedure, 22 in AXIS procedure, 33 STRPOS() function, 25, 84 SVDC procedure, 86 in CONTOUR procedure, 37 STRPUT procedure, 84 SVDCprocedure, 18 in CONVERT_COORD() function, 37 STRPUT() function, 25 SWAP_ENDIAN() function, 19, 20, 86 in OPLOT procedure, 64 STRSPLIT() function, 25, 84 SWAP_ENDIAN_INPLACE procedure, 86 in PLOTS procedure, 65 STRTOK() function, 25, 84 SWAP_ENDIAN_INPLACEprocedure, 19, 20 in SURFACE procedure, 85 STRTRIM() function, 25, 85 SWAP_ENDIAN keyword T_PDF() function, 18, 87 STRUCT_ALIGN_BYTES keyword in OPENR procedure, 64 TAB_MODE keyword in CALL_EXTERNAL() function, 34 in OPENU procedure, 64 in WIDGET_BUTTON() function, 89 STRUCT_ASSIGN procedure, 85 in OPENW procedure, 64 in WIDGET_DROPLIST() function, 89 STRUCT_ASSIGNprocedure, 15 in SOCKET procedure, 82 in WIDGET_LABEL() function, 89 STRUCTURE_NAME keyword SWAP_IF_BIG_ENDIAN keyword in WIDGET_TEXT() function, 90 in HELPFORM() function, 50 in BYTEORDER procedure, 34 TAG_NAMES() function, 15, 86 in TAG_NAMES() function, 86 in OPENR procedure, 64 TAG keyword STRUCTURE keyword in OPENU procedure, 64 in HDF_VD_GET procedure, 49 in MEMORY() function, 60 in OPENW procedure, 64 in HDF_VG_GETINFO procedure, 49 in SIZE() function, 82 in SOCKET procedure, 82 TAGFORM keyword STRUCTURES keyword in SWAP_ENDIAN() function, 86 in HELPFORM() function, 50 in HELP procedure, 50 in SWAP_ENDIAN_INPLACE procedure, 86 TAN() function, 18, 86 STRUPCASE() function, 25, 85 SWAP_IF_LITTLE_ENDIAN keyword TANH() function, 18, 86 STUDENT keyword in BYTEORDER procedure, 34 TEMPLATE procedure, 86 in LMGR() function, 55 in OPENR procedure, 64 TEMPLATE_BLANK procedure, 87 SUB_RECT keyword in OPENU procedure, 64 TEMPLATE keyword in MAGICK_READ() function, 59 in OPENW procedure, 64 in READ_ASCII() function, 69 in READ_TIFF() function, 69 in SOCKET procedure, 82 in READ_BINARY() function, 69 SUBDIRECTORY keyword in SWAP_ENDIAN() function, 86 DRAFTTEMPORARY() function, 12, 13, 17, 87 120 Subject Index

TERMINAL keyword in WIDGET_BASE() function, 89 in CPU procedure, 39 in FILEPATH() function, 42 in WIDGET_DROPLIST() function, 89 TRACE() function, 18, 87 TEST keyword in WINDOW procedure, 90 TRACEBACK keyword in DERIV() function, 39 TLB_FRAME_ATTR keyword in MESSAGE procedure, 60 in DIALOG_PICKFILE() function, 40 in WIDGET_BASE() function, 89 TRACKING_EVENTS keyword in ESCAPE_SPECIAL_CHAR() function, 41 TLB_ICONIFY_EVENTS keyword in WIDGET_BASE() function, 89 in FILE_COPY procedure, 42 in WIDGET_BASE() function, 89 in WIDGET_BUTTON() function, 89 in FILE_DELETE procedure, 42 TLB_KILL_REQUEST_EVENTS keyword in WIDGET_DROPLIST() function, 89 in FINDFILE() function, 43 in WIDGET_BASE() function, 89 in WIDGET_LABEL() function, 89 in PATH_SEP() function, 65 TLB_MOVE_EVENTS keyword in WIDGET_TEXT() function, 90 in PLOTERR procedure, 65 in WIDGET_BASE() function, 89 TRANSFER_COUNT keyword in SAVE procedure, 73 TLB_SIZE_EVENTS keyword in READU procedure, 69 in SKIP_LUN procedure, 82 in WIDGET_BASE() function, 89 in SKIP_LUN procedure, 82 in SMOOTH() function, 82 TMP keyword in WRITEU procedure, 90 in STR_SEP() function, 85 in FILEPATH() function, 42 TRANSFORM keyword in STRSPLIT() function, 84 TNAME keyword in MAP_CLIP_SET procedure, 59 TETRIS procedure, 87 in SIZE() function, 82 TRANSPARENT keyword THEN, 12 TO_DATA keyword in READ_PNG() function, 69 THETA keyword in CONVERT_COORD() function, 37 in WRITE_PNG procedure, 90 in RADON() function, 68 TO_DEVICE keyword TRANSPOSE() function, 15, 18, 87 THICK keyword in CONVERT_COORD() function, 37 TRIAL keyword in AXIS procedure, 33 TO_NORMAL keyword in LMGR() function, 55 in CONTOUR procedure, 37 in CONVERT_COORD() function, 37 TRIGRID() function, 19, 87 in OPLOT procedure, 64 TOLF keyword TRIM keyword in PLOT procedure, 65 in BROYDEN() function, 33 in STR_SEP() function, 85 in PLOTS procedure, 65 in NEWTON() function, 62 TRUE keyword in POLYFILL procedure, 66 TOLX keyword in READ_JPEG procedure, 69 in SURFACE procedure, 85 in BROYDEN() function, 33 in TV procedure, 87 TICKLEN keyword in NEWTON() function, 62 in TVRD() function, 87 in AXIS procedure, 33 TOOLBAR keyword in WRITE_JPEG procedure, 90 in CONTOUR procedure, 37 in WIDGET_BASE() function, 89 TRUECOLOR keyword in PLOT procedure, 65 TOOLTIP keyword in MAGICK_QUANTIZE procedure, 58 in SURFACE procedure, 85 in WIDGET_BUTTON() function, 89 TT_FONT keyword TITLE keyword TOP keyword in SHOWFONT procedure, 73 in CONTOUR procedure, 37 in BYTSCL() function, 34 TV procedure, 87 in DIALOG_MESSAGE() function, 39 TOTAL() function, 18, 87 TV() function, 22 in DIALOG_PICKFILE() function, 40 TPOOL_MAX_ELTS keyword TVLCT procedure, 87 in PLOT procedure, 65 in CPU procedure, 39 TVLCT() function, 22 in PM procedure, 65 TPOOL_MIN_ELTS keyword TVprocedure, 15, 65 in PY_PLOT procedure, 67 in CPU procedure, 39 TVRD() function, 22, 65, 87 DRAFTin SURFACE procedure, 85 TPOOL_NTHREADS keyword TVSCL procedure, 87 121

TVSCL() function, 22 in WIDGET_DROPLIST() function, 89 VALID keyword TWO_PASS_QUANTIZE keyword in WIDGET_LABEL() function, 89 in WIDGET_INFO() function, 89 in READ_JPEG procedure, 69 in WIDGET_TEXT() function, 90 VALUE_LOCATE() function, 18, 88 TYPE keyword UNIFORM keyword VALUE keyword in FIX() function, 44 in RANDOMN() function, 68 in CALL_EXTERNAL() function, 34 in HDF_SD_ATTRINFO procedure, 48 in RANDOMU() function, 68 in MAKE_ARRAY() function, 59 in HDF_SD_GETINFO procedure, 49 UNIFORMNOISE keyword in WIDGET_BUTTON() function, 89 in INDGEN() function, 54 in MAGICK_ADDNOISE procedure, 57 in WIDGET_DROPLIST() function, 89 in MAGICK_PING() function, 58 in MAGICK_PING() function, 58 in WIDGET_LABEL() function, 89 in MAKE_ARRAY() function, 59 UNIQ() function, 15, 18, 25, 88 in WIDGET_TEXT() function, 90 in PLOTERR procedure, 65 UNIT keyword VARIABLES keyword in SIZE() function, 82 in HDF_SD_GETINFO procedure, 49 in ROUTINE_NAMES() function, 71 in READ_JPEG procedure, 69 VARIANCE() function, 18, 88 in SPAWN procedure, 82 VARSTATUS keyword UI_VALUE keyword in WRITE_JPEG procedure, 90 in SAVE procedure, 73 in CALL_EXTERNAL() function, 34 UNITS keyword VAX_FLOAT keyword UINDGEN() function, 13, 15, 87 in WIDGET_BASE() function, 89 in OPENR procedure, 64 UINT() function, 12, 13, 88 in WIDGET_BUTTON() function, 89 in OPENU procedure, 64 UINT keyword in WIDGET_DROPLIST() function, 89 in OPENW procedure, 64 in INDGEN() function, 54 in WIDGET_LABEL() function, 89 VECTOR_ENABLE keyword in MAKE_ARRAY() function, 59 in WIDGET_TEXT() function, 90 in CPU procedure, 39 UINTARR() function, 13, 15, 88 UNLIMITED keyword VERBOSE keyword UL64_VALUE keyword in NCDF_DIMDEF() function, 61 in DIALOG_PICKFILE() function, 40 in CALL_EXTERNAL() function, 34 UNLOAD keyword in ESCAPE_SPECIAL_CHAR() function, 41 UL64 keyword in CALL_EXTERNAL() function, 34 in FILE_COPY procedure, 42 in FACTORIAL() function, 41 UNTIL, 14 in FILE_DELETE procedure, 42 in INDGEN() function, 54 UP keyword in FINDFILE() function, 43 in MAKE_ARRAY() function, 59 in CURSOR procedure, 39 in HEAP_GC procedure, 50 UL64INDGEN() function, 13, 15, 88 UPPER keyword in NCDF_CONTROL procedure, 61 UL_VALUE keyword in LA_TRIRED procedure, 54 in READ_ASCII() function, 69 in CALL_EXTERNAL() function, 34 USEUNIT keyword in READ_PNG() function, 69 ULINDGEN() function, 13, 15, 88 in SAVE procedure, 73 in READ_TIFF() function, 69 ULON64ARR() function, 13, 15, 88 UTC keyword in RESTORE procedure, 70 ULONARR() function, 13, 15, 88 in SYSTIME() function, 86 in SAVE procedure, 73 ULONG() function, 12, 13, 88 UVALUE keyword in SMOOTH() function, 82 ULONG64() function, 12, 13, 88 in WIDGET_BASE() function, 89 in STRUCT_ASSIGN procedure, 85 ULONG keyword in WIDGET_BUTTON() function, 89 in WRITE_PNG procedure, 90 in INDGEN() function, 54 in WIDGET_DROPLIST() function, 89 VERSION keyword in MAKE_ARRAY() function, 59 in WIDGET_LABEL() function, 89 in WIDGET_INFO() function, 89 UNAME keyword in WIDGET_TEXT() function, 90 VM keyword in WIDGET_BASE() function, 89 in LMGR() function, 55 DRAFTin WIDGET_BUTTON() function, 89 122 Subject Index

VOIGT() function, 18, 88 WRITE_PNG procedure, 90 in CONTOUR procedure, 37 WRITE_PNGprocedure, 27, 71 in SURFACE procedure, 85 WRITE_TIMEOUT keyword XGUESS keyword WAIT procedure, 88 in SOCKET procedure, 82 in IMSL_ZEROSYS() function, 54 WAIT keyword WRITE keyword XLABEL keyword in CURSOR procedure, 39 in DIALOG_PICKFILE() function, 40 in PY_PLOT procedure, 67 WAITprocedure, 24 in FILE_TEST() function, 43 XLOG keyword WDELETE procedure, 88 in HDF_OPEN() function, 48 in AXIS procedure, 33 WDELETEprocedure, 22 in HDF_VD_ATTACH() function, 49 in CONTOUR procedure, 37 WHERE() function, 15, 32, 89 in HDF_VG_ATTACH() function, 49 in PLOT procedure, 65 WHILE, 14 in NCDF_OPEN() function, 61 in PLOTERR procedure, 65 WIDGET_BASE() function, 29, 89 WRITEprocedure, 20 in SURFACE procedure, 85 WIDGET_BUTTON() function, 29, 89 WRITEU procedure, 90 XMANAGER_ACTIVE_COMMAND keyword WIDGET_CONTROL procedure, 89 WSET procedure, 90 in WIDGET_CONTROL procedure, 89 WIDGET_CONTROLprocedure, 29 WSETprocedure, 22 XMANAGER_BLOCK keyword WIDGET_DROPLIST() function, 29, 89 WSHOW procedure, 90 in WIDGET_EVENT() function, 89 WIDGET_EVENT() function, 29, 89 WSHOWprocedure, 22 in WIDGET_INFO() function, 89 WIDGET_INFO() function, 29, 89 WTN() function, 19, 90 XMARGIN keyword WIDGET_LABEL() function, 29, 89 in AXIS procedure, 33 WIDGET_TEXT() function, 29, 90 in CONTOUR procedure, 37 WIDTH keyword X_BITMAP_EXTRA keyword in PLOT procedure, 65 in HELPFORM() function, 50 in WIDGET_BUTTON() function, 89 in SURFACE procedure, 85 in OPENR procedure, 64 X_SCROLL_SIZE keyword XMIN keyword in OPENU procedure, 64 in WIDGET_BASE() function, 89 in RADON() function, 68 in OPENW procedure, 64 XAXIS keyword XMINOR keyword in SOCKET procedure, 82 in AXIS procedure, 33 in AXIS procedure, 33 in XYOUTS procedure, 90 XCHARSIZE keyword in CONTOUR procedure, 37 WINDOW procedure, 90 in AXIS procedure, 33 in PLOT procedure, 65 WINDOW_STATE keyword in CONTOUR procedure, 37 in SURFACE procedure, 85 in DEVICE procedure, 39 in PLOT procedure, 65 XOFFSET keyword WINDOWprocedure, 22 in SURFACE procedure, 85 in WIDGET_BASE() function, 89 WORDS keyword XDR keyword in WIDGET_BUTTON() function, 89 in TVRD() function, 87 in OPENR procedure, 64 in WIDGET_DROPLIST() function, 89 WRAP keyword in OPENU procedure, 64 in WIDGET_LABEL() function, 89 in WIDGET_LABEL() function, 89 in OPENW procedure, 64 in WIDGET_TEXT() function, 90 in WIDGET_TEXT() function, 90 in SAVE procedure, 73 XPAD keyword WRITE_BMP procedure, 90 XDRTOD keyword in WIDGET_BASE() function, 89 WRITE_BMPprocedure, 27 in BYTEORDER procedure, 34 XPOS keyword WRITE_JPEG procedure, 90 XDRTOF keyword in WINDOW procedure, 90 WRITE_JPEGprocedure, 27 in BYTEORDER procedure, 34 XRANGE keyword WRITE_PICT procedure, 90 XGRIDSTYLE keyword in AXIS procedure, 33 WRITE_PICTprocedure,DRAFT 27 in AXIS procedure, 33 123

in CONTOUR procedure, 37 XTICKNAME keyword in PY_PLOT procedure, 67 in PLOT procedure, 65 in AXIS procedure, 33 YLOG keyword in PLOTERR procedure, 65 in CONTOUR procedure, 37 in AXIS procedure, 33 in SURFACE procedure, 85 in SURFACE procedure, 85 in CONTOUR procedure, 37 XSIZE keyword XTICKS keyword in PLOT procedure, 65 in DEVICE procedure, 39 in AXIS procedure, 33 in PLOTERR procedure, 65 in TV procedure, 87 in CONTOUR procedure, 37 in SURFACE procedure, 85 in WIDGET_BASE() function, 89 in PLOT procedure, 65 YMARGIN keyword in WIDGET_BUTTON() function, 89 in SURFACE procedure, 85 in AXIS procedure, 33 in WIDGET_DROPLIST() function, 89 XTICKUNITS keyword in CONTOUR procedure, 37 in WIDGET_LABEL() function, 89 in SURFACE procedure, 85 in PLOT procedure, 65 in WIDGET_TEXT() function, 90 XTICKV keyword in SURFACE procedure, 85 in WINDOW procedure, 90 in CONTOUR procedure, 37 YMIN keyword XSTYLE keyword in SURFACE procedure, 85 in RADON() function, 68 in AXIS procedure, 33 XTITLE keyword YMINOR keyword in CONTOUR procedure, 37 in AXIS procedure, 33 in AXIS procedure, 33 in PLOT procedure, 65 in CONTOUR procedure, 37 in CONTOUR procedure, 37 in SURFACE procedure, 85 in PLOT procedure, 65 in PLOT procedure, 65 XTHICK keyword in SURFACE procedure, 85 in SURFACE procedure, 85 in AXIS procedure, 33 XTYPE keyword YNOZERO keyword in CONTOUR procedure, 37 in AXIS procedure, 33 in AXIS procedure, 33 in PLOT procedure, 65 in CONTOUR procedure, 37 in PLOT procedure, 65 in SURFACE procedure, 85 in PLOT procedure, 65 YOFFSET keyword XTICK_GET keyword in SURFACE procedure, 85 in WIDGET_BASE() function, 89 in CONTOUR procedure, 37 XYOUTS procedure, 90 in WIDGET_BUTTON() function, 89 in SURFACE procedure, 85 XYOUTSprocedure, 22 in WIDGET_DROPLIST() function, 89 XTICKFORMAT keyword in WIDGET_LABEL() function, 89 in AXIS procedure, 33 in WIDGET_TEXT() function, 90 Y_SCROLL_SIZE keyword in CONTOUR procedure, 37 YP0 keyword in WIDGET_BASE() function, 89 in PLOT procedure, 65 in SPL_INIT() function, 82 YAXIS keyword in SURFACE procedure, 85 in SPL_INIT_OLD() function, 82 in AXIS procedure, 33 XTICKINTERVAL keyword YPAD keyword YCHARSIZE keyword in AXIS procedure, 33 in WIDGET_BASE() function, 89 in AXIS procedure, 33 in SURFACE procedure, 85 YPN_1 keyword in CONTOUR procedure, 37 XTICKLAYOUT keyword in SPL_INIT() function, 82 in PLOT procedure, 65 in SURFACE procedure, 85 in SPL_INIT_OLD() function, 82 in SURFACE procedure, 85 XTICKLEN keyword YPOS keyword YGRIDSTYLE keyword in AXIS procedure, 33 in WINDOW procedure, 90 in AXIS procedure, 33 in CONTOUR procedure, 37 YRANGE keyword in CONTOUR procedure, 37 in PLOT procedure, 65 in AXIS procedure, 33 in SURFACE procedure, 85 in SURFACE procedure, 85 in CONTOUR procedure, 37 DRAFTYLABEL keyword 124 Subject Index

in PLOT procedure, 65 in AXIS procedure, 33 ZERO_LENGTH keyword in PLOTERR procedure, 65 in CONTOUR procedure, 37 in FILE_TEST() function, 43 in SURFACE procedure, 85 in SURFACE procedure, 85 ZGRIDSTYLE keyword YSIZE keyword YTICKS keyword in AXIS procedure, 33 in DEVICE procedure, 39 in AXIS procedure, 33 in CONTOUR procedure, 37 in TV procedure, 87 in CONTOUR procedure, 37 in PLOT procedure, 65 in WIDGET_BASE() function, 89 in PLOT procedure, 65 in SURFACE procedure, 85 in WIDGET_BUTTON() function, 89 in SURFACE procedure, 85 ZLOG keyword in WIDGET_DROPLIST() function, 89 YTICKUNITS keyword in CONTOUR procedure, 37 in WIDGET_LABEL() function, 89 in SURFACE procedure, 85 in SURFACE procedure, 85 in WIDGET_TEXT() function, 90 YTICKV keyword ZMARGIN keyword in WINDOW procedure, 90 in CONTOUR procedure, 37 in AXIS procedure, 33 YSTYLE keyword in SURFACE procedure, 85 in CONTOUR procedure, 37 in AXIS procedure, 33 YTITLE keyword in PLOT procedure, 65 in CONTOUR procedure, 37 in AXIS procedure, 33 in SURFACE procedure, 85 in PLOT procedure, 65 in CONTOUR procedure, 37 ZMINOR keyword in SURFACE procedure, 85 in PLOT procedure, 65 in AXIS procedure, 33 YTHICK keyword in SURFACE procedure, 85 in CONTOUR procedure, 37 in AXIS procedure, 33 YTYPE keyword in PLOT procedure, 65 in CONTOUR procedure, 37 in AXIS procedure, 33 in SURFACE procedure, 85 in PLOT procedure, 65 in CONTOUR procedure, 37 ZRANGE keyword in SURFACE procedure, 85 in PLOT procedure, 65 in AXIS procedure, 33 YTICK_GET keyword in SURFACE procedure, 85 in CONTOUR procedure, 37 in CONTOUR procedure, 37 YUV keyword in PLOT procedure, 65 in SURFACE procedure, 85 in MAGICK_QUANTIZE procedure, 58 in SURFACE procedure, 85 YTICKFORMAT keyword ZSTYLE keyword in AXIS procedure, 33 in AXIS procedure, 33 Z_BUFFERING keyword in CONTOUR procedure, 37 in CONTOUR procedure, 37 in DEVICE procedure, 39 in PLOT procedure, 65 in PLOT procedure, 65 Z keyword in SURFACE procedure, 85 in SURFACE procedure, 85 in XYOUTS procedure, 90 YTICKINTERVAL keyword ZTHICK keyword ZCHARSIZE keyword in AXIS procedure, 33 in AXIS procedure, 33 in AXIS procedure, 33 in SURFACE procedure, 85 in CONTOUR procedure, 37 in CONTOUR procedure, 37 YTICKLAYOUT keyword in PLOT procedure, 65 in PLOT procedure, 65 in SURFACE procedure, 85 in SURFACE procedure, 85 in SURFACE procedure, 85 YTICKLEN keyword ZTICK_GET keyword ZENITY_NAME keyword in AXIS procedure, 33 in CONTOUR procedure, 37 in DIALOG_MESSAGE() function, 39 in CONTOUR procedure, 37 in SURFACE procedure, 85 in DIALOG_PICKFILE() function, 40 in PLOT procedure, 65 ZTICKFORMAT keyword ZENITY_PATH keyword in SURFACE procedure, 85 in AXIS procedure, 33 in DIALOG_MESSAGE() function, 39 YTICKNAME keyword in CONTOUR procedure, 37 DRAFTin DIALOG_PICKFILE() function, 40 125

in PLOT procedure, 65 in CONTOUR procedure, 37 in AXIS procedure, 33 in SURFACE procedure, 85 in SURFACE procedure, 85 in CONTOUR procedure, 37 ZTICKINTERVAL keyword ZTICKS keyword in PLOT procedure, 65 in SURFACE procedure, 85 in AXIS procedure, 33 in SURFACE procedure, 85 ZTICKLAYOUT keyword in CONTOUR procedure, 37 ZTYPE keyword in SURFACE procedure, 85 in PLOT procedure, 65 in CONTOUR procedure, 37 ZTICKLEN keyword in SURFACE procedure, 85 in SURFACE procedure, 85 in AXIS procedure, 33 ZTICKUNITS keyword ZVALUE keyword in CONTOUR procedure, 37 in SURFACE procedure, 85 in AXIS procedure, 33 in PLOT procedure, 65 ZTICKV keyword in CONTOUR procedure, 37 in SURFACE procedure, 85 in CONTOUR procedure, 37 in PLOT procedure, 65 ZTICKNAME keyword in SURFACE procedure, 85 in SURFACE procedure, 85 in AXIS procedure, 33 ZTITLE keyword DRAFT Bibliography

[1] Fundation, F. S.: GNU General Public License, version 2, URL http://www.gnu.org/ licenses/old-licenses/gpl-2.0.html, 1991. [2] Galassi, M., Davies, J., Theiler, J., Gough, B., Jungman, G., Alken, P., Booth, M., and Rossi, F.: GNU Scientific Library Reference Manual - Third Edition (v1.12), Network Theory Ltd., URL http://www.gnu.org/software/gsl/manual/, 2009. {7} [3] Markwardt, C.: Non-linear Least-squares Fitting in IDL with MPFIT, in: Astronomical Society of the Pacific Conference Series, edited by Bohlender, D., Durand, D., and Dowler, P., vol. 411 of Astronomical Society of the Pacific Conference Series, URL http://cdsads.u-strasbg.fr/abs/2009ASPC..411..251M, 2009. {19} [4] Paoli, S.: C++ Coding Standard Specification, Tech. rep., CERN European Labo- ratory for Particle Physics, URL http://pst.web.cern.ch/PST/HandBookWorkBook/ Handbook/Programming/CodingStandard/c++standard.pdf, 2000. {92} [5] Snyder, J.: Map projections–A working manual, Tech. Rep. 1395, U.S. Geological Survey, URL http://pubs.er.usgs.gov/djvu/PP/pp_1395.djvu, 1987. {55} [6] van Rossum, G. and Fred L. Drake, J.: The Python Language Reference Manual, Network Theory Ltd., URL http://docs.python.org/reference/, 2006. {31} [7] Wessel, P. and Smith, W. H. F.: A global, self-consistent, hierarchical, high-resolution shoreline database, J. Geophys. Res., 101, 8741–8743, doi:10.1029/96JB00104, 1996. {59} [8] Wolcott, N. and Hilsenrath, J.: Tables of coordinates for Hershey’s repertory of occidental type fonts and graphic symbols. A contribution to computer typesetting techniques., NBS specialDRAFT publication 424, National Bureau of Standards, 1975. {23}