Está en la página 1de 63

Capitulo 1

1- Elementos del lenguaje COBOL.


IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION
PROCEDURE DIVISION
Constantes figurativas:
Una constante figurativa es una constante preefinia en CO!O" #ue puee uti$i%arse en cua$#uier parte
e $a &OR'IN()STORA(E SECTION o PROCEDURE DIVISION para asignar su va$or a un ca*po.
Zero- Designa e$ va$or + en e$ caso e atos nu*,ricos. Ta*-i,n puee ser referenciaa por $os
no*-res .EROS o .EROES.
Space- Esta constante se uti$i%a para asignar a un ca*po no nu*,rico uno o *as espacios en -$anco.
Ta*-i,n puee ser referenciaa por e$ no*-re SPACES.
High-value- Se uti$i%a para asignar a $itera$es a$fanu*,ricos e$ va$or *as a$to posi-$e e$ c/igo e
caracteres #ue este*os uti$i%ano 0Va$or FF en ASCII1. Ta*-i,n puee ser referenciaa por e$ no*-re
e 2I(2)VA"UES.
Low-Value- Se uti$i%a para asignar a $itera$es a$fanu*,ricos e$ va$or *as -a3o posi-$e e$ c/igo e
caracteres #ue este*os uti$i%ano 0Va$or ++ en ASCII1. Ta*-i,n puee ser referenciaa por e$ no*-re e
"O&)VA"UES.
ALL literal- representa una repetici/n e$ $itera$ especificao.
Constantes identificadas por un nombre
Est4n for*aas por un ientificaor a$ #ue asocia*os un va$or. Se escri-en en $a DATA DIVISION con
nive$ 56.
Una constante ientificaa por un no*-re se uti$i%a en cua$#uier $ugar one un $itera$ puea aparecer
en un for*ato.
!dentificadores
"os ientificaores son no*-res creaos por e$ progra*aor. Para for*ar un ientificaor 7a8 #ue tener
en cuenta $as siguientes reg$as9
Un ientificaor consta e un *4:i*o e ;+ caracteres. Estos caracteres pueen ser so$a*ente
$etras< =gitos 8 e$ gui/n.
No e-en e*pe%ar ni ter*inar en un gui/n.
Un ientificaor efinio por e$ usuario no puee tener e$ *is*o no*-re #ue una pa$a-ra
reservaa.
Un ientificaor e-e contener o-$igatoria*ente a$ *enos una $etra< e:cepto cuano se trate e
un no*-re e p4rrafo o e secci/n.
Cua$#uier ientificaor uti$i%ao en $a PROCEDURE DIVISION e-e estar previa*ente efinio en $a
ENVIRONMENT DIVISION o en $a DATA DIVISION.
"peradores
"os operaores son s=*-o$os #ue inican co*o son *anipu$aos $os atos.
Carcter Significado Ejemplo
> Su*a A > !
) Resta A ? !
@ Mu$tip$icaci/n A @ !
A Divisi/n A A !
@@ Potenciaci/n A @@ !
B Asignaci/n C B A > !
0 1 Dar prioria D B 0A > !1 @ C
"peradores de relaci#n
"os operaores e re$aci/n se uti$i%an para co*parar os va$ores nu*,ricos o os va$ores a$fanu*,ricos
0no nu*,ricos1. E$ resu$tao puee ser veraero o fa$so.
Carcter Significado Ejemplo
B Igua$ #ue A B !
C Menor #ue A C !
D Ma8or #ue A D !
CB Menor igua$ A CB !
DB Ma8or igua$ A DB !
Estos operaores< tienen toos igua$ prioria.
"peradores de L#gicos
"os operaores $/gicos nos per*iten co*-inar varias e:presiones e re$aci/n. Igua$ #ue $os
operaores e re$aci/n< se uti$i%an nor*a$*ente para to*ar ecisiones. Un operaor $/gico to*a una
co*-inaci/n e va$ores veraeros)fa$sos 8 evue$ve un resu$tao veraero o fa$so.
"os operaores $/gicos co$ocaos en oren e prioria son $os siguientes9 NOT< AND< OR.
"as ta-$as e vera corresponientes a estos operaores son $as siguientes9
A B Not A A AND B A OR B
V V F V V
V F F F V
F V V F V
F F V F F
$%presiones aritm&ticas
Una e:presi/n arit*,tica puee ser una constante< una varia-$e o un con3unto e constantes 8
varia-$es unias por operaores arit*,ticos.
Para su coificaci/n 7a8 #ue tener en cuenta #ue9
@ E$ par,ntesis i%#uiero no e-e ir seguio e un espacio.
@ E$ par,ntesis erec7o no e-e ir preceio e un espacio.
@ E$ signo B u $os operaores >< )< @< ) 8 @@ e-en ir preceios 8 seguios e un espacio.
"rden de e'ecuci#n
A $a 7ora e eva$uar una e:presi/n< $a prioria e $as operaciones es $a siguiente9
E) Pri*ero se eva$Fan $as operaciones entre par,ntesis< e $os *as internos a $os *as e:ternos.
G) Despu,s< 8 siguieno e$ oren #ue se escri-e a continuaci/n se eva$Fan $os operaores
arit*,ticos9
@@ @< A ><)
"os operaores escritos so-re una *is*a $=nea tienen $a *is*a prioria. Cuano en una
e:presi/n intervienen varios operaores con $a *is*a prioria< estos se eva$Fan e i%#uiera a erec7a.
$%presiones de (""L$
Una e:presi/n e !OO"E a co*o resu$tao un va$or veraero o fa$so. "os operaores #ue
intervienen en una e:presi/n e !OO"E pueen ser9 Operadores de relacin 8 operadores lgicos.
G
Si en una e:presi/n e !OO"E intervienen varios tipos e operaores pri*ero se eva$Fan $os
operaores arit*,ticos< espu,s $os operaores e re$aci/n 8 por u$ti*o $os operaores $/gicos.
Ejemplo:
00A B +1 AND 00!@G1 NOT B +11 OR 0CB+1
Captulo 1 Capitulo 2.
)- $structura de un programa Cobol
*escripci#n +eneral
Un progra*a fuente CO!O" es un con3unto e sentencias CO!O" sint4ctica*ente correctas.
"as sentencias< entraas< p4rrafos 8 secciones e un progra*a CO!O" son agrupaas en cuatro
ivisiones #ue for*an $a estructura genera$ e ic7o progra*a.
E$ for*ato genera$ 8 e$ oren e presentaci/n e $as entraas 8 sentencias #ue constitu8en un
progra*a CO!O" es9
IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
HEND PRO(RAM i)progra*aI
Estos no*-res representan $as ca-eceras e $as cuatro ivisiones *encionaas 8 $a ca-ecera e
fina$ e progra*a #ue es opciona$ 8 va$ia -a3o $as nor*as ANS6J. En esta u$ti*a< id-programa e-e
coinciir con e$ no*-re especificao en e$ parrafo PRO(RAM)ID.
!dentification division
"a ivision e IDENTIFICACION< sirve para proporcionar un no*-re para ientificar e$
progra*a. Opciona$*ente se puee especificar infor*aci/n acerca e$ autor< fec7a en #ue fue escrito<
etc..
E$ for*ato genera$ para $a ivisi/n es e$ siguiente.
IDENTIFICATION DIVISION.
PRO(RAM)ID. No*-re e$ progra*a.
HAUT2OR. No*-re e$ progra*aor.I
HINSTA"ATION. "ugar e insta$aci/n.I
HDATE)&RITTEN. Fec7a en #ue fue escrito.I
HDATE)COMPI"ED. Fec7a en #ue fue co*pi$ao.I
HSECURITK. Entraa e co*entarios.I
So$o $as os pri*eras $ineas< IDENTIFICATION DIVISION 8 PRO(RAM)ID< son o-$igatorias.
Program-id
Este parrafo sirve para espeficar e$ no*-re e$ progra*a. Este no*-re sera uti$i%ao por e$
co*pi$aor o urante $a e3ecuci/n para inicar en #ue progra*a ocurrio a$gun error.
E$ no*-re e$ progra*a e-e a3ustarse a $as reg$as e for*aci/n e un ientificaor CO!O"<
vistas en e$ capitu$o anterior.
E$ resto e $os parrafos son opciona$es< pueen aparecer en cua$#uier oren< 8 su uti$i%aci/n
#uea perfecta*ente efinia en e$ for*ato escrito.
;
E
G ; L
J
M
Si un co*entario ocupa *as e una $inea< no esta per*itio uti$i%ar e$ gui/n co*o caracter e
continuaci/n< sin e*-argo puee ser continuao en $as $ineas siguientes< co*en%ano en e$ *argen !.
$nvironment division
"a ivision e ENTORNO per*ite efinir e$ tipo e orenaor para e$ #ue fue escrito e$
progra*a< asi co*o $os ispositivos perifericos necesarios para soportar $os fic7eros uti$i%aos en e$
progra*a.
E$ for*ato genera$ e $a secci/n es e$ siguiente9
ENVIRONMENT DIVISION.
HCONFI(URATION SECTION.
SOURCE)COMPUTER. Moe$o e orenaor.
O!NECT)COMPUTER. Moe$o e orenaor.
SPECIA")NAMES.
No*-res especia$es.I
HINPUT)OUTPUT SECTION.
FI"E)CONTRO".
Contro$ e fic7eros.
HI)O CONTRO".
Contro$ e entraa A Sa$ia.I I
Seccion de configuraci!n
Esta secci/n es opciona$. Su uti$ia es ocu*entar e$ progra*a CO!O"< inicano e$ *oe$o
e orenaor uti$i%ao 8 asociar $os no*-res ne*onicos especificaos por e$ progra*aor a no*-res
uti$i%aos por e$ co*pi$aor. A continuaci/n se escri-en $os parrafos #ue $a co*ponen.
,arrafo S"-.C$/
Sirve para especificar e$ *oe$o e orenaor #ue va a co*pi$ar e$ progra*a. Su
for*ato es e$ siguiente9
SOURCE COMPUTER. Moe$o e orenaor.
H&IT2 DE!U(IN( MODE.I
"a opci/n &IT2 DE!U(IN( MODE per*ite introucir en e$ fic7ero fuente CO!O"< coigo
#ue nos servira e a8ua para epurar e$ progra*a.
,arrafo "(0$C1/
Sirve para especificar e$ *oe$o e orenaor #ue va a e3ecutas e$ progra*a. Su
for*ato es e$ siguiente9
O!NECT COMPUTER. Moe$o e orenaor.
Me*or8 SI.E entero
&ORDS
C2ARACTERS
MODU"ES
HPRO(RAM CO""ATIN( SEOUENCE IS coigoI
HSE(MENT)"IMIT IS nu*ero)seg*entoI. I
"a c$ausu$a MEMORK SI.E tiene co*o fina$ia ocu*entar e$ progra*a 8 especifica e$
ta*aPo e $a *e*oria necesaria para poer e3ecutar e$ progra*a e:presao en pa$a-ras< caracteres o
*ou$os.
"a c$ausu$a SEOUENCE< especifica $a secuencia e caracteres uti$%aa en co*paraciones 8
c$asificaciones no nu*ericas. Si esta se o*ite se uti$i%a e$ coigo ASCII o E!CDIC. En nuestro caso se
uti$i%a e$ coigo ASCII
"a c$ausu$a SE(MENT)"IMIT so$o sirve e co*entario. "a seg*entaci/n en CO!O" tiene
sentio en $a PROCEDURE DIVISION< $a cua$ 8 para este proposito< estara iviia
co*p$eta*enta*ente en secciones< caa una e $as cua$es estara c$asificaa co*o una porcion fi3a o
co*o un seg*ento inepeniente e$ progra*a o-3eto. E$ nu*ero e seg*ento esta co*prenio entre E
8 LQ.
,arrafo S,$C!AL-2A3$S/
L
E$ fo*ato e este parrafo es e$ siguiente9
SPECIA")NAMES
HNo*-re e funci/n IS no*-re ne*/nicoI
HA"P2A!ETI
HDECIMA")PIOINT IS COMMAI
HCURRENCK SI(N IS $itera$I
Nombre de funcin es un no*-re reconocio por e$ co*pi$aor< por e3e*p$o PRINTER 8
nombre nemotecnico es un no*-re creao por e$ progra*aor.
"a c$ausu$a ALPHABET se uti$i%a para asignar un no*-re a un con3unto especifico e
caracteres o a una eter*inaa secuencia e c$asificaci/n. Su for*ato es e$ siguiente9
A"P2A!ET no*-re)a$fa-eto IS
STANDARD)E
STANDARD)G
NATIVE
ASCII
E!CDIC
A"P2A!ET no*-re)a$fa-eto IS $itera$)E T2RU $itera$)G A"SO $itera$);
E$ 3uego e caracteres STANDARD)E o ASCII es e$ coigo A*erican Stanar Coe for
Infor*ation Interc7ange. STANDARD)G es e$ coigo ISO 5)-it.
"a c$ausu$a NATIVE se refiere a$ coigo ASCII o E!CDIC epenieno e $a version CO!O".
Cuano se especifica un no*-re e a$fa-eto en una c$ausu$a CODE)SET en $a escripci/n e
fic7ero< es para especificar e$ coigo e caracteres #ue se #uiere uti$i%ar.
Si se especifica $a opci/n e literal, e$ no*-re e a$fa-eto no puee referenciarse en $a c$ausu$a
CODE)SET. "a secuencia e c$asificaci/n ientificaa esta efinia e acuero con $as siguientes reg$as9
E) E$ va$or e caa $itera$ especifica9
A1 E$ va$or orina$ e un caracter entro e$ 3uego e caracteres nativo< si e$ $itera$ es
nu*erico.
!1 E$ caracter actua$ entro e$ 3uego e caracteres nativo< si e$ $itera$ no es
nu*erico. Si e$ $itera$ no es nu*erico 8 esta for*ao por varios caracteres< caa
caracter< co*en%ano con e$ caracter *as a $a i%#uiera< es asignao a posiciones
sucesivas< ascenente*ente< en $a secuencia e c$asificaci/n #ue esta especificano.
G) E$ oren en e$ #ue $os $itera$es aparecen en $a c$ausu$a A"P2A!ET< en secuencia
ascenente< especifica e$ nF*ero orina$ e$ caracter entro e $a secuencia e
c$asificaci/n.
;) Cua$#uier caracter entro e $a secuenca nativa e c$asificaci/n #ue este
e:p$icita*ente espresao en e$ $itera$< asu*e una posici/n< en $a secuencia e
c$asificaci/n< *a8or #ue cua$#uiera e $os caracteres e:p$icita*ente especificaos.
L) Si se especifica $a opci/n T2RU< e$ con3unto e caracteres contiguos< e$ coigo
nativo< #ue co*ien%an con e$ caracter especificao por e$ literal- 8 #ue ter*ina con e$
caracter especificao por e$ literal-!, es asignao a posiciones sucesivas< ascenente*ente< en $a
secuencia e c$asificaci/n #ue se esta especificano.
J) Si se especifica $a opci/n A"SO< $os caracteres e$ coigo nativo especificaos por literal- 8
literal-" se asignan a $a *is*a posici/n en $a secuencia e c$asificaci/n #ue se esta
especificano.
"os caracteres #ue ocupan $as posiciones *as -a3a 8 *as a$ta en $a secuencia e c$asificaci/n efinia< se
asocian con $as constantes figurativas "O&)VA"UE 8 2I(2)VA"UE respectiva*ente. Si estas posiciones son
ocupaas por *as e un caracter< e$ va$or e $a constante figurativa corresponiente se asocia a$ u$ti*o caracter
especificao.
J
"a c$ausu$a #E$%&AL-PO%NT %' $O&&A per*ite transfor*ar< en $a eici/n e resu$taos< e$ punto
eci*a$ en $os nu*eros< en co*a.
"a funci/n e $a c$ausu$a $())EN$* %' literal es $a e ree*p$a%ar e$ signo R e $a *onea a*ericana<
#ue se usa en $a c$ausu$a PICTURE< por e$ corresponiente signo e $a *onea $oca$. E$ $itera$ esta $i*itao a un
so$o caracter< e$ cua$ e-e especificarse en $a c$ausu$a PICTURE corresponiente< en $ugar e$ caracter R.
Seccion de entrada-"alida
Esta secci/n es opciona$. Per*ite ec$arar $os fic7eros e EAS #ue uti$i%a e$ progra*a< asi co*o efinir $as
tecnicas especia$es e EAS.
Capitulo #
4- La divisi#n *A1A
!21."*-CC!52
"a ivisi/n e atos se uti$i%a para rea$i%ar una escripci/n co*p$eta e $os fic7eros #ue
intervienen en e$ progra*a< e sus registros $/gicos 8 e $as varia-$es inter*eias o e tra-a3o.
E$ for*ato genera$ para esta ivisi/n es e$ siguiente9
DATA DIVISION.
HFI"E SECTION.
Descripci/n e$ fic7ero
Descripci/n e$ registro.
... I
H&OR'IN()STORA(E SECTION
H55 Descripci/n e ca*pos iniviua$es. I
H+E Descripci/n e registros. II
H"IN'A(E SECTION.
H55 Descripci/n e ca*pos iniviua$es. I
H+E Descripci/n e registros. II
HCOMMUNICATION SECTION.
HDescripci/n co*unicaci/n. I
HDescripci/n e registros. I I
HREPORT SECTION.
HDescripci/n e infor*es.II
HSCREEN SECTION.
+E Descripci/n e panta$$as.I
Secci/n e fic7eros.
En $a +%LE 'E$T%ON e-e escri-irse toa $a infor*aci/n referente a $os fic7eros uti$i%aos en
e$ progra*a.
Secci#n de traba'o
En $a ,O)-%N.-'TO)A.E 'E$T%ON se escri-en $os ca*pos uti$i%aos por e$ progra*a
co*o ca*pos inter*eios o e tra-a3o. E$ for*ato es e$ siguiente9
H&OR'IN()STORA(E SECTION.
H55 Descripci/n e ca*pos iniviua$es.I
H+E Descripci/n e registros.II
"os ca*pos #ue se especifican en $a 'E$$%/N #E T)ABA0O pueen agruparse siguieno e$
for*ato e*p$eao en e$ apartao descripci#n de una estructura registro< e:puesto a continuaci/n< o
-ien ser ca*pos e inepenientes en cu8o caso van preceios por e$ nu*ero e nive$ 55.
M
*escripci#n de una estructura registro
Una escripci/n e registro consiste en un con3unto e escripciones e atos< $as cua$es
escri-en $as caracter=sticas e un registro en particu$ar. Caa escripci/n e ar4 esta for*aa por un
nu*ero e nive$ seguio e un no*-re e atos< o e $a c$4usu$a +%LLE)< seguio e una serie e
c$4usu$as si es #ue estas son re#uerias.
Una escripci/n e registro puee tener una estructura 3erar#ui%aa co*puesta por una o *as
inscripciones 3erar#ui%aas o ca*pos #ue escri-ire*os e acuero con e$ siguiente for*ato9
nF*ero e nive$
FI""ER
no*-re e atos
HREDEFINESI
HPICTUREI
HUSA(EI
HVA"UEI
HSI(NI
HNUSTIFIED RI(T2I
H!"AN' &2EN .EROI
HOCCURSI
E$ oren e estas c$4usu$as puee ser cua$#uiera< e:cepto $a c$4usu$a REDEFINES< #ue e-e ser
$a pri*era< en e$ caso e especificarse. Toa inscripci/n e-e ter*inar con un punto.
E$ no*-re e$ registro $$eva nu*ero e nive$ +E 8 e$ resto e $os ca*pos $$eva un nu*ero e
nive$ e +G a LQ.
26mero de nivel
Sirve para inicar $a re$aci/n e:istente entre un ca*po 8 e$ resto e $os ca*pos e$ registro.
"os ca*pos e atos $o poe*os c$asificar en9
) $ampos elementales9 Un ca*po e$e*enta$ no puee su-iviirse o no es necesario
su-iviir$o para ser tratao por e$ progra*a.
) $ampos compuesto9 Un ca*po co*puesto esta for*ao por varios ca*pos e$e*enta$es.
) $ampos independientes 9 Un ca*po inepeniente es un ca*po e tra-a3o #ue ser4 efinio
en $a secci/n e tra-a3o.
Una estructura 3erar#ui%aa< per*ite tra-a3ara con registros co*p$etos< con ca*pos co*puestos
8 con ca*pos e$e*enta$es.
"os nF*eros e nive$ #ue pueen uti$i%arse son9 e$ +E a$ LQ< MM< 55< 56 8 66. $l nivel superior
es el 78.
"as nor*as a seguir para uti$i%ar $os nF*eros e nive$ son $as siguientes9
@ Un ca*po co*puesto tiene un nive$ superior #ue cua$#uiera e sus ca*pos e$e*enta$es.
@ E$ nu*ero e nive$ +E so$o puee preceer a$ no*-re e$ registro.
@ "os nF*eros e$ +G a$ LQ pueen preceer a cua$#uier ca*po e$ registro< e$e*enta$ o
co*puesto.
@ "os nu*ero e nive$ uti$i%aos no tienen por#ue ser corre$ativos.
@ E$ nu*ero e nive$ 55 se uti$i%a para escri-ir ca*pos inepenientes en $a &OR'IN(.
@ E$ nu*ero e nive$ 66 se uti$i%a para escri-ir no*-res e conici/n.
E$ for*ato es e$ siguiente9
5
66 no*-re e conici/n VA"UE $itera$)E
T2ROU(T2
T2RU
$itera$)G
$itera$); $itera$)L
T2ROU(T2
T2RU
@ E$ nu*ero e nive$ MM se uti$i%a Fnica*ente con $a c$4usu$a RENAMES. Per*ite asignar un
nuevo no*-re a un ca*po e$e*enta$< a un ca*po co*puesto o a un con3unto e ca*pos e$e*enta$es. Su
for*ato es e$ siguiente9
MM no*-re e ato)ES RENAMES no*-re e ato)G
T2RU
T2ROU(2
no*-re e ato);
"a c$4usu$a RENAMES no puee for*ar parte e $a escripci/n e un ca*po 8 es o-$igatorio
especificar$a in*eiata*ente espu,s e $a escripci/n e$ registro.
Un ca*po con nu*ero e nive$ +E< 55 u 66 no puee ser reno*-rao por esta c$4usu$a.
Ni no*-re e ato)G ni no*-re e ato); pueen tener $a c$4usu$a OCCURS< ni pueen estar
su-orinaos a un ca*po #ue contenga $a c$4usu$a OCCURS.
@ E$ nu*ero e nive$ 56 se uti$i%a para efinir constantes ientificaas por un no*-re. Caa
referencia a una constante< es ree*p$a%aa por e$ co*pi$aor CO!O"< por su va$or.
E$ for*ato genera$ es e$ siguiente9
56 no*-re constanteS VA"UE IS
NETT >A) entero
$itera$
2ombre de datos
Sirve para no*-rar e$ ca*po con e$ fin e poer referenciar$o en e$ progra*a 8 e-e escri-irse
a continuaci/n e$ nu*ero e nive$. Si en $a PROCEDURE DIVISION no se va a referenciar a$guno e
$os ca*pos no*-raos< e$ no*-re e caa uno e estos ca*pos< puee ser sustituio por $a pa$a-ra
FI""ER.
,!C1-.$
Esta c$4usu$a per*ite ec$arar e$ tipo 8 e$ ta*aPo e un ca*po e$e*enta$. E$ tipo eter*ina $a
infor*aci/n #ue puee a$*acenarse en e$ ca*po< as= co*o $as operaciones e #ue con ,$ puean
rea$i%arse. Su for*ato es e$ siguiente9
PICTURE
PIC
IS especificaci/n e for*ato
E$ tipo e ca*po< epene e $os caracteres #ue se e*p$een para efinir $a especificaci/n e
for*ato. "os ca*pos $os poe*os c$asificar en alfab1ticos, alfanum1ricos 8 num1ricos.
"a $ongitu e$ ca*po viene aa por e$ nu*ero e caracteres e*p$eaos en $a especificaci/n
e for*ato para ec$arar e$ ca*po. E$ *4:i*o nu*ero e caracteres per*itio es ;+.
CA3,"S AL9A(:1!C"S
Per*iten a$*acenar Fnica*ente $etras 8Ao -$ancos. E$ car4cter #ue se e*p$ea para efinir un
ca*po e este tipo es $a A.
6
CA3,"S AL9A2-3:.!C"S
Per*iten a$*acenar cua$#uier car4cter e$ 3uego e caracteres ASCII. E$ car4cter #ue se e*p$ea
para efinir un ca*po e este tipo es $a T.
CA3,"S 2-3:.!C"S
Per*iten a$*acenar cua$#uier va$or nu*,rico. Tener en cuenta #ue en CO!O" no se per*iten
nF*eros superiores a E6 cifras. "os caracteres #ue se e*p$ean para efinir un ca*po e este tipo sin9 Q<
S< V 8 P.
E$ significao e caa uno e $os caracteres #ue pueen intervenir en una especificaci/n e
for*ato para un ca*po nu*,rico es9

