(4) curso programacion ads-online

42
CURSO IDMS NOMBRE CURSO DE I.D.M.S TITULO Curso de Programación ADS/ON-LINE CURSO DE PROGRAMACION ADS/ONLINE Página 1

Upload: monxis1305

Post on 14-Dec-2015

228 views

Category:

Documents


0 download

DESCRIPTION

(4) Curso Programacion ADS-OnLINE

TRANSCRIPT

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

CURSO DE PROGRAMACION ADS/ONLINE

Página 1

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

Página 2

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

INDICE =======

4.1. Introducción 4.1.1. ADS/On-line 4.1.2. Herramientas que proporciona el IDMS 4.1.3. Diálogo

Componentes de un dialogo Ejecución de un dialogo

4.2. MAPC (Mapin Compiler)

4.3. Codificación en ADS/O 4.3.1. Consideraciones 4.3.2. Tipos de instrucciones

4.3.2.1. Instrucciones de acceso y actualización 4.3.2.2. Instrucciones de control 4.3.2.3. Instrucciones aritméticas y de asignación 4.3.2.4. Instrucciones condicionales 4.3.2.5. Instrucciones de control de subrutinas 4.3.2.6. Instrucciones de modificación de mapas 4.3.2.7. Instrucciones de gestión de “scratch” 4.3.2.8. Instrucciones de utilidad 4.3.2.9. Instrucciones orientadas al generador

4.3.3. Tipos de Funciones 4.3.3.1. Funciones Aritméticas 4.3.3.2. Funciones Trigonométricas 4.3.3.3. Funciones de fecha 4.3.3.4. Funciones de cadena

4.4. ADSC (ADS Compiler)

4.5. Conclusión

Página 3

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.1. Introducción

4.1.1. ADS/On-line

ADS/Online es un sistema integrado de herramientas de “software” que permite a los usuarios de IDMS/DC realizar las siguientes funciones:

- concentrarse en los aspectos funcionales de la programación a la hora de utilizar bases de datos - diseñar y ejecutar prototipos de aplicaciones - desarrollar y ejecutar de un modo rápido y sencillo aplicaciones “on-line“ que actualicen o lean una base de datos o ficheros VSAM - utilización del diccionario de datos para mantener las definiciones de las aplicaciones.

4.1.2. Herramientas que proporciona el IDMS

IDMS proporciona las siguientes herramientas integradas para el desarrollo de una aplicación ADS/Online:

IDD Permite almacenar todos los componentes de la aplicación y documentación

relacionada como son: • Descripciones de los datos • Módulos de proceso • Tablas de edición o codificación • Mensajes del sistema • Definiciones de mapas • Definiciones de diálogos • Definiciones de aplicaciones • Módulos ejecutables

Página 4

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

MAPC.Es una herramienta que permite definir el formato de los paneles con los que

trabajaran los usuarios. Estos podrán introducir datos en unos puntos específicos del panel, que serán puntos a los que se hayan asociado campos variables.

La tabla que resulta de asociar los campos variables del panel con los campos de un registro recibe el nombre de mapa.

El MAPC permite entonces crear mapas, definiendo paneles, asociando registros a estos y generando la tabla correspondiente.

ADSC.Crea los diálogos de la aplicación.

Es una herramienta que permite definir, referenciar y ensamblar, los componentes de un Diálogo.

La unión de Mapas, Registros y Procesos, permitirá la asociación de los datos recogidos en los registros (Mapa y Procesos), y mediante su procesamiento obtener los datos que se reflejaran en su Mapa.

El Modulo que resulta de asociar todos estos datos recibe el nombre de Diálogo.

ADSA.Crea la estructura de la aplicación formada por:

- funciones, que son unidades estructurales o de trabajo que definen todas las posibles actividades que pueden realizarse dentro de la aplicación; pueden ser:

funciones MENU (creadas y gestionadas por el ADS/O), funciones DIALOGO (creadas por el programador), del SISTEMA (que ejecutan actividades comunes a la mayor parte de las aplicaciones HELP,SIGNON) funciones MENU/DIALOGO y PROGRAM (programas escritos en un lenguaje distinto a ADS/O)

- respuestas, que son las unidades de trabajo que relacionan distintas funciones entre si, dentro del flujo de la aplicación; pueden estar asociadas a teclas de función o seleccionarse dando un valor en un campo del mapa llamado $RESPONSE, puede haber varias respuestas asociadas a una función y cada respuesta llamara a su vez a otra función

- prototipo de la aplicación.

ADS Run-time System Controla la ejecución de las aplicaciones

Página 5

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.1.3. DIALOGO.

Componentes de un dialogo

Un DIALOGO es la unidad de proceso en una aplicación ADS/Online. Las Instrucciones proporcionadas en un dialogo están codificadas en ADS/On-line.

Las descripciones fuentes se almacenan en el área DDLDML del diccionario y los módulos ejecutables en el área DDLDCLOD.

Un dialogo consta de las siguientes partes: - MAPA: transmite la información entre el terminal y la aplicación; cada

dialogo solo puede contener un mapa

- PROCESOS: son conjuntos de Instrucciones ADS/O que definen la forma en que se van a tratar los datos; pueden manipular una base de datos, ceder control a otros diálogos, hacer operaciones de asignación o aritméticas, invocar subrutinas, etc.

Pueden ser de dos tipos: - proceso PREMAP que define un tratamiento de datos que ha de ser

ejecutado antes de que se visualice el mapa en el terminal. Todos los Diálogos debe tener al menos un Proceso PREMAP

- proceso RESPONSE que define un tratamiento a ejecutar después e la visualización e introducción de datos en el mapa; puede haber varios para un dialogo y están asociados a este mediante una tecla de función o un valor de respuesta.

- REGISTROS: aquellos con los que va a trabajar el dialogo; son: - registros del mapa - registros de trabajo - registros de bases de datos

- SUEESQUEMA: visión de la base de datos que será utilizada por el dialogo.

Página 6

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

A continuación podemos ver un pequeño esquema de una unidad de ejecución

Ejecución de un dialogo

ADS/On-line ejecuta los diálogos de uno en uno para una sesión de terminal.

Siempre que se ejecuta un dialogo se siguen los pasos que a continuación se detallan:

- PREMAP PROCESS (siempre debe existir), finaliza con un comando de control, generalmente DISPLAY, que pasa el control al mapa. Si no existe este proceso, el dialogo se ejecuta empezando directamente en el paso siguiente.

- MAPOUT: visualiza en el terminal el mapa con sus datos o finaliza la tarea de IDMS/DC (lógicamente queda en suspenso). (Si se trabaja con base de datos, un “mapout” finaliza la “run unit”, libera los bloqueos de la base de datos y los de los registros “current” y escribe un punto de recuperación en el fichero JOURNAL si es necesario).

- MAPIN: reinicia la tarea IDMS/DC en función de la respuesta dada en el terminal y pasa los datos introducidos en el mapa a los registros correspondientes

-RESPONSE PROCESS: está asociado a una respuesta determinada o a una tecla de función; todos los módulos de proceso deben terminar con un comando de control.

Página 7

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

El usuario ve la ejecución de un dialogo como una interacción con la aplicación a través del mapa. En la pantalla se visualiza el mapa con los datos e Instrucciones (llamando Instrucciones a las opciones disponibles del dialogo). El usuario sigue dichas “Instrucciones” y selecciona la respuesta apropiada. Dicha respuesta se transmite al sistema y este visualiza la siguiente pantalla con sus mensajes e “Instrucciones”.

Página 8

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.2. MAPC (Mapin Computer)

La comunicación entre usuario y aplicación se establece a través de los MAPAS.

Para definirlos utilizamos la herramienta que nos proporciona el IDMS, la IDMS-DC/UCF Mapping Computer a través de la tarea MAPC.

Esta tarea presenta una serie de pantallas formateadas que, o bien pueden ser seleccionadas directamente, o bien aparecen secuencialmente al pulsar la tecla PF5. Estas pantallas son:

- GENERAL OPTIONS o pantalla de definición inicial donde se especifican principalmente el nombre del mapa y los valores de definición del mapa.

- MAP-LEVEL HELP TEXT DEFINITION o pantalla de definición de formato de pantalla y los posibles textos

- ASSCIATED RECORDS o pantalla de asignación de los registros que se van a utilizar el mapa.

- LAYOUT o pantalla de definición del formato donde dibujamos el mapa en la forma en que queremos que se visualice. Pantalla de edición de campos, donde vamos a especificar los atributos de los campos del mapa

- FIELD DEFINITION o pantalla de selección de campos donde especificamos la acción a tomar con los campos seleccionados en la pantalla anterior o donde seleccionamos la generación del mapa ya definido

Para definir un mapa habrá que tener en cuenta las siguientes consideraciones:

- definir los registros de trabajo del mapa en el IDD antes de entrar en MAPC para dibujar el mapa

- manejar varios registros de trabajo en aquellos mapas donde la complejidad, la cantidad de datos o la lógica del programa (traspaso de datos entre diálogos) lo aconseje

- no utilizar la tecla “borra” o “fdc” una vez que estemos dibujando el mapa

- intentar no recargar los mapas con muchos campos, pues aumenta el tiempo de transmisión y, por tanto, el de respuesta.

Página 9

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3. Codificación en ADS/O

4.3.1. Consideraciones

Las sentencias de mandatos ADS/O se pueden codificar en más de una línea sin especificar carácter de continuación. Pueden empezar en cualquier columna y llegar hasta la 72.

Todas las Instrucciones tienen que terminar en un punto. Se pueden dejar líneas en blanco (no son tratadas por el compilador) e insertar líneas de comentarios (empiezan por el carácter “]”).

Formato de una instrucción

Una instrucción ADS/O siempre está formada por

- PALABRAS CLAVE que indican el tipo de operación a realizar

- PARAMETROS que cualifican a las anteriores y especifican operaciones adicionales.

Los parámetros pueden ser: - claves (palabras clave definidas por el sistema que califican el tipo

de operación) - variables (campos que contienen valores proporcionados por el

usuario) - todas las Instrucciones terminan en punto.

Tipos de variables

Los parámetros variables que se pueden especificar en una introducción pueden ser de varios tipos:

- NOMBRES DE ENTIDADES.

- CAMPOS DE DATOS VARIABLES: su contenido puede ser modificado durante la ejecución de un dialogo. Estos campos pueden ser:

- de usuario - del sistema; entre estos los más empleados son:

DIRECT-DBKEY, ERROR-STATUS, DATE, TIME,...

- VALORES CONSTANTES: son literales numéricos, no numéricos o constantes figurativas. Entre estas últimas las más usuales son:

SPACES, ZEROS, HIGH-VALUES, LOW-VALUES.

- funciones “BUILT-IN “: son funciones que examinan expresiones siguiendo unas operaciones definidas y que devuelven los resultados en campos que pueden ser utilizados en el tratamiento posterior. Permiten el tratamiento de cadenas de literales, realizar funciones aritméticas (valor absoluto, logaritmos, raíces cuadradas, etc.), y funciones trigonométricas calculando los valores en radianes y grados.

- expresiones aritméticas, condicionales, de error.

Página 10

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.2. Tipos de Instrucciones

Según las funciones que realicen, las Instrucciones de ADS/O se clasifican en varios grupos:

