Carrying Christophe's statement on IDCAP one step further. The IDCAP is a
combination of the number of IDs found in an instance (and all of its
resolved entities) multiplied by the NAMELEN value. In the CONCRETE
SYNTAX (used in the Reference Capacities), the NAMELEN value is 8 (names
for IDs, ENTITIES and such could be no longer than 8 characters), most
other SGML Declarations have set the value to 32 or even 64. The higher
this number, the fewer IDs you can have for a value of 300000 (which is
still better than the 35000 in the Reference Capacities).
ENTCAP, ATTCAP, GRPCAP, ELEMCAP and IDREFCAP (there are a couple of others
as well and they are all defined in the ISO 8879 [or in Goldfarb's "SGML
Handbook"]) all follow the same approach. There is also a TOTALCAP value
which is the a value that is maximum capacity of all the other capacity
values. This number in the Reference Capacities is 35000, in the CALS
SGML Declaration (see MIL-PRF-28001C), the value is 300000. Don't ask
where we came up with that number. As I recall sitting in the room as we
discussed this, it was a WAG.
Most applications don't deal with the capacity values or even the length
values (LITLEN is one) any more. System power and memory have grown to
the point where it is ALMOST irrelevant. (though with an extremely large
file you will see some significant slow down if not an entire stoppage).
One value that I have not tested recently, but in earlier versions of
Adept was a key value is the NAMELEN. In the CONCRETE SYNTAX, this was
(as I already stated) 8. It is now larger. If you should ever run into a
DOCYTPE (SGML only most likely) that somehow uses the original SGML
Declaration, it is possible that any ID, ENTITY, ATTRIBUTE or ELEMENT
names longer than 8 characters will be truncated. I know that Adept 7 did
it (and I think 8 did too). I got some files back from a conversion house
that was not using the CALS Declaration and all our IDs had been truncated
back to 8 characters. Needless to say I had several hundred DUPLICATE
IDs. 😞
But Christophe is right when he says you can either use another DCL file
or find the actual DEC file (it is ASCII text), modify it to increase your
values and press on. Just one thing to keep in mind. If you change your
declaration and don't let others who may use your file know about it, they
will get errors that you don't. So you should pass your declaration file
on with your document instance and DTD/Schema.
Lynn