Exemple – UNSTRING

Programme utilisant le UNSTRING :

IDENTIFICATION DIVISION.
PROGRAM-ID.  UNSTRING.
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 SPACES. 
    05  CHAMP-2             PIC X(006)       VALUE SPACES. 
    05  CHAMP-3             PIC X(006)       VALUE SPACES. 
    05  CHAMP-4             PIC X(006)       VALUE SPACES. 
    05  CHAMP-123           PIC X(016)       VALUE SPACES.
    05  CHAMP-ABC           PIC X(011)       VALUE SPACES.
    05  CHAMP-XYZ           PIC X(013)       VALUE SPACES.
    05  COMPTEUR-01         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. 
    05  DELIMITEUR-1        PIC X(001)       VALUE SPACES. 
    05  DELIMITEUR-2        PIC X(001)       VALUE SPACES. 
    05  POINTEUR-1          PIC 9(006)       VALUE 1. 
    05  WS-NOM-01           PIC X(020)       VALUE SPACES.
    05  WS-NOM-02           PIC X(020)       VALUE SPACES.
    05  WS-NOM-03           PIC X(020)       VALUE SPACES.
    05  WS-NOM-04           PIC X(020)       VALUE SPACES.

PROCEDURE DIVISION.

001-INIT.

    MOVE "AB*CDJKL*MNS*TUV" TO CHAMP-123
    UNSTRING CHAMP-123
             DELIMITED BY "*" 
        INTO CHAMP-1 CHAMP-2 CHAMP-3 CHAMP-4
    END-UNSTRING 
    DISPLAY "CHAMP-1: " CHAMP-1 
    DISPLAY "CHAMP-2: " CHAMP-2 
    DISPLAY "CHAMP-3: " CHAMP-3 
    DISPLAY "CHAMP-4: " CHAMP-4 

* Resultado do teste:
* CHAMP-1: AB    
* CHAMP-2: CDJKL 
* CHAMP-3: MNS   
* CHAMP-4: TUV   


    MOVE "AB*CDJKL*MNS*TUV" TO CHAMP-123
    UNSTRING CHAMP-123 
             DELIMITED BY "*" 
        INTO CHAMP-1 COUNT IN COMPTEUR-1 
             CHAMP-2 COUNT IN COMPTEUR-2 
             CHAMP-3 COUNT IN COMPTEUR-3 
             CHAMP-4 COUNT IN COMPTEUR-4
    END-UNSTRING
    DISPLAY "CHAMP-1: " CHAMP-1 "   COMPTEUR-1: " COMPTEUR-1 
    DISPLAY "CHAMP-2: " CHAMP-2 "   COMPTEUR-2: " COMPTEUR-2 
    DISPLAY "CHAMP-3: " CHAMP-3 "   COMPTEUR-3: " COMPTEUR-3 
    DISPLAY "CHAMP-4: " CHAMP-4 "   COMPTEUR-4: " COMPTEUR-4 

* Resultado do teste:
* CHAMP-1: AB       COMPTEUR-1: 000002
* CHAMP-2: CDJKL    COMPTEUR-2: 000005
* CHAMP-3: MNS      COMPTEUR-3: 000003
* CHAMP-4: TUV      COMPTEUR-4: 000003


    MOVE "AB*CDJKL*MNS*TUV" TO CHAMP-123
    UNSTRING CHAMP-123 
             DELIMITED BY "*" 
        INTO CHAMP-1 COUNT IN COMPTEUR-1 
             CHAMP-2 COUNT IN COMPTEUR-2 
             CHAMP-3 COUNT IN COMPTEUR-3 
             CHAMP-4 COUNT IN COMPTEUR-4 
        WITH POINTER POINTEUR-1 
        TALLYING IN COMPTEUR-01
    END-UNSTRING
    DISPLAY "CHAMP-1    : " CHAMP-1 "   COMPTEUR-1: " COMPTEUR-1 
    DISPLAY "CHAMP-2    : " CHAMP-2 "   COMPTEUR-2: " COMPTEUR-2 
    DISPLAY "CHAMP-3    : " CHAMP-3 "   COMPTEUR-3: " COMPTEUR-3 
    DISPLAY "CHAMP-4    : " CHAMP-4 "   COMPTEUR-4: " COMPTEUR-4 
    DISPLAY "POINTEUR-1 : " POINTEUR-1 
    DISPLAY "COMPTEUR-01: " COMPTEUR-01 

* Resultado do teste:
* CHAMP-1    : AB       COMPTEUR-1: 000002
* CHAMP-2    : CDJKL    COMPTEUR-2: 000005
* CHAMP-3    : MNS      COMPTEUR-3: 000003
* CHAMP-4    : TUV      COMPTEUR-4: 000003
* PONTEIRO-1 : 000017
* COMPTEUR-01: 000004

    MOVE "XYZ/ABC*DEF" TO CHAMP-ABC
    UNSTRING CHAMP-ABC
             DELIMITED BY "/" OR "*"
        INTO CHAMP-1 DELIMITER IN DELIMITEUR-1
             CHAMP-2 DELIMITER IN DELIMITEUR-2
    END-UNSTRING
    DISPLAY "CHAMP-1    : " CHAMP-1 "   DELIMITEUR-1: " DELIMITEUR-1 
    DISPLAY "CHAMP-2    : " CHAMP-2 "   DELIMITEUR-2: " DELIMITEUR-2 

* Resultado do teste:
* CHAMP-1    : XYZ      DELIMITEUR-1: /
* CHAMP-2    : ABC      DELIMITEUR-2: *

    UNSTRING CHAMP-ABC 
             DELIMITED BY "/" OR "*" 
        INTO CHAMP-1 
             DELIMITER IN DELIMITEUR-1
    END-UNSTRING
    DISPLAY "CHAMP-1    : " CHAMP-1 "   DELIMITEUR-1: " DELIMITEUR-1 

* Resultado do teste:
* CHAMP-1    : XYZ      DELIMITEUR-1: /

    MOVE "JKLMN****STUV" TO CHAMP-XYZ 
    UNSTRING CHAMP-XYZ
             DELIMITED BY ALL "*" 
        INTO CHAMP-1 CHAMP-2
    END-UNSTRING
    DISPLAY "CHAMP-1: " CHAMP-1 
    DISPLAY "CHAMP-2: " CHAMP-2 

* Resultado do teste:
* CHAMP-1: JKLMN 
* CHAMP-2: STUV  

    STOP RUN.