Cobol - Ayuda con A-B-C en Cobol

 
Vista:

Ayuda con A-B-C en Cobol

Publicado por Edd (1 intervención) el 09/12/2006 05:47:54
wenas noches... veran necesito ayuda, por que ya me duele la cabeza, el programa trata de ABC (altas, bajas y cambios), de un productoX, el chiste es que puedes hacer una cosa (la que quieras), pero cuando quiero repetir el programa no acepta el ciclo, por ejemplo

selecciono 1 para una alta
doy (valga la rebuznancia) de alta la "alta"
en teoria se regresa al menu y puedes seguir con la baja o el cambio

pero la verdad es que no quiere, tengo la sospecha que es la comparacion de la respuesta o algun contador, pero ya me desespere

mando el codigo fuente para analizar

IDENTIFICATION DIVISION.
PROGRAM-ID. PROYECTO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PAPE ASSIGN TO RANDOM "PAPE.DAT"
organization is indexed
access mode is dynamic
record key is clave
alternate record key articulo
file status estado.
DATA DIVISION.
file section.
FD PAPE
label record is standard
data record is ART.

01 ART.
02 CLAVE PIC 9(2).
02 CANTIDAD PIC 9(3).
02 ARTICULO PIC X(15).
02 PRECIO PIC 999.
02 PRETOT PIC 999999.

WORKING-STORAGE SECTION.
01 MENU.

02 FILLER PIC X(10) VALUE SPACES.
02 FILLER PIC X(5) VALUE "CLAVE".
02 FILLER PIC X(5) VALUE SPACES.
02 FILLER PIC X(8) VALUE "ARTICULO".
02 FILLER PIC X(5) VALUE SPACES.
02 FILLER PIC X(8) VALUE "CANTIDAD".
02 FILLER PIC X(5) VALUE SPACES.
02 FILLER PIC X(6) VALUE "PRECIO".
02 FILLER PIC X(5) VALUE SPACES.
02 FILLER PIC X(12) VALUE "PRECIO TOTAL".

01 ASTE.
02 FILLER PIC X(79) VALUE ALL "*".


77 ESTADO PIC X(2) VALUE "00".
77 RES PIC X.
77 CLABU PIC 9(2).
77 EN PIC X.
77 RESP PIC 9.
77 FIN PIC X(2).
77 E PIC 9.
77 OP PIC 9.
77 LI PIC 9(2).

PROCEDURE DIVISION.

DECLARATIVES.
IO-ERROR SECTION.
USE AFTER STANDARD ERROR PROCEDURE ON I-O.
RUT-I-O-ERROR.
DISPLAY " ERRRRRRRR".
END DECLARATIVES.

PRINCIPAL SECTION.
INICIO.

DISPLAY " " ERASE CONTROL "FCOLOR=MAGENTA"

OPEN I-O PAPE
MOVE "S" TO FIN
IF ESTADO NOT EQUAL "00" THEN
open output pape
END-IF

PERFORM MENU UNTIL RESP = 5

CLOSE PAPE

STOP RUN.

MENU.

DISPLAY " " ERASE

DISPLAY " ALTAS ----------- 1 "
DISPLAY " BAJAS ----------- 2 "
DISPLAY " CAMBIOS --------- 3 "
DISPLAY " IMPRIMIR -------- 4 "
DISPLAY " SALIR ----------- 5 "

DISPLAY " ¨QUE QUIERES HACER ?? "
ACCEPT RESP

IF RESP = 1 THEN
PERFORM ALTAS UNTIL RES = "n" OR RES = "N"
ELSE
IF RESP = 2 THEN
PERFORM BAJAS UNTIL RES = "n" OR RES = "N"
ELSE
IF RESP = 3 THEN
MOVE "S" TO FIN
PERFORM CAMBIOS UNTIL RES = "n" OR RES = "N"
ELSE
IF RESP = 4 THEN
MOVE "S" TO FIN
PERFORM CONSULTAS UNTIL RES = "n" OR RES = "N"
END-IF.

ALTAS.

DISPLAY " " ERASE
DISPLAY ASTE LINE 2 POSITION 2
DISPLAY MENU LINE 3 POSITION 2
DISPLAY ASTE LINE 4 POSITION 2

ACCEPT CLAVE LINE 6 POSITION 13
ACCEPT ARTICULO LINE 6 POSITION 22
ACCEPT CANTIDAD LINE 6 POSITION 38
ACCEPT PRECIO LINE 6 POSITION 51

