125
© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. CAPACITACIÓN AcuBench (Guía del Usuario) Bogotá D.C., – Noviembre de 2003.

Acubench Manual

Embed Size (px)

DESCRIPTION

Aprender el concepto de ambiente gráfico.Utilizar las herramientas Acucorp.Aprender a convertir aplicaciones desarrolladas en RM-COBOL

Citation preview

Page 1: Acubench Manual

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5.

CAPACITACIÓN

AcuBench (Guía del Usuario)

Bogotá D.C., – Noviembre de 2003.

Page 2: Acubench Manual

Capacitación – Tabla de Contenido

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 2 de 125

Tabla de Contenido

Tabla de Contenido.................................................................................. 2 Introducción ............................................................................................. 4

Finalidad del Curso .............................................................................................................4 Objetivo del Curso ..............................................................................................................4 Confidencialidad .................................................................................................................4

Unidad 1: Ambiente gráfico .................................................................... 5 Introducción a ambiente gráfico ..........................................................................................5 Introducción a GUI ..............................................................................................................5 Diferencias entre pantalla y ventana ...................................................................................5 Controles ............................................................................................................................6 Eventos...............................................................................................................................7 Diferencias entre ambiente carácter y gráfico .....................................................................7 Taller de repaso – Unidad 1................................................................................................8

Unidad 2: Introducción a AcuBench.................................................... 10 Conceptos del Workbench ................................................................................................10

1. Composición de la Ventana Principal. ...................................................................10 2. Descripción de la barra de menú...........................................................................11 3. Descripción detallada de la barra de menú............................................................14

Taller de repaso 1. ............................................................................................................23 Administración de un Proyecto, Creación y Organización .................................................24

• Opciones de configuración ......................................................................................... 24 • Administración de un proyecto.................................................................................... 25 • Creación y Organización de un Proyecto.................................................................... 25

Taller de repaso 2. ............................................................................................................29 Generación automatizada de código.................................................................................30 Estrategia de desarrollo ....................................................................................................32

• Consideraciones generales ........................................................................................ 32 Unidad 3: Desarrollando un Proyecto con AcuBench....................... 33

Objetivos...........................................................................................................................33 Crear un proyecto utilizando AcuBench ............................................................................33 Laboratorio 3.1..................................................................................................................35 Crear una GUI con AcuBench...........................................................................................36

• La caja de Componentes – “Component Toolbox”. ..................................................... 36 • La ventana de propiedades – “Property Window”........................................................ 38 • Visión general de los controles gráficos...................................................................... 39 • Propiedades Especiales ............................................................................................. 40

Laboratorio 3.2..................................................................................................................44 Visión General de los Eventos ..........................................................................................45

• Eventos de ventanas – (Windows Events). ................................................................. 45 • Eventos de Controles – (Control Events). ................................................................... 46 • Eventos de menú – (Menú Events)............................................................................. 55

Laboratorio 3.3..................................................................................................................57 Laboratorio 3.4..................................................................................................................59

Page 3: Acubench Manual

Capacitación – Tabla de Contenido

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 3 de 125

Laboratorio 3.5..................................................................................................................61 Controles gráficos especiales ...........................................................................................62

• Grid Control................................................................................................................ 62 Laboratorio 3.6.................................................................................................64 Propiedades Especiales del GRID...................................................................65 Estilo Page Grid...............................................................................................80 Laboratorio 3.7.................................................................................................82 Laboratorio 3.8.................................................................................................83 Laboratorio 3.9.................................................................................................84 Laboratorio 3.10...............................................................................................85

• Tree View Control....................................................................................................... 88 Ítem..................................................................................................................88 Relación Padre e Hijo ......................................................................................89 Adicionando ítem hijos.....................................................................................89 Laboratorio 3.11...............................................................................................92

• Web Browser.............................................................................................................. 94 Métodos...........................................................................................................94 Laboratorio 3.12...............................................................................................98

Herramientas y utilidades................................................................................................101 Laboratorio 3.13.............................................................................................104

Administración de Transacciones en Archivos ................................................................105 • Registro de Transacciones ........................................................................................105 • Tipos de archivo........................................................................................................106 • Verbos para administración de transacciones............................................................106

Unidad 4: Conversión de Aplicaciones COBOL............................... 107 Análisis de conversión ....................................................................................................107 Funcionamiento del Asistente .........................................................................................108 Beneficios y Restricciones ..............................................................................................113

Unidad 5: Introducción a Internet desde COBOL............................. 114 Tecnologías Acucorp para Internet .................................................................................114

• Acuthin......................................................................................................................114 Cómo funciona...............................................................................................115

• Acuserver..................................................................................................................116 Cómo funciona...............................................................................................116

• CGI ...........................................................................................................................117 Que es CGI?..................................................................................................117 Escribir un programa COBOL CGI .................................................................119 Colocar su página web en el servidor web.....................................................123 Configurando el servidor web.........................................................................123 Que es necesario?.........................................................................................124

Laboratorio: COBOL y CGI .............................................................................................125 Cree una forma HTML ...................................................................................125

Page 4: Acubench Manual

Capacitación – Introducción

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 4 de 125

Introducción

Finalidad del Curso

Brindar al estudiante los conocimientos básicos necesarios para el desarrollo de proyectos en ambiente gráfico, bajo la herramienta de desarrollo AcuBench, además de facilitar el uso del entorno de trabajo, optimizando la creación o conversión de aplicaciones.

Objetivo del Curso

Aprender el concepto de ambiente gráfico Utilizar las herramientas Acucorp Aprender a convertir aplicaciones desarrolladas en RM-COBOL

Confidencialidad

El material es propiedad de JIMMY GUZMÁN SUÁREZ Se presenta como material de ayuda y consulta al estudiante en el curso de capacitación.

Este material se creo sin autorización de Acucorp y bajo la responsabilidad de su autor sin que Acucorp tenga ninguna responzabilidad ni autoria en este material.

Las reglas de confidencialidad aplicadas, afectan a todo el documento, su reproducción es prohibida por cualquier tipo de medio, físico o magnético sin autorización expresa escrita del autor

Copyright 2003 - Todos los derechos son reservados.

Page 5: Acubench Manual

Capacitación – Ambiente Gráfico

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 5 de 125

Unidad 1: Ambiente gráfico

Introducción a ambiente gráfico

Como parte fundamental para el desarrollo de aplicaciones basadas en ambiente gráfico, es la importancia en el conocimiento de los principios básicos de la construcción de software; esta unidad introduce al estudiante hacia una familiarización de conceptos básicos de los componentes de un entorno gráfico.

Introducción a GUI

El termino GUI (Graphical User Interfaces), o Interfaz Gráfica de Usuario, es ampliamente aplicado a los ambientes basados en sistemas gráficos, tales como, Windows 95/98/NT/2000, LINUX, Macintosh, OS/2 IBM etc. Esto es, una construcción de una serie de controles y componentes gráficos que permiten al usuario interactuar con éstos para ejecutar eventos o acciones de una aplicación especifica.

Diferencias entre pantalla y ventana

Pantalla: es la parte visual física del área de un monitor. Ventana: es un área visual rectangular que provee una vista virtual de una pantalla Las ventanas contienen controles gráficos, barras de títulos y barras de menú, en entornos GUI las ventanas son construcciones fundamentales usadas para mostrar y aceptar comandos y datos del usuario. Básicamente las ventanas están divididas en: Ventana principal: Es generalmente la ventana primaria de la aplicación la cual esta compuesta por una barra de título y una barra de menú para acceder a las funciones básicas de la aplicación. Esta ventana puede ser movible y reajustable. Ventana Tipo Modeless: Esta ventana le permite al usuario intercambiar entre ventanas permitiendo interactuar entre ventanas, puede estar una ventana ejecutando un proceso y acceder a otra ventana para realizar otro proceso, esta ventana se puede minimizar, reajustar y mover.

Ventana Tipo Modal: Es una ventana a la que el usuario debe responder antes de continuar con otra tarea, esta ventana no es ajustable y en algunos

Page 6: Acubench Manual

Capacitación – Ambiente Gráfico

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 6 de 125

casos no es minimizable pero sí es movible. Un ejemplo típico es las ventanas de mensajes de error.

Controles

Los controles son una serie de objetos gráficos que están intrínsicamente contenidos en una ventana con una función dedicada, los controles no son movibles y no tienen algunas propiedades de las ventanas. Los controles tienen unas propiedades básicas, como son: Localización, Tamaño, Títulos, Valores, Colores, Fuentes y Estilos. Además de esto ciertos tipos de controles cuentas con propiedades especiales dependiendo del tipo de control. Dentro de los controles comúnmente usados tenemos: ACTIVE-X BAR BITMAP CHECK-BOX COMBO-BOX ENTRY-FIELD FRAME GRID LABEL LIST-BOX PUSH-BUTTON RADIO-BUTTON SCROLL-BAR STATUS-BAR TAB TREE-VIEW WEB-BROWSER Los controles se aplican dependiendo de la aplicación que deseemos construir. Una parte importante en la construcción de software es la de definir el tipo de ventana y los controles que tendrá, creando un estándar único para la aplicación, evitando excesos y disparidad de objetos, es decir, se debe crear un ambiente claro y de fácil comprensión por parte del usuario, evitando nomenclatura técnica y siendo lo más especifico y claro posible. En el desarrollo del curso se adentrará en el concepto de cada uno de estos controles, por ahora los mencionaremos para que el estudiante se vaya familiarizando con los términos.

Page 7: Acubench Manual

Capacitación – Ambiente Gráfico

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 7 de 125

Eventos

En los sistemas gráficos, los eventos comunican acciones dadas por el usuario a través de varios objetos gráficos. Por ejemplo, si el usuario presiona una tecla, el sistema puede generar algunos eventos para denotar el hecho,.

Los eventos son generados por el sistema y lo que hace el desarrollador es interpretarlos y aplicarlos en la aplicación.

Diferencias entre ambiente carácter y gráfico

Cuando usted desarrolla aplicaciones para ambiente carácter, asume que tiene un área de pantalla de 24 o 25 líneas x 80 columnas, a diferencia, en un ambiente gráfico se utiliza el término resolución de pantalla, el cual esta dado en píxeles, es así como se habla de configuración de 640 x 480, 800 x 600, o 1024 x 768, en AcuBench un carácter representa 0.8 píxeles de ancho x 1.5 de alto, ahora bien en la construcción de controles la dimensión se maneja en píxeles y no en caracteres como lo hacía con ambiente carácter. Otra diferencia fundamental es la interacción del usuario con el mouse, este dispositivo es parte básica en sistemas Windows y generalmente el uso del mouse sobre los controles genera eventos que el sistema trasmite en código y dependiendo de la herramienta de desarrollo este lo clasifica para que el desarrollador pueda asociar una acción a dicho evento.

El ambiente carácter se limita a la interacción del usuario con el teclado y su flexibilidad es muy limitada, es así como en ambiente carácter solamente puedo acceder a una aplicación mientras que en ambiente gráfico por tener arquitectura de 32 bits puedo acceder a múltiples aplicaciones, esto se llama multitarea.

Nota: Como se ha dado cuenta el desarrollo de aplicaciones gráficas, demanda ciertas reglas y conceptos que a través del curso iremos ampliando y profundizando. El curso esta enfocado hacía el dominio de la herramienta AcuBench, pero esto solo se logrará con el empeño y dedicación que usted ponga en el aprendizaje de la herramienta.

Page 8: Acubench Manual

Capacitación – Ambiente Gráfico

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 8 de 125

Taller de repaso – Unidad 1

El siguiente taller muestra una imagen de una ventana (figura 1.1), la cual contiene algunos controles gráficos, identifique los controles, escriba el nombre y una breve descripción en la lista de la siguiente página.

Figura 1.1.

Page 9: Acubench Manual

Capacitación – Ambiente Gráfico

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 9 de 125

Figura Nombre del Control Descripción del Control

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

Page 10: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 10 de 125

Unidad 2: Introducción a AcuBench

Conceptos del Workbench

Veremos la composición de la ventana principal o espacio de trabajo (workbench) de AcuBench, así como la descripción de la barra de menú. 1. Composición de la Ventana Principal. La ventana principal contiene todos los componentes para desarrollar las aplicaciones como parte de un proyecto. Esta ventana se compone de:

Barra de menú Barra de herramientas Standard

Barra del editor

Barra del Debug

Barra de Alineamiento de Controles

Ventana de Propiedades

Caja de herramientas de Componentes

Ventana de Salida

Ventana de Desarrollo

Espacio de Trabajo

Page 11: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 11 de 125

2. Descripción de la barra de menú En la barra de menú encontramos los siguientes menús: File Menu Edit Menu View Menu Project Menu Build Menu Debug Menu Align Menu Format Menu Tools Menu Window Menu Help Menu Dentro de cada menú encontramos las siguientes opciones. File Menu

Edit Menu

Page 12: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 12 de 125

View Menu

Project Menu

Build Menu

Debug Menu

Page 13: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 13 de 125

Alig Menu

Format Menu

Tools menu

Window Menu

Help Menu

Page 14: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 14 de 125

3. Descripción detallada de la barra de menú A continuación describimos en detalle cada uno de los componentes de los diferentes menús. File Menu El File Menu incluye comandos que desempeñan operaciones en archivos y espacios

de trabajo. New La opción File/New carga una ventana de dialogo que le

permite crear un nuevo proyecto, programa, ventana, archivo, o (FD/SL). En el dialogo New, seleccione la pestaña que corresponde al tipo de objeto que usted desea crear y luego complete el dialogo.

Open Seleccione File/Open para abrir un archivo existente. Localice el archivo deseado y haga clic en Open para abrir el archivo.

Close Seleccione File/Close para cerrar el archivo activo. Open Workspace Seleccione File/Open Workspace para abrir un nuevo espacio

de trabajo. Si un workspace se encuentra abierto, AcuBench cierra el actual workspace antes de abrir uno nuevo.

Save Workspace Seleccione File/Save Workspace para guardar todos los cambios hechos al workspace.

Close Workspace Seleccione File/Close Workspace para cerrar el workspace activo.

Save Seleccione File/Save para guardar el archivo actual. El nombre del archivo actual es mostrado a la derecha de la opción Save.

Save As Seleccione File/Save As para guardar el archivo actual con otro nombre de archivo o localización. Si usted no especifica una extensión, la primera extensión listada en el campo "Save as type" es asignada automáticamente.

Save All Seleccione File/Save All para guardar todos los cambios hechos en los archivos activos.

Page Setup Seleccione File/Page Setup para definir el diseño de su página impresa.

Print Setup Seleccione File/Print Setup para modificar o ver sus valores de impresión.

Print Preview Seleccione File/Print Preview para visualizar cómo quedará el documento actual cuando se vaya a imprimir.

Print Seleccione File/Print para imprimir su archivo activo. Ajuste los valores en el cuadro de dialogo y presione en OK.

Recent Files File/Recent Files es una lista de los más recientes archivos abiertos. Usted puede abrir un archivo en la lista seleccionandolo.

Recent Workspaces File/Recent Workspaces contiene una lista de los más recientes workspaces abiertos. Usted puede abrir un workspace en la lista seleccionándolo.

Exit Seleccione File/Exit para cerrar AcuBench. El estado de la información es guardado, y todos los archivos son cerrados antes de salir.

Page 15: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 15 de 125

Edit Menu El menú Edit incluye funciones de edición familiares tales como: cortar, copiar, y pegar. Undo Reversa la acción previa en el “Code Editor” y “Screen

Designer”. El workbench soporta múltiples acciones deshacer, para acciones o comandos efectuados antes de guardar los cambios.

Redo Reversa la más reciente operación “Undo”. El “Code Editor” y el “Screen Designer” soportan múltiples acciones “Redo”, para acciones o comandos efectuados antes de guardar los cambios.

Cut Remueve la selección desde el “Code Editor” o “Screen Designer” colocándolo en el portapapeles. Este comando es disponible únicamente si ha seleccionado código o componentes de la Screen.

Copy Coloca una copia de la selección en el portapapeles. Este comando es disponible únicamente si ha seleccionado código o componentes de la Screen.

Paste Coloca una selección que ha sido cortada o copiada al portapapeles en un documento activo o “Screen”. Cuando usted selecciona este commando.

Delete Remueve la selección desde el “Code Editor” o el “Screen Designer”. Este comando es disponible únicamente si ha seleccionado código o componentes de la “Screen”.

Select All Selecciona todos los elementos en el activo “Code Editor” o “Screen Designer”.

Find Le permite buscar múltiples ocurrencias de una cadena de texto. El comando “Find” no es habilitado para el “Screen Designer”. Cuando usted selecciona este comando aparece un cuadro de dialogo con varias opciones de búsqueda.

Find Next Avanza en la siguiente ocurrencia del ítem seleccionado en el documento activo. Este comando esta disponible únicamente si usted ha seleccionado un texto.

Find in Files Permite localizar cadenas de texto en los archivos almacenados en su disco duro. Cuando usted selecciona este comando aparece un cuadro de dialogo con varias opciones de búsqueda.

Replace Permite reemplazar ítem en el texto con otros ítem. Cuando usted selecciona este comando aparece un cuadro de dialogo con varias opciones de reemplazo.

Replace in Files Permite reemplazar una cadena de texto por otra cadena dentro de su proyecto o su disco duro. Cuando usted selecciona este comando aparece un cuadro de dialogo con varias opciones de reemplazo.

Go To Permite especificar un destino para el cursor en el documento activo. Cuando selecciona este ítem, aparece un submenú con varias opciones.

Bookmark El comando “Bookmark” permite insertar una marca en la línea seleccionada del “Code Editor”. Una vez las marcas son colocadas, usted puede instantáneamente desplazarse a la siguiente o previa marca en su código.

Advanced El comando “Advanced” contiene un submenú permitiendo desempeñar una variedad de tareas.

Page 16: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 16 de 125

Create/Update CFD Crea un “Control Flow Diagram (CFD)” para el programa activo si este no existe. Si un CFD ha sido creado por el programa activo, este comando actualizar el existente CFD, reflejando cualquier cambio recientemente hecho en el programa.

View Menu El menú View controla la visualización de los componentes varios del workbench. Toolbars El comando “Toolbars” permite ocultar o mostrar las barras de

herramientas del workbench, incluyendo: “Standard, Project, Editor, Debug, Align toolbars y el Launch Bar”. Cuando selecciona este comando, un submenú contiene una lista de las anteriores barras de herramientas. Haciendo clic en el ítem del menú visualiza u oculta la barra seleccionada, apareciendo o desapareciendo una marca en el menú. El comando “Toolbars” permite personalizar la apariencia de la barra, creando o eliminando componentes, esto lo puede hacer por la opción “Customize” del menú.

Status Bar Activada esta opción, muestra una barra de estado y mensajes en la parte inferior del workbench.

Workspace El comando Workspace visualiza la ventana del espacio de trabajo. El workspace contiene varias vistas de uno o más proyectos, incluyendo los proyectos básicos, estructura de programas, descripción de archivos, y tipos de archivos. El icono Workspace en el menú aparece "presionado" cuando el workspace es mostrado. Puede ocultar el workspace haciendo clic con el botón derecho en el área y seleccionar “Hide”.

Output Window El comando “Output window” visualiza la ventana de salida, la cual contiene todos lo mensajes generados cuando realiza un “Build”, “Debug”, “Search” y funciones de control de versiones. Información sobre aplicaciones no-workbench son también mostradas en la ventana de salida. El icono “Output window” en el menú aparece "presionado" cuando ventana de salida es mostrada. Puede ocultar la ventana de salida haciendo clic con el botón derecho en el área y seleccionar “Hide”.

Property window El comando “Property window” visualiza la ventana de propiedades, esta visualiza las propiedades y eventos disponibles para cada ventana y control. El icono “Property window” en el menú aparece "presionado" cuando ventana de propiedades es mostrada. Puede ocultar la ventana de propiedades haciendo clic con el botón derecho en el área y seleccionar “Hide”.

Component Toolbox El comando “Component Toolbox” visualiza la ventana de componentes, la cual contiene iconos para los controles estándar y ActiveX, controles utilizados para diseñar la Screen. Puede ocultar la ventana de propiedades haciendo clic con el botón derecho en el área y seleccionar “Hide”.

Debug window El commando “Debug Window” permite visualizar varias ventanas durante una sesión de depuración. Estas ventanas retornan información acerca de como su aplicación se esta depurando. Los nombres de estas ventanas aparecen en un submenú del comando “Debug window”.

Full Path Filename Este comando permite la visualización del nombre y ruta completa de los archivos en la barra de título del editor de código.

Page 17: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 17 de 125

Ruler Bar Este comando muestra una regleta en la parte superior del editor de código.

Line Number Pane Este comando muestra el número de línea en el editor de código.

Bookmark Pane Este comando muestra un panel para alojar las marcas de libro (Bookmark) en el editor de código.

Project Menu

El menú “Project” contiene herramientas específicas para el mantenimiento de sus proyectos. Puede adicionar o remover archivos desde su proyecto, crear carpetas adicionales para su proyecto, ver o modificar la configuración y propiedades de su proyecto y fijar su modo de trabajo activo (Debug or Release).

Add/Remove Files Para adicionar o remover archivos desde un proyecto, seleccione “Project/Add/Remove Files”.

New Folder Seleccione “Project/New Folder” para crear una nueva carpeta para su proyecto.

Settings Seleccione “Project/Settings” para revisar o modificar la configuración de su proyecto. “Project/Settings” permiten especificar el compilador, runtime, entorno, y opciones de librerías para el proyecto. Las opciones disponibles en la configuración del proyecto dependen de la pestaña seleccionada. (más adelante se profundizará en el tema).

Set Active Mode Seleccione “Project/Set Active Mode” para seleccionar el conjunto de valores (modo) que desea usar con el proyecto. En el dialogo “Set Active Mode”, haga clic en el nombre del modo deseado y luego presione OK.

Properties Seleccione “Project/Properties” para ver y modificar propiedades generales y librerías de su proyecto. En la pestaña General, puede cambiar el nombre de su proyecto ingresando un nuevo nombre. Los restantes Ítems en la pestaña general son de lectura únicamente. Use la pestaña “Library” para especificar nombres de los objetos incluidos en la librería de el proyecto.

Create Alias Seleccione “Project/Create Alias” para definir el alias que contiene la información necesaria para un runtime de un servidor que corre una aplicación remota en una operación cliente delgado.

Page 18: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 18 de 125

Build Menu El menú Build incluye comandos para generar código, construir el espacio de trabajo

(workspace), compilar un archivo, reparar un archivo o todos de el espacio de trabajo y para ejecutar un programa.

Generate Seleccione “Build/Generate” para generar código del programa activo. Por ejemplo, si una forma de ventana esta activa, seleccionando “Generate” causa que el código relativo a la screen sea generado. Si la ventana de “File Designer” es activa, los archivos ".fd" and ".sl" son generados para el diseño de datos.

Compile Seleccione “Build/Compile” para compilar el archivo activo. Esta opción es deshabilitada si el archivo activo no es un tipo de archivo COBOL.

Build Workspace Seleccione “Build/Build Workspace” para construir todo dentro del proyecto en el espacio de trabajo. “Build Workspace” recompila todos los archivos que han sufrido cambios desde la última construcción (build) y sus dependencias. Si su espacio de trabajo contiene proyectos locales y remotos, y desea construir estos proyectos, debe usar el comando “Build Workspace” doble vez: una vez para su proyecto local y otra vez después de seleccionar el comando “Thin Client” para sus proyectos remotos.

Rebuild Workspace Seleccione “Build/Rebuild Workspace” para forzar la construcción de todo el proyecto en el espacio de trabajo. “Rebuild Workspace” recompila nuevamente todos los archivos y sus dependencias. Si su espacio de trabajo contiene proyectos locales y remotos, y desea reconstruir estos proyectos, debe usar el comando “Rebuild Workspace” doble vez: una vez para su proyecto local y otra vez después de seleccionar el comando “Thin Client” para sus proyectos remotos.

Reparse Seleccione “Build/Reparse” para repasar el activo archivo de origen, identificar e incluir todos los archivos referenciados (COPY).

Reparse All Seleccione “Build/Reparse All” para repasar todo el espacio de trabajo, identificar e incluir todos los archivos referenciados (COPY).

Execute Seleccione “Build/Execute” para ejecutar o correr el programa seleccionado.

Debug Runtime Seleccione “Build/Debug (Runtime)” para iniciar la ejecución en modo de depuración del programa activo.

Allow Parameters Seleccione “Build/Allow Parameters” para especificar parámetros antes de ejecutar el programa seleccionado. Cuando esta opción es seleccionada la ejecución con el dialogo de parámetros es visualizada

Use Thin Client Seleccione “Build/Use Thin Client” para señalizar el espacio de trabajo deseado para ser usado con la tecnología cliente delgado.

Page 19: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 19 de 125

Debug Menu

El menú Debug provee acceso a los comandos usados con el depurador (debugger).

“Trace Option” permite un conjunto especial de seguimiento para tipos específicos de actividad de un programa, tal como un flujo de ejecución (mediante parágrafos) y archivos I/O. La opción de seguimiento genera mensajes en la cadena de salida del depurador, cuantas veces una acción de un especificado tipo ocurre.

Para habilitar o deshabilitar una opción de seguimiento, clic en la opción deseada del submenú. Las opciones del submenú incluyen:

Comando Descripción Trace File...

Genera una lista de todas las operaciones desempeñadas por el runtime en un archivo. Cuando esta opción es activada, un dialogo es mostrado indicando el nivel de seguimiento.

Trace Paragraphs

Genera una lista de todos los parágrafos y secciones registradas por el runtime.

Trace Option

Trace Flush. Causa que se limpie el archivo de error del disco después de cada escritura.

Go Ejecuta en modo de depuración el programa seleccionado. Restart Restaura desde el final de la actual sesión de depuración e

inicia una nueva sesión con el mismo programa. Exit Debugger Termina la sesión de depuración actual, ejecutándola hasta el

final y luego cerrándola. Quit Debugger Termina la sesión de depuración en el punto donde se

encuentre y cierra el depurador. Interrupt Detiene la ejecución del programa, retornando el control al

depurador. Auto Step Ejecuta el comando repetidamente por pasos mientras el

programa finaliza. Puede cambiar la velocidad comenzando desde “1” (lento, aproximadamente 3 segundos por paso) hasta “9” (rápido, muchos pasos por segundo).

Step Into Ejecuta el seguimiento dentro de una sentencia o parágrafo. Step Over Sale de la ejecución interna de una sentencia o parágrafo. Step Out Paragraph Corre el programa mientras el actual parágrafo retorna al punto

