Archives par mot-clé : INITIALIZE

8.4 L’INSTRUCTION INITIALIZE

Syntaxe de INITIALIZE:

Identifier-1 est la variable ou la structure qui reçoit l’initialisation. Elle peut être tout ou partie de table mais ne peut jamais contenir les options DEPENDING ON POUR UN OCCURS. Les index sont interdits.

Identifier-2 ou litéral-1 représente le contenu d’initialisation, par défaut les numériques et les numériques édités sont initialisés à 0 et les alphabétiques les alphanumériques et les alphanumériques édités à blancs.

Si REPLACING est utilisé, identifier-2 ou litéral-1 doivent être compatible avec la catégorie indiquée (en respectant les règles du MOVE).

Lorsqu’une catégorie est indiquée après un REPACING, alors seulement les variables appartenant à identifier-1 et reprisent dans cette catégorie sont initialisées.

Exemple :
INITIALIZE VAR1.
INITIALIZE STRUCTURE1.
INITIALIZE VAR2 BY "*".

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'