Buscar

21339617-Lotus-Script

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 152 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 152 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 152 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 – CONCEITOS GERAIS
• Workflow: software para controlar os passos necessários para completar toda uma 
atividade.
• Workgroup: grupo de pessoas que compartilham arquivos, dados e possivelmente 
aplicações. Os softwares de workgroup são projetados para permitir 
interações colaborativas.
• Groupware: software baseado em tecnologia Client/Server, permitindo vários usuários 
compartilharem uma área comum de informações.
Exemplos de ferramentas groupware:
Lotus Notes® – LOTUS
Exchange – MICROSOFT
Group Wise – NOVELL
1.1 - LOTUS NOTES®
É um ambiente de computação para grupo de trabalho que ajuda as pessoas a 
trabalharem em conjunto de uma maneira mais eficiente. Com ele, as pessoas podem 
trabalhar juntas, independente da plataforma ou dos limites geográficos, técnicos ou 
organizacionais. As informações baseadas no Notes® podem ser compartilhadas a qualquer 
distância e a qualquer momento. O Notes® é uma ferramenta de comunicação, para suprir a 
necessidade de automatizar o ambiente de trabalho fazendo com que os documentos fluam 
normalmente, seguindo um fluxo lógico de acompanhamento a eles.
 MODO INTELIGENTE DE SE COMUNICAR, COOPERAR E COORDENAR 
1.2 - SERVIDORES DO NOTES® E ESTAÇÕES DE TRABALHO
O Notes® consiste em dois programas principais: Servidor e Estação de Trabalho. 
O Servidor do Notes®: Um computador que executa o OS/2, Windows/NT ou UNIX - 
fornece serviços a usuários da estação de trabalho do Notes® e 
a outros servidores do Notes®, inclusive armazenamento de 
bancos de dados compartilhados e transferência de mensagens.
A Estação de Trabalho do Notes®: Um computador que executa o software do sistema 
Windows/NT, OS/2, Macintosh ou UNIX - comunica-
se com os servidores do Notes®, de modo que você 
possa usar os bancos de dados compartilhados e ler 
e enviar mensagens.
1.3 – USUÁRIOS NOTES®
Administradores: Gerenciam os usuários, as redes e os bancos de dados do Notes® para 
assegurar que todos estejam acessando corretamente os bancos de 
dados.
Designers: Criam e modificam os bancos de dados (aplicativos) para que os usuários 
possam compartilhar informações de maneira eficaz.
Usuários: Criam, editam e compartilham documentos com outros usuários do Notes®.
 
CAPÍTULO 1 – LOTUS SCRIPT BÁSICO
• LotusScript Básico
LotusScript é uma linguagem de programação que estende as capacidades de 
desenvolvimento de aplicações da Lotus, particularmente, Lotus Notes. LotusScript se 
assemelha a Visual Basic (VB) e se você está familiarizado com VB, então aprender 
LotusScript é fácil.
• Sintaxe usada no LotusScript
Variáveis do LotusScript, tipos de dados, estrutura de dados estrutura, operadores, 
funções e subs, laços e condicionais, cadeia de caracteres, funções de data/hora, 
arquivos,... são cobertos.
Neste capítulo você irá aprender sobre o LotusScript, a linguagem de programação 
usada nos produtos da Lotus. O capítulo abrange LotusScript básico e sua sintaxe e 
estrutura. O que você aprender neste capítulo pode ser usado em qualquer produto Lotus 
que use o LotusScript. 
Este Capítulo já assume que você não é leigo em programação e que já tenha 
alguma experiência com linguagens como Visual Basic e outras.
1 O Quê é LotusScript ?
LotusScript é uma linguagem de script básica. Ela primeiramente apareceu no 
Lotus Improv, um produto inovador que foi desenvolvido para Windows em 1992. 
Gradualmente, mais produtos Lotus incorporaram o LotusScript, incluindo Formulários 
Notes e Lotus Notes Vip ( que foi vendido posteriormente para Revelation ). 
Neste Capítulo, nós investigaremos os elementos da Linguagem LotusScript de 
uma forma prática. Serão usados exemplos para facilitar o aprendizado. Nós começaremos 
com “ Como adicionar comentários ao seu código”.
2 Adicionando Comentários ao seu Código
O primeiro e mais importante assunto para aprender em uma linguagem de 
programação é a maneira de acrescentar comentários ao seu código. 
As linhas de comentários iniciam com apóstrofo. De fato, qualquer coisa após um 
apóstrofo é considerado como um comentário e você pode facilmente adicionar comentários 
no final da linha. Você também pode usar %REM and %END REM para blocos de linhas de 
comentários como mostra o exemplo:
‘ Uma linha simples de comentário . . .
‘ . . . e outra
%REM
A primeira linha de um comentário com múltiplas linhas
A última linha de um comentário com múltiplas linhas
%END REM
 
DICA
É importante que você use comentários em suas linhas de programação para facilitar a 
manutenção do programa por você e também por uma outra pessoa que venha a 
assumir suas tarefas.
3 Entendendo as Variáveis do LotusScript
No LotusScript, como em qualquer linguagem de programação, as variáveis são 
usadas para armazenar e manipular dados. Existem algumas regras que devem ser 
seguidas quando da nomeação das variáveis no LotusScript: 
• O primeiro caracter deve ser uma letra;
• Os demais caracteres podem ser letras, números,...;
• Os nomes das variáveis podem ter no máximo 40 caracteres;
• Não existe distinção entre nomes maiúsculos e minúsculos.
Estas regras básicas são aplicadas também a nome de constantes, tipos, 
classes, funções, procedimentos, subrotinas e propriedades.
4 Constantes no LotusScript
Muitas constantes são criadas para tornar seu programa mais fácil. A tabela 
1.0 abaixo mostra estas constantes.
Tabela 1.1 Constantes do LotusScript
Constante
s
Descrição
FALSE O valor boleano é falso. Representada por 0
TRUE O valor boleano é verdadeiro. Representado por -1.
NULL Para variáveis do tipo variante, indica que a variável não tem valor
NOTHING Para variáveis que podem se referenciar a um objeto, indica que a 
variável não está se referenciando a um objeto
PI Do termo matemático π =~ 3,14
Algumas constantes programadas são definidas em arquivos especiais que você 
pode incluir em seus scripts. Estes arquivos são conhecidos como “include files” e têm a 
extensão .LSS que significa “LotusScript Source file “. Use a diretiva %INCLUDE na sessão 
de declaração para incluir o arquivo .LSS. Veja o exemplo abaixo:
%INCLUDE “ LSCONST.LSS ”
 
Estas constantes tornam seu programa mais legível. Por exemplo, MB_OK e 
MB_OKCANCEL podem ser usados na função MsgBox. 
DICA
Quando o Notes é instalado na forma padrão, todos os arquivos .LSS são 
armazenados no diretório de programas do Notes. Para saber mais sobre estes 
arquivos e suas constantes, veja-os em um editor de texto como o Bloco de Notas. 
Você pode definir suas próprias constantes usando a declaração de constantes. É 
uma maneira para tornar seu código mais legível. Por exemplo, para definir constantes que 
definam tamanhos de produtos, você pode definir o fragmento de código seguinte: 
Const SIZE_SMALL = 1
Const SIZE_MEDIUM = 2
Const SIZE_LARGE = 3
Por conversão, todos os nome de constantes são capitalizados. 
5 Entendendo Tipos de Dados
Todas as variáveis no LotusScript têm um tipo associado a elas. Este tipo define, 
basicamente, duas coisas:
• Quanto de espaço deve ser reservado para os dados que estão armazenados 
nas variáveis;
• Que tipo de expressões podem usar as variáveis.
Para esclarecer melhor, uma vez declarada a variável do tipo inteira, o LotusScript 
reserva dois bytes para o seu valor ser armazenado na variável e verifica que a variável só 
pode ser usada em expressões para valores inteiros.
LotusScript suporta os tipos de dados na tabela 2.0 abaixo:
Table 1.2 Tipos de Dados do LotusScript
Tipo de Dado Número de Bytes Armazenados Sufixos
Integer 1 %
Long 4 &
Single 4 !
Double 8 #
Currency 8 @
String 2 por caracter $
Variant 16 Nenhum
6. Declarando Variáveis
 
Não é necessário declarar uma variável porque na primeira vez que você usa uma 
nova variável, LotusScript declara ela para você automaticamente como uma variável do 
tipo Variant.
DICA
Sempre declare as variáveis nasessão de declaração geral. Isto força a declaração 
de todas as variáveis que você usa e ajuda você quando da depuração do programa
Você declara as variáveis usando a expressão Dim. Por exemplo, o fragmento de 
código seguinte declara três variáveis: iCont como inteiro, strName como string e curPrice 
como currency:
Dim iCount As Integer
Dim strName As String
Dim curPrice As Currency
Você pode adiciona qualquer dos sufixos mostrados na tabela 2.0 para declarar as 
variáveis. Veja o exemplo abaixo:
Dim sRatio!
Dim dLimit#
DICA
Não é bom usar sufixos quando declara variáveis. Isto torna seu código mais difícil 
de entender por alguém que não sabe que, por exemplo, ! quer dizer uma variável single.
Se não é explicitado o tipo da variável, é atribuído a ela o tipo Variant. As duas linhas 
abaixo declaram variáveis com Variant:
Dim varFontTipe As Variant
Dim varFontName
DICA
É bom que o programador pratique todos os tipos de variáveis quando possível. Isto 
tira qualquer dúvida sobre o tipo de variável que você deve usar e faz seu código mais fácil 
de sofrer manutenção.
Veja que o prefixo que adotamos faz parte do nome da variável. Apesar dele não ser 
necessário, ele ajuda a você checar que você está usando a variável correta na expressão. 
Por exemplo, só em olhar o nome das variáveis no seu código, você estará constatando se 
as variáveis usadas na expressão são do mesmo tipo. 
Os prefixos são variados entre os diversos programadores. A tabela 1.3 mostra 
exemplos de prefixos.
Tabela 1.3 Sugestões de Prefixos para Nomes de Variáveis
 
