Main logo La Página de DriverOp

RM/COBOL 85

Contenido.

Programas código fuente incluido en RM/COBOL-85 (Ver. 5.36).

Descripción Descarga
RM/COBOLDos programas para manejar fechas, 'fromdate' devuelve la fecha actual del sistema pero con el año a cuatro cifras, especial para versiones de RM/Cobol anterior al Y2K, 'validar' verifica que una fecha sea válida y de serlo devuelve la cantidad de dias que hay entre la fecha actual y la validada. fechas.zip (5,3 Kb)

Estructura general de un fuente COBOL.

Un fuente de COBOL está separado en cuatro divisiones, cada una de ellas tiene un propósito específico. Las divisiones están ordenadas en secciones y las secciones en párrafo. Cada división y sección contiene un ámbito, es decir, no se pueden mezclar secciones que pertenecen a una división en otra y las divisiones no pueden estar desordenadas.

IDENTIFICATION DIVISION.

En esta división se declaran todos los datos identificatorios del programa en sí, como ser el autor, el nombre interno del programa, los comentarios, etc... En esta división que es obligatoria la única sección obligatoria es PROGRAM-ID seguido del nombre interno del programa, por ejemplo

Código:

IDENTIFICATION DIVISION.
PROGRAM-ID. HOLAMUND.
ENVIRONMENT DIVISION.

En esta sección se declaran entre otras cosas los encabezados de los archivos de datos usando una sección llamada INPUT-OUTPUT SECTION, párrafo FILE CONTROL.

Un ejemplo:

        ENVIRONMENT DIVISION.
        INPUT-OUTPUT SECTION.
        FILE-CONTROL.
            SELECT OPTIONAL CLIENTES ASSIGN RANDOM, 
            "CLIENTES.DAT"
            ORGANIZATION IS INDEXED
            ACCESS MODE DYNAMIC
            RECORD KEY CODIGO-CLIENTE
            ALTERNATE RECORD KEY CUIT WITH DUPLICATES
            ALTERNATE RECORD KEY NOMBRE-APELLIDO WITH DUPLICATES.

En este ejemplo he declarado un archivo con nombre lógico CLIENTES y nombre físico "clientes.dat" con acceso random (si el sistema operativo lo permite), la organización interna sera indexada (hay que mantener índices) el modo de acceso será dinámico (en COBOL significa que se puede leer secuencialmente o aleatoriamente usando cualquiera de los índices declarados a continuación). La clave principal del archivo es CODIGO-CLIENTE y tiene dos claves secundarias.

Esta división se puede omitir.

La tercera división es DATA DIVISION.

En esta división se declaran las variables del programa, los encabezados de los archivos de datos, la estructura de registros del mismo, las tablas en memoria y las constantes.

Hay dos secciones importantes en esta división, la primera es la FILE SECTION, en ella se declaran todos los registros que pertenecen a los archivos delcarados en el párrafo FILE-CONTROL de la sección INPUT-OUTPUT de la división ENVIRONMENT.

La otra sección es WORKING-STORAGE SECTION, en esta se declaran las variables, constantes y tablas. Todas las variables en COBOL-85 son globales. Siguiendo con el ejemplo anterior:

        DATA DIVISION.
        FILE SECTION.
        FD CLIENTES BLOCK 250 CHARACTERS
            RECORD 250 CHARACTERS
            LABEL RECORD STANDARD.

            01 CLIENTE.
              02 CODIGO-CLIENTE PIC 9(5).
              02 CUIT PIC X(11).
              02 NOMBRE-APELLIDO.
                03 NOMBRE PIC X(30).
                03 APELLIDO PIC X(30).
        WORKING-STORAGE SECTION.
        77 ESPERA PIC X.
        77 TECLA PIC 99.
        77 FLAG PIC X.

En COBOL existen tres tipos de datos principales, numéricos, alfanuméricos y alfabéticos, los primeros se indican con un 9() en la declaración, los segundos con X() y los terceros con A().

