Vous êtes sur la page 1sur 96

CONCEPTOS BSICOS COBOL

HISTORIA .LenguajeCOBOL(CommonBussinesOrientedLanguage). .Creadoenelao1957,apeticindelGobiernodelosEE.UU.EnelproyectoparticiparonElDepartam entodeDefensadelosEEUUylosfabricantesdeordenadores. .Elresultado,enelao1960,unlenguajedeprogramacinorientadoalcomercioCOBOL-60. .Desde1960hastaelCOBOLactualsehaidorevisandolasdistintasversiones(aos1961,1965y19 68)queseibancomercializandodeestelenguaje.Peronofuehastaelao1974queelANSI(America nNationalStandarInstitute)estandarizellenguaje.

VENTAJAS E INCONVENIENTES: .Ventajas: .facilidad para el manejo de ficheros .Las instrucciones son palabras del ingls. .Inconvenientes: .Incmodo de escribir ya que la sintaxis de las instrucciones es bastante amplia.

COMO CREAR UN PROGRAMA COBOL: .ElCOBOLesunlenguajedealtonivelyprecisadeunprogramacompilador(programaqueconvier teelcdigofuenteencdigomquina) parapoderdesarrollarunprogramaejecutable. Parapoderllevaracaboestecambiosedebenrealizarlossiguientespasos:

COMO CREAR UN PROGRAMA COBOL: 1.Escribir el cdigo fuente en lenguaje COBOL. .Editor de textoASCII (texto plano): .Ejemplo: el EDIT de MS-DOS, PSPad, Bloc de notas de Windows, etc... .Las instrucciones o comandos de cobol se debern escribir en dicho editor de texto cumpliendo todas las reglas del lenguaje que veremos a lo largo del curso. .Guardaremos el archivo asignndole un nombre y una extensin (.CBL o .COB) .A:\EJEM10.CBL o C:\EJEM20.COB

COMO CREAR UN PROGRAMA COBOL: 2.Compilar el cdigo fuente para convertirlo en cdigo mquina .Podemos hacerlo con cualquiera de las siguientes opciones: .Hacer doble clic sobre el fichero de texto. .Ejecutar el programa RMCOBOL V.7 / COMPILER. .Para evitar que el compilador nos realice preguntas respecto a las opciones de compilacin ser necesario poner [;] al final del fichero. .Si la compilacin fuera satisfactoria se generar un archivo, con el cdigo mquina, con extensin . COB y el mismo nombre que el archivo del cdigo fuente.

EJEMPLO DE CDIGO FUENTE:

RESPUESTA DE COMPILACIN CON ;

FICHEROS CREADOS Y GENERADOS

CONCEPTOS BSICOS DEL LENGUAJE .Lahojadecodificacin .TodoprogramaCOBOLdebeseguirunasnormasdesintaxisqueencasodenocumplirseenlafasede escrituradelcdigofuente,enlafasedecompilacinproduciranerroressintcticos.Paraqueestos erroresdesintaxisnoseproduzcanexistenlashojasdecodificacin.

HOJA DE CODIFICACIN .Tiene la siguiente codificacin: .Lascolumnasdela1ala6:Sedebendejarlibrespuestoquesonusadasporelcompiladorparapon erlosnmerosdelnea.

HOJA DE CODIFICACIN .La columna 7: En esta columna solo se puede escribir un * lo cual indica al compilador que la lnea es un comentario y debe ser ignorada; o un . que indica que una informacin literal no ha cabido entera en la lnea precedente, para ello el literal debe llegar a la columna 72 (y sin cerrar comillas) en la lnea siguiente poner . y en la columna 12, abrir de nuevo comillas y el resto del literal (estas comillas si deben ser cerradas).

HOJA DE CODIFICACIN .Lascolumnas8-11:Apartirdelacolumna8sedebenponerlosnombredelasdivisiones,seccion es,prrafos,nmerosdenivel. .Lascolumnas12-72:Enestascolumnassedeberescribirelprogramafuente,ascomotodoloqueno sehaespecificadoanteriormente. .Lascolumnas73-80:Estascolumnassonignoradasporelcompilador.Nosepuedeescribirmsalld elacolumna80alahoradeusarestascolumnascomocomentarios.

NORMAS Y CONSEJOS .Losnombresdedivisin,seccinyprrafodebenirenunasolalnea. .Cadalneadelprogramadebeacabarenpunto. .Unalneadelprogramapuedeocuparmsdeunalneafsica. .Siunalneanoacabaenpunto,lasiguienteseconsideralacontinuacindelamisma. .Noesobligatoriollenartotalmenteunalneafsica. .Sepuedendejarlneasenblancoparamayorcompresindelmismo. .Losprogramascoboldebenserescritosenmaysculas(Hayversionesdelcompiladorenlasqueno esobligatorio).

SINTAXIS DEL LENGUAJE .Elementos bsicos del lenguaje: Caracteres: .Las letras maysculas y minsculas del alfabeto ingls: .A B C D E F G H I J K L M N O P Q R S T U V W X Y Z .a b c d e f g h i j k l m n o p q r s t u v w x y z .Los diez dgitos decimales: .0 1 2 3 4 5 6 7 8 9 .Los caracteres especiales: ., . ; ( ) < / + * -= > $ : .Y el espacio en blanco

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Palabras: .Creadasporelprogramador:Estassonutilizadasparadefinirvariables,campos,registros ,ficheros, prrafos,etc.Sesubdividenen: .Nombresdedatos:Eselnombreconelqueseidentificaaundeterminadocampoovariable,debern respetarlassiguientesreglas: .Debentenerentre1y30caracteres .Nopuedentenerningnespacioenblanco .Almenosunodeloscaracteresdebeserunaletra .Nopuedenusarsepalabrasreservadas

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Palabras: .Creadasporelprogramador:Estassonutilizadasparadefinirvariables,campos,registros ,ficheros, prrafos,etc.Sesubdividenen: .Nombresdeprrafososeccin:Eselnombreconelqueseidentificaaunprrafoounaseccin,deberespe tarlassiguientesreglas: .Debentenerentre1y30caracteres .Loscaracteresslopuedenserletras,nmerosyelguin .Elguinnopuedeirnielprimeronielltimo.

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Palabras: .Creadasporelprogramador:Estassonutilizadasparadefinirvariables,campos,registros ,ficheros,prrafos, etc.Sesubdividenen: .Constantes literales: Datos que no cambian su valor durante la ejecucin del programa. Pueden ser alfanumricos y numricos. Deben cumplir las siguientes normas: .Deben ir entre comillas si son alfanumricos. .Dentro de las comillas no pueden ir otras comillas en los alfanumricos. .Pueden usarse palabras reservadas en los alfanumricos. .Pueden tener entre 1 y 132 caracteres si son alfanumricos y 18 si son numricos .Pueden estar precedidos del signo si son numricos.

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Palabras: .Palabras Reservadas: Son palabras clave que tienen predefinido un significado especial para el compilador de COBOL que representan instrucciones o clusulas a realizar por este. .Verbos: Son palabras que expresan una accin a realizar con los datos o ficheros como MOVE, ADD, READ .Palabras clave: Son las que deben aparecer obligatoriamente en una clusula para que esta se ejecute como MOVE 1 TOA. .Palabras opcionales: Son aquellas que pueden omitirse en una clusula, dependen de la versin del compilador, como ACCESS MODEISRANDOM

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Palabras: .Constantesfigurativas:SonconstantespredefinidasporelcompiladordeCOBOLyquepueden usarseencualquierpartedelaWORKINGSTORAGESECTIONydelaPROCEDUREDIVISION. .Podemosencontrarlassiguientes:

ZERO/ES:Designaelvalor0endatosnumricos MOVEZEROESTONUMERO. SPACE/S:Seutilizaparaasignarespaciosenblancoauncampoalfanumricooalfabtico MOVESPACESTONOMBRE.

SINTAXIS DEL LENGUAJE .Constantes figurativas: HIGH-VALUE/S: Designa el valor ms alto en un dato alfanumrico MOVE HIGH-VALUE TO VARIABLE. LOW-VALUE/S: Designa el valor ms bajo para un dato alfanumrico MOVE LOW-VALUE TO VARIABLE. ALL: Genera tantas veces un carcter como diga la longitud del dato 77 VARIABLE PIC X(10). ... MOVE ALL TO VARIABLE.

QUOTE:Genera unas comillas en las salidas de datos o en los literales DISPLAY El ingenioso hidalgo QUOTE Don Quijote QUOTE

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Operadores:Sonlosencargadosdemanipularlosdatos. ARITMTICOS:Realizanoperacionesaritmticas

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Operadores:Sonlosencargadosdemanipularlosdatos. DERELACION:Seutilizanparacompararlosvaloresdelavariables,elresultadodelacomparac inserverdaderoofalso.

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Operadores:Sonlosencargadosdemanipularlosdatos. LOGICOS:Permitencombinarvariasexpresionesderelacin

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Expresiones:Unaexpresinaritmticapuedeserunaconstante,unavariableounconjuntodeconst antesyvariablesunidasporoperadorestantoaritmticoscomolgicos;dandolugaraexpresiones aritmticasoexpresioneslgicas. NUM1+NUM2/(NUM3)oA>BANDA>C

SINTAXIS DEL LENGUAJE .Elementosbsicosdellenguaje: Oraciones:Sonunconjuntodeinstrucciones, expresiones,variablesy/oconstantesquerepresentaalgunaordencompletaalcompiladorpa raeltratamientodelainformacin. MOVE10TOA.

SINTAXIS DEL LENGUAJE .ESTRUCTURA DE UN PROGRAMA COBOL: .DIVISIONES

Un programa COBOL est estructurado en cuatro DIVISIONES. Dos de estas DIVISIONES son obligatorias. Deben ir en riguroso orden. No es posible crear ms divisiones.

SINTAXIS DEL LENGUAJE IDENTIFICATIONDIVISION(1divisin) Enestadivisinseindicanlosnombresdelprograma, delprogramador,lasfechasdeescrituraycompilacin ESTRUCTURADEUNPROGRAMACOBOL:

SINTAXIS DEL LENGUAJE ENVIRONTMENTDIVISION (2divisin) Estadivisinsirveparadescribirelentornofsicodelprograma,esdecir,ficheros, impresoras ESTRUCTURADEUNPROGRAMACOBOL:

SINTAXIS DEL LENGUAJE DATADIVISION(3divisin) Enestadivisinsedebenespecificardetalladamentetodoslosdatosquedespusvanaaparecerene lprograma,variables, campos,registros ESTRUCTURADEUNPROGRAMACOBOL:

SINTAXIS DEL LENGUAJE PROCEDUREDIVISION (4divisin) Estadivisincontendrlasinstruccionesylalgicanecesariaspararesolverunproblema. ESTRUCTURADEUNPROGRAMACOBOL:

SINTAXIS DEL LENGUAJE ESTRUCTURADEUNPROGRAMACOBOL: Delascuatrodivisiones,solodossonobligatoriasenunprogramaCOBOL: IDENTIFICATIONDIVISIONPROCEDUREDIVISIONAunqueenlamayoradeprogramasaparecerladivisin DATADIVISIONyaqueenellasedebendefinirtodalasvariablesnecesariasparaeldesarrollod elprograma.

SINTAXIS DEL LENGUAJE ESTRUCTURADEUNPROGRAMACOBOL: SECCIONESSoncadaunadelaspartesenlasquesedivideunaDivisin,exceptolaIDENTIFICATIOND IVISIONqueestacompuestaporprrafos. SoloenlaPROCEDUREDIVISIONelprogramadorpuedecrearnuevassecciones,enlasdemsdivision es,estasyaestnpredefinidas. CadaSeccinsepuededividirasuvezenprrafos.

SINTAXIS DEL LENGUAJE ESTRUCTURADEUNPROGRAMACOBOL: PARRAFOS Un prrafo es la secuencia de una o ms oraciones. IDENTIFICATION DIVISION: est dividida en prrafos. PROCEDURE DIVISION: es habitual dividirla en prrafos, creados por el programador para una mejor compresin del programa.

SINTAXIS DEL LENGUAJE .IDENTIFICATIONDIVISION: Formato: IDENTIFICATIONDIVISION. PROGRAM-ID.Nombre_programa. [AUTHOR.Nombre_autor.] [INSTALLATION.Ordenador_de_instalacin.] [DATE-WRITTEN.Fecha_de_comienzo.] [DATE-COMPILED.Fecha_de_ltima_compilacin.] [SECURITY.Comentarios.] .Soloelnombredeladivisinyelprimerprrafosonobligatorios. .EnelprrafoPROGRAM-ID.seespecificarelnombredelprograma, estenombreseutilizarpararealizarllamadasentresubprogramas. .Elrestodeprrafosnosonobligatoriosysuusoessimplementeinformativo.

SINTAXIS DEL LENGUAJE .A partir de ahora el formato que utilizaremos para describir la estructura de un programa en COBOL ser: .Irn en maysculas las palabras reservadas. .En minsculas el nombre de las variables, campos o registros. .Entre [ ] irn aquellas expresiones que pueden ser opcionales. .Entre { } varias expresiones a elegir una obligatoriamente. .Los puntos suspensivos indicarn que se puede repetir la opcin tantas veces como sea necesaria.

SINTAXIS DEL LENGUAJE .EjemplosdeIDENTIFICATIONDIVISION Ejemplo1. IDENTIFICATION DIVISION. PROGRAM-ID. EJEMPLO1. AUTHOR. MANUEL CHACON. INSTALLATION. PC-COMPATIBLES. DATE-WRITTEN. 25/07/03. DATE-COMPILED. 25/07/03. SECURITY. EJEMPLO DE LA PRIMERA CLASE. Ejemplo2. IDENTIFICATION DIVISION. PROGRAM-ID. EJEMPLO2.

SINTAXIS DEL LENGUAJE .ENVIRONMENTDIVISION: Enestadivisin,ladelentornofsico,sepermitedefinireltipodeordenadorenelqueelprograma vaaserinstalado,ascomolosdispositivosperifricosyficherosnecesariosparaelfuncionami entodelmismo. Formato: ENVIRONMENTDIVISION. [CONFIGURATIONSECTION.](Seccin1) [SOURCE-COMPUTER.Modelo_ordenador.] [OBJECT-COMPUTER.Modelo_ordenador.] [SPECIAL-NAMES.] *Nombres_Especiales. [INPUT-OUTPUTSECTION.](Seccin2) [FILE-CONTROL.] *Descripciondeficheros. [I-O-CONTROL.] *Controldelaentrada/salida.

SINTAXIS DEL LENGUAJE .ENVIRONMENTDIVISION: Configurationsection(Seccindelaconfiguracin) Esopcional(comotodaladivisin)ysuutilidadesladedocumentarelprograma.Contienetresprr afos: .SOURCE-COMPUTER:Enelseespecificaelmodelodeordenadorenelquesecompilelprograma. .OBJECT-COMPUTER:Enelseespecificaelmodelodeordenadordondesevainstalarelprogramae jecutable. .SPECIAL-NAMES:Sepuedenponernombreespecialesadispositivosyconfigurareltipodealfa betoausar ,

SINTAXIS DEL LENGUAJE .OPCIONESDECONFIGURACINDESPECIAL-NAMES:

.nombre_dispositivoISnombre_nemotcnico. .Estaclusulanossirveparacambiarelnombredealgndispositivofsicoparamejorcompresindelpr ograma,losdispositivosson: SYSOUT,DISK,PRINTER,TAPE,CONSOLE

SINTAXIS DEL LENGUAJE .OPCIONESDECONFIGURACINDESPECIAL-NAMES:

STANDARD-1 STANDARD-2 ALPHABET nombre_alfabetoIS NATIVE ASCII EBCDIC Estaclusulanospermiteespecificarelnombredeljuegodecaracteresausarporelprograma.Do ndeelalfabetoSTANDARD-1eselcdigoASCII, STANDARD-2eselcdigoISO7bits,NATIVEestambinelcdigoASCIIylosotrosdossonexactamentelos cdigosreferidosASCIIyEBCDIC.

SINTAXIS DEL LENGUAJE .OPCIONESDECONFIGURACINDESPECIAL-NAMES:

.CURRENCYISliteral. .LaclusulaCURRENCYpermitecambiarelsigno$ delamonedaamericanaporcualquierotrosmbolodeunsolocarcter,elcarcterespecificadoenlac lusulaCURRENCYtambindebeserespecificadoenlaclusulaPICdondequieraserusado.

SINTAXIS DEL LENGUAJE .OPCIONESDECONFIGURACINDESPECIAL-NAMES:

.DECIMALPOINTISCOMMA. .Permiteinvertirlasfuncionesdelacomayelpuntodecimal.Paraserusadasenformatoespaoly noenformatoingls. Noserecomiendasuuso.