desde el cual fue lanzado. Step Out Program Corre un programa hasta que retorne a su programa origen. Skip to line Mueve la ubicación actual del programa a la línea que contiene

el cursor. Run to Cursor Pone un punto de interrupción temporal en la línea actual (o la

línea más cercana con un verbo) y continúa la ejecución del programa.

Record Script Crea un registro que guarda todas las acciones del depurador a un archivo que usted especifique.

Run Script Ejecuta un archivo script de depuración.

Page 20: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 20 de 125

Breakpoints Lanza el diálogo de Puntos de interrupción en el que usted puede poner, modificar, y quitar puntos de interrupción.

Threads Lanza el diálogo de Hilos en que usted puede escoger un solo hilo para correr o escoger la opción para correr todos los hilos.

Align Menu Permite que usted afine la apariencia de sus controles después que los ha colocado en

su ventana en el Diseñador de Pantalla. Cuándo escoge un grupo de controles para estas órdenes, debe fijarse que el último control escogido es el control dominante. Cuándo escoge una orden de la alineación, todos los otros controles en su selección del grupo se alinean de acuerdo al control dominante.

“Align Control” le da varias opciones para posicionar sus controles. Estas opciones aparecen en el submenu, descrito en la tabla siguiente:

Comando Descripción Center Horizontal Centra los controles

seleccionados Horizontalmente. Center Vertical Centra los controles

seleccionados Verticalmente. Left Alinea los bordes a la izquierda

los controles seleccionados, de acuerdo al control dominante

Right Alinea los bordes a la derecha los controles seleccionados, de acuerdo al control dominante

Top Alinea al borde superior los controles seleccionados, de acuerdo al control dominante

Bottom Alinea los bordes en la parte inferior los controles seleccionados, de acuerdo al control dominante

Align Control

To Grid Alinea el control (s) escogido al punto más cercano de la cuadrícula en el Diseñador de Pantalla.

“Space Evenly” le da dos opciones para espaciar fuera sus controles en el Diseñador de Pantalla. Esta orden está disponible sólo si usted ha escogido por lo menos tres controles. Las opciones aparecen en el submenú, descrito en la tabla siguiente:

Comando Descripción Across Espacia uniformemente los

controles escogidos (por lo menos tres) horizontalmente.

Space Evenly

Down Espacia uniformemente los controles escogidos (por lo menos tres) verticalmente.

Page 21: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 21 de 125

Adjacent Tiene dos opciones para posicionar sus controles. La opción Horizontal posiciona dos controles escogidos para que la frontera correcta de un control tengan la misma ubicación horizontal como la frontera izquierda del otro control. El espacio vertical entre ellos puede existir. La opción Vertical posiciona los controles escogidos para que la frontera inferior de un control tengan la misma ubicación vertical como la frontera primera del otro control. El espacio horizontal entre ellos puede existir. Tiene tres opciones para calibrar sus controles. Esta orden está disponible sólo si usted ha escogido por lo menos dos controles. La Marca Mismas opciones del Tamaño se describen en la tabla siguiente:

Comando Descripción Width Ajusta los controles escogidos al

ancho del control dominante. Height Ajusta los controles escogidos al

alto del control dominante.

Make Same Size

Both Ajusta los controles escogidos al ancho y alto del control dominante.

Size to Content Cuándo usted usa esta orden, el control escogido se ajusta para que sea apenas lo suficientemente grande para acomodar una etiqueta o un título..

Lock Controls Permite cerrar y bloquear la posición de un control en una ventana. Un control cerrado no se puede arrastrar, pero se puede cortar, centrar y calibrar. Cuándo usa este comando y escoge la posición del control en la ventana se desbloquea, entonces esa posición de control en la pantalla se cierra. Si el control escogido se cierra cuando usted usa esta orden, esa posición del control se desbloquea.

Tab Order Permite que usted determine el orden en que el cursor navega por los controles en la ventana. Cuándo usa esta orden, una ventana de diálogo de Orden de Etiquetas de Controles aparece. Esta caja del diálogo contiene una lista de los controles en su ventana junto con el número de orden asignado. Usted puede cambiar la orden de la etiqueta escogiendo un control y usando las flechas arriba y abajo.

View Grid Presenta una cuadricula que sirve como referencia para alinear controles en la ventana de diseño.

Toggle Guide Presenta unas guías en forma vectorial que sirven como referencia para ubicar controles en la ventana de diseño.

Page 22: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 22 de 125

Format El menú “Format” permite cambiar ciertas propiedades de texto del editor de código. Capitalize Coloca en mayúscula la primera palabra del texto Uppercase Cambia todas las letras del texto de minúscula a mayúscula. Lowercase Cambia todas las letras del texto de mayúscula a minúscula. Comment Block Permite que usted escoja un bloque de texto en su código

fuente y aplique símbolos de comentario a toda el área seleccionada.

Uncomment Block Permite que usted remueva un bloque comentariado de texto en su código fuente.

Sequense Number Permite crear o enumerar una selección de código fuente. Las opciones de enumeración se muestran en un cuadro de dialogo.

Indent to Next Cambia la tabulación de la posición de la línea a la siguiente. Indent to Previous Cambia la tabulación de la posición de la línea a la anterior. ANSI to Terminal

Format Cambia la configuración de color del fondo y frente de su código fuente entre ANSI y formato de terminal.

Page 23: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 23 de 125

Taller de repaso 1.

Complete las siguientes frases:

Para abrir un archivo de extensión (.cbl) utilizo la opción _________ del menú File.

La opción Recent Workspaces me permite ver una lista de los más recientes _____________________ abiertos.

La opción _________________ permite localizar cadenas de texto en mi disco duro.

El comando Bookmark sirve para __________________________________ Puedo ejecutar la depuración paso a paso de mi programa utilizando el

comando _______ window del menú _______. Puedo configurar los parámetros de mi proyecto utilizando _________ del

Project Menu Indique si las siguientes afirmaciones son falsas o verdaderas

Puedo crear una nueva carpeta utilizando la opción Add/Remove Files del menú Project: _______________

Para compilar un programa utilizo la opción Generate del menú Build: ______________

El comando Reparse me sirve para repasar el archivo activo: ______________

Para realizar un seguimiento a mi aplicación paso a paso dentro de una sentencia o parágrafo utilizo la opción Step Into del menu Debug: ______________

Responda a las siguientes preguntas

¿Cuál opción utilizo para salir completamente de una depuración? ________________________

¿Qué comando debo ejecutar para crear puntos de interrupción en mi depurador de código? ________________________

¿Cuál opción utilizo para darle una mejor apariencia a los controles creados en una ventana? ________________________

Page 24: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 24 de 125

Administración de un Proyecto, Creación y Organización

• Opciones de configuración

Las Opciones de Configuración son usadas para personalizar el entorno de trabajo de AcuBench.

Figura 2.1

El cuadro de diálogo de la figura 2.1 muestra la organización de las opciones en cinco categorías primarias:

Environment (Entorno) Code Editor (Editor de Código) Screen Designer (Diseñador de Pantalla) Code Generator (Generador de Código) Data Designer (Diseñador de Datos).

Estas categorías se muestran y se pueden escoger en el árbol de vista que son localizadas en el lado izquierdo del cuadro de diálogo. La mayoría de las

Page 25: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 25 de 125

categorías contienen dos o más sub-categorías que son visualizadas cuando usted abre (clic) el nodo principal. La descripción general de cada una de las características se describen y analizan en el transcurso de la capacitación.

• Administración de un proyecto

El desarrollo de proyectos con AcuBench es organizado en espacios de trabajo (workspaces), proyectos (project), y unidades de programa (program units). Un espacio de trabajo en AcuBench (workspace), es un contenedor para uno o más proyectos. Físicamente consiste en un archivo especifico (nombre_proyecto.prj), el cual es creado cuando se origina un proyecto en un espacio de trabajo. Este archivo contiene toda la información especifica del proyecto, así como el contenido de archivos y la configuración de valores definidos para el proyecto. Un proyecto en AcuBench (project), es una colección de todos los archivos necesarios para construir, ejecutar y depurar un programa, incluye todos los archivos de origen, archivos COPY, definiciones de archivos de ventanas, archivos de recursos (bitmap, audio, etc), listados de archivos, y archivos objeto. Puede crear múltiples proyectos en el mismo espacio de trabajo. Cuando un espacio de trabajo (workspace) es abierto, todos los proyectos miembros son visualizados en la ventana “workspace”. Cada proyecto contiene un conjunto de carpetas para organizar los archivos del proyecto. Cada cambio en la configuración del proyecto es guardada en el archivo de configuración del proyecto. Cuando un nuevo proyecto es creado, AcuBench crea un directorio local y un conjunto de subdirectorios para el proyecto. Podemos adicionar archivos al proyecto con la función “Add/Remove Files”. Los archivos pueden residir directamente en el subdirectorio del proyecto o en el file system, incluyendo una dirección de red. AcuBench mantiene vínculos lógicos a los archivos del proyecto.

• Creación y Organización de un Proyecto

Para crear un proyecto utilizamos la opción “New” del menú File, esta opción activa un cuadro de dialogo, como el que se muestra a continuación (figura 2.2):

Page 26: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 26 de 125

Figura 2.2 Si seleccionamos el icono “Standard Project”, genera una estructura de programa con una ventana gráfica estándar, en caso contrario, solo genera la estructura en el workspace. Este mismo cuadro de dialogo sirve para crear un programa, una ventana gráfica, un archivo o un archivo de datos, los cuales quedarán automáticamente incluidos en el proyecto activo. El proyecto lo puede crear en un nuevo espacio de trabajo o en uno que usted ya haya creado. La estructura genera, conforme al estándar de COBOL las secciones que componen un programa desarrollado en COBOL – ver figura 2.3. El espacio de trabajo (workspace) esta compuesto por 3 pestañas, que contienen la información general del proyecto, estas pestañas son: Estructural View: contiene la vista de una estructura de un programa en

Acubench. File View: Contiene la vista y contenido de las carpetas físicas creadas por

el proyecto y las adicionadas por el Usuario

Page 27: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 27 de 125

Data View: Contiene la vista de los archivos de datos (.FD) y (.SL).

Figura 2.3 Cuando creamos un proyecto, AcuBench crea una estructura física de directorios y carpetas de almacenamiento de todos los archivos necesarios para el desarrollo del proyecto.

Page 28: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 28 de 125

La tabla a continuación muestra el esquema de conformación de un proyecto:

Proyecto Carpeta con el nombre del proyecto, la cual contiene los archivos (.pjt estructura y configuración del proyecto) – (.psf estructura y configuración del programa)

Copylib En esta carpeta se almacenarán los archivos (.cpy - .wrk - .def – etc) necesarios para el proyecto

FD En esta carpeta quedarán almacenados los archivos de datos (.FD) y (.SL) y los archivos (.dlt) que contienen la definición estructural de dichos archivos.

List Contiene los listados (.lst) de los programas después de compilar. Únicamente los genera si esta habilitada la opción por las propiedades del proyecto.

Object En esta carpeta estarán todos los programas objeto compilados (.obj - .acu).

Resource Almacena todos los archivos de recursos (imágenes, audio, etc), necesarios para el proyecto (.bmp - .avi - .jpg)

Screen Contiene los archivos de código de la Screen Section (.scr) Source Los archivos de código fuente (.cbl) estarán en esta carpeta

Podemos crear carpetas adicionales utilizando la opción “New Fólder” del menú Project.

Page 29: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 29 de 125

Taller de repaso 2.

Complete las siguientes frases:

La opción _______ me permite personalizar la estructura de mis programas y de mis directorios de trabajo.

Puedo personalizar las plantillas de generación de código, para ello utilizo la opción _____________ de Options\Code Editor.

Las cinco opciones primarias para configurar mi workbench son: 1._________________________ 2._________________________ 3._________________________ 4._________________________ 5._________________________

La opción Options\Screen Designer\Default me permite _____________ los atributos de los ____________ gráficos.

El workspace esta conformado por 3 pestañas, estas son: __________________ __________________ __________________

Indique si las siguientes afirmaciones son falsas o verdaderas

Puedo adicionar o eliminar un componente cuando creo un nuevo proyecto. ______________

Cuando genero un documento puedo especificar que sección de mi programa generar. ______________

Cuando creo un proyecto debo crear manualmente la estructura física en donde estará ubicados mis archivos. ______________

No es posible adicionar o crear más de un proyecto en mi espacio de trabajo ______________

Responda a las siguientes preguntas

¿Cuál opción utilizo para crear una carpeta personalizada en mi espacio de trabajo? ________________________

¿Cuál opción me permite tener una vista de mis archivos de datos? ________________________

Page 30: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 30 de 125

Generación automatizada de código

AcuBench incluye varias herramientas especiales que permiten desarrollar en el programa los elementos en un ambiente interactivo y bajo un entorno gráfico. El producto del trabajo alcanzado con estas herramientas es guardado en un archivo de la estructura del programa o un archivo de la disposición de datos.

Cuándo usted inicia la acción de generación (presiona el botón Generate), AcuBench lee el contenido del archivo de la estructura del programa o el archivo de la disposición de datos para generar código de lenguaje común del lenguaje de programación COBOL. Estas facilidades en la generación de código se diseñan para agilizar y simplificar el desarrollo y mantenimiento de una aplicación, adicionalmente los programas generados son más seguros y robustos. El uso de estas facilidades es enteramente opcional. Si usted escoge usar estas herramientas, debe estar preparado para cambiar la forma acerca de cómo usted piensa que un programa se desarrolla y se genera. Por ejemplo, considere cómo el Diseñador de Pantalla (Screen Designer) se utiliza para crear una ventana y generar código. En el Diseñador de Pantalla (Screen Designer), las ventanas son creadas arrastrando y pegando los controles gráficos y otros elementos en un área de composición. Las propiedades y los valores especiales se definen en cada ventana del panel de propiedades del control “Property Window”. Cuándo una ventana se diseña, AcuBench genera el código en un COPY (.scr) y, posiblemente, directamente en el archivo (".cbl" del programa COBOL). La generación del código se realiza basado en la representación de la ventana creada y es mantenido en el archivo de la estructura del programa. En AcuBench, además de la generación del código de las ventanas, existe soporte especial para:

Construir descripciones de archivo con la opción “File Designer”. Crear asociaciones de datos con el “Data Set Designer”. Adicionar las secciones “Working” y “Linkage” con el “Working Storage

Editor” y “Linkage Editor”. Crear eventos y procedimientos embebidos con el Editor de Eventos

“Event Editor”. En general, la generación de código en AcuBench facilita el ,aprovechamiento del código generado y asociado al código mediante COPYs que son incluidos en las diferentes secciones de un programa. Estas declaraciones COPY son

Page 31: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 31 de 125

automáticamente insertadas en el programa entre unas marcas “tags” especiales, o bien, puede ser configurado para que usted inserte declaraciones dentro de estas marcas. Dependiendo de las herramientas y opciones seleccionadas en el banco de trabajo (workbench), AcuBench podría generar los siguientes archivos:

Nombre del archivo Código Incluido Nombre_programa.scr (Archivo Copy de la Screen)

Descripción de las entradas de la Screen Section. Si es necesario se incluye el llamado a Procedimientos de Eventos y asociaciones.

Nombre_programa.mnu (Archivo Copy del menú)

Descripción de la barra de menú y llamados a la librería W$MENU

Nombre_programa.evt (Archivo Copy de los eventos y procedimientos embebidos)

Si es una ventana principal (standard o initial): Acu-screen_name-msg-close Acu-screen_name-exit Acu-screen_name-event

Cuando un procedimiento de evento es especificado para una ventana:

Genera el procedimiento screen-screen_name-event-rtn y el código del procedimiento del evento

Cuando un procedimiento de evento es especificado para

un control: Genera el procedimiento screen-screen_name-event y el

código del procedimiento del control

Cuando un procedimiento de excepción es especificado para una ventana:

Genera el procedimiento screen-screen_name-except-rtn y el código del procedimiento de excepción.

.

.

.

Nombre_programa.prd (Archivo Copy de Procedure Division)

Un programa de la rutina de inicialización: Acu-initial-routine

Si una screen usa valores de excepción o terminación:

acu-screen_name-evaluate-func

Nombre_programa.wrk (Archivo Copy de la Working Storage Section)

Variables definidas para las propiedades de los controles. Variables definidas en el editor de la Working Storage. Cuando un conjunto de datos es definido, genera el ítem del file-status.

Nombre_programa.lks

Variables definidas en el editor de la Linkage.

Page 32: Acubench Manual

Capacitación – Introducción a AcuBench

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 32 de 125

(Archivo Copy de la Linkage Section) Nombre_programa.cbl (Todo el código es generado entre un conjunto de marcas)

Atributos y comentarios desde el dialogo de propiedades del programa. Declaraciones de los COPY generados por los archivos.

Estrategia de desarrollo

AcuBench soporta una amplia variedad de metodologías para desarrollar y mantener aplicaciones COBOL. La metodología que emplee es determinada por el conjunto de herramientas empleadas, las necesidades de su aplicación y su metodología para el desarrollo de software. Si planea usar las herramientas deI banco de trabajo (workbench) para generar el código automáticamente, como el diseñador de ventanas (Screen Designer) o el diseñador de archivos (File Designer), algunos elementos de sus programas, contenido y estructura serán determinados por los métodos usados por estas herramientas.

• Consideraciones generales

Sin tener en cuenta la metodología que usted use, hay ciertos aspectos a tener en cuenta para el correcto uso y aprovechamiento de AcuBench, en cada proyecto que usted genere.

Verifique y ajuste, si lo considera, los valores para los prefijos utilizados en el proyecto.

Si cambia el nombre por defecto de un subdirectorio de proyecto, puede necesitar verificar y ajustar ciertos valore del proyecto.

Considere colocar sus archivos de proyecto directamente en el directorio de proyectos.

Verifique todos los valores de configuración de Compilación, Entorno y Runtime.

Page 33: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 33 de 125

Unidad 3: Desarrollando un Proyecto con AcuBench

Hasta ahora hemos visto y aprendido el uso del entorno de trabajo ofrecido por AcuBench, a partir de esta unidad comenzaremos a trabajar en el desarrollo de un proyecto, utilizando nuestros conocimientos del lenguaje de programación COBOL, en conjunto a los conocimientos adquiridos de la herramienta de desarrollo AcuBench.

Objetivos

Profundizar en el uso y conocimiento de la herramienta de desarrollo – AcuBench.

Aprender el uso y aplicación de los controles gráficos. Aprender el uso de la programación orientada a eventos. Generar un proyecto desarrollado en AcuBench, utilizando la “Generación

automatizada de código”.

Crear un proyecto utilizando AcuBench

Típicamente, un proyecto se compone de uno o más programas (.cbl), la(s) ventana(s) gráfica(s) relacionada(s) (.scr), los COPYs, recursos, y otros archivos. Cuándo usted crea un proyecto, AcuBench crea la infraestructura para el proyecto inclusive un conjunto de carpetas (guías de trabajo). Opcionalmente, usted puede adicionar al proyecto un archivo o una ventana originado de una plantilla y un archivo (".psf" de la estructura del programa). Una vez que un proyecto es creado, su nombre puede cambiar, pero no puede cambiar el directorio del proyecto, ni los nombres de cualquiera de los subdirectorios. Pasos para crear un proyecto: 1. Si los archivos de su proyecto residen en un servidor remoto, seleccione el

comando “Build/Use Thin Client”. Este comando habilita el uso de los comandos relacionados con “Thin client” en las opciones de configuración de su proyecto. Fíjese que en la barra de título de la ventana de su aplicación principal para proyectos remotos, incluye la frase "Thin Client Enabled.".

2. Seleccione “New” desde el menú “File” y haga clic en la pestaña “Project “. 3. Seleccione una plantilla de proyecto.

La plantilla estándar (Standard template) crea un proyecto y un programa. El programa además del psf, crea una ventana gráfica estándar.

Page 34: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 34 de 125

La plantilla en blanco (Blank template), crea únicamente una estructura de proyecto vacía.

4. Entre el nombre y localización del proyecto en el campo “Location”. 5. Seleccione una opción de cualquiera de las dos para incluir el proyecto en

el actual espacio de trabajo (workspace) o crear el proyecto en un Nuevo espacio de trabajo.

6. Si desea cambiar el nombre de cualquiera de los directorios estándar del proyecto, haga clic en el botón “More Info…” y realice los cambios deseados en el dialogo “Project Information”.

7. Clic en el botón OK para crear el proyecto. 8. Aparece en el espacio de trabajo la estructura del programa primario (.cbl)

y los componentes del mismo. Para adicionar archivos y/o recursos a su proyecto, haga clic en el botón “Add/Remove Files” del menú “Project”. Nota: No puede abrir, cerrar y guardar proyectos individuales. Cada proyecto es miembro de un espacio de trabajo, y es éste espacio de trabajo el que puede ser abierto, cerrado o guardado. Demostración en clase: A continuación se explicará como trabajar con cada una de las pestañas del espacio de trabajo (Workspace).

Page 35: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 35 de 125

Laboratorio 3.1

Hasta ahora... Ha conocido la conformación y configuración de su banco de trabajo (workbench) y la forma de crear un proyecto.

Objetivos Usar los conocimientos adquiridos hasta ahora para crear un proyecto en AcuBench.

Identificar las diferentes partes que componen un proyecto.

Tareas generales Realice una verificación de la configuración de su entorno y realice los siguientes cambios en los prefijos por defecto, luego guarde esos cambios.

Utilizando AcuBench cree un proyecto estándar llamado

CAPACITACIÓN. El proyecto debe ser ubicado en el drive C: de su disco duro. Identifique cada uno de los componentes de su proyecto. En el espacio de trabajo, cambie el nombre del programa

“Programa” x “Lab-01”. Cree una estructura de datos por el Data View de su espacio de

trabajo con la siguiente información:

Tabla Clientes Nombre archivo Clientes.dat Organización Indexada Acceso Dinámico File Status Status-01

Cree ahora una definición para el archivo de datos, con la

siguiente información: Nombre Campo LLave Picture CD-CLIENTE PK 9(5) ID-CLIENTE AK-U 9(12) DE-CLIENTE AK-D X(80) DI-CLIENTE X(80) TL-CLIENTE 9(15) SX-CLIENTE AK-D X

Genere el Archivo de datos. Cree y asocie la estructura de datos en el espacio de trabajo. Genere la estructura general de su programa.

Page 36: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 36 de 125

Crear una GUI con AcuBench

La sección “Screen Designer” es la ventana primaria para diseñar una aplicación de pantallas gráficas o basadas en carácter y es la base para todo el diseño de pantallas. Esta unidad describe los componentes para el diseño de una ventana utilizando el “Screen Designer”, la ventana de propiedades “Property window”, la herramienta de componentes “Component Toolbox”, y otras funciones del espacio de trabajo “workbench” que esta directamente relacionadas con el diseñador de ventanas “Screen Designer”. Por defecto, una ventana contiene una barra de título estándar; botones para Minimizar, Maximizar y Cerrar; y un borde ajustable. La barra de título contiene el nombre del proyecto, el nombre del programa, y el nombre del archivo de la screen. El “Screen Designer” permite crear ventanas en entorno gráfico y carácter. La aplicación puede contener ventanas graficas y de carácter, puesto que la función de generación automática de código, crea el código para las etiquetas de los dos tipos de ventanas diferenciándolas en la “Screen Section”. Una “screen form” es una cuadricula WYSIWYG (What You See Is What You Get - lo que tú ves es lo que tú obtienes), en la cual se desarrolla una ventana de aplicación gráfica o de carácter y que hace parte de su aplicación de interfaz de usuario. Similar a los controles, una “screen form” tiene propiedades y eventos que se pueden aplicar de acuerdo a las necesidades de diseño. Las propiedades especificadas para la “screen form” llegarán a ser las propiedades de la ventana en su programa COBOL.

• La caja de Componentes – “Component Toolbox”.

El “Component Toolbox” es el área del workbench que contiene iconos para los controles que usted coloca en la “screen form”, cuando crea las ventanas gráficas. La caja de herramientas se divide en dos secciones. La primera sección contiene controles estándar, y usted puede verlos haciendo clic en el botón “Standard”. Algunos controles estándar son soportados en ambos entornos, grafico y carácter. Los iconos que no son soportados para sistemas de ambiente carácter no serán habilitados en el “toolbox” cuando trabaje en formas de ventanas de ambiente carácter. La otra sección contiene controles ActiveX, visualizándolos haciendo clic en el botó “Actives”. Los controles ActiveX estarán disponibles únicamente para entornos de ambiente gráfico. • Los controles estándar - “Standard Control”. Los controles estándar y elementos gráficos que aparecen en el “Component Toolbox” son descritos en la siguiente tabla:

Page 37: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 37 de 125

Icono Elemento Descripción

Selector Limpia la selección de un control en el “Component

Toolbox” y permite seleccionar, mover, y cambiar el tamaño de los controles en una ventana.

Label Permite ingresar una etiqueta de texto (como un

encabezado o título) y no puede ser modificado por le usuario.

Push Button Dibuja un rectángulo acompañado con una etiqueta de texto para que cuando el usuario haga clic efectué una acción (Ej. Botón “Aceptar” o “Cancelar”).

Entry Field Dibuja un campo rectangular en el cual el usuario puede

ingresar texto o datos.

Check Box Crea una caja acompañada de una etiqueta de texto, en

la cual el usuario puede hacer clic para seleccionar o deseleccionar una opción. Normalmente un Check box se usa para una opción combinada que pueda ser activada o desactivada.

Radio Button Crea un botón circular acompañado de una etiqueta de

texto, este control es excluyente, es decir, solo permite seleccionar uno en un grupo de controles Radio Button.

Scroll Bar Dibuja un rectángulo que contiene una caja de

desplazamiento y unas flechas de desplazamiento en cada punta. El usuario típicamente usa una barra de desplazamiento para navegar a través de la información de una lista, sin embargo una barra de desplazamiento puede servir como un dispositivo de entrada.

Combo Box Crea un control de una caja combinada de edición y lista. El usuario puede seleccionar un ítem de la lista o ingresar texto en la caja de edición.

Bitmap Especifica un área para visualizar una imagen gráfica en

formato ("*.bmp", "*.dib", "*.jpg", "*.jpe", "*.jpeg").

Bar Permite dibujar una línea vertical u horizontal.

Frame Dibuja una caja usada para agrupar un conjunto de

controles. Puede colocar controles dentro de los frames para separarlos visualmente de otros controles.

List Box Crea un rectángulo conteniendo una lista de Ítem los

