0363 abend on OBTAIN ... USING
search cancel

0363 abend on OBTAIN ... USING

book

Article ID: 18790

calendar_today

Updated On:

Products

IDMS IDMS - Database

Issue/Introduction

For applications that use an OBTAIN ... USING on r16.0 or prior releases, upgrading to a more current release could cause an unexpected 0363 abend in that application.

 

Environment

Release: r16.0 or later.

Resolution

On r16.0 and earlier releases, the specification of multiple sort keys was accepted by the preprocessor in an OBTAIN USING command. However, even though that syntax was accepted, the DBMS would actually only recognize the first parameter in the list. For example, if the total key length was 100 bytes then DBMS would look at the 100 bytes starting from the address passed as the first USING parameter. If the other sortkey fields listed in the OBTAIN USING statement were contiguous in storage, then it would appear that the command was working as coded. This was corrected to give the 63 minor code in r16.0 via an APAR and changed under r17.0 in source. If a site did not have that APAR applied on r16.0, then any upgrade to a later release would cause this 0363 to appear in dialogs and programs using this syntax.

This was also changed in the preprocessors, so that they would flag the statement as containing a syntax error. From the r17.0 Release Summary:

8.7 FIND/OBTAIN WITHIN SET USING SORT KEY DML Statement

A COBOL program containing the FIND/OBTAIN WITHIN SET USING SORT KEY DML statement might compile with a syntax error although it compiled successfully on a prior release. IDMS now ensures compliance with the following rules when processing a FIND/OBTAIN WITHIN SET USING SORT KEY DML statement:

You cannot specify multiple field names as the sort key in the USING clause.

You must terminate the DML statement with a period or semicolon after specifying the sort key in the USING clause, unless the statement is followed by an ON clause. The IDMSDMLC precompiler is enhanced to detect extra parameters and issue a syntax error at precompile time. This precompile will get a DML004 syntax error. R17.0 APAR RO12491 will change the generic DML004 to a more specific DML084 "Missing Terminator".