Академический Документы
Профессиональный Документы
Культура Документы
Informacion de contacto:
e-mail 1 : cesarrdz@gmail.com
e-mail 2 : cesarrdz@excite.com
Sito web: http://cesar.crbyte.com
Visita:
http://cesar.crbyte.com para mas tutoriales de C++,
lenguaje C, Base de datos relacionales, programas con
codigo fuente, etc.
http://crbyte.com para juegos de computadora que puedes
bajar gratis
CONTENIDO
Prefacio 4
Bibliografia 75
Gracias
COBOL
Abreviación de COmmon Business Oriented Languaje (Lenguaje
común orientado a aplicaciones comerciales).
Programacion estructurada
Consiste en segmentar los programas en secciones
independientes o módulos.
Area Columnas
De Numeros de Secuencia 1-6
De Indicación 7
Area A 8-11
Area B 12-72
1 2 3 4 5 6 7 8 11 12 72 73
Area de
Numeros de area A area B
Secuencia
^ ^
Area de Indicación Area Ignorada
DIVISIONES
Nombre Propósito
IDENTIFICATION DIVISION Sirve para identificar el
programa a la computadora
ENVIRONMENT DIVISION Describe el equipo de cómputo
que se utilizará por un
programa especifíco
DATA DIVISION Describe los formatos de
entrada y
salida a ser procesados por
el programa. También define
Cualquier constante o área de
trabajo para procesar los
datos
PROCEDURE DIVISION Contiene las instrucciones
para leer datos de entrada,
procesarlos y crear
resultados
Ejercicio sugerido:
Realizar un programa que contenga sus datos personales en
la Identification División, ademas los despliegue en la
pantalla.
Registro
Unidad de datos dentro de un archivo que contiene
información de una naturaleza especifica.
Campo
Grupo de columnas o posiciones consecutivas reservadas para
una clase especifica de datos.
Datos agrupados
Campo que esta subdividido.
Datos elementales
Campo que no esta subdividido.
Tipos de Variables
1. alfabetico
Un campo que puede contener letras o blancos.
2. alfanumerico
Un campo que puede contener cualquier carácter válido;
puede contener combinaciones de letras, dígitos y
caracteres especiales.
3. numerico
Cualquier campo que solamente contenga dígitos y signos
"+" o "-".
Ejemplos validos:
FECHA-ENT, NOMBRE, IMPORTE1
Archivos }
Registros } Definidos por los nombres de datos
Campos }
2. Constantes
Datos que permanecen fijos dentro del programa; los datos
fijos se requieren para procesar lo que no depende de las
entradas del sistema.
Tipos de constantes
1. Constante numérica
Una constante usada en la PROCEDURE DIVISION para las
operaciones aritméticas.
2. Constante no numérica
Una constante usada en la PROCEDURE DIVISION para todas las
operaciones excepto las operaciones aritméticas.
3. Constante figurativa
Una palabra reservada COBOL.
Ejemplo:
ZERO o ZEROES o ZEROS
SPACE o SPACES
Ejemplos validos:
+15.8
-387.58
42
.09
-.97
Ejemplos no validos:
15.+8
Ejemplo:
"código"
"ABC 123"
"1,000"
"MENSAJE"
"$100.00"
Constantes figurativas
Ejemplo:
move zeros to total.
move spaces to nombre.
SPECIAL-NAMES.
Asigna nombres definidos por el usuario para
implementar nombres estandar, como la impresora. Este
párrafo puede ser usado para cambiar los caracteres de
edición.
File-control
Define los nombres de los archivos que van a hacer
procesados y los asocia a cada uno de ellos con un
dispositivo especifico de entrada o salida.
I-O-control
Es opcional; especifica el punto donde se establece la
operación RERUN, esto es, indica los archivos que van a
compartir el mismo espacio físico del buffer.
Ejemplo FILE-CONTROL:
FILE-CONTROL.
SELECT archivo ASSIGN TO DISK.
SELECT reporte ASSIGN TO PRINTER.
Ejemplo: C0103
*-
* Programa para mostrar los párrafos de la
* environment division.
* Revision: 08/FEB/93
*-
identification division.
program-id. prog0103.
author. R. CESAR RODRIGUEZ CERVANTES.
installation. Centro de Computo C.S.
date-written. 31 Agosto de 1991.
date-compiled.31 Agosto de 1991.
security. Prog. para clase de environment division.
environment division.
configuration section.
source-computer. PC-KLH195.
object-computer. PC-KLH195.
data division.
procedure division.
inicio.
*-
* Para desplegar varias constantes y/o variables con un
* mismo DISPLAY es necesario separarlos con un espacio.
* la coma es opcional. Lo importante es el espacio.
*-
display "Este es mi programa No: ", "3", " en COBOL".
stop run.
File section
Define todas las áreas de datos que son parte de los
archivos de entrada o salida.
Working-storage section
Prepara la memoria para los campos que no son parte de la
entrada o salida, pero que se requieren para el proceso.
Estas incluyen constantes, áreas de trabajo, áreas de paso,
etc.
Report section
(El compilador de IBM Mainframe o Mini)
Describe los formatos específicos de los reportes que son
generados por el dispositivo Generador de Reportes. Esta
sección se usa solo para tipos específicos de proceso de
reportes y generalmente no se usa en la mayoría de los
programas de COBOL.
Linkage section
(El compilador de Microsoft)
Esta es necesaria solo si el programa es llamado desde otro
programa, y la sentencia CALL del programa que lo llama
contiene el párrafo USING. Esta sección describe los datos
que son definidos en el prog. que lo llama y son
referenciados por ambos programas.
Screen section
(El compilador de Microsoft)
Es un extensión al COBOL hecha por Microsoft para
almacenamiento y organización de datos mediante pantallas
interactivas.
Ejemplo:
01 fecha.
02 anio...
02 mes...
02 dia...
Clausula PICTURE
1. Especifica el tipo de datos contenido dentro del dato
elemental
2. Indica el tamaño del campo.
Ejercicio sugerido:
Realice un programa que ingrese un nombre separándolo
por:
Nombre
Apellido paterno
Apellido materno
Parrafos
La PROCEDURE DIVISION está dividida en parrafos. Cada
párrafo define una rutina independiente, o serie de
instrucciones, diseñada para efectuar una función
especifica.
Formato:
PERFORM nombre-parrafo.
La instrucción PERFORM:
1. Ejecutará todas las instrucciones en el parrafo nombrado.
2. Transferirá control al siguiente paso en secuencia que
sigue a la instrucción.
Ejemplo: C0106
*-
* Uso de la instruccion perform
*-
identification division.
program-id. prog0105.
author. R. Cesar Rodriguez Cervantes.
environment division.
data division.
working-storage section.
01 alumno.
02 a-num-ctl picture x(10).
02 a-nombre picture A(30).
02 a-num-mat picture 9.
01 materia.
02 m-num-mat picture 9.
02 m-nombre picture A(30).
procedure division.
inicio.
perform titulo.
perform alumnos.
perform materias.
fin.
stop run.
titulo.
display "**** Control de Materias ****".
alumnos.
display "Numero de Control: ".
accept a-num-ctl.
display "Nombre: ".
accept a-nombre.
display "Numero de Materia: ".
accept a-num-mat.
materias.
move a-num-mat to m-num-mat.
display "Numero de Materia: ", m-num-mat.
display "Materia: ".
accept a-nombre.
Ejercicio sugerido:
Realize un programa utilizando:
01 ventas.
02 fecha.
03 anio picture 99.
03 mes picture 99.
03 dia picture 99.
02 cajero picture A(30).
02 cantidad picture 9(6)v99.
La captura de datos debe ser centrado en la pantalla
Instruccion MOVE
MOVE campo-emisor TO campo-receptor.
Formato:
{ nombre-de-dato-1 }
MOVE { constante } TO nombre-de-dato2
{ constante figurativa }
MOVE numerico
1) Al mover un campo entero emisor al campo receptor, el
movimiento es de izquierda a derecha. Todas las
posiciones de orden superior (las de extrema izquierda)
enteras del campo receptor seran llenadas con ceros.
Ejemplo:
campo1 picture 999
campo2 picture 9(4)
campo1 campo2
1 2 3 4 5 6 7
campo1 campo2
1 2 3 0 1 2 3
campo1 campo2
0 1 2 3 4
campo1 campo2
0 1 2 2 2
Ejemplo:
campo1 picture 99v99
campo2 picture 99v999
campo1 campo2
1 2 3 4 5 6 7 8 9
^ ^
campo1 campo2
1 2 3 4 1 2 3 4 0
^ ^
Ejemplo:
campo1 picture XXX
campo2 picture X(4)
campo1 campo2
A B C D E F G
campo1 campo2
A B C A B C
Ejemplo:
campo1 picture XXX
campo2 picture XX
campo1 campo2
A B C
campo1 campo2
A B C A B
Ejemplo: C0201
* Uso de la instruccion move
*-
identification division.
program-id. prog0201.
author. R. Cesar Rodriguez Cervantes.
date-written. 08/feb/93.
date-compiled. 08/feb/93.
environment division.
data division.
working-storage section.
77 sigue pic x.
01 cliente.
02 num-cte pic 99.
02 nombre pic A(20).
02 dir pic x(20).
02 dir-ent pic x(10).
02 saldo pic 9(4).
01 cant pic 9(3).
01 precio pic 99.
01 total pic 999.
procedure division.
inicio.
perform titulo.
move space to sigue.
move 10 to precio.
move 0 to cant.
move 0 to total.
perform pide-vta.
display (11, 30) "Saldo: ", saldo.
display (15, 20) "Presiona ENTER para continuar"
accept sigue.
fin.
stop run.
titulo.
display (5, 20) "**** VENTAS ****".
pide-vta.
display (6, 15)"Numero de Cliente:".
accept (6, 35) num-cte.
display (7, 15) "Nombre:".
accept (7, 35) nombre.
display (8, 15) "Direccion:".
accept (8, 35) dir.
move dir to dir-ent.
display (10, 15) "Cantidad:".
accept (10, 35) cant.
multiply cant by precio giving total.
move total to saldo.
Campo Receptor
Campo Numerico Alfabetico Alfanumerico Agrupado
Emisor
Numerico si no si si
Alfabetico no si si si
Alfanúmerico no indefinidos si si
ZEROS si no si si
SPACES no si si si
Agrupado no si si si
Operaciones aritmeticas
Instruccion ADD
Suma
Formato 1:
{variable } [variable ]
ADD {constante},[constante],...TO (variable_resultado)
Ej:
ADD 10 TO n
ADD 10,20 TO n
Formato 2:
{variable } [variable ]
ADD {constante},[constante],...GIVING (variable_resultado)
Ej:
ADD 10, 20 GIVING n
ADD 10, b, 3 GIVING n
Formato 1:
[variable ] [variable ]
SUBTRACT [constante],[constante] ...FROM
(variable-resultado)
Ej:
SUBTRACT 10 FROM n
SUBTRACT 10, 20, b FROM n
Formato 2:
[variable ] [variable ]
SUBTRACT [constante],... FROM [constante]
GIVING (variable-resultado)
Ej:
SUBTRACT 10 FROM b GIVING n
SUBTRACT 10, 20 FROM b GIVING n
MULTIPLY (Multiplicación)
Formato 1:
{variable-1}
MULTIPLY {constante } BY (variable-2)
Ejemplo:
Formato 2:
{variable-1 } {variable-2 }
MULTIPLY {constante-1} BY {constante-2} GIVING (variable-3)
Ejemplo:
DIVIDE (División)
Formato 1:
{variable-1}
DIVIDE {constante } INTO (variable-2)
Ejemplo:
Formato 2:
{variable-1 } [BY ] {variable-2 }
DIVIDE {constante-1} [INTO] {constante-2}
GIVING (variable-3) [ROUNDED][REMAINDER (variable-3)]
Ejemplo:
Ejemplo:
Ejemplo: C0202
*-
* Operaciones aritmeticas con las instrucciones
* saca prom. general de alumnos menos un por ciento
* segun las faltas del grupo.
* Revision: 08/feb/93
*-
identification division.
program-id. prog0202.
author. R. Cesar Rodriguez Cervantes.
date-written. sep/91.
date-compiled. 08/feb/93.
environment division.
data division.
working-storage section.
77 prom-gral pic 999v99.
77 num-al pic 99.
77 sigue pic x.
01 calif pic 9(3)v99.
01 faltas pic 9(2).
01 menos pic 9(3)v9(2).
01 alumno.
02 a-num-ctl pic x(10).
02 a-nombre pic A(25).
02 a-calif pic 999v9(2).
procedure division.
inicio.
move 0 to prom-gral, num-al, faltas.
move 0 to calif.
move "S" to sigue.
perform titulo.
perform alumnos.
perform promedio.
display " ".
display "Presiona ENTER para continuar".
accept sigue.
fin.
stop run.
titulo.
display "**** Control de Materias ****".
alumnos.
add 1 to num-al.
display "Numero de Control: ".
Introduccion al lenguaje cobol Rogelio Cesar Rodriguez Cervantes 31
accept a-num-ctl.
display "Nombre: ".
accept a-nombre.
display "Calificacion: ".
accept a-calif.
add a-calif to calif.
display "Otro Alumno? (S/N): ".
accept sigue.
if sigue = "S" or sigue = "s"
go to alumnos.
promedio.
Display "Numero de Faltas (por grupo): ".
accept faltas.
multiply faltas by 0.1 giving menos.
divide num-al into calif giving prom-gral.
subtract menos from prom-gral.
Display "Promedio General: ", prom-gral.
Display "Por ciento menos por faltas: " menos.
Formato:
{constante }
COMPUTE (variable) [ROUNDED] = {expresion-aritmetica}
{variable }
[ON SIZE ERROR] (instruccion-imperativa)]
Ej:
COMPUTE impuesto = 0.10 * total
COMPUTE a ROUNDED = b * c / d
COMPUTE neto = total - 0.10 * total
EJEMPLO: C0203
*-
* Operaciones aritmeticas usando el COMPUTE.
* Igual al prog0202, solo que ahora con el compute
* y variables de formato.
* Saca prom. general de alumnos menos un por ciento
* segun las faltas del grupo.
* Revision: 09/feb/93
*-
identification division.
program-id. prog0203.
author. R. Cesar Rodriguez Cervantes.
date-written. 09/feb/93.
date-compiled. 08/feb/93.
environment division.
data division.
working-storage section.
77 prom-gral pic 999v99.
77 num-al pic 99.
77 sigue pic x.
01 calif pic 9(3)v99.
01 faltas pic 9(2).
01 menos pic 9(3)v9(2).
01 alumno.
02 a-num-ctl pic x(10).
02 a-nombre pic A(25).
02 a-calif pic 999v9(2).
01 desp-3-2 pic ZZ9.9Z.
Ejercicio sugerido
a)Capture la siguiente información mientras el asi lo desee
01 venta.
02 numart
02 cantidad
02 precio
b) Calcule la venta total y el impuesto del total
c) Despliegue la venta totaly el impuesto
Instrucción condicional IF
Es una instrucción que efectua una operación dependiendo de
la presencia de una condición.
Formato basico:
IF (condición)
instruccion(es) imperativa(s)
ELSE
instruccion(es) imperativa(s).
Ejemplo 1:
IF A > 10
DISPLAY "A es mayor a 10". <- El punto
Ejemplo 2:
IF variable IS POSITIVE
COMPUTE A = A / variable
ELSE
DISPLAY "ERROR: Divison entre cero". <- El punto
Ejemplo 3:
IF A > B
IF B > C
DISPLAY "A es mayor que B y que C"
ELSE
NEXT SENTENCE
ELSE
PERFORM rutina-pregunta. <- punto
EJEMPLO: C0204
*-
* EJ: del IF anidado.
* Simulacion de un reloj checador de la empresa
* GRUÑON S.A., al checar, la puerta se abre
* automaticamente.
* Nota: ningun empleado seria capaz de llegar
* mas de una hora tarde (bajo riesgo de
* tener una terminacion involuntaria)
*-
identification division.
program-id. prog0204.
author. R. Cesar Rodriguez Cervantes.
date-written. 09/feb/93.
date-compiled. 09/feb/93.
environment division.
data division.
working-storage section.
01 num-ctl pic x(10).
01 cr pic x.
01 tiempo.
02 hora pic 99.
02 min pic 99.
02 seg pic 99.
01 entrada.
02 e-hora pic 99.
02 e-min pic 99.
procedure division.
inicio.
display "Reloj Checador ", erase.
perform lee-tiempo.
display "Hora: " hora " Min: " min.
perform checa.
Ejercicio sugerido
Realice un programa que lea un numero y diga si el numero
leido es par o impar.
Formato:
PERFORM (nombre-de-parrafo-1) [THRU (nombre-de-parrafo-n)]
VARYING (variable-1)
{variable-2} {variable-3}
FROM {entero-1 } BY {entero-2 }
UNTIL (condicion)
Ejemplo 1:
PERFORM ciclo until otra-vez = "N" OR otra-vez = "n".
Ejemplo 2:
PERFORM llena-tabla VARYING i FROM 1 BY 1 UNTIL i = 10.
Ejemplo 3:
PERFORM rutina-1 THRU rutina-3.
Ejemplo 4:
PERFORM rutina 5 TIMES.
Ejemplo: C0205
*-
* Ejemplo: perform ... thru ... until
*-
identification division.
program-id. prog0205.
author. R. Cesar Rodriguez Cervantes.
environment division.
data division.
working-storage section.
77 al-prom pic 9999.
77 sigue pic x.
77 cr pic x.
01 alumno.
02 a-num-ctl pic x(10).
02 a-nombre pic A(25).
02 a-calif pic 999.
01 nom-mat pic x(20).
procedure division.
inicio.
move 0 to al-prom.
move "S" to sigue.
perform titulo.
perform lee-alumno thru fin-lee-alumno until sigue = "N"
or sigue = "n".
fin.
stop run.
titulo.
display erase.
display (5, 10) "**** Control de Materias ****".
lee-alumno.
Introduccion al lenguaje cobol Rogelio Cesar Rodriguez Cervantes 38
display (7, 15) "Numero de Control: " erase.
accept (7, 35) a-num-ctl.
if a-num-ctl < 0
perform mensaje
go to lee-alumno.
lee-nombre.
display (8, 15) "Nombre: ".
accept (8, 35) a-nombre.
if a-nombre = spaces
perform mensaje
go to lee-nombre.
materias.
move 0 to al-prom.
perform lee-materias thru fin-lee-materias 4 times.
compute al-prom = al-prom / 4.
display (12, 15) "Promedio del Alumno: ", al-prom.
fin-lee-alumno.
display (14, 15) "Otro Alumno? (S/N): ".
accept (14, 35) sigue.
lee-materias.
display (9, 15) "Materia: " erase.
accept (9, 35) nom-mat.
if nom-mat = spaces
perform mensaje
go to lee-materias.
calif-mat.
display (10, 15) "Calificacion: ".
accept (10, 35) a-calif.
if a-calif < 0
perform mensaje
go to calif-mat.
add a-calif to al-prom.
fin-lee-materias.
exit.
mensaje.
move space to cr.
display (24, 1) "Dato Erroneo, Ingrese de nuevo. RETORNO
continuar".
accept cr.
display (24, 1) erase.
Ejercicio sugerido
Hacer el ejemplo anterior utilizando cada opcion del
perform visto hasta ahorita (incluyendo uno con if... goto)
Clausula OCCURS
Sirve para indicar la ocurrencia repetitiva de elementos
que tienen el mismo formato.
Formato:
(numero-de-nivel) (variable) OCCURS (entero) TIMES.
Ejemplo 2:
01 arreglo.
02 materias OCCURS 10 TIMES.
03 materia PIC X(10).
03 numero-de-unidades PIC 99.
.
.
.
IF materia(2) = "COBOL"
MOVE 7 to numero-de-unidades(2).
Ejemplo: C0207
*-
* Ejemplo: OCCURS
*-
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG0207.
DATE-WRITTEN. 9/FEB/93.
DATE-COMPILED.9/FEB/93.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-PC.
OBJECT-COMPUTER. IBM-PC.
DATA DIVISION.
WORKING-STORAGE SECTION.
Ejercicios sugeridos
Ejemplo: C0301
*-
* Archivos secuenciales
* Crea y agrega registros
*-
identification division.
program-id. prog0301.
author. R. Cesar Rodriguez Cervantes.
environment division.
input-output section.
file-control.
select materias assign to disk organization is sequential.
data division.
file section.
fd materias
label records are standard
value of file-id is "materias.dat"
data record is reg-mat.
01 reg-mat.
02 num-mat pic 99.
02 desc pic x(20).
working-storage section.
77 sigue pic x.
procedure division.
inicio.
perform abre-archivos.
perform agrega-mat until sigue = "N" or sigue = "n".
perform cierra-archivos.
inicio.
perform abre-archivos.
perform agrega-mat until sigue = "N" or sigue = "n".
perform cierra-archivos.
fin.
stop run.
abre-archivos.
open extend materias.
agrega-mat.
display "No. de Materia: ", erase.
accept num-mat.
display "Nombre : ".
accept desc.
perform escribe-mat.
display "Otra Materia (s/n): ".
accept sigue.
escribe-mat.
write reg-mat.
cierra-archivos.
close materias.
Ejercicio sugerido:
Implementar con archivos secuenciales los programas ejemplo
siguientes:
Simbolo Significado
X Campo alfanumerico
9 Campo numerico
A Campo alfabetico
V Punto decimal supuesto, campos numericos
S Signo de operacion, campos numericos
Ejemplo: C0402
* consultas en impresora
*-
identification division.
program-id. prog0402.
author. R. Cesar Rodriguez Cervantes.
date-written. 11/feb/93.
date-compiled.11/feb/93.
environment division.
input-output section.
Instruccion COPY
Permite incluir codigo fuente pre-escrito en el programa.
Formato:
COPY (nombre-de-archivo)
[REPLACING palabra-1 BY palabra-2 palabra-3 BY palabra-4...]
Ejemplo:
Si tenemos como codigo de biblioteca los sig.:
01 archivo.
02 A pic 99.
02 B pic 9(5).
02 C occurs 10 times pic XX.
ENVIRONMENT DIVISION
dentro de la CONFIGURATION-SECTION:
SOURCE-COMPUTER. COPY (archivo).
OBJECT-COMPUTER. COPY (archivo).
SPECIAL-NAMES. COPY (archivo).
DATA DIVISION
dentro de la FILE SECTION:
FD nombre-archivo COPY (archivo).
PROCEDURE DIVISION
nombre-de-parrafo. COPY (archivo).
Dispositivo SORT
Ordenamiento de registros de un archivo.
FORMATO:
SORT (nombre-archivo-a-ordenar)
{ DESCENDING}
ON { ASCENDING } KEY (variable-1)
[ { DESCENDING} ]
[ ON { ASCENDING } KEY (variable-1) ] ...
{ USING archivo-2 GIVING archivo-3 }
Ejemplo:
Teniendo la sig. información en un archivo ordenado
se quiere un reporte donde agrupe la información por
departamento.
Archivo VENTAS
Departamento :Calzado
Cliente :Juan Perez
Importe compra :100.00
Departamento :Calzado
Cliente :Victor Lopez
Importe compra :850.00
Departamento : Deportes
Clientes :Maria Gutierrez
Importe compra :45.00
Departamento: Calzado
Cliente Importe compra
Juan Perez 100.00
Victor Lopez 850.00
Departamento: Deportes
Clientes Importe compra
Maria Gutierrez 45.55
Ejemplo: C0405
*-
* enca04.cob
* Encabezados de formato comunes
* Formato de reportes. unidad 4.
*-
01 raya pic x(79) value all "-".
01 titulos.
02 filler pic xx value spaces.
02 t-fecha pic 99b99b99.
02 filler pic x(25) value spaces.
02 filler pic x(9) value "CONSULTAS".
02 filler pic x(20) value spaces.
02 t-hora pic 99b99b99.
01 encabezado.
02 filler pic x(6) value "BOLETA".
02 filler pic xx value spaces.
02 filler pic x(6) value "CAJA #".
02 filler pic x(2) value spaces.
02 filler pic x(10) value "DESCUENTO".
02 filler pic x(2) value spaces.
02 filler pic x(5) value "FECHA".
01 disp-forma.
02 filler pic xx value spaces.
02 d-boleta pic z9.
02 filler pic x(6) value spaces.
02 d-num-caja pic z9.
02 filler pic x(6) value spaces.
02 d-descuento pic ZZ9.
02 filler pic x(7) value spaces.
02 d-fecha.
03 f-mm pic 99 value 0.
03 filler pic x value "/".
03 f-dd pic 99 value 0.
03 filler pic x value "/".
03 f-aa pic 99 value 0.
Formato:
SELECT (nombre-de-archivo) ASSIGN TO (dispositivo)
[ORGANIZATION IS INDEXED]
ACCESS MODE IS RANDOM
RECORD KEY IS (nombre-de-datos)
Formato: WRITE
WRITE (nombre-de-registro)
[INVALID KEY (instrucciones imperativas)]
Formato: READ
READ (nombre-de-archivo)
[INVALID KEY (instrucciones imperativas)]
Ejemplo: C0602
*
* ORGANIZACION DE ARCHIVOS RELATIVOS
* Consulta en un archivo relativo
*
identification division.
program-id. prog0502.
author. R. Cesar Rodriguez Cervantes.
environment division.
input-output section.
file-control.
select materia assign to disk
organization is relative
access mode is random
relative key is num-reg.
data division.
file section.
fd materia
label records are standard
value of file-id is "materia.dat"
data record is reg-mat.
01 reg-mat.
02 num-mat pic 99.
02 desc pic x(20).
working-storage section.
77 sigue pic x.
77 num-reg pic 99 value 0.
procedure division.
inicio.
perform abre-archivos.
move 1 to num-mat.
perform cons-mat thru ex-cons until num-mat = 0.
perform cierra-archivos.
fin.
stop run.
abre-archivos.
open input materia.
cons-mat.
display "No. de Materia: (0 fin)", erase.
accept num-mat.
if num-mat = 0
go to ex-cons.
perform lee-mat.
display "Nombre : " desc.
ex-cons.
exit.
lee-mat.
read materia invalid key perform mensaje.
cierra-archivos.
close materia.
mensaje.
display "Error: Numero de Materia NO Existe".