
'BEGIN'

    'COMMENT' library 1;

    'BOOLEAN' 
        a, 
        b, 
        c; 
    'INTEGER' 
        i, 
        j; 
    a := b := c := 'TRUE'; 
    i := j := 1; 
    a := i = j; 
    b := i \= j; 
    c := a := b; 
    c := a = b; 
    c = a = b; 
    outreal(1, 'IF' a 'THEN' 0 'ELSE' 'IF' b 'THEN' 2 'ELSE' 3); 
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library5;

    'REAL' 'PROCEDURE' p(q); 
        'REAL' 'PROCEDURE' 
            q; 
        p := abs(q( - 6.4)); 

    outreal(1, p(abs))
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'REAL' 
        x; 
    x := 0; 
    x := (x + 1.1) / 3.3; 
    x := (x + 2.2) / 6.6; 
    x := (x + 3.3) / 9.9; 
    x := (x + 4.4) / 13.2; 
    x := (x + 5.5) / 16.5; 
    x := (x + 6.6) / 19.8; 
    x := (x + 7.7) / 23.1; 
    x := (x + 8.8) / 26.4; 
    x := (x + 9.9) / 29.7; 
    x := (x + 11.0) / 33.0; 
    x := (x + 12.1) / 36.3; 
    x := (x + 13.2) / 39.6; 
    x := (x + 14.3) / 42.9; 
    x := (x + 15.4) / 46.2; 
    x := (x + 16.5) / 49.5; 
    x := (x + 17.6) / 52.8; 
    x := (x + 18.7) / 56.1; 
    x := (x + 19.8) / 59.4; 
    x := (x + 20.9) / 62.7; 
    x := (x + 22.0) / 66.0; 
    x := (x + 23.1) / 69.3; 
    x := (x + 24.2) / 72.6; 
    x := (x + 25.3) / 75.9; 
    x := (x + 26.4) / 79.2; 
    x := (x + 27.5) / 82.5; 
    x := (x + 28.6) / 85.8; 
    x := (x + 29.7) / 89.1; 
    x := (x + 30.8) / 92.4; 
    x := (x + 31.9) / 95.7; 
    x := (x + 33.0) / 99.0; 
    x := (x + 34.1) / 102.3; 
    x := (x + 35.2) / 105.6; 
    x := (x + 36.3) / 108.9; 
    x := (x + 37.4) / 112.2; 
    x := (x + 38.5) / 115.5; 
    x := (x + 39.6) / 118.8; 
    x := (x + 40.7) / 122.1; 
    x := (x + 41.8) / 125.4; 
    x := (x + 42.9) / 128.7; 
    x := (x + 44.0) / 132.0; 
    x := (x + 45.1) / 135.3; 
    x := (x + 46.2) / 138.6; 
    x := (x + 47.3) / 141.9; 
    x := (x + 48.4) / 145.2; 
    x := (x + 49.5) / 148.5; 
    x := (x + 50.6) / 151.8; 
    x := (x + 51.7) / 155.1; 
    x := (x + 52.8) / 158.4; 
    x := (x + 53.9) / 161.7; 
    x := (x + 55.0) / 165.0; 
    x := (x + 56.1) / 168.3; 
    x := (x + 57.2) / 171.6; 
    x := (x + 58.3) / 174.9; 
    x := (x + 59.4) / 178.2; 
    x := (x + 60.5) / 181.5; 
    x := (x + 61.6) / 184.8; 
    x := (x + 62.7) / 188.1; 
    x := (x + 63.8) / 191.4; 
    x := (x + 64.9) / 194.7; 
    x := (x + 66.0) / 198.0; 
    x := (x + 67.1) / 201.3; 
    x := (x + 68.2) / 204.6; 
    x := (x + 69.3) / 207.9; 
    x := (x + 70.4) / 211.2; 
    x := (x + 71.5) / 214.5; 
    x := (x + 72.6) / 217.8; 
    x := (x + 73.7) / 221.1; 
    x := (x + 74.8) / 224.4; 
    x := (x + 75.9) / 227.7; 
    x := (x + 77.0) / 231.0; 
    x := (x + 78.1) / 234.3; 
    x := (x + 79.2) / 237.6; 
    x := (x + 80.3) / 240.9; 
    x := (x + 81.4) / 244.2; 
    x := (x + 82.5) / 247.5; 
    x := (x + 83.6) / 250.8; 
    x := (x + 84.7) / 254.1; 
    x := (x + 85.8) / 257.4; 
    x := (x + 86.9) / 260.7; 
    x := (x + 88.0) / 264.0; 
    x := (x + 89.1) / 267.3; 
    x := (x + 90.2) / 270.6; 
    x := (x + 91.3) / 273.9; 
    x := (x + 92.4) / 277.2; 
    x := (x + 93.5) / 280.5; 
    x := (x + 94.6) / 283.8; 
    x := (x + 95.7) / 287.1; 
    x := (x + 96.8) / 290.4; 
    x := (x + 97.9) / 293.7; 
    x := (x + 99.0) / 297.0; 
    x := (x + 100.1) / 300.3; 
    x := (x + 101.2) / 303.6; 
    x := (x + 102.3) / 306.9; 
    x := (x + 103.4) / 310.2; 
    x := (x + 104.5) / 313.5; 
    x := (x + 105.6) / 316.8; 
    x := (x + 106.7) / 320.1; 
    x := (x + 107.8) / 323.4; 
    x := (x + 108.9) / 326.7; 
    x := (x + 110.0) / 330.0; 
    outreal(1, x); 
