I encountered a response code of 47 when trying to access ADABAS (in COBOL) and learnt that it is due to hold queue limit breach. Is there a way to find out the maximum value that is set for the queue in the current execution environment? I read the relevant document and understand the way it is calculated but would like to know the existing value that is present.
If you mean finding out from the client program (COBOL, NATURAL or whatever) - no.
You can use Adabas Online System (AOS) or the operator command “DRES” to display the
parameter settings and high water marks.
The limit for the user is returned in the ADD4 field of the OP-command.
Sorry to disagree, Mogens, ADD4 on an OP can be used to SET limits, not query them.
Adabas will return a version number in ADD4 as a response to an OP (on the mainframe,
on LUW that’s returned in ISNQ)
Sorry, you’re correct Wolfgang.
I’m sure your friendly DBA would be more than happy to let you know the database’s NISNHQ parameter (limit of records on hold for a single user).
Armed with this information, you should modify your COBOL program to issue an ET command before you reach this limit, preferably at the end of a logical transaction or a multiple thereof.
Thanks to everyone for the reply.
I was able get the NH and NU value by accessing the DBES panel and have set the ET limit accordingly. And was able to avoid the abend.