Iniciar Sesi๓n

Ver la Versi๓n Completa : [Sintaxis] Error al compilar open Cobol


Pabloegues
8 de julio de 2021, 15:09
En un programa de prueba me tira el siguiente error:
syntax error, unexpected BELL, expecting DEFAULT or ECHO or UPDATE,

Estoy reaprendiendo Cobol, despues de 25 a๑os, si me pueden ayudar.


ACC-N05.
ACCEPT N05 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL
NO BEEP TAB.

JCantero
8 de julio de 2021, 17:27
Revisa la sentencia display y accept para quitar o poner algo equivalente

He cogido tu fuente, he quitado :

"low" de los displays
"erase" de los displays
"NO BEEP TAB" de los displays.

Con esto, compila y funciona en cobolopen.

---------- Post a๑adido : 17:27 ---------- Post anterior : 17:26 ----------


IDENTIFICATION DIVISION.
PROGRAM-ID. TRANSABADELL.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. PC.
OBJECT-COMPUTER. PC.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 ACTUAL PIC 99.
01 ANTERIOR PIC 99.
01 CP PIC 99.
01 FIN PIC X.

01 PESO PIC 99999.
01 PESO1 PIC 99999.
01 PESO2 PIC 99999.
01 PRECIO PIC 9999V999.
01 PRECIO2 PIC 9999V999.

01 TARIFA PIC 99.

************************************************** **********
********** CAMPOS USADOS POR ACCEPT Y POR DISPLAY **********
************************************************** **********
01 ACC-DIS-COL PIC 99.
01 ACC-DIS-FIL PIC 99.

01 D-N05 PIC ZZ.ZZ9.
01 D-N04V99 PIC Z.ZZ9,99.


01 N02 PIC 99.
01 N05 PIC 9(5).

01 X01 PIC X.
01 X08 PIC X(8).
01 X21 PIC X(21).
01 X26 PIC X(26).
*----------------------------------------
01 PESOS.
02 FILLER PIC X(4) VALUE "0001".
02 FILLER PIC X(4) VALUE "0200".
02 FILLER PIC X(4) VALUE "0500".
02 FILLER PIC X(4) VALUE "1000".
02 FILLER PIC X(4) VALUE "3000".
02 FILLER PIC X(4) VALUE "6000".

01 TABLA-PESOS REDEFINES PESOS.
02 T-PESOS2 OCCURS 6 TIMES.
03 T-PESO PIC 9(4).

01 PRECIOS.
02 FILLER PIC X(55) VALUE
"00911009200094800994010580110401178012420131601030 00891".
02 FILLER PIC X(55) VALUE
"10166113391212116560173881848120762239203588013175 11052".
02 FILLER PIC X(55) VALUE
"09305096201016514589158361794019320222473455411049 09045".
02 FILLER PIC X(55) VALUE
"08528081180893909828113861324716746195943086109716 07890".
02 FILLER PIC X(55) VALUE
"06894073820766708760094531070514019146912478808334 07030".
02 FILLER PIC X(55) VALUE
"06185066610709907976088561030012601143411959107716 06925".
02 FILLER PIC X(55) VALUE
"05741061850666107077074180947610910139381682807240 06514".

01 T-PRECIOS REDEFINES PRECIOS.
02 T-PRECIOS2 OCCURS 7 TIMES.
03 T-PRECIOS3 OCCURS 11 TIMES.
04 TARIFA-PRECIO PIC 999V99.

01 ULTIMO-PRECIO PIC 9 VALUE 7.

PROCEDURE DIVISION.

COMIENZO.
PERFORM PROCESO UNTIL FIN = "N" OR FIN = "n".
STOP RUN.

