
'BEGIN'

    'COMMENT' library 1;

    'INTEGER' 'PROCEDURE' fact(n); 
        'VALUE' 
            n; 
        'INTEGER' 
            n; 
        fact := 
            'IF' n > 1 'THEN' 
                n * fact(n - 1)
            'ELSE'
                1; 

    fact := 1; 
    outreal(1, fact(5))
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'REAL' 
        y; 
    'PROCEDURE' p(x, x); 
        'VALUE' 
            x; 
        'REAL' 
            x; 
        x := x^2 + 8.6; 

    p(y, 2.0); 
    outreal(1, y)
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'REAL' 
        x; 
    'PROCEDURE' p(y); 
        'VALUE' 
            x; 
        'REAL' 
            y; 
        y := x; 

    x := 3.4; 
    p(10.0); 
    outreal(1, x)
'END' 



!ALGOL
sdec : 

'BEGIN'

    'COMMENT' library5;

    'REAL' pr; 
    'INTEGER' pi; 
    'BOOLEAN' pb; 
    pi := 1; 
    pr := 0.0@0; 
    pb := 
        'IF' 'NOT' pi > 0 'AND' pi >= 1 'OR' pi < 0 'IMPL' pr <= 0
            'EQUIV' pi \= 0 'THEN' 
            'TRUE'
        'ELSE'
            'TRUE'; 
    'IF' pb 'THEN' 
        pr := - 1 * pi^3 'DIV' 2 +
            entier(sign(sqrt(abs(arctan(ln(exp(cos(sin(1)))))
            )))) - (pr / ('IF' pr = 0.0 'THEN' 3 'ELSE' 3)); 
    'BEGIN'
        'SWITCH' psw := entry, exit; 
        'OWN' 'REAL' 'ARRAY' pra[0 : 1]; 
        'INTEGER' 'ARRAY' pia[2 : 3]; 
        'BOOLEAN' 'ARRAY' pba[ - 1 : 0]; 
        'BOOLEAN' 'PROCEDURE' pfb; 
            pfb := 'FALSE'; 

        'PROCEDURE' write text(od, s); 
            'VALUE' od; 
            'INTEGER' od; 
            'STRING' s; 
            outreal(1, od); 

        'PROCEDURE' all parameters(csr, csi, csb, ca1, ca2, cb,
            crfa, cifa, cbfa, cfr, cfi, cfb, cl, csl, cpr,
            cst, csw, car, cai, cab); 
            'VALUE' ca1, ca2, cb, crfa, cifa, cbfa, csl; 
            'INTEGER' csi, ca2; 
            'REAL' csr, ca1; 
            'BOOLEAN' csb, cb; 
            'INTEGER' 'ARRAY' cifa, cai; 
            'REAL' 'ARRAY' crfa, car; 
            'REAL' 'PROCEDURE' cfr; 
            'INTEGER' 'PROCEDURE' cfi; 
            'BOOLEAN' 'PROCEDURE' cfb; 
            'BOOLEAN' 'ARRAY' cbfa, cab; 
            'PROCEDURE' cpr; 
            'STRING' cst; 
            'SWITCH' csw; 
            'LABEL' cl, csl; 
            'BEGIN'
            'REAL' 'PROCEDURE' take formal(tf); 
                'REAL' tf; 
                take formal := tf; 

            car[1] := take formal(ca1); 
            cai[2] := ca2; 
            cab[ - 1] := cb; 
            cpr(30, cst); 
            cfb; 
            ca2 := cfi(1); 
            'GOTO' cl; 
            'END' all parameters; 

        'FOR' pi := pi + 1 'WHILE' pi < 3, 
            1 'STEP' 1 'UNTIL' 1, 
            1 'DO'
            pi := pi := pi; 
        'GOTO' psw[1]; 
        entry :; 
        all parameters(pr, pi, pb, 3.0, 3, 'FALSE', pra, pia,
            pba, sin, entier, pfb, psw[2], exit, write
            text, {{c}
            this_is_a_string}, psw, pra, pia, pba); 
        exit :; 
        outreal(1, pra[1] + pia[2] + pi + pr + ('IF' pba[ - 1]
            'THEN' 10 'ELSE' 0)); 
    'END'; 
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'REAL' 
        x; 
    'PROCEDURE' p(a, b); 
        'VALUE' 
            (a, b); 
        'REAL' 
            (a, b); 
        x := a + b; 

    p(3, 4); 
    outreal(1, x)
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'REAL' 
        x; 
    'INTEGER' 
        i; 
    x := 3.84; 
    'FOR' i := 1 'STEP' 1 'UNTIL' 200 'DO'
        'BEGIN'
        'IF' - 1 / x \= - (1 / x) 'THEN' 
            outreal(1, i); 
        x := x * 1.01; 
        'END'; 
    outreal(1, 0); 
'END' 



!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'ARRAY' 
        a[1.2]; 
    a[1] := 1.0; 
    outreal(1, a[1])
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'INTEGER' 
        i, 
        j, 
        k; 
    i := j := k := 1; 
    'IF' i = j 'THEN' 
        la : 'IF' j \= k 'THEN' 
            outreal(1, 1)
        'ELSE'
            outreal(1, 2); 
    outreal(1, 3)
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'ARRAY' 
        a[1 : 2.3 : 4]; 
    a[1] := 1.0; 
    outreal(1, a[1])
'END' 




!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'REAL' 
        x, 
        y; 
    'INTEGER' 
        case; 
    'PROCEDURE' check(b); 
        'VALUE' 
            b; 
        'BOOLEAN' 
            b; 
        'IF' b 'THEN' 
            case := case + 1
        'ELSE'
            'BEGIN'
            outreal(1, x); 
            outreal(1, y); 
            outreal(1, case)
            'END'; 

    case := 0; 
    'FOR' x := - 6.8, 
        .001, 
        13.4 'DO'
        'FOR' y := - 6.8, 
            .001, 
            13.4 'DO'
            'BEGIN'
            'IF' x = y 'THEN' 
                check(x <= y 'OR' x >= y)
            'ELSE' 'IF' x > y 'THEN' 
                check(x >= y)
            'ELSE' 'IF' x < y 'THEN' 
                check(x <= y)
            'ELSE'
                check('FALSE')
            'END'; 
    outreal(1, case); 
'END' 


!KDF9
