begin 

    comment library 1;

    integer 
        i, 
        case; 
    boolean 
        b; 
    real 
        x; 
    integer procedure p(k, q); 
        value 
            k; 
        integer 
            k; 
        integer procedure 
            q; 
        p := 
            if k = 1 then 
                q(i)
            else if k = 2 then 
                q(b)
            else if k = 3 then 
                q(x)
            else 
                q(q(20)); 

    integer procedure q1(i); 
        value 
            i; 
        integer 
            i; 
        q1 := 100 + i; 

    integer procedure q2(b); 
        value 
            b; 
        boolean 
            b; 
        q2 := 200 + (if b then 1 else 0); 

    integer procedure q3(x); 
        value 
            x; 
        real 
            x; 
        q3 := 300 + x; 

    procedure fail(m, n); 
        value 
            m, 
            n; 
        integer 
            m, 
            n; 
        if m \= n then 
            begin 
            outreal(1, m); 
            outreal(1, n); 
            outreal(1, case)
            end 
        else 
            case := case + 1; 

    i := 1; 
    x := 10.4; 
    case := 0; 
    b := false; 
    fail(p(1, q1), 101); 
    fail(p(4, q1), 220); 
    fail(p(2, q2), 200); 
    fail(p(3, q3), 310); 
    fail(p(4, q3), 620); 
    outreal(1, case)
end 


algol

begin 

    comment library 3;

    integer 
        i, 
        case; 
    boolean 
        b; 
    real 
        x; 
    integer procedure p(k, q); 
        value 
            k; 
        integer 
            k; 
        integer procedure 
            q; 
        p := 
            if k = 1 then 
                q(i)
            else if k = 2 then 
                q
            else if k = 3 then 
                q(x)
            else 
                q(q(20)); 

    integer procedure q1(i); 
        value 
            i; 
        integer 
            i; 
        q1 := 100 + i; 

    integer procedure q2; 
        q2 := 200 + (if b then 1 else 0); 

    integer procedure q3(x); 
        value 
            x; 
        real 
            x; 
        q3 := 300 + x; 

    procedure fail(m, n); 
        value 
            m, 
            n; 
        integer 
            m, 
            n; 
        if m \= n then 
            begin 
            outreal(1, m); 
            outreal(1, n); 
            outreal(1, case)
            end 
        else 
            case := case + 1; 

    i := 1; 
    x := 10.4; 
    case := 0; 
    b := false; 
    fail(p(1, q1), 101); 
    fail(p(4, q1), 220); 
    fail(p(2, q2), 200); 
    fail(p(3, q3), 310); 
    fail(p(4, q3), 620); 
    outreal(1, case)
end 


algol

begin 

    comment library 1;


    integer 
        i, 
        j, 
        k, 
        k1;
    real 
        t1, 
        t2; 
    integer procedure ackermann(m, n); 
        value 
            m, 
            n; 
        integer 
            m, 
            n; 
        ackermann := 
            if m = 0 then 
                n + 1
            else if n = 0 then 
                ackermann(m - 1, 1)
            else 
                ackermann(m - 1, ackermann(m, n - 1)); 

    k := 16; 
    k1 := 1;
    for i := 1 step 1 until 6 do 
        begin 
        t1 := cputime; 
        j := ackermann(3, i); 
        t2 := cputime; 
        if j \= k - 3 then 
            begin 
            outreal(1, i); 
            outreal(1, j)
            end; 
        outreal(1, t2 - t1); 
        outreal(1, 3 * (t2 - t1) / (512 * k1 - 15 * k + 9 * i + 37) );
        k1 := 4 * k1;
        k := 2 * k; 
        end 
end 



algol

begin 

    comment library 1;

    integer 
        n; 
    n := 3; 
    begin 
        array 
            a[1 : if n = 3 then 3 else - 100]; 
        integer 
            n; 
        n := 2; 
        outreal(1, n); 
    end; 
    outreal(1, n)
end 


algol

begin 

    comment library 9;


    integer array 
        eq[1 : 3]; 
    integer 
        i; 
    real 
        x, 
        y; 
    procedure inc(a, b); 
        value 
            a, 
            b; 
        real 
            a, 
            b; 
        if a < b then 
            eq[1] := eq[1] + 1
        else if a = b then 
            eq[2] := eq[2] + 1
        else 
            eq[3] := eq[3] + 1; 

     
     
    for i := 1 step 1 until 3 do 
        eq[i] := 0; 
    for i := 2 step 1 until 100 do 
        begin 
        inreal(2, x); 
        y := 1 / (i * i - 1); 
        outreal(1, y); 
        inc(x, y)
        end; 
    for i := 1 step 1 until 3 do 
        outreal(1, eq[i]); 
     
     
