Você está na página 1de 164

|

| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| C I C S / M V S |
| |
| |
| (Customer Information Control System / Multiple Virtual Storage) |
| |
| |
| Versão 2.1.1 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
S U M µ R I O

Introdução
CICS/MVS (Customer Information Control System /
Multiple Virtual Storage) ....................................... 1
Convenção ................................................................ 2
Organização do Sistema
Visão global das tabelas e módulos de gerência do CICS/MVS ............... 3
Componentes do CICS/MVS
Módulos de gerência do CICS/MVS ........................................ 4
Tabelas internas do CICS/MVS ........................................... 5
µreas internas do CICS/MVS ............................................. 6
Blocos de Controle do CICS/MVS ......................................... 6
Fluxo de transação do CICS/MVS ........................................... 7
Restrições do PL/I sob o CICS/MVS .......................................... 19
Tamanho de Programa ...................................................... 20
Tamanho da µrea de Trabalho .............................................. 20
O N E R R O R S Y S T E M .............................................. 21
Exemplo de uma aplicação CICS/MVS .......................................... 23
Execution Interface Block (EIB) ............................................ 27
Formato de um comando CICS/MVS no PL/I ..................................... 29
Convenção para Codificação de um comando CICS/MVS no PL/I .................. 30
Manipulação de Erro de Comandos CICS/MVS
Condições de Exceção ..................................................... 31
H A N D L E C O N D I T I O N ......................................... 32
H A N D L E C O N D I T I O N E R R O R ............................ 35
I G N O R E C O N D I T I O N ......................................... 36
O p ç ã o N O H A N D L E ............................................. 37
O p ç ã o R E S P ..................................................... 38
Controle de Terminal
Módulo de Controle de Terminal (TCP) ..................................... 41
R E C E I V E ............................................................ 44
S E N D .................................................................. 50
Controle de Programa
Módulo de Controle de Programa (PCP) ..................................... 53
R E T U R N .............................................................. 55
L I N K .................................................................. 56
X C T L .................................................................. 59
L O A D .................................................................. 62
R E L E A S E ............................................................ 64
Transação conversacional ................................................. 65
Transação Pseudo-conversacional .......................................... 66
R E T U R N T R A N S I D .............................................. 67
A B E N D ................................................................ 70
Dados Transitórios
Conceitos de Dados Transitórios .......................................... 71
Filas de Dados Transitórios .............................................. 72
Destinos de Extrapartição ................................................ 72
Destinos de Intrapartição ................................................ 73
Iniciação de Transação Autom tica ........................................ 74
W R I T E Q T D ........................................................ 76
R E A D Q T D .......................................................... 78
D E L E T E Q T D ...................................................... 80
Memória Tempor ria
Registro de Memória Tempor ria ........................................... 81
W R I T E Q T S ........................................................ 83
R E A D Q T S .......................................................... 85
D E L E T E Q T S ...................................................... 86
Requisição de data e hora no CICS/MVS
A S K T I M E ............................................................ 87
F O R M A T T I M E ...................................................... 88
Mapas
BMS (Basic Mapping Support) .............................................. 93
Independência de Equipamento ............................................. 94
Independência de Formato ................................................. 95
Mapas Físicos ............................................................ 95
Mapas Simbólicos ......................................................... 95
Formato de Campo (FIELD) ............................................... 95
Formato de Bloco ....................................................... 96
Formato de Texto ....................................................... 96
Conjunto de Mapas (MAPSET) ............................................... 97
R E C E I V E M A P ..................................................... 99
S E N D M A P .......................................................... 101

A P Ò N D I C E S

APÒNDICE A
Chamada de rotina CICS/MVS pelo NATURAL .................................. 103
Rotina CICS/MVS chamada tanto por aplicação
CICS/MVS como por aplicação NATURAL .................................... 107
APÒNDICE B
Lista das Condições de Exceção ........................................... 109
APÒNDICE C
Lista dos Códigos de ABEND ............................................... 115
APÒNDICE D
Conteúdo do INCLUDE DFHBMSCA ............................................. 133
APÒNDICE E
Conteúdo do INCLUDE DFHAID ............................................... 137
Comando HANDLE AID ....................................................... 140
APÒNDICE F
Compilação de fontes PL/I-CICS/MVS ....................................... 143
Execução de uma aplicação PL/I-CICS/MVS .................................. 149
APÒNDICE G
Comandos CICS/MVS ........................................................ 153
G L O S S µ R I O .......................................................... 165
Pag. 1

I n t r o d u ç ã o

C I C S / M V S

(Customer Information Control System / Multiple Virtual Storage)

CICS/MVS ‚ um produto (SOFTWARE) IBM, que manipula aplicações ON-LINEs, com-


posto de um conjunto de programas modulares (MACRO SISTEMA) de uso geral em
comunicação de dados que suporta uma rede de centenas de terminais.

O CICS/MVS oferece o seguinte:

* Controle concorrente (simultâneo) da execução de aplicações, servindo v rios


usuários ON-LINE.

* Funções necess rias para que os programas de aplicação comuniquem-se com


terminais locais, remotos e com subsistemas.

* Controle de arquivos e banco de dados, em conjunto com os v rios m‚todos de


acessos fornecidos pela IBM.

* Facilidades para se comunicar com outros CICS/MVS residentes no mesmo compu-


tador ou em computadores interligados.

Ficar mais f cil imaginar que o CICS/MVS ‚ um sistema operacional dentro do


próprio sistema operacional. Nestes termos, o CICS/MVS ‚ um sistema operacional,
cujo JOB cria um ambiente para a execução de aplicações ON-LINE, incluindo
INTERFACEs a arquivos e banco de dados.

ú------------------------------------------------------------------------------┐
| |
| ú-------------------------------┐ |
| | Sistema Operacional | |
| | | |
| | ú-----------------------┐ | |
| | | C I C S / M V S | | |
| | | | | |
| ú-------┐ | | ú---------------┐ | | ú-------┐ |
| | | | | | Programa de | | | | | |
| | |<---->|<->|<->| Aplicação |<->|<->|<--->| | |
| └--Â-Â--┘ | | | do Usu rio | | | | | |
| ú--Á-Á--┐ | | └---------------┘ | | └-------┘ |
| └-------┘ | └-----------------------┘ | arquivos e |
| └-------------------------------┘ banco de dados |
| |
└------------------------------------------------------------------------------┘
Ambiente ON-LINE CICS/MVS

O sistema como um todo ‚ conhecido como sistema DB/DC


(Data-Base/Data-Communication).
Pag. 2

C o n v e n ç ã o

ú---------------------------------------Â--------------------------------------┐
| Transação (Transaction) | Tarefa (Task) |
Ã---------------------------------------Å--------------------------------------´
| Uma transação pode ser considerada |Unidade b sica de trabalho que o com- |
| como sendo uma unidade de | putador deve realizar. Para o |
| processamento (que consiste de um ou |CICS/MVS representa a execução de uma |
|mais programas de aplicação) iniciada | transação para um único usuário. |
| por um único pedido de execução, | |
| sempre através de um terminal. Uma | |
| transação ainda pode necessitar da | |
|iniciação de uma ou mais tarefas para | |
| a sua execução. | |
└---------------------------------------Á--------------------------------------┘
Pag. 3

Organização do Sistema

Visão global das tabelas e módulos de gerência do CICS/MVS

ú------------------------------------------------------------------------------┐
| |
| CICS/MVS ADDRESS SPACE |
| |
| ú-----------------------------┐ |
| | Management Modules | |
| Ã--------------Â--------------Å--------------Â--------------┐ |
| | Terminal | Task | Program | File | |
| | Control | Control | Control | Control | |
| Ã--------------Å--------------Å--------------Å--------------´ |
| | Storage | Dump | Basic | | |
| | Control | Control | Mapping | Etc. | |
| | | | Support | | |
| └--------------Á--------------Á--------------Á--------------┘ |
| |
| ú-----------------------------┐ |
| | Control Tables | |
| Ã-----------Â-----------Â-----Á-----Â-----------Â-----------┐ |
| | Terminal | Program |Processing | File |Destination| |
| | Control | Control |Program | Control |Control | |
| | Table | Table |Table | Table |Table | |
| └-----------Á-----------Á-----------Á-----------Á-----------┘ |
| |
| ú-----------------------------┐ |
| | Service Programs | |
| Ã-----------------------------Å-----------------------------┐ |
| | System Initialization | System Termination | |
| └-----------------------------Á-----------------------------┘ |
| |
| ú-----------------------------┐ |
| | Dynamic Storage Area | |
| Ã-----------------------------Á-----------------------------┐ |
| | ú---------------┐ ú---------------┐ | |
| | | Terminal | | File | | |
| | | Input/Output | | Input/Output | | |
| | | Areas (TIOAs) | | Areas (FIOAs) | | |
| | └---------------┘ └---------------┘ | |
| | ú-------------------┐ | |
| | | Transaction | | |
| | | Work Areas (TWAs) | | |
| | └-------------------┘ | |
| └-----------------------------------------------------------┘ |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 4

Componentes do CICS/MVS

O sistema CICS/MVS consiste em:

* Módulos de gerência;

* Tabelas;

* µreas internas;

* Blocos de Controle.

Módulos de gerência do CICS/MVS

são os programas do CICS/MVS que fazem INTERFACE entre o sistema operacional


e os programas de aplicação. Cada módulo de gerência realiza uma função espe-
cial. Por exemplo, quando um programa de aplicação emite um pedido para ler um
registro, o módulo de gerência, FILE CONTROL PROGRAM processa o referido pedido.
Quando um programa de aplicação emitir um pedido para enviar uma mensagem ao
terminal, o módulo de gerência TERMINAL CONTROL PROGRAM atua como o INTERFACE.
Pedidos de I/O são feitos ao CICS/MVS, ao invés de ao sistema operacional como ‚
feito quando os programas estão no ambiente de processamento BATCH.

ú----------------------Â-------------------------------------------------------┐
| Módulos | Descrição |
Ã----------------------Å-------------------------------------------------------´
| FCP (File Control | Gerência de arquivo. Controla todas as operações dos |
| Program) | arquivos ISAM, DAM e VSAM. |
Ã----------------------Å-------------------------------------------------------´
| KCP (tasK Control | Gerência de tarefa. Controla o uso da CPU dentro da |
| Program) | partição do CICS/MVS e cria as tarefas. |
Ã----------------------Å-------------------------------------------------------´
|PCP (Program Control | Gerência de programa. Localiza os programas e |
| Program) | carrega-os na partição do CICS/MVS. |
Ã----------------------Å-------------------------------------------------------´
|SCP (Storage Control | Gerência de memória. Controla a alocação e liberação |
| Program) | da memória na rea de memória dinâmica (DSA) da |
| | região/partição do CICS/MVS. |
Ã----------------------Å-------------------------------------------------------´
|TCP (Terminal Control | Gerência de terminal. Assegura a comunicação entre o |
| Program) | programa de aplicação e o terminal conectado a este |
| | programa no momento. |
Ã----------------------Å-------------------------------------------------------´
| TDP (Transient Data |Gerência de dados transitórios. Controla as operações |
| Program) | relacionadas com arquivos sequenciais. |
Ã----------------------Å-------------------------------------------------------´
| TSP (Temporary | Gerência de memória tempor ria. Controla a memória |
| Storage Program) | tempor ria de dados. |
└----------------------Á-------------------------------------------------------┘
Pag. 5

ú----------------------Â-------------------------------------------------------┐
| Módulos | Descrição |
Ã----------------------Å-------------------------------------------------------´
| DCP (Dump Control |Módulo que fornece o DUMP de qualquer tarefa CICS/MVS |
| Program) | (e opcionalmente as tabelas do CICS/MVS). |
Ã----------------------Å-------------------------------------------------------´
|ICP (Interval Control | Controla todos os serviços referentes a hora, por |
| Program) |exemplo, a suspensão de uma tarefa por um determinado |
| | período de tempo. |
Ã----------------------Å-------------------------------------------------------´
| ISC |Fornece facilidades de comunicação entre um CICS/MVS e |
| (Intercommunication |outro que pode estar residente no mesmo computador ou |
| Control Program) | em um outro computador interligado. |
Ã----------------------Å-------------------------------------------------------´
| BMS (Basic Mapping | Módulo que facilita a exibição de informação em uma |
| Support) | grande variedade de terminais e oferece ainda a |
| |independência de dispositivos, paginação em terminal, |
| | e capacidade de direcionamento de mensagem. |
└----------------------Á-------------------------------------------------------┘

Tabelas internas do CICS/MVS

Definem o ambiente do sistema CICS/MVS. As tabelas, que são geradas pelo pro-
gramador de sistemas, estão funcionalmente associadas com os módulos de
gerência. Por exemplo, todas as definições de arquivo estão na FILE CONTROL TA-
BLE de modo que as definições podem ser compartilhadas por todos os programas de
aplicação e tarefas. Por este motivo, os arquivos não são definidos no programa
de aplicação como quando eles estão num programa BATCH. A TERMINAL CONTROL TABLE
define cada terminal na rede; assim o programa de aplicação não precisa
preocupar-se com os atributos físicos dos v rios terminais no sistema. Nem todos
os módulos de gerência tem tabelas associadas.

ú----------------------Â-------------------------------------------------------┐
| Tabelas | Descrição |
Ã----------------------Å-------------------------------------------------------´
| DCT (Destination | Tabela de destino. Contém informações sobre a |
| Control Table) | definição do arquivo sequencial gerenciado pelo TDP. |
Ã----------------------Å-------------------------------------------------------´
| FCT (File Control |Tabela de arquivo. Contém entradas para arquivos ISAM, |
| Table) | DAM, ou VSAM gerenciado pelo FCP, com a definição de |
| | arquivo correspondente. |
Ã----------------------Å-------------------------------------------------------´
|PCT (Program Control |Tabela de transação. Contém uma entrada por código de |
| Table) | transação definido, a fim de conferir o código e |
| | associ -lo com um programa em processamento. |
Ã----------------------Å-------------------------------------------------------´
| PPT (Program | Tabela de programas. Contém uma entrada por programa |
| Processing Table) | em processamento, dando o endereço do programa na |
| | memória. |
└----------------------Á-------------------------------------------------------┘
Pag. 6

ú----------------------Â-------------------------------------------------------┐
| Tabelas | Descrição |
Ã----------------------Å-------------------------------------------------------´
|TCT (Terminal Control |Tabela de terminais. Contém uma entrada para cada ter- |
| Table) | minal controlado pelo CICS/MVS dentro da instalação |
| | descrevendo o terminal e seu estado. |
└----------------------Á-------------------------------------------------------┘

µreas internas do CICS/MVS

ú----------------------Â-------------------------------------------------------┐
| reas internas | Descrição |
Ã----------------------Å-------------------------------------------------------´
| TIOA (Terminal I/O | µrea de entrada/saída de terminal. |
| Area) | |
Ã----------------------Å-------------------------------------------------------´
|FIOA (File I/O Area) | µrea de entrada/saída de arquivo. |
| | |
Ã----------------------Å-------------------------------------------------------´
| EIB (Exec Interface | Ver "Bloco de Interface de Execução". |
| Block) | |
└----------------------Á-------------------------------------------------------┘

Blocos de Controle do CICS/MVS

ú----------------------Â-------------------------------------------------------┐
| | |
Ã----------------------Å-------------------------------------------------------´
| TCA (Task Control | µrea que contém informações pertinentes … |
| Area) |tarefa. Contém indicadores de localização para o pro- |
| | grama de aplicação e para a entrada do terminal na |
| | TERMINAL CONTROL TABLE. |
Ã----------------------Å-------------------------------------------------------´
| CSA (Common System | Principal bloco de controle do CICS/MVS. Contém, |
| Area) |informação geral do sistema usada pelos v rios módulos |
| |de gerência, incluindo os endereços das tabelas e dos |
| | próprios módulos de gerência. |
└----------------------Á-------------------------------------------------------┘
Pag. 7

Fluxo de transação do CICS/MVS

O CICS/MVS supervisiona toda a atividade de comunicação de dados, o que sig-


nifica que o CICS/MVS:

* gerencia os terminais,
* gerencia os dados, e
* gerencia os programas de aplicação.

Vejamos o que acontece quando uma transação do CICS/MVS ‚ entrada num termi-
nal.

Quando o CICS/MVS for inicializado, todos os módulos principais de gerência,


tabelas, e a Common System Area (CSA) são carregados na memória.

A seguinte ilustração mostra a CSA na região/partição do CICS/MVS. Os módulos


de gerência e tabelas serão adicionados ao diagrama conforme se fizer referência
a eles.

ú------------------------------------------------------------------------------┐
| ú--------------------------------┐ |
| | Common System Area | |
| Ã--------------------------------´ |
| | | ú--------┐ |
| | Ã------´ | |
| | | | | |
| | | └---ÂÂ---┘ |
| | | ú-ÁÁ-┐ |
| | | └----┘ |
| | | terminal |
| └--------------------------------┘ |
└------------------------------------------------------------------------------┘

Uma transação entrada por um operador de terminal consiste de duas partes:


uma identificação de transação seguida por dados que devem ser processados. Con-
siderar que um operador queira ter informação sobre a situação de um ítem de
invent rio. A identificação de transação ‚ "STAT" e o número do ítem a ser veri-
ficado ‚ 195.

ú------------------------------------------------------------------------------┐
| |
| ú-> identificação da transação |
| ú-Å-----------------┐ |
| |STAT 195-----------Å---> número do ítem do |
| | | invent rio a ser |
| | | verificado |
| | | |
| | | |
| └--------Â-Â--------┘ |
| ú----Á-Á----┐ |
| └-----------┘ |
| terminal |
| |
└------------------------------------------------------------------------------┘
Pag. 8

Quando a transação STAT ‚ entrada, o módulo de gerência TCP lê a entrada na


região/partição do CICS/MVS. Antes que os dados possam ser armazenados, a
memória deve ser obtida para uma TIOA (µrea de entrada/saída do terminal). O TCP
pede que o SCP aloque a quantidade apropriada de memória. O SCP ‚ o módulo de
gerência que ‚ usado por todos os outros módulos do CICS/MVS e programas de
aplicação da região/partição. Uma vez adquirida a memória, o TCP move a mensagem
de entrada para a TIOA.

ú------------------------------------------------------------------------------┐
| |
| ú--------------------------------┐ |
| | Common System Area | |
| ÃÂÂÂÂÂÂÂÂÂÂÂÂ--------------------´ |
| ||TCP|||SCP|| | |
| ÃÁÁÁÁÁÁÁÁÁÁÁ┘ | |
| | | ú--------┐ |
| | Ã------´STAT 195| |
| | TIOA | | | |
| | úÂÂÂÂÂÂÂÂ┐ | └---ÂÂ---┘ |
| | |STAT 195| | ú-ÁÁ-┐ |
| | └ÁÁÁÁÁÁÁÁ┘ | └----┘ |
| | | terminal |
| └--------------------------------┘ |
| |
└------------------------------------------------------------------------------┘

Todos os terminais no sistema são descritos na TCT, sendo cada terminal re-
presentado por uma entrada (TCTTE - Terminal Control Table Terminal Entry).
Sempre que uma mensagem for recebida de um terminal, um indicador de localização
para a rea de entrada do terminal ‚ armazenada nesta TCTTE do terminal.

ú------------------------------------------------------------------------------┐
| |
| ú--------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â--------------------´ |
| | TCP | SCP | | |
| Ã-----Á-----┘ | |
| | úÂÂÂÂÂÂÂ┐ | ú--------┐ |
| | ú------------´|TCTTE|Ã--Å------´STAT 195| |
| | TIOA V ÃÁÁÁÁÁÁÁ´ | | | |
| | ú--------┐ Ã-------´ | └---ÂÂ---┘ |
| | |STAT 195| Ã-------´ | ú-ÁÁ-┐ |
| | └--------┘ └-------┘ | └----┘ |
| | | terminal |
| └--------------------------------┘ |
| |
└------------------------------------------------------------------------------┘
Pag. 9

Notar que nenhuma outra transação pode ser lançada a partir deste terminal
at‚ que a transação, presentemente solicitada haja concluído.

Após a entrada da transação, o KCP que possui a função de iniciar uma tarefa
para processar a transação, verifica na PCT para determinar se a identificação
da transação de entrada ‚ v lida. O PCT contém uma entrada para cada transação
que possa ser processada no sistema. Cada entrada da PCT contém, entre outras
coisas, uma identificação de transação e o nome do programa de aplicação que
deve ser executada em resposta …quela transação.

Se uma identificação de transação que entrou estiver listada na PCT, o KCP


cria uma tarefa para processar a transação. A criação de uma tarefa envolve a
obtenção e inicialização de uma rea de Controle de Tarefa (TCA). A TCA
‚ o bloco de controle que o CICS/MVS usa para controlar o processamento de uma
transação. Ela d acesso a todas as reas de memória obtidas em conexão com a
tarefa. A TCA tamb‚m serve como o veículo de comunicação entre o programa de
aplicação e os módulos de gerência do CICS/MVS.

Uma vez criada uma TCA para uma tarefa, esta tarefa ‚ ligada ao terminal
requisitante por meio de indicadores de localização armazenados tanto na TCA
como na TCTTE. Em transação conversacional haver subsequentes mensagens de en-
trada. Estas mensagens são passadas para a tarefa como dados.

ú------------------------------------------------------------------------------┐
| |
| |
| ú--------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----ÂÂÂÂÂÂÂ--------------´ |
| | TCP | SCP ||KCP|| PCT | |
| Ã-----Á-----ÁÁÁÁÁÁ┘ úÂÂÂÂÂÂÂ┐ | |
| | |STAT:||| | |
| | |STATPGM| | |
| | ÃÅÅÅÅÅÅÅ´ | |
| | ||||||||| | |
| | TIOA ÃÁÁÁÁÁÁÁ┘ | |
| | ú--------┐ ú-------┐ | ú--------┐ |
| | |STAT 195Ã-------->| TCTTE Ã--Å------´STAT 195| |
| | └--------┘ ú--->Ã-------´ | | | |
| | úÂÂÂÂÂÂÂÂ┐ | Ã-------´ | └---ÂÂ---┘ |
| | |||TCA 1|Ã----┘ Ã-------´ | ú-ÁÁ-┐ |
| | └ÁÁÁÁÁÁÁÁ┘ └-------┘ | └----┘ |
| | | terminal |
| └--------------------------------┘ |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 10

O Bloco de Interface de Execução (EIB) ‚ criado e inicializado com informações


da tarefa. O Execute Interface Program (EIP) ‚ responsável pela conversão dos
comandos codificados em pedidos que podem ser interpretados pelos módulos de
gerência.

ú------------------------------------------------------------------------------┐
| |
| |
| |
| |
| ú--------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----ÂÂÂÂÂÂÂ--------´ |
| | TCP | SCP | KCP ||EIP|| | |
| Ã-----Á-----Á-----ÁÁÁÁÁÁ┘ | |
| | PCT | |
| | ú-------┐ | |
| | |STAT: | | |
| | |STATPGM| | |
| | Ã-------´ | |
| | | | | |
| | └-------┘ | |
| | TIOA | |
| | ú--------┐ ú-------┐ | ú--------┐ |
| | |STAT 195Ã-------->| TCTTE Ã--Å------´STAT 195| |
| | └--------┘ ú--->Ã-------´ | | | |
| | ú--------┐ | Ã-------´ | └---ÂÂ---┘ |
| | | TCA 1 Ã----┘ Ã-------´ | ú-ÁÁ-┐ |
| | └--------┘ └-------┘ | └----┘ |
| | | terminal |
| | úÂÂÂÂÂ┐ | |
| | ||EIB|| | |
| | └ÁÁÁÁÁ┘ | |
| | | |
| └--------------------------------┘ |
| |
| |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 11

A entrada da PCT para uma transação especifica o nome do programa de


aplicação que deve processar a transação. O nome do programa ‚ usado pelo
Program Control Program (PCP) para selecionar e iniciar este programa.

Todos os programas de aplicação sob o CICS/MVS são descritos na Processing


Program Table (PPT). A entrada da PPT para um programa contém informações para a
localização do programa na biblioteca de programas do CICS/MVS, e se um programa
j est ou não na memória e em uso. O PCP verifica a entrada na PPT para o pro-
grama (STATPGM no nosso exemplo) e carrega o programa na memória se necess rio.

A cópia da AUTOMATIC STORAGE do programa para a tarefa tamb‚m ‚ criada nesta


ocasião.

ú------------------------------------------------------------------------------┐
| |
| |
| ú--------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----Â-----ÂÂÂÂÂÂÂ--´ |
| | TCP | SCP | KCP | EIP ||PCP|| | |
| Ã-----Á-----Á-----Á-----ÁÁÁÁÁÁ┘ | |
| | PPT PCT | |
| | úÂÂÂÂÂÂÂ┐ ú-------┐ | |
| | |STATPGM| |STAT: | | |
| | ÃÅÅÅÅÅÅÅ´ |STATPGM| | |
| | ÃÅÅÅÅÅÅÅ´ Ã-------´ | |
| | ÃÅÅÅÅÅÅÅ´ | | | |
| | └ÁÁÁÁÁÁÁ┘ └-------┘ | |
| ú---------┐ | TIOA | |
| |Bibliot. | | ú--------┐ ú-------┐ | ú--------┐ |
| | de Ã---´ |STAT 195Ã-------->| TCTTE Ã--Å------´STAT 195| |
| |programas| | └--------┘ ú--->Ã-------´ | | | |
| └---------┘ | ú--------┐ | Ã-------´ | └---ÂÂ---┘ |
| | | TCA 1 Ã----┘ Ã-------´ | ú-ÁÁ-┐ |
| | └--------┘ └-------┘ | └----┘ |
| | úÂÂÂÂÂÂÂÂÂ┐ ú-----┐ | terminal |
| | |Defin.dasÃ----┐ | EIB | | |
| | | reas de| V └-----┘ | |
| | |||dados|||úÂÂÂÂÂÂÂÂÂÂ┐ | |
| | ÃÅÅÅÅÅÅÅÅÅ´|Cópia das|| | |
| | ||Instr.|||| reas de|| | |
| | |doSTATPGM|||||dados||| | |
| | └ÁÁÁÁÁÁÁÁÁ┘└ÁÁÁÁÁÁÁÁÁÁ┘ | |
| | | |
| └--------------------------------┘ |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 12

Uma das primeiras coisas que um programa de aplicação deve fazer quando ele
recebe o controle ‚ enviar um comando RECEIVE do TCP. Em resposta a este co-
mando, o EIP move a mensagem de entrada da TIOA para a rea de trabalho do pro-
grama e então libera a TIOA. (Se a opção SET estiver especificada no comando
RECEIVE, um indicador de localização (POINTER) dentro do programa ser
posicionado para apontar para a TIOA).

ú------------------------------------------------------------------------------┐
| |
| |
| |
| |
| ú-----------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----Â-----Â-----Â-----´ |
| | TCP | SCP | KCP | EIP | PCP | | |
| Ã-----Á-----Á-----Á-----Á-----┘ | |
| | PPT PCT | |
| | ú-------┐ ú-------┐ | |
| | |STATPGM| |STAT: | | |
| | Ã-------´ |STATPGM| | |
| | Ã-------´ Ã-------´ | |
| | Ã-------´ | | | |
| | └-------┘ └-------┘ | |
| ú---------┐ | | |
| |Bibliot. | | ú-------┐ | ú--------┐ |
| | de Ã---´ ú------------>| TCTTE Ã-----Å------´STAT 195| |
| |programas| | | Ã-------´ | | | |
| └---------┘ | ú----Á---Â-----┐ Ã-------´ | └---ÂÂ---┘ |
| | | TCA 1 | | Ã-------´ | ú-ÁÁ-┐ |
| | └--------Á---┐ | └-------┘ | └----┘ |
| | ú---------┐ | | ú-----┐ | terminal |
| | |Defin.das| | └---->| EIB | | |
| | | reas de| V └-----┘ | |
| | | dados |úÂÂÂÂÂÂÂÂÂÂ┐ | |
| | Ã---------´|STAT 195||| | |
| | | Instr. ||||||||||||| | |
| | |doSTATPGM||||||||||||| | |
| | └---------┘└ÁÁÁÁÁÁÁÁÁÁ┘ | |
| | W/S COPY | |
| └-----------------------------------┘ |
| |
| |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 13

A seguir, o STATPGM emite um pedido para a leitura do registro 195 do arquivo


MESTRE. O File Control Program (FCP) usa a entrada da File Control Table (FCT)
para o arquivo para determinar suas características. O FCP inicia então a
operação de leitura.

ú------------------------------------------------------------------------------┐
| |
| |
| |
| |
| |
| ú-----------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----Â-----Â-----´ |
| | TCP | SCP | KCP | EIP | PCP ||FCP|| |
| Ã-----Á-----Á-----Á-----Á-----ÁÁÁÁÁÁ´ |
| | FCT PPT PCT | |
| ú---------┐ | úÂÂÂÂÂÂÂ┐ ú-------┐ ú-------┐ | |
| | Arquivo | | |MASTER | |STATPGM| |STAT: | | |
| | Ã---´ ÃÅÅÅÅÅÅÅ´ Ã-------´ |STATPGM| | |
| | MESTRE | | ÃÅÅÅÅÅÅÅ´ Ã-------´ Ã-------´ | |
| └---------┘ | ÃÅÅÅÅÅÅÅ´ Ã-------´ | | | |
| | └ÁÁÁÁÁÁÁ┘ └-------┘ └-------┘ | |
| ú---------┐ | | |
| |Bibliot. | | ú-------┐ | ú--------┐ |
| | de Ã---´ ú------------>| TCTTE Ã-----Å------´STAT 195| |
| |programas| | | Ã-------´ | | | |
| └---------┘ | ú----Á---Â-----┐ Ã-------´ | └---ÂÂ---┘ |
| | | TCA 1 | | Ã-------´ | ú-ÁÁ-┐ |
| | └--------Á---┐ | └-------┘ | └----┘ |
| | ú---------┐ | | ú-----┐ | terminal |
| | |Defin.das| | └---->| EIB | | |
| | | reas de| V └-----┘ | |
| | | dados |ú----------┐ | |
| | Ã---------´|STAT 195 | | |
| | | Instr. || | | |
| | |doSTATPGM|| | | |
| | └---------┘└----------┘ | |
| | W/S COPY | |
| └-----------------------------------┘ |
| |
| |
| |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 14

Nesse interím, suponha que um operador em um outro terminal tenha entrado uma
transação STAT para o número de ítem 210. Pelo fato de o CICS/MVS ser um sistema
de multiexecução de tarefas, uma tarefa pode ser iniciada para processar esta
segunda operação enquanto a primeira estiver esperando pelo t‚rmino de uma
operação de I/O. Todo o processamento de inicialização de tarefa descrito para a
primeira tarefa ocorre agora para a nova tarefa.

ú------------------------------------------------------------------------------┐
| |
| ú-----------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----Â-----Â-----Â-----´ |
| | TCP | SCP | KCP | EIP | PCP | FCP | |
| Ã-----Á-----Á-----Á-----Á-----Á-----´ |
| | FCT PPT PCT | |
| ú---------┐ | ú-------┐ ú-------┐ ú-------┐ | |
| | Arquivo | | |MASTER | |STATPGM| |STAT: | | ú--------┐ |
| | Ã---´ Ã-------´ Ã-------´ |STATPGM| | ú---´STAT 195| |
| | MESTRE | | Ã-------´ Ã-------´ Ã-------´ | | | | |
| └---------┘ | Ã-------´ Ã-------´ | | | | └---ÂÂ---┘ |
| | └-------┘ └-------┘ └-------┘ | | ú-ÁÁ-┐ |
| ú---------┐ | | | └----┘ |
| |Bibliot. | | ú-------┐ | | terminal |
| | de Ã---´ ú------------>| TCTTE Ã-----Å--┘ ú--------┐ |
| |programas| | | Ã-------Å-----Å------´STAT 210| |
| └---------┘ | ú----Á---Â-----┐ | TCTTE Ã- - ┐| | | |
| | | TCA 1 | | Ã-------´<-┐ '| └---ÂÂ---┘ |
| | └--------Á---┐ | └-------┘ | '| ú-ÁÁ-┐ |
| | ú---------┐ | | ú-----┐ | '| └----┘ |
| | |Defin.das| | └---->| EIB | | '| terminal |
| | | reas de| V └-----┘ | '| |
| | | dados |ú----------┐ | '| |
| | Ã---------´|STAT 195 | | '| |
| | |Instr. do|| |úÂÂÂÂÂÂÅ┐'| |
| | | STATPGM || |||TCA 2||'| |
| | └---------┘└----------┘└ÁÅÁÁÅÁÁ┘'| |
| | W/S COPY | | '| |
| | ú----------┐<-┘ | '| |
| | |STAT 210 | V '| |
| | | |úÂÂÂÂÂ┐ '| |
| | | |||EIB|| '| |
| | └----------┘└ÁÁÁÁÁ┘ '| |
| | W/S COPY TIOA '| |
| | úÂÂÂÂÂÂÂÂ┐ '| |
| | |STAT 210|<-┘| |
| | └ÁÁÁÁÁÁÁÁ┘ | |
| | | |
| └-----------------------------------┘ |
| |
└------------------------------------------------------------------------------┘
Pag. 15

O STATPGM ‚ então iniciado para a nova tarefa. O comando RECEIVE (ver mais
adiante) ‚ emitido para acesso … mensagem de entrada, e um pedido ‚ emitido para
ler o registro 210 do arquivo MESTRE. Enquanto o FCP estiver processando este
pedido, a primeira tarefa retoma o controle.

O registro para o ítem 195 foi lido pelo FCP na memória intermedi ria de
arquivo. Como resultado do comando READ (ver mais adiante) do programa (opção
INTO), o registro ‚ movido desta memória intermedi ria para a rea de trabalho
do programa.

ú------------------------------------------------------------------------------┐
| ú-----------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----Â-----Â-----Â-----´ |
| | TCP | SCP | KCP | EIP | PCP | FCP | |
| Ã-----Á-----Á-----Á-----Á-----Á-----´ |
| | FCT PPT PCT | |
| ú---------┐ | ú-------┐ ú-------┐ ú-------┐ | |
| | Arquivo | | |MASTER | |STATPGM| |STAT: | | ú--------┐ |
| | Ã---´ Ã-------´ Ã-------´ |STATPGM| | ú---´STAT 195| |
| | MESTRE | | Ã-------´ Ã-------´ Ã-------´ | | | | |
| └---------┘ | Ã-------´ Ã-------´ | | | | └---ÂÂ---┘ |
| | └-------┘ └-------┘ └-------┘ | | ú-ÁÁ-┐ |
| ú---------┐ | | | └----┘ |
| |Bibliot. | | ú-------┐ | | terminal |
| | de Ã---´ ú------------>| TCTTE Ã-----Å--┘ ú--------┐ |
| |programas| | | Ã-------Å-----Å------´STAT 210| |
| └---------┘ | ú----Á---Â-----┐ | TCTTE Ã- - ┐| | | |
| | | TCA 1 | | Ã-------´<-┐ '| └---ÂÂ---┘ |
| | └--------Á---┐ | └-------┘ | '| ú-ÁÁ-┐ |
| | ú---------┐ | | ú-----┐ | '| └----┘ |
| | |Defin.das| | └---->| EIB | | '| terminal |
| | | reas de| V └-----┘ | '| |
| | | dados |ú----------┐ | '| |
| | Ã---------´|STAT 195 | | '| |
| | |Instr. do|| 195... |ú------Å┐'| |
| | | STATPGM || || TCA 2 |'| |
| | └---------┘└----Â-----┘└-Å--Å--┘'| |
| | ú----------┘ | | '| |
| | V W/S COPY | | '| |
| | úÂÂÂÂÂÂÂÂÂ┐ú----------┐<-┘ | '| |
| | |195...|||||STAT 210 | V '| |
| | └ÁÁÁÁÁÁÁÁÁ┘| |ú-----┐ '| |
| | FILE BUFFER| || EIB | '| |
| | └----------┘└-----┘ '| |
| | W/S COPY TIOA '| |
| | úÂÂÂÂÂÂÂÂ┐ '| |
| | |STAT 210|<-┘| |
| | └ÁÁÁÁÁÁÁÁ┘ | |
| | | |
| └-----------------------------------┘ |
└------------------------------------------------------------------------------┘
Pag. 16

O programa formata então uma resposta para a consulta e emite um comando SEND
(ver mais adiante) do TCP para transmitir a mensagem. o CICS/MVS obtém uma TIOA
para a mensagem e posiciona um indicador na TCTTE indicando que este terminal
tem uma saída pendente.

ú------------------------------------------------------------------------------┐
| |
| |
| ú-----------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----Â-----Â-----Â-----´ |
| | TCP | SCP | KCP | EIP | PCP | FCP | |
| Ã-----Á-----Á-----Á-----Á-----Á-----´ |
| | FCT PPT PCT | |
| ú---------┐ | ú-------┐ ú-------┐ ú-------┐ | |
| | Arquivo | | |MASTER | |STATPGM| |STAT: | | ú--------┐ |
| | Ã---´ Ã-------´ Ã-------´ |STATPGM| | ú---´STAT 195| |
| | MESTRE | | Ã-------´ Ã-------´ Ã-------´ | | | | |
| └---------┘ | Ã-------´ Ã-------´ | | | | └---ÂÂ---┘ |
| | └-------┘ └-------┘ └-------┘ | | ú-ÁÁ-┐ |
| ú---------┐ | úÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ┐ | | └----┘ |
| |Bibliot. | | |PART 195/QTY 257| ú-------┐ | | terminal |
| | de Ã---´ └ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ->| TCTTE Ã-----Å--┘ ú--------┐ |
| |programas| | TIOA ú------------>Ã-------Å-----Å------´STAT 210| |
| └---------┘ | ú----Á---Â-----┐ | TCTTE | | | | |
| | | TCA 1 | | Ã-------´<-┐ | └---ÂÂ---┘ |
| | └--------Á---┐ | └-------┘ | | ú-ÁÁ-┐ |
| | ú---------┐ | | ú-----┐ | | └----┘ |
| | |Defin.das| | └---->| EIB | | | terminal |
| | | reas de| V └-----┘ | | |
| | | dados |úÂÂÂÂÂÂÂÂÂÂ┐ | | |
| | Ã---------´|STAT 195 | | | |
| | |Instr. do|| 195... |ú------Å┐ | |
| | | STATPGM ||PART 195 || TCA 2 | | |
| | └---------┘|QTY 257 |└-Å--Å--┘ | |
| | └ÁÁÁÁÁÁÁÁÁÁ┘ | | | |
| | W/S COPY | | | |
| | ú----------┐<-┘ | | |
| | |STAT 210 | V | |
| | | |ú-----┐ | |
| | | || EIB | | |
| | └----------┘└-----┘ | |
| | W/S COPY | |
| | | |
| └-----------------------------------┘ |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 17

Depois do comando SEND, o programa de aplicação emite um comando RETURN (ver


mais adiante) para terminar a tarefa. Quando a tarefa termina, toda a memória da
tarefa ‚ liberada exceto a rea de saída do terminal. Esta rea ‚ retida pelo
CICS/MVS at‚ que o TCP tenha realmente transmitido a mensagem. Neste ponto, o
STATPGM ainda est sendo usado pela tarefa pedida do segundo terminal.

