Sei sulla pagina 1di 79

INTRODUCCIN

La cantidad de informacin que se almacena hoy en da en las computadoras es admirale por tanto es necesario
contar con los sistemas de informacin especiali!ados en una "rea de traa#o $llamados tami%n paquetes
especiales de soft&are' permitiendo esto la estandari!acin en los procedimientos de introduccin( almacenamiento
y procesos de datos en ellos) *sta estandari!acin elimina la duplicaron innecesaria de informacin ( por e#emplo
en el caso de + archi,os que contienen la misma informacin utili!ados por diferentes departamentos)
*ste es el o#eti,o que como futuros pro-ramadores . analistas de sistemas de computacin( aprender las partes
necesarias para entender( como funciona un sistema de contailidad/ as como aprender a pro-ramar una
aplicacin comercial tan com0n en el "mito empresarial( tan sencillo y ,ital en la informacin de un pro-ramador
profesional)
1or esto( es importante que se ten-a el conocimiento pleno del esfuer!o que se dee hacer para apro,echar al
m"2imo el material que se presenta continuacin)
3eneralidades
Un pro-rama es un con#unto de instrucciones que diri-en una computadora en la e#ecucin de una tarea de
procesamiento de datos) Un len-ua#e de pro-ramacin es una serie de caracteres( palara y re-las sint"cticas) 4ue
se pueden emplear para escriir un pro-rama) Cada modelo de computadora tiene su propio len-ua#e( el cual esta
determinado por la estructura de hard&are $maquinas y equipos' ) *sos len-ua#es 5nati,os6 recien el nomre de
len-ua#es de maquina) *stos len-ua#es( claro esta/ son dependientes de la maquina y a primera ,ista parecen
demasiado confusos por que consisten en lar-as y hileras de cdi-os num%ricos) La primera pro-ramacin de
computadora era casi e2clusi,amente pro-ramacin en len-ua#e de maquina) 7 pesar de que el len-ua#e de
maquina es natural el hard&are del computador( para los pro-ramadores humanos es totalmente artificial) Un paso
que permiti hacer mas f"cil la pro-ramacin fue el desarrollo de los len-ua#es simlicos) Los len-ua#es simlicos
utili!an cdi-os mnemnicos tal como 7DD( para representar las instrucciones de la maquina) 1or e#emplo( una
instruccin de maquina( tal como( +89::;::( que si-nifica sumar el ,alor almacenado en la posicin 9:: al ,alor de
la posicin ;::( puede escriirse como< 7DD cantidad8( cantidad +) Naturalmente el computador no entiende nos
mnemnicos y por eso deen ser traducidos al len-ua#e de maquina) Un ensamlador es un pro-rama en len-ua#e
de maquina que traduce instrucciones en len-ua#e simlico a instrucciones a len-ua#e de maquina) Los len-ua#es
simlicos son dependientes en la maquina( por cuanto un con#unto de cdi-os mnemnicos solo es aplicale en
un modelo particular de computadoras/ de ah que el pro-ramador dee estar familiari!ado con el repertorio
especial de instrucciones de la maquina que se esta pro-ramando) *sto constituye una des,enta#a seria cuando los
esfuer!os de pro-ramacin son e2tensos y el hard&are esta cominado)
=I>TORI7)
*l CO?OL es un len-ua#e de pro-ramacin que fue dise@a no e2presamente para el procesamiento de datos
administrati,os) *s el len-ua#e de alto ni,el y como tal -eneralmente es independiente de la maquina)
La idea de desarrollar el len-ua#e sur-i en una reunin del pent"-ono en mayo del 8ABA) en esa reunin(
representantes del -oierno( usuarios( comerciantes y faricantes de computadora( lle-aron a la conclusin de que
era factile iniciar el desarrollo de un len-ua#e de alto ni,el que respondiera a las necesidades del procesamiento
de datos administrati,os en contraste con la computacin cientfica) Una ,ersin preliminar del cool apareci en
diciemre de 8ABA) esta ,ersin fue se-uida en 8AC8 por la ,ersin CO?OL.C8 que constituyo la piedra an-ular al
desarrollo de ,ersiones posteriores)
*n 8ACD se apro una ,ersin est"ndar del len-ua#e por lo que ahora se denomina 7N>I $7merican National
standard Institute ' y una ,ersin re,isada se adopt por 7N>I en 8AE;) *l CO?OL esta e,olucionando y
me#orando continuamente( -racias ala edicin de las capacidades de pro-ramacin y ala supresin de cuestiones
osoletas) Los camios propuestos en el len-ua#e se re-istran anualmente en la pulicacin #ournal off
de,elopment) 1ero estos camios son tentati,ito( mientras 7N>I adopta una nue,a norma)
Ryan Fc Garland Corporation ha ,enido aportando en los 0ltimos a@os( un con#unto de instrucciones y estructuras
adicionales al len-ua#e CO?OL) *st"ndar 29)+9H8ADB por la 7N>I / eliminando del mismo todas aquellas
instrucciones osoletas y poco practicas el el medio de pro-ramar una aplicacin computacional( promo,iendo una
simplificacin al par"metro 5GI *JT*N>IN6( para a todos aquellos pro-ramadores.analistas que dominas 0nica y
8 de EA
especialmente el CO?OL est"ndar reconocido) *n -eneral la ,ersin re,isada esta especialmente diri-ida a tener
mayor fle2iilidad y capacidad de la pro-ramacin y no ha camiar la estructura fundamental de los pro-ramas en
CO?OL)
)T*RFINOLO3K7
*l CO?OL se si-nifica $len-ua#e com0n orientado a los ne-ocian' y como compilador tiene la funcin de traducir el
pro-rama fuente a un pro-rama o#eto para reali!ar la tarea requerida/ *l proceso de traduccin se usa para
otener el pro-rama en el len-ua#e de la maquina requerida)
*ste len-ua#e tiene una funcin especifica con respecto a unas apalares( que se clasifican como reser,ada/ y por
lo cual en creacin de los pro-ramas( dicha palaras no de,ine ser ampliadas para que la maquina no marque
error( al momento de ser compilado el pro-rama) Cuenta con una estructura de #erarqua decidi%ndola en ;
de,ociones importantes( que son<
7' ID*NTIGIC7CIN DILI>IN.
?' *NLIRONF*NT DILI>IN)
C' D7T7 DILI>IN)
D' 1ROC*DUR* DILI>IN)
>I3NIGIC7DO D* L7> >I3L7> CO?OL)
*l si-nificado de CO?OL es $common ?usiness Oriented Lan-ua#e' en espa@ol el si-nificado de CO?OL es
$len-ua#e com0n orientado a los ne-ocios')
*l CO?OL sea con,ertido en len-ua#e de pro-ramacin est"ndar para aplicaciones administrati,as en la
computadora en la industria y en las acti,idades estatales) *ste len-ua#e se ha ,enido re,isando y (modificando
continuamente a#o los auspicios de COD7>ML $conferencie data systems Len-ua#e 'un comit% de traa#o
inte-rado por los representantes de los principales usuarios de le-ua#es de computadoras y faricantes de
computadores)
CO?OL COFO COF1IL7DOR
La si-uiente etapa en el desarrollo de len-ua#es de pro-ramacin fue la lle-ada de alto ni,el que est"n orientados
mas hacia el procedimiento que hacia la maquina) Dichos len-ua#es est"n enfocados mas hacia el procedimiento
de procesamiento de datos que se deen cumplir que hacia los requerimientos de computacin de maquinas
particulares) 7 dem"s( los len-ua#es de alto ni,el no son dependientes de las maquinas( el uso de estos pro-ramas
no est"n restrin-idos a modelos particulares de computadoras y aunque estas instrucciones no est"n dise@adas
para corresponder a la forma de operacin de una forma particular de computadora ellas deen e#ecutarse en una
maquina especifica) Repetimos( el proceso de traduccin se usa para otener el pro-rama en el len-ua#e de
maquina requerido) Un pro-rama de computadora escruto es un len-ua#e de alto ni,el( se denomina pro-rama
fuente) Un compilador es un pro-rama en len-ua#e de maquina que traduce $o compila' el pro-rama fuente es un
pro-rama de len-ua#e de maquina( el cual se denomina pro-rama o#eto y que lue-o se introduce en la maquina
para reali!ar la tarea requerida) De este modo( un compilador es un pro-rama cuya funcin consiste en con,ertir el
pro-rama fuente en pro-rama o#eto) La principal diferencia entre un compilador y un ensamlador es que la
compilacin es un proceso mas comple#o que el ensamle) *l ensamle normalmente implica una traduccin 8 a 8(
de un cdi-o mnemnico a un cdi-o de maquina) Fientras que la compilacin implica una traduccin de 8 a
muchos) *sto es que una instruccin de alto ni,el puede ser el equi,alente a ,arias instrucciones a ni,el de
maquina)
*n la primera fase( el pro-rama fuente y el compilador sir,en como entrada y salida incluye el pro-rama o#eto que
esta almacenado en un dispositi,o de disco o cinta ma-n%tica y un listado del pro-rama fuente en la impresora as
como tami%n un dia-nostico de mensa#e de error) >i no se detecta errores serios el pro-rama o#eto se introduce
autom"ticamente a la computadora asados en las instrucciones del pro-rama( los datos de entrada son ledos y
anali!ados( culminando as con la salida requerida)

+ de EA
1 -Elementos del lenguaje COBOL.
8) ID*NTIGIC7TION DILI>ION)
+) *NLIRONF*NT DILI>ION)
9) D7T7 DILI>ION
;) 1ROC*DUR* DILI>ION
Constantes figurativas:
Una constante fi-urati,a es una constante predefinida en CO?OL que puede utili!arse en cualquier parte de la
NOROIN3.>TOR73* >*CTION o 1ROC*DUR* DILI>ION para asi-nar su ,alor a un campo)
Zero- Desi-na el ,alor : en el caso de datos num%ricos) Tami%n puede ser referenciada por los
nomres P*RO> o P*RO*>)
Space- *sta constante se utili!a para asi-nar a un campo no num%rico uno o mas espacios en
lanco) Tami%n puede ser referenciada por el nomre >17C*>)
High-value- >e utili!a para asi-nar a literales alfanum%ricos el ,alor mas alto posile del cdi-o de
caracteres que estemos utili!ando $Lalor GG en 7>CII') Tami%n puede ser referenciada por el nomre
de =I3=.L7LU*>)
Low-Value- >e utili!a para asi-nar a literales alfanum%ricos el ,alor mas a#o posile del cdi-o de
caracteres que estemos utili!ando $Lalor :: en 7>CII') Tami%n puede ser referenciada por el nomre
de LON.L7LU*>)
ALL "literal"- representa una repeticin del literal especificado)
Constantes identificadas por un nombre:
*st"n formadas por un identificador al que asociamos un ,alor) >e descrien en la D7T7 DILI>ION con ni,el ED)
Una constante identificada por un nomre se utili!a en cualquier lu-ar donde un literal pueda aparecer en un
formato)
Identificadores.
Los identificadores son nomres creados por el pro-ramador) 1ara formar un identificador hay que tener en cuenta
las si-uientes re-las<
Un identificador consta de un m"2imo de 9: caracteres) *stos caracteres pueden ser solamente letras(
d-itos y el -uin)
No deen empe!ar ni terminar en un -uin)
Un identificador definido por el usuario no puede tener el mismo nomre que una palara reser,ada)
Un identificador dee contener oli-atoriamente al menos una letra( e2cepto cuando se trate de un
nomre de p"rrafo o de seccin)
Cualquier identificador utili!ado en la 1ROC*DUR* DILI>ION dee estar pre,iamente definido en la
*NLIRONF*NT DILI>ION o en la D7T7 DILI>ION)
9 de EA
Operadores.
Los operadores son smolos que indican como son manipulados los datos)
Carcter Significado Ejemplo
Q >uma 7 Q ?
. Resta 7 R ?
S Fultiplicacin 7 S ?
H Di,isin 7 H ?
SS 1otenciacin 7 SS ?
I 7si-nacin C I 7 Q ?
$ ' Dar prioridad D I $7 Q ?' S C
Operadores de relacin.
Los operadores de relacin se utili!an para comparar dos ,alores num%ricos o dos ,alores alfanum%ricos $no
num%ricos') *l resultado puede ser ,erdadero o falso)
Carcter Significado Ejemplo
I I-ual que 7 I ?
T Fenor que 7 T ?
U Fayor que 7 U ?
TI Fenor i-ual 7 TI ?
UI Fayor i-ual 7 UI ?
; de EA
*stos operadores( tienen todos i-ual prioridad)
Operadores de Lgicos.
Los operadores l-icos nos permiten cominar ,arias e2presiones de relacin) I-ual que los operadores de
relacin( se utili!an normalmente para tomar decisiones) Un operador l-ico toma una cominacin de ,alores
,erdaderos.falsos y de,uel,e un resultado ,erdadero o falso)
Los operadores l-icos colocados en orden de prioridad son los si-uientes< NOT( 7ND( OR)
Las talas de ,erdad correspondientes a estos operadores son las si-uientes<
B !ot !" B O# B
L L G L L
L G G G L
G L L G L
G G L G G
!presiones arit"#ticas.
Una e2presin aritm%tica puede ser una constante( una ,ariale o un con#unto de constantes y ,ariales unidas por
operadores aritm%ticos)
1ara su codificacin hay que tener en cuenta que<
S *l par%ntesis i!quierdo no dee ir seguido de un espacio)
S *l par%ntesis derecho no dee ir precedido de un espacio)
S *l si-no I y los operadores Q( .( S( . y SS deen ir precedidos y se-uidos de un espacio)
Orden de e$ecucin.
7 la hora de e,aluar una e2presin( la prioridad de las operaciones es la si-uiente<
8. 1rimero se e,al0an las operaciones entre par%ntesis( de los mas internos a los mas e2ternos)
+. Despu%s( y si-uiendo el orden que se descrie a continuacin se e,al0an los operadores aritm%ticos<
SS( S( H Q(.
Los operadores escritos sore una misma lnea tienen la misma prioridad) Cuando en una e2presin
inter,ienen ,arios operadores con la misma prioridad( estos se e,al0an de i!quierda a derecha)
!presiones de %OOL.
B de EA
Una e2presin de ?OOL* da como resultado un ,alor ,erdadero o falso) Los operadores que inter,ienen en una
e2presin de ?OOL* pueden ser< Operadores de relacin y operadores lgicos.
>i en una e2presin de ?OOL* inter,ienen ,arios tipos de operadores primero se e,al0an los operadores
aritm%ticos( despu%s los operadores de relacin y por ultimo los operadores l-icos)
Ejemplo:
$$7 I :' 7ND $$?S+' NOT I :'' OR $CI:'
$- Estructura de un programa Cobol.
&escripcin 'eneral.
Un pro-rama fuente CO?OL es un con#unto de sentencias CO?OL sint"cticamente correctas)
Las sentencias( entradas( p"rrafos y secciones de un pro-rama CO?OL son a-rupadas en cuatro di,isiones que
forman la estructura -eneral de dicho pro-rama)
*l formato -eneral y el orden de presentacin de las entradas y sentencias que constituyen un pro-rama CO?OL
es<
ID*NTIGIC7TION DILI>ION)
*NLIRONF*NT DILI>ION)
D7T7 DILI>ION)
1ROC*DUR* DILI>ION)
V*ND 1RO3R7F id.pro-ramaW
*stos nomres representan las caeceras de las cuatro di,isiones mencionadas y la caecera de final de pro-rama
que es opcional y ,alida a#o las normas 7N>DB) *n esta ultima( id-programa dee coincidir con el nomre
especificado en el parrafo 1RO3R7F.ID)
Identification division.
La di,isin de ID*NTIGIC7CION( sir,e para proporcionar un nomre para identificar el pro-rama) Opcionalmente se
puede especificar informacin acerca del autor( fecha en que fue escrito( etc))
*l formato -eneral para la di,isin es el si-uiente)
C de EA
ID*NTIGIC7TION DILI>ION)
1RO3R7F.ID) Nomre del pro-rama)
V7UT=OR) Nomre del pro-ramador)W
VIN>T7L7TION) Lu-ar de instalacin)W
VD7T*.NRITT*N) Gecha en que fue escrito)W
VD7T*.COF1IL*D) Gecha en que fue compilado)W
V>*CURITM) *ntrada de comentarios)W
>olo las dos primeras lneas( ID*NTIGIC7TION DILI>ION y 1RO3R7F.ID( son oli-atorias)
%rogram-id.
*ste parrafo sir,e para especificar el nomre del pro-rama) *ste nomre ser" utili!ado por el compilador o durante
la e#ecucin para indicar en que pro-rama ocurri al-un error)
*l nomre del pro-rama dee a#ustarse a las re-las de formacin de un identificador CO?OL( ,istas en el capitulo
anterior)
*l resto de los p"rrafos son opcionales( pueden aparecer en cualquier orden( y su utili!acin queda perfectamente
definida en el formato descrito)
>i un comentario ocupa mas de una lnea( no esta permitido utili!ar el -uin como car"cter de continuacin( sin
emar-o puede ser continuado en las lneas si-uientes( comen!ando en el mar-en ?)
nviron"ent division.
La di,isin de *NTORNO permite definir el tipo de ordenador para el que fue escrito el pro-rama( asi como los
dispositi,os perif%ricos necesarios para soportar los ficheros utili!ados en el pro-rama)
*l formato -eneral de la seccin es el si-uiente<
*NLIRONF*NT DILI>ION)
VCONGI3UR7TION >*CTION)
>OURC*.COF1UT*R) Fodelo de ordenador)
O?X*CT.COF1UT*R) Fodelo de ordenador)
E de EA
>1*CI7L.N7F*>)
Nomres especiales)W
VIN1UT.OUT1UT >*CTION)
GIL*.CONTROL)
Control de ficheros)
VI.O CONTROL)
Control de entrada H >alida)W W
Secci&n de configuraci&n.
*sta seccin es opcional) >u utilidad es documentar el pro-rama CO?OL( indicando el modelo de ordenador
utili!ado y asociar los nomres mnemnicos especificados por el pro-ramador a nomres utili!ados por el
compilador) 7 continuacin se descrien los p"rrafos que la componen)
(arrafo SO)*+,
>ir,e para especificar el modelo de ordenador que ,a a compilar el pro-rama) >u formato es el si-uiente<
>OURC* COF1UT*R) Fodelo de ordenador)
VNIT= D*?U3IN3 FOD*)W
La opcin NIT= D*?U3IN3 FOD* permite introducir en el fichero fuente CO?OL( cdi-o que nos ser,ir" de
ayuda para depurar el pro-rama)
(arrafo O%-+.,
>ir,e para especificar el modelo de ordenador que ,a a e#ecutas el pro-rama) >u formato es el si-uiente<
O?X*CT COF1UT*R) Fodelo de ordenador)
D de EA
V1RO3R7F COLL7TIN3 >*4U*NC* I> cdi-oW
V>*3F*NT.LIFIT I> n0mero.se-mentoW) W
La cl"usula //O*0 SIZ tiene como finalidad documentar el pro-rama y especifica el tama@o de la memoria
necesaria para poder e#ecutar el pro-rama e2presado en palaras( caracteres o mdulos)
La cl"usula S1)2+( especifica la secuencia de caracteres utili!ada en comparaciones y clasificaciones no
num%ricas) >i esta se omite se utili!a el cdi-o 7>CII o *?CDIC) *n nuestro caso se utili!a el cdi-o 7>CII
La cl"usula S'/2.-LI/I. solo sir,e de comentario) La se-mentacin en CO?OL tiene sentido en la
1ROC*DUR* DILI>ION( la cual y para este propsito( estar" di,idida completamente en secciones( cada una de
las cuales estar" clasificada como una porcin fi#a o como un se-mento independiente del pro-rama o#eto) *l
numero de se-mento esta comprendido entre 8 y ;A)
(arrafo S(+IAL-2A/S,
*l formato de este parrafo es el si-uiente<
>1*CI7L.N7F*>
VNomre de funcin I> nomre mnemnicoW
V7L1=7?*TW
VD*CIF7L.1IOINT I> COFF7W
VCURR*NCM >I3N I> literalW
Nombre de funcin es un nomre reconocido por el compilador( por e#emplo 1RINT*R y nombre nemotcnico es un
nomre creado por el pro-ramador)
La cl"usula ALPHABET se utili!a para asi-nar un nomre a un con#unto especifico de caracteres o a una
determinada secuencia de clasificacin) >u formato es el si-uiente<
*l #ue-o de caracteres >T7ND7RD.8 o 7>CII es el cdi-o 7merican >tandard Code for Information Interchan-e)
>T7ND7RD.+ es el cdi-o I>O E.it)
La cl"usula N7TIL* se refiere al cdi-o 7>CII o *?CDIC dependiendo de la ,ersin CO?OL)
Cuando se especifica un nomre de alfaeto en una cl"usula COD*.>*T en la descripcin de fichero( es para
especificar el cdi-o de caracteres que se quiere utili!ar)
>i se especifica la opcin de literal el nomre de alfaeto no puede referenciarse en la cl"usula COD*.>*T) La
secuencia de clasificacin identificada esta definida de acuerdo con las si-uientes re-las<
8. *l ,alor de cada literal especifica<
A de EA
7' *l ,alor ordinal de un car"cter dentro del #ue-o de caracteres nati,o( si el literal es
num%rico)
?' *l car"cter actual dentro del #ue-o de caracteres nati,o( si el literal no es num%rico)
>i el literal no es num%rico y esta formado por ,arios caracteres( cada car"cter( comen!ando
con el car"cter mas a la i!quierda( es asi-nado a posiciones sucesi,as( ascendentemente(
en la secuencia de clasificacin que esta especificando)
+. *l orden en el que los literales aparecen en la cl"usula 7L1=7?*T( en secuencia ascendente(
especifica el n0mero ordinal del car"cter dentro de la secuencia de clasificacin)
9. Cualquier car"cter dentro de la secuencia nati,a de clasificacin que este e2plcitamente e2presado en el
literal( asume una posicin( en la secuencia de clasificacin( mayor que cualquiera de los caracteres
e2plcitamente especificados)
;. >i se especifica la opcin T=RU( el con#unto de caracteres conti-uos( del cdi-o nati,o( que comien!an
con el car"cter especificado por el literal-! y que termina con el car"cter 9
La divisin &A.A.
I2.*O&)++I32.
La di,isin de datos se utili!a para reali!ar una descripcin completa de los ficheros que inter,ienen en el
pro-rama( de sus re-istros l-icos y de las ,ariales intermedias o de traa#o)
*l formato -eneral para esta di,isin es el si-uiente<
D7T7 DILI>ION)
VGIL* >*CTION)
Descripcin del fichero
Descripcin del re-istro)
))) W
VNOROIN3.>TOR73* >*CTION
VEE Descripcin de campos indi,iduales) W
V:8 Descripcin de re-istros) WW
8: de EA
VLINO73* >*CTION)
VEE Descripcin de campos indi,iduales) W
V:8 Descripcin de re-istros) WW
VCOFFUNIC7TION >*CTION)
VDescripcin comunicacin) W
VDescripcin de re-istros) W W
VR*1ORT >*CTION)
VDescripcin de informes)WW
V>CR**N >*CTION)
:8 Descripcin de pantallas)W
>eccin de ficheros)
*n la "#LE $E%T#ON dee descriirse toda la informacin referente a los ficheros utili!ados en el pro-rama)

