Class-variables are declared, similar to instance-variables. through macro-expansion inside the :- pce_begin_class/[2,3] ... :- pce_end_class/0 definition of a class. The syntax is:
class_variable(<name>, <type>, <default>, [<summary>]).
<default> defines the value if not overruled in the Defaults 
file. It is a Prolog term describing an object similar to the arguments 
of send/[2-12].
In the following example. there is a class with the property 
`expert_level'. The program defines the default level to be novice. The 
user may change that in his/her personal Defaults file or 
change it while the application is running. As the value may change at 
runtime, there should be an instance- as well as a class-variable. Below 
is the skeleton for this code:
variable(expert_level, {novice,advanced,expert}, get,
         "Experience level of the user").
class_variable(expert_level, @default, novice).
expert_level(Obj, Level:{novice,advanced,expert}) :->
        send(Obj, slot, expert_level, Level),
        <handle changes>.
        ...,
        (   get(Obj, expert_level, expert)
        ->  ...
        ;   ...
        ),
        ...