'END' 



!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'PROCEDURE' p(st1, st2); 
        'STRING' 
            st1, 
            st2; 
        ; 

    p( {  1.1}, {  3.3} ); 
    p( {  2.2}, {  6.6} ); 
    p( {  3.3}, {  9.9} ); 
    p( {  4.4}, { 13.2} ); 
    p( {  5.5}, { 16.5} ); 
    p( {  6.6}, { 19.8} ); 
    p( {  7.7}, { 23.1} ); 
    p( {  8.8}, { 26.4} ); 
    p( {  9.9}, { 29.7} ); 
    p( { 11.0}, { 33.0} ); 
    p( { 12.1}, { 36.3} ); 
    p( { 13.2}, { 39.6} ); 
    p( { 14.3}, { 42.9} ); 
    p( { 15.4}, { 46.2} ); 
    p( { 16.5}, { 49.5} ); 
    p( { 17.6}, { 52.8} ); 
    p( { 18.7}, { 56.1} ); 
    p( { 19.8}, { 59.4} ); 
    p( { 20.9}, { 62.7} ); 
    p( { 22.0}, { 66.0} ); 
    p( { 23.1}, { 69.3} ); 
    p( { 24.2}, { 72.6} ); 
    p( { 25.3}, { 75.9} ); 
    p( { 26.4}, { 79.2} ); 
    p( { 27.5}, { 82.5} ); 
    p( { 28.6}, { 85.8} ); 
    p( { 29.7}, { 89.1} ); 
    p( { 30.8}, { 92.4} ); 
    p( { 31.9}, { 95.7} ); 
    p( { 33.0}, { 99.0} ); 
    p( { 34.1}, {102.3} ); 
    p( { 35.2}, {105.6} ); 
    p( { 36.3}, {108.9} ); 
    p( { 37.4}, {112.2} ); 
    p( { 38.5}, {115.5} ); 
    p( { 39.6}, {118.8} ); 
    p( { 40.7}, {122.1} ); 
    p( { 41.8}, {125.4} ); 
    p( { 42.9}, {128.7} ); 
    p( { 44.0}, {132.0} ); 
    p( { 45.1}, {135.3} ); 
    p( { 46.2}, {138.6} ); 
    p( { 47.3}, {141.9} ); 
    p( { 48.4}, {145.2} ); 
    p( { 49.5}, {148.5} ); 
    p( { 50.6}, {151.8} ); 
    p( { 51.7}, {155.1} ); 
    p( { 52.8}, {158.4} ); 
    p( { 53.9}, {161.7} ); 
    p( { 55.0}, {165.0} ); 
    p( { 56.1}, {168.3} ); 
    p( { 57.2}, {171.6} ); 
    p( { 58.3}, {174.9} ); 
    p( { 59.4}, {178.2} ); 
    p( { 60.5}, {181.5} ); 
    p( { 61.6}, {184.8} ); 
    p( { 62.7}, {188.1} ); 
    p( { 63.8}, {191.4} ); 
    p( { 64.9}, {194.7} ); 
    p( { 66.0}, {198.0} ); 
    p( { 67.1}, {201.3} ); 
    p( { 68.2}, {204.6} ); 
    p( { 69.3}, {207.9} ); 
    p( { 70.4}, {211.2} ); 
    p( { 71.5}, {214.5} ); 
    p( { 72.6}, {217.8} ); 
    p( { 73.7}, {221.1} ); 
    p( { 74.8}, {224.4} ); 
    p( { 75.9}, {227.7} ); 
    p( { 77.0}, {231.0} ); 
    p( { 78.1}, {234.3} ); 
    p( { 79.2}, {237.6} ); 
    p( { 80.3}, {240.9} ); 
    p( { 81.4}, {244.2} ); 
    p( { 82.5}, {247.5} ); 
    p( { 83.6}, {250.8} ); 
    p( { 84.7}, {254.1} ); 
    p( { 85.8}, {257.4} ); 
    p( { 86.9}, {260.7} ); 
    p( { 88.0}, {264.0} ); 
    p( { 89.1}, {267.3} ); 
    p( { 90.2}, {270.6} ); 
    p( { 91.3}, {273.9} ); 
    p( { 92.4}, {277.2} ); 
    p( { 93.5}, {280.5} ); 
    p( { 94.6}, {283.8} ); 
    p( { 95.7}, {287.1} ); 
    p( { 96.8}, {290.4} ); 
    p( { 97.9}, {293.7} ); 
    p( { 99.0}, {297.0} ); 
    p( {100.1}, {300.3} ); 
    p( {101.2}, {303.6} ); 
    p( {102.3}, {306.9} ); 
    p( {103.4}, {310.2} ); 
    p( {104.5}, {313.5} ); 
    p( {105.6}, {316.8} ); 
    p( {106.7}, {320.1} ); 
    p( {107.8}, {323.4} ); 
    p( {108.9}, {326.7} ); 
    p( {110.0}, {330.0} ); 
    outreal(1, 0)