Q Representa un cifra e$ +E a$ Q.
S Inica $a aparici/n e$ signo > o ). E$ signo no es o-$igatorio< pero es conveniente poner$o
por#ue sino CO!O"< espu,s e caa operaci/n $o supri*e siste*4tica*ente< $o #ue repercute
en un *a8or tie*po e e3ecuci/n. Cuano se pone< e-e ser e$ pri*er car4cter e $a
especificaci/n e for*ato.
V Representa $a posici/n e un punto eci*a$ i*p$=cito. Se uti$i%a interna*ente para a$inear $as
partes eci*a$es e $os ca*pos< cuano se #uiere rea$i%ar una operaci/n.
P Inica una cifra virtua$< representano un cero. Para $a #ue no se 7a reservao una posici/n e
*e*oria.
,!C1-.$ para la edici#n
Para visua$i%ar por panta$$a o escri-ir por $a i*presora un ca*po< ae*4s e $os caracteres A<
T< Q< V 8 P se ispone e $os caracteres9
. @ . < + ! A CR D! R > )
E$ significao e caa uno e estos caracteres es e$ siguiente9
. Representa una cifra e$ + a$ Q. Si $a cifra a escri-ir se correspone con un + no significativo<
se escri-e en su $ugar un espacio en -$anco.
@ Representa una cifra e$ + a$ Q. Si $a cifra a escri-ir se correspone con un + no significativo<
se escri-e en su $ugar un @.
"os caracteres . 8 @ no pueen ir preceios< pero si seguios e$ car4cter Q.
. E$ punto 7ace #ue se inserte un punto eci*a$ para separar $a parte entera e $a parte eci*a$.
< "a co*a 7ace #ue se inserte este *is*o car4cter en e$ $ugar #ue se inica en $a especificaci/n
e for*ato.
"a c$4usu$a DECIMA")POINT IS COMMA en $a ENVIRONMENT DIVISION< per*ite
invertir e$ pape$ e$ punto 8 $a co*a en $as especificaciones e for*ato en $a eici/n.
! Per*ite #ue se inserte un espacio en -$anco en e$ $ugar #ue se inica en $a especificaci/n e
for*ato.
+ Per*ite #ue se inserte un cero en e$ $ugar e #ue se inica en $a especificaci/n e for*ato.
A Per*ite #ue se inserte una -arra en e$ $ugar e #ue se inica en $a especificaci/n e for*ato.
CR S=*-o$o -ancario inicativo e cr,ito. So$o puee co$ocarse a $a erec7a e $a especificaci/n
e for*ato. CR aparece so-re $a $=nea #ue se i*pri*e si e$ va$or es negativo. Si e$ va$or es
positivo aparecer4n en su $ugar G espacios en -$anco.
D! S=*-o$o -ancario inicativo e ,-ito. So$o puee co$ocarse a $a erec7a e $a especificaci/n
e for*ato. D! aparece so-re $a $=nea #ue se i*pri*e si e$ va$or es negativo. Si e$ va$or es
positivo aparecer4n en su $ugar G espacios en -$anco.
R Un car4cter R co$ocao en e$ pri*er $ugar en $a especificaci/n e for*ato< per*ite $a
aparici/n e este car4cter en e$ $ugar inicao.
> Un car4cter > co$ocao en pri*er o u$ti*o $ugar en $a especificaci/n e for*ato< per*ite $a
Q
aparici/n e un > para va$ores positivos 8 e un ) para va$ores negativos en e$ $ugar inicao.
) Un car4cter > co$ocao en pri*er o u$ti*o $ugar en $a especificaci/n e for*ato< per*ite $a
aparici/n e un espacio en -$anco para va$ores positivos o un ) para va$ores negativos en e$
$ugar inicao.
RR... "a aparici/n en una especificaci/n e for*ato e n caracteres R< per*ite eitar un va$or e n)E
cifras. Si $a cifra a escri-ir se correspone con un + no significativo< se escri-e en su $ugar un
espacio en -$anco< e:cepto a $a i%#uiera e $a pri*era cifra significativa #ue se inserta un
car4cter R.
>>... "a aparici/n en una especificaci/n e for*ato e n caracteres >< per*ite eitar un va$or e n)E
cifras. Si $a cifra a escri-ir se correspone con un + no significativo< se escri-e en su $ugar un
espacio en -$anco< e:cepto a $a i%#uiera e $a pri*era cifra significativa #ue se inserta un
car4cter > para $os va$ores positivos o un ) para $os va$ores negativos.
)) "a aparici/n en una especificaci/n e for*ato e n caracteres >< per*ite eitar un va$or e n)E
cifras. Si $a cifra a escri-ir se correspone con un + no significativo< se escri-e en su $ugar un
espacio en -$anco< e:cepto a $a i%#uiera e $a pri*era cifra significativa #ue se inserta un
car4cter ) para $os va$ores negativos.
"a c$4usu$a DECIMA")POINT IS COMMA< per*ite uti$i%ar $a co*a eci*a$ en $ugar e$
punto eci*a$. Sin e*-argo< este pro-$e*a puee ser resue$to sin necesia e especificar esta c$4usu$a.
Para e$$o inicare*os en $a especificaci/n e for*ato e$ $ugar e $a co*a *eiante e$ car4cter V e
insertare*os a su i%#uiera o erec7a e$ car4cter co*a

.
-SA+$
Esta c$4usu$a per*ite inicar cono se a$*acenar4 en *e*oria< va$or en un ca*po nu*,rico. Su
for*ato es e$ siguiente9
USA(E
DISP"AK
COMPUTATIONA"
COMPUTATIONA")T
COMPUTATIONA");
COMPUTATIONA")L
COMPUTATIONA")J
COMP
COMP)T
COMP);
COMP)L
COMP)J
o
o
o
o
o
DISP"AK es $a opci/n por efecto. Con esta opci/n< cara car4cter sea nu*,rico o no< ocupa un
-8te o octeto en *e*oria< representao en ASCII. "os va$ores nu*,ricos son a$*acenaos en -ase E+.
COMP 8 COMP)L tienen e$ *is*o significao. Se e*p$ean con ca*pos nu*,ricos 8 $os va$ores
son a$*acenaos en $os *is*os en -inario puro. E*p$eano $a representaci/n co*p$e*ento a G.
COMP); se e*p$ea so$o con ca*pos nu*,ricos 8 7ace #ue un va$or sea a$*acenao en -inario
eci*a$ e*pa#uetao 0!CD1. E$ se*iocteto *enos significativo contiene e$ signo.
COMP)J es un for*ato si*i$ar a COMP< con $a iferencia e #ue e$ va$or #ue puee
a$*acenarse< no epene e$ nu*ero e Q inicaos en $a c$4usu$a PIC< si no e$ nu*ero -inario *as
grane #ue puea a$*acenarse en ese espacio.
COMP)T es un for*ato si*i$ar a COMP. Con respecto a este tiene $as siguientes iferencias9
@ a1 "a especificaci/n e for*ato puee estar for*aa tota$*ente por T.
@ -1 Tanto si $a especificaci/n e for*ato esta constituia por T o por Q< e$ va$or
#ue puee a$*acenarse #uea $i*itao a$ nu*ero -inario *as grane #ue
puea a$*acenarse.
@ c1 E$ uso e COMP)T con e$e*entos uti$i%aos en operaciones arit*,ticas< esta
restringio a $as operaciones ADD< SU!STRACT< MU"TIP"K 8 DIVIDE
no per*iti,nose e$ e*p$eo e ON SI.E ERROR. Si e$ resu$tao o-tenio
con estas operaciones es e*asiao grane< se trunca. Si e$ resu$tao no es

55 7o$a pic >..!V<QQ. O 55 7o$a pic >..!<VQQ.


E+
un entero< se trunca $a parte eci*a$. Si e$ resu$tao es negativo se
a$*acena en co*p$e*ento a G.
VAL-$
Esta c$4usu$a puee uti$i%arse en esta secci/n< para asignar un va$or a un ca*po con nive$ 66<
no*-res e conici/n< para asignar un va$or a una constante ientificaa por un no*-re o -ien para
inicia$i%ar ca*pos e atos con un eter*inao va$or.
For*ato9
VA"UE $itera$.
S!+2
Esta c$4usu$a especifica $a posici/n 8 e$ *oo e representaci/n e$ signo operaciona$ e un
ca*po nu*,rico en cu8a especificaci/n e for*ato se 7a especificao S. Su for*ato es e$ siguiente9
SI(N
"EADIN(
TRAI"IN(
SEPARATE C2ARACTER
"a c$4usu$a SI(N se ap$ica a ca*pos nu*,ricos escritos co*o USA(E IS DISP"AK. Si $a
c$4usu$a SEPARATE no se especifica< e$ signo e$ nu*ero es incorporao en e$ =gito e $a erec7a
0TRAI"IN(1 o en e$ =gito e $a i%#uiera 0"EADIN(1. En este caso e$ car4cter S e $a PICTURE no se
tiene en cuenta para eter*inar e$ ta*aPo e$ ca*po.
Si $a c$4usu$a SEPARATE se especifica< entonces e$ signo es a$*acenao co*o un car4cter
separao aiciona$ a $os =gitos. En esta caso e$ car4cter S se tiene en cuenta para eter*inar e$ ta*aPo
e$ ca*po.
Si $a c$4usu$a SI(N no se especifica< genera$*ente $a posici/n por efecto es a $a i%#uiera.
0-S1!9!$*
Esta c$4usu$a per*ite 3ustificar un va$or a$fa-,tico o a$fanu*,rico a $a erec7a. Su for*ato es e$
siguiente9
NUSTIFIED
NUST
RI(T2
Esta c$4usu$a puee especificarse so$a*ente con ca*pos e$e*enta$es u no puee especificarse
para un ca*po escrito co*o nu*,rico o e eici/n.

(LA2;
Esta c$4usu$a $$ena un ca*po nu*,rico con espacios cuano su va$or sea cero. De esta for*a<
e$i*inan toos $os caracteres e inserci/n< en caso e #ue $a %ona a eitar sea nu$a. Su for*ato es e$
siguiente9
!"AN' &2EN .ERO.
Esta c$4usu$a puee especificarse so$a*ente con ca*pos nu*,ricos e$e*enta$es con for*ato
DISP"AK o con ca*pos nu*,ricos e eici/n.
EE
"CC-.S
Esta c$4usu$a per*ite efinir una estructura e atos eno*inaa ta-$a. Una ta-$a es un
con3unto e e$e*entos toos e$ *is*o tipo< esto es< con i,nticos atri-utos. Su for*ato es e$ siguiente9
OCCURS n TIMES.
"a c$4usu$a OCCURS inica e$ nu*ero e veces< n< #ue se repite un e$e*ento 0ca*po si*p$e o
co*puesto1 con $a *is*a escripci/n.
E$ su-=nice corresponiente a$ pri*er e$e*ento es E. E$ su-=nice puee ser un nu*ero entero
o un no*-re e atos. Si es un no*-re e atos se reco*iena ec$arar$o con for*ato -inario 0COMP1.
"a c$4usu$a OCCURS no puee especificarse en una escripci/n con nu*ero e nive$ +E o 55.
Una ta-$a en CO!O" puee tener 7asta ; su-=nices. En este caso se ice #ue $a ta-$a es e ;
i*ensiones.
"a c$4usu$a OCCURS 8 VA"UE son inco*pati-$es< $o cua$ no per*ite inicia$i%ar una ta-$a en
su propia ec$araci/n.
.$*$9!2$S
Esta c$4usu$a per*ite ar a un ca*po o a un 4rea e *e*oria *as e un no*-re 8 *as e un
for*ato. Su for*ato es e$ siguiente9
FI""ER
REDEFINES no*-re e ato)G
no*-re e ato)E
"a c$4usu$a REDEFINES 7a e ser $a pri*era #ue siga a$ no*-re e atos.
"os ca*pos no*-re e ato)E 8 ca*pos no*-re e ato)G 7an e estar ec$araos a$ *is*o
nive$< pero no a nive$ MM u 66.
"a reefinici/n e un ca*po co*puesto se 7ace in*eiata*ente espu,s e$ u$ti*o e $os
ca*pos e$e*enta$es #ue for*an parte e a#ue$.
Esta c$4usu$a va a per*itir poer inicia$i%ar una ta-$a en e$ *o*ento e ec$arar$a.

Seccion de enlace
Esta secci/n per*ite ec$arar ca*pos e *e*oria para ser uti$i%aos por otros progra*as 8 por
consiguiente conservar $os atos e un progra*a para otro.
Secci#n de comunicaciones
Esta seccion per*ite procesar *ensa3es 8 contro$ar e$ f$u3o e $os *is*os.
Secci#n de informes
Esta secci/n per*ite crear un or*ato especifico para i*pri*ir un fic7ero e sa$ia.
Secci#n de pantalla
Esta secci/n per*ite contro$ar $a representaci/n e $os atos en panta$$a.
EG
Capitulo $
<- La divisi#n ,."C$*-.$
!ntroducci#n
"a DIVISIUN DE PROCEDIMIENTOS inica $a secuencia e operaciones necesarias<
sentencias CO!O"< para reso$ver un pro-$e*a ao.
E$ for*ato genera$ para esta ivisi/n es e$ siguiente9
PROCEDURE DIVISION
USIN(
C2AININ(
no*-re e ato)E Hno*-re e ato)GI...I.
HDEC"ARATIVES.
VNo*-re e Secci/n SECTION Hnu*ero)seg*entoI.Hsentencia USEI.
HNo*-re e p4rrafo. HsentenciaI ...I...W...
END DEC"ARATIVAS. I
VNo*-re e Secci/n SECTION Hnu*ero)seg*entoI.Hsentencia USEI.
HNo*-re e p4rrafo. HsentenciaI ...I...W...
"a c$4usu$a USIN( se especifica so$a*ente en progra*as #ue $uego son $$a*aos 0CA""1 o
en$a%aos 0C2AIN1. "a sentencia USE cuano es e3ecutaa $a secci/n.
Co*o $as otras ivisiones< $a PROCEDURE DIVISION< puee ser iviia en secciones 8 estas
a su ve% en p4rrafos. Caa p4rrafo genera$*ente agrupar4 varias sentencias. "a ivisi/n en secciones es
opciona$ 8 es poco uti$i%aa< en ca*-io $a ivisi/n en p4rrafos es frecuente.
Opciona$*ente $a PROCEDURE DIVISION puee contener secciones DEC"ARATIVAS. En
caso e uti$i%ar$as< estas e-en ser $as pri*eras en efinirse. Su fina$ia es e$ trata*iento e errores.
Sentencias b=sicas
Visuali>ar datos *!S,LA?
Esta secuencia per*ite visua$i%ar atos por panta$$a o i*pri*ir$os irecta*ente en $a
i*presora. Su for*ato es e$ siguiente9
For*ato E9
DISP"AK UPON
H&IT2 NO ADVANCIN(I
no*-re e atos
$itera$
no*-re ne*onico
no*-re e funci/n
no*-re e atos
$itera$
E$ no*-re *ne*/nico e-e ser un no*-re asociao a un no*-re e funci/n< no*-re
reconocio por e$ co*pi$aor en e$ p4rrafo SPECIA")NAMES.
E$ $itera$ puee ser una constante figurativa< e:cepto A""< una constante e caracteres o un
$itera$ nu*,rico.
"a opci/n NO ADVANCIN( 7ace #ue e$ cursor no avance e $=nea< una ve% #ue se 7a e3ecutao
$a sentencia DISP"AK.
E;
Cuano uti$i%a*os $a c$4usu$a UPON< e$ no*-re si*-/$ico e-e ec$ararse en e$ p4rrafo
SPECIA")NAMES. Si en $ugar e uti$i%ar un no*-re *ne*/nico uti$i%a*os un no*-re e funci/n e$
resu$tao es e$ *is*o.
For*ato G9
DISP"AK AT "INE NUM!ER NUM!ER
CO"UMN
CO"
UPON CRT MODE IS !"OC' &IT2
no*-re e atos)E no*-re e atos)G no*-re e atos);
opciones
$itera$)E entero)E entero)G
H I H I I H
"os ca*pos e$e*enta$es e-en tener co*o USA(E< DISP"AK.
"a c$4usu$a AT a $a posici/n e panta$$a one va a co*en%ar $a operaci/n e escritura.
"a frase UPON CRT< es $a opci/n por efecto e inica visua$i%ar $os atos inicaos por
panta$$a.
"a frase MODE IS !"OC' 7a8 #ue especificar$a cuano no*-re e atos)E correspone a un
ca*po co*puesto 8 para #ue $os atos e$e*enta$es no*-raos con FI""ER sean tenios en cuenta. Esto
es< no*-re e atos)E es consierao co*o un ca*po e$e*enta$.
Si no se especifica no*-re e atos)E o $itera$)E< DISP"AK< sin *as *ueve e$ cursor a $a
posici/n inicaa.
Si no*-re e atos)E es una constante figurativa< tiene un efecto especia$ #ue inica*os a
continuaci/n9
SPACE "i*pia $a panta$$a ese $a posici/n e$ cursor especificaa< 7asta e$ fina$ e $a
*is*a.
"O&)VA"UE Mueve e$ cursor a $a posici/n especificaa.
A"" TX+EX "i*pia ese $a posici/n e$ cursor especificaa< 7asta e$ fina$ e $a $=nea.
A"" TX+GX "i*pia toa $a panta$$a.
A"" TX+5X Suena< env=a un pitio.
Opcione"
!E"" o !EEP Esta c$4usu$a e*ite un sonio caa ve% #ue DISP"AK es
e3ecutao.
!"IN' Esta c$4usu$a 7ace parpaear e$ e$e*ento visua$i%ao.
2I(2"I(T2 Esta c$4usu$a 7ace #ue e$ e$e*ento visua$i%ao apare%ca en a$ta
intensia
REVERSE)VIDEO Esta c$4usu$a 7ace #ue e$ e$e*ento visua$i%ao apare%ca en
v=eo inverso.
SI.E IS
No*-re e atos
entero
Esta c$4usu$a se uti$i%a con ca*pos e$e*enta$es 8 especifica e$
ta*aPo e$ ca*po. Si e$ ta*aPo especificao es *enor #ue e$
especificao en $a c$4usu$a PIC< so$a*ente aparecer4 $a porci/n
e $a parte i%#uiera 8 si e$ ta*aPo especificao es *as grane
se re$$ena con -$ancos.
UNDER"INE Esta c$4usu$a 7ace #ue e$ e$e*ento visua$i%ao apare%ca
su-ra8ao.
FORE(ROUND)CO"OR IS entero Esta c$4usu$a especifica e$ co$or en e$ #ue es visua$i%ao e$
e$e*ento. Entero es un va$or entre + 8 5.
!AC'(ROUND)CO"OR IS entero Esta c$4usu$a especifica e$ co$or e fono so-re e$ #ue es
visua$i%ao e$ e$e*ento. Entero es un va$or entre + 8 5.
!"AN' SCREEN !orra $a panta$$a.
!"AN' "INE !orra una $=nea.
EL
Leer datos del teclado ACC$,1
Esta sentencia per*ite asignar a uno o *as ca*pos e atos. Va$ores ese e$ tec$ao. Su
for*ato es e$ siguiente9
ACCEPT FROM
DATE
DAK
TIME
no*-re e atos
Esta sentencia per*ite asignar a nombre de datos e$ va$or e $as constantes DATE< DAK 8
TIME.
E$ contenio e estas constantes es9
DATE es una constante e seis cifras e $a for*a AAMMDD< one AA son $as os u$ti*as cifras e$
aPo< MM es e$ *es 8 DD es e$ =a.
DAK es una constante e cinco cifras e $a for*a AANNN< one AA son $as os u$ti*as e$ aPo 8
NNN es e$ =a e$ aPo.
TIME es una constante e 6 cifras 22MMSSCC< one 22 es $a 7ora 0++..G;1< MM son $os *inutos<
SS son $os segunos 8 CC son $as cent,si*as e seguno.
For*ato G9
ACCEPT FROM
no*-re)ne*onico
no*-re e funcion
no*-re e atos
E$ nombre mnemnico e-e ser un no*-re asociao a un nombre de funcin< no*-re
reconocio por e$ co*pi$aor< en e$ p4rrafo SPECIA")NAMES.
For*ato ;9
ACCEPT
HFROM
no*-re e atos)E AT "INENUM!ER
CO"UMN
CO"
NUM!ER
no*-re e atos)G no*-re e atos);
entero)E
sentencia)E
entero)G
CRTI HMODE !"OC'I H&IT2opcionesI IS ON
ESCAPE
ETCEPTION
sentencia)G ON
ESCAPE
ETCEPTION
NOT HEND)ACCEPTI
Una sentencia ACCEPT es trataa -a3o este for*ato si va seguia e a$guna e $as c$4usu$as AT<
UPON< MODE o &IT2< sin es consieraa co*o una sentencia ACCEPT est4nar 0ANSI1 vista
anterior*ente.
"os ca*pos e$e*enta$es en nombre de datos- e-en tener una USA(E DISP"AK.
"a c$4usu$a AT a $a posici/n e panta$$a one va a co*en%ar $a operaci/n e $ectura. Si no se
especifica< se supone $a $=nea E< co$u*na E.
"as c$4usu$as "INE 8 CO" pueen aparecer en cua$#uier oren 8 sirven para especificar $a $=nea
8 $a co$u*na respectiva*ente< one va a co*en%ar $a $ectura. E$ nu*ero e $=nea viene especificao
por nombre de datos-! o por entero- 8 e$ nu*ero e co$u*na por nombre de datos-" o por entero-".
"a frase UPON CRT< es $a opci/n por efecto e inica aceptar e$ ato inicao por $a conso$a.
Si nombre de datos- correspone a un ca*po co*puesto< 8 $a frase MODE IS !"OC' no se
7a especificao< entonces $os ca*pos e$e*enta$es corresponientes #ue no sean FI""ER son aceptaos
en e$ oren #ue est4n especificaos 8 separaos por un nu*ero e espacios en -$anco igua$ a $a $ongitu
EJ
e$ ca*po FI""ER corresponiente. Si esta frase se especifica entonces nombre de datos- es
consierao co*o un ca*po e$e*enta$.
Opcione":
!E"" o !EEP esta c$4usu$a e*ite un sonio caa ve% #ue ACCEPT es
e3ecutao.
!"IN' Esta c$4usu$a 7ace parpaear e$ e$e*ento aceptao.
2I(2"I(2T Esta c$4usu$a 7ace #ue e$ e$e*ento aceptao apare%ca en a$ta
intensia.
REVERSE)VIDEO Esta c$4usu$a 7ace #ue e$ e$e*ento aceptao apare%ca en
v=eo inverso.
SI.E IS
no*-re e atos
entero
Esta c$4usu$a se uti$i%a con ca*pos e$e*enta$es 8 especifica
e$ ta*aPo e$ ca*po. Si e$ ta*aPo especificao es *enor #ue
e$ especificao en $a c$4usu$a PIC< preva$ece e$ ta*aPo
especificao por $a c$4usu$a SI.E 8 si e$ ta*aPo es *as
grane preva$ece e$ especificao por $a c$4usu$a PIC.
UNDER"INE Esta c$4usu$a 7ace #ue e$ e$e*ento aceptao apare%ca
su-ra8ao.
FORE(ROUND)CO"OR IS entero Especifica e$ co$or en e$ #ue se escri-e e$ e$e*ento aceptao.
!AC'(ROUND)CO"OR IS entero Especifica e$ co$or e fono so-re e$ #ue se escri-e e$
e$e*ento aceptao
PROMPT IS
no*-re e atos
$itera$
C2ARACTER
Esta c$4usu$a *arca so-re $a panta$$a con e$ car4cter
especificao< $os posiciones vac=as *ientras se e3ecuta $a
operaci/n ACCEPT. PROMPT sin car4cter uti$i%a e$ car4cter
por efecto 0car4cter e su-ra8ao1.
AUTO Esta c$4usu$a ter*ina auto*4tica*ente un operaci/n
ACCEPT cuano se tec$a e$ u$ti*o car4cter.
FU"" o "EN(T2)C2EC' Esta c$4usu$a o-$iga a e3ar e$ ca*po co*p$eta*ente vac=o o
co*p$eta*ente $$eno.
REOUIRED o EMPTK)C2EC' Esta c$4usu$a o-$iga a no e3ar e$ ca*po co*p$eta*ente
vac=o.
SECURE o NO)EC2O Esta c$4usu$a i*pie #ue $os caracteres tec$eaos apare%can
en $a panta$$a.
UPDATE Esta c$4usu$a per*ite visua$i%ar e$ contenio e$ ca*po antes
e efectuar $a entraa.
RI(2T)NUSTIFK Esta c$4usu$a a3usta e$ contenio e un ca*po nu*,rico
eitao o no eitao< a $a erec7a una ve% #ue se fina$i%a
ACCEPT. Para e$$o es necesario #ue se especifi#ue
si*u$t4nea*ente $a c$4usu$a SI.E.
Si se especifica $a frase ON ETCEPTION 8 $a operaci/n ACCEPT no ter*ina
satisfactoria*ente< se e3ecuta sentencia)E< #ue es una sentencia i*perativa 0no coniciona$1. Si se
especifica $a frase NOT ON ETCEPTION 8 $a operaci/n ACCEPT ter*ina satisfactoria*ente< se e3ecuta
$a sentencia)G< #ue es ta*-i,n una sentencia i*perativa.
Opciona$*ente se puee uti$i%ar $a frase END)ACCEPT $a cua$ e$i*ita e$ 4*-ito e$
ACCEPT.
3ovimientos de datos 3"V$/
Esta sentencia per*ite transferir atos e un ca*po e *e*oria a otro o a otros. Su for*ato es
e$ #ue sigue9
For*ato E9
MOVE TO
no*-re ato)E
no*-re ato)G Hno*-re ato);I
$itera$
"os atos contenios en e$ ca*po no*-re ato)E o en e$ $itera$ son *ovios a$ ca*po no*-re
atos)G. Despu,s e rea$i%arse esta operaci/n e *over< $os os ca*pos contenr4n $os *is*os atos.
EM
Si a continuaci/n e $a c$4usu$a TO especifica*os *as e un ca*po< e$ contenio e$ ca*po
no*-re ato)E se *ueva a toos e$$os.
2ormas para su utili>aci#n

