🧠 Explicação

O comando EXEC CICS SEND MAP é utilizado para enviar telas (mapas BMS) para o terminal 3270. Pode ser usado para exibir apenas a estrutura da tela (máscara) ou para atualizar os dados exibidos. Também permite controlar o cursor, apagar a tela anterior, desbloquear o teclado e muito mais.

🔧 Usos mais comuns

  • Exibir o layout inicial da tela (MAPONLY + ERASE).

  • Preencher campos da tela com dados do programa (DATAONLY + FROM).

  • Posicionar o cursor em local fixo (físico) ou variável (lógico).

  • Atualizar dados na tela sem perder o layout já exibido.

  • Controlar o comportamento do terminal (ALARM, FREEKB, FRSET etc.).

🧾 Sintaxe

EXEC CICS SEND
     MAP("TELA01")
     MAPSET("MAPSET1")
     MAPONLY
     ERASE
     CURSOR(VALOR)
END-EXEC.
EXEC CICS SEND
     MAP("TELA01")
     MAPSET("MAPSET1")
     DATAONLY
     FROM(AREA-DADOS)
     CURSOR(VALOR)
END-EXEC.

💻 Exemplo prático

Posicionamento físico:

77 POSCURSOR PIC S9(4) COMP VALUE 815.

EXEC CICS SEND
     MAP("TELA01")
     MAPSET("MAPSET1")
     MAPONLY
     ERASE
     CURSOR(POSCURSOR)
END-EXEC.

Posicionamento lógico (ex: campo CODCLI):

MOVE -1 TO CODCLIL.

EXEC CICS SEND
     MAP("TELA01")
     MAPSET("MAPSET1")
     DATAONLY
     FROM(TELA01O)
     CURSOR
END-EXEC.

📌 Regras

  • MAPONLY envia apenas o layout fixo da tela.

  • DATAONLY envia apenas os dados variáveis da WORKING-STORAGE.

  • Sem MAPONLY ou DATAONLY, o efeito será de ambos (layout + dados).

  • FROM exige uma área com o mesmo nome do mapa + sufixo O (ex: TELA01O).

  • CURSOR(VALOR) posiciona fisicamente; CURSOR sozinho usa o posicionamento lógico.

  • ERASE deve ser usado no primeiro SEND da transação para limpar a tela.

💡 Dicas

  • Use FREEKB para desbloquear o teclado após o envio da tela.

  • FRSET desliga todos os bits MDT, limpando status de modificação dos campos.

  • ERASEAUP apaga apenas os campos desprotegidos.

  • O cursor pode ser posicionado com valor fixo (CURSOR(815)) ou variável (CURSOR(POSCURSOR)).

  • O MAPSET deve estar carregado na biblioteca do CICS.

🚨 Condições que podem ocorrer

  • INVMPSZ: mapa maior que a tela.

  • INVREQ: comando inválido ou parâmetros inconsistentes.

  • ITEMERR: erro ao acessar campo mapeado.

  • OVERFLOW: dados não cabem na tela.

  • IGREQID, IGREQCD, INVPARTN, TSIOERR, WRBRK: falhas operacionais diversas.

  • RETPAGE: usado com SET para manipular páginas lógicas.

 

Conclusão

SEND MAP é o coração da interface homem-máquina em ambientes CICS. Ele te dá o controle total da exibição: do layout à manipulação de dados, cursor, atributos e comportamento do terminal. Dominar seus parâmetros é essencial para criar telas profissionais, limpas e funcionais.