La sintaxis de la declaración es:

        NIVEL IDENTIFICADOR PICTURE TIPO-DE-DATO.

Donde NIVEL es un número entre el 1 y el 88 e indica la "profundidad" de la variable. Las variables entre los niveles 1 y 49 indican que se trata de una estructura de datos siendo la de mayor nivel el 01 (como se ve en la declaración del registro de cliente) esto significa que se puede referenciar un conjunto de datos con un solo identificador. Las variables de nivel entre 77 y 87 son variables independientes. Los identificadores de nivel 88 son constantes y se declaran obligatoriamente como sigue:

        88 ESTO-ES-UNA-CONSTANTE PIC 9(3) VALUE 100.

La cláusula VALUE indica qué valor tomará la constante. En los identificadores de los otros niveles también se puede usar la cláusula VALUE para inicializalos a algún valor (sin embargo no se permite esta cláusula en la declaración de registro de archivos).

Las variables en COBOL se almacenan en formato BCD (código decimal binario) es decir, en base 10 y ocupan un byte por cada espacio de memoria; el rango de valores está dado por la propia definición, por ejemplo.

        77 NOMBRE PIC X(20).

Ocupa 20 bytes en memoria *sin importar qué contenga la variable*. Para el caso de los datos numéricos (PIC 9()) también sucede lo mismo.

Por ejemplo:

        77 NUMERO-ENTERO PIC 9(3).

Ocupa 3 bytes y puede almacenar un valor entre cero y 999. Si se le asigna un valor que excede el rango permitido por la declaración el valor se trunca por la izquierda en su valor literal, por ejemplo:

            MOVE 1000 TO NUMERO-ENTERO.

Aquí NUMERO-ENTERO tomará el valor cero.

Es posible declarar variables de tipo numérico real sin signo como sigue:

        77 NUMERO-REAL-SIN-SIGNO PIC 9(3)V99.

La "V" indica la posición de la coma decimal.

También es posible declarar un tipo numérico real con signo como sigue:

        77 NUMERO-REAL-CON-SIGNO PIC S9(3)V99.

La "S" indica que se debe reservar un lugar para almacenar el signo.

El largo de los identificadores es ilimitado pero solo los primeros 30 caracteres son significativos. No pueden comenzar con números pero sí contenerlos, todas las letras son válidas más el guión.

Finalmente tenemos la PROCEDURE DIVISION.

Que es la división donde se escribe la parte "ejecutable" del programa. No está dividida en secciones sino en párrafos. Cada párrafo tiene un identificador único asignado por el usuario. Toda PROCEDURE DIVISION debe tener al menos un párrafo. Por ejemplo:

        PROCEDURE DIVISION.
        COMIENZO.
           ...sentencias...

Los nombres de párrafos son arbitrarios y sirven como puntos de saltos dentro del programa.

Ahora sí podemos crear un programa bien básico, este es el código:

        IDENTIFICATION DIVISION.
        PROGRAM-ID. HOLAMUND.
        DATA DIVISION.
        WORKING-STORAGE SECTION.
        77 ESPERA PIC X.
        77 TECLA PIC 99.
        PROCEDURE DIVISION.
        COMIENZO.
            DISPLAY "Hola mundo!, por favor presiona una tecla".
            ACCEPT ESPERA NO BEEP ON EXCEPTION TECLA NEXT
            SENTENCE.
            DISPLAY "La tecla que presionaste fue: ".
            DISPLAY TECLA.
            EXIT PROGRAM.
            STOP RUN.

Después de mi explicación espero que les resulte obvio lo que hace este programa.

Reflexiones acerca de COBOL.

COBOL es, por llamarlo de alguna manera "el decano de los lenguajes de bases de datos", de hecho su nombre ya determina cuál es su uso principal, COBOL, COmmon Business Oriented Languaje, es decir, Lenguaje Común Orientado a Negocios, y todos sabemos que cualquier aplicación de negocios hace un uso intenso de bases de datos. COBOL nació allá por el año 1960 a raíz de una comisión organizada por el gobierno de EEUU y las principales empresas de la industria de la computación de aquella epoca tal como IBM, Rand y Honeywell, llamada CODASYL. La intención de esta comisión era establecer un estandar para un lenguaje orientado a los negocios, de allí nace el COBOL 60 asi como el ALGOL 60, un lenguaje orientado al calculo cientifico (del cual nacería Pascal). En 1968 otra comisión, esta vez la ANSI, revisa al COBOL y establece el estandar 68 que luego devino en el estandar 74, este último planteó muy acertadamente a mi juicio, la implementación de la programación procedimental al lenguaje COBOL (los PERFORM, bah). Finalmente, en 1985 la ANSI saca un nuevo estandar para el lenguaje que es el que rige actualmente (hubo algunas mejoras y afinamientos en 1989). Entre los grandes logros de este lenguaje pueden contarse que es el lenguaje que mas lineas en ejecución tiene en el mundo, ser el mas confiable para grandes aplicaciones de negocios y el lenguaje que mas plataformas soporta, siendo a la vez un estandar casi dogmatico a todos los niveles. Como curiosidad, el gobierno de EEUU a partir del nacimiento de COBOL estableció que para que un aparato electronico pueda llamarse computadora DEBE poder ejecutar un programa COBOL, es por eso que aparatos que hoy sabemos implicitamente que son computadoras, tal como los handheld, no llevan ese nombre pues no existen compiladores y/o interpretes de COBOL para esos aparatos. Quizas el mayor exito de COBOL sea su portabilidad a nivel de código fuente (y en algunos casos hasta de codigo ejecutable), el mismo fuente casi sin modificaciones puede ser llevado de un sistema operativo a otro y de una arquitectura a otra. El concepto de diseño de bases de datos que nació con COBOL hasta hoy en día es materia de estudio en universidades y muchas de ellas aún enseñan COBOL como lenguaje.

En 1990 IBM anunció tajantemente que declaraba a COBOL un lenguaje "muerto", eso significaba que ya nadie lo usaría en el futuro, también anunció que dejaría de dar soporte para él (y asi lo hizo, ese año IBM vendió su compilador a una empresa pequeña). Ironicamente poco después al lanzar su linea de minicomputadoras AS/400 incluyó COBOL como uno de los cuatro lenguajes estandar del mismo (junto con C, RPG y Pascal). Desde ese anuncio todo aquel que se declaraba "programador en COBOL" ha llevado el mote de "anticuado" y "sin futuro". Para empeorar las cosas el lanzamiento de sistemas operativos con entorno gráfico y la revolución de la programación orientada a objetos llevó casi a la extinción a COBOL, relegado unicamente a arcaicos mainframes y a oficinas de procesamiento de datos con un monton de "gurus" revolviendo fuentes con mas de 20 años. Parecia que finalmente COBOL tenia sus dias contados. Pero, las pequeñas empresas que aún se sostenian gracias a la venta y soporte de compiladores COBOL, tales como Liant, Accu y Fujitsu, se dieron cuenta de esto y cada uno por su lado empezó a transformar a COBOL en un lenguaje moderno, mas acorde a los tiempos que pasan. El mayor problema que debian enfrentar es la bendita compatibilidad hacia atrás y esto no es una cosa trivial para un lenguaje con casi 40 años de antigüedad en aquella época. Pero si bien estas empresas pusieron a COBOL en la primera linea otra vez surgió un problema nuevo, COBOL, como ya antes dije, sobresalia por su portabilidad, como cada empresa se las arregló a su manera destruyeron en pocos años lo que se habia logrado con decadas de minuciosos estandares y reuniones de empresas de la industria. Hoy en día, los modernos compiladores de COBOL, Objective Cobol, PowerCobol, WOW no son ni remotamente compatibles entre sí,  y algunos ni siquiera son multiplataforma. Para empeorar las cosas no hay intención, siendo Ocubre de 2001 cuando escribo esto, de volver a revisar a COBOL como lenguaje y establecer un estandar para la programación en entorno gráfico.

