COBOL (Common Business Oriented Language)

Informática. Lenguajes. Ficheros secuenciales. Registros

  • Enviado por: Cuky
  • Idioma: castellano
  • País: España España
  • 7 páginas
publicidad

IDENTIFICATION DIVISION.

PROGRAN-ID. Nombre de Programa.

ENVIRONMENT DIVISION.

[ CONFIGURATION SECTION.

SPECIAL-NAMES.

DECIMAL-POINT IS COMMA.]

[INPUT-OUTPUT SECTION.

FILE-CONTROL.

* Para ficheros secuenciales

SELECT Fichero ASSIGN TO DISK.

* Para ficheros Indexados

SELECT Fichero ASSIGN TO DISK

ORGANIZATION INDEXED

RECORD KEY IS CLAVE

[ACCESS IS RANDOM / DYNAMIC

FILE STATUS IS ERR.]

* Para Impresora

SELECT IMPRES ASSIGN TO PRINTER.]

DATA DIVISION.

[FILE SECTION.

* Para cada fichero en Disco

FD Fichero LABEL RECORD STANDARD

VALUE OF FILE-ID ðNombre de fichero.DATð.

01 Nombre de registro.

02 Nombre de Campo PIC ....

02 Tabla OCCURS veces.

03 Campos repetidos PIC ....

.

.

* Para la Impresora

FD IMPRES LABEL RECORD OMITTED

LINAGE 60 FOOTING 60 TOP 3 BOTTOM 3.

01 RIMPRES PIC X(80).]

WORKING-STORAGE SECTION.

01 CAMPOS-DE-TRABAJO VALUE ð0".

02 Nombre de campo PIC ...

02 Tabmes.

03 FILLER PIC X(30) VALUE...

02 Tab REDEFINES TABMES.

. 03 MES OCCURS 12 PIC X(10)

01 CABECERA1.

.

. Se definen las cabeceras si las hay


PROCEDURE DIVISION.

{COBOL}

{COBOL}

MOVE Nombre de Campo TO Nombre de campo [Nombre de campo ....] Literal

{COBOL}

{COBOL}

ADD Nombre de Campo TO Nombre de campo

Literal GIVING

{COBOL}

{COBOL}

{COBOL}

{COBOL}

SUBTRACT Nombre de Campo FROM Nombre de campo

Literal Literal Numerico

GIVING Nombre de campo

{COBOL}

{COBOL}

{COBOL}

{COBOL}

MULTIPLY Nombre de Campo FROM Nombre de campo Literal Literal Numerico

GIVING Nombre de campo

{COBOL}

{COBOL}

{COBOL}

{COBOL}

DIVIDE Nombre de Campo FROM Nombre de campo

Literal Literal Numarico

GIVING Nombre de campo

{COBOL}

{COBOL}

Nombre de Campo

COMPUTE Nombre de Campo = Literal Numerico

Expresión Aritmética

{COBOL}

{COBOL}

STOP RUN

Literal

{COBOL}

{COBOL}

DATE

ACCEPT Nombre de Campo FROM DAY

TIME

ACCEPT Nombre de Campo

{COBOL}

{COBOL}

LENGTH-CHECK

AUTO-SKIP

ACCEPT (Fila, Columna) Nombre de Campo WITH PROMPT

BEEP

UPDATE


{COBOL}

{COBOL}

Literal

DISPLAY (Fila, Columna) Nombre de Campo

ERASE

{COBOL}

{COBOL}

PERFORM Nombre de Parrafo THRU Nombre de Parrafo

Nombre de seccion

{COBOL}

{COBOL}

PERFORM Rango Entero TIMES

Nombre de campo

PERFORM Rango VARYING Nombre de Indice FROM Cantidad1

BY Cantidad2 UNTIL Condicion.

IF Condicion Declaracion/es ELSE Declaracion/es.

{COBOL}

{COBOL}

INPUT

OPEN OUTPUT Nombre de Fichero ...... .......

I-O

EXTEND

Lectura Secuencial

READ Fichero AT END Declaracion Imperativa.

Lectura Secuencial, si ACCESS IS DYNAMIC

READ Fichero NEXT AT END Declaracion Imperativa.

Lectura al azar (solo ficheros Indexados)

READ Fichero INVALID KEY Declaracion Imperativa.

{COBOL}

{COBOL}

GREATER

START Fichero KEY IS [NOT] LESS CLAVE

EQUAL

DELETE Fichero (Solo Indexados)


WRITE Rimpres FROM Nombre de Grupo [AFTER/BEFORE]

[AT EOP Declaración Imperativa.]

WRITE Registro de Fichero [ FROM Nombre de Grupo]

