TYPE (* регистры машины *)
    Register* = RECORD
                  ind1*   : SHORTINT; 
                  ind2*   : SHORTINT; 
                  int*    : LONGINT;  
                  result* : LONGINT;  
                END; 

  TYPE (* процедурные типы для переключателей процедур *)
    ProcType1* = PROCEDURE (i: SHORTINT; j: SHORTINT):
LONGINT;
    ProcType2* = PROCEDURE (i: SHORTINT): LONGINT;
    
  VAR (* абстрактные процедуры для разных вариантов *)
    PascalTriangle* : ProcType1;
    Fibonacci*      : ProcType2;

  CONST
    MaxPasINDEX  = 31; (* 0..31 *)
    MaxFibINDEX  = 45; (* 0..45 *)
    MaxFactINDEX = 12; (* 0..12 *)
    PasCOUNT = ((MaxPasINDEX DIV 2)-1) * ((MaxPasINDEX-1)
DIV 2); (* 210 *)
    FibCOUNT = 32;
  VAR
    r*       : Register;
    primeDesc: PrimeDesc;
    isPrime  : POINTER TO ARRAY OF SET;   
    pas      : ARRAY PasCOUNT OF LONGINT; 
    fib      : ARRAY FibCOUNT OF LONGINT;