Grosse MàJ

This commit is contained in:
olivier
2008-11-25 22:11:16 +01:00
parent 53195fdfcd
commit 3e719157ea
2980 changed files with 343846 additions and 0 deletions

BIN
P5B/cobol/exercices/carmag Normal file

Binary file not shown.

View File

@ -0,0 +1,163 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. carmag0.
AUTHOR. OD.
***---------------------------------------------------------------
*----------------------------------------------------------------*
* PROGRAMME *
* CREATION TABLEAU IMPAIR *
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
***---------------------------------------------------------------
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
* Nombre entre au clavier
77 NBR-DPRT PICTURE 999 VALUE ZERO.
* Tableau du carre magique
01 TABLE-CARMAG.
* - Numero de ligne
05 LGN OCCURS 25.
* - Colonnes de la ligne
10 CLN OCCURS 25.
* - - Contenu de chaque colonne : chiffre
15 CNTN PICTURE 999.
* Nombre pour verifier le nombre saisie
77 NBR PICTURE 999 VALUE ZERO.
88 IMPAIR VALUE 1.
* Valeur a inserer dans le tableau final
77 VALEUR PICTURE 999 VALUE 1.
* Curseur ligne
77 CRSR-LGN PICTURE 999 VALUE 1.
* Curseur colonne
77 CRSR-CLN PICTURE 999 VALUE 1.
* Total d'un calcul puis reutilisation pour diverses taches
77 TOTAL PICTURE 999 VALUE ZERO.
* Nombre de cases dans le tableau a afficher
77 NBR-CRR PICTURE 999 VALUE ZERO.
* Reste dans la division euclidienne
77 RST PICTURE 999 VALUE ZERO.
***---------------------------------------------------------------
PROCEDURE DIVISION.
*
* Nom du programme
*
PROGRAMME SECTION.
* Debut du programme (initialisation)
DEBUT.
DISPLAY "Debut de la saisie...".
PERFORM SAISIE UNTIL IMPAIR.
DISPLAY "Saisie terminee !".
* Corps du programme (contenu)
CORPS.
DISPLAY "Taille du tableau : " NBR-DPRT.
PERFORM REMPLISSAGE.
* Fin du programme
FIN.
DISPLAY "Carre magique fini !!!".
STOP RUN.
*
* Arborescence de niveau 2 : Saisie de l'utilisateur
*
SAISIR SECTION.
SAISIE.
DISPLAY "Saisissez un chiffre impair inferieur a 26 : "
WITH NO ADVANCING.
ACCEPT NBR-DPRT.
PERFORM VERIF.
VERIF.
DIVIDE NBR-DPRT BY 2 GIVING TOTAL REMAINDER RST.
IF (RST NOT EQUAL TO ZERO AND NBR-DPRT LESS THAN 26) THEN
MOVE 1 TO NBR.
*
* Arborescence niveau 2 : REMPLISSAGE PUIS AFFICHAGE
*
REMPLISSAGE SECTION.
* Affectation de la premiere valeur, ligne une, colonne du milieu
VAL-UNE.
DISPLAY "Affectation valeur une...".
* COMPUTE TOTAL ROUNDED = NBR-DPRT / 2.
DIVIDE 2 INTO NBR-DPRT GIVING TOTAL ROUNDED.
* Affectation de la premiere valeur a la colonne trouvee
MOVE 1 TO CNTN(1,TOTAL).
* Affectation du numero de colonne vers le curseur des colonnes
MOVE TOTAL TO CRSR-CLN.
DISPLAY "Affectation terminee ! Colonne actuelle : " TOTAL.
VAL-SUIV.
DISPLAY "Affectation des valeurs suivantes...".
MULTIPLY NBR-DPRT BY NBR-DPRT GIVING TOTAL.
MOVE TOTAL TO NBR-CRR.
PERFORM TRAITEMENT UNTIL VALEUR EQUAL TO NBR-CRR.
DISPLAY "Affectations terminees ! Total : " VALEUR.
AFFICHAGE.
DISPLAY "AFFICHAGE DU TABLEAU".
MOVE 1 TO CRSR-LGN.
MOVE 1 TO CRSR-CLN.
PERFORM PARCOURS VARYING CRSR-LGN FROM 1 BY 1 UNTIL CRSR-LGN
> NBR-DPRT.
* AFTER CRSR-CLN FROM 1 BY 1 UNTIL CRSR-CLN
* > NBR-DPRT.
DISPLAY "AFFICHAGE TERMINE".
*
* Arborescence niveau 3 : TRAITEMENT PLACEMENT
*
TRAITEMENT SECTION.
INCREMENTE.
ADD 1 TO VALEUR.
MLTPL.
DIVIDE VALEUR BY NBR-DPRT GIVING TOTAL REMAINDER RST.
IF (RST EQUAL TO 1) THEN
PERFORM SS-PLCMT
ELSE PERFORM SR-PLCMT.
VERIFICATION.
PERFORM VERIFIER.
PLACEMENT.
DISPLAY "|_Affectation de : " VALEUR.
MOVE VALEUR TO CNTN(CRSR-LGN,CRSR-CLN).
DISPLAY "| Affectee a : " CRSR-LGN ", "CRSR-CLN.
*
* Arborescence niveau 3 : Affichage du tableau
*
AFFICHER SECTION.
PARCOURS.
PERFORM AFFICHE VARYING CRSR-CLN FROM 1 BY 1
UNTIL CRSR-CLN >= NBR-DPRT.
DISPLAY "|" CNTN(CRSR-LGN,CRSR-CLN) "|".
AFFICHE.
DISPLAY "|" CNTN(CRSR-LGN,CRSR-CLN) "|"
WITH NO ADVANCING.
*
* Arborescence niveau 4 : MULIPLE + 1
*
MULTPL SECTION.
SS-PLCMT.
ADD 1 TO CRSR-LGN.
SR-PLCMT.
SUBTRACT 1 FROM CRSR-LGN.
SUBTRACT 1 FROM CRSR-CLN.
*
* Arborescence niveau 4 : VERIFICATION LIGNE / COLONNE
*
VERIFIER SECTION.
LIGNE.
IF (CRSR-LGN < 1) THEN
MOVE NBR-DPRT TO CRSR-LGN.
IF (CRSR-LGN > NBR-DPRT) THEN
MOVE 1 TO CRSR-LGN.
COLONNE.
IF (CRSR-CLN < 1) THEN
MOVE NBR-DPRT TO CRSR-CLN.
IF (CRSR-CLN > NBR-DPRT) THEN
MOVE 1 TO CRSR-CLN.

