You are on page 1of 32

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

CURSO DE PROGRAMACION
ADS/ONLINE

Pgina
1

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

Pgina
2

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

INDICE
=======
4.1. Introduccin
4.1.1. ADS/On-line
4.1.2. Herramientas que proporciona el IDMS
4.1.3. Dilogo
Componentes de un dialogo
Ejecucin de un dialogo
4.2. MAPC (Mapin Compiler)
4.3. Codificacin en ADS/O
4.3.1. Consideraciones
4.3.2. Tipos de instrucciones
4.3.2.1. Instrucciones de acceso y actualizacin
4.3.2.2. Instrucciones de control
4.3.2.3. Instrucciones aritmticas y de asignacin
4.3.2.4. Instrucciones condicionales
4.3.2.5. Instrucciones de control de subrutinas
4.3.2.6. Instrucciones de modificacin de mapas
4.3.2.7. Instrucciones de gestin 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 Aritmticas
4.3.3.2. Funciones Trigonomtricas
4.3.3.3. Funciones de fecha
4.3.3.4. Funciones de cadena
4.4. ADSC (ADS Compiler)
4.5. Conclusin

Pgina
3

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.1. Introduccin
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 programacin a la hora de
utilizar bases de datos
- disear y ejecutar prototipos de aplicaciones
- desarrollar y ejecutar de un modo rpido y sencillo aplicaciones on-line
que actualicen o lean una base de datos o ficheros VSAM
- utilizacin 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 aplicacin ADS/Online:
IDD
Permite almacenar todos los componentes de la aplicacin y documentacin
relacionada como son:
Descripciones de los datos
Mdulos de proceso
Tablas de edicin o codificacin
Mensajes del sistema
Definiciones de mapas
Definiciones de dilogos
Definiciones de aplicaciones
Mdulos ejecutables

Pgina
4

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

MAPC.
Es una herramienta que permite definir el formato de los paneles con los que
trabajaran los usuarios. Estos podrn introducir datos en unos puntos especficos
del panel, que sern 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 dilogos de la aplicacin.
Es una herramienta que permite definir, referenciar y ensamblar, los
componentes de un Dilogo.
La unin de Mapas, Registros y Procesos, permitir la asociacin 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
Dilogo.
ADSA.
Crea la estructura de la aplicacin formada por:
- funciones, que son unidades estructurales o de trabajo que definen todas
las posibles actividades que pueden realizarse dentro de la aplicacin;
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 aplicacin; pueden estar asociadas a
teclas de funcin o seleccionarse dando un valor en un campo del mapa
llamado $RESPONSE, puede haber varias respuestas asociadas a una funcin
y cada respuesta llamara a su vez a otra funcin
- prototipo de la aplicacin.
ADS Run-time System
Controla la ejecucin de las aplicaciones

Pgina
5

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.1.3. DIALOGO.
Componentes de un dialogo
Un DIALOGO es la unidad de proceso en una aplicacin ADS/Online. Las
Instrucciones proporcionadas en un dialogo estn codificadas en ADS/On-line.
Las descripciones fuentes se almacenan en el rea DDLDML del diccionario y
los mdulos ejecutables en el rea DDLDCLOD.
Un dialogo consta de las siguientes partes:
- MAPA: transmite la informacin entre el terminal y la aplicacin; 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 dilogos, hacer operaciones de asignacin o aritmticas,
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
Dilogos debe tener al menos un Proceso PREMAP
- proceso RESPONSE que define un tratamiento a ejecutar despus e la
visualizacin e introduccin de datos en el mapa; puede haber varios
para un dialogo y estn asociados a este mediante una tecla de
funcin 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: visin de la base de datos que ser utilizada por el dialogo.

Pgina
6

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

A continuacin podemos ver un pequeo esquema de una unidad de ejecucin

Ejecucin de un dialogo
ADS/On-line ejecuta los dilogos de uno en uno para una sesin de terminal.
Siempre que se ejecuta un dialogo se siguen los pasos que a continuacin 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 (lgicamente 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 recuperacin en
el fichero JOURNAL si es necesario).
- MAPIN: reinicia la tarea IDMS/DC en funcin 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 funcin; todos los mdulos de proceso deben terminar con un
comando de control.

Pgina
7

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

El usuario ve la ejecucin de un dialogo como una interaccin con la


aplicacin a travs 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.

