# Programmeren in COBOL/Bewerkingen/IF en lussen

In dit hoofdstuk leer je over conditionele expressies (IF) en herhalingen (PERFORM n TIMES, PERFORM UNTIL ...).

## Condities
### Relatiecondities

Via een relatieconditie vergelijk je een veld, constante of een rekenkundige uitdrukking met een andere: Groter, kleiner of gelijk. Dit kan met de operatoren >, <, =, >= en <=.

### Tekencondities

Dit zijn POSITIVE, NEGATIVE en ZERO. Hiermee vergelijk je een veld, constante of een rekenkundige uitdrukking om respectievelijk te zien of ze positief, negatief of nul zijn.

### OR en AND

Hiermee kun je meerdere condities gebruiken. Bij OR moet één van de relatie condities waar zijn bij AND moeten beide waar zijn.

## IF-statement

    Zie ook IF voor meer informatie.
In programmeren kun je 2 of meer dingen met elkaar vergelijken en op basis daarvan iets al of niet uitvoeren. Dit kan met IF ... END-IF. In onderstaand programma kan de gebruiker een getal raden. Als het getal juist is, dan krijgt hij "goed gegokt" op het scherm.
COBOL-code: IF-statement
IF zal de inhoud van de variabele vergelijken met 5. Als het overeenkomt, zal wat er tussen IF en END-IF staat, uitgevoerd worden. Met ELSE kan je ook iets doen in het andere geval. (THEN hoeft niet geschreven te worden, maar komt de leesbaarheid wel ten goede.)
COBOL-code: IF-statement
THEN geeft aan wat er gebeurt als het goed is en ELSE als het fout is. Natuurlijk kun je ook 2 variabelen met elkaar vergelijken zoals hier de IF getal vergelijkt met gezochtgetal.
Een IF moet altijd worden afgesloten met END-IF, anders leest de compiler tot bij het volgende punt. Moderne COBOL-conventies raden het gebruik van END-IF aan.

## EVALUATE

    Zie ook EVALUATE voor meer informatie.

## Lussen

    Zie ook PERFORM voor meer informatie.
Er zijn twee manieren om lussen te gebruiken: door middel van TIMES of UNTIL. TIMES laat een lus een aantal keren uitvoeren. Bij UNTIL moet er aan een bepaalde voorwaarde voldaan worden voordat de lus stopt. In beide gevallen moet er wel eerst PERFORM worden gebruikt.

### TIMES

COBOL-code: Lus met times
Met dit programma wordt "times" 60 keer getoond op het scherm. Er kan natuurlijk ook gebruik gemaakt worden van een variabele die bepaalt hoe vaak de lus moet worden uitgevoerd.

### UNTIL

COBOL-code: Lus met UNTIL
Hoewel dit voorbeeld sterk overeenkomt met het vorige, is het toch fundamenteel verschillend: als je de - vervangt door een +, dan zal de lus nooit eindigen!(Mainframes stoppen gelukkig vanzelf na een seconde (dure) rekentijd.) Om aan deze lus een einde te brengen moet er voldaan worden aan een bepaalde voorwaarde hier is dat wanneer het getal 0 bevat. Er kunnen ook meerdere condities bij UNTIL worden gebruikt.
COBOL-code: Meerdere condities.

#### VARYING

Deze lus kan vergeleken worden met de for-lus in andere talen. Maar moet echter gecombineerd worden met UNTIL.
COBOL-code: Lus met VARYING
Deze lus begint ook met PERFORM gevolgd door VARYING. i is de teller in deze lus en wordt gevolgd door FROM. FROM bepaalt de start positie van de teller i in de plaats van een cijfer kan er ook een veld staan. Dan komt BY en betekent hoeveel er wordt opgeteld of afgetrokken(je kan dus ook een negatief getal gebruiken) van de teller per keer dat de lus wordt uitgevoerd. Dan komt UNTIL die werkt net zoals bij de gewone UNTIL als er aan een bepaalde voorwaarde wordt voldaan eindigt de lus.