A task invoked from IDMS to communicate with a CICS transaction is doing a #TREQ ALLOC and gets an allocation error.
search cancel

A task invoked from IDMS to communicate with a CICS transaction is doing a #TREQ ALLOC and gets an allocation error.

book

Article ID: 6502

calendar_today

Updated On:

Products

IDMS IDMS - Database IDMS - ADS

Issue/Introduction

A task is invoked from IDMS to communicate with a CICS transaction.

The program in IDMS will perform the following:

1) #TREQ ALLOC

2) #TREQ PUT

The program in CICS will do a RECEIVE and then SEND with the LAST option

The program in CV will perform #TREQ GET.

 

The following is failing with an ALLOCATE ERROR in IDMS

      #TREQ    ALLOC,UIOCBA=UIOCB,OPTNS=(IMM),COND=ALL,ERROR=RTNERR         

It fails with a UIOUCOM error code x’20’ & UIOUCM2 secondary error code of x’30’.

Which means: 

UIOALFN  EQU   X'30'    ERR - ALLOCATE FAILED, NO RETRY

Is this caused not having any WINNER sessions available?

 

Environment

IDMS - All Supported Releases

Cause

Having only a contention LOSER available will not prevent IDMS from allocating a session to a program. A session can be allocated by IDMS to a program on both a contention WINNER or contention LOSER. The contention winner/loser designation determines who will win a contention situation if both nodes attempt to initiate a conversation simultaneously. 

This problem occurs because there are no sessions available to be allocated and with OPTNS=(IMM), IDMS will not wait for one to become available.

It could mean there are insufficient PTE/LTEs defined for this LU or sessions are not being released.

A conversation is usually terminated with a #TREQ PUT,OPTNS=LAST

This will end the conversation and also end the session with the program but the session is not closed, it will remain open to be allocated to the next program that starts a conversation. 

 

Resolution

The best way to get around this problem is to change the #TREQ ALLOC,OPTNS=(IMM) to #TREQ ALLOC,OPTNS=(ANY), this will cause the program to wait until a session becomes available. 

Other possible solutions are: 

  • Change the program to code a retry of the #TREQ ALLOC when the problem occurs. 

  • Define more LTERMs/PTERMs for this LU in the SYSGEN.

Additional Information