Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CICS/TS DFHZNEP

504 views
Skip to first unread message

indust...@winwholesale.com

unread,
Jul 19, 2010, 1:35:37 PM7/19/10
to
        How can I differentiate between a printer session and a display session in DFHZNEP under CICS/TS?  Thanks.

Sincerely,

Dave Clark

WinWholesale Group Services
3110 Kettering Boulevard
Dayton, Ohio  45439  USA
(937) 294-5331



*********************************************************************************************
This email message and any attachments is for use only by the named addressee(s) and may contain confidential, privileged and/or proprietary information. If you have received this message in error, please immediately notify the sender and delete and destroy the message and all copies. All unauthorized direct or indirect use or disclosure of this message is strictly prohibited. No right to confidentiality or privilege is waived or lost by any error in transmission.
*********************************************************************************************

Rbo...@aol.com

unread,
Jul 19, 2010, 1:45:19 PM7/19/10
to
Check the TCTTETT against EQU's such as TCTTET84, TCTTET86 and others (don't forget SCS printers).

indust...@winwholesale.com

unread,
Jul 19, 2010, 2:28:49 PM7/19/10
to
owner...@Lehigh.EDU wrote on 07/19/2010 01:44:32 PM:
> Check the TCTTETT against EQU's such as TCTTET84, TCTTET86 and
> others  (don't forget SCS printers).


        I'm familiar with TCTTETT, but how do I gain access to the TCTTE from within the DFHZNEP process?

Rbo...@aol.com

unread,
Jul 19, 2010, 4:51:16 PM7/19/10
to
You be taxing my memory Dave. I haven't looked at something like this in 15-20 years. Although it did bring back a memory of when I used to code assembler programs using Macro AND Command Level. You had to set a compiler thingy DFHGBLM or some such name.
 
Anyway, there's a field or should be anyway, in the Command Level CICS/TS version of IESZNEP (you have to assemble it using PRINT ON to see it, named TWATCTA  DS    AL4                 Address of TCTTE being processed (the name is NOT mine, if you get my drift as to why I mention it). From there you can get the TCTTETT.
 
From what I remember the above isn't any different than the CICS/VSE method.

indust...@winwholesale.com

unread,
Jul 19, 2010, 5:04:33 PM7/19/10
to
owner...@Lehigh.EDU wrote on 07/19/2010 04:50:21 PM:
> Anyway, there's a field or should be anyway, in the Command Level
> CICS/TS  version of IESZNEP (you have to assemble it using PRINT ON
> to see it, named  TWATCTA  DS     AL4                  Address of
> TCTTE being processed


        Yep, I already saw that, too.   ;-)    I'm just walking on egg-shells as to not knowing what I can and can't do during ZNEP processing.        

indust...@winwholesale.com

unread,
Jul 19, 2010, 5:43:50 PM7/19/10
to
owner...@Lehigh.EDU wrote on 07/19/2010 04:50:21 PM:
> You be taxing my memory Dave.


        Part of the problem is that the DFHZNEP compile listing indicates that all registers are used.  So, I suppose I could save the content of a register, use it, and then restore the value if I have to.  However, in the actual error processor, I'm not using any of those registers myself.  So, I checked the active USINGs and came up with the following code.  It compiles clean.  Anybody see any reason why I should do something different?  If so, then I'd like to hear your views.  Thanks.   ;-)

TCTTEAR  EQU   7                       SET DSECT BASE REGISTER
         L     TCTTEAR,TWATCTA         ADDRESSABILITY TO TCTTE
         IF    TCTTETT,NE,TCTTET84,AND,TCTTETT,NE,TCTTET86    
         AND   TCTTETT,NE,TCTTETL4,AND,TCTTETT,NE,TCTTETL6    
         AND   TCTTETT,NE,TCTE90PR     IF NOT A PRINTER TYPE  
          OI   TWAOPT2,TWAOPBP          SET PURGE BMS PAGES ON
         ELSE                          ELSE                  
          OI   TWAOPT3,TWAONCN          SET CLSDST   ON      
         ENDIF                         ENDIF                  

indust...@winwholesale.com

