Anda di halaman 1dari 12

NATURAL-ADABAS

PASCUAL MARTINEZ CRUZ


0.- Introduccin. 1.- Tipos de Datos. 2.- Comentarios. 3.- Declaracin de variables. 4.- Asignacin de valores a Variables. 5.- Arrays. 6.- Operaciones con arrays. 7.- Objetos de NATURAL. 8.- Operaciones Aritmticas. 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 compilacin en entorno Mainframe.

PASCUAL MARTINEZ CRUZ

26-11-2007

pascual89@hotmail.com

0.- INTRODUCCIN:
El presente documento pretende ser una resumida gua de referencia introductoria para para programadores que trabajen por primera vez con Natural Adabas en entorno Mainframe. Adabas es una base de datos diseada por Software AG para sistemas crticos y Natural el lenguaje de programacin para operar con esta base de datos. Es conveniente tener un manual de referencia sobre Natural para poder sacar ms partido de este lenguaje de programacin.

1.- TIPOS DE DATOS:


A Alfanumrico. B Binario. C Atributo de Control. D Fecha. F Punto Flotante. I Entero. L Lgico. N Numrico. P Numrico Empaquetado. T Hora.

2.- COMENTARIOS:
Se comenta cdigo con * y /* * Comentario para una lnea entera. MOVE 2 TO A /* Comentario para el resto de lnea

3.- DECLARACION DE VARIABLES:


Todos los programas NATURAL empiezan con un bloque de declaracin 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 comunicacin 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 instruccin: PARAMETER USING Area_de_parametros. Esta instruccin declara Area_de_parametros como el area de comunicacin de E/S entre los distintos objetos de NATURAL. LOCAL USING Area_de_parametros. Esta instruccin hace que Area de parmetros sea usada localmente en una llamada a cierto subprograma. Las variables van precedidas de un nmero que corresponde con el nivel de declaracin 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 asignacin 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 dimensin 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 alfanumrico, 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 dimensin ,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 dimensin. *ARRAY(7:12) Referencia las ocurrencias de 7 a 12 en una matriz de una dimensin. *ARRAY(I+5) Referencia la ocurrencia I+5 de una matriz de una dimensin. *ARRAY(5,3:7,1:4) La referencia se realiza en una matriz de 3 dimensiones , a la ocurrencia 5 de la primera dimensin ,las ocurrencias de 3 a la 7 en la segunda dimensin, y las ocurrencias 1 a 4 de la tercera. *ARRAY(*) Todas las ocurrencias de una dimensin.

7.- OBJETOS DE NATURAL:


PROGRAMA: Programa Natural. SUBPROGRAMA: Similar a una librera, los subprogramas son utilizados por programas Natural. SUBRUTINA: Porcin de cdigo Natural donde el bloque del programa es solo una subrutina. HELPRUTINA: Subrutina para mostrar cuadros de ayuda en una aplicacin Natural. COPYCODE: Porcin de cdigo que se puede incluir en un programa Natural (similar a una macro),suele contener cdigo para un tratamiento general de errores. TEXTO: Documentos de texto para describir programas,til si carecemos del diccionario Predict. MAPA: Estructura de cdigo Natural para crear interfaces de aplicacin. AREA GLOBAL DE DATOS: Fuente donde se declaran variables para usarlas de forma global en una aplicacin Natural. AREA LOCAL DE DATOS: Fuente donde se declaran variables para usarlas de forma local en un modulo de una aplicacin Natural.

AREA DE PARAMETROS: Fuente donde se declaran variables o vistas para pasarlas como parmetros 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 dilogos son objetos que se usan en conjunto con programacin orientada a eventos para crear aplicaciones en entorno grfico.

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 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 COMPUTE RES = NUM2 / NUM1 /* A vale 4 */ /* B vale 4 */ /* C vale 1 (resto de la divisin) */ /* RES vale la divisin entera /* A vale 9 */ /* B vale 9 */

9.- BUCLES (TIPOS):


Bucle FOR. #indice se refiere a la variable de control del bucle. Lo que sigue al TO es el nmero de iteraciones del bucle. STEP nmero , 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 condicin de salida.Se sale cuando se encuentra una instruccin ESCAPE,STOP o TERMINATE. REPEAT Sentencias ESCAPE,STOP,TERMINATE END-REPEAT Bucle con condicin de salida.Se sale del bucle cuando la condicin de while sea falsa. REPEAT WHILE #R <=8 Sentencias END-REPEAT Bucle con condicin de salida.Se sale del bucle cuando la condicin de UNTIL sea verdadera. REPEAT UNTIL #R <= 8 Sentencias END-REPEAT

/* Estas instrucciones se usan para romper el flujo de ejecucin del bucle */

10.- INSTRUCCIONES CONDICIONALES:


Sentencia IF IF condicin THEN IGNORE sentencias

ELSE sentencias END-IF Sentencia DECIDE FOR FIRST/EVERY ,indica si se procesa solamente la primera condicin que se cumpla o cada una de las condiciones que se cumplan.Se pone solo una no ambas. DECIDE FOR { FIRST } CONDITION { EVERY } {WHEN condicin lgica sentencias} {WHEN ANY condicin lgica sentencias} {WHEN ALL condicin lgica sentencias} WHEN NONE {IGNORE} {sentencias} END-DECIDE Sentencia DECIDE ON FIRST/EVERY ,indica si se procesa solamente la primera condicin que se cumpla o cada una de las condiciones que se cumplan.Se pone solo una pero no ambas. DECIDE ON {FIRST} VALUE OF operando1 {EVERY} {VALUE operando2} {ANY VALUE sentencias} {ALL VALUE sentencias} NONE VALUE {IGNORE} Sentencias END-DECIDE

11.- TRABAJO CON FICHEROS:


READ WORK FILE Lee datos de un fichero secuencial fsico. READ WORK [FILE] nmero de work-file [ONCE] {RECORD {operando 1 [ FILLER nX}]}} {[AND][SELECT] {[{OFFSET n}] operando 2}} {[AND][SELECT] {[{FILLER nX}] operando 2}} END-READ WRITE WORK FILE Graba registros dea un fichero secuencial fsico.

WRITE WORK [FILE] nmero de work-file [VARIABLE] operando 1 NEWPAGE Avanza una nueva pgina NEWPAGE [(rep)] [{EVEN [IF][TOP][OF][PAGE]}] [{[{IF}] [LESS][THAN] operando 1[LINES][LEFT]}] [{[{WHEN}] [LESS][THAN] operando 1[LINES][LEFT]}] [[WITH] TITLE] PROCESS Permite leer y escribir ficheros , gestionar VTOC y catalogos,colas JES etc. PROCESS nombre de vista USING operando 1 = operando 2 GIVING operando 3

12.- TRABAJO CON VISTAS DE ADABAS:


DELETE DELETE [RECORD] [IN] [STATEMENT] [(r)] Borra un registro de la base de datos. FIND FIND [{ALL}] [RECORDS][IN][FILE] Nombre de view [{operando 1}] [RECORDS][IN][FILE] Nombre de view [{FIRST}] [RECORDS][IN][FILE] Nombre de view [{NUMBER}] [RECORDS][IN][FILE] Nombre de view [{UNIQUE}] [RECORDS][IN][FILE] Nombre de view [PASSWORD-clasula] [CIPHER-clasula] WITH-clasula [COUPLED-clasula] [SORTED BY-clasula] [RETAIN-clasula] [WHERE-clasula] [IF NO RECORDS FOUND-clasula] Sentencias Selecciona una serie de registros desde la Base de Datos. GET GET [IN][FILE] nombre de vista [PASSWORD = operando 1]

[CIPHER = operando 2] [RECORD] {operando 3, *ISN} operando 4 . Lee un registro con un ISN (Nmero de Secuencia Interna) GET SAME GET SAME [(r)] operando 1 Se utiliza para volver a leer el registro que esta siendo procesado actualmente. GET TRANSACTION DATA GET TRANSACTION DATA operando 1 . Se utiliza para leer los datos salvados con una sentencia END OF TRANSACTION anterior. HISTOGRAM HISTOGRAM [{operando 1}] [VALUE] [IN] [FILE] Nombre de view [PASSWORD = operando 2] [VALUE][FOR][FIELD]operando 3 [STARTING : ENDING - clasula] [WHERE-clasula] Sentencias END-HISTOGRAM Leer los valores de campos de la base de datos definidos como descriptor,subdescriptor o superdescriptor. END TRANSACTION END TRANSACTION [operando 1 ] Indica el final de una transaccin lgica. OBTAIN OBTAIN operando 1 . Se utiliza para hacer disponible un rango de ocurrencias de una matriz de la base de datos en almacenamiento continuo. READ {READ} {BROWSE} [(operando 1)] [RECORDS][IN][FILE] Nombre de view [PASSWORD = operando 2] [CIPHER = operando 3]

[Especificacin secuencia rango] [WHERE - clasula] Sentencias . END-READ Se utiliza para leer registros de la base de datos. STORE STORE [RECORD][IN][FILE] Nombre de view [PASSWORD = operando 1] [CIPHER = operando 1] [[{USING}] NUMBER operando 3][(r)] [[{GIVING}] NUMBER operando 3][(r)] {[USING] SAME [RECORD][AS][STATEMENT][(r)]} {[{SET,WITH}]{operando 4 = operando 5}} Se utiliza para aadir un registro a la base de datos. UPDATE UPDATE [RECORD] [IN] [STATEMENT] [(r)] Se utiliza para actualizar uno o mas campos de un registro de la base de datos.

13.- SUBRUTINAS:
Para crear una subrutina dentro de nuestro programa escribimos el cdigo de nuestra subrutina procedemos as: DEFINE SUBROUTINE NOMBRE_DE_LA_SUBRUTINA /* Cdigo de nuestra subrutina */ END-SUBROUTINE Para crear una subrutina externa: Creamos primero un objeto Natural de tipo subrutina,dentro de este objeto definimos en DATA PARAMETER las variables que usara la subrutina, y despus el cdigo de la subrutina. DEFINE DATA PARAMETER /* Variables */ END-DEFINE DEFINE SUBROUTINE NOMBRE_DE_LA_SUBRUTINA /*

Cdigo de nuestra subrutina */ END-SUBROUTINE END

14.- LLAMADAS A RUTINAS:


CALL RUTINA #PARAMETRO1 #PARAMETRO2 /* Rutina esta en un lenguaje /* distinto de NATURAL /* Rutina esta escrito /* en NATURAL

CALLNAT RUTINA #PARAMETRO1 #PARAMETRO2 /* CALL FILE Se usa para llamar a programas que ha escrito el Usuario y acceden a un fichero de datos que no es de ADABAS */ CALL FILE RUTINA #PARAMETRO1 #PARAMETRO2 Sentencias END-FILE

PERFORM SUBRUTINA [AREA_DE_PARAMETROS] /* subrutina externa PERFORM SUBRUTINA /* Subrutina interna

15.- EDICIN Y COMPILACIN EN ENTORNO MAINFRAME:


COMANDOS DE EDICION: Los siguientes comandos deben ejecutarse en el rea de edicin del editor. .I Inserta una lnea. .In Inserta n lneas. .C Copia una lnea. .X Marca el principio de seleccin de un bloque de lineas. .Y Marca el final de la seleccin de un bloque de lneas. .CX-Y Copia un bloque de lneas. .D Elimina una lnea. .DX-Y Borra la seleccin de lneas. Tecla Fin Borra una lnea. .L Deja la lnea como estaba anteriormente. COMANDOS DEL EDITOR: Los siguientes comandos deben ejecutarse en el rea de comando del editor.

RESET Quita la seleccin de lneas. SCAN Busca texto. SA Salva el programa. SA Nombre Salva el programa con el nombre Nombre. STRUCT Sangra el cdigo fuente.
COMANDOS DE COMPILACION Y EJECUCION:

C Chequea la sintaxis. STOW Compila el programa. RUN Ejecuta el programa.

Anda mungkin juga menyukai