Ir al Portal Ir al Foro
 

Necesito Rutina de pareo de 2 archivos planos

Todo lo relacionado con Cobol en ambientes batch, online(CICS,IMS) con bases de datos(DB2, Adabas) etc.

Necesito Rutina de pareo de 2 archivos planos

Notapor superadicto » 02 Ago 2008, 11:11

Alguien me puede ayudar estoy recien empezando en esto y Necesito Rutina de pareo de 2 archivos planos, en Cobol IBM OS390
Gracias
Compartir no debe tener limites.
superadicto
Usuario
Usuario
 
Mensajes: 1
Registrado: 24 Jul 2008, 19:16

Notapor gatojara » 12 Ago 2008, 00:05

Hola, la lógica que debes usar seria:

Si la relación es 1 a 1:
INICIO.
_________ABRIR ARCHIVO UNO
_________ABRIR ARCHIVO DOS
_________LEER ARCHIVO UNO
_________LEER ARCHIVO DOS.
PROCESO.
_________IF CLAVE-ARCHIVO-UNO = CLAVE-ARCHIVO-DOS
__________________PROCESAR ARCHIVOS
__________________LEER ARCHIVO UNO
__________________LEER ARCHIVO DOS
_________ELSE
__________________IF CLAVE-ARCHIVO-UNO < CLAVE-ARCHIVO-DOS
___________________________LEER ARCHIVO UNO
ELSE
___________________________LEER ARCHIVO DOS
__________________END-IF
_________END-IF

Si la relación es de 1 a muchos

INICIO.
_________ABRIR ARCHIVO UNO
_________ABRIR ARCHIVO DOS
_________LEER ARCHIVO UNO
_________LEER ARCHIVO DOS.
PROCESO.
_________IF CLAVE-ARCHIVO-UNO = CLAVE-ARCHIVO-DOS
__________________PERFORM UNTIL CLAVE-ARCHIVO-UNO NOT = CLAVE-ARCHIVO-DOS
__________________OR FIN-ARCHIVO-DOS
___________________________PROCESAR ARCHIVOS
___________________________LEER ARCHIVO DOS
__________________END-PERFORM
__________________LEER ARCHIVO UNO
_________ELSE
__________________IF CLAVE-ARCHIVO-UNO < CLAVE-ARCHIVO-DOS
___________________________LEER ARCHIVO UNO
__________________ELSE
___________________________LEER ARCHIVO DOS
__________________END-IF
_________END-IF

Ojala te sirva....

Saludos de Rodrigo Jara desde Chile.
Atte.
Rodrigo Jara.
gatojara
Usuario
Usuario
 
Mensajes: 1
Registrado: 07 Nov 2007, 17:34
País: Chile
Ciudad: Santiago
Ocupación: Analista funcional

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor miloincob » 14 Ene 2009, 17:20

se puede dar el caso de una relación de archivos de "muchos a muchos"????
cual seria la lógica del proceso???

saludos.
miloincob
Usuario
Usuario
 
Mensajes: 1
Registrado: 07 Nov 2008, 11:53
País: chile
Ciudad: santiago
Ocupación: Programador

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor Cll » 19 Ene 2009, 15:19

se dan casos de relaciones muchos es a muchos, en tal caso lo que he hecho yo es esto

en el parrafo proceso

IF CLAVE-ARCHIVO-UNO = CLAVE-ARCHIVO-DOS
- leo archivo 2 y guardo los datos que necesito en un arreglo en memoria
- realizo un parrafo en el cual voy revisando cada uno de los registros del archivo 1 contra los datos de la tabla interna todo esto mientras no cambie la clave del archivo 1


cuando la clave cambia tienes que volver a repetir la logica descrita antes


saludos!
Cll
Usuario avanzado
Usuario avanzado
 
Mensajes: 15
Registrado: 15 Ene 2009, 17:39
País: Chile
Ciudad: Santiago
Ocupación: Programador

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor Cll » 19 Ene 2009, 15:43

Cll escribió:se dan casos de relaciones muchos es a muchos, en tal caso lo que he hecho yo es esto

en el parrafo proceso

IF CLAVE-ARCHIVO-UNO = CLAVE-ARCHIVO-DOS
- leo archivo 2 y guardo los datos que necesito en un arreglo en memoria
- realizo un parrafo en el cual voy revisando cada uno de los registros del archivo 1 contra los datos de la tabla interna todo esto mientras no cambie la clave del archivo 1


