|
 |
 |
Environment Division
página(s) : 2/2 (1905 palabras totales en este texto) (161722 Lecturas) 
Cláusula ACCESS MODE indica el modo de acceso al fichero, puede ser
SEQUENTIAL, RANDOM o DYNAMIC, si no se especifica ninguno o si el fichero es SEQUENTIAL
entiende que el modo será SEQUENTIAL.
RANDOM indica que accederemos a el aleatoriamente por su clave y DYNAMIC (la mas utilizada)
con la que podremos acceder al fichero en el modo que queramos dentro del programa, unas veces secuencialmente, si nos interesa,
otras veces por su clave.
Cláusula RECORD KEY se utiliza solo si el fichero es indexado y en el decimos cual es el nombre de la clave por la cual accederemos a
los registros. Esta deberá ser alfanúmerica y tendrá que estar especificada en la FD del fichero.
Si el archivo fuera RELATIVE, esta clausula se sustituiría por RELATIVE KEY e indicará el número de registro del fichero,
deberá estar declarado en la WORKING-STORAGE SECTION como una variable numérica sin signo.
Cláusula ALTERNATE RECORD KEY solo para ficheros indexados e identifican una o mas claves
alternadas para nuestros registros, por ejemplo en un fichero de clientes cuya clave principal sería el código, podríamos asignar
como clave alternativa el NIF, y podríamos acceder a el por las dos claves, bien por código o bien por NIF, será también
alfanumérico y deberá también estar declarado en la FD. Si aparece WITH DUPLICATES,
indica que ésta clave alternativa pudiera estar duplicada, por ejemplo si hubieramos escogido como clave alternada además del NIF, el Nombre del cliente,
podría darse el caso de que dos clientes tuvieran el mismo nombre.
Cláusula FILE STATUS aqui damos un nombre de una variable que especificaremos en la
WORKING como un campo alfanumérico de dos caracteres donde el programa depositará el código
de error que ocurra en el fichero, dependiendo del valor nosotros podremos operar o hacer alguna acción en concreto.
El párrafo I-O CONTROL se utiliza par indicarle al programa cuantos archivos van a utilizar el mismo
area de memoria para trabajar, os puedo decir poco mas de éste párrafo porque yo no lo he utilizado nunca (lo que no quiere decir que no sea útil).
Ejemplo:
|
ENVIRONMENT
DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. RMCOBOL.
OBJECT-COMPUTER. RMCOBOL.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CLIENTES ASSIGN TO RANDOM
"C:DATOSCLIENTES.DAT" ORGANIZATION INDEXED
ACCESS DYNAMIC RECORD KEY KEY-CLIENTE ALTERNATE RECORD KEY-CLIENTE1 FILE STATUS
STACLI.
SELECT IMPRESORA ASSIGN TO PRINT "PRINTER".
|
|
|
Hemos declarado el archivo CLIENTES como indexado con dos claves, una principal KEY-CLIENTE
y otra alternativa KEY-CLIENTE1 y hemos asignado una variable para guardar los posibles códigos
de error para cuando operemos con éste fichero STACLI. Al indicarle el acceso dinámico le decimos que una vez dentro del
programa podremos acceder al fichero secuencialmente o bien directacmente al registro que
queramos por cualquiera de las claves.
Como el fichero IMPRESORA es secuencial no es necesario ninguna
aclaración, al darle el nombre PRINTER cojerá la impresora que tengamos por defecto, si
le damos cualquier otro nombre que no identificara a ninguna impresora, el resultado
sería grabar todo lo que debería salir por la impresora en un archivo con ese nombre. |
|
Nota final:
Creo que es una de las partes mas interesantes de la programación cobol y que cuando he utilizado alguno de
éstos nuevos lenguajes orientados a objetos y que utilizan bases de datos, siempre he echado en falta.
Para mi siempre es grato dirigirme a la Environment de cualquier programa y saber con
exactitud todos los ficheros que se van a utilizar en ese programa.
Apreciar que para cada especificación de fichero en la Select solo se pone el punto al final de todas
las clausulas del párrafo.
Al asignar la impresora, si asignamos el
nombre PRINTER, éste hace referencia a la impresora por defecto pero tambien podríamos
utilizar un nombre para especificar una impresora de red, por ejemplo, si en nuestra red
existe una impresora que esta en PENTIUMHPLASER, podemos identificar un nombre en el
Autoexec.bat para asignar ese valor a una variable de entorno como:
IMPRE="PENTIUMHPLASER" y luego en el programa especificar como nombre de
dispositivo de la impresora IMPRE, SELECT IMPRESORA
ASSIGN TO PRINT IMPRE.
En realidad haciendo ésto último
podemos asignar cualquier archivo que esté en cualquier dirección de la red, ya que el
nombre que damos es lógico y su asignación la podemos definir con una variable de
entorno donde queramos.
| (1/2) | |
|
|