Re: Two possible bugs in docs! <-- Not quite...

new topic     » topic index » view thread      » older message » newer message

On Fri, 19 Jun 1998 08:54:32 -0400 Alan Tu <ATU5713 at COMPUSERVE.COM>
writes:
>1.  This is an example program under the <seek> library routine in
>library.doc
>
>              include file.e
>
>              integer fn
>              fn =3D open("mydata", "r")
>              -- read and display first line of file 3 times:
>              for i =3D 1 to 3 do
>                  puts(1, gets(fn)) =
>
>                  if seek(fn, 0) then
>                      puts(1, "rewind failed!\n")
>                  end if
>              end for
>
>Or is this so that the loop will be performed three times?  i is not
>mentioned anywhere within the for loop.

The comment says that it will read and display the first line of the file
3 times. The loop variable (i, in this example) doesn't have to be
mentioned inside the loop. It's just what happens most of the time.

>2.  I've noticed this for a while.  This is the <atom> routine (but if
>this is a bug, sequence and integer have the same bug).
>
>              line =3D gets(0)
>              if atom(line) then
>                  puts(SCREEN, "end of file\n")
>              end if
>
>As I understand it, atom returns a 0 or 1.  So
>if atom(line) then
>doesn't make sense.

A boolean expression returns 0 for false, or non-zero for true:

object line
line = 5

if atom(line) then  -- atom(line) = 1
   puts(1, "EOF\n")
end if

if 5 then   -- Nonzero means TRUE, so the following line is executed
    puts(1, "5 is not false (0)\n")
end if

if 0 then   -- zero = false, so the following line isn't executed
    puts(1, "Hey! I'm not supposed to be here!\n")
end if

line = "What??"
if length(line) then -- length(line) = 6, nonzero, so true
    printf(1, "The line has a length of %d\n", {length(line)})
end if


_____________________________________________________________________
You don't need to buy Internet access to use free Internet e-mail.
Get completely free e-mail from Juno at http://www.juno.com
Or call Juno at (800) 654-JUNO [654-5866]

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu