
'BEGIN'

    'COMMENT' library 1;

    'ARRAY' 
        v, 
        a, 
        c[1 : 1]; 
    'INTEGER' 
        k; 
    'INTEGER' 'PROCEDURE' i; 
        'BEGIN'
        i := 1; 
        k := k + 1
        'END'; 

    k := 0; 
    a[i] := 1; 
    c[i] := 3; 
    'FOR' v[i] := a[i] 'STEP' a[i] 'UNTIL' c[i] 'DO'
        ; 
    outreal(1, k)
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library5;

    'INTEGER' 'PROCEDURE' none; 
        none := 1; 

    none; 
    sin(1.0); 
    abs(3); 
    ln(.2); 
    exp(4); 
    entier(none); 
    sign(sqrt(8)); 
    outreal(1, none)
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'INTEGER' 
        nn; 
    'SWITCH' a := 
        b[1], 
        b[2]; 
    'SWITCH' b := 
        a[g], 
        a[2]; 
    'INTEGER' 'PROCEDURE' f(n, s); 
        'VALUE' 
            n; 
        'INTEGER' 
            n; 
        'SWITCH' 
            s; 
        'BEGIN'
        nn := n; 
        'GOTO' s[1]; 
        f := nn
        'END'; 

    'INTEGER' 'PROCEDURE' g; 
        'BEGIN'
        'INTEGER' 
            n; 
        n := nn; 
        g := 0; 
        nn := 
            'IF' n <= 1 'THEN' 
                n
            'ELSE'
                f(n - 1, a) + f(n - 2, a)
        'END'; 

    outreal(1, f(20, a))
'END' 



!ALGOL

'BEGIN'
'COMMENT' library 3;


'INTEGER' i,cl,n,rep;

'ARRAY' r,a,b[1:30],c[1:10];

'REAL' j,root,x;

'INTEGER' 'PROCEDURE' even(x);
    'VALUE' x;
    'INTEGER' x;
    even:='IF' x'DIV'2*2 = x 'THEN' 1 'ELSE' -1;