SINTAXIS DEL LENGUAJE .ENVIRONMENTDIVISION: Input-OutputSection(SeccinEntrada/Salida) LaSeccindelaE/StambinesopcionalysololausaremoscuandonecesitemosquenuestroprogramaC OBOLutiliceficherosy/oimpresoras.

SINTAXIS DEL LENGUAJE .ENVIRONMENTDIVISION: Ejemplo ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. PC-COMPATIBLE. OBJECT-COMPUTER. PC-COMPATIBLE. SPECIAL-NAMES. SYSOUT IS PANTALLA CURRENCY IS E

DECIMAL POINT IS COMMA.

SINTAXIS DEL LENGUAJE .DATADIVISION: .Esladivisindelosdatos. .Seutilizaparaespecificartodaslasvariablesqueseusanenelprograma,ascomolaspantalla sylosinformesdeimpresora. .Tambinseutilizaparaespecificarlosregistrosycamposdelosficheros. .NoesobligatoriosuusoenunprogramaCOBOL, peroenun99%delosprogramasserutilizada.

SINTAXIS DEL LENGUAJE .DATADIVISION: .Estadivisinestcompuestaporseisseccionesquedebenaparecersiempreenelsiguienteorden:

[DATADIVISION.] [FILESECTION.] *Secciondeficheros [WORKING-STORAGESECTION.] *Seccindedescripcindevariablesycampos [LINKAGESECTION.] *Seccindeenlacedevariablesycamposconotrosprogramas [COMMUNICATIONSECTION.] *Seccindelacomunicacin [REPORTSECTION.] *Seccindeinformesdeimpresora [SCREENSECTION.] *Seccindepantallas

SINTAXIS DEL LENGUAJE .DATADIVISION: .FileSection(SeccindeFicheros)

Seutilizaconficheros. .Working-StorageSection(Seccindeltrabajo)

Estaseccinnoesobligatoriaperoserusadaenlamayoradelosprogramas, porqueenestaseccinsedefinentodaslasvariables,camposytablasquesevanausarenelprogra ma.

SINTAXIS DEL LENGUAJE .DATADIVISION: .LinkageSection(Seccindeenlace)

Seccinqueseusaparacompartiryusarlasvariablesdeunprogramaenunsubprograma. .CommunicationSection(Seccindelacomunicacin)

Estaseccinpermiteprocesarmensajesycontrolarelflujodelosmismos. .ReportSection(Seccindeinformes)

Estaseccinhasidolaltimaenincorporarseysirveparacrearinformesporimpresora. .ScreenSection(Seccindelaspantallas)

Conestaseccinsepodrncrearlarepresentacindelosdatosenpantallas.

SINTAXIS DEL LENGUAJE .DATADIVISION: .Working-StorageSection(Seccindeltrabajo)

LosnmerosdenivelylaclusulaPICoPICTURE Paradescribircualquiercampo,variableotablasdedatos,esnecesarioeimprescindibleusa rdoselementosindispensablesparaestatarea: Losnmerosdenivel. LaclusulaPICoPICTURE.

SINTAXIS DEL LENGUAJE .DATADIVISION: .Working-StorageSection(Seccindeltrabajo)

Paradefinircualquiervariableusaremosesteformato: nom_variable nnPICformato[VALUEvalor_inicial]. FILLER ElcampoFILLER:sirveparaasignardatosaunavariablequenovaaserusadacomotalenelprogra ma,ahorrandoasespacioenmemoria. LaclusulaPICTUREosuabreviaturaPIC:Estaclusulanossirveparaespecificareltipodeformat odelcampoadefinir,esdeciratravsdeellapodremosdecirsiuncampovaasernumrico,alfabticoo alfanumrico.

SINTAXIS DEL LENGUAJE .DATADIVISION: Working-StorageSection(Seccindeltrabajo) Ejemplos: PICX(n) DondeXsignificaqueelcampoesalfanumricoynlalongituddelcampo. PICA(n) DondeAsignificaqueelcampoesalfabticoynlalongituddelcampo. PIC9(n) Donde9significaqueelcampoesnumricoynlalongituddelcampo. PIC9(n)V9(m) Donde9significaqueelcampoesnumrico,laVqueelcampocontienedecimalesymlalongituddelo sdecimales. PICS9(n)oPICS9(n)V9(m) Igualquelosdosanteriores.LaSsignificaqueelcamposiemprellevarelsigno.

SINTAXIS DEL LENGUAJE .DATADIVISION: Working-StorageSection(Seccindeltrabajo) Nmerosdenivel:sirvenparaclasificarlosdistintostiposdedatosausarenelprograma.Exist enlossiguientes: Nivel 77.Campos elementales: Para definir variables independientes o simples sin subdivisiones. El nmero de nivel usado para estos campos es el 77. Formato: 77 nom_datoPIC formato Ejemplo 4: 77 NOMBRE PIC X(20).

SINTAXIS DEL LENGUAJE .DATADIVISION: Working-StorageSection(Seccindeltrabajo) Nmerosdenivel:sirvenparaclasificarlosdistintostiposdedatosausarenelprograma.Exist enlossiguientes: Niveles01-49.Camposcompuestos:Paradefinirunajerarquadedatos.Elcampodemayorniveles el01.Elformatoeselmismoqueeldelnivel77. ejercicio: Crearunajerarquadedatosconlasiguienteestructura:

