Wednesday, August 30, 2006
Monday, August 28, 2006
Web 2.0 – more than just “marketecture”
Friday, August 25, 2006
An update to the screen viewing utility (for CICS)
ITLOOK *********************************************************************** * PROGRAM : ITLOOK * * TRANSID : LOOK * *********************************************************************** *ASM XOPTS(NOPROLOG) DFHEISTG DSECT , DFHEISTG LOOK CSECT , DFHEIENT CODEREG=(3,8) MVC LCOMAREA(2),=H'Ø' INITIALIZE STORAGE AREAS * CHECK TO SEE IF A COMMAREA IS PRESET FOR THIS TERMINAL. IF SO WE * * MUST SAVE IT FOR THE NEXT TRANSACTION - WAITING TO RUN ON THIS TERM * LH 5,EIBCALEN COMMAREA LENGTH LTR 5,5 LENGTH ZERO ? BZ NOCOMARE YES, NO NEED TO SAVE STH 5,LCOMAREA NO, SAVE LENGTH L 4,DFHEICAP ADDRESS OF COMMAREA BCTR 5,Ø LESS ONE FOR EXECUTE CH 5,LENCOMSA CHECK LENGTH NOT TOO LARGE BH NOSHOW YES, TOO LONG, EXIT EX 5,MOVINCOM MOVE INTO SAVEAREA * RETRIEVE THE TERMINAL ID ON WHICH 'PEEK' WAS STARTED * NOCOMARE EXEC CICS RETRIEVE , X INTO(PARMS) , GET INVOKER'S TERM-ID X LENGTH(LPARMS) MVC PEEKTERM(4),TERMID INVOKER'S TERM-ID MVC LOOKTERM(4),EIBTRMID TARGET TERM-ID MVC CURSOR(2),EIBCPOSN CURSOR POS MVC LRBUFFER(2),SLRBUFER SET LENGTH OF RECEIVE BUFFER EXEC CICS RECEIVE , READ CONTENTS OF SCREEN X INTO(RBUFFER) X LENGTH(LRBUFFER) X BUFFER X ASIS X LEAVEKB LH 4,LRBUFFER LENGTH OF DATA READ AH 4,=H'1Ø' PLUS 1Ø BYTES FOR TRANS 'SHOW' STH 4,LPASDATA SAVE LENGTH * * IF THE TRANSACTION WHICH PREVIOUSLY RAN ON THIS TERMINAL WAS PSEUDO-* * CONVERSATIONAL IT WILL HAVE RETURNED TO CICS USING EXEC CICS * * RETURN TRANS-ID('XXXX'). * * WHEN THE USER ENTERED DATA TRANS-ID XXXX WOULD HAVE BEEN STARTED BY * * CICS. BECAUSE WE ARE RUNNING IN BETWEEN, WE MUST ALSO RETURN TO * * CICS, SETTING XXXX AS THE NEXT TRANSACTION TO BE STARTED. * * START TRANSACTION 'SHOW' AT INVOKER'S TERMINAL TO DISPLAY SCREEN * * STRTSHOW EXEC CICS START X TRANSID('SHOW') X TERMID(PEEKTERM) X FROM(CURSOR) X LENGTH(LPASDATA) CLC LCOMAREA(2),=H'Ø' WAS A COMMAREA PRESENT BE NOSHOW NO, RETURN NO COMMAREA EXEC CICS INQUIRE TERMINAL(EIBTRMID) NEXTTRANSID(LASTTRAN) CLC LASTTRAN(4),=CL4' ' WAS A TRANSACTION TO BE STARTED? BNE EXIT YES, RETURN WITH TRANS-ID NOSHOW EXEC CICS RETURN , NO, RETURN * RETURN TO CICS WITH TRANSID * EXIT EXEC CICS RETURN X COMMAREA(COMMAREA) X TRANSID(LASTTRAN) X LENGTH(LCOMAREA) * CONSTANTS * MOVINCOM MVC COMMAREA(*-*),Ø(4) DUMMY FOR EXECUTE SAVEREGS DC 18F'Ø' SAVE REGS AREA COMMAREA DC 3Ø72C' ' SAVE AREA FOR COMMAREA LENCOMSA DC H'3Ø72' LENGTH OF COMMAREA LCOMAREA DC H'Ø' LENGTH OF SAVED COMMAREA PARMS DS ØCL5 PASSED BY 'PEEK' TERMID DC CL5' ' INVOKER'S TERM-ID LPARMS DC AL2(*-PARMS) PEEKTERM DC CL4' ' HOLDING AREAS CURTERM DC CL4' ' CURSOR DC H'Ø' DATA PASSED TO SHOW LASTTRAN DC CL4' ' LOOKTERM DC CL4' ' RBUFFER DC 3ØØØC' ' RECEIVE BUFFER DS ØH LRBUFFER DC AL2(*-RBUFFER) LENGTH SLRBUFER DC AL2(*-RBUFFER-2) SAVE LENGTH LPASDATA DC AL2(LRBUFFER-CURSOR) LENGTH OF PASS DATA DFHEIEND END LOOK ITPEEK *********************************************************************** * PROGRAM : ITPEEK * * TRANSID : PEEK * *********************************************************************** DFHEISTG DSECT , DFHEISTG TRANSID DS CL4 MAP SCREEN FILLER DS CL1 USERID DS CL8 AAAAAAAA DS CL4Ø PEEK CSECT , EXEC CICS RECEIVE INTO(TRANSID) LENGTH(SLEN) NOHANDLE MVC TARGET,USERID MOVE IN TARGET USER-ID OC TARGET,=CL8' ' CONVERT TO UPPER CASE MVC TERMID(4),EIBTRMID SAVE INVOKER'S TERMINAL-ID EXEC CICS HANDLE CONDITION , IF TARGET TERM-ID NOT FOUND X TERMIDERR(WRONGTRM) X END(WRONGTRM) EXEC CICS INQUIRE TERMINAL START LOOP EXEC CICS INQUIRE TERMINAL (USTERM) NEXT * USERID(USERID) CLC USERID,TARGET BNE LOOP STARTLOO EXEC CICS START , START TRANSACTION LOOK X TRANSID('LOOK') , PASSING OUR TERMINAL-ID FOR X FROM(PARMS) , TRANSACTION 'SHOW' X LENGTH(LPARMS) X TERMID(USTERM) EXIT EXEC CICS RETURN , RETURN TO CICS * WRONGTRM MVC ERRTERM,TARGET MOVE TARGET NAME TO ERROR MSG EXEC CICS SEND , DISPLAY ERROR MESSAGE X FROM(EMSG) X LENGTH(LEMSG) X CTLCHAR(WCC) X ERASE EXEC CICS SEND CONTROL X FREEKB B EXIT EXIT * CONSTANTS * WCC DC X'F1' WRITE CONTROL CHARACTER SMSG DC X'1DC1' ATTRIBUTE, UNPROTECTED, MDT ON DC C'TRANSACTION LOOK STARTED FOR USER ' TARGET DC CL8' ' LSMSG DC AL2(*-SMSG) EMSG DC X'1DF2' ERROR MESSAGE 1 DC C'USER ' ERRTERM DC CL8' ' DC C' IS NOT CURRENTLY LOGGED ON ' LEMSG DC AL2(*-EMSG) PARMS DS ØCL5 COMMAREA PASSED TO 'LOOK' TERMID DC CL5' ' LPARMS DC AL2(*-PARMS) HEXNULL DS XL14'ØØ' USERMAND DS XL1'ØØ' USERNAME DS XL12'ØØ' LREC DC H'3ØØØ' SLEN DC H'57' RECORD DS 3ØØØC USTERM DS 4C END PEEK ITSHOW *********************************************************************** * PROGRAM : ITSHOW * * TRANSID : SHOW * *********************************************************************** DFHEISTG DSECT , DFHEISTG SHOW CSECT , MVC LRBUFFER(2),SLRBUFER SET LENGTH OF SEND BUFFER MVC LRECVBUF(2),SLRECVBU SET LENGTH OF RETRIEVE BUFFER EXEC CICS RETRIEVE , RETRIEVE DATA PASSED BY 'LOOK' X INTO(CURSOR) X LENGTH(LRECVBUF) LH 4,LRECVBUF LENGTH SH 4,=H'1Ø' LESS 1Ø BYTES WHICH ARE FOR US STH 4,LRBUFFER SET SEND LENGTH MVC LASTTRAN(4),NEXTTRAN TRAN NAME SCHEDULED ON TARGET EXEC CICS INQUIRE TERMINAL(PEEKTERM) USERID(PEEKED) EXEC CICS SEND , DISPLAY DATA ON SCREEN OF TARGETX FROM(RBUFFER) X LENGTH(LRBUFFER) X ERASE X CTLCHAR(WCC) EXEC CICS SEND CONTROL , SET CURSOR POSITION X FREEKB X CURSOR(CURSOR) EXEC CICS DELAY FOR SECONDS (2) CLI EIBAID,X'F3' BE EXIT EXEC CICS RETURN IMMEDIATE X TRANSID ('PEEK') X INPUTMSG (REPEAT) X INPUTMSGLEN (14) EXEC CICS RETURN , RETURN TO CICS EXIT EQU * EXEC CICS SEND , SEND 'PEEK USER-ID' WHICH IS X FROM(ENDMESS) , UNPROTECTED, ENABLING THE USER X LENGTH(LENDMSL) , TO JUST PRESS ENTER TO REINVOKE X ERASE , 'PEEK' EXEC CICS RETURN , RETURN TO CICS * CONSTANTS * DS ØF WCC DC X'F3' WRITE CONTROL CHARACTER REPEAT DC CL5'PEEK ' END MESSAGE PEEKED DC CL8' ' INFO DC C' NEXT TRANSACTION ID : ' LASTTRAN DC CL5' ' LREPEAT DC AL2(*-REPEAT) CURSOR DC H'Ø' RETRIEVE BUF.PREFIXED BY CURPOS, NEXTTRAN DC CL4' ' NEXT TRANS-ID OF TARGET TERMINAL PEEKTERM DC CL4' ' NAME OF THEN TERMINAL RBUFFER DC 3ØØØC' ' DATA OBTAINED BY 'LOOK' LRBUFFER DC AL2(*-RBUFFER) LENGTHS SLRBUFER DC AL2(*-RBUFFER-2) LRECVBUF DC AL2(LRBUFFER-PEEKTERM) SLRECVBU DC AL2(LRBUFFER-PEEKTERM) ENDMESS DC XL12'114Ø4Ø3C5D7C5F114EC31DE8' DC CL33'OK, I'm GOING then - See Yer !!!' DC XL2'1D4Ø' LENDMSL DC H'47' END SHOWG Coates (UK) © 2006 This article was reprinted with permission.
Monday, August 21, 2006
AJAX – a big step in the right direction
Friday, August 18, 2006
‘Killing’ CICS tasks with CICS Performance Monitor
- Which system is the problem in?
- Which task do I want to kill?
- How do I kill it?
- Normally executing tasks – the vast majority of CICS tasks. These are susceptible to a CEMT PURGE TASK command.
- Looping tasks – these are tasks that can be looping within themselves (and therefore susceptible to CICS runaway task detection process, ICVR process). They are looping through the CICS exec layer issuing EXEC CICS commands.
- Tasks in a purgable wait – these are susceptible to a CEMT FORCEPURGE TASK command.
- Tasks in a non-purgable wait (eg a DB2WAIT) – these are not susceptible to a CEMT FORCEPURGE command, but are susceptible to a kill command. It should be noted that the number of situations in which tasks are placed into a nonpurgable wait has reduced with each CICS release. For example, dispatcher and DB2 changes in CICS TS 2.2 have resulted in the ability to purge tasks in a DB2WAIT state without the need for kill.
Class | CEMT | CPSM, CICS PM | Third Party Tools |
A | Yes | Yes | Yes – normal stuff |
B | No | Yes | Yes – eg region at maxtask |
C | No | No | Yes – unable to dispatch on QR TCB |
D | No | No | No – the rest |
Monday, August 14, 2006
Host Access Client Package for Multiplatform announcement
Friday, August 11, 2006
Quick log-off from CICS
PRINT NOGEN DFHEISTG DSECT MSG DS CL11 , AREA TO HOLD MESSAGE LEN DS H , LENGTH OF MESSAGE LOGO CSECT LOGO AMODE 31 LOGO RMODE ANY MVC MSG,=C'CESF LOGOFF' MOVE LOGOFF TEXT TO MSG MVC LEN,=AL2(L'MSG) SET LENGTH OF MESSAGE EXEC CICS RETURN TRANSID(=C'CESF') X IMMEDIATE INPUTMSG(MSG) INPUTMSGLEN(LEN) END LOGO The second program uses the SIGNOFF command and the SPI command INQUIRE TERMINAL, together with the CICS API command ISSUE DISCONNECT, to obtain the same results. Note: because this program was written as an exercise rather than as a production application, error handling is less than complete. PRINT NOGEN DFHEISTG DSECT DISC DS F MSG DS CL18 LOGO CSECT LOGO AMODE 31 LOGO RMODE ANY EXEC CICS INQUIRE TERMINAL(EIBTRMID) DISCREQST(DISC) CLC DFHVALUE(NODISCREQ),DISC BE SEND EXEC CICS SIGNOFF NOHANDLE EXEC CICS ISSUE DISCONNECT B RETURN SEND DS 0H MVC MSG,=C'LOGOFF NOT ALLOWED' EXEC CICS SEND FROM(MSG) LENGTH(=H'18') RETURN DS 0H EXEC CICS RETURN END LOGODonald H Blake Systems Programmer Key Services (USA) This article was reprinted with permission.©2006
Tuesday, August 08, 2006
A heads-up for CICS people
Monday, August 07, 2006
A new CEMT program in COBOL to start and stop CICS
HOW TO INSTALL XCEM CEMT Submit the following job to compile the source program: //SRSTXCEM JOB SRS1ØØ44,SYSTEMES,CLASS=G,MSGCLASS=T,NOTIFY=&SYSUID // EXEC DFHC3LCL, //* INDTG=ESS, //* DEBUG=OUI, // SP=',SP', // OUTC=T //LIBR.SYSIN DD * -OPT LIST -DLM SRSTXCEM -ADD SRSTXCEM,SEQ=/81,6,1,1/ IDENTIFICATION DIVISION. PROGRAM-ID. SRSTXCEM. ********************** F U N C T I O N ************************** * * * stop CICS * * * ***************************************************************** ****************************** ****************************** * *cics stop command ***************************************************************** ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 77 W-DEBUT PIC X(8) VALUE 'SRSTXCEM'. 77 W-RETOUR-LIB PIC X(9) VALUE 'EIBRESP->'. 77 W-RETOUR PIC S9(8) COMP VALUE +Ø. 77 W-EIBFN-LIB PIC X(9) VALUE ' EIBFN ->'. 77 W-EIBFN PIC X(2) VALUE SPACES. Ø1 W-ANO-CN. Ø5 W-APPLID PIC X(8). Ø5 FILLER PIC X. Ø5 FILLER PIC X(5Ø) VALUE 'UTILIZATION OF XCEM FOR - ' NON AUTHORIZED USERS ('. Ø5 W-USERID PIC X(8). Ø5 FILLER PIC X(7) VALUE ') TERM('. Ø5 W-TERM PIC X(4). Ø5 FILLER PIC X VALUE ')'. Ø1 W-PARAM. Ø5 W-TRANS PIC X(4). Ø5 FILLER PIC X(76) VALUE SPACES. * PROCEDURE DIVISION. * *1- ANALYSE COMMAND ....... * 1ØØ-INIT. IF EIBTRMID(1:2) NOT = 'CN' MOVE EIBTRMID TO W-TERM EXEC CICS ASSIGN APPLID(W-APPLID) END-EXEC E XEC CICS ASSIGN USERID(W-USERID) END-EXEC EXEC CICS WRITE OPERATOR TEXT(W-ANO-CN) CRITICAL END-EXEC EXEC CICS RETURN END-EXEC END-IF EXEC CICS RECEIVE INTO(W-PARAM) RESP(W-RETOUR) END-EXEC MOVE 'CEMT' TO W-TRANS EXEC CICS XCTL PROGRAM('DFHEMTP') INPUTMSG(W-PARAM) INPUTMSGLEN(LENGTH OF W-PARAM) END-EXEC. -END /*XCEM CEMT will run on any CICS from Version 4.1 upwards. Copy the member XCEM to a loadlib in the DFHRPL list of your desired CICS region. Enter the following commands, into either CEDA or the batch program DFHCSDUP:
DEFINE TRANSACTION(XCEM) GROUP(XCEM) DESCRIPTION(XCEM CEMT) PROGRAM(XCEM) TASKDATALOC(ANY) PRIORITY(255) DEFINE PROGRAM(XCEM) GROUP(XCEM) DESCRIPTION(XCEM CEMT) LANGUAGE(ASSEMBLER) DATALOCATION(ANY)The transaction name can be changed, but should start with ‘C’ to allow it to run at Maxtasks. Use CEDA to install the group XCEM. Enter the transaction XCEM and enjoy! Claude Dunand Systems Programmer (France) This article was reprinted with permission.©
Friday, August 04, 2006
The Evolution of Storage Technologies: Why You Need Disk-Based Rapid Recovery Systems, Not Just Tape
Mainframes have become increasingly central to business resiliency and information lifecycle management strategies. A reliable, resilient platform, mainframes are a logical choice to serve as a core technology for operational continuity and disaster recovery.
Tape storage has traditionally been the primary mainframe backup medium, but it no longer serves the purpose for which it was initially appropriate. Tape still has its place in a disaster recovery architecture, but it no longer sufficiently serves most or all an enterprise’s storage and recovery needs. Tape is physically insecure and a far less efficient means of quickly recovering the full range of information required to restore a business following a catastrophic failure.
Data: When It Absolutely, Positively Has to Be (Lost) Overnight
Tape has made dramatic advances in speed and capacity, but the security problem offsets those advances. Several states have enacted legislation similar to California Senate Bill 1386, which says companies or agencies that lose personal data “shall disclose any breach of the security of the system following discovery or notification of the breach in the security of the data to any resident of California whose unencrypted personal information was, or is reasonably believed to have been, acquired by an unauthorized person.” A similar initiative is being considered in the U.S. Senate, spearheaded by Judiciary Committee chairman Arlen Specter of
In this new, increasingly regulated environment, the advantages of disk-todisk backup and recovery compared to tape have become clearer. Experts will tell you a true disaster recovery and business continuity plan requires you to ship your information offsite and have it in position to quickly recover when things go wrong. Traditionally, that’s meant shipping tapes from point “A” to point “B,” within a relatively short drive of the main production point. (Large enterprises could spend millions of dollars on failover sites that can have businesses back up and running within moments, but most firms don’t have sufficient funding for that.)
But shipping tapes, even shipping removable hard drives offsite, has taken on increased peril; the list of companies that have reported tapes lost in shipment containing personal information in the last 24 months reads like a “who’s who”: Citigroup, TimeWarner, Amerigroup, Bank of America, and many more. They’re reporting these snafus only because stricter federal laws, such as Sarbanes-Oxley, the Health Information Portability and Accountability Act (HIPAA), and Gramm-Leach-Bliley, require them to do so.
Mary Jander, editor of “Byte and Switch,” an online news site devoted to data protection, put it succinctly: “If you’re dumb enough to send your data off in a can with somebody’s semi-employed driver,” she wrote last July, “you shouldn’t be surprised when things don’t turn out the way you’d planned.”
To read the rest of this article please visit z/journal magazine.
This excerpt is reprinted with permission.