BIN
P5B/cobol/exercices/carmag0 Normal file

Binary file not shown.

View File

@ -0,0 +1,50 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. carmag0.
AUTHOR. OD.
*----------------------------------------------------------------*
* PROGRAMME *
* CREATION TABLEAU IMPAIR *
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
* Nombre entr<74>e
77 NBR-DPRT PICTURE 99 VALUE ZERO.
* Tableau du carr<72> magique
01 TABLE-CARMAG.
* - Num<75>ro de ligne
05 NM-LGN OCCURS 31.
* - Colonnes de la ligne
10 CLN OCCURS 31.
* - - Contenu de chaque colonne : chiffre
15 CNTN PICTURE 99.
* Curseur ligne
77 CRSR-LGN PICTURE 99 VALUE 1.
77 CRSR-CLN PICTURE 99 VALUE 1.
PROCEDURE DIVISION.
PROGRAMME SECTION.
DEBUT.
MOVE 3 TO NBR-DPRT.
CORPS.
DISPLAY "Taille du tableau : " NBR-DPRT.
PERFORM PARCOURS.
FIN.
DISPLAY "Carr<72> magique termin<69>.".
STOP RUN.
TRAITEMENTS SECTION.
PARCOURS.
PERFORM REMP VARYING CRSR-LGN FROM 1 BY 1 UNTIL CRSR-LGN
> NBR-DPRT AFTER CRSR-CLN FROM 1 BY 1 UNTIL CRSR-CLN
> NBR-DPRT.
REMP.
MOVE 1 TO CNTN(CRSR-LGN, CRSR-CLN).
DISPLAY "Coordonn<6E>es (" CRSR-LGN ", " CRSR-CLN ") : "
CNTN(CRSR-LGN, CRSR-CLN).

BIN
P5B/cobol/exercices/carmag1 Normal file

Binary file not shown.

View File

@ -0,0 +1,62 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. carmag0.
AUTHOR. OD.
*----------------------------------------------------------------*
* PROGRAMME *
* CREATION TABLEAU IMPAIR *
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
* Nombre entr<74>e
77 NBR-DPRT PICTURE 99 VALUE ZERO.
* Tableau du carr<72> magique
01 TABLE-CARMAG.
* - Num<75>ro de ligne
05 NM-LGN OCCURS 31.
* - Colonnes de la ligne
10 CLN OCCURS 31.
* - - Contenu de chaque colonne : chiffre
15 CNTN PICTURE 99.
* Curseur ligne
77 CRSR-LGN PICTURE 99 VALUE 1.
77 CRSR-CLN PICTURE 99 VALUE 1.
* Total d'un calcul
77 TOTAL PICTURE 99 VALUE ZERO.
PROCEDURE DIVISION.
* Nom du programme
PROGRAMME SECTION.
* D<>but du programme (initialisation)
DEBUT.
MOVE 3 TO NBR-DPRT.
* Corps du programme (contenu)
CORPS.
DISPLAY "Taille du tableau : " NBR-DPRT.
PERFORM REMPLI.
* Fin du programme
FIN.
DISPLAY "Carr<72> magique termin<69>.".
STOP RUN.
* Section dédiée aux traitements à effectuer
TRAITEMENTS SECTION.
* Remplissage du tableau
REMPLI.
COMPUTE TOTAL ROUNDED = NBR-DPRT / 2.
DISPLAY TOTAL.
MOVE 1 TO CNTN(1,TOTAL).
AFFICHAGE SECTION.
PARCOURS-TABLEAU.
PERFORM AFFICHE VARYING CRSR-LGN FROM 1 BY 1 UNTIL CRSR-LGN
> NBR-DPRT AFTER CRSR-CLN FROM 1 BY 1 UNTIL CRSR-CLN
> NBR-DPRT.
AFFICHE.
DISPLAY "Coordonnées (" CRSR-LGN ", " CRSR-CLN ") : "
CNTN(CRSR-LGN, CRSR-CLN).

BIN
P5B/cobol/exercices/conson Normal file

Binary file not shown.

View File

@ -0,0 +1,83 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. conson.
AUTHOR. OD.
*----------------------------------------------*
* PROGRAMME QUI CONSONNE UN MOT (NORMALEMENT) *
*----------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
77 MOT PICTURE X(30) VALUE SPACE.
77 RETOUR PICTURE X(30) VALUE SPACE.
77 RESULTAT PICTURE X(6) VALUE SPACE.
77 LETTRE PICTURE X VALUE SPACE.
77 CHIFFRE PICTURE 99 VALUE 2.
77 POINTEUR1 PICTURE 99 VALUE 2.
77 POINTEUR2 PICTURE 9 VALUE 2.
01 VOYELLES.
05 LTR-AMAJ PICTURE X VALUE "A".
05 LTR-EMAJ PICTURE X VALUE "E".
05 LTR-IMAJ PICTURE X VALUE "I".
05 LTR-OMAJ PICTURE X VALUE "O".
05 LTR-UMAJ PICTURE X VALUE "U".
05 LTR-YMAJ PICTURE X VALUE "Y".
05 LTR-AMIN PICTURE X VALUE "a".
05 LTR-EMIN PICTURE X VALUE "e".
05 LTR-IMIN PICTURE X VALUE "i".
05 LTR-OMIN PICTURE X VALUE "o".
05 LTR-UMIN PICTURE X VALUE "u".
05 LTR-YMIN PICTURE X VALUE "y".
01 ESPACES PICTURE X(12) VALUE SPACE.
PROCEDURE DIVISION.
*NOM DU PROGRAMME
PRINCIPAL SECTION.
DEBUT.
PERFORM SAISIE.
CORPS.
PERFORM TRAITEMENT.
FIN.
DISPLAY "Mot consonn<6E> : " RESULTAT.
DISPLAY "FIN DU TRAITEMENT". STOP RUN.
*SAISIE DU MOT
SAISIR SECTION.
SAISIE.
DISPLAY "Saisissez un mot : "
WITH NO ADVANCING.
ACCEPT MOT.
*TRAITEMENT DU MOT
TRAITER SECTION.
TRAITEMENT.
INSPECT MOT CONVERTING VOYELLES TO ESPACES AFTER MOT(1:1).
MOVE MOT(1:1) TO RETOUR.
PERFORM CONCATENER UNTIL CHIFFRE EQUAL TO 30.
PERFORM TRANSMISSION.
*CONCATENER LA CHAINE OBTENUE POUR SUPPRIMER LES ESPACES
CONCATENER.
MOVE MOT(CHIFFRE:1) TO LETTRE.
IF (POINTEUR1 < 10) THEN
MOVE POINTEUR1 TO POINTEUR2
END-IF
SUBTRACT 1 FROM POINTEUR2.
IF LETTRE IS EQUAL TO RETOUR(POINTEUR2:1) THEN
MOVE SPACE TO LETTRE.
IF (LETTRE IS NOT EQUAL TO SPACE OR POINTEUR1 IS EQUAL TO
6) THEN
STRING LETTRE(1:1) INTO RETOUR WITH POINTER POINTEUR1
END-IF.
ADD 1 TO CHIFFRE.
*TRANSMET LE RESULTAT DES 6 PREMIERS CARACTERES A LA VARIABLE
* RESULAT
TRANSMISSION.
MOVE RETOUR(1:6) TO RESULTAT.

BIN
P5B/cobol/exercices/impair Normal file

Binary file not shown.

View File

@ -0,0 +1,57 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. multpl.
AUTHOR. OD.
*----------------------------------------------------------------*
* PROGRAMME *
* VERIFICATION NOMBRE MULTIPLE D'UN AUTRE (IMPAIR) *
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
* Nombre de d<>part
77 NBR-DPRT PICTURE 99 VALUE ZERO.
* Resultat dans la division euclidienne
77 DV-ECLDN PICTURE 99 VALUE ZERO.
* Reste dans la division euclidienne par 2
77 RST PICTURE 9 VALUE ZERO.
* Nombre impair ou pas ? (simulation d'un bool<6F>en)
77 NBR PICTURE 99 VALUE ZERO.
88 IMPAIR VALUE 1.
* R<>sultat
77 RSLTT PICTURE X(30).
PROCEDURE DIVISION.
*--------------------*
* DEBUT DU PROGRAMME *
*--------------------*
PROGRAMME SECTION.
DEBUT.
PERFORM SAISIE UNTIL IMPAIR.
CORPS.
PERFORM PARITE.
FIN.
DISPLAY RSLTT.
STOP RUN.
SAISIR SECTION.
SAISIE.
DISPLAY "Saisissez un chiffre impair : "
WITH NO ADVANCING.
ACCEPT NBR-DPRT.
PERFORM VERIF.
VERIF.
DIVIDE NBR-DPRT BY 2 GIVING DV-ECLDN REMAINDER RST.
DISPLAY RST.
IF (RST NOT EQUAL TO ZERO) THEN
MOVE 1 TO NBR.
PARITE.
IF (IMPAIR) THEN
MOVE "Le nombre est impair." TO RSLTT
ELSE MOVE "Le nombre n'est pas impair." TO RSLTT.

BIN
P5B/cobol/exercices/insee Normal file

Binary file not shown.

View File

@ -0,0 +1,114 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. insee.
AUTHOR. OD.
*---------------------------------------------------------------*
* PROGRAMME *
* CONTROLE VALIDITE NUMERO INSEE *
*---------------------------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
01 CD-INSEE.
* Code Homme/Femme, 1 = homme, 2 = femme
05 CD-SX PICTURE 9 VALUE ZERO.
* Code ann<6E>e de naissance
05 CD-NSSNC PICTURE 99 VALUE ZERO.
* Code mois de naissance
05 CD-MS-NSSNC PICTURE 99 VALUE ZERO.
* Code d<>partement
* Enlever les d<>partements non existants, et 2A pour Corse,
* ainsi que 2B
05 CD-DPRTMNT PICTURE XX.
* Code commune
05 CD-CMMNE PICTURE 999 VALUE ZERO.
* Code registre
05 CD-RGSTR PICTURE 999 VALUE ZERO.
* Cl<43> de contr<74>le
05 CL-CTRL PICTURE 99 VALUE ZERO.
* ERREURS
* Bool<6F>en permettant de dire s'il y a erreur ou pas
* Initialis<69> <20> 0 pour l'instant
01 ERR-BLN PICTURE 9 VALUE LOW-VALUE.
* Nom erreur
01 ERR-NM PICTURE X(20) VALUE SPACE.
PROCEDURE DIVISION.
* Nom du programme, ici PROGRAMME
PROGRAMME SECTION.
* Demande du num<75>ro
DEBUT.
DISPLAY "Tapez votre num<75>ro INSEE : " WITH NO ADVANCING.
ACCEPT CD-INSEE.
* Affichage des valeurs entr<74>es
AFFICHAGE.
DISPLAY "Sexe : " CD-SX.
DISPLAY "Ann<6E>e de naissance : " CD-NSSNC.
DISPLAY "Mois de naissance : " CD-MS-NSSNC.
DISPLAY "D<>partement de naissance : " CD-DPRTMNT.
DISPLAY "Commune : " CD-CMMNE.
DISPLAY "Code registre : " CD-RGSTR.
DISPLAY "Cl<43> de contr<74>le : " CL-CTRL.
* STOP RUN.
* Contr<74>les de validit<69>
CONTROLE SECTION.
* Contr<74>le du sexe
SEXE.
IF NOT (CD-SX EQUAL TO 1 OR CD-SX EQUAL TO 2) THEN
MOVE HIGH-VALUE TO ERR-BLN
MOVE "sexe." TO ERR-NM.
* Contr<74>le sur type code sexe
SEXETYPE.
IF CD-SX IS NOT NUMERIC THEN
MOVE HIGH-VALUE TO ERR-BLN
MOVE "sexe non num<75>rique." TO ERR-NM.
* Contr<74>le sur mois de naissance
MOISNAISSANCE.
IF (CD-MS-NSSNC EQUAL TO 0 OR CD-MS-NSSNC GREATER THAN 12)
THEN
MOVE HIGH-VALUE TO ERR-BLN
MOVE "mois de naissance." TO ERR-NM.
* Contr<74>le sur type code mois de naissance
MOISNAISSANCETYPE.
IF CD-MS-NSSNC IS NOT NUMERIC THEN
MOVE HIGH-VALUE TO ERR-BLN
MOVE "ann<6E>e de naissance non num<75>rique." TO ERR-NM.
* Contr<74>le sur d<>partement
DEPARTEMENT.
IF CD-DPRTMNT EQUAL TO "2A" THEN
MOVE "19" TO CD-DPRTMNT
IF CD-DPRTMNT EQUAL TO "2B" THEN
MOVE "18" TO CD-DPRTMNT
IF (CD-DPRTMNT EQUAL TO "96" OR CD-DPRTMNT EQUAL TO 0)
THEN
MOVE HIGH-VALUE TO ERR-BLN
MOVE "mauvais d<>partement".
* Contr<74>le sur type code d<>partement
DEPARTEMENTTYPE.
IF CD-DPRTMNT IS NOT NUMERIC THEN
MOVE HIGH-VALUE TO ERR-BLN
MOVE
* Affichage du r<>sultat
RESULTAT SECTION.
* Affichage de l'erreur
ERREUR.
IF ERR-BLN EQUAL TO HIGH-VALUE THEN
DISPLAY "Erreur sur : " ERR-NM
ELSE
DISPLAY "Aucune erreur.".
STOP RUN.

Binary file not shown.

BIN
P5B/cobol/exercices/mult Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. mult.
AUTHOR. GR.
* Ce programme effectue la multiplication de 2 entiers
*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 Num1 PIC 999 VALUE ZERO.
77 Num2 PIC 999 VALUE ZERO.
77 Res PIC Z(5)9.
PROCEDURE DIVISION.
PROGRAMME SECTION.
P1.
DISPLAY "Taper le 1er nombre (<999) : " WITH NO ADVANCING.
ACCEPT Num1.
DISPLAY "Taper le second nombre : " WITH NO ADVANCING.
ACCEPT Num2.
MULTIPLY Num1 BY Num2 GIVING Res.
DISPLAY "R<>sultat = " Res.
STOP RUN.

BIN
P5B/cobol/exercices/multpl Normal file

Binary file not shown.

View File

@ -0,0 +1,64 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. multpl.
AUTHOR. OD.
*----------------------------------------------------------------*
* PROGRAMME *
* VERIFICATION NOMBRE MULTIPLE D'UN AUTRE +1 *
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
* Nombre de d<>part
77 NBR-DPRT PICTURE 99 VALUE ZERO.
* Nombre à tester
77 NBR-TEST PICTURE 99 VALUE ZERO.
* Resultat dans la division euclidienne
77 DV-ECLDN PICTURE 99 VALUE ZERO.
* Reste dans la division euclidienne par 2
77 RST PICTURE 9 VALUE ZERO.
* Nombre impair ou pas ? (simulation d'un bool<6F>en)
77 NBR PICTURE 99 VALUE ZERO.
88 MLTPL VALUE 1.
* R<>sultat
77 RSLTT PICTURE X(30).
PROCEDURE DIVISION.
*--------------------*
* DEBUT DU PROGRAMME *
*--------------------*
PROGRAMME SECTION.
DEBUT.
PERFORM SAISIE.
CORPS.
PERFORM PARITE.
FIN.
DISPLAY RSLTT.
STOP RUN.
SAISIR SECTION.
SAISIE.
DISPLAY "Saisissez un chiffre de base : "
WITH NO ADVANCING.
ACCEPT NBR-DPRT.
DISPLAY "Saisissez le chiffre suivant : "
WITH NO ADVANCING.
ACCEPT NBR-TEST.
PERFORM VERIF.
VERIF.
DIVIDE NBR-TEST BY NBR-DPRT GIVING DV-ECLDN REMAINDER RST.
DISPLAY "RESTE : " RST.
IF (RST EQUAL TO 1) THEN
MOVE 1 TO NBR.
PARITE.
IF (MLTPL) THEN
MOVE "Le nombre est un multiple incrément<6E>de un"
TO RSLTT
ELSE MOVE "Le nombre n'est pas un multiple incr<63>ment
- "<22> de un." TO RSLTT.

BIN
P5B/cobol/exercices/palind Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,70 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. palind.
AUTHOR. OD.
*-------------------------------------------*
* PROGRAMME DE VERIFICATION D'UN PALINDROME *
*-------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
77 MOT PICTURE X(255) VALUE SPACE.
77 RESULTAT PICTURE X(30) VALUE SPACE.
77 DEBUT-MOT PICTURE 99 VALUE 1.
77 FIN-MOT PICTURE 99 VALUE 29.
77 LETTRE PICTURE X VALUE SPACE.
77 VALIDE PICTURE 9 VALUE 1.
88 CORRECT VALUE 1.
PROCEDURE DIVISION.
*NOM DU PROGRAMME
PRINCIPAL SECTION.
DEBUT.
PERFORM SAISIE.
CORPS.
PERFORM TRAITEMENT.
FIN.
DISPLAY RESULTAT.
DISPLAY "FIN DU TRAITEMENT".
STOP RUN.
*SAISIE DU MOT
SAISIR SECTION.
SAISIE.
DISPLAY "Saisissez une phrase : " WITH NO ADVANCING.
ACCEPT MOT.
*------*
* TEST *
*------*
DISPLAY MOT.
*TRAITEMENT DE LA PHRASE
TRAITEMENT SECTION.
TRAITER.
PERFORM PARCOURIR UNTIL VALIDE IS NOT EQUAL TO 1.
*PARCOURS DE LA CHAINE DE CARACT<43>RE, ET LONGUEUR DE CELLE CI
PARCOURIR.
MOVE ZERO TO VALIDE.
DISPLAY DEBUT-MOT.
DISPLAY FIN-MOT.
MOVE 1 TO VALIDE.
* IF (MOT(DEBUT-MOT:1) EQUAL TO SPACE) THEN
* ADD 1 TO DEBUT-MOT
* END-IF.
* MOVE MOT(FIN-MOT:1) TO LETTRE.
* PERFORM CAL-CHFFRE UNTIL LETTRE NOT EQUAL TO SPACE.
* IF (MOT(DEBUT-MOT:1) EQUAL TO MOT(FIN-MOT:1))
* MOVE 1 TO VALIDE
* END-IF.
*CALCUL DU CHIFFRE DE LA LETTRE <20> COMPARER
CAL-CHFFRE.
IF (MOT(FIN-MOT:1) EQUAL TO SPACE) THEN
SUBTRACT 1 FROM FIN-MOT
END-IF.

BIN
P5B/cobol/exercices/palind1 Normal file

Binary file not shown.

View File

@ -0,0 +1,90 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. palind.
AUTHOR. OD.
*-------------------------------------------*
* PROGRAMME DE VERIFICATION D'UN PALINDROME *
*-------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
* MOT DONNE PAR L'UTILISATEUR
77 MT-UTIL PICTURE X(255) VALUE SPACE.
* MOT SANS ESPACE
77 MT-SS-SPC PICTURE X(255) VALUE SPACE.
* MOT INVERSE
77 MT-INV PICTURE X(255) VALUE SPACE.
* RESULTAT DU PROGRAMME (ICI ON DIRA "CECI EST UN PALINDROME")
* OU PAS)
77 RESULTAT PICTURE X(30) VALUE SPACE.
* BOOLEEN
77 PLND PICTURE 9 VALUE ZERO.
* 88 EST VALUE ZERO.
* 88 ESTPAS VALUE 1.
* CURSEURS
* - CURSEUR-DEPART
77 CRSR-DP PICTURE 999 VALUE 1.
* - CURSEUR-ARRIVEE
77 CRSR-RRV PICTURE 999 VALUE 1.
PROCEDURE DIVISION.
*NOM DU PROGRAMME
PRINCIPAL SECTION.
DEBUT.
PERFORM SAISIE.
CORPS.
PERFORM TRAITER.
FIN.
DISPLAY RESULTAT.
DISPLAY "FIN DU TRAITEMENT".
STOP RUN.
*SAISIE DU MOT
SAISIR SECTION.
SAISIE.
DISPLAY "Saisissez une phrase : " WITH NO ADVANCING.
ACCEPT MT-UTIL.
DISPLAY "MOT SAISI : " MT-UTIL.
*TRAITEMENT DE LA PHRASE
TRAITEMENT SECTION.
TRAITER.
PERFORM SPPR-SPC UNTIL CRSR-DP EQUAL TO 255.
MOVE 255 TO CRSR-DP.
MOVE 1 TO CRSR-RRV.
PERFORM COPIER UNTIL CRSR-DP EQUAL TO ZERO.
PERFORM COMPARER.
PERFORM DEDUIRE.
*SUPPRESSION DES ESPACES DU MOT DE DEPART
SPPR-SPC.
IF (MT-UTIL(CRSR-DP:1) NOT EQUAL TO SPACE) THEN
STRING MT-UTIL(CRSR-DP:1) DELIMITED BY SIZE INTO
MT-SS-SPC WITH POINTER CRSR-RRV.
ADD 1 TO CRSR-DP.
*COPIE DE LA CHAINE DE DEPART VERS UNE CHAINE D'ARRIVEE
COPIER.
IF (MT-UTIL(CRSR-DP:1) NOT EQUAL TO SPACE) THEN
STRING MT-UTIL(CRSR-DP:1) DELIMITED BY SIZE INTO MT-INV
WITH POINTER CRSR-RRV.
SUBTRACT 1 FROM CRSR-DP.
*COMPARAISON DE LA CHAINE DE CARACT<43>RE
COMPARER.
DISPLAY "MOT DEPART : " MT-SS-SPC.
DISPLAY "MOT ARRIVEE : " MT-INV.
IF (MT-SS-SPC EQUAL TO MT-INV) THEN
MOVE 1 TO PLND
ELSE MOVE ZERO TO PLND.
*DEDUCTION LOGIQUE DU RESULTAT
DEDUIRE.
IF (PLND EQUAL ZERO) THEN
MOVE "CE N'EST PAS UN PALINDROME" TO RESULTAT
ELSE MOVE "C'EST UN PALINDROME" TO RESULTAT.

View File

@ -0,0 +1,91 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. palind.
AUTHOR. OD.
*-------------------------------------------*
* PROGRAMME DE VERIFICATION D'UN PALINDROME *
*-------------------------------------------*
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
*--------------------------*
* DEFINITION DES VARIABLES *
*--------------------------*
* LE MOT DONNE PAR L'UTILISATEUR
77 MOT PICTURE X(255) VALUE SPACE.
* RESULTAT DU PROGRAMME (ICI ON DIRA "CECI EST UN PALINDROME")
* OU PAS)
77 RESULTAT PICTURE X(30) VALUE SPACE.
* DEBUT-MOT ET DBUT-FIN SUBISSENT UNE INCREMENTATION
* CE SONT LES CURSEURS
77 DEBUT-MOT PICTURE 99 VALUE 1.
77 FIN-MOT PICTURE 99 VALUE 30.
* LETTREG CONTIENDRA UNE LETTRE DU MOT, CELLE COTE GAUCHE
* LETTRED, CELLE COTE DROITE
77 LETTREG PICTURE X VALUE SPACE.
77 LETTRED PICTURE X VALUE SPACE.
* DEFINITION DE QUELQUES VALEUR NUMERIQUES
* POUR LES CONTROLES
01 ETUDE-ENONCE.
05 COMP-VALID PICTURE 9 VALUE 1.
88 COMP-CORRECT VALUE 1.
05 CARAC-DEB PICTURE 9 VALUE 1.
88 CARACD-CORRECT VALUE 1.
05 CARAC-FIN PICTURE 9 VALUE 1.
88 CARACF-CORRECT VALUE 1.
PROCEDURE DIVISION.
*NOM DU PROGRAMME
PRINCIPAL SECTION.
DEBUT.
PERFORM SAISIE.
CORPS.
PERFORM TRAITER.
FIN.
DISPLAY RESULTAT.
DISPLAY "FIN DU TRAITEMENT".
STOP RUN.
*SAISIE DU MOT
SAISIR SECTION.
SAISIE.
DISPLAY "Saisissez une phrase : " WITH NO ADVANCING.
ACCEPT MOT.
*------*
* TEST *
*------*
DISPLAY MOT.
*TRAITEMENT DE LA PHRASE
TRAITEMENT SECTION.
TRAITER.
PERFORM COMPARER UNTIL NOT COMP-CORRECT.
*VALIDE IS NOT EQUAL TO 1.
*COMPARAISON DE LA CHAINE DE CARACT<43>RE
COMPARER.
DISPLAY DEBUT-MOT.
DISPLAY FIN-MOT.
* PERFORM PARCOURS-FIN UNTIL NOT CARACF-CORRECT.
MOVE ZERO TO COMP-VALID.
*PARCOURS DE LA CHAINE DE FIN
PARCOURS-FIN.
DISPLAY "DERNIERE LETTRE DU MOT : " MOT(FIN-MOT:1).
IF (MOT(FIN-MOT:1) EQUAL TO SPACE) THEN
SUBTRACT 1 FROM FIN-MOT
ELSE MOVE 1 TO CARAC-FIN
END-IF.
* MOVE MOT(FIN-MOT:1) TO LETTRE.
* PERFORM CAL-CHFFRE UNTIL LETTRE NOT EQUAL TO SPACE.
* IF (MOT(DEBUT-MOT:1) EQUAL TO MOT(FIN-MOT:1))
* MOVE 1 TO VALIDE
* END-IF.
*CALCUL DU CHIFFRE DE LA LETTRE <20> COMPARER
CAL-CHFFRE.
IF (MOT(FIN-MOT:1) EQUAL TO SPACE) THEN
SUBTRACT 1 FROM FIN-MOT
END-IF.

