| At the very end of this reply is some simple (okay, it's totally
trivial) named data which can change the TMTINDEX form. This took
about 10 minutes of work and about 30 seconds of thought. It
implements two additional options to the Index form: IS gives an index
sorted by Schedule Date and ID gives an index sorted by Due Date. A
better way to implement this would be to let the user specify the index
order via the TMTINDEX_FIND form and select the desired BIND.
The IS option uses the alternate key of AI_SCHED_DATE_NBS to have the
phantom data set created by the Schedule Date. This is efficient and
effective. The ID option uses the /SORT option on the BIND on the
AI_DUE_DATE field. This is neither as effective or efficient as the IS
option. The effectiveness loss is caused by the fact that the field is
the ASCII date so they are sorted in ASCII based on the date used on
the system. The efficiency loss is caused by using the /SORT option.
It would be much better if there were a AI_DUE_DATE_NBS field which
were an alternate key. AI_DUE_DATE be sufficient for your customer,
however.
As I said, the code is trivial (I'm that way, too ;'). All I did was
to copy the code for OA$_MO_INDEX and change the BINDW statement as you
can see from the code below.
Your comments about using ASSETS is quite good. Does this mean that
Texas has started their own country? The US Office ASSETS library has
been 'improved' to the extent that it is virtually gone. It's part of
the Business Overhead and professional management which is 'righting'
the company. Fortunately, Europe and GIA are not 'blessed' with such
professional management, yet. It's really humorous observing the
'professional' managers explaining how those 'foreign' parts of the
company are doing so well while the US is sucking swamp scum. Clowns
are so entertaining but it gets old after a while.
Keep the faith,
don
;;OA$_MO_INDEX;;
FORM TMTINDEX_FIND\IFEXIT\CLOSE_PRIOR\OA$FLD_STAY\OA$SCL_EXIT
\BIND_BREAK *TASK
\BINDW *TASK to AIENT
WITH .AI_STATUS = #SEARCH_STATUS
AND .AI_DUE_DATE = #SEARCH_DUE
AND .AI_CLOSE_DATE = #SEARCH_CLOSE
AND (.AI_SCHED_DATE_NBS:8 EN #SEARCH_STARTTO:8
OR .AI_SCHED_DATE_NBS:8 LE #SEARCH_STARTTO:8)
AND .AI_SCHED_DATE_NBS:8 GE #SEARCH_STARTFROM:8
AND .AI_CLASS = #SEARCH_CATEGORY
AND .AI_ITEM = #SEARCH_TASKTITLE
\OA$SCL_INIT ,,,*TASK
;;IS;;
FORM TMTINDEX_FIND\IFEXIT\CLOSE_PRIOR\OA$FLD_STAY\OA$SCL_EXIT
\BIND_BREAK *TASK
\BINDW *TASK to AIENT:AI_SCHED_DATE_NBS
WITH .AI_STATUS = #SEARCH_STATUS
AND .AI_DUE_DATE = #SEARCH_DUE
AND .AI_CLOSE_DATE = #SEARCH_CLOSE
AND (.AI_SCHED_DATE_NBS:8 EN #SEARCH_STARTTO:8
OR .AI_SCHED_DATE_NBS:8 LE #SEARCH_STARTTO:8)
AND .AI_SCHED_DATE_NBS:8 GE #SEARCH_STARTFROM:8
AND .AI_CLASS = #SEARCH_CATEGORY
AND .AI_ITEM = #SEARCH_TASKTITLE
\OA$SCL_INIT ,,,*TASK
;;ID;;
FORM TMTINDEX_FIND\IFEXIT\CLOSE_PRIOR\OA$FLD_STAY\OA$SCL_EXIT
\BIND_BREAK *TASK
\BINDW/SORT=".AI_DUE_DATE" *TASK to AIENT
WITH .AI_STATUS = #SEARCH_STATUS
AND .AI_DUE_DATE = #SEARCH_DUE
AND .AI_CLOSE_DATE = #SEARCH_CLOSE
AND (.AI_SCHED_DATE_NBS:8 EN #SEARCH_STARTTO:8
OR .AI_SCHED_DATE_NBS:8 LE #SEARCH_STARTTO:8)
AND .AI_SCHED_DATE_NBS:8 GE #SEARCH_STARTFROM:8
AND .AI_CLASS = #SEARCH_CATEGORY
AND .AI_ITEM = #SEARCH_TASKTITLE
\OA$SCL_INIT ,,,*TASK
|
| Wow. Thank you for the reply, Don.
I wish more sources of internal expertise would be generous as you were
with your time and knowledge, especially when the solution seems obvious.
Thanks for actually including the code segments.
This may be a long shot, but are you familiar with an old assets
program called Calendar Event Alarms? It has been retired in the U.S.
and this same customer would buy it (or code that did something
similar) if it were available for ALL-IN-1 V2.4. The code apparently
sent mail messages or rang bells to remind users of meetings and other
scheduled events. Any ideas/pointers/suggestions/offers?
Thanks again, sincerely.
Henry Fahey @FOO, Sales Support
DPDMAI::FAHEY DTN 481-6087
|
| Henry,
The old Time Management Alarms package was a real serious piece of
junk. It should have been retired and replaced with something better.
I wrote it for a customer acceptance test in 1986 (I still have the
airplane in a bottle reminding me of the effort on my desk) and the
alarm system required less than a day to complete.
The alarm package allowed a user to specify which events were to have
alarms, how early the alarm should ring prior to the event, and whether
the alarm should be a single shot or repeat until disabled. The alarm
was just a broadcast message to the user's terminal giving the event
description.
The event user interface was 'enhanced' to provide for the alarm
settings for an event by event basis.
All of this sounds nice but the implementation under this was VERY
ugly. Afterall, I did it. Any user with alarms active (as determined
when they entered ALL-IN-1 via OAINI) or having set an alarm in the
current session had a subprocess active with the image being a BASIC
program which scanned the user's calendar file for alarm events and
taking actions on them.
One of the former TM people in Charlotte developed a prototype of a
much better alarm system for ALL-IN-1 several years ago. I don't
believe that anything has been done with it since he left the company.
Adding alarms in a manner similar to what I did in 1986 with a more
robust and reasonable implementation could be done in a few weeks for a
customer in my very biased opinion. If your customer is interested I
am sure that we could work out a way to get it done for them.
Have fun,
don
|