Condições: DISABLED, DUPREC, FILENOTFOUND, ILLOGIC, INVREQ, IOERR, ISCINVREQ, LENGERR, LOADING, LOCKED, NOSPACE, NOTAUTH, NOTOPEN, RECORDBUSY, SUPPRESSED, SYSIDERR
Este comando é threadsafe se o arquivo ao qual se refere for:
Definido como remoto e a função do comando é enviada por meio de uma conexão IPIC para uma região CICS remota.
Definido como VSAM ou RLS local.
Este comando não é thread-safe se o arquivo ao qual se refere for:
Definido como remoto e a função do comando é enviada por meio de uma conexão não IPIC.
Definido como uma tabela de dados compartilhados, tabela de dados do recurso de acoplamento ou arquivo BDAM.
Descrição
WRITE grava um novo registro em um arquivo em um sistema local ou remoto.
Quando este comando é usado para gravar um registro em uma tabela de dados mantida pelo CICS, a atualização é feita no VSAM KSDS de origem e na tabela de dados na memória, a menos que a saída do usuário XDTAD rejeite o registro da tabela. Os detalhes do comando para uma tabela mantida por CICS são os mesmos que para um VSAM KSDS.
Quando este comando é usado para gravar um registro em uma tabela de dados mantida pelo usuário, a atualização é feita na tabela de dados na memória (a menos que seja rejeitada pela saída de usuário XDTAD).
Quando o comando é usado para gravar um registro em uma tabela de dados do recurso de acoplamento, a atualização é feita na tabela de dados no recurso de acoplamento (a menos que seja rejeitada pela saída de usuário XDTAD).
Se uma gravação em uma tabela mantida pelo usuário ou tabela de dados do recurso de acoplamento não for bem-sucedida porque não há espaço suficiente, uma resposta NOSPACE será retornada ao comando. O CICS também emite a mensagem DFHFC0432 para alertar os administradores do sistema sobre a situação.
Para um VSAM ESDS ou formato estendido VSAM, ESDS de endereçamento estendido , o registro é sempre incluído no final do conjunto de dados. O CICS não usa o campo de identificação especificado em RIDFLD ao calcular o endereço de byte relativo (RBA) ou, para um ESDS de endereçamento estendido, o endereço de byte relativo estendido (XRBA) do novo registro. No entanto, o novo RBA ou XRBA é retornado ao aplicativo no campo de identificação de registro especificado na opção RIDFLD.
Para um VSAM KSDS, o registro é adicionado no local especificado pela chave associada; este local pode estar em qualquer lugar no conjunto de dados. Para conjuntos de dados VSAM, a chave no registro e a chave no campo de identificação RIDFLD devem ser iguais.
Para um VSAM ESDS ou KSDS, os registros podem ter comprimento fixo ou comprimento variável. As operações MASSINSERT devem continuar com chaves ascendentes e devem ser encerradas por um UNLOCK antes de qualquer outra solicitação para o mesmo conjunto de dados.
Opções:
ARQUIVO ( nome do arquivo )
especifica o nome do arquivo a ser acessado.
Se SYSID for especificado, o conjunto de dados ao qual este arquivo se refere é considerado como estando em um sistema remoto, independentemente de o nome estar definido para o CICS. Caso contrário, a definição do recurso é usada para descobrir se o conjunto de dados está em um sistema local ou remoto.
FROM ( área de dados )
especifica o registro que deve ser gravado no conjunto de dados referido por este arquivo.
KEYLENGTH ( valor de dados )
especifica o comprimento (binário de meia palavra) da chave que foi especificada na opção RIDFLD, exceto quando RBA ou RRN é especificado, caso em que KEYLENGTH não é válido. Você deve codificar KEYLENGTH se também estiver usando SYSID (a menos que também esteja usando RBA ou RRN). Se o comprimento especificado for diferente do comprimento definido para o conjunto de dados, ocorre a condição INVREQ. A cláusula KEYLENGTH é necessária quando a função WRITE FILE está sendo enviada, caso contrário, um INVREQ com RESP2 = 23 pode ocorrer.
LENGTH ( valor de dados )
especifica o comprimento, como um valor binário de meia palavra, da área de dados a partir da qual o registro é gravado.
Esta opção deve ser especificada se SYSID for especificado.
Se o arquivo estiver em um sistema remoto e SYSID não for especificado , o parâmetro LENGTH não precisa ser definido aqui, mas deve ser definido na definição de recurso do arquivo.
Se o arquivo estiver em um sistema local, a opção LENGTH deve ser especificada para registros de comprimento variável, mas é opcional para registros de comprimento fixo. É, no entanto, aconselhável especificar o comprimento dos registros de comprimento fixo porque isso faz com que o CICS verifique se o registro que está sendo gravado não é maior do que o definido para o conjunto de dados.
Se um comprimento incorreto for especificado para um WRITE em um arquivo com registros de comprimento fixo, um registro de comprimento fixo é gravado e a condição LENGERR é levantada. Se você fornecer muitos dados, o registro será truncado. Se você fornecer poucos dados, o registro será preenchido com zeros binários.
MASSINSERT
(VSAM) especifica que o comando WRITE é parte de uma operação de inserção em massa, ou seja, uma série de WRITEs, cada um especificando MASSINSERT.
Consulte Bloqueio de nível de registro RLS para obter informações sobre como usar o MASSINSERT em arquivos abertos no modo de acesso RLS.
Você não pode usar MASSINSERT para tabelas de dados do recurso de acoplamento ou mantidas pelo usuário.
NOSUSPEND (apenas RLS)
A solicitação não espera se o VSAM estiver mantendo um bloqueio ativo no registro, incluindo registros bloqueados como resultado de um DEADLOCK.
Uma tarefa pode esperar quando emite uma solicitação WRITE se a chave for para um registro que está sendo modificado, criado ou excluído por outra tarefa, porque o VSAM sempre obtém o bloqueio primeiro.
Nota: As solicitações que especificam NOSUSPEND aguardam pelo menos 1 segundo antes que o CICS retorne a resposta RECORDBUSY.
RBA
(Apenas conjuntos de dados de base VSAM ESDS) especifica que o campo de identificação de registro especificado na opção RIDFLD contém um endereço de byte relativo. Use esta opção apenas ao gravar em uma base ESDS.
RIDFLD ( área de dados )
especifica o campo de identificação do registro. O conteúdo pode ser uma chave, um endereço de byte relativo ou número de registro relativo (para conjuntos de dados VSAM) ou uma referência de bloco, uma chave física e um argumento de desbloqueio (para conjuntos de dados BDAM). Para um endereço de byte relativo ou um número de registro relativo, o formato deste campo deve ser binário de palavra inteira. Se RBA ou XRBA for especificado, o RIDFLD é um campo de saída que contém o endereço de byte relativo (maior ou igual a zero) do registro se o comando for bem-sucedido. Este valor RBA é calculado para você pelo CICS. Se RRN for especificado, RIDFLD conterá o número de registro relativo (maior ou igual a 1) do registro a ser gravado.
Consulte Identificando registros BDAM e identificação de registro VSAM para obter mais informações sobre como definir o campo de identificação de registro.
Ao adicionar registros a um conjunto de dados com chave, o campo deve conter a chave completa.
RRN
(VSAM RRDS) especifica que o campo de identificação de registro especificado na opção RIDFLD contém um número de registro relativo.
SYSID ( nome do sistema )
especifica o nome do sistema para o qual a solicitação é direcionada.
Se você especificar SYSID e omitir RBA, XRBA e RRN, também deverá especificar LENGTH e KEYLENGTH; eles não podem ser encontrados na definição de recurso.
LENGTH deve ser especificado explicitamente ou deve ser capaz de ser padronizado a partir da opção FROM usando a referência de atributo de comprimento em linguagem assembler ou STG e CSTG em PL / I. LENGTH deve ser especificado explicitamente em C.
XRBA
especifica que o campo de identificação de registro especificado na opção RIDFLD contém um endereço de byte relativo estendido. Use esta opção ao gravar em um conjunto de dados ESDS de endereçamento estendido.
Exemplos:
EXEC CICS WRITE
FROM(RECORD)
LENGTH(DATLEN)
FILE('MAIN')
RIDFLD(KEYFLD)