SINTAXIS DEL LENGUAJE .DATADIVISION: Working-StorageSection(Seccindeltrabajo) Nmerosdenivel:sirvenparaclasificarlosdistintostiposdedatosausarenelprograma.Exist enlossiguientes: Solucin: 01 DATOSEMPLEADO. 02 NOMBRE. 03 PILA PIC X(20). 03 APELLIDOS PIC X(40). 02 EMPLAZAMIENTO. 03 DIRECCION. 04 CALLE PIC X(20). 04 PISO PIC XXX. 04 PUERTA PIC XXX. 03 CIUDAD PIC X(20). 02 SUELDO PIC 9(4)V99. LosdatosdefinidosennivelessuperioresnonecesitandelaclusulaPICpuestoquesulongitude slasumadetodosloscampossubordinados.

SINTAXIS DEL LENGUAJE .DATADIVISION: Working-StorageSection(Seccindeltrabajo) Nmerosdenivel:sirvenparaclasificarlosdistintostiposdedatosausarenelprograma.Exist enlossiguientes: Nivel 77.Constantes: Este nivel es usado para definir una constante con un nombre. El valor de la constante ser fijo a lo largo de todo el programa. Formato: 78 nom_constanteVALUE valor. Ejemplo 5: 78 PI VALUE 3.141592.

SINTAXIS DEL LENGUAJE .DATADIVISION: Working-StorageSection(Seccindeltrabajo) Nmerosdenivel:sirvenparaclasificarlosdistintostiposdedatosausarenelprograma.Exist enlossiguientes: Nivel88.Estadosdeuncampo:Elnivel88suutilizaparadescribirlosestadosdeuncamposegnsu valor.Estosestadospodrnserluegoutilizadosenlascondicionesdelprograma,simplificand oyhaciendomscomprensivoelmismo. Formato: 88estadoVALUEvalor. Ejemplo6: 77 VEHICULO PIC 9. 88 BICICLETA VALUE 0. 88 MOTO VALUE 1. 88 COCHE VALUE 2. 88 CAMION VALUE 3.

SINTAXIS DEL LENGUAJE .DATADIVISION: En la PROCEDURE DIVISIN se podrn usar esto campos de la siguiente manera: IF BICICLETA...Si queremos comprobar si VEHCULO = 0 IF MOTO... Si queremos comprobar si VEHCULO = 1 IF COCHE... Si queremos comprobar si VEHCULO = 2 IF CAMION... Si queremos comprobar si VEHCULO = 3

SINTAXIS DEL LENGUAJE .DATADIVISION: Working-StorageSection(Seccindeltrabajo) Nmerosdenivel:sirvenparaclasificarlosdistintostiposdedatosausarenelprograma.Exist enlossiguientes: Nivel66.Permiteasignarunnuevonombreauncampoelementalconelcontenidodeunoovariosca mposdeuncampocompuesto.ParasuusoesimprescindiblelaclusulaRENAMES. TambinsepuedeusarlapalabraclaveTHRUparaasignarunrangodevalores. Formato: 66nom_dato1RENAMESnom_dato2THRUnom_dato3. Ejemplo: 01 REG-PERSONAL. 02 CODIGO PIX X(3). 02 NOMCOMP. 03 PILA PIC X(20). 03 APE1 PIC X(20). 03 APE2 PIC X(20). 03 PROVINCIA PIC X(20). 66 APELLIDOS RENAMES APE1 THRU APE2. Tras la descripcin del dato en el nivel 66 la variable APELLIDOS contendr el valor de APE1 y APE2.

SINTAXIS DEL LENGUAJE .PROCEDUREDIVISION: EstaDivisinesobligatoriaenunprogramaCOBOLylausaremosparaindicarlelasinstrucciones COBOLylalgicanecesariaspararesolverelproblemplanteado. LaPROCEDUREDIVISIONpuedeserdivididaenseccionesyestaasuvezenprrafos,odirectamentee nprrafos(estoesmsfrecuente). SepuedeusarlaseccindelasDECLARATIVEScuyafuncinufuncinesladeltratamientodeerrores;en casodeaparecer, stahadehacerloalprincipio.

SINTAXIS DEL LENGUAJE .PROCEDUREDIVISION: FORMATO: PROCEDURE DIVISION [USING nom_dato...]. [DECLARATIVES.] [nom_seccionSECTION.] [nom_prrafo.] sentencias. . . [END-DECLARATIVES.] [nom_seccionSECTION.] [nom_prrafo.] sentencias. . . Dentro de las secciones o prrafos el programa deber usar las instrucciones COBOL.

SENTENCIAS BSICAS I .DISPLAY LainstruccinDISPLAYpermitevisualizardatosyliteralesporpantalla,oredireccionarlosa laimpresora,conDISPLAYsepuedenvisualizarmsdeunavariableoliteral,tansolaseparndolos porunespacioenblanco. Formato: nom_datoLINEnmCOLUMNnm DISPLAY...[WITHopciones]. literalATfico .Lospuntossuspensivosnosindicanquepodemosvisualizarvariosliteralesovariablesenlam ismainstruccinDISPLAY.

SENTENCIAS BSICAS I .SENTENCIASBSICAS: .DISPLAY

num:sirveparaposicionareldatoavisualizarenunlugardeterminadodelapantalla.Sedebes ustituirporunnmero.Sivadetrsdelinesereferiralafilaysivadetrsdecolumnalacolumna. atfico:ficosedebersustituirporunliteralnumricodecuatrocifras,dondelosdosprimerosin dicarnlafiladondeaparecervisualizadoel/losdato/sylosdosltimoslacolumna.Sehandeponer tantosATficocomoelementosqueramosquealvisualizarseseposicionen.

SENTENCIAS BSICAS I .DISPLAY WITH:nospermitirnhacermsatractivalasalidadedatosporlapantalla.Sisequierenusardosoms opcionesenlamismainstruccinDISPLAY, estasdebenestarseparadasporunespacioenblanco. Lasopcionesson: .BEEPOBELL:Generaunpitido. .BLINK:Eldatovisualizadoparpadear. .HIGHLIGHT:Eldatoaparecerconunamayorintensidaddecolor.