end 


algol

begin 

    comment library 1;

    real 
        x, 
        y; 
    integer 
        i, 
        j; 
    array 
        a[1 : 10]; 
    x := y := 1.0; 
    i := j := 0; 
    begin 
        procedure p; 
            begin 
            x := 20; 
            i := x + y; 
            q(a[3], i + j)
            end; 

        procedure q(l, k); 
            value 
                k; 
            label 
                l; 
            integer 
                k; 
            if k = 0 then 
                goto l; 

        switch a := 
            a1, 
            a2, 
            a3; 
        integer procedure j; 
            j := y; 

        real 
            i; 
        real procedure y; 
            y := x; 

        integer 
            x; 
        a1 :; 
        x := 10; 
        q(a[2], y - x); 
        a2 :; 
        p; 
        if i = 0 or j = 0 or x = 1.0 or y = 1.0 then 
            outreal(1, 100); 
        a3 :; 
    end; 
    if i = 0 and j = 0 and x = 1.0 and y = 1.0 then 
        outreal(1, 0)
end 



algol

begin 

    comment library 1;

    integer 
        sum; 
    procedure p1(s, r, i, b, ra, ia); 
        string 
            s; 
        real 
            r; 
        integer 
            i; 
        boolean 
            b; 
        real array 
            ra; 
        integer array 
            ia; 
        sum := sum + r + i + (if b then 1 else 0) + ra[1] +
            ia[1]; 

    procedure p2(ba, l, sw, pr, rpr, ipr, bpr); 
        boolean array 
            ba; 
        label 
            l; 
        switch 
            sw; 
        procedure 
            pr; 
        real procedure 
            rpr; 
        integer procedure 
            ipr; 
        boolean procedure 
            bpr; 
        begin 
        pr; 
        sum := sum + rpr + ipr; 
        if bpr then 
            goto l; 
        if ba[1] then 
            goto sw[2]
        end; 

    procedure p3(r, i, b, ra, ia, ba, l); 
        value 
            r, 
            i, 
            b, 
            ra, 
            ia, 
            ba, 
            l; 
        real 
            r; 
        integer 
            i; 
        boolean 
            b; 
        real array 
            ra; 
        integer array 
            ia; 
        boolean array 
            ba; 
        label 
            l; 
        begin 
        sum := sum + r + i + ra[1] + ia[1] + (if b then 1
            else 0) + (if ba[1] then 1 else 0); 
        if ba[1] then 
            goto l
        end; 

    real 
        r; 
    boolean 
        b; 
    real array 
        ra[1 : 1]; 
    integer array 
        ia[1 : 1]; 
    boolean array 
        ba[1 : 1]; 
    integer procedure ipr; 
        ipr := 2 * sum; 

    real procedure rpr; 
        rpr := 3 * sum; 

    boolean procedure bpr; 
        bpr := not b; 

    procedure pr; 
        sum := 5 * sum + 1; 

    switch ss := 
        work, 
        fail; 
    sum := 0; 
    ia[1] := - 2; 
    ra[1] := 3.55; 
    ba[1] := false; 
    b := true; 
    r := 6.4; 
    p1( [ab], r, sum, b, ra, ia); 
    if sum \= 9 then 
        outreal(1, sum); 
    p2(ba, ss[2], ss, pr, rpr, ipr, bpr); 
    if sum \= 276 then 
        outreal(1, sum); 
    work :; 
    outreal(1, 0); 
    p3(4.6, - 200, true , ra, ia, ba, if true then ss[2] else 
        fail); 
    if sum \= 83 then 
        outreal(1, sum); 
    p1( [cd], rpr, ipr, bpr, ra, ia); 
    if sum \= 500 then 
        outreal(1, sum); 
    p3(rpr, ipr, bpr, ra, ia, ba, fail); 
    if sum \= 3002 then 
        outreal(1, sum); 
    if false then 
        fail : outreal(1, - 1); 
end 


algol

