NATURAL-ADABAS PASCUAL MARTINEZ CRUZ 0.- Introducción. 1.- Tipos de Datos. 2.- Comentarios. 3.- Declaración de variables. 4.- Asignación de valores a Variables. 5.- Arrays. 6.- Operaciones con arrays. 7.- Objetos de NATURAL. 8.- Operaciones Aritméticas. 9.- Bucles (Tipos). 10.- Instrucciones Condicionales. 11.- Trabajo con Ficheros. 12.- Trabajo con Vistas de Adabas. 13.- Subrutinas. 14.- Llamadas a rutinas. 15.- Edicion y compilación en entorno Mainframe.
PASCUAL MARTINEZ CRUZ
26-11-2007
[email protected]
0.- INTRODUCCIÓN: El presente documento pretende ser una resumida guía de referencia introductoria para para programadores que trabajen por primera vez con Natural Adabas en entorno Mainframe. Adabas es una base de datos diseñada por Software AG para sistemas críticos y Natural el lenguaje de programación para operar con esta base de datos. Es conveniente tener un manual de referencia sobre Natural para poder sacar más partido de este lenguaje de programación.
1.- TIPOS DE DATOS: A Alfanumérico. B Binario. C Atributo de Control. D Fecha. F Punto Flotante. I Entero. L Lógico. N Numérico. P Numérico Empaquetado. T Hora.
2.- COMENTARIOS: Se comenta código con * y /* * Comentario para una línea entera. MOVE 2 TO A
/* Comentario para el resto de línea
3.- DECLARACION DE VARIABLES: Todos los programas NATURAL empiezan con un bloque de declaración de variables. Las variables se encierran en este tipo de bloque: DEFINE DATA PARAMETER 1 Area-de-parametros. LOCAL 01 Variable 1 (A3) 01 Vvar REDEFINES Variable 1 02 S-var (A1) 02 SS-var (A2)
END-DEFINE En PARAMETER se incluyen las áreas de datos que sirven como comunicación de entrada y salida entre los distintos objetos NATURAL. En LOCAL se declaran las variables,o vistas de ADABAS que se vayan a usar localmente en el programa.Podemos encontrarnos con la instrucción: PARAMETER USING Area_de_parametros. Esta instrucción declara Area_de_parametros como el area de comunicación de E/S entre los distintos objetos de NATURAL. LOCAL USING Area_de_parametros. Esta instrucción hace que Area de parámetros sea usada localmente en una llamada a cierto subprograma. Las variables van precedidas de un número que corresponde con el nivel de declaración al que pertenecen. Se empieza por nivel 1 o 01, los niveles 02,03 …(sucesion secuencial) etc nos indican que esas variables son subdivisiones de la variable que esta declarada un nivel inmediatamente superior.
4.- ASIGNACION DE VALORES A VARIABLES: La asignación se realiza mediante las instrucciones MOVE,ASSING o el operador := Ejemplos: MOVE 5 TO VALOR VAR1 := VAR2 (VAR1 pasa a valer lo que contiene VAR2) ASSING VALOR = 5 ASSING ROUNDED VALOR = 199.999 (Redondea el valor asignado).
5.- ARRAYS: DEFINICIONES *ARRAY(3) Define una matriz de una dimensión de 3 ocurrencias. ETIQUETA.FIELD(A 20/5) Define una matriz de un campo de la base de datos referenciada en la sentencia marcada por ‘ETIQUETA’, con formato alfanumérico, longitud 20 y 5 ocurrencias. * ARRAY(N7.2/1:5,10.12,1:4) Define una matriz con formato N7.2, de 3 dimensiones con 5 ocurrencias en la primera dimensión ,12 en la segunda y 4 en la tercera.
6.- OPERACIONES CON ARRAYS: REFERENCIA A LOS ELEMENTOS DEL ARRAY. *ARRAY(1) Referencia la primera ocurrencia de una matriz de una dimensión. *ARRAY(7:12) Referencia las ocurrencias de 7 a 12 en una matriz de una dimensión. *ARRAY(I+5) Referencia la ocurrencia I+5 de una matriz de una dimensión. *ARRAY(5,3:7,1:4) La referencia se realiza en una matriz de 3 dimensiones , a la ocurrencia 5 de la primera dimensión ,las ocurrencias de 3 a la 7 en la segunda dimensión, y las ocurrencias 1 a 4 de la tercera. *ARRAY(*) Todas las ocurrencias de una dimensión.
7.- OBJETOS DE NATURAL: PROGRAMA: Programa Natural. SUBPROGRAMA: Similar a una librería, los subprogramas son utilizados por programas Natural. SUBRUTINA: Porción de código Natural donde el bloque del programa es solo una subrutina. HELPRUTINA: Subrutina para mostrar cuadros de ayuda en una aplicación Natural. COPYCODE: Porción de código que se puede incluir en un programa Natural (similar a una macro),suele contener código para un tratamiento general de errores. TEXTO: Documentos de texto para describir programas,útil si carecemos del diccionario Predict. MAPA: Estructura de código Natural para crear interfaces de aplicación. AREA GLOBAL DE DATOS: Fuente donde se declaran variables para usarlas de forma global en una aplicación Natural. AREA LOCAL DE DATOS: Fuente donde se declaran variables para usarlas de forma local en un modulo de una aplicación Natural.
AREA DE PARAMETROS: Fuente donde se declaran variables o vistas para pasarlas como parámetros a subprogramas,subrutinas externas etc. CLASE: Las clases son unos objetos que se usan en conjunto con NaturalX para crear componentes basados en aplicaciones cliente/servidor. DIALOGO: Los diálogos son objetos que se usan en conjunto con programación orientada a eventos para crear aplicaciones en entorno gráfico.
8.- OPERACIONES ARITMETICAS: SUMA: ADD 3 TO B ADD 4 5 GIVING B
/* B vale 3 */ /* B vale 9 */
COMPUTE RES = NUM1 + NUM2 RESTA: SUBTRAC 4 FROM B /* Resta 4 a B*/ SUBTRAC 6 FROM 11 GIVING B /* Resta 6 a 11 y lo guarda en B */ COMPUTE RES = NUM1 - NUM2 MULTIPLICACION: A=3 MULTIPLY A BY 3 MULTIPLY A BY 3 GIVING B
/* A vale 9 */ /* B vale 9 */
COMPUTE RES = NUM1 * NUM2 DIVISION: DIVIDE divisor INTO dividendo A = 20 DIVIDE 5 INTO A DIVIDE 5 INTO A GIVING B DIVIDE 5 INTO 31 REMAINDER C
/* A vale 4 */ /* B vale 4 */ /* C vale 1 (resto de la división) */
COMPUTE RES = NUM2 / NUM1
/* RES vale la división entera
9.- BUCLES (TIPOS): Bucle FOR. #indice se refiere a la variable de control del bucle. Lo que sigue al TO es el número de iteraciones del bucle. STEP número , marca el incremento de la variable de control. FOR #indice 1 TO 5 Sentencias END-FOR FOR #indice 1 TO 5 STEP 2 Sentencias END-FOR Bucle REPEAT. Bucle sin condición de salida.Se sale cuando se encuentra una instrucción ESCAPE,STOP o TERMINATE. REPEAT Sentencias ESCAPE,STOP,TERMINATE
/* Estas instrucciones se usan para romper el flujo de ejecución del bucle */
END-REPEAT Bucle con condición de salida.Se sale del bucle cuando la condición de while sea falsa. REPEAT WHILE #R