home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
pascal
/
library
/
dos
/
asm_sour
/
module.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1984-06-09
|
9KB
|
242 lines
{ $LIST+, $DEBUG+, $BRAVE+, $LINESIZE:132, $PAGESIZE:80, $OCODE+ }
{ $ERRORS:50, $MATHCK+, $RANGECK+, $INITCK+, $INDEXCK+, $ENTRY+ }
{ $LINE+, $RUNTIME+, $SYMTAB+, $WARN+, $GOTO- }
{ $TITLE:'Record Handler --- AEM$SCRATCH' }
{ $MESSAGE:'PASCAL - COMPILATION OPTIONS SET' }
{ $MESSAGE:'SYSTEM - COMPILATION BEGINS' }
module file_aux_code;
const
maxname = 20;
maxstrg = 30;
blank = ' ';
type
s10 = string(10);
stindex = byte;
idxrng = 0..30;
varstrng = lstring(maxname);
fixstrng = string(maxname);
maxstrng = string(maxstrg);
maxlstrng = lstring(maxstrg);
entrytype = record
name : record
lastname, firstname : fixstrng;
midinit : char
end;
addr : record
street : maxstrng;
city : fixstrng;
state : string (2);
zip : string(5)
end;
phone : record
number : string(8);
areacod : string(3)
end;
dob : string(8)
end;
nodeptr = ^node;
node = record
entry : entrytype;
next : nodeptr
end;
var [static,public]
curtime, curdate : s10;
procedure cls; extern;
procedure time (var s: string); extern;
procedure date (var s: string); extern;
procedure locate (row, column : integer) ;extern;
procedure beep; extern;
procedure lookup (const key:entrytype;var current,previous:nodeptr;
const hol:nodeptr;var found : boolean);extern;
procedure keyboard (var destination : string; var length:idxrng; width:integer); extern;
procedure recdisp (const curdisp : nodeptr; const reccount : integer);
var
i : idxrng;
recname : fixstrng;
begin
recname := curdisp^.entry.name.lastname;
for i := 1 to 20 do
if recname [i] in ['a'..'z'] then
recname [i] := chr(ord(recname[i]) - 32);
cls;
locate (1,1); time (curtime); date (curdate);
write (output, 'Page: DISPLAY', null : 4, 'Primary key cannot be modified');
locate (2,1); write (output, 'Time: ', curtime, null:3, 'Date: ', curdate);
locate (4,1); write (output, '*Current Record: ', recname);
with curdisp^.entry do
begin
locate (6,1); write (output, 'First Name: ', name.firstname);
locate (6,40); write (output, 'Middle Initial: ', name.midinit);
locate (7,1); write (output, 'Last Name: ', name.lastname);
locate (9,1); write (output, 'Address:');
locate (11, 1); write (output, 'Street: ', addr.street);
locate (12, 1); write (output, 'City: ', addr.city);
locate (12,41); write (output, 'State: ', addr.state);
locate (12,56); write (output, 'Zip code: ', addr.zip);
locate (14,1); write (output, 'Area code: ', phone.areacod);
locate (14, 17); write (output, 'Phone: ', phone.number);
locate (16,1); write (output, 'Birthday: ', dob)
end;
locate (20,1); write (output, 'Last name cannot be modified');
locate (22,1); write (output, 'Type the new value, or <RETURN> for no change');
end;
procedure view (const hol : nodeptr);
var
viewrec : entrytype;
current,previous : nodeptr;
found : boolean;
length, i : idxrng;
begin
cls;
time (curtime); date (curdate);
locate (1,1); write (output, 'Time: ', curtime, null:3, 'Date: ', curdate);
locate (4,1); write (output, 'Type LAST name of record to view -->');
locate (4,38); for i := 1 to 20 do write (output, '.');
locate (4,38);
keyboard (viewrec.name.lastname, length, 20); locate (4,38);
for i := length + 1 to 20 do [ viewrec.name.lastname[i] := blank; write (output, blank) ];
lookup (viewrec,current,previous,hol,found);
if found then
recdisp (current,01)
else
begin
cls;
locate (4,1); writeln;
writeln (output, '*Requested record (', viewrec.name.lastname, ') NOT found');
writeln; writeln (output, 'Strike any key to proceed to primary options...');
keyboard (viewrec.name.lastname,length,1);
return
end;
locate (20,1); write (output, null: 70);
locate (22,1); write (output, null: 70);
locate (23,1); write (output, null: 60);
locate (23,1); write (output, 'Strike any key to return to primary options');
keyboard (viewrec.name.lastname,length,1)
end; {procedure}
procedure getdata (var newrecord : entrytype);
label
1, 2;
var
length, i : idxrng;
tempstring : maxstrng;
index : integer;
reply :char;
procedure pad (var s : string; curlen, maxlen : idxrng);
var index : idxrng;
begin { pad }
if curlen < maxlen then
for index := curlen+1 to maxlen do
s [index] := blank
end; {pad}
begin {insert information into record and exit back to primary}
1: cls;
time (curtime); date (curdate);
locate (2,1);
write (output, 'Time: ',curtime, ' Date: ', curdate);
locate (1,1); write ('Add Record:');
locate (1,23); write ('Data Entry:');
locate (1,70); write ('*NEW*');
locate (3,1);
for index := 1 to 79 do write ('-');
locate (5,1); write ('Last Name:');
locate (5,12); for i := 1 to 20 do write ('.');
locate (5,40); write ('Middle Initial:');
locate (5,56); write ('.');
locate (7,1); write ('First Name:');
locate (7,13); for i := 1 to 20 do write ('.');
locate (7,40); write ('D.O.B.:');
locate (7,48); write ('../../..');
locate (9,1); write ('Street:');
locate (9,9); for i := 1 to 30 do write ('.');
locate (11,1); write ('City:');
locate (11,7); for i := 1 to 20 do write ('.');
locate (11,33); write ('State:');
locate (11,41); write ('..');
locate (11,46); write ('Zip Code:');
locate (11,56); write ('.....');
locate (13,1); write ('Phone:');
locate (13,09); write ('...-....');
locate (13,21); write ('Area Code:');
locate (13,32); write ('(...)');
{now get the actual data items input with keyboard}
with newrecord do
begin
locate (5,12);
keyboard (name.lastname, length, 20);
pad (name.lastname,length,20);
beep;
for i := length+1 to 20 do write (output,blank);
locate (5,56); keyboard (name.midinit,length,1);
beep;
locate (7,13);
keyboard (name.firstname, length, 20);
pad (name.firstname,length,20);
beep;
for i := length+1 to 20 do write (output, blank);
locate (7,48);
keyboard (dob, length, 08);
pad (dob,length,08);
beep;
for i := length+1 to 10 do write(output, blank);
locate (9,9);
keyboard (addr.street, length, 30);
pad (addr.street,length,30);
beep;
for i := length+1 to 30 do write (output,blank);
locate (11,7);
keyboard (addr.city, length, 20);
pad (addr.city,length,20);
beep;
for i := length+1 to 20 do write (output, blank);
locate (11,41);
keyboard (addr.state, length, 02);
pad (addr.state,length,02);
beep;
for i := length+1 to 2 do write (output, blank);
locate (11, 56);
keyboard (addr.zip, length, 5);
pad (addr.zip,length,5);
beep;
for i := length+1 to 5 do write (output, blank);
locate (13,09);
keyboard (phone.number, length, 8);
pad(phone.number,length,8);
beep;
for i := length+1 to 8 do write (output, blank);
locate (13,33);
keyboard (phone.areacod, length, 3);
pad(phone.areacod,length,3);
for i := length+1 to 3 do write (output, blank);
beep
end;
2: locate (22,1); write (null : 60);
locate (20,1);
write (output, 'Is this record correct? ');
keyboard (reply,length,1);
if (reply = 'N') or (reply = 'n') then
goto 1
else
if (reply = 'y') or (reply = 'Y') then
return {go back to caller}
else {reply was bad}
begin
locate (22,1);
write (output, '*Bad reply -- restart - key <ENTER>');
keyboard (reply, i, 1);
goto 2
end
end; {procedure for data entry}
end. {module}