Data Type Prefix Example
Integer I IDocsDeleted
Long L LFilesLength
Single S SWeightCoefficient
Double D DAcceleration
Currence Cur CurSalaryIncrease
String Str StrDocTitle
Variant Var VarName
7 Convertendo Tipos de Dados
Em muitos casos, quando você atribui dado de um tipo para uma variável de um tipo 
diferente, LotusScript automaticamente converte o dado para você. LotusScript converte 
dados de tipos diferentes usando a sequência de tipos seguintes: Integer, Long, Single, 
Double e Currency.
Se você usar variáveis do tipo long e do tipo single em uma mesma expressão, 
LotusScript converte o valor long em um valor single antes de prosseguir na expressão. 
LotusScript possui um conjunto de funções que convertem variáveis em diferentes 
tipos. As funções são listadas na tabela 1.4 e permite a você:
• Converter dados de um tipo para outro;
• Converter números em cadeias;
• Converter cadeias em números;
• Checar o tipo de dado de uma variável.
Tabela 1.4 Funções de Conversões de Dados
Funções Descrição
Bin$ Converte o número fornecido em uma String que representa seu valor 
binário
Ccur Converte o valor fornecido em Currency
CDat Converte o valor fornecido em Variant do tipo data
CDbl Converte o valor fornecido em Double
CInt Converte o valor fornecido em Integer
CLng Converte o valor fornecido em Long
CSng Converte o valor fornecido em Single
CStr Converte o valor fornecido em String
DataType Retorna um valor Integer que representa o tipo de dado do valor fornecido
Hex$ Converte o número em uma String que representa seu valor hexadecimal
Oct$ Converte o número em uma String que representa seu valor octal.
Str$ Converte um número em uma String.
TypeName Retorna uma String que representa o tipo de dado do valor fornecido
Val Converte a String fornecida em um número do tipo Double.
7.1 Convertendo Dados de um Tipo para Outro
Use CCur, CDat, CDbl, CInt, CLng, CSng e CStr para converter dados de um tipo 
para outro. Geralmente, você faz conversões de tipos para Ter certeza que o resultado de 
 
um cálculo é de um certo tipo. Por exemplo, o fragmento de código seguinte mostra como 
ter certeza que o preço calculado retorna um valor do tipo Currency:
Dim iQuantidade As Integer
Dim curPreco As Currency
Dim curTotal As Currency
CurTotal=CCur(iQuantidade + curPreco)
7.2 Convertendo um Número em uma Cadeia de Caracteres
O LotusScript tem funções que convertem números em cadeias. Str$ converte o 
valor numérico dado em cadeia, acrescentando um espaço no início se o número for 
positivo. Se você não quer espaços, use a função CStr O exemplo seguinte imprime “ 143”:
Print Str$(143)
As funções Bin$, Hex$ e Oct$ convertem os números fornecidos em cadeias que 
contêm a representação binária, hexadecimal e octal de cada um respectivamente. O 
exemplo seguinte imprimi “101”:
Print Bin$(5)
7.3 Convertendo Cadeia de Caracteres em Número
Use a função Val para converter uma cadeia em um número. A função Val retorna 
um valor Double contendo a representação numérica da cadeia.
7.4 Checando o Tipo de Dado de uma Variável
Existem duas funções que checam o tipo de dado de uma variável: DataType e 
TypeName. DataType retorna um integer representando o tipo de dado da variável ou 
expressão sendo checada. O arquivo LSCONST.LSS contem um conjunto de constantes 
pré-declaradas que você pode usar para interpretar o valor retornado por DataType. 
TypeName é semelhante a DataType exceto que ao invés de retornar um inteiro, ele retorna 
uma String descrevendo o tipo de dados. Veja o exemplo seguinte:
Dim strNome As String
Print TypeName(StrNome)
8 Estrutura de Dados do LotusScript
LotusScript suporta estrutura de dados comuns de arrays e listas. Ele também 
suporta estruturas de dados orientadas a objeto; por exemplo, você pode criar suas classes, 
métodos e propriedades. Você também pode usar LotusScript para trabalhar com objetos 
OLE e ActiveX. 
8.1 Arrays
 
No LotusScript, você pode declarar dois tipos de arrays, estáticas e dinâmicas. 
Uma array estática é uma array de tamanho fixo, contento um número fixo de elementos. 
Você pode criar e deletar elementos. Uma array dinâmica pode ser redimensionada a 
qualquer hora; você pode torná-la maior e menor adicionando e removendo elementos. Veja 
a tabela 1.5 com as funções que você pode usar para trabalhar com arrays.
Tabela 1.5 Funções de Arrays
Comandos ou Funções Descrição
Dim Declara uma array estática e inicializa seus elementos
Erase Inicializa cada elemento de uma array fixa. Para arrays 
dinâmicas, deleta todos seus elementos
IsArray Dado uma variável ou expressão, Retorna verdadeiro se uma 
expressão for uma array
Lbound Retorna o menor índice de uma array
ReDim Declara uma array dinâmica e aloca espaço para seus 
elementos ou modifica o tamanho de uma array dinâmica 
existente
Ubound Retorna o maior índice de uma array
Você declara uma array estática usando o comando Dim. Você especifica o 
seguinte:
• O número de dimensão para array;
• O limite ( dimensão ) da array;
• O tipo de dado a ser armazenado.
Dim aloca espaço para a array e automaticamente inicializa cada elemento com um 
valor padrão. Até que você especifique outro, o primeiro elemento de uma array tem o 
índice 0. Se preciso, você pode mudar seu padrão para 1, usando a expressão “Ooption 
base 1”. As declarações abaixo declaram variáveis estáticas:
Dim strNome(9) As String ‘ Declara 10 elementos com índices de 0 a 9
Dim iMatriz(9,9) As Integer ‘ Declara 100 elementos
Dim iVetor(1 to 50) As Integer ‘Declara 50 elementos com índices de 1 a 50
Você também pode usar Dim para declarar arrays dinâmicas. Porém, quando você 
declarar uma array dinâmica usando Dim, especifique apenas o tipo. Você não especifica o 
número de elementos da array e não é alocado espaço para a array. Antes de usar uma 
array dinâmica, você tem que usar o comando ReDim para alocar algum espaço para seus 
elementos. Por exemplo, o código abaixo mostra como declarar uma array dinâmica e 
alocar agum espaço para ela: 
Dim iElemento As Integer ‘ Declara o número de elementos a ser usado
Dim strVetor() As String ‘ Declara a array dinâmica
IElemento = 25
 
ReDim strVetor(iElemento) ‘ Aloca para este número de elementos
Você pode também declarar e inicializar uma arrayusando ReDim. Por exemplo, 
para declarar uma array contento seis elementos do tipo Integer e inicializar cada elemento 
com 0, use o seguinte código:
Option Base 1 ‘ Especifica que o primeiro elemento de qualquer array tem o índice 1
ReDim var Peso(6) As Integer ‘ Declara uma array dinâmica com elementos cujos 
índices vão de 1 a 6.
Você pode usar ReDim para redimensionar uma array dinâmica com a opção de 
preservar o conteúdo da array ou reinicializando seus elementos. Por exemplo, se você tem 
uma array dinâmica, iVetor, contendo 50 elementos e você precisa aumentar seu tamanho 
para 100 elementos preservando seu conteúdo corrente, use o seguinte código:
ReDim Preserve iVetor(99)
Se você precisa achar o tamanho de uma array dinâmica em tempo de execução, 
você pode usar as funções LBound e UBound. Use essas funções com o nome de uma 
array e opcionalmente com seu tamanho. LBound retorna o menor índice da array e 
UBound o maior. Por exemplo, após redimensionar iVetor, Lbound(iVetor) é 0 e 
UnBound(iVetor) é 99.
Você pode usar o comando Erase para deletar todos os elementos de uma array 
dinâmica e liberar o espaço usado pela array. Em uma array estática, você pode usar Erase 
para reinicializar cada elemento. 
Você pode atribuir uma array a uma variável do tipo Variant. Consequentemente, 
você pode checar se uma variável contem uma array usando a função IsArray. Se a variável 
ou expressão fornecida é uma array, a função retorna verdadeiro. Por exemplo:
Dim var Icons As Variant
Dim lIconsIDs(255) As Long
Print IsArray(varIcons) ‘ False
VarIcons = lIconIDs
Print IsArray(varIcons) ‘ True
8.2 Listas
Uma lista é similar a uma array e contém um conjunto de elementos. Ela diferencia 
de uma array quando da identificação e uso de seus elementos. Com arrays, você identifica 
seus elementos usando índices. Com lista, você identifica elementos usando uma string. 
Veja a tabela 1.6 que exibe as funções usas com listas:
Tabela 1.6 Funções de Lista
 
Comandos e 
Funções
Descrição
Dim Declara a lista
Erase Para a lista, remove todos os seus elementos. Para elementos da 
lista, remove o elemento da lista
ForAll Laço entre os elementos da lista
IsElement Dado o nome da lista e a string, retorna verdadeiro se a string é 
um elemento da lista
IsList Verifica se a variável é uma lista
LisTag Pode ser apenas usada dentro de um bloco ForAll e retorna o 
nome do elemento da lista
Use Dim para declarar uma lista vazia como se segue:
Dim curAmountOutstanding List As String
Quando você declara uma lista, ela não possui elemento e não é alocado espaço 
para ela. Você adiciona elementos a lista adicionando novas strings. Por exemplo, você 
pode criar dois elementos na lista, cujas strings são ABC e XYZ, usando o código abaixo:
CurAmountOutstanding(“ABC”) = 12.99
CurAmountOutstdanding(“XYZ”) = 52.00
Você usa a string para se referenciar a um elemento da lista da mesma forma que 
você usa um índice para ser referenciar a um elemento de uma array. Por exemplo, para 
somar esses dois elementos que acabamos de criar, veja o código abaixo:
Dim curTotal as Currency
CurTotal = CurAmountOutstanding(“ABC”) + CurAmountOutstanding(“XYZ”)
Use Erase para deletar elementos específicos de uma lista, ou todos os elementos. 
Por exemplo:
Erase CurAmountOutstanding(“ABC”) ‘ Remove o elemento da lista
Erase CurAmountOutstanding ‘ Remove todos os elementos da lista
Caso você queira checar se foi adicionado um elemento a uma lista, usando a 
função IsElement. Forneça a string do elemento procurado e a função retorna verdadeiro se 
o elemento fizer parte da lista. For example:
IsElement(curAmountOutstanding(“XYZ”))
Você também pode checar se uma variável é uma lista. Por exemplo: 
IsList(curAmountOutstanding)
Para percorrer os elementos de uma array, você tipicamente usa um loop para 
percorrer todos os índices da array. No caso de uma lista, você usa um ForAll loop junto 
com a função ListTag. Por exemplo:
 
ForAll varElement In curAmountOutstanding
 
 Print ListaTag(varElement) ; “ owes “ ; varElement
