Sei sulla pagina 1di 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 Resta Multiplicacin Divisin Potenciacin Asignacin Darprioridad

A+B AB A*B A/B A**B C=A+B D=(A+B)*C

2. Operadoresderelacin.
Losoperadoresderelacinseutilizanparacomparardosvaloresnumricosodosvalores alfanumricos(nonumricos).Elresultadopuedeserverdaderoofalso. Carcter = < > <= >= Estosoperadores,tienentodosigualprioridad. Significado Igualque Menorque Mayorque Menorigual Mayorigual Ejemplo A=B A<B A>B A<=B A>=B

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 V V F F B NotA AANDB AORB V F V F F F V V V F F F V V V F

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:Operadoresderelaciny operadoreslgicos. 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, idprograma debecoincidirconel 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 comienzanconelcaracterespecificadoporelliteral1yqueterminaconelcaracterespecificadoporel literal2,
esasignadoaposicionessucesivas,ascendentemente,enlasecuenciadeclasificacinqueseestaespecificando. 5SiseespecificalaopcinALSO,loscaracteresdelcodigonativoespecificadospor literal1y literal3seasignanalamisma 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. Laclausula DECIMALPOINTISCOMMApermitetransformar,enlaedicinderesultados,elpuntodecimalenlosnumeros,encoma. Lafuncindelaclausula CURRENCYISliteralesladereemplazarelsigno$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,alfanumricosy numricos. 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 S 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.

V P

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. B 0 / CR Permite que se inserte un espacio en blanco en el lugar que se indica en la especificacin de formato. Permitequeseinserteunceroenellugardequeseindicaenlaespecificacindeformato. Permitequeseinserteunabarraenellugardequeseindicaenlaespecificacindeformato. Smbolobancarioindicativodecrdito.Solopuedecolocarsealaderechadelaespecificacinde formato.CRaparecesobrelalneaqueseimprimesielvaloresnegativo.Sielvalorespositivo aparecernensulugar2espaciosenblanco. 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.

DB

$ +

$$...

++...

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 LOWVALUE ALLX01 ALLX02 ALLX07 Opciones. BELLoBEEP Esta clusula emite un sonido cada vez que DISPLAY es ejecutado. Limpialapantalladesdelaposicindelcursorespecificada,hastaelfinaldelamisma. Mueveelcursoralaposicinespecificada. Limpiadesdelaposicindelcursorespecificada,hastaelfinaldelalnea. Limpiatodalapantalla. Suena,envaunpitido.

BLINK HIGHLIGTH REVERSEVIDEO

Estaclusulahaceparpadearelelementovisualizado. Estaclusulahacequeelelementovisualizadoaparezcaenalta intensidad 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 FOREGROUNDCOLORISentero BACKGROUNDCOLORISentero BLANKSCREEN BLANKLINE Leerdatosdelteclado.ACCEPT.

Esta clusula hace que el elemento visualizado aparezca subrayado. Esta clusula especifica el color en el que es visualizado el elemento.Enteroesunvalorentre0y7. Esta clusula especifica el color de fondo sobre el que es visualizadoelelemento.Enteroesunvalorentre0y7. Borralapantalla. Borraunalnea.

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 TIME esunaconstantedecincocifrasdelaformaAANNN,dondeAAsonlasdosultimasdelaoy NNNeseldadelao. 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. Loscamposelementalesennombrededatos1 debentenerunaUSAGEDISPLAY. LaclusulaATdalaposicindepantalladondevaacomenzarlaoperacindelectura.Sinoseespecifica,se suponelalnea1,columna1. LasclusulasLINEyCOLpuedenaparecerencualquierordenysirvenparaespecificarlalneaylacolumna respectivamente,dondevaacomenzarlalectura.Elnumerodelneavieneespecificadopornombrededatos2 oporentero1 yelnumerodecolumnapornombrededatos3 oporentero3. LafraseUPONCRT,eslaopcinpordefectoeindicaaceptareldatoindicadoporlaconsola. Sinombrededatos1 correspondeauncampocompuesto,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 HIGHLIGHT REVERSEVIDEO esta clusula emite un sonido cada vez que ACCEPT es ejecutado. Estaclusulahaceparpadearelelementoaceptado. Estaclusulahacequeelelemento aceptado aparezca en alta intensidad. Estaclusulahacequeelelementoaceptadoaparezcaenvdeo inverso. Estaclusulaseutilizaconcamposelementalesyespecificael tamaodelcampo.Sieltamaoespecificadoesmenorqueel especificado en la clusula PIC, prevalece el tamao especificadoporlaclusulaSIZEysieltamaoesmasgrande prevaleceelespecificadoporlaclusulaPIC. UNDERLINE FOREGROUNDCOLORISentero BACKGROUNDCOLORISentero Esta clusula hace que el elemento aceptado aparezca subrayado. Especificaelcolorenelqueseescribeelelementoaceptado. Especificaelcolordefondosobreelqueseescribeelelemento aceptado Esta clusula marca sobre la pantalla con el carcter especificado, los posiciones vacas mientras se ejecuta la

