Archives de catégorie : COBOL Exemple

Exemple – UNSTRING UPPER-CASE/LOWER-CASE

Voici un programme avec UNSTRING UPPER-CASE/LOWER-CASE :

 IDENTIFICATION DIVISION.
PROGRAM-ID. UNSTRING.
AUTHOR. LA COMMUNAUTE DU COBOL.
*----------------------------------------------------------
DATA DIVISION.
WORKING-STORAGE SECTION.

01 WS-AUXILIARES.
05 WS-NOM-COMPLET PIC X(30) VALUE "LA COMMUNAUTE DU COBOL".
05 WS-PREMIER PIC X(02).
05 WS-DEUXIEME PIC X(10).
05 WS-TROISIEME PIC X(02).

PROCEDURE DIVISION.
************************************
******** UNSTRING Normal *********
************************************
UNSTRING
WS-NOM-COMPLET DELIMITED BY SPACE
INTO WS-PREMIER WS-DEUXIEME WS-TROISIEME
END-UNSTRING

DISPLAY "UNSTRING Normal"
DISPLAY " "
DISPLAY "Premier = " WS-PREMIER.
DISPLAY "Deuxième = " WS-DEUXIEME.
DISPLAY "Troisième = " WS-TROISIEME.
DISPLAY " "

***********************************************
* UNSTRING combinant avec FUNCTION UPPER-CASE *
***********************************************
UNSTRING
FUNCTION UPPER-CASE (WS-NOM-COMPLET) DELIMITED BY SPACE
INTO WS-PREMIER WS-DEUXIEME WS-TROISIEME
END-UNSTRING

DISPLAY "UNSTRING combinant avec FUNCTION UPPER-CASE"
DISPLAY " "
DISPLAY "Premier = " WS-PREMIER.
DISPLAY "Deuxième = " WS-DEUXIEME.
DISPLAY "Troisième = " WS-TROISIEME.
DISPLAY " "

***********************************************
* UNSTRING combinant avec FUNCTION LOWER-CASE *
***********************************************
UNSTRING
FUNCTION LOWER-CASE (WS-NOM-COMPLET) DELIMITED BY SPACE
INTO WS-PREMIER WS-DEUXIEME WS-TROISIEME
END-UNSTRING

DISPLAY "UNSTRING combinant avec FUNCTION LOWER-CASE"
DISPLAY " "
DISPLAY "Premier = " WS-PREMIER.
DISPLAY "Deuxième = " WS-DEUXIEME.
DISPLAY "Troisième = " WS-TROISIEME.
DISPLAY " "

STOP RUN.

RESULTAT

UNSTRING Normal

Premier   = La
Deuxième  = Communaute
Troisième = Du

UNSTRING combinant la FUNCTION UPPER-CASE

Premier   = LA
Deuxième  = COMMUNAUTE
Troisième = DU

UNSTRING combinant la FUNCTION LOWER-CASE

Premier   = la
Deuxième  = communaute
Troisième = du

Exemple – INSPECT TALLYING REPLANCING

Voici un programme utilisant le INSPECT TALLYING REPLANCING :

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(014)  VALUE 'EFABDBCGABEFGG'.
    05  ITEM-2        PIC X(006)  VALUE 'BABABC'.
    05  ITEM-3        PIC X(004)  VALUE 'BBBC'.
    05  COMPTEUR-0    PIC 9(006)  VALUE ZEROES.
    05  COMPTEUR-1    PIC 9(006)  VALUE ZEROES.
    05  COMPTEUR-2    PIC 9(006)  VALUE ZEROES.
    05  COMPTEUR-3    PIC 9(006)  VALUE ZEROES.
    05  COMPTEUR-4    PIC 9(006)  VALUE ZEROES.

PROCEDURE DIVISION.

001-INIT.

