Hugo Paixão
Consultor Cobol & .NET & Web Designer
© 2020 - Desenvolvido por Hugo Paixão -
Todos os direitos reservados.
Todos os direitos reservados.
Comparação de nomes abreviados

Tenho sempre por hábito fazer pequenos algoritmos que poderão dar jeito em alguma circunstância do nosso dia a dia profissional.
A finalidade deste algoritmo é comparar dois nomes, e verificar que mesmo que contenham alguns dos nomes abreviados, ele verifica que se trata de nomes iguais.
Algoritmo – Comparação de nomes abreviados
IDENTIFICATION DIVISION.
PROGRAM-ID. COMPARACAO-NOMES-ABREVIATURAS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NOME1.
02 CARACTER1 PIC X(01) OCCURS 60.
01 NOME1-RED REDEFINES NOME1 PIC X(60).
01 NOME2.
02 CARACTER2 PIC X(01) OCCURS 60.
01 NOME2-RED REDEFINES NOME2 PIC X(60).
01 IND1 PIC 9(02).
01 IND2 PIC 9(02).
01 IND3 PIC 9(02).
01 IND4 PIC 9(02).
01 NOMEP PIC X(15).
01 NOMEU PIC X(15).
01 TAMANHO1 PIC 9(02).
01 TAMANHO2 PIC 9(02).
01 ESPACOS PIC 9(02).
PROCEDURE DIVISION.
MOVE 'MARCELO NUNO DUARTE REBELO DE SOUSA' TO NOME1.
MOVE 'MARCELO N D REBELO DE SOUSA' TO NOME2.
INSPECT NOME1-RED TALLYING ESPACOS FOR TRAILING SPACES
COMPUTE TAMANHO1 = FUNCTION LENGTH(NOME1-RED) - ESPACOS
MOVE ZEROS TO ESPACOS
INSPECT NOME2-RED TALLYING ESPACOS FOR TRAILING SPACES
COMPUTE TAMANHO2 = FUNCTION LENGTH(NOME2-RED) - ESPACOS
IF TAMANHO1 < TAMANHO2
MOVE TAMANHO2 TO TAMANHO1
END-IF
MOVE 1 TO IND1 IND2.
PERFORM UNTIL IND1 > TAMANHO1
IF CARACTER1(IND1) = CARACTER2(IND2)
ADD 1 TO IND1
ADD 1 TO IND2
IF CARACTER1(IND1) = SPACES
PERFORM UNTIL CARACTER1(IND1) = SPACES
ADD 1 TO IND1
END-PERFORM
ADD 1 TO IND1
PERFORM UNTIL CARACTER2(IND2) = SPACES
ADD 1 TO IND2
END-PERFORM
ADD 1 TO IND2
END-IF
IF CARACTER2(IND2) = SPACES
PERFORM UNTIL CARACTER1(IND1) = SPACES
ADD 1 TO IND1
END-PERFORM
ADD 1 TO IND1
PERFORM UNTIL CARACTER2(IND2) = SPACES
ADD 1 TO IND2
END-PERFORM
ADD 1 TO IND2
END-IF
ELSE
DISPLAY 'NOMES DIFERENTES' IND2
COMPUTE IND1 = TAMANHO1 + 1
END-IF
END-PERFORM
STOP RUN.
Podes sempre testar este código no site: https://www.jdoodle.com/execute-cobol-online/
Nota: Recordo que todos os algoritmos aqui apresentados poderão estar sujeitos a maior optimização. Como todos nós sabemos, existe várias formas de chegar ao objectivo final. Eu apresento a minha… o que não quer dizer que a sua também não seja válida.