BIN
P5B/cobol/exercices/vehic Normal file

Binary file not shown.

View File

@ -0,0 +1,138 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. vehic.
AUTHOR. OD.
***---------------------------------------------------------------
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ARTICLES ASSIGN TO "$fichier"
ORGANIZATION IS INDEXED
RECORD KEY IS MTRCL
ALTERNATE RECORD KEY IS NO-SMN WITH DUPLICATES
ALTERNATE RECORD KEY IS RSLT WITH DUPLICATES
FILE STATUS VAL-ERREUR.
***---------------------------------------------------------------
DATA DIVISION.
FILE SECTION.
FD ARTICLES.
* STRUCTURE FOURNIE DANS L'EXERCICE
01 VHCL.
05 INDICATIF.
10 MTRCL PIC X(8).
10 NO-SMN PIC 99.
05 FILLER PIC X(8).
05 RSLT OCCURS 7.
10 KM PIC 9(4) VALUE ZERO.
10 FRS PIC 9(4)V99 VALUE ZERO.
WORKING-STORAGE SECTION.
* VALEUR DE L'ERREUR POTENTIELLE DE TRAITEMENT DU FICHIER
77 VAL-ERREUR PIC 99 VALUE ZERO.
* VALEUR ENTR<54>E POUR LE CHOIX DU MENU
77 VAL-MENU PIC X.
88 MENU-O VALUE "O" "o".
88 MENU-N VALUE "N" "n".
88 MENU-UN VALUE "1".
88 MENU-DX VALUE "2".
88 MENU-TRS VALUE "3".
88 MENU-QTR VALUE "4".
88 MENU-QTT VALUE "0".
* LA SEMAINE !
01 SEMAINES.
05 FILLER PIC X(8) VALUE "LUNDI".
05 FILLER PIC X(8) VALUE "MARDI".
05 FILLER PIC X(8) VALUE "MERCREDI".
05 FILLER PIC X(8) VALUE "JEUDI".
05 FILLER PIC X(8) VALUE "VENDREDI".
05 FILLER PIC X(8) VALUE "SAMEDI".
05 FILLER PIC X(8) VALUE "DIMANCHE".
01 SEM-T REDEFINES SEMAINES.
05 JOURS PIC X(8) OCCURS 7.
77 ITERATION PIC 9 VALUE 1.
* SAISIE DE L'UTILISATEUR POUR LE MATRICULE
77 SAIS-MTRCL PIC X(8) VALUE "0000XX00".
* SAISIE DE L'UTILISATEUR POUR LE NUMERO DE SEMAINE
77 SAIS-NO-SMN PIC 99 VALUE 00.
* SAISIE DE L'UTILISATEUR POUR LE NOMBRE DE KILOMETRES
77 SAIS-KM PIC 9(4) VALUE ZERO.
* SAISIE DE L'UTILISATEUR POUR LES FRAIS
77 SAIS-FRS PIC 9(4)V99 VALUE ZERO.
* UTILISATION D'UN ESPACE VIDE POUR L'ENREGISTREMENT
77 SAIS-VIDE PIC X(8) VALUE SPACE.
***---------------------------------------------------------------
PROCEDURE DIVISION.
*
* SECTION PRINCIPAL, APPEL<45>E PROGRAMME
*
PROGRAMME SECTION.
INIT.
OPEN I-O ARTICLES.
DISPLAY VAL-ERREUR.
CORPS.
PERFORM MENU-DPRT UNTIL MENU-N.
FIN.
CLOSE ARTICLES.
DISPLAY "PROGRAMME TERMINE !".
STOP RUN.
*
* PERMET L'AFFICHAGE DU MENU
*
MENU SECTION.
MENU-DPRT.
DISPLAY "PROCEDER <20> UN TRAITEMENT ? (o/n) : "
WITH NO ADVANCING.
ACCEPT VAL-MENU.
IF MENU-O THEN
PERFORM MENU-AFFICHE.
MENU-AFFICHE.
DISPLAY "(1) - CONSULTER UN ARTICLE DONNE".
DISPLAY "(2) - AJOUT D'UN ARTICLE".
DISPLAY "(3) - CALCUL DU PRIX DE REVIENT".
DISPLAY "(4) - SEMAINE O<> PLUS ROUL<55>".
DISPLAY "(0) - QUITTER".
DISPLAY "VOTRE CHOIX : " WITH NO ADVANCING.
ACCEPT VAL-MENU.
IF MENU-UN THEN PERFORM CONSULTATION
ELSE IF MENU-DX THEN PERFORM AJOUT
ELSE IF MENU-TRS THEN PERFORM CALCUL
ELSE IF MENU-QTR THEN PERFORM ROULE
ELSE IF MENU-QTT THEN PERFORM FIN.
*
* PERMET LA CONSULTATION D'UN ARTICLE
*
CONSULTER SECTION.
CONSULTATION.
*
* PERMET L'AJOUT D'UN ARTICLE
*
AJOUTER SECTION.
AJOUT.
DISPLAY "NUMERO DE SEMAINE : " WITH NO ADVANCING.
ACCEPT NO-SMN.
DISPLAY "IMMATRICULATION : " WITH NO ADVANCING.
ACCEPT MTRCL.
PERFORM AJOUT-SEM UNTIL ITERATION EQUAL TO 8.
WRITE VHCL.
AJOUT-SEM.
DISPLAY JOURS(ITERATION).
DISPLAY "KILOMETRAGE : " WITH NO ADVANCING.
ACCEPT KM(ITERATION).
DISPLAY "FRAIS : " WITH NO ADVANCING.
ACCEPT FRS(ITERATION).
ADD 1 TO ITERATION.
*
* PERMET LE CALCUL DU PRIX DE REVIENT KILOM<4F>TRIQUE DEPUIS LE D<>BUT
* D'ANN<4E>E
*
CALCULER SECTION.
CALCUL.
*
* PERMET DE TROUVER LA SEMAINE O<> UN V<>HICULE A LE PLUS ROUL<55>
*
ROULER SECTION.
ROULE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
P5B/cobol/exercices/vehic2 Normal file

Binary file not shown.

View File

@ -0,0 +1,40 @@
identification division.
program-id. vehic2.
author. od.
environment division.
input-output section.
file-control.
select articles assign to "$fichier"
organization is indexed
record key is mtrcl
alternate record key is no-smn with duplicates
alternate record key is rslt with duplicates
file status val-erreur.
***---------------------------------------------------------------
data division.
file section.
fd articles.
* structure fournie dans l'exercice
01 vhcl.
05 indicatif.
10 mtrcl pic x(8).
10 no-smn pic 99.
05 filler pic x(8).
05 rslt occurs 7.
10 km pic 9(4) value zero.
10 frs pic 9(4)v99 value zero.
working-storage section.
77 val-erreur pic 99 value zero.
77 enregistrement pic x(88) value zero.
procedure division.
programme section.
init.
open input articles.
display val-erreur.
corps.
read articles.
display mtrcl.
fin.
close articleS.
display "fin de traitement".
stop run.