Programmeren in COBOL/Sequentiële bestanden/Oefeningen: verschil tussen versies

Uit Wikibooks
Verwijderde inhoud Toegevoegde inhoud
Sephiroth (overleg | bijdragen)
kGeen bewerkingssamenvatting
Sephiroth (overleg | bijdragen)
Regel 83: Regel 83:
}}
}}
====Opgave 2: een sequentiële bestand lezen====
====Opgave 2: een sequentiële bestand lezen====
====Opgave 3: een sequentiële bestand lezen en schrijven====
{{code
{{code
|Taal = COBOL
|Taal = COBOL
|Titel = Opgave 1
|Titel = Opgave 2
|Code =
|Code =
<pre>
<pre>
IDENTIFICATION DIVISION.
IDENTIFICATION DIVISION.
PROGRAM-ID. Opgave2.
PROGRAM-ID. Opgave2.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT invoer ASSIGN TO "getallen.txt"
LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD invoer.
01 regelin.
02 PIC x(5).
02 getal PIC 99.

WORKING-STORAGE SECTION.
77 PIC X.
88 eof VALUE "J".

77 teller PIC 999.
77 som PIC 999.
77 uitkomst PIC 999.

PROCEDURE DIVISION.
HOOFD.
OPEN INPUT invoer
READ invoer AT END SET eof TO TRUE END-READ
PERFORM UNTIL eof
ADD getal TO som
ADD 1 TO teller
READ invoer AT END SET eof TO TRUE END-READ
END-PERFORM
DIVIDE som BY teller GIVING uitkomst
DISPLAY "Het gemiddelde bedraagt: " uitkomst
CLOSE invoer
STOP RUN.
</pre>
}}
Normaal moet je dan als uitkomst 17 krijgen.
====Opgave 3: een sequentiële bestand lezen en schrijven====
{{code
|Taal = COBOL
|Titel = Opgave 3
|Code =
<pre>
IDENTIFICATION DIVISION.
PROGRAM-ID. Opgave3.


ENVIRONMENT DIVISION.
ENVIRONMENT DIVISION.

Versie van 21 okt 2007 19:24

Programmeren in COBOL

Inhoudsopgave




Dit zijn oefeningen voor het hoofdstuk sequentiële bestanden. De opgaven zijn opgedeeld in theorie en praktijk. De opgaven komen als eerst en vanonder zijn de oplossingen. Let wel dat er meerdere mogelijke oplossingen zijn voor een opgave, zeker naarmate het moeilijker wordt.

Opgaven

Theorie

Praktijk

Opgave 1: een sequentiële bestand schrijven

Maak een programma waarbij de gebruiker de gegevens van een persoon moet ingeven. De voor-, achternaam, het adres en de gemeente moeten apart opgeven worden en vervolgens weggeschreven in een .txt bestand. Het inlezen en wegschrijven moet gebeuren in een lus. Telkens wanneer er een persoon is weggeschreven wordt de gebruiker gevraagd of hij nog een persoon wilt toevoegen. Als hij 0 ingeeft betekent dat neen als hij iets anders ingeeft betekent dat ja.

Opgave 2: een sequentiële bestand lezen

Een .txt bestand bevat allerlei records. Ieder record bevat een getal van maximaal 2 tekens lang. Tel alle getallen op en bereken daarvan het gemiddelde. Let op! de eerste 5 tekens van ieder record bevat overbodige informatie dus daarmee hoef je niks te doen.

     14
     26
     36
     01
     12
     15

Opgave 3: een sequentiële bestand lezen en schrijven

Lees het volgende .txt bestand in die namen van wiki's bevat en laat de gebruiker een omschrijvingen geven per wiki. De namen en omschrijvingen moeten vervolgens weggeschreven worden in een ander bestand.

Wikipedia
Wiktionary 
Wikimedia
Wikiquote
Wikibooks
Wikinews
Wikisource
Wikispecies
Commons

Oplossingen

Theorie

Praktijk

Opgave 1: een sequentiële bestand schrijven

COBOL-code: Opgave 1

       IDENTIFICATION DIVISION.
       PROGRAM-ID. Opgave1.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT uitvoer ASSIGN to "uitvoer.txt"
           LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD uitvoer.
       01 regel.
        02 voornaam PIC X(15).
        02 PIC X.
        02 achternaam PIC X(20).
        02 PIC X.
        02 adres PIC X(20).
        02 PIC X.
        02 gemeente PIC X(10).

       WORKING-STORAGE SECTION.
       77 invoer PIC 9.

       PROCEDURE DIVISION.
       HOOFD.
           OPEN OUTPUT uitvoer
           PERFORM UNTIL invoer = 0
             DISPLAY "Geef de voornaam:"
             ACCEPT voornaam NO BEEP
             DISPLAY "Geef de achternaam:"
             ACCEPT achternaam NO BEEP
             DISPLAY "Geef het adres:"
             ACCEPT adres NO BEEP
             DISPLAY "Geef de gemeente:"
             ACCEPT gemeente NO BEEP
             WRITE regel END-WRITE
             DISPLAY "Wilt u nog een gebruiker toevoegen(0=stoppen)?"
             ACCEPT invoer NO BEEP
           END-PERFORM
           CLOSE uitvoer
           STOP RUN.

Opgave 2: een sequentiële bestand lezen

COBOL-code: Opgave 2

       IDENTIFICATION DIVISION.
       PROGRAM-ID. Opgave2.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT invoer ASSIGN TO "getallen.txt"
           LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD invoer.
       01 regelin.
        02       PIC x(5).
        02 getal PIC 99.

       WORKING-STORAGE SECTION.
       77 PIC X.
        88 eof VALUE "J".

       77 teller   PIC 999.
       77 som      PIC 999.
       77 uitkomst PIC 999.

       PROCEDURE DIVISION.
       HOOFD.
           OPEN INPUT invoer
           READ invoer AT END SET eof TO TRUE END-READ
           PERFORM UNTIL eof
             ADD getal TO som
             ADD 1 TO teller
             READ invoer AT END SET eof TO TRUE END-READ
           END-PERFORM
           DIVIDE som BY teller GIVING uitkomst
           DISPLAY "Het gemiddelde bedraagt: " uitkomst
           CLOSE invoer
           STOP RUN.

Normaal moet je dan als uitkomst 17 krijgen.

Opgave 3: een sequentiële bestand lezen en schrijven

COBOL-code: Opgave 3

       IDENTIFICATION DIVISION.
       PROGRAM-ID. Opgave3.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT invoer ASSIGN TO "invoer.txt"
           LINE SEQUENTIAL.

           SELECT uitvoer ASSIGN TO "uitvoer.txt"
           LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD invoer.
       01 regelin.
        02 naamin PIC X(11).

       FD uitvoer.
       01 regeluit.
        02 naamuit PIC X(11).
        02 PIC X.
        02 omschrijving PIC X(50).


       WORKING-STORAGE SECTION.
       77 PIC X.
        88 eof VALUE "J".

       PROCEDURE DIVISION.
       HOOFD.
           OPEN INPUT invoer OUTPUT uitvoer
           PERFORM UNTIL eof
             READ invoer AT END SET eof TO TRUE END-READ
             IF eof
               THEN DISPLAY "Programma afgelopen"
               ELSE
                 DISPLAY "Dit is de naam van de wiki: " naamin
                 DISPLAY "Geef een omschrijving:"
                 ACCEPT omschrijving NO BEEP
                 MOVE naamin TO naamuit
                 WRITE regeluit END-WRITE
             END-IF
           END-PERFORM
           CLOSE invoer uitvoer
           STOP RUN.
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.