'BEGIN'
    'ARRAY'
        A(/1 : 3/),
        B(/1 : 3, 1 : 3/);
    'REAL' 'PROCEDURE' SUM(DIM, A);
        'VALUE'
            DIM;
        'INTEGER'
            DIM;
        'ARRAY'
            A;
        SUM :=
            'IF' DIM = 1 'THEN'
                A(/1/)+ A(/2/)+ A(/3/)
            'ELSE'
                SUM2(A);
    'REAL' 'PROCEDURE' SUM2(A);
        'ARRAY'
            A;
        SUM2 := A(/1, 1/)+ A(/1, 2/)+ A(/1, 3/)+ A(/2, 1/)+ A(/2, 2/)+
            A(/2, 3/)+ A(/3, 1/)+ A(/3, 2/)+ A(/3, 3/);
    'INTEGER'
        I,
        J;
    'FOR' I := 1,
        2,
        3 'DO'
        'BEGIN'
        A(/I/):= I * I;
        'FOR' J := 1,
            2,
            3 'DO'
            B(/I, J/):= A(/I/)+ J
        'END';
    OUTREAL(99,SUM(1, A));
    OUTREAL(99,SUM(2, B))
'END'