retrieve:
    procedure options(main);
    /* name and address retrieval program */

%include 'record.dcl';

    %replace
        true  by '1'b,
        false by '0'b;

    dcl
        (sysprint, input) file;

    dcl
        filename character(14) varying,
        (lower, upper) character(30) varying,
        eofile bit(1);

    open file(sysprint) print title('$con');
    put list('Name and Address Retrieval, File Name: ');
    get list(filename);

        do while(true);
        lower = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
        upper = 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';
        put skip(2) list('Type Lower, Upper Bounds: ');
        get list(lower,upper);
        if lower = 'EOF' then
            stop;

        open file(input) stream input environment(b(1024))
            title(filename);
        eofile = false;
            do while (^eofile);
            get file(input) list(name);
            eofile = (name = 'EOF');
            if ^eofile then
                do;
                get file(input)
                    list(addr,city,state,zip,phone);
                if name >= lower & name <= upper then
                    do;
                    put page skip(3)
                        list(name);
                    put skip list(addr);
                    put skip list(city,state);
                    put skip list(zip);
                    put skip list(phone);
                    end;
                end;
            end;
        close file(input);
        end;
    end retrieve;
