home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol079 / access.pli < prev    next >
Text File  |  1984-04-29  |  1KB  |  84 lines

  1. access:
  2.     proc(p);
  3.     /* root module for update and sale */
  4.     dcl
  5.         p fixed;
  6.     %replace
  7.         true  by '1'b,
  8.         false by '0'b;
  9.  
  10.     %include 'attrib.dcl';
  11.  
  12.     %include 'key.dcl';
  13.  
  14.     dcl
  15.         update entry,
  16.         sale   entry;
  17.     dcl
  18.         data file;
  19.  
  20.     open_data:
  21.         proc ext;
  22.         open file(data) direct update env(f(max_siz));
  23.         end open_data;
  24.  
  25.     close_data:
  26.         proc ext;
  27.         close file(data);
  28.         end close_data;
  29.  
  30.     input_key:
  31.         proc(rec) ext;
  32.         /* read access key from keyboard */
  33.         dcl
  34.             rec     char(max_siz),
  35.             hdr_out entry(fixed),
  36.             att_in  entry(fixed,char(max_siz))
  37.                 returns(bit),
  38.             att_err entry;
  39.  
  40.             do while(true);
  41.             rec = '';
  42.             call hdr_out(1);
  43.             if att_in(1,rec) then
  44.                 return;
  45.             call att_err();
  46.             end;
  47.         end input_key;
  48.  
  49.     locate_key:
  50.         proc(rec) returns(bit) ext;
  51.         /* locate access key in key list, read record */
  52.         dcl
  53.             rec char(max_siz);
  54.  
  55.             do key_adr = key_hdr repeat(key_lst)
  56.                 while(key_adr ^= null());
  57.             if key_val = rec then
  58.                 do;
  59.                 read file(data) into(rec)
  60.                     key(key_loc);
  61.                 return(true);
  62.                 end;
  63.             end;
  64.         put edit('Not Found: ',substr(rec,1,max_chr),'')
  65.             (column(4),2a,skip,a);
  66.         return(false);
  67.         end locate_key;
  68.  
  69.     alter_rec:
  70.         proc(rec) ext;
  71.         /* alter current record */
  72.         dcl
  73.             rec char(max_siz);
  74.         write file(data) from(rec) keyfrom(key_loc);
  75.         end alter_rec;
  76.  
  77.  
  78.     /* dispatch to update or sale */
  79.     if p = 0 then
  80.         call update();
  81.     if p = 1 then
  82.         call sale();
  83.     end access;
  84.