IBM Lotus Symphony
|
Segue-se uma descrição da utilização básica dos procedimentos e funções no Lotus® Symphony™ Basic.
![]() |
Ao criar um novo módulo, o Lotus Symphony Basic insere automaticamente uma SUB denominada "Principal". Este nome predefinido não tem qualquer relação com a ordem ou o ponto de partida de um projecto do Lotus Symphony Basic. É também possível mudar o nome desta SUB em segurança. |
Procedimentos (SUBS) e funções (FUNCTIONS) ajudam a manter uma descrição geral estruturada ao separar um programa em partes lógicas.
Um dos benefícios dos procedimentos e funções é que, após ter criado um código que contenha componentes de tarefa, pode utilizar este código noutro projecto.
As variáveis podem ser transferidas tanto para os procedimentos como para as funções. Terá de ser definido SUB ou FUNCTION para se obter os parâmetros:
SUB SubName(Parameter1 As Type, Parameter2 As Type,...)
Código do programa
END SUB
A SUB é chamada utilizando a seguinte sintaxe:
SubName(Value1, Value2,...)
Os parâmetros transferidos para uma SUB têm de corresponder aos especificados na declaração SUB.
O mesmo processo é aplicado a FUNCTIONS. Além do que foi referido, as funções devolvem sempre o resultado de uma função. O resultado de uma função é definido atribuindo o valor de retorno ao nome da função:
FUNCTION FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Código do programa
FunctionName=Result
End Function
A FUNCTION é chamada utilizando a seguinte sintaxe:
Variable=FunctionName(Parameter1, Parameter2,...)
![]() |
Pode também utilizar o nome totalmente qualificado para invocar um procedimento ou função: Library.Module.Macro() Por exemplo, para invocar a macro de AutoText a partir da biblioteca Gimmicks, utilize o seguinte comando: Gimmicks.AutoText.Main() |
Os parâmetros podem ser transferidos para uma SUB ou FUNCTION tanto por referência como por valor. Salvo especificação em contrário, um parâmetro é sempre transferido por referência. Isso significa que uma SUB ou uma FUCTION controla o parâmetro e pode ler e modificar o valor deste.
Se pretender transferir um parâmetro por valor, insira a palavra-chave "ByVal" em frente do parâmetro quando invocar uma SUB ou FUNCTION, por exemplo:
Result = Function( ByVal Parameter)
Neste caso, o conteúdo original do parâmetro não será alterado pela FUNCTION, visto que só obtém o valor e não o próprio parâmetro.
Uma variável definida numa SUB ou numa FUNCTION, só permanece válida até que se saia do procedimento. Esta variável é denominada de "local". Em muitos casos, é necessário que exista uma variável válida em todos os procedimentos, em todos os módulos de todas as bibliotecas ou depois de se sair SUB ou de uma FUNCTION.
GLOBAL VarName As TYPENAME
A variável é válida enquanto a sessão do Lotus Symphony não for terminada.
PUBLIC VarName As TYPENAME
A variável é válida em todos os módulos.
PRIVATE VarName As TYPENAME
A variável só é válida neste módulo.
DIM VarName As TYPENAME
A variável só é válida neste módulo.
Reforce o estatuto privado das variáveis em todos os módulos, definindo CompatibilityMode(true).
REM ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Hello"
print "in module1 : ", myText
End Sub
REM ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Now returns empty string
' (or rises error for Option Explicit)
print "Now in module2 : ", myText
End Sub
STATIC VarName As TYPENAME
A variável retém o respectivo valor até à próxima vez que a FUNCTION ou a SUB seja executada. A declaração tem de existir dentro de uma SUB ou de uma FUNCTION.
Tal como no caso das variáveis, é necessário incluir um carácter de declaração de tipo depois do nome da função, ou o tipo indicado por "As" e a correspondente palavra-chave no final da lista de parâmetros para definir o tipo de valor de retorno correspondente à função', como por exemplo:
Function WordCount(WordText as String) as Integer