End ForAll
Há pontos importantes que devem ser anotados quando se uma ForAll. No exemplo 
acima, a variável “varElement” é um tipo especial de variável usada pelo LotusScript 
quando executando loops ForAll. No corpo do loop, cada elemento da lista é atribuido a 
variável de referência. Você nunca tem que declarar uma variável de referência; 
LotusScript declara todas as variáveis de referência como variant por você . Se você tentar 
declarar uma variável de referência, aparecerá erro de compilação.
Dentro de um loop ForAll, você pode usar função ListTag para achar a string 
correspondente ao elemento corrente. Esta função só é usada dentro de um loop ForAll.
CUIDADO
LotusScript suporta somente arrays e listas com um tamanho máxio de 64k. Tome 
cuidado com esse limite quando alocar arrays e listas grandes.
8.3 Tipos Definidos pelo Usuário
Você pode definir suas próprias estruturas de dados usando a expressão type. Basta 
fornecer o novo nome do tipo e definir uma ou mais variáveis membro para o tipo.
NOTA
O termo variável membro é usado para referenciar qualquer variável incluída em 
uma definição de tipo de usuário.
Por exemplo, para declarar um novo tipo com três variáveis membros, você poderia 
usar a declaração de tipo seguinte:
Type Custumer
LCustID As Long
StrCusFirstName As String
StrCusSurname As String
CurBalance As Currency
End Type
Você pode então declarar novas variáveis deste tipo; por exemplo:
Dim custNew As Customer
Dim custMailing As List Customer
Dim custMostFrequentBuyers(99) As Customer
 
Você se referencia a uma variável membro usando a forma VarNome.MembroNome 
onde VarNome é o nome da variável do tipo definido pelo usuário e MembroNome é o nome 
da variável membro.
CustNew.lCustID = 14829
CustNew.strCustFirstName = “ Chris “
CustNew.curBalance = 100.00
8.4 Classes e Objetos Definidos pelo Usuário
Você pode definir suas próprias classes e objetos com LotusScript. A declaração de 
classe é semelhante a declaração de tipo, exceto que além de variáveis membros você 
pode definir também procedimentos membros. Você pode definir dois procedimentos 
especiais com classes: New e Delete. New é usado para definir variáveis membros para um 
objeto de uma classe. Delete é definido se você precisa fazer qualquer processo especial 
quando um objeto de uma classe é deletada. O exemplo seguinte mostra uma classe 
simples com 4 variáveis membro e quatro procedimentos membros:
Class custObject
LcustID As Long ‘ variável membro
StrCustFirstName As String 
StrCustSurName As String
CurBalance as Currency
Sub New(Lid As Long, strFirstName As String, strSurname As String, 
curBal As Currency) ‘ Define o construtor
lCustID = lID
strCustFirstName = strFirstName
strCustSurName = strSurName
curBalance = curBal
End Sub
Sub Delete ‘ Define o destrutor
Print “ Customer “ ; strCustfirstName ; “ “ ; strCustSurName ; “ deleted. “ 
 
End Sub
Sub SetBalance(curBal As Currency)
CurBalance = curBal
End Sub
 
Function curQueryBalance As Currecy
CurQueryBalance = curBalance
End Function
End Class
Você usa Dim para declarar variáveis objeto. Quando você usa Dim com um nome 
de uma classe, você está declarando uma referência a um objeto. Então, use New para criar 
um novo objeto e Set para atribuir o objeto à variável referenciada. Por exemplo:
Dim custNew As custObject
Set custNew = New custObject(14829, “ Chris “, “ Edwards “, 100.00)
Por default, a variável membro criada é privada para a classe enquanto a função 
membro é pública. Isto é, você não pode se referenciar diretamente a uma variável membro, 
mas a uma função você pode. Por exemplo: 
CustNew.SetBalance(50.00) ‘ Certo
CustNew.curBalance = 50.00 ‘ Errado
CurCurrentBalance = custNew.curQueryblance ‘ Certo
CurCurrentBalance = custNew.curBalance ‘ Errado
O comandoWith permite um meio diferente de acessar procedimentos públicos e 
variáveis membros de um objeto. Por Exemplo:
With custNew
Call .SetBAlance(50.00)
CurCurrentBalance = .curQueryBalance
End With
Você pode deletar um objeto usando a função Delete como mostrado:
Delete custNew
Se você tem definido uma subrotina Delete na sua classe, ela é executada antes do 
objeto ser excluído.
Por exemplo, quando você exclui o objeto no seu exemplo, a subrotina Delete 
mostra “ Customer Chris Edwards deleted “. Veja a tabela 1.7 que exibe comandos e 
funções que são usadas com classes e objetos.
Tabela 1.7 Funções e Comandos de Classes e Objetos
 
Comandos e Funções Descrição
Class Usado para declarar uma classe de objeto definido pelo usuário
Delete Executa a subrotina Delete para objetos definidos pelo usuário
IsObject Retorna verdadeiro se a expressão fornecida for um objeto
New Usado para criar um novo objeto definido pelo usuário
Set Associa um objeto a uma variável
With Usado para acessar procedimentos públicos e variáveis de objeto
8.5 Objetos OLE e ActiveX
Você pode acessar as classes, métodos, e propriedades de objetos OLE e ActiveX 
usando LotusScript e Notes. Isto quer dizer que você pode usar Notes para transferir 
dados de aplicativos como Microsoft Excel and Lotus WordPro, então trabalhar com os 
dados usando classes de objetos da aplicação. Você também pode programar objetos 
ActiveX como Lotus Components diretamente do LotusScript. A tabela 1.8 exibe comandos 
e funções para objetos OLE e ActiveX.
Tabela 1.8 Funções e comandos de objetos OLE e ActiveX
Comandos e Funções Descrição
CreateObject Dado o nome de uma classe de objeto OLE, Cria um objeto OLE
GetObject Dado o caminho de uma arquivo e o nome de uma classe OLE, 
abre um objeto OLE a partir de um arquivo
IsObject Retorna verdadeiro se a expressão fornecida for um objeto
Set Associa um objeto a uma variável
Você pode criar um novo objeto OLE ou ActiveX usando a função CreatObject. Basta 
fornecer o nome da classe do objeto que você quer criar e o LotusScript cria o objeto. Se 
necessário, LotusScript iniciará a aplicação requerida para criar o objeto. O exemplo 
seguinte mostra como criar um nove documento WordPro e salvá-lo:
Dim objDoc As Variant
Set objDoc = CreateObject( “ WordPro.Application”)
ObjDoc.NewDocument “ “, “ “, “C:\Docs\EBS.MWP”, “ “ “ “ “ “ 
‘ Atualizando o documento aqui . . .
objDoc.SaveAs “C:\Docs\REPORT.LWP”, “ “, “ “, False, True, False 
Call objDoc.Close(False)
Para abrir um objeto existente, use GetObject. Você fornece o caminho do arquivo 
contento o objeto e opcionalmente o nome da classe. LotusScript acha e abre o objeto. O 
exemplo seguinte mostra como abrir um objeto WordPro:
Dim objDoc As Variant
‘ Abre um documento WordPro
Set objDoc = GetObject(“C:\DOCS\REPORT.LWP”)
 
9 Entendendo Operadores LotusScript
No LotusScript, os operadores são usados para realizar os seguintes tipos de 
funções:
• Aritmético;
• Lógico;
• Comparação;
• Concatenação.
Tabela 1.9 Operadores Aritméticos
Operador Descrição Exemplo Resultado
- Número negativo -34 -34
 - Subtrai dois números 7 – 5 2
 + Adiciona dois números 5 + 9 14
* Multiplica dois números 7 * 6 42
/ Divide dois números 16 / 5 3.5
\ Divisão de inteiros 16 \ 5 3
Mod Resto de uma divisão inteira 16 Mod 5 1
 ^ Potência de um número 5 ^ 2 25
Tabela 1.10 Operadores de Comparação
Operador Descrição Exemplo Resultado
= Retorna verdadeiro se dois valores são iguais 5 = 6 False
 <> >< Retorna verdadeiro se dois valores não são iguais 5 <> 6 True
 < Retorna verdadeiro se um valor é menor que o 
outro
7 < 9 True
 > Retorna verdadeiro se um valor é maior que o outro 7 > 9 False
 >= => Retorna verdadeiro se um valor é maior ou igual a 
outro
8 >=8 True
 <= =< Retorna verdadeiro se um valor é menor ou igual a 
outro
8 <= 8 True
Is Retorna verdadeiro se dois objetos referenciam-se 
para o mesmo objeto
ObjA Is 
ObjB
True/False
Tabela 1.11 Operadores Lógicos
Operador Descrição Exemplo Resultado
Not Negação lógica Not B Verdadeiro se B é falso; Falso do contrário 
And And lógico A And B Verdadeiro se A e B verdadeiros; Falso do 
contrário
Or Or lógico A Or B Verdadeiro se A ou B verdadeiros; Falso do 
contrário
Xor Or exclusivo A Xor B Verdadeiro se apenas um verdadeiro; Falso 
 
se A e B falsos ou verdadeiros
Eqv Equivalência 
lógica
A Eqv B Verdadeiro se A e B são falsos ou 
verdadeiros; Falso do contrário
Imp Implicação lógica A Imp B Verdadeiro se A falso ou ambos são 
verdadeiros; Falso se A verdadeiro e B falso
Tabela 1.12 Operadores de Strings
Operador Descrição Exemplo Resultado
& Concatena duas strings “AB”+”CD” “ABCD”
+ Concatena duas strings “AB”+ “CD” “ABCD”
Like Retonra verdadeiro se uma string 
combina com outra string 
fornecida
“ABC” Like “A*” True
10 Usando Funções e Subs
No LotusScript, você pode definir funções e subs que serão chamadas para realizar 
funções específicas. Por exemplo, você pode definir uma função que converte uma data 
com dois dígitos de ano para uma data com quatro dígitos. A principal diferença entre uma 
função e uma sub é que a primeira retorna um valor e a segunda não. 
10.1 Declarando funções e subs
Você declara uma função usando a palavra-chave function como se segue:
Function fIsWeekend(iDay As Integer) As Integer
Você dá um nome a função, define a lista de argumentos que serão passados e 
finalmente define o tipo de valor que será retornado. Para retornar um valor, atribua este 
valor ao nome da função como é mostrado no exemplo seguinte:
Function fIsWeekend(varDate As Variant) As Integer
If Weekday(varDate) = 1 Or Weekday(varDate) = 7 then
fIsWeekend = True
Else
fIsWeekend = false
End If
End Function
Para definir subs não é preciso declarar um tipo de retorno. Uma declaração de sub 
típica é mostrada abaixo: 
Sub GoToBeach(strResort As String, iMilesToResort As Integer)
 
