Cobol - Error al hacer REWRITE

 
Vista:

Error al hacer REWRITE

Publicado por Miquel (2 intervenciones) el 21/07/2015 08:59:41
Buenos días,
llevo unos días liado con un programa y no hay forma de poder avanzar. El problema es que intento realizar un rewrite para modificar un registro de un fichero, y al compilar (utilizo rmcobol) me aparece un error que indica 278) Expected record-name of file that is not sort-merge file.

Os copio el código de mi programa y rezo para que alguno me sepa solucionar el problema.
Muchas gracias por adelantado!

IDENTIFICATION DIVISION.

PROGRAM-ID. EX9.

ENVIRONMENT DIVISION.

CONFIGURATION SECTION.

SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.

INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FITX1 ASSIGN TO 'DATOS91.DAT'.

SELECT FITX2 ASSIGN TO 'DATOS92.DAT'
ORGANIZATION IS INDEXED
ACCESS IS DYNAMIC
RECORD KEY R2-NUMESTUD
ALTERNATE RECORD KEY R-NOMESTUD WITH DUPLICATES.


DATA DIVISION.

FILE SECTION.

FD FITX1
RECORD CONTAINS 16 CHARACTERS.
01 R-PAGOESTUD.
05 R1-NUMESTUD PIC 9(7).
05 R-PAGO.
10 R-NUMPAGO PIC 9(4)V9(2).
10 R-SIGNPAGO PIC X.

FD FITX2
RECORD CONTAINS 56 CHARACTERS.
01 R-ESTUDIANTES.
05 R2-NUMESTUD PIC 9(7).
05 R-NOMESTUD PIC X(30).
05 R-SEXO PIC X.
05 R-CODCURSO PIC X(4).
05 R-TOTALMAT.
10 R-NUMMAT PIC 9(4).
10 R-SIGNMAT PIC X.
05 R-TOTALPAGA.
10 R-NUMPAGA PIC 9(4)V9(2).
10 R-SIGNPAGA PIC X.

WORKING-STORAGE SECTION.
*
01 FINPROCESO.
05 FIN-F1 PIC X(01) VALUE '0'.
05 FIN-F2 PIC X(01) VALUE '0'.

01 WS-ESTUDIANTES.
05 WS-NUMESTUD PIC 9(7).
05 WS-NOMESTUD PIC X(30).
05 WS-SEXO PIC X.
05 WS-CODCURSO PIC X(4).
05 WS-TOTALMAT.
10 WS-NUMMAT PIC 9(4).
10 WS-SIGNMAT PIC X.
05 WS-TOTALPAGA.
10 WS-NUMPAGA PIC 9(4)V9(2).
10 WS-SIGNPAGA PIC X.

01 SUMA PIC 9(4)V9(2).

*
PROCEDURE DIVISION.
*
PERFORM INICIO THRU END-INICIO.
PERFORM LECTURA THRU END-LECTURA.
* UNTIL FINPROCESO = ALL '1'.
PERFORM SALIR THRU END-SALIR.
*
*----------------------------------------------------------------*
*----------------------------------------------------------------*
*
INICIO.
OPEN INPUT FITX1.
OPEN I-O FITX2.


READ FITX1 AT END MOVE '1' TO FIN-F1.
IF FIN-F1 = 1
THEN DISPLAY 'El fichero1 esta vacio'
PERFORM SALIR
THRU END-SALIR
END-IF.



*
END-INICIO.
EXIT.
*
LECTURA.
MOVE R1-NUMESTUD TO R2-NUMESTUD.
READ FITX2 RECORD INTO WS-ESTUDIANTES
KEY IS R2-NUMESTUD.
MOVE R-NUMPAGO TO SUMA.
ADD SUMA TO R-NUMPAGA GIVING SUMA.
MOVE SUMA TO R-NUMPAGA.
REWRITE R-NUMPAGA.


END-LECTURA.
* EXIT.
*
SALIR.
CLOSE FITX1.
CLOSE FITX2.
STOP RUN.
END-SALIR.
EXIT.
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

Error al hacer REWRITE

Publicado por Miquel (2 intervenciones) el 22/07/2015 09:08:10
Ya me he auto-resuelto la duda. Os la dejo por aquí por si a alguien le pasa algún día.
Simplemente, hay que hacer un rewrite de todos los campos, de modo que he utilizado mi tabla auxiliar ws-estudiantes para modificar con un Move el campo ws-numpaga, posteriormente hacer Move de ws-estudiantes a r-estudiantes y hacer un rewrite de r-estudiantes.
Un saludo!

Miquel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar