The great majority of features in the basic IDL and PV-WAVE languages are identical. An even higher proportion of the UKMO library is the same as far as the user is concerned, because the differences between IDL and PV-WAVE have been dealt with. This table describes some divergences between the languages, indicating commands and variables in IDL and PV-WAVE that have roughly corresponding uses. The correspondences do not imply identical syntax or definition. Emphasised text is a comment. Bold text indicates features provided by the UKMO PV-WAVE or IDL libraries, rather than the basic languages.

IDL PV-WAVE
? help
Anonymous structures have a slightly different syntax in IDL and PV-WAVE: in IDL struct={tag1:value1,...} and in PV-WAVE struct={,tag1:value1,...}.
In IDL array subscripts can be written either in round brackets () or square brackets []. In PV-WAVE only round brackets are allowed.
arg_present param_present
Implemented by the vendors of IDL for the Met Office as an extension to the language before IDL8.0; from IDL8.0, hashes are part of the language. associative arrays
avg copied from the PV-WAVE standard library; moment can be used if you don't want to specify a dimension avg
caldat; use jul2dt for convenience and portability jul_to_dt; use jul2dt for convenience and portability
catch on_error_goto
Implemented by the vendors of IDL for the Met Office as an extension to the language> dc_read
X device can't be closed in IDL device,/close for any device, including X
device,decomposed=0 If X does not support pseudocolour, 24-bit RGB colour has to be used in PV-WAVE; indices into a colour translation table aren't supported. The UKMO graphics team have provided a work-round as part of the Linux port.
device,get_visual_class=x device,get_visuals=x
!dt structures defined by define_dt in the UKMO IDL startup !dt structures built in
No equivalent dt_add, dt_addly
file_test cstat
Not yet implemented followlink
No equivalent [![pxy].]gridstyle plot keyword
help info
isppsetup Not implemented (yet)
In IDL the expression which is evaluated by an if-test may be a scalar or a one-element array, but in PV-WAVE only a scalar is allowed.
midlman Unix command waveman Unix command
juldat; use dt2jul for convenience and portability No direct built-in equivalent; use dt2jul for convenience and portability
Implemented by the vendors of IDL for the Met Office as an extension to the language before IDL8.0; from IDL8.0, lists are part of the language. lists
No equivalent .locals
Not needed because the built-in type conversion functions can be used. mvbytes. Not really needed even in PV-WAVE because the built-in type conversion functions can be used.
n_params behaves differently in IDL and PV-WAVE; in IDL parameters are counted whenever they are passed in, even if they were undefined in the calling routine, but in PV-WAVE undefinedness is inherited.
openw in IDL will not allow shell environment variables in the filename of nonexistent files; it says, misleadingly, "Unable to expand wildcards in file path." It works in PV-WAVE.
plot,/[xy]log IDL also supports the PV-WAVE syntax plot,[xy]type=1
!product='IDL' !product='cl'
In IDL the psym keyword must be scalar, but in PV-WAVE it can be a vector (a different symbol for each point plotted).
ptrlist to make an array of pointers from existing variables, x=ptrarr(n) to assign a pointer array whose elements are referred to as *x(i), other built-in ptr_ routines list to make an array of pointers from existing variables; lists can be appended to and concatenated
read_ascii, read_binary. dc_read_lines is a partial replacement for the uses of the PV-WAVE dc_ routines in the UKMO library. dc_ routines
regreplace regreplace, strsubst
stregex, strmatch; use regpos for portability strmatch; use regpos for portability. Note that strmatch is a different function in the two languages
strsplit(/extract,/regex) strsplit
In IDL, expressions which evaluate to structures can be subscripted with structure tags thus: (structure_expr).tag. This is a syntax error in PV-WAVE.
ukmo_round and the similar (not identical) built-in function round round
No equivalent solid_psym plot keyword
sum copied from the PV-WAVE standard library; total can be used if you don't want to specify a dimension sum
No equivalent [![pxy].]tickformat plot keyword

Jonathan Gregory