Programmeren in COBOL/Relatieve bestanden met hash: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
kGeen bewerkingssamenvatting |
kGeen bewerkingssamenvatting |
||
Regel 73:
PROCEDURE DIVISION.
HOOFD.
OPEN OUTPUT wikirel▼
CLOSE wikirel▼
OPEN INPUT wikiseq I-O wikirel
READ wikiseq NEXT AT END CONTINUE END-READ
PERFORM omzetten UNTIL eofseq
CLOSE wikiseq wikirel
STOP RUN.
Regel 94 ⟶ 90:
ZOEKEN.
MOVE seqnaam TO wikinaam▼
PERFORM hash
READ wikirel INVALID KEY CONTINUE END-READ
Regel 104 ⟶ 99:
HASH.
▲ MOVE seqnaam TO wikinaam
INSPECT wikinaam CONVERTING kleineletters to hoofdletters
INSPECT wikinaam CONVERTING hoofdletters TO cijfers
Regel 134 ⟶ 130:
}}
Als u de twee vorige hoofdstukken hebt gelezen dan zal dit niet moeilijk zijn om te begrijpen. ''wikiseq'' is het bestand dat hier helemaal bovenaan werd beschreven en we zullen gebruiken om een relatieve bestand met hashfunctie aan te maken. ''wikirel'' zal natuurlijk dat bestand zijn, bij dit bestand is er wel iets waar je voor moet opletten. In het vorige hoofdstuk [[Programmeren in COBOL/Relatieve bestanden zonder hash|Relatieve bestanden zonder hash]] gebruikten we ACCESS SEQUENTIAL maar door de hash-functie moeten we dit bestand met een RANDOM benaderen, hier gaan we later nog op in.
{{code
|Taal= COBOL
|Titel=De bestanden benaderen.
|Code=
<pre>
HOOFD.
READ wikiseq NEXT AT END CONTINUE END-READ
PERFORM omzetten UNTIL eofseq
</pre>
}}
In het begin moeten we natuurlijk de bestanden openen, het relatief bestand ''wikirel'' moet als I-O(INPUT-OUTPUT) worden gelezen want er wordt in dit bestand zowel geschreven als gelezen.
Waarom wordt ook later uitgelegd. We lezen vervolgens het eerste lijntje in van het sequentiële bestand. Om vervolgens naar het deelprogramma ''omzetten'' te gaan als het op het einde van het sequentiële bestand is zal het deelprogramma stoppen.
Als we in ''omzetten'' zijn aangekomen gaan we meteen naar het deelprogramma ''zoeken'' en van daaruit meteen naar de hash-functie.
{{code
|Taal= COBOL
|Titel=De bestanden benaderen.
|Code=
<pre>
HASH.
MOVE seqnaam TO wikinaam
INSPECT wikinaam CONVERTING kleineletters to hoofdletters
INSPECT wikinaam CONVERTING hoofdletters TO cijfers
DIVIDE wikinummer BY 9 GIVING wikinummer REMAINDER nummer
</pre>
}}
{{beg}}
|