summaryrefslogtreecommitdiffstats
path: root/doc/groff.html.node/while.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:44:05 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:44:05 +0000
commitd318611dd6f23fcfedd50e9b9e24620b102ba96a (patch)
tree8b9eef82ca40fdd5a8deeabf07572074c236095d /doc/groff.html.node/while.html
parentInitial commit. (diff)
downloadgroff-upstream/1.23.0.tar.xz
groff-upstream/1.23.0.zip
Adding upstream version 1.23.0.upstream/1.23.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--doc/groff.html.node/while.html161
1 files changed, 161 insertions, 0 deletions
diff --git a/doc/groff.html.node/while.html b/doc/groff.html.node/while.html
new file mode 100644
index 0000000..f9a0bae
--- /dev/null
+++ b/doc/groff.html.node/while.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<!-- Created by GNU Texinfo 7.0.3, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<!-- This manual documents GNU troff version 1.23.0.
+
+Copyright © 1994-2023 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
+copy of the license is included in the section entitled "GNU Free
+Documentation License". -->
+<title>while (The GNU Troff Manual)</title>
+
+<meta name="description" content="while (The GNU Troff Manual)">
+<meta name="keywords" content="while (The GNU Troff Manual)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="Request-Index.html" rel="index" title="Request Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Conditionals-and-Loops.html" rel="up" title="Conditionals and Loops">
+<link href="if_002delse.html" rel="prev" title="if-else">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.example {margin-left: 3.2em}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="subsection-level-extent" id="while">
+<div class="nav-panel">
+<p>
+Previous: <a href="if_002delse.html" accesskey="p" rel="prev">if-else</a>, Up: <a href="Conditionals-and-Loops.html" accesskey="u" rel="up">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<h4 class="subsection" id="while-1">5.23.5 while</h4>
+<a class="index-entry-id" id="index-while"></a>
+
+<p><code class="code">groff</code> provides a looping construct: the <code class="code">while</code> request.
+Its syntax matches the <code class="code">if</code> request.
+</p>
+<a class="index-entry-id" id="index-body_002c-of-a-while-request"></a>
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ewhile"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.while</code></strong> <var class="def-var-arguments">cond-expr anything</var><a class="copiable-link" href='#index-_002ewhile'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-while-1"></a>
+<p>Evaluate the conditional expression <var class="var">cond-expr</var>, and repeatedly
+execute <var class="var">anything</var> unless and until <var class="var">cond-expr</var> evaluates false.
+<var class="var">anything</var>, which is often a conditional block, is referred to as
+the <code class="code">while</code> request&rsquo;s <em class="dfn">body</em>.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.nr a 0 1
+.while (\na &lt; 9) \{\
+\n+a,
+.\}
+\n+a
+ &rArr; 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+</pre></div></div>
+
+<a class="index-entry-id" id="index-de-request_002c-and-while"></a>
+<p>GNU <code class="code">troff</code> treats the body of a <code class="code">while</code> request similarly to
+that of a <code class="code">de</code> request (albeit one not read in copy
+mode<a class="footnote" id="DOCF94" href="groff.html_fot.html#FOOT94"><sup>94</sup></a>), but stores it under an internal name
+and deletes it when the loop finishes. The operation of a macro
+containing a <code class="code">while</code> request can slow significantly if the
+<code class="code">while</code> body is large. Each time the macro is executed, the
+<code class="code">while</code> body is parsed and stored again.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de xxx
+. nr num 10
+. while (\\n[num] &gt; 0) \{\
+. \&quot; many lines of code
+. nr num -1
+. \}
+..
+</pre></div></div>
+
+<a class="index-entry-id" id="index-recursive-macros"></a>
+<a class="index-entry-id" id="index-macros_002c-recursive"></a>
+<p>An often better solution&mdash;and one that is more portable, since
+<abbr class="acronym">AT&amp;T</abbr> <code class="code">troff</code> lacked the <code class="code">while</code> request&mdash;is to
+instead write a recursive macro. It will be parsed only
+once.<a class="footnote" id="DOCF95" href="groff.html_fot.html#FOOT95"><sup>95</sup></a>
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.de yyy
+. if (\\n[num] &gt; 0) \{\
+. \&quot; many lines of code
+. nr num -1
+. yyy
+. \}
+..
+.
+.de xxx
+. nr num 10
+. yyy
+..
+</pre></div></div>
+
+<p>To prevent infinite loops, the default number of available recursion
+levels is 1,000 or somewhat less.<a class="footnote" id="DOCF96" href="groff.html_fot.html#FOOT96"><sup>96</sup></a> You can
+disable this protective measure, or raise the limit, by setting the
+<code class="code">slimit</code> register. See <a class="xref" href="Debugging.html">Debugging</a>.
+</p>
+<p>As noted above, if a <code class="code">while</code> body begins with a conditional block,
+its closing brace must end an input line.
+</p>
+<div class="example">
+<div class="group"><pre class="example-preformatted">.if 1 \{\
+. nr a 0 1
+. while (\n[a] &lt; 10) \{\
+. nop \n+[a]
+.\}\}
+ error&rarr; unbalanced brace escape sequences
+</pre></div></div>
+</dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002ebreak"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.break</code></strong><a class="copiable-link" href='#index-_002ebreak'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-break-2"></a>
+<a class="index-entry-id" id="index-while-request_002c-confusing-with-br"></a>
+<a class="index-entry-id" id="index-break-request_002c-in-a-while-loop"></a>
+<a class="index-entry-id" id="index-continue-request_002c-in-a-while-loop"></a>
+<p>Exit a <code class="code">while</code> loop. Do not confuse this request with a
+typographical break or the <code class="code">br</code> request.
+</p></dd></dl>
+
+<dl class="first-deffn">
+<dt class="deffn" id="index-_002econtinue"><span class="category-def">Request: </span><span><strong class="def-name"><code class="t">.continue</code></strong><a class="copiable-link" href='#index-_002econtinue'> &para;</a></span></dt>
+<dd><a class="index-entry-id" id="index-continue"></a>
+<p>Skip the remainder of a <code class="code">while</code> loop&rsquo;s body, immediately starting
+the next iteration.
+</p></dd></dl>
+
+
+
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Previous: <a href="if_002delse.html">if-else</a>, Up: <a href="Conditionals-and-Loops.html">Conditionals and Loops</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Request-Index.html" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>