cuando la clave cambia tienes que volver a repetir la logica descrita antes


saludos!


una aclaracion....

el de guardar los datos en una tabla interna es por que si estas leyendo un archivo secuencial, obviamtne no podras volver a leer dichos registros (yo por lo menos no se si se pueda)... ahora si lo que lees es un vsam no tendrias ese drama
Cll
Usuario avanzado
Usuario avanzado
 
Mensajes: 15
Registrado: 15 Ene 2009, 17:39
País: Chile
Ciudad: Santiago
Ocupación: Programador

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor maiz2005 » 27 Ene 2009, 05:14

YO primero haria un SORT de los dos archivos y ordenarlos por el campo en comun entre ambos y despues haria lo del ejemplo que te hizo el colaborador.
Mario Izaguirre
Programador Sistemas
IBM S/390
Avatar de Usuario
maiz2005
Colaborador avanzado
Colaborador avanzado
 
Mensajes: 119
Registrado: 14 Sep 2005, 17:51
País: España
Ciudad: Barcelona
Ocupación: System Programmer

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor marchu » 25 Feb 2010, 08:02

Buen día, para el apareo de archivos, se puede utilizar pasos SORT en el job sin necesidad de hacer un cobol.
Para esto requeris:
- 2 pasos SORT para ordenar los 2 archivos planos a comparar, por campos (claves) comunes.
- 1 paso SORT combinando las cláusulas de SYSIN: "JOINKEYS" + "JOIN UNPAIRED".

El ejemplo, es para verificar que si hay 2 registros iguales en FILE1 y FILE2 lo descarte, sino se cumple se genera en el FILE3.

//PASO1 EXEC PGM=SORT
...
//SORTJNF1 DD DISP=SHR,DSN=FILE1
//SORTJNF2 DD DISP=SHR,DSN=FILE2
//SORTOUT DD DSN=FILE3,DCB=(LRECL=...)
---
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(5,29,A)
JOINKEYS FILE=F2,FIELDS=(5,29,A)
JOIN UNPAIRED,F1,ONLY
SORT FIELDS=COPY
END
Saludos Marce.
marchu
Usuario
Usuario
 
Mensajes: 7
Registrado: 04 Sep 2008, 14:45
País: Argentina
Ciudad: Buenos Aires
Ocupación: System Programmer

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor cobolina » 20 May 2010, 14:47

marchu escribió:Buen día, para el apareo de archivos, se puede utilizar pasos SORT en el job sin necesidad de hacer un cobol.
Para esto requeris:
- 2 pasos SORT para ordenar los 2 archivos planos a comparar, por campos (claves) comunes.
- 1 paso SORT combinando las cláusulas de SYSIN: "JOINKEYS" + "JOIN UNPAIRED".

El ejemplo, es para verificar que si hay 2 registros iguales en FILE1 y FILE2 lo descarte, sino se cumple se genera en el FILE3.

//PASO1 EXEC PGM=SORT
...
//SORTJNF1 DD DISP=SHR,DSN=FILE1
//SORTJNF2 DD DISP=SHR,DSN=FILE2
//SORTOUT DD DSN=FILE3,DCB=(LRECL=...)
---
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(5,29,A)
JOINKEYS FILE=F2,FIELDS=(5,29,A)
JOIN UNPAIRED,F1,ONLY
SORT FIELDS=COPY
END



Hola a todos, gracias por su tiempo.
Quiero hacer un pareo de dos archivos y que los que no pareen se escriban en un tercer archivo.

El archivo 1 es de longitud 10, con una lista de nombres de copybooks (longitud de 8 caracteres), ordenados ascendentemente. (700 reg)
El archivo 2 idem al 1, pero con mayor cantidad de copys. (1000 reg).

Como salida necesito los registros del file 2 que no pareen con los del file 1.

Estoy siguiendo el código de Marchu, sin embargo me sale error.

