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
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


0