Árvore de páginas

Con el propósito de utilizar en expresiones, cada dato en el AdvPL se identifica como un tipo. De esta manera, para cada variable, constante, función o campo de la tabla se asocia un tipo de dato, que depende de la forma como cada uno de estos ítems fue creado. Por ejemplo, el tipo de dato de una variable depende del valor que está almacenado en ella, el tipo de dato de una función depende del valor suministrado por ésta y el tipo de dato de un campo depende de la estructura de la tabla de datos correspondiente.

 

Los tipos de datos posibles en el lenguaje AdvPL son:

 

  • Carácter
  • Memo
  • Fecha
  • Numérico
  • Lógico
  • NIL (ausente)
  • Array
  • Bloque de código

Carácter

 

Cuando los valores almacenados forman cadenas de tamaño fijo, compuestas por dígitos numéricos (0 - 9), letras alfabéticas(a - z o A - Z) o símbolos especiales (@, +, *, -, /, %, $, &, etc.), se trata de un dato del tipo carácter.

 

Un dato del tipo carácter está formado por una cadena que contiene de cero a 65.535 (64 Kbytes) caracteres de la tabla ASCII. El conjunto completo de datos tipo carácter del AdvPL, corresponde a los códigos ASCII 0 (nulo), 32 a 126 (caracteres imprimibles) y 128 a 255 (caracteres gráficos).

 

