| Re: Implied do loops in IDL [message #2260 is a reply to message #2259] |
Tue, 14 June 1994 02:25  |
sjt
Messages: 72 Registered: November 1993
|
Member |
|
|
Tony Mannucci (tonym@lurleen.jpl.nasa.gov) wrote:
: I have a need for implied do loops in IDL but they appear to be unsupported.
: My need occurs when reading data from a file.
: Here is an example:
: In FORTRAN, the file was written as:
: write(unit) n, (data(i), i = 1, n)
: and read as:
: read(unit) n, (data(i), i=1, n)
: In this example, n is not generally fixed for every file record.
: It seems that the only way to read such files is with implied do's.
: Note that I am trying to avoid calling a FORTRAN routine at this
: point. Does anyone know if "native" IDL can handle such reads
: and writes?
Probably not exactly as given as array elements and subranges are
considered to be expressions and are thus passed by value. However if
you can modify the fortran program to use:
write(unit) n
write(unit) (data(i), i=1,n)
then it becomes trivial:
readu, unit, n
data=fltarr(n)
readu, unit, data
If you can't modify the fortran then the bset I can think of in 2 minutes is:
point_lun, -unit, posit ; Get the current location
readu, unit, n
data=fltarr(n)
point_lun, unit, posit ; Restore file pointer.
readu, n,data
N.B. Remember fortran unformatted is a nasty format on Unix systems which
needs the /f77_unformatted key in the open.
: Tony Mannucci Jet Propulsion Laboratory
: tonym@lurleen.jpl.nasa.gov 4800 Oak Grove Drive
: M/S 238-600
: Voice: (818)354-1699 Fax: (818)393-4965 Pasadena, CA 91109
--
James Tappin, School of Physics & Space Research
University of Birmingham
sjt@xun8.sr.bham.ac.uk
"If all else fails--read the instructions!"
O__
-- \/`
|
|
|
|