- Postagens: 2
- Obrigados Recebidos: 2
Discussões sobre a linguagem COBOL e suas melhores práticas.
ASSIGN Clause
- Philippe
- Autor do Tópico
- Desconectado
- Novato
-
Less
Mais
1 semana 4 dias atrás - 1 semana 4 dias atrás #82
por Philippe
ASSIGN Clause foi criado por Philippe
Olá a todos,
Sou iniciante em COBOL e vi com interesse o site de vocês.
Gostaria de executar um pequeno programa em Cobol com o mvs 3.8j tk5 que leia alguns dados em um conjunto de dados (sem membros). Não tenho dificuldades específicas para escrever o código, mas não consigo usar a cláusula ASSIGN na INPUT-OUTPUT SECTION. A seguir, um trecho do código na seção de ambiente:
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT MYFILE ASSIGN TO PHYSDATA
ORGANIZATION IS SEQUENTIAL.
e a seguir o link no jcl :
//PHYSDATA DD DSN=HERC02.COBOL.DATA,DISP=SHR
Quando executo o programa sempre recebo a mensagem de erro informando :
« Device class invalid in system-name »
« external-name not present in system-name »
O conjunto de dados está bem criado e parece ser bom.
Alguma ideia? Eu sei que algo está errado, mas realmente não vejo
Philippe
…
Sou iniciante em COBOL e vi com interesse o site de vocês.
Gostaria de executar um pequeno programa em Cobol com o mvs 3.8j tk5 que leia alguns dados em um conjunto de dados (sem membros). Não tenho dificuldades específicas para escrever o código, mas não consigo usar a cláusula ASSIGN na INPUT-OUTPUT SECTION. A seguir, um trecho do código na seção de ambiente:
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT MYFILE ASSIGN TO PHYSDATA
ORGANIZATION IS SEQUENTIAL.
e a seguir o link no jcl :
//PHYSDATA DD DSN=HERC02.COBOL.DATA,DISP=SHR
Quando executo o programa sempre recebo a mensagem de erro informando :
« Device class invalid in system-name »
« external-name not present in system-name »
O conjunto de dados está bem criado e parece ser bom.
Alguma ideia? Eu sei que algo está errado, mas realmente não vejo
Philippe
…
Ultima edição: 1 semana 4 dias atrás por Philippe.
Os seguintes usuário(s) disseram Obrigado: bopnet
Por favor Entrar ou Registrar para participar da conversa.
- bopnet
-
- Desconectado
- Administrador
-
- I'm free!
Less
Mais
- Postagens: 37
- Obrigados Recebidos: 3
1 semana 2 dias atrás #83
por bopnet
COBOL is not DEAD!
Respondido por bopnet no tópico ASSIGN Clause
Fala, Philippe!
Você trombou num detalhe clássico de “mundo legado”: no MVS 3.8J (TK5), muita coisa ainda segue a gramática do OS/VS COBOL, que é mais antiga. Resultado? Alguns ASSIGN que funcionam no Enterprise COBOL mais novo não batem com o dialeto do TK5.
O erro
“Device class invalid in system-name”
“external-name not present in system-name”
aparece quando o COBOL do MVS antigo não reconhece o system-name do ASSIGN — ele espera um prefixo de classe de dispositivo no nome do sistema.
Como corrigir no TK5 (OS/VS COBOL)
Para arquivo sequencial em disco (QSAM), use o padrão com prefixo UT-S- (ou DA-S-, dependendo do dialeto instalado; no TK5, UT-S- costuma atender bem para sequenciais):
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT MYFILE ASSIGN TO UT-S-PHYSDATA
ORGANIZATION IS SEQUENTIAL.
E no JCL, mantenha o DD assim (DDNAME em maiúsculas e até 8 chars):
//PHYSDATA DD DSN=HERC02.COBOL.DATA,DISP=SHR
Por que isso?
No OS/VS COBOL, o ASSIGN usa um mapeamento por classe de dispositivo (UT-, DA-, PRT-, etc.) + o DDNAME. Já no Enterprise/VS COBOL II, o ASSIGN TO ddname “puro” é aceito. Como o TK5 é MVS 3.8J, ele puxa o jeito antigo — legado raiz.
Abraço e bem-vindo ao Forum COBOL Dicas! 🦖
Você trombou num detalhe clássico de “mundo legado”: no MVS 3.8J (TK5), muita coisa ainda segue a gramática do OS/VS COBOL, que é mais antiga. Resultado? Alguns ASSIGN que funcionam no Enterprise COBOL mais novo não batem com o dialeto do TK5.
O erro
“Device class invalid in system-name”
“external-name not present in system-name”
aparece quando o COBOL do MVS antigo não reconhece o system-name do ASSIGN — ele espera um prefixo de classe de dispositivo no nome do sistema.
Como corrigir no TK5 (OS/VS COBOL)
Para arquivo sequencial em disco (QSAM), use o padrão com prefixo UT-S- (ou DA-S-, dependendo do dialeto instalado; no TK5, UT-S- costuma atender bem para sequenciais):
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT MYFILE ASSIGN TO UT-S-PHYSDATA
ORGANIZATION IS SEQUENTIAL.
E no JCL, mantenha o DD assim (DDNAME em maiúsculas e até 8 chars):
//PHYSDATA DD DSN=HERC02.COBOL.DATA,DISP=SHR
Por que isso?
No OS/VS COBOL, o ASSIGN usa um mapeamento por classe de dispositivo (UT-, DA-, PRT-, etc.) + o DDNAME. Já no Enterprise/VS COBOL II, o ASSIGN TO ddname “puro” é aceito. Como o TK5 é MVS 3.8J, ele puxa o jeito antigo — legado raiz.
Abraço e bem-vindo ao Forum COBOL Dicas! 🦖
COBOL is not DEAD!
Por favor Entrar ou Registrar para participar da conversa.
- Philippe
- Autor do Tópico
- Desconectado
- Novato
-
Less
Mais
- Postagens: 2
- Obrigados Recebidos: 2