Pgina
8

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.2. MAPC (Mapin Computer)


La comunicacin entre usuario y aplicacin se establece a travs de los
MAPAS.
Para definirlos utilizamos la herramienta que nos proporciona el IDMS, la
IDMS-DC/UCF Mapping Computer a travs 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 definicin inicial donde se especifican
principalmente el nombre del mapa y los valores de definicin del mapa.
- MAP-LEVEL HELP TEXT DEFINITION o pantalla de definicin de formato de
pantalla y los posibles textos
- ASSCIATED RECORDS o pantalla de asignacin de los registros que se van
a utilizar el mapa.
- LAYOUT o pantalla de definicin del formato donde dibujamos el mapa en
la forma en que queremos que se visualice. Pantalla de edicin de campos,
donde vamos a especificar los atributos de los campos del mapa
- FIELD DEFINITION o pantalla de seleccin de campos donde especificamos
la accin a tomar con los campos seleccionados en la pantalla anterior o
donde seleccionamos la generacin 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 lgica del programa (traspaso
de datos entre dilogos) 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 transmisin y, por tanto, el de respuesta.

Pgina
9

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.3. Codificacin en ADS/O


4.3.1. Consideraciones
Las sentencias de mandatos ADS/O se pueden codificar en ms de una lnea
sin especificar carcter de continuacin. Pueden empezar en cualquier columna y
llegar hasta la 72.
Todas las Instrucciones tienen que terminar en un punto. Se pueden dejar
lneas en blanco (no son tratadas por el compilador) e insertar lneas de
comentarios (empiezan por el carcter ]).
Formato de una instruccin
Una instruccin ADS/O siempre est formada por
- PALABRAS CLAVE que indican el tipo de operacin a realizar
- PARAMETROS que cualifican a las anteriores y especifican operaciones
adicionales.
Los parmetros pueden ser:
- claves (palabras clave definidas por el sistema que califican el tipo
de operacin)
- variables (campos que contienen valores proporcionados por el
usuario)
- todas las Instrucciones terminan en punto.
Tipos de variables
Los parmetros variables que se pueden especificar en una introduccin
pueden ser de varios tipos:
- NOMBRES DE ENTIDADES.
- CAMPOS DE DATOS VARIABLES: su contenido puede ser modificado
durante la ejecucin de un dialogo. Estos campos pueden ser:
- de usuario
- del sistema; entre estos los ms empleados son:
DIRECT-DBKEY, ERROR-STATUS, DATE, TIME,...
- VALORES CONSTANTES: son literales numricos, no numricos o
constantes figurativas. Entre estas ltimas las ms 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 aritmticas (valor absoluto,
logaritmos, races cuadradas, etc.), y funciones trigonomtricas calculando
los valores en radianes y grados.

Pgina
10

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

- expresiones aritmticas, condicionales, de error.

Pgina
11

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.3.2. Tipos de Instrucciones


Segn las funciones que realicen, las Instrucciones de ADS/O se clasifican en
varios grupos:
- de acceso y actualizacin de bases de datos
- de control
- aritmticas y de asignacin
- condicionales
- control de subrutinas
- de modificacin de mapas
- de gestin de scratch
- de utilidad.
4.3.2.1. Instrucciones de acceso y actualizacin
Todas las Instrucciones de manipulacin de base de datos de ADS/O son
iguales a las de COBOL/DC, a excepcin de una, la instruccin KEEP.
Se pueden clasificar a su vez en:
- sentencias de control
- sentencias de bsqueda y lectura
- sentencias de actualizacin
- sentencias de recuperacin de db-key
- sentencias de seguridad e integridad
Sentencias de control
La instruccin que permite controlar el modo en que van a ser accedidos los
ficheros de base de datos y la existencia de concurrencia es la instruccin READY.
Su formato es
READY nombre-de-rea USAGE-MODE (PROTECTED) RETRIEVAL
(EXCLUSIVE) UPDATE
Por defecto, abre reas en RETRIEVAL.
Sentencias de bsqueda 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 ejecucin
- 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 instruccin las funciones de FIND y
GET)

Pgina
12

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin 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 explcitos sobre los
registros objeto de la operacin.
KEEP EXCLUSIVE impide un acceso concurrente de lectura y/o actualizacin
sobre el registro.
El formato de la instruccin 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 instruccin MODIFY.

