Rascunhos e anotações prova certificação CICS
Recuperei alguns alfarrabios digitais, sem formatacao e sem explicações, foi o que achei no estado da arte!
C2200-407 : IBM CICS Z/OS Application Development
Assign - ThreadSafe
Máximo de 16 parametros (opçoes) por vez
Sempre retorna invreq (resp1 = 16) de CECI e em programas REXX
Readq TS – Semi ThreadSafe (se troca de CICS sem IPIC ja era, isto é, quase sempre que rotear)
Na leitura do NEXT pode ocorrer bigó se mais que um for ler junto, isto é, se o programa estiver definido como CONCURRENCY(THREADSAFE) or CONCURRENCY(REQUIRED) vai dar merda porque rodam em L8 e pode ter mais de 1 lendo a mesma TS ao memso tempo e o contador é unico por incrivel que pareça!
No SET para ponteiro
DATALOCATION(ANY) normal e DATALOCATION(BELOW) abaixo da linha de 16
Em TSMODEL não usa SYSID
SignON (nao entendi nada só sei que se ja esta conectado no terminal da erro invreq com resp2 = 9
Theads
CICSExecutorService class in the JCICS API ou OSGi framework (desacoplado)
runAsCICS()create threads that can use JCICS
submit()t nao rola, use o execute()
Getmain – threadsafe
Libera automatica quando termina a task e só a propria task pode liberar, shared aloca onde aparecer
USERDATAKEY nas Extended DSA de usuario CICSDATAKEY nas Extended DSA do CICS
NOSTG -> No Storage (RESP1)
GU Command (IMS)
The Get Unique (GU) command is used to directly retrieve specific segments, and to establish a starting position in the database for sequential processing. É TIPO UM STARTBROWSE OU UM READ INTO
EXEC--DLI--
ReadNExt (semi ThreadSafe – roteamento e nao vsam)
Fazerm o start browse antes e o endbrowse depois
RIDLFD (full key, RBA, or RRN)
UPDATE keyword on the READNEXT request to update some records during the browse. UPDATE you must also specify TOKEN (apenas em RLS mode)
If the file is recoverable, the lock is released at completion of the next syncpoint or rollback.
If the file is non-recoverable, the lock will be released by the time ENDBR has completed, but might be released earlier.
UNLOCK nesses casos nao faz nada, isto é, fez readnext com update token, só libera na leitura do proximo, do anterior ou EndBR , isso se for nom-recoverable, porque se for ai só no syncpoint ou no rollback.
Lock de leitura CONSISTENT, só pra aquele registro, REPEATABLE quero todos e só libera quando terminar a UOW!
READINTEG parameter of the FILE Definition -> default UNCOMMITTED (nem liga pra nada, me da o dado aqui e azar se vao alterar logo em seguida. RECORDBUSY refers to active locks, and LOCKED refers to retained locks.
Parametros: CONSISTENT (RLS only) -> Espera para poder atualizar no caso de update NOSUSPEND (RLS only)-> Espera ai um segundinho a mais se precisar REPEATABLE (RLS only)-> Segura o bloco todo! REQID -> multiplos browse no mesmo arquivo UNCOMMITTED -> nem ai se vao mudar na sequencia, quero saber agora!
TCTUA - terminal control table user area
Extensão da terminal control table entry (TCTTE), contendo existe ou nao e seu tamanho. (máximo em tamanho 255 bytes) funciona para passar dados tipo a commarea.
EXEC CICS ADDRESS TCTUA(ptr-ref)
Na definição do TYPETERM o atributo USERAREALEN é o tamenho, dôh!
Minimal processor overhead (only one CICS command is needed to obtain the address).
It is not recoverable.
Em terminais autoinstall, a area só some quando atingido o parametro AILDELAY , se nao for só com o boot cold do CICS. Da pra usar de boa em pseudo conversacao pra passar tipo flag e outros, achei da hora!
RDO resources ( resource definition online)
CEDA, CEDB, and CEDC -> define, alter, and install resources
COMMAREA
A ladainha de sempre, recomendo usar 24k embora o limite seja 32k
Program Services
JCICS, aqui só pode usar 24k na CommArea
Table 1. Relationship between methods, JCICS classes, and CICS commands
EXEC CICS Commands
JCICS class
JCICS methods
LINK
Program
link()
RETURN
TerminalPrincipalFacility
setNextTransaction(), setNextCOMMAREA(), setNextChannel()
INVOKE
Application
invoke()
The ENQ command
‘recurso’ nome de qualquer paradinha de 1 a 255 bytes, dequeue automatico ao final da UOW (syncpoint – rollback) ou task
NOSUSPEND -> fica esperando a nao ser que tenha um handle (HANDLE CONDITION for ENQBUSY ) ai, dança.
TDQUEUE Atributes
CEDA das TD’s
TDqueue : ADAZ
Group : ADABAS
DEScription : GRAVA MENSAGENS EMITIDAS PELA TRANSID ADAZ
TYPE : Extra Extra | INTra | INDirect
EXTRA PARTITION PARAMETERS
DAtabuffers : 001 1-255
DDname : ADAZMSG
DSname :
Sysoutclass : A
Erroroption : Ignore Ignore | Skip
Opentime : Initial Initial | Deferred
REWind : Leave | Reread
TYPEFile : Output Input | Output | Rdback
RECORDSize : 00110 0-32767
BLOCKSize : 0-32767
RECORDFormat : Fixed Fixed | Variable
BLOCKFormat : Blocked Blocked | Unblocked
Sysoutclass : A
Erroroption : Ignore Ignore | Skip
Opentime : Initial Initial | Deferred
REWind : Leave | Reread
TYPEFile : Output Input | Output | Rdback
RECORDSize : 00110 0-32767
BLOCKSize : 0-32767
RECORDFormat : Fixed Fixed | Variable
BLOCKFormat : Blocked Blocked | Unblocked
Printcontrol : A | M
DIsposition : Mod Shr | Old | Mod
INTRA PARTITION PARAMETERS
Atifacility : Terminal | File | System
RECOVstatus : No | Physical | Logical
Facilityid :
TRAnsid :
TRIggerlevel : 0-32767
Printcontrol : A | M
DIsposition : Mod Shr | Old | Mod
INTRA PARTITION PARAMETERS
Atifacility : Terminal | File | System
RECOVstatus : No | Physical | Logical
Facilityid :
TRAnsid :
TRIggerlevel : 0-32767
Userid :
INDOUBT ATTRIBUTES
WAIT : No | Yes
WAITAction : Queue | Reject
INDIRECT PARAMETERS
Indirectname :
REMOTE PARAMETERS
REMOTEName :
REMOTESystem :
Userid :
INDOUBT ATTRIBUTES
WAIT : No | Yes
WAITAction : Queue | Reject
INDIRECT PARAMETERS
Indirectname :
REMOTE PARAMETERS
REMOTEName :
REMOTESystem :
REMOTELength : 0-32767
DEFINITION SIGNATURE
DEFinetime :
CHANGETime :
CHANGEUsrid :
CHANGEAGEnt : CSDApi | CSDBatch
CHANGEAGRel :
REMOTELength : 0-32767
DEFINITION SIGNATURE
DEFinetime :
CHANGETime :
CHANGEUsrid :
CHANGEAGEnt : CSDApi | CSDBatch
CHANGEAGRel :
GETNext Container
Nada de novo no front
Business overview
Evaluir aplicações já existentes para maior robustez, vai usar um monte de cics, então compram o CICSPlex SM.
Trace entry points
System trace entry points
São os Comandos EXEC geram 2 – um na inicializacao e outro até o retorno]
🡪 ABEND, RETURN, TRACEFLAG, and XCTL só causam 1.
User trace entry points
-> Comando ENTER TRACENUM, para debug, em loop por exemplo para saber quantas vezes rodou e tals.
Exception trace entry points
-> CICS has detected an exception condition
User exception trace entry points.
*EXCU num dump, gravado quando no EXEC CICS ENTER TRACENUM colocamos o parametro EXCEPTION
EXEC CICS INVOKE APPLICATION
invocation of an application entrypoints, nunca vi! Mas pelo que entendi é tipo um link de alguma parte direta de algum programa.
Sending a SOAP fault
Só rola com Canal e Container, só pode chamar se for incializado o processo com CICS-supplied SOAP message handler.
EXEC CICS SOAPFAULT CREATE
Erro no CLIENT, mensagem recebida no SERVER algum erro no CICS. Gera XML com os dados
Translator options
Mais do mesmo.
Extrapartition queues
Td’s com acesso externo, tipo gravei no MQ, no Batch ou fui ler deles, enfim, fora do CICS mas que o CICS também enxerga e gerencia. Arquivo QSAM, com ‘Q’ mesmo!
Front End Programming Interface (FEPI) -> SIMULAÇÃO DE TERMINAL por um programa. EXEC CICS FEPI xxxxxx parece bem trabalhoso, mas funciona caso nao se possa mais mexer no programa que será chamado. São no minimo 4 programas o access que inicializa a comunicacao, o begin sesssion que roda quando a conecai foi estabelecida (acquired) o unsolicited que trata do trafego de dados e o end-session que finaliza
Unit of Work in CICS (UOW)
Fundamental concept of all CICS® backout mechanisms.
Syncpoint, commit, backout -> sem novidades
synchronization point / implicito EXEC CICS RETURN
Command syntax check
No CECI é o cara que fica about to execute, o primeiro enter! Valores possiveis:
COMMAND SYNTAX CHECK
ABOUT TO EXECUTE COMMAND
COMMAND EXECUTION COMPLETE
COMMAND NOT EXECUTED
Temporary storage queues
TS require more processor use que outros métodos de passage de dados. O CICS tem opção de “automatic deletion”. Tenta sempre criar com base na TSMODEL, se nao tiver vai que vai do mesmo jeito.
Main temporary storage -> Memoria
Auxiliary temporary storage -> “disco” demora mais de 1 segundo de vida o manual recomenda usar essa a nao ser que seja acessada pra caraleo, são recoverable.
Only one transaction at a time can write to or delete a recoverable temporary storage queue. Mas ler pode dar lambança como explicado no READQ TS
Podem existir CICS especialistas em TS, são chamados de queue-owning region (QOR)
TSMAINLIMIT -> até 32 Gigas (must not be greater than 25% of the MEMLIMIT value)
Resp and RESP2
CVDA (CICS-value data area) presente no DFHEIBLK - EXEC interface block (EIB)
Temporary storage control
Nada de novo no front.
JCICS is the Java equivalent of the EXEC CICS application programming interface (API)
CICS messages/DFHSR0622
Critical error Storage protection (key invalida – cics x user) S0C4 nas DSA
CICS is terminated – error message DFHSR06xx
CICS intercommunication
The basic intercommunication facilities that CICS provides are:
Function shipping
Acesso de recursos remotos como se estivessem disponiveis no cics local (EXEC DLI, ARQUIVOS (sem usar o token), TS e TD)
Asynchronous processing
EXEC CICS START
Transaction routing
Possibilidade de execução de transações em CICS diversos (Local/Remoto)
Distributed program link (DPL)
a CICS® program (the client program) to call another CICS program (the server program) in a remote CICS region.
Distributed transaction processing (DTP) -> LU type 6.2 unmapped conversation (C e ASM only)
distributing the functions of a transaction over several transaction programs within a network -> DPT
Multiregion operation (MRO) -> todos cics conversando (só CICS) independente de onde estiverm rodando
Cross-system coupling facility (XCF) -> do proprio sistema operacional SYSPLEX (systems complex)
EXCI (The external CICS® interface):
Sequencia de ações
Initialize_User
Allocate_Pipe
Open_Pipe
DPL_Request
Close_Pipe
Deallocate_Pipe
PUT CONTAINER (CHANNEL)
APPEND - Inclui novos dados no finla de um container já existente
DATATYPE(DFHVALUE(CHAR)) (SSID ou CODEPAGE)
CHANNELS AND CONTAINER
CHAMANDO O CANAL DE DFHTRANSACTION ELE FICA DISPONIVEL PRA PORRA TODA! Tipo todo mundo consegue ver e acessar os container, ele faz tipo perene pra transacao inteira.
Configuring the platform
Tipo como usar o CICSEXplorer eo CIXPLEX para configurar um ‘servidor’ pra receber programas em JAVA. -> Não entendi patavinas, tem que aprender!
Application entry points
Um programa é “configurado” como Application entry point é pra JAVA. -> Não entendi patavinas 2.
Using EDF menu functions
Rodapé com as teclas de função do CEDF/CEDX
Abend codes that start with the character A are reserved for use by CICS®.
DL/I interface block (DIB) -> EXEC DLI
Typical EDF display for REGISTERS AT ABEND
TRANSACTION: UT PROGRAM: ASRA31 TASK: 0000487 APPLID: IYK2ZKE1 DISPLAY: 00
ADDRESS: 0006F010
0006F010 000000 00000000 00000090 00000000 0010003C ................ 1
0006F020 000010 00000000 00041800 00000000 AE410028 ................ 1
0006F030 000020 00000000 2C2E35A8 00000000 00000000 .......y........ 1
0006F040 000030 00000000 2C2D7800 00000000 7F2C9918 ............".r. 1
0006F050 000040 00000000 2E410000 00000000 2C2D7818 ................ 1
0006F060 000050 00000000 00100008 00000000 00100100 ................ 1
0006F070 000060 00000000 009AF000 00000000 00100690 ......0......... 1
0006F080 000070 00000000 AE410158 00000000 00100690 ................ 1
0006F090 000080 079D0000 80000000 00000000 2E410178 ................ 2
0006F0A0 000090 00040004 00000000 00000000 00000000 ................
0006F0B0 0000A0 00000000 00000000 00000000 00000000 ................
0006F0C0 0000B0 00000000 00000000 00000000 00000000 ................
0006F0D0 0000C0 00000000 00000000 00000000 00000000 ................
0006F0E0 0000D0 00000000 00000000 D4F0F0F0 F0F4F8F9 ........M0000489
0006F0F0 0000E0 D4F0F0F0 F0F4F8F9 00000000 00000000 M0000489........
0006F100 0000F0 00000000 000000E4 E3404000 00F00000 .......UT ..0..
ENTER: CURRENT DISPLAY
PF1 : UNDEFINED PF2 : BROWSE TEMP STORAGE PF3 : UNDEFINED
PF4 : EIB DISPLAY PF5 : INVOKE CECI PF6 : USER DISPLAY
PF7 : SCROLL BACK HALF PF8 : SCROLL FORWARD HALF PF9 : UNDEFINED
PF10: SCROLL BACK FULL PF11: SCROLL FORWARD FULL PF12: REMEMBER DISPLAY
Working storage mostrada no EDF:
COBOL -> All data storage defined in the WORKING-STORAGE section of the program
C, C++ and PL/I -> The dynamic storage area (DSA) of the current procedure
Assembler language -> The storage defined in the current DFHEISTG DSECT
Open TCBs and EDF Even if your program typically runs using an OPEN TCB (L8, L9, X8, or X9), CEDF forces the program to run on the QR TCB, because CEDF itself is not threadsafe.
There is no performance advantage in specifying NOEDF compiler option
WEB SERVICES
Sistema que permite interações entre programsa por uma rede. Clientes e servidores se comunicam via XML (Extensible Markup Language). A troca dos XML’s é feita utilizando o SOAP (Service Oriented Architecture Protocol ou codinome Simple Object Access Protocol. A interface é definida pela WSDL (Web Services Definition Language) no XML inicia com “xsd:”.
Requester e o Provider (tipo a Alice o o Bob da criptografia)
Pipeline consists of series of message handlers executed in a sequence, ou é requester (outgoing) ou provider (incoming/inbound SOAP message) não pode ser os dois.
Wrapper -> Casquinha, só formata (e olhe lá) e chama o próximo.
TCPIPSERVICE
Required for service provider using HTTP
Provides access to CICS from TCP/IP network via port number
URIMAP
Required for service provider
Passes incoming request to appropriate pipeline based on URI (URL) match on the PATH attribute
Usually created automatically from WSBIND when pipeline is installed
Default alias transaction for Usage Pipeline. -> CPIH
PIPELINE
Pra roda precisa do WSDL e WSBIND criados e funcionais
Nome do URIMAP
WEBSERVICE
WEBSERVICE
Usually created automatically from WSBIND when pipeline is installed
EXEC interface block fields
EIB, nada de novo. Lembrar de usar o EIBRCODE quando erros além do “RESP1 e RESP2”, ajuda bastante!
Defining map fields: DFHMDF
Mapas BMS, Attribute value definitions: DFHBMSCA
CICS maintained data tables
Records are automatically reflected in the source data set, não pode ser RLS
CICS copies the contents of the data set into an MVS™ data space
só pode ser VSAM key-sequenced data set (KSDS)
Existem 2 tipos
CICS-maintained data table (CMT) -> the source data set and the data table as a single entity
User-maintained data table (UMT) -> só atualiza o data table nao o arquivo, pode usar RLS
Using EXEC CICS LINK command
Sem novidades em relação ao que já sabia sobre LINK
Sequential reading (browsing)
STARTBR, READNEXT, READPREV, and RESETBR
ENDBR, SYNCPOINT and SYNCPOINT ROLLBACK
Physical and symbolic map sets
Fisico (TYPE=MAP) é o mapa compilado, o simbolico (TYPE=CSECT) sao os books para serem usados na aplicação.
Debugging a Java application
Java™ Platform Debugger Architecture (JPDA) vem no pacote de desenvolvimento (SDK) do CICS para Java.
The integrated CICS translator
Insere a biblioteca CICSTS52.CICS.SDFHLOAD de carga do cics no step de compilacao e boa, vai tipo automático, igual o do DB2
The CICS web services assistant
Conjunto de ferramentas BATCH que “transforma/criam” o SOAP e o WSDL, tipo aquela musica do martinho da vila ou do zeca pagodinho, nunca ví só ouço falar!
C and C++ to XML schema mapping
Meio de campo das variaveis do C para o XML e vice versa
DFHLS2SC and DFHLS2WS map high-level language structures to XML schemas and WSDL documents respectively.
DFHSC2LS and DFHWS2LS map XML schemas and WSDL documents to high-level language structures.
Concepts of JSON web services “concorrente” do SOAP/XML. JSON integrado tipo direto/nativo pro JavaScript
Utilitários para conversão DFHLS2JS and DFHJS2LS ( CICS JSON assistant) ele é mais complicado de se documentar as estruturas (tipo ainda esta em desenvolvimento do padrao) .
CICS is responsible for transforming incoming JSON messages into application data, and linking to the application. The application returns output data back to CICS, and CICS transforms this into JSON data to return to the client. (programa DFHJSON)
RESTful -> POST (create) GET (inquire) and PUT (replace)
JSON client must connect to CICS using the HTTP POST method.
Além do casquinha, vai ter que ter um “conectorzinho” que use EXEC CICS WEB API pra funcionar legal. EXEC CICS WEB CONVERSE e outras relacionadas a WEB com CICS.
O HTTP no cics, é bem similar ao EXCI:
1 – abre a conexão
EXEC CICS WEB OPEN URIMAP(ws-urimap)
SESSTOKEN(ws-sesstoken) (refere-se a um URIMAP já existente)
2 – Escreve o header
EXEC CICS DOCUMENT CREATE/SET/INSERT
DOCTOKEN(ws-doctoken)
EXEC CICS WEB WRITE HTTPHEADER
3 – manda a requisição
WEB SEND or WEB CONVERSE
4 – Cria o pipeline
5 – Autentica
HTTP 401 WWW-Authenticate message
Tipo um handshake de usuario e senha AUTHENTICATE(BASICAUTH) ou WEB EXTRACT
6 – Recebe a resposta
WEB RECEIVE or WEB CONVERSE
6 – Fecha a conexao
WEB CLOSE
Using EDF in dual-screen mode
Faz o CEDF segurando (informando) um terminal, ao ir praquele terminal e executar alguma coisa, vem o trace pro cedf!
Asynchronous processing method
START / RETRIEVE ou via DTP (Distributed transaction processing)
DTP -> You can use it to initiate a transaction in a remote system that supports one of the DTP protocols. (usa o EXEC SEND) protocolos LU ou APPC o comando
EXEC CICS ASSIGN STARTCODE ajuda, isto é, diz como foi inicializado o processo!
IRC (Interregion Communication)
TCP
SNA (LUTYPE6.2 (APPC) ou LUTYPE6.1)
Interpreting transaction dumps
Única novidade é que o CICS da um dump dos canais e dos containers emu so pela transação (até 32k)
EyeCatcher DFHTACB indica o inicio da transaction abend control block and it contains the registers and PSW
The delivered logical topology
Making applications threadsafe
DE preferencia sempre OPENAPI que vai na L9 TCB if EXECKEY(USER) ou na L8 TCB if EXECKEY(CICS) .
CONCURRENCY(THREADSAFE) inicia em QR depois vai pra OPEN TCB (L8)
CONCURRENCY(REQUIRED) inicia direto na L8
Task-related user exit (TRUE) e Global user exits (GLUEs)
Interrupting program execution
Aqui no sentido de interceptar a execução pelo CEDF/CEDX, vulgo EDF
EDF and non-terminal transactions
Mais um pouco do EDF, no caso CEDX para capturar transações e o CEDX tranid,OFF para desligar o EDF!
Several channels, one component
Sistemas/Aplicações que suportam ou usam varios canais em apenas um programa, tipo o programa esta com canal corrente “A” e chama o programa 1 com o canal cebola, o programa 2 com o batata e ai vai.
Scope example with link command
Escopo de um canal, quem pode vê-lo e quando ele morre.
Overview: How CICS connects to DB2
CICS DB2 attachment facility, o CICS é quem faz o recovery tanto dele mesmo como do DB2.
Each CICS system can be connected to only one DB2 subsystem
Como são os recursos ? DB2CONN (the DB2 connection definition), DB2ENTRY (the DB2 entry definition), and DB2TRAN (the DB2 transaction definition).
Tem que estar instalado o recurso DB2CONN antes de qualquer brincadeira com o DB2.
I DB2CONN
STATUS: RESULTS - OVERTYPE TO MODIFY
Db2conn
Accountrec( Uow )
Authid( )
Authtype( Sign )
Comauthid( )
Comauthtype( Cuserid )
Comthreadlim( 0001 )
Comthreads(0000)
Connecterror( Sqlcode )
Connectst( Connected )
Db2groupid( D0G1 )
Db2id( D0D4 )
Db2release(1110)
Drollback(Rollback)
Msgqueue1( MDB2 )
Msgqueue2( )
Msgqueue3( )
Nontermrel( Norelease )
Connectst( Connected )
Db2groupid( D0G1 )
Db2id( D0D4 )
Db2release(1110)
Drollback(Rollback)
Msgqueue1( MDB2 )
Msgqueue2( )
Msgqueue3( )
Nontermrel( Norelease )
Plan( DEFAULT )
Planexitname( )
Priority( High )
Purgecyclem( 00 )
Purgecycles( 15 )
Resyncmember( Resync )
Reuselimit( 01000 )
Signid( CICSUSR )
Nontermrel( Norelease )
Plan( DEFAULT )
Planexitname( )
Priority( High )
Purgecyclem( 00 )
Purgecycles( 15 )
Resyncmember( Resync )
Reuselimit( 01000 )
Signid( CICSUSR )
Security( )
Standbymode( Reconnect )
Statsqueue( MDB2 )
Tcblimit( 0100 )
Tcbs(0000)
Threaderror(Abend)
Threadlimit( 0050 )
Threads(0000)
Signid( CICSUSR )
Security( )
Standbymode( Reconnect )
Statsqueue( MDB2 )
Tcblimit( 0100 )
Tcbs(0000)
Threaderror(Abend)
Threadlimit( 0050 )
Threads(0000)
Threadwait( Twait )
Installtime(07/08/15 04:04:07)
Installusrid(CICSUSR)
Installagent(Createspi)
Definesource(CPSMV01)
Definetime(08/06/09 11:14:36)
Changetime(07/04/15 15:13:07)
Changeusrid(C843613)
Threads(0000)
Threadwait( Twait )
Installtime(07/08/15 04:04:07)
Installusrid(CICSUSR)
Installagent(Createspi)
Definesource(CPSMV01)
Definetime(08/06/09 11:14:36)
Changetime(07/04/15 15:13:07)
Changeusrid(C843613)
Changeagent(Drepapi)
Changeagrel(0670)
Comandos para conexao com o DB2
STRT - start the connection to DB2
STOP - stop the connection to DB2
DISP - display the status of threads, and display statistics
MODI - modify characteristics of the connection to DB2
DISC - disconnect threads
Fluxo de um acesso ao DB2 por um programa rodando no CICS
A language interface, or stub, DSNCLI, that is link-edited with the application program calls the CICS resource manager interface (RMI).
The RMI processes the request, and passes control to the CICS DB2 attachment facility's task-related user exit (TRUE), the module that invokes DB2 for each task.
The CICS DB2 attachment facility schedules a thread for the transaction. At this stage, DB2 checks authorization, and locates the correct application plan.
DB2 takes control, and the CICS DB2 attachment facility waits while DB2 services the request.
When the SQL request completes, DB2 passes the requested data back to the CICS DB2 attachment facility.
CICS now regains control, and the CICS DB2 attachment facility passes the data and returns control to the CICS application program.
Each CICS transaction needs its own thread to access DB2.
Compilando um programa com DB2 e CICS
DBRM (database request module)
Java tambem pode! Java Data Base Connectivity (JDBC) or Structured Query Language for Java (SQLJ)
Dealing with protection exceptions
Storage protection (interrupt code 4 – S0C4) -> protected ou chave diferente (user key x cics key)
transaction isolation ( ISOLATE(YES) ) -> ASRA (tentou ler ou graver memoria
command protection -> AEYD o programa nao pode realizer a tarefa
Program interrupt code (PIC) -> Um dos inumeros componentes da PSW
1
Operation exception - incorrect operation attempted.
Possible causes are as follows:
Overlaid program Overlaid register save area, causing incorrect branch Resource unavailable, but program logic assumed valid address returned and took inappropriate action Incorrect branch to data that contains no instruction known to the machine In an assembler-language program, a base register was inadvertently changed
2
Privileged operation - this program is not authorized to execute this instruction.
A possible cause is as follows:
Incorrect branch to this code. Possible reasons for this situation are as follows: Overlaid register save area
Program overlaid by data that contains the privileged operation code
3
Execution exception - you are not allowed to EXECUTE an EXECUTE instruction.
Possible causes are as follows:
Incorrect branch to this code Incorrect register contents. Possible reasons for this situation are as follows:
Overlaid register save area Program overlaid by data that contains the incorrect instruction Incorrect program logic
4
Protection exception - read or write access violation has occurred.
Possible causes are as follows:
Resource unavailable, and return code not checked. Program logic assumed valid address returned and took inappropriate action.
Incorrect interface parameters to another program or subsystem (for example, VSAM or DL/I).
Overlaid register save area, causing incorrect reference to data.
In an assembler-language program, incorrect initialization or modification of a register used to address data.
Attempt to access internal control blocks illegally or use a CICS® system or application programming macro call.
Attempt to write to storage for which the application does not have an adequate key. For example, in a CICS system with storage protection, an application running in USER key attempts to write to the CDSA, RDSA, ECDSA, ERDSA, ETDSA, or GCDSA.
Attempt to write to the ERDSA or RDSA when PROTECT is specified for the RENTPGM parameter.
Attempt to read or write to another transaction's storage. For example, in a system running with transaction isolation, a program running in USER key might experience a protection exception when attempting to access the USER key task-lifetime storage of another transaction.
Storage that is passed to CICS as an output parameter through the EXEC interface that is not addressable by the application issuing the call. The transaction is abended AEYD, and the PSW shows that a protection exception has occurred.
5
Addressing exception - the address that you referenced is not available or is not valid.
A possible cause is as follows:
Incorrect register contents, which might be because of an overlaid register save area.
6
Specification exception - incorrect format of an instruction or invalid registers.
Possible causes are as follows:
Overlaid program
Incorrect field lengths used in packed decimal multiply and divide instructions
Branch to an odd-numbered address, caused by an overlaid register save area
7
Data exception - data invalid in a packed or signed display decimal operation. One, or both of the operands contain data that is not suitable for the instruction.
Possible causes are as follows:
Incorrect input data (often because blanks are used where numeric data is expected)
Overlaid data
Overlaid register save area, causing an incorrect branch
Incorrect program logic, execution of code with uninitialized variables
Wrong length
8 through F
Arithmetic exceptions, such as divide checks, overflow, and underflow. They differ in the form of arithmetic that was being used: binary, packed decimal, or floating point.
Possible causes are as follows:
Incorrect user data
Overlaid data areas
Overlaid register save area, causing incorrect reference to data
10 and above
Program checks associated with system-related interrupts.
Limitations of DPL server programs
Cannot issue the following types of commands.
Terminal-control commands referring to its principal facility Commands that set or inquire on terminal attributes BMS commands Signon and signoff commands Batch data interchange commands Commands addressing the TCTUA Syncpoint commands (a nao ser que chamaram com SYNCONRETURN)
Pode fazer o commando, mas da ERRO!
Using the LOAD PROGRAM HOLD command
Command remains in directly addressable storage until explicitly released by the same, or by a different, task.
Só pra tomar cuidado porque a afinidade é forte e é com o CICS local.
Programming techniques and affinity
Técnicas seguras (baixa ou nenhuma afinidade):
CommArea, TCTUA e Canal/Container
Não recomendadas:
CWS
Getmain SHARED
LOAD with HOLD
WAIT EVENT / WAIT EXTERNAL / WAITCICS
ENQ/DEQ (se nao tiver usando model)
Suspeitas:
TS TD com trigger
Sincronização e serialização
RETRIEVE WAIT / START - START / CANCEL REQID - DELAY / CANCEL REQID - POST / CANCEL REQID
INQUIRE and SET commands and global user exits
CICS web support concepts and structure
CICS® web support is a collection of CICS services que faz com que o CICS fucnione como um servidor e cliente HTTP (versao HTTP/1.1 ).
Como servidor:
Alguem manda a solicityação o CICS recebe processa e devolve a resposta
Precisa de definições de TCPIPSERVICE e URIMAP
Como cliente
A aplicação rodando sob CICS faz uso das API’s EXEC CICS WEB / EXEC CICS DOCUMENT e o cics faz o meio de campo, enviando a solicitação e devolvendo o retorno. Também precisa definições cadastradas.
Pode trabalhar com protocolo sem ser o HTTP (tipo um user protocol, mas ai as facilidades nativas vão pro espaço)
No URIMAP estao “cadastradas” as URL (URL (Uniform Resource Locator) is a specific type of URI (Universal Resource Identifier), tem tambem o IRI (Internationalized Resource Identifier) que deixa ter acentuacao e caracteres especiais) de onde pode vir e pra onde vai a solicitação e vice versa (tipo o cadastramento de uma transação do CICS, quando rodar esssa transacao faz isso, nesse caso é, se veio ou ta indo pra LÀ/De CÁ, faça isso.
Atom -> Feed RSS
Pipeline -> Web propriamente dita!
Estatico -> Retorna uma pagina WEB (previamente cadastrada e bobinha)
Chunked transfer-coding -> Fica aberto la pra mandar e receber, pelo que entendi, arquivos e tals, sem saber o tamanho total antes do envio do priemiro pacote, vai mandando e boa!
Se der erro, os programas DFHWBEP or DFHWBERX processam e nao deixam o pessoal sem resposta (da pra customizar tambem)
EXEC CICS
WEB OPEN
WEB WRITE HTTPHEADER
WEB SEND or WEB CONVERSE
WEB READ HTTPHEADER
WEB RECEIVE or WEB CONVERSE
Geralmente precisa rola um codepage conversion pra evitar problemas!
Token -> 8-byte binary. Identifica unicamente as transações WEB, inicia no WEB OPEN e termina no WEB CLOSE (se esquecer o WEB close, ao terminar a sessão o CICS apaga, só pra variar).
URI (crash course)
A scheme (o protocolo, tipo o HTTP).
A host:port (onde esta hospedado a parada, vulgo endereço e a porta)
A path. (lá dentro do host onde esta, qual o caminho pro que voce quer)
A query string (Esta procurando alguma coisa, é o parametro de entrada no caso de pesquisas)
Exemplo: scheme://host:port/path?query
Data retrieval by a started transaction
Recupera os dados via retrieve, opção protect só “shipa” inicia a transacao quando a transação original fizer um syncpoint! Da hora!
ROUTABLE(YES) deixa que ela troque de CICS, pode ser estatico com SYSID no comando START ou dinamico pela definição do recurso, no caso da transação. DYNAMIC(YES -> TOR pro AOR na definição/ NO -> voce decide pra onde vai)
Terminais que podem ter transacoes roteadas -> SHIPPABLE(YES)
Automatic transaction initiation (ATI) -> O recurso/processo/componente do CICS que cuida das transações com condições de execvução, geralmente tempo ou trigger via TD.
Conexões com o Z/OS Communications Server, todos os CICs vao de generic resource, terminais conectam automaticamente e aplicações com conexao APPC and LUTYPE6.1 conectam bem facil, mas nao automatico via VTAM® generic resource function -> SET VTAM DEREGISTERED retira o CICS do grupo generico).
As exits que controlam o encerramento dos processos de start são as XICTENF and XALTENF mas podemos criar/customizar se quisermos.
Packaging applications for deployment
Cics deixa rodar 2 versões do que ele chama de “application” é basicamente um pacotão com todas as definições e programas que são utilizados e voce pode deixar rodando a mais recente ou a anterior. Tudo online, analago ao CICS de teste que tem na PLT a biblioteca de testes antes das outras.
Esse conceito de aplicação ainda esta um pouco obscuro pra mim, vou precisar ver um exemplo, tipo o lance do JCICS e do WEB.
Invoking a multi-versioned application
EXEC CICS INVOKE APPLICATION é o comando pra escolher qual versao da aplicacao quer que seja executada. EXEC CICS LINK só vê uma versao sempre do programa, no exec cics link nao é aplicação é programa!
Tem que saber a versao o entry point, a plataforma, a operação... é bem complexo o esquema, fora que ainda não entendi como monta essa tal de aplicação.
How applications are bound to platforms
Antes de ser implantado o aplicativo deve ser “bound”…
Esse conceito de aplicação ainda esta um pouco obscuro pra mim, vou precisar ver um exemplo, tipo o lance do JCICS e do WEB.
Handling abends and program level abend exits
Caso decida codificar um programa para “captura” dos abends tenha em mente de coletar alguns dados do ambiente (endereço da TWA e um assign basico com os dados do abend) além de manda uma mensagem de erro pro operador e se possivel sempre rode o "abendador”
Number of buffers and strings for LSR and NSR
Alocação de arquivos VSAM
Local shared resources (LSR) – o proprio CICS calcula “automaticamente” os parametros, mas é muito trabalhoso e demorado (consome muito recurso)não tem prealocação de buffers, fica esperando recurso é ruim de sincronizar, não da pra fazer ajuste fino (tune-up. Sem falar que LSR, there is only one copy of a CI in storage;
Nonshared resources (NSR)-> parece ser mais esquema, mas não explica o porque... precisa carregar os parametros DATABUFFERS and INDEXBUFFERS na definição do VSAM para o CICS, pode ter multiplas copias do mesmo CI em memoria!
“VSAM functions most efficiently when its control areas are the maximum size. Set the data CI larger than the index CI. Thus, typical CI sizes for data are 4 KB to 12 KB, and for index, 1 KB to 2 KB.”
RLS é o bicho contra dead-lock! Emite o abend AFCW antes de causar o dead-lock!
String -> pelo que entendi é uma “area” utilizada para acessar o VSAM, se for ler só tem 1 pra update tem que ter 2 porque um fica com o registro anterior e o outro com o registro novo ai um terceiro recebe o update e grava, no browse tem mais um que fica com o “indice” e ai vai... entao o numero 3 é um numero bom para strings!
STRNO é o parametro no CICS na definiçao do arquivo, não tem exemplo no texto e não encontrei VSAM com dados de STRNO na definição via CEDA...
CICS MRO, ISC, and IPIC: performance and tuning
Multiregion operation (MRO) -> causes less processor usage
Intersystem communication over SNA (ISC over SNA) -> prefira usar XCF/MRO se trocar de imagem porque o MVS cross-system coupling facility (XCF) consome bem menos recurso, mas se não tiver jeito, ai as transações são a CSMI (para data sets), CSM1 (para usar o IMS), CSM2 (Interval control), CSM3 (TD’s e TS’s), CSM5 (banco de dados do IMS). Para aumentar o throughput deve-se multiplicar os caminhos, isto é, multiplas sessoes paralelas.
Transaction routing performance costs
MRO XM
MRO XCF (through CTC)
MRO XCF (through CF)
ISC LU6.2
37.0
43.0
66.0
110.0
IP interconnectivity (IPIC) -> usa o programa DFHMIRS (threadsafe) para turbinar tem que inicializa com FCQRONLY=NO in the file-owning region
Todas as conexões acima suportam
- Function shipping
- Distributed transaction processing
- Asynchronous processing
- Transaction routing
- Distributed program link
Support for variable-length values and white space
Se tiver usando XML schema or WSDL document é bom specify the whiteSpace and maxLength facets além do CHAR-VARYING-LIMIT e do CHAR-VARYING.
CHAR-VARYING=NULL -> variable-length strings generated by CICS are ended with a null character. Lembre-se que Null characters ('x00') are not valid in XML documents.
CHAR-VARYING=COLLAPSE -> Remove os espaços em branco no final
Using CSFE debug functions/Storage violation trap
Transação CSFE -> não consegui entender nem rodar
Autoinstalling programs, map sets, and partition sets
O CICS faz tudo sozinho, se o autoinstall estiver ativado ao ser “solicitado um recurso”, no caso, programas e telas o “CICS® dynamically creates a definition, and installs it and catalogs it as appropriate”.
O boot com autoinstall without cataloging é mais veloz!
Em tese os seguintes recursos podem ser auto instalados “SNA LUs, MVS consoles, APPC connections, IPIC connections, programs, map sets, partition sets, and journals.”
Pode ser via CEMT no SYSTEM ou parametro
PROGAUTOCTLG -> as definições serão catalogadas ? (ALL/MODIFY/NONE)
PROGAUTOEXIT -> qual a exit
PROGAUTOINST -> ativada ou desativada a auto instalacao ?
Via inicializacao do CICS são PGAICTLG/PGAIPGM/PGAIEXIT (mesma ordem do de cima e mesmas funções)
Exemplos que podem ser customizados de definições
DFHPGAPG for programs
DFHPGAMP for mapsets
DFHPGAPT for partitionsets
CICS services for application programs/Transient data/ATI
Automatic transaction initiation (ATI) -> Grava o trigger na TD e depois de quantas tiverem gravadas lá inicia a transacao associada. Pode ser QZERO, ai grava starta direto ou um outro valor qualquer.
Interpreting abbreviated-format CICS system trace entries
Existem 3 tipos de traces abbreviated, short e extended
Abbreviated trace entries show the CICS TCB ID of the TCB
00021 QR AP 00E1 EIP ENTRY INQUIRE-TRACEFLAG 0004,00223810 ....,00007812 ....
Leitura de traces, vai lá liga o trace, roda a transação e depois analisa! Deve rolar bem acompanhando um desde o inicio, não achei exemplos de passo a passo de como tirar o trace. O programa batch que formata é o DFHTU690, mas de onde ou quem gera e como os arquivos não descobri.
Creating the CICS infrastructure for a SOAP service requester
Tem que criar o pipeline e mais uma porrada de recurso (JVM profile tem que ter JAVA_PIPELINE=YES , criar URIMAP definitions)
A JVM server can handle SOAP processing for many Java pipelines.
Existem 7 passos a serem seguidos como procedimento para a criação da infraestrutura
1 Define the message handlers and header processing programs
2 Create an XML pipeline configuration file
3 Copy the pipeline configuration file to a suitable directory in z/OS UNIX.
4 Change the pipeline configuration file permissions to allow the CICS region to read the file.
5 Criar o recurso do pipeline
6 Gravar o recurso do programa ou colocar como autoinstall
7 Create a URIMAP resource
CICS Services for application programs/Named counter servers
Named Counters são numeros sequenciais unicos gerados controlados e disponibilizados pelo CICS sob demanda da aplicação.
Muito melhor e mais facil de utilizar que data table, contador na CWA, TS. O named counter é unico via Coupling Facility, uma mão na roda e bem rapido e gasta pouco processamento comparado com as outras soluçoes.
Tem o aplicativo DFHNCTR que pode ser chamado via batch! E funciona bem parecido com a API de named counter, mas de boa sem problemas em ler/atualizar/utilizar o mesmo que uma aplicação on-line e ao mesmo tempo!
Só precisa link-edited o batch com o “callable interface linkage routine” -> DFHNCTR.
Deploying a web application as a dropin directly to a Liberty JVM server
JVM server (server.xml) -> configurado to use the Liberty profile technology and must be enabled in the CICS® region
Liberty JVM server automatically detects the deployed WAR or EBA file and installs it.
Web archive (WAR) or enterprise bundle archive (EBA)
Utiliza o CICS Explorer SDK to package and deploy applications.
Investigating loops that cause transactions to abend with abend code AICA
Receitinha de bolo para tentar achar o loop (Segundo a IBM)
1.Get the documentation you need.
2.Look at the evidence.
3.Identify the loop, using information from the trace table and transaction dump.
4.Determine the reason for the loop.
Simples e facil! Sem erro, uma baba!
Melhor mesmo é Start the task, and wait until it abends AICA. - Format the CICS system dump e Find the program status word (PSW), and see whether it points into your program
CICS services for application programs/ CICS storage protection and transaction isolation
Transaction isolation protects tasks from each other
Storage protection protects CICS® code and control blocks from applications
It does not provide protection against deliberately overwriting CICS code or control blocks. CICS cannot prevent an application from obtaining the necessary access (execution key) to modify CICS storage.
The use of storage protection is optional é um parametro na inicialização do CICS!
Last updated