SENTENCIAS BSICAS I .DISPLAY OpcionesdeWITH: .REVERSE-VIDEO:Eldatosevisualizarenvideoinverso,esdecirElcolordefondopordefectose usarparaelcolordelaletrayviceversa. .UNDELINE:Elelementoaparecesubrayado.Estaopcinsoloesvlidaparamonitoresmonocromo. .BLANKLINE:Borratodalalneadesdelaposicindelcursorhaciadelante .BLANKSCREEN:Borratodalapantalla.Colocaelcursorenfila1columna1. .SIZEnm:Especificaeltamaoquevaatenerlaentradaporteclado.SiesmayorquelePICdelavaria bleesignoradaperosiesmenorsolodejarentrartantosdatoscomodiganm .FOREGROUND-COLORISnm:Especificaelcolordelaletra. .BACKGROUND-COLORISnm:Especificaelcolordefondo.

SENTENCIAS BSICAS I .DISPLAY La tabla de colores es la siguiente: 0 negro; 1 azul; 2 verde; 3 celeste; 4 rojo; 5 violeta; 6 naranja; 7 gris. A FOREGROUND-COLOR si tambin se le especifica la opcin HIGHLIGHT el tono de los colores aparece ms brillante. As el 5 con HIGHLIGHT es el rosa. El 6 con HIGHLIGHT es el amarillo. A BACKGROUND-COLOR no le afecta HIGHLIGHT. Por ltimo hay que resear que para poder utilizar DISPLAY redireccionadoa la impres ora, hay que usar la palabra UPONy el nombre del dispositivo (la impresora el PRINTER). Esta opcin no ser utilizada, puesto que para imprimir utilizaremos la REPORT SECTION.

SENTENCIAS BSICAS I .EJEMPLO PROCEDURE DIVISION. INICIO. DISPLAY DISPLAY DISPLAY WITH BLANK SCREEN. HOLA DESDE COBOL . HOLA DESDE COBOL LINE 2 COLUMN 4.

DISPLAY HOLA WITH FOREGROUND-COLOR 4 BACKGROUNDCOLOR 5. DISPLAY HOLA DESDE COBOL AT 1212 WITH BLINK.

DISPLAY VARIABLE AT 1020 OTRAVARIABLE AT 1120. El usode DISPLAY no esmuycomnporlo queposteriormenteveremosSCREEN SECTION.

SENTENCIAS BSICAS I .ACCEPT LainstruccinACCEPTesunadelasmspotentesdeCOBOL,yaquesuusoesvariado. Principalmentesirveparaintroducirvaloresdesdeeltecladoyasignrseloaunavariableocam po. Otrousoeselderecogerdelsistemaconstantestalescomolafechaylahora. ParacadaunodelosusosenlosqueseempleaACCEPTutilizarunformatodiferente.

SENTENCIAS BSICAS I .ACCEPT Formato1: LINEnmCOLUMNnm ACCEPTnom_dato[WITHopciones]. ATfico Recogedatosintroducidosportecladoyselosasignaanom_dato(queserunavariableouncampod eunfichero) LasclusulasLINE,COLUMNyATsirvenparalomismoqueenlainstruccinDISPLAY. LasopcionesqueacompaanaACCEPTsonlasmismasqueenDISPLAY,exceptoBLANKSCREENyBLANKLIN E,ademsdelaspropiasdelaentradadedatosporteclado.Estasson:

SENTENCIAS BSICAS I .ACCEPT Opcionespropiasdelaentradadedatosporteclado: .PROMPTcarcter:Estableceelformatodelfondoparaelespaciodondesevanaescribirlosdatos . .AUTO:Finalizaautomticamentelaentradadedatosportecladocuandoelcampoestlleno,sinnec esidaddepulsarINTRO. .FULL:Obligaaqueelcampoquedetotalmentellenoovaco. .REQUIRED:Indicaqueelcamponopuedequedarvaco. .SECUREoNOECHO:Entradadedatossinreflejoenlapantalla,enlugardeloscaracterespulsad ossevernasteriscos. .UPDATE:Visualizaencontenidodelcampoantesdeserintroducido.

SENTENCIAS BSICAS I .ACCEPT Ejemplo: PROCEDURE DIVISION. INICIO. DISPLAY DISPLAY WITH BLANK SCREEN. DIME TU NOMBRE: LINE 10 COLUMN 3 WITH HIGHLIGHT.

ACCEPT NOMBRE LINE 10 COLUMN 19 WITH REVERSE-VIDEO REQUIRED. DISPLAY HOLA AT 1210 NOMBRE AT 1215.

SENTENCIAS BSICAS I .ACCEPT Formato2:Formatoparatomardatosdelsistema(nodeteclado) ACCEPT nom_datoFROM constante_del_sistema. Lasconstantesdelsistemapuedenser: DATE:Lafechadelsistema.EsunaconstantedeseiscifrasconelformatoAAMMDD. DAY:Losdastranscurridosdelaoactual.EsunaconstantedecincocifrasconformatoAANNN.Sien doAAelaoactualyNNNlosdasquehantranscurridodesdeel1deenerodeeseao. TIME:Lahoradelsistema.EsunaconstantedeochocifrasconformatoHHMMSSCC.SiendoHHlahor a,MMlosminutos,SSlossegundosyCClascentsimas.

SENTENCIAS BSICAS I .ACCEPT Ejemplo: IDENTIFICATION DIVISION. PROGRAM-ID. CONSTANTESDELSISTEMA. DATA DIVISION. WORKING-STORAGE SECTION. 01 FECHA. 02 ANNO PIC 99. 02 MES PIC 99. 02 DIA PIC 99. 01 NDIAS. 02 AA PIC 99. 02 DIAS PIC 999. 01 TIEMPO. 02 HORA PIC 99. 02 MIN PIC 99. 02 SEC PIC 99. 02 CEN PIC 99. PROCEDURE DIVISION. INICIO. DISPLAY WITH BLANK SCREEN.

