Modulelessen (1/2)
Groepeer items en records
In COBOL kunnen elementaire variabelen worden gegroepeerd in een hiërarchische structuur die een groepsitem of record wordt genoemd. Hierdoor kunt u een reeks gerelateerde gegevens behandelen als één enkele entiteit (bijvoorbeeld om ze te kopiëren of weer te geven) of als afzonderlijke velden.
Niveaunummers en hiërarchische relaties
Om een record te definiëren, gebruikt u niveaunummers in de DATA DIVISION:
- Niveau
01: definieert het hoofdrecord (de groepsnaam). Het heeft geen eigenPICTUREclausule omdat de grootte ervan wordt bepaald door de som van de interne velden. - Onderliggende niveaus (
05,10,15, enz.): Identificeer de ondergeschikte velden die tot de groep op een hoger niveau behoren. Het kunnen elementaire variabelen zijn (met een clausulePIC) of op hun beurt andere groepsitems (subrecords).
01 WS-EMPLOYEE-RECORD.
05 WS-EMP-ID PIC 9(5).
05 WS-EMP-NAME PIC X(20).
05 WS-EMP-SALARY PIC 9(6)V99.In dit voorbeeld is WS-EMPLOYEE-RECORD een groepsstructuur met drie ondergeschikte velden. Als we verwijzen naar WS-EMPLOYEE-RECORD, lezen of schrijven we alle 5 + 20 + 8 = 33 tekens van de record in één keer.
De MOVE-instructie en groepsitems
We kunnen waarden toekennen aan individuele elementaire velden:
MOVE 10023 TO WS-EMP-ID.
MOVE "JOHN DOE" TO WS-EMP-NAME.Of we kunnen in één handeling een volledig record naar een ander compatibel record kopiëren:
MOVE WS-EMPLOYEE-RECORD TO WS-EMPLOYEE-BACKUP.Probeer het zelf
Declareer een groepsstructuur 01 met de naam WS-STUDENT-RECORD met drie subvelden van niveau 05: WS-STUDENT-ID (numeriek van 5 cijfers), WS-STUDENT-NAME (alfanumeriek van 15 tekens) en WS-STUDENT-GPA (numeriek met 1 geheel getal en 2 decimalen).
Toon hint
Gebruik de syntaxis: 01 WS-STUDENT-RECORD. (met een punt en zonder PIC), gevolgd op de volgende regels door niveau 05 WS-STUDENT-ID PIC 9(5)., 05 WS-STUDENT-NAME PIC X(15). en 05 WS-STUDENT-GPA PIC 9(1)V99.
Oplossing beschikbaar na 3 pogingen
Voltooi de PROCEDURE DIVISION door de waarde 10023 naar WS-EMP-ID te verplaatsen, de tekst 'JOHN DOE' naar WS-EMP-NAME, en geef ten slotte de groepsstructuur WS-EMPLOYEE-RECORD weer met behulp van DISPLAY.
Toon hint
Gebruik VERPLAATS 10023 NAAR WS-EMP-ID. en VERPLAATS 'JOHN DOE' NAAR WS-EMP-NAME. om waarden toe te wijzen, schrijf dan DISPLAY WS-EMPLOYEE-RECORD. en ten slotte STOP REN.
Oplossing beschikbaar na 3 pogingen