We will finalize the agenda for the Caché User Group @BeneluxSymposium shortly.

All questions or suggestions for demos or presentations you want to do are still welcome here or at CUG Benelux Blog

Do you have a user with the %ALL Role to check if the problem is user-based, 

if that user cannot login either, it could be that some services are disabled.

Again, you can know for sure by enabling auditing and look at the login failures.

If Caché Auditing is enabled, you can check the login failure messages to see if  the problem is a disabled user or wrong username/password.

(Auditing can be enabled in Caché portal ->  system admin -> Security -> Auditing -> Enable Auditing.

Use 'configure Auditing events' to enable Login Failure messages.

In the real world, there are lots of programs still using this style, every developer using Caché Object Script should be able to read this and understand the side-effects, pitfalls, even if we recommend to not use it anymore... 

Yes, same here, i also use following code a lot:

Open <some device>:"R":0 Else  Write "could not open device" Quit

I always use Else on the same line just after the command that changes $test,

having too much instructions between them creates problems. 

Besides all that is mentioned, the If without braces has a side-effect that the If with braces does not have : it affects the system variable $Test.

USER>set $test=0
USER>w $test
USER>if 1=1 { write "one" }
USER>w $test
USER>if 1=1 write "one"
USER>w $test

Not important, only if you use the ELSE (legacy) command...


Guessed right : found out that i still have a wife and two kids, ... bummer ;)

Your use of Set $listbuild was unknown to me : i only used it on the right hand side (like Set var = $lb(...) ), but on the left-hand side, it is ideal to set a bunch of variables in the same instruction, cool !

hi Dmitry,

i gladly take your hints, this is precisely the goal of this article series : to comment and discuss code and make it better or point out alternative code.

Using streams is to be preferred over the Open command (like showed in Bert's code), you can see the age difference in comparing our code !

I limit the use of standalone Else to checking a timeout.

For example:

Lock +^MyLock("MyBatch"):1 Else  Quit "job is already running"

which is identical to 

Lock +^MyLock("MyBatch"):1
If '$Test {
    Quit "job is already running"




You will always need to add the property and an entry in the storage section of the mapped class.

If you include the class source and global entry, we can help you in more detail.