GNU Info

Info Node: (gawk.info)Break Statement

(gawk.info)Break Statement


Next: Continue Statement Prev: For Statement Up: Statements
Enter node , (file) or (file)node

The `break' Statement
---------------------

   The `break' statement jumps out of the innermost `for', `while', or
`do' loop that encloses it.  The following example finds the smallest
divisor of any integer, and also identifies prime numbers:

     # find smallest divisor of num
     {
        num = $1
        for (div = 2; div*div <= num; div++)
          if (num % div == 0)
            break
        if (num % div == 0)
          printf "Smallest divisor of %d is %d\n", num, div
        else
          printf "%d is prime\n", num
     }

   When the remainder is zero in the first `if' statement, `awk'
immediately "breaks out" of the containing `for' loop.  This means that
`awk' proceeds immediately to the statement following the loop and
continues processing.  (This is very different from the `exit'
statement, which stops the entire `awk' program.  Note: The `exit'
Statement.)

   Th following program illustrates how the CONDITION of a `for' or
`while' statement could be replaced with a `break' inside an `if':

     # find smallest divisor of num
     {
       num = $1
       for (div = 2; ; div++) {
         if (num % div == 0) {
           printf "Smallest divisor of %d is %d\n", num, div
           break
         }
         if (div*div > num) {
           printf "%d is prime\n", num
           break
         }
       }
     }

   The `break' statement has no meaning when used outside the body of a
loop.  However, although it was never documented, historical
implementations of `awk' treated the `break' statement outside of a
loop as if it were a `next' statement (Note: The `next' Statement.
).  Recent versions of Unix `awk' no longer allow this usage.
`gawk' supports this use of `break' only if `--traditional' has been
specified on the command line (Note: Command-Line Options.).
Otherwise, it is treated as an error, since the POSIX standard
specifies that `break' should only be used inside the body of a loop.
(d.c.)


automatically generated by info2www version 1.2.2.9