🧠 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
MASSINSERT
para 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
-
FROM
deve conter a área de dados a ser gravada. -
RIDFLD
deve 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 comSYSID
ou se o arquivo for KSDS. -
Se a chave já existir, ocorre
DUPREC
. -
WRITE
grava 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
DUPREC
para arquivos KSDS — evita abends indesejados. -
Utilize
MASSINSERT
para ganhar performance em gravações contínuas. -
Prefira gravar com
RBA
/XRBA
apenas em ESDS, se realmente precisar controlar o posicionamento. -
Evite
WRITE
com registros muito grandes sem verificar o espaço disponível — erroNOSPACE
pode ocorrer. -
Use
SYNCPOINT
apó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:KEYLENGTH
errado). -
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.