IDENTIFICATION DIVISION.
PROGRAM-ID. ELECTION15.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-AS400.
OBJECT-COMPUTER. IBM-AS400.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT COMMUNE
ASSIGN TO DATABASE-COML1
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS EXTERNALLY-DESCRIBED-KEY
WITH DUPLICATES.
SELECT DEPARTEMENT
ASSIGN TO DATABASE-DEPL1
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS EXTERNALLY-DESCRIBED-KEY
WITH DUPLICATES.
SELECT ETAT
ASSIGN TO PRINTER-QSYSPRT.
DATA DIVISION.
FILE SECTION.
FD COMMUNE.
01 ENR-COM.
COPY DDS-ENRCOM OF COML1.
FD DEPARTEMENT.
01 ENR-DEP.
COPY DDS-ENRDEP OF DEPL1.
FD ETAT.
01 LIGNE PIC X(100).
WORKING-STORAGE SECTION.
77 L PIC 9(2).
77 P PIC 9(5).
77 FFC PIC 9.
77 TVOTANTS PIC 9(5).
*-------LIGNES IMPRESSION--------------*
01 ENTETE-PAGE.
02 F PIC X(30) VALUE "LISTE DES COMMUNES DE FRANCE".
01 ENTETE-COLONNES.
02 F PIC X(30) VALUE "COMMUNE".
02 F PIC X(5) VALUE SPACES.
02 F PIC X(30) VALUE "DEPARTEMENT".
02 F PIC X(5) VALUE SPACES.
02 F PIC X(30) VALUE "VOTANTS".
01 LIGNE-COMMUNE.
02 ED-NOMCOM PIC X(30).
02 F PIC X(5) VALUE SPACES.
02 ED-NOMDEP PIC X(30).
02 F PIC X(5) VALUE SPACES.
02 ED-VOTANTS PIC 9(5).
01 ENTETE-TOTAL.
02 F PIC X(35) VALUE "TOTAL DES VOTANTS INSCRITS : ".
02 F PIC X(5) VALUE SPACES.
02 ED-TVOTANTS PIC 9(5).
01 PIED-PAGE.
02 F PIC X(20) VALUE SPACES.
02 F PIC X(7) VALUE "PAGE : ".
02 ED-P PIC Z(4)9.
01 ENTETE-TSVP.
02 F PIC X(30) VALUE "TOURNEZ SVP".
PROCEDURE DIVISION.
OUVERTURE-FICHIERS.
OPEN INPUT COMMUNE
OPEN INPUT DEPARTEMENT
OPEN OUTPUT ETAT.
DEBUT.
MOVE 0 TO L
MOVE 0 TO P
MOVE 0 TO TVOTANTS
READ COMMUNE AT END MOVE 1 TO FFC
NOT AT END MOVE 0 TO FFC
END-READ
IF FFC = 0
THEN PERFORM TRT-PAGE
ELSE DISPLAY "PAS DE COMMUNES DANS LE FICHIER"
END-IF
CLOSE DEPARTEMENT
CLOSE COMMUNE
CLOSE ETAT
STOP RUN.
TRT-PAGE.
PERFORM UNTIL FFC = 1
WRITE LIGNE FROM ENTETE-PAGE
AFTER ADVANCING PAGE
END-WRITE
WRITE LIGNE FROM ENTETE-COLONNES
AFTER ADVANCING 2 LINE
END-WRITE
MOVE 0 TO L
PERFORM TRT-COMMUNE
IF FFC = 1
THEN MOVE TVOTANTS TO ED-TVOTANTS
WRITE LIGNE FROM ENTETE-TOTAL
AFTER ADVANCING 2 LINES
END-WRITE
ELSE WRITE LIGNE FROM ENTETE-TSVP
AFTER ADVANCING 2 LINES
END-WRITE
END-IF
ADD 1 TO P
MOVE P TO ED-P
WRITE LIGNE FROM PIED-PAGE
AFTER ADVANCING 3 LINES
END-WRITE
END-PERFORM.
TRT-COMMUNE.
PERFORM UNTIL FFC = 1 OR L >= 60
READ DEPARTEMENT INVALID KEY MOVE 1 TO FFC
NOT INVALID KEY MOVE 0 TO FFC
END-READ
MOVE NOMDEP OF DEPARTEMENT TO ED-NOMDEP
MOVE NOMCOM TO ED-NOMCOM
MOVE VOTANT TO ED-VOTANTS
WRITE LIGNE FROM LIGNE-COMMUNE AFTER ADVANCING 1 LINE
END-WRITE
ADD VOTANT TO TVOTANTS
ADD 1 TO L
READ COMMUNE AT END MOVE 1 TO FFC
NOT AT END MOVE 0 TO FFC
END-READ
END-PERFORM.
Partager