CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programación ADS/ON-LINE

CURSO DE PROGRAMACION
ADS/ONLINE

Página
1

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programación ADS/ON-LINE

Página
2

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

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

diseñar y ejecutar prototipos de aplicaciones .M.1.desarrollar y ejecutar de un modo rápido y sencillo aplicaciones “on-line“ que actualicen o lean una base de datos o ficheros VSAM . 4.CURSO NOMBRE CURSO DE I.1.concentrarse en los aspectos funcionales de la programación a la hora de utilizar bases de datos . 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: .1. 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 .2.S IDMS TITULO Curso de Programación ADS/ON-LINE 4.utilización del diccionario de datos para mantener las definiciones de las aplicaciones.D. Introducción 4.1.

Es una herramienta que permite definir. ADSC.prototipo de la aplicación. El MAPC permite entonces crear mapas. Es una herramienta que permite definir el formato de los paneles con los que trabajaran los usuarios.funciones. referenciar y ensamblar. Estos podrán introducir datos en unos puntos específicos del panel. Crea la estructura de la aplicación formada por: .SIGNON) funciones MENU/DIALOGO y PROGRAM (programas escritos en un lenguaje distinto a ADS/O) . pueden ser: funciones MENU (creadas y gestionadas por el ADS/O). 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. La unión de Mapas. definiendo paneles. Crea los diálogos de la aplicación. La tabla que resulta de asociar los campos variables del panel con los campos de un registro recibe el nombre de mapa. que serán puntos a los que se hayan asociado campos variables. permitirá la asociación de los datos recogidos en los registros (Mapa y Procesos).M. del SISTEMA (que ejecutan actividades comunes a la mayor parte de las aplicaciones HELP. los componentes de un Diálogo. dentro del flujo de la aplicación. ADS Run-time System Controla la ejecución de las aplicaciones Página 5 .D.respuestas. que son las unidades de trabajo que relacionan distintas funciones entre si. Registros y Procesos.S IDMS TITULO Curso de Programación ADS/ON-LINE MAPC. que son unidades estructurales o de trabajo que definen todas las posibles actividades que pueden realizarse dentro de la aplicación. asociando registros a estos y generando la tabla correspondiente. ADSA.CURSO NOMBRE CURSO DE I. puede haber varias respuestas asociadas a una función y cada respuesta llamara a su vez a otra función . funciones DIALOGO (creadas por el programador). pueden estar asociadas a teclas de función o seleccionarse dando un valor en un campo del mapa llamado $RESPONSE.

DIALOGO. Las descripciones fuentes se almacenan en el área DDLDML del diccionario y los módulos ejecutables en el área DDLDCLOD.1. cada dialogo solo puede contener un mapa .proceso RESPONSE que define un tratamiento a ejecutar después e la visualización e introducción de datos en el mapa. Un dialogo consta de las siguientes partes: .REGISTROS: aquellos con los que va a trabajar el dialogo.D.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.M.registros del mapa . Todos los Diálogos debe tener al menos un Proceso PREMAP . invocar subrutinas. Componentes de un dialogo Un DIALOGO es la unidad de proceso en una aplicación ADS/Online.registros de bases de datos . Pueden ser de dos tipos: .registros de trabajo . etc.SUEESQUEMA: visión de la base de datos que será utilizada por el dialogo. Las Instrucciones proporcionadas en un dialogo están codificadas en ADS/On-line. hacer operaciones de asignación o aritméticas.proceso PREMAP que define un tratamiento de datos que ha de ser ejecutado antes de que se visualice el mapa en el terminal. Página 6 . ceder control a otros diálogos. son: . . puede haber varios para un dialogo y están asociados a este mediante una tecla de función o un valor de respuesta.CURSO NOMBRE CURSO DE I.MAPA: transmite la información entre el terminal y la aplicación.3.S IDMS TITULO Curso de Programación ADS/ON-LINE 4.

MAPOUT: visualiza en el terminal el mapa con sus datos o finaliza la tarea de IDMS/DC (lógicamente queda en suspenso).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. . Siempre que se ejecuta un dialogo se siguen los pasos que a continuación se detallan: . (Si se trabaja con base de datos. todos los módulos de proceso deben terminar con un comando de control.D. que pasa el control al mapa.PREMAP PROCESS (siempre debe existir).M.S IDMS 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.CURSO NOMBRE CURSO DE I. Si no existe este proceso. finaliza con un comando de control. . 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). el dialogo se ejecuta empezando directamente en el paso siguiente. un “mapout” finaliza la “run unit”. Página 7 . generalmente DISPLAY.

Dicha respuesta se transmite al sistema y este visualiza la siguiente pantalla con sus mensajes e “Instrucciones”. Página 8 . En la pantalla se visualiza el mapa con los datos e Instrucciones (llamando Instrucciones a las opciones disponibles del dialogo).M.S IDMS 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.CURSO NOMBRE CURSO DE I. El usuario sigue dichas “Instrucciones” y selecciona la respuesta apropiada.D.

.2.no utilizar la tecla “borra” o “fdc” una vez que estemos dibujando el mapa . por tanto.manejar varios registros de trabajo en aquellos mapas donde la complejidad. pues aumenta el tiempo de transmisión y. Esta tarea presenta una serie de pantallas formateadas que. . la cantidad de datos o la lógica del programa (traspaso de datos entre diálogos) lo aconseje . o bien aparecen secuencialmente al pulsar la tecla PF5.definir los registros de trabajo del mapa en el IDD antes de entrar en MAPC para dibujar el mapa . 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. el de respuesta.intentar no recargar los mapas con muchos campos.D. Para definirlos utilizamos la herramienta que nos proporciona el IDMS.M. Página 9 .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: . donde vamos a especificar los atributos de los campos del mapa . la IDMS-DC/UCF Mapping Computer a través de la tarea MAPC. o bien pueden ser seleccionadas directamente. MAPC (Mapin Computer) La comunicación entre usuario y aplicación se establece a través de los MAPAS.ASSCIATED RECORDS o pantalla de asignación de los registros que se van a utilizar el mapa.CURSO NOMBRE CURSO DE I.MAP-LEVEL HELP TEXT DEFINITION o pantalla de definición de formato de pantalla y los posibles textos .LAYOUT o pantalla de definición del formato donde dibujamos el mapa en la forma en que queremos que se visualice.S IDMS TITULO Curso de Programación ADS/ON-LINE 4. Pantalla de edición de campos.

logaritmos. .M. etc.1.CAMPOS DE DATOS VARIABLES: su contenido puede ser modificado durante la ejecución de un dialogo. Formato de una instrucción Una instrucción ADS/O siempre está formada por ..todas las Instrucciones terminan en punto.3. .S IDMS TITULO Curso de Programación ADS/ON-LINE 4. no numéricos o constantes figurativas.PALABRAS CLAVE que indican el tipo de operación a realizar .VALORES CONSTANTES: son literales numéricos.PARAMETROS que cualifican a las anteriores y especifican operaciones adicionales..3. Estos campos pueden ser: .CURSO NOMBRE CURSO DE I. entre estos los más empleados son: DIRECT-DBKEY.D. Se pueden dejar líneas en blanco (no son tratadas por el compilador) e insertar líneas de comentarios (empiezan por el carácter “]”). HIGH-VALUES. ZEROS. y funciones trigonométricas calculando los valores en radianes y grados.de usuario .). LOW-VALUES. TIME. . Permiten el tratamiento de cadenas de literales.claves (palabras clave definidas por el sistema que califican el tipo de operación) .del sistema. Entre estas últimas las más usuales son: SPACES.NOMBRES DE ENTIDADES. realizar funciones aritméticas (valor absoluto..variables (campos que contienen valores proporcionados por el usuario) . Página 10 .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. Tipos de variables Los parámetros variables que se pueden especificar en una introducción pueden ser de varios tipos: . raíces cuadradas. ERROR-STATUS. Los parámetros pueden ser: . Consideraciones Las sentencias de mandatos ADS/O se pueden codificar en más de una línea sin especificar carácter de continuación. Todas las Instrucciones tienen que terminar en un punto. Codificación en ADS/O 4. DATE. Pueden empezar en cualquier columna y llegar hasta la 72.

D. de error.CURSO NOMBRE CURSO DE I. condicionales.M. Página 11 .expresiones aritméticas.S IDMS TITULO Curso de Programación ADS/ON-LINE .

S IDMS TITULO Curso de Programación ADS/ON-LINE 4.D. abre Áreas en “RETRIEVAL”. las Instrucciones de ADS/O se clasifican en varios grupos: . Sentencias de búsqueda y lectura Localizan datos en la base de datos y los hacen disponibles para el programa. la instrucción KEEP. y lo transfiere al buffer) .control de subrutinas .2. 4.condicionales .de acceso y actualización de bases de datos .“current” de tipo de registro .“current “ de unidad de ejecución .sentencias de recuperación de db-key . Su formato es READY nombre-de-área USAGE-MODE (PROTECTED) RETRIEVAL (EXCLUSIVE) UPDATE Por defecto.“current“ de tipo de set .sentencias de control .aritméticas y de asignación .“current“ de área.1.sentencias de actualización .CURSO NOMBRE CURSO DE I.de gestión de “scratch” .de utilidad.3.de modificación de mapas . Se pueden clasificar a su vez en: . El registro localizado mediante una de estas Instrucciones queda como: . 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. Tipos de Instrucciones Según las funciones que realicen.de control .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.FIND (localiza un registro en la B.GET (transfiere el registro del “buffer“ al área de trabajo del programa) .2.sentencias de búsqueda y lectura .M. Las Instrucciones son: .OBTAIN (combina en una sola instrucción las funciones de FIND y GET) Página 12 .3.D.

FIND (LAST) WITHIN nombre-de-area. Previamente habremos movido un valor al campo clave CALC del registro. OBTAIN (FIRST) registro WITHIN nombre-de-set. de set o de área como “current“ de “run unit“. El formato de la instrucción con la clausula es el siguiente: OBTAIN (KEEP ). Página 13 . KEEP EXCLUSIVE impide un acceso concurrente de lectura y/o actualización sobre el registro.CURSO NOMBRE CURSO DE I.M. Si no se indica. (NEXT) (PRIOR) (num. FIND (DUPLICATE) Permite seleccionar una ocurrencia de registro CALC dentro de la base de datos. 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. En todos los casos se puede indicar o no un tipo de registro.D.) Permite seleccionar un registro dentro de un set o un Área. Este formato se utiliza habitualmente con la instrucción MODIFY. que establecen bloqueos explícitos sobre los registros objeto de la operación.S IDMS 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. 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.

set o área (si se especifican). Los bloqueos pueden ser: . 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. 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 .M. .COMPARTIDOS (un registro con un bloqueo compartido puede ser accedido pero no actualizado por otras “run units“. la selección comienza en la ocurrencia que sea CURRENT del set dado. Una “run unit” no puede poner ningún bloqueo sobre un registro con un bloqueo exclusivo. Si especificamos CURRENT. Un bloqueo puede ser: . si se establecen para todos los registros “current“.EXPLICITO (es un bloqueo especificado en el programa.D. debe esperar a que este registro sea desbloqueado). debe esperar a que sea liberado. Estas pueden poner también bloqueos compartidos en ese mismo registro) . Pueden ser compartidos.IMPLICITO (un bloqueo implícito es establecido o liberado por el IDMS para todas las “run unit“ que ejecutan en modo SHARED UPDATE. Una “run unit” no puede poner un bloqueo exclusivo sobre un registro con bloqueos compartidos.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. Si no especificamos CURRENT la selección comienza en el padre del set.S IDMS 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).CURSO NOMBRE CURSO DE I. Página 14 .EXCLUSIVOS (un registro con un bloqueo exclusivo no puede ser accedido ni actualizado por ninguna otra “run unit“.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“. Existen dos formatos para la instrucción KEEP: . si se establecen para todos los registros que van a ser modificados. o exclusivos. Se puede bloquear un registro con la clausula KEEP de las Instrucciones FIND/OBTAIN o mediante la instrucción KEEP).

La clausula ALL borra el registro indicado y todos sus hijos en los sets de los que sea padre. OBTAIN o de otra MODIFY. Esta instrucción debe ir precedida por una instrucción STORE. OA (Optional Automatic) o OM (Optional Manual). Los hijos Optional son desconectados. Los hijos Optional que sean hijos de otro set solo son desconectados.D. Página 15 . sin eliminar el registro de la base de datos. Se pierde el “current” de set y se mantienen los otros tres.M. La clausula SELECTIVE borra el registro indicado. MODIFY registro Reemplaza los valores del registro “current” de “run unit” por los valores indicados en. DISCONNECT registro FROM set Suprime la conexión de un registro al set indicado.CURSO NOMBRE CURSO DE I. Hay que establecer los “current” de todos los sets a los que el registro ha de conectarse automáticamente. CONNECT registro TO set Conecta una ocurrencia del registro especificado al set indicado. La clausula PERMANENT borra el registro indicado y sus hijos Mandatory. Son las siguientes: STORE registro Añade una nueva ocurrencia de registro a la base de datos. la zona de trabajo. Esta instrucción solo puede emplearse con sets definidos como OPTIONAL. GET. (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“.S IDMS TITULO Curso de Programación ADS/ON-LINE Sentencias de actualización Permiten actualizar los datos almacenados en la base de datos. si el set de carga es manual hay que establecer el “curren “ del padre del set al que conectaremos el registro más adelante. sus hijos Mandatory y sus hijos Optional que no sean hijos de ningún otro set. Este set tiene que estar definido como MM (Mandatory Manual).

en el caso de que esta cancele. (registro) ACCEPT db-key-id FROM (set ) CURRENCY (área ) Guarda en el campo indicado en db-key-id. Sentencias de seguridad e integridad Permiten establecer cuáles van a ser las unidades de recuperación (“recovery unit”) para una transacción. es decir. anterior o del padre del set indicado. IF SET (NOT) nombre-de-set MEMBER sentencia-imperativa Analiza si el registro “current” de “run unit” es o no hijo del set especificado. (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 recuperación de db-key Permiten guardar la “db-key“ de un registro en un campo de trabajo.M. Página 16 .D. no tiene ningún “hijo”. IF SET nombre-de-set IS (NOT) EMPTY sentencia-imperativa Permite analizar si un set esta vacio. la “db-key“ del registro “current“ de cualquier tipo. ROLLBACK. y restaurar la información de una base de datos a una situación anterior a una actualización COMMIT.S IDMS 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. Anula el efecto de una unidad de recuperación hasta el último “checkpoint” y termina la “run unit”. 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. (NEXT ) ACCEPT db-key-id FROM set (PRIOR) CURRENCY (OWNER) Guarda la “db-key“ de la ocurrencia siguiente.CURSO NOMBRE CURSO DE I.

3. Esta cesión puede hacerse manteniendo los datos y los recursos del dialogo que cede control o sin mantenerlos. (CONTINUE DISPLAY (MSG TEXT texto-mensaje (MSG CODE codigo-mensaje (ERASE ) ) ) ) Si se especifica únicamente DISPLAY se visualiza el mapa asociado al dialogo.S IDMS TITULO Curso de Programación ADS/ON-LINE 4.2. DISPLAY CONTINUE se especifica en un proceso “response” cuando se quiere volver a ejecutar el proceso “premap” del dialogo. Instrucciones de control Permiten ceder control a otra parte del mismo dialogo o a un dialogo distinto. que debe estar definido como “mainline“. En el segundo caso.CURSO NOMBRE CURSO DE I. Son los que establecen la estructura de una aplicación. Una aplicación tiene como punto de entrada un dialogo principal. Dentro de la estructura de nuestra aplicación podemos tener subestructuras llamadas “estructuras anidadas“. cuando cedemos control a un dialogo que está en el mismo nivel o en un nivel superior los “buffers“ no se mantienen. 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. el dialogo que cede control permanece operativo y todos sus “buffers“ de registros se mantienen. 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. un mensaje determinado o volver a ejecutar el proceso premap de un dialogo. 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. La variable “texto-mensaje” puede ser un campo que contenga el mensaje propiamente dicho.M. el mapa no es visualizado en el terminal. 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. DISPLAY MSG TEXT texto-mensaje visualiza en el campo de mensajes del mapa el texto especificado.2. El primer caso supone la creación de un nivel más bajo en la estructura de la aplicación. Si se especifica ERASE no puede especificarse nada más. Esta instrucción es obligatoria en el proceso premap de un dialogo que tenga un mapa. esto es. Sentencia DISPLAY Permite visualizar un mapa. TRANSFER TO nombre-dialogo Página 17 . Si no se especifica.D.

PL/I.S IDMS TITULO Curso de Programación ADS/ON-LINE La variable “nombre-dialogo” puede ser el nombre del dialogo al que se pasa control o. Cuando el dialogo o programa llamado devuelve control. Se pueden especificar varios registros separándolos con espacios o comas. pero nunca devolverlo a un dialogo de un nivel más alto que el del dialogo que hace el LINK. La clausula USING especifica los datos que deben pasarse al programa de usuario y solo puede ser utilizada con este tipo de programas. El programa puede ser COBOL. 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. 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. 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. Los diálogos que participan en una estructura anidada pueden emitir sentencias de control. el dialogo que hace el LINK sigue ejecutándose en la instrucción siguiente a la LINK. Ensamblador. un campo de datos variable que contiene el nombre del dialogo. Página 18 . Sentencia INVOKE Pasa control a un dialogo a la vez que establece un nivel más bajo en la estructura de la aplicación.CURSO NOMBRE CURSO DE I.D. El dialogo que cede control permanece operativo y sus “current” activos. Sentencia LINK Pasa control a un dialogo a la vez que establece un nivel más bajo en la estructura de la aplicación.M. El dialogo que cede control permanece operativo y sus “current” activos. 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. Un diálogo puede llamarse a si mismo.

Sentencia LEAVE Termina la sesión de ADS/O que se esta ejecutando. Un dialogo que ha sido llamado mediante LINK devuelve control. CONTINUE provoca la ejecución del proceso “premap” del dialogo que recibe control. con RETURN.M. que este operativo. LEAVE (ADS) Si no se especifica ADS se devuelve control a la pantalla de ADS de selección de diálogos. al dialogo que emitió el LINK.D. Nunca podrá devolver control a un dialogo que este en un nivel más alto que el que hace el LINK.CURSO NOMBRE CURSO DE I. 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. Página 19 . la instrucción RETURN puede devolver control a cualquier dialogo de cualquier nivel o al primer nivel de la estructura de la aplicación.S IDMS 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. 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. a la instrucción siguiente a la LINK. Fuera de estructuras anidadas. Si podrá pasar control a cualquier dialogo que haya sido llamado con INVOKE dentro de la estructura anidada. El dialogo que devuelve control queda no operativo. CLEAR inicializa los “bufférs” de los registros y los “current” del dialogo que recibe control. los diálogos operativos hasta entonces dejan de estarlo y.se liberan todos los “current” y “buffers” de registros.

M.CURSO NOMBRE CURSO DE I.3. Esta es la opción que se toma por defecto. 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. La opción TRUNCATED especifíca que la parte decimal de “campo-variable” es truncada. Esta es la opción que se toma por defecto. ADD valor TO campo-variable (ROUNDED ) (TRUNCATED ) El resultado de la operación queda en “campo-variable”.D.2. La opción TRUNCATED especifica que la parte decimal de “campo-variable” es truncada. 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”. SUBTRACT valor FROM campo-variable (ROUNDED ) (TRUNCATED) El resultado de la operación queda en “campo-variable”. 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.S IDMS TITULO Curso de Programación ADS/ON-LINE 4. 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”. 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. Página 20 .3.

Si se especifica la opción REMAINDER el resto de la división queda almacenado en el campo variable “resto”.CURSO NOMBRE CURSO DE I.M. DIVIDE divisor INTO dividendo GIVING cociente REMAINDER resto (ROUNDED ) (TRUNCATED) (ROUNDED ) (TRUNCATED) El resultado de la operación queda en “dividendo”. 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.D. La opción TRUNCATED especifica que la parte decimal de “campo-variable“ es truncada. 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. Esta es la. Esta es la opción que se toma por defecto. Página 21 . 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. Si se especifica la opción GIVING el resultado queda almacenado en el campo variable “cociente”. 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). La opción TRUNCATED especifica que la parte decimal de “dividendo” es truncada.variable“.S IDMS TITULO Curso de Programación ADS/ON-LINE Sentencia MULTIPLY La instrucción MULTIPLY. opción que se toma por defecto. MULTIPLY valor BY campo-variable (ROUNDED ) (TRUNCATED) El resultado de la operación queda en el ”campo-variable”.

al mover un valor a un campo numérico más pequeño.D. el COBOL trunca. el valor de una constante figurativa o el valor contenido en un campo de datos. mientras que el ADS cancela. Sentencia MOVE La instrucción MOVE asigna a un “campo-variable” un valor constante. MOVE valor TO campo-variable (ROUNDED ) (TRUNCATED) El resultado de la operación queda en “campo-variable”. Página 22 . Esta es la opción que se toma por defecto. Las opciones ROUNDED y TRUNCATED funcionan como en las sentencias vistas anteriormente.CURSO NOMBRE CURSO DE I. La opción TRUNCATED especifica que la parte decimal de “campo-variable” es truncada. La instrucción MOVE de ADS se diferencia de la del COBOL en que.M. 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.S IDMS 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”.

Si. sentencia. Se usa dentro de instrucciones condicionales anidadas para hacer coincidir las clausulas ELSE con las instrucciones IF que les correspondan..CURSO NOMBRE CURSO DE I. END. antes de la primera instrucción a ejecutar y END. IF expr-condicional (THEN) (ELSE) | sentencia | | DO. sentencia. en caso contrario se ejecutan las que indican un proceso alternativo o. si se ha ejecutado un dialogo por primera vez.M.3.4. Esta instrucción. comprobar un valor mediante un nombre de condición pre asignado. | | sentencia | | DO. Para especificar más de una instrucción se deben emplear las opciones DO. Sentencia WHILE. Sentencia IF. se ejecutan las instrucciones que siguen a la expresión condicional. END.D. comprobar el ERROR-STATUS. sentencia. “END” que indica el final del bucle.2. si no se indica este. La ejecución continua en la instrucción siguiente a la.S IDMS TITULO Curso de Programación ADS/ON-LINE 4.. Cede control a la instrucción siguiente a la IF. Instrucciones condicionales Detectan el resultado de una comparación y especifican distintos tipos de proceso dependiendo del resultado de la misma. la instrucción siguiente a la condicional.. NEXT COMNAND Sentencia EXIT Permite salir de un bucle de tratamiento creado por una sentencia WHILE.. después de la ultima.. WHILE expr-condicional REPEAT.. Sentencia NEXT. | La variable “expr-condicional” puede comparar dos valores. se suele utilizar con instrucciones condicionales que forman parte del bucle y que comprueban una condición secundaria Página 23 . etc.. END. la existencia de miembros o no en un set. comprobar la posición del cursor en un mapa. se comprueba que el resultado de la comparación coincide con el expresado en la condición. Especifica in bucle de tratamiento a procesar dependiendo del resultado de una comparación.. Especifica una o más condiciones. el estado de los campos de un mapa. a comprobar y las acciones a tomar en cada caso.

Permiten hacer. Las subrutinas se definen siempre al final del proceso. Sentencia CALL Especifica una llamada a una subrutina o unidad de tratamiento independiente del flujo normal del proceso.25. Cuando el ADS encuentra una instrucción CALL. 4. Instrucciones de control de subrutinas. por tanto. llamadas a subrutinas dentro de un proceso y devolver control desde las mismas. el ADS incluye una automáticamente al final de. Si no se codifica. 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”. nunca antes. pasa a ejecutar la subrutina llamada hasta que encuentra en ella una instrucción de control u otra instrucción de control-de subrutinas.M. para una subrutina. CALL nombre-subrutina Sentencia DEFINE Especifica un punto de entrada.CURSO NOMBRE CURSO DE I.D.S IDMS TITULO Curso de Programación ADS/ON-LINE EXIT. GOBACK Página 24 .la rutina. La subrutina debe estar definida después de la instrucción que hace la llamada.3. detrás de las instrucciones que las llaman.

CURSO NOMBRE CURSO DE I. Si se especifica ALL CORRECT/ERROR FIELDS. Instrucciones de modificación de mapas Permiten modificar los atributos definidos para los campos del mapa que este utilizándose.6. Si se utiliza la palabra clave BUT. La clausula PER modifica el campo de forma permanente mientras este activo el dialogo que da la instrucción..3. es decir. Sentencia MODIFY MAP Modifica las características de los campos que se especifiquen. | | | | | BRIGHTEN | | (ALL BUT) CURRENT DARKEN ALL | | ALL (CORRECT) FIELDS NORMAJIZE | | (ERROR) UNPROTECT | | ALL ( BUT ) FIELD nombre-de-campo PROTECT | | (nombre-de-campo. MODIFY MAP (TEMP) opciones (PERM) Las clausulas TEMP y PERM actúan de la misma forma que en la instrucción ATTRIBUTES. Se puede modificar más de un atributo por cada instrucción.S IDMS TITULO Curso de Programación ADS/ON-LINE 4. se modifica el campo del mapa que este “current” en ese momento.M. el campo donde estaba el cursor en la última operación de “mapin. Si se especifica ALL BUT CURRENT.D. se modificaran todos los campos excepto el “current”. Página 25 .. La clausula TEMP modifica el campo para la siguiente visualización del mapa. los caracteres de control de impresión (WCC) y todos los atributos de los campos. Sentencia ATTRIBUTES Modifica las características de visualización o protección de los campos del mapa que se especifiquen.2. Las opciones que pueden especificarse son la posición del cursor. se modificaran el o los campos especificados. se modificaran todos los campos considerados correctos o erróneos por el sistema automático de gestión de errores. se modificaran todos los campos del mapa excepto los especificados.) | (TEMP) | (PERM) | | | Si se especifica CURRENT. Solo se puede modificar un atributo con cada instrucción. Si se especifica ALL FIELD “nombre-de-campo” o lista de nombres entre paréntesis.

se borraran el primer o último registro del área de “scratch”. Si se especifica RETURN RECORD ID INTO nombre-de-campo. Si se especifica FIRST o LAST. la instrucción borra el registro que este “current” en ese momento para el área. Si se especifica CURRENT. o bien es asignado automáticamente por el IDMS.2.3. se almacenara en el campo “nombre-de-campo” el identificador del registro de “scratch” asignado por el IDMS. 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”. Estos registros se almacenan en el área DDLDCSCR del diccionario y desde esta son recuperados cuando así se requiere. ni se recuperan cuando hay una caída del sistema. Se emplean para almacenar temporalmente los datos por lo que no se salvan cuando se cierra el entorno de teleproceso. se borraran todos los registros del área de “scratch” especificada. Si se especifica ALL. Este identificador puede ser utilizado en las distintas operaciones para localizar los registros. 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. Si se especifica NEXT o PRIOR. se borrara el registro al que corresponda el identificador “num-registro”.7. que es también el valor que toma por defecto.S IDMS TITULO Curso de Programación ADS/ON-LINE 4. o bien es asignado por el programador. Si se especifica RECORD ID num-registro. Cada registro de “scratch” tiene un identificador que.M.D.CURSO NOMBRE CURSO DE I. se borraran el registro siguiente o el anterior al registro “curret” del área de “scratch”. Página 26 .

pero cuando se compila ese modulo. Sentencia INIT Inicializa.M. INCLUDE MODULE nombre-de-proceso Página 27 .S IDMS TITULO Curso de Programación ADS/ON-LINE 4.8. 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. Instrucciones de utilidad Permiten el uso de facilidades proporcionadas por el sistema. o espacios para los campos alfanuméricos o ceros para los numéricos.los campos de los registros que se especifiquen con los valores adecuados el que figure en la clausula VALUE IS.2. Sentencia INCLUDE Esta sentencia especifica el nombre de un modulo que debe ser insertado en este punto. si existe. El código fuente del modulo no se modifica.CURSO NOMBRE CURSO DE I. La sentencia INCLUDE debe ir codificada en una unida línea y no debe ir seguida de ninguna otra.9. INIIALIE RECOIDS | ALL | |(nombre-de-registro | 4.D. el generador de diálogos lo incluye automáticamente y figura dentro del “load module” del diálogo.3.2.3.

ABS: LOG1O: LOG E: MOD: NEXIH: NEXIL: NUMERIC: RAN: INV: SIGV: SQRT: Devuelve el valor absoluto de ún n°. ACOSD/ACOSR: Devuelve el arco coseno de un valor numérico. Devuelve un entero igual ó inmediatamente inferior al dado. negativo ó 0. Devuelve un entero igual ó inmediatamente superior al dado. Devuelve el resultado de operaciones trigonométricas ya sea en grados ó en radianes. -1. Logaritmo en base 10.3.S IDMS TITULO Curso de Programación ADS/ON-LINE 4. TAND/TANR: Devuelve la tangente.3. ATAND/ATANR: Devuelve el arco tangente.3. Devuelve el resto de la división entre dos números.2.1. SIND/SINR: Devuelve el seno. Devuelve verdadero ó falso dependiendo si el contenido de un campo es numérico ó no. Devuelve un n° aleatorio calculado a partir de uno dado. Tipos de Funciones Módulos o rutinas del sistema que devuelven un tipo de información a partir de una dada: 4. Logaritmo neperiano. ASIND/ASINR: Devuelve el arco seno de un valor numérico. Devuelve +1.3. Devuelve la raíz cuadrada de un n°. Cambia el signo.3.D. 4. 0 dependiendo si el n° es positivo. COSD/COSR: Devuelve el coseno.CURSO NOMBRE CURSO DE I. Funciones Aritméticas. Página 28 .M.3. Funciones Trigonométricas.

Transforma un valor numérico a formato fecha. TOMORROW/X: Devuelve la fecha del día siguiente. LEFJUS: Ajusta la cadena a la izquierda sin modificar su longitud.: DATECHG(19970901. pero con un formato especificado. INSERT: Devuelve una cadena en la cual se ha insertado otra.3.D. Devuelve una cadena. Ej. ó bien permite trabajar con el valor de una fecha. WEEKDAY/X: Devuelve el día de la semana correspondiente a una fecha (en inglés). TOLOWER: Convierte todos lo caracteres alfabéticos de una cadena a minúsculas. que es el resultado de haberle sumado a otra un n° de días.CURSO NOMBRE CURSO DE I. DATEDIF/X: Devuelve la diferencia entre dos fechas en días. como resultado de concatenar unas dadas.’G’. A partir de una cadena pueden devolver un valor numérico ó una cadena.’J’).3. SREP: Devuelve una cadena formada por la repetición de una dada un n° específico de veces. FIX2O/40/60/80: Devuelve una cadena formateada en las que sean. en una determinada posición. LIKE: Devuelve verdadero ó falso si el contenido de una máscara está en una cadena. EXT: Devuelve una cadena sin espacios en blanco ni por el principio ni por el final. YESTERDAY/X: Devuelve la fecha del día anterior. Funciones de cadena. 4. TODAYIX: Devuelve la fecha del día en el formato especificado. DATEOFFIX: Devuelve una fecha. INITCAP: Convierte la primera letra de una cadena a mayúsculas y el resto a minúsculas. 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. GOODDATE/X: Indica si es correcto el valor de una fecha según el formato especificado. CON: Página 29 . SLEN: Devuelve la longitud de una cadena. Funciones de fecha.S IDMS TITULO Curso de Programación ADS/ON-LINE 4. X indica centuria completa. REP: Devuelve una cadena de caracteres en la cuál se ha reemplazado un con junto de caracteres por otro.M. INDX: Devuelve la posición en la que se encuentran un conjunto de caracteres dentro de una determinada cadena.4.3.3.3.

Página 30 .M.S IDMS TITULO Curso de Programación ADS/ON-LINE SUBS: TOUPPER: TRANS: VER: WORDCAP: Devuelve un de cadena extraída a partir de una determinada cadena de una determinada longitud a partir de una determinada posición.D. Ej. Devuelve la posición de una cadena en la que tiene un carácter distinto de los indicados. Convierte todos los caracteres alfabéticos de una cadena a mayúsculas.: IP VER (cadena. ‘0123456789’) NE 0 Convierte a mayúsculas la inicial de cada una de las palabras incluidas en la cadena.. Devuelve una cadena en la cual se ha sustituido ún carácter por otro.CURSO NOMBRE CURSO DE I.

pantalla de definición del nombre de esquema y subesquema en caso de que el dialogo vaya a hacer accesos a bases de datos. Cada vez que se vaya a ejecutar un dialogo se cargara una copia del modulo ejecutable de dicho dialogo.DATABASE SPECIFICATIONS. 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.D. en caso de que.OPTIONS AND DIRECTIVES.4. Al igual que en MAPC. pantalla de definición de opciones y directrices (Mainline dialog. pantalla de definición de los registros de trabajo que va a utilizar el dialogo .MAP SPECIFICATIONS.CURSO NOMBRE CURSO DE I. Los diálogos se crean mediante el generador de diálogos de ADS/O. .S IDMS TITULO Curso de Programación ADS/ON-LINE 4.LOAD MODULE del SUBESQUEMA (si hay acceso a base de datos) El generador de diálogos compila los procesos. la tarea ADSC En el momento de generar un dialogo deben existir en el diccionario de datos las siguientes entidades: .código FUENTE de los módulos de proceso . une los diversos componentes del dialogo y crea un modulo ejecutable que se almacena en el área de LOAD del diccionario.RECORDS AND TABLES. Symbol table is enabled.PROCESS MODULES. Página 31 . Entry point is preamp. . los modos de paginación. la tarea ADSC presenta una serie de paneles. especificando cual es la tecla de función a la que van asociados.descripciones de los REGISTROS de trabajo . las opciones de paginación (si es paginable).LOAD MODULE del MAPA (si se utiliza en el dialogo) . pantalla de definición del nombre del MAPA. . COBOL moves are enabled) donde seleccionamos las posibles opciones.M. Son: . ADSC (ADS Compiler) El ADSC es la herramienta que empleamos para crear los módulos ejecutables de los diálogos. utilice uno.

que permiten hacer llamadas a subrutinas dentro de un proceso y devolver control desde las mismas . para ejecutar otros diálogos u otras partes del mismo dialogo . Conviene que el tamaño de los diálogos sea el menor posible para favorecer el funcionamiento del monitor de teleproceso.M. ADSC. que detectan el resultado de una comparación y especifican distintos tipos de proceso dependiendo del resultado .D.de gestión de “scratch” . 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. que permiten modificar los atributos definidos para los campos del mapa que este utilizándose .de modificación de mapas.condicionales.de acceso y actualización de bases de datos. que indican el tipo de operación a realizar y PARAMETROS.. MAPC. para manipular los datos de las mismas . que cualifican las anteriores y especifican operaciones adicionales.5. 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. Cada dialogo. Una instrucción ADS/O siempre está formada por palabras CLAVE.S IDMS TITULO Curso de Programación ADS/ON-LINE 4. permiten el uso de facilidades del sistema . carga una copia del subesquema qué vaya a utilizar. para realizar operaciones aritméticas y mover valores a campos . Según las funciones que realicen. Página 32 . al ejecutarse.orientadas al generador. las instrucciones de ADS/O se clasifican en varios grupos: .de control.aritméticas y de asignación.de utilidad.CURSO NOMBRE CURSO DE I. procesos (“premap” y “response”) y registros.control de subrutinas.