home *** CD-ROM | disk | FTP | other *** search
- { $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}