9.5 Linkage section

Op het moment dat een subprogramma wordt geschreven, bepalen we hoeveel parameters het subprogramma bij de aanroep zal ontvangen. Bovendien moet bekend zijn wat voor soort parameters dat zullen zijn. Bij het vertalen zal de compiler met deze gegevens rekening moeten houden. In het subprogramma moeten de parameters dus worden beschreven. Maar de echte gegevens komen pas beschikbaar op het moment van de aanroep. De gegevens zijn dan afkomstig van het hoofdprogramma.

In het subprogramma vormen de parameters een aparte soort variabelen. Ze leggen de verbinding tussen het subprogramma en het aanroepende programma. Er bestaat een aparte afdeling voor deze parameters: de linkage section.

onthoud

De linkage section komt alleen maar voor in subprogramma's. Deze section bevat een beschrijving van de parameters. In de data division komt eerst de file section, daarna de working-storage section. De linkage section komt daar weer na.


linkage section.
01 bedrag     pic 9(09).
01 percentage pic 99V9.
01 jaren      pic 9(03).
01 annuiteit  pic 9(12)V99.
  

Alle parameters die genoemd zijn bij de woorden procedure division moeten als 01-veld beschreven zijn in de linkage section. De volgorde is in de linkage section niet van belang. De verbinding tussen de parameters in het hoofdprogramma en de parameters in het subprogramma geschiedt via de using-gedeelten in elk van die programma's (de call-opdracht in het hoofdprogramma en de kopregel van de procedure division in het subprogramma). De computer legt de koppeling legt de comn

Voor een juiste werking zorgen we dat de veldlengte bij overeenkomstige parameters gelijk is. Als we in het subprogramma de tweede parameter een lengte geven van 12 bytes en in het hoofdprogramma heeft de tweede parameter slechts een lengte van 9 bytes, dan vragen we om moeilijkheden. Het is geen probleem als de indeling in hoofd- en subprogramma verschilt. Het is toegestaan om het veld bedrag (dat in het hoofdprogramma negen posities lang is) in de linkage section aldus te beschrijven:

01 bedrag.
   02 eerste-vijf  pic  9(05).
   02 laatste-vier pic  9(04).
  

In deze beschrijving is de lengte van de variabele bedrag ook in het subprogramma gelijk aan negen posities.

Variabelen die beschreven staan in de linkage section, mogen niet de value-clausule voor het geven van beginwaarden bij zich hebben. De compiler kan geen opdrachten maken om een waarde te plaatsen op een geheugenadres als het geheugenadres niet bekend is. De geheugenplaats komt pas beschikbaar bij de werkelijke aanroep.

In de procedure division van een subprogramma is er geen verschil in gebruik tussen variabelen uit de linkage section en variabelen uit andere sections van de data division.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo