p. 19: In the "Debug" view section, the figure shows execution stopped on line 45 while the text indicates line 32. p. 21: Reference to "DE" without definition (Development Environment). p. 25, 2nd para: should be "they take on the size and type of any _value_ that is assigned to them" p. 34: Last line of the first paragraph should be "The values between 0.5 and 0.8 are omitted from the plot." p. 69: The program mg_getweatherstations.pro was not included in the original example code download. p. 70: First paragraph of Common blocks section should read: "Common blocks were a standard technique for storing global variables in older versions of IDL before heap variables and widget user values were introduced. They are generally not recommended for use in new code, but still can be useful for certain tasks and will be found when maintaining older code. Their main weakness is that there can be only one common block of a given name. This means that widget programs that use common blocks to store their data can only have one instance of the application running in an IDL process at a time. Also, bad practices made maintaining programs that used common blocks difficult. Some techniques to alleviate this problem are discussed below." p. 125: In the last few words of the first paragraph, "next section" should be "previous section". p. 125: In point 4, the last sentence should be: "This keeps the definition of the common block in only one place and eliminates problems involving the order of compilation (common block definitions must be compiled before common block references)." p. 154: The command in the center of the page should be: tv, reform(ali[0, *, *]) instead of: tv, reform(im[0, *, *]) p. 157: The command near the bottom of the page should be: read_jpeg, file_which('elev_t.jpg'), im instead of: read_jpeg, file_which('elev_t.jpg') p. 192: The last line of code on the page should be: IDL> c3->add, c5 instead of: IDL> c2->add, c5 p. 216: The line in the case statement in MG_XIMAGE_DOOPERATION should be: 'sobel': *(*pstate).image = sobel(*(*pstate).image) instead of: 'sobel': *(*pstate).image = roberts(*(*pstate).image) p. 365: The example of using the IDL_STRING_STR macro on the bottom of the page is not correct. A better example is: IDL_STRING *arch = IDL_SysvVersionRelease(); printf("Release: IDL %s\n", IDL_STRING_STR(arch));