PROCESO.
PERFORM PANTALLA.
PERFORM PIDE-DATOS.
PERFORM BUSCA-TARIFA.
IF TARIFA = 0 THEN
MOVE 10 TO ACC-DIS-FIL
MOVE 33 TO ACC-DIS-COL
MOVE "DESTINO NO DISPONIBLE" TO X21
PERFORM DIS-X21
ELSE
PERFORM CALCULA-TARIFA
MOVE 12 TO ACC-DIS-FIL
MOVE 19 TO ACC-DIS-COL
MOVE PESO TO D-N05
PERFORM DIS-N05
MOVE "PRECIO.:" TO X08
MOVE 14 TO ACC-DIS-FIL
MOVE 10 TO ACC-DIS-COL
PERFORM DIS-X08
MOVE 14 TO ACC-DIS-FIL
MOVE 19 TO ACC-DIS-COL
MOVE PRECIO TO D-N04V99
PERFORM DIS-N04V99
COMPUTE PRECIO ROUNDED = PRECIO * 1,16
MOVE "CON IVA:" TO X08
MOVE 16 TO ACC-DIS-FIL
MOVE 10 TO ACC-DIS-COL
PERFORM DIS-X08
MOVE 16 TO ACC-DIS-FIL
MOVE 19 TO ACC-DIS-COL
MOVE PRECIO TO D-N04V99
PERFORM DIS-N04V99
END-IF.
MOVE 23 TO ACC-DIS-FIL
MOVE 22 TO ACC-DIS-COL
MOVE "ยจHacer otro calculo (s/n)?" TO X26.
PERFORM DIS-X26.
MOVE 23 TO ACC-DIS-FIL
MOVE 49 TO ACC-DIS-COL
PERFORM ACC-X01.
MOVE X01 TO FIN.

PIDE-DATOS.
MOVE "DESTINO:" TO X08.
MOVE 10 TO ACC-DIS-FIL.
MOVE 10 TO ACC-DIS-COL.
PERFORM DIS-X08.
MOVE 10 TO ACC-DIS-FIL.
MOVE 19 TO ACC-DIS-COL.
PERFORM ACC-N02.
MOVE N02 TO CP.
MOVE "PESO...:" TO X08.
MOVE 12 TO ACC-DIS-FIL.
MOVE 10 TO ACC-DIS-COL.
PERFORM DIS-X08.
MOVE 12 TO ACC-DIS-FIL.
MOVE 19 TO ACC-DIS-COL.
PERFORM ACC-N05.
MOVE N05 TO PESO
PERFORM VERIFICA-PESO.

CALCULA-TARIFA.
IF PESO = 70 THEN
COMPUTE PRECIO = TARIFA-PRECIO(1, TARIFA)
ELSE IF PESO <= T-PESO(2) THEN
COMPUTE PRECIO ROUNDED =
(TARIFA-PRECIO(2, TARIFA) * PESO) / 1000
ELSE
PERFORM VARYING ACTUAL FROM 1 BY 1 UNTIL
PESO <= T-PESO(ACTUAL) OR
ACTUAL = ULTIMO-PRECIO
MOVE PESO TO PESO
END-PERFORM
COMPUTE ANTERIOR = ACTUAL - 1
COMPUTE PRECIO2 ROUNDED =
(TARIFA-PRECIO(ANTERIOR, TARIFA) *
T-PESO(ANTERIOR)) / 1000
COMPUTE PRECIO ROUNDED =
(TARIFA-PRECIO(ACTUAL, TARIFA) * PESO) / 1000
IF PRECIO < PRECIO2 THEN
MOVE T-PESO(ANTERIOR) TO PESO
MOVE PRECIO2 TO PRECIO
END-IF
END-IF.

BUSCA-TARIFA.
MOVE 0 TO TARIFA.
IF CP = 50
MOVE 1 TO TARIFA.

IF CP = 26 OR CP = 31 OR CP = 42 OR CP = 44
MOVE 2 TO TARIFA.

IF CP = 1 OR CP = 3 OR CP = 9 OR CP = 12 OR CP = 19
OR CP = 20 OR CP = 22 OR CP = 25 OR CP = 28 OR CP = 34
OR CP = 43 OR CP = 45 OR CP = 46 OR CP = 47 OR CP = 48
OR CP = 98
MOVE 3 TO TARIFA.

IF CP = 13 OR CP = 16 OR CP = 30 OR CP = 33 OR CP = 37
OR CP = 39 OR CP = 40
MOVE 4 TO TARIFA.

IF CP = 2 OR CP = 4 OR CP = 5 OR CP = 14 OR CP = 24
OR CP = 27 OR CP = 32 OR CP = 49
MOVE 5 TO TARIFA.