Seccin de tra4a$o.
*n la &O'(#N)-$TO'A)E $E%T#ON se descrien los campos utili!ados por el pro-rama como campos
intermedios o de traa#o) *l formato es el si-uiente<
VNOROIN3.>TOR73* >*CTION)
VEE Descripcin de campos indi,iduales)W
V:8 Descripcin de re-istros)WW
Los campos que se especifican en la $E%%#*N +E T'ABA,O pueden a-ruparse si-uiendo el formato empleado en
el apartado descripcin de una estructura registro( e2puesto a continuacin( o ien ser campos de
independientes en cuyo caso ,an precedidos por el numero de ni,el EE)
&escripcin de una estructura registro.
Una descripcin de re-istro consiste en un con#unto de descripciones de datos( las cuales descrien las
caractersticas de un re-istro en particular) Cada descripcin de dar" esta formada por un numero de ni,el se-uido
de un nomre de datos( o de la cl"usula "#LLE'( se-uido de una serie de cl"usulas si es que estas son requeridas)
Una descripcin de re-istro puede tener una estructura #erarqui!ada compuesta por una o mas inscripciones
#erarqui!adas o campos que escriiremos de acuerdo con el si-uiente formato<
88 de EA
VR*D*GIN*>W
V1ICTUR*W
VU>73*W
VL7LU*W
V>I3NW
VXU>TIGI*D RI3T=W
V?L7NO N=*N P*ROW
VOCCUR>W
*l orden de estas cl"usulas puede ser cualquiera( e2cepto la cl"usula R*D*GIN*>( que dee ser la primera( en el
caso de especificarse) Toda inscripcin dee terminar con un punto)
*l nomre del re-istro lle,a numero de ni,el :8 y el resto de los campos lle,a un numero de ni,el de :+ a ;A)
25"ero de nivel.
>ir,e para indicar la relacin e2istente entre un campo y el resto de los campos del re-istro)
Los campos de datos lo podemos clasificar en<
. %ampos elementales< Un campo elemental no puede sudi,idirse o no es necesario sudi,idirlo para ser tratado
por el pro-rama)
. %ampos compuesto< Un campo compuesto esta formado por ,arios campos elementales)
. %ampos independientes < Un campo independiente es un campo de traa#o que ser" definido en la seccin de
traa#o)
Una estructura #erarqui!ada( permite traa#ara con re-istros completos( con campos compuestos y con campos
elementales)
Los n0meros de ni,el que pueden utili!arse son< del :8 al ;A( CC( EE( ED y DD) l nivel superior es el 67)
Las normas a se-uir para utili!ar los n0meros de ni,el son las si-uientes<
S Un campo compuesto tiene un ni,el superior que cualquiera de sus campos elementales)
8+ de EA
S *l numero de ni,el :8 solo puede preceder al nomre del re-istro)
S Los n0meros del :+ al ;A pueden preceder a cualquier campo del re-istro( elemental o compuesto)
S Los numero de ni,el utili!ados no tienen porque ser correlati,os)
S *l numero de ni,el EE se utili!a para descriir campos independientes en la NOROIN3)
S *l numero de ni,el DD se utili!a para descriir nomres de condicin)
*l formato es el si-uiente<
S *l numero de ni,el CC se utili!a 0nicamente con la cl"usula R*N7F*>) 1ermite asi-nar un nue,o nomre a un
campo elemental( a un campo compuesto o a un con#unto de campos elementales) >u formato es el si-uiente<
La cl"usula R*N7F*> no puede formar parte de la descripcin de un campo y es oli-atorio especificarla
inmediatamente despu%s de la descripcin del re-istro)
Un campo con numero de ni,el :8( EE u DD no puede ser renomrado por esta cl"usula)
Ni nomre de dato.+ ni nomre de dato.9 pueden tener la cl"usula OCCUR>( ni pueden estar suordinados a un
campo que conten-a la cl"usula OCCUR>)
S *l numero de ni,el ED se utili!a para definir constantes identificadas por un nomre) Cada referencia a una
constante( es reempla!ada por el compilador CO?OL( por su ,alor)
*l formato -eneral es el si-uiente<

2o"4re de datos
89 de EA
>ir,e para nomrar el campo con el fin de poder referenciarlo en el pro-rama y dee escriirse a continuacin del
numero de ni,el) >i en la 1ROC*DUR* DILI>ION no se ,a a referenciar al-uno de los campos nomrados( el
nomre de cada uno de estos campos( puede ser sustituido por la palara GILL*R)
(I+.)*.
*sta cl"usula permite declarar el tipo y el tama@o de un campo elemental) *l tipo determina la informacin que
puede almacenarse en el campo( as como las operaciones de que con %l puedan reali!arse) >u formato es el
si-uiente<
*l tipo de campo( depende de los caracteres que se empleen para definir la especificacin de formato) Los campos
los podemos clasificar en alfabticos alfanumricos y numricos.
La lon-itud del campo ,iene dada por el numero de caracteres empleados en la especificacin de formato para
declarar el campo) *l m"2imo numero de caracteres permitido es 9:)
+A/(OS AL8A%9.I+OS.
1ermiten almacenar 0nicamente letras yHo lancos) *l car"cter que se emplea para definir un campo de este tipo es
la 7)
+A/(OS AL8A2)/9*I+OS.
1ermiten almacenar cualquier car"cter del #ue-o de caracteres 7>CII) *l car"cter que se emplea para definir un
campo de este tipo es la J)

