Soms hangt een keuze in een programma niet af van één voorwaarde (conditie), maar van twee of meer tegelijk. Voor het combineren van voorwaarden kent COBOL de koppelwoordjes or en and.
Eerst een voorbeeld met or. Na if volgen twee voorwaarden. Ze zijn gekoppeld met het woordje or.
if uur < 8 or uur > 18 then display "Buiten de normale werkuren" end-if
De computer kijkt of de variabele uur kleiner is dan 8. Zo ja, dan is de totale conditie waar. Hij voert dan de display-opdracht uit. Zo nee, dan is er nog een kans. Hij kijkt of de variabele uur groter is dan 18. Zo ja, dan voert hij alsnog de display-opdracht uit. Als de twee voorwaarde ook onwaar is (beide voorwaarden zijn dan onwaar), dan slaat hij de display-opdracht over. Met or vergroten we de kans dat de gecombineerde voorwaarde waar is. We zijn 'soepeler'.
onthoud
Een gecombineerde conditie met het woordje or is waar, als de ene voorwaarde of de andere voorwaarde waar is. Allebei mag ook.
Vervolgens een stukje programma met gekoppelde voorwaarden met and:
move 0 to aantal perform with test after until bedrag = 0 and aantal > 1 accept bedrag if bedrag > 100 then display bedrag compute aantal = aantal + 1 end if end-perform
Het gaat om het gedeelte achter until. Daar staan twee voorwaarden, gekoppeld door and.
onthoud
Een gecombineerde conditie met het woordje and is alleen waar, als beide voorwaarden waar zijn (èn de ene, èn de andere).
De herhaling binnen de perform gaat door totdat aan beide voorwaarden is voldaan. De herhaling stopt dus niet als bedrag gelijk is aan nul, ook aantal moet groter dan 1 zijn. Met and beperken we de kans dat de totale conditie waar is. We zijn 'strenger'.
illustratie: Geert Nijmolen
Het is toegestaan om and en or in één voorwaarde te gebruiken. Maar dat is tamelijk riskant, want het wordt al gauw onduidelijk of schijnbaar dubbelzinnig.
compute leeftijd = jaarnu - gebjaar if maandnu < gebmaand or maandnu = gebmaand and dagnu < gebdag then compute leeftijd = leeftijd - 1 end-if
onthoud
Bij het combineren van and en or in één samengestelde voorwaarde is de regel dat and een hogere prioriteit heeft dan or. Dat betekent dat eerst de voorwaarden rondom and worden uitgewerkt.
Meestal is het niet echt nodig om zowel and als or in één conditie te gebruiken. Als het toch moet, gebruik dan haakjes:
maandnu < gebmaand or (maandnu = gebmaand and dagnu < gebdag)
Op deze manier is duidelijker dat eerst het and-gedeelte wordt bekeken.