cuales el usuario puede seleccionar. Si hay varios ítem en la lista, el usuario puede navegar usando una barra de desplazamiento vertical u horizontal

Menu Designer Crea una barra de menú para una ventana. Los menús

pueden estar compuestos de títulos de menú, ítem de menú y barras de separación. Cuando hace doble clic en el icono “Menu Designer” en la ventana, el cuadro de dialogo del menú es visualizado. Este dialogo permite adicionar, borrar, mover o renombrar un ítem.

Toolbar Designer Crea una colección de controles organizados en una barra de herramientas. El “toolbar” aparece debajo del “Menu Bar” (si ha sido creado), o en el borde superior de la ventana si el “Menu Bar” no existe.

Tab Crea un control el cual combina una caja con una

etiqueta que simula el aspecto de un archivo de carpetas. El usuario puede hacer clic en cualquier

Page 38: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 38 de 125

pestaña para traerla al frente.

Grid Crea una tabla Bi-dimensional de archivos de datos.

Cada elemento de esta tabla, es llamado una “celda” , puede contener texto, imagen o ambas.

Tree View Crea una lista de datos jerárquicos, similar a la vista que

usted tiene cuando ejecuta el Explorador de Windows. Esta lista es endentada para mostrar la relación en los datos.

Browser Permite al usuario tener una vista de la ventana principal

de Internet Explorer en una ventana creada por el desarrollador. Permite una gran funcionalidad para visualizar páginas web con contenido HTML, Scrip, controles ActiveX y contenidos Java applet. Este control también alberga y soporta documentos OLE, hipervínculos y objetos Windows, como archivos y carpetas.

Status Bar Crea una barra de estado al final de su ventana.

• Los controles ActiveX

AcuBench provee soporte para la inclusión de controles ActiveX de programas que corren bajo Microsoft Windows. Los controles ActiveX que sean incluidos en su programa deben ser instalados y licenciados de acuerdo con los requerimientos del vendedor en su sistema de desarrollo y en cada sistema que sea instalado su programa. Si desea obtener más información al respecto remítase al manual en línea de AcuBench en su apartado sobre controles ActiveX.

• La ventana de propiedades – “Property Window”.

La ventana de propiedades es su interfase para controlar la apariencia y comportamiento de la forma o controles seleccionados de su ventana. Puede personalizar o cambiar la fuente de la ventana de propiedades presionando el botón derecho del mouse en la ventana y luego seleccionado la opción “Font”. Este comando muestra el cuadro de dialogo de fuentes, desde el cual puede seleccionar una fuente diferente. También puede visualizar u ocultar la ventana de propiedades seleccionado el comando “View/Property Window” o presionando el botón derecho del mouse y seleccionando la opción “Hide”. De igual forma puede mover la ventana desde su posición por defecto (lado derecho del workbench) o cambiándola a una posición flotante seleccionando el botón derecho del mouse en la ventana y luego presionar el comando “Allow Docking”.

Page 39: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 39 de 125

• Visión general de los controles gráficos ACUCOBOL-GT permite crea, mostrar y procesar controles gráficos. Los controles gráficos son también llamados objetos gráficos o widgets. Los controles gráficos tienen varios componentes importantes: Cada control es de un tipo fundamental, como un push button o check box

(este es también llamado un control de clase). Cada control tiene un handle o manejador que distingue o es asociado a un

control único. Cada control tiene un conjunto de propiedades comunes, definidas para el

control mismo. Las propiedades comunes que aplican a virtualmente todo los controles incluyen:

Page 40: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 40 de 125

1. location: Cada control tiene una localización en la ventana. La localización esta dada en coordenadas de filas y columnas, especificadas a partir de la esquina superior izquierda del control en la ventana. Para un entorno no-gráfico se utilizan las propiedades CLINE y CCOL para ubicar la posición de un control.

2. size: Los controles tiene información de tamaño. El tamaño de la información es dado en ancho y alto. El significado exacto del ancho y alto depende del tipo de control. Algunos tipos de control tienen un tamaño predefinido (en una o dos dimensiones). Las coordenadas en ambiente carácter CSIZE y CLINES son usadas para especificar el tamaño de un control alterno en un ambiente no-gráfico.

3. titles Algunos controles pueden tener títulos. Usualmente aparece como una etiqueta de texto pegada al control. Un ejemplo de ello, es el texto incluido en un push button o el texto dentro de un check box. Algunos controles, como un entry field, no usan títulos.

4. value Un control también tiene un valor. El valor de un control El valor de un control es la porción modificable por usuario de ese control. Para un entry field, este es un texto ingresado dentro de la caja. Para check box, el valor es, sí la caja es activada o no. Algunos controles, como un push button, no tienen valores. El rango exacto de valores permitidos esta dado por el tipo de control.

5. color Los controles tiene color. Para el primer plano (foreground) y el plano de fondo (background) aplican los colores. El contenido exacto de la información del color depende del tipo de control. Algunos controles o host systems pueden limitar la opción del color.

6. font Algunos controles tienen una fuente que es usada cuando el texto es visualizado en conjunto con el control.

7. styles Controles tienen propiedades de estilos. Típicamente afectan la presentación visual del control. Por ejemplo, un push button puede tener el estilo DEFAULT, causando que el push button contenga un borde grueso el cual indica que es un botón por defecto.

Existen algunas propiedades comunes que determinan cuando un control es mostrado (VISIBLE), cuando un control puede interactuar con el usuario (ENABLED), o cuando un control tiene una tecla clave la cual el usuario puede activar con el teclado. Por ejemplo (Ctrl + S).

• Propiedades Especiales Algunos estilos aplican para todos los controles. Sin embargo, cada control tiene propiedades especiales, las cuales se verán a lo largo del curso, por ahora las mencionamos para que el estudiante se familiarice con los términos.

Tipo de Control Propiedad especial Label LABEL-OFFSET (numérico) Entry field MAX-TEXT (numérico)

Page 41: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 41 de 125

MAX-LINES (numérico) CURSOR (numérico) CURSOR-COL (numérico) CURSOR-ROW (numérico) ACTION (numérico) MIN-VAL (numérico) MAX-VAL (numérico) SELECTION-TEXT (alfanumérico) AUTO-DECIMAL (numérico)

Push Button BITMAP-NUMBER (numérico) BITMAP-HANDLE (handle) TERMINATION-VALUE (numérico) EXCEPTION-VALUE (numérico)

Check Box BITMAP-NUMBER (numérico) BITMAP-HANDLE (handle) TERMINATION-VALUE (numérico) EXCEPTION-VALUE (numérico)

Radio Button BITMAP-NUMBER (numérico) BITMAP-HANDLE (handle) TERMINATION-VALUE (numérico) EXCEPTION-VALUE (numérico) GROUP (numérico) GROUP-VALUE (numérico)

List Box ITEM-TO-ADD (alfanumérico) RESET-LIST (numérico) MASS-UPDATE (numérico) ITEM-TO-DELETE (numérico) INSERTION-INDEX (numérico) SEARCH-TEXT (alfanumérico) DATA-COLUMNS (numérico) DISPLAY-COLUMNS (numérico) ALIGNMENT (alfanumérico) SEPARATION (separación) DIVIDERS (numérico) SELECTION-INDEX (numérico) THUMB-POSITION (numérico) QUERY-INDEX (numérico) ITEM-VALUE (alfanumérico) TERMINATION-VALUE (numérico) EXCEPTION-VALUE (numérico)

Combo Box MAX-TEXT (numérico) ITEM-TO-ADD (alfanumérico) MASS-UPDATE (numérico) RESET-LIST (numérico) ITEM-TO-DELETE (numérico) INSERTION-INDEX (numérico) TERMINATION-VALUE (numérico) EXCEPTION-VALUE (numérico)

Frame HIGH-COLOR (numérico) LOW-COLOR (numérico) FILL-COLOR (numérico) FILL-PERCENT (numérico) FILL-COLOR2 (numérico) TITLE-POSITION (numérico)

Bar WIDTH (numérico) (Windows únicamente) COLORS (numérico) (Windows únicamente) SHADING (numérico) (Windows únicamente) POSITION-SHIFT (numérico) (Windows únicamente) TRAILING-SHIFT (numérico) (Windows únicamente) LEADING-SHIFT (numérico) (Windows únicamente)

Page 42: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 42 de 125

Scroll Bar MIN-VAL (numérico) MAX-VAL (numérico) PAGE-SIZE (numérico)

Tab TAB-TO-ADD (alfanumérico) TAB-TO-DELETE (numérico) RESET-TABS (numérico) BITMAP-HANDLE (numérico) BITMAP-WIDTH BITMAP-NUMBER

Bitmap BITMAP-HANDLE (numérico) BITMAP-NUMBER (numérico) BITMAP-START (numérico) BITMAP-END (numérico) BITMAP-TIMER (numérico)

Grid ACTION (numérico) ALIGNMENT (alfanumérico) BITMAP (numérico) BITMAP-NUMBER (numérico) BITMAP-TRAILING (numérico) BITMAP-WIDTH (numérico) CELL-COLOR (numérico) CELL-DATA (alfanumérico) CELL-FONT (numérico) COLUMN-COLOR (numérico) COLUMN-DIVIDERS (numérico) COLUMN-FONT (numérico) CURSOR-COLOR (numérico) CURSOR-FRAME-WIDTH (numérico) CURSOR-X (numérico) CURSOR-Y (numérico) DATA-COLUMNS (numérico) DATA-TYPES (alfanumérico) DISPLAY-COLUMNS (numérico) DIVIDER-COLOR (numérico) DRAG-COLOR (numérico) END-COLOR (numérico) FILE-POS (numérico) HEADING-COLOR (numérico) HEADING-DIVIDER-COLOR (numérico) HEADING-FONT (numérico) HIDDEN-DATA (alfanumérico) HSCROLL-POS (numérico) INSERT-ROWS (numérico) INSERTION-INDEX (numérico) LAST-ROW (numérico) MASS-UPDATE (numérico) NUM-COL-HEADINGS NUM-ROWS (numérico) RECORD-DATA (alfanumérico) RECORD-TO-ADD (alfanumérico) RECORD-TO-DELETE (numérico) REGION-COLOR (numérico) RESET-GRID (numérico) ROW-COLOR (numérico) ROW-COLOR-PATTERN (numérico) ROW-DIVIDERS (numérico) ROW-FONT (numérico) SEARCH-OPTIONS (alfanumérico) SEARCH-TEXT SEPARATION (numérico)

Page 43: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 43 de 125

START-X (numérico) START-Y (numérico) VIRTUAL-WIDTH (numérico) VPADDING (numérico) VSCROLL-POS (numérico) X (numérico) Y (numérico)

Tree View BITMAP-HANDLE (numérico) BITMAP-NUMBER (numeric) BITMAP-WIDTH (numérico) ENSURE-VISIBLE (numérico) EXPAND (numérico) HAS-CHILDREN (numérico) HIDDEN-DATA (alphanumérico) ITEM (numérico) ITEM-TEXT (alphanumérico) ITEM-TO-ADD (alphanumérico) ITEM-TO-DELETE (numérico) ITEM-TO-EMPTY (numérico) NEXT-ITEM (numérico) PARENT (numérico) PLACEMENT (numérico) RESET-LIST (numérico)

Status Bar PANEL-WIDTHS (numeric) PANEL-STYLE (numeric) PANEL-TEXT (alphanumeric) PANEL-INDEX (numeric)

Page 44: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 44 de 125

Laboratorio 3.2

Hasta ahora... Reconoce e identifica la caja de componentes y su contenido, entendiendo el concepto de controles gráficos .

Objetivos Pegar algunos controles gráficos. Identificar los controles creados en la ventana gráfica. Asociar validaciones y comportamientos a los controles Asociar algunos controles al archivo de datos “CLIENTES”.

Tareas generales Cree una carpeta bajo “C:\CAPACITACION”, llamada “Datos”.

Por la opción Project\Settings, añada una nueva variable de entorno en la pestaña Environment, llamada FILE_PREFIX, con el valor .\Datos.

Asígnele los siguientes valores a la ventana SIZE = 50 LINES = 30 Type = Standard Title = Clientes

Cree un “Label” y en título escriba “Código”. Cree un “Entry Field”. Asocie el contenido del archivo de datos al Entry Field, creado y

asigne las propiedades correspondientes. Cree un Push button llamado “Salir” Asocie el estilo “Cancel Button”. Genere y ejecute la aplicación, verificando las validaciones y el

comportamiento de los botones.

Page 45: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 45 de 125

Visión General de los Eventos

Este capitulo describe los eventos que pueden ser generados cuando utiliza una ventana gráfica y controles en un entorno de eventos-conducidos. Los Eventos son clasificados en comandos de eventos, notificación de eventos y mensajes. Comúnmente hablando los eventos corresponden a acciones dadas por el usuario que el programa necesita para ejecutarse (por ejemplo, cerrar una ventana o presionar un botón). Los Comandos de evento inician con el Prefijo "CMD". Notificación de evento con "NTF", y mensajes con "MSG". Cuando un comando o una notificación de un evento ocurre, el runtime del sistema asigna un valor al ítem EVENT STATUS y en ese momento termina el actual ACCEPT con un valor de excepción de "96". Nótese que la terminación ocurre cuando la declaración particular ACCEPT, no permita normalmente excepciones. El programa examina el ítem EVENT STATUS para determinar que ha sucedido. La frase EVENT STATUS es definida de la siguiente forma: 01 EVENT-STATUS. 03 EVENT-TYPE PIC X(4) COMP-X. 03 EVENT-WINDOW-HANDLE USAGE HANDLE OF WINDOW. 03 EVENT-CONTROL-HANDLE USAGE HANDLE. 03 EVENT-CONTROL-ID PIC XX COMP-X. 03 EVENT-DATA-1 USAGE SIGNED-SHORT. 03 EVENT-DATA-2 USAGE SIGNED-LONG. 03 EVENT-ACTION PIC X COMP-X. Existen eventos para las ventanas – Windows Events, para los controles – Control Event, y para los menús – Menú Events.

• Eventos de ventanas – (Windows Events).

Los valores EVENT-CONTROL-HANDLE y EVENT-CONTROL-ID serán siempre cero (NULL) cuando un evento de ventana ocurre. Los valores retornados son almacenados como enteros con signo (signed) y pueden retornar valores negativos. CMD-CLOSE Valor 1

Este evento indica que el usuario ha seleccionado la opción cerrar desde el menú del

Page 46: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 46 de 125

sistema de la ventana activa. La aplicación podría responder ocultando o destruyendo la ventana. El item EVENT-WINDOW-HANDLE contiene el manejador (handle) de la ventana que el usuario desea cerrar. Los valores EVENT-DATA-1 y EVENT-DATA-2 no son usados. Las ventanas flotantes (floating) siempre retornan la excepción CMD-CLOSE.

CMD-ACTIVATE Valor 6 Este evento ocurre cuando una ventana es activada por el usuario, pero unicamente si la ventana previa pertenece al mismo programa. (p.e., el usuario intercambia ventanas dentro del programa, y no transfiere el control desde otro programa). La respuesta normal es un ACCEPT en la nueva ventana activa, construyendo en la ventana activa del programa un punto de partida. Si utiliza cualquiera de las opciones LINK o BIND TO THREAD cuando crea una ventana, el runtime puede automáticamente manejar este evento. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

NTF-RESIZED Valor 4114 Este evento ocurre cuando una ventana reajustable no tiene la opción AUTO-RESIZE. La aplicación típicamente reconstruye la ventana en respuesta al evento. EVENT-DATA-1 contiene el nuevo alto y EVENT-DATA-2 contiene el nuevo ancho, ambos son medidos en centésimas de celdas (p.e. un ancho de 80 columnas en la ventana es expresado como "8000"). Use el verbo INQUIRE para obtener las nuevas dimensiones.

MSG-CLOSE Valor 16415 Este evento ocurre cuando el usuario hace clic en Cerrar del dialogo del menú del sistema de Windows, o teclea en el host system la secuencia de teclas para cerrar una aplicación (Alt-F4 para Windows).

• Eventos de Controles – (Control Events).

Los siguientes eventos son asociados con los controles: CMD-CLICKED Valor 4

Este evento ocurre para los siguientes controles: push button, check box, y radio button, aunque NOTIFY no sea especificado. Especificando NOTIFY crea un evento de terminación para check boxes y radio button. CMD-CLICKED es un evento de terminación para push button. Los valores EVENT-DATA-1 y EVENT-DATA-2 no son usados.

CMD-DBLCLICK Valor 5 Indica que el usuario ha hecho doble clic sobre un ítem en un list-box o combo-box (retorna este evento), siempre y cuando este control no tenga un TERMINATION-VALUE o EXCEPTION-VALUE asociado. Esto ocurre si la aplicación tiene NOTIFY-DBLCLICK. EVENT-DATA-1 es el índice del ítem seleccionado en la lista (comenzando en "1"). EVENT-DATA-2 no se usa.

CMD-GOTO Valor 3 Indica que el usuario activa el control que genera el evento. Esto sucede cuando el usuario hace clic en un control inactivo con el mouse o teclea un conjunto de teclas asignado. La aplicación desempeña un ACCEPT normal en respuesta al control. (Generalmente no es una buena técnica de programación controlar el evento CMD-GOTO, porque esta impidiendo que el control se desempeñe normalmente). Los valores EVENT-DATA-1 y EVENT-DATA-2 no son usados.

CMD-HELP Valor 8

Page 47: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 47 de 125

Este evento ocurre cuando la ayuda es requerida desde el control descrito en EVENT-CONTROL-HANDLE. El ID del control de ayuda es almacenado en EVENT-DATA-2 (este valor es cero si el control no tiene un help ID). Puesto que este evento es manejado por el Runtime, no es un evento de terminación en su programa. Sin embargo, puede detectar este evento en el procedimiento de control de eventos. También puede manejar este evento dentro del procedimiento de eventos y prevenir el manejo automático por el runtime, configurando el elemento EVENT-ACTION-CONTINUE del ítem de datos EVENT-STATUS.

CMD-TABCHANGED Valor 7 Este evento ocurre cuando el usuario selecciona una nueva pestaña desde un control TAB. El valor de la pestaña seleccionada es almacenado en EVENT-DATA-1. Distinto a algunos eventos, realiza cualquier validación especificada en el ACCEPT, y en los campos actuales cuando un AFTER PROCEDURE es ejecutado antes de un EXCEPTION PROCEDURE. Este evento se asegura que el usuario no pueda usar el control TAB para salir de una forma cuando contiene datos invalidos. EVENT-DATA-2 no es usado.

MSG-AX-EVENT Valor 16436 Este evento ocurre cuando un control ActiveX ha lanzado un evento. EVENT-DATA-2 contiene el tipo de evento del control ActiveX. Dos pares de rutinas de librerias C$GETEVENTDATA/C$SETEVENTDATA y C$GETEVENTPARAM/C$SETEVENTPARAM son usadas para obtener y fijar el parametro de evento.

MSG-BEGIN-DRAG Valor 16406 Este es generado cuando un usuario comienza el avance en un control grid mientras presiona el botón izquierdo del mouse. Es generado únicamente para celdas sin encabezado e inmediatamente antes del primer evento correspondiente a MSG-GOTO-CELL-DRAG. EVENT-DATA-1 contiene el número de la columna de la celda donde el usuario comienza el avance del mouse, y EVENT-DATA-2 contiene la número de la fila de la celda. Las propiedades X y Y son fijadas mientras dure el evento. Las propiedades START-X y START-Y son también fijados por estos valores ("X" y "Y," son retenidos después que el evento ha finalizado).

MSG-BEGIN-ENTRY Valor 16392 Este evento ocurre cuando el usuario inicia una modificación de una celda en un control grid. EVENT-DATA-1 contiene el número de la columna de la celda, y EVENT-DATA-2 contiene el número del registro. Por conveniencia, las propiedades X y Y son fijadas por el cursor de la celda durante la duración del evento. Esto le permite obtener fácilmente una imagen antes de efectuar un INQUIRE en un CELL-DATA. Puede validar el ingreso de datos en una celda fijando el valor EVENT-ACTION a EVENT-ACTION-FAIL.

MSG-BITMAP-CLICKED Valor 16400 Este evento ocurre cuando el usuario hace clic en el botón izquierdo en el contenido de un bitmap en un control grid. EVENT-DATA-1 contiene el número de la columna de la celda, y EVENT-DATA-2 contiene el número del registro de la celda. Por conveniencia, las propiedades X y Y son fijadas por el cursor de la celda durante la duración del evento. Puede validar la acción en una celda fijando el valor EVENT-ACTION a EVENT-ACTION-FAIL.

MSG-BITMAP-DBLCLICK Valor 16401 Este evento ocurre cuando el usuario hace doble clic en un bitmap contenido en un

Page 48: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 48 de 125

control grid. EVENT-DATA-1 contiene el número de la columna de la celda, y EVENT-DATA-2 contiene el número del registro de la celda. Por conveniencia, las propiedades X y Y son fijadas por el cursor de la celda durante la duración del evento. Puede validar la acción en una celda fijando el valor EVENT-ACTION a EVENT-ACTION-FAIL.

MSG-BEGIN-HEADING-DRAG Valor 16408 Este es generado cuando un usuario comienza el avance en un control grid mientras presiona el botón izquierdo del mouse. Únicamente para celdas de encabezado e inmediatamente antes del primer evento correspondiente a MSG-HEADING-DRAGGED. EVENT-DATA-1 contiene el número de la columna de la celda donde el usuario comienza el avance del mouse, y EVENT-DATA-2 contiene la número de la fila de la celda. Las propiedades X y Y son fijadas mientras dure el evento. Las propiedades START-X y START-Y son también fijados por estos valores ("X" y "Y," son retenidos después que el evento ha finalizado).

MSG-CANCEL-ENTRY Valor 16394 Este evento ocurre cuando el usuario sale del modo de edición de una celda en un control grid, presionando la tecla “Esc”. El contenido de la celda es restaurado al contenido antes de ingresar a la celda. EVENT-DATA-1 contiene el número de la columna de la celda, y EVENT-DATA-2 contiene el número del registro de la celda.

MSG-COL-WIDTH-CHANGED Valor 16410 Ocurre cuando el usuario cambia el ancho de una columna en un control grid. Para que esto ocurra, el grid debe tener el estilo ADJUSTABLE-COLUMNS y debe tener únicamente una fila por registro. EVENT-DATA-1 contiene el número de la columna desde donde se inicia el cambio. EVENT-DATA-2 contiene el nuevo ancho (en caracteres).

MSG-END-DRAG Valor 16407 Este evento indica que el usuario ha soltado el botón del mouse después de avanzar durante una operación normal (no encabezado) en un control grid. EVENT-DATA-1 contiene el número de la columna de la celda donde el usuario finalizó el avance del mouse. EVENT-DATA-2 contiene el número de la fila de la celda.

MSG-END-HEADING-DRAG Valor 16409 Este evento indica que el usuario ha soltado el botón del mouse después de avanzar durante una operación normal en un encabezado de un control grid. EVENT-DATA-1 contiene el número de la columna de encabezado de la celda donde el usuario finalizó el avance del mouse. EVENT-DATA-2 contiene el número de la fila de encabezado de la celda.

MSG-FINISH-ENTRY Valor 16393 Este evento ocurre cuando el usuario finaliza la edición de una celda en un control grid. Puede utilizarlo para validar el contenido y formateo de cualquier celda de datos. EVENT-DATA-1 contiene el número de la columna de la celda, y EVENT-DATA-2 contiene el número del registro. Por conveniencia, las propiedades X y Y son fijadas por el cursor en la celda, durante la duración del evento. Esto permite recuperar el dato completo, utilizando el verbo INQUIRE en un CELL-DATA. Para modificar el dato realice la obtención del dato con el verbo INQUIRE en un CELL-DATA, luego modifique la información, y finalmente utilice el verbo MODIFY CELL-DATA para cargar el dato modificado. Puede validar el dato ingresado por el usuario y forzar a que el cursor quede fijo en la

Page 49: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 49 de 125

celda donde se encuentra el dato invalido, para ello utilice la siguiente instrucción EVENT-ACTION to EVENT-ACTION-FAIL.

MSG-GOTO-CELL Valor 16395 Este evento es generado cuando el usuario mueve el cursor, utilizando el teclado, a una nueva celda en control grid. EVENT-DATA-1 contiene el número de la columna de la celda donde se inicio el movimiento, y EVENT-DATA-2 contiene el numero del registro de la celda. Puede deteminar cual celda el usuario esta moviendo utilizando el verbo INQUIRE junto con CURSOR-X y CURSOR-Y.

MSG-GOTO-CELL-DRAG Valor 16404 Este es generado cuando el usuario mueve el mouse en un nuevo control grid mientras presiona el botón izquierdo del mouse. Ocurre únicamente si el usuario hace clic en una celda que no sea encabezado.

MSG-GOTO-CELL-MOUSE Valor 16396 Este evento es generado cuando el usuario mueve el cursor en una celda de un control grid utilizando el mouse. Este evento es similar a MSG-GOTO-CELL, que genera un mensaje cuando el cursor es movido por el teclado. Una razón para querer controlar el movimiento que realiza el usuario en el grid, es prevenir el ingreso a una determinada celda ya sea utilizando el teclado o el mouse, o, ubicar el cursor en una celda especifica.

MSG-GRID-RBUTTON-DOWN Valor 16426 Este evento ocurre en el control grid cuando el usuario oprime el botón derecho del mouse. EVENT-DATA-1 es fijado con el número de la columna de la celda seleccionada, EVENT-DATA-2 es fijado con el número de la fila. Si el clic derecho es realizado fuera de una celda, estos valores serán cero.

MSG-GRID-RBUTTON-UP Valor 16427 Este evento ocurre cuando el usuario libera o suelta el botón derecho del mouse. El evento se comporta de la misma forma que el evento MSG-GRID-RBUTTON-DOWN descrito anteriormente. Una vez este evento finaliza el proceso, un menú pop-up asociado con el grid es visualizado. Una forma en la cual usted puede usar este evento, es seleccionando un apropiado menú pop-up dependiendo de la celda seleccionada. Por ejemplo, usted desearía poder asignar diferentes ventanas pop-up para el encabezado del cuerpo de un grid . Usted puede examinar la celda seleccionada y asociar el apropiado menú pop-up para el control.

MSG-HEADING-CLICKED Valor 16402 Este evento ocurre cuando el usuario hace clic con el botón izquierdo en una fila o columna de encabezado. EVENT-DATA-1 contiene el número de la columna y EVENT-DATA-2 contiene el número de registro de la celda.