ACCEPT FECHA FROM DATE. DISPLAY LA FECHA DE HOY ES: DIA / MES / ANNO.

ACCEPT NDIAS FROM DAY. DISPLAY LOS DIAS QUE HAN TRANCURRIDO DESDE EL 1 DE ENERO DE AA SON DIAS DIAS .

ACCEPT TIEMPO FROM TIME.

DISPLAY

LA HORA ACTUAL ES: HORA :

MIN :

SEC.

STOP RUN.

SENTENCIAS BSICAS I .MOVE:Permitetransferirdatosdeuncampodememoriaaotrocampodememoria. Formato: literal MOVE[CORR]nom_dato1TOnom_dato2 constante_figurativa Ejemplo: MOVE SPACES TO NOMBRE APELLIDOS. MOVE A TO B. MOVE CORRECTO? TO PREGUNTA.

SENTENCIAS BSICAS I .MOVE: ParausarMOVEhayquetenerencuentaque: LaconstantefigurativaSPACEouncampoalfabticonosepuedemoveraunavariablenumrica. Lastransferenciasdeuncamponumricocondecimalesauncamponumricosindecimalesproducenun truncamientodelosdecimales. Sienlatransferenciaelcampoemisoresmayorqueelcamporeceptorseproducetruncamiento(p orladerechasisoncamposnumricosyporlaizquierdasisonalfanumricosoalfabticos).Delocont rario,serellenanloshuecosconceros,silatransferenciasehaceentrecamponumricosydeesp aciosenblanco,sisehaceentrecamposalfabticosoalfanumricos. LapalabraclaveCORRseusacuandosequierenmoverdatosdeuncampojerrquicoaotroconelmismo nombreenlosdatossimples.Parapoderhacerusodeloscampossimples,comosellamanigualsed ebenreferenciarconOF.

SENTENCIAS BSICAS I .MOVE: Ejemplo: IDENTIFICATION DIVISION. PROGRAM-ID. EJEMPLO12. DATA DIVISION. WORKING-STORAGE SECTION. 01 PERSONA1. 02 NOM PIC X(10). 02 APE PIC X(20). 01 PERSONA2. 02 NOM PIC X(10). 02 APE PIC X(20). PROCEDURE DIVISION. UNO. MOVE CORR PERSONA1 TO PERSONA2. DISPLAY NOM OF PERSONA1 WITH FOREGROUND-COLOR 1. STOP RUN.

SENTENCIAS BSICAS I .IF La sentencia condicional IF nos sirve para tomar una decisin dependiendo del resu ltado (verdadero o falso) de una comparacin. El formato de esta sentencia es: Formato: IF condicin [THEN] instrucciones... NEXT SENTENCE [ELSE] instucciones... NEXT SENTENCE [END-IF]. Si se cumple la condicin se realizarn las instrucciones del primer bloque y si no se cumple las del bloque de ELSE. La sentencia ELSE no es obligatoria. La finalizacin de la sentencia IF se puede realizar de dos maneras: Con END-IF (su uso es altamente recomendable, sobre todo a la hora de usar el IF dentro de otras sentencias). Con un punto (.). Con lo que se deja claro que en las oraciones e instrucciones de la sentencia IF no deben contener ningn punto. La condicin de esta sentencia ser una expresin booleana. Por tanto en ella se podr h acer uso de los operadores lgicos AND, OR y NOT para combinar condiciones.

SENTENCIAS BSICAS I .IF Para el correcto uso de las condiciones se debe seguir esta forma:

SENTENCIAS BSICAS I .IF PROCEDURE DIVISION. INICIO. DISPLAY INTRODUCE VALOR DE A: .

ACCEPT A WITH REVERSE-VIDEO. DISPLAY INTRODUCE VALOR DE B: .

ACCEPT B WITH REVERSE-VIDEO. IF A = B DISPLAY ELSE DISPLAY END-IF. PROCEDURE DIVISION. INICIO. DISPLAY INTRODUCE VALOR DE A: . A Y B SON DISTINTAS A Y B SON IGUALES

ACCEPT A WITH REVERSE-VIDEO. DISPLAY INTRODUCE VALOR DE B: .

ACCEPT B WITH REVERSE-VIDEO. IF A IS EQUAL TO B DISPLAY ELSE DISPLAY A Y B SON DISTINTAS . A Y B SON IGUALES

SENTENCIAS BSICAS I .IF ConlasentenciaIFtambinsepuedenrealizarotrascomparaciones,paraprobarsiunavariableo campoesnumrico,esalfabtico,estaenmaysculasoenminsculas,ascomosiespositivo,negativooce ro.

SENTENCIAS BSICAS I .IF Ejemplo: PROCEDURE DIVISION. INICIO. DISPLAY INTRODUCE UNA FRASE: .

ACCEPT FRASE. IF FRASE IS ALPHABETIC-UPPER DISPLAY ELSE DISPLAY END-IF. LA FRASE EST EN MINUSCULAS LA FRASE EST EN MAYUSCULAS

SENTENCIAS BSICAS I .IF La sentencia IF... ELSE pueden estar anidadas. Ejemplo: PRECEDURE DIVISION. INICIO. IF NOM = NOMBRE IF APE = APELLIDO DISPLAY END-IF ELSE DISPLAY END-IF NO ENCONTRADO ENCONTRADO

