vendredi 31 août 2007

Mise en œuvre z/OS DB2 IMS CICS MQ/Series sur Hercules

Mise en œuvre z/OS DB2 IMS CICS MQ/Series sur Hercules


Démarrage hercules
Avant de démarrer hercules, il faut installer WinCAP3.1 sur Windows en local pour capturer les trames ethernet et les envoyer à hercules

Lancement de hercules - IPL z/OS – et tous les sous systèmes
Sur le répertoire d'installation c:\HERCMSVC taper hercules
Hercules Version 3.03
(c)Copyright 1999-2005 by Roger Bowler, Jan Jaeger, and others
Built on Dec 23 2005 at 11:51:05
Build information:
Win32 (MSVC) build
Modes: S/370 ESA/390 z/Arch
Max CPU Engines: 8
…/…
HHCTE003I Waiting for console connection on port 3270
…/…
C:\HERCMSVC\TunTap32.dll version 3.1.7.852 initiated
HHCCT073I 0E20: TUN device tun0 opened
…/…
HHCHT006I Waiting for HTTP requests on port 8081

L’initialisation de la dll TunTap32 indique la capture et le routage des adresses et des ports et de hercules.cnf vers z/OS
Même si TCPIP de z/os n’est pas configuré, on peut se connecter sur le port 3270 pour avoir la mire VTAM
(à cause de la directive CNSLPORT 3270)

et l’adresse de la machine virtuelle z/OS
(à cause de la directive 0E20.2 3088 CTCI )

Démarrage de la console z/OS et IPL
démarrer une session vista port 3270 sur l’IP virtuelle de hercules (elle est dans le DNS Scort sous le nom hercules)

IPL A80 (sur la session DOS ou on a démarré hercules)

L’ipl charge tous les sous systèmes de z/OS sauf CICS, IMS, et MQ qui sont démarrés manuellement

Lancement de l’environnement complet DB2 + MQ + IMS + CICS
S STARTALL
Cette commande enchaîne le démarrage de tous les sous –systèmes avec une séquence d’attente entre chaque
Lancement et arrêt manuel des sous systèmes


Si on passe ces commandes depuis une connexion à TSO sous SDSF, il faut les faire précéder d’un « / »

Démarrage de DB2
-START DB2
Et arrêt par
-STOP DB2 MODE(FORCE)

Démarrage manuel de MQ
S STARTMQ

Démarrage de la connexion du bridge MQ-IMS lors du démarrage de IMS ou s’il est déjà démarré par les commandes
/STO OTMA
/SECURE OTMA NONE
/STA OTMA


Et arrêt par
%CSQ1 STOP QMGR MODE(FORCE)


Démarrage de IMS
S STARTIMS
Au reply *xx DFS996I *IMS READY* IVP1 taper /NRE CHKPT 0 FMT ALL.
Au reply *xx DFS996I *IMS READY* IVP1 taper /STA DC

Pour stopper IMS
Au reply *xx DFS996I *IMS READY* IVP1 taper /CHE FREEZE
Au reply *xx DFS996I *IMS READY* IVP1 taper /STO DC
P IMS81OM1
P IMS81RL1
P IMS81RM1
P IMS81SC1


Démarrage de IMS Connect (IMS doit être démarré)

S IMSRDR,MBR=IMS81CON
Et arrêt par
P IMS81CON


Démarrage de CICS
S CICSA
Et arrêt par
F CICSA,CEMT PERF SHUT IMMED

Arrêt complet de z/OS avec ses sous systèmes
F CICSA,CEMT PERF SHUT IMMED
P IMS81CON
Au reply *xx DFS996I *IMS READY* IVP1 taper /CHE FREEZE
Au reply *xx DFS996I *IMS READY* IVP1 taper /STO DC
P IMS81OM1
P IMS81RL1
P IMS81RM1
P IMS81SC1
-STOP DB2 MODE(FORCE)
%CSQ1 STOP QMGR MODE(FORCE)
Puis faire logoff TSO et déconnecter tous les émulateurs (évite des complications dans l’arrêt) et sur la console z/OS sur VOUVRAY
S SHUTDOWN
Attendre le msg suivant:
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
Puis passer la commande
D A,L
Qui doit donner ceci (uniquement JES2 actif)

IEE114I 09.42.40 2007.092 ACTIVITY 759
JOBS M/S TS USERS SYSAS INITS ACTIVE/MAX VTAM OAS
00000 00001 00000 00027 00020 00000/00000 00001
JES2 JES2 IEFPROC NSW S

Passer alors la commande

$PJES2
Et attendre 10 secondes pour passer dans la session DOS ou l’on a lancé hercules et lancer la commande
QUIT
Qui demande une trentaine de secondes pour bien fermer tous les disques virtuels CKD
Démarrage de IMS
(j'ai mis une procédure pour tout faire par une commande à la console MVS
s STARTIMS qui fait ce qui suit:

s imsrdr,mbr=ims81rl1
s imsrdr,mbr=ims81sc1
s imsrdr,mbr=ims81om1
s imsrdr,mbr=ims81rm1
s imsrdr,mbr=ims81cr1

démarrage de IMS Connect
s imsrdr,mbr=ims81con (pas automatique, le faire à la main , voir plus loin)

pour démarrer une transaction il faut ensuite répondre au reply IMS sur la console MVS comme suit:
02/nre chkpt 0 fmt all.
/ERE CHECKPOINT 0 BUILDQ OVERRIDE.

IMS ABEND au démarrage:
DFS0739I LOGIC ERROR DDNAME=DFSOLP00 LOG SEQ=000000000
0000547 IVP1
DFS0739X ERROR READING IMS LOG RC=22 DDNAME=DFSOLP00 LOG
SEQ=0000000000000547 IVP1
DFS629I IMS RST TCB ABEND - IMS 0175 IVP1

Cold start par:
/ERE COLDSYS.

04/sta dc
/xx/dis a (sous tso)

IMS810.TCFSLIB(DFSTCF)

démarrage manuel de IMSConnect
IMSCONNECT ne démarre pas tout seul car il faut d’abord fair le NRE et le start DC pour qu’il soit opérationnel lors de son démarrage

S IMSRDR,MBR=IMS81CON

Etapes de la construction de IMS
IMS810.INSTALIB(IV3C201J) è macros de définition du système
IMS810.INSTALIB(IV3C202J) è JCL de preprocesseur
IMS810.INSTALIB(IV3C203J) è Stage SYSDEF > gén_re un Syspunch
IMS810.INSTALIB(IV3C301T) è

1 : PSBGEN è définir les PSB dans la PSBLIB
2 : IMSCOBOL è compiler & linkedit des pgm dans la PGMLIB
3 : ACBGEN è compilerr les ACB dans ACBLIB
4 : OLCUTL è préparer Online Change ACBLIB vers A ou B
5 : /Mod Prepare puis commit




exemples de transactions IMS

part an960c10
disburse an960c10,28009126,u,100
dspinv an960c10,28009126
addpart an911c11,karsher,93
addinv an911c12,12345678
close an911c12,12345678,15,15
dspinv an911c12,12345678
dspalli an911c12

/for IVTCM permet de lancer une conversation dans la région IMS81JMP (région java), voir mise en œuvre plus loin


Arrêt de IMS
xx/che freeze
xx/dis a (si nécessaire pour router les msg ims vers la console MVS)
xx/sto dc
p ims81sc1
p ims81om1
p ims81rl1
p ims81rm1
p ims81cr1
.... (autant de de proc actives dans D J,L)

Stopper / starter les regions IMS
/IVP1DIS A REG
/IVP1STO REG 1 2 3 4

Redémarrer
/S IMSRDR,MBR=IMSMSG

Ou démarrer une region seulement
Soit par /S imsrdr,mbr=IMS81JMP

Ou bien utiliser le command prefix de IMS
/IVP1STA REG IMS81JMP
/IVP1STO REG JOBNAME IMS81JMP


Arrêt de z/OS
s shutdown
f dlf,mode=quiesce
(eventuellement au reply xxfstop)
p dlf
$pjes2

Puis sur la fenêtre DOS de Hercules la commande : quit
Qui va couper la session sans l’émulateur de la console 3270


DB2
Start et stop DB2
-START DB2

-STOP DB2 MODE(QUIESCE)
-STOP DB2 MODE(FORCE)

Installation WebSphere MQ for Z/OS
instructions trouvées sur http://publibfp.boulder.ibm.com/epubs/pdf/i1025483.pdf
fichier de distribution correspondant aux jcl d'installation
CSQ531.ACSQINST
procedure à suivre page 37

JCL de customisation CSQ531.ACSQINST(CSQ8SYSJ)


Setup Guide MQ for z/OS
http://publibfp.boulder.ibm.com/epubs/pdf/csqsav02.pdf
Ajouter les libraries
CSQ531.SCSQAUTH
CSQ531.SCSQLINK
à ADCD.ZOSV14S.PARMLIB(LPALSTIM)

Mise à jour LPA et LINKLST
Les commandes suivantes sont dynamiques, après un IPL, elles sont prises en compte via
SETPROG LPA,ADD,MODNAME=(CSQ3INI,CSQ3EPX),DSNAME=CSQ531.SCSQLINK
SETPROG LPA,ADD,MODNAME=(CSQ3EcMX),DSNAME=csq531.sCSQsNLe
SETPROG LPA,ADD,MASK=*,DSNAME=CSQ531.SCSQLINK

pour cela ajouter
LNKLST ADD NAME(LNKLST00) DSN(CSQ531.SCSQAUTH) VOLUME(S4RES1)
LNKLST ADD NAME(LNKLST00) DSN(CSQ531.SCSQLINK) VOLUME(S4RES1)
à la fin de ADCD.ZOSV14S.PARMLIB(PROGIM)

Mettre à jour ADCD.ZOSV14S.PARMLIB(PROGIM)


APF ADD
DSNAME(CSQ531.SCSQLINK) VOLUME(S4RES1)
APF ADD
DSNAME(CSQ531.SCSQAUTH) VOLUME(S4RES1)
APF ADD
DSNAME(CSQ531.CSQ1.SCSQAUTH) VOLUME(S4RES1)
APF ADD
DSNAME(CSQ531.SCSQSNLE) VOLUME(S4RES1)
APF ADD
DSNAME(CSQ531.SCSQCICS) VOLUME(S4RES1)
APF ADD
DSNAME(CSQ531.SCSQANLE) VOLUME(S4RES1)
APF ADD
DSNAME(CSQ531.SCSQMVR1) VOLUME(S4RES1)
APF ADD
DSNAME(CSQ531.SCSQMVR2) VOLUME(S4RES1)
APF ADD
DSNAME(DSN710.SDSNLOAD) VOLUME(S4DB21) avec les STEPLIB de la proc CSQ1MSTR


ajouter les MODULES(CSQ3EPX,CSQ3INI)dans ADCD.ZOSV14S.PARMLIB(IEALPADI)
sous la forme :
INCLUDE LIBRARY(CSQ531.SCSQLINK)
MODULES(CSQ3EPX,
CSQ3INI)

Normalement il faut aussi le faire pour
(CSQ3EMX),DSNAME=CSQ531.SCSQLNLx où x est le langage local installé (pas sur hercules ADCD)

Mise à jour de la PPT
Ajouter à la fin de ADCD.ZOSV14S.PARMLIB(SCHED00)
PPT PGMNAME(CSQYASCP) /* CSQ - THIS IS REQUIRED FOR WEBSPHERE MQ */
CANCEL /* CAN BE CANCELLED */
KEY(7) /* STORAGE PROTECTION KEY */
SWAP /* PROGRAM IS SWAPPABLE */
NOPRIV /* NOT PRIVILEGED */
DSI /* REQUIRES DATA SET INTEGRITY*/
PASS /* NOT ALLOWED TO BYPASS PASS PROT */
SYST /* SYSTEM TASK SO NOT TIMED */
AFF(NONE) /* NO PROCESSOR AFFINITY */
NOPREF /* NO PREFERRED STORAGE FRAMES */
Mise à jour de la table des sous systems
déjà faite dans ADCD.ZOSV14S.PARMLIB(IEFSSNIM)
SUBSYS SUBNAME(CSQ1) /* MQ CSQ1 SUBSYSTEM */
INITRTN(CSQ3INI) INITPARM('CSQ3EPX,%CSQ1,M')

Command name prefix

/DISPLAY OPDATA donne le résultat suivant: (%CSQ1 est le préfixe de MQ)

RESPONSE=P390
IEE603I 12.46.27 OPDATA DISPLAY 113
PREFIX OWNER SYSTEM SCOPE REMOVE FAILDSP
$ JES2 P390 SYSTEM NO SYSPURG
%CSQ1 CSQ1 P390 SYSTEM NO PURGE
Procedure de démarrage de MQ
dans ADCD.ZOSV14S.PROCLIB(CSQ1MSTR) et CSQ1CHIN
La commande de démarrage de MQ à la console MVS est
%CSQ1 START QMGR
%CSQ1 START CHINIT

Arret MQ

par
%CSQ1 STOP CHINIT
%CSQ1 STOP QMGR MODE=FORCE

Administration MQ via le user P390 commande CSQOREXX

maj de la proc de logon de P390 ADCD.ZOSV14S.PROCLIB(DBSPROC) par ajout des lib suivantes à ISPLLIB
// DD DSN=CSQ531.CSQ1.SCSQAUTH,DISP=SHR
// DD DSN=CSQ531.SCSQANLE,DISP=SHR
// DD DSN=CSQ531.SCSQAUTH,DISP=SHR
// DD DSN=CEE.SCEERUN,DISP=SHR
// DD DSN=DSN710.SDSNLOAD,DISP=SHR

Modifier le nom de la INITQ du bridge CICS dans CSQ531.CSQ1.SCSQPROC(CSQ4INYG) comme suit: (à la place de CICSA.INITQ)
DEFINE QLOCAL( 'CICS01.INITQ' ) +
QSGDISP( QMGR ) +
on puut le faire en ligne de commande

Define a Local Queue - 1

Complete fields, then press F8 for further fields, or Enter to define queue.

More: +
Queue name . . . . . . . . . CICS01.INITQ
Disposition . . . . . . . . . Q G=Group, S=Shared, Q=Qmgr on CSQ1
Description . . . . . . . . . CKTI initiation queue

Put enabled . . . . . . . . . Y Y=Yes, N=No
Get enabled . . . . . . . . . Y Y=Yes, N=No
Usage . . . . . . . . . . . . N N=Normal, X=XmitQ
Storage class . . . . . . . . SYSVOLAT
CF structure name . . . . . .
Ajouter la définition de la transmission queue
CSQ531.CSQ1.SCSQPROC(CSQ4CKBM) à partir du modèle fourni dans CSQ531.SCSQPROC(CSQ4CKBM)
et ajouter ce membre dans le DDNAME CSQINP2 (définitions des ressources) de la proc CSQ1MSTR


Browse des Queues MQ
Sous le user P390 option 6 lancer :
ex 'csq531.SCSQclst(csq4rch1)'
avec les infos suivantes :(attention case sensitive)

Queue Manager Name : CSQ1 :

Queue Name : JRULES.TARGET.QUEUE :

À noter que l’outil fait un MQOPEN en mode exclusif, donc ne partage pas l’ouverture simultanée avec un autre (code 2042: Object in use)

------------- IBM WebSphere MQ for z/OS -- Sample Programs - Row 1 to 13 of 15
COMMAND ==>

Queue Manager : CSQ1 :
Queue : CSQ1.DEAD.QUEUE :

Message number 01 of 15 Total Msgs : 000000015

Msg Put Date Put Time Format User Put Application
No MM/DD/YYYY HH:MM:SS Name Identifier Type Name
01 11/29/2006 12:51:53 MQDEAD START2 00000028 WebSphere MQ Client
02 11/29/2006 15:41:47 MQDEAD START2 00000028 WebSphere MQ Client

Placer le curseur sur une ligne pour voir son détail (PF8 pour la suite)
------------- IBM WebSphere MQ for z/OS -- Sample Programs - Row 1 to
COMMAND ==>

Queue Manager : CSQ1 :
Queue : CSQ1.DEAD.QUEUE :
Forward to Q Mgr : CSQ1 :
Forward to Queue : AMQ.BFC7283E987B1000 :

Action : : (D)elete (F)orward

Message Content :
----------------------------------------------------------------------
Message Descriptor
StrucId : 'MD '
Version : 000000001
Report : 000000000
MsgType : 000000001
Expiry : -00000001
Feedback : 000000000
Encoding : 000000785
CodedCharSetId : 000000500
Format : 'MQDEAD '
Priority : 000000004
Persistence : 000000000
MsgId : 'C3E2D840C3E2D8F14040404040404040BFC7283ECFC7D000'X
CorrelId : '414D51214E45575F53455353494F4E5F434F5252454C4944'X
BackoutCount : 000000004
ReplyToQ : 'AMQ.BFC7283E987B1000 '
ReplyToQMgr : 'CSQ1 '
UserIdentifier : 'START2 '
AccountingToken :
'1A0FC3E2D8F1C3C8C9D5F0F9F3F8F8C3F3F00009388C30000000000000000000'X
ApplIdentityData : ' '
PutApplType : 000000028
PutApplName : 'WebSphere MQ Client for Java'
PutDate : '20061129'
PutTime : '12515363'
ApplOriginData : ' '

Dead Letter Header
StrucId : 'DLH '
Version : 000000001
Reason : 000000411
DestQName : 'SYSTEM.CICS.BRIDGE.QUEUE
DestQMgrName : 'CSQ1
Encoding : 000000785
CodedCharSetId : 000000500
Format : 'MQCICS '
PutApplType : 000000021
PutApplName : 'CICS CKBP '
PutDate : '20061129'
PutTime : '12515300'

Message Buffer : 188 byte(s)
00000000 : C3C9 C840 0000 0002 0000 00B4 0000 0000 'CIH ............'
00000010 : 0000 0000 4040 4040 4040 4040 0000 0000 '.... ....'





CICS

Mise en œuvre de CICSA
- problème de SVC 216 non installée (msg DFHKE014)
Installer Type3 SVC
voir http://publib.boulder.ibm.com/infocenter/cicsts/v3r1/index.jsp?topic=/com.ibm.cics.ts31.doc/dfhg4/dfhg4b0071.htm
copier de CICSTS22.CICS.SDFHLPA(DFHCSVC) vers ADCD.ZOSV14S.LPALIB(DFHCSVC)
Ajouter le module DFHCSVC dans ADCD.ZOSV14S.PARMLIB(IEALPADI)
ajouter la SVC 216 dans ADCD.ZOSV14S.PARMLIB(IEASVCIM)SVCPARM 216,REPLACE,TYPE(3),EPNAME(DFHCSVC) /* CICS SVC */
Mettre la librarie de la SIT en APF (programmes autorisés) dans ADCD.ZOSV14S.PARMLIB(PROGIM)
ajouter APF ADD DSNAME(CICSTS22.CICS.SDFHAUTH) VOLUME(S4CIC1)
mettre a jour la linklst LNKLST ADD NAME(LNKLST00) DSN(CICSTS22.CICS.SDFHLPA) VOLUME(S4CIC1)

DFHKE0101 DBDCCICS DFHSIP IS NOT APF-AUTHORIZED. CICS WILL TERMINATE.
Explanation: Part of CICS initialization must be done in an APF-authorized state. The kernel has detected that DFHSIP is not APF-authorized.
During initialization, CICS may not have access to the user's applid coded in the SIT. If CICS produces this message in these circumstances, it uses the default applid value DBDCCICS.

ajouter la librairie de LPA CICS à MVS
CICSTS22.CICS.SDFHLPA, dans ADCD.ZOSV14S.PARMLIB(LPALSTIM)
//IBMUSERB JOB (20,FB3),TRALEY,REGION=4M,
// CLASS=A,MSGCLASS=H,NOTIFY=&SYSUID,COND=(0,NE)
//ST2 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//SYSUT3 DD UNIT=SYSDA,SPACE=(3120,(20,10))
//SYSUT4 DD UNIT=SYSDA,SPACE=(3120,(20,10))
//IN3 DD DISP=SHR,DSN=CICSTS22.CICS.SDFHLPA
//OT3 DD DISP=SHR,DSN=ADCD.ZOSV14S.LPALIB
//SYSIN DD *
COPY INDD=((IN3,R)),OUTDD=OT3
S M=(DFHCSVC)
S M=(DFHDSPEX)
S M=(DFHDUMPX)
S M=(DFHIRP)
S M=(DFHSSEN)
S M=(DFHSSGC)
S M=(DFHSSWT)
S M=(DFH99SVC)


Démarrage de CICS
S CICSA
Cette procédure se trouve dans ADCD.ZOSV14S.PROCLIB(CICSA)

arrêt de CICS
par 'F CICSA,CEMT PERF SHUT IMMED'
ou directement CEMT PERF SHUT IMME sur un terminal connecté à CICS

DFHKE0101 DBDCCICS DFHSIP IS NOT APF-AUTHORIZED
It looks like your assembled SIT table's load module is not in the STEPLIB concatenation...
j'ai vérifié, mais ça veut aussi dire que tous les modules soit ne sont pas autorisés,
soit qu'il en manque, soit qu'ils ne sont pas en LPA, soit qu'on a pas encore fait IPL CLPA

Pour faire IPL CLPA démarrer hercules une fois avec LOADPARM 0A82CS..

Activation du bridge MQ-CICS

activer TCPIP dans CICS
activer TCPIP=YES dans CICSTS22.SYSIN(DFH$SIP1)
CSV031I LIBRARY ACCESS FAILED FOR MODULE CEEEV003, RETURN CODE 24, REASON CODE 2
mettre REG='64M' dans les paramètres de démarrage du CICSA - ADCD.ZOSV14S.PROCLIB(CICSA)


http://publib.boulder.ibm.com/infocenter/cicsts/v2r2/topic/com.ibm.cics.ts22.doc/dfhtm/dfhtmgm.htm#dfhtmgm

définir un fichier DFHBRNSF (unicité du token sur l'allocate à travers le bridge)


//DEFDS JOB accounting info,name,MSGCLASS=A
//TDINTRA EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//SYSIN DD *
DEFINE CLUSTER(NAME(CICSTS22.CICS.DFHBRNSF)-
INDEXED-
TRK(1 1)-
RECORDSIZE(384 384)-
KEYS(13 20)-
FREESPACE(0 50)-
SHAREOPTIONS(2 3)-
LOG(NONE)-
VOLUME(S4CIC1)-
CISZ(512)) -
DATA (NAME(CICSTS22.CICS.DFHBRNSF.DATA)-
CISZ(512)) -
INDEX (NAME(CICSTS22.CICS.DFHBRNSF.INDEX)-
CISZ(512))
/*
//



définition de DFHBRNSF dans le démarrage de CICS
CEDA DEF FILE(DFHBRNSF) GROUP(DFHBRVSL) interdite car c'est un nom réservé

CEDA INSTALL FILE(DFHBRNSF) GROUP(DFHBRVSL) >>> INSTALL SUCCESSFUL
CEDA ADD GROUP(DFHBRVSL) LIST(XYZLIST) pour le prendre en compte au prochain démarrage
CEMT SET FILE(DFHBRNSF) OPEN ENABLED >>>>>>> OPEN/CLOSE FAILED
Ajouté dans la proc de démarrage de CICSA


//DFHBRNSF DD DISP=SHR,
// DSN=&INDEX2..DFHBRNSF
//* DATASETS FOR LINK3270 support
après redémarrage les 2 commandes ci dessus sont OK
CEMT SET FILE(DFHBRNSF) OPEN ENABLED >>>>>>> NORMAL

Autoinstall du bridge
Autoinstall du bridge par ajout de
AIBRIDGE=YES dans CICSTS22.SYSIN(DFH$SIP1)

Définition du service TCPIP pour rendre CICS accessible depuis une CTG
CEDA DEF TCPIPSERVICE(montcp) GROUP(grscort)
puis ajouter les caractériqtiques suivantes:

CEDA View TCpipservice( MONTCP )
TCpipservice : MONTCP
GROup : GRSCORT
DEscription : LISTENER TCP POUR CTG
Urm :
POrtnumber : 01435 1-65535
STatus : Open Open ! Closed
PRotocol : Eci Iiop ! Http ! Eci
TRansaction : CIEP
Backlog : 00010 0-32767
TSqprefix :
Ipaddress : ANY On a qu'une seule adresse dans TCPIP hercules
SOcketclose : No No ! 0-240000 (HHMMSS)
SECURITY
SSl : No Yes ! No ! Clientauth
Certificate :
AUthenticate : No ! Basic ! Certificate ! AUTORegister
+ ! AUTOMatic


Enfin ajouter la commande d'installation
CEDA INS TCPIPSERVICE(montcp) GROUP(grscort)
suivi d'un arrêt relance de CICS (??)





définition du CICS Gateway
remplacer les ++hlq ... dans CSQ531.SCSQPROC(CSQ4S100)
DESCRIPTION(CREDIT CHECK SAMPLE - ACCOUNT FILE)
DSNAME(CICSTS22.CSQ1.ACCTFIL) LSRPOOLID(1)
RECORDSIZE(80) KEYLENGTH(10)

puis soumettre le job IBMUSER.LIB.JCL(DFHCSDUP) suivant:


Activation de l’interface RACF CICS
RDEFINE STARTED CICSA.CICSA STDATA(USER(CICSA))
setropts raclist(started) refresh
RDEFINE ACICSPCT(C*) UACC(READ)


ADDUSER CICSA DFLTGRP(SYS1) NAME(CICSUser) OWNER(IBMUSER) PASSWORD(SYS1) CICS


//IBMUSERB JOB (20,FB3),TRALEY,REGION=4M,
// CLASS=A,MSGCLASS=H,NOTIFY=&SYSUID,COND=(0,NE)
//STEP1 EXEC PGM=DFHCSDUP,REGION=0M,
// PARM='CSD(READWRITE),PAGESIZE(60),NOCOMPAT'
//STEPLIB DD DSN=CICSTS22.CICS.SDFHLOAD,DISP=SHR
//*******************************************************************
//* DEFINITION DES GROUPES DE RESSOURCES CICS GATEWAY
//*
//*
//*******************************************************************
//* DD DSN=CICSTS22.CICS.USERLIB.TABLES,DISP=SHR
//DFHCSD DD UNIT=SYSDA,DISP=SHR,DSN=CICSTS22.CICS.DFHCSD
//SECNDCSD DD UNIT=SYSDA,DISP=SHR,DSN=CICSTS22.CICS.FILEA
//*`INDD DD UNIT=SYSDA,DISP=SHR,DSN=EXTRACT.INPUT.DATASET
//*OUTDD DD UNIT=SYSDA,DISP=SHR,DSN=EXTRACT.OUTPUT.DATASET
//SYSPRINT DD SYSOUT=*
//SYSIN DD DSN=CSQ531.SCSQPROC(CSQ4B100),DISP=SHR
// DD DSN=CSQ531.SCSQPROC(CSQ4D100),DISP=SHR
// DD DSN=CSQ531.SCSQPROC(CSQ4S100),DISP=SHR
// DD *
ADD GROUP(CSQCAT1) LIST(CICSGW)
ADD GROUP(CSQKDQ1) LIST(CICSGW)
ADD GROUP(CSQ4SAMP) LIST(CICSGW)
//



activer MQCONN=YES dans CICSTS22.SYSIN(DFH$SIP1) ainsi que les paramètres de connexion suivants
INITPARM=(CSQCPARM=’SN=CSQ1,TN=001,IQ=CICS01.INITQ’)

ajouter les libraries de MQ à la proc ADCD.ZOSV14S.PROCLIB(CICSA)
//STEPLIB DD DSN=&INDEX2..SDFHAUTH,DISP=SHR
// DD DSN=CEE.SCEERUN,DISP=SHR
// DD DSN=CSQ531.SCSQAUTH,DISP=SHR
// DD DSN=CSQ531.SCSQCICS,DISP=SHR
//DFHRPL DD DSN=&INDEX2..SDFHLOAD,DISP=SHR
// DD DSN=CEE.SCEECICS,DISP=SHR
// DD DSN=CEE.SCEERUN,DISP=SHR
// DD DSN=CSQ531.SCSQANLE,DISP=SHR


une fois CICS démarré , se connecter à CICS et passer les commandes suivantes
CEDA INSTALL GROUP(CSQCAT1)
CEDA INSTALL GROUP(CSQKDQ1)
CEDA INSTALL GROUP(CSQ4SAMP)
CEDA INSTALL GROUP(CSQCKB)

pour installer automatiquement les ressources CSQ dans le startup de CICS
voir GRPLIST=(XYZLIST), dans CICSTS22.SYSIN(DFH$SIP1)
CEDA ADD GROUP(CSQCAT1) list(XYZLIST)
CEDA ADD GROUP(CSQKDQ1) list(XYZLIST)
CEDA ADD GROUP(CSQ4SAMP) list(XYZLIST)
CEDA ADD GROUP(CSQCKB) list(XYZLIST)

compilation CICS - exemple pour Call Out
ADCD.ZOSV14S.PROCLIB(IGYWCL) ajout de
//STEPLIB DD DSNAME=CICSTS22.CICS.SDFHLOAD,DISP=SHR

JCL de Compilation : metre à jour le nom de programme en gras

//CICSCOB JOB ACTINFO1,'IBMUSER',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),
// REGION=0M,NOTIFY=&SYSUID
//CICSCOB EXEC DFHYITVL,OUTC=*
//*
//* PRECOMPILE, COMPILE, REBLOCK ET LINKEDIT DES SOURCES COBOL
//* POUR SAMPLES MQ PUT ET GET SIMPLES EN COBOL
//* PROCEDURE APPELEE: ADCD.ZOSV14S.PROCLIB(DFHYITVL)
//*
//* POUR MQ AJOUTER EN FIN DE SYSIN
//* INCLUDE CSQSTUB(CSQBSTUB)
//*
//*TRN.SYSIN DD DISP=SHR,DSN=CSQ531.SCSQCOBS(CSQ4CVJ1)
//TRN.SYSIN DD DISP=SHR,DSN=IBMUSER.LIB.COBOL(CSQ4CVK2)
//*
//* WEBSPHERE MQ FOR Z/OS LIBRARY CONTAINING CICS STUB
//*
//COB.SYSLIB DD DSN=CSQ531.SCSQCOBC,DISP=SHR
// DD DSN=CICSTS22.CICS.SDFHCOB,DISP=SHR
// DD DSN=IBMUSER.LIB.COBOL,DISP=SHR
//LKED.CSQSTUB DD DSN=CSQ531.SCSQLOAD,DISP=SHR
//LKED.SYSIN DD *
INCLUDE CSQSTUB(CSQCSTUB)
NAME CSQ4CVK2(R)
/*

Pour prendre en compte le nouveau module dans CICS faire
CEMT SET PROG(CSQ4CVK2) NEWCOPY
Avant de relancer la transaction
Lancer la connexion avec le bridge par CKQC
option start
name csq1

démarrage automatique : http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/topic/com.ibm.mq.csqsav.doc/csqsav0447.htm


Lancement des Samples MQ

voir http://www-1.ibm.com/support/docview.wss?rs=203&uid=swg24000071&loc=en_US&cs=utf-8&lang=en
Les librairies sont installées dans
CSQ531.SCSQCLST
CSQ531.SCSQCOBC
CSQ531.SCSQCOBS
CSQ531.SCSQLOAD

Paramétrage des clists dans CSQ531.SCSQCLST
ISPEXEC LIBDEF ISPLLIB DATASET ID('CSQ531.SCSQLOAD')
ISPEXEC LIBDEF ISPPLIB DATASET ID('CSQ531.SCSQPNLA')
ISPEXEC LIBDEF ISPMLIB DATASET ID('CSQ531.SCSQMSGE')

SAMPLES MQ – CICS (base du call out)
Les sources en gras ont servis pour faire le sample Call Out sous CICS

Table 35. CICS Put and Get samples
Member name
For language
Description
Source supplied in library
Executable supplied in library
CSQ4CCK1
C
Source program
SCSQC37S
SCSQCICS
CSQ4CCJ1
C
Source program
SCSQC37S
SCSQCICS
CSQ4CVJ1
COBOL
Source program
SCSQCOBS
SCSQCICS
CSQ4CVK1
COBOL
Source program
SCSQCOBS
SCSQCICS
CSQ4S100
independent
CICS system definition data set
SCSQPROC
None

Lancement de la transaction sample PUT et GET ci-dessus
MVPT,1,*,10,P,JRULES.TARGET.QUEUE insère un msg paddé à 10 ’*’
MVGT,1,B,S, JRULES.TARGET.QUEUE lit un msg sans le détruire
MVGT,1,D,S, JRULES.TARGET.QUEUE lit un msg et le détruit


CICS BMS reverse utility
pour décompiler des BMS format load vers un format source
IBMUSER.LIB.JCL(DFHBMSUP)
//RUNPROG EXEC PGM=DFHBMSUP,PARM='CSQ4CCM',REGION=2M
//STEPLIB DD DSN=CICSTS22.CICS.SDFHLOAD,DISP=SHR
//DFHRPL DD DISP=SHR,DSN=CSQ531.SCSQCICS
//BMSOUT DD DISP=SHR,DSN=CICSTS22.BMSOUT(CSQ4CCM)
//SYSUDUMP DD SYSOUT=*

Test du Call Out depuis CICS
Définition des ressources CICS
Transaction de test CSQ4CVK2 (inspirée de CSQ4CVK1) ouvre les 2 queues locales, écrit sur la TARGET et fait un GET WAIT pendant 5 sec sur la JRULES.REPLY.QUEUE indiquée en Reply-to-queue avec le même Correlation-id


Définir la transaction de test via CEDA :

définir le PROGRAM CSQ4CVK2
copie de la transaction MVPT en SCPT dans le groupe CSQ4SAMP puis remplacer le PROGRAM CSQ4CVK1 en CSQ4CVK2



Définition des ressources MQ pour Call Out
Définir un channel de type SVRCONN et 2 queues sur le central


*
* DEFINITION DE LA LOCAL QUEUE FOR INQUIRE JRULES
*
DEF QL(JRULES.TARGET.QUEUE) QSGDISP(QMGR) REPLACE USAGE(NORMAL) -
DESCR( 'TARGET QUEUE ON CSQ1 FOR JRULES') PUT(ENABLED) DEFPSIST(NO) -
GET(ENABLED) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) -
MAXDEPTH(10000) MAXMSGL(4000)
*
* DEFINITION DE LA LOCAL QUEUE FOR REPLY BY JRULES
*
DEF QL(JRULES.REPLY.QUEUE) QSGDISP(QMGR) REPLACE USAGE(NORMAL) -
DESCR( 'TARGET QUEUE ON CSQ1 FOR JRULES') PUT(ENABLED) DEFPSIST(NO) -
GET(ENABLED) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) -
MAXDEPTH(10000) MAXMSGL(4000)
*
* DEFINITION DU CHANNEL RECEIVER FOR MQCLIENT
* A FAIRE COTE JRULES UNIQUEMENT SI ON AVAIT UN QMGR COTE JRULES
*
*DEFINE CHANNEL(JRULES.TO.HOST) CHLTYPE(CLNTCONN) TRPTYPE(TCP) +
*CONNAME(10.1.15.43) QMNAME(CSQ1) DESCR('CLIENT-CONNECTION TO CSQ1')
*
* DEFINITION DU CHANNEL RECEIVER SUR HOST CICS
*
DEFINE CHANNEL(JRULES.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) +
DESCR('SERVER-CONNECTION FOR JRULES')


Test du call out
Démarrer un répondeur connecté sur HERCULES, port 1414 sur la queue JRULES.TARGET.QUEUE
Et lancer la transaction

SCPT,BUFFER on met ce qu’on veut


IMS
Transactions de test sous IMS

IVTCX
transaction conversationnelle décrite dans IMS810.SDFSEXEC(DFSIVA35)
source MFS dans IMS810.SDFSISRC(DFSIVF35)




pour démarrer
/for ivtcx ou
ivtcx suivi de 2 blanc mini
puis envoyer 4 blancs suivi de END suivi de 5 blancs mini (bbbbENDbbbbb)


Transaction IVTNV
Transaction Non Conversationnelle VSAM
Appel sans MFS
ivtnv dis ansart

Appel avec MFS
/for ivtnv

PSB IMS810.SDFSISRC(DFSIVP2)
MFS IMS810.SDFSISRC(DFSIVF2)
ASM IMS810.SDFSISRC(DFSIVA2)



Transaction de test IMS-DB2 DSN8CS
Transaction avec accès DB2 non conversationnelle démarrée par le transaction name ou par /for DSN8ICGO
Le mode d’emploi est le même que sous CICS (documentation ci-jointe D8SC)

Interface IMS - DB2 et installation du sample
IMS810.PROCLIB(DFSPBIV1) avec SSM=V810,
IMS810.PROCLIB(IVP1V810) avec SST=DB2,SSN=DSN1,LIT=SYS1,ESMT=DSNMIN10,CRC=-
IMS810.PROCLIB(IMS81CR1) avec // RGSUF=IV1,PARM1='SSM=V810',PARM2=
Exécuter DSN710.SDSNSAMP(DSNTEJ4C) (voir annexes)


Activation du bridge MQ-IMS

Déclarer un sous système à IMS

Dans IMS810.PROCLIB(DFSPBIV1) on a déclaré SSM=V810
Ce qui fait que dans dans IMS810.PROCLIB(IVP1V810) on va déclarer nos sous systèmes IMS

SST=DB2,SSN=DSN1,LIT=SYS1,ESMT=DSNMIN10,CRC=- >> sous système DB2
SST=DB2,SSN=CSQ1,LIT=MQM1,ESMT=CSQQESMT,REO=R >> sous système MQ

Assembler le source CSQ531.SCSQASMS(CSQQDEFV) contenant les littéraux CSQ1 et MQM1 avec la procédure CSQ531.SCSQPROC(CSQ4DEFV)

Activation de la sécurité pour le bridge MQ-IMS

RDEFINE STARTED CSQ1MSTR.CSQ1MSTR STDATA(USER(CSQ1MSTR))
Créer le user CSQ1MSTR nopassword noexpire et l’ajouter au goupe SYS1

Créer le profile IMSXCF.IVP1OTMA.CSQ1 dans la class FACILITY
Ajouter le groupe SYS1 en accès READ sur IMSXCF.IVP1OTMA.IMSMEM

Créer le profile IMSXCF.IVP1OTMA.IMSMEM dans la class FACILITY
Ajouter le groupe SYS1 en accès READ sur IMSXCF.IVP1OTMA.IMSMEM

setropts raclist(started) refresh

DISPLAY résumé des class FACILITY pour le Bridge :

CLASS NAME
----- ----
FACILITY IMSXCF.IVP1OTMA.CSQ1

LEVEL OWNER UNIVERSAL ACCESS YOUR ACCESS WARNING
----- -------- ---------------- ----------- -------
00 P390 NONE ALTER NO
USER ACCESS ACCESS COUNT
---- ------ ------ -----
P390 ALTER 000000
SYS1 READ 000000
START2 READ 000000
CSQ1MSTR READ 000000


CLASS NAME
----- ----
FACILITY IMSXCF.IVP1OTMA.IMSMEM

LEVEL OWNER UNIVERSAL ACCESS YOUR ACCESS WARNING
----- -------- ---------------- ----------- -------
00 P390 NONE NONE NO
USER ACCESS ACCESS COUNT
---- ------ ------ -----
IBMUSER NONE 000000
SYS1 NONE 000000
CSQ1MSTR NONE 000000


Sur Hercules , la connexion du Bridge MQ-IMS ne fonctionne que avec un /SECURE OTMA NONE
L’appel d’une transaction non sécurisée comme IVTNV est OK, mais une transaction DB2 comme DSN8CS n’est possible qu’après avoir commencé un premier accès réussi avec une signature sur IMS Connect



Pour info : Sample JCL pour linkedit des applis IMS qui veulent appeler MQ Dynamiquement
//DYNSTUB EXEC PGM=IEWL,PARM=’RENT,REUS,MAP,XREF’
//SYSPRINT DD SYSOUT=*
//ACSQMOD DD DISP=SHR,DSN=thlqual.SCSQLOAD
//IMSLIB DD DISP=SHR,DSN=ims.reslib
//SYSLMOD DD DISP=SHR,DSN=private.load¹
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,1)
//SYSLIN DD *
INCLUDE ACSQMOD(CSQQSTUB)
INCLUDE IMSLIB (DFSLI000)
ALIAS MQCONN,MQCONNX,MQDISC MQI entry points
ALIAS MQGET,MQPUT,MQPUT1 MQI entry points
ALIAS MQOPEN,MQCLOSE MQI entry points
ALIAS MQBACK,MQCMIT MQI entry points
ALIAS CSQBBAK,CSQBCMT MQI entry points
ALIAS MQINQ,MQSET MQI entry points
ALIAS DFSPLI,PLITDLI IMS entry points
ALIAS DFSCOBOL,CBLTDLI IMS entry points
ALIAS DFSFOR,FORTDLI IMS entry points
ALIAS DFSASM,ASMTDLI IMS entry points
ALIAS DFSPASCL,PASTDLI IMS entry points
ALIAS DFHEI01,DFHEI1 IMS entry points
ALIAS DFSAIBLI,AIBTDLI IMS entry points
ALIAS DFSESS,DSNWLI,DSNHLI IMS entry points
MODE AMODE(31),RMODE(ANY) Note RMODE
NAME CSQQDYNS(R)
/*

Définir le Bridge IMS dans le CSQ1MSTR

Créer un CSQ4ZPR2 en remplacement de CSQ4ZPRM (démarrage par défaut de MQ) pour ajouter les paramètres du bridge MQ/OTMA (le nom du groupe XCF à joindre au démarrage)
CSQ531.SCSQPROC(CSQ4ZPRM)
Avec OTMACON=(IVP1OTMA,,DFSYDRU0,2147483647,CSQ),
Et des options de linkedit suivantes :
//SYSLIN DD *
INCLUDE SYSP
INCLUDE ARVP
INCLUDE LOGP
INCLUDE OLDLOAD(CSQZPARM)
ENTRY CSQZMSTR
NAME CSQZPAR2(R)

Appelé par la commande de démarrage suivante : %CSQ1 START QMGR PARM(CSQZPAR2)

Définition des ressources MQ pour le bridge MQ-IMS

Storage class name . . . . . IMSBRDG
Disposition . . . . . . . . : QMGR CSQ1
Description . . . . . . . . : Storage class pour Brige MQ-IMS
Page set identifier . . . . : 1 0 - 99
XCF group name . . . . . . : IVP1OTMA
XCF member name . . . . . . : CSQ1
Figure 1: Définition de la Storage Class associée au groupe XCF de IMS



Définition du Trigger Monitor
Queue name . . . . . . . . . IVP1.INITQ
Disposition . . . . . . . . . Q G=Group, S=Shared, Q=Qmgr on CSQ1
Description . . . . . . . . . IMSBRDG initiation queue
Put enabled . . . . . . . . . Y Y=Yes, N=No
Get enabled . . . . . . . . . Y Y=Yes, N=No
Usage . . . . . . . . . . . . N N=Normal, X=XmitQ
Storage class . . . . . . . . IMSBRDG
CF structure name . . . . . .
Figure 2: définition de l'Init Queue du Trigger monitor

Définition de la locale Queue pour les messages input vers IMS en utilisant l’option DEFINE LIKE de la SYSTEM.CICS.BRIDGE.QUEUE
Queue name . . . . . . . . . SYSTEM.IMS.BRIDGE.QUEUE
Disposition . . . . . . . . : QMGR CSQ1
Description . . . . . . . . : IMS BRIDGE REQUEST QUEUE
Put enabled . . . . . . . . : Y Y=Yes, N=No
Get enabled . . . . . . . . : Y Y=Yes, N=No
Usage . . . . . . . . . . . : N N=Normal, X=XmitQ
Storage class . . . . . . . : IMSBRDG
Creation method . . . . . . : PREDEFINED
Page set identifier . . . . :
Use counts - Output . . . . : 0 Input . . . . : 0
Current queue depth . . . . : 0
Default bind . . . . . . . : O O=Open, N=Notfixed
Default persistence . . . . : Y Y=Yes, N=No
Default priority . . . . . : 0 0 - 9
Message delivery sequence . : F P=Priority, F=FIFO
Permit shared access . . . : Y Y=Yes, N=No
Default share option . . . : E E=Exclusive, S=Shared
Index type . . . . . . . . : N N=None, M=MsgId, C=CorrelId, G=GroupId,
T=MsgToken
Maximum queue depth . . . . : 999999999 0 - 999999999
Maximum message length . . : 4194304 0 - 104857600
Trigger Definition
Trigger type . . . . . . : F F=First, E=Every, D=Depth, N=None
Trigger set . . . . . . : Y Y=Yes, N=No
Trigger message priority : 0 0 - 9
Trigger depth . . . . . : 1 1 - 999999999
Initiation queue . . . . : IVP1.INITQ
Process name . . . . . . :
Trigger data . . . . . . :
Figure 3:définition de la queue locale pour IMS


Définitions RACF obligatoires pour le Bridge MQ-IMS

Définir la FACILITY IMSXCF.IVP1OTMA.CSQ1 avec accès READ pour le groupe SYS dont fait partie le user START2 qui démarre le QManager CSQ1MSTR

CLASS NAME
----- ----
FACILITY IMSXCF.IVP1OTMA.CSQ1

LEVEL OWNER UNIVERSAL ACCESS YOUR ACCESS WARNING
----- -------- ---------------- ----------- -------
00 P390 NONE ALTER NO

USER ACCESS ACCESS COUNT
---- ------ ------ -----
P390 ALTER 000000
SYS1 READ 000000





MQIIH Header : http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.csqzak.doc/mqiih.htm

Activation de la sécurité RACF pour IMS

RDEFINE TIMS * UACC(ALTER)
SETROPTS RACLIST(TIMS)




IMS810.INSTALIB(IV3C201T) pour faire valider l’accès aux transactions par RACF
SECURITY TYPE=(AGNEXIT,RACFTERM,NOTRANEX,NOSIGNEX), X
SECLVL=(TRANAUTH,SIGNON), X
TERMNL=YES, X
SECCNT=2, X
PASSWD=YES, X
TRANCMD=YES





Ajouter/modifier IMS810.PROCLIB(DFSPBIV1) pour que /SIGN soit validé par RACF

RCF=T,
RVFY=Y,
SGN=Y,
Lancer un archive pour IMS
DFS3258A SYSTEM WAITING FOR AN ONLINE LOG DATA SET - NEED ARCHIVE
Au message ci-dessus il faut archiver
IMS810.JOBS(GENJCL)

IMS : Ajout de transactions et programmes de test
IBMUSER.LIB.JCL(IMSCOBOL) compilation link-edit en PGMLIB
IBMUSER.LIB.JCL(PSBGEN) PSBGEN dans la PSBLIB
IBMUSER.LIB.JCL(ACBGEN) ACNGEN dans ACBLIB
IBMUSER.LIB.JCL(STAGE1) Ajout des transactions dans IBMUSER.LIB.JCL(SYSDEF1)
IBMUSER.LIB.JCL(STAGE1O) jobs générés par STAGE1 il faut releaser les jobs 1 à 1 par la commande A sous SDSF
IBMUSER.LIB.JCL(OLCUTL) Online Change
IMS810.INSTALIB(IV3E314J) SMU à passer pour remettre la sécurité
Puis sous IMS /MOD PREPARE ALL suivi de /MOD COMMIT

**********************************************************************
* TRANSACTIONS DE TEST POUR SCORT
**********************************************************************
SPACE 2
APPLCTN PSB=TEST1,PGMTYPE=TP
TRANSACT CODE=TESTNR1,MODE=SNGL, X
MSGTYPE=(SNGLSEG,NONRESPONSE,1)
TRANSACT CODE=TESTR1,MODE=SNGL, X
MSGTYPE=(SNGLSEG,RESPONSE,1)
SPACE
APPLCTN GPSB=TEST2,LANG=COBOL,PGMTYPE=TP
TRANSACT CODE=TESTNR2,MODE=SNGL, X
MSGTYPE=(SNGLSEG,NONRESPONSE,1)
SPACE
APPLCTN PSB=TEST3,PGMTYPE=TP
TRANSACT CODE=TESTNR3,MODE=SNGL, X
MSGTYPE=(SNGLSEG,NONRESPONSE,1)
SPACE
APPLCTN PSB=TEST4,PGMTYPE=TP
TRANSACT CODE=TESTC,SPA=(1000),MODE=SNGL, X
MSGTYPE=(SNGLSEG,NONRESPONSE,1)
SPACE
APPLCTN PSB=TEST5,PGMTYPE=TP HDAM/VSAM-JAVA
TRANSACT CODE=TESTJ,MODE=SNGL, X
MSGTYPE=(SNGLSEG,NONRESPONSE,1)

Définition de codes transactions nouveaux

Dépannage Avec JJ Perrin

ex 'ims810.SDFSEXEC(dfsappl)' 'ims810'

------------------------------------------------------------------------------
IMS Application Menu
Command ===>

Select the desired application and press Enter.



1. Installation Verification Program (IVP)
2. Partition Definition Utility (HALDB)
3. Syntax Checker for IMS parameters
4. Single Point of Control (SPOC)
5. IPCS


To exit the application, press F3.

options 1, 3 puis enter
options 2 , 6

edit IV3C201T C2 TASK - Browse the STAGE1 Source Deck
après que la sysin iv3c201t a été modifiée :
Exécuter la phase 1 iv3c203J
executer phase 2 IV3C301J
Exécuter IV3E314J E3 JOB - Establish IMS Security
PSBGEN ajouter les nouveaux PSB

//DFSIVP1 EXEC PROC=PSBGEN,MBR=TLOAV,SOUT='*'
//C.SYSIN DD *
PCB TYPE=TP,MODIFY=YES,ALTRESP=YES
PSBGEN PSBNAME=TLOAV,LANG=COBOL
END
et exécuter IMS810.INSTALIB(IV3E202J) pour ne prendre que les PSB nouveaux

ACBGEN modifier pour ajouter le build du PSB


(BUILD PSB=TLOAV )

et executer IV3E203J E2 JOB - ACBGEN

Exécuter IV3E316J E3 JOB - Copy Staging Libraries

Création de formats nouveaux et online change

Modifier IV3E204J pour ajouter les nouveaux formats dans IMS810.FORMAT
Vérifier la création du nouveau format par exemple comme ceci

DFS1048I MOMO15 MSG SIZE=0332 DATE=07/30/07 TIME=11.28.20 CREATED.

DFS1010I MOMG15 DOF 3270 027F IGNORE HAS BEEN DELETED - FORMAT
DFS1010I MOMG15 DIF 3270 027F IGNORE HAS BEEN DELETED - FORMAT
DFS1010I MOMI15 MSG HAS BEEN DELETED - FORMAT
DFS1010I MOMO15 MSG HAS BEEN DELETED - FORMAT
DFS1011I MOMG15 DOF SIZE=0AE7 3270 24X80 027F IGNORE DATE=07/30/07 TIME=11.28.20 ADDED.
DFS1011I MOMG15 DIF SIZE=0382 3270 24X80 027F IGNORE DATE=07/30/07 TIME=11.28.20 ADDED.
DFS1011I MOMI15 MSG SIZE=0446 DATE=07/30/07 TIME=11.28.20 ADDED.
DFS1011I MOMO15 MSG SIZE=0332 DATE=07/30/07 TIME=11.28.20 ADDED.


Chercher la librairie de formats en ligne pour préparer le switch par la commande MODIFY

R 80,/MODIFY PREPARE FMTLIB
IEE600I REPLY TO 80 IS;/MODIFY PREPARE FMTLIB
DFS3499I ACTIVE DDNAMES: MODBLKSA IMSACBA FORMATA MODSTAT

copier par 3.3 tous les éléments de IMS810.FORMAT vers IMS810.FORMATx (ici B puisque A est en ligne)

R 81,/MODIFY COMMIT
IEE600I REPLY TO 81 IS;/MODIFY COMMIT
DFS3499I ACTIVE DDNAMES: MODBLKSA IMSACBA FORMATB MODSTAT

Se connecter à IMS et tester par la commande /for MOMO15 (dans l’exemple ci-dessus)

Mise en place de DFSINSX
Question : comment avoir « Invalid destination » lorsqu’on tape un code transaction erroné ? pour cela il faut installer et configurer l’exit DFSINSX0

Purger msg sur term async :
/STO USER toto
/DEQ USER toto PURGE
/STA USER toto
/che

IMS ne démarre plus

Stopper IMS81OM1 IMS81RL1 IMS81RM1 IMS81SC1
Faire un 3.2 sur IMS810.RDS

Le deleter puis le réallouer
Data Set Name . . . : IMS810.RDS

Volume serial . . . : S4IMS1 Allocated tracks . : 5
Device type . . . . : 3390 Allocated extents . : 1
Organization . . . : PS
Record format . . . : FBS
Record length . . . : 4096
Block size . . . . : 4096 Current Utilization
1st extent tracks . : 5 Used tracks . . . . : 5
Secondary tracks . : 0 Used extents . . . : 1
Passer les jobs suivants depuis la clist ‘ims810.SDFSEXEC(dfsappl)' 'ims810'

IV3H101J H1 JOB - Allocate Data Sets
IV3H102J H1 JOB - Initialize RECON / Register Data Bases

Redémarrer IMS
IMSJAVA installation & mise en oeuvre

Les jobs d’installation:
lancer IMS810.SDFSSMPL(DFSJDDDF) avec hlqual = IMS810


IMS810.PROCLIB(DFSJMP) est appelé par IMS810.jobs(IMSMSG) est appelé par ims810.TCFSLIB(DSFTCP) qui contient les commandes ims de démarrage

IMS810.JOBS(HFSALLOC)

IMS810.SDFSSMPL(DFSJDDDF)
IMS810.JOBS(HFSMOUNT)
http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.ims.doc.jgr/runningjmpivp.htm

Mount
permanent du HFS IMSJAVA dans ADCD.ZOSV14S.PARMLIB(BPXPRM00)
MOUNT FILESYSTEM('IMS810.SDFSHFS')
TYPE(HFS)
MODE(RDWR)
MOUNTPOINT('/usr/lpp/ims')
IPCSEMNSEMS(35)

Afficher les MOUNT UNIX Services
F BPXOINIT,FILESYS=DISPLAY,ALL
installer imsjava81
Executer IMS810.SDFSBASE(DFSJSMKD) qui installe imsjava81
//IKJEFT01 EXEC PGM=IKJEFT01
//SYSEXEC DD DSN=IMS810.SDFSBASE,
// DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
PROF MSGID
DFSJMKDR /V1R4S
Ce job crée le lien symbolique libJavTDLI.so -> DFSCLIB

Exécuter IMS810.JOBS(TCHMOD)
//TCHMOD PROC TPARM=
//BPX EXEC PGM=BPXBATCH,PARM='&TPARM'
//SYSPRINT DD SYSOUT=*
//STDOUT DD PATH='/V1R4S/usr/lpp/ims/tchmod.out',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHMODE=SIRWXU
//STDERR DD PATH='/V1R4S/usr/lpp/ims/tchmod.out',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHMODE=SIRWXU
// PEND
//STEP1 EXEC TCHMOD,TPARM='sh touch /V1R4S/usr/lpp/ims/JVM.out'
//*
//STEP2 EXEC TCHMOD,
// TPARM='sh chmod 777 /V1R4S/usr/lpp/ims/JVM.out'
//*
//STEP3 EXEC TCHMOD,TPARM='sh touch /V1R4S/usr/lpp/ims/JVM.err'
//*
//STEP4 EXEC TCHMOD,TPARM='sh chmod 777 /V1R4S/usr/lpp/ims/JVM.err'

Modifier IMS810.PROCLIB(DFSJMP) pour ajouter ceci
//JAVAOUT DD PATH='/V1R4S/usr/lpp/ims/JVM.out'
//JAVAERR DD PATH='/V1R4S/usr/lpp/ims/JVM.err'
Verifier le JDK 1.3
P390:/: >PATH=/usr/lpp/Printsrv/bin:/bin:.:/usr/lpp/java/IBM/J1.3/bin
P390:/: >export PATH
P390:/: >java -version
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1)
Classic VM (build 1.3.1, J2RE 1.3.1 IBM OS/390 Persistent Reusable VM build cm131s-20030418 (JIT enabled: jitc))

JVMST039:Cannot allocate Shared Memory segment in initializeSharedMemory
l’article suivant décrit la mise en oeuvre d’une region IMSJAVA:
Getting a JMP region to run

JVMST039:Cannot allocate Shared Memory segment in initializeSharedMemory
La doc IBM de ce message est
JVMST039
Cannot allocate Shared Memory segment in initializeSharedMemory
Explanation:
An error occurred during an attempt to create shared memory. The call to xhpiSharedMemoryCreate() failed. This can happen only during initialization when -Xjvmset is running.
System action:
A return code of JNI_ENOMEM is passed back to the JNI_CreateJavaVM call.
User response:
Allocate more virtual storage to the JVM region. If the problem remains, contact your IBM service representative
Pour cela il faut mettre RGN=0M sur IMS810.PROCLIB(DFSJMP)
// PROC SOUT=A,RGN=0M,SYS2=,…………….
Démarrage et arrêt de IMSJAVA
A la console :
IVP1STA REG IMS81JMP pour starter
IVP1STO REG JOBNAME IMS81JMP pour stopper (quand elle ne s’arrête pas toute seule)

Rappel : la commande /CHE FREEZE d’arrêt de IMS stoppe toutes les MPP et JMP

Une fois démarré, Il y a 2 SYSOUT dans la IMS81JMP (ils sont visibles sous SDSF par un ? sur la sysout de IMS81JMP)

SYS00001 IMS81JMP JMPRGN 103 START2 H 0 1
SYS00002 IMS81JMP JMPRGN 104 IBMUSER H 0 1


Le premier est le MASTER qui resette la 2eme à chaque syncpoint
La deuxième est le WORKER cad la JVM d’exécution des transactions utilisateurs , elle prend le user de la signature IMS lors de la création de la JVM si celui-ci est valide , sinon elle reste sous START2 comme la première

Sous OMVS on voit les 2 JVM par la commande ps -el

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
1000080 HY 0 33620014 1 - - - - 2191 - ? 0:42 DFSRCJM0
1000080 HY 0 67174448 1 - - - - 2191 - ? 0:42 DFSPCJM0

La classe executée par le « /format IVTCM » est DFSIVP37=samples/ivp/ims/IMSIVP
Qui est dans le /V1R4S/usr/lpp/ims/samples.jar pointé par le LIBPATH

Doc de référence IMSJAVA

http://www-128.ibm.com/developerworks/java/jdk/diagnosis/131.html



IMS Java IVP in IMS environment (JBP & JMP regions)

// =================================================================
//
//
// Licensed Materials - Property of IBM
//
// 5655-C56
//
// (C) Copyright IBM Corp. 1996, 2002. All Rights Reserved.
//
// US Government Users Restriced Rights - Use, duplication or
// disclosure restricted by GSA ADP Schedule Contract with IBM Corp
// The source code for this program is not published or otherwise
// divested of its trade secrets, irrespective of what has been
// deposited with the U.S. Copyright Office
//
// =================================================================

1. The samples.jar file contains the executable class files of the
IMS Java IVP applications. (see NOTE 3)

2. To run the JBP IVP sample, do the following:
i. Set the 4 JVM members, found in IMS.PROCLIB, as follows:
a. DFSJVMAP:- (see NOTE 4)
DFSJBP=samples/ivp/ims/IMSIVPJBP
b. DFSJVMEV:-
LIBPATH=/usr/lpp/J1.3/bin/classic:/usr/lpp/J1.3/bin:/usr/lpp/ims/imsjava81
c. DFSJVMMS:-
-Dibm.jvm.shareable.application.class.path=/myApplications/samples.jar
-Dibm.jvm.trusted.middleware.class.path=/usr/lpp/ims/imsjava81/imsjava.jar
-Xinitacsh128k
-Xinitsh128k
-Xmaxf0.6
-Xminf0.3
-Xmx64M
-Xoss400k
d. DFSJVMWK:-
-Xmaxf0.6
-Xminf0.3
-Xmx64M
-Xoss400k
ii. Edit the JBP JCL proc to set the EXEC PARMs MBR= and PSB=.
They should be set as PSB=DFSIVP67 and MBR=DFSJBP.
iii. Submit the JCL to bring up the JBP region. This will also
execute the application.
iv. Check the JVM.out file or wherever the JCL has set the output
to go to. It should contain output as shown below:
LastName = LAST1
FirstName = FIRST1
Extension = 8-111-1111
ZipCode = D01/R01

3. To run the JMP IVP sample, do the following:
i. Set the following 4 JVM members, found in IMS.PROCLIB, as follows:
a. DFSJVMAP:- (see NOTE 4)
DFSIVP37=samples/ivp/ims/IMSIVP
b. DFSJVMEV:-
LIBPATH=/usr/lpp/J1.3/bin/classic:/usr/lpp/J1.3/bin:/usr/lpp/ims/imsjava81
c. DFSJVMMS:-
-Dibm.jvm.shareable.application.class.path=/myApplications/samples.jar
-Dibm.jvm.trusted.middleware.class.path=/usr/lpp/ims/imsjava81/imsjava.jar
-Xinitacsh128k
-Xinitsh128k
-Xmaxf0.6
-Xminf0.3
-Xmx64M
-Xoss400k
d. DFSJVMWK:-
-Xmaxf0.6
-Xminf0.3
-Xmx64M
-Xoss400k

ii. Submit the JCL job to bring up a JMP(Java Message Processing) region. The JCL
should have the above 4 members specifed in the PROC definition.

iii. Go to the IMS terminal and invoke the formatted screen for the transaction:
/format IVTCM

iv. You can ADD, DELETE, UPDATE, INSERT the records of the IVP database from the
formatted screen.


NOTE:
1. The last name is the key of this IVP database.
2. Some of the (key)data already seeded into this database:
Last names:- LAST1, LAST2, LAST3, LAST4, LAST5
3. For easier understanding purposes, this README file will assume the following:
a) imsjava.jar, libJavTDLI.so and samples.tar files were installed in the directory:
/usr/lpp/ims/imsjava81
b) the IBM developer Kit for OS/390 Java(TM) 2 Technology Edition with Persistent
Reusable Java Virtual Machine (JDK 1.3) was installed at:
/usr/lpp/J1.3
c) samples.jar is at the following directory:
/myApplications
4. DFSIVP37 is the PSB name and IVTCM is the transaction associated with DFSIVP37
for the JMP IVP.

CICS transactions de test

Transaction ACCT

Procedures for installing application programs
-----------------------------------------------------------------------------------------------------
Online EXCI Integrated translator Online EXCI
-----------------------------------------------------------------------------------------------------
Assembler - - - DFHEITAL DFHEXTAL
C DFHYITDL DFHYXTDL - - -
C++ DFHYITEL DFHYXTEL - - -
COBOL DFHYITVL DFHYXTVL DFHZITCL - -
PL/I DFHYITPL DFHYXTPL DFHZITPL - -

assemblage des maps
préalable par DFHMAPS car il y a des COPY ACCTSET dans les sources cobol
explication: The DFHMAPS procedure writes the symbolic map set output to the library specified on the DSCTLIB parameter,
which defaults to the CICSTS22.CICS.SDFHMAC library.
If you want to include symbolic map sets in a user copy library

//ACCTSET EXEC DFHMAPS,MAPNAME=ACCTSET,OUTC=*
//COPY.SYSUT1 DD DISP=SHR,DSN=CICSTS22.CICS.SDFHSAMP(ACCTSET)
//*
//* ASSEMBLAGE ET LINKEDIT DES MAPSET DE L'APPLICATION PRIMER
//* PROCEDURE APPELEE: ADCD.ZOSV14S.PROCLIB(DFHMAPS)
//*

compilation
des sources COBOL dans IBMUSER.LIB.JCL(ACCT00)
//ACCT00 EXEC DFHYITVL,OUTC=*
//*
//* PRECOMPILE, COMPILE, REBLOCK ET LINKEDIT DES SOURCES COBOL
//* ACCT00 ACCT01 ACCT02 ACCT03 ACCT04
//* PROCEDURE APPELEE: ADCD.ZOSV14S.PROCLIB(DFHYITVL)
//*
//TRN.SYSIN DD DISP=SHR,DSN=CICSTS22.CICS.SDFHSAMP(ACCT04)
//LKED.SYSIN DD *
INCLUDE SYSLIB(ACCT04)
NAME ACCT04(R)
/*

Installation
des composants sous CICS avec CEDA Display group(DFH$ACCT)
NAME TYPE GROUP
ACCTFIL FILE DFH$ACCT
ACCTIX FILE DFH$ACCT
ACCTSET MAPSET DFH$ACCT
ACCT00 PROGRAM DFH$ACCT
ACCT01 PROGRAM DFH$ACCT
ACCT02 PROGRAM DFH$ACCT
ACCT03 PROGRAM DFH$ACCT
ACCT04 PROGRAM DFH$ACCT
ACCT TRANSACTION DFH$ACCT
ACEL TRANSACTION DFH$ACCT
ACLG TRANSACTION DFH$ACCT
AC01 TRANSACTION DFH$ACCT
AC02 TRANSACTION DFH$ACCT
AC03 TRANSACTION DFH$ACCT
AC05 TRANSACTION DFH$ACCT
AC06 TRANSACTION DFH$ACCT


installation par CEDA INSTALL group(DFH$ACCT) qui doit donner le message INSTALLED
ou celui-ci lorsqu'on le refait une seconde fois (faire PF9 pour avoir le msg détail)

INSTALL GROUP(DFH$ACCT)
MESSAGES - USE ENTER TO RETURN
S Install failed because an existing definition for file ACCTFIL could
not be deleted.
S Install failed because an existing definition for file ACCTIX could
not be deleted.
W GROUP DFH$ACCT has been partially installed.

installer automatiquement le goupe DFH$ACCT dans le startup de CICS
voir GRPLIST=(XYZLIST), dans CICSTS22.SYSIN(DFH$SIP1)
CEDA ADD GROUP(DFH$ACCT) list(XYZLIST)

OVERTYPE TO MODIFY
CEDA ADd
Group ==> DFH$ACCT
List ==> XYZLIST
Before ==>
After ==>
ADD SUCCESSFUL

Programmes de test

ECHO
VERIDATE

compilation/link
par la procédure suivante
//CICSCOB EXEC DFHYITVL,OUTC=*
//TRN.SYSIN DD DISP=SHR,DSN=IBMUSER.LIB.COBOL(ECHO)
//LKED.SYSIN DD *
NAME ECHO(R)

CEDA DEFINE GROUP(SCORT)
CEDA DEFINE PROG(ECHO) GROUP(SCORT)
CEDA DEFINE PROG(VERIDATE) GROUP(SCORT)
CEDA INSTALL GROUP(SCORT)
CEDA ADD GROUP(SCORT) LIST(XYZLIST)

tester le reload
CEMT SET PROG(ECHO) NEWCOPY

Samples CICS DB2
· Transaction D8CS Samples et jobs dans DSN710.SDSNSAMP

Les jobs à éxécuter (voir en annexes, les liens ci-dessous)
1. DSNTEJ1
2. DSNTEJ5A
3. DSNTEJ5C

Exemple de DCLGEN (menu M ;11) avec le user P390

SPUFI SSID: DSN1
===>

Enter the input data set name: (Can be sequential or partitioned)
1 DATA SET NAME ... ===> DSN710.NEW.SDSNSAMP(DSNTESA)
2 VOLUME SERIAL ... ===> (Enter if not cataloged)
3 DATA SET PASSWORD ===> (Enter if password protected)

Enter the output data set name: (Must be a sequential data set)
4 DATA SET NAME ... ===> P390.SPUFI.OUT

Specify processing options:
5 CHANGE DEFAULTS ===> * (Y/N - Display SPUFI defaults panel?)
6 EDIT INPUT ...... ===> * (Y/N - Enter SQL statements?)
7 EXECUTE ......... ===> YES (Y/N - Execute SQL statements?)
8 AUTOCOMMIT ...... ===> YES (Y/N - Commit after successful run?)
9 BROWSE OUTPUT ... ===> YES (Y/N - Browse output data set?)

For remote SQL processing:
10 CONNECT LOCATION ===>

Activation de la sécurité dans CICS
L’activation de la sécurité dans CICS est nécessaire pour exécuter des transactions qui ont une interface avec DB2 car DB2 doit avoir accès à l’ACEE - le control bloc du user RACF crée au login (RACINIT)

Pour activer la sécurité CICS/RACF, mettre SEC=YES dans la CICSTS22.SYSIN(DFH$SIP1)
Plus les commandes suivantes


PERMIT DSN1.SASS CLASS(DSNR) ID(CICSUSER) ACCESS(READ)
RDEFINE DSNR (DSN1.SASS) OWNER(IBMUSER)
setropts raclist(dsnr) refresh

SAMPLES LABOPHARM
A suivre…

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db2.doc.apsg/rntiad.htm





CICS TCPIP EZA Samples
Compilation de EZACICSS et EZACICCS
//CICSDB2 JOB ACTINFO1,'IBMUSER',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),
// REGION=0M,NOTIFY=&SYSUID
//CICSDB2 PROC NAME=TEMPNAME,SUFFIX=1$,
// INDEX='CICSTS22.CICS', QUALIFIER(S) FOR CICS LIBRARIES
// PROGLIB='CICSTS22.CICS.SDFHLOAD', NAME OF O/P LIBRARY…BA25137C
// DSCTLIB='CICSTS22.CICS.SDFHCOB', PRIVATE MACRO/DSECT…BA25137C
// LE370HLQ='CEE', Qualifier(s) for LE/370 libraries
// OUTC=*, Class for print output
// REG=0M, REGION SIZE FOR ALL STEPS
// LNKPARM='LIST,XREF', Link edit parameters
// STUB='DFHEILIC', Linkedit INCLUDE for DFHELII
// WORK=SYSDA Unit for work datasets
//*********************************************************
//* DB2 PRECOMPILE THE COBOL PROGRAM
//*********************************************************
//PC EXEC PGM=DSNHPC,
// PARM='HOST(COB2),XREF,SOURCE,FLAG(I),APOST',REGION=8M
//STEPLIB DD DISP=SHR,DSN=DSN710.SDSNEXIT
// DD DISP=SHR,DSN=DSN710.SDSNLOAD
//DBRMLIB DD DISP=OLD,DSN=IBMUSER.DBRMLIB.DATA(&NAME)
//SYSCIN DD DSN=&&DSNHOUT,DISP=(MOD,PASS),UNIT=SYSDA,
// SPACE=(800,(500,500))
//SYSLIB DD DISP=SHR,DSN=IBMUSER.LIB.COBOL
//SYSPRINT DD SYSOUT=*
//SYSTERM DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSUT1 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSUT2 DD SPACE=(800,(500,500),,,ROUND),UNIT=SYSDA
//SYSIN DD DISP=SHR,DSN=IBMUSER.LIB.COBOL(&NAME)
//********************************************************************
//*** BIND THIS PROGRAM.
//********************************************************************
//BIND EXEC PGM=IKJEFT01,
// COND=((4,LT,PC))
//STEPLIB DD DISP=SHR,DSN=DSN710.SDSNEXIT
// DD DISP=SHR,DSN=DSN710.SDSNLOAD
//DBRMLIB DD DISP=OLD,DSN=IBMUSER.DBRMLIB.DATA(&NAME)
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//********************************************************************
//* COMPILE THE COBOL PROGRAM
//********************************************************************
//TRN EXEC PGM=DFHECP&SUFFIX,
// REGION=®,
// PARM='SP'
//STEPLIB DD DSN=&INDEX..SDFHLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=&OUTC
//SYSPUNCH DD DSN=&&SYSCIN,
// DISP=(,PASS),UNIT=&WORK,
// DCB=BLKSIZE=400,
// SPACE=(400,(400,100))
//*
//COB EXEC PGM=IGYCRCTL,REGION=®,
// PARM='NODYNAM,LIB,OBJECT,RENT,RES,APOST,MAP,XREF,NODBCS' X
// 'NSYMBOL(DBCS)'
//SYSLIB DD DSN=&DSCTLIB,DISP=SHR
// DD DSN=&INDEX..SDFHCOB,DISP=SHR
// DD DSN=&INDEX..SDFHMAC,DISP=SHR
// DD DSN=&INDEX..SDFHSAMP,DISP=SHR
//SYSPRINT DD SYSOUT=&OUTC
//SYSIN DD DSN=&&SYSCIN,DISP=(OLD,DELETE)
//SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),
// UNIT=&WORK,SPACE=(80,(250,100))
//SYSUT1 DD UNIT=&WORK,SPACE=(460,(350,100))
//SYSUT2 DD UNIT=&WORK,SPACE=(460,(350,100))
//SYSUT3 DD UNIT=&WORK,SPACE=(460,(350,100))
//SYSUT4 DD UNIT=&WORK,SPACE=(460,(350,100))
//SYSUT5 DD UNIT=&WORK,SPACE=(460,(350,100))
//SYSUT6 DD UNIT=&WORK,SPACE=(460,(350,100))
//SYSUT7 DD UNIT=&WORK,SPACE=(460,(350,100))
//*
//COPYLINK EXEC PGM=IEBGENER,COND=(7,LT,COB)
//SYSUT1 DD DSN=&INDEX..SDFHCOB(&STUB),DISP=SHR
//SYSUT2 DD DSN=&&COPYLINK,DISP=(NEW,PASS),
// DCB=(LRECL=80,BLKSIZE=400,RECFM=FB),
// UNIT=&WORK,SPACE=(400,(20,20))
//SYSPRINT DD SYSOUT=&OUTC
//SYSIN DD DUMMY
//*
//LKED EXEC PGM=IEWL,REGION=®,
// PARM='&LNKPARM',COND=(5,LT,COB)
//SYSLIB DD DSN=&INDEX..SDFHLOAD,DISP=SHR
// DD DSN=&LE370HLQ..SCEELKED,DISP=SHR
// DD DISP=SHR,DSN=TCPIP.SEZATCP
// DD DISP=SHR,DSN=DSN710.SDSNLOAD
//SYSLMOD DD DSN=&PROGLIB,DISP=SHR
//SYSUT1 DD UNIT=&WORK,DCB=BLKSIZE=1024,
// SPACE=(1024,(200,20))
//SYSPRINT DD SYSOUT=&OUTC
//SYSLIN DD DSN=&&COPYLINK,DISP=(OLD,DELETE)
// DD DSN=&&LOADSET,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
// PEND
//CICSDB2 EXEC CICSDB2,NAME=EZACICSC
//TRN.SYSIN DD DSN=&&DSNHOUT,DISP=(OLD,DELETE)
//COB.SYSLIB DD DSN=CSQ531.SCSQCOBC,DISP=SHR
// DD DISP=SHR,DSN=IBMUSER.LIB.COBOL
// DD DSN=CICSTS22.CICS.SDFHCOB,DISP=SHR
// DD DSN=CICSTS22.CICS.SDFHSAMP,DISP=SHR
// DD DSN=CICSTS22.CICS.SDFHMAC,DISP=SHR
//LKED.SYSLMOD DD DISP=SHR,DSN=IBMUSER.LIB.LOAD
//LKED.CICSLOAD DD DISP=SHR,DSN=CICSTS22.CICS.SDFHLOAD
//BIND.SYSTSIN DD *
DSN S(DSN1)
BIND PLAN(EZACICSC) MEMBER(EZACICSC) ACTION(REP) RETAIN ISOLATION(CS)
END
//LKED.SYSIN DD *
INCLUDE SYSLIB(EZACICAL)
INCLUDE CICSLOAD(DSNCLI)
NAME EZACICSC(R)
/*Puis test de Test de EZACICSS par lancement de CECI START TR(SRV2) FROM(4000)
Qui donne EZACICSS: CONNECT NOT ESTABLISHED ATTACHMENT FACILITY NOT ACTIVE

Démarrage manuel de l’interface TCPIP CICS

EZAO,START,CICS

Pour cela il faut activer l’interface DB2CONN
CEDA copy group(DFH$DB2) as(DB2CICS) to(DFH£DB2)
Puis modification du DB2ID à DSN1 suivi de CEDA INSTALL GROUP(DB2GRP)

Mise en œuvre Link3270
Installation transaction NACT
Assembler les MAP via IBMUSER.LIB.JCL(DFHMAPS)
//DFHMAPS EXEC DFHMAPS,MAPNAME=DFH0MNA,OUTC=*
//COPY.SYSUT1 DD DISP=SHR,DSN=CICSTS22.CICS.SDFHSAMP(DFH0MNA)

Compiler les programmes DFH0CNA1 à 5 via le job IBMUSER.LIB.JCL(CSQ4CV)
En remplaçant les cartes suivantes :

//TRN.SYSIN DD DISP=SHR,DSN=CICSTS22.CICS.SDFHSAMP(DFH0CNA5)
//COB.SYSLIB DD DSN= CICSTS22.CICS.SDFHSAMP,DISP=SHR
//LKED.SYSIN DD *
NAME DFH0CNA5(R)

Définir les fichiers de l’application et remplir le jeu d’essai:
Lancer le job CICSTS22.CICS.SDFHINST(DFHNADEF) en modifiant
&DSVOL=S4CIC1
&DSUNIT=SYSDA
&DSINDEX=CICSTS22.CICS conformément à l’installation Hercules


Installation automatique de ressources CICS

pour la transaction NACT et le TCPIPSERVICE ECI
CEDA ADD GROUP(DFH$NACT) LIST(XYZLIST)
CEDA ADD GROUP(DFH$SOT) LIST(XYZLIST)


CEDA I GROUP DFHCLNT

DFHZCN1 PROGRAM DFHCLNT * INSTALL SUCCESSFUL
DFHZCT1 PROGRAM DFHCLNT * INSTALL SUCCESSFUL
DFHCOMCL TRANCLASS DFHCLNT * INSTALL SUCCESSFUL
CCIN TRANSACTION DFHCLNT * INSTALL SUCCESSFUL
CTIN TRANSACTION DFHCLNT * INSTALL SUCCESSFUL

CEDA I GROUP DFHCLNT
CEDA I GROUP DFH$SOT
CEDA I GROUP DFHIPECI
CEDA I GROUP DFHBRVSL installation du fichier DFHBRNSF as local VSAM non RLS

Installation du Bridge Passthrough pour Link3270
Liste des fichiers du SupportPack CA1E
téléchargement à http://www.ibm.com/software/cics/txppacs
CICSTS22.CA1E.CPY
CICSTS22.CA1E.DEF
CICSTS22.CA1E.JCL
CICSTS22.CA1E.LOAD
CICSTS22.CA1E.MAP


Ajouter la loadlib dans la proc de CICSA
DFHRPL DD DSN=&INDEX2..SDFHLOAD,DISP=SHR
…/…
DD DISP=SHR,DSN=CICSTS22.CA1E.LOAD


Ajouter les ressources du fichier CICSTS22.CA1E.DEF dans le démarrage de CICS

CEDA ADD GROUP(BRQTOOL) LIST(XYZLIST)
CEDA ADD GROUP(BRQTYPE) LIST(XYZLIST)
CEDA ADD GROUP(BRQTERM) LIST(XYZLIST)

Charger le fichier BRQFILOD
par la transaction BRFL

Modifier la TWASize de BRLI
CEDA ALTER TRANSAC(BRLI) GROUP(BRQTOOL)
Puis metre 2500 dans TWASize et faire
CEDA I TRANSAC(BRLI) GROUP(BRQTOOL) pour prendre en compte cette modif



CICS BMS reverse utility
pour décompiler des BMS format load vers un format source
IBMUSER.LIB.JCL(DFHBMSUP)
//RUNPROG EXEC PGM=DFHBMSUP,PARM='CSQ4CCM',REGION=2M
//STEPLIB DD DSN=CICSTS22.CICS.SDFHLOAD,DISP=SHR
//DFHRPL DD DISP=SHR,DSN=CSQ531.SCSQCICS
//BMSOUT DD DISP=SHR,DSN=CICSTS22.BMSOUT(CSQ4CCM)
//SYSUDUMP DD SYSOUT=*

Test de samples PUT et GET MQ en batch
Programmes Batch MQ pour Call Out
Sources en annexes issu des samples CVQ4BVJ1 et CVQ4BVK1

Compilation
//CSQ4BVK3 JOB ACTINFO1,'IBMUSER',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),
// REGION=0M,NOTIFY=&SYSUID
//COMPILE EXEC IGYWCL,
// PARM='NODYNAM,LIB,OBJECT,RENT,APOST,MAP,XREF'
//*
//* COMPILE ET LINKEDIT DES SOURCES COBOL BATCH
//* CSQ4BVK1 ET CSQ4BVJ1
//* PROCEDURE APPELEE: ADCD.ZOSV14S.PROCLIB(IGYWCL)
//*
//*COBOL.SYSIN DD DISP=SHR,DSN=CSQ531.SCSQCOBS(CSQ4BVK1)
//COBOL.SYSIN DD DISP=SHR,DSN=IBMUSER.LIB.COBOL(CSQ4BVK3)
//COBOL.SYSLIB DD DISP=SHR,DSN=CSQ531.SCSQCOBC
// DD DISP=SHR,DSN=IBMUSER.LIB.COBOL
//LKED.CSQSTUB DD DSN=CSQ531.SCSQLOAD,DISP=SHR
//LKED.SYSLMOD DD DISP=SHR,DSN=CSQ531.SCSQLOAD
//LKED.SYSIN DD *
INCLUDE CSQSTUB(CSQBSTUB)
NAME CSQ4BVK3(R)
/*

Exécution du call out en batch

//CSQ4BVK3 JOB ACTINFO1,'IBMUSER',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),
// REGION=0M,NOTIFY=&SYSUID
//* parm: nbre d’appels , buffer
//EXEC EXEC PGM=CSQ4BVK3,PARM='1119,11111111111111111111'
//STEPLIB DD DSN=CSQ531.SCSQANLE,DISP=SHR
// DD DSN=CSQ531.SCSQANLE,DISP=SHR
// DD DSN=CSQ531.SCSQAUTH,DISP=SHR
// DD DSN=CSQ531.SCSQLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*




compiliation
par IBMUSER.LIB.JCL(BATCHCPL) - 01.00
//COMPILE EXEC IGYWCL,OUTC=*
//*
//* COMPILE ET LINKEDIT DES SOURCES COBOL BATCH
//* CSQ4BVK1 ET CSQ4BVJ1
//* PROCEDURE APPELEE: ADCD.ZOSV14S.PROCLIB(IGYWCL)
//*
//COBOL.SYSIN DD DISP=SHR,DSN=CSQ531.SCSQCOBS(CSQ4BVK1)
//LKED.CSQSTUB DD DSN=CSQ531.SCSQLOAD,DISP=SHR
//LKED.SYSLMOD DD DISP=SHR,DSN=CSQ531.SCSQLOAD
//LKED.SYSIN DD *
INCLUDE CSQSTUB(CSQBSTUB)
NAME CSQ4BVK1(R)



Exécution
par CSQ531.SCSQPROC(CSQ4BVJR) - 01.01
//*
//*PUTMSGS EXEC PGM=CSQ4BVK1,REGION=1024K,
//* PARM=('CSQ1,TARGET.QUEUE,1,$,50,P')
//*
//GETMSGS EXEC PGM=CSQ4BVJ1,REGION=1024K,
// PARM=('CSQ1,TARGET.QUEUE,1,D,N')
//* PARM=('++QMGR++,++QUEUE++,++MSGS++,++GET++,++SYNC++')


Test de samples PUT et GET MQ sous cics
sources CSQ531.SCSQCOBS(CSQ4CVJ1) GET via la transaction MVGT
CSQ531.SCSQCOBS(CSQ4CVK1) PUT via la transaction MVPT

Compilation et link-edit
tester le chargement si problème par
CEMT SET PROG(CSQ4CVJ1) NEWCOPY

//CICSCOB EXEC DFHYITVL,OUTC=*
//*
//* PRECOMPILE, COMPILE, REBLOCK ET LINKEDIT DES SOURCES COBOL
//* POUR SAMPLES MQ PUT ET GET SIMPLES EN COBOL
//* PROCEDURE APPELEE: ADCD.ZOSV14S.PROCLIB(DFHYITVL)
//*
//* POUR MQ AJOUTER EN FIN DE SYSIN
//* INCLUDE CSQSTUB(CSQBSTUB)
//*
//TRN.SYSIN DD DISP=SHR,DSN=CSQ531.SCSQCOBS(CSQ4CVJ1)
//*
//* WEBSPHERE MQ FOR Z/OS LIBRARY CONTAINING CICS STUB
//*
//COB.SYSLIB DD DSN=CSQ531.SCSQCOBC,DISP=SHR
//LKED.CSQSTUB DD DSN=CSQ531.SCSQLOAD,DISP=SHR
//LKED.SYSIN DD *
INCLUDE CSQSTUB(CSQCSTUB)
NAME CSQ4CVJ1(R)








Mise en place CALL OUT JRULES
Définitions
JCL de soumission de commandes
Placer les commandes dans le fichier CSQUCMD (j’ai mi 1h à comprendre…)
IBMUSER.LIB.JCL(CSQUTIL)
//CSQUTIL JOB ACTINFO1,'IBMUSER',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),
// REGION=0M,NOTIFY=&SYSUID
//CSQUTIL EXEC PGM=CSQUTIL,REGION=4096K,PARM='CSQ1'
//STEPLIB DD DSN=CSQ531.SCSQANLE,DISP=SHR
// DD DSN=CSQ531.SCSQAUTH,DISP=SHR
//CSQUCMD DD DISP=SHR,DSN=IBMUSER.LIB.JCL(QUEUEJRU)
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
COMMAND
/*

Objets MQ pour JRULES
Une queue pour les questions une autre pour la Reply-to-Queue et un channel type SVRCONN pour permettre à MQCLIENT de se connecter et d’accéder directement des queues locales

*
* DéFINITION DE LA LOCAL QUEUE FOR INQUIRE JRULES
*
DEF QL(JRULES.TARGET.QUEUE) QSGDISP(QMGR) REPLACE USAGE(NORMAL) -
DESCR( 'TARGET QUEUE ON CSQ1 FOR JRULES') PUT(ENABLED) DEFPSIST(NO) -
GET(ENABLED) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) -
MAXDEPTH(10000) MAXMSGL(4000)
*
* DéFINITION DE LA LOCAL QUEUE FOR REPLY BY JRULES
*
DEF QL(JRULES.REPLY.QUEUE) QSGDISP(QMGR) REPLACE USAGE(NORMAL) -
DESCR( 'TARGET QUEUE ON CSQ1 FOR JRULES') PUT(ENABLED) DEFPSIST(NO) -
GET(ENABLED) SHARE DEFSOPT(SHARED) MSGDLVSQ(PRIORITY) -
MAXDEPTH(10000) MAXMSGL(4000)
*
* DéFINITION DU CHANNEL RECEIVER FOR MQCLIENT
* à FAIRE COTé JRULES UNIQUEMENT SI ON AVAIT UN QMGR COTé JRULES
*
*DEFINE CHANNEL(JRULES.TO.HOST) CHLTYPE(CLNTCONN) TRPTYPE(TCP) +
*CONNAME(10.1.15.43) QMNAME(CSQ1) DESCR('CLIENT-CONNECTION TO CSQ1')
*
* DéFINITION DU CHANNEL RECEIVER SUR HOST CICS
*
DEFINE CHANNEL(JRULES.SVRCONN) CHLTYPE(SVRCONN) TRPTYPE(TCP) +
DESCR('SERVER-CONNECTION FOR JRULES')

Installation de jZOS (TOMCAT sur z/OS)
Voir http://www.dovetail.com/docs/jzos/tomcat.html
Ajouter export PATH=/usr/lpp/Printsrv/bin:/usr/lpp/java/IBM/J1.3/bin:$PATH dans /etc/profile

Download JZOS
http://www-03.ibm.com/servers/eserver/zseries/software/java/
http://www-03.ibm.com/servers/eserver/zseries/software/java/j142pcont.html

Installer TOMCAT sur z/OS
http://mir2.ovh.net/ftp.apache.org/dist/tomcat/tomcat-4/v4.1.36/bin/apache-tomcat-4.1.36.zip
Upload par FTP sur Hercules à /u/ibmuser/SCORT/ et Creation d’un lien pour commodité
Ln –s apache-tomcat-4.1.36.zip tomcat

Création d’une STC pour TOMCAT dans ADCD.ZOSV14S.PROCLIB(TOMCAT)

//EXJZOSVM PROC JAVACLS='org.apache.catalina.startup.Bootstrap',
// ARGS='start', < Args to Java class
// LIBRARY='P390.JZOS.LOADLIB', < STEPLIB FOR JZOSVM module
// VERSION='13', < JZOSVM version: 13, 14, 50
// LOGLVL='+T', < Debug LVL: +I(info) +T(trc)
// REGSIZE='0M', < EXECUTION REGION SIZE
// LEPARM=''
//JAVAJVM EXEC PGM=JZOSVM&VERSION,REGION=&REGSIZE,
// PARM='&LEPARM/&LOGLVL &JAVACLS &ARGS'
//STEPLIB DD DSN=&LIBRARY,DISP=SHR
//SYSPRINT DD SYSOUT=* < System stdout
//SYSOUT DD SYSOUT=* < System stderr
//STDOUT DD SYSOUT=* < Java System.out
//STDERR DD SYSOUT=* < Java System.err
//CEEDUMP DD SYSOUT=*
//ABNLIGNR DD DUMMY
//*
//*The following DDs can/should be present in the calling JCL
//*
//*STDIN DD < OPTIONAL - Java System.in
//STDENV DD DSN=ADCD.ZOSV14S.PROCLIB(TOMCATIN),DISP=SHR
Creation du STDENV
. /etc/profile
export JZOS_HOME=/u/ibmuser/jzos
export JAVA_HOME=/usr/lpp/java/IBM/J1.3
TOMCAT_HOME=/u/ibmuser/SCORT/tomcat
export PATH=/bin:"$éJAVA_HOMEè"/bin:
LIBPATH=/lib:/usr/lib:"$éJAVA_HOMEè"/bin
LIBPATH="$LIBPATH":"$éJAVA_HOMEè"/bin/classic
LIBPATH="$LIBPATH":"$éJZOS_HOMEè"
export LIBPATH="$LIBPATH":
export _BPXK_AUTOCVT=OFF
CLASSPATH="$éJAVA_HOMEè/lib/tools.jar"
CLASSPATH="$CLASSPATH":"$éTOMCAT_HOMEè/bin/bootstrap.jar"
CLASSPATH="$CLASSPATH":"$éJZOS_HOMEè/jzos.jar"
export CLASSPATH="$CLASSPATH":
export JZOS_ENABLE_MVS_COMMANDS=true
£ Use this variable to supply additional arguments to main
£export JZOS_MAIN_ARGS=""
£ Configure JVM options
£ Note that Tomcat requires default ASCII file.encoding
IJO="-Xms64m -Xmx128m"
IJO="$IJO -Djzos.home=$éJZOS_HOMEè"
IJO="$IJO -Dfile.encoding=ISO8859-1"
IJO="$IJO -Dcatalina.base=$éTOMCAT_HOMEè"
IJO="$IJO -Dcatalina.home=$éTOMCAT_HOMEè"
IJO="$IJO -Djava.io.tmpdir=$éTOMCAT_HOMEè/temp"
IJO="$IJO -Djava.endorsed.dirs="
IJO="$éIJOè$éTOMCAT_HOMEè/common/endorsed"
export IBM_JAVA_OPTIONS="$IJO "
export JAVA_DUMP_HEAP=false
export JAVA_PROPAGATE=NO
export IBM_JAVA_ZOS_TDUMP=NO

Déployer l’application smart

Copier smart.war dans /u/ibmuser/SCORT/tomcat/webapps
Aller dans /u/ibmuser/SCORT/apache-tomcat-4.1.36/webapps/smart/WEB-INF/classes
Et passer la commande
sed s/.$// log4j.xml > log4j.xml1
Puis
mv log4j.xml1 log4j.xml

aller dans http://hercules:8080/manager/html/list et faire install comme suit:

Install
Install directory or WAR file located on server
Context Path (optional):
XML Configuration file URL:
WAR or Directory URL:

Et verifier les erreurs dans /u/ibmuser/SCORT/apache-tomcat-4.1.36/logs
Puis metre à jour le host dans /u/ibmuser/SCORT/3.0/standalone/webapps/smart/WEB-INF/classes/scortconnectors.properties
Et lancer le host simulator avant de démarrer la connexion de l’application smart


Problems & TIPS on UNIX z/OS

Edition de fichers ASCII sur z/OS. Les commandes UNIX voient des fichiers EBCDIC par défaut, pour éditer en ASCII voir : http://www.dovetail.com/docs/jzos/editascii.html
2 étapes:
il faut positionner le tag ASCII sur les fichiers à éditer
exporter la variable _BPXK_AUTOCVT

chtag -tc ISO8859-1 myfile.properties
export _BPXK_AUTOCVT=ON

Les commandes suivantes sont ajoutées dans le /etc/profile pour que les comptes UNIX en héritent au logging

export PATH=/usr/lpp/Printsrv/bin:/usr/lpp/java/IBM/J1.3/bin:$PATH
export _BPXK_AUTOCVT=ON

Conversion des CR/LF(DOS) en LF(Unix)
sed s/.$// infilename >outfilename <<<<<<< à utiliser pour hercules z/OS

Conversion UNIX vers DOSsed s/$/x0d/ infilename >outfilename

Prise en compte permanente des fichiers ASCII sur le file System SCORT
MOUNT FILESYSTEM('IBMUSER.SCORT.HFS')
MOUNTPOINT('/u/ibmuser/SCORT')
TYPE(HFS)
TAG(TEXT,819) TAG(TEXT,819) identifies text files containing ASCII (ISO-8859-1) data
MODE(RDWR)

Too many open files

/u/ibmuser/SCORT/apache-tomcat-4.1.36/work/Standalone/localhost/fastrack/index_jsp.java:8: error while writing org.apache.jsp.index_jsp: /u/ibmuser/SCORT/apache-tomcat-4.1.36/work/Standalone/localhost/fastrack/index_jsp.class (EDC5124I Too many open files.)

Adapter les parameters suivants dans ADCD.ZOSV14S.PARMLIB(BPXPRM00)
MAXFILEPROC(10000)
NETWORK DOMAINNAME(AF_UNIX)
DOMAINNUMBER(1)
MAXSOCKETS(12000)
TYPE(UDS)

Installation de WebSphere 4.0.1
Sous P390 exec 'was401.sbboclib(bbowstrt)' 'WAS401'
Puis suivre les prescriptions de P390.WAS.CNTL(BBOINSTR)

Ajouter les lignes suivantes à ADCD.ZOSV14S.PARMLIB(PROGIM )
APF ADD
DSNAME(WAS401.SBBOLPA) VOLUME(S4WAS2)
APF ADD
DSNAME(WAS401.SBBOLOAD) VOLUME(S4WAS2)
APF ADD
DSNAME(WAS401.SBBOLD2) VOLUME(S4WAS2)
LNKLST ADD NAME(BBODBMDT) DSN(WAS401.SBBOLD2) VOLUME(S4WAS2)
LNKLST ADD NAME(BBOOCRMT) DSN(WAS401.SBBOLD2) VOLUME(S4WAS2)
LNKLST ADD NAME(BBODBMDT) DSN(WAS401.SBBOLD2) VOLUME(S4WAS2)

Ajouter les lignes suivantes à ADCD.ZOSV14S.PARMLIB(COMMNDDI )

COM='SETPROG LPA,ADD,MASK=*,DSNAME=WAS401.SBBOLOAD'
COM='SETPROG LPA,ADD,MASK=*,DSNAME=WAS401.SBBOLPA'
COM='SETPROG LPA,ADD,MASK=*,DSNAME=WAS401.SBBOMIG'
COM='SETPROG LPA,ADD,MASK=*,DSNAME=WAS401.SBBOULIB'

Ajouter les lignes suivantes à ADCD.ZOSV14S.PARMLIB(BPXPRM00 )

MOUNT FILESYSTEM('OMVS.WAS.CONFIG.HFS')
MOUNTPOINT('/WebSphere390/CB390')
TYPE(HFS)
MODE(RDWR)
MOUNT FILESYSTEM('WAS401.SBBOHFS')
MOUNTPOINT('/usr/lpp/WebSphere')
TYPE(HFS)
MODE(READ)

Mettre à jour ADCD.ZOSV14S.PARMLIB(IEASYSDI )

SCH=(DB,BB),

Ajouter à TCPIP.PROFILE.TCPIP

5556 TCP DAEMON01 SHAREPORT ; SSL port number for DAEMON01
5556 TCP BBODMN ; SSL port number for BBODMN

Jobs de cutomization: voir P390.WAS.CNTL(BBOINSTR)

BBOWCTR
BBOERRLG
BBORRSLS
BBOCBRAJ
BBOLDRAJ
BBOCBRAK
BBOWCHFS
BBOMCFG
BBOWCPY1
BBOMCRDB
BBOBIND
BBOTDBMC
BBOLDTBC
BBO1JCL
BBO2JCL
BBOCBGRT
BBOLDGRT
BBOMTDBM (can’t contact LDAP server)
BBOLD2DB


Doc WAS 401 : http://publib.boulder.ibm.com/infocenter/wasinfo/v4r0/index.jsp?topic=/com.ibm.websphere.v4.doc/welcome.html

Samples: http://www-306.ibm.com/software/webservers/appserv/zos_os390/lib/was_clients.html

export PATH=$PATH:/V1R4S/usr/lpp/db2/db2710/lib
IBMUSER:/V1R4S/usr/lpp/java/IBM/J1.3: >bin/java -cp /usr/lpp/db2/db2710/classes/db2j2classes.zip COM/ibm/db2os390/sqlj/util/DB2DriverInfo
Mise en œuvre du passticket

SETROPTS CLASSACT(PTKTDATA)
SETROPTS RACLIST(PTKTDATA)
RDEFINE PTKTDATA IVP1234
SSIGNON(key_description)
UACC(access_authority)

SETROPTS RACLIST(PTKTDATA)

Exemple pour le passticket de TSO
RDEFINE PTKTDATA TSOSYS1 SSIGNON(KEYMASKED(0123456789abcdef))
SETROPTS LIST
SETR REFRESH RACLIST(PTKTDATA) *
Exemple pour le passticket des jobs batch

RDEFINE PTKTDATA MVSSYS1 SSIGNON(KEYMASKED(0123456789abcdef))
SETROPTS LIST
SETR REFRESH RACLIST(PTKTDATA)

Exemple pour le passticket de IMS

RDEFINE PTKTDATA IVP1ABC SSIGNON(KEYMASKED(0123456789abcdef))
SETR REFRESH RACLIST(PTKTDATA)

RDEFINE PTKTDATA CICS SSIGNON(KEYMASKED(0123456789abcdef))
SETR REFRESH RACLIST(PTKTDATA)


DIVERS JOBS et questions
Duplication & refresh de hercules
arrêter hercules pour faire cette opération
copier
le répertoire \\vouvray\hercules\Devices si on veut juste un refresh de z/OS
tout \\vouvray\hercules\ pour une première installation
obtenir une IP Virtuelle pour le nouvel hercule (pour une création)
paramétrer hercules.cnf pour y mettre ses propres IP – cad celle de windows + l’IP virtuelle de z/OS (voir annexes)

Comment dupliquer une machine hercules ?
Les étapes de la duplication d’une source vers une cible
sauvegarder ou préparer les paramètres TCPIP de MVS (TCPIP.PROFILE.TCPIP) – pour cela s’il existe déjà et qu’on veut un refresh , il suffit de faire un transfert (receive from host) depuis la console TSO avant de faire shutdown du système cible
sélectionner les disques à dupliquer
sélectionner les disques modifiés en comparant le répertoire c:\hercules\DEVICES de la source et de la cible
copier seulement les fichiers de taille différente
démarrer hercules et mettre à jour TCPIP
connecter une console sur le port 3270 et l’IP de la machine windows
faire IPL
connecter un TSO sur le 3270
arrêter TCPIP
reloader le fichier TCPIP.PROFILE.TCPIP ou le modifier à la main si pas de copie du précédent
restarter TCPIP
A noter qu’on ne peut pas connecter le DNS de HERCULE sur celui du domaine SCORT si on a pas réservé un nom pour chaque machine hercules (comme le nom z/OS HERCULES sur la machine windows VOUVRAY)

Mise à l’heure et timezone
Exemple de mise à l’heure à 15h21 : /T CLOCK=15.21.00
Synchronisation de l’heure MVS avec la machine Windows de hercules dans la parmlib CLOCK00
OPERATOR NOPROMPT
TIMEZONE E.01.00.00
ETRMODE NO
ETRZONE NO
ETRDELTA 10

clear de la sys1.logrec
//IFCDIP00 JOB CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A
//********************************************************************
//* CLEAR AND INITIALIZE HARDWARE EVENT RECORDER DATASET *
//********************************************************************
//IFCDIP00 EXEC PGM=IFCDIP00
//SERERDS DD DSN=SYS1.LOGREC,DISP=OLD,
// VOL=SER=OS39M1,
// UNIT=SYSDA

démarrage d'un INIT supplémentaire
(quand un job reste en INPUT queue et qu'on a démarré tout IMS et CICS)
$DI pout voir tous les INIT started et drained et démarrer le premier qui est DRAINED

exemple
$HASP892 INIT(11) STATUS=DRAINED,CLASS=ABCD,NAME=11
par la commande
$S I11

Purge de tous les vieux sysouts dans JES
/$P J1-9999,/DAYS>1
/$P T1-9999,/DAYS>1
/$P S1-9999,/DAYS>1


récupérer des membres de PDS ou un fichier complet de load modules depuis un autre hercules

Transmit ibmuser dsn(csq531.SCSQCICS) pds outdsname(csq531.SCSQCICS.SEQ)
transférer le fichier en BINAIRE via IND£FILE et le PC
receive indsn(csq531.SCSQCICS.SEQ)
au prompt entrer odsn(csq531.SCSQCICS.PDS) (par exemple) pour recopier ensuite les membres détruits

Ajouter un Page data set
En cas de msg IRA200E AUXILIARY STORAGE SHORTAGE
Il faut ajouter un PAGE DATA SET
//DEFPAGE JOB ACTINFO1,'IBMUSER',CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1),
// REGION=0M,NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS,COND=(4000,LT)
//SYSPRINT DD SYSOUT=*
//PAGELOC DD UNIT=SYSDA,VOL=SER=OS39M1,DISP=OLD
//SYSIN DD *
DEFINE PAGESPACE( -
FILE(PAGELOC) -
NAME(PAGE.MHQPROD.LOCAL3) -
CYLINDERS(200) -
VOLUME(OS39M1) )

After you have successfully defined a new page data set, you can now relieve the auxiliary shortage by
adding the new page data set to the system as shown in Figure 57.


PAGEADD PAGE=PAGE.MHQPROD.LOCAL3
IEE783I PAGEADD COMMAND- 531
PAGE.MHQPROD.LOCAL3 PAGE DATA SET
NOW AVAILABLE FOR SYSTEM USE


Vérifier le nouveau status des page dataset
D ASM
RESPONSE=P390
IEE200I 10.25.41 DISPLAY ASM 251
TYPE FULL STAT DEV DATASET NAME
PLPA 87% OK 0A82 SYS1.PLPA.PAGE
COMMON 2% OK 0A82 SYS1.COMMON.PAGE
LOCAL 14% OK 0A82 SYS1.LOCAL.PAGE
LOCAL 5% OK 0A82 PAGE.MHQPROD.LOCAL3
PAGEDEL COMMAND IS NOT ACTIVE


To ensure this new page data set remains a permanent part of your OS/390 system, you should update the PAGE= parameter in your ADCD.ZOSV14S.PARMLIB(IEASYSDI) parmlib member to include the new page data set as shown

PAGE=(SYS1.PLPA.PAGE,
SYS1.COMMON.PAGE,
PAGE.MHQPROD.LOCAL3,
SYS1.LOCAL.PAGE,L),
GTF Trace
Exemple pour MQ
START GTFxx.yy
£HASP100 GTFxx.yy ON STCINRDR
£HASP373 GTFxx.yy STARTED
*01 AHL100A SPECIFY TRACE OPTIONS
R 01,TRACE=JOBNAMEP,USRP
TRACE=JOBNAMEP,USRP
IEE600I REPLY TO 12 IS;TRACE=JOBNAMEP,USRP
*02 ALH101A SPECIFY TRACE EVENT KEYWORDS - JOBNAME=,USR=
R 02,JOBNAME=xxxxMSTR,(x,y),USR=(5E9,5EA,5EE)
JOBNAME=xxxxMSTR,(x,y),USR=(5E9,5EA,5EE)
IEE600I REPLY TO 13 IS;JOBNAME=xxxxMSTR,(x,y),USR=(5E9,5EA,5EE)
*03 ALH102A CONTINUE TRACE DEFINITION OR REPLY END
R 03,END
END
IEE600I REPLY TO 14 IS;END
AHL103I TRACE OPTIONS SELECTED-USR=(5E9,5EA,5EE)
AHL103I JOBNAME=xxxxMSTR,(x,y)
*04 AHL125A RESPECIFY TRACE OPTIONS OR REPLY U
R 04,U
U
IEE600I REPLY TO 15 IS;U
AHL031I GTF INITIALIZATION COMPLETE

where xxxxMSTR is the name of the queue manager
and (x,y) is the jobname: x = the queue manager
y = CHINIT, CICS, or batch

STOP de la trace
STOP yy

Formattage de la trace
//S1 EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=4096K
//IPCSPARM DD DSN=SYS1.PARMLIB,DISP=SHR
//IPCSDDIR DD DSN=thlqual.ipcs.dataset.directory,DISP=SHR
//SYSTSPRT DD SYSOUT=*,DCB=(LRECL=137)
//IPCSTOC DD SYSOUT=*
//GTFIN DD DSN=gtf.trace,DISP=SHR
//SYSTSIN DD *
IPCS
SETDEF FILE(GTFIN) NOCONFIRM
GTFTRACE USR(5E9,5EA,5EE)
/*
//STEPLIB DD DSN=thlqual.SCSQAUTH,DISP=SHR

Création d’un nouveau volume pour hercules z/OS
Voir infos dans http://www.conmicro.cx/hercules/hercload.html

Exemple de commande
Pour créér un nouveau volume “VOLSER” avec comme filename windows scort2.a19 (pourquoi pas …)
Sous Cygwin lancer la commande suivante:

$ dasdinit scort1.a90 3390 S4WAS0
HHCDU044I Creating 3390 volume S4WAS0: 1113 cyls, 15 trks/cyl, 56832 bytes/track
HHCDU041I 1113 cylinders successfully written to file scort2.a19
HHCDI001I DASD initialization successfully completed.
Ensuite le déplacer dans le repertoire DEVICES avec les autres disques.
Et metre à jour la liste des volumes de la conf Hercules en ajoutant ceci:
0A19 3390 C:/HERCMSVC/DEVICES/scort2.a19

Au démarrage il apparaît en 3.4
+-------------------------- VTOC Summary Information --------------------------+
Volume . : S4WAS0
Command ===>

Unit . . : 3390

Volume Data VTOC Data Free Space Tracks Cyls
Tracks . : 16,695 Tracks . : 5 Size . . : 4,365 291
%Used . : 73 %Used . . : 3 Largest . : 4,350 290
Trks/Cyls: 15 Free DSCBS: 243
Free Extents . : 2


+------------------------------------------------------------------------------+

ANNEXES - Démarrage Hercules
Toute la doc Hercules
http://www.bsp-gmbh.com/hercules/
Téléchargements Hercules for Windows en version précompilées:
http://www.bsp-gmbh.com/hercules/snapshots/index.html#snapshots
Téléchargement CTCI-W32:
http://www.softdevlabs.com/Hercules/ctci-w32-index.html
prendre WINCAP 3.1
CTCI-W32
Fishlib (téléchargement à http://www.softdevlabs.com/Hercules/hercgui-index.html )

Dans Hercules.cnf le boot (IPL) est configuré notamment par
LOADPARM 0A82IW.. (détermine les disques et la config sur laquelle on démarre)


Shéma général

+----------------------------------------------------------------------+

W I N D O W S H O S T


+-------------+ 00-00-5E-A8-00-04
Hercules +-------------+
----------- Hercules's +-------------
OS/390 "virtual" (FishPack dll) WinPCap (to other LAN work-
TCP/IP adapter <------------------> device stations, Internet,
----------- driver etc...)
CTCA (192.168.0.4) + - - - - - - +
(192.168.0.4) +-----+-------+ Windows's +-----------------+
+------+------+ REAL *---------> 192.168.0.1
+------------------> adapter (LAN) Gateway adapter
+------------------+ (Winsock dll) 192.168.0.2 +-----------------+
(TunTap32 dll) +-------------+ 00-02-48-8B-8D-60
00-80-B3-E1-DF-69
+---------V-------+
+-
+- (Windows
Applications)

+-----------------+
+-----------------+
+-----------------+

+----------------------------------------------------------------------+

MVS TCPIP configuration using CTCI-W32
--------------------------------------

The following values belong in the TCP profile. This configuration has been
tested using OS/390 2.9 through z/OS 1.1. The example uses the addresses in
the sample above.

The first entry in the TCP profile is the DEVICE entry. This is the
parameter that defines the UCB address assigned to the interface within the
MVS environment. It is related to the LINK statement to build the TCPIP
connection between the hardware and the TCPIP stack.


DEVICE CTC1 CTC E20
LINK CTC1L CTC 0 CTC1

The second entry is the HOME entry. This is where the IP address is
assigned to the device interface within the TCPIP stack. The HOME entry
connects the IP address to the hardware through the LINK defined with the
DEVICE.

HOME
192.168.0.4 CTC1L


The GATEWAY describes how the IP stack gets to the rest of the network. It
defines the physical first hop from the local interface out to the entire
network. In our example, we are defining a gateway to one physical IP
address, 192.168.0.2. 1492 is the data packet size.

GATEWAY
192.168.0.2 = CTC1L 1492 HOST
ATTENTION IL FAUT AJOUTER une ROUTE POUR LE RETOUR sous la forme
10 = CTC1 1492 0.255.0.0 0.1.0.0


The DEFAULTNET statement instructs what path the IP stack should take to
look for address it doesn't know about. IP assumes the next hop will be
able to resolve the IP address the stack is trying to connect to.

DEFAULTNET 192.168.0.2 = CTC1L 1492 0

The final statement needed in the profile is the command to instruct TCPIP
to start the device.

START CTC1



Building the static route from the PC to the emulated environment
-----------------------------------------------------------------

In order to connect from the PC to the Hercules guest, you will need to
define a route to the TCPIP environment on the PC. This is especially
important if you are using the Microsoft Loopback Adaptor to allow
connectivity in a PC without an Ethernet adapter installed.

Using a Command Prompt window, you need to issue the command below to create
a static route between the TCPIP stack in the PC to the TCPIP interface in
the MVS environment. The ROUTE command supports making a persistent link
under Win2000 and WinXP. The format of the command will try to make the
entry persistent. If the command fails (persistent isn't supported under
Win98 SE), remove the -p after ROUTE. You will need to repeat this command
every re-boot of the PC.


installer un loopback sur windows (finalement pas nécessaire, mais je l'ai fait quand même)
http://www.windowsnetworking.com/articles_tutorials/Install-Microsoft-Loopback-adapter-Windows-XP.html




==============================================================================
Définitions réseau coté z/OS
==============================================================================
;
; TCPIP.PROFILE.TCPIP
; =============
;
DEVICE CTCA1 CTC E20
LINK CTC1 CTC 0 CTCA1

HOME
10.1.3.35 CTC1
PRIMARYINTERFACE CTC1

GATEWAY
10.1.15.35 = CTC1 1492 HOST
10 = CTC1 1492 0.255.0.0 0.1.0.0 >>> nécessaire pour le retour des trames IP

DEFAULTNET 10.1.15.35 = CTC1 1492 0

START CTCA1


==============================================================================
Vérifier que le CTC est bien défini et Actif
==============================================================================
D U,CTC
IEE457I 08.13.41 UNIT STATUS 410
UNIT TYPE STATUS VOLSER VOLSTATE
0E20 CTC A-BSY
0E21 CTC A
0E22 CTC OFFLINE
0E23 CTC OFFLINE
0E40 CTC OFFLINE
0E41 CTC OFFLINE
0E42 CTC OFFLINE
0E43 CTC OFFLINE



==============================================================================
Vérifier qu'on a bien les routes définies coté z/OS
==============================================================================

D TCPIP,,NET,ROUTE
EZZ2500I NETSTAT CS V1R4 TCPIP 407
DESTINATION GATEWAY FLAGS REFCNT INTERFACE
10.1.0.0 0.0.0.0 US 000000 CTC1
10.1.3.35 0.0.0.0 UH 000000 CTC1
10.1.15.35 0.0.0.0 UHS 000000 CTC1
127.0.0.1 0.0.0.0 UH 000004 LOOPBACK
4 OF 4 RECORDS DISPLAYED

==============================================================================
Définitions réseau coté Windows
==============================================================================
définir une route pour atteindre hercules
route -p add 10.1.3.35 mask 255.255.255.255 10.1.15.35
route -p add 10.1.0.0 mask 255.255.0.0 10.1.15.35

==============================================================================
Vérifier qu'on a bien les routes définies coté Windows
==============================================================================

route print
Itinéraires actifs :
Destination réseau Masque réseau Adr. passerelle Adr. interface Métrique
0.0.0.0 0.0.0.0 10.1.255.254 10.1.15.35 20
10.1.0.0 255.255.0.0 10.1.15.35 10.1.15.35 20
10.1.15.35 255.255.255.255 127.0.0.1 127.0.0.1 20 >>> pour marcher en local uniquement
10.255.255.255 255.255.255.255 10.1.15.35 10.1.15.35 20 >>> nécessaire pour que les autres du même LAN puissent l'atteindre aussi
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
224.0.0.0 240.0.0.0 10.1.15.35 10.1.15.35 20
255.255.255.255 255.255.255.255 10.1.15.35 4 1
255.255.255.255 255.255.255.255 10.1.15.35 10.1.15.35 1
Passerelle par défaut : 10.1.255.254
===========================================================================
Itinéraires persistants :
Adresse réseau Masque réseau Adresse passerelle Métrique
10.1.0.0 255.255.0.0 10.1.15.35 1
==============================================================================

Définition du DNS SCORT dans Hercules
On ne défini pas de DNS dans le PROFILE.TCPIP de z/OS,
on prend celui qui existe dans le réseau de SCORT

Préparer les modifs dans le fichier de travail suivant ADCD.ZOSV14S.TCPPARMS(TCPDATA)
modifier les lignes suivantes:

HOSTNAME HERCULES
DOMAINORIGIN suresnes.scort.com
NSINTERADDR 10.1.0.1
NSINTERADDR 10.1.0.5
NSPORTADDR 53
RESOLVEVIA UDP
RESOLVERTIMEOUT 20

HOSTS.LOCAL

Dans TCPIP.HOSTS.LOCAL on peut ajouter des noms locaux pour un fonctionnement en local (cas où Hercules est sur un LAN indépendant)

Exemples de syntaxe

HOST : 10.1.15.37 : JPAREPONDEUR :
HOST : 10.1.15.36 : WLSBEA :
HOST : 10.1.15.35 : ERIKA : (noter que :ERIKA , AUTRENOM: ne fonctionne pas)
HOST : 10.1.3.35 : HERCULES :

La commande Makesite hlq=hlq va créer les fichiers caches locaux, Output is written to hlq.HOSTS.ADDRINFO and hlq.HOSTS.SITEINFO

tso makesite hlq=TCPIP
Stopper/relancer TCPIP
Cette operation est nécessaire pour modifier TCPIP.PROFILE.TCPIP ainsi que TCPIP.TCPIP.DATA

("/p TSPIP" sous SDSF)
Attention: il faut être connecté sur le port 3270 et non sur le port 23 pour éviter d'être coupé avec hercules
et le relancer par "/S TCPIP"