Tous les articles par Mr COBOL

Exemple – INSPECT TALLYING

Voici un programme utilisant le INSPECT TALLYING :

IDENTIFICATION DIVISION.
PROGRAM-ID.  INSPECT.
AUTHOR.      LA COMMUNAUTE DU COBOL.

ENVIRONMENT DIVISION.                                            
CONFIGURATION SECTION.                                           
SPECIAL-NAMES.                                                   
    DECIMAL-POINT IS COMMA. 

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-AUXILIARES.
    05  CHAMP-1         PIC X(006)   VALUE '000670'.
    05  CHAMP-2         PIC X(006)   VALUE '123450'.
    05  CHAMP-3         PIC X(006)   VALUE '007800'.
    05  COMPTEUR-1      PIC 9(006)   VALUE ZEROES.
    05  COMPTEUR-2      PIC 9(006)   VALUE ZEROES.
    05  COMPTEUR-3      PIC 9(006)   VALUE ZEROES.

PROCEDURE DIVISION.

001-INICIO.

    INSPECT CHAMP-1 TALLYING COMPTEUR-1 FOR ALL ZEROES

    INSPECT CHAMP-2 TALLYING COMPTEUR-2 FOR CHARACTERS
            BEFORE INITIAL ZEROES 

    INSPECT CHAMP-3 TALLYING COMPTEUR-3 FOR LEADING ZEROES

    DISPLAY 'COMPTEUR-1 : ' COMPTEUR-1  
    DISPLAY 'COMPTEUR-2 : ' COMPTEUR-2  
    DISPLAY 'COMPTEUR-3 : ' COMPTEUR-3  

    STOP RUN.

* Resultat de test:

* COMPTEUR-1 : 000004
* COMPTEUR-2 : 000005
* COMPTEUR-3 : 000002

Exemple – INSPECT FUNCTION REVERSE

Voici plusieurs exemples de programme utilisant le INSPECT FUNCTION REVERSE :

Exemple 1

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIN       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(30)  VALUE 'LA COMMUNAUTE'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.