SENTENCIAS BSICAS I .IF Tambin es posible encadenar sentencias ELSE con IF y otra condicin. Ejemplo: PROCEDURE DIVISION. INICIO. IF VEHICULO = BICICLETA PRECIO = 25 ELSE IF VEHICULO = PRECIO = 40 ELSE IF VEHICULO = PRECIO = 50 ELSE IF VEHCULO = PRECIO = 60 ELSE PRECIO = 80 END-IF. CAMION COCHE MOTO

SENTENCIAS BSICAS I .IF Tambin es posible encadenar sentencias ELSE con IF y otra condicin. Ejemplo: PROCEDURE DIVISION. INICIO. IF VEHICULO = BICICLETA PRECIO = 25 ELSE IF VEHICULO = PRECIO = 40 ELSE IF VEHICULO = PRECIO = 50 ELSE IF VEHCULO = PRECIO = 60 ELSE PRECIO = 80 END-IF. CAMION COCHE MOTO

SENTENCIAS BSICAS I .PERFORM(Bucle) LasentenciaPERFORMesunadelasmsemblemticasdeCOBOL,suusoesvariado,sirveparahacerbucl esyparatransferirelcontroldelprogramaaotroprrafooseccin. Todoslosformatosdelosbuclestienenencomnunacosa:lascondicionessonsiemprehastaquese cumplelamisma. LasformasdeterminarunbuclePERFORMsonconENDPERFORM(lomsrecomendable)oconunpunto(.) igualqueenelIF porloquedentrodeunbuclePERFORM nodebehaberningnpunto.

SENTENCIAS BSICAS I .PERFORM(Bucle) Formato1: entero PERFORMTIMES nom_dato . .instrucciones . [END-PERFORM]. EsteformatorealizalasinstruccionesquehayentrePERFORMyEND-PERFORMunnumerodetermin adodeveces,lasvecesquedigaennmeroenterooelnombredeldato.

SENTENCIAS BSICAS I .PERFORM(Bucle) Ejemplo: PROCEDURE DIVISION. INICIO. PERFORM 80 TIMES DIPLAY * WITH NO AVANCING

END-PERFORM. Este ejemplo visualiza en pantalla 80 asteriscos en pantalla, la opcin NO AVANCING hace que cada DISPLAY no salte de lnea.

SENTENCIAS BSICAS I .PERFORM(Bucle) Formato2: AFTER PERFORM[WITH]TESTUNTILcondicion BEFORE . .instrucciones . [END-PERFORM]. DeestamaneraPERFORMejecutalasinstruccionesentrelyEND-PERFORMhastaquesecumpleunaco ndicin. ParaponercondicionesseutilizalamismaformaqueenlainstruccinIF. LaopcinTEST,indicaelmomentodecomprobarlacondicin;sivaacompaadodeAFTER,lacondicinseco mpruebaalfinaldelbucleysivaconBEFOREalprincipio. ConAFTERelbucleseejecutaralmenosunavezyconBEFOREpuedequenoseejecutenunca.LaopcinBE FOREeslapredeterminada,conloquenoesnecesariosuuso.

SENTENCIAS BSICAS I .PERFORM(Bucle) Ejemplo: PROCEDUREDIVISION. INICIO. PERFORMTESTAFTERUNTILNUMERO=0 DISPLAY INTRODUCEUNNUMERO: ACCEPTNUMERO END-PERFORM. Enelejemplosehacreadounbuclequeserepetirhastaqueunnmeroentradoportecladoseaigualac ero,comprobandolacondicinalfinaldelbucle.

SENTENCIAS BSICAS I .PERFORM(Bucle) FORMATO3: Elbucleutilizalamismaestructuraqueelformatoanterior,peroenelpropioPERFORMpodemos aadirunavariablequenossirvadecontadordelbucle(nom_dato1).Elvalorinicialdeesavaria bleeseldatoquevadetrsdeFROM,ytambinesposibledecirconquevalorsevaaincrementaresavar iableconelliteraloelnom_dato3quesigueaBY.

SENTENCIAS BSICAS I .PERFORM(Bucle) FORMATO3: Elbucleutilizalamismaestructuraqueelformatoanterior,peroenelpropioPERFORMpodemos aadirunavariablequenossirvadecontadordelbucle(nom_dato1).Elvalorinicialdeesavaria bleeseldatoquevadetrsdeFROM,ytambinesposibledecirconquevalorsevaaincrementaresavar iableconelliteraloelnom_dato3quesigueaBY.

SENTENCIAS BSICAS I .PERFORM(Bucle) Ejemplo: PROCEDURE DIVISION. INICIO. PERFORM VARYING MULT7 FROM 7 BY 7 UNTIL MULT7>200 DISPLAY MULT7 END-PERFORM. El ejemplo visualiza los mltiplos de 7 hasta el 200.

SENTENCIAS BSICAS I .STOP. Esta sentencia permite parar temporal o definitivamente la ejecucin de un program a. Formato: RUN [literal] STOP . literal Con STOP RUN se detiene totalmente el programa. Es decir est es la ltima sentencia que se ejecuta en un programa COBOL. El literal que puede acompaar a RUN es el valor que devuelve el programa al Sistema operativo. STOP literal suspende la ejecucin del programa temporalmente (hasta que se pulsa la tecla INTRO) visualizndose el literal.

SENTENCIAS BSICAS I .EJERCICIOS: 1.Realizaelprogramaholamundo. 2.Realizarunprogramaquepidatunombreyseproduzcaunsaludopersonalizado. 3.Realizarunprogramaquevisualiceloscienprimerosnmerosnaturales. 4.Realizarunprogramaquepermitalaintroduccindedieznmerosyvisualiceelmayordetodosell os. 5.Realizarunprogramaquevisualicelosdiezprimerosnmerosimpares.