Pgina
13

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin 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 ordenacin (campo-ord). Si especificamos CURRENT,
la seleccin comienza en la ocurrencia que sea CURRENT del set dado. Si no
especificamos CURRENT la seleccin 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 estn 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 tambin
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
ningn 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 implcito 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 estn modificndose en ese momento y
evitan el acceso a registros modificados que podran ser recuperados
posteriormente como consecuencia de una cancelacin
- 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 instruccin KEEP).
Existen dos formatos para la instruccin KEEP:
- KEEP (EXCLUSIVE) CURRENT (nombre-registro
)
(WITHIN nombre-set )
(WITHIN nombre-area )
Esta instruccin 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 instruccin permite poner o quitar bloqueos y hacer un
seguimiento de la actividad del monitor de teleproceso a travs de
distintas run units.

Pgina
14

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

Sentencias de actualizacin
Permiten actualizar los datos almacenados en la base de datos. Son las
siguientes:
STORE registro
Aade 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 automticamente; si el set de carga es manual hay que
establecer el curren del padre del set al que conectaremos el registro ms
adelante.
MODIFY registro
Reemplaza los valores del registro current de run unit por los valores
indicados en. la zona de trabajo. Esta instruccin debe ir precedida por una
instruccin 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 conexin de un registro al set indicado, sin eliminar el registro de
la base de datos. Esta instruccin 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 ningn otro set. Los hijos Optional que sean
hijos de otro set solo son desconectados.

Pgina
15

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

Sentencias de anlisis 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 ningn 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 recuperacin 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 cules van a ser las unidades de recuperacin
(recovery unit) para una transaccin, en el caso de que esta cancele, y restaurar
la informacin de una base de datos a una situacin anterior a una actualizacin
COMMIT.
Escribe un punto de recuperacin checkpoint en el fichero journal para
indicar el final de una unidad de recuperacin y el comienzo de otra.
ROLLBACK.
Anula el efecto de una unidad de recuperacin hasta el ltimo checkpoint y
termina la run unit.

Pgina
16

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin 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 aplicacin.
Una aplicacin tiene como punto de entrada un dialogo principal, que debe
estar definido como mainline. Este dialogo constituye el nivel ms alto de la
estructura de la aplicacin y es el que cede control a otros dilogos.
Esta cesin puede hacerse manteniendo los datos y los recursos del dialogo
que cede control o sin mantenerlos.
El primer caso supone la creacin de un nivel ms bajo en la estructura de la
aplicacin, 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 aplicacin 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 instruccin 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 cdigo-mensaje visualiza en el campo de mensajes del
mapa el mensaje almacenado en el diccionario con el cdigo especificado.
DISPLAY ERASE limpia todos los campos desprotegidos del mapa, inicializa
los MDTs de los mismos y pone el cursor en el primer campo desprotegido
del mapa. Si se especifica ERASE no puede especificarse nada ms.
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 aplicacin. El dialogo que cede
control deja de estar operativo.
TRANSFER TO nombre-dialogo

Pgina
17

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

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
dilogo puede llamarse a si mismo.
Sentencia INVOKE
Pasa control a un dialogo a la vez que establece un nivel ms bajo en la
estructura de la aplicacin. 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 ms bajo en la
estructura de la aplicacin. El dialogo que cede control permanece operativo y sus
current activos. Se diferencia de la instruccin INVOKE en que el dialogo que hace
el LINK se convierte en el de nivel ms alto dentro de una estructura anidada.
Los dilogos que participan en una estructura anidada pueden emitir
sentencias de control, pero nunca devolverlo a un dialogo de un nivel ms 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-dilogo 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 separndolos con espacios o comas.
Cuando el dialogo o programa llamado devuelve control, el dialogo que hace el
LINK sigue ejecutndose en la instruccin siguiente a la LINK.

Pgina
18

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

Sentencia RETURN
Pasa control a un dialogo de nivel mas alto dentro de la estructura de la
aplicacin, 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 instruccin siguiente a la LINK. Nunca
podr devolver control a un dialogo que este en un nivel ms 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 instruccin RETURN puede devolver control
a cualquier dialogo de cualquier nivel o al primer nivel de la estructura de la
aplicacin.
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 aplicacin si no existe estructura
anidada.
CLEAR inicializa los buffrs de los registros y los current del dialogo que
recibe control.
CONTINUE provoca la ejecucin del proceso premap del dialogo que recibe
control.
Sentencia LEAVE
Termina la sesin de ADS/O que se esta ejecutando; los dilogos 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 seleccin
de dilogos.

