From dc9887ebd9e3d77515f14b2d6ae5d195c68043ea Mon Sep 17 00:00:00 2001 From: rick 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.