unread,
Jul 20, 2010, 10:30:50 AM7/20/10
to
owner...@Lehigh.EDU wrote on 07/20/2010 01:04:58 AM:
> Macro DFHNEPCA provides the layout of the COMMAREA passed to DFHZNEP.
> Included in DFHNEPCA is field TWANID, which is the terminal id.
> You can use the EXEC CICS INQUIRE TERMINAL command to query the DEVICE type,
> and the EXEC CICS SET TERMINAL command to alter the CREATESESS status.

        Oh?  Is this because TWAOPT3 bit settings don't function as desired?  ...or, what?

indust...@winwholesale.com

unread,
Jul 20, 2010, 11:11:36 AM7/20/10
to
owner...@Lehigh.EDU wrote on 07/20/2010 01:04:58 AM:
> You can use the EXEC CICS INQUIRE TERMINAL command to query the DEVICE type,
> and the EXEC CICS SET TERMINAL command to alter the CREATESESS status.

        OK, I'll give this a try.  Thanks.

         EXEC CICS INQUIRE TERMINAL(TWANID) DEVICE(NEPCVDA) NOHANDLE    
         IF    EIBRESP,(EQ,CLC),DFHRESP(NORMAL)
          IF   NEPCVDA,(NE,CLC),DFHVALUE(T3284L)
          AND  NEPCVDA,(NE,CLC),DFHVALUE(T3284R)
          AND  NEPCVDA,(NE,CLC),DFHVALUE(T3286L)
          AND  NEPCVDA,(NE,CLC),DFHVALUE(T3286R)
          AND  NEPCVDA,(NE,CLC),DFHVALUE(T3790SCSP)
           OI  TWAOPT2,TWAOPBP          SET PURGE BMS PAGES ON
          ELSE                         ELSE
           OI  TWAOPT3,TWAONCN          SET CLSDST   ON
           MVC NEPCVDA,DFHVALUE(OUTSERVICE)
           EXEC CICS SET TERMINAL(TWANID) SERVSTATUS(NEPCVDA)          +
               PURGE FORCE NOHANDLE
           B   RETURN                   GO PROCESS IT
          ENDIF                        ENDIF
         ENDIF

indust...@winwholesale.com

unread,
Jul 20, 2010, 12:17:49 PM7/20/10
to
owner...@Lehigh.EDU wrote on 07/20/2010 01:04:58 AM:
> You can use the EXEC CICS INQUIRE TERMINAL command to query the DEVICE type,
> and the EXEC CICS SET TERMINAL command to alter the CREATESESS status.

        Well, that didn't work either.  This is the code I ended up going with:

 EXEC CICS INQUIRE TERMINAL(TWANID) DEVICE(NEPCVDA)
       SERVSTATUS(NEPR3SA) NOHANDLE
 IF    EIBRESP,(EQ,CLC),DFHRESP(NORMAL)
  IF   NEPCVDA,(NE,CLC),DFHVALUE(T3284L)
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3284R)
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3286L)
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3286R)
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3790SCSP)
   OI  TWAOPT2,TWAOPBP          SET PURGE BMS PAGES ON
  ELSE                         ELSE
   OI  TWAOPT3,TWAONCN          SET CLSDST   ON
   IF  NEPR3SA,(NE,CLC),DFHVALUE(OUTSERVICE)   NOT OUTSRV?
    EXEC CICS SET TERMINAL(TWANID) OUTSERVICE
       PURGE FORCE NOHANDLE
   ENDIF                        ENDIF
   B   RETURN                   GO PROCESS IT
  ENDIF                        ENDIF
 ENDIF

        I compiled that into production and newcopied it.  Within minutes, CICS started looping on repeated calls to DFHZNEP with the following messages resulting:

...snip...
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 action taken: CLSDST  ((1) Module name: DFHZNAC)        
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 action taken: CLSDST  ((1) Module name: DFHZNAC)        

        So, I recompiled DFHZNEP back to the way it was and newcopied it.  The following messages resulted at that point and the loop ended.

DFHZC3462 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 4749 CSNE Node WINL4749 action taken: ABTASK PURGEBMS  ((1) Module name: DFHZNAC)
DFHZC3462 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 session terminated.  ((2) Module name: DFHZCLS)          
DFHZC3437 I 07/20/10 12:07:25 CICSDATA 3549 CSNE Node WINL3549 action taken: ABTASK PURGEBMS  ((1) Module name: DFHZNAC)