'END' 


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'INTEGER' 
        i; 
    'PROCEDURE' p(a, b); 
        'VALUE' 
            a; 
        'VALUE' 
            b; 
        'INTEGER' 
            a, 
            b; 
        i := a + b; 

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


!ALGOL

'BEGIN'

    'COMMENT' library 1;

    'INTEGER' 
        i; 
    'PROCEDURE' p(a, b); 
        'INTEGER' 
            a; 
        'INTEGER' 
            b; 
        i := a + b; 

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



!ALGOL
'BEGIN'

    'COMMENT' library 1;

    'BOOLEAN' b; 
    'REAL' x; 
    'INTEGER' 'ARRAY' a[ + 1 : .6@2]; 
    'INTEGER' i, n; 
    b := 'FALSE'; 
    n := @+2 * .6; 
    x := 0; 

    'COMMENT'   ;

    'BEGIN'

        'COMMENT'   ;

        'OWN' 'REAL' 'ARRAY' c0[0 : 1]; 
        'PROCEDURE' p(a, b, c); 
            'VALUE' a; 
            'INTEGER' a; 
            'STRING' b; 
            'BOOLEAN' 'ARRAY' c; 
            'BEGIN'
            'BEGIN'
                c[(1)] := 'TRUE' 'OR' .8 > c0['IF' 'TRUE' 'THEN' 0 'ELSE'
                    1]; 
                c[ - ( - 2)] := 'FALSE' 'AND' .4 >= x + 500@-2; 
                c[.3@1] := .3 \= (0) 'AND' ('IF' @1 \= @4 'THEN' 'TRUE'
                    'ELSE' 'FALSE'); 
                'IF' 'FALSE' 'THEN' 
                    p(a, {string}, c)
                'ELSE'

            'END'; 
           ; 
            'FOR' i := 1 'STEP' 1 'UNTIL' 3 'DO'
                'BEGIN'
                'IF' .3 <= 6 'DIV' 2 'THEN' 
                    'GOTO' out; 
              out : 
                'END' 
            'END'; 

        'REAL' 'PROCEDURE' a0l; 
            a0l := 
                'IF' x < x 'THEN' 
                    @4
                'ELSE'
                    .6; 

        'INTEGER' 'PROCEDURE' ii; 
            ii := + 1 * (3 'DIV' (4)) - @2 + a0l; 

        'BEGIN'
            'BOOLEAN' 'ARRAY' c[ii + ii 'DIV' ii / ii : 1^ii + 3]; 
            c0[0] := 
                'IF' b 'AND' (1) = (2) 'THEN' 
                    0
                'ELSE'
                    0; 
            p( + 1)l : ( {} )m : (c); 
            i := - n - i * n 'DIV' n^1; 
            'GOTO' 
                'IF' 1 - .9 = ii / 6 'AND' ii <= a0l 'THEN' 
                    l
                'ELSE'
                    l1; 
          l : 
          l1 : 
            'FOR' i := i 'STEP' n 'UNTIL' ii 'DO'
               ; 
            'IF' + .3 + @2 = + (.3) 'THEN' 
                b := 'NOT' b 'EQUIV' 'FALSE'
            'ELSE'
                b := @1 > 3 'EQUIV' 'TRUE'; 
            'FOR' i := ((1)) 'STEP' + (1) 'UNTIL' + 60 'DO'
                'BEGIN'
                a[@1 - 9] := 1 / .1 - 0.1; 
                a[i] := 
                    'IF' ('TRUE') 'OR' a[1] - 1 \= a[@1 - 9] * 1 'IMPL'
                        'FALSE' 'THEN' 
                        + 1
                    'ELSE'
                        - 1
                'END'; 
            'FOR' i := 1, 
                - 9 + a[1] 'STEP' - 9 + a[1] 'UNTIL' .6@1 'DO'
                n := 
                    'IF' + a[1] + 0 = a[1] 'THEN' 
                        0
                    'ELSE'
                        @1 - 9 + n; 
            'IF' + n \= + 1 'EQUIV' n = - n 'OR' 0 < + n 'AND' 0 + n >= 0
                'THEN' 

            'ELSE'
                'GOTO' l2; 
            b := b 'IMPL' n > + 0 'EQUIV' 0 < - a[1] / @1 'OR' 'TRUE'; 
          l2 : 
            'GOTO' (l3); 
          l3 : 
            b := 'TRUE' 'AND' 'FALSE' 'OR' 'FALSE'
                'IMPL' 'TRUE' 'EQUIV' + 0 \= - 1; 
            n := 1^n * 1 + (@1) * @-2^(1) / (2) + n; 
            b := 'TRUE' 'EQUIV' - (0) 'DIV' 1 > - a[1] 'OR'
                'NOT' 'TRUE' 'EQUIV' 'NOT' 'TRUE'; 
            b := 'NOT' 'FALSE' 'EQUIV' .1 = 1 'IMPL' 'TRUE'
                'IMPL' 0 \= 1; 
            'FOR' i := 1 'WHILE' 'TRUE' 'DO'
                'GOTO' exit; 
          exit : 
            'FOR' i := i 'WHILE' 'FALSE' 'DO'
                'IF' - 0 >= + 6 'THEN' 
                    'FOR' n := 1 'WHILE' 0 >= - 1 'OR' + n <= + (1) 'DO'
                        'FOR' n := 1 'DO'
                           ; 
            b := 0 < @1 'IMPL' + 1 <= .1 'OR' - 3 <= - 6 'AND' 'TRUE'
                'AND' + 1 <= @1; 
            b := b 'IMPL' - (1) < (2) 'EQUIV' @1 = .1 'AND' - (1) <= 0; 
            'IF' c[1] 'IMPL' 'NOT' + 1 = @1 'THEN' 
               ; 
            x := a[1]^.5^@1 + ('IF' 'NOT' n >= .1 'OR' ('IF' 'TRUE' 'THEN'
                'FALSE' 'ELSE' 'TRUE') 'THEN' - 1 'ELSE' + 2); 
            'BEGIN'
                'INTEGER' 'PROCEDURE' a0(b, c); 
                    'BOOLEAN' b, c; 
                    a0 := 
                        'IF' b 'IMPL' 'NOT' c 'THEN' 
                            (1)^2
                        'ELSE' 'IF' c 'AND' 'NOT' b 'THEN' 
                            (1)
                        'ELSE'
                            (2); 

                x := x + a0('TRUE', 'FALSE') + a0('FALSE', 'TRUE' 'IMPL' .4
                    < .6); 
                n := x * a0( 'NOT' 0 = @1, 1 >= @2) - a0( 'NOT' - 1 >
                    .1, 'NOT' .1 <= (1))
            'END'; 
            'BEGIN'
                'GOTO' l4; 
              l4 : 
                'BEGIN'
                    'FOR' i := i 'STEP' 'IF' 1 < 2 'THEN' 1 'ELSE' 2 'UNTIL'
                            - 10 'DO'

                'END'; 
                'IF' 
                    'IF' b 'THEN' 
                        .1 > @1
                    'ELSE'
                        'NOT' @1 \= .6 'THEN' 
                    'BEGIN'
                    x := x + 100
                    'END' 
                'ELSE'
                    'FOR' i := 1 'STEP' .3@1 'UNTIL' 'IF' 'NOT' ('FALSE')
                            'THEN' 1 'ELSE' a[1] 'DO'
                        b := 'TRUE'
            'END'; 
            b := 'FALSE'
        'END'; 
        'BEGIN'
            'REAL' y; 
            'ARRAY' d[c0[0] : + a[1] 'DIV' 1 + 1 + c0[0]]; 
            'BOOLEAN' 'PROCEDURE' b1; 
                'BEGIN'
                'OWN' 'BOOLEAN' x; 
                x := 
                    'IF' d[0] < 0 'THEN' 
                        'NOT' d[0] <= (0) 'IMPL' (d[0] >= (1))
                    'ELSE'
                        b; 
                b := x 'AND' @1 + d[0] > (1) 'EQUIV' (d[0] \= 0); 
                b1 := b 'OR' @1 + d[0] = d[0] 'EQUIV' (1) > d[0]
                'END'; 

            'SWITCH' s := l10, l11; 
            d[0] := 0; 
            b := b1 'IMPL' @1 + (1) \= d[0] 'AND' b; 
          l10 :; 
          l11 :; 
        'END'; 
        'BEGIN'
            'SWITCH' ss := la, lb; 
            'OWN' 'INTEGER' p; 
            'PROCEDURE' q(l); 
                'LABEL' l; 
                'BEGIN'
                'ARRAY' r[(0) : - ( - 1)], s[1 : @1]; 
                'FOR' i := 0, 
                    + 1, 
                    .3, 
                    @1, 
                    (2), 
                    'IF' b 'THEN' 0 'ELSE' 1 'DO'
                    'BEGIN'

                    'END'; 
                'FOR' i := 1 'WHILE' i + (0) >= 9, 
                    i + 1 'WHILE' + i < 10 'DO'
                    s[i] := 0; 
                'FOR' i := 1 + s[2] 'WHILE' - i > 0, 
                    i + (1) 'WHILE' 'NOT' i >= 10 'DO'
                    'IF' b 'THEN' 

                'END'; 

            q(la); 
          la :; 
          lb :; 
        'END'; 
        'BEGIN'
            'PROCEDURE' p; 
                'BEGIN'
               ; 
                'FOR' i := 1 'WHILE' 'IF' 1 < 2 'THEN' 0 = a[1] 'ELSE' (a[1]) > 
0
                        'DO'

                'END'; 

            'ARRAY' d[1 : 'IF' 1 < 2 'THEN' 2 'ELSE' 1]; 
            'FOR' i := 1 'WHILE' .1 < - 3, 
                i + 1 'WHILE' (i) < 3 'DO'
                d[i] := i; 
            'FOR' i := d[2], 
                1 'STEP' (1) 'UNTIL' (1) 'DO'
                'IF' 1 < 2 'THEN' 
                  l : 
                'ELSE'
                    'BEGIN'

                    'END'; 
            p;
            'FOR' i := 1 'STEP' @1 - 9 'UNTIL' @1 - 9, 
                1 'WHILE' @1 > 11 'DO'
                x := x + n
        'END'; 
        outreal(1, x + n); 
    'END' 
'END' 


!ALGOL
'BEGIN'
    'BEGIN'
    'REAL' a;
    'GOTO' l;
    l: 'WHILE'
    'END'
'END'

!ALGOL
'BEGIN'
    'PROCEDURE' p(a);
    'VALUE' a: ;
    p(1)
'END'



!ALGOL
'BEGIN'
    'PROCEDURE' p(a);
    'REAL' a: ;
    p(1.0)
'END'

!KDF9

