PC SOFT

AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente. Haga clic aquí para ver la versión en inglés.
  • Crear un procedimiento
  • Salir de una Procedure
  • "Al final del evento que contiene la llamada"
  • Devolución de un resultado
  • Estampación del valor de retorno
  • Atributos de extensión
  • Zombie (u obsoleta) Procedure
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
El método para declarar una Procedure es el mismo independientemente de que sea:
Importante: No debes declarar dos Procedure con el mismo nombre (especialmente un Procedure global y un Procedure local).
Recordatorio: En WLanguage, no hay distinción entre los procedimientos y las funciones. Las sintaxis para declarar y utilizar los procedimientos también se aplican a las funciones.
Ejemplo
PROCÉDURE Find(FileName, Key, Value)
HReadSeek(FileName, Key, Value)
IF HFound() = True THEN
RESULT True
ELSE
RESULT False
END
Sintaxis

Declarar una Procedure con parámetros Ocultar los detalles

PROCEDURE <Procedure name>(<Parameters>) [<Extension attributes>] [: <Type of return>]
<Procedure code>
<PROCEDURE>:
Inicio de la declaración de Procedure.
Observación: Para hacer sus programas más legibles, la palabra clave Procedure puede ser reemplazada por la palabra clave FUNCTION.
<Procedure name>:
Nombre de Procedure a declarar.
<Parameters>:
Parámetros pasados a la Procedure. Cada parámetro está separado por una coma. Para obtener más información, consulte Parámetros de un Procedure.
Versiones 19 y posteriores
Si su Procedure o función utiliza un elemento del proyecto (ventana, página, reporte, ...), tiene la posibilidad de get la lista de elementos solicitados en la finalización. Para ello, añada un atributo de extensión en la declaración de los parámetros de la función o de Procedure.
Nueva funcionalidad versión 19
Si su Procedure o función utiliza un elemento del proyecto (ventana, página, reporte, ...), tiene la posibilidad de get la lista de elementos solicitados en la finalización. Para ello, añada un atributo de extensión en la declaración de los parámetros de la función o de Procedure.
Si su Procedure o función utiliza un elemento del proyecto (ventana, página, reporte, ...), tiene la posibilidad de get la lista de elementos solicitados en la finalización. Para ello, añada un atributo de extensión en la declaración de los parámetros de la función o de Procedure.
<Extension attributes>:
Versiones 23 y posteriores
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
Nueva funcionalidad versión 23
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
<Type of return>:
Versiones 18 y posteriores
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
Nueva funcionalidad versión 18
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
<Procedure code>:
Código de idioma de Procedure para declarar.

Declarar una Procedure sin parámetro Ocultar los detalles

PROCEDURE <Procedure name>() [<Extension attributes>] [: <Type of return>]
<Procedure code>
<PROCEDURE>:
Inicio de la declaración de Procedure.
Observación: Para hacer sus programas más legibles, la palabra clave Procedure puede ser reemplazada por la palabra clave FUNCTION.
<Procedure name>:
Nombre de Procedure a declarar.
<Extension attributes>:
Versiones 23 y posteriores
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
Nueva funcionalidad versión 23
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
<Type of return>:
Versiones 18 y posteriores
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
Nueva funcionalidad versión 18
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
<Procedure code>:
Código de idioma de Procedure.

Declarar un Procedure con parámetros Variable Ocultar los detalles

PROCEDURE <Procedure name>(<Parameters>, ]*) [<Extension attributes>] [: <Type of return>]
<Procedure code>
<PROCEDURE>:
Inicio de la declaración de Procedure.
Observación: Para hacer sus programas más legibles, la palabra clave Procedure puede ser reemplazada por la palabra clave FUNCTION.
<Procedure name>:
Nombre de Procedure a declarar.
<Parameters>:
Parámetros pasados a la Procedure. Cada parámetro está separado por una coma.
Si el número de parámetros que se pueden pasar a la Procedure cambia, utilice el símbolo "*".. Por ejemplo:
  • Procedimientos que pueden recibir entre 0 y 255 parámetros: Procedure MyProc(*).
  • Procedimientos que pueden recibir entre 1 y 255 parámetros: Procedure MyProc(Parámetro1, *).
Para obtener más información, consulte:
<Extension attributes>:
Versiones 23 y posteriores
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
Nueva funcionalidad versión 23
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
Atributos de extensión utilizados para definir las opciones de gestión del editor de código. Para más detalles sobre los atributos de la extensión disponible, ver observaciones.
<Type of return>:
Versiones 18 y posteriores
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
Nueva funcionalidad versión 18
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
Tipo de valor devuelto por la Procedure. Este tipo puede corresponder a un tipo simple (entero, real, cadena,...) o a un tipo estructurado (estructura, objeto,...)..
Esta información se utiliza para asegurarse de que la Procedure siempre tiene el mismo tipo de valor en retorno. El valor devuelto siempre se convertirá al tipo especificado.
Por ejemplo, si el tipo de retorno es "Integer" y si el valor devuelto es una cadena, la cadena se convertirá automáticamente en entera..
<Procedure code>:
Código de idioma de Procedure para declarar.
Observaciones

Crear un procedimiento

Para más detalles sobre cómo crear una Procedure global, véase Procedimientos globales.
Para más detalles sobre cómo crear un Procedure local, véase Procedimientos locales.

Salir de una Procedure

Para forzar la salida de un Procedure, utilice la palabra clave VUELVA A. En el Procedure, no se ejecuta ninguno de los procesos posteriores a la palabra clave VUELVA A.
Por ejemplo:
PROCÉDURE Calculate(Dividend)
IF Dividend = 0 THEN
Error("Unable to divide by zero")
RETURN
ELSE
...
END
Observaciones:
  • Si la Procedure devuelve un resultado, utilice la palabra clave RESULTADO.
  • Las palabras clave VUELVA A y RESULTADO no pueden utilizarse en el mismo Process.

"Al final del evento que contiene la llamada"

Los Procedure s con la opción "Al final del evento que contiene la llamada" activada, y llamados desde un callback Procedure (Procedure utilizado por fListFile, Event, etc.) se ejecutan al final de cada llamada al callback.
Ejemplo:
// -----------------
// standard case
// -----------------
Click of button
// beginning of button click code
Proc1
// beginning of Procedure1 code
Proc2
// beginning of Procedure2 code

Call to EndEvent procedure
// end of Proc2 code
// end of Proc1 code
// end of button click code
Execution of EndEvent procedure
// -------------------
// callback case
// -------------------
Click of button
Proc1
Proc2
use of fListFile
Callback1 procedure
// beginning of code of Callback1 Procedure
CallbackProc2
// beginning of code of Callback2 Procedure
Call to ProcEndEvent
// end of ProcedureCallback2 code
// end of ProcedureCallback1 code
Execution of ProcEndEvent
ProcedureCallback1
// beginning of ProcedureCallback1 code
ProcedureCallback2
// beginning of ProcedureCallback2 code
Call to ProcEndEvent
// end of ProcedureCallback2 code
// end of ProcedureCallback1 code
Execution of ProcEndEvent

Devolución de un resultado

Para devolver el resultado del procedimiento a la Process llamante, utilice RESULTADO. Esta palabra clave se utiliza para devolver:
  • un valor,
  • Versiones 19 y posteriores
    varios valores.
    Nueva funcionalidad versión 19
    varios valores.
    varios valores.
Por ejemplo:
// Procedure that returns a value
PROCÉDURE Find(FileName, Key, Value)
HReadSeek(FileName, Key, Value)
IF HFound() = True THEN
RESULT True
ELSE
RESULT False
END
Versiones 19 y posteriores
// Procedure that returns several values
PROCÉDURE MyProc()

// Process
RESULT(1, 2, 3)


// Code for calling the procedure
( x, y, z ) = MyProc()
// x is set to 1, y to 2 and z to 3
Nueva funcionalidad versión 19
// Procedure that returns several values
PROCÉDURE MyProc()

// Process
RESULT(1, 2, 3)


// Code for calling the procedure
( x, y, z ) = MyProc()
// x is set to 1, y to 2 and z to 3
// Procedure that returns several values
PROCÉDURE MyProc()

// Process
RESULT(1, 2, 3)


// Code for calling the procedure
( x, y, z ) = MyProc()
// x is set to 1, y to 2 and z to 3
Consejo: Para los Procedure s que devuelven un resultado, se recomienda utilizar la palabra clave FUNCTION en lugar de Procedure para simplificar la lectura del código.
Importante: La palabra clave VUELVA A no debe utilizarse para forzar la salida de un Procedure que devuelva un resultado. En efecto, la llamada al Procedure espera un estado reporte que no será devuelto si se fuerza la salida del Procedure.
Versiones 18 y posteriores

Estampación del valor de retorno

Para especificar el tipo de valor de retorno, basta con especificar este tipo (precedido de ':') al declarar la Procedure. Por ejemplo:
PROCEDURE Calculation(): Integer
 
IF MyExpression = True THEN
RESULT "1"  // The string "1" will be converted to integer
ELSE
RESULT 0
END
Versiones 19 y posteriores
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Nueva funcionalidad versión 19
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Se permiten los siguientes tipos de devolución:
TiposVerificaciones realizadas durante la compilaciónVerificaciones/acciones realizadas en tiempo de ejecución
karaokeautomatic WLanguage conversiones
entero sin signoautomatic WLanguage conversiones
unsigned integer on 8 bytesautomatic WLanguage conversiones
intautomatic WLanguage conversiones
Entero de 8 bytesautomatic WLanguage conversiones
system integerautomatic WLanguage conversiones
divisaautomatic WLanguage conversiones
numéricoautomatic WLanguage conversiones
realautomatic WLanguage conversiones
4 bytes realesautomatic WLanguage conversiones
carácterautomatic WLanguage conversiones
cadenaautomatic WLanguage conversiones
Cadena ANSISólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
Cadena UNICODESólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
bufferSólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
fechaautomatic WLanguage conversiones
momentoautomatic WLanguage conversiones
datetimeautomatic WLanguage conversiones
lapsoautomatic WLanguage conversiones
procedimientoSólo se permiten los tipos ProcedureSólo se permiten los tipos Procedure
tipo de letraSólo se permiten los tipos de fuenteSólo se permiten los tipos de fuente
<enumeración>
Combinación> <combinación
Clase> <clase
  • "Dinámico" no está permitido.
  • Las clases deben estar correlacionadas
Sólo se permiten conversiones
<estructura>
  • "Dinámico" no está permitido.
  • las estructuras deben ser las mismas.
Las estructuras deben ser las mismas.
<advanced type>
  • "Dinámico" no permitido
  • Los tipos avanzados deben ser los mismos.
Los tipos avanzados deben ser los mismos.
<.NET class>"Dinámico" no permitido
tabla
  • "Dinámico" no permitido
  • Comprobación del tipo de elementos
  • Comprobación del número de dimensiones
  • Comprobación del tipo de elementos
  • Comprobar el número de dimensiones si se suministran las dimensiones,
  • Comprobación de cada dimensión
asociativa arrayComprobación del tipo de elementosComprobación del tipo de elementos
stackComprobación del tipo de elementosComprobación del tipo de elementos
queueComprobación del tipo de elementosComprobación del tipo de elementos
listarComprobación del tipo de elementosComprobación del tipo de elementos
Nueva funcionalidad versión 18

Estampación del valor de retorno

Para especificar el tipo de valor de retorno, basta con especificar este tipo (precedido de ':') al declarar la Procedure. Por ejemplo:
PROCEDURE Calculation(): Integer
 
IF MyExpression = True THEN
RESULT "1"  // The string "1" will be converted to integer
ELSE
RESULT 0
END
Versiones 19 y posteriores
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Nueva funcionalidad versión 19
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Se permiten los siguientes tipos de devolución:
TiposVerificaciones realizadas durante la compilaciónVerificaciones/acciones realizadas en tiempo de ejecución
karaokeautomatic WLanguage conversiones
entero sin signoautomatic WLanguage conversiones
unsigned integer on 8 bytesautomatic WLanguage conversiones
intautomatic WLanguage conversiones
Entero de 8 bytesautomatic WLanguage conversiones
system integerautomatic WLanguage conversiones
divisaautomatic WLanguage conversiones
numéricoautomatic WLanguage conversiones
realautomatic WLanguage conversiones
4 bytes realesautomatic WLanguage conversiones
carácterautomatic WLanguage conversiones
cadenaautomatic WLanguage conversiones
Cadena ANSISólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
Cadena UNICODESólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
bufferSólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
fechaautomatic WLanguage conversiones
momentoautomatic WLanguage conversiones
datetimeautomatic WLanguage conversiones
lapsoautomatic WLanguage conversiones
procedimientoSólo se permiten los tipos ProcedureSólo se permiten los tipos Procedure
tipo de letraSólo se permiten los tipos de fuenteSólo se permiten los tipos de fuente
<enumeración>
Combinación> <combinación
Clase> <clase
  • "Dinámico" no está permitido.
  • Las clases deben estar correlacionadas
Sólo se permiten conversiones
<estructura>
  • "Dinámico" no está permitido.
  • las estructuras deben ser las mismas.
Las estructuras deben ser las mismas.
<advanced type>
  • "Dinámico" no permitido
  • Los tipos avanzados deben ser los mismos.
Los tipos avanzados deben ser los mismos.
<.NET class>"Dinámico" no permitido
tabla
  • "Dinámico" no permitido
  • Comprobación del tipo de elementos
  • Comprobación del número de dimensiones
  • Comprobación del tipo de elementos
  • Comprobar el número de dimensiones si se suministran las dimensiones,
  • Comprobación de cada dimensión
asociativa arrayComprobación del tipo de elementosComprobación del tipo de elementos
stackComprobación del tipo de elementosComprobación del tipo de elementos
queueComprobación del tipo de elementosComprobación del tipo de elementos
listarComprobación del tipo de elementosComprobación del tipo de elementos

Estampación del valor de retorno

Para especificar el tipo de valor de retorno, basta con especificar este tipo (precedido de ':') al declarar la Procedure. Por ejemplo:
PROCEDURE Calculation(): Integer
 
IF MyExpression = True THEN
RESULT "1"  // The string "1" will be converted to integer
ELSE
RESULT 0
END
Versiones 19 y posteriores
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Nueva funcionalidad versión 19
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Caso de valores de retorno múltiples
Tiene la capacidad de asignar un tipo a los valores de retorno. La sintaxis es la siguiente:
PROCEDURE ProcedureName(): ([<Type value 1>, [<Type value 2>, ... , [<Type value N>]]])
Observación: No es necesario especificar el tipo para todos los valores de retorno.. Para evitar especificar el tipo de un valor de retorno, todo lo que tiene que hacer es omitir el tipo o usar el carácter '?.
Ejemplo:
PROCEDURE Procedure_Name(): (string..string)
 
RESULT(1,2,3)

PROCEDURE Procedure_Name(): (string,?,string)
 