indust...@winwholesale.com

unread,
Jul 20, 2010, 2:40:51 PM7/20/10
to
owner...@Lehigh.EDU wrote on 07/20/2010 01:04:41 PM:
> It appears that you have some other task that is setting the printer
> back inservice.


        I'm sure I don't.

> What is driving the printers?  Is it the CICS Report Controller, a
> vendor package, or a user application?


        Mostly it is user applications.  We do have BIM-PRINT but don't do automatic printing.  The users can select individual batch reports to be printed by BIM-PRINT.  However, that said, this problem is coming up when a printer is moving from one CICS to another.  I simplified my code to as follows:

 EXEC CICS INQUIRE TERMINAL(TWANID) DEVICE(NEPCVDA)
       SERVSTATUS(NEPR3SA) NOHANDLE                
 IF    EIBRESP,(EQ,CLC),DFHRESP(NORMAL)            
  IF   NEPCVDA,(NE,CLC),DFHVALUE(T3284L)          
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3284R)          
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3286L)          
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3286R)          
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3790SCSP)        
   OI  TWAOPT2,TWAOPBP          SET PURGEBMS ON    
  ELSE                         ELSE                
   OI  TWAOPT3,TWAOOS           SET OUTSRV   ON    
   B   RETURN                   GO PROCESS IT      
  ENDIF                        ENDIF              
 ENDIF                                            

        Then, I acquired my printer in CICS/VSE and then executed a user task which would print to my printer from CICS/TS.  The printer automatically mjoved from CICS/VSE to CICS/TS just fine and the report printed.  Then, I manually acquired my printer, again, in CICS/VSE.  That is when, once again, CICS/TS went into a loop of invoking DFHZNEP repeatedly.

        However, on the first invocation, the printer did successfully release with NOCRE and OUTSRV and moved over to acquire in CICS/VSE without a problem.  The problem was that CICS/TS kept repeatedly invoking DFHZNEP until I changed the code back to the way it was -- which is, the above section of code is completely replaced by the following single line of code:

   OI  TWAOPT2,TWAOPBP          SET PURGEBMS ON    

        Since there is no branch to exit, the code goes on to also execute the following lines before exiting:

 IF    TWAEC,NE,X'10'          IF NOT NODE NOT ACTIVATED  
 AND   TWAEC,NE,X'11'          AND NOT SESSION BIND FAILURE
 AND   TWAEC,NE,X'D1'          AND NOT NODE UNRECOVERABLE  
  B    RETURN                   GO PROCESS IT              
 ENDIF                         ENDIF                      
                                                           
 OI    TWAOPT3,TWAOINT         SET CREATE    ON            
 NI    TWAOPT3,X'FF'-TWAONINT  SET NOCREATE  OFF          

        However, after CICS finally stopped invoking DFHZNEP, I checked the printer status and it was still at REL NOCRE OUTSRV.  The following are the sequence of messages in the log:

DFHZC3461 I 07/20/10 14:10:44 CICSDATA I549 CSNE Node DAP9I549 session started.  ((2) Module name: DFHZOPX)
DFHTC8510 07/20/10 14:10:49 CICSDATA SNA protocol violation detected in query response at termid I549
...printed report...
...manually acquired in other CICS...
DFHZC2410 E 07/20/10 14:11:07 CICSDATA I549 CSNE Node Unrecoverable. VTAM LOSTERM Error Code X'14'.  ((1) Module name:
           DFHZLTX)
DFHZC3437 I 07/20/10 14:11:07 CICSDATA I549 CSNE Node DAP9I549 action taken: OUTSRV NOCREATE CLSDST ABTASK ABSEND ABRECV
           ((1) Module name: DFHZNAC)
DFHZC3462 I 07/20/10 14:11:07 CICSDATA I549 CSNE Node DAP9I549 session terminated.  ((2) Module name: DFHZCLS)
DFHZC3437 I 07/20/10 14:11:07 CICSDATA I549 CSNE Node DAP9I549 action taken: OUTSRV CLSDST ABTASK ABSEND ABRECV  ((1)
           Module name: DFHZNAC)
