🧠 Explicação
O comando EXEC CICS WRITE grava um novo registro em um arquivo VSAM, tabela ou recurso acoplado em um sistema local ou remoto. Ele permite incluir registros em KSDS (chaveada), ESDS (sequencial), RRDS (registro relativo), ou tabelas em memória mantidas pelo CICS.
A gravação pode usar chave (RIDFLD), endereço (RBA/XRBA) ou número de registro relativo (RRN), dependendo do tipo de arquivo.
🔧 Usos mais comuns
-
Incluir um novo registro em arquivos KSDS ou ESDS.
-
Gravar dados em tabelas de dados (mantidas pelo CICS ou pelo usuário).
-
Obter o endereço (RBA/XRBA) automaticamente após a gravação.
-
Fazer inserções em massa com
MASSINSERTpara otimizar performance. -
Escrever em arquivos locais ou remotos (via
SYSID).
🧾 Sintaxe
EXEC CICS WRITE
FILE('CLIENTES')
FROM(AREA-DADOS)
RIDFLD(CHAVE-CLI)
LENGTH(100)
KEYLENGTH(10)
END-EXEC.
Gravação em ESDS com retorno do RBA:
EXEC CICS WRITE
FILE('LOGS')
FROM(AREA-LOG)
RIDFLD(RBA-FIELD)
LENGTH(200)
RBA
END-EXEC.
💻 Exemplo prático
MOVE '0001234567' TO CHAVE-CLI.
MOVE 'JOAO DA SILVA' TO NOME-CLI.
EXEC CICS WRITE
FILE('CLIENTES')
FROM(AREA-CLI)
RIDFLD(CHAVE-CLI)
LENGTH(80)
KEYLENGTH(10)
END-EXEC.
IF EIBRESP = DFHRESP(DUPREC)
DISPLAY 'Registro já existe com esta chave!'
END-IF.
📌 Regras
-
FROMdeve conter a área de dados a ser gravada. -
RIDFLDdeve conter a chave (KSDS), o RBA (ESDS) ou RRN (RRDS). -
LENGTHé obrigatório para registros de tamanho variável e para arquivos remotos. -
KEYLENGTHé necessário comSYSIDou se o arquivo for KSDS. -
Se a chave já existir, ocorre
DUPREC. -
WRITEgrava sempre no fim do arquivo se o arquivo for ESDS. -
Para uso com
XRBA, o arquivo deve suportar endereçamento estendido.
💡 Dicas
-
Sempre trate a condição
DUPRECpara arquivos KSDS — evita abends indesejados. -
Utilize
MASSINSERTpara ganhar performance em gravações contínuas. -
Prefira gravar com
RBA/XRBAapenas em ESDS, se realmente precisar controlar o posicionamento. -
Evite
WRITEcom registros muito grandes sem verificar o espaço disponível — erroNOSPACEpode ocorrer. -
Use
SYNCPOINTapós múltiplas gravações para garantir persistência dos dados.
🚨 Condições que podem ocorrer
-
DUPREC: chave duplicada (KSDS). -
RECORDBUSY: outro processo está acessando o registro. -
LENGERR: tamanho do registro inconsistente. -
NOSPACE: falta de espaço no conjunto de dados. -
NOTOPEN,FILENOTFOUND,DISABLED,IOERR,LOCKED,ILLOGIC: erros diversos de acesso ao arquivo. -
INVREQ: parâmetros incompatíveis (ex:KEYLENGTHerrado). -
SYSIDERR: erro no acesso remoto. -
NOTAUTH: permissão negada.
✅ Conclusão
O EXEC CICS WRITE é o comando principal para inclusão de registros em arquivos VSAM e tabelas no CICS. Saber usar corretamente suas opções — RIDFLD, FROM, LENGTH, KEYLENGTH — garante uma gravação precisa, segura e eficiente. Para quem quer controle total dos dados e integridade nas transações, dominar o WRITE é obrigatório.