Todo esto me lleva a pensar que COBOL dejará de existir como tal y pasará a ser otra cosa, multitud de pseudocoboles surgirán, ya que ninguna empresa querrá tirar abajo lo que han desarrollado para apegarse a un futuro estandar que quizas nunca llegue, sumado a que las soluciones propietarias nunca hicieron mella en la industria del software, tal vez IBM sabia de lo que hablaba cuando declaró al COBOL un lenguaje muerto.

Actualización! El grupo de trabajo de la ANSI encargada de establecer los estandares para COBOL, llamado J4 ya tiene el borrador para el COBOL ANSI 2002, entre sus cosas mas resaltables está la inclusión de la programación orientada a objetos, esto pondrá a COBOL nuevamente en el estado del arte de la programación. El nuevo estandar tiene como fecha tentativa de publicación Julio de 2002. Para más información dirigirse a www.cobolstandards.com o bién a http://www.ncits.org/tc_home/j4.htm

Actualización! Ya está aprobado el estandar ANSI 2002.

Enlaces.

Diego Romero -

Comentarios

Agregar comentario

83.50.75.54

Domingo, 17 de Octubre de 2010 a las 09:00:39

Por: Marie

Hola, necesitaria modelos de ejemplos sencillos de consulta, modificación, borrado y listado del programa cobol, gracias.

190.132.80.133

Lunes, 23 de Agosto de 2010 a las 17:01:45

Por: Enrique

Tengo programas en rm/cobol 84-85 versión 2.1a.
quisiera saber si existe algun programa de conversión, que tome los fuenes de ese cobol y los convierta a otro lenguaje o a otro cobol para ambiene windows

186.28.116.252

Martes, 29 de Junio de 2010 a las 23:14:36

Por: Juan Corredor (juanelaspero@hotmail.com)

me gusto mucho la explicacion!!! stubo muy buena, me gustaria saber mas, si alguien pudiera ayudarme ocn manueales, se lo agradezco....

64.76.174.10

Lunes, 24 de Agosto de 2009 a las 18:59:49

Por: Christian

uf !!! después de casi 11 años. llegue a una empresa que tiene cobol y ahora tengo que aprender... despues de estar casi 12 años trabajando con genexus.... uf !!! algun manual, tutorial,tips !!! help !!!

Salu2.-

88.2.223.253

Lunes, 13 de Julio de 2009 a las 08:35:56

Por: Carlos

Buenas. Mi problema con cobol es que tengo una serie de archivos .idx y .dat de los cuales no conozco su estructura y necesito recuperar la información contenida en los mismos. ¿Por dónde empiezo? Estoy bastante perdido...

190.25.225.131

Viernes, 26 de Junio de 2009 a las 16:06:56

Por: Sarita

Necesito verificar la fecha de modificación de un archivo .gnt es decir un ejecutable de Micro focus NetExpres, de tal manera que pueda hacer validaciónes en el Menu. El menu tambien esta desarrollado en MicroFocus y la idea es validar el programa que se va a ejecutar con la fecha de la ultima actualizaciòn del programa.

Muchas gracias si me pueden ayudar.

201.229.169.62

Domingo, 31 de Mayo de 2009 a las 21:48:45

Por: Mike

tengo una archivo donde cobol guarda la data el archivo es binario como puedo saber la estructura del archivo osea sabe como estan compuesto los campos

200.88.190.137

Viernes, 22 de Mayo de 2009 a las 22:18:10

Por: Norberto

Muy buena tu explicacion sobre el cobol

200.45.119.110

