Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

Para la sintaxis completa de cada sección, ver la Referencia del lenguaje.