- de acceso y actualización de bases de datos - de control - aritméticas y de asignación - condicionales - control de subrutinas - de modificación de mapas - de gestión de “scratch” - de utilidad.

4.3.2.1. Instrucciones de acceso y actualización

Todas las Instrucciones de manipulación de base de datos de ADS/O son iguales a las de COBOL/DC, a excepción de una, la instrucción KEEP. Se pueden clasificar a su vez en:

- sentencias de control - sentencias de búsqueda y lectura - sentencias de actualización - sentencias de recuperación de db-key - sentencias de seguridad e integridad

Sentencias de control

La instrucción que permite controlar el modo en que van a ser accedidos los ficheros de base de datos y la existencia de concurrencia es la instrucción READY.

Su formato es READY nombre-de-área USAGE-MODE (PROTECTED) RETRIEVAL (EXCLUSIVE)

UPDATEPor defecto, abre Áreas en “RETRIEVAL”.

Sentencias de búsqueda y lectura

Localizan datos en la base de datos y los hacen disponibles para el programa. El registro localizado mediante una de estas Instrucciones queda como:

- “current “ de unidad de ejecución - “current” de tipo de registro - “current“ de tipo de set - “current“ de área.

Las Instrucciones son: - FIND (localiza un registro en la B.D. y lo transfiere al buffer) - GET (transfiere el registro del “buffer“ al área de trabajo del programa) - OBTAIN (combina en una sola instrucción las funciones de FIND y GET)

Página 11

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

En todas las formas de las sentencias FIND y OBTAIN se puede incluir las opciones KEEP o KEEP EXCLUSIVE, que establecen bloqueos explícitos sobre los registros objeto de la operación.

KEEP EXCLUSIVE impide un acceso concurrente de lectura y/o actualización sobre el registro.

El formato de la instrucción con la clausula es el siguiente: OBTAIN (KEEP ).FIND (KEEP EXCLUSIVE)

Las sentencias FIND y OBTAIN tienen varios formatos OBTAIN registro DB-KEY IS db-key-id FIND

Permite acceder directamente a un registro por su DB-KEY.

OBTAIN (CALC (ANY)) registro. FIND (DUPLICATE)

Permite seleccionar una ocurrencia de registro CALC dentro de la base de datos. Previamente habremos movido un valor al campo clave CALC del registro.

OBTAIN (FIRST) registro WITHIN nombre-de-set. FIND (LAST) WITHIN nombre-de-area. (NEXT) (PRIOR) (num.)

Permite seleccionar un registro dentro de un set o un Área. En todos los casos se puede indicar o no un tipo de registro. Si no se indica, selecciona la ocurrencia indicada de cualquier

OBTAIN OWNER WITHIN nombre-de-set FIND

Permite seleccionar la ocurrencia del registro padre de un set

OBTAIN CURRENT registro FIND WITHIN nombre-de-set WITHIN nombre-de-área

Permite seleccionar un registro “current“ de tipo de registro, de set o de área como “current“ de “run unit“.

Este formato se utiliza habitualmente con la instrucción MODIFY.

Página 12

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

OBTAIN registro WITHIN nombre-de-set FIND CURRENT USING campo-ord

Permite seleccionar una ocurrencia del registro dado dentro de un set SORTED utilizando su clave de ordenación (campo-ord). Si especificamos CURRENT, la selección comienza en la ocurrencia que sea CURRENT del set dado. Si no especificamos CURRENT la selección comienza en el padre del set.

Sentencias de bloqueo Un bloqueo en un registro impide que dicho registro sea accedido o

actualizado por otras “run units“ qué se estén ejecutando concurrentemente.

Los bloqueos pueden ser: - COMPARTIDOS (un registro con un bloqueo compartido puede ser accedido

pero no actualizado por otras “run units“. Estas pueden poner también bloqueos compartidos en ese mismo registro)

- EXCLUSIVOS (un registro con un bloqueo exclusivo no puede ser accedido ni actualizado por ninguna otra “run unit“. Una “run unit” no puede poner ningún bloqueo sobre un registro con un bloqueo exclusivo, debe esperar a que sea liberado. Una “run unit” no puede poner un bloqueo exclusivo sobre un registro con bloqueos compartidos, debe esperar a que este registro sea desbloqueado).