MSG-HEADING-DBLCLICK Valor 16403 Este evento ocurre cuando el usuario hace doble-clic con el botón izquierdo en una fila o columna de encabezado. EVENT-DATA-1 contiene el número de la columna y EVENT-DATA-2 contiene el número de registro de la celda.

MSG-HEADING-DRAGGED Valor 16405 Este evento ocurre cuando el usuario mueve el mouse dentro de una celda de encabezado mientras presiona el botón izquierdo del mouse. Este evento es

Page 50: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 50 de 125

generado únicamente cuando el usuario hace clic primero en una celda de encabezado. Si el usuario hace clic en un encabezado, y luego arrastra el mouse sobre una celda de no-encabezado, MSG-HEADING-DRAGGED es generado y el cercano encabezado de celda es usado. EVENT-DATA-1 contiene el número de la columna y EVENT-DATA-2 contiene el número de la celda.

MSG-PAGED-FIRST Valor 16423 Este evento ocurre para los grid con estilo PAGED. Indica que el usuario ha hecho clic en el botón "First Page" (se genera presionando el botón “Previous Record”, en conjunto con la tecla “Shift” o “Mayúscula”). El runtime responde a este evento posicionando el puntero del registro al inicio del origen de datos. Asumiendo que el archivo de origen es un archivo indexado, una declaración START fija el puntero del registro a fin de que un READ NEXT pueda recuperar el primer registro en el archivo. Si usted fija EVENT-ACTION to EVENT-ACTION-NORMAL (este es el valor por defecto), ocurre lo siguiente después que finaliza el evento. 1. El control es descargado de datos, excepto para cualquier columna de

encabezado; y 2. El control genera un evento de valor de página MSG-PAGED-NEXT para llenar la

primera página de datos. Si usted optó por llenar la primera página de si mismo en respuesta a este acontecimiento, fije EVENT-ACTION a EVENT-ACTION-COMPLETE para informarle al grid que no es necesario generar el evento MSG-PAGED-NEXT para llenar la primera página. Si no puede comenzar al inicio de la página (porque el archivo se encuentra vacío), fije EVENT-ACTION a EVENT-ACTION-FAIL.

MSG-PAGED-LAST Valor 16424 Este evento ocurre para los grid con estilo PAGED. Indica que el usuario ha hecho clic en el botón "Last Page" (se genera presionando el botón “Next Record”, en conjunto con la tecla “Shift” o “Mayúscula”). Este trabaja de la misma manera que el evento MSG-PAGED-FIRST descrito anteriormente. Usted posiciona el origen de datos para que un evento MSG-PAGED-PREV recupere el último registro, y el grid administre el resto. Vea MSG-PAGED-FIRST y MSG-PAGED-PREV.

MSG-PAGED-NEXT Valor 16419 Este evento ocurre para los grid con estilo PAGED. Indica que el usuario ha hecho clic en el botón "Next Record". La respuesta esperada desde el runtime es el de suministrar el siguiente registro después del fin de los datos actuales del grid. Para hacer esto adicione un registro nuevo al final del grid (usando RECORD-TO-ADD). Si el dato es de un archivo indexado, el valor de EVENT-DATA-2 es el número de READ NEXTs necesarios para obtener los registros apropiados. Este valor es controlado por la propiedad FILE-POS. Si no puede obtener el próximo registro (porque usted ha alcanzado el fin del archivo), responda fijando EVENT-ACTION a EVENT-ACTION-FAIL. Cuando haga esto no recibirá más eventos MSG-PAGED-NEXT.

MSG-PAGED-NEXTPAGE Valor 16421 Este evento ocurre para los grid con estilo PAGED. Indica que el usuario ha hecho clic en el botón "Next Page". Si usted no define una acción específica cuando este

Page 51: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 51 de 125

evento ocurra, El grid implementa la lógica por si mismo generando un valor de página del evento MSG-PAGED-NEXT.

Esto es hecho con el MASS-UPDATE internamente fijando un valor diferente a cero. Si usted desea suministrar la lógica agregando código para manejar este evento, fije EVENT-ACTION a EVENT-ACTION-COMPLETE. Este estado-acción informa al grid que no es posible generar el evento MSG-PAGED-NEXT porque "Next Page" ha sido realizado.

MSG-PAGED-PREV Valor 16420 Este evento ocurre para los grid con estilo PAGED. Indica que el usuario ha hecho clic en el botón "Previous Record". La respuesta esperada del runtime será suministrar el registro antes del primer registro de los datos actuales del grid.

Para hacer esto adicione un registro nuevo al final del grid (usando RECORD-TO-ADD para adicionar el registro e INSERTION-INDEX para posicionar el registro antes de la primera fila de datos y asegurese que el registro no es insertado antes de cualquier columna de encabezado en el grid). Si el dato es de un archivo indexado, el valor de EVENT-DATA-2 es el número de declaraciones READ PREVIOUS, necesarios para obtener los registros apropiados.

Este valor es controlado por la propiedad FILE-POS. Si no puede suministrar el registro (porque usted ha alcanzado el inicio del archivo), responda fijando EVENT-ACTION a EVENT-ACTION-FAIL. Cuando usted haga esto no recibira más eventos MSG-PAGED-PREV.

MSG-PAGED-PREVPAGE Valor 16422 Este evento ocurre para los grid con estilo PAGED. Indica que el usuario ha hecho clic en el botón "Previous Page". Este trabaja de la misma manera al evento MSG-PAGED-NEXTPAGE descrito anteriormente. Aunque este evento puede ser ignorado, usted podría suministrar una acción específica en respuesta a este evento. Vea MSG-PAGED-NEXTPAGE para detalles.

MSG-SB-NEXT Valor 16385 Este evento ocurre cuando el usuario hace clic en el botón bajo/derecho en un control scroll bar. Cuando el mensaje de evento es enviado al control, el programa puede responder fijando el control en una nueva posición.

EVENT-DATA-1 y EVENT-DATA-2 no son usados. MSG-SB-NEXTPAGE Valor 16387

Este evento ocurre cuando el usuario hace clic en la región baja/derecha en un control scroll bar. Cuando el mensaje de evento es enviado al control, el programa puede responder fijando el control en una nueva posición.

EVENT-DATA-1 y EVENT-DATA-2 no son usados. MSG-SB-PREV Valor 16386

Este evento ocurre cuando el usuario hace clic en el botón superior/izquierdo en un control scroll bar. Cuando el mensaje de evento es enviado al control, el programa puede responder fijando el control en una nueva posición.

EVENT-DATA-1 y EVENT-DATA-2 no son usados. MSG-SB-PREVPAGE Valor 16388

Este evento ocurre cuando el usuario hace clic en la región superior/izquierda en un

Page 52: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 52 de 125

control scroll bar. Cuando el mensaje de evento es enviado al control, el programa puede responder fijando el control en una nueva posición. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

MSG-SB-THUMB Valor 16389 Este evento ocurre cuando el usuario reposiciona el dispositivo deslizante de un control scroll bar. Cuando el mensaje de evento es enviado al control, el programa puede responder fijando el control en una nueva posición. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

MSG-SB-THUMBTRACK Valor 16390 Este evento ocurre cuando el usuario mueve el dispositivo deslizante del control scroll bar que tiene el estilo TRACK-THUMB. Cuando el mensaje de evento es enviado al control, el programa en respuesta no reestablece la posición del control. EVENT-DATA-2 contiene la nueva posición. EVENT-DATA-1 no es usado. Este mensaje es el único que no cambia la posición de deslizamiento.

MSG-SPIN-DOWN Valor 16417 Este evento ocurre cuando el usuario hace clic en la flecha inferior de un control Entry Field con el estilo SPINNER. El programa responde a MSG-SPIN-DOWN decrementando el valor del campo de entrada por un valor específico, no necesariamente 1. Si el campo de entrada tiene un estilo AUTO-SPIN, usted puede fijar EVENT-ACTION a EVENT-ACTION-FAIL para prevenir que el control decremente el valor por si mismo.

MSG-SPIN-UP Valor 16416 Este evento ocurre cuando el usuario hace clic en la flecha superior de un control Entry Field con el estilo SPINNER. El programa responde a este evento incrementando el valor del campo de entrada. No es limitado para incrementar el valor de uno en uno. Puede incrementar el valor del campo tomando el valor actual del campo y modificándolo por el valor deseado. Si el campo de entrada tiene un estilo AUTO-SPIN, usted puede fijar EVENT-ACTION a EVENT-ACTION-FAIL para prevenir que el control incremente el valor por si mismo.

MSG-TV-DBLCLICK Valor 16428 Este evento ocurre cuando el usuario hace doble-clic en un ítem de un control Tree-View control que no tiene dependientes. Los Ítem que tienen dependientes se expanden o contraen cuando es hecho un doble-clic. El ID de el ítem es almacenado en EVENT-DATA-2. Puede fijar EVENT-ACTION a EVENT-ACTION-IGNORE para inhibir el manejo interno del control ente un evento de doble-clic. Esto se utiliza si usted desea transferir el control a una nueva ventana en respuesta al doble-clic. Si usted crea el código para mostrar una nueva ventana pero el evento no es ignorado, el manejo interno del control desactiva su nueva ventana.

MSG-TV-EXPANDED Valor 16414 Este evento ocurre cuando un Ítem en un control Tree View es expandido o contraído. El ID del predecesor es almacenado en EVENT-DATA-2. Uno de los

Page 53: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 53 de 125

siguientes dos valores boléanos es almacenado en EVENT-DATA-1: TVFLAG EXPAND Ítem expandido mostrando el dependiente. TVFLAG COLLAPSE Ítem contraído ocultando el dependiente.

MSG-TV-EXPANDING Valor 16413 Este evento ocurre cuando un Ítem en un control Tree View esta a punto de ser expandido o contraído. EVENT-DATA-1 y EVENT-DATA-2 son fijados de la misma forma que el evento MSG-TV-EXPANDED. Puede prevenir que el control se expanda o contraiga fijando EVENT-ACTION a EVENT-ACTION-FAIL. Nota: El runtime puede enviar un conjunto de estos eventos en respuesta, cuando el usuario presiona las teclas + o *. La diferencia es que estos mensajes son enviados independientemente de sí el Ítem en particular es expandido o no. Mientras que un evento del mouse causa un mensaje de EXPAND si el ítem no es expandido. Este hecho puede causar problemas en los programas COBOL, y los programadores deben estar conscientes de ello. Las teclas + y * generan un mensaje EXPANDED con EVENT-DATA-1 fijado a TVFLAG-EXPAND, mientras que la tecla – genera un mensaje EXPANDED con EVENT-DATA-1 fijado a TVFLAG-COLLAPSE.

MSG-TV-SELCHANGE Valor 16412 Este evento ocurre cuando la selección ha sido cambiada en un control Tree View. El ID del nuevo ítem es almacenada en EVENT-DATA-2. EVENT-DATA-1 contiene la causa del cambio. De acuerdo a los siguientes valores (encontrados en "acugui.def"): TVFLAG MOUSE Nuevo Ítem seleccionado con el mouse. TVFLAG KEYBOARD Nuevo Ítem seleccionado con el teclado. TVFLAG PROGRAM Cambio de programa por el Ítem seleccionado

MSG-TV-SELCHANGING Valor 16411 Este evento ocurre cuando la selección en un control Tree View esta a punto de cambiar. EVENT-DATA-1 contiene la razón para el cambio (Vea MSG-TV-SELCHANGE), y EVENT-DATA-2 contiene el ID del Ítem a punto de seleccionar. Puede prevenir la selección, fijando EVENT-ACTION a EVENT-ACTION-FAIL.

MSG-VALIDATE Valor 16391 Este evento ocurre inmediatamente después que el runtime desempeña una validación intrínsica de un campo de entrada de datos (por ejemplo, la frase REQUIRED). Específicamente, un evento MSG-VALIDATE es generado en cualquier momento que un control activo termine y la terminación no sea el resultado de: 1. Un evento, excepción para CMD-GOTO, o CMD-TABCHANGED 2. Un mensaje, excepto "status 95" 3. Una excepción, excepto para aquellos que también causen movimiento entre

campos en una Screen Section. Cuando las condiciones mencionadas sean reunidas, es un buen punto para

Page 54: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 54 de 125

desempeñar otra validación de datos de control. Si el elemento EVENT-ACTION es fijado a EVENT-ACTION-CONTINUE (valor 2), el control permanece activo hasta que el usuario corrija el error. Fíjese que MSG-VALIDATE no es generado para controles con el estilo SELF-ACT, ni tampoco es enviado cuando el runtime no desempeña normalmente una validación (por ejemplo, en respuesta a una tecla de función). Este mensaje es generado para cualquier control que sea activado, aunque no tenga un valor. A causa de la naturaleza dinámica de las ventanas gráficas, un usuario puede salir en una ventana sin que todos los campos sean validados, por lo tanto, la validación se realiza después de completada una entrada de datos.

MSG-WB-BEFORE-NAVIGATE Valor 16429 Ocurre cuando el control WEB-BROWSER esta a punto de ingresar a un nuevo URL. La propiedad de NAVIGATE-URL es fijada al nuevo URL. Si usted fija EVENT-ACTION a EVENT-ACTION-FAIL, la navegación podría cancelarse.

MSG-WB-DOWNLOAD-BEGIN Valor 16431 Ocurre cuando una operación de navegación es iniciada, en resumen, después del evento BeforeNavigate.

MSG-WB-DOWNLOAD-COMPLETE Valor 16432 Ocurre cuando una operación de navegación es completada.

MSG-WB-NAVIGATE-COMPLETE Valor 16430 Ocurre después que el browser a navegado en un nuevo URL. El URL final es almacenado en la propiedad VALUE

MSG-WB-PROGRESS-CHANGE Valor 16433 Ocurre cuando el progreso de una descarga es actualizado. La propiedad PROGRESS es fijada al actual valor de progreso. La propiedad MAX-PROGRESS es fijada al valor máximo del progreso.

MSG-WB-STATUS-TEXT-CHANGE Valor 16434 Ocurre cuando el texto de la barra de estado cambia. La propiedad STATUS-TEXT es fijada al nuevo estado del texto.

MSG-WB-TITLE-CHANGE Valor 16435 Ocurre cuando el título de un documento en control WEB-BROWSER llega a ser disponible o cambia. La propiedad TITLE es fijada con el nuevo título.

NTF-CHANGED Valor 4100 Indica que el valor de un campo de entrada puede haber sido cambiado por el usuario. Este evento ocurre únicamente para campos de entrada que tengan el estilo NOTIFY-CHANGE. EVENT-DATA-1 es la posición actual del cursor en el campo de entrada (comenzando en “1”). EVENT-DATA-2 no es usado.

NTF-PL-FIRST Valor 4105 Este evento es generado únicamente para controles list boxes con el estilo PAGED. Indica que el usuario realizó un desplazamiento en la parte superior de la lista. La respuesta normal es adicionar los primeros “n” registros a la lista, donde "n" es el número de líneas que el list box puede mostrar. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

NTF-PL-LAST Valor 4106 Este evento es generado únicamente para controles list boxes con el estilo PAGED. Indica que el usuario realizó un desplazamiento en la parte inferior de la lista. La respuesta normal es adicionar los últimos “n” registros a la lista, donde "n" es el número de líneas que el list box puede mostrar. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

Page 55: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 55 de 125

NTF-PL-NEXT Valor 4101 Este evento es generado únicamente para controles list boxes con el estilo PAGED. Indica que el usuario realizó un desplazamiento de un registro en dirección descendente en un list box. La respuesta normal para este mensaje es adicionar el siguiente registro al final de la lista. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

NTF-PL-NEXTPAGE Valor 4103 Este evento es generado únicamente para controles list boxes con el estilo PAGED. Indica que el usuario realizó un desplazamiento de una página en dirección descendente en un list box. La respuesta normal es adicionar los últimos “n” registros a la lista, donde "n" es el número de líneas que el list box puede mostrar. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

NTF-PL-PREV Valor 4102 Este evento es generado únicamente para controles list boxes con el estilo PAGED. Indica que el usuario realizó un desplazamiento de un registro en dirección ascendente en un list box. La respuesta normal para este mensaje es adicionar el anterior registro al comienzo de la lista. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

NTF-PL-PREVPAGE Valor 4104 Este evento es generado únicamente para controles list boxes con el estilo PAGED. Indica que el usuario realizó un desplazamiento de una página en dirección ascendente en un list box. La respuesta normal es adicionar los anteriores “n” registros a la lista, donde "n" es el número de líneas que el list box puede mostrar. EVENT-DATA-1 y EVENT-DATA-2 no son usados.

NTF-PL-SEARCH Valor 4107 Este evento es generado únicamente para controles list boxes con el estilo PAGED. Indica que el usuario hace un desplazamiento en la página que contiene el texto ingresado por el usuario. La repuesta normal es localizar el más cercano registro concordante y luego adicionar una página de registros al list box, comenzando con el registro encontrado. EVENT-DATA-1 contiene el tamaño del texto buscado. EVENT-DATA-2 no es usado. Para determinar el texto de búsqueda ingresado, use el verbo INQUIRE en la propiedad SEARCH-TEXT del list box.

NTF-SELCHANGE Valor 4099 Indica que el usuario ha seleccionado un nuevo ítem en un control list-box o en una lista de un combo-box. Esto únicamente ocurre si la aplicación lo solicita vía estilo NOTIFY-SELCHANGE. EVENT-DATA-1 es el índice del ítem seleccionado en la lista (comenzando en “1”). EVENT-DATA-2 no es usado.

• Eventos de menú – (Menú Events)

Los siguientes eventos son asociados con los menús tipo pop-up que son asociados a un control. Puede detectar un pop-up menú seleccionándolo directamente en un procedimiento de control de eventos. Los siguientes mensajes son generados cuando el usuario selecciona un ítem de un menú pop-up: MSG-INIT-MENU Valor 16398

Este evento ocurre previamente a la visualización de un control de menú pop-up. EVENT-DATA-2 contiene el manejador (handle) del control del menú. Los procedimientos de control de eventos pueden usar este evento para actualizar

Page 56: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 56 de 125

cualquier estado de información en el menú. Tal como habilitar/deshabilitar ítems o fijar/remover marcas de chequeo. Si el procedimiento de evento fija EVENT-ACTION a EVENT-ACTION-FAIL, o fija el control del menú a NULL, entonces el menú no es mostrado. En este caso, cualquier construcción de una definición de menú propio del sistema operativo sera visualizado (p.e. La ventana de menú de Windows Copiar/Cortar/Pegar/Deshacer asociadas con campos de texto).

MSG-MENU-INPUT Valor 16397 Este evento ocurre cuando el usuario tiene activado un control menu pop-up y seleccionado un ítem en el menú. Para ventanas, la información desde este evento de mensaje es enviada a un procedimiento de evento cuando el usuario realiza lo siguiente: 1. Selecciona un ítem desde la ventana de la barra de menú pop-up. 2. Selecciona un ítem desde una ventana de menú pop-up. 3. Selecciona un ítem desde un menú pop-up menú compuesto por un control

contenido en la ventana, y el procedimiento de control de evento no detiene el procesamiento adicional de la selección del menú.

4. Selecciona la opción "Cerrar" desde la ventana inicial del sistema de menú (o hace clic en el botón "Cerrar"), y usted tiene fijado la opción de configuración QUIT-MODE a un valor positivo. Esta opción de configuración causa que el runtime trate de cerrar la operación como si fuera un ítem en la barra de menú inicial de la ventana.

EVENT-DATA-2 contiene el ID del ítem del menú. Fijando EVENT-ACTION a EVENT-ACTION-CONTINUE previene procesamientos posteriors de la selección del menú. De otra forma, la selección del menú es tratado como una selección normal desde una barra de menú (p.e., termina el ACCEPT con un valor de excepción igual al ID del ítem del menú).

MSG-END-MENU Valor 16399 Este evento ocurre cuando el menú pop-up de cualquier control o ventana ha sido removido de la pantalla. EVENT-DATA-2 contiene el handle del menú de control (o ventana).

Page 57: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 57 de 125

Laboratorio 3.3

Hasta ahora... En el laboratorio, anterior ha creado un proyecto y adicionado unos controles gráficos, generando una aplicación automatizada.

Objetivos Pegar algunos controles gráficos. Identificar los controles creados en la ventana gráfica. Asociar validaciones y comportamientos a los controles Asociar algunos controles al archivo de datos “CLIENTES”.

Tareas generales Adicione los siguientes campos en su FD

Nombre Campo LLave Picture TP-CLIENTE X(3) FILLER X(512)

En el FD, cambie el valor del campo SX-CLIENTE, a numérico de

1 – PIC 9. Genere nuevamente el archivo de datos Borre los archivos físicos CLIENTE.DAT y CLIENTE.VIX Por la opción Project\Settings, en la pestaña Compiler, active la

opción para generar archivos .XFD, en el directorio “Datos”. Cree los siguientes controles de acuerdo al siguiente modelo de

ventana.

El Combo-Box cárguelo con los siguientes valores

CC, NIT, TI, CE, PP. Asocie las variables de su archivo de datos a los controles creados

y asígnele las validaciones y atributos correspondientes. Por la opción Code Insight cambie el código asignado a Write, por

el siguiente código: WRITE |record-name INVALID DISPLAY MESSAGE BOX "Error al grabar"

Page 58: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 58 de 125

NOT INVALID DISPLAY MESSAGE BOX "Registro grabado" PERFORM INICIO MOVE 1 TO ACCEPT-CONTROL CONTROL-VALUE DISPLAY <<nombre_ventana>> END-WRITE

En el Event Paragraph, cree un título de parágrafo llamado GRABAR, y en la línea siguiente inserte el Code Template correspondiente a Write y cambie el valor de |record-name, por el del registro a grabar.

Inserte el siguiente código en el Event Paragraph, después o antes del parágrafo GRABAR . *----Parágrafo antes de mostrar la ventana

INICIO. INITIALIZE RG-CLIENTES MOVE 1 TO SX-CLIENTE.

En la ventana principal asocie la opción “Before Routine” al parágrafo INICIO.

En la ventana gráfica asocie el botón “Grabar” con el parágrafo GRABAR.

Page 59: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 59 de 125

Laboratorio 3.4

Hasta ahora... En el laboratorio anterior ha adicionado unos controles gráficos, y asociado éstos a su archivo de datos.

Objetivos Adicionar una Barra de Menú. Escribir el código necesario para realizar la modificación y

eliminación de un registro. Asociar los parágrafos creados a las opciones del menú. Verificar el tratamiento de los archivos utilizando el comando Alfred

de AcuBench.

Tareas generales Escriba los parágrafos correspondientes a una rutina de modificación y eliminación de un registro en su archivo de datos.

Adicione un menú con el siguiente contenido:

Cree dos botones en la parte inferior de la ventana con los siguientes valores: “Modificar” – “Eliminar” .

Asigne los parágrafos correspondientes a cada botón. Adicione los siguientes campos en su FD

Nombre Campo Picture CH-CLIENTE 9 EF-CLIENTE 9 CR-CLIENTE 9 TC-CLIENTE 9

Cree 4 check-box que correspondan a cada uno de los valores

descritos anteriormente y que corresponderían a la forma de pago.

Nombre Check-Box Variable Cheque CH-CLIENTE

Page 60: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 60 de 125

Efectivo EF-CLIENTE Tarjeta de Crédito TC-CLIENTE Crédito CR-CLIENTE

El diseño de la ventana podría quedar de la siguiente forma.

Page 61: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 61 de 125

Laboratorio 3.5

Hasta ahora... En el laboratorio anterior ha adicionado un menú y varios check-box, asociando a parágrafos los menús y a variables de su archivo de datos.

Objetivos Crear un control Toolbar, un control Status-Bar y un List-Box Asociar bitmap a los botones creados y ubicarlos dentro del

Toolbar, adicionando otros push-button. Crear el código necesario para realizar una lectura del archivo. Asociar el código a los controles gráficos creados.

Tareas generales Cree un control Toolbar en su ventana principal.

Cree un control Status Bar en su ventana principal. Los botones creados en los laboratorios anteriores, ubíquelos

dentro del Toolbar y asígneles los bitmap correspondientes, realizando los ajustes necesarios.

Cree 4 botones dentro del Toolbar correspondientes a lecturas de su archivo de datos.

Escriba los parágrafos correspondientes a una rutina de inicio y fin de lectura en el archivo de datos (START) y una lectura secuencial del archivo de datos (READ NEXT y PREVIOUS).

Asigne los parágrafos correspondientes a los botones creados en este laboratorio.

Adicione los siguientes campos en su FD Nombre Campo Picture CL-SUCURSAL X(20)

Cree un list-box y asocie la variable CL-SUCURSAL de su archivo de datos.

Cree el código y parágrafos necesarios para asociar al Status Bar, en cada campo de entrada, utilice (BEFORE PROCEDURE).

El diseño de la ventana podría quedar de la siguiente forma:

Page 62: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 62 de 125

Controles gráficos especiales

Este capítulo esta especialmente dedicado a analizar algunos controles especiales con que cuenta AcuBench, entre ellos, el GRID, TREE VIEW y WEB BROWSER. • Grid Control

El control GRID control es una tabla bi-dimensional de campo de datos. Cada elemento en esta tabla es llamado “celda”, puede contener texto, bitmap o ambos. Los GRIDs son controles relativamente complejos con muchas propiedades que usted puede usar para personalizar su comportamiento y apariencia.

Nota de Portabilidad: De forma general un control GRID es soportado únicamente en entornos Windows. El intento de crear un control GRID en otros sistemas puede fallar, causando que el manejo del control sea retornado con un valor NULL.

Los GRIDs son organizados en filas, columnas y registros. En un GRID, una “fila” es una agrupación de celdas que aparecen en una línea de un control. Un “registro” es una o más filas que son tratadas como una unidad lógica. Una “columna” identifica una celda particular en un registro. Por defecto, un registro ocupa una fila en un GRID, pero usted puede organizar de tal forma que un registro sea almacenado por filas en el GRID. Cuando es hecho esto, un registro ocupa más de una fila en el GRID. La capacidad de almacenamiento de un GRID es limitada por el tamaño de memoria disponible. El GRID usa una técnica reducida de almacenamiento en el que a los registros sin datos no se les asigna memoria. Un GRID no puede tener más de 100 columnas. Existen otros limitantes (2 gigaregistros (2,147,483,647 registros) y 2 GB de texto por registro). Una celda sencilla puede contener no más de 32766 bytes de texto. El GRID opera en dos modos: modo de navegación y modo de entrada. Mientras este en modo de navegación, la teclas de flecha mueven el cursor en torno del GRID. Este es el modo por defecto. El GRID alterna al modo de entrada cuando el usuario inicia una modificación de un dato. En este modo, las teclas de flecha son usadas para editar los datos activos de la celda. Cuando el usuario concluye la edición de una celda, el GRID retorna al modo de navegación.

Page 63: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 63 de 125

El conjunto implícito de teclas asignadas para el GRID, depende del host system. Sobre Windows, el siguiente conjunto de teclas son asignadas para el modo de navegación:

Tecla Acción

Flechas Arriba/Abajo Mueve el cursor en la misma columna en el Anterior/Siguiente registro .

Flechas Izquierda/Derecha Mueve el cursor en la columna Anterior/Siguiente del registro

Tab (con USE-TAB) Mueve el cursor a la derecha, volviendo al primer registro cuando esta ubicado en la última celda de la fila

Retroceso (con USE-TAB) Mueve el cursor a la izquierda, volviendo al primer registro cuando esta ubicado en la última celda de la fila

Inicio Mueve el cursor a la primera columna en el registro Ctrl-Inicio Mueve a la primera columna en el primer registro Fin Mueve a la última columna en el registro Ctl-Fin Mueve a la primera columna en el último registro Av. Pág./Re Pág. Mueve el cursor una página hacia arriba o hacia abajo

Intro Alterna el modo de entrada en una celda; destacando el contenido para edición

Mayúscula-Intro Mueve el cursor a la primera columna de el siguiente registro

Cualquier carácter editable Alterna el modo de entrada para la celda activa; sobrescribiendo el contenido con el carácter.

GRIDs pueden tener filas y/o columnas de encabezado. Usando el estilo ROW-HEADINGS establece una fila de encabezado y el estilo COLUMN-HEADINGS establece una columna de encabezado. Los encabezados son celdas normales con algunos atributos especiales. 1. Los Encabezados serán siempre visibles, independiente de como el usuario

navegue en el GRID. 2. El cursor no es movable en una celda de encabezado. 3. Las propiedades especiales HEADING-COLOR, HEADING-FONT y

HEADING-DIVIDER-COLOR aplican únicamente a celdas de encabezado, así como el estilo TILED-HEADINGS.

4. Los eventos MSG-HEADING-CLICKED, MSG-HEADING-DBLCLICK, y MSG-HEADING-DRAGGED aplican únicamente a celdas de encabezado.

Page 64: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 64 de 125

Laboratorio 3.6

Hasta ahora... En el laboratorio anterior a adicionado tres nuevos controles, ToolBar, StatusBar y List Box, además de escribir el código necesario para realizar lecturas secuenciales y principales en un archivo de datos y asociarlos a controles push-button con imágenes.

Objetivos Crear tres controles TAB, GRID y un BITMAP. Organizar la información clasificándola en 2 pestañas en el TAB Asociar una imagen al BITMAP

Tareas generales Cree un control TAB en su ventana principal.

Inserte una pestaña adicional. Seleccione la información básica del Cliente y péguela en la

primera pestaña. Seleccione el resto de información del Cliente y péguela en la

segunda pestaña. Cambie los títulos de las pestañas – Datos Básicos, Datos

Específicos. Organice la ventana de tal manera que pueda dejar un espacio en

blanco al final de la ventana, en donde ira un control GRID. Cree un control GRID. Cree el código y parágrafos necesarios para asociar al Status Bar,

en cada campo de entrada, utilice (BEFORE PROCEDURE). El diseño de la ventana podría quedar de la siguiente forma:

Page 65: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 65 de 125

Propiedades Especiales del GRID

El control GRID, cuenta con propiedades especiales, las cuales nos sirven para personalizar las acciones (eventos) de este tipo de control, a continuación presentamos la descripción de las propiedades en mención:

Propiedad ACTION (create, modify) Tipo Alfanumérico Usado únicamente con el estilo PAGED, esta propiedad causa que el grid invoque un modo de paginación en una de varias formas. Esto simplifica las tareas de llenado del grid con los datos iniciales. Después de creado el grid, se puede asignar uno de los siguientes valores a ACTION para cargar la página inicial de datos que el usuario puede ver. Los valores son: ACTION-FIRST-PAGE (valor 10) Genera el evento MSG-PAGED-FIRST. Rellenando el grid con la primera página de datos desde su archivo origen. ACTION-LAST-PAGE (valor 11) Genera el evento MSG-PAGED-LAST Rellenando el grid con la última página de datos desde su archivo origen. ACTION-CURRENT-PAGE (valor 12) limpia el grid de cualquier dato excepto para columnas de encabezado y genera el evento MSG-PAGED-NEXTPAGE. Si posiciona un archivo de datos usando la declaración START antes de desempeñar esta acción, el grid puede ser llenado iniciando con el registro seleccionado por el START. ACTION-HIDE-DRAG Remueve el DRAG-COLOR. Vea la descripción de DRAG-COLOR más adelante.

Propiedad ALIGNMENT (create, modify) Tipo Alfanumérico Describe la alineación de cada columna en el grid. Cada vez que usted fije esta propiedad, usted describe la alineación para la próxima columna en el grid, iniciando con la primera. Fijando esta propiedad a espacios limpia las alineaciones previamente especificadas. Los valores validos son los siguientes (mayúscula o minúscula):

"L" Justificación a la izquierda "R" Justificación a la derecha "C" Centrada "U" Sin alineación Los datos no alineados “unaligned” son mostrados en la celda tal cual. De otra manera, el interlineado y los espacios son removidos del dato. El valor por defecto para una columna es "unaligned.". El siguiente ejemplo fija varias alineaciones para un conjunto de 3 columnas:

ALIGNMENT = ( "L", "R", "C" )

Propiedad BITMAP (create, modify) Tipo Numérico Coloca una imagen bitmap en una celda identificada por las propiedades X y Y. Este debe ser fijado para el handle del bitmap cargado en memoria (usando la opción WBITMAP-LOAD de W$BITMAP). Si este valor es cero, entonces cualquier bitmap existente es removido. Puede colocar bitmap y texto en una misma celda. El bitmap es concatenado con el texto (con una pequeña separación), y el conjunto es alineado de acuerdo a lo especificado en la propiedad ALIGNMENT. Cuando el usuario ingresa texto en la celda, el bitmap es oculto, en

Page 66: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 66 de 125

tanto finaliza la entrada de texto. El mismo bitmap puede ser colocado en más de una celda.

Propiedad BITMAP-NUMBER (create, modify) Tipo Numérico Identifica una imagen en particular cuando utiliza una cadena de imágenes de un archivo. La primera imagen en la cadena es la número “1”, la segunda es la número "2" y así sucesivamente. Las imágenes en una tira de bitmap deben ser de ancho uniforme, como hayan sido especificadas en BITMAP-WIDTH. La celda afectada es identificada por las propiedades X y Y. El valor por defecto es "1".

Propiedad BITMAP-TRAILING (create, modify) Tipo Numérico Cuando el valor es "1", esta propiedad indica que el bitmap ira seguido del texto en la celda. Cuando de fija en cero el valor (por defecto), el bitmap precederá el texto. Otros valores tienen efectos indefinidos. La celda afectada es identificada por las propiedades X y Y.

Propiedad BITMAP-WIDTH (create, modify) Tipo Numérico Identifica el ancho, en píxeles, del bitmap identificado por la propiedad BITMAP. Si el ancho no es fijado, entonces el bitmap completo es usado. Úselo en conjunción con BITMAP-NUMBER para seleccionar el ancho de una imagen en una tira de bitmap. La celda afectada es identificada por las propiedades X y Y.

Propiedad CELL-COLOR (create, modify) Tipo Numérico Fija el color para la celda identificada por las propiedades X y Y. El valor del color especificado usa los valores de la frase COLOR, tanto para los colores de primer plano como de fondo.

Propiedad CELL-DATA (create, modify, inquire) Tipo Alfanumérico Utilizando create y modify, reemplaza el dato de la celda identificada por las propiedades X y Y con el valor especificado. Cuando utilizo la propiedad inquire, retorna el dato del texto de la celda.

Propiedad CELL-FONT (create, modify) Tipo Numérico Fija una fuente para la celda identificada por las propiedades X y Y. Debe ser un valor valido de fuente.

Propiedad COLUMN-COLOR (create, modify) Tipo Numérico Fija el valor del color para una columna entera identificada por la propiedad X. La frase COLOR, especifica el valor del color usado para el fondo y el primer plano. Ejemplo: MODIFY GRID-1, X = 3, COLUMN-COLOR = 514

Propiedad COLUMN-DIVIDERS (create, modify) Tipo Numérico Fija el ancho, en píxeles, de la división de la columna. Cada vez que fije esta propiedad, describe el ancho del siguiente separador de la columna, iniciando desde la primer columna. Fijando esta propiedad a "-1" limpia los valores previos especificados.

Propiedad COLUMN-FONT (create, modify) Tipo Numérico Fija la fuente a ser usada por una columna identificada por la propiedad X. Debe ser un valor valido de fuente.

Propiedad CURSOR-COLOR (create, modify, inquire) Tipo Numérico

Page 67: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 67 de 125

Fija el color para la celda donde este ubicado el cursor. El valor del color es especificado por la frase COLOR para el primer plano y el fondo. Fíjese que el cursor es normalmente oculto cuando el grid pierde el foco. Esto causa que la celda que contenga el cursor vuelva a su color normal. El color por defecto del cursor es "0".

Propiedad CURSOR-FRAME-WIDTH (create, modify, inquire) Tipo Numérico Determina cómo el cursor puede ser visualizado en el grid. Cuando es fijado a un valor positivo, el cursor visualiza un marco con muchos píxeles gruesos alrededor de la celda del cursor. El marco se extiende parcialmente en la celda, y parcialmente fuera de ella. Cuando esta propiedad se fija a un valor negativo, una serie de líneas punteadas son colocadas dentro de la celda. Cuando este valor es cero, no se visualiza ningún marco dentro de la celda. El valor por defecto es "3".

Propiedad CURSOR-X (create, modify, inquire) Tipo Numérico Identifica la columna donde el cursor se encuentra ubicado. Utilizando las propiedades create y modify, mueven el cursor. Utilizando inquire retorna la localización del cursor. Observe que usted puede MODIFICAR esta propiedad durante un evento MSG-VALIDATE para dirigir, donde el cursor debe ir después de que el usuario ha finalizado el ingreso a una celda. Sin embargo, esto solo se hace si no fuerza al usuario a permanecer en el modo de entrada en la celda actual. Si usted mueve el cursor en respuesta a otros eventos mientras el usuario este en modo de entrada, el resultado puede ser confuso.

Propiedad CURSOR-Y (create, modify, inquire) Tipo Numérico Identifica el registro donde el cursor se encuentra ubicado. Utilizando las propiedades create y modify, mueven el cursor. Utilizando inquire retorna la localización del cursor. Ver CURSOR-X para más información.

Propiedad DATA-COLUMNS (create, modify) Tipo Numérico Esta propiedad describe donde cada columna comienza en registros añadidos al grid (Ver RECORD-TO-ADD). Las columnas son definidas por la posición de caracteres correspondiente a la definición del dato, con el primer carácter iniciando en la posición “1”. Por ejemplo, el siguiente ítem de datos: 01 LIST-DATA. 03 NAME PIC X(20). 03 PHONE-NUMBER PIC X(15). 03 STATE PIC X(2). Normalmente es visualizada en tres columnas, la primera iniciando en la posición “1” (NAME), la segunda en la posición "21" (PHONE-NUMBER), y la tercera en la posición "36" (STATE). Cada vez que fija DATA-COLUMNS a un valor positivo, una nueva columna es creada en ese punto de posición. Fijando DATA-COLUMNS a cero limpia todas las definiciones de las columnas existentes. Observe que hay siempre una columna en la posición "1", así que la posición fijada en "1" no es requerida. Un ejemplo de DATA-COLUMNS fijado a los valores correspondientes del grupo de ítem de datos podría ser: DATA-COLUMNS = (21, 36) Puede también especificar DATA-COLUMNS usando la construcción RECORD-POSITION.

Propiedad DATA-TYPES Tipo Alfanumérico Describe varias características de entrada de datos de cada columna. Cada vez que usted fija esta propiedad, describe el tipo de dato para la siguiente columna en el grid, iniciando con

Page 68: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 68 de 125

el primero. Fijando esta propiedad a espacios limpia el anteriormente especificado ítem de datos. Una especificación de tipo de datos contiene 2 componentes. El primero es un carácter simple que describe el conjunto de caracteres validos que el usuario puede ingresar en esta columna. El conjunto de posibles valores es: Carácter Descripción Caracteres permitidos

“X” Alfanumérico Todos los caracteres “U” Alfanumérico - Mayúscula Todos los caracteres – automáticamente

convertidos a mayúscula. “L” Alfanumérico - Minúscula Todos los caracteres – automáticamente

convertidos a minúscula. “9” Numérico Dígitos, punto decimal, signo, espacio “Z” Números editados Dígitos, signos, punto, coma, símbolo de moneda

local, "$", "*", "/", "%", espacios “I” Enteros Dígitos, signos, espacios “P” Enteros Positivos Dígitos, espacios “D” Fecha Dígitos, “/”, guión

Puede especificar el carácter de tipo de datos sin importar si es dado en mayúsculas o minúsculas, después de digitar el carácter, debe ingresar el máximo número de caracteres que pueden ser ingresados en esta columna. Este valor es especificado en paréntesis. Dos valores tienen especial significado: "0" indica que el máximo número de caracteres es fijado al tamaño de la columna, y “-1” indica no hay límite diferente al impuesto por el grid (p.e., 32766 caracteres). Cuando una celda contiene más texto del que se puede mostrar, la celda se desplaza horizontalmente de una forma similar a un entry field. Puede omitir cualquier parte de la especificación. Si la parte del tipo de datos es omitida, se asigna "X" (todos los caracteres permitidos). Si el tamaño es omitido, se asigna "0" (corresponde al tamaño de la columna). Por ejemplo, para especificar que una columna permita 30 caracteres en mayúscula, especifique "U(30)". Para crear una columna que permita únicamente dígitos con el ancho de la columna, use "P(0)", o solo "P". Nota: El tipo de dato carácter únicamente limita cual carácter el usuario puede ingresar en la columna. El grid internamente no valida o formatea el dato ingresado. Para realizar esta validación usted debe responder al evento MSG-FINISH-ENTRY.

Page 69: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 69 de 125

Propiedad DISPLAY-COLUMNS(create, modify) Tipo Numérico Esta propiedad describe el número de columnas y su localización en el grid. La primera columna siempre es visualizada en la posición "1". Las columnas adicionales se muestran en la localización fijada por DISPLAY-COLUMNS. Las columnas son medidas con la fuente estándar. Cada vez que es fijada DISPLAY-COLUMNS a un valor positivo, una nueva visualización de la columna es definido. Fijando DISPLAY-COLUMNS a "0" limpia todas las columnas (excepto la columna 1). Usualmente, usted fija DISPLAY-COLUMNS en una lista, de la siguiente forma: DISPLAY-COLUMNS = (1, 21, 35) Este ejemplo fija tres columnas, una iniciando en la columna "1", la siguiente iniciando en la columna "21" y la última iniciando en la columna "35". La última columna se extiende hasta el final del grid (ver VIRTUAL-WIDTH). En un grid sin una barra horizontal especificada (ver HSCROLL), un registro puede ocupar múltiples filas en el grid. Para hacer esto, restaure la numeración de las columnas en "1" después de fijar la primera fila de columnas. Por ejemplo, la siguiente sentencia describe un grid con registros distribuidos en 2 filas, con tres columnas en la primera fila y dos columnas en la segunda: DISPLAY-COLUMNS = (1, 21, 35, 1, 21) En una ventana, un registro en un grid podría verse de la siguiente manera: Columna 1 Columna 2 Columna 3 Columna 4 Columna 5

Nota: Puede también usar columnas para ocultar datos. La columna se sitúa más allá del lado derecho del grid, donde no es visible. Puede usar este comportamiento para almacenar información en el grid que su programa necesite asociar con un registro, pero que usted no desea mostrar al usuario. Un potencial uso de esta técnica es almacenar el valor de la llave primaria en la columna oculta, así podrá recuperar el registro completo fácilmente cuando el usuario lo seleccione del grid.

Propiedad DIVIDER-COLOR(create, modify, inquire) Tipo Numérico Fija el color de las divisiones del grid. Configurando este valor al número del color deseado (p.e. "1" para negro, "9" para gris oscuro). Cuando esta propiedad es fijada a cero (por defecto), el color especifico del divisor del sistema es usado. Este color depende del color del fondo del grid.

Propiedad DRAG-COLOR (create, modify, inquire) Tipo Numérico Configura el color de resaltado aplicado al área rectangular definida cuando el usuario selecciona con el mouse en el grid. El valor DRAG-COLOR mayor a cero define un color a ser aplicado usando el valor de la frase COLOR. DRAG-COLOR es usado para el mismo propósito como REGION-COLOR (vea la descripción de la propiedad REGION-COLOR). Use DRAG-COLOR en lugar de REGION-COLOR cuando desee permitir que los usuarios resalten un bloque de celdas presionando y arrastrando el mouse (REGION-COLOR tiene mala ejecución en aplicaciones que corren con ACUCOBOL-GT Thin Client).

Page 70: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 70 de 125

DRAG-COLOR es aplicado cuando el usuario inicia una operación de clic y arrastre. DRAG-COLOR es removido cuando una de las siguientes acciones ocurre:

El cursor es movido a una nueva celda después que un evento MSG-END-DRAG es generado. Se hace clic en un encabezado Un evento MSG-BEGIN-ENTRY es generado La propiedad ACTION es asignada a ACTION-HIDE-DRAG (nivel 78 en "acugui.def")

DRAG-COLOR se oculta cuando el grid no tiene foco.

Propiedad END-COLOR (create, modify, inquire) Tipo Numérico Controla el color del grid en el área de fondo del grid. En algunos casos, un área en blanco es visible. Si esta propiedad se fija en cero (por defecto), el área es rellenada con el color configurado para el host de la maquina.

Propiedad ENTRY-REASON (create, modify, inquire) Tipo Alfanumérico Esta propiedad registra las acciones que el usuario causa en el grid alternando con el modo de entrada. Esto es determinado inmediatamente antes de generar el evento MSG-BEGIN-ENTRY, y es retenido hasta que sea generado el evento MSG-BEGIN-ENTRY o mientras el grid es destruido. La codificación es un sencillo carácter PIC X como sigue: x"00" Un valor X"00" (binario 0, ASCII nulo) indica que el usuario hace doble-clic en la

celda. x"0D" Un valor X"0D" (binario 13, ASCII Retorno de carro) indica que el usuario presiona

la tecla <Enter o Intro> Otro Cualquier otro valor es la tecla que el usuario ha presionado. Por ejemplo, si el

usuario inicia tecleando “John”, entonces la letra “J” es retornada por ENTRY-REASON.

ENTRY-REASON puede ser unicamente obtenido (inquire). Puede obtener el ENTRY-REASON durante un evento MSG-BEGIN-ENTRY para determinar lo que causó que la entrada actual comenzara. Observe que puede luego prohibir la entrada moviendo EVENT-ACTION-FAIL a EVENT-ACTION y retornar desde el procedimiento de evento.

Propiedad FILE-POS (create, modify, inquire) Tipo Numérico Esta propiedad es usada únicamente con el control grid que tenga el estilo PAGED. El valor de FILE-POS es el número de registros del grid que corresponden a la posición actual del registro en el correspondiente archivo de datos. Es usado para simplificar la paginación lógica en su programa. FILE-POS calcula el número de lecturas de registros necesarios requeridos para ser cargado en el grid. El grid usa este valor cuando se generan los eventos MSG-PAGED-NEXT o MSG-PAGED-PREV. El valor de FILE-POS sera el último registro visible del grid o el primer registro visible que no es un encabezado. Para ilustración, suponga que tiene un grid de 4 líneas sin encabezado. Cuando se avanza en el archivo, FILE-POS, generalmente "4", corresponde al último registro adicionado al grid. Si el usuario hace clic en el botón "Next Record", el evento MSG-PAGED-NEXT indica que únicamente un READ NEXT es necesario para recuperar el registo apropiado. Sin embargo, si el usuario hace clic en el botón "Previous Record", entonces el evento MSG-PAGED-PREV indica que cuatro declaraciones READ PREVIOUS son

Page 71: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 71 de 125

necesarias para obtener el registro deseado. En este caso, FILE-POS cambiará a "1", indicando que únicamente un READ PREVIOUS es necesario para obtener el registro “previo” mientras cuatro declaraciones READ NEXT son necesarias para obtener el "siguiente" registro. Además, FILE-POS tiene tres especiales valores definidos a nivel 78 en el archivo "acugui.def". Estos valores son listados a continuación: PAGED-AT-START (valor 2147418113) Cuando se asigna este valor a FILE-POS, el grid no

generará eventos MSG-PAGED-PREV y MSG-PAGED-PREVPAGE. PAGED-AT-END (valor 2147418114) Cuando se asigna este valor a FILE-POS, el grid no

generará eventos MSG-PAGED-NEXT y MSG-PAGED-NEXTPAGE. PAGED-EMPTY (valor 2147418115) Cuando se asigna este valor a FILE-POS, el grid no

generará eventos MSG-PAGED-NEXT, MSG-PAGED-NEXTPAGE, MSG-PAGE-PREV y MSG-PAGED-PREVPAGE. Puesto que es posible que otros usuarios agreguen registros al archivo (como una re-lectura), el valor generará eventos MSG-PAGED-FIRST y MSG-PAGED-LAST.

El grid automaticamente administra el FILE-POS, usando las siguientes reglas: 1. Cuando un registro es adicionado en un grid en la posición superior sin encabezado,

FILE-POS es asignado a esa posición. 2. Cuando un registro es adicionado en un grid en la posición inferior, FILE-POS es

asignado a esa posición. 3. Si usted fija EVENT-ACTION-FAIL en respuesta a un evento MSG-PAGED-NEXT, FILE-

POS es fijado a PAGED-AT-END. 4. Si usted fija EVENT-ACTION-FAIL en respuesta a un evento MSG-PAGED-PREV, FILE-

POS es fijado a PAGED-AT-START. 5. Si usted fija EVENT-ACTION-FAIL en respuesta a un evento MSG-PAGED-FIRST o

MSG-PAGED-LAST, FILE-POS es fijado a PAGED-EMPTY. 6. Si un evento MSG-PAGED-FIRST fija EVENT-ACTION (por defecto), FILE-POS es fijado

a PAGED-AT-START. 7. Si un evento MSG MSG-PAGED-LAST fija EVENT-ACTION, FILE-POS es fijado a

PAGED-AT-END. 8. Si usted desocupa el grid, FILE-POS es fijado a PAGED-EMPTY. Adicionando registros

al grid cambiarán este valor. La administración automática proporcionada aquí manejará correctamente los grid cuyos datos provengan de un archivo de datos indexado, sí usted mueve el puntero de los registros del archivo únicamente en respuesta a los eventos del grid (y únicamente según los requisitos de estos eventos). En casos donde usted mueva el puntero del registro independiente de un requeriemiento del grid, necesitará hacer lo siguiente: 1. Modificar FILE-POS para reflejar la posición actual del registro. Puede usar números

de FILE-POS fuera del rango de registros disponibles en el grid. Por ejemplo, Si posiciona el puntero del registro uno antés al primero en el grid, asignando "0" a FILE-POS. Fije FILE-POS a "1" para apuntar al primer registro en el grid, "0" para apuntar el registro antes que, "-1" para apuntar 2 registros antes y así sucesivamente. Puede usar números mayores al último registro del grid indicando una posición más alla del grid.

2. Reposicionar el puntero al archivo actual haciendo correspondencia al valor FILE-POS. Puede hacer esto leyendo de nuevo el registro apropiado del archivo de datos.

Page 72: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 72 de 125

Observe que una declaración START no puede ser lo bastante buena. START posiciona el puntero del archivo para que la siguiente declaración READ NEXT o READ PREVIOUS retorne el registro seleccionado. Esto podría no retornar el registro requerido de acuerdo a la lectura.

3. Ignorar el posicionamiento de la información transferida en el evento MSG-PAGED-

NEXT y MSG-PAGED-PREV y el posicionamiento de la información suministrada por el control grid, proveyendo su propia lógica de ubicación, en este caso, FILE-POS puede ser incorrecto; pero FILE-POS es irrelevante en este punto porque usted no lo esta usando. Si usted ignora el valor de FILE-POS, debe decidir si utiliza o nó la característica at-end o at-start de FILE-POS. Si no desea usar esta característica, entonces no fije EVENT-ACTION-FAIL en los eventos MSG-PAGED-NEXT y MSG-PAGED-PREV.

Cualquiera de las técnicas mencionadas pueden ejecutarse. Sin embargo, observe que, FILE-POS podría ser dificil de calcular con la primera técnica, porque es con frecuencia dificil de calcular cuantos registros hay en un archivo con indices.

Propiedad HEADING-COLOR (create, modify, inquire) Tipo Numérico Fija el color para las celdas de encabezado (columnas y filas). El valor del color especificado usa la frse COLOR, para el primer plano y el fondo.

Propiedad HEADING-DIVIDER-COLOR (create, modify, inquire) Tipo Numérico Fija el color usado para las líneas divisorias de una columna o una fila en un encabezado. Cuando esta propiedad es fijada en cero (por defecto), las divisiones en el encabezado son dibujadas usando el mismo color asignado al resto del grid.

Propiedad HEADING-FONT (create, modify, inquire) Tipo Numérico Fija la fuente a ser usada por las filas y columnas de encabezado. Debe ser fijado a un valor valido de fuente. Observe que HEADING-FONT tiene precedencia sobre ROW-FONT y COLUMN-FONT, pero no sobre CELL-FONT.

Propiedad HIDDEN-DATA (create, modify, inquire) Tipo Alfanumérico Permite al programa almacenar datos que no seran mostrados en una celda. Una celda puede contener datos visualizados (ver CELL-DATA) y datos ocultos. Los datos ocultos están limitados a 255 bytes por celda. Puede ocultar datos de cualquier formato, incluidos caracteres no imprimibles.

Propiedad HSCROLL-POS (inquire) Tipo Numérico Retorna el número de la columna más a la izquierda de la columna activa y visible. Cuando se usan filas de encabezado, HSCROLL-POS retorna el número de la columna que aparecerá en la columna 1 del grid donde no hay encabezado.

Propiedad INSERT-ROWS (create, modify) Tipo Numérico Cuando se fija a un valor positivo, esta propiedad inserta una cantidad de registros en blanco. Estos son adicionados inmediatamente antes del registro identificado por INSERTION-INDEX. (Ver INSERTION-INDEX).

Propiedad INSERTION-INDEX (create, modify, inquire) Tipo Numérico Fijando esta propiedad a un valor positivo afecta la localización de los registros adicionados vía RECORD-TO-ADD. Cuando es fijado a cero (por defecto), los registros son adicionados al final del grid. Cuando INSERTION-INDEX es positivo, los registros son adicionados inmediatamente antes del correspondiente ítem. Por ejemplo, fijando este a "1" causa que el

Page 73: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 73 de 125

registro sea insertado como el primer registro de la lista. Cuando finaliza de adicionar el siguiente registro, INSERTION-INDEX automaticamente inicializa el valor a cero. Nota: En declaraciones que permitan multiples propiedades, las propiedades serán fijadas en el orden específico. En consecuencia, usted puede fijar ambos INSERTION-INDEX y RECORD-TO-ADD en la misma declaración, suministrando primero INSERTION-INDEX. Por ejemplo, la siguiente declaración adicionará un nuevo registro en la parte superior del grid: MODIFY GRID-1, INSERTION-INDEX = 1, RECORD-TO-ADD = GRID-DATA-1

Cuando inserta un registro, las siguientes propiedades son también afectadas: ROW-COLOR, ROW-FONT, CELL-COLOR, CELL-FONT. Si estas son especificadas para un registro anterior al punto de inserción, entonces será movidos "bajo" un registro. Por ejemplo, si usted tiene especificados ROW-COLOR para "5" registros, y usted inserta “3” registros, entonces el ROW-COLOR será movido al registro "6". Esto causa que la fila y la celda tomen estas caracteristicas.

Page 74: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 74 de 125

Propiedad LAST-ROW (inquire) Tipo Numérico Cuando utiliza inquire, retorna el número del registro de la última celda con datos en el grid. Filas de encabezado son ignoradas para determinar si un registro se encuentra vacío. Si el registro contiene registros vacíos, LAST-ROW retorna cero.

Propiedad MASS-UPDATE (create, modify, inquire) Tipo Numérico Cuando fija un valor diferente a cero, esta propiedad oculta (no para todos) las actualizaciones a la ventana por el control. Esto le permite rápidamente realizar múltiples cambios al grid, con una apariencia más lisa en la ventana. Cuando se fija a cero (por defecto), los cambios hechos al grid son reflejados en la ventana. Observe que la acción de fijar esta propiedad a cero causa que el grid sea repaginado.

Propiedad NUM-COL-HEADINGS(create, modify, inquire) Tipo Numérico Esta propiedad determina el número de las filas que se tratarán como encabezados de columna. Cuando es fijado a cero, las columnas en el grid no tendrán encabezados. Cuando se fije a un valor positivo, este valor corresponderá al número de filas que tendrán encabezados de columna. Por ejemplo, si usted fija el valor de esta propiedad a "2", los primeros dos registros en el grid serán encabezados. Los encabezados son siempre visibles y podrán tener color diferente al cuerpo del grid. Esta propiedad reemplaza el estilo COLUMN-HEADINGS. Si usted especifica COLUMN-HEADINGS, entonces NUM-COL-HEADINGS con un valor de "0" es tratado como si fuera "1". El estilo COLUMN-HEADINGS no tiene efecto cuando NUM-COL-HEADINGS tiene un valor mayor a cero.

Propiedad NUM-ROWS (create, modify, inquire) Tipo Numérico Determina el número total de registros en el grid. Cuando esta propiedad es fijada a un valor positivo, el grid tiene en cuenta exactamente los registros asignados a NUM-ROWS. Cuando es fijado a cero (por defecto), el grid se extiende al último registro que contiene los datos definidos. Cuando es fijado a "-1", el grid se extiende a la siguiente línea después del último registro definido. Esto provee un registro en blanco al final del grid en el cual el usuario puede adicionar un nuevo registro. En el caso de "0" y "-1", el grid aumentará en la medida que nuevos registros sean ingresados.

Propiedad RECORD-DATA (create, modify, inquire) Tipo Alfanumérico Reemplaza inmediatamente un registro completo de texto en el grid. Debe fijar anticipadamente DATA-COLUMNS para denotar en donde cada columna de datos inicia. Debe también fijar la propiedad "Y" para indicar cual fila desea sobrescribir. Si especifica una fila que es mayor al registro actual del final del grid, el efecto es el mismo a adicionar un nuevo registro en este punto. De lo contrario, las filas con registros existentes serán sobrescritas con el nuevo registro. Cuando utiliza inquire, RECORD-DATA retorna el contenido de datos en la fila identificada por la propiedad "Y". Los datos son formateados de acuerdo a DATA-COLUMNS. Si la fila no existe, RECORD-DATA, retornará espacios.

Page 75: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 75 de 125

Propiedad RECORD-TO-ADD (create, modify) Tipo Alfanumérico Adiciona un registro de texto completo en el grid. Debe fijar anticipadamente DATA-COLUMNS para denotar en donde cada columna de datos inicia. El registro es usualmente agregado al final del grid, sin embargo, puede cambiar la posición de inserción usando INSERTION-INDEX. Observe que el nuevo registro es adicionado al grid (sin sobrescribir los datos). Vea CELL-DATA para una forma de adicionas celdas individuales a un grid.

Propiedad RECORD-TO-DELETE (create, modify) Tipo Numérico Elimina un registro completo del grid. El valor de esta propiedad es el número de posición del registro eliminado. Borrar un registro afecta no sólo datos, sino también ROW-COLOR, ROW-FONT, CELL-COLOR y CELL-FONT. Si cualquiera de éstos es especificado para registros que siguen al registro borrado, estos se moverán "arriba" un registro. Causando que las propiedades se conserven. Así, por ejemplo, si el registro "5" tiene una propiedad ROW-COLOR especificada, y usted borra el registro "3", entonces la propiedad ROW-COLOR aplicará al registro ”4".

Propiedad REGION-COLOR (create, modify, inquire) Tipo Numérico Fija el color para una región definida para las filas START-Y y Y y las columnas START-X y X (inclusive). Cuando fija REGION-COLOR, cualquier región de color previa es removida y una nueva región es fijada. REGION-COLOR, es usada comúnmente para destacar un área que el usuario ha seleccionado previamente con el mouse. Para hacer esto, debe fijar REGION-COLOR al color deseado en respuesta al evento MSG-GOTO-CELL-DRAG. Observe que cuando este evento es generado, START-X, X, START-Y y Y contienen los valores definidos y generalmente no es necesario configurarlos.

Propiedad RESET-GRID (create, modify, inquire) Tipo Numérico Cuando es configurado a un valor diferente a cero, desocupa los datos del grid. Además, cualquier propiedad ROW-FONT, ROW-COLOR, CELL-FONT y CELL-COLOR son inicializados. El cursor es posicionado en la parte superior izquierda del grid y la barra de desplazamiento es reducida. RESET-GRID es accionado una vez. Observe que se eliminan los encabezados del grid, así como el cuerpo del grid. Además de que el texto y las imagines asociados serán eliminados.

Propiedad ROW-COLOR (create, modify) Tipo Numérico Fija el color para un registro completo identificado por la propiedad Y. El valor del color especificado se usa de acuerdo a la frase COLOR para el fondo y primer plano

Propiedad ROW-COLOR-PATTERN (create, modify) Tipo Numérico Establece un patrón repetitivo aplicado a las filas en el grid. La primer vez que configura esta propiedad, el color especificado es aplicado a la primera fila del grid. El segundo valor es aplicado a la segunda fila y así sucesivamente. El patrón establecido se repite a lo largo de las filas visibles en el grid. Observe que el patrón del color es fijado a las filas visibles en el grid, independiente de la posición actual de la barra vertical de desplazamiento. Desplazándose a través del grid no cambia los aspectos visibles del patrón de color. Este ejemplo configura dos patrones de color donde la primera fila tendrá un fondo blanco (512) y la segunda tendrá un fondo Amarillo (480). En ambos casos el color del primer plano no se especifica (cero por defecto): ROW-COLOR-PATTERN = ( 512, 480 )

Page 76: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 76 de 125

Propiedad ROW-DIVIDERS (create, modify) Tipo Numérico Esta propiedad establece el ancho en píxeles (in píxeles) de los divisores de las filas. Cada vez que configura esta propiedad a un valor no negativo, fija el ancho de la división para una fila de un registro. El primer valor aplicará a la primera fila, el segundo a la segunda y así sucesivamente. El patrón establecido para el primer registro se repite a lo largo del grid. Para limpiar el grid con los valores establecidos asigne el valor de "-1". El valor por defecto es de un píxel de ancho.

Propiedad ROW-FONT (create, modify) Tipo Numérico Fija el valor de la fuente para el registro identificado por la propiedad Y. Se debe fijar con un valor de fuente valida. Observe que ROW-FONT se refiere a la fuente usada por un registro completo, no solo una fila.

Propiedad SEARCH-OPTIONS (create, modify) Tipo Alfanumérico Esta propiedad controla cómo las búsquedas son realizadas en el grid. Nota: Las opciones de búsqueda en el grid no se visualizan a través de una interfase de usuario. Usted debe construir una interfase para que el usuario pueda realizar una búsqueda. Una interfase común es una ventana de dialogo pop-up, donde el usuario pueda fijar el texto de búsqueda y la opción deseada. Otra interfase típica es un control entry-field en la misma ventana del grid, con un botón “Buscar” al lado del entry-field.

La propiedad SEARCH-OPTIONS debe ser asignada con base en una estructura similar a la siguiente:

01 GRID-SEARCH-OPTIONS. 03 GRID-SEARCH-DIRECTION PIC 9. 88 GRID-SEARCH-FORWARDS VALUE ZERO, FALSE 1. 03 GRID-SEARCH-WRAP-FLAG PIC 9. 88 GRID-SEARCH-WRAP VALUE ZERO, FALSE 1. 03 GRID-SEARCH-CASE-FLAG PIC 9. 88 GRID-SEARCH-IGNORE-CASE VALUE ZERO, FALSE 1. 03 GRID-SEARCH-MATCH-FLAG PIC 9. 88 GRID-SEARCH-MATCH-ANY VALUE ZERO. 88 GRID-SEARCH-MATCH-LEADING VALUE 1. 88 GRID-SEARCH-MATCH-ALL VALUE 2. 03 GRID-SEARCH-LOCATION-FLAG PIC 9. 88 GRID-SEARCH-VISIBLE VALUE ZERO. 88 GRID-SEARCH-HIDDEN VALUE 1. 88 GRID-SEARCH-ALL-DATA VALUE 2. 03 GRID-SEARCH-SKIP-FLAG PIC 9. 88 GRID-SEARCH-SKIP-CURRENT VALUE ZERO, FALSE 1. 03 GRID-SEARCH-CURSOR-FLAG PIC 9. 88 GRID-SEARCH-MOVES-CURSOR VALUE ZERO, FALSE 1. 03 GRID-SEARCH-COLUMN PIC 9(5). 88 GRID-SEARCH-ALL-COLUMNS VALUE ZERO.

Una copia de esta estructura puede ser encontrada en la librería "acugui.def". Esta contiene la configuración de los valores por defecto para todos los parámetros de búsqueda en el grid.

Page 77: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 77 de 125

Para configurar las propiedades de SEARCH-OPTIONS, especifique el nombre de la estructura de datos descrita en los campos de entrada del grid o por la declaración "modify". El ejemplo a continuación usa la declaración "modify" para asignar la propiedad:

MODIFY GRID-1, SEARCH-OPTIONS = GRID-SEARCH-OPTIONS Para configurar nuevos valores de búsqueda para un grid, comience utilizando la declaración "inquire" para encontrar los valores actuales (esto puede ser modificado previamente). Luego, fije el valor deseado para escoger los parámetros de búsqueda con la declaración "set", y finalmente, "modify" el grid para aplicar los nuevo valores. El siguiente ejemplo muestra como cambiar los valores para dos de los parámetros de búsqueda y aplicar la nueva opción de búsqueda del grid.

INQUIRE grid-1, SEARCH-OPTIONS IN GRID-SEARCH-OPTIONS SET (opción-1) TO TRUE SET (opción-2) TO TRUE MODIFY grid-1, SEARCH-OPTIONS = GRID-SEARCH-OPTIONS

Los parámetros de SEARCH-OPTIONS tienen las siguientes particularidades: GRID-SEARCH-FORWARDS

Cuando es verdadero, la búsqueda comienza de izquierda a derecha y de arriba hacia abajo en el grid. Este es el comportamiento por defecto. Cuando es falso, la búsqueda se ejecuta de derecha a izquierda y de abajo hacia arriba.

GRID-SEARCH-WRAP Cuando es verdadero (por defecto), una búsqueda "wraps around" cuando acierta en la parte superior o inferior del grid. Esto causa que la búsqueda proceda del fin opuesto del grid. Cuando es falso, la búsqueda se detiene al encontrar la parte superior o inferior del grid.

GRID-SEARCH-IGNORE-CASE

Cuando es verdadero (por defecto), la búsqueda ignora las diferencias de mayúscula y minúscula entre letras para determinar si dos cadenas son iguales.

GRID-SEARCH-MATCH-ANY

Cuando es verdadero (por defecto), buscará una cadena de datos similar al contenido de una celda de datos. Por ejemplo, una búsqueda para "bcd" se encontrará en la cadena "abcde".

GRID-SEARCH-MATCH-LEADING Cuando es verdadero, la concordancia de la búsqueda de una cadena de texto se realizará al inicio del texto de una celda de datos. Por ejemplo, una búsqueda de "bcd" se encontrará en la cadena de texto "bcde", pero no en la cadena "abcde".

GRID-SEARCH-MATCH-ALL

Cuando es verdadero, la concordancia de la búsqueda de la cadena de texto se hará únicamente si el texto de la cadena es igual al encontrado en la celda de datos. Por ejemplo, "bcd" corresponderá a "bcd", pero no a "abcde" o "bcde".

GRID-SEARCH-VISIBLE

Page 78: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 78 de 125

Cuando es verdadero (por defecto), la búsqueda se realizará únicamente contra las celdas visibles en el grid.

GRID-SEARCH-HIDDEN

Cuando es verdadero, la búsqueda se realizará únicamente contra las celdas ocultas en el grid.

GRID-SEARCH-ALL-DATA

Cuando es verdadero, la búsqueda se realizará contra las celdas visibles y ocultas en el grid.

GRID-SEARCH-SKIP-CURRENT Cuando es verdadero (por defecto), la celda donde se inicia la búsqueda no es tenida en cuenta.

GRID-SEARCH-MOVES-CURSOR Cuando es verdadero (por defecto), El cursor del grid se moverá a la celda encontrada después de realizarse la búsqueda. El grid podrá realizar un desplazamiento para ubicar la celda visible. Si la búsqueda falla el cursor no se moverá, cuando esta propiedad es falsa el cursor no se moverá así el resultado de la búsqueda haya sido exitoso.

GRID-SEARCH-COLUMN

Cuando GRID-SEARCH-ALL-COLUMNS es verdadero, la búsqueda se realiza a través de cada columna en el grid. Por otra parte, si usted fija GRID-SEARCH-COLUMN a un valor diferente a cero, la búsqueda se hará en la columna especificada y las otras no serán tenidas en cuenta. Observe que una búsqueda en un encabezado de fila o columna no son comúnmente realizadas. Sin embargo, puede realizar una búsqueda en una fila de encabezado configurando GRID-SEARCH-COLUMN a "1" (asumiendo que tiene una fila de encabezado). No podrá realizar búsquedas en una columna de encabezado.

Si necesita limitar su búsqueda a 2 o más columnas, pero no a todas, entonces necesitará programar la búsqueda interna limitada, configurando GRID-SEARCH-ALL-COLUMNS y GRID-SEARCH-SKIP-CURRENT a verdadero y GRID-SEARCH-MOVES-CURSOR a falso. Luego realizará la búsqueda en un bucle, terminando el bucle cuando GRID-SEARCH-COLUMN sea igual a una de las columnas deseadas o cuando la búsqueda falle. La búsqueda falla cuando no encuentra una concordancia o cuando retorna la primera celda que corresponde al criterio de búsqueda (en este caso, los datos pueden aparecer en celdas fuera de las columnas no deseadas). Después de realizar una búsqueda exitosa, coloque el cursor en la celda usando las propiedades CURSOR-X y CURSOR-Y.

El siguiente ejemplo desactiva "wrapping" y activa una búsqueda hacia adelante en un particular grid. Muestra cómo se cambian algunos valores, mientras otros son dejados igual al valor por defecto:

COPY "acugui.def". INQUIRE GRID-1, SEARCH-OPTIONS IN GRID-SEARCH-OPTIONS SET GRID-SEARCH-WRAP TO FALSE SET GRID-SEARCH-FORWARDS TO TRUE MODIFY GRID-1, SEARCH-OPTIONS = GRID-SEARCH-OPTIONS

Page 79: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 79 de 125

Nota: Los valores por defecto serán los mismos si usted mueve ZEROS a la estructura de datos GRID-SEARCH-OPTIONS. (create, modify, inquire)

Propiedad SEARCH-TEXT (create, modify) Tipo Alfanumérico Cuando usted asigna esta propiedad, el grid inicia una búsqueda usando las actuales opciones de búsqueda. El programa busca el valor asignado a esta propiedad. La búsqueda comienza en la celda identificada por las propiedades X y Y. Si la búsqueda es exitosa, entonces X y Y serán actualizadas para reflejar la celda encontrada. El valor del regreso de esta propiedad es la posición de la búsqueda: GRDSRCH-NOT-FOUND Valor 0 No se encuentran datos concordantes GRDSRCH-FOUND Valor 1 Búsqueda exitosa GRDSRCH-WRAPPED Valor 2 Búsqueda exitosa pero hubo un “wrap”

Si X y Y identifican una celda fuera del rango de celdas, entonces el comienzo de la celda es determinado como si la búsqueda es "wrapped" desde la posición lógica (X,Y). Por ejemplo, si el punto de partida es una celda más allá de la celda al extremo derecho, una búsqueda comenzará en la primera celda de la siguiente fila. Puede usar esto para forzar una búsqueda del grid completo iniciando delante de la fila "0", o una búsqueda hacia atrás desde la última fila al final del grid. El siguiente código de ejemplo realiza una búsqueda en un grid con la palabra "ciencia", iniciando en la celda donde el cursor se encuentra ubicado: INQUIRE GRID-1, CURSOR-X IN CUR-COL, CURSOR-Y IN CUR-ROW MODIFY GRID-1 (CUR-ROW, CUR-COL) SEARCH-TEXT = "ciencia" GIVING RESULT-1 IF RESULT-1 > GRDSRCH-NOT-FOUND DISPLAY MESSAGE BOX "Búsqueda exitosa". Nota: Las opciones de búsqueda en el grid no se visualizan a través de una interfase de usuario. Usted debe construir una interfase para que el usuario pueda realizar una búsqueda. Una interfase común es una ventana de dialogo pop-up, donde el usuario pueda fijar el texto de búsqueda y la opción deseada. Otra interfase típica es un control entry-field en la misma ventana del grid, con un botón “Buscar” al lado del entry-field.

Propiedad SEPARATION (create, modify) Tipo Numérico Describe el monto del espacio en blanco preservado al final de cada columna. Este espacio aparece entre el final del dato y el inicio de la siguiente columna. Este espacio es expresado como décimas del ancho estándar de la fuente. Por ejemplo, un valor de "5" indica la mitad del ancho de un carácter. Cada vez que usted configura esta propiedad, fija el monto de separación para la siguiente columna en el grid, iniciando con el primero. Configurando esta propiedad a "-1" limpia el monto de separación previamente especificado. El valor por defecto “5", usado para una separación no definida es dado por la variable de configuración COLUMN-SEPARATION.

Propiedad START-X (create, modify) Tipo Numérico La propiedad START-X es usada en conjunción con las propiedades START-Y, X, y Y para definir una región rectangular en el grid. Esta región es usada cuando configura REGION-COLOR. START-X contiene el número de columna. La región pintada REGION-COLOR comienza con START-X y se extiende hasta X.

Page 80: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 80 de 125

Propiedad VIRTUAL-WIDTH (create, modify, inquire) Tipo Numérico Fija el ancho completo lógico del grid. Esto es usado únicamente con grids que tienen una barra de desplazamiento horizontal. Este valor es expresado en caracteres (medido usando el ancho de la fuente estándar). Si no es especificado, el grid se extiende a 10 caracteres más allá del último DISPLAY-COLUMN especificado (haciendo la columna 10 caracteres más de ancho).

Propiedad VPADDING (create, modify, inquire) Tipo Numérico Configura el monto del espacio vertical en blanco de cada fila. Este valor es el porcentaje del ancho de la fuente asignada al grid con un espacio extra adicional (p.e., separación entre las celdas de datos y las celdas de división de las filas). El valor por defecto es "50". Observe que esto produce una apariencia similar a una serie de campos de entrada.

Propiedad X (create, modify, inquire) Tipo Numérico La propiedad X contiene el número de columna. Esto es usado en muchas propiedades para conocer el valor de la columna. Por ejemplo, la propiedad COLUMN-COLOR fija el color para la columna identificada por la propiedad X. El número de la columna comienza en "1". Recuerde que las propiedades se configuran en el orden específico en una declaración.

Propiedad Y (create, modify, inquire) Tipo Numérico La propiedad Y es similar a la propiedad X, excepto que esta toma el número del registro en lugar del número de la columna.

Estilo Page Grid

Cuando usa el estilo PAGED en un grid, el grid únicamente contiene la cantidad de registros que se pueden ver por pantalla. Esto es llamado una página (page) de datos. La barra de desplazamiento vertical encontrada en un grid normal es reemplazada por cuatro botones. Estos botones responden a los siguientes requerimientos: obtener el siguiente registro, anterior registro, siguiente página o la página previa. Cuando el usuario hace clic en uno de estos botones, el grid envía un mensaje al programa solicitando el apropiado dato de acuerdo a cuál botón fue presionado. Este dato normalmente viene desde un archivo indexado. La lógica esperada del programa será realizar una o más declaraciones READ NEXT o READ PREVIOUS para recuperar el dato. El estilo Paged es conceptualmente similar al estilo page de un control list boxes. La programación es similar con paged list boxes, sin embargo, existen algunas diferencias en la programación de paged grids. Estas diferencias hacen que la programación sea más sencilla en un grid con el estilo PAGED. Las diferencias importantes son: La estructura de programación es simplificada porque los procedimientos

de evento, en lugar de responder a varios valores de excepción, son codificados en paginación lógica. Menor código es requerido, porque no hay la necesidad de escribir mayor

código para las acciones Next Page y Previous Page. Puede optar por

Page 81: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 81 de 125

escribir código adicional si quiere definir las acciones diferentes a la respuesta normalmente esperada de las operaciones Next Page y Previous Page. El código en respuesta a las operaciones First Page y Last Page es simple.

Adicionalmente, comunica más requerimientos a través de los eventos MSG-PAGED-NEXT, MSG-PAGED-PREV, MSG-PAGED-NEXTPAGE, MSG-PAGED-PREVPAGE, MSG-PAGED-FIRST y MSG-PAGED-LAST. El estilo PAGED nunca toma más datos a los que pueda mostrar el grid. Cuando adiciona un registro al final de una página completa, el control borra el registro ubicado en la parte superior y que no corresponde a un encabezado. Esto causa que el contenido del grid se desplace hacia arriba. Cuando adiciona un registro en cualquier otra posición, el ultimo registro en el grid es eliminado. Esto causa que todos los registros después del primero existente sean desplazados hacia abajo. Nota: La celda actual no se cambia cuando el grid es paginado. En otras palabras, si el cursor del grid esta en la fila 2, columna 3, permanecerá en la fila 2, columna 3 después que el usuario hace clic en el botón "next record". Esto moverá efectivamente el cursor a un nuevo registro, aunque su localización física no haya cambiado.

Page 82: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 82 de 125

Laboratorio 3.7

Hasta ahora... Ha utilizado la mayoría de controles gráficos y asociado a parágrafos dentro del event paragraph.

Objetivos Configurar algunas propiedades del GRID. Escribir el código necesario para cargar el GRID, a partir de un

archivo de datos. Asociar el código a la ventana principal del proyecto.

Tareas generales Configure las propiedades del GRID, asociando una tabla de datos

en la propiedad “Column Settings”. Escriba el código necesario para cargar el GRID, utilice las

propiedades MASS-UPDATE, RESET-GRID y MODIFY. Genere y compile el proyecto. Verifique el programa, utilizando el debug de AcuBench. El diseño final de la ventana con el GRID cargado podría quedar de

la siguiente forma:

Page 83: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 83 de 125

Laboratorio 3.8

Hasta ahora... Conoce en su mayoría los controles gráficos y sus propiedades, asignado parágrafos a los repectivos controles.

Objetivos Asignar eventos al GRID. Escribir el código necesario para asociar a los eventos. Identificar el comportamiento de los eventos asociados al GRID.

Tareas generales Aplique el estilo necesario para que crear títulos de encabezado.

Escriba el código necesario para asociar a los eventos MSG-GOTO-CELL, MSG-GOTO-CELL-DRAG, MSG-HEADING-DRAGED.

Genere y compile el proyecto. Verifique el programa, utilizando el debug de AcuBench.

Page 84: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 84 de 125

Laboratorio 3.9

Hasta ahora... Conoce en su mayoría la aplicación de los controles gráficos, sus propiedades e introduce a la asociación de eventos.

Objetivos Asociar eventos de modo de entrada al GRID. Escribir el código necesario para asociar a los eventos. Identificar el comportamiento de los eventos asociados al GRID.

Tareas generales Escriba el código necesario para que el usuario pueda realizar una

modificación en una celda y posteriormente ese cambio se vea reflejado en el archivo de datos.

Genere y compile el proyecto. Verifique el programa, utilizando el debug de AcuBench.

Page 85: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 85 de 125

Laboratorio 3.10

Hasta ahora... Aplica los diferentes eventos a un control grid.

Objetivos Aprender la lógica de desarrollo para un grid con estilo PAGED. Entender el código entregado con este laboratorio. Asociar los parágrafos y demás necesarios al GRID.

Tareas generales Cambie la propiedad al GRID para aplicar el estilo PAGED.

Elimine las propiedades que no tengan relación con el estilo PAGED.

Cree o Asocie las propiedades necesarias para tener una funcionalidad exitosa en el grid.

Escriba el código que le ha sido entregado en la hoja impresa, en su Event Paragraph.

Corrija las líneas que deban ser corregidas, según el nombre asignado a los controles.