+A/(OS 2)/9*I+OS.
1ermiten almacenar cualquier ,alor num%rico) Tener en cuenta que en CO?OL no se permiten n0meros superiores
a 8D cifras) Los caracteres que se emplean para definir un campo de este tipo sin< A( >( L y 1)
*l si-nificado de cada uno de los caracteres que pueden inter,enir en una especificacin de formato para un campo
num%rico es<
A Representa un cifra del :8 al A)
> Indica la aparicin del si-no Q o .) *l si-no no es oli-atorio( pero es con,eniente ponerlo porque
sino CO?OL( despu%s de cada operacin lo suprime sistem"ticamente( lo que repercute en un
mayor tiempo de e#ecucin) Cuando se pone( dee ser el primer car"cter de la especificacin de
formato)
L Representa la posicin de un punto decimal implcito) >e utili!a internamente para alinear las
partes decimales de los campos( cuando se quiere reali!ar una operacin)
8; de EA
1 Indica una cifra ,irtual( representando un cero) 1ara la que no se ha reser,ado una posicin de
memoria)
(I+.)* para la edicin.
1ara ,isuali!ar por pantalla o escriir por la impresora un campo( adem"s de los caracteres 7( J( A( L y 1 se
dispone de los caracteres<
P S ) ( : ? H CR D? Y Q .
*l si-nificado de cada uno de estos caracteres es el si-uiente<
P Representa una cifra del : al A) >i la cifra a escriir se corresponde con un : no si-nificati,o( se
escrie en su lu-ar un espacio en lanco)
S
Representa una cifra del : al A) >i la cifra a escriir se corresponde con un : no si-nificati,o( se
escrie en su lu-ar un S)
8B de EA
Los caracteres P y S no pueden ir precedidos( pero si se-uidos del car"cter A)
) *l punto hace que se inserte un punto decimal para separar la parte entera de la parte decimal)
(
La coma hace que se inserte este mismo car"cter en el lu-ar que se indica en la especificacin
de formato)
La cl"usula D*CIF7L.1OINT I> COFF7 en la *NLIRONF*NT DILI>ION( permite in,ertir el
papel del punto y la coma en las especificaciones de formato en la edicin)
? 1ermite que se inserte un espacio en lanco en el lu-ar que se indica en la especificacin de
formato)
: 1ermite que se inserte un cero en el lu-ar de que se indica en la especificacin de formato)
H 1ermite que se inserte una arra en el lu-ar de que se indica en la especificacin de formato)
CR >molo ancario indicati,o de cr%dito) >olo puede colocarse a la derecha de la especificacin
de formato) CR aparece sore la lnea que se imprime si el ,alor es ne-ati,o) >i el ,alor es
positi,o aparecer"n en su lu-ar + espacios en lanco)
D? >molo ancario indicati,o de d%ito) >olo puede colocarse a la derecha de la especificacin de
formato) D? aparece sore la lnea que se imprime si el ,alor es ne-ati,o) >i el ,alor es positi,o
aparecer"n en su lu-ar + espacios en lanco)
Y Un car"cter Y colocado en el primer lu-ar en la especificacin de formato( permite la aparicin
de este car"cter en el lu-ar indicado)
Q Un car"cter Q colocado en primer o ultimo lu-ar en la especificacin de formato( permite la
aparicin de un Q para ,alores positi,os y de un . para ,alores ne-ati,os en el lu-ar indicado)
. Un car"cter Q colocado en primer o ultimo lu-ar en la especificacin de formato( permite la
aparicin de un espacio en lanco para ,alores positi,os o un . para ,alores ne-ati,os en el
lu-ar indicado)
YY))) La aparicin en una especificacin de formato de n caracteres Y( permite editar un ,alor de n.8
cifras) >i la cifra a escriir se corresponde con un : no si-nificati,o( se escrie en su lu-ar un
espacio en lanco( e2cepto a la i!quierda de la primera cifra si-nificati,a que se inserta un
car"cter Y)
QQ))) La aparicin en una especificacin de formato de n caracteres Q( permite editar un ,alor de n.8
cifras) >i la cifra a escriir se corresponde con un : no si-nificati,o( se escrie en su lu-ar un
espacio en lanco( e2cepto a la i!quierda de la primera cifra si-nificati,a que se inserta un
car"cter Q para los ,alores positi,os o un . para los ,alores ne-ati,os)
.. La aparicin en una especificacin de formato de n caracteres Q( permite editar un ,alor de n.8
cifras) >i la cifra a escriir se corresponde con un : no si-nificati,o( se escrie en su lu-ar un
espacio en lanco( e2cepto a la i!quierda de la primera cifra si-nificati,a que se inserta un
car"cter . para los ,alores ne-ati,os)
8C de EA
La cl"usula D*CIF7L.1OINT I> COFF7( permite utili!ar la coma decimal en lu-ar del punto decimal) >in
emar-o( este prolema puede ser resuelto sin necesidad de especificar esta cl"usula) 1ara ello indicaremos en la
especificacin de formato el lu-ar de la coma mediante el car"cter L e insertaremos a su i!quierda o derecha el
car"cter coma )
)SA'.
*sta cl"usula permite indicar cono se almacenar" en memoria( ,alor en un campo num%rico) >u formato es el
si-uiente<
DI>1L7M es la opcin por defecto) Con esta opcin( cara car"cter sea num%rico o no( ocupa un yte o octeto en
memoria( representado en 7>CII) Los ,alores num%ricos son almacenados en ase 8:)
COF1 y COF1.; tienen el mismo si-nificado) >e emplean con campos num%ricos y los ,alores son almacenados
en los mismos en inario puro) *mpleando la representacin complemento a +)
COF1.9 se emplea solo con campos num%ricos y hace que un ,alor sea almacenado en inario decimal
empaquetado $?CD') *l semiocteto menos si-nificati,o contiene el si-no)
COF1.B es un formato similar a COF1( con la diferencia de que el ,alor que puede almacenarse( no depende del
numero de A indicados en la cl"usula 1IC( si no del numero inario mas -rande que pueda almacenarse en ese
espacio)
COF1.J es un formato similar a COF1) Con respecto a este tiene las si-uientes diferencias<
a' La especificacin de formato puede estar formada totalmente por J)
' Tanto si la especificacin de formato esta constituida por J o por A( el ,alor que puede almacenarse
queda limitado al numero inario mas -rande que pueda almacenarse)
c' *l uso de COF1.J con elementos utili!ados en operaciones aritm%ticas( esta restrin-ido a las operaciones
7DD( >U?>TR7CT( FULTI1LM y DILID* no permiti%ndose el empleo de ON >IP* *RROR) >i el
resultado otenido con estas operaciones es demasiado -rande( se trunca) >i el resultado no es un
entero( se trunca la parte decimal) >i el resultado es ne-ati,o se almacena en complemento a +)
VAL).
*sta cl"usula puede utili!arse en esta seccin( para asi-nar un ,alor a un campo con ni,el DD( nomres de
condicin( para asi-nar un ,alor a una constante identificada por un nomre o ien para iniciali!ar campos de datos
con un determinado ,alor)
Gormato<
L7LU* literal)
8E de EA
SI'2.
*sta cl"usula especifica la posicin y el modo de representacin del si-no operacional de un campo num%rico en
cuya especificacin de formato se ha especificado >) >u formato es el si-uiente<
La cl"usula >I3N se aplica a campos num%ricos descritos como U>73* I> DI>1L7M) >i la cl"usula >*17R7T* no
se especifica( el si-no del numero es incorporado en el d-ito de la derecha $TR7ILIN3' o en el d-ito de la
i!quierda $L*7DIN3') *n este caso el car"cter > de la 1ICTUR* no se tiene en cuenta para determinar el tama@o
del campo)
>i la cl"usula >*17R7T* se especifica( entonces el si-no es almacenado como un car"cter separado adicional a
los d-itos) *n esta caso el car"cter > se tiene en cuenta para determinar el tama@o del campo)
>i la cl"usula >I3N no se especifica( -eneralmente la posicin por defecto es a la i!quierda)
-)S.I8I&.
*sta cl"usula permite #ustificar un ,alor alfa%tico o alfanum%rico a la derecha) >u formato es el si-uiente<
*sta cl"usula puede especificarse solamente con campos elementales u no puede especificarse para un campo
descrito como num%rico o de edicin)
%LA2:.
*sta cl"usula llena un campo num%rico con espacios cuando su ,alor sea cero) De esta forma( eliminan todos los
caracteres de insercin( en caso de que la !ona a editar sea nula) >u formato es el si-uiente<
?L7NO N=*N P*RO)
*sta cl"usula puede especificarse solamente con campos num%ricos elementales con formato DI>1L7M o con
campos num%ricos de edicin)
8D de EA
O++)*S.
*sta cl"usula permite definir una estructura de datos denominada tala) Una tala es un con#unto de elementos
todos del mismo tipo( esto es( con id%nticos atriutos) >u formato es el si-uiente<
OCCUR> n TIF*>)
La cl"usula OCCUR> indica el numero de ,eces( n( que se repite un elemento $campo simple o compuesto' con la
misma descripcin)
*l sundice correspondiente al primer elemento es 8) *l sundice puede ser un numero entero o un nomre de
datos) >i es un nomre de datos se recomienda declararlo con formato inario $COF1')
La cl"usula OCCUR> no puede especificarse en una descripcin con numero de ni,el :8 o EE)
Una tala en CO?OL puede tener hasta 9 sundices) *n este caso se dice que la tala es de 9 dimensiones)
La cl"usula OCCUR> y L7LU* son incompatiles( lo cual no permite iniciali!ar una tala en su propia declaracin)
*&8I2S.
*sta cl"usula permite dar a un campo o a un "rea de memoria mas de un nomre y mas de un formato) >u formato
es el si-uiente<
La cl"usula R*D*GIN*> ha de ser la primera que si-a al nomre de datos)
Los campos nomre de dato.8 y campos nomre de dato.+ han de estar declarados al mismo ni,el( pero no a ni,el
CC u DD)
La redefinicin de un campo compuesto se hace inmediatamente despu%s del ultimo de los campos elementales
que forman parte de aquel)
*sta cl"usula ,a a permitir poder iniciali!ar una tala en el momento de declararla)
Seccin de enlace.
*sta seccin permite declarar campos de memoria para ser utili!ados por otros pro-ramas y por consi-uiente
conser,ar los datos de un pro-rama para otro)
Seccin de co"unicaciones.
*sta seccin permite procesar mensa#es y controlar el flu#o de los mismos)
Seccin de infor"es.
*sta seccin permite crear un formato especifico para imprimir un fichero de salida)
Seccin de pantalla.
*sta seccin permite controlar la representacin de los datos en pantalla)
8A de EA
;- La divisin (*O+&)*.
Introduccin.
La DILI>IN D* 1ROC*DIFI*NTO> indica la secuencia de operaciones necesarias( sentencias CO?OL( para
resol,er un prolema dado)
*l formato -eneral para esta di,isin es el si-uiente<
VD*CL7R7TIL*>)
ZNomre de >eccin >*CTION Vnumero.se-mentoW)Vsentencia U>*W)
VNomre de p"rrafo) VsentenciaW )))W)))[)))
*ND D*CL7R7TIL7>) W
ZNomre de >eccin >*CTION Vnumero.se-mentoW)Vsentencia U>*W)
VNomre de p"rrafo) VsentenciaW )))W)))[)))
La cl"usula U>IN3 se especifica solamente en pro-ramas que lue-o son llamados $C7LL' o enla!ados $C=7IN')
La sentencia U>* cuando es e#ecutada la seccin)
Como las otras di,isiones( la 1ROC*DUR* DILI>ION( puede ser di,idida en secciones y estas a su ,e! en
p"rrafos) Cada p"rrafo -eneralmente a-rupar" ,arias sentencias) La di,isin en secciones es opcional y es poco
utili!ada( en camio la di,isin en p"rrafos es frecuente)
Opcionalmente la 1ROC*DUR* DILI>ION puede contener secciones D*CL7R7TIL7>) *n caso de utili!arlas(
estas deen ser las primeras en definirse) >u finalidad es el tratamiento de errores)
+: de EA

Sentencias 4<sicas
Visuali=ar datos. &IS(LA0.
*sta secuencia permite ,isuali!ar datos por pantalla o imprimirlos directamente en la impresora) >u formato es el
si-uiente<
Gormato 8<
*l nomre mnemnico dee ser un nomre asociado a un nomre de funcin( nomre reconocido por el compilador
en el p"rrafo >1*CI7L.N7F*>)
*l literal puede ser una constante fi-urati,a( e2cepto 7LL( una constante de caracteres o un literal num%rico)
La opcin NO 7DL7NCIN3 hace que el cursor no a,ance de lnea( una ,e! que se ha e#ecutado la sentencia
DI>1L7M)
Cuando utili!amos la cl"usula U1ON( el nomre simlico dee declararse en el p"rrafo >1*CI7L.N7F*>) >i en
lu-ar de utili!ar un nomre mnemnico utili!amos un nomre de funcin el resultado es el mismo)
Gormato +<
Los campos elementales deen tener como U>73*( DI>1L7M)
La cl"usula 7T da la posicin de pantalla donde ,a a comen!ar la operacin de escritura)
La frase U1ON CRT( es la opcin por defecto e indica ,isuali!ar los datos indicados por pantalla)
La frase FOD* I> ?LOCO hay que especificarla cuando nomre de datos.8 corresponde a un campo compuesto y
para que los datos elementales nomrados con GILL*R sean tenidos en cuenta) *sto es( nomre de datos.8 es
considerado como un campo elemental)
>i no se especifica nomre de datos.8 o literal.8( DI>1L7M( sin mas mue,e el cursor a la posicin indicada)
+8 de EA
>i nomre de datos.8 es una constante fi-urati,a( tiene un efecto especial que indicamos a continuacin<
>17C* Limpia la pantalla desde la posicin del cursor especificada( hasta el final de la
misma)
LON.L7LU* Fue,e el cursor a la posicin especificada)
7LL J\:8\ Limpia desde la posicin del cursor especificada( hasta el final de la lnea)
7LL J\:+\ Limpia toda la pantalla)
7LL J\:E\ >uena( en,a un pitido)
Opciones.
?*LL o ?**1 *sta cl"usula emite un sonido cada ,e! que DI>1L7M es
e#ecutado)
?LINO *sta cl"usula hace parpadear el elemento ,isuali!ado)
=I3=LI3T= *sta cl"usula hace que el elemento ,isuali!ado apare!ca en
alta intensidad
R*L*R>*.LID*O *sta cl"usula hace que el elemento ,isuali!ado apare!ca en
,deo in,erso)
*sta cl"usula se utili!a con campos elementales y especifica el
tama@o del campo) >i el tama@o especificado es menor que el
especificado en la cl"usula 1IC( solamente aparecer" la porcin
de la parte i!quierda y si el tama@o especificado es mas -rande
se rellena con lancos)
UND*RLIN* *sta cl"usula hace que el elemento ,isuali!ado apare!ca
surayado)
GOR*3ROUND.COLOR I> entero *sta cl"usula especifica el color en el que es ,isuali!ado el
elemento) *ntero es un ,alor entre : y E)
?7CO3ROUND.COLOR I> entero *sta cl"usula especifica el color de fondo sore el que es
,isuali!ado el elemento) *ntero es un ,alor entre : y E)
?L7NO >CR**N ?orra la pantalla)
?L7NO LIN* ?orra una lnea)
++ de EA
Leer datos del teclado. A++(..
*sta sentencia permite asi-nar a uno o mas campos de datos) Lalores desde el teclado) >u formato es el si-uiente<
*sta sentencia permite asi-nar a nombre de datos el ,alor de las constantes D7T*( D7M y TIF*)
*l contenido de estas constantes es<
D7T* es una constante de seis cifras de la forma 77FFDD( donde 77 son las dos ultimas cifras del
a@o( FF es el mes y DD es el da)
D7M es una constante de cinco cifras de la forma 77NNN( donde 77 son las dos ultimas del a@o y
NNN es el da del a@o)
TIF* es una constante de D cifras ==FF>>CC( donde == es la hora $::))+9'( FF son los minutos(
>> son los se-undos y CC son las cent%simas de se-undo)
Gormato +<
*l nombre mnemnico dee ser un nomre asociado a un nombre de funcin( nomre reconocido por el
compilador( en el p"rrafo >1*CI7L.N7F*>)
Gormato 9<
+9 de EA
Una sentencia 7CC*1T es tratada a#o este formato si ,a se-uida de al-una de las cl"usulas 7T( U1ON( FOD* o
NIT=( sin es considerada como una sentencia 7CC*1T est"ndar $7N>I' ,ista anteriormente)
Los campos elementales en nombre de datos-! deen tener una U>73* DI>1L7M)
La cl"usula 7T da la posicin de pantalla donde ,a a comen!ar la operacin de lectura) >i no se especifica( se
supone la lnea 8( columna 8)
Las cl"usulas LIN* y COL pueden aparecer en cualquier orden y sir,en para especificar la lnea y la columna
respecti,amente( donde ,a a comen!ar la lectura) *l numero de lnea ,iene especificado por nombre de datos-- o
por entero-! y el numero de columna por nombre de datos-. o por entero-..
La frase U1ON CRT( es la opcin por defecto e indica aceptar el dato indicado por la consola)
>i nombre de datos-! corresponde a un campo compuesto( y la frase FOD* I> ?LOCO no se ha especificado(
entonces los campos elementales correspondientes que no sean GILL*R son aceptados en el orden que est"n
especificados y separados por un numero de espacios en lanco i-ual a la lon-itud del campo GILL*R
correspondiente) >i esta frase se especifica entonces nombre de datos-! es considerado como un campo
elemental)
Opciones:
?*LL o ?**1 esta cl"usula emite un sonido cada ,e! que 7CC*1T es
e#ecutado)
?LINO *sta cl"usula hace parpadear el elemento aceptado)
=I3=LI3=T *sta cl"usula hace que el elemento aceptado apare!ca en alta
intensidad)
R*L*R>*.LID*O *sta cl"usula hace que el elemento aceptado apare!ca en
,deo in,erso)
*sta cl"usula se utili!a con campos elementales y especifica el
tama@o del campo) >i el tama@o especificado es menor que el
especificado en la cl"usula 1IC( pre,alece el tama@o
especificado por la cl"usula >IP* y si el tama@o es mas
-rande pre,alece el especificado por la cl"usula 1IC)
+; de EA
UND*RLIN* *sta cl"usula hace que el elemento aceptado apare!ca
surayado)
GOR*3ROUND.COLOR I> entero *specifica el color en el que se escrie el elemento aceptado)
?7CO3ROUND.COLOR I> entero *specifica el color de fondo sore el que se escrie el
elemento aceptado
*sta cl"usula marca sore la pantalla con el car"cter
especificado( los posiciones ,acas mientras se e#ecuta la
operacin 7CC*1T) 1ROF1T sin car"cter utili!a el car"cter
por defecto $car"cter de surayado')
7UTO *sta cl"usula termina autom"ticamente un operacin 7CC*1T
cuando se tecla el ultimo car"cter)
GULL o L*N3T=.C=*CO *sta cl"usula oli-a a de#ar el campo completamente ,aco o
completamente lleno)
R*4UIR*D o *F1TM.C=*CO *sta cl"usula oli-a a no de#ar el campo completamente ,aco)
>*CUR* o NO.*C=O *sta cl"usula impide que los caracteres tecleados apare!can
en la pantalla)
U1D7T* *sta cl"usula permite ,isuali!ar el contenido del campo antes
de efectuar la entrada)
RI3=T.XU>TIGM *sta cl"usula a#usta el contenido de un campo num%rico
editado o no editado( a la derecha una ,e! que se finali!a
7CC*1T) 1ara ello es necesario que se especifique
simult"neamente la cl"usula >IP*)
>i se especifica la frase ON *JC*1TION y la operacin 7CC*1T no termina satisfactoriamente( se e#ecuta
sentencia.8( que es una sentencia imperati,a $no condicional') >i se especifica la frase NOT ON *JC*1TION y la
operacin 7CC*1T termina satisfactoriamente( se e#ecuta la sentencia.+( que es tami%n una sentencia imperati,a)
Opcionalmente se puede utili!ar la frase *ND.7CC*1T la cual delimita el "mito del 7CC*1T)
/ovi"ientos de datos. /OV,
*sta sentencia permite transferir datos de un campo de memoria a otro o a otros) >u formato es el que si-ue<
Gormato 8<
+B de EA
Los datos contenidos en el campo nomre dato.8 o en el literal son mo,idos al campo nomre datos.+) Despu%s de
reali!arse esta operacin de mo,er( los dos campos contendr"n los mismos datos)
>i a continuacin de la cl"usula TO especificamos mas de un campo( el contenido del campo nomre dato.8 se
mue,a a todos ellos)
2or"as para su utili=acin.
*n la transferencia de un campo elemental a otro elemental se pueden presentar los dos casos si-uientes)
8. Fo,imiento de un campo num%rico a otro num%rico $no de edicin o de edicin')
*n este caso los campos ori-en y receptor se alinean por el punto decimal) >i el tama@o del campo
receptor es menor que el tama@o del campo emisor( se produce un truncamiento de la parte entera yHo
decimal) *n caso contrario( se rellena con ceros no si-nificati,os cualquiera de las partes)
*n caso de que el campo receptor sea de edicin( se si-uen las mismas re-las e2puestas para la cl"usula
1ICTUR*)
+. Fo,imiento de un campo de cualquier tipo a otro de tipo alfa%tico o alfanum%rico) $No de edicin o de
edicin')
*n este caso el contenido del campo emisor se ,a colocando en el campo receptor de i!quierda a
derecha( e2cepto cuando en el campo receptor se haya declarado la cl"usula XU>TIGI*D RI3T=( en cuyo
caso( el contenido ser" colocado de derecha a i!quierda)
>i el tama@o del campo receptor es menor que el campo emisor se produce truncamiento) *n caso
contrario se rellena con espacios en lanco)
>i el campo receptor es de edicin( se si-uen las mismas re-las e2puestas para la cl"usula 1ICTUR*)
*n la transferencia de un campo compuesto se puede reali!ar de dos formas<
8. Como un campo elemental( cuya lon-itud es la suma de los campos elementales que lo
forman) *n este caso el campo receptor es considerado como un campo elemental
alfanum%rico)
+. Fo,iendo los campos elementales uno a uno)
Gormato +<
Cuando se utili!a esta cl"usula todos los campos tienen que ser compuestos)
Utili!ando la cl"usula CORR con la sentencia FOL*( es posile mo,er un numero ,ariale de campos elementales
pertenecientes a nomre dato.8 a nomre dato.+ que ten-an el mismo nomre)
+C de EA
Los campos con i-ual nomre tienen que ocupar la misma posicin #er"rquica en amos campos compuestos)
>i los campos elementales pertenecen a su-rupos del campo compuesto( los nomres de estos su-rupos tienen
tami%n que coincidir en amos campos compuestos)
Sentencia de asignacin. +O/()..
*sta sentencia permite asi-nar a uno o mas campos( el ,alor de un literal num%rico( de otro campo num%rico o de
una e2presin aritm%tica) >u formato es el si-uiente)
>entencia.8 y sentencia.+ son sentencias no condicionales $sentencias imperati,as')
La frase *ND.COF1UT* solo puede ser utili!ada con la frase >IP* *RROR)
Opci&n #O'!"E".
*sta opcin( que si-ue al nomre del campo que deer" contener el resultado( permite redondear dicho resultado)
*ste redondeo consiste en a@adir una unidad en la cifra menos si-nificati,a almacenada( si la primera decimal
truncada es B o mayor de B)
Opci&n O! S()E E##O#.
Durante la e#ecucin( se puede dar un resultado cuyo numero de cifras enteras supere el tama@o de la parte entera
del campo receptor) *sto produce un truncamiento de las cifras mas si-nificati,as del resultado) La opcin ON >IP*
*RROR( permite tomar una determinada accin( si se produce este caso( e#ecutando la sentencia imperati,a
escrita a continuacin de la misma) De esta forma se controla cualquier anomala que pueda ocurrir en la e#ecucin
de una operacin aritm%tica) Un e#emplo tpico es la di,isin por cero)
1or el contrario( la sentencia imperati,a que si-ue a la frase NOT ON >IP* *RROR( se e#ecuta( si durante la
e#ecucin de una operacin aritm%tica no ocurre nin-una anomala)
Sentencia A&&
*sta sentencia permite sumar dos o mas operandos num%ricos y almacenar el resultado en uno o ,arios campos
elementales)
Gormato 8<
+E de EA
Opci&n *O.
*sta opcin hace que los ,alores de los operandos a su i!quierda sean a@adidos a los ,alores a su derecha) Todos
los operandos tienen que ser num%ricos)
La frase *ND.7DD puede ser solamente utili!ada con la frase >IP* *RROR)
Gormato +<
Opci&n +(,(!+.
La suma de los operandos que preceden a la palara 3ILIN3( pueden ser almacenados en cada uno de los
campos que si-uen a dicha palara) Los campos elementales que est"n a continuacin de la palara 3ILIN3
pueden ser num%ricos o num%ricos editados)
Gormato 9<
Los campos elementales de nomre dato.8( ser"n sumados a los campos de i-ual nomre de nomre dato.+) *l
resultado queda almacenado en los campos elementales de nomre dato.+)
Sentencia S)%.*A+..
La sentencia >U?TR7CT es utili!ada para restar un dato num%rico( o la suma de dos o mas datos num%ricos( de
uno o mas campos de#ando el resultado en uno o mas campos)
Gormato 8<
+D de EA
Con este formato( todos los operandos que preceden a la palara GROF se suman y el total es restado de nomre
dato.+( almacenando el resultado en el mismo campo( y repitiendo el proceso para el resto de los campos que
si-uen a la palara GROF)
Gormato +<
Con este formato( todos los operandos que preceden a la palara GROF son sumados y el total( es restado al ,alor
actual de literal.+ o de nomre dato.+( almacenando el resultado en los campos que si-uen a la palara 3ILIN3)
Gormato 9<
Cuando se utili!a este formato los campos elementales de nomre dato.8 son restados de los correspondientes
campos elementales de nomre dato.+)
Sentencia /)L.I(L0.
La sentencia FULTI1LM es utili!ada para multiplicar un dato num%rico por otro u otros datos num%ricos y de#ar el
resultado en uno o mas campos)
Gormato 8<
+A de EA
Con este formato( el operando que precede a la palara ?M se multiplica por el ,alor que la si-ue( almacenando el
resultado en nomre dato.+( y repitiendo el proceso para todos los campos que si-uen a ?M)
La frase *ND.FULTI1LM puede ser solamente utili!ada con la frase >IP* *RROR)
Gormato +<
Con este formato( el operando literal o nomre dato.8 se multiplica por literal.+ o nomre dato.+( almacenando los
resultados en los campos que si-uen a la palara 3ILIN3)
Sentencia &IVI&.
La sentencia DILID* es utili!ada para di,idir uno o mas datos num%ricos por otro y de#ar el resultado en uno o mas
campos)
Gormato 8<
9: de EA
Con este formato( el operando que precede a la palara INTO act0a como di,isor del ,alor actual de nomre dato.
+( almacenando el resultado en este mismo campo( y repitiendo el proceso para el resto de los campos que si-uen
a la palara INTO)
La frase *ND.DILID* puede ser utili!ada solamente en el caso de que se especifique la frase >IP* *RROR)
Gormato +<
Con este formato el operando literal o nomre dato.8 act0a como di,isor de nomre dato.+ o literal.+( almacenando
el resultado en los campos que si-uen a la palara 3ILIN3)
Gormato 9<
Con este formato el operando literal o nomre dato.8 se di,iden por el ,alor de literal.+ o nomre dato.+(
almacenando los resultados en los campos que si-uen a la palara 3ILIN3)
Gormato ;<
Con este formato el operando literal o nomre dato.8 act0a como di,isor de nomre dato.+ o literal.+( almacenando
el ,alor en los campos que si-uen a la palara 3ILIN3 y el resto de la di,isin en el campo nomre dato.;) *l resto
puede ser entero o decimal y se calcula restando del di,idendo el producto del cociente por el di,isor) *l calculo del
resto( no se tiene en cuenta el redondeo en caso de que se haya especificado la cl"usula ROUND*D)
Gormato B<
98 de EA
Con este formato el operando literal o nomre dato.8 se di,ide por el ,alor actual de nomre dato.+ o literal.+(
almacenando el ,alor en los campos que si-uen a la palara 3ILIN3 y el resto de la di,isin en el campo nomre
dato.;) *l resto puede ser entero o decimal y se calcula restando del di,idendo el producto del cociente por el
di,isor) *l calculo del resto( no se tiene en cuenta el redondeo en caso de que se haya especificado la cl"usula
ROUND*D)
>- Sentencias de control.
$ecucin condicional) Sentencia I8.
La sentencia IG toma una decisin referente a la accin a e#ecutar en un pro-rama( as"ndose en el resultado(
,erdadero o falso( de una condicin) >u formato es<
La condicin ,iene dada por una e2presin de ?OOL*)
>i en la condicin inter,ienen operadores de diferentes tipos( los operadores aritm%ticos tienen mayor prioridad(
despu%s se e#ecutan los operadores de relacin y por ultimo los operadores l-icos)
La forma en que se e#ecuta la sentencia IG es la si-uiente<
>i el resultado de la condicin es ,erdadero( se e#ecutar" lo indicado por la accin.8)
>i el resultado de la condicin es falso( se e#ecutar" lo indicado por la accin.+)
>i el resultado de la condicin es falso( y la cl"usula *L>* se ha omitido( la accin.8 se i-nora)
*n cualquier caso de los anteriormente e2puestos( la e#ecucin continua con la si-uiente
sentencia e#ecutale)
*l "mito de la sentencia IG finali!a de cualquiera de las formas si-uientes<
8. 1or un punto.
+. 1or la cl"usula EN+-#".
Cuando la accin.8 o la accin.+ est"n formadas por ,arias sentencias( solamente la ultima finali!a con un punto(
ya que este indica el final de una sentencia IG)
>i se especifica la frase *ND.IG no se puede utili!ar la frase N*JT >*NT*NC*)
(rue4as de relacin,
*l formato -eneral para formar un condicin de relacin es<
9+ de EA
+ondiciones co"4inadas.
Una condicin cominada esta formada por un con#unto de condiciones simples unidas por los operadores OR y
7ND) *l formato es el si-uiente<
Tami%n( hay que tener presente que el operador NOT puede preceder a una condicin simple o a una condicin
cominada)
(rue4as de clase.
1ermiten saer si un campo es num%rico o alfa%tico)
(rue4as de signo.
1ermiten determinar si el ,alor de un campo num%rico de una e2presin aritm%tica es positi,o( ne-ati,o o cero) *l
formato -eneral es el si-uiente<
(rue4as de no"4re de condicin.
1ermiten proar si un nomre de condicin al que se le ha asociado un determinado ,alor( coincide con el ,alor del
campo de datos del cual depende)
Anida"iento de sentencias I8.
Las sentencias IG)))T=*N pueden estar anidadas) *sto quiere decir que como accin.8 o accin.+( de acuerdo con
el formato( puede escriirse otra sentencia IG)
structura I8.
99 de EA
La estructura presentada a continuacin( aparece con astante frecuencia y es por lo que la damos un tratamiento
por separado) *sta estructura es consecuencia del anidamiento de sentencias IG)

>i se cumple la condicin.8( se e#ecutan las sentencias.8 y si no se cumplen se e2aminan secuencialmente las
condiciones si-uientes hasta *L>*( e#ecut"ndose las sentencias correspondientes al primer *L>* IG( cuya
e2presin sea cierta) >i todas las e2presiones son falsas( se e#ecutan las sentencias.n correspondientes al ultimo
*L>*) *n cualquier caso( se continua con la si-uiente sentencia en la estructura)
Lla"ada a procedi"ientos. Sentencia (*8O*/.
La sentencia 1*RGORF es utili!ada para transferir e2plcitamente el control a uno o mas procedimientos y de,ol,er
el control implcitamente( cuando la e#ecucin del procedimiento especificado( finalice)
La sentencia 1*RGORF se puede utili!ar para controlar la e#ecucin de una o mas sentencias( las cuales est"n
dentro del "mito de la sentencia 1*RGORF)
Gormato 8<
1*RGORF procedimiento.8 VT=RU procedimiento.+W
>i no se especifica la sentencia T=RU( la sentencia 1*RGORF e#ecuta una ,e!( el con#unto de sentencias que
forman el procedimiento.8) >i la opcin T=RU se especifica( entonces se e#ecutan( una ,e! todos los
procedimientos e2istentes en el pro-rama entre procedimiento.8 y procedimiento.+( amos inclusi,e)
Gormato +<
>i no se especifica la opcin T=RU( la sentencia 1*RGORF e#ecuta el numero de ,eces especificado por entero o
por un nomre de datos( le con#unto de sentencias que forman procedimiento.8) >i la opcin T=RU se especifica(
entonces se e#ecutan el numero de ,eces especificado( todos los procedimientos e2istentes en el pro-rama entre
procedimiento.8 y procedimiento.+( amos inclusi,e)
Gormato 9<
9; de EA
Cuando se emplea este formato( la sentencia 1*RGORF e#ecuta el numero de ,eces especificado por entero o por
nomre de datos( el con#unto de sentencias que hay entre 1*RGORF y *ND.1*RGORF) Un punto( como final de
al-una de las sentencias de esta estructura( dara lu-ar a un error( ya que se entendera como final de la sentencia
1*RGORF)
Gormato ;<
>i no se especifica la opcin T=RU( la sentencia 1*RGORF e#ecuta el con#unto de sentencias que forman el
procedimiento.8 hasta que la condicin sea ,erdad) >i la opcin T=RU se especifica( entonces se e#ecutan( hasta
que la condicin sea ,erdad( todos los procedimientos e2istentes en el pro-rama entre procedimiento.8 y
procedimiento.+( amos inclusi,e)
La e#ecucin( si no se ha especificado la opcin NIT= T*>T( se reali!a de la forma si-uiente<
8. >e e,al0a la condicin) >i es cierta( se da por finali!ada la e#ecucin
de la sentencia 1*RGORF y se pasa a la sentencia si-uiente en el
pro-rama( si es falsa se pasa al punto +)
+. >e e#ecuta el procedimiento.8 hasta el procedimiento.+( si ha sido
especificado( y se ,uel,e al punto 8)
La opcin T*>T ?*GOR*( e,al0a la condicin antes de la e#ecucin( esto quiere decir que la e#ecucin se efectuara
: o mas ,eces) *s la opcin por defecto)
La opcin T*>T 7GT*R( e,al0a la condicin despu%s de la e#ecucin( esto quiere decir que la e#ecucin se
efectuara una o mas ,eces)
Gormato B<
Cuando se emplea este formato( la sentencia 1*RGORF e#ecuta el con#unto de sentencias que hay entre
1*RGORF y *ND.1*RGORF hasta que la condicin sea ,erdad) Un punto( como final de al-una de las sentencias
de esta estructura( dara lu-ar a un error( ya que se entendera como final de la sentencia 1*RGORF)
Gormato C<
9B de EA
La e#ecucin( si no se ha especificado la opcin T*>T 7GT*R( se reali!a de la forma si-uiente<
8. *l nomre dato.8 se iniciali!a al ,alor especificado por literal o
nomre dato.+ que si-ue a GROF)
+. >e e,al0a la condicin) >i es cierta( se da por finali!ada la e#ecucin
de la sentencia 1*RGORF y se pasa a la sentencia si-uiente en el
pro-rama) >i es falsa se pasa al punto 9)
9. >e e#ecuta el procedimiento.8 hasta el procedimiento.+( si ha sido
especificado)
;. >e suma a nomre dato.8 el ,alor especificado por nomre dato.9
que si-ue a ?M( y se ,uel,e al punto +)
Gormato E<
La e#ecucin( si no se ha especificado la opcin T*>T 7GT*R( se reali!a de la forma si-uiente<
8. *l nomre dato.8 se iniciali!a al ,alor especificado por literal o
nomre dato.+ que si-ue a GROF)
+. >e e,al0a la condicin) >i es cierta( se da por finali!ada la e#ecucin
de la sentencia 1*RGORF y se pasa a la sentencia si-uiente en el
pro-rama) >i es falsa se pasa al punto 9)
9. >e e#ecutan las sentencias entre 1*RGORF y *ND.1*RGORF)
;. >e suma a nomre dato.8 el ,alor especificado por nomre dato.9
que si-ue a ?M( y se ,uel,e al punto +)
Gormato D<
9C de EA
La e#ecucin( si no se ha especificado la opcin T*>T 7GT*R( se reali!a de la forma si-uiente<
8. *l nomre dato.8 y el nomre dato.; se iniciali!an a los ,alores
respecti,os que si-uen a cada GROF)
+. >e e,al0a la condicin.8) >i es cierta( se da por finali!ada la
e#ecucin de la sentencia 1*RGORF y se pasa a la sentencia
si-uiente en el pro-rama) >i es falsa se pasa al punto 9)
9. >e e,al0a la condicin.+) >i es cierta( el nomre dato.; se iniciali!a
al ,alor especificado por literal.+ o nomre dato.; que si-ue a GROF(
tami%n se suma a nomre dato.8 el ,alor especificado por nomre
dato.9 que si-ue a ?M y se continua en el punto +) >i es falsa se pasa
al punto ;)
;. >e e#ecutan las sentencias entre procedimiento.8 y procedimiento.
+( si ha sido especificado)
B. >e suma a nomre dato.; el ,alor especificado por nomre dato.C
que si-ue a ?M( y se ,uel,e al punto 9)
Los nomres dato yHo pueden ser enteros o reales( positi,os o ne-ati,os y cero e2cepto los nomres de ndice que
deen ser enteros)
Anida"iento de sentencias (*8O*/.
Dentro del "mito de una sentencia 1*RGORF( puede especificarse otra sentencia 1*RGORF( aunque hay que
tener presentes las si-uientes re-las<
8. *l procedimiento 1*RGORF e#ecutado desde el "mito de otro
1*RGORF dee ser totalmente e2terior o totalmente interior a este)
+. Los "mitos de dos 1*RGORF se pueden solapar cuando las
sentencias de llamada para su e#ecucin est"n fuera de estos "mitos)
9. Las sentencias 1*RGORF pueden ser anidadas liremente)
;. Un procedimiento 1*RGORF puede llamarse asimismo( esto es( la
recursi,idad esta permitida)
Sentencia ?I..
9E de EA
*sta sentencia se utili!a como complemento de la sentencia 1*RGORF( para proporcionar un punto final para uno
o mas procedimientos( a fin de permitir la salida desde cualquier punto)
Gormato< *JIT
La sentencia *JIT forma por si sola un p"rrafo identificado por un nomre)
Sentencia de 4ifurcacin 'O.
*sta sentencia permite transferir el control desde un punto de la di,isin 1ROC*DUR* a otro)
Gormato 8<
3O TO Vnomre procedimientoW
>e puede omitir la escritura del nomre de procedimiento utili!ando la sentencia 3O TO en cominacin con la
sentencia 7LT*R( especificando en esta ultima el nomre del procedimiento al que se dee ifurcar)
Gormato +<
3O TO nomre procedimiento.8 Vnomre procedimiento.+W))) D*1*NDIN3 ON nomre datos
Sentencia AL.*.
*sta sentencia permite modificar el punto al cual ha de ifurcar una sentencia 3O) >u formato es el si-uiente<
7LT*R nomre procedimiento.8 TO V1ROC**D TOW nomre procedimiento.+
Vnomre procedimiento.9 TO V1ROC**D TOW nomre procedimiento.;W )))
Sentencia S.O(.
*sta sentencia permite suspender temporal o definiti,amente la e#ecucin de un pro-rama)
La sentencia >TO1 RUN termina el pro-rama y de,uel,e el control al sistema operati,o) 1or eso es la ultima
sentencia que se e#ecuta)
La sentencia >TO1 literal( suspende la e#ecucin del pro-rama y en,a el literal especificado a la pantalla) 7
continuacin el operador puede continuar la e#ecucin del pro-rama o ien detener la misma)
@- +adenas de caracteres.
Introduccin.
Una cadena de caracteres es un literal no num%rico esto es( una secuencia de caracteres $en nuestro caso 7>CII'
encerrados entre comillas simples o doles)
Sentencia ?A/I2.
9D de EA
*sta sentencia cuenta el numero de ocurrencias de un car"cter dado en un campo de datos y si es preciso( este
car"cter puede ser reempla!ado por otro)
Gormato 8<
*ste formato permite e2aminar yHo reempla!ar caracteres en un campo de datos)
Gormato +<
*ste otro formato permite solo reempla!ar caracteres en un campo de datos)
*l campo denominado por nomre dato tiene que ser un campo de caracteres)
Car"cter representa un 0nico car"cter) >i el campo es num%rico el car"cter dee ser un d-ito num%rico $: a A'( un
d-ito del : al A no num%rico $]:] a ]A]' o la constante fi-urati,a P*RO) >i el campo no es num%rico( el car"cter
puede ser num%rico( no num%rico o cualquier constante fi-urati,a e2cepto 7LL)
La opcin T7LLMIN3 crea autom"ticamente un campo entero denominado T7LLM que act0a como contador) La
cuenta representa el numero de<
8. Caracteres diferentes del car"cter.8 hasta la aparicin del car"cter
i-ual a car"cter.8 $UNTIL GIR>T')
+. Leces que se repite el car"cter.8 en el campo nomre dato $7LL')
9. Leces que aparece el car"cter.8 antes de encontrar uno distinto a el
$L*7DIN3')
Cuando se utili!a la opcin R*1L7CIN3( las re-las de sustitucin son las si-uientes<
8. *l car"cter.8 o el car"cter.9 queda sustituido por el car"cter.+ o por
el car"cter.; $7LL')
+. La sustitucin por car"cter.+ o car"cter.; termina cuando aparece
un car"cter distinto al car"cter.8 o car"cter.9 $L*7DIN3')
9. *l primer car"cter o car"cter.9 que apare!ca es sustituido por el
car"cter.+ o car"cter.; $GIR>T')
;. La sustitucin por car"cter.+ o por car"cter.; finali!a cuando
aparece un car"cter.8 o car"cter.9( o cuando se lle-a al final del
campo $UNTIL GIR>T')
Sentencia .*A2S8O*/.
9A de EA
*sta sentencia permite alterar todos o parte de los caracteres de un campo de acuerdo con una re-la de
transformacin)
Gormato<
TR7N>GORF nomre dato.8 C=7R7CT*R> GROF dato.8 TO dato.+)
Dato.8 y dato.+ representan una constante fi-urati,a( un literal no num%rico o un nomre de dato) 1or lo tanto(
e2isten nue,e posiles cominaciones que determinan otras tantas re-las de transformacin) 7mos ser"n de la
misma lon-itud o numero de caracteres)
Nomre dato.8 dee ser un campo elemental no num%rico o un campo compuesto)
Sentencia I2S(+..
*sta sentencia permite contar( reempla!ar( o contar y reempla!ar ocurrencias de caracteres simples o -rupos de
caracteres en un campo de datos)
Gormato 8<
Gormato +<
Gormato 9<
Gormato ;<

Gormato B<
Gormato C<
;: de EA
Nomre dato.8 es el campo a e2aminar) 1uede ser un campo elemental o un campo compuesto)
Nomre dato.+ es un campo num%rico elemental que se utili!a como contador)
Nomre dato.9 ))) Nomre dato.E se refieren a un campo elemental num%rico o no num%rico)
Los literal.8()))(literal.B y los campos denominados por nomre dato.9())( nomre dato.E( pueden tener cualquier
numero de caracteres)
T7LLMIN3 indica que hay que contar el numero de ,eces que aparece la cadena de caracteres desi-nada por
nomre dato.9) La cuenta se lle,a en nomre dato.+)
C=7R7CT*R> indica que hay que contar todos los caracteres del campo denominado por nomre dato.8)
7LL indica que hay que contar todas las incidencias)
L*7DIN3 indica que hay que contar solo las primeras ocurrencias conti-uas)
?*GOR* INITI7L indica que el conteo se dee interrumpir despu%s de la primera ocurrencia desi-nada por nomre
dato.;)
7GT*R INITI7L indica que el conteo dee comen!ar despu%s de la primera ocurrencia desi-nada por nomre dato.
;)
R*1L7CIN3 indica que el campo denominado por nomre dato.8( hay que reempla!ar al-unos o todos los
caracteres por otros especficos en la sentencia IN>1*CT) Las opciones que se pueden especificar con
R*1L7CIN3 son las mismas que se han especificado para T7LLMIN3 y tienen el mismo si-nificado( si pensamos
en que hay que reempla!ar en lu-ar de contar) 7parece una opcin mas que es GIR>T)
GIR>T indica que solo se reempla!a la primera ocurrencia del campo denominado nomre dato.8)
CONL*RTIN3 indica que hay que con,ertir cada car"cter de una cadena de caracteres a los correspondientes
caracteres de otra) 7mas cadenas deen tener la misma lon-itud)
Sentencia S.*I2'.
;8 de EA
*sta sentencia permite enla!ar $concatenar' el contenido total o parcial de dos o mas campos( almacenarlo el
resultado en un solo campo)
Gormato<
Nomre dato.8 o literal.8( representan las cadenas que deseamos enla!ar y nomre dato.9 indica el campo donde
se almacenar" el resultado) *ste campo no dee contener smolos de edicin) Los campos emisores y receptores
no deen ser num%ricos)
Los campos utili!ados como delimitadores $D*LIFIT*D ?M nomre dato.+'( son campos elementales no num%ricos
que indican hasta que car"cter hay que mo,er( e2cluido este)
La opcin >IP* indica que( el numero de caracteres que tienen que ser transferidos es como mucho i-ual al tama@o
del campo receptor)
Cada literal puede ser un literal no num%rico o una constante fi-urati,a e2cepto 7LL)
La opcin 1OINT*R permite especificar por medio del campo nomre dato.;) La posicin en la que ,a a ser
almacenado el primer car"cter transferido) *ste ,alor por defecto es 8 y es incrementado en 8 por cada car"cter
transferido)
>i el ,alor nomre dato.; es menor que 8 o toma un ,alor mayor que el tama@o del campo receptor( la transferencia
de caracteres a este campo se interrumpe y se e#ecuta la sentencia.8( si se ha especificado la opcin ON
OL*RGLON) *n otro caso( la transferencia se reali!a totalmente y se e#ecuta la sentencia.+( si se ha especificado
la opcin NOT ON OL*RGLON)
Sentencia )2S.*I2'.
*sta sentencia permite di,idir el contenido de un campo en ,arios campos)
Nomre dato.8 indica la cadena que hay que separar) *l resultado se almacena en el campo o los campos
representados en nomre campo.;)
;+ de EA
Los campos utili!ados como delimitadores $D*LIFIT*D'( son campos elementales alfanum%ricos que indican por
donde hay que separar el campo denominado por nomre dato.8) >i se utili!a la cl"usula 7LL( las posiles
ocurrencias consecuti,as indicadas por estos campos( se trataran como si fuese una 0nica ocurrencia)
Cada literal puede ser un literal no num%rico o una constante fi-urati,a e2cepto 7LL)
>i se especifica la opcin D*LIFIT*R IN( los caracteres delimitadores son tratados como datos alfanum%ricos
elementales y almacenados en los campos referenciados por nomre dato.B)
>i se especifica la opcin COUNT IN( el ,alor correspondiente al numero de caracteres e2aminados( e2cluyendo los
delimitadores( es almacenado en el campo referenciado por nomre dato.C)
D*LIFIT*R y COUNT solamente pueden utili!arse si se ha especificado la opcin D*LIFIT*D ?M)
>i se especifica la opcin 1OINT*R la cadena identificada por nomre dato.8 es e2aminada a partir de la posicin
especificada por el campo nomre dato.E) *sta posicin por defecto es 8) *sta campo es incrementado
autom"ticamente en una unidad por cada car"cter e2aminado)
>i se especifica la opcin T7LLMIN3( el ,alor correspondiente al numero de campos receptores acti,ados durante la
e#ecucin de una sentencia UN>TRIN3( es almacenado en nomre dato.D)
>i se especifica la opcin OL*RGLON y el ,alor del campo nomre dato.E es menor que 8 o mayor que el tama@o
de la !ona emisora( o ien todos los campos receptores se han acti,ado y aun quedan caracteres por e2aminar en
el campo emisor( la sentencia.8 se e#ecuta) >i no se da una condicin OL*RGLON y se ha especificado la
sentencia NOT ON OL*RGLON entonces se e#ecuta la sentencia.+)
La cl"usula *ND.UN>TRIN3 delimita el "mito de esta sentencia)
A- /anipulacin de ta4las.
Introduccin.
Una tala es un con#unto de elementos del mismo tipo( que comparten en com0n un nomre com0n pero que son
distin-uiles por la posicin que ocupa cada uno de ellos en la tala) Cada elemento de la tala puede contener un
dato num%rico o una cadena de caracteres o una cominacin de amos) La representacin de una tala se hace
mediante ,ariales suscritas o de sundices y puede tener una o ,arias dimensiones)
&escripcin de una ta4la.
La descripcin de una tala se hace en la seccin GIL* y en la seccin NOROIN3.>TOR73* utili!ando la cl"usula
OCCUR>)
+l<usula O++)*S.
Declara una estructura de datos denominada tala) >u formato es el si-uiente<
La cl"usula OCCUR> no puede especificarse en una descripcin de ni,el :8( EE( DD o CC)
;9 de EA
*ntero indica el numero de ,eces que se repite un campo con la misma descripcin)
Cuando el numero de ,eces que se repite el campo con la misma descripcin es ,ariale( se emplea la
especificacin entero-! TO entero-- donde el ,alor de entero.8 es menor que el ,alor de entero.+)
Cuando se especifica la cl"usula D*1*NDIN3( es para indicar el numero de ,eces que se repite el campo con la
misma descripcin es ,ariale y depende del campo nomrado por nomre dato.8)
Las cl"usulas 7>C*NDIN3 o D*>C*NDIN3( indican si los elementos de la tala estan ordenados
ascendentemente o descendentemente por uno o mas campos denominados por nomre dato.+ y nomre dato.
9 )))( que formen parte de dichos elementos)
La cl"usula IND*J*D se utili!a para especificar el nomre de ndice o ndices( cuando en una tala ordenada se
reali!a una 0squeda inaria)
Sentencia S..
1ermite transferir el ,alor de un literal( nomre de datos o de un ndice a uno mas identificadores)
Gormato 8<
Cuando se e#ecuta esta sentencia el ,alor del operando que si-ue a TO es transferido a los operandos que si-uen a
>*T)
Gormato +
<
*ste formato permite ir incrementando $U1 ?M' o decrementando $DONN ?M' el ndice o ndices en el ,alor
especificado por nomre dato o entero)
+l<usula )SA' I2&?.
*sta cl"usula declara un campo un campo para ser utili!ado como un ndice)
VU>73* I>W IND*J
Un campo de ndice solo puede ser referenciado por la sentencias >*T y >*7RC=)
%BS1)&A S+)2+IAL. Sentencia SA*+H.
;; de EA
*sta sentencia permite reali!ar una 0squeda secuencial entre los elementos de una tala hasta que el contenido
de uno de ellos satisfa-a una determinada condicin)
Nomre dato.8 se refiere al elemento de la tala( por lo tanto( su descripcin dee contener una cl"usula OCCUR>
mas la cl"usula IND*J*D ?M) 1uede ser tami%n un campo suordinado a otro que conten-a una cl"usula
OCCUR>)
Cuando se especifica nomre dato.+ dee ser descrito por medio de la cl"usula U>73* I> IND*J o como un
campo elemental entero) *l ,alor de este campo e,oluciona paralelamente al ndice de la tala y se emplea
cuando<
a' 7parte de reali!ar la 0squeda de un determinado elemento de la tala se
desea conocer su posicin)
' >e desea incrementar simult"neamente el ndice de otra tala diferente a la
tala en la que se esta reali!ando la 0squeda)
Las condiciones de las cl"usulas N=*N se e,al0an en el orden en que estan descritas)
Las sentencias 8( + o 9( son sentencias imperati,as( esto es cualquier sentencia no condicional)
Una sentencia >*7RC= se e#ecuta de la forma si-uiente<
8) >e iniciali!a el ndice asociado con nomre dato.8( por medio de una
sentencia >*T( con un ,alor que se corresponde con el numero de elemento de
la tala donde se desee que comience la 0squeda)
+) >i el ,alor del ndice asociado es mayor que el numero de elementos de la
tala( la 0squeda termina y se e#ecuta la sentencia que si-ue a la cl"usula 7T
*ND( si esta se ha especificado)
9) >e e,al0an las condiciones de las cl"usulas N=*N en el orden que estan
descritas) >i se satisface al-una de las condiciones( la 0squeda termina y se
e#ecuta la sentencia asociada con la condicin satisfecha) >i no se satisface
nin-una de las condiciones se incrementa el ,alor de ,alor del ndice asociado
con nomre dato.8 y se continua en el paso +)
;B de EA
%BS1)&A %I2A*IA. Sentencia SA*+H ALL.
*sta sentencia reali!a una 0squeda inaria en una tala)
Nomre dato.8 se refiere al elemento de la tala( por lo tanto( su descripcin dee contener una cl"usula OCCUR>
mas la cl"usula IND*J*D ?M y adem"s la tala dee estar ordenada por uno o mas campos pertenecientes a
dicho elemento( cuestin que indicaremos con la cl"usula 7>C*NDIN3 O*M o con la cl"usula D*>C*NDIN3 O*M)
C- 8I+H*OS & 2.*A&A 0 SALI&A.
8ichero,
Un fichero es una coleccin de informacin que almacenamos en un soporte para poder manipularla en cualquier
momento) *sta informacin se almacena como un con#unto de re-istros( conteniendo todos ellos -eneralmente los
mismos campos) Campo elemental almacena un dato num%rico o de caracteres)
Organi=aciones 4<sicas,
*2isten tres or-ani!aciones "sicas de los re-istros de un fichero( de cuya cominacin se deri,an multitud de
or-ani!aciones posiles) *stas son<
. >ecuencial)
. Relati,a)
. >ecuencial Inde2ada)
/odos de acceso,
*n cuanto a los modos o tipos de acceso( distin-uimos dos<
. 7cceso secuencial)
. 7cceso aleatorio o directo)
>e hala de acceso secuencial cuando se ,an accediendo a posiciones sucesi,as( esto es tras acceder a la
posicin N( se accede a la posicin NQ8( y se hala de acceso aleatorio o directo cuando se accede directamente a
la posicin deseada( sin necesidad de acceder a las posiciones que le preceden)
>e-0n el tipo el tipo de or-ani!acin empleada para crear un fichero el modo de acceso puede ser<
Organi=acin +reacin *ecuperacin
>ecuencial >ecuencial >ecuencial
;C de EA
Relati,a >ecuencial o aleatoria >ecuencial o aleatoria
>ecuencial inde2ada >ecuencial o aleatoria >ecuencial o aleatoria
Seccin de entrada Salida,
*sta seccin es opcional) *l nomre de la misma( IN1UT.OUT1UT >*CTION( deer" fi-urar cuando se especifique
al-uno de sus p"rrafos)
>u Gormato es el si-uiente<
IN1UT.OUT1UT >*CTION)
GIL*.CONTROL)
Z entrada de control de los ficheros [ )))
I.O CONTROL)
Z entrada de control de *H> [ )))
(<rrafo 8IL-+O2.*OL.
*ste p"rrafo se utili!a para dar un nomre a cada fichero que se utili!a en el pro-rama( al mismo tiempo que se le
asi-na el equipo perif%rico correspondiente) Tami%n da informacin acerca de como esta or-ani!ado el fichero y
cual es el modo de acceso)
*ste p"rrafo esta formado e2clusi,amente por las sentencias >*L*CT( e2istiendo una por cada fichero que se
utili!a en el pro-rama) >u formato es el si-uiente<
La palara O1TION7L( puede ser solamente especificada con ficheros aiertos en modo IN1UT( I.O o *JT*ND*D)
>u funcin es indicar que el fichero especificado puede o no estar presente cuando el pro-rama se e#ecute)
*l nombre de fic/ero es el nomre simlico dado al fichero) Dee ser 0nico en el pro-rama)
;E de EA
+l<usula ASSI'2,
7si-na el fichero al dispositi,o fsico en el cual ser" ledo yHo escrito<
Nombre e0terno del fic/ero es el nomre real que tiene el fichero a#o el sistema operati,o) >i este contiene el
car"cter ^.\( se tomar" como nomre para identificar solamente los caracteres que si-uen al ultimo ].]) 1ara
especificar este nomre puede utili!arse un literal o un nomre de dato)
Cuando un nomre de dispositi,o ,a se-uido de un nomre e2terno( la palara cla,e que referencia el dispositi,o
se i-nora)
DI>O hace referencia a que el fichero especificado esta sore el disco ma-n%tico) *l nomre simlico dado al
fichero no tiene porque coincidir con el nomre fsico del fichero) DI>O sin nomre e2terno especifica un fichero en
disco cuyo nomre sore el mismo se especificar" en la cl"usula L7LU* OG GIL*.ID) >i esta cl"usula se omite se
asume como nomre e2terno( el nomre interno simlico)
O*M?O7RD si-nifica entrada por la consola)
DI>1L7M si-nifica salida por la consola)
1RINT*R si-nifica salida por la impresora principal del sistema)
1RINT*R.8 si-nifica salida por la impresora secundaria)
+l<usula *S*V,
Indica al compilador que reser,e o no( un numero de "reas de entrada adicionales al "rea de traa#o normal que se
requiere para almacenar un loque o re-istro fsico del fichero( una ,e! ledo) *sto puede repercutir en una mayor
,elocidad de proceso)
+l<usula O*'A2IZA.IO2,
Indica el tipo de or-ani!acin que tienen lo re-istros del fichero)
>*4U*NTI7L se refiere a la or-ani!acin secuencial( R*L7TIL* se refiere a la or-ani!acin relati,a e IND*J*D
se refiere a la or-ani!acin secuencial inde2ada)
;D de EA
>i la cl"usula OR37NIP7TION se omite( se asume la or-ani!acin secuencial)
+l<usula A++SS,
Indica el modo o tipo de acceso que se ,a a utili!ar para leer yHo escriir lo re-istros del fichero)