Domingo, 22 de Febrero de 2009 a las 15:44:26

Por: Curulo

Tengo un ABM y cuando lo quiero compilar me da este error.
OPEN ERROR FOR FILE ABM****.
PODRIAS DECIRME DONDE TENGO EL ERROR GRACIAS.
ME INTERESARIA LOS MANUALES .OK.
GRACIAS.

200.84.201.227

Miércoles, 21 de Enero de 2009 a las 12:07:22

Por: Enmascarado

SAS que por queria de ayuda

200.121.223.33

Lunes, 19 de Enero de 2009 a las 17:05:04

Por: Hector

Excelente tu explicación y el detalle de los ejemplos, sobretodo para los que programan en cobol o desean conocer sobre este compilador. Mis felicitaciones y agradecimientos por tu aporte

83.50.179.175

Miércoles, 24 de Diciembre de 2008 a las 09:51:35

Por: Campiki

Para JoeAccion.

Para vaciar una archivo de RmCobol sólo debes hacer un OPEN OUTPUT archivo.

Para pasar una dat a txt o excel.

Create un archivo organization line sequential, y entre campo y campo de este, crea un campo adicional PIC X. Haces lectura sequencial del archivo origen, grabando en el destino, a cada campo adicional creado le pasas un valor p.ej ":". Este archivo creado lo puedes capturar en excel sin problema.

Espero haberte ayudado aunque algo tarde.

Campiki

189.142.146.177

Viernes, 21 de Noviembre de 2008 a las 16:31:13

Por: Joeaccion

Vaciar un archivo Dat creado por RMcobol. ( mi experiencia en Cobol es nula )

Deseo pasar un archivo Dat a Txt o Excel lo que sea mas fácil, como puedo hacerlo? hay una utileria gratuita? puede ser por medio de Excel? tendras un programa base para modificarlo, correrlo y me pueda mandar mi información?

Gracias por toda la ayuda que me puedan dar.

201.228.170.208

Sábado, 13 de Septiembre de 2008 a las 12:15:23

Por: Victor

Tengo un problema con RMCOBOL /85 ver. 5.36 cuando utilizo el ACCEPT (VARIABLE) FROM TIME. Cuando la rutina vuelve a pasar por ese comando a veces se queda la hora anterior. Por ejemplo si en el computador la HOra es 10:30 am me deja la hora del hace 15 minutos me marca las 10;15 am. este programa es para el control de ingresos y salidas de vehiculos de un parqueadero. Al tomar mal la hora liquida mal elprecio del servicio. Alguien me podría a yudar?

190.100.158.6

Viernes, 25 de Abril de 2008 a las 00:04:32

Por: Pedro (pedrocortesd@hotmail.com)

Alguien tiene la rutina para generar codigos de barra en cobol. si la tuvieran porfavor, se los agradeceria muchisimo...

Gracias

190.42.230.43

Domingo, 06 de Abril de 2008 a las 01:17:22

Por: Victor

Muy buena explicacion
Soy cobolero todavia trabajo con la version 5.2 y por exigencias del mercado estoy tratando de pasarloa powercobol 5 que es el que me parece se semeja mas a la version anterior, pero tengo problemas para majesjar el detalle de un documento, es decir, donde van los item, he probado con tablas, creando lineas de texto, etc.pero nada, a ver si alguien me da alguna sujerencia, por lo demas todo bien

190.31.115.236

Martes, 25 de Marzo de 2008 a las 00:35:22

Por: Seba

BUENA EXPLICACION.

GRACIAS

201.223.92.222

Lunes, 17 de Marzo de 2008 a las 02:27:31

Por: Ortografia

A Sebastian:

eSplicacion = eXplicacion
haVer = haBer

Espero que te ayude a no cometer la misma falta.


Saludos.

201.250.103.30

Lunes, 10 de Marzo de 2008 a las 11:48:30

Por: Sebastian

