A exceção para a regra, de que não se pode converter caracteres alfabéticos para números, é o tipo byte. Quando o IDL converte uma string de caracteres para byte, o resultado é um vetor de byte com o mesmo comprimento da string. Inversamente, uma matriz ou vetor de bytes convertido para uma string, resulta em uma string contendo os valores dos caracteres ASCII.
IDL> str = 'Hello World'
IDL> bstr = byte(str)
IDL> help, bstr
BSTR BYTE = Array[11]
IDL> bstr [0] = bstr [0] + 6
IDL> print, string(bstr )
Nello World
Estes comandos convertem uma string em um vetor de bytes e manipulação do primeiro byte. Adicionando seis no primeiro byte mudando o 'H' para 'N'. Convertendo os bytes de volta para string o resultado é 'NELLO WORLD'.
O tipo de dados e a estrutura organizacional de uma variável muda dinamicamente. Por exemplo, esta é a forma errada de inicializar os elementos de uma matriz ou vetor de inteiros com o valor 1:
IDL> array = intarr(10, 12)
IDL> print, array
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
IDL> array = 1
IDL> print, array
1
No terceiro comando veja que é trocada a estrutura da variável nomeada array (que até então é uma matriz de 10 colunas e 12 linhas preenchida com zeros), ela passa a ser uma variável do tipo integer com valor 1.
Uma forma melhor de inicializar uma matriz ou vetor de inteiros com 1 é:
IDL> array = intarr( 10, 12)
IDL> array = array + 1
IDL> print, array
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
Neste caso o segundo comando adiciona o valor 1 para todos elementos da variável nomeada array.
Os tipos de variáveis podem ser alterados dinamicamente.
IDL> variavel = 4
IDL> help, variavel
VARIAVEL INT = 4
IDL> variavel = 4.0
IDL> help, variavel
VARIAVEL FLOAT = 4.00000
IDL> variavel = '4.0'
IDL> help, variavel
VARIAVEL STRING = '4.0'
Veja que a variável com nome de variavel muda de integer, para float e depois para string.
Tipos de variáveis dinâmicas são muito eficientes, mas podem se transformar em um problema se não tomarmos cuidado. Um erro muito comum que ocorre, é especificar uma divisão com resultado inteiro, quando temos uma divisão com resultado flutuante. Por exemplo:
IDL> valor = 16 / 5
IDL> print, valor
3
A expressão acima resulta em um valor inteiro (3). Se você espera que o valor retornado seja 3.2, você precisaria rescrever esta expressão, utilizando um ponto (.) após o número cinco (5):
IDL> valor = 16 / 5.
IDL> print, valor
3.20000
O IDL tem uma classe especial de variáveis predefinidas que estão disponíveis para todas as unidades do programa. Estas variáveis são chamadas variáveis de sistema. Elas são identificadas por um ponto de exclamação antes do seu nome.
Algumas variáveis de sistema comuns, que fornecem apenas a informação de leitura.
VARIÁVEIS DO SISTEMA | DESCRIÇÃO |
!dtor | O fator da conversão dos graus para aos radianos |
!radeg | O fator da conversão dos radianos para aos graus |
!pi | Valor do pi com precisão simples |
!dpi | Valor do pi com dupla precisão |
!error_state | Uma variável do tipo estrutura contendo informações da ultima mensagem de erro. |
!version | Dá informações sobre a versão em uso do IDL. |
O !d, !p e o !x, !y e !z são variáveis de sistema usadas para fornecer informações sobre o dispositivo atual de gráfico direto. Estas variáveis de sistema são estruturas com campos múltiplos para identificar informações relacionadas ao gráfico.
A variável de sistema !d fornece informações sobre o atual dispositivo exposto. Alguns campos da variável de sistema !d estão listados na tabela abaixo.
CAMPOS DE !d | DESCRIÇÃO |
name | O nome do atual dispositivo gráfico. |
n_colors | O número de cores disponíveis no dispositivo gráfico. |
table_size | O número índice da tabela de cor atual. |
x_size | A largura da atual janela gráfica, em pixels. |
y_size | A altura da atual janela gráfica, em pixels. |
Window | O Índice da janela ativa dos gráficos. |
A variável de sistema !p permite que você altere configurações padrões de um gráfico em linha, gráfico de contorno e um gráfico de superfície. Alguns dos campos da variável de sistema !p estão na tabela abaixo.
CAMPOS DE !p | DESCRIÇÃO |
color | O índice de cor do gráfico. |
charsize | O tamanho do caracter para o rótulo. |
linestyle | O estilo de linha utilizado no gráfico. |
multi | Especifica o número de gráficos em uma página. |
position | Especifica a posição do gráfico em uma página. |
psym | O estilo de símbolo utilizado no gráfico. |
subtitle | Uma palavra (frase) utilizado como subtítulo, colocado abaixo do eixo X. |
title | Uma palavra (frase) especificando o titulo do gráfico. |
O !x, !y e !z são variáveis de sistema que permitem a você alterar as configurações padrões dos eixos de um gráfico. Alguns exemplos destes campos, estão listados na tabela abaixo.
CAMPOS DE !x, !y e !z | DESCRIÇÃO |
minor | O número de pequenos intervalos dentro de grandes intervalos. |
range | Marca a distância mínima e máxima dos eixos. |
tickname | Colocar uma matriz ou vetor (geralmente do tipo string) de anotações para cada intervalo maior. |
ticks | O número de intervalos constantes no eixo. |
title | O título dos eixos. |