*l modo de acceso depende de la or-ani!acin del fichero)
>*4U*NTI7L si-nifica que los re-istros ser"n accedidos secuencialmente( R7NDOF si-nifica que los re-istros
pueden ser accedidos de una forma aleatoria por la cla,e o por el numero relati,o del re-istro y DIN7FIC si-nifica
que los re-istros pueden ser accedidos de forma secuencial o aleatoria)
>i la cl"usula no se especifica se asume el acceso secuencial)
+l<usula LO+:,
Indica si todos o parte de los re-istros del fichero( pueden o no ser compartidos por otros procesos)
*JCLU>IL* especifica que el fichero es e2clusi,o( esto es( no compartile( y F7NU7L o 7UTOF7TIC especifican
que el fichero puede ser compartido por mas de un proceso)
NIT= LOCO ON R*CORD hace referencia a hacer no compartile un 0nico re-istro y NIT= LOCO ON FULTI1L*
R*CORD>( hace referencia a hacer no compartiles m0ltiples re-istros)
+l<usula *+O*& :0,
*sta cl"usula se utili!a en ficheros con or-ani!acin inde2ada( e indica la cla,e utili!ada para acceder a los
re-istros de los mismos(
R*CORD O*M I> nomre.de.dato
Nombre de dato indica el campo alfanum%rico elemental o compuesto perteneciente a un re-istro del fichero que se
utili!ar" como cla,e) *l contenido de este campo dee ser 0nico para cada re-istro)
;A de EA
+l<usula 8IL S.A.)S,
1ermite saer el estado de un fichero despu%s de un operacin de *H>)
GIL* >T7TU> I> nomre.de.datos)
Cuando se reali!a una operacin de *H> sore el fichero( el sistema mue,e un ,alor al campo denominado por
nombre de datos( que indica como se ha reali!ado dicha operacin) *ste campo puede ser num%rico o
alfanum%rico( de lon-itud de dos d-itos)
*l d-ito mas a al i!quierda indica<
: Operacin correcta)
8 Gin de fichero)
+ Cla,e in,alida)
9 *rror permanente)
; *rror L-ico)
A Fensa#e de error del sistema)
*l d-ito mas a la derecha indica<
: No hay informacin disponile)
+ Cla,e in,alida en fichero inde2ado)
; La lon-itud del re-istro no es correcta)
B Gichero opcional referenciado no presente)
E *l fichero secuencial no esta en cinta ma-n%tica)
(<rrafo I-O +O2.*OL.
*ste p"rrafo permite especificar si dos o mas ficheros ,an a compartir un "rea com0n de *H>( o ien permite
re-istrar puntos de control( a partir de los cuales se puede reanudar la e#ecucin del pro-rama( tras producirse una
B: de EA
interrupcin en el mismo) *sto es ueno( si pensamos que e2iste el ries-o de una interrupcin accidental durante la
e#ecucin de un pro-rama( ya que permitira reanudar la e#ecucin del mismo( no desde el principio sino desde el
ultimo punto de control -raado)
Gormato 8< $ficheros secuenciales'
Gormato +< $todos los ficheros'
La cl"usula 'E'1N estalece puntos de control desde los cuales se podr" reanudar la e#ecucin del pro-rama en
caso de ocurrir una interrupcin accidental o pro,ocada)
Un punto de control es una informacin del estado del ordenador en un punto determinado de la e#ecucin del
pro-rama( que se -raa -eneralmente sore el disco y que permite reanudar la e#ecucin del pro-rama desde
dicho punto en caso de interrupcin)
Los puntos de control se -raan en el perif%rico nomrado por fic/ero-! o dispositi2o)
"ic/ero-- especifica el fichero que estamos procesando)
>i se emplea el formato 8( se -raa un re-istro de control cada ,e! que se lle-ue al final fsico de un ,olumen)
>i se emplea el formato +( se -raa un re-istro de control cada ,e! que se hayan procesado de fic/ero--( entero-!
re-istros o ien cada ,e! que pasen entero-! minutos)
La funcin de la cl"usula $A3E es indicar que dos o mas ficheros compartir"n el mismo "rea) *sta cl"usula es 0til
cuando se dispone de poca memoria)
La cl"usula 31LT#PLE "#LE se utili!a cuando ,arios ficheros est"n contenidos en un mismo soporte de cinta
ma-n%tica) *sta cl"usula adem"s de especificar que ficheros est"n contenidos( permite indicar la posicin relati,a
de dichos ficheros en la cinta)
Seccin de ficheros,
*n la "#LE $E%T#ON dee descriirse toda la informacin dee descriirse toda la informacin referente a los
ficheros utili!ados en el pro-rama)
B8 de EA
8& no"4re de fichero,
"+ es la are,iatura de Gile Description y nombre de fic/ero es un nomre creado correspondiente al fichero que
,a a descriirse) *2isten tantas "+ como ficheros utilicemos en el pro-rama)
+l<usula LA%L *+O*&,
*sta cl"usula es oli-atoria e indica si los re-istros lle,an o no etiquetas) Las etiquetas son unos re-istros
adicionales a los re-istros de datos de un fichero( situados al principio y al final del mismo( que sir,en para
identificar al fichero) *stos re-istros $etiquetas' se -eneran cuando se accede a un fichero para salida o se leen
cuando se accede a un fichero para entrada)
*2isten tres posiilidades<
8. Omitir esta identificacin( cl"usula OFITT*D)
+. Crear etiquetas est"ndar para todos los ficheros( -eneradas por el propio sistema( cl"usula >T7ND7RD)
9. Crear etiquetas con un formato determinado) Le etiqueta seria identificada con un nomre y descrita a ni,el :8)
Gormato<
Los ficheros en disco requieren etiquetas( en camio un fichero para salida al que le hemos asi-nado la impresora
no requiere etiquetas)
+l<usula VAL) O8 8IL-I&,
*sta informacin es necesaria para los ficheros en disco) Indica el nomre e2terno del fichero( esto es( el nomre
que tiene el fichero que se esta descriiendo( en el directorio correspondiente del disco) *l formato para esta
cl"usula es el si-uiente<
B+ de EA
Nombre de datos o literal desi-nan el nomre e2terno del fichero)
*sta cl"usula no puede especificarse( si en la cl"usula A$$#)N se ha especificado el nomre e2terno del fichero)
+l<usula *+O*&I2' /O&,
*sta cl"usula especifica el formato del re-istro l-ico en le fichero) >u formato es el si-uiente<
"#4E+ o simplemente " especifica que todos los re-istros son de la misma lon-itud y 5A'#ABLE o 5 especifica que
los re-istros pueden tener lon-itud ,ariale o fi#a)
+l<usula %LO+: +O2.AI2S,
*sta cl"usula especifica el numero de re-istros l-icos que contenidos en un re-istro fsico o loque( o el numero
de caracteres contenidos en un re-istro fsico) >u formato es el si-uiente<
>i los loques son de lon-itud ,ariale dee especificarse entero-! TO( esto es( el tama@o de los loque estar"
comprendido entre los ,alores entero-! y entero--) >i los ,alores son de lon-itud fi#a( el tama@o ,endr" dado por
entero--.
*sta cl"usula se incluye solamente con ficheros en cintas o discos ma-n%ticos) *l a-rupar los re-istros de un
fichero en loques( tiene dos o#eti,os fundamentalmente<
. 7pro,echar al m"2imo los carretes de cinta o las pistas del disco optimi!ando los espacios entre
loques $IR3')
. Optimi!ar los tiempos de lectura y -raacin empleados)
+l<usula *+O*& +O2.AI2S,
*sta cl"usula indica el tama@o o numero de caracteres del re-istro l-ico) >u formato es el si-uiente)
R*CORD CONT7IN> Ventero.8 TOW entero.+ C=7R7CT*R>
B9 de EA
>i los re-istros son de lon-itud ,ariale dee especificarse entero-! TO( esto es( el tama@o de los re-istros estar"
comprendido entre los ,alores entero-! y entero--) >i los re-istros son de lon-itud fi#a( el tama@o ,endr" dado por
entero--)
*sta cl"usula( siendo opcional( es interesante especificarla ya que el ,alor calculado por el compilador como suma
de los campos especificados para el re-istro y el ,alor especificado en esta cl"usula no coinciden( se nos a,isar"
de ello al final de la compilacin)
+l<usula &A.A *+O*&,
*sta cl"usula permite dar un nomre a cada formato distinto de los re-istros l-icos de un fichero) >u formato es el
si-uiente<
D7T7 R*CORD I> nomre.de.dato.8 Vnomre.de.dato.+W )))
*sta cl"usula( opcional( nomra a los re-istros asociados al fichero que se esta descriiendo( quiere esto decir que
cada nomre de dato corresponde a un ni,el I_)
+l<usula LI2A',
1ermite especificar el tama@o de una p"-ina l-ica)
Far-en >uperior
$Nomre.de.datos.9 o entero.9'
Cuerpo de la p"-ina
B; de EA
$nomre.de.datos.8 o entero.8'



