| Re: Implied do loops in IDL [message #2259 is a reply to message #2249] |
Tue, 14 June 1994 00:53   |
knipp
Messages: 68 Registered: January 1993
|
Member |
|
|
In article 1121921004A@llyene.jpl.nasa.gov, tonym@lurleen.jpl.nasa.gov (Tony Mannucci) writes:
> 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?
>
> 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
If you know the n (and type of your data) for each record, try
the following:
; (assuming your data is of type DOUBLE)
openr, uni, file, /get_lun
line = ''
for i=0, n_lines-1l do begin
readf, uni, line
data = dblarr(n(i))
sdowf = something_dependent_of_write_format
; p.e. if written with f8.3, then sdowf = 8
for j=0, n(i)-1 do $
data(j) = double(strmid(line, j, j + sdowf
; ... processing
endfor
free_lun, uni
I do not know if this helps - and it also seems to be quite slow,
Karlheinz
____________________________________________________________ __________________
__ ____ __
/ // _ \ / / Karlheinz Knipp phone: +49 511 - 762 4922
/ // /_/ // / University of Hannover fax: +49 511 - 762 2483
/ // ____// / Institute for Photogrammetry
/ // / / / Nienburger Str.1
/_//_/ /_/ FRG 30167 Hannover e-mail: knipp@ipi.uni-hannover.de
|
|
|
|