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.