COBOL System Codes
Autor: Luiz Francisco de Assis Borges | Publicado: 2012-02-02T10:56:00-02:00



Prezados Leitores,



Com o intuito de auxiliá-los na identificação e correção de alguns erros que podem ocorrer, em tempo de execução, nos programas COBOL, resolvi listar alguns dos principais System Codes, descrevendo as possíveis causas e soluções para cada um deles.&nbsp;Lembrando que os System Codes descritos abaixo, são relativos ao COBOL de Grande Porte (Mainframe).



S001
Causas:&nbsp;

Erro de DCB - O tamanho do registro ou do bloco não corresponde ao que foi definido no programa ou no JCL.
Tentativa de copiar em fita arquivo de organização não seqüencial. 


Soluções:&nbsp;

Conferir os subparâmetros BLKSIZE e LRECL do DCB.
Tratando-se de fitas sem LABEL, verificar se o volume montado esta correto.
No caso de fita de movimento verificar se não esta sendo fornecido arquivo Cobra/DE no lugar de arquivo disquete ou vice-versa.
Não sendo possível a exata identificação da causa, consultar o manual específico.


S002&nbsp;

Causas: 

Foi tentada a transferência de bloco maior que 32.767 bytes.
Foi definido LRECL maior que 19.069 - capacidade de 1 trilha em disco.
Foi definido RDW - Descritor de Tamanho de Registro - de registro variável maior do que 4 bytes.
Foi encontrado registro VS (variável expandido) maior que o LRECL. No registro VS o registro pode ser maior que o BLKSIZE.


Soluções:

Corrigir o LRECL no DCB, tratando-se de erra na codificação do JCL.
Comunicar-se com a programação se o erro for no tamanho dos registros.


S031&nbsp;

Causas:

Foi tentada uma operação de saída em um arquivo aberto como INPUT.
Foi detectado INVALID KEY ou registro duplicado no DATA-SET.&nbsp;


S036&nbsp;

Causa:

Não foi informada a área primária no parâmetro SPACE.&nbsp;


Solução:

&nbsp;Corrigir o parâmetro SPACE, no JCL, e ressubmeter o JOB.&nbsp;


S03B

Causas:&nbsp;

O arquivo não é sequencial indexado ou não foi fechado corretamente pelo programa que o gerou.
Arquivo de acesso direto na cláusula SELECT e o cartão DD aponta para arquivo sequencial. 


S03D

Causa:

A&nbsp; definição do&nbsp; método de&nbsp; acesso ao&nbsp; arquivo&nbsp; nao confere com o definido&nbsp; em&nbsp; sua&nbsp; geracao.


S0C1



Causas: 

Erro no verbo SORT do COBOL:


A lógica pode não estar passando através do RETURN AT END para sair da OUTPUT PROCEDURE;
Falta nome de seção apos a INPUT ou OUTPUT PROCEDURE;
Tentou-se concluir o processamento antes que todos registros tivessem retornado do SORT;
Tentada abertura de arquivo usado no comando SORT como USING antes de terminar o comando. 


Foi tentada leitura ou gravação de arquivo não aberto.
Foi chamada uma SUBROTINA não existente.
Arquivo de entrada INDEXADO-SEQUENCIAL não especificado como tal na clausula SELECT.


SOC4

Causas:

Estouro de indexador ou subscritor.Foi tentada leitura ou gravação de arquivo não aberto.
Falta cláusula SELECT em tempo de COMPILAÇÃO cobol.
Falta aumentar em 4 bytes a blocagem para registros de tamanho variável.
No verbo SORT do cobol:


Falta nome de seção apos a INPUT ou OUTPUT PROCEDURE;
STOP RUN na INPUT ou OUTPUT procedure.
Uso de uma única área de SD para mais de um SORT intrínseco.


S0C7Ocorrências:

Soma de campo ou em campo com conteúdo não numérico.
Movimentação de dados não numéricos para uma PIC de edição numérica.
Comparação de campos numéricos com conteúdo não numérico.


Causas:

Falta de inicialização em campos de WORKING STORAGE SECTION.
Dados não numéricos num registro lido ou criado.
Soma de campo sinalizado sobre um campo COMP-3 não sinalizado.
Indexador ou subscritor estourado, isto e, está apontando para fora da tabela antes ou depois dela, acessando um outro campo do programa.
Mover zero para item de grupo, move apenas um F0 para o primeiro byte do grupo e completa com espaços à direita. O certo é mover zeros.
Se o item de grupo for de campos COMP-3 não adianta mover zero ou zeros para o grupo. A movimentação deverá ser feita para cada campo. 






Estes são os COBOL System Codes mais comuns, em tempo, atualizarei este post com outros menos comuns.



Espero, mais uma vez, ter contribuído.

Até a próxima!