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.