DC261918: How to find the back-end task for a shipped transaction
search cancel

DC261918: How to find the back-end task for a shipped transaction

book

Article ID: 280971

calendar_today

Updated On:

Products

IDMS

Issue/Introduction

In an IDMS environment where the database work is being shipped to a different CV, an attempt to cancel a task on the front-end CV may fail with:

 DCMT VARY ACTIVE TASK TERMINATE TASK 559                       
IDMS DC261918 V65 TASK MAY NOT BE TERMINATED OR HAS BEEN ALREADY

Environment

Release: All supported releases.

Cause

This is a valid situation. The task has to be cancelled from the back-end CV. The problem is, it is not always simple to identify which CV and taskid is being used to process that work. This document describes how to do that.

Resolution

On the front end CV, issue the DCMT DISPLAY ACTIVE TASKS command and find the task that should be cancelled.

  Taskid   Taskcd   Prog     LTERM    Pri Stat Stim  A(ECB)  ECB Type
0000000586 ADS      ADSOMAIN LTVTM001 100 WAIT NOST 41F4BAFC UNKNOWN ECB TYPE
0000000587 DCMT     RHDCMT00 LTVTM002 225 ACTV

Take the address under the A(ECB) column. Subtract x'10' from it (giving x'41F4BAEC' in this example), and that will be the address of the LRE. Display the LRE with this command:

 DCMT D MEM 41F4BAEC 44
 <Addr>   <Offset>                 <Hex>                    <Character>
41F4BAEC  00000000  D3D9C540 00434003 41F4BAC8 00000057  *LRE .ä ..4.H...ï*
41F4BAFC  00000010  40000000 1C7C4708 41F4BB38 02980FF4  * ....@å..4]..q.4*
41F4BB0C  00000020  C4C3E741 0000024A 42B4FF60           *DCX....¢â..-    *

At offset x'14' of the LRE is the address of the ERE. Using that address, display the ERE:

 DCMT D MEM 1C7C4708 16
 <Addr>   <Offset>                 <Hex>                    <Character>
1C7C4708  00000000  C5D9C540 0043F003 1B52C000 00000057  *ERE .ä0..ê{....ï*

Note, it is also possible to go directly from the A(ECB) value above to the ERE by plugging that address into this one DCMT command:

 DCMT D MEM 41F4BAFC +4 % 16

The byte at offset x'5' in the ERE is the CV NUMBER of the back-end CV. In this case, x'43' is decimal 67. Note that this is not always the same as the system number. It is the CVNUMBER as specified in the sysgen SYSTEM statement. Most clients define their CVs such that they are the same number, but they do not have to be.

The fullword at offset x'C' is the task-id of the back-end task, x'57' = decimal 87.

Go to that CV and cancel that task.

 DCMT VARY ACTIVE TASK TERMINATE TASK 87                                       
IDMS DC261008 V67 USER:USER_01  TASK 0000000087 ON TERMINAL LD000000 HAS BEEN TE
RMINATED

This will also abend the front-end task:

04:56  IDMS DC410003 V65 T586 DNS SEND/RECEIVE Failure Status is : 5839        
04:56  IDMS DC410006 V65 T586 DNS Processing error, Function is  RECEIVE_AND_WAIT, Status is XMIT Error
04:56  IDMS          V65 T586 DTS: Abend on path's subsequent downstream node  
04:56  IDMS          V65 T586 LTE=LTVTM001 USER=USER_01                        
04:56  IDMS          V65 T586 DTS: Logical connections to node disabled        
04:56  IDMS          V65 T586 LTE=LTVTM001 USER=USER_01                        
04:56  IDMS          V65 T586 DTS: Physical connection to node disabled        
04:56  IDMS          V65 T586 LTE=LTVTM001 USER=USER_01                        
04:56  IDMS DC173008 V65 APPLICATION ABORTED. BAD IDMS STATUS RETURNED; STATUS=0069