Modulelessen (2/2)
Beslissingen met IF en EVALUATE
De besluitvorming in COBOL wordt voornamelijk uitgevoerd met behulp van de voorwaardelijke instructie IF en de meervoudige selectiestructuur EVALUATE (analoog aan switch of match in moderne talen).
De IF voorwaardelijke verklaring
De fundamentele syntaxis van de instructie IF is:
IF condition
statements-if-true
ELSE
statements-if-false
END-IF.In moderne COBOL-versies (COBOL-85 en hoger) moet de instructie expliciet eindigen met END-IF. in plaats van uitsluitend te vertrouwen op de laatste punt ., waardoor parseer- en logische fouten aanzienlijk worden verminderd.
Algemene voorwaarden
- Groter dan:
>ofGREATER THAN - Minder dan:
<ofLESS THAN - Gelijk aan:
=ofEQUAL TO - Groter dan of gelijk aan:
>=ofGREATER THAN OR EQUAL TO - Kleiner dan of gelijk aan:
<=ofLESS THAN OR EQUAL TO
IF WS-BALANCE < 0
DISPLAY "OVERDRAWN"
ELSE
DISPLAY "ACCOUNT ACTIVE"
END-IF.De EVALUATE-verklaring
Wanneer we een variabele moeten vergelijken met meerdere afzonderlijke waarden, kunnen geneste IF-instructies complex worden. De instructie EVALUATE lost dit op door de keuzes op een overzichtelijke manier te structureren:
EVALUATE WS-USER-ROLE
WHEN "ADMIN"
DISPLAY "FULL ACCESS"
WHEN "EDITOR"
DISPLAY "EDIT ACCESS"
WHEN OTHER
DISPLAY "LIMITED ACCESS"
END-EVALUATE.WHEN OTHER: Identificeert de fallback-vertakking (equivalent aandefaultof de laatsteelsein moderne talen).END-EVALUATE.: Sluit de structuur.
Probeer het zelf
Schrijf een IF-ELSE-END-IF blok dat controleert of de variabele WS-USER-AGE groter is dan of gelijk is aan 18. Indien waar, druk dan 'ADULT' af, druk anders 'MINOR' af met behulp van DISPLAY.
Toon hint
Gebruik >= voor de vergelijking, DISPLAY voor uitvoer en END-IF. (met de punt aan het einde van het blok).
Oplossing beschikbaar na 3 pogingen
Voltooi de EVALUATE-structuur om de WS-STATUS-variabele te controleren. Als de waarde 'A' is, drukt u 'ACTIEF' af, als het 'I' is, drukt u 'INACTIEF' af, anders drukt u voor elke andere waarde 'ONBEKEND' af.
Toon hint
Schrijf elke WHEN-vertakking gevolgd door zijn DISPLAY, en gebruik WHEN OTHER om de terugval af te handelen.
Oplossing beschikbaar na 3 pogingen