[cobol] gegevens uit 2 bestanden vergelijken

Pagina: 1
Acties:

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
situatie:
bestand "bestelling.seq"
bestand "artikel.seq"

Nou moet ik in Cobol85 uit bestelling.seq een artikel ID halen en bij dat ID een naam opzoeken uit artikel.seq en deze combinatie wegschrijven naar een 3de file.

BN-* zijn de variablen voor de weg te schrijven file
BS-* zijn de vairablen met de waardes uit bestelling.seq
AN-* zijn de vairablen met de waardes uit artikel.seq

COBOL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
       EE-INIT SECTION.
       EE-10.
           OPEN INPUT BESTELSORTAANTAL.
           OPEN INPUT ARTIKELNUMMER.
           OPEN OUTPUT BESTELARTNAAM.
       EE-99.
           EXIT.
       
       FF-VERWERK SECTION.
       FF-10.
           MOVE BS-ARTNUM TO BN-ARTNUM
           READ ARTIKELNUMMER AT END MOVE 1 TO EOF2
               IF BS-ARTNUM = AN-ARTNUMMER
                   MOVE AN-ARTNAAM TO BN-ARTNAAM
               END-IF
           END-READ
           WRITE BESTELARTNAAM-RECORD
           READ BESTELSORTAANTAL AT END MOVE 1 TO EOF1.
       FF-99.
           EXIT.

       GG-SLUIT SECTION.
       GG-10.
           CLOSE BESTELSORTAANTAL.
           CLOSE ARTIKELNUMMER.
           CLOSE BESTELARTNAAM.
       GG-99.
           EXIT.


Ik krijg als uitput alleen maar de artikel id's en niet de namen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:13
Bij sequentiele bestanden is het allereerst belangrijk dat die bestanden gesorteerd zijn.

Daarna kan je, als je het op te zoeken artikelnr. hebt, het gewenste artikel in dat andere bestand gaan opzoeken door dat bestand sequentieel te lezen totdat je het overeenkomstige id hebt. Daarna ga je het juiste veld dat je hebt ingelezen (je leest het volledige record in), gaan weschrijven naar die 3de file.

https://fgheysels.github.io/


  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Als ik er nu een geindexeerd bestand van maak, is het dan nogsteeds nodig?

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:13
Liqued schreef op 22 januari 2003 @ 16:10:
Als ik er nu een geindexeerd bestand van maak, is het dan nogsteeds nodig?


Dan is het niet meer nodig om ze te sorteren. Je gaat dan (als ik het me nog goed herinner) nl. bij het lezen opgeven welke index je wilt gebruiken (dus , in welke volgorde je het bestand wilt inlezen).

https://fgheysels.github.io/


Verwijderd

Als je er een geïndexeerd bestand van maakt (artikelbestand dan) leg dan wel de index op artikelnr. Dan kun je voor elk bestelling-record met het artikelnr de omschrijving ophalen. Ook hier is het het efficients om het bestellingenbestand te sorteren op artikelnr ;)

Je zou ook een interne sort kunnen gebruiken.

Zoals het in je eerste post geregeld was zie ik de fout:
geen 1e lees voor een bestelling, geen artilelnr bekend, artikelbestand wordt doorgelezen tot eof, elke read voor het artikelbestand zal hierna alleen eof teruggeven (tenzij je voor elke lees eerst weer het bestand sluit en opent).
Ook als de bestanden niet gesorteerd zijn ligt deze fout op loer (tenzij je, nogmaals, het artikelbestand telkens opent en sluit)

[ Voor 4% gewijzigd door Verwijderd op 22-01-2003 20:00 ]