Está en la página 1de 72

COBOL

Capitulo1ElementosdellenguajeCOBOL.
Capitulo2EstructuradeunprogramaCobol.
Capitulo3LadivisinDATA.
Capitulo4LadivisinPROCEDURE.
Capitulo5Sentenciasdecontrol.
Capitulo6Cadenasdecaracteres.
Capitulo7Manipulacindetablas.
Capitulo8Ficherosdeentradaysalida.
Capitulo9Clasificacinyfusindeficheros.
Capitulo10Comunicacinentreprogramas.
Capitulo11Visualizacindepantallas.
lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

1ElementosdellenguajeCOBOL.
IDENTIFICATIONDIVISION.
ENVIRONMENTDIVISION.
DATADIVISION
PROCEDUREDIVISION

1. Constantesfigurativas:
UnaconstantefigurativaesunaconstantepredefinidaenCOBOLquepuedeutilizarseencualquierparte
delaWORKINGSTORAGESECTIONoPROCEDUREDIVISIONparaasignarsuvalorauncampo.
ZeroDesignaelvalor0enelcasodedatosnumricos.Tambinpuedeserreferenciadaporlosnombres
ZEROSoZEROES.
SpaceEstaconstanteseutilizaparaasignarauncampononumricounoomasespaciosenblanco.
TambinpuedeserreferenciadaporelnombreSPACES.
HighvalueSeutilizaparaasignaraliteralesalfanumricoselvalormasaltoposibledelcdigode
caracteresqueestemosutilizando(ValorFFenASCII).Tambinpuedeserreferenciadaporelnombrede
HIGHVALUES.
LowValueSeutilizaparaasignaraliteralesalfanumricoselvalormasbajoposibledelcdigode
caracteresqueestemosutilizando(Valor00enASCII).Tambinpuedeserreferenciadaporelnombrede
LOWVALUES.
ALL"literal"representaunarepeticindelliteralespecificado.

1. Constantesidentificadasporunnombre.
Estnformadasporunidentificadoralqueasociamosunvalor.SedescribenenlaDATA
DIVISIONconnivel78.
Unaconstanteidentificadaporunnombreseutilizaencualquierlugardondeunliteralpueda
aparecerenunformato.

2. Identificadores.
Losidentificadoressonnombrescreadosporelprogramador.Paraformarunidentificadorhayquetenerencuentalas
siguientesreglas:
Unidentificadorconstadeunmximode30caracteres.Estoscaracterespuedensersolamenteletras,dgitosyel
guin.
Nodebenempezarniterminarenunguin.
Unidentificadordefinidoporelusuarionopuedetenerelmismonombrequeunapalabrareservada.
Unidentificadordebecontenerobligatoriamentealmenosunaletra,exceptocuandosetratedeunnombrede
prrafoodeseccin.
CualquieridentificadorutilizadoenlaPROCEDUREDIVISIONdebeestarpreviamentedefinidoenlaENVIRONMENT
DIVISIONoenlaDATADIVISION.

1. Operadores.
Losoperadoressonsmbolosqueindicancomosonmanipuladoslosdatos.
Carcter

Significado

Ejemplo

Suma

A+B

Resta

AB

Multiplicacin

A*B

Divisin

A/B

**

Potenciacin

A**B

Asignacin

C=A+B

()

Darprioridad

D=(A+B)*C

2. Operadoresderelacin.
Losoperadoresderelacinseutilizanparacomparardosvaloresnumricosodosvalores
alfanumricos(nonumricos).Elresultadopuedeserverdaderoofalso.
Carcter

Significado

Ejemplo

Igualque

A=B

<

Menorque

A<B

>

Mayorque

A>B

<=

Menorigual

A<=B

>=

Mayorigual

A>=B

Estosoperadores,tienentodosigualprioridad.

3. OperadoresdeLgicos.
Los operadores lgicos nos permiten combinar varias expresiones de relacin. Igual que los
operadoresderelacin,seutilizannormalmenteparatomardecisiones.Unoperadorlgicotoma
unacombinacindevaloresverdaderosfalsosydevuelveunresultadoverdaderoofalso.
Losoperadoreslgicoscolocadosenordendeprioridadsonlossiguientes:NOT,AND,OR.
Lastablasdeverdadcorrespondientesaestosoperadoressonlassiguientes:
A

B NotA AANDB AORB

4. Expresionesaritmticas.
Unaexpresinaritmticapuedeserunaconstante,unavariableounconjuntodeconstantesy
variablesunidasporoperadoresaritmticos.
Parasucodificacinhayquetenerencuentaque:

*Elparntesisizquierdonodebeirseguidodeunespacio.
*Elparntesisderechonodebeirprecedidodeunespacio.
*Elsigno=ulosoperadores+,,*,y**debenirprecedidosyseguidosdeunespacio.

5. Ordendeejecucin.
Alahoradeevaluarunaexpresin,laprioridaddelasoperacioneseslasiguiente:
1Primeroseevalanlasoperacionesentreparntesis,delosmasinternosalosmasexternos.
2Despus,ysiguiendoelordenquesedescribeacontinuacinseevalanlosoperadores
aritmticos:
***,/+,
Losoperadoresescritossobreunamismalneatienenlamismaprioridad.Cuandoenunaexpresin
intervienenvariosoperadoresconlamismaprioridad,estosseevalandeizquierdaaderecha.

6. ExpresionesdeBOOLE.
UnaexpresindeBOOLEdacomoresultadounvalorverdaderoofalso.Losoperadoresqueintervienenenuna
expresindeBOOLEpuedenser:Operadoresderelacinyoperadoreslgicos.
SienunaexpresindeBOOLEintervienenvariostiposdeoperadoresprimeroseevalanlosoperadoresaritmticos,
despuslosoperadoresderelacinyporultimolosoperadoreslgicos.
Ejemplo:
((A=0)AND((B*2)NOT=0))OR(C=0)

lafacu.comnoseresponsabilizaporelusoqueotrosoterceros,puedandarleaestainformacin.

Capitulo2.

2EstructuradeunprogramaCobol.
DescripcinGeneral.
UnprogramafuenteCOBOLesunconjuntodesentenciasCOBOLsintcticamentecorrectas.
Lassentencias,entradas,prrafosyseccionesdeunprogramaCOBOLsonagrupadasencuatrodivisionesque
formanlaestructurageneraldedichoprograma.
El formato general y el orden de presentacin de las entradas y sentencias que constituyen un programa
COBOLes:
IDENTIFICATIONDIVISION.
ENVIRONMENTDIVISION.
DATADIVISION.
PROCEDUREDIVISION.
[ENDPROGRAMidprograma]
Estos nombres representan las cabeceras de las cuatro divisiones mencionadas y la cabecera de final de
programaqueesopcionalyvalidabajolasnormasANS85.Enestaultima,idprogramadebecoincidirconel
nombreespecificadoenelparrafoPROGRAMID.

Identificationdivision.
La division de IDENTIFICACION, sirve para proporcionar un nombre para identificar el programa.
Opcionalmentesepuedeespecificarinformacinacercadelautor,fechaenquefueescrito,etc..
Elformatogeneralparaladivisineselsiguiente.
IDENTIFICATIONDIVISION.
PROGRAMID.Nombredelprograma.
[AUTHOR.Nombredelprogramador.]
[INSTALATION.Lugardeinstalacin.]
[DATEWRITTEN.Fechaenquefueescrito.]
[DATECOMPILED.Fechaenquefuecompilado.]
[SECURITY.Entradadecomentarios.]
Sololasdosprimeraslineas,IDENTIFICATIONDIVISIONyPROGRAMID,sonobligatorias.
Programid.
Esteparrafosirveparaespeficarelnombredelprograma.Estenombreserautilizadoporelcompiladorodurante
laejecucinparaindicarenqueprogramaocurrioalgunerror.

El nombre del programa debe ajustarse a las reglas de formacin de un identificador COBOL, vistas en el
capituloanterior.
El resto de los parrafos son opcionales, pueden aparecer en cualquier orden, y su utilizacin queda
perfectamentedefinidaenelformatodescrito.
Siuncomentarioocupamasdeunalinea,noestapermitidoutilizarelguincomocaracterdecontinuacin,sin
embargopuedesercontinuadoenlaslineassiguientes,comenzandoenelmargenB.

Environmentdivision.
LadivisiondeENTORNOpermitedefinireltipodeordenadorparaelquefueescritoelprograma,asicomolos
dispositivosperifericosnecesariosparasoportarlosficherosutilizadosenelprograma.
Elformatogeneraldelaseccineselsiguiente:
ENVIRONMENTDIVISION.
[CONFIGURATIONSECTION.
SOURCECOMPUTER.Modelodeordenador.
OBJECTCOMPUTER.Modelodeordenador.
SPECIALNAMES.
Nombresespeciales.]
[INPUTOUTPUTSECTION.
FILECONTROL.
Controldeficheros.
[IOCONTROL.
Controldeentrada/Salida.]]
Secciondeconfiguracin.
Estaseccinesopcional.SuutilidadesdocumentarelprogramaCOBOL,indicandoelmodelodeordenador
utilizado y asociar los nombres nemonicos especificados por el programador a nombres utilizados por el
compilador.Acontinuacinsedescribenlosparrafosquelacomponen.
ParrafoSOURCE:
Sirveparaespecificarelmodelodeordenadorquevaacompilarelprograma.Suformatoeselsiguiente:
SOURCECOMPUTER.Modelodeordenador.
[WITHDEBUGINGMODE.]
LaopcinWITHDEBUGINGMODEpermiteintroducirenelficherofuenteCOBOL,codigoquenosservirade
ayudaparadepurarelprograma.
ParrafoOBJECT:
Sirveparaespecificarelmodelodeordenadorquevaaejecutaselprograma.Suformatoeselsiguiente:
OBJECTCOMPUTER.Modelodeordenador.

[PROGRAMCOLLATINGSEQUENCEIScodigo]
[SEGMENTLIMITISnumerosegmento].]
LaclausulaMEMORYSIZEtienecomofinalidaddocumentarelprogramayespecificaeltamaodelamemoria
necesariaparapoderejecutarelprogramaexpresadoenpalabras,caracteresomodulos.
LaclausulaSEQUENCE,especificalasecuenciadecaracteresutilzadaencomparacionesyclasificacionesno
numericas.SiestaseomiteseutilizaelcodigoASCIIoEBCDIC.EnnuestrocasoseutilizaelcodigoASCII
La clausula SEGMENTLIMIT solo sirve de comentario. La segmentacin en COBOL tiene sentido en la
PROCEDUREDIVISION,lacualyparaesteproposito,estaradivididacompletamentamenteensecciones,cada
una de las cuales estara clasificada como una porcion fija o como un segmento independiente del programa
objeto.Elnumerodesegmentoestacomprendidoentre1y49.
ParrafoSPECIALNAMES:
Elfomatodeesteparrafoeselsiguiente:
SPECIALNAMES
[NombredefuncinISnombrenemnico]
[ALPHABET]
[DECIMALPIOINTISCOMMA]
[CURRENCYSIGNISliteral]
Nombredefuncinesunnombrereconocidoporelcompilador,porejemploPRINTERynombrenemotecnico
esunnombrecreadoporelprogramador.
La clausula ALPHABET se utiliza para asignar un nombre a un conjunto especifico de caracteres o a una
determinadasecuenciadeclasificacin.Suformatoeselsiguiente:

El juego de caracteres STANDARD1 o ASCII es el codigo American Standard Code for Information
Interchange.STANDARD2eselcodigoISO7bit.
LaclausulaNATIVEserefierealcodigoASCIIoEBCDICdependiendodelaversionCOBOL.
CuandoseespecificaunnombredealfabetoenunaclausulaCODESETenladescripcindefichero,espara
especificarelcodigodecaracteresquesequiereutilizar.
Siseespecificalaopcindeliteral,elnombredealfabetonopuedereferenciarseenlaclausulaCODESET.La
secuenciadeclasificacinidentificadaestadefinidadeacuerdoconlassiguientesreglas:

1Elvalordecadaliteralespecifica:
A)Elvalorordinaldeuncaracterdentrodeljuegodecaracteresnativo,sielliteralesnumerico.
B)Elcaracteractualdentrodeljuegodecaracteresnativo,sielliteralnoesnumerico.Sielliteral
noesnumericoyestaformadoporvarioscaracteres,cadacaracter,comenzandoconelcaracter
mas a la izquierda, es asignado a posiciones sucesivas, ascendentemente, en la secuencia de
clasificacinqueestaespecificando.
2ElordenenelquelosliteralesaparecenenlaclausulaALPHABET,ensecuenciaascendente,
especificaelnmeroordinaldelcaracterdentrodelasecuenciadeclasificacin.
3 Cualquier caracter dentro de la secuenca nativa de clasificacin que este explicitamente
espresado en el literal, asume una posicin, en la secuencia de clasificacin, mayor que
cualquieradeloscaracteresexplicitamenteespecificados.
4SiseespecificalaopcinTHRU,elconjuntodecaracterescontiguos,delcodigonativo,que
comienzanconelcaracterespecificadoporelliteral1yqueterminaconelcaracterespecificadoporelliteral2,
esasignadoaposicionessucesivas,ascendentemente,enlasecuenciadeclasificacinqueseestaespecificando.
5SiseespecificalaopcinALSO,loscaracteresdelcodigonativoespecificadosporliteral1yliteral3seasignanalamisma
posicinenlasecuenciadeclasificacinqueseestaespecificando.
Los caracteres que ocupan las posiciones mas baja y mas alta en la secuencia de clasificacin definida, se asocian con las constantes figurativas
LOWVALUE y HIGHVALUE respectivamente. Si estas posiciones son ocupadas por mas de un caracter, el valor de la constante figurativa
correspondienteseasociaalultimocaracterespecificado.
LaclausulaDECIMALPOINTISCOMMApermitetransformar,enlaedicinderesultados,elpuntodecimalenlosnumeros,encoma.
LafuncindelaclausulaCURRENCYISliteralesladereemplazarelsigno$delamonedaamericana,queseusaenlaclausulaPICTURE,porel
correspondiente signo de la moneda local. El literal esta limitado a un solo caracter, el cual debe especificarse en la clausula PICTURE
correspondiente,enlugardelcaracter$.
Secciondeentradasalida.
Estaseccinesopcional.PermitedeclararlosficherosdeE/Squeutilizaelprograma,asicomodefinirlastecnicasespecialesdeE/S.
lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo3

3LadivisinDATA.
INTRODUCCIN.
Ladivisindedatosseutilizapararealizarunadescripcincompletadelosficherosqueintervienenenelprograma,
desusregistroslgicosydelasvariablesintermediasodetrabajo.
Elformatogeneralparaestadivisineselsiguiente:
DATADIVISION.
[FILESECTION.
Descripcindelfichero
Descripcindelregistro.
...]
[WORKINGSTORAGESECTION
[77Descripcindecamposindividuales.]
[01Descripcinderegistros.]]
[LINKAGESECTION.
[77Descripcindecamposindividuales.]
[01Descripcinderegistros.]]
[COMMUNICATIONSECTION.
[Descripcincomunicacin.]
[Descripcinderegistros.]]
[REPORTSECTION.
[Descripcindeinformes.]]
[SCREENSECTION.
01Descripcindepantallas.]

Seccindeficheros.
EnlaFILESECTIONdebedescribirsetodalainformacinreferentealosficherosutilizadosenelprograma.

Seccindetrabajo.
EnlaWORKINGSTORAGESECTIONsedescribenloscamposutilizadosporelprogramacomocamposintermedios
odetrabajo.Elformatoeselsiguiente:
[WORKINGSTORAGESECTION.

[77Descripcindecamposindividuales.]
[01Descripcinderegistros.]]
LoscamposqueseespecificanenlaSECCINDETRABAJOpuedenagruparsesiguiendoelformatoempleadoenel
apartadodescripcindeunaestructuraregistro,expuestoacontinuacin,obiensercamposdeindependientesen
cuyocasovanprecedidosporelnumerodenivel77.

Descripcindeunaestructuraregistro.
Una descripcin de registro consiste en un conjunto de descripciones de datos, las cuales describen las
caractersticasdeunregistroenparticular.Cadadescripcindedarestaformadaporunnumerodenivelseguidode
unnombrededatos,odelaclusulaFILLER,seguidodeunaseriedeclusulassiesqueestassonrequeridas.
Una descripcin de registro puede tener una estructura jerarquizada compuesta por una o mas inscripciones
jerarquizadasocamposqueescribiremosdeacuerdoconelsiguienteformato:

[REDEFINES]
[PICTURE]
[USAGE]
[VALUE]
[SIGN]
[JUSTIFIEDRIGTH]
[BLANKWHENZERO]
[OCCURS]
Elordendeestasclusulaspuedesercualquiera,exceptolaclusulaREDEFINES,quedebeserlaprimera,enelcaso
deespecificarse.Todainscripcindebeterminarconunpunto.
Elnombredelregistrollevanumerodenivel01yelrestodeloscamposllevaunnumerodenivelde02a49.

Nmerodenivel.
Sirveparaindicarlarelacinexistenteentreuncampoyelrestodeloscamposdelregistro.
Loscamposdedatoslopodemosclasificaren:
Camposelementales:Uncampoelementalnopuedesubdividirseonoesnecesariosubdividirloparasertratadopor
elprograma.
Camposcompuesto:Uncampocompuestoestaformadoporvarioscamposelementales.
Campos independientes : Un campo independiente es un campo de trabajo que ser definido en la seccin de
trabajo.
Una estructura jerarquizada, permite trabajara con registros completos, con campos compuestos y con campos
elementales.

Losnmerosdenivelquepuedenutilizarseson:del01al49,66,77,78y88.Elnivelsuperioresel01.
Lasnormasaseguirparautilizarlosnmerosdenivelsonlassiguientes:
*Uncampocompuestotieneunnivelsuperiorquecualquieradesuscamposelementales.
*Elnumerodenivel01solopuedeprecederalnombredelregistro.
*Losnmerosdel02al49puedenprecederacualquiercampodelregistro,elementalocompuesto.
*Losnumerodenivelutilizadosnotienenporquesercorrelativos.
*Elnumerodenivel77seutilizaparadescribircamposindependientesenlaWORKING.
*Elnumerodenivel88seutilizaparadescribirnombresdecondicin.
Elformatoeselsiguiente:

* El numero de nivel 66 se utiliza nicamente con la clusula RENAMES. Permite asignar un nuevo nombre a un
campoelemental,auncampocompuestooaunconjuntodecamposelementales.Suformatoeselsiguiente:

La clusula RENAMES no puede formar parte de la descripcin de un campo y es obligatorio especificarla


inmediatamentedespusdeladescripcindelregistro.
Uncampoconnumerodenivel01,77u88nopuedeserrenombradoporestaclusula.
Ni nombre de dato2 ni nombre de dato3 pueden tener la clusula OCCURS, ni pueden estar subordinados a un
campoquecontengalaclusulaOCCURS.
* El numero de nivel 78 se utiliza para definir constantes identificadas por un nombre. Cada referencia a una
constante,esreemplazadaporelcompiladorCOBOL,porsuvalor.
Elformatogeneraleselsiguiente:

Nombrededatos
Sirveparanombrarelcampoconelfindepoderreferenciarloenelprogramaydebeescribirseacontinuacindel
numerodenivel.SienlaPROCEDUREDIVISIONnosevaareferenciaralgunodeloscamposnombrados,elnombre
decadaunodeestoscampos,puedesersustituidoporlapalabraFILLER.

PICTURE.
Estaclusulapermitedeclarareltipoyeltamaodeuncampoelemental.Eltipodeterminalainformacinquepuede

almacenarseenelcampo,ascomolasoperacionesdequeconlpuedanrealizarse.Suformatoeselsiguiente:

Eltipodecampo,dependedeloscaracteresqueseempleenparadefinirlaespecificacindeformato.Loscamposlos
podemosclasificarenalfabticos,alfanumricosynumricos.
La longitud del campo viene dada por el numero de caracteres empleados en la especificacin de formato para
declararelcampo.Elmximonumerodecaracterespermitidoes30.

CAMPOSALFABTICOS.
Permitenalmacenarnicamenteletrasy/oblancos.Elcarcterqueseempleaparadefiniruncampodeestetipoesla
A.

CAMPOSALFANUMRICOS.
PermitenalmacenarcualquiercarcterdeljuegodecaracteresASCII.Elcarcterqueseempleaparadefiniruncampo
deestetipoeslaX.

CAMPOSNUMRICOS.
Permitenalmacenarcualquiervalornumrico.TenerencuentaqueenCOBOLnosepermitennmerossuperioresa18
cifras.Loscaracteresqueseempleanparadefiniruncampodeestetiposin:9,S,VyP.
Elsignificadodecadaunodeloscaracteresquepuedenintervenirenunaespecificacindeformatoparauncampo
numricoes:
9

Representauncifradel01al9.

Indica la aparicin del signo + o . El signo no es obligatorio, pero es conveniente ponerlo


porquesinoCOBOL,despusdecadaoperacinlosuprimesistemticamente,loquerepercute
en un mayor tiempo de ejecucin. Cuando se pone, debe ser el primer carcter de la
especificacindeformato.

Representa la posicin de un punto decimal implcito. Se utiliza internamente para alinear las
partesdecimalesdeloscampos,cuandosequiererealizarunaoperacin.

Indicaunacifravirtual,representandouncero.Paralaquenosehareservadounaposicinde
memoria.

PICTUREparalaedicin.
Paravisualizarporpantallaoescribirporlaimpresorauncampo,ademsdeloscaracteresA,X,9,VyPsedispone
deloscaracteres:
Z*.,0B/CRDB$+
Elsignificadodecadaunodeestoscaractereseselsiguiente:
Z

Representaunacifradel0al9.Silacifraaescribirsecorrespondeconun0nosignificativo,se
escribeensulugarunespacioenblanco.

Representaunacifradel0al9.Silacifraaescribirsecorrespondeconun0nosignificativo,se
escribeensulugarun*.

LoscaracteresZy*nopuedenirprecedidos,perosiseguidosdelcarcter9.
.

Elpuntohacequeseinserteunpuntodecimalparasepararlaparteenteradelapartedecimal.

Lacomahacequeseinserteestemismocarcterenellugarqueseindicaenlaespecificacinde
formato.
LaclusulaDECIMALPOINTISCOMMAenlaENVIRONMENTDIVISION,permiteinvertirel
papeldelpuntoylacomaenlasespecificacionesdeformatoenlaedicin.

Permite que se inserte un espacio en blanco en el lugar que se indica en la especificacin de


formato.

Permitequeseinserteunceroenellugardequeseindicaenlaespecificacindeformato.

Permitequeseinserteunabarraenellugardequeseindicaenlaespecificacindeformato.

CR

Smbolobancarioindicativodecrdito.Solopuedecolocarsealaderechadelaespecificacinde
formato.CRaparecesobrelalneaqueseimprimesielvaloresnegativo.Sielvalorespositivo
aparecernensulugar2espaciosenblanco.

DB

Smbolobancarioindicativodedbito.Solopuedecolocarsealaderechadelaespecificacinde
formato.DBaparecesobrelalneaqueseimprimesielvaloresnegativo.Sielvalorespositivo
aparecernensulugar2espaciosenblanco.

Uncarcter$colocadoenelprimerlugarenlaespecificacindeformato,permitelaaparicinde
estecarcterenellugarindicado.

Un carcter + colocado en primer o ultimo lugar en la especificacin de formato, permite la


aparicindeun+paravalorespositivosydeunparavaloresnegativosenellugarindicado.

Un carcter + colocado en primer o ultimo lugar en la especificacin de formato, permite la


aparicin de un espacio en blanco para valores positivos o un para valores negativos en el
lugarindicado.

$$...

Laaparicinenunaespecificacindeformatodencaracteres$,permiteeditarunvalorden1
cifras.Silacifraaescribirsecorrespondeconun0nosignificativo,seescribeensulugarun
espacio en blanco, excepto a la izquierda de la primera cifra significativa que se inserta un
carcter$.

++...

Laaparicinenunaespecificacindeformatodencaracteres+,permiteeditarunvalorden1
cifras.Silacifraaescribirsecorrespondeconun0nosignificativo,seescribeensulugarun
espacio en blanco, excepto a la izquierda de la primera cifra significativa que se inserta un
carcter+paralosvalorespositivosounparalosvaloresnegativos.

Laaparicinenunaespecificacindeformatodencaracteres+,permiteeditarunvalorden1
cifras.Silacifraaescribirsecorrespondeconun0nosignificativo,seescribeensulugarun
espacio en blanco, excepto a la izquierda de la primera cifra significativa que se inserta un
carcterparalosvaloresnegativos.

LaclusulaDECIMALPOINTISCOMMA,permiteutilizarlacomadecimalenlugardelpuntodecimal.Sinembargo,
esteproblemapuedeserresueltosinnecesidaddeespecificarestaclusula.Paraelloindicaremosenlaespecificacin
deformatoellugardelacomamedianteelcarcterVeinsertaremosasuizquierdaoderechaelcarctercoma\.

USAGE.
Estaclusulapermiteindicarconosealmacenarenmemoria,valorenuncamponumrico.Suformatoeselsiguiente:

DISPLAYeslaopcinpordefecto.Conestaopcin,caracarcterseanumricoono,ocupaunbyteooctetoen
memoria,representadoenASCII.Losvaloresnumricossonalmacenadosenbase10.
COMPyCOMP4tienenelmismosignificado.Seempleanconcamposnumricosylosvaloressonalmacenadosen
losmismosenbinariopuro.Empleandolarepresentacincomplementoa2.
COMP3seempleasoloconcamposnumricosyhacequeunvalorseaalmacenadoenbinariodecimalempaquetado
(BCD).Elsemioctetomenossignificativocontieneelsigno.
COMP5esunformatosimilaraCOMP,conladiferenciadequeelvalorquepuedealmacenarse,nodependedel
numero de 9 indicados en la clusula PIC, si no del numero binario mas grande que pueda almacenarse en ese
espacio.
COMPXesunformatosimilaraCOMP.Conrespectoaestetienelassiguientesdiferencias:
*a)LaespecificacindeformatopuedeestarformadatotalmenteporX.
*b)TantosilaespecificacindeformatoestaconstituidaporXopor9,elvalorque
puede almacenarse queda limitado al numero binario mas grande que pueda
almacenarse.
* c) El uso de COMPX con elementos utilizados en operaciones aritmticas, esta
restringido a las operaciones ADD, SUBSTRACT, MULTIPLY y DIVIDE no
permitindose el empleo de ON SIZE ERROR. Si el resultado obtenido con estas
operacionesesdemasiadogrande,setrunca.Sielresultadonoesunentero,setrunca
lapartedecimal.Sielresultadoesnegativosealmacenaencomplementoa2.

VALUE.
Estaclusulapuedeutilizarseenestaseccin,paraasignarunvalorauncampoconnivel88,nombresdecondicin,
para asignar un valor a una constante identificada por un nombre o bien para inicializar campos de datos con un
determinadovalor.
Formato:
VALUEliteral.

SIGN.
Esta clusula especifica la posicin y el modo de representacin del signo operacional de un campo numrico en
cuyaespecificacindeformatosehaespecificadoS.Suformatoeselsiguiente:

LaclusulaSIGNseaplicaacamposnumricosdescritoscomoUSAGEISDISPLAY.SilaclusulaSEPARATEnose
especifica,elsignodelnumeroesincorporadoeneldgitodeladerecha(TRAILING)oeneldgitodelaizquierda

(LEADING).EnestecasoelcarcterSdelaPICTUREnosetieneencuentaparadeterminareltamaodelcampo.
SilaclusulaSEPARATEseespecifica,entonceselsignoesalmacenadocomouncarcterseparadoadicionalalos
dgitos.EnestacasoelcarcterSsetieneencuentaparadeterminareltamaodelcampo.
SilaclusulaSIGNnoseespecifica,generalmentelaposicinpordefectoesalaizquierda.

JUSTIFIED.
Estaclusulapermitejustificarunvaloralfabticooalfanumricoaladerecha.Suformatoeselsiguiente:

Esta clusula puede especificarse solamente con campos elementales u no puede especificarse para un campo
descritocomonumricoodeedicin.

BLANK.
Esta clusula llena un campo numrico con espacios cuando su valor sea cero. De esta forma, eliminan todos los
caracteresdeinsercin,encasodequelazonaaeditarseanula.Suformatoeselsiguiente:
BLANKWHENZERO.
EstaclusulapuedeespecificarsesolamenteconcamposnumricoselementalesconformatoDISPLAYoconcampos
numricosdeedicin.

OCCURS.
Estaclusulapermitedefinirunaestructuradedatosdenominadatabla.Unatablaesunconjuntodeelementostodos
delmismotipo,estoes,conidnticosatributos.Suformatoeselsiguiente:
OCCURSnTIMES.
LaclusulaOCCURSindicaelnumerodeveces,n,queserepiteunelemento(camposimpleocompuesto)conla
mismadescripcin.
Elsubndicecorrespondientealprimerelementoes1.Elsubndicepuedeserunnumeroenteroounnombrededatos.
Siesunnombrededatosserecomiendadeclararloconformatobinario(COMP).
LaclusulaOCCURSnopuedeespecificarseenunadescripcinconnumerodenivel01o77.
UnatablaenCOBOLpuedetenerhasta3subndices.Enestecasosedicequelatablaesde3dimensiones.
LaclusulaOCCURSyVALUEsonincompatibles,locualnopermiteinicializarunatablaensupropiadeclaracin.

REDEFINES.
Estaclusulapermitedarauncampooaunreadememoriamasdeunnombreymasdeunformato.Suformatoesel
siguiente:

LaclusulaREDEFINEShadeserlaprimeraquesigaalnombrededatos.

Loscamposnombrededato1ycamposnombrededato2handeestardeclaradosalmismonivel,peronoanivel66
u88.
Laredefinicindeuncampocompuestosehaceinmediatamentedespusdelultimodeloscamposelementalesque
formanpartedeaquel.
Estaclusulavaapermitirpoderinicializarunatablaenelmomentodedeclararla.

Secciondeenlace.
Esta seccin permite declarar campos de memoria para ser utilizados por otros programas y por consiguiente
conservarlosdatosdeunprogramaparaotro.

Seccindecomunicaciones.
Estaseccionpermiteprocesarmensajesycontrolarelflujodelosmismos.

Seccindeinformes.
Estaseccinpermitecrearundormatoespecificoparaimprimirunficherodesalida.

Seccindepantalla.
Estaseccinpermitecontrolarlarepresentacindelosdatosenpantalla.
lafac u.c omnoseresponsabilizaporelusoqueotrosoterceros,puedandarleaestainformacin.

Capitulo4

4LadivisinPROCEDURE.

Introduccin.
LaDIVISINDEPROCEDIMIENTOSindicalasecuenciadeoperacionesnecesarias,sentenciasCOBOL,para
resolverunproblemadado.
Elformatogeneralparaestadivisineselsiguiente:

[DECLARATIVES.
{NombredeSeccinSECTION[numerosegmento].[sentenciaUSE].
[Nombredeprrafo.[sentencia]...]...}...
ENDDECLARATIVAS.]
{NombredeSeccinSECTION[numerosegmento].[sentenciaUSE].
[Nombredeprrafo.[sentencia]...]...}...
La clusula USING se especifica solamente en programas que luego son llamados (CALL) o enlazados
(CHAIN).LasentenciaUSEcuandoesejecutadalaseccin.
Como las otras divisiones, la PROCEDURE DIVISION, puede ser dividida en secciones y estas a su vez en
prrafos.Cadaprrafogeneralmenteagruparvariassentencias.Ladivisinenseccionesesopcionalyespoco
utilizada,encambioladivisinenprrafosesfrecuente.
OpcionalmentelaPROCEDUREDIVISIONpuedecontenerseccionesDECLARATIVAS.Encasodeutilizarlas,
estasdebenserlasprimerasendefinirse.Sufinalidadeseltratamientodeerrores.

Sentenciasbsicas
Visualizardatos.DISPLAY.
Estasecuenciapermitevisualizardatosporpantallaoimprimirlosdirectamenteenlaimpresora.Suformatoesel
siguiente:
Formato1:

El nombre mnemnico debe ser un nombre asociado a un nombre de funcin, nombre reconocido por el
compiladorenelprrafoSPECIALNAMES.
Elliteralpuedeserunaconstantefigurativa,exceptoALL,unaconstantedecaracteresounliteralnumrico.
LaopcinNOADVANCINGhacequeelcursornoavancedelnea,unavezquesehaejecutadolasentencia
DISPLAY.
CuandoutilizamoslaclusulaUPON,elnombresimblicodebedeclararseenelprrafoSPECIALNAMES.Si
enlugardeutilizarunnombremnemnicoutilizamosunnombredefuncinelresultadoeselmismo.
Formato2:

LoscamposelementalesdebentenercomoUSAGE,DISPLAY.
LaclusulaATdalaposicindepantalladondevaacomenzarlaoperacindeescritura.
LafraseUPONCRT,eslaopcinpordefectoeindicavisualizarlosdatosindicadosporpantalla.
La frase MODE IS BLOCK hay que especificarla cuando nombre de datos1 corresponde a un campo
compuestoyparaquelosdatoselementalesnombradosconFILLERseantenidosencuenta.Estoes,nombre
dedatos1esconsideradocomouncampoelemental.
Sinoseespecificanombrededatos1oliteral1,DISPLAY,sinmasmueveelcursoralaposicinindicada.
Sinombrededatos1esunaconstantefigurativa,tieneunefectoespecialqueindicamosacontinuacin:
SPACE

Limpialapantalladesdelaposicindelcursorespecificada,hastaelfinaldelamisma.

LOWVALUE

Mueveelcursoralaposicinespecificada.

ALLX01

Limpiadesdelaposicindelcursorespecificada,hastaelfinaldelalnea.

ALLX02

Limpiatodalapantalla.

ALLX07

Suena,envaunpitido.

Opciones.
BELLoBEEP

Esta clusula emite un sonido cada vez que DISPLAY es


ejecutado.

BLINK

Estaclusulahaceparpadearelelementovisualizado.

HIGHLIGTH

Estaclusulahacequeelelementovisualizadoaparezcaenalta
intensidad

REVERSEVIDEO

Esta clusula hace que el elemento visualizado aparezca en


vdeoinverso.
Estaclusulaseutilizacon campos elementales y especifica el
tamao del campo. Si el tamao especificado es menor que el
especificadoenlaclusulaPIC,solamenteaparecerlaporcin
delaparteizquierdaysieltamaoespecificadoesmasgrande
serellenaconblancos.

UNDERLINE

Esta clusula hace que el elemento visualizado aparezca


subrayado.

FOREGROUNDCOLORISentero

Esta clusula especifica el color en el que es visualizado el


elemento.Enteroesunvalorentre0y7.

BACKGROUNDCOLORISentero

Esta clusula especifica el color de fondo sobre el que es


visualizadoelelemento.Enteroesunvalorentre0y7.

BLANKSCREEN

Borralapantalla.

BLANKLINE

Borraunalnea.

Leerdatosdelteclado.ACCEPT.
Esta sentencia permite asignar a uno o mas campos de datos. Valores desde el teclado. Su formato es el
siguiente:

EstasentenciapermiteasignaranombrededatoselvalordelasconstantesDATE,DAYyTIME.
Elcontenidodeestasconstanteses:
DATE esunaconstantedeseiscifrasdelaformaAAMMDD,dondeAAsonlasdosultimascifrasdel
ao,MMeselmesyDDeselda.
DAY

esunaconstantedecincocifrasdelaformaAANNN,dondeAAsonlasdosultimasdelaoy
NNNeseldadelao.

TIME

esunaconstantede8cifrasHHMMSSCC,dondeHHeslahora(00..23),MMsonlosminutos,
SSsonlossegundosyCCsonlascentsimasdesegundo.

Formato2:

El nombre mnemnico debe ser un nombre asociado a un nombre de funcin, nombre reconocido por el
compilador,enelprrafoSPECIALNAMES.
Formato3:

Una sentencia ACCEPT es tratada bajo este formato si va seguida de alguna de las clusulas AT, UPON,
MODEoWITH,sinesconsideradacomounasentenciaACCEPTestndar(ANSI)vistaanteriormente.
Loscamposelementalesennombrededatos1debentenerunaUSAGEDISPLAY.
LaclusulaATdalaposicindepantalladondevaacomenzarlaoperacindelectura.Sinoseespecifica,se
suponelalnea1,columna1.
LasclusulasLINEyCOLpuedenaparecerencualquierordenysirvenparaespecificarlalneaylacolumna
respectivamente,dondevaacomenzarlalectura.Elnumerodelneavieneespecificadopornombrededatos2
oporentero1yelnumerodecolumnapornombrededatos3oporentero3.
LafraseUPONCRT,eslaopcinpordefectoeindicaaceptareldatoindicadoporlaconsola.
Sinombrededatos1correspondeauncampocompuesto,ylafraseMODEISBLOCKnosehaespecificado,
entoncesloscamposelementalescorrespondientesquenoseanFILLERsonaceptadosenelordenqueestn
especificados y separados por un numero de espacios en blanco igual a la longitud del campo FILLER
correspondiente. Si esta frase se especifica entonces nombre de datos1 es considerado como un campo
elemental.
Opciones:
BELLoBEEP
BLINK

esta clusula emite un sonido cada vez que ACCEPT es


ejecutado.
Estaclusulahaceparpadearelelementoaceptado.

HIGHLIGHT

Estaclusulahacequeelelemento aceptado aparezca en alta


intensidad.

REVERSEVIDEO

Estaclusulahacequeelelementoaceptadoaparezcaenvdeo
inverso.
Estaclusulaseutilizaconcamposelementalesyespecificael
tamaodelcampo.Sieltamaoespecificadoesmenorqueel
especificado en la clusula PIC, prevalece el tamao
especificadoporlaclusulaSIZEysieltamaoesmasgrande
prevaleceelespecificadoporlaclusulaPIC.

UNDERLINE

Esta clusula hace que el elemento aceptado aparezca


subrayado.

FOREGROUNDCOLORISentero

Especificaelcolorenelqueseescribeelelementoaceptado.

BACKGROUNDCOLORISentero

Especificaelcolordefondosobreelqueseescribeelelemento
aceptado
Esta clusula marca sobre la pantalla con el carcter
especificado, los posiciones vacas mientras se ejecuta la

operacinACCEPT.PROMPTsincarcterutilizaelcarcterpor
defecto(carcterdesubrayado).
AUTO

EstaclusulaterminaautomticamenteunoperacinACCEPT
cuandoseteclaelultimocarcter.

FULLoLENGTHCHECK

Esta clusula obliga a dejar el campo completamente vaco o


completamentelleno.

REQUIREDoEMPTYCHECK

Estaclusulaobligaanodejarelcampocompletamentevaco.

SECUREoNOECHO

Estaclusulaimpidequeloscaracterestecleadosaparezcanen
lapantalla.

UPDATE

Esta clusula permite visualizar el contenido del campo antes


deefectuarlaentrada.

RIGHTJUSTIFY

Esta clusula ajusta el contenido de un campo numrico


editado o no editado, a la derecha una vez que se finaliza
ACCEPT. Para ello es necesario que se especifique
simultneamentelaclusulaSIZE.

Si se especifica la frase ON EXCEPTION y la operacin ACCEPT no termina satisfactoriamente, se ejecuta


sentencia1,queesunasentenciaimperativa(nocondicional).SiseespecificalafraseNOTONEXCEPTIONy
la operacin ACCEPT termina satisfactoriamente, se ejecuta la sentencia2, que es tambin una sentencia
imperativa.
OpcionalmentesepuedeutilizarlafraseENDACCEPTlacualdelimitaelmbitodelACCEPT.
Movimientosdedatos.MOVE:
Estasentenciapermitetransferirdatosdeuncampodememoriaaotrooaotros.Suformatoeselquesigue:
Formato1:

Losdatoscontenidosenelcamponombredato1oenelliteralsonmovidosalcamponombredatos2.Despus
derealizarseestaoperacindemover,losdoscamposcontendrnlosmismosdatos.
SiacontinuacindelaclusulaTOespecificamosmasdeuncampo,elcontenidodelcamponombredato1se
muevaatodosellos.
Normasparasuutilizacin.
Enlatransferenciadeuncampoelementalaotroelementalsepuedenpresentarlosdoscasos
siguientes.
1Movimientodeuncamponumricoaotronumrico(nodeedicinodeedicin).
Enestecasoloscamposorigenyreceptorsealineanporelpuntodecimal.Sieltamao
del campo receptor es menor que el tamao del campo emisor, se produce un
truncamientodelaparteenteray/odecimal.Encasocontrario,serellenaconceros no
significativoscualquieradelaspartes.
Encasodequeelcamporeceptorseadeedicin,sesiguenlasmismasreglasexpuestas
paralaclusulaPICTURE.
2Movimientodeuncampodecualquiertipoaotrodetipoalfabticooalfanumrico.(Node

edicinodeedicin).
Enestecasoelcontenidodelcampoemisorsevacolocandoenelcamporeceptor de
izquierdaaderecha,exceptocuandoenelcamporeceptorsehayadeclaradolaclusula
JUSTIFIEDRIGTH,encuyocaso,elcontenidosercolocadodederechaaizquierda.
Sieltamaodelcamporeceptoresmenorqueelcampoemisorseproducetruncamiento.
Encasocontrarioserellenaconespaciosenblanco.
Sielcamporeceptoresdeedicin,sesiguenlasmismasreglasexpuestasparalaclusula
PICTURE.
Enlatransferenciadeuncampocompuestosepuederealizardedosformas:
1Comouncampoelemental,cuyalongitudeslasumadeloscamposelementalesqueloforman.
Enestecasoelcamporeceptoresconsideradocomouncampoelementalalfanumrico.
2Moviendoloscamposelementalesunoauno.
Formato2:

Cuandoseutilizaestaclusulatodosloscampostienenquesercompuestos.
Utilizando la clusula CORR con la sentencia MOVE, es posible mover un numero variable de campos
elementalespertenecientesanombredato1anombredato2quetenganelmismonombre.
Loscamposconigualnombretienenqueocuparlamismaposicinjerrquicaenamboscamposcompuestos.
Si los campos elementales pertenecen a subgrupos del campo compuesto, los nombres de estos subgrupos
tienentambinquecoincidirenamboscamposcompuestos.
Sentenciadeasignacin.COMPUTE.
Estasentenciapermiteasignaraunoomascampos,elvalordeunliteralnumrico,deotrocamponumricoo
deunaexpresinaritmtica.Suformatoeselsiguiente.

Sentencia1ysentencia2sonsentenciasnocondicionales(sentenciasimperativas).
LafraseENDCOMPUTEsolopuedeserutilizadaconlafraseSIZEERROR.
OpcinROUNDED.
Esta opcin, que sigue al nombre del campo que deber contener el resultado, permite redondear dicho
resultado.Esteredondeoconsisteenaadirunaunidadenlaciframenossignificativaalmacenada,silaprimera
decimaltruncadaes5omayorde5.
OpcinONSIZEERROR.
Durantelaejecucin,sepuededarunresultadocuyonumerodecifrasenterassupereeltamaodelaparte

entera del campo receptor. Esto produce un truncamiento de las cifras mas significativas del resultado. La
opcin ON SIZE ERROR, permite tomar una determinada accin, si se produce este caso, ejecutando la
sentencia imperativa escrita a continuacin de la misma. De esta forma se controla cualquier anomala que
puedaocurrirenlaejecucindeunaoperacinaritmtica.Unejemplotpicoesladivisinporcero.
Porelcontrario,lasentenciaimperativaquesiguealafraseNOTONSIZEERROR,seejecuta,sidurantela
ejecucindeunaoperacinaritmticanoocurreningunaanomala.

SentenciaADD
Estasentenciapermitesumardosomasoperandosnumricosyalmacenarelresultadoenunoovarioscampos
elementales.
Formato1:

OpcinTO.
Estaopcinhacequelosvaloresdelosoperandosasuizquierdaseanaadidosalosvaloresasuderecha.
Todoslosoperandostienenquesernumricos.

LafraseENDADDpuedesersolamenteutilizadaconlafraseSIZEERROR.
Formato2:

OpcinGIVING.
La suma de los operandos que preceden a la palabra GIVING, pueden ser almacenados en cada uno de los
camposquesiguenadichapalabra.LoscamposelementalesqueestnacontinuacindelapalabraGIVING
puedensernumricosonumricoseditados.
Formato3:

Loscamposelementalesdenombredato1,sernsumadosaloscamposdeigualnombredenombredato2.El
resultadoquedaalmacenadoenloscamposelementalesdenombredato2.
SentenciaSUBTRACT.
LasentenciaSUBTRACTesutilizadapararestarundatonumrico,olasumadedosomasdatosnumricos,de
unoomascamposdejandoelresultadoenunoomascampos.
Formato1:

Con este formato, todos los operandos que preceden a la palabra FROM se suman y el total es restado de
nombre dato2, almacenando el resultado en el mismo campo, y repitiendo el proceso para el resto de los
camposquesiguenalapalabraFROM.
Formato2:

Conesteformato,todoslosoperandosqueprecedenalapalabraFROMsonsumadosyeltotal,esrestadoal
valoractualdeliteral2odenombredato2,almacenandoelresultadoenloscamposquesiguenalapalabra
GIVING.
Formato3:

Cuandoseutilizaesteformatoloscamposelementalesdenombredato1sonrestadosdeloscorrespondientes
camposelementalesdenombredato2.
SentenciaMULTIPLY.
LasentenciaMULTIPLYesutilizadaparamultiplicarundatonumricoporotrouotrosdatosnumricosydejar
elresultadoenunoomascampos.
Formato1:

Conesteformato,eloperandoqueprecedealapalabraBYsemultiplicaporelvalorquelasigue,almacenando
elresultadoennombredato2,yrepitiendoelprocesoparatodosloscamposquesiguenaBY.
LafraseENDMULTIPLYpuedesersolamenteutilizadaconlafraseSIZEERROR.
Formato2:

Conesteformato,eloperandoliteralonombredato1semultiplicaporliteral2onombredato2,almacenando
losresultadosenloscamposquesiguenalapalabraGIVING.
SentenciaDIVIDE.
LasentenciaDIVIDEesutilizadaparadividirunoomasdatosnumricosporotroydejarelresultadoenunoo
mascampos.
Formato1:

Conesteformato,eloperandoqueprecedealapalabraINTOactacomodivisordelvaloractualdenombre
dato2,almacenandoelresultadoenestemismocampo,yrepitiendoelprocesoparaelrestodeloscamposque
siguenalapalabraINTO.

LafraseENDDIVIDEpuedeserutilizadasolamenteenelcasodequeseespecifiquelafraseSIZEERROR.
Formato2:

Con este formato el operando literal o nombre dato1 acta como divisor de nombre dato2 o literal2,
almacenandoelresultadoenloscamposquesiguenalapalabraGIVING.
Formato3:

