FUNCTION READ_SPR, filename COMPILE_OPT idl2 ; result format = {sa:FLTARR(nmax) or sa:DBLARR(nmax), ija:LONARR(nmax)} ; nmax = 0L type = 0L ON_IOERROR, BADFILE OPENR, fileLUN, filename, /GET_LUN ;Read type and size information READU, fileLUN, nmax, type ;Define resulting structure based on the data size and type IF (type EQ 4) THEN $ ; Value array is single precision result = {sa:FLTARR(nmax, /NOZERO),ija:LONARR(nmax, /NOZERO)} $ else $ ; Value array is double precision result = {sa:DBLARR(nmax, /NOZERO),ija:LONARR(nmax, /NOZERO)} ;Read sparse matrix READU, fileLUN, result FREE_LUN, fileLUN RETURN, result BADFILE: IF (N_Elements(fileLUN) GT 0L) THEN $ FREE_LUN, fileLUN MESSAGE, 'Error reading sparse matrix file: ' + filename END