RESULT(1,2,3)
Tiene la capacidad de asignar un tipo a los valores de retorno de la versión 190040.
Se permiten los siguientes tipos de devolución:
TiposVerificaciones realizadas durante la compilaciónVerificaciones/acciones realizadas en tiempo de ejecución
karaokeautomatic WLanguage conversiones
entero sin signoautomatic WLanguage conversiones
unsigned integer on 8 bytesautomatic WLanguage conversiones
intautomatic WLanguage conversiones
Entero de 8 bytesautomatic WLanguage conversiones
system integerautomatic WLanguage conversiones
divisaautomatic WLanguage conversiones
numéricoautomatic WLanguage conversiones
realautomatic WLanguage conversiones
4 bytes realesautomatic WLanguage conversiones
carácterautomatic WLanguage conversiones
cadenaautomatic WLanguage conversiones
Cadena ANSISólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
Cadena UNICODESólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
bufferSólo se permiten las cadenas sin tamañoautomatic WLanguage conversiones
fechaautomatic WLanguage conversiones
momentoautomatic WLanguage conversiones
datetimeautomatic WLanguage conversiones
lapsoautomatic WLanguage conversiones
procedimientoSólo se permiten los tipos ProcedureSólo se permiten los tipos Procedure
tipo de letraSólo se permiten los tipos de fuenteSólo se permiten los tipos de fuente
<enumeración>
Combinación> <combinación
Clase> <clase
  • "Dinámico" no está permitido.
  • Las clases deben estar correlacionadas
Sólo se permiten conversiones
<estructura>
  • "Dinámico" no está permitido.
  • las estructuras deben ser las mismas.
Las estructuras deben ser las mismas.
<advanced type>
  • "Dinámico" no permitido
  • Los tipos avanzados deben ser los mismos.
Los tipos avanzados deben ser los mismos.
<.NET class>"Dinámico" no permitido
tabla
  • "Dinámico" no permitido
  • Comprobación del tipo de elementos
  • Comprobación del número de dimensiones
  • Comprobación del tipo de elementos
  • Comprobar el número de dimensiones si se suministran las dimensiones,
  • Comprobación de cada dimensión
asociativa arrayComprobación del tipo de elementosComprobación del tipo de elementos
stackComprobación del tipo de elementosComprobación del tipo de elementos
queueComprobación del tipo de elementosComprobación del tipo de elementos
listarComprobación del tipo de elementosComprobación del tipo de elementos
Versiones 23 y posteriores

Atributos de extensión

Los atributos de extensión disponibles son:
  • atributo de extensión para la gestión de los procedimientos de zombie:
    <zombie [ comentario = "texto "]&gtSe utiliza para definir una Procedure obsoleta (también llamada Procedure zombi). La palabra clave opcional comment se utiliza para indicar el texto que se mostrará en el error de compilación asociado al obsoleto Procedure. Para obtener más información, consulte Procedimientos de zombie.
  • atributo de extensión para administrar el depurador:
    Sin paso a paso> <Sin paso a paso>Permite especificar que la Procedure sea ignorada por el depurador cuando se depura en modo "Paso a paso.
  • Versiones 24 y posteriores
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
  • Versiones 24 y posteriores
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
  • Versiones 24 y posteriores
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
Nueva funcionalidad versión 23

Atributos de extensión

Los atributos de extensión disponibles son:
  • atributo de extensión para la gestión de los procedimientos de zombie:
    <zombie [ comentario = "texto "]&gtSe utiliza para definir una Procedure obsoleta (también llamada Procedure zombi). La palabra clave opcional comment se utiliza para indicar el texto que se mostrará en el error de compilación asociado al obsoleto Procedure. Para obtener más información, consulte Procedimientos de zombie.
  • atributo de extensión para administrar el depurador:
    Sin paso a paso> <Sin paso a paso>Permite especificar que la Procedure sea ignorada por el depurador cuando se depura en modo "Paso a paso.
  • Versiones 24 y posteriores
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
  • Versiones 24 y posteriores
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
  • Versiones 24 y posteriores
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.

Atributos de extensión

Los atributos de extensión disponibles son:
  • atributo de extensión para la gestión de los procedimientos de zombie:
    <zombie [ comentario = "texto "]&gtSe utiliza para definir una Procedure obsoleta (también llamada Procedure zombi). La palabra clave opcional comment se utiliza para indicar el texto que se mostrará en el error de compilación asociado al obsoleto Procedure. Para obtener más información, consulte Procedimientos de zombie.
  • atributo de extensión para administrar el depurador:
    Sin paso a paso> <Sin paso a paso>Permite especificar que la Procedure sea ignorada por el depurador cuando se depura en modo "Paso a paso.
  • Versiones 24 y posteriores
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Atributos de extensión específicos de los procedimientos locales, globales o internos:
    <automatic>Permite especificar que esta Procedure se ejecute automáticamente después del código de inicialización (de la ventana, página o proyecto).

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.

    Atención, este atributo de extensión no puede aplicarse a un Procedure interno.
    <fin Process>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <fin Event>Se utiliza para indicar que este Procedure se ejecutará cuando el Process que contiene la llamada Procedure haya terminado. Para obtener más información, consulte "Al final del evento que contiene la llamada".

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
  • Versiones 24 y posteriores
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    atributo de extensión para gestionar temporizadores:
    <timer [=intervalos en centésimas de segundo]>Se utiliza para especificar que el Procedure se ejecutará en un timer.
    Este atributo de extensión es equivalente a TimerSys. La repetición es automatic. El valor opcional interval en centésimas de segundo se utiliza para especificar el tiempo interval entre 2 repeticiones:
    • Si no se especifica este valor, es necesario especificar el tiempo interval entre 2 repeticiones utilizando <interval>.
    • Si no se especifica este valor, los valores de <retraso> y <interval> se inicializan con el valor del interval especificado.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <Repetition [=número de Repetition s]&gtSe utiliza para especificar que la Procedure se llama varias veces en una fila (repeticiones). El valor opcional número de repeticiones se utiliza para especificar el número de llamadas al Procedure.
    • Si no se especifica este valor, la Repetition seguirá hasta:
      • Se llama EndAutomatedProcedure.
      • se cierra el elemento al que pertenece la Procedure (ventana, página, reporte).
      • se destruye la instancia a la que pertenece la Procedure (para más detalles sobre el concepto de instancia, véase la ayuda de Instanciación de un objeto).
      • el fin de la aplicación (aplicación cerrada por el usuario, o uso de EndProgram).
    • Si se especifica este valor, se llamará a la Procedure tantas veces como el número especificado.
    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <interval=duración en centésimas de segundo>Permite especificar la duración (interval) entre 2 llamadas al Procedure.
    Este atributo de extensión debe utilizarse con <timer> o <repetition>. El valor opcional interval en centésimas de segundo permite especificar este tiempo interval.
    Si no se especifica este valor, debe especificarse con <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <llamar de nuevo[=tipo de llamada]&gtPermite especificar, en un Procedure llamado en un timer, el modo de funcionamiento de las llamadas posteriores. Este atributo de extensión debe utilizarse con <timer>. El valor opcional de este atributo de extensión puede ser:
    ignore
    (Valor predeterminado)
    La Procedure se llama inmediatamente. No hay tiempo de espera para llamar a Procedure. El procedimiento se llama una sola vez sin repetition.
    nuevoSe activa una nueva timer. La Procedure se llama en esta nueva timer.
    Precaución, el anterior timer no se ha detenido. Los temporizadores se acumularán en la memoria.
    Reinicio Se utiliza para reiniciar el temporizador automáticamente al final de la Procedure. <interval> se utiliza para definir el tiempo interval entre cada llamada al Procedure.
    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <delay=duración en centésimas de segundo>Se utiliza para especificar el tiempo de espera antes del inicio del procedimiento en una Timer( durante la primera llamada). Este atributo de extensión debe utilizarse con <timer>. El valor opcional delay en centésimas de segundo permite especificar este tiempo de espera.
    Si no se especifica este valor, deberá especificarlo cuando utilice <timer>.

    Este atributo de extensión no es compatible con <Thread> y <principal Thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
  • Versiones 24 y posteriores
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    Nueva funcionalidad versión 24
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    atributo de extensión para manejar hilos:
    <Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <main thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    <principal Thread>Permite especificar que el Procedure se ejecute en un Thread secundario. Para más detalles sobre los hilos, ver Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer> y <thread>.

    Además, puedes ver la ayuda sobre Procedimientos automáticos.
    Versiones 26 y posteriores
    <seguro thread>
    Nueva funcionalidad versión 26
    <seguro thread>
    <seguro thread>
    Se utiliza para especificar que el Procedure se ejecutará en un Thread secundario seguro. Para más detalles sobre los hilos, véase Principio de ejecución de hilos.

    Este atributo de extensión no es compatible con <timer>, <main thread> y <UI>.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <contexto ligero de HFSQL>>.Activa la copy inmediata de una parte del contexto HFSQL actual.
    Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.
    Además, puede ver la ayuda sobre Procedimientos automáticos.
    <Contexto completo de HFSQL>>.Activa la copy inmediata del contexto HFSQL actual.
    Se recomienda si el hilo debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto llamador.

    Este atributo de extensión debe utilizarse con <Thread>. Para más detalles sobre la gestión de los hilos, consulte la ayuda sobre ThreadExecute.

    Además, puede ver la ayuda sobre Procedimientos automáticos.
