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

The text above explains this diagram in full.

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