operacinACCEPT.PROMPTsincarcterutilizaelcarcterpor defecto(carcterdesubrayado). AUTO FULLoLENGTHCHECK REQUIREDoEMPTYCHECK SECUREoNOECHO UPDATE RIGHTJUSTIFY EstaclusulaterminaautomticamenteunoperacinACCEPT cuandoseteclaelultimocarcter. Esta clusula obliga a dejar el campo completamente vaco o completamentelleno. Estaclusulaobligaanodejarelcampocompletamentevaco. Estaclusulaimpidequeloscaracterestecleadosaparezcanen lapantalla. Esta clusula permite visualizar el contenido del campo antes deefectuarlaentrada. 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 especificacinentero1TOentero2 dondeelvalordeentero1esmenorqueelvalordeentero2. 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. Sehablade accesosecuencial cuando 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
Secuencial Relativa Secuencialindexada

Creacin
Secuencial Secuencialoaleatoria Secuencialoaleatoria

Recuperacin
Secuencial 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. Elnombredefichero eselnombresimblicodadoalfichero.Debesernicoenelprograma. ClusulaASSIGN: Asignaelficheroaldispositivofsicoenelcualserledoy/oescrito:

Nombreexternodelfichero eselnombrerealquetieneelficherobajoelsistemaoperativo.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 Nombrededato indicaelcampoalfanumricoelementalocompuestopertenecienteaunregistrodelfichero 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 1 2 3 4 9 Eldgitomasaladerechaindica: 0 2 4 5 7 PrrafoIOCONTROL. Nohayinformacindisponible. Claveinvalidaenficheroindexado. Lalongituddelregistronoescorrecta. Ficheroopcionalreferenciadonopresente. Elficherosecuencialnoestaencintamagntica. Operacincorrecta. Findefichero. Claveinvalida. Errorpermanente. ErrorLgico. Mensajedeerrordelsistema.

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: FDeslaabreviaturadeFileDescriptiony nombredefichero, 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 comprendidoentrelosvalores entero1 yentero2 .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 estarcomprendidoentrelosvaloresentero1 yentero2 .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.Especificarlaclusula SELECTcorrespondientealfichero,dentro del prrafo FILE CONTROL.SiesnecesariodescribirtambinelprrafoIOCONTROL. 2.Descripcindelfichero,estoes,especificacindelaclusula FDcorrespondiente 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:

SiseomitelaclusulaORGANIZATIONseasumeorganizacinsecuencialysiseomitelaclusulaACCESS se asumeaccesosecuencial. Laorganizacin RECORDSEQUENTIAL, se refiere a un fichero secuencial estndar. En este, la longitud de cadaregistroseespecificapordosbytesqueprecedenalpropioregistro.LaorganizacinLINESEQUENTIAL, eslaopcinpordefecto,yhacequecadaregistrovayaseguidodeuncarcterfindelneaqueactacomo delimitador. Enlaclusula SELECTtambinsepuedeespecificarelficherocomounficheroenmltiplescarretesdecinta 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,losdatosparaunasentencia READquedandisponiblesenordeninverso,estoes,comenzando porelultimo.Laclusula NOREWINDhacequeelcarretedecintanoserebobine.Estopuedesermuytil cuandoenunacintahaymltiplesficheros. Siseespecificalafrase WITHLOCK,elefectoesequivalenteaespecificar LOCKMODEEXCLUSIVE 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. Cuandoseespecificalaclusula IO,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. Lasopciones BEFOREo AFTERADVANCINGseaplicansolamenteaficherosdesalidaimpresoseindican, escribir el registro antes de (BEFORE) o despus de (AFTER) avanzar, entero o nombrededato1 lneas, pagina(PAGEo FORMFEED),otabulacinvertical(TAB). Nombremnemnico esunnombrecreadoporelprogramadorconelfindeasociarloenelprrafo SPECIAL NAMES aunapalabrareservadaCOBOL. SiseespecificaENDOFPAGEosuequivalenteEOP,debeespecificarselaclusulaLINAGEenladescripcin delfichero(FD)enelcualestamosescribiendo.EOPesunacondicinqueesciertacuandosealcanzaelfinal delapaginalgica,encuyocasoseejecutasentencia1 . Sentencia1ysentencia2 sonsentenciasimperativas,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.Unasentencia CLOSE puede cerrarunoomasficheros. LasopcionesREELyUNITseutilizanconcintasmagnticasydiscosmagnticosrespectivamenteparaindicar queleficherotratadoesmultivolumen. LaopcinNOREWINDseutilizaparaanularlaoperacinderebobinadoqueseproducenormalmentealcerrar unficherocontenidoencintamagntica. LaopcinWITHLOCKhacequeelficherocerradonopuedavolverseaabrirduranteelrestodelaejecucin delprocesoencuestin. Accesoaunficherosecuencial: Paraaccederaunficherosecuencial,lospasosaseguirsonlossiguientes: 1EspecificarlaclusulaSELECTcorrespondientealfichero,dentrodelprrafo FILECONTROL.Sies necesariodescribirtambinelprrafoIOCONTROL. 2Enladescripcindelfichero,estoes,especificacindelaclusula FD correspondiente 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] Fichero eselnombresimblicodelficherodelcualsequiereleerunregistro.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,encuyocasoseejecutala sentencia1 .Silacondicinresultaserfalsa,entoncesseejecuta,despus dehaberserealizadolaoperacindelectura,lasentencia2 ,silafraseNOTATENDhasidoespecificada,yse pasaalasentenciasiguiente. Sentencia1ysentencia2 sonsentenciasimperativas,estoes,nocondicionales. AunquelafraseATENDseaopcional,debeespecificarsecuandoseaccedasecuencialmentealosregistrosde unfichero,parapoderdetectarcuandosellegaalfinaldelmismo. ENDREADdelimitaelmbitodelasentenciaREADypuedeserutilizadosolamenteconlafraseINVALIDKEY. Enunficherosecuencialabiertoenmodo INPUT,lasentencia READo READWITHLOCKnopuedeleerun registroenmodoexclusivo. EnunficheroabiertoenmodoIOconLOCKMODEAUTOMATIC,amenosqueseespecifiquelaopcinWITH NOLOCK,cadaregistroenelmomentodeleerseesexclusivo,nocompartido,siendoliberadocuandofinaliza lalectura. Enunficheroabiertoenmodo IO con LOCKMODEMANUAL,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] RegistroeselnombredeunregistrolgicoespecificadoenlaFILESECTIONdela DATADIVISON.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.

Cuandoelmododeaccesoes SEQUENTIAL,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. Laopcin NEXTo PREVIOUS debe especificarse cuando en un fichero en modo de acceso DYNAMIC los registrosseleensecuencialmente. Silaopcin PREVIOUSsehaespecificado,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. Enunficheroabierto IOcon LOCKMODEAUTOMATICO,amenosqueseespecifiquelaopcin WITH NO LOCK,cadaregistroesenelmomentodeleerseexclusivo,nocompartido,siendoliberadocuandofinalizala lectura. SiseespecificalaopcinKEYlaclaveutilizadapararecuperarunregistrovienedadapornombredato2 opor 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 ejecutasentencia3 descritaacontinuacindelafraseINVALIDKEY,siestaopcinhasidoespecificada. SentenciaWRITE: Paraficherosindexadoselformatodeestasentenciaeselsiguiente:

Elvalordelaclaveprincipaldebesernicoenelfichero. Elnombrededatoqueespecificalaclaveprincipal,debeserpuestoporelprogramaalvalordeseado,antesde ejecutarlasentenciaWRITE. Sielmododeaccesoes SEQUENTIAL,losregistrosdebenseremitidosalsistemaenordenascendentedela claveprincipal. SielmododeaccesoesRANDOMoDYNAMIClosregistrospuedenseremitidosalsistemaencualquierorden. SilaopcinINVALIDKEYsehaespecificado,sentencia1 seejecutarenlossiguientescasos:

a)Cuandosehaespecificadomododeaccesosecuencialparaunficheroabiertoparaescribir (OUTPUT)ylaclavedelregistronoesmayorqueladelregistroanterior. b)CuandoelficherosehaabiertoenmodoOUTPUToIOylaclavedelregistroaescribirexiste yaenelfichero. c)Cuandoelficherosehaabiertoenmodo OUTPUT o IOylaclavealternativadelregistroa 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,lasentencia1 seejecutarenlossiguientescasos: 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.

Fichero eselnombredeunficheroindexadoabiertoenmodoINPUToIO,conmododeaccesoSEQUENTIAL oDYNAMIC. Nombredato esuncampoalfanumricoquedebeserdeclaradoenunaclusulaRECORDKEYasociadaconel fichero. Nombredato puedesertambinuncamposubordinadoalcampoespecificadoenlaclusula RECORD KEY. Estecamposubordinadodebeserlaposicindelcarctermasalaizquierda,secorrespondaconlaposicindel carcter mas a la izquierda del campo especificado en la clusula RECORD KEY, esto es, el primer campo subordinado. PreviamentealaejecucindeunasentenciaSTARTelprogramadebecargarennombredato elvalordelaclave correspondientealregistroenelquenosqueremosposicionar. LacomparacinindicadaporlaoperacinderelacinespecificadaacontinuacindeKEY,ocurreentreelvalor delcampoclavedelosregistrosdelficheroyelvalordelcontenidoenel campodato . Si la longitud de los camposcomparadosnosoniguales,elcampomaslargosetruncaalalongituddelmascorto. Silafrase KEY 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,entoncessedalacondicin INVALID KEYyseejecutalasentencia1 ,silafrasehasidoespecificada. Siseespecificalaopcin WITHSIZE, entoncesseignoraeloperadorderelacinespecificadoacontinuacin de KEY. 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] Fichero eselnombredeunficheroindexadoabiertoenmodoIO. Antes de que se ejecute una sentencia DELETE, es necesario haber cargado en el campo descrito a continuacindelaclusulaRECORDKEY,elvalordelaclavedelregistroalquesequiereacceder. ParaficherosenlosqueelmododeaccesoesSEQUENTIALlaultimasentenciaejecutadaantesdelaejecucin delasentenciaDELETEdebeserlasentenciaREAD,lacuallocalizaelregistroaborrarporelvalorcontenido enelcampoquehacereferenciaalaclaveprincipal. Paraficherosenlosqueelmododeaccesoes RANDOM o DYNAMIC, elregistroaborrarvienedadoporel contenido del campo que hace referencia a la clave principal. No es necesario ejecutar previamente una sentenciaREAD. Cuandoseejecutalasentencia DELETE,elcontenidodelcampoespecificadocomoclave,escomparadocon losvalorescontenidosenloscorrespondientescamposdelosregistrosdelfichero,hastaqueseencuentreun valorigual,encuyocasoseborraelregistroyseejecutalasentencia2silafrase NOTINVALIDKEYhasido especificada.Sinoseencuentraunvalorigualalaclavedada,entoncesseejecutala sentencia1 descritaa 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. Laclusula RELATIVEKEY especificaelcampodenominadopor nombredato ,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. Laopcin NEXT lee 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 PREVIOUS leeelregistroanteriordelfichero,yejecutalasentencia1 siseespecificalaclusulaATEND,yes finaldelfichero,sinoejecutasentencia2 siseespecificalaclusulaNOTATEND. 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 ,secolocaren nombredato1 un valor de 2 dgitos para indicar comoseharealizadolaoperacindeclasificacin.Losvaloresquesepuedendarsonlossiguientes: 00 30 9 Clasificacinefectuadacorrectamente Error Elsegundodgitocorrespondeaunnumerodeerrordelsistema.

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