En $a transferencia e un ca*po e$e*enta$ a otro e$e*enta$ se pueen presentar $os os
casos siguientes.
E) Movi*iento e un ca*po nu*,rico a otro nu*,rico 0no e eici/n o e eici/n1.
En este caso $os ca*pos origen 8 receptor se a$inean por e$ punto eci*a$. Si e$
ta*aPo e$ ca*po receptor es *enor #ue e$ ta*aPo e$ ca*po e*isor< se prouce
un trunca*iento e $a parte entera 8Ao eci*a$. En caso contrario< se re$$ena con
ceros no significativos cua$#uiera e $as partes.
En caso e #ue e$ ca*po receptor sea e eici/n< se siguen $as *is*as reg$as
e:puestas para $a c$4usu$a PICTURE.
G) Movi*iento e un ca*po e cua$#uier tipo a otro e tipo a$fa-,tico o a$fanu*,rico. 0No
e eici/n o e eici/n1.
En este caso e$ contenio e$ ca*po e*isor se va co$ocano en e$ ca*po receptor
e i%#uiera a erec7a< e:cepto cuano en e$ ca*po receptor se 7a8a ec$arao $a
c$4usu$a NUSTIFIED RI(T2< en cu8o caso< e$ contenio ser4 co$ocao e erec7a
a i%#uiera.
Si e$ ta*aPo e$ ca*po receptor es *enor #ue e$ ca*po e*isor se prouce
trunca*iento. En caso contrario se re$$ena con espacios en -$anco.
Si e$ ca*po receptor es e eici/n< se siguen $as *is*as reg$as e:puestas para $a
c$4usu$a PICTURE.
En $a transferencia e un ca*po co*puesto se puee rea$i%ar e os for*as9
E) Co*o un ca*po e$e*enta$< cu8a $ongitu es $a su*a e $os ca*pos e$e*enta$es #ue $o
for*an. En este caso e$ ca*po receptor es consierao co*o un ca*po e$e*enta$
a$fanu*,rico.
G) Movieno $os ca*pos e$e*enta$es uno a uno.
For*ato G9
MOVE TO no*-re ato)E no*-re ato)G
CORRESPONDIN(
CORR
Cuano se uti$i%a esta c$4usu$a toos $os ca*pos tienen #ue ser co*puestos.
Uti$i%ano $a c$4usu$a CORR con $a sentencia MOVE< es posi-$e *over un nu*ero varia-$e e
ca*pos e$e*enta$es pertenecientes a no*-re ato)E a no*-re ato)G #ue tengan e$ *is*o no*-re.
"os ca*pos con igua$ no*-re tienen #ue ocupar $a *is*a posici/n 3er4r#uica en a*-os ca*pos
co*puestos.
Si $os ca*pos e$e*enta$es pertenecen a su-grupos e$ ca*po co*puesto< $os no*-res e estos
su-grupos tienen ta*-i,n #ue coinciir en a*-os ca*pos co*puestos.
Sentencia de asignaci#n C"3,-1$
Esta sentencia per*ite asignar a uno o *as ca*pos< e$ va$or e un $itera$ nu*,rico< e otro
ca*po nu*,rico o e una e:presi/n arit*,tica. Su for*ato es e$ siguiente.
COMPUTE HROUNDEDII HROUNDEDI
HON SI.E ERROR HNOT HEND)COMPUTEI ON SI.E ERROR
no*-re ato)E Hno*-re ato)G
no*-re ato);
sentencia)EI sentencia)GI
B $itera$ nu*erico
e:presion arit*etica
E5
Sentencia)E 8 sentencia)G son sentencias no coniciona$es 0sentencias i*perativas1.
"a frase END)COMPUTE so$o puee ser uti$i%aa con $a frase SI.E ERROR.
Opci!n RO%NDED
Esta opci/n< #ue sigue a$ no*-re e$ ca*po #ue e-er4 contener e$ resu$tao< per*ite
reonear ic7o resu$tao. Este reoneo consiste en aPair una unia en $a cifra *enos significativa
a$*acenaa< si $a pri*era eci*a$ truncaa es J o *a8or e J.
Opci!n ON S&'E ERROR
Durante $a e3ecuci/n< se puee ar un resu$tao cu8o nu*ero e cifras enteras supere e$ ta*aPo
e $a parte entera e$ ca*po receptor. Esto prouce un trunca*iento e $as cifras *as significativas e$
resu$tao. "a opci/n ON SI.E ERROR< per*ite to*ar una eter*inaa acci/n< si se prouce este caso<
e3ecutano $a sentencia i*perativa escrita a continuaci/n e $a *is*a. De esta for*a se contro$a
cua$#uier ano*a$=a #ue puea ocurrir en $a e3ecuci/n e una operaci/n arit*,tica. Un e3e*p$o t=pico es
$a ivisi/n por cero.
Por e$ contrario< $a sentencia i*perativa #ue sigue a $a frase NOT ON SI.E ERROR< se e3ecuta<
si urante $a e3ecuci/n e una operaci/n arit*,tica no ocurre ninguna ano*a$=a.
Sentencia A**
Esta sentencia per*ite su*ar os o *as operanos nu*,ricos 8 a$*acenar e$ resu$tao en uno o
varios ca*pos e$e*enta$es.
For*ato E9
ADD HROUNDEDII HON SI.E ERROR
HNOT HEND)ADDI ON SI.E ERROR
no*-re ato)E
Hno*-re ato)G sentencia)EI
sentencia)GI
$itera$ nu*erico
... TO ...
Opci!n (O
Esta opci/n 7ace #ue $os va$ores e $os operanos a su i%#uiera sean aPaios a $os va$ores a
su erec7a. Toos $os operanos tienen #ue ser nu*,ricos.
"a frase END)ADD puee ser so$a*ente uti$i%aa con $a frase SI.E ERROR.
For*ato G9
E6
ADD HROUNDEDII HON SI.E ERROR
HNOT HEND)ADDI ON SI.E ERROR
no*-re ato)E
Hno*-re ato)G sentencia)EI
sentencia)GI
$itera$ nu*erico
... ...
(IVIN(
Opci!n )&*&N)
"a su*a e $os operanos #ue preceen a $a pa$a-ra (IVIN(< pueen ser a$*acenaos en caa
uno e $os ca*pos #ue siguen a ic7a pa$a-ra. "os ca*pos e$e*enta$es #ue est4n a continuaci/n e $a
pa$a-ra (IVIN( pueen ser nu*,ricos o nu*,ricos eitaos.
For*ato ;9
ADD HROUNDEDI HON SI.E ERROR
HNOT HEND)ADDI ON SI.E ERROR
no*-re ato)E no*-re ato)G sentencia)EI
sentencia)GI
CORRESPONDIN(
CORR
TO
"os ca*pos e$e*enta$es e no*-re ato)E< ser4n su*aos a $os ca*pos e igua$ no*-re e
no*-re ato)G. E$ resu$tao #uea a$*acenao en $os ca*pos e$e*enta$es e no*-re ato)G.
Sentencia S-(1.AC1
"a sentencia SU!TRACT es uti$i%aa para restar un ato nu*,rico< o $a su*a e os o *as
atos nu*,ricos< e uno o *as ca*pos e3ano e$ resu$tao en uno o *as ca*pos.
For*ato E9
SU!TRACT FROM ROUNDEDI
no*-re ato)E
Hno*-re ato)G
$itera$
... HON
HNOT
SI.E ERROR
ON HEND)SU!TRACTI SI.E ERROR
sentencia)EI
sentencia)GI
Con este for*ato< toos $os operanos #ue preceen a $a pa$a-ra FROM se su*an 8 e$ tota$ es
restao e no*-re ato)G< a$*acenano e$ resu$tao en e$ *is*o ca*po< 8 repitieno e$ proceso para e$
resto e $os ca*pos #ue siguen a $a pa$a-ra FROM.
For*ato G9
SU!TRACT FROM
no*-re ato)E
$itera$
...
HON HNOT SI.E ERROR ON HEND)SU!TRACTI SI.E ERROR sentencia)EI sentencia)GI
no*-re ato)G
$itera$)G
(IVIN( no*-re ato); HROUNDEDI
Con este for*ato< toos $os operanos #ue preceen a $a pa$a-ra FROM son su*aos 8 e$ tota$<
es restao a$ va$or actua$ e $itera$)G o e no*-re ato)G< a$*acenano e$ resu$tao en $os ca*pos #ue
siguen a $a pa$a-ra (IVIN(.
For*ato ;9
SU!TRACT FROM no*-re ato)E
HON HNOT SI.E ERROR ON HEND)SU!TRACTI SI.E ERROR sentencia)EI sentencia)GI
no*-re ato)G HROUNDEDI
CORRESPONDIN(
CORR
Cuano se uti$i%a este for*ato $os ca*pos e$e*enta$es e no*-re ato)E son restaos e $os
corresponientes ca*pos e$e*enta$es e no*-re ato)G.
Sentencia 3-L1!,L?
EQ
"a sentencia MU"TIP"K es uti$i%aa para *u$tip$icar un ato nu*,rico por otro u otros atos
nu*,ricos 8 e3ar e$ resu$tao en uno o *as ca*pos.
For*ato E9
MU"TIP"K !K ROUNDEDI
no*-re ato)E
Hno*-re ato)G
$itera$
HON
HNOT
SI.E ERROR
ON HEND)MU"TIP"KI SI.E ERROR
sentencia)EI
sentencia)GI
Con este for*ato< e$ operano #ue precee a $a pa$a-ra !K se *u$tip$ica por e$ va$or #ue $a
sigue< a$*acenano e$ resu$tao en no*-re ato)G< 8 repitieno e$ proceso para toos $os ca*pos #ue
siguen a !K.
"a frase END)MU"TIP"K puee ser so$a*ente uti$i%aa con $a frase SI.E ERROR.
For*ato G9
MU"TIP"K !K
no*-re ato)E
$itera$
HON HNOT SI.E ERROR ON HEND)MU"TIP"KI SI.E ERROR sentencia)EI sentencia)GI
no*-re ato)G
$itera$)G
(IVIN( no*-re ato); HROUNDEDI
Con este for*ato< e$ operano $itera$ o no*-re ato)E se *u$tip$ica por $itera$)G o no*-re ato)
G< a$*acenano $os resu$taos en $os ca*pos #ue siguen a $a pa$a-ra (IVIN(.
Sentencia *!V!*$
"a sentencia DIVIDE es uti$i%aa para iviir uno o *as atos nu*,ricos por otro 8 e3ar e$
resu$tao en uno o *as ca*pos.
For*ato E9
DIVIDE
INTO HROUNDEDI HON
ON SI.E ERROR HNOT HEND)DIVIDEI
ERROR SI.E
no*-re ato)E
no*-re ato)G sentencia)EI
sentencia)GI
...
$itera$
Con este for*ato< e$ operano #ue precee a $a pa$a-ra INTO actFa co*o ivisor e$ va$or
actua$ e no*-re ato)G< a$*acenano e$ resu$tao en este *is*o ca*po< 8 repitieno e$ proceso para e$
resto e $os ca*pos #ue siguen a $a pa$a-ra INTO.
"a frase END)DIVIDE puee ser uti$i%aa so$a*ente en e$ caso e #ue se especifi#ue $a frase
SI.E ERROR.
For*ato G9
DIVIDE INTO HROUNDEDI
HON ON SI.E ERROR HNOT HEND)DIVIDEI ERROR SI.E
no*-re ato)E no*-re ato)G
sentencia)EI sentencia)GI
$itera$ $itera$)G
(IVIN( no*-re ato);
Con este for*ato e$ operano $itera$ o no*-re ato)E actFa co*o ivisor e no*-re ato)G o
$itera$)G< a$*acenano e$ resu$tao en $os ca*pos #ue siguen a $a pa$a-ra (IVIN(.
For*ato ;9
G+
DIVIDE !K HROUNDEDI
HON ON SI.E ERROR HNOT HEND)DIVIDEI ERROR SI.E
no*-re ato)E no*-re ato)G
sentencia)EI sentencia)GI
$itera$ $itera$)G
(IVIN( no*-re ato);
Con este for*ato e$ operano $itera$ o no*-re ato)E se ivien por e$ va$or e $itera$)G o
no*-re ato)G< a$*acenano $os resu$taos en $os ca*pos #ue siguen a $a pa$a-ra (IVIN(.
For*ato L9
DIVIDE INTO HROUNDEDI
HON
ON SI.E ERROR HNOT HEND)DIVIDEI
ERROR SI.E
no*-re ato)E no*-re ato)G
sentencia)EI
sentencia)GI
$itera$ $itera$)G
(IVIN( no*-re ato);
REMAINDER no*-re ato)L
Con este for*ato e$ operano $itera$ o no*-re ato)E actFa co*o ivisor e no*-re ato)G o
$itera$)G< a$*acenano e$ va$or en $os ca*pos #ue siguen a $a pa$a-ra (IVIN( 8 e$ resto e $a ivisi/n
en e$ ca*po no*-re ato)L. E$ resto puee ser entero o eci*a$ 8 se ca$cu$a restano e$ ivieno e$
proucto e$ cociente por e$ ivisor. E$ ca$cu$o e$ resto< no se tiene en cuenta e$ reoneo en caso e
#ue se 7a8a especificao $a c$4usu$a ROUNDED.
For*ato J9
DIVIDE !K HROUNDEDI
HON ON SI.E ERROR HNOT HEND)DIVIDEI ERROR SI.E
no*-re ato)E no*-re ato)G
sentencia)EI sentencia)GI
$itera$ $itera$)G
(IVIN( no*-re ato); REMAINDER no*-re ato)L
Con este for*ato e$ operano $itera$ o no*-re ato)E se ivie por e$ va$or actua$ e no*-re
ato)G o $itera$)G< a$*acenano e$ va$or en $os ca*pos #ue siguen a $a pa$a-ra (IVIN( 8 e$ resto e $a
ivisi/n en e$ ca*po no*-re ato)L. E$ resto puee ser entero o eci*a$ 8 se ca$cu$a restano e$
ivieno e$ proucto e$ cociente por e$ ivisor. E$ ca$cu$o e$ resto< no se tiene en cuenta e$ reoneo
en caso e #ue se 7a8a especificao $a c$4usu$a ROUNDED.
Capitulo +
@- Sentencias de control
$'ecuci#n condicional. Sentencia !9
"a sentencia IF to*a una ecisi/n referente a $a acci/n a e3ecutar en un progra*a< -as4nose
en e$ resu$tao< veraero o fa$so< e una conici/n. Su for*ato es9
IF HT2ENI
NETT SENTENCE NETT SENTENCE
E"SE HEND)IFI
conici/n
acci/n)E acci/n)G
"a conici/n viene aa por una e:presi/n e !OO"E.
Si en $a conici/n intervienen operaores e iferentes tipos< $os operaores arit*,ticos tienen
*a8or prioria< espu,s se e3ecutan $os operaores e re$aci/n 8 por u$ti*o $os operaores $/gicos.
"a for*a en #ue se e3ecuta $a sentencia IF es $a siguiente9
Si e$ resu$tao e $a conici/n es veraero< se e3ecutar4 $o inicao por $a acci/n)E.
Si e$ resu$tao e $a conici/n es fa$so< se e3ecutar4 $o inicao por $a acci/n)G.
GE
Si e$ resu$tao e $a conici/n es fa$so< 8 $a c$4usu$a E"SE se 7a o*itio< $a acci/n)E
se ignora.
En cua$#uier caso e $os anterior*ente e:puestos< $a e3ecuci/n continua con $a
siguiente sentencia e3ecuta-$e.
E$ 4*-ito e $a sentencia IF fina$i%a e cua$#uiera e $as for*as siguientes9
E) Por un punto.
G) Por $a c$4usu$a EN#-%+.
Cuano $a acci/n)E o $a acci/n)G est4n for*aas por varias sentencias< so$a*ente $a u$ti*a
fina$i%a con un punto< 8a #ue este inica e$ fina$ e una sentencia IF.
Si se especifica $a frase END)IF no se puee uti$i%ar $a frase NETT SENTENCE.
,ruebas de relaci#n/
E$ for*ato genera$ para for*ar un conici/n e re$aci/n es9
HNOTI
HNOTI
HNOTI
HNOTI
HNOTI
HNOTI
T2AN
T2AN
TO EOUA"
"ESS
(REATER
D
C
B
no*-re ato)E
$itera$
e:pr)arit*etica
IS
no*-re ato)E
$itera$
e:pr)arit*etica
Condiciones combinadas
Una conici/n co*-inaa esta for*aa por un con3unto e coniciones si*p$es unias por $os
operaores OR 8 AND. E$ for*ato es e$ siguiente9
conici/n si*p$e conici/n si*p$e
AND
OR
Ta*-i,n< 7a8 #ue tener presente #ue e$ operaor NOT puee preceer a una conici/n si*p$e o
a una conici/n co*-inaa.
,ruebas de clase
Per*iten sa-er si un ca*po es nu*,rico o a$fa-,tico.
no*-re atos IS HNOTI
NUMERIC
A"P2A!ETIC
,ruebas de signo
Per*iten eter*inar si e$ va$or e un ca*po nu*,rico e una e:presi/n arit*,tica es positivo<
negativo o cero. E$ for*ato genera$ es e$ siguiente9
no*-re atos
e:pr)arit*etica
IS HNOTI
POSITIVE
NE(ATIVE
.ERO
,ruebas de nombre de condici#n
Per*iten pro-ar si un no*-re e conici/n a$ #ue se $e 7a asociao un eter*inao va$or<
coincie con e$ va$or e$ ca*po e atos e$ cua$ epene.
Anidamiento de sentencias !9
"as sentencias IF...T2EN pueen estar aniaas. Esto #uiere ecir #ue co*o acci/n)E o acci/n)
G< e acuero con e$ for*ato< puee escri-irse otra sentencia IF.
GG
$structura !9
"a estructura presentaa a continuaci/n< aparece con -astante frecuencia 8 es por $o #ue $a
a*os un trata*iento por separao. Esta estructura es consecuencia e$ ania*iento e sentencias IF.
IF
E"SE IF
HEND)IFI
E"SE
conici/n)E
sentencias)E
.
.
.
conici/n)G
sentencias)G
.
conici/n); E"SE IF
.
.
sentencias);
sentencias)n
.
.
Si se cu*p$e $a conici/n)E< se e3ecutan $as sentencias)E 8 si no se cu*p$en se e:a*inan
secuencia$*ente $as coniciones siguientes 7asta E"SE< e3ecut4nose $as sentencias corresponientes a$
pri*er E"SE IF< cu8a e:presi/n sea cierta. Si toas $as e:presiones son fa$sas< se e3ecutan $as sentencias)
n corresponientes a$ u$ti*o E"SE. En cua$#uier caso< se continua con $a siguiente sentencia en $a
estructura.
Llamada a procedimientos Sentencia ,$.9".3
"a sentencia PERFORM es uti$i%aa para transferir e:p$=cita*ente e$ contro$ a uno o *as
procei*ientos 8 evo$ver e$ contro$ i*p$=cita*ente< cuano $a e3ecuci/n e$ procei*iento
especificao< fina$ice.
"a sentencia PERFORM se puee uti$i%ar para contro$ar $a e3ecuci/n e una o *as sentencias<
$as cua$es est4n entro e$ 4*-ito e $a sentencia PERFORM.
For*ato E9
PERFORM procei*iento)E HT2RU procei*iento)GI
Si no se especifica $a sentencia T2RU< $a sentencia PERFORM e3ecuta una ve%< e$ con3unto e
sentencias #ue for*an e$ procei*iento)E. Si $a opci/n T2RU se especifica< entonces se e3ecutan< una
ve% toos $os procei*ientos e:istentes en e$ progra*a entre procei*iento)E 8 procei*iento)G< a*-os
inc$usive.
For*ato G9
PERFORM HT2RU TIMES procei*iento)E procei*iento)GI
entero
no*-re atos
Si no se especifica $a opci/n T2RU< $a sentencia PERFORM e3ecuta e$ nu*ero e veces
especificao por entero o por un no*-re e atos< $e con3unto e sentencias #ue for*an procei*iento)
E. Si $a opci/n T2RU se especifica< entonces se e3ecutan e$ nu*ero e veces especificao< toos $os
procei*ientos e:istentes en e$ progra*a entre procei*iento)E 8 procei*iento)G< a*-os inc$usive.
For*ato ;9
PERFORM TIMES END)PERFORM
entero
no*-re atos
VsentenciaW.....
Cuano se e*p$ea este for*ato< $a sentencia PERFORM e3ecuta e$ nu*ero e veces
especificao por entero o por no*-re e atos< e$ con3unto e sentencias #ue 7a8 entre PERFORM 8
G;
END)PERFORM. Un punto< co*o fina$ e a$guna e $as sentencias e esta estructura< ar=a $ugar a un
error< 8a #ue se entener=a co*o fina$ e $a sentencia PERFORM.
For*ato L9
PERFORM HT2RU &IT2 TEST
AFTER
!EFORE
UNTI"
procei*iento)E procei*iento)GI
conici/n
Si no se especifica $a opci/n T2RU< $a sentencia PERFORM e3ecuta e$ con3unto e sentencias
#ue for*an e$ procei*iento)E 7asta #ue $a conici/n sea vera. Si $a opci/n T2RU se especifica<
entonces se e3ecutan< 7asta #ue $a conici/n sea vera< toos $os procei*ientos e:istentes en e$
progra*a entre procei*iento)E 8 procei*iento)G< a*-os inc$usive.
"a e3ecuci/n< si no se 7a especificao $a opci/n &IT2 TEST< se rea$i%a e $a for*a siguiente9
E) Se eva$Fa $a conici/n. Si es cierta< se a por fina$i%aa $a e3ecuci/n e $a
sentencia PERFORM 8 se pasa a $a sentencia siguiente en e$ progra*a< si
es fa$sa se pasa a$ punto G.
G) Se e3ecuta e$ procei*iento)E 7asta e$ procei*iento)G< si 7a sio especificao< 8
se vue$ve a$ punto E.
"a opci/n TEST !EFORE< eva$Fa $a conici/n antes e $a e3ecuci/n< esto #uiere ecir #ue $a
e3ecuci/n se efectuara + o *as veces. Es $a opci/n por efecto.
"a opci/n TEST AFTER< eva$Fa $a conici/n espu,s e $a e3ecuci/n< esto #uiere ecir #ue $a
e3ecuci/n se efectuara una o *as veces.
For*ato J9
PERFORM &IT2 TEST
AFTER
!EFORE
UNTI"
END)PERFORM
VsentenciaW
conici/n
...
Cuano se e*p$ea este for*ato< $a sentencia PERFORM e3ecuta e$ con3unto e sentencias #ue
7a8 entre PERFORM 8 END)PERFORM 7asta #ue $a conici/n sea vera. Un punto< co*o fina$ e
a$guna e $as sentencias e esta estructura< ar=a $ugar a un error< 8a #ue se entener=a co*o fina$ e $a
sentencia PERFORM.
For*ato M9
PERFORM &IT2 TEST
!EFORE
AFTER
HT2RU procei*iento)E procei*iento)GI
VARKIN( FROM !K
UNTI"
no*-re inice)E
no*-re ato)E
$itera$
no*-re ato)G
no*-re inice)G no*-re inice);
no*-re ato);
conici/n

"a e3ecuci/n< si no se 7a especificao $a opci/n TEST AFTER< se rea$i%a e $a for*a siguiente9
E) E$ no*-re ato)E se inicia$i%a a$ va$or especificao por $itera$ o no*-re ato)G
#ue sigue a FROM.
G) Se eva$Fa $a conici/n. Si es cierta< se a por fina$i%aa $a e3ecuci/n e $a
sentencia PERFORM 8 se pasa a $a sentencia siguiente en e$ progra*a. Si
es fa$sa se pasa a$ punto ;.
;) Se e3ecuta e$ procei*iento)E 7asta e$ procei*iento)G< si 7a sio especificao.
L) Se su*a a no*-re ato)E e$ va$or especificao por no*-re ato); #ue sigue a
!K< 8 se vue$ve a$ punto G.
GL
For*ato 59
PERFORM &IT2 TEST
!EFORE
AFTER
VARKIN( FROM
!K UNTI"
no*-re inice)E
no*-re ato)E
$itera$
no*-re ato)G
no*-re inice)G
no*-re inice);
no*-re ato);
conici/n VsentenciaW ... END)PERFORM
"a e3ecuci/n< si no se 7a especificao $a opci/n TEST AFTER< se rea$i%a e $a for*a siguiente9
E) E$ no*-re ato)E se inicia$i%a a$ va$or especificao por $itera$ o no*-re ato)G
#ue sigue a FROM.
G) Se eva$Fa $a conici/n. Si es cierta< se a por fina$i%aa $a e3ecuci/n e $a
sentencia PERFORM 8 se pasa a $a sentencia siguiente en e$ progra*a. Si
es fa$sa se pasa a$ punto ;.
;) Se e3ecutan $as sentencias entre PERFORM 8 END)PERFORM.
L) Se su*a a no*-re ato)E e$ va$or especificao por no*-re ato); #ue sigue a
!K< 8 se vue$ve a$ punto G.
For*ato 69
PERFORM &IT2 TEST
!EFORE
AFTER
HT2RU procei*iento)E procei*iento)GI
VARKIN( FROM !K
UNTI"
no*-re inice)E
no*-re ato)E
$itera$
no*-re ato)G
no*-re inice)G no*-re inice);
no*-re ato);
conici/n)E
AFTER FROM !K
no*-re inice)L
no*-re ato)L
$itera$)G
no*-re ato)J
no*-re inice)J no*-re inice)M
no*-re ato)M
UNTI" conici/n)G
"a e3ecuci/n< si no se 7a especificao $a opci/n TEST AFTER< se rea$i%a e $a for*a siguiente9
E) E$ no*-re ato)E 8 e$ no*-re ato)L se inicia$i%an a $os va$ores respectivos #ue
siguen a caa FROM.
G) Se eva$Fa $a conici/n)E. Si es cierta< se a por fina$i%aa $a e3ecuci/n e $a
sentencia PERFORM 8 se pasa a $a sentencia siguiente en e$ progra*a. Si
es fa$sa se pasa a$ punto ;.
;) Se eva$Fa $a conici/n)G. Si es cierta< e$ no*-re ato)L se inicia$i%a a$ va$or
especificao por $itera$)G o no*-re ato)L #ue sigue a FROM< ta*-i,n se
su*a a no*-re ato)E e$ va$or especificao por no*-re ato); #ue sigue a
!K 8 se continua en e$ punto G. Si es fa$sa se pasa a$ punto L.
L) Se e3ecutan $as sentencias entre procei*iento)E 8 procei*iento)G< si 7a sio
especificao.
J) Se su*a a no*-re ato)L e$ va$or especificao por no*-re ato)M #ue sigue a
!K< 8 se vue$ve a$ punto ;.
"os no*-res ato 8Ao pueen ser enteros o rea$es< positivos o negativos 8 cero e:cepto $os
no*-res e =nice #ue e-en ser enteros.
Anidamiento de sentencias ,$.9".3
Dentro e$ 4*-ito e una sentencia PERFORM< puee especificarse otra sentencia PERFORM<
aun#ue 7a8 #ue tener presentes $as siguientes reg$as9
GJ
E) E$ procei*iento PERFORM e3ecutao ese e$ 4*-ito e otro PERFORM e-e
ser tota$*ente e:terior o tota$*ente interior a este.
G) "os 4*-itos e os PERFORM se pueen so$apar cuano $as sentencias e
$$a*aa para su e3ecuci/n est4n fuera e estos 4*-itos.
;) "as sentencias PERFORM pueen ser aniaas $i-re*ente.
L) Un procei*iento PERFORM puee $$a*arse asi*is*o< esto es< $a recursivia
esta per*itia.
Sentencia $A!1
Esta sentencia se uti$i%a co*o co*p$e*ento e $a sentencia PERFORM< para proporcionar un
punto fina$ para uno o *as procei*ientos< a fin e per*itir $a sa$ia ese cua$#uier punto.
For*ato9 ETIT
"a sentencia ETIT for*a por si so$a un p4rrafo ientificao por un no*-re.
Sentencia de bifurcaci#n +"
Esta sentencia per*ite transferir e$ contro$ ese un punto e $a ivisi/n PROCEDURE a otro.
For*ato E9
(O TO Hno*-re procei*ientoI
Se puee o*itir $a escritura e$ no*-re e procei*iento uti$i%ano $a sentencia (O TO en
co*-inaci/n con $a sentencia A"TER< especificano en esta u$ti*a e$ no*-re e$ procei*iento a$ #ue
se e-e -ifurcar.
For*ato G9
(O TO no*-re procei*iento)E Hno*-re procei*iento)GI... DEPENDIN( ON no*-re atos
Sentencia AL1$.
Esta sentencia per*ite *oificar e$ punto a$ cua$ 7a e -ifurcar una sentencia (O. Su for*ato
es e$ siguiente9
A"TER no*-re procei*iento)E TO HPROCEED TOI no*-re procei*iento)G
Hno*-re procei*iento); TO HPROCEED TOI no*-re procei*iento)LI ...
Sentencia S1",
Esta sentencia per*ite suspener te*pora$ o efinitiva*ente $a e3ecuci/n e un progra*a.
STOP
RUN
$itera$
"a sentencia STOP RUN ter*ina e$ progra*a 8 evue$ve e$ contro$ a$ siste*a operativo. Por
eso es $a u$ti*a sentencia #ue se e3ecuta.
"a sentencia STOP $itera$< suspene $a e3ecuci/n e$ progra*a 8 env=a e$ $itera$ especificao a
$a panta$$a. A continuaci/n e$ operaor puee continuar $a e3ecuci/n e$ progra*a o -ien etener $a
*is*a.
Capitulo ,
B- Cadenas de caracteres
!ntroducci#n
Una caena e caracteres es un $itera$ no nu*,rico esto es< una secuencia e caracteres 0en
nuestro caso ASCII1 encerraos entre co*i$$as si*p$es o o-$es.
GM
Sentencia $AA3!2$
Esta sentencia cuenta e$ nu*ero e ocurrencias e un car4cter ao en un ca*po e atos 8 si
es preciso< este car4cter puee ser ree*p$a%ao por otro.
For*ato E9
ETAMINE TA""KIN(
UNTI" FIRST
A""
"EADIN(
HREP"ACIN( !K
no*-re ato car4cter)E
car4cter)GI
Este for*ato per*ite e:a*inar 8Ao ree*p$a%ar caracteres en un ca*po e atos.
For*ato G9
ETAMINE
UNTI"
FIRST
A""
"EADIN(
REP"ACIN( !K no*-re ato car4cter); car4cter)L
FIRST
Este otro for*ato per*ite so$o ree*p$a%ar caracteres en un ca*po e atos.
E$ ca*po eno*inao por no*-re ato tiene #ue ser un ca*po e caracteres.
Car4cter representa un Fnico car4cter. Si e$ ca*po es nu*,rico e$ car4cter e-e ser un =gito
nu*,rico 0+ a Q1< un =gito e$ + a$ Q no nu*,rico 0Y+Z a YQZ1 o $a constante figurativa .ERO. Si e$
ca*po no es nu*,rico< e$ car4cter puee ser nu*,rico< no nu*,rico o cua$#uier constante figurativa
e:cepto A"".
"a opci/n TA""KIN( crea auto*4tica*ente un ca*po entero eno*inao TA""K #ue actFa
co*o contaor. "a cuenta representa e$ nu*ero e9
E) Caracteres iferentes e$ car4cter)E 7asta $a aparici/n e$ car4cter igua$ a
car4cter)E 0UNTI" FIRST1.
G) Veces #ue se repite e$ car4cter)E en e$ ca*po no*-re ato 0A""1.
;) Veces #ue aparece e$ car4cter)E antes e encontrar uno istinto a e$ 0"EADIN(1.
Cuano se uti$i%a $a opci/n REP"ACIN(< $as reg$as e sustituci/n son $as siguientes9
E) E$ car4cter)E o e$ car4cter); #uea sustituio por e$ car4cter)G o por e$ car4cter)L
0A""1.
G) "a sustituci/n por car4cter)G o car4cter)L ter*ina cuano aparece un car4cter
istinto a$ car4cter)E o car4cter); 0"EADIN(1.
;) E$ pri*er car4cter o car4cter); #ue apare%ca es sustituio por e$ car4cter)G o
car4cter)L 0FIRST1.
L) "a sustituci/n por car4cter)G o por car4cter)L fina$i%a cuano aparece un
car4cter)E o car4cter);< o cuano se $$ega a$ fina$ e$ ca*po 0UNTI" FIRST1.
Sentencia 1.A2S9".3
Esta sentencia per*ite a$terar toos o parte e $os caracteres e un ca*po e acuero con una
reg$a e transfor*aci/n.
For*ato9
TRANSFORM no*-re ato)E C2ARACTERS FROM ato)E TO ato)G.
Dato)E 8 ato)G representan una constante figurativa< un $itera$ no nu*,rico o un no*-re e
ato. Por $o tanto< e:isten nueve posi-$es co*-inaciones #ue eter*inan otras tantas reg$as e
transfor*aci/n. A*-os ser4n e $a *is*a $ongitu o nu*ero e caracteres.
No*-re ato)E e-e ser un ca*po e$e*enta$ no nu*,rico o un ca*po co*puesto.
G5
Sentencia !2S,$C1
Esta sentencia per*ite contar< ree*p$a%ar< o contar 8 ree*p$a%ar ocurrencias e caracteres
si*p$es o grupos e caracteres en un ca*po e atos.
For*ato E9
INSPECT TA""KIN( FOR C2ARACTERS
!EFORE
AFTER
INITIA"
no*-re ato)E no*-re ato)G
no*-re ato)L
$itera$)G
...
For*ato G9
INSPECT TA""KIN(
FOR
!EFORE
AFTER
INITIA"
no*-re ato)E no*-re ato)G
no*-re ato)L
...
A""
"EADIN(
no*-re atos);
$itera$)E
...
For*ato ;9
INSPECT TA""KIN( C2ARACTERS
!EFORE
AFTER
INITIA"
no*-re ato)E no*-re ato)G
no*-re ato)L
$itera$)G
...
REP"ACIN(
!K
no*-re ato)J
$itera$);
For*ato L9
INSPECT
!EFORE
AFTER
INITIA"
no*-re ato)E
no*-re ato)L
$itera$)G
...
REP"ACIN(
A""
"EADIN(
FIRST
no*-re ato);
$itera$)E
!K
no*-re ato)J
$itera$);
...
For*ato J9
INSPECT TA""KIN( FOR no*-re ato)E no*-re ato)G Vopciones contarW
REP"ACIN( Vopciones ree*p$a%arW
For*ato M9
INSPECT CONVERTIN(
!EFORE
AFTER
INITIA"
no*-re ato)E
no*-re ato)L
$itera$)G
...
TO
no*-re ato)5
$itera$)J
no*-re ato)M
$itera$)L
No*-re ato)E es e$ ca*po a e:a*inar. Puee ser un ca*po e$e*enta$ o un ca*po co*puesto.
No*-re ato)G es un ca*po nu*,rico e$e*enta$ #ue se uti$i%a co*o contaor.
G6
No*-re ato); ... No*-re ato)5 se refieren a un ca*po e$e*enta$ nu*,rico o no nu*,rico.
"os $itera$)E<...<$itera$)J 8 $os ca*pos eno*inaos por no*-re ato);<..< no*-re ato)5<
pueen tener cua$#uier nu*ero e caracteres.
TA""KIN( inica #ue 7a8 #ue contar e$ nu*ero e veces #ue aparece $a caena e caracteres
esignaa por no*-re ato);. "a cuenta se $$eva en no*-re ato)G.
C2ARACTERS inica #ue 7a8 #ue contar toos $os caracteres e$ ca*po eno*inao por
no*-re ato)E.
A"" inica #ue 7a8 #ue contar toas $as inciencias.
"EADIN( inica #ue 7a8 #ue contar so$o $as pri*eras ocurrencias contiguas.
!EFORE INITIA" inica #ue e$ conteo se e-e interru*pir espu,s e $a pri*era ocurrencia
esignaa por no*-re ato)L.
AFTER INITIA" inica #ue e$ conteo e-e co*en%ar espu,s e $a pri*era ocurrencia
esignaa por no*-re ato)L.
REP"ACIN( inica #ue e$ ca*po eno*inao por no*-re ato)E< 7a8 #ue ree*p$a%ar a$gunos
o toos $os caracteres por otros espec=ficos en $a sentencia INSPECT. "as opciones #ue se pueen
especificar con REP"ACIN( son $as *is*as #ue se 7an especificao para TA""KIN( 8 tienen e$
*is*o significao< si pensa*os en #ue 7a8 #ue ree*p$a%ar en $ugar e contar. Aparece una opci/n *as
#ue es FIRST.
FIRST inica #ue so$o se ree*p$a%a $a pri*era ocurrencia e$ ca*po eno*inao no*-re ato)
E.
CONVERTIN( inica #ue 7a8 #ue convertir caa car4cter e una caena e caracteres a $os
corresponientes caracteres e otra. A*-as caenas e-en tener $a *is*a $ongitu.
Sentencia S1.!2+
Esta sentencia per*ite en$a%ar 0concatenar1 e$ contenio tota$ o parcia$ e os o *as ca*pos<
a$*acenar$o e$ resu$tao en un so$o ca*po.
For*ato9
STRIN( DE"IMITED !K
SI.E
INTO
H&IT2 POINTER
HON OVERF"O&
ON OVERF"O& HNOT
HEND)STRIN(I
no*-re ato)E no*-re ato)G
no*-re ato);
no*-re ato)LI
sentencia)EI
sentencia)GI
$itera$)E
$itera$)G ... ...
No*-re ato)E o $itera$)E< representan $as caenas #ue esea*os en$a%ar 8 no*-re ato);
inica e$ ca*po one se a$*acenar4 e$ resu$tao. Este ca*po no e-e contener s=*-o$os e eici/n.
"os ca*pos e*isores 8 receptores no e-en ser nu*,ricos.
"os ca*pos uti$i%aos co*o e$i*itaores 0DE"IMITED !K no*-re ato)G1< son ca*pos
e$e*enta$es no nu*,ricos #ue inican 7asta #ue car4cter 7a8 #ue *over< e:c$uio este.
GQ
"a opci/n SI.E inica #ue< e$ nu*ero e caracteres #ue tienen #ue ser transferios es co*o
*uc7o igua$ a$ ta*aPo e$ ca*po receptor.
Caa $itera$ puee ser un $itera$ no nu*,rico o una constante figurativa e:cepto A"".
"a opci/n POINTER per*ite especificar por *eio e$ ca*po no*-re ato)L. "a posici/n en $a
#ue va a ser a$*acenao e$ pri*er car4cter transferio. Este va$or por efecto es E 8 es incre*entao en
E por caa car4cter transferio.
Si e$ va$or no*-re ato)L es *enor #ue E o to*a un va$or *a8or #ue e$ ta*aPo e$ ca*po
receptor< $a transferencia e caracteres a este ca*po se interru*pe 8 se e3ecuta $a sentencia)E< si se 7a
especificao $a opci/n ON OVERF"O&. En otro caso< $a transferencia se rea$i%a tota$*ente 8 se e3ecuta
$a sentencia)G< si se 7a especificao $a opci/n NOT ON OVERF"O&.
Sentencia -2S1.!2+
Esta sentencia per*ite iviir e$ contenio e un ca*po en varios ca*pos.
UNSTRIN(
HDE"IMITER
HA""I OR HA""I DE"IMITED
INTO
HCOUNT
IN
HON
OVERF"O&
OVERF"O&
ON HNOT
HTA""KIN(
IN
HEND)UNSTRIN(I
POINTER H&IT2
!K
IN
no*-re ato)E
no*-re ato)G no*-re ato);
Vno*-re ato)L no*-re ato)JI
no*-re ato)MIW
no*-re ato)5I
no*-re ato)6I
$itera$)E $itera$)G
sentencia)EI
sentencia)GI
No*-re ato)E inica $a caena #ue 7a8 #ue separar. E$ resu$tao se a$*acena en e$ ca*po o
$os ca*pos representaos en no*-re ca*po)L.
"os ca*pos uti$i%aos co*o e$i*itaores 0DE"IMITED1< son ca*pos e$e*enta$es
a$fanu*,ricos #ue inican por one 7a8 #ue separar e$ ca*po eno*inao por no*-re ato)E. Si se
uti$i%a $a c$4usu$a A""< $as posi-$es ocurrencias consecutivas inicaas por estos ca*pos< se trataran
co*o si fuese una Fnica ocurrencia.
Caa $itera$ puee ser un $itera$ no nu*,rico o una constante figurativa e:cepto A"".
Si se especifica $a opci/n DE"IMITER IN< $os caracteres e$i*itaores son trataos co*o atos
a$fanu*,ricos e$e*enta$es 8 a$*acenaos en $os ca*pos referenciaos por no*-re ato)J.
Si se especifica $a opci/n COUNT IN< e$ va$or corresponiente a$ nu*ero e caracteres
e:a*inaos< e:c$u8eno $os e$i*itaores< es a$*acenao en e$ ca*po referenciao por no*-re ato)M.
DE"IMITER 8 COUNT so$a*ente pueen uti$i%arse si se 7a especificao $a opci/n
DE"IMITED !K.
Si se especifica $a opci/n POINTER $a caena ientificaa por no*-re ato)E es e:a*inaa a
partir e $a posici/n especificaa por e$ ca*po no*-re ato)5. Esta posici/n por efecto es E. Esta
ca*po es incre*entao auto*4tica*ente en una unia por caa car4cter e:a*inao.
Si se especifica $a opci/n TA""KIN(< e$ va$or corresponiente a$ nu*ero e ca*pos receptores
activaos urante $a e3ecuci/n e una sentencia UNSTRIN(< es a$*acenao en no*-re ato)6.
;+
Si se especifica $a opci/n OVERF"O& 8 e$ va$or e$ ca*po no*-re ato)5 es *enor #ue E o
*a8or #ue e$ ta*aPo e $a %ona e*isora< o -ien toos $os ca*pos receptores se 7an activao 8 aun
#uean caracteres por e:a*inar en e$ ca*po e*isor< $a sentencia)E se e3ecuta. Si no se a una conici/n
OVERF"O& 8 se 7a especificao $a sentencia NOT ON OVERF"O& entonces se e3ecuta $a sentencia)
G.
"a c$4usu$a END)UNSTRIN( e$i*ita e$ 4*-ito e esta sentencia.
Capitulo -
C- 3anipulaci#n de tablas
!ntroducci#n
Una ta-$a es un con3unto e e$e*entos e$ *is*o tipo< #ue co*parten en co*Fn un no*-re
co*Fn pero #ue son istingui-$es por $a posici/n #ue ocupa caa uno e e$$os en $a ta-$a. Caa e$e*ento
e $a ta-$a puee contener un ato nu*,rico o una caena e caracteres o una co*-inaci/n e a*-os.
"a representaci/n e una ta-$a se 7ace *eiante varia-$es suscritas o e su-=nices 8 puee tener una o
varias i*ensiones.
*escripci#n de una tabla
"a escripci/n e una ta-$a se 7ace en $a secci/n FI"E 8 en $a secci/n &OR'IN()STORA(E
uti$i%ano $a c$4usu$a OCCURS.
Cl=usula "CC-.S
Dec$ara una estructura e atos eno*inaa ta-$a. Su for*ato es e$ siguiente9
OCCURS TOI TIMES HDEPENDIN( ON
ASCENDIN(
DESCENDIN(
'EK IS
HINDETED !K
Hentero)E entero)G no*-re ato)EI
no*-re ato)G Hno*-re ato);I
inice)E Hinice)GI ... I
... ...
"a c$4usu$a OCCURS no puee especificarse en una escripci/n e nive$ +E< 55< 66 o MM.
Entero inica e$ nu*ero e veces #ue se repite un ca*po con $a *is*a escripci/n.
Cuano e$ nu*ero e veces #ue se repite e$ ca*po con $a *is*a escripci/n es varia-$e< se
e*p$ea $a especificaci/n entero- TO entero-! one e$ va$or e entero)E es *enor #ue e$ va$or e
entero)G.
Cuano se especifica $a c$4usu$a DEPENDIN(< es para inicar e$ nu*ero e veces #ue se repite
e$ ca*po con $a *is*a escripci/n es varia-$e 8 epene e$ ca*po no*-rao por no*-re ato)E.
"as c$4usu$as ASCENDIN( o DESCENDIN(< inican si $os e$e*entos e $a ta-$a estan
orenaos ascenente*ente o escenente*ente por uno o *as ca*pos eno*inaos por no*-re ato)G
8 no*-re ato); ...< #ue for*en parte e ic7os e$e*entos.
"a c$4usu$a INDETED se uti$i%a para especificar e$ no*-re e =nice o =nices< cuano en una
ta-$a orenaa se rea$i%a una -Fs#uea -inaria.
Sentencia S$1
Per*ite transferir e$ va$or e un $itera$< no*-re e atos o e un =nice a uno *as
ientificaores.
For*ato E9
;E
SET TO
inice)E Hinice)GI inice);
no*-re ato)E Hno*-re ato)GI
no*-re ato);
entero
Cuano se e3ecuta esta sentencia e$ va$or e$ operano #ue sigue a TO es transferio a $os
operanos #ue siguen a SET.
For*ato G
9
SET
UP !K
!K DO&N
inice)E Hinice)GI
no*-re ato
entero
...
Este for*ato per*ite ir incre*entano 0UP !K1 o ecre*entano 0DO&N !K1 e$ =nice o
=nices en e$ va$or especificao por no*-re ato o entero.
Cl=usula -SA+$ !2*$A
Esta c$4usu$a ec$ara un ca*po un ca*po para ser uti$i%ao co*o un =nice.
HUSA(E ISI INDET
Un ca*po e =nice so$o puee ser referenciao por $a sentencias SET 8 SEARC2.
(DSE-$*A S$C-$2C!AL Sentencia S$A.CH
Esta sentencia per*ite rea$i%ar una -Fs#uea secuencia$ entre $os e$e*entos e una ta-$a 7asta
#ue e$ contenio e uno e e$$os satisfaga una eter*inaa conici/n.
SEARC2 VARKIN( HAT END
&2EN
NETT SENTENCE
HEND)SEARC2I
no*-re ato)E
no*-re ato)G
sentencia)EI
sentencia)G
sentencia);
conici/n)E conici/n)G
inice)E
NETT SENTENCE
&2EN
No*-re ato)E se refiere a$ e$e*ento e $a ta-$a< por $o tanto< su escripci/n e-e contener una
c$4usu$a OCCURS *as $a c$4usu$a INDETED !K. Puee ser ta*-i,n un ca*po su-orinao a otro #ue
contenga una c$4usu$a OCCURS.
Cuano se especifica no*-re ato)G e-e ser escrito por *eio e $a c$4usu$a USA(E IS
INDET o co*o un ca*po e$e*enta$ entero. E$ va$or e este ca*po evo$uciona para$e$a*ente a$ =nice
e $a ta-$a 8 se e*p$ea cuano9
a1 Aparte e rea$i%ar $a -Fs#uea e un eter*inao e$e*ento e $a ta-$a se esea
conocer su posici/n.
-1 Se esea incre*entar si*u$t4nea*ente e$ =nice e otra ta-$a iferente a $a ta-$a
en $a #ue se esta rea$i%ano $a -Fs#uea.
"as coniciones e $as c$4usu$as &2EN se eva$Fan en e$ oren en #ue estan escritas.
"as sentencias E< G o ;< son sentencias i*perativas< esto es cua$#uier sentencia no coniciona$.
Una sentencia SEARC2 se e3ecuta e $a for*a siguiente9
E. Se inicia$i%a e$ =nice asociao con no*-re ato)E< por *eio e una sentencia
SET< con un va$or #ue se correspone con e$ nu*ero e e$e*ento e $a ta-$a
one se esee #ue co*ience $a -Fs#uea.
;G
G. Si e$ va$or e$ =nice asociao es *a8or #ue e$ nu*ero e e$e*entos e $a ta-$a<
$a -Fs#uea ter*ina 8 se e3ecuta $a sentencia #ue sigue a $a c$4usu$a AT END< si
esta se 7a especificao.
;. Se eva$Fan $as coniciones e $as c$4usu$as &2EN en e$ oren #ue estan
escritas. Si se satisface a$guna e $as coniciones< $a -Fs#uea ter*ina 8 se
e3ecuta $a sentencia asociaa con $a conici/n satisfec7a. Si no se satisface
ninguna e $as coniciones se incre*enta e$ va$or e va$or e$ =nice asociao
con no*-re ato)E 8 se continua en e$ paso G.
(DSE-$*A (!2A.!A Sentencia S$A.CH ALL
Esta sentencia rea$i%a una -Fs#uea -inaria en una ta-$a.
SEARC2 HAT END
&2EN
NETT SENTENCE
no*-re ato)E sentencia)EI
sentencia)G
conici/n
No*-re ato)E se refiere a$ e$e*ento e $a ta-$a< por $o tanto< su escripci/n e-e contener una
c$4usu$a OCCURS *as $a c$4usu$a INDETED !K 8 ae*4s $a ta-$a e-e estar orenaa por uno o *as
ca*pos pertenecientes a ic7o e$e*ento< cuesti/n #ue inicare*os con $a c$4usu$a ASCENDIN( 'EK o
con $a c$4usu$a DESCENDIN( 'EK.
Capitulo .
F- 9!CH$."S *$ $21.A*A ? SAL!*A
9ichero/
Un fic7ero es una co$ecci/n e infor*aci/n #ue a$*acena*os en un soporte para poer
*anipu$ar$a en cua$#uier *o*ento. Esta infor*aci/n se a$*acena co*o un con3unto e registros<
contenieno toos e$$os genera$*ente $os *is*os ca*pos. Ca*po e$e*enta$ a$*acena un ato nu*,rico
o e caracteres.
"rgani>aciones b=sicas/
E:isten tres organi%aciones -4sicas e $os registros e un fic7ero< e cu8a co*-inaci/n se
erivan *u$titu e organi%aciones posi-$es. Estas son9
) Secuencia$.
) Re$ativa.
) Secuencia$ Ine:aa.
3odos de acceso/
En cuanto a $os *oos o tipos e acceso< istingui*os os9
) Acceso secuencia$.
) Acceso a$eatorio o irecto.
Se 7a-$a e acceso secuencial cuano se van acceieno a posiciones sucesivas< esto es tras
acceer a $a posici/n N< se accee a $a posici/n N>E< 8 se 7a-$a e acceso aleatorio o directo cuano se
accee irecta*ente a $a posici/n eseaa< sin necesia e acceer a $as posiciones #ue $e preceen.
SegFn e$ tipo e$ tipo e organi%aci/n e*p$eaa para crear un fic7ero e$ *oo e acceso puee
ser9
;;
ORGANIZACIN CREACIN RECUPERACIN
Secuencia$ Secuencia$ Secuencia$
Re$ativa Secuencia$ o a$eatoria Secuencia$ o a$eatoria
Secuencia$ ine:aa Secuencia$ o a$eatoria Secuencia$ o a$eatoria
Secci#n de entrada Salida/
Esta secci/n es opciona$. E$ no*-re e $a *is*a< INPUT)OUTPUT SECTION< e-er4 figurar
cuano se especifi#ue a$guno e sus p4rrafos.
Su For*ato es e$ siguiente9
INPUT-OUTPUT SECTION.
FILE-CONTROL.
{ entrada de control de los ficheros } ...
I-O CONTROL.
{ entrada de control de E/S } ...
,=rrafo 9!L$-C"21."L
Este p4rrafo se uti$i%a para ar un no*-re a caa fic7ero #ue se uti$i%a en e$ progra*a< a$
*is*o tie*po #ue se $e asigna e$ e#uipo perif,rico corresponiente. Ta*-i,n a infor*aci/n acerca e
co*o esta organi%ao e$ fic7ero 8 cua$ es e$ *oo e acceso.
Este p4rrafo esta for*ao e:c$usiva*ente por $as sentencias SE"ECT< e:istieno una por caa
fic7ero #ue se uti$i%a en e$ progra*a. Su for*ato es e$ siguiente9
SELECT OPTION!L" no#$re-fichero-%!SSI&N TO
RESER'E
NO
!LTERN!TE
!RE!S
!RE!
dis(ositi)o
entero-%
OR&!NI*!TIONIS
!CCESS
LOC+
RECOR,
ST!TUS
IS
IS
IS
-O,E
FILE
-O,E
+E. IS
#odo-de acceso"
#odo-de cierre"
cla)e"
or/ani0aci1n"
no#$re-de-dato"
"a pa$a-ra OPTIONA"< puee ser so$a*ente especificaa con fic7eros a-iertos en *oo
INPUT< I)O o ETTENDED. Su funci/n es inicar #ue e$ fic7ero especificao puee o no estar presente
cuano e$ progra*a se e3ecute.
E$ nombre de fic2ero es e$ no*-re si*-/$ico ao a$ fic7ero. De-e ser Fnico en e$ progra*a.
Cl=usula ASS!+2/
Asigna e$ fic7ero a$ ispositivo f=sico en e$ cua$ ser4 $e=o 8Ao escrito9
;L
!SSI&N
,IS+
+E.2O!R,
,ISPL!.
PRINTER
PRINTER-%
TO no#$re-e3terno-del-fichero"
Nombre e3terno del fic2ero es e$ no*-re rea$ #ue tiene e$ fic7ero -a3o e$ siste*a operativo. Si
este contiene e$ car4cter [)X< se to*ar4 co*o no*-re para ientificar so$a*ente $os caracteres #ue siguen
a$ u$ti*o Y)Z. Para especificar este no*-re puee uti$i%arse un $itera$ o un no*-re e ato.
Cuano un no*-re e ispositivo va seguio e un no*-re e:terno< $a pa$a-ra c$ave #ue
referencia e$ ispositivo se ignora.
DIS' 7ace referencia a #ue e$ fic7ero especificao esta so-re e$ isco *agn,tico. E$ no*-re
si*-/$ico ao a$ fic7ero no tiene por#ue coinciir con e$ no*-re f=sico e$ fic7ero. DIS' sin no*-re
e:terno especifica un fic7ero en isco cu8o no*-re so-re e$ *is*o se especificar4 en $a c$4usu$a VA"UE
OF FI"E)ID. Si esta c$4usu$a se o*ite se asu*e co*o no*-re e:terno< e$ no*-re interno si*-/$ico.
'EK!OARD significa entraa por $a conso$a.
DISP"AK significa sa$ia por $a conso$a.
PRINTER significa sa$ia por $a i*presora principa$ e$ siste*a.
PRINTER)E significa sa$ia por $a i*presora secunaria.
Cl=usula .$S$.V$/
Inica a$ co*pi$aor #ue reserve o no< un nu*ero e 4reas e entraa aiciona$es a$ 4rea e
tra-a3o nor*a$ #ue se re#uiere para a$*acenar un -$o#ue o registro f=sico e$ fic7ero< una ve% $e=o. Esto
puee repercutir en una *a8or ve$ocia e proceso.
Cl=usula ".+A2!ZA1!"2/
Inica e$ tipo e organi%aci/n #ue tienen $o registros e$ fic7ero.
SE4UENTI!L
REL!TI'E
IN,E5E,
OR&!NI*TON IS
SEOUENTIA" se refiere a $a organi%aci/n secuencia$< RE"ATIVE se refiere a $a organi%aci/n
re$ativa e INDETED se refiere a $a organi%aci/n secuencia$ ine:aa.
Si $a c$4usu$a OR(ANI.ATION se o*ite< se asu*e $a organi%aci/n secuencia$.
Cl=usula ACC$SS/
Inica e$ *oo o tipo e acceso #ue se va a uti$i%ar para $eer 8Ao escri-ir $o registros e$ fic7ero.
!CCESS -O,E IS
SE4UENTI!L
R!N,O-
,.N!-IC
E$ *oo e acceso epene e $a organi%aci/n e$ fic7ero.
;J
SEOUENTIA" significa #ue $os registros ser4n acceios secuencia$*ente< RANDOM
significa #ue $os registros pueen ser acceios e una for*a a$eatoria por $a c$ave o por e$ nu*ero
re$ativo e$ registro 8 DINAMIC significa #ue $os registros pueen ser acceios e for*a secuencia$ o
a$eatoria.
Si $a c$4usu$a no se especifica se asu*e e$ acceso secuencia$.
Cl=usula L"C;/
Inica si toos o parte e $os registros e$ fic7ero< pueen o no ser co*partios por otros
procesos.
LOC+
-!NU!L
!UTO-!TIC
RECOR,
RECOR,S
E5CLUSI'E
6IT7 LOC+ ON -ULTIPLE"
-O,E IS
ETC"USIVE especifica #ue e$ fic7ero es e:c$usivo< esto es< no co*parti-$e< 8 MANUA" o
AUTOMATIC especifican #ue e$ fic7ero puee ser co*partio por *as e un proceso.
&IT2 "OC' ON RECORD 7ace referencia a 7acer no co*parti-$e un Fnico registro 8 &IT2
"OC' ON MU"TIP"E RECORDS< 7ace referencia a 7acer no co*parti-$es *F$tip$es registros.
Cl=usula .$C".* ;$?/
Esta c$4usu$a se uti$i%a en fic7eros con organi%aci/n ine:aa< e inica $a c$ave uti$i%aa para
acceer a $os registros e $os *is*os<
RECOR, +E. IS no#$re-de-dato
Nombre de dato inica e$ ca*po a$fanu*,rico e$e*enta$ o co*puesto perteneciente a un
registro e$ fic7ero #ue se uti$i%ar4 co*o c$ave. E$ contenio e este ca*po e-e ser Fnico para caa
registro.
Cl=usula 9!L$ S1A1-S/
Per*ite sa-er e$ estao e un fic7ero espu,s e un operaci/n e EAS.
FILE ST!TUS IS no#$re-de-datos.
Cuano se rea$i%a una operaci/n e EAS so-re e$ fic7ero< e$ siste*a *ueve un va$or a$ ca*po
eno*inao por nombre de datos< #ue inica co*o se 7a rea$i%ao ic7a operaci/n. Este ca*po puee
ser nu*,rico o a$fanu*,rico< e $ongitu e os =gitos.
E$ =gito *as a a$ i%#uiera inica9
+ Operaci/n correcta.
E Fin e fic7ero.
G C$ave inva$ia.
; Error per*anente.
L Error "/gico.
Q Mensa3e e error e$ siste*a.
E$ =gito *as a $a erec7a inica9
+ No 7a8 infor*aci/n isponi-$e.
G C$ave inva$ia en fic7ero ine:ao.
L "a $ongitu e$ registro no es correcta.
J Fic7ero opciona$ referenciao no presente.
5 E$ fic7ero secuencia$ no esta en cinta *agn,tica.
;M
,=rrafo !-" C"21."L
Este p4rrafo per*ite especificar si os o *as fic7eros van a co*partir un 4rea co*Fn e EAS< o
-ien per*ite registrar puntos e contro$< a partir e $os cua$es se puee reanuar $a e3ecuci/n e$
progra*a< tras proucirse una interrupci/n en e$ *is*o. Esto es -ueno< si pensa*os #ue e:iste e$ riesgo
e una interrupci/n accienta$ urante $a e3ecuci/n e un progra*a< 8a #ue per*itir=a reanuar $a
e3ecuci/n e$ *is*o< no ese e$ principio sino ese e$ u$ti*o punto e contro$ gra-ao.
For*ato E9 0fic7eros secuencia$es1
RERUN ON E'ER. EN, OF
REEL
UNIT
S!-E RECOR," !RE! FOR
-ULTIPLE FILE T!PE CONT!INS POSITION
OF
fichero-%
fichero-8"
fichero-9 {fichero-:}...."
{fichero-;
dis(ositi)o
entero-8"}..."...
For*ato G9 0toos $os fic7eros1
RERUN ON E'ER.
S!-E RECOR," !RE! FOR
fichero-%
fichero-9 {fichero-:}...."...
dis(ositi)o
entero-%
RECOR,S OF
CLOC+S-UNITS
fichero-8
"a c$4usu$a )E)(N esta-$ece puntos e contro$ ese $os cua$es se por4 reanuar $a e3ecuci/n
e$ progra*a en caso e ocurrir una interrupci/n accienta$ o provocaa.
Un punto e contro$ es una infor*aci/n e$ estao e$ orenaor en un punto eter*inao e $a
e3ecuci/n e$ progra*a< #ue se gra-a genera$*ente so-re e$ isco 8 #ue per*ite reanuar $a e3ecuci/n
e$ progra*a ese ic7o punto en caso e interrupci/n.
"os puntos e contro$ se gra-an en e$ perif,rico no*-rao por fic2ero- o dispositi4o.
+ic2ero-! especifica e$ fic7ero #ue esta*os procesano.
Si se e*p$ea e$ for*ato E< se gra-a un registro e contro$ caa ve% #ue se $$egue a$ fina$ f=sico
e un vo$u*en.
Si se e*p$ea e$ for*ato G< se gra-a un registro e contro$ caa ve% #ue se 7a8an procesao e
fic2ero-!< entero- registros o -ien caa ve% #ue pasen entero- *inutos.
"a funci/n e $a c$4usu$a 'A&E es inicar #ue os o *as fic7eros co*partir4n e$ *is*o 4rea.
Esta c$4usu$a es Fti$ cuano se ispone e poca *e*oria.
"a c$4usu$a &(LT%PLE +%LE se uti$i%a cuano varios fic7eros est4n contenios en un *is*o
soporte e cinta *agn,tica. Esta c$4usu$a ae*4s e especificar #ue fic7eros est4n contenios< per*ite
inicar $a posici/n re$ativa e ic7os fic7eros en $a cinta.
Secci#n de ficheros/
En $a +%LE 'E$T%ON e-e escri-irse toa $a infor*aci/n e-e escri-irse toa $a infor*aci/n
referente a $os fic7eros uti$i%aos en e$ progra*a.
;5
9* nombre de fichero/
+# es $a a-reviatura e Fi$e Description 8 nombre de fic2ero, es un no*-re creao
corresponiente a$ fic7ero #ue va a escri-irse. E:isten tantas +# co*o fic7eros uti$ice*os en e$
progra*a.
Cl=usula LA($L .$C".*/
Esta c$4usu$a es o-$igatoria e inica si $os registros $$evan o no eti#uetas. "as eti#uetas son unos
registros aiciona$es a $os registros e atos e un fic7ero< situaos a$ principio 8 a$ fina$ e$ *is*o< #ue
sirven para ientificar a$ fic7ero. Estos registros 0eti#uetas1 se generan cuano se accee a un fic7ero
para sa$ia o se $een cuano se accee a un fic7ero para entraa.
E:isten tres posi-i$iaes9
E) O*itir esta ientificaci/n< c$4usu$a OMITTED.
G) Crear eti#uetas est4nar para toos $os fic7eros< generaas por e$ propio siste*a< c$4usu$a
STANDARD.
;) Crear eti#uetas con un for*ato eter*inao. "e eti#ueta seria ientificaa con un no*-re 8
escrita a nive$ +E.
For*ato9
L!2EL
RECOR,
RECOR,S
IS
!RE
ST!N,!R,
O-ITTE,
no#$re-de-datos
"os fic7eros en isco re#uieren eti#uetas< en ca*-io un fic7ero para sa$ia a$ #ue $e 7e*os
asignao $a i*presora no re#uiere eti#uetas.
Cl=usula VAL-$ "9 9!L$-!*/
Esta infor*aci/n es necesaria para $os fic7eros en isco. Inica e$ no*-re e:terno e$ fic7ero<
esto es< e$ no*-re #ue tiene e$ fic7ero #ue se esta escri-ieno< en e$ irectorio corresponiente e$
isco. E$ for*ato para esta c$4usu$a es e$ siguiente9
'!LUE OF FILE-I, IS
no#$re-de-datos
literal
Nombre de datos o literal esignan e$ no*-re e:terno e$ fic7ero.
Esta c$4usu$a no puee especificarse< si en $a c$4usu$a A''%.N se 7a especificao e$ no*-re
e:terno e$ fic7ero.
Cl=usula .$C".*!2+ 3"*$/
Esta c$4usu$a especifica e$ for*ato e$ registro $/gico en $e fic7ero. Su for*ato es e$ siguiente9
RECOR,IN& -O,E IS
FI5E,
'!RI!2LE
+%5E# o si*p$e*ente + especifica #ue toos $os registros son e $a *is*a $ongitu 8
6A)%ABLE o 6 especifica #ue $os registros pueen tener $ongitu varia-$e o fi3a.
;6
Cl=usula (L"C; C"21A!2S/
Esta c$4usu$a especifica e$ nu*ero e registros $/gicos #ue contenios en un registro f=sico o
-$o#ue< o e$ nu*ero e caracteres contenios en un registro f=sico. Su for*ato es e$ siguiente9
2LOC+ CONT!INS TO"
C7!R!CTERS
RECOR,S
entero-% entero-8
Si $os -$o#ues son e $ongitu varia-$e e-e especificarse entero- TO< esto es< e$ ta*aPo e $os
-$o#ue estar4 co*prenio entre $os va$ores entero- 8 entero-!. Si $os va$ores son e $ongitu fi3a< e$
ta*aPo venr4 ao por entero-!.
Esta c$4usu$a se inc$u8e so$a*ente con fic7eros en cintas o iscos *agn,ticos. E$ agrupar $os
registros e un fic7ero en -$o#ues< tiene os o-3etivos funa*enta$*ente9
) Aprovec7ar a$ *4:i*o $os carretes e cinta o $as pistas e$ isco opti*i%ano $os espacios
entre -$o#ues 0IR(1.
) Opti*i%ar $os tie*pos e $ectura 8 gra-aci/n e*p$eaos.
Cl=usula .$C".* C"21A!2S/
Esta c$4usu$a inica e$ ta*aPo o nu*ero e caracteres e$ registro $/gico. Su for*ato es e$
siguiente.
RECOR, CONT!INS entero-% TO" entero-8 C7!R!CTERS
Si $os registros son e $ongitu varia-$e e-e especificarse entero- TO< esto es< e$ ta*aPo e $os
registros estar4 co*prenio entre $os va$ores entero- 8 entero-!. Si $os registros son e $ongitu fi3a< e$
ta*aPo venr4 ao por entero-!.
Esta c$4usu$a< sieno opciona$< es interesante especificar$a 8a #ue e$ va$or ca$cu$ao por e$
co*pi$aor co*o su*a e $os ca*pos especificaos para e$ registro 8 e$ va$or especificao en esta
c$4usu$a no coincien< se nos avisar4 e e$$o a$ fina$ e $a co*pi$aci/n.
Cl=usula *A1A .$C".*/
Esta c$4usu$a per*ite ar un no*-re a caa for*ato istinto e $os registros $/gicos e un
fic7ero. Su for*ato es e$ siguiente9
,!T! RECOR, IS no#$re-de-dato-% no#$re-de-dato-8" ...
Esta c$4usu$a< opciona$< no*-ra a $os registros asociaos a$ fic7ero #ue se esta escri-ieno<
#uiere esto ecir #ue caa no*-re e ato correspone a un nive$ B\.
;Q
Cl=usula L!2A+$/
Per*ite especificar e$ ta*aPo e una p4gina $/gica.
LIN!&E IS
LINES
6IT7 FOOTIN& !T
LINES !T TOP
LINES !T 2OTTO-
no#$re-de-dato-%
entero-%
no#$re-de-dato-8
entero-8
no#$re-de-dato-9
entero-9
no#$re-de-dato-:
entero-:
-ar/en S<(erior
=No#$re-de-datos-9 o entero-9>
C<er(o de la (?/ina
=no#$re-de-datos-% o entero-%>
Pie de (?/ina
=no#$re-de-datos-8 o entero-8>
-ar/en Inferior
=no#$re-de-datos-: o entero-:>
E$ ta*aPo e $a p4gina f=sica es. entero); > entero)E > entero)L. E$ pie e p4gina se inc$u8e en
e$ ta*aPo e $a p4gina $/gica.
Cl=usula C"*$-S$1/
Esta c$4usu$a especifica e$ 3uego e caracteres e*p$eao para representar $os atos so-re
ispositivos e:ternos. So$a*ente puee ser especificao para fic7eros con organi%aci/n secuencia$. Su
for*ato es e$ siguiente9
CO,E-SET IS no#$re alfa$eto
Si no se e*p$ea se asu*e e$ 3uego e caracteres ASCII.
L+
*escripci#n de registros/
Un registro es una estructura 3erar#ui%aa co*puesta por una o *as inscripciones 3erar#ui%aas
0ca*pos1 #ue escri-ire*os e acuero con e$ siguiente for*ato9
n@#ero de ni)el
no#$re de datos
FILLER
RE,EFINES"
2L!N+ 67EN *ERO"
AUSTIFIE, RI&7T"
OCCURS"
PICTURE"
US!&E"
SI&N"
'!LUE".
E$ oren e escritura e estas c$4usu$as puee ser cua$#uiera< e:cepto e $a c$4usu$a
REDEFINES< #ue e-e ser $a pri*era< en e$ caso e especificarse.
E$ no*-re e$ registro $$eva nive$ +E 8 e$ resto e $os ca*pos $$eva un nu*ero e nive$ e +G a
LQ.
Cl=usula VAL-$/
Esta c$4usu$a cuano se uti$i%a en $a escripci/n e un registro en $a secci/n FI"E< es para
asignar un va$or a un ca*po con nive$ 66. Su for*ato es e$ siguiente9
'!LUE
T7ROU&7
T7RU
BB no#$re de condici1n literal-% literal-8
literal-9 literal-:
T7ROU&7
T7RU
...
9!CH$."S S$C-$2C!AL$S/
Crear un fichero secuencial/
E. Especificar $a c$4usu$a 'ELE$T corresponiente a$ fic7ero< entro e$ p4rrafo +%LE-
$ONT)OL. Si es necesario escri-ir ta*-i,n e$ p4rrafo %-O $ONT)OL.
G. Descripci/n e$ fic7ero< esto es< especificaci/n e $a c$4usu$a +# corresponiente a$ fic7ero<
entro e $a +%LE 'E$T%ON.
;. En $a P)O$E#()E #%6%'%ON7
a1 A-rir e$ fic7ero para $a sa$ia 0O(TP(T1 o aiciona$es 0E5TEN#1< uti$i%ano $a
sentencia OPEN.
-1 (ra-ar atos en e$ fic7ero uti$i%ano $a sentencia ,)%TE.
c1 Cerrar e$ fic7ero uti$i%ano $a sentencia $LO'E< una ve% fina$i%ao $as operaciones e
sa$ia.
LE
Cl=usula S$L$C1 para ficheros secuenciales/
SELECT OPTION!L" !SSI&N TO
RESER'E
NO
!LTERN!TE
!RE!
!RE!S
OR&!NI*!TION IS
RECOR,"
LINE
SE4UENTI!L
!CCESS -O,E IS SE4UENTI!L"
no#$re-fichero-% dis(ositi)o
entero-%
LOC+ -O,E IS #odo-de-cierre"
FILE ST!TUS IS no#$re-de-dato"
Si se o*ite $a c$4usu$a O).AN%8AT%ON se asu*e organi%aci/n secuencia$ 8 si se o*ite $a
c$4usu$a A$$E'' se asu*e acceso secuencia$.
"a organi%aci/n )E$O)# 'E9(ENT%AL< se refiere a un fic7ero secuencia$ est4nar. En este<
$a $ongitu e caa registro se especifica por os -8tes #ue preceen a$ propio registro. "a organi%aci/n
L%NE 'E9(ENT%AL< es $a opci/n por efecto< 8 7ace #ue caa registro va8a seguio e un car4cter fin
e $=nea #ue actFa co*o e$i*itaor.
En $a c$4usu$a 'ELE$T ta*-i,n se puee especificar e$ fic7ero co*o un fic7ero en *F$tip$es
carretes e cinta *agn,tica< *eiante $a frase A''%.N TO &(LT%PLE )EEL +%LE nombre-e3terno-del-
fic2ero.
Cl=usula 9* para ficheros secuenciales/
F, no#$re del fichero
L!2EL RECOR,
'!LUE OF FILE-I,"
RECOR,IN& -O,E IS"
2LOC+ CONT!INS"
RECOR, CONT!INS"
,!T! RECOR, IS"
LIN!&E IS"
CO,E-SET IS".
Sentencia ",$2/
"a operaci/n e a-rir un fic7ero< esta-$ece una co*unicaci/n entre e$ 4rea e EAS asociaa a
ese fic7ero 8 e$ ispositivo e:terno #ue $o soporta< co*prue-a $as eti#uetas en $os fic7eros e entraa 8
$as crea para $os fic7eros e sa$ia< 8 sitFa e$ puntero e $ectura)escritura en e$ pri*er registro o a$ fina$
e$ fic7ero epenieno e$ *oo en #ue se 7a8a a-ierto e$ fic7ero.
For*ato E9
OPENINPUT fichero-% RE'ERSE, 6IT7
NO RE6IN,
LOC+
...
For*ato G9
LG
OPENOUTPUT fichero-% RE'ERSE, 6IT7
NO RE6IN,
LOC+
...
For*ato ;9
OPEN I-O {fichero-9 6IT7 LOC+ "}...
For*ato L9
OPEN E5TEN, {fichero-: 6IT7 LOC+ "}...
Si e$ fic7ero esta a$*acenao en un soporte #ue per*ite $a operaci/n e re-o-inar 8 se
especifica $a c$4usu$a )E6E)'E#, $os atos para una sentencia )EA# #uean isponi-$es en oren
inverso< esto es< co*en%ano por e$ u$ti*o. "a c$4usu$a NO )E,%N# 7ace #ue e$ carrete e cinta no se
re-o-ine. Esto puee ser *u8 Fti$ cuano en una cinta 7a8 *F$tip$es fic7eros.
Si se especifica $a frase ,%TH LO$-< e$ efecto es e#uiva$ente a especificar LO$- &O#E
E5$L('%6E en $a sentencia 'ELE$T corresponiente a este fic7ero< esto es< e$ fic7ero no puee ser
co*partio por otros procesos.
Un fic7ero a-ierto en *oo O(TP(T es i*p$=cita*ente un fic7ero no co*parti-$e. Para #ue
*as e un proceso puean co*partir un fic7ero 7a8 #ue a-rir$o en *oo I)O.
Cuano se especifica $a c$4usu$a %NP(T< se a-re e$ fic7ero especificao para $eer. E$ puntero e
$ectura se sitFa en e$ pri*er registro. Si e$ fic7ero no e:iste se prouce un error.
Cuano se especifica $a c$4usu$a O(TP(T< se a-re e$ fic7ero especificao para escri-ir. Si e$
fic7ero #ue se a-re e:iste< se estru8e su contenio actua$ cre4nose as= e nuevo. Si no se e:iste se crea.
Cuano se especifica $a c$4usu$a %-O< se a-re e$ fic7ero especificao para $eer 8 escri-ir. E$
puntero e $ectura)escritura se sitFa en e$ pri*er registro. Si este no e:iste se crea. En este caso una
operaci/n e $ectura ar=a $ugar a una conici/n e fin e fic7ero 8 una operaci/n e escritura ar=a
$ugar a un error. Este *oo no se puee uti$i%ar con una organi%aci/n L%NE 'E9(ENT%AL.
Cuano se especifica $a c$4usu$a E5TEN#< significa #ue se van aPair atos a un fic7ero con
*oo e acceso secuencia$. De esta for*a poe*os aPair *as registros a un fic7ero e:istente. Si e$
fic7ero no e:iste se crea.
Sentencia G.!1$/
Cuano se e3ecuta esta sentencia se efectFa una operaci/n e sa$ia o e escritura e un registro
$/gico con estino a un fic7ero e sa$ia o e entraa)sa$ia. Estas transferencias e infor*aci/n se
7acen a trav,s e$ 4rea e *e*oria asignaa a$ fic7ero aun#ue esta operaci/n es transparente a$ usuario.
L;
6RITE re/istro FRO- no#$re-dato-%"
2EFORE
!FTER
LINES""
LINES""
!,'!NCIN& P!&E
T!2
FOR-FEE,
no#$re-de-dato-8
entero
!T
EN,-OF-P!&E
EOP
sentencia-%
!T
EN,-OF-P!&E
EOP
sentencia-% NOT
EN,-6RITE"
Registro ientifica e$ no*-re e$ registro $/gico #ue se esea escri-ir. Este estar4 ec$arao en
$a +%LE 'E$T%ON o en $a #ATA #%6%'%ON. E$ fic7ero asociao e-e a-rirse en *oo O(TP(T o
E5TEN#E#.
Si se especifica $a opci/n +)O&< pri*ero se *ueve e$ contenio e$ ca*po referenciao por
nombre-de-dato-E a$ ca*po referenciao por registro 8 a continuaci/n se efectFa $a operaci/n e
escri-ir.
"as opciones BE+O)E o A+TE) A#6AN$%N. se ap$ican so$a*ente a fic7eros e sa$ia
i*presos e inican< escri-ir e$ registro antes e 0BE+O)E1 o espu,s e 0A+TE)1 avan%ar< entero o
nombre-de-dato- $=neas< pagina 0PA.E o +O)&+EE#1< o ta-u$aci/n vertica$ 0TA!1.
Nombre mnemnico es un no*-re creao por e$ progra*aor con e$ fin e asociar$o en e$
p4rrafo 'PE$%AL-NA&E' a una pa$a-ra reservaa CO!O".
Si se especifica EN#-O+-PA.E o su e#uiva$ente EOP< e-e especificarse $a c$4usu$a L%NA.E
en $a escripci/n e$ fic7ero 0+#1 en e$ cua$ esta*os escri-ieno. EOP es una conici/n #ue es cierta
cuano se a$can%a e$ fina$ e $a pagina $/gica< en cu8o caso se e3ecuta sentencia-.
'entencia- 8 sentencia-! son sentencias i*perativas< esto es< no coniciona$es.
Cuano en $a escripci/n e un fic7ero se uti$i%a $a c$4usu$a L%NA.E no se puee uti$i%ar
A#6AN$%N. nombre-nemonico.
EN#-,)%TE so$o se puee uti$i%ar con EN#-O+-PA.E 8 sirve para e$i*itar e$ 4*-ito e $a
sentencia ,)%TE.
Si e$ tipo e organi%aci/n es )E$O)# 'E9(ENT%AL 8 en $a sentencia ,)%TE no se uti$i%a $a
opci/n A#6AN$%N.< se asu*e e$ avance auto*4tico e#uiva$ente a 7a-er especificao< BE+O)E
A#6AN$%N. L%NE.
Sentencia CL"S$
Esta sentencia fina$i%a e$ proceso e uno o varios fic7eros.
CLOSE
REEL
UNIT
6IT7
NO RE6IN,
LOC+
...
fichero-%

LL
Caa fic7ero a-ierto por *eio e una sentencia OPEN< e-e ser cerrao por una sentencia
$LO'E -ien cuano fina$i%a e$ progra*a o -ien cuano se esea a-rir$o e *oo iferente. Una
sentencia $LO'E puee cerrar uno o *as fic7eros.
"as opciones )EEL 8 (N%T se uti$i%an con cintas *agn,ticas 8 iscos *agn,ticos
respectiva*ente para inicar #ue $e fic7ero tratao es *u$tivo$u*en.
"a opci/n NO )E,%N# se uti$i%a para anu$ar $a operaci/n e re-o-inao #ue se prouce
nor*a$*ente a$ cerrar un fic7ero contenio en cinta *agn,tica.
"a opci/n ,%TH LO$- 7ace #ue e$ fic7ero cerrao no puea vo$verse a a-rir urante e$ resto
e $a e3ecuci/n e$ proceso en cuesti/n.
Acceso a un fichero secuencial/
Para acceer a un fic7ero secuencia$< $os pasos a seguir son $os siguientes9
E) Especificar $a c$4usu$a 'ELE$T corresponiente a$ fic7ero< entro e$ p4rrafo +%LE-$ONT)OL. Si
es necesario escri-ir ta*-i,n e$ p4rrafo %-O-$ONT)OL.
G) En $a escripci/n e$ fic7ero< esto es < especificaci/n e $a c$4usu$a +# corresponiente a$ fic7ero<
entro e $a +%LE 'E$T%ON.
;) En $a P)O$E#()E #%6%'%ON9
a1 A-rir e$ fic7ero para entraa 0%NP(T1 o para entraa 8 sa$ia 0%-O: uti$i%ano $a sentencia
OPEN.
-1 Uti$i%ar $a sentencia )EA# para $eer $os atos e$ fic7ero.
c1 Cerrar e$ fic7ero uti$i%ano a$ sentencia $LO'E< una ve% fina$i%aas $as operaciones e
entraa)sa$ia.
Para acceer a $os atos e un fic7ero secuencia$< a continuaci/n e 7a-er$o creao< pri*ero se
e-e cerrar e$ *is*o< uti$i%ano $a sentencia $LO'E< 8 espu,s se vue$ve a a-rir para entraa uti$i%ano
$a sentencia OPEN.
Sentencia .$A*/
Cuano se e3ecuta esta sentencia se e3a isponi-$e un registro $/gico en e$ 4rea e entraa< para
ser procesao.
RE!, fichero RECOR, INTO no#$re de dato" 6IT7 NO" LOC+"
!T EN, sentencia-%"
NOT !T EN, sentencia-8"
EN,-RE!,"
+ic2ero es e$ no*-re si*-/$ico e$ fic7ero e$ cua$ se #uiere $eer un registro. Este fic7ero tiene
#ue ser a-ierto en *oo %NP(T o %-O.
Cuano se a-re e$ fic7ero e$ puntero e $ectura)escritura apunta a$ pri*er registro a $eer 8 caa
ve% #ue se e3ecuta una sentencia )EA# se $ee un registro 8 e$ puntero e $ectura)escritura avan%a para
apuntar a$ siguiente registro a $eer.
Si se especifica $a opci/n %NTO< $a sentencia )EA# ae*4s e e3ar isponi-$e un registro
$/gico en e$ 4rea e entraa< esto es< en e$ registro e entraa esta efinio en $a +#< *ueve e$ contenio
e este registro a$ 4rea e atos especificaa por nombre de datos.
"a opci/n %NTO no puee ser uti$i%aa cuano e$ fic7ero contiene registros e varios tipos.
"a frase AT EN# es una conici/n #ue es cierta cuano a$ e3ecutarse una sentencia )EA# se
etecta e$ fina$ e$ fic7ero< en cu8o caso se e3ecuta $a sentencia-. Si $a conici/n resu$ta ser fa$sa<
entonces se e3ecuta< espu,s e 7a-erse rea$i%ao $a operaci/n e $ectura< $a sentencia-!< si $a frase NOT
AT EN# 7a sio especificaa< 8 se pasa a $a sentencia siguiente.
'entencia- ; sentencia-! son sentencias i*perativas< esto es< no coniciona$es.
LJ
Aun#ue $a frase AT EN# sea opciona$< e-e especificarse cuano se accea secuencia$*ente a
$os registros e un fic7ero< para poer etectar cuano se $$ega a$ fina$ e$ *is*o.
EN#-)EA# e$i*ita e$ 4*-ito e $a sentencia )EA# 8 puee ser uti$i%ao so$a*ente con $a
frase %N6AL%# -E*.
En un fic7ero secuencia$ a-ierto en *oo %NP(T< $a sentencia )EA# o )EA# ,%TH LO$- no
puee $eer un registro en *oo e:c$usivo.
En un fic7ero a-ierto en *oo %-O con LO$- &O#E A(TO&AT%$< a *enos #ue se especifi#ue
$a opci/n ,%TH NO LO$-< caa registro en e$ *o*ento e $eerse es e:c$usivo< no co*partio< sieno
$i-erao cuano fina$i%a $a $ectura.
En un fic7ero a-ierto en *oo %-O con LO$- &O#E &AN(AL< caa registro en e$ *o*ento
e $eerse no es e:c$usivo a *enos #ue se especifi#ue $a opci/n ,%TH LO$- en $a sentencia )EA#.
3odificar un registro secuencial/
Si e$ fic7ero se a-re en *oo %-O< es posi-$e *oificar e$ u$ti*o registro $e=o por *eio e $a
sentencia )E,)%TE, $a cua$ presenta*os a continuaci/n.
Sentencia .$G.!1$
Este sentencia per*ite ree*p$a%ar un registro e:istente en un fic7ero en isco por otro registro.
RE6RITE re/istro FRO- no#$re-de-dato"
EN,-RE6RITE"
Registro es e$ no*-re e un registro $/gico especificao en $a +%LE 'E$T%ON e $a #ATA
#%6%'ON. E$ fic7ero asociao con este registro e-e ser un fic7ero resiente en isco 8 a-ierto en *oo
%-O.
E$ nu*ero e caracteres e$ registro a ree*p$a%ar e-e ser igua$ a$ nu*ero e caracteres e$
registro #ue $o va a ree*p$a%ar.
Para fic7eros en $os #ue e$ *oo e acceso es secuencia$ $a u$ti*a sentencia e3ecutaa antes e
$a e3ecuci/n e $a sentencia )E,)%TE< e-e ser una sentencia )EA#. E$ registro ree*p$a%ao ser4
$/gica*ente e$ registro $e=o.
"a posici/n inicaa por e$ puntero e $ectura)escritura ser4 $a *is*a espu,s e 7a-er
e3ecutao una sentencia )E,)%TE.
LM
9!CH$."S S$C-$2C!AL$S !2*$AA*"S/
!ntroducci#n/
Un fic7ero ine:ao es un fic7ero con organi%aci/n secuencia$ ine:aa. "a organi%aci/n
secuencia$ ine:aa o e =nices es un *oe$o e a$*acena*iento e atos #ue se apo8a en una ta-$a e
=nices #ue actFa co*o =nice 8 en un fic7ero e atos.
Creaci#n H acceso a un fichero secuencial inde%ado/
Para crear un fic7ero secuencia$ ine:ao< $os pasos a seguir son $os *is*os #ue se 7an
e:puesto para fic7eros secuencia$es.
SELECT OPTION!L" !SSI&N TO
RESER'E
NO
!LTERN!TE
!RE!
!RE!S
OR&!NI*!TION IS
!CCESS -O,E IS
SE4UENTI!L
no#$re-fichero-% ,IS+
entero-%
LOC+ -O,E IS #odo-de-cierre"
FILE ST!TUS IS no#$re-de-dato-9"
IN,E5E,
R!N,O-
,.N!-IC
RECOR, +E. IS
no#$re dato-%
cla)e-# C no#$re dato-:Dno#$re dato-;" ...
!LTERN!TE RECOR, +E. IS
no#$re dato-%
cla)e-# C no#$re dato-EDno#$re dato-F" ...
Cuano e$ *oo e acceso es 'E9(ENT%AL< e$ acceso a $os registros e$ fic7ero ine:ao se
7ace en oren ascenente e c$ave< $a cua$ viene aa por un ca*po a$fanu*,rico eno*inao por
nombre dato-.
Si e$ *oo e acceso es )AN#O&< e$ va$or e $a c$ave inica e$ registro a$ cua$ va a acceerse.
Cuano e$ *oo e acceso es #*NA&%$< se puee acceer a $os registros e$ fic7ero secuencia$
8Ao a$eatoria*ente.
"a c$4usu$a )E$O)# -E* especifica $a c$ave principa$ e$ fic7ero. Su va$or 7a e ser Fnico. "a
c$4usu$a ALTE)NATE )E$O)# -E* especifica $a c$ave secunaria< terciaria< ..< etc. Si se especifica
,%TH #(PL%$ATE' a*ite *as e una c$ave secunaria igua$.
$la4e-m es una concatenaci/n e uno o *as ca*pos e un registro asociao con e$ fic7ero #ue
esta*os escri-ieno. Esta c$ave *F$tip$e so$o por4 ser referenciaa por $as sentencias 'TA)T 8 )EA#.
E$ o $os ca*pos usaos co*o c$ave e-er4n ec$ararse co*o ca*pos a$fanu*,ricos<
a*iti,nose $os ca*pos nu*,ricos.
Cl=usula 9* para ficheros secuenciales !nde%ados/
F, no#$re de fichero
L!2EL RECOR, IS ST!N,!R,"
L5
'!LUE OF FILE-I,"
RECOR,IN& -O,E IS"
2LOC+ CONT!INS"
RECOR, CONT!INS"
,!T! RECOR, IS"
Sentencia ",$2/
Para fic7eros ine:aos e$ for*ato e esta sentencia es e$ siguiente9
OPEN{{
INPUT
OUTPUT
I-O
E5TEN,
6IT7 LOC+"}...}
Sentencia CL"S$/
Para fic7eros ine:aos e$ for*ato e esta sentencia es e$ siguiente9
CLOSE fichero-% 6IT7 LOC+" fichero-8 6IT7 LOC+" " ...
Sentencia .$A*/
Para fic7eros ine:aos e$ for*ato e esta sentencia es e$ siguiente9
For*ato E9 0acceso secuencia$1
RE!, fichero
NE5T
PRE'IOUS
RECOR, INTO no#$re dato-%"
6IT7
+EPT
NO
LOC+"
!T
NOT
EN,
EN, !T
sentencia-%"
sentencia-8"
EN,-RE!,"
L6
For*ato G9 0Acceso a$eatorio1
RE!, fichero RECOR, INTO no#$re dato-%"
6IT7
+EPT
NO
LOC+"
IN'!LI,
NOT
+E. sentencia-9"
sentencia-:"
EN,-RE!,"
IN'!LI, +E.
+E. IS
no#$re-de-dato-8
cla)e-#
Cuano e$ *oo e acceso es secuencia$< e$ acceso a $os registros e$ fic7ero ine:ao se 7ace
en oren ascenente e $a c$ave< $a cua$ viene aa por e$ ca*po escrito a continuaci/n e $a c$4usu$a
)E$O)# -E*.
Cuano se uti$i%a e$ for*ato G< antes e #ue se e3ecute $a sentencia )EA#< es necesario 7a-er
cargao e$ ca*po escrito a continuaci/n e $a c$4usu$a )E$O)# -E*< e$ va$or e $a c$ave e$ registro
#ue se #uiere $eer.
"a opci/n NE5T o P)E6%O(' e-e especificarse cuano en un fic7ero en *oo e acceso
#*NA&%$ $os registros se $een secuencia$*ente.
Si $a opci/n P)E6%O(' se 7a especificao< espu,s e e3ecutarse una sentencia READ e$
puntero e $ectura)escritura pasa a apuntar a$ registro anterior. Si e$ puntero 8a se encontra-a en e$
pri*er registro. Si e$ puntero #ue se encontra-a en e$ pri*er registro< entonces se a una conici/n e
fin e fic7ero 0AT EN#1.
En un fic7ero a-ierto %-O con LO$- &O#E &AN(AL ,%TH LO$- ON )E$O)#< una
sentencia )EA# puee a#uirir un registro en *oo e:c$usivo so$a*ente si $a frase ,%TH LO$- 7a sio
especificaa.
En un fic7ero a-ierto %-O con LO$- &O#E &AN(AL ,%TH LO$- ON &(LT%PLE
)E$O)#'< una sentencia )EA# puee a#uirir un registro en *oo e:c$usivo so$a*ente si $a frase
,%TH -EPT LO$- 7a sio especificaa. Esto es< -EPT e-e ser inc$uio< cuano *anua$*ente se
esea 7acer e:c$usivos *F$tip$es registros.
En un fic7ero a-ierto %-O con LO$- &O#E A(TO&AT%$< a *enos #ue se especifi#ue $a
opci/n ,%TH NO LO$-, caa registro es en e$ *o*ento e $eerse e:c$usivo< no co*partio< sieno
$i-erao cuano fina$i%a $a $ectura.
Si se especifica $a opci/n -E* $a c$ave uti$i%aa para recuperar un registro viene aa por
nombre-dato-! o por cla4e-m. Si esta opci/n no se especifica< para recuperar un registro se uti$i%a $a
c$ave principa$< #ue viene aa por e$ ca*po escrito a continuaci/n e $a c$4usu$a )E$O)# -E*.
Cuano se e3ecuta una sentencia )EA#< escrita e acuero con for*ato)G< e$ contenio e$
ca*po especificao co*o c$ave< es co*parao con $os va$ores contenios en $os corresponientes
ca*pos e $os registros e$ fic7ero< 7asta #ue se encuentre un va$or igua$< en cu8o caso se recupera e$
registro 8 se e3ecuta $a sentencia-< si $a frase NOT %N6AL%# -E* 7a sio especificaa. Si no se
encuentra e$ registro entonces se e3ecuta sentencia-" escrita a continuaci/n e $a frase %N6AL%# -E*<
si esta opci/n 7a sio especificaa.
Sentencia G.!1$/
Para fic7eros ine:aos e$ for*ato e esta sentencia es e$ siguiente9
LQ
6RITE FRO- no#$re-dato-%"
IN'!LI, +E. sentencia-%"
+E. sentencia-8"
EN,-6RITE"
IN'!LI, NOT
re/istro
E$ va$or e $a c$ave principa$ e-e ser Fnico en e$ fic7ero.
E$ no*-re e ato #ue especifica $a c$ave principa$< e-e ser puesto por e$ progra*a a$ va$or
eseao< antes e e3ecutar $a sentencia ,)%TE.
Si e$ *oo e acceso es 'E9(ENT%AL< $os registros e-en ser e*itios a$ siste*a en oren
ascenente e $a c$ave principa$.
Si e$ *oo e acceso es )AN#O& o #*NA&%$ $os registros pueen ser e*itios a$ siste*a en
cua$#uier oren.
Si $a opci/n %N6AL%# -E* se 7a especificao< sentencia- se e3ecutar4 en $os siguientes casos9
a1 Cuano se 7a especificao *oo e acceso secuencia$ para un fic7ero a-ierto para escri-ir
0O(TP(T1 8 $a c$ave e$ registro no es *a8or #ue $a e$ registro anterior.
-1 Cuano e$ fic7ero se 7a a-ierto en *oo O(TP(T o %-O 8 $a c$ave e$ registro a escri-ir
e:iste 8a en e$ fic7ero.
c1 Cuano e$ fic7ero se 7a a-ierto en *oo O(TP(T o %-O 8 $a c$ave a$ternativa e$ registro a
escri-ir 8a e:iste en e$ fic7ero.
1 Cuano e$ isco esta $$eno.
EN#-,)%TE puee ser uti$i%aa so$a*ente si se especifica $a frase %N6AL%#--E*.
Sentencia .$G.!1$/
Para fic7eros ine:aos e$ for*ato e esta sentencia es e$ siguiente9
RE6RITE FRO- no#$re-dato-%"
IN'!LI, +E. sentencia-%"
+E. sentencia-8"
EN,-RE6RITE"
IN'!LI, NOT
re/istro
E$ fic7ero asociao con registro e-e ser un fic7ero resiente en isco 8 a-ierto en *oo %-O.
Para fic7eros en $os #ue e$ *oo e acceso es 'E9(ENT%AL< $a u$ti*a sentencia e3ecutaa
antes e $a e3ecuci/n e $a sentencia )E,)%TE e-e ser una sentencia )EA#< $a cua$ $oca$i%a e$ registro
a ree*p$a%ar por e$ va$or contenio en $e ca*po #ue 7ace referencia a $a c$ave principa$.
Para fic7eros en $os #ue e$ *oo e acceso es )AN#O& o #*NA&%$< e$ registro a ree*p$a%ar
viene ao por e$ contenio e$ ca*po #ue 7ace referencia a $a c$ave principa$. No es necesario e3ecutar
previa*ente una sentencia )EA#.
Si $a opci/n %N6AL%# -E* se 7a especificao< $a sentencia- se e3ecutar4 en $os siguientes
casos9
a1 Cuano se 7a especificao *oo e acceso secuencia$ 8 e$ va$or contenio en e$ ca*po c$ave
e$ registro #ue 7a e ser ree*p$a%ao no es igua$ a$ va$or e$ ca*po c$ave e$ u$ti*o registro
$e=o.
J+
-1 Cuano e$ va$or e$ ca*po #ue referencia $a c$ave principa$ no coincie con e$ va$or e $a
c$ave e a$guno e $os registros e$ fic7ero.
c1 Cuano e$ va$or e$ ca*po #ue referencia $a c$ave a$ternativa e:iste 8a en e$ fic7ero.
EN#-)E,)%TE puee ser uti$i%aa so$a*ente si s especifica $a frase %N6AL%# -E*.
Sentencia S1A.1/
Esta sentencia per*ite iniciar e$ proceso e acceso a $os registros e un fic7ero con
organi%aci/n ine:aa o re$ativa a partir e una c$ave especificaa 8 no a partir e$ principio e$ fic7ero.
ST!RT +E. IS
6IT7 SI*E entero"
IN'!LI, +E. sentencia-%"
IN'!LI, +E. sentencia-8" NOT
EN,-ST!RT"
no#$re-dato" fichero E4U!L TO
T7!N
NOT
OR
C
&RE!TER
G
LESS T7!N
NOT H
T7!N &RE!TER
E4U!L TO
G C
LESS T7!N
H
T7!N &RE!TER NOT
G NOT
E4U!L TO OR T7!N LESS
H C
+ic2ero es e$ no*-re e un fic7ero ine:ao a-ierto en *oo INPUT o I)O< con *oo e
acceso 'E9(ENT%AL o #*NA&%$.
Nombre-dato es un ca*po a$fanu*,rico #ue e-e ser ec$arao en una c$4usu$a )E$O)# -E*
asociaa con e$ fic7ero.
Nombre-dato puee ser ta*-i,n un ca*po su-orinao a$ ca*po especificao en $a c$4usu$a
)E$O)# -E*. Este ca*po su-orinao e-e ser $a posici/n e$ car4cter *as a $a i%#uiera< se
correspona con $a posici/n e$ car4cter *as a $a i%#uiera e$ ca*po especificao en $a c$4usu$a
)E$O)# -E*, esto es< e$ pri*er ca*po su-orinao.
Previa*ente a $a e3ecuci/n e una sentencia 'TA)T e$ progra*a e-e cargar en nombre-dato e$
va$or e $a c$ave corresponiente a$ registro en e$ #ue nos #uere*os posicionar.
"a co*paraci/n inicaa por $a operaci/n e re$aci/n especificaa a continuaci/n e -E*<
ocurre entre e$ va$or e$ ca*po c$ave e $os registros e$ fic7ero 8 e$ va$or e$ contenio en e$ campo-
dato. Si $a $ongitu e $os ca*pos co*paraos no son igua$es< e$ ca*po *as $argo se trunca a $a
$ongitu e$ *as corto.
Si $a frase -E* no se especifica< $a operaci/n e re$aci/n #ue se asu*e es E9(AL TO 0B1 8 $a
co*paraci/n anterior se 7ace con respecto a$ ca*po ec$arao en $a c$4usu$a )E$O)# -E*.
Si e$ operaor e re$aci/n especifica #ue $a c$ave e-e ser *a8or #ue< o *a8or o igua$ #ue
nombre-dato, entonces e$ puntero e $ectura escritura e$ fic7ero se posiciona en e$ pri*er registro
$/gico cu8a c$ave satisfaga $a conici/n.
Si e$ operaor e re$aci/n especifica #ue $a c$ave e-e ser *enor #ue< o *enor o igua$ #ue
nombre-dato< entonces e$ puntero e $ectura escritura se posiciona en e$ u$ti*o registro $/gico e$ fic7ero
cu8a c$ave satisfaga $a conici/n.
JE
Si $a conici/n no es satisfec7a por a$guno e $os registros e$ fic7ero< entonces se a $a
conici/n %N6AL%# -E* 8 se e3ecuta $a sentencia < si $a frase 7a sio especificaa.
Si se especifica $a opci/n ,%TH '%8E, entonces se ignora e$ operaor e re$aci/n especificao a
continuaci/n e -E*. Esta opci/n especifica e$ nu*ero e caracteres e $a c$ave #ue se van a uti$i%ar en
$a co*paraci/n 0E9(AL TO1.
EN#-'TA)T puee ser uti$i%aa so$a*ente si se especifica $a frase %N6AL%# -E*.
Sentencia *$L$1$/
Esta sentencia per*ite -orrar un eter*inao registro e un fic7ero con organi%aci/n ine:aa
o re$ativa.
For*ato E9
,ELETE fichero RECOR,
IN'!LI, +E. sentencia-%"
NOT IN'!LI, +E. sentencia-8"
EN,-,ELETE"
+ic2ero es e$ no*-re e un fic7ero ine:ao a-ierto en *oo %-O.
Antes e #ue se e3ecute una sentencia #ELETE< es necesario 7a-er cargao en e$ ca*po
escrito a continuaci/n e $a c$4usu$a )E$O)# -E*< e$ va$or e $a c$ave e$ registro a$ #ue se #uiere
acceer.
Para fic7eros en $os #ue e$ *oo e acceso es 'E9(ENT%AL $a u$ti*a sentencia e3ecutaa antes
e $a e3ecuci/n e $a sentencia #ELETE e-e ser $a sentencia )EA#, $a cua$ $oca$i%a e$ registro a -orrar
por e$ va$or contenio en e$ ca*po #ue 7ace referencia a $a c$ave principa$.
Para fic7eros en $os #ue e$ *oo e acceso es )AN#O& o #*NA&%$, e$ registro a -orrar viene
ao por e$ contenio e$ ca*po #ue 7ace referencia a $a c$ave principa$. No es necesario e3ecutar
previa*ente una sentencia )EA#.
Cuano se e3ecuta $a sentencia #ELETE< e$ contenio e$ ca*po especificao co*o c$ave< es
co*parao con $os va$ores contenios en $os corresponientes ca*pos e $os registros e$ fic7ero< 7asta
#ue se encuentre un va$or igua$< en cu8o caso se -orra e$ registro 8 se e3ecuta $a sentencia-! si $a frase
NOT %N6AL%# -E* 7a sio especificaa. Si no se encuentra un va$or igua$ a $a c$ave aa< entonces se
e3ecuta $a sentencia- escrita a continuaci/n e $a frase %N6AL%# -E*< si esta 7a sio especificaa.
"a frase %N6AL%# -E* no puee ser especificaa con una sentencia #ELETE #ue 7aga
referencia a un fic7ero con *oo e acceso secuencia$.
END)DE"ETE puee ser uti$i%aa so$a*ente si se especifica $a frase %N6AL%# -E*.
JG
For*ato G9
,ELETE FILE { fichero } ...
Esta sentencia -orra $os fic7eros especificaos< $os cua$es e-en ser cerraos previa*ente.
9icheros .$ALA1!V"S/
Cl=usula S$L$C1
SELECT OPTION!L" !SSI&N TO
RESER'E
NO
!LTERN!TE
!RE!
!RE!S
OR&!NI*!TION IS
!CCESS -O,E IS
SE4UENTI!L
no#$re-fichero-% ,IS+
entero-%
LOC+ -O,E IS #odo-de-cierre"
FILE ST!TUS IS no#$re-de-dato-9"
REL!TI'E
R!N,O-
,.N!-IC
REL!TI'E +E. IS no#$re dato-%"
Cuano e$ *oo e acceso 'E9(ENT%AL< e$ acceso a $os registros e$ fic7ero re$ativo se 7ace
en oren ascenente e nu*ero re$ativo e registro. En este caso $a c$4usu$a )ELAT%6E -E* es
opciona$.
Si e$ *oo e acceso es )AN#O& o #*NA&%$< e$ va$or e nombre-dato- inica e$ registro a$
cua$ va a acceerse. Este nu*ero viene ao por un ca*po nu*,rico entero sin signo especificao por
*eio e $a frase )ELAT%6E -E*.
Cuano e$ *oo e acceso es #*NA&%$< se puee acceer a $os registros e$ fic7ero secuencia$
8Ao a$eatoria*ente.
"a c$4usu$a )ELAT%6E -E* especifica e$ ca*po eno*inao por nombre-dato< #ue va a
contener e$ nu*ero re$ativo e registro a$ cua$ se #uiere acceer. Este ca*po no puee estar efinio en
$a escripci/n e registro asociaa con e$ fic7ero en cuesti/n 8 e-e ser ec$arao cono un ca*po
nu*,rico sin signo.
/a clu"ula 0D para fic1ero" relati2o" e" igual 3ue la de lo" inde4ado" 5 "ecuenciale"
/a "entencia ",$2 de lo" fic1ero" relati2o" e" la mi"ma 3ue la de lo" inde4ado" 5 "ecuenciale"
/a "entencia CL"S$ de lo" fic1ero" relati2o" e" la mi"ma 3ue la de lo" inde4ado" 5 "ecuenciale"
J;
Sentencia .$A*/
For*ato E 0secuencia$19
RE!, fichero
NE5T
PRE'IOUS
RECOR, INTO no#$re dato-%"
6IT7
+EPT
NO
LOC+"
!T
NOT
EN,
EN, !T
sentencia-%"
sentencia-8"
EN,-RE!,"
For*ato G 0irecto19
RE!, fichero RECOR, INTO no#$re dato-%"
6IT7
+EPT
NO
LOC+"
IN'!LI,
NOT
+E. sentencia-9"
sentencia-:"
EN,-RE!,"
IN'!LI, +E.
Antes e #ue se e3ecute $a sentencia )EA#< es necesario 7a-er cargao en e$ ca*po escrito a
continuaci/n e $a c$4usu$a )ELAT%6E -E*, e$ va$or re$ativo e$ registro a$ #ue se #uiere acceer.
"a opci/n NE5T o P)E6%O(' e-e especificarse cuano un fic7ero con *oo e acceso
#*NA&%$ $os registros se $een secuencia$*ente.
"a opci/n NE5T $ee e$ siguiente registro e$ fic7ero< 8 e3ecuta $a sentencia- si se especifica $a
c$4usu$a AT EN#, 8 es fina$ e$ fic7ero< sino e3ecuta sentencia-! si se especifica $a c$4usu$a NOT AT
EN#. "a opci/n P)E6%O(' $ee e$ registro anterior e$ fic7ero< 8 e3ecuta $a sentencia- si se especifica
$a c$4usu$a AT EN#, 8 es fina$ e$ fic7ero< sino e3ecuta sentencia-! si se especifica $a c$4usu$a NOT AT
EN#.
Cuano se e3ecuta una sentencia )EA#< con e$ for*ato G se $ee e$ registro #ue $a c$ave e$
fic7ero 7a especificao.
Sentencia G.!1$/