begin 

    comment library 1;

    integer 
        sum; 
    procedure p1(s, r, i, b, ra, ia); 
        string 
            s; 
        real 
            r; 
        integer 
            i; 
        boolean 
            b; 
        real array 
            ra; 
        integer array 
            ia; 
        sum := sum + r + i + (if b then 1 else 0) + ra[1] +
            ia[1]; 

    procedure p2(ba, l, sw, pr, rpr, ipr, bpr); 
        boolean array 
            ba; 
        label 
            l; 
        switch 
            sw; 
        procedure 
            pr; 
        real procedure 
            rpr; 
        integer procedure 
            ipr; 
        boolean procedure 
            bpr; 
        begin 
        pr; 
        sum := sum + rpr + ipr; 
        if bpr then 
            goto l; 
        if ba[1] then 
            goto sw[2]
        end; 

    procedure p3(r, i, b, ra, ia, ba, l); 
        value 
            r, 
            i, 
            b, 
            ra, 
            ia, 
            ba, 
            l; 
        real 
            r; 
        integer 
            i; 
        boolean 
            b; 
        real array 
            ra; 
        integer array 
            ia; 
        boolean array 
            ba; 
        label 
            l; 
        begin 
        sum := sum + r + i + ra[1] + ia[1] + (if b then 1
            else 0) + (if ba[1] then 1 else 0); 
        if ba[1] then 
            goto l
        end; 

    real 
        r; 
    boolean 
        b; 
    real array 
        ra[1 : 1]; 
    integer array 
        ia[1 : 1]; 
    boolean array 
        ba[1 : 1]; 
    integer procedure ipr; 
        ipr := 2 * sum; 

    real procedure rpr; 
        rpr := 3 * sum; 

    boolean procedure bpr; 
        bpr := not b; 

    procedure pr; 
        sum := 5 * sum + 1; 

    switch ss := 
        work, 
        fail; 
    sum := 0; 
    ia[1] := - 2; 
    ra[1] := 3.55; 
    ba[1] := false; 
    b := true; 
    r := 6.4; 
    p1(ra, [ab], [ab], [ab], [ab], [ab] ); 
    p1(ss, ra, ra, ra, ss, ss); 
    p1(pr, ss, ss, ss, pr, pr); 
    p1(ss[2], pr, pr, pr, ss[2], ss[2]); 
    p1(true , ss[2], ss[2], ss[2], true , true ); 
    p1(r, false , false , r, r, r); 
    p2( [ab], [ab], [ab], [ab], [ab], [ab], [ab] ); 
    p2(ra, ra, ra, ra, ra, ra, ra); 
    p2(ss, ss, ss[2], ss, ss, ss, ss); 
    p2(pr, pr, pr, r, pr, pr, pr); 
    p2(fail, ss, fail, fail, fail, fail, fail); 
    p2(true , true , true , true , true , true , true ); 
    p2(r, r, r, r, r, r, r); 
    p3( [ab], [ab], [ab], [ab], [ab], [ab], [ab] ); 
    p3(ra, ra, ra, r, r, r, ra); 
    p3(ss, ss, ss, ss, ss, ss, ss); 
    p3(pr, pr, pr, pr, pr, pr, pr); 
    p3(fail, fail, fail, fail, fail, fail, ss); 
    p3(true , true , r, true , true , true , true ); 
    p3(true , true , r, r, r, r, r); 
    work :; 
    if false then 
        fail : outreal(1, - 1); 
end 


algol

begin 
    integer 
        i; 
    real 
        r; 
    boolean 
        b; 
    array 
        a1[1 : i + b], 
        a2[2 : 4, 5 : 7]; 
    switch s := 
        if r * p0 < 0 then l else l2; 
    procedure p0; 
        r := i div r; 

    procedure p1(f); 
        real 
            f; 
        b := i + r; 

    l :; 
    b := i > s; 
    b := b or p0; 
    r := b + a1; 
    l2 :; 
    r := b and b; 
    i := p1(r); 
    goto b; 
    i; 
    p1(a2 / r); 
    r[i] := 5; 
    i := 
        if b then 
            s
        else 
            r; 
    p1(if b then b else i - i); 
    r := b := b and b; 
    for i := b step 1 until r do 
        a1[s] := a2[2]; 
    a1 := 0; 
    if r then 
        goto l; 
    for p0 := 1, 
        2 do 
        a2[b, i] := 0; 
    begin 
        array 
            q[b : 1]; 

    end; 
    p1(i, r); 
    p1; 
end 




algol

begin 

    comment library 1;

    integer 
        i; 
    integer array 
        a[1 : 10]; 
    i := 1; 
    for a[i] := 1, 
        2, 
        3, 
        4, 
        5, 
        6, 
        7, 
        8, 
        9, 
        10 do 
        i := i + 1; 
    for i := 1 step 1 until 10 do 
        if a[i] \= i then 
            outreal(1, i); 
    outreal(1, 0)
end 


kdf9