1ie de p"-ina
$nomre.de.datos.+ o entero.+'
Far-en Inferior
$nomre.de.datos.; o entero.;'
*l tama@o de la p"-ina fsica es) entero.9 Q entero.8 Q entero.;) *l pie de p"-ina se incluye en el tama@o de la
p"-ina l-ica)
+l<usula +O&-S.,
*sta cl"usula especifica el #ue-o de caracteres empleado para representar los datos sore dispositi,os e2ternos)
>olamente puede ser especificado para ficheros con or-ani!acin secuencial) >u formato es el si-uiente<
COD*.>*T I> nomre alfaeto
>i no se emplea se asume el #ue-o de caracteres 7>CII)
&escripcin de registros,
Un re-istro es una estructura #erarqui!ada compuesta por una o mas inscripciones #erarqui!adas $campos' que
descriiremos de acuerdo con el si-uiente formato<
*l orden de escritura de estas cl"usulas puede ser cualquiera( e2cepto de la cl"usula R*D*GIN*>( que dee ser la
primera( en el caso de especificarse)
*l nomre del re-istro lle,a ni,el :8 y el resto de los campos lle,a un numero de ni,el de :+ a ;A)
BB de EA
+l<usula VAL),
*sta cl"usula cuando se utili!a en la descripcin de un re-istro en la seccin GIL*( es para asi-nar un ,alor a un
campo con ni,el DD) >u formato es el si-uiente<