//PASO040 EXEC PGM=SORT,COND=(0,NE)
//SYSOUT DD SYSOUT=*
//SORTJNF1 DD DISP=SHR,DSN=COPYS.USED
//SORTJNF2 DD DISP=SHR,DSN=COPYS.TOT
//SORTOUT DD DSN=COPYS.UTIL,DISP=(NEW,CATLG),
// UNIT=,SPACE=(CYL,(1,1),RLSE),
// DCB=(DSORG=PS,RECFM=FB,LRECL=10,BLKSIZE=0)
//SYSIN DD *
JOINKEYS FILE=F1,FIELDS=(1,8,A)
JOINKEYS FILE=F2,FIELDS=(1,8,A)
JOIN UNPAIRED,F1,ONLY
SORT FIELDS=COPY

El error que me sale es : RC 16 en el paso del jcl.

ICE000I 1 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 14:38
JOINKEYS FILE=F1,FIELDS=(1,8,A)
$
ICE005A 0 STATEMENT DEFINER ERROR
JOINKEYS FILE=F2,FIELDS=(1,8,A)
$
ICE005A 0 STATEMENT DEFINER ERROR
JOIN UNPAIRED,F1,ONLY
$
ICE005A 0 STATEMENT DEFINER ERROR
SORT FIELDS=COPY
ICE056A 0 SORTIN NOT DEFINED
ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E7-K24705
ICE052I 3 END OF DFSORT
cobolina
Usuario avanzado
Usuario avanzado
 
Mensajes: 13
Registrado: 25 Jun 2009, 17:51
País: Chile
Ciudad: Santiago
Ocupación: Analista de desarrollo

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor acevedo » 25 May 2010, 08:08

Cuando ejecuto un job con este paso

Código: Seleccionar todo
//PASO040 EXEC PGM=SORT             
//SYSOUT   DD SYSOUT=*               
//SORTJNF1 DD *                     
AAAAAAAA                             
BBBBBBBB                             
//SORTJNF2 DD *                     
AAAAAAAA                             
//SORTOUT  DD SYSOUT=*               
//SYSIN    DD *                     
  JOINKEYS FILE=F1,FIELDS=(1,8,A)     
  JOINKEYS FILE=F2,FIELDS=(1,8,A)     
  JOIN UNPAIRED,F1,ONLY               
  SORT FIELDS=COPY                   


en SORTOUT puede verse

Código: Seleccionar todo
BBBBBBBB



por cierto, los mensajes que aparecen en el job son WER*** lo que significa que el programa que se está ejecutando es el Syncsort, si no me equivoco los ICE*** son del DFSORT, te lo comento por si hay instrucciones que en uno se permitan y en el otro no.
Avatar de Usuario
acevedo
Colaborador Senior
Colaborador Senior
 
Mensajes: 335
Registrado: 01 Abr 2005, 14:36
País: España
Ciudad: -Sur-
Ocupación: Analista de desarrollo

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor jcmoretti » 31 May 2010, 11:28

cobolina,
en la instalación donde trabajo utilizando el sort obtuve un error como el que has recibido, intentando utilizar funciones solo disponibles si estaban aplicadas determinadas PTF's.
La forma de saber si es así, no es la más técnica pero me resultó, es copiar el código que sigue al mensaje ICE7511 y buscar en google, p.e. (lo que resalto en color),

ICE751I 0 C5-K05352 C6-Q95214 C7-K90000 C8-K05352 E7-K90000

en mi caso encontré que faltaba aplicar la PTF UK90007 que permite utilizar con el sort exit's (y las funciones que las utilizan) que por default están desabilitadas.
Espero sea tu caso y que consigas que las instalen, abren un campo inmenso de posibilidades, en la instalación en la que trabajo no le han dado una prioridad muy alta... hasta el día de hoy no aplicaron la PTF, espero tengas mejor suerte.
Saludos

Julio
jcmoretti
Usuario
Usuario
 
Mensajes: 9
Registrado: 05 Dic 2008, 08:08
País: Argentina
Ciudad: Capital Federal
Ocupación: Implementador

Re: Necesito Rutina de pareo de 2 archivos planos

Notapor cobolina » 02 Jun 2010, 18:04

Gracias Julio, si es problemas de habilitación de funciones, y al parecer tampoco tendré suerte, me fui por el camino de PGM pareador.
Gracias por tu ayuda, no entendía porque no me permitia hacerlo.
cobolina
Usuario avanzado
Usuario avanzado
 
Mensajes: 13
Registrado: 25 Jun 2009, 17:51
País: Chile
Ciudad: Santiago
Ocupación: Analista de desarrollo


Volver a Cobol

MKPortal ©2003-2008 mkportal.it