Con este formato el operando literal o nombre dato1 se dividen por el valor de literal2 o nombre dato2,
almacenandolosresultadosenloscamposquesiguenalapalabraGIVING.
Formato4:

Con este formato el operando literal o nombre dato1 acta como divisor de nombre dato2 o literal2,
almacenando el valor en los campos que siguen a la palabra GIVING y el resto de la divisin en el campo
nombredato4.Elrestopuedeserenteroodecimalysecalcularestandodeldividendoelproductodelcociente
poreldivisor.Elcalculodelresto,nosetieneencuentaelredondeoencasodequesehayaespecificadola
clusulaROUNDED.
Formato5:

Conesteformatoeloperandoliteralonombredato1sedivideporelvaloractualdenombredato2oliteral2,
almacenando el valor en los campos que siguen a la palabra GIVING y el resto de la divisin en el campo
nombredato4.Elrestopuedeserenteroodecimalysecalcularestandodeldividendoelproductodelcociente
poreldivisor.Elcalculodelresto,nosetieneencuentaelredondeoencasodequesehayaespecificadola
clusulaROUNDED.
lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo5.

5Sentenciasdecontrol.
Ejecucincondicional.SentenciaIF.
LasentenciaIFtomaunadecisinreferentealaaccinaejecutarenunprograma,basndoseenelresultado,
verdaderoofalso,deunacondicin.Suformatoes:

LacondicinvienedadaporunaexpresindeBOOLE.
Sienlacondicinintervienenoperadoresdediferentestipos,losoperadoresaritmticostienenmayor
prioridad,despusseejecutanlosoperadoresderelacinyporultimolosoperadoreslgicos.
LaformaenqueseejecutalasentenciaIFeslasiguiente:
Sielresultadodelacondicinesverdadero,seejecutarloindicadoporlaaccin1.
Sielresultadodelacondicinesfalso,seejecutarloindicadoporlaaccin2.
Sielresultadodelacondicinesfalso,ylaclusulaELSEsehaomitido,laaccin1seignora.
En cualquier caso de los anteriormente expuestos, la ejecucin continua con la siguiente
sentenciaejecutable.
ElmbitodelasentenciaIFfinalizadecualquieradelasformassiguientes:
1Porunpunto.
2PorlaclusulaENDIF.
Cuando la accin1 o la accin2 estn formadas por varias sentencias, solamente la ultima finaliza con un
punto,yaqueesteindicaelfinaldeunasentenciaIF.
SiseespecificalafraseENDIFnosepuedeutilizarlafraseNEXTSENTENCE.
Pruebasderelacin:
Elformatogeneralparaformaruncondicinderelacines:

Condicionescombinadas.
UnacondicincombinadaestaformadaporunconjuntodecondicionessimplesunidasporlosoperadoresOR
yAND.Elformatoeselsiguiente:

Tambin, hay que tener presente que el operador NOT puede preceder a una condicin simple o a una
condicincombinada.
Pruebasdeclase.
Permitensabersiuncampoesnumricooalfabtico.

Pruebasdesigno.
Permitendeterminarsielvalordeuncamponumricodeunaexpresinaritmticaespositivo,negativoocero.
Elformatogeneraleselsiguiente:

Pruebasdenombredecondicin.
Permitenprobarsiunnombredecondicinalqueselehaasociadoundeterminadovalor,coincideconelvalor
delcampodedatosdelcualdepende.
AnidamientodesentenciasIF.
LassentenciasIF...THENpuedenestaranidadas.Estoquieredecirquecomoaccin1oaccin2,deacuerdo
conelformato,puedeescribirseotrasentenciaIF.
EstructuraIF.
La estructura presentada a continuacin, aparece con bastante frecuencia y es por lo que la damos un
tratamientoporseparado.EstaestructuraesconsecuenciadelanidamientodesentenciasIF.

Sisecumplelacondicin1,seejecutanlassentencias1ysinosecumplenseexaminansecuencialmentelas
condiciones siguientes hasta ELSE, ejecutndose las sentencias correspondientes al primer ELSE IF, cuya
expresinseacierta.Sitodaslasexpresionessonfalsas,seejecutanlassentenciasncorrespondientesalultimo

ELSE.Encualquiercaso,secontinuaconlasiguientesentenciaenlaestructura.
Llamadaaprocedimientos.SentenciaPERFORM.
La sentencia PERFORM es utilizada para transferir explcitamente el control a uno o mas procedimientos y
devolverelcontrolimplcitamente,cuandolaejecucindelprocedimientoespecificado,finalice.
LasentenciaPERFORMsepuedeutilizarparacontrolarlaejecucindeunaomassentencias,lascualesestn
dentrodelmbitodelasentenciaPERFORM.
Formato1:
PERFORMprocedimiento1[THRUprocedimiento2]
SinoseespecificalasentenciaTHRU,lasentenciaPERFORMejecutaunavez,elconjuntodesentenciasque
forman el procedimiento1. Si la opcin THRU se especifica, entonces se ejecutan, una vez todos los
procedimientosexistentesenelprogramaentreprocedimiento1yprocedimiento2,ambosinclusive.
Formato2:

SinoseespecificalaopcinTHRU,lasentenciaPERFORMejecutaelnumerodevecesespecificadoporentero
o por un nombre de datos, le conjunto de sentencias que forman procedimiento1. Si la opcin THRU se
especifica, entonces se ejecutan el numero de veces especificado, todos los procedimientos existentes en el
programaentreprocedimiento1yprocedimiento2,ambosinclusive.
Formato3:

Cuandoseempleaesteformato,lasentenciaPERFORMejecutaelnumerodevecesespecificadoporenteroo
pornombrededatos,elconjuntodesentenciasquehayentrePERFORMyENDPERFORM.Unpunto,como
finaldealgunadelassentenciasdeestaestructura,daralugaraunerror,yaqueseentenderacomofinaldela
sentenciaPERFORM.
Formato4:

SinoseespecificalaopcinTHRU,lasentenciaPERFORMejecutaelconjuntodesentenciasqueformanel
procedimiento1 hasta que la condicin sea verdad. Si la opcin THRU se especifica, entonces se ejecutan,
hastaquelacondicinseaverdad,todoslosprocedimientosexistentesenelprogramaentreprocedimiento1y
procedimiento2,ambosinclusive.
Laejecucin,sinosehaespecificadolaopcinWITHTEST,serealizadelaformasiguiente:
1Seevalalacondicin.Siescierta,sedaporfinalizadalaejecucinde
lasentenciaPERFORMysepasaalasentenciasiguienteenelprograma,
siesfalsasepasaalpunto2.

2 Se ejecuta el procedimiento1 hasta el procedimiento2, si ha sido


especificado,ysevuelvealpunto1.
La opcin TEST BEFORE, evala la condicin antes de la ejecucin, esto quiere decir que la ejecucin se
efectuara0omasveces.Eslaopcinpordefecto.
La opcin TEST AFTER, evala la condicin despus de la ejecucin, esto quiere decir que la ejecucin se
efectuaraunaomasveces.
Formato5:

Cuando se emplea este formato, la sentencia PERFORM ejecuta el conjunto de sentencias que hay entre
PERFORM y ENDPERFORM hasta que la condicin sea verdad. Un punto, como final de alguna de las
sentenciasdeestaestructura,daralugaraunerror,yaqueseentenderacomofinaldelasentenciaPERFORM.
Formato6:

Laejecucin,sinosehaespecificadolaopcinTESTAFTER,serealizadelaformasiguiente:
1Elnombredato1seinicializaalvalorespecificadoporliteralonombre
dato2quesigueaFROM.
2Seevalalacondicin.Siescierta,sedaporfinalizadalaejecucinde
lasentenciaPERFORMysepasaalasentenciasiguienteenelprograma.
Siesfalsasepasaalpunto3.
3 Se ejecuta el procedimiento1 hasta el procedimiento2, si ha sido
especificado.
4Sesumaanombredato1elvalorespecificadopornombredato3que
sigueaBY,ysevuelvealpunto2.
Formato7:

Laejecucin,sinosehaespecificadolaopcinTESTAFTER,serealizadelaformasiguiente:
1Elnombredato1seinicializaalvalorespecificadoporliteralonombre
dato2quesigueaFROM.
2Seevalalacondicin.Siescierta,sedaporfinalizadalaejecucinde
lasentenciaPERFORMysepasaalasentenciasiguienteenelprograma.
Siesfalsasepasaalpunto3.
3SeejecutanlassentenciasentrePERFORMyENDPERFORM.
4Sesumaanombredato1elvalorespecificadopornombredato3que
sigueaBY,ysevuelvealpunto2.
Formato8:

Laejecucin,sinosehaespecificadolaopcinTESTAFTER,serealizadelaformasiguiente:
1 El nombre dato1 y el nombre dato4 se inicializan a los valores
respectivosquesiguenacadaFROM.
2Seevalalacondicin1.Siescierta,sedaporfinalizadalaejecucin
de la sentencia PERFORM y se pasa a la sentencia siguiente en el
programa.Siesfalsasepasaalpunto3.
3Seevalalacondicin2.Siescierta,elnombredato4seinicializa al
valor especificado por literal2 o nombre dato4 que sigue a FROM,
tambinsesumaanombredato1elvalorespecificadopornombredato3
quesigueaBYysecontinuaenelpunto2.Siesfalsasepasaalpunto4.
4Seejecutanlassentenciasentreprocedimiento1yprocedimiento2,si
hasidoespecificado.
5Sesumaanombredato4elvalorespecificadopornombredato6que
sigueaBY,ysevuelvealpunto3.
Losnombresdatoy/opuedenserenterosoreales,positivosonegativosyceroexceptolosnombresdendice
quedebenserenteros.
AnidamientodesentenciasPERFORM.
DentrodelmbitodeunasentenciaPERFORM,puedeespecificarseotrasentenciaPERFORM,aunquehayque

tenerpresenteslassiguientesreglas:
1 El procedimiento PERFORM ejecutado desde el mbito de otro
PERFORMdebesertotalmenteexteriorototalmenteinterioraeste.
2 Los mbitos de dos PERFORM se pueden solapar cuando las
sentenciasdellamadaparasuejecucinestnfueradeestosmbitos.
3LassentenciasPERFORMpuedenseranidadaslibremente.
4 Un procedimiento PERFORM puede llamarse asimismo, esto es, la
recursividadestapermitida.
SentenciaEXIT.
EstasentenciaseutilizacomocomplementodelasentenciaPERFORM,paraproporcionarunpuntofinalpara
unoomasprocedimientos,afindepermitirlasalidadesdecualquierpunto.
Formato:EXIT
LasentenciaEXITformaporsisolaunprrafoidentificadoporunnombre.
SentenciadebifurcacinGO.
EstasentenciapermitetransferirelcontroldesdeunpuntodeladivisinPROCEDUREaotro.
Formato1:
GOTO[nombreprocedimiento]
SepuedeomitirlaescrituradelnombredeprocedimientoutilizandolasentenciaGOTOencombinacinconla
sentenciaALTER,especificandoenestaultimaelnombredelprocedimientoalquesedebebifurcar.
Formato2:
GOTOnombreprocedimiento1[nombreprocedimiento2]...DEPENDINGONnombredatos

SentenciaALTER.
EstasentenciapermitemodificarelpuntoalcualhadebifurcarunasentenciaGO.Suformatoeselsiguiente:
ALTERnombreprocedimiento1TO[PROCEEDTO]nombreprocedimiento2
[nombreprocedimiento3TO[PROCEEDTO]nombreprocedimiento4]...
SentenciaSTOP.
Estasentenciapermitesuspendertemporalodefinitivamentelaejecucindeunprograma.
LasentenciaSTOPRUNterminaelprogramaydevuelveelcontrolalsistemaoperativo.Poresoeslaultima
sentenciaqueseejecuta.
LasentenciaSTOPliteral,suspendelaejecucindelprogramayenvaelliteralespecificadoalapantalla.A
continuacineloperadorpuedecontinuarlaejecucindelprogramaobiendetenerlamisma.
lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo6

6Cadenasdecaracteres.
Introduccin.
Unacadenadecaracteresesunliteralnonumricoestoes,unasecuenciadecaracteres(ennuestrocasoASCII)encerrados
entrecomillassimplesodobles.
SentenciaEXAMINE.
Estasentenciacuentaelnumerodeocurrenciasdeuncarcterdadoenuncampodedatosysiespreciso,estecarcterpuede
serreemplazadoporotro.
Formato1:

Esteformatopermiteexaminary/oreemplazarcaracteresenuncampodedatos.
Formato2:

Esteotroformatopermitesoloreemplazarcaracteresenuncampodedatos.
Elcampodenominadopornombredatotienequeseruncampodecaracteres.
Carcterrepresentaunnicocarcter.Sielcampoesnumricoelcarcterdebeserundgitonumrico(0a9),undgitodel0al9
no numrico ("0" a "9") o la constante figurativa ZERO. Si el campo no es numrico, el carcter puede ser numrico, no
numricoocualquierconstantefigurativaexceptoALL.
La opcin TALLYING crea automticamente un campo entero denominado TALLY que acta como contador. La cuenta
representaelnumerode:
1 Caracteres diferentes del carcter1 hasta la aparicin del carcter igual a carcter1
(UNTILFIRST).
2Vecesqueserepiteelcarcter1enelcamponombredato(ALL).
3Vecesqueapareceelcarcter1antesdeencontrarunodistintoael(LEADING).
CuandoseutilizalaopcinREPLACING,lasreglasdesustitucinsonlassiguientes:
1Elcarcter1oelcarcter3quedasustituidoporelcarcter2oporelcarcter4(ALL).
2Lasustitucinporcarcter2ocarcter4terminacuandoapareceuncarcterdistintoal
carcter1ocarcter3(LEADING).
3Elprimercarcterocarcter3queaparezcaessustituidoporelcarcter2ocarcter4

(FIRST).
4Lasustitucinporcarcter2oporcarcter4finalizacuandoapareceuncarcter1o
carcter3,ocuandosellegaalfinaldelcampo(UNTILFIRST).

SentenciaTRANSFORM.
Estasentenciapermitealterartodosopartedeloscaracteresdeuncampodeacuerdoconunaregladetransformacin.
Formato:
TRANSFORMnombredato1CHARACTERSFROMdato1TOdato2.
Dato1ydato2representanunaconstantefigurativa,unliteralnonumricoounnombrededato.Porlotanto,existennueve
posiblescombinacionesquedeterminanotrastantasreglasdetransformacin.Ambosserndelamismalongitudonumerode
caracteres.
Nombredato1debeseruncampoelementalnonumricoouncampocompuesto.
SentenciaINSPECT.
Estasentenciapermitecontar,reemplazar,ocontaryreemplazarocurrenciasdecaracteressimplesogruposdecaracteresenun
campodedatos.
Formato1:

Formato2:

Formato3:

Formato4:

Formato5:

Formato6:

Nombredato1eselcampoaexaminar.Puedeseruncampoelementalouncampocompuesto.
Nombredato2esuncamponumricoelementalqueseutilizacomocontador.
Nombredato3...Nombredato7serefierenauncampoelementalnumricoononumrico.
Los literal1,...,literal5 y los campos denominados por nombre dato3,.., nombre dato7, pueden tener cualquier numero de
caracteres.
TALLYINGindicaquehayquecontarelnumerodevecesqueaparecelacadenadecaracteresdesignadapornombredato3.
Lacuentasellevaennombredato2.
CHARACTERSindicaquehayquecontartodosloscaracteresdelcampodenominadopornombredato1.
ALLindicaquehayquecontartodaslasincidencias.
LEADINGindicaquehayquecontarsololasprimerasocurrenciascontiguas.
BEFOREINITIALindicaqueelconteosedebeinterrumpirdespusdelaprimeraocurrenciadesignadapornombredato4.
AFTERINITIALindicaqueelconteodebecomenzardespusdelaprimeraocurrenciadesignadapornombredato4.
REPLACINGindicaqueelcampodenominadopornombredato1,hayquereemplazaralgunosotodosloscaracteresporotros
especficosenlasentenciaINSPECT.LasopcionesquesepuedenespecificarconREPLACINGsonlasmismasquesehan
especificado para TALLYING y tienen el mismo significado, si pensamos en que hay que reemplazar en lugar de contar.
ApareceunaopcinmasqueesFIRST.

