Hello troffers!

I want to check whether a number register contains a certain number and a 
string register contains one of the predefined strings:

.ds str1 bar
.nr nr1 5
.if ((\n[nr1]=5) & ("\*[str1]"foo" : "\*[str1]"bar" : "\*[str1]"baz")) \{\
.  tm okay
.\}

Invoking that with groff tells me that
        test.t:3: warning: numeric expression expected (got `"')

.ds str1 bar
.nr nr1 5
.if ((\n[nr1]=5) & (0 : 1 : 0)) \{\
.  tm okay
.\}

So groff expects a number returned by those string comparisons, like 
"\*[str1]"foo". Therefore I could rewrite the thing using a temporary number 
register:

.ds str1 bar
.nr nr1 5
.nr nr2 0
.if "\*[str1]"foo" .nr nr2 1
.if "\*[str1]"bar" .nr nr2 1
.if "\*[str1]"baz" .nr nr2 1
.if ((\n[nr1]=5) & (\n[nr2]=1)) \{\
.  tm okay
.\}
.rr nr2

That works as expected, but there has to be an obvious and easy solution 
without the additional number register.

Best regards
Ralph


Reply via email to