10.2 Chamando funções e subs
Para chamar uma função basta atribuí-la a uma variável. Por exemplo:
Dim fGoToWork As Integer
Dim varToday As Variant
VarToday = Today ‘ A função “ today ” retorna a data de hoje
FGoToWork = fIsWeekend(varToday)
Para chamar uma sub você pode usar um dos seguintes métodos:
Call SubName(Arg1, Arg2, ...)
Call SubName Arg1, Arg2
SubName(Arg1, Arg2, ....)
Por exemplo:
If fISWeekend(varToday) then
Call GotoBeach(“ Maui “, 4000)
End If
Quando você passa valores a subs e funções, você precisa saber das duas 
seguintes maneiras que o LotusScript pode passar argumentos:
• Por referência: LotusScript passa uma referência do argumento. A função 
trabalha com o argumento. Qualquer mudança feita no argumento reflete no 
original;
• Por valor: LotusScript passa uma copia do argumento para a função. A função 
trabalha com a copia. Qualquer mudança na copia não afeta o original.
Alguns argumentos, como arrays, listas e objetos são sempre passados por 
referência. Se você sempre quer um argumento passado por valor, use a palavra-chave 
ByVal quando você declara o argumento na declaração de uma função ou sub. No exemplo 
seguinte, o segundo argumento é passado por valor:
Sub DeleteDocument(iDocNumber As Integer, ByVal strDocTitle As String)
11 Loop e Branch
LotusScript proporciona uma variação de caminhos para controlar o fluxo de 
execução de um código. Você pode usar loops para executar repetidamente um conjunto de 
expressões (comandos) a partir de uma certa condição. Você pode usar branches para 
executar partes diferentes de um código baseado nos resultados de comparações ou no 
valor de variáveis.
 
11.1 For...Next Loops
Você usa For...Next loop para executar um conjunto de expressões um certo número 
de vezes. Você especifica:
• Uma variável de controle do loop;
• Um valor inicial para a variável;
• Um valor final para a variável;
• Um valor de passo que será adicionado a variável depois de cada execução do 
loop. Se não especificado, o padrãoé 1.
A primeira vez que o loop é executado, a variável de controle tem o valor inicial. 
Depois de cada execução, a variável de controle é atualizada adicionando o valor de 
passosa variável. Se você usa um valor de passo positivo, o loop acaba quando a variável 
de controle é maior ou igual ao valor final. Por exemplo:
Dim iCount As Integer
For iCount = 1 To 10 Step 2
‘ Faz alguma coisa
Next
Neste exemplo, o loop é executado 5 vezes com iCount tendo os valores 1, 3, 5, 7 e 
9.
11.2 ForAll Loops
Nós já tivemos um primeiro contato com este tipo de loop quando falamos do uso de 
listas no LotusScript. Porém, você não usa ForAll loops apenas com listas. Por exemplo, 
você pode usá-lo para percorrer todas as visões de um banco de dados Notes:
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
ForAll varView In db.Views
‘ Faz alguma coisa
End ForAll
11.3 Do...While Loops
Use este tipo de loop para executar um bloco de expressões repetidamente 
enquanto uma condição especial é verdadeira. Antes do loop ser executado, a condição é 
testada. Se for verdadeira, o bloco é executado então. Se a condição for falsa, o loop não 
 
será executado e o controle é passado para a próxima expressão ou comando depois do 
loop. Por exemplo, o loop seguinte é executado três vezes e mostra 17, 18 e 19:
Dim iCount As Integer
Dim iMax As Integer
iMax = 20
iCount = 17
Do While iCOunt < iMax
Print iCount
iCount = iCount + 1
Loop
Uma alternativa para o loop acima é testar a condição depois do loop ser executado. 
Aqui, o loop é executado pelo menos uma vez. Por exemplo:
Dim iCount As Integer
Dim iMax As Integer
iMax = 20
iCount = 17
Do 
Print iCount
iCount = iCount + 1
Loop While iCOunt < iMax
11.4 Do...Until Loops
Com este tipo de loop, o conjunto de expressões dentro dele é executado até que 
sua condição seja verdadeira. Veja o exemplo:
Dim iCount As Integer
Dim iMax As Integer
iMax = 20
iCount = 17
Do Until iCount < iMax
Print iCount
 
iCount = iCount + 1
Loop
Neste exemplo o loop nunca será executado porque a condição é verdadeira antes 
de entrar no loop. A condição pode ser executada depois do loop ser executado. Aqui, o 
loop também é executado pelo menos uma vez. Por exemplo:
Dim iCount As Integer
Dim iMax As Integer
iMax = 20
iCount = 17
Do 
Print iCount
iCount = iCount + 1
Loop Until iCount < iMax
11.5 If...Then...Else branches
Você pode usar If...Then...Else para selecionar qual expressão ou comando que é 
executado a partir de uma condição específica. Se a condição for verdadeira, um conjunto 
de expressões é executada; se a condição for falsa, um conjunto diferente é executado. Por 
exemplo:
If iCount > iMax Then
Print “ Muitos itens “
Else
Print iCount; “ iten(s) “
End If
Você pode omitir a parte Else da expressão se você quer somente 6executar um 
conjunto de expressões quando uma condição é verdadeira. Por exemplo:
If iDaysOverdue > 14
Print “ Tempo de comprar mais peças “
End If
11.6 Select...Case branches
Esta expressão deixa você selecionar um bloco de expressões para executar 
baseado no valor de uma expressão. Por exemplo:
 
Select Case iBoxesOrdered
Case Is <= 0 : Call ProcessInvalidOrder(iBoxesOrdered)
Case 1 : ProcessSmallOrder(iBoxesOrdered)
Case 2 to 15 : Call ProcessMediumOrder(iBoxesOrdered)
Case 16 to 31 : Call ProcessLargeOrder(iBoxesOrdered)
Case Else : Call ProcessHugeOrder(iBoxesOrdered)
End Select
 
11.7 GoSub and On...GoSub
Com uma sub ou uma função, você pode usar GoSub and On...GoSub para desviar 
para uma label específica no procedimento. Uma label é simplismente uma maneira de 
identificar um lugar no seu código. O código na label pode executar um comando de retorno 
para a expressão seguinte ao GoSub. Por exemplo, o código seguinte desvia para label 
lblLogError se a quantidade do pedio for negativa:
Sub ProcessInvalidOrder(iOrderQuantity As Integer)
If iOrderQuantity < 0 Then
GoSub lblLOgError
End If
Exit Sub
lblLogError:
Call LogError
Return
End Sub
Você pode usar On...GoSub para desviar para uma label de um conjunto de labels a 
partir de um valor fornecido. Veja o exemplo:
On iErrorNumber GoSub lblA, lblB, lblC
Se iErrorNumber é 1, o programa desvia para lblA; se iErrorNumber é 2, o programa 
desvia para lblB; se iErrorNumber é 3, o programa desvia para lblC. Se iErrorNumber é 0 ou 
maior que 3, a expressão On...GoSub é ignorada.
A desvantagem de usar o comando GoTo(On...GoTo) ao invés de 
GoSub(On...GoSub) é que naquele não podemos usar o comando return.
12 Trabalhando com Strings
 
LotusSript tem uma grande quantidade de funções que você pode usar para 
manipular string. Nesta sessão nós veremos:
• Criação de SubStrings;
• Formatando Strings;
• Achando e comparando Strings.
A tabela 1.13 exibe uma lista de comandos e funções que você pode usar.
Tabela 1.13 Funções e Comandos para String
Funções e 
Comandos
Descrição
Asc Dado uma string, retorna o código de caracter da string
Chr Dado um código de caracter, retorna o caracter correspondente ao código
Format Formata uma string de acordo com o tipo de formato especificado
InStr Dado duas strings, retorna a posição do caracter(InStr) onde uma string 
ocorre primeiro em outra.
Lcase Converte os caracteres de uma string em minúsculos
Left Dado uma string e um número n, retorna n caracteres mais a esquerda da 
string
Len Retorna o número de caracteres de uma string
Lset Adiciona uma string A a outra B onde A é truncada se for maior que B ou é 
preenchido com espaços a direita quando A menor que B.
Ltrim Remove os espaços excedentes a esquerda de uma string
Mid Retorna uma substring de uma string dado o início e o fim da substring
Right Dado uma string e um número n, retorna n caracteres mais a direita da 
string
Rset Adiciona uma string em uma outra alinhada a direita. Se a primeira for 
maior que a Segunda, é colocado espaços adicionais no seu lado 
esquerdo. Do contrário, só os elementos mais a esquerda da substring 
permanecem na string
Rtrim Remove os espaços em brancos a direita de uma string
Space Adiciona n espaços a um string
StrCompare Compara duas strings de acordo com o método de comparação
Trim Remove espaços a direta e a esquerda de uma string
Ucase Converte os caracteres de uma string em maiúsculos
Uchr Retorna o caracter correspondente a um número no código Unicode
Uni Dado uma string, retorna o código de caracter Unicode, para o primeiro 
caracter na string
Ustring Dado uma dimensão e também um código, Unicode ou um caracter, 
retorna uma string dos caracteres especificados do tamanho fornecido
12.1 Criando strings
Você usa Dim para declarar variáveis do tipo string. O tamanho de uma string pode 
ser fixo ou variado. Veja o exemplo:
Dim strVariableLength As String
Dim strFixedLength As String * 20
 
Como declarado, strFixedLength contem 20 caracteres. Se você quer alterar uma 
string para um tamanho particular após ela ser declarada, você pode usar a função Space$ 
para atribuir a string um número específico de espaços. Por exemplo:
Dim strName As String
StrName = Space$(32)
De forma alternativa, você pode usar a função String$ para atribuir a string qualquer 
número de um caracter específico, código ASCII e UniCode. 
Strname = String$(32, “ x ” )
NOTA
A função Asc retorna o código de caracter ASCII correspondente ao caracter 
fornecido. Da mesma forma, a função Uni retorna o código de caracter Unicode de um 
caracter. Se você realmente sabe o código apropriado, você pode usar o caracter 
correspondente usando Chr para ASCII e Uchr para código Unicode.
12.2 Criando substrings
A partir de uma string você pode usar tipos diferentes de funções para criar 
substrings. Com as funções Left e Left$, você pode substrings consistindo de um número 
específico de caracteres iniciando a esquerda da string. O exemplo seguinte mostra como:
Dim strName As String
Dim strFirstName As String
StrName = “ John G Testar “
StrFirstname = Left$(strName, 4) ‘ O strFirstNamepassa a ser John
Da mesma forma, você pode usar as funções Right e Right$ para extrair caracters 
do lado direito da string. Por exemplo:
StrSurname = Right$(strName, 6) ‘ O strSurName passa a ser Testar
Use as funções Mid e Mid$ para extrair caracteres de qualquer parte da string. Você 
fornece a posição inicial e o número de caracteres como mostrado:
StrMiddleInitial = Mid$(strName, 6, 1) ‘ O strMiddleInitial passa a ser G
Para achar o tamanho de uma string, você pode usar a função Len. Por exemplo:
Dim iLength As Integer
ILength = Len(strName) ‘ A variável recebe o valor 13
NOTA
 
