Manipulação de Strings: O Superpoder do REXX!
Funções nativas que transformam dados brutos em informação valiosa
🔤 Funções de String ESSENCIAIS:
/* LENGTH - Tamanho da string */
nome = "Mainframe"
tamanho = LENGTH(nome) /* = 9 */
/* SUBSTR - Extrai parte da string */
texto = "REXX é incrível"
parte = SUBSTR(texto, 6, 2) /* = "é" */
/* INDEX - Encontra posição */
pos = INDEX("Hello World", "World") /* = 7 */
/* WORDS e WORD - Trabalhando com palavras */
frase = "REXX no mainframe z/OS"
quantas = WORDS(frase) /* = 4 palavras */
terceira = WORD(frase, 3) /* = "mainframe" */
🛠️ Kit completo de funções:
/* CONVERSÕES */
num = "123"
valor = num + 1 /* REXX converte automaticamente! */
/* Maiúsculas/minúsculas */
grande = UPCASE("rexx") /* = "REXX" */
pequena = LOWER("IBM") /* = "ibm" */
/* Formatação */
centralizado = CENTER("Título", 20, "-")
/* = "-------Título-------" */
/* Busca e substituição */
novo = CHANGE("Olá Mundo", "Mundo", "Mainframe")
/* = "Olá Mainframe" */
💼 Exemplo REAL no mainframe:
/* ANALISA_JOB.rex - Analisa saída de job */
saida = "JOB1234 ENDED OK - 00:05:23 EXECUTION"
/* Suponha que isso veio de um arquivo de log */
/* Extrai informações */
IF POS('ENDED OK', saida) > 0 THEN DO
/* Encontra tempo de execução */
pos_inicio = INDEX(saida, '00:')
tempo = SUBSTR(saida, pos_inicio, 8)
/* Extrai número do job */
primeiro_espaco = INDEX(saida, ' ')
job_num = SUBSTR(saida, 1, primeiro_espaco-1)
SAY 'Job' job_num 'concluído com sucesso!'
SAY 'Tempo de execução:' tempo
END ELSE DO
SAY 'Job não concluído corretamente'
SAY 'Status:' WORD(saida, 3)
END
📊 Processando múltiplas linhas:
/* Processa lista de datasets */
datasets = "USER.DATA.CLIENTES",
"USER.DATA.VENDAS",
"USER.DATA.PRODUTOS"
DO i = 1 TO WORDS(datasets)
dsname = WORD(datasets, i)
/* Extrai último componente */
ultimo_ponto = LASTPOS('.', dsname)
tipo = SUBSTR(dsname, ultimo_ponto + 1)
SAY 'Dataset' i ':' tipo '->' dsname
END
🎁 BÔNUS: Funções úteis pouco conhecidas:
/* SPACE - Controla espaços entre palavras */
compacto = SPACE("REXX no mainframe", 1)
/* COPIES - Repete strings */
separador = COPIES('-', 30) /* 30 traços */
/* DATATYPE - Verifica tipo */
SAY DATATYPE("123") /* = NUM */
SAY DATATYPE("ABC") /* = CHAR */
SAY DATATYPE(" ") /* = BLANK */
CTA: 📚 Material completo com TODAS as funções nos comentários!