home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
PARASOL
/
VIDEOSTO.ARK
/
MENU-MBR.LIB
< prev
next >
Wrap
Text File
|
1986-10-11
|
10KB
|
311 lines
{----------------------------------------------------------------
redefine screen.data;
record member.rec;
field member.member.num 4;
field member.type 1;
field member.date.joined 8;
record member.mail;
field member.f.name 12;
field member.l.name 20;
field member.addr 30;
field member.city 20;
field member.state 2;
field member.zip 9;
endrec;
field member.phone 11;
field member.sponser 20;
record member.employer.mail;
field member.empl.name 20;
field member.empl.addr 30;
field member.empl.city 20;
field member.empl.state 2;
field member.empl.zip 9;
endrec;
field member.empl.phone 11;
field member.empl.period 12;
field member.drivers.lic 10;
field member.bank.name 20;
field member.bank.card 30;
field member.charge.card 30;
endrec;
endredef;
procedure add.member:
begin
{--set up any defaults--}
fill member.rec with ' ';
move s.date to member.date.joined;
move s.city to member.city;
move s.state to member.state;
move s.zip to member.zip;
move 0 to sys.key;
read sys error standard;
move s.m.nxt to wk.key;
subtract 1 from wk.key;
move wk.key to m.key;
if m.key = 0 then
move "0" to m.member.num;
else
read member error standard;
fi;
move m.member.num to wk.str;
call trunc.wk.str;
convert wk.str to wk.bcd;
add 1 to wk.bcd;
convert wk.bcd to wk.str;
move wk.str to member.member.num;
member.get.data:
move 'member' to screen.name;
call get.screen.data;
move '' to status.line;
call status.line.display;
{---- test for end or error ----}
move member.l.name to wk.str;
call trunc.wk.str;
if wk.str = '' then
exit;
fi;
move member.member.num to wk.str;
call trunc.wk.str;
if wk.str = 'END' then
exit;
fi;
if wk.str = '' then
move 'ERROR- Member number missing' to status.line;
call status.line.display;
goto member.get.data;
fi;
move wk.str to load.m.num;
call load.m.rec;
if load.m.key <> 0 then
move 'ERROR- Duplicate member number.' to status.line;
call status.line.display;
goto member.get.data;
fi;
switch on member.type[byte]:
"A","L","E": null;
else begin
move "Member-type must be (A)nnual, (L)ife, or (E)xpired"
to status.line;
call status.line.display;
move #member.type to get.data.cursor.loc;
goto member.get.data;
end;
endswitch;
read sys lock error standard;
move s.m.nxt to m.key;
move s.m.nxt to mscan.key;
add 1 to s.m.nxt;
write sys unlock error standard;
move member.rec to m.rec;
write member lock unlock error standard;
move m.member.num to mscan.member.num;
write memscan lock unlock error standard;
close member partial error standard;
close memscan partial error standard;
end;
{----------------------------------------------------------------
procedure change.member:
begin
move 0 to sys.key;
read sys error standard;
chg.mem.get.data:
call find.mem.num;
call trunc.wk.str;
if wk.str = '' then
exit;
fi;
if wk.str = 'END' then
exit;
fi;
move wk.str to load.m.num;
call load.m.rec;
if load.m.key = 0 then
move 'ERROR- Member number not found- Enter END or number.'
to status.line;
call status.line.display;
goto chg.mem.get.data;
fi;
move load.m.key to m.key;
read member error standard;
move m.rec to member.rec;
move 'member' to screen.name;
call get.screen.data;
move member.rec to m.rec;
move m.member.num to wk.str;
call trunc.wk.str;
if wk.str = 'END' then
exit;
fi;
switch on m.type[byte]:
"A","L","E": null;
else begin
move "Member-type must be (A)nnual, (L)ife, or (E)xpired"
to status.line;
call status.line.display;
move #member.type to get.data.cursor.loc;
goto chg.mem.get.data;
end;
endswitch;
move m.member.num to mscan.member.num;
write memscan lock unlock error standard;
write member lock unlock error standard;
end;
{----------------------------------------------------------------}
procedure find.mem.num:
begin
redefine screen.data;
record msearch.rec;
field sch.mem.num 4;
field sch.pattern 30;
record sch.reply.area;
record sch.found.pat;
field sch.pat.mem.num 4;
field sch.pat.name 25;
field sch.pat.addr 35;
endrec;
string (##sch.found.pat * 14 );
endrec;
endrec;
endredef;
do
move #sch.pat.mem.num to wk.sp;
move 0 to wk.count;
move 0 to sys.key;
read sys error standard;
sch.get.data:
fill msearch.rec with ' ';
move 'msearch' to screen.name;
call get.screen.data;
retry.mem.entry:
fill sch.reply.area with ' ';
move ' ' to status.line;
call status.line.display;
move sch.pattern to wk.str;
call trunc.wk.str;
move wk.str to wk.str.2;
move sch.mem.num to wk.str;
call trunc.wk.str;
if wk.str = '' and wk.str.2 = '' then
move 'ERROR- Enter member number or name or ?.' to status.line;
call status.line.display;
goto sch.get.data;
fi;
move ' ' to status.line;
call status.line.display;
if wk.str = 'END' then
exit;
fi;
if wk.str <> '' then {--exit if a member # was entered--}
exit;
fi;
move wk.str.2 to cur.pattern;
convert cur.pattern to upper case;
move '' to sch.pattern;
move 1 to wk.key;
while wk.key < s.m.nxt do
move wk.key to m.key;
read member error standard;
move m.type to wk.str;
call trunc.wk.str;
if wk.str = '' then
goto sch.skip.display;
fi;
move m.f.name to wk.str;
move m.l.name to wk.str.2;
append wk.str.2 to wk.str;
convert wk.str to upper case;
if cur.pattern = '?' then
move '?' to wk.str;
fi;
scan wk.str for cur.pattern true
begin
move m.member.num to wk.str.edit[field,
length ##sch.pat.mem.num];
move wk.str.edit to @wk.sp length ##sch.pat.mem.num;
add ##sch.pat.mem.num to wk.sp;
move m.f.name to wk.str;
call trunc.wk.str;
move wk.str to wk.str.2;
move m.l.name to wk.str;
call trunc.wk.str;
append ' ' to wk.str.2;
append wk.str to wk.str.2;
move wk.str.2 to wk.str.edit[field, length ##sch.pat.name];
move wk.str.edit to @wk.sp length ##sch.pat.name;
add ##sch.pat.name to wk.sp;
move m.addr to wk.str;
call trunc.wk.str;
move wk.str to wk.str.2;
move m.city to wk.str;
call trunc.wk.str;
append ' ' to wk.str.2;
append wk.str to wk.str.2;
move m.state to wk.str;
append ' ' to wk.str.2;
append wk.str to wk.str.2;
move wk.str.2 to wk.str.edit[field, length ##sch.pat.addr];
move wk.str.edit to @wk.sp length ##sch.pat.addr;
add ##sch.pat.addr to wk.sp;
add 1 to wk.count;
end;
sch.skip.display:
add 1 to wk.key;
if wk.count >= 15 or wk.key >= s.m.nxt then
if wk.key >= s.m.nxt then
move '>>> Search complete- Enter END or Member number or ?.'
to status.line;
else
move '>>> Search not complete- Exit screen to continue.'
to status.line;
fi;
call status.line.display;
call get.screen.data;
if sch.mem.num <> " "
or sch.pattern <> " " then
move #sch.pat.mem.num to wk.sp;
move 0 to wk.count;
goto retry.mem.entry;
fi;
move #sch.pat.mem.num to wk.sp;
move 0 to wk.count;
fill msearch.rec with ' ';
fi;
od;
od;
end;
{----------------------------------------------------------------