'PROCEDURE' gamm(r,a,b,c);
    'ARRAY' r,a,b,c;
    'BEGIN'    'INTEGER' rep,i,cl;
        'REAL' j,root,x;
        rep:=100*n;
        outreal(cputime);
        'FOR' cl:= 1 'STEP' 1 'UNTIL' rep 'DO'
            ;
        outreal(cputime);
        rep:=n;
        outreal(cputime);
        'FOR' cl:=1 'STEP' 1 'UNTIL' rep 'DO'
        'FOR' i:= 1 'STEP' 1 'UNTIL' 30 'DO'
            r[i]:=a[i]+b[i];
        outreal(cputime);
        'FOR' cl:=1 'STEP' 1 'UNTIL' rep 'DO'
        'FOR' i:=1 'STEP' 1 'UNTIL' 30 'DO'
            r[i]:=a[i]*b[i];
        outreal(cputime);
        rep:=6*n;
        x := .5;
        outreal(cputime);
        'FOR' cl:= 1 'STEP' 1 'UNTIL' rep 'DO'
        'BEGIN'    j:=0.0;
            'FOR' i:= 1 'STEP' 1 'UNTIL' 10 'DO'
                j:=(j+c[i])*x
        'END';
        outreal(cputime);
        outreal(j);
        outreal(cputime);
        'FOR' cl:= 1 'STEP' 1 'UNTIL' rep 'DO'
        'BEGIN'    j:=c[1];
            'FOR' i:=2 'STEP' 1 'UNTIL' 10 'DO'
                'IF' c[i]>j 'THEN' j:=c[i]
        'END';
        outreal(cputime);
        j:=2;
        rep := 8*n;
        outreal(cputime);
        'FOR' cl:=1 'STEP' 1 'UNTIL' rep 'DO'
        'BEGIN'    root:=1.0;
            'FOR' i:=1 'STEP' 1 'UNTIL' 5 'DO'
                root:= 0.5*(root+j/root)
        'END';
        outreal(cputime);
        outreal(root);
    'END' of gamm;


    i:=1;
    'FOR' j:=104.5,3.7,-68.9,228.2,-1004.4,500.0,308.1,45.0,152.35,161.8 'DO'
    'BEGIN'    c[i]:=j;
        i:=i+1
    'END';
    'FOR' i:=1 'STEP' 1 'UNTIL' 30 'DO'
    'BEGIN'    a[i]:=even(i)*i*i;
        b[i]:=1-even(i)*i*i
    'END';
    n := 2000;
    rep:=100*n;
    outreal(cputime);
    'FOR' cl:= 1 'STEP' 1 'UNTIL' rep 'DO'
        ;
    outreal(cputime);
    rep:=n;
    outreal(cputime);
    'FOR' cl:=1 'STEP' 1 'UNTIL' rep 'DO'
    'FOR' i:= 1 'STEP' 1 'UNTIL' 30 'DO'
        r[i]:=a[i]+b[i];
    outreal(cputime);
    'FOR' cl:=1 'STEP' 1 'UNTIL' rep 'DO'
    'FOR' i:=1 'STEP' 1 'UNTIL' 30 'DO'
        r[i]:=a[i]*b[i];
    outreal(cputime);
    rep:=6*n;
        x := .5;
    outreal(cputime);
    'FOR' cl:= 1 'STEP' 1 'UNTIL' rep 'DO'
    'BEGIN'    j:=0.0;
        'FOR' i:= 1 'STEP' 1 'UNTIL' 10 'DO'
            j:=(j+c[i])*x
    'END';
    outreal(cputime);
    outreal(j);
    outreal(cputime);
    'FOR' cl:= 1 'STEP' 1 'UNTIL' rep 'DO'
    'BEGIN'    j:=c[1];
        'FOR' i:=2 'STEP' 1 'UNTIL' 10 'DO'
            'IF' c[i]>j 'THEN' j:=c[i]
    'END';
    outreal(cputime);
    j:=2;
    rep := 8*n;
    outreal(cputime);
    'FOR' cl:=1 'STEP' 1 'UNTIL' rep 'DO'
    'BEGIN'    root:=1.0;
        'FOR' i:=1 'STEP' 1 'UNTIL' 5 'DO'
            root:= 0.5*(root+j/root)
    'END';
    outreal(cputime);
    outreal(root);
    gamm(r,a,b,c);

'END'

!ALGOL

'BEGIN'
'COMMENT' library 1;
    'REAL' 
        x, 
        y; 
    'PROCEDURE' dum; 
        ; 

    'REAL' 'PROCEDURE' a; 
        a := x + ('IF' b 'THEN' 1 'ELSE' 0); 

    'BOOLEAN' 
        b; 
    s2 :; 
    b := (('TRUE')); 
    g :; 
    'BEGIN'
        'INTEGER' 
            i; 
        x := - 3; 
        'IF' 'NOT' b 'THEN' 
            'GOTO' s2; 
        i := 1; 
        y := a - i * x^2; 
        dum
    'END'; 
    outreal(1, y / 2)
'END' 


!ALGOL
prog : 

'BEGIN'
'COMMENT' library 1;
    'PROCEDURE' q; 
        'BEGIN'
        'ARRAY' 
            a, 
            d[1 : 1, 1 : n], 
            e[0 : 0]; 
        'PROCEDURE' p(x, l); 
            'LABEL' 
                l; 
            'INTEGER' 'PROCEDURE' 
                x; 
            b : 'FOR' i := 1 'STEP' 1 'UNTIL' n, 
                i + 1 'DO'
                c : 'GOTO' 
                    'IF' x(a[1, 1] + i, 0) = 0 'THEN' 
                        l
                    'ELSE'
                        r; 

        m :; 
        a[1, 1] := n; 
        p(in, prog)
        'END' q; 

    'INTEGER' 'PROCEDURE' in(f, g); 
        'VALUE' 
            f; 
        'REAL' 
            f, 
            g; 
        n := in := 1; 

    'INTEGER' 
        n, 
        i; 
    n := 2; 
    outreal(1, 1); 
    q; 
    outreal(1, 2); 
    r :; 
    outreal(1, 3); 
'END' 



!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'INTEGER' 
        i; 
    'REAL' 
        x; 
    i := 1; 
    'FOR' x := .1 'STEP' x 'UNTIL' 1.0@6 'DO'
        i := i + 1; 
    outreal(1, i)
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'INTEGER' 
        a; 
    'INTEGER' 'PROCEDURE' f(x, y); 
        'VALUE' 
            x, 
            y; 
        'INTEGER' 
            x, 
            y; 
        a := f := x + 1; 

    'INTEGER' 'PROCEDURE' g(x); 
        'INTEGER' 
            x; 
        x := g := a + 2; 

    a := 0; 
    outreal(1, a + f(a, g(a)) / g(a))
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'REAL' 
        i, 
        j; 
    'ARRAY' 
        a[1 : 2, 1 : 3]; 
    'REAL' 'PROCEDURE' gps(i, n, z, v); 
        'REAL' 
            i, 
            n, 
            z, 
            v; 
        'BEGIN'
        'FOR' i := 1 'STEP' 1 'UNTIL' n 'DO'
            z := v; 
        gps := 1
        'END'; 

    outreal(1, gps(j, 3.0, i, gps(i, 2.0, a[i, j], i + j))); 
    'FOR' i := 1 'STEP' 1 'UNTIL' 2 'DO'
        'FOR' j := 1 'STEP' 1 'UNTIL' 3 'DO'
            'IF' a[i, j] \= i + j 'THEN' 
                outreal(1, 11 * i + j)
'END' 




!ALGOL

'BEGIN'
'COMMENT' library5;
    'REAL' 
        r; 
    'BOOLEAN' 
        b; 
    'INTEGER' 'PROCEDURE' f(x); 
        'REAL' 
            x; 
        f := 0; 

    'INTEGER' 
        i, 
        n, 
        s; 
    'INTEGER' 'PROCEDURE' g(y); 
        'BOOLEAN' 
            y; 
        g := 
            'IF' y 'THEN' 
                2
            'ELSE'
                3; 

    r := 3.5; 
    n := 4; 
    s := r + (1) + n; 
    outreal(1, s); 
    'BEGIN'
        'REAL' 'ARRAY' 
            ra[f('IF' 'TRUE' 'THEN' 0 'ELSE' 0) : 1]; 
        'ARRAY' 
            a[ - 1 : f(0)]; 
        'REAL' 'PROCEDURE' q; 
            q := r^2; 

        s := 
            'IF' + 0 = 0 'THEN' 
                sqrt(q)
            'ELSE'
                1
    'END'; 
    outreal(1, s); 
    'BEGIN'
        'PROCEDURE' w(t, u); 
            'STRING' 
                t, 
                u; 
            ; 

        w( { a 'REAL' }, { b 'END' } ); 
        'FOR' i := 0 'DO'

    'END'; 
    'IF' 2 = 2 'THEN' 
        'BEGIN'
        i := 1
        'END' 
    'ELSE'
        i := 0; 
    'FOR' i := 5 'WHILE' r < n 'DO'
        c : 'BEGIN'
        b := 'TRUE'; 
        n := 
            'IF' b 'OR' 'NOT' b 'THEN' 
                g(b 'OR' b) 'DIV' s
            'ELSE'
                10; 
        b := 
            'IF' b 'THEN' 
                'FALSE' 'OR' 'FALSE'
            'ELSE'
                'TRUE'; 
        r := n / 2
        'END'; 
    outreal(1, n); 
'END' 


!KDF9
