COBOL - Exemplos simples - INSPECT FUNCTION REVERSE



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

COBOL - Exemplos simples - INSPECT FUNCTION REVERSE
Exemplo 1
IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIM       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAMANHO   PIC 9(09)  VALUE 0.
    05  WS-TAMANHO-1 PIC 9(09)  VALUE 0.
    05  WS-RESULT    PIC 9(09)  VALUE 0.
    05  WS-CAMPO     PIC X(30)  VALUE 'CARLOS ALB 11'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CAMPO) 
        TALLYING WS-TAMANHO-1 FOR LEADING SPACES

DISPLAY 'Quantidade de brancos depois o último caracter significativo '
DISPLAY 'WS-TAMANHO-1 - ' WS-TAMANHO-1.

COMPUTE WS-RESULT = FUNCTION LENGTH (WS-CAMPO)
MOVE 0 TO WS-FIM WS-TAMANHO
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULT
     IF WS-CAMPO(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAMANHO
     END-IF
END-PERFORM

DISPLAY 'Quantidade de caracteres significativo no campo'
DISPLAY 'WS-TAMANHO   - ' WS-TAMANHO.
STOP RUN.

Resultado do teste:

Quantidade de brancos depois o último caracter significativo 
WS-TAMANHO-1 - 000000017

Quantidade de caracteres significativo no campo
WS-TAMANHO   - 000000011

Exemplo 2
IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIM       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAMANHO   PIC 9(09)  VALUE 0.
    05  WS-TAMANHO-1 PIC 9(09)  VALUE 0.
    05  WS-RESULT    PIC 9(09)  VALUE 0.
    05  WS-CAMPO     PIC X(50)  VALUE 'CARLOS ALBERTO DORNELLES'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CAMPO) 
        TALLYING WS-TAMANHO-1 FOR LEADING SPACES

DISPLAY 'Quantidade de brancos depois o último caracter significativo '
DISPLAY 'WS-TAMANHO-1 - ' WS-TAMANHO-1.

COMPUTE WS-RESULT = FUNCTION LENGTH (WS-CAMPO)
MOVE 0 TO WS-FIM WS-TAMANHO
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULT
     IF WS-CAMPO(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAMANHO
     END-IF
END-PERFORM

DISPLAY 'Quantidade de caracteres significativo no campo'
DISPLAY 'WS-TAMANHO   - ' WS-TAMANHO.
STOP RUN.

Resultado do teste:

Quantidade de brancos depois o último caracter significativo 
WS-TAMANHO-1 - 000000026

Quantidade de caracteres significativo no campo
WS-TAMANHO   - 000000022

Exemplo 3
IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIM       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAMANHO   PIC 9(09)  VALUE 0.
    05  WS-TAMANHO-1 PIC 9(09)  VALUE 0.
    05  WS-RESULT    PIC 9(09)  VALUE 0.
    05  WS-CAMPO     PIC X(50)  VALUE 'C A R L O S ALBERTO DORNELLES'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CAMPO) 
        TALLYING WS-TAMANHO-1 FOR LEADING SPACES

DISPLAY 'Quantidade de brancos depois o último caracter significativo '
DISPLAY 'WS-TAMANHO-1 - ' WS-TAMANHO-1.

COMPUTE WS-RESULT = FUNCTION LENGTH (WS-CAMPO)
MOVE 0 TO WS-FIM WS-TAMANHO
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULT
     IF WS-CAMPO(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAMANHO
     END-IF
END-PERFORM

DISPLAY 'Quantidade de caracteres significativo no campo'
DISPLAY 'WS-TAMANHO   - ' WS-TAMANHO.
STOP RUN.

Resultado do teste:

Quantidade de brancos depois o último caracter significativo 
WS-TAMANHO-1 - 000000021

Quantidade de caracteres significativo no campo
WS-TAMANHO   - 000000022

Exemplo 4
IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIM       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAMANHO   PIC 9(09)  VALUE 0.
    05  WS-TAMANHO-1 PIC 9(09)  VALUE 0.
    05  WS-RESULT    PIC 9(09)  VALUE 0.
    05  WS-CAMPO     PIC X(50)  VALUE 'CARLOS CADCOBOL'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CAMPO) 
        TALLYING WS-TAMANHO-1 FOR LEADING SPACES

DISPLAY 'Quantidade de brancos depois o último caracter significativo '
DISPLAY 'WS-TAMANHO-1 - ' WS-TAMANHO-1.

COMPUTE WS-RESULT = FUNCTION LENGTH (WS-CAMPO)
MOVE 0 TO WS-FIM WS-TAMANHO
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULT
     IF WS-CAMPO(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAMANHO
     END-IF
END-PERFORM

DISPLAY 'Quantidade de caracteres significativo no campo'
DISPLAY 'WS-TAMANHO   - ' WS-TAMANHO.
STOP RUN.

Resultado do teste:

Quantidade de brancos depois o último caracter significativo 
WS-TAMANHO-1 - 000000035

Quantidade de caracteres significativo no campo
WS-TAMANHO   - 000000014

Exemplo 5
IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-TAMANHO   PIC 9(09)  VALUE 0.
    05  WS-TAMANHO-1 PIC 9(09)  VALUE 0.
    05  WS-RESULT    PIC 9(09)  VALUE 0.
    05  WS-CAMPO     PIC X(30)  VALUE 'CARLOS ALBERTO        '.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CAMPO) 
        TALLYING WS-TAMANHO-1 FOR LEADING SPACES

DISPLAY 'Quantidade de brancos depois o último caracter significativo '
DISPLAY 'WS-TAMANHO-1 - ' WS-TAMANHO-1.
COMPUTE WS-RESULT = FUNCTION LENGTH (WS-CAMPO)
COMPUTE WS-RESULT = WS-RESULT - WS-TAMANHO-1
DISPLAY 'Quantidade de dados até o último caracter significativo' 
DISPLAY 'WS-RESULT    - ' WS-RESULT
DISPLAY 'WS-CAMPO     - ' WS-CAMPO  (1:WS-RESULT)

STOP RUN.

Resultado do teste:

Quantidade de brancos depois o último caracter significativo 
WS-TAMANHO-1 - 000000016

Quantidade de dados até o último caracter significativo 
WS-RESULT    - 000000014
WS-CAMPO     - CARLOS ALBERTO