ch6 ch8

Chapitre VII: D'autres programmes séquentiels







Que diriez vous si on faisait tous pleins de programmes qui complèterait le programme SCREER. C'est parti.

Programme SAJOUTER

Programme SVOIR

Programme SMODIFIER

Programme SMENU

Que font ces programmes séquentiels ?



Programme SAJOUTER



IDENTIFICATION DIVISION.
PROGRAMM-ID.SAJOUTER.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
        SELECT FGRILLE ASSIGN TO WORKSTATION-GPERSONNE
                ORGANIZATION TRANSACTION
                CONTROL-AREA FTOUCHES.
        SELECT FPERSONNEL ASSIGN TO DATABASE-PERSONNEL
        ORGANIZATION SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FGRILLE LABEL RECORD OMITTED.
01 EGRILLE.
        COPY DDS-PERSONNE1 OF GPERSONNE.
FD FPERSONNEL LABEL RECORD STANDARD.
01 EPERSONNEL.
        COPY DDS-ALL-FORMATS OF PERSONNEL.
WORKING STORAGE SECTION.
01 FTOUCHES PIC XX.
88 F3 VALUE "03".
PROCEDURE DIVISION.
DEBUT.
        OPEN I-O FGRILLE EXTEND FPERSONNEL.
TQ.
        INITIALIZE PERSONNE1.
        WRITE EGRILLE FORMAT "PERSONNE1".
        READ FGRILLE.
        IF F3 GO TO FIN.
        MOVE CORR PERSONNE1 TO ENRPERS.
        WRITE EPERSONNEL.
        GO TO TQ.
FIN.
        CLOSE FGRILLE FPERSONNEL.
        GOBACK.


EXTEND FPERSONNEL.


On constate que le programme pour ajouter un enregistrement est le même que pour créer le fichier. Cependant, on a remplacé OUTPUT par EXTEND car on veut rajouter des enregistrements, c'est à dire étendre le fichier.

Retour au programme SAJOUTER.


GOBACK.


Au lieu de mettre un STOP RUN, on met un GOBACK, c'est à dire un retour en arrière car ce programme est lancé à partir d'un programme menu en COBOL donc on retourne dans un programme COBOL.

Retour au programme SAJOUTER.




Programme SVOIR



IDENTIFICATION DIVISION.
PROGRAMM-ID.SVOIR.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
        SELECT FGRILLE ASSIGN TO WORKSTATION-GPERSONNE
                ORGANIZATION TRANSACTION
                CONTROL-AREA FTOUCHES.
        SELECT FPERSONNEL ASSIGN TO DATABASE-PERSONNEL
        ORGANIZATION SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FGRILLE LABEL RECORD OMITTED.
01 EGRILLE1.
        COPY DDS-PERSONNE1 OF GPERSONNE.
01 EGRILLE4 REDEFINES EGRILLE1.
        COPY DDS-PERSONNE4 OF GPERSONNE.
FD FPERSONNEL LABEL RECORD STANDARD.
01 EPERSONNEL.
        COPY DDS-ALL-FORMATS OF PERSONNEL.
WORKING STORAGE SECTION.
01 FTOUCHES PIC XX.
88 F3 VALUE "03".
88 F4 VALUE "04".
PROCEDURE DIVISION.
DEBUT.
        OPEN I-O FGRILLE INPUT FPERSONNEL.
TQ.
        READ FPERSONNE AT END GO TO FINFICHIER.
        MOVE CORR ENRPERS TO PERSONNE1.
        WRITE EGRILLE1 FORMAT "PERSONNE1".
        READ FGRILLE.
        IF F3 GO TO FIN.
        IF F4 GO TO TQ.
FINFICHIER.
        MOVE "FIN DU FICHIER, APPUYEZ SUR UNE TOUCHE" TO MESSA.
        WRITE EGRILLE4 FORMAT "PERSONNE4".
        READ FGRILLE.
        IF F3 GO TO FIN.
        CLOSE FGRILLE FPERSONNEL.
        GO TO DEBUT.
FIN.
        CLOSE FGRILLE FPERSONNEL.
        GOBACK.

REDEFINES


Cela sert à redéfinir n'importe quelle zone. Pour le programme, une grille d'écran est une zone de variable à afficher. Donc en redéfinissant une grille en une autre, on peut utiliser plusieurs grilles à la fois.

Retour au programme SVOIR.


INPUT FPERSONNEL.


Ici, on consulte le fichier donc on ne l'ouvre qu'en consultation.

Retour au programme SVOIR.


READ FPERSONNE AT END GO TO FINFICHIER.


Tout comme pour les grilles, on peut lire un fichier afin de récupérer les données sauvegardées. On effectue un READ...AT END... ce qui signifie que tant qu'il n'est pas à la fin du fichier, il continue à le lire. Une fois à la fin, on lui fait exécuter une action.

Retour au programme SVOIR.


CLOSE FGRILLE FPERSONNEL.


Pour repositionner le pointeur au début du fichier à lire, on ferme le fichier et on le réouvre. De plus pour des raisons pratique, ici, on a aussi fermé la grille afin de tout réouvrir en même tant.

Retour au programme SVOIR.




Programme SMODIFIER



