de tipo alfanumérico : exprimidas seja entre apóstrofos (*), seja entre aspas (") Eis dois exemplos de cadeias válidas :
| "É o certo" |
| 'uma "cadeia" particular' |
de tipo numérico: exprimidos com um ponto decimal se necessário. Eis dois exemplos de constantes numéricas válidas :
| -2.5 |
| 123000 |
de tipo data : exprimidos sob a forma [ dia/ mês / ano] Deve-se referir que o ano deve obrigatoriamento ser exprimido sobre 4 cifras. Eis dois exemplos de constantes datas válidas :
| [15/3/2002] |
| [21/05/1819] |
de tipo lógico : ela se confunde com as constantes numéricas : 1 ( e por extensão todo o valor não nulo) equivale a verdadeiro, 0 equivale a Falso .
Os operadores válidos são os seguintes :
| + | Adição de dois números, de uma data e de um número de dias, ou concatenação das duas cadeias de caracteres. |
| - | subtração de dois números, de uma data e de um número de dias, ou concatenação das duas cadeias de caracteres em inserindo um espaço entre as das cadeias. |
| * | multiplicação de dois números. |
| / | divisão de dois números |
| ^ | elevação à potência |
| < <= > >= <> | operadores de comparação |
|
e : ou xor not | operadores lógicos, que podem também se abreviar. & | ? ! |
Dispõe-se por outro lado da possibilidade de utilizar os parênteses com um nível de imbricação ilimitada.
Uma variável se exprime de maneira geral sob a forma:
| [ classe ] nomvar ( indice ) |
Por exemplo, pode-se definir as variáveis seguintes:
| [F:BPC]BPCNAME |
| MA_VARIABLE |
| ELEMENT(33) |
O nome da variável nomvar se exprime sob a forma de letras e/ou de escolhas, o primeiro caracter sendo sempre uma letra e o caracter de sublinhado sendo igualmente admitidos. O comprimento significativo de um nome de variável é limitado a 12 caracteres. Todos os nomes são autorizados, entre certas palavras-chave reservadas à linguagem (File, Until, ou Commit fazem parte destas palavras-chaves) Quando se tecla um nome de variável em letras minúsculas, é automaticamente transformada em letras maiúsculas, salvo se se trata de uma expressão-chave.
Certas variáveis podem ser dimensionadas, quer dizer corresponder a quadros de elementos (de 1 a 4 dimensões são possíveis) No caso, damos o ou os índices sob a forma de expressões numéricas, separados por vírgulas se existirem vários, entre parênteses (por exemplo, M_TB(1,2,8) é uma sintaxe válida).
Uma classe corresponde a um conjunto de variáveis ligadas a um contexto. As classes mais correntes são as seguintes:
[V] : classe de variáveis globais. Uma variável deste tipo está relacionada à sessão SAGE. Uma vez criada, ela resta acessível tanto que ela não foi destruida, ou tanto que a sessão SAGE não parou. A sua declaração se faz na ajuda de instruções dedicadas (segundo o tipo, utilizamos as instruções Integer, Decimal, Char, Date, Libelle, Shortint, Float, Double).
[L] : classe de variáveis locais. Ela está ligada a uma imbricação de sub-programa (cada instrução Call cria uma nova classe de variáveis locais que escondem a classe precedente). A declaração de variáveis deste tipo se faz de mesmo que as variáveis precedentes, mas em fazendo preceder a declaração de uma expressão-chave Local.
[C] : classe de variáveis de tipo contador. Trata-se de variáveis comuns a todos os postos de um dossier. A sua criação faz.-se por uma função de desenvolvimento dedicado.
[F:abv] ou ainda [abv] : trata-se da classe das variáveis relacionadas a uma tabela declarada pela instrução File. Encontramos os valores de registo corrente.
[M:abv] ou ainda [abv] : trata-se da classe das variáveis relacionadas a um ecrã declarado pela instrução Mask. Encontramos os valores tendo sido registados ou susceptíveis de ser afixados (cada separador de um ecrã considerado como uma máscara).
A classe não é obrigatória, porque as regras permitem de conhecer a classe por defeito.
Existe um conjunto de variáveis ditos sistema, porque gerados directamente por sage. Então que as outras variáveis são transformadas, no momento do registo, em maiúsculas, estas variáveis, que fazem parte de expressões-chave da linguagem, são afixadas em minúsculas. Eis quaisquer variáveis ssitema utilizáveis (lista não exaustiva) :
Nome | Tipo | Definição |
nomap | cadeia | nome do dossier corrente |
datasyst | data$ | data sistema modificável |
adxdir | cadeia | directório de base sage |
nolign | numérico | número de linha corrente |
fstat | numérico | status de retorno após leitura ou registo tabela |
Uma função se exprime sob a forma função (lista de argumentos). Numerosas funções existem: tratamento de cadeias de caracteres, cálculos sobre datas, funções numéricas clássicas, funções de troncadura e de arredondamento estatísticas...
Uma lista das principais funções utilizáveis em SAGE se encontra acima. No quadro das funções, as convensões de registo são os seguintes :
v é um argumento de tipo qualquer (idem para v1, v2, v3...)
c é um argumento de tipo cadeia de caracteres
x é um argumento de tipo numérico
n, p, q...são de argumentos de tipo inteiro
V é uma variável
lista é uma lista de variáveis ou de expressões. Neste tipo de lista, uma variável TABLO de tipo quadro pode ser utilizado sob a forma TABLO(I) (não se toma que um índice), TABLO (percorrem-se todos os índices), ou TABLO(I..J) (percorre-se os índices I a J incluindo).
Sintaxes | Tipo | Definição |
data$ | data$ | data corrente |
sin(x), cos(x), tan(x) | numérico | funções trigonometricas |
asin(x),acos(x)... | numérico | funções trigonométricas inversas |
log(x),exp(x),ln(x) | numérico | funções logaritmicas |
abs(x), sgn(x) | numérico | valor absoluto, sinal |
ar2(x), arr(x,y) | numérico | arredondado a 2 decimais, arredondados de x a y perto |
int(x), mod(x,y) | numérico | parte inteira, módulo |
len(c) | numérico | Comprimento de uma cadeia |
day(d),month(d),year(d) | numérico | extracção quantia, mês, ano de uma data |
dayn(d),week(d) | numérico | número de dias na semana, nº da semana |
num$(x) | cadeia | converte um número em cadeia (representação decimal) |
space$(n), chr$(n) | cadeia | cadeia composta de n espaços, de 1 caracter de código interno n |
string$(n,c), string$(n,x) | cadeia | cadeia composta de n caracteres c (ou n caracteres de código x) |
day(d),month(d),year(d) | cadeia | nome do dia, nome do mês |
addmonth(d,n) | data$ | a data d à qual se acrescenta n meses |
eomonth(d) | data$ | O último dia do mês correspondente à data d |
left$(c,n), right$(c,n) | cadeia | parte esquerda/direita de uma cadeia sobre n caracteres |
mid$(c,n,p), seg$(c,n,p) | cadeia | Extração de sub-cadeias de uma cadeia dada |
gdat$(n,p,q) | data$ | Construção de uma data (n=dias,p=mês,q=ano) |
pat(c1,c2) | numérico | O modelo pode incluir os meta-caracteres * (número qualquer de caracteres quaisquer), ? (um caracter qualquer), # (uma cifra qualquer). |
min(liste), max(liste) | Todos os tipos | mínimo ou máximo de um conjunto de variáveis ou valores |
sum(lista), prd(lista) | numérico | soma, produto de um conjunto de variáveis ou valores. |
avg(lista), var(lista) | numérico | média, variância de um conjunto de variáveis ou valores. |
sum(lista) | cadeia | concatenação de um conjunto de variáveis ou valores cadeias. |
uni(lista) | numérico | verificação de unicidade sobre um conjunto de variáveis ou valores. |
find(v,lista) | numérico | pesquisa de um valor de tipo qualquer numa lista |
evalue(c) | Todos os tipos | avaliação de uma cedeia de caracter contendo uma expressão |
format$(c,v) | cadeia | Formatação de um valor com um formato dado c. |
toupper(c),tolower(c) | cadeia | transformação em minúsculas, em maiúsculas |
sigma(V=v1,v2,v3) | numérico | soma (V variante de v1 a v2), da expressão v3 função de V. |
Existe igualmente as funções definidas por programadores e utilizáveis nas expressões calculadas, pela sintaxe seguinte:
func TRAIT.FONCT(lista de argumentos)
Rasto sendo o nome do tratamento, e FONCT o nome da função afectada. Deve-se referir que as funções utilizáveis são documentadas na tabela dos sub-programas.