ú------------------------------------------------------------------------------┐
| |
| |
| ú-----------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----Â-----Â-----Â-----´ |
| | TCP | SCP | KCP | EIP | PCP | FCP | |
| Ã-----Á-----Á-----Á-----Á-----Á-----´ |
| | FCT PPT PCT | |
| ú---------┐ | ú-------┐ ú-------┐ ú-------┐ | |
| | Arquivo | | |MASTER | |STATPGM| |STAT: | | ú--------┐ |
| | Ã---´ Ã-------´ Ã-------´ |STATPGM| | ú---´STAT 195| |
| | MESTRE | | Ã-------´ Ã-------´ Ã-------´ | | | | |
| └---------┘ | Ã-------´ Ã-------´ | | | | └---ÂÂ---┘ |
| | └-------┘ └-------┘ └-------┘ | | ú-ÁÁ-┐ |
| ú---------┐ | ú----------------┐ | | └----┘ |
| |Bibliot. | | |PART 195/QTY 257| ú-------┐ | | terminal |
| | de Ã---´ └----------------Á->| TCTTE Ã-----Å--┘ ú--------┐ |
| |programas| | TIOA Ã-------Å-----Å------´STAT 210| |
| └---------┘ | | TCTTE | | | | |
| | Ã-------´<-┐ | └---ÂÂ---┘ |
| | └-------┘ | | ú-ÁÁ-┐ |
| | ú---------┐ | | └----┘ |
| | |Defin.das| | | terminal |
| | | reas de| | | |
| | | dados | | | |
| | Ã---------´ | | |
| | |Instr. do| ú------Å┐ | |
| | | STATPGM | | TCA 2 | | |
| | └---------┘ └-Å--Å--┘ | |
| | | | | |
| | ú----------┐<-┘ | | |
| | |STAT 210 | V | |
| | | |ú-----┐ | |
| | | || EIB | | |
| | └----------┘└-----┘ | |
| | W/S COPY | |
| | | |
| └-----------------------------------┘ |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 18

Quando a primeira tarefa termina, a segunda tarefa pode prosseguir o


processamento. Ela tamb‚m formata uma resposta, emite um comando SEND, e ter-
mina. Quando esta tarefa termina, o PCP marca a entrada na PPT para o STATPGM
como não-em-uso, mas o programa permanece na memória enquanto a memória não for
necess ria. Isto permite que o CICS/MVS reuse a cópia que j est na memória
caso o programa seja pedido por uma outra transação.

ú------------------------------------------------------------------------------┐
| |
| |
| |
| |
| ú-----------------------------------┐ |
| | Common System Area | |
| Ã-----Â-----Â-----Â-----Â-----Â-----´ |
| | TCP | SCP | KCP | EIP | PCP | FCP | |
| Ã-----Á-----Á-----Á-----Á-----Á-----´ |
| | FCT PPT PCT | |
| ú---------┐ | ú-------┐ ú-------┐ ú-------┐ | |
| | Arquivo | | |MASTER | |STATPGM| |STAT: | | úÂÂÂÂÂÂÂÂ┐ |
| | Ã---´ Ã-------´ Ã-------´ |STATPGM| | ú---´STAT 195| |
| | MESTRE | | Ã-------´ Ã-------´ Ã-------´ | | |QTY 257 | |
| └---------┘ | Ã-------´ Ã-------´ | | | | └ÁÁÁÅÅÁÁÁ┘ |
| | └-------┘ └-------┘ └-------┘ | | ú-ÁÁ-┐ |
| ú---------┐ | | | └----┘ |
| |Bibliot. | | ú-------┐ | | terminal |
| | de Ã---´ | TCTTE Ã-----Å--┘ ú--------┐ |
| |programas| | Ã-------´ | |STAT 210| |
| └---------┘ | ú---´ TCTTE Ã-----Å------´ | |
| | | Ã-------´ | └---ÂÂ---┘ |
| | | └-------┘ | ú-ÁÁ-┐ |
| | ú---------┐ | | └----┘ |
| | |Defin.das| | | terminal |
| | | reas de| | | |
| | | dados | V | |
| | Ã---------´ ú----------------┐ | |
| | |Instr. do| |PART 210/QTY 430| | |
| | | STATPGM | └----------------┘ | |
| | └---------┘ TIOA | |
| | | |
| └-----------------------------------┘ |
| |
| |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 19

Restrições do PL/I sob o CICS/MVS

As seguintes restrições aplicam-se a programas PL/I que serão usadas como