FIRSTindicaquesolosereemplazalaprimeraocurrenciadelcampodenominadonombredato1.
CONVERTINGindicaquehayqueconvertircadacarcterdeunacadenadecaracteresaloscorrespondientescaracteresde
otra.Ambascadenasdebentenerlamismalongitud.
SentenciaSTRING.
Estasentenciapermiteenlazar(concatenar)elcontenidototaloparcialdedosomascampos,almacenarloelresultadoenun
solocampo.

Formato:

Nombredato1oliteral1,representanlascadenasquedeseamosenlazarynombredato3indicaelcampodondesealmacenar
elresultado.Estecamponodebecontenersmbolosdeedicin.Loscamposemisoresyreceptoresnodebensernumricos.
Loscamposutilizadoscomodelimitadores(DELIMITEDBYnombredato2),soncamposelementalesnonumricosqueindican
hastaquecarcterhayquemover,excluidoeste.
LaopcinSIZEindicaque,elnumerodecaracteresquetienenquesertransferidosescomomuchoigualaltamaodelcampo
receptor.
CadaliteralpuedeserunliteralnonumricoounaconstantefigurativaexceptoALL.
La opcin POINTER permite especificar por medio del campo nombre dato4. La posicin en la que va a ser almacenado el
primercarctertransferido.Estevalorpordefectoes1yesincrementadoen1porcadacarctertransferido.
Si el valor nombre dato4 es menor que 1 o toma un valor mayor que el tamao del campo receptor, la transferencia de
caracteresaestecamposeinterrumpeyseejecutalasentencia1,sisehaespecificadolaopcinONOVERFLOW.Enotro
caso,latransferenciaserealizatotalmenteyseejecutalasentencia2,sisehaespecificadolaopcinNOTONOVERFLOW.
SentenciaUNSTRING.
Estasentenciapermitedividirelcontenidodeuncampoenvarioscampos.

Nombredato1indicalacadenaquehayqueseparar.Elresultadosealmacenaenelcampooloscamposrepresentadosen
nombrecampo4.
Loscamposutilizadoscomodelimitadores(DELIMITED),soncamposelementalesalfanumricosqueindicanpordondehay
que separar el campo denominado por nombre dato1. Si se utiliza la clusula ALL, las posibles ocurrencias consecutivas
indicadasporestoscampos,setratarancomosifueseunanicaocurrencia.
CadaliteralpuedeserunliteralnonumricoounaconstantefigurativaexceptoALL.
SiseespecificalaopcinDELIMITERIN,loscaracteresdelimitadoressontratadoscomodatosalfanumricoselementalesy
almacenadosenloscamposreferenciadospornombredato5.
Si se especifica la opcin COUNT IN, el valor correspondiente al numero de caracteres examinados, excluyendo los
delimitadores,esalmacenadoenelcamporeferenciadopornombredato6.
DELIMITERyCOUNTsolamentepuedenutilizarsesisehaespecificadolaopcinDELIMITEDBY.
SiseespecificalaopcinPOINTERlacadenaidentificadapornombredato1esexaminadaapartirdelaposicinespecificada
porelcamponombredato7.Estaposicinpordefectoes1.Estacampoesincrementadoautomticamenteenunaunidadpor
cadacarcterexaminado.
SiseespecificalaopcinTALLYING,elvalorcorrespondientealnumerodecamposreceptoresactivadosdurantelaejecucin
deunasentenciaUNSTRING,esalmacenadoennombredato8.
SiseespecificalaopcinOVERFLOWyelvalordelcamponombredato7esmenorque1omayorqueeltamaodelazona
emisora, o bien todos los campos receptores se han activado y aun quedan caracteres por examinar en el campo emisor, la
sentencia1 se ejecuta. Si no se da una condicin OVERFLOW y se ha especificado la sentencia NOT ON OVERFLOW
entoncesseejecutalasentencia2.
LaclusulaENDUNSTRINGdelimitaelmbitodeestasentencia.
lafacu.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo7

7Manipulacindetablas.
Introduccin.
Unatablaesunconjuntodeelementosdelmismotipo,quecompartenencomnunnombrecomnperoque
son distinguibles por la posicin que ocupa cada uno de ellos en la tabla. Cada elemento de la tabla puede
contenerundatonumricoounacadenadecaracteresounacombinacindeambos.Larepresentacindeuna
tablasehacemediantevariablessuscritasodesubndicesypuedetenerunaovariasdimensiones.
Descripcindeunatabla.
La descripcin de una tabla se hace en la seccin FILE y en la seccin WORKINGSTORAGE utilizando la
clusulaOCCURS.
ClusulaOCCURS.
Declaraunaestructuradedatosdenominadatabla.Suformatoeselsiguiente:

LaclusulaOCCURSnopuedeespecificarseenunadescripcindenivel01,77,88o66.
Enteroindicaelnumerodevecesqueserepiteuncampoconlamismadescripcin.
Cuando el numero de veces que se repite el campo con la misma descripcin es variable, se emplea la
especificacinentero1TOentero2dondeelvalordeentero1esmenorqueelvalordeentero2.
CuandoseespecificalaclusulaDEPENDING,esparaindicarelnumerodevecesqueserepiteelcampoconla
mismadescripcinesvariableydependedelcamponombradopornombredato1.
Las clusulas ASCENDING o DESCENDING, indican si los elementos de la tabla estan ordenados
ascendentementeodescendentementeporunoomascamposdenominadospornombredato2ynombredato
3...,queformenpartededichoselementos.
LaclusulaINDEXEDseutilizaparaespecificarelnombredendiceondices,cuandoenunatablaordenadase
realizaunabsquedabinaria.
SentenciaSET.
Permitetransferirelvalordeunliteral,nombrededatosodeunndiceaunomasidentificadores.
Formato1:

Cuando se ejecuta esta sentencia el valor del operando que sigue a TO es transferido a los operandos que
siguenaSET.
Formato2

:
Esteformatopermiteirincrementando(UPBY)odecrementando(DOWNBY)elndiceondicesenelvalor
especificadopornombredatooentero.
ClusulaUSAGEINDEX.
Estaclusuladeclarauncampouncampoparaserutilizadocomounndice.
[USAGEIS]INDEX
UncampodendicesolopuedeserreferenciadoporlasentenciasSETySEARCH.
BSQUEDASECUENCIAL.SentenciaSEARCH.
Esta sentencia permite realizar una bsqueda secuencial entre los elementos de una tabla hasta que el
contenidodeunodeellossatisfagaunadeterminadacondicin.

Nombre dato1 se refiere al elemento de la tabla, por lo tanto, su descripcin debe contener una clusula
OCCURSmaslaclusulaINDEXEDBY.Puedesertambinuncamposubordinadoaotroquecontengauna
clusulaOCCURS.
Cuandoseespecificanombredato2debeserdescritopormediodelaclusulaUSAGEISINDEXocomoun
campo elemental entero. El valor de este campo evoluciona paralelamente al ndice de la tabla y se emplea
cuando:
a)Apartederealizarlabsquedadeundeterminadoelementodelatablasedesea
conocersuposicin.
b) Se desea incrementar simultneamente el ndice de otra tabla diferente a la
tablaenlaqueseestarealizandolabsqueda.
LascondicionesdelasclusulasWHENseevalanenelordenenqueestandescritas.
Lassentencias1,2o3,sonsentenciasimperativas,estoescualquiersentencianocondicional.

UnasentenciaSEARCHseejecutadelaformasiguiente:
1.Seinicializaelndiceasociadoconnombredato1,pormediodeunasentencia
SET, con un valor que se corresponde con el numero de elemento de la tabla
dondesedeseequecomiencelabsqueda.
2.Sielvalordelndiceasociadoesmayorqueelnumerodeelementosdelatabla,
labsquedaterminayseejecutalasentenciaquesiguealaclusulaATEND,si
estasehaespecificado.
3. Se evalan las condiciones de las clusulas WHEN en el orden que estan
descritas. Si se satisface alguna de las condiciones, la bsqueda termina y se
ejecuta la sentencia asociada con la condicin satisfecha. Si no se satisface
ningunadelascondicionesseincrementaelvalordevalordelndiceasociado
connombredato1ysecontinuaenelpaso2.
BSQUEDABINARIA.SentenciaSEARCHALL.
Estasentenciarealizaunabsquedabinariaenunatabla.

Nombre dato1 se refiere al elemento de la tabla, por lo tanto, su descripcin debe contener una clusula
OCCURS mas la clusula INDEXED BY y adems la tabla debe estar ordenada por uno o mas campos
pertenecientesadichoelemento,cuestinqueindicaremosconlaclusulaASCENDINGKEYoconlaclusula
DESCENDINGKEY.
lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo8

8FICHEROSDEENTRADAYSALIDA.
Fichero:
Un fichero es una coleccin de informacin que almacenamos en un soporte para poder manipularla en
cualquier momento. Esta informacin se almacena como un conjunto de registros, conteniendo todos ellos
generalmentelosmismoscampos.Campoelementalalmacenaundatonumricoodecaracteres.
Organizacionesbsicas:
Existentresorganizacionesbsicasdelosregistrosdeunfichero,decuyacombinacinsederivanmultitudde
organizacionesposibles.Estasson:
Secuencial.
Relativa.
SecuencialIndexada.

Modosdeacceso:
Encuantoalosmodosotiposdeacceso,distinguimosdos:
Accesosecuencial.
Accesoaleatorioodirecto.
Sehabladeaccesosecuencialcuando se van accediendo a posiciones sucesivas, esto es tras acceder a la
posicin N, se accede a la posicin N+1, y se habla de acceso aleatorio o directo cuando se accede
directamentealaposicindeseada,sinnecesidaddeaccederalasposicionesquelepreceden.
Segneltipoeltipodeorganizacinempleadaparacrearunficheroelmododeaccesopuedeser:

Organizacin

Creacin

Recuperacin

Secuencial

Secuencial

Secuencial

Relativa

Secuencialoaleatoria

Secuencialoaleatoria

Secuencialindexada

Secuencialoaleatoria

Secuencialoaleatoria

SeccindeentradaSalida:
Esta seccin es opcional. El nombre de la misma, INPUTOUTPUT SECTION, deber figurar cuando se
especifiquealgunodesusprrafos.
SuFormatoeselsiguiente:
INPUTOUTPUTSECTION.
FILECONTROL.

{entradadecontroldelosficheros}...
IOCONTROL.
{entradadecontroldeE/S}...

PrrafoFILECONTROL.
Esteprrafoseutilizaparadarunnombreacadaficheroqueseutilizaenelprograma,almismotiempoquesele
asignaelequipoperifricocorrespondiente.Tambindainformacinacercadecomoestaorganizadoelfichero
ycualeselmododeacceso.
EsteprrafoestaformadoexclusivamenteporlassentenciasSELECT,existiendounaporcadaficheroquese
utilizaenelprograma.Suformatoeselsiguiente:

La palabra OPTIONAL, puede ser solamente especificada con ficheros abiertos en modo INPUT, IO o
EXTENDED.Sufuncinesindicarqueelficheroespecificadopuedeonoestarpresentecuandoelprogramase
ejecute.
Elnombredeficheroeselnombresimblicodadoalfichero.Debesernicoenelprograma.
ClusulaASSIGN:
Asignaelficheroaldispositivofsicoenelcualserledoy/oescrito:

Nombreexternodelficheroeselnombrerealquetieneelficherobajoelsistemaoperativo.Siestecontieneel

carcter , se tomar como nombre para identificar solamente los caracteres que siguen al ultimo "". Para
especificarestenombrepuedeutilizarseunliteralounnombrededato.
Cuando un nombre de dispositivo va seguido de un nombre externo, la palabra clave que referencia el
dispositivoseignora.
DISKhacereferenciaaqueelficheroespecificadoestasobreeldiscomagntico.Elnombresimblicodadoal
fichero no tiene porque coincidir con el nombre fsico del fichero. DISK sin nombre externo especifica un
ficheroendiscocuyonombresobreelmismoseespecificarenlaclusulaVALUEOFFILEID.Siestaclusula
seomiteseasumecomonombreexterno,elnombreinternosimblico.
KEYBOARDsignificaentradaporlaconsola.
DISPLAYsignificasalidaporlaconsola.
PRINTERsignificasalidaporlaimpresoraprincipaldelsistema.
PRINTER1significasalidaporlaimpresorasecundaria.
ClusulaRESERVE:
Indicaalcompiladorquereserveono,unnumerodereasdeentradaadicionalesalreadetrabajonormalque
serequiereparaalmacenarunbloqueoregistrofsicodelfichero,unavezledo.Estopuederepercutirenuna
mayorvelocidaddeproceso.
ClusulaORGANIZATION:
Indicaeltipodeorganizacinquetienenloregistrosdelfichero.

SEQUENTIAL se refiere a la organizacin secuencial, RELATIVE se refiere a la organizacin relativa e


INDEXEDserefierealaorganizacinsecuencialindexada.
SilaclusulaORGANIZATIONseomite,seasumelaorganizacinsecuencial.
ClusulaACCESS:
Indicaelmodootipodeaccesoquesevaautilizarparaleery/oescribirloregistrosdelfichero.

Elmododeaccesodependedelaorganizacindelfichero.
SEQUENTIAL significa que los registros sern accedidos secuencialmente, RANDOM significa que los
registros pueden ser accedidos de una forma aleatoria por la clave o por el numero relativo del registro y
DINAMICsignificaquelosregistrospuedenseraccedidosdeformasecuencialoaleatoria.
Silaclusulanoseespecificaseasumeelaccesosecuencial.
ClusulaLOCK:

Indicasitodosopartedelosregistrosdelfichero,puedenonosercompartidosporotrosprocesos.

EXCLUSIVE especifica que el fichero es exclusivo, esto es, no compartible, y MANUAL o AUTOMATIC
especificanqueelficheropuedesercompartidopormasdeunproceso.
WITH LOCK ON RECORD hace referencia a hacer no compartible un nico registro y WITH LOCK ON
MULTIPLERECORDS,hacereferenciaahacernocompartiblesmltiplesregistros.
ClusulaRECORDKEY:
Esta clusula se utiliza en ficheros con organizacin indexada, e indica la clave utilizada para acceder a los
registrosdelosmismos,
RECORDKEYISnombrededato
Nombrededatoindicaelcampoalfanumricoelementalocompuestopertenecienteaunregistrodelfichero
queseutilizarcomoclave.Elcontenidodeestecampodebesernicoparacadaregistro.
ClusulaFILESTATUS:
PermitesaberelestadodeunficherodespusdeunoperacindeE/S.
FILESTATUSISnombrededatos.
CuandoserealizaunaoperacindeE/Ssobreelfichero,elsistemamueveunvaloralcampodenominadopor
nombre de datos, que indica como se ha realizado dicha operacin. Este campo puede ser numrico o
alfanumrico,delongituddedosdgitos.
Eldgitomasaalizquierdaindica:
0

Operacincorrecta.

Findefichero.

Claveinvalida.

Errorpermanente.

ErrorLgico.

Mensajedeerrordelsistema.

Eldgitomasaladerechaindica:

PrrafoIOCONTROL.

Nohayinformacindisponible.

Claveinvalidaenficheroindexado.

Lalongituddelregistronoescorrecta.

Ficheroopcionalreferenciadonopresente.

Elficherosecuencialnoestaencintamagntica.

EsteprrafopermiteespecificarsidosomasficherosvanacompartirunreacomndeE/S,obienpermite
registrarpuntosdecontrol,apartirdeloscualessepuedereanudarlaejecucindelprograma,trasproducirse
unainterrupcinenelmismo.Estoesbueno,sipensamosqueexisteelriesgodeunainterrupcinaccidental
durantelaejecucindeunprograma,yaquepermitirareanudarlaejecucindelmismo,nodesdeelprincipio
sinodesdeelultimopuntodecontrolgrabado.

Formato1:(ficherossecuenciales)

Formato2:(todoslosficheros)

LaclusulaRERUNestablecepuntosdecontroldesdeloscualessepodrreanudarlaejecucindelprograma
encasodeocurrirunainterrupcinaccidentaloprovocada.
Unpuntodecontrolesunainformacindelestadodelordenadorenunpuntodeterminadodelaejecucindel
programa,quesegrabageneralmentesobreeldiscoyquepermitereanudarlaejecucindelprogramadesde
dichopuntoencasodeinterrupcin.
Lospuntosdecontrolsegrabanenelperifriconombradoporfichero1odispositivo.
Fichero2especificaelficheroqueestamosprocesando.
Siseempleaelformato1,segrabaunregistrodecontrolcadavezqueselleguealfinalfsicodeunvolumen.
Si se emplea el formato 2, se graba un registro de control cada vez que se hayan procesado de fichero2,
entero1registrosobiencadavezquepasenentero1minutos.
LafuncindelaclusulaSAMEesindicarquedosomasficheroscompartirnelmismorea.Estaclusulaes
tilcuandosedisponedepocamemoria.
LaclusulaMULTIPLEFILEseutilizacuandovariosficherosestncontenidosenunmismosoportedecinta
magntica. Esta clusula adems de especificar que ficheros estn contenidos, permite indicar la posicin
relativadedichosficherosenlacinta.

Seccindeficheros:
EnlaFILESECTIONdebedescribirsetodalainformacindebedescribirsetodalainformacinreferentealos
ficherosutilizadosenelprograma.
FDnombredefichero:
FDeslaabreviaturadeFileDescriptionynombredefichero,esunnombrecreadocorrespondientealfichero
quevaadescribirse.ExistentantasFDcomoficherosutilicemosenelprograma.

ClusulaLABELRECORD:
Esta clusula es obligatoria e indica si los registros llevan o no etiquetas. Las etiquetas son unos registros
adicionalesalosregistrosdedatosdeunfichero,situadosalprincipioyalfinaldelmismo,quesirvenpara
identificaralfichero.Estosregistros(etiquetas)segenerancuandoseaccedeaunficheroparasalidaoseleen
cuandoseaccedeaunficheroparaentrada.
Existentresposibilidades:

1Omitirestaidentificacin,clusulaOMITTED.
2Crearetiquetasestndarparatodoslosficheros,generadasporelpropio sistema, clusula
STANDARD.
3Crearetiquetasconunformatodeterminado.Leetiquetaseriaidentificadaconunnombrey
descritaanivel01.
Formato:

Los ficheros en disco requieren etiquetas, en cambio un fichero para salida al que le hemos asignado la
impresoranorequiereetiquetas.
ClusulaVALUEOFFILEID:
Estainformacinesnecesariaparalosficherosendisco.Indicaelnombreexternodelfichero,estoes,elnombre
quetieneelficheroqueseestadescribiendo,eneldirectoriocorrespondientedeldisco.Elformatoparaesta
clusulaeselsiguiente:

Nombrededatosoliteraldesignanelnombreexternodelfichero.
Estaclusulanopuedeespecificarse,sienlaclusulaASSIGNsehaespecificadoelnombreexternodelfichero.
ClusulaRECORDINGMODE:

Estaclusulaespecificaelformatodelregistrolgicoenlefichero.Suformatoeselsiguiente:

FIXEDosimplementeFespecificaquetodoslosregistrossondelamismalongitudyVARIABLEoVespecifica
quelosregistrospuedentenerlongitudvariableofija.
ClusulaBLOCKCONTAINS:
Esta clusula especifica el numero de registros lgicos que contenidos en un registro fsico o bloque, o el
numerodecaracterescontenidosenunregistrofsico.Suformatoeselsiguiente:

Silosbloquessondelongitudvariabledebeespecificarseentero1TO,estoes,eltamaodelosbloqueestar
comprendidoentrelosvaloresentero1yentero2.Silosvaloressondelongitudfija,eltamaovendrdado
porentero2.
Estaclusulaseincluyesolamenteconficherosencintasodiscosmagnticos.Elagruparlosregistrosdeun
ficheroenbloques,tienedosobjetivosfundamentalmente:
Aprovechar al mximo los carretes de cinta o las pistas del disco optimizando los espacios
entrebloques(IRG).
Optimizarlostiemposdelecturaygrabacinempleados.
ClusulaRECORDCONTAINS:
Estaclusulaindicaeltamaoonumerodecaracteresdelregistrolgico.Suformatoeselsiguiente.
RECORDCONTAINS[entero1TO]entero2CHARACTERS
Si los registros son de longitud variable debe especificarse entero1TO, esto es, el tamao de los registros
estarcomprendidoentrelosvaloresentero1yentero2.Silosregistrossondelongitudfija,eltamaovendr
dadoporentero2.
Estaclusula,siendoopcional,esinteresanteespecificarlayaqueelvalorcalculadoporelcompiladorcomo
sumadeloscamposespecificadosparaelregistroyelvalorespecificadoenestaclusulanocoinciden,senos
avisardeelloalfinaldelacompilacin.
ClusulaDATARECORD:
Estaclusulapermitedarunnombreacadaformatodistintodelosregistroslgicosdeunfichero.Suformato
eselsiguiente:
DATARECORDISnombrededato1[nombrededato2]...
Estaclusula,opcional,nombraalosregistrosasociadosalficheroqueseestadescribiendo,quiereestodecir
quecadanombrededatocorrespondeaunnivel=!.

ClusulaLINAGE:
Permiteespecificareltamaodeunapginalgica.

MargenSuperior
(Nombrededatos3oentero3)
Cuerpodelapgina
(nombrededatos1oentero1)

Piedepgina
(nombrededatos2oentero2)
MargenInferior
(nombrededatos4oentero4)
Eltamaodelapginafsicaes.entero3+entero1+entero4.Elpiedepginaseincluyeeneltamaodela
pginalgica.
ClusulaCODESET:
Estaclusulaespecificaeljuegodecaracteresempleadopararepresentarlosdatossobredispositivosexternos.
Solamentepuedeserespecificadoparaficherosconorganizacinsecuencial.Suformatoeselsiguiente:
CODESETISnombrealfabeto
SinoseempleaseasumeeljuegodecaracteresASCII.
Descripcinderegistros:
Unregistroesunaestructurajerarquizadacompuestaporunaomasinscripcionesjerarquizadas(campos)que
describiremosdeacuerdoconelsiguienteformato:

Elordendeescrituradeestasclusulaspuedesercualquiera,exceptodelaclusulaREDEFINES,quedebeser
laprimera,enelcasodeespecificarse.
Elnombredelregistrollevanivel01yelrestodeloscamposllevaunnumerodenivelde02a49.
ClusulaVALUE:
EstaclusulacuandoseutilizaenladescripcindeunregistroenlaseccinFILE,esparaasignarunvaloraun
campoconnivel88.Suformatoeselsiguiente:

FICHEROSSECUENCIALES:
Crearunficherosecuencial:
1.EspecificarlaclusulaSELECTcorrespondientealfichero,dentro del prrafo FILE
CONTROL.SiesnecesariodescribirtambinelprrafoIOCONTROL.
2.Descripcindelfichero,estoes,especificacindelaclusulaFDcorrespondiente al
fichero,dentrodelaFILESECTION.
3.EnlaPROCEDUREDIVISION:
a)Abrirelficheroparalasalida(OUTPUT)oadicionales(EXTEND),utilizandola
sentenciaOPEN.
b)GrabardatosenelficheroutilizandolasentenciaWRITE.
c) Cerrar el fichero utilizando la sentencia CLOSE, una vez finalizado las
operacionesdesalida.

ClusulaSELECTparaficherossecuenciales:

SiseomitelaclusulaORGANIZATIONseasumeorganizacinsecuencialysiseomitelaclusulaACCESSse
asumeaccesosecuencial.
LaorganizacinRECORDSEQUENTIAL, se refiere a un fichero secuencial estndar. En este, la longitud de
cadaregistroseespecificapordosbytesqueprecedenalpropioregistro.LaorganizacinLINESEQUENTIAL,
eslaopcinpordefecto,yhacequecadaregistrovayaseguidodeuncarcterfindelneaqueactacomo
delimitador.
EnlaclusulaSELECTtambinsepuedeespecificarelficherocomounficheroenmltiplescarretesdecinta
magntica,mediantelafraseASSIGNTOMULTIPLEREELFILEnombreexternodelfichero.
ClusulaFDparaficherossecuenciales:
FDnombredelfichero
LABELRECORD
[VALUEOFFILEID]
[RECORDINGMODEIS]
[BLOCKCONTAINS]
[RECORDCONTAINS]
[DATARECORDIS]
[LINAGEIS]
[CODESETIS].
SentenciaOPEN:
Laoperacindeabrirunfichero,estableceunacomunicacinentreelreadeE/Sasociadaaeseficheroyel
dispositivo externo que lo soporta, comprueba las etiquetas en los ficheros de entrada y las crea para los
ficherosdesalida,ysitaelpunterodelecturaescrituraenelprimerregistrooalfinaldelficherodependiendo
delmodoenquesehayaabiertoelfichero.
Formato1:


Formato2:

Formato3:
OPENIO{fichero3[WITHLOCK]}...
Formato4:
OPENEXTEND{fichero4[WITHLOCK]}...
Sielficheroestaalmacenadoenunsoportequepermitelaoperacinderebobinaryseespecificalaclusula
REVERSED,losdatosparaunasentenciaREADquedandisponiblesenordeninverso,estoes,comenzando
porelultimo.LaclusulaNOREWINDhacequeelcarretedecintanoserebobine.Estopuedesermuytil
cuandoenunacintahaymltiplesficheros.
SiseespecificalafraseWITHLOCK,elefectoesequivalenteaespecificarLOCKMODEEXCLUSIVE en la
sentencia SELECT correspondiente a este fichero, esto es, el fichero no puede ser compartido por otros
procesos.
UnficheroabiertoenmodoOUTPUTesimplcitamenteunficheronocompartible.Paraquemasdeunproceso
puedancompartirunficherohayqueabrirloenmodoIO.
CuandoseespecificalaclusulaINPUT,seabreelficheroespecificadoparaleer.Elpunterodelecturasesita
enelprimerregistro.Sielficheronoexisteseproduceunerror.
CuandoseespecificalaclusulaOUTPUT,seabreelficheroespecificadoparaescribir.Sielficheroqueseabre
existe,sedestruyesucontenidoactualcrendoseasdenuevo.Sinoseexistesecrea.
CuandoseespecificalaclusulaIO,seabreelficheroespecificadoparaleeryescribir.Elpunterodelectura
escriturasesitaenelprimerregistro.Siestenoexistesecrea.Enestecasounaoperacindelecturadara
lugaraunacondicindefindeficheroyunaoperacindeescrituradaralugaraunerror.Estemodonose
puedeutilizarconunaorganizacinLINESEQUENTIAL.
CuandoseespecificalaclusulaEXTEND,significaquesevanaadirdatosaunficheroconmododeacceso
secuencial.Deestaformapodemosaadirmasregistrosaunficheroexistente.Sielficheronoexistesecrea.
SentenciaWRITE:
Cuandoseejecutaestasentenciaseefectaunaoperacindesalidaodeescrituradeunregistrolgicocon
destinoaunficherodesalidaodeentradasalida.Estastransferenciasdeinformacinsehacenatravsdel
readememoriaasignadaalficheroaunqueestaoperacinestransparentealusuario.

Registro identifica el nombre del registro lgico que se desea escribir. Este estar declarado en la FILE
SECTIONoenlaDATADIVISION.ElficheroasociadodebeabrirseenmodoOUTPUToEXTENDED.
SiseespecificalaopcinFROM,primerosemueveelcontenidodelcamporeferenciadopornombrededato1
alcamporeferenciadoporregistroyacontinuacinseefectalaoperacindeescribir.
LasopcionesBEFOREoAFTERADVANCINGseaplicansolamenteaficherosdesalidaimpresoseindican,
escribir el registro antes de (BEFORE) o despus de (AFTER) avanzar, entero o nombrededato1 lneas,
pagina(PAGEoFORMFEED),otabulacinvertical(TAB).
NombremnemnicoesunnombrecreadoporelprogramadorconelfindeasociarloenelprrafoSPECIAL
NAMESaunapalabrareservadaCOBOL.
SiseespecificaENDOFPAGEosuequivalenteEOP,debeespecificarselaclusulaLINAGEenladescripcin
delfichero(FD)enelcualestamosescribiendo.EOPesunacondicinqueesciertacuandosealcanzaelfinal
delapaginalgica,encuyocasoseejecutasentencia1.
Sentencia1ysentencia2sonsentenciasimperativas,estoes,nocondicionales.
Cuando en la descripcin de un fichero se utiliza la clusula LINAGE no se puede utilizar ADVANCING
nombrenemonico.
ENDWRITEsolosepuedeutilizarconENDOFPAGEysirveparadelimitarelmbitodelasentenciaWRITE.
Si el tipo de organizacin es RECORD SEQUENTIAL y en la sentencia WRITE no se utiliza la opcin
ADVANCING, se asume el avance automtico equivalente a haber especificado, BEFORE ADVANCING 1
LINE.
SentenciaCLOSE.
Estasentenciafinalizaelprocesodeunoovariosficheros.

Cada fichero abierto por medio de una sentencia OPEN, debe ser cerrado por una sentencia CLOSE bien
cuandofinalizaelprogramaobiencuandosedeseaabrirlodemododiferente.UnasentenciaCLOSE puede
cerrarunoomasficheros.
LasopcionesREELyUNITseutilizanconcintasmagnticasydiscosmagnticosrespectivamenteparaindicar
queleficherotratadoesmultivolumen.
LaopcinNOREWINDseutilizaparaanularlaoperacinderebobinadoqueseproducenormalmentealcerrar
unficherocontenidoencintamagntica.
LaopcinWITHLOCKhacequeelficherocerradonopuedavolverseaabrirduranteelrestodelaejecucin
delprocesoencuestin.
Accesoaunficherosecuencial:
Paraaccederaunficherosecuencial,lospasosaseguirsonlossiguientes:
1EspecificarlaclusulaSELECTcorrespondientealfichero,dentrodelprrafoFILECONTROL.Sies
necesariodescribirtambinelprrafoIOCONTROL.
2Enladescripcindelfichero,estoes,especificacindelaclusulaFDcorrespondiente al fichero,
dentrodelaFILESECTION.
3EnlaPROCEDUREDIVISION:
a) Abrir el fichero para entrada (INPUT) o para entrada y salida (IO) utilizando la sentencia
OPEN.
b)UtilizarlasentenciaREADparaleerlosdatosdelfichero.
c) Cerrar el fichero utilizando al sentencia CLOSE, una vez finalizadas las operaciones de
entradasalida.
Paraaccederalosdatosdeunficherosecuencial,acontinuacindehaberlocreado,primerosedebecerrarel
mismo,utilizandolasentenciaCLOSE,ydespussevuelveaabrirparaentradautilizandolasentenciaOPEN.
SentenciaREAD:
Cuando se ejecuta esta sentencia se deja disponible un registro lgico en el rea de entrada, para ser
procesado.
READficheroRECORD[INTOnombrededato][WITH[NO]LOCK]
[ATENDsentencia1]
[NOTATENDsentencia2]
[ENDREAD]
Ficheroeselnombresimblicodelficherodelcualsequiereleerunregistro.Esteficherotienequeserabierto
enmodoINPUToIO.
Cuando se abre el fichero el puntero de lecturaescritura apunta al primer registro a leer y cada vez que se
ejecutaunasentenciaREADseleeunregistroyelpunterodelecturaescrituraavanzaparaapuntaralsiguiente
registroaleer.
SiseespecificalaopcinINTO,lasentenciaREADademsdedejardisponibleunregistrolgicoenelreade
entrada,estoes,enelregistrodeentradaestadefinidoenlaFD,mueveelcontenidodeesteregistroalreade
datosespecificadapornombrededatos.

