
'BEGIN'
'COMMENT' lib 1;
    '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'
                (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(1,sum(1, a)); 
    outreal(1,sum(2, b)); 
'END' 

!ALGOL

'BEGIN'
'COMMENT' lib 1;
    'PROCEDURE' recursive(level, l); 
        'VALUE'
            level; 
        'INTEGER' 
            level; 
        'LABEL' 
            l; 
        'BEGIN'
        'IF' level \= 0 'THEN' 
            recursive(level - 1, exit)
        'ELSE'
            'GOTO' l; 
       exit :; 
        outreal(1,level)
        'END'; 

    recursive(10, exit); 
   exit :; 
'END' 

!ALGOL

'BEGIN'
'COMMENT' lib5;
    'INTEGER' 
        i; 
    'BOOLEAN' 
        b; 
    'PROCEDURE' labelbyvalue(l); 
        'VALUE'
            l; 
        'LABEL' 
            l; 
        ; 

    'PROCEDURE' labelbyname(l); 
        'LABEL' 
            l; 
        'BEGIN'
        i := 1; 
        'IF' b 'THEN' 
            'GOTO' l
        'END'; 

    'SWITCH' s := 
        l1, 
        l2; 
    'INTEGER' 'PROCEDURE' nottouse; 
        nottouse := sqrt( - 1); 

    'INTEGER' 'PROCEDURE' one; 
        one := 1; 

    b := 'FALSE'; 
    labelbyname(s[nottouse]); 
    b := 'TRUE'; 
    i := 2; 
    labelbyname(s[i]); 
   l1 :; 
    outreal(1,1); 
   l2 :; 
    outreal(1,2); 
    labelbyvalue(s[one]); 
'END' 


!ALGOL

'BEGIN'
'COMMENT' lib 1;
    'INTEGER' 'ARRAY' 
        a[1 : 9]; 
    'INTEGER' 
        i, 
        s; 
    'PROCEDURE' dummy(a); 
        'VALUE'
            a; 
        'ARRAY' 
            a; 
        sum(a); 

    'PROCEDURE' sum(a); 
        'ARRAY' 
            a; 
        'FOR' i := 1 'STEP' 1 'UNTIL' 9 'DO'
            'BEGIN'
            s := s + a[i]; 
            a[i] := 0
            'END'; 

    s := 0; 
    'FOR' i := 1 'STEP' 1 'UNTIL' 9 'DO'
        a[i] := i; 
    dummy(a); 
    outreal(1,s); 
    'FOR' i := 1 'STEP' 1 'UNTIL' 9 'DO'
        'IF' a[i] \= i 'THEN' 
            outreal(1,i)
'END' 

!ALGOL

'BEGIN'

    'COMMENT' lib1;

    'REAL' 
        x, 
        y; 
    'INTEGER' 
        i; 
    'FOR' x := @6, 
        @+6, 
        @-6, 
        .6, 
        6, 
        6.6, 
        .6@6, 
        .6@+6, 
        .6@-6, 
        6@6, 
        6@+6, 
        6@-6, 
        6.6@6, 
        6.6@+6, 
        6.6@-6 'DO'
        outreal(1, x); 
    outreal(1, .0000000000000000123456789123456789); 
    outreal(1, 3.1415926535897932384626433832795028841972); 
    x := y := .0000001; 
    'FOR' i := 1 'STEP' 1 'UNTIL' 13 'DO'
        'BEGIN'
        outreal(1, x); 
        outreal(1, y); 
        x := 10.0 * x; 
        y := 110 * x / 10.0
        'END' 
'END' 


!ALGOL

'BEGIN'
    'PROCEDURE' p(l); 
        'INTEGER' 
            l; 
       l : 'BEGIN'
        'REAL' 
            a; 
        'GOTO' l; 
       l :; 
        'GOTO' ll
        'END'; 

    p(1); 
   ll :; 
'END' 


!ALGOL

'BEGIN'

    'COMMENT' lib 1;

    'INTEGER' 
        s; 
    'PROCEDURE' p(f, g); 
        'PROCEDURE' 
            f, 
            g; 
        'BEGIN'
        'INTEGER' 
            x; 
        'PROCEDURE' r; 
            'BEGIN'
            outreal(1, s);
            outreal(1, x)
            'END'; 

        s := s + 1; 
        x := s; 
        'IF' s = 1 'THEN' 
            p(f, r)
        'ELSE'
            f(g, r)
        'END' p; 

    'PROCEDURE' q(f, g); 
        'PROCEDURE' 
            f, 
            g; 
        'BEGIN'
        f; 
        g
        'END' q; 

    s := 0; 
    p(q, p); 
'END' 


!ALGOL

'BEGIN'

    'COMMENT' lib 1;

    'INTEGER' 
        n1, 
        n2; 
    'PROCEDURE' dummy; 
        ; 

    'PROCEDURE' p(x, l); 
        'VALUE' 
            x; 
        'INTEGER' 
            x; 
        'PROCEDURE' 
            l; 
        'BEGIN'
        'PROCEDURE' gotol1; 
            'GOTO' l1; 

        'IF' x = n1 'THEN' 
            p(x - 1, gotol1)
        'ELSE' 'IF' x = n2 'THEN' 
            l
        'ELSE'
            p(x - 1, l); 
        l1 :; 
        outreal(1, x)
        'END' p; 

    n1 := 4; 
    n2 := 2; 
    p(5, dummy); 
    n2 := 0; 
    p(7, dummy); 
'END' 


!ALGOL

'BEGIN'

    'COMMENT' lib 1;

    'INTEGER' 
        s; 
    'PROCEDURE' p(f, g); 
        'PROCEDURE' 
            f, 
            g; 
        'BEGIN'
        'INTEGER' 
            x; 
        'PROCEDURE' r(f, g); 

        'PROCEDURE' f, g;
            'BEGIN'
            outreal(1, s);
            outreal(1, x)
            'END'; 

        s := s + 1; 
        x := s; 
        'IF' s = 1 'THEN' 
            p(f, r)
        'ELSE'
            f(g, r)
        'END' p; 

    'PROCEDURE' q(f, g); 
        'PROCEDURE' 
            f, 
            g; 
        'BEGIN'

    f( q, q );
    g( q, q)
        'END' q; 

    s := 0; 
    p(q, p); 
'END' 




!ALGOL

'BEGIN'

    'COMMENT' lib 1;

    'INTEGER' 
        n1, 
        n2; 

    'PROCEDURE' p(x, l); 
        'VALUE' 
            x; 
        'INTEGER' 
            x; 
        'LABEL' 
            l; 
        'BEGIN'

        'IF' x = n1 'THEN' 
            p(x - 1, l1)
        'ELSE' 'IF' x = n2 'THEN' 
            'GOTO' l
        'ELSE'
            p(x - 1, l); 
        l1 :; 
                outreal(1, x)
        'END' p; 

    n1 := 4; 
    n2 := 2; 
    p(5, l2); 
    n2 := 0; 
    p(7, l2); 

    l2:;
'END' 


!KDF9
