We gaan uit van de volgende tabel.
01 Omzettentabel. 02 Omzet occurs 275 times indexed by vest-ind pic 9(7).
Neem aan dat de tabel gevuld is met de omzetgegevens van 275 vestigingen van een supermarkt-keten. We willen uitzoeken of er een vestiging is die meer dan een miljoen omzet heeft gemaakt. We moeten daartoe de tabel vanaf het begin doorzoeken en alle elementen vergelijken met 1 miljoen. In het volgende voorbeeld is de search-opdracht hiervoor gebruikt.
illustratie: Geert Nijmolen
set vest-ind to 1 search Omzet at end display "Geen vestiging boven miljoen." when Omzet(vest-ind) > 1000000 set afdruknummer to vest-ind display "Nummer ", afdruknummer, ": ", Omzet(vest-ind) end-search
onthoud
De search-opdracht kunnen we alleen gebruiken bij een tabel waarvoor een index is benoemd. De computer kijkt namelijk naar de index om te bepalen op welke plaats van de tabel hij moet beginnen met zoeken.
Als we de gehele tabel willen doorzoeken, zoals in dit voorbeeld, dan zetten we de index op 1. Dat gebeurt in de set-opdracht die aan de search-opdracht vooraf gaat.
Vervolgens bekijkt de computer de voorwaarde achter het woord when. Als die voorwaarde waar is, dan voert hij de opdrachten uit die erachter staan. De search-opdracht is daarmee afgelopen. Als de voorwaarde niet waar is, dan verhoogt hij de index en kijkt hij opnieuw naar de voorwaarde. Net zolang tot de voorwaarde waar is, of totdat de index groter is geworden dan het aantal elementen van de tabel. In dat laatste geval voert de computer de display-opdracht uit die achter at end staat.
onthoud
Na het woord search staat de naam van een variabele die beschreven is met de occurs-clausule. De variabelenaam mag niet voorzien zijn van een subscript.
Een at-end-situatie treedt op als de tabel geheel is doorzocht. Als de index bij de aanvang van het zoekproces een waarde heeft die groter is dan het aantal elementen van de tabel, dan treedt de at-end-situatie meteen op. Het gedeelte at end is niet verplicht. Als er niets staat, dan gaat de computer verder met de opdracht na de search-opdracht.
onthoud
De voorwaarde in het search-statement mag elk denkbare voorwaarde zijn. Zo zijn bij voorbeeld samengestelde voorwaarden (met and of met or toegestaan).
We zijn niet gebonden aan een enkele voorwaarde. Er kunnen verschillende when-gedeelten in een search-opdracht voorkomen. De computer werkt ze in volgorde af. Zo gauw als een van de voorwaarden waar is, stopt de uitvoering van de search-opdracht. Hier volgt nog een voorbeeld van een search-opdracht:
set vest-ind to 100 search omzet when Omzet(vest-ind) > hoge-grens set afdruknummer to vest-ind display afdruknummer, " boven ", hoge-grens when vest-ind > 200 and Omzet(vest-ind) < lage-grens set afdruknummer to vest-ind display afdruknummer, " onder ", lage-grens end-search
Het startpunt zetten we op 100. De tabelelementen onder de honderd worden niet bekeken. De eerste voorwaarde vraagt of de omzet boven een bepaalde grenswaarde ligt. De tweede voorwaarde geldt alleen voor vestigingen met een nummer boven de 200. In deze reeks vestigingen zoeken we naar omzetten onder een bepaalde grens. Als geen van de twee voorwaarde waar is, dan verhoogt de computer de index en bekijkt hij opnieuw de voorwaarden. Als een van beide voorwaarden voldoet, dan voert hij de opdrachten uit die erachter staan en is de search-opdracht voltooid. Als geen van beide voorwaarden gedurende de search-opdracht waar is, dan gaat het programma gewoon verder. Er is in dit voorbeeld namelijk geen at end gespecificeerd.