LaopcinINTOnopuedeserutilizadacuandoelficherocontieneregistrosdevariostipos.
LafraseATENDesunacondicinqueesciertacuandoalejecutarseunasentenciaREADsedetectaelfinaldel
fichero,encuyocasoseejecutalasentencia1.Silacondicinresultaserfalsa,entoncesseejecuta,despus
dehaberserealizadolaoperacindelectura,lasentencia2,silafraseNOTATENDhasidoespecificada,yse
pasaalasentenciasiguiente.
Sentencia1ysentencia2sonsentenciasimperativas,estoes,nocondicionales.
AunquelafraseATENDseaopcional,debeespecificarsecuandoseaccedasecuencialmentealosregistrosde
unfichero,parapoderdetectarcuandosellegaalfinaldelmismo.
ENDREADdelimitaelmbitodelasentenciaREADypuedeserutilizadosolamenteconlafraseINVALIDKEY.
EnunficherosecuencialabiertoenmodoINPUT,lasentenciaREADoREADWITHLOCKnopuedeleerun
registroenmodoexclusivo.
EnunficheroabiertoenmodoIOconLOCKMODEAUTOMATIC,amenosqueseespecifiquelaopcinWITH
NOLOCK,cadaregistroenelmomentodeleerseesexclusivo,nocompartido,siendoliberadocuandofinaliza
lalectura.
EnunficheroabiertoenmodoIOconLOCKMODEMANUAL,cadaregistroenelmomentodeleersenoes
exclusivoamenosqueseespecifiquelaopcinWITHLOCKenlasentenciaREAD.
Modificarunregistrosecuencial:
Si el fichero se abre en modo IO, es posible modificar el ultimo registro ledo por medio de la sentencia
REWRITE,lacualpresentamosacontinuacin.
SentenciaREWRITE.
Estesentenciapermitereemplazarunregistroexistenteenunficheroendiscoporotroregistro.
REWRITEregistro[FROMnombrededato]
[ENDREWRITE]
RegistroeselnombredeunregistrolgicoespecificadoenlaFILESECTIONdelaDATADIVISON.Elfichero
asociadoconesteregistrodebeserunficheroresidenteendiscoyabiertoenmodoIO.
Elnumerodecaracteresdelregistroareemplazardebeserigualalnumerodecaracteresdelregistroquelovaa
reemplazar.
Paraficherosenlosqueelmododeaccesoessecuenciallaultimasentenciaejecutadaantesdelaejecucinde
lasentenciaREWRITE,debeserunasentenciaREAD.Elregistroreemplazadoserlgicamenteelregistroledo.
La posicin indicada por el puntero de lecturaescritura ser la misma despus de haber ejecutado una
sentenciaREWRITE.

FICHEROSSECUENCIALESINDEXADOS:
Introduccin:
Unficheroindexadoesunficheroconorganizacinsecuencialindexada.Laorganizacinsecuencialindexadao
dendicesesunmodelodealmacenamientodedatosqueseapoyaenunatabladendicesqueactacomo
ndiceyenunficherodedatos.
Creacinyaccesoaunficherosecuencialindexado:

Paracrearunficherosecuencialindexado,lospasosaseguirsonlosmismosquesehanexpuestoparaficheros
secuenciales.

CuandoelmododeaccesoesSEQUENTIAL,elaccesoalosregistrosdelficheroindexadosehaceenorden
ascendentedeclave,lacualvienedadaporuncampoalfanumricodenominadopornombredato1.
SielmododeaccesoesRANDOM,elvalordelaclaveindicaelregistroalcualvaaaccederse.
Cuando el modo de acceso es DYNAMIC, se puede acceder a los registros del fichero secuencial y/o
aleatoriamente.
La clusula RECORD KEY especifica la clave principal del fichero. Su valor ha de ser nico. La clusula
ALTERNATERECORDKEYespecificalaclavesecundaria,terciaria,..,etc.SiseespecificaWITHDUPLICATES
admitemasdeunaclavesecundariaigual.
Clavem es una concatenacin de uno o mas campos de un registro asociado con el fichero que estamos
describiendo.EstaclavemltiplesolopodrserreferenciadaporlassentenciasSTARTyREAD.
Eloloscamposusadoscomoclavedeberndeclararsecomocamposalfanumricos,admitindoseloscampos
numricos.

ClusulaFDparaficherossecuencialesIndexados:
FDnombredefichero
LABELRECORDIS[STANDARD]
[VALUEOFFILEID]
[RECORDINGMODEIS]

[BLOCKCONTAINS]
[RECORDCONTAINS]
[DATARECORDIS]
SentenciaOPEN:
Paraficherosindexadoselformatodeestasentenciaeselsiguiente:

SentenciaCLOSE:
Paraficherosindexadoselformatodeestasentenciaeselsiguiente:
CLOSEfichero1[WITHLOCK][fichero2[WITHLOCK]]...
SentenciaREAD:
Paraficherosindexadoselformatodeestasentenciaeselsiguiente:
Formato1:(accesosecuencial)

Formato2:(Accesoaleatorio)

Cuando el modo de acceso es secuencial, el acceso a los registros del fichero indexado se hace en orden

ascendentedelaclave,lacualvienedadaporelcampodescritoacontinuacindelaclusulaRECORDKEY.
Cuandoseutilizaelformato2,antesdequeseejecutelasentenciaREAD,esnecesariohabercargadoelcampo
descritoacontinuacindelaclusulaRECORDKEY,elvalordelaclavedelregistroquesequiereleer.
LaopcinNEXToPREVIOUS debe especificarse cuando en un fichero en modo de acceso DYNAMIC los
registrosseleensecuencialmente.
SilaopcinPREVIOUSsehaespecificado,despusdeejecutarseunasentenciaREADelpunterodelectura
escriturapasaaapuntaralregistroanterior.Sielpunteroyaseencontrabaenelprimerregistro.Sielpuntero
queseencontrabaenelprimerregistro,entoncessedaunacondicindefindefichero(ATEND).
EnunficheroabiertoIOconLOCKMODEMANUALWITHLOCKONRECORDO,unasentenciaREADpuede
adquirirunregistroenmodoexclusivosolamentesilafraseWITHLOCKhasidoespecificada.
EnunficheroabiertoIOconLOCKMODEMANUALWITHLOCKONMULTIPLERECORDSO,unasentencia
READ puede adquirir un registro en modo exclusivo solamente si la frase WITH KEPT LOCK ha sido
especificada. Esto es, KEPT debe ser incluido, cuando manualmente se desea hacer exclusivos mltiples
registros.
EnunficheroabiertoIOconLOCKMODEAUTOMATICO,amenosqueseespecifiquelaopcinWITH NO
LOCK,cadaregistroesenelmomentodeleerseexclusivo,nocompartido,siendoliberadocuandofinalizala
lectura.
SiseespecificalaopcinKEYlaclaveutilizadapararecuperarunregistrovienedadapornombredato2opor
clavem.Siestaopcinnoseespecifica,pararecuperarunregistroseutilizalaclaveprincipal,quevienedada
porelcampodescritoacontinuacindelaclusulaRECORDKEY.
Cuando se ejecuta una sentencia READ, descrita de acuerdo con formato2, el contenido del campo
especificado como clave, es comparado con los valores contenidos en los correspondientes campos de los
registrosdelfichero,hastaqueseencuentreunvalorigual,encuyocasoserecuperaelregistroyseejecutala
sentencia4 si la frase NOTINVALIDKEY ha sido especificada. Si no se encuentra el registro entonces se
ejecutasentencia3descritaacontinuacindelafraseINVALIDKEY,siestaopcinhasidoespecificada.

SentenciaWRITE:
Paraficherosindexadoselformatodeestasentenciaeselsiguiente:

Elvalordelaclaveprincipaldebesernicoenelfichero.
Elnombrededatoqueespecificalaclaveprincipal,debeserpuestoporelprogramaalvalordeseado,antesde
ejecutarlasentenciaWRITE.
SielmododeaccesoesSEQUENTIAL,losregistrosdebenseremitidosalsistemaenordenascendentedela
claveprincipal.
SielmododeaccesoesRANDOMoDYNAMIClosregistrospuedenseremitidosalsistemaencualquierorden.
SilaopcinINVALIDKEYsehaespecificado,sentencia1seejecutarenlossiguientescasos:

a)Cuandosehaespecificadomododeaccesosecuencialparaunficheroabiertoparaescribir
(OUTPUT)ylaclavedelregistronoesmayorqueladelregistroanterior.
b)CuandoelficherosehaabiertoenmodoOUTPUToIOylaclavedelregistroaescribirexiste
yaenelfichero.
c)CuandoelficherosehaabiertoenmodoOUTPUToIOylaclavealternativadelregistroa
escribiryaexisteenelfichero.
d)Cuandoeldiscoestalleno.
ENDWRITEpuedeserutilizadasolamentesiseespecificalafraseINVALIDKEY.
SentenciaREWRITE:
Paraficherosindexadoselformatodeestasentenciaeselsiguiente:

ElficheroasociadoconregistrodebeserunficheroresidenteendiscoyabiertoenmodoIO.
Para ficheros en los que el modo de acceso es SEQUENTIAL, la ultima sentencia ejecutada antes de la
ejecucindelasentenciaREWRITEdebeserunasentenciaREAD,lacuallocalizaelregistroareemplazarporel
valorcontenidoenlecampoquehacereferenciaalaclaveprincipal.
ParaficherosenlosqueelmododeaccesoesRANDOMoDYNAMIC,elregistroareemplazarvienedadoporel
contenido del campo que hace referencia a la clave principal. No es necesario ejecutar previamente una
sentenciaREAD.

SilaopcinINVALIDKEYsehaespecificado,lasentencia1seejecutarenlossiguientescasos:
a)Cuandosehaespecificadomododeaccesosecuencialyelvalorcontenidoenelcampoclave
delregistroquehadeserreemplazadonoesigualalvalordelcampoclavedelultimoregistro
ledo.
b) Cuando el valor del campo que referencia la clave principal no coincide con el valor de la
clavedealgunodelosregistrosdelfichero.
c)Cuandoelvalordelcampoquereferencialaclavealternativaexisteyaenelfichero.
ENDREWRITEpuedeserutilizadasolamentesisespecificalafraseINVALIDKEY.
SentenciaSTART:
Estasentenciapermiteiniciarelprocesodeaccesoalosregistrosdeunficheroconorganizacinindexadao
relativaapartirdeunaclaveespecificadaynoapartirdelprincipiodelfichero.

FicheroeselnombredeunficheroindexadoabiertoenmodoINPUToIO,conmododeaccesoSEQUENTIAL
oDYNAMIC.
NombredatoesuncampoalfanumricoquedebeserdeclaradoenunaclusulaRECORDKEYasociadaconel
fichero.
NombredatopuedesertambinuncamposubordinadoalcampoespecificadoenlaclusulaRECORD KEY.
Estecamposubordinadodebeserlaposicindelcarctermasalaizquierda,secorrespondaconlaposicindel
carcter mas a la izquierda del campo especificado en la clusula RECORD KEY, esto es, el primer campo
subordinado.
PreviamentealaejecucindeunasentenciaSTARTelprogramadebecargarennombredatoelvalordelaclave
correspondientealregistroenelquenosqueremosposicionar.
LacomparacinindicadaporlaoperacinderelacinespecificadaacontinuacindeKEY,ocurreentreelvalor
delcampoclavedelosregistrosdelficheroyelvalordelcontenidoenelcampodato. Si la longitud de los
camposcomparadosnosoniguales,elcampomaslargosetruncaalalongituddelmascorto.
SilafraseKEY no se especifica, la operacin de relacin que se asume es EQUALTO (=) y la comparacin
anteriorsehaceconrespectoalcampodeclaradoenlaclusulaRECORDKEY.
Si el operador de relacin especifica que la clave debe ser mayor que, o mayor o igual que nombredato,
entonces el puntero de lectura escritura del fichero se posiciona en el primer registro lgico cuya clave
satisfagalacondicin.
Si el operador de relacin especifica que la clave debe ser menor que, o menor o igual que nombredato,
entonces el puntero de lectura escritura se posiciona en el ultimo registro lgico del fichero cuya clave
satisfagalacondicin.
Silacondicinnoessatisfechaporalgunodelosregistrosdelfichero,entoncessedalacondicinINVALID
KEYyseejecutalasentencia1,silafrasehasidoespecificada.
SiseespecificalaopcinWITHSIZE,entoncesseignoraeloperadorderelacinespecificadoacontinuacin
deKEY. Esta opcin especifica el numero de caracteres de la clave que se van a utilizar en la comparacin
(EQUALTO).
ENDSTARTpuedeserutilizadasolamentesiseespecificalafraseINVALIDKEY.

SentenciaDELETE:
Estasentenciapermiteborrarundeterminadoregistrodeunficheroconorganizacinindexadaorelativa.
Formato1:
DELETEficheroRECORD
[INVALIDKEYsentencia1]
[NOTINVALIDKEYsentencia2]
[ENDDELETE]
FicheroeselnombredeunficheroindexadoabiertoenmodoIO.
Antes de que se ejecute una sentencia DELETE, es necesario haber cargado en el campo descrito a
continuacindelaclusulaRECORDKEY,elvalordelaclavedelregistroalquesequiereacceder.
ParaficherosenlosqueelmododeaccesoesSEQUENTIALlaultimasentenciaejecutadaantesdelaejecucin
delasentenciaDELETEdebeserlasentenciaREAD,lacuallocalizaelregistroaborrarporelvalorcontenido
enelcampoquehacereferenciaalaclaveprincipal.
ParaficherosenlosqueelmododeaccesoesRANDOMoDYNAMIC,elregistroaborrarvienedadoporel
contenido del campo que hace referencia a la clave principal. No es necesario ejecutar previamente una
sentenciaREAD.
CuandoseejecutalasentenciaDELETE,elcontenidodelcampoespecificadocomoclave,escomparadocon
losvalorescontenidosenloscorrespondientescamposdelosregistrosdelfichero,hastaqueseencuentreun
valorigual,encuyocasoseborraelregistroyseejecutalasentencia2silafraseNOTINVALIDKEYhasido
especificada.Sinoseencuentraunvalorigualalaclavedada,entoncesseejecutalasentencia1descritaa
continuacindelafraseINVALIDKEY,siestahasidoespecificada.
LafraseINVALIDKEYnopuedeserespecificadaconunasentenciaDELETEquehagareferenciaaunfichero
conmododeaccesosecuencial.
ENDDELETEpuedeserutilizadasolamentesiseespecificalafraseINVALIDKEY.

Formato2:
DELETEFILE{fichero}...
Estasentenciaborralosficherosespecificados,loscualesdebensercerradospreviamente.
FicherosREALATIVOS:
ClusulaSELECT