IDENTIFICATION DIVISION.
PROGRAMM-ID.SMODIFIER.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
        SELECT FGRILLE ASSIGN TO WORKSTATION-GPERSONNE
                ORGANIZATION TRANSACTION
                CONTROL-AREA FTOUCHES.
        SELECT FPERSONNEL ASSIGN TO DATABASE-PERSONNEL
        ORGANIZATION SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FGRILLE LABEL RECORD OMITTED.
01 EGRILLE1.
        COPY DDS-PERSONNE1 OF GPERSONNE.
01 EGRILLE2 EGRILLE1.
        COPY DDS-PERSONNE2 OF GPERSONNE.
FD FPERSONNEL LABEL RECORD STANDARD.
01 EPERSONNEL.
        COPY DDS-ALL-FORMATS OF PERSONNEL.
WORKING STORAGE SECTION.
01 FTOUCHES PIC XX.
88 F3 VALUE "03".
88 F4 VALUE "04".
PROCEDURE DIVISION.
DEBUT.
        OPEN I-O FGRILLE I-O FPERSONNEL.
DEB.
        MOVE SPACES TO MESS.
        WRITE EGRILLE2 FORMAT "PERSONNE2".
        READ FGRILLE.
        IF F3 GO TO FIN.
TQ.
        READ FPERSONNEL AT END GO TO NONTROUVE.
        IF NEMPLOYE NOT EQUAL NOM OF EPERSONNEL GO TO TQ.
        MOVE CORR ENRPERS TO PERSONNE1.
        WRITE EGRILLE1 FORMAT "PERSONNE1".
        READ FGRILLE.
        IF F3 GO TO FIN.
        IF F4 GO TO TQ.
        MOVE CORR PERSONNE1 TO ENRPERS.
        REWRITE EPERSONNEL.
        CLOSE FPERSONNEL FGRILLE.
        GO TO DEBUT.
NONTROUVE.
        MOVE "CET EMPLOYE N EXISTE PAS" TO MESS.
        WRITE EGRILLE2 FORMAT "PERSONNE2".
        READ FGRILLE.
        CLOSE FPERSONNEL FGRILLE.
        GO TO DEBUT.
FIN.
        CLOSE FGRILLE FPERSONNEL.
        GOBACK.


I-O FPERSONNEL.


Ici, on consulte et on modifie le fichier donc on ne l'ouvre pour une mise à jour (I-O).

Retour au programme SMODIFIER.


REWRITE.


WRITE -> écrire
REWRITE -> réécrire
On réécrit sur l'enregistrement ce qui sauvegardera les données modifiées.

Retour au programme SMODIFIER.




Programme SMENU



IDENTIFICATION DIVISION.
PROGRAMM-ID.SMENU.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
        SELECT FGRILLE ASSIGN TO WORKSTATION-GPERSONNE
                ORGANIZATION TRANSACTION
        CONTROL-AREA FTOUCHES.
DATA DIVISION.
FILE SECTION.
FD FGRILLE LABEL RECORD OMITTED.
01 EGRILLE.
        COPY DDS-PERSONNE3 OF GPERSONNE.
WORKING STORAGE SECTION.
01 FTOUCHES PIC XX.
88 F3 VALUE "03".
PROCEDURE DIVISION.
DEBUT.
        OPEN I-O FGRILLE.
DEB.
        INITIALIZE CHOIX.
        WRITE EGRILLE FORMAT "PERSONNE3".
        READ FGRILLE.
        IF F3 GO TO FIN.
        IF CHOIX = 1 CALL "SAJOUTER".
        IF CHOIX = 2 CALL "SMOFIFIER".
        IF CHOIX = 3 CALL "SVOIR".
        GO TO DEB.
FIN.
        CLOSE FGRILLE.
        STOP RUN.


INITIALIZE CHOIX.


Nous ne sommes pas obligé de réinitialiser une grille, nous pouvons réinitialiser une zone.

Retour au programme SMENU.


CALL


Cette commande permet d'appeler un autre programme COBOL.

Retour au programme SMENU.





Que font ces programmes séquentiels ?


Le programme SAJOUT est le même que SCREER mise à part le EXTEND qui signifie que l'on ajoute des enregistrements.

Le programme SVOIR permet de consulter la fiche d'une employé mais il n'y a pas de saisie de nom donc on parcourt le fichier du début à la fin jusqu'à ce qu'on ait trouvé. Un bon exercice serait d'adapter ce programme afin de saisir le nom désiré et d'effectuer la recherche automatique (facile!!).

Le programme SMODIFIER permet de modifier un enregistrement et le programme SMENU de lancer tout ces programmes.

La grille d'écran PERSONNE1 contient toutes les infos du fichier PERSONNEL. Chaque zone de donnés a le même nom et la même taille que dans le fichier PERSONNEL sans oublier; que ces zones sont définies en +B. La grille PERSONNE2 possède une zone NEMPLOYE définie en +I et une zone MESS définie en +O. La grille PERSONNE3 est le menu avec une zone CHOIX définie en +I et la grille PERSONNE4 une zone MESSA définie en +O.



Chapître précédent!! Chapître suivant!!

RETOUR AU SOMMAIRE