Annotation of 43BSDTahoe/ucb/pascal/tstpx/src/fproc.p, revision 1.1.1.1

1.1       root        1: program fproc(output);
                      2:     var
                      3:     i :integer;
                      4: 
                      5:     procedure print(function frtn :integer);
                      6:        begin
                      7:            write(frtn:3,'   formal routine =');
                      8:        end;
                      9: 
                     10:     procedure lvl1(function form: integer);
                     11:        label   1;
                     12:        var
                     13:        loc :integer;
                     14: 
                     15:        function eval :integer;
                     16:            begin
                     17:                if loc = 8 then begin
                     18:                        writeln(' non-local jump');
                     19:                        goto 1;
                     20:                end;
                     21:                eval := loc;
                     22:            end;
                     23: 
                     24:     begin
                     25:        loc := i;
                     26:        i := i - 1;
                     27:        if (loc = 4) or (loc = 8) then
                     28:                lvl1(eval)
                     29:        else if loc > 0 then
                     30:                lvl1(form);
                     31: 1:     write('Stack frame:',loc:3,'   formal print =');
                     32:        print(form);
                     33:        writeln(form:3);
                     34:     end;
                     35: 
                     36:     function geval :integer;
                     37:        begin
                     38:            geval := i;
                     39:        end;
                     40: 
                     41:     begin
                     42:        writeln('This should print levels 0-3, with formal values of 4.');
                     43:        writeln('Level 4 should jump to level 8.');
                     44:        writeln('Finally levels 8-10 should print with formal values of -1.');
                     45:        i := 10;
                     46:        lvl1(geval);
                     47:     end.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.