Cobol - archivos relativos

 
Vista:

archivos relativos

Publicado por leon (1 intervención) el 14/02/2005 15:28:49
buenas . quisiera saber si alguien me podria proporcionar algun ejemplo de codigo fuente para generar un archivo relativo a partir de uno dado con nuevo hashing . el metodo debe ser del resto con zona de overflow secuencial. he hecho uno el cual no lo puedo hacer andar y me esta volviendo loco.
gracias
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
Imágen de perfil de Alejandro

Ejemplo de generación de archivo relativo con hashing

Publicado por Alejandro (300 intervenciones) el 06/09/2023 16:28:24
Claro, León, puedo ayudarte con eso. Aquí tienes un ejemplo de código en COBOL para generar un archivo relativo a partir de otro con un nuevo hashing utilizando el método de resto con zona de overflow secuencial:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
IDENTIFICATION DIVISION.
PROGRAM-ID. Generar-Archivo-Relativo.
 
DATA DIVISION.
FILE SECTION.
FD Archivo-Entrada.
01 Registro-Entrada.
   05 Campo-Clave-Entrada PIC X(10).
   05 Campo-Datos-Entrada PIC X(30).
 
FD Archivo-Salida.
01 Registro-Salida.
   05 Campo-Clave-Salida PIC X(10).
   05 Campo-Datos-Salida PIC X(30).
 
WORKING-STORAGE SECTION.
01 Hash-Tabla OCCURS 100 TIMES.
   05 Hash-Clave PIC X(10).
   05 Hash-RRN PIC 9(3).
 
01 Hash-Overflow OCCURS 100 TIMES.
   05 Overflow-Clave PIC X(10).
   05 Overflow-RRN PIC 9(3).
 
01 EOF-Salida PIC X VALUE 'N'.
 
01 Indice PIC 9(3).
01 Clave-Buscar PIC X(10).
01 RRN-Encontrado PIC 9(3).
 
PROCEDURE DIVISION.
Inicio.
    OPEN INPUT Archivo-Entrada
         OUTPUT Archivo-Salida.
 
    PERFORM Leer-Archivo-Entrada UNTIL EOF-Salida = 'Y'.
 
    CLOSE Archivo-Entrada
          Archivo-Salida.
 
    STOP RUN.
 
Leer-Archivo-Entrada.
    READ Archivo-Entrada
        AT END
            MOVE 'Y' TO EOF-Salida
        NOT AT END
            PERFORM Calcular-Hash
            PERFORM Buscar-En-Tabla.
 
Calcular-Hash.
    COMPUTE Indice = FUNCTION MOD (FUNCTION NUMVAL (Campo-Clave-Entrada), 100) + 1.
    MOVE Campo-Clave-Entrada TO Hash-Clave(Indice).
    MOVE 1 TO Hash-RRN(Indice).
 
Buscar-En-Tabla.
    MOVE Campo-Clave-Entrada TO Clave-Buscar.
    MOVE 0 TO RRN-Encontrado.
    PERFORM Buscar-En-Tabla-Principal
        UNTIL RRN-Encontrado > 0
        OR Indice > 100.
 
    IF RRN-Encontrado = 0
    THEN
        MOVE Clave-Buscar TO Overflow-Clave(Indice).
        MOVE 1 TO Overflow-RRN(Indice).
        PERFORM Escribir-En-Tabla-Overflow
    ELSE
        MOVE RRN-Encontrado TO RRN-Encontrado
        PERFORM Escribir-En-Tabla-Principal.
 
Buscar-En-Tabla-Principal.
    IF Hash-Clave(Indice) = Clave-Buscar
    THEN
        MOVE Hash-RRN(Indice) TO RRN-Encontrado
    ELSE
        ADD 1 TO Indice
        IF Indice > 100
        THEN
            MOVE 0 TO RRN-Encontrado
        END-IF.
 
Escribir-En-Tabla-Overflow.
    MOVE Overflow-Clave(Indice) TO Campo-Clave-Salida.
    MOVE Campo-Datos-Entrada TO Campo-Datos-Salida.
    WRITE Registro-Salida.
 
Escribir-En-Tabla-Principal.
    MOVE Hash-Clave(Indice) TO Campo-Clave-Salida.
    MOVE Campo-Datos-Entrada TO Campo-Datos-Salida.
    WRITE Registro-Salida.

Asegúrate de adaptar este código a tus necesidades específicas y de ajustar el tamaño de los campos según corresponda. También, verifica que la lógica de hashing y búsqueda se adapte a tu requerimiento de "resto con zona de overflow secuencial". ¡Buena suerte!
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