Exemple 1

    INSPECT ITEM-1 TALLYING
            COMPTEUR-0 FOR ALL "AB", ALL "D"
            COMPTEUR-1 FOR ALL "BC"
            COMPTEUR-2 FOR LEADING "EF" 
            COMPTEUR-3 FOR LEADING "B" 
            COMPTEUR-4 FOR CHARACTERS

    INSPECT ITEM-1 REPLACING
            ALL "AB" BY "XY", "D" BY "X"
            ALL "BC" BY "VW"
            LEADING "EF" BY "TU" 
            LEADING "B" BY "S" 
            FIRST   "G" BY "R" 
            FIRST   "G" BY "P" 
            CHARACTERS BY "Z"

    DISPLAY 'ITEM-1     : ' ITEM-1
    DISPLAY 'COMPTEUR-0 : ' COMPTEUR-0  
    DISPLAY 'COMPTEUR-1 : ' COMPTEUR-1  
    DISPLAY 'COMPTEUR-2 : ' COMPTEUR-2  
    DISPLAY 'COMPTEUR-3 : ' COMPTEUR-3  
    DISPLAY 'COMPTEUR-4 : ' COMPTEUR-4  

* Resultat de test:

* ITEM-1     : TUXYXVWRXYZZPZ
* COMPTEUR-0 : 000003
* COMPTEUR-1 : 000001
* COMPTEUR-2 : 000001
* COMPTEUR-3 : 000000
* COMPTEUR-4 : 000005

Exemple 2

    MOVE ZEROES TO COMPTEUR-0 COMPTEUR-1 COMPTEUR-2 
                   COMPTEUR-3 COMPTEUR-4        
  
    INSPECT ITEM-2 TALLYING
            COMPTEUR-0 FOR ALL "AB", ALL "D"
            COMPTEUR-1 FOR ALL "BC"
            COMPTEUR-2 FOR LEADING "EF" 
            COMPTEUR-3 FOR LEADING "B" 
            COMPTEUR-4 FOR CHARACTERS

    INSPECT ITEM-2 REPLACING
            ALL "AB" BY "XY", "D" BY "X"
            ALL "BC" BY "VW"
            LEADING "EF" BY "TU" 
            LEADING "B" BY "S" 
            FIRST   "G" BY "R" 
            FIRST   "G" BY "P" 
            CHARACTERS BY "Z"

    DISPLAY 'ITEM-2     : ' ITEM-2
    DISPLAY 'COMPTEUR-0 : ' COMPTEUR-0  
    DISPLAY 'COMPTEUR-1 : ' COMPTEUR-1  
    DISPLAY 'COMPTEUR-2 : ' COMPTEUR-2  
    DISPLAY 'COMPTEUR-3 : ' COMPTEUR-3  
    DISPLAY 'COMPTEUR-4 : ' COMPTEUR-4  

* Resultat de test:

* ITEM-2     : SXYXYZ
* COMPTEUR-0 : 000002
* COMPTEUR-1 : 000000
* COMPTEUR-2 : 000000
* COMPTEUR-3 : 000001
* COMPTEUR-4 : 000001

Exemple 3

    MOVE ZEROES TO COMPTEUR-0 COMPTEUR-1 COMPTEUR-2 
                   COMPTEUR-3 COMPTEUR-4        
  
    INSPECT ITEM-3 TALLYING
            COMPTEUR-0 FOR ALL "AB", ALL "D"
            COMPTEUR-1 FOR ALL "BC"
            COMPTEUR-2 FOR LEADING "EF" 
            COMPTEUR-3 FOR LEADING "B" 
            COMPTEUR-4 FOR CHARACTERS

    INSPECT ITEM-3 REPLACING
            ALL "AB" BY "XY", "D" BY "X"
            ALL "BC" BY "VW"
            LEADING "EF" BY "TU" 
            LEADING "B" BY "S" 
            FIRST   "G" BY "R" 
            FIRST   "G" BY "P" 
            CHARACTERS BY "Z"

    DISPLAY 'ITEM-3     : ' ITEM-3
    DISPLAY 'COMPTEUR-0 : ' COMPTEUR-0  
    DISPLAY 'COMPTEUR-1 : ' COMPTEUR-1  
    DISPLAY 'COMPTEUR-2 : ' COMPTEUR-2  
    DISPLAY 'COMPTEUR-3 : ' COMPTEUR-3  
    DISPLAY 'COMPTEUR-4 : ' COMPTEUR-4  

* Resultat de test:

* ITEM-3     : SSVW
* COMPTEUR-0 : 000000
* COMPTEUR-1 : 000001
* COMPTEUR-2 : 000000
* COMPTEUR-3 : 000002
* COMPTEUR-4 : 000000

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