aplicações CICS/MVS (vide manual: PL/I Optimizing Compile Programmer's Guide).

1. Não usar as seguintes BUILT-IN:

DATE
TIME
PLISRT
PLICKPT
PLICANC
PLIRETC
PLIRETV

2. Não usar as seguintes BUILT-IN de MUSTITASKING:

COMPLETION
PRIORITY
STATUS

3. Não usar as seguintes opções de MULTITASKING:

EVENT
PRIORITY
TASK

4. Não usar as seguintes instruções PL/I:

READ
WRITE
REWRITE
GET
PUT
OPEN
CLOSE
DISPLAY
DELAY
LOCATE
DELETE
UNLOCK
STOP
HALT
EXIT
FETCH
RELEASE

5. Não se deve usar as seguintes rotinas externas:

ABEND
ABEDUMP
Pag. 20

6. Não usar as seguintes facilidades de depuração:

FLOW
COUNT
REPORT
GONUMBER
GOSTMT
CHECK/NOCHECK

7. Não se deve usar o SORT/MERGE do PL/I.

8. Não se deve usar reas STATICs (exceto para dados somente para leitura
(READ-ONLY)).

9. Se for declarado uma vari vel com atributos STATIC e EXTERNAL, dever
tamb‚m incluir o atributo INITIAL. Senão, tal declaração ir gerar um CSECT
comum que não poder ser manipulado pelo CICS.

10. Não se pode usar a opção de 48 CHARACTER SET do PL/I.

11. Não se pode codificar os programas PL/I com palavras chaves em minúscula.

Observação: Não utilizar os ítens acima descritos, pois eles causam s‚rios da-
nos ao CICS/MVS, por exemplo, a subrotina externa "ABEND" que no
PL/I ‚ utilizada para forçar um t‚rmino anormal da execução, no
CICS/MVS al‚m dele ABENDar a execução da tarefa acaba ABENDando o
próprio CICS/MVS.

Tamanho de Programa

O módulo objeto resultante de qualquer programa de aplicação CICS/MVS, não


dever ocupar mais que 524.152 bytes (512K) da memória principal.

Tamanho da µrea de Trabalho

O tamanho da rea de trabalho (Working Storage) não deve ultrapassar de


65.560 bytes (64K).
Pag. 21

O N E R R O R S Y S T E M

Normalmente para o tratamento de erro PL/I, ‚ usado a instrução "ON ERROR".


Algumas vezes pode ocorrer de no próprio procedimento de tratamento de erro aca-
bar ABENDando, oque acabaria acionando novamente o "ON ERROR" e ficar num LOOP
de ABENDs. Isto para aplicações BATCH não acarretaria s‚rios danos, pois depois
de algum tempo este ABENDaria por tempo de execução m xima do JOB. Mas para uma
aplicação CICS/MVS, isto se torna penoso, pois esta aplicação ficaria neste LOOP
at‚ que seja restartado o JOB do CICS/MVS.

ú------------------------------------------------------------------------------┐
| |
| DCL VARIAVEL FIXED (15); |
| ... |
| ú------------------------------>ON ERROR SNAP BEGIN; |
| | DO; |
| |<--------------------------------PUT SKIP DATA (VARIAVEL); |
| | CALL ABEND; |
| | END; |
| |ABEND DATA EXCEPTION ou ... |
| └-------------------------------VARIAVEL = 'AAAAAAA'; |
| DATA CONVERSION ... |
| |
└------------------------------------------------------------------------------┘

Para se evitar esta situação ‚ imprescindível que a instrução seguinte seja


colocada toda vez que for usar o procedimento de tratamento de erro do PL/I
(isto ‚ v lido tamb‚m para aplicações BATCH).

ú------------------------------------------------------------------------------┐
| ON ERROR SYSTEM; |
└------------------------------------------------------------------------------┘

Esta instrução desvia o controle para o Sistema Operacional, caso ocorra


algum ABEND a partir do momento que esta seja acionada, evitando assim o LOOP de
ABENDs.

ú------------------------------------------------------------------------------┐
| |
| DCL VARIAVEL FIXED (15); |
| ... |
| ú---------------->ON ERROR SNAP BEGIN; |
| | DO; |
| | ú-->ON ERROR SYSTEM;--------> Sistema Operacional |
| | ABEND└---PUT SKIP DATA (VARIAVEL); | |
| | CALL ABEND; | |
| | END; V |
| |ABEND ... termina a aplicação |
| └-----------------VARIAVEL = 'AAAAAAA'; |
| ... |
| |
└------------------------------------------------------------------------------┘
Pag. 22

Exemplo de uma aplicação CICS/MVS em PL/I

ú------------------------------------------------------------------------------┐
| |
| PGMCIC : PROC (PTR) OPTIONS (MAIN); |
| DCL PTR POINTER; |
| 1 COMAREA BASED (PTR), |
| 2 PAGINA BIN FIXED (15), |
| 2 ULT_PAGINA BIN FIXED (15), |
| 2 QTDE BIN FIXED (31), |
| 2 ISN_TAB (50) BIN FIXED (31); |
| DCL 1 AREA_TERM, |
| 2 CODIGO_TRANS CHAR (04), |
| 2 PARAMETRO CHAR (08); |
| DCL RET_CODE BIN FIXED (31); |
| %INCLUDE MAC01(DFHAID); |
| %INCLUDE MAC01(DIERRCIC); |
| %INCLUDE MAP(PGMMAPM); |
| DCL DEF_MAPA CHAR(STG(PGMMAP1O)) DEF PGMMAP1O; |
| %INCLUDE MAC01(ADABAS); |
| ARQ(FILE_ADABAS) NUM(001) QMAX(50) USO(ACESS) |
| CPO (CPO1,A1) ALFA(10) |
| CPO (CPO2,A2) UNPK(05,) |
| CPO (CPO3,A3) DFIX(03,) |
| CPO (CPO4,A4) ALFA(30) |
| SUP (SUP_DESCR,SP) |
| CPO (CPO1,A1) ALFA(10) |
| CPO (CPO2,A2) UNPK(05,) |
| FIM |
| FIM; |
| NOMEPGM(PGMCIC); |
| ON ERROR SNAP BEGIN; |
| ON ERROR SYSTEM; |
| MENSERRO('ERRO NAO PREVISTO PELA TRANSACAO', |
| 'FAVOR AVISAR O ANALISTA RESPONSAVEL'); |
| END; |
| DEF_MAPA = LOW(STG(PGMMAP1O)); |
| IF (EIBCALEN = 0) THEN |
| DO; |
| |
| ú---------------------------------------------------┐ |
| |EXEC CICS RECEIVE INTO (AREA_TERM) RESP (RET_CODE);| |
| └---------------------------------------------------┘ |
| |
| IF (RET_CODE = DFHRESP(LENGERR)) THEN |
| CALL MANDA_MSG('ERRO NOS PARAMETRO, FAVOR VERIFICAR'); |
| IF (VERIFY(PARAMETRO,'0123456789') ª= 0) THEN |
| CALL MANDA_MSG ('PARAMETRO NAO NUMERICO'); |
| ALLOC COMAREA; |
| PAGINA = 0; |
| |
| |
| |
| continua ... |
| |
| |
└------------------------------------------------------------------------------┘
Pag. 23

ú------------------------------------------------------------------------------┐
| |
| TODOS (FILE_ADABAS) COM (SUPER_DESCR > PARAMETRO) |
| ORD (PARAMETRO) |
| QTD (QTDE) |
| EM (ISN_TAB); |
| IF (QTDE ª= 0) THEN |
| DO; |
| ULT_PAGINA = QTDE / 10 - 1; |
| IF (MOD (QTDE,10) ª= 0) THEN |
| ULT_PAGINA = ULT_PAGINA + 1; |
| CALL MONTA_TELA; |
| END; |
| CALL MANDA_MSG ('REGISTRO NAO ENCONTRADO NO BANCO DE DADOS'); |
| END; |
| CALL TESTA_TECLA; |
| 1MONTA_TELA : PROC; |
| DCL IND BIN FIXED (15), |
| LIMITE BIN FIXED (15); |
| LIMITE = ((PAGINA * 10) + 11); |
| DO IND = ((PAGINA * 10) + 1) TO QTDE WHILE (IND < LIMITE); |
| OBTER (FILE_ADABAS) DE (ISN_TAB(IND)); |
| PGMMAP1O.CPO1(IND) = FILE_ADABAS.CPO1; |
| PGMMAP1O.CPO2(IND) = FILE_ADABAS.CPO2; |
| PGMMAP1O.CPO3(IND) = FILE_ADABAS.CPO3; |
| PGMMAP1O.CPO4(IND) = FILE_ADABAS.CPO4; |
| END; |
| IF (IND < LIMITE) THEN |
| DO IND = IND TO (LIMITE - 1); |
| PGMMAP1O.CPO1(IND) = ' '; |
| PGMMAP1O.CPO2(IND) = 0; |
| PGMMAP1O.CPO3(IND) = 0; |
| PGMMAP1O.CPO4(IND) = ' '; |
| END; |
| CALL MANDA_MAPA; |
| END MONTA_TELA; |
| 1TESTA_TECLA : PROC; |
| SELECT (EIBAID); |
| WHEN (DFHCLEAR) |
| CALL MONTA_TELA; |
| WHEN (DFHENTER) |
| |
| ú-------------------------------------------------------┐ |
| |EXEC CICS RETURN TRANSID (EIBTRNID) COMMAREA (COMAREA);| |
| └-------------------------------------------------------┘ |
| |
| WHEN (DFHPF3,DFHPA2) |
| CALL MANDA_MSG ('FIM DA TRANSACAO'); |
| WHEN (DFHPF7) DO; |
| PAGINA = PAGINA - 1; |
| IF (PAGINA < 0) THEN |
| DO; |
| |
| |
| continua ... |
| |
└------------------------------------------------------------------------------┘
Pag. 24

ú------------------------------------------------------------------------------┐
| |
| PAGINA = 0; |
| PGMMAPO.MSG = 'NAO HA PAGINA ANTERIOR A ESTA'; |
| CALL MANDA_MSG_MAPA; |
| END; |
| CALL MONTA_TELA; |
| END; |
| WHEN (DFHPF8) DO; |
| PAGINA = PAGINA + 1; |
| IF (PAGINA > ULT_PAGINA) THEN |
| DO; |
| PAGINA = ULT_PAGINA; |
| PGMMAPO.MSG = 'NAO HA PAGINA POSTERIOR A ESTA'; |
| CALL MANDA_MSG_MAPA; |
| END; |
| CALL MONTA_TELA; |
| END; |
| OTHERWISE DO; |
| PGMMAP1O.MSG = 'TECLA INVALIDA'; |
| CALL MANDA_MSG_MAPA; |
| END; |
| END; |
| END TESTA_TECLA; |
| 1MANDA_MAPA : PROC; |
| |
| ú-----------------------------------------------------------------┐ |
| |EXEC CICS SEND MAP ('PGMMAP1') MAPSET ('PGMMAPM') FROM (PGMMAP1O)| |
| | ERASE ALARM FREEKB; | |
| |EXEC CICS RETURN TRANSID (EIBTRNID) COMMAREA (COMAREA); | |
| └-----------------------------------------------------------------┘ |
| END MANDA_MAPA; |
| 1MANDA_MSG : PROC (MENS); |
| DCL MENS CHAR (78); |
| ú---------------------------------------┐ |
| |EXEC CICS SEND FROM (MENS) ALARM ERASE;| |
| |EXEC CICS RETURN; | |
| └---------------------------------------┘ |
| END MANDA_MSG; |
| 1MANDA_MSG_MAPA : PROC; |
| ú-----------------------------------------------------------------┐ |
| |EXEC CICS SEND MAP ('PGMMAP1') MAPSET ('PGMMAPM') FROM (PGMMAP1O)| |
| | ALARM FREEKB DATAONLY; | |
| |EXEC CICS RETURN TRANSID (EIBTRNID) COMMAREA (COMAREA); | |
| └-----------------------------------------------------------------┘ |
| END MANDA_MSG_MAPA; |
| 0END PGMCIC; |
| |
| ú----┐ ---> Comandos CICS/MVS |
| └----┘ |
| |
| |
└------------------------------------------------------------------------------┘

Observação : Este fonte possui recursos existentes somente nesta instalação,


não sendo garantido a funcionalidade da aplicação em qualquer
outra instalação.
Pag. 25

Exec Interface Block (EIB)

Al‚m dos serviços realizados pelos v rios módulos de gerência do CICS/MVS,


ele ainda mantém uma s‚rie de informações pertinente a tarefa, que o programa de
aplicação poder necessitar durante a sua execução, em uma rea conhecida como
EIB (Execution Interface Block).

Estes dados são armazenados em uma rea interna do CICS/MVS na qual o pro-
grama de aplicação não tem acesso direto. Contudo, o CICS/MVS copia estes dados
em uma rea do programa de aplicação na hora da execução da tarefa. Esta rea no
programa de aplicação ‚ criada automaticamente durante a compilação do mesmo,
não havendo necessidade de cri -la.

O programa de aplicação poder acessar estes valores diretamente pelo nome do


campo que foi gerado automaticamente. Para se conhecer todos os campos existen-
tes nesta rea consultar o manual: CICS/MVS Application Programmer's Reference
Manual (Command Level) - IBM;

Abaixo estão algumas das informações que esta rea contém durante a execução
da tarefa.

ú----------Â------------------------------------------------Â------------------┐
|CAMPO |DESCRI ۂO |FORMATO NO PL/I |
Ã----------Å------------------------------------------------Å------------------´
|EIBTIME |Hora de início da tarefa no formato HHMMSS. |FIXED (07) |
| | |(0HHMMSS+) |
| | Este campo pode ser atualizado durante a | |
| |execução da tarefa para a hora atual usando-se | |
| |o comando EXEC CICS ASKTIME (ver mais adiante a | |
| |descrição do comando). | |
Ã----------Å------------------------------------------------Å------------------´
|EIBDATE |Data (JULIANA) de início da tarefa no formato |FIXED (07) |
| |AADDD |(00AADDD+) |
| | | |
| | Para se conseguir a data no formato AAMMDD | |
| |(gregoriano) ver ítem "Requisição de data e | |
| |hora no CICS/MVS". | |
Ã----------Å------------------------------------------------Å------------------´
|EIBTASKN |Código num‚rico que representa o número da |FIXED (07) |
| |tarefa atribuída pelo CICS/MVS. | |
Ã----------Å------------------------------------------------Å------------------´
|EIBTRNID |Identificação da transação. |CHAR (04) |
Ã----------Å------------------------------------------------Å------------------´
|EIBTRMID |Identificação do terminal. |CHAR (04) |
Ã----------Å------------------------------------------------Å------------------´
|EIBAID |Valor num‚rico atribuído pelo CICS/MVS a cada |CHAR (01) |
| |tecla de função. Este valor ‚ gerado em | |
| |hexadecimal. (Por exemplo, a tecla ENTER co- | |
| |rresponde ao valor X'7C' em hexadecimal) | |
└----------Á------------------------------------------------Á------------------┘
Pag. 26

ú----------Â------------------------------------------------Â------------------┐
|CAMPO |DESCRIۂO |FORMATO NO PL/I |
Ã----------Å------------------------------------------------Å------------------´
|EIBCALEN |Tamanho da rea que foi passada como parâmetro |BIN FIXED (15) |
| |para a tarefa. Caso a tarefa não receba nenhum | |
| |parâmetro este campo conter o valor zero em | |
| |bin rio. | |
Ã----------Å------------------------------------------------Å------------------´
|EIBCPOSN |Posição do cursor na tela. A posição do cursor |BIN FIXED (15) |
| |na tela ‚ dado em valor linear, iniciando-se na | |
| |posição 0. Para terminais do tipo 3270, a | |
| |posição do cursor para a linha 2 coluna 1 ‚ 80, | |
| |para a linha 2 coluna 2 ‚ 81, e assim por | |
| |diante. Para conseguir a partir deste valor a | |
| |posição do cursor em termos de linha e coluna, | |
| |proceder da seguinte maneira: | |
| | | |
| |1. Dividir o campo EIBCPOSN por 80; | |
| | | |
| |2. A parte inteira do resultado mais um, re- | |
| | presenta o valor da linha; | |
| | | |
| |3. O resto da divisão do ítem 1 mais um ‚ o | |
| | valor da coluna. | |
└----------Á------------------------------------------------Á------------------┘

Observação: O programa de aplicação pode fazer uso do conteúdo dos campos do


EIB da maneira que desejar, mas os mesmos "NUNCA DEVEM SER ALTE-
RADOS" no próprio campo do EIB. Uma vez alterado o conteúdo destes
campos, não ‚ garantido a execução normal.
Pag. 27

Formato de um comando CICS/MVS no PL/I

O formato geral de um comando CICS/MVS ‚ EXECUTE CICS (ou simplesmente, EXEC


CICS) seguido do nome de uma função e possivelmente de uma ou mais opção, como
mostrado abaixo:

ú------------------------------------------------------------------------------┐
| |
| EXEC{UTE} CICS função { { opção { (argumento) }} |
| . . . |
| { opção { (argumento) }} }; |
| |
└------------------------------------------------------------------------------┘

Onde:

ú----------------------Â-------------------------------------------------------┐
| EXEC{UTE} CICS | palavra chave que identifica um comando CICS/MVS. |
Ã----------------------Å-------------------------------------------------------´
| função | descreve a operação desejada. |
Ã----------------------Å-------------------------------------------------------´
| opção |descreve quaisquer das v rias facilidades (opcionais) |
| | disponíveis em cada função. |
| | |
| | algumas opções são seguidas de um argumento entre |
| | parêntesis, e outras não. |
| | |
| | Pode-se codificar em qualquer ordem. |
Ã----------------------Å-------------------------------------------------------´
| argumento | constante ou vari vel. |
Ã----------------------Å-------------------------------------------------------´
| ; |delimitador final do comando CICS/MVS, v lido somente |
| | quando utilizado em aplicações PL/I. |
| | |
| | Por exemplo, o delimitador utilizado em aplicações |
| | COBOL ‚: "END-EXEC.". |
└----------------------Á-------------------------------------------------------┘

A codificação de qualquer comando CICS/MVS deve seguir as regras de


codificação da linguagem na qual se est utilizando. (Por exemplo: a codificação
de um comando PL/I inicia se na coluna 2, logo o comando CICS/MVS tamb‚m dever
seguir a mesma regra.)
Pag. 28

ú------------------------------------------------------------------------------┐
| CONVENۂO PARA CODIFICAۂO DE UM COMANDO CICS/MVS NO PL/I |
| |
| |
| |
| O comando CICS/MVS no PL/I deve começar na coluna 2 e terminar por ponto- |
|e-virgula (";"), e não deve ultrapassar a coluna 72, como mostrado no exemplo |
|seguinte: |
| |
| ú-------------------------------------------------┐ |
| | | |
| | |...+....1....+....2....+....3....+....4....+ | |
| | EXEC CICS WRITEQ TS | |
| | QUEUE ('FILAQ') | |
| | ITEM (05) REWRITE | |
| | FROM (DADOS) ; | |
| | | |
| └-------------------------------------------------┘ |
| |
| |
| As opções de cada comando CICS/MVS podem ser codificadas em qualquer |
|ordem, não são posicionais. |
| |
| ú-------------------------------------------------┐ |
| | | |
| | |...+....1....+....2....+....3....+....4....+ | |
| | EXEC CICS WRITEQ TS | |
| | ITEM (05) | |
| | QUEUE ('FILAQ') | |
| | FROM (DADOS) | |
| | REWRITE ; | |
| | | |
| └-------------------------------------------------┘ |
| |
└------------------------------------------------------------------------------┘

Exemplo de um comando CICS/MVS

ú------------------------------------------------------------------------------┐
| |
| ú----> função (operação de leitura) |
| | |
| | ú---------> argumentos |
| ú-Á--┐ ú-------┐ ú----Á------┐ |
| EXEC CICS |READ| |DATASET| |('FILEA') | |
| └----┘ |RIDFLD | |(KEYNUM) | |
| |INTO | |(REG_FILEA)| |
| |UPDATE;| └-----------┘ |
| └---Â---┘ |
| └------> opções |
| |
└------------------------------------------------------------------------------┘
Pag. 29

Manipulação de erro de comandos CICS/MVS

Condições de Exceção

Uma condição de exceção representa um erro ou uma situação anormal que ocorre
durante a execução de um comando CICS/MVS. Por exemplo, o comando CICS/MVS
abaixo ‚ utilizado para leitura de um arquivo VSAM:

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS READ DATASET ('ARQVSAM') |
| RIDFLD (KEYNUM) |
| INTO (REG_FILEA); |
| |
└------------------------------------------------------------------------------┘

Durante a execução deste comando poder ocorrer um dos seguintes erros:

1. Registro duplicado; (DUPREC)


2. registro não foi encontrado; (NOTFND)
3. nome do arquivo não ‚ conhecido pelo CICS/MVS; (DSIDERR)
4. o arquivo não est aberto; (NOTOPEN)
5. fim de arquivo; (ENDFILE)
6. etc.

Estes erros possuem códigos pr‚-definidos pelo CICS/MVS, que estão mostrados
a direita de cada erro. Cada comando CICS/MVS possui uma s‚rie de erros
associados (ver APêNDICE B), que indicam os erros possíveis de serem
tratados pelo programa de aplicação. Estes códigos são utilizados pelo comando
HANDLE CONDITION (ver próximo ítem) para tratamento dos erros pelo programa de
aplicação sem que haja a necessidade de um t‚rmino anormal. Estes códigos serão
listados juntamente com os comandos que a eles estiverem associados.

Os restantes dos erros são aqueles que não podem ser tratados pelo programa
de aplicação, de modo que eles são tratados automaticamente pelo CICS/MVS,
gerando um t‚rmino anormal com um código de ABEND que estão listados no
APêNDICE C.
Pag. 30

H A N D L E C O N D I T I O N

Comando de manipulação de erros em comandos CICS/MVS. Este comando ativa um


LABEL (PL/I) para onde ser transferido o controle do fluxo de execução do pro-
grama de aplicação, caso ocorra um erro que est especificado neste comando (ver
ítem anterior). O desvio para o LABEL ‚ feito automaticamente via comando "GO
TO" do PL/I, logo este LABEL não pode ser um LABEL que determina uma subrotina
interna (PROC).

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| |
| EXEC CICS HANDLE CONDITION opção { (argumento) } |
| ... |
| { opção { (argumento) }} ; |
| |
└------------------------------------------------------------------------------┘

Onde :

opção Palavra chave que identifica a condição de exceção. Podem ser espe-
cificadas at‚ 16 condições em UM éNICO comando HANDLE
CONDITION em qualquer ordem.

argumento LABEL (rótulo) dentro do programa ao qual o CICS/MVS deve passar o


controle quando ocorrer a condição de exceção especificada no co-
mando.

O comando HANDLE CONDITION deve ser colocado sempre antes do comando CICS/MVS
ao qual os erros que serão tratados estejam associados. Este comando deve ser
executado para que a condição especificada fique ativa, para quando ocorrer o
erro esperado, o controle seja transferido para o LABEL designado pelo comando.
Se o comando HANDLE CONDITION não for executado antes de ocorrer o erro, o pro-
grama de aplicação ir terminar anormalmente com um código de ABEND que repre-
senta o erro que não foi tratado pelo HANDLE CONDITION. Por exemplo, o código
AEIV corresponde ao erro LENGERR que não foi tratado pelo programa de aplicação
via comando HANDLE CONDITION.

Normalmente coloca-se todos os HANDLE CONDITION's no início do programa de


aplicação, para que todos os LABEL's fiquem ativos j no início da execução, an-
tes de executar qualquer comando CICS/MVS, e tamb‚m para melhor visualização dos
erros que estão sendo tratados.
Pag. 31

ú------------------------------------------------------------------------------┐
| ... |
| ú--> EXEC CICS HANDLE CONDITION LENGERR (TAMERR) ---------------┐ |
| | DUPREC (DUPLIC) ; ------------┐ | |
| | /* Comando de leitura de arquivo sequencial do CICS/MVS */| | |
| └--- EXEC CICS READQ TD QUEUE('TDQUEUE') | | |
| INTO (REG_QUEUE); | | |
| VOLTA: IF ERRO_TAM = 'S' THEN | | |
| ... | | |
| DUPLIC: MENSAGEM = 'REGISTRO DUPLICADO';<--------------------┘ | |
| /* Comando de envio de mensagem para o terminal */ | |
| EXEC CICS SEND FROM (MENSAGEM) ERASE; | |
| /* Comando para terminar a execução de um programa de | |
| aplicação CICS/MVS */ | |
| EXEC CICS RETURN; | |
| TAMERR: ERRO_TAM = 'S';<---------------------------------------┘ |
| GO TO VOLTA; |
| ... |
└------------------------------------------------------------------------------┘

Certos tipos de erros podem aparecer em v rios comandos, de modo que, se for
especificado um único HANDLE CONDITION, para todos os comandos que ocorrer estes
erros serão desviados para o mesmo LABEL. Para que possa diferenciar o mesmo
erro para cada comando, coloca-se o comando HANDLE CONDITION para este erro an-
tes de cada comando, com LABEL's diferentes. Assim sendo, o HANDLE CONDITION
posterior desativa o LABEL do HANDLE CONDITION anterior, ativando um novo LABEL.
Veja exemplo a seguir:

ú------------------------------------------------------------------------------┐
| ... |
| /* Este comando ativa o desvio para o LABEL NOMERR se não |
| existir o programa especificado em um dos comandos |
| CICS/MVS de chamada de programa */ |
| ú--> EXEC CICS HANDLE CONDITION PGMIDERR (NOMERR) ; ------------┐ |
| | /* Comando CICS/MVS para chamada de subrotina CICS/MVS */| |
| └--- EXEC CICS LINK PROGRAM ('PGM00001'); | |
| ... | |
| /* Este comando desativa a condição PGMIDERR anterior e | |
| reativa um novo desvio para o LABEL ERRONOME se não | |
| existir o programa especificado em um dos comandos | |
| CICS/MVS de chamada de programa */ | |
| ú--> EXEC CICS HANDLE CONDITION PGMIDERR (ERRONOME); -------┐ | |
| | ... | | |
| └--- EXEC CICS LINK PROGRAM ('PGM00002'); | | |
| ... | | |
| ERRONOME: MENSAGEM = 'PGM00002 NAO CADASTRADO NA PPT';<--┘ | |
| GO TO MANDA_MSG; | |
| NOMERR: MENSAGEM = 'PGM00001 NAO CADASTRADO NA PPT';<--------┘ |
| MANDA_MSG: EXEC CICS SEND FROM (MENSAGEM) ERASE; |
| EXEC CICS RETURN; |
| ... |
└------------------------------------------------------------------------------┘
Pag. 32

O comando HANDLE CONDITION ‚ ativado a partir do momento em que ele ‚


executado at‚:

* o t‚rmino da tarefa;
* outro comando HANDLE CONDITION para essa mesma condição seja executado.

Para se desativar um HANDLE CONDITION para uma certa condição deve se


executar um outro HANDLE CONDITION com a mesma condição, mas sem o LABEL para o
qual ser transferido o controle da execução. Depois de desativado a condição,
se esta condição ocorrer, a tarefa ir ABENDar com código de ABEND
correspondente a esta condição.

ú------------------------------------------------------------------------------┐
| |
| ... |
| ú--> EXEC CICS HANDLE CONDITION LENGERR (TAMERR); ------------┐ |
| | ... | |
| └--- EXEC CICS RECEIVE INTO (AREA); | |
| ... | |
| /* Este comando desativa o HANDLE LENGERR anterior */ | |
| ú--> EXEC CICS HANDLE CONDITION LENGERR ; -----------------┐ | |
| | ... | | |
| | ú------------------------------------------------┐ | | |
| | | ABENDa pela condição LENGERR uma vez que o | <--┘ | |
| | | HANDLE CONDITION para este erro foi desativado | | |
| | └------------------------------------------------┘ | |
| | ... | |
| └--- EXEC CICS READQ TS QUEUE ('MYTS') INTO (AREA_TS); | |
| ... | |
| TAMERR: <--------------------------------------------------┘ |
| MENSAGEM = 'ERRO NO TAMANHO DA MENSAGEM/REGISTRO LIDO'; |
| EXEC CICS SEND FROM (MENSAGEM) ERASE; |
| EXEC CICS RETURN; |
| ... |
| |
└------------------------------------------------------------------------------┘
Pag. 33

H A N D L E C O N D I T I O N E R R O R

Este comando ‚ um HANDLE CONDITION especial que especifica o tratamento de


todos as condições de exceção dos comandos CICS/MVS por um único LABEL, exceto
aquelas condições que j possuem seus HANDLE CONDITION's especificados.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS HANDLE CONDITION ERROR (label) ; |
| |
└------------------------------------------------------------------------------┘

Onde:

label LABEL (rótulo) dentro do programa de aplicação ao qual o CICS/MVS


dever transferir o controle da execução, quando da ocorrência de
qualquer tipo de erro possível de ser tratado pelo programa de
aplicação.

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
| DCL MSG CHAR (80); |
| ú----> EXEC CICS HANDLE CONDITION LENGERR (ERRO_TAM) --------------┐ |
| | ú-> EXEC CICS HANDLE CONDITION ERROR (ERRO_GENERICO) ; -----┐ | |
| | | ... | | |
| | |<- EXEC CICS WRITEQ TS QUEUE('YOURTS') FROM (AREA_TS); | | |
| | | ... | | |
| | └-- EXEC CICS READQ TS QUEUE('YOURTS') INTO (AREA_TS); | | |
| | ... | | |
| └----- EXEC CICS RECEIVE INTO (AREA_PGM); | | |
| ... | | |
| ERRO_GENERICO: <------------------------------------------┘ | |
| MSG = 'FOI DETECTADO UM ERRO EM ALGUM COMANDO CICS'; | |
| EXEC CICS SEND FROM (MSG) ERASE; | |
| EXEC CICS RETURN; | |
| ERRO_TAM : <--------------------------------------------------┘ |
| MSG = 'ERRO DE TAMANHO NA MENSAGEM LIDA/GRAVADA'; |
| EXEC CICS SEND FROM (MSG) ERASE; |
| EXEC CICS RETURN; |
| |
└------------------------------------------------------------------------------┘
Pag. 34

I G N O R E C O N D I T I O N

Este comando ‚ usado para ignorar certas condições de exceção. Isto ‚, se


ocorrer a condição de exceção especificada neste comando, esta simplesmente ser
desprezada como se nada tivesse ocorrido.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS IGNORE CONDITION opção |
| ... |
| { opção } ; |
| |
└------------------------------------------------------------------------------┘

Onde:

Opção Palavra chave que identifica a condição de exceção. Podem ser especifi-
cadas at‚ 12 condições em UM éNICO comando em qualquer ordem.

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
| ... |
| ú - -> EXEC CICS IGNORE CONDITION DUPREC - - - - - - - - - ┐ |
| ' LENGERR; ' |
| ' ... ' |
| └ - -- EXEC CICS READ DATASET('ARQVSAM') INTO(AREA_VSAM) ' |
| RIDFLD(KEY_NUM); ' |
| IF CHAVE_VSAM = 123 THEN <- - - - - - - - - - - - - ┘ |
| DO; |
| ... |
| |
└------------------------------------------------------------------------------┘
Pag. 35

O p ç ã o N O H A N D L E

Pode-se usar esta opção em qualquer comando CICS/MVS para especificar que
nenhuma ação dever ser tomada para qualquer condição de exceção que ocorra na
execução do comando.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS função { { opção { (argumento) }} |
| . . . |
| { opção { (argumento) }} } |
| NOHANDLE; |
| |
└------------------------------------------------------------------------------┘

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
| ... |
| REG_TS_ANT = ' '; |
| EXEC CICS READQ TS QUEUE ('TSFILA') INTO (REG_TS); |
| DO WHILE (REG_TS ª= REG_TS_ANT); |
| REG_TS_ANT = REG_TS; |
| EXEC CICS READQ TS QUEUE ('TSFILA') INTO (REG_TS)-- Abend IOERR --┐:lw|
| NOHANDLE; |:lw|
| IF REG_TS = REG_TS_ANT THEN<------ Abend ignorado ----------------┘:lw|
| DO; |
| MSG = 'FIM DE LEITURA DA TS'; |
| EXEC CICS SEND FROM (MSG); |
| END; |
| END; |
| ... |
| |
└------------------------------------------------------------------------------┘
Pag. 36

O p ç ã o R E S P

Esta opção pode ser usada em qualquer comando CICS/MVS, para especificar que
nenhuma ação dever ser tomada para qualquer condição de exceção que ocorra na
execução de um comando CICS/MVS, e que, tamb‚m seja retornado para o argumento
desta opção o RESPONSE CODE da execução deste comando.

Este RESPONSE CODE poder ser verificado com a ajuda da função "DFHRESP" para
saber se a execução do comando CICS/MVS foi normal ou se ocorreu alguma condição
de exceção (ver exemplo).

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS função { { opção { (argumento) }} |
| . . . |
| { opção { (argumento) }} } |
| RESP (data-area); |
| |
└------------------------------------------------------------------------------┘

onde:

RESP (data-area) <'data-area' - BIN FIXED(31)>, receber o RESPONSE CODE


(ver tabela abaixo) da execução de um comando CICS/MVS,
que contém esta opção.

ú------------------Â-------Â------------------Â-------Â-----------------Â------┐
|Cond. Exceção | RESP |Cond. Exceção | RESP |Cond. Exceção | RESP |
Ã------------------Å-------Å------------------Å-------Å-----------------Å------´
|CBIDERR | 62 |INVLDC | 41 |OVERFLOW | 40 |
|DISABLED | 84 |INVMPSZ | 38 |PARTNFAIL | 66 |
|DSIDERR | 12 |INVPARTN | 65 |PGMIDERR | 27 |
|DSSTAT | 46 |INVPARTNSET | 64 |QBUSY | 25 |
|DUPKEY | 15 |INVREQ | 16 |QIDERR | 44 |
|DUPREC | 14 |INVTSREQ | 30 |QZERO | 23 |
|ENDDATA | 29 |IOERR | 17 |RDATT | 02 |
|ENDFILE | 20 |ISCINVREQ | 54 |RETPAGE | 32 |
|ENDINPT | 08 |ITEMERR | 26 |ROLLEDBACK | 82 |
|ENQBUSY | 55 |JIDERR | 43 |RTEFAIL | 33 |
|ENVDEFERR | 56 |LENGERR | 22 |RTESOME | 34 |
|EOC | 06 |MAPFAIL | 36 |SELNERR | 47 |
|EODS | 05 |NOJBUFSP | 45 |SESSBUSY | 60 |
|EOF | 04 |NONVAL | 09 |SESSIONERR | 58 |
|ERROR | 01 |NOPASSBKRD | 50 |SIGNAL | 24 |
|EXPIRED | 31 |NOPASSBKWR | 51 |SYSBUSY | 59 |
|FUNCERR | 48 |NOSPACE | 18 |SYSIDERR | 53 |
|IGREQCD | 57 |NOSTART | 10 |TERMERR | 81 |
|IGREQID | 39 |NOSTG | 42 |TERMIDERR | 11 |
|ILLOGIC | 21 |NOTALLOC | 61 |TRANSIDERR | 28 |
|INBFMH | 07 |NOTAUTH | 70 |TSIOERR | 35 |
|INVERRTERM | 37 |NOTFND | 13 |UNEXPIN | 49 |
|INVEXITREQ | 63 |NOTOPEN | 19 |WRBRK | 03 |
└------------------Á-------Á------------------Á-------Á-----------------Á------┘
Pag. 37

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
| DCL RET_CODE BIN FIXED (31); |
| ... |
| EXEC CICS READQ TS QUEUE ('TSFILA') INTO (REG_TS) |
| RESP(RET_CODE); |
| DO WHILE (RET_CODE = DFHRESP(NORMAL)); |
| /* processa registro */ |
| ... |
| EXEC CICS READQ TS QUEUE ('TSFILA') INTO (REG_TS) |
| RESP (RET_CODE); |
| END; |
| IF RET_CODE = DFHRESP(ITEMERR) THEN |
| DO; |
| /* processa erro tipo ITEMERR */ |
| ... |
| END; |
| ... |
| |
└------------------------------------------------------------------------------┘

Observação : Esta opção mais a verificação do RESPONSE CODE com a função DFHRESP
poder substituir o comando HANDLE CONDITION, com a vantagem, de
que o programa se torne mais estruturado, por não haver o desvio
incondicional via comando "GO TO" implícito.
Pag. 38

CONTROLE DE TERMINAL

O Terminal Control Program (TCP) ‚ o módulo de gerência que proporciona o


INTERFACE de comunicação com o programa de aplicação. O programa de aplicação
invoca o TCP que então controla as comunicações com os terminais na rede.

ú------------------------------------------------------------------------------┐
| |
| ú-------┐ ú-------------┐ |
| |termi- | ú----´ Programa de | |
| | nal 1Ã----┐ | | Aplicação 1 | |
| └--Â-Â--┘ | ú------------┐ | └-------------┘ |
| ú--Á-Á--┐ | | Terminal Ã---┘ |
| └-------┘ └---´ Control | ú-------------┐ |
| | Program Ã--------´ Programa de | |
| ú-------┐ | | | Aplicação 2 | |
| |termi- Ã--------´ (TCP) | └-------------┘ |
| | nal n| | Ã---┐ |
| └--Â-Â--┘ └------------┘ | ú-------------┐ |
| ú--Á-Á--┐ └----´ Programa de | |
| └-------┘ | Aplicação n | |
| └-------------┘ |
| |
└------------------------------------------------------------------------------┘

Módulo de Controle de Terminal (TCP)

Este módulo controla todas as operações de terminal utilizando-se dos m‚todos


de acesso de telecomunicação (ACF/VTAM, BTAM ou TCAM). As funções prim rias
deste módulo são:

ú---------------------------------------Â--------------------------------------┐
| POLLING | ADDRESSING |
Ã---------------------------------------Å--------------------------------------´
|Checagem periódica dos terminais para |Checagem para verificar se um deter- |
| verificar se h alguma entrada a ser | minado terminal est pronto para |
|transmitida para ser processada por um | receber alguma saída. |
| programa de aplicação. | |
└---------------------------------------Á--------------------------------------┘

O TCP realiza tamb‚m as seguinte funções:

* Solicita para que os terminais enviem suas transações;

* Transfere dados entre o programa de aplicação e o terminal: Todas as


transferências de dados são pedidas pelo programa de aplicação mas são
executadas pelo TCP;
Pag. 39

* Manuseia as exigências de comunicação de HARDWARE: O TCP ‚ respons vel pela


transmissão real de uma mensagem por linhas de comunicação. Isto poderia en-
volver a tradução da mensagem no código de transmissão requerido, inserindo
ou removendo caracteres de controle de transmissão, e manipulando as
exigências de endereçamento para certos tipos de terminais;

* Pesquisa a Terminal Control Table (TCT): Cada terminal na rede ‚ identifi-


cado por uma entrada única na TCT. A entrada ‚ chamada Terminal Control
Table Terminal Entry (TCTTE). Quando os dados estiverem prontos para serem
enviados para o terminal, uma indicação ‚ posta na TCTTE. O TCP pesquisa a
TCT periodicamente e faz com que os dados sejam enviados para os respectivos
terminais;

* Pede a iniciação de uma nova tarefa: Quando um operador entrar uma


identificação de transação, o CICS/MVS inicia uma nova tarefa. Todos os co-
mandos de I/O encontrados durante a execução desta tarefa são endereçados
exclusivamente ao terminal que entrou a identificação da transação.

Para resumir:

* Uma transação inicia uma tarefa;

* O terminal que enviou a transação - e somente esse terminal - est associado


com a tarefa em particular.

‚ a associação entre o terminal de envio e a tarefa que permite que o


operador escreva comandos de terminal em seu programa de aplicação sem identifi-
car qual terminal ser realmente usado quando o programa for executado.

Este módulo tamb‚m faz a manipulação de erros de I/O, e tamb‚m mantém uma
amarração de quais tarefas estão associados com quais terminais.

O TCP usa a TCT (Terminal Control Table) para ajudar nas operações de con-
trole de terminal.

ú------------------------------------------------------------------------------┐
|Terminal Control Table (TCT) |
| |
| A TCT mantém informações do tipo: características da linha de comunicação, |
|tipos de terminais, dispositivos especiais, prioridades de terminal, |
|sequência de POLLING e dados operacionais (tais como: indicação de que um |
|determinado terminal est temporariamente inativo e que ele deve ser excluído |
|da sequência do POLLING). |
└------------------------------------------------------------------------------┘

Terminal Input/Output Area (TIOA)

Quando um terminal enviar uma transação para o Terminal Control Program, a


entrada ‚ colocada numa rea especial de I/O chamada µrea de
Entrada/Saída de Terminal (TIOA). Esta rea ‚ adquirida dinamicamente pelo
CICS/MVS antes de o programa de aplicação correspondente for carregado na
memória. O pedido de transação colocado na memória consiste de uma identificação
de transação de um a quatro caracteres tipicamente seguida de um caracter em
branco e então por dados de entrada. A identificação de transação identifica o
programa de aplicação a ser executado.
Pag. 40

Logo que o programa de aplicação para uma dada transação estiver na memória e
em execução, os dados de entrada na TIOA são deslocados da TIOA para a rea de
trabalho definida no programa de aplicação. A transferência de dados da TIOA ‚
manipulada pelo CICS/MVS - um processo que ‚ transparente para o programa de
aplicação.

Elementos do TCP

* Terminal Control Table (TCT)

* Terminal I/O Area (TIOA)

* M‚todos de Acesso

- BTAM (Basic Telecommunications Access Method)

- TCAM (Telecommunications Access Method)

- SAM (Sequential Access Method) - ‚ o m‚todo de acesso para


terminais CRLP (Card Reader Line Printer) usado quando a instalação
ainda não possui terminal de vídeo.

- VTAM (Virtual Telecommunications Access Method)

* Comandos

- RECEIVE

- SEND
Pag. 41

R E C E I V E

Utilizado para a leitura de dados não formatados de um terminal ou de uma


unidade lógica.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS RECEIVE { INTO (data-area) / SET (pointer) } |
| LENGTH (data-area) ; |
| |
└------------------------------------------------------------------------------┘

onde:

INTO (data-area) Especifica uma vari vel elementar ou agregada (estrutura,


ítem de grupo) que ir receber os dados lidos do terminal
ou de uma unidade lógica.

ú-------┐ ú--------------------------------┐
| ABC...Ã--Å-----------------------┐ |
| | | | |
└--Â-Â--┘ | V TIOA |
ú--Á-Á--┐ | ú------------┐ |
└-------┘ | ú------´ABC... | |
| PGM | └------------┘ |
| ú--------Å------┐ |
| | DSA | | |
| | V | |
| | ú----------┐| |
| | |ABC... || |
| | └----------┘| |
| Ã---------------´ |
| | . . . | |
| └---------------┘ |
└--------------------------------┘
Pag. 42

SET (pointer) Especifica uma vari vel do tipo POINTER do PL/I (ver ma-
nual de PL/I) que ir receber o endereço da rea de BUFFER
para onde os dados foram lidos do terminal pela execução
do comando RECEIVE.

ú-------┐ ú------------------------------┐
| ABC...Ã-----Å-----------------------------┐|
| | | TIOA ||
└--Â-Â--┘ | ú------ X'0091FEB0' V|
ú--Á-Á--┐ | | ú------------┐|
└-------┘ | | |ABC... ||
| PGM | └------------┘|
Obs. O endereço |ú--------Å------┐ |
X'0091FEB0' não || DSA | | |
e' o endereço || V | |
real onde reside || ú-----------┐| |
a TIOA, ‚ || |X'0091FEB0'|| |
apenas um || └-----------┘| |
endereço |Ã---------------´ |
fictício. || . . . | |
|└---------------┘ |
└------------------------------┘

LENGTH (data-area) Especifica uma vari vel que dever conter o tamanho m ximo
da informação que ser lida do terminal pelo comando
RECEIVE. Esta vari vel deve ser do seguinte tipo e
tamanho: BINARY FIXED(15) - 2 bytes bin rios.

Observação: Se o tamanho da informação recebida do ter-


minal for diferente do tamanho especificado
nesta opção, o CICS/MVS muda o valor do
tamanho especificado pelo tamanho real da
informação recebida.
Pag. 43

Utilizando a opção SET podemos ter as seguintes situações, dependendo do


tamanho da informação recebida:

1. Tamanho da informação recebida MENOR que a rea de trabalho definido no pro-


grama de aplicação:

Como a opção SET trabalha diretamente com endereços de memória, isto in-
dica que o programa de aplicação est acessando posições de memórias a mais
do que permitido, que não faz parte dele.

ú---------------------------------------------------------------------------┐
| TIOA |
| ú------┐ |
| ú----> |ABCDEF| XXXX |
| | └------┘ |
| | └--Â---┘ └-Â-┘ |
| | 6 4 |
| DCL MENS CHAR(10) BASED(P); | |
| | └--Å---Â-----┘ |
| | | 10 |
| └-->tamanho V |
| esperado tamanho recebido |
| DCL TAM BIN FIXED (15) INIT(10); | |
| V |
| EXEC CICS RECEIVE SET(P) LENGTH (TAM); |
└---------------------------------------------------------------------------┘

Se for movimentado algum conteúdo para esta rea, estar destruíndo


algumas posições de memória, caracterizando um STORAGE VIOLATION (invasão de
rea), que poder causar s‚rios danos ao CICS/MVS.

2. Tamanho da informação recebida MAIOR que a rea de trabalho definido no pro-


grama de aplicação:

ú---------------------------------------------------------------------------┐
| TIOA |
| ú----------┐ |
| ú----> |ABCDEFGHIJ| |
| | └----------┘ |
| | └--Â--┘ |
| | 6 |
| DCL MENS CHAR(06) BASED(P); |
| | └------Â-----┘ |
| | 10 -->tamanho recebido |
| └-->tamanho | |
| esperado | |
| DCL TAM BIN FIXED (15) INIT(6); V |
| EXEC CICS RECEIVE SET(P) LENGTH (TAM); |
└---------------------------------------------------------------------------┘

O programa de aplicação ir acessar a informação truncada no tamanho da


rea de trabalho definido nele.
Pag. 44

Utilizando a opção INTO:

1. Tamanho da informação recebida MENOR que a rea de trabalho definido no pro-


grama de aplicação:

ú---------------------------------------------------------------------------┐
| TIOA |
| MENS ú------┐ |
| ú----------┐ ú----------|ABCDEF| XXXX <---- conteúdo |
| |ABCDEFXXXX|<-------┘ └------┘ indefinido |
| └----------┘ └--Â---┘ └-Â-┘ |
| 6 4 |
| DCL MENS CHAR(10); | |
| | └--Å---Â-----┘ |
| | | 10 |
| └-->tamanho V |
| esperado tamanho recebido |
| DCL TAM BIN FIXED (15) INIT(10); | |
| V |
| EXEC CICS RECEIVE INTO(MENS) LENGTH (TAM); |
└---------------------------------------------------------------------------┘

Se for feito um teste de comparação com este campo, tomar cuidado, pois
os bytes mais a direita contém conteúdos indefinidos.

2. Tamanho da informação recebida MAIOR que a rea de dado definida no programa


de aplicação:

ú---------------------------------------------------------------------------┐
| TIOA |
| MENS ú----------┐ |
| ú------┐ ú------Â----------|ABCDEFGHIJ| |
| |ABCDEF|<----┘ | └----------┘ |
| └------┘ V └--Â--┘ |
| LENGERR 6 |
| DCL MENS CHAR(06); |
| | └------Â-----┘ |
| | 10 -->tamanho recebido |
| └-->tamanho | |
| esperado | |
| DCL TAM BIN FIXED (15) INIT(6); V |
| EXEC CICS RECEIVE INTO(MENS) LENGTH (TAM); |
└---------------------------------------------------------------------------┘

Se não for tratado o HANDLE CONDITION LENGERR, ir abendar por esta


condição.
Pag. 45

ú------------------------------------------------------------------------------┐
|Terminais modelo 3270 |
| |
| As telas dos terminais modelo 3270 podem mostrar at‚ 1920 caracteres, que |
|estão compostos em 24 linhas e 80 colunas. Isto ‚, a tela est dividida |
|logicamente como sendo uma tabela (ARRAY) bidimensional de 24 linhas por 80 |
|colunas. E esta tabela ‚ inicializada pelo CICS/MVS com zeros bin rios |
|(X'00') que representa fisicamente a tela limpa do terminal de vídeo. |
└------------------------------------------------------------------------------┘

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
| Condição de | Descrição |
| Exceção | |
Ã--------------Å---------------------------------------------------------------´
|LENGERR |Ocorre quando o tamanho da informação recebida for maior que o |
| |tamanho especificado na opção LENGTH. |
| | |
| | |
| |Observação: Esta condição ocorre somente quando se utiliza a |
| | opção "INTO". |
└--------------Á---------------------------------------------------------------┘

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
|1. Utilizando a opção SET: |
| |
| ú----------┐ TIOA ú-------------┐ |
| X'000123FD' |EX01ABCDEF|<----------------------´EX01ABCDEF | |
| | └----------┘ | | |
| | | | |
| └------------------------------┐ | | |
| | └-----Â-Â-----┘ |
| DCL TAM BIN FIXED(15) INIT(10), | ú---Á-Á---┐ |
| 1 MSG_ENTRADA BASED (P), | └---------┘ |
| 2 COD_TRANS CHAR(04), | terminal |
| 2 MENSAGEM CHAR(06), | |
| MSG CHAR(80), | |
| P POINTER; <-------┘ |
| EXEC CICS RECEIVE SET (P) LENGTH (TAM); |
| IF (TAM > 10) THEN |
| DO; |
| MSG = 'ERRO DE TAMANHO, FAVOR RECOMECAR'; |
| EXEC CICS SEND FROM(MSG); |
| EXEC CICS RETURN; |
| END; |
| |
└------------------------------------------------------------------------------┘
Pag. 46

ú------------------------------------------------------------------------------┐
| |
|2. Utilizando a opção INTO: |
| |
| DCL TAM BIN FIXED(15) INIT(10), ú-------------┐ |
| 1 MSG_ENTRADA, ú---´EX01ABCDEF | |
| 2 COD_TRANS CHAR(04), <--'EX01' | | | |
| 2 MENSAGEM CHAR(06), <--'ABCDEF' | | | |
| MSG CHAR(80); | | | |
| EXEC CICS HANDLE CONDITION | └-----Â-Â-----┘ |
| LENGERR (ERRO_TAM); | ú--Á-Á--┐ |
| EXEC CICS RECEIVE INTO (MSG_ENTRADA) <--┘ └-------┘ |
| LENGTH (TAM); terminal |
| ERRO_TAM: |
| MSG = 'ERRO DE TAMANHO, FAVOR RECOMECAR'; |
| EXEC CICS SEND FROM(MSG); |
| EXEC CICS RETURN; |
| |
└------------------------------------------------------------------------------┘
Pag. 47

S E N D

Utilizado para enviar dados não formatados a um terminal ou a uma unidade


lógica.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS SEND FROM (data-area) |
| { LENGTH (data-area) } |
| { ERASE } ; |
| |
└------------------------------------------------------------------------------┘

onde:

FROM (data-area) Especifica uma vari vel elementar ou agregada (estrutura,


ítem de grupo) onde ser armazenado a informação a ser en-
viada para um terminal ou uma unidade lógica.

LENGTH (data-area) Especifica uma vari vel ou uma constante inteira onde se
indica o tamanho m ximo da informação que dever ser en-
viada para um terminal ou uma unidade lógica. Pelo PL/I,
esta vari vel deve ser uma vari vel bin ria de dois bytes
(BIN FIXED(15)).

Observação: Se esta opção não for especificada,


Assume-se o tamanho da informação armazenada
na vari vel especificada na opção FROM.

ERASE Opção que indica que o conteúdo atual da tela dever ser
limpa antes de enviar a informação.

ú-----------------┐ ú------------------┐
|DIEX010234_ | |INFORMACAO NOVA |
| | | |
| | ERASE | |
| |---------->| |
| | | |
| | | |
| | | |
└-----------------┘ └------------------┘
tela antes tela depois
Pag. 48

1. Se a informação a ser enviada para o terminal for maior do que o tamanho es-
pecificado na opção LENGTH, esta informação ser mostrada com os caracteres
a direita truncados.

ú---------------------------------------------------------------------------┐
| DCL TEXTO CHAR(24); |
| TEXTO = 'MENSAGEM PARA O TERMINAL'; |
| EXEC CICS SEND FROM (TEXTO) LENGTH (10) ERASE; |
| ... |
| |
| ú-----------------┐ ú------------------┐ |
| |DIEX_ | |MENSAGEM P | |
| | | | | |
| | | | | |
| | |----------->| | |
| | | | | |
| | | | | |
| | | | | |
| └-----------------┘ └------------------┘ |
| tela antes tela depois |
└---------------------------------------------------------------------------┘

2. A informação enviada para o terminal sem a opção ERASE, ser mostrada a par-
tir (inclusive) da posição em que o cursor estiver posicionado na tela. Se o
cursor estiver posicionado sobre uma informação j existente, a nova
informação ser mostrada sobreposta … informação j existente.

ú---------------------------------------------------------------------------┐
| DCL TEXTO CHAR(06) INIT('CURSOR'); |
| EXEC CICS SEND FROM (TEXTO) LENGTH (06); |
| ... |
| |
| ú-----------------┐ ú-------------------┐ |
| |A PARTIR DO _ | |A PARTIR DO CURSOR | |
| | └----Å------------Å------------┘ | |
| | | | | |
| | |----------->| | |
| | | | | |
| | | | | |
| └-----------------┘ └-------------------┘ |
| tela antes tela depois |
| |
| ú-----------------┐ ú-------------------┐ |
| |A PARTIR DO | |A PARTCURSOR | |
| | └----------Å------------Å------┘ | |
| | | | | |
| | |----------->| | |
| | | | | |
| | | | | |
| └-----------------┘ └-------------------┘ |
| tela antes tela depois |
└---------------------------------------------------------------------------┘
Pag. 49

Observação: Quando a informação estiver relacionada com a qualidade dos dados


fornecidos, a opção "ERASE" não deve ser especificada.

Ex.: 'CODIGO NAO NUMERICO' deve ser enviado sem a opção ERASE para que o ope-
rador certifique-se de que realmente errou.

ú-------------------------------------------------------------------------┐
| DCL TEXTO CHAR(24); |
| DCL TAM BIN FIXED(15) INIT(18); |
| DCL 1 REG_ENTR, |
| 2 COD_TRA CHAR(04), |
| 2 CODIGO CHAR(05); |
| EXEC CICS RECEIVE INTO (REG_ENTR) LENGTH(TAM); |
| IF VERIFY(CODIGO,'0123456789') ª= 0 THEN |
| DO; |
| TEXTO = 'CODIGO NAO NUMEIRO'; |
| EXEC CICS SEND FROM (TEXTO); |
| EXEC CICS RETURN; |
| END; |
| ... |
| |
| ú-------------------------------------┐ |
| |DIEX01A34_ | |
| | | |
| | ú------------------Á-------------------┐ |
| | |DIEX01A34CODIGO NAO NUMERICO | |
| | | | |
| | | | |
| | | | |
| └------------------´ | |
| tela antes | | |
| └--------------------------------------┘ |
| tela depois |
└-------------------------------------------------------------------------┘
Pag. 50

Controle de Programa

Módulo de Controle de Programa (PCP)

O Program Control Program (PCP) ‚ o módulo de gerência do CICS/MVS


respons vel pela localização dos programas de aplicação e, se necess rio,
carreg -los na memória para execução.

Na ocasião em que uma tarefa requerer um dado programa de aplicação, tal pro-
grama pode ou não estar na memória. Existem três raz-es pelas quais um programa
pode j estar na memória na ocasião em que ‚ necessitado por uma tarefa.

* Trata-se de um programa residente; isto ‚, ele foi carregado na memória


quando o CICS/MVS foi inicializado.

* Outra tarefa est usando o programa.

* Outra tarefa usou o programa e a rea de memória não foi necess ria para
nada mais, e o programa permanece na memória.

Uma das funções do PCP ‚ determinar se o programa de aplicação solicitado


est ou não na região/partição do CICS/MVS. Se o programa de aplicação não est
na memória, o PCP carregar o programa. Uma segunda função do PCP ‚ transferir o
controle para o programa de aplicação, de modo que ele possa começar a execução.
Ele ‚ tamb‚m respons vel pela transferência de controle para eles e o retorno do
controle para o CICS/MVS quando os programas de aplicação tiverem completado a
execução. O PCP tamb‚m facilita um programa de aplicação que esteja transferindo
controle para outro programa de aplicação.

Na execução de suas funções de controle de programa, o PCP faz uso de uma


tabela chamada Processing Program Table (PPT). Existe uma entrada na tabela
para cada programa de aplicação. Cada entrada, contém, entre outras coisas, os
seguintes ítens:

ú------------Â-----------Â--------Â--------------Â- - - - -
|Nome do PGM |Endereço de|Endereço|Linguagem de |
|de aplicação| memória |de disco|program. usada|
└------------Á-----------Á--------Á--------------Á- - - - -

O programador de sistemas ‚ respons vel pela definição dos programas na PPT.

Quando uma tarefa termina, o programa de aplicação usado pela tarefa pode não
ser mais necess rio. Em muitos casos o CICS/MVS pode tornar a usar a rea de
memória que o programa de aplicação ocupou. Se a tarefa que tiver sido
recentemente terminada ‚ a única tarefa de usuário usando um programa de
aplicação, então a rea de memória est disponível para outras finalidades. Se
entretanto, diversas tarefas estão usando o mesmo programa de aplicação, como
acontece frequentemente, o CICS/MVS não pode tornar a usar a rea de memória.
Para uma gerência adequada da memória, o PCP necessita saber se existem tarefas
simultâneas usando o mesmo programa. O PCP obtém esta informação de um contador
de uso na entrada da PPT para tal programa de aplicação:
Pag. 51

ú------------Â-----------Â--------Â--------------ÂÂÂÂÂÂÂÂÂÂ- - - -
|Nome do PGM |Endereço de|Endereço|Linguagem de |Contador|
|de aplicação| memória |de disco|program. usada|de uso |
└------------Á-----------Á--------Á--------------ÁÁÁÁÁÁÁÁÁÁ- - - -

Cada vez que uma tarefa começa usando um programa, o contador de uso ‚ incre-
mentado. Cada vez que uma tarefa termina, o contador de uso ‚ diminuido. Quando
o contador de uso ‚ zero, o PCP autoriza o novo uso da rea ocupada pelo pro-
grama de aplicação. Assim, uma das funções do PCP ‚ determinar quando os progra-
mas de aplicação não são mais requeridos pelas tarefas.

Os programas são carregado na memória virtual quando necess rios, a menos que
eles estejam especificados na PPT como programas residentes.

Os programas são reloc veis, isto ‚, eles podem estar em diferentes


localizações na memória de uma execução para a outra. Desta forma, a PPT e'
utilizada pela PCP para localização destes programas na memória durante a
operação do CICS/MVS.

Elementos Utilizados pelo PCP

* Processing Program Table (PPT)

* Comandos :

- RETURN

- LINK

- XCTL

- LOAD

- RELEASE

- RETURN TRANSID

- ABEND
Pag. 52

R E T U R N

Utilizado para retornar o controle para:

* o pragrama no nível lógico imediatamente superior (retorno de uma subrotina


CICS/MVS), ou para o

* CICS/MVS quando termina a tarefa.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS RETURN; |
| |
└------------------------------------------------------------------------------┘

Obs.: Deve ser codificado em todos os t‚rminos lógicos do programa;

ú------------------------------------------------------------------------------┐
| ú------------------------------┐ ú-->ú--------------------┐ |
| |PGMEXM : PROC OPTIONS(MAIN); | | |PGM1 : PROC ... | |
| | . | | | . | |
| |EXEC CICS LINK | | | . | |
| | PROGRAM('PGM1');----Å----┘ | . | |
| | . <--------------------Å--------ÅEXEC CICS RETURN; | |
| | . | |END PGM1; | |
| | . | └--------------------┘ |
| |IF ACABOU THEN | |
| | EXEC CICS RETURN;-----------Å-------------┐ |
| | . | | |
| | . | | |
| | . | V |
| |EXEC CICS RETURN;-------------Å-----------> C I C S / M V S |
| |END PGMEXM; | |
| └------------------------------┘ |
| |
└------------------------------------------------------------------------------┘
Pag. 53

L I N K

€ usado para passar o controle de um programa de aplicação de nível


lógico superior para um programa de aplicação de nível lógico inferior.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS LINK PROGRAM ('nome') |
| { COMMAREA (data-area) |
| { LENGTH (data-value) }} |
| |
└------------------------------------------------------------------------------┘

Onde:

PROGRAM ('nome') Especifica a identificação de um programa de aplicação


ao qual o controle ser passado, temporariamente. O nome
especificado precisa consistir de at‚ oito caracteres
alfanum‚ricos e precisa estar definido na PPT.

Deve ser uma constante ou um campo alfanum‚rico contendo


o nome de um programa de aplicação ao qual ser passado
o controle.

Obs : Em nossa instalação a identificação do programa


de aplicação deve consistir de at‚ 6 caracteres
alfanum‚ricos, começando por um caracter
alfab‚tico, necessariamente.

COMMAREA (data-area) Especifica o nome de uma rea de trabalho onde estão


armazenados os dados a serem passados ao programa de
aplicação ao qual o controle ser passado.

LENGTH (data-value) Especifica o nome de uma rea de trabalho onde-se indica


o comprimento m ximo dos dados que serão passados via
opção COMMAREA. Deve ser uma constante ou um campo
bin rio de dois bytes (BIN FIXED(15)). O valor m ximo
aceito por esta vari vel ‚ de 32.767 bytes, oque indica
que, podemos passar como parâmetro somente esta
quantidade em bytes.

Quando um programa de aplicação emite um comando LINK para outro programa de


aplicação, o nome do programa chamado deve estar na PPT. Se não estiver, ocorre
a condição de exceção PGMIDERR que ‚ um erro de identificação do programa.

Quando o comando RETURN ‚ executado no programa LINKado (chamado), o controle ‚


retornado … próxima instrução execut vel logo após o comando LINK no programa de
aplicação chamador (que emitiu o comando LINK).
Pag. 54

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|PGMIDERR |Ocorre se um programa de aplicação não est cadastrado na PPT |
| |ou o mesmo não est disponível para execução. |
└--------------Á---------------------------------------------------------------┘

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
| |
| Suponhamos que o programa A esteja sendo executado. Em um ponto dado o |
|programa A emite o comando LINK para o programa B. Por definição, B ‚ um |
|nível lógico menor do que A. O comando LINK ‚ emitido; A p ra a execucao, mas |
|o mesmo nao est terminado. B ‚ carregado, recebe o controle e executa o |
|programa at‚ que um comando RETURN seja encontrado dentro de B. Nesta |
|ocasião, o controle ‚ então retornado ao programa de chamada (programa A, |
|neste caso). A execução de A prossegue com a instrução imediatamente |
|seguinte ao comando LINK. A sequência pode ser diagramaticamente como se se- |
|gue: |
| |
|1. SEM PASSAR DADOS : |
| |
| |
| Programa A |
| ú-----------------------┐ |
| |PROGR1: PROC OPTIONS...| |
| |. . . | |
| |. . . | |
| |. . . | Programa B |
| |EXEC CICS LINK | ú-----------------------┐ |
| | PROGRAM('PROGR2');--Å------------->|PROGR2: PROC OPTIONS...| |
| |MSG = 'VOLTEI';<-------Å--------┐<┐ |. . . | |
| |EXEC CICS SEND | | | |. . . | |
| | FROM(MSG); | | | |. . . | |
| |. . . | | | |. . . | |
| |. . . | | | |IF ACABOU = 'SIM' THEN | |
| |END PROGR1; | | └---Å- EXEC CICS RETURN; | |
| └-----------------------┘ | |. . . | |
| | |. . . | |
| | |. . . | |
| | |. . . | |
| └-----ÅEXEC CICS RETURN; | |
| |END PROGR2; | |
| └-----------------------┘ |
| |
└------------------------------------------------------------------------------┘
Pag. 55

ú------------------------------------------------------------------------------┐
| |
| |
|2. PASSANDO DADOS : |
| |
| |
| Programa A |
| ú-----------------------┐ |
| |PROGR1: PROC OPTIONS...| |
| |DCL AREA CHAR(05); | |
| |. . . | endereço |
| |AREA = 'AAAAA';ú-------Å----------------------------┐ |
| |EXEC CICS LINK | | Programa B | |
| | COMMAREA(AREA) | ú-------------V---------┐ |
| | PROGRAM('PROGR2');--Å------------->|PROGR2: PROC(P) OPTIONS| |
| |IF AREA = 'BBBBB' THEN<Å--------┐<┐ |DCL AREA_B BASED(P) | |
| | EXEC CICS SEND | | | | CHAR(05); | |
| | FROM(AREA); | | | |DCL P POINTER; | |
| |. . . | | | |. . . | |
| |. . . | | | |AREA_B = 'BBBBB'; | |
| |END PROGR1; | | | |. . . | |
| └-----------------------┘ | | |IF ACABOU = 'SIM' THEN | |
| | └---Å- EXEC CICS RETURN; | |
| | |. . . | |
| | |. . . | |
| └-----ÅEXEC CICS RETURN; | |
| |END PROGR2; | |
| └-----------------------┘ |
| |
└------------------------------------------------------------------------------┘
Pag. 56

X C T L

€ usado para transferir (definitivamente) o controle de um programa


de aplicação a um outro de mesmo nível lógico.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS XCTL PROGRAM ('nome') |
| { COMMAREA (data-area) |
| { LENGTH (data-value) } } ; |
| |
└------------------------------------------------------------------------------┘

Onde:

PROGRAM ('nome') Especifica a identificação de um programa de aplicação


ao qual o controle ser passado, definitivamente. O nome
especificado precisa consistir de at‚ oito caracteres
alfanum‚ricos e precisa estar definido na PPT.

Deve ser uma constante ou um campo alfanum‚rico contendo


o nome de um programa de aplicação ao qual ser passado
o controle.

Obs : Em nossa instalação a identificação do programa


de aplicação deve consistir de at‚ 6 caracteres
alfanum‚ricos, começando por um caracter
alfab‚tico, necessariamente.

COMMAREA (data-area) Especifica o nome de uma rea de trabalho onde se


encontram os dados a serem passados ao programa de
aplicação ao qual o controle ser passado definiti-
vamente.

LENGTH (data-value) Especifica o nome de uma rea de trabalho onde se indica


o comprimento m ximo dos dados que serão passados via
opção COMMAREA. Deve ser uma constante ou um campo
bin rio de dois bytes (BIN FIXED(15)). O valor m ximo
aceito por esta vari vel ‚ de 32.767 bytes, oque indica
que, podemos passar como parâmetro somente esta
quantidade em bytes.

Se um programa de aplicação ‚ chamado por um comando XCTL, o controle ser


passado para o programa citado; entretanto o programa que emitiu o comando XCTL
não tornar a ganhar o controle (o programa chamador ‚ liberado pela tarefa e
pode ser suprimido da memória se nenhuma outra estiver usando o mesmo).
Pag. 57

Quando um programa de aplicação emite um comando XCTL para outro programa de


aplicação, o código da transação (associado ao programa de aplicação) chamado
deve estar na PPT. Se não estiver ocorre a condição de exceção PGMIDERR que ‚ um
erro de idenficação do programa.

O comando XCTL dispensa o comando EXEC CICS RETURN no final do programa de


aplicação.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|PGMIDERR |Ocorre se um programa não pode ser encontrado na PPT ou nao |
| |est disponível. Pode tamb‚m ocorrer no MVS/XA se um programa |
| |de aplicação em modo de 24 BITs emitir um comando LOAD para um |
| |programa residente acima dos 16 Mbytes. |
└--------------Á---------------------------------------------------------------┘

ú------------------------------------------------------------------------------┐
|E x e m p l o |
| |
| |
|1. SEM PASSAR DADOS : |
| |
| Programa A Programa B |
| ú-----------------------┐ ú-----------------------┐ |
| |PROGR1: PROC OPTIONS...| ú----->|PROGR2: PROC OPTIONS...| |
| |. . . | | |. . . | |
| |. . . | | |. . . | |
| |IF COND = 0 THEN | | |. . . | |
| | EXEC CICS XCTL | | |. . . | |
| | PROGRAM('PROGR2');--Å-------┘ |IF FIM = 'SIM' THEN | |
| |. . . | ú------Å--EXEC CICS RETURN; | |
| |. . . | | |. . . | |
| |. . . | | |. . . | |
| |. . . | | |. . . | |
| |. . . | |ú-----ÅEXEC CICS RETURN; | |
| |END PROGR1; | || |END PROGR2; | |
| └-----------------------┘ || └-----------------------┘ |
| VV |
| C I C S / M V S |
| |
└------------------------------------------------------------------------------┘
Pag. 58

ú------------------------------------------------------------------------------┐
| |
| |
|2. PASSANDO DADOS : |
| |
| endereço |
| ú-----------------------┐ |
| Programa A | Programa B | |
| ú-----------------------┐ | ú-------------V---------┐ |
| |PROGR1: PROC OPTIONS...| | ú----->|PROGR2: PROC(P) OPTIONS| |
| |DCL AREA CHAR(05); | | | |DCL AREA BASED(P); | |
| |AREA = 'AAAAA'; | | | |DCL P POINTER; | |
| |IF COND = 99 THEN | | | |. . . | |
| | EXEC CICS XCTL | | | |. . . | |
| | COMMAREA(AREA)------Å----┘ | |. . . | |
| | PROGRAM('PROGR2');--Å-------┘ |IF AREA = 'AAAAA' THEN | |
| |. . . | ú------Å--EXEC CICS RETURN; | |
| |. . . | | |. . . | |
| |. . . | | |. . . | |
| |. . . | | |. . . | |
| |. . . | |ú-----ÅEXEC CICS RETURN; | |
| |END PROGR1; | || |END PROGR2; | |
| └-----------------------┘ || └-----------------------┘ |
| VV |
| C I C S / M V S |
| |
└------------------------------------------------------------------------------┘

Quando um comando RETURN ‚ emitido em um programa invocado por um comando


XCTL, o retorno ‚ para o programa no nível lógico imediatamente superior ou para
o CICS/MVS se nenhum LINK foi emitido. Por exemplo:

Programa A
ú-----------------┐
| . |
| . | Programa B Programa C
| . | ú----------------┐ ú----------------┐
|EXEC CICS LINK---Å--->| . | ú->| . |
ú->| . | | . | | | . |
| | . | | . | | | . |
| | . | |EXEC CICS XCTL--Å-┘ | . |
| |EXEC CICS RETURN;Å--┐ | . | | . |
| └-----------------┘ V | . | |EXEC CICS RETURNÅ-┐
| CICS/MVS | . | | . | |
| └----------------┘ └----------------┘ |
└------------------------------------------------------------------┘
Pag. 59

L O A D

€ usado para buscar programas de aplicação, tabela, ou mapa da bi-


blioteca onde eles residem e carreg -los (somente) na memória principal.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS LOAD PROGRAM ('nome') |
| { SET (pointer) } |
| { LENGTH (data-area) } |
| { HOLD } ; |
| |
└------------------------------------------------------------------------------┘

Onde:

PROGRAM ('nome') Especifica a identificação de um programa de aplicação,


uma tabela, ou um mapa que ser carregado na memória
principal. O nome especificado precisa consistir de at‚
oito caracteres alfanum‚ricos e precisa estar definido
na PPT.

Deve ser uma constante ou um campo alfanum‚rico que


contém a identificação.

SET (pointer) Especifica um nome de uma rea de trabalho (tipo


POINTER) onde ser armazenado o endereço inicial da rea
na qual a tabela, o programa de aplicação, ou o mapa
ser carregado.

LENGTH (data-area) Especifica uma rea de trabalho, onde ser armazenado o


tamanho da tabela, programa de aplicação, ou mapa logo
após ele ser carregado. Deve ser um campo bin rio de
dois bytes (BIN FIXED(15)).

HOLD Indica que a tabela, o programa de aplicação, ou o mapa


carregado na memória principal deve permanecer na mesma
at‚ que seja emitido o comando RELEASE (ver próximo co-
mando) que libera da memória principal.

Se for omitido, a rea de memória ‚ liberada automatica-


mente no fim da tarefa que executou o comando LOAD.

O comando LOAD ‚ tambem usado para carregar um módulo de programa execut vel.
Entretanto, ‚ mais comumente usado para carregar tabelas (Estas tabelas devem
ser gerados em ASSEMBLY).
Pag. 60

O CICS/MVS considera tanto a tabela como o mapa como sendo um programa de


aplicação, j que os mesmos devem residir na biblioteca de programas e o nome
deve estar definido na PPT.

O programa de aplicação, tabela, ou o mapa carregado e segurado na memória com a


opção HOLD Só PODERµ ser liberado emitindo-se o comando RELEASE.

Obs : Este comando ‚ mais comumente usado para carregar tabelas.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|PGMIDERR |Ocorre se um programa nao pode ser encontrado na PPT ou não |
| |est disponível. Pode tamb‚m ocorrer no MVS/XA se um programa |
| |de aplicação em modo de 24 BITs emitir um comando LOAD para um |
| |programa residente acima dos 16 Mbytes. |
└--------------Á---------------------------------------------------------------┘

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
| endereço |
| DCL PTR POINTER, <--------------------┐ TABMES |
| 1 TAB_MES (12) BASED(PTR), ú---------┐ |
| 2 NM_MES CHAR (09); |JANEIRO | |
| ... |FEVEREIRO| |
| EXEC CICS LOAD PROGRAM ('TABMES') |MARCO | |
| SET (PTR) |. . . | |
| HOLD; |DEZEMBRO | |
| IF TAB_MES.NM_MES(5) = 'MAIO' THEN └---------┘ |
| ... |
| ... |
| |
└------------------------------------------------------------------------------┘
Pag. 61

R E L E A S E

usado para retirar (liberar) da memória principal um programa de


aplicação, tabela, ou um mapa previamente carregado e segurado por um comando
LOAD com a opção HOLD (ver comando anterior).

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS RELEASE PROGRAM ('nome') ; |
| |
└------------------------------------------------------------------------------┘

Onde:

PROGRAM ('nome') Especifica a identificação de um programa de aplicação, uma


tabela, ou um mapa que ser liberado da memória principal. O
nome especificado precisa consistir de at‚ oito caracteres
alfanum‚ricos e precisa estar definido na PPT. Deve ser uma
constante ou um campo alfanum‚rico que contém a identificação.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|PGMIDERR |Ocorre se um programa nao pode ser encontrado na PPT ou não |
| |est disponível. Pode tamb‚m ocorrer no MVS/XA se um programa |
| |de aplicação em modo de 24 BITs emitir um comando LOAD para um |
| |programa residente acima dos 16 Mbytes. |
└--------------Á---------------------------------------------------------------┘

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
| ... |
| EXEC CICS RELEASE PROGRAM ('TABMES'); |
| ... |
| |
└------------------------------------------------------------------------------┘
Pag. 62

Transação Conversacional

A essência de uma transação conversacional ‚ que, numa operação de entrada de


informação por terminal, a transação fica esperando por uma resposta do operador
de terminal.

Para se obter uma transação conversacional, pode se codificar os seguintes


comandos, na mesma sequência que ‚ mostrada abaixo:

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS SEND ... ; |
| EXEC CICS RECEIVE ... ; |
| |
└------------------------------------------------------------------------------┘

Como mostrado acima, primeiro, a transação pede ao CICS/MVS que mostre a


mensagem para o operador de terminal. Logo após a transação pede a entrada de
uma informação pelo terminal. Como a transação somente ir receber esta mensagem
quando o operador de terminal pressionar uma das teclas de função (PFs, PAs ou
ENTER), a transação ficar esperando at‚ que isto ocorra, para que se possa con-
tinuar com o processamento.

ú------------------------------------------------------------------------------┐
| ú------------------------┐ ú-------------┐ |
| | . | | ú┘ └┐ | |
| | SEND ---------------Å----->| | | | |
| | . | | └ÁÁ´| | |
| | . | | └┘ | |
| | RECEIVE <-----------Å------| PF KEYS | |
| | . | └-----Â-Â-----┘ |
| └------------------------┘ ú---Á-Á---┐ |
| └---------┘ |
| terminal |
| |
└------------------------------------------------------------------------------┘

Durante o período de espera, esta transação ‚ considerada "em uso" pelo


CICS/MVS. Isto faz com que a transação prenda os recursos, por ela utilizada du-
rante este período. Por exemplo, memória ou registro a espera de uma
atualização. Se neste período, uma outra transação necessitar destes recursos, a
performance da outra transação poder ser afetada, e isto nao ‚ uma situação
desej vel.
Pag. 63

Transação Pseudo-conversacional

Para o usuário final, uma transação pseudo-conversacional, parece como se


fosse uma transação conversacional, mas a codificação das duas ‚ diferente.

Essencialmente numa transação pseudo-conversacional, a transação termina a


execução (liberando a memória e os recursos, retornando o controle ao CICS/MVS)
após mostrar a mensagem ao operador de terminal. Mas antes ‚ feito uma
indicação ao CICS/MVS, de modo que, a próxima informação entrada pelo operador
de terminal, ir acarretar na execução de uma outra transação, que ir receber
esta informação pedida pela transação anterior.

ú------------------------------------------------------------------------------┐
| |
| transação 1 |
| ú------------------------┐ |
| | . | ú-------------┐ |
| | SEND ---------------Å----->| ú┘ └┐ | |
| └------------------------┘ | | | | |
| transação 2 | └ÁÁ´| | |
| ú------------------------┐ | └┘ | |
| | RECEIVE <-----------Å------| PF KEYS | |
| | . | └-----Â-Â-----┘ |
| └------------------------┘ ú---Á-Á---┐ |
| └---------┘ |
| terminal |
| |
└------------------------------------------------------------------------------┘

As transações pseudo-conversacionais oferecem duas vantagens :

* A memória nao ‚ usada desnecessariamente durante o I/O normal, nem durante o


tempo necess rio pelo operador para tomar uma decisão;

* O operador precisa saber apenas o código de transação inicial.


Pag. 64

R E T U R N T R A N S I D

Comando usado para definir transações PSEUDO-CONVERSACIONAIS.

ú------------------------------------------------------------------------------┐
| F O R M A T O |
| |
| EXEC CICS RETURN { TRANSID ('nome') |
| { COMMAREA (data-area) |
| { LENGTH (data-value) } } } ; |
| |
└------------------------------------------------------------------------------┘

Onde:

TRANSID ('nome') Especifica a identificação da transação que ser


associada com o terminal para ter um início autom tico
do mesmo. O nome especificado precisa consister de at‚
quatro caracteres alfanum‚ricos e precisa estar definido
na PCT.

Deve ser uma constante ou campo alfanum‚rico que contém


a identificação da transação.

COMMAREA (data-area) Especifica uma rea de trabalho onde se encontram os


dados que serão passados ao programa de aplicação indi-
cado na opção TRANSID que est associado ao terminal.

LENGTH (data-value) Especifica uma rea de trabalho onde se indica o


comprimento m ximo dos dados que serão passados via
COMMAREA. Deve ser uma constante ou um campo bin rio de
dois bytes (BIN FIXED(15)).

O comando RETURN TRANSID d o controle de volta ao CICS/MVS. O PCP analisa o


parâmetro TRANSID e armazena o código de transação, com outras informações sobre
o terminal associado com a tarefa, que tiver sido recentemente completada. Ao se
acionar o terminal (com a transação associada) teclando-se alguma tecla de
função (tais como PFs, PAs e ENTER), a tarefa associada a este terminal ser
iniciada. Este processo ‚ chamado de PSEUDO-CONVERSACIONAL.
Pag. 65

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|INVREQ |Ocorre se uma das seguintes situações existe : |
| | |
| |* Um comando RETURN com a opção COMMAREA ‚ emitido em um |
| | programa que não est no nível lógico mais alto. |
| |* Um comando RETURN com a opção TRANSID ‚ emitido em uma |
| | transação que não est associado com um terminal. |
└--------------Á---------------------------------------------------------------┘

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
|1. Pseudo-conversacional com transação única. |
| |
| ú - - - - - - - - - - - - - - - - - - - - - -┐ |
| ' ú-------------V----------------┐ |
| ' ú-------------------->|PROGEX: PROC(P) OPTIONS(MAIN);| |
| ' | |DCL AREA CHAR(05) BASED(P), | |
| ' | |. . . | |
| ' ú------Á------┐ |IF (EIBCALEN = 0) THEN DO; | |
| ' | ú┘ └┐ | | ALLOC AREA; | |
| ' | | | | ú-----Å-- EXEC CICS RETURN | |
| ' | └ÁÁ´| | | | TRANSID('PGEX') | |
| ' | └┘ | V | COMMAREA(AREA); | |
| ' | PF KEYS |<- - C I C S | . . . ' | |
| ' └-----Â-Â-----┘ |ELSE ' | |
| ' ú---Á-Á---┐ | . . . ' | |
| ' └---------┘ | ' | |
| ' terminal ú - - - - -|- - - - - - - - ┘ | |
| ' V |END PROGEX; | |
| └ - - - - - X'00012CF0' └------------------------------┘ |
| ú-----------┐ |
| └-----------┘<-- uma rea qualquer na memória do |
| CICS/MVS |
| |
| Obs.: Ver exemplo de aplicação pseudo-conversacional da p gina 21 |
└------------------------------------------------------------------------------┘
Pag. 66

ú------------------------------------------------------------------------------┐
|2. Pseudo-conversacional com mais de uma transação. |
| |
| ú----------------------------┐ |
| |PROGEX: PROC OPTIONS(MAIN); | |
| ú-------------┐ | DCL AREA CHAR (05); | |
| | ú┘ └┐ | | . . . | |
| ú--Å-- | | | ú-----Å-- EXEC CICS RETURN | |
| | | └ÁÁ´| | | | TRANSID('PGE2') | |
| | | └┘ | V | COMMAREA(AREA); | |
| | | PF KEYS |<- - - C I C S | . . . ' | |
| | └-----Â-Â-----┘ | . . . ' | |
| | ú---Á-Á---┐ | . . . ' | |
| | └---------┘ | ' | |
| | terminal ú - - - - - -|- - - - - - - - ┘ | |
| | V |END PROGEX; | |
| | ú - -X'00012CF0' └----------------------------┘ |
| | ' ú-----------┐ |
| | ' └-----------┘<-- uma rea qualquer na memória do |
| | └ - - - - - ┐ CICS/MVS |
| | ' |
| | ú--------------V------------------┐ |
| └--->|PGMEX2: PROC (P) OPTIONS(MAIN); | |
| | DCL PARM CHAR(05) BASED(P), | |
| | P POINTER; | |
| | . . . | |
| | . . . | |
| | EXEC CICS RETURN; | |
| | . . . | |
| |END PGMEX2; | |
| └---------------------------------┘ |
| |
└------------------------------------------------------------------------------┘
Pag. 67

A B E N D

O comando ABEND ‚ usado para requisitar (forçar) um t‚rmino anormal da tarefa


(ABEND volunt rio), e envia uma mensagem CICS/MVS ABEND ao terminal associado
com a tarefa.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS ABEND { ABCODE ('nome') } |
| |
└------------------------------------------------------------------------------┘

onde:

ABCODE ('nome') Especifica o nome que ser mostrado junto ao DUMP gerado pelo
comando ABEND. Este nome deve ser uma constante ou um campo
alfanum‚rico que dever conter um nome de at‚ quatro caracteres
alfanum‚ricos.

Especifica o DUMP que o programador pode então usar para deter-


minar onde o fim anormal de tarefa ocorreu e/ou a causa do fim
anormal da tarefa.

O comando ABEND especificado sem nenhuma opção terminar a tarefa com o


seguinte DUMP: "DFH2206I TRANSACTION XXXX ABEND ????. BACKOUT SUCCESSFUL", onde:
"XXXX" ‚ o código da transação, e "????" o código do ABEND.

O código de ABEND "????", geralmente se referência a ABEND de PL/I que o


CICS/MVS não conseguiu tratar. E este pode ser um dos seguintes ABENDs PL/I:

* DATA EXCEPTION
* OPERATION EXCEPTION
* PROTECTION EXCEPTION
* SPECIFITICATION EXCEPTION
Pag. 68

ú------------------------------------------------------------------------------┐
| E x e m p l o |
| |
| ... |
| EXEC CICS ABEND ABCODE ('XBD1'); |
| ... | |
| ú-----------------------Å-----------------------------------┐ |
| | | | |
| | └---------┐ | |
| | | | |
| | V | |
| |DFH2206I TRANSACTION XXXX ABEND XBD1. BACKOUT SUCCEFUL | |
| └-----------------------------------------------------------┘ |
| terminal de vídeo |
└------------------------------------------------------------------------------┘

Observação : Este comando substitui o "CALL ABEND" utilizado por aplicações


PL/I-batch, que ‚ proibido em aplicações PL/I-CICS/MVS.
Pag. 69

D A D O S T R A N S I T └ R I O S

Conceitos de dados transitórios

Os recursos do CICS/MVS at‚ agora foram discutidos no contexto de transações


de aplicação entrada por um operador de terminal. Tais transações são usualmente
solicitacoes para consulta ou autalização de um arquivo, que ‚ parte do banco de
dados permanentes da instalação. O programa de aplicação recebe e interpreta a
solicitação, realiza o processamento apropriado e envia uma resposta imediata ao
terminal.

Algumas aplicações entretanto podem não se prestar totalmente a esta esp‚cie


de filosofia de projeto de entrada-processamento-resposta. Considere os
seguintes exemplos:

Exemplo 1 Classificação de Cr‚dito: Uma instalação de mercadorias a varejo


permite que seus clientes façam pedidos de cr‚dito. J que o
departemento de cr‚dito deve fazer verificação extensiva em cada
cliente antes do cr‚dito ser ampliado, nenhuma resposta imediata ‚
dada ao cliente. O departamento de entrada de dados da instalação
tem a responsabilidade de entrar dados de aplicações de cr‚dito no
sistema. Os dados são validados para formato e conteúdo no ponto de
entrada. Eles são então passados para processamento em um programa
BTACH que faz uma consistência mais detalhada e verificação contra
os arquivos existentes, e produz relatórios para o departamento de
cr‚dito.

Exemplo 2 Manipulação de Pedidos: O mesmo negociante aceita pedidos por


telefone e por correio dos clientes estabelecidos. Estes pedidos
são entrados pelo departamento de entrada de pedidos e então en-
viados a diversas localizações de depósito de mercadorias para
serem atendidos. Um terminal de impressora ‚ colocado em cada
depósito de mercadorias para receber pedidos a medida que eles são
processados. Quando diversos pedidos tiverem sido processados para
um depósito de mercadorias para selecionar os ítens solicitados do
estoque.

Exemplo 3 Relatório de Atividade: Durante o dia de processamento, os regis-


tros são mantidos de acordo com a natureza das atividades reali-
zadas pelo sistema. No fim do dia, essas informações são
sumarizadas e impressas no computador central para uso pelo pessoal
que estiver monitorando as atividades do dia.

Cada um deste três exemplos envolve dados que são de natureza transitória.
Isto ‚, os dados sao criados ou coletados por uma ou mais tarefas, mas devem ser
passados para outra tarefa para processamento. As informações necessitam apenas
ser mantidas no sistema at‚ que o programa de processamento ‚ ativado para fazer
a disposição final. Portanto, ‚ conveniente ter algum meio de armazenamento
intermedi rio, onde guardar os dados destinados para futuro processamento. O re-
curso de Dados Transitórios do CICS/MVS prove tal meio.
Pag. 70

Filas de Dados Transitórios

A informação que ‚ processada como Dados Transitórios ‚ armazenada em


cojuntos de dados sequênciais conhecidos como filas de dados transitórios. Uma
fila pode ser encarada como uma fila sequêncial, em que, os registros sao
processados sequencialmente. Na realidade, uma fila pode ser:

* uma divisão lógica de um arquivo com acesso direto único, "pertencente" ao


CICS/MVS

* um disco sequencial ou arquivo de fita definido pelo usuário

* um dispositivo sequencial, tal como uma impressora de alta velocidade.

Cada fila ‚ um depósito de informação destinado a processamento futuro.


Consequentemente, filas de dados transitórios são tamb‚m referidas como destinos
de dados transitórios.

Destinos de dados transitórios são definidos pelo programador de sistema


quando o sistema ‚ gerado. Cada destino ‚ descrito em uma entrada da Destination
Control Table (DCT). Na DCT, cada entrada ‚ definida por um nome simbólico (1 a
4 caracteres alfanum‚ricos). este nome, a identificação do destino
que ‚ usado para ter acesso … fila de dados transitórios que representa o des-
tino.

Os destinos de Dados Transitórios podem ser definidos como extrapartição ou


intrapartição. A seguinte argumentação descreve estes dois tipos de destino.

Destinos de Extrapartição

Destinos de extrapatição são filas de dados transitórios que podem ser


criados por uma tarefa sob o CICS/MVS e processados fora da região ou partição
ou criados fora da região/partição, e processados por uma tarefa sob o CICS/MVS.
Cada destino ‚ um arquivo físico e ‚ definido como um arquivo de entrada ou como
um arquivo de saída na DCT.

Vejamos o exemplo de uma atualização periódica de arquivo. Cada ordem que en-
tra para um ítem exige uma atualização do arquivo, de modo que, o registro do
arquivo reflita o invent rio físico real daquele ítem. Durante a operação do
CICS/MVS, atualizações imediatas podem ocorrer quando as ordens vem dos
terminais. Mas alem disto, as ordens podem chegar na forma de um arquivo
sequencial. Este arquivo pode ser, por exemplo, uma fita magn‚tica criada fora
de linha por um programa BATCH. Uma transação separada do CICS/MVS poderia ser
designada para aplicar a informação da fita em uma atualização em massa do
invent rio. O arquivo de fita seria definido no CICS/MVS como um destino de
extrapartição e referenciado pelo programa de aplicação por um nome de fila de
dados transitórios.

Um outro modo de executar esta aplicação seria o de ter as ordens registradas


por operadores de entrada de dados em terminais do CICS/MVS. A informação
poderia ser gravada para um destino de extrapartição, que representa um arquivo
sequencial em disco. Este arquivo poderia então ser usado como entrada para um
programa BATCH, o qual executaria as atualizações de invent rio.
Pag. 71

Um terceiro exemplo poderia ser o de grupos de dados a serem impressos, os


quais são reunidos em um destino de extrapartição representando uma impressora
de alta velocidade.

Dados transitórios em um destino de extrapartição consistem em registros


sequenciais, que podem ser fixos ou de extensão vari vel. O formato destes re-
gistros est descrito na Destination Control Table (DCT), que define cada des-
tino. O programa de aplicação necessita somente saber a identificação do destino
(nome de fila) e o comprimento do registro.

Tarefas múltiplas podem armazenar registros na mesma fila de saída. Na en-


trada, contudo, os registros são comumentes pesquisados por uma só tarefa, uma
vez que os registros são pesquisados sequencialmente.

Destinos de Intrapartição

Destinos de intrapartição são filas de dados transitórios que são processados


somente dentro da partição do CICS/MVS. Into ‚, eles são usualmente criados por
uma tarefa para serem processados por uma outra tarefa. Os destinos dividem o
espaço em um arquivo de disco.

Lembrar a aplicação de manuseio dos pedidos (exemplo 2) anteriormente discu-


tida. uma aplicação de comunicação de mensagem, em que uma tarefa
executada por um terminal em um local central, prepara pedidos a serem impressos
em terminais remotos. Estas ordens são gravadas em destinos de intrapartição e
mantidas ali at‚ que a transação de impressão seja ativada.

Na unidade sobre Controle de Terminal, foi aprendido que a informação pode


ser enviada somente para o terminal associado com uma tarefa particular. Assim,
a tarefa que prepara pedidos pode comunicar-se somente com o terminal no local
central. Mais adiante, uma transação diferente ‚ iniciada para pesquisar os
dados dos destinos e imprimir os pedidos.

Um destino de intrapartição pode ser usado por uma ou mais tarefas a ao mesmo
tempo. Consequentemente, na mesma fila, ‚ possível armazenar dados vindos de
v rias tarefas, mesmo se tais tarefas forem executadas simultâneamente. O dado ‚
processado pelo Transient Data Program (TDP) de uma maneira FIFO, isto ‚,
primeiro a entrar, primeiro a sair. Os programas de aplicação que gravam na fila
não tem controle sobre a sequência dos registros.

Al‚m disso, uma vez o registro ‚ pesquisado de uma fila de intrapartição, ele
não pode ser acessado novamente por qualquer tarefa. Isto ‚, duas tarefas não
podem pesquisar o mesmo registo. Isto significa que embora deiversas tarefas
possam gravar para o mesmo destino, somente uma deveria pesquisar dados do des-
tino. Se tarefas múltiplas lerem o mesmo destino, elas devem ser preparadas para
manipular qualquer registro que obtém, porque as tarefas de pesquisas não tem
controle sobre a sequência de registros. são apresentadas FIFO pelo TDP.

Registros de dados transitórios de intrapartição são sempre registros de


tamanho vari vel.
Pag. 72
Iniciação de Transação Autom tica

No exemplo de manuseio de pedidos (exemplo 2) anteriormente apresentado na


unidade, uma transação separada do CICS/MVS manuseia a impressão de pedidos nos
terminais do deposito. H diversos modos de iniciar esta transação. Um deles ‚
iniciar a transação de um terminal. No nosso exemplo, o operador no depósito
entraria uma identificação de transação. Assim, ‚ o operador que determina
quando os pedidos devem ser impressos. Mas, uma vez que aquela transação
provavelmente não foi entrada pela impressora, o programa de impressão ainda
necessitaria de um meio de encaminhamento dos pedidos para a impressora.

Com o recurso de dados transitórios de intrapartição, a transação pode ser


iniciada automaticamente através do CICS/MVS, usando um nível de disparo
atribuído ao destino. Um nível de disparo ‚ simplesmente um valor num‚rico defi-
nido pelo programador de sistema, no tempo de geração de sistema. Este valor re-
presenta o número m ximo de registros a serem acumulados antes da operação de
impressão ser "disparada". Quando o número de registros armazenados na fila
alcançar o nível de disparo, o CICS/MVS inicia automaticamente uma tarefa que
a pode processar os dados armazenados na fila.

Deve-se lembrar que uma tarefa pode somente comunicar-se com o terminal ao
qual est ligada. Normalmente, esta relação ‚ estabelecida quando o operador en-
tra uma identificação de transação no terminal. Mas no caso de iniciação de
transação autom tica, a relação ‚ estabelecida no tempo de geração da tabela.
Uma tarefa ‚ criada automaticamente para o terminal especificado, se forem en-
contradas três condições:

* O terminal est operando;


* O terminal não est associado com uma tarefa sendo executada naquele mo-
mento;
* O nível de disparo ‚ alcançado. Isto ‚, o número de registros armazenados ‚
igual ao nível de disparo. (Um nível de disparo de 1 faz com que uma tarefa
seja iniciada imediatamente.).

A nova tarefa não necessita estar associada com um terminal. Pode ser uma
tarefa que, por exemplo, lê registros a partir de um destino de dados
transitórios e atualiza um arquivo mestre.

A figura seguinte mostra a relação entre os v rios componentes do CICS/MVS


que estão envolvidos em iniciação de transação autom tica.

CICS/MVS PARTIçãO/REGIãO
ú------------------------------┐
ú--Â-------Â-┐ | |
| | (3)| | | DCT TCT |
| Ã-------´ | |ú------------┐ ú-------┐| TERMINAL ID=DEP1
| | (2)| | ||DESTID=DEP1 | | TCTTE || ú--------------┐
| Ã-------´ | || | Ã-------´Ã--´ |
| | (1)| Ã----´|TRIGLEV=3 | | DEP1 || | ú----┘
| Ã-------´ | || | | || └┐ ú-┘
| | | | ||TRANSID=WRHS| | || └┐ ú-┘
| └-------┘ | |└------------┘ └-------┘| └---┘
|DESTINO DEP1| | | terminal no
└------------┘ | | depósito 1
└------------------------------┘

Quando três registro tiverem sido armazenados na file DEP 1, a transação WRHS
‚ iniciada automaticamente, desde que o terminal do depósito 1 esteja operando e
não esteja associado com uma tarefa.
Pag. 73

W R I T E Q T D

Comando utilizado para gravar dados em uma fila de dados transitórios.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS WRITEQ TD QUEUE (data-value) |
| FROM (data-area) |
| { LENGTH (data-area) } ; |
| |
└------------------------------------------------------------------------------┘

onde:

QUEUE (data-value) <'data-value' - CHAR(04) ou constante alfanum‚rica> dever


conter o nome da TD, devendo começar necessariamente por um
caracter alfab‚tico, e precisa estar definido (cadastrado)
na DCT.

FROM (data-area) <'data-area' - rea de trabalho> especifica os dados que


deverão ser gravados na TD.

LENGTH (data-value) <'data-value' - BIN FIXED(15) ou constante num‚rica> dever


conter o tamanho dos dados a serem gravados.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|IOERR |Ocorre para um destino de extrapartição se o tamanho dos dados |
| |não coincide com o tamanho especificado no operando RECSIZE |
| |definido para o destino. |
| | |
| |Tamb‚m ocorre para destino de intrapartição se o tamanho dos |
| |dados exceder o tamanho m ximo permitido para um arquivo de |
| |intrapartição. |
Ã--------------Å---------------------------------------------------------------´
|NOSPACE |Ocorre se não h mais espaço disponível para gravação na fila |
| |de intrapartição. Quando isto ocorre, nenhum dado poder ser |
| |gravado, pois o mesmo ser perdido. |
Ã--------------Å---------------------------------------------------------------´
|NOTAUTH |S e g u r a n ç a |
Ã--------------Å---------------------------------------------------------------´
|NOTOPEN |Ocorre quando o destino est fechado. |
└--------------Á---------------------------------------------------------------┘
Pag. 74

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|QIDERR |O destino simbólico a ser usado em um comando de controle de |
| |dados transitórios não pode ser encontrado. Provavelmente o |
| |destino não est cadastrado na DCT. |
Ã--------------Å---------------------------------------------------------------´
|LENGERR |Ocorre nas seguintes situações: |
| | |
| |* se a opção LENGTH não for especificado em operação de |
| | gravação envolvendo registros de tamanho vari vel; |
| |* se o tamanho especificado ‚ maior que o tamanho m ximo de- |
| | finido para a fila na DCT; |
| |* se for especificado um tamanho incorreto envolvendo regis- |
| | tros de tamanho fixo; |
| |* se a opção LENGTH não ‚ especificado para um destino que |
| | não ‚ em disco, envolvendo registros de tamanho fixo. |
└--------------Á---------------------------------------------------------------┘
Pag. 75

R E A D Q T D

Comando utilizado para ler dados de uma fila de dados transitórios.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| EXEC CICS READQ TD QUEUE (data-value) |
| { INTO (data-area) / SET (pointer) } |
| { LENGTH (data-area) } |
| |
└------------------------------------------------------------------------------┘

onde:

QUEUE (data-value) <'data-value' - CHAR(04) ou constante alfanum‚rica de quatro


bytes) dever conter o nome da TD, devendo esta começar
necessariamente por um caracter alfab‚tico, e precisa estar
definido (cadastrado) na DCT.

INTO (data-area) <'data-area' - rea de trabalho> especifica onde serão lidos


os dados da TD.

SET (pointer) Aponta para a rea de trabalho onde serão lidos os dados da
TD.

LENGTH (data-area) <'data-area' - BIN FIXED(15)> dever conter o tamanho dos


dados a serem lidos.

Após a leitura, se ocorrer a condição LENGERR (ver condição


de execeção para este comando) esta vari vel ser atualizada
com o tamanho atual dos dados lidos.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|IOERR |Ocorre quando acontece um erro de I/O e o registro com erro ‚ |
| |saltado. Ocorre tamb‚m para um destino de extrapartição se o |
| |tamanho dos dados não coincide com o tamanho especificado no |
| |operando RECSIZE definido para o destino. |
| | |
| |Tamb‚m ocorre para destino de intrapartição se o tamanho dos |
| |dados exceder o tamanho m ximo permitido para um arquivo de |
| |intrapartição. |
└--------------Á---------------------------------------------------------------┘
Pag. 76

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|LENGERR |Ocorre nas seguintes situações: |
| | |
| |* se a opção LENGTH não for especificado em operação de |
| | leitura (somente com a opção INTO) envolvendo registros de |
| | tamanho vari vel; |
| |* O registro lido da fila ‚ maior que o tamanho da rea es- |
| | pecificada para leitura; o registro ‚ truncado e a |
| | vari vel especificada na opção LENGTH ser atualizada para |
| | o tamanho atual do registro lido. |
| |* se for especificado um tamanho incorreto envolvendo regis- |
| | tros de tamanho fixo; |
| |* se a opção LENGTH não ‚ especificada para um destino que |
| | não ‚ em disco, envolvendo registros de tamanho fixo |
| | (somente com a opção INTO). |
Ã--------------Å---------------------------------------------------------------´
|NOTAUTH |S e g u r a n ç a |
Ã--------------Å---------------------------------------------------------------´
|NOTOPEN |Ocorre quando o destino est fechado. |
Ã--------------Å---------------------------------------------------------------´
|QIDERR |O destino simbólico a ser usado em um comando de controle de |
| |dados transitórios não pode ser encontrado. Provavelmente o |
| |destino não est cadastrado na DCT. |
Ã--------------Å---------------------------------------------------------------´
|QBUSY |(somente OS) Ocorre se o destino de intrapartição est sendo |
| |usado por uma outra tarefa no momento em que um comando READQ |
| |TD ‚ executado. |
Ã--------------Å---------------------------------------------------------------´
|QZERO |Destino especificado no comando READQ TD est vazio (fim de |
| |arquivo) |
└--------------Á---------------------------------------------------------------┘
Pag. 77

D E L E T E Q T D

Elimina todos os dados transitórios associados com um determinado destino de


intrapartição. Toda a memória associada com este destino ‚ liberado.

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS DELETEQ TD QUEUE (data-value) |
| |
└------------------------------------------------------------------------------┘

QUEUE (data-value)

<'data-value' - CHAR(04) ou constante alfanum‚rica de quatro bytes> dever


conter o nome simbólico de uma FILE. Este nome deve começar necessariamente
por um caracter alfab‚tico, e precisa estar definido (cadastrado) na DCT.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|NOTAUTH |S e g u r a n ç a |
Ã--------------Å---------------------------------------------------------------´
|QIDERR |O destino simbólico a ser usado em um comando de controle de |
| |dados transitórios não pode ser encontrado. Provavelmente o |
| |destino não est cadastrado na DCT. |
└--------------Á---------------------------------------------------------------┘
Pag. 78
Memória Tempor ria

A memória tempor ria provê aos programas de aplicação sob o CICS/VS, um meio
para armazenar dados para ser usado posteriormente. Com relação a isto, ‚
semelhante ao recurso de dados transitórios. A memória tempor ria, contudo,
oferece opções não providas no recurso de dados transitórios. A memória
tempor ria, em serus recursos, ser discutida nesta unidade, a qual concluir
com um gr fico comparando os aspectos de dados transitórios de intrapartição e
memória tempor ria.

A memória tempor ria prove igualmente um recurso conveniente de transferência


de dados. Se, por exemplo, a informação entrada for trabalhada por diversas
transações, ela pode ser armazenada e pesquisada da memória tempor ria. A
informação permanece na memória tempor ria at‚ que seja eliminada por um pro-
grama de aplicação do usuário.

Registro de Memória Tempor ria

A informação ‚ gravada na memória tempor ria na forma de registros com


tamanho vari vel. Estes registros são armazenados pelo Temporary Storage Control
Program (TSP), tanto na memória principal como na memória auxiliar (disco),
dependendo de como o recurso foi definido no tempo de geração do sistema. Em
algumas instalações, são disponíveis tanto a memória principal como a auxiliar.
O programa de aplicação pode então especificar o meio de armazenagem física a
ser usado.

Cada registro gravado na memória tempor ria recebe um nome pelo qual ‚
subsequentemente identific vel nas tarefas sob o CICS/VS. Esta identificação de
registro, ou identificação do dado, ‚ definida pelo programa de aplicação
criando os dados no instante em que o registro for gravado. Este ‚ um dos poucos
exemplos em um sistema CICS/VS, onde a identificação de dados reconhecível ao
CICS/VS não tem que ser predefinida no sistema. Naturalmente, outros programas
de aplicação com acesso a esses dados devem conhecer esse nome a fim de pesqui-
sar a informação da memória tempor ria.

A identificação dos dados de memória tempor ria ‚ um nome com 1-8 caracteres.
Cada registro gravado pode ter um único nome, ou diversos registros podem ser
gravados com o mesmo nome, formando assim uma fila de memória tempor ria, ou
cojunto de mensagens. Registros em um cojunto de mensagens de memória tempor ria
podem ser pesquisados sequencialmente na ordem que foram criados. são tamb‚m
diretamente acessíveis por referência … sua posição relativa dentro do conjunto
de mensagens.

Quando uma identificação de dados da memória tempor ria se refere a um único


elemento de dado ou uma fila de registros (conjunto de mensagens), deve ser
único dentro do sistema. Uma vez que tarefas multiplas podem estar executando o
mesmo programa de aplicação, um programa que grava em memória tempor ria deve
ter um meio para criar dinamicamente uma única identificação de dados para cada
tarefa. Um modo comum de realizar isto ‚ incluir a identificação do terminal
como parte da identificação dos dados. Uma vez que cada tarefa est associada
com um terminal diferente, a identificação dos dados ‚ única. Por exemplo, um
programa de edição poderia construir uma identificação de dados consistindo da
identificação do terminal requisitante (TER3, por exemplo) e o código de
transação (EDIT, por exemplo). Esta combinação produziria a única identificação
de dados: TER3EDIT. (Lembrar que tanto o código de transação como a
identificação do terminal são disponíveis no EIB da tarefa.)

O dado na memória tempor ria permanece disponível para pesquisa at‚ ser
explicitamente eliminado por uma transação de usuário. Consequentemente, o dado
de memória tempor ria pode ser acessado por qualquer tarefa, um número de vezes
indeterminado.
Pag. 79

W R I T E Q T S

Grava dados em uma fila de memória tempor ria.

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS WRITEQ TS QUEUE (data-value) |
| FROM (data-area) |
| { ITEM (data-value) { REWRITE } } |
| { MAIN / AUXILIARY } |
| { LENGTH (data-area) } |
| |
└------------------------------------------------------------------------------┘

QUEUE (data-value)

<'data-value' - CHAR(08) ou constante alfanum‚rica de oito bytes> dever


conter o nome simbólico de uma fila, sendo que este não necessita de
cadastramento no CICS/MVS.

FROM (data-area)

<'data-area' - rea de trabalho> dever conter os dados a serem gravados na


TS. Esta não deve ultrapassar de 32KB de tamanho.

LENGTH (data-value)

<'data-value' - BIN FIXED(15) ou constante num‚rica> dever conter o


tamanho do dado especificado na opção FROM.

ITEM (data-value)

<'data-value' - BIN FIXED(15) ou constante num‚rica> dever conter o número


do ítem a ser regravado. Caso esta opção seja utilizada sem a opção de
REWRITE, deve-se especificar uma vari vel nesta opção, pois o CICS/MVS re-
torna o número do ítem que foi gravado.

REWRITE

Opção que se deve usar somente em conjunto com a opção anterior.

MAIN / AUXILIARY

Determina se a TS dever ser gravado em memória ou em disco (arquivo VSAM).


Pag. 80

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|IOERR |Ocorre quando h um erro de I/O irrecuper vel. |
Ã--------------Å---------------------------------------------------------------´
|NOSPACE |Ocorre quando não h espaço suficiente no arquivo de memória |
| |tempor ria para conter os dados. |
Ã--------------Å---------------------------------------------------------------´
|NOTAUTH |S e g u r a n ç a |
Ã--------------Å---------------------------------------------------------------´
|ITEMERR |Ocorre quando o número do ítem especificado por um comando |
| |WRITEQ TS com a opção REWRITE, ‚ inv lido (que est fora do |
| |domínio dos números de entrada associados … QUEUE). |
Ã--------------Å---------------------------------------------------------------´
|QIDERR |Ocorre quando a QUEUE especificada por um comando WRITEQ TS |
| |com a opção REWRITE, não pode ser encontrada, tanto em memória |
| |principal como em memória auxiliar. |
└--------------Á---------------------------------------------------------------┘
Pag. 81

R E A D Q T S

Comando utilizado para ler dados de uma fila de dados transitórios.

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS READQ TS QUEUE (data-value) |
| { INTO (data-area) / SET (pointer) } |
| { ITEM (data-value) } |
| { LENGTH (data-area) } |
| |
└------------------------------------------------------------------------------┘

QUEUE (data-value)

<'data-value' - CHAR(08) ou constante alfanum‚rica de oito bytes> dever


conter o nome simbólico de uma fila, sendo que este não necessita de
cadastramento no CICS/MVS.

INTO (data-area) <'data-area' - rea de trabalho> onde os dados de uma TS serão


lidos.

SET (pointer) aponta para a rea de trabalho onde os dados de uma TS serão
lidos.

LENGTH (data-area)

<'data-area' - BIN FIXED(15)> dever conter o tamanho dos dados a serem


lidos.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|NOTAUTH |S e g u r a n ç a |
Ã--------------Å---------------------------------------------------------------´
|QIDERR |Ocorre quando a TS especificada não existe |
Ã--------------Å---------------------------------------------------------------´
|IOERR |Ocorre quando h um erro de I/O irrecuper vel. |
Ã--------------Å---------------------------------------------------------------´
|ITEMERR |Ocorre quando o número do ítem especificado não existe. |
Ã--------------Å---------------------------------------------------------------´
|LENGERR |Erro no tamanho dos dados lidos. |
└--------------Á---------------------------------------------------------------┘
Pag. 82

D E L E T E Q T S

Elimina a fila de memória tempor ria.

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS DELETEQ TS QUEUE (data-value) |
| |
└------------------------------------------------------------------------------┘

QUEUE (data-value)

<'data-value' - CHAR(08) ou constante alfanum‚rica de oito bytes> dever


conter o nome da TS.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|NOTAUTH |S e g u r a n ç a |
Ã--------------Å---------------------------------------------------------------´
|QIDERR |Ocorre quando a TS especificada não existe |
└--------------Á---------------------------------------------------------------┘
Pag. 83

Requisição de data e hora no CICS/MVS

A S K T I M E

Usado para atualizar a data e a hora do CLOCK do CICS, e tamb‚m os campos


EIBDATE e EIBTIME do bloco EIB. Este dois campos contém inicialmente a data e a
hora em que a transação iniciou a sua execução. Usado tamb‚m para obter o valor
(em milisegundos) do período desde zero hora de 1 de janeiro 1900 at‚ a hora
atual.

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS ASKTIME { ABSTIME (data-area) } ; |
| |
└------------------------------------------------------------------------------┘

ABSTIME(data-area)

retorna em <'data-area' - FIXED(15)> um valor que corresponde ao período


decorrido desde zero hora de 01 de janeiro de 1900 at‚ a hora atual em
milisegundos.

Se esta opção for omitida, este comando faz a atualização do conteúdo dos
campos EIBDATE e EIBTIME com a hora e data da execução deste comando.

E x e m p l os
ú------------------------------------------------------------------------------┐
| |
| DIEXEM : PROC OPTIONS(MAIN); ---> EIBDATE - 91189 |
| EIBTIME - 165327 |
| . . . |
| EXEC CICS ASKTIME; -----------> EIBDATE - 91189 |
| EIBTIME - 165412 |
| . . . |
| |
└------------------------------------------------------------------------------┘

ú------------------------------------------------------------------------------┐
| |
| DCL UTIME FIXED (15); |
| EXEC CICS ASKTIME ABSTIME (UTIME); |
| | |
| └---------> Após a execução UTIME |
| conter (por exemplo) o valor |
| 002887980807470 em milisegundos, |
| que corresponde a 16:53:27 de |
| 08/07/91. |
| |
└------------------------------------------------------------------------------┘
Pag. 84

F O R M A T T I M E

Este comando ‚ usado para transformar a data e/ou a hora absoluta em qualquer
formato das opções existente no comando mostrado abaixo.

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS FORMATTIME ABSTIME (data-value) |
| { YYDDD (data-area ) } |
| { YYMMDD (data-area ) } |
| { YYDDMM (data-area ) } |
| { DDMMYY (data-area ) } |
| { MMDDYY (data-area ) } |
| { DATE (data-area ) } |
| { DATESEP { (data-value) } } |
| { DATEFORM (data-area ) } |
| { DAYCOUNT (data-area ) } |
| { DAYOFWEEK (data-area ) } |
| { DAYOFMONTH (data-area ) } |
| { MONTHOFYEAR (data-area ) } |
| { YEAR (data-area ) } |
| { TIME (data-area ) |
| { TIMESEP { (data-value) } } } ; |
| |
└------------------------------------------------------------------------------┘

ABSTIME(data-area)

<'data-area' - FIXED(15)> dever conter o valor correspondente ao período


decorrido deste zero hora de 01 de janeiro de 1900 at‚ a hora atual em
milisegundos, que ser utilizado para a conversão aos formatos oferecidos
pelas opções deste comando. Este conteúdo pode ser obtido com o comando
descrito anteriormente: ASKTIME (ver exemplo adiante).

YYDDD(data-area)

Retorna em <'data-area' - CHAR(06)> uma data no formato JULIANO. Se a


opção DATESEP for especificado, a data retornar editada com o caracter in-
dicado na opção (ver exemplo adiante).

YYMMDD(data-area)

Retorna em <'data-area' - CHAR(08)> uma data no formato ano, mês e dia. Se


a opção DATESEP for especificado, a data retornar editada com o caracter
indicado na opção (ver exemplo adiante).

YYDDMM(data-area)

Retorna em <'data-area' - CHAR(08)> uma data no formato ano, dia e mês. Se


