1. I think it works?

I think that it works but I'm not sure.  It runs without any error
message, but I can't find the output anywhere.  I search for the out
file but none exists.  Does Euphoria put the output in the same
directory the input file resides?

Bryan

JJProg at CYBERBURY.NET wrote:

> Now just call GetRecord(f) for each record. Example:
>
> integer in, out, n
> object r
> in = open("infile.txt","r")
> if in = -1 then
>         puts(1,"Couldn't open infile.txt.\n")
>         abort(1)
> end if
> n = 1
> r = GetRecord(in)
> while sequence(r) do
>         out = open(sprintf("out%d.txt",n),"w")
>         if out = -1 then
>                 printf(1,"Couldn't open out%d.txt.\n",n)
>                 exit
>         end if
>         puts(out,r)
>         close(out)
>         n += 1
>         r = GetRecord(in)
> end while
> close(in)
>
> EU>Just a sec. I'll finish this in another e-mail.
>
> EU>Jeffrey Fielding
> EU>JJProg at cyberbury.net
> EU>http://members.tripod.com/~JJProg/

new topic     » topic index » view message » categorize

2. Re: I think it works?

On Fri, 23 Jul 1999, you wrote:
> I think that it works but I'm not sure.  It runs without any error
> message, but I can't find the output anywhere.  I search for the out
> file but none exists.  Does Euphoria put the output in the same
> directory the input file resides?

Hi Bryan:

Euphoria will put the output file in the directory you are in when the program
is run (not necessarily the directory where the input file is)

If you are processing a tlat text file, then you want to do the following:
---
set COPY = 0
start of loop
read each line. if end of file then quit
If the line starts with ST, then set COPY  = 1
elsif the line starts with SE then set COPY = 0
if COPY = 1 then write the line to the output file
back to start of loop.
---
Now, first of all, you have to determine whether the line contains ONLY ST (or
SE), or whether it may have other stuff following: i.e. ST SoMe other TExt.
If other text sometimes follows, you can look at only the first two characters
of each line.

You also have to determine (by looking at the file) whether the
ST / SE always are the first two characters in the lines, not, for example:
,<space><space>ST. If there are sometimes spaces, then you have to remove spaces
before you can compare.

The code above can be written:

object line
integer fn,fo, -- file in file out
          copy  -- flag

fn = open("Input.txt","r")
fo = open("output.txt","w")
copy = 0
while 1 do -- loop forever
  line = gets(fn) -- read a line
  if atom(line) then exit -- bail out when end of file is reached
  end if
  if equal ( line[1..2] , "ST" ) then copy = 1 -- look for ST and set flag when
  elsif equal ( line[1..2] , "SE" ) then copy = 0
  end if
  if copy = 1 then puts(fo, line) -- write the line to the output file
  end if
end while
close(fn)
close(fo)

Hope that helps,
Irv Mullins

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu