From 10f66686648085b0a3dc4eeb566e9ed24b1e4745 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Sun, 7 Mar 2021 20:55:35 +0100
Subject: [PATCH 01/12] Modif nom fichier

---
 README.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index f2778ab..70f3a46 100644
--- a/README.md
+++ b/README.md
@@ -68,15 +68,15 @@ python3 run.py
 
 ## Jour 5
 
-On retourne dans le passé ici avec le **Cobol**. J’ai utilisé le compilateur GNUCOBOL pour pouvoir compiler mon fichier. J’ai préféré utiliser l’ancienne syntaxe pour changer un peu ma façon de coder (et je trouve le symbole de la ligne 7 génial).
+On retourne dans le passé ici avec le **Cobol**. J’ai utilisé le compilateur GNUCOBOL pour pouvoir compiler mon fichier. J’ai préféré utiliser l’ancienne syntaxe pour changer un peu ma façon de coder (et je trouve le symbole de la ligne 7 génial) sur la première partie.
 
 ```bash
 # pour installer le compilateur
 sudo xbps-install gnucobol gmp-devel # sur Void
 
 # pour compiler et exécuter
-cobc -x jour5.cob
-./jour5
+cobc -x jour5-prem.cob
+./jour5-prem
 ```
 
 Il reste des messages de débugging. Si vous souhaitez les voir, il suffit de rajouter l’option `-fdebugging-line` au compilateur.

From 1a4bf80d27eed8ece99c540ca5095e891fb25c61 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Tue, 9 Mar 2021 02:12:18 +0100
Subject: [PATCH 02/12] =?UTF-8?q?Premi=C3=A8re=20version=20(trop=20lente)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 jour10/jour10.bs | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 jour10/jour10.bs

diff --git a/jour10/jour10.bs b/jour10/jour10.bs
new file mode 100644
index 0000000..e4f29fa
--- /dev/null
+++ b/jour10/jour10.bs
@@ -0,0 +1,26 @@
+basInput$ = "1113222113"
+pred$ = ""
+act$ = ""
+new$ = ""
+k = 0
+
+for i = 0 to 40
+    print i, " / 40"
+    for j = 1 to len(basInput$) step k
+        k = 1
+        act$ = mid$(basInput$, j, 1)
+        pred$ = act$
+        while pred$ = act$ and (j + k) < len(basInput$)
+            pred$ = act$
+            act$ = mid$(basInput$, j + k, 1)
+            k = k + 1
+            if act$ <> pred$ then
+                k = k - 1
+            endif
+        wend
+        new$ = new$ + str$(k) + pred$
+        next j
+    basInput$ = new$
+    next i
+
+print "La longeur de la chaine finale est ", len(basInput$)

From 7af2aa38adbb82012438c6561c8d79c9a9f1d2bf Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Tue, 9 Mar 2021 14:14:13 +0100
Subject: [PATCH 03/12] =?UTF-8?q?Ajout=20num=C3=A9ro=20de=20ligne=20et=20s?=
 =?UTF-8?q?uppression=20des=20derniers=20warning?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 jour05/jour5-prem.cob | 226 +++++++++++++++++++++---------------------
 1 file changed, 113 insertions(+), 113 deletions(-)

diff --git a/jour05/jour5-prem.cob b/jour05/jour5-prem.cob
index b86fd97..be19c93 100644
--- a/jour05/jour5-prem.cob
+++ b/jour05/jour5-prem.cob
@@ -1,113 +1,113 @@
-       IDENTIFICATION DIVISION.
-        PROGRAM-ID. jour-cinq-prem-part.
-      
-       ENVIRONMENT DIVISION.
-          INPUT-OUTPUT SECTION.
-          FILE-CONTROL.
-               SELECT FILE1 ASSIGN TO "input"
-               ORGANIZATION LINE SEQUENTIAL.
-       
-       DATA DIVISION.
-         FILE SECTION.
-         FD FILE1.
-           01 INPUT-FILE.
-             02 STR PIC A(17).
-      
-         WORKING-STORAGE SECTION.
-           01 MY-FILE.
-             02 MY-STR PIC A(17).
-           01 FILE-STATUS PIC X VALUE 'N'.
-             88 EOF VALUE 'Y'.
-           77 NB-NICE PIC 9(4) VALUE 0.
-      
-       PROCEDURE DIVISION.
-       main.
-           OPEN INPUT FILE1.
-           PERFORM UNTIL EOF
-              READ FILE1 RECORD INTO MY-FILE
-      * Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler
-              AT END MOVE 'Y' TO FILE-STATUS
-              NOT AT END CALL "parse-str" USING 
-                      BY CONTENT MY-STR,
-                      BY REFERENCE NB-NICE
-      * On passe par référence NB-NICE pour l’incrémenter
-                      END-CALL
-              END-READ
-           END-PERFORM.
-           DISPLAY "Nombre de bonnes chaines : " NB-NICE.
-           CLOSE FILE1.
-           STOP RUN.
-
-      ******************************************************************
-      * parse-str : parse la chaine de caractères pour voir le nombre de
-      * bonnes chaines. Prend en paramètres 2 arguments :
-      * STR : chaine de caractères de taille 16. Sera parser.
-      * NB  : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
-      
-       IDENTIFICATION DIVISION.
-         PROGRAM-ID. parse-str.
-
-       DATA DIVISION.
-         WORKING-STORAGE SECTION.
-           77 CHAR PIC A.
-               88 VOY VALUE 'a','e','i','o','u'.
-           77 I PIC 99.
-               88 END-P VALUE 17.
-           77 NB-VOY PIC 99.
-           77 PRED PIC A.
-           77 TMP PIC AA.
-               88 BAD VALUE 'ab', 'cd', 'pq', 'xy'.
-           77 DOUBLE PIC X.
-
-      * NB-VOY contient le nombre de voyelles
-      * PRED le caractère précédent
-      * TMP forme la chaine contenant le caractère précédent et courant
-      * BAD les mauvaises formes de chaines
-      * DOUBLE est mit à Y lorsque CHAR = PRED
-      *
-      * 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-IF
-               IF I >= 2
-                   THEN
-                       STRING PRED CHAR INTO TMP
-      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-IF.
-           EXIT PROGRAM.
-       END PROGRAM parse-str.
-
-      *************************************************************************
-      
-       END PROGRAM jour-cinq-prem-part.
+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.

From 5c9ed75ef942ed1dfd45e8b7f5d0c0d70625e58a Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 15:51:24 +0100
Subject: [PATCH 04/12] =?UTF-8?q?Ajout=20deuxi=C3=A8me=20partie?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 jour05/jour5.cob | 126 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 126 insertions(+)
 create mode 100644 jour05/jour5.cob

diff --git a/jour05/jour5.cob b/jour05/jour5.cob
new file mode 100644
index 0000000..c749e2f
--- /dev/null
+++ b/jour05/jour5.cob
@@ -0,0 +1,126 @@
+       IDENTIFICATION DIVISION.
+        PROGRAM-ID. jour-cinq-prem-part.
+      
+       ENVIRONMENT DIVISION.
+          INPUT-OUTPUT SECTION.
+          FILE-CONTROL.
+               SELECT FILE1 ASSIGN TO "input"
+               ORGANIZATION LINE SEQUENTIAL.
+      
+       DATA DIVISION.
+         FILE SECTION.
+         FD FILE1.
+           01 INPUT-FILE.
+             02 STR PIC A(17).
+      
+         WORKING-STORAGE SECTION.
+           01 MY-FILE.
+             02 MY-STR PIC A(17).
+           01 FILE-STATUS PIC X VALUE 'N'.
+             88 EOF VALUE 'Y'.
+           77 NB-NICE PIC 9(4) VALUE 0.
+      
+       PROCEDURE DIVISION.
+       main.
+           OPEN INPUT FILE1.
+           PERFORM UNTIL EOF
+              READ FILE1 RECORD INTO MY-FILE
+      * Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler
+              AT END MOVE 'Y' TO FILE-STATUS
+              NOT AT END CALL "parse-str" USING
+                      BY CONTENT MY-STR,
+                      BY REFERENCE NB-NICE
+      * On passe par référence NB-NICE pour l’incrémenter
+                      END-CALL
+              END-READ
+           END-PERFORM.
+           DISPLAY "Nombre de bonnes chaines : " NB-NICE END-DISPLAY.
+           CLOSE FILE1.
+           STOP RUN.
+      
+      ******************************************************************
+      * parse-str : parse la chaine de caractères pour voir le nombre de
+      * bonnes chaines. Prend en paramètres 2 arguments :
+      * STR : chaine de caractères de taille 16. Sera parser.
+      * NB  : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
+      *****************************************************************
+      
+       IDENTIFICATION DIVISION.
+         PROGRAM-ID. parse-str.
+      
+       DATA DIVISION.
+         WORKING-STORAGE SECTION.
+           77 CHAR PIC A.
+               88 VOY VALUE 'a','e','i','o','u'.
+           77 I PIC 99.
+               88 END-P VALUE 17.
+           77 J PIC 99.
+           77 K PIC 99.
+               88 END-I VALUE 17.
+           77 PRED PIC A.
+           77 MYNEW PIC A.
+           77 TMP PIC AA.
+           77 TMP-NEXT PIC AA.
+           77 BETWEEN PIC X.
+           77 DOUBLE PIC X.
+           77 DOUBLE-CHAR PIC AA.
+           77 DOUBLE-CHAR-NEXT PIC AA.
+      
+      ******************************************************************
+      * NB-VOY contient le nombre de voyelles
+      * PRED le caractère précédent
+      * TMP forme la chaine contenant le caractère précédent et courant
+      * BAD les mauvaises formes de chaines
+      * DOUBLE est mit à Y lorsque CHAR = PRED
+      *
+      * 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.
+       premiere-part.
+           MOVE 'N' TO BETWEEN.
+           MOVE 'N' TO DOUBLE.
+      d    DISPLAY STR.
+      d    DISPLAY "=================".
+           PERFORM VARYING I FROM 1 BY 1 UNTIL END-P
+               COMPUTE J = I + 1 END-COMPUTE
+               MOVE STR(I:1) TO CHAR
+               IF I > 1 AND I < (LENGTH OF STR - 1) THEN
+                   MOVE STR(J:1) TO MYNEW
+                   IF PRED = MYNEW THEN
+                       MOVE 'Y' TO BETWEEN
+                   END-IF
+               END-IF
+
+               IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN
+                   MOVE STR(I:2) TO DOUBLE-CHAR
+                   ADD 1 TO J END-ADD
+                   PERFORM VARYING K FROM J BY 1 UNTIL END-I
+                       MOVE STR(K:2) TO DOUBLE-CHAR-NEXT
+                       IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN
+                           MOVE 'Y' TO DOUBLE
+                       END-IF
+                   END-PERFORM
+               END-IF
+
+      d        DISPLAY "ACT. CHAR : " CHAR
+      d        DISPLAY "ACT. PRED : " PRED
+      d        DISPLAY "I : " I
+               MOVE CHAR TO PRED
+           END-PERFORM.
+
+           IF BETWEEN  = 'Y' AND DOUBLE = 'Y'
+               THEN
+                   ADD 1 TO NB END-ADD
+           END-IF.
+           EXIT PROGRAM.
+
+        END PROGRAM parse-str.
+      
+      *************************************************************************
+      
+       END PROGRAM jour-cinq-prem-part.

From 0ad1c2ba9f317a139d838ab8d2a2888ce854c516 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 20:07:01 +0100
Subject: [PATCH 05/12] Fusion en un seul fichier des 2 parties

---
 jour05/jour5-prem.cob | 113 -----------------------------
 jour05/jour5.cob      | 164 +++++++++++++++++++++++++++++++++---------
 2 files changed, 130 insertions(+), 147 deletions(-)
 delete mode 100644 jour05/jour5-prem.cob

diff --git a/jour05/jour5-prem.cob b/jour05/jour5-prem.cob
deleted file mode 100644
index be19c93..0000000
--- a/jour05/jour5-prem.cob
+++ /dev/null
@@ -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.
diff --git a/jour05/jour5.cob b/jour05/jour5.cob
index c749e2f..aaa90fc 100644
--- a/jour05/jour5.cob
+++ b/jour05/jour5.cob
@@ -18,7 +18,8 @@
              02 MY-STR PIC A(17).
            01 FILE-STATUS PIC X VALUE 'N'.
              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.
        main.
@@ -27,46 +28,73 @@
               READ FILE1 RECORD INTO MY-FILE
       * Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler
               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 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
                       END-CALL
               END-READ
            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.
            STOP RUN.
       
-      ******************************************************************
-      * parse-str : parse la chaine de caractères pour voir le nombre de
-      * bonnes chaines. Prend en paramètres 2 arguments :
-      * STR : chaine de caractères de taille 16. Sera parser.
-      * NB  : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
+      *****************************************************************
+      * 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. parse-str.
-      
+         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-prem : parse la chaine de caractères pour voir le nombre de
+      * bonnes chaines pour la partie 1. 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-prem.
+    
        DATA DIVISION.
          WORKING-STORAGE SECTION.
            77 CHAR PIC A.
                88 VOY VALUE 'a','e','i','o','u'.
            77 I PIC 99.
                88 END-P VALUE 17.
-           77 J PIC 99.
-           77 K PIC 99.
-               88 END-I VALUE 17.
+           77 NB-VOY PIC 99.
            77 PRED PIC A.
-           77 MYNEW PIC A.
            77 TMP PIC AA.
-           77 TMP-NEXT PIC AA.
-           77 BETWEEN PIC X.
+               88 BAD VALUE 'ab', 'cd', 'pq', 'xy'.
            77 DOUBLE PIC X.
-           77 DOUBLE-CHAR PIC AA.
-           77 DOUBLE-CHAR-NEXT PIC AA.
-      
-      ******************************************************************
+
+      *****************************************************************
       * NB-VOY contient le nombre de voyelles
       * PRED le caractère précédent
       * TMP forme la chaine contenant le caractère précédent et courant
@@ -74,6 +102,81 @@
       * DOUBLE est mit à Y lorsque CHAR = PRED
       *
       * 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.
@@ -81,12 +184,10 @@
            77 NB PIC 9(4).
       
        PROCEDURE DIVISION USING STR, NB.
-       premiere-part.
+       deuxieme-part.
            MOVE 'N' TO BETWEEN.
            MOVE 'N' TO DOUBLE.
-      d    DISPLAY STR.
-      d    DISPLAY "=================".
-           PERFORM VARYING I FROM 1 BY 1 UNTIL END-P
+           PERFORM VARYING I FROM 1 BY 1 UNTIL STR-LENGTH
                COMPUTE J = I + 1 END-COMPUTE
                MOVE STR(I:1) TO CHAR
                IF I > 1 AND I < (LENGTH OF STR - 1) THEN
@@ -99,17 +200,13 @@
                IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN
                    MOVE STR(I:2) TO DOUBLE-CHAR
                    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
                        IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN
                            MOVE 'Y' TO DOUBLE
                        END-IF
                    END-PERFORM
                END-IF
-
-      d        DISPLAY "ACT. CHAR : " CHAR
-      d        DISPLAY "ACT. PRED : " PRED
-      d        DISPLAY "I : " I
                MOVE CHAR TO PRED
            END-PERFORM.
 
@@ -119,8 +216,7 @@
            END-IF.
            EXIT PROGRAM.
 
-        END PROGRAM parse-str.
-      
-      *************************************************************************
-      
+       END PROGRAM parse-deux.
+
+       END PROGRAM hub.
        END PROGRAM jour-cinq-prem-part.

From 7bbe14e792669d38f7a5b9535e1cce1e6fba39d5 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 20:07:43 +0100
Subject: [PATCH 06/12] Ajout input

---
 jour05/input | 1002 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 1000 insertions(+), 2 deletions(-)

