IDENTIFICATION DIVISION.
PROGRAM-ID. UNSTRING.
AUTHOR. CARLOS ALBERTO DORNELLES.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-AUXILIARES.
05 CAMPO-1 PIC X(006) VALUE SPACES.
05 CAMPO-2 PIC X(006) VALUE SPACES.
05 CAMPO-3 PIC X(006) VALUE SPACES.
05 CAMPO-4 PIC X(006) VALUE SPACES.
05 CAMPO-123 PIC X(016) VALUE SPACES.
05 CAMPO-ABC PIC X(011) VALUE SPACES.
05 CAMPO-XYZ PIC X(013) VALUE SPACES.
05 CONTADOR-01 PIC 9(006) VALUE ZEROES.
05 CONTADOR-1 PIC 9(006) VALUE ZEROES.
05 CONTADOR-2 PIC 9(006) VALUE ZEROES.
05 CONTADOR-3 PIC 9(006) VALUE ZEROES.
05 CONTADOR-4 PIC 9(006) VALUE ZEROES.
05 DELIMITADOR-1 PIC X(001) VALUE SPACES.
05 DELIMITADOR-2 PIC X(001) VALUE SPACES.
05 PONTEIRO-1 PIC 9(006) VALUE 1.
05 WS-NOME-01 PIC X(020) VALUE SPACES.
05 WS-NOME-02 PIC X(020) VALUE SPACES.
05 WS-NOME-03 PIC X(020) VALUE SPACES.
05 WS-NOME-04 PIC X(020) VALUE SPACES.
PROCEDURE DIVISION.
001-INICIO.
MOVE "AB*CDJKL*MNS*TUV" TO CAMPO-123
UNSTRING CAMPO-123
DELIMITED BY "*"
INTO CAMPO-1 CAMPO-2 CAMPO-3 CAMPO-4
END-UNSTRING
DISPLAY "CAMPO-1: " CAMPO-1
DISPLAY "CAMPO-2: " CAMPO-2
DISPLAY "CAMPO-3: " CAMPO-3
DISPLAY "CAMPO-4: " CAMPO-4
* Resultado do teste:
* CAMPO-1: AB
* CAMPO-2: CDJKL
* CAMPO-3: MNS
* CAMPO-4: TUV
MOVE "AB*CDJKL*MNS*TUV" TO CAMPO-123
UNSTRING CAMPO-123
DELIMITED BY "*"
INTO CAMPO-1 COUNT IN CONTADOR-1
CAMPO-2 COUNT IN CONTADOR-2
CAMPO-3 COUNT IN CONTADOR-3
CAMPO-4 COUNT IN CONTADOR-4
END-UNSTRING
DISPLAY "CAMPO-1: " CAMPO-1 " CONTADOR-1: " CONTADOR-1
DISPLAY "CAMPO-2: " CAMPO-2 " CONTADOR-2: " CONTADOR-2
DISPLAY "CAMPO-3: " CAMPO-3 " CONTADOR-3: " CONTADOR-3
DISPLAY "CAMPO-4: " CAMPO-4 " CONTADOR-4: " CONTADOR-4
* Resultado do teste:
* CAMPO-1: AB CONTADOR-1: 000002
* CAMPO-2: CDJKL CONTADOR-2: 000005
* CAMPO-3: MNS CONTADOR-3: 000003
* CAMPO-4: TUV CONTADOR-4: 000003
MOVE "AB*CDJKL*MNS*TUV" TO CAMPO-123
UNSTRING CAMPO-123
DELIMITED BY "*"
INTO CAMPO-1 COUNT IN CONTADOR-1
CAMPO-2 COUNT IN CONTADOR-2
CAMPO-3 COUNT IN CONTADOR-3
CAMPO-4 COUNT IN CONTADOR-4
WITH POINTER PONTEIRO-1
TALLYING IN CONTADOR-01
END-UNSTRING
DISPLAY "CAMPO-1 : " CAMPO-1 " CONTADOR-1: " CONTADOR-1
DISPLAY "CAMPO-2 : " CAMPO-2 " CONTADOR-2: " CONTADOR-2
DISPLAY "CAMPO-3 : " CAMPO-3 " CONTADOR-3: " CONTADOR-3
DISPLAY "CAMPO-4 : " CAMPO-4 " CONTADOR-4: " CONTADOR-4
DISPLAY "PONTEIRO-1 : " PONTEIRO-1
DISPLAY "CONTADOR-01: " CONTADOR-01
* Resultado do teste:
* CAMPO-1 : AB CONTADOR-1: 000002
* CAMPO-2 : CDJKL CONTADOR-2: 000005
* CAMPO-3 : MNS CONTADOR-3: 000003
* CAMPO-4 : TUV CONTADOR-4: 000003
* PONTEIRO-1 : 000017
* CONTADOR-01: 000004
MOVE "XYZ/ABC*DEF" TO CAMPO-ABC
UNSTRING CAMPO-ABC
DELIMITED BY "/" OR "*"
INTO CAMPO-1 DELIMITER IN DELIMITADOR-1
CAMPO-2 DELIMITER IN DELIMITADOR-2
END-UNSTRING
DISPLAY "CAMPO-1 : " CAMPO-1 " DELIMITADOR-1: " DELIMITADOR-1
DISPLAY "CAMPO-2 : " CAMPO-2 " DELIMITADOR-2: " DELIMITADOR-2
* Resultado do teste:
* CAMPO-1 : XYZ DELIMITADOR-1: /
* CAMPO-2 : ABC DELIMITADOR-2: *
UNSTRING CAMPO-ABC
DELIMITED BY "/" OR "*"
INTO CAMPO-1
DELIMITER IN DELIMITADOR-1
END-UNSTRING
DISPLAY "CAMPO-1 : " CAMPO-1 " DELIMITADOR-1: " DELIMITADOR-1
* Resultado do teste:
* CAMPO-1 : XYZ DELIMITADOR-1: /
MOVE "JKLMN****STUV" TO CAMPO-XYZ
UNSTRING CAMPO-XYZ
DELIMITED BY ALL "*"
INTO CAMPO-1 CAMPO-2
END-UNSTRING
DISPLAY "CAMPO-1: " CAMPO-1
DISPLAY "CAMPO-2: " CAMPO-2
* Resultado do teste:
* CAMPO-1: JKLMN
* CAMPO-2: STUV
STOP RUN.
Veja também:
|