Fusion en un seul fichier des 2 parties
This commit is contained in:
parent
5c9ed75ef9
commit
0ad1c2ba9f
2 changed files with 130 additions and 147 deletions
|
@ -1,113 +0,0 @@
|
||||||
000001 IDENTIFICATION DIVISION.
|
|
||||||
000002 PROGRAM-ID. jour-cinq-prem-part.
|
|
||||||
000003
|
|
||||||
000004 ENVIRONMENT DIVISION.
|
|
||||||
000005 INPUT-OUTPUT SECTION.
|
|
||||||
000006 FILE-CONTROL.
|
|
||||||
000007 SELECT FILE1 ASSIGN TO "input"
|
|
||||||
000008 ORGANIZATION LINE SEQUENTIAL.
|
|
||||||
000009
|
|
||||||
000010 DATA DIVISION.
|
|
||||||
000011 FILE SECTION.
|
|
||||||
000012 FD FILE1.
|
|
||||||
000013 01 INPUT-FILE.
|
|
||||||
000014 02 STR PIC A(17).
|
|
||||||
000015
|
|
||||||
000016 WORKING-STORAGE SECTION.
|
|
||||||
000017 01 MY-FILE.
|
|
||||||
000018 02 MY-STR PIC A(17).
|
|
||||||
000019 01 FILE-STATUS PIC X VALUE 'N'.
|
|
||||||
000020 88 EOF VALUE 'Y'.
|
|
||||||
000021 77 NB-NICE PIC 9(4) VALUE 0.
|
|
||||||
000022
|
|
||||||
000023 PROCEDURE DIVISION.
|
|
||||||
000024 main.
|
|
||||||
000025 OPEN INPUT FILE1.
|
|
||||||
000026 PERFORM UNTIL EOF
|
|
||||||
000027 READ FILE1 RECORD INTO MY-FILE
|
|
||||||
000028* Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler
|
|
||||||
000029 AT END MOVE 'Y' TO FILE-STATUS
|
|
||||||
000030 NOT AT END CALL "parse-str" USING
|
|
||||||
000031 BY CONTENT MY-STR,
|
|
||||||
000032 BY REFERENCE NB-NICE
|
|
||||||
000033* On passe par référence NB-NICE pour l’incrémenter
|
|
||||||
000034 END-CALL
|
|
||||||
000035 END-READ
|
|
||||||
000036 END-PERFORM.
|
|
||||||
000037 DISPLAY "Nombre de bonnes chaines : " NB-NICE END-DISPLAY.
|
|
||||||
000038 CLOSE FILE1.
|
|
||||||
000039 STOP RUN.
|
|
||||||
000039
|
|
||||||
000040******************************************************************
|
|
||||||
000041* parse-str : parse la chaine de caractères pour voir le nombre de
|
|
||||||
000042* bonnes chaines. Prend en paramètres 2 arguments :
|
|
||||||
000043* STR : chaine de caractères de taille 16. Sera parser.
|
|
||||||
000044* NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
|
|
||||||
000045
|
|
||||||
000046 IDENTIFICATION DIVISION.
|
|
||||||
000047 PROGRAM-ID. parse-str.
|
|
||||||
000047
|
|
||||||
000048 DATA DIVISION.
|
|
||||||
000049 WORKING-STORAGE SECTION.
|
|
||||||
000050 77 CHAR PIC A.
|
|
||||||
000051 88 VOY VALUE 'a','e','i','o','u'.
|
|
||||||
000052 77 I PIC 99.
|
|
||||||
000053 88 END-P VALUE 17.
|
|
||||||
000054 77 NB-VOY PIC 99.
|
|
||||||
000055 77 PRED PIC A.
|
|
||||||
000056 77 TMP PIC AA.
|
|
||||||
000057 88 BAD VALUE 'ab', 'cd', 'pq', 'xy'.
|
|
||||||
000058 77 DOUBLE PIC X.
|
|
||||||
000058
|
|
||||||
000059* NB-VOY contient le nombre de voyelles
|
|
||||||
000060* PRED le caractère précédent
|
|
||||||
000061* TMP forme la chaine contenant le caractère précédent et courant
|
|
||||||
000062* BAD les mauvaises formes de chaines
|
|
||||||
000063* DOUBLE est mit à Y lorsque CHAR = PRED
|
|
||||||
000064*
|
|
||||||
000065* LINKAGE SECTION contient les paramètres du programme parse-str
|
|
||||||
000066
|
|
||||||
000067 LINKAGE SECTION.
|
|
||||||
000068 77 STR PIC A(17).
|
|
||||||
000069 77 NB PIC 9(4).
|
|
||||||
000069
|
|
||||||
000070 PROCEDURE DIVISION USING STR, NB.
|
|
||||||
000071 parse.
|
|
||||||
000072 MOVE 0 TO NB-VOY.
|
|
||||||
000073 MOVE 'N' TO DOUBLE.
|
|
||||||
000074d DISPLAY STR.
|
|
||||||
000075d DISPLAY "=================".
|
|
||||||
000076 PERFORM VARYING I FROM 1 BY 1 UNTIL END-P
|
|
||||||
000077 MOVE STR(I:1) TO CHAR
|
|
||||||
000078d DISPLAY "ACT. CHAR : " CHAR
|
|
||||||
000079d DISPLAY "ACT. PRED : " PRED
|
|
||||||
000080d DISPLAY "I : " I
|
|
||||||
000081 IF VOY
|
|
||||||
000082 THEN ADD 1 TO NB-VOY END-ADD
|
|
||||||
000083 END-IF
|
|
||||||
000084 IF I >= 2
|
|
||||||
000085 THEN
|
|
||||||
000086 STRING PRED CHAR INTO TMP END-STRING
|
|
||||||
000087d DISPLAY "TMP STR : " TMP
|
|
||||||
000088 IF BAD
|
|
||||||
000089 THEN
|
|
||||||
000090 EXIT PERFORM
|
|
||||||
000091 END-IF
|
|
||||||
000092 IF PRED = CHAR
|
|
||||||
000093 THEN
|
|
||||||
000094 MOVE 'Y' TO DOUBLE
|
|
||||||
000095 END-IF
|
|
||||||
000096d DISPLAY "DOUBLE : " DOUBLE
|
|
||||||
000097 END-IF
|
|
||||||
000098 MOVE CHAR TO PRED
|
|
||||||
000099 END-PERFORM.
|
|
||||||
000100 IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y'
|
|
||||||
000101 THEN
|
|
||||||
000102 ADD 1 TO NB END-ADD
|
|
||||||
000103 END-IF.
|
|
||||||
000104 EXIT PROGRAM.
|
|
||||||
000105 END PROGRAM parse-str.
|
|
||||||
000105
|
|
||||||
000106*************************************************************************
|
|
||||||
000107
|
|
||||||
000108 END PROGRAM jour-cinq-prem-part.
|
|
154
jour05/jour5.cob
154
jour05/jour5.cob
|
@ -18,7 +18,8 @@
|
||||||
02 MY-STR PIC A(17).
|
02 MY-STR PIC A(17).
|
||||||
01 FILE-STATUS PIC X VALUE 'N'.
|
01 FILE-STATUS PIC X VALUE 'N'.
|
||||||
88 EOF VALUE 'Y'.
|
88 EOF VALUE 'Y'.
|
||||||
77 NB-NICE PIC 9(4) VALUE 0.
|
77 NB-NICE-PREM PIC 9(4) VALUE 0.
|
||||||
|
77 NB-NICE-DEUX PIC 9(4) VALUE 0.
|
||||||
|
|
||||||
PROCEDURE DIVISION.
|
PROCEDURE DIVISION.
|
||||||
main.
|
main.
|
||||||
|
@ -27,26 +28,59 @@
|
||||||
READ FILE1 RECORD INTO MY-FILE
|
READ FILE1 RECORD INTO MY-FILE
|
||||||
* Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler
|
* Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler
|
||||||
AT END MOVE 'Y' TO FILE-STATUS
|
AT END MOVE 'Y' TO FILE-STATUS
|
||||||
NOT AT END CALL "parse-str" USING
|
NOT AT END CALL "hub" USING
|
||||||
BY CONTENT MY-STR,
|
BY CONTENT MY-STR,
|
||||||
BY REFERENCE NB-NICE
|
BY REFERENCE NB-NICE-PREM
|
||||||
|
BY REFERENCE NB-NICE-DEUX
|
||||||
* On passe par référence NB-NICE pour l’incrémenter
|
* On passe par référence NB-NICE pour l’incrémenter
|
||||||
END-CALL
|
END-CALL
|
||||||
END-READ
|
END-READ
|
||||||
END-PERFORM.
|
END-PERFORM.
|
||||||
DISPLAY "Nombre de bonnes chaines : " NB-NICE END-DISPLAY.
|
DISPLAY "Nombres de bonnes chaines :" END-DISPLAY.
|
||||||
|
DISPLAY "Dans la partie 1 : " NB-NICE-PREM END-DISPLAY.
|
||||||
|
DISPLAY "Dans la partie 2 : " NB-NICE-DEUX END-DISPLAY.
|
||||||
CLOSE FILE1.
|
CLOSE FILE1.
|
||||||
STOP RUN.
|
STOP RUN.
|
||||||
|
|
||||||
|
*****************************************************************
|
||||||
|
* hub : exécute les 2 fonctions pour les 2 parties
|
||||||
|
* STR : la chaine à passer en paramètre aux deux fonctions
|
||||||
|
* NB-PREM : (REFERENCE) nombre bonnes chaines partie 1
|
||||||
|
* NB-DEUX : (REFERENCE) nombre bonnes chaines partie 2
|
||||||
|
* Ces 2 variables seront incrémentées
|
||||||
|
*****************************************************************
|
||||||
|
|
||||||
|
IDENTIFICATION DIVISION.
|
||||||
|
PROGRAM-ID. hub.
|
||||||
|
|
||||||
|
DATA DIVISION.
|
||||||
|
LINKAGE SECTION.
|
||||||
|
77 STR PIC A(17).
|
||||||
|
77 NB-PREM PIC 9(4).
|
||||||
|
77 NB-DEUX PIC 9(4).
|
||||||
|
|
||||||
|
PROCEDURE DIVISION USING STR, NB-PREM, NB-DEUX.
|
||||||
|
route.
|
||||||
|
CALL "parse-prem" USING
|
||||||
|
BY CONTENT STR,
|
||||||
|
BY REFERENCE NB-PREM
|
||||||
|
END-CALL.
|
||||||
|
|
||||||
|
CALL "parse-deux" USING
|
||||||
|
BY CONTENT STR,
|
||||||
|
BY REFERENCE NB-DEUX
|
||||||
|
END-CALL.
|
||||||
|
EXIT PROGRAM.
|
||||||
|
|
||||||
******************************************************************
|
******************************************************************
|
||||||
* parse-str : parse la chaine de caractères pour voir le nombre de
|
* parse-prem : parse la chaine de caractères pour voir le nombre de
|
||||||
* bonnes chaines. Prend en paramètres 2 arguments :
|
* bonnes chaines pour la partie 1. Prend en paramètres 2 arguments :
|
||||||
* STR : chaine de caractères de taille 16. Sera parser.
|
* STR : chaine de caractères de taille 17 à analyser.
|
||||||
* NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
|
* NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
|
||||||
*****************************************************************
|
*****************************************************************
|
||||||
|
|
||||||
IDENTIFICATION DIVISION.
|
IDENTIFICATION DIVISION.
|
||||||
PROGRAM-ID. parse-str.
|
PROGRAM-ID. parse-prem.
|
||||||
|
|
||||||
DATA DIVISION.
|
DATA DIVISION.
|
||||||
WORKING-STORAGE SECTION.
|
WORKING-STORAGE SECTION.
|
||||||
|
@ -54,19 +88,13 @@
|
||||||
88 VOY VALUE 'a','e','i','o','u'.
|
88 VOY VALUE 'a','e','i','o','u'.
|
||||||
77 I PIC 99.
|
77 I PIC 99.
|
||||||
88 END-P VALUE 17.
|
88 END-P VALUE 17.
|
||||||
77 J PIC 99.
|
77 NB-VOY PIC 99.
|
||||||
77 K PIC 99.
|
|
||||||
88 END-I VALUE 17.
|
|
||||||
77 PRED PIC A.
|
77 PRED PIC A.
|
||||||
77 MYNEW PIC A.
|
|
||||||
77 TMP PIC AA.
|
77 TMP PIC AA.
|
||||||
77 TMP-NEXT PIC AA.
|
88 BAD VALUE 'ab', 'cd', 'pq', 'xy'.
|
||||||
77 BETWEEN PIC X.
|
|
||||||
77 DOUBLE PIC X.
|
77 DOUBLE PIC X.
|
||||||
77 DOUBLE-CHAR PIC AA.
|
|
||||||
77 DOUBLE-CHAR-NEXT PIC AA.
|
|
||||||
|
|
||||||
******************************************************************
|
*****************************************************************
|
||||||
* NB-VOY contient le nombre de voyelles
|
* NB-VOY contient le nombre de voyelles
|
||||||
* PRED le caractère précédent
|
* PRED le caractère précédent
|
||||||
* TMP forme la chaine contenant le caractère précédent et courant
|
* TMP forme la chaine contenant le caractère précédent et courant
|
||||||
|
@ -74,6 +102,81 @@
|
||||||
* DOUBLE est mit à Y lorsque CHAR = PRED
|
* DOUBLE est mit à Y lorsque CHAR = PRED
|
||||||
*
|
*
|
||||||
* LINKAGE SECTION contient les paramètres du programme parse-str
|
* LINKAGE SECTION contient les paramètres du programme parse-str
|
||||||
|
*****************************************************************
|
||||||
|
|
||||||
|
LINKAGE SECTION.
|
||||||
|
77 STR PIC A(17).
|
||||||
|
77 NB PIC 9(4).
|
||||||
|
|
||||||
|
PROCEDURE DIVISION USING STR, NB.
|
||||||
|
parse.
|
||||||
|
MOVE 0 TO NB-VOY.
|
||||||
|
MOVE 'N' TO DOUBLE.
|
||||||
|
d DISPLAY STR.
|
||||||
|
d DISPLAY "=================".
|
||||||
|
PERFORM VARYING I FROM 1 BY 1 UNTIL END-P
|
||||||
|
MOVE STR(I:1) TO CHAR
|
||||||
|
d DISPLAY "ACT. CHAR : " CHAR
|
||||||
|
d DISPLAY "ACT. PRED : " PRED
|
||||||
|
d DISPLAY "I : " I
|
||||||
|
IF VOY
|
||||||
|
THEN ADD 1 TO NB-VOY END-ADD
|
||||||
|
END-IF
|
||||||
|
IF I >= 2
|
||||||
|
THEN
|
||||||
|
STRING PRED CHAR INTO TMP END-STRING
|
||||||
|
d DISPLAY "TMP STR : " TMP
|
||||||
|
IF BAD
|
||||||
|
THEN
|
||||||
|
EXIT PERFORM
|
||||||
|
END-IF
|
||||||
|
IF PRED = CHAR
|
||||||
|
THEN
|
||||||
|
MOVE 'Y' TO DOUBLE
|
||||||
|
END-IF
|
||||||
|
d DISPLAY "DOUBLE : " DOUBLE
|
||||||
|
END-IF
|
||||||
|
MOVE CHAR TO PRED
|
||||||
|
END-PERFORM.
|
||||||
|
IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y'
|
||||||
|
THEN
|
||||||
|
ADD 1 TO NB END-ADD
|
||||||
|
END-IF.
|
||||||
|
EXIT PROGRAM.
|
||||||
|
END PROGRAM parse-prem.
|
||||||
|
|
||||||
|
******************************************************************
|
||||||
|
* parse-deux : parse la chaine de caractères pour voir le nombre de
|
||||||
|
* bonnes chaines pour la partie 2. Prend en paramètres 2 arguments :
|
||||||
|
* STR : chaine de caractères de taille 17 à analyser.
|
||||||
|
* NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
|
||||||
|
*****************************************************************
|
||||||
|
|
||||||
|
IDENTIFICATION DIVISION.
|
||||||
|
PROGRAM-ID. parse-deux.
|
||||||
|
|
||||||
|
DATA DIVISION.
|
||||||
|
WORKING-STORAGE SECTION.
|
||||||
|
77 CHAR PIC A.
|
||||||
|
77 I PIC 99.
|
||||||
|
88 STR-LENGTH VALUE 17.
|
||||||
|
77 J PIC 99.
|
||||||
|
77 K PIC 99.
|
||||||
|
88 DOUBLE-STR-LENGTH VALUE 16.
|
||||||
|
77 PRED PIC A.
|
||||||
|
77 MYNEW PIC A.
|
||||||
|
77 DOUBLE-CHAR PIC AA.
|
||||||
|
77 DOUBLE-CHAR-NEXT PIC AA.
|
||||||
|
77 BETWEEN PIC X.
|
||||||
|
77 DOUBLE PIC X.
|
||||||
|
|
||||||
|
******************************************************************
|
||||||
|
* PRED le caractère précédent
|
||||||
|
* MYNEW le caractère suivant
|
||||||
|
* DOUBLE-CHAR la paire à vérifier
|
||||||
|
* DOUBLE-CHAR-NEXT les paires suivantes
|
||||||
|
* DOUBLE est mit à Y lorsque 2 pairs sont trouvées
|
||||||
|
* BETWEEN est mit à Y lorsque 2 memes lettres en encadrent une
|
||||||
******************************************************************
|
******************************************************************
|
||||||
|
|
||||||
LINKAGE SECTION.
|
LINKAGE SECTION.
|
||||||
|
@ -81,12 +184,10 @@
|
||||||
77 NB PIC 9(4).
|
77 NB PIC 9(4).
|
||||||
|
|
||||||
PROCEDURE DIVISION USING STR, NB.
|
PROCEDURE DIVISION USING STR, NB.
|
||||||
premiere-part.
|
deuxieme-part.
|
||||||
MOVE 'N' TO BETWEEN.
|
MOVE 'N' TO BETWEEN.
|
||||||
MOVE 'N' TO DOUBLE.
|
MOVE 'N' TO DOUBLE.
|
||||||
d DISPLAY STR.
|
PERFORM VARYING I FROM 1 BY 1 UNTIL STR-LENGTH
|
||||||
d DISPLAY "=================".
|
|
||||||
PERFORM VARYING I FROM 1 BY 1 UNTIL END-P
|
|
||||||
COMPUTE J = I + 1 END-COMPUTE
|
COMPUTE J = I + 1 END-COMPUTE
|
||||||
MOVE STR(I:1) TO CHAR
|
MOVE STR(I:1) TO CHAR
|
||||||
IF I > 1 AND I < (LENGTH OF STR - 1) THEN
|
IF I > 1 AND I < (LENGTH OF STR - 1) THEN
|
||||||
|
@ -99,17 +200,13 @@
|
||||||
IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN
|
IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN
|
||||||
MOVE STR(I:2) TO DOUBLE-CHAR
|
MOVE STR(I:2) TO DOUBLE-CHAR
|
||||||
ADD 1 TO J END-ADD
|
ADD 1 TO J END-ADD
|
||||||
PERFORM VARYING K FROM J BY 1 UNTIL END-I
|
PERFORM VARYING K FROM J BY 1 UNTIL DOUBLE-STR-LENGTH
|
||||||
MOVE STR(K:2) TO DOUBLE-CHAR-NEXT
|
MOVE STR(K:2) TO DOUBLE-CHAR-NEXT
|
||||||
IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN
|
IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN
|
||||||
MOVE 'Y' TO DOUBLE
|
MOVE 'Y' TO DOUBLE
|
||||||
END-IF
|
END-IF
|
||||||
END-PERFORM
|
END-PERFORM
|
||||||
END-IF
|
END-IF
|
||||||
|
|
||||||
d DISPLAY "ACT. CHAR : " CHAR
|
|
||||||
d DISPLAY "ACT. PRED : " PRED
|
|
||||||
d DISPLAY "I : " I
|
|
||||||
MOVE CHAR TO PRED
|
MOVE CHAR TO PRED
|
||||||
END-PERFORM.
|
END-PERFORM.
|
||||||
|
|
||||||
|
@ -119,8 +216,7 @@
|
||||||
END-IF.
|
END-IF.
|
||||||
EXIT PROGRAM.
|
EXIT PROGRAM.
|
||||||
|
|
||||||
END PROGRAM parse-str.
|
END PROGRAM parse-deux.
|
||||||
|
|
||||||
*************************************************************************
|
|
||||||
|
|
||||||
|
END PROGRAM hub.
|
||||||
END PROGRAM jour-cinq-prem-part.
|
END PROGRAM jour-cinq-prem-part.
|
||||||
|
|
Loading…
Reference in a new issue