IF CP = 15 OR CP = 18 OR CP = 23 OR CP = 29 OR CP = 36
OR CP = 41
MOVE 6 TO TARIFA.

IF CP = 6 OR CP = 10 OR CP = 11 OR CP = 21
MOVE 7 TO TARIFA.

IF CP = 7
MOVE 8 TO TARIFA.

IF CP = 99
MOVE 9 TO TARIFA.

IF CP = 17
MOVE 10 TO TARIFA.

IF CP = 8
MOVE 11 TO TARIFA.

VERIFICA-PESO.
IF PESO <= 70 THEN
MOVE 70 TO PESO
ELSE IF PESO <= 100 THEN
PERFORM VARYING PESO1 FROM 70 BY 10
UNTIL PESO1 > 100 OR PESO = PESO2
COMPUTE PESO2 = PESO1 + 10
IF PESO > PESO1 AND PESO < PESO2 THEN
MOVE PESO2 TO PESO
END-IF
END-PERFORM
ELSE IF PESO <= 200 THEN
PERFORM VARYING PESO1 FROM 100 BY 25
UNTIL PESO1 > 200 OR PESO = PESO2
COMPUTE PESO2 = PESO1 + 25
IF PESO > PESO1 AND PESO < PESO2 THEN
MOVE PESO2 TO PESO
END-IF
END-PERFORM
ELSE
PERFORM VARYING PESO1 FROM 200 BY 100
UNTIL PESO1 > 99900 OR PESO = PESO2
COMPUTE PESO2 = PESO1 + 100
IF PESO > PESO1 AND PESO < PESO2 THEN
MOVE PESO2 TO PESO
END-IF
END-PERFORM
END-IF.

PANTALLA.
DISPLAY
"ษอออออออออออออออออออออออออออออออออออออออออออออออออ ออออออออออ
- "อออออออออออออออออออป" LINE 1 POSITION 1
"บ CALCULO DE COSTO DE TRANSABADELL (C) ALBERTO ARANDA PERA
- "LES 2012 บ" LINE 2 POSITION 1
"ฬอออออออออออออออออออออออออออออออออออออออออออออออออ ออออออออออ
- "อออออออออออออออออออน" LINE 3 POSITION 1
"บ
- " บ" LINE 4 POSITION 1
"บ
- " บ" LINE 5 POSITION 1
"บ
- " บ" LINE 6 POSITION 1
"บ
- " บ" LINE 7 POSITION 1
"บ
- " บ" LINE 8 POSITION 1
"บ
- " บ" LINE 9 POSITION 1
"บ
- " บ" LINE 10 POSITION 1
"บ
- " บ" LINE 11 POSITION 1
"บ
- " บ" LINE 12 POSITION 1
"บ
- " บ" LINE 13 POSITION 1
"บ
- " บ" LINE 14 POSITION 1
"บ
- " บ" LINE 15 POSITION 1
"บ
- " บ" LINE 16 POSITION 1
"บ
- " บ" LINE 17 POSITION 1
"บ
- " บ" LINE 18 POSITION 1
"บ
- " บ" LINE 19 POSITION 1
"บ
- " บ" LINE 20 POSITION 1
"บ
- " บ" LINE 21 POSITION 1
"บ Barcelona Provincia = 98
- " บ" LINE 22 POSITION 1
"บ Portugal = 99
- " บ" LINE 23 POSITION 1
"ศอออออออออออออออออออออออออออออออออออออออออออออออออ ออออออออออ
- "อออออออออออออออออออผ" LINE 24 POSITION 1 .

************************************************** **************
******** PROCEDIMIENTOS DE ACCEPT Y DISPLAY ********
************************************************** **************

ACC-N02.
ACCEPT N02 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL.
* NO BEEP TAB.
ACC-N05.
ACCEPT N05 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL.
* NO BEEP TAB.
ACC-X01.
ACCEPT X01 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL.
* NO BEEP TAB.

DIS-N04V99.
DISPLAY D-N04V99 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL.
DIS-N05.
DISPLAY D-N05 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL.
DIS-X08.
DISPLAY X08 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL.
DIS-X21.
DISPLAY X21 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL.
DIS-X26.
DISPLAY X26 LINE ACC-DIS-FIL
POSITION ACC-DIS-COL.