Pgina
19

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.3.2.3. Instrucciones aritmticas y de asignacin


Permiten realizar operaciones aritmticas y mover los resultados de dichas
operaciones o valores de datos determinados a camp variables.
Sentencia ADD
La instruccin 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 operacin.
ADD valor TO campo-variable (ROUNDED )
(TRUNCATED )
El resultado de la operacin queda en campo-variable.
La opcin ROUNDED especifica que la parte decimal de campo-variable es
redondeada en el caso de que el resultado de la suma tenga ms cifras
decimales que las definidas en campo-variable. Esta es la opcin que se
toma por defecto.
La opcin TRUNCATED especifica que la parte decimal de campo-variable
es truncada.
Sentencia SUBTRACT
La instruccin 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 operacin.
SUBTRACT valor FROM campo-variable (ROUNDED )
(TRUNCATED)
El resultado de la operacin queda en campo-variable.
La opcin ROUNDED especfica que la parte decimal de campo-variable es
redondeada en el caso de que el resultado de la resta tenga ms cifras
decimales que las definidas en campo-variable. Esta es la opcin que se
toma por defecto.
La opcin TRUNCATED especifca que la parte decimal de campo-variable
es truncada.

Pgina
20

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

Sentencia MULTIPLY
La instruccin 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 operacin.
MULTIPLY valor BY campo-variable (ROUNDED )
(TRUNCATED)
El resultado de la operacin queda en el campo-variable.
La opcin ROUNDED especifica que la parte decimal de campo- va1iable es
redondeada en el caso de que el.resu1tado de la operacin tenga ms cifras
decimales que las definidas en campo- variable. Esta es la. opcin que se
toma por defecto.
La opcin TRUNCATED especifica que la parte decimal de campo-variable
es truncada.
Sentencia DIVIDE
La instruccin 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
GIVING cociente
REMAINDER resto

(ROUNDED )
(TRUNCATED)
(ROUNDED )
(TRUNCATED)

El resultado de la operacin queda en dividendo.


La opcin ROUNDED especifica que la parte decimal de dividendo es
redondeada en el caso de que el resultado de la operacin tenga ms cifras
decimales que las definidas en dividendo. Esta es la opcin que se toma por
defecto.
La opcin TRUNCATED especifica que la parte decimal de dividendo es
truncada.
Si se especifica la opcin GIVING el resultado queda almacenado en el
campo variable cociente.
Si se especifica la opcin REMAINDER el resto de la divisin queda
almacenado en el campo variable resto.

Pgina
21

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

Sentencia COMPUTE
La instruccin COMPUTE calcula el resultado de una expresin aritmtica
COMPUTE campo-variable = expresin aritmtica (ROUNDED )
(TRUNCATED )
El resultado de la operacin queda en campo-variable.
La opcin ROUNDED especifca que la parte decimal de campo-variable es
redondeada en el caso de que el resultado de la operacin tenga ms cifras
decimales que las definidas. Esta es la opcin que se toma por defecto.
La opcin TRUNCATED especifica que la parte decimal de campo-variable
es truncada.
Sentencia MOVE
La instruccin 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 operacin queda en campo-variable.
Las opciones ROUNDED y TRUNCATED funcionan como en las sentencias
vistas anteriormente.
La instruccin MOVE de ADS se diferencia de la del COBOL en que, al mover
un valor a un campo numrico ms pequeo, el COBOL trunca, mientras que
el ADS cancela.

Pgina
22

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.3.2.4. Instrucciones condicionales


Detectan el resultado de una comparacin y especifican distintos tipos de
proceso dependiendo del resultado de la misma.
Sentencia IF.
Especifica una o ms condiciones, a comprobar y las acciones a tomar en
cada caso.
Si. se comprueba que el resultado de la comparacin coincide con el
expresado en la condicin, se ejecutan las instrucciones que siguen a la expresin
condicional; en caso contrario se ejecutan las que indican un proceso alternativo o,
si no se indica este, la instruccin siguiente a la condicional.
IF expr-condicional (THEN)
(ELSE)

| sentencia
|
| DO. sentencia,... END. |
| sentencia
|
| DO. sentencia,... END. |

