COBOL - Exemplos simples - UNSTRING - www.cadcobol.com.br



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - Exemplos simples - UNSTRING
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: