Regarding ISN Buffer limit (Adabas Vista Error : +0249).

Hi All,

I have loaded one record in adabas file which has ISN value greater than 2,147,483,647.

I am receiving adabas response +0249 (Adabas Vista Error).

02 ADA-CTRL-ADDITIONS-2           X(4)               ..                     
                                                                           4400                     
                                                                           000F                     

Control block length is S9(9) COMP.

Standard Limits are as below and my record’s isn is greater than 2,147,483,647.

So,may be as limit is crossed I am getting adabas response error as +249.

If I am changing S9(9) COMP to S9(10) COMP or 9(10) comp. Even in that situation as well i am getting +249 error.

Could you please suggest what data-type and length i should give for adabas ISN variable in control block
so that ADA-CTRL-ISN will accept ISN value greater than 2,147,483,647.

Table 1. Storage Representation:
Picture Storage representation Numeric values
S9(1) through S9(4) Binary halfword (2 bytes) -32768 through +32767
S9(5) through S9(9) Binary fullword (4 bytes) -2,147,483,648 through +2,147,483,647
S9(10) through S9(18) Binary doubleword (8 bytes) -9,223,372,036,854,775,808 through +9,223,372,036,854,775,807
9(1) through 9(4) Binary halfword (2 bytes) 0 through 65535
9(5) through 9(9) Binary fullword (4 bytes) 0 through 4,294,967,295
9(10) through 9(18) Binary doubleword (8 bytes) 0 through 18,446,744,073,709,551,615

Adabas allows a maximum of 2,147,483,647 records per file. Vista allows you to exceed that number via partitioning. Have you read the document contrasting Adabas ISNs and Adabas Vista ISNs? Both are 4-byte binary.

http://techcommunity.softwareag.com/ecosystem/documentation/adabas/avi822mfr/prog/using-adabas.htm#using-adabas

Response Code 249 subcode 15 (h’00F’) refers to an inconsistency “with the partition criteria defined to the partition identified by the ISN in the Adabas control block.” It appears your ISN is specified incorrectly.

http://techcommunity.softwareag.com/ecosystem/documentation/adabas/avi822mfr/messages/nucresp.htm#Response_249

Thanks for the reply.

Given link is talking about 4 byte ISN. I am using 9 byte ISN and it is working fine for other records which has ISN within limit.
Only for records which has ISN limit crossed i am getting +0249 error response.

I need sample ISN code to put in application program’s control block. There is no file handling like batch programs here. These cobol adabas programs have direct ADABAS calls for online processing.

Error information:

The partitioning field value specified in the record buffer of the A1 command is inconsistent with the partition criteria defined to the partition identified by the ISN in the Adabas control block.

Such an update requires the relocation of the ISN to another partition, which is not allowed.

Action: Review the application program. Use a delete and store as an alternative.


Record buffer is receiving output as per format buffers. Value buffer has input and search buffer has descriptor.

Incorrect -ve ISN value is same from S1,HI and A1 call. While amending it is giving +0249.

Could you please suggest what changes i need to make in record buffer as per error description to get correct isn value from adabas call.

Below structure I am sending while calling adabas from cobol program and receiving +0249.

From Natural program ISN = +2147527533 for the same record and via cobol-adabas call with below structure i am getting ISN value as -2147448637.

Do i need to change isn’s data type S9(9) COMP to any other data type. Some leads suggested to try S9(10) and 9(10) comp, but it is not working.

Could you please suggest.

02 ADA-CTRL-FILLER-1 S9(4) COMP +0000
02 ADA-CTRL-COMMAND-CODE X(2) A1
02 ADA-CTRL-COMMAND-ID X(4) ST11
02 ADA-CTRL-FILE-NUMBER S9(4) COMP +31229
02 ADA-CTRL-RESPONSE S9(4) COMP +0249
02 ADA-CTRL-ISN S9(9) COMP -2147448637
02 ADA-CTRL-ISN-LOW-LIMIT S9(9) COMP +00000000
02 ADA-CTRL-ISN-QUANTITY S9(9) COMP +00000000
02 ADA-CTRL-FORMAT-BUFF-L S9(4) COMP +0102
02 ADA-CTRL-RECORD-BUFF-L S9(4) COMP +0401
02 ADA-CTRL-SEARCH-BUFF-L S9(4) COMP +0000
02 ADA-CTRL-VALUE-BUFF-L S9(4) COMP +0000
02 ADA-CTRL-ISN-BUFF-L S9(4) COMP +0000

You may be using a variable of 9 bytes, but Adabas uses 4. ISN is 4 bytes, fullword binary, COMP-5 S9(9), with valid values of 1 to 2,147,483,647.

Adabas Vista defines partitions (multiple Adabas files) to allow us to go beyond the 2G-record limit. My understanding is that each component can contain up to 16 million records. With 255 partitions, you get 4G records, double the Adabas limit. Each Vista partition/component/file has ISN 1, ISN 2, ISN 3, etc. They are differentiated with a 1-byte component ID. If you are seeing ISNs with negative values, those would be Adabas Vista ISNs, translations of the Adabas ISNs.

Your error is occurring on an A1/Update call. How did you retrieve the record? If an L1, what did you specify for the ISN? From the error subcode, it appears that Adabas thinks you are trying to change the record’s component ID.

Perhaps you should re-post your problem on forum Adabas Distributed Data Management for Adabas, found under Adabas Add-on Products. Adabas Vista is a topic there.

Thanks Ralph,

For:
Your error is occurring on an A1/Update call. How did you retrieve the record? If an L1, what did you specify for the ISN? From the error subcode, it appears that Adabas thinks you are trying to change the record’s component ID.

Answer:

Calls are S1 to find, then HI to hold ISN, then A1 for amending. There is no L1 call.

All have same control block only COMMAND-CODE is changing from S1 to HI to A1.

After S1 call i am saving the ISN and then same i am passing for HI and A1 call.

For some records calls are successful when limit is not reached. But for records where limit is reached it is give +0249 error response.

isn:
02 ADA-CTRL-ISN S9(9) COMP

initially i didn’t pass anything. then i have moved ‘+0’ then ‘.’ but all trials failed.

When i changed size of isn from S9(9) COMP to S9(4) COMP then error response received as +0062.

ADABAS response +0062 means -
One of the following has occurred:
? The length of the search or value buffers as specified in the search and value buffer length
fields, respectively, was not sufficient to accommodate the search criteria specified.
? The first character in the search buffer was a period (.).
? The search buffer does not contain a period (.).

Could you please suggest do we need to pass anything in control block for partition datasets. I never worked on partition datasets.

If you have any sample code for partition dataset direct cobol-adabas calls then could you please provide.

I don’t know how to correct this control block for partition dataset.

Yes i will re-post my problem on forum Adabas Distributed Data Management for Adabas.