bien echo la esplicación de como se conformma una ABM.
Yo necesitaría si me pueden ayudar,como se hace un ejercicio donde se usa el caso especial de ABM, es decir no va a haver (altas-bajas-mod),es todo modificaciones;por ejemplo q un ejerc. pida calcular el ingreso y egreso de mercadería?., ese es uno.y su estructura de: archivo original y archivo con la actualización no son iguales, el q va a actualizar al original tiene mas campos.

200.117.29.77

Viernes, 07 de Marzo de 2008 a las 11:07:00

Por: Fabian (fabianconte@yahoo.com.ar)

hola trabajo con microfocus cobol y quisiera usar algo que pueda graficar o usar el mouse habra algo compatible con esto ... gracias espero alguna repuesta de alquien

201.140.160.177

Martes, 04 de Marzo de 2008 a las 03:40:46

Por: Erick

apenas empiezo a utilizar cobol es buen programa
saludos

201.228.129.42

Viernes, 29 de Febrero de 2008 a las 17:52:23

Por: Luis Miguel Figueroa

solicito la descarga del compilador y utilitarios de: powercobol version 5, objetive cobol

200.8.110.107

Martes, 15 de Enero de 2008 a las 16:27:53

Por: Beyker (beykerpreteroti@hotmail.con)

porf cual es la sentencia para el sato de paguina

190.137.199.44

Martes, 18 de Septiembre de 2007 a las 15:08:07

Por: Luis Casiello

Estoy probando FujitsuCobol y me esta interesando bastante....no pude hacer funcionar Fuji con base de datos....Algun ejemplo a mano para poder aprender??? Gracias a quien lo provea!!!

146.82.88.135

Miércoles, 08 de Agosto de 2007 a las 18:06:02

Por: Giani

pucha estoy super complicada con cobol.... quien me puede indicar donde sacar un buen manual please es urgente!!!!!!

209.124.116.248

Jueves, 24 de Mayo de 2007 a las 17:37:56

Por: Ronald

Cuales son las cuatro Divisiones que tiene COBOL

200.85.222.70

Viernes, 18 de Mayo de 2007 a las 10:51:53

Por: Victor Muñoz

Hola encontre esta pagina por casulaidad, me alegra que todavia querdemos COBOLIANOS de corazon, ha de tener en cuenta que el el COBOL es mas viejo que el Hilo negro y todavia funciona.....GRACIAS COBOL, nosotros trabajamos todo en Cobol y otras aplicaciones pero la empresda basicamenbte se maneja en COBOL ....Gracias felkicidades... CHILE

190.31.223.82

Jueves, 17 de Mayo de 2007 a las 15:34:07

Por: Mauricio Mss

hola, estoy haciendo un programa de liquidacion de sueldos. yo quiero guardar una formula en la base de datos; tipo= (total*cant)/algo. y despues leer los datos de una persona y esjecutar la formula. si alguien sabe como hacerlo le dejo mi mail pra que me informen. desde ya gracias. mauriciomss@hotmail.com

190.74.201.229

Martes, 01 de Mayo de 2007 a las 22:35:20

Por: Andres Eloy Vnzla

Si de hecho es de los mejores para trabajar todo tipo de archivos y muy usado en bancos. solo soy estudiante y hay pocas pag de cobol quisiera pedir dos tipos de programas mas complejos 1 como trabaja con vectores y otro con archivos indexados leidos desde una base de datos gracias si es esto posible me ayudarias mucho = P

200.82.57.20

Sábado, 28 de Abril de 2007 a las 01:40:36

Por: Diego Romero

Roberto A. Hombre, acá no hay malos comentarios acerca de COBOL y créeme que a mi también me gusta, me ha dado de comer los últimos 10 años :D. Si no, no tendría esta página dedicada a COBOL ;).
Adelante Arriba
1 2
cerrar
Espera un momento...
Cargando...
Ups!, algo anda mal.