6RITE FRO- no#$re-dato-%"
IN'!LI, +E. sentencia-%"
+E. sentencia-8"
EN,-6RITE"
IN'!LI, NOT
re/istro
Sentencia .$G.!1$/
JL
RE6RITE FRO- no#$re-dato-%"
IN'!LI, +E. sentencia-%"
+E. sentencia-8"
EN,-RE6RITE"
IN'!LI, NOT
re/istro
Sentencia S1A.1/
ST!RT +E. IS
IN'!LI, +E. sentencia-%"
IN'!LI, +E. sentencia-8" NOT
EN,-ST!RT"
no#$re-dato" fichero E4U!L TO
T7!N
NOT
OR
C
&RE!TER
G
LESS T7!N
NOT H
T7!N &RE!TER
E4U!L TO
G C
LESS T7!N
H
T7!N &RE!TER NOT
G NOT
E4U!L TO OR T7!N LESS
H C
Sentencia *$L$1$/
,ELETE fichero RECOR,
IN'!LI, +E. sentencia-%"
NOT IN'!LI, +E. sentencia-8"
EN,-,ELETE"
Capitulo 6
I- CLAS!9!CAC!52 ? 9-S!52 *$ 9!CH$."S
E$ for*ato genera$ e un progra*a e c$asificaci/n CO!O" es e$ siguiente9
I,ENTIFIC!TION ,I'ISION.
PRO&R!--I,. No#$re-(ro/ra#a.
EN'IRON-ENT ,I'ISION.
INPUT-OUTPUT SECTION.