Los valores o constantes almacenados deben ser circunscritos por un par de delimitadores (abre y cierra), que pueden ser comillas (" ") o apóstrofos (' ").

 

El valor vacío para este tipo de dato es el carácter ASCII 0 (nulo). Para representarlo se deben utilizar dos delimitadores contiguos. Es decir, "" o ''. Datos tipo carácter se ordenan de acuerdo con el valor de su código de la tabla ASCII.

Ejemplos de datos del tipo carácter.

"El AdvPL es un poderoso lenguaje de programación"

"La tasa de intereses es del 0,99% al mes, condicionada al valor mínimo de R$ 100,00 de la prestación"

 

Memo

 

Un dato tipo memo es equivalente al dato tipo carácter. La única diferencia es que un dato tipo memo no tiene tamaño definido. Esta característica es posible porque los datos de este tipo se graban en archivos de datos.

 

El código que identifica el dato memo se graba en el archivo de datos propietario de la información, como el Archivo de Clientes, de Proveedores, etc. Este código de identificación tiene 10 posiciones y es responsable por identificar el contenido de la información grabado en el archivo de datos SYP.

 

En el AdvPL, la función estándar MSMM() es responsable por la grabación y recuperación de datos del tipo memo.

 

Este tipo de dato es importante para los casos en que la información no se puede limitar a un determinado tamaño. Por ejemplo, observaciones, laudos, etc.

 

Fecha

 

Este tipo de dato representa fechas del calendario y permite realizar varias operaciones con ellas, como por ejemplo, la obtención de la diferencia entre dos fechas, en número de días, y la obtención de una nueva fecha después de la suma o resta por un determinado número de días.

 

Este tipo de dato almacena los valores con 8 posiciones, constituidas por 6 dígitos numéricos de 0 a 9, intercalados por barras "/", en el formato 99/99/99.

 

Para definir datos tipo fecha es obligatorio utilizar la función CTOD(), que transforma datos tipo carácter en datos tipo fecha. Por ejemplo:

// Trata fechas en el formato
// día/mes/año

dNascim := CTOD("14/05/12")

 

Con excepción de los campos tipo fecha de las tablas de datos, la única forma de definir un dato tipo fecha es por medio de la función CTOD(). Tanto los formatos de Estados Unidos como el  brasileño, se representan de a siguiente manera:

 

  • El símbolo dd    representa el día. Dependiendo del mes, debe estar entre 01 y 31.
  • El símbolo mm    representa el mes. Debe estar entre 01 y 12.
  • El símbolo ss representa el siglo del año. Debe estar entre 00 y 29.
  • El símbolo aa representa el año. Debe estar entre 00 y 99.

 

En las bases de datos, el almacenamiento de las fechas se hace en el formato texto: ssaammdd. El software de interfaz entre el Protheus y las bases de datos, llamado de Top Connect, convierte esta información de texto para fecha, según la configuración vigente en el Protheus, cuando la aplicación necesita de esta información.

 

En el Protheus, la fecha se puede configurar para el formato de Estados Unidos, representado por los símbolos mm/dd/ssaa o mm/dd/aa, o para el formato adoptado en Brasil, epresentado por dd/mm/ssaa o dd/mm/aa.

 

Como estándar, el AdvPL trabaja con fechas del siglo XX, suprimiendo su indicación. Es decir, la indicación del siglo, representada por el símbolo ss, no se muestra.

 

Para que el AdvPL los acepte, los datos del tipo fecha deben ser fechas válidas, comprendidas entre 01/01/0100 y 31/12/2999. El valor vacío para los datos tipo fecha es una fecha en blanco o una fecha vacía, que debe ser representada por los comandos CTDO(''''), CTOD(SPACE)(8) o CTOD(" /  "). La función CTOD acepta solamente fechas válidas como argumento. Si se muestra una fecha no válida como argumento, el comando la convertirá en una fecha nula.

Ejemplos de fechas no válidas.

32/12/2012

23/13/2012

23/12/0099

29/02/2012

 

Numérico

 

Es cuando un dato tiene en su composición solamente cifras numéricas de 0 a 9, los signos + (mas) o - (menos) y el punto decimal, éste es del tipo numérico. Este tipo de dato se destina a la realización de cálculos matemáticos.

 

Por medio de este tipo de dato, el AdvPL es capaz de procesar valores numéricos entre 10-308 y 10308. Un archivo de datos puede almacenar datos numéricos con un máximo de 32 posiciones (30 cifras numéricas, el signo + o - y el punto decimal), y hasta con 16 dígitos decimales de precisión garantizada. Por lo tanto, podemos tener un número con 32 posiciones enteras, sin dígitos decimales, y hasta un número con 15 posiciones enteras, el punto decimal y 16 dígitos decimales.

 

Un dato numérico no puede ser limitado por ningún símbolo. En caso contrario, será considerado carácter. El valor vacío o nulo para un dato numérico es el valor cero ( 0 ).

 

El valor numérico en el AdvPL tiene el mismo formato de Estados Unidos: el punto decimal está representado por el punto (. ) y la separación de los valores enteros por la coma ( , ). Vea en seguida algunos ejemplos basados en valores monetarios.

Ejemplos:

43,53 (cuarenta y tres reales y cincuenta centavos)

0.05 (cinco centavos)

1,000,000.00 (un millón)

1,815 ( un real ochocientos y quince  milésimos)

 

Sin embargo, en el momento de mostrar la información al usuario, en la pantalla o en informe, es posible convertir el valor numérico al formato adoptado en Brasil, en que el  punto decimal está representado por la coma ( , ) y la separación de los valores enteros por el punto (. ). Veamos los mismos ejemplos anteriores en el formato adoptado en Brasil:

Ejemplos Brasil:

43,53 (cuarenta y tres reales con cincuenta y tres centavos)

0.05 (cinco centavos)

1.000.000,00 (un millón)

1,815 ( un real ochocientos y quince milésimos)

 

 

Lógico

 

Un dato del tipo lógico representa solamente dos estados posibles, llamado de valores booleanos: falso o verdadero.  Su contenido sólo puede ser:

.Y. o .y. (Yes o Si)

.N. o .n. (No o No)

.T. o .t. (True o Verdadero)

.F. o .f. (False o Falso)

 

Los datos lógicos son, obligatoriamente, delimitados por puntos, que equivalen a los delimitadores de los datos tipo carácter. Por ejemplo:

lRetorno := .T.    // Verdadero 
lRetorno := .F.    // Falso

 

NIL

 

El tipo NIL permite manejar las variables declaradas, pero que no estén iniciadas con la atribución de algún valor. La representación de este tipo de dato es la sigla NIL, sin delimitadores.

 

Se puede interpretar NIL como la ausencia de dato, pues cuando un valor no se atribuye a una variable array, elemento de array o parámetro esperado de una función, el AdvPL automáticamente atribuirá el valor NIL.

 

La única clase de variable para la cual no se puede atribuir el valor NIL son los campos de las tablas de datos.

 

Array

 

En el AdvPL, matrices y vectores se pueden considerar como un tipo de dato porque una referencia a una matriz se puede atribuir a una variable, suministrada por una función o transferida como argumento. Una referencia es una dirección de la memoria del computador en la que se ubica una matriz. Debido a sus particularidades, trataremos este tipo de dato en el documento "Array".

 

Bloque de Código

 

Son trechos de código compilado, así como los array, se pueden considerar como un tipo de dato porque una referencia a un bloque de código se puede atribuir a una variable, suministrada por una función o transferida como argumento. Una referencia es una dirección de la memoria del computador en el que se ubica un bloque de código. Debido a sus particularidades, trataremos este tipo de dato en el documento "bloque de Código".

  • Sem rótulos