diff --git a/jour05/input b/jour05/input
index ab41c95..7bc179c 100644
--- a/jour05/input
+++ b/jour05/input
@@ -1,2 +1,1000 @@
-ugknbfddgicrmopn
-jchzalrnumimnmhp
+uxcplgxnkwbdwhrp
+suerykeptdsutidb
+dmrtgdkaimrrwmej
+ztxhjwllrckhakut
+gdnzurjbbwmgayrg
+gjdzbtrcxwprtery
+fbuqqaatackrvemm
+pcjhsshoveaodyko
+lrpprussbesniilv
+mmsebhtqqjiqrusd
+vumllmrrdjgktmnb
+ptsqjcfbmgwdywgi
+mmppavyjgcfebgpl
+zexyxksqrqyonhui
+npulalteaztqqnrl
+mscqpccetkktaknl
+ydssjjlfejdxrztr
+jdygsbqimbxljuue
+ortsthjkmlonvgci
+jfjhsbxeorhgmstc
+vdrqdpojfuubjbbg
+xxxddetvrlpzsfpq
+zpjxvrmaorjpwegy
+laxrlkntrukjcswz
+pbqoungonelthcke
+niexeyzvrtrlgfzw
+zuetendekblknqng
+lyazavyoweyuvfye
+tegbldtkagfwlerf
+xckozymymezzarpy
+ehydpjavmncegzfn
+jlnespnckgwmkkry
+bfyetscttekoodio
+bnokwopzvsozsbmj
+qpqjhzdbuhrxsipy
+vveroinquypehnnk
+ykjtxscefztrmnen
+vxlbxagsmsuuchod
+punnnfyyufkpqilx
+zibnnszmrmtissww
+cxoaaphylmlyljjz
+zpcmkcftuuesvsqw
+wcqeqynmbbarahtz
+kspontxsclmbkequ
+jeomqzucrjxtypwl
+ixynwoxupzybroij
+ionndmdwpofvjnnq
+tycxecjvaxyovrvu
+uxdapggxzmbwrity
+csskdqivjcdsnhpe
+otflgdbzevmzkxzx
+verykrivwbrmocta
+ccbdeemfnmtputjw
+suyuuthfhlysdmhr
+aigzoaozaginuxcm
+ycxfnrjnrcubbmzs
+fgbqhrypnrpiizyy
+taoxrnwdhsehywze
+echfzdbnphlwjlew
+jhmomnrbfaawicda
+fywndkvhbzxxaihx
+aftuyacfkdzzzpem
+yytzxsvwztlcljvb
+iblbjiotoabgnvld
+kvpwzvwrsmvtdxcx
+ardgckwkftcefunk
+oqtivsqhcgrcmbbd
+wkaieqxdoajyvaso
+rkemicdsrtxsydvl
+sobljmgiahyqbirc
+pbhvtrxajxisuivj
+ggqywcbfckburdrr
+gmegczjawxtsywwq
+kgjhlwyonwhojyvq
+bpqlmxtarjthtjpn
+pxfnnuyacdxyfclr
+isdbibbtrqdfuopn
+vucsgcviofwtdjcg
+ywehopujowckggkg
+mzogxlhldvxytsgl
+mllyabngqmzfcubp
+uwvmejelibobdbug
+brebtoppnwawcmxa
+fcftkhghbnznafie
+sqiizvgijmddvxxz
+qzvvjaonnxszeuar
+abekxzbqttczywvy
+bkldqqioyhrgzgjs
+lilslxsibyunueff
+ktxxltqgfrnscxnx
+iwdqtlipxoubonrg
+twncehkxkhouoctj
+bdwlmbahtqtkduxz
+smbzkuoikcyiulxq
+bjmsdkqcmnidxjsr
+icbrswapzdlzdanh
+eyszxnhbjziiplgn
+pdxhrkcbhzqditwb
+nfulnpvtzimbzsze
+glayzfymwffmlwhk
+bejxesxdnwdlpeup
+ukssntwuqvhmsgwj
+hoccqxlxuuoomwyc
+rapztrdfxrosxcig
+cxowzhgmzerttdfq
+yzhcurqhdxhmolak
+kqgulndpxbwxesxi
+yjkgcvtytkitvxiu
+xnhfqhnnaceaqyue
+qkuqreghngfndifr
+xesxgeaucmhswnex
+occbvembjeuthryi
+dmefxmxqjncirdwj
+ystmvxklmcdlsvin
+pplykqlxmkdrmydq
+cbbjkpbdvjhkxnuc
+embhffzsciklnxrz
+asrsxtvsdnuhcnco
+xcbcrtcnzqedktpi
+mglwujflcnixbkvn
+mnurwhkzynhahbjp
+cekjbablkjehixtj
+kbkcmjhhipcjcwru
+usifwcsfknoviasj
+rsfgocseyeflqhku
+prgcyqrickecxlhm
+asbawplieizkavmq
+sylnsirtrxgrcono
+nzspjfovbtfkloya
+qfxmsprfytvaxgtr
+yckpentqodgzngnv
+ycsfscegcexcnbwq
+kbmltycafudieyuh
+tpahmvkftilypxuf
+qivqozjrmguypuxu
+gdhbfradjuidunbk
+vxqevjncsqqnhmkl
+rpricegggcfeihst
+xucvzpprwtdpzifq
+egyjcyyrrdnyhxoo
+kfbrzmbtrrwyeofp
+qpjdsocrtwzpjdkd
+reboldkprsgmmbit
+vwkrzqvvhqkensuy
+ydvmssepskzzvfdp
+vqbigplejygdijuu
+mzpgnahrhxgjriqm
+uiejixjadpfsxqcv
+tosatnvnfjkqiaha
+yipuojpxfqnltclx
+pcxwvgcghfpptjlf
+shrudjvvapohziaj
+jdckfjdtjsszdzhj
+hgisfhcbdgvxuilk
+gytnfjmrfujnmnpp
+ohflkgffnxmpwrrs
+jzxajbkwwjknasjh
+xrcxfollmejrislv
+djjlwykouhyfukob
+rittommltkbtsequ
+lpbvkxdcnlikwcxm
+vkcrjmcifhwgfpdj
+dkhjqwtggdrmcslq
+swnohthfvjvoasvt
+yrzoksmcnsagatii
+duommjnueqmdxftp
+inlvzlppdlgfmvmx
+xibilzssabuqihtq
+inkmwnvrkootrged
+ldfianvyugqtemax
+gbvwtiexcuvtngti
+temjkvgnwxrhdidc
+askbbywyyykerghp
+onezejkuwmrqdkfr
+kybekxtgartuurbq
+ubzjotlasrewbbkl
+stueymlsovqgmwkh
+lhduseycrewwponi
+yohdmucunrgemqcu
+onnfbxcuhbuifbyc
+odrjkigbrsojlqbt
+imqkqqlkgmttpxtx
+sxmlkspqoluidnxw
+akaauujpxhnccleb
+xvgpghhdtpgvefnk
+jdxeqxzsbqtvgvcq
+mdusenpygmerxnni
+agihtqvgkmgcbtaw
+dovxcywlyvspixad
+uulgazeyvgtxqkfz
+ndhmvrwuflhktzyo
+hcaqkmrbvozaanvm
+tvfozbqavqxdqwqv
+rlkpycdzopitfbsv
+dmyjtmjbtnvnedhs
+fmwmqeigbzrxjvdu
+twgookcelrjmczqi
+grxosmxvzgymjdtz
+zsstljhzugqybueo
+jpeapxlytnycekbd
+iasykpefrwxrlvxl
+azohkkqybcnsddus
+aoaekngakjsgsonx
+awsqaoswqejanotc
+sgdxmketnjmjxxcp
+ylnyuloaukdrhwuy
+ewoqjmakifbefdib
+ytjfubnexoxuevbp
+ewlreawvddptezdd
+vmkonztwnfgssdog
+ahbpuqygcwmudyxn
+kmahpxfjximorkrh
+otjbexwssgpnpccn
+aewskyipyztvskkl
+urqmlaiqyfqpizje
+nrfrbedthzymfgfa
+vndwwrjrwzoltfgi
+iiewevdzbortcwwe
+qiblninjkrkhzxgi
+xmvaxqruyzesifuu
+yewuzizdaucycsko
+hmasezegrhycbucy
+dwpjrmkhsmnecill
+hnffpbodtxprlhss
+avmrgrwahpsvzuhm
+nksvvaswujiukzxk
+zzzapwhtffilxphu
+vwegwyjkbzsrtnol
+qurpszehmkfqwaok
+iknoqtovqowthpno
+brlmpjviuiagymek
+efxebhputzeulthq
+mzkquarxlhlvvost
+xsigcagzqbhwwgps
+qufztljyzjxgahdp
+dlfkavnhobssfxvx
+hgdpcgqxjegnhjlr
+fboomzcvvqudjfbi
+wnjuuiivaxynqhrd
+nhcgzmpujgwisguw
+wjeiacxuymuhykgk
+qmeebvxijcgdlzpf
+nmmnxsehhgsgoich
+ejluaraxythbqfkl
+mdbsbwnaypvlatcj
+nnfshfibmvfqrbka
+dvckdmihzamgqpxr
+foztgqrjbwyxvewk
+okpryqcbvorcxhoh
+fpiwsndulvtthctx
+zrbiovlmzdmibsiq
+setwafbnnzcftutg
+nyvqghxhgkxfobdm
+enpvqadzarauhajl
+twblhpvkazpdmhmr
+lbhlllsgswvhdesh
+tdfwkgxnqjxcvsuo
+lnvyjjbwycjbvrrb
+jsxqdvmzaydbwekg
+xirbcbvwlcptuvoa
+hwnukxenilatlfsk
+khwopjqkxprgopmd
+sljzdoviweameskw
+stkrdmxmpaijximn
+fdilorryzhmeqwkc
+mfchaaialgvoozra
+gjxhoxeqgkbknmze
+beowovcoqnginrno
+mkgmsgwkwhizunxo
+phnhfusyoylvjdou
+csehdlcmwepcpzmq
+pgojomirzntgzohj
+fkffgyfsvwqhmboz
+mrvduasiytbzfwdn
+epzrmsifpmfaewng
+ooqxnoyqrlozbbyf
+ahcxfmgtedywrbnx
+ibqktvqmgnirqjot
+xarssauvofdiaefn
+xradvurskwbfzrnw
+nxklmulddqcmewad
+twichytatzoggchg
+qmgvroqwrjgcycyv
+yvezgulgrtgvyjjm
+jgmcklzjdmznmuqk
+bytajdwwconasjzt
+apjttucpycyghqhu
+flfejjzihodwtyup
+gmrtrwyewucyqotv
+nlohdrlymbkoenyl
+wxcmqwbrwgtmkyfe
+njtzlceyevmisxfn
+htbbidsfbbshmzlt
+gxhjeypjwghnrbsf
+cifcwnbtazronikv
+ezvjijcjcyszwdjy
+srffeyrvyetbecmc
+xpjefrtatrlkbkzl
+yhncvfqjcyhsxhbb
+pqhcufzlcezhihpr
+qtdsfvxfqmsnzisp
+dfonzdicxxhzxkrx
+mqqqzhxkyfpofzty
+dodjadoqyxsuazxt
+jjwkrlquazzjbvlm
+ttosfloajukoytfb
+llateudmzxrzbqph
+criqihrysgesmpsx
+npszvlittbcxxknj
+qmzojrvraitrktil
+cfyoozzpwxwkwoto
+daxohtcgvtktggfw
+vthkpkoxmiuotjaj
+pkfkyobvzjeecnui
+ojcjiqrfltbhcdze
+scbivhpvjkjbauun
+ysowvwtzmqpjfwyp
+laeplxlunwkfeaou
+jufhcikovykwjhsa
+xrucychehzksoitr
+pyaulaltjkktlfkq
+oypfrblfdhwvqxcv
+zybrgxixvhchgzcf
+puoagefcmlxelvlp
+xjnhfdrsbhszfsso
+ocgvzryoydaoracw
+bxpnqllmptkpeena
+pziyeihxlxbbgdio
+bvtrhtlbfzmglsfc
+ggpuvtseebylsrfk
+pukenexjqecnivfj
+jswabfbzpnhhdbpn
+enojrtwqpfziyqsv
+rjtmxudgcudefuiz
+iqmjxynvtvdacffc
+uheywxlsusklitvl
+kwhxduejafdpmqdc
+rspgblenbqlmcltn
+rczhurnrqqgjutox
+dqhytibjzxkdblzl
+hpbieadydiycvfys
+pucztfoqvenxiuym
+nqpfzgpblwijiprf
+ltgseeblgajbvltk
+mwxukbsnapewhfrc
+dvxluiflicdtnxix
+pexfbpgnqiqymxcq
+dakudfjjwtpxuzxy
+letlceyzlgmnrewu
+ojktahbsdifdfhmd
+anezoybbghjudbih
+sawxtlvzysaqkbbf
+ttnkctcevpjiwqua
+edrwrdvbaoqraejd
+wnbfilvuienjxlcr
+wqhzwvyybyxhhtsm
+jxbgvyaqczwdlxfo
+wbypqfmbwrsvfmdv
+izdxjyfpidehbets
+vbxbggqseurknjor
+egpmpoxickhvwdlz
+ivfrzklvpwoemxsy
+xkziseheibmrpdww
+xnrmtoihaudozksa
+efemdmbxdsaymlrw
+yjdjeckmsrckaagx
+vlftqxxcburxnohv
+fwyquwgajaxebduj
+dwpmqvcxqwwnfkkr
+isduxxjfsluuvwga
+avdtdppodpntojgf
+vrcoekdnutbnlgqk
+kbhboxjmgomizxkl
+cgsfpjrmewexgzfy
+usdtnhjxbvtnafvp
+bjoddgxbuxzhnsqd
+hoyqdzofddedevsb
+rwiwbvqfjajotaoj
+iabomphsuyfptoos
+bubeonwbukprpvhy
+xurgunofmluhisxm
+puyojzdvhktawkua
+dbvqhztzdsncrxkb
+oaeclqzyshuuryvm
+nmgwfssnflxvcupr
+vjkiwbpunkahtsrw
+romyflhrarxchmyo
+yecssfmetezchwjc
+qwtocacqdslhozkd
+mesexvfbtypblmam
+mtjucgtjesjppdtt
+pvodhqqoeecjsvwi
+vvlcwignechiqvxj
+wiqmzmmjgjajwgov
+kwneobiiaixhclev
+lkdeglzrrxuomsyt
+oqovuwcpwbghurva
+lfsdcxsasmuarwwg
+awkbafhswnfbhvck
+sztxlnmyvqsiwljg
+hozxgyxbcxjzedvs
+oifkqgfqmflxvyzn
+mfvnehsajlofepib
+delgbyfhsyhmyrfa
+uenimmwriihxoydv
+vjqutpilsztquutn
+kfebsaixycrodhvl
+coifyqfwzlovrpaj
+xiyvdxtkqhcqfsqr
+hoidcbzsauirpkyt
+fiumhfaazfkbaglq
+fzwdormfbtkdjgfm
+faxqrortjdeihjfv
+ljhaszjklhkjvrfi
+pzrxsffkuockoqyl
+immbtokjmwyrktzn
+lzgjhyiywwnuxpfx
+vhkocmwzkfwjuzog
+ghntjkszahmdzfbl
+gbcthxesvqbmzggy
+oyttamhpquflojkh
+nbscpfjwzylkfbtv
+wnumxzqbltvxtbzs
+jfhobjxionolnouc
+nrtxxmvqjhasigvm
+hweodfomsnlgaxnj
+lfgehftptlfyvvaj
+ccoueqkocrdgwlvy
+euhgvirhsaotuhgf
+pdlsanvgitjvedhd
+seokvlbhrfhswanv
+pntdqaturewqczti
+jkktayepxcifyurj
+dhzzbiaisozqhown
+wehtwakcmqwczpbu
+zwvozvspqmuckkcd
+efucjlrwxuhmjubr
+lzodaxuyntrnxwvp
+qdezfvpyowfpmtwd
+mizijorwrkanesva
+txmitbiqoiryxhpz
+xhsqgobpouwnlvps
+muixgprsknlqaele
+disgutskxwplodra
+bmztllsugzsqefrm
+ymwznyowpaaefkhm
+ebfifzloswvoagqh
+pkldomvvklefcicw
+ziqzbbfunmcgrbtq
+iuekfpbkraiwqkic
+jflgjidirjapcuqo
+achsfbroyrnqnecg
+udbhouhlgjjzapzr
+arerrohyhhkmwhyo
+txyjzkqexgvzdtow
+ogzrjwibvzoucrpg
+rfdftaesxdnghwhd
+axdhwmpuxelmpabo
+gtktemowbsvognac
+wkfuclilhqjzxztk
+qbwjouutzegaxhrz
+opfziwqqbwhzzqhj
+pvcvcsupfwsmeacs
+xsbohvbguzsgpawn
+sczoefukwywxriwj
+oqkhcqfdeaifbqoc
+vtsrholxbjkhwoln
+yuvapljnwbssfbhi
+dxdfwccqvyzeszyl
+gdbmjtonbiugitmb
+qunirtqbubxalmxr
+zzxsirhdaippnopr
+fibtndkqjfechbmq
+gqgqyjvqmfiwiyio
+ihwsfkwhtzuydlzw
+eygyuffeyrbbhlit
+zdlsaweqomzrhdyy
+ptbgfzuvxiuuxyds
+llxlfdquvovzuqva
+wfrltggyztqtyljv
+kwipfevnbralidbm
+gbhqfbrvuseellbx
+obkbuualrzrakknv
+hlradjrwyjgfqugu
+vtqlxbyiaiorzdsp
+tedcbqoxsmbfjeyy
+cxdppfvklbdayghy
+gjnofexywmdtgeft
+ldzeimbbjmgpgeax
+egrwsmshbvbawvja
+vadfrjvcrdlonrkg
+mojorplakzfmzvtp
+jyurlsoxhubferpo
+ijwqogivvzpbegkm
+cnmetoionfxlutzg
+lawigelyhegqtyil
+mqosapvnduocctcd
+eqncubmywvxgpfld
+vigfretuzppxkrfy
+ncwynsziydoflllq
+cbllqinsipfknabg
+ndtbvdivzlnafziq
+iqrrzgzntjquzlrs
+damkuheynobqvusp
+jxctymifsqilyoxa
+ylritbpusymysmrf
+paoqcuihyooaghfu
+obhpkdaibwixeepl
+igrmhawvctyfjfhd
+ybekishyztlahopt
+vkbniafnlfqhhsrq
+kltdigxmbhazrywf
+ufhcoyvvxqzeixpr
+klcxdcoglwmeynjt
+funpjuvfbzcgdhgs
+akgyvyfzcpmepiuc
+zhlkgvhmjhwrfmua
+ibsowtbnrsnxexuz
+vpufbqilksypwlrn
+ngrintxhusvdkfib
+ziuwswlbrxcxqslw
+sucledgxruugrnic
+zwnsfsyotmlpinew
+oaekskxfcwwuzkor
+qjmqwaktpzhwfldu
+tmgfgqgpxaryktxo
+qfaizepgauqxvffk
+addkqofusrstpamf
+shdnwnnderkemcts
+gwfygbsugzptvena
+fpziernelahopdsj
+bkkrqbsjvyjtqfax
+gxrljlqwxghbgjox
+ipfwnqaskupkmevm
+nnyoyhnqyfydqpno
+lgzltbrrzeqqtydq
+fgzxqurhtdfucheb
+jvpthtudlsoivdwj
+bmlhymalgvehvxys
+fhklibetnvghlgnp
+hfcyhptxzvblvlst
+donanindroexgrha
+oqawfmslbgjqimzx
+jzgehjfjukizosep
+bhlgamcjqijpvipb
+jrcrdjrvsyxzidsk
+ouwfwwjqezkofqck
+wrvsbnkhyzayialf
+knhivfqjxrxnafdl
+hbxbgqsqwzijlngf
+qlffukpfmnxpfiyq
+evhxlouocemdkwgk
+baxhdrmhaukpmatw
+nwlyytsvreqaminp
+ljsjjzmlsilvxgal
+onunatwxfzwlmgpk
+njgolfwndqnwdqde
+ngdgcjzxupkzzbqi
+ieawycvvmvftbikq
+ccyvnexuvczvtrit
+enndfwjpwjyasjvv
+tcihprzwzftaioqu
+bkztdkbrxfvfeddu
+qkvhtltdrmryzdco
+rurtxgibkeaibofs
+mjxypgscrqiglzbp
+unpkojewduprmymd
+csqtkhjxpbzbnqog
+mednhjgbwzlhmufi
+sfrwfazygygzirwd
+ijqeupbrhhpqxota
+cmhpncanwudyysyh
+wwcxbwzrplfzrwxd
+jriomldifuobjpmq
+radonyagpulnnyee
+ryqjwxsspbbhnptd
+yeoqpnsdhludlmzf
+qsqlkeetyalenueh
+qnnedenwsjdrcrzt
+lejkuhsllxbhfcrx
+anddbvllrrqefvke
+wdtljquijaksvdsv
+adslgvfuqqdkzvbc
+whbccefjpcnjwhaq
+kqrfuankaibohqsg
+fyxisfwihvylgnfd
+rwqdrddghyqudcif
+syhzowthaaiiouaf
+zjmrtgrnohxmtidu
+deecwkfvjffxrzge
+dztmvolqxkhdscxe
+cdghcrgavygojhqn
+pepqmdbjhnbugqeu
+pnumdjpnddbxhieg
+jzfhxeyahiagizfw
+hdkwugrhcniueyor
+gmgudeqlbmqynflu
+toidiotdmfkxbzvm
+pyymuoevoezlfkjb
+etrbwuafvteqynlr
+usvytbytsecnmqtd
+dfmlizboawrhmvim
+vrbtuxvzzefedlvs
+vslcwudvasvxbnje
+xdxyvoxaubtwjoif
+mduhzhascirittdf
+cqoqdhdxgvvvxamk
+dshnfwhqjbhuznqr
+zimthfxbdmkulkjg
+luylgfmmwbptyzpj
+iujpcgogshhotqrc
+caqcyzqcumfljvsp
+sprtitjlbfpygxya
+fnconnrtnigkpykt
+irmqaqzjexdtnaph
+bbqrtoblmltvwome
+ozjkzjfgnkhafbye
+hwljjxpxziqbojlw
+zahvyqyoqnqjlieb
+dptshrgpbgusyqsc
+uzlbnrwetkbkjnlm
+yccaifzmvbvwxlcc
+wilnbebdshcrrnuu
+evxnoebteifbffuq
+khbajekbyldddzfo
+kjivdcafcyvnkojr
+wtskbixasmakxxnv
+uzmivodqzqupqkwx
+rxexcbwhiywwwwnu
+rowcapqaxjzcxwqi
+fkeytjyipaxwcbqn
+pyfbntonlrunkgvq
+qiijveatlnplaifi
+ltnhlialynlafknw
+urrhfpxmpjwotvdn
+xklumhfyehnqssys
+civrvydypynjdoap
+fvbmxnfogscbbnyd
+oznavyflpzzucuvg
+iyshrpypfbirahqo
+qmzbfgelvpxvqecy
+xkkxaufomsjbofmk
+irlouftdmpitwvlq
+csjoptbdorqxhnjg
+bkryeshfsaqpdztm
+guxbdqzfafsjoadl
+tgrltexgrzatzwxf
+cwsgsijqdanubxad
+xafnexgturwrzyrg
+apcrsqdbsbaxocxr
+pspgxnzcevmvvejk
+szephmeegvegugdt
+ndjsoloeacasxjap
+bdnfksliscnirjfu
+ehglacmzpcgglpux
+jwweijomqfcupvzw
+yesblmmkqhbazmdu
+sjsmalypmuslzgac
+fkiqatyttlnuhdho
+tlhnyuzdocvfdihq
+ngehtjmycevnybga
+obxodzcdgtrycgry
+stkyrvdfbwovawmk
+bdkhqcfrqaxhxloo
+gpvumnuoiozipnrk
+jbhanddinpqhxeol
+hwkzkmbmsrvunzit
+rfuomegkxbyamjpw
+yzbljuksletipzwm
+eafedkagwitzqigl
+prenqvsbotqckgwy
+spedpbwzphdrfxfz
+cmsuqwemhwixkxet
+xgdyeqbqfldvaccq
+eooxgsrfsbdaolja
+kyhqylxooewrhkho
+mswieugqpoefmspt
+uszoqundysdyeqlc
+hkmjdggxefdyykbq
+dtuhjnlaliodtlvh
+oalbueqbhpxoxvvx
+oowxtxsoqdwhzbya
+lclajfsrpmtwvzkm
+fxmjufpqtpyazeqo
+ozlmreegxhfwwwmf
+mqzrajxtxbaemrho
+nfglecsyqduhakjr
+nkxqtmasjjkpkqbp
+jjfonbqimybvzeus
+vjqkhkhjlmvpwkud
+wxxhnvfhetsamzjr
+pladhajujzttgmsw
+dbycgxeymodsdlhm
+qxszeuaahuoxjvwu
+adultomodzrljxve
+dmhgrbhvvpxyzwdn
+slohrlwxerpahtyp
+mngbocwyqrsrrxdb
+facyrtflgowfvfui
+hyvazpjucgghmmxh
+twtrvjtncmewcxit
+uejkrpvilgccfpfr
+psqvolfagjfvqkum
+nvzolslmiyavugpp
+lpjfutvtwbddtqiu
+fkjnfcdorlugmcha
+eaplrvdckbcqqvhq
+xrcydhkockycburw
+iswmarpwcazimqxn
+kicnnkjdppitjwrl
+vwywaekzxtmeqrsu
+dxlgesstmqaxtjta
+pmeljgpkykcbujbb
+vhpknqzhgnkyeosz
+jprqitpjbxkqqzmz
+fiprxgsqdfymyzdl
+dzvfwvhfjqqsifga
+aeakhfalplltmgui
+frqrchzvenhozzsu
+hsvikeyewfhsdbmy
+puedjjhvxayiwgvg
+zmsonnclfovjoewb
+bnirelcaetdyaumi
+szvudroxhcitatvf
+sccfweuyadvrjpys
+yiouqrnjzsdwyhwa
+xyjhkqbnfmjjdefz
+fjwgemkfvettucvg
+aapqpwapzyjnusnr
+dytxpkvgmapdamtc
+hgocpfoxlheqpumw
+twzuiewwxwadkegg
+qdbosnhyqmyollqy
+fclbrlkowkzzitod
+sgxnrrpwhtkjdjth
+xckvsnkvnvupmirv
+nioicfeudrjzgoas
+lcemtyohztpurwtf
+oyjxhhbswvzekiqn
+idkblbyjrohxybob
+rthvloudwmktwlwh
+oyzhmirzrnoytaty
+ysdfhuyenpktwtks
+wxfisawdtbpsmwli
+vgmypwlezbmzeduk
+rpepcfpelvhzzxzj
+zxbovsmixfvmamnj
+cpkabmaahbnlrhiz
+jvomcbqeoqrmynjj
+iqdeisnegnkrkdws
+ilhemlrtxdsdnirr
+fjimtscrwbfuwmpo
+lmfiylebtzwtztmx
+ddouhysvomrkcpgu
+xtjwvzdhgnwwauwi
+cntzuwcumbsebwyy
+hieqvdlvnxkygeda
+hushfszxskjdrjxi
+xvdfzqblccfoxvyq
+nldnrtieteunyxnb
+vszpidfocenlhzqb
+ofcuvtwhortxesoq
+bwniqemqwxlejcfq
+wkqiwdjnytjnomps
+rbadoommlmrictte
+nsmxhpothlulxivt
+bvzbfcvenskqxejr
+sdqeczmzpqqtqabq
+bjveyzniaaliatkw
+zxsqlntyjajjxytk
+jkoxlerbtidsuepg
+ewtlibdkeqwgxnqt
+lmrshemwxrdwzrgc
+nekcdyxmftlymfir
+edaqvmulzkskzsfy
+znmvqaupykjmyebx
+ximtebuxwhqpzubd
+rrlstppkknqyxlho
+uyibwcitxixjfwcr
+chrvoierkimesqmm
+dltxmwhheldvxwqe
+xfuthxjuuizanfjy
+vtiwavmxwonpkpug
+phchnujfnxewglht
+owvmetdjcynohxtw
+cbtujdrumixxatry
+iirzildsfxipfipe
+sqxcscqyofohotcy
+sbubnekndkvovuqg
+jzhsqqxqdrtibtcd
+mscwasyvxkhlvwbn
+bpafxtagbuxivbwz
+uhvueesygaxrqffw
+trrxlibhtmzuwkkl
+yktkmkokmfslgkml
+gfzzzdptaktytnqg
+pgqmaiwzhplnbyhg
+qjiptlkwfshunsfb
+lewvlpescsyunxck
+tywsfatykshogjas
+qtrnwjjgxdektjgi
+arypcritpwijczkn
+jwxvngigbhfpiubf
+upsjdctitlbqlnhf
+lvpjlrpnmdjiscrq
+jvzchdrsnkgpgsti
+wuoesbwunpseyqzu
+xuqspvoshgxmrnrb
+icdawnmfnpnmyzof
+hwcwtibgpvctznuo
+bzdjrniddyamfloq
+hffkxtzuazageruv
+deixfxjvzbitalnc
+zihsohukiqrgsnvw
+nwoondfnlgowavkg
+qnuulsywgnoillgn
+koozejhfjyzuhviy
+oetcoipohymhpump
+cizwpfczfoodwuly
+jghlinczhtaxifau
+svjejifbidnvvdvy
+rxmbsnaqhzcnbfcl
+vveubmiecvdtrket
+sbihpvrcnzjtgfep
+iqbuljuxkwrlebvw
+ptrhvxrpezqvmmvv
+duwzugnhktpiybjw
+lijafjnujfeflkva
+coylvegferuuyfop
+fowsjrgammrqkkof
+pgmcruaioccmbrbz
+osejwflxagwqtjoi
+otqflckqgxzvtper
+slwyntdcrncktoka
+hzcdzsppcfkrblqg
+jksdmmvtzkqaompg
+galwwwgugetdohkg
+zbghtjvuikmfjuef
+dmqwcamjtlcofqib
+zbczldlfdzemxeys
+mdlqoklybhppdkwe
+tuyajhkexrrrvnlb
+ylfolaubymxmkowo
+nnsyrfnoyrxswzxn
+zkhunhhhigbsslfk
+spbokzdfkbmflanz
+zmzxvrwdhiegfely
+imywhfczvmgahxwl
+fnvabvxeiqvsarqq
+yschramprctnputs
+ubyjrgdzsvxzvouj
+qnvdhpptympctfer
+smipxcntyhjpowug
+ouhjibgcmotegljy
+zpflubaijjqqsptz
+fgysnxrnfnxprdmf
+pbpznrexzxomzfvj
+thhzjresjpmnwtdv
+sbmokolkhvbfqmua
+sxxpdohxlezmqhhx
+pevvsyqgoirixtqh
+wdxrornmhqsbfznb
+zjqziqbctxkshqcn
+nbqcwpzfwfaahylk
+bxbvkonpcxprxqjf
+xplbpqcnwzwqxheb
+prsakggmnjibrpoy
+xoguxbpnrvyqarjl
+ilrgryrmgwjvpzjy
+efwrmokaoigjtrij
+yhcncebopycjzuli
+gwcmzbzaissohjgn
+lggmemwbbjuijtcf
+fkqedbfrluvkrwwl
+jcbppekecevkwpuk
+onvolrckkxeyzfjt
+zzousprgrmllxboy
+cajthmamvxuesujl
+rmiozfsikufkntpg
+lvekypkwjbpddkcv
+dwaqzfnzcnabersa
+pcdsskjopcqwhyis
+uabepbrrnxfbpyvx
+yxlgdomczciiunrk
+ccerskfzctqxvrkz
+edvmkntljlncwhax
+xtcbwecdwygrvowo
+axqgqjqkqwrgcqot
+tyjrynolpzqwnjgj
+thrtmlegdjsuofga
+mpgoeqkzzqqugait
+emuslxgoefdjyivl
+klehpcehdznpssfb
+xfgvugyrdxolixkc
+acenyrbdwxywmwst
+yqgperajsfsamgan
+dbjxlnumrmhipquw
+hsnhirmswcenewxm
+qehqkbhmgucjjpwo
+gprjdglsbtsfzqcw
+wvqkyrkoratfmvfi
+myhzlerupqbduqsl
+couyazesiuhwwhht
+scxzehubxhkfejrr
+gqlitwfriqkmzqdd
+pxtbmqelssoagxko
+dzhklewjqzmrfzsw
+yxgeypduywntnbji
+kwzbgzhkzbgedlfh
+vukmuyfstgmscuab
+vcmaybfvdgwnasgt
+qmybkqqdhjigzmum
+cbnuicuncvczyalu
+qdgpsdpdlgjasjqr
+kdzxqqheurupejjo
+mcatrxfchbqnxelm
+badunwkeggdkcgco
+ntaeanvcylpoqmxi
+ghnyfytpzgvuokjn
+ozepydixmjijdmts
+qefcfwzdhwmcyfvp
+ycyktmpaqgaxqsxt
+edpizkxnsxeeebfl
+uwciveajsxxwoqyr
+rbvjkljpxtglqjsh
+nbplrskduutrptfk
+vewrbadvkseuloec
+upaotnjxquomoflx
+qfwxkinrousqywdd
+mqzxvvskslbxvyjt
+oxicszyiqifoyugx
+bkitxwzjpabvhraj
+ydrbyjecggynjpir
+hezyteaublxxpamq
+hxkuektnoovsehnd
+cwtbbavnhlpiknza
+qrwvkhbyasgfxwol
+qryjbohkprfazczc
+wjksnogpxracrbud
+znmsxbhliqxhvesr
+gkippedrjzmnnwkp
+pklylwsnsyyxwcwg
+osdpwbxoegwaiemr
+kpslrrrljgtjiqka
+vuqkloqucpyzfxgk
+bvtdsisgvkuzghyl
+qlcayluuyvlhdfyy
+kbimqwnzanlygaya
+nvoeanlcfhczijed
+kqvcijcuobtdwvou
+pmhdpcmxnprixitl
+yueilssewzabzmij
+zqxhafrvjyeyznyg
+mhdounmxkvnnsekx
+hnacyglnzicxjakg
+iaxfdqibnrcjdlyl
+iypoelspioegrwix
+uiqouxzmlnjxnbqt
+kslgjfmofraorvjo
+bgvotsdqcdlpkynk
+huwcgxhvrrbvmmth
+vpqyfnkqqjacpffw
+hpjgdfovgmrzvrcl
+vbntbhbvdeszihzj
+nrbyyuviwyildzuw
+wckeoadqzsdnsbox
+xgsobwuseofxsxox
+anvhsxdshndembsd
+iygmhbegrwqbqerg
+ylrsnwtmdsrgsvlh
+zvvejnrarsavahvc
+yncxhmmdtxxeafby
+kekgiglblctktnes
+uoqgymsrlrwdruzc
+saaoymtmnykusicw
+bqvcworpqimwglcp
+zbpgtheydoyzipjv
+pkykzslwsjbhcvcj
+jhwxxneyuuidrzvl
+pafeyajcrlehmant
+klszcvtmcdeyfsmj
+ledsltggvrbvlefn
+hubpbvxknepammep
+gthxhaapfpgtilal
+jtfhbozlometwztj
+jrhshycyenurbpwb
+fyaxbawrsievljqv
+lgfcgbenlqxqcxsd
+dhedabbwbdbpfmxp
+mxzgwhaqobyvckcm
+qboxojoykxvwexav
+jcpzfjnmvguwjnum
+ohpsxnspfwxkkuqe
+nyekrqjlizztwjqp
+thuynotacpxjzroj
+wymbolrlwosnbxqx
+iyaqihnqvewxdtjm
+hdvdbtvfpdrejenu
+gtjscincktlwwkkf
+wtebigbaythklkbd

