home *** CD-ROM | disk | FTP | other *** search
- program mailer;
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- mailer : Generated by DataGen
- Copyright (C) January, 1988
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- uses crt, dos, TAccess, io;
-
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- mailer data structure definition section
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- {$I mailer.typ}
- var mailer_data : mailer_structure;
- mailer_file : datafile;
- index1 : indexfile;
- index2 : indexfile;
-
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- mailer global variable declarations.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- const NEW_mailer = -1;
- var mailer_record : longint;
- search_index : longint;
-
-
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- mailer screen definition file.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- {$I mailer.scr}
- {
- *-----------------------------------------------------------------------*
- function upper_case
- *-----------------------------------------------------------------------*
- }
- function upper_case(in_string : medium_string ) : medium_string;
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Accepts lower case string, returns upper case string as value of the
- function.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
-
- var out_string : medium_string;
- i : byte;
-
- begin
- out_string := '';
- for i := 1 to length( in_string ) do
- out_string := out_string + upcase( in_string[i] );
- upper_case := out_string;
- end; {function upper_case}
- {
- *-----------------------------------------------------------------------*
- procedure rebuild_index
- *-----------------------------------------------------------------------*
- }
- procedure rebuild_index;
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Rebuilds the indices.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- var record_number : longint;
- key_to_add : medium_string;
- begin
-
- initindex;
- message('Building Index files...',1);
- makeindex( index1, 'mailer.ix1', sizeof(mailer_data.company)-1, 1 );
- makeindex( index2, 'mailer.ix2', sizeof(mailer_data.contact)-1, 1 );
- for record_number := 1 to filelen(mailer_file) - 1 do begin
- getrec(mailer_file,record_number,mailer_data);
- if mailer_data.status = 0 then begin
- key_to_add := upper_case(mailer_data.company);
- addkey( index1, record_number, key_to_add );
-
- key_to_add := upper_case(mailer_data.contact);
- addkey( index2, record_number, key_to_add);
-
- end; {if}
- end; {for}
- message('Index Files Rebuilt.',1);
- end { rebuild_index };
-
- {
- *-----------------------------------------------------------------------*
- procedure open_mailer
- *-----------------------------------------------------------------------*
- }
- function open_mailer : boolean;
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Opens files and returns true, false if user wants to QUIT.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- begin
- open_mailer := true;
- OpenFile( mailer_file, 'mailer.dat', sizeof( mailer_data ));
- if not ok then begin
- message('WELCOME TO mailer',1);
- if get_menu('\1Yes\2Quit','',1,'\qFILES NOT FOUND, INITIALIZE? :') = 1 then begin
- makefile( mailer_file, 'mailer.dat',sizeof(mailer_data));
- makeindex( index1, 'mailer.ix1',sizeof( mailer_data.company)-1,1);
- makeindex( index2, 'mailer.ix2',sizeof( mailer_data.contact)-1,1);
- end {if}
- else open_mailer := false;
- exit;
- end {if}
- else begin
- openindex(index1, 'mailer.ix1', sizeof( mailer_data.company)-1,1 );
- openindex(index2, 'mailer.ix2', sizeof( mailer_data.contact)-1,1 );
-
- end; {else}
- end; {function open_mailer}
- {
- *-----------------------------------------------------------------------*
- procedure close_mailer
- *-----------------------------------------------------------------------*
- }
- procedure close_mailer;
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- closes the mailer data and index files.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- begin
- closefile( mailer_file );
- closeindex( index1 );
- closeindex( index2 );
- end; {procedure close_mailer}
- {
- *-----------------------------------------------------------------------*
- procedure retrieve_mailer
- *-----------------------------------------------------------------------*
- }
- procedure retrieve_mailer( param : byte ) ;
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Brings in the next, previous, first, last record based on param.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- var recnum : longint;
- key_to_search : long_string;
-
- begin
- if param in [1,2] then case search_index of
- 2 : clearkey( index1 );
- 3 : clearkey( index2 );
- end; {case}
-
- if param in [1,3] then case search_index of
- 2: nextkey( index1, recnum, key_to_search );
- 3: nextkey( index2, recnum, key_to_search );
- end; {case}
- if param in [2,4] then case search_index of
- 2: prevkey( index1, recnum, key_to_search );
- 3: prevkey( index2, recnum, key_to_search );
- end; {case}
-
- if ok then begin
- getrec(mailer_file, recnum, mailer_data);
- mailer_record := recnum;
- mailer_screen('\2');
- end {if}
- else message('NO RECORD',1);
-
-
- end; {procedure retrieve_mailer}
- {
- *-----------------------------------------------------------------------*
- procedure find_mailer
- *-----------------------------------------------------------------------*
- }
- procedure find_mailer;
- var recnum : longint;
- key_to_search : long_string;
- begin
- if usedrecs( mailer_file ) = 0 then begin
- message('ERROR : FILE IS EMPTY',2);
- exit;
- end;
- case get_menu('\1First\2Last\3Search\4Rebuild\5Exit',
- '\1First Record\2Last Record\3Search by Index\4Rebuild Index files',1,'\qOPTION : ') of
-
- 1: retrieve_mailer(1);
- 2: retrieve_mailer(2);
- 3: begin
- fillchar(mailer_data, sizeof(mailer_data), 0);
- mailer_screen('\2\3\index');
- case search_index of
- 2 : begin key_to_search := upper_case(mailer_data.company);
- searchkey( index1, recnum, key_to_search);
- end;
-
- 3 : begin key_to_search := upper_case(mailer_data.contact);
- searchkey( index2, recnum, key_to_search);
- end;
-
- end; {case}
- if ok then begin
- getrec( mailer_file, recnum, mailer_data);
- mailer_record := recnum;
- mailer_screen('\2');
- end {if}
- else retrieve_mailer(2);
- end; {case 3}
- 4: rebuild_index;
- 5: ;
-
- end; {case}
- end; {procedure find_mailer}
-
- {
- *---------------------------------------------------------------------*
- procedure fill_mailer
- *---------------------------------------------------------------------*
- }
- function fill_mailer : byte;
- var select : integer;
- mailer_save : mailer_structure;
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Allows the user to Alter the contents of a passed mailer record.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- begin
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Save the old record in case they cancel session.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- mailer_save := mailer_data;
-
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- New record? blank out the data structure.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- if mailer_record = NEW_mailer then begin
- fillchar( mailer_data, sizeof( mailer_data ), 0 );
- mailer_screen( '\2' ); {blank out the fields}
- end; {if}
- mailer_screen('\3'); {permit filling of fields}
-
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Permit the user to fill the mailer structure.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- select :=2;
- repeat
- select := get_menu('\1Edit\2Save\3Cancel',
- '\1Edit Screen Information\2Save Data\3Cancel & Return',
- select, '\qEDIT OPTION: ');
-
- fill_mailer := select;
-
- case select of
- 1: mailer_screen('\3');
- 2: exit;
- 3: begin
- mailer_data := mailer_save;
- mailer_screen('\2');
- exit;
- end;
- end; {case}
-
- until false;
-
- end; {procedure fill_mailer}
- {
- *-----------------------------------------------------------------------*
- procedure delete_mailer
- *-----------------------------------------------------------------------*
- }
- procedure delete_mailer;
- var key_to_delete : medium_string;
-
- begin
- if mailer_record = NEW_mailer then begin
- message('Please Select a Record for Deletion',2);
- exit;
- end;
- if get_menu('\1Yes\2Cancel','',1,'\qDELETE CURRENT RECORD? : ') = 1
- then begin
- key_to_delete := upper_case(mailer_data.company);
- deletekey( index1, mailer_record, key_to_delete);
-
- key_to_delete := upper_case(mailer_data.contact);
- deletekey( index2, mailer_record, key_to_delete);
-
- deleterec( mailer_file, mailer_record );
- message('Deleted...',1);
- mailer_record := NEW_mailer;
- if usedrecs( mailer_file ) = 0 then begin
- clearkey( index1 );
- clearkey( index2 );
-
- fillchar( mailer_data, sizeof( mailer_data ), 0);
- mailer_screen('\2');
- message('FILE IS EMPTY',1);
- end {if}
- else retrieve_mailer(1);
- end; {if}
- end; {procedure delete_mailer}
-
- {
- *-----------------------------------------------------------------------*
- procedure add_mailer
- *-----------------------------------------------------------------------*
- }
- procedure add_mailer;
- var key_string : medium_string;
- recnum : longint;
- save_mailer_record : longint;
- key_to_add : medium_string;
-
- begin
- save_mailer_record := mailer_record;
- mailer_record := NEW_mailer;
-
- if fill_mailer = 3 then
- mailer_record := save_mailer_record
- else begin
- addrec( mailer_file, recnum, mailer_data );
- mailer_record := recnum;
- key_to_add := upper_case(mailer_data.company);
- addkey( index1, recnum, key_to_add );
-
- key_to_add := upper_case(mailer_data.contact);
- addkey( index2, recnum, key_to_add );
-
- mailer_screen('\2');
- end; {else}
- end; {procedure add_mailer}
- {
- *-----------------------------------------------------------------------*
- procedure edit_mailer
- *-----------------------------------------------------------------------*
- }
- procedure edit_mailer;
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Allows the user to edit a mailer.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
-
- var
- save_company : medium_string;
- save_contact : medium_string;
- work_key : medium_string;
-
- begin
- if mailer_record <> NEW_mailer then begin
- save_company := mailer_data.company;
- save_contact := mailer_data.contact;
- if fill_mailer = 2 then
- putrec(mailer_file, mailer_record, mailer_data);
-
- if upper_case(save_company) <> upper_case(mailer_data.company) then begin
- work_key := upper_case( save_company );
- deletekey( index1, mailer_record, work_key );
- work_key := upper_case( mailer_data.company );
- addkey( index1, mailer_record, work_key);
- end; {if}
-
- if upper_case(save_contact) <> upper_case(mailer_data.contact) then begin
- work_key := upper_case( save_contact );
- deletekey( index2, mailer_record, work_key );
- work_key := upper_case( mailer_data.contact );
- addkey( index2, mailer_record, work_key);
- end; {if}
-
- end {if}
- else message('Please Select a Record for Editing',2);
- end; {procedure edit_mailer}
- {
- *---------------------------------------------------------------------*
- MAIN CODE FOR procedure maintain_mailer
- *---------------------------------------------------------------------*
- }
- var select : integer;
-
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Supervisory routine for mailer maintenance routines.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- begin
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Initialize System and Database.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- set_system;
-
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Show them a blank entry screen.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- search_index := 2;
- clrscr;
- if not open_mailer then begin
- set_cursor(1);
- exit;
- end; {if}
- mailer_record := NEW_mailer;
- fillchar( mailer_data, sizeof( mailer_data ), 0);
-
- mailer_screen('\1\2');
- message('mailer : Alared Software / 1650 Lexington Avenue / Lakewood, NJ 08701',1);
-
- { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Give them the mailer Menu.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - }
- select := 1;
-
- repeat
- select := get_menu( '\1Add\2Edit\3Delete\4Next\5Previous'+
- '\6Find\7Quit',
- '\1Add Record\2Edit Record\3Delete Record'+
- '\6First, Last, Search\7Exit to DOS',
- select, '\qOPTION: ');
-
- case select of
- 1: add_mailer;
- 2: edit_mailer;
- 3: delete_mailer;
- 4: retrieve_mailer(3);
- 5: retrieve_mailer(4);
- 6: find_mailer;
- 7: begin close_mailer;
- clrscr;
- gotoxy(homex, endscry);
- set_cursor(1);
- exit;
- end;
- end; {case}
-
- until false;
-
- end. {program mailer}
-