Natural Error 3049

Any experience with this error message 3049?

The line number returned is the blank comment line between data parameter and local and the view of the file defined in local.

A straightforward message: one of your records is too big. :frowning:

Likely the DDM contains an MU or PE. Let’s say you define #MU (A250/191). Assigning 10 characters to each entry is no problem (1910 characters), but if you tried to assign 50 characters each (9550 characters), you might run into trouble. It depends on the block sizes specified when the database was created. With variable-length fields, like names and addresses, it’s difficult to determine how many MU/PE entries will fit into a record.

From a DBA point of view, you could try larger block sizes for your containers. From a programmer point of view, take a look at what data is being stored, and how you can limit the amount of data in a single record.

Yes, that could be the problem. If you dont know, how a record is compressed in Adabas, you could fall into a trap with multiple fields.

Another Example: A few weeks ago, I got a similar problem with a Numeric field (P20.5) in a MU-Structure. If you move 1 to all 191 occurences of that field, you’ll get 956 bytes of data. It is calculated as follows:
→ 1 byte length counter of the multiple field
→ 191 * 1 byte length counter for each occurance
→ 191 * 4 byte for the “1”. The Value “1” with 5 decimal places is converted into 100000 (because the decimal point is not stored in Adabas). And a packed “100000” takes 4 bytes.
So it is: 1 + 1 * 191 + 4 * 191 = 956

Let’s take Ralph’s example: If you want to calculate the length of his compressed record, you have to add the length-counter-bytes for each field plus the length counter for MU or PE. So if you assign 50 characters to 191 occurendes, you’ll get 1 + 1 * 191 + 50 * 191 = 9742 bytes

Thank you very much.

Yes, I do push the boundaries on the use of MU’s and PE’s. I always had the DBA monitoring and assisting me in very well in these.

I have 5 MU’s. The DDM had them as (A100/1:175 for the 1st 3 MU’s & A100/1:1) and the error 3049 appeared on the 149 th occurence of the 1st MU.

I changed the FDT & DDM for the same MU’s as (A50/1:175 for … A50/1:1). I also made it NU (NULL Suppressed) in the FDT and all is well.

How do I now keep track of the record size? I am unable to find the mainframe equivalent of ADADCK which provides the MAX record size possible the largest record size in the file.

Once again thank you very much

  1. On Unix or Windows, ADAFIN tells you the currently longest record of a file. Please see http://adabas.forums.softwareag.com/viewtopic.php?t=882 for more details. But Sorry, I don’t know the regarding utility on Mainframe.
  2. The maximal record size possible is the size of the data block minus a few bytes for ISN etc.