Programmeren in COBOL/Bewerkingen/IF en lussen

Uit Wikibooks

Programmeren in COBOL

Inhoudsopgave
  1. Inleiding Zeer goed ontwikkeld. Revisiedatum: 24 oktober 2007 (Oef Zeer goed ontwikkeld. Revisiedatum: 24 oktober 2007 )
  2. Berekeningen Zeer goed ontwikkeld. Revisiedatum: 22 oktober 2007 (Oef Redelijk ontwikkeld. Revisiedatum: 26 oktober 2007 )
  3. IF en lussen Zeer goed ontwikkeld. Revisiedatum: 26 oktober 2007 (Oef In ontwikkeling. Revisiedatum: 25 oktober 2007 )
  4. Deelprogramma's Zeer goed ontwikkeld. Revisiedatum: 21 oktober 2007 (Oef Nog vrijwel niets. Revisiedatum: 20 november 2007 )
  5. Werken met tekst In ontwikkeling. Revisiedatum: 21 oktober 2007 (Oef Nog vrijwel niets. Revisiedatum: 20 november 2007 )





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

Condities[bewerken]

Relatiecondities[bewerken]

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[bewerken]

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[bewerken]

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

IF-statement[bewerken]

  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

           DISPLAY "geef een getal van 0 tot 9"
           ACCEPT getal

           IF getal = 5
             DISPLAY "goed gegokt"
           END-IF

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

           IF getal = gezochtgetal
             THEN DISPLAY "goed gegokt"
             ELSE DISPLAY "slecht gegokt"
           END-IF

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[bewerken]

  Zie ook EVALUATE voor meer informatie.
TE DOEN
TE DOEN

TE DOEN
EVALUATE bespreken

Lussen[bewerken]

  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[bewerken]

COBOL-code: Lus met times

           PERFORM 60 TIMES
             DISPLAY "times"
           END-PERFORM

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[bewerken]

COBOL-code: Lus met UNTIL

           DISPLAY "Hoe vaak moet de lus worden uitgevoerd"
           ACCEPT getal NO BEEP

           PERFORM UNTIL getal = 0
             COMPUTE getal = getal – 1
             DISPLAY getal
           END-PERFORM

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.

           PERFORM UNTIL (getal1 = 0 OR getal2 > 0) AND getal 3 < 0

VARYING[bewerken]

Deze lus kan vergeleken worden met de for-lus in andere talen. Maar moet echter gecombineerd worden met UNTIL.

COBOL-code: Lus met VARYING

       IDENTIFICATION DIVISION.
       PROGRAM-ID. performvarying.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       77  i pic 99.

       PROCEDURE DIVISION.
       hoofd.
           PERFORM VARYING i FROM 1 BY 1 UNTIL i > 20
             DISPLAY "I is: " i
           END-PERFORM
           STOP RUN.

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.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.