Manual Usuario Informix 4gl
Manual Usuario Informix 4gl
Manual Usuario Informix 4gl
Al igual que un programa en C, un programa en 4GL consta de uno o varios módulos en los
que se definen variables, funciones, formularios de entrada y listados. La estructura de cada módulo
será la siguiente:
[DATABASE <id>]
[declaraciones variables globales]
funciones
[forms]
[reports]
En uno de los módulos debe haber una función llamada ’main’. La función main es la que seejecuta al in
Si el programa acce
la primera línea del prog
Comentarios
Se pueden incluir comentarios dentro de los programas para que su
Manual de Usuario
Manual de Usuario
Es posible definir registros que agrupen varias variables en una sola estructura. Para definir un
registro se usará la siguiente sintaxis:
DEFINE <id> RECORD
<nombre> <tipo>
...
END RECORD
Para acceder a un campo de un registro se especificará el nombre del registro y el del campo
separados por un punto. Para referirse a la lista completa de campos de un registro, se usará el
nombre del registro seguido de ’.*’
Ej:
define cliente record
codigo integer
nombre char(50)
apellidos char(50)
end record
let cliente.nombre="JUAN"
let cliente.*=busca_cliente(cliente.nombre)
DEFINE
<id>
RECLIKEFItvara>.*CORD
Manual de Usuario
Funciones:
Las funciones se declararán con la siguiente sintaxis:
FUNCTION <nombre> ( [par1 [,par2,...]] )
declaraciones variables locales y parámetros
Manual de Usuario Expresione
• Variable
Basta con indicar el nombre de la variable. El tipo de la expresión será el mismo que el tipo
Manual de Usuario
Operador [ ]
El operador [ ] permite obtener una subcadena a partir de una expresión. La nueva expresión
resultante es de tipo cadena. Su sintaxis es la siguiente:
expresion[i,j]
expresion[i]
Entre los corchetes se indicarán la posición de inicio y final de la subcadena que se desea
obtener. Se puede omitir la posición de final, con lo que se tomará la subcadena que comienza y
termina en la posición ’i’.
Ej:
define ccc char(20)
define entidad,sucursal char(4)
define dc1,dc2 char
define cuenta char(10)
prompt "Introduzca su numero de cuenta (20 digitos) " for ccc
let entidad=ccc[1,4]
let sucursal=ccc[5,8]
let dc1=ccc[9]
let dc2=ccc[10]
let cuenta=ccc[11,20]
Manual de Usuario
Manual de Usuario
Manual de Usuario
Precedencia de operadores
La precedencia de los operadores en hy4GL es, de mayor a menor, la siguiente:
!
USING CLIPPED
[]
* /
+ −
Manual de Usuario
Ej:
define dt datetime
define d date
define i integer
define c char(40)
let dt=datetime() /* Asigna a dt la fecha y hora actual */
Manual de Usuario
Dentro del bucle se pueden usar las sentencias CONTINUE WHILE y EXIT WHILE. La
primera salta hasta el principio del bucle, ignorando las sentencias que se encuentran después de
ésta. EXIT WHILE sale del bucle directamente.
Ej:
define i,total,parcial integer
let i=0
let total=0
/* Facturas que suman nuestro primer millon */
while total<1000000
let i=i+1
/* la factura numero 3 no la sumo... */
if i=3 then
continue while
end if
select importe into parcial from facturas where numero=i
if status=notfound then
display "Error... no se encuentra la factura nº",i
let total=0
exit while
end if
display "Fra: ",i," Importe: ",parcial using "###,###,##&"
let total=total+parcial
end while
Presentación en pantalla
Para mostrar datos en pantalla se usa la sentencia DISPLAY, cuya sintaxis es la siguiente:
Ej:
Manual de Usuario
Formularios de entrada:
Se vio anteriormente la sentencia PROMPT, que permite introducir información por teclado.
En esta sección se verá el uso de formularios
Manual de Usuario
Esta sentencia muestra el valor de las variables especificadas. Cada variable es mostrada dentro
del campo del formulario cuyo nombre sea igual al de la variable.
Esta sentencia es usada para obtener el valor de las variables indicadas a través del formulario.
Al se le presenta en pantalla el formulario y ir introduciendo valores en los distintos
campos y moverse entre ellos mediante el uso de las teclas de movimiento de cursor. El
programador puede definir una serie de sentencias que se ejecutarán al salir de un campo
determinado, al pulsar una tecla determinada o al pulsar sobre un botón.
La sintaxis de esta sentencia es la siguiente:
INPUT BY NAME <variables>
ON KEY(’x’)
sentencias
ON BUTTON <nombre>
sentencias
AFTER FIELD <nombre>
sentencias
...
VALIDATE FIELD
...
EXIT INPUT
...
NEXT FIELD <nombre>
...
AFTER FIELD <nombre>
...
END INPUT
Manual de Usuario
La sentencia VALIDATE FIELD puede ser usada dentro de un bloque de código que se ejecuta
al pulsar sobre una tecla. Esta sentencia fuerza a que se actn bice el valor de la variable de destino
con el contenido del campo activo actn bmente. Esto es necesario hacerlo dentro de las sentencias
que se ejecutan en una cláusula ON KEY, ya que el valor de las variables de destino no se actn biza
Manual de Usuario
exit input
after field codigo
if r.codigo<100 then
let r.codigo=0
display by name r.codigo
next field r.codigo
end if
end input
end function
El objetivo de este manual no es explicar la sintaxis del lenguaje SQL, sino ver de qué forma se
integra este lenguaje en el 4GL implemT4 n o.
Manual de Usuario
Es posible conocer si una consulta no ha devuelto ninguna tupla. La variable global ’status’
tendrá el valor notfound en caso de no encontrar registros que cumplan la condición.
Ej:
define r record like clientes.*
prompt "Codigo: " for r.codigo
select * into r.* from clientes
where codigo=r.codigo
if status=notfound then
display "No se encuentra el cliente ",r.codigo
else
display "El cliente ",r.codigo," se llama ",r.nombre
end if
Inserción de valores
La sentencia de SQL
Fanual de Msuario
Manual de Usuario
El lenguaje 4GL ofrece una sintaxis sencilla a la vez que potente para generar listados. El
generador de listados controla los saltos de página, encabezamientos y los cambios de grupo, lo que
facilita enormemente la tarea al programador.
Manual de Usuario
Un listado debe tener un nombre y recibir unos parámetros, que serán la base de la información
Manual de Usuario
function listar_alumnos()
define r Tftord like alumnos.*
declare c cursor for selec * from alumnos order by grupo
start Tfport T1
foreach c into r.*
output to rfport T1(r.grupo,r.nombre)
end foreach
finish Tfport T1
end function
rfport T1(grupo,nombre)
define grupo char(5)
define nombre char(40)
output rfport to pipe "lp −dlaser"
page width 78
page length 64
format
first page header
print "LISTADO DE ALUMNOS POR4SRUPO Fecha:"+today()
print ""
print "Nombre y apellidos"
print "−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"
page header
print "LISTADO DE ALUMNOS POR GRUPO Pag:"+pageno
print ""
print "Nombre y apellidos"
print "−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"
before group of grupo
print
print "Grupo: ",grupo
print "−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"
on every row
print nombre
end report
Transacciones................................................................................................................... 30
Consultas.......................................................................................................................... 30
Inserción de valores.......................................................................................................... 31
Borrado de valores0........................................................................................................... 32
Cursores............................................................................................................................ 32
EXEC_SQL...................................................................................................................... 34
FOREACH....................................................................................................................... 34
BROWSE (ampliación a Informix−4GL).......................................................................... 35
Generador de Listados........................................................................................................... 37
Formato del listado........................................................................................................... 37
Sentencias de control de listados....................................................................................... 39
Uso del compilador de 4GL............................................................................................................ 41
Variables de entorno.............................................................................................................. 41