68 lines
1.9 KiB
Text
68 lines
1.9 KiB
Text
% This program uses the "get_argv" function that is supplied iwth
|
|
% PCLU in "useful.lib".
|
|
|
|
NOTEFILE = "notes.txt"
|
|
|
|
% Format the date and time as MM/DD/YYYY HH:MM:SS [AM|PM]
|
|
format_date = proc (d: date) returns (string)
|
|
ds: stream := stream$create_output()
|
|
stream$putzero(ds, int$unparse(d.month), 2)
|
|
stream$putc(ds, '/')
|
|
stream$putzero(ds, int$unparse(d.day), 2)
|
|
stream$putc(ds, '/')
|
|
stream$putzero(ds, int$unparse(d.year), 4)
|
|
stream$putc(ds, ' ')
|
|
|
|
hour: int := d.hour // 12
|
|
if hour=0 then hour:=12 end
|
|
ampm: string := "AM"
|
|
if d.hour>=12 then ampm := "PM" end
|
|
|
|
stream$putzero(ds, int$unparse(hour), 2)
|
|
stream$putc(ds, ':')
|
|
stream$putzero(ds, int$unparse(d.minute), 2)
|
|
stream$putc(ds, ':')
|
|
stream$putzero(ds, int$unparse(d.second), 2)
|
|
stream$putc(ds, ' ')
|
|
stream$puts(ds, ampm)
|
|
return(stream$get_contents(ds))
|
|
end format_date
|
|
|
|
% Add a note to the file
|
|
add_note = proc (note: sequence[string])
|
|
fn: file_name := file_name$parse(NOTEFILE)
|
|
out: stream := stream$open(fn, "append")
|
|
stream$putl(out, format_date(now()))
|
|
|
|
c: char := '\t'
|
|
for part: string in sequence[string]$elements(note) do
|
|
stream$putc(out, c)
|
|
stream$puts(out, part)
|
|
c := ' '
|
|
end
|
|
stream$putc(out, '\n')
|
|
stream$close(out)
|
|
end add_note
|
|
|
|
% Show the notes file, if it exists
|
|
show_notes = proc ()
|
|
po: stream := stream$primary_output()
|
|
fn: file_name := file_name$parse(NOTEFILE)
|
|
begin
|
|
inp: stream := stream$open(fn, "read")
|
|
while true do
|
|
stream$putl(po, stream$getl(inp))
|
|
except when end_of_file: break end
|
|
end
|
|
stream$close(inp)
|
|
end except when not_possible(s: string): end
|
|
end show_notes
|
|
|
|
% Add a note if one is given, show the notes otherwise
|
|
start_up = proc ()
|
|
note: sequence[string] := get_argv()
|
|
if sequence[string]$empty(note)
|
|
then show_notes()
|
|
else add_note(note)
|
|
end
|
|
end start_up
|