Fortran has the ability to send one somewhere upon an I/O error:
read(43,100,end=50) x,y,z in which case program will go to statement labeled “50′ upon a read error.
IDL does not have such a simple way to do it. But after many hours, I got an equivalent process to work. An example is in the
/data/psrdata/rmgalprojs/rm2016/AO_Pulsars_RM/Longi_RM_Plots.pro file, specifically in
the PersArmNoIntArm data input section.
——————————————————————————
The same section of code illustrates painful read in of a complicated data file, where a single (long) row had been turned into six. It is similar to but not quite identical to fortran. I had to eliminate all format = ‘(sd;jkfsd;jkg)’ statements because idl and i (≡fortran) did not interpret them the same. Instead I had to force variables to have the right type before reading data into them, by initializing them. For example, to read the following variables properly, i did things like:
ztext = ‘ ‘
xfloat = 3.5
ydoubleprecision=8.d0
Then when I read a file into those variables from a file , idl will treat those variables as the types given in the initialization statements.