update:
       proc;
       /* update mode */
       %replace
               true  by '1'b,
               false by '0'b;

       %include 'attrib.dcl';

       %include 'key.dcl';

       dcl
               data  file,
               sysin file,
               rec   char(max_siz);
       dcl
               i fixed,
               answer char(2) var;
       dcl
               open_data   entry,
               close_data  entry,
               input_key   entry(char(max_siz)),
               locate_key  entry(char(max_siz)) returns(bit),
               alter_rec   entry(char(max_siz)),
               att_len     entry(fixed) returns(fixed),
               hdr_out     entry(fixed),
               att_out     entry(fixed,char(max_siz)),
               att_in      entry(fixed,char(max_siz)) returns(bit),
               att_err     entry;

       on endfile(sysin)
               go to end_upd;

       call open_data();

       put edit('Update Mode','')(skip,a);
               do while(true);
               /* read next request */
               put skip;
               call input_key(rec);
               if locate_key(rec) then
                       do;
                               do i = 2 to att_cnt;
                               change_field:
                                       proc;
                                               do while(true);
                                               call hdr_out(i);
                                               call att_out(i,rec);
                                               if att_in(i,rec) then
                                                       return;
                                               call att_err();
                                               end;
                                       end change_field;
                               call change_field();
                               end;
                       put edit('Ok to Change (y/n)?')
                               (column(4),a);
                       get list(answer);
                       if answer = 'y' then
                               call alter_rec(rec);
                       end;
               end;

       end_upd:
       call close_data();
       end update;