Cuando el modo de acceso SEQUENTIAL, el acceso a los registros del fichero relativo se hace en orden
ascendentedenumerorelativoderegistro.EnestecasolaclusulaRELATIVEKEYesopcional.
Si el modo de acceso es RANDOM o DYNAMIC, el valor de nombredato1 indica el registro al cual va a
accederse.Estenumerovienedadoporuncamponumricoenterosinsignoespecificadopormediodelafrase
RELATIVEKEY.
Cuando el modo de acceso es DYNAMIC, se puede acceder a los registros del fichero secuencial y/o
aleatoriamente.
LaclusulaRELATIVEKEYespecificaelcampodenominadopornombredato,quevaacontenerelnumero
relativoderegistroalcualsequiereacceder.Estecamponopuedeestardefinidoenladescripcinderegistro
asociadaconelficheroencuestinydebeserdeclaradoconouncamponumricosinsigno.
LaclusulaFDparaficherosrelativosesigualqueladelosindexadosysecuenciales.
LasentenciaOPENdelosficherosrelativoseslamismaqueladelosindexadosysecuenciales.
LasentenciaCLOSEdelosficherosrelativoseslamismaqueladelosindexadosysecuenciales.

SentenciaREAD:
Formato1(secuencial):

Formato2(directo):

AntesdequeseejecutelasentenciaREAD,esnecesariohabercargadoenelcampodescritoacontinuacinde
laclusulaRELATIVEKEY,elvalorrelativodelregistroalquesequiereacceder.
La opcin NEXT o PREVIOUS debe especificarse cuando un fichero con modo de acceso DYNAMIC los
registrosseleensecuencialmente.
LaopcinNEXTlee el siguiente registro del fichero, y ejecuta la sentencia1 si se especifica la clusula AT
END, y es final del fichero, sino ejecuta sentencia2 si se especifica la clusula NOT AT END. La opcin
PREVIOUSleeelregistroanteriordelfichero,yejecutalasentencia1siseespecificalaclusulaATEND,yes
finaldelfichero,sinoejecutasentencia2siseespecificalaclusulaNOTATEND.
Cuando se ejecuta una sentencia READ, con el formato 2 se lee el registro que la clave del fichero ha
especificado.
SentenciaWRITE:

SentenciaREWRITE:

SentenciaSTART:

SentenciaDELETE:
DELETEficheroRECORD
[INVALIDKEYsentencia1]
[NOTINVALIDKEYsentencia2]
[ENDDELETE]

lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo9

9CLASIFICACINYFUSINDEFICHEROS.
ElformatogeneraldeunprogramadeclasificacinCOBOLeselsiguiente:
IDENTIFICATIONDIVISION.
PROGRAMID.Nombreprograma.
ENVIRONMENTDIVISION.
INPUTOUTPUTSECTION.
FILECONTROL.
SELECTfichero1deentradaASSIGNTODISK.
SELECTfichero2desalidaASSIGNTODISK.
SELECTfichero3declasificacinASSIGNTODISK
[SORTSTATUSISnombrededato1]
[IOCONTROL......]
DATADIVISION.
FILESECTION.
FDfichero1deentrada
...
FDfichero2desalida
...
SDfichero3declasificacin
[RECORDCONTAINS[entero1TO]entero2CHARACTERS]
[DATARECORDISregistro1[registro2]....]
nombrededato2
[VALUEOFFILEIDIS]
literal
01Registro1.
.....
WORKINGSTORAGESECTION.
77nombredato1PICXX....
PROCEDUREDIVISION.

[SORT...]
[MERGE...]
Si se especifica la clusula SORTSTATUS,secolocarennombredato1 un valor de 2 dgitos para indicar
comoseharealizadolaoperacindeclasificacin.Losvaloresquesepuedendarsonlossiguientes:
00

Clasificacinefectuadacorrectamente

30

Error

Elsegundodgitocorrespondeaunnumerodeerrordelsistema.

SentenciaSORT:
La sentencia SORT crea un fichero clasificado, ejecutando un procedimiento de entrada, o transfiriendo
registrosdesdeotrosficheros.Suformatoeselsiguiente:

Fichero3eselficherodeclasificacin,elcualtienequeserdescritoenlaDATADIVISION,precedidoporSD.
El resto de los ficheros son ficheros normales. Para evitar resultados inesperados, es conveniente que el
tamaoderegistroseaelmismoparatodoslosficheros.
OpcionesASCENDINGyDESCENDING
Indican,silaclasificacinsearealizarascendenteodescendentemente,porelcontenidodeunoomascampos.
Nombredato1ynombredato2,...,sonlosnombresdeloscamposporlosquesedeseaclasificarelfichero.
Estoscamposdebenperteneceralosregistrosasociadosalfichero3.Enladescripcindeestoscamposno
puedefigurarlaclusulaOCCURS.
LosnombresdedatoquesiguenalapalabraKEYdebenespecificarseenordendecrecientedesignificacin.
SiseespecificalaclusulaDUPLICATESyelcontenidodetodosloscamposempleadosenlaclasificacin,
pertenecientesaundeterminadoregistro,coincidenconelcontenidodeloscorrespondientescamposdeotros
registros,entonceselordenenelquesoncolocadoslosregistroseselordendeaparicinenlosficherosde
entradasegnsehanespecificadoenlasentenciaSORT.SisedaestecasoylaclusulaDUPLICATESnose
haespecificado,elordendelosregistrosalosquenosreferimosquedaindefinido.
Laclasificacinserealizadeacuerdoconelordendevaloresdelcdigodecaracteresempleadopordefecto
(ASCII). Si se especifica la clusula COLLATING SEQUENCE es posible realizar la clasificacin en otra
secuenciaqueseaASCII,porejemplo,EBCDIC.

OpcionesUSINGyGIVING.
ConlaopcinUSINGelcompiladorrealizaautomticamentelassiguientesfunciones:
*AbreelficherooficherosdeentradenominadosFichero1...
* Todos los registros del fichero o ficheros de entrada son transferidos al fichero de
clasificacin,fichero3,paraserclasificados,esdecir,serenunciaarealizarcualquieroperacin
sobrelosregistrosdeentrada.
*Cierratodoslosficherosdeentrada.

ConlaopcinGIVINGelcompiladorrealizaautomticamentelassiguientesfunciones:
*Abreelficherooficherosdesalidadenominadosfichero2...
* Todos los registros del fichero de clasificacin, fichero3, son transferidos al fichero o
ficheros de salida, es decir, se renuncia a realizar cualquier operacin sobre los registros
clasificados.
La condicin necesaria y nica para que un SORT funcione es que los ficheros de entrada y salida sean
secuenciales.
OpcinINPUTPROCEDURE:
Estaopcinpermitereferenciarunaomassecciones,pararealizarcualquieroperacinsobrelosregistrosde
entrada, antes de que sean transferidos al fichero de clasificacin, fichero3, por medio de la sentencia
RELEASE,paraserclasificados.
SentenciaRELEASE:
Estasentenciatransfierelosregistrosalficherodeclasificacin,paraacontinuacinserclasificados.
RELEASEregistroclasificacin[FROMnombredatos].
UnasentenciaRELEASEsolamentepuedeutilizarseenunaseccinINPUTasociadaaunasentenciaSORT.
OpcinOUPUTPROCEDURE:
Esta opcin permite referenciar una o mas secciones, para realizar cualquier operacin sobre los registros
clasificados,antesdequeseantransferidosalficherodesalida,fichero2,pormediodelasentenciaRETURN.
SentenciaRETURN:
Estasentenciapermiterecuperardelficherodeclasificacin,losregistrosunavezclasificados.
RETURNficheroclasificacinRECORD[INTOnombredatos]
ATENDsentencia1
[NOTATENDsentencia1]
[ENDRETURN].
UnasentenciaRETURNsolamentesepuedeutilizarenunaseccinOUTPUTasociadaaunasentenciaSORTo
MERGE.
LafuncindeestasentenciaessimilaralafuncindelasentenciaREAD.

SentenciaMERGE:
Estasentenciapermitefusionardosomasficherosclasificadosporunmismoconjuntodecampos.Suformato
eselsiguiente:

lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo10
10COMUNICACINENTREPROGRAMAS.
Llamadaaunsubprograma.SentenciaCALL:
ParatransferirelcontroldeunprogramaaunsubprogramaseutilizalasentenciaCALL,cuyo formato es el
siguiente.

Identificador o literal especifican el nombre del subprograma. Si se utiliza un identificador para llamar al
programa, este debe ser declarado como un campo alfanumrico y si se utiliza un literal, este debe ser no
numrico.
LosnombresdatoespecificadosacontinuacindelaclusulaUSINGserefierenacamposquepuedenutilizar
tantoelprogramaprincipalcomoelsubprograma.
SidurantelasentenciaCALLnoesposibleacomodarelprogramaenmemoriaelprogramaespecificadoparasu
ejecucin,sepasaaejecutarlasiguientesentenciaensecuencia.AhorasisehaespecificadolaclusulaON
OVERFLOW,entoncesseejecutalasentenciaimperativaespecificadaacontinuacindelaestaclusula.
LasentenciaENDCALLdelimitaelmbitodelasentenciaCALL.
SentenciaENTRY:
Esta sentencia permite especificar cual es el punto de entrada en el subprograma llamado. Su formato es el
siguiente:
ENTRYpuntoentrada[USINGnombredato1[nombredato2]]
Dentrodeunprogramapuedenespecificarsemasdeunpuntodeentradadenominndosecadaunodeellos
conunnombrediferente.Sololosochoprimeroscaracteresdecadanombresonsignificativos.
Cuandoelprogramaprincipalllamaaunsubprograma,elcontrolpuedetransferirsealaprimerasentenciadela
PROCEDUREDIVISION,oaotrasentenciadiferente.Enelprimercaso,sepuedeprescindirdelasentencia
ENTRYyespecificaracontinuacindelapalabraDIVISION,laopcinUSINGseguidadeloscamposdedatos
correspondientes,peroenelsegundocasosiesnecesaria,conelfindeindicarmedianteunnombrecualesel
punto de entrada en el subprograma, esto es, indicar a partir de que sentencia se desea que comience la
ejecucinenelprograma.
SentenciaEXITPROGRAM:
Estasentenciadefineelfinallgicodelsubprogramallamado.Suformatoeselsiguiente:
EXITPROGRAM
Laejecucindeestasentenciahacequeelcontrolseadevueltoalasentenciainmediatamenteacontinuacin
delasentenciaCALLqueefectolallamadaalsubprograma.
SentenciaCancel:

Estasentenciagarantizaquelasiguientevezqueelprogramaseallamadoparasuejecucin,partamosdesu
estadoinicial.Suformatoeselsiguiente:

Indentificadoroliteralespecificanelnombredelsubprogramaacancelar.Siseutilizaunindentificador,este
debeserdeclaradocomouncampoalfanumricoysiseutilizaunliteral,estedebesernonumrico.
Cuando un subprograma es cancelado todos los subprogramas contenidos dentro del subprograma
referenciadoporlasentenciaCANCEL,sontambincancelados.
SentenciaCHAIN:
LasentenciaCHAIN transfiere el control desde un programa a otro sin que este ultimo, devuelva el control
cuandofinaliza.Suformatoeselsiguiente:

Identificadoroliteralespecificanelnombredelprogramaaencadenar.Siseutilizaunidentificadorparallamar
alprograma,estedebeserdeclaradocomoalfanumricoysiseutilizaunliteralestedebesernonumrico.
LaclusulaUSINGesincluidaenlasentenciaCHAIN,solamentesihayunafraseUSINGenlacabeceradela
PROCEDUREDIVISIONdelprogramaencadenado.
PROCEDUREDIVISION[USINGnombredato1[nombredato2]]
LosnombredatoespecificadosacontinuacindelaclusulaUSINGserefierenaloscamposdedatosqueson
transmitidosalprogramaencadenado.
ElprimerprogramaqueejecutalasentenciaCHAIN,estasiempreenmemoria,estoes,lamemoriaocupadapor
esteprogramanuncaesliberadayaunqueejecutemosunnuevoCHAINparavolverloacargarestonosucede
porqueyaestaenmemoria.
Lamemoriaocupadaporunprogramaencadenado,noesliberadahastaqueseejecuteunsegundoCHAINen
secuencia,nocontandoconelCHAINdelprimerprograma,elcualesnico.
LINKAGESECTION.
Estaseccinpermitedescribirloscamposdedatoscomunesalprogramaprincipalyalsubprograma,estoes,
loscamposdedatosquecompartenambosprogramas.
LINKAGESECTION.
[77descripcindecamposindividuales.]
[01descripcinderegistros.]
La descripcin de los campos y registros en esta seccin, se realiza utilizando la misma sintaxis que en la
WORKINGSTORAGE SECTION, a excepcin de la clusula VALUE que aqu solo puede utilizarse con los
nombresdecondicin.
Elprogramaprincipalyelsubprogramasecompilanseparadamenteporloqueesnecesarioqueladescripcin

deloscamposdedatoscomunesaparezcanenlaDATADIVISIONdecadaprograma.Sinembargo,elsistema
noreservamemoriaparalosregistrosycamposdedatosdeclaradosenLINKAGESECTION,perosiponea
disposicindelsubprogramalosregistrosycamposaqudeclaradosyquefueronreservadosparaelprograma
principal.
LosnombresdecamposdedatosqueseespecificanacontinuacindelaclusulaUSINGenlallamadaCALL,
no tienen porque denominarse igual que los correspondientes campos especificados a continuacin de la
clusulaUSINGenelsubprograma.
lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo10

11VISUALIZACINDEPANTALLAS.
SCREENSECTION.
LaSCREENSECTIONcontieneunadescripcindecadacamposobrelapantalla.Elaccesoaestoscamposes
mediantelassentenciasACCEPTyDISPLAY.Suformatogeneraleselsiguiente:
SCREENSECTION.
{01nombrepantallaopciones.
{Nn[nombredatos]opciones}}}
Elnombrepantalladebecomenzarconelnumerodenivel01.
Cadazonadedatospertenecientealapantallapuedecomenzarconunnumerodeniveldel02al49.
LapalabraFILLERnosepuedeutilizarenunadescripcindepantallaperonombredatospuedeomitirse.
Unadescripcindeunazonaelementaldedatosdebeconteneralmenosunadelassiguientesopciones:BELL,
BLANKLINE,BLANKSCREEN,COLUMN,LINE,PICTURE,VALUE.
UnapantallapuedeserreferenciadasolamenteporunasentenciaACCEPToDISPLAY.
La opcin USING permite utilizar el campo asociado, tanto para entrada como para salida. La sentencia
DISPLAYpantallavisualizaloscamposdesalidadeldiseopantallaylasentenciaACCEPTpantalla,permite
teclearlosdatosparloscamposdeentradadelmismodiseo.
Opciones:
OPCION

DESCRIPCIN

AUTO

Vaalsiguientecampocampounavezrellenadoelanterior.

BACKGROUNDCOLOR

Especificaelcolordefondodelelementoavisulizarenpantalla.

BELL

Emiteunsonidocadavezqueelelementoesejecutado

BLANK

Borraunalineaolapantalla.

BLANKWHENZERO

Poneblancoscuandoelcampoescero.

BLINK

Haceparpadearuntextoenpantalla.

COLUMNoCOL

Especificaunacolumnaenpantalla.

FOREGROUNDCOLOR

Especificaelcolordeprimerplanodeunliteral

FULLoLENGHTCHECK

Obligaadejarelcampocompletamentellenoovacio.

HIGHLIGHT

Ponelliteralocampoconuncolormasintenso.

JUSTIFIEDoJUST

Ajustaelcampoaladerecha.

LINE

Especificaunalineaenpantalla.

OCCURS

Permitedefiniruncampoconsubindices.

PROMPT

Cambiaelpromptdelsistema.

REQUIRED

Obligaarellenarelcampo.

REVERSEVIDEO

Camiaelcolordefondoporeldeprimerplano.

SECURE

Novisualizaenpantallalointroducido.

SIGN

Poneelsignodelnumero.

SIZE

Especificaeltamaodelcampo.

UNDERLINE

Hacequeelelementoescritoenpantallaaparezcasubrayado.

VALUE

Especificaunacadenadecaracteresparavisualizarlaporpantalla.

ZEROFILL

Rellenaacerosloscamposnumericos.

lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

También podría gustarte