a opção DATESEP for especificado, a data retornar editada com o caracter
indicado na opção (ver exemplo adiante).
Pag. 85

DDMMYY(data-area)

Retorna em <'data-area' - CHAR(08)> uma data no formato dia, mês e ano. Se


a opção DATESEP for especificado, a data retornar editada com o caracter
indicado na opção (ver exemplo adiante).

MMDDYY(data-area)

Retorna em <'data-area' - CHAR(08)> uma data no formato mês, dia e ano. Se


a opção DATESEP for especificado, a data retornar editada com o caracter
indicado na opção (ver exemplo adiante).

DATE(data-area)

Retorna em <'data-area' - CHAR(08)> a data no formato especificado na opção


'DATEFORM'.

DATEFORM(data-area)

Retorna em <'data-area' - CHAR(06)> o formato da data definido na


instalação. Os formatos que o CICS pode retornar são: 'YYMMDD', 'DDMMYY' ou
'MMDDYY'. O DEFAULT da instalação ‚ 'MMDDYY'.

DATESEP(data-value)

<'data-value' - CHAR(01) ou constante alfanum‚rica de um byte> dever con-


ter o caracter que ser utilizado como separador entre o dia, mês e ano,
nas opções: 'YYMMDD', 'YYDDMM', 'DDMMYY', 'MMDDYY' e DATE; e entre ano e
dias na opção 'YYDDD'. O DEFAULT quando da omissão de 'data-value' ‚ o
caracter '/'.

DAYCOUNT(data-area)

Retorna em <'data-area' - BIN FIXED(31)> a quantidade de dias decorridos


desde o dia 01 de janeiro de 1900 at‚ a data atual.

DAYOFWEEK(data-area)

Retorna em <'data-area' - BIN FIXED(31)> o dia da semana que corresponde a


data resultante da operação, seguindo o seguinte esquema: 0-domingo,
1-segunda, 2-terca, 3-quarta, 4-quinta, 5-sexta e 6-s bado.

DAYOFMONTH(data-area)

Retorna em <'data-area' - BIN FIXED(31)> o dia da data resultante da


operação.

MONTHOFYEAR(data-area)

Retorna em <'data-area' - BIN FIXED(31)> o mês da data resultante da


operação.
Pag. 86

YEAR(data-area)

Retorna em <'data-area' - BIN FIXED(31)> o ano da data resultante no


formato secular (ver exemplo adiante).

TIME(data-area)

Retorna em <'data-area' - CHAR(08)> a hora resultante do conteúdo especifi-


cado na opção 'ABSTIME' no formato 'HHMMSS', caso a opção 'TIMESEP' não
seja especificado (ver opção 'TIMESEP').

TIMESEP(data-value)

<'data-value' - CHAR(01) ou uma constante alfanum‚rica de um byte> dever


conter o caracter que ser utilizado como separador entre as hora, minuto e
segundo.

E x e m p l o s

Supondo uma data e uma hora: data --> 91/07/08 (YYMMDD)


hora --> 16:53:27
ú------------------------------------------------------------------------------┐
| |
| DCL UTIME FIXED (15), |
| (DIA,MES,ANO,DIAS,DIA_SEM) BIN FIXED (31), |
| (AADDD,DATEFM) CHAR (06), |
| (AAMMDD,AADDMM,DDMMAA,MMDDAA,DATA,HORA) CHAR (08); |
| ... |
| /* exemplo utilizando a opção 'DATESEP' e 'TIMESEP' */ |
| EXEC CICS ASKTIME ABSTIME (UTIME); ---> X'+002887980807470' |
| EXEC CICS FORMATTIME ABSTIME (UTIME) |
| YYDDD (AADDD) ------> '91/189' |
| YYMMDD (AAMMDD) -----> '91/07/08' |
| YYDDMM (AADDMM) -----> '91/08/07' |
| DDMMYY (DDMMAA) -----> '08/07/91' |
| MMDDYY (MMDDAA) -----> '07/08/91' |
| DATE (DATA) -------> '07/08/91' |
| DATESEP ('/') |
| DATEFORM (DATEFM)------> 'MMDDYY' |
| DAYCOUNT (DIAS) -------> X'00033426' |
| DAYOFWEEK (DIA_SEM) ----> X'00000001' segunda |
| DAYOFMONTH (DIA) --------> X'00000008' |
| MONTHOFYEAR (MES) --------> X'00000007' |
| YEAR (ANO) --------> X'00001991' |
| TIME (HORA) -------> '16:53:27' |
| TIMESEP (':'); |
| ... |
| |
| Notação : X'....' - valor bin rio (BIN FIXED(31)). |
| |
└------------------------------------------------------------------------------┘
Pag. 87

ú------------------------------------------------------------------------------┐
| |
| ... |
| /* exemplo sem a opção 'DATESEP' e 'TIMESEP' */ |
| EXEC CICS ASKTIME ABSTIME (UTIME); ---> X'+002887980807470' |
| EXEC CICS FORMATTIME ABSTIME (UTIME) |
| YYDDD (AADDD) ------> '91189 ' |
| YYMMDD (AAMMDD) -----> '910708 ' |
| YYDDMM (AADDMM) -----> '910807 ' |
| DDMMYY (DDMMAA) -----> '080791 ' |
| MMDDYY (MMDDAA) -----> '070891 ' |
| DATE (DATA) -------> '070891 ' |
| DATEFORM (DATEFM)------> 'MMDDYY' |
| DAYCOUNT (DIAS) -------> X'00033426' |
| DAYOFWEEK (DIA_SEM) ----> X'00000001' segunda |
| DAYOFMONTH (DIA) --------> X'00000008' |
| MONTHOFYEAR (MES) --------> X'00000007' |
| YEAR (ANO) --------> X'00001991' |
| TIME (HORA); ------> '165327 ' |
| |
| Notação : X'....' - valor bin rio (BIN FIXED(31)). |
| |
└------------------------------------------------------------------------------┘
Pag. 88

M a p a s

Um mapa ‚ uma tela formatada que o programador de aplicações cria para permi-
tir que o usuário do terminal se comunique com o programa. Este contém
informações constantes tais como título, cabeçalhos, etc. Outras reas do mapa
são definidas como campos vari veis. Estes são usados pelo usuário do terminal
para entrar dados para serem enviados para o programa, ou para que o programa
coloque os dados para serem mostrados no vídeo.

BMS (Basic Mapping Support)

No capítulo " Controle de terminal", vimos como enviar e receber mensagens


curtas, não formatadas, como mostrado na figura seguinte:

ú-----------------------------┐
|AG:0501,C/C:3405899 |
| |
| |
| |
| |
| |
└-----------------------------┘

Se fosse necess rio dispor os dados de saída no meio da tela?

ú-----------------------------┐
| |
| AG : 0501 |
| |
| C/C : 3405899 |
| |
| |
└-----------------------------┘

Poderiamos fazer isto de duas maneira:

1. Gerar as informações não formatadas com espaços suficientes precedendo cada


dado para coloc -lo no meio da tela.

|-----brancos-----AG:0501-----brancos-----C/C:3405899-----brancos-----|
└---------------------------------------------------------------------┘

2. ou acrescentar os caracteres de controle dos equipamentos IBM 3270 nas


informações geradas para posicionar os dados em locais apropriados.

|caracter de controle|AG:0501|caracter de controle|C/C:3405899|


└--------------------Á-------Á--------------------Á-----------┘
Pag. 89

Das duas soluções, a segunda ‚ a melhor, mas não a desej vel. Se um programa
de aplicação gera informações contendo caracteres de controle dependentes de
algum equipamento, este ‚ então capaz de comunicar se somente com um tipo de
terminal. Se o usuário tiver mais de um tipo de terminal na rede, pode
necessitar de programas duplicados para comunicar a mesma informação a diferen-
tes tipos de terminal. Caso haja mudança de terminais, os programas de aplicação
teriam que ser alterados para se comunicar com este novo terminal. Os programas
de aplicação tamb‚m teriam que ser alterados se o formato das informações for
alterado.

Para isto o BMS faz com que o programa de aplicação torne-se independente do:

* tipo de terminal usado na rede (independência de equipamento)

* formato da exibição das informações (independência de formato)

O BMS age como sendo uma INTERFACE entre os programas de aplicação e o Termi-
nal Control Program (TCP) que ‚ respons vel pela comunicação física com
terminais.

Independência de Equipamento

O BMS permite que se codifique os programas de aplicação sem se referir …s


características físicas dos terminais na rede. O BMS prepara a informação a ser
enviada pela inserção dos caracteres de controle apropriados baseados no tipo de
terminal a ser usado.

PROGRAMA DE TCT
APLICAçãO ú---------------┐
ú-----------┐ ú-----´ EQUIPAMENTO 1 |
| CAMPO 1 | | Ã---------------´
| └-------┘ Ã-----┐ | | ... |
| CAMPO 2 | | | Ã---------------´
| └-------┘ | | | | EQUIPAMENTO n |
└-----------┘ V V └---------------┘
ú---------┐
| BMS |
└----Â----┘
V
ú-------------Â---------Â-------------Â---------┐
| caracter de | | caracter de | |
| controle do | CAMPO 1 | controle do | CAMPO 2 |
| equipam. 1 | | equipam. 1 | |
└---Â---------Á---------Á-------------Á---------┘
V
ú-------┐ ú--------┐
| | | |
| TCP Ã---------->| |EQUIPAMENTO
| | └---ÂÂ---┘ 1
└-------┘ ú---ÁÁ---┐
└--------┘
Pag. 90

O BMS tamb‚m permite que o usuário codifique os programas de aplicação sem se


preocupar com a posição física dos campos da informação no vídeo. O BMS rela-
ciona a posição real dos dados no vídeo por meio de tabelas chamads mapas
físicos e mapas simbólicos.

Mapas Físicos

Um mapa físico descreve o formato de exibição para um dado tipo de terminal. Tem
o forma de uma tabela que inclui a seguinte informação:

* Tamanho e localização dos campos de dados


* Atributos de campos de dados (protegidos, realçados, por exemplo)
* Constantes (cabeçalhos, informação descritiva)
* Características dos terminais

Mapas Simbólicos

Os mapas simbólicos definem todos os campos de dados vari veis. O mapa


simbólico ‚ copiado em uma rea de trabalho do programa; assim, todos os campos
definidos são disponíveis pelo nome ao programa. Os dados descritos pelo mapa
simbólico podem ser representados em um dos três formatos seguintes:

1. Formato de CAMPO (FIELD)

O dado ‚ representado por ítem individual. Cada ítem de dado ‚ precedido


por:

* Dois bytes indicando o tamanho do dado


* Um byte definindo o atributo do dado a ser exibido no campo.

O byte de atributo especifica características tais como a intensidade com


que o campo ‚ exibido.

Nota: Um byte de FLAG durante operações de entrada ocupa a mesma posição


que o byte de atributo. Este FLAG ‚ ajustado se o operador usar a te-
cla ERASE EOF do 3270 para limpar todos os dados de um campo particu-
lar. O byte de FLAG ‚ raramente usado durante o processamento de
programa de aplicação.

O formato de campo ‚ mostrado na ilustração seguinte:

ú----Â---Â-------Â----Â---Â-------┐
| LL | A | DADOS | LL | A | DADOS |
└-Â--Á-Â-Á-------Á----Á---Á-------┘
| |Byte de atributo
| └----------------
|Comprimento de dados
└--------------------
Pag. 91

2. Formato de BLOCO

O dado ‚ apresentado como segmentos de uma linha. Cada linha ‚ apresentada


na forma em que aparecer no terminal, incluindo os espaços entre os campos.
O atributo ‚ definido para cada segmento da linha.

ú---Â-------Â-------Â---Â-------Â----------------┐
| A | DADOS | | A | DADOS | |
└-Â-Á-------Á----Â--Á---Á-------Á----------------┘
| |Brancos
| └-------
|Byte de atributo
└----------------

Este formato ‚ geralmente usado para entrada a partir de terminais de cópia


impressa.

3. Formato de TEXTO

Como o nome indica, este formato ‚ usado para processamento de texto. O dado
‚ representado como uma corrente nao interrompida de caracteres que o BMS
divide em segmentos do tamanho de uma linha. O programador pode fazer uma
formatação adicional pela inserção de caracteres especiais de formatação nas
correntes de dados. Isto ‚ chamado Processamento de Texto.

O formato de Campo ‚ o formato mais comum para o IBM 3270, para vídeos e
terminais de impressão. No material que se segue, os dados apresentados no
formato de CAMPO serão usados.

Para endereçar cada um dos ítens na rea de trabalho, um conjunto de rótulos


simbólicos ‚ criado para os campos a serem acessados. Por exemplo, na
criação de um mapa simbólico, ‚ definido um campo de dados vari vel rotulado
FLD1. O BMS cria o seguinte conjunto de rótulos simbólicos:

FLD1L para endereçar o tamanho de campo

FLD1A para endereçar o byte de atributo do campo

FLD1F para endereçar o byte de FLAG

FLD1I para endereçar o campo FLD1 na entrada

FLD1O para endereçar o campo FLD1 na saída

ú----Â---Â-------┐
| LL | A | DADOS |
└--Â-Á-Â-Á---Â---┘
| | |FLD1I ou FLD1O
| | └--------------
| |FLD1A ou FLD1F
| └--------------
|FLD1L
└-----
Pag. 92

Assim, o dado de entrada ou saída ‚ disponível ao programa de aplicação tanto no


campo FLD1I como no campo FLD1O. O byte de atributo ‚ disponível no campo FLD1A
e pode ser modificado pelo programa de aplicação antes de uma operação de saída.
O tamanho do dado est no campo FLD1L e pode ser testado pelo programa de
aplicação depois de uma operação de entrada.

Este conjunto de rótulos simbólicos forma o mapa simbólico. Um ou mais mapas


simbólicos formam um conjunto de mapas. O conjunto de mapas ‚ armazenado em um
biblioteca de instruções fonte. Para definir a rea de trabalho de dados em seu
programa de aplicação, o usuário inclui simplesmente o mapa simbólico em seu
programa na hora em que o programa ‚ compiilado como segue:

COBOL uma instrução COPY para o conjunto de mapas


simbólicos na Working Storage Section.

PL/I uma instrução %INCLUDE para o conjunto de


mapas simbólicos na Automatic Storage.

ASSEMBLER uma instrução COPY para o conjunto de mapas


simbólicos na Memória Dinâmica.

Conjunto de mapas (MAPSET)

Um conjunto de mapas ‚ um mapa simples ou mapas multiplos definidos para um


tipo de terminal. Os mapas são usualmente agrupados porque todos os mapas no
conjunto são usados por uma aplicação ou aplicações relacionadas. Quando ‚
necess rio um mapa particular, o programa deve identificar o conjunto de mapas
que inclui aquele mapa. Então, quando o primeiro comando que se refere ao mapa e
conjunto de mapas ‚ emitido, o CICS/MVS carrega o conjunto de mapas para a rea
de Memória Dinâmica, a menos que estaja j na memória.

Para o CICS/MVS, um conjunto de mapas ‚ tratado como se fosse um programa.


Por esta razão, a informação de controle do conjunto de mapas est incluída na
PPT.

Se o mesmo formato de exibição for usado para mais de um tipo de terminal, ‚


construído um mapa físico (conjunto de mapas) para cada tipo de terminal. Con-
juntos de mapas são construídos usando-se um nome gen‚rico (1 a 7 caracteres). O
nome gen‚rico ‚ usado no programa de aplicação para identificar o conjunto de
mapas necess rios para formatar ou analisar uma mensagem. O BMS adiciona um
sufixo identificando o tipo de terminal ao nome gen‚rico do conjunto de mapas,
Pag. 93

permitindo assim a seleção do conjunto de mapas físico apropriado, como mostrado


na figura seguinte:

CICS/MVS PARTIçãO/REGIãO
ú-------------------------------------┐
| TCTTE |
| ú------------┐ |
| | TIPO DE | | BIBLIOTECA DE
| | TERMINAL Ã----------┐ | PROGRAMAS
| └------------┘ V | ú-------------┐
| ú-----┐ | | ú---------┐ |
| PROGRAMA DE ú->| BMS Ã--------Å------->| | 3270 | |
| APLICAçãO | └-----┘ | | | MAPSET | |
| ú------------┐ | | | └---------┘ |
| |NOME DO MAPAÃ----┘ LOAD | | ú---------┐ |
| | TERMINAL | ú-----------Å--------´ | 3267 | |
| └------------┘ V | | | MAPSET | |
| ú--------------------┐| | └---------┘ |
| | MAP (MPASET) ASSO- || | ú---------┐ |
| | CIADO COM O TIPO || | | 3280 | |
| | DE TERMINAL || | | MAPSET | |
| └----Â-----Â-----Â---┘| | └---------┘ |
└--------------------Å-----Å-----Å----┘ └-------------┘
ú------┐ | | | ú------┐
| 3270 |<-------┘ V └--------->| 3780 |
└------┘ ú------┐ └------┘
| 3767 |
└------┘

O BMS libera o programador do processo tedioso de interpretação das


informações recebidas do vídeo 3270, e na geração das informações que serão en-
viadas para o mesmo, pois os vídeos 3270 exigem certas padronizações nas
informações, tal como atributo de campo.

Do ponto de vista do programador, o BMS retira os dados dos campos da WORKING


STORAGE e coloca-os nas posições especificas do vídeo. Quando o usuário do ter-
minal gerar uma interrupção, geralmente, através da tecla "ENTER" (ou, podendo
ser qualquer uma das teclas de função - PFs), o BMS retira os dados do vídeo
para retorn -los nos campos apropriados para que o programa possa us -los.

Os mapas são criados através de macros assembler ou através do utilit rio SDF
(Screen Definition Facility - Ver manual de SDF).
Pag. 94

R E C E I V E M A P

Utilizado para receber uma tela formatada do terminal de vídeo.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| RECEIVE MAP(name) {MAPSET(name)} |
| {INTO(data-area) / SET(pointer)} ; |
| |
└------------------------------------------------------------------------------┘

MAP (data-value) : <'data-value' - CHAR(08) ou constante alfanum‚rica> dever


conter o nome do mapa a ser recebido do terminal.

MAPSET (data-value) : <'data-value' - CHAR(08) ou constante alfanum‚rica> dever


conter o nome do MAPSET ao qual o mapa identificado na opção
MAP pertence.

INTO (data-area) : <'data-area'> deve ser a identificação do mapa lógico (ou


simbólico), onde os dados recebidos do terminal serão
armazenados para que o programa de aplicação possa acess -
los.

SET (pointer) : <'pointer'> deve apontar para o mapa lógico (ou simbólico)
onde os dados recebidos do terminal serão armazenados para
que o programa de aplicação possa acess -los.

C o n d i ç ã o d e E x c e ç ã o

ú--------------Â---------------------------------------------------------------┐
|Abend Code |Descrição |
Ã--------------Å---------------------------------------------------------------´
|MAPFAIL |Condição reconhecida somente pelo IBM 3270. Ocorre se nenhum |
| |dado foi digitado ou se eles foram digitados numa tela não |
| |formada e recebidos com um comando de mapeamento. |
| | |
| |Caso mais frequente, ‚ o recebimento de uma tela em branco |
| |(teclas <ALT><CLEAR>) |
└--------------Á---------------------------------------------------------------┘

E x e m p l o

ú------------------------------------------------------------------------------┐
| ... |
| %INCLUDE MAP(MAPSETA); |
| ... |
| IF EIBCALEN ª= 0 THEN |
| DO; |
| EXEC CICS RECEIVE MAP ('MAPAA') MAPSET ('MAPSETA') |
| INTO (MAPAAI); |
| ... |
| END; |
└------------------------------------------------------------------------------┘
Pag. 95

S E N D M A P

Utilizado para enviar uma tela formatada para o terminal de vídeo.

ú------------------------------------------------------------------------------┐
| F o r m a t o |
| |
| SEND MAP(data-value) {MAPSET(data-value)} |
| FROM(data-area) |
| {ERASE} {ALARM} |
| {FREEKB} |
| {CURSOR {(data-value)}} |
| {DATAONLY / MAPONLY} |
| |
└------------------------------------------------------------------------------┘

MAP (data-value) : <'data-value' - CHAR(08) ou constante alfanum‚rica> dever


conter o nome do mapa a ser enviado para o terminal.

MAPSET (data-value) : <'data-value' - CHAR(08) ou constante alfanum‚rica> dever


conter o nome do MAPSET ao qual o mapa identificado na opção
MAP pertence.

FROM (data-area) : <'data-area'> dever ser o mapa lógico do qual serão


extraídos os dados a serem enviados para a tela.

ERASE : Limpa a tela antes enviar o mapa especificado.

ALARM : Soa o alarme do terminal (se o mecanismo de alarme do termi-


nal estiver ligado) quando do envio do mapa a tela.

FREEKB : Libera o teclado quando do envio do mapa para a tela.

CURSOR (data-value) : <'data-value' - BIN FIXED(15) ou constante num‚rica)


dever conter a posição linear onde o cursor ficar
posicionado na tela.

DATAONLY : Envia somente os dados contidos no mapa lógico, mantendo


todo o conteúdo que estava atualmente na tela.

MAPONLY : Envia somente o mapa físico, mentendo todo o conteúdo que


estava atualmente na tela.

E x e m p l o
ú------------------------------------------------------------------------------┐
| ... |
| %INCLUDE MAP(MAPSETA); |
| ... |
| IF EIBCALEN ª= 0 THEN |
| DO; |
| EXEC CICS SEND MAP ('MAPAA') MAPSET ('MAPSETA') |
| FROM (MAPAAO) ERASE FREEKB ALARM; |
| ... |
| END; |
| ... |
└------------------------------------------------------------------------------┘
Pag. 96
Pag. 97

A P Ò N D I C E A

Chamada de rotina CICS/MVS pelo NATURAL

Na chamada de uma rotina CICS/MVS feito por uma aplicação NATURAL, a passagem
de parâmetros não ‚ efetuado de modo convencional conhecido pelo CICS/MVS, que
seria a passagem via opção COMMAREA dos comandos que transferem controle …
outras aplicações. (Ver comandos LINK e XCTL)

Os parâmetros passados pela aplicação NATURAL segue o esquema demonstrado na


figura abaixo:

ú------------------------------------------------------------------------------┐
| |
| Aplicação NATURAL |
| ú-------------------------------┐ |
| | ... | |
| (1) | DEFINE DATA LOCAL | |
| ú-----------------------------Å 1 AREA_01 (N04) | |
| | ú-------Å 1 AREA_02 (A15) | |
| | | | ... | |
| | ú-----------Å-------Å 1 AREA_03 | |
| V V V | 2 SUBAREA_01 (A04) | |
|ú----------Â----------Â----------┐ | 2 SUBAREA_02 (B04) | |
||Endereço |Endereço |Endereço | | 2 SUBAREA_03 (A40) | |
||da AREA_01|da AREA_03|da AREA_02| | 2 SUBAREA_04 (A40) | |
|└----------Á----------Á----------┘ | ... | |
|| | CALL 'PRGCIC' AREA_01 AREA_03 | |
||(2) | AREA_02 | |
|└-----┐ | ... | |
| V T W A └-------------------------------┘ |
|ú------------Â----------------┐ |
||Endereço da| | (1) Os endereços de cada parâ|etro |
|| lista de | ........ | passado pelo NATURAL são arma- |
|| parametros | | zenados em uma rea contígua na |
|Ã------------┘ | memória do CICS/MVS. |
|| | A ordem em que os endereços |
|└-----------------------------┘ dos parâmetros são armazenados |
| na lista de parâmetros ‚ de- |
| terminado pela ordem em que eles são passados na instrução "CALL" |
| do NATURAL. |
| A quantidade de endereços na lista de parâmetros ‚ determi- |
| nado tambem pela quantidade de parâmetros passados na instrução |
| "CALL" do NATURAL. |
| |
|(2) O endereço da lista de parâmetros fica armazenado nos primeiros |
| quatro bytes (FULLWORD) da TWA. |
| |
└------------------------------------------------------------------------------┘
Pag. 98

Para se ter acesso pela aplicação CICS/MVS aos parâmetros passados por uma
aplicação NATURAL, deve-se utilizar o seguinte comando:

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS ADDRESS TWA (pointer); |
| | |
| └-----> vari vel do PL/I que aceita |
| somente como conteúdo um endereco de memória virtual |
└------------------------------------------------------------------------------┘

Este comando ‚ utilizado para endereçar a rea conhecida como TWA pelo
CICS/MVS, que ‚ utilizada para comunicação com outras aplicações.

Só que, da maneira que a aplicação NATURAL passa os parâmetros somente o


endereçamento a TWA não bastaria, sendo necess rio ainda uma estrutura montada
em PL/I para se chegar aos dados, como mostrado no esquema abaixo (seguindo o
exemplo anterior).

ú------------------------------------------------------------------------------┐
| (1) |
| ú----------------------------------------------------------┐ |
| | V |
| | T W A EXEC CICS ADDRESS TWA (PTR01); |
| ú------------Â----------------┐ |
|ú----´Endereço da| | DCL PTR01 POINTER; |
|| | lista de | ........ | DCL 1 ATWA BASED (PTR01), |
|| | parâmetros Ã----------------Å--------> 2 PTR02 POINTER; |
||(3) Ã------------┘ (2) | |
|| | | |
|| └-----------------------------┘ DCL 1 LST_PARM BASED(PTR02), |
|| ú------------------------>2 PRM01 POINTER,┐ |
|| | ú------------>2 PRM02 POINTER,Å-┐ |
|| |(4) | ú-->2 PRM03 POINTER;Å-Å-┐ |
|| | | | | | | |
|└------------->ú----Á-----Â-----Á----Â----Á-----┐ | | | |
| |Endereço |Endereço |Endereço | | | | |
| |da AREA_01|da AREA_03|da AREA_02| (5)| | | |
| └----------Á----------Á----------┘ | | | |
| | | | |
|DCL AREA_01 PIC '(04)9' BASED (PRM01),<-----------------┘ | | |
| 1 AREA_03 BASED (PRM02),<-------------------┘ | |
| 2 SUBAREA_01 CHAR (04), | |
| 2 SUBAREA_02 BIN FIXED (31), | |
| 2 SUBAREA_03 CHAR (40), | |
| 2 SUBAREA_04 CHAR (40), | |
| AREA_02 CHAR (15) BASED (PRM03);<---------------------┘ |
|ú--------------------------------------------------------------------┐ |
|| Observação: Os nomes destas vari veis nao precisam ser os mesmos | |
|| definidos no programa NATURAL. | |
|└--------------------------------------------------------------------┘ |
└------------------------------------------------------------------------------┘
Pag. 99

(1) Após a execução do comando "EXEC CICS ADDRESS TWA", ‚ devolvido no "pointer
PTR01" o endereço inicial da TWA.

(2) O pointer "PTR02" contém a primeira FULLWORD da TWA.

(3) A primeira FULLWORD da TWA aponta para a lista de parâmetros gerada pelo
NATURAL.

(4) Cada FULLWORD, a partir do endereço definido na primeira FULLWORD da TWA,


contém o endereço onde est o conteúdo de cada vari vel passada como
parâmetro pelo NATURAL.

(5) Define-se uma m scara (vari veis "BASED") para acessar o conteúdo de cada
parâmetro. As m scaras devem estar idênticas (pelo menos no tamanho) ao
tipo e tamanho de vari veis passadas pelo NATURAL. Caso contr rio poder
acarretar s‚rios danos ao CICS/MVS.

I M P O R T A N T E

ú------------------------------------------------------------------------------┐
|Para aplicações que utilizam as MACROs PL/I para acesso ao Banco de Dados |
|ADABAS, tomar cuidado. Pois, a INTERFACE do ADABAS utiliza a mesma rea na |
|TWA para a passagem de parâmetros. Oque acaba destruíndo o endereço da lista |
|de parâmetros enviados pelo NATURAL. Para evitar este problema, logo após |
|endereçar a TWA via comando mostrado acima, proceder da seguinte maneira. |
| |
|1. Declarar novamente a mesma quantidade de vari veis POINTERs definidos |
| para a recepção dos parâmetros do NATURAL. |
| |
|2. Logo após o comando "EXEC CICS ADDRESS TWA", movimentar (salvar) os |
| POINTERs que contém o endereço dos conteúdos dos parâmetros do NATURAL |
| para as vari veis definidas no ítem anterior. |
| |
|3. As m scaras que irão receber o conteúdo dos parâmetros deverão estar |
| baseados nos POINTERs definidos no ítem 1 ao invés dos POINTERS recebidos |
| pelo NATURAL. |
| |
|Ver exemplo na próxima p gina. |
└------------------------------------------------------------------------------┘
Pag. 100

ú-----------------------------------------------------------------------┐
| ú-----------------------------┐ |
| | EXEC CICS ADDRESS TWA (PTR01); |
| | SALVA_PRM01 = PRM01; |
| | SALVA_PRM02 = PRM02; |
| | SALVA_PRM03 = PRM03; |
| | |
| └--->DCL PTR01 POINTER;-┐ |
| V |
| DCL 1 ATWA BASED (PTR01), |
| 2 PTR02 POINTER;-┐ |
| V |
| DCL 1 LST_PARM BASED(PTR02), |
| ú------2 PRM01 POINTER, |
| ú-Å------2 PRM02 POINTER, |
| ú-Å-Å------2 PRM03 POINTER; |
| | | └--->SALVA_PRM01 POINTER,------------------┐ |
| | └----->SALVA_PRM02 POINTER,------------------Å---------┐ |
| └------->SALVA_PRM03 POINTER;------------------Å---------Å---┐ |
| V | | |
| DCL AREA_01 PIC '(04)9' BASED (SALVA_PRM01), | | |
| 1 AREA_03 BASED (SALVA_PRM02),<-┘ | |
| 2 SUBAREA_01 CHAR (04), | |
| 2 SUBAREA_02 BIN FIXED (31), | |
| 2 SUBAREA_03 CHAR (40), | |
| 2 SUBAREA_04 CHAR (40), | |
| AREA_02 CHAR (15) BASED (SALVA_PRM03);<-----┘ |
└-----------------------------------------------------------------------┘
Pag. 101

Rotina CICS/MVS chamada tanto por aplicação CICS/MVS


como por aplicação NATURAL

ú------------------------------------------------------------------------------┐
| ú---------------------------------┐ ú--------------------------------┐ |
| | CICS/MVS | | NATURAL | |
| | | | | |
| |PGMCIC:PROC OPTIONS(MAIN); | | DEFINE DATA LOCAL | |
| |DCL 1 ROTCIC_PARM, | | 1 ROTCIC_PARM | |
| | 2 PARM01 CHAR(02), | | 2 PARM01 (A02) | |
| | 2 PARM02 PIC '(04)9', | | 2 PARM02 (N04) | |
| | 2 PARM03 BIN FIXED(15); | | 2 PARM03 (B02) | |
| |PARM01 = 'AA'; | | END-DEFINE | |
| |EXEC CICS LINK PROGRAM('ROTCIC') | | ASSIGN PARM01 = 'BB' | |
| | COMMAREA (ROTCIC_PARM);| | CALL 'ROTCIC' ROTCIC_PARM | |
| |IF (PARM03 ª= 0) THEN | | IF PARM03 NE 0 THEN | |
| |... | | ... | |
| | | | | |
| └----------------Â----------------┘ └-----------------Â--------------┘ |
| └-----------------Â-------------------┘ |
| ú---------------------Á-----------------------┐ |
| | R o t i n a | |
| | | |
| |ROTCIC : PROC (CICS_PTR) OPTIONS (MAIN); | |
| |DCL CICS_PTR POINTER; | |
| |DCL TWA_PTR POINTER, | |
| | 1 TW_AREA BASED (TWA_PTR), | |
| | 2 LISTA_PTR POINTER, | |
| | 1 LISTA_PARM BASED (LISTA_PTR),| |
| | 2 NAT_PTR POINTER; | |
| |DCL 1 ROTCIC_PARM BASED (CICS_PTR), | |
| | 2 PARM01 CHAR (02), | |
| | 2 PARM02 PIC '(04)9', | |
| | 2 PARM03 BIN FIXED (15); | |
| |IF (EIBCALEN = 0) THEN | |
| |DO; | |
| | EXEC CICS ADDRESS TWA (TWA_PTR); | |
| | CICS_PTR = NAT_PTR; | |
| |END; | |
| |PARM03 = 0; | |
| |SELECT (PARM01); | |
| | WHEN ('AA') PARM02 = 11; | |
| | WHEN ('BB') PARM02 = 22; | |
| | OTHERWISE | |
| | DO; | |
| | PARM02 = 0; | |
| | PARM03 = 5; | |
| | END; | |
| |END; | |
| |EXEC CICS RETURN; | |
| |END ROTCIC; | |
| └---------------------------------------------┘ |
└------------------------------------------------------------------------------┘
Pag. 102
Pag. 103

A P Ò N D I C E B

Lista das condições de exceção

ú------------Â-----------------------┐ ú------------Â-----------------------┐
| | | | | |
Ã------------Å-----------------------´ Ã------------Å-----------------------´
|CBIDERR |ALLOCATE | |ENVDEFERR |RETRIEVE |
| |CONVERSE | Ã------------Å-----------------------´
| |EXTRACT ATTACH | |EOC |ALLOCATE |
| |SEND | Ã------------Å-----------------------´
Ã------------Å-----------------------´ | |CONVERSE |
|DISABLED |ENDBR | | |RECEIVE |
| |DELETE | | |RECEIVE MAP |
| |READ | | |RECEIVE PARTN |
| |READNEXT | | |SEND |
| |READPREV | Ã------------Å-----------------------´
| |RESETBR | |EODS |CONVERSE |
| |REWRITE | | |ISSUE RECEIVE |
| |STARTBR | | |RECEIVE |
| |UNLOCK | | |RECEIVE MAP |
| |WRITE | | |RECEIVE PARTN |
Ã------------Å-----------------------´ Ã------------Å-----------------------´
|DSIDERR |ENDBR | |EOF |CONVERSE |
| |DELETE | | |RECEIVE |
| |READNEXT | Ã------------Å-----------------------´
| |READPREV | |ERROR |Erro gen‚rico v lido |
| |RESETBR | | |para qualquer comando |
| |REWRITE | Ã------------Å-----------------------´
| |STARTBR | |EXPIRED |DELAY |
| |UNLOCK | | |POST |
| |WRITE | Ã------------Å-----------------------´
Ã------------Å-----------------------´ |FUNCERR |ISSUE ABORT |
|DSSTAT |ISSUE RECEIVE | | |ISSUE ADD |
Ã------------Å-----------------------´ | |ISSUE END |
|DUPKEY |READ | | |ISSUE ERASE |
| |READNEXT | | |ISSUE NOTE |
| |READPREV | | |ISSUE QUERY |
Ã------------Å-----------------------´ | |ISSUE REPLACE |
|DUPREC |WRITE | | |ISSUE SEND |
| |REWRITE | | |ISSUE WAIT |
Ã------------Å-----------------------´ Ã------------Å-----------------------´
|ENDDATA |RETRIEVE | |IGREQCD |CONVERSE |
Ã------------Å-----------------------´ | |ISSUE SEND |
|ENDFILE |READNEXT | | |SEND |
| |READPREV | | |SEND CONTROL |
Ã------------Å-----------------------´ | |SEND MAP |
|ENDINPT |RECEIVE | | |SEND PAGE |
Ã------------Å-----------------------´ | |SEND TEXT |
|ENQBUSY |ENQ | └------------Á-----------------------┘
└------------Á-----------------------┘
Pag. 104

ú------------Â-----------------------┐ ú------------Â-----------------------┐
| | | | | |
Ã------------Å-----------------------´ Ã------------Å-----------------------´
|IGREQID |SEND CONTROL | |INVREQ |ALLOCATE |
| |SEND MAP | | |ASSIGN |
| |SEND TEXT | | |CANCEL |
Ã------------Å-----------------------´ | |CONNECT PROCESS |
|ILLOGIC |DELETE | | |CONVERSE |
| |ENDBR | | |DELAY |
| |READ | | |DELETE |
| |READNEXT | | |ENDBR |
Ã------------Å-----------------------´ | |ENTER |
| |READPREV | | |EXTRACT ATTACH |
| |RESETBR | | |EXTRACT PROCESS |
| |REWRITE | | |EXTRACT TCT |
| |STARTBR | | |FREE |
| |UNLOCK | | |ISSUE ABEND |
| |WRITE | | |ISSUE CONFIRMATION |
Ã------------Å-----------------------´ | |ISSUE COPY |
|INBFMH |CONVERSE | | |ISSUE ENDFILE |
| |RECEIVE | | |ISSUE ENDOUTPUT |
Ã------------Å-----------------------´ | |ISSUE EODS |
|INVERRTERM |ROUTE | | |ISSUE ERASEAUP |
Ã------------Å-----------------------´ | |ISSUE ERROR |
|INVLDC |ROUTE | | |ISSUE LOAD |
| |SEND CONTROL | | |ISSUE PRINT |
| |SEND MAP | | |ISSUE RESET |
| |SEND TEXT | Ã------------Å-----------------------´
Ã------------Å-----------------------´ | |POST |
|INVMPSZ |RECEIVE MAP | | |READ |
| |SEND MAP | | |READNEXT |
Ã------------Å-----------------------´ | |READPREV |
|INVPARTN |RECEIVE MAP | | |READQ TS |
| |RECEIVE PARTN | | |RECEIVE |
| |SEND CONTROL | | |RESETBR |
| |SEND MAP | | |RETRIEVE |
| |SEND TEXT | | |RETURN |
Ã------------Å-----------------------´ | |REWRITE |
|INVPARTNSET |SEND PARTNSET | | |ROUTE |
└------------Á-----------------------┘ | |SEND |
| |SEND CONTROL |
| |SEND MAP |
| |SEND PAGE |
| |SEND PARTNSET |
| |SEND TEXT |
| |START |
| |STARTBR |
| |WAIT CONVID |
| |WAIT EVENT |
| |WAIT JOURNAL |
| |WRITE |
| |WRITEQ TS |
Ã------------Å-----------------------´
|INVTSREQ |RETRIEVE |
└------------Á-----------------------┘
Pag. 105

ú------------Â-----------------------┐ ú------------Â-----------------------┐
| | | | | |
Ã------------Å-----------------------´ Ã------------Å-----------------------´
|IOERR |DELETE | |LENGERR |CONNECT PROCESS |
| |JOURNAL | | |CONVERSE |
| |READ | | |DUMP |
| |READNEXT | | |GETMAIN |
| |READPREV | | |ISSUE RECEIVE |
| |READQ TD | | |JOURNAL |
| |READQ TS | | |READ |
| |RESETBR | | |READNEXT |
| |RETRIEVE | | |READPREV |
| |REWRITE | | |READQ TD |
| |START | | |READQ TS |
| |STARTBR | | |RECEIVE |
| |UNLOCK | | |RECEIVE PARTN |
| |WAIT JOURNAL | | |RETRIEVE |
| |WRITE | | |REWRITE |
| |WRITEQ TD | | |SEND |
| |WRITEQ TS | | |WRITE |
Ã------------Å-----------------------´ | |WRITEQ TD |
|ISCINVREQ |CANCEL | Ã------------Å-----------------------´
| |DELETE | |MAPFAIL |RECEIVE MAP |
| |DELETEQ TD | Ã------------Å-----------------------´
| |DELETEQ TS | |NOJBUFSP |JOURNAL |
| |ENDBR | Ã------------Å-----------------------´
| |READ | |NONVAL |ISSUE LOAD |
| |READNEXT | Ã------------Å-----------------------´
Ã------------Å-----------------------´ |NOPASSBKRD |RECEIVE |
| |READPREV | Ã------------Å-----------------------´
| |READQ TD | |NOPASSBKWR |SEND |
| |READQ TS | Ã------------Å-----------------------´
| |RESETBR | |NOSPACE |REWRITE |
| |RETRIEVE | | |WRITE |
| |REWRITE | | |WRITEQ TD |
| |START | | |WRITEQ TS |
| |STARTBR | Ã------------Å-----------------------´
| |UNLOCK | |NOSTART |ISSUE LOAD |
| |WRITE | Ã------------Å-----------------------´
| |WRITEQ TD | |NOSTG |GETMAIN |
| |WRITEQ TS | └------------Á-----------------------┘
Ã------------Å-----------------------´
|ITEMERR |READQ TS |
| |WRITEQ TS |
Ã------------Å-----------------------´
|JIDERR |JOURNAL |
| |WAIT JOURNAL |
└------------Á-----------------------┘
Pag. 106