FILE-CONTROL.
SELECT fichero-% de entrada !SSI&N TO ,IS+.
SELECT fichero-8 de salida !SSI&N TO ,IS+.
SELECT fichero-9 de clasificaci1n !SSI&N TO ,IS+
SORT ST!TUS IS no#$re de dato-%"
I-O CONTROL. .... . "
,!T! ,I'ISION.
FILE SECTION.
F, fichero-% de entrada
...
F, fichero-8 de salida
JJ
...
S, fichero-9 de clasificaci1n
RECOR, CONT!INS entero-% TO" entero-8 C7!R!CTERS"
,!T! RECOR, IS re/istro-% re/istro-8".... "
no#$re de dato-8
'!LUE OF FILE-I, IS "
literal
I% Re/istro-%.
.....
6OR+IN&-STOR!&E SECTION.
FF no#$re dato-% PIC 55. ...
PROCE,URE ,I'ISION.
SORT ... "
-ER&E ... "
Si se especifica $a c$4usu$a 'O)T 'TAT('< se co$ocar4 en nombre dato- un va$or e G =gitos
para inicar co*o se 7a rea$i%ao $a operaci/n e c$asificaci/n. "os va$ores #ue se pueen ar son $os
siguientes9
++ C$asificaci/n efectuaa correcta*ente
;+ Error
Q) E$ seguno =gito correspone a un nu*ero e error e$ siste*a.
Sentencia S".1/
"a sentencia SORT crea un fic7ero c$asificao< e3ecutano un procei*iento e entraa< o
transfirieno registros ese otros fic7eros. Su for*ato es e$ siguiente9
SORT ON
!SCEN,IN&
,ESCEN,IN&
+E.
6IT7 ,UPLIC!TES IN OR,ER"
COLL!TIN&SE4UENCE IS
INPUT PROCE,URE T7RU
OUTPUT
USIN&
&I'IN&
fichero-9 no#$re dato-% ...
ON
!SCEN,IN&
,ESCEN,IN&
+E. no#$re dato-8 ..." ...
no#$re alfa$eto"
PROCE,URE
IS seccion-% seccion-8"
fichero-%
fichero-8
T7RU IS seccion-9 seccion-:"
...
...
+ic2ero-" es e$ fic7ero e c$asificaci/n< e$ cua$ tiene #ue ser escrito en $a #ATA #%6%'%ON<
preceio por '#. E$ resto e $os fic7eros son fic7eros nor*a$es. Para evitar resu$taos inesperaos< es
conveniente #ue e$ ta*aPo e registro sea e$ *is*o para toos $os fic7eros.
"pciones ASC$2*!2+ H *$SC$2*!2+
Inican< si $a c$asificaci/n se a rea$i%ar ascenente o escenente*ente< por e$ contenio e uno
o *as ca*pos.
JM
Nombre dato- 8 nombre dato-!, ..., son $os no*-res e $os ca*pos por $os #ue se esea
c$asificar e$ fic7ero. Estos ca*pos e-en pertenecer a $os registros asociaos a$ fic2ero-". En $a
escripci/n e estos ca*pos no puee figurar $a c$4usu$a O$$()'.
"os no*-res e ato #ue siguen a $a pa$a-ra -E* e-en especificarse en oren ecreciente e
significaci/n.
Si se especifica $a c$4usu$a #(PL%$ATE' 8 e$ contenio e toos $os ca*pos e*p$eaos en $a
c$asificaci/n< pertenecientes a un eter*inao registro< coincien con e$ contenio e $os
corresponientes ca*pos e otros registros< entonces e$ oren en e$ #ue son co$ocaos $os registros es e$
oren e aparici/n en $os fic7eros e entraa segFn se 7an especificao en $a sentencia 'O)T. Si se a
este caso 8 $a c$4usu$a #(PL%$ATE' no se 7a especificao< e$ oren e $os registros a $os #ue nos
referi*os #uea inefinio.
"a c$asificaci/n se rea$i%a e acuero con e$ oren e va$ores e$ c/igo e caracteres e*p$eao
por efecto 0ASCII1. Si se especifica $a c$4usu$a CO""ATIN( SEOUENCE es posi-$e rea$i%ar $a
c$asificaci/n en otra secuencia #ue sea ASCII< por e3e*p$o< E!CDIC.
"pciones -S!2+ H +!V!2+
Con $a opci/n ('%N. e$ co*pi$aor rea$i%a auto*4tica*ente $as siguientes funciones9
@ A-re e$ fic7ero o fic7eros e entra eno*inaos +ic2ero-...
@ Toos $os registros e$ fic7ero o fic7eros e entraa son transferios a$ fic7ero e
c$asificaci/n< fic2ero-", para ser c$asificaos< es ecir< se renuncia a rea$i%ar cua$#uier
operaci/n so-re $os registros e entraa.
@ Cierra toos $os fic7eros e entraa.
J5
Con $a opci/n (IVIN( e$ co*pi$aor rea$i%a auto*4tica*ente $as siguientes funciones9
@ A-re e$ fic7ero o fic7eros e sa$ia eno*inaos fic2ero-!...
@ Toos $os registros e$ fic7ero e c$asificaci/n< fic2ero-", son transferios a$ fic7ero o
fic7eros e sa$ia< es ecir< se renuncia a rea$i%ar cua$#uier operaci/n so-re $os registros
c$asificaos.
"a conici/n necesaria 8 Fnica para #ue un SORT funcione es #ue $os fic7eros e entraa 8
sa$ia sean secuencia$es.
"pci#n !2,-1 ,."C$*-.$/
Esta opci/n per*ite referenciar una o *as secciones< para rea$i%ar cua$#uier operaci/n so-re $os
registros e entraa< antes e #ue sean transferios a$ fic7ero e c$asificaci/n< fic2ero-"< por *eio e $a
sentencia )ELEA'E, para ser c$asificaos.
Sentencia .$L$AS$/
Esta sentencia transfiere $os registros a$ fic7ero e c$asificaci/n< para a continuaci/n ser
c$asificaos.
RELE!SE re/istro-clasificaci1n FRO- no#$re-datos".
Una sentencia )ELEA'E so$a*ente puee uti$i%arse en una secci/n %NP(T asociaa a una
sentencia 'O)T.
"pci#n "-,-1 ,."C$*-.$/
Esta opci/n per*ite referenciar una o *as secciones< para rea$i%ar cua$#uier operaci/n so-re $os
registros c$asificaos< antes e #ue sean transferios a$ fic7ero e sa$ia< fic2ero-!, por *eio e $a
sentencia )ET()N.
Sentencia .$1-.2/
Esta sentencia per*ite recuperar e$ fic7ero e c$asificaci/n< $os registros una ve% c$asificaos.
RETURN fichero-clasificaci1n RECOR, INTO no#$re-datos"
!T EN, sentencia-%
NOT !T EN, sentencia-%"
EN,-RETURN".
Una sentencia )ET()N so$a*ente se puee uti$i%ar en una secci/n O(TP(T asociaa a una
sentencia 'O)T o &E).E.
"a funci/n e esta sentencia es si*i$ar a $a funci/n e $a sentencia )EA#.
Sentencia 3$.+$/
Esta sentencia per*ite fusionar os o *as fic7eros c$asificaos por un *is*o con3unto e
ca*pos. Su for*ato es e$ siguiente9
J6
-ER&E ON
!SCEN,IN&
,ESCEN,IN&
+E.
COLL!TIN&SE4UENCE IS
OUTPUT
USIN&
&I'IN&
fichero-9 no#$re dato-% ...
ON
!SCEN,IN&
,ESCEN,IN&
+E. no#$re dato-8 ..." ...
no#$re alfa$eto"
PROCE,URE
fichero-%
fichero-8
T7RU IS seccion-9 seccion-:"
...
...
Capitulo 17
87- C"3-2!CAC!52 $21.$ ,."+.A3AS
Llamada a un subprograma Sentencia CALL/
Para transferir e$ contro$ e un progra*a a un su-progra*a se uti$i%a $a sentencia $ALL, cu8o
for*ato es e$ siguiente.
C!LL
identificador
literal
USIN&no#$re-dato-%no#$re-dato-8" ..."
ON O'ERFLO6 sentencia EN,-C!LL""
%dentificador o literal especifican e$ no*-re e$ su-progra*a. Si se uti$i%a un ientificaor para
$$a*ar a$ progra*a< este e-e ser ec$arao co*o un ca*po a$fanu*,rico 8 si se uti$i%a un $itera$< este
e-e ser no nu*,rico.
"os nombres-dato especificaos a continuaci/n e $a c$4usu$a ('%N. se refieren a ca*pos #ue
pueen uti$i%ar tanto e$ progra*a principa$ co*o e$ su-progra*a.
Si urante $a sentencia $ALL no es posi-$e aco*oar e$ progra*a en *e*oria e$ progra*a
especificao para su e3ecuci/n< se pasa a e3ecutar $a siguiente sentencia en secuencia. A7ora si se 7a
especificao $a c$4usu$a ON O6E)+LO,< entonces se e3ecuta $a sentencia i*perativa especificaa a
continuaci/n e $a esta c$4usu$a.
"a sentencia EN#-$ALL e$i*ita e$ 4*-ito e $a sentencia $ALL.
Sentencia $21.?/
Esta sentencia per*ite especificar cua$ es e$ punto e entraa en e$ su-progra*a $$a*ao. Su
for*ato es e$ siguiente9
ENTR. (<nto-entrada USIN& no#$re-dato-% no#$re-dato-8"J "
Dentro e un progra*a pueen especificarse *as e un punto e entraa eno*in4nose caa
uno e e$$os con un no*-re iferente. So$o $os oc7o pri*eros caracteres e caa no*-re son
significativos.
Cuano e$ progra*a principa$ $$a*a a un su-progra*a< e$ contro$ puee transferirse a $a
pri*era sentencia e $a P)O$E#()E #%6%'%ON, o a otra sentencia iferente. En e$ pri*er caso< se
puee prescinir e $a sentencia ENT)* 8 especificar a continuaci/n e $a pa$a-ra #%6%'%ON< $a opci/n
('%N. seguia e $os ca*pos e atos corresponientes< pero en e$ seguno caso si es necesaria< con e$
fin e inicar *eiante un no*-re cua$ es e$ punto e entraa en e$ su-progra*a< esto es< inicar a
partir e #ue sentencia se esea #ue co*ience $a e3ecuci/n en e$ progra*a.
Sentencia $A!1 ,."+.A3/
JQ
Esta sentencia efine e$ fina$ $/gico e$ su-progra*a $$a*ao. Su for*ato es e$ siguiente9
E5IT PRO&R!-
"a e3ecuci/n e esta sentencia 7ace #ue e$ contro$ sea evue$to a $a sentencia in*eiata*ente a
continuaci/n e $a sentencia $ALL #ue efectFo $a $$a*aa a$ su-progra*a.
M+
Sentencia Cancel/
Esta sentencia garanti%a #ue $a siguiente ve% #ue e$ progra*a sea $$a*ao para su e3ecuci/n<
parta*os e su estao inicia$. Su for*ato es e$ siguiente9
C!NCEL
identificador
literal
%ndentificador o literal especifican e$ no*-re e$ su-progra*a a cance$ar. Si se uti$i%a un
inentificaor< este e-e ser ec$arao co*o un ca*po a$fanu*,rico 8 si se uti$i%a un $itera$< este e-e
ser no nu*,rico.
Cuano un su-progra*a es cance$ao toos $os su-progra*as contenios entro e$
su-progra*a referenciao por $a sentencia $AN$EL< son ta*-i,n cance$aos.
Sentencia CHA!2/
"a sentencia $HA%N transfiere e$ contro$ ese un progra*a a otro sin #ue este u$ti*o<
evue$va e$ contro$ cuano fina$i%a. Su for*ato es e$ siguiente9
C7!IN
identificador
literal
USIN& no#$re dato-%no#$re dato-8"..."
ON O'ERFLO6sentencia"
%dentificador o literal especifican e$ no*-re e$ progra*a a encaenar. Si se uti$i%a un
ientificaor para $$a*ar a$ progra*a< este e-e ser ec$arao co*o a$fanu*,rico 8 si se uti$i%a un
$itera$ este e-e ser no nu*,rico.
"a c$4usu$a ('%N. es inc$uia en $a sentencia $HA%N, so$a*ente si 7a8 una frase USIN( en $a
ca-ecera e $a P)O$E#()E #%6%'%ON e$ progra*a encaenao.
PROCE,URE ,I'ISION USIN& no#$re dato-% no#$re dato-8"J "
"os nombre dato especificaos a continuaci/n e $a c$4usu$a ('%N. se refieren a $os ca*pos e
atos #ue son trans*itios a$ progra*a encaenao.
E$ pri*er progra*a #ue e3ecuta $a sentencia $HA%N< esta sie*pre en *e*oria< esto es< $a
*e*oria ocupaa por este progra*a nunca es $i-eraa 8 aun#ue e3ecute*os un nuevo $HA%N para
vo$ver$o a cargar esto no sucee por#ue 8a esta en *e*oria.
"a *e*oria ocupaa por un progra*a encaenao< no es $i-eraa 7asta #ue se e3ecute un
seguno $HA%N en secuencia< no contano con e$ $HA%N e$ pri*er progra*a< e$ cua$ es Fnico.
L!2;A+$ S$C1!"2
Esta secci/n per*ite escri-ir $os ca*pos e atos co*unes a$ progra*a principa$ 8 a$
su-progra*a< esto es< $os ca*pos e atos #ue co*parten a*-os progra*as.

