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 ?
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.
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.
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.
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.
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.
Ici, on consulte le fichier donc on ne l'ouvre qu'en
consultation.
Retour au programme SVOIR.
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.
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.
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.
Ici, on consulte et on modifie le fichier donc on ne l'ouvre pour
une mise à jour (I-O).
Retour au programme SMODIFIER.
WRITE -> écrire
REWRITE -> réécrire
On réécrit sur l'enregistrement ce qui sauvegardera les
données modifiées.
Retour au programme SMODIFIER.
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.
Nous ne sommes pas obligé de réinitialiser une grille, nous
pouvons réinitialiser une zone.
Retour au programme SMENU.
Cette commande permet d'appeler un autre programme COBOL.
Retour au programme SMENU.
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.