Primeros pasos: tu primer Program
Un Program es la unidad básica de lógica de negocio: recibe parámetros, hace algo (leer/escribir tablas, calcular, invocar otros programas) y termina. No tiene por qué mostrar pantalla ni imprimir nada.
1. Archivo mínimo
@Documentation {
Author Name : "Tu Nombre"
}
@Properties {
Type : Program
Name : PSALUDO
Description : "Programa de saludo mínimo"
}
@References {
Programs = []
Screens = []
Tables = []
}
@Variables {
global {
Usuario char(10)
Saludo char(30)
}
}
@Parameters {
}
@Source {
&Usuario = USERID()
&Saludo = "Hola, " + &Usuario
}
Esto ya es un .warp válido: declara el objeto (@Properties), sus variables (@Variables) y su lógica (@Source). @References/@Parameters quedan vacíos porque este programa no depende de otros objetos ni recibe parámetros.
2. Agregar parámetros
Un Program recibe parámetros declarados en @Parameters, referenciando variables ya declaradas en @Variables/global:
@Variables {
global {
Fecha date
Hora char(8)
}
}
@Parameters {
inout:&Fecha,
inout:&Hora
}
Los modos son in (sólo entra), inout (entra y puede modificarse) y out (sólo sale) — ver @Parameters.
3. Invocar otro programa
Para llamar a un programa externo, agregalo a @References/Programs y usá Call(...):
@References {
Programs = ["../programs/POTRO.warp"]
}
@Source {
Call(POTRO, &Fecha, &Hora)
}
4. Procedimientos y funciones locales
Procedure/Function viven dentro de @Source, con sus propias variables en @Variables (una entrada por nombre de procedimiento/función, además de global):
@Variables {
global {
Usuario char(10)
}
Saluda {
nombre char(10)
}
}
@Source {
Function Saluda(&nombre) char(20)
Return "Hola " + &nombre
EndFunc
&Usuario = USERID()
Message("Bienvenido", Info) // sólo válido en Screen; en Program usar Print()
}
Para invocar un Procedure (sin retorno) usá Do Nombre(...); una Function (con retorno) se invoca como expresión: &variable = Nombre(...).
5. Siguiente paso
- Si tu programa necesita leer/escribir una tabla: Tablas.
- Si necesita mostrar una pantalla interactiva: Pantallas.
- Si necesita generar un reporte a un archivo de texto: Reportes con Member()/Export().
Para la sintaxis completa de cada sección, ver la Referencia del lenguaje.