dos_compilers/Digital Research PLI-86 v1/UPDATE.PLI
2024-06-30 12:01:25 -07:00

67 lines
2.0 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******************************************************/
/* This program allows you to retrieve and update */
/* individual records in an employee data base using */
/* a keyed file. */
/******************************************************/
update:
procedure options(main);
declare
1 employee static,
2 name character(30) varying,
2 address,
3 street character(30) varying,
3 city character(10) varying,
3 state character(12) varying,
3 zip fixed decimal(5),
2 age fixed decimal(3),
2 wage fixed decimal(5,2),
2 hours fixed decimal(5,1);
declare
1 keylist (100),
2 keyname character(30) varying,
2 keyval fixed binary;
declare
(i, endlist) fixed,
eolist bit(1) static initial('0'b),
matchname character(30) varying,
(emp, keys) file;
open file(emp) update direct environment(f(128))
title ('$1.EMP');
open file(keys) stream environment(b(4000))
title('$1.key');
do i = 1 to 100 while(^eolist);
get file(keys) list(keyname(i),keyval(i));
eolist = keyname(i) = 'EOF';
end;
do while('1'b);
put skip list('Employee: ');
get list(matchname);
if matchname = 'EOF' then
stop;
do i = 1 to 100;
if matchname = keyname(i) then
do;
read file(emp) into(employee)
key(keyval(i));
put skip list('Address: ',
street, city, state, zip);
put skip list(' ');
get list(street, city, state, zip);
put list('Hours:',hours,': ');
get list(hours);
write file(emp) from (employee)
keyfrom(keyval(i));
end;
end;
end;
end update;