Un bloqueo puede ser: - IMPLICITO (un bloqueo implícito es establecido o liberado por el IDMS para

todas las “run unit“ que ejecutan en modo SHARED UPDATE. Pueden ser compartidos, si se establecen para todos los registros “current“, o exclusivos, si se establecen para todos los registros que van a ser modificados; estos bloqueos impiden que otras “run units“ que vayan a actualizar accedan a paginas que están modificándose en ese momento y evitan el acceso a registros modificados que podrían ser recuperados posteriormente como consecuencia de una cancelación

- EXPLICITO (es un bloqueo especificado en el programa. Se puede bloquear un registro con la clausula KEEP de las Instrucciones FIND/OBTAIN o mediante la instrucción KEEP).

Existen dos formatos para la instrucción KEEP: - KEEP (EXCLUSIVE) CURRENT (nombre-registro )

(WITHIN nombre-set ) (WITHIN nombre-area )

Esta instrucción permite bloquear el registro “current“ de “run unit“ (si no se especifica nada) o de tipo de registro, set o área (si se especifican). - KEEP LONGTERM (variables) Esta instrucción permite poner o quitar bloqueos y hacer un seguimiento de la actividad del monitor de teleproceso a través de distintas “run units“.

Página 13

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

Sentencias de actualización

Permiten actualizar los datos almacenados en la base de datos. Son las siguientes:

STORE registro Añade una nueva ocurrencia de registro a la base de datos. Hay que establecer los “current” de todos los sets a los que el registro ha de conectarse automáticamente; si el set de carga es manual hay que establecer el “curren “ del padre del set al que conectaremos el registro más adelante.

MODIFY registro Reemplaza los valores del registro “current” de “run unit” por los valores

indicados en. la zona de trabajo. Esta instrucción debe ir precedida por una instrucción STORE, GET, OBTAIN o de otra MODIFY.

CONNECT registro TO set Conecta una ocurrencia del registro especificado al set indicado. Este set

tiene que estar definido como MM (Mandatory Manual), OA (Optional Automatic) o OM (Optional Manual).

DISCONNECT registro FROM set Suprime la conexión de un registro al set indicado, sin eliminar el registro de

la base de datos. Esta instrucción solo puede emplearse con sets definidos como OPTIONAL. Se pierde el “current” de set y se mantienen los otros tres.

(PERMANENT) ERASE registro (SELECTIVE) (MEMBERS)

(ALL) Desconecta un registro de todos los sets a los que pertenece y lo borra de la

base de datos. El registro a borrar debe ser “current” de “run unit“. La clausula ALL borra el registro indicado y todos sus hijos en los sets de los

que sea padre.La clausula PERMANENT borra el registro indicado y sus hijos Mandatory. Los

hijos Optional son desconectados. La clausula SELECTIVE borra el registro indicado, sus hijos Mandatory y sus

hijos Optional que no sean hijos de ningún otro set. Los hijos Optional que sean hijos de otro set solo son desconectados.

Página 14

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

Sentencias de análisis de set

Permiten analizar si un set tiene o no “hijos” y si un registro pertenece o no a un set.

IF SET nombre-de-set IS (NOT) EMPTY sentencia-imperativa Permite analizar si un set esta vacio, es decir, no tiene ningún “hijo”.

IF SET (NOT) nombre-de-set MEMBER sentencia-imperativa Analiza si el registro “current” de “run unit” es o no hijo del set especificado.

Sentencias de recuperación de db-key

Permiten guardar la “db-key“ de un registro en un campo de trabajo.

(registro) ACCEPT db-key-id FROM (set ) CURRENCY

(área )Guarda en el campo indicado en db-key-id, la “db-key“ del registro “current“

de cualquier tipo.

(NEXT )ACCEPT db-key-id FROM set (PRIOR) CURRENCY

(OWNER) Guarda la “db-key“ de la ocurrencia siguiente, anterior o del padre del set indicado.

(CURRENCY ) (FIRST CURRENCY )

RETURN db-key-id FROM set-index (LAST CURRENCY ) (NEXT CURRENCY ) (PRIOR CURRENCY ) (USING valor-dv )

Guarda la “db-key“ de una ocurrencia de un registro de un set indexado.

Sentencias de seguridad e integridad

Permiten establecer cuáles van a ser las unidades de recuperación (“recovery unit”) para una transacción, en el caso de que esta cancele, y restaurar la información de una base de datos a una situación anterior a una actualización

COMMIT. Escribe un punto de recuperación “checkpoint” en el fichero “journal” para

indicar el final de una unidad de recuperación y el comienzo de otra.

ROLLBACK. Anula el efecto de una unidad de recuperación hasta el último “checkpoint”

y termina la “run unit”.

Página 15

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.2.2. Instrucciones de control

Permiten ceder control a otra parte del mismo dialogo o a un dialogo distinto. Son los que establecen la estructura de una aplicación.

Una aplicación tiene como punto de entrada un dialogo principal, que debe estar definido como “mainline“. Este dialogo constituye el nivel más alto de la estructura de la aplicación y es el que cede control a otros diálogos.

Esta cesión puede hacerse manteniendo los datos y los recursos del dialogo que cede control o sin mantenerlos.

El primer caso supone la creación de un nivel más bajo en la estructura de la aplicación, esto es, el dialogo que cede control permanece operativo y todos sus “buffers“ de registros se mantienen.

En el segundo caso, cuando cedemos control a un dialogo que está en el mismo nivel o en un nivel superior los “buffers“ no se mantienen.

Dentro de la estructura de nuestra aplicación podemos tener subestructuras llamadas “estructuras anidadas“.

Sentencia DISPLAY Permite visualizar un mapa, un mensaje determinado o volver a ejecutar el

proceso premap de un dialogo. Esta instrucción es obligatoria en el proceso premap de un dialogo que tenga

un mapa. Si no se especifica, el mapa no es visualizado en el terminal.

(CONTINUE )DISPLAY (MSG TEXT texto-mensaje )

(MSG CODE codigo-mensaje ) (ERASE )

Si se especifica únicamente DISPLAY se visualiza el mapa asociado al dialogo. DISPLAY CONTINUE se especifica en un proceso “response” cuando se quiere volver a ejecutar el proceso “premap” del dialogo. DISPLAY MSG TEXT texto-mensaje visualiza en el campo de mensajes del mapa el texto especificado. La variable “texto-mensaje” puede ser un campo que contenga el mensaje propiamente dicho. DISPLAY MSG CODE código-mensaje visualiza en el campo de mensajes del mapa el mensaje almacenado en el diccionario con el código especificado. DISPLAY ERASE limpia todos los campos desprotegidos del mapa, inicializa los MDT’s de los mismos y pone el cursor en el primer campo desprotegido del mapa. Si se especifica ERASE no puede especificarse nada más.

Sentencia TRANSFER Esta sentencia se emplea para pasar control de un dialogo a otro que está en

el mismo nivel dentro de la estructura de la aplicación. El dialogo que cede control deja de estar operativo.

TRANSFER TO nombre-dialogo

La variable “nombre-dialogo” puede ser el nombre del dialogo al que se pasa control o, un campo de datos variable que contiene el nombre del dialogo. Un diálogo puede llamarse a si mismo.

Página 16

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

Sentencia INVOKE

Pasa control a un dialogo a la vez que establece un nivel más bajo en la estructura de la aplicación. El dialogo que cede control permanece operativo y sus “current” activos.

INVOKE nombre-dialogo

La variable “nombre-dialogo” puede ser el nombre del dialogo al que se pasa control o un campo de datos variable que contiene el nombre del dialogo.

Sentencia LINK

Pasa control a un dialogo a la vez que establece un nivel más bajo en la estructura de la aplicación. El dialogo que cede control permanece operativo y sus “current” activos. Se diferencia de la instrucción INVOKE en que el dialogo que hace el LINK se convierte en el de nivel más alto dentro de una estructura anidada.

Los diálogos que participan en una estructura anidada pueden emitir sentencias de control, pero nunca devolverlo a un dialogo de un nivel más alto que el del dialogo que hace el LINK.

LINK TO |nombre-dialogo | |PGM nombre-prog | | USING ( MAP-CONTROL) | | (SUBSCHEMA-CONTROL) | | (registro) |

La variable “nombre-diálogo” especifica el nombre entre comillas del dialogo al que se cede control o un campo variable en el que está almacenado dicho nombre.

La variable “nombre-prog” especifica el nombre entre comillas del programa al que se cede control o un campo variable en el que está almacenado dicho nombre. El programa puede ser COBOL, PL/I, Ensamblador.

La clausula USING especifica los datos que deben pasarse al programa de usuario y solo puede ser utilizada con este tipo de programas. Se pueden especificar varios registros separándolos con espacios o comas. Cuando el dialogo o programa llamado devuelve control, el dialogo que hace el LINK sigue ejecutándose en la instrucción siguiente a la LINK.

Página 17

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

Sentencia RETURN

Pasa control a un dialogo de nivel mas alto dentro de la estructura de la aplicación, que este operativo. El dialogo que devuelve control queda no operativo.

Un dialogo que ha sido llamado mediante LINK devuelve control, con RETURN, al dialogo que emitió el LINK, a la instrucción siguiente a la LINK. Nunca podrá devolver control a un dialogo que este en un nivel más alto que el que hace el LINK. Si podrá pasar control a cualquier dialogo que haya sido llamado con INVOKE dentro de la estructura anidada.

Fuera de estructuras anidadas, la instrucción RETURN puede devolver control a cualquier dialogo de cualquier nivel o al primer nivel de la estructura de la aplicación.

RETURN (TO nombre-dialogo) (CLEAR) (CONTINUE) (TO TOP )

La variable “nombre-dialogo” es el nombre del dialogo al que se devuelve control o un campo variable que contiene dicho nombre.

TO TOP devuelve control al dialogo del primer nivel dentro de una estructura anidada o al dialogo “mainline” de entrada a la aplicación si no existe estructura anidada.

CLEAR inicializa los “bufférs” de los registros y los “current” del dialogo que recibe control.

CONTINUE provoca la ejecución del proceso “premap” del dialogo que recibe control.

Sentencia LEAVE

Termina la sesión de ADS/O que se esta ejecutando; los diálogos operativos hasta entonces dejan de estarlo y.se liberan todos los “current” y “buffers” de registros.

LEAVE (ADS) Si no se especifica ADS se devuelve control a la pantalla de ADS de selección

de diálogos.

Página 18

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.2.3. Instrucciones aritméticas y de asignación

Permiten realizar operaciones aritméticas y mover los resultados de dichas operaciones o valores de datos determinados a campó variables.

Sentencia ADD La instrucción ADD suma un valor especificado (o el valor contenido en un

campo variable) a un segundo campo variable donde queda almacenado el resultado de la operación.

ADD valor TO campo-variable (ROUNDED ) (TRUNCATED )

El resultado de la operación queda en “campo-variable”. La opción ROUNDED especifica que la parte decimal de “campo-variable” es redondeada en el caso de que el resultado de la suma tenga más cifras decimales que las definidas en “campo-variable”. Esta es la opción que se toma por defecto. La opción TRUNCATED especifica que la parte decimal de “campo-variable” es truncada.

Sentencia SUBTRACT

La instrucción SUETRACT resta un valor especificado (o el valor contenido en un campo variable) a un segundo campo variable donde queda almacenado el resultado de la operación.

SUBTRACT valor FROM campo-variable (ROUNDED ) (TRUNCATED)

El resultado de la operación queda en “campo-variable”. La opción ROUNDED específica que la parte decimal de “campo-variable” es redondeada en el caso de que el resultado de la resta tenga más cifras decimales que las definidas en “campo-variable”. Esta es la opción que se toma por defecto. La opción TRUNCATED especifíca que la parte decimal de “campo-variable” es truncada.

Página 19

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

Sentencia MULTIPLY La instrucción MULTIPLY; multiplica un valor especificado (o el valor contenido en un campo variable) por un segundo campo variable donde queda almacenado el resultado de la operación.

MULTIPLY valor BY campo-variable (ROUNDED ) (TRUNCATED)

El resultado de la operación queda en el ”campo-variable”. La opción ROUNDED especifica que la parte decimal de “campo- va1iable“ es redondeada en el caso de que el.resu1tado de la operación tenga más cifras decimales que las definidas en “campo- variable“. Esta es la. opción que se toma por defecto. La opción TRUNCATED especifica que la parte decimal de “campo-variable“ es truncada.

Sentencia DIVIDE

La instrucción DIVIDE divide el valor contenido en un campo variable (que representa al dividendo) entre un determinado valor o un campo que lo contiene (y que representa al divisor).

DIVIDE divisor INTO dividendo (ROUNDED ) (TRUNCATED)

GIVING cociente (ROUNDED ) (TRUNCATED)

REMAINDER resto

El resultado de la operación queda en “dividendo”.La opción ROUNDED especifica que la parte decimal de “dividendo” es redondeada en el caso de que el resultado de la operación tenga más cifras decimales que las definidas en dividendo. Esta es la opción que se toma por defecto. La opción TRUNCATED especifica que la parte decimal de “dividendo” es truncada. Si se especifica la opción GIVING el resultado queda almacenado en el campo variable “cociente”.Si se especifica la opción REMAINDER el resto de la división queda almacenado en el campo variable “resto”.

Página 20

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

Sentencia COMPUTE

La instrucción COMPUTE calcula el resultado de una expresión aritmética

COMPUTE campo-variable = expresión aritmética (ROUNDED ) (TRUNCATED )

El resultado de la operación queda en “campo-variable”. La opción ROUNDED especifíca que la parte decimal de “campo-variable” es redondeada en el caso de que el resultado de la operación tenga más cifras decimales que las definidas. Esta es la opción que se toma por defecto. La opción TRUNCATED especifica que la parte decimal de “campo-variable” es truncada.

Sentencia MOVE

La instrucción MOVE asigna a un “campo-variable” un valor constante, el valor de una constante figurativa o el valor contenido en un campo de datos.

MOVE valor TO campo-variable (ROUNDED ) (TRUNCATED)

El resultado de la operación queda en “campo-variable”.Las opciones ROUNDED y TRUNCATED funcionan como en las sentencias vistas anteriormente.La instrucción MOVE de ADS se diferencia de la del COBOL en que, al mover un valor a un campo numérico más pequeño, el COBOL trunca, mientras que el ADS cancela.

Página 21

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.2.4. Instrucciones condicionales

Detectan el resultado de una comparación y especifican distintos tipos de proceso dependiendo del resultado de la misma.

Sentencia IF.

Especifica una o más condiciones, a comprobar y las acciones a tomar en cada caso.

Si. se comprueba que el resultado de la comparación coincide con el expresado en la condición, se ejecutan las instrucciones que siguen a la expresión condicional; en caso contrario se ejecutan las que indican un proceso alternativo o, si no se indica este, la instrucción siguiente a la condicional.

IF expr-condicional (THEN) | sentencia || DO. sentencia,... END. |

(ELSE) | sentencia | | DO. sentencia,... END. |

La variable “expr-condicional” puede comparar dos valores, comprobar el ERROR-STATUS, comprobar un valor mediante un nombre de condición pre asignado, comprobar la posición del cursor en un mapa, si se ha ejecutado un dialogo por primera vez, el estado de los campos de un mapa, la existencia de miembros o no en un set, etc.Para especificar más de una instrucción se deben emplear las opciones DO, antes de la primera instrucción a ejecutar y END, después de la ultima.

Sentencia WHILE.

Especifica in bucle de tratamiento a procesar dependiendo del resultado de una comparación.

WHILE expr-condicional REPEAT. sentencia... END.

Sentencia NEXT.

Cede control a la instrucción siguiente a la IF. Se usa dentro de instrucciones condicionales anidadas para hacer coincidir las clausulas ELSE con las instrucciones IF que les correspondan.

NEXT COMNAND

Sentencia EXIT

Permite salir de un bucle de tratamiento creado por una sentencia WHILE. La ejecución continua en la instrucción siguiente a la. “END” que indica el final del bucle.

Esta instrucción, se suele utilizar con instrucciones condicionales que forman parte del bucle y que comprueban una condición secundaria EXIT.

Página 22

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.25. Instrucciones de control de subrutinas.

Permiten hacer. llamadas a subrutinas dentro de un proceso y devolver control desde las mismas.

Sentencia CALL

Especifica una llamada a una subrutina o unidad de tratamiento independiente del flujo normal del proceso. La subrutina debe estar definida después de la instrucción que hace la llamada, nunca antes.

Cuando el ADS encuentra una instrucción CALL, pasa a ejecutar la subrutina llamada hasta que encuentra en ella una instrucción de control u otra instrucción de control-de subrutinas.

CALL nombre-subrutina

Sentencia DEFINE

Especifica un punto de entrada, para una subrutina. Las subrutinas se definen siempre al final del proceso, por tanto, detrás de las instrucciones que las llaman.

DEFINE SUBROUTINE nombre-subrutina

Sentencia GOBACK

Termina la ejecución de la subrutina y devuelve control a la instrucción siguiente a la sentencia CALL “nombre-subrutina”. Si no se codifica, el ADS incluye una automáticamente al final de.la rutina.

GOBACK

Página 23

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.2.6. Instrucciones de modificación de mapas

Permiten modificar los atributos definidos para los campos del mapa que este utilizándose.

Sentencia ATTRIBUTES

Modifica las características de visualización o protección de los campos del mapa que se especifiquen. Solo se puede modificar un atributo con cada instrucción.

| BRIGHTEN | | (ALL BUT) CURRENT | (TEMP) | DARKEN ALL | | ALL (CORRECT) FIELDS | (PERM) | NORMAJIZE | | (ERROR) || UNPROTECT | | ALL ( BUT ) FIELD nombre-de-campo || PROTECT | | (nombre-de-campo...) |

Si se especifica CURRENT, se modifica el campo del mapa que este “current” en ese momento, es decir, el campo donde estaba el cursor en la última operación de “mapin.

Si se especifica ALL BUT CURRENT, se modificaran todos los campos excepto el “current”.

Si se especifica ALL CORRECT/ERROR FIELDS, se modificaran todos los campos considerados correctos o erróneos por el sistema automático de gestión de errores.

Si se especifica ALL FIELD “nombre-de-campo” o lista de nombres entre paréntesis, se modificaran el o los campos especificados. Si se utiliza la palabra clave BUT, se modificaran todos los campos del mapa excepto los especificados.

La clausula TEMP modifica el campo para la siguiente visualización del mapa. La clausula PER modifica el campo de forma permanente mientras este

activo el dialogo que da la instrucción.

Sentencia MODIFY MAP

Modifica las características de los campos que se especifiquen. Se puede modificar más de un atributo por cada instrucción.

MODIFY MAP (TEMP) opciones (PERM)

Las clausulas TEMP y PERM actúan de la misma forma que en la instrucción ATTRIBUTES.

Las opciones que pueden especificarse son la posición del cursor, los caracteres de control de impresión (WCC) y todos los atributos de los campos.

Página 24

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.2.7. Instrucciones de gestión de “scratch”

Los registros de “scratch” son registros empleados para pasar información de una tarea a otra siempre que ambas se ejecuten en el mismo terminal lógico.

Se emplean para almacenar temporalmente los datos por lo que no se salvan cuando se cierra el entorno de teleproceso, ni se recuperan cuando hay una caída del sistema.

Estos registros se almacenan en el área DDLDCSCR del diccionario y desde esta son recuperados cuando así se requiere.

Sentencia DELETE SCRATCH CURRENT FIRST LAST

DELETE SCRATCH AREA ID nombre-de--scratch NEXT PRIOR ALL RECORD ID num-registro

RETURN RECORD ID INTO nombre-de-campo

Esta instrucción borra los registros del área de “scratch” identificada con “nombre-de-scratch”.

Si se especifica CURRENT, que es también el valor que toma por defecto, la instrucción borra el registro que este “current” en ese momento para el área.

Si se especifica FIRST o LAST, se borraran el primer o último registro del área de “scratch”.

Si se especifica NEXT o PRIOR, se borraran el registro siguiente o el anterior al registro “curret” del área de “scratch”.

Si se especifica ALL, se borraran todos los registros del área de “scratch” especificada.

Cada registro de “scratch” tiene un identificador que, o bien es asignado automáticamente por el IDMS, o bien es asignado por el programador. Este identificador puede ser utilizado en las distintas operaciones para localizar los registros.

Si se especifica RECORD ID num-registro, se borrara el registro al que corresponda el identificador “num-registro”.

Si se especifica RETURN RECORD ID INTO nombre-de-campo, se almacenara en el campo “nombre-de-campo” el identificador del registro de “scratch” asignado por el IDMS.

Página 25

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.2.8. Instrucciones de utilidad

Permiten el uso de facilidades proporcionadas por el sistema.

Sentencia INIT

Inicializa.los campos de los registros que se especifiquen con los valores adecuados el que figure en la clausula VALUE IS, si existe, o espacios para los campos alfanuméricos o ceros para los numéricos.

INIIALIE RECOIDS | ALL ||(nombre-de-registro |

4.3.2.9. Instrucciones orientadas al generador

Indican al generador de diálogos que debe incluir un código fuente adicional en el proceso que esta compilándose.

Sentencia INCLUDE

Esta sentencia especifica el nombre de un modulo que debe ser insertado en este punto. El código fuente del modulo no se modifica, pero cuando se compila ese modulo, el generador de diálogos lo incluye automáticamente y figura dentro del “load module” del diálogo.

La sentencia INCLUDE debe ir codificada en una unida línea y no debe ir seguida de ninguna otra.

INCLUDE MODULE nombre-de-proceso

Página 26

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.3. Tipos de Funciones

Módulos o rutinas del sistema que devuelven un tipo de información a partir de una dada:

4.3.3.1. Funciones Aritméticas.

ABS: Devuelve el valor absoluto de ún n°. LOG1O: Logaritmo en base 10. LOG E: Logaritmo neperiano. MOD: Devuelve el resto de la división entre dos números. NEXIH: Devuelve un entero igual ó inmediatamente superior al dado. NEXIL: Devuelve un entero igual ó inmediatamente inferior al dado. NUMERIC: Devuelve verdadero ó falso dependiendo si el contenido de un campo

es numérico ó no. RAN: Devuelve un n° aleatorio calculado a partir de uno dado. INV: Cambia el signo. SIGV: Devuelve +1, -1, 0 dependiendo si el n° es positivo, negativo ó 0. SQRT: Devuelve la raíz cuadrada de un n°.

4.3.3.2. Funciones Trigonométricas.

Devuelve el resultado de operaciones trigonométricas ya sea en grados ó en radianes. ACOSD/ACOSR: Devuelve el arco coseno de un valor numérico. ASIND/ASINR: Devuelve el arco seno de un valor numérico. ATAND/ATANR: Devuelve el arco tangente. COSD/COSR: Devuelve el coseno. SIND/SINR: Devuelve el seno. TAND/TANR: Devuelve la tangente.

Página 27

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.3.3.3. Funciones de fecha.

Transforma un valor numérico a formato fecha, ó bien permite trabajar con el valor de una fecha. Gregoriano: ‘G’ --> YY/YYYY-MM-DD Calendario: ‘C’ --> MM-DD-YY/YYYY Europeo: ‘E’ --> DD-MM-YY/YYYY Juliano: ‘J’ --> YY/YYYY-DDD DATECHG/X: Cambia de formato una fecha dada al formato que se

especifique. X indica centuria completa. Ej.: DATECHG(19970901,’G’,’J’).

DATEDIF/X: Devuelve la diferencia entre dos fechas en días. DATEOFFIX: Devuelve una fecha, que es el resultado de haberle sumado a

otra un n° de días. GOODDATE/X: Indica si es correcto el valor de una fecha según el formato

especificado. TODAYIX: Devuelve la fecha del día en el formato especificado. TOMORROW/X: Devuelve la fecha del día siguiente. WEEKDAY/X: Devuelve el día de la semana correspondiente a una fecha (en inglés). YESTERDAY/X: Devuelve la fecha del día anterior.

4.3.3.4. Funciones de cadena.

A partir de una cadena pueden devolver un valor numérico ó una cadena. CON: Devuelve una cadena, como resultado de concatenar unas

dadas. EXT: Devuelve una cadena sin espacios en blanco ni por el principio

ni por el final. FIX2O/40/60/80: Devuelve una cadena formateada en las que sean, pero con un

formato especificado. INDX: Devuelve la posición en la que se encuentran un conjunto de

caracteres dentro de una determinada cadena. INITCAP: Convierte la primera letra de una cadena a mayúsculas y el

resto a minúsculas. INSERT: Devuelve una cadena en la cual se ha insertado otra, en una

determinada posición. LEFJUS: Ajusta la cadena a la izquierda sin modificar su longitud. SLEN: Devuelve la longitud de una cadena. LIKE: Devuelve verdadero ó falso si el contenido de una máscara

está en una cadena. TOLOWER: Convierte todos lo caracteres alfabéticos de una cadena a

minúsculas. SREP: Devuelve una cadena formada por la repetición de una dada

un n° específico de veces. REP: Devuelve una cadena de caracteres en la cuál se ha

reemplazado un con junto de caracteres por otro. SUBS: Devuelve un de cadena extraída a partir de una determinada

cadena de una determinada longitud a partir de una determinada posición.

TOUPPER: Convierte todos los caracteres alfabéticos de una cadena a mayúsculas.

Página 28

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

TRANS: Devuelve una cadena en la cual se ha sustituido ún carácter por otro.

VER: Devuelve la posición de una cadena en la que tiene un carácter distinto de los indicados. Ej.: IP VER (cadena, ‘0123456789’) NE 0

WORDCAP: Convierte a mayúsculas la inicial de cada una de las palabras incluidas en la cadena..

Página 29

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.4. ADSC (ADS Compiler)

El ADSC es la herramienta que empleamos para crear los módulos ejecutables de los diálogos. Cada vez que se vaya a ejecutar un dialogo se cargara una copia del modulo ejecutable de dicho dialogo.

Al igual que en MAPC, la tarea ADSC presenta una serie de paneles. Son:

- OPTIONS AND DIRECTIVES, pantalla de definición de opciones y directrices (Mainline dialog, Symbol table is enabled, Entry point is preamp, COBOL moves are enabled) donde seleccionamos las posibles opciones.

- MAP SPECIFICATIONS, pantalla de definición del nombre del MAPA, en caso de que. utilice uno, las opciones de paginación (si es paginable), los modos de paginación.

- DATABASE SPECIFICATIONS, pantalla de definición del nombre de esquema y subesquema en caso de que el dialogo vaya a hacer accesos a bases de datos.

- RECORDS AND TABLES, pantalla de definición de los registros de trabajo que va a utilizar el dialogo

- PROCESS MODULES, pantalla de definición del procesos “premap” que vaya a emplear él dialogo en el caso de que exista y de los procesos “response” que vaya a tener el dialogo, especificando cual es la tecla de función a la que van asociados.

Los diálogos se crean mediante el generador de diálogos de ADS/O, la tarea ADSC En el momento de generar un dialogo deben existir en el diccionario de datos las siguientes entidades:

- descripciones de los REGISTROS de trabajo

- código FUENTE de los módulos de proceso

- LOAD MODULE del MAPA (si se utiliza en el dialogo)

- LOAD MODULE del SUBESQUEMA (si hay acceso a base de datos)

El generador de diálogos compila los procesos, une los diversos componentes del dialogo y crea un modulo ejecutable que se almacena en el área de LOAD del diccionario.

Página 30

CURSO

IDMS

NOMBRE CURSO DE I.D.M.S

TITULO Curso de Programación ADS/ON-LINE

4.5. Conclusión

ADS/On-line es un sistema integrado de herramientas de software” que permite desarrollar y ejecutar aplicaciones “on-line” Estas herramientas son IDD, MAPC, ADSC, ADSA y el ADS Run-time System

Un DIALOGO es la unidad de proceso en una aplicación ADS/Online Consta de las siguientes partes mapa, procesos (“premap” y “response”) y registros. Cada dialogo, al ejecutarse, carga una copia del subesquema qué vaya a utilizar.

Una instrucción ADS/O siempre está formada por palabras CLAVE, que indican el tipo de operación a realizar y PARAMETROS, que cualifican las anteriores y especifican operaciones adicionales.

Según las funciones que realicen, las instrucciones de ADS/O se clasifican en varios grupos:

- de acceso y actualización de bases de datos, para manipular los datos de las mismas

- de control, para ejecutar otros diálogos u otras partes del mismo dialogo

- aritméticas y de asignación, para realizar operaciones aritméticas y mover valores a campos

- condicionales, que detectan el resultado de una comparación y especifican distintos tipos de proceso dependiendo del resultado

- control de subrutinas, que permiten hacer llamadas a subrutinas dentro de un proceso y devolver control desde las mismas

- de modificación de mapas, que permiten modificar los atributos definidos para los campos del mapa que este utilizándose

- de gestión de “scratch”

- de utilidad, permiten el uso de facilidades del sistema

- orientadas al generador.

Conviene que el tamaño de los diálogos sea el menor posible para favorecer el funcionamiento del monitor de teleproceso..

Página 31