home *** CD-ROM | disk | FTP | other *** search
- program calendar (input, output);
- const
-
- len = 30;
- lines = 1;
-
- type
- months = ( JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEPT, OCT, NOV, DEC);
-
- apptmnt = record
-
- detail : array [1..lines] of string[ len ];
- state : (in_use, empty);
-
- end;
- strng3 = string[3];
- strng4 = string[4];
- var
- clndr : file of apptmnt;
- continue : boolean;
- days : array [ months ] of 0..365;
- file_name : string[30];
- menu : char;
- month : array [ months ] of string[3];
- year : string[4];
-
- procedure clrscrn;
-
- var
- i : integer;
- begin
- for i := 1 to 35 do writeln;
- end;
-
- procedure init;
- begin
- days [ JAN ] := 0 ;
- days [ FEB ] := 31 ;
- days [ MAR ] := 59 ;
- days [ APR ] := 90 ;
- days [ MAY ] := 120;
- days [ JUN ] := 151;
- days [ JUL ] := 181;
- days [ AUG ] := 212;
- days [ SEPT] := 243;
- days [ OCT ] := 273;
- days [ NOV ] := 304;
- days [ DEC ] := 334;
- month [ JAN ] := 'JAN';
- month [ FEB ] := 'FEB';
- month [ MAR ] := 'MAR';
- month [ APR ] := 'APR';
- month [ MAY ] := 'MAY';
- month [ JUN ] := 'JUN';
- month [ JUL ] := 'JUL';
- month [ AUG ] := 'AUG';
- month [ SEPT] := 'SEP';
- month [ OCT ] := 'OCT';
- month [ NOV ] := 'NOV';
- month [ DEC ] := 'DEC';
- end;
-
- function getkey( month_name : strng3; day : integer ; time : integer; meri : strng4 ) : integer;
-
- var
- diff : 0..12;
- found : boolean;
- index : months;
- key : integer;
-
- begin
- index := JAN;
- found := false;
- while ( not found) do
- begin
- if month[ index ] =copy(month_name,1,3)
- then found := true
- else index := succ(index);
- end;
- key := days [index];
- if meri = 'AM'
- then diff :=0
- else diff :=12;
- getkey := key + diff + time;
- end;
-
- procedure setup;
- begin
- file_name := concat('#5:appt',year);
- Assign(clndr, file_name);
- if menu = 'l'
- then rewrite( clndr)
- else reset (clndr);
- end;
-
- procedure prompt;
- begin
- clrscrn;
- gotoxy(10,10); write('Enter Month : ');
- gotoxy(10,11); write('Day : ');
- gotoxy(10,12); write('Year : ');
- if menu = '3'
- then exit{(prompt)};
- gotoxy(10,13); write('Time : ');
- gotoxy(10,14); write('AM or PM : ');
- end;
-
- procedure create;
-
- var
- i,j : integer;
-
- begin
- clrscrn;
- gotoxy( 10, 7);
- write('Enter year : ');
- readln(year);
- for i := 1 to 365 do
- for j := 1 to 24 do
- begin
- clndr^.state := empty;
- put (clndr);
- end;
- gotoxy(10, 7); write('Calendar created.');
- close ( clndr,lock);
- end; {create}
-
- procedure remove;
- var
- answer : string[1];
- day : 1..31;
- i : integer;
- key : integer;
- l : integer;
- meri : string[2];
- month_name : string;
- time : 1..12;
- begin
- prompt;
- gotoxy(24,10); readln(month_name);
- gotoxy(24,11); readln(day);
- gotoxy(24,12); readln(year);
- setup;
- gotoxy(24,13); readln(time);
- gotoxy(24,14); readln(meri);
- key := getkey( month_name, day, time, meri);
- seek(clndr, key );
- get(clndr, key );
- get(clndr);
- with clndr^ do
- begin
- if state = in_use
- then
- begin
- l := 16;
- for i := 1 to lines do
- begin
- gotoxy(1,1);
- write(detail[i]);
- l := l+1;
- end;
- gotoxy(1, 1+1);
- write('Are you sure you want to delete (Y/N) : ');
- readln(answer);
- if ( answer = 'Y' ) or ( answer = 'y' )
- then
- begin
- seek(clndr,key);
- state := empty;
- put(clndr);
- end;
- end
- else
- begin
- gotoxy(1,16);
- write('There is no appointment for that time.');
- for l := l to 22000 do; {wait for a while}
- end; {else}
- end; {with}
- end; {remove}
- procedure display;
- var
- answer : string[1];
- day : 1..31;
- i : integer;
- key : integer;
- l : integer;
- meri : string;
- month_name : string;
- outfile : text;
- time : 1..12;
-
- procedure print;
- begin
- rewrite(outfile,'console:');
- for i := 1 to 24 do
- begin
- seek(clndr,key);
- get(clndr);
- if i<= 12
- then
- begin
- time :=i;
- if i = 12
- then
- meri :='noon'
- else
- meri := 'AM';
- end
- else
- begin
- time := i - 12;
- if i = 24
- then
- meri :='Mid night'
- else
- meri := 'PM';
- end;
- writeln(outfile,time:2,' ',meri);
- case clndr^.state of
- in_use : for l :=l to lines do
- writeln(outfile,clndr^.detail[1]);
- empty : writeln(outfile,'No activity scheduled.');
- end; {case}
- key := key+1;
- end;
- close(outfile);
- end; {print}
- procedure console;
- begin
- clrscrn;
- gotoxy(1,1);
- for i := 1 to 24 do
- begin
- seek(clndr,key);
- get(clndr);
- if clndr^.state = in_use
- then
- begin
- if i > 1
- then
- begin
- writeln('Press enter key whenever you are ready...');
- readln(answer);
- end;
- if i <=12
- then
- begin
- time := i;
- if time = 12
- then meri :='noon'
- else meri :='AM';
- end
- else
- begin
- time := i- 12;
- if time = 12
- then meri :='Mid night'
- else meri :="PM';
- end;
- writeln(time:2,' ',meri);
- for l:= 1 to lines do
- writeln(clndr^.detail[1]);
- writeln;
- end;
- key := key+1;
- end;
- writeln;
- writeln('That was it, press enter key any time you are done..');
- readln(answer);
- end; {console}
- begin
- prompt;
- gotoxy(24,10); readln(month_name);
- gotoxy(24,11); readln(day);
- gotoxy(24,12); readln(year);
- setup;
- time :=1;
- meri := 'AM';
- key := getkey( month_name, day, time, meri);
- gotoxy(10,13);
- write('Do you want on the printer (Y/N) ? ');
- readln(answer);
- if (answer = 'y') or (answer='Y')
- then
- print
- else console;
- end; {display}
-
- procedure enter;
- var
- answer : string[1];
- day : 1..31;
- i : integer;
- key : integer;
- meri : string[2];
- month_name : string;
- time : 1..12;
- begin
- prompt;
- gotoxy(24,10); readln(month_name);
- gotoxy(24,11); readln(day);
- gotoxy(24,12); readln(year);
- setup;
- gotoxy(24,13); readln(time);
- gotoxy(24,14); readln(meri);
- key := getkey(month_name, day, time, meri);
- clrscrn;
- seek(clndr,key);
- get(clndr);
- if clndr^.state = in_use
- then
- begin
- gotoxy(10,16);
- write('*** WARNING : Press Y to Remove Old Appointment: ');
- if ( answer = 'Y' ) or ( answer = 'y' )
- then exit(enter);
- end;
- seek(clndr,key);
- gotoxy(1,1);
- writeln('Enter up to ',lines:2,' lines of text not more than ',
- 'of ',len:2,' characters in each line:');
- i := 1;
- while (i <= lines) do
- begin
- write('> ');
- readln(clndr^.detail[i]);
- i := i+1;
- end;
- clndr^.state := in_use;
- put(clndr);
- end; {enter}
-
- begin
- init;
- repeat
- if file_name <> ''
- then
- begin
- close (clndr, lock);
- file_name := '';
- end;
- clrscrn;
- gotoxy(15,7); write('CALENDAR MENU');
- gotoxy(11,9); write(' 1) Create a calendar for the year');
- gotoxy(11,10); write(' 2) Enter an appointment');
- gotoxy(11,11); write(' 3) Print daily schedule');
- gotoxy(11,12); write(' 4) Remove an appointment');
- gotoxy(11,13); write(' 5) Stop');
- gotoxy(11,14); write('Enter choice : ');
- gotoxy( 26,14); readln( menu);
- continue := true;
- case menu of
- '1' : create;
- '2' : enter;
- '3' : display;
- '4' : remove;
- '5' : begin
- continue := false;
- close( clndr,lock);
- end
- end;
- until not continue;
- end.