From 37b5adf4d695ef312b27e815f59404b24002a28b Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 22:07:47 +0100
Subject: [PATCH 07/12] =?UTF-8?q?Ajout=20commandes=20pour=20les=20num?=
 =?UTF-8?q?=C3=A9ros=20de=20lignes=20en=20COBOL?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md | 43 +++++++++++++++++++++++++++++++++++++------
 1 file changed, 37 insertions(+), 6 deletions(-)

diff --git a/README.md b/README.md
index 70f3a46..c312761 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
 # AoC 2015
 
+
 J’ai décidé de faire l’édition de 2015 de l’Advent of Code en utilisant un langage différent pour chaque jour. J’essaie d’utiliser au mieux le langage (par exemple, Java est orienté objet). Vous trouverez ci-dessous un tableau résumant rapidement ce dont vous avez besoin pour lancer chaque jour et plus bas encore des notes plus précises pour les différents jours.
 
 ## TLDR
@@ -75,14 +76,30 @@ On retourne dans le passé ici avec le **Cobol**. J’ai utilisé le compilateur
 sudo xbps-install gnucobol gmp-devel # sur Void
 
 # pour compiler et exécuter
-cobc -x jour5-prem.cob
-./jour5-prem
+cobc -x jour5.cob
+./jour5
 ```
 
-Il reste des messages de débugging. Si vous souhaitez les voir, il suffit de rajouter l’option `-fdebugging-line` au compilateur.
+Il reste des messages de débugging. Si vous souhaitez les voir, il suffit de rajouter l’option `-fdebugging-line` au compilateur. **Les messages ont été supprimés.**
 
 J’ai appris à coder en COBOL très rapidement pour ce jour. Je me suis appuyé sur [le cours de Wikiversite](https://fr.wikiversity.org/wiki/COBOL) pour les bases et aussi de [la documentation officielle GNUCOBOL](https://devdocs.io/gnu_cobol/).
 
+En tant que développeur, je suis feignant. Voici un mini script bash pour générer les colonnes de lignes se trouvant dans le fichier : 
+
+```bash
+nbLine=$(wc -l jour5.cob | cut -d\  -f1)
+for i in $(seq -f "%06g" $nbLines); 
+do 
+    sed -Ei '0,/^\s{1,6}/s//'$i'/' jour5.cob
+done
+```
+
+Si vous souhaitez éditer le fichier, il est plus pratique de le faire sans ces nombres. Voici la commande permettant de les retirer :
+
+```bash
+sed -Ei 's/^[0-9]{6}/      /g' jour5.cob
+```
+
 ## Jour 6
 ## Jour 7
 ## Jour 8
@@ -113,7 +130,7 @@ Liste des langages utilisés
 
 * Shell
 * Perl
-* LOLCODE / HolyC
+* HolyC
 * C++
 * C#
 * Pascal
@@ -121,13 +138,27 @@ Liste des langages utilisés
 * Go
 * Rust
 * Groovy
-* Haskell
 * JS
 * PHP
 * Pony
 * Ruby
 * Lua
 * Pawn
-* PureBasic
 * Squirrel
 * Scala
+
+## Langages non utilisées
+
+Liste des langages devant être utiliser mais qui ne l’ont pas été. J’essai d’apporter des explications au pourquoi.
+
+### LOLCODE
+
+Le LOLCODE ne permet pas la manipulation de chaines de caractères ou de manière peu flexible : [post Stackoverflow](https://stackoverflow.com/questions/29762129/lolcode-string-parsing).
+
+### Haskell
+
+Le Haskell est un langage de logique, son foctionnement et surtout sa structure est différente des autres programmes.
+
+### PureBasic
+
+Compilateur propriétaire.

From d9f9eddca6248a742239c90af203778f45c09045 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 22:21:19 +0100
Subject: [PATCH 08/12] Modification REGEX

---
 README.md | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index c312761..e5c76af 100644
--- a/README.md
+++ b/README.md
@@ -87,16 +87,17 @@ J’ai appris à coder en COBOL très rapidement pour ce jour. Je me suis appuy
 En tant que développeur, je suis feignant. Voici un mini script bash pour générer les colonnes de lignes se trouvant dans le fichier : 
 
 ```bash
-nbLine=$(wc -l jour5.cob | cut -d\  -f1)
-for i in $(seq -f "%06g" $nbLines); 
-do 
-    sed -Ei '0,/^\s{1,6}/s//'$i'/' jour5.cob
+nb=$(wc -l jour5.cob | cut -d\  -f1)
+for i in $(seq -f "%06g" $nb)
+do
+    sed -Ei '0,/(^\s{6}|^\s*$)/s//'$i'/' jour5.cob
 done
 ```
 
 Si vous souhaitez éditer le fichier, il est plus pratique de le faire sans ces nombres. Voici la commande permettant de les retirer :
 
 ```bash
+sed -Ei 's/^[0-9]{6}$//g' jour5.cob # pour éviter les espaces inutiles
 sed -Ei 's/^[0-9]{6}/      /g' jour5.cob
 ```
 

From ed7231d96a59c36ea41503174905bb7233034b28 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 22:24:31 +0100
Subject: [PATCH 09/12] Suppression messages de debug

---
 jour05/jour5.cob | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/jour05/jour5.cob b/jour05/jour5.cob
index aaa90fc..42f7a82 100644
--- a/jour05/jour5.cob
+++ b/jour05/jour5.cob
@@ -32,7 +32,7 @@
                       BY CONTENT MY-STR,
                       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 les incrémenter
                       END-CALL
               END-READ
            END-PERFORM.
@@ -112,35 +112,25 @@
        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
+               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
+                       IF BAD THEN
+                           EXIT PERFORM
                        END-IF
-                       IF PRED = CHAR
-                           THEN
-                               MOVE 'Y' TO DOUBLE
+                       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
+           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.
@@ -215,7 +205,6 @@
                    ADD 1 TO NB END-ADD
            END-IF.
            EXIT PROGRAM.
-
        END PROGRAM parse-deux.
 
        END PROGRAM hub.

From 0f6b2728534e85f869660b0e7d25d9c8b03acc5a Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 22:28:17 +0100
Subject: [PATCH 10/12] Suppression espaces inutiles

---
 jour05/jour5.cob | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/jour05/jour5.cob b/jour05/jour5.cob
index 42f7a82..f2312b3 100644
--- a/jour05/jour5.cob
+++ b/jour05/jour5.cob
@@ -1,18 +1,18 @@
        IDENTIFICATION DIVISION.
         PROGRAM-ID. jour-cinq-prem-part.
-      
+
        ENVIRONMENT DIVISION.
           INPUT-OUTPUT SECTION.
           FILE-CONTROL.
                SELECT FILE1 ASSIGN TO "input"
                ORGANIZATION LINE SEQUENTIAL.
-      
+
        DATA DIVISION.
          FILE SECTION.
          FD FILE1.
            01 INPUT-FILE.
              02 STR PIC A(17).
-      
+
          WORKING-STORAGE SECTION.
            01 MY-FILE.
              02 MY-STR PIC A(17).
@@ -20,7 +20,7 @@
              88 EOF VALUE 'Y'.
            77 NB-NICE-PREM PIC 9(4) VALUE 0.
            77 NB-NICE-DEUX PIC 9(4) VALUE 0.
-      
+
        PROCEDURE DIVISION.
        main.
            OPEN INPUT FILE1.
@@ -41,7 +41,7 @@
            DISPLAY "Dans la partie 2 : " NB-NICE-DEUX END-DISPLAY.
            CLOSE FILE1.
            STOP RUN.
-      
+
       *****************************************************************
       * hub : exécute les 2 fonctions pour les 2 parties
       * STR : la chaine à passer en paramètre aux deux fonctions
@@ -49,10 +49,10 @@
       * 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).
@@ -81,7 +81,7 @@
 
        IDENTIFICATION DIVISION.
        PROGRAM-ID. parse-prem.
-    
+
        DATA DIVISION.
          WORKING-STORAGE SECTION.
            77 CHAR PIC A.
@@ -103,11 +103,11 @@
       *
       * 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.
@@ -144,7 +144,7 @@
 
        IDENTIFICATION DIVISION.
          PROGRAM-ID. parse-deux.
-      
+
        DATA DIVISION.
          WORKING-STORAGE SECTION.
            77 CHAR PIC A.
@@ -159,7 +159,7 @@
            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
@@ -168,11 +168,11 @@
       * DOUBLE est mit à Y lorsque 2 pairs sont trouvées
       * BETWEEN est mit à Y lorsque 2 memes lettres en encadrent une
       ******************************************************************
-      
+
          LINKAGE SECTION.
            77 STR PIC A(17).
            77 NB PIC 9(4).
-      
+
        PROCEDURE DIVISION USING STR, NB.
        deuxieme-part.
            MOVE 'N' TO BETWEEN.

From 883b2a19e6713d86a8a59f98326fd03b44aacdd6 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 22:30:08 +0100
Subject: [PATCH 11/12] changement de nom programme principal

---
 jour05/jour5.cob | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/jour05/jour5.cob b/jour05/jour5.cob
index f2312b3..c9da89e 100644
--- a/jour05/jour5.cob
+++ b/jour05/jour5.cob
@@ -1,5 +1,5 @@
        IDENTIFICATION DIVISION.
-        PROGRAM-ID. jour-cinq-prem-part.
+        PROGRAM-ID. jour-cinq.
 
        ENVIRONMENT DIVISION.
           INPUT-OUTPUT SECTION.
@@ -208,4 +208,4 @@
        END PROGRAM parse-deux.
 
        END PROGRAM hub.
-       END PROGRAM jour-cinq-prem-part.
+       END PROGRAM jour-cinq.

From ddf165db9576a325bbaf7f9169c456bfa8891395 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 17 Mar 2021 22:30:41 +0100
Subject: [PATCH 12/12] =?UTF-8?q?Ajout=20des=20num=C3=A9ros=20de=20lignes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 jour05/jour5.cob | 422 +++++++++++++++++++++++------------------------
 1 file changed, 211 insertions(+), 211 deletions(-)

diff --git a/jour05/jour5.cob b/jour05/jour5.cob
index c9da89e..605c671 100644
--- a/jour05/jour5.cob
+++ b/jour05/jour5.cob
@@ -1,211 +1,211 @@
-       IDENTIFICATION DIVISION.
-        PROGRAM-ID. jour-cinq.
-
-       ENVIRONMENT DIVISION.
-          INPUT-OUTPUT SECTION.
-          FILE-CONTROL.
-               SELECT FILE1 ASSIGN TO "input"
-               ORGANIZATION LINE SEQUENTIAL.
-
-       DATA DIVISION.
-         FILE SECTION.
-         FD FILE1.
-           01 INPUT-FILE.
-             02 STR PIC A(17).
-
-         WORKING-STORAGE SECTION.
-           01 MY-FILE.
-             02 MY-STR PIC A(17).
-           01 FILE-STATUS PIC X VALUE 'N'.
-             88 EOF VALUE 'Y'.
-           77 NB-NICE-PREM PIC 9(4) VALUE 0.
-           77 NB-NICE-DEUX PIC 9(4) VALUE 0.
-
-       PROCEDURE DIVISION.
-       main.
-           OPEN INPUT FILE1.
-           PERFORM UNTIL EOF
-              READ FILE1 RECORD INTO MY-FILE
-      * Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler
-              AT END MOVE 'Y' TO FILE-STATUS
-              NOT AT END CALL "hub" USING
-                      BY CONTENT MY-STR,
-                      BY REFERENCE NB-NICE-PREM
-                      BY REFERENCE NB-NICE-DEUX
-      * On passe par référence NB-NICE pour les incrémenter
-                      END-CALL
-              END-READ
-           END-PERFORM.
-           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.
-           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-prem : parse la chaine de caractères pour voir le nombre de
-      * bonnes chaines pour la partie 1. 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-prem.
-
-       DATA DIVISION.
-         WORKING-STORAGE SECTION.
-           77 CHAR PIC A.
-               88 VOY VALUE 'a','e','i','o','u'.
-           77 I PIC 99.
-               88 END-P VALUE 17.
-           77 NB-VOY PIC 99.
-           77 PRED PIC A.
-           77 TMP PIC AA.
-               88 BAD VALUE 'ab', 'cd', 'pq', 'xy'.
-           77 DOUBLE PIC X.
-
-      *****************************************************************
-      * NB-VOY contient le nombre de voyelles
-      * PRED le caractère précédent
-      * TMP forme la chaine contenant le caractère précédent et courant
-      * BAD les mauvaises formes de chaines
-      * DOUBLE est mit à Y lorsque CHAR = PRED
-      *
-      * 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.
-           PERFORM VARYING I FROM 1 BY 1 UNTIL END-P
-               MOVE STR(I:1) TO CHAR
-               IF VOY THEN
-                   ADD 1 TO NB-VOY END-ADD
-               END-IF
-               IF I >= 2
-                   THEN
-                       STRING PRED CHAR INTO TMP END-STRING
-                       IF BAD THEN
-                           EXIT PERFORM
-                       END-IF
-                       IF PRED = CHAR THEN
-                           MOVE 'Y' TO DOUBLE
-                       END-IF
-               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.
-           77 STR PIC A(17).
-           77 NB PIC 9(4).
-
-       PROCEDURE DIVISION USING STR, NB.
-       deuxieme-part.
-           MOVE 'N' TO BETWEEN.
-           MOVE 'N' TO DOUBLE.
-           PERFORM VARYING I FROM 1 BY 1 UNTIL STR-LENGTH
-               COMPUTE J = I + 1 END-COMPUTE
-               MOVE STR(I:1) TO CHAR
-               IF I > 1 AND I < (LENGTH OF STR - 1) THEN
-                   MOVE STR(J:1) TO MYNEW
-                   IF PRED = MYNEW THEN
-                       MOVE 'Y' TO BETWEEN
-                   END-IF
-               END-IF
-
-               IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN
-                   MOVE STR(I:2) TO DOUBLE-CHAR
-                   ADD 1 TO J END-ADD
-                   PERFORM VARYING K FROM J BY 1 UNTIL DOUBLE-STR-LENGTH
-                       MOVE STR(K:2) TO DOUBLE-CHAR-NEXT
-                       IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN
-                           MOVE 'Y' TO DOUBLE
-                       END-IF
-                   END-PERFORM
-               END-IF
-               MOVE CHAR TO PRED
-           END-PERFORM.
-
-           IF BETWEEN  = 'Y' AND DOUBLE = 'Y'
-               THEN
-                   ADD 1 TO NB END-ADD
-           END-IF.
-           EXIT PROGRAM.
-       END PROGRAM parse-deux.
-
-       END PROGRAM hub.
-       END PROGRAM jour-cinq.
+000001 IDENTIFICATION DIVISION.
+000002  PROGRAM-ID. jour-cinq.
+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-PREM PIC 9(4) VALUE 0.
+000022     77 NB-NICE-DEUX PIC 9(4) VALUE 0.
+000023
+000024 PROCEDURE DIVISION.
+000025 main.
+000026     OPEN INPUT FILE1.
+000027     PERFORM UNTIL EOF
+000028        READ FILE1 RECORD INTO MY-FILE
+000029* Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler
+000030        AT END MOVE 'Y' TO FILE-STATUS
+000031        NOT AT END CALL "hub" USING
+000032                BY CONTENT MY-STR,
+000033                BY REFERENCE NB-NICE-PREM
+000034                BY REFERENCE NB-NICE-DEUX
+000035* On passe par référence NB-NICE pour les incrémenter
+000036                END-CALL
+000037        END-READ
+000038     END-PERFORM.
+000039     DISPLAY "Nombres de bonnes chaines :" END-DISPLAY.
+000040     DISPLAY "Dans la partie 1 : " NB-NICE-PREM END-DISPLAY.
+000041     DISPLAY "Dans la partie 2 : " NB-NICE-DEUX END-DISPLAY.
+000042     CLOSE FILE1.
+000043     STOP RUN.
+000044
+000045*****************************************************************
+000046* hub : exécute les 2 fonctions pour les 2 parties
+000047* STR : la chaine à passer en paramètre aux deux fonctions
+000048* NB-PREM : (REFERENCE) nombre bonnes chaines partie 1
+000049* NB-DEUX : (REFERENCE) nombre bonnes chaines partie 2
+000050* Ces 2 variables seront incrémentées
+000051*****************************************************************
+000052
+000053 IDENTIFICATION DIVISION.
+000054   PROGRAM-ID. hub.
+000055
+000056 DATA DIVISION.
+000057   LINKAGE SECTION.
+000058     77 STR PIC A(17).
+000059     77 NB-PREM PIC 9(4).
+000060     77 NB-DEUX PIC 9(4).
+000061
+000062 PROCEDURE DIVISION USING STR, NB-PREM, NB-DEUX.
+000063 route.
+000064     CALL "parse-prem" USING
+000065     BY CONTENT STR,
+000066     BY REFERENCE NB-PREM
+000067     END-CALL.
+000068
+000069     CALL "parse-deux" USING
+000070     BY CONTENT STR,
+000071     BY REFERENCE NB-DEUX
+000072     END-CALL.
+000073 EXIT PROGRAM.
+000074
+000075******************************************************************
+000076* parse-prem : parse la chaine de caractères pour voir le nombre de
+000077* bonnes chaines pour la partie 1. Prend en paramètres 2 arguments :
+000078* STR : chaine de caractères de taille 17 à analyser.
+000079* NB  : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
+000080*****************************************************************
+000081
+000082 IDENTIFICATION DIVISION.
+000083 PROGRAM-ID. parse-prem.
+000084
+000085 DATA DIVISION.
+000086   WORKING-STORAGE SECTION.
+000087     77 CHAR PIC A.
+000088         88 VOY VALUE 'a','e','i','o','u'.
+000089     77 I PIC 99.
+000090         88 END-P VALUE 17.
+000091     77 NB-VOY PIC 99.
+000092     77 PRED PIC A.
+000093     77 TMP PIC AA.
+000094         88 BAD VALUE 'ab', 'cd', 'pq', 'xy'.
+000095     77 DOUBLE PIC X.
+000096
+000097*****************************************************************
+000098* NB-VOY contient le nombre de voyelles
+000099* PRED le caractère précédent
+000100* TMP forme la chaine contenant le caractère précédent et courant
+000101* BAD les mauvaises formes de chaines
+000102* DOUBLE est mit à Y lorsque CHAR = PRED
+000103*
+000104* LINKAGE SECTION contient les paramètres du programme parse-str
+000105*****************************************************************
+000106
+000107   LINKAGE SECTION.
+000108     77 STR PIC A(17).
+000109     77 NB PIC 9(4).
+000110
+000111 PROCEDURE DIVISION USING STR, NB.
+000112 parse.
+000113     MOVE 0 TO NB-VOY.
+000114     MOVE 'N' TO DOUBLE.
+000115     PERFORM VARYING I FROM 1 BY 1 UNTIL END-P
+000116         MOVE STR(I:1) TO CHAR
+000117         IF VOY THEN
+000118             ADD 1 TO NB-VOY END-ADD
+000119         END-IF
+000120         IF I >= 2
+000121             THEN
+000122                 STRING PRED CHAR INTO TMP END-STRING
+000123                 IF BAD THEN
+000124                     EXIT PERFORM
+000125                 END-IF
+000126                 IF PRED = CHAR THEN
+000127                     MOVE 'Y' TO DOUBLE
+000128                 END-IF
+000129         END-IF
+000130         MOVE CHAR TO PRED
+000131     END-PERFORM.
+000132     IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' THEN
+000133         ADD 1 TO NB END-ADD
+000134     END-IF.
+000135     EXIT PROGRAM.
+000136 END PROGRAM parse-prem.
+000137
+000138******************************************************************
+000139* parse-deux : parse la chaine de caractères pour voir le nombre de
+000140* bonnes chaines pour la partie 2. Prend en paramètres 2 arguments :
+000141* STR : chaine de caractères de taille 17 à analyser.
+000142* NB  : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter.
+000143*****************************************************************
+000144
+000145 IDENTIFICATION DIVISION.
+000146   PROGRAM-ID. parse-deux.
+000147
+000148 DATA DIVISION.
+000149   WORKING-STORAGE SECTION.
+000150     77 CHAR PIC A.
+000151     77 I PIC 99.
+000152         88 STR-LENGTH VALUE 17.
+000153     77 J PIC 99.
+000154     77 K PIC 99.
+000155         88 DOUBLE-STR-LENGTH VALUE 16.
+000156     77 PRED PIC A.
+000157     77 MYNEW PIC A.
+000158     77 DOUBLE-CHAR PIC AA.
+000159     77 DOUBLE-CHAR-NEXT PIC AA.
+000160     77 BETWEEN PIC X.
+000161     77 DOUBLE PIC X.
+000162
+000163******************************************************************
+000164* PRED le caractère précédent
+000165* MYNEW le caractère suivant
+000166* DOUBLE-CHAR la paire à vérifier
+000167* DOUBLE-CHAR-NEXT les paires suivantes
+000168* DOUBLE est mit à Y lorsque 2 pairs sont trouvées
+000169* BETWEEN est mit à Y lorsque 2 memes lettres en encadrent une
+000170******************************************************************
+000171
+000172   LINKAGE SECTION.
+000173     77 STR PIC A(17).
+000174     77 NB PIC 9(4).
+000175
+000176 PROCEDURE DIVISION USING STR, NB.
+000177 deuxieme-part.
+000178     MOVE 'N' TO BETWEEN.
+000179     MOVE 'N' TO DOUBLE.
+000180     PERFORM VARYING I FROM 1 BY 1 UNTIL STR-LENGTH
+000181         COMPUTE J = I + 1 END-COMPUTE
+000182         MOVE STR(I:1) TO CHAR
+000183         IF I > 1 AND I < (LENGTH OF STR - 1) THEN
+000184             MOVE STR(J:1) TO MYNEW
+000185             IF PRED = MYNEW THEN
+000186                 MOVE 'Y' TO BETWEEN
+000187             END-IF
+000188         END-IF
+000189
+000190         IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN
+000191             MOVE STR(I:2) TO DOUBLE-CHAR
+000192             ADD 1 TO J END-ADD
+000193             PERFORM VARYING K FROM J BY 1 UNTIL DOUBLE-STR-LENGTH
+000194                 MOVE STR(K:2) TO DOUBLE-CHAR-NEXT
+000195                 IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN
+000196                     MOVE 'Y' TO DOUBLE
+000197                 END-IF
+000198             END-PERFORM
+000199         END-IF
+000200         MOVE CHAR TO PRED
+000201     END-PERFORM.
+000202
+000203     IF BETWEEN  = 'Y' AND DOUBLE = 'Y'
+000204         THEN
+000205             ADD 1 TO NB END-ADD
+000206     END-IF.
+000207     EXIT PROGRAM.
+000208 END PROGRAM parse-deux.
+000209
+000210 END PROGRAM hub.
+000211 END PROGRAM jour-cinq.