Een index is geen gewoon veld. Er is verschil tussen een gewone variabele en een index. In de vorige paragraaf zagen we op welke manier de index in de data division voorkomt. In de procedure division is er eveneens verschil tussen een gewone variabele en een index. De manier waarop een index een waarde krijgt is anders dan we tot nu toe bij gewone variabelen zagen.
onthoud
Voor het geven van een waarde aan een index mogen we de move-opdracht niet gebruiken. Er is een speciale opdracht om een index een waarde te geven. Dat is de set-opdracht.
De set-opdracht hebben we tot nu toe gebruikt bij voorwaardenamen (88-velden). Maar de set-opdracht heeft ook andere functies. Die hebben te maken met indexen. Hier volgt een voorbeeld van de set-opdracht zoals we die gebruiken bij een index.
set vest-ind to 1
De index vest-index wijst door middel van deze opdracht naar het eerste element van zijn tabel. Je kunt deze opdracht vertalen als: zet vest-ind op 1. Let er op dat het ontvangende veld vóór het woordje to staat. Dat is dus anders dan bij de move-opdracht. Daar staat het ontvangende veld achter to (move 1 to veld).
Voor het verhogen van een index mogen we de add-opdracht niet gebruiken. We moeten een variant gebruiken van de set-opdracht.
set vest-ind up by 3
Als de index vóór deze opdracht naar het eerste element van zijn tabel wees, dan wijst hij na deze opdracht naar het vierde element van de tabel: 1 plus 3 is 4.
Voor het verlagen van een index mogen we de subtract-opdracht niet gebruiken. We moeten een variant gebruiken van de set-opdracht.
set vest-ind down by 2
Als de index eerst naar het vierde element van zijn tabel wees, dan wijst hij na deze opdracht naar het tweede element van de tabel: 4 minus 2 is 2.
Na afloop van een set-opdracht moet de index een waarde hebben die correspondeert met de grootte van zijn tabel. In het voorbeeld van de omzettentabel mag vest-ind niet naar tabelelement 276 wijzen, want de tabel heeft maar 275 elementen.
Een index is geen gewoon veld. De computer mag zelf de vorm van een index bepalen en dan kiest hij hoogstwaarschijnlijk voor binaire opslag. Dat is voor de computer de meest prettige manier. Dat heeft voor ons tot gevolg dat een index niet afdrukbaar is. We kunnen een index niet gebruiken in een display-opdracht. Als we de inhoud van een index toch zichtbaar willen maken, dan moeten we die inhoud eerst omzetten naar een gewoon veld. Ook daarvoor is de set-opdracht geschikt.
set afdruknummer to vest-ind
De variabele afdruknummer heeft nu de waarde van het element waar vest-ind naar wijst. Bij de set-opdracht converteert de computer de interne indexwaarde naar een afdrukbare waarde. De variabele afdruknummer is een gewone variabele. Die kunnen we wel afdrukken.
De set-opdracht is ook bruikbaar voor de omgekeerde richting. Een index kan een waarde krijgen die afkomstig is van een 'gewoon veld'.
set vest-ind to nummer
De variabele nummer is een gewoon numeriek veld, bij voorbeeld met picture 999. De computer voert een conversie uit van een afdrukbare waarde naar de interne index-waarde.