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