[Cobol85] Totaal maken

Pagina: 1
Acties:

  • DaGroninger
  • Registratie: November 2002
  • Laatst online: 13-08 21:29
ik heb een cobol opdracht op school, zie onder

opg 7-1 en 2 heb ik inmiddels voor elkaar, (door middel van aangeleverde bestanden: artikel.seq, leverancier.seq: deze heb ik waar nodig gesorteerd/ geindexeerd)

nu moet ik in 7-3 dus een lijst met TOTARTAANTAL maken:
een lijst per leveranciernummer: het aantal verschillende artikelen die een leverancier levert.

maar ik kom er niet uit hoe ik dat voor elkaar moet krijgen.
Wie kan me helpen??

als iemand nog bestanden nodig heeft om er zelf mee te prutsen dan moet je dat maar even zeggen.

Opgave 7.

Het bedrijf Pirate Soft is geïnteresseerd in een ranglijst. Men wil weten welke leverancier de meeste soorten en welke leverancier de minste soorten artikelen levert.

Maak als eerste het bestand OPG7 1.IND, geïndexeerd op LEVNUMMER.

OPG7 1.IND = LEVNUMMER + ARTNUMMER;

Indien er ARTNUMMERs zijn waarvoor de leverancier niet meer bestaat, schrijf deze dan weg naar OPG7 2.SEQ.

OPG7 2.SEQ = ARTNUMMER + OPMERKING;
OPMERKING = 'wordt niet meer geleverd.';

Maak, uitgaande van het bestand OPG7 2.SEQ de gevraagde ranglijst.
Schrijf de resultaten weg naar het bestand OPG7 3.SEQ, gesorteerd op TOTARTAANTAL.

OPG7 3.SEQ = LEVNUMMER + TOTARTAANTAL + NETNUM;
TOTARTAANTAL = 'aantal te leveren artikelen'; * 4 cijfers *

Haal NETNUM uit TELEFOON.SEQ. Indien NETNUM niet te vinden is, hoeft dit veld niet ingevuld te worden.
--------------------------------------------------------------------------------------------------------
een voorbeeld van OPG7-1.SEQ (links dus het levnummer, rechts het artnummer):
05 0001
04 0002
11 0003
06 0004
11 0005
06 0006
08 0007
07 0008
19 0009
09 0010
08 0011
09 0012
12 0013
03 0014
05 0015
03 0016
07 0017
04 0018
13 0019
09 0020
01 0021
08 0022
06 0023
01 0024
18 0026

[ Voor 4% gewijzigd door DaGroninger op 20-01-2003 19:18 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:42
Je zult het met groepsverwerking moeten doen.
Je sequentiele bestanden zul je dus moeten sorteren op leveranciernr/artikelnummer.

Dan doe je als volgt:
pseudo-COBOL-code, COBOL is te lang geleden
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
PERFORM tel_aantal

  LEVNR  = -1
  READ BESTAND
  WHILE NOT BESTAND.EOF 
       
      LEVNR = BESTAND.LEVNR
      AANTALARTIKELSLEVERANCIER = 0      
      WHILE LEVNR = BESTAND.LEVNR

          ARTNR = BESTAND.ARTNR

          WHILE ARTNR == BESTAND.ARTNR AND NOT BESTAND.EOF


             READ BESTAND
          END WHILE
          AANTALARTIKELSLEVERANCIER += 1

      END WHILE
  END WHILE

END PERFORM


Nou, uit de losse pols, needs some fine-tuning en debugging, want het zal nog niet volledig werken, maar you get the drift.

dit moet je toch wel gezien hebben op school...

https://fgheysels.github.io/


  • Boss
  • Registratie: September 1999
  • Laatst online: 23:37

Boss

+1 Overgewaardeerd

COBOL? Ik dacht dat dat was uitgefaseerd na het millenniumprobleen :)

Heb speciaal daarvoor nog een cursus gedaan en enkele apps uit cobol omsgeschreven in iets anders.... ;)

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • DaGroninger
  • Registratie: November 2002
  • Laatst online: 13-08 21:29
tsja het word nog steeds als vak gegeven :p, ik begrijp ook niet waarom. HBO- Bedrijfskundige Informatica, 3e jaar, morgen tentamen.
ik heb m'n opdrachten af, beetje omslachtig maar de gewenste uitvoer is geproduceerd.

voor het tellen, heb ik een opdracht gebruikt van een andere opdracht van een student van 3 jaar terug, (sinds 1988 wordt dit vak gegeven, en de practica opgaven zijn nooit veranderd,) alleen daar werd alles in 1 file gedaan, tegenwoordig moeten we eerst apart sorteren/ indexeren voordat we aan het eigenlijkge programma beginnen.
die telopdracht is dus de enige waarbij ik dat niet heb, ik heb die oude opdracht gewoon omgebouwd, het tellen kwam er zo uit te zien:
PERFORM WITH TEST BEFORE UNTIL EINDE-SORT-OUTPUT
IF SRTLEVNUMMER = LEVNUM
ADD 1 TO AANTAL
ELSE
MOVE AANTAL TO R3-TOTARTAANTAL
MOVE LEVNUM TO R3-LEVNUMMER
IF LEVNUM IS NOT ZERO
WRITE OPGAVE725-RECORD
END-IF
MOVE 1 TO AANTAL
MOVE SRTLEVNUMMER TO LEVNUM
END-IF
RETURN SORT-OPG7-1
AT END
SET EINDE-SORT-OUTPUT TO TRUE
END-RETURN
END-PERFORM