La variable expr-condicional puede comparar dos valores, comprobar el


ERROR-STATUS, comprobar un valor mediante un nombre de condicin pre
asignado, comprobar la posicin 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 ms de una instruccin se deben emplear las opciones DO,
antes de la primera instruccin a ejecutar y END, despus de la ultima.
Sentencia WHILE.
Especifica in bucle de tratamiento a procesar dependiendo del resultado de
una comparacin.
WHILE expr-condicional REPEAT. sentencia... END.
Sentencia NEXT.
Cede control a la instruccin 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
ejecucin continua en la instruccin siguiente a la. END que indica el final del
bucle.
Esta instruccin, se suele utilizar con instrucciones condicionales que forman
parte del bucle y que comprueban una condicin secundaria

Pgina
23

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

EXIT.

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
despus de la instruccin que hace la llamada, nunca antes.
Cuando el ADS encuentra una instruccin CALL, pasa a ejecutar la subrutina
llamada hasta que encuentra en ella una instruccin de control u otra instruccin 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, detrs de las instrucciones que las
llaman.
DEFINE SUBROUTINE nombre-subrutina
Sentencia GOBACK
Termina la ejecucin de la subrutina y devuelve control a la instruccin
siguiente a la sentencia CALL nombre-subrutina. Si no se codifica, el ADS incluye
una automticamente al final de.la rutina.
GOBACK

Pgina
24

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.3.2.6. Instrucciones de modificacin de mapas


Permiten modificar los atributos definidos para los campos del mapa que
este utilizndose.
Sentencia ATTRIBUTES
Modifica las caractersticas de visualizacin o proteccin de los campos del
mapa que se especifiquen. Solo se puede modificar un atributo con cada
instruccin.
|
|
|
|
|

BRIGHTEN | | (ALL BUT) CURRENT


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

| (TEMP)
| (PERM)
|
|
|

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 operacin
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 errneos por el sistema automtico de gestin de
errores.
Si se especifica ALL FIELD nombre-de-campo o lista de nombres entre
parntesis, 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 visualizacin del mapa.
La clausula PER modifica el campo de forma permanente mientras este
activo el dialogo que da la instruccin.
Sentencia MODIFY MAP
Modifica las caractersticas de los campos que se especifiquen. Se puede
modificar ms de un atributo por cada instruccin.
MODIFY MAP (TEMP) opciones
(PERM)
Las clausulas TEMP y PERM actan de la misma forma que en la instruccin
ATTRIBUTES.
Las opciones que pueden especificarse son la posicin del cursor, los
caracteres de control de impresin (WCC) y todos los atributos de los campos.

Pgina
25

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.3.2.7. Instrucciones de gestin de scratch


Los registros de scratch son registros empleados para pasar informacin
de una tarea a otra siempre que ambas se ejecuten en el mismo terminal lgico.
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
cada 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 instruccin borra los registros del rea de scratch identificada con
nombre-de-scratch.
Si se especifica CURRENT, que es tambin el valor que toma por defecto, la
instruccin 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
automticamente 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.

Pgina
26

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin 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 alfanumricos o ceros para los numricos.
INIIALIE RECOIDS

