Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SV: st: reading txt-file without end-of-line delimiter and uneven record length


From   Even Bergseng <even.bergseng@umb.no>
To   "statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu>
Subject   SV: st: reading txt-file without end-of-line delimiter and uneven record length
Date   Wed, 19 Nov 2008 21:37:36 +0100

Option 1) is no-go, as I am looping this over many files. I first write a file with control parameters for an external program, then run the external program and finally read back the results. I will eventually do it for hundreds and thousands of files at the time. By hand is thus not an option.

The file structure is fixed and known. All records are of equal length (1 %-6f and 151 %13.5f variables over 1969 bytes) except for the first (which holds one %11f variable and is otherwise empty for 1963 bytes).

Could you give a short example of option 2? My knowledge of binary files and also the -file- command is limited, to say the least.

thanks,
Even


________________________________________
Fra: owner-statalist@hsphsun2.harvard.edu [owner-statalist@hsphsun2.harvard.edu] p&#229; vegne av Sergiy Radyakin [serjradyakin@gmail.com]
Sendt: 19. november 2008 21:17
Til: statalist@hsphsun2.harvard.edu
Emne: Re: st: reading txt-file without end-of-line delimiter and uneven record length

1) open the file in a text editor, remove the extra 6 bytes, import
with constant record length, restore the removed 6 bytes manually

2) use binary read/write commands, read byte by byte in a double-loop
(1 by records 1..101, second by characters 1..record_length)

How do you know that it is the first record that is longer, not, say, 25th?

Regards,
   Sergiy Radyakin


On Wed, Nov 19, 2008 at 2:59 PM, Even Bergseng <even.bergseng@umb.no> wrote:
> Dear listers!
>
> I have a txt-file without end-of-line delimiter and uneven record length that I want to read into Stata. The lack of end-of-lin delimiters and hence all observations on one line, suggests using the _lrecl option of the -infile2- command. The uneven record length suggests otherwise.
>
> There is only one uneven record (1975 bytes) which occurrs at the beginning of the file. All other records are 1969 bytes. There are 100 records excluding the first.
>
> I have tried to use -file read- and then -file write- to get rid of the first uneven record to be able to use -infile-, but the total line length and thus the macro from -file read- makes Stata state "too few quotes" when I try to write it with -file write-.
>
> My code for the -file- command is as follows:
>
> ****
> tempname OUT1
> file open `OUT1' using "$sima\OUT1.dat", read write text
> file seek `OUT1' 1975
> file read `OUT1' line
> file close `OUT1'
> tempname RESULT
> file open `RESULT' using "$sima\RESULT.dat", read write text
> file write `RESULT' (`"`macval(line)'"')
> file close `RESULT'
> ***
>
> Any hints on how th read the txt-file?
>
> best regards,
> Even Bergseng
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/
>
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index