PDA

Ver la Versión Completa : [Sintaxis] Error en el código


dariodr
28 de noviembre de 2018, 03:36
Hola, este es mi primer post espero me puedan ayudar. Tengo el siguiente codigo, estoy siguiendo el libro "Sam teach yourself COBOL" pero a la hora de compilar me aparecen errores. Estoy usando OpenCobol para Linux Mint.
Estoy retomando cobol despues de 25anios.
Salu2.

IDENTIFICATION DIVISION.
PROGRAM-ID. PHNADD01.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PHONE-FILE
ASSIGN TO "PHONE.DAT"
ORGANIZATION IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD PHONE-FILE
LABEL RECORDS ARE STANDARD.

01 PHONE-RECORD.
05 PHONE-LAST-NAME PIC X(20).
05 PHONE-FIRST-NAME PIC X(20).
05 PHONE-NUMBER PIC X(15).

WORKING-STORAGE SECTION.
01 PROMPT-1 PIC X(9) VALUE "Last Name".
01 PROMPT-2 PIC X(10) VALUE "First Name".
01 PROMPT-3 PIC X(6) VALUE "Number".
01 YES-NO PIC X.
01 ENTRY-OK PIC X.

PROCEDURE DIVISION.
PROGRAM-BEGIN.
PERFORM OPENING-PROCEDURE.
MOVE "Y" TO YES-NO.
PERFORM ADD-RECORD UNTIL YES-NO = "N".
PERFORM CLOSING-PROCEDURE.

PROGRAM-DONE.
STOP RUN.

OPENING-PROCEDURE.
OPEN EXTEND PHONE-FILE.

CLOSING-PROCEDURE.
CLOSE PHONE-FILE.

ADD-RECORD.
MOVE "N" TO ENTRY-OK.
PERFORM GET-FIELDS UNTIL ENTRY-OK = "Y".
PERFORM ADD-THIS-RECORD.
PERFORM GO-AGAIN.

GET-FIELDS.
MOVE SPACE TO PHONE-RECORD.
DISPLAY PROMPT-1 " ? ".
ACCEPT PHONE-LAST-NAME.
DISPLAY PROMPT-2 " ? ".
ACCEPT PHONE-FIRST-NAME.
DISPLAY PROMPT-3 " ? ".
ACCEPT PHONE-NUMBER.
PERFORM VALIDATE-FIELDS.

VALIDATE-FIELDS.
MOVE "Y" TO ENTRY-OK.
IF PHONE-LAST-NAME = SPACE
MOVE "N" TO ENTRY-OK
END-IF

ADD-THIS-RECORD.
WRITE PHONE-RECORD.

GO-AGAIN.
DISPLAY "GO AGAIN?".
ACCEPT YES-NO.
IF YES-NO = "y"
MOVE "Y" TO YES-NO
END-IF.
IF YES-NO NOT = "Y"
MOVE "N" TO YES-NO
END-IF.

JCantero
28 de noviembre de 2018, 09:02
Para que te compile sin errores, te falta un punto al final de un parrafo. (linea 64)


IDENTIFICATION DIVISION.
PROGRAM-ID. PHNADD01.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PHONE-FILE
ASSIGN TO "PHONE.DAT"
ORGANIZATION IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD PHONE-FILE
LABEL RECORDS ARE STANDARD.

01 PHONE-RECORD.
05 PHONE-LAST-NAME PIC X(20).
05 PHONE-FIRST-NAME PIC X(20).
05 PHONE-NUMBER PIC X(15).

WORKING-STORAGE SECTION.
01 PROMPT-1 PIC X(9) VALUE "Last Name".
01 PROMPT-2 PIC X(10) VALUE "First Name".
01 PROMPT-3 PIC X(6) VALUE "Number".
01 YES-NO PIC X.
01 ENTRY-OK PIC X.

PROCEDURE DIVISION.
PROGRAM-BEGIN.
PERFORM OPENING-PROCEDURE.
MOVE "Y" TO YES-NO.
PERFORM ADD-RECORD UNTIL YES-NO = "N".
PERFORM CLOSING-PROCEDURE.

PROGRAM-DONE.
STOP RUN.

OPENING-PROCEDURE.
OPEN EXTEND PHONE-FILE.

CLOSING-PROCEDURE.
CLOSE PHONE-FILE.

ADD-RECORD.
MOVE "N" TO ENTRY-OK.
PERFORM GET-FIELDS UNTIL ENTRY-OK = "Y".
PERFORM ADD-THIS-RECORD.
PERFORM GO-AGAIN.

GET-FIELDS.
MOVE SPACE TO PHONE-RECORD.
DISPLAY PROMPT-1 " ? ".
ACCEPT PHONE-LAST-NAME.
DISPLAY PROMPT-2 " ? ".
ACCEPT PHONE-FIRST-NAME.
DISPLAY PROMPT-3 " ? ".
ACCEPT PHONE-NUMBER.
PERFORM VALIDATE-FIELDS.

VALIDATE-FIELDS.
MOVE "Y" TO ENTRY-OK.
IF PHONE-LAST-NAME = SPACE
MOVE "N" TO ENTRY-OK
*********** aqui te faltaba el punto
END-IF.

ADD-THIS-RECORD.
WRITE PHONE-RECORD.

GO-AGAIN.
DISPLAY "GO AGAIN?".
ACCEPT YES-NO.
IF YES-NO = "y"
MOVE "Y" TO YES-NO
END-IF.
IF YES-NO NOT = "Y"
MOVE "N" TO YES-NO
END-IF.