Fichero3 eselficherodeclasificacin,elcualtienequeserdescritoenlaDATADIVISION,precedidopor SD. El resto de los ficheros son ficheros normales. Para evitar resultados inesperados, es conveniente que el tamaoderegistroseaelmismoparatodoslosficheros. OpcionesASCENDINGyDESCENDING Indican,silaclasificacinsearealizarascendenteodescendentemente,porelcontenidodeunoomascampos. Nombredato1 ynombredato2,..., sonlosnombresdeloscamposporlosquesedeseaclasificarelfichero. Estoscamposdebenperteneceralosregistrosasociadosal fichero3 .Enladescripcindeestoscamposno puedefigurarlaclusulaOCCURS. LosnombresdedatoquesiguenalapalabraKEYdebenespecificarseenordendecrecientedesignificacin. Siseespecificalaclusula DUPLICATES yelcontenidodetodosloscamposempleadosenlaclasificacin, pertenecientesaundeterminadoregistro,coincidenconelcontenidodeloscorrespondientescamposdeotros registros,entonceselordenenelquesoncolocadoslosregistroseselordendeaparicinenlosficherosde entradasegnsehanespecificadoenlasentenciaSORT.Sisedaestecasoylaclusula DUPLICATES nose 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]. UnasentenciaRETURNsolamentesepuedeutilizarenunaseccinOUTPUTasociadaaunasentenciaSORT o MERGE. LafuncindeestasentenciaessimilaralafuncindelasentenciaREAD.

SentenciaMERGE: Estasentenciapermitefusionardosomasficherosclasificadosporunmismoconjuntodecampos.Suformato eselsiguiente:

lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Capitulo10

10COMUNICACINENTREPROGRAMAS. Llamadaaunsubprograma.SentenciaCALL: Paratransferirelcontroldeunprogramaaunsubprogramaseutilizalasentencia CALL, 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. Losnombresdato especificadosacontinuacindelaclusulaUSINGserefierenacamposquepuedenutilizar tantoelprogramaprincipalcomoelsubprograma. SidurantelasentenciaCALLnoesposibleacomodarelprogramaenmemoriaelprogramaespecificadoparasu ejecucin,sepasaaejecutarlasiguientesentenciaensecuencia.Ahorasisehaespecificadolaclusula ON 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:

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

Identificadoroliteralespecificanelnombredelprogramaaencadenar.Siseutilizaunidentificadorparallamar alprograma,estedebeserdeclaradocomoalfanumricoysiseutilizaunliteralestedebesernonumrico. LaclusulaUSINGesincluidaenlasentencia CHAIN,solamentesihayunafraseUSINGenlacabeceradela PROCEDUREDIVISIONdelprogramaencadenado. PROCEDUREDIVISION[USINGnombredato1[nombredato2]] Losnombredato especificadosacontinuacindelaclusulaUSINGserefierenaloscamposdedatosqueson 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

deloscamposdedatoscomunesaparezcanenla DATADIVISIONdecadaprograma.Sinembargo,elsistema noreservamemoriaparalosregistrosycamposdedatosdeclaradosen LINKAGESECTION,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}}} Elnombrepantalla debecomenzarconelnumerodenivel01. 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 DISPLAY pantallavisualizaloscamposdesalidadeldiseopantallaylasentencia ACCEPT pantalla,permite teclearlosdatosparloscamposdeentradadelmismodiseo. Opciones: OPCION AUTO BACKGROUNDCOLOR BELL BLANK BLANKWHENZERO BLINK COLUMNoCOL FOREGROUNDCOLOR FULLoLENGHTCHECK HIGHLIGHT JUSTIFIEDoJUST LINE OCCURS DESCRIPCIN Vaalsiguientecampocampounavezrellenadoelanterior. Especificaelcolordefondodelelementoavisulizarenpantalla. Emiteunsonidocadavezqueelelementoesejecutado Borraunalineaolapantalla. Poneblancoscuandoelcampoescero. Haceparpadearuntextoenpantalla. Especificaunacolumnaenpantalla. Especificaelcolordeprimerplanodeunliteral Obligaadejarelcampocompletamentellenoovacio. Ponelliteralocampoconuncolormasintenso. Ajustaelcampoaladerecha. Especificaunalineaenpantalla. Permitedefiniruncampoconsubindices.

PROMPT REQUIRED REVERSEVIDEO SECURE SIGN SIZE UNDERLINE VALUE ZEROFILL

Cambiaelpromptdelsistema. Obligaarellenarelcampo. Camiaelcolordefondoporeldeprimerplano. Novisualizaenpantallalointroducido. Poneelsignodelnumero. Especificaeltamaodelcampo. Hacequeelelementoescritoenpantallaaparezcasubrayado. Especificaunacadenadecaracteresparavisualizarlaporpantalla. Rellenaacerosloscamposnumericos.

lafac u.c omnoseresponsabilizaporelusoqueotrosoterc eros,puedandarleaestainformac in.

Potrebbero piacerti anche