COMPUTE PRETOT = PRECIO * CANTIDAD

WRITE ART INVALID KEY DISPLAY "DUPLICADO"
NOT INVALID KEY DISPLAY "CORRECTO"
END-WRITE

DISPLAY "OTRA ALTAA S/N"
ACCEPT RES.

CAMBIOS.

DISPLAY " " ERASE

MOVE 0 TO CLABU

DISPLAY "CLAVE A BUSCAR"
ACCEPT CLAVE TAB

READ PAPE KEY CLAVE INVALID KEY MOVE 1 TO CLABU
END-READ

IF CLABU = 0 THEN

DISPLAY " " ERASE
DISPLAY ASTE LINE 2 POSITION 2
DISPLAY MENU LINE 3 POSITION 2
DISPLAY ASTE LINE 4 POSITION 2

DISPLAY CLAVE LINE 6 POSITION 13
DISPLAY ARTICULO LINE 6 POSITION 22
DISPLAY CANTIDAD LINE 6 POSITION 38
DISPLAY PRECIO LINE 6 POSITION 51
DISPLAY PRETOT LINE 6 POSITION 62

DISPLAY "ARTICULO ---- 1" LINE 8 POSITION 2
DISPLAY "CANTIDAD ---- 2" LINE 9 POSITION 2
DISPLAY "QUE QUIERES MODIFICAR" LINE 10 POSITION 2
ACCEPT OP LINE 10 POSITION 25

IF OP = 1 THEN
DISPLAY "NOMBRE DE ARTICULO" LINE 12 POSITION 2
ACCEPT ARTICULO LINE 13 POSITION 2
END-IF

IF OP = 2 THEN
DISPLAY "CANTIDAD DEL ARTICULO" LINE 12 POSITION 2
ACCEPT CANTIDAD LINE 13 POSITION 2
END-IF


REWRITE ART INVALID KEY DISPLAY "CAMBIO DADO"
END-REWRITE

ELSE

DISPLAY "CLAVE NO ENCONTRADA"

END-IF

DISPLAY "OTRO CAMBIO S/N"
ACCEPT RES.


BAJAS.

DISPLAY " " ERASE

DISPLAY "CLAVE A BUSCAR"
ACCEPT CLAVE

READ PAPE KEY CLAVE INVALID KEY DISPLAY " CLAVE INVALIDA "
END-READ


DELETE PAPE NOT INVALID KEY DISPLAY "REGISTRO BORRADO"
END-DELETE


DISPLAY "OTRA BAJA S/N"
ACCEPT RES.

CONSULTAS.

DISPLAY " " ERASE

MOVE "X" TO FIN

MOVE 6 TO LI

DISPLAY ASTE LINE 2 POSITION 2
DISPLAY MENU LINE 3 POSITION 2
DISPLAY ASTE LINE 4 POSITION 2

PERFORM IMP UNTIL FIN = "FI"
ACCEPT EN

DISPLAY "OTRA CONSULTA S/N"
ACCEPT RES.

IMP.

DISPLAY CLAVE LINE LI POSITION 13
DISPLAY ARTICULO LINE LI POSITION 22
DISPLAY CANTIDAD LINE LI POSITION 38
DISPLAY PRECIO LINE LI POSITION 51

COMPUTE LI = LI + 1

READ PAPE NEXT RECORD AT END MOVE "FI" TO FIN.

ya estoy desesperado y necesito una ayudita, no es necesario que me digan el programa solo que me digan mas o menos en que estoy mal ,para corregir y experimentar, si se podria antes del domingo 10 antes de las 5 de la tarde POR FAVVOOOOOOORRR!!! (estoy desesperado)

de antemano gracias
Edd
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:Ayuda con A-B-C en Cobol

Publicado por SuperIndio (161 intervenciones) el 13/12/2006 18:24:16
Sos chistoso vos eh???? Te olvidaste de Inicializar la variable RESP
que acepta el nuevo valor desde el menu. Aqui:

DISPLAY " ALTAS ----------- 1 "
DISPLAY " BAJAS ----------- 2 "
DISPLAY " CAMBIOS --------- 3 "
DISPLAY " IMPRIMIR -------- 4 "
DISPLAY " SALIR ----------- 5 "

DISPLAY " ¨QUE QUIERES HACER ?? "
ACCEPT RESP

Tenes que poner un INITIALIZE RESP antes del ACCEPT RESP
y listo probalo y despues me contas

Saludos
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