Versiones 23 y posteriores

Zombie (u obsoleta) Procedure

En la mayoría de los casos, un código antiguo contiene procedimientos que se utilizan pero que ya no se ajustan al estándar de calidad actual.
En este caso, se crea una nueva versión de Procedure, con parámetros diferentes.
Como todas las llamadas existentes no pueden modificarse directamente, tiene la posibilidad de indicar que la versión anterior se convierta en una zombie Procedure.
En ese caso:
  • Al recompilar el proyecto, se utiliza una advertencia para indicar todas las llamadas al zombi Procedure.
  • Cada vez que se utiliza el zombi Procedure, se muestra un logotipo específico junto a la llamada durante 10 segundos y se genera un aviso de compilación.
  • El zombi Procedure aparece Grayed fuera y tachado en el panel "Explorador de proyectos.
¿Cómo?
Para indicar que un procedimiento es un zombi (obsoleto), la declaración del procedimiento debe ir seguida de la extensión del atributo <Zombie>.

La sintaxis es la siguiente:
PROCEDURE <Procedure name>(<Parameters>) <zombie [comment = "text"]> [: <Type of return>]
PROCEDURE <Procedure name>() <zombie [comment = "text"]> [: <Type of return>]
En estas sintaxis, la palabra clave opcional comment se utiliza para especificar el texto que se mostrará en el error de compilación asociado al obsoleto Procedure.
Ejemplo
  • Código Procedure:
    PROCEDURE AddTreeView(sNode, sMonth, sImageDate, sImage)<zombie comment = "use AjFull">
     
    // Check to find out whether the year exists
    IF TreeStatus(TreeCommand, sNode) = tvError THEN
    // it does not exist, create it with all the months
    TreeAdd(TreeCommand, sNode, sImageDate, sImageDate, "", tvLast)
    AddMonth(sNode)
    END
  • Los procedimientos zombie son Grayed y se tachan en el explorador de proyectos (en cuanto se recompila el elemento).
  • Al teclear la llamada a la función, se mostrará una Icon específica durante 10 segundos :
    y se mostrará un error de compilación que contiene el comment:
Nueva funcionalidad versión 23

Zombie (u obsoleta) Procedure

En la mayoría de los casos, un código antiguo contiene procedimientos que se utilizan pero que ya no se ajustan al estándar de calidad actual.
En este caso, se crea una nueva versión de Procedure, con parámetros diferentes.
Como todas las llamadas existentes no pueden modificarse directamente, tiene la posibilidad de indicar que la versión anterior se convierta en una zombie Procedure.
En ese caso:
  • Al recompilar el proyecto, se utiliza una advertencia para indicar todas las llamadas al zombi Procedure.
  • Cada vez que se utiliza el zombi Procedure, se muestra un logotipo específico junto a la llamada durante 10 segundos y se genera un aviso de compilación.
  • El zombi Procedure aparece Grayed fuera y tachado en el panel "Explorador de proyectos.
¿Cómo?
Para indicar que un procedimiento es un zombi (obsoleto), la declaración del procedimiento debe ir seguida de la extensión del atributo <Zombie>.

La sintaxis es la siguiente:
PROCEDURE <Procedure name>(<Parameters>) <zombie [comment = "text"]> [: <Type of return>]
PROCEDURE <Procedure name>() <zombie [comment = "text"]> [: <Type of return>]
En estas sintaxis, la palabra clave opcional comment se utiliza para especificar el texto que se mostrará en el error de compilación asociado al obsoleto Procedure.
Ejemplo
  • Código Procedure:
    PROCEDURE AddTreeView(sNode, sMonth, sImageDate, sImage)<zombie comment = "use AjFull">
     
    // Check to find out whether the year exists
    IF TreeStatus(TreeCommand, sNode) = tvError THEN
    // it does not exist, create it with all the months
    TreeAdd(TreeCommand, sNode, sImageDate, sImageDate, "", tvLast)
    AddMonth(sNode)
    END
  • Los procedimientos zombie son Grayed y se tachan en el explorador de proyectos (en cuanto se recompila el elemento).
  • Al teclear la llamada a la función, se mostrará una Icon específica durante 10 segundos :
    y se mostrará un error de compilación que contiene el comment:

Zombie (u obsoleta) Procedure

En la mayoría de los casos, un código antiguo contiene procedimientos que se utilizan pero que ya no se ajustan al estándar de calidad actual.
En este caso, se crea una nueva versión de Procedure, con parámetros diferentes.
Como todas las llamadas existentes no pueden modificarse directamente, tiene la posibilidad de indicar que la versión anterior se convierta en una zombie Procedure.
En ese caso:
  • Al recompilar el proyecto, se utiliza una advertencia para indicar todas las llamadas al zombi Procedure.
  • Cada vez que se utiliza el zombi Procedure, se muestra un logotipo específico junto a la llamada durante 10 segundos y se genera un aviso de compilación.
  • El zombi Procedure aparece Grayed fuera y tachado en el panel "Explorador de proyectos.
¿Cómo?
Para indicar que un procedimiento es un zombi (obsoleto), la declaración del procedimiento debe ir seguida de la extensión del atributo <Zombie>.

La sintaxis es la siguiente:
PROCEDURE <Procedure name>(<Parameters>) <zombie [comment = "text"]> [: <Type of return>]
PROCEDURE <Procedure name>() <zombie [comment = "text"]> [: <Type of return>]
En estas sintaxis, la palabra clave opcional comment se utiliza para especificar el texto que se mostrará en el error de compilación asociado al obsoleto Procedure.
Ejemplo
  • Código Procedure:
    PROCEDURE AddTreeView(sNode, sMonth, sImageDate, sImage)<zombie comment = "use AjFull">
     
    // Check to find out whether the year exists
    IF TreeStatus(TreeCommand, sNode) = tvError THEN
    // it does not exist, create it with all the months
    TreeAdd(TreeCommand, sNode, sImageDate, sImageDate, "", tvLast)
    AddMonth(sNode)
    END
  • Los procedimientos zombie son Grayed y se tachan en el explorador de proyectos (en cuanto se recompila el elemento).
  • Al teclear la llamada a la función, se mostrará una Icon específica durante 10 segundos :
    y se mostrará un error de compilación que contiene el comment:
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario