From dc9887ebd9e3d77515f14b2d6ae5d195c68043ea Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Sun, 7 Mar 2021 14:47:55 +0100
Subject: [PATCH] =?UTF-8?q?Premi=C3=A8re=20partie=20(ne=20donne=20pas=20la?=
 =?UTF-8?q?=20bonne=20r=C3=A9ponse?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 jour05/test.cob | 81 ++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 70 insertions(+), 11 deletions(-)

diff --git a/jour05/test.cob b/jour05/test.cob
index 086afce..20fa859 100644
--- a/jour05/test.cob
+++ b/jour05/test.cob
@@ -1,5 +1,5 @@
        IDENTIFICATION DIVISION.
-         PROGRAM-ID. jour-cinq-prem-part.
+        PROGRAM-ID. jour-cinq-prem-part.
       
        ENVIRONMENT DIVISION.
           INPUT-OUTPUT SECTION.
@@ -8,6 +8,7 @@
                ORGANIZATION LINE SEQUENTIAL.
        
        DATA DIVISION.
+
          FILE SECTION.
          FD FILE1.
            01 INPUT-FILE.
@@ -15,25 +16,83 @@
       
          WORKING-STORAGE SECTION.
            01 MY-FILE.
-             02 STR PIC A(17).
-           01 WS-STATUS PIC X VALUE 'N'.
+             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.
+       main.
            OPEN INPUT FILE1.
            PERFORM UNTIL EOF
               READ FILE1 RECORD INTO MY-FILE
-              AT END MOVE 'Y' TO WS-STATUS
-              NOT AT END DISPLAY MY-FILE
+              AT END MOVE 'Y' TO FILE-STATUS
+              NOT AT END CALL "parse-str" USING 
+                      BY CONTENT MY-STR,
+                      BY REFERENCE NB-NICE
+                      END-CALL
               END-READ
            END-PERFORM.
+           DISPLAY "Nombre de bonnes chaines : " NB-NICE.
            CLOSE FILE1.
            STOP RUN.
       
        END PROGRAM jour-cinq-prem-part.
-       
-      *deuxième étape, lire car par car
-      *troisième étape, check si voyelle
-      *retenir lettre act et pred pour check mot interdit
-      *retenir lettre jusqu’à double
+
+      ******************************************************************
+      
+       IDENTIFICATION DIVISION.
+         PROGRAM-ID. parse-str.
+
+       DATA DIVISION.
+         WORKING-STORAGE SECTION.
+           77 CHAR PIC A.
+               88 VOY VALUE 'a','e','i','o','u','y'.
+           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.
+                   
+         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.
+
+       END PROGRAM parse-str.