COBOL - Instructions de boucle
Certaines tâches doivent être effectuées encore et encore, comme la lecture de chaque enregistrement d'un fichier jusqu'à sa fin. Les instructions de boucle utilisées dans COBOL sont -
- Effectuer Thru
- Effectuer jusqu'à
- Temps d'exécution
- Effectuer des variations
Effectuer Thru
Perform Thru est utilisé pour exécuter une série de paragraphes en donnant les noms de premier et dernier paragraphe de la séquence. Après avoir exécuté le dernier paragraphe, le contrôle est renvoyé.
Performer en ligne
Les instructions à l'intérieur de PERFORM seront exécutées jusqu'à ce que END-PERFORM soit atteint.
Syntaxe
Voici la syntaxe de l'exécution en ligne -
PERFORM
DISPLAY 'HELLO WORLD'
END-PERFORM.
Performances hors ligne
Ici, une instruction est exécutée dans un paragraphe, puis le contrôle est transféré vers un autre paragraphe ou une autre section.
Syntaxe
Voici la syntaxe de l'exécution hors ligne -
PERFORM PARAGRAPH1 THRU PARAGRAPH2
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
A-PARA.
PERFORM DISPLAY 'IN A-PARA'
END-PERFORM.
PERFORM C-PARA THRU E-PARA.
B-PARA.
DISPLAY 'IN B-PARA'.
STOP RUN.
C-PARA.
DISPLAY 'IN C-PARA'.
D-PARA.
DISPLAY 'IN D-PARA'.
E-PARA.
DISPLAY 'IN E-PARA'.
JCL pour exécuter le programme COBOL ci-dessus.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -
IN A-PARA
IN C-PARA
IN D-PARA
IN E-PARA
IN B-PARA
Effectuer jusqu'à
Dans 'exécuter jusqu'à', un paragraphe est exécuté jusqu'à ce que la condition donnée devienne vraie. «Avec test avant» est la condition par défaut et indique que la condition est vérifiée avant l'exécution des instructions dans un paragraphe.
Syntaxe
Voici la syntaxe de perform jusqu'à -
PERFORM A-PARA UNTIL COUNT=5
PERFORM A-PARA WITH TEST BEFORE UNTIL COUNT=5
PERFORM A-PARA WITH TEST AFTER UNTIL COUNT=5
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-CNT PIC 9(1) VALUE 0.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA WITH TEST AFTER UNTIL WS-CNT>3.
STOP RUN.
B-PARA.
DISPLAY 'WS-CNT : 'WS-CNT.
ADD 1 TO WS-CNT.
JCL pour exécuter le programme COBOL ci-dessus -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -
WS-CNT : 0
WS-CNT : 1
WS-CNT : 2
WS-CNT : 3
Temps d'exécution
Dans 'perform times', un paragraphe sera exécuté le nombre de fois spécifié.
Syntaxe
Voici la syntaxe des temps d'exécution -
PERFORM A-PARA 5 TIMES.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA 3 TIMES.
STOP RUN.
B-PARA.
DISPLAY 'IN B-PARA'.
JCL pour exécuter le programme COBOL ci-dessus -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -
IN B-PARA
IN B-PARA
IN B-PARA
Effectuer des variations
Lors de l'exécution de la variation, un paragraphe sera exécuté jusqu'à ce que la condition de la phrase Until devienne vraie.
Syntaxe
Voici la syntaxe de perform variant -
PERFORM A-PARA VARYING A FROM 1 BY 1 UNTIL A = 5.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-A PIC 9 VALUE 0.
PROCEDURE DIVISION.
A-PARA.
PERFORM B-PARA VARYING WS-A FROM 1 BY 1 UNTIL WS-A=5
STOP RUN.
B-PARA.
DISPLAY 'IN B-PARA ' WS-A.
JCL pour exécuter le programme COBOL ci-dessus -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -
IN B-PARA 1
IN B-PARA 2
IN B-PARA 3
IN B-PARA 4
ALLER À Déclaration
L'instruction GO TO est utilisée pour modifier le flux d'exécution dans un programme. Dans les instructions GO TO, le transfert s'effectue uniquement dans le sens avant. Il est utilisé pour quitter un paragraphe. Les différents types d'instructions GO TO utilisés sont les suivants -
Inconditionnel ALLER À
GO TO para-name.
Conditionnel ALLER À
GO TO para-1 para-2 para-3 DEPENDING ON x.
Si «x» est égal à 1, alors le contrôle sera transféré au premier paragraphe; et si «x» est égal à 2, alors le contrôle sera transféré au deuxième paragraphe, et ainsi de suite.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-A PIC 9 VALUE 2.
PROCEDURE DIVISION.
A-PARA.
DISPLAY 'IN A-PARA'
GO TO B-PARA.
B-PARA.
DISPLAY 'IN B-PARA '.
GO TO C-PARA D-PARA DEPENDING ON WS-A.
C-PARA.
DISPLAY 'IN C-PARA '.
D-PARA.
DISPLAY 'IN D-PARA '.
STOP RUN.
JCL pour exécuter le programme COBOL ci-dessus:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO
Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant:
IN A-PARA
IN B-PARA
IN D-PARA