Un bloc d’instruction ou un paragraphe/section sera exécuté dans PERFORM VARYING jusqu’à ce que la condition devienne vraie dans la phrase UNTIL.
Dans l’exemple ci-dessous, il y a trois DEPARTEMENTS et chaque département a deux EMPLOYES.
IDENTIFICATION DIVISION.
PROGRAM-ID. PERFORM.
AUTHOR. LA COMMUNAUTE DU COBOL.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-AUXILIARES.
05 WS-DEPT-01 PIC 9(002) VALUE ZEROES.
05 WS-DEPT-02 PIC 9(002) VALUE ZEROES.
01 TABLE-DEPARTAMENT.
05 DEPARTAMENT OCCURS 3 TIMES.
10 NOM-DEPT PIC X(20).
10 NOM-EMPL PIC X(20) OCCURS 2 TIMES.
PROCEDURE DIVISION.
MOVE "FACTURATION" TO NOM-DEPTO (1)
MOVE "QUALITE" TO NOM-DEPTO (2)
MOVE "MARKETING" TO NOM-DEPTO (3)
MOVE "Carl" TO NOM-EMPL (1 1)
MOVE "Albert" TO NOM-EMPL (1 2)
MOVE "Augustin" TO NOM-EMPL (2 1)
MOVE "Eduard" TO NOM-EMPL (2 2)
MOVE "Antoine" TO NOM-EMPL (3 1)
MOVE "Marie" TO NOM-EMPL (3 2)
DISPLAY "--------------------------------------------------------------------------------------------"
DISPLAY "En utilisant PERFORM VARYING UNTIL "
DISPLAY "--------------------------------------------------------------------------------------------"
PERFORM VARYING WS-DEPT-01 FROM 1 BY 1
UNTIL WS-DEPT-01 > 3
PERFORM VARYING WS-DEPT-02 FROM 1 BY 1
UNTIL WS-DEPT-02 > 2
PERFORM PARAGRAF-1 THRU PARAGRAF-1-FIN
END-PERFORM
END-PERFORM
DISPLAY "--------------------------------------------------------------------------------------------"
DISPLAY "En utilisant PERFORM VARYING UNTIL AFTER"
DISPLAY "--------------------------------------------------------------------------------------------"
PERFORM PARAGRAF-1 THRU PARAGRAF-1-FIN
VARYING WS-DEPT-01 FROM 1 BY 1
UNTIL WS-DEPT-01 > 3
AFTER WS-DEPT-02 FROM 1 BY 1
UNTIL WS-DEPT-02 > 2.
STOP RUN.
PARAGRAFO-1.
DISPLAY " DEPARTAMENT : " NOM-DEPT (WS-DEPT-01)
" EMPLOYEES : " NOME-EMPL (WS-DEPT-01 WS-DEPT-02).
PARAGRAF-1-FIN.
EXIT.
Résultat du test
--------------------------------------------------------------------------------------------
En utilisant PERFORM VARYING UNTIL
--------------------------------------------------------------------------------------------
DEPARTAMENT: FACTURATION EMPLOYEES : Carl
DEPARTAMENT: FACTURATION EMPLOYEES : Albert
DEPARTAMENT: QUALITE EMPLOYEES : Augustin
DEPARTAMENT: QUALITE EMPLOYEES : Eduard
DEPARTAMENT: MARKETING EMPLOYEES : Antoine
DEPARTAMENT: MARKETING EMPLOYEES : Marie
--------------------------------------------------------------------------------------------
En utilisant PERFORM VARYING UNTIL AFTER
--------------------------------------------------------------------------------------------
DEPARTAMENT: FACTURATION EMPLOYEES : Carl
DEPARTAMENT: FACTURATION EMPLOYEES : Albert
DEPARTAMENT: QUALITE EMPLOYEES : Augustin
DEPARTAMENT: QUALITE EMPLOYEES : Eduard
DEPARTAMENT: MARKETING EMPLOYEES : Antoine
DEPARTAMENT: MARKETING EMPLOYEES : Marie