Opciones y directivas del compilador
Al inicio de un módulo podemos fijar las siguientes opciones o directivas a nivel del compilador de OpenOffice Basic:
Opción | Descripción |
---|---|
Def | Especifica el tipo de las variables no declaradas en función de su nombre. |
Option Base | Define si el primer elemento de un array es el 0 o el 1, si no se especificó en su declaración. |
Option Compatible | Cambia el modo de funcionamiento de OOo Basic a uno más compatible con VBA. |
Option Explicit | Obliga a que se definan las variables. Si utilizamos una variable no declarada previamente, al iniciar la macro el compilador se detendrá mostrando un mensaje de error. |
Option Compatible
Al incorporar esta opción del compilador al principio de un módulo, le indicas al compilador que modifique su modo de trabajo para ser más compatible con el dialecto VBA.
Puedes encontrar información de esta opción del compilador en este enlace de nuestro blog: Option Compatible en OOo Basic
Option Explicit
La declaración de variables no es obligatoria, pero es muy conveniente para evitar errores.
Para forzar a que se nos exija que se declaren las variables utilizadas, debemos agregar el comando de compilador Option Explicit al inicio de cada módulo.
REM ***** BASIC ***** Option Explicit Sub MiFuncion() as string End Sub
Si utilizamos una variable no declarada previamente, al iniciar la macro el compilador se detendrá mostrando un mensaje de error y resaltada en azul, la variable no declarada.
Directiva Def
Podemos declarar por la letra con la que empieza el nombre de la variable los tipos de aquellas variables cuyo tipo no sea declarado explícitamente.
Para forzar esta declaración, debemos agregar uno o más comandos de compilador Def al inicio de cada módulo.
En el siguiente ejemplo se definirán como variables de tipo:
- integer aquellas que empiecen por las letras i, j, k o n, utilizando DefInt
- long las que empiecen por la letra l, utilizando DefLng
- double las que empiecen por la letra d, utilizando DefDbl
- single las que empiecen por la letra s, utilizando DefSng
- currency las que empiecen por la letra m, utilizando DefCur
- string las que empiecen por la letra c, utilizando DefStr
- boolean las que empiecen por la letra b, utilizando DefBool
- date las que empiecen por la letra f o h, utilizando DefDate
- objeto las que empiecen por la letra o, utilizando DefObj
- variable las que empiecen por la letra v, utilizando DefVar
REM ***** BASIC ***** Option Explicit DefInt i-k, n DefLng l DefDbl d DefSng s DefCur m DefStr c DefBool b DefDate f,h DefObj o DefVar v Sub MiSubRutina() as string End Sub
La directiva Def declara el tipo de la variable, pero no declara la variable, que tiene que ser declarada al nivel que corresponda.
Las variables tampoco se inicializan con su tipo de dato, por lo que antes de asignarles un valor, se presentan como vacías.
El siguiente código utiliza las funciones TypeName y VarType para ilustrar este hecho.
REM ***** BASIC ***** Option Explicit DefInt i-k DefLng n DefDbl d DefBool l DefDate f,h DefObj o DefVar v DefCur m DefSng s DefStr c Dim cTexto Sub MiSubRutina( optional nNumero ) Dim fFecha MsgBox TypeName( cTexto ) & chr(13) & _ TypeName( nNumero ) & chr(13) & _ TypeName( fFecha ) MsgBox VarType( cTexto ) & chr(13) & _ VarType( nNumero ) & chr(13) & _ VarType( fFecha ) cTexto = "Hola" nNumero = 100 fFecha = date MsgBox TypeName( cTexto ) & chr(13) & _ TypeName( nNumero ) & chr(13) & _ TypeName( fFecha ) MsgBox VarType( cTexto ) & chr(13) & _ VarType( nNumero ) & chr(13) & _ VarType( fFecha ) End Sub