8. Have you ever heard of SNT in CICS Processing?
2009年11月13日 星期五
Questions for CICS Interview
8. Have you ever heard of SNT in CICS Processing?
2009年10月15日 星期四
Collect troubleshooting data for file control (VSAM non-RLS) waits in CICS on z/OS
Required doc:
(1) CICS message log and the MVS™ system log (SYSLOG).
(2) CICS internal trace that is included in the MVS system dump when tracing is active. The trace should be at least 10240K and when possible level 1 tracing should be on for all CICS components and level 1-2 for the FC component.
(3) An MVS™ system dump of the CICS region taken as soon as you notice the hang or wait. Use the following MVS command followed by the reply to capture the dump:DUMP COMM=(dumpname)R yy,JOBNAME=( cicsjob),SDATA=(ALLNUC,PSA,SQA,CSA,LPA,TRT,LSQA,RGN) where dumpname is the name you want to give the dump, yy is the reply id, and cicsjobis the job name for your CICS region.
Optional doc:
(1) If feasible, save off the dataset by using IDCAMS ALTER NEWNAME to rename the dataset and save it in place (note that the example in the link has a DEFINE before the ALTER). If this is not feasible, run IDCAMS EXAMINE ITEST DTEST against the dataset and any alternate indexes associated with the dataset before continuing.
(2) If you are able to reproduce the problem, consider using CICS auxiliary trace or GTF Trace in combination with the MVS system dump. The dump is unlikely to tell you anything about system activity in the period leading up to the wait. This is because the trace table will probably wrap before you have had a chance to respond.
2009年10月5日 星期一
z/OS System Initialization Logic (IPL)
2009年9月13日 星期日
EXEC CICS QUERY SECURITY control
A History of CICS
* CICS/OS introduced as program offering
* CICS/VS 1.0 introduced* Single address space or partition monitor
* CICS/VS 1.3
* CICS/VS 1.4
* CICS/VS 1.5
* CICS/VS 1.6, and 6 months later 1.6.1
* CICS/VS 1.7
* CICS/MVS® 2.1
* CICS/ESA® 3.1.1
* CICS/ESA 3.2
* CICS/ESA 3.3
* CICS/ESA 4.1
* CICS/VSE® 2.3
* CICS Transaction Server for OS/390® 1.1
* CICS Transaction Server for OS/390 1.2
* CICS Transaction Server for OS/390 1.3
* CICS Transaction Server for VSE/ESA™ 1.1.1
* CICS Transaction Server for z/OS® 2.1
* CICS Transaction Server for z/OS 2.2
* CICS Transaction Server for z/OS 2.3
* CICS Transaction Server for z/OS 3.1
* CICS Transaction Server for z/OS 3.2
2009年9月2日 星期三
How can I find out what jobs are filling the JES2 spool
$djq,spl=(%>5) Display all jobs which occupy more than 5% of the spool
$djq,a>5,q=ppu Display all jobs on the print/punch queue more than 5 days old
$djq,q=ppu,type=tsu Display all TSUs on the print/punch queue
$djq'jobname',spl Display spool percent occupied by the named job
$djq,q=ppu,userid Display userid associated with jobs on print/punch queue
$pjq,a>5,q=ppu Purges all jobs on the print/punch queue more than 5 days old
$pjq,q=ppu,type=tsu Purge all TSUs on the print/punch queue
$da,x Displays all jobs, including TSU and STC
$pjnnnnn Purge JOB number nnnnn
$psnnnnn Purge STC number nnnnn
$ptnnnnn Purge TSU number nnnnn
$dspl Display percent spool used
$ta wlog,t=23.58,i=86400,'$vs,''W L''' Automatically spin SYSLOG to sysout L once per day
$dos'syslog',crtime,age,rec,odisp,q Display all SYSLOG output groups on spool
$pos'syslog',a>5 Delete SYSLOG output groups more than 5 days old
How do I get step condition codes to print in the JES2 job log
1. Run this job to install the exit in a linklist library:
//ASMXIT EXEC HLASMCL,REGION=4M,COND.L=(0,NE,C),
// PARM.L='LIST,LET,NCAL,XREF,RENT,REUS'
//C.SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
// DD DSN=SYS1.MODGEN,DISP=SHR
//C.SYSIN DD DSN=SYS1.SAMPLIB(IEEACTRT),DISP=SHR
//L.SYSLMOD DD DSN=USER.LINKLIB(IEFACTRT),DISP=SHR,UNIT=,SPACE=
2. Update your SMF parameter member SMFPRM00 in USER.PARMLIB. You need SMF recording ACTIVE, you need to record at least type 30 records which drive the IEFACTRT exit, and of course you need to specify that exit IEFACTRT is active. Here is an example SMFPRM00 member:
DSNAME(SYS1.MAN1,
SYS1.MAN2,
SYS1.MAN3)
NOPROMPT /* DO NOT PROMPT OPERATOR */
REC(PERM) /* TYPE 17 PERM RECORDS ONLY */
MAXDORM(3000) /* WRITE IDLE BUFFER AFTER 30 MIN */
STATUS(010000) /* WRITE SMF STATS AFTER 1 HOUR */
JWT(2400) /* 522 AFTER 24 HOURS */
SID(&SYSNAME(1:4)) /* USE SYSTEM NAME FROM IEASYM00 */
LISTDSN /* LIST DATA SET STATUS AT IPL */
SYS(TYPE(14:19,30,62:69),NOEXITS,NOINTERVAL,NODETAIL)
/* WRITE ONLY DATA MANAGEMENT RECORDS, TAKE NO EXITS. */
/* NOTE: JES EXITS CONTROLED BY JES , THERE IS NO */
/* DEFAULT INTERVAL RECORDS WRITTEN AND ONLY SUMMARY T32 */
/* RECORDS AS A DEFAULT FOR TSO. */
SUBSYS(JES2,EXITS(IEFACTRT))
/* WRITE RECORDS ACCORDING TO SYS VALUE, TAKE ONLY IEFACTRT EXIT. */
/* USE ALL OTHER SYS PARMETERS AS A DEFAULT. */
3. Enter this MVS command to activate the updated SMF parameters:
4. Enter these MVS commands to activate the exit:
SETPROG EXIT,DELETE,EXITNAME=SYSJES2.IEFACTRT,MODNAME=IEFACTRT
SETPROG EXIT,ADD,EX=SYSJES2.IEFACTRT,MOD=IEFACTRT,DSN=USER.LINKLIB
2009年8月28日 星期五
IXG231I reason 80B at CICS TS startup
At startup of your CICS® Transaction Server (CICS TS) region, you receive message IXG231I IXGCONN reason 80B. This is followed by message DFHLG0508 log not defined to MVS.
Symptom
You initially set up Logger to use DUMMY logs and now you want to set up real logs. While going through the logger and policy definitions, you found the MVS group made a typo in the stream name. This was subsequently corrected.
After correcting the typo, you still receive the following at startup when attempting to connect to the log:
DFHLG0103I System log (DFHLOG) initialization has started.
Cause
The STREAMNAME in CICS CEDA definition does not match the LOGSTREAM NAME in MVS definition. Here are the definitions that caused the failure:
MVS Policy using IXCMIAPU:
CICS Journal model using CEDA:
Change the logstream name in the MVS policy to match the streamname in the CEDA Journalmodel.
Once you correct the DASD ONLY CICS Journalmodel definition, the region will start up fine with the expected DFHLG0777 reason 868 message. This message is to be expected at connect time during CICS startup when the staging dataset is being allocated. You may see more than one 868 message depending on staging dataset size.
2009年8月20日 星期四
Consoles and CICS
To ensure CICS invokes your autoinstall control program, specify system initialization parameter AICONS=YES, or use the CEMT, or EXEC CICS, SET AUTOINSTALL CONSOLES(PROGAUTO) command to specify console autoinstall dynamically.
If you decide to let CICS autoinstall consoles without invoking your autoinstall control program, specify system initialization parameter AICONS=AUTO, or use the CEMT, or EXEC CICS, SET AUTOINSTALL CONSOLES(FULLAUTO) command to specify console autoinstall dynamically. With the AUTO option, CICS allocates the termid automatically.
2009年8月18日 星期二
Common out-ot-space error codes
2009年8月14日 星期五
Define new user to RACF via batch JCL sample
2009年8月12日 星期三
Finding the z/OS Sysname in CICS
PROGRAM-ID. CVTTEST.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-PSA-POINTER.
10 PSA-PTR-PIC9 PIC S9(8) COMP-5 VALUE 0.
10 PSA-PTR REDEFINES PSA-PTR-PIC9 POINTER.
01 SEND-AREA.
10 FILLER PIC X(1) VALUE SPACE.
10 FILLER PIC X(11) VALUE 'CVTSNAME = '.
10 SA-CVTSNAME PIC X(8) VALUE SPACES.
LINKAGE SECTION.
01 PSA.
10 FILLER PIC X(16).
10 CVT-PTR POINTER.
01 CVT.
10 FILLER PIC X(340).
10 CVTSNAME PIC X(8).
EJECT
PROCEDURE DIVISION.
100-MAINLINE.
SET ADDRESS OF PSA TO PSA-PTR.
SET ADDRESS OF CVT TO CVT-PTR.
MOVE CVTSNAME TO SA-CVTSNAME.
EXEC CICS SEND FROM(SEND-AREA)
LENGTH(LENGTH OF SEND-AREA)
END-EXEC.
999-RETURN.
EXEC CICS RETURN
END-EXEC.
GOBACK.
CALL or LINK?
The traditional answer was, “LINK is easier to debug, CALL is more efficient.” However, there have been some changes in the CICS environment in recent years that blur the efficiency line and add other variables to consider.
The reason that LINK was considered easier to debug is that CALLs are “invisible” to CICS – you won’t see the transfer take place if using CEDF to debug. However, modern debug tools (e.g., Xpediter) have no problems showing CALLs, and virtually all shops use such a tool these days. So, if CALLs are more efficient and there is no debugging advantage to LINK, why use the CICS API?
The biggest advantage is probably the fact that using LINK can send control over to another CICS region. Since CICS has minimal involvement with a CALL, the processing stays in the same region; use LINK, and the program could be invoked in the same region, or it may be statically or dynamically routed to another region. If the program has special resource needs that are best served (or only served) in a particular region, statically route its execution to that region; if load balancing, let WLM route it to the least busy region. In my mind, those are huge. Other advantages include the fact that when using LINK, CICS will handle DATALOCATION (any/below) and EXECKEY (user/CICS) differences, and it will handle mode switches between THREADSAFE/QUASIRENT CONCURRENCY and OPENAPI/CICSAPI.
Another consideration that used to exist was that more than 32K could be passed in a CALL, but COMMAREA used to pass data in a LINK have that limit. However, use of CHANNELS and CONTAINERS overcome this limitation starting in CICS/TS 3.1.
CICS Access to RACF
EXEC CICS ADDRESS ACEE will provide access to the RACF ACEE control block. (ACEE stands for Access Control Environment Element. Maybe it will come up in a trivia question some day. Probably not. The important thing to know is that it is a block of storage containing RACF information which can be addressed from application programs.) From there, it is possible to easily obtain the user’s primary RACF group and the user’s name (as it is recorded in RACF).
The layout of the ACEE control block is documented in SYS1.MACLIB(IHAACEE). Unfortunately, there is not a COBOL copybook provided, so to access this information in a COBOL program, we have to code our own storage definitions. The following are based on SYS1.MACLIB(IHAACEE):
01 ACEE.
05 FILLER PIC X(021).
05 ACEEUSRI PIC X(008).
05 FILLER PIC X(001).
05 ACEEGRPN PIC X(008).
05 FILLER PIC X(062).
05 ACEEUNAM-POINTER USAGE IS POINTER.
01 ACEE-USER-NAME.
05 FILLER PIC X(001).
05 ACEEUNAM PIC X(020).
And we need a piece of miscellaneous working storage to hold a pointer:
77 WS-ACEE-ADDR-POINTER USAGE IS POINTER.
Now, if we execute the following, we’ll have the address of the ACEE control block in that pointer:
EXEC CICS
ADDRESS ACEE (WS-ACEE-ADDR-POINTER)
END-EXEC.
And then the following commands will make the RACF information addressable by our storage definitions:
SET ADDRESS OF ACEE TO WS-ACEE-ADDR-POINTER.
SET ADDRESS OF ACEE-USER-NAME TO ACEEUNAM-POINTER.
Now we have the user’s RACF id in ACEEUSRI, the user’s primary RACF group in ACEEGRPN, and the user’s name in ACEEUNAM. Very simple – just a matter of knowing how to address the information.
In a future post, I’ll continue this and see how we can obtain all of the RACF groups to which the user’s RACF id is connected.
How to know the list of RACF profiles
Free z/OS mainframe system on Internet
2009年8月11日 星期二
Some RACF command examples
Find all DSNs for a Profile
Find all Profiles for a User
List Profile Information (even if Generic exists)
List Group Information
List User attributes
Change a User Password
ALU userid PASSWORD(new)
Reset a User Password to Default Group
Delete Access to a Tape Volume
Add a Generic Profile
Restrict use of a Storage Class
Notes on deleting orphaned VSAM components
(It may well be preferable to try by other means to get the components re-cataloged officially.)
Is the dataset in use?
D GRS,RES=(SYSDSN,TSTB.TRAN.FILE0)
Firstly we need to find the CCHHR address on the disk for each component (Note the use of 3380 or 3390 as the unit name.)
//STEP1 EXEC PGM=IEHLIST
//SYSPRINT DD SYSOUT=*
//DD1 DD UNIT=3380,VOL=SER=LRIP90,DISP=SHR
//SYSIN DD *
LISTVTOC DUMP,VOL=3380=LRIP90,DSNAME=(TSTB.TRAN.FILE0.DATA)
LISTVTOC DUMP,VOL=3380=LRIP90,DSNAME=(TSTB.TRAN.FILE1.DATA)
/*
At the bottom right of each entry is the CCHHR address e.g. 0000000104. Use this in the zap job below. The plan is to fool the system into thinking this is not a VSAM dataset.
(See DFSMSdfp Advanced Services manual (or equivalent) for details of the bit settings in the DSCBs.)
//PATCH1 EXEC PGM=AMASPZAP
//SYSPRINT DD SYSOUT=*
//SYSLIB DD DSN=FORMAT4.DSCB,UNIT=SYSDA,VOL=SER=LRIP90,DISP=SHR
//SYSIN DD *
CCHHR 0000000104
VER 53 08C08010
REP 53 00C08010
VER 5D 12
REP 5D 00
/*
Now we should be able to manipulate the dataset using IEHPROGM.
//DELETE EXEC PGM=IEHPROGM
//SYSPRINT DD SYSOUT=*
//DD1 DD UNIT=3380,VOL=SER=LRIP90,DISP=SHR
//SYSIN DD *
SCRATCH DSNAME=TSTB.TRAN.FILE0.DATA,VOL=3380=LRIP90,PURGE
/*http://knowledge.storage.ibm.com is a useful mine of VSAM dataset and catalog recovery information. There are also utilities to help in the repair of a VVDS etc.