Cobol - Eliminar duplicados vector cobol

   
Vista:

Eliminar duplicados vector cobol

Publicado por cristian (1 intervención) el 14/10/2009 03:33:39
Hola, necesito ayuda para eliminar duplicados de un vector, por favor si alguien tiene un ejemplo en cobol se los agradezco. Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Eliminar duplicados vector cobol

Publicado por SuperIndio (138 intervenciones) el 14/10/2009 19:11:49
Hola defino otro vector de iguales caracteristicas en el que voy pasando uno a uno, pero entes de pasarlo lo busco a traves de un search. Espero te sirva
*****************************************************************Ej:

Identification Division.
Program-Id. SeeDupli.
Author. SuperIndio.
Environment Division.
Configuration Section.
Special-Names.
Decimal-Point IS Comma.
Input-Output Section.
File-Control.
Data Division.
File Section.
Working-Storage Section.
01 Swt-Busqueda Pic 9(01) Value 0.
88 No-Encontre Value 5.
88 Si-Encontre Value 9.

01 IDS-WORKS.
03 W-PALABRA Pic X(20) VALUE SPACES.
03 Indice Pic 9(03) VALUE 0.
03 Indize Pic 9(03) VALUE 0.
03 Contador Pic 9(03) VALUE 0.
03 Duplicados Pic 9(03) VALUE 0.
01 W-ORIGINAL.
03 Vector occurs 20 Times INDEXED BY Idx.
05 Palabra Pic X(20).
01 W-AUXIMLIAR.
03 zVector occurs 20 Times INDEXED BY Idz.
05 UPalabra Pic X(20).
Procedure Division.
Main.

MOVE "RIVAROLA" TO Palabra(01).
MOVE "RIMPONI " TO Palabra(02).
MOVE "BASALDU " TO Palabra(03).
MOVE "RIMPONI " TO Palabra(04).
MOVE "ARIAS " TO Palabra(05).
MOVE "MASSAT " TO Palabra(06).
MOVE "ELIAN " TO Palabra(07).
MOVE "RIVAROLA" TO Palabra(08).
MOVE "DELEYO " TO Palabra(09).
MOVE "MASSAT " TO Palabra(10).
MOVE "RIMPONI " TO Palabra(11).
MOVE "FARPUZA " TO Palabra(12).
MOVE "RIVAROLA" TO Palabra(13).
MOVE "ODILIO " TO Palabra(14).
MOVE "MASSAT " TO Palabra(15).
MOVE "RIVAROLA" TO Palabra(16).
MOVE "RELONI " TO Palabra(17).
MOVE "RELONI " TO Palabra(18).
MOVE "RELONI " TO Palabra(19).
MOVE "RELONI " TO Palabra(20).

PERFORM VARYING Contador FROM 1 BY 1 UNTIL Contador > 20
Display Contador " --> " Palabra(Contador)
END-PERFORM.

INITIALIZE W-AUXIMLIAR.
INITIALIZE Indize.
PERFORM VARYING Contador FROM 1 BY 1 UNTIL Contador > 20

Initialize Swt-Busqueda
Set Idz TO +1
MOVE Palabra(Contador) TO W-PALABRA
SEARCH zVector VARYING Idz
AT END Set No-Encontre TO TRUE
WHEN UPalabra(Idz) = W-PALABRA
Set Si-Encontre TO TRUE
END-SEARCH
IF Si-Encontre THEN
DISPLAY "ELEMENTO DUSPLICADO " W-PALABRA
Add 1 To Duplicados
ELSE
Add 1 To Indize
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
MOVE Palabra(Contador) TO UPalabra(Indize)
END-IF

END-PERFORM
MOVE W-AUXIMLIAR TO W-ORIGINAL.
DISPLAY "LISTO..............."
PERFORM VARYING Contador FROM 1 BY 1 UNTIL Contador > 20
Display Contador " --> " Palabra(Contador)
END-PERFORM.
Stop Run.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar duplicados vector cobol

Publicado por BENITO CAMELA (4 intervenciones) el 14/10/2009 19:42:12
DEJATE DE ROMPER LAS PELOTAS SUPERINDIO NO TE HAGAS EL PROGRAMADOR.. JAJAJAJAJAAAAAAA.... HAAAAAA Y OTRO CONSEJO DEJA DE JUNTARTE CON EL GRINGO DE MORTEROS.. JAJAJJAJAJAAAAAAAA YA SE POR DONDE ANDAS CAGANDO GENTE LOCO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar duplicados vector cobol

Publicado por ROXANA (1 intervención) el 15/10/2009 18:48:01
Por lo visto el que se dedica a j o der a la gente sos vos, ademas de kagon, porque no te identificas con tu verdadero nombre?
Paso a mi inquietud
Alguien me puede dejar un link para bajar algun manual del cobol WOW ?
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar duplicados vector cobol

Publicado por oscar (37 intervenciones) el 15/10/2009 16:21:42
también podrías hacerlo así que es más general.

En working tenemos
01 VECTOR-VIEJO.
03 VIEJO PIC X(??) OCCURS 100 TIMES.
01 VECTOR-NUEVO
03 NUEVO PIC X(??) OCCURS 100 TIMES.
77 X PIC 999 VALUE 1.
77 Y PIC 999 VALUE 1.
77 Z PIC 999.
77 EXISTE PIC 9.

Partiendo del supuesto en que el que dato es alfa y que cuando encuentro ESPACIOS en VIEJO(X) se llegó al fin del último dato en este vector, hacemos:

INITIALIZE VECTOR-NUEVO.
*---------Mover el primer dato del vector a tratar
MOVE VIEJO(X) TO NUEVO(Y)

PERFORM UNTIL X > 100
ADD 1 TO X
IF VIEJO(X) = SPACES
MOVE 999 TO X
ELSE
MOVE 0 TO EXISTE
PERFORM VARYING Z FROM 1 BY 1 UNTIL Z > Y
OR EXISTE = 1
IF VIEJO(X) = NUEVO(Z)
MOVE 1 TO EXISTE
END-IF
END-PERFORM
IF EXISTE = 0
ADD 1 TO Y
MOVE VIEJO(X) TO NUEVO(Y)
END-IF
END-IF
END-PERFORM.
MOVE VECTOR-NUEVO TO VECTOR-VIEJO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar