comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » importing ascii files
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: importing ascii files [message #31542 is a reply to message #31446] Thu, 11 July 2002 15:04 Go to previous message
Pavel A. Romashkin is currently offline  Pavel A. Romashkin
Messages: 531
Registered: November 2000
Senior Member
How about the following:
************************
; P. Romashkin, 2001
; Parameters: FILENAME - name of ASCII file to read, OUT - structure with
; names of variables as fields, N_COLS - number of columns to read.

pro read_ascii_columns, filename, out, n_cols=n_cols
compile_opt IDL2, obsolete
if n_elements(n_cols) eq 0 then message, 'Specify number of columns!'
header = ''

buffer = fltarr(n_cols, 1000)
openr, SourceFile, /get_lun, filename
readf, SourceFile, header

; If Buffer was longer than file, reading will fail. In such case,
reduce buffer.
FileTooShort = 0b ; Just to skip buffer reduction the first time.
on_ioError, reduce_buffer
reduce_buffer : if FileTooShort eq 1b then begin
unread_rows = (fstat(SourceFile)).Transfer_Count / n_cols
if unread_rows eq 0 then goto, finish
Buffer=fltarr(n_cols, unread_rows)
point_lun, SourceFile, LastPos
endif
FileTooShort = 1b ; In case of ioError, this will be set to 1b

while not EOF(SourceFile) do begin
point_lun, (-SourceFile), LastPos ;Memorize start in case it fails.
readf, SourceFile, Buffer
if n_elements(resultArray) eq 0 then resultArray = Buffer $
else ResultArray = [[ResultArray], [Buffer]]
endwhile

finish:
free_lun, SourceFile ; Done using the file.

header = strsplit(header, /extract)
resultArray = transpose(resultArray)
out = create_struct(header[0], resultArray[*, 0])
for i = 1, n_elements(header)-1 do $
out = create_struct(out, header[i], resultArray[*, i])
end
**********************
You may have to clean up line breaks.
Cheers,
Pavel

Heather wrote:
>
> We have a program written in IDL that extracts data and puts it into a
> text file. We want to put the columns of the text file into some kind
> of storage device so that we can access the columns separately in
> another IDL program. We are trying to write a program that
> incorporates the import_ascii macro, but are open to any other ideas
> at this point.
>
> Heather
[Message index]
 
Read Message
Read Message
Previous Topic: Re: Matching Structure Tag Lengths
Next Topic: Re: importing ascii files

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 18:03:54 PDT 2025

Total time taken to generate the page: 0.95883 seconds