Asocie las rutinas de parágrafo a su proyecto dependiendo del evento generado.

Compile y ejecute el programa. Verifique el programa, utilizando el debug de AcuBench.

Page 86: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 86 de 125

*---- INICIA-CLIENTES. MOVE LOW-VALUES TO CD-CLIENTE. START CLIENTES KEY >= CD-CLIENTE INVALID KEY EXIT PARAGRAPH END-START. MODIFY GD-CLIENTES, ACTION ACTION-FIRST-PAGE. *---- EVENTOS-PAGED. EVALUATE EVENT-TYPE WHEN MSG-PAGED-FIRST PERFORM EVENTO-PRI-PAG WHEN MSG-PAGED-LAST PERFORM EVENTO-ULT-PAG WHEN MSG-PAGED-NEXT PERFORM EVENTO-SIG-PAG WHEN MSG-PAGED-PREV PERFORM EVENTO-PRE-PAG END-EVALUATE. *---- EVENTO-SIG-PAG. PERFORM EVENT-DATA-2 TIMES READ CLIENTES NEXT RECORD AT END MOVE EVENT-ACTION-FAIL TO EVENT-ACTION EXIT PARAGRAPH END-READ END-PERFORM PERFORM MOVER-DATOS-AL-GRID MODIFY GD-CLIENTES, RECORD-TO-ADD = TABLA-CLIENTES. *---- EVENTO-PRE-PAG. PERFORM EVENT-DATA-2 TIMES READ CLIENTES PREVIOUS RECORD AT END MOVE EVENT-ACTION-FAIL TO EVENT-ACTION EXIT PARAGRAPH END-READ END-PERFORM. PERFORM MOVER-DATOS-AL-GRID. MODIFY GD-CLIENTES, INSERTION-INDEX = 2, RECORD-TO-ADD = TABLA-CLIENTES. *---- EVENTO-PRI-PAG. MOVE LOW-VALUES TO CD-CLIENTE. START CLIENTES KEY >= CD-CLIENTE INVALID KEY MOVE EVENT-ACTION-FAIL TO EVENT-ACTION END-START. *---- EVENTO-ULT-PAG. MOVE HIGH-VALUES TO CD-CLIENTE

Page 87: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 87 de 125

START CLIENTES KEY <= CD-CLIENTE INVALID KEY MOVE EVENT-ACTION-FAIL TO EVENT-ACTION END-START. *---- MOVER-DATOS-AL-GRID. INITIALIZE TABLA-CLIENTES MOVE CD-CLIENTE TO CD-CLIENTE-W MOVE ID-CLIENTE TO ID-CLIENTE-W MOVE TP-IDECLI TO TP-CLIENTE-W MOVE DE-CLIENTE TO DE-CLIENTE-W.

Page 88: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 88 de 125

• Tree View Control

El control Tree View visualiza una lista de datos en orden jerárquico. Esta lista es endentada para mostrar la relación entre los ítem de datos. El usuario puede “expandir” o “contraer” ítem en la lista para ver u ocultar ítem dependientes. Un ejemplo de un control tree view es el "Contenido" del explorador de Windows.

Ítem

En un control Tree view, cada ítem en una lista jerárquica es identificado por un ID que es asignado al mismo tiempo que el elemento es adicionado a la lista. Esto proporciona una única forma de identificar cada ítem, permitiendo así, tener ítem duplicados en cualquier parte de la lista sin riesgo a ser confundidos. Los identificadores en un control Tree view son declarados en COBOL como un ítem de dato USAGE POINTER. El control Tree view tiene una variedad de propiedades especiales, incluyendo la habilidad para almacenar datos ocultos con cualquier ítem y visualizar bitmaps adyacentes a los ítem. La propiedad especial llamada ITEM es usada

Page 89: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 89 de 125

para identificar cual ítem en la jerarquía ha sido afectado por el valor de la propiedad en mención. Comúnmente, usted fija el valor de la propiedad ITEM al ID del ítem activo, y luego fijará el resto de propiedades (como son: ITEM-TEXT o ENSURE-VISIBLE o HAS-CHILDREN o BITMAP-NUMBER) asignado un valor o configurando este ítem. Observe que usted debe fijar el valor de ITEM antes de fijar otras propiedades. ITEM es el "índice" para el control Tree view (ver las declaraciones MODIFY e INQUIRE para una descripción de los índices).

Relación Padre e Hijo

Los ítem en un control Tree view son colocados dentro de la lista jerárquica acorde a la relación "padres" e "hijos" que usted especifique. La propiedad especial PARENT permite especificar si un ítem está por encima nivel de la jerarquía (PARENT = 0, por defecto) o es el hijo de otro ítem en la jerarquía (el valor PARENT fijará el ID del ítem padre). Otra especial propiedad del control Tree view, HAS-CHILDREN, permite especificar si nuevos ítem hijos se pueden agregar por debajo de un ítem específico en la lista. Cuando HAS-CHILDREN = 0 (por defecto), un ítem tendrá hijos únicamente si se encuentran físicamente presentes en el control. Esto no permite adicionar ítem hijos por el usuario. Si HAS-CHILDREN es fijado a un valor diferente a cero (HAS-CHILDREN = 1), indica que el ítem identificado por la propiedad ITEM permite adherir ítem hijos. Esta configuración es útil cuando sea impractico mostrar de inmediato el árbol de ítem al control. En esta situación, usted carga el nivel más alto del árbol y luego usa esta propiedad para identificar cuál de los ítem primarios permiten tener hijos. Entonces, cuando el usuario expanda un ítem en particular, usted programa una respuesta en su programa para el evento MSG-TV-EXPANDING adicionando el apropiado ítem hijo al control. La propiedad HAS-CHILDREN contiene cuál ítem del control podrá ser expandido.

Adicionando ítem hijos

En muchos casos, no es practico mostrar la totalidad de un Tree View con todos los ítem que contiene. Por ejemplo, si usted desea representar cada archivo o carpeta en un drive de un disco local, con sus jerarquías, un control Tree view es la mejor forma de hacerlo. Sin embargo, esto tomaría bastante tiempo si deseo mostrar todo el árbol: cada archivo o carpeta en el drive deberá ser localizado. Una forma para resolver este inconveniente es mostrar únicamente los niveles superiores, y luego ir mostrando los subniveles en la medida que el usuario los visite.

Page 90: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 90 de 125

Para hacer esto, usted debe notificar que el ítem superior tiene derecho a contener un hijo y de esta forma ser expandido. Para ello debe fijar la propiedad HAS-CHILDREN a "1" cuando usted adicione el ítem padre. Por ejemplo: MODIFY TV-1, ITEM-TO-ADD = "Ítem Padre" GIVING PARENT-1, HAS-CHILDREN = 1 Esto informa al control que el ítem tiene un hijo, aún cuando, el hijo no este físicamente presente en el control. Hay dos enfoques que usted puede tomar para administrar la visualización del hijo de un ítem: Adicionar hijos ítem una sola vez La primera estrategia es adicionar los ítem hijos la primer vez que el padre es expandido, luego salir en el control. Para codificar esto, responda al evento MSG-TV-EXPANDING viendo si existe un hijo del ítem padre. Si no, entonces adiciónelos en este punto. Un típico procedimiento de evento podría ser: TREE-VIEW-EVENT-1. EVALUATE EVENT-TYPE WHEN MSG-TV-EXPANDING IF EVENT-DATA-1 = TVFLAG-EXPAND |Ítem expandido MODIFY TV-1( EVENT-DATA-2 ), NEXT-ITEM = TVNI-CHILD GIVING ITEM-1 IF ITEM-1 = NULL |Sin hijos PERFORM ADICIONA-HIJO END-IF END-IF END-EVALUATE El procedimiento ADICIONA-HIJO haría el trabajo necesario para adicionar los hijos. En este ejemplo, EVENT-DATA-1 contiene un flag que describe si el ítem padre ha sido expandido o contraído, y EVENT-DATA-2 contiene el ID del ítem padre. Adicionando ítem hijos en cada expansión La segunda estrategia es adicionar ítem hijos cada vez que el padre es expandido, y luego removerlos cuando el padre sea contraído. El código para adicionar ítem es ligeramente fácil, porque no tiene que prevenir el adicionamiento de múltiples ítem. Sin embargo, debe escribir código adicional para manejar la remoción de los ítem hijos. Un típico procedimiento de evento para esto sería:

Page 91: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 91 de 125

TREE-VIEW-EVENTO-1. EVALUATE EVENT-TYPE WHEN MSG-TV-EXPANDING IF EVENT-DATA-1 = TVFLAG-EXPAND PERFORM ADICIONA-HIJO END-IF WHEN MSG-TV-EXPANDED IF EVENT-DATA-1 = TVFLAG-COLLAPSE MODIFY TV-1, ITEM-TO-EMPTY = EVENT-DATA-2 END-IF Nota: Es importante que adicione el hijo en respuesta al evento MSG-TV-EXPANDING, y lo remueva en respuesta al evento MSG-TV-EXPANDED. Cualquier otra estrategia puede ser confusa y causar resultados impredecibles al control.

Page 92: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 92 de 125

Laboratorio 3.11

Hasta ahora... Conoce el funcionamiento de los controles gráficos y aplica eventos a dichos controles.

Objetivos Crear un nuevo programa. Aprender el uso del control TREE VIEW. Crear el control Tree view. Asociar el código necesario para implementar una ejecución en un

control Tree View.

Tareas generales Copie el archivo treeview.bmp en la carpeta “Resource”. En la ventana del programa Lab-01, cambie la propiedad ‘Window

Type’ a Independent. Cree un nuevo programa estándar llamado Lab-02. Cree un control Tree view en la ventana. Cree un botón de salir de la aplicación. Cree un label con el nombre LA-VENMEN-SCR Cree una variable para este label llamada DE-MENAPL-W con la

propiedad PIC X(256). Asocie el bitmap “treeview.bmp” al control Tree view. Como nombre para el control, asigne “TV-CLIENTE-SCR”. Cree 4 niveles de acuerdo a las siguientes características.

Ítem: Aplicaciones Tipo Padre (Name) TV-APLICA-SCR Bitmap Number 1 Expand TRUE Has Children 1:True Identified Pointer ID-ITEAPL-W Label Aplicaciones

Ítem: Clientes Tipo Hijo (Name) TV-CLIENT-SCR Bitmap Number 3 Expand FALSE Has Children 0:False Identified Pointer ID-APLCLI-W Label Clientes

Ítem: Utilidades Tipo Padre (Name) TV-UTILID-SCR Bitmap Number 1 Expand FALSE Has Children 0:False Identified Pointer ID-ITEUTI-W Label Utilidades

Ítem: Ayuda Tipo Padre (Name) TV-UTILID-SCR Bitmap Number 1

Page 93: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 93 de 125

Expand FALSE Has Children 0:False Identified Pointer ID-ITEAYU-W Label Ayuda

La presentación de la ventana podría quedar de la siguiente forma:

Page 94: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 94 de 125

• Web Browser

El control WEB BROWSER es usado en conjunto con Microsoft Internet Explorer 4.0 y superiores. Proporciona el panorama que usted ve en la ventana principal de Microsoft Internet Explorer, suministrando además la funcionalidad para visualizar contenido de páginas Web HTML, script, controles ActiveX y contenido applet de Java. El control también alberga documentos objeto OLE (Object Linking and Embedding), soporta hipervínculos OLE y permite a los usuarios visualizar objetos Windows como carpetas y archivos.

Métodos

Los Métodos son implementados como propiedades en ACUCOBOL-GT. Para invocar un método, usted modifica el control, configura el valor de varias propiedades que representan los parámetros del método. Luego, usualmente

Page 95: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 95 de 125

en la misma declaración modificada, fija una propiedad particular que representa el método a invocar. En algunos casos solo configura el valor de un control invocando un método. A continuación se presenta una tabla de los métodos con su correspondiente propiedad ACUCOBOL y descripción:

Page 96: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 96 de 125

método Propiedad Descripción

GoBack GO-BACK Navega al ítem previo en el histórico de la lista. GoForward GO-FORWARD Navega al ítem siguiente en el histórico de la

lista. GoHome GO-HOME Navega a la página actual configurada GoSearch GO-SEARCH Navega al portal de Microsoft Navigate VALUE Navega al recurso identificado por un URL o ruta

de archivo. Refresh REFRESH Recarga la página actual Stop STOP Detiene una carga de página Para invocar los métodos GoBack, GoForward, GoHome, GoSearch, Refresh, y Stop, simplemente modifique el control, configurando el valor de la propiedad a "1". Para invocar el método Navigate, modifique la propiedad del control configurando VALUE al URL deseado. Por ejemplo, para invocar el método GoBack:

MODIFY BROWSER-1 GO-BACK=1. Para invocar el método Navigate: MODIFY BROWSER-1 VALUE="http://www.escobol.com". O si usted tiene definido el control Web browser con una variable URL-1: MOVE "http://www.escobol.com" to URL-1. DISPLAY <<nombre_control>>. Estos métodos son invocados asincrónicamente. Esto permite que el verbo MODIFY puede finalizar la ejecución antes que la operación sea completada. Puede verificar el valor de la propiedad BUSY (ver adelante) para determinar si la operación ha sido completada.

Page 97: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 97 de 125

Otras propiedades

método Propiedad Descripción Busy BUSY Indica sí una descarga o navegación esta en

progreso. LocationName TITLE Nombre del recurso que el control Web browser

actualmente esta mostrando. LocationURL VALUE URL del recurso que el control Web browser

actualmente esta mostrando. Type TYPE Tipo de contenido del actual documento objeto BUSY, LOCATION-NAME, y TYPE son propiedades de lectura únicamente. Configurar estos valores no tiene ningún efecto. Como con todas las propiedades de control de ACUCOBOL-GT, usted puede usar el verbo INQUIRE para obtener las propiedades del control Web browser. Por ejemplo, chequear si un control WEB BROWSER ha completado la ejecución del último método invocado:

INQUIRE BROWSER-1 BUSY IN BROWSER-1-BUSY. IF BROWSER-1-BUSY = 1 ... END-IF

Para obtener el URL que el navegador esta actualmente visualizando: INQUIRE BROWSER-1 VALUE IN URL-1.

O si usted tiene definido un control Web Browser con el valor URL-1 en un ítem de su screen section, LocationURL será movido automáticamente a URL-1 cuando un evento o excepción ocurra o cuando ACCEPT termine. El control Web browser genera los siguientes eventos:

MSG-WB-BEFORE-NAVIGATE MSG-WB-DOWNLOAD-BEGIN MSG-WB-DOWNLOAD-COMPLETE MSG-WB-NAVIGATE-COMPLETE MSG-WB-PROGRESS-CHANGE MSG-WB-STATUS-TEXT-CHANGE MSG-WB-TITLE-CHANGE

Page 98: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 98 de 125

Laboratorio 3.12

Hasta ahora... Conoce en general todos los controles gráficos, así como sus aplicaciones y asociación de eventos.

Objetivos Crear un nuevo programa. Aprender el uso del control WEB BROWSER. Crear el control WEB BROWSER. Asociar el código necesario para implementar una simulación de

un Internet Explorer.

Tareas generales Cree un nuevo programa estándar llamado Lab-03. Cree los siguientes controles en la ventana.

Cuatro botones de navegación y control de acuerdo al modelo entregado Un control Entry Field Un control Label Un control Web Browser Un control Status Bar

En la Working, cree las siguientes variables:

77 VR-ANCHO-W PIC S999V99. 77 VR-LINEA-W PIC S999V99. 77 WB-TIT-PAN PIC X(100)VALUE IS SPACES.

Las siguientes variables deben ser creadas con los controles respectivos:

* WB-ONLINE-SCR 77 NU-LINWB-W PIC S9(4)V9(2) VALUE 42,50. 77 NU-TAMWB-W PIC S9(4)V9(2) VALUE 64,00. 77 DE-WEB-W PIC X(256) VALUE "www.solutioactio.com". * EF-URL-SCR 77 NU-TAMEF-W PIC S9(4)V9(2) VALUE 34,30. 77 DE-WEB-X PIC X(256) VALUE "http://www.solutioactio.com". * WB-BAR-EST 77 DE-LINEST-W PIC X(100). * BR-WEB002-SCR 77 NU-TAMLIN-W PIC S9(4)V9(2) VALUE 64,00. Escriba el código anexo a este Laboratorio en el Event Paragraph. Asocie los parágrafos de acuerdo a lo que usted considere se

deba asociar. Compile y genere la aplicación. Analice lo realizado en el laboratorio y verifique ejecutando en

modo Debug. La presentación de la ventana podría quedar de la siguiente forma:

Page 99: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 99 de 125

Código anexo – Laboratorio 3.12

*----------------------------------------------------------------- *-- Rutinas para el navegador web *----Cuando la navegación es completa. WEB-NAV-COMPLETA. INQUIRE WB-ONLINE-SCR VALUE IN DE-WEB-W. IF DE-WEB-W <> DE-WEB-X MOVE DE-WEB-W TO DE-WEB-X MODIFY EF-URL-SCR, VALUE DE-WEB-X. *----Cambia el estado de búsqueda. WEB-CAM-ESTADO. INQUIRE WB-ONLINE-SCR STATUS-TEXT IN DE-LINEST-W. MODIFY WBSTATUS-LABEL TITLE DE-LINEST-W. *----Cambia el título. WEB-CAM-TITULO. INQUIRE WB-ONLINE-SCR TITLE IN WB-TIT-PAN. *----Ir a página Web de escobol. WEB-SOLUTIO. MOVE "http://www.escobol.com" TO DE-WEB-W MODIFY EF-URL-SCR, VALUE DE-WEB-W MODIFY WB-ONLINE-SCR VALUE DE-WEB-W. *----Enviar mail. WEB-ENV-MAIL. MOVE "mailto:[email protected]" TO DE-WEB-W MODIFY EF-URL-SCR, VALUE DE-WEB-W MODIFY WB-ONLINE-SCR, VALUE DE-WEB-W. *----Botón anterior de navegación. WEB-BOT-ANTERIOR. MODIFY WB-ONLINE-SCR GO-BACK = 1.

Page 100: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 100 de 125

*----Botón siguiente de navegación. WEB-BOT-SIGUIENTE. MODIFY WB-ONLINE-SCR GO-FORWARD = 1. *----Actualiza Browser. WEB-ACT-BROWSER. MOVE DE-WEB-X TO DE-WEB-W. MODIFY EF-URL-SCR, VALUE DE-WEB-W. MODIFY WB-ONLINE-SCR VALUE DE-WEB-W. *---- VENTANA-AJUSTABLE. EVALUATE TRUE WHEN EVENT-OCCURRED EVALUATE EVENT-TYPE WHEN NTF-RESIZED COMPUTE VR-LINEA-W = EVENT-DATA-1/100 COMPUTE VR-ANCHO-W = EVENT-DATA-2/100 PERFORM AJUSTAR-CONTROLES END-EVALUATE END-EVALUATE. *---- AJUSTAR-CONTROLES. COMPUTE VR-LINEA-W = EVENT-DATA-1/100 COMPUTE VR-ANCHO-W = EVENT-DATA-2/100 COMPUTE NU-TAMEF-W = VR-ANCHO-W - 15,0. COMPUTE NU-TAMLIN-W = VR-ANCHO-W - 0,30. COMPUTE NU-LINWB-W = VR-LINEA-W - 7,50. COMPUTE NU-TAMWB-W = VR-ANCHO-W - 0,30. MODIFY EF-URL-SCR SIZE NU-TAMEF-W CELLS. MODIFY BR-WEB001-SCR SIZE NU-TAMLIN-W CELLS. MODIFY BR-WEB002-SCR SIZE NU-TAMLIN-W CELLS. MODIFY WB-ONLINE-SCR, LINES NU-LINWB-W CELLS, SIZE NU-TAMWB-W CELLS.

Page 101: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 101 de 125

Herramientas y utilidades

AcuBench incluye acceso a una serie de utilidades a las cuales se puede acceder desde el menú Tools. Al seleccionar alguna de las utilidades desde el menú, causa que el workbench visualice un cuadro de dialogo, que permite seleccionar fácilmente las opciones especificadas y ejecutar la utilidad. Desde el menú Tools, puede seleccionar:

cblutl vutil, la utilidad para archivos vision vio alfred, editor de archivos indexados logutil

Cblutl cblutil es usado para ensamblar archivos objeto individuales en librerias objeto, mostrar información de los archivos objeto y trasladar código portable ACUCOBOL-GT's en código nativo (ver Figura 3.1.). Puede crear también una librería objeto por los comandos Project/Settings y Project/Properties.

Figura 3.1. Vutil AcuBench suministra una interfaz gráfica que desempeña las funciones para los archivos vision. Vutil opera en archivos indexados Vision y puede ser usado para extractar información

Page 102: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 102 de 125

de la estructura de un archivo, extractar registros y reconstruir archivos corruptos.

Figura 3.2.

Vio Vio es una utilidad de transferencia de archivo que permite crear archivo de datos y contenido de acceso a archivos. Puede colocar un archivo vio en medios externos, tal como un disquete, o en el disco duro. Vio es adaptado para mover los archivos a sistemas operativos diferentes porque está disponible en la mayoría de las plataformas sostenidas por ACUCOBOL GT y porque ajusta automáticamente aspectos dependiendo de la máquina, tal como un byte-swapping. También permite manejar múltiples volúmenes. Vio corre en dos modos: el modo de la entrada y el modo de la salida. Use el modo de salida para crear un archivo. Use el modo de entrada para lectura y extracción de un archivo.

Figura 3.3. Alfred Alfred es editor de registros indexados. Utilice alfred para ver, modificar, adicionar o eliminar registros individuales almacenados en un archivo indexado. Alfred puede ser especialmente útil para depurar en un programa las disposiciones del archivo de datos y acciones de E/S.

Page 103: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 103 de 125

Puede ser también útil a administradores de sistema que necesitan hacer los cambios ocasionales a nivel del registro a archivos de datos. Observe que Alfred no es adaptado a cambios repetitivos ni en gran escala. Nota: Para poder utilizar Alfred, es necesario tener una estructura de datos XFD (diccionario de datos) de su archivo de datos indexado.

Logutil La utilidad logutil es usada para examinar y editar log’s de transacciones de archivos. Esta utilidad puede únicamente ser usada con archivos log creados en asocio con archivos Vision .

Figura 3.4

Page 104: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 104 de 125

Laboratorio 3.13

Hasta ahora... Conoce el funcionamiento de AcuBench y de sus componentes, así como los controles gráficos y demas relacionados con un proyecto

Objetivos Crear un Proyecto. Crear una estructura de datos. Generar el código necesario para el proyecto.

Tareas generales Con la información adjunta, cree un proyecto, utilizando las

herramientas AcuBench que usted estime convenientes.

Anexo – Laboratorio 3.13 La compañía “CONSTRUCTOR”, desea que usted le desarrolle una aplicación para administrar el inventario de las referencias de sus productos, para ello le suministra la siguiente información:

Descripción Tamaño Código de la Referencia 5 digitos Descripción de la Referencia 256 caracteres Cantidad de Referencias 5 digitos Valor de la referencia 12 enteros y 2 decimales Número de la Orden 8 caracteres Ubicación en Almacén Estante 1 Estante 2 Estante 3

Con esta información genere un proyecto en AcuBench para cargar, modificar y eliminar una referencia, así como ver una lista de consulta de referencias.

Page 105: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 105 de 125

Administración de Transacciones en Archivos

El estándar COBOL presenta una debilidad en su manejo de operaciones de archivo y es el de no proporcionar un método de definir las transacciones. Los beneficios de un sistema de administración de transacciones son mejor ilustrados con un ejemplo: Supongamos que tenemos una aplicación COBOL que maneja la entrada de la orden, quizás entonces realiza estos pasos para aceptar una orden: 1. Escribir un registro de factura. 2. Actualizar un registro de cliente. 3. Escribir en un registro de nómina las comisiones de venta. 4. Actualizar un registro de inventarios. Esta serie de cuatro operaciones de archivo es una unidad lógica. Si el programa fuese interrumpido, y completado únicamente alguna de las cuatro operaciones, entonces los archivos quedarían inconsistentes. Por ejemplo, si el programa se interrumpe después de actualizado el registro del cliente, pero antes de actualizar el registro de inventarios, por consiguiente no tendríamos acceso al registro en el inventario. La solución para este problema es la de proveer un método donde el programador pueda definir un conjunto de operaciones que permitan que todo ocurra o que todo no ocurra. Por lo tanto, si el programa encuentra un error o una terminación, los archivos quedan en un estado consistente.

• Registro de Transacciones

ACUCOBOL-GT soluciona este problema proveyendo la facilidad de generar un registro de transacciones. Todas las operaciones que hacen parte de una transacción son registradas. Una vez registradas, pueden ser consignadas “commit” o reversadas “rollback” por el programa. Si el programa es interrumpido o el sistema falla, el registro (log) del archivo puede ser usado para reconstruir una transacción completa, de ese modo retorna todos los archivos a un estado consistente. El administrador de transacciones ofrece estas dos opciones: Suministrar al programador la habilidad para definir transacciones,

consignar “commit” o reversar “rollback” (usualmente en repuesta a una condición de error).

Page 106: Acubench Manual

Capacitación – Desarrollando un Proyecto

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 106 de 125

La habilidad para reconstruir archivos a un estado consistente después que el programa o el sistema falla. Esta operación es llamada "recovery."

• Tipos de archivo

En general, las transacciones aplican a archivos relativos e indexados, de tipo Vision, C-ISAM, y BTRIEVE, así como también para base de datos Acu4GL (las cuales son tratadas como archivos indexados). Cada operación de transacción es ejecutada en el sistema de archivos vinculada con el runtime ACUCOBOL-GT. Cada sistema del archivo usa su propio mecanismo para manejar las operaciones de la transacción, y algunos y algunos tienen sus propios archivos de log. Los registros de transacción suministran lo siguiente: Un método indicando que registro de transacción es deseado e

identificando cual archivo de log usar. Un medio para decidir cual archivo de operaciones registrar y cual archivo

tiene la capacidad para reversar “rollback”. La habilidad para iniciar “start”, consignar “commit”, y reversar “rollback”,

transacciones en COBOL. Una rutina para realizar la funcione de recuperación “recovery”. Un utilitario para examinar y editar un archivo de registro de transacciones.

• Verbos para administración de transacciones

