No se puede acceder a datos PRIVATE externos

En la posición indicada del programa se intenta acceder a un dato de tipo PRIVATE de otro proceso; no está permitido.

Si se quiere acceder desde un proceso a un dato de otro proceso, éste se debe declarar dentro de la sección LOCAL.

Ejemplo:
PROGRAM mi_juego;
PRIVATE n;
BEGIN
    mi_proceso();
    //...
END
PROCESS mi_proceso()
PRIVATE n;
BEGIN
    father.n=0; // No se puede acceder a datos PRIVATE externos.
END


Es imposible acceder a datos PRIVATE incluso cuando el proceso accedido es del mismo tipo que el proceso que está intentando acceder al dato.

La forma correcta en la que se debe declarar la variable n en el ejemplo anterior es como se muestra a continuación:

Ejemplo:
PROGRAM mi_juego;
LOCAL n;
BEGIN
    mi_proceso();
    //...
END
PROCESS mi_proceso()
BEGIN
    father.n=0;
END


Se recuerda que los datos declarados dentro de la sección LOCAL los tendrán todos los procesos del programa (todos los procesos del ejemplo anterior tendrán una variable propia de nombre n).


Ver: Sintaxis - Declaración de datos PRIVATE