| ALL
|
|(nombre-de-registro |

4.3.2.9. Instrucciones orientadas al generador


Indican al generador de dilogos que debe incluir un cdigo fuente adicional
en el proceso que esta compilndose.
Sentencia INCLUDE
Esta sentencia especifica el nombre de un modulo que debe ser insertado en
este punto. El cdigo fuente del modulo no se modifica, pero cuando se compila ese
modulo, el generador de dilogos lo incluye automticamente y figura dentro del
load module del dilogo.
La sentencia INCLUDE debe ir codificada en una unida lnea y no debe ir
seguida de ninguna otra.
INCLUDE MODULE nombre-de-proceso

Pgina
27

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.3.3. Tipos de Funciones


Mdulos o rutinas del sistema que devuelven un tipo de informacin a partir
de una dada:

4.3.3.1. Funciones Aritmticas.


ABS:
LOG1O:
LOG E:
MOD:
NEXIH:
NEXIL:
NUMERIC:
RAN:
INV:
SIGV:
SQRT:

Devuelve el valor absoluto de n n.


Logaritmo en base 10.
Logaritmo neperiano.
Devuelve el resto de la divisin entre dos nmeros.
Devuelve un entero igual inmediatamente superior al dado.
Devuelve un entero igual inmediatamente inferior al dado.
Devuelve verdadero falso dependiendo si el contenido de un campo
es numrico no.
Devuelve un n aleatorio calculado a partir de uno dado.
Cambia el signo.
Devuelve +1, -1, 0 dependiendo si el n es positivo, negativo 0.
Devuelve la raz cuadrada de un n.

4.3.3.2. Funciones Trigonomtricas.


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

Pgina
28

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.3.3.3. Funciones de fecha.


Transforma un valor numrico 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 das.
DATEOFFIX:
Devuelve una fecha, que es el resultado de haberle sumado a
otra un n de das.
GOODDATE/X:
Indica si es correcto el valor de una fecha segn el formato
especificado.
TODAYIX:
Devuelve la fecha del da en el formato especificado.
TOMORROW/X:
Devuelve la fecha del da siguiente.
WEEKDAY/X:
Devuelve el da de la semana correspondiente a una fecha (en
ingls).
YESTERDAY/X:
Devuelve la fecha del da anterior.

4.3.3.4. Funciones de cadena.


A partir de una cadena pueden devolver un valor numrico una cadena.
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 posicin en la que se encuentran un conjunto de
caracteres dentro de una determinada cadena.
INITCAP:
Convierte la primera letra de una cadena a maysculas y el
resto a minsculas.
INSERT:
Devuelve una cadena en la cual se ha insertado otra, en una
determinada posicin.
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 mscara
est en una cadena.
TOLOWER:
Convierte todos lo caracteres alfabticos de una cadena a
minsculas.
SREP:
Devuelve una cadena formada por la repeticin de una dada
un n especfico de veces.
REP:
Devuelve una cadena de caracteres en la cul se ha
reemplazado un con junto de caracteres por otro.
CON:

Pgina
29

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

SUBS:
TOUPPER:
TRANS:
VER:
WORDCAP:

Devuelve un de cadena extrada a partir de una determinada


cadena de una determinada longitud a partir de una
determinada posicin.
Convierte todos los caracteres alfabticos de una cadena a
maysculas.
Devuelve una cadena en la cual se ha sustituido n carcter
por otro.
Devuelve la posicin de una cadena en la que tiene un carcter
distinto de los indicados. Ej.: IP VER (cadena, 0123456789)
NE 0
Convierte a maysculas la inicial de cada una de las palabras
incluidas en la cadena..

Pgina
30

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.4. ADSC (ADS Compiler)


El ADSC es la herramienta que empleamos para crear los mdulos
ejecutables de los dilogos. 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 definicin 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 definicin del nombre del MAPA, en caso
de que. utilice uno, las opciones de paginacin (si es paginable), los modos
de paginacin.
- DATABASE SPECIFICATIONS, pantalla de definicin 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 definicin de los registros de trabajo
que va a utilizar el dialogo
- PROCESS MODULES, pantalla de definicin 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
funcin a la que van asociados.

Los dilogos se crean mediante el generador de dilogos 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
- cdigo FUENTE de los mdulos 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 dilogos compila los procesos, une los diversos
componentes del dialogo y crea un modulo ejecutable que se almacena en el rea
de LOAD del diccionario.

Pgina
31

CURSO

NOMBRE

CURSO DE I.D.M.S

IDMS

TITULO

Curso de Programacin ADS/ON-LINE

4.5. Conclusin
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 aplicacin 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 instruccin ADS/O siempre est formada por palabras CLAVE, que
indican el tipo de operacin a realizar y PARAMETROS, que cualifican las anteriores
y especifican operaciones adicionales.
Segn las funciones que realicen, las instrucciones de ADS/O se clasifican en varios
grupos:
- de acceso y actualizacin de bases de datos, para manipular los datos de
las mismas
- de control, para ejecutar otros dilogos u otras partes del mismo dialogo
- aritmticas y de asignacin, para realizar operaciones aritmticas y mover
valores a campos
- condicionales, que detectan el resultado de una comparacin 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 modificacin de mapas, que permiten modificar los atributos definidos
para los campos del mapa que este utilizndose
- de gestin de scratch
- de utilidad, permiten el uso de facilidades del sistema
- orientadas al generador.
Conviene que el tamao de los dilogos sea el menor posible para favorecer
el funcionamiento del monitor de teleproceso..

Pgina
32