Son tres los verbos usados en ACUCOBOL-GT para administrar transacciones , esto son: START TRANSACTION COMMIT TRANSACTION ROLLBACK TRANSACTION START TRANSACTION Identifica el inicio de una transacción. COMMIT TRANSACTION Indica el final de una transacción y consigna los cambios hechos. ROLLBACK causa que la transacción sea reversada o cancelada. Hay un implícito COMMIT antes de un STOP RUN o antes del final del programa. Sin embargo, el runtime desempeña un implícito ROLLBACK antes de un STOP RUN si la variable de configuración STOP-RUN-ROLLBACK es fijada. Si el runtime system es terminado por el usuario o encuentra un error fatal previamente a completar una transacción, entonces un ROLLBACK ocurre automáticamente.

Page 107: Acubench Manual

Capacitación – Conversión de Aplicaciones COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 107 de 125

Unidad 4: Conversión de Aplicaciones COBOL

Análisis de conversión

ACUCOBOLTM-GT incluye una potente herramienta de conversión que ayuda a automatizar el proceso de convertir en gráficas las pantallas basadas en caracteres. La herramienta, conocida como Character-to-GUI Wizard, le permite importar rápidamente las pantallas de caracteres al entorno de trabajo AcuBench, reduciendo notablemente el tiempo, esfuerzo y costes de realizar una conversión a GUI. Aunque la herramienta sólo está disponible de momento para plataformas Windows, el código compilado resultante de la conversión se puede ejecutar en cualquier plataforma soportada por ACUCOBOL-GT en tiempo de ejecución. El asistente Character-to-GUI Wizard trabaja examinando una aplicación de caracteres en ejecución y, en un determinado momento, construyendo una pantalla gráfica equivalente. Esta pantalla se importa automáticamente al AcuBench Screen Designer donde podrá hacer las modificaciones que desee. Luego puede usar AcuBench para producir la descripción de una Screen Section (Sección de pantalla) de la pantalla gráfica e integrar esa nueva Screen Section en el programa original. El Character-to-GUI Wizard está diseñado para trabajar con cualquier pantalla de caracteres que haya creado usando la sintaxis ACUCOBOL-GT. Esto le permite trabajar con la mayoría de programas existentes basados en caracteres. Tenga en cuenta que el asistente trabaja con programas que usen cualquiera de las dos técnicas principales de manejo de pantallas de ACUCOBOL-GT: la Screen Section y la sentencia en línea ACCEPT/DISPLAY. Cuando el asistente convierte una pantalla de caracteres a gráficos, cada campo de la pantalla original se crea como etiqueta o como campo de entrada. Estos controles se colocan en las mismas posiciones que los correspondientes campos y tienen el mismo tamaño. Las etiquetas tienen el mismo texto que los campos a partir de los que se crearon. El elemento fuente de datos, si existe, se une al control de forma que se convierte en la propiedad “valor” correspondiente cuando el control se ve en el Screen Designer. La mayor parte del resto de la información, incluido el color, no se copia. El color no se copia porque la mayoría de esquemas de color de caracteres no se ven bien en un sistema gráfico. El asistente usa reglas especiales para decidir si generará un campo, una etiqueta o un campo de entrada. Si descubre que estas reglas de conversión

Page 108: Acubench Manual

Capacitación – Conversión de Aplicaciones COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 108 de 125

producen efectos no deseados (por ejemplo, pantallas con un exceso de campos de entrada), puede convertir la pantalla con un juego de reglas alternativo.

Funcionamiento del Asistente

Para usar el asistente, primero debe hacer que su programa funcione usando ACUCOBOL-GT en una máquina de desarrollo Windows. Para hacer su trabajo, el asistente necesita el compilador y tiempo de ejecución, por lo que primero debe hacer que su programa se pueda ejecutar bajo Windows. Normalmente, eso implica llevar el código objeto a la máquina Windows, cambiar la notación la vía de acceso en los archivos de configuración y ejecutarlo. Sin embargo, si tiene código que por algún motivo no sea transferible, posiblemente deberá hacer algunos ajustes. Una vez que el programa esté funcionando en Windows, se prepara compilándolo con la opción “-Zw”. Por ejemplo: ccbl51 -zw myprog.cbl Esta opción hace que el compilador incluya “comentarios” en el código objeto compilado que utiliza el asistente para determinar el nombre de los elementos de datos relevantes. Puede usar el asistente sin compilarlo antes con “-Zw”, pero será menos probable que el asistente seleccione el tipo de control adecuado para cada campo y la Screen Section resultante no contendrá nombres de datos. Una vez compilado con “-Zw”, ejecute el programa usando una nueva opción “--Char2gui”. Esto se suele hacer desde AcuBench, aunque no es necesario. La opción “--char2gui” hace que el programa arranque con el Character-to-GUI Wizard ejecutándose en segundo plano. Cuando arranca el programa, navegue a la pantalla que desea convertir (vea un ejemplo en la Figura 1). Con la pantalla deseada a la vista, haga clic con el botón derecho en el fondo de la ventana. Aparecerá un menú desplegable con la opción “Build Graphical Screen”. Para convertir la pantalla, seleccione esta opción. En este punto, el asistente crea una versión gráfica de la pantalla de la aplicación (ver Figura 2) basándose en un conjunto de reglas de conversión predefinidas. La nueva pantalla gráfica aparece junto con el cuadro de diálogo Properties, que podrá usar para hacer los cambios globales deseados en la pantalla. También podrá cambiar el tamaño de la ventana gráfica arrastrando sus bordes y suprimir los controles que no tengan utilidad.

Page 109: Acubench Manual

Capacitación – Conversión de Aplicaciones COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 109 de 125

En el ejemplo, la barra de menú basada en caracteres se convierte a una serie de etiquetas y campos de entrada. Estas etiquetas y campos de entrada se pueden borrar haciendo clic con el botón derecho en el control y seleccionando Delete. Luego se puede reconstruir la barra de menú en el Screen Designer. (La Figura 3 muestra la pantalla convertida con los campos de la barra de menú suprimidos.) Cuando esté satisfecho con la ventana gráfica, haga clic en “OK” en el cuadro de diálogo Properties. La pantalla gráfica y el diálogo Properties desaparecen y el control vuelve a la aplicación de caracteres.

Figura 1 : Pantalla basada en caracteres antes de la conversión

Figura 2 : La misma pantalla después de la conversión inicial

Page 110: Acubench Manual

Capacitación – Conversión de Aplicaciones COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 110 de 125

Entonces podrá navegar a la siguiente pantalla que desee convertir y repetir el proceso hasta haber convertido todas las pantallas del programa. Cuando termine de convertir pantallas, finalice la aplicación normalmente.

Figura 3 : La misma pantalla una vez suprimidos los elementos de la barra de menú

Cuando la aplicación finaliza, el control vuelve a AcuBench y todas las pantallas gráficas nuevas se colocan en su proyecto. (Ver Figura 4.) Si ha arrancado el programa desde la línea de mandatos, tendrá que lanzar AcuBench e importar un archivo de texto llamado ‘‘import.out’’. Este archivo contiene todas las pantallas que ha convertido en esta sesión.

Page 111: Acubench Manual

Capacitación – Conversión de Aplicaciones COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 111 de 125

Figura 4 : La misma pantalla después de importala a AcuBench

El archivo “import.out” se guarda en el directorio de trabajo actual. Si al salir del asistente ya existe un archivo “import.out” en ese directorio, ese archivo se sobreescribe. Una vez que las nuevas pantallas estén en AcuBench, si lo desea, puede usar el Screen Designer para hacer otros cambios (Ver Figura 5). Puede añadir controles gráficos, definir propiedades de control, modificar el comportamiento de la grilla y realizar cualquier otra función, como si estuviese diseñando las pantallas en AcuBench partiendo de cero. Puede hacer todos los cambios a la vez o paulatinamente, según lo necesite. Cuando haya terminado de manipular su pantalla o pantallas en el Screen Designer, use el comando Build/Generate para generar un archivo de código fuente COBOL (“.cbl”) para la pantalla. Este archivo fuente contiene un nuevo elemento Screen Section que describe la pantalla gráfica. El último paso del proceso es integrar este nuevo elemento Screen Section en su programa. Este paso es el que más suele tardar y puede exigir algunos cambios en el programa. La cantidad de trabajo que tendrá que hacer dependerá del estado original de su programa. En general, el proceso de conversión produce un conjunto de nuevas sentencias DISPLAY que deberán sustituir a las sentencias DISPLAY anteriores.

Page 112: Acubench Manual

Capacitación – Conversión de Aplicaciones COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 112 de 125

Por ejemplo, cuando se visualizan las pantallas, lo normal es convertir en comentario la sentencia DISPLAY anterior y sustituirla por una sentencia PERFORM que usa la siguiente sintaxis: PERFORM Acu-[screen-name]-Scrn Por ejemplo: *display ventana PERFORM Acu-myscreen-Scrn Este párrafo contiene código para crear una ventana, presentar la pantalla y su menú principal en la ventana e inicializar los controles complejos que hayan sido incluidos. Cuando se muestran elementos de pantallas (por ejemplo, con sentencias DISPLAY de nivel de campo), se suele convertir en comentario la sentencia DISPLAY anterior y sustituirla por una sentencia MODIFY. Por ejemplo: *display campo MODIFY CAMPO value << valor-variable>> Esto se hace con más facilidad porque el asistente conserva el nombre del elemento Screen Section.

Figura 5 : La misma pantalla después con el Screen Designer

Al integrar la nueva sintaxis DISPLAY en la aplicación existente, deberá considerar además otros aspectos de la aplicación, como por ejemplo, las

Page 113: Acubench Manual

Capacitación – Conversión de Aplicaciones COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 113 de 125

características de los datos, las características del teclado, el manejo de aceptaciones, la sintaxis de cierre y la secuencia de inicialización.

Beneficios y Restricciones

Aunque el asistente Character-to-GUI Wizard es un excelente punto de partida para cualquier proyecto de conversión a gráficos, deberá entender sus criterios de diseño. Por ejemplo, debido a que imita la interfaz de caracteres, la interfaz gráfica de usuario creada por el asistente sólo usa etiquetas y campos de entrada. Puede añadir más elementos gráficos inmediatamente o después de un tiempo, según sea necesario, pero no se incluyen como parte de la conversión inicial. Además, el asistente no reconoce elementos más avanzados de las aplicaciones de caracteres, como barras de menús, ventanas desplegables o caracteres de dibujo de líneas. De igual forma, el asistente no maneja pantallas cuyos campos cambien en base a otras acciones. Esencialmente, al hacer una importación, obtiene una imagen de la pantalla como es en ese momento. Si la pantalla es dinámica, la imagen sólo expresa una forma de la misma. Por otra parte, los beneficios de usar el Character-to-GUI Wizard son muy numerosos. El proceso de conversión es mucho más rápido que las técnicas manuales y las pantallas resultantes se llevan a AcuBench, donde podrá usar las potentes funciones del Screen Designer para modernizar aún más la pantalla. Como la interfaz gráfica se deriva de la de caracteres, conserva las eficiencias inherentes a ésta y a los usuarios habituales de la aplicación la interfaz les resultará familiar y cómoda. Además, al centrarse en las tareas a realizar, el asistente puede hacer más productivos a los programadores. Sustituir la interfaz de usuario de una aplicación por una interfaz gráfica es una tarea desalentadora, en la que hay que tomar muchas decisiones. Usando el asistente, los programadores se encuentran con una tarea más concreta: integrar una pantalla en un programa. Por último, la salida del asistente funciona bien con las funciones de doble interfaz de ACUCOBOL-GT. Esto facilita que una misma aplicación pueda contener a la vez una interfaz de usuario de caracteres y otra gráfica, si eso es lo que se necesita.

Page 114: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 114 de 125

Unidad 5: Introducción a Internet desde COBOL

COBOL siempre ha estado en el centro de los negocios. ¿Por qué debería ser distinto con el "comercio electrónico"? Las empresas que aprovechan las aplicaciones y los conocimientos de COBOL existentes y los llevan a Internet pueden ahorrar dinero, reducir el riesgo y, lo que es más importante, abrir su negocio a un nuevo mundo de oportunidades. Acucorp, cuenta con tecnologías que le permiten "habilitar en la Web" sus activos COBOL existentes y hacer que sus datos estén "listos para Internet".

Tecnologías Acucorp para Internet

Acuthin Acuserver CGI

• Acuthin

Figura 5.1 Solución cliente delgado La tecnología cliente delgado de Acucorp permite ejecutar una aplicación desde un servidor remoto en un cliente, tomando los recursos desde el servidor remoto, lanzando una interfaz gráfica corriendo en un servidor UNIX, LINUX o Windows.

Page 115: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 115 de 125

La tecnología Acuthin – cliente delgado es diseñada para dos propósitos principales:

Permitir a los programas ACUCOBOL-GT corer en un servidor UNIX o Windows y presentar una completa ventana (GUI) en PCs conectados con TCP/IP.

Permitir a los usuarios UNIX y Windows disfrutar los beneficios de una aplicación centralizada y adoptar el desempeño de las caracteristicas de una arquitectura delgada, reduciendo el costo total de propiedad (TCO).

Cómo funciona

La Tecnología de Cliente Delgado de Acucorp está compuesta de tres componentes fundamentales. Primero, un pequeño programa en el cliente Windows, el ACUCOBOL™-GT Thin Client (cliente delgado), se comunica con la aplicación que corre en el servidor y administra la interfase de usuario. En segundo lugar, AcuLaunch, un miembro de la familia extend™ de soluciones de Acucorp, ejecuta como un servicio "escucha" en el servidor UNIX, Linux, o Windows NT/2000. AcuLaunch monitorea los requerimientos de los ACUCOBOL-GT Thin Clients (clients delgados) y cuando recibe uno lanza la ejecución del tercer componente, un runtime standard de ACUCOBOL-GT. Cuando se recibe un requerimiento de un cliente, AcuLaunch inicia una nueva sesión del runtime en el servidor, conectando a dicho runtime con el proceso cliente, y se retira del canal de comunicación para esperar otros requerimientos. Una vez iniciada su sesión, el runtime del servidor ejecuta la aplicación COBOL, y envía y recibe comandos de pantalla hacia y desde el cliente.

Page 116: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 116 de 125

• Acuserver

Figura 5.2 – Solución Acuserver AcuServer es una tecnología de servidor de archivos remotos que ofrece servicios de acceso a archivos para las aplicaciones ACUCOBOL™-GT que funcionan en UNIX, Windows y redes con base DOS TCP/IP. No es necesario que cambie el código de su aplicación existente para usar AcuServer (salvo que la aplicación emplee nombres de ruta programados) y tampoco tiene que volver a compilar los programas existentes. La tecnología AcuServer le otorga a sus aplicaciones: la capacidad de crear y almacenar archivos de datos en cualquier servidor

UNIX, Windows NT o Windows 2000 que tenga AcuServer acceso remoto completamente funcional desde clientes UNIX, Windows y

DOS a todos los archivos de objetos, secuenciales, relativos e indexados de ACUCOBOL™-GT almacenados en un servidor AcuServer

completo soporte de bloqueo de registro de todos los archivos relativos e indexados de ACUCOBOL-GT

acceso transparente a los archivos remotos y locales

Cómo funciona

AcuServer ofrece servicios de acceso a archivos remotos a través del uso de un programa residente en memoria (daemon) denominado acuserve, que se

Page 117: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 117 de 125

ejecuta en el servidor de archivos. La aplicación en el cliente se ejecuta con un runtime ACUCOBOL-GT, versión 5.1 y posterior. El runtime reconoce las solicitudes de acceso a los archivos remotos y usa llamadas de ranura TCP/IP a acuserve para cumplir tales solicitudes. En el servidor, acuserve espera las solicitudes de acceso a los archivos, administra su ejecución y devuelve el resultado al cliente que hace la petición. Una interacción AcuServer típica sería:

Una aplicación que se ejecuta en una máquina en red intenta READ (leer) un registro en un archivo.

El runtime de ACUCOBOL-GT reconoce que el archivo que leerá se encuentra en un sistema remoto y envía la solicitud por paquetes a acuserve en el servidor de archivos.

acuserve recibe la solicitud, ejecuta READ y devuelve el resultado al cliente y, de esta forma, completa la interacción.

Tenga en cuenta que el acceso a datos remotos es más eficiente en aquellas aplicaciones que acceden a registros únicos. Las aplicaciones que procesan registros múltiples en ciclos cerrados (como los informes o las cargas de pantallas) son más apropiadas para una configuración de procesamiento distribuido que reduce el volumen de información que se transfiere a través de la red.

• CGI

Si usted necesita desplegar su aplicación en el Web sin requerir ninguna configuración especial para el usuario final, usted puede rediseñar su aplicación de modo que tenga una interfase HTML y un programa CGI que maneje la lógica del programa. Esta opción brinda amplia flexibilidad e independencia en la plataforma, sin embargo, también requiere de más trabajo.

Que es CGI?

CGI (Common Gateway Interface) es un estándar mediante el cual un servidor Web se comunica con un programa externo. Los programas CGI (algunas veces llamados scripts) pueden ser escritos en varios lenguajes incluyendo COBOL.

Page 118: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 118 de 125

Escribir su programa CGI en COBOL y usar ACUCOBOL-GT no requiere un plug-in especial o applet.

Pasos

• Cree una forma HTML • Escriba un programa CGI. • Cree un hipervínculo en la página HTML. • Coloque la página Web en el servidor Web • Configure el servidor web. • Lance la aplicación.

Formas HTML

Los documentos HTML pueden incluir entry-fields y otros controles para permitir la interacción con el usuario. El ejemplo a continuación muestra algunos textos HTML con marcas (tags) para crear un control.

Ejemplo

En HTML, usted usa formas para recolectar información desde el usuario y enviarlo a un programa CGI para procesar. Para construir una forma en un documento HTML, usted usa marcas. Algunas formas tienen un botón de validación. Cuando el usuario presiona el botón de validación los datos de la forma son enviados al servidor web para procesamiento. El ejemplo a continuación muestra una forma básica de HTML:

Ejemplo

Page 119: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 119 de 125

Escribir un programa COBOL CGI

Un programa CGI tiene tres funciones básicas:

1. Recuperar datos de entrada. Cada ítem de entrada en su forma HTML tiene una variable CGI correspondiente. Cuando el usuario ingresa los datos de la forma, los datos son enviados al programa como datos CGI. Su programa debe tener la capacidad de recuperar estos datos CGI. Con ACUCOBOL-GT usted usa la frase ACCEPT para recuperar datos tipo CGI.

2. Procesar los datos. 3. Generar salida. Un programa CGI puede crear una salida que puede

ser leída por el browser del cliente. Usualmente el programa CGI envía una salida en formato HTML.

En casos simples, su programa COBOL CGI puede contener una declaración ACCEPT y una DISPLAY. Aún sí su programa es más complicado, probablemente comenzaría con un ACCEPT y finalizaría con un DISPLAY. Es importante observar que puesto que los programas CGI son ejecutados en la máquina en sí mismo por el servidor web, no está permitido realizar ninguna operación de interfaz de usuario. Si un programa del CGI procura una operación que espere una respuesta del usuario, puede causar la "caída" del servidor web. • Recuperando datos CGI

Con ACUCOBOL-GT existen dos formas de recuperar variables CGI: usando el verbo ACCEPT, y usando la rutina de librería C$GETCGI. Usando la frase ACCEPT

Page 120: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 120 de 125

ACUCOBOL-GT soporta las siguientes sintaxis especiales para la frase ACCEPT: Ejemplo

ACCEPT external-form En el ejemplo anterior, external-form es un registro de entrada para una forma HTML. A continuación se muestra un ítem de datos declarado en la Working-Storage con la cláusula IS EXTERNAL-FORM. Ejemplo working-storage section. 01 input-form is external-form. 05 username pic x(30). 05 choice1 pic 9. 05 choice2 pic 9. 05 now pic 9. 05 later pic 9. Los nombres de variables CGI son tipo constante-sensitiva. Sin embargo, si el runtime no puede identificar una variable CGI durante un ACCEPT, este podría intentar buscar el nombre de la variable de nuevo ignorando las constantes sensitivas. Usando C$GETCGI Un método alterno para recuperar datos CGI es la rutina de librería C$GETCGI. Está rutina recupera variables desde el entorno o desde la cadena de entrada estándar. La rutina C$GETCGI es de forma predominante, usada por los programas CGI existentes. Una ventaja de C$GETCGI es que recupera el tamaño exacto de la variables CGI. Procesando los datos Esta es la parte de la programación CGI que es más familiar para los desarrolladores COBOL: el proceso de aplicación de los componentes. Puesto que los programas del CGI son ejecutados en la máquina por sí mismo por el servidor web, no se permiten realizar operaciones de interfaz de usuario. Si un programa CGI permite una operación de respuesta del usuario,

Page 121: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 121 de 125

esto podría causar la caída del servidor web. Cuando escriba programas CGI, debe tener especial cuidado de no incluir código que espere entradas de usuario. Generando Salidas Para generar salidas, use el verbo DISPLAY. Esta es una especial sintaxis de la frase DISPLAY. Ejemplo DISPLAY external-form En el ejemplo anterior, external-form es un registro de salida para un archivo HTML, esto puede ser un ítem de grupo de datos declarados en la Working-Storage con la cláusula IS EXTERNAL-FORM. La cláusula IS EXTERNAL-FORM puede tener también la cláusula adicional IS IDENTIFIED BY, esto asocia la estructura de datos con un archivo HTML existente. Si usted usa esta frase puede crear una plantilla HTML con variables que son reemplazadas por el programa cuando haga un DISPLAY external-form de la estructura de datos. Ejemplo working-storage section. 01 output-form is external-form identified by "response.html". 05 username pic x(10) El ejemplo anterior muestra un ítem de datos external-form identificado por el archivo response.html. El ejemplo a continuación muestra el texto en el archivo html response.html. Ejemplo

Cuando usted crea un archivo de plantilla HTML, puede incluir variables

Page 122: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 122 de 125

rodeando el nombre de la variable con doble signo de porcentaje. En el ejemplo anterior, el archivo html contiene la variable “username”. Cuando su programa muestra un external-form identificado con un archivo html, el runtime reemplaza las variables en el archivo de plantillas HTML con los datos de external-form, luego envía los resultados a una cadena estándar de salida en concordancia con el estándar CGI. Los espacios restantes son removidos cuando es asociado con el archivo HTML. Crear un hipervínculo La forma HTML recolecta información desde el usuario y la envía a su programa CGI. Para construir una forma use el FORM tag. El FORM tag tiene dos atributos que deben ser definidos: METHOD y ACTION. El Método-Atributo El Método-Atributo dice al browser como envía la información al servidor web. METHOD puede tener dos posibles valores: GET y POST. El método GET GET codifica los datos en el URL. El servidor web mueve los datos en una variable de entorno QUERY_STRING antes de llamar al programa CGI. La ventaja del método GET es que todos los datos de entrada en el campo son visibles en el URL. El usuario puede marcar este especifico URL para futuro acceso rápido en el envío de los resultados. La desventaja es que los datos están limitados a 255 caracteres (incluyendo algunos símbolos de codificación especial del URL) . El método POST POST envía los datos al servidor web como una cadena de datos. El servidor web canaliza esta cadena de datos a través de una cadena estándar de entrada del programa CGI. Todos los servidores web soportan el método GET, y algunos servidores web modernos soportan el método POST. ACUCOBOL-GT soporta ambos métodos. El atributo ACTION ACTION dice al browser donde enviar la información codificada de la forma. Esto es el URL del programa CGI que procesa la forma.

Page 123: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 123 de 125

Ejemplo

Usted puede incluir el completo URL dentro del atributo de acción como se muestra a continuación: Ejemplo

Colocar su página web en el servidor web

Para colocar su documento HTML en su servidor web, usted necesita transferir su documento HTML en el directorio apropiado. El software Apache se refiere para este directorio como el directorio de documentos. Consulte su documentación del servidor web para encontrar donde los documentos HTML pueden ser localizados.

Configurando el servidor web

Cuando configure el servidor web debe especificar cual Runtime de ACUCOBOL-GT es usado para ejecutar los archivos objeto de COBOL. En Windows NT, use el IIS service manager para especificar que Runtime en el servidor ejecuta sus programas COBOL CGI. Si su servidor es basado en UNIX, debe hacer un vinculo apuntando hacia un script que inicie o arranque y ejecute el archivo objeto. El ejemplo a continuación muestra el texto en un script de UNIX para iniciar o arrancar el Runtime y ejecutar el programa myprog.acu.

Page 124: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 124 de 125

Ejemplo

#!/bin/sh A_TERM=vt100 export A_TERM echo "Content-Type: text/html" /usr/acucobol52/bin/runcbl -f myprog.acu

• Ventajas No se requiere runtime o plug-in en la maquina del cliente. Este método provee incremento en la independencia de la plataforma. Nada es requerido para el usuario excepto la habilidad de localizar su sitio web. • Desventajas

Este método puede requerir más trabajo. Usted puede necesitar rediseñar su aplicación si su interfaz de usuario consiste en interacciones avanzadas de programas COBOL. • Seguridad

Puesto que es posible para otros usuarios de Internet interceptar sus datos cuando son transferidos desde el cliente al servidor, considere la posibilidad de encriptar sus datos antes de enviarlos al servidor.

Que es necesario?

Este método requiere una interfaz de usuario HTML, un runtime en el servidor web y una conexión de red (Internet).

Page 125: Acubench Manual

Capacitación – Introducción a Internet desde COBOL

© Todos los derechos reservados – Documento Confidencial, prohibida su reproducción parcial o total – Versión 1.5. Pág. 125 de 125

Laboratorio: COBOL y CGI

En este laboratorio, usted creara una forma HTML que suministrará información a un programa COBOL CGI.

Cree una forma HTML

1. En el editor de texto cree una forma HTML. Incluya al menos 2 entry field, 2 radio buttons, 2 check boxes, un botón de limpiar, y un botón de enviar.

2. Cree dos documentos HTML para mostrar la salida por el usuario. 3. Modifique la plantilla del programa COBOL cobolcgi.cbl para usar su

forma HTML como la interfaz de usuario y la visualización del apropiado documento HTML.

4. Incluya un hipervínculo en su forma HTML para ejecutar el programa CGI.

5. Transfiera su documento HTML y el archivo objeto al directorio de documentos del servidor web.

6. Asegúrese que su librería objeto y su documento HTML tengan permiso de lectura para cada uno en el servidor.

7. Configure el servidor web para ejecutar su aplicación COBOL. (pregunte al instructor para obtener ayuda.)

8. Desde su PC, lance el browser de Internet y especifique la dirección URL para visualizar su forma HTML.

9. Realice un test a su programa y verifiqué que se ejecute correctamente.