LIN+!&E SECTION.
FF descri(ci1n de ca#(os indi)id<ales."J
I% descri(ci1n de re/istros."J
"a escripci/n e $os ca*pos 8 registros en esta secci/n< se rea$i%a uti$i%ano $a *is*a sinta:is
#ue en $a ,O)-%N.-'TO)A.E 'E$T%ON< a e:cepci/n e $a c$4usu$a 6AL(E #ue a#u= so$o puee
uti$i%arse con $os no*-res e conici/n.
E$ progra*a principa$ 8 e$ su-progra*a se co*pi$an separaa*ente por $o #ue es necesario #ue
$a escripci/n e $os ca*pos e atos co*unes apare%can en $a #ATA #%6%'%ON e caa progra*a. Sin
e*-argo< e$ siste*a no reserva *e*oria para $os registros 8 ca*pos e atos ec$araos en L%N-A.E
ME
'E$T%ON< pero si pone a isposici/n e$ su-progra*a $os registros 8 ca*pos a#u= ec$araos 8 #ue
fueron reservaos para e$ progra*a principa$.
"os no*-res e ca*pos e atos #ue se especifican a continuaci/n e $a c$4usu$a ('%N. en $a
$$a*aa $ALL< no tienen por#ue eno*inarse igua$ #ue $os corresponientes ca*pos especificaos a
continuaci/n e $a c$4usu$a ('%N. en e$ su-progra*a.
Capitulo 17
88- V!S-AL!ZAC!52 *$ ,A21ALLAS
SC.$$2 S$C1!"2
"a '$)EEN 'E$T%ON contiene una escripci/n e caa ca*po so-re $a panta$$a. E$ acceso a
estos ca*pos es *eiante $as sentencias A$$EPT 8 #%'PLA*. Su for*ato genera$ es e$ siguiente9
SCREEN SECTION.
{I% no#$re (antalla o(ciones.
{Nn no#$re datos" o(ciones}J}J}
E$ nombre pantalla e-e co*en%ar con e$ nu*ero e nive$ +E.
Caa %ona e atos perteneciente a $a panta$$a puee co*en%ar con un nu*ero e nive$ e$ +G
a$ LQ.
"a pa$a-ra +%LLE) no se puee uti$i%ar en una escripci/n e panta$$a pero nombre-datos
puee o*itirse.
Una escripci/n e una %ona e$e*enta$ e atos e-e contener a$ *enos una e $as siguientes
opciones9 BELL, BLAN- L%NE, BLAN- '$)EEN, $OL(&N, L%NE, P%$T()E, 6AL(E.
Una panta$$a puee ser referenciaa so$a*ente por una sentencia A$$EPT o #%'PLA*.
"a opci/n ('%N. per*ite uti$i%ar e$ ca*po asociao< tanto para entraa co*o para sa$ia. "a
sentencia #%'PLA* panta$$a visua$i%a $os ca*pos e sa$ia e$ isePo panta$$a 8 $a sentencia A$$EPT
panta$$a< per*ite tec$ear $os atos par $os ca*pos e entraa e$ *is*o isePo.
"pciones/
",C!"2 *$SC.!,C!52
A(TO Va a$ siguiente ca*po ca*po una ve% re$$enao e$ anterior.
BA$-.)O(N#-$OLO) Especifica e$ co$or e fono e$ e$e*ento a visu$i%ar en panta$$a.
BELL E*ite un sonio caa ve% #ue e$ e$e*ento es e3ecutao
BLAN- !orra una $inea o $a panta$$a.
BLAN- ,HEN 8E)O Pone -$ancos cuano e$ ca*po es cero.
BL%N- 2ace parpaear un te:to en panta$$a.
$OL(&N o $OL Especifica una co$u*na en panta$$a.
+O)E.)O(N#-$OLO) Especifica e$ co$or e pri*er p$ano e un $itera$
+(LL o LEN.HT-$HE$- O-$iga a e3ar e$ ca*po co*p$eta*ente $$eno o vacio.
H%.HL%.HT Pon e$ $itera$ o ca*po con un co$or *as intenso.
0('T%+%E# o 0('T A3usta e$ ca*po a $a erec7a.
L%NE Especifica una $inea en panta$$a.
O$$()' Per*ite efinir un ca*po con su-inices.
P)O&PT Ca*-ia e$ pro*pt e$ siste*a.
)E9(%)E# O-$iga a re$$enar e$ ca*po.
)E6E)'E-6%#EO Ca*ia e$ co$or e fono por e$ e pri*er p$ano.
'E$()E No visua$i%a en panta$$a $o introucio.
'%.N Pone e$ signo e$ nu*ero.
'%8E Especifica e$ ta*aPo e$ ca*po.
(N#E)L%NE 2ace #ue e$ e$e*ento escrito en panta$$a apare%ca su-ra8ao.
6AL(E Especifica una caena e caracteres para visua$i%ar$a por panta$$a.
8E)O-+%LL Re$$ena a ceros $os ca*pos nu*ericos.
MG
M;