The following applies with effect from version 6.0.
DataStage server is licensed per CPU. This is outside the scope of the question.
DataStage clients are licensed for a maximum number of users; this means a maximum number of connected client machines.
When a DataStage client connects, a number of things occurs. These include the following.
- A shared lock is taken on a non-existent record in the UV.ACCOUNT table (hashed file). The ID of that record is projectname.&!DS.ADMIN!& and it serves to signal to the administrative utilities that require exclusive access that there is one or more connected clients.
A record is created in the DS_LICENSE table (hashed file) and an exclusive (RU) lock taken on it. The ID of the record is made up of the Windows ID for the client machine, the hostname of that machine, and the process ID on the DataStage server machine of the dsapi_slave process associated with the connected client.
Within the record in DS_LICENSE are the client licence serial number, number of users, expiry date, Windows ID of the client machine and the dsapi_slave process ID. This record and the two locks are removed when the client disconnects cleanly, and can be cleaned up for defunct processes by the DataStage deadlock daemon or the dslictool executable.
For example, if there is a client that has a Manager and a Designer open, there will be two records in DS_LICENSE, one for each client. They will have the same client Windows ID, and therefore will only consume one licence.
The first connected client establishes the limit. I recently had a client upgrade from five users to 10 but, before all developers' PCs could have their licences upgraded, one early bird logged in with the old, five-user licence. Five became the limit until the number of connected users fell to zero, after which the next connection established a new limit.
Note that there are other mechanisms for enforcing licensing; what I have described above are the visible aspects. Actual licence management occurs in the disk shared memory segment. If you really want to see it, use the command
analyze.shm -x (but there's nothing you can do to affect (thwart?) it). If it's any consolation, I can't break it either - the internal structure of the shared memory segment can not be determined without access to source code, and indeed is different on different platforms.
Using this mechanism, one connected machine can theoretically have as many clients open as required. In practice, though I've not encountered it, there may be a limit. For example, UniVerse uses a similar (but different) "device licensing" mechanism; you get a maximum of ten connections from one client machine, the eleventh costs another licence seat. As does the twelfth, and so on.
Looking forward, all this will change. The new user interface (code name Sorcerer), which goes into beta in June 2005, uses active services, so no doubt the licensing algorithms will all change. We will have to await the next major release (code name Hawk) to see exactly how they've done it.
The short answer to the original question is that you can have any number of open DataStage clients on one machine, and they still count as one connection to the DataStage server.
Of course, if you're connecting to more than one DataStage server (for example with Version Control), then you are consuming a licence on each.