[INVALID KEY Declaracion Imperativa.]

REWRITE Nombre de Registro

CLOSE Fichero ..... ......

STRING Emisor DELIMITED BY Literal

INTO Receptor WITH POINTER Contador

SORT Fichero Sort ASCENDING/DESCENDING Nombre de Campo del Fsort

INPUT PROCEDURE Nombre de Seccion(ENTRADA)

OUTPUT PROCEDURE Nombre de Seccion(SALIDA).

ANEXO DE FICHEROS

1.- FICHEROS.

a) Definición en la SELECT

1.1.- Para ficheros secuenciales.

SELECT Fichero ASSIGN TO DISK.

1.2.- Para ficheros Indexados.

SELECT Fichero ASSIGN TO DISK

ORGANIZATION INDEXED

RECORD KEY IS CLAVE.

[ACCESS IS IS RANDOM/DYNAMIC]

b) Definiciones en la DATA DIVISION.

Para ambos ficheros es exactamente igual.

c) Creacion de un fichero.

Si secuencial se pueden añadir registros al final se se abre de EXTEND. No pueden darse altas entre 2 registros. Las altas se graban con WRITE.

Si indexado se abre el fichero de I-O con acceso RANDOM, se pueden dar altas al final y entre registros. Se graban con WRITE.

NOTA: NO SE ABRIR UN FICHERO QUE YA EXISTA DE OUTPUT, SE BORRARIA.


Si un fichero indexado se desea crear y añadir registros en el mismo programa, se procede de la siguiente forma:

En la SELECT se incorpora la clausula FILE STATUS IS ERR. ERR es un campo de 2 octetos alfanumerico, donde el programa dejará un codigo de error si éste se produce durante la apertura del fichero. ERR = ð30" significa, fichero no existente.

PROCEDURE DIVISION.

COMIENZO.

OPEN I-O FICHERO

IF ERR=ð30"

OPEN OUTPUT FICHERO

CLOSE FICHERO

OPEN I-O FICHERO.

MENU.

Etc.

d) Consulta de Ficheros.

1.1- En ficheros Secuenciales.

Solo se puede realizar secuencialmente.

Para obtener un listado de todo el fichero podemos realizar el siguiente seudocodigo:

FIN=ðNð

LEER FICHERO

DO UNTIL FIN =ðSð

PROCESO

MOVER CAMPOS A DETALLE

LEER FICHERO AT END FIN=ðSð.

ENDDO

1.2.- En ficheros Indexados.

Se puede realizar de tres formas:

1.2.1.- Secuencialmente.

Se hace igual que para ficheros secuenciales.

1.2.2.- Al azar.

Se tiene que poner en la Select ACCESS IS RANDOM. El seudocodigo sería:


ENCONTRADO=ðSð

CLAVE = INDICATIVO

LEER FICHERO INVALID KEY ENCONTRADO=ðSð

IF ENCONTRADO = ðSð

VISUALIZAR REGISTRO

ELSE

VISUALIZAR ERROR.

1.2.3.- Entre limites (desde un indicativo hasta otro dados por teclado)

El seudocodigo sería el siguiente:

<COMIENZO>

ACEPTAR DESDE

ACEPTAR HASTA

CLAVE=DESDE

ENCONTRADO=ðSð

START FICHERO KEY IS NOT LESS CLAVE

INVALID KEY ENCONTRADO=ðSð

IF ENCONTRADO = ðSð

INVOCA <PROCESO>

ELSE

VISUALIZAR ðNO ENCONTRADOð.

<FIN>

<PROCESO>

FIN=ðSð

LEER FICHERO NEXT

DO UNTIL CLAVE > HASTA OR FIN=ðSð

PROCESO

LISTAR

LEER FICHERO NEXT AT END FIN=ðSð

ENDDO

<FIN-PROCESO>

e) Modificacion de Registros.

Tanto en ficheros secuenciales como indexados se pueden REGRABAR, previa consulta, si el fichero está abierto de I-O.

Si la actualizacion es mediante teclado, se utiliza la orden:

ACCEPT CAMPO WITH UPDATE

Que visualiza el contenido del campo y permite modificarlo, de forma que un <ENTER> solo, no altere el contenido actual del campo.

f) Bajas de registros.

En un fichero secuencial NO PUEDEN DARSE BAJAS. (Solo con Copia)

En un fichero indexado se pueden dar bajas una vez consultado el registro, con la orden DELETE FICHERO.

RESUMEN DE COBOL

COBOL .-Resumen de Comandos

Pagina: 1

GESTINMATICA.- Centro Homologado de F.P.2. en Informatica de Gestión

COBOL .-Resumen de Comandos

Pagina: 7