Title: Cobol''' Vive
1Cobol... Vive
Juan Cockbaine Ojeda jcockbaine_at_entelchile.net Asi
gnatura IIC3194 Metodologías Emergentes en
Ingeniería de Software Las nuevas
especificaciones del lenguaje Cobol (COmmon
Business Oriented Language), originado en 1959
por la COnference on Data Systems Languages
(CODASYL) y últimamente revisado por los grupos
de trabajo ISO/IEC JTC 1/SC22/WG4 y J4, han
resultado en una nueva propuesta de lenguaje
renovado sin descuidar su gran potencial como
lenguaje orientado al desarrollo de aplicaciones
comerciales.
2Un Programa Cobol
- 000021 IDENTIFICATION DIVISION.
- 000030 PROGRAM-ID. 1A.
- 000040 AUTHOR. JCOCKBAINE.
- 000050 DATA DIVISION.
- 000060 WORKING-STORAGE SECTION.
- 000070 01 NUMEROS.
- 000080 03 NUMERO-VALIDO PIC S9999V999
OCCURS 100 TIMES. - 000090 77 X PIC 9999V999 VALUE 0.
- 000100 77 ACCION PIC X.
- 000110 77 I PIC 999 VALUE 0.
- 000120 77 J PIC 999 VALUE 0.
- 000130 77 XM PIC 9999V999.
- 000131 77 XM-E PIC ZZZ9.999.
- 000140 77 DIFERENCIAS PIC S9(9)V999.
- 000141 77 DIFERENCIAS-E PIC -Z(8)9.999.
- 000150 01 MSG PIC X(42) VALUE "INGRESE
ACCION (Numero/Salir) gt".
3- 000160 PROCEDURE DIVISION.
- 000170 MODULO-PRINCIPAL.
- 000180 DISPLAY MSG WITH NO ADVANCING
- 000190 ACCEPT ACCION
- 000200 PERFORM OBTIENE-DATOS UNTIL ACCION "S"
OR "s" - 000210 PERFORM CALCULAR-MEDIA
- 000230 PERFORM CALCULAR-DS
- 000231 DISPLAY "Terminando...(Presione Enter para
terminar)" - 000236 STOP RUN.
- 000260 OBTIENE-DATOS.
- 000261 IF ACCION "n" OR "N" THEN
- 000270 DISPLAY "INGRESE Xi " WITH
NO ADVANCING - 000280 ACCEPT X
- 000290 ADD 1 TO I
- 000300 MOVE X TO NUMERO-VALIDO(I).
- 000310 DISPLAY MSG WITH NO ADVANCING
- 000320 ACCEPT ACCION.
- 000330 CALCULAR-MEDIA.
- 000331 MOVE 0 TO XM
4(No Transcript)
5Features
- Formatos
- Eliminación Margen A y B y Col 72.
- Posicionamiento libre de instrucciones
- Líneas de 250 columnas
- Comentarios indicados por gt
- Opciones de compilación para formato rígido y
formato libre - Tratamiento de excepciones
- Control a Exception Handlers (Procedimientos
declarativos) - El nuevo estándar especifica procedimientos en
caso de error - Programador puede definir sus propias excepciones
- gtgtturn habilita una excepción particular,
familias, para un archivo o todas - A nivel local on size error
- Nuevos tipos de datos
- Bool (0,1) PIC 1(8) (B10011010). Operaciones
b-and, b-or, b-not - Nativo binario y Nativo punto flotante
- Punto flotante editado (e)
- Pointer contendrá una dirección o valor nulo.
Uso de allocate y set
6Features
- Compilación Condicional
- gtgtdefine sistema_operativo as parameters
- gtgtevaluate system_operativo
- gtgtwhen win98
- . gt código específico para windows 98
- gtgtwhen unix
- . gt código específico para unix
- gtgtwhen other
- . Display el S.O especificado no es
reconocido - gtgtend-evaluate
- Validación de Datos
- 01 nacimiento. gt mm(2), dd(2) año(4)
- 03 mes pic 99 valid values 1 thru 12.
- 03 día pic 99
- Valid value 1 thru 31 when mes 1 or 3 or 5 or
.. - Valid value 1 thru 29 when mes 2
- Valid value 1 thru 30 when mes 4 or 6 or 9
or 11 - 03 año pic 9(4) invalid when año gt function
current-date (48)
7Features
- Archivos compartidos y bloqueo de registros
-
- Descripción de archivos all other, no other,
read only describe los tipos de acceso que serán
permitidos para otros usuarios que acceden al
archivo en forma simultánea. - Pueden ser especificados en el Open.
- Si es sharing se puede escoger entre Automatic
o Manual bloqueo de registros. - Utilización de Lock en modalidad Manual
implica mantener lock solo cuando se especifica
en operación de I/O. - Se puede escoger locking simple o de múltiples
registros.
8Features Programación OO
- Class unidad básica de OO Cobol consistente de
un Factory Object e Instance Objects. Se
define con class-id y finaliza con end class. - Factory Object (uno por clase) consiste de
estructuras de datos y métodos. En cada clase,
mediante el Factory Object se podrán crear
nuevas instancias de clases, destruir instancias
de objetos y manipular data asociada con todas
las instancias de objetos de la clase. - Object Consiste de datos y métodos (ilimitado
número de instancias por clase). -
- La definición de Interfaz especifica un
subconjunto de los métodos. Provee los métodos
que pueden ser invocados (nombre y parámetros). -
- Se puede definir varias Interfaces para una misma
clase, cada una ofreciendo diferentes vistas de
la clase. -
- Herencia Múltiple Una clase puede heredar desde
una o más clases. La clase contendrá la
estructura de los datos y los métodos de los
herederos. -
- Clases Parametrizadas Permitirá a los
desarrolladores crear clases que tengan
comportamiento común. Es una definición de
esqueleto de clase. -
- Usage Object Reference Cláusula que permite
describir ítem llamados objects references que
contiene un manejador de objetos y puede ser
definido como universal o restringido.
9Principales Features de Cobol
-
- Programación OO
- Manejador de excepciones
- Tipos de datos adicionales
- Validación de datos
- Operaciones booleanas
- Funciones definidas por los usuarios
- Formato libre
- Incremento en las facilidades de manejo de
pantalla - File sharing
- Bloqueo de registros
- Compilación condicional
- Sistema de llamados Call fortalecido
- Portabilidad
- Interoperabilidad
- Cuatro dígitos del para el año
- Recursividad
- Report Writer mejorado
- Utilización de punteros
10Herramientas Cobol
- Analysis / Inspect /Restructure (11)
- Cobol Projects (4)
- Cobol IDEs and Compilers (16)
- Merant Net Express
- Components/Patterns/Frameworks (5)
- Transoft Component Framework
- Frontware/Terminal Emulation (13)
- Flexus Cobol sp2
- Middleware/Data Access (22)
- Migration/Translators/Converters (9)
- OLAP/Data Marts/Warehousing (5)
- Query/Report Writer (6)
- Rapid Application Development (8)
- Netron Hotrod
- Software Configuration Management (5)
- Testing (5)
- Utilities (3)
11Flexus Cobol sp2
- Instrucciones Accept y Display no suficientes.
- Soluciones Interfaz externas a programa
(Customer Information Control System y Screen
Design Aid de IBM). - Luego Cobol migró a PC, vendedores proveen
interfaces propias. - En Unix X/Open definió Cobol User Interface
Standard llamado Screen Section. - Casas de software adoptaron el estándar.
- Windows 3.0 impulsó GUI (APIs para Pascal y C).
- Cobol obtiene una GUI (Producto Cobol sp2 de
Flexus, 1983). - Pintado de pantallas (GUI) mediante editor y
llamados vía call sp2 para conversar con la
pantalla. - Callss sp2 son similares a calls CICS para
envío y recepción de mapas y lógica detrás de
Screen Sections.
12Flexus Cobol sp2
- Data Division.
- Working-Storage Section.
- 01 Screen-Fields.
- 03 Nombre pic x(30).
- 03 Dirección pic x(30). ...
- Screen Section.
- 01 Pantalla-Principal.
- Blank Screen, Auto.
- 03 Line 1 Column 32 Value Dirección .
- 03 Line 3 Column 8 Value Nombre
Highlight - Procedure Division.
- Módulo-Principal.
- ...inicialización campos
Pantalla-Principal - Display Pantalla-Principal
- Accept Pantalla-Principal
- ... Código para procesar datos en Pantalla
- Stop Run.
- Data Division.
- Working-Storage Section.
- Copy sp2.cpy.
- Copy Sio.cpy.
- Procedure Division.
- Módulo-Principal.
- ...inicializaciones...
- Call sp2 using sp2-open-file sp2-file-def
- Call sp2 using sp2-converse-panel
-
sio-converse-data - Call sp2 using sp2-close-window
-
sp2-null-parm - Call sp2 using sp2-close-file sp2-null-parm
- Call sp2 using sp2-end-session
sp2-nulll-parm - Stop run.
13Net Express
- Micro Focus comenzó el desarrollo de Cobol (1980)
Microsoft Cobol. - Luego desarrolló ambientes desarrollo Cobol
(Online debugging, testing). - Agregó GUI. Soporte al desarrollo IMS, DB2, CICS
y emulación ambiente MVS. - En 1998 adquirió Intersolv (desarrollo
cliente-servidor, internet e intranet). - En 1999 Merant con 35.000 sitios, 400 millones
anual, 2000 empleados. - El producto NetExpress aplicaciones cliente,
servidor, mainframe. Cobol lenguage principal - Incorpora OO Cobol, Clases GUI (librerías Win32)
y el estándar. - Incorpora como ambiente de desarrollo fuentes,
ejecutables, aplicaciones windows, CGI, Web,
HTML, archivos de datos y un linker para
construir el run time. - Adhiere algunos aspectos del estándar tipos de
datos, operaciones booleanas, manejo de memoria,
bloqueo y compartición de archivos (141). - Analizador líneas de código por tipo,
estructuras perform, métricas para complejidad
relativa, referencias cruzadas.
14Net Express
- Wizard Asocia forms HTML con aplicaciones Cobol
y BD. Genera programas para la captura del I/O
HTML y llamadas a programas para procesamiento
posterior. - Form Designer Construcción de interfaces basadas
en Web WYSIWIG en vez de edición HTML. Además de
cut and paste de páginas desarrolladas con otras
herramientas. - Script Assistant Permite agregar Java Applets,
JavaBean. Soporte Netscape JavaScript y Microsoft
Jscript. - Acceso Datos Soporte objetos COM, aplicaciones
CORBA. OPEN ESQL traduce SQL- incorporado, en
ODBS API para acceder bd con driver adecuado. - NetExpress tiene soporte nativo para DB2 y
soporte integrado para pre compilador Oracle y
Sybase. Capacidades para manejar archivos
secuenciales, indexados, relativos. - Dialog System Ayuda al desarrollo de
aplicaciones windows que los programas Cobol
utilizan (list y check boxes options y push
buttoms scroll, messages, tool, menu bars...). - Las aplicaciones corren bajo windows y se
comunican con programas Cobol en el cliente o el
servidor. - E-business o la extensión de sistemas legados a
la web. NetExpress brinda soporte para el
desarrollo del web y los liks para los sistemas
legados. Facilita el desarrollo sin incurrir en
pesados desarrollos HTML, JavaScript, Perl...)
15Revolve (Merant)
- Revolve acepta código como entrada y crea un
ambiente integrado. Carga el código e include
files en una bd propietaria y la manipula para
efectuar el análisis. - Mediante herramientas de análisis de impacto
indica como los cambios en el código afectan el
resto del programa (propagación). - Un Editor integrado permite modificar el código
como una aplicación en vez de múltiples módulos. - Cuenta con una facilidad para Anotaciones que
permite documentar los requerimientos de cambio
sobre el código. - Las Métricas utilizan estándares (NcCabe,
McClure, Halstead, Análisis de Puntos de
Función). - Permite la generación de informes (Scripts o
queries) sobre el código (cross reference,
problemas de parsing, definiciones no utilizadas,
etc.). - Revolve crea un Project File. Luego se puede
modificar el diseño. - Se puede configurar de tal forma que múltiples
usuarios puedan compartir el proyecto haciendo
anotaciones. El administrador modifica el código. - Una vez efectuado el análisis, diseño, cambio de
código, liberación y prueba se carga el nuevo
release para continuar el refinamiento.
16Hotrod (Netron)
- Después de creado un proyecto en Revolve, se
lleva a un proyecto Hotrod. Se efectúa un
análisis ROD (Reusable Object Documents) que
indicará el código candidato a ser
individualizado. - El análisis extrae las Reglas del Negocio, las
agrupa en grupos de similar función (Podrían ser
candidatos a módulos). - Para Netron una regla de negocio es un bloque de
código que define en forma matemática y en forma
lógica, como una decisión del negocio es
efectuada. - Si se está re-escribiendo el programa, es mas
importante extraer las reglas del negocio que el
código reusable (mas aún si no se piensa re
usar). - Como experiencia Pentium II 128, en tres
minutos se analizaron 10.000 lc.
17Legacy Liberator, FlexGen, U/SQL
- Legacy Liberator convierte sistemas Cobol legados
a Cobol estándar en un nuevo ambiente. - Convierte instrucciones no estándar utilizando
una bd de traducción asociado al ambiente. Marca
las instrucciones que no pueden ser traducidas
(se deberá codificar el algoritmo de traducción). - FlexGen provee un windows-like GUI (unix o
windows). Algunas de las opciones de
compiladores son AcuCobol, MicroFocus Cobol, RM
Cobol. - Mediante EasyQuery se pueden crear informes
adhoc, seleccionando ítemes de datos desde uno o
mas copybooks, además de escoger una
presentación. - Se puede insertar Cobol estándar dentro del
programa. Resulta en una integración de código
legado migrado a FlexGen además de nuevas
características como informes, pantallas y
aplicaciones desarrolladas en el ambiente
FlexGen. - U/SQL se inserta entre el manejador de datos y el
software que utiliza SQL. Permite usar
organizaciones indexadas existentes en vez de
Oracle, Sybase o DB2. - Datos mantenidos por aplicaciones Cobol se podrán
utilizar en Word, Access, Crystal Reports, etc.
Además dispondrá los datos a Visual Basic, Power
Builder... Mediante el Open Database Connectivity.
18Cobol y OO
- Lenguage ampliamente utilizado.
- Resurge por el Y2K, ahora es historia, OO?.
- En 40 años se han desarrollado sobre 1000
lenguajes, Cobol ha sobrevivido (180 billones de
líneas de código, 5 billones por año Computer
1997). - Internet enfatiza sobre GUI y Java factores que
han renovado el interés en OO como paradigma de
desarrollo. - Adopción de OO 63 2000?, 24 1996, 39 1998).
- Se afirma que los estándares de Cobol no proveen
características OO. - El 33 de las empresas indican a Cobol como
lenguage principal, 45 espera que Java lo sea en
tres años. Hay indicaciones de que Cobol no
sobrevivirá en su forma actual (causa OO). - En esta corta carrera Cobol continúa siendo
importante Inversión en aplicaciones y
experiencia. - Las opiniones no son tan rigurosas como se
predice. Se propone que Cobol OO sea utilizado
como una herramienta para la enseñanza de las
técnicas OO.
19Cobol y OO
- IBM, Merant/MicroFocus, Fujitsu, Hitachi
promueven OO Cobol. - Curvas de aprendizaje favorables a Cobol (12 sem
vs 40 sem. C, 80 sem. Smalltalk). - El entrenamiento OO debe considerar Conceptos,
análisis, diseño y programación. - Modelos de enseñanza Evolucionario en que se
construye sobre el conocimiento existente o
modelo Revolucionario que ignora el conocimiento
previo. - El modelo evolucionario considera un lenguaje OO
híbrido y utiliza el conocimiento del lenguaje
base (OO Cobol). El problema es que el estudiante
podría continuar utilizando técnicas
convencionales sin hacer un cambio mental a OO. - El modelo revolucionario utiliza un lenguaje OO
puro basado en el paradigma OO. Más difícil para
el estudiante pero promueve buenas técnicas OO.
20Cobol y OO
- Técnicas Revolucionarias
- T1 Conceptos OO, Análisis OO, Diseño OO,
Programación OO (Smalltalk) - T2 Conceptos OO, Programación OO (Java),
Análisis OO, Diseño OO - Técnicas Evolucionarias
- T3 Conceptos OO, Programación OO (Cobol),
Análisis OO, Diseño OO - T4 Conceptos OO, Análisis OO, Diseño OO,
Programación OO (Cobol) - T1 El esfuerzo de entendimiento de un lenguage
OO no familiar, perdió de vista el paradigma OO.
Se enfatizó en el lenguage, fallas al conectar
análisis, diseño y programación. - T2 Similar a T1. Los alumnos relacionaron su
experiencia previa (programación procedural) al
lenguaje OO. Como no conocían Análisis y Diseño
trataron de ajustar OO en el paradigma
procedural. Programación pobre y entendimiento OO
incompleto. - T3 Los alumnos escribieron programas
procedurales en un lenguaje OO (aplicaron su
conocimiento de Cobol). - T4 Los alumnos aprendieron. Se encontró que esta
técnica es la más efectiva para enseñar
desarrollo OO a desarrolladores Cobol.
21Cobol y OO
- Se requiere complemento en la utilización de
lenguajes Visual Basic (GUI), Cobol
(Aplicaciones tradicionales del negocio), Java
(Ambiente en red). - Comparativa de lenguajes enseñados en pregrado
22Bibliografía
- IEEE Software Vol. 17 N2, 2000
- Cobol for the Next Millennium, Don Schricker
- Cobol tools Overview and Taxonomy, E. Arranga
T. Hubbell, A. Lorents, S. Shiflett, J. Wessler - Cobol in an Object-Oriented World A Learning
Perspective, B. Hardgrave, E. Redd Doke - ISO/IEC FCD 19892001 (Programming Language
COBOL)