Muitas funções LotusScript têm duas versões, uma que termina com $ e outra que 
não termina com $. Se você usa a primeira versão, o tipo de dado de retorno é String. Se 
você usa a segunda versão, o tipo de dado de retorno é Variant. 
Você pode remover espaços em branco de uma string usando Trim, LTrim, e RTrim. 
Como seus nomes sugerem, Trim remove espaços a esqueda e direita de uma string, LTrim 
remove espaços a esquerda da string e RTrim remove espaços a direita da string. 
CUIDADO
Muitas funções de string tem uma versão que trabalha com caracteres, tal como Left, 
e outra que trabalha com bytes, tal como LeftB. Isto é bom quando um caracter é 
armazenado em um byte. Porém, por causa do método de codificação UniCode usado 
pelo LotusScript representar cada caracter por dois bytes de código de caracter, você 
dever estar precavido ao usar as funções de string orientadas a bytes como LeftB, LenB, 
MidB e RightB. Elas podem dar resultados inesperados com strings Unicode. Use Left, Mid 
e Right ao invés delas. 
12.3 Formatando strings
Você pode mudar os caracteres de uma string para minúsculo usando a função 
Lcase ou para maiúsculo usando a função Ucase. Para formatos mais avançados use a 
função Format. Você pode usar esta função para formatar string, data/tempo ou números de 
acordo com uma string. Se você quer ter certeza que strings estão corretamente alinhadas, 
use as funções LSet ( alinhamento a esquerda ) e RSet ( alinhamento a direita ). Por 
Exemplo:
Dim strLabel As String
StrLabel = Space$(8)
LSet strLabel = “ABC” ‘ Atribui a strLabel “ABC “ porque o tamanho corrente da 
variável é 8.
RSet strLabel = “XYZ” ‘ Atribui XYZ a variável
StrLabel = “ABC”
12.4 Encontrando e comparando strings
Se você precisa encontrar uma string dentro de outra string, você pode usar a função 
Instr para achar a posição do primeiro caracter da string procurada, fornecendo o seguinte:
• A posição inicial onde será feito a busca na string. O padrão é o início da string;
• A string a ser verificada;
• A string a ser procurada;
• Um número para indicar se a procura faz distinção entre caracteres maiúsculos 
e minúsculos ou não.
 
Você pode comparar duas strings usando a função strCompare. Para usuá-la basta 
fornecer o seguinte:
• As duas strings a serem comparadas;
• Um número para identificar o tipo de comparação.
A função retorna:
• -1 se a primeira string é menor que a segunda;
• 0 se as strings são iguais;
• 1 se a primeira string for maior que a Segunda.
13 Manipulação de Datas e Horas
As funções LotusScript que você pode usar para manipular datas e horas são 
mostradas na tabela 1.14
Tabela 1.14 Funções de manipulação de datas e horas
Comandos e 
Funções
Descrição
Date Retorna a data e hora corrente do sistema ou altera a mesma
DateNumber Dado um ano, mês e dia do mês, retorma o valor data/hora 
correspondente
DateValue Dado uma string representando uma data, retorna um um valor data/hora 
correspondente
Day Dado um valor data/hora, retorna o dia do mês
Hour Dado um valor data/hora, retorna a hora
IsDate Retorna verdadeiro se uma expressão dada representa uma data
Minute Dado um valor data/hora, renorta os minutos
Month Dado um valor data/hora, renorta o mês
Now Retorna a data corrente do sistema como um valor data/hora
Second Dado um valor data/hora, renorta os segundos
Time Retorna o hora de sistema corrente como um valor data/hora
TimeNumber Dado uma hora, minuto e segundo, retorna o valor data/hora 
correspondente
Timer Retorna o número de segundos que tenham decorrido desde meia-noite
TimeValue Dado uma string representando uma hora, retorna o valor data/hora 
correspondente
Today O mesmo da função Date
Weekday Dado um valor data/hora, retorna um número representando um dia da 
semana
Year Dado uma valor data/hora, retorna o ano.
Veja os exemplos:
Print DateNumber(1992, 5, 29) ‘ Exibe 5/29/92
 
Print DateValue(“May 29, 1992”) ‘ Exibe 5/29/1992
Print DateNumber(1992-2,5-3,29-12) ‘ Exibe 2/17/90
Print TimeNumber(20,40,3) ‘ Exibe 8:40:3 PM
PrintTimeValue(“20:40”) ‘ Exibe 8:40 PM
DICA
Você pode usar a Função Timer para cronometrar partes de seu programa. Por 
exemplo, para checar quanto tempo é necessário para ler um arquivo grande de um 
servidor de arquivo, chame a função Timer antes e depois de ler o arquivo e subtraia os 
dois valores.
Uma vez tendo um valor data/hora, você pode usar Year, Day, Hour, Minute e 
Segundos para extrair suas partes. Você usa a função WeekDay para retornar um número 
que representa o dia da semana. 
14 Trabalhando com Arquivos
Há muitas maneiras de trabalhar com arquivos usando LotusScript. A tabela 1.15 mostra 
as funções disponíveis.
Tabela 1.15 Funções para arquivos
Comandos e 
Funções
Descrição
Close Fecha um ou mais arquivos abertos.
EOF Indica se chegou o fim do arquivo. A condição exata para determinar o fim 
do arquivo depende do tipo de arquivo a ser lido.
FileAttr Dado um número de arquivo e um flag, retorna o tipo de acesso para um 
arquivo, ou o título de arquivo de sistema operacional para o arquivo.
FileCopy Copia um arquivo.
FileDateTime Dado um nome de arquivo, retorna uma string que contem a data e a hora 
que o arquivo foi criado ou modificado
FileLen Dado um nome de arquivo, retorna seu tamanho em bytes
FreeFile Retorna um número de arquivo que pode ser usado para abrí-lo
Get Usado para ler dados de um arquivo randômico ou binário
GetFileAttr Dado um nome de arquivo ou diretório, retorna seus atributos
Input # Dado um número de arquivo, lê dados de um arquivo sequencial
Input Dado um número de arquivo, lê um número específico de caracteres de 
um arquivo seqüencial ou binário 
InputB Dado um número de arquivo, lê um número específico de bytes de um 
arquivo sequencial ou binário
Kill Deleta um arquivo
Line Input# Dado um número de arquivo, retorna uma linha de um arquivo sequencial
LOC Dado um número de arquivo, retorna a posição do arquivo de ponteiro no 
arquivo
Lock Dado um número de arquivo, loca o arquivo, ou um registro ou uma 
seqüência de bytes de um arquivo. Outro processo não pode atualizá-lo(s).
LOF Dado um número de arquivo, retorna o tamanho do arquivo
 
Name Renomeia um arquivo ou diretório
Open Abre um arquivo
Print # Imprime uma lista de variáveis de um arquivo
Put Escreve dados em um arquivo randômico ou binário
Reset Fecha todos os arquivos abertos
Seek Dado um número de arquivo, retorna a posição atual do arquivo de 
ponteiro. Também, dado um número de arquivo e uma posição, posiciona 
o ponteiro o ponteiro do arquivo de ponteiro
SetFileAttr Altera os atributos de sistema de arquivo de um arquivo
Spc Insere um número específico de espaços em um comando Print ou Print(#)
Tab Move a posição de impressão para uma coluna específica
Width # Usado para especificar o tamanho da linha de um arquivo
Write # Escreve uma lista de variáveis para um arquivo
Unlock Libera um arquivo locado pelo comando Lock. 
LotusScript pode trabalhar com três tipos de arquivos mostrados na tabela 1.16.
Tabela 1.16 Tipos de Arquivos
Tipo de Arquivo Descrição
Seqüencial Um arquivo de texto
Randômico Um arquivo com registros formatados
Binário Um arquivo com uma estrutura de definição de programa
14.1 Obtendo informações de arquivo
Se você tem o nome de um arquivo, você pode usar os comandos GetFileAttr, 
FileDateTime e FileLen para acessar informações de arquivo. Use GetFileAttr para checaros atributos de um arquivo. A função FileDateTime retorna a data de última modificação do 
arquivo e FileLen o tamanho do arquivo em bytes. Por exemplo, o código seguinte checa se 
um arquivo está ocultado, e se estiver, modifica seus atributos de ocultação:
%Incluce “LSCONST.LSS”
Dim iAttributes As Integer
IAttributes = GetFileAttr(“C:\TEMP.TXT”)
If (iAttributes And ATTR_HIDDEN) Then
Call SetFIleAttr(“C:\TEMP.TXT”, ATTR_READONLY)
End If
14.2 Criando e abrindo arquivos
Para abrir um arquivo seqüencial, use os comandos FreeFile e Open. Use FreeFile 
para alocar um novo número de arquivo para o arquivo. Por exemplo, para abrir um novo 
arquivo seqüencial para gravação:
Dim iFileNumber As Integer
IFileNumber = FreeFile
 
Open “C:\RESULTS.TXT” For Output As iFileNumber
Você pode abrir um arquivo seqüencial para leitura e gravação. Um vez o arquivo 
aberto, você usa o número de arquivo para se referenciar a ele. 
Para abrir um arquivo randômico, você usa os comandos FreeFile e Open, e 
especifica as opções randômicas no comando Open. Por exemplo:
Dim iFileNumber As Integer
IFileNumber = FreeFile
Open “C:\RECORDS.DAT” For Random As iFileNumber Len = 80
A função Len é usada para indicar o número de bytes por registro no arquivo. Use a 
opção Binary no comando Open para abrir um arquivo binário. Por exemplo:
Dim iFileNumber As Integer
IFileNumber = FreeFile
Open “C:\RECORDS.DAT” For Binary As iFileNumber
Uma vez tendo aberto o arquivo, você pode usar a função LOF para checar o 
número de bytes no arquivo.
14.3 Lendo arquivos
Você pode usar os comandos Line Input # e Input #, ou a função Input, para ler 
dados de um arquivo seqüencial aberto. Line Input # lê uma linha de dado de um arquivo. 
Por exemplo:
Do Until EOF(iFileNumber)
Line Input #iFileNumber, strInputLine
Loop
A função EOF retorna verdadeiro quando chega no fim do arquivo. 
Use Input # para ler dados de uma linha em um arquivo e colocá-la em um conjunto 
de variáveis. Por exemplo, se seu arquivo tem linhas no formato:
14829, “Chris”, “Edwards”, 100.00
25674, “Marlene”, “Metcalfe”, 850.00
Você pode usar o código abaixo para ler a linha de um arquivo:
Dim lID As Long
Dim strFirstName As String
Dim strSurname As String
 
Dim curBalance As Currency
‘ . . . Abre um arquivo como no exemplo anterior
Input #iFileNumber, lID, strFirstName, strSurName, curBalance
A função Input é outra opção para ler dados de um arquivo sequencial. Com Input, 
você fornece o número de caracteres a ler. Por exemplo, você poderia ler o número de ID 
do início de uma linha no arquivo usando o código seguinte:
StrID = Input$(5,iFileNumber)
Quando você está trabalhando com arquivos binários ou randômicos, use os 
comandos Seek e Get para achar e ler registros de um arquivo.
14.4 Escrevendo em arquivos
Você pode usar Write # para escrever os conteúdos de um conjunto de variáveis 
para um arquivo seqüencial. Por exemplo, para escrever uma linha em um arquivo aberto:
Dim strFirstName As String
Dim strSurname As String
Dim curBalance As Currency
‘ . . . Abre o arquivo para gravação como no exemplo anterior
‘ . . . Adiciona valores para as variáveis
Write #iFileNumber, lID, strFirstName, strSurname, curBalance
Write # automaticamente adiciona caracteres formatados para a linha de gravação 
onde os valores estarão separados por vírgulas. Você também pode usar o comando Print # 
para escrever dados em um arquivo sequencial. Porém, quando você usa Print #, você deve 
adicionar seus próprios caracteres formatados. Há poucas funções que você pode usar com 
Print # para ajudar a formatar a linha. Use Spc para adicionar um número específico de 
espaços na linha e Tab para mover a posição de impressão para uma posição específica na 
linha. Por exemplo:
StrFirstName = “Pat”
StrSurname = “Green”
Print #iFileNumber, “*”; Tab(4); strFirstname; Spc(2); strSuname;”*”
‘ Grava Pat Green
Use Put para escrever dados em arquivos binários ou randômicos. 
Em alguns casos você pode querer bloquear acesso a um arquivo até seu programa 
terminar de usá-lo. LotusScript proporciona os comandos Lock e UnLock para você fazer 
isso.
14.5 Fechando arquivos
 
Ao terminar de usar um arquivo, você pode fechá-lo usando o comando Close. Se 
você quer fechar todos os arquivos que estão abertos, você pode usar o comando Reset.
14.6 Excluindo arquivos
Para deletar um arquivo use o comando Kill. Use o comando com o nome do arquivo 
como se segue:
Kill “C:\TEMP.TXT”
15 Leitura/Gravação
Quando você está usando LotusScript com Notes, você muitas vezes usa 
formulários Notes para obter informações de usuários e exibir os resultados. Mas, algumas 
vezes, você precisa usar métodos diferentes para se comunicar com o usuário. As funções 
mostradas na tabela 1.17 oferece a você algumas alternativas:
Tabela 1.17 Funções de Leitura/Gravação
Comandos e 
Funções
Descrição
Beep Alarma 
InputBox Mostra uma caixa de diálogo onde o usuário pode entrar com um 
valor
MessageBox Mostra uma caixa de mensagem ao usuário
Print Escreve algum texto na barra de status do Notes
Use InputBox para mostrar uma caixa de diálogo com um campo de entrada. O 
usuário pode entrar com uma string no campo e clicar OK. Você pode acessar a string 
digitada como se segue:
StrName = InputBox$(“ Por favor, entre com su nome “)
Se você quiser, você pode espesificar um título para a caixa de diálogo. Por 
exemplo:
IOrderQuantity = Cint(InputBox$(Entre com a quantidade requisitada”, “ Quantidade 
requisitada”, “10”)
Você pode mostrar valores de seu código usando tanto a função MessageBox como 
Print. Use MessageBox para exibir uma caixa de diálogo contento uma mensagem de sua 
escolha. Por exemplo, se você quer mostrar uma mensagem para confirmar o pedido, você 
pode usar:
MessageBox( “Você está para confirmar um pedido ” & & CStr(iOrderQuantity) & “ 
Está correto?”, MB_YESNO, “ Confirmar pedido “)
A constante MB_YESNO é uma entre muitas constantes relativas a função 
MessageBox, definida no arquivo LSCONST.LSS. Constantes adicionais estão disponíveis 
 
e você pode usar para adicionar ícones e botões a caixa de diálogo. Veja a ‘MsgBox 
parameters’ no arquivo LSCONST.LSS para mais detalhes.
A função Print exibe uma linha de texto na barra de status do Notes. Isto pode ser 
bastante interessante se você está escrevendo um agente LotusScript que pode levar 
algum tempo para executar, porque isto pode lhe dar uma forma para manter o usuário 
informado sobre o progresso do agente. Por exemplo, em um agente que processa 
documentos em um banco de dados, você pode usar:
Print “ Documento processando “ & CStr(iCurDoc) & “ de “& CStr(iTotalDocs) & 
“ . . . 
O código fica dentro do loop de processamento principal mostrando uma constante 
atualização da mensagem contida na barra de status.
16 Funções Mátemáticas
As funções matemáticas do LotusScript são mostradas na tabela 1.18
Tabela 1.18 funções matemáticas
Comandos e 
Funções
Descrição
Abs Retorna o valor absoluto de um número
Acos Dado um número entre 1 e –1, retorna seu arco coseno em 
radianos
Asin Dado um número entre 1 e –1, retorna seu arco seno em radianos
Atn Dado um número, retorna sua arco tangente em radianos
Atn2 Dado as coordenadas de um ponto no plano cartesiano, retorna o 
ângulo em radianos
Cos Dado um ângulo em radianos, retorna seu coseno 
Exp Dado um número, retorna o exponencial de um número
Fix Retorna a parte inteira de um número
Fraction Retorna a parte fracional de um número
Int Retorna o número inteiro que é menor ou igual ao fornecido
Log Retorna o logarítmo natural de um número
Round Arredonda um número
Sgn Retorna –1, 0 ou 1 se o número for negativo, zero ou positivo
Sin Dado um número em radianos, retorna seu seno
Sqr Retorna a raiz quadrada de um número
Tan Dado um ângulo em radianos, retorna sua tangente
16.1 Ocultando Erros em Tempo de Execução
LotusScript detecta dois tipos de erros:
• Erros de compilação;
• Erros em tempo de execução.
Erros de compilação são devidoerros em seu código de LotusScript. Você não pode 
executar seu código até consertar todos os erros de compilação detectados. Nós olharemos 
o Ambiente de Desenvolvilmento Integrado do Notes (IDE) no próximo capítulo e verificar 
 
algumas das características que ajudam a reduzir o número de erros de compilação que 
você deve consertar.
Erros em tempo de execução são erros que ocorrem quando o código está em 
execução. Por exemplo, erro ocorre quando o script tenta abrir um arquivo que foi deletado. 
LotusScript identifica muitos erros em tempo de execução e atribui a cada um um número 
e uma mensagem de erro descrevendo o erro. Você pode adicionar código aos seus 
programas para proporcionar ocultação especial para todos os erros. Você pode definir seus 
próprios erros se quiser e atribuir um número de erro e uma mensagem. A tabela 1.19 
mostra as funções que estão relacionadas com ocultação de erros.
Tabela 1.19 Funções de ocultação de erros
Comandos e 
Funções
Descrição
Erl Retorna o número da linha do erro mais recente
Err Retorna o número do erro dependendo como ele ocorra
Error Retorna uma mensagem do erro dependendo como ele ocorra
On Error Desvia a execução do código para uma função quando ocorre um erro
Resume Determina onde o programa recomeça a execução de pois de um erro
Além de detectar um erro em tempo de execução, o LotusScript armazena as 
seguintes informações:
• O número da linha onde ocorreu o erro;
• O número do erro;
• A mensagem de erro.
Você pode usar a função Erl para obter o número da linha onde ocorreu o erro mais recente. 
A função Err retorna o número de erro mais recente e Err$ a mensagem de erro associada.
Uma vez o LotusScript tendo armazenado estas informações, ele procura por um 
comando On Error, no procedimento corrente, que possa ocultar o erro. Se ele não achá-lo, 
o LotusScript mostra sua própria mensagem de erro associada ao erro que parou a 
execução do script. Se um comando On Error for achada, LotusScript transfere o controle 
para ele.
O comando On Error pode também fazer o seguinte:
• Ignorar o erro. Se você especificar On Error Resume Next, é ignorado a linha 
onde ocorreu o erro e executada a linha logo depois;
• Especifica uma Label para executar seu código. Se você especificar On Error 
Go To seguido do nome de uma label, o LotusScript transfere o controle para o 
código na label. O código deve ocultar o erro. Use o comando Resume para 
reiniciar o script.
O exemplo seguinte mostra como definir seu próprio erro e criar um código que 
oculte o erro. O exemplo Sub define um erro com número 600 e inicializa a rotina de 
ocultação do erro que mostra o número do erro e o número da linha onde ocorreu o erro. O 
controle é então retornado para a linha seguinte a que ocorreu o erro forçado:
Sub ErrorTest
 
Const ERR_MY_ERROR = 600 ‘ Define um erro
On Error ERR_MY_ERROR GoTo lblHandleError ‘ Define o comando que vai 
detectar este erro
Error ERR_MY_ERROR ‘ Força o erro
Print “Finished” ‘ Retorna a execução para este ponto
Exit Sub
LblHandleError:
Print “ Número do erro “; Err; “ ocorreu na linha “ ; Erl
Resume Next
End Sub.
 
CAPÍTULO 2 - USANDO O LOTUS SCRIPT NO LOTUS NOTES
• Aprenda como usar o Ambiente de Desenvolvimento Integrado do Notes 
para usar o LotusScript.
Você usa o Ambiente de Desenvolvimento Integrado para entrar, compilar e depurar 
seus programas do LotusScript.
• Aprenda como usar o editor Script.
O editor Script permite a você entrar e atualizar scripts. Ele entende a sintaxe do 
LotusScript e lhe ajuda formatando automaticamente seu código e checando erros de 
sintaxe à medida que você digita.
• Aprenda como usar o depurador do LotusScript.
O depurador do LotusScript é uma poderosa ferramenta que você pode usar para 
examinar seus programas LotusScript que estão rodando. Você pode percorrer seu código 
uma linha por vez, se necessário, bem como checar e atualizar conteúdos de variáveis a 
qualquer momento. 
• Veja as técnicas de depuração do LotusScript.
Examinamos algumas técnicas úteis que você pode utilizar quando está testando e 
depurando programas LotusScript.
• Entendendo como acessar bibliotecas de links dinâmicos no LotusScript
Você pode extender o poder do LotusScript chamando as funções dentro de 
bibliotecas de links dinâmicos. Nós olharemos como fazer isto.
• Aprenda como incluir extensões LotusScript em seus scripts.
Extensões de LotusScript são adicionais as características básicas do LotusScript.
Capítulo 1, “LotusScript Básico”, introduziu você ao LotusScript e explicou algumas 
de suas característica básicas e sintaxe. Neste capítulo você usará estas características e 
aprende como usar o LotusScript com o Notes.
 
O LotusScript estende a interface de programação do Notes além de @functions e 
@commands. Você usa o LotusScript para escrever scripts para executar várias funções e 
tarefas no Notes. Você adiciona scripts à vários objetos no Notes, dependendo do que você 
necessita alcançar. Por exemplo você pode usar o LotusScript para criar um agente para 
atualizar documentos de forma programada. O LotusScript proporciona algumas 
capacidades que as fórmulas do Notes não têm, como a habilidade de manipular bancos de 
dados ACL do Notes, e a habilidade de imprimir uma lista de todos os bancos de dados que 
residem em um servidor ou disco rígido local. Você entra com o código LotusScript dentro 
do Notes usando o Ambiente de Desenvolvimento Integrado do Notes(IDE). O Notes 
contém um compilador LotusScript integral que traduz seu código em um LotusScript 
executável. Neste capítulo você irá:
• Aprender como usar o Ambiente de Desenvolvimento Integrado do Notes para 
usar o LotusScript;
• Aprender como usar o editor Script;
• Aprender como usar o depurador do LotusScript;
• Ver algumas técnicas de depuração do LotusScript;
• Entender como acessar Bibliotecas de Links Dinâmicos (DLL) a partir do 
LotusScript.
• Aprender como incluir extensões de LotusScript no seu script
1 Ambiente de Desenvolvimento Integrado do Notes
O Ambiente de Desenvolvimento Integrado no Notes (IDE) permite à você criar 
formulários, visões e agentes de maneira consistente. No entanto, para cada formulário, 
visão ou agente que você crie, você utilizará um diferente IDE. Apesar de cada IDE ser 
diferente, eles compartilham muitas características comuns, tais como o Editor Script e 
características do Depurador. Descreveremos o IDE para Formulários, mas o Editor Script 
e o Depurador trabalham de forma similar nos outros IDE’s. Os IDE’s de Formulários são 
mostrados conforme a Figura 2.1. 
Figura 2.1
 
Aqui está um exemplo de Formulários IDE.
A tela está dividida em três áreas ou janelas.
1.1 Área de Layout do Formulário
A janela no lado esquerdo superior da tela é a Janela de Layout do Formulário (Form 
Layout Pane). Você usa esta área para criar o layout de seu formulário.
1.2 Painel de Ação
O painel no lado direito superior da tela é a Janela de Ação (Action Pane). Você 
pode usar esta janela para definir as ações que estão associadas ao formulário. Por 
default, a Janela de Ação não é visível quando você abre o IDE pela primeira vez. Para 
mostrar a Janela de Ação, selecione menu Exibir/Painel de Ação utilizando a barra de menu 
do Notes, ou arraste a barra vertical da borda direita da tela para a esquerda até que a 
janela de Ação esteja do tamanho que você deseja. Finalmente, se você é um fã do 
“SmartIcon” você pode clicar as janelas Exibir /Mostrar/Hide Action usando o SmartIcon.
Para esconder a janela de Ação, você pode tanto selecionar as janelas Exibir/Painel 
de Ação novamente para desabilitar o menu de opções como arrastar a barra vertical para o 
lado direito da tela ou pode clicar no botão Exibir/Mostrar/Ocultar Painel de Ação usando o 
SmartIcon.
 
1.3 Painel de Estrutura
O Painel de Estrutura é o painel mostrada na parte inferior da tela. É nestaárea que 
você digita seu código do LotusScript. Por default, o Painel de Estrutura é visível. Se você 
deseja ocultá-la, selecione as janelas Exibir/Painel de Estrutura utilizando a barra de menu 
do Notes ou arraste a barra horizontal (aquela que separa o Painel de Estrutura do restante 
da janela) para baixo da parte inferior da tela.
O Painel de Estrutura consiste de um número de componentes que você usa para 
digitar o seu código do LotusScript. Vamos ver cada um por vez.
1.3.1 Caixa de Desenho
A Caixa de Desenho, mostrada na figura 2.2, é uma caixa “drop-down” que você usa 
para selecionar o objeto ou a ação que você deseja programar.
Figura 2.2
A Caixa de Definição mostra o nome do objeto ou ação que você está programando.
Por exemplo, a Figura 2.2 mostra que o objeto formulário está constantemente 
sendo programado para exibir uma mensagem no seu título. Você pode usar a Caixa de 
Definição para escolher rapidamente outro objeto ou ação. Para programar um objeto 
diferente, clique a seta da Caixa de Definição. Será exibido uma lista de ações ou objetos 
que você pode programar como mostrado na Figura 2.3. Então, selecione o objeto ou ação 
que você deseja programar.
Figura 2.3
 
Usando a Caixa de Definição para selecionar um objeto para programar.
1.3.2 Caixa de Eventos
O Painel de Estrutura contém uma segunda caixa “drop-down”, a Caixa de Evento, 
como mostrado na Figura 2.4. 
Fig. 2.4
A Caixa de Eventos mostra o nome do evento que você está programando.
A Caixa de Evento mostra tudo dos eventos que estão associados com o objeto ou 
ação correntemente selecionados. A Caixa de Evento mostra o evento correntemente sendo 
programado. Por exemplo, na Figura 2.4, o evento que está sendo programado é o evento 
“Título da Janela” no formulário. Para programar um evento diferente, simplesmente 
selecione-o da lista contida na Caixa de Evento.
Note que se o objeto ou ação selecionados não possuam eventos associados com 
eles, tais como uma das ações de formulários padrões, a Caixa de Eventos não é mostrada. 
A Figura 2.5 mostra a aparência do Painel de Estrututa quando a ação do documento de 
edição padrão é selecionada. 
Figura 2.5
 
Este é a aparência do Painel de Estrututa quando uma ação de formulário padrão é 
selecionada.
NOTA
Se você adicionar suas próprias funções e “subs” LotusScript à um formulário, eles 
serão mostrados na Caixa de Evento quando você selecionar os objetos Globais para o 
formulário.
1.3.3 Run Radio Button
Dependendo do tipo do objeto que você selecionou na Caixa de Definição, você 
pode usar o “Run Radio Button”(Figura 2.6) para selecionar o tipo de programação para o 
objeto (veja Figura 2.6). Você possui três escolhas:
• Ação(ões) Simple(s)
• Fórmula
• Script
Figura 2.6
 
O Run Radio buttons deixa-o selecionar LotusScript como uma opção de 
programação
1.3.4 O Script Browser
Depois que você selecionar o botão “Script radio” você poderá mostrar o Script 
Browser através da caixa de visualização do Browser (Show Browser Check Box). O Script 
Browser é mostrado na Figura 2.7.
Figura 2.7
Este é o Script Browser.
O browser permite-lhe mostrar o seguinte:
• Uma lista de funções e características disponíveis no LotusScript.
• Todas as classes do Notes e seus métodos, propriedades e eventos associados 
(falaremos de todos esses assuntos no próximo capítulo).
• Todas as classes “OLE2” e “ActuveX” que estão disponíveis para você.
Você seleciona o que você deseja mostrar usando “browser combo box”. Você pode 
selecionar o seguinte:
• Linguagem LotusScript
• Classes do Notes
• Constantes do Notes
• Funções e subs do Notes
 
• Variáveis do Notes
• Classes OLE2
Por exemplo, se você deseja ver quais as funções que o LotusScript tem disponíveis 
para tratar erros, siga os seguintes passos:
1. Se a opção ainda não estiver selecionada, selecione Linguagem LotusScript no 
browser combo box. Uma lista de categorias de funções será mostrada;
2. Clique na seta próximo Tratamento de Erros (Error Handling). Os nomes e 
sintaxe das funções de Tratamento de Erros do LotusScript serão mostradas 
(veja Figura 2.8).
Fig. 2.8
As funções de Tratamento de Erros (Error-handling functions) do LotusScript 
mostradas no Script Browser.
Se você deseja adicionar um item do browser ao código, (tal como um nome de 
função), siga os seguintes passos:
1. Posicione o cursor no código do LotusScript aonde você deseja inserir o item;
2. No Script Browser, clique duas vezes no item que deseja inserir. O item é 
inserido dentro do código aonde você colocou o cursor.
O browser pode ser muito útil quando você deseja fazer o seguinte:
• Checar a disponibilidade de uma função específica;
 
• Checar parâmetros para uma função;
• Checar as propriedades, métodos e eventos de uma classe Notes, OLE2 ou 
ActiveX.
1.3.5 O Editor Script
Você vai digitar seu código de LotusScript na área de Painel de Estrutura chamada 
o Editor Script. O Editor Script entende a sintaxe do LotusScript e lhe ajuda revisando o 
script assim que você digita. O Editor Script:
• Checa erros de sintaxe assim que você entra no Script;
• Automaticamente torna maiúsculas palavras chaves do LotusScript;
• Formata o script indentando automaticamente blocos do código;
• Completa certos tipos de “statements”, do tipo “If...Then” e “For...Next” loops;
• Fornece cores para mostrar diferentes tipos de expressões no seu script.
Veremos mais detalhadamente como usar o Editor Script posteriormente neste 
capítulo. 
1.3.6 Caixa de Erros
A Caixa de Erros (Error combo box) é usada para mostrar erros de sintaxe e 
compilação. Por exemplo, Figura 2.9 mostra como um simples erro de sintaxe é detectado e 
apresentado.
Fig. 2.9
 
Como um erro de sintaxe é mostrado.
2 Usando o Editor Script
Se você pode usar um editor de texto, você pode usar o Editor Script! Ele trabalha 
exatamente igual à maioria dos editores de texto e contém as combinações familiares de 
teclas para mover o cursor e para cortar, copiar e colar textos. Por exemplo:
• “Home” move o cursor para o início da linha corrente.
• “End” move o cursor para o fim da linha corrente.
• “Ctrl+C” copia o texto selecionado
• “Ctrl+V” cola o texto selecionado
CUIDADO
O Editor Script não tem a função “Undo”, então tenha cuidado quando 
estiver editando algo.
2.1 Configurando o Editor Script
Novo para o Editor Script apartir da versão 4.5 do Notes é sua habilidade para 
escolher a fonte usada pelo mesmo e para mostrar diferentes tipos de “statements” em 
cores diferentes. Você pode escolher a cor para:
• Identificadores;
 
• Palavras chave;
• Comentários;
• Diretivas;
• Erros.
Para definir fontes e cores, siga os seguintes passos:
1. “Right-click” no Editor Script. Um menu “Pop-up” será mostrado.
2. Selecione propriedades na janela de Desenho. As propriedades da janela de 
Desenho são mostradas nas propriedades “InfoBox”, como mostrado na Figura 
2.10.
Fig. 2.10
Você usa as Propriedades “InfoBox” da Painel de Estrutura para configurar o Editor 
Script.
1. Selecione o “Script radio buttom”.
2. Selecione o tipo e tamanho da fonte que você deseja usar.
3. Escolha uma cor para cada tipo de expressão.
2.2 Dando entrada em um código
 
Siga os seguintes passos para dar entrada em um código:
1. Selecione o objeto ou ação com os quais você deseja trabalhar;
2. Selecione o evento ao qual o código será anexado;
3. Digite o código no Editor Script.
Você pode selecionar o objeto ou a ação para serem programados de diferentes 
formas. Por exemplo, para selecionar um objeto você pode escolher uma das seguintes 
opções:
• Selecione o nome do objeto utilizando a “drop-down list” na caixa de definição;
• Clique no objeto na Janela de Layout de formulário.
Para selecionar uma ação para programar você pode escolher uma das seguintes 
opções:
• Selecione o nome da ação utilizando a“drop-down list” na caixa de definição;
• Clique na ação na Janela de ação.
O Editor Script checa automaticamente a sintaxe de seus códigos assim que você 
entra com eles. Por exemplo, na hora que você comete um erro de digitação, o Editor Script 
lhe dá conhecimento mostrando o erro na caixa de erros. Se você tiver configurado as cores 
para o Editor Script, o erro é sublinhado na cor que você escolheu para erros. Palavras-
chave, identificadores, comentários e diretivas também serão sublinhados na cor escolhida.
O código que você dá entrada utilizando o Editor Script é armazenado no módulo do 
LotusScript. O Notes armazena um módulo separado para cada formulário, visão e agente 
que você cria. Alguns dos nomes listados na Caixa de Definição referem-se mais a partes 
do módulo LotusScript que a objetos e ações. As partes do que você usa são:
• A parte (Options) da seção (Globals);
• A parte (Declaration) da seção (Globals).
Você usa parte Options para definir opções que afetam o código LotusScript que 
você está digitando. Por exemplo, se você deseja usar a expressão Option Declare para 
assegurar que todos os nomes variáveis estão declarados, você os adiciona na parte 
 
Options da seção Globals. A seção Declarations é onde você define os tipos de dados e 
variáveis usados pelo seu módulo.
O Editor Script tenta completar blocos de códigos e os move para a posição correta. 
Por exemplo, se você começa uma definição de tipo em uma nova linha do seu Script 
escrevendo Type MyTypeName e pressionando Enter, o Editor Script automaticamente o 
move para a parte Declaration e adiciona a expressão End Type. O Editor Script 
automaticamente move os blocos de códigos seguintes ao local correto.
• Type – Entre com TYPE seguido do nome e pressione Enter. O Editor Script 
cria um bloco Type...End Type vazio e o adiciona ao final da seção Declarations;
• Dim – Se você digitar uma expressão Dim em qualquer lugar fora de um sub ou 
função, o Editor Scritpt move a expressão Dim para o fim da seção Declaration;
• Function – Digite Function seguido do nome da função e pressione Enter. O 
Editor Script cria um bloco Function...End Function vazio e adiciona o nome da 
função à Caixa de Evento;
• Sub – Digite Sub seguido do nome do Sub e pressione Enter. O Editor Script 
cria um bloco Sub...End Sub vazio e adiciona o nome do Sub à Caixa de Evento;
• Option – Digite uma das expressões Option do LotusScript, tais como Option 
Declare ou Option Base e o Editor Script move a expressão para o fim da seção 
Options;
• Class - Se você começa uma definição de classe digitando Class seguido por 
um nome de classe e pressionando Enter, o Editor Script move a definição para 
a seção Declaration e adiciona um End Class statement para você;
• Property – Tanto para Property Set como para Property Get, o Editor Script 
automaticamente cria um novo bloco de propriedades e adiciona o seu nome 
para a Caixa de Evento. 
O Editor Scritpt também completa os seguintes blocos de códigos para você:
• For loops – Digite na primeira linha de um “loop” e pressione Enter. A 
terminação “Next” é automaticamente adicionada para você;
• Forall loops – A terminação End Forall é adicionada quando você pressiona 
Enter após a digitação da primeira linha;
• Expressões If – O End If é adicionado para você;
 
• Expressões Select - O End Select é automaticamente adicionado.
• Do While loops – A terminação “Loop statement” é adicionada;
• Statments While – A terminação Wend é adicionada.
2.3 Compilando um Script
O Editor Script automaticamente compila seu LotusScript. Ele o faz nos seguintes 
momentos:
• Assim que você dá entrada no Script, o Editor Script parcialmente compila o 
script. É assim que ele detecta erros e sabe quando completar blocos de 
códigos;
• Quando você salva o script ou quando você clica fora do Editor Script, o Editor 
Script compila o módulo inteiro do LotusScript. Ele encontra aqueles erros que 
não pode detectar durante compilações parciais. Por exemplo, este é o 
momento que pode ser detectada uma chamada para uma função ou sub não 
existente. 
Você não pode salvar um script que contém erros de compilação, você deve corrigir 
todos antes de salvar o script.
DICA
Se você quer salvar um script contendo erros você pode colocar diretivas 
“%REM” e “%END REM” em volta da parte do script que contém erros. Este 
comentário oculta o erro e permite-lhe salvar o script.
3 Usando o LotusScript com o Notes
O Notes usa um modelo de programação orientado a objeto e a evento. A Interface 
entre o LotusScript e o Notes é através de um conjunto de classes de objeto, as classes de 
objetos Notes. Objetos de cada classe geram e respondem a diferentes eventos. Por 
exemplo, o objeto botão pode responder ao ser pressionado, ou o objeto campo pode 
responder com o cursor sendo posicionado no mesmo. Quando você programa usando o 
LotusScript no Notes, você cria um LotusScript que responde a esses eventos.
Você pode anexar o LotusScript a eventos nos seguintes tipos de objetos:
 
• Botões;
• Ações;
• Pontos de Acesso;
• Campos;
• Formulários;
• Visões e Pastas;
• Banco de Dados;
• Agentes.
Para cada objeto, você precisa conhecer os eventos aos quais ele (objeto) 
responde.
3.1 Botões, Ações e “Pontos de Acesso”
Botões, ações e Pontos de Acesso respondem aos eventos mostrados na tabela 2.1. 
O evento Click é o que você vai usar com maior freqüência. Ele é gerado sempre que botão, 
ação ou ponto de acesso são clicados. O evento ObjectExecute é criado para que uma 
aplicação de servidor OLE2 possa usar o NotesFlow para executar ações do Notes.
Tabela 2.1 Eventos Botão, Ação e Ponto de Acesso
Evento Trigger
Click Quando é selecionado botão, ação ou ponto de acesso
ObjectExecute Quando a ação é ativada por um servidor OLE2 que usa 
FX/NotesFlow para executar ações. 
 
O exemplo seguinte mostra como adicionar um botão e escrever LotusScript para 
tratar o evento “Click”. 
1. Crie um novo banco de dados vazio;
 
2. Crie um novo formulário no banco de dados. A estrutura do formulário é 
mostrada;
3. Selecione “Criar - Ponto de Acesso - Botão”. Um botão é adicionado ao 
formulário e a caixa de informação com suas propriedades são mostradas;
4. Dê um título ao botão digitando “Ola turma” no campo “Rótulo do botão”;
5. Clique na janela do editor de Script;
6. Selecione o “Script radio buttom”. Pelo padrão (default), a posição fórmula é 
selecionada para um novo botão;
7. Adicione o seguinte código ao evento “Click”.
Messagebox “Olá Turma !”, 0, “Botão de teste”. 
8. Selecione a opção “Estrututa – Visualizar no Notes”. Você é solicitado a entrar 
com o nome para o novo formulário;
9. Entre com “Test” como o nome do formulário e clique OK. O novo formulário é 
salvo e mostrado.
10. Clique o botão “Olá Turma”. Sua caixa de mensagem “Olá Turma” é mostrada.
3.2 Campos
Você pode anexar o LotusScript aos eventos de campos mostrados na tabela 2.2. 
Tabela 2.2 Eventos de campos
Evento Trigger
Entering Quando um usuário coloca o curso no campo.
Exiting Quando o cursor é movido para fora do campo.
 
O evento Entering é útil para responder ao usuário colocando o cursor no campo. 
Por exemplo, assim que um usuário coloca o cursor em um campo, você pode colocar 
alguns dados dentro do campo ou limpar seu conteúdo. Você pode usar o evento Exiting 
para ver se um campo foi corretamente preenchido assim que o usuário move o cursor para 
fora do campo, ao invés de esperar até que o documento seja salvo. Os exemplos seguintes 
mostram como usar o Existing para ajudar a validar o campo:
1. Crie um novo banco de dados vazio;
2. Crie um novo formulário no banco de dados. A estrutura do formulário é 
mostrado;
3. Selecione “Create”, “Field”. Um campo é adicionado ao formulário e sua caixa de 
propriedades é mostradas;
4. Use

Continue navegando