ú------------Â-----------------------┐ ú------------Â-----------------------┐
| | | | | |
Ã------------Å-----------------------´ Ã------------Å-----------------------´
|NOTALLOC |CONNECT PROCESS | | |READPREV |
| |CONVERSE | | |RESETBR |
| |EXTRACT ATTACH | | |RETRIEVE |
| |EXTRACT PROCESS | | |STARTBR |
| |FREE | Ã------------Å-----------------------´
| |ISSUE ABEND | |NOTOPEN |ENDBR |
| |ISSUE CONFIRMATION | | |DELETE |
| |ISSUE DISCONNECT | | |JOURNAL |
| |ISSUE ERROR | | |READ |
| |ISSUE SIGNAL | | |READNEXT |
| |POINT | | |READPREV |
| |RECEIVE | | |READQ TD |
| |SEND | | |RESETBR |
| |WAIT CONVID | | |REWRITE |
| |WAIT TERMINAL | | |STARTBR |
Ã------------Å-----------------------´ | |UNLOCK |
|NOTAUTH |CANCEL | | |WAIT JOURNAL |
| |DELETE | | |WRITE |
| |DELETEQ TD | | |WRITEQ TD |
| |DELETEQ TS | Ã------------Å-----------------------´
| |ENDBR | |OVERFLOW |SEND MAP |
| |LINK | Ã------------Å-----------------------´
| |LOAD | |PARTNFAIL |RECEIVE MAP |
| |JOURNAL | Ã------------Å-----------------------´
| |READ | |PGMIDERR |HANDLE AID |
| |READQ TD | | |LINK |
| |READQ TS | | |LOAD |
| |READNEXT | | |RELEASE |
| |READPREV | | |XCTL |
| |RELEASE | Ã------------Å-----------------------´
| |RESETBR | |QBUSY |READQ TD |
| |RETRIEVE | Ã------------Å-----------------------´
| |RETURN | |QIDERR |DELETEQ TD |
| |REWRITE | | |DELETEQ TS |
| |START | | |READQ TD |
| |STARTBR | | |READQ TS |
| |WAIT JOURNAL | | |WRITEQ TD |
Ã------------Å-----------------------´ | |WRITEQ TS |
| |WRITE | Ã------------Å-----------------------´
| |WRITEQ TD | |QZERO |READQ TD |
| |WRITEQ TS | Ã------------Å-----------------------´
| |UNLOCK | |RDATT |CONVERSE |
| |XCTL | | |RECEIVE |
Ã------------Å-----------------------´ | |RECEIVE MAP |
|NOTFND |CANCEL | Ã------------Å-----------------------´
| |DELETE | |RETPAGE |SEND CONTROL |
| |READ | | |SEND MAP |
| |READNEXT | | |SEND PAGE |
└------------Á-----------------------┘ | |SEND TEXT |
Ã------------Å-----------------------´
|ROLLEDBACK |SYNCPOINT |
└------------Á-----------------------┘
Pag. 107

ú------------Â-----------------------┐ ú------------Â-----------------------┐
| | | | | |
Ã------------Å-----------------------´ Ã------------Å-----------------------´
|RTEFAIL |ROUTE | | |WRITE |
Ã------------Å-----------------------´ | |WRITEQ TD |
|RTESOME |ROUTE | | |WRITEQ TS |
Ã------------Å-----------------------´ Ã------------Å-----------------------´
|SELNERR |ISSUE ABORT | |TERMERR |CONVERSE |
| |ISSUE ADD | | |ISSUE ABEND |
| |ISSUE END | | |ISSUE CONFIRMATION |
| |ISSUE ERASE | | |ISSUE COPY |
| |ISSUE NOTE | | |ISSUE DISCONNECT |
| |ISSUE QUERY | | |ISSUE EODS |
| |ISSUE REPLACE | | |ISSUE ERASEAUP |
| |ISSUE SEND | | |ISSUE ERROR |
| |ISSUE WAIT | | |ISSUE LOAD |
Ã------------Å-----------------------´ | |ISSUE PRINT |
|SESSBUSY |ALLOCATE | | |ISSUE SIGNAL |
Ã------------Å-----------------------´ | |RECEIVE |
|SESSIONERR |ALLOCATE | | |SEND |
| |CONVERSE | | |WAIT SIGNAL |
| |EXTRACT ATTACH | Ã------------Å-----------------------´
| |FREE | |TERMIDERR |ISSUE COPY |
| |ISSUE DISCONNECT | | |START |
| |ISSUE SIGNAL | Ã------------Å-----------------------´
| |POINT | |TRANSIDERR |START |
| |RECEIVE | Ã------------Å-----------------------´
| |SEND | |TSIOERR |PURGE MESSAGE |
| |WAIT TERMINAL | | |SEND CONTROL |
Ã------------Å-----------------------´ | |SEND MAP |
|SIGNAL |CONVERSE | | |SEND PAGE |
| |RECEIVE | | |SEND TEXT |
| |SEND | Ã------------Å-----------------------´
| |WAIT CONVID | |UNEXPIN |ISSUE ABORT |
| |WAIT SIGNAL | | |ISSUE ADD |
| |WAIT TERMINAL | | |ISSUE END |
Ã------------Å-----------------------´ | |ISSUE ERASE |
|SYSIDERR |ALLOCATE | | |ISSUE NOTE |
| |CANCEL | | |ISSUE QUERY |
| |DELETE | | |ISSUE RECEIVE |
| |DELETEQ TD | | |ISSUE REPLACE |
| |DELETEQ TS | | |ISSUE SEND |
| |ENDBR | | |ISSUE WAIT |
| |READ | | |RECEIVE MAP |
| |READNEXT | Ã------------Å-----------------------´
| |READPREV | |WRBRK |CONVERSE |
| |READQ TD | | |SEND CONTROL |
| |READQ TS | | |SEND |
| |RESETBR | | |SEND MAP |
| |RETRIEVE | | |SEND PAGE |
| |REWRITE | | |SEND TEXT |
| |START | └------------Á-----------------------┘
| |STARTBR |
| |UNLOCK |
└------------Á-----------------------┘
Pag. 108
Pag. 109

A P Ò N D I C E C

Lista dos códigos de ABEND

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|???? | |ABEND CODE PL/I |
Ã-------Å-----------Å----------------------------------------------------------´
|Annn | |ABEND CODE ADABAS, where 'nnn' is the response code. |
| | | |
| | |Ver os RESPONSE CODEs ADABAS no manual de ADABAS. |
Ã-------Å-----------Å----------------------------------------------------------´
|AACA |DFHACP |Invalid error code |
Ã-------Å-----------Å----------------------------------------------------------´
|AAKP |DFHAKP |Write I/O error to MT log |
Ã-------Å-----------Å----------------------------------------------------------´
|AAMA |DFHAMP |Internal logic error |
Ã-------Å-----------Å----------------------------------------------------------´
|AAMD |DFHAMP |Bad return code DFHDMP |
Ã-------Å-----------Å----------------------------------------------------------´
|AAMO |DFHAMP |Bad return code DFHTOR |
Ã-------Å-----------Å----------------------------------------------------------´
|AAMP |DFHAMP |Bad return code DFHPUP |
Ã-------Å-----------Å----------------------------------------------------------´
|AAMT |DFHAMP |Bad return code DFHTMP |
Ã-------Å-----------Å----------------------------------------------------------´
|AAMZ |DFHAMP |Bad return code DFHZCP |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMA |DFHPBP |TIOA wrong length |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMB |DFHPBP, |Cursor position larger than current screen size |
| |DFHMCP, | |
| |DFHMCX | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMD |DFHTPP, |Bad return code from send |
| |DFHTPR | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMG |DFHMCP |BMS service not present |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMI |DFHMCX, |Not input map |
| |DFHMCP | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABML |DFHRLR |Invalid output |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMM |DFHPBP |Invalid map |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 110

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMO |DFHMCX, |No output map |
| |DFHMCP | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMP |DFHTPR |Undefined PA/PF key |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMR |DFHMCPDY |BMS modules not generated |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMS |DFHTPS |Non zero return code |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMT |DFHMCP |BMS used for non-3270 terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMU |DFHMCP, |Address out of range |
| |DFHEMS | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMV |DFHRLR |Invalid route list entry |
Ã-------Å-----------Å----------------------------------------------------------´
|ABMX |DFHPBP |Invalid set attribute order in text |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM0 |DFHMCP |Map not located |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM1 |DFHRLR |BMS service requested from non-BMS-supported terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM2 |DFHMCP |No user data for BMS request |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM3 |DFHMCP |BMS service requested from non-BMS-supported terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM4 |DFHMCP, |Page error |
| |DFHTPP | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM5 |DFHMCP, |Purge request issued with invalid REQID by BMS |
| |DFHTPR | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM6 |DFHMCP |CSPS not defined in PCT |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM7 |DFHPBP |Trailer too large |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM8 |DFHPBP |Justify parameter too large |
Ã-------Å-----------Å----------------------------------------------------------´
|ABM9 |DFHPBP |Trailer too large |
Ã-------Å-----------Å----------------------------------------------------------´
|ABNA |DFHTPS |No route list |
Ã-------Å-----------Å----------------------------------------------------------´
|ABNB |DFHTPS |Invalid TCTTE type for principal facility |
Ã-------Å-----------Å----------------------------------------------------------´
|ABNC |DFHTPS |Access temp storage queue failed |
Ã-------Å-----------Å----------------------------------------------------------´
|ABND |DFHTPS |Invalid response from DFHXTP |
Ã-------Å-----------Å----------------------------------------------------------´
|ABNE |DFHTPS |Invalid response from BMS ROUTE or STORE request |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 111

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|ABNF |DFHTPS |Send, not in send mode |
Ã-------Å-----------Å----------------------------------------------------------´
|ABNG |DFHTPS |Attach recived without data |
Ã-------Å-----------Å----------------------------------------------------------´
|ABNH |DFHTPS |Shit to remote system failed |
Ã-------Å-----------Å----------------------------------------------------------´
|ABNI |DFHTPS |LU6.2 profile not found |
Ã-------Å-----------Å----------------------------------------------------------´
|ABP1 |DFHxxBP |I/O error in restart data set |
Ã-------Å-----------Å----------------------------------------------------------´
|ABP2 |DFHxxBP |Backout failure |
Ã-------Å-----------Å----------------------------------------------------------´
|ABP3 |DFHxxBP |CICS internal logic error |
Ã-------Å-----------Å----------------------------------------------------------´
|ABSA |DFHTBS |CICS internal logic error |
Ã-------Å-----------Å----------------------------------------------------------´
|ACAA |DFHCAP |Invalid function code on command analysis request |
Ã-------Å-----------Å----------------------------------------------------------´
|ACAD |DFHCAP |Invalid function code on defaults request |
Ã-------Å-----------Å----------------------------------------------------------´
|ACAI |DFHCAP |Invalid function code on request to DFHCAP |
Ã-------Å-----------Å----------------------------------------------------------´
|ACMF |DFHCMP |Monitoring area overwritten |
Ã-------Å-----------Å----------------------------------------------------------´
|ACP1 |DFHCPY |Bad IC response code |
Ã-------Å-----------Å----------------------------------------------------------´
|ACP2 |DFHCPY |Bad IC response code |
Ã-------Å-----------Å----------------------------------------------------------´
|ACRA |DFHCRP |Principal facility is not terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|ACRB |DFHCRP |Transaction is not remote |
Ã-------Å-----------Å----------------------------------------------------------´
|ACRC |DFHCRP |Invalid response from DFHZCX |
Ã-------Å-----------Å----------------------------------------------------------´
|ACRD |DFHCRP |System entry not found |
Ã-------Å-----------Å----------------------------------------------------------´
|ACSA |DFHCRS |Principal facility is not link |
Ã-------Å-----------Å----------------------------------------------------------´
|ACSB |DFHCRS |Invalid reply to schedule request |
Ã-------Å-----------Å----------------------------------------------------------´
|ACSC |DFHCRS |Invalid request received |
Ã-------Å-----------Å----------------------------------------------------------´
|ACSD |DFHCRS |Logic error in DFHCRS |
Ã-------Å-----------Å----------------------------------------------------------´
|ADB1 |DFHDBP |Error on dynamic log |
Ã-------Å-----------Å----------------------------------------------------------´
|ADIR |DFHDIP |Data interchange not generated |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLA |DFHDLR |DL/I abend |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 112

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLD |DFHDLR |Program isolation deadlock |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLE |DFHDLI |Unknown PDIR entry |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLF |DFHDLI |Data base link down |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLG |DFHDLI |Error in DL/I argument |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLH |DFHDLRP |DL/I restart program failure |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLK |DFHDLR |Request to create or delete a buffer pool |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLL |DFHDLI, |Error writing system log |
| |DFHDLR | |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLN |DFHEDP |Sysgen parameter error |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLP |DFHDLI |Unauthorized or unknown PSB |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLS |DFHDLR |ISB not found |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLT |DFHDLR |Error writing message |
Ã-------Å-----------Å----------------------------------------------------------´
|ADLX |DFHDLR |Illegal DL/I buffer action |
Ã-------Å-----------Å----------------------------------------------------------´
|AEC1 |DFHECIP, |CECI, CEMT, or CEDA tried to use unsupported terminal |
| |DFHECSP, | |
| |DFHEDAP, | |
| |DFHEMTP, | |
| |DFHEOTP, | |
| |DFHESTP | |
Ã-------Å-----------Å----------------------------------------------------------´
|AEC2 |DFHECIP, |CECI, CEMT, or CEDA tried to use too small screen |
| |DFHCSP, | |
| |DFHEDAP, | |
| |DFHEMTP, | |
| |DFHEOTP, | |
| |DFHESTP | |
Ã-------Å-----------Å----------------------------------------------------------´
|AED1 |DFHEDFP |Non-EDF supported terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|AED2 |DFHEDFX |EDF has terminated a task |
Ã-------Å-----------Å----------------------------------------------------------´
|AED3 |DFHEDFX |EDF has terminated a task |
Ã-------Å-----------Å----------------------------------------------------------´
|AED4 |DFHEDFP |Logic error in DFHEDFP |
Ã-------Å-----------Å----------------------------------------------------------´
|AED5 |DFHDFD |Internal logic error |
Ã-------Å-----------Å----------------------------------------------------------´
|AED6 |DFHEDFU |Internal logic error |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 113

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIA |DFHEIP |ERROR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEID |DFHEIP |EOF |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIE |DFHEIP |EODS |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIG |DFHEIP |INBFMH |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIH |DFHEIP |ENDINPT |
Ã-------Å-----------Å----------------------------------------------------------´
|AEII |DFHEIP |NONVAL |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIJ |DFHEIP |NOSTART |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIK |DFHEIP |TERMIDERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIL |DFHEIP |DSIDERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIM |DFHEIP |NOTFND |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIN |DFHEIP |DUPREC |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIO |DFHEIP |DUPKEY |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIP |DFHEIP |INVREQ |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIQ |DFHEIP |IOERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIR |DFHEIP |NOSPACE |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIS |DFHEIP |NOTOPEN |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIT |DFHEIP |ENDFILE |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIU |DFHEIP |ILLOGIC |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIV |DFHEIP |LENGERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIW |DFHEIP |QZERO |
Ã-------Å-----------Å----------------------------------------------------------´
|AEIZ |DFHEIP |ITEMERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEI0 |DFHEIP |PGMIDERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEI1 |DFHEIP |TRANSIDERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEI2 |DFHEIP |ENDDATA |
Ã-------Å-----------Å----------------------------------------------------------´
|AEI3 |DFHEIP |INVTSREQ |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 114

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|AEI8 |DFHEIP |TSIOERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEI9 |DFHEIP |MAPFAIL |
Ã-------Å-----------Å----------------------------------------------------------´
|AEXL |DFHEIP |DISABLED |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYA |DFHEIP |INVERRTERM |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYB |DFHEIP |INVMPSZ |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYC |DFHEIP |IGREQID |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYE |DFHEIP |INVLDC |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYG |DFHEIP |JIDERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYH |DFHEIP |QIDERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYJ |DFHEIP |DSSTAT |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYK |DFHEIP |SELNERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYL |DFHEIP |FUNCERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYM |DFHEIP |UNEXPIN |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYN |DFHEIP |NOPASSBKRD |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYO |DFHEIP |NOPASSBKWR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYQ |DFHEIP |SYSIDERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYR |DFHEIP |ISINVREQ |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYT |DFHEIP |ENVDEFERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYU |DFHEIP |IGREQCD |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYV |DFHEIP |SESSERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYY |DFHEIP |NOTALLOC |
Ã-------Å-----------Å----------------------------------------------------------´
|AEYZ |DFHEIP |CBIDERR |
Ã-------Å-----------Å----------------------------------------------------------´
|AEY0 |DFHEIP |INVEXITREQ |
Ã-------Å-----------Å----------------------------------------------------------´
|AEY1 |DFHEIP |INVPARTNSET |
Ã-------Å-----------Å----------------------------------------------------------´
|AEY2 |DFHEIP |INVPARTN |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 115

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|AEY3 |DFHEIP |PARTNFAIL |
Ã-------Å-----------Å----------------------------------------------------------´
|AEY6 |DFHEIP |Logic error in DFHEIP |
Ã-------Å-----------Å----------------------------------------------------------´
|AEY7 |DFHEIP |Resource security check failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AEY8 |DFHEIP |Dynamic storage request too small |
Ã-------Å-----------Å----------------------------------------------------------´
|AEY9 |DFHEIP |Illegal EXEC CICS or non-CICS command |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCA |DFHFCP |File disabled |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCB |DFHFCRP |File control restart task failure |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCD |DFHFCS |Attempt to access disabled file |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCE |DFHFCS |I/O error in restart data ser |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCF |DFHFCP |File control recovery failure |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCG |DFHFCBP |File control logic error |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCH |DFHFCBP |I/O error in restart data set |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCI |DFHFCL, |Opne/close logic error |
| |DFHFCM, | |
| |DFHFCN | |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCL |DFHFCP |Automatic journaling or automatic logging error |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCO |DFHFCP |Obsolete function request |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCS |DFHFCP |VSAM file control subtask error |
Ã-------Å-----------Å----------------------------------------------------------´
|AFCT |DFHFCP |VSAM/BSAM subtask abended |
Ã-------Å-----------Å----------------------------------------------------------´
|AICA |DFHKCP |Runaway task |
Ã-------Å-----------Å----------------------------------------------------------´
|AICB |DFHICP |RETRIEVE WAIT reissued |
Ã-------Å-----------Å----------------------------------------------------------´
|AISA |DFHMIR |Illegal mirror attach |
Ã-------Å-----------Å----------------------------------------------------------´
|AISB |DFHMIR |Errors in data for mirror |
Ã-------Å-----------Å----------------------------------------------------------´
|AISC |DFHMIR |No TIOA passed to DFHMIR |
Ã-------Å-----------Å----------------------------------------------------------´
|AISD |DFHMIR |DFHMIR received non zero return code |
Ã-------Å-----------Å----------------------------------------------------------´
|AISE |DFHISP, |No DL/I support for DFHISP |
| |DFHMIR | |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 116

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|AISG |DFHMIR |DFHMIR unable to send a reply |
Ã-------Å-----------Å----------------------------------------------------------´
|AISH |DFHCRNP |Illegal use of CSNC |
Ã-------Å-----------Å----------------------------------------------------------´
|AISI |DFHISP |Invalid function shipping request |
Ã-------Å-----------Å----------------------------------------------------------´
|AISJ |DFHCRNP |Unable to attach CSIR |
Ã-------Å-----------Å----------------------------------------------------------´
|AISK |DFHISP |Mirror transaction abended |
Ã-------Å-----------Å----------------------------------------------------------´
|AISL |DFHLUP |LU services menager illegally started |
Ã-------Å-----------Å----------------------------------------------------------´
|AISM |DFHFCP, |Macro-level request for remote system |
| |DFHTDP, | |
| |DFHTSP, | |
| |DFHDLI | |
Ã-------Å-----------Å----------------------------------------------------------´
|AISS |DFHZERH |Security violation at start of LU6.2 conversation |
Ã-------Å-----------Å----------------------------------------------------------´
|AJCA |DFHJCIOE |I/O error in journal data set |
Ã-------Å-----------Å----------------------------------------------------------´
|AJCB |DFHJCEOV |Failure to switch volumes |
Ã-------Å-----------Å----------------------------------------------------------´
|AJCC |DFHJCBSP |Transaction CSJC entered |
Ã-------Å-----------Å----------------------------------------------------------´
|AJCN |DFHJCP |Failure to write log record |
Ã-------Å-----------Å----------------------------------------------------------´
|AJCR |DFHJCP |CRUCIAL journal unavailable |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCA |DFHKCP |DFHKCP not built correctly |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCB |DFHKCRP |Task control restart failure |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCD |DFHKCP |Invalid code in dispatch control indicator field |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCE |DFHKCQ |Write to system log failure |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCF |DFHKCQ |Write to restart data set failure |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCL |Any |More than one lock |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCP |DFHKCP |Stall condition |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCR |DFHKCP |Invalid request code |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCS |DFHKCP |Deadlock timeout has occurred |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCT |DFHKCP |Terminal read timeout has occurred |
Ã-------Å-----------Å----------------------------------------------------------´
|AKCU |DFHKCP |Internal logic error |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 117

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|ALFA |DFHLFO |More than 48 LIFO overflow segments created |
Ã-------Å-----------Å----------------------------------------------------------´
|ALFB |DFHLFO |Length not multiple of 8 |
Ã-------Å-----------Å----------------------------------------------------------´
|ALFC |DFHLFO |Error freeing LIFO overflow segment |
Ã-------Å-----------Å----------------------------------------------------------´
|ALFE |DFHLFO |LIFO store overwritten in TCA |
Ã-------Å-----------Å----------------------------------------------------------´
|AMSA |DFHMSP |SBA not followed by address |
Ã-------Å-----------Å----------------------------------------------------------´
|AMSB |DFHMSP |Error in DFHMSP |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTA |DFHMTPA |Error in DFHMTPA |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTB |DFHMTPB |Error in DFHMTPB |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTD |DFHMTPD |Error in DFHMTPD |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTE |DFHMTPE |Error in DFHMTPE |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTF |DFHMTPF |Error in DFHMTPF |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTG |DFHMTPG |Error in DFHMTPG |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTH |DFHMTPF |DFHMTPF terminated task |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTJ |DFHMTPC |DFHMTPC terminated task |
Ã-------Å-----------Å----------------------------------------------------------´
|AMTM |DFHMTWM |Msg save area too small |
Ã-------Å-----------Å----------------------------------------------------------´
|AMT0 |DFHMTWM |Error in DFHMTWM |
Ã-------Å-----------Å----------------------------------------------------------´
|AMT1 |DFHMTPC |DFHMTPC terminated task |
Ã-------Å-----------Å----------------------------------------------------------´
|AMT2 |DFHMTPF |DFHMTPF terminated task |
Ã-------Å-----------Å----------------------------------------------------------´
|AOCA |DFHOCP |Error opeining VSAM ESDS |
Ã-------Å-----------Å----------------------------------------------------------´
|APCA |DFHPCRP |Program control restart failure |
Ã-------Å-----------Å----------------------------------------------------------´
|APCB |DFHPCP |DFHPCP not built correctly |
Ã-------Å-----------Å----------------------------------------------------------´
|APCC |DFHPCP |COBOL support not generated |
Ã-------Å-----------Å----------------------------------------------------------´
|APCD |DFHPCQ |Write to system log failure |
Ã-------Å-----------Å----------------------------------------------------------´
|APCE |DFHPCQ |Write to restart data set failure |
Ã-------Å-----------Å----------------------------------------------------------´
|APCF |DFHPCP |PL/I shared library not present |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 118

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|APCI |DFHPCP |Not proper support for PL/I |
Ã-------Å-----------Å----------------------------------------------------------´
|APCL |DFHSAP |PL/I shared library not present |
Ã-------Å-----------Å----------------------------------------------------------´
|APCM |PFHPC |Illegal type parameter |
Ã-------Å-----------Å----------------------------------------------------------´
|APCN |DFHPCP |Control counter negative |
Ã-------Å-----------Å----------------------------------------------------------´
|APCO |DFHPCP |Program exceeds 64K |
Ã-------Å-----------Å----------------------------------------------------------´
|APCP |DFHPCP |I/O error on load |
Ã-------Å-----------Å----------------------------------------------------------´
|APCR |DFHPCP |Invalid request |
Ã-------Å-----------Å----------------------------------------------------------´
|APCS |DFHPCP |Not proper support for COBOL |
Ã-------Å-----------Å----------------------------------------------------------´
|APCT |DFHPCP |Module not found, disabled, or zero length |
Ã-------Å-----------Å----------------------------------------------------------´
|APCX |DFHPCP |Macro request in 31-bit mode |
Ã-------Å-----------Å----------------------------------------------------------´
|APC2 |DFHPCP |Not proper support for COBOL |
Ã-------Å-----------Å----------------------------------------------------------´
|APC3 |DFHPCP |Not proper support for COBOL |
Ã-------Å-----------Å----------------------------------------------------------´
|APC4 |DFHPCP |Not proper support for COBOL |
Ã-------Å-----------Å----------------------------------------------------------´
|APLC | |The shared library facilities are required by the |
| | |application program, but were not included in the CICS/VS |
| | |system during initialization/installation. See your |
| | |system programmer. |
Ã-------Å-----------Å----------------------------------------------------------´
|APLD | |An error was detected by CICS/VS on transmission of a |
| | |record to the CPLD queue. See your system programmer. |
Ã-------Å-----------Å----------------------------------------------------------´
|APLE | |An error occurred during PL/I program management |
| | |(equivalent to a 4000 ABEND on non-CICS systems). |
Ã-------Å-----------Å----------------------------------------------------------´
|APLG | |A get storage request to the storage allocation routine |
| | |specified a size greater than the CICS/OS/VS permitted |
| | |maximum of 65,496 (or a maximum of 1,073,741,816 under |
| | |MVS/XA). This error is caused by having sither a based or |
| | |controlled variable that is too large in an ALLOCATE |
| | |statemente, or too many large automatic variables. |
Ã-------Å-----------Å----------------------------------------------------------´
|APLI | |An error was detected by CICS/VS on transmission of a |
| | |record to the CPLI queue. See your system programmer. |
Ã-------Å-----------Å----------------------------------------------------------´
|APLM | |No main procedure. |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 119

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|APLS | |This ABEND is issued on termination, if termination is |
| | |caused by the ERROR condition, and the ERROR condition |
| | |was not caused by an ABEND (other than an ASRA ABEND). |
| | |This is the ABEND code issued by PL/I when a transaction |
| | |terminates in error due to a PL/I software interrupt |
| | |(CONVERSION, for example), and there is no ERROR on-unit, |
| | |or the program takes normal return from the ERROR on- |
| | |unit. Since the program failed, the failure must be |
| | |reflected to CICS/OS/VS as an ABEND so that Dynamic |
| | |Transaction Backout, and so on, can occur if necessary. |
| | |Since there was no CICS/OS/VS ABEND to be reissued, PL/I |
| | |termination must supply an ABEND code. |
Ã-------Å-----------Å----------------------------------------------------------´
| | |APLS is also the ABEND code issued by PL/I termination |
| | |when a program check (CICS/VS ASRA ABEND) is intercepted |
| | |by the PL/I ERROR handler, but the condition cannot be |
| | |resolved by the user. For instance, the program was |
| | |terminated due to normal return from an on-unit. PL/I |
| | |cannot re-issue the ABEND with code ASRA, because a |
| | |program that linked to this failing program would be |
| | |abended with an ABEND code (ASRA) that implies that a PSW |
| | |and registers are being supplied that permit some sort of |
| | |fixup or retry; in fact, the PSW is that of a program |
| | |that is longer active, and the registers point to storage |
| | |locations that are no longer meaningful. For more |
| | |information on ASRA, refer to |
Ã-------Å-----------Å----------------------------------------------------------´
|APLX | |The total possible LIFO storage segments have been |
| | |exhausted. Check the program for loops or increase the |
| | |ISASIZE or ISAINC. CICS/OS/VS Message and Codes. |
Ã-------Å-----------Å----------------------------------------------------------´
|APP1 |DFHP3270 |Abnormal GET response code |
Ã-------Å-----------Å----------------------------------------------------------´
|APP2 |DFHP3270 |Data length too small |
Ã-------Å-----------Å----------------------------------------------------------´
|APP3 |DFHP3270 |Illegal request to nonprinter |
Ã-------Å-----------Å----------------------------------------------------------´
|APR1 |DFHPRK |Abnormal PUT response code |
Ã-------Å-----------Å----------------------------------------------------------´
|APSJ |DFHPSIP |Spooler illegally invoked |
Ã-------Å-----------Å----------------------------------------------------------´
|APST |DFHEPS |SPOOL command without NOHANdlER |
Ã-------Å-----------Å----------------------------------------------------------´
|APSU |DFHPSPST |Invalid JES return code to spooler |
Ã-------Å-----------Å----------------------------------------------------------´
|APSV |DFHPSPST |Invalid MVS macro return to spooler |
Ã-------Å-----------Å----------------------------------------------------------´
|APSW |DFHPSPST |Abend in spooler subtask |
Ã-------Å-----------Å----------------------------------------------------------´
|APSX |DFHPSPST |Invalid parameter |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 120

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|APSY |DFHPSPST |Error return, MVS macro |
Ã-------Å-----------Å----------------------------------------------------------´
|APSZ |DFHPSPST |Error return, JES |
Ã-------Å-----------Å----------------------------------------------------------´
|APUA |DFHPUP |Internal error |
Ã-------Å-----------Å----------------------------------------------------------´
|APUB |DFHPUP |Internal error |
Ã-------Å-----------Å----------------------------------------------------------´
|APUC |DFHPUP |Internal error |
Ã-------Å-----------Å----------------------------------------------------------´
|APUD |DFHPUP |Unable to load RDO table |
Ã-------Å-----------Å----------------------------------------------------------´
|APUE |DFHPUP |Unable to load RDO table |
Ã-------Å-----------Å----------------------------------------------------------´
|APUF |DFHPUP |RDO table invalid or missing |
Ã-------Å-----------Å----------------------------------------------------------´
|APUG |DFHPUP |Internal error |
Ã-------Å-----------Å----------------------------------------------------------´
|APUH |DFHPUP |Internal error |
Ã-------Å-----------Å----------------------------------------------------------´
|APUI |DFHPUP |Internal error |
Ã-------Å-----------Å----------------------------------------------------------´
|APUJ |DFHPUP |Internal error |
Ã-------Å-----------Å----------------------------------------------------------´
|APUK |DFHPUP |Unable to obtain storage |
Ã-------Å-----------Å----------------------------------------------------------´
|APUL |DFHPUP |Unrecognized resource type code (FLATTEN) |
Ã-------Å-----------Å----------------------------------------------------------´
|APUM |DFHPUP |Unrecognized resource type code (TRANCASE) |
Ã-------Å-----------Å----------------------------------------------------------´
|APUN |DFHPUP |Unrecognized resource type code (COMPARE) |
Ã-------Å-----------Å----------------------------------------------------------´
|APUO |DFHPUP |Unrecognized resource type code (BACKTRANS) |
Ã-------Å-----------Å----------------------------------------------------------´
|APUP |DFHPUP |Error processing language definition table |
Ã-------Å-----------Å----------------------------------------------------------´
|APUQ |DFHPUP |Error processing language definition table |
Ã-------Å-----------Å----------------------------------------------------------´
|APUR |DFHPUP |Data type conflict |
Ã-------Å-----------Å----------------------------------------------------------´
|APUS |DFHPUP |Invalid length for keyword |
Ã-------Å-----------Å----------------------------------------------------------´
|APUT |DFHPUP |Invalid keyword existence bit |
Ã-------Å-----------Å----------------------------------------------------------´
|APUZ |DFHPUP |Invalid definition type in CSD record |
Ã-------Å-----------Å----------------------------------------------------------´
|ARCA |DFHRCRP |Recovery control restart task failure |
Ã-------Å-----------Å----------------------------------------------------------´
|ARCB |DFHRCEX |Transaction backout exit program cannot be enabled |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 121

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|ARLI |DFHZRLG |CSLG not initiated |
Ã-------Å-----------Å----------------------------------------------------------´
|ARTA |DFHRTE |Principal facility not terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|ARTB |DFHRTE |No input TIOA, or data length zero |
Ã-------Å-----------Å----------------------------------------------------------´
|ARTC |DFHRTE |Link not usable |
Ã-------Å-----------Å----------------------------------------------------------´
|ARTD |DFHRTE |Logic error in DFHRTE |
Ã-------Å-----------Å----------------------------------------------------------´
|ARTE |DFHRTE |Error in I/O to or from temp. storage |
Ã-------Å-----------Å----------------------------------------------------------´
|ARTF |DFHRTE |Illegal attempt to use CRTE |
Ã-------Å-----------Å----------------------------------------------------------´
|ARTG |DFHRTE |Profile not found |
Ã-------Å-----------Å----------------------------------------------------------´
|ASCF |DFHSCP |Invalid FREEMAIN addr |
Ã-------Å-----------Å----------------------------------------------------------´
|ASCR |DFHSCP |Illegal storage control request |
Ã-------Å-----------Å----------------------------------------------------------´
|ASPD |DFHSPP |Error resetting dynamic log |
Ã-------Å-----------Å----------------------------------------------------------´
|ASPE |DFHSPP |Rollback without dynamic transaction backout |
Ã-------Å-----------Å----------------------------------------------------------´
|ASPL |DFHSPP |Error writing sync point |
Ã-------Å-----------Å----------------------------------------------------------´
|ASP1 |DFHSPP |Error during sync point |
Ã-------Å-----------Å----------------------------------------------------------´
|ASP2 |DFHSPP |Sync point attempted with invalid ISC links |
Ã-------Å-----------Å----------------------------------------------------------´
|ASP3 |DFHSPP |No sync point in remote system |
Ã-------Å-----------Å----------------------------------------------------------´
|ASP5 |DFHSPP |Principal facility not owned by task |
Ã-------Å-----------Å----------------------------------------------------------´
|ASP6 |DFHSPP |Flush failed |
Ã-------Å-----------Å----------------------------------------------------------´
|ASP7 |DFHSPP |Resource manager rejected request |
Ã-------Å-----------Å----------------------------------------------------------´
|ASP8 |DFHSPP |Sync point rollback not supported |
Ã-------Å-----------Å----------------------------------------------------------´
|ASP9 |DFHSPP |Free TCTTE failed |
Ã-------Å-----------Å----------------------------------------------------------´
|ASRA |DFHSRP |Program interrupt |
Ã-------Å-----------Å----------------------------------------------------------´
|ASRB |DFHSRP |Operating system abend |
Ã-------Å-----------Å----------------------------------------------------------´
|ASRC |DFHSRP |Interrupt in PL/I program |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCA |DFHZARQ |DFHTC issued during quiesce |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 122

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCB |DFHZARQ |Two consecutive writes or reads without intervening wait |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCC |DFHZARQ |More than one write or read |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCD |DFHZDSP, |No support for VTAM or ZCP function |
| |DFHZERH | |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCE |DFHZARQ |No TIOA for write |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCF |DFHZCRQ |Illegal DFHTC CTYPE macro |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCG |DFHZARQ |Illegal read or write |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCH |DFHZLOC |Transaction purged |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCI |DFHZLOC |Transaction purged |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCJ |DHZATD |Illegal autoinstall invocation |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCK |DFHZARQ |Illegal write |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCL |DFHZARQ |Error during auto journaling or auto logging |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCM |DFHZDWE, |Error writing sync point |
| |DFHZLOC | |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCN |DFHZSUP |Error during auto journaling or auto logging |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCO |DFHZARQ |Unsupported function |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCP |DFHZRLG |Error writing to system log |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCQ |DFHZRAQ |Temporary storage error |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCR |DFHZRAR |Temporary storage error |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCT |DFHZSUP |Surrogate TCTTE creation failed |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCU |DFHZARQ |Send in receive mode |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCV |DFHZARQ, |Application request to remote system failed |
| |DFHETL | |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCW |DFHZSUP |No DFHPCT TYPE=PROFILE |
Ã-------Å-----------Å----------------------------------------------------------´
|ATCY |DFHZARQ |Error processing inbound FMH |
Ã-------Å-----------Å----------------------------------------------------------´
|ATC1 |DFHTCRP |Terminal control restart task failure |
Ã-------Å-----------Å----------------------------------------------------------´
|ATDD |DFHTDP |Transient data destination is disabled |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 123

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|ATDI |DFHTDP |Illegal transient data destination type |
Ã-------Å-----------Å----------------------------------------------------------´
|ATDL |DFHTDP |Error writing to system log |
Ã-------Å-----------Å----------------------------------------------------------´
|ATDT |DFHTDP |Invalid transient data request |
Ã-------Å-----------Å----------------------------------------------------------´
|ATDV |DFHTDP |Additional information for ATDD |
Ã-------Å-----------Å----------------------------------------------------------´
|ATDY |DFHTDRP |Transient data initialization failed |
Ã-------Å-----------Å----------------------------------------------------------´
|ATDZ |DFHTDRP |CICS function failed |
Ã-------Å-----------Å----------------------------------------------------------´
|ATNA |DFHZNAC |NACP identifier entered, but no error |
Ã-------Å-----------Å----------------------------------------------------------´
|ATND |DFHZARQ |Task termination postponed |
Ã-------Å-----------Å----------------------------------------------------------´
|ATNI |DFHZNAC |Task terminated by node error program |
Ã-------Å-----------Å----------------------------------------------------------´
|ATRA |DFHTRP |Task termination requested by DFHTRAP |
Ã-------Å-----------Å----------------------------------------------------------´
|ATSA |DFHTSRP |Temporary storage restart task failure |
Ã-------Å-----------Å----------------------------------------------------------´
|ATSB |DFHTSP |Temporary storage restart task failure |
Ã-------Å-----------Å----------------------------------------------------------´
|ATSL |DFHTSP |Error writing to sys log |
Ã-------Å-----------Å----------------------------------------------------------´
|ATSP |DFHTSP |DATAID currently in use, or purge not synchronized |
Ã-------Å-----------Å----------------------------------------------------------´
|ATSS |DFHTSP |Error processing VSAM request |
Ã-------Å-----------Å----------------------------------------------------------´
|AVAA |DFHVAP |CVST illegally entered |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFA |DFHXFP |File control request keylength zero |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFB |DFHXFP |Illegal FMH type |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFC |DFHXFP |Illegal request |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFD |DFHXFP |Illeral req for remote sys |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFE |DFHXFP |Transformation does not exist |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFF |DFHXFP |Illegal queue organization |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFG |DFHXFP |Illegal arq no. in FMH data |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFH |DFHXFP |Illegal arq in FMH data |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFI |DFHXFP |Zero data length for TD req |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 124

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFJ |DFHXFP |Non-SNA error code |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFK |DFHXFP |DL/I request not supported |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFL |DFHXFP |Null chain of data received |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFM |DFHXFP |SYSIDERR condition reaised |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFO |DFHXFP |Check on DS and DBA parameters failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFP |DFHXFP |No second FMH received |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFQ |DFHXFP |FMH too short or too long |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFR |DFHXFP |Data too long |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFS |DFHXFP |Path call to retrieve large segments, or excessive |
| | |expansion of segments |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFT |DFHXFP |I/O area too large |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFU |DFHXFP |Invalid two-level cursor |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFV |DFHXFP |Unsupported local data bases |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFW |DFHXFP |No length field in read for update |
Ã-------Å-----------Å----------------------------------------------------------´
|AXFX |DFHXFP |Remote system does not support full syncpoint protocole |
Ã-------Å-----------Å----------------------------------------------------------´
|AXSA |DFHXSP |Security control task failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AXTA |DFHXTP |Data length calculation failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AXTB |DFHXTP |Get TIOA failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AXTC |DFHXTP |Data transform failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AXTD |DFHXTP |No TIOA failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AXTE |DFHXTP |Data not long enough |
Ã-------Å-----------Å----------------------------------------------------------´
|AXTF |DFHXTP |No relay process FMH received |
Ã-------Å-----------Å----------------------------------------------------------´
|AXTG |DFHXTP |Data transform failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AXTH |DFHXTP |Term1 ID not found |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCA |DFHETL, |Conversation state conflict |
| |DFHZARM | |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 125

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCB |DFHZARM |Error data not received or illegal |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCC |DFHZARM |Unsupported function management data |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCD |DFHETL, |Invalid data length received |
| |DFHZARM | |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCE |DFHETL, |Length received too large |
| |DFHZARM | |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCF |DFHZARM |Invalid request to DFHZARL |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCG |DFHZARM |Invalid TCTTE |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCH |DFHETL, |Remote system violated LU6.2 architecture |
| |DFHZARM | |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCI |DFHZARM, |Invalid sync level |
| |DFHZARQ | |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCJ |DFHZARM |Structured field not supported |
Ã-------Å-----------Å----------------------------------------------------------´
|AZCP |DFHZSUP |Allocation request not satisfied |
Ã-------Å-----------Å----------------------------------------------------------´
|AZI1 |DFHZARQ |IRC transmission protocol violated |
Ã-------Å-----------Å----------------------------------------------------------´
|AZI2 |DFHZARQ |IRC transmission failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AZI3 |DFHZARQ |Conversation failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AZI4 |DFHZARQ |IRC link to connected transaction down |
Ã-------Å-----------Å----------------------------------------------------------´
|AZI5 |DFHZARQ |IRC input violated protocol |
Ã-------Å-----------Å----------------------------------------------------------´
|AZI6 |DFHZARQ |IRC connected transaction abended |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTA |DFHZTSP |Principal facility not terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTB |DFHZTSP |Error reponse from DFHXTP |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTC |DFHZTSP |Error reponse from DFHXTP |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTD |DFHZTSP |Error reponse from DFHXTP |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTE |DFHZTSP |Error reponse from DFHXTP |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTG |DFHZTSP |Principal facility not intersystem TCTTE |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTH |DFHZTSP |Error response from remote request |
└-------Á-----------Á----------------------------------------------------------┘
Pag. 126

ú-------Â-----------Â----------------------------------------------------------┐
|Abend |Module |Description |
|Code | | |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTI |DFHZTSP |Term1 not defined |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTJ |DFHZTSP |VTAM request no non-VTAM terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTK |DFHZTSP |non-VTAM request on VTAM terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTL |DFHZTSP |Request to invalid terminal |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTM |DFHZTSP |Data had no FMH |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTN |DFHZTSP |conversation terminated |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTO |DFHZTSP |TCTTE ownership chain error |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTP |DFHZTSP |BMS STORE request failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTQ |DFHZTSP |Invalid BMS data received |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTR |DFHZTSP |BMS PAGEOUT request failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTS |DFHZTSP |Data ship failed |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTU |DFHZTSP |Link TCTTE not owned after sync point |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTV |DFHZTSP |Invalid FMH received |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTW |DFHZTSP |Attach request to task already runnning |
Ã-------Å-----------Å----------------------------------------------------------´
|AZTX |DFHZTSP |Attach request to task already in routing session |
Ã-------Å-----------Å----------------------------------------------------------´
|DHxx |DFHEDP |EXEC DLI error or invalid status code, xx=status code |
Ã-------Å-----------Å----------------------------------------------------------´
|DSNC | - |DB2 abend code |
Ã-------Å-----------Å----------------------------------------------------------´
|0100 |DFHEXP, |Translator error opening listing data ser |
| |DFHEPP, | |
| |DFHEAP | |
Ã-------Å-----------Å----------------------------------------------------------´
|0101 |DFHEXP, |Translator program check |
| |DFHEPP, | |
| |DFHEAP | |
└-------Á-----------Á----------------------------------------------------------┘

Observação Para uma descrição completa dos códigos de ABEND, veja o ma-
nual: CICS/OS/VS Messages and Codes (SC33-0226).
Pag. 127

A P Ò N D I C E D

Conteúdo do INCLUDE DFHBMSCA

Este INCLUDE contém as declarações de vari veis inicializados com os atribu-


tos de campos de telas. Utilizados para a mudança de atributos durante a
execução da transação, sobrepondo os atributos definidos na criação dos mapas.

ú------------------------------------------------------------------------------┐
|/********************************************************************/ |
|/* */ |
|/*MODULE NAME = DFHBMSCA */ |
|/* */ |
|/*DESCRIPTIVE NAME = C.I.C.S./VS BMS CONSTANTS */ |
|/* */ |
|/*COPYRIGHT = 5746-XX3 (C) COPYRIGHT IBM CORP. 1975,1982 */ |
|/* AND 5740-XX1 (C) COPYRIGHT IBM CORP. 1975,1982 */ |
|/* LICENSED MATERIAL - PROGRAM PROPERTY OF IBM */ |
|/* REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083 */ |
|/* */ |
|/*STATUS = 1.6.0 */ |
|/* */ |
|/*FUNCTION = DEFINE CONSTANTS FOR SETTING AND TESTING MAP */ |
|/* FIELD AND TEXT DATA */ |
|/* */ |
|/*NOTES : */ |
|/* DEPENDENCIES = S/370 */ |
|/* RESTRICTIONS = NONE */ |
|/* REGISTER CONVENTIONS = NOT APPLICABLE */ |
|/* PATCH LABEL = NONE */ |
|/* MODULE TYPE = COPYBOOK */ |
|/* PROCESSOR = PL/I */ |
|/* MODULE SIZE = NOT APPLICABLE */ |
|/* ATTRIBUTES = NOT APPLICABLE */ |
|/* */ |
|/* */ |
|/*CHANGE ACTIVITY : */ |
|/* $SEG(DFHBMSCA),COMP(BMS),PROD(CICS/VS) : */ |
|/* */ |
|/* PN= REASON REL YYMMDD HDXIII : REMARKS */ |
|/* $01= A07073,160,820322,HD7MBE: APAR 07073 (OS) */ |
|/* $D1= I01252,160,8101,HDCPH: TRIGGER FIELD SUPPORT */ |
|/* $D2 RESERVED FOR DCR */ |
|/* $D3 RESERVED FOR DCR */ |
|/* $H1 RESERVED FOR HARDWARE SUPPORT */ |
|/* $H2 RESERVED FOR HARDWARE SUPPORT */ |
|/* $H3 RESERVED FOR HARDWARE SUPPORT */ |
|/* $L1 RESERVED FOR LINE ITEM */ |
|/* $L2 RESERVED FOR LINE ITEM */ |
|/* $L3 RESERVED FOR LINE ITEM */ |
└------------------------------------------------------------------------------┘
Pag. 128

ú------------------------------------------------------------------------------┐
|/* $L4 RESERVED FOR LINE ITEM */ |
|/* $L5 RESERVED FOR LINE ITEM */ |
|/* $L6 RESERVED FOR LINE ITEM */ |
|/* $P1 RESERVED FOR PTM */ |
|/* $P2 RESERVED FOR PTM */ |
|/* $P3 RESERVED FOR PTM */ |
|/* */ |
|/********************************************************************/ |
| DECLARE |
| (DFHBMPEM CHAR (1) INIT ('') /* PRINTER EOM */ |
| ,DFHBMPNL CHAR (1) INIT ('ú') /* PRINTER NL */ |
| ,DFHBMASK CHAR (1) INIT ('0') /* AUTO SKIP */ |
| ,DFHBMUNP CHAR (1) INIT (' ') /* UNPROTECTED */ |
| ,DFHBMUNN CHAR (1) INIT ('&') /* UNPROT + NUM */ |
| ,DFHBMPRO CHAR (1) INIT ('-') /* PROTECTED */ |
| ,DFHBMBRY CHAR (1) INIT ('H') /* BRIGHT */ |
| ,DFHBMDAR CHAR (1) INIT ('<') /* DARK */ |
| ,DFHBMFSE CHAR (1) INIT ('A') /* MDT SET */ |
| ,DFHBMPRF CHAR (1) INIT ('/') /* PROT + MDT SET */ |
| ,DFHBMASF CHAR (1) INIT ('1') /* ASKP+MDT */ |
| ,DFHBMASB CHAR (1) INIT ('8') /* AUTO + BRIGHT */ |
| /* FIELD FLAG VALUE SET BY INPUT MAPPING */ |
| ,DFHBMEOF CHAR (1) INIT (' €') /* FIELD ERASED */ |
| /* FIELD DATA VALUE SET BY INPUT MAPPING */ |
| ,DFHBMDET CHAR (1) INIT ('Ÿ') /* FIELD DETECTED */ |
| /* CODE FOR SA ORDER */ |
| ,DFHSA CHAR (1) INIT ('´') /* SA ORDER (X'28')*/ |
| /* CODE FOR ERROR CODE */ |
| ,DFHERROR CHAR (1) INIT ('
) /* ERROR CODE-X'3F'*/ |
| /* EXTENDED ATTRIBUTE TYPE CODES */ |
| ,DFHCOLOR CHAR (1) INIT ('â') /* COLOR (X'42')*/ |
| ,DFHPS CHAR (1) INIT ('„') /* PS (X'43')*/ |
| ,DFHHLT CHAR (1) INIT (' ') /* HIGHLIGHT(X'41')*/ |
| ,DFH3270 CHAR (1) INIT ('{') /* 3270 (X'C0')*/ |
| ,DFHVAL CHAR (1) INIT ('A') /* VALIDT'N (X'C1')*/ |
| ,DFHALL CHAR (1) INIT (' ') /* ALL , RESET TO */ |
| /* DEFAULT (X'00')*/ |
| /* DEFAULT ATTRIBUTE CODE - TO SET ATTRIBUTES IN MAPS */ |
| ,DFHDFT CHAR (1) INIT ('Ÿ') /* DEFAULT (X'FF')*/ |
| /* COLOR ATTRIBUTE VALUES */ |
| ,DFHDFCOL CHAR (1) INIT (' ') /* DEFAULT */ |
| ,DFHBLUE CHAR (1) INIT ('1') /* BLUE */ |
| ,DFHRED CHAR (1) INIT ('2') /* RED */ |
| ,DFHPINK CHAR (1) INIT ('3') /* PINK */ |
| ,DFHGREEN CHAR (1) INIT ('4') /* GREEN */ |
| ,DFHTURQ CHAR (1) INIT ('5') /* TURQUOISE */ |
| ,DFHYELLO CHAR (1) INIT ('6') /* YELLOW */ |
| ,DFHNEUTR CHAR (1) INIT ('7') /* NEUTRAL */ |
| /* BASE PS ATTRIBUTE VALUE */ |
| ,DFHBASE CHAR (1) INIT (' ') /* BASE PS */ |
| /* HIGHLIGHT ATTRIBUTE VALUES */ |
| ,DFHDFHI CHAR (1) INIT (' ') /* NORMAL */ |
| ,DFHBLINK CHAR (1) INIT ('1') /* BLINK */ |
└------------------------------------------------------------------------------┘
Pag. 129

ú------------------------------------------------------------------------------┐
| ,DFHREVRS CHAR (1) INIT ('2') /* REVERSE VIDEO */ |
| ,DFHUNDLN CHAR (1) INIT ('4') /* UNDERSCORE */ |
| /* VALIDATION ATTRIBUTE VALUES */ |
| ,DFHMFIL CHAR (1) INIT ('Ü') /* MANDATORY FILL */ |
| ,DFHMENT CHAR (1) INIT ('') /* MANDATORY ENTER */ |
| ,DFHMFE CHAR (1) INIT ('Ã') /* MANDATORY FILL+ */ |
| /* MANDATORY ENTER*/ |
| /* ADDITIONAL ATTRIBUTES */ |
| ,DFHUNNOD CHAR (1) INIT ('(') /* UNPROTECTED */ |
| /* NON-DISPLAY */ |
| /* NON-PRINT */ |
| /* NON-DETECTABLE */ |
| /* MDT */ |
| |
| ,DFHUNIMD CHAR (1) INIT ('I') /* UNPROTECTED */ |
| /* ALPHA-INTENSIFY */ |
| /* LIGHT PEN DET. */ |
| /* MDT */ |
| |
| ,DFHUNNUM CHAR (1) INIT ('J') /* UNPROTECTED */ |
| /* NUMERIC */ |
| /* MDT */ |
| |
| ,DFHUNINT CHAR (1) INIT ('R') /* UNPROTECTED */ |
| /* NUMERIC */ |
| /* INTENSIFY */ |
| /* LIGHT PEN DET. */ |
| /* MDT */ |
| |
| ,DFHUNBRY CHAR (1) INIT ('Q') /* UNPROTECTED */ |
| /* NUMERIC */ |
| /* INTENSIFY */ |
| /* LIGHT PEN DET. */ |
| |
| ,DFHUNNON CHAR (1) INIT (')') /* UNPROTECTED */ |
| /* NUMERIC */ |
| /* NON-DISPLAY */ |
| /* NON-PRINT */ |
| /* NON-DETECTABLE */ |
| /* MDT */ |
| |
| ,DFHPROTI CHAR (1) INIT ('Y') /* PROTECTED */ |
| /* INTENSIFY */ |
| /* LIGHT PEN DET. */ |
| |
| ,DFHPROTN CHAR (1) INIT ('%') /* PROTECTED */ |
| /* NON-DISPLAY */ |
| /* NON-PRINT */ |
| /* NON-DETECTABLE */ |
| ,DFHMT CHAR (1) INIT (' ') /* TRIGGER */ |
| ,DFHMFT CHAR (1) INIT (' ') /* MANDATORY FILL+ */ |
| /* TRIGGER */ |
| ,DFHMET CHAR (1) INIT ('') /* MANDATORY ENTER+*/ |
└------------------------------------------------------------------------------┘
Pag. 130

ú------------------------------------------------------------------------------┐
| /* TRIGGER */ |
| ,DFHMFET CHAR (1) INIT (' €') /* MANDATORY FILL+ */ |
| /* MANDATORY ENTER+*/ |
| /* TRIGGER */ |
| ) STATIC INTERNAL; /* |
| * ãEAPARã ã01C*/ |
| /* */ |
| /* END OF ATTRIBUTES LIST */ |
| /* */ |
└------------------------------------------------------------------------------┘

Como este INCLUDE não possui todas as combinações possíveis de atributos,


devemos utilizar o seguinte procedimento, caso seja necess rio alguma combinação
que não exista neste INCLUDE.

ú------------------------------------------------------------------------------┐
| Vamos supor que estamos necessitando da seguinte combinação de |
| atributos : Protected + MDT set + Bright |
| |
| para tanto devemos fazer o seguinte : |
| |
| ú-----------------------------------------------------------------┐ |
| | UNSPEC(campo-destino) = UNSPEC (DFHBMPRO) | UNSPEC (DFHBMFSE) | | |
| | | UNSPEC (DFHBMBRY) ; | |
| | | | |
| | └---> Campo com o sufixo 'A' na declaração do | |
| | mapa lógico (geralmente). | |
| └-----------------------------------------------------------------┘ |
| |
| DFHBMPRO - atributo protegido |
| DFHBMFSE - atributo MDT set |
| DFHBMBRY - atributo brilhante |
| |
| UNSPEC - BUILTIN que trata a vari vel entre parênteses como uma |
| sequência de BITS |
| |
| | - operação BOOLEANa 'OR'. No exemplo acima executa o seguinte: |
| |
| ú-------------------------------------------------------------┐ |
| | '01100000' - sequência de BITs do atributo PROTECTED | |
| | '11001000' - sequência de BITs do atributo BRIGHT | |
| | '11000001' - sequência de BITs do atributo MDT SET | |
| | ------------ | |
| | '11101001' | |
| | resultado da operação 'OR' (BOOLEANa) que representa a | |
| | combinação de todos os atributos que foram submetidos | |
| | a esta operação. | |
| └-------------------------------------------------------------┘ |
└------------------------------------------------------------------------------┘
Pag. 131

A P Ò N D I C E E

Conteúdo do INCLUDE DFHAID

Este INCLUDE contém as declarações de vari veis inicializados com os valores


em hexadecimal correspondente a cada tecla de função (PFs, PAs, ENTER e CLEAR)
reconhecidos pelo CICS/VS.

ú------------------------------------------------------------------------------┐
|/********************************************************************/ |
|/* */ |
|/*MODULE NAME = DFHAID */ |
|/* */ |
|/*DESCRIPTIVE NAME = C.I.C.S./VS 3270 AID VALUES */ |
|/* */ |
|/*COPYRIGHT = 5746-XX3 COPYRIGHT IBM CORP. 1975,1982 */ |
|/* AND 5740-XX1 COPYRIGHT IBM CORP. 1975,1982 */ |
|/* REFER TO INSTRUCTIONS ON COPYRIGHT NOTICE, */ |
|/* FORM NO. G120-2083 */ |
|/* */ |
|/*STATUS = 1.6.0 */ |
|/* */ |
|/*FUNCTION = DEFINES THE STANDARD 3270 AID VALUES */ |
|/* */ |
|/*EXTERNAL REFERENCES : */ |
|/* .... */ |
|/* */ |
|/*TABLES : */ |
|/* .... */ |
|/* */ |
|/*MACROS : */ |
|/* .... */ |
|/* */ |
|/*CHANGE ACTIVITY : */ |
|/* $SEG(DFHAID),COMP(TCP),PROD(CICS/VS): */ |
|/* */ |
|/* PN= REASON REL YYMMDD HDXIII : REMARKS */ |
|/*$D1 RESERVED FOR DCR */ |
|/*$D2 RESERVED FOR DCR */ |
|/*$D3 RESERVED FOR DCR */ |
|/*$H1= 5E2,160,8009,HDCPH: CICS/VS 1.6 PARTITION SUPPORT */ |
|/*$H2 RESERVED FOR HARDWARE SUPPORT */ |
|/*$H3 RESERVED FOR HARDWARE SUPPORT */ |
|/*$L1 RESERVED FOR LINE ITEM */ |
|/*$L2 RESERVED FOR LINE ITEM */ |
|/*$L3 RESERVED FOR LINE ITEM */ |
|/*$L4 RESERVED FOR LINE ITEM */ |
|/*$L5 RESERVED FOR LINE ITEM */ |
|/*$L6 RESERVED FOR LINE ITEM */ |
|/*$P1 RESERVED FOR PTM */ |
└------------------------------------------------------------------------------┘
Pag. 132

ú------------------------------------------------------------------------------┐
|/*$P2 RESERVED FOR PTM */ |
|/*$P3 RESERVED FOR PTM */ |
|/* */ |
|/********************************************************************/ |
| DECLARE |
| DFHENTER CHAR (1) INIT(''''), |
| DFHCLEAR CHAR (1) INIT('_'), |
| DFHCLRP CHAR (1) INIT('µ'), /* ãE5E2C ãH1A*/ |
| DFHPEN CHAR (1) INIT('='), |
| DFHOPID CHAR (1) INIT('W'), |
| DFHMSRE CHAR (1) INIT('X'), |
| DFHSTRF CHAR (1) INIT('h'), |
| DFHTRIG CHAR (1) INIT('"'), |
| DFHPA1 CHAR (1) INIT('%'), |
| DFHPA2 CHAR (1) INIT('>'), |
| DFHPA3 CHAR (1) INIT(','), |
| DFHPF1 CHAR (1) INIT('1'), |
| DFHPF2 CHAR (1) INIT('2'), |
| DFHPF3 CHAR (1) INIT('3'), |
| DFHPF4 CHAR (1) INIT('4'), |
| DFHPF5 CHAR (1) INIT('5'), |
| DFHPF6 CHAR (1) INIT('6'), |
| DFHPF7 CHAR (1) INIT('7'), |
| DFHPF8 CHAR (1) INIT('8'), |
| DFHPF9 CHAR (1) INIT('9'), |
| DFHPF10 CHAR (1) INIT(':'), |
| DFHPF11 CHAR (1) INIT('ú'), |
| DFHPF12 CHAR (1) INIT('ã'), |
| DFHPF13 CHAR (1) INIT('A'), |
| DFHPF14 CHAR (1) INIT('B'), |
| DFHPF15 CHAR (1) INIT('C'), |
| DFHPF16 CHAR (1) INIT('D'), |
| DFHPF17 CHAR (1) INIT('E'), |
| DFHPF18 CHAR (1) INIT('F'), |
| DFHPF19 CHAR (1) INIT('G'), |
| DFHPF20 CHAR (1) INIT('H'), |
| DFHPF21 CHAR (1) INIT('I'), |
| DFHPF22 CHAR (1) INIT('ç'), |
| DFHPF23 CHAR (1) INIT('.'), |
| DFHPF24 CHAR (1) INIT('<'); |
└------------------------------------------------------------------------------┘

Estas vari veis são utilizadas para confrontar o conteúdo da vari vel EIBAID
(fornecido pelo CICS/VS no bloco EIB) para saber a tecla utilizada para executar
a transação.

Para tanto devemos fazer o seguinte:


Pag. 133

ú------------------------------------------------------------------------------┐
| Exemplo 1) IF (EIBAID = DFHENTER) THEN |
| DO; |
| /* tratamento da tecla ENTER */ |
| CALL TRATA_ENTER; |
| END; |
| ELSE |
| DO; |
| /* tratamento de outras teclas */ |
| CALL TRATA_DEMAIS_TECLAS; |
| END; |
| |
| Exemplo 2) SELECT (EIBAID); |
| WHEN (DFHPF3,DFHPF15) |
| DO; |
| /* tratamento da tecla PF3 e PF15 */ |
| CALL TRATA_PF3_PF15; |
| END; |
| WHEN (DFHENTER) |
| DO; |
| /* tratamento da tecla ENTER */ |
| CALL TRATA_ENTER; |
| END; |
| OTHERWISE |
| DO; |
| /* tratamento de outras teclas */ |
| CALL TRATA_DEMAIS_TECLAS; |
| END; |
| END; |
└------------------------------------------------------------------------------┘

Observação: Podemos ainda checar a tecla utilizada via comando 'HANDLE AID' ex-
plicado na próxima p gina.
Pag. 134

Comando HANDLE AID

Comando utilizado para a verificação da tecla de função pressionada para


executar o programa.

ú------------------------------------------------------------------------------┐
| |
| EXEC CICS HANDLE AID opção { (label) } |
| . . . ; |
| |
└------------------------------------------------------------------------------┘

opção - Palavras chaves descritas abaixo que identifica a tecla de função utili-
zada para executar uma transação:

ANYKEY - Identifica as seguintes teclas (com exceção da tecla EN-


TER): PA1 a PA3, PF1 a PF24 ou CLEAR.

ENTER - tecla ENTER.

PA1 a PA3 - teclas PA1 a PA3.

PF1 a PF24 - teclas de funções de PF1 a PF24.

label - nome de uma 'PROC' interna no programa de aplicação ao qual o CICS/VS


dever transferior temporariamente o controle da execução, de acordo com
a opção e a tecla utilizada para executar a transação. Logo após a
execução da 'PROC' o controle ser retransferido para a próxima
instrução depois do RECEIVE que causou o desvio para o comando HANDLE
AID.

Para que este comando faça efeito deve se seguir os seguintes passos:

1. O fluxo da execução deve passar pelo menos uma vez por este comando para que
a condição fique ativa. A condição ficar ativa at‚ o t‚rmino da execução da
transação, ou at‚ que seja emitido um novo comando HANDLE AID.

2. O fluxo da execução só ser transferido para o comando HANDLE AID quando da


execução do comando RECEIVE.

Este comando ser desativado quando for executado um outro comando HANDLE AID
sem a especificação de nenhuma opção:

ú------------------------------------------------------------------------------┐
| EXEC CICS HANDLE AID; |
└------------------------------------------------------------------------------┘

Quando da utilização da tecla CLEAR, o comando RECEIVE poder sair pela


condição 'MAPFAIL' na execução deste. se não for tratado. Mas se especificado o
Pag. 135

comando HANDLE AID CLEAR e o comando HANDLE CONDITION MAPFAIL, o primeiro possui
prioridade sobre o segundo na transferência do fluxo de execução (ver quadro a
seguir).

ú------------------------------------------------------------------------------┐
| ú-------┐ |
| |XXXXXXX| |
| |YYYYYYY| ú┘ └┐ |
| └--Â-Â--┘ | | |
| ú--Á-Á--┐ └ÁÁ´| EXEC CICS HANDLE CONDITION |
| └-------┘ └┘ MAPFAIL(ERRO_MAPA); |
| | CLEAR ú-->EXEC CICS HANDLE AID CLEAR(TRATA_CLEAR)---┐ |
| V |(2) ENTER(TRATA_ENTER) | |
| ú-------┐ | ANYKEY(TRATA_OUTRAS); | |
| | |(1) └---EXEC CICS RECEIVE MAP('MAPAA') | |
| | |---------------> MAPSET('MAPAM') | |
| └--Â-Â--┘ MAPFAIL INTO(MAPAI); | |
| ú--Á-Á--┐ ú---->IF (MAPAI_CPO1I = 'ABC') THEN | |
| └-------┘ | DO; | |
| | . . . | |
| | END; | |
| | . . . (3)| |
| | TRATA_CLEAR : PROC; <---------------------┘ |
| |(4) . . . |
| └-----END TRATA_CLEAR; |
| |
└------------------------------------------------------------------------------┘

E X E M P L O
ú------------------------------------------------------------------------------┐
| |
| . . . |
| ú-> EXEC CICS HANDLE AID ENTER(TRATA_ENTER) ANYKEY(TRATA_PFS); |
| | . . . | | |
| └-- EXEC CICS RECEIVE MAP('MAPAA') | | |
| MAPSET('MAPAM') | | |
| INTO(MAPAI); | | |
| ú-----> . . . | | |
| | TRATA_ENTER : PROC; <----------------┘ | |
| | . . . | |
| Ã---END TRATA_ENTER; | |
| | TRATA_PFS : PROC; <------------------------------------┘ |
| | . . . |
| └---END TRATA_PFS; |
| |
└------------------------------------------------------------------------------┘
Pag. 136
Pag. 137

A P Ò N D I C E F

Compilação de fontes PL/I-CICS/MVS

Toda edição e compilação de fontes PL/I-CICS/MVS ‚ feito, em nossa


instalação, através do produto conhecido como "ROSCOE" (maiores detalhes consul-
tar o manual de ROSCOE).

Para a compilação deve-se usar as PROCs "MBCPA" ou "MBSCPA" catalogadas na


biblioteca "SYS3.PROCLIB", cuja expansão est mostrada a seguir:

ú------------------------------------------------------------------------------┐
| PROC "MBSCPA" |
| Utilizada para compilação de fonte PLI-CICS/MVS-ADASQL |
| |
|//********************************************************************* |
|//* COMPIL/LNKED - PL1/CICS/ADABAS SQL * 17/01/92 * * |
|//********************************************************************* |
|//MBSCPA PROC NIS=NIS, |
|// SOURCE=NS, |
|// GS=GS, |
|// LDT=T, |
|// CALL=CALL, |
|// MACRO=INCLUDE, |
|// SLIB='CP.PDSFT', SOURCE LIBRARY |
|// NBIBL=06, |
|// CLIB=CICS, CICS LIBRARIES |
|// PRMOD=SWJP02, * FRENTE/VERSO * |
|// MBOUT='LDT.MBOUT', * OUTPUT * |
|// MEMBER=INVALIDOOOO, |
|// AMB=MO, |
|// AC=0, |
|// AMODE=31, AMODE |
|// RMODE=ANY, RMODE |
|// DFHEILIS=DFHEILIS |
|//********************************************************************* |
|//* ------ VERIFICA APLICACAO VALIDA ---------- * |
|//********************************************************************* |
|//LDT EXEC PGM=MBQUALDT,PARM='01CALLLIVREPL1&MEMBER' |
|//MBOUT OUTPUT PRMODE=&PRMOD,CLASS=* |
|//STEPLIB DD DSN=CP.LOD06,DISP=SHR |
|//TABAPL DD DSN=CP.LDAPL,DISP=SHR |
|//MBENTRY DD DSN=&&ENTRY,DISP=(,PASS), |
|// UNIT=VIO,SPACE=(TRK,4),DCB=(RECFM=FB,BLKSIZE=240) |
|//********************************************************************* |
|//* ----- ---- * |
|//********************************************************************* |
|//GENE02 EXEC PGM=UTBGENER |
|//SYSUT1 DD DSN=&SLIB(&MEMBER),DISP=SHR |
|//SYSUT2 DD DSN=&&FONTE,DISP=(,PASS), |
|// UNIT=FIXO,SPACE=(TRK,(5,1)), |
|// DCB=(RECFM=FB,LRECL=80,BLKSIZE=?????) |
└------------------------------------------------------------------------------┘
Pag. 138

ú------------------------------------------------------------------------------┐
|//********************************************************************* |
|//* ----- ---- * |
|//********************************************************************* |
|//GENE03 EXEC PGM=UTBGENER |
|//SYSUT1 DD DSN=&&FONTE,DISP=(OLD,PASS) |
|//SYSUT2 DD SYSOUT=*,DCB=(RECFM=FBA,LRECL=80,BLKSIZE=800), |
|// OUTPUT=*.&MBOUT |
|//******************************************************************** |
|//* ---- PRE-COMPILADOR ADABAS SQL ---- * |
|//******************************************************************** |
|//ADASQL EXEC PGM=ADASQLP |
|//ADAúAMB DD DSN=DB.NCF&AMB,DISP=SHR |
|//DDPRINT DD SYSOUT=*,OUTPUT=*.&MBOUT |
|//STEPLIB DD DSN=ADABAS.SQL.USER.LOAD,DISP=SHR |
|// DD DSN=ADABAS.SQL.LOAD,DISP=SHR |
|// DD DSN=ADABAS.USER.LOAD.D,DISP=SHR |
|//ADAIN DD DSN=&&FONTE,DISP=(OLD,DELETE) |
|//ADAOUT DD DSN=&&TEMP,DISP=(,PASS),UNIT=VIO,SPACE=(CYL,3) |
|//SYSUT1 DD DSN=&&TEMP1,DISP=(,DELETE),UNIT=VIO,SPACE=(CYL,3) |
|//ADAGLOB DD DSN=ADABAS.SQL.USER.SOURCE(ADGLBCMO),DISP=SHR |
|//ADAMES DD SYSOUT=*,OUTPUT=*.&MBOUT |
|//SYSOUT DD SYSOUT=*,OUTPUT=*.&MBOUT |
|//SYSDBOUT DD SYSOUT=*,OUTPUT=*.&MBOUT |
|//********************************************************************* |
|//* ------ PL/I TRANSLATOR ---------- * |
|//********************************************************************* |
|//TRN EXEC PGM=DFHEPP1┐, |
|// PARM='&SOURCE,MAR(2,72,1),OM(2,72,1)' |
|//STEPLIB DD DSN=&CLIB..LOADLIB,DISP=SHR |
|//SYSPRINT DD SYSOUT=*,OUTPUT=*.&MBOUT |
|//SYSPUNCH DD DSN=&&SYSCIN,DISP=(,PASS), |
|// UNIT=VIO,SPACE=(400,(800,200)), |
|// DCB=BLKSIZE=400 |
|//SYSIN DD DSN=&&TEMP,DISP=SHR |
|//* |
|//********************************************************************* |
|//* ------ PL/I OPTMIZER COMPILER -------- * |
|//********************************************************************* |
|//PL1L EXEC PGM=IEL0AA,COND=((5,LT,TRN),(4,LT,ADASQL)), |
|// REGION=2048K, |
|// PARM='MAP,OPT(2),OBJECT,NODECK,&GS,&MACRO,&NIS' |
|//STEPLIB DD DSN=SYS1.PLICPTR,DISP=SHR |
|//SYBIBL DD DSN=CICS.PL1LIB,DISP=SHR |
|//SYSPRINT DD SYSOUT=*,OUTPUT=*.&MBOUT |
|//MAC01 DD DSN=CICS.PL1LIB,DISP=SHR,DCB=BLKSIZE=3200 |
|// DD DSN=CP.PDSFT,DISP=SHR |
|// DD DSN=CP.MAC01,DISP=SHR |
|// DD DSN=CP.MAC02,DISP=SHR |
|//TP DD DSN=CP.FTDT1,DISP=SHR |
|//MAP DD DSN=CP.MAPTS,DISP=SHR COPYBOOK MAPAS EM TESTE |
|// DD DSN=CP.MAPAS,DISP=SHR COPYBOOK MAPAS EM PRODUCAO |
|//SYSIN DD DSN=&&SYSCIN,DISP=(OLD,DELETE) |
└------------------------------------------------------------------------------┘
Pag. 139

ú------------------------------------------------------------------------------┐
|//SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS), |
|// UNIT=VIO,SPACE=(80,(2000,400)) |
|//SYSUT1 DD UNIT=VIO,DCB=BLKSIZE=1024, |
|// SPACE=(1024,(1800,180),,CONTIG) |
|//********************************************************************* |
|//* ------ LINKAGE EDITOR ---------- * |
|//********************************************************************* |
|//LKED EXEC PGM=IEWL,COND=((9,LT,PL1L),(4,LT,ADASQL)), |
|// PARM='XREF,LET,LIST,&CALL,RENT,AC=&AC,AMODE=&AMODE,RMODE=&RMODE' |
|//SYSLIB DD DSN=&CLIB..LOADLIB,DISP=SHR,DCB=BLKSIZE=32000 |
|// DD DSN=SYS1.PLIBASE,DISP=SHR |
|// DD DSN=CP.LD&LDT&NBIBL,DISP=SHR > ORDEM ALTERADA |
|// DD DSN=SYS2.PLIXLIB,DISP=SHR > ADAUSER (YAMADA) |
|// DD DSN=CP.LODZ1,DISP=SHR |
|// DD DSN=CP.LODZ2,DISP=SHR |
|// DD DSN=CP.LODZ3,DISP=SHR |
|// DD DSN=CP.LODZ4,DISP=SHR |
|// DD DSN=CP.LODZ5,DISP=SHR |
|// DD DSN=CP.LODZ6,DISP=SHR |
|// DD DSN=CP.LOD03,DISP=SHR |
|// DD DSN=CP.LOD07,DISP=SHR |
|// DD DSN=CP.LDT&NBIBL,DISP=SHR |
|// DD DSN=CP.LOD&NBIBL,DISP=SHR |
|// DD DSN=CP.LODMT,DISP=SHR AIMONE MAI/86. |
|// DD DSN=ADABAS.SQL.USER.LOAD,DISP=SHR |
|// DD DSN=ADABAS.SQL.LOAD,DISP=SHR |
|//SYSLMOD DD DSN=CP.LD&LDT.ZA(&MEMBER),DISP=SHR |
|//SYSUT1 DD UNIT=VIO,DCB=BLKSIZE=1024, |
|// SPACE=(1024,(400,40)) |
|//SYSPRINT DD SYSOUT=*,OUTPUT=*.&MBOUT |
|//SYSLIN DD DSN=CICS.PL1LIB(&DFHEILIS),DISP=SHR |
|//* RUTEA DD DSN=ADABAS.SQL.USER.SOURCE(ADINCSQL),DISP=SHR |
|// DD DSN=&&ENTRY,DISP=(OLD,DELETE) |
|// DD DSN=&&LOADSET,DISP=(OLD,DELETE) |
|// DD DDNAME=SYSIN |
|//B14 EXEC PGM=IEFBR14,COND=((777,NE,PL1L),(777,NE,LKED)), |
|// PARM='&NBIBL' |
|//* |
|//* ELIMINADA A BIBL CP.MAPTS DO DD MAC01 DO STEP PL1L - ORSI 29/06/87 |
|//* ELIMINADA A BIBL CP.LDT07 DO DD SYBIBL DO STEP LKED- ORSI 29/06/87 |
└------------------------------------------------------------------------------┘
Pag. 140

ú------------------------------------------------------------------------------┐
| PROC "MBCPA" |
| Utilizada para compilação de fonte PLI-CICS/MVS |
| ou PL/I-CICS/MVS-Macros ADABAS |
| |
|//MBCPA PROC NIS=NIS, |
|// SOURCE=NS, |
|// GS=GS, |
|// LDT=T, |
|// CALL=CALL, |
|// MACRO=INCLUDE, |
|// SLIB='CP.PDSFT', SOURCE LIBRARY |
|// NBIBL=ZA, PARAMETRO NAO USADO, TEM QUE SER ZA. |
|// CLIB=CICS, CICS LIBRARIES |
|// MEMBER=INVALIDOOOO |
|//********************************************************************* |
|//* ------ VERIFICA APLICACAO VALIDA ---------- * |
|//********************************************************************* |
|//LDT EXEC PGM=MBQUALDT,PARM='01CALLLIVREPL1&MEMBER' |
|//STEPLIB DD DSN=CP.LOD06,DISP=SHR |
|//TABAPL DD DSN=CP.LDAPL,DISP=SHR |
|//MBENTRY DD DSN=&&ENTRY,DISP=(,PASS), |
|// UNIT=VIO,SPACE=(TRK,4),DCB=BLKSIZE=240 |
|//********************************************************************* |
|//* ------ PL/I TRANSLATOR ---------- * |
|//********************************************************************* |
|//TRN EXEC PGM=DFHEPP1┐, |
|// PARM='&SOURCE,MAR(2,72,1),OM(2,72,1)' |
|//STEPLIB DD DSN=&CLIB..LOADLIB,DISP=SHR |
|//SYSPRINT DD SYSOUT=* |
|//SYSPUNCH DD DSN=&&SYSCIN,DISP=(,PASS), |
|// UNIT=FIXO,SPACE=(400,(800,200)), |
|// DCB=BLKSIZE=400 |
|//SYSIN DD DSN=&SLIB(&MEMBER),DISP=SHR |
|//********************************************************************* |
|//* ------ PL/I OPTMIZER COMPILER ---------- * |
|//********************************************************************* |
|//PL1L EXEC PGM=IEL0AA,COND=(5,LT,TRN), |
|// PARM='MAP,OPT(2),OBJECT,NODECK,&GS,&MACRO,&NIS' |
|//STEPLIB DD DSN=SYS1.PLICPTR,DISP=SHR |
|//SYSLIB DD DSN=ZA.PL1LIB,DISP=SHR |
|//SYSPRINT DD SYSOUT=* |
|//MAC01 DD DSN=ZA.PL1LIB,DISP=SHR,DCB=BLKSIZE=3200 |
|// DD DSN=CP.PDSFT,DISP=SHR |
|// DD DSN=CP.MAC01,DISP=SHR |
|// DD DSN=CP.MAC02,DISP=SHR |
|//TP DD DSN=CP.FTDT1,DISP=SHR |
|//MAP DD DSN=CP.MAPTS,DISP=SHR COPYBOOK MAPAS EM TESTE |
|// DD DSN=CP.MAPAS,DISP=SHR COPYBOOK MAPAS EM PRODUCAO |
|//SYSIN DD DSN=&&SYSCIN,DISP=(OLD,DELETE) |
|//SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS), |
|// UNIT=FIXO,SPACE=(80,(2000,400)) |
|//SYSUT1 DD UNIT=FIXO,DCB=BLKSIZE=1024, |
|// SPACE=(1024,(1800,180),,CONTIG) |
└------------------------------------------------------------------------------┘
Pag. 141

ú------------------------------------------------------------------------------┐
|//********************************************************************* |
|//* ------ LINKAGE EDITOR ---------- * |
|//********************************************************************* |
|//LKED EXEC PGM=IEWL,COND=(9,LT,PL1L), |
|// PARM='XREF,LET,LIST,&CALL,RENT' |
|//SYSLIB DD DSN=&CLIB..LOADLIB,DISP=SHR,DCB=BLKSIZE=32000 |
|// DD DSN=SYS1.PLIBASE,DISP=SHR |
|// DD DSN=CP.LD&LDT&NBIBL,DISP=SHR > ORDEM ALTERADA |
|// DD DSN=SYS2.PLIXLIB,DISP=SHR > ADAUSER (YAMADA) |
|// DD DSN=CP.LODZA,DISP=SHR |
|// DD DSN=CP.LOD07,DISP=SHR |
|// DD DSN=CP.LDT&NBIBL,DISP=SHR DANIELS 12/11/87 |
|// DD DSN=CP.LOD&NBIBL,DISP=SHR DANIELS 12/11/87 |
|// DD DSN=CP.LODMT,DISP=SHR AIMONE MAI/86. |
|//SYSLMOD DD DSN=CP.LD&LDT.ZA(&MEMBER),DISP=SHR |
|//SYSUT1 DD UNIT=FIXO,DCB=BLKSIZE=1024, |
|// SPACE=(1024,(400,40)) |
|//SYSPRINT DD SYSOUT=* |
|//SYSLIN DD DSN=ZA.PL1LIB(DFHEILIP),DISP=SHR |
|// DD DSN=&&ENTRY,DISP=(OLD,DELETE) |
|// DD DSN=&&LOADSET,DISP=(OLD,DELETE) |
|// DD DDNAME=SYSIN |
|//B14 EXEC PGM=IEFBR14,COND=((777,NE,PL1L),(777,NE,LKED)), |
|// PARM='&NBIBL' |
|//* |
|//* ELIMINADA A BIBL CP.MAPTS DO DD MAC01 DO STEP PL1L - ORSI 29/06/87 |
|//* ELIMINADA A BIBL CP.LDT07 DO DD SYSLIB DO STEP LKED- ORSI 29/06/87 |
|//* |
└------------------------------------------------------------------------------┘
Pag. 142

Para a utilização da PROC "MBCPA", deve se montar um JCL como mostrado a se-
guir e submetê-lo para execução via ROSCOE.

ú------------------------------------------------------------------------------┐
| //DI88ãXXX JOB (1,'TP=TNDS'),XXXXXXXX, |
| // REGION=0512K,MSGLEVEL=1,CLASS=J,MSGCLASS=R |
| /*JOBPARM R=1101,P=PROC03 |
| //COMPILA EXEC MBCPA,MEMBER=DIEXEM,SOURCE=S,MACRO='M', |
| // NIS='NIS',NBIBL=03 |
| //TRN.SYSPRINT DD SYSOUT=(*,,BACK) |
| //TRN.SYSIN DD * |
| +INC DIEXEM |
| //PL1L.SYSPRINT DD SYSOUT=(*,,BACK) |
| //LKED.SYSPRINT DD SYSOUT=(*,,BACK) |
| onde : |
| MEMBER= ... nome com o qual o módulo objeto ser linkeditado na bi- |
| blioteca de módulos. |
| NBIBL= ... número da biblioteca associado ao sistema onde o fonte e |
| o módulo do programa ser armazenado. |
| MACRO= ... 'M' caso o programa estiver utilizando a macros PL/I ou |
| macros de acesso ao ADABAS, senão omitir este parâmetro |
| simbólico. |
| +INC xxx ... 'xxx' nome do membro ROSCOE que contém o fonte do pro- |
| grama a ser compilado e linkeditado. De preferência que |
| o 'xxx' e o 'MEMBER=' seja o mesmo. |
└------------------------------------------------------------------------------┘

Para a utilização da PROC "MBSCPA", deve se montar um JCL como mostrado a se-
guir e submetê-lo para execução via ROSCOE.

ú------------------------------------------------------------------------------┐
| //DI88SCPA JOB (1,'TP=PNDT'),------,CLASS=C,MSGCLASS=R, |
| // MSGLEVEL=1,REGION=1024K |
| /*JOBPARM R=1103,P=PROC03 |
| //STEP01 EXEC MBSCPA,MEMBER=DIEXEM,NBIBL=03,MACRO=M |
| //GENE02.SYSUT1 DD DATA,DLM=$$ |
| +INC DIEXEM |
| $$ |
| //ADASQL.ADAGLOB DD |
| // DD DATA,DLM=$$ |
| MODE TRACE |
| $$ |
| onde : |
| MEMBER= ... nome com o qual o módulo objeto ser linkeditado na bi- |
| blioteca de módulos. |
| NBIBL= ... número da biblioteca associado ao sistema onde o fonte e |
| o módulo do programa ser armazenado. |
| MACRO= ... 'M' caso o programa estiver utilizando alguma macro |
| PL/I, senão omitir este parâmetro simbólico. |
| +INC xxx ... 'xxx' nome do membro ROSCOE que contém o fonte do pro- |
| grama a ser compilado e linkeditado. De preferência que |
| o 'xxx' e o 'MEMBER=' seja o mesmo. |
└------------------------------------------------------------------------------┘
Pag. 143

Execução de uma aplicação PL/I-CICS

Para a execução de uma aplicação PL/I-CICS em nossa instalação deve se seguir


os seguintes passos:

1. Compilar o fonte pelo ROSCOE, e verificar se esta correu normalmente.

2. Após a confirmação, acessar o CICS de desenvolvimento (APPLID=ZADA, em nossa


instalação).

Para acessar o CICS seguir os seguintes passos:


ú---------------------------------------------------------------------------┐
| para terminais locais (pr‚dio sede na PAULISTA) |
| 1) ú-----------------------------------------------------------┐ |
| |L ZADA ou /ZADA ou LOGON APPLID(ZADA) | |
| | | |
| | | |
| | | |
| |THIS TERMINAL IS LOGGED ON TO THE NETSOL - SP11 - | |
| | ou | |
| |THIS TERMINAL IS LOGGED ON TO THE NETSOL - SP12 - | |
| | | |
| | | |
| | | |
| | | |
| └-----------------------------------------------------------┘ |
| |
| para terminais remotos (Treinamento António de Godoy) |
| ú-----------------------------------------------------------┐ |
| |/ZADA ou LOGON APPLID(ZADA) | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| └-----------------------------------------------------------┘ |
└---------------------------------------------------------------------------┘
ú---------------------------------------------------------------------------┐
| primeira tela ao entrar no APPLID ZADA |
| 2) ú-----------------------------------------------------------┐ |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| |SPSIGN : SIGN-ON IS COMPLETE | |
| └-----------------------------------------------------------┘ |
└---------------------------------------------------------------------------┘
Pag. 144

3. Se o programa não foi executada no dia, digite o código da transação e te-


clar ENTER (seguir para a tela 7). Se esta j foi executada no mínino uma
vez no dia, seguir os seguintes passos:

ú---------------------------------------------------------------------------┐
| digitar o seguinte e teclar ENTER |
| 3) ú-----------------------------------------------------------┐ |
| |CEMT I PR (xxxxxxxx) | |
| | | | |
| | └-------> nome do programa | |
| | | |
| | | |
| | | |
| | | |
| |SPSIGN : SIGN-ON IS COMPLETE | |
| └-----------------------------------------------------------┘ |
└---------------------------------------------------------------------------┘

ú---------------------------------------------------------------------------┐
| O CICS sempre mantém o módulo que est ativo no momento. Co- |
| mo foi feito uma nova compilação, existe um novo módulo. Pa- |
| ra executar esta nova versão, devemos indicar isto ao CICS. |
| Para tanto fazer o seguinte: digitar 'NEW' ou 'N' no local |
| indicado pela seta e teclar ENTER. |
| 4) ú-----------------------------------------------------------┐ |
| |I PR (xxxxxxxx) ú----- | |
| |STATUS: RESULTS - OVERTYPE TO MODIFY V | |
| |Pro(xxxxxxxx) Len(00000) Res(000) use(000) Pli Ena N | |
| | | |
| | | |
| | | |
| | RESPONSE: NORMAL APPLID=ZADA| |
| |PF 1 HELP 3 END . . . | |
| └-----------------------------------------------------------┘ |
└---------------------------------------------------------------------------┘

ú---------------------------------------------------------------------------┐
| Se tudo correu normalmente no local onde foi digitado 'NEW' |
| ou 'N', ir aparecer 'NEW COPY' indicando que a operação foi |
| executada com sucesso. |
| Notar ainda que o campo 'Len' muda de valor indicando que o |
| novo módulo est ativo e pronto para a execução. |
| 5) ú-----------------------------------------------------------┐ |
| |I PR (xxxxxxxx) | |
| |STATUS: RESULTS - OVERTYPE TO MODIFY | |
| |Pro(xxxxxxxx) Len(00A96) Res(000) use(000) Pli Ena NEW COPY| |
| | | |
| | | |
| | | |
| | RESPONSE: NORMAL APPLID=ZADA| |
| |PF 1 HELP 3 END . . . | |
| └-----------------------------------------------------------┘ |
| Para sair, teclar PF3. |
└---------------------------------------------------------------------------┘
Pag. 145

ú---------------------------------------------------------------------------┐
| tela de saída da aplicação 'CEMT'. Teclar <ALT><CLEAR> para |
| limpar a tela, para poder executar a transação. |
| 6) ú-----------------------------------------------------------┐ |
| |CEMT I PR (xxxxxxxx) | |
| |STATUS: SESSION ENDED | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| └-----------------------------------------------------------┘ |
└---------------------------------------------------------------------------┘

ú---------------------------------------------------------------------------┐
| Digitar o código da transação associado ao programa, teclar |
| ENTER e pronto. |
| 7) ú-----------------------------------------------------------┐ |
| |YYYY | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| └-----------------------------------------------------------┘ |
└---------------------------------------------------------------------------┘

Para sair do CICS, digitar:


ú---------------------------------------------------------------------------┐
| ú-----------------------------------------------------------┐ |
| |SIGN OFF ou CSSF OFF | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| └-----------------------------------------------------------┘ |
└---------------------------------------------------------------------------┘
Pag. 146
Pag. 147

A P Ò N D I C E G

Comandos CICS/MVS

ú------------------------------------------------------------------------------┐
| ABEND {ABCODE(name)} {CANCEL} |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ADDRESS option (pointer) ... |
| |
| option: CSA, CWA, EIB, TCTUA, TWA |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ASKTIME {ABSTIME(data-area)} |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ASSIGN option (data-area) ... |
| |
| option: ABCODE, APPLID, BTRANS, COLOR, CWALENG, DELIMITER, |
| DESTCOUNT, DESTID, DESTIDLENG, EXTDS, FACILITY, |
| FCI, GCHARS, GCODES, HILIGHT, INPARTN, KATAKANA, |
| LDCMNEM, LDCNUM, MAPCOLUMN, MAPHEIGHT, MAPLINE, |
| MAPWIDTH, MSRCONTROL, NETNAME, NUMTAB, OPCLASS, |
| OPERKEYS, OPID, OPSECURITY, OUTLINE, PAGENUM, |
| PARTNPAGE, PARTNS, PARTNSET, PRINSYSID, PS, QNAME, |
| RESTART, SCRNHT, SCRNWD, SIGDATA, SOSI, STARTCODE, |
| STATIONID, SYSID, TCTUALENG, TELLERID, TERMCODE, |
| TWALENG, UNATTEND, USERID, VALIDATION |
| |
| condition: INVREQ |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| BIF EDIT FIELD(data-area) {LENGTH(data-value)} |
| |
| Condition: ROLLEDBACK |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| CANCEL {REQID(name) {TRANSID(name)} {SYSID(name)}} |
| |
| Condition: INVREQ, ISCINVREQ, NOTAUTH, NOTFND, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| DELAY {INTERVAL(hhmmss) / TIME(hhmmss)} |
| {REQID(name)} |
| |
| Condition: EXPIRED, INVREQ |
└------------------------------------------------------------------------------┘
Pag. 148

ú------------------------------------------------------------------------------┐
| DELETE FILE(name) {RIDFLD(data-area)} |
| {KEYLENGTH(data-value) {GENERIC {NUMREC(data-area)}}} |
| {SYSID(name)} {RBA / RRN} |
| |
| Condition: DISABLED, FILENOTFOUND, DUPKEY, ILLOGIC, INVREQ |
| IOERR, ISCINVREQ, NOTAUTH, NOTFND, NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| DELETEQ TD QUEUE(name) {SYSID(name)} |
| |
| Condition: ISCINVREQ, NOTAUTH, NOTOPEN, QIDERR, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| DELETEQ TS QUEUE(name) {SYSID(name)} |
| |
| Condition: ISCINVREQ, NOTAUTH, QIDERR, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| DEQ RESOURCE(data-area) {LENGTH(data-value)} |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| DUMP DUMPCODE(name) {FROM(data-area) LENGTH(data-value) / |
| FLENGTH(data-value)} {COMPLETE} {TASK} {STORAGE} |
| {PROGRAM} {TERMINAL} {TABLES} {DCT} {FCT} {PCT} {PPT} |
| {SIT} {TCT} |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ENDBR FILE(name) {REQID(data-value)} {SYSID(name)} |
| |
| Condition: DISABLED, FILENOTFOUND, ILLOGIC, INVREQ, ISCINVREQ, |
| NOTAUTH, NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ENQ RESOURCE(data-area) {LENGTH(data-value)} {NOSUSPEND} |
| |
| Condition: ENQBUSY |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ENTER TRACEID(data-value) {FROM(data-area)} {RESOURCE(name)} |
| {ENTRYNAME(name)} {ACCOUNT} {MONITOR} {PERFORM} |
| |
| Condition: INVREQ |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| EXTRACT LOGONMSG <INTO(data-area) / SET(pointer)} |
| LENGTH(data-area) |
└------------------------------------------------------------------------------┘
Pag. 149

ú------------------------------------------------------------------------------┐
| FORMATTIME ABSTIME(data-value) {YYDDD(data-area)} |
| {YYMMDD(data-area)} {YYDDMM(data-area)} |
| {DDMMYY(data-area)} {MMDDYY(data-area)} |
| {DATE(data-area)} {DATEFORM(DATa-area)} |
| {DATESEP {(data-area)}} {DAYCOUNT(data-area)} |
| {DAYOFWEEK(data-area)} {DAYOFMONTH(data-area)} |
| {MONTHOFYEAR(data-area)} {YEAR(data-area)} |
| {TIME(data-area) {TIMESEP {(data-area)}}} |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| FREE {CONVID(data-area) / SESSION(name)} |
| |
| Condition: INVREQ, NOTALLOC, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| FREEMAIN DATA(data-area) |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| GETMAIN SET(pointer) {LENGTH(data-value) / FLENGTH(data-value)} |
| {INITIMG(data-value)} {NOSUSPEND} |
| |
| Condition: LENGERR, NOSTG |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| HANDLE ABEND {PROGRAM(name) / LABEL(label) / CANCEL / RESET} |
| |
| Condition: PGMIDERR (PROGRAM only) |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| HANDLE AID option {(label)} ... |
| |
| option: ANYKEY, CLEAR, CLRPARTN, LIGHTPEN, OPERID, TRIGGER, |
| PA1, PA2, PA3, PF1 a PF24 |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| HANDLE CONDITION condition { (label) } ... |
| ou |
| HANDLE CONDITION ERROR { (label) } |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| IGNORE CONDITION condition condition ... |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE ABORT {DESTID(data-value) {DESTIDLENG(data-value)} / |
| {SUBADDR(data-value)} {CONSOLE / PRINT CARD / |
| WPMEDIA1 / WPMEDIA2 / WPMEDIA3 / WPMEDIA4}} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| |
| Condition: FUNCERR, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
Pag. 150

ú------------------------------------------------------------------------------┐
| ISSUE ADD DESTID(data-value) {DESTIDLENG(data-value)} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| FROM(data-area) {LENGTH(data-value)}} |
| {NUMREC(data-value)} {DEFRESP} {NOWAIT} |
| {RIDFLD(data-area) RRN} |
| |
| Condition: FUNCERR, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE DISCONNECT SESSION(name) |
| |
| Condition: NOTALLOC, TERMERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE END {DESTID(data-value) {DESTIDLENG(data-value)} / |
| {SUBADDR(data-value)} {CONSOLE / PRINT CARD / |
| WPMEDIA1 / WPMEDIA2 / WPMEDIA3 / WPMEDIA4}} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| |
| Condition: FUNCERR, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE ERASE DESTID(data-value) {DESTIDLENG(data-value)} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| RIDFLD(data-area) |
| {{KEYLENGTH(data-value)} |
| {KEYNUMBER(data-value)} / RRN} |
| {NUMREC(data-value)} {DEFRESP} {NOWAIT} |
| |
| Condition: FUNCERR, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE NOTE DESTID(data-value) {DESTIDLENG(data-value)} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| RRN RIDFLD(data-area) |
| |
| Condition: FUNCERR, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE PASS LUNAME(name / data-area) |
| {FROM(data-area LENGTH(dasta-value} |
| |
| Condition: INVREQ, LENGERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE PREPARE {CONVID(data-area) / SESSION(name)} |
| |
| Condition: INVREQ, NOTALLOC |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE PRINT |
└------------------------------------------------------------------------------┘
Pag. 151

ú------------------------------------------------------------------------------┐
| ISSUE QUERY DESTID(data-value) {DESTIDLENG(data-value)} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| |
| Condition: FUNCERR, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE RECEIVE {INTO(data-area) / SET(pointer)} |
| {LENGTH(data-area)}} |
| |
| Condition: DSSTAT, EODS, LENGERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE REPLACE DESTID(data-value) {DESTIDLENG(data-value)} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| FROM(data-area) {LENGTH(data-value)}} |
| {NUMREC(data-value)} RIDFLD(data-area) |
| {{KEYLENGTH(data-value)} |
| {KEYNUMBER(data-value)} / RRN} |
| {DEFRESP} {NOWAIT} |
| |
| Condition: FUNCERR, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE SEND {DESTID(data-value) {DESTIDLENG(data-value)} / |
| {SUBADDR(data-value)} {CONSOLE / PRINT CARD / |
| WPMEDIA1 / WPMEDIA2 / WPMEDIA3 / WPMEDIA4}} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| {LENGTH(data-value)} FROM(data-area) {NOWAIT} {DEFRESP} |
| |
| Condition: FUNCERR, IGREQCD, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ISSUE WAIT {DESTID(data-value) {DESTIDLENG(data-value)} / |
| {SUBADDR(data-value)} {CONSOLE / PRINT CARD / |
| WPMEDIA1 / WPMEDIA2 / WPMEDIA3 / WPMEDIA4}} |
| {VOLUME(data-value) {VOLUMELENG(data-value)}} |
| |
| Condition: FUNCERR, IGREQCD, SELNERR, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| JOURNAL JFILEID(data-value) JTYPEID(data-value) |
| FROM(data-area) {LENGTH(data-value)} {REQID(data-area)} |
| {PREFIX(data-value) {PFXLENG(data-value)}} {STARTIO} |
| {WAIT} {NOSUSPEND} |
| |
| Condition: IOERR, JIDERR, LENGERR, NOJBUFSP, NOTAUTH, NOTOPEN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| LINK PROGRAM(name) {COMMAREA(data-area) {LENGTH(data-value)}} |
| |
| Condition: NOTAUTH, PGMIDERR |
└------------------------------------------------------------------------------┘
Pag. 152

ú------------------------------------------------------------------------------┐
| LOAD PROGRAM(name) {SET(pointer)} |
| {LENGTH(data-value) / FLENGTH(data-value)} |
| {ENTRY(pointer)} {HOLD} |
| |
| Condition: NOTAUTH, PGMIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| PUSH HANDLE |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| POP HANDLE |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| POST {INTERVAL(hhmmss) / TIME(hhmmss)} SET(pointer) |
| {REQID(name)} |
| |
| Condition: EXPIRED, INVREQ |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| PURGE MESSAGE |
| |
| Condition: TSIOERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| READ FILE(name) <INTO(data-area) / SET(pointer)> |
| {LENGTH(data-area)} RIDFLD(data-area) |
| {KEYLENGTH(data-value) {GENERIC}} |
| {SYSID(name)} {RBN / RRN / DEBKEY / DEBREC} |
| {GTEQ / EQUAL} {UPDATE} |
| |
| Condition: DISABLED, FILENOTFOUND, DUPKEY, ILLOGIC, INVREQ, |
| IOERR, ISCINVREQ, LENGERR, NOTAUTH, NOTFND, |
| NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| READNEXT FILE(name) <INTO(data-area) / SET(pointer)> |
| {LENGTH(data-area)} RIDFLD(data-area) |
| {KEYLENGTH(data-value)} {REQID(data-value)} |
| {SYSID(name)} {RBA / RRN} |
| |
| Condition: DISABLED, FILENOTFOUND, DUPKEY, ENDFILE, ILLOGIC, |
| INVREQ, IOERR, ISCINVREQ, LENGERR, NOTAUTH, NOTFND, |
| NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| READPREV FILE(name) <INTO(data-area) / SET(pointer)> |
| {LENGTH(data-area)} RIDFLD(data-area) |
| {KEYLENGTH(data-value)} {REQID(data-value)} |
| {SYSID(name)} {RBA / RRN} |
| |
| Condition: DISABLED, FILENOTFOUND, DUPKEY, ENDFILE, ILLOGIC, |
| INVREQ, IOERR, ISCINVREQ, LENGERR, NOTAUTH, NOTFND, |
| NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
Pag. 153

ú------------------------------------------------------------------------------┐
| READQ TD QUEUE(name) <INTO(data-area) / SET(pointer)> |
| {LENGTH(data-value)} {SYSID(name)} {NOSUSPEND} |
| |
| Condition: IOERR, ISCINVREQ, LENGERR, NOTAUTH, NOTOPEN, |
| QBUSY, QIDERR, QZERO, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| READQ TS QUEUE(name) <INTO(data-area) / SET(pointer)> |
| {LENGTH(data-value)} |
| {NUMITEMS(data-area)} {ITEM(data-area) / NEXT} |
| {SYSID(name)} |
| |
| Condition: INVREQ, IOERR, ISCINVREQ, ITEMERR, LENGERR, |
| NOTAUTH, QIDERR, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| RECEIVE MAP(name) {MAPSET(name)} |
| {INTO(data-area) / SET(pointer)} |
| {FROM(data-area) |
| LENGTH(data-area) | TERMINAL {ASIS}} |
| {INPARTN(name)} |
| |
| Condition: EOC, EODS, INVMPSZ, INVPARTN, INVREQ, MAPFAIL, |
| PARTNFAIL, RDATT, UNEXPIN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| RECEIVE PARTN(data-area) <INTO(data-area) / SET(pointer)> |
| LENGTH(data-area) {ASIS} |
| |
| Condition: EOC, EODS, INVPARTN, INVREQ, LENGERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| RELEASE PROGRAM(name) |
| |
| Condition: NOTAUTH, PGMIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| RESETBR FILE(name) RIDFLD(data-area) |
| {KEYLENGTH(data-value) {GENERIC}} |
| {REQID(data-value)} {SYSID(name)} |
| {GTEQ / EQUAL} {RBA / RRN} |
| |
| Condition: DISABLED, FILENOTFOUND, ILLOGIC, INVREQ, IOERR, |
| ISCINVREQ, NOTAUTH, NOTFND, NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
Pag. 154

ú------------------------------------------------------------------------------┐
| RETRIEVE {INTO(data-area) / SET(pointer)} {LRNGTH(data-area)} |
| {RTRANSID(data-area)} {RTERMID(data-area)} |
| {QUEUE(name)} {WAIT} |
| |
| Condition: ENDDATA, ENVDEFERR, INVREQ, INVTSREQ, IOERR, |
| LENGERR, NOTAUTH, NOTFND |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| RETURN {TRANSID(name) {COMMAREA(data-area) |
| {LENGTH(data-value)}}} |
| |
| Condition: INVREQ, NOTAUTH |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| REWRITE FILE(name) FROM(data-area) {LENGTH(data-value)} |
| {SYSID(name)} |
| |
| Condition: DISABLED, FILENOTFOUND, DUPREC, ILLOGIC, |
| INVREQ, IOERR, ISCINVREQ, LENGERR, NOSPACE, |
| NOTAUTH, NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| ROUTE {INTERVAL(hhmmss) / TIME(hhmmss)} {ERRTERM {(name)}} |
| {TITLE(data-area)} {LIST(data-area)} |
| {OPCLASS(data-area)} {REQID(name)} |
| {LDC(name)} {NLEOM} |
| |
| Condition: INVERRTERM, INVLDC, INVREQ, RTEFAIL, RTESOME |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| SEND CONTROL {CURSOR {(data-value)}} {FORMFEED} |
| {ERASE / ERASEAUP} {PRINT} {FREEKB} {ALARM} |
| {FRSET} {MSR(data-value)} {OUTPARTN(name)} |
| {ACTPARTN(name)} {LDC(name)} 'ACCUM} |
| {SET(pointer) / PAGING / TERMINAL {WAIT / LAST}} |
| {REQID(name)} {L40 / L64 / L80 / HONEOM} |
| |
| Condition: IGREQCD, IGREQID, INVLDC, INVPARTN, INVREQ, |
| RETPAGE, TSIOERR, WRBRK |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| SEND MAP(name) {MAPSET(name)} |
| {FROM(data-area) LENGTH(data-value) / DATAONLY / MAPONLY} |
| {CURSOR {(data-value)}} {FORMFEED} {ERASE / ERASEAUP} |
| {PRINT} {FREEKB} {ALARM} {FRSET} {NLEOM} |
| {MSR(data-value)} {OUTPARTN(name)} {ACTPARTN(name)} |
| {FMHPARM(name)} {LDC(name)} {ACCUM} |
| {SET(pointer) / PAGING / TERMINAL {WAIT / LAST}} |
| {REQID(name)} {L40 / L64 / L80 / HONEOM} |
| |
| Condition: IGREQCD, IGREQID, INVLDC, INVMPSZ, INVPARTN, |
| INVREQ, OVERFLOW, RETPAGE, TSIOERR, WRBRK |
└------------------------------------------------------------------------------┘
Pag. 155

ú------------------------------------------------------------------------------┐
| SEND PAGE {RELEASE {TRANSID(name)} / RETAIN} |
| {TRAILER(data-area)} {SET(pointer)} |
| {AUTOPAGE {CURRENT / ALL} / NOAUTOPAGE} |
| {OPERPURGE} {FMHPARM} {LAST} |
| |
| Condition: IGREQCD, INVREQ, RETPAGE, TSIOERR, WRBRK |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| SEND PARTNSET {(name)} |
| |
| Condition: INVPARTNSET, INVREQ |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| SEND TEXT FROM(data-area) LENGTH(data-value) |
| {CURSOR {(data-value)}} {FORMFEED} {ERASE} |
| {PRINT} {FREEKB} {ALARM} {NLEOM} {LDC(name)} |
| {OUTPARTN(name)} {ACTPARTN(name)} {MSR(data-value)} |
| {SET(pointer) / PAGING / TERMINAL {WAIT / LAST}} |
| {REQID(name)} {HEADER(data-area)} {TRAILER(data-area)} |
| {JUSTIFY(data-value)/ JUSFIRST / JUSLAST} (ACCUM} |
| {L40 / L64 / L80 / HONEOM} |
| |
| Condition: IGREQCD, IGREQID, INVLDC, INVPARTN, INVREQ, |
| RETPAGE, TSIOERR, WRBRK |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| SEND TEXT MAPPED FROM(data-area) LENGTH(data-value) |
| {PAGING / TERMINAL {WAIT / LAST}} {REQID(name)} |
| |
| Condition: IGREQID, RETPAGE, TSIOERR, WRBRK |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| SEND TEXT NOEDIT FROM(data-area) LENGTH(data-value) |
| {ERASE} {PRINT} {FREEKB} {ALARM} {OUTPARTN(name)} |
| {PAGING / TERMINAL {WAIT / LAST}} {REQID(name)} |
| {L40 / L64 / L80 / HONEOM} |
| |
| Condition: IGREQCD, IGREQID, INVPARTN, TSIOERR, WRBRK |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| START {INTERVAL(hhmmss) / TIME(hhmmss)} TRANSID(name) |
| {REQID(name)} {FROM(data-area) {LENGTH(data-value) {FMH}} |
| {TERMID(name)} {SYSID(name)} {RTRANSID(name)} |
| {RTERMID(name)} {QUEUE(name)} {NOCHECK} {PROTECT} |
| |
| Condition: INVREQ, IOERR, ISCINVREQ, NOTAUTH, SYSIDERR, |
| TERMIDERR, TRANSIDERR |
└------------------------------------------------------------------------------┘
Pag. 156

ú------------------------------------------------------------------------------┐
| STARTBR FILE(name) RIDFLD(data-area) |
| {KENLENGTH(data-value) {GENERIC}} |
| {REQID(data-value)} {SYSID(name)} |
| {RBA / RRN / DEBKEY / DEBREC} {GTEQ / EQUAL} |
| |
| Condition: DISABLED, FILENOTFOUND, ILLOGIC, INVREQ, IOERR, |
| ISCINVREQ, NOTAUTH, NOTFND, NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| SUSPEND |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| SYNCPOINT {ROLLBACK} |
| |
| Condition: ROLLEDBACK |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| TRACE <ON / OFF> {SYSTEM} {EI} {USER} {SINGLE} |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| UNLOCK FILE(name) {SYSID(name)} |
| |
| Condition: DISABLED, FILENOTFOUND, ILLOGIC, IOERR, |
| ISCINVREQ, NOTAUTH, NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| WAIT EVENT ECADDR(pointer) |
| |
| Condition: INVREQ |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| WAIT JOURNAL JFILEID(data-value) {REQID(data-area)} {STARTIO} |
| |
| Condition: INVREQ, IOERR, JIDERR, NOTAUTH, NOTOPEN |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| WAIT SIGNAL |
| |
| Condition: SIGNAL |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| WRITE FILE(name) FROM(data-area) {LENGTH(data-value)} |
| RIDFLD(data-area) {KEYLENGTH(data-value)} |
| {SYSID(name)} {RBN / RRN} {MASSINSERT} |
| |
| Condition: DISABLED, FILENOTFOUND, DUPKEY, DUPREC, ILLOGIC, |
| INVREQ, IOERR, ISCINVREQ, LENGERR, NOTFND, NOSPACE, |
| NOTAUTH, NOTOPEN, SYSIDERR |
└------------------------------------------------------------------------------┘
Pag. 157

ú------------------------------------------------------------------------------┐
| WRITEQ TD QUEUE(name) FROM(data-area) {LENGTH(data-value)} |
| {SYSID(name)} |
| |
| Condition: IOERR, ISCINVREQ, LENGERR, NOSPACE, NOTAUTH, |
| NOTOPEN, QIDERR, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| WRITEQ TS QUEUE(name) FROM(data-area) {LENGTH(data-value)} |
| {ITEM(data-area) {REWRITE}} {SYSID(name)} |
| {MAIN / AUXILIARY} {NOSUSPEND} |
| |
| Condition: INVREQ, IOERR, ISCINVREQ, ITEMERR, NOSPACE, |
| NOTAUTH, QIDERR, SYSIDERR |
└------------------------------------------------------------------------------┘
ú------------------------------------------------------------------------------┐
| XCTL PROGRAM(name) {COMMAREA(data-area) {LENGTH(data-value)}} |
| |
| Condition: NOTAUTH, PGMIDERR |
└------------------------------------------------------------------------------┘
Pag. 158
Pag. 159

G L O S S µ R I O

ABEND: Abnormal end of task

Abnormal end of task: Fim anormal de uma tarefa. T‚rmino de uma tarefa antes da
sua conclusão normal, originada por uma condição de erro que os recursos de
recuperação de erros do sistema nao podem resolver enquanto se est executando a
tarefa. Abreviatura ABEND.

ACF/VTAM: Advanced Communication Facilities, Virtual Telecommunications Access


Method. Um conjunto de programas que controlam a comunicação entre terminais e
programas de aplicação que rodam sobre VSE/AF, OS/VS1, e MVS.

aplicação on-line: Tipo de aplicação de processamento de dados em que o compu-


tador se comunica diretamente com o fonte original e com o destino final dos
dados processados.

µrea dinâmica: 1. No sistema operacional do S/360, a parte da memória principal


subdividida em regi-es ou partições para utilização por parte dos programas que
executam as etapas de trabalho e as tarefas do sistema. A rea dinâmica
compreende toda a memória existente entre a rea de filas do supervisor e a rea
de módulos residentes na memória. 2. Em OS/VS, parte da memória virtual dividida
em regi-es ou partições atribuídas a etapas de trabalho e tarefas do sistema.

assembler: Ver montador

carregador: 1. Programa de processamento que combina numa só etapa de trabalho


as funções fundamentais de edição e carga do montador e a busca e carga de pro-
gramas. Aceita módulos objetos e módulos de carga criados pelo montador e gera
um código diretamente execut vel na memória principal. 2. Rotina supervisora
que recupera fases de programa da biblioteca imagem da memória e as carrega na
memória principal (DOS).

compilador: Programa que elabora um outro programa em linguagem de m quina


partindo de um programa de computador escrito em outra linguagem de programação,
utilizando, para tanto, a estrutura lógica completa do programa ou gerando mais
de uma instrução de m quina por cada declaração simbólica (ou ambas as coisas) e
efetuando, tamb‚m, a função de um montador.

concorrente: pertencente ou relativo a ocorrência de dois ou mais eventos ou


atividades dentro do mesmo lapso de tempo.

default: Valor assumido automaticamente, por falta de especificação.

DUMP: 1. Copiar o conteúdo da memória, no todo ou em parte, normalmente da


memória interna a um armazenamento externo. 2. Imprimir a totalidade ou parte do
conteúdo da memória de um computador. 3. Registrar num meio externo o conteúdo
da memória num momento determinado, com o fim de facilitar a detecção e a
an lise de erros ou equívocos do programa.

linkage editor: Um programa que prepara a saída de montadores de linguagem para


execução. Esse programa prepara todas as ligações e chamadas necess rias de
Pag. 160

pequenos programas existentes nos sistemas operacionais de forma a permitir a


realização de funções bastantes complexas de maneira mais simples sem
sobrecarregar a programação propriamente dita.

link edit: Combinar num só programa objeto duas ou mais seções de controle de
programa montadas separadamente.

loader: Ver carregador

load modulo: Ver módulo de carga

memória virtual: espaço endereç vel que parece ser, ao usuário, armazenamento
real, com base no qual instruções e dados são marcados para localizações de
armazenamento real.

módulo: Unidade de programa discreta e identific vel no tocante … compilação, a


combinação com outras unidades e a carga. Por exemplo: a entrada (ou saída) de
um montador, um compilador ou uma rotina executiva.

módulo de carga: Programa ou parte de um programa, formado por um ou mais


módulos objetos ou por outros módulos de carga, disposto no formato adequado
para que o programa de controle o carregue na memória e seja executado pela CPU.
O módulo de carga constitui a saída do montador.

módulo objeto: módulo formado pela saída de um montador ou compilador e que


constitui a entrada para o carregador (loader). Um módulo objeto consta de uma
ou mais seções de controle de forma relocaliz vel ou móvel, mas não execut vel,
e de dicion rios anexos de controle. Antes que possa ser executado no sistema,
ser processado pelo montador (assembler) ou carregador.

montador: Prepara ou elabora um programa em linguagem de m quina (linguagem ob-


jeto) partindo de um programa em linguagem simbólica, substituindo, para tanto,
os códigos de operação simbólicos por códigos de operação absolutos e os
endereços simbólicos por endereços absolutos ou relocaliz veis.

MVS: Multiple Virtual Storage. Um nome alternativo para o OS/VS2 Release 3.

on-line: 1. Termo que descreve o equipamento ou dispositivos perif‚ricos que


operam sob o controle direto da unidade central de processamento, ou em
comunicação direta com ela. 2. Relativo … possiblidade de que o usuário
desenvolva uma interação ou ação recíproca com o computador. 3. Voc bulo que
qualifica uma parte do sistema conectada ao conjunto por meio de dispositivos
autom ticos de comando e de intercâmbio de informações. 4. Em transmissão de
dados e em telegrafia, conceito que designa o estado em que se encontra o equi-
pamento ou terminal quando efetua a transmissão direta por linha, ao invés de
perfurar, por exemplo, uma fita de papel para sua posterior transmissão.

OS/VS: Operating System/Virtual Storage. Uma extensão comp tivel do sistema


operacional IBM System/360 que suporta realocação de hardware e facilidades de
controle do System/360.

partição: 1. Subdivisão da rea dinâmica de memória que se atribui a uma etapa


de trabalho ou a uma tarefa do sistema operacional. 2. rea da memória
principal reservada para determinado programa e para os dados com que este pro-
Pag. 161

grama opera. 3. Nos sistemas que operam com multiprogramação com um número fixo
de tarefas (MFT), rea da memória principal destinada a um trabalho (OS).

programa reentrante: Programa que pode ser executado para efetuar de forma
concorrente cada uma das tarefas de um grupo e para produzir v rios conjuntos de
resultados independentes.

rede: 1. S‚rie de pontos conectados entre si por linhas ou canais de


comunicação. 2. Em teleprocessamento, determinado número de linhas de
comunicação que ligam o computador com terminais remotos. 3. Interconexão de
componentes el‚tricos. 4. Termo gen‚rico que designa um conjunto de linhas de
telecomunicação.

região: 1. Subdivisão da rea ou memória dinâmica atribuída a uma etapa de


trabalho ou a uma tarefa do sistema (OS). 2. µrea contínua da memória
principal em que podem ser carregados segmentos independente das trajetórias
existentes em outras regi-es. 3. Na codificação relativa, grupo de endereços de
posição que se referem ao mesmo endereço de referência específica. 4. Grupo de
endereços de m quina que se referem a um endereço de base.

residente: 1. Pertencente ou relativo a um programa que reside de forma perma-


nente na memória. 2. Nos sistemas dotados de memória virtual, denominação que
qualifica os programas que residem permanentemente na memória virtual.

rotina reentrante: Rotina que pode ser usada concorrentemente por duas ou mais
tarefas.

terminal remoto: Uma unidade de controle de I/O e um ou mais dispositivos de


I/O ligados a um sistema por meio de uma unidade de controle de transmissão.

VSE: Virtual Storage Extended.

VTAM: Ver ACF/VTAM.

Você também pode gostar