8I+H*OS S+)2+IALS,
+rear un fichero secuencial,
8) *specificar la cl"usula $ELE%T correspondiente al fichero( dentro del p"rrafo "#LE-%ONT'OL) >i es necesario
descriir tami%n el p"rrafo #-O %ONT'OL.
+) Descripcin del fichero( esto es( especificacin de la cl"usula "+ correspondiente al fichero( dentro de la "#LE
$E%T#ON.
9) *n la P'O%E+1'E +#5#$#ON6
a' 7rir el fichero para la salida $O1TP1T' o adicionales $E4TEN+'( utili!ando la sentencia OPEN)
' 3raar datos en el fichero utili!ando la sentencia &'#TE)
c' Cerrar el fichero utili!ando la sentencia %LO$E( una ,e! finali!ado las
operaciones de salida)

+l<usula SL+. para ficheros secuenciales,
>i se omite la cl"usula O')AN#7AT#ON se asume or-ani!acin secuencial y si se omite la cl"usula A%%E$$ se
asume acceso secuencial)
BC de EA
La or-ani!acin 'E%O'+ $E81ENT#AL( se refiere a un fichero secuencial est"ndar) *n este( la lon-itud de cada
re-istro se especifica por dos ytes que preceden al propio re-istro) La or-ani!acin L#NE $E81ENT#AL( es la
opcin por defecto( y hace que cada re-istro ,aya se-uido de un car"cter fin de lnea que act0a como delimitador)
*n la cl"usula $ELE%T tami%n se puede especificar el fichero como un fichero en m0ltiples carretes de cinta
ma-n%tica( mediante la frase A$$#)N TO 31LT#PLE 'EEL "#LE nombre-e0terno-del-fic/ero.
+l<usula 8& para ficheros secuenciales,
GD nomre del fichero
L7?*L R*CORD
VL7LU* OG GIL*.IDW
VR*CORDIN3 FOD* I>W
V?LOCO CONT7IN>W
VR*CORD CONT7IN>W
VD7T7 R*CORD I>W
VLIN73* I>W
VCOD*.>*T I>W)
Sentencia O(2,
La operacin de arir un fichero( estalece una comunicacin entre el "rea de *H> asociada a ese fichero y el
dispositi,o e2terno que lo soporta( compruea las etiquetas en los ficheros de entrada y las crea para los ficheros
de salida( y sit0a el puntero de lectura.escritura en el primer re-istro o al final del fichero dependiendo del modo en
que se haya aierto el fichero)
Gormato 8<

Gormato +<
BE de EA
Gormato 9<
O1*N I.O Zfichero.9 VNIT= LOCO W[)))
Gormato ;<
O1*N *JT*ND Zfichero.; VNIT= LOCO W[)))
>i el fichero esta almacenado en un soporte que permite la operacin de reoinar y se especifica la cl"usula
'E5E'$E+ los datos para una sentencia 'EA+ quedan disponiles en orden in,erso( esto es( comen!ando por el
ultimo) La cl"usula NO 'E&#N+ hace que el carrete de cinta no se reoine) *sto puede ser muy 0til cuando en
una cinta hay m0ltiples ficheros)
>i se especifica la frase &#TH LO%(( el efecto es equi,alente a especificar LO%( 3O+E E4%L1$#5E en la
sentencia $ELE%T correspondiente a este fichero( esto es( el fichero no puede ser compartido por otros procesos)
Un fichero aierto en modo O1TP1T es implcitamente un fichero no compartile) 1ara que mas de un proceso
puedan compartir un fichero hay que arirlo en modo I.O)
Cuando se especifica la cl"usula #NP1T( se are el fichero especificado para leer) *l puntero de lectura se sit0a en
el primer re-istro) >i el fichero no e2iste se produce un error)
Cuando se especifica la cl"usula O1TP1T( se are el fichero especificado para escriir) >i el fichero que se are
e2iste( se destruye su contenido actual cre"ndose as de nue,o) >i no se e2iste se crea)
Cuando se especifica la cl"usula #-O( se are el fichero especificado para leer y escriir) *l puntero de lectura.
escritura se sit0a en el primer re-istro) >i este no e2iste se crea) *n este caso una operacin de lectura dara lu-ar
a una condicin de fin de fichero y una operacin de escritura dara lu-ar a un error) *ste modo no se puede utili!ar
con una or-ani!acin L#NE $E81ENT#AL)
Cuando se especifica la cl"usula E4TEN+( si-nifica que se ,an a@adir datos a un fichero con modo de acceso
secuencial) De esta forma podemos a@adir mas re-istros a un fichero e2istente) >i el fichero no e2iste se crea)
Sentencia D*I.,
Cuando se e#ecuta esta sentencia se efect0a una operacin de salida o de escritura de un re-istro l-ico con
destino a un fichero de salida o de entrada.salida) *stas transferencias de informacin se hacen a tra,%s del "rea
de memoria asi-nada al fichero aunque esta operacin es transparente al usuario)
BD de EA
Re-istro identifica el nomre del re-istro l-ico que se desea escriir) *ste estar" declarado en la "#LE $E%T#ON o
en la +ATA +#5#$#ON) *l fichero asociado dee arirse en modo O1TP1T o E4TEN+E+.
>i se especifica la opcin "'O3( primero se mue,e el contenido del campo referenciado por nombre-de-dato-8 al
campo referenciado por registro y a continuacin se efect0a la operacin de escriir)
Las opciones BE"O'E o A"TE' A+5AN%#N) se aplican solamente a ficheros de salida impresos e indican(
escriir el re-istro antes de $BE"O'E' o despu%s de $A"TE'' a,an!ar( entero o nombre-de-dato-! lneas( pa-ina
$PA)E o "O'3"EE+'( o taulacin ,ertical $T7?')
Nombre mnemnico es un nomre creado por el pro-ramador con el fin de asociarlo en el p"rrafo $PE%#AL-
NA3E$ a una palara reser,ada CO?OL)
>i se especifica EN+-O"-PA)E o su equi,alente EOP( dee especificarse la cl"usula L#NA)E en la descripcin del
fichero $"+' en el cual estamos escriiendo) EOP es una condicin que es cierta cuando se alcan!a el final de la
pa-ina l-ica( en cuyo caso se e#ecuta sentencia-!)
$entencia-! y sentencia-- son sentencias imperati,as( esto es( no condicionales)
Cuando en la descripcin de un fichero se utili!a la cl"usula L#NA)E no se puede utili!ar A+5AN%#N) nombre-
nemonico.
EN+-&'#TE solo se puede utili!ar con EN+-O"-PA)E y sir,e para delimitar el "mito de la sentencia &'#TE)
>i el tipo de or-ani!acin es 'E%O'+ $E81ENT#AL y en la sentencia &'#TE no se utili!a la opcin A+5AN%#N)(
se asume el a,ance autom"tico equi,alente a haer especificado( BE"O'E A+5AN%#N) ! L#NE.
Sentencia +LOS.
*sta sentencia finali!a el proceso de uno o ,arios ficheros)
BA de EA
Cada fichero aierto por medio de una sentencia OPEN( dee ser cerrado por una sentencia %LO$E ien cuando
finali!a el pro-rama o ien cuando se desea arirlo de modo diferente) Una sentencia %LO$E puede cerrar uno o
mas ficheros)
Las opciones 'EEL y 1N#T se utili!an con cintas ma-n%ticas y discos ma-n%ticos respecti,amente para indicar que
le fichero tratado es multi,olumen)
La opcin NO 'E&#N+ se utili!a para anular la operacin de reoinado que se produce normalmente al cerrar un
fichero contenido en cinta ma-n%tica)
La opcin &#TH LO%( hace que el fichero cerrado no pueda ,ol,erse a arir durante el resto de la e#ecucin del
proceso en cuestin)
Acceso a un fichero secuencial,
1ara acceder a un fichero secuencial( los pasos a se-uir son los si-uientes<
8. *specificar la cl"usula $ELE%T correspondiente al fichero( dentro del p"rrafo "#LE-%ONT'OL) >i es
necesario descriir tami%n el p"rrafo #-O-%ONT'OL)
+. *n la descripcin del fichero( esto es ( especificacin de la cl"usula "+ correspondiente al fichero(
dentro de la "#LE $E%T#ON.
9. *n la P'O%E+1'E +#5#$#ON<
a' 7rir el fichero para entrada $#NP1T' o para entrada y salida $#-O9 utili!ando la sentencia
OPEN.
' Utili!ar la sentencia 'EA+ para leer los datos del fichero)
c' Cerrar el fichero utili!ando al sentencia %LO$E( una ,e! finali!adas las operaciones de
entrada.salida)
1ara acceder a los datos de un fichero secuencial( a continuacin de haerlo creado( primero se dee cerrar el
mismo( utili!ando la sentencia %LO$E( y despu%s se ,uel,e a arir para entrada utili!ando la sentencia OPEN.
Sentencia *A&,
Cuando se e#ecuta esta sentencia se de#a disponile un re-istro l-ico en el "rea de entrada( para ser procesado)
C: de EA
R*7D fichero R*CORD VINTO nomre de datoW VNIT= VNOW LOCOW
V7T *ND sentencia.8W
VNOT 7T *ND sentencia.+W
V*ND.R*7DW
"ic/ero es el nomre simlico del fichero del cual se quiere leer un re-istro) *ste fichero tiene que ser aierto en
modo #NP1T o #-O.
Cuando se are el fichero el puntero de lectura.escritura apunta al primer re-istro a leer y cada ,e! que se e#ecuta
una sentencia 'EA+ se lee un re-istro y el puntero de lectura.escritura a,an!a para apuntar al si-uiente re-istro a
leer)
>i se especifica la opcin #NTO( la sentencia 'EA+ adem"s de de#ar disponile un re-istro l-ico en el "rea de
entrada( esto es( en el re-istro de entrada esta definido en la "+( mue,e el contenido de este re-istro al "rea de
datos especificada por nombre de datos.
La opcin #NTO no puede ser utili!ada cuando el fichero contiene re-istros de ,arios tipos)
La frase AT EN+ es una condicin que es cierta cuando al e#ecutarse una sentencia 'EA+ se detecta el final del
fichero( en cuyo caso se e#ecuta la sentencia-!) >i la condicin resulta ser falsa( entonces se e#ecuta( despu%s de
haerse reali!ado la operacin de lectura( la sentencia--( si la frase NOT AT EN+ ha sido especificada( y se pasa a
la sentencia si-uiente)
$entencia-! : sentencia-- son sentencias imperati,as( esto es( no condicionales)
7unque la frase AT EN+ sea opcional( dee especificarse cuando se acceda secuencialmente a los re-istros de un
fichero( para poder detectar cuando se lle-a al final del mismo)
EN+-'EA+ delimita el "mito de la sentencia 'EA+ y puede ser utili!ado solamente con la frase #N5AL#+ (E;.
*n un fichero secuencial aierto en modo #NP1T( la sentencia 'EA+ o 'EA+ &#TH LO%( no puede leer un
re-istro en modo e2clusi,o)
*n un fichero aierto en modo #-O con LO%( 3O+E A1TO3AT#%( a menos que se especifique la opcin &#TH NO
LO%(( cada re-istro en el momento de leerse es e2clusi,o( no compartido( siendo lierado cuando finali!a la
lectura)
*n un fichero aierto en modo #-O con LO%( 3O+E 3AN1AL( cada re-istro en el momento de leerse no es
e2clusi,o a menos que se especifique la opcin &#TH LO%( en la sentencia 'EA+)
/odificar un registro secuencial,
>i el fichero se are en modo #-O( es posile modificar el ultimo re-istro ledo por medio de la sentencia 'E&'#TE
la cual presentamos a continuacin)
Sentencia *D*I..
*ste sentencia permite reempla!ar un re-istro e2istente en un fichero en disco por otro re-istro)
C8 de EA
R*NRIT* re-istro VGROF nomre.de.datoW
V*ND.R*NRIT*W
Re-istro es el nomre de un re-istro l-ico especificado en la "#LE $E%T#ON de la +ATA +#5#$ON) *l fichero
asociado con este re-istro dee ser un fichero residente en disco y aierto en modo #-O)
*l numero de caracteres del re-istro a reempla!ar dee ser i-ual al numero de caracteres del re-istro que lo ,a a
reempla!ar)
1ara ficheros en los que el modo de acceso es secuencial la ultima sentencia e#ecutada antes de la e#ecucin de la
sentencia 'E&'#TE( dee ser una sentencia 'EA+) *l re-istro reempla!ado ser" l-icamente el re-istro ledo)
La posicin indicada por el puntero de lectura.escritura ser" la misma despu%s de haer e#ecutado una sentencia
'E&'#TE)
8I+H*OS S+)2+IALS I2&?A&OS,
Introduccin,
Un fichero inde2ado es un fichero con or-ani!acin secuencial inde2ada) La or-ani!acin secuencial inde2ada o de
ndices es un modelo de almacenamiento de datos que se apoya en una tala de ndices que act0a como ndice y
en un fichero de datos)
+reacin E acceso a un fichero secuencial inde!ado,
1ara crear un fichero secuencial inde2ado( los pasos a se-uir son los mismos que se han e2puesto para ficheros
secuenciales)
Cuando el modo de acceso es $E81ENT#AL( el acceso a los re-istros del fichero inde2ado se hace en orden
ascendente de cla,e( la cual ,iene dada por un campo alfanum%rico denominado por nombre dato-!)
C+ de EA
>i el modo de acceso es 'AN+O3( el ,alor de la cla,e indica el re-istro al cual ,a a accederse)
Cuando el modo de acceso es +;NA3#%( se puede acceder a los re-istros del fichero secuencial yHo
aleatoriamente)
La cl"usula 'E%O'+ (E; especifica la cla,e principal del fichero) >u ,alor ha de ser 0nico) La cl"usula
ALTE'NATE 'E%O'+ (E; especifica la cla,e secundaria( terciaria( ))( etc) >i se especifica &#TH +1PL#%ATE$
admite mas de una cla,e secundaria i-ual)
%la2e-m es una concatenacin de uno o mas campos de un re-istro asociado con el fichero que estamos
descriiendo) *sta cla,e m0ltiple solo podr" ser referenciada por las sentencias $TA'T y 'EA+)
*l o los campos usados como cla,e deer"n declararse como campos alfanum%ricos( admiti%ndose los campos
num%ricos)
+l<usula 8& para ficheros secuenciales Inde!ados,
GD nomre de fichero
L7?*L R*CORD I> V>T7ND7RDW
VL7LU* OG GIL*.IDW
VR*CORDIN3 FOD* I>W
V?LOCO CONT7IN>W
VR*CORD CONT7IN>W
VD7T7 R*CORD I>W
Sentencia O(2,
1ara ficheros inde2ados el formato de esta sentencia es el si-uiente<
Sentencia +LOS,
1ara ficheros inde2ados el formato de esta sentencia es el si-uiente<
CLO>* fichero.8 VNIT= LOCOW Vfichero.+ VNIT= LOCOW W )))
Sentencia *A&,
C9 de EA
1ara ficheros inde2ados el formato de esta sentencia es el si-uiente<
Gormato 8< $acceso secuencial'
Gormato +< $7cceso aleatorio'
Cuando el modo de acceso es secuencial( el acceso a los re-istros del fichero inde2ado se hace en orden
ascendente de la cla,e( la cual ,iene dada por el campo descrito a continuacin de la cl"usula 'E%O'+ (E;)
Cuando se utili!a el formato +( antes de que se e#ecute la sentencia 'EA+( es necesario haer car-ado el campo
descrito a continuacin de la cl"usula 'E%O'+ (E;( el ,alor de la cla,e del re-istro que se quiere leer)
La opcin NE4T o P'E5#O1$ dee especificarse cuando en un fichero en modo de acceso +;NA3#% los re-istros
se leen secuencialmente)
>i la opcin P'E5#O1$ se ha especificado( despu%s de e#ecutarse una sentencia R*7D el puntero de lectura.
escritura pasa a apuntar al re-istro anterior) >i el puntero ya se encontraa en el primer re-istro) >i el puntero que
se encontraa en el primer re-istro( entonces se da una condicin de fin de fichero $AT EN+')
*n un fichero aierto #-O con LO%( 3O+E 3AN1AL &#TH LO%( ON 'E%O'+O( una sentencia 'EA+ puede
adquirir un re-istro en modo e2clusi,o solamente si la frase &#TH LO%( ha sido especificada)
*n un fichero aierto #-O con LO%( 3O+E 3AN1AL &#TH LO%( ON 31LT#PLE 'E%O'+$O( una sentencia
'EA+ puede adquirir un re-istro en modo e2clusi,o solamente si la frase &#TH (EPT LO%( ha sido especificada)
*sto es( (EPT dee ser incluido( cuando manualmente se desea hacer e2clusi,os m0ltiples re-istros)
*n un fichero aierto #-O con LO%( 3O+E A1TO3AT#%O( a menos que se especifique la opcin &#TH NO LO%(
cada re-istro es en el momento de leerse e2clusi,o( no compartido( siendo lierado cuando finali!a la lectura)
>i se especifica la opcin (E; la cla,e utili!ada para recuperar un re-istro ,iene dada por nombre-dato-- o por
cla2e-m) >i esta opcin no se especifica( para recuperar un re-istro se utili!a la cla,e principal( que ,iene dada por
el campo descrito a continuacin de la cl"usula 'E%O'+ (E;)
Cuando se e#ecuta una sentencia 'EA+( descrita de acuerdo con formato.+( el contenido del campo especificado
como cla,e( es comparado con los ,alores contenidos en los correspondientes campos de los re-istros del fichero(
C; de EA
hasta que se encuentre un ,alor i-ual( en cuyo caso se recupera el re-istro y se e#ecuta la sentencia-< si la frase
NOT #N5AL#+ (E; ha sido especificada) >i no se encuentra el re-istro entonces se e#ecuta sentencia-. descrita a
continuacin de la frase #N5AL#+ (E;( si esta opcin ha sido especificada)
Sentencia D*I.,
1ara ficheros inde2ados el formato de esta sentencia es el si-uiente<
*l ,alor de la cla,e principal dee ser 0nico en el fichero)
*l nomre de dato que especifica la cla,e principal( dee ser puesto por el pro-rama al ,alor deseado( antes de
e#ecutar la sentencia &'#TE)
>i el modo de acceso es $E81ENT#AL( los re-istros deen ser emitidos al sistema en orden ascendente de la
cla,e principal)
>i el modo de acceso es 'AN+O3 o +;NA3#% los re-istros pueden ser emitidos al sistema en cualquier orden)
>i la opcin #N5AL#+ (E; se ha especificado( sentencia-! se e#ecutar" en los si-uientes casos<
a' Cuando se ha especificado modo de acceso secuencial para un fichero aierto para escriir
$O1TP1T' y la cla,e del re-istro no es mayor que la del re-istro anterior)
' Cuando el fichero se ha aierto en modo O1TP1T o #-O y la cla,e del re-istro a escriir e2iste
ya en el fichero)
c' Cuando el fichero se ha aierto en modo O1TP1T o #-O y la cla,e alternati,a del re-istro a
escriir ya e2iste en el fichero)
d' Cuando el disco esta lleno)
EN+-&'#TE puede ser utili!ada solamente si se especifica la frase #N5AL#+-(E;)
Sentencia *D*I.,
1ara ficheros inde2ados el formato de esta sentencia es el si-uiente<
*l fichero asociado con registro dee ser un fichero residente en disco y aierto en modo #-O.
1ara ficheros en los que el modo de acceso es $E81ENT#AL( la ultima sentencia e#ecutada antes de la e#ecucin
de la sentencia 'E&'#TE dee ser una sentencia 'EA+( la cual locali!a el re-istro a reempla!ar por el ,alor
contenido en le campo que hace referencia a la cla,e principal)
CB de EA
1ara ficheros en los que el modo de acceso es 'AN+O3 o +;NA3#%( el re-istro a reempla!ar ,iene dado por el
contenido del campo que hace referencia a la cla,e principal) No es necesario e#ecutar pre,iamente una sentencia
'EA+.
>i la opcin #N5AL#+ (E; se ha especificado( la sentencia-! se e#ecutar" en los si-uientes casos<
a' Cuando se ha especificado modo de acceso secuencial y el ,alor contenido en el campo cla,e
del re-istro que ha de ser reempla!ado no es i-ual al ,alor del campo cla,e del ultimo re-istro
ledo)
' Cuando el ,alor del campo que referencia la cla,e principal no coincide con el ,alor de la cla,e
de al-uno de los re-istros del fichero)
c' Cuando el ,alor del campo que referencia la cla,e alternati,a e2iste ya en el fichero)
EN+-'E&'#TE puede ser utili!ada solamente si s especifica la frase #N5AL#+ (E;.
Sentencia S.A*.,
*sta sentencia permite iniciar el proceso de acceso a los re-istros de un fichero con or-ani!acin inde2ada o
relati,a a partir de una cla,e especificada y no a partir del principio del fichero)
"ic/ero es el nomre de un fichero inde2ado aierto en modo IN1UT o I.O( con modo de acceso $E81ENT#AL o
+;NA3#%)
Nombre-dato es un campo alfanum%rico que dee ser declarado en una cl"usula 'E%O'+ (E; asociada con el
fichero)
Nombre-dato puede ser tami%n un campo suordinado al campo especificado en la cl"usula 'E%O'+ (E;) *ste
campo suordinado dee ser la posicin del car"cter mas a la i!quierda( se corresponda con la posicin del
car"cter mas a la i!quierda del campo especificado en la cl"usula 'E%O'+ (E; esto es( el primer campo
suordinado)
1re,iamente a la e#ecucin de una sentencia $TA'T el pro-rama dee car-ar en nombre-dato el ,alor de la cla,e
correspondiente al re-istro en el que nos queremos posicionar)
CC de EA
La comparacin indicada por la operacin de relacin especificada a continuacin de (E;( ocurre entre el ,alor del
campo cla,e de los re-istros del fichero y el ,alor del contenido en el campo-dato) >i la lon-itud de los campos
comparados no son i-uales( el campo mas lar-o se trunca a la lon-itud del mas corto)
>i la frase (E; no se especifica( la operacin de relacin que se asume es E81AL TO $I' y la comparacin
anterior se hace con respecto al campo declarado en la cl"usula 'E%O'+ (E;)
>i el operador de relacin especifica que la cla,e dee ser mayor que( o mayor o i-ual que nombre-dato entonces
el puntero de lectura escritura del fichero se posiciona en el primer re-istro l-ico cuya cla,e satisfa-a la condicin)
>i el operador de relacin especifica que la cla,e dee ser menor que( o menor o i-ual que nombre-dato( entonces
el puntero de lectura escritura se posiciona en el ultimo re-istro l-ico del fichero cuya cla,e satisfa-a la condicin)
>i la condicin no es satisfecha por al-uno de los re-istros del fichero( entonces se da la condicin #N5AL#+ (E; y
se e#ecuta la sentencia !( si la frase ha sido especificada)
>i se especifica la opcin &#TH $#7E entonces se i-nora el operador de relacin especificado a continuacin de
(E;) *sta opcin especifica el numero de caracteres de la cla,e que se ,an a utili!ar en la comparacin $E81AL
TO')
EN+-$TA'T puede ser utili!ada solamente si se especifica la frase #N5AL#+ (E;)
Sentencia &L.,
*sta sentencia permite orrar un determinado re-istro de un fichero con or-ani!acin inde2ada o relati,a)
Gormato 8<
D*L*T* fichero R*CORD
VINL7LID O*M sentencia.8W
VNOT INL7LID O*M sentencia.+W
V*ND.D*L*T*W
"ic/ero es el nomre de un fichero inde2ado aierto en modo #-O)
7ntes de que se e#ecute una sentencia +ELETE( es necesario haer car-ado en el campo descrito a continuacin
de la cl"usula 'E%O'+ (E;( el ,alor de la cla,e del re-istro al que se quiere acceder)
1ara ficheros en los que el modo de acceso es $E81ENT#AL la ultima sentencia e#ecutada antes de la e#ecucin
de la sentencia +ELETE dee ser la sentencia 'EA+ la cual locali!a el re-istro a orrar por el ,alor contenido en el
campo que hace referencia a la cla,e principal)
1ara ficheros en los que el modo de acceso es 'AN+O3 o +;NA3#% el re-istro a orrar ,iene dado por el
contenido del campo que hace referencia a la cla,e principal) No es necesario e#ecutar pre,iamente una sentencia
'EA+.
Cuando se e#ecuta la sentencia +ELETE( el contenido del campo especificado como cla,e( es comparado con los
,alores contenidos en los correspondientes campos de los re-istros del fichero( hasta que se encuentre un ,alor
i-ual( en cuyo caso se orra el re-istro y se e#ecuta la sentencia-- si la frase NOT #N5AL#+ (E; ha sido
especificada) >i no se encuentra un ,alor i-ual a la cla,e dada( entonces se e#ecuta la sentencia-! descrita a
continuacin de la frase #N5AL#+ (E;( si esta ha sido especificada)
CE de EA
La frase #N5AL#+ (E; no puede ser especificada con una sentencia +ELETE que ha-a referencia a un fichero con
modo de acceso secuencial)
*ND.D*L*T* puede ser utili!ada solamente si se especifica la frase #N5AL#+ (E;)

Gormato +<
D*L*T* GIL* Z fichero [ )))
*sta sentencia orra los ficheros especificados( los cuales deen ser cerrados pre,iamente)
8icheros *ALA.IVOS,
+l<usula SL+.
Cuando el modo de acceso $E81ENT#AL( el acceso a los re-istros del fichero relati,o se hace en orden
ascendente de numero relati,o de re-istro) *n este caso la cl"usula 'ELAT#5E (E; es opcional)
>i el modo de acceso es 'AN+O3 o +;NA3#%( el ,alor de nombre-dato-! indica el re-istro al cual ,a a accederse)
*ste numero ,iene dado por un campo num%rico entero sin si-no especificado por medio de la frase 'ELAT#5E
(E;)
Cuando el modo de acceso es +;NA3#%( se puede acceder a los re-istros del fichero secuencial yHo
aleatoriamente)
La cl"usula 'ELAT#5E (E; especifica el campo denominado por nombre-dato( que ,a a contener el numero
relati,o de re-istro al cual se quiere acceder) *ste campo no puede estar definido en la descripcin de re-istro
asociada con el fichero en cuestin y dee ser declarado cono un campo num%rico sin si-no)
La clusula -" para fic.eros relativos es igual /ue la de los inde0ados 1 secuenciales.
La sentencia O(2 de los fic.eros relativos es la misma /ue la de los inde0ados 1 secuenciales.
La sentencia +LOS de los fic.eros relativos es la misma /ue la de los inde0ados 1 secuenciales.
CD de EA
Sentencia *A&,
Gormato 8 $secuencial'<
Gormato + $directo'<
7ntes de que se e#ecute la sentencia 'EA+( es necesario haer car-ado en el campo descrito a continuacin de la
cl"usula 'ELAT#5E (E; el ,alor relati,o del re-istro al que se quiere acceder)
La opcin NE4T o P'E5#O1$ dee especificarse cuando un fichero con modo de acceso +;NA3#% los re-istros
se leen secuencialmente)
La opcin NE4T lee el si-uiente re-istro del fichero( y e#ecuta la sentencia-! si se especifica la cl"usula AT EN+ y
es final del fichero( sino e#ecuta sentencia-- si se especifica la cl"usula NOT AT EN+) La opcin P'E5#O1$ lee el
re-istro anterior del fichero( y e#ecuta la sentencia-! si se especifica la cl"usula AT EN+ y es final del fichero( sino
e#ecuta sentencia-- si se especifica la cl"usula NOT AT EN+)
Cuando se e#ecuta una sentencia 'EA+( con el formato + se lee el re-istro que la cla,e del fichero ha especificado)
Sentencia D*I.,
CA de EA
Sentencia *D*I.,
Sentencia S.A*.,
Sentencia &L.,
D*L*T* fichero R*CORD
VINL7LID O*M sentencia.8W
VNOT INL7LID O*M sentencia.+W
V*ND.D*L*T*W

E: de EA
F- +LASI8I+A+I32 0 8)SI32 & 8I+H*OS.
*l formato -eneral de un pro-rama de clasificacin CO?OL es el si-uiente<
ID*NTIGIC7TION DILI>ION)
1RO3R7F.ID) Nomre.pro-rama)
*NLIRONF*NT DILI>ION)
IN1UT.OUT1UT >*CTION)
GIL*.CONTROL)
>*L*CT fichero.8 de entrada 7>>I3N TO DI>O)
>*L*CT fichero.+ de salida 7>>I3N TO DI>O)
>*L*CT fichero.9 de clasificacin 7>>I3N TO DI>O
V>ORT >T7TU> I> nomre de dato.8W
VI.O CONTROL) )))) ) W
D7T7 DILI>ION)
GIL* >*CTION)
GD fichero.8 de entrada
)))
GD fichero.+ de salida
)))
>D fichero.9 de clasificacin
VR*CORD CONT7IN> Ventero.8 TOW entero.+ C=7R7CT*R>W
VD7T7 R*CORD I> re-istro.8 Vre-istro.+W)))) W
nomre de dato.+
VL7LU* OG GIL*.ID I> W
literal
:8 Re-istro.8)
E8 de EA
)))))
NOROIN3.>TOR73* >*CTION)
EE nomre dato.8 1IC JJ) )))
1ROC*DUR* DILI>ION)
V>ORT ))) W
VF*R3* ))) W
>i se especifica la cl"usula $O'T $TAT1$( se colocar" en nombre dato-! un ,alor de + d-itos para indicar como
se ha reali!ado la operacin de clasificacin) Los ,alores que se pueden dar son los si-uientes<
:: Clasificacin efectuada correctamente
9: *rror
A. *l se-undo d-ito corresponde a un numero de error del sistema)
Sentencia SO*.,
La sentencia >ORT crea un fichero clasificado( e#ecutando un procedimiento de entrada( o transfiriendo re-istros
desde otros ficheros) >u formato es el si-uiente<
"ic/ero-. es el fichero de clasificacin( el cual tiene que ser descrito en la +ATA +#5#$#ON( precedido por $+. *l
resto de los ficheros son ficheros normales) 1ara e,itar resultados inesperados( es con,eniente que el tama@o de
re-istro sea el mismo para todos los ficheros)
E+ de EA
Opciones AS+2&I2' E &S+2&I2'
Indican( si la clasificacin se a reali!ar ascendente o descendentemente( por el contenido de uno o mas campos)
Nombre dato-! y nombre dato-- ... son los nomres de los campos por los que se desea clasificar el fichero) *stos
campos deen pertenecer a los re-istros asociados al fic/ero-.) *n la descripcin de estos campos no puede
fi-urar la cl"usula O%%1'$.
Los nomres de dato que si-uen a la palara (E; deen especificarse en orden decreciente de si-nificacin)
>i se especifica la cl"usula +1PL#%ATE$ y el contenido de todos los campos empleados en la clasificacin(
pertenecientes a un determinado re-istro( coinciden con el contenido de los correspondientes campos de otros
re-istros( entonces el orden en el que son colocados los re-istros es el orden de aparicin en los ficheros de
entrada se-0n se han especificado en la sentencia $O'T) >i se da este caso y la cl"usula +1PL#%ATE$ no se ha
especificado( el orden de los re-istros a los que nos referimos queda indefinido)
La clasificacin se reali!a de acuerdo con el orden de ,alores del cdi-o de caracteres empleado por defecto
$7>CII') >i se especifica la cl"usula COLL7TIN3 >*4U*NC* es posile reali!ar la clasificacin en otra secuencia
que sea 7>CII( por e#emplo( *?CDIC)
Opciones )SI2' E 'IVI2'.
Con la opcin 1$#N) el compilador reali!a autom"ticamente las si-uientes funciones<
S 7re el fichero o ficheros de entra denominados "ic/ero-!...
S Todos los re-istros del fichero o ficheros de entrada son transferidos al fichero de clasificacin(
fic/ero-. para ser clasificados( es decir( se renuncia a reali!ar cualquier operacin sore los
re-istros de entrada)
S Cierra todos los ficheros de entrada)

Con la opcin 3ILIN3 el compilador reali!a autom"ticamente las si-uientes funciones<
S 7re el fichero o ficheros de salida denominados fic/ero--...
S Todos los re-istros del fichero de clasificacin( fic/ero-. son transferidos al fichero o ficheros de
salida( es decir( se renuncia a reali!ar cualquier operacin sore los re-istros clasificados)
La condicin necesaria y 0nica para que un >ORT funcione es que los ficheros de entrada y salida sean
secuenciales)
Opcin I2(). (*O+&)*,
E9 de EA
*sta opcin permite referenciar una o mas secciones( para reali!ar cualquier operacin sore los re-istros de
entrada( antes de que sean transferidos al fichero de clasificacin( fic/ero-.( por medio de la sentencia 'ELEA$E
para ser clasificados)
Sentencia *LAS,
*sta sentencia transfiere los re-istros al fichero de clasificacin( para a continuacin ser clasificados)
R*L*7>* re-istro.clasificacin VGROF nomre.datosW)
Una sentencia 'ELEA$E solamente puede utili!arse en una seccin #NP1T asociada a una sentencia $O'T.
Opcin O)(). (*O+&)*,
*sta opcin permite referenciar una o mas secciones( para reali!ar cualquier operacin sore los re-istros
clasificados( antes de que sean transferidos al fichero de salida( fic/ero-- por medio de la sentencia 'ET1'N)
Sentencia *.)*2,
*sta sentencia permite recuperar del fichero de clasificacin( los re-istros una ,e! clasificados)
R*TURN fichero.clasificacin R*CORD VINTO nomre.datosW
7T *ND sentencia.8
VNOT 7T *ND sentencia.8W
V*ND.R*TURNW)
Una sentencia 'ET1'N solamente se puede utili!ar en una seccin O1TP1T asociada a una sentencia $O'T o
3E')E.
La funcin de esta sentencia es similar a la funcin de la sentencia 'EA+.
Sentencia /*',
*sta sentencia permite fusionar dos o mas ficheros clasificados por un mismo con#unto de campos) >u formato es
el si-uiente<
E; de EA
76- +O/)2I+A+I32 2.* (*O'*A/AS.
Lla"ada a un su4progra"a. Sentencia +ALL,
1ara transferir el control de un pro-rama a un supro-rama se utili!a la sentencia %ALL cuyo formato es el
si-uiente.
#dentificador o literal especifican el nomre del supro-rama) >i se utili!a un identificador para llamar al pro-rama(
este dee ser declarado como un campo alfanum%rico y si se utili!a un literal( este dee ser no num%rico)
Los nombres-dato especificados a continuacin de la cl"usula 1$#N) se refieren a campos que pueden utili!ar
tanto el pro-rama principal como el supro-rama)
>i durante la sentencia %ALL no es posile acomodar el pro-rama en memoria el pro-rama especificado para su
e#ecucin( se pasa a e#ecutar la si-uiente sentencia en secuencia) 7hora si se ha especificado la cl"usula ON
O5E'"LO&( entonces se e#ecuta la sentencia imperati,a especificada a continuacin de la esta cl"usula)
La sentencia EN+-%ALL delimita el "mito de la sentencia %ALL.
Sentencia 2.*0,
*sta sentencia permite especificar cual es el punto de entrada en el supro-rama llamado) >u formato es el
si-uiente<
*NTRM punto.entrada VU>IN3 nomre.dato.8 Vnomre.dato.+W` W
Dentro de un pro-rama pueden especificarse mas de un punto de entrada denomin"ndose cada uno de ellos con
un nomre diferente) >olo los ocho primeros caracteres de cada nomre son si-nificati,os)
Cuando el pro-rama principal llama a un supro-rama( el control puede transferirse a la primera sentencia de la
P'O%E+1'E +#5#$#ON o a otra sentencia diferente) *n el primer caso( se puede prescindir de la sentencia
ENT'; y especificar a continuacin de la palara +#5#$#ON( la opcin 1$#N) se-uida de los campos de datos
correspondientes( pero en el se-undo caso si es necesaria( con el fin de indicar mediante un nomre cual es el
punto de entrada en el supro-rama( esto es( indicar a partir de que sentencia se desea que comience la e#ecucin
en el pro-rama)
Sentencia ?I. (*O'*A/,
EB de EA
*sta sentencia define el final l-ico del supro-rama llamado) >u formato es el si-uiente<
*JIT 1RO3R7F
La e#ecucin de esta sentencia hace que el control sea de,uelto a la sentencia inmediatamente a continuacin de la
sentencia %ALL que efect0o la llamada al supro-rama)
Sentencia +ancel,
*sta sentencia -aranti!a que la si-uiente ,e! que el pro-rama sea llamado para su e#ecucin( partamos de su
estado inicial) >u formato es el si-uiente<
#ndentificador o literal especifican el nomre del supro-rama a cancelar) >i se utili!a un indentificador( este dee
ser declarado como un campo alfanum%rico y si se utili!a un literal( este dee ser no num%rico)
Cuando un supro-rama es cancelado todos los supro-ramas contenidos dentro del supro-rama referenciado
por la sentencia %AN%EL( son tami%n cancelados)
Sentencia +HAI2,
La sentencia %HA#N transfiere el control desde un pro-rama a otro sin que este ultimo( de,uel,a el control cuando
finali!a) >u formato es el si-uiente<
#dentificador o literal especifican el nomre del pro-rama a encadenar) >i se utili!a un identificador para llamar al
pro-rama( este dee ser declarado como alfanum%rico y si se utili!a un literal este dee ser no num%rico)
La cl"usula 1$#N) es incluida en la sentencia %HA#N solamente si hay una frase U>IN3 en la caecera de la
P'O%E+1'E +#5#$#ON del pro-rama encadenado)
1ROC*DUR* DILI>ION VU>IN3 nomre dato.8 Vnomre dato.+W` W
Los nombre dato especificados a continuacin de la cl"usula 1$#N) se refieren a los campos de datos que son
transmitidos al pro-rama encadenado)
*l primer pro-rama que e#ecuta la sentencia %HA#N( esta siempre en memoria( esto es( la memoria ocupada por
este pro-rama nunca es lierada y aunque e#ecutemos un nue,o %HA#N para ,ol,erlo a car-ar esto no sucede
porque ya esta en memoria)
EC de EA
La memoria ocupada por un pro-rama encadenado( no es lierada hasta que se e#ecute un se-undo %HA#N en
secuencia( no contando con el %HA#N del primer pro-rama( el cual es 0nico)
LI2:A' S+.IO2.
*sta seccin permite descriir los campos de datos comunes al pro-rama principal y al supro-rama( esto es( los
campos de datos que comparten amos pro-ramas)
LINO73* >*CTION)
VEE descripcin de campos indi,iduales)W`
V:8 descripcin de re-istros)W`
La descripcin de los campos y re-istros en esta seccin( se reali!a utili!ando la misma sinta2is que en la
&O'(#N)-$TO'A)E $E%T#ON( a e2cepcin de la cl"usula 5AL1E que aqu solo puede utili!arse con los
nomres de condicin)
*l pro-rama principal y el supro-rama se compilan separadamente por lo que es necesario que la descripcin de
los campos de datos comunes apare!can en la +ATA +#5#$#ON de cada pro-rama) >in emar-o( el sistema no
reser,a memoria para los re-istros y campos de datos declarados en L#N(A)E $E%T#ON( pero si pone a
disposicin del supro-rama los re-istros y campos aqu declarados y que fueron reser,ados para el pro-rama
principal)
Los nomres de campos de datos que se especifican a continuacin de la cl"usula 1$#N) en la llamada %ALL( no
tienen porque denominarse i-ual que los correspondientes campos especificados a continuacin de la cl"usula
1$#N) en el supro-rama)
77- VIS)ALIZA+I32 & (A2.ALLAS.
S+*2 S+.IO2.
La $%'EEN $E%T#ON contiene una descripcin de cada campo sore la pantalla) *l acceso a estos campos es
mediante las sentencias A%%EPT y +#$PLA;. >u formato -eneral es el si-uiente<
>CR**N >*CTION)
Z:8 nomre pantalla opciones)
ZNn Vnomre datosW opciones[`[`[
*l nombre pantalla dee comen!ar con el numero de ni,el :8)
Cada !ona de datos perteneciente a la pantalla puede comen!ar con un numero de ni,el del :+ al ;A)
EE de EA
La palara "#LLE' no se puede utili!ar en una descripcin de pantalla pero nombre-datos puede omitirse)
Una descripcin de una !ona elemental de datos dee contener al menos una de las si-uientes opciones< BELL
BLAN( L#NE BLAN( $%'EEN %OL13N L#NE P#%T1'E 5AL1E.
Una pantalla puede ser referenciada solamente por una sentencia A%%EPT o +#$PLA;)
La opcin 1$#N) permite utili!ar el campo asociado( tanto para entrada como para salida) La sentencia +#$PLA;
pantalla ,isuali!a los campos de salida del dise@o pantalla y la sentencia A%%EPT pantalla( permite teclear los
datos par los campos de entrada del mismo dise@o)
Opciones,
O(+IO2 &S+*I(+I32
A1TO La al si-uiente campo campo una ,e! rellenado el anterior)
BA%()'O1N+-%OLO' *specifica el color de fondo del elemento a ,isuli!ar en pantalla)
BELL *mite un sonido cada ,e! que el elemento es e#ecutado
BLAN( ?orra una linea o la pantalla)
BLAN( &HEN 7E'O 1one lancos cuando el campo es cero)
BL#N( =ace parpadear un te2to en pantalla)
%OL13N o %OL *specifica una columna en pantalla)
"O'E)'O1N+-%OLO' *specifica el color de primer plano de un literal
"1LL o LEN)HT-%HE%( Oli-a a de#ar el campo completamente lleno o ,acio)
H#)HL#)HT 1on el literal o campo con un color mas intenso)
,1$T#"#E+ o ,1$T 7#usta el campo a la derecha)
L#NE *specifica una linea en pantalla)
O%%1'$ 1ermite definir un campo con suindices)
ED de EA
P'O3PT Camia el prompt del sistema)
'E81#'E+ Oli-a a rellenar el campo)
'E5E'$E-5#+EO Camia el color de fondo por el de primer plano)
$E%1'E No ,isuali!a en pantalla lo introducido)
$#)N 1one el si-no del numero)
$#7E *specifica el tama@o del campo)
1N+E'L#NE =ace que el elemento escrito en pantalla apare!ca surayado)
5AL1E *specifica una cadena de caracteres para ,isuali!arla por pantalla)
7E'O-"#LL Rellena a ceros los campos num%ricos)
EA de EA

Potrebbero piacerti anche