COMPUTE WS-RESULTAT = FUNCTION LENGTH (WS-CHAMP)
MOVE 0 TO WS-FIN WS-TAILLE
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULTAT
     IF WS-CHAMP(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAILLE
     END-IF
END-PERFORM

DISPLAY 'Nombre de caractères dans le champ'
DISPLAY 'WS-TAILLE   - ' WS-TAILLE.
STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif 
WS-TAILLE-1 - 000000017

Nombre de caractères dans le champ
WS-TAILLE   - 000000012

Exemple 2

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIN       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(50)  VALUE 'LA COMMUNAUTE DU COBOL'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif  '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.

COMPUTE WS-RESULTAT = FUNCTION LENGTH (WS-CHAMP)
MOVE 0 TO WS-FIN WS-TAILLE
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULTAT
     IF WS-CHAMP(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAILLE
     END-IF
END-PERFORM

DISPLAY 'Nombre de caractères dans le champ'
DISPLAY 'WS-TAILLE   - ' WS-TAILLE.
STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif  
WS-TAILLE-1 - 000000028

Nombre de caractères dans le champ
WS-TAILLE   - 000000020

Exemple 3

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIN       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(50)  VALUE 'LA C O M M U N A U T E DU COBOL'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif  '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.

COMPUTE WS-RESULT = FUNCTION LENGTH (WS-CHAMP)
MOVE 0 TO WS-FIN WS-TAILLE
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULT
     IF WS-CHAMP(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAILLE
     END-IF
END-PERFORM

DISPLAY 'Nombre de caractères dans le champ'
DISPLAY 'WS-TAILLE   - ' WS-TAILLE.
STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif 
WS-TAILLE-1 - 000000019

Nombre de caractères dans le champ
WS-TAILLE   - 000000020

Exemple 4

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIN       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(50)  VALUE 'LA COMM DU COBOL'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif  '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.

COMPUTE WS-RESULTAT = FUNCTION LENGTH (WS-CHAMP)
MOVE 0 TO WS-FIN WS-TAILLE
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULTAT
     IF WS-CHAMP(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAILLE
     END-IF
END-PERFORM

DISPLAY 'Nombre de caractères dans le champ'
DISPLAY 'WS-TAILLE   - ' WS-TAILLE.
STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif 
WS-TAILLE-1 - 000000034

Nombre de caractères dans le champ
WS-TAILLE   - 000000013

Exemple 5

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(30)  VALUE 'LA COMMUNAUTE        '.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif  '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.
COMPUTE WS-RESULTAT = FUNCTION LENGTH (WS-CHAMP)
COMPUTE WS-RESULTAT = WS-RESULTAT - WS-TAILLE-1
DISPLAY 'Quantité de données jusqu'au dernier caractère significatif' 
DISPLAY 'WS-RESULTAT  - ' WS-RESULTAT
DISPLAY 'WS-CHAMP     - ' WS-CAMPO  (1:WS-RESULT)

STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif  
WS-TAILLE-1 - 000000017

Quantité de données jusqu'au dernier caractère significatif 
WS-RESULTAT  - 000000013
WS-CHAMP     - LA COMMUNAUTE

Exemple – INSPECT REPLACING

Voici un programme utilisant le INSPECT REPLACING :

IDENTIFICATION DIVISION.
PROGRAM-ID.  INSPECT.
AUTHOR.      LA COMMUNAUTE DU COBOL.

ENVIRONMENT DIVISION.                                            
CONFIGURATION SECTION.                                           
SPECIAL-NAMES.                                                   
    DECIMAL-POINT IS COMMA. 

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-AUXILIARES.
    05  DATE-JOUR        PIC X(010)   VALUE '06-03-1951'.
    05  NUMERO-1         PIC X(008)   VALUE '44 21 11'.
    05  NUMERO-2         PIC X(006)   VALUE '442111'.
    05  NUMERO-3         PIC X(006)   VALUE '112111'.
    05  NUMERO-4         PIC X(006)   VALUE 'ABCXYZ'.

PROCEDURE DIVISION.

001-INIT.

    INSPECT DATE-JOUR REPLACING ALL '-' BY '/'                
    DISPLAY 'DATE-JOUR ' DATE-JOUR 
	 
    INSPECT NUMERO-1 REPLACING ALL SPACES BY '-'
    DISPLAY 'NUMERO-1  ' NUMERO-1 

    INSPECT NUMERO-2 REPLACING LEADING '4' BY '5'
    DISPLAY 'NUMERO-2  ' NUMERO-2 

    INSPECT NUMERO-3 REPLACING CHARACTERS BY '3'
            BEFORE INITIAL '2'
    DISPLAY 'NUMERO-3  ' NUMERO-3 

    INSPECT NUMERO-4 REPLACING FIRST 'X' BY 'Y'
    DISPLAY 'NUMERO-4  ' NUMERO-4 

    STOP RUN.

* Resultat de test:

* DATE-JOUR 06/03/1951
* NUMERO-1  44-21-11
* NUMERO-2  552111
* NUMERO-3  332111
* NUMERO-4  ABCYYZ

Exemple – INSPECT CONVERTING

Voici un programme utilisant le INSPECT CONVERTING :

IDENTIFICATION DIVISION.
PROGRAM-ID.  INSPECT.
AUTHOR.      LA COMMUNAUTE DU COBOL.

ENVIRONMENT DIVISION.                                            
CONFIGURATION SECTION.                                           
SPECIAL-NAMES.                                                   
    DECIMAL-POINT IS COMMA. 

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-AUXILIARES.
    05  ITEM-1          PIC X(016) VALUE 'AC"AEBDFBCD#AB"D'. 
    05  ITEM-2          PIC X(026) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ".

PROCEDURE DIVISION.

001-INIT.

    DISPLAY "ITEM-1 AVANT  : " ITEM-1
    INSPECT ITEM-1 CONVERTING
            "ABCD" TO "XYZX" AFTER QUOTE BEFORE "#"
    DISPLAY "ITEM-1 APRES  : " ITEM-1

    DISPLAY "ITEM-2 AVANT  : " ITEM-2
    INSPECT ITEM-2 CONVERTING "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                           TO "abcdefghijklmnopqrstuvwxyz"
    DISPLAY "ITEM-2 APRES  : " ITEM-2
    STOP RUN.

* Resultat de test:

* ITEM-1 AVANT  : AC"AEBDFBCD#AB"D
* ITEM-1 APRES  : AC"XEYXFYZX#AB"D

* ITEM-2 AVANT  : ABCDEFGHIJKLMNOPQRSTUVWXYZ
* ITEM-2 APRES  : abcdefghijklmnopqrstuvwxyz

Exemple – INITIALIZE (Partie 2)

Voici un programme utilisant INITIALIZE :

IDENTIFICATION DIVISION.
PROGRAM-ID. INITIALIZE.
AUTHOR.     LA COMMUNAUTE DU COBOL

ENVIRONMENT DIVISION.                                            
CONFIGURATION SECTION.                                           
SPECIAL-NAMES.                                                   
    DECIMAL-POINT IS COMMA. 

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-REGISTRE.
    05  VALEUR-1         PIC 9(009). 
    05  VALEUR-2         PIC X(009).
    05  VALEUR-3         PIC 9(009)V99.

PROCEDURE DIVISION.

TEST 01

    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY SPACES
                              NUMERIC BY ZEROES 
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    000000000
VALEUR-2             
VALEUR-3    000000000,00

TEST 02

    MOVE 123456789  TO VALEUR-1
    MOVE "TESTE 01" TO VALEUR-2
    MOVE 9999,99    TO VALEUR-3
    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY SPACES
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    123456789
VALEUR-2             
VALEUR-3    000009999,99

TEST 03

    MOVE 123456789  TO VALEUR-1
    MOVE "TESTE 03" TO VALEUR-2
    INITIALIZE WS-REGISTRE
               REPLACING NUMERIC BY ZEROES
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    000000000
VALEUR-2    TESTE 03 
VALEUR-3    000000000,00

TEST 04

    MOVE 123456789  TO VALEUR-1
    MOVE 9999       TO VALEUR-3
    INITIALIZE WS-REGISTRE
               REPLACING NUMERIC BY ZEROES
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    000000000
VALEUR-2    TESTE 03 
VALEUR-3    000000000,00

TEST 05

    MOVE 123456789  TO VALEUR-1
    MOVE "TESTE 04" TO VALEUR-2
    MOVE 9999       TO VALEUR-3
    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY SPACES
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    123456789
VALEUR-2             
VALEUR-3    000009999,00

TEST 06

    MOVE 123456789  TO VALEUR-1
    MOVE "TESTE 04" TO VALEUR-2
    MOVE 9999       TO VALEUR-3
    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY ALL "X"
                              NUMERIC BY ALL "9"
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    999999999
VALEUR-2    XXXXXXXXX
VALEUR-3    999999999,00

TEST 07

    MOVE 123456789  TO VALEUR-1
    MOVE "TESTE 04" TO VALEUR-2
    MOVE 9999       TO VALEUR-3
    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY  "X"
                              NUMERIC BY 9
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    000000009
VALEUR-2    X        
VALEUR-3    000000009,00

TEST 08

    MOVE 123456789  TO VALEUR-1
    MOVE "TESTE 04" TO VALEUR-2
    MOVE 9999       TO VALEUR-3
    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY  "X"
                              NUMERIC BY 9,99
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    000000009
VALEUR-2    X        
VALEUR-3    000000009,99

TEST 09

    MOVE 123456789  TO VALEUR-1
    MOVE "TESTE 04" TO VALEUR-2
    MOVE 8888       TO VALEUR-3
    INITIALIZE VALEUR-2 REPLACING ALPHANUMERIC BY "TESTE 09"
    INITIALIZE VALEUR-3 REPLACING NUMERIC      BY 0,99
    DISPLAY "VALEUR-1    " VALEUR-1
    DISPLAY "VALEUR-2    " VALEUR-2
    DISPLAY "VALEUR-3    " VALEUR-3

Resultat de test:

VALEUR-1    123456789
VALEUR-2    TESTE 09 
VALEUR-3    000000000,99
STOP RUN.

Exemple – INITIALIZE (Partie 1)

Voici un programme utilisant INITIALIZE :

IDENTIFICATION DIVISION.
PROGRAM-ID.  INITIALIZE.
AUTHOR.      LA COMMUNAUTE DU COBOL.

ENVIRONMENT DIVISION.                                            
CONFIGURATION SECTION.                                           
SPECIAL-NAMES.                                                   
    DECIMAL-POINT IS COMMA. 

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-REGISTRE.
    05  CHAMPS-01       PIC X(015).
    05  CHAMPS-02       PIC 9(009)V9(002).
    05  CHAMPS-03       PIC X(001).
    05  CHAMPS-04       PIC 9(005)V9(005).
    05  FILLER          PIC X(009) VALUE ' DU COBOL'.


PROCEDURE DIVISION.

001-INIT.

Exemple 1

    MOVE "LA COMMUNAUTE " TO CHAMPS-01
    MOVE 1234,67          TO CHAMPS-02
    MOVE "Y"              TO CHAMPS-03 
    MOVE 6789,12345       TO CHAMPS-04    

    DISPLAY "AVANT        " 
    DISPLAY "WS-REGISTRE  " WS-REGISTRE 
    DISPLAY "CHAMPS-01    " CHAMPS-01
    DISPLAY "CHAMPS-02    " CHAMPS-02
    DISPLAY "CHAMPS-03    " CHAMPS-03
    DISPLAY "CHAMPS-04    " CHAMPS-04
 
    INITIALIZE WS-REGISTRE

    DISPLAY "APRES       " 
    DISPLAY "WS-REGISTRE " WS-REGISTRE
    DISPLAY "CHAMPS-01    " CHAMPS-01
    DISPLAY "CHAMPS-02    " CHAMPS-02
    DISPLAY "CHAMPS-03    " CHAMPS-03
    DISPLAY "CHAMPS-04    " CHAMPS-04

* Resultat de test:

* AVANT
* WS-REGISTRE LA COMMUNAUTE  00000123467Y0678912345 DU COBOL
* CHAMPS-01    LA COMMUNAUTE      
* CHAMPS-02    000001234,67
* CHAMPS-03    Y
* CHAMPS-04    06789,12345

* APRES 
* WS-REGISTRE               00000000000 0000000000 DU COBOL
* CHAMPS-01                        
* CHAMPS-02    000000000,00
* CHAMPS-03     
* CHAMPS-04    00000,00000

Observation:

Les champs définis comme FILLER ne subissent aucune action de la commande INITIALIZE, c'est-à-dire :

    05 FILLER PIC X(009) VALEUR ' DU COBOL'. Restera avec le contenu de ' DU COBOL'

Exemple 2

    MOVE "LA COMMUNAUTE"  TO CHAMPS-01
    MOVE 1234,67          TO CHAMPS-02
    MOVE "Y"              TO CHAMPS-03 
    MOVE 6789,12345       TO CHAMPS-04    

    DISPLAY "AVANT        " 
    DISPLAY "WS-REGISTRE  " WS-REGISTRE 
    DISPLAY "CHAMPS-01    " CHAMPS-01
    DISPLAY "CHAMPS-02    " CHAMPS-02
    DISPLAY "CHAMPS-03    " CHAMPS-03
    DISPLAY "CHAMPS-04    " CHAMPS-04

    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY SPACES
                              NUMERIC BY ZEROES 

    DISPLAY "APRES        " 
    DISPLAY "WS-REGISTRE  " WS-REGISTRE 
    DISPLAY "CHAMPS-01    " CHAMPS-01
    DISPLAY "CHAMPS-02    " CHAMPS-02
    DISPLAY "CHAMPS-03    " CHAMPS-03
    DISPLAY "CHAMPS-04    " CHAMPS-04

* Resultat de test:

* AVANT        
* WS-REGISTRE  LA COMMUNAUTE  00000123467Y0678912345 DU COBOL
* CHAMPS-01    LA COMMUNAUTE    
* CHAMPS-02    000001234,67
* CHAMPS-03    Y
* CHAMPS-04    06789,12345

* APRES       
* WS-REGISTRE                 00000000000 0000000000 DU COBOL
* CHAMPS-01                        
* CHAMPS-02    000000000,00
* CHAMPS-03     
* CHAMPS-04    00000,00000

Observation:

Les champs définis comme FILLER ne subissent aucune action de la commande INITIALIZE, c'est-à-dire :

    05 FILLER PIC X(009) VALEUR ' DU COBOL'. Restera avec le contenu de ' DU COBOL'

Exemple 3

    MOVE "LA COMMUNAUTE"  TO CHAMPS-01
    MOVE 1234,67          TO CHAMPS-02
    MOVE "Y"              TO CHAMPS-03 
    MOVE 6789,12345       TO CHAMPS-04    

    DISPLAY "AVANT        " 
    DISPLAY "WS-REGISTRE  " WS-REGISTRE 
    DISPLAY "CHAMPS-01    " CHAMPS-01
    DISPLAY "CHAMPS-02    " CHAMPS-02
    DISPLAY "CHAMPS-03    " CHAMPS-03
    DISPLAY "CHAMPS-04    " CHAMPS-04

    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY "X" 
                              NUMERIC BY "9"  

    DISPLAY "APRES        " 
    DISPLAY "WS-REGISTRE  " WS-REGISTRE 
    DISPLAY "CHAMPS-01    " CHAMPS-01
    DISPLAY "CHAMPS-02    " CHAMPS-02
    DISPLAY "CHAMPS-03    " CHAMPS-03
    DISPLAY "CHAMPS-04    " CHAMPS-04

* Resultat de test:

* AVANT        
* WS-REGISTRE  LA COMMUNAUTE  00000123467Y0678912345 DU COBOL
* CHAMPS-01    LA COMMUNAUTE    
* CHAMPS-02    000001234,67
* CHAMPS-03    Y
* CHAMPS-04    06789,12345

* APRES       
* WS-REGISTRE  X              00000000900X0000900000 DU COBOL
* CHAMPS-01    X                    
* CHAMPS-02    000000009,00
* CHAMPS-03    X 
* CHAMPS-04    00009,00000

Observation:

Les champs définis comme FILLER ne subissent aucune action de la commande INITIALIZE, c'est-à-dire :

    05 FILLER PIC X(009) VALEUR ' DU COBOL'. Restera avec le contenu de ' DU COBOL'

Exemple 4

    MOVE "LA COMMUNAUTE"  TO CHAMPS-01
    MOVE 1234,67          TO CHAMPS-02
    MOVE "Y"              TO CHAMPS-03 
    MOVE 6789,12345       TO CHAMPS-04    

    DISPLAY "AVANT        " 
    DISPLAY "WS-REGISTRE  " WS-REGISTRE 
    DISPLAY "CHAMPS-01    " CHAMPS-01
    DISPLAY "CHAMPS-02    " CHAMPS-02
    DISPLAY "CHAMPS-03    " CHAMPS-03
    DISPLAY "CHAMPS-04    " CHAMPS-04

    INITIALIZE WS-REGISTRE
               REPLACING ALPHANUMERIC BY ALL "X" 
                              NUMERIC BY ALL "9"   

    DISPLAY "APRES        " 
    DISPLAY "WS-REGISTRE  " WS-REGISTRE 
    DISPLAY "CHAMPS-01    " CHAMPS-01
    DISPLAY "CHAMPS-02    " CHAMPS-02
    DISPLAY "CHAMPS-03    " CHAMPS-03
    DISPLAY "CHAMPS-04    " CHAMPS-04

* Resultat de test:

* AVANT        
* WS-REGISTRE  LA COMMUNAUTE  00000123467Y0678912345 DU COBOL
* CHAMPS-01    LA COMMUNAUTE    
* CHAMPS-02    000001234,67
* CHAMPS-03    Y
* CHAMPS-04    06789,12345

* APRES       
*A WS-REGISTRE  XXXXXXXXXXXXXXX99999999900X9999900000DU COBOL
* CHAMPS-01    XXXXXXXXXXXXXXX
* CHAMPS-02    999999999,00
* CHAMPS-03    X
* CHAMPS-04    99999,00000
* CHAMPS-04    00009,00000

Observation:

Les champs définis comme FILLER ne subissent aucune action de la commande INITIALIZE, c'est-à-dire :

    05 FILLER PIC X(009) VALEUR ' DU COBOL'. Restera avec le contenu de ' DU COBOL'

Exemple – IF

Voici un programme utilisant le IF :

IDENTIFICATION DIVISION.
PROGRAM-ID.  IF.
AUTHOR.      LA COMMUNAUTE DU COBOL.

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-VARIAVEIS.
    05  NUM1           PIC 9(001)  VALUE ZEROES.
    05  NUM2           PIC 9(001)  VALUE ZEROES.
    05  RESULT         PIC 9(002)  VALUE ZEROES.
    05  OPERATEUR      PIC X(001)  VALUE SPACES.

PROCEDURE DIVISION.

001-INIT.

    PERFORM 3 TIMES
       DISPLAY "Inserer le premier numero  : " WITH NO ADVANCING
       ACCEPT NUM1
       DISPLAY "Inserer le deuxieme numero : " WITH NO ADVANCING
       ACCEPT NUM2
       DISPLAY "Inserer un operateur (+ ou *) : " WITH NO ADVANCING
       ACCEPT OPERATEUR

       IF OPERATEUR = "+" THEN
          ADD NUM1 NUM2 GIVING RESULT
       END-IF

       IF OPERATEUR = "*" THEN
          MULTIPLY NUM1 BY NUM2 GIVING RESULT
       END-IF

       DISPLAY "Le resultat est = ", RESULT
    END-PERFORM.

    STOP RUN.

Exemple – DIVIDE

Voici des programmes utilisant le DIVIDE :

IDENTIFICATION DIVISION.
PROGRAM-ID.  DIVIDE.
AUTHOR.      LA COMMUNAUTE DU COBOL.

ENVIRONMENT DIVISION.                                            
CONFIGURATION SECTION.                                           
SPECIAL-NAMES.                                                   
    DECIMAL-POINT IS COMMA. 

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-AUXILIARES.
    05  VALEUR-1      PIC 9(009)V99    VALUE ZEROES. 
    05  VALEUR-2      PIC 9(009)V99    VALUE ZEROES. 
    05  VALEUR-3      PIC 9(009)V99    VALUE ZEROES. 
    05  VALEUR-4      PIC 9(009)       VALUE ZEROES. 
    05  VALEUR-5      PIC 9(009)       VALUE ZEROES. 
    05  VALEUR-6      PIC 9(009)       VALUE ZEROES. 
    05  VALEUR-7      PIC 9(009)       VALUE ZEROES. 

PROCEDURE DIVISION.

001-INIT.

Exemple 1

    MOVE 5892,00 TO VALEUR-1
    DIVIDE 5 INTO VALEUR-1	
    DISPLAY "VALEUR-1 " VALEUR-1

* Resultat de test:

* VALEUR-1 000001178,40

Exemple 2

    MOVE 35,00 TO VALEUR-1
    MOVE 10,00 TO VALEUR-2
    MOVE  8,20 TO VALEUR-3 
    DIVIDE VALEUR-1 BY VALEUR-2 GIVING VALEUR-3	
    DISPLAY "VALEUR-1 " VALEUR-1
    DISPLAY "VALEUR-2 " VALEUR-2
    DISPLAY "VALEUR-3 " VALEUR-3

* Resultat de test:

* VALEUR-1 000000035,00
* VALEUR-2 000000010,00
* VALEUR-3 000000003,50

Exemple 3

    MOVE 1250,00 TO VALEUR-1
    MOVE ZEROES  TO VALEUR-2
    DIVIDE VALEUR-1 BY VALEUR-2 GIVING VALEUR-2 ON SIZE ERROR
           MOVE ZEROES TO VALEUR-1	
    DISPLAY "VALEUR-1 " VALEUR-1
    DISPLAY "VALEUR-2 " VALEUR-2

* Resultat de test:

* VALEUR-1 000000000,00
* VALEUR-2 000000000,00

Exemple 4

    MOVE 28,00 TO VALEUR-1
    MOVE 10,00 TO VALEUR-2
    MOVE  4,00 TO VALEUR-3 
    DIVIDE VALEUR-1 BY VALEUR-2 GIVING VALEUR-3 ROUNDED	
    DISPLAY "VALEUR-1 " VALEUR-1
    DISPLAY "VALEUR-2 " VALEUR-2
    DISPLAY "VALEUR-3 " VALEUR-3

* Resultat de test:

* VALEUR-1 000000028,00
* VALEUR-2 000000010,00
* VALEUR-3 000000002,80

Exemple 5

    MOVE 28 TO VALEUR-4
    MOVE 10 TO VALEUR-5
    MOVE  4 TO VALEUR-6 
    DIVIDE VALEUR-4 BY VALEUR-5 GIVING VALEUR-6 ROUNDED	
    DISPLAY "VALEUR-4 " VALEUR-4
    DISPLAY "VALEUR-5 " VALEUR-5
    DISPLAY "VALEUR-6 " VALEUR-6

* Resultat de test:

* VALEUR-4 000000028
* VALEUR-5 000000010
* VALEUR-6 000000003

Exemple 6

    MOVE 28 TO VALEUR-4
    MOVE 10 TO VALEUR-5
    MOVE  4 TO VALEUR-6 
    DIVIDE VALEUR-4 BY VALEUR-5 GIVING VALEUR-6 REMAINDER VALEUR-7	
    DISPLAY "VALEUR-4 " VALEUR-4
    DISPLAY "VALEUR-5 " VALEUR-5
    DISPLAY "VALEUR-6 " VALEUR-6
    DISPLAY "VALEUR-7 " VALEUR-7

* Resultat de test:

* VALEUR-4 000000028
* VALEUR-5 000000010
* VALEUR-6 000000002
* VALEUR-7 000000008

Exemple – FONCTION SUM

Voici des exemples de programme utilisant SUM :

IDENTIFICATION DIVISION.
PROGRAM-ID.  CALCULO01.
AUTHOR.      LA COMMUNAUTE DU COBOL.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  VALEUR-1       PIC 9(009)       VALUE 1. 
    05  VALEUR-2       PIC 9(009)       VALUE 2. 
    05  VALEUR-3       PIC 9(009)       VALUE 3. 
    05  VALEUR-4       PIC 9(009)       VALUE 4. 
    05  VALEUR-A       PIC 9(009)       VALUE ZEROES. 

PROCEDURE DIVISION.

001-INIT.

Exemple 1

    MOVE 100 TO VALEUR-A    
    MOVE FUNCTION SUM(VALEUR-1 VALEUR-2 VALEUR-3 VALEUR-4) TO VALEUR-A
 
    DISPLAY "VALEUR-1 ...... " VALEUR-1  
    DISPLAY "VALEUR-2 ...... " VALEUR-2  
    DISPLAY "VALEUR-3 ...... " VALEUR-3  
    DISPLAY "VALEUR-4 ...... " VALEUR-4  
    DISPLAY "VALEUR-A ...... " VALEUR-A

* Resultat de test:

VALEUR-1 ...... 000000001
VALEUR-2 ...... 000000002
VALEUR-3 ...... 000000003
VALEUR-4 ...... 000000004
VALEUR-A ...... 000000010

Exemple 2

    MOVE 100 TO VALEUR-A    
    COMPUTE VALEUR-A = FUNCTION SUM(VALEUR-1 VALEUR-2 VALEUR-3 VALEUR-4 VALEUR-A)
 
    DISPLAY "VALEUR-1 ...... " VALEUR-1  
    DISPLAY "VALEUR-2 ...... " VALEUR-2  
    DISPLAY "VALEUR-3 ...... " VALEUR-3  
    DISPLAY "VALEUR-4 ...... " VALEUR-4  
    DISPLAY "VALEUR-A ...... " VALEUR-A

* Resultat de test:

VALEUR-1 ...... 000000001
VALEUR-2 ...... 000000002
VALEUR-3 ...... 000000003
VALEUR-4 ...... 000000004
VALEUR-A ...... 000000110

    STOP RUN.

Exemple – COMPUTE

Voici des exemple de programme utilisant COMPUTE :

IDENTIFICATION DIVISION.
PROGRAM-ID.  COMPUTE.
AUTHOR.      LA COMMUNAUTE DU COBOL.

DATA DIVISION.
WORKING-STORAGE SECTION.

01  WS-AUXILIARES.
    05  VALEUR-1      PIC 9(009)         VALUE ZEROES. 
    05  VALEUR-2      PIC 9(009)         VALUE ZEROES. 
    05  VALEUR-3      PIC 9(009)         VALUE ZEROES. 
    05  VALEUR-4      PIC 9(009)V9(002)  VALUE ZEROES. 
    05  VALEUR-5      PIC S9(009)        VALUE ZEROES. 
    05  VENTES        PIC 9(009)         VALUE ZEROES. 
    05  QUANTITE      PIC 9(009)         VALUE ZEROES. 

PROCEDURE DIVISION.

001-INIT.

Exemple 1

    MOVE 10 TO QUANTITE
    MOVE 09 TO VALEUR-1
    COMPUTE VENTES  = QUANTITE * VALEUR-1 / 5	

    DISPLAY "QUANTITE     " QUANTITE  
    DISPLAY "VALEUR-1     " VALEUR-1  
    DISPLAY "VENTES       " VENTES  

* Resultat du test:

* QUANTITE     000000010
* VALEUR-1     000000009
* VENTES       000000018

Exemple 2

    MOVE 05 TO VALEUR-1
    DISPLAY "VALEUR-1 AVANT  " VALEUR-1
    COMPUTE VALEUR-1 = VALEUR-1 + 1  
    DISPLAY "VALEUR-1 APRÈS " VALEUR-1
	
* Resultat du test:

* VALEUR-1 AVANT  000000005
* VALEUR-1 APRÈS  000000006

Exemple 3

    MOVE 05 TO VALEUR-1
    MOVE 15 TO VALEUR-2
    COMPUTE VALEUR-3 = VALEUR-1 - VALEUR-2 
    DISPLAY "VALEUR-1        " VALEUR-1  
    DISPLAY "VALEUR-2        " VALEUR-2  
    DISPLAY "VALEUR-3        " VALEUR-3  

* Resultat du test:

* VALEUR-1        000000005
* VALEUR-2        000000015
* VALEUR-3        000000010

Exemple 4

    MOVE 05 TO VALEUR-1
    MOVE 15 TO VALEUR-2
    COMPUTE VALEUR-3 = VALEUR-1 * VALEUR-2
    DISPLAY "VALEUR-1        " VALEUR-1  
    DISPLAY "VALEUR-2        " VALEUR-2  
    DISPLAY "VALEUR-3        " VALEUR-3  

* Resultat du test:

* VALEUR-1        000000005
* VALEUR-2        000000015
* VALEUR-3        000000075

Exemple 5

    MOVE 05 TO VALEUR-1
    MOVE 15 TO VALEUR-2
    COMPUTE VALEUR-3 = VALEUR-1 + VALEUR-2 + 50	
    DISPLAY "VALEUR-1        " VALEUR-1  
    DISPLAY "VALEUR-2        " VALEUR-2  
    DISPLAY "VALEUR-3        " VALEUR-3  

* Resultat du test:

* VALEUR-1        000000005
* VALEUR-2        000000015
* VALEUR-3        000000070

Exemple 6

    MOVE 05 TO VALEUR-1
    DISPLAY "VALEUR-1 AVANT  " VALEUR-1
    COMPUTE VALEUR-1 = VALEUR-1 - 1  
    DISPLAY "VALEUR-1 APRES  " VALEUR-1

* Resultat du test:

* VALEUR-1 AVANT  000000005
* VALEUR-1 APRES  000000004

Exemple 7

    COMPUTE VALEUR-1 VALEUR-2 VALEUR-3 = 2 * 3	
    DISPLAY "VALEUR-1        " VALEUR-1  
    DISPLAY "VALEUR-2        " VALEUR-2  
    DISPLAY "VALEUR-3        " VALEUR-3  

* Resultat du test:

* VALEUR-1        000000006
* VALEUR-2        000000006
* VALEUR-3        000000006

Exemple 8

    COMPUTE VALEUR-1 = 33 - 2 * (5 + 8 / 2 - (4 * 6 - 20 * (9 - 8)))

* Resultat du test:

  33 - 2 * (5 + 8 / 2 - (4 * 6 - 20 * (9 - 8)))
= 33 - 2 * (5 + 8 / 2 - 4)
= 33 - 2 * (5 + 4 - 4)
= 33 - 2 * 5
= 33 - 10

* VALEUR-1        000000023

Exemple 9

    COMPUTE VALEUR-1 = 63 - 2 * (5 + (8 / 2 - 4 * 6 - 20 * (19 - 17)))

* Resultat du test:

= 63 - 2 * (5 + (8 / 2 - 4 * 6 - 20 * 2))
= 63 - 2 * (5 + (4 - 24 - 40))
= 63 - 2 * (5 + (-60))
= 63 - 2 * (-55)
= 63 + 110

* VALEUR-1        000000173

Exemple 10

    COMPUTE VALEUR-5 = -3 * (4 - 6) - 2 * (5 * (3 - 5 * (-7 + 5) - 3))

* Resultat du test:

= -3 * (-2) - 2 * (5 * (3 - 5 * (-2) - 3))
=  6 - 2 * (5 * (3 + 10 - 3))
=  6 - 2 * (5 * 10)
=  6 - 2 * 50
=  6 - 100
= -94

* VALEUR-5       -000000094

Exemple 11

    MOVE 05 TO VALEUR-1
    MOVE 15 TO VALEUR-2
    COMPUTE VALEUR-2 ROUNDED = VALEUR-1 / 5	
    DISPLAY "VALEUR-1        " VALEUR-1  
    DISPLAY "VALEUR-2        " VALEUR-2  

* Resultat du test:

* VALEUR-1 AVANT  000000005
* VALEUR-2 AVANT  000000015

* VALEUR-1 APRES  000000005
* VALEUR-2 APRES  000000001

Exemple 12

    MOVE 11 TO VALEUR-1
    MOVE 03 TO VALEUR-2
    COMPUTE VALEUR-4 ROUNDED = VALEUR-1 / VALEUR-2	
    DISPLAY "VALEUR-1        " VALEUR-1  
    DISPLAY "VALEUR-2        " VALEUR-2  
    DISPLAY "VALEUR-4        " VALEUR-4  

* Resultat du test:

* VALEUR-1        000000011
* VALEUR-2        000000003
* VALEUR-4        000000003.67 (3.66666666666)

Exemple 13

    MOVE 10 TO VALEUR-1
    MOVE 03 TO VALEUR-2
    COMPUTE VALEUR-4 ROUNDED = VALEUR-1 / VALEUR-2	
    DISPLAY "VALEUR-1        " VALEUR-1  
    DISPLAY "VALEUR-2        " VALEUR-2  
    DISPLAY "VALEUR-4        " VALEUR-4  

* Resultat du test:

* VALEUR-1        000000010
* VALEUR-2        000000003
* VALEUR-4        000000003.33 (3.33333333333)