# OpenOffice.org/Macro/BASIC

OOo BASIC (no Brasil, BROffice BASIC; para ver o motivo desta diferença, ver o artigo BROffice.org) é a linguagem padrão das macros do OpenOffice.org.
Apesar ambas serem baseadas no BASIC, esta linguagem e o Visual Basic (do Microsoft Office) são bem diferentes.
Apesar de BASIC ser uma linguagem case-insensitive, há algumas exceções ao lidar com objetos mais complexos.

## Subrotinas

Subrotinas são blocos de instrução. Uma macro executa uma subrotina.
Uma subrotina começa com Sub e termina com End Sub.
Uma subrotina pode receber parâmetros.

## Variáveis

A linguagem possui quatro tipos básicos de variáveis: numéricas, lógicas, strings, datas e objetos. Além disso, é possível definir novos tipos, que combinam tipos existentes (como se fossem estruturas). Dim é a forma de declarar uma variável; como o próprio nome indica, Dim naturalmente serve para declarar vetores, matrizes ou arrays.
A declaração segue a forma:
Na declaração de vetores, matrizes e arrays, deve-se lembrar que o que é declarado é o valor final da dimensão, que começa com zero. Então, uma declaração do tipo Dim m(3,5) As Integer declara uma matriz de (3 + 1) x (5 + 1) inteiros.
Os tipos numéricos são Integer, Long Integer, Decimal, Single (ponto flutuante, precisão simples), Double (ponto flutuante, precisão dupla) e Currency (para guardar valores monetários com alta precisão; como o valor mais alto é apenas +922337203685477.5807, pode ser que daqui a algum tempo a inflação supere a precisão deste tipo).
Variáveis também podem ser declaradas usando um sigil após o Dim. Por exemplo:
Os demais tipos são String, Boolean, Date e Object.
O tipo Object é usado para o tratamento de estruturas complexas. Por exemplo, ao se rodar o BASIC em um documento do Writer ou Calc, o documento em si é um objeto, associado à variável ThisComponent. Em um documento do Calc, a totalidade das planilhas é o objeto ThisComponent.Sheets. Para acessar, por exemplo, uma planilha de nome "Alunos", pode-se declarar:
Mais detalhes sobre ThisComponent serão vistos em um capítulo próprio, mais adiante.
Como visto acima, Dim é usado para declarar uma variável, um vetor, uma matriz ou estruturas mais complexas. Uma instrução muito útil e praticamente exclusiva do BASIC é Redim, que redimensiona vetores. O exemplo abaixo também ilustra o tratamento de erros (it's easier to ask for forgiveness than permission):

### Estruturas

Uma forma mais complexa de definir variáveis é através de Type ... End Type.
Primeiro, deve-se definir o tipo. A definição dos tipos deve estar fora das subrotinas.
Dentro das subrotinas, o tipo pode ser usado, declarando-se variáveis e atribuindo-se valores:

## Interface gráfica

    Ver módulo principal: /GUI/
O BASIC possui uma interface gráfica, que permite a exibição de caixas de mensagem, diálogos, etc.
A forma mais simples é através da função MsgBox (Message Box, ou caixa de mensagem):

## Debugando os objetos

A orientaçãoa objetos - o que são classes, objetos, métodos, atributos, etc - será explicada em próximos capítulos (Orientação a objetos e Atributos e métodos).
Existem três atributos que sempre podem ser usados nas variáveis do tipo Objeto, que servem para debugar um programa:
* .Dbg_Properties
* .Dbg_Methods
* .Dbg_SupportedInterfaces
como os próprios nomes indicam, as duas primeiras retornam, respectivamente, Atributos (propriedades) e Métodos, enquanto que a terceira retorna as Interfaces.
Por exemplo, o código abaixo mostra os métodos do objeto ThisComponent:

## Ver também

* Orientação a objetos - detalhes sobre ThisDocument e outros objetos das macros
* OpenOffice.org BASIC Programming Guide, na wiki do OpenOffice
* Visual Basic - BASIC da suite Microsoft Office

### Tópicos mais avançados da linguagem

* Strings

### Módulos que contém exemplos de ooBasic

* Teoria de números/10000 primos - mostra como construir diálogos (input usando GUI), subrotinas com parâmetros, uso avançado de objetos, loops e condicionais

## Referências

* ↑ Case Sensitivity, no site www.services.openoffice.org
* ↑ Arrays, no site wiki.services.openoffice.org
* ↑ Error Handling, no site wiki.services.openoffice.org
* ↑ Other Instructions, site wiki.services.openoffice.org
* ↑ Message and Input Boxes (Runtime Library), no site wiki.services.openoffice.org
* ↑ Introdução ao OpenOffice.org BASIC, por Noelson Alves Duarte, site www.tc.df.gov.br