DFHZC3462 I 07/20/10 14:11:07 CICSDATA I549 CSNE Node DAP9I549 session terminated.  ((2) Module name: DFHZCLS)
DFHZC3437 I 07/20/10 14:11:07 CICSDATA I549 CSNE Node DAP9I549 action taken: OUTSRV CLSDST ABTASK ABSEND ABRECV  ((1)
           Module name: DFHZNAC)
...snip...
DFHZC3462 I 07/20/10 14:12:37 CICSDATA I549 CSNE Node DAP9I549 session terminated.  ((2) Module name: DFHZCLS)
DFHZC3437 I 07/20/10 14:12:37 CICSDATA I549 CSNE Node DAP9I549 action taken: OUTSRV CLSDST ABTASK ABSEND ABRECV  ((1)
           Module name: DFHZNAC)
...newcopy...
DFHZC3462 I 07/20/10 14:12:37 CICSDATA I549 CSNE Node DAP9I549 session terminated.  ((2) Module name: DFHZCLS)
DFHZC3437 I 07/20/10 14:12:37 CICSDATA I549 CSNE Node DAP9I549 action taken: ABTASK PURGEBMS  ((1) Module name: DFHZNAC)

indust...@winwholesale.com

unread,
Jul 20, 2010, 3:55:44 PM7/20/10
to
owner...@Lehigh.EDU wrote on 07/20/2010 02:39:58 PM:
> ... the code goes on to also
> execute the following lines before exiting:
>
>  IF    TWAEC,NE,X'10'          IF NOT NODE NOT ACTIVATED    

>  AND   TWAEC,NE,X'11'          AND NOT SESSION BIND FAILURE
>  AND   TWAEC,NE,X'D1'          AND NOT NODE UNRECOVERABLE  
>   B    RETURN                   GO PROCESS IT              
>  ENDIF                         ENDIF                        
>                                                            
>  OI    TWAOPT3,TWAOINT         SET CREATE    ON            
>  NI    TWAOPT3,X'FF'-TWAONINT  SET NOCREATE  OFF            

        OK, I got it working.  The solution was to move my new code to *after* the above code instead of *before* it.  Now I just need to figure out a way to automatically set the printer back in service for a legitimate connection request.   ;-)

        This is the code I'm using:

 EXEC CICS INQUIRE TERMINAL(TWANID) DEVICE(NEPCVDA) NOHANDLE
 IF    EIBRESP,(EQ,CLC),DFHRESP(NORMAL)
  IF   NEPCVDA,(NE,CLC),DFHVALUE(T3284L)
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3284R)
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3286L)
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3286R)
  AND  NEPCVDA,(NE,CLC),DFHVALUE(T3790SCSP)
   OI  TWAOPT2,TWAOPBP          SET PURGEBMS ON
  ELSE                         ELSE
   OI  TWAOPT3,TWAOOS           SET OUTSRV   ON
  ENDIF                        ENDIF
 ENDIF

        The following are now the full compliment of messages issued -- with no looping.  The reason CICS was invoking DFHZNEP a second time was because of the "session terminated" part of the message below.  The first call is for the x'D1' error code and the second call is for the x'49' error code.  Apparently, if you change the "wrong" bits for this "session terminated" error code, then it causes CICS to continue re-driving the DFHZNEP for yet another "session termination" until you stop changing those bits and let CICS take the default action.   ;-)

DFHZC3461 I 07/20/10 15:42:24 CICSDATA I549 CSNE Node DAP9I549 session started.  ((2) Module name: DFHZOPX)
DFHTC8510 07/20/10 15:42:30 CICSDATA SNA protocol violation detected in query response at termid I549
...print report...
...manually re-acquire back to previous CICS...
DFHZC2410 E 07/20/10 15:42:53 CICSDATA I549 CSNE Node Unrecoverable. VTAM LOSTERM Error Code X'14'.  ((1) Module name: DFHZLTX)
DFHZC3437 I 07/20/10 15:42:53 CICSDATA I549 CSNE Node DAP9I549 action taken: OUTSRV CREATE CLSDST ABTASK ABSEND ABRECV  ((1) Module name: DFHZNAC)
DFHZC3462 I 07/20/10 15:42:53 CICSDATA I549 CSNE Node DAP9I549 session terminated.  ((2) Module name: DFHZCLS)
DFHZC3437 I 07/20/10 15:42:53 CICSDATA I549 CSNE Node DAP9I549 action taken: ABTASK PURGEBMS  ((1) Module name: DFHZNAC)

dab...@courts.state.va.us

unread,
Jul 21, 2010, 1:32:21 PM7/21/10
to
Thanks for the write up, Dave. I have wanted to do something similar for
awhile, but have forgotten how to steal a register when they were all used.
I need to get access to the device type and now I can move forward.

Don Abbate
Office of the Executive Secretary
Supreme Court of Virginia
(804) 786-4540



industrynews@winw
holesale.com
Sent by: To
owner-vse-l@Lehig "VSE Discussion List"
h.EDU <vs...@Lehigh.EDU>
cc

07/20/2010 03:55 Subject
PM RE: CICS/TS DFHZNEP


Please respond to
vs...@Lehigh.EDU

indust...@winwholesale.com

unread,
Jul 27, 2010, 2:52:34 PM7/27/10
to
owner...@Lehigh.EDU wrote on 07/21/2010 01:31:31 PM:
> Thanks for the write up, Dave.


        You're welcome.  And for everyone's interest, the following is the basic content and exact sequence of what I am doing in my CICS/TS DFHZNEP -- the last 18 lines being what I am now doing to try and prevent CICS/TS from driving VTAM to distraction with CICS-initiated printer connection requests.

 IF    TWAEC,EQ,X'61'          IF LU STATUS RECEIVED
  IF   TWASENSR(2),(NE,CLC),=X'0831'  WAS NOT "POWER OFF"
   B   RETURN                    NO FURTHER PROCESSING
  ENDIF                         ENDIF
  OI   TWAOPT3,TWAONCN          SET CLSDST   ON
 ENDIF                         ENDIF

 EXEC  CICS LINK PROGRAM('IESCLEAN') COMMAREA(NEPCABEG)

 IF    TWAEC,NE,X'10'          IF NOT NODE NOT ACTIVATED
 AND   TWAEC,NE,X'11'          AND NOT SESSION BIND FAILURE
 AND   TWAEC,NE,X'D1'          AND NOT NODE UNRECOVERABLE
  OI   TWAOPT2,TWAOPBP          SET PURGEBMS ON
  B    RETURN                   GO PROCESS IT
 ENDIF                         ENDIF

 OI    TWAOPT3,TWAOINT         SET CREATE    ON
 NI    TWAOPT3,X'FF'-TWAONINT  SET NOCREATE  OFF

 MVC   NEPCVDA,DFHVALUE(T3277L)   DEFAULT DEVICE TYPE
 EXEC CICS INQUIRE TERMINAL(TWANID) DEVICE(NEPCVDA) NOHANDLE
 IF    NEPCVDA,(NE,CLC),DFHVALUE(T3284L)
 AND   NEPCVDA,(NE,CLC),DFHVALUE(T3284R)
 AND   NEPCVDA,(NE,CLC),DFHVALUE(T3286L)
 AND   NEPCVDA,(NE,CLC),DFHVALUE(T3286R)
 AND   NEPCVDA,(NE,CLC),DFHVALUE(T3790SCSP)
  OI   TWAOPT2,TWAOPBP         SET PURGEBMS  ON
 ELSE
  MVC  NEPCVDA,DFHVALUE(ACTIVE)   DEFAULT SYSTEM STATUS
  EXEC CICS INQUIRE SYSTEM CICSSTATUS(NEPCVDA) NOHANDLE
  SELECT
  CASE NEPCVDA,(NE,CLC),DFHVALUE(ACTIVE)
   OI  TWAOPT3,TWAOOS          SET OUTSRV    ON
  CASE EIBTIME,(LT,CP),=PL4'051630'
   OI  TWAOPT3,TWAOOS          SET OUTSRV    ON
  ENDSL
 ENDIF
0 new messages