Dear Sebastian.
There is two sub problems in the one your have submitted.
First, a pure function has no border effect (no output, no changes of attributes, no changes of its arguments).
So a pure function is supposed to reply a value, otherwise it is a non sense to define a pure function that does nothing :-)
Consequently, you cannot call a pure function as a procedure. The value returned by the pure function must be stored/used.
This is explaining the "This expression is not allowed in this context, since it doesn't cause any side effects." problem.
Second, according to your code, your function should not be pure (call to info that is not pure). Then, the second problem may occur, that is more a warning and a notification of something to take care.
SARL compiler tries to infer if the uses of "occurrence" event may cause an change of the values stored in the occurrence event, because a received event is assumed to be read-only according to the SARL specifications.
In your case, the SARL "occurrence.XXX" is passed as argument of a not-pure function. The SARL compiler cannot analyze the content of the invoked function yet to determine if the value replies by occurrence.XXX is changed in the function (it is a future feature of the compiler). Then, the SARL compiler notifies you with a warning that you have to ensure by yourself that the attributes of the occurrence